Magia pamięci, czyli co warto wiedzieć o nowych standardach

Ostatnio na łamach naszego serwisu mogliście zapoznać się z porównaniem wydajności pamięci DDR2 pracujących przy różnych częstotliwościach i czasach opóźnień. Jako odniesienie, przedstawiliśmy również wyniki uzyskane przez starsze moduły DDR. Do zaprezentowania zestawienia skłoniła nas niedawna premiera nowej serii procesorów Athlon, współpracujących z nowym typem pamięci. Popularyzacja nowej technologii jest dla nas dobrym pretekstem, by przedstawić wam w skrócie historie rozwoju pamięci RAM oraz omówić zasadę jej działania. Nie będziemy przy tym podawać definicji pamięci operacyjnej, ani rozwijać skrótu RAM ;) a dla odmiany wyjaśnimy na przykład, czym jest magiczne dla niektórych CAS Latency. A wszystko po to, by na końcu wyjaśnić różnicę pomiędzy odchodzącym, a nowym standardem DDR.

SDR, DDR, DDR2, DDR3...

Image

Ostatnio na łamach naszego serwisu mogliście zapoznać się z porównaniem wydajności pamięci DDR2 pracujących przy różnych częstotliwościach i czasach opóźnień. Jako odniesienie, przedstawiliśmy również wyniki uzyskane przez starsze moduły DDR. Do zaprezentowania zestawienia skłoniła nas niedawna premiera nowej serii procesorów Athlon, współpracujących z nowym typem pamięci. Zintegrowanie z procesorem kontrolera pamięci DDR2 jest w zasadzie najpoważniejszą zmianą, jaka została wprowadzona do nowego produktu firmy AMD. Po przestudiowaniu zaprezentowanych przez nas wyników testów niektórzy mogą dojść do wniosku, że to umożliwienie obsługi nowego typu pamięci jest tak naprawdę wymuszaniem, a może raczej wyłudzaniem pieniędzy od użytkowników pecetów.

Chcąc zmodernizować swój sprzęt za jednym razem spotykamy się z koniecznością wymiany zarówno procesora, płyty głównej, jak i w końcu pamięci, co mogłoby się wydawać jest najmniej potrzebne. Faktem jest, że od samego początku, to jest w momencie wprowadzenia obsługi DDR2 przez procesory firmy Intel, technologia ta nie wzbudzała specjalnego entuzjazmu. Moduły nowej pamięci wcale nie były szybsze od zwykłych DDR, za to były znacznie droższe. Obecnie sytuacja się odwróciła, pamięć DDR2 dzięki coraz wyższym częstotliwościom pracy i coraz niższym opóźnieniom jest od poprzednika mimo wszystko wydajniejsza, a co dla przeciętnego użytkownika często ważniejsze, tańsza. W takim układzie możemy spodziewać się, że wkrótce moduły DDR zostaną całkowicie wyparte z rynku przez nowy typ kości. Nie należy poddawać się sentymentom, w końcu przed DDR było kilka innych standardów pamięci, które poszły w zapomnienie.

Popularyzacja nowej technologii jest dla nas dobrym pretekstem, by przedstawić wam w skrócie historie rozwoju pamięci RAM oraz omówić zasadę jej działania. Nie będziemy przy tym podawać definicji pamięci operacyjnej, ani rozwijać skrótu RAM ;) a dla odmiany wyjaśnimy na przykład, czym jest magiczne dla niektórych CAS Latency. A wszystko po to, by na końcu wyjaśnić różnicę pomiędzy odchodzącym, a nowym standardem DDR.

Zapraszamy do lektury.

Historia - początek

Image

Pomysł połączenia historii rozwoju pamięci RAM wraz z opisem zasady jej działania jest uzasadniony. Otóż coraz to nowsze standardy kolejno po sobie wprowadzane do wnętrza peceta, nie są przecież opracowywane od zera. Bazują w dużej mierze na tym, co zostało wymyślone wcześniej, a wymagało jedynie udoskonalenia.

W celu zrozumienia zasady działania współczesnych modułów pamięci warto cofnąć się w przeszłość, ewentualnie udać się do muzeum techniki cyfrowej. Jeśli będziecie mieli sposobność zwiedzania takiego przybytku, możecie natknąć się na bardzo ciekawe, analogowe moduły pamięci RAM. W dużych, masywnych prostopadłościanach wielkości cegły zapisać można było całe 4 bity danych. Tak, to bardzo niewiele, ale szafa takich cegieł wystarczyła, aby umożliwić pracę jakiejś prymitywnej maszynie. Na czym polega istota działania takiej pamięci? Otóż w omawianych modułach umieszczone są elementy elektryczne takie jak kondensatory i tranzystory. Nie wdając się w szczegóły stwierdzić można, że kondensatory działają na zasadzie baterii, to znaczy można je naładować do stanu wysokiego napięcia, lub rozładować do stanu niskiego napięcia (a w zasadzie od zera), wedle uznania. Upraszczając dalej, przyjmijmy, że taki moduł czterobitowej pamięci jest połączony z główną jednostką obliczeniową przy pomocy 4 przewodów. Jeżeli trzeba coś do pamięci zapisać, na odpowiednich przewodach pojawia się napięcie i odpowiednie kondensatory są ładowane do stanu wysokiego. Odczyt polega na tym, że procesor 'sprawdza', które z czterech kondensatorów są naładowane, a które nie. Kasowanie pamięci to po prostu rozładowanie wszystkich kondensatorów. Można łatwo policzyć, że na jednym module, na który składa się 4 bity/kondensatory mieści się 24 = 16 różnych wartości.

Opuszczamy muzeum, mieliśmy się w końcu zająć pamięciami w komputerach osobistych. Okazuję się, że elementarną jednostką pamięci wykorzystywanej we współczesnych modułach RAM jest dalej konstrukcja, na którą składa się tranzystor i kondensator właśnie. Upakowanie ogromnej ilości tych struktur na małym kawałku krzemu ma jednak taką wadę, że ładunek zgromadzony na takim mikroskopijnym kondensatorze jest bardzo ulotny. Każda przerwa w zasilaniu modułu kończy się utratą wszystkich zapisanych tam danych. Ponadto w wypadku pamięci dynamicznych, a takie stosuje się do budowy modułów RAM, niezbędne jest również ciągłe odświeżanie zawartości pamięci, za co odpowiedzialne są specjalne układy zainstalowane wewnątrz kości.

W przeciwieństwie do muzealnych analogowych eksponatów, cyfrowe układy pamięci zawierają w sobie kilkaset milionów komórek. W takim wypadku nie może być oczywiście mowy o wyprowadzeniu z każdej komórki bezpośredniego połączenia z procesorem (gwoli ścisłości - nawet w prehistorycznych, analogowych pamięciach połączenie nie było bezpośrednie). Problem rozwiązuje się w ten sposób, że komórki grupuje się w prostokątne macierze o określonej liczbie wierszy i kolumn. Pojedyncza macierz nazywana jest płatem pamięciowym, a liczba takich płatów jest równa szerokości szyny danych. Można sobie wyobrazić, że płaty pamięciowe stoją równo jeden za drugim w rzędzie.

Image

Numer wiersza i kolumny macierzy określa położenie kilku komórek stojących w szeregu. Od tej poru pojawiający się w tekście wyraz komórka będzie de facto oznaczał cały ich rząd. Transmisja informacji pomiędzy procesorem, a pamięcią operacyjną następuje za pomocą szyny danych, zwanej również magistralą. Poza szyną danych do komunikacji na linii procesor - pamięć niezbędna jest również magistrala adresowa oraz osobne sygnały sterujące. W operacji pośredniczy kontroler pamięci, kiedyś znajdujący się na płycie głównej w mostku północnym, obecnie zintegrowany z samym procesorem. Najłatwiej wyjaśnimy proces zapisu bądź odczytu odwołując się do najstarszego trybu dostępu do pamięci dynamicznej, tak zwanego trybu konwencjonalnego, (Page Mode). Zrozumienie procesu odczytu danych ułatwi poniższy schemat.

Image

Aby procesor mógł otrzymać żądane przez niego dane, musi znać adres tej części pamięci, pod którą te dane się znajdują. W tym celu na magistrale adresową podawana jest lokalizacja odpowiedniej komórki, co następuje w dwóch etapach. W pierwszym kroku, procesor wysyła na szynę adresową adres wiersza, z którego chce odczytać dane. Kiedy adres jest już umieszczony na magistrali, procesor zmienia wartość sygnału sterującego RAS (Row Address Strobe) z wartość 1 na 0. Co istotne, dla układu pamięci ważne jest zarejestrowanie zmiany, czyli wykrycie opadającego zbocza sygnału sterującego, a nie jego stała wartość. Po wykryciu takiego opadającego zbocza RAS układ pamięci "wie", że na szynie adresowej znajdują się dane z adresem wiersza. Informacja ta jest przez pamięć kopiowana. Procesor wystawia na magistrale adresową drugą część adresu, po czym informuję o tym układ pamięci opadającym sygnałem sterującym CAS (Column Address Strobe). W momencie wykrycia opadającego zbocza CAS układ pamięci odczytuje adres kolumny wystawiony na magistrali. Na tym etapie układ pamięci ma całość informacji umożliwiającej identyfikację komórki, do której odwołuje się procesor. Pozostaje tylko sprawdzenie kolejnego sygnału sterującego, informującego o kierunku przepływu danych. W omawianym przypadku procesor chce odczytać dane, więc pamięć wystawia zawartość odpowiedniej komórki na magistrale danych.

Rozminięciem opisanej powyżej metody jest tryb FPM (Fast Page Mode). Zazwyczaj kolejne dane, do których odwołuje się procesor, skupione są w dość ścisłym sąsiedztwie. W trybie FPM po odczytaniu adresu wiersza układ pamięci przyjmuje, że adres ten nie zmieni się w ciągu kilku kolejnych cykli. Na magistralę adresową wysyłane są tylko kolejne adresy kolumn, a układ pamięci przechowuje cały czas dane, o jaki wiersz chodzi.

Moduły pamięci EDO RAM

Image

Dzięki zastosowaniu tego prostego tricku dość znacznie udało się skrócić czas dostępu do pamięci operacyjnej. Kolejnymi etapami rozwoju technologii RAM były pamięci EDO oraz BEDO. Nie będziemy się nad nimi rozwodzić, gdyż te pierwsze nie wniosły istotnych zmian, natomiast drugie nie zdążyły na dobrą sprawę zaistnieć na rynku, a to dzięki popularyzacji standardu SDRAM.

SDRAM

Image

Główną zmianą, w stosunku do poprzednich typów pamięci jest to, że wszystkie sygnały sterujące SDRAM są synchronizowane z przebiegiem zegarowym (stąd litera S na początku skrótu). Ułatwia to znacznie integrację pamięci w systemie i umożliwia wymuszenie wysokich częstotliwości pracy modułów. Dostęp do obszarów pamięci znajdujących się w ścisłym sąsiedztwie został jeszcze bardziej uproszczony w stosunku do trybu FPM. Po otrzymaniu adresu wiersza i kolumny, układ pamięci sam wylicza położenie kolejnych komórek, których zawartość (w przypadku operacji odczytu) należy wysłać na magistralę danych w następujących po sobie cyklach zegara. Jeśli procesor nie pragnie aż takiej 'pomocy' ze strony pamięci i ma potrzebę odwołania się w kolejnym cyklu zegarowym do całkiem innego obszaru danych, może przerwać pakietową transmisję zawartości kolejnych komórek (burst) za pomocą odpowiedniego sygnału sterującego (DQM). Moduł pamięci SDRAM ma dosyć dużo zadań, a do ich realizacji wymaga własnego sterownika, który przed przystąpieniem do pracy trzeba na dodatek zaprogramować. W trakcie operacji programowania określa się następujące parametry:

  1. Długość pakietu (Burst Length)
  2. Format pakietu - sekwencyjny lub z przeplotem
  3. Ilość cykli zegara, jaka musi upłynąć pomiędzy podaniem na magistralę adresu kolumny oraz sygnału sterującego CAS, a rozpoczęciem transmisji pierwszej porcji danych. Jest to tak zwane CAS Latency.

Sposób pracy układu, wraz z uwzględnieniem zaprogramowanych parametrów, o których mowa powyżej ilustruje uproszczony schemat:

Image

DDR

Image

Przedrostek DDR (Double Data Rate) informuje o podwójnym zwiększeniu przepustowości tych pamięci. Od momentu pojawienia się układów DDR na rynku, ich oznaczenia błędnie sugerowały, że moduły te pracują z częstotliwością dwukrotnie wyższą, w stosunku do zwykłych układów SDRAM. Zastosowane usprawnienia nie mają jednak nic wspólnego z podwyższeniem częstotliwości pracy pamięci.

Obserwując przebieg sygnału zegarowego, możemy wyszczególnić dwa półokresy; sygnał przyjmuje na zmianę wartość logiczną 0 i 1. Zgodnie z tym, co możecie przeczytać na poprzednich stronach, pamięci synchroniczne mają narzucony przez zegar rytm pracy. Każda pojedyncza operacja przeprowadzana przez pamięć może mieć miejsce tylko w momencie, w którym sygnał zegara taktującego zmienia swoją wartość z zera na jeden. W przypadku pamięci DDR, impulsy zegarowe przysyłane są w postaci dwóch przebiegów komplementarnych. Innymi słowy, w czasie kiedy jeden z sygnałów utrzymuje wartość jeden, na przebiegu drugiego można zaobserwować zero. W ten sposób co pół okresu jeden z tych przebiegów zmienia wartość z 0 na 1. W efekcie transmisja danych w trybie pakietowym następuje dwa razy szybciej niż ma to miejsce w przypadku SDRAM. Niestety, opóźnienia związane z procesem zapisu i odczytu poza trybem pakietowym nie ulegają większym zmianom, więc mimo teoretycznie zdublowanej przepustowości, pamięci DDR nie są dwukrotnie wydajniejsze od taktowanych tym samym zegarem pamięci SDRAM.

Image

DDR 2

Image

To, co rzuca się w oczy przy przeglądaniu specyfikacji modułów DDR2 umieszczonych na stronach internetowych producentów, to wyższe częstotliwości pracy, osiągane przy niższym napięciu zasilania. Wygląda to bardzo zachęcająco, jednak pierwsi użytkownicy tych modułów z irytacją konstatowali, że ich nowa pamięć nie działa wcale szybciej od tej starej, dopiero co odłożonej do szuflady. Przyczyna tego stanu rzeczy leży, co się bardzo często zdarza, w nieścisłościach oznaczeń spowodowanych wymogami marketingu i reklamy.

Załóżmy, że pracujemy z modułem oznaczonym jako DDR2 533 MHz. Z doświadczenia z pracy z pamięcią typu DDR wiemy, że mamy do czynienia z tzw. częstotliwością efektywną pracy układu, więc wymiana danych pomiędzy pamięcią a procesorem następuje przy częstotliwości wynoszącej w rzeczywistości 266 MHz. To się zgadza, natomiast niespodzianką jest to, że w przypadku DDR2, sam moduł pamięci oznaczonej jako 533 MHz pracuje przy częstotliwości równej zaledwie 133 MHz. Łączne mnożenie przez 4 wynika stąd, że pojedynczy bank pamięci w ciągu jednego cyklu zegara potrafi przesłać do specjalnego bufora pośredniczącego (prefech buffer) aż cztery bity danych, wykorzystując do tego jedną linię (w DDR były to 2 bity). Teoretycznie, osiągamy w nowych pamięciach dwukrotnie większą przepustowość w stosunku do zwykłych DDR. Pojawia się jednak pewien zgrzyt...

Na poprzednich stronach pokazaliśmy na przykładzie CAS Latency, że opóźnienia w czasie dostępu do pamięci liczone są w ilościach cykli zegarowych, jakie muszą upłynąć pomiędzy kolejnymi etapami procesu odczytu bądź zapisu danych. Im wyższa częstotliwość pracy, tym krótszy jest jeden taki cykl. Z punktu widzenia procesora współpracującego z interfejsem pamięci przy częstotliwości 266 MHz, wszystkie opóźnienia dwukrotnie się wydłużają, gdyż pamięć ta działa tak naprawdę przy częstotliwości dwukrotnie niższej.

Powstaje pytanie, czy jest jakiś sens tych wszystkich skomplikowanych wybiegów? Odpowiedź jest prosta - pamięć DDR osiągnęła granice swojego rozwoju. Oficjalnie standard przewidywał budowę modułów pracujących z maksymalna częstotliwością 200 MHz (400 MHz częstotliwości efektywnej). Na dzień dzisiejszy można oczywiście zdobyć pamięci DDR działające szybciej, ale pewne jest, że nie da się w nieskończoność zwiększać częstotliwości pracy tych układów. Tymczasem pamięci DDR2 pracujące przy częstotliwości wynoszącej w rzeczywistości 200 MHz wymieniają z CPU dane przy częstotliwości równej 400 MHz, a mają przepustowość pozwalającą producentom na oznaczenie ich jako DDR2 800 MHz. Ponadto konstruktorzy standardu DDR2 wprowadzili kilka usprawnień związanych z budową tych układów, umożliwiając im pracę z jeszcze wyższymi częstotliwościami.

Oznaczenia i timingi

Image

Patrząc na opis modułu pamięci spotkać się można z przykładową formą zapisu:

DDR2-1066MHz . PC2-8500 . 5-5-5-15 . UNBUFFERED . NON-ECC

Rozszyfrujmy podane informacje:

  • DDR2-1066MHz - pierwszy człon informuje o tym, z jakim typem pamięci mamy do czynienia, natomiast wartość podana w megahercach określa efektywną częstotliwości pracy układu
  • PC2-8500 - jest to zdublowanie poprzedzającej informacji. PC2 oznacza standard DDR2, natomiast wartość 8000 mówi o teoretycznej przepustowości pamięci, wyrażonej w bajtach. Szyna danych ma szerokość 64 bitów, czyli 8 bajtów. Pomnożenie tej ostatniej wartości przez efektywną częstotliwość pracy modułu daje w efekcie wielkość danych, jaka teoretycznie może zostać przepchnięta przez magistralę w ciągu jednego cyklu zegarowego. Ten format zapisu pozwala kłuć klientów wielkimi liczbami, co bardzo lubią specjaliści od promocji. Trzeba jednocześnie przyznać, że podanie teoretycznej przepustowości wiąże się z mniejszymi nieścisłościami, niż podawanie 'efektywnej' częstotliwością pracy.
  • Cztery liczby oddzielone od siebie kreseczką to tak zwane Timingi, czyli wartości niektórych opóźnień związanych z procesem dostępu do pamięci. Opóźnienia te zapisuje się je w formacie CL - tRP - tRCD - tRAS. Wszystkie poszczególne wartości wyrażane są w cyklach zegara taktującego.

  • CL, czyli CAS Latency - jest to opóźnienie, jakie następuje pomiędzy pojawieniem się sygnału sterującego CAS, a pojawieniem się zawartości komórki pamięci na magistrali danych
  • tRP (RAS Precharge Delay) - opóźnienie które wiąże się z koniecznością odświeżania zawartości pamięci aktywnego wiersza, przed 'zamknięciem' go oraz przejściem do odczytu nowego
  • tRCD (RAS to CAS Delay) - przerwa, jaka następuje pomiędzy odczytem przez pamięć adresu wiersza, a odczytem adresu kolumny wystawionym na magistrale adresową
  • tRAS (Active to Preharge Delay) - czas jaki musi upłynąć pomiędzy aktywacją danego wiersza, a pojawieniem się komendy precharge umożliwiającej jego zamknięcie. Minimalna wartość tego opóźnienia jest oczywiście zawsze większa od sumy CL i tRCD.

Pamięć operacyjna może być buforowana bądź niebuforowana (registered / unbuffered memory). Nazewnictwo bywa czasem niejasne, można jednak dużo uprościć przyjmując, że rejestry i bufory to jedno i to samo. Bufory występujące w modułach pamięci są pewnego rodzaju podtrzymywaczami sygnału. Zapewniają, że sygnały sterujące oraz sygnały pochodzące z magistrali adresowej zostaną doprowadzone do każdego z podukładów pamięci dokładnie w tym samym czasie, co zwiększa stabilność systemu. Niestety, wykorzystanie dodatkowych elementów logicznych, jakimi są bufory, prowadzi do pojawiania się kolejnych opóźnień w czasach dostępu do pamięci. Zastosowanie pamięci buforowanej ma sens w przypadku serwerów, stacji roboczych lub systemów operujących bardzo dużą ilością RAM.

ECC (Error Correction Code) jest to system korekcji błędów pamięci. Budowa modułów pamięci, a także niezależne czynniki zewnętrzne, jak chociażby promieniowanie kosmiczne, prowadzą czasami do zmiany wartości pojedynczych przesyłanych do lub od pamięci bitów. Przekłamanie takie pojawiają się raz na kilkadziesiąt godzin w każdym, nawet w pełni sprawnym module pamięci, lecz nie mają najczęściej żadnego wpływu na funkcjonowanie systemu. Stosowanie modułów RAM z korekcją błędów nie ma sensu w przypadku zwykłych pecetów, jednak w przypadku serwerów wyklucza się nawet najmniejsze szanse na pojawienie się błędów - stąd konieczność stosowania ECC w tych systemach.

Podobnie jak w przypadku pamięci buforowanej, dodatkowe zaimplementowane w module układy logiczne powodują spowolnianie działania pamięci z zastosowaną korekcją błędów.

Podsumowanie i prognoza na przyszłość

Śledząc historię rozwoju pamięci RAM można dostrzec pewną prawidłowość: nieustannie mamy do czynienia ze stopniową ewolucją technologii, prawie nigdy z rewolucją. Dla przykładu: kości EDO nie były znacznie wolniejsze od pierwszych modułów SDRAM, jednak asynchroniczne pamięci doszły do granic możliwości rozwoju, podczas gdy pamięci synchroniczne pracowały przy coraz to wyższych zegarach.

Podobnie jest w przypadku najnowszych układów DDR2. Jest to kolejny etap ewolucji technologii, lecz bynajmniej nie jest to postęp, za którym trzeba ślepo gonić.

Od początków istnienia komputerów mamy do czynienia z olbrzymim szumem informacyjnym towarzyszącym pojawianiu się nowych technologii. Do użytkowników docierają zazwyczaj informację sugerujące, że nowe jest przynajmniej dwa razy szybsze, co najczęściej dość znacznie mija się z prawdą. Po prostu trzeba mieć to na uwadze. Zwłaszcza w przyszłym roku, kiedy to najprawdopodobniej pojawią się pierwsze moduły DDR3 przystosowane do współpracy z CPU. Nie ma jeszcze wielu pewnych informacji na temat układów DDR3, na pewno pamięć pobierać będzie mniej energii. Nauczeni doświadczeniem wolimy nie pisać, że pamięć DDR3 będzie od razu wydajniejsza od poprzednika. Prawdopodobnie standard pozwoli na budowę szybszych modułów pamięci, ale to dopiero w swoim czasie.

Co jeszcze z pamięcią? Można spekulować, że w przyszłości powszechne w komputerach PC staną się buforowane kości RAM. Na pewno nie przyspieszy to w bezpośredni sposób działania układów pamięci, lecz zwiększy stabilność ich działania.

Jak na razie pozostaje nam obserwowanie rozwoju modułów DDR2. Początki były kiepskie, lecz aktualnie DDR2 powinno być naturalnym wyborem przy budowie wydajnego, nowoczesnego peceta. Bo prawdę powiedziawszy odwrotu już nie ma i wyboru w zasadzie nie mamy żadnego.

Wybrane dla Ciebie
MOŻE JESZCZE JEDEN ARTYKUŁ? ZOBACZ CO POLECAMY