コンピュータシステム - 3.コンピュータ構成要素 - 1.プロセッサ - 5.プロセッサの構造と方式

Last Update : April 29 2021 12:42:22

     

a. 制御装置

制御装置の役割
主記憶装置にあるプログラムや命令を1個ずつ取り出して解読して他の装置を制御する。
重要なものに「レジスタ」と「デコーダ」がある。
命令デコーダ
機械語命令を解読して、他の装置へ制御信号を出す。
命令レジスタ
主記憶装置から取り出した命令を一時的に格納するレジスタ。以下の制御装置のレジスタがある。

  • プログラムカウンタ・・・次に実行する命令を取り出すためのアドレスを記憶しておくレジスタ。プログラムレジスタ・命令アドレスレジスタ・逐次制御カウンタとも呼ばれる。PCやIPと略される。
  • 命令レジスタ・・・取り出した命令を一時的に記憶しておくレジスタ。IRとも呼ばれる。
  • ベースレジスタ・・・プログラムの先頭アドレスを保持するためのアドレス。
  • 指標レジスタ・・・データを連続的に取り出す際に使われるアドレス。
    アドレスレジスタの一種であるが、アドレス計算用の加算回路がついており、メインメモリのアドレスのオフセットを格納するレジスタである。配列データにアクセスするコードが簡単に記述できる。
    インデックスレジスタ、ベースレジスタ、ベースポインタと呼ばれる事もある。 IX,BPなどと略すことが多い。

制御装置は、次に実行する命令が入っているアドレスを命令アドレスレジスタで管理している。
命令を取出す過程は次のようになっていて、この過程を命令取出し(命令フェッチ)とよぶ。

  1. プログラムカウンタ(PC)に入っているアドレスに格納されている命令を命令レジスタに取り出す。
  2. プログラムカウンタ(PC)には、取り出された命令の長さを加算する。 このようにすると、次の命令の先頭のアドレスがセットされることになる。
  3. 命令レジスタに取り出された命令コードは、命令デコーダで解読する。
  4. 解読した結果、演算論理装置や入出力装置に制御信号を出して、その命令を実行する。
  5. 実行するときに必要になるデータは、オペランド部のアドレスをもとに主記憶装置に指示する。

b. 演算装置

別名「算術論理演算装置(ALU)」とも言う。制御装置から送られてくる制御信号に従い、四則演算、論理演算を行う。
ALU
多くのALUは以下のような動作をする。

  • 整数演算操作 (加算、減算、乗算)
  • 論理演算 (AND、NOT、OR、XOR)
  • ビットシフト操作 (ワードを指定されたビット数ぶんだけ右(または左)にシフト(またはローテート)する。符号拡張をする場合もある)

アキュムレータ
演算の対象となるデータや演算結果を格納する専用のレジスタ。
演算結果を置いたり、データを一時的に記憶するレジスタである。アキュムレータ(accumulator) はあらゆるプロセッサにある。アキュムレータには足し算、引き算などの基本的な演算を行なう回路が付属しており、アキュムレータのデータとデータバス上のデータを演算した結果をアキュムレータに保存することができるようになっている。また、データバスからデータを取り込んだり、データバスにデータを出したりすることができるようになっている。データレジスタと呼ぶこともある。
A, ACCと略すことが多い。
プロセッサの処理能力について述べる際に、よく「○○ビットプロセッサ(あるいは○○ビットCPU、○○ビットDSPなど)」という表現が用いられるが、このビット数はプロセッサ内部の各レジスタの構成ビット数を指す。レジスタの種類によって、同じプロセッサの中に入っているレジスタでもビット長がまちまちであることがあるが、たいていの場合、演算結果を保持するアキュムレータのビット数がそのプロセッサの処理ビット数であると考える。

フラグレジスタ 】(FR:FLAGS register)
フラグ ビットの集まりであり、マイクロプロセッサの様々な演算の状態(ステータス)を示すものである。これらのフラグは条件分岐に主に用いられる。
フラグレジスタは、CPUが特定の命令を実行した後に自動的に付与される。主なフラグレジスタの値としては、桁あふれの発生に対して付けられる「OF」(オーバーフロー)や、演算結果がゼロになった場合に付けられる「ZF」(ゼロ)、同じく演算結果が負の値になった場合に付けられる「SF」(サイン)などがある。


汎用レジスタ 】(GR:General Register)
演算結果などを格納しておくレジスタ。アドレスレジスター、メモリアドレスレジスター。 アキュムレータとアドレスレジスタを兼ね備えたレジスタ。
データの計算をする回路とアドレスの計算をする回路を一緒にできる上、命令の種類を減らす事ができるため、ほとんどのプロセッサは汎用レジスタを持っている。また、汎用レジスタを複数個用意しておけば、プログラミングの自由度が格段に増し、特にコンパイラが実行効率の良いオブジェクトコードを生成しやすくなる。RISC系プロセッサでは全ての汎用レジスタが同等の機能を有している事が多い。


  • メモリアドレスレジスタ(MAR)・・・メモリのアドレスを指定するレジスタ。実行すべき命令をメインメモリから取り出すとき、またはデータをメインメモリから読み出すとき、あるいはデータをメインメモリに格納するときに利用される。
  • メモリ・データ・レジスタ(MDR)・・・実行ユニット内のレジスタで、メモリ・アドレス・レジスタで指定されたアドレスにこのレジスタの内容を書き込んだり、逆にメモリ・アドレス・レジスタに指定されたアドレスからこのレジスタにメモリの内容を読み込む。
  • CPUとメモリの間でのデータのやり取りは必ずメモリアドレスレジスタMARとメモリデータレジスタMDRを介して行われる。
    メモリからデータを読み出す際は、まず、読み出すデータのあるアドレス(番地)をMARに設定し、読み出し信号を送ると、(MAR)番地のデータがMDRに設定される。そして、MDRから、IRやGRなどにデータが送られる。
    メモリにデータを書き込む際は、まず、書き込み先のアドレス(番地)をMARに設定し、書き込むデータをMDRに設定する。そして、書き込み信号を送ると、MDRの内容が(MAR)番地に書き込まれる。

補数器
入力された 2 進数データの補数を出力する回路のこと。




     

www.it-shikaku.jp