奇偶校驗位

奇偶校驗位

奇偶校驗位 (Parity)多被套用於計算機硬體的錯誤檢測中。奇偶校驗通常用在數據通信中來保證數據的有效性。每個設備必須決定是否它將被用為偶校驗、奇校驗、或非校驗。傳送設備添加1s在每個它傳送的每條串上或決定這個數是偶數或奇數。然後,它添加一個額外的位,叫做校驗位,到這個串上。如果偶校驗在使用,校驗位將這些位置為偶數;如果奇校驗在使用,校驗位將這些位置為奇數。

基本介紹

  • 中文名:奇偶校驗位
  • 外文名:Parity
  • 領域:計算機數據通信
  • 分類:偶校驗、奇校驗、或非校驗
  • 套用:多用於計算機硬體的錯誤檢測
  • 相關名詞:校驗位
基本概況,錯誤檢測,使用,記憶體檢驗,奇偶校驗塊,

基本概況

奇偶校驗位 (Parity)是指偶數或者奇數或甚至對一個數字的性質。奇偶校驗通常用在數據通信中來保證數據的有效性。每個設備必須決定是否它將被用為偶校驗、奇校驗、或非校驗。傳送設備添加1s在每個它傳送的每條串上或決定這個數是偶數或奇數。然後,它添加一個額外的位,叫做校驗位,到這個串上。如果偶校驗在使用,校驗位將這些位置為偶數;如果奇校驗在使用,校驗位將這些位置為奇數。
奇偶校驗位流程圖奇偶校驗位流程圖
奇偶校驗位是一個表示給定位數的二進制數中 1 的個數是奇數還是偶數的二進制數。奇偶校驗位是最簡單的錯誤檢測碼。
奇偶校驗位有兩種類型:偶校驗位與奇校驗位。如果一組給定數據位中 1 的個數是奇數,那么偶校驗位就置為 1,從而使得總的 1 的個數是偶數。如果給定一組數據位中 1 的個數是偶數,那么奇校驗位就置為 1,使得總的 1 的個數是奇數。偶校驗實際上是循環冗餘校驗的一個特例,通過多項式 x + 1 得到 1 位 CRC。

錯誤檢測

如果傳輸過程中包括校驗位在內的奇數個數據位發生改變,那么奇偶校驗位將出錯表示傳輸過程有錯誤發生。因此,奇偶校驗位是一種錯誤檢測碼,但是由於沒有辦法確定哪一位出錯,所以它不能進行錯誤校正。發生錯誤是必須扔掉全部的數據,然後從頭開始傳輸數據。在噪聲很多的媒介上成功傳輸數據可能要花費很長的時間,甚至根本無法實現。但是奇偶校驗位也有它的優點,它是使用一位數據能夠達到的最好的校驗碼,並且它僅僅需要一些異或門就能夠生成。參見漢明碼中關於其它錯誤校正碼的描述。

使用

由於它很簡單,所以奇偶校驗位用於許多計算機硬體中遇到麻煩時能夠重新操作或者通過簡單的錯誤檢測就能起到很大作用的場合。例如SCSI匯流排使用奇偶校驗位檢測傳輸錯誤,許多微處理器的指令高速快取中也包括奇偶校驗位保護。因為指令快取數據是主記憶體數據的副本,所以在發現錯誤的時候能夠拋棄錯誤數據並且重新取回數據。
在串列數據通信中,常用的格式是 7 個數據位、1 個校驗位、1 到 2 個停止位。這種格式用方便的 8 位位元組巧妙地適應了所有的 7 位 ASCII 字元。也可以用其它的格式表示,8 位數據加上 1 個校驗位可以傳輸任意的 8 位位元組數據。
在串列通信中,奇偶校驗位通常是由UART這樣的接口硬體生成、校驗的,在接收方,通過接口硬體中的暫存器的狀態位傳給 CPU 以及作業系統。錯誤數據的恢復通常是通過重新傳送數據,這個過程通常由如作業系統輸入輸出程式這樣的軟體處理的。

記憶體檢驗

對於記憶體的奇偶校驗工作要從比特概念說起,比特(bit)是記憶體中的最小單位,也稱“位”、它只有兩個狀態分別以1和0表示。我們將8個連續的比特叫做一個位元組(byte)。非奇偶校驗記憶體的每個位元組只有8位,若它的某一位存儲了錯誤的值,就會使其中存儲的相應數據發生改變而導致應用程式發生錯誤。而奇偶校驗記憶體在每一位元組(8位)外又額外增加了一位作為錯誤檢測之用。比如一個位元組中存儲了某一數值(1、0、0、1、1、1、1、0),把這每一位相加起來(1+0+0+1+1+1+1+0=5)。若其結果是奇數,校驗位就定義為1,反之則為0。當CPU返回讀取儲存的數據時,它會再次相加前8位中存儲的數據,計算結果是否與校驗位相一致。當CPU發現二者不同時就作出一定的反應。現在主機板都可以使用帶奇偶校驗位或不帶奇偶校驗位兩種記憶體條,但要注意兩種不能混用。
上面的敘述描述了奇偶校驗在電腦內是如何工作的。需要說明的是,外圍設備連線匯流排和I/O匯流排控制器使用的是奇數的奇偶錯誤校驗方法。奇偶位校驗不是確實可信的錯誤校驗方法,因為它可能兩個“位”在傳送時都發生可錯誤。對於個人電腦內部的傳輸,這種可能性被認為是微乎其微的。在一些大型機系統中,數據的完整性是非常重要的,三個“位”被分配用於奇偶校驗。
奇偶校驗也用於數據機之間的通訊。這裡,奇偶校驗可以被選擇是偶數的(一個連續的傳輸將形成一個偶數)還是奇數的。用戶也可以選擇沒有奇偶,意味著數據機沒有傳輸或者校驗位。當沒有奇偶可以選擇(或者默認)時,它被假定為有其它的形式的校驗以探測傳輸過程的任何錯誤。沒有奇偶通常也意味著校驗位能被用於數據和傳輸加速。在貓到貓的通信中,奇偶的類型在傳輸發生之前被傳送和接受的數據機調整。

奇偶校驗塊

一些冗餘磁碟陣列(en:RAID)使用奇偶校驗塊實現冗餘。如果陣列中的一塊磁碟出現故障,工作磁碟中的數據塊與奇偶校驗塊一起來重建丟失的數據。
下面每列表示一個磁碟,假設 A1 = 00000111、A2 = 00000101 以及 A3 = 00000000。A1、A2、A3 異或得到的 Ap 等於 00000010。如果第二個磁碟出現故障,A2 將不能被訪問,但是可以通過 A1、A3 與 Ap 的異或進行重建:
A1 XOR A3 XOR Ap = 00000101
冗餘磁碟陣列
A1 A2 A3
Ap B1 B2
Bp C1 C2
C3 C4 Cp
注意:數據塊是格式 A#,奇偶校驗塊是 Ap。

相關詞條

熱門詞條

聯絡我們