コンピュータ アーキテクチャとエンジニアリングでは、シーケンサまたはマイクロシーケンサは、制御ストアのマイクロプログラム をステップ実行するために使用するアドレスを生成します。CPUの制御ユニットの一部として、またはアドレス範囲のスタンドアロン ジェネレータとして使用されます。
通常、アドレスは、カウンター、マイクロ命令のフィールド、および命令レジスタのサブセットの組み合わせによって生成されます。カウンターは、次のマイクロ命令が実行される典型的なケースで使用されます。マイクロ命令のフィールドは、ジャンプやその他のロジックに使用されます。
CPU は命令セットを実装しているため、命令のビットをシーケンサーに直接 デコードし、マイクロ命令のセットを選択して CPU の命令を実行できることは非常に便利です。
最新の CISC プロセッサのほとんどは、パイプライン ロジックを組み合わせて、1 クロック サイクルで完了できる複雑性の低いオペコードを処理します。また、マイクロコードを使用して、完了までに複数のクロック サイクルを要するオペコードを実装します。
最初の統合マイクロコード プロセッサの 1 つはIBM PALM プロセッサで、プロセッサのすべての命令をマイクロコードでエミュレートし、最初のパーソナル コンピュータの 1 つである IBM 5100で使用されました。
同様のオープンソースのマイクロシーケンサーベースのプロセッサの最近の例としては、Intel 8086/8088、8051、MOS 6502 命令セットを完全にマイクロコードでエミュレートする MicroCore Labs MCL86、MCL51、MCL65 コアがあります。
簡単な例
Digital Scientific Corp. の Meta 4 シリーズ 16 コンピュータ システムは、1970 年に初めて登場したユーザー マイクロプログラム可能なシステムです。マイクロコード シーケンスの分岐は、3 つの方法のいずれかで発生します。[1]
- 分岐マイクロ命令は、条件付きまたは無条件で次の命令のアドレスを指定します。論理インデックス (IX) オプションにより、16 ビットのリンク レジスタが分岐アドレスに論理OR され、単純なインデックス分岐機能が提供されます。
- すべての算術/論理命令では、ジャンプ (J) 修飾子が許可されており、これにより、リンク レジスタによってアドレス指定されたマイクロ命令に実行がリダイレクトされます。
- すべての算術/論理命令では、デクリメント カウンター (D) とジャンプ (J) の両方の修飾子を使用できます。この場合、8 ビットのループ カウンター レジスタがデクリメントされます。ゼロでない場合は、リンク レジスタの内容に分岐します。ゼロの場合は、次の命令で実行が続行されます。
分岐命令で許可されるもう 1 つのシーケンス オプションは、実行 (XQ) オプションです。このオプションを指定すると、分岐アドレスの単一の命令が実行されますが、その後、元の分岐命令の後に実行が続行されます。IX オプションは、XQ オプションと一緒に使用できます。
複雑な例
IBM System/360は1964年に発表された互換コンピュータのシリーズで、その多くはマイクロプログラム化されていました。[2] System /360 Model 40は、複雑なマイクロシーケンスを備えたマイクロプログラム化されたマシンの良い例です。[3]
マイクロストアは、水平マイクロプログラミング スタイルで動作する 4,096 個の 56 ビット マイクロ命令で構成されています。ストアは、12 ビットの読み取り専用アドレス レジスタ (ROAR) によってアドレス指定されます。S/360 アーキテクチャのほとんどのレジスタとは異なり、ROAR のビットは、右側のビット 0 から左側のビット 11 まで番号が付けられています。
+------------+ | 轟音 | +------------+ 11 0
モデル 40 はマイクロ命令の連続実行を行わないため、マイクロシーケンサは従来の意味での分岐は行いません。代わりに、各マイクロ命令は次に実行される命令のアドレスを指定します。マイクロ命令の 4 つのフィールドが新しいアドレスに寄与します。
- CA、4 ビット: 他のフィールドに応じて、次のアドレスの一部になります。
- CB、4 ビット: 次のアドレスのビット 1 を決定します。
- CC、4 ビット: 次のアドレスのビット 0 を決定します。
- CD、2 ビット: 次のアドレスの組み立て方法を制御します (CB フィールドに 15 が含まれている場合を除く)。
基本的に、これらのフィールドの組み合わせまたは形式は 3 つあります。
機能分岐形式
CB フィールドに 15 が含まれている場合、機能分岐が発生します。ROAR 内の新しいマイクロストア アドレスのビットは次のように決定されます。
- ビット11~10: CDフィールド
- ビット9~6: CAフィールド
- ビット 5: 常に 0
- ビット4~1: Qレジスタの上位4ビット。8ビットALUへの右入力となる。
- ビット0: CCフィールドで指定されたテストの結果
CC フィールドでは、マシンの状態のさまざまなテストを指定できます。また、無条件ビットとして定数 0 または 1 を指定することもできます。
このフォーマットは、マイクロストアの 64 ワード ブロックの下位 32 ワード内の 16 個の命令ペアのうちの 1 つに制御のフローを変更します (ビット 5 は常に 0 であるため)。次に、CC フィールドによって、ペアのどの命令が制御を受け取るかが決定されます。
CD = 0、1、3 フォーマット
CD フィールドが 0、1、または 3 の場合、制御フローは現在の 64 ワード ブロック内の命令に向けられます。新しいマイクロストア アドレスのビットは次のように決定されます。
- ビット11~6: 同じまま
- ビット5~2: CAフィールド
- ビット1: CD = 0の場合、CBフィールドで指定されたテストの結果。それ以外の場合は0
- ビット0: CCフィールドで指定されたテストの結果
CA フィールドは、現在の 64 ワード ブロック内の 16 個の 4 ワード グループのうち 1 つを選択します。次に、CB フィールドと CC フィールドによって、4 つの命令のうちどの命令が制御を受け取るかが決定されます。
CD = 2 フォーマット
CD フィールドが 2 の場合、制御フローは明白でない方法で指示されます。新しいマイクロストア アドレスのビットは次のように決定されます。
- ビット11~10: 同じまま
- ビット9~6: CAフィールド
- ビット5~2: 同じまま
- ビット1: CBフィールドで指定されたテストの結果
- ビット0: CCフィールドで指定されたテストの結果
次の命令は、ビット 11 ~ 10 が同じままであるため、現在の命令と同じ 1K ワード領域にあります。CA フィールドは、領域内の 64 ワード ブロックを決定します。ビット 5 ~ 2 が同じままであるため、命令は、現在のブロック内の現在の命令と同じ 4 ワード グループ内の新しいブロック内にあります。次に、CB フィールドと CC フィールドによって、4 つの命令のうちのどの命令が制御を受け取るかが決まります。
簡素化
この説明は簡略化されており、以下の機能は無視されます。
- モデル 40 は、CPU モードまたはチャネル モードで実行できます。説明は CPU モードのみを対象としています。
- マイクロ命令が機能分岐形式ではなく、CD フィールドが 1 または 3 の場合、次のアドレスのビット 1 は常に 0 になります。この場合、CD フィールドと CB フィールドの値によって、発生する制御ラインのセットの 1 つが決定されます。
参考文献
- ^ Digital Scientific Meta 4 シリーズ 16 コンピュータ システム リファレンス マニュアル(PDF)。Digital Scientific Corporation。1971 年 5 月。7032MO。
- ^ IBM System/360 動作原理(PDF)。International Business Machines Corp. 1968 年 9 月。A22-6821-7。
- ^ System/360 モデル 40 機能ユニット(PDF)。International Business Machines Corp. 1970 年 3 月。SY22-2843-1。
