デコーダー(Decoder)は、情報技術において、符号化されたデータを元の形式や意味のある情報に変換する装置、回路、またはソフトウェアの総称である。デジタル回路設計では、nビットのバイナリ入力を受け取り、2^n個の出力ラインのうち1つをアクティブにする組合せ論理回路として定義される。一方、通信やマルチメディアの分野では、圧縮や暗号化されたデータを復号する処理モジュールを指し、エンコーダーの逆操作を担う。デコーダーはコンピュータアーキテクチャ、データ伝送、画像・音声処理など幅広い領域で不可欠な要素となっている。
1 基本概念
1.1 定義と機能
デコーダーは、所定の符号化規則に従い、符号化された情報を元の意味に復元する装置またはプログラムを指す。デジタル回路では、バイナリコードを特定の出力信号に変換する論理回路として機能し、メモリアドレスの選択や命令の解釈に利用される。ソフトウェア領域では、データ圧縮や暗号化の復号処理を担当し、出力データの正確性と完全性を保証する。
1.2 エンコーダーとの関係
エンコーダーは情報を符号化する処理を行うのに対し、デコーダーはその逆の復号操作を実行する。両者は対をなす概念であり、通信システムやデータ保存において不可分の関係にある。例えば、音声圧縮ではエンコーダーが音声信号を圧縮形式に変換し、デコーダーがそれを再生可能な信号に戻す。この関係は、コーデック(符号化・復号化器)として統合されることが多い。
2 ハードウェアデコーダー
2.1 デジタル回路のデコーダー
デジタル回路におけるデコーダーは、入力コードを出力ラインのアクティブ化に変換する組合せ論理回路である。標準的な用途は、アドレス選択や表示制御など多岐にわたる。回路はANDゲートとインバータを組み合わせて実装され、入力ビット数と出力ライン数が対応する。
2.1.1 バイナリデコーダー
バイナリデコーダーは、nビットのバイナリコードを2^n個の出力ラインに変換する基本回路である。入力が二進数として解釈され、その値に応じて特定の出力がアクティブ(論理1)になる。
2.1.1.1 n-to-2^nデコーダーの構造
n-to-2^nデコーダーは、n本の入力ラインと2^n本の出力ラインを持つ。各出力は、入力のすべての組み合わせに対して一意に対応する。例えば、2-to-4デコーダーは2ビット入力(A1、A0)を受け取り、出力Y0からY3のうち1本をアクティブにする。この構造は、ANDゲートとインバータを用いた論理式(Y0 = A1'・A0'等)で実現される。出力は入力の最小項に対応する。
2.1.2 7セグメントデコーダー
7セグメントデコーダーは、4ビットの二進化十進コード(BCD)を7セグメントLEDディスプレイの点灯パターンに変換する回路である。各セグメント(aからg)は、入力コードに応じて点灯または消灯し、数字0から9を表示する。よく使われるICとして7447が挙げられる。
2.2 メモリデコーダー
メモリデコーダーは、メモリアドレスを解釈して特定のメモリセルまたはチップを選択するハードウェア回路である。システムのメモリマッピングにおいて核心的な役割を果たす。
2.2.1 アドレスデコーダー
アドレスデコーダーは、CPUから出力されるアドレスバスの信号を解読し、特定のメモリチップや周辺機器を選択する。例えば、上位アドレスビットでメモリ領域を分割し、該当するチップセレクト信号を生成する。これは、フルデコードや部分デコードなどの方式で実装される。
2.2.2 メモリセル選択の仕組み
メモリセル選択では、アドレスデコーダーが行デコーダーと列デコーダーに分割される。行デコーダーがワード線を選択し、列デコーダーがビット線を選択することで、特定のメモリセル(ビット)にアクセスする。これにより、大容量メモリを効率的にアドレス指定できる。
3 ソフトウェアデコーダー
3.1 データ圧縮デコーダー
データ圧縮デコーダーは、圧縮されたデータストリームを元の形式に復元するソフトウェアモジュールである。圧縮方式に応じて、可逆と非可逆の2つに大別される。
3.1.1 可逆圧縮デコーダー
可逆圧縮デコーダーは、圧縮前のデータを完全に再現する。代表例として、ZIPファイルの解凍やPNG画像の復号が挙げられる。これらのデコーダーは、ハフマン符号やLZ77アルゴリズムなどの逆変換を実装する。
3.1.2 非可逆圧縮デコーダー
非可逆圧縮デコーダーは、データの一部情報を失っても、視聴覚的に許容できる品質を再現する。JPEG画像やMP3音声の再生に利用され、量子化や周波数変換の逆演算を実行する。元のデータとは厳密には一致しないが、人間の知覚に基づいて設計される。
3.2 暗号デコーダー(復号器)
暗号デコーダーは、暗号化されたデータを復号鍵を用いて平文に変換するソフトウェアである。共通鍵暗号(例:AES)や公開鍵暗号(例:RSA)の復号処理を実装し、通信の安全性を確保する。復号器は暗号アルゴリズムの逆演算を正確に実行する必要がある。
3.3 マルチメディアデコーダー
マルチメディアデコーダーは、圧縮された音声や動画データを再生可能な形式に復号するソフトウェアコンポーネントである。メディアプレーヤーやストリーミングサービスで不可欠な機能を提供する。
3.3.1 音声デコーダー
音声デコーダーは、MP3、AAC、FLACなどの圧縮音声ファイルをPCM形式などの生の音声信号に変換する。周波数領域のビットストリームやエントロピー符号の復号を行い、スピーカー出力に適したデータを生成する。
3.3.2 動画デコーダー
動画デコーダーは、H.264、HEVC、VP9などの圧縮動画フレームを復号して、表示可能なRGBやYUV画像に変換する。動き補償や離散コサイン変換の逆演算を利用し、リアルタイム再生を実現する。
4 応用分野
4.1 コンピュータアーキテクチャ
コンピュータアーキテクチャでは、命令デコーダーがCPU内部で機械語命令を解釈し、制御信号を生成する。また、メモリアドレスデコーダーがキャッシュやメインメモリへのアクセスを制御し、システム全体の動作を支える。
4.2 通信システム
通信システムでは、デコーダーが受信信号から元の情報を復元する。誤り訂正符号(例えばリード・ソロモン符号)のデコーダーがノイズに強いデータ伝送を可能にし、無線通信やデジタル放送に応用される。
4.3 組み込みシステム
組み込みシステムでは、デコーダーがセンサー信号や制御コードを解釈して、アクチュエーターやディスプレイを駆動する。例えば、赤外線リモコンのデコーダーは、受信したパルス列をキーコードに変換する。
5 歴史と発展
5.1 初期のリレー回路デコーダー
初期のデコーダーは、20世紀前半にリレー回路を用いて構築された。電話交換機や初期の計算機で使用され、バイナリ入力を対応する配線に切り替える機構として機能した。これらの回路は機械的動作に依存し、速度と信頼性に制限があった。
5.2 集積回路時代のデコーダー
1960年代以降、集積回路の登場によりデコーダーは小型化・高速化された。TTLやCMOS技術を用いた標準IC(例:74138、7447)が広く普及し、デジタルシステムの設計に頻繁に利用されるようになった。集積化により、複雑なデコーディング機能が単一チップで実現された。
5.3 ソフトウェアデコーダーの台頭
1990年代以降、汎用CPUの性能向上とマルチメディア需要の増加に伴い、ソフトウェアデコーダーが台頭した。当初はハードウェアが主流だった動画デコードが、ソフトウェアで実現可能になり、コスト削減と柔軟性向上に寄与した。現在では、GPUアクセラレーションや専用DSPとの協調が一般的である。
6 関連技術
6.1 マルチプレクサ
マルチプレクサは、複数の入力チャネルから選択信号に基づいて1つの出力を選択する回路である。デコーダーが選択入力を生成する際に内部で利用されることが多く、両者は密接に関連する。デコーダーはマルチプレクサの選択信号生成に応用される。
6.2 デマルチプレクサ
デマルチプレクサは、1つの入力を複数の出力チャネルに分配する回路であり、デコーダーと同様の構造を持つ。デコーダーにデータ線を追加することで実現され、メモリデータバスの制御などに用いられる。
6.3 コーデック
コーデックは、エンコーダーとデコーダーを統合したデバイスまたはソフトウェアであり、データの圧縮と復元を一元的に扱う。音声・動画コーデック(例:H.264、AAC)は、通信やストレージの効率化に不可欠であり、ハードウェア・ソフトウェア両方で実装される。