Rozdział 3.
Układy pamięci PC
Na początku rozwoju architektury PC jedynymi pamięciami były układy dynamiczne pracujące w trybie PM (Page Mode), a nieco później FPM (Fast Page Mode). W ślad za wzrostem prędkość procesorów następowała potrzeba skrócenia czasu dostępu do pamięci, co do dnia dzisiejszego stanowi główny mechanizm napędowy w tej dziedzinie. Zawsze tak się składało, że pamięć, a właściwie te jej odmiany, których niska cena uzasadniała powszechne użycie, nigdy nie nadążały za postępem w rozwoju samych procesorów. Teoretyczna moc obliczeniowa CPU redukowana jest poprzez hamujący wpływ wydłużonego czasu dostępu do pamięci. Najprostszym sposobem częściowej eliminacji tego niekorzystnego zjawiska jest wprowadzenie struktury wielostopniowej (początkowo dwustopniowej, a później trójstopniowej), w której to pamięć operacyjna (o stosunkowo długim czasie dostępu) połączona jest z procesorem poprzez pośrednią pamięć buforową (Cache) o czasie dostępu o rząd wielkości mniejszym. Buforowe pamięci podręczne są realizowane ze statycznych układów (Static RAM), dzielących się na asynchroniczne i synchroniczne:
- Asynchroniczne pamięci statyczne (Asynchronous SRAM). Układy tego typu pojawiły się w komputerach PC w momencie wprowadzenia na rynek procesora 366, który mógł współpracować z pamięcią podręczną poziomu drugiego. Asynchroniczne pamięci statyczne były na tyle szybsze od układów DRAM by móc spełniać funkcje pamięci podręcznej (miały czasy dostępu rzędu kilkunastu ns), ale nie dość szybkie by być taktowane bezpośrednio zegarem CPU. W konsekwencji procesor i tak czekał na dane z pamięci podręcznej, tyle że krócej niż by to miało miejsce w przypadku bezpośredniego dostępu do pamięci głównej.
Synchroniczne pamięci statyczne (Synchronous SRAM) z odmianami Burst/P-Burst
- Burst-SRAM. Układy pamięciowe tego typu oznakowane były czasem dostępu w zakresie 8,5 ns - 12 ns. Dobre parametry przy odczycie (2-1-1-1) gwarantowane były jedynie przy założeniu, iż zegar magistrali pamięciowej nie przekracza częstotliwości 66 MHz. Burst-SRAM nie był jednak dostosowany do współpracy z magistralą 100 MHz bowiem parametry dostępu pogarszały się do wartości 3-2-2-2.
- Pipelined-Burst-SRAM. Układy przewidziane do pracy z magistralami powyżej 66 MHz (75 MHz - 100 MHz a w specjalnych wykonaniach nawet do 133 MHz). W przedziale tym osiągane są parametry 3-1-1-1. Chipy PB-SRAM oznaczane są czasem dostępu z zakresu 4,5 ns - 8 ns.
Pamięć operacyjna komputera PC to po dziś pamięć dynamiczna DRAM (Dynamie RAM). Technika i technologia przeszły w tym zakresie dosyć długą drogę rozwoju. W ślad za układami konwencjonalnymi pierwszej generacji podążały kolejne udoskonalane odmiany: PM, FPM, EDO, BEDO, SDRAM. W dziedzinie tej trwa nieprzerwany dynamiczny rozwój.
Należy wspomnieć, iż w komputerze PC występują również pamięci innych typów. W pamięciach stałych EPROM przechowywane są procedury systemów operacyjnych. Pamięć tego typu programowana jest w zasadzie jednorazowo i (bez udziału dodatkowych urządzeń) nie można jej modyfikować. Od pewnego czasu jej miejsce zajmuje odmiana EEPROM, której zawartość da się w prosty sposób modyfikować a proces ten możliwy jest do przeprowadzenia przez samego użytkownika. Pamięci EEPROM obecne są już nie tylko jako nośniki programu BIOS płyty głównej. Spotkać je można w większości urządzeń peryferyjnych (kontrolery SCSI, modemy, karty sieciowe, dyski twarde, karty graficzne) a nawet w samych procesorach.
Charakterystyczne jest, że zawartość pamięci E(E)PROM nie ulega zamazaniu po pozbawieniu ich napięcia zasilającego. Inaczej jest w przypadku pamięci konfiguracyj-nej komputera. Jej obwody zbudowane są w oparciu o statyczną pamięć CMOS, której komórki pamięci stanowią proste przerzutniki zbudowane z dwóch tranzystorów i kilku elementów pasywnych. Stan takiej komórki musi być podtrzymywany przez zewnętrzne źródło zasilania - tak też jest w komputerze PC: mały akumulator (podładowywany w czasie pracy systemu) zasila ponadto układ licznika symulujący zegar czasu rzeczywistego.
Dalsza część tego rozdziału poświęcona jest wyłącznie pamięciom dynamicznym.
Pamięci dynamiczne
Pamięci dynamiczne mają za sobą dosyć długą drogę rozwojową. Głównym motorem postępu w tej dziedzinie były nieustające udoskonalenie procesorów - wraz z nimi rozwijała się cała towarzysząca im technika komputerowa. Architektura mikrokomputerów ma to do siebie, że połączenie między CPU a pamięcią operacyjną jest podstawowym kanałem informacyjnym, którym przesyłane jest (często nawet wielokrotnie tam i z powrotem) gro przetwarzanej informacji. Dla lepszego zrozumienia działania współczesnego PC warto prześledzić główne etapy rozwoju pamięci dynamicznych.
Elementarną jednostką omawianych w tym rozdziale pamięci (komórką) jest prosta struktura półprzewodnikowa składająca się z tranzystora i kondensatora. Prostota konstrukcji pozwala na ciasne upakowanie ogromnej ilości tego rodzaju układów na stosunkowo małym płatku krzemu. Wadą jest ulotność ładunku zgromadzonego w takim
mikroskopijnym kondensatorze. Dla utrzymania logicznego stanu komórki (l i O to kondensator naładowany lub nie) niezbędnym jest odświeżanie jej zawartości. Stąd też pochodzi nazwa: pamięci dynamiczne, bowiem układy tego typu nigdy nie odpoczywają. Bez względu na to czy pamięć jest w danym momencie wykorzystywana w cyklu zapisu lub odczytu, w jej wnętrzu trwa nieprzerwany ruch mający na celu utrzymanie "przy życiu" zgromadzonej informacji.
Współczesne scalone układy pamięci dynamicznych zawierają w sobie wiele setek milionów pojedynczych komórek. Aby zapanować nad tym chaosem, grupuje się je w prostokątne formacje (macierze) o pewnej określonej dla danej konfiguracji liczbie wierszy i kolumn (XxY). Pojedyncza macierz nazywana jest płatem pamięciowym. Liczba płatów decyduje o szerokości szyny danych układu. Pojedynczy płat odpowiada organizacji XxYx1 bit. Aby osiągnąć szerokość 4-bitową potrzeba 4 płatów itd.
Macierz pamięciowa stanowi serce scalonego układu pamięciowego ale nie jest jego jedynym elementem. Nie mniej ważną rolę odgrywają układy dekoderów adresujących daną komórkę, zestawy precyzyjnych wzmacniaczy sygnałów wyłapujące minimalne różnice napięć pomiędzy komórkami będącymi w stanie l i O, system buforów wejścia i wyjścia, układy sterowania analizujące stan końcówek sterujących oraz obwody implementujące mechanizmy odświeżania.
Dostęp do takiego układu odbywa się w prosty i logiczny sposób. Przy pomocy sygnałów kontrolnych określa się tryb dostępu dla danego cyklu (zapis lub odczyt). Końcówki adresowe układu scalonego podlegają multipleksowaniu, co oznacza iż adres komórki przekazywany jest w dwóch porcjach (najpierw wiersz a potem kolumna). Stosownie do aktualnego trybu dostępu, do portu danych doprowadza informację (odczyt) lub odbiera (zapis).
Tryb konwencjonalny
Historycznie najstarszy tryb dostępu do pamięci dynamicznej to oddzielne adresowanie wiersza i kolumny dla każdego cyklu. Adres wiersza zdejmowany jest przez układ pamięciowy z szyny adresowej w momencie wykrycia opadającego zbocza sygnału sterującego -RAS (Rów Address Select). Po zatrzaśnięciu tego fragmentu adresu w rejestrze wejściowym następuje krótkotrwałe zwolnienie szyny adresowej po czym odkłada się na niej fragment adresu odpowiedzialny za numer kolumny. Adres ten wprowadzany jest do układu pamięciowego w momencie zdekodowania opadającego zbocza sygnału sterującego ~CAS (Column Address Select}.
tdczyt
Układ pamięciowy ocenia w momencie zdejmowania adresu kolumny również stan końcówki ~WE. Jeżeli jest on wysoki, rozpoznawany jest cykl odczytu i zawartość zaadresowanej komórki wyprowadzana jest na szynę danych.
Zapis
Jeżeli linia sterująca ~WE znajduje się na poziomie niskim, układ rozpoznaje cykl zapisu i pobiera dane z szyny danych. Tryb adresowania komórki jest taki sam jak w przypadku odczytu.
FPM (Fast Page Mode)
Tryb FPM oferuje pewne skrócenie czasu dostępu. Różnica w stosunku do trybu konwencjonalnego polega na uproszczeniu mechanizmu adresowania.
Dostęp do dowolnej komórki pamięci operacyjnej PC nie odbywa się poprzez odczytanie (lub zapis) tylko tej jednej wartości. Szczegóły konstrukcyjne wynikające z samej
architektury (magistrale) narzucają bardziej racjonalny styl postępowania: wymiana danych między pamięcią a resztą systemu odbywa się w porcjach po kilka bajtów na raz. Postępowanie takie nie jest pozbawione sensu zważywszy na fakt, iż przetwarzane przez PC kody (dane i programy) skupione są zwykle w pewnym spójnym wycinku przestrzeni adresowej i w dużej mierze przylegają do siebie.
Przyjmując powyższe założenie, adres wiersza przekazuje się do układu pamięciowego tylko raz na cztery cykle dostępu, które razem tworzą swego rodzaju pakiet (Burst). Pozostałe trzy cykle dostępu mają domyślnie ten sam adres wiersza a tylko zmienny adres kolumny. Czas trwania poszczególnych cykli pakietu (mierzonych w jednostkach zegarowych magistrali) podaje się często w formie czterech liczb oddzielonych od siebie kreską, np. x-x-x-x. Pierwsza liczba informuje o czasie trwania pierwszego cyklu (jest z natury rzeczy większa od pozostałych, gdyż przekazywany jest adres wiersza i kolumny) a pozostałe odnoszą się do kolejnych seryjnych cykli dostępu w obrębie tego samego wiersza. Im liczby te są mniejsze, (optymalnie 1-1-1-1) tym wymiana danych przebiega w szybszym tempie. Pamięci FPM pozwalają na osiągnięcie w najlepszym razie stanu 5-3-3-3 (przy taktowaniu zegarem 66 MHz).
Odczyt
Linia kluczująca adresu wiersza ~RAS utrzymywana jest na poziomie niskim do czasu zakończenia ostatniego cyklu pakietu. Odczyt rozpoznawany jest dzięki utrzymywaniu linii ~WE na poziomie wysokim.
Zapis
Zapis nie różni się od odczytu niczym szczególnym prócz zmiany poziomu linii sterującej ~WE. Jej stan musi być utrzymywany na poziomie niskim.
EDO (Extended Data Out)
Pamięci dynamiczne EDO stanowią dalszy krok na drodze skrócenia czasu dostępu. Nie jest to może krok milowy, ale drobna poprawka w układach sterowania (a konkretnie buforach wyjściowych). W momencie wprowadzenia na rynek układy EDO były zdecydowanie droższe od pamięci konwencjonalnych. Ich szybkie rozpowszechnienie spowodowało zwiększony popyt i spadek cen. Dziś pamięci konwencjonalne są dużo droższe, bo produkowane w śladowych ilościach. Jak to często bywa, powszechną akceptację rynku zdobywają często rozwiązania nie tyle rewolucyjne co proste i tanie.
Odczyt
Charakterystyczne dla EDO jest to, iż aktualny cykl dostępu do pamięci może się rozpocząć przed zakończeniem cyklu poprzedniego, a dane utrzymywane są na wyjściu przez czas dłuższy niż w przypadku pamięci konwencjonalnej lub FPM. W trybie konwencjonalnym i FPM wzmacniacze wyjściowe odcinały dane w momencie wykrycia narastającego zbocza ~CAS. Parametry dostępu do EDO w trybie Burst mogą osiągać w optymalnych warunkach wartość 5-2-2-2.
Zapis
Jakiekolwiek korzyści płynące za zastosowania pamięci tego typu mogą się oczywiście objawiać jedynie w czasie realizacji cykli odczytu. Zapis do EDO nie różnie się niczym od dostępu do pamięci konwencjonalnej.
BEDO (Burst EDO)
Pamięci tego typu stanowią kombinację dwóch idei: wydłużenia czasu obecności danych na końcówkach wyjściowych (EDO) oraz strumieniowania (Pipelining). O BEDO można wspomnieć wyłącznie w aspekcie historycznym, gdyż mimo niewielkiego kosztu wprowadzonych poprawek (uzyskiwane efekty są niewspółmiernie większe) pamięci BEDO nie doczekały się nigdy szerokiej akceptacji, a w chwilę potem całkowicie wymarły. Główna przyczyna tego stanu rzeczy spoczywa w architekturze scalonych układów sterowników płyt głównych typu 430VX i 430TX (Intel) dominujących na rynku w momencie narodzin BEDO. Obydwa układy nastawione były od początku na pamięci synchroniczne (SDRAM) a wsparcie dla BEDO nie zostało w nich w ogóle zaimplemen-towane.
Parametry Burst wynoszą dla BEDO 5-1-1-1 i sięgają wartości typowych dla pamięci synchronicznych. Osiąga się to dzięki uproszczonemu sposobowi adresowania. Adres przekazuje się tylko raz na cały poczwórny cykl Burst i odnosi się on do początku ob.-szaru. Pozostałe trzy adresy generowane są we wnętrzu układu. Sygnał ~CAS pełni od momentu przekazania adresu Cl funkcję zegara kluczującego a chip BEDO reaguje podobnie do pamięci SDRAM, udostępniając dane z trzech kolejnych komórek pamięci.
Porównanie
Różnice w trybie pracy czterech podstawowych typów asynchronicznych pamięci dynamicznych najlepiej jest zobrazować na wspólnym rysunku uwzględniającym wspólną skalę dla osi czasu (rysunek 3.8).
SDRAM
Architektura PC od dłuższego czasu domagała się szybszych pamięci. Mała przepustowość magistrali danych stawała się szczególnie bolesna w miarę wzrostu częstotliwości taktowania CPU. W chwili wprowadzenia procesorów Pentium II stało się oczywiste, że modele taktowane zegarem powyżej 350 MHz nie są w stanie efektywnie współpracować z magistralą pamięciową 66 MHz. Nie mniejszy nacisk wywoływało powołanie do życie podstawki Super 7, której specyfikacja dopuszczała podwyższenie przepustowości poza zakres oferowany przez szynę 66 MHz. Główny kłopot polegał na tym, że dotychczas stosowane pamięci nie dawały się dostosować do nowych wymogów - nie można było bezkarnie podnosić ich częstotliwości pracy.
Układy pamięci PC
BEDO
R1/C1 Y R1/CU1 Y R1/CU2 Y R1/CU3
Pamięci dynamiczne SDRAM (S = snchroniczne) nie różnią się w swej naturze od innych pamięci dynamicznych: nośnikiem informacji jest nadal matryca komórek bazujących na kondensatorach i tranzystorach wykonanych w technice CMOS. Inny jest natomiast sposób sterowania taką matrycą oraz technika dostępu.
Wszystkie sygnały sterujące SDRAM wyprowadzane są z jednego przebiegu zegarowego. Ułatwia to integrację pamięci w systemie (współpraca z magistralami) bowiem znacznie prościej jest utrzymać (mimo podwyższonych częstotliwości taktujących) i zagwarantować zaostrzone reżimy czasowe.
Dostęp do pamięci SDRAM, jakkolwiek możliwy w klasycznym trybie pojedynczych cykli, ma miejsce z reguły w formie cykli zgrupowanych (Burst). Dostęp grupowy obejmuje swoim zasięgiem 2, 4, lub 8 kolejnych lokalizacji lub też rozciąga się na cały
wiersz (Page)(Angielski termin Page nie oznacza co prawda w polskim tłumaczeniu wiersza tylko stronę, ale w oryginalnych opracowaniach na powyższy temat właśnie laki termin używany jest w tym kontekście. Zespól komórek adresowany tym samym (niezmiennym) adresem wiersza należy chyba nazwać wierszem a nie stroną, tym bardziej iż rodzi to szereg wątpliwości czy nie ma tu związku z terminem strona używanym nad wyraz często (i naturalnie w różnych znaczeniach) w obrębie tematyki logicznej organizacji pamięci.)
. Adres początkowy grupy przenoszony jest w pierwszym cyklu wprowadzającym (Lead off). Reszta adresów określana jest w sposób domniemany a ich wytwarzaniem zajmuje się wewnętrzny licznik pamięci. Dostęp może mieć charakter sekwencyjny i przemierzać kolejne adresy logiczne (choć niekoniecznie zaczynać się na początku takiej czwórki, na przykład przyjmować formę l, 2, 3, 0) lub przebiegać według pewnego określonego szablonu (Interleave) na przykład w kolejności 2, 3, 0, l w obrębie grupy poczwórnej. Burst może być przerwany (przejście w tryb Suspencl)
i ponownie wznowiony a jego poszczególne elementy opuszczone (sygnał DQM).
Przed przystąpieniem do pracy układ SDRAM musi zostać zaprogramowany. Operacja ta dokonywana jest na polecenie BIOS-u i odbywa się zwykle w momencie włączenia komputera. W fazie tej do pamięci SDRAM przekazywane są informacje o charakterze konfiguracyjnym: długość i typ dostępu grupowego oraz niektóre parametry czasowe. Dane te umieszczane są w specjalnym rejestrze konfiguracyjnym (Mode Register}.
Większość układów SDRAM podzielona jest wewnętrznie na niezależne bloki (zwykle
2 lub 4) nazywane bankami. Banki są na tyle autonomiczne, że można je wykorzystywać niezależnie od siebie. Pozwala to na zręczne ukrywanie niektórych opóźnień czasu dostępu, np. cyklu wprowadzającego (Lead Off- Rów Access Time} przy konieczności zmiany wiersza (Page Miss). Układ pozoruje wówczas tzw. wydłużony cykl grupowy (Extended Burst) oznaczany symbolicznie sygnaturą X-1-1-1-1-1-1-1.
Problem odświeżania przeniesiony został całkowicie do wnętrza SDRAM a kontroler pamięci nie jest nim już obarczany. Każdy chip wyposażony jest we własny generator pobudzający w odpowiednim rytmie wszystkie wiersze matryc.
SDRAM jest kolejnym krokiem naprzód w dziedzinie rozwoju układów pamięci ale z pewnością nie rozwiązuje wszystkich problemów i nie jest rozwiązaniem idealnym. Zalety tej techniki stają się widoczne (i mierzalne) w pewnych określonych warunkach. Czas opóźnienia mierzony od momentu przyłożenia adresu do momentu pojawienia się pierwszych danych jest nadal stosunkowo długi. Wynosi on około 5 cykli zegarowych czyli jest porównywalny z wartościami typowymi dla EDO i FPM. Biirst 5-1-1-1 możliwy był do osiągnięcia również przez BEDO, a więc technologię, która mogła wcześniej wejść do użycia. Różnica uwidacznia się dopiero przy wzroście częstotliwości taktowania magistrali powyżej 66 MHz. Technika EDO i FPM nie sięga tak wysoko. Pojedynczy cykl dostępu do SDRAM trwa przy częstotliwości 100 MHz tylko 10 ns, a Burst obejmujący swym zasięgiem cały wiersz pamięci dostarcza potężny strumień danych w tym właśnie tempie.
Dla lepszego zrozumienia techniki SDRAM oraz zjawisk zachodzących we wnętrzu pamięci tego typu omówimy dokładniej konkretny układ scalony. Za przykład posłuży układ SDRAM firmy Texas Instruments oznaczony symbolem TMS664414. Uproszczony schemat blokowy tego układu zaprezentowany jest na rysunku 3.9.
Prezentowany tu chip stanowi jednostkę pamięci o sumarycznej pojemności 64 Mb. Układ zorganizowany jest w formie czterech banków po 16 Mb każdy. Słowo pamięci ma wymiar 4 bitów (szerokość magistrali danych) co oznacza, iż każdy bank mieści 4 194 304 słów. Konfigurację takiego układu.określa się w skrócie jako 4Mx4x4.
Linie zewnętrzne
Układ zamknięty jest w obudowie TSOP-II i posiada 54 końcówki, do których doprowadzone są następujące sygnały:
Tabela 3.1.
Sygnały doprowadzone do układu TMS664414
Sygnały; Znaczenie; Sygnały; Znaczenie;
DQ0 - DQ3; Data Input/Data Output; ~WE; Write Enable;
DQM; Output Disable/Write Mask; ~CS; Chip Select;
A0 - A9, Ali; Row/Col. Address; CLK; Clock Input;
AIO(AP); Auto Precharge; CKE; Clock Enable;
BSO, BS1; Bank Select; Vcc/Vss; Power Supply;
~RAS; Rów Address Select; Vcc-Q/Vss-Q; Power Supply for I/O Interface;
~CAS; Column Address Select; Vcc-Q/Vss-Q; Power Supply for I/O Interface;
Magistrala danych
Każdy z banków omawianego układu wyprowadza po cztery linie danych, co oznacza, że magistrala danych jest czterobitowa a banki są całkowicie niezależne.
Maskowanie wejścia i wyjścia (DQM)
Linia DQM pozwala na wycinanie pojedynczych elementów z pakietów Burst, na przykład a-b-x-d zamiast a-b-c-d. W normalnym trybie pracy stan linii DQM utrzymywany jest na niskim poziomie logicznym. Podniesienie poziomu DQM do wysokości logicznej l powoduje:
W trakcie trwania cyklu zapisu. Ignorowanie porcji danych, która byłaby przyjęta przez SDRAM w momencie wyznaczonym przez narastające zbocze sygnału CLK.
W trakcie trwania cyklu odczytu. Z sekwencji wyjściowej wycinana jest porcja danych, a w fazie czasowej, w której miałaby wystąpić, układ przechodzi w stan wysokiej impedancji.
Magistrala adresowa i selektor banku
Magistrala adresowa jest dwunastobitowa (AO - A11) i podlega multipleksowaniu - tymi samymi liniami podawane są różne fragmenty adresu w wydzielonych wycinkach czasowych. W pierwszej kolejności przekazuje się adres wiersza a w następnej adres kolumny(Dla objęcia całej przestrzeni adresowej układu nie jest konieczne podawanie dwóch słów adresowych o rozmiarze po 12 bitów dla wiersza i dla kolumny. Pojemność banku wynosi 4 MB, wiec wymagana liczba bitów adresowych ogranicza się do 22 (2^22= 4 M). W tym konkretnym przykładzie adres łamany jest na składniki 12/10 tj. 12 bitów na wiersz i 10 bitów na kolumnę). Szczególne znaczenie ma linia A10, która decyduje o trybie deaktywacji (Precharge) banku. Funkcja ta zostanie omówiona dokładniej w dalszej części rozdziału.
Linie BSO i BS1 pozwalają na wybór do bieżącej operacji jednego z czterech banków układu. Selektory banków można przypisać do magistrali adresowej co powoduje jej wydłużenie do rozmiaru 14 bitów (AO - A13).
Sygnały sterujące ~RAS, ~CAS, ~WE
Oznaczanie aktualnej fazy podawania adresu dokonywane jest poprzez sygnały sterujące
~RAS (wiersz) i ~CAS (kolumna).
Linia ~WE pełni rolę przełącznika zapis/odczyt.
Linia ~CS (Chip Select)
Stan końcówki ~CS testowany jest przy każdym narastającym zboczu CLK. Urządzenie pozostaje w stanie aktywnym jak długo poziom ~CS pozostaje na poziomie zera logicznego. Wykrycie poziomu l powoduje przejście w stan, w którym sterowniki DQ odcinają się od magistrali (stan wysokiej impedancji) a układ nie reaguje na żadne sygnały wejściowe za wyjątkiem ~CS. Funkcje sterujące oferowane przez ~CS znajdują zastosowanie w przypadku grupowania pojedynczych chipów SDRAM w moduły pamięci.
Końcówki CLK (Clock) i ~CKE (Clock Enable)
CLK jest centralnym zegarem kluczującym, do którego odnoszą się wszystkie inne sygnały. Układ pamięci SDRAM rejestruje stan wszystkich końcówek wejściowych w momencie wykrycia narastającego zbocza sygnału CLK. Poziom sygnałów na wyjściach układu należy również oceniać w tych samych momentach.
~CKE stanowi bramkę blokującą lub przepuszczającą sygnał zegarowy do wnętrza układu. W normalnym stanie pracy ~CKE znajduje się na wysokim poziomie logicznym. Wymuszenie stanu O na tym wejściu powoduje przejście SDRAM w tzw. stan uśpienia (Suspend Modę). Tryb ten charakteryzuje się znacznie zmniejszonym poziomem poboru mocy (o około 99%). Z punktu widzenia sygnałów sterujących następuje "zamrożenie" aktualnego stanu, przerwane zostają cykle zapisu i odczytu, układ ani nie wyprowadza ani nie przyjmuje danych. Przywrócenie normalnego działania następuje przy drugim zboczu CLK liczonym od momentu gdy ~CKE = 1.
Rozkazy SDRAM
Jak już wspomniano wcześniej, pamięć SDRAM wymienia dane z otoczeniem najchętniej w dużych porcjach, im są one większe tym wyższa jest skuteczność. Pod pewnymi względami chip SDRAM należy rozpatrywać jako pewien programowalny sterownik obsługujący swe własne matryce pamięciowe. Lista rozkazów tego sterownika obejmuje pozycje umożliwiające konfigurację urządzenia, operacje zapisu i odczytu oraz manipulacje bankami. W tabeli 3.2 zebrano kilka przykładowych rozkazów.
j Faza programowania (Modę Set)
Układ SDRAM musi zostać zaprogramowany przed podjęciem pracy. W trakcie tej operacji określa się następujące parametry:
Wymiar opóźnienia pomiędzy przyłożeniem adresu kolumny a wyprowadzeniem pierwszej porcji danych (CAS Latency). Parametr ten podaje się w jednostkach CLK, dopuszczalne wartości to 2 lub 3.
Tabela 3.2.
Przykładowe rozkazy sterujące układem SDRAM
Rozkaz, ~CS; ~-RAS; ~CAS; -WE; BS1 (A 13); BS0 (A 12); A11; A10; A9-A0;
Moder Register Set; 0; 0; 0; 0 0; 0; 0 0; Register Set Data w-0-0-13-12-ll-a-b3-b2-bl;
Bank Precharge; 0; 0; 1;; 0; Numer banku:00:B0, 01:B1, 10:B2, 11: B3(dotyczy BSI i BSO);
bez znaczenia; 0; bez znaczenia,
Row Address Entry; 0; 0; 1; 1; Numer banku:00: B0, 01:B1, 10:B2, 11:B3(dotyczy BSI i BSO);
r-11; r-10; r9-r8-r7-r6-r5-r4-r3-r2-r1-r0
Column Address Entry Read; 0; 1; 0; 1; Numer banku: 00: B0, 01:B1, 10: B2, 11: B3(dotyczy BSI i BSO);
bez znaczenia; 0; c9-c8-c7-c6-c5-c4-c3-c2-cl-c0;
- Długość pakietu (Burst LengtH), dopuszczalne wartości to 1,2, 4, (Omawiany w tym punkcie układ scalony nie dopuszcza "burstu" w wymiarze pełnego wiersza, opcja ta stoi często do dyspozycji w innych modelach pamięci SDRAM.).
- Format pakietu - sekwencyjny lub z przeplotem
Powyższe parametry przekazuje się w formie słowa 10-bitowego podawanego na liniach AO - A9. Układ SDRAM rozpoznaje fazę programowania, dzięki określonej konfiguracji sygnałów sterujących: -RAS = ~CAS = ~WE = 0. Dane na liniach AO - A9 sprawdzane są pod względem swej poprawności i jeśli nie spełniają przyjętych kryteriów zostają odrzucone a stan układu nie ulega zmianie.
(
Tabela 3.3.
Register Set Data
BS1 (A13) - 0;
BS0 (A12) - 0; A11 - 0;
A10 - 0;
A9 - Write Mode: 1=Burst Read & Single Write, 0=Burst Read & Brust Write;
A8 - 0;
A7 - 0;
A6, A5, A4 - ~CAS Latency: 010=Latency=2, 011-Latency=3;
A3 - Addressing Mode: 1=Interleave, 0=Sequential;
A2, AI, AO - Brust Length: 000-Brust Length=1, 001-Brust Length=2, 010-Brust Length=4 011-Brust Length=8 111-Brust Length=FullPage;
Aktywacja banku
Omawiany układ podzielony jest na cztery banki. Banki mogą być wykorzystywane niezależnie. Właściwość ta ma kapitalne znaczenie z punktu widzenia ciągłości danych. SDRAM zorganizowany w formie pojedynczego banku zmuszony jest do wprowadzania przerw w momencie zmian adresu wiersza. Sekwencje aktywacja-deaktywacja (Prę-charge} to nic innego jak przygotowanie elektroniki do odczytu (podładowanie linii wiersza do poziomu połowy napięcia zasilania, operacja niezbędna dla zapewnienia prawidłowego funkcjonowania wzmacniaczy różnicowych). Układ rozpoznaje komendę aktywacji poprzez specyficzną kombinację sygnałów sterujących -RAS = O, ~CAS = l, ~WE = 1. Na liniach A12 i A13 kodowany jest numer banku 0-3. Naprzemienne (Interleave) pobudzanie banków maskuje czas potrzebny na przygotowanie wiersza. W danym momencie pracuje zawsze jeden z banków a wyprowadzana informacja płynie nieprzerwanym strumieniem w tempie określanym przez CLK.
Zapis i odczyt
Jak już wspomniano wcześniej, operacje zapisu i odczytu przebiegają najkorzystniej w formie pakietów (Bursf).
Ponieważ parametry transmisji określone są w fazie programowania, wystarczy podać adres początkowy obszaru
pamięci, a kolejne lokalizacje zdefiniowane są w sposób jednoznaczny. Adres wiersza ustalany jest w momencie
aktywacji banku, tak że zmianie ulegają jedynie adresy kolumn, a konkretnie kilka ostatnich bitów (np. Burst 8-krotny:
3 bity):
Przykład l
Burst Length = 8 Burst
Type = Ser.
Adres początkowy kolumny:
xxxx...x101
Adresy kolejne:
xxx...x110 xxx...x111
xxx...xooo xxxx...x001
xxxx...x010 xxxx...x011
xxxx...x100
Przykład 2
Burst Length = 4
Burst Type = Seq.
Adres początkowy kolumny:
xxxx...xx10
Adresy kolejne:
xxxx...xx11
xxxx...xx00
xxxx...xx01
Pierwsza porcja danych pakietu wyprowadzana jest zgodnie z definicją zawartą w fazie programowania (Read Latency
lub inaczej CAS Latency): po 2 lub 3 cyklach zegarowych od momentu podania komendy i adresu kolumny. Cykl zapisu
następuje bez opóźnienia (Write Latency = 0). Dane przejmowane są z magistrali wraz z wystąpieniem pierwszego
narastającego zbocza CLK.
Po zakończeniu fazy Burst bufory wyjściowe przechodzą automatycznie w stan wysokiej impedancji i układ jest odcinany od magistrali.
Deaktywacja
Podanie adresu nowego wiersza (aktywacja) musi zostać poprzedzone przez deaktywację danego banku. Bank można deaktywować na jeden z trzech sposobów:
- Deaktywacja określonego banku o numerze kodowanym na bitach A12 i A13. Komenda ma postać ~RAS = O, ~WE = O, ~CAS = 1. Linia A10 utrzymywana jest na niskim poziomie.
- Jednoczesna deaktywacja wszystkich banków. Rozkaz deaktywacji z ustawionym bitem A10 = l odnosi się do wszystkich banków a stan linii A12 i A13 nie odgrywa roli.
- Cykle zapisu i odczytu z przyrostkiem: Read-P i Write-P (P - Precharge). Różnią się od normalnych operacji poprzez ustawienie linii A10 - 1. Cykle takie przechodzą automatycznie w fazę deaktywacji banku i nie wymagają żadnych dodatkowych działań. Ustawienie A10 = 0 w momencie wydawania komendy zapisu lub odczytu pozostawia bank w stanie aktywnym.
Odświeżanie
Pamięci SDRAM są nadal pamięciami dynamicznymi i nie są zwolnione z obowiązku odświeżania zawartości. Sposób przeprowadzania tej operacji może być jednak różny:
- Standard Refresh. Standardowy tryb pracy zapewniający "zgodność w dół". Odpowiada on, omawianemu przy okazji omawiania pamięci DRAM, trybowi RAS-Only. Kontroler generuje kolejno wszystkie adresy wierszy, dla każdego z banków oddzielnie. Cały cykl musi się zamknąć w oknie czasowym 64 ms.
- Aulo Refresh. Komenda rozpoznawana jest poprzez kombinację -RAS = O, ~CAS = O, ~WE - 1. Ignorowany jest zarówno adres na liniach A0 - A11 jak i numer banku (A 12, A13). Układ generuje samorzutnie kolejne adresy i odświeża wiersz o aktualnym numerze we wszystkich 4 bankach jednocześnie. Jeśli kontroler pamięci wybrał ten tryb pracy, musi wydać 4 096 komend Auto Refresh w oknie czasowym nie przekraczającym 64 ms. Kolejne rozkazy mogą być rozłożone równomiernie w czasie lub zgrupowane w jeden duży pakiet.
- Self Refresh. Pamięci SDRAM mają wbudowany mechanizm samo odświeżania. Do odświeżania w tym trybie dochodzi w momencie zablokowania napływu impulsów zegarowych (CKE = 0). Układ przechodzi w energooszczędny stan uśpienia a odświeżanie przebiega "w tle".
Organizacje logiczne kostek SDRAM
Układy pamięci SDRAM wytwarzane są w wielu odmianach. Matryca pamięciowa o określonym rozmiarze może być przecież zorganizowana na szereg różnorodnych sposobów (liczba wierszy i kolumn oraz ilość banków). Typowe formy organizacji zebrane zostały w tabeli 3.4.
Organizacja logiczna kostki SDRAM jest decydującym czynnikiem w fazie projektowania modułu pamięci. Rozważmy dla przykładu piątą linijkę tabeli. Przestrzeń adresowa o wymiarze 4 M (czyli 2^22) pokrywana jest niezależnie od organizacji przy pomocy 22 bitów. Przy podziale na 4 banki każdy z nich ma po 16 Mb. W tym konkretnym przypadku układ poświęca 12 bitów adresowych na wiersz i 8 bitów adresowych na kolumnę. Ponieważ wyprowadzanych jest 16 linii danych, 4 takie chipy pozwalają utworzyć magistralę 64-bitową.
W formacji jednorzędowej (lub inaczej jednostronnej) chipy ułożone są logicznie wzdłuż magistrali danych, a każda jej linia połączona jest z jednym i tylko jednym wyprowadzeniem kostki pamięci. Całkowita pojemność przykładowego modułu jednostronnego wynosi więc 256 Mb, czyli 32 MB. Moduł taki oznaczany jest jako 4Mx64 o rozkładzie R/B/C (Mapping: Row/Bank/Column) postaci 12/2/8.
Inna forma organizacji to formacja dwurzędowa (dwustronna) - różnica staje się jasno widoczna podczas dokładnej analizy rysunku 3.12. Połączenie 8 takich samych kostek w układzie dwurzędowym tworzy moduł 64 MB 8Mx64 opisany rozkładem 12/2/8.
Tabela 3.4.
Typowe formy organizacji układów pamięci SDRAM
Pojemność SDRAM, Organizacja; Liczba bitów adresowych na wiersze; Liczba bitów adresowych na kolumny; Liczba bitów adresowych na banki; Sumaryczna liczba bitów adresowych;
16 Mb, 1Mx16; 11 (A0-A10); 8(A0-A7); 1; 20;
2Mx8; 11 (A0-A10); 9(A0-A8); 1; 21;
4Mx4; 11 (A0-A10); 10(A0-A9); 1; 22;
64 Mb, 2Mx32; 11 (A0-A10); 8(A0-A7); 2; 21
4Mxl6; 13 (A0-A11); 8 (A0 - A7); 2; 22
4Mxl6; 13 (A0-A12); 8 (A0 - A7); 1; 22
8Mx8; 12(A0-A11); 9(A0-A8); 2; 23
8Mx8; 13 (A0-A12); 9(A0-A8); 1; 23
16Mx4; 12(A0-A11); 10(A0-A9); 2; 24
16Mx4; 13(A0-A12); 10(A0-A9); 1; 24
256 Mb, 8Mx32; 12(A0-A11); 9 (A0 - A8); 2; 23
8Mx32; 13(A0-A12); 8(A0-A7); 2; 23
16Mxl6; 13(A0-A12); 9(A0-A8); 2; 24
32Mx8; 13(A0-A12); 10(A0-A9); 2; 25
64Mx4; 13(A0-A12); 11 (A0-A9, A11; 2; 26
Moduły pamięci
Nie tylko scalone układy pamięci, będące podstawowym budulcem modułów, ale również same moduły (ich formy zewnętrzne i organizacje logiczne) mają za sobą dosyć długą drogę rozwoju. Konieczność łączenia ze sobą poszczególnych chipów wynikała zawsze z chęci uzyskania szyny danych o pewnej szerokości: od 16 bitów w komputerach PC pierwszej generacji, poprzez 32, do 64 w chwili obecnej. Niezbędna liczba kostek określonego typu wynika z ich własnej organizacji - ilości wyprowadzanych linii danych. Dla zagwarantowania pokrycia magistrali 64-bitowej potrzeba co najmniej 16 kostek w formacie x4 lub 8 w formacie x8. Chęć uzyskania określonej pojemności narzuca resztę elementów architektury modułu. Jeżeli skorzystać z faktu, iż linie danych pojedynczych kostek można łączyć równolegle (i sterować sygnałami CS wybierających dany chip) można budować konstrukcje dwurzędowe.
Nie jest rzeczą obojętną czy moduł zawiera szesnaście kostek x4 czy 8 kostek x8. Należy bowiem pamiętać, iż w grę wchodzą zagadnienia odnoszące się do niezawodności poszczególnych układów i jej wpływu na niezawodność modułu. W pewnych określonych konfiguracjach zmienia się prawdopodobieństwo wystąpienia błędów pojedynczych (łatwiejszych do wykrycia i usunięcia). Inaczej zachowuje się moduł, który przy każdym cyklu dostępu pobudza wszystkie obecne na płytce układy scalone a inaczej taki, który tylko połowę (pobór prądu, charakterystyka obciążenia, a w konsekwencji generacja zakłóceń na liniach danych i sterujących). Jak to zwykle bywa, wpływy niektórych z zasygnalizowanych tu czynników wykluczają się wzajemnie (korzystny rozkład obciążenia owocuje zwiększoną podatnością na błędy objawiające się jednocześnie na wielu końcówkach).
Zagadnienia z powyższego zakresu znacznie wybiegają poza zakres tej książki a zainteresowanych czytelników odsyłam do materiałów publikowanych przez producentów modułów pamięci. W dalszej części rozdziału omówione zostaną trzy podstawowe typy modułów pamięci wykorzystywanych w technice PC - SIMM 30-końcówkowy, SIMM PS/2 (72-końcówkowy) oraz DIMM.
Moduły SIMM-30 (SIP)
Listwa połączeniowa płytki posiada 30 pól.. Pierwotnie jako elementy złącz stosowane były krótkie szpilki (odmiana SIP), a potem pola kontaktowe na płytce drukowanej. Znaczenie końcówek l - 30 było takie samo w formie SIP i SIMM. Moduły tego typu produkowane były w wersji z kontrolą parzystości lub bez.
SIMM-30 dysponuje 11-bitową szyną adresową. Dwukierunkowa 8-bitowa magistrala danych uzupełniana jest dwiema dodatkowymi liniami DP-In i DP-Out stanowiącymi dostęp do komórki przechowującej bit parzystości. Linie kluczowania adresu wiersza (~RAS) wszystkich komórek danych i parzystości połączone są równolegle. Sygnał kluczowania kolumn wyprowadzany jest dwukrotnie: raz jako wspólna linia wszystkich komórek danych (~CAS) i oddzielnie dla komórki parzystości (~PCAS).
Styk; Oznaczenie
1; Vcc
2; ~CAS
3; DQO
4; AO
5; A1
6; DQ1
7; A2
8; A3
9; GND
10; DQ2
11; A4
12; A5
13; DQ3
14; A6
15; A7
16; DQ4
17; A8
18; A9
19; A10
20; DQ5
21; ~WE
22; GND
23; DQ6
24; NC
25; DQ7
26; DP-Out
27; ~RAS
28; ~PCAS
29; DP-In
30; Vcc
Tabela 3.5.
Pola kontaktowe modułu SIMM-30 w wersji z bitem parzystości
Moduły SIMM-30 królowały na płytach głównych procesorów x86 - x486, przy czym dla osiągnięcia wymaganej szerokości magistrali (16-bitów) konieczna była obecność dwóch takich jednostek. Na początku wytwarzano wersje o pojemności 256 kB, później wyłącznie l MB lub 4 MB. Większe jednostki pamięciowe nigdy nie były produkowane.
Najczęściej spotykane konfiguracje omawianych modułów przedstawione zostały na rysunku 3.13. Płytka o pojemności całkowitej 4 MB zawierała 8 (bez parzystości) lub 9 (z parzystością) kostek 4 Mb w organizacji 4Mx1. Płytki l MB montowane były przeważnie z dwóch typów pamięci DRAM: 4 Mb (dane) i l Mb (parzystość). Symboliczna organizacja logiczna przykładowych modułów przedstawiona jest na rysunku 3.14.
Moduły SIMM PS/2
Moduły tego typu zostały skonstruowane w celu zaspokojenia wymagań procesorów z magistralą 32-bitową. Produkowane były zarówno w wersji bez bitów parzystości (a wśród nich FPM i EDO) jak i w formie 36-bitowej. Wysokość samej płytki może być różna w zależności od sumarycznej liczby zainstalowanych na niej układów scalonych.
SIMM PS/2 bez parzystości (FPM i EDO)
Moduł wyprowadza magistralę danych DQO - DQ31 o szerokości 32-bitów, bez dodatkowych linii dla parzystości. Magistrala adresowa jest 12-bitowa. Specyfikacja przewiduje cztery oddzielne linie ~RAS i cztery oddzielne linie ~CAS. Fakt ten pozwala na stosowanie wielu typów scalonych układów pamięciowych o przeróżnych organizacjach.
Jako przykład konkretnej realizacji modułów SIMM PS/2 opisane zostaną dwie konstrukcje. Pierwsza z nich to produkt firmy Texas Instruments noszący oznaczenie TM497FBK32H. Pojemność całkowita wynosi w tym wypadku 16 MB w architekturze jednostronnej (Single Sided). Płytka zawiera 8 kostek 16 Mb EDO-DRAM opisanych symbolami TMS417409 w organizacji 4Mx4. Odświeżanie odbywa się w cyklu 32 ms (2K). Schemat blokowy omawianego modułu przedstawiony jest na rysunku 3.16.
Tabela 3.6.
Pola kontaktowe modulu SIMM PS/2
1; Vss
2; DQ0
3; DQ16
4; DQ1
5; DQ17
6; DQ2
7; DQ18
8; DQ3
9; DQ19
10; Vcc
11; Puste
12; A0
13; A1
14; A2
15; A3
16; A4
17; A5
18; A6
19; A10
20; DQ4
21; DQ20
22; DQ5
23; DQ21
24; DQ6
25; DQ22
26; DQ7
27; DQ23
28; A7
29; Puste (A11)
30; Vcc
31; A8
32; A9
33; ~RAS3
34; ~RAS2
35; Puste
36; Puste
37; Pust
38; Puste
39; Vss
40; ~CAS0
41; ~CAS2
42; ~CAS3
43; ~CAS1
44; ~RASO
45; ~RAS1
46; Puste
47; ~WE
48; Puste
49; DQ8
50; DQ24
51; DQ9
52; DQ25
53; DQ10
54; DQ26
55; DQ11
56; DQ27
51; DQ12
58; DQ28
59; Vcc
60; DQ29
61; DQ13
62; DQ30
63; DQ14
64; DQ31
65; DQ15
55; DQ11
56; DQ27
51; DQ12
58; DQ28
59; Vcc
60; DQ29
61; DQ13
62; DQ30
63; DQ14
64; DQ31
65; DQ15
66; PRD5
67; PRD1
68; PRD2
69; PRD3
70; PRD4
71; Puste
72; Vss
Tabela 3.7.
Sygnały doprowadzone do modułu SIMM PS/2
Sygnał; Znaczenie; Wejście/Wyjście; Liczba
DQ0 - DQ31; Data Input/Data Output; Wejście/Wyjście; 32
A0 - A11; Address; Wejście; 12
~RASO - ~RAS3; Row Address Strobe; Wejście; 4
~CASO - ~CAS3; Column Address Strobe; Wejście; 4
~WE; Read/Write; Wejście; 1
PRD1 - PRD5; Presence Detect; Wyjście; 5
Vcc; +5V; Zasilanie; 3
Vss; GND; Zasilanie; 3
Puste; 8
Najważniejszymi parametrami charakteryzującymi moduł są .czasy dostępu. Mamy tu zwykle na myśli T#RAC (Access Timefrom ~RAS). Stanowi on miarę opóźnienia wprowadzanego przez moduł od momentu przyłożenia adresu wiersza do pojawienia się danych. Wielkość tego współczynnika leżała zwykle w przedziale 50 ns - 80 ns, wartością typową było 70 ns. Dużo mniejszy przedział czasowy wyznacza współczynnik T#CAC (Access Time from ~CAS) reprezentujący okres oczekiwania na dane mierzony od opadającego zbocza ~CAS. Typowe wartości mieszczą się w zakresie 15 ns - 20 ns
Drugi przykład to SIMM-32MB-EDO tym razem jednak jako struktura dwustronna (Double Sided). Produkt firmy Hyundai (rysunek 3.17) nosi oznaczenie HYM 532814A i zbudowany jest w oparciu o 16 kostek 16 Mb w organizacji 4Mx4 (HY 5117404).
Organizacji dwustronnej nie należy mylić z fizyczną obecnością kostek pamięciowych na obydwu stronach płytki drukowanej. Chodzi tu raczej o fakt równoległego łączenia końcówek I/O. W przykładowym module 32 MB do każdej linii magistrali danych modułu podłączone są po dwie linie z dwóch niezależnych kostek DRAM. Strony zaznaczone są symbolicznie w formie dwóch rozdzielnych zakreskowanych obszarów na rysunku 3.17 (strona-1 i strona-2). Sposób grupowania końcówek ~RAS i ~CAS po-
szczególnych kostek i przyporządkowywania ich liniom ~RASO - ~RAS3 oraz ~CASO - ~CAS3 jest inny w modułach o organizacji dwustronnej a inny w modułach jednostronnych. Różnice te zebrane są w tabeli 3.8.
Tabela 3.8.
Grupowanie końcówek -RAS i -CAS w modułach SIMM PS/2
Bajt;Organizacja jednostronna:RAS - CAS;Organizacja dwustronna:RAS strona-1 - RASstrona-2;CAS;
DQ0 - DQ7; ~RAS0 - ~CAS0; ~RAS0 - ~RAS1; ~CAS0;
DQ8-DQ15; ~RAS0 - ~CAS1; ~RAS0 - ~RAS1; ~CAS1;
DQ16-DQ23; ~RAS2 - ~CAS2; ~RAS2 - ~RAS3; ~CAS2;
DQ24 - DQ31; ~RAS2 - ~CAS3; ~RAS2 - ~RAS3; ~CAS3;
SIMM PS/2 36-bitowy
Tabela 3.9.
Pola kontaktowe modułu SIMM PS/2 z kontrolą parzystości
Styk; Oznaczenie
1; Vss
2; DQ0
3; DQ18
4; DQ19
6; DQ2
7; DQ20
8; DQ3
9; DQ21
10; Vcc
11; Puste;
12; A0
13; A1
14; A2
15; A3
16; A4
17; A5
18; A6
19; A10
20; DQ4
21; DQ22
22; DQ5
23; DQ23
24; DQ6
25; DQ24
26; DQ7
27; DQ25
28; A7
29; A11
30; Vcc
31; A8
32; A9
33; ~RAS3
34; ~RAS2
35; DQ26
36; DQ8
37; DQ17
38; DQ35
39; Vss
40; -CASO
41; -CAS2
42; -CAS3
43; -CAS1
44; -RAS0
45; -RAS1
46; Puste
47; -WE
48; Puste
49; DQ9
50; DQ27
51; DQ10
52; DQ28
53; DQ11
54; DQ29
55 DQ12
56; DQ30
57; DQ13
58; DQ31
59; Vcc
60; DQ32
61; DQ14
62; DQ33
63; DQ15
64; DQ34
65; DQ16
66; Puste
67; PRD1
68; PRD2
69; PRD3
70; PRD4
71; Puste
72; Vss
Proszę zwrócić uwagę, iż na skutek wprowadzenia dodatkowych końcówek numeracja linii magistrali danych od DQ7 wzwyż ulega zmianie (porównaj tabelę 3.6 i 3.9). Bit kontroli parzystości pierwszego bajtu to DQ8, bajt drugi rozpoczyna się od DQ9 i zakończony jest bitem kontrolnym DQ17 itd.
Końcówka 66 (PRD5) ma znaczenie wyłącznie w modułach bez parzystości, dla rozróżnienia modułu FPM od EDO. W niektórych komputerach IBM (niekoniecznie opartych na architekturze PC) stosowane są moduły SIMM z jednym lub nawet dwoma dodatkowymi bitami ECC na każdy bajt danych (SIMM ECC x36 i x40). Rozpoznanie odbywa się w oparciu o stan końcówek 48 i 11.
Tabela 3.10.
Sygnały doprowadzone do modułu SIMM PS/2 z kontrolą parzystości
Sygnał; Znaczenie; Wejście/Wyjście;; Liczba;
DQ0 - DQ35; Data Input / Data Output; Wejście/Wyjście; 36;
A0 - A11; Address; Wejście; 12;
-RASO - -RAS3; Row Address; Strobe; Wejście; 4;
-CASO - -CAS3; Column Address Strobe; Wejście; 4;
~WE; Read / Write; Wejście; 1;
PRD1 - PRD4; Presence Detect; Wyjście; 4;
Vcc; +5V; Zasilanie; 3;
Vss; GND; Zasilanie; 3;
Puste; 5;
System rozpoznawania modułów SIMM
Identyfikacja modułu pamięci to zadanie spoczywające na programie BIOS w początkowej fazie konfiguracji systemu. Spośród szeregu możliwych kombinacji organizacji (jednostronne, dwustronne), rozmiaru, czasów dostępu i typu (EDO, FPM, z parzystością lub bez) trzeba wybrać tą jedną i właściwie zaprogramować układy sterujące płyty głównej (Chip-Set). Ponieważ zadanie to przypomina równanie z wieloma niewiadomymi, próbuje się wyeliminować przynajmniej część z nich podsuwając systemowi BIOS kilka (w miarę pewnych) informacji.
Dane te przekazywane są za pomocą pięciu końcówek rozpoznawczych PRD1 - PRD5. Producent modułu łączy daną końcówkę z masą (0) lub pozostawia wolną (1). Sposób kodowania przedstawiony jest w tabeli 3.11.
Tabela 3.11.
Znaczenie końcówek rozpoznawczych PRD1 - PRD5
PRD1(#67) - PRD2 (#68); PRD3 (#69) - PRD4(#70); PRD5 (#66);
Pojemność modułu; Czas dostępu; Typ modułu;
00-4MB lub 64 MB; 00-50nslub l00ns; 0-EDO;
01-lMBlub 16 MB; 01 -70ns; 1-FPM;
10-2MBlub32MB; 10-80ns;
11- 8 MB; 11 - 60 ns;
Moduły DIMM
Listwa połączeniowa modułów DIMM jest dwustronna i posiada w sumie 168 pól kontaktowych. Specyfikacja nie ogranicza ich zastosowania do konkretnego typu pamięci. Mogą one stanowić nośnik klasycznych pamięci DRAM-FPM, EDO oraz SDRAM. System specjalnych wcięć (kluczy) pozwala na mechaniczne wyróżnienie i zakwalifikowanie modułu do odpowiedniej klasy w obrębie jednej z dwóch grup:
Grupa pierwsza: pamięci buforowane/niebuforowane.
Grupa druga: napięcie zasilania 3,3V/5V.
W dalszej części rozdziału przedstawimy pokrótce te typy modułów DIMM, które przynajmniej przez pewien czas odgrywały jakąś rolę na rynku komputerów PC.
Buforowane DIMM DRAM
Tabela 3.12.
Pola kontaktowe buforowanego modułu DIMM DRAM
Styk:Przód,Tył; 8B(x64):Przód-Tył; 8B+1bECCB (x72):Przód-Tył; 8B+2bECCB (x80):Przód-Tył
1/85; Vss Vss; Vss Vss; Vss Vss
2/86; DQ0 DQ36; DQ0 DQ36; DQ0 DQ40
3/87; DQ1 DQ37; DQ1 DQ37; DQ1 DQ4I
4/88; DQ2 DQ38; DQ2 DQ38; DQ2 DQ42
5/89; DQ3 DQ39; DQ3 DQ39; DQ3 DQ43
6/90; Vdd Vdd; Vdd Vdd; Vdd Vdd
7/91; DQ4 DQ40; DQ4 DQ40; DQ4 DQ44
8/92; DQ5 DQ41; DQ5 DQ4I; DQ5 DQ45
9/93; DQ6 DQ42; DQ6 DQ42; DQ6 DQ46
10/94; DQ7 DQ43; DQ7 DQ43; DQ7 DQ47
11/95; Puste DQ44; DQ8 DQ44; DQ8 DQ48
12/96; Vss Vss; Vss Vss; Vss Vss
13/97; DQ9 DQ45; DQ9 DQ45; DQ9 DQ49
14/98; DQ10 DQ46; DQ10 DQ46; DQ10 DQ50
15/99; DQ11 DQ47; DQ11 DQ47; DQ11 DQ51
16/100; DQ12 DQ48; DQ12 DQ48; DQ12 DQ52
17/101; DQ13 DQ49; DQ 13 DQ49; DQI3 DQ53
18/102; Vdd Vdd; Vcld Vdd; Vdcl Vdd
19/103; DQ14 DQ50; DQ14 DQ50; DQ14 DQ54
20/104; DQ15 DQ51; DQ15 D05I; DQ15 DQ55
21/105; DQ 16 DQ52; DQ16 DQ52; DQ16 DQ56
22/106; Puste Puste; DQI7 DQ53; DQ17 DQ57
23/107; Vss Vss; Vss Vss; Vss Vss
24/108; Puste Puste; Puste Puste; DQI8 DQ58
25/109; Puste Puste; Puste Puste; DQ19 DQ59
26/110; Vdd Vdd; Vdd Vdd; Vdd Vdd
27/111; -WE0 Puste; -WEO Puste; -WEO Puste
28/112; -CAS0 -CAS1; -CASO -CAS1; -CASO -CAS1
29/113; -CAS2 -CAS3; Puste Puste; Puste Puste
30/114; -RAS0 -RAS1; -RASO -RAS1; -RAS RAS1
31/115; -OE0 Puste; -OEO Puste; -OEO Puste
32/116; Vss Vss; Vss Vss; Vss Vss
33/117; A0 A1; A0 A1; A0 A1
34/118; A2 A3; A2 A3; A2 A3
35/119; A4 A5; A4 A5; A4 A5
36/120; A6 A7; A6 A7; A6 A7
37/121; A8 A9; A8 A9; A8 A9
38/122; A10 A11; A10 A11; A10 A11
39/123; A12 A13; A12 A13; A12 A13
40/124; Vdd Vdd; Vdd Vdd; Vdd Vdd
41/125; Puste Puste; Puste Puste; Puste Puste
42/126; Zarezer. B0; Zarezer. B0; Zarezer. B0
43/127; Vss Vss; Vss Vss; Vss Vss
44/128; -OE2 Puste; -OE2 Puste; ~OE2 Puste
45/129; -RAS2 -RAS3; -RAS2 -RAS3; -RAS2 -RAS3
46/130; -CAS4 -CAS5; -CAS4 -CAS5; -CAS4 -CAS5
47/131; -CAS6 -CAS7; Puste Puste; Puste Puste
48/132; -WE2 -PDE; -WE2 ~PDE; -WE2 -PDE 49/133; Vdd Vdd; Vdd Vdd; Vdd Vdd 50/134; Puste Puste; Puste Puste; DQ20 DQ60 51/135; Puste Puste; Puste Puste; DQ2I DQ61 52/136; DQ18 1 DQ54; DQI8 DQ54; DQ22 DQ62
53/137; DQ19 DQ55; DQ19 DQ55; DQ23 DQ63
54/138; Vss Vss; Vss Vss; Vss Vss
55/139; DQ20 DQ56; DQ20 DQ56; DQ24 DQ64
56/140; DQ21 DQ57; DQ21 DQ57; DQ25 DQ65
57/141; DQ22 DQ58; DQ22 DQ58; DQ26 DQ66
58/142; DQ23 DQ59; DQ23 DQ59; DQ27 DQ67
59/143; Vdd Vdd; Vdd Vdd; Vdd Vdd 60/144; DQ24 DQ60; DQ24 DQ60; DQ28 DQ68
61/145; Puste Puste; Puste Puste; Puste Puste 62/146; Puste Puste; Puste Puste; Puste Puste 63/147; Puste Puste; Puste Puste; Puste Puste 64/148; Puste Puste; Puste Puste; Puste Puste 65/149; DQ25 DQ61; DQ25 DQ61; DQ29 DQ69
66/150; Puste Puste; DQ26 DQ62; DQ30 DQ70
67/151; DQ27 DQ63; DQ27 DQ63; DQ31 DQ7I
68/152; Vss Vss; Vss Vss; Vss Vss
69/153; DQ28 DQ64; DQ28 DQ64; DQ32 DQ72
70/154; DQ29 DQ65; DQ29 DQ65; DQ33 DQ73
71/155; DQ30 DQ66; DQ30 DQ66; DQ34 DQ74
72/156; DQ3I DQ67; DQ31 DQ67; DQ35 DQ75
73/157; Vdd Vdd; Vdd Vdd; Vdd Vdd 74/158; DQ32 DQ68; DQ32 DQ68; DQ36 DQ76
75/159; DQ33 DQ69; DQ33 DQ69; DQ37 DQ77
76/160; DQ34 DQ70; DQ34 DQ70; DQ38 DQ78
77/161; Puste Puste; DQ35 DQ71; DQ39 DQ79
78/162; Vss Vss; Vss Vss; Vss Vss
79/163; PD1 PD2; PD1 PD2; PD1 PD2 80/164; PD3 PD4; PD3 PD4; PD3 PD4 81/165; PD5 PD6; PD5 PD6; PD5 PD6 82/166; PD7 PD8; PD7 PD8; PD7 PD8 83/167; ID0 1D1; ID0 ID1; D0 ID1 84/168; Vdd Vdd; Vdd Vdd; Vdd Vdd
W modułach buforowanych lewy klucz znajduje się w pozycji centralnej. Klucz środkowy przyjmuje pozycję centralną w modułach wymagających zasilania 3,3V. Przesunięcie klucza centralnego na lewo informuje o konieczności zasilania napięciem 5V. Podstawki DIMM mają w odpowiednich miejscach wystające karby, tak by mogły przyjąć tylko dostosowane do siebie moduły.
Szerokość magistrali danych wyprowadzanej z modułu może sięgać 80 bitów (tyle maksymalnie przewiduje specyfikacja), nie podlega ona jednak buforowaniu w przeciwieństwie do większości sygnałów kontrolnych i sterujących (wyjątek stanowią linie -RAS, które również nie są buforowane).
Tabela 3.13.
Sygnały doprowadzone do buforowanego modułu D/MM DRAM
Sygnał; Znaczenie; Wejście/Wyjście; Liczba
DQ0 - DQ79; Data Input/Data Output; Wejśćie/ Wyjśćie; 80
A1- A13, A0, B0; Address (buforowane); Wejście; 15
-RAS0 - -RAS3; Rów Address Strobe; Wejście; 4
-CAS0 - -CAS7; Column Address Strobe (buforowane); Wejście; 8
~WE0, ~WE2; Read / Write (buforowane); Wejście; 2
~OE0, ~OE2; Output Enable (buforowane); Wejście; 2
PD1 - PD8; Presence Detect (buforowane); Wyjście; 8
PDE; Presence Detect Enable; Wejście; 1
Vdd; +3,3V (+5V); Zasilanie; 16
Vss; GND; Zasilanie; 16
1D0 - 1D1; ID Bits; Wejście/Wyjście; 2
Zarezerwowane; 14
Niebuforowane DIMM DRAM
Klucz lewy przesunięty jest w prawo, co identyfikuje DIMM jako niebuforowany. Mechanizm oznaczania napięcia zasilającego (klucz centralny) pozostaje bez zmian - pozycja centralna oznacza 3,3V, a przesunięcie w lewo 5V.
W niebuforowanych modułach DIMM wszystkie sygnały z poszczególnych układów scalonych doprowadzane są bezpośrednio do listwy kontaktowej.
Tabela 3.12.
Pola kontaktowe buforowanego modułu DIMM DRAM
Styk:Przód,Tył; 8B(x64):Przód-Tył; 8B+1bECCB (x72):Przód-Tył; 8B+2bECCB (x80):Przód-Tył
1/85; Vss Vss; Vss Vss; Vss Vss
2/86; DQ0 DQ32; DQ0 DQ32; DQ0 DQ32
3/87; DQ1 DQ33; DQ1 DQ33; DQ1 DQ33
4/88; DQ2 DQ34; DQ2 DQ34; DQ2 DQ34
5/89; DQ3 DQ35; DQ3 DQ35; DQ3 DQ35
6/90; Vdd Vdd; Vdd Vdd; Vdd Vdd
7/91; DQ4 DQ36; DQ4 DQ36; DQ4 DQ36
8/92; DQ5 DQ37; DQ5 DQ37; DQ5 DQ37
9/93; DQ6 DQ38; DQ6 DQ38; DQ6 DQ38
10/94; DQ7 DQ39; DQ7 DQ39; DQ7 DQ30
11/95; Puste DQ40; DQ8 DQ40; DQ8 DQ40
12/96; Vss Vss; Vss Vss; Vss Vss
13/97; DQ9 DQ41; DQ9 DQ41; DQ9 DQ41
14/98; DQ10 DQ42; DQ10 DQ42; DQ10 DQ42
15/99; DQ11 DQ43; DQ11 DQ43; DQ11 DQ43
16/100; DQ12 DQ44; DQ12 DQ44; DQ12 DQ44
17/101; DQ13 DQ45; DQ 13 DQ45; DQI3 DQ45
18/102; Vdd Vdd; Vdd Vdd; Vdd Vdd
19/103; DQ14 DQ46; DQ14 DQ46; DQ14 DQ46
20/104; DQ15 DQ47; DQ15 D047; DQ15 DQ47
21/105; Puste Puste; CB0 CB4; CB0 CB4
22/106; Puste Puste; CB1 CB5; CB1 CB5
23/107; Vss Vss; Vss Vss; Vss Vss
24/108; Puste Puste; Puste Puste; CB8 CB12
25/109; Puste Puste; Puste Puste; CB9 CB13
26/110; Vdd Vdd; Vdd Vdd; Vdd Vdd
27/111; -WE Zarez.; -WE Zarez.; -WE Zarez.
28/112; -CAS0 -CAS1; -CASO -CAS1; -CASO -CAS1
29/113; -CAS2 -CAS3; Puste Puste; Puste Puste
30/114; -RAS0 -RAS1; -RASO -RAS1; -RASO -RAS1
31/115; -OE0 Zarez.; -OEO Zarez.; -OEO Zarez.
32/116; Vss Vss; Vss Vss; Vss Vss
33/117; A0 A1; A0 A1; A0 A1
34/118; A2 A3; A2 A3; A2 A3
35/119; A4 A5; A4 A5; A4 A5
36/120; A6 A7; A6 A7; A6 A7
37/121; A8 A9; A8 A9; A8 A9
38/122; A10 A11; A10 A11; A10 A11
39/123; A12 A13; A12 A13; A12 A13
40/124; Vdd Vdd; Vdd Vdd; Vdd Vdd
41/125; Vdd Zarez.; Vdd Zarez.; Vdd Zarez.
42/126; Zarezer. Zarezer.; Zarezer. Zarezer.; Zarezer. Zarezer.
43/127; Vss Vss; Vss Vss; Vss Vss
44/128; -OE2 Zarezer.; -OE2 Zarezer.; ~OE2 Zarezer.
45/129; -RAS2 -RAS3; -RAS2 -RAS3; -RAS2 -RAS3
46/130; -CAS2 -CAS6; -CAS2 -CAS6; -CAS2 -CAS6
47/131; -CAS3 -CAS7; -CAS3 -CAS7; -CAS3 -CAS7
48/132; -WE2 Zarez.; -WE2 Zarez.; -WE2 Zarez.
49/133; Vdd Vdd; Vdd Vdd; Vdd Vdd
50/134; Puste Puste; Puste Puste; CB10 CB14
51/135; Puste Puste; Puste Puste; CB11 CB15
52/136; Puste Puste; CB2 CB6; CB2 CB6
53/137; Puste Puste; CB3 CB7; CB3 CB7
54/138; Vss Vss; Vss Vss; Vss Vss
55/139; DQ16 DQ48; DQ16 DQ48; DQ16 DQ48
56/140; DQ17 DQ49; DQ17 DQ49; DQ17 DQ49
57/141; DQ18 DQ50; DQ18 DQ50; DQ18 DQ50
58/142; DQ19 DQ51; DQ19 DQ51; DQ19 DQ11
59/143; Vdd Vdd; Vdd Vdd; Vdd Vdd
60/144; DQ20 DQ52; DQ20 DQ52; DQ20 DQ52
61/145; Puste Puste; Puste Puste; Puste Puste
62/146; Zarez. Zarez.; Zarez. Zarez.; Zarez. Zarez.
63/147; Puste Puste; Puste Puste; Puste Puste
64/148; Vss Vss; Vss Vss; Vss Vss
65/149; DQ21 DQ53; DQ21 DQ53; DQ21 DQ53
66/150; DQ22 DQ54; DQ22 DQ54; DQ22 DQ54
67/151; DQ23 DQ55; DQ23 DQ55; DQ23 DQ55
68/152; Vss Vss; Vss Vss; Vss Vss
69/153; DQ24 DQ56; DQ24 DQ56; DQ24 DQ56
70/154; DQ25 DQ57; DQ25 DQ57; DQ24 DQ57
71/155; DQ26 DQ58; DQ26 DQ58; DQ26 DQ58
72/156; DQ27 DQ59; DQ27 DQ59; DQ27 DQ59
73/157; Vdd Vdd; Vdd Vdd; Vdd Vdd
74/158; DQ28 DQ60; DQ28 DQ60; DQ28 DQ60
75/159; DQ20 DQ61; DQ29 DQ61; DQ29 DQ61
76/160; DQ30 DQ62; DQ30 DQ62; DQ30 DQ62
77/161; DQ31 DQ63; DQ31 DQ63; DQ31 DQ63
78/162; Vss Vss; Vss Vss; Vss Vss
79/163; Puste Puste; Puste Puste; Puste Puste
80/164; Puste Puste; Puste Puste; Puste Puste
81/165; Puste SA0; Puste SA0; Puste SA0
82/166; SDA SA1; SDA SA1; SDA SA1
83/167; SCL SA2; SCL SA2; SCL SA2
84/168; Vdd Vdd; Vdd Vdd; Vdd Vdd
Tabela 3.15.
Sygnały doprowadzone do niebuforowanego modułu DIMM DRAM
Sygnał Znaczenie Wejście/Wyjście Liczba
DQ0 - DQ63 Data Input/Data Output Wejście/Wyjście 64
A0 - A13 Address Wejście 14
-RAS0 - -RAS3 Rów Address Strobe Wejście 4
-CAS0 - -CAS7 Column Address Strobe Wejście 8
~WE0, ~WE2 Read/Write Wejście 2
~OE0, ~OE2 Output Enable Wejście 2
SDA, SCL, SAO-SA2 Serial Presence Detect Wejście (SDA: Wejście/Wyjście) 5
Vdd +3,3V (+5V) Power 17
Vss GND Power 18
CB0 - CB15 Parity Check Bit Wejście/Wyjście 16
Końcówki puste 9
Zarezerwowane 9
Niebuforowane DIMM SDRAM
W formie DIMM wytwarzane są również moduły pamięciowe SDRAM. Poszczególne sygnały można połączyć w następujące logiczne grupy zestawione w tabeli 3.16.
Tabela 3.16.
Sygnały doprowadzone do niebuforowanego modułu DIMM DRAM
Sygnał; Znaczenie; Wejście/Wyjście; Liczba
DQ0-DQ63, CB0-CB15; Data Input / Data Output; Wejście/Wyjście; 80
A0 - A13, BA0-BA1; Address; Wejście; 16
~S0-~S3,~RAS, ~CAS, ~WE, CK0-CK3, CKE0-CKE1, DQMBO - DQMB7; Control; Wejście; 21
SDA, SCL, SA0 - SA2; Serial Presence Detect; Wejście; (SDA: Wejście/Wyjście); 5
WP; Write Protect (SPD EEPROM); Wejście; 1
Vdd; +3,3V (+5V); Zasilanie; 17
Vss; GND; Zasilanie; 18
Vref; Reference Voltage; Wejście; 2;
Końcówki puste i zarezerwowane; 8
Topologia listwy kontaktowej modułów DIMM zawierających kostki SDRAM jest inna niż DIMM grupujących układy DRAM. Różnice wynikają z odmiennej organizacji tych typów pamięci. Istnieje grupa sygnałów, która występujące wyłącznie w SDRAM i nie ma swych odpowiedników w technice DRAM. Oto główne cechy charakterystyczne modułów SDRAM:
- Moduł SDRAM wyprowadza po jednej linii -RAS i ~CAS. Moduły DRAM mają po kilka sygnałów -RAS i ~CAS wspólnych dla pewnych grup chipów pamięci.
- Charakterystyczny dla modułów SDRAM jest sygnał DQMB maskujący wyjście. Dla każdych 8 bitów szyny danych przypada jeden taki sygnał co pozwala na przesłanianie pojedynczych bajtów.
- Cztery wejścia sygnałów zegarowych CKO - CK3 (oznaczane też często jako CLK0 - CLK3) modułów SDRAM współpracują z dwoma sygnałami otwierającymi bramki wejściowe dla tych impulsów (CKE0 i CKE1). Linia CKE0 wyprowadzane jest we wszystkich typach modułów SDRAM, natomiast końcówka CKE1 we wszystkich modułach dwubankowych oraz w modułach jednobanko-wych o obsadzie przekraczającej 10 kostek na bank. Liczba wyprowadzanych wejść CK zależna jest od liczby chipów pamięci na płytce. Generalna zasada mówi, że CKO używane jest zawsze, CK1 powyżej 5 kostek SDRAM, a CK2 i CK3 powyżej 10 chipów. Wejścia niewykorzystywane zakończone są układem sztucznego obciążenia (szeregowy dwójnik RC) symulującego obecność 4-5 linii.
Tabela 3.12.
Pola kontaktowe buforowanego modułu DIMM DRAM
Styk:Przód,Tył; 8B(x64):Przód-Tył; 8B+1bECCB (x72):Przód-Tył; 8B+2bECCB (x80):Przód-Tył
1/85; Vss Vss; Vss Vss; Vss Vss
2/86; DQ0 DQ32; DQ0 DQ32; DQ0 DQ32
3/87; DQ1 DQ33; DQ1 DQ33; DQ1 DQ33
4/88; DQ2 DQ34; DQ2 DQ34; DQ2 DQ34
5/89; DQ3 DQ35; DQ3 DQ35; DQ3 DQ35
6/90; Vdd Vdd; Vdd Vdd; Vdd Vdd
7/91; DQ4 DQ36; DQ4 DQ36; DQ4 DQ36
8/92; DQ5 DQ37; DQ5 DQ37; DQ5 DQ37
9/93; DQ6 DQ38; DQ6 DQ38; DQ6 DQ38
10/94; DQ7 DQ39; DQ7 DQ39; DQ7 DQ30
11/95; DQ8 DQ40; DQ8 DQ40; DQ8 DQ40
12/96; Vss Vss; Vss Vss; Vss Vss
13/97; DQ9 DQ41; DQ9 DQ41; DQ9 DQ41
14/98; DQ10 DQ42; DQ10 DQ42; DQ10 DQ42
15/99; DQ11 DQ43; DQ11 DQ43; DQ11 DQ43
16/100; DQ12 DQ44; DQ12 DQ44; DQ12 DQ44
17/101; DQ13 DQ45; DQ 13 DQ45; DQI3 DQ45
18/102; Vdd Vdd; Vdd Vdd; Vdd Vdd
19/103; DQ14 DQ46; DQ14 DQ46; DQ14 DQ46
20/104; DQ15 DQ47; DQ15 D047; DQ15 DQ47
21/105; Puste Puste; CB0 CB4; CB0 CB4
22/106; Puste Puste; CB1 CB5; CB1 CB5
23/107; Vss Vss; Vss Vss; Vss Vss
24/108; Puste Puste; Puste Puste; CB8 CB12
25/109; Puste Puste; Puste Puste; CB9 CB13
26/110; Vdd Vdd; Vdd Vdd; Vdd Vdd
27/111; ~WE ~CAS; ~WE ~CAS; ~WE ~CAS.
28/112; DQMB0 DQMB4; DQMB0 DQMB4; DQMB0 DQMB4
29/113; DQMB1 DQMB5; DQMB1 DQMB5; DQMB1 DQMB5
30/114; ~Ś0 ~Ś1; ~Ś0 ~Ś1; ~Ś0 ~Ś1
31/115; Zarez. ~RAS; Zarez. ~RAS; Zarez. ~RAS
32/116; Vss Vss; Vss Vss; Vss Vss
33/117; A0 A1; A0 A1; A0 A1
34/118; A2 A3; A2 A3; A2 A3
35/119; A4 A5; A4 A5; A4 A5
36/120; A6 A7; A6 A7; A6 A7
37/121; A8 A9; A8 A9; A8 A9
38/122; A10/AP BA0; A10/AP BA0; A10/AP BA0
39/123; BA1 A11; BA1 A11; BA1 A11
40/124; Vdd Vdd; Vdd Vdd; Vdd Vdd
41/125; Vdd CK1; Vdd CK1; Vdd CK1
42/126; CK1 A12; CK1 A12; CK1 A12
43/127; Vss Vss; Vss Vss; Vss Vss
44/128; Puste CKE0; Puste CKE0; Puste CKE0
45/129; S2 S3; S2 S3; S2 S3
46/130; DQMB2 DQMB6; DQMB2 DQMB6; DQMB2 DQMB6 47/131; DQMB3 DQMB7; DQMB3 DQMB; DQMB3 DQMB7
48/132; Puste A13; -WE2 A13; -WE2 A13
49/133; Vdd Vdd; Vdd Vdd; Vdd Vdd 50/134; Puste Puste; Puste Puste; CB10 CB14 51/135; Puste Puste; Puste Puste; CB11 CB15 52/136; Puste Puste; CB2 CB6; CB2 CB6 53/137; Puste Puste; CB3 CB7; CB3 CB7 54/138; Vss Vss; Vss Vss; Vss Vss
55/139; DQ16 DQ48; DQ16 DQ48; DQ16 DQ48 56/140; DQ17 DQ49; DQ17 DQ49; DQ17 DQ49 57/141; DQ18 DQ50; DQ18 DQ50; DQ18 DQ50 58/142; DQ19 DQ51; DQ19 DQ51; DQ19 DQ51 59/143; Vdd Vdd; Vdd Vdd; Vdd Vdd 60/144; DQ20 DQ52; DQ20 DQ52; DQ20 DQ52
61/145; Puste Puste; Puste Puste; Puste Puste 62/146; Vref Vref; Vref Vref; Vref Vref. 63/147; CKE1 Puste; CKE1 Puste; CKE1 Puste 64/148; Vss Vss; Vss Vss; Vss Vss 65/149; DQ21 DQ53; DQ21 DQ53; DQ21 DQ53 66/150; DQ22 DQ54; DQ22 DQ54; DQ22 DQ54 67/151; DQ23 DQ55; DQ23 DQ55; DQ23 DQ55 68/152; Vss Vss; Vss Vss; Vss Vss
69/153; DQ24 DQ56; DQ24 DQ56; DQ24 DQ56 70/154; DQ25 DQ57; DQ25 DQ57; DQ24 DQ57 71/155; DQ26 DQ58; DQ26 DQ58; DQ26 DQ58 72/156; DQ27 DQ59; DQ27 DQ59; DQ27 DQ59 73/157; Vdd Vdd; Vdd Vdd; Vdd Vdd 74/158; DQ28 DQ60; DQ28 DQ60; DQ28 DQ60 75/159; DQ20 DQ61; DQ29 DQ61; DQ29 DQ61 76/160; DQ30 DQ62; DQ30 DQ62; DQ30 DQ62 77/161; DQ31 DQ63; DQ31 DQ63; DQ31 DQ63 78/162; Vss Vss; Vss Vss; Vss Vss
79/163; CK2 CK1; CK2 CK3 CK2 CK3 80/164; Puste Puste; Puste Puste; Puste Puste 81/165; WP SA0; WP SA0; WP SA0 82/166; SDA SA1; SDA SA1; SDA SA1 83/167; SCL SA2; SCL SA2; SCL SA2 84/168; Vdd Vdd; Vdd Vdd; Vdd Vdd
- Moduły SDRAM implementujące bity kontrolne (ECC lub parzystość) posiadają dodatkowe końcówki oznaczane jako CB (Control Bits). W konfiguracji x72 mamy CB0 - CB7 a w konfiguracji x80 (po dwa bity kontrolne na bajt danych) ponadto CB8-CB15.
- W modułach SDRAM wyprowadzane są końcówki ~CS0 - ~CS3 (Chip Select, często oznaczane jako ~S0 - ~S3). Moduły dwubankowe mają aktywne linie ~CS0 i ~CS2 a czterobankowe wszystkie linie ~CS.
- Dwa sygnały V#REF przeznaczone są do późniejszego wykorzystania w momencie upowszechnienia się interfejsu SSTL. W przypadku wyprowadzeń zgodnych z poziomami LVTTL są one zbędne i nieaktywne (MC).
Przyporządkowanie poszczególnych sygnałów do 168-końcówkowej listwy kontaktowej zależy od szerokości magistrali danych (x64, x72 lub x80) i przedstawione zostało w tabeli 3.17.
Sumaryczna liczba linii adresowych w omawianych tu modułach wynosi 16. Składają się na nie końcówki A0 - A13 oraz dwa wejścia (~BA0 i ~BA1) wybierające bank (oznaczane często jako ~BS0 i ~BS1). Linie A0 - A9 używane są zawsze. Linia A10 ma podwójne znaczenie: w fazie podawania adresu wiersza jest elementem adresu natomiast w fazie przekazywania adresu kolumny pełni rolę wskaźnika automatycznego odświeżania AP (Auto Precharge). Końcówki A11 - A13 wyprowadzane są zależnie od konieczności, tj. jeśli wymagane to jest ze względu na pojemność i organizację modułu. O ile zarówno BA0 jak i BA1 stanowią nieodzowny fragment adresu, BA0 używane jest zawsze a funkcje sterujące związane z BA1 pojawiają się dopiero w modułach czterobankowych.
Wszystkie odpowiadające sobie linie adresowe AO - A10 chipów pamięci łączone są równolegle i wyprowadzane do końcówek modułu o tym samym oznaczeniu. Przyporządkowanie sygnałów BA0 - BA1 oraz A11 - A13 odbywa się w zależności od konfiguracji modułu (tj. ilości t organizacji użytych kostek pamięciowych). W tabeli 3.18 zestawiono kilka typowych przykładów.
Dla lepszego zrozumienia omawianego tematu przedstawimy w tym miejscu schemat połączeń wewnętrznych typowego modułu DIMM SDRAM w systemie odpowiadającym ostatniemu z wierszy powyższej tabeli. Wybrany został układ w konfiguracji x64, czyli bez dodatkowych bitów kontrolnych (rysunek 3.20). Pojemność całkowita wynosi 128 MB.
W skład modułu wchodzi 16 kostek 16 Mb o organizacji 2Mx8x4 (np. TMS664814 firmy Texas Instruments). Chipy pamięci mają po 4 banki i po 14 końcówek adresowych: AO - A9, A10/AP, A12/BA1, A13/BAO. Moduł taki adresuje się w konwencji 12/9 - 12 bitów na adres wiersza i 9 bitów na adres kolumny. Wybór jednego z czterech banków ma miejsce za pomocą 2 bitów BAO i BA1 Sumaryczna liczba wykorzystywanych tu bitów adresowych wynosi więc 23 (tabela 3.19).
Tabela 3.18.
Przyporządkowanie sygnałów w przykładowych modułach pamięci DIMM SDRAM
1.Organizacja modułu; 2.SDRAM; 3.Przyporządkowanie końcówek:a) Chip SDRAM ,b)Złącze DIMM
1. 16 MB, dwubankowa; 2.8 kostek po 16 Mb (org. 1 Mx 16) w układzie dwurzędowym
3a. A0-A10, A11 (BA0), NU, NU, NU;
3b. AO-A10, BAO, BA1, A11, AI2;
1. 32 MB, czterobankowa; 2.4 kostki po 64 Mb (org. 4Mxl6) w układzie jednorzędowym
3a. A0-A10, A11, A13(BA0), A12(BA1), NU;
3b. A0-A10, A11, BA0, BA1, A12;
1. 16 MB, czterobankowa;
2. 2 kostki po 64 Mb (org. 2Mx32) w układzie jednorzędowym;
3a. A0-A10, A12(BA0), All(BAl); NU; NU;
3b. A0-A10, BA0, BA1, A11, A12.
1. 128MB,czterobankowa; 16 kostek po 32 Mb (org. 8 Mx 8) w układzie dwurzędowym
3a. A0-A10, A11, A13(BA0), A12(BA1), NU;
3b. A0-A10, A11, BA0, BA1, A12;
Tabela 3.19.
Znaczenie końcówek adresowych
Adres; Końcówki; Liczba bitów;
Wiersza; A0-A11; 12;
Kolumny; A0-A8; 9;
Bank; BA0-BA1; 2;
W ten sposób adresowanych jest 8M słów 8bajtowych (2^23). Ponieważ omawiany moduł jest dwurzędowy (końcówki I/O łączone są równolegle po dwie) wybór strony podejmowany jest przy pomocy dodatkowych sygnałów ~S0 - ~S3. W sumie dostępnych jest 2x8 M słów 8 bajtowych, czyli 128 MB.
Rozpoznawanie modułu DIMM
Specyfikacja modułów DIMM przewiduje obecność małej pamięci lokalnej SPD (Serial Presence Detecf) przechowującej informacje na temat organizacji wewnętrznej modułu. SPD to kostka pamięci stałej EEPROM o pojemności 2 kb (256 bajtów) programowana przez wytwórcę modułu.
Dla potrzeb pełnej identyfikacji modułów DIMM z obsadą DRAM zdefiniowany został co prawda system na bazie SPD ale w praktyce nie był wykorzystywany. Wmontowane w BIOS procedury rozpoznawania pamięci doprowadzone zostały do takiej perfekcji, że można się było obejść bez SPD.
Inaczej jest w przypadku modułów z pamięciami SDRAM. Już samo pobudzenie ich do pracy musi być poprzedzone przez właściwie dobraną fazę programowania. W tym celu potrzeba dokładnych informacji o strukturze wewnętrznej i organizacji. Do tego momentu BIOS nie jest w stanie przeprowadzić żadnych testów rozpoznawczych ani procedur kontrolnych.
Przegląd zawartości SPD przedstawiony jest w tabeli 3.20.
Tabela 3.20.
Zawartość pamięci SPD
Bajt; Funkcja;
0; Liczba bajtów zapisanych do pamięci 0x80h, co odpowiada 128 bajtom. SPD przez producenta modułu, wartość typowa to
1; Rozmiar całkowity pamięci EEPROM , wartość typowa 0x08h co odpowiada 256 bajtom.
2; Kod typu pamięci (Fundamental Memory Type), dla SDRAM kod wynosi 0x04h.
3; Udział składnika Row w organizacja adresu (Number ofRow Addresses), typowy rozkład składników wyraża się liczbami 12/9, wówczas bajt 3 zawiera 0x0Ch (12dec) a bajt 4 0x09h (9dec).
4; Udział składnika Cohimn w organizacji adresu (Number ofColumn addresses).
5; Fizyczna liczba rzędów modułu (Number of Module Rows). zapisywana jest wartość bezpośrednia (0 - 255). typowe wartości to l lub 2.
6-7; Szerokość magistrali danych (Data Width) w układzie LSB/MSB, dla szerokości 64 bitów zawartość bajtów 6 i 7 wynosi odpowiednio 0x40h i 0x00h.
8; Kod parametrów złącza I/O (Yoltage Interface Standard), typowa wartość to 0x01 h odpowiada złączu LVTTL.
9; Minimalny czas cyklu pamięci SDRAM w odniesieniu do maksymalnej wartości opóźnienia CL (CAS Latency. CL = X) określonego w bajcie numer 18 (SDRAM Cycle Time at Max. Supported CAS Latency). zakodować można wartości z przedziału l - 15,9 ns z dokładnością do 0.1 ns.
10; Maksymalna częstotliwość zegara w cyklach odczytu TAC (SDRAM Accessfrom Clock) dla CL = X. kodowany jest okres tej częstotliwości jako wartość z przedziału 1-15.9 ns z dokładnością do 0.1 ns. Wartość typowa dla modułów wysokiej klasy (PC-100) wynosi 6 ns. a dla pozostałych 7 ns. Sens fizyczny tego parametru ma kluczowe znaczenie w cyklach odczytu Burst. SDRAM rozpoczyna wyprowadzanie danych zgodnie z zaprogramowaną wartością CL (po 2 lub 3 cyklach zegarowych). Moment, w którym gwarantuje się ważność danych leży w odległości TAC od ostatniego poprzedzającego dodatniego zbocza CLK.
11; Właściwości korekcji i detekcji błędów modułu (Configuration Type). możliwe wartości to 0x00h (Non-parity)', 0x01h (Parity) i 0x02h (ECC).
12; Parametry i typ systemu odświeżania (Refresh Rate/Type). jedna z możliwych wartości to 0x00h co odpowiada standardowemu odświeżaniu w cyklu 15.625 us.
13; Szerokość szyny danych pojedynczego układu pamięci modułu (SDRAM Width Primary SDRAM). odnosi się do chipów danych a nie ECC lub parzystości. Typowe wartości to 0x04h (x4). 0x08h (x8) itd.
14; Szerokość szyny danych pojedynczego układu pamięci modułu przechowującego bity parzystości lub ECC (ERROR Checking SDRAM Data Width)
15; Opóźnienie zegara w losowych cyklach dostępu do kolumn (Minimum Clock Delay by Back-to-Back Rundom Column Address), typowa wartość to 0x01 h (l cykl zegarowy).
16; Długości cykli Burst oferowanych przez moduł (Burst Lengths Supported). ustawienie bitu 7 sygnalizuje możliwość Burstu o wymiarze całego wiersza (Page Burst). bit 3 reprezentuje Burst 8, bit 2 Burst 4. bit l oznacza Burst 2 a ustawienie bitu O odnosi się do Burstu pojedynczego. Typowa zawartość bajtu 16 SPD to OxOFh (Bursty 1. 2. 4 i 8).
17; Liczba banków pojedynczych chipów pamięci (Number of Banks on each SDRAM Device). zakres wartość obejmuje przedział l -255 przy czym w typowej konfiguracji spotyka się 1. 2 lub 4.
18; Wskaźnik możliwych wartości CL (CAS Latencies Supported). Jeżeli ustawiony jest bit 7. kolejne pozycje binarne informując CL w wymiarze wykładnika pozycji plus l, np. ustawienie bitu 3 oznacza CL = 4 a ustawienie bitu 0 to CL = 1. Jeżeli bit 7 jest wyzerowany CL = 0. a pozostałe pozycje binarne są ignorowane. Standardowe moduły SDRAM realizują CL = 2 i CL = 3. wtedy zawartość bajtu 18 ustalana jest na 0x06h.
19; Wskaźnik możliwych wartości CSL (CS Latencies Supported). Kolejne pozycje binarne informują o CL w wymiarze wykładnika pozycji . np. ustawienie bitu 3 oznacza CSL = 3. a ustawienie bitu 1 to CSL = 1. Wartość typowa to 0x01 (odpowiada CSL = 0)
20; Wskaźnik możliwych wartości opóźnienia przy zapisie (Write Latencies Supported). interpretacja taka jak dla bajtu 19. standardowo 0x01 h.
21; Informacja o dodatkowych właściwościach modułu (SDRAM Module Attribittes) takich jak np. buforowanie wejść końcówek adresowych i sterujących.
22; Informacja o dodatkowych właściwościach chipów pamięcio (General SDRAM Device Attributes), np. zakres tolerancji napięcia zasilającego.
23; Minimalny okres zegara taktującego dla CL = X - 1 (Minimum Clock Cvcle Time atCL=X-1)
24; Maksymalny czas dostępu dla CL = X - 1 (Mcaimum Data Access Time from Clock atCL=X-1)
25; Minimalny okres zegara taktującego dla CL = X - 2 (Minimum Clock Cycle Time at CL=X - 2). wartość nie ma sensu dla typowych modułów dopuszczających CL = 2 lub CL = 3 bowiem CLX - 2 = 1. co nie jest możliwe. Zawartość bajtu 25 wynosi 0x00h.
26; Maksymalny czas dostępu dla CL = X - 2 (Maximum Data Access Time from Clock at CL=X - 2), interpretacja tak jak dla bajtu 25.
27; Minimalny czas potrzebny na aktywowanie wiersza TRP (Minimum Rów Precharge Time). zapisywana jest wartość bezpośrednia w ns. możliwy zakres 0 - 255.
28; Minimalny czas potrzebny na przeskok z aktywacji jednego do innego wiersza (Minimum Ro\v-Active-fo-Row-Acfive Delay). kodowanie tak jak w bajcie 27.
29; Opóźnienie konieczne pomiędzy aktywowaniem RAS i CAS TRCD (Minimum RAS-to-CAS Delay). kodowanie tak jak w bajcie 27.
30; Minimalna szerokość impulsu sygnału RAS TRAS (Minimum RAS Pulse Widtli). kodowanie tak jak w bajcie 27.
31; Rozmiar pojedynczego banku modułu (Module Bank Density).
32; Określenie położenia na osi czasu sygnałów sterujących i adresowych w odniesieniu do narastającego zbocza impulsu zegarowego (Command and Address Signal Input Setup Time). System kodowania umożliwia zapisanie zarówno wartości dodatnich jak i ujemnych.
33; Czas utrzymywania poziomów sygnałów sterujących i adresowych w odniesieniu do narastającego zbocza impulsu zegarowego (Command and Address Signal Input Hołd Time).
34-35; Wartości analogiczne do określanych w bajtach 32 i 33 ale dla linii magistrali danych (Data Signal Input Setup Time i Data Signal Hold Time).
36-61; Zakres przeznaczony do późniejszego wykorzystania (Superset Features).
62; Numer wersji specyfikacji SPD (SPD Revision Designator). aktualnie 0x1 2h odpowiada wersji 1.2.
63; Suma kontrolna dla bajtów 0 - 62.
64-71; Identyfikator producenta przydzielany przez komitet normalizacyjny JEDEC (JEDEC ID).
72; Kod lokalizacyjny dla danej wytwórni.
73 - 90; Numer artykułu z katalogu wytwórcy (Manufacturer 's Fart Nitmber).
91-92; Kod wersji (Revision Code).
93-94; Data wykonania.
95-98; Numer seryjny montażu.
99-125; Pole informacyjne zarezerwowane dla producenta modułu.
126-255; Pole informacyjne zarezerwowane dla integratorów systemów.
Systemy oznaczeń układów
Układy pamięci wytwarzane są obecnie przez stosunkowo szerokie grono producentów. Prognozy rozwoju rynku komputerowego nie przewidują nasycenia w tej dziedzinie, gdyż zapotrzebowanie na pamięć wydaje się nie mieć granic. Nowe i coraz to potężniejsze procesory generują rosnący popyt na pamięć a rozmiary programów dawno już przestały być optymalizowane pod kątem zajmowanej przestrzeni. Zbyt optymistyczne szacowania niektórych potentatów wywołały jednak powracający co pewien czas problem nadprodukcji, huśtawek cenowych i konieczność zamykania (choćby jedynie czasowego) części linii produkcyjnych.
W chwili obecnej rynek podzielony jest pomiędzy następujących wytwórców: Fujitsu, Goldstar (LGS), Hitachi, Hyundai, IBM, Micron, Mitsubishi, Mosel Yitelic, NEC, OKI, Samsung, Siemens, Teksas Instrument (TI) i Toshiba. Z branży wycofała się Motorola, ale wyprodukowane przez nią układy pozostają nadal w obiegu. Zdecydowana większość producentów trzyma się w miarę jednolitego systemu oznaczeń składającego się z przedrostka identyfikującego wytwórcę oraz kilku następujących po nim cyfr. Wyjątek stanowią produkty firm Samsung i Micron.
Układy DRAM
Tabela 3.21.
Wykaz prefiksów oznaczeń ukladów pamięci DRAM
Producent; Oznaczenie: Pamięć FPM, Pamięć EDO;
Goldstar 5 V; GM71C(S)xxxx0, GM71C(S)xxxx3;
Goldstar 3,3 V; GM71V(S)xxxx0, GM71V(S)xxxx3;
Goldstar2,35V; GM71VLxxxx0, GM71VLxxxx3;
Tabela 3.21.
Wykaz prefiksów oznaczeń układów pamięci DRAM (ciąg dalszy)
Producent; Oznaczenie: Pamięć FPM, Pamięć EDO
Hitachi; HM51 xxxx0, HM51 xxxx5
Hyundai; HY51 xxxx0, HY51 xxxx4
HY53 1000*, HY51 xxxx4
IBM; IBM01xxxx0, IBM01xxxx5
Mitsubishi; M5M4 xxxx, M5M4xxxx5
Mosel Vitelic 5 V; V53C3 xxxx, V53C3 xxxx
Mosel Vitelic 3,3 V; V53C5 xxxx, V53C5 xxxx
NEC; mPD42(S) xxxx 0, mPD42(S) xxxx
Oki 5 V; MSM51 xxxx 0, MSM51 xxxx 5
Oki 3,3 V; MSM51 Vxxxx0, MSM51 Vxxxx5
Siemens 3,3 V; HYB31 xxx 0,1, HYB31 xxx 5
Siemens 5 V; HYB51 xxx 0,1, HYB51 xxx 5
Texas Instrument 3,3 V; TMS42 xxxx 0, TMS42 xxxx 9
Texas Instrument 5 V; TMS41 xxxx0, TMS41 xxxx9
Toshiba; TC5 1 xxxx 0, TC5 1 xxxx 5
* Kostki IMb w organizacji lMxl
Znaki xxx lub xxxx (grupa trzy lub czterocyfrowa) reprezentują kod danego układu pamięci. Najczęściej spotykane kombinacje (w systemie jednolitym) zostały zebrane w tabeli 3.22.
Tabela 3.22.
Kody układów pamięci DRAM w systemie jednolitym
Pojemność; Organizacja; Refresh; RAS/CAS; xxx (x);
4 Mb; 4Mxl; 1K; 11(10)/11; 410(0)
4 Mb; 1Mx4; 1K; 10/11; 440(0)
4 Mb; 1Mx4; 1K; 10/10 4xCAS; 446(0)
4 Mb; 512Kx8; 1K; 10/9; 480(0)
4 Mb; 256Kxl6; 512,2CAS, 1WE; 9/9; 426(0)
4 Mb; 256Kxl6; 1K, 1CAS,2WE; 10/8; 417(0)
4 Mb; 256Kxl6; 1K, 2CAS; -; 416(0)
4 Mb; 256Kxl6; 512,2WE; -; 427(0)
16 Mb; 16Mxl; 4K; -; (1)610
16 Mb; 16Mxl; 2K; 12(11)712; (1)710
16 Mb; 4Mx4; 4K; 12/10; (1)640
16 Mb; 4Mx4; 4K; 12/10, 4CAS; (1)641
16 Mb; 4Mx4; 2K; 11/11; (1)740
16 Mb; 2Mx8; 4K; 12/9; (1)680
16 Mb; 2Mx8; 2K; 11/10; (1)780
16 Mb; !Mxl6; 4K; 12/8; (1)616
16 Mb; !Mxl6;; 1K; 10/10; (1)816
64 Mb; 16Mx4; 8K; 13/11; 6440
64 Mb; 16Mx4; 4K; 12/12; 6540
64 Mb; 8Mx8; 8K 13/11;; 6480
64 Mb; 8Mx8; 4K 12/11;; 6580
64 Mb; 4Mxl6; 8K, 2CAS, 1WE; 13/9; 6416
64 Mb; 4Mxl6; 8K, 1CAS, 2 WE; 13/11; 6417
64 Mb; 4Mxl6; 4K, 2CAS, 1WE; 12/10; 6516
64 Mb; 4Mxl6; 4K, 1CAS, 2WE; 12/10; 6517
64 Mb; 4Mxl6; 2K; -; 6616
64 Mb; 2Mx32; 4K, 2CAS; -; 6532
64 Mb; 2Mx32; 4K, 2WE; -; 6533
64 Mb; 2Mx32; 4K, 4CAS; -; 6534
128 Mb; 16Mx8; 8K; -; 1280
128 Mb; 16Mx8; 4K; -; 1380
Wyjątki
Mniej lub bardziej odmienny od standardu system oznaczeń stosowany jest przez firmy Samsung oraz Micron.
[System oznaczeń firmy Samsung
Układy firmy Samsung oznaczane są zgodnie ze schematem: KM 4 AA B CC D EE F G H - I JJ
Tabela 3.23.
Znaczenie pól w oznaczeniu układów pamięci DRAM firmy Samsung
Pole; Opis;
KM; Sygnatura firmy Samsung
4; Sygnatura DRAM
AA; Organizacja: 1 = x1 bit, 4 = x4 bity, 8 = x8 bitów , 16 = x16 bitów, 32 = x32 bity
B; Napięcie zasilania: C = 5,0 V, V = 3,3 V, U =3,0 V, Q = 2,5 V
CC; Głębokość: 25 = 256K, 51 = 512K, 4 = 1M , 2 = 2M , 4 = 4M, 8 = 8M, 16 = 16M
D; Odświeżanie: 0 = 1K(4M), 4K(16M), 8K(64M), 1 = 512(4M), 2K(16M) 4K (64M), 2 = 1K(16M)
EE; Typ: 0 = FPM, 3 = FPM,4CAS, 4 =EDO, 5 = EDO,4CAS
F G H - I JJ; Szczegóły nieistotne dla określenia organizacji.
System oznaczeń firmy Micron
Oznaczenie układów pamięci DRAM firmy Micron składa się z przedrostka (MT4LC dla układów zasilanych napięciem 3,3 V lub MT4C dla układów zasilanych napięciem 5 V) i symbolu określającego pojemność i organizację pamięci (tabela 3.24).
Układy SDRAM
System oznaczeń układów pamięci SDRAM nie jest tak jasny i przejrzysty jak ma to miejsce w przypadku układów DRAM. Nawet firmy, które trzymają się z grubsza jednolitego systemu pozwalają sobie na odstępstwa od schematu. Mechanizm oznaczeń składa się z przedrostka (prefiksu) identyfikującego producenta oraz następującego po nim zestawu cyfr i ewentualnie liter (tabela 3.25).
Tabela 3.24.
System oznaczeń układów pamięci DRĄ M firmy Micron
Pojemność; Organizacja; Refresh; RAS/CAS; Oznaczenie: Pamięć FPM, Pamięć EDO
16 Mb; 4Mx4; 4K; 12/10; 4M4A1, 4M4E9
16 Mb; 4Mx4; 2K; 11/11; 4M4B1, 4M4E8
16 Mb; 2Mx8; 2K; 11/10; 2M8B1, 2M8E7
16 Mb; 1Mxl6; 1K; 10/10; 1M16C3, 1M16E5
64 Mb; 16Mx4; 8K; 13/11; 16M4A7, 16M4G3
64 Mb; 16Mx4; 4K; 12/12; 16M4T8, 16M4H9
64 Mb; 8Mx8; 8K; 13/11; 8M8E1, 8M8P4
64 Mb; 8Mx8; 4K; 12/11; 8M8B6, 8M8C2
64 Mb; 4Mxl6; 4K, 2CAS, 1WE; 12/10; 4M16F5, 4M16R6
Tabela 3.25.
Wykaz prefiksów oznaczeń układów pamięci SDRAM
Producent; Oznaczenie; Producent; Oznaczenie
Fujitsu; MB 81 (F)xxxx; NEC; mPD45 xxxx
Goldstar; GM72Y xxxx; Oki; MD56Y xxxx 0
Hitachi; HM52 xxxx; Siemens; HYB39S xxxx
IBM; IBM03(6) xxxx (9,4); Texas Instrument; TMS6 xxxx
Mosel Vitelic; V54C3 xxxx; Toshiba; TC59S(M) xxxx
Organizację układu pamięciowego SDRAM oznacza się zwykle przy pomocy następującego wyrażenia:
XxYxZ
Czynnik X nazywany jest gęstością układu, Y stanowi głębokość a Z informuje o liczbie banków. Wartość iloczynu równa jest oczywiści całkowitej pojemności układu:
- 8Mx4x2 - układ 64 Mb w podwójnym układzie 4 matryc po 8 Mb każda.
- 512K x32(xl) - układ 16 Mb, jeden bank, 32 matryce po 512 Kb.
System jednorodny zbudowany jest wokół schematu: AA BB C
gdzie:
- AA - pojemność układu:
16=16 Mb (wyjątki: TI - 26 zamiast 16 i Fujitsu - 17 zamiast 16),
64 = 64 Mb,
28 =128 Mb,
25 =256 Mb.
- BB - głębokość:
41=x4,
81=x8,
16 = xl6.
- C - liczba banków.
Tabela 3.26.
Kody układów pamięci SDRAM w systemie jednolitym
Pojemność; Organizacja; xxxx;
16 Mb; 4Mx4; 164a*;
16 Mb; 2Mx8; 168a*;
16 Mb; 1Mxl6; 1616a*;
16 Mb; 512Kx32; 1632a*;
64 Mb; 16Mx4; 644a*;
64 Mb; 8Mx8; 648a*;
64 Mb; 4Mxl6; 6416a*;
64 Mb; 2Mx32; 6432a*;
128 Mb; 32Mx4; 284a*;
128 Mb; 16Mx8; 288a*;
128 Mb; 8Mxl6; 2816a*;
256 Mb; 64Mx4; 25640;
256 Mb 32Mx8; 25680;
256 Mb; 16Mxl6; 25616;
256 Mb; 8Mx32; 25632;
*a = 1, 2, 4, 8
Wyjątki
Wspomniane przy okazji omawiania systemu oznaczeń pamięci DRAM wyjątki dotyczą również układów SDRAM (niestety w dużo większym stopniu). Klasycznie od reguły odbiegają Samsung, Mitsubishi i Micron. W przypadku pozostałych producentów można napotkać na różne anomalie, dlatego trudno jest podać jednolity, spójny system. Sytuację pogarsza fakt, iż układy pamięci SDRAM występują w różnorodnych konfiguracjach i odmianach. Liczba banków waha się w przedziale l - 4, odświeżanie może pracować w trybie 2K, 4K, 8K lub 16K a na to jeszcze nakładają się różne mutacje sposobu łamania adresu wiersza i kolumny (Mapping).
System oznaczeń firmy Samsung
Układy firmy Samsung oznaczane są zgodnie ze schematem: KM 4 AA S BB C D E F G H - I JJ
Tabela 3.27.
Znaczenie pól w oznaczeniu układów pamięci SDRAM firmy Samsung
Pole; Opis
KM; Sygnatura firmy Samsung
4; Sygnatura DRAM
AA; Organizacja: 4 = x4 bity, 8 = x8 bitów, 16 = x16 bitów, 32 = x32 bity
S; Sygnatura SDRAM
B; Gęstość: 1 = 1M, 2 = 2M, 4 = 4M, 8 = 8M, 16 = 16M, 32 = 32M, 64 = 64M, 28 = 128M
C; Odświerzanie: 0 = 4K; 1 = 2K, 2 = 8K; 3 - 16K
D; Liczba banków: 2 = 2 banki, 4 = 4 banki
E; Poziomy napięć układów wejścia - wyjścia: 0 = 3,3V LVTTL, 1 = 3,3V SSTL_3, 2 = 2,5V SSTL_2, 3 = 2,5 V LVTTL
F G H - I JJ; Szczegóły nieistotne dla określenia organizacji.
System oznaczeń firmy Mitsubishi
Układy firmy Mitsubishi oznaczane są zgodnie ze schematem:
M xxxx
M jest sygnaturą firmy Mitsubishi, a xxxx zależy od pojemności i organizacji układu pamięci (tabela 3.28).
Tabela 3.28.
System oznaczeń układów pamięci SDRAM firmy Mitsubishi
Pojemność; Organizacja; xxxx;
16 Mb; 4Mx4; 5M4V16S20;
16 Mb; 2Mx8; 5M4Y16S30;
16 Mb; 1Mxl6; 5M4Y16S40;
64 Mb; 16Mx4; 5M4V64S20;
64 Mb; 8Mx8; 5M4V64S30;
64 Mb; 4Mxl6; 5M4V64S40;
128 Mb; 32Mx4; 2V28S20;
128 Mb; 16Mx8; 2V28S30;
128 Mb; 8Mxl6; 2V28S40;
256 Mb; 64Mx4; 2V25S20;
256 Mb; 32Mx8; 2V25S30;
256 Mb; 16Mxl6; 2V25S40;
System oznaczeń firmy Micron
Układy firmy Micron oznaczane są zgodnie ze schematem:
MT48LC xxxx
MT49LC jest sygnaturą układów SDRAM firmy Micron zasilanych napięciem 3,3 V, a xxxx zależy od pojemności i organizacji układu pamięci (tabela 3.29).
Tabela 3.29.
System oznaczeń układów pamięci SDRAM firmy Micron
Pojemność; Organizacja; Refresh; RAS/CAS; Oznaczenie;
16 Mb; 4Mx4, 2 banki; 4K; 11/10; 4M4A1;
16 Mb; 2Mx8, 2 banki; 4K; 11/9; 2M8A1;
16 Mb; 1Mx 16, 2 banki; 4K; 11/8; 1M16A1(2);
64 Mb; 16Mx4, 4 banki; 4K; 12/10; 16M4A2;
64 Mb; 8Mx8, 4 banki; 4K; 12/9; 8M8A2;
64 Mb; 4Mxl6, 4 banki; 4K; 12/8; 4M16A2;
128 Mb; 32Mx4, 4 banki; 4K; 12/11; 32M4A2;
128 Mb; 16Mx8, 4 banki; 4K; 12/10; 16M8A2;
128 Mb; 8Mxl6, 4 banki; 4K; 12/9; 8M16A2;
Odświeżanie
Konieczność odświeżania zawartości komórki pamięci dynamicznej stanowi cechę charakterystyczną wynikającą z istoty jej działania oraz formy realizacji i jest nie do uniknięcia (przynajmniej na obecnym etapie rozwoju technologii). Pojedyncze komórki układu scalonego pamięci zgrupowane są w zespoły prostokątnych matryc o pewnej określonej liczbie wierszy (Rows) i kolumn (Columns). Liczba matryc odpowiada szerokości słowa, które można przechowywać w takim układzie. Każda matryca odpowiada więc jednemu bitowi szyny danych doprowadzonej do układu pamięci. Odpowiadające sobie linie adresowe wierszy i kolumn są wspólne dla wszystkich matryc, tak jak to przedstawiono schematycznie na rysunku 3.21 (kostka pamięci o pojemności 16 Mb w organizacji 4Mx4 - 4M słów 4 bitowych).
Prezentowany układ posiada ponad 16 milionów komórek pamięci. Na szczęście nie trzeba odświeżać każdej z nich oddzielnie. Odświeżanie sprowadza się do pobudzenia (zaadresowania) linii wiersza, przy czym odświeżeniu ulegają wszystkie komórki należące do tego wiersza. Procesy zachodzące podczas takiego pobudzenia nie różnią się niczym od cyklu zapisu lub odczytu, jednak trudno jest liczyć na to by dostęp do pamięci odbywał się według jakiegoś harmonogramu obejmującego wszystkie linie matryc i to w zadanym czasie. Konieczne jest więc wprowadzenia mechanizmu generującego regularnie impulsy odświeżające przebiegające kolejno wszystkie wiersze.
Kolejność pobudzania wierszy macierzy jest obojętna, ważne jest jedynie by wszystkie z nich otrzymały przynależny sobie impuls nie rzadziej niż raz na pewien jasno zdefiniowany okres czasu zwany cyklem odświeżania (Refresh Time). Innymi słowy odstęp dzielący dwa kolejne impulsy (adresowane do tego samego wiersza) nie może być dłuższy od cyklu odświeżania.
Cykl odświeżania współczesnych pamięci dynamicznych waha się od kilku do kilkudziesięciu milisekund i zależy zarówno od rozmiarów jak i od organizacji logicznej (liczby wierszy). W tabeli 3.30 zestawiono kilka typowych wartości.
Tabela 3.30.
Typowe wartości cyklu odświeżania
Pojemność; Organizacja; Liczba kolumn; Cykl;
4Mbit; 256Kxl6; 512; 8 ms;
4Mbit; 4Mxl; 1024 (1K); 16 ms;
lóMbit; 4Mx4; 2046 (2K); 32 ms;
Podział cyklu odświeżania na odcinki czasowe równej wielkości (po jednym dla każdej kolumny) daje w wyniku okres przebiegu zegarowego (Refresh Ratę) wymaganego do spełnienia wymogu czasowego narzuconego przez cykl odświeżania (np. 16 ms / l 024 = 15,6 us). Wartość 15,6 us jest charakterystyczna dla typowych układów pamięci (Standard Refresh). Niektóre wersje specjalne cechują się wydłużonym cyklem odświeżania (Extended Refresh} wynoszącym 125 (is.
Pojedyncze impulsy odświeżające można zgrupować w jeden pakiet (Burst Refresh} lub też rozłożyć równomiernie (Distributed Refresh} w obszarze okna czasowego wyznaczonego przez cykl odświeżania.
Matryce grupujące komórki pamięci połączone ze światem zewnętrznym za pośrednictwem układów pośrednich. Układy te dekodują adresy oraz analizują impulsy sterujące ale nie podejmują odświeżania na własną rękę. System odświeżania pracuje zwykle według harmonogramu narzucanego przez inne elementy architektury komputera (np. system przerwań). Właściwy moment na odświeżanie określany jest więc z punktu widzenia układu pamięciowego przez czynniki zewnętrze a sygnalizacja tego momentu odbywa się przy pomocy pewnej umownej sekwencji impulsów sterujących -RAS i ~CAS.
W praktyce przyjęły się trzy główne metody wyzwalania impulsów odświeżających: RAS (inaczej RAS-Only), CBR (CAS-Before-RAS) oraz ukryty (Hidden). Wszystkie te trzy systemy omówione zostaną pokrótce w dalszej części rozdziału.
RAS Only
Odświeżanie w tym trybie osiąga się przez podanie adresu na wejścia adresowe i aktywowaniu linii ~RAS. Odświeżeniu podlegają wszystkie komórki zaadresowanego wiersza. Jak długo sygnał ~CAS utrzymuje się na poziomie wysokim, sterowniki wyjściowe odcinają układ od magistrali danych poprzez przejście w stan wysokiej impedancji.
Kontroler pamięci sam musi zadbać o to, by w okresie czasu narzuconym przez wymiar cyklu odświeżania wygenerowane zostały (w dowolnej kolejności) wszystkie adresy wierszy. Stan linii adresowych zatrzaskiwany jest w rejestrze w momencie wykrycia opadającego zbocza ~RAS. Następujące po sobie cykle odświeżania w opisywanym tu trybie można oczywiście łączyć w pakiety kluczując linię ~RAS.
IBR (CAS before RAS)
Tryb CBR stosuje się najczęściej ponieważ jest najprostszy w implementacji a ponadto pozwala na oszczędność energii. Jego prostota bierze się z faktu, iż adres aktualnie odświeżanego wiersza generowany jest we wnętrzu samego układu pamięciowego. Sygnałem do wejścia w tryb odświeżania CBR jest wykrycie odwrotnej kolejności adresowych impulsów sterujących: najpierw ~CAS a potem ~RAS. Normalny cykl dostępu do pamięci cechuje się oczywiście inną kolejnością. W pierwszej fazie podawany jest fragment adresu identyfikujący wiersz (i aktywuje się ~RAS) a w fazie drugiej następuje uzupełnienie części odnoszącej się do kolumny w chwili opadnięcia ~CAS.
Linia ~WE musi być utrzymywana w stanie wysokim w momencie opadania sygnału ~RAS. Gwarantuje to separację układu od magistrali danych poprzez utrzymywanie końcówek DQ w stanie wysokiej impedancji. Każda kolejna sekwencja CBR wyzwala cykl odświeżania jakiegoś wiersza. To, który z
wierszy jest aktualnie odświeżany jest mało istotne, użytkownik nie może tego ani stwierdzić
ani zmienić. Układ pamięci posiada wewnętrzny licznik adresowy, który jest inicjowany
pewną wartością losową pojawiającą się w momencie
doprowadzenia zasilania. Kolejne cykle CBR zwiększają stan licznika aż do wartości równej
sumarycznej liczbie wierszy. Nie ma innego sposobu na wyzerowanie licznika niż osiągnięcie
tej właśnie wartości (Wrap Around).
Cykle CBR mogą być łączone w pakiety. Dodatkowe uproszczenie sterowania można osiągnąć dzięki możliwości kluczowania samymi impulsami ~RAS przy aktywnym sygnale ~CAS (po wystąpieniu pierwszej sekwencji CBR).
Odświeżanie w trybie CBR przyczynia się do zmniejszenia zużycia energii, gdyż dzięki wewnętrznej generacji adresu nie pracuje magistrala adresowa i układy z nią związane. System CBR 15,6 us jest domyślnym trybem pracy i implementowany w każdym układzie pamięciowym. Oznacza to, iż niezależnie od rozmiarów i organizacji wewnętrznej, podawanie sekwencji CBR raz na 15,6 fis (lub częściej) zapewnia odświeżenie całej matrycy pamięci.
Warto zwrócić uwagę na prostotę i uniwersalność takiego rozwiązania. Moduły pamięci 16 Mb w organizacji 4Mx4 występują przykładowo w wersji 2K lub 4K. Implementacja trybu RAS-OnLy oznacza konieczność adaptacji licznika adresowego zależnie od organizacji: układy 4K mają dwanaście linii adresowych wiersza, a układy 2K tylko jedenaście. Kontroler musi więc wygenerować 2 048 cykli odświeżania na liniach AO - A11 lub 4 096 cykli na liniach A0 - A10. Problemy tego typu nie występują wcale w systemie opartym o tryb CBR.
Hidden
Tryb odświeżania określany tym mianem oznacza dołączenie cyklu CBR do zwykłego cyklu dostępu (odczytu lub zapisu). Klasyczne wyjście z cyklu dostępu pozostawia adresowe sygnały kluczujące na poziomie niskim:~RAS = ~CAS = 0. W chwilę potem następuje podniesienie sygnału na linii ~RAS i ponowne obniżenie. Przy zachowaniu odpowiednich uzależnień czasowych właściwych dla danego układu, system rozpoznaje sekwencję CBR i dokonuje odświeżania pewnego losowo wybranego wiersza (zgodnie z aktualnym stanem wewnętrznego licznika, ale bynajmniej nie tego, który był właśnie zaadresowany).
Sens "ukrytego" cyklu odświeżania nie polega na jakimkolwiek maskowaniu czasu trwania samego procesu odświeżania - trwa on dokładnie tyle samo, co w przypadku każdego cyklu CBR. Korzyści z pracy w tym trybie można osiągnąć dowiązując sekwencje CBR do cykli odczytu. Układ utrzymuje wówczas dane na końcówkach wyjściowych również w trakcie odbywania CBR. Generacja sekwencji CBR tuż po cyklu odczytu różni się tylko tym, iż magistrala danych przechodzi w stan wysokiej impedancji i układ pamięciowy nie odkłada na niej zawartości komórki adresowanej w pierwszej fazie.
Wykrywanie błędów i ich korekcja
Zjawisko przekazu informacji to proces, który towarzyszył człowiekowi od zarania dziejów. Nie mniej odwieczna była chęć zagwarantowania pewności takiego przekazu. Ważne wiadomości przesyłane były przez kilku kurierów jednocześnie (dziś powiedzielibyśmy o zwiększonej redundancji czyli informacji nadmiarowej), a listy opatrywano mniej lub bardziej wiarygodnymi pieczęciami. Sam fakt potwierdzenia odbioru kwitowało się zwykle przy pomocy zwięzłej formuły typu "OK, wiadomość otrzymana", ale w krytycznych przypadkach stosowano nawet odesłanie oryginału (echo). Mimo opracowywania różnych, coraz to nowocześniejszych metod zabezpieczeń, wymiana danych narażona jest na wpływ wielu szkodliwych czynników, które zakłócają proces. W wyniku działania tych zakłóceń wyemitowana informacja dociera do celu w zmienionej formie (mówi się też o przekłamaniach).
Zjawisko przekłamywania informacji dotyczy nie tylko samego procesu transmisji danych ale i ich magazynowania. Protokoły transmisyjne zabezpieczają się przed mogącymi wystąpić błędami przy pomocy różnorodnych metod. Arsenał stosowanych środków obejmuje zarówno proste sumy kontrolne zabezpieczające pojedyncze słowa jak i rozbudowane kody kontrolne chroniące całe bloki danych.
Informacje zebrane w pamięci operacyjnej komputera są również narażone na przekłamania, chociaż źródła tych zjawisk mają inne pochodzenie niż w przypadku transmisji. Pamięci dynamiczne stosowane w PC nie dają 100-procentowej gwarancji bezpieczeństwa dla przechowywanej informacji. Źródła tych przekłamań dzieli się na dwie grupy określane mianem błędów powtarzalnych (Repeatable Errors, Hard Errors) i błędów sporadycznych (Transient Errors, Soft Errors).
Błędy powtarzalne (HĘ)
Błędy tej grupy odwzorowują trwałe uszkodzenia układów elektronicznych lub połączeń między nimi. Klasycznym przykładem HĘ może być zwarcie w stopniu wyjściowym jednego z buforów magistrali danych. Kostka pamięci wystawia wówczas na uszkodzonej linii (niezależnie od faktycznej zawartości danej lokalizacji pamięci) zawsze ten sam poziom logiczny.
Błędy sporadyczne (SE)
Źródłem błędów tego rodzaju jest promieniowanie jonizacyjne (ALFA,BETA,GAMA ), a w głównej mierze szczątkowe promieniowanie a emitowane przez zanieczyszczenia samej struktury krzemowej oraz materiał izolacyjny obudowy scalonego układu pamięci, a także promieniowanie kosmiczne. Częstotliwość występowania błędów SE określa współczynnik SER (Software Error Ratę). Charakterystyczne jest, iż liczba przekłamań wywołanych przez te czynniki maleje wraz z postępem technologicznym. Pamięć operacyjna l MB praprzodka dzisiejszych komputerów PC zbudowana była z kostek o pojemności jednostkowej 64 kb. Obliczenia szacunkowe prowadzą do wniosku, iż błędy SE pojawiały się wówczas średnio co 120 godzin pracy.
Nowoczesny komputer wyposażony jest w około 128 MB pamięci operacyjnej (DRAM lub SDRAM) ale na bazie kostek co najmniej 16 Mb. Konstrukcja taka podlega wystąpieniom błędów SE średnio raz na 8 lat nieprzerwanej pracy. Powyższe oszacowania pochodzą od jednego z producentów układów pamięci i mają charakter symulacji statystycznej modelowanej w warunkach idealnych. Oczywiście, uwzględnienie wpływu realnego otoczenia i rzeczywistych warunków pracy może dać mniej optymistyczne wyniki. Nie wolno przecież zapominać o rozrzucie technologicznym i niedokładnościach wykonania układów, wpływie podwyższonej temperatury i zawyżanych częstotliwości taktowania a także złej jakości impulsów sterujących powstałych na skutek niedoróbek w układach otoczenia modułów pamięciowych (niestarannie projektowane płyty główne, przesłuchy na ścieżkach, niedostateczna filtracja sygnałów zakłócających na liniach zasilania).
Ocenia się, że współczesny statystyczny PC podlega w warunkach realnych średnio jednemu błędowi SE na rok nieprzerwanej pracy. Wartość taka budzi co prawda zastrzeżenia w odniesieniu do serwerów dużych baz danych ale nie powinna spędzać snu z powiek statystycznemu posiadaczowi komputera w domu lub pracy.
Kontrola parzystości
Kontrola parzystości stanowi prostą technikę umożliwiającą wykrywanie błędów powstających w fazie przesyłania i przechowywanych danych. Z matematycznego punktu widzenia jest to suma modulo 2 tworzona z wszystkich bitów chronionego obiektu (bąjtu, słowa lub większego bloku). Techniczna realizacja takiej sumy sprowadza się do stwierdzenia czy liczba logicznych jedynek w obiekcie jest parzysta czy nieparzysta.
(Kontrola parzystości pracuje w trybie parzystym E (Even) lub nieparzystym O (Odd). Obiekt uzupełniony o bit parzystości typu E ma wówczas zawsze nieparzystą liczbę jedynek (w sumie, tzn. bity danych i bit parzystości) a typu O parzystą.).
Samo badanie jest łatwe do przeprowadzenia przy pomocy prostych, tanich i szybkich układów logicznych a wynik (stanowiący jedno dodatkowe pole bitowe) można łatwo przechowywać lub przesyłać wraz z danymi.
Łatwo zauważyć, iż tak zdefiniowana suma kontrolna gwarantuje wykrywanie wyłącznie nieparzystej liczby błędów. Jednoczesne przekłamania na parzystej liczbie pól bitowych (2, 4,...) pozostają niezauważone. Prawdopodobieństwo wystąpienia wielokrotnych błędów rośnie wraz z rozmiarami obiektów. Kontrola parzystości chroni stosunkowo dobrze pojedyncze bajty danych, gdzie najczęściej występują błędy jednokrotne. Gwarancja bezpieczeństwa w przypadku długich bloków danych drastycznie maleje. Można oczywiście ograniczać rozmiary bloku (nawet do pojedynczego słowa bajtowego, tak jak w przypadku protokołu RS 232) ale wzrasta wtedy ilość dodatkowej informacji, którą trzeba transmitować. Protokoły komunikacyjne wyższej generacji (Y-Modem, Z-Modem) rezygnują z kontroli parzystości pojedynczych bajtów na rzecz ochrony całych bloków danych. W tym przypadku miejsce prostych sum kontrolnych modulo 2 zajmują kody CRC lub ECC (stosowane też w technice zapisu na dyskietkach i dyskach twardych).
Aspekty ekonomiczne i techniczna łatwość realizacji kontroli parzystości sprawiły, że znalazła ona zastosowanie nie tylko w protokole transmisji szeregowej oraz przy ochronie danych przechowywanych w pamięci operacyjnej PC ale i w różnych protokołach transmisyjnych o charakterze równoległym (np. SCSI) a nawet na magistralach wewnętrznych niektórych procesorów.
Mechanizm kontroli parzystości pamięci operacyjnej (na poziomie bajtów) wbudowany został w architekturę PC od samego początku jej powstania i bardzo długo się w niej utrzymywał. Implementacja kontroli parzystości podnosi cenę pamięci operacyjnej o około 10%. Bit parzystości przechowywany jest przecież w dodatkowej (dziewiątej) komórce pamięci, którą trzeba utworzyć i oddać do dyspozycji systemu. Warto jednak zwrócić uwagę, iż komórka ta podatna jest na błędy (SE i HE) w takim samym stopniu jak pozostałe osiem przechowujące właściwe dane. Fakt ten wykorzystywany jest przez przeciwników kontroli parzystości bowiem w gruncie rzeczy pogarsza ona (dokładnie o 12,5%) współczynnik niezawodności systemu. Linie parzystości stanowią ponadto dodatkowe obciążenie dla sterowników pamięci co owocuje ograniczeniem stromości zboczy impulsów. Na koniec wreszcie warto nadmienić, że komórki pamięci przechowujące bity parzystości, czy to na modułach 30-końcówkowych (9 bitów) czy też na 72-
końcówkowych SIMM (36 bitowych) wykonywane są prawie zawsze z układów pamięci starszej generacji niż pozostałe układy. Można tak robić, gdyż przechowują one co najwyżej jedną czwartą informacji w stosunku do chipów danych. W sumie podnosi to znacznie wrażliwość na błędy SE.
Aby nie zostać posądzonym o brak obiektywizmu trzeba też nadmienić o innych badaniach statystycznych. Wieloletnie symulacje komputerowe (przeprowadzane jeszcze w czasach dominacji systemu operacyjnego MS-DOS) wykazały, iż większa część błędów powstałych w pamięci operacyjnej nie odgrywa istotnej roli. Testy polegały na świadomych zmianach stanów bitów losowo wybranych komórek, tak by nie zostały one wykrywane przez kontrolę parzystości. Okazało się, iż prawdopodobieństwo trafienia w czuły punkt (tak, by przynajmniej zapisać na dysk twardy błędną informację) jest niezmiernie małe. Wyniki tych badań nadają całej dyskusji na temat sensu kontroli parzystości dodatkowy czynnik "względności" i oddają nas jeszcze raz w ręce prawa Murphy'go: ten jeden decydujący błąd, który wydarzy się raz jeden na 10 lat przyjdzie na pewno w najmniej odpowiednim momencie.
Rosnąca konkurencja i stale zwiększany nacisk na redukcję kosztów produkcji sprawił, że z wolna rezygnowano z tej pozycji w budżecie PC. W fazie przejściowej produkowano układy z logiczną parzystością, gdzie miejsce prawdziwej komórki pamięci zajmowały bramki logiczne generujące sygnał kontrolny. W programach konfiguracyjnych BIOS pojawiła się opcja umożliwiająca wyłączanie kontroli parzystości i posługiwanie się tańszymi modułami pamięci. Później doszło nawet do tego, że niektóre komputery całkowicie lekceważyły obecność bitów parzystości (nawet jeśli były one fizycznie obecne, a opcja kontroli została aktywowana).
Kontrola ECC
W momencie gdy szerokość magistrali pamięciowej osiągnęła 8 bajtów stało się oczywiste, iż nadszedł czas na wprowadzenie efektywniejszych środków kontrolujących spójność danych. Zadanie to powierzone zostało sumie kontrolnej ECC (Error Correction Code), której właściwości nie ograniczają się wyłącznie do wykrywania błędów, ale (w pewnym ograniczonym zakresie) również do ich korekcji.
64-bitowe moduły z parzystością potrzebowały 8 dodatkowych bitów - tyle również wymagane jest dla zaimplementowania ECC w formie SEC (Single Error Correcf). Propagatorzy modułów z ECC mają ułatwione zadanie z uwagi na obecność silnego czynnika ekonomicznego. Aktualna sytuacja cenowa jest taka, iż moduły z parzystością stają się droższe od swych odpowiedników z ECC. Na parzystość poświęcane były dotychczas specjalne kostki pamięci (inne niż dla danych), w organizacji ...xl lub z czterema końcówkami ~CAS (Qnad-CAS DRAM). Moduły ECC są tak projektowane, by móc wykorzystywać dokładnie te same układy, w których magazynuje się dane.
Warto wiedzieć, że system pracujący pod nadzorem ECC cechuje się zmniejszeniem wydajności (programy testowe wykazują spadek l - 3%). Główne powody tego stanu rzeczy dają się zebrać w dwóch punktach:
- Cykle odczytu. Źródłem opóźnienia są dodatkowe układy logiczne implementujące algorytm obliczający sumy ECC. Obwody te bazują na kaskadowym połączeniu bramek XOR, które nie należą do najszybszych elementów logicznych. W wyniku tego obserwuje się nieco wydłużony czas dostępu. W przełożeniu na wymiar dostępu pakietowego (Bursf) mamy, w przypadku EDO, zamiast x-2-2-2 raczej x-3-3-3.
- Cykle zapisu. Sam układ ECC jako taki nie wprowadza w zasadzie znaczących opóźnień w czasie dostępu do pamięci. Rzeczywiste spowolnienie pracy systemu z aktywnym mechanizmem ECC pojawia się w cyklach zapisu odwołujących się do pojedynczych bajtów lub ogólnie lokalizacji o szerokości poniżej 64 bitów. Dostęp taki nie może być po prostu wykonany i jest blokowany przez kontroler pamięci. Kontrolny bajt ECC obejmuje bowiem swym zasięgiem obszar pełnych 8 bajtów. Jakakolwiek najmniejsza zmiana w obrębie tego obszaru pociąga za sobą konieczność korekcji sumy kontrolnej. Oznacza to, iż cykl zapisu musi być w tym wypadku poprzedzony cyklem odczytu (8 bajtów). Odczytany blok zostaje zmodyfikowany po czym oblicza się nową sumę kontrolną i zapisuje całość. Proces ten określany jest też często mianem RMW (Read-Modify-Write).
Kontrolery pamięci starają się grupować dostępy tego typu w buforach pośrednich (Write Bach Buffers) w nadziei, iż w niedalekiej przyszłości system odwoła się do jakiejś lokalizacji leżącej w obrębie tej samej grupy 8-bajtowej. Klasyczny przykład z tego zakresu to dostęp do pamięci kontrolera dysków elastycznych, który z natury rzeczy przesyła dane w porcjach po 16 bitów.
Układy pamięci magistrali 100 MHz
Taktowanie magistrali pamięciowej zegarem 66 MHz ograniczało od dłuższego czasu możliwości aktualnych systemów. Procesory pracujące z coraz większą częstotliwością tracą część mocy obliczeniowej w oczekiwaniu na dostęp do pamięci. To właśnie dla potrzeb nowych modeli CPU, zarówno linii Pentium II (od 350 MHz) jak i przedstawicieli grupy Socket Super 7 (AMD K6-2 i następne) opracowany został model magistrali kluczowanej zegarem 100 MHz. Pasmo przepustowe takiej szyny sięga teoretycznej wartości maksymalnej równej 800 MB/s.
Nowa szybka magistrala wymaga równie szybkich układów pamięci. Synchroniczne pamięci dynamiczne mogą podołać tym wymogom ale dla ich sprawnego funkcjonowania niezbędne jest dostarczania "czystych" i ostro zarysowanych impulsów o stromych zboczach. Układy pamięci SDRAM grupowane są naturalnie w moduły pamięci typu DIMM i montowane w podstawkach na płycie głównej. Warto zdawać sobie sprawę, iż zagadnienie poprawnej komunikacji szybkich pamięci z procesorem nie ogranicza się wyłącznie do magistral ale sięga również wnętrza samych modułów pamięciowych.
Pamięci synchroniczne wymagają od otaczającego je systemu spełnienia bardzo precyzyjnych reżimów czasowych. Sam moduł ma w najlepszym razie 10 ns na dostarczenie lub odebranie danych. Rozprowadzenie wszystkich sygnałów (sterujących, adresowych
i danych) pomiędzy kilkoma lub kilkunastoma kostkami pamięci nie jest wcale łatwe. Każdy z impulsów musi osiągnąć swój punkt docelowy w tym samym czasie, niezależnie od fizycznej odległości od listwy połączeniowej.
Przy częstotliwościach tego rzędu zaczynają odgrywać rolę zjawiska falowe, przesłuchy między ścieżkami oraz inne szkodliwe czynniki. Wielowarstwowe laminaty stwarzają konieczność skomplikowanej analizy impedancji projektowanego układu. Optymalizacja takich konstrukcji nie jest ani łatwa ani tania i nie każda firma montująca moduły może sobie na nią pozwolić. Wyrównywanie czasu przebiegów osiąga się poprzez szereg skomplikowanych zabiegów polegających na wprowadzaniu dodatkowych impedancji korekcyjnych (w opracowaniach wysokiej klasy) lub świadome spłaszczanie zboczy impulsów uzyskiwane dzięki włączaniu szeregowych rezystancji i dodatkowych pojemności równoległych.
Faktem jest, iż produkty szeregu wytwórców różnią się od siebie w istotnym stopniu. Różnice w głównych parametrach czasowych (Setup-Time, Hold-Time), rozbieżne charakterystyki wzmacniaczy wyjściowych, różna odporność na szumy i zakłócenia oraz zróżnicowane tolerancje napięć zasilających uniemożliwiają montaż uniwersalnych modułów, a każdy projekt musi być dostosowany do konkretnych typów i modeli układów SDRAM.
Z punktu widzenia komputera (i ostatecznie jego użytkownika) ważne jest by moduł pracował stabilnie: dostarczał i odbierał dane w obrębie ostro zarysowanego okna czasowego i prezentował na zewnątrz (mimo odmiennego wnętrza) zestaw jednolitych parametrów. Dla zapewnienia takiej zgodności opracowana została specyfikacja PC-100 definiująca dokładnie zachowanie takiego modułu. PC-100 stanowi zestaw zaleceń i szczegółów konstrukcyjnych obejmujących swym zakresem moduły jako całość, parametry ich składników (układów pamięci i ewentualnych dodatkowych układów logicznych) oraz definicję pamięci konfiguracyjnej SPD.
Specyfikacja PC-100 jest zgodna "w dół" - moduły spełniające wymogi PC-100 gwarantują poprawność pracy w systemach z magistralą 66 MHz (Przez analogią określane jako
elementy kiasy PC-66 lub zgodne ze specyfikacją PC-66.).
Moduł
Topologia modułu PC-100 została zdefiniowana bardzo szczegółowo. Określone zostały nie tylko szerokości ścieżek i ich wzajemny odstęp ale nawet liczba warstw laminatu (poziomów) i opory falowe poszczególnych linii a także przynależność grup sygnałów do określonych poziomów. Dokładnie zdefiniowane zostało położenie układów na płytce (zarówno dla danych jak i dla bitów parzystości i ECC) oraz wymiary samej płytki, a także szczegóły konstrukcyjne złącza krawędziowego. Klucz pomiędzy kontaktami 10 i l l przesunięty jest w stronę końcówki 11. Drugi klucz umieszczony jest symetrycznie pomiędzy kontaktami 40 i 41. Klucz pierwszy identyfikuje DIMM jako nie buforowany, a klucz drugi informuje o poziomie napięć 3,3V.
Płyta główna doprowadza do modułów cztery sygnały zegarowe CLK a ich rozkład pomiędzy poszczególnymi układami zależy od konfiguracji i liczby banków. Niezależnie od przyjętej organizacji, dopuszczalne rozbieżności czasowe pomiędzy bankami nie mogą przekraczać 2,2 ns.
Moduły zgodne ze specyfikacją PC-100 powinny być oznaczane według następującego systemu:
PCa-bcd-efg-h np. PC 100-322-620 gdzie:
- a - maksymalna częstotliwość taktowania modułu w MHz, w tym wypadku 100.
- b - opóźnienie TCL (CAS Latency) wyrażane w cyklach zegara, możliwe wartości to 2 lub 3.
- c - wartość przerwy czasowej TRCD (RAS to CAS Delay) koniecznej pomiędzy podaniem adresu wiersza a podaniem adresu kolumny, wyrażana w cyklach zegara.
- d - wartość opóźnienia TRP (RAS Precharge Time) niezbędnego do przygotowania banku (upływający od ostatniej deaktywacji do momentu podania adresu nowego wiersza), wyrażane w cyklach zegara (typowa wartość 2).
- e - czas oczekiwania na dane TAC (Output Yalidfrom Clock) podawany w ns, możliwe wartości to 6 lub 7.
- f- wersja specyfikacji, według której zapisana została pamięć konfiguracyjna SPD, liczba 2 odpowiada aktualnej wersji 1.2.
g - pole zarezerwowane do przyszłych zastosowań, w chwili obecnej zapełniane przez cyfrę 0.
h - pole puste lub wypełnione literą R (Registered) jeśli moduł wyposażony jest w bufory zmniejszające stopień obciążenia linii sterujących.
Kluczowe znaczenie dla określenia jakości modułów ma pole e. Wartość ta stanowi bezpośredni wyznacznik szybkości działania elementarnych kostek pamięciowych. Produkowane obecnie układy SDRAM podzielić można na dwie klasy: T#AC = 6 ns i T#AC = 7 ns. Moduły zbudowane z jednostek pierwszej klasy nadają się jako pełna obsada płyt głównych wyposażonych w dużą (powyżej dwóch) liczbę podstawek DIMM. Tanie systemy (Low Cost PC) zadowalać się mają modułami drugiej klasy (T#AC = 7 ns). Nie wolno jednak instalować więcej niż dwóch takich modułów jednocześnie, niezależnie od liczby podstawek na płycie. Dla porównania, moduły klasy PC-66 budowane były z kostek, dla których T#AC leżało w zakresie 9 ns.
Układy pamięci SDRAM PC-100
Wymogi narzucane przez specyfikację PC-100 na układy pamięci sprowadzają się głównie do parametrów czasowych takich jak T#AC, T#RAS, T#CL.
Moduł opisany zgodnie z regułami określonymi przez PC-100 można łatwo "wyprodukować" nalepiając etykietkę z dobrze brzmiącym napisem. Rynek zarzucony jest modułami pamięci różnej jakości i pochodzenia. Zakładając, iż prawdą jest to co można odczytać z samej kostki pamięci (fałszowanie napisów na elementach półprzewodnikowych stało się chlebem powszednim w tej branży) można próbować zlokalizować jej pochodzenie i parametry. Zebrane w tabeli 3.31 oznaczenia niektórych wybranych układów pamięci spełniających wymogi specyfikacji PC-100 może ułatwić to zadanie. Tabela zgrupowana jest według producentów a oprócz symbolu układu pamięciowego podana jest jego organizacja w następującej formie
S: DxWxB-R-MR/MC gdzie:
- S - pojemność (Size, Density)
- D - głębokość, rozmiar macierzy pamięci (Depth)
- W - szerokość (Data Width)
- B - liczba banków (Number ofBanks)
- R - odświeżanie (RefresH)
- M#R - organizacja logiczna adresów wiersza (Mapping Rows)
- M#C - organizacja logiczna adresów kolumny (Mapping Columns)
Lista nie jest i nie może być pełna, bowiem coraz krótszy jest czas opracowywania nowych konstrukcji i coraz szybciej wprowadzane są one do obiegu. Maleje również "czas życia" produktu, który znika często z listy wytwórcy zanim zdążył wystąpić jako powszechny element modułu pamięciowego.
Tabela 3.31.
Oznaczenia wybranych układów pamięci spełniających wymogi specyfikacji PC-100
Oznaczenie układu; Organizacja układu;
Fujitsu;
MB81F 16822B; 16 Mb: 1Mx8x2-4K-11/9;
MB81F 16422B; 16Mb:2Mx4x2-4K-11/9;
MB81F 161622B; 16Mb:512Kxl6x2-4K-11/8;
MB81F 64442B; 64Mb:4Mx4x4-4K-12/8;
MB81F 64842C; 64Mb:2Mx8x4-4K-12/8;
MB81F 641642D; 64 Mb: !Mxl6x4-4K-12/8;
MB81F 64442B; 64Mb:4Mx4x4-4K-12/8;
MB81F 64842D; 64Mb:2Mx8x4-4K-12/8;
MB81F 641642C; 64 Mb: !Mxl6x4-4K-12/8;
Hitachi;
HM 52 64405-B60; 64 Mb: 4Mx4x4-?K-?/?
HM 52 64805-B60; 64 Mb: 2Mx8x4-?K-?/?
HM5264165-B60; 64 Mb: IMxl6x4-?K-?/?
HM 52 12805; 64 Mb: 4Mx8x4-8K-?/?
HM 52 12165; 128Mb:2Mxl6x4-8K-?/?
HM 52E 2540N5; 256 Mb: 16Mx4x4-8K-?/?
HM52E2580N5; 256 Mb: 8Mx8x4-8K-?/?
HM52E2516N5; 256Mb:4Mxl6x4-8K-?/?
HM 52 25165A-A6/B6; 256Mb:4Mxl6x4-?K-?/?
HM 52 25805A-A6/B6; 256 Mb: 8Mx8x4-?K-?/?
HM 52 25405A-A6/B6; 256 Mb: 16Mx4x4-?K-?/?
HM5264165D-A(B)60; 64 Mb: 1Mxl6x4-?K-?/?
HM 52 64805D-A(B)60; 64 Mb: 2Mx8x4-?K-?/?
HM 52 64405D-A(B)60; 64 Mb: 4Mx4x4-?K-?/?
HM52E2516N5; 256 Mb: 4Mx16x4-8K-?/?
HM52E2516N5; 256Mb:4Mxl6x4-8K-?/?
Hyundai;
HY 57V 164010C(D)TC; 16Mb:2Mx4x2-4K-?/?
HY 57V 168010C(D)TC; 16 Mb: 1Mx8x2-4K-?/?
HY 57V654010ATC; 64 Mb: 8Mx4x2-4K-?/?
HY 57V 654020A(B)TC; 64 Mb: 4Mx4x4-4K-?/?
HY 57V658010ATC; 64 Mb: 4Mx8x2-4K-?/?
HY 57V 658020A(B)TC; 64 Mb: 2Mx8x4-4K-?/?
HY 57V651610ATC; 64 Mb: 8Mx4x2-^K-?/?
HY 57V651620A(B)TC; 64 Mb: 4Mx4x4-4K-?/?
HY 57V 1294020TC; 128Mb:8Mx4x4-4K-?/?
HY 57V 1298020TC; 128Mb:4Mx8x4-4K-?/?
HY 57V 1291620TC; 128Mb:2Mxl6x4-4K-?/?
HY 57V644011TC; 64Mb:8Mx4x2-8K-10/12
HY 57V644021TC; 64Mb:4Mx4x4-8K-10/ll
HY 57V654011TC; 64 Mb: 8Mx4x2-4K-10/12
HY 57V 65402 ITC; 64Mb:4Mx4x4-4K-10/ll
HY 57V644011TC; 64Mb:4Mx8x2-8K-9/12;
HY 57V648011TC; 64 Mb: 2Mx8x4-8K-9/l 1;
HY 57V 64802 1TC; 64Mb:4Mx8x2^K-9/12;
HY 57V658011TC; 64Mb:2Mx8x4-4K-9/11;
HY 57V 65802 1TC; 64Mb:2Mxl6x2-8K-ll/12;
HY 57V641621TC; 64 Mb: 1Mxl6x4-8K-8/11;
HY 57V 65161 1TC; 64 Mb: 2Mxl6x2-4K-l 1/12;
HY 57V651621TC; 64 Mb: !Mxl6x4-4K-8/11;
IBM;
IBM03 16809CT3D-6; 16Mb:2Mx8xl-łK-11/9;
IBM03 64404 CT3 A-6; 64 Mb: 8Mx4x2-4K-12/10;
IBM03 64804 CT3 A-6; 64Mb:4Mx8x2-4K-12/9;
IBM03 644 B4 CT3 A-6; 128 Mb: 16Mx4x2-4K-12/10;
IBM03 64404 CT3 B(C); 64 Mb: 16Mx4xl-4K-12/10;
IBM03 64804 CT3 B(C); 64Mb:8Mx8xl^łK-12/9;
1BM0364164CT3 B(C); 64Mb:4Mxl6xl-4K-12/8;
IBM03 644 B4 CT3 B(C); 128 Mb: 2x (4Mx4x4-4K-12/10);
IBM03 25404 CT3 A; 256 Mb: 16Mx4x4-8K-13/l 1;
IBM03 25804 CT3 A; 256Mb:8Mx8x4-8K-13/10;
IBM0325164 CT3 A; 256 Mb: 4Mxl6x4-8K-13/9;
IBM03 254B4 CT3 A; 128 Mb: 2x (4Mx4x4-8K-13/l 1);
LGS
GM72V 161621 ET-7J(K),8; 16Mb:512Kxl6x2-4K-?/?;
GM72VY 16821 DT-7K; 16 Mb: 1Mx8x2-4K-?/?;
GM72V 66441 C(L)T/D(L)I/E(L)T-7J(K),8; 64 Mb: 4Mx4x4-4K-?/?;
GM72V 66841 C(L)T/D(L)I/E(L)T-7J(K),8; 64 Mb: 2Mx8x4-4K-?/?;
GM72V 661641 C(L)T/D(L)I/E(L)T-7J(K),8; 64 Mb: !Mxl6x4-4K-?/?;
GM72V 66421 CT-7J; 64 Mb: 8Mx4x2-4K-?/?;
GM72V 66441 CT-7J; 64 Mb: 4Mx4x4-4K-?/?;
GM72V 66821 CT-7J; 64 Mb: 4Mx8x2-4łK-?/?;
GM72V 66841 CT-7J; 64 Mb: 2Mx8x4-4K-?/?;
GM72V661621 CT-7J; 64 Mb: 2Mxl6x2-4K-?/?;
GM72V661641 CT-7J; 64 Mb: !Mxl6x4^K-?/?;
GM72V 28441; A(L)T-7J(K),8; 128Mb:8Mx4x4-4K-?/?;
GM72V 28841; A(L)T-7J(K).8; 128Mb:4Mx8x4-4K-?/?;
GM72V28I641 A(L)T-7J(K).8; 128 Mb: 2Mxl6x4-4K-?/?;
Micron
MT48LC 1M16A 1TG-8S; 16Mb:512Kxl6x2-4K-11/8;
MT48LC2M8A 1TG-8S; 16 Mb: lMx8x2-4K-11/10;
MT48LC4M4A 1TG-8S; 16Mb:2Mx4x2-4K-11/9;
MT48LC 16M4A2TG-8A/E; 64 Mb: 1 Mx 16x4-4K- 12/10;
MT48LC 1M16A2TG-8A/E; 64Mb:2Mx8x4-4K-12/9;
MT 48LC 4M16A 2TG-8A/E; 64Mb:4Mx4x4-4K-11/8;
MT48LC 16M4A2; 64 Mb: 16Mx4x4;
MT 48LC 8M8 A2; 64 Mb: 8Mx8x4
MT48LC4M16A2; 64Mb:4Mxl6x4
MT 48LC 32M4 A2; 128 Mb: 32Mx4x4
MT48LC 16M8A2; 128 Mb: 16Mx8x4
MT48LC8M16A2; 128 Mb: 8Mxl6x4
Mitsubishi
M5M4V 16S20DTP-7; 16Mb:2Mx4x2-4K-11/10;
M5M4V 16S20DTP-8; 16Mb:2Mx4x2--4K-11/10;
M5M4V 16S30DTP-7; 16 Mb: !Mx8x2-4K-11/9;
M5M4V 16S30DTP-8; 16 Mb: !Mx8x2-4K-11/9;
M5M4V 16S40DTP-7; 16Mb:512Kxl6x2-4K-11/8;
M5M4V 16S40DTP-8; 16 Mb: 512Kxl6x2-4K-11/8;
M5M 4V 64S20 ATP-8; 64 Mb: 4Mx4x4-4K-12/10;
M5M 4V 64S30 ATP-8; 64Mb:2Mx8x4-4K-12/9;
M5M 4V 64S40 ATP-8; 64 Mb: !Mxl6x4-4K-12/8;
M5M 4V 64S20 BTP-7; 64Mb:4Mx4x4-4K-12/10;
M5M 4V 64S30 BTP-7; 64Mb:2Mx8x4-4K-12/9;
M5M 4V 64S20 BTP-7; 64 Mb: lMxl6x4-4K-!2/8;
M2V 28S20-7.8(A); 256 Mb: 32Mx4xx4-4K-?/?;
M2V 28S30-7.8(A); 256 Mb: 16Mx8x4-4K ?/?;
M2V 28S40-7.8(A); 256 Mb: 8MxI6x4-4K ?/?;
u - oznacza w tym wypadku "mi"
NEC
uPD45 16421 A; 16Mb:2Mx4x2-2K-11/10;
uPD45 16821 A; 16 Mb: !Mx8x2-2K-11/9;
uPD45 16161 A; 16Mb:512Kxl6x2-2K-11/8;
uPD 45 64441; 64 Mb: 4Mx4x4-4K-12/10;
uPD 45 64841; 64Mb:2Mx8x4^tK-12/9;
uPD4564163; 64 Mb: 1Mxl6x4-4K-12/8;
uPD45 64441G5-A80(L)-9JF; 64 Mb: 4Mx4x4-4K-12/10;
uPD45 64841G5-A80(L)-9JF; 64Mb:2Mx8x4-4K-12/9;
uPD 45 64163G5-A80(L)-9JF; 64 Mb: 1Mxl6x4-4K-12/8;
uPD45 128441G5; 128Mb:8Mx4x4-?K-?/?;
uPD45 128841G5; 128Mb:4Mx8x4-?K-?/?;
uPD45 128163G5; 128Mb:2Mxl6x4-?K-?/?;
Samsung
KM 48S 2020CT; 16 Mb: !Mx8x2-4K-12/10;
KM 44S 4020CT; 16Mb:2Mx4x2-4K-12/11;
KM416S 1020CT 16 Mb: 512Kxl6x2-2K-12/9;
KM44S 16020B; 64Mb:8Mx4x2^HC-14/12;
KM44S 16030B,C; 64Mb:4Mx4x4-4K-14/12;
KM 48S 8020B-G(F)8; 64 Mb: 4Mx8x2-4K-?/?;
KM 48S 8030(B/C)-G(F)7,8; 64 Mb: 2Mx8x4-4K-?/?;
KM416S4030BT; 64 Mb: 1 Mx 16x4-4K- 14/10;
KM416S8030B-G(F)8; 128Mb:2Mxl6x4-4K-14/ll;
KM48S 16030B-G(F)8; 128 Mb: 4Mx8x4-4K-14/12;
KM 44S 32030B-G(F)8; 128 Mb: 8Mx4x4-4K-14/13;
KM 432S 2020B-G/F; 64 Mb: !Mx32x2-4K-?/?;
KM 432S 2030B-G/F; 64 Mb: 512Kx32x4-4K-14/12;
KM 416S 402(0/1 )B-G/(F)7,8; 64Mb:2Mxl6x2-4K-14/10;
KM 4 1 6S 403(0/ 1 )B/C-G/(F)7.8; 64 Mb: !Mxl6x4-4K-14/10;
Siemens
HYB39S 16800 B/CT-8; 16 Mb: !Mx8x2-4K-12/9;
HYB39S 16400 B/CT-8; 16Mb:2Mx4x2-4K-12/10;
HYB39S 161 60 B/CT-8; 16Mb:512Kxl6x2-4K-12/11;
HYB39S 64160 AT(L)-8(B); 64 Mb: !Mxl6x4-4K-14/8;
HYB 39S 64800 AT(L)-8(B); 64Mb:2Mx8x4-4K-14/9;
HYB 39S 64400 AT(L)-8(B); 64 Mb: 4Mx4x4-4K-14/10;
HYB 39S 256160 T-8(B); 256Mb:4Mxl6x4-8K-?/?;
HYB 39S 256800T-8(B); 256 Mb: 8Mx8x4-8K-?/?;
HYB 39S 256400T-8(B); 256 Mb: 16Mx4x4-8K-?/?;
Toshiba;
TC59S 6404 BFT-80; 64 Mb: 4Mx4x4-4K-12/10;
TC59S 6408 BFT-80; 64Mb:2Mx8x4-4K-12/9;
TC59S 6416 BFT-80; 64 Mb: !Mxl6x4-4K-12/8;
GM72V 28441; A(L)T-7J(K),8; 128Mb:8Mx4x4-4K-?/?;
GM72V 28841; A(L)T-7J(K).8; 128Mb:4Mx8x4-4K-?/?;
GM72V28I641 A(L)T-7J(K).8; 128 Mb: 2Mxl6x4-4K-?/?;
Micron
MT48LC 1M16A 1TG-8S; 16Mb:512Kxl6x2-4K-11/8;
MT48LC2M8A 1TG-8S; 16 Mb: lMx8x2-4K-11/10;
MT48LC4M4A 1TG-8S; 16Mb:2Mx4x2-4K-11/9;
MT48LC 16M4A2TG-8A/E; 64 Mb: 1 Mx 16x4-4K- 12/10;
MT48LC 1M16A2TG-8A/E; 64Mb:2Mx8x4-4K-12/9;
MT 48LC 4M16A 2TG-8A/E; 64Mb:4Mx4x4-4K-11/8;
MT48LC 16M4A2; 64 Mb: 16Mx4x4;
MT 48LC 8M8 A2; 64 Mb: 8Mx8x4
MT48LC4M16A2; 64Mb:4Mxl6x4
MT 48LC 32M4 A2; 128 Mb: 32Mx4x4
MT48LC 16M8A2; 128 Mb: 16Mx8x4
MT48LC8M16A2; 128 Mb: 8Mxl6x4
Mitsubishi
M5M4V 16S20DTP-7; 16Mb:2Mx4x2-4K-11/10;
M5M4V 16S20DTP-8; 16Mb:2Mx4x2--4K-11/10;
M5M4V 16S30DTP-7; 16 Mb: !Mx8x2-4K-11/9;
M5M4V 16S30DTP-8; 16 Mb: !Mx8x2-4K-11/9;
M5M4V 16S40DTP-7; 16Mb:512Kxl6x2-4K-11/8;
M5M4V 16S40DTP-8; 16 Mb: 512Kxl6x2-4K-11/8;
M5M 4V 64S20 ATP-8; 64 Mb: 4Mx4x4-4K-12/10;
M5M 4V 64S30 ATP-8; 64Mb:2Mx8x4-4K-12/9;
M5M 4V 64S40 ATP-8; 64 Mb: !Mxl6x4-4K-12/8;
M5M 4V 64S20 BTP-7; 64Mb:4Mx4x4-4K-12/10;
M5M 4V 64S30 BTP-7; 64Mb:2Mx8x4-4K-12/9;
M5M 4V 64S20 BTP-7; 64 Mb: lMxl6x4-4K-!2/8;
M2V 28S20-7.8(A); 256 Mb: 32Mx4xx4-4K-?/?;
M2V 28S30-7.8(A); 256 Mb: 16Mx8x4-4K ?/?;
M2V 28S40-7.8(A); 256 Mb: 8MxI6x4-4K ?/?;
Pamięć konfiguracyjna (SPD)
Bardzo ważne miejsce w specyfikacji PC-100 zajmuje definicja pamięci konfiguracyj-nej SPD (Serial Presence Detect). Pamięć tę stanowi kostka EEPROM, programowana przez producenta modułu. SPD nie jest wymysłem twórców PC-100, moduły DIMM były w nią wyposażane jeszcze w czasach królowania PC-66. Różnica polega na tym, iż dla modułów PC-100 pamięć SPD jest obowiązkowa (DIMM PC-66 mógł ale nie musiał jej posiadać). Zagwarantowanie poprawnej pracy całego systemu pamięci w systemie z magistralą 100 MHz uwarunkowane jest odczytaniem przez BIOS zawartości SPD i w ślad za tym zaprogramowanie odpowiednich rejestrów sterujących płyty głównej.
Moduły buforowane PC-100
Część specyfikacji PC-100 poświęcona jest opracowaniom modułów specjalnych o dużej pojemności. Problemu leży tu nie tyle w konstrukcji mechanicznej (zwykle stosowane są rozwiązania pakietowe obejmujące dwie płytki drukowane), co w zapewnieniu równomiernego rozprowadzenia sygnałów pomiędzy poszczególnymi kostkami szczególnie jeśli jest ich wiele i w stosunkowo dużej odległości od siebie. W wersji 1.2 specyfikacji znaleźć można zalecenia konstrukcyjne dla modułu l GB złożonego z 36 kostek 256 Mb w układzie x72, czyli po jednym dodatkowym bicie ECC na każdy bajt danych - rozkład końcówek takiego modułu przedstawiony jest w tabeli 3.32.
Blokada mechaniczna (system wcięć na grzebieniu kontaktowym) modułów z rejestrami jest taka jak dla modułów niebuforowanych - lewy klucz zbliżony jest do końcówki 11 a środkowy klucz usytuowany jest centralnie.
Tabela 3.32.
Pola kontaktowe buforowanego modułu DIMM SDRA M PC-100
Styk: Przód, Tył; Przód; Tył;
1/85; Vss; Vss;
2/86; DQO DQ32
3/87; DQI DQ33
4/88; DQ2 DQ34
5/89; DQ3; DQ35
6/90; Vdd; Vdd
7/91 DQ4; DQ36
8/92 DQ5; DQ37
9/93; DQ6; DQ38
10/94; DQ7; DQ39
11/95; DQS; DQ40
12/96; Vss; Vss
13/97; DQ9; DQ41
14/98; DQ10 DQ42
15/99; DQ11; DQ43
16/100; DQ12; DQ44
17/101; DQ13 DQ45
18/102; Vdd; Vdd
19/103; DQ14; DQ46
20/104; DQ15; DQ47
21/105; CBO; CB4
22/106; CB1; CB5
23/107; Vss; Vss
24/108; NC; NC
25/109; NC; NC
26/110; Vdd; Vdd
27/111; ~WE; ~CAS
28/112; DQMBO; QMB4
29/113; DQMB1; DQMB5
30/114; ~CSO; ~CSI
31/115; Zarezer.; -RAS
32/116; Vss; Vss
33/117; AO; Al
34/118; A2; A3
35/119; A4 A5
36/120; A6 A7
37/121; A8; A9
38/122; AIO (AP); BS
39/123; BS1; A11
40/124; Vdd; Vdd
41/125; Vdd; CLK1
42/126; CLKO; AI2
43/127; Vss; Vss
44/128; Zarezer.; CKEO
45/129; ~CS2; -CS3
46/130; DQMB2; DQMB6
47/131; DQMB3; DQMB7
48/132; Zarezer.; AI3
49/133; Vdd; Vdd
50/134; NC; NC
51/135; NC; NC
52/136; CB2; CB6
53/137; CB3; CB7
54/138; Vss; Vss
55/139 DQ16; DQ48
56/140; DQ17; DQ49
57/141; DQ18; DQ50
58/142; DQ19;DQ5I
59/143; Vdd; Vdd
60/144; DQ20; DQ52
61/145; NC; NC
62/146; Vref/NC; Vret7NC
63/147; CKE1; REGE
64/148; Vss; Vss
65/149; DQ2I; DQ53
66/150; DQ22; DQ54
67/151; DQ23; DQ55
68/152; Vss; Vss
69/153; DQ24; DQ56
70/154; DQ25; DQ57
71/155; DQ26; DQ58
72/156; Vdd; Vdd
74/158; DQ28; DQ60
75/159; DQ29; DQ6I
76/160; DQ30; DQ62
77/161; DQ31; DQ63
78/162; Vss; Vss
79/163; CLK.2; CLK3
80/164; NC; NC
81/165; WP; SAO
82/166; SDA; SA1
83/167; SCL; SA2
84/168; Vdd; Vdd
Równomierne rozprowadzenie sygnałów uzyskuje się dzięki buforom określanym również mianem rejestrów (Registers}. Buforowaniu podlegają wszystkie sygnały sterujące i linie adresowe ale z wyłączeniem samej magistrali danych (zarówno DQ0 -DQ63 jak i CB0 - CB7). Korzyści wynikające z synchronicznej pracy całego modułu okupuje się jednak dodatkowym opóźnieniem wprowadzanym przez układy rejestrów (przerzutniki i towarzyszące im bramki logiczne).
Rejestry te to w gruncie rzeczy nic innego jak połączone równolegle przerzutniki typu "Dv. Pojedyncza komórka takiego rejestru przedstawiona jest na rysunku 3.28. Jeżeli linia ~LE znajduje się na niskim poziomie logicznym, sygnał wejściowy INx przekazywany jest po prostu na stowarzyszone z nim wyjście OUTx. Działanie układu zmienia się przy podniesieniu ~LE do wysokości logicznej jedynki. Przerzutnik przepisuje wówczas stan na wejściu D przy każdorazowym przejściu sygnału CLK z poziomu niskiego na wysoki (zbocze narastające). Jeżeli wejście zegarowe nie jest kluczowane (stały poziom, O lub 1) układ zatrzaskuje stan na wyjściu Q w momencie przejścia ~LE z 0 na 1. Omawiane tu rejestry grupowane są zwykle w układach scalonych po 16 lub 18 sztuk.
Na rysunku 3.29 pokazany jest przykład realizacji typowego modułu buforowanego o organizacji x72 (64 bity danych i 8 bitów ECC). Pojemność dla danych wynosi tutaj 128 MB. Na całość składa się 18 kostek pamięciowych 64 Mb w konfiguracji 16Mx4. W modułach tego typu nad równomiernym rozprowadzeniem sygnałów zegarowych czuwa specjalny wielokanałowy generator PLL. Do każdego wyjścia tego układu podłączone są po trzy wejścia CLK kostek pamięciowych. Pętla PLL synchronizowana jest z wejścia CLKO modułu. Pozostałe trzy końcówki tj. CLK1 - CLK3 symulują obciążenie (poprzez odpowiednio dobrane dwójniki RC), tak by układy zewnętrzne nie odczuwały różnicy pomiędzy poszczególnymi wejściami zegarowymi modułu. Niewykorzystane końcówki rejestrów pozostawia się wolne.
Wyszukiwarka
Podobne podstrony:
04 rozdział 03 wtcjpb3t4i6ahedwpeqbi526b4gndq3qkbqtbaquklady pamieci05 Rozdział 03 Wzór Taylora i ekstrema funkcjiNauka swiatowa i polska[1] Rozdzial 0303 uklady trojfazoweidE2003 Rozdział 03kopczewska (pliki z kodami) Rozdział 03 Macierze wagDSP 03 Układy dyskretnewięcej podobnych podstron