W pogoni za wydajnością
Zabierając się do pisania tego artykułu, zapytałem mojego przyjaciela, ile pamięci RAM ma w swoim komputerze. Jego reakcja była tyle zaskakująca, co zabawna. Odpowiedział mi, że nieważne, ile pamięci tkwi w jego maszynie, ponieważ tej zawsze jest za mało. Dzisiaj standardem jest 256 MB, jednak w dobie szybko rosnących wymagań współczesnych procesorów oraz aplikacji taka wielkość wkrótce może okazać się niewystarczająca. Użytkownik znów stanie przed dylematem, ile pamięci kupić i jakie moduły wybrać. W laboratorium mieliśmy rzadką okazję bliżej przyjrzeć się 40 najpopularniejszym obecnie modułom pamięci DDR SDRAM różnych standardów, począwszy od PC2100, a skończywszy na niezatwierdzonych jeszcze przez JEDEC (międzynarodową organizację zajmującą się m.in. ustalaniem standardów pamięci) układach PC3700.
Na dwa zbocza
Pamięci typu DDR są bezpośrednim rozwinięciem koncepcji układów SDRAM. Do przesyłania danych wykorzystano tu pomysł polegający na transmisji danych przy obydwu zboczach sygnału taktującego. Oznacza to, że wewnętrznie kości DDR pracują z podwojoną częstotliwością, czyli w efekcie teoretycznie pozwalają na uzyskanie dwa razy większych niż w przypadku SDRAM transferów. Ze względu na wysoką częstotliwość pracy ulepszono mechanizm synchronizacji oraz buforowania sygnałów, dzięki czemu wymiana danych jest jeszcze bardziej efektywna. Krytyczny wpływ na wydajność mają opóźnienia w przesyłaniu informacji. Dlatego też do synchronizacji transmisji danych używana jest nie tylko częstotliwość systemowa. DDR-y udostępniają do tego celu dodatkowy sygnał o nazwie DQS (Data Strobe). Pozwala to obejść problem pojawiający się wraz z utratą synchronizacji na magistrali między chipsetem i pamięcią. Gdy pojawi się polecenie odczytu, DDR generuje sygnał DQS. Sterując nim w odpowiedni sposób, informuje chipset, kiedy na magistrali danych znajdują się dane związane z określonym natężeniem lub spadkiem sygnału. Zapis odbywa się w odwrotny sposób – chipset generuje sygnał DQS, dając pamięci znak, w którym momencie na magistrali znajdują się dane do przejęcia przez RAM. Zapisywane informacje muszą zostać wcześniej przygotowane do zapisu, tak aby już w momencie przeskoku sygnału DQS były gotowe do pobrania.
Prostota architektury DDR stanowi chyba jej największy atut. Moduły DDR różnią się od SDRAM-ów tylko interfejsem. Zarówno matryce pamięci, jak i logika synchronicznego zapisu i odczytu są praktycznie identyczne, a koszty produkcji osiągają taki sam poziom jak koszty wytwarzania SDRAM–ów o podobnej pojemności. Możemy się o tym pośrednio przekonać, zaglądając do cenników sklepów komputerowych. Obecnie pamięci DDR znajdują się na tym samym poziomie cenowym co SDRAM-y. Z kolei DDR-y są ponaddwukrotnie tańsze od RDRAM-ów.
Zaglądając do wnętrza
Strukturę RAM-u możemy sobie wyobrazić jako macierz komórek. Każdy element należy do określonej kolumny i wiersza. Tak zbudowane macierze grupowane są w banki. Zwykle pamięci DDR SDRAM mają cztery takie banki. Każda komórka pamięci ma swój unikatowy adres. Jednak zaadresowanie całej pamięci w jednym cyklu zegarowym wymagałoby poprowadzenia połączeń do każdego elementu. Z tego też powodu adresowanie podzielono na dwie raty – najpierw kolumny, później wiersze. Do “wydobycia” konkretnej informacji z takiego układu potrzebne są zatem zaledwie dwie linie adresowe – wiersz (Row Line) i kolumna (Column Line).
Ważnymi parametrami wpływającymi na wydajność pamięci DDR są, oprócz częstotliwości zegara taktującego, również tak zwane timingi, czyli opóźnienia określające liczbę taktów zegarowych pamięci pomiędzy wydaniem polecenia odczytu lub zapisu a jego wykonaniem. Pierwszym parametrem (timingiem) podawanym przez producentów w specyfikacji jest CAS Latency (przez niektórych określany jako CL). Określa on liczbę cykli zegara magistrali, jakie upływają od wydania przez procesor polecenia aktywacji wybierania kolumny do momentu przekazania danych do bufora w kontrolerze pamięci. Parametr ten ma dość duży wpływ na wydajność. W przypadku modułów DDR współczynnik ten można ustawić w zakresie od 2.0 do 3.0 (choć w niektórych płytach da się ustawić CL1.5). Kolejnym parametrem (timingiem) jest RAS to CAS Delay (RCD), czyli wartość przerwy czasowej wymaganej pomiędzy podaniem adresu wiersza i kolumny. Parametr RAS Precharge (RP) to czas trwania sygnału odświeżania pamięci. RAS (Row Address Strobe) specyfikuje natomiast liczbę cykli wymaganych do wykonania komendy aktywacji jednego z banków pamięci, zanim załadowanie adresu wiersza może zostać wykonane. Wszystkie cztery parametry podaje się zazwyczaj w postaci liczb oddzielonych myślnikami, np. 2,5-6-4-4.