ECC paměť - ECC memory

ECC DIMM mají obvykle devět paměťových čipů na každé straně, o jeden více, než se obvykle nachází na jiných než ECC DIMM (některé moduly mohou mít 5 nebo 18).

Paměť kódu opravy chyb ( ECC paměť ) je typ úložiště dat počítače, který používá kód opravy chyb (ECC) k detekci a opravě poškození n-bitových dat, ke kterému dochází v paměti. Paměť ECC se používá ve většině počítačů, kde nelze za žádných okolností tolerovat poškození dat, jako jsou průmyslové řídicí aplikace, kritické databáze a mezipaměti infrastruktury.

Paměť ECC typicky udržuje paměťový systém imunní vůči jednobitovým chybám: data, která jsou čtena z každého slova, jsou vždy stejná jako data, která byla do něj zapsána, i když byla některá ze skutečně uložených bitů převrácena na špatný stav. Většina non-ECC paměti nedokáže detekovat chyby, ačkoli některá non-ECC paměť s podporou parity umožňuje detekci, ale ne opravu.

Popis

Kódy pro opravu chyb chrání před nezjištěným poškozením dat v paměti a používají se v počítačích, kde je takové poškození nepřijatelné, například v některých vědeckých a finančních výpočetních aplikacích nebo v databázových a souborových serverech . ECC také snižuje počet havárií, které jsou zvláště nepřijatelné v aplikacích serverů pro více uživatelů a systémech maximální dostupnosti.

Elektrické nebo magnetické rušení uvnitř počítačového systému může způsobit, že jeden bit dynamické paměti s náhodným přístupem (DRAM) se spontánně přepne do opačného stavu. Původně se předpokládalo, že to bylo způsobeno hlavně alfa částicemi emitovanými nečistotami v obalovém materiálu čipu, ale výzkum ukázal, že většina jednorázových měkkých chyb v čipech DRAM se vyskytuje v důsledku záření pozadí , zejména neutronů z druhotných zdrojů kosmického záření , které mohou měnit obsah jedné nebo více paměťových buněk nebo interferovat s obvody používanými k jejich čtení nebo zápisu. Proto se míra chyb rychle zvyšuje s rostoucí nadmořskou výškou; například ve srovnání s hladinou moře je rychlost toku neutronů 3,5krát vyšší na 1,5 km a 300krát vyšší na 10–12 km (cestovní výška komerčních letadel). Výsledkem je, že systémy pracující ve vysokých nadmořských výškách vyžadují speciální opatření pro spolehlivost.

Například kosmická loď Cassini – Huygens vypuštěná v roce 1997 obsahovala dva identické letové zapisovače, každý s 2,5 gigabity paměti ve formě polí komerčních čipů DRAM. Kvůli integrované funkčnosti EDAC hlásila technická telemetrie kosmické lodi počet (opravitelných) chyb jednoho bitu za slovo a (neopravitelných) chyb dvojitého bitu za slovo. Během prvních 2,5 roku letu kosmická loď hlásila téměř konstantní jednobitovou chybovost asi 280 chyb denně. 6. listopadu 1997, během prvního měsíce ve vesmíru, se však počet chyb za jediný den zvýšil o více než čtyřikrát. To bylo přičítáno události slunečních částic , která byla detekována satelitem GOES 9 .

Existovala určitá obava, že jak se hustota DRAM dále zvyšuje, a tím se komponenty na čipech zmenšují, zatímco provozní napětí stále klesá, budou čipy DRAM ovlivňovány takovým zářením častěji - protože částice s nižší energií budou schopné změnit stav paměťové buňky. Na druhou stranu menší buňky vytvářejí menší cíle a přesun k technologiím, jako je SOI, může vést k tomu, že jednotlivé buňky budou méně náchylné, a tak vyvrátit nebo dokonce zvrátit tento trend. Nedávné studie ukazují, že rozrušení jednotlivých událostí způsobené kosmickým zářením dramaticky klesá s geometrií procesu a předchozí obavy ohledně zvýšení míry chyb bitových buněk jsou neopodstatněné.

Výzkum

Práce publikované v letech 2007 až 2009 ukázaly velmi rozdílné míry chyb s rozdílem velikosti více než 7 řádů, od 10 −10 chyb / bit · h (zhruba jedna bitová chyba za hodinu na gigabajt paměti) až 10 −17 chyb / bit · h (zhruba jedna bitová chyba na tisíciletí na gigabajt paměti). Na konferenci SIGMETRICS / Performance '09 byla představena rozsáhlá studie založená na velkém počtu serverů Google . Skutečná zjištěná míra chyb byla o několik řádů vyšší než předchozí malé nebo laboratorní studie, přičemž mezi 25 000 ( chyba 2,5 × 10 −11 / bit · h) a 70 000 ( chyba 7,0 × 10 −11 / bit · h, nebo 1 bitová chyba na gigabajt RAM za 1,8 hodiny) chyby na miliardu hodin zařízení na megabit. Více než 8% paměťových modulů DIMM bylo ročně postiženo chybami.

Důsledek chyby paměti závisí na systému. V systémech bez ECC může chyba vést buď ke zhroucení, nebo k poškození dat; ve velkých výrobních závodech jsou chyby paměti jednou z nejčastějších hardwarových příčin havárií strojů. Chyby paměti mohou způsobit chyby zabezpečení. Chyba paměti nemůže mít žádné důsledky, pokud se trochu změní, což nezpůsobí pozorovatelnou poruchu ani neovlivní data použitá ve výpočtech nebo uložená. Simulační studie z roku 2010 ukázala, že u webového prohlížeče způsobila poškození dat jen malá část chyb paměti, ačkoli, protože mnoho chyb paměti je přerušovaných a korelovaných, byly účinky chyb paměti větší, než by se dalo očekávat u nezávislých měkkých chyb.

Některé testy docházejí k závěru, že izolaci paměťových buněk DRAM lze obejít nechtěnými vedlejšími účinky speciálně vytvořeného přístupu k sousedním buňkám. Přístup k datům uloženým v paměti DRAM tedy způsobuje, že paměťové buňky unikají z nábojů a elektricky interagují, což je důsledkem vysoké hustoty buněk v moderní paměti, což mění obsah blízkých paměťových řádků, které ve skutečnosti nebyly při původním přístupu k paměti řešeny. Tento jev je znám jako řadové kladivo , a to také bylo použito v některých privilegium eskalační počítačové bezpečnosti využije .

Příklad jednobitové chyby, kterou by systém bez kontroly chyb ignoroval, by zastavil stroj s kontrolou parity nebo by byl neviditelně opraven ECC: jeden bit je zaseknutý na 1 kvůli vadnému čipu, nebo se změní na 1 kvůli pozadí nebo kosmickému záření; načte se tabulka s uloženými čísly ve formátu ASCII a znak „8“ (desetinná hodnota 56 v kódování ASCII) se uloží do bajtu, který obsahuje zaseknutý bit na nejnižší pozici bitu; poté se v tabulce provede změna a uloží se. Ve výsledku se z „8“ ( binární 0011 100 0 ) tiše stala „9“ (0011 100 1 ).

Řešení

Bylo vyvinuto několik přístupů, které se zabývají nechtěnými bitovými převráceními, včetně programování s vědomím imunity , paritní paměti RAM a paměti ECC .

Tento problém lze zmírnit použitím modulů DRAM, které obsahují další paměťové bity a řadiče paměti, které tyto bity využívají. Tyto další bity se používají k záznamu parity nebo k použití kódu opravujícího chyby (ECC). Parita umožňuje detekci všech jednobitových chyb (ve skutečnosti libovolný lichý počet nesprávných bitů). Nejběžnější kód opravy chyb, oprava jedné chyby a detekce dvojité chyby (SECDED) Hammingův kód , umožňuje opravu jednobitové chyby a (v obvyklé konfiguraci s bitem navíc parita) dvojbitové chyby být detekován. Chipkill ECC je efektivnější verze, která také opravuje vícebitové chyby, včetně ztráty celého paměťového čipu.

Implementace

Seymour Cray na otázku, proč to vynechal z CDC 6600, řekl „ parita je pro zemědělce “ . Později zahrnul paritu do CDC 7600 , což způsobilo, že vědátoři poznamenali, že „očividně mnoho farmářů kupuje počítače“. Původní počítač IBM a všechny počítače až do počátku 90. let používaly kontrolu parity. Pozdější většinou ne.

Řadič paměti schopný ECC může obecně detekovat a opravovat chyby jednoho bitu na slovo (jednotka přenosu po sběrnici ) a detekovat (ale ne opravit) chyby dvou bitů na slovo. Systém BIOS v některých počítačích, pokud je porovnán s operačními systémy, jako jsou některé verze Linux , BSD a Windows ( Windows 2000 a novější), umožňuje počítání zjištěných a opravených chyb paměti, částečně proto, aby pomohl identifikovat vadné paměťové moduly dříve, než se problém stane katastrofální.

Některé čipy DRAM obsahují „interní“ obvody pro korekci chyb na čipu, které umožňují systémům s řadiči paměti bez ECC stále využívat většinu výhod paměti ECC. V některých systémech lze podobného efektu dosáhnout použitím paměťových modulů EOS .

Detekce a oprava chyb závisí na očekávání druhů chyb, ke kterým dojde. Implicitně se předpokládá, že selhání každého bitu ve slově paměti je nezávislé, což má za následek nepravděpodobnost dvou současných chyb. To platilo v případě, že paměťové čipy byly jednobitové široké, což bylo typické pro první polovinu 80. let; pozdější vývoj přesunul mnoho bitů do stejného čipu. Tento nedostatek řeší různými technologiemi, včetně IBM 's Chipkill , Sun Microsystems ' Extended ECC , Hewlett Packard 's Chipspare a Intel ' s Single Device dat Correction (SDDC).

Paměť DRAM může poskytovat zvýšenou ochranu proti měkkým chybám tím, že se spoléhá na kódy opravující chyby. Taková paměť opravující chyby , známá jako paměť chráněná ECC nebo EDAC , je obzvláště žádoucí pro aplikace odolné vůči chybám, jako jsou servery, a také pro aplikace v hlubokém vesmíru kvůli zvýšenému záření . Některé systémy také „ drhnou “ paměť periodickým čtením všech adres a zapisováním opravených verzí, pokud je to nutné k odstranění měkkých chyb.

Prokládání umožňuje distribuci účinku jediného kosmického paprsku, což může narušit více fyzicky sousedících bitů napříč více slovy přidružením sousedních bitů k různým slovům. Dokud rozrušení jedné události (SEU) nepřekročí prahovou hodnotu chyby (např. Jednu chybu) v jakémkoli konkrétním slově mezi přístupy, lze ji opravit (např. Jednobitovým kódem pro opravu chyb) a efektivně může být udržován bezchybný paměťový systém.

Paměťové řadiče opravující chyby tradičně používají Hammingovy kódy , i když některé používají trojitou modulární redundanci (TMR). Ten je upřednostňován, protože jeho hardware je rychlejší než hardware Hammingova schématu korekce chyb. Vesmírné satelitní systémy často používají TMR, ačkoli satelitní RAM obvykle používá Hammingovu korekci chyb.

Mnoho časných implementací opravitelných chyb paměťové masky ECC, které se chovaly „jako by“ k chybě nikdy nedošlo, a hlásí pouze neopravitelné chyby. Moderní implementace zaznamenávají opravitelné chyby (CE) i neopravitelné chyby (UE). Někteří lidé proaktivně nahrazují paměťové moduly, které vykazují vysokou míru chyb, aby se snížila pravděpodobnost neopravitelných chybových událostí.

Mnoho paměťových systémů ECC používá „externí“ obvod EDAC mezi CPU a pamětí. Několik systémů s pamětí ECC používá interní i externí systémy EDAC; externí systém EDAC by měl být navržen tak, aby opravoval určité chyby, které vnitřní systém EDAC nedokáže opravit. Moderní stolní a serverové CPU integrují obvod EDAC do CPU, ještě před přechodem k řadičům paměti integrovaným do CPU, které souvisejí s architekturou NUMA . Integrace CPU umožňuje systém EDAC s nulovou penalizací během bezchybného provozu.

Od roku 2009 používají nejběžnější kódy pro opravu chyb Hammingovy nebo Hsiao kódy, které poskytují jednobitovou opravu chyb a detekci dvojbitových chyb (SEC-DED). Pro ochranu paměti byly navrženy další kódy pro opravu chyb - kódy pro dvoubitové opravy chyb a kódy pro detekci tříbitových chyb (DEC-TED), opravy chyb s jedním nibble a kódy pro detekci chyb s dvojitým nibble (SNC-DND), Reed– Šalamounovy kódy pro opravu chyb atd. V praxi se však vícebitová korekce obvykle provádí prokládáním více kódů SEC-DED.

První výzkum se pokusil minimalizovat plochu a zpozdit režii obvodů ECC. Hamming nejprve demonstroval, že SEC-DED kódy byly možné s jednou konkrétní kontrolní maticí. Hsiao ukázal, že alternativní matice s lichými sloupci poskytuje schopnost SEC-DED s menší hardwarovou oblastí a kratším zpožděním než tradiční Hammingovy SEC-DED kódy. Novější výzkum se také pokouší kromě minimalizace oblasti a zpoždění minimalizovat výkon.

Mezipaměti

Mnoho procesorů používá v mezipaměti čipů kódy pro opravu chyb , včetně procesorů Intel Itanium , Xeon , Core a Pentium (od mikroarchitektury P6 ), AMD Athlon , Opteron , všechny procesory založené na Zen a Zen + ( EPYC , EPYC Embedded) , Ryzen a Ryzen Threadripper ) a DEC Alpha 21264.

Od roku 2006 jsou EDC / ECC a ECC / ECC dvě nejběžnější techniky ochrany proti chybám mezipaměti používané v komerčních mikroprocesorech. Technika EDC / ECC používá kód detekce chyb (EDC) v mezipaměti úrovně 1. Pokud je zjištěna chyba, jsou data obnovena z mezipaměti úrovně 2 chráněné ECC. Technika ECC / ECC používá mezipaměť úrovně 1 chráněnou ECC a mezipaměť úrovně 2 chráněnou ECC. CPU, které používají techniku ​​EDC / ECC, vždy zapisují všechny OBCHODY do mezipaměti úrovně 2, takže když je zjištěna chyba během čtení z datové mezipaměti úrovně 1, lze kopii těchto dat obnovit z mezipaměti úrovně 2 .

Registrovaná paměť

Dva 8 GB DDR4 -2133 ECC 1,2 V RDIMM

Registrovaná nebo vyrovnávací paměť není stejná jako ECC; technologie plní různé funkce. Je obvyklé, že paměť používaná na serverech je registrována, aby bylo možné bez problémů s elektřinou používat mnoho paměťových modulů, a pro integritu dat ECC. Paměť používaná ve stolních počítačích není ani z důvodu úspory. Je však k dispozici neukládaná (neregistrovaná) paměť ECC a některé základní desky mimo server podporují funkčnost ECC těchto modulů při použití s ​​CPU, který podporuje ECC. Registrovaná paměť nefunguje spolehlivě na základních deskách bez vyrovnávacích obvodů a naopak.

Výhody a nevýhody

Nakonec existuje kompromis mezi ochranou proti neobvyklé ztrátě dat a vyššími náklady.

Paměť ECC obvykle vyžaduje vyšší cenu ve srovnání s pamětí bez ECC, kvůli dalšímu hardwaru vyžadovanému pro výrobu paměťových modulů ECC a kvůli nižším objemům výroby paměti ECC a souvisejícího systémového hardwaru. Dražší mohou být také základní desky, čipové sady a procesory podporující ECC.

Podpora ECC se u různých výrobců základních desek liší, takže paměť ECC nemusí být základní deskou nekompatibilní s ECC jednoduše rozpoznána. Většina základních desek a procesorů pro méně kritické aplikace není navržena tak, aby podporovala ECC, takže jejich ceny mohou být udržovány nižší. Některé desky a procesory s povoleným ECC jsou schopny podporovat unbuffered (neregistrovaný) ECC, ale budou také pracovat s non-ECC pamětí; systémový firmware umožňuje funkci ECC, pokud je nainstalována paměť ECC.

ECC může snížit výkon paměti v některých systémech přibližně o 2–3 procenta, v závislosti na aplikaci a implementaci, kvůli dalšímu času potřebnému pro kontrolu chyb řadiči paměti ECC. Moderní systémy však integrují testování ECC do CPU a nevytvářejí žádné další zpoždění přístupů do paměti, pokud nejsou detekovány žádné chyby.

Paměť podporující ECC může přispět k další spotřebě energie v důsledku obvodů pro opravu chyb.

Poznámky

Reference

externí odkazy