主記憶體刷洗

主記憶體刷洗(英語:Memory scrubbing)也可稱主記憶體擦洗主記憶體清洗,是指從每個電腦記憶體位置讀取數據、以一種錯誤糾錯碼(ECC)糾正可能存在的位元錯誤,再將校正後的數據寫回原位置。[1]

由於現代電腦主記憶體晶片的高度整合,單個主記憶體單元的結構已足夠小到易於受到宇宙射線和/或阿爾法粒子的影響。由這些現象引發的錯誤被稱為軟性錯誤,這對基於DRAMSRAM的主記憶體來說可能是個問題。在任何單個主記憶體位元發生軟錯誤的概率非常小。但是,配以現代電腦的龐大主記憶體空間,加之長時間持續執行的如伺服器,在已安裝主記憶體中發生軟錯誤的概率可能比較顯著。

糾錯主記憶體中的資訊被冗餘儲存,以便能校正每個主記憶體字(word)的單位元錯誤。也因如此,ECC主記憶體可以支援對主記憶體的刷洗。換句話說,如果主記憶體控制器系統性掃描主記憶體,則可以檢測到單位元錯誤,並可以使用ECC校驗和來確定出錯的位元並將校正的數據寫回主記憶體。

概述

在同一個字(word)未發生多位元錯誤前周期性檢查每個主記憶體位置很重要,這是因為截至2008年,ECC主記憶體模組還不能校正出現多位元的錯誤。

為了不干擾來自CPU的常規主記憶體請求以及防止電腦效能下降,刷洗通常僅在空閒時進行。由於刷洗是由正常的讀取和寫入操作組成,它可能增加主記憶體相較非刷洗操作時的功耗英語Power consumption。因此,刷洗應該周期性但不是持續性進行。許多伺服器可以在BIOS設置程式中組態刷洗周期。

普通的主記憶體讀取是由CPU或DMA裝置發出和檢查ECC錯誤,但由於數據局部性原因,它們可能被限制在小範圍的地址空間內,並且保持位置、很長時間不被觸碰。這些位置因而可能容易受到多個軟錯誤的影響,而刷洗可確保在指定時間內檢查整個主記憶體。

在某些系統上,不止主主記憶體(基於DRAM的主記憶體)支援刷洗,有些CPU高速緩衝記憶體(基於SRAM)也可以。在大多數系統上,兩者都可以獨立組態刷洗速率。因為快取比主主記憶體小得多,所以快取的擦洗不需要頻繁進行。

主記憶體刷洗提高了可靠性,因此它可被歸類為可靠性、可用性和可維護性(RAS)特性。

變種

它通常有兩種變體,被稱為巡邏刷洗(patrol scrubbing)與按需刷洗(demand scrubbing)。雖然它們本質上都執行主記憶體刷洗及相關的錯誤糾正(如果可行),兩者的主要區別是如何啟動和執行。巡邏刷洗會在系統空閒時自動執行,而按需刷洗是在數據被主記憶體實際請求時執行錯誤糾正。[2]

參見

參考資料

  1. ^ Ronald K. Burek.
  2. ^ Supermicro X9SRA motherboard manual (PDF). Supermicro: 4-10. March 5, 2014 [February 22, 2015]. (原始內容存檔 (PDF)於2019-11-09).