Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
TwojePC.pl © 2001 - 2018
T E C H N I K A
    


  Parzystość, ECC - co to właściwie jest?
 Autor: Stefan
 Data: 12/09/01

Parzystość, ECC - co to właściwie jest? Dość często w cennikach oprócz "zwykłych" pamięci pojawiają się pamięci typu ECC. Czasem ich cena jest nawet dwukrotnie wyższa niż zwykłych, a czasem są one prawie tak samo wycenione. Prawie zawsze na pytanie czym jest ECC dostajemy jakąś mniej lub bardziej niejasną odpowiedź, w której występują takie słowa jak "serwery", "parzystość", etc. Dlatego postanowiliśmy na łamach TPC zająć się tym dogłębnie - od początku IBM PC 20 lat temu aż do czasów obecnych :-) Niestety w poniższym tekście nie rozwiążemy wszystkich problemów związanych z ECC (np. czemu Abit KT7 nie obsługuje kości 256 MB ECC), ale możemy zagwarantować, że po uważnej lekturze tekstu każdy będzie wiedział - o co właściwie w ECC chodzi.

Trochę historii

Oryginalny IBM PC wymagał pamięci wyposażonych w mechanizm kontroli parzystości. Jego twórcami byli inżynierowie dobrze orientujący się w potrzebach poważnych odbiorców, wykorzystujących olbrzymie maszyny typu mainframe stworzone z myślą o bardzo skomplikowanych i wymagających zastosowaniach.

Produkowane w tym czasie układy pamięci, nie były tak niezawodne jak obecnie i istniała uzasadniona potrzeba sprawdzania, że każde odwołanie do pamięci zwraca poprawne dane. Banki, lotniska, giełdy papierów wartościowych, itp. - wszystkie te instytucje wymagały absolutnej pewności co do braku błędów pamięci spowodowanych przez wadliwe układy (hard errors), lub przypadkowe wyładowania elektrostatyczne uszkadzające przechowywane dane (soft errors).

Firma Apple (jak zwykle) zastosowała inną strategię. Jej inżynierowie stwierdzili, że dla przeciętnego domowego użytkownika okazjonalnie pojawiające się błędy pamięci nie mają istotnego wpływu na komfort i niezawodność użytkowania komputera. Pudełka z jabłuszkiem standardowo wyposażano w pamięć bez bitu parzystości, co pozwoliło na zredukowanie ceny zestawu (pamięć bez bitu parzystości jest tańsza, gdyż zawiera mniej układów). W tamtym okresie pamięć była koszmarnie droga, a rezygnacja z parzystości zmniejszała jej koszt o około 12% (całkiem sporo zważywszy, że 4MB kosztowało kilkaset USD!). Producenci klonów IBM PC, wkrótce zaczęli zdawać sobie sprawę, że mogą być znacznie bardziej konkurencyjni dostarczając systemy bez parzystości, i już niektóre 386-stki posiadały tańszą pamięć. Gdy ruszyła produkcja systemów opartych na procesorze 486 większość z nich składano w oparciu o moduły bez parzystości.

Do dzisiaj prawie wszystkie systemy sprzedawane indywidualnemu klientowi wyposażane były w pamięć bez kontroli parzystości (chyba że klient zażyczył sobie inaczej). Tylko systemy, od których wymaga się absolutnie stabilnego działania np. serwery lub stacje robocze będą zawierały mechanizm kontroli parzystości bądź ECC. Odkąd ilość błędnych odczytów dla kości pamięci czołowych producentów szacuje się na około jeden na każde dziesięć lat pracy lub nawet mniej, zbędnym wydaje się stosowanie droższych układów z kontrolą bitu parzystości. Dodatkowo przemawia za tym fakt, że większość komputerów działa w oparciu o systemy operacyjne Windows 95/98 lub Me i nie jest wstanie zapewnić integralności danych ze względu na błędy zaszyte w samym oprogramowaniu systemowym. Z drugiej jednak strony ci którzy cenią "niezawisłość" ponad wszystko mogą zainwestować w kości z ECC co przy obecnym spadku cen pamięci będzie (prawdopodobnie, bo ceny zmieniają się wyjątkowo szybko) dodatkowym wydatkiem rzędu 50-100 złotych na każde 128 MB.

Mechanizm kontroli - jak to właściwie działa

Mechanizm kontroli parzystości to raczej prosta metoda wykrywania błędów. Najprościej mówiąc każdy bajt danych ma przyporządkowany dodatkowy bit kontrolny. Bit ten jest ustawiany przy każdym zapisie, na nowo obliczany i porównywany ze starą wartością przy każdym odczycie w celu wykrycia ewentualnego przekłamania danych. Taki sposób pozwala na wykrycie błędów pojedynczego bitu. Jeżeli dwa bity w bajcie zmienią swoją wartość, wtedy bit kontrolny może nie wykazać błędu.

Sprawdzanie parzystości może być zaimplementowane na dwa sposoby. Pierwszy polega na zliczaniu "zer", a drugi "jedynek" w bajcie. Odpowiednio dla nieparzystej lub parzystej ich ilości bit kontrolny ustawiany jest na "zero" lub "jeden". Dlatego właśnie, jeśli dwa bity zmienią swoją wartość, parzystość nie ulegnie zmianie.

Według przeprowadzonych badań, 90% wszystkich błędów pamięci to błędy pojedynczego bitu i dlatego metoda ta jest bardzo skuteczna w większości sytuacji. Niestety nic nie ma za darmo, tutaj ceną jest niewielkie zmniejszenie wydajności systemu ze względu na dodatkowy cykl zegara potrzebny na odczyt i zapis bitu kontrolnego. Metoda nie umożliwia jednak skorygowania błędu, a jedynym skutkiem jej działania jest zatrzymanie aplikacji i powiadomienie użytkownika o zaistniałym problemie.

W celu wyeliminowania wad powyższej technologii opracowano nowe rozwiązanie nazwane ECC (ang. Error Correction Checking), które nie tylko pozwala na wykrywanie błędów pojedynczego, ale także podwójnego, potrójnego a nawet poczwórnego bitu (zależnie od implementacji). W dodatku ECC posiada funkcję korekcji błędów pojedynczego bitu w sposób całkowicie przeźroczysty dla aplikacji i użytkownika.

ECC można stosować w kościach SIMM i EOS, chociaż te drugie występują bardzo rzadko. Zasada działania ECC opiera się na "haszującym" algorytmie operującym na ośmiu bajtach (64-rech bitach) jednocześnie i umieszczaniu wyniku w specjalnym 8-śmio bitowym słowie ECC. Podczas odczytu z pamięci ośmiu bajtów są one ponownie przepuszczane przez algorytm wyliczający słowo ECC, które z kolei porównywane jest z zachowanym wcześniej słowem ECC (podczas zapisu do pamięci) odpowiadającym tym konkretnym ośmiu bajtom. Podstawową różnicą między parzystością i ECC jest sposób organizacji. W ECC jeden bajt kontrolny przyporządkowany jest ośmiu bajtom danych, podczas gdy w "parzystości" jeden bit kontrolny odpowiada za jeden bajt danych.

Moduły ECC nie mogą być używane w trybie parzystości (jednakże możliwe jest używanie modułów z parzystością w trybie ECC). Opisany powyżej model ECC jest prawdziwy dla 64-bitowej magistrali danych, w komputerach typu 486 z 32-dwu bitową szyną, słowo ECC ma długość siedmiu bitów.

Parzystość kontra ECC

Oba typy kości, zarówno z ECC i z parzystością mogą współpracować z płytami nie obsługującymi żadnego z tych rozwiązań. Dodatkowe bity kontrolne będą najzwyczajniej ignorowane. Wiele wczesnych chipsetów do Pentium nie obsługiwało technologii kontroli pamięci nie umożliwiając zmian ustawień z poziomu BIOS-u. Moduły SIMM mogą być trzech rodzajów: z parzystością, bez parzystości i z ECC, natomiast DIMM-y mogą być tylko ECC lub non-ECC.

Kości SIMM z parzystością mogą być używane w płytach wspierających standard ECC. Możliwa jest wtedy detekcja błędów pojedynczego i podwójnego bitu oraz korekcja błędów pojedynczego bitu. Moduły ECC mogą być używane zarówno w płytach bez obsługi parzystości i ECC no i oczywiście w płytach wspierających ECC. Powodem jest konstrukcja modułów ECC uniemożliwiająca ustawienie pojedynczego bitu kontrolnego a tylko całego słowa ECC jednocześnie. W celu poprawnej pracy wszystkie ustawienia BIOS-u muszą być zgodne z posiadanym typem kości pamięci. Również sama płyta musi bezbłędnie realizować opisywane funkcje (w czasach chipsetu 440HX tylko Asus oraz Intel potrafili poprawnie zaimplementować ECC w swoich płytach).

Charakterystyki

Dla potrzeb dalszego opisu układów założymy, że MB oznacza megabajt zaś Mb megabit. Jeżeli przyjrzymy się bliżej 16 MB kości SIMM z parzystością, zauważymy 12 małych układów scalonych. Osiem z nich to 16 Mb-towe chipy, a cztery 4 Mb-towe. W pierwszych ośmiu przechowywane są standardowe dane, a w czterech następnych wszystkie bity kontrolne. SIMM-y jednorazowo wystawiają na szynę danych 32 bity tj. 4 bajty. Wymaganą konfiguracją dla pojedynczego chipu 16 Mb-towego jest 4Mx4 (co oznacza, że jest w nim 4 miliony komórek, a każda z nich zawiera 4 bity-razem 16 milionów bitów). Kiedy pojawia się żądanie dostępu do chipu na kości pamięci, umiejscowienie pojedynczej komórki jest ustalane przy użyciu pomocniczych adresów RAS i CAS (Row and Column Address Selector). Jak widać każdy z ośmiu chipów wystawia jednocześnie cztery bity, co w sumie daje żądane 32 bity.

Na przykład procesory Pentium wykorzystują 64-ro bitową magistralę danych, co powoduje że muszą mieć dostęp jednocześnie do 16 chipów pamięci typu (np. 4Mx4). Właśnie dlatego dysponując kośćmi po osiem chipów danych każda, musimy zainstalować takie dwie w komputerze, aby zapewnić 64 bitową szerokość przesyłu (16x4=64). Każdy chip parzystości to chip 4 Mb-towy o konfiguracji 4Mx1, co oznacza, że jednocześnie wystawia lub zapisuje jeden bit. Jak już pewnie zauważyliście na każdy 4 Mb-towy chip parzystości przypadają dwa 16 Mb-towe chipy danych. Całkowita "szerokość" opisywanej kości SIMM wynosi 36 bitów (8 chipów danych po 4 bity każdy + 4 chipy parzystości po jednym bicie).

Budowa 16 MB-towej kości ECC jest niemal identyczna, tylko zamiast 4 chipów parzystości mamy jeden 16 Mb-towy chip dla słów ECC (na takiej kości jest w sumie 9 scalaków). Chip ECC jest również typu 4Mx4, czyli zapisuje i odczytuje jednocześnie 4 bity. W 64 bitowej architekturze Pentium musielibyśmy użyć dwie takie kości przez co uzyskujemy 8 bitów wymaganych dla słowa ECC.

Obecnie najczęściej spotykane kości typu DIMM z ECC są niemal identyczne jak SIMM-y, w zasadzie jedyną różnicą jest większa ilość wyjść. Np. 64 MB DIMM zawiera 8 chipów 64 Mb-wych i dodatkowo 64 Mb-towy chip dla słów ECC. Takie chipy są typu 8Mx8, co w sumie daje nam 64-ro bitową szerokość transferu, chip ECC to kolejne 8 bitów i dlatego DIMM-y mają 72 wyjścia.

Podsumowanie

Należy zapamiętać, że moduły z parzystością mogą być użyte w płytach typu ECC lub "non-parity". Moduły ECC będą działać z płytami obsługującymi ECC i parzystość. Zważywszy na niezwykle rzadkie pojawianie się błędów pamięci opisywane systemy kontroli stosuje się tylko w komputerach służących do baaaardzo poważnych zastosowań, ale chyba czasem warto wiedzieć trochę więcej na ten temat, czyż nie?

P.S. Wiem, że opisywanie wyglądu kości 16 oraz 64 megabajtowych może u niektórych z Was wywołać ironiczny uśmiech, ale ostatnio wobec awarii moich dwóch (sic!) systemów (w tym jedno spalone Pentium 4) korzystam z awaryjnego AMD K6 300 MHz z tymi właśnie dwoma kośćmi pamięci :-)

    
K O M E N T A R Z E
    

  1. pierwszy? (autor: Tig3r-brak rejestracji | data: 12/09/02 | godz.: 17:23)
    niemozliwe

  2. Ostatni? (autor: GRS | data: 15/05/03 | godz.: 14:37)
    Nisamowite

  3. ......... (autor: if22 | data: 23/05/03 | godz.: 15:01)
    Nie jesteś ostatni :]

  4. .. ... ... (autor: Adamusss | data: 21/09/03 | godz.: 22:33)
    Ty tez nie :D

  5. A ja powiem tak... (autor: rage82 | data: 30/10/03 | godz.: 18:26)
    Artykul bardzo interesujacy. Zaluje, ze nie mialem okazji przeczytac go wczesniej...

    Adamusss nie ciesz sie zbytnio...
    Ty tez nie ;-)


  6. witam :) (autor: JasioWP | data: 13/12/04 | godz.: 00:06)
    stary post ale jest co czytać :)

  7. wporzo (autor: mos84 | data: 30/01/05 | godz.: 19:44)
    ...ale nie chce mi się myśleć o co tu biega

  8. ECC (autor: pimpul | data: 13/08/05 | godz.: 12:02)
    nareszcie ktoś mi to jasno wytłumaczył

  9. ECC (autor: zeki | data: 29/01/06 | godz.: 15:38)
    Zaznaczam na poczatku ,że jestem laikiew w tych sprawach. Po przeczytaniu rtego dalej dokładnie nie wiem czy mogę tę pieć wpiąć do mojej karty Mercury KOB KT400 FDSX. Proszę o odpowiedź. Trochę późno się na ten temat pytam, ale może jakąś odpowiedź otrzymam. Wiem ,że to jest nie FORUM

    
D O D A J   K O M E N T A R Z
    

Aby dodawać komentarze, należy się wpierw zarejestrować, ewentualnie jeśli posiadasz już swoje konto, należy się zalogować.

    
All rights reserved ® Copyright and Design 2001-2018, TwojePC.PL