レジスタ (コンピュータ)
ペリフェラルデバイスのレジスタは、ペリフェラル(プログラマブル・カウンタや割り込み制御、シリアル通信ポートなどのハードウェア)の動作を設定したり、動作状況を読み出したりするためのレジスタである。これらのレジスタは上記のプロセッサ内のレジスタとは異なり、プロセッサからアクセスできるアドレス空間の一部に配置される。プロセッサの種類によってはメモリ空間とは別にI/O空間というアドレス空間が存在し、レジスタはここに配置される。I/O空間を持たないプロセッサの場合はメモリ空間にレジスタを配置して利用し、このことをメモリマップドI/Oと言う。レジスタの各ビットの動作や配置はペリフェラルデバイス毎に異なり、ハードウェアの動作をよく理解して操作する必要がある。
組み込み機器用のマイクロコントローラの場合、プロセッサだけでなく多数のペリフェラルデバイスも同一のチップ内に納められており、多くのレジスタがマイクロコントローラ内に存在する。
プログラミング言語を機械語に変換する際に、式の評価途中の値などはいちいちメモリに書かず、レジスタに保持したまま計算を続けたほうが効率が良い。さらに、可能なら変数自体もメモリではなくレジスタに割り付けてしまえば、さらに効率が良い。
そのようなレジスタのやり繰りの問題をレジスタ割り付けと言い、コンパイラ最適化の重要なテーマの一つである。
初期のC言語コンパイラには、最適化にあまり力を入れていないものがあり、そのためレジスタに割り付ける変数をプログラマが指定するためのキーワードregisterがあった。レジスタ割り付けは柔軟におこなったほうが性能が高くなるのが普通であり、特定の変数をレジスタに張り付けることで性能が出るようなことは少なく、現在の多くの最適化コンパイラはregister指定を単に無視する(チェックの厳しいコンパイラの場合、アドレス演算子 & をregister指定された変数に対して使うと警告ないしエラーとなる)。C++においても同様であったが、C++11ではregisterキーワードは非推奨となり、C++17では削除された(ただし予約語としては残されたまま)。
演算装置の出力と片方の入力につながった、ただ1個のレジスタがあり、そのレジスタに演算の結果を溜め込むことができる、といった古い設計のコンピュータで使われた語である。現在でもx86のAXレジスタのような多用されるレジスタを指して言うことがある。
A, ACCと略すことが多い。