請看一下下面的照片,上方是一般的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的話大概就只有當機一途了),至於Unbuffered/Registered與否主要是在MC的fan in/fan out上(Registered可以降低MC的負載同時降低發生錯誤的機率,但和ECC與否並沒有直接的關係)....
還是直接存取沒錯, 但是存取時多了一個"檢查碼", 節錄其他地方看到的:
ECC (Error Correcting Code)是一種記憶體上的除錯技術,用來檢查傳送到記憶體的資料是否正確。系統會在傳送數據資料時,為8位元資料加入額外的1位元Parity Check(同位檢查)編碼。當數據出現錯誤時,ECC能自行更正錯誤,或要求系統重新傳送資料。這樣可確保系統正常運作而不會因資料錯誤而導致當機。因為多了一重除錯步驟,因此ECC RAM運行速度會比Non-ECC記憶體稍慢。另外由於ECC記憶體加入了同位檢查編碼,故其運作位元長度變成72-bit,而非傳統的64-bit。這類記憶體多應用於高階電腦如伺服器上。