マイクロシーケンサ

コンピュータ・アーキテクチャやエンジニアリングにおける、シーケンサ()またはマイクロシーケンサ()は、コントロール・ストアのマイクロプログラムを通して段階的処理するためのアドレスを生成する。CPUの制御ユニットの一部、またはスタンドアローンのアドレス範囲生成器として、使用する。
通常、アドレスはカウンタ、マイクロ命令からのフィールド、命令レジスタのサブセットのいくつかの組み合わせによって生成される。 カウンタは、次のマイクロ命令が実行されるという典型的なケースに使用される。 マイクロ命令からのフィールドは、ジャンプやその他のロジックに使用される。 
CPUは命令セットを実装するので、命令のビットを直接シーケンサにデコードして、CPUの命令を実行するためのマイクロ命令セットを選択できるのは非常に便利である。 
ほとんどの最新のCISCプロセッサは、1クロックサイクルで完了することができるより複雑度の低いオペコードを処理するためのパイプラインロジックと、完了するのに複数のクロックサイクルを要するオペコードを実装するためのマイクロコードの組み合わせを使用している。 
最初に統合されたマイクロコード化されたプロセッサの1つはIBM PALMプロセッサで、これはプロセッサのすべての命令をマイクロコードでエミュレートし、非常に最初のパーソナルコンピュータの1つであるIBM 5100で使用されていた。 
同様のマイクロシーケンサベースのプロセッサの最近の例としては、MicroCore LabsのMCL86、MCL51、MCL65コアがあり、これらはIntel 8086/8088、8051、MOS 6502命令セットを完全にマイクロコードでエミュレートしている。 
簡単な例.
Digital Scientific Corp. の Meta 4シリーズ16コンピュータシステムは、1970年に最初に利用可能になったユーザー・マイクロプログラム可能なシステムであった。 マイクロコードシーケンスの分岐は、3つの方法のいずれかで発生した。 
分岐命令で許可されているもう一つのシーケンスオプションは、実行(execute) (XQ) オプションである。 このオプションを指定すると、分岐アドレスの単一命令が実行されるが、実行は元の分岐命令の後で続行される。 IXオプションはXQオプションと一緒に使用することができる。 
複雑な例.
IBM System/360は、1964年に発売された互換性のある一連のコンピュータで、その多くはマイクロプログラミングされていた。 System/360モデル40は、複雑なマイクロシーケンスを持つマイクロプログラムマシンの良い例である。 
 マイクロストアは、水平マイクロプログラミングスタイルで動作する4,096個の56ビット・マイクロ命令で構成されている。 ストアのアドレスは、12ビットのリードオンリー・アドレスレジスタ(ROAR)によって指定される。 S/360アーキテクチャのほとんどのレジスタとは異なり、ROARのビットは右のビット0から左のビット11までの番号が付けられている。 モデル40は、マイクロ命令の逐次実行を行わないので、マイクロシーケンサは、従来の意味では実際に分岐しない。 代わりに、各マイクロ命令は、次に実行されるマイクロ命令のアドレスを指定する。 マイクロ命令内の4つのフィールドが新しいアドレスに寄与する。 
これらのフィールドには、基本的に3つの組み合わせ、またはフォーマットがある。 
機能分岐フォーマット.
CBフィールドが15を含む場合、機能分岐が発生する。 ROAR内の新しいマイクロストア・アドレスのビットは、以下のように決定される。 
CCフィールドは、マシンの状態の様々なテストを指定することができる。 また、無条件ビットに定数 0 または 1 を指定することもできる。 
このフォーマットは、制御の流れをマイクロストアの64ワードブロックの下位32ワード内の16命令"ペア"の1つに変更する(ビット5は常に0であるため)。 次に、CCフィールドは、ペアのどの命令が制御を受け取るかを決定する。 
CD = 0、1、3フォーマット.
CDフィールドが0、1、または3の場合、制御の流れは現在の64ワードブロック内の命令に送られる。 新しいマイクロストア・アドレスのビットは次のように決定される。 
CAフィールドは、現在の64ワードブロック内の16個の4ワードグループから1つを選択する。 次に、CBフィールドとCCフィールドは、4つのどの命令が制御を受け取るかを決定する。 
CD = 2フォーマット.
CDフィールドが2の場合、制御の流れは明白ではなく、新しいマイクロストア・アドレスのビットは次のように決定される。 
次の命令は、ビット11-10が同じままであるため、次の命令は、現在の命令と同じ1kワード領域内にある。 CAフィールドは、その領域内の64ワードブロックを決定する。 ビット5-2は変わらないので、その命令は、現在の命令が現在のブロック内にあるのと同じ4ワードのグループ内にある。 次に、CBおよびCCフィールドは、4つのどの命令が制御を受け取るかを決定する。 
単純化.
この記述は簡略化されている。 以下の機能を無視している。