在最近的一個(gè)有關(guān)糾錯(cuò)碼(ECC:error correction code )內(nèi)存的談?wù)撝校?a class="innerlink" href="http://theprogrammingfactory.com/tags/Linux" target="_blank">Linux的創(chuàng)建者Linus Torvalds公開批評(píng)英特爾沒有將ECC RAM主流化到消費(fèi)平臺(tái)上,同時(shí)贊揚(yáng)AMD在Ryzen平臺(tái)上支持它。
他強(qiáng)調(diào),ECC絕對(duì)重要,但英特爾正在倚仗其極其糟糕的市場細(xì)分來殺死整個(gè)ECC行業(yè)。
他進(jìn)一步表示,現(xiàn)在走出去尋找ECC DIMM,卻很難找到,最近由于AMD,可能情況有所好轉(zhuǎn),但這正式他所關(guān)注的。在他看來,英特爾一直對(duì)整個(gè)行業(yè)和用戶不利,因?yàn)樗J(rèn)為他們使用ECC的政策是錯(cuò)誤的和誤導(dǎo)的……
Linus Torvalds在論壇中說道,如果您不相信我,那么只要看看多代的rowhammer,每次Intel和內(nèi)存制造商都會(huì)為下次的修復(fù)方法感到困惑。
Torvald認(rèn)為英特爾應(yīng)該為消費(fèi)者領(lǐng)域缺乏廣泛的ECC采用負(fù)責(zé)。Torvalds說,這是由于英特爾完全鎖定了其消費(fèi)類芯片組和處理器對(duì)ECC的支持,并聲稱僅此一項(xiàng)就無濟(jì)于事了內(nèi)存制造商為消費(fèi)者創(chuàng)建臺(tái)式ECC內(nèi)存的任何動(dòng)力。
Linus還譴責(zé)可以通過ECC內(nèi)存輕松解決的Rowhammer問題。DRAM存儲(chǔ)單元可能會(huì)將自己的電荷泄漏到其他存儲(chǔ)單元中。通常,這只是可能導(dǎo)致內(nèi)存錯(cuò)誤的系統(tǒng)RAM中的缺陷,但Rowhammer攻擊將這種趨勢用作獲取提升的系統(tǒng)權(quán)限的機(jī)制。
Torvalds還說,為操作系統(tǒng)內(nèi)核開發(fā)代碼時(shí),標(biāo)準(zhǔn)內(nèi)存是一場噩夢。Linus概述了嘗試查找無法解釋的內(nèi)核錯(cuò)誤發(fā)生的地方的麻煩,并聲稱這些錯(cuò)誤通??赡苁怯布栴}而不是代碼問題的結(jié)果,而所有這些都可以通過ECC解決。
Torvalds還稱贊AMD非官方支持ECC。即使是非官方的支持,Linus仍然很高興AMD甚至在主流的消費(fèi)者Ryzen平臺(tái)上擴(kuò)展了該選項(xiàng),使消費(fèi)者可以選擇使用ECC而不必為服務(wù)器級(jí)硬件支付大量費(fèi)用?!胺枪俜街С帧笔欠袷窃黾硬捎肊CC的最佳策略,尚有待商榷通常無法正常工作),但Torvalds顯然認(rèn)為這是朝正確方向邁出的一步。
Torvalds認(rèn)為ECC有許多優(yōu)點(diǎn),他希望ECC內(nèi)存至少可以成為所有DIY PC和預(yù)制件的選擇,尤其是對(duì)于那些重視系統(tǒng)穩(wěn)定性的專業(yè)人員。內(nèi)存對(duì)于計(jì)算機(jī)的穩(wěn)定性至關(guān)重要,因?yàn)榧词故亲钌倭康腻e(cuò)誤也可能導(dǎo)致崩潰或數(shù)據(jù)丟失。不幸的是,即使標(biāo)準(zhǔn)的非ECC內(nèi)存的風(fēng)險(xiǎn)通常非常低,它也總是有出錯(cuò)的風(fēng)險(xiǎn),并且永遠(yuǎn)不會(huì)100%穩(wěn)定。希望我們會(huì)看到推動(dòng)ECC RAM成為消費(fèi)者領(lǐng)域中更可行的選擇的動(dòng)力。
什么是ECC?
ECC 是一種指令糾錯(cuò)技術(shù),能夠檢測并糾正常見的各種內(nèi)存數(shù)據(jù)損壞情況,即Error Checking and Correcting。
內(nèi)存錯(cuò)誤是電腦內(nèi)部的電磁干擾造成的。這種干擾會(huì)導(dǎo)致 DRAM(動(dòng)態(tài)隨機(jī)存取內(nèi)存)的單位自發(fā)地變成相反的狀態(tài)。電磁干擾以背景輻射的形式存在,海拔越高,干擾越大。宇宙飛船尤其容易有很高的錯(cuò)誤率。
單位錯(cuò)誤可能是隱性的,也就是說,它們不會(huì)對(duì)數(shù)據(jù)造成嚴(yán)重影響;但是,內(nèi)存單元是相互關(guān)聯(lián)的,因此單位變化可能會(huì)影響整個(gè)系統(tǒng),從而導(dǎo)致系統(tǒng)出錯(cuò),尤其是在需要嚴(yán)密運(yùn)行的系統(tǒng)中。
ECC 內(nèi)存包含附加內(nèi)存位和內(nèi)存控制器,這些控制器用于控制模塊上附加芯片中的附加位。在將數(shù)據(jù)寫入到內(nèi)存時(shí),ECC 內(nèi)存使用附加位來存儲(chǔ)加密代碼,同時(shí)存儲(chǔ)糾錯(cuò)碼。讀取數(shù)據(jù)時(shí),會(huì)將存儲(chǔ)的糾錯(cuò)碼與讀取數(shù)據(jù)時(shí)生成的糾錯(cuò)碼進(jìn)行比較。如果讀取的代碼與存儲(chǔ)的代碼不匹配,會(huì)用奇偶校驗(yàn)位對(duì)前者進(jìn)行解密,以確定哪個(gè)位出錯(cuò),然后立即糾正該位。癥狀表是一種可以識(shí)別并糾正位錯(cuò)誤的數(shù)學(xué)方法。
在數(shù)據(jù)處理過程中,ECC 內(nèi)存會(huì)使用特殊算法不斷掃描代碼,以檢測并糾正單位內(nèi)存錯(cuò)誤。
在金融等行業(yè)以及科學(xué)界,ECC 內(nèi)存對(duì)于維持?jǐn)?shù)據(jù)完整性至關(guān)重要。大多數(shù)服務(wù)器內(nèi)存也是 ECC 內(nèi)存。ECC 內(nèi)存進(jìn)一步減少了數(shù)據(jù)崩潰情況,這對(duì)于多用戶服務(wù)器應(yīng)用程序非常重要。
與非 ECC 內(nèi)存相比,ECC 內(nèi)存通常更昂貴,速度可能稍慢。其他系統(tǒng)組件(例如,CPU 和主板)也必須支持 ECC 內(nèi)存。如果您的系統(tǒng)要求數(shù)據(jù)完整性和較高可用性,Crucial 英睿達(dá) ECC 內(nèi)存或許是個(gè)不錯(cuò)的選擇。