RAM歷史 <<
Previous Next >> 安裝內存模塊
奇偶校驗
內存模塊寬度
內存模塊的寬度由可傳輸的位數決定。內存最初以8位形式出現,但在當前系統中已增加到16位,32位和現在的64位。必須以存儲體的形式添加內存,以確保其寬度等於內存總線的寬度。例如,如果您需要64位,而單個模塊提供64位,則庫中將只有一個模塊。如前所述,雙通道內存需要兩倍的存儲量,因此存儲庫中需要兩個64位(128位)DIMM,而三通道則需要三個。

奇偶校驗和ECC
奇偶校驗用於執行基本的錯誤檢查並確保內存內容可靠。此內存比非奇偶校驗慢,但增加了服務器和某些台式機工作站所需的可靠性。
奇偶校驗是一種檢測內存錯誤的相當簡單的方法,沒有任何校正功能。奇偶校驗在添加到傳輸數據字符串的單個數據位中表示。如果模塊通常具有七個數據位,則將八分之一添加為奇偶校驗位。如果模塊通常有八個芯片用於數據,則添加第九個芯片以實現奇偶校驗。
每個字節都有一個與之關聯的奇偶校驗位。在七位組成原始數據的情況下,總共傳輸了八位(七位原始數據位加一個奇偶校驗位)。在八位組成原始數據的情況下,總共傳輸九位(八位數據位加一位奇偶校驗位)。奇偶校驗位在寫入時設置,然後在讀取時進行計算和比較,以確定自存儲數據以來是否有任何位發生了更改。這種類型的檢查僅限於檢測單個位錯誤。如果更改了兩位,則奇偶校驗將“通過”,並且允許該錯誤可能破壞數據。
奇偶校驗可以實現為“ 0”奇偶校驗或“ 1”奇偶校驗。存儲字節時,將加零(如果選擇了“ 1”奇偶校驗,則為零)的數目。結果存儲在奇偶校驗位中-如果為奇數,則為“ 1”;如果為偶數,則為“ 0”。當從內存中讀取該字節時,將再次對這些位進行計數,並將結果與奇偶校驗位中存儲的結果進行比較。匹配表示數據從存儲時起就沒有改變(或以結果相同的方式更改了兩位)。
不管發送的原始數據位數如何,確定奇偶校驗位的過程都是相同的。通常,原始數據有七位或八位。
奇偶校驗位是通過對數據字符串中“ 1”位的數量進行計數來確定的。
範例(1)
使用偶校驗發送八位原始數據11110000。要確定奇偶校驗位(數據的第9位),請計算數據字符串中“ 1”位的數量。在這種情況下,有四個“ 1”位。因為“ 1”位的總數是四,所以數據是偶數。因此,奇偶校驗位設置為0。

範例(2)
使用奇偶校驗傳輸七位原始數據1000010。要確定奇偶校驗位(數據的第八位),請計算數據串中“ 1”位的數量。在這種情況下,有兩個“ 1”位。因此,將奇偶校驗位設置為1,因為數據中“ 1”位(兩個)的總數為偶數,這與傳輸的奇數奇偶校驗不匹配。由於“ 1”位的數量和奇偶校驗設置(奇數)不匹配,因此必須將奇偶校驗位設置為1。由於“ 1”位的總數為2,因此將奇偶校驗位“ 1”添加到該字符串將在整個八位字符串(七個數據位加一個奇偶校驗位)中產生奇數個“ 1”位(三個)。

由於所有錯誤中約有90% 是單比特類型的,因此奇偶校驗通常在大多數情況下就足夠了。不幸的是,由於要花一些額外的時鐘週期來計算,存儲和獲取奇偶校驗位,因此錯誤檢查要付出一定的代價,這會稍微降低性能。另一個考慮因素是,由於無法通過奇偶校驗解決錯誤,因此實際上必須停止應用程序,並發出一條錯誤消息,指出遇到奇偶校驗錯誤。
範例(3)
使用偶校驗發送111100000。要確定在傳輸過程中是否已更改了內存,請計算數據字符串中包括奇偶校驗位的“ 1”位數。在這種情況下,有四個“ 1”位。由於數據中的“ 1”位(四位)總數為偶數,與傳輸的偶數奇偶校驗相匹配,因此未更改任何存儲器。

範例(4)
使用奇偶校驗發送10000100。要確定在傳輸過程中是否已更改了內存,請計算數據字符串中包括奇偶校驗位的“ 1”位數。在這種情況下,有兩個“ 1”位。數據中“ 1”位的總數(兩個)是偶數,與傳輸的奇數奇偶校驗不匹配。因此,內存已更改。

RAM歷史 <<
Previous Next >> 安裝內存模塊