データレジスタ【data register】
概要

CPUはプログラムの命令を実行する際、メモリ上のデータを直接操作することはできず、いったん「レジスタ」(register)と呼ばれる内部の記憶領域に読み込んでから処理を行い、結果をメモリに書き出すという手順を踏む。レジスタはメモリと比べて容量は極めて小さいが、演算回路と同期して極めて高速に読み書きできる。
CPUには用途に応じて様々なレジスタが用意されており、演算や転送などの処理対象となるデータそのものを格納する目的のものデータレジスタと呼ぶ。一般的な用途では、整数の算術演算やビット列の論理演算で用いられる入力値や出力値が格納されることが多い。例えば、「2と3を足す」という命令であれば、2と3をそれぞれデータレジスタに格納し、ALU(算術論理演算ユニット)で演算した結果を再びデータレジスタに書き戻すという流れになる。
一般的なCPUでは用途別に複数のレジスタがあり、データレジスタの他に、命令アドレスを保持する「プログラムカウンタ」、メモリアドレスを扱う「アドレスレジスタ」、状態を示す「フラグレジスタ」などがある。ただし、現代のプロセッサ製品ではデータとアドレスの両方に使える「汎用レジスタ」が用意されている設計も多く、厳密な区別が薄い場合もある。マイクロコントローラや古典的なCPUでは、データレジスタとアドレスレジスタが明確に分かれていて共用できない例がある。
一つのレジスタに格納できるビット数はCPUのアーキテクチャによって異なり、32ビットや64ビットが一般的である。ビット数が大きいほど一度に演算、転送できるデータの量が多くなり、処理性能の向上につながる。パソコン向けで最も一般的なCPUの種類であるx86アーキテクチャでは、EAX、EBX、ECX、EDXなどがデータレジスタとして知られており、64ビット拡張ではそれぞれRAX、RBX、RCX、RDXという名称になる。