最終更新日:2026年8月31日
fe fe-technology computer-architecture memory error-correction
まず結論
ECC(Error Correcting Code)は、データに冗長なビットを付加して、メモリ上のビット誤りを検出・訂正するための仕組みです。
基本情報技術者試験では、ECCの細かな方式を暗記するより、まず次の2点を押さえます。
誤りを見つけるだけ
→ 誤り検出
誤りを見つけて直す
→ 誤り訂正
また、計算問題では、問題文に与えられた条件をそのまま使います。
たとえば、
データ幅が 2^n ビット
必要な冗長ビットが n+2 ビット
という条件なら、128ビットの場合は
128 = 2^7
→ n = 7
→ n + 2 = 9
となります。
「データビット数」と「指数 n」を混同しないことがポイントです。
直感的な説明
メモリに保存されているデータは、基本的には0と1の集まりです。
たとえば、
10110010
というデータを保存したとします。
何らかの原因で1ビットだけ変化すると、
10110010
↓
10100010
のように、本来とは異なる値になります。
ECCでは、元のデータだけでなく、誤りを確認するための追加情報も一緒に持たせます。
データ
+
冗長ビット
↓
誤りを検出・訂正する材料にする
イメージとしては、荷物に「中身を確認するためのチェック情報」を付けておくようなものです。
定義・仕組み
ECCは Error Correcting Code の略です。
メモリなどに保存するデータへ冗長なビットを追加し、読み出したときにデータの誤りを調べます。
冗長ビットとは
冗長ビットは、元のデータそのものではなく、誤りの検出や訂正のために追加するビットです。
元のデータ
→ 情報そのもの
冗長ビット
→ 誤りを調べるための追加情報
冗長ビットを追加する分、必要な記憶量は増えます。
一方で、データの信頼性を高めることができます。
ECCとパリティの違い
パリティチェックも冗長ビットを付加する方式ですが、基本的な役割は誤りの検出です。
| 方式 | 主な役割 |
|---|---|
| パリティチェック | 誤りを検出する |
| ECC | 誤りを検出し、方式によっては訂正する |
パリティチェックについては、パリティチェックとは?偶数パリティ・奇数パリティと16進数問題の解き方も参考になります。
冗長ビット数は問題文の条件を確認する
ここは重要です。
ECCなら常に「n+2ビット」と決まっているわけではありません。
必要な冗長ビット数は、採用する符号方式や訂正能力などによって変わります。
FEの計算問題で、
2^n ビットに対して n+2 ビット必要
と条件が与えられている場合は、その条件を使って計算します。
公式の出題範囲やシラバスは、IPA:基本情報技術者試験から確認できます。
科目Aでどう出る?
ECCでは、仕組みの説明だけでなく、2の累乗を使った計算問題にも注意します。
まずデータ幅を2の累乗に直す
たとえば128ビットなら、
128 = 2^7
なので、
n = 7
です。
問題文で必要な冗長ビット数が n+2 と指定されていれば、
7 + 2 = 9ビット
となります。
よく使う2の累乗
| n | 2^n |
|---|---|
| 5 | 32 |
| 6 | 64 |
| 7 | 128 |
| 8 | 256 |
| 9 | 512 |
| 10 | 1024 |
FEでは、この程度の対応をすぐ思い出せると計算が楽になります。
判断手順
① データ幅を見る
↓
② 2^n の形に直す
↓
③ n を求める
↓
④ 問題文の冗長ビットの式へ代入する
たとえば64ビットで同じ条件なら、
64 = 2^6
→ n = 6
→ n + 2 = 8
です。
どんな場面で使う?
ECCは、データの信頼性が重要なメモリで使われます。
たとえば、サーバなどでは、メモリ上のデータが誤ったまま処理されることを避けるためにECC対応メモリが利用されることがあります。
試験では製品知識より、次の関係を理解しておけば十分です。
メモリ上のビット誤り
↓
冗長情報を使って確認
↓
検出・訂正
よくある誤解・混同
128ビットなら128+2で130ビット?
違います。
問題文が、
2^n ビットに対して n+2 ビット
としているなら、128は 2^7 なので使うのは n=7 です。
128 + 2
→ ×
7 + 2
→ ○
ECCなら冗長ビットは必ずn+2?
違います。
n+2 は、その問題で与えられた条件です。
ECC一般の固定公式として暗記しないようにします。
パリティとECCは同じ?
どちらも冗長情報を付加しますが、役割の切り分けが重要です。
パリティ
→ 主に誤り検出
ECC
→ 誤り検出・訂正
冗長ビットは無駄なビット?
元のデータそのものではありませんが、誤りを検出・訂正するために必要な情報です。
試験では「余分だから不要」と考えず、信頼性のために追加するビットと理解します。
まとめ(試験直前用)
- ECCは、冗長ビットを使ってメモリの誤りを検出・訂正する仕組み
- 冗長ビットは、元データではなく誤り確認のための追加情報
- パリティは主に誤り検出、ECCは誤り訂正まで扱う
2^nが出たら、まず指数nを求める- 128ビットは
2^7なのでn=7 n+2という条件なら7+2=9n+2をECC一般の固定公式として暗記しない
試験直前には、次の順で考えます。
データ幅
→ 2^n にする
→ n を求める
→ 問題文の式に代入する
128 = 2^7。問題文が n+2 なら、必要な冗長ビットは9ビット。