Zagadnienia poruszone w tym artykule dotyczą sposobów zapisu danych, różnic między pamięciami SRAM i DRAM i różnic w taktowaniu pamięci DRAM. Opisana jest także droga rozwoju pamięci DRAM od momentu ich wprowadzenia na rynek, do czasów obecnych, z uwzględnieniem najnowszych funkcji, realizowanych przez najnowsze pamięci DDR5.
Schematy kodowania danych w pamięci
W poprzednim artykule opisane były sposoby zapisu plików tekstowych (np. w postaci zbiorów znaków ASCII). Wczesne komputery miały pamięci o niewielkiej pojemności i ograniczone możliwości obsługi urządzeń wejścia/wyjścia, tak że liczby i teksty były jedynymi typami danych, które mogły przetwarzać. W dzisiejszych czasach komputery przechowują i wyświetlają o wiele więcej niż kiedyś. Oto kilka typów danych, które mogą być przechowywane w pamięci RAM:
1. Liczby
Liczby całkowite są zwykle zapisywane w kodzie binarnym. Jeśli mieszczą się w zakresie od 0 do 255 lub od –128 do +127 zajmują jeden bajt (8 bitów) pamięci, jeśli mieszczą się w zakresie od 0 do 65535 lub od –32768 do +32767 zajmują dwa bajty (16 bitów) pamięci. W czterech bajtach (32 bitach) mogą być przechowywane liczby bez znaku, mieszczące się w zakresie od 0 do ponad czterech miliardów lub liczby ze znakiem, mieszczące się w zakresie od około minus dwóch miliardów do około dwóch miliardów.
W systemach finansowych bywają używane liczby zapisane w kodzie BCD (Binary Coded Decimal), gdzie w każdym bajcie pamięci można przechowywać dwie cyfry dziesiętne, mieszczące się w zakresie od 0 do 9 każda. Jest to metoda mniej ekonomiczna od kodowania binarnego, ponieważ w jednym bajcie można przechowywać tylko 100 zamiast 256 różnych wartości, ale ułatwia to konwersję danych podczas wyświetlania liczb wielocyfrowych i zapewnia prawidłowe zaokrąglanie sum pieniężnych, np. do dolarów i centów.
W przypadku liczb dziesiętnych najczęściej stosowane jest kodowanie zmiennoprzecinkowe, podobne do notacji naukowej, na przykład 6,02×1023 lub 1,602×10–19. Pozwala to na zapis zarówno bardzo małych jak i bardzo dużych liczb w pamięci o tej samej objętości.
Liczby zmiennoprzecinkowe są zwykle przechowywane w postaci 32 lub 64 bitowej, z jednym bitem znaku, wykładnikiem (potęgą, do której podnoszona jest liczba 10) i mantysą (6,02 lub 1,602 w zamieszczonych przykładach). W przypadku 32-bitowych liczb zmiennoprzecinkowych, o tak zwanej pojedynczej precyzji, wykładnik zajmuje 8 bitów, a mantysa 23 bity. W przypadku 64-bitowych liczb zmiennoprzecinkowych o podwójnej precyzji, wykładnik zajmuje 11 bitów, a mantysa 52 bity.
Gdy szybkość przetwarzania jest bardziej krytyczna niż precyzja obliczeń lub szeroki zakres przetwarzanych liczb, stosowane są stałoprzecinkowe liczby dziesiętne. Są to w zasadzie liczby całkowite ze stałym współczynnikiem skalowania, równym np. 1/1000. W takim przypadku liczba całkowita 1234 reprezentuje liczbę dziesiętną 1,234.
2. Obrazy nieruchome
We wczesnych latach rozwoju grafiki komputerowej obrazy były zapisywane w postaci map bitowych. Najprostsze wyświetlacze były z reguły monochromatyczne i mogły tylko włączać lub wyłączać poszczególne piksele, tak więc każdy piksel miał przypisany tylko jeden bit. Zwykle 0 oznaczało wyłączony piksel a 1 oznacza włączony. W przypadku współczesnych wyświetlaczy monochromatycznych, oddających skalę szarości, każdy piksel ma przypisaną pewną liczbę, ewentualnie cały bajt. W takim przypadku 0 oznacza kolor czarny a 255 oznacza kolor biały, pozostałe liczby oznaczają 254 odcieni szarości.
Obrazy kolorowe zazwyczaj wymagają zapamiętania od 16 bitów (dwa bajty) do 32 bitów (cztery bajty) na piksel. Bity te są stosowane do zapisu trzech liczb, jedną do kodowania intensywności koloru czerwonego i po jednej dla kolorów zielonego i niebieskiego. Te trzy kolory są mieszane w różnych proporcjach, aby stworzyć szeroką gamę barw obserwowanych przez ludzkie oko.
Obrazy przeznaczone do druku mogą wykorzystywać cztery wartości w kodzie CMYK (cyjan, magenta, żółty i czarny) zamiast trzech w kodzie RGB (czerwony, zielony i niebieski). Obrazy o szerokim zakresie dynamiki (HDR) mogą wykorzystywać jeszcze więcej bitów, do 16 na atrybut lub od 48 do 64 bitów na piksel. Zazwyczaj (ale nie zawsze) wszystkie informacje o kolorze stanowią całkowitą wielokrotność rozmiarów bajtu, aby ułatwić odczyt lub zapis danych dotyczących pikseli, zapisanych w buforze pamięci.
W przypadku 16-bitowych obrazów kolorowych, kodowanych metodą RGB, używanych w małych wyświetlaczach TFT, 16 bitów jest zwykle przydzielanych na segmenty po 5-6-5 bitów, z sześcioma bitami dla koloru zielonego i pięcioma dla czerwonego i niebieskiego. Dzieje się tak ze względu na lepszą rozróżnialność odcieni w kolorze zielonym niż w kolorach czerwonym i niebieskim przez ludzkie oczy. Jednak przy takim podziale liczba uzyskiwanych odcieni kolorów jest ograniczona. To często prowadzi do powstawania pasów w obszarach o małym kontraście, takich jak np. obraz bezchmurnego nieba, więc preferowane jest co najmniej 24-bitowe kodowanie barw, w systemie 8-8-8 lub lepszym.
System zapisu obrazów oparty na mapach bitowych jest koncepcyjnie prosty, jednak mało wydajny ze względu na dużą objętość powstających plików graficznych. Obraz o rozdzielczości 4K (3480×2160 pikseli) zapisany w postaci mapy RGB z funkcją HDR (12 bitów na atrybut) zajmuje 3840×2160×3 (RGB)×12 (bitów)=296,6 Mb lub 37,3 MB.
Zapis obrazów w formie map bitowych (BMP) jest stosowany, gdy wymagany jest szybki dostęp do danych graficznych. W przypadku plików przeznaczonych do długotrwałego przechowywania stosuje się kompresję bezstratną (np. PNG), lub stratną (np. JPEG).
3. Obrazy wektorowe
Obrazy wektorowe są zazwyczaj przechowywane jako kształty ograniczone liniami prostymi lub splajnami. Splajn to skuteczny sposób definiowania krzywej w przestrzeni 2D lub 3D, przy użyciu zaledwie kilku liczb. W przypadku linii prostej wystarczy podać współrzędne jej końców. Splajny mają zazwyczaj określone dwa punkty końcowe i dwa punkty kontrolne.
Współrzędne mogą być liczbami całkowitymi, zmiennoprzecinkowymi lub stałoprzecinkowymi (dziesiętnymi). Wraz z informacjami o obramowaniu obiektu zwykle pojawiają się informacje o kolorze, teksturze i przezroczystości. Na tej zasadzie są na przykład definiowane czcionki, a także inne elementy graficzne, umieszczane w plikach w formacie PDF (Portable Document Format) i PS/EPS (PostScript) itp.
4. Dźwięk
Sygnał akustyczny jest zwykle przechowywany w formacie PCM (modulacja impulsowo-kodowa). Zapis ma postać serii liczb, reprezentujących chwilową wartość sygnału dźwiękowego, próbkowanego w regularnych odstępach czasu. Liczba próbek na sekundę jest określana jako częstotliwość próbkowania, zaś liczba bitów przypisanych do każdej z próbek jest określana jako głębia bitowa. Zapis dźwięku o jakości CD ma częstotliwość próbkowania 44,1 kHz i 16-bittową głębię na każdy kanał.
Kolejną popularną częstotliwością próbkowania jest 48 kHz. Inne spotykane częstotliwości stanowią połowę, jedną czwartą, dwukrotność lub czterokrotność obu wspomnianych wartości (44,1 kHz lub 48 kHz). Zmniejszenie głębi bitowej i częstotliwości próbkowania prowadzi do pogorszenia jakości zapisanego sygnału akustycznego. Próbkowanie 24-bitowe jest używane do remasteringu nagrań, jednak w przypadku dźwięku konsumenckiego, nawet o wysokiej jakości, wymagania są znacznie mniejsze.
Podobnie jak w przypadku obrazów, pliki akustyczne mogą w pamięci zajmować dużo miejsca, więc często są kompresowane, na przykład do formatu FLAC (bezstratnego) lub MP3/AAC (stratnego).