iT邦幫忙

0

請問一般pc的記憶體是會存取兩次做比對嗎??想說一般ram不是直接存取嗎??怎會有校驗機制???

網路上看到以下描述....想說一般ram不是直接存取嗎??怎會有校驗機制???

ecc-ram:當同位元驗證錯誤時,記憶體提取單元會再提取資料一次,若還是錯誤,就會發出ram錯誤的訊息
一般ram:當2次提取無法一致時,將提取第3次,並以第3次的為準,缺少錯誤驗證能力,常導致作業系統錯誤

2 個回答

6
cmwang
iT邦高手 1 級 ‧ 2012-09-25 09:38:14
最佳解答

請看一下下面的照片,上方是一般的Non ECC Unbuffered DDR SDRAM,下方是ECC Registered DDR SDRAM,Non ECC和ECC的差異主要是8顆或9顆(除非有9bit的顆粒才有可能出現8顆DRAM又支援ECC的module,但是DRAM廠好像沒這麼幹的疑惑),支援ECC與否是取決於Memory Controller(不論是放在北橋或是CPU內建),當CPU要存取記憶體時MC要負責透過ECC機制判斷是否出現錯誤和出現錯誤時是否可以靠ECC修正回來,過度簡化成要是讀取錯誤時便重試似乎並不合適(尤其是Non ECC者先天上根本沒有判斷正確與否的依據,要如何得知讀到的資料是錯誤的----在Non ECC的場合遇到RAM error下場通常就是執行錯誤,如果是在user space的話還有機會靠OS的保護機制隔離開來,要是在kernel space的話大概就只有當機一途了Orz),至於Unbuffered/Registered與否主要是在MC的fan in/fan out上(Registered可以降低MC的負載同時降低發生錯誤的機率,但和ECC與否並沒有直接的關係)....

4
slime
iT邦大師 1 級 ‧ 2012-09-25 05:49:56

還是直接存取沒錯, 但是存取時多了一個"檢查碼", 節錄其他地方看到的:

ECC (Error Correcting Code)是一種記憶體上的除錯技術,用來檢查傳送到記憶體的資料是否正確。系統會在傳送數據資料時,為8位元資料加入額外的1位元Parity Check(同位檢查)編碼。當數據出現錯誤時,ECC能自行更正錯誤,或要求系統重新傳送資料。這樣可確保系統正常運作而不會因資料錯誤而導致當機。因為多了一重除錯步驟,因此ECC RAM運行速度會比Non-ECC記憶體稍慢。另外由於ECC記憶體加入了同位檢查編碼,故其運作位元長度變成72-bit,而非傳統的64-bit。這類記憶體多應用於高階電腦如伺服器上。

我要發表回答

立即登入回答