Forum Forum Wiecznych Serwisantów Strona Główna

FAQ Szukaj Użytkownicy Grupy Rejestracja Profil Zaloguj się, by sprawdzić wiadomości Zaloguj
 
Zobacz następny temat
Zobacz poprzedni temat
Napisz nowy temat Odpowiedz do tematu  Forum Forum Wiecznych Serwisantów Strona Główna » ARCHIWUM NEWSY + ARTYKUŁY
Autor Wiadomość
Miszcz
Administrator 1


Dołączył: 20 Wrz 2005
Posty: 1374
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: Poznań

PostWysłany: Pon 14:34, 05 Lut 2007

O co chodzi w ECC...

[link widoczny dla zalogowanych]

HISTORIA

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 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

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ŚĆ vs 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?


Post został pochwalony 0 razy

Ostatnio zmieniony przez Miszcz dnia Śro 16:37, 19 Gru 2007, w całości zmieniany 1 raz
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat Odpowiedz do tematu

Zobacz następny temat
Zobacz poprzedni temat
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


fora.pl - załóż własne forum dyskusyjne za darmo

 

Powered by phpBB © 2001, 2002 phpBB Group :: Theme zoneCopper designed by yassineb.
Regulamin