レジスタとは
(register)
レジスタとは、CPU内部に設けられ、中央演算装置との間で高速にデータ転送を行うことができる記憶装置のことである。
計算機は、処理手順に従って、演算装置が記憶装置からデータを読み取り、その内容に従って演算処理を行い、演算の結果を再び記憶装置に書き込むといった動作を繰り返すことによって必要な処理を行っている。
この仕組みでは、演算装置と記憶装置の間のデータ転送が、処理全体のボトルネックの一つとなる。
そして、記憶装置とのデータ転送速度は、素子間の距離が短く、同じ配線上に存在している方が早くなる。
このため、半導体技術をもとに作成されている現在の技術体系のもとでは、レジスタと呼ばれる高速動作と高速なデータ転送を可能とする特殊な記憶装置をCPU内部に置き、物理的にも中央演算装置に隣接した場所に配置し、高速なバスで結合することで、データ転送速度を最大化している。
レジスタは、CPU内部に配置され、高速なバスで結合されているため、極めて高速に動作するという特徴を持っている。
しかし、その一方で容量については、あまり大きく確保することができない。
レジスタには、あらかじめ使い道が想定された名前を持っているものがある。
アキュムレータ、スタックレジスタ、プログラムカウンタ、割り込みレジスタ、フラグレジスタなどは、その例である。
一方、プログラム側で、自由に使うことを想定したレジスタもあり、これを汎用レジスタと呼ぶ。
なお、CPU以外でも、GPUのように、複雑な処理を行う集積回路では、レジスタを持つ例が他にもある。
レジスタの利用方法は、例えば、C言語のような高級言語における関数呼び出しの実現方法に見ることができる。
C言語では、関数を呼び出す時に、一緒に引数を複数個渡すことができる。
この時、引数をメモリにセットし、そのアドレス位置をスタックレジスタを使って覚えさせておけば、関数の側は、これを読み取れば良い。
なお、コンパイルを必要とする高級言語においては、レジスタをどのように使いこなすかが、良い性能を引き出すポイントの一つとなる。
変数を、数が少なく、容量の限定されたレジスタに最適に格納するのは難しい問題である。
ある値を、どのレジスタに格納すべきか決定することを、レジスタ割り付け(Register allocation)という。
用語解説出典
powered by. Weblio