Z pewnością kiedykolwiek czytałeś lub słyszałeś pojęcie pamięci ECC, zwłaszcza jeśli mówimy o procesorach serwerowych, w których ten rodzaj pamięci jest używany. Ale czym różnią się od tych tradycyjnie stosowanych w komputerach? Czy można je zainstalować na komputerze stacjonarnym lub laptopie? Co oznacza skrót ECC? Wyjaśnimy ci to.
W świecie serwerów rodzaj RAM używana jest pamięć, której zwykle towarzyszy akronim ECC, oprócz tego, co nazywamy pamięcią rejestrowaną, która jest prezentowana w postaci modułów RDIMM. Dlatego w tym artykule nie będziemy opisywać sprzętu, który zwykle można znaleźć w komputerze, chyba że masz stację roboczą z CPU typu HEDT lub codziennie pracujesz z serwerami.
Co to jest zarejestrowana pamięć RAM lub RDIMM?
Zarejestrowane pamięci RAM różnią się od konwencjonalnych ze względu na szczegół posiadania rejestru zlokalizowanego pomiędzy modułem pamięci, zwanym w tym przypadku RDIMM, a kontrolerem pamięci systemowej. Rejestr ten jest pamięcią, która przechowuje następujące informacje:
- Adresy pamięci do dostępu.
- Polecenia (odczyt, zapis lub kopiowanie)
- Szybkość zegara, z jaką komunikuje się z pamięcią RAM
W swoim działaniu różni się od konwencjonalnych DIMMów tym, że o ile dane są przesyłane przez klasyczne piny do transmisji danych, to za pomocą tego rejestru wykonywane są polecenia umożliwiające dostęp do pamięci. Ma to na celu uzyskanie większej integralności sygnału i zmniejszenie obciążenia elektrycznego kontrolera pamięci, a jedną z korzyści wynikających z tego jest możliwość obsługi większej liczby modułów pamięci w systemie.
Jednak moduły RDIMM są wolniejsze w użyciu niż konwencjonalne moduły, ponieważ dodawany jest dodatkowy etap dostępu do rejestru, co przekłada się na znacznie niższą przepustowość i znacznie większe opóźnienia w modułach RDIMM. Jednak moduły DIMM stosowane w komputerach PC są przeznaczone do stosowania w komputerach stacjonarnych, w których zwykle nie ma więcej niż dwa kanały dostępu, jak ma to miejsce w przypadku stacji roboczych opartych na procesorach HEDT, a także serwerów.
Co to jest ECC w pamięci RAM?
Musimy wziąć pod uwagę, że pamięć RAM, będąca pamięcią ulotną, jest uzależniona od energii elektrycznej w celu utrzymania przechowywanych danych, co czyni ją podatną na utratę. Zwłaszcza jeśli weźmiemy pod uwagę, że te, których używamy w naszych komputerach, są typu DRAM i dlatego wymagają od czasu do czasu odświeżenia obciążenia, prowadzi to do ich podatności na zakłócenia magnetyczne i elektryczne.
Zazwyczaj bity każdej komórki w pamięci RAM zwykle się nie zmieniają, ponieważ między obiema wartościami jest wystarczająco duża odległość napięcia, aby nie było przeskoku z jednej wartości na drugą, jednak wraz z wypuszczaniem nowych generacji pamięć obniża różnica napięć i to tam, gdzie metody korekcji błędów lub ECC są niezbędne w celu utrzymania informacji.
Aby jednak zorientować się, że weźmiemy prostą wartość binarną, 011101011, która w systemie dziesiętnym odpowiada liczbie 235.
- Jeśli zmieni się pierwszy bit, 111101011, wartość stanie się 491.
- Jeśli zmienia się drugi bit, 001101011, wartość wynosi 107.
- Zmiana trzeciego bitu daje wartość 011001011, a więc 203.
Z tego co widać prosta zmiana wartości pamięci RAM może zmienić wartość danych w adresie pamięci i musimy liczyć się z tym, że przechowują one nie tylko dane, ale także instrukcje i jeśli myślimy o serwerach to mamy Pamiętaj, że są one zaprojektowane do pracy 24 godziny na dobę i 7 dni w tygodniu, czyli bez przerwy. Należy wziąć pod uwagę, że pamięć DRAM nie pozostanie stabilna, więc z biegiem czasu narastają w niej błędy, które mogą prowadzić do uogólnionego załamania się systemu.
Kod Hamminga
Metoda wykorzystywana do korygowania błędów w sygnale pamięci ECC nazywa się kodem Hamminga, nie jest to żaden rodzaj algorytmu wykonywanego przez procesor, ale jest wykonywany w samym kontrolerze pamięci, który znajduje się w procesorze. z obsługą tego typu pamięci RAM. Jego nazwa pochodzi od amerykańskiego matematyka Richarda W. Hamminga, który go opracował.
Jak to działa? Ideą kodu Hamminga jest dodanie bitów redundancji w celu korekcji błędów poprzez porównanie wartości bitów parzystości. Aby to zrobić, należy policzyć bity od lewej do prawej i są one ponumerowane, nie według wartości, którą przechowują, ale ich pozycja jest brana pod uwagę.
Te bity, które w pozycji odpowiadają potędze 2 (1, 2, 4, 8…) są oznaczone jako bity parzystości, podczas gdy reszta bitów jest oznaczona jako bity tylko danych. Bity parzystości są podwajane na końcu ciągu bitów, stąd nazywane są również bitami redundancji, ponieważ są powtarzane. Aby sprawdzić integralność danych, porównuje się je ze sobą w celu sprawdzenia integralności sygnału przechowywanego w pamięci.
Jeśli operacja jest pamięcią napisz:
- Procesor wysyła informacje do kontrolera pamięci, gdzie mówi mu, który adres pamięci chce zmodyfikować i jakie dane chce zapisać.
- Sterownik generuje kod ECC i przesyła go do pamięci.
- Dane są przechowywane w pamięci.
Z drugiej strony, jeśli jest odczytywany z pamięci.
- CPU wysyła żądanie do adresu pamięci do kontrolera, który wysyła żądanie do pamięci RAM.
- Sterownik wykonuje kod Hamminga w celu sprawdzenia, czy dane są poprawne to odsyłane są do CPU, jeśli nie są poprawne to proces korekcji błędów odbywa się automatycznie.
Moduły RAM z ECC
Moduły pamięci ECC mają więcej układów pamięci pomimo tej samej pojemności, ponieważ niektóre bity są wykorzystywane do korekcji błędów. Należy wziąć pod uwagę, że w pamięci ECC parzystość nie jest wykonywana w każdym bajcie. To, co robisz, to używanie bloków 9 bitów na bajt, więc w końcu masz 64 bity do przechowywania danych i 8 jako bity parzystości.
Oznacza to również, że kontroler pamięci w procesorze komunikujący się w pamięci RAM musi być w stanie wygenerować kod Hamminga, a ponieważ pamięć typu ECC jest zwykle używana w procesorach bardziej zaawansowanych niż desktopowe, oznacza to, że obsługa tego typu pamięci wymaga nie tylko specjalnych kontrolerów pamięci, ale także specjalnych płyt głównych obsługujących ten rodzaj pamięci. Ponieważ komputer domowy nie będzie stale włączony i będzie miał regularne ponowne uruchamianie, nie jest używana pamięć ECC
W ten sposób dochodzimy do ostatniej części artykułu, którą są moduły RDIMM z ECC, które w oczywisty sposób łączą cechy dwóch typów pamięci RAM, a wraz z nimi wszystkie ich zalety i wady. Do tej pory, biorąc pod uwagę, że wszystkie pamięci RDIMM są przeznaczone dla serwerów i HEDT, a rynek wymaga kodu korekcji błędów, nie ma ani jednego modułu pamięci RDIMM, który nie byłby ECC.