コントロールストア

コントロールストアとは、CPUの制御装置の一部としてマイクロプログラムを格納する記憶装置の一種である。
コントロールストアは、初期のプロセッサではダイオードの配列でできたROMとして実装されていることが多い。
その起源は少なくとも1947年のWhirlwindで使われた "program timing matrix" まで遡る。
IBMのメインフレームSystem/360では、リードオンリーのコントロールストアを使用していたが、後継のSystem/370では超高速のRAMで構成された書き換え可能なコントロールストアにフロッピーディスクからマイクロプログラムをロードしていた。
このため IBM は容易にマイクロプログラムのバグを修正することができた。
当時、デフォルトのコントロールストアがリードオンリーであっても、オプションとして書き換え可能なコントロールストアを提供し、ユーザーがマシンのマイクロプログラムを更新できるようにすることが多かった。
コントロールストアは次のマイクロ命令を出力するためのレジスタを持っている。
シーケンサはマイクロ命令の実行結果を見て(マイクロプログラムの)次の実行アドレスを決める必要があり、レジスタを介することで競合状態が発生するのを防いでいる。
多くの設計ではそれ以外のものもレジスタを通していく。
これは次のマイクロ命令の実行が 1サイクル遅延されるなら、マシンがより高速に動作できるからである。
このレジスタはパイプライン・レジスタと呼ばれている。
次のマイクロ命令の実行はしばしば現在のマイクロ命令の実行結果に依存しており、それは現在のマイクロサイクルが終わるまで決定できない。
いずれにしてもコントロールストアの出力をひとつの大きなレジスタに入れることになる。
古くはレジスタとEPROMをひとつのチップに収めたものが使われていた。
システムのサイクルタイムを決めるクロック信号は基本的にこのレジスタを駆動するものである。