Co to jest pamięć ECC?

click fraud protection

Część pamięci RAM lub pamięci o dostępie swobodnym jest reklamowana jako pamięć ECC. ECC to skrót od Error Correcting Code i jest procesem identyfikowania i korygowania błędów w pamięci. Błędy w pamięci RAM mogą powodować uszkodzenie lub zmianę danych, co może skutkować awariami urządzeń, a nawet lukami w zabezpieczeniach. Pamięć ECC RAM zazwyczaj nie jest kompatybilna ze sprzętem PC klasy konsumenckiej.

Co to są błędy pamięci?

Błędy pamięci to problem, w którym zmienia się wartość przechowywana w pamięci. Dane w pamięci RAM są przechowywane binarnie, z wartościami 1 lub 0. Jeśli wartość 1 zostanie przełączona na 0 lub odwrotnie, w procesie zwanym „przerzucaniem bitów”, dane przechowywane w pamięci RAM ulegają zmianie.

Na przykład zmieniony bit może służyć do przechowywania wartości w arkuszu kalkulacyjnym. W takim przypadku wartość w arkuszu kalkulacyjnym może zostać zmieniona na zupełnie inną liczbę, która wpłynęłoby na wynik wszelkich obliczeń, na przykład zmiana prognoz ekonomicznych biznes. W innych przypadkach zmieniony bit może wyłączyć funkcję bezpieczeństwa lub stworzyć literówkę, która zmienia sposób uruchamiania programu. Te dwa przykłady są niezwykle trudne do wykrycia i rozwiązania bez użycia pamięci ECC. W ekstremalnym scenariuszu odwrócenie pojedynczego bitu może spowodować katastrofalny błąd, który spowoduje awarię systemu.

Przerzucanie bitów ma wiele potencjalnych przyczyn, najczęstszą przyczyną jest promieniowanie tła, głównie powodowane przez neutrony wytworzone przez promieniowanie kosmiczne. Promień kosmiczny to cząstka o wysokiej energii, zazwyczaj proton, która porusza się z prędkością bliską prędkości światła. Są emitowane przez ciała gwiazdowe, w tym Słońce i inne wysokoenergetyczne obiekty astronomiczne. Kiedy promień kosmiczny uderza w atom, powstaje deszcz neutronów i innych cząstek subatomowych, które następnie wchodzą w interakcje wtórne.

Uważa się, że te wtórne oddziaływania neutronowe są głównym źródłem błędów przerzucania bitów. Promienie kosmiczne są częstsze na wyższych wysokościach, przy 3,5-krotnym wzroście na 1,5 km nad poziomem morza i 300-krotnym wzroście na wysokości przelotowej samolotów pasażerskich. To zwiększone ryzyko na wysokości wymaga dodatkowych środków niezawodności.

Jak powszechne są błędy pamięci?

Większość ludzi nie widzi, jak ich komputery ulegają awarii każdego dnia, więc łatwo byłoby pomyśleć, że jest to przede wszystkim teoretyczne ryzyko. Badania z hiperskalowych centrów danych zostały wykorzystane do analizy częstości incydentów polegających na przerzucaniu bitów. Badania przeprowadzone przez Google w centrach danych wykazały, że wskaźnik błędów wynosi około 1 błąd jednobitowy na gigabajt pamięci RAM co 1,8 godziny.

Misja NASA Cassini-Huygens, która rozpoczęła się w 1997 roku w celu podróży na Saturna, została skonfigurowana z dwoma identycznymi komputerami pokładowymi, każdy z 2,5 GB pamięci RAM. Przez pierwsze dwa i pół roku swojej podróży statek kosmiczny zaobserwował 280 jednobitowych błędów dziennie. W ciągu jednego dnia, gdy Cassini-Huygens był na ścieżce rozbłysku słonecznego, czterokrotny wzrost bitu zaobserwowano błędy, dostarczając dalszych dowodów na to, że Słońce jest przyczyną większości przerzucania bitów zagadnienia.

Pojawiły się obawy, że dalszy wzrost gęstości modułów pamięci RAM spowoduje, że późniejsze wersje pamięci RAM będą coraz bardziej podatne na przerzucanie bitów. Nowsze badania wykazały, że w rzeczywistości jest odwrotnie, ponieważ błędy zmniejszały się wraz ze spadkiem geometrii procesu.

Jak pamięć ECC chroni przed błędami?

Pamięć ECC wykorzystuje kody korekcji błędów, takie jak kody Hamminga, do korygowania błędów jednobitowych w pamięci RAM. Błędy dwubitowe mogą być wykrywane, ale nie korygowane. Kody korekcji błędów Hamminga działają przy użyciu tablicy bitów parzystości. Razem te bity parzystości mogą być użyte do wykrycia, czy jakiekolwiek bity danych uległy zmianie. Jeśli bit zostanie zidentyfikowany jako odwrócony, zostanie automatycznie zmieniony.

Wskazówka: błąd jednobitowy to zdarzenie polegające na przerzucaniu bitów, gdy odwracany jest tylko jeden bit. W przypadku błędów double0bit dwa bity są odwracane. Dwa bity nie muszą być odwrócone w tym samym incydencie, drugie odwrócenie bitu musi nastąpić tylko przed skorygowaniem pierwszego odwróconego bitu.

W kodach korekcji błędów Hamminga zawarty jest jeden bit parzystości więcej niż jest to wymagane. Ten dodatkowy bit parzystości daje kodowi możliwość wykrycia występowania błędów dwubitowych, jednak tych błędów nie można poprawić.

Proces wykrywania i korekcji błędów jest wykonywany na kontrolerze pamięci na karcie pamięci RAM.

Dostępność i wsparcie dla konsumentów

Większość sprzętu komputerowego klasy konsumenckiej nie obsługuje pamięci ECC. Jest to częściowo metoda sztucznego odróżniania sprzętu serwerowego od sprzętu konsumenckiego. Jednak pamięć RAM ECC kosztuje więcej i działa nieco wolniej. Ponadto dodatkowa stabilność, jaką zapewniłby konsumentom domowym, jest minimalna, ponieważ błędy przerzucania bitów nie są główną przyczyną awarii systemu.

Żaden z procesorów Intel dla konsumentów i entuzjastów nie obsługuje pamięci ECC, tylko procesory klasy serwerowej, takie jak procesory z serii Xeon. Konsumenckie procesory AMD nie obsługują ECC, jednak ich procesory dla stacji roboczych i serwerów, odpowiednio Threadripper i EPYC, obsługują pamięć ECC.