データベーススペシャリスト 2013年 午前2 問22
問題文
ECCメモリで、2ビットの誤りを検出し、1ビットの誤りを訂正するために用いるものはどれか。
選択肢
ア:偶数パリティ
イ:垂直パリティ
ウ:チェックサム
エ:ハミング符号(正解)
🔒 解説は解答すると表示されます
ハミング符号(ECC)【午前2解説】
正解の理由
メモリ用のECCで「1ビット誤りを訂正し、2ビット誤りを検出する」機能を満たすのは選択肢エのハミング符号(実務では拡張ハミング=SECDED)です。ハミング符号は符号語間の最小ハミング距離が3となるよう設計され、単一ビット誤りを訂正できる一方で、適切に全体パリティを付加した拡張ハミング(SECDED: Single Error Correct, Double Error Detect)では2ビット誤りを確実に検出して訂正不能として報告できます。したがって問題の要件に合致します。
解法ステップ
- 各選択肢が「検出」「訂正」のどちらを提供するかを把握する。
- 「1ビット訂正」かつ「2ビット検出」を同時に満たせる方式を探す。
- ハミング符号の性質(最小距離、拡張によるSECDED)を当てはめて判定する。
選択肢別の誤答解説
-
ア: 偶数パリティ
偶数パリティはブロック全体のビット数の偶奇を保持するだけで、単一ビット誤りを検出できます(1ビットが反転すればパリティが崩れる)が、誤りの位置は分からず訂正はできません。またビット反転が偶数個(2ビットなど)だと検出できない場合があります。従って「1ビット訂正」を満たしません。 -
イ: 垂直パリティ
「垂直パリティ」はしばしば横・縦のパリティを組み合わせた方式(ブロックパリティ)や行単位のパリティを指しますが、単純な垂直パリティだけでは位置特定→訂正ができず、要件を満たしません。冗長配置(例えば行×列パリティ)で限定的に訂正を行う設計もありますが、問題文で求める一般的なECC(1ビット訂正+2ビット検出)とは一致しません。 -
ウ: チェックサム
チェックサムはデータの誤り検出用であり、誤り位置を特定して訂正する機能はありません。誤り検出率はアルゴリズム次第で高められますが、1ビット訂正の能力はありません。 -
エ: ハミング符号(正解)
ハミング符号はパリティビットを配置して単一ビット誤りの訂正を行います。さらにメモリ向けの実装では全体パリティを追加した拡張ハミング(SECDED)を使い、1ビット誤りを訂正し、2ビット誤りを確実に検出するために用いられます。
よくある誤解
-
偶数パリティは1ビット誤りを検出できないという誤解
偶数パリティは1ビット誤りを検出できます。ただし位置特定や訂正はできません。また2ビットなど偶数個の誤りは見逃すことがあります。 -
「ハミング符号は常に2ビット誤りを検出する」との誤解
純粋な(非拡張)ハミング符号は理論的に最小距離3なので理論上は多くの2ビット誤りを非符号語に変えるため検出が可能ですが、デコーダの運用次第では2ビット誤りのパターンが単一ビット誤りと同じシンドロームを与え誤補正される危険があります。実務のECCではこの問題を避けるために全体パリティを追加した拡張ハミング(SECDED)を用い、2ビット誤りを確実に検出して訂正はしない(エラーとして報告する)ようにします。 -
チェック方式は同じ役割を果たすという誤解
CRCやチェックサムは高い検出率を持ちますが、単純に誤りを特定して訂正する機能は持ちません。エラー訂正(ECC)とは目的が異なります。
補足コラム
-
ハミングビットの個数の決定式
データビット数を、パリティビット数をとすると、次を満たす最小のが必要です。
例: データ4ビット()の場合、で となり、Hamming(7,4)が作れます。 -
Hamming(7,4)の簡単な動作例
位置1,2,4をパリティビットとし、残りをデータとします。受信時にパリティ検査を行い得られたシンドロームは誤り位置(0なら誤りなし)を示します。拡張ハミングではさらに全体パリティを持ち、シンドロームと全体パリティの組合せで「単一訂正」「二重検出」「誤りなし」を区別します。
FAQ
Q1: 実際のサーバ/PCのECCメモリはどれを使っているか?
A1: 多くは拡張ハミング(SECDED)を用いており、1ビット誤りを自動訂正し、2ビット誤りは検出してOS/管理ソフトに報告します。
A1: 多くは拡張ハミング(SECDED)を用いており、1ビット誤りを自動訂正し、2ビット誤りは検出してOS/管理ソフトに報告します。
Q2: CRCやチェックサムではダメなのか?
A2: CRCは高い検出能力がありますが、単体では誤り位置の特定・訂正を行いません。メモリのようなランダムなビット反転対策には、訂正機構を持つECC(ハミング系)が適しています。
A2: CRCは高い検出能力がありますが、単体では誤り位置の特定・訂正を行いません。メモリのようなランダムなビット反転対策には、訂正機構を持つECC(ハミング系)が適しています。
関連キーワード: ECC, ハミング符号, SECDED, 偶数パリティ, パリティビット, チェックサム

\ せっかくなら /
データベーススペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

