I mandags fortsatte Linux-kerneskaberen Linus Torvalds med en frustreret rant om manglen på fejlkorrigering af kontrolsum (ECC) RAM i forbruger-pcer og bærbare computere.
… den vildledte og bagudvendte politik med “forbrugere behøver ikke ECC”, markedet for ECC-hukommelse forsvinder.
Argumenterne mod ECC var altid komplette og fuldstændige affald. Nu begynder selv hukommelsesproducenterne at gøre ECC internt, fordi de endelig ejes op til det faktum, at de absolut skal.
Hvis du ikke er fortrolig med ECC RAM, er det sandsynligvis fordi du ikke bygger eller specificerer dedikerede servere ved hjælp af server-grade CPUer og bundkort – som desværre handler om det eneste sted, du faktisk finder ECC. I en nøddeskal inkluderer ECC RAM en lille smule ekstra hukommelse, der bruges til detektion og korrektion af fejl.
Hukommelsesfejl og sandsynlighed
I de fleste moderne implementeringer betyder det for hver 64- bitord gemt i RAM, er der otte kontrolbits. En enkelt bitfejl – en 0 vendt til 1 eller en 1 vendt til 0 – kan både registreres og rettes automatisk. To bits, der vendes i det samme ord, kan detekteres, men ikke korrigeres. Tre eller flere bits, der vendes i det samme ord, vil sandsynligvis blive detekteret, men detektering er ikke garanteret.
Bitflip kan ske af mange årsager, begyndende med kosmisk strålepåvirkning eller simpel hardwarefejl. En storstilet undersøgelse af Googles servere viste, at ca. 32 procent af alle servere (og 8 procent af alle DIMMer) i Googles flåde oplever mindst en hukommelsesfejl om året. Men langt størstedelen af disse er enkeltbitfejl— og da Google bruger server-CPUer og ECC RAM, betyder det, at de pågældende maskiner fortsætter med at køre.
På forbrugermaskiner forbliver selv disse single-bit-fejl – som ifølge Googles data er mere end 40 gange mere tilbøjelige end multiple-bit-fejl – uopdaget og kan introducere ustabilitet i systemer og korruption i data.
Bitflip er ikke altid utilsigtede
Ikke alle RAM-fejl er resultatet af hardwarefejl eller utilsigtet EMF-problem. I de senere år har forskere udviklet mere og mere praktiske fysikbaserede sidekanalangreb ved hjælp af kontrollerede, hurtige bitflip i områder af RAM, der er tilgængelige for en applikation for at udlede eller ændre dataværdierne i tilstødende områder af RAM, de ikke skulle være i stand til .
Selvom ECC RAM ikke kan mindske RAMBleed-stilangreb, der udleder værdierne for tilstødende hukommelse, kan det generelt stoppe Rowhammer-angreb – hvor hurtigt vendende bits i et RAM-område får bit i et tilstødende område til at ændre sig. / p>
Selv når ECC ikke aktivt kan forhindre, at et Rowhammer-angreb påvirker systemet – for eksempel når det vender flere bits i ét ord – kan det i det mindste advare systemet om problemet og i de fleste tilfælde forhindrer Rowhammer-angrebet i at gøre noget andet end at forårsage nedetid. (De fleste ECC-systemer er konfigureret til at stoppe hele maskinen, hvis der opdages en ukorrekt fejl.)
Torvalds bebrejder Intel
Og hukommelsesproducenterne c lægger det på grund af økonomi og lavere magt. Og de lyver bastarder – lad mig endnu en gang henvise til rækkehammer om, hvordan disse problemer allerede har eksisteret i flere generationer, men disse f * ckers solgte med glæde ødelagt hardware til forbrugerne og hævdede, at det var et “angreb”, når det altid var “vi skærer hjørner.”
Hvor mange gange er der sket en rækkehammer som bit-flip bare ved ren uheld på rigtige ikke-angrebsmængder? Vi ved aldrig. Fordi Intel skubbede lort til forbrugerne.
Torvalds tager den dristige holdning om, at manglen på ECC RAM i forbrugerteknologi er Intels skyld på grund af virksomhedens kunstige politik markedssegmentering. Intel har en interesse i at skubbe dybere lommeforretninger mod sine dyrere – og rentable – serverkvalitet-CPUer snarere end at lade disse enheder effektivt bruge de nødvendigvis lavere marginer forbrugerdele.
Fjernelse af support for ECC RAM fra CPUer, der ikke målrettes direkte mod serververdenen, er en af måderne, Intel har holdt dem på markeder stærkt segmenteret. Torvalds argument her er, at Intels nægtelse af at støtte ECC RAM i dets forbrugermålrettede dele – sammen med dets de facto næsten monopol i dette rum – er den virkelige årsag til, at ECC næsten ikke er tilgængelig uden for serverrummet.
Det sædvanlige argument omkring, hvorfor ECC ikke er til stede i forbrugerteknologi, drejer sig om omkostninger, men vi formoder, at Torvalds har ret til det her. På trods af at ECC RAM i det væsentlige er en svær at finde specialitetsdel, koster det typisk kun ca. 20 procent mere pr. DIMM end ikke-ECC i detailhandlen. Det virkelige problem er, at det uden bundkort og CPUer, der understøtter det, ikke dig noget godt.