「レジスタ (コンピュータ)」の版間の差分

削除された内容 追加された内容
RedBot (会話 | 投稿記録)
Melan (会話 | 投稿記録)
一次⇒一時
53行目:
 
==== プログラムカウンタ ====
次に実行するべき命令が格納されているメインメモリ上のアドレスを指し示すレジスタ。命令の読み込みを行なう際にはその内容がアドレスバス上に出力され、また命令を読み込む度に読み取った命令の分だけ値が増加するようになっている。[[分岐命令]]は、このプログラムカウンタに値を代入することで実現される。さらに、スタックポインタと組み合わせ、プログラムカウンタの内容を[[スタック]]に一保存した後に新たな値を代入すると、[[サブルーチン]]の呼出しを実現する事になる。また、スタックから値を取り出してプログラムカウンタに代入すると、サブルーチンから呼出し元に制御を復帰させる事になる。
 
PCと略すことが多い。また、インストラクションポインタ(IP)、逐次制御カウンタ(Sequential Control Counter; SCC)と称される場合もある。
76行目:
割り込み処理による高速応答性を要求されるアプリケーションを作る場合や、時分割などによる擬似的なマルチタスクを実現する時には、この動作はきわめて頻繁に行なわれる。この、プロセッサの動作状態をそっくり保存して他の動作状態に入れ替えるという動作は、[[コンテキストスイッチ]]と呼ばれる。
 
一般には、コンテキストスイッチはスタックを用いてレジスタの内容を外部のメインメモリの一定領域上に一保存することで実現されている。しかし、コンテキストスイッチを高速化するために、主要なレジスタのコピーを保持する別のレジスタ群をプロセッサ内部に用意しておき、それを用いてコンテキストスイッチを行なう設計になっているプロセッサもある。つまり、プロセッサ内部のハードウェアにより、一瞬にしてアクセスするレジスタを切り替えられる。このようなレジスタ群を「レジスタセット」と呼ぶ。また、切り替えるレジスタ群が1セットしかない場合、それらのレジスタは「シャドーレジスタ」または「裏レジスタ」と呼ばれる。
 
レジスタセットを用いたコンテキストスイッチは、処理速度を飛躍的に上げられる画期的な手法だが、致命的な問題点がある。レジスタを構成する回路は複雑で、プロセッサ上に多数実装するのが難しい。このため、コンテキストスイッチをする[[タスク]]の数が多くなるとレジスタセット内に収まらなくなり、役に立たなくなる。