I måndags fortsatte Linux-kärnskaparen Linus Torvalds frustrerad om bristen på felkorrigering av kontrollsumma (ECC) RAM i konsumentdatorer och bärbara datorer.
… den missvisade och bakåtgående politiken för ”konsumenter behöver inte ECC”, marknaden för ECC-minne försvinner.
Argumenten mot ECC var alltid fullständigt och fullständigt skräp. Nu börjar även minnetillverkarna göra ECC internt eftersom de äntligen ägde upp till det faktum att de absolut måste.
Om du inte känner till ECC RAM, beror det troligen på att du inte bygger eller specificerar dedikerade servrar med hjälp av processorer och moderkort av serverkvalitet – vilket tyvärr handlar om det enda stället du faktiskt hittar ECC. I ett nötskal innehåller ECC RAM en liten mängd extra minne som används för detektering och korrigering av fel.
Minnesfel och sannolikhet
I de flesta moderna implementeringar betyder detta för varje 64- bitord lagrat i RAM, finns det åtta kontrollbitar. Ett enstaka bitfel – ett 0 vänt till 1 eller ett 1 vänt till 0 – kan både detekteras och korrigeras automatiskt. Två bitar som vänds i samma ord kan detekteras men inte korrigeras. Tre eller flera bitar som vänds i samma ord kommer troligen att detekteras, men detektering kan inte garanteras.
Bitvändningar kan hända av många anledningar, som börjar med kosmisk strålepåverkan eller enkelt maskinvarufel. En storskalig studie av Googles servrar visade att ungefär 32 procent av alla servrar (och 8 procent av alla DIMM-enheter) i Googles flotta upplever minst ett minnesfel per år. Men de allra flesta av dessa är enbitsfel – och eftersom Google använder server-CPU: er och ECC-RAM, betyder det att maskinerna i fråga fortsätter med lastbil.
I konsumentmaskiner går även dessa enstaka bitfel – som är mer än 40 gånger mer benägna att inträffa än flerbitsfel, enligt Googles data – oupptäckta och kan introducera instabilitet i system och korruption i data.
Bitflipar är inte alltid oavsiktliga
Inte alla RAM-fel är resultatet av ett maskinvarufel eller oavsiktligt EMF-problem. Under de senaste åren har forskare utvecklat alltmer praktiska fysikbaserade sidokanalattacker, med hjälp av kontrollerade, snabba bitflipningar i RAM-områden som är tillgängliga för en applikation för att härleda eller modifiera datavärdena i angränsande RAM-områden som de inte borde kunna .
Även om ECC-RAM inte kan mildra RAMBleed-stilattacker som härrör värdena för intilliggande minne, kan det i allmänhet stoppa Rowhammer-attacker – där snabbt vändande bitar i ett RAM-område gör att bitar i ett intilliggande område ändras.
Även när ECC inte aktivt kan förhindra att en Rowhammer-attack påverkar systemet – till exempel när den vänder flera bitar i ett ord – kan den åtminstone varna systemet om problemet och i de flesta fall förhindrar Rowhammer-attacken att göra något annat än att orsaka stillestånd. (De flesta ECC-system är konfigurerade för att stoppa hela maskinen om ett fel som inte kan korrigeras upptäcks.)
Torvalds skyller på Intel
Och minnetillverkarna c lemlägger det på grund av ekonomi och lägre makt. Och de ljuger jäveler – låt mig än en gång peka på radhammare om hur dessa problem redan har funnits i flera generationer, men dessa f * ckers sålde gärna trasig hårdvara till konsumenterna och hävdade att det var ett ”attack”, när det alltid var ”vi skär hörn.”
Hur många gånger har en rad-hammare som bit-flip hänt bara av ren otur på riktiga icke-attackbelastningar? Vi vet aldrig. Eftersom Intel pressade skit till konsumenter.
Torvalds tar den djärva ståndpunkten att bristen på ECC RAM i konsumentteknik är Intels fel på grund av företagets politik för konstgjord marknadssegmentering. Intel har ett intresse av att driva företag med djupare fickor mot sina dyrare och lönsammare processorer av serverkvalitet snarare än att låta dessa enheter effektivt använda de nödvändigtvis lägre marginalen för konsumentdelar.
Ta bort support för ECC RAM från processorer som inte riktas direkt mot servervärlden är ett av sätten som Intel har behållit dem marknader starkt segmenterade. Torvalds argument här är att Intels vägran att stödja ECC RAM i sina konsumentinriktade delar – tillsammans med dess de facto nästan monopol i det utrymmet – är den verkliga anledningen till att ECC nästan är otillgänglig utanför serverutrymmet.
Det vanliga argumentet kring varför ECC inte finns i konsumentteknik kretsar kring kostnad, men vi misstänker att Torvalds har rätten till det här. Trots att ECC RAM i huvudsak är en svår att hitta specialitet, kostar det vanligtvis bara cirka 20 procent mer per DIMM än icke-ECC i detaljhandeln. Det verkliga problemet är att utan moderkort och processorer som stöder det, kommer det inte att göra det du är bra.