(57)【特許請求の範囲】
【請求項１】
命令をアウト・オブ・オーダーで実行することのできる情報処理装置における命令制御装置であって、
各命令に対応して該命令の実行を管理するための情報を格納し、該命令の実行完了に伴う資源更新までの制御を行う命令リザベーション・ステーション手段と、
命令の処理に関する１つ以上のパイプライン動作に対応する１つ以上のフローを制御するマイクロプログラムを格納する格納手段と、
命令がデコードされ、デコードされた命令が前記マイクロプログラムにより制御されることが判明したときに、該デコードされた命令の処理を制御するマイクロプログラムのアドレスが格納されるアドレスレジスタ手段と、
前記アドレスレジスタ手段に格納されたアドレスを用いて前記格納手段から読み出されたマイクロプログラムの制御情報を、フロー毎に各フローの処理が完了するまでの間保持し、各フローにおける演算実行パイプラインの各ステージの処理と同期して該制御情報を該演算実行パイプラインに出力することで、該演算実行パイプラインの動作を制御する制御リザベーション・ステーション手段と
を備えることを特徴とする命令制御装置。
【請求項２】
前記制御リザベーション・ステーション手段は、前記デコードされた命令の各フローにつき１つの制御情報をエントリに格納することを特徴とする請求項１記載の命令制御装置。
【請求項３】
前記制御リザベーション・ステーション手段のエントリに前記制御情報を格納することを予約する予約手段をさらに備え、該予約手段は、前記デコードされた命令の各フローにつき１つの制御情報をエントリに格納することを予約することを特徴とする請求項１記載の命令制御装置。
【請求項４】
前記制御リザベーション・ステーション手段の１つ以上のエントリのうち、前記演算実行パイプラインの各ステージに対応する命令の制御情報を保持しているエントリの識別情報を、各ステージ毎に保持するレジスタ手段をさらに備え、該制御リザベーション・ステーション手段は、該レジスタ手段の識別情報に基づいて、各ステージに対応する命令の制御情報を出力することを特徴とする請求項１記載の命令制御装置。
【請求項５】
前記制御リザベーション・ステーション手段は、命令を識別する識別情報を前記制御情報と共に保持し、前記命令制御装置は、該識別情報と前記演算実行パイプラインにおいて処理が開始された命令の識別情報を比較して、該制御リザベーション・ステーション手段の１つ以上のエントリのうち、該命令の制御情報を保持しているエントリの識別情報を生成する生成手段をさらに備えることを特徴とする請求項１記載の命令制御装置。
【請求項６】
前記制御リザベーション・ステーション手段が各フローを制御する際に使用されるデータを保持するデータバッファ手段をさらに備えることを特徴とする請求項１、２、３、４、または５記載の命令制御装置。
【請求項７】
前記制御リザベーション・ステーション手段の各エントリと前記データバッファ手段の各エントリを対応付けるポインタ手段をさらに備えることを特徴とする請求項６記載の命令制御装置。
【請求項８】
前記データバッファ手段は、前記演算実行パイプラインの各ステージの処理と同期して動作することを特徴とする請求項６記載の命令制御装置。
【請求項９】
前記データバッファ手段の１つ以上のエントリのうち、前記演算実行パイプラインの各ステージに対応するエントリの識別情報を、各ステージ毎に保持するレジスタ手段をさらに備え、該データバッファ手段は、該レジスタ手段の識別情報に基づいて、各ステージに対応するデータの格納および出力のうちの一方の動作を行うことを特徴とする請求項８記載の命令制御装置。
【請求項１０】
前記データバッファ手段は、前記演算実行パイプラインにおける演算の完了に同期して、演算結果を格納することを特徴とする請求項８記載の命令制御装置。
【請求項１１】
前記制御リザベーション・ステーション手段は、前記命令リザベーション・ステーション手段からの命令完了信号に同期して前記制御情報を出力し、該制御情報は、前記データバッファ手段に格納されたデータを用いてプログラマブルな資源を更新する動作を制御することを特徴とする請求項６記載の命令制御装置。
【請求項１２】
命令をアウト・オブ・オーダーで実行することのできる情報処理装置における命令制御方法であって、
命令をデコードし、
デコードされた命令に対応して、該命令の実行を管理するための情報を命令リザベーション・ステーション手段に格納し、
前記命令リザベーション・ステーション手段を用いて、前記デコードされた命令の実行完了に伴う資源更新までの制御を行い、
前記デコードされた命令がマイクロプログラムにより制御されることが判明したとき、該デコードされた命令の処理を制御するマイクロプログラムのアドレスをアドレスレジスタ手段に格納し、
前記アドレスレジスタ手段に格納されたアドレスを用いて、命令の処理に関する１つ以上のパイプライン動作に対応する１つ以上のフローを制御するマイクロプログラムを格納している格納手段からマイクロプログラムを読み出し、
読み出されたマイクロプログラムの制御情報を、フロー毎に各フローの処理が完了するまでの間、制御リザベーション・ステーション手段に保持し、
各フローにおける演算実行パイプラインの各ステージの処理と同期して、前記制御リザベーション・ステーション手段から前記制御情報を該演算実行パイプラインに出力することで、該演算実行パイプラインの動作を制御する
ことを特徴とする命令制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラムからアクセス可能な資源（記憶域、レジスタ等）を、プログラムの命令実行順序に従って逐次更新／参照する情報処理装置に係り、マイクロプログラム（μプログラム）により命令を制御する命令制御装置およびその方法に関する。
【０００２】
【従来の技術および発明が解決しようとする課題】
情報処理装置において命令処理を高速に実行するための技術として、リザベーション・ステーションと称する処理待ちのスタックを設けて命令の実行を制御するシステムが知られている。このシステムでは、アウト・オブ・オーダー実行方法が採用され、スタック内の処理可能なエントリを選択して、プログラムにより指示された順序とは異なる順序で、随時、命令が実行される。
【０００３】
このような実行方法を採用するハードウェア上では、命令のデコード、演算実行ユニット（Ｅユニット）における演算の処理、命令実行完了等が非同期に行われる。一方、複雑な命令を処理するためのマイクロプログラム制御においては、Ｅユニット等の動作と同期した制御とイン・オーダーでの処理が必要となる。
【０００４】
したがって、アウト・オブ・オーダー実行方法を採用するシステムにおいてマイクロプログラム制御を行うためには、何らかの専用の機構を設けて処理を行う必要があると考えられるが、そのような機構は提案されていない。
【０００５】
本発明の課題は、命令をアウト・オブ・オーダーで実行することのできる情報処理装置において、マイクロプログラムにより命令を制御する命令制御装置およびその方法を提供することである。
【０００６】
【課題を解決するための手段】
図１は、本発明の命令制御装置の原理図である。図１の命令制御装置は、格納手段１、制御リザベーション・ステーション手段２、およびデータバッファ手段３を備える。格納手段１は、命令処理に関する１つ以上のフローを制御するマイクロプログラムを格納し、制御リザベーション・ステーション手段２は、マイクロプログラムの制御情報をフロー毎に保持し、その制御情報を用いて各フローを制御する。
【０００７】
格納手段１に格納されたマイクロプログラムにより制御される命令は、一般に、複雑な処理を指示することが多く、１つ以上のパイプライン動作に対応する１つ以上のフローを含む。制御リザベーション・ステーション手段２は、各フローに対応して、マイクロプログラムの制御情報を一時的に保持し、その制御情報を適切なタイミングでＥユニット等の制御対象へ出力することで、各フローの動作を制御する。データバッファ手段３は、各フローの制御で使用されるデータを一時的に保持し、そのデータを適切なタイミングで制御対象へ出力する。
【０００８】
このように、制御リザベーション・ステーション手段２を設けることで、複雑な命令処理の各フローに対応してマイクロプログラムの制御情報を保持することが可能になる。また、データバッファ手段３を設けることで、各フローに対応してマイクロプログラムの使用データを保持することが可能になる。
【０００９】
命令リザベーション・ステーションにより命令のアウト・オブ・オーダー実行を管理するシステムの場合、制御対象からの信号を利用することで、制御対象の処理と同期して制御リザベーション・ステーション手段２から制御対象へ制御情報を出力することができる。したがって、マイクロプログラムによる命令制御が可能になる。
【００１０】
また、本発明の別の命令制御装置は、命令をアウト・オブ・オーダーで実行することのできる情報処理装置における命令制御装置であって、命令リザベーション・ステーション手段、格納手段、アドレスレジスタ手段、および制御リザベーション・ステーション手段を備える。命令リザベーション・ステーション手段は、各命令に対応して命令の実行を管理するための情報を格納し、その命令の実行完了に伴う資源更新までの制御を行う。格納手段は、命令の処理に関する１つ以上のパイプライン動作に対応する１つ以上のフローを制御するマイクロプログラムを格納する。アドレスレジスタ手段には、命令がデコードされ、デコードされた命令がマイクロプログラムにより制御されることが判明したときに、デコードされた命令の処理を制御するマイクロプログラムのアドレスが格納される。制御リザベーション・ステーション手段は、アドレスレジスタ手段に格納されたアドレスを用いて格納手段から読み出されたマイクロプログラムの制御情報を、フロー毎に各フローの処理が完了するまでの間保持し、各フローにおける演算実行パイプラインの各ステージの処理と同期して制御情報を演算実行パイプラインに出力することで、演算実行パイプラインの動作を制御する。
例えば、図１の格納手段１は、後述する図２のＭＣＳ（ｍｉｃｒｏ  ｃｏｎｔｒｏｌ  ｓｔｏｒａｇｅ  ）４２に対応し、図１の制御リザベーション・ステーション手段２は、図２のＲＳＭ（ｒｅｓｅｒｖａｔｉｏｎ  ｓｔａｔｉｏｎ  ｆｏｒ  ｍｉｃｒｏ  ｃｏｎｔｒｏｌ  ）４５に対応し、図１のデータバッファ手段３は、図２のＭＤＢ（ｍｉｃｒｏ  ｄａｔａ  ｂｕｆｆｅｒ  ）４７に対応する。
【００１１】
【発明の実施の形態】
以下、図面を参照しながら、本発明の実施の形態を詳細に説明する。以下の説明においては、ある信号とその値を保持するレジスタとを同一の名称で表すことがある。
【００１２】
図２は、先願の「情報処理装置」（特願平１０−１９１９００）に記載された命令キュー・リザベーション・ステーションと本発明の命令制御装置とを備えた情報処理装置の構成図である。
【００１３】
図２の情報処理装置において、ＩＡＲ（ｉｎｓｔｒｕｃｔｉｏｎ  ａｄｄｒｅｓｓ  ｒｅｇｉｓｔｅｒ）１１、ＩＦ  ＥＡＧ（ｉｎｓｔｒｕｃｔｉｏｎ  ｆｅｔｃｈ  ｅｆｆｅｃｔｉｖｅ  ａｄｄｒｅｓｓ  ｇｅｎｅｒａｔｏｒ  ）１２、ＩＥＡＲ（ｉｎｓｔｒｕｃｔｉｏｎ  ｅｆｆｅｃｔｉｖｅ  ａｄｄｒｅｓｓ  ｒｅｇｉｓｔｅｒ）１３、ＩＦ  ＴＬＢ（ｉｎｓｔｒｕｃｔｉｏｎ  ｆｅｔｃｈ  ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ）１４、ＩＦ  ＴＡＧ（ｉｎｓｔｒｕｃｔｉｏｎ  ｆｅｔｃｈ  ｔａｇ  ）１５、およびＩＦ  ＬＢＳ（ｉｎｓｔｒｕｃｔｉｏｎ  ｆｅｔｃｈ  ｌｏｃａｌ  ｂｕｆｆｅｒｓｔｏｒａｇｅ）１６は、命令フェッチのパイプライン動作を行う。
【００１４】
この命令フェッチパイプラインは、命令フェッチのリクエスト発行サイクルＩ、タグとＴＬＢへのアクセスサイクルＩＴ、バッファアクセスサイクルＩＢ、およびフェッチ完了サイクルＩＲから成り、これにより主記憶からフェッチされた命令はＩ  ＢＵＦＦＥＲ（ｉｎｓｔｒｕｃｔｉｏｎ  ｂｕｆｆｅｒ）１７に与えられる。
【００１５】
次に、Ｉ  ＢＵＦＦＥＲ１７に与えられた命令は、命令デコードのパイプラインにおいて、ＩＷＲ（ｉｎｓｔｒｕｃｔｉｏｎ  ｗｏｒｄ  ｒｅｇｉｓｔｅｒ  ）１８およびＤ  ＤＥＣＯＲＤＥＲ１９によってデコードされる。この命令デコードパイプラインは、命令のプレゼンテーションサイクルＥおよびデコードサイクルＤから成る。
【００１６】
Ｄサイクルの終了（Ｄリリース）時に、命令リザベーション・ステーションに相当するＣＳＥ（ｃｏｍｍｉｔ  ｓｔａｃｋ  ｅｎｔｒｙ）２０にエントリが作成される。また、このとき、命令のデコード結果に対応して、演算処理用リザベーションステーションに相当するＲＳＥ（ｒｅｓｅｒｖａｔｉｏｎ  ｓｔａｔｉｏｎ  ｆｏｒ  ｅｘｅｃｕｔｉｏｎ  ）２１、分岐処理用リザベーションステーションに相当するＲＳＢＲ（ｒｅｓｅｒｖａｔｉｏｎ  ｓｔａｔｉｏｎ  ｆｏｒ  ｂｒａｎｃｈ）２２、および主記憶オペランドアドレス生成用リザベーション・ステーションに相当するＲＳＡ（ｒｅｓｅｒｖａｔｉｏｎ  ｓｔａｔｉｏｎ  ｆｏｒ  ａｄｄｒｅｓｓ  ｇｅｎｅｒａｔｉｏｎ）２３に必要なエントリが作成される。
【００１７】
ここで、リザベーション・ステーション２１、２２、２３にエントリの空きがない場合には、その命令はＩＷＲ１８に止まり、必要なエントリに空きが生じた時点で、ＣＳＥ２０と他の必要なリザベーション・ステーション上にエントリが作成される。このため、各リザベーションステーション２１、２２、２３に対応してリソースカウンタが設けられ、エントリが作成される時にその値がインクリメントされ、そのエントリに対応する処理が完了するとその値がデクリメントされる。
【００１８】
また、ＣＳＥ２０に対してはインポインタが設けられ、Ｄサイクルの終了時にＣＳＥ２０に作成されるエントリの番号が、インポインタの値によって指示される。この番号は、命令識別子（ｉｎｓｔｒｕｃｔｉｏｎ  ｉｄｅｎｔｉｆｉｅｒ，ＩＩＤ）として、他のリザベーション・ステーション上の対応するエントリにも登録され、処理中の命令を命令実行順序と共にユニークに識別するために使用される。ＲＳＢＲ２２に対しても別のインポインタが設けられ、そのインポインタによって指示される位置にエントリが作成される。
【００１９】
ＲＳＥ２１およびＲＳＡ２３については、基本的にアウト・オブ・オーダー処理が行われるため、リザベーション・ステーションの中で空いているエントリが探され、エントリの作成が行われる。
【００２０】
また、ＣＳＥ２０に対しては、そのエントリが解放される時点でインクリメントされるアウトポインタが設けられ、アウトポインタの指す先頭のエントリが、実行中で未完了の命令のうちで実行順序が最も古いものとして識別される。エントリの解放に先立って実行されるプログラマブルな資源（記憶域、レジスタ等）の更新は、アウトポインタの指す命令から順に行われる。これにより、命令の実行順序に従った資源の更新順序が保証される。
【００２１】
ＲＳＢＲ２２に対しても同様にアウトポインタが設けられるが、分岐の確定はアウト・オブ・オーダー処理である。これに対して、ＣＳＥ２０に対する分岐の完了報告は、アウトポインタの指すエントリから順に実行される。
【００２２】
ＲＳＥ２１とＲＳＡ２２内のエントリに対しては、実行可能なエントリから任意の順序で処理が行われるが、複数の実行可能なエントリに対しては、命令実行順序の古いものから順に処理が行われる。
【００２３】
図２において、命令デコードのパイプライン動作の後に、アドレス計算のパイプライン、記憶制御ユニット（Ｓユニット）による記憶装置アクセスのパイプライン、演算実行のパイプライン、および資源更新のパイプラインの動作が必要に応じて実行される。
【００２４】
アドレス計算のパイプライン動作は、ＯＰ  ＡＤＲＳ  ＲＥＧ（ｏｐｅｒａｎｄ  ａｄｄｒｅｓｓ  ｒｅｇｉｓｔｅｒ）２４およびＥＡＧ（ｅｆｆｅｃｔｉｖｅ  ａｄｄｒｅｓｓ  ｇｅｎｅｒａｔｏｒ  ）２５によって行われ、アドレス生成プライオリティサイクルＰＡ  およびアドレス生成サイクルＡから成る。
【００２５】
Ｓユニットは、ＯＥＡＲ（ｏｐｅｒａｎｄ  ｅｆｆｅｃｔｉｖｅ  ａｄｄｒｅｓｓ  ｒｅｇｉｓｔｅｒ）２６、ＯＰＴＬＢ（ｏｐｅｒａｎｄ  ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ）２７、ＯＰ  ＴＡＧ（ｏｐｅｒａｎｄ  ｔａｇ  ）２８、およびＯＰ  ＬＢＳ（ｏｐｅｒａｎｄ  ｌｏｃａｌ  ｂｕｆｆｅｒ  ｓｔｏｒａｇｅ）２９を含む。このＳユニットのパイプラインは、プライオリティサイクルＰＳ  、タグとＴＬＢへのアクセスサイクルＴＳ  、バッファアクセスサイクルＢＳ  、および完了サイクルＲＳ  から成る。
【００２６】
演算実行のパイプライン動作は、ＬＲ（ｌｏａｄ  ｒｅｇｉｓｔｅｒ  ）３０、ＥＵ（ｅｘｅｃｕｔｉｏｎ  ｕｎｉｔ）３１、ＥＵ  ＲＲ（ｅｘｅｃｕｔｉｏｎ  ｕｎｉｔ  ｒｅｓｕｌｔ  ｒｅｇｉｓｔｅｒ）３２、およびＥＵ  ＳＴＤＲ（ｅｘｅｃｕｔｉｏｎ  ｕｎｉｔ  ｓｔｏｒｅ  ｄａｔａ  ｒｅｇｉｓｔｅｒ）３３によって行われ、プライオリティサイクルＰＥ  、バッファアクセスサイクルＢＥ  、実行サイクルＸＥ  、および更新サイクルＵＥ  から成る。ＬＲ３０、ＥＵ３１、ＥＵ  ＲＲ３２、およびＥＵ  ＳＴＤＲ３３を含むブロックをＥユニットと呼ぶ場合もある。
【００２７】
資源更新のパイプライン動作は、ＲＵＢ（ｒｅｇｉｓｔｅｒ  ｕｐｄａｔｅ  ｂｕｆｆｅｒ）３４、ＧＲ／ＦＲ（ｇｅｎｅｒａｌ  ｐｕｒｐｏｓｅ  ｒｅｇｉｓｔｅｒ／ｆｌｏａｔｉｎｇ−ｐｏｉｎｔ  ｒｅｇｉｓｔｅｒ）３５、およびレジスタ３６により行われ、更新サイクルＵおよび書込みサイクルＷから成る。この書込みサイクルＷにより、ＧＲ／ＦＲ３５、レジスタ３６等の値が書き換えられ、ＲＵＢ３４およびＧＲ３５からＯＰ  ＡＤＲＳ  ＲＥＧ２４にデータが渡される。
【００２８】
また、図２において、ＣＳＡＲ（ｃｏｎｔｒｏｌ  ｓｔｏｒａｇｅ  ａｄｄｒｅｓｓ  ｒｅｇｉｓｔｅｒ）４１、ＭＣＳ（ｍｉｃｒｏ  ｃｏｎｔｒｏｌ  ｓｔｏｒａｇｅ，    制御記憶）４２、Ｄ ＴＡＧ４３、Ａ ＴＡＧ４４、ＲＳＭ（ｒｅｓｅｒｖａｔｉｏｎ  ｓｔａｔｉｏｎ  ｆｏｒ  ｍｉｃｒｏ  ｃｏｎｔｒｏｌ  ）４５、Ｔ ＭＲ ＴＡＧ（Ｔ  ｃｙｃｌｅ  ｍｉｃｒｏ  ｒｅａｄ  ｔａｇ）４６、およびＭＤＢ（ｍｉｃｒｏ  ｄａｔａ  ｂｕｆｆｅｒ  ）４７は、命令リザベーション・ステーションと連携しながら、マイクロプログラムにより命令を制御する動作を行う。Ｄ ＴＡＧ４３、Ａ ＴＡＧ４４、およびＴ ＭＲ ＴＡＧ４６はレジスタである。
【００２９】
ＲＳＭ４５は、ＴＭＲサイクルからＵサイクルまでの間、マイクロプログラムとそれによる制御に必要な情報を保持する。ＭＤＢ４７は、マイクロプログラムが使用するデータを一時的に保存する。ＲＳＭ４５およびＭＤＢ４７のエントリは、命令の各処理フロー毎に生成される。
【００３０】
Ｄサイクルにおいて、デコードされた命令がマイクロプログラムにより制御される命令であると判定されると、その命令の処理を制御するマイクロプログラムのアドレスがＤ  ＤＥＣＯＲＤＥＲ１９によりＣＳＡＲ４１にセットされる。そして、マイクロプログラムがＭＣＳ４２から読み出され、Ｄ ＴＡＧ４３、Ａ ＴＡＧ４４に順にセットされる。このとき、Ａ ＴＡＧ４４には、Ｄ ＴＡＧ４３からのマイクロプログラム以外の制御情報もセットされる。これにより、Ａ ＴＡＧ４４にセットされた情報をＲＳＭ４５へ登録することが予約される。
【００３１】
Ｄサイクルに対応するＤＭ  サイクルにおいて、Ｄ ＴＡＧ４３から出力される情報の一部は、制御信号Ｄ  ＣＯＮＴＲＯＬとして、Ｄサイクルにおける各種の制御に使用される。制御信号Ｄ  ＣＯＮＴＲＯＬは、例えば、ＣＳＥ２０、ＲＳＥ２１、ＲＳＢＲ２２、ＲＳＡ２３の制御に使用される。
【００３２】
また、Ａサイクルに対応するＡＭ  サイクルにおいて、Ａ ＴＡＧ４４から出力される情報の一部は、制御信号Ａ  ＣＯＮＴＲＯＬとして、Ａサイクルにおける各種の制御に使用される。このとき、ＲＳＭ４５に空きエントリがあれば、Ａ ＴＡＧ４４の情報がＲＳＭ４５に格納され、ＴＭＲサイクルからＵサイクルまでの間ＲＳＭ４５に保持される。ＲＳＭ４５に空きエントリがなければ、その情報は、空きエントリが発生するまでＡ ＴＡＧ４４に保持される。
【００３３】
ＲＳＭ４５に格納された情報は、ＴＭＲサイクルからＵサイクルまでの任意のサイクルにおいて、必要に応じて読み出され、制御信号ＣＯＮＴＲＯＬとして各種の制御に使用される。
【００３４】
Ｔ ＭＲ ＴＡＧ４６は、Ｔ ＲＯＢ３（Ｔ  ｃｙｃｌｅ  ｒｅｇｉｓｔｅｒ  ｏｐｅｒａｎｄ  ｂｕｓ  ３）からのマイクロプログラムの読み出しのために設けられている。Ｔ ＭＲ ＴＡＧ４６からの出力は、命令の制御のためだけに使用されるのではなく、特定のデータ（マイクロプログラム内で指定された値または命令のオペレーションコード）をＴ ＲＯＢ３を通してＭＤＢ４７に渡し、ＥＵ３１にそのデータを用いて処理を行わせるためにも使用される。
【００３５】
Ａ ＴＡＧ４４からＴ ＭＲ ＴＡＧ４６に格納されたマイクロプログラムが、ＥＵ３１に渡すべき特定のデータを含んでいる場合、そのデータがＭＤＢ４７に格納される。また、ＭＤＢ４７は、レジスタ３６からＴ ＲＯＢ３を通して渡されるデータを格納することもある。
【００３６】
このように、ＭＤＢ４７は、Ｔ ＭＲ ＴＡＧ４６、レジスタ３６等から渡されたデータを一時的に保存し、そのデータをＢ ＲＯＢ３（Ｂ  ｃｙｃｌｅ  ｒｅｇｉｓｔｅｒ  ｏｐｅｒａｎｄ  ｂｕｓ  ３）を通して適切なタイミングでＥＵ３１に渡す。また、ＥＵ  ＲＲ３２から渡された演算結果を一時的に保存し、そのデータを適切なタイミングでレジスタ３６に書き込む。
【００３７】
次に、図３から図８までを参照しながら、ＲＳＭ４５とＭＤＢ４７の構成および動作についてより詳細に説明する。
【００３８】
図３は、ＲＳＭ４５とその周辺の回路を示している。図３において、ＲＳＭ４５は、ＲＳＭ０〜ＲＳＭ５の６つのエントリとセレクタ５１、５２を含み、セレクタ５２の出力側にはレジスタＷ ＴＡＧ５３が設けられる。
【００３９】
Ａ ＴＡＧ４４には、Ｄ ＴＡＧ４３からのマイクロプログラムの他に、Ｄ ＦＣＮＴ（Ｄ  ｆｌｏｗ  ｃｏｕｎｔ）、Ｄ ＩＩＤ、Ｄ ＯＰＣＯＤＥ（Ｄ  ｏｐｅｒａｔｉｏｎ  ｃｏｄｅ）等の情報もセットされ、その出力はＡサイクルにおける各種の制御に使用される。ここで、Ｄ ＦＣＮＴは、複数の処理フローを必要とするマルチフロー命令の各フローの識別番号を表し、Ｄ ＩＩＤは、ＣＳＥ２０のエントリの識別子を表し、Ｄ ＯＰＣＯＤＥは、オペレーションコードを表す。
【００４０】
これらの情報は、マイクロプログラムと共にＲＳＭ４５のエントリに書き込まれ、命令リザベーション・ステーションに登録された命令との対応関係を管理するために利用される。
【００４１】
ＲＳＭ０〜ＲＳＭ５への書き込みは、信号ＲＳＭ ＩＮ ＰＴＲ（ＲＳＭ  ｉｎｐｕｔ  ｐｏｉｎｔｅｒ  ）により制御され、ＲＳＭ０〜ＲＳＭ５からの読み出しは、信号ＲＳＭＯＵＴ ＰＴＲ（ＲＳＭ  ｏｕｔｐｕｔ  ｐｏｉｎｔｅｒ）により制御される。ＲＳＭ ＩＮ ＰＴＲおよびＲＳＭ ＯＵＴ ＰＴＲは、ＲＳＭ４５の特定のエントリの番号を表す。
【００４２】
セレクタ５１は、ＲＳＭ０〜ＲＳＭ５のうちＲＳＭ ＩＮ ＰＴＲの値に対応するエントリを選択して、入力情報を書き込み、セレクタ５２は、ＲＳＭ ＯＵＴ ＰＴＲの値に対応するエントリを選択して、格納された情報を読み出す。読み出された情報は、Ｗ ＴＡＧ５３に一旦格納された後、制御信号ＣＯＮＴＲＯＬとして、Ｗサイクルにおける資源の更新、割り込みチェック等の各種の制御に使用される。
【００４３】
また、ＥユニットによるＰＥ  、ＢＥ  、ＸＥ  、ＵＥ  の各サイクルにおいて、ＲＳＭ４５に格納された情報が必要な場合は、各エントリから制御信号ＣＯＮＴＲＯＬが直接出力されたり、セレクタ５２の出力がそのまま制御信号ＣＯＮＴＲＯＬとして用いられたりする。
【００４４】
Ｔ ＭＲ ＴＡＧ４６には、Ａ ＴＡＧ４４からの情報の他に、信号ＲＳＭ ＩＮ ＰＴＲおよびＡ ＭＲ ＲＥＬ（Ａ  ｃｙｃｌｅ  ｍｉｃｒｏ  ｒｅａｄ  ｒｅｌｅａｓｅ）が入力される。Ａ ＭＲ ＲＥＬは、ＡＭ  サイクルにおいて有効な情報があり、ＲＳＭ４５に空きエントリがあるときに論理“１”となる。このとき、Ａ ＭＲ ＲＥＬは、次のサイクルにおいて、ＴＭＲサイクルの処理が開始されることを示している。
【００４５】
ＡＭ  サイクルにおいてＡ ＭＲ ＲＥＬが論理“１”となると、Ａ ＴＡＧ４４の情報がＲＳＭ ＩＮ ＰＴＲの指すＲＳＭ４５のエントリに書き込まれ、ＡＴＡＧ４４から読み出されたデータがＴ ＭＲ ＴＡＧ４６に書き込まれる。
そして、ＴＭＲサイクルにおいて、Ｔ
【００４６】
ＭＲ ＴＡＧ４６のデータがＭＤＢ４７に書き込まれる。
【００４７】
また、ＥユニットによるＰＥ  サイクルにおいて、制御信号Ｐ ＥＵ ＲＥＬ（Ｐ  ｃｙｃｌｅ  Ｅ−ＵＮＩＴ  ｒｅｌｅａｓｅ）とＰ ＥＵ ＲＳＭ ＩＤ（Ｐ  ｃｙｃｌｅ  Ｅ−ＵＮＩＴ  ＲＳＭ  ｉｄｅｎｔｉｆｉｅｒ  ）が生成され、ＢＥ  、ＸＥ  、ＵＥ  の各サイクルにおいて、Ｐ ＥＵ ＲＥＬの値に対応する制御信号ＥＵ ＶＡＬとＰ ＥＵ ＲＳＭ ＩＤの値に対応する制御信号ＥＵ ＲＳＭ ＩＤが保持される。
【００４８】
ここで、Ｐ ＥＵ ＲＥＬは、次のサイクルにおいて、ＥユニットによるＢＥ  サイクルの処理が開始されることを示している。また、Ｐ ＥＵ ＲＳＭ ＩＤは、Ｅユニットにより処理される命令の制御情報が格納されたＲＳＭ４５のエントリの番号を示している。
【００４９】
Ｂ ＥＵ ＶＡＬ５４、Ｘ ＥＵ ＶＡＬ５５、およびＵ ＥＵ ＶＡＬ５６は、ＥＵ ＶＡＬを保持するレジスタであり、Ｂ ＥＵ ＲＳＭ ＩＤ５７、ＸＥＵ ＲＳＭ ＩＤ５８、およびＵ ＥＵ ＲＳＭ ＩＤ５９は、ＥＵ ＲＳＭ ＩＤを保持するレジスタである。
【００５０】
ＢＥ  、ＸＥ  、ＵＥ  の各サイクルにおいて、ＥＵ ＶＡＬは、それぞれＢ ＥＵＶＡＬ５４、Ｘ ＥＵ ＶＡＬ５５、Ｕ ＥＵ ＶＡＬ５６に保持され、対応するサイクルにおいてＥユニットが処理を行っていることを示す。
【００５１】
また、ＢＥ  、ＸＥ  、ＵＥ  の各サイクルにおいて、ＥＵ ＲＳＭ ＩＤは、それぞれＢ ＥＵ ＲＳＭ ＩＤ５７、Ｘ ＥＵ ＲＳＭ ＩＤ５８、Ｕ ＥＵ ＲＳＭ ＩＤ５９に保持され、Ｅユニットで処理されている命令の制御情報が格納されたＲＳＭ４５のエントリの番号を示す。これらのＥＵ ＲＳＭ ＩＤは、対応するＥＵ ＶＡＬのタイミングでＲＳＭ４５およびＭＤＢ４７に出力され、読み出し／書き込み制御に使用される。
【００５２】
このように、Ｅユニットによる各処理ステージ毎に、そのステージで処理されている命令の制御情報が格納されたＲＳＭ４５のエントリの識別情報を保持するレジスタを設けることで、各処理ステージのタイミングに合わせて、ＲＳＭ４５およびＭＤＢ４７を制御することができる。ＲＳＭ４５においては、Ｅユニットにおける処理と同期して、マイクロプログラム等の制御情報をＣＯＮＴＲＯＬとして出力することができる。ＭＤＢ４７の制御については、後述することにする。
【００５３】
次に、図４は、ＲＳＭ４５およびＭＤＢ４７とそれらの周辺回路を示している。図４において、ＲＳＭ ＩＮ ＰＴＲ６１、ＲＳＭ ＯＵＴ ＰＴＲ６２は、それぞれ、ＲＳＭ ＩＮ ＰＴＲ、ＲＳＭ ＯＵＴ ＰＴＲの値を保持するレジスタであり、ＲＳＭ ＯＵＴ ＰＴＲ ＬＣＨ６３は、ＲＳＭ ＯＵＴ ＰＴＲの値を保持するラッチ回路である。
【００５４】
ＭＤＢ４７は、ＲＳＭ４５の６つのエントリに対応して、ＭＤＢ０〜ＭＤＢ５の６つのエントリを含み、さらにセレクタ６４、６５、６６、６７を含む。ＲＳＭ０〜ＲＳＭ５とＭＤＢ０〜ＭＤＢ５はそれぞれ１対１に対応しており、ＲＳＭｉ（ｉ＝０，１，２，３，４，５）に保持されているマイクロプログラムが使用するデータはＭＤＢｉに格納される。
【００５５】
ＭＤＢ０〜ＭＤＢ５への書き込みは、Ｔ ＭＲ ＴＡＧ４６からの信号Ｔ ＭＲ ＶＡＬとＴ ＭＲ ＲＳＭ ＩＤ、およびＵ ＥＵ ＲＳＭ ＩＤ５９により制御され、ＭＤＢ０〜ＭＤＢ５からの読み出しは、Ｂ ＥＵ ＲＳＭ ＩＤ５７およびＲＳＭ ＯＵＴ ＰＴＲ ＬＣＨ６３により制御される。
【００５６】
Ｔ ＭＲ ＴＡＧ４６は、Ｔ ＭＲ ＶＡＬとＴ ＭＲ ＲＳＭ ＩＤの他に、マイクロプログラムの一部とオペレーションコードをデータとして保持している。これらのデータをＴ ＲＯＢ３に送出するかどうかは、あらかじめマイクロプログラムにより指定されている。
【００５７】
セレクタ６４は、Ｔ ＲＯＢ３からＥユニットに渡すべきデータを受け取り、ＴＭＲサイクルにおいてＴ ＭＲ ＶＡＬが示すタイミングで、Ｔ ＭＲ ＲＳＭＩＤの値に対応するエントリを選択して、そのデータを書き込む。また、セレクタ６５は、ＵＥ  サイクルにおいてＵ ＥＵ ＶＡＬ５６が示すタイミングで、Ｕ ＥＵ ＲＳＭ ＩＤ５９の値に対応するエントリを選択して、Ｅユニットにおける演算結果を書き込む。
【００５８】
ＴＭＲサイクルでＭＤＢ４７に書き込まれたデータは、ＢＥ  サイクルで読み出され、オペランドとしてＥユニットに送られる。このとき、セレクタ６６は、Ｂ ＥＵ ＶＡＬ５４が示すタイミングで、Ｂ ＥＵ ＲＳＭ ＩＤ５７の値に対応するエントリを選択して、格納されたデータを読み出す。
【００５９】
また、ＵＥ  サイクルでＭＤＢ４７に書き込まれたデータは、Ｗサイクルで読み出され、資源の更新に使用される。このとき、セレクタ６７は、ＲＳＭ ＯＵＴＰＴＲ ＬＣＨ６３の値に対応するエントリを選択して、格納されたデータを読み出す。
【００６０】
ところで、ＲＳＭ ＩＮ ＰＴＲ６１、ＲＳＭ ＯＵＴ ＰＴＲ６２の値は、それぞれ、図５、６に示すような制御回路により更新される。図５において、加算器７１は、ＲＳＭ ＩＮ ＰＴＲ６１からの入力値に１を加算し、セレクタ７２は、Ａ ＭＲ ＲＥＬが論理“１”のとき、加算器７１からの入力値を選択し、Ａ ＭＲ ＲＥＬが論理“０”のとき、ＲＳＭ ＩＮ ＰＴＲ６１からの入力値を選択する。したがって、Ａ ＭＲ ＲＥＬが論理“１”のとき、ＲＳＭ ＩＮ ＰＴＲ６１の値がインクリメントされる。
【００６１】
また、図６において、加算器７３は、ＲＳＭ ＯＵＴ ＰＴＲ６２からの入力値に１を加算し、セレクタ７４は、ＣＳＥ２０から出力される信号ＴＯＱ ＣＳＥ ＣＯＭＰＬＥＴＥ（ｔｏｐ  ｏｆ  ｑｕｅｕｅ  ｃｏｍｍｉｔ  ｓｔａｃｋ  ｅｎｔｒｙ  ｃｏｍｐｌｅｔｅ）とＴＯＱＣＳＥ ＭＩＣＲＯ ＣＴＬ（ｔｏｐ  ｏｆ  ｑｕｅｕｅ  ｃｏｍｍｉｔ  ｓｔａｃｋ  ｅｎｔｒｙ  ｍｉｃｒｏ  ｃｏｎｔｒｏｌ  ）の論理積が論理“１”のとき、加算器７３からの入力値を選択し、その論理積が論理“０”のとき、ＲＳＭ ＯＵＴ ＰＴＲ６２からの入力値を選択する。
【００６２】
ここで、ＴＯＱ ＣＳＥ ＣＯＭＰＬＥＴＥは、ＣＳＥ２０の先頭のエントリに格納された命令のフローの処理が完了したとき、論理“１”となり、ＴＯＱ ＣＳＥ ＭＩＣＲＯ ＣＴＬは、ＣＳＥ２０の先頭のエントリに格納された命令のフローがマイクロプログラムにより制御されるものであるとき、論理“１”となる。
【００６３】
したがって、マイクロプログラムにより制御される命令のフローの処理が完了したとき、ＴＯＱ ＣＳＥ ＣＯＭＰＬＥＴＥとＴＯＱ ＣＳＥ ＭＩＣＲＯ ＣＴＬの論理積が論理“１”となり、ＲＳＭ ＯＵＴ ＰＴＲ６２の値がインクリメントされる。
【００６４】
また、図３のＤ ＦＣＮＴは、図７に示すような制御回路により生成／更新される。図７において、加算器７５は、レジスタＤ ＦＣＮＴ７７からの入力値に１を加算し、セレクタ７６は、信号Ｄ ＭＦ ＲＥＬ（Ｄ  ｃｙｃｌｅ  ｍｕｌｔｉ−ｆｌｏｗ  ｒｅｌｅａｓｅ）が論理“１”のとき、加算器７５からの入力値を選択し、Ｄ ＭＦ ＲＥＬが論理“０”のとき、Ｄ ＦＣＮＴ７７からの入力値を選択する。
【００６５】
ここで、Ｄ ＭＦ ＲＥＬは、マイクロプログラムにより制御されるマルチフロー命令の各処理フローにおいて、Ｄサイクルが終了したとき論理“１”となる。したがって、各処理フロー毎に、Ｄ ＦＣＮＴ７７の値がインクリメントされる。これに対して、１つの処理フローで処理されるシングルフロー命令の場合は、Ｄ ＭＦ ＲＥＬが使用されず、Ｄ ＦＣＮＴ７７の値は常に１のままである。
【００６６】
このＤ ＦＣＮＴ７７の値は、制御情報と共に、Ａ ＴＡＧ４４、ＲＳＭ４５、Ｗ ＴＡＧ５３の順に格納され、特定のフローに対する制御が必要な場合に使用される。
【００６７】
また、図３のＰ ＥＵ ＲＳＭ ＩＤは、図８に示すような回路により生成される。図８の回路は、ＲＳＭ４５の６つのエントリに対応する６つのＮＸＯＲ回路８１と６つのＡＮＤ回路８２、およびエンコーダ８３を含む。
【００６８】
各ＮＸＯＲ回路８１には、４ビットのＰ ＥＵ ＩＩＤと４ビットのＲＳＭｉＩＩＤ（ｉ＝０，１，２，３，４，５）が入力され、＜０：３＞の各ビット毎に値が比較されて、比較結果が出力される。このとき、Ｐ ＥＵ ＩＩＤとＲＳＭｉ ＩＩＤの対応する２つのビット値が一致すれば、それらの比較結果は論理“１”となる。
【００６９】
ここで、Ｐ ＥＵ ＩＩＤは、ＥユニットによりＰＥ  サイクルの処理が開始された命令の命令識別子を表し、ＲＳＭｉ ＩＩＤは、ＲＳＭ４５のエントリＲＳＭｉに保持されている命令識別子を表す。したがって、Ｅユニットにおいて、エントリＲＳＭｉに保持された命令識別子に対応する命令の処理が開始されれば、ＮＸＯＲ回路８１の４ビットの出力はすべて論理“１”となる。
【００７０】
次に、ＡＮＤ回路８２は、ＮＸＯＲ回路８１からの出力とＲＳＭｉ ＶＡＬＩＤとの論理積を、Ｐ ＥＵ ＲＳＭｉ ＯＰＥＲＡＴＩＯＮとして出力する。ここで、ＲＳＭｉ ＶＡＬＩＤは、ＲＳＭｉの情報が有効であるとき、論理“１”となり、Ｐ ＥＵ ＲＳＭｉ ＯＰＥＲＡＴＩＯＮは、ＡＮＤ回路８２の入力がすべて論理“１”のとき、論理“１”となる。このとき、Ｐ ＥＵ ＲＳＭｉ ＯＰＥＲＡＴＩＯＮは、Ｅユニットにおいて処理中の命令の制御情報がＲＳＭｉに保持されていることを表す。
【００７１】
エンコーダ８３は、Ｐ ＥＵ ＲＳＭ０ ＯＰＥＲＡＴＩＯＮ〜Ｐ ＥＵ ＲＳＭ５ ＯＰＥＲＡＴＩＯＮの６つの信号をエンコードして、Ｐ ＥＵ ＲＳＭＩＤを生成する。こうして生成されたＰ ＥＵ ＲＳＭ ＩＤは、Ｅユニットにおいて処理中の命令の制御情報が格納されているＲＳＭ４５のエントリの番号を表す。
【００７２】
このように、ＲＳＭ４５の各エントリに保持された命令識別子とＥユニットによる処理が開始された命令の命令識別子を比較することにより、その命令の制御情報が格納されているエントリの識別情報を得ることができる。そして、得られた識別情報に従って、ＲＳＭ４５から必要な情報を読み出すことができる。また、この識別情報を用いて、ＲＳＭ４５のエントリに対応するＭＤＢ４７のエントリを認識し、そのエントリから必要な情報を読み出したり、そのエントリに演算結果を格納したりすることができる。
【００７３】
ＲＳＭ４５は、図９に示すようなリングバッファ構造になっており、各エントリの割り当てと解放は、破線の矢印で示すように、イン・オーダーで行われる。
まず、Ａ
【００７４】
ＭＲ ＲＥＬのタイミングでＲＳＭ ＩＮ ＰＴＲ６１の値が指すエントリが割り当てられ、そのエントリにＡＭ  サイクルから渡された情報がセットされる。
【００７５】
次に、ＴＯＱ ＣＳＥ ＣＯＭＰＬＥＴＥ＆ＴＯＱ ＣＳＥ ＭＩＣＲＯ ＣＴＬのタイミングでＲＳＭ ＯＵＴ ＰＴＲが指すエントリが解放され、そのエントリの情報はＷサイクルに渡される。したがって、命令リザベーション・ステーションからの命令完了報告に同期して、対応するＲＳＭ４５のエントリの解放と資源の更新が行われることになる。なお、Ｗサイクルより前のサイクルで制御情報が必要な場合は、図３に示した通り、ＲＳＭ４５のエントリを解放することなく、直接、情報が出力される。
【００７６】
一般に、マイクロプログラムによる命令の制御においては、図１０に示すように、複数の処理フローが実行される。図１０の各フローにおいて、ＮＤ、Ｄ、Ａは、それぞれ、デコード前のサイクル、デコードサイクル、アドレス計算サイクルを表し、Ｄ ＭＦ ＲＥＬは、Ｄサイクルの終了タイミングを表す。
【００７７】
１ｓｔ  ｆｌｏｗのＤサイクルでは、命令がデコードされて、マイクロプログラムのアドレスＩ０がＣＳＡＲ４１にセットされる。２ｎｄ  ｆｌｏｗは、他のアドレス計算がすべて終了して図２のＲＳＡ２３が空になるまで、アドレス計算を待合わせる処理に対応する。
【００７８】
３ｒｄ  ｆｌｏｗのＮＤサイクルにおいて、ＭＣＳ４２からマイクロプログラムが読み出され、Ｄ ＴＡＧ４３にセットされると共に、次のアドレスがＣＳＡＲ４１にセットされる。そして、ＤサイクルおよびＡサイクルにおいて、図２のＤＭ  サイクルおよびＡＭ  サイクルに対応する動作が行われる。４ｔｈ  ｆｌｏｗ以降のフローについては、３ｒｄ  ｆｌｏｗと同様である。
【００７９】
次に、図１１から図１４までを参照しながら、マイクロプログラムによる命令制御の具体例について説明する。
【００８０】
図１１および図１２は、ＬＰＳＷ（Ｌｏａｄ  Ｐｒｏｇｒａｍ  Ｓｔａｔｕｓ  Ｗｏｒｄ）命令の処理フローを示している。この例では、５つのフローにより制御が行われ、ＭＤＢ４７を使用して、Ｅユニットによる演算結果で資源が更新される。更新される資源は、図２のレジスタ３６のＰＳＷ（６４ビット）である。また、各フローにおいて、“＋”が付加されたサイクル名は、そのサイクルの終了間際のタイミングを表す。例えば、Ｕ＋は、Ｕサイクルの終了間際を表している。
【００８１】
まず、図１１の１ｓｔ  ｆｌｏｗおよび２ｎｄ  ｆｌｏｗにおいては処理が行われず、３ｒｄ  ｆｌｏｗにおいて、ＰＳＷのビット＜０：３１＞にデータがロードされる。
【００８２】
ここでは、ＤＭ  サイクルにおいて、ＣＳＥ２０およびＲＳＥ２１のエントリが割り当てられる。次に、ＡＭ  サイクルにおいて、アドレス計算が行われ、Ｓユニットにフェッチ要求が送られ、ＲＳＭ ＩＮ ＰＴＲ６１が指すＲＳＭ４５のエントリが割り当てられて、ＲＳＭ ＩＮ ＰＴＲ６１の値がインクリメントされる。
【００８３】
次に、ＰＥ  サイクルにおいて、ＲＳＥ２１からＥユニットに加算要求が送られ、ＲＳＥ２１のエントリが解放される。また、図８に示した回路により、Ｐ ＥＵ ＲＳＭ ＩＤが検出され、Ｂ ＥＵ ＲＳＭ ＩＤ５７にセットされる。
【００８４】
次に、ＢＥ  サイクルにおいて、ＳユニットからのオペランドがＬＲ３０にセットされ、Ｂ ＥＵ ＲＳＭ ＩＤ５７の値がＸ ＥＵ ＲＳＭ ＩＤ５８にセットされる。
【００８５】
次に、ＸＥ  サイクルにおいて、ＥユニットがＬＲ３０の値に０を加算し、加算結果をＥＵ  ＲＲ３２にセットする。また、Ｘ ＥＵ ＲＳＭ ＩＤ５８の値がＵ ＥＵ ＲＳＭ ＩＤ５９にセットされる。
【００８６】
次に、ＵＥ  サイクルにおいて、Ｕ ＥＵ ＲＳＭ ＩＤ５９の値が指すＭＤＢ４７のエントリにＥＵ  ＲＲ３２の値がセットされ、Ｕサイクルにおいて、処理完了の判断が行われて、ＣＳＥ２０のエントリが解放される。そして、Ｕ＋サイクルにおいて、ＲＳＭ ＯＵＴ ＰＴＲ６２が指すＲＳＭ４５のエントリの情報がＷ ＴＡＧ５３にセットされる。また、ＲＳＭ ＯＵＴ ＰＴＲ６２の値がＲＳＭ ＯＵＴ ＰＴＲ ＬＣＨ６３にセットされ、ＲＳＭ ＯＵＴ ＰＴＲ６２の値がインクリメントされる。
【００８７】
そして、Ｗサイクルにおいて、ＲＳＭ ＯＵＴ ＰＴＲ ＬＣＨ６３が指すＭＤＢ４７のエントリのデータがＰＳＷ＜０：３１＞にセットされる。
【００８８】
次に、図１２の４ｔｈ  ｆｌｏｗにおいて、ＰＳＷ＜３２：６３＞にデータがロードされる。４ｔｈ  ｆｌｏｗの処理は、基本的に３ｒｄ  ｆｌｏｗの処理と同様であるが、ＰＳＷ＜３２：６３＞を更新することは、実行中のプログラムのアドレスを書き換えることに対応するため、命令のフェッチを一旦停止する必要がある。
【００８９】
そこで、ＤＭ  サイクルにおいて、命令フェッチが停止され、既にフェッチされた命令の処理がキャンセルされる。以下、３ｒｄ  ｆｌｏｗと同様の処理が行われ、Ｗサイクルにおいて、ＭＤＢ４７のデータがＰＳＷのビット＜３２：６３＞にセットされる。
【００９０】
そして、５ｔｈ  ｆｌｏｗにおいて、命令フェッチが再開され、更新されたＰＳＷに基づく処理が行われる。
【００９１】
また、図１３および図１４は、ＩＰＭ（Ｉｎｓｅｒｔ  Ｐｒｏｇｒａｍ  Ｍａｓｋ  ）命令の処理フローを示している。この例では、４つのフローにより制御が行われ、ＭＤＢ４７を使用して、Ｅユニットにデータが渡される。この命令により、ＧＲ３５のビット＜２：７＞にＰＳＷのビット＜１８：２３＞がセットされる。このとき、ＧＲ３５のビット＜０：１＞の値は０になり、ビット＜８：３１＞は変化しない。
【００９２】
まず、図１３の１ｓｔ  ｆｌｏｗおよび２ｎｄ  ｆｌｏｗにおいては、処理が行われず、３ｒｄ  ｆｌｏｗにおいて、ＰＳＷのビット＜１８：２３＞のデータがＲＵＢ３４のビット＜２：７＞にセットされる。
【００９３】
ここでは、ＤＭ  サイクルにおいて、ＣＳＥ２０およびＲＳＥ２１のエントリが割り当てられる。次に、ＡＭ  サイクルにおいて、ＲＳＭ ＩＮ ＰＴＲ６１が指すＲＳＭ４５のエントリが割り当てられて、ＲＳＭ ＩＮ ＰＴＲ６１の値がインクリメントされる。
【００９４】
次に、ＴＭＲサイクルにおいて、Ｔ ＭＲ ＲＳＭ ＩＤが指すＭＤＢ４７のエントリのビット＜２：７＞に、ＰＳＷのビット＜１８：２３＞のデータがセットされ、そのエントリのビット＜０：１，８：３１＞に０がセットされる。
【００９５】
次に、ＰＥ  サイクルにおいて、ＲＳＥ２１からＥユニットに、論理和の演算を行って結果をＲＵＢ３４に格納するような要求が送られ、ＲＳＥ２１のエントリが解放される。また、図８に示した回路により、Ｐ ＥＵ ＲＳＭ ＩＤが検出され、Ｂ ＥＵ ＲＳＭ ＩＤ５７にセットされる。
【００９６】
ここでは、ＴＭＲサイクルとＰＥ  サイクルが異なるサイクルとして説明されているが、これらは同じタイミングになることもある。また、ＴＭＲサイクルとＰＥ  サイクルの間隔が１サイクル以上になることもある。
【００９７】
次に、ＢＥ  サイクルにおいて、Ｂ ＥＵ ＲＳＭ ＩＤ５７が指すＭＤＢ４７のエントリのデータが、Ｅユニット内のＯＰ１Ｒ（ｏｐｅｒａｎｄ  １  ｒｅｇｉｓｔｅｒ）にセットされ、Ｂ ＥＵ ＲＳＭ ＩＤ５７の値がＸ ＥＵ ＲＳＭ ＩＤ５８にセットされる。
【００９８】
次に、ＸＥ  サイクルにおいて、ＥユニットがＯＰ１Ｒの値と０の論理和を求め、演算結果をＥＵ０ＲＲにセットする。また、Ｘ ＥＵ ＲＳＭ ＩＤ５８の値がＵ ＥＵ ＲＳＭ ＩＤ５９にセットされる。
【００９９】
次に、ＵＥ  サイクルにおいて、ＥＵ  ＲＲ３２のデータがＲＵＢ３４にセットされ、Ｕサイクルにおいて、処理完了の判断が行われて、ＣＳＥ２０のエントリが解放される。そして、Ｕ＋サイクルにおいて、ＲＳＭ ＯＵＴ ＰＴＲ６２が指すＲＳＭ４５のエントリの情報がＷ ＴＡＧ５３にセットされる。また、ＲＳＭ ＯＵＴ ＰＴＲ６２の値がＲＳＭ ＯＵＴ ＰＴＲ ＬＣＨ６３にセットされ、ＲＳＭ ＯＵＴ ＰＴＲ６２の値がインクリメントされる。
【０１００】
次に、図１４の４ｔｈ  ｆｌｏｗにおいて、ＧＲ３５のビット＜０：７＞がＲＵＢ３４のビット＜０：７＞で置き換えられる。
【０１０１】
ここでは、ＤＭ  サイクルにおいて、ＣＳＥ２０およびＲＳＥ２１のエントリが割り当てられ、ＡＭ  サイクルにおいて、ＲＳＭ ＩＮ ＰＴＲ６１が指すＲＳＭ４５のエントリが割り当てられて、ＲＳＭ ＩＮ ＰＴＲ６１の値がインクリメントされる。
【０１０２】
次に、ＰＥ  サイクルにおいて、ＲＳＥ２１からＥユニットに、マージを行って結果をＧＲ３５に格納するような要求が送られ、ＲＳＥ２１のエントリが解放される。また、図８に示した回路により、Ｐ ＥＵ ＲＳＭ ＩＤが検出され、ＢＥＵ ＲＳＭ ＩＤ５７にセットされる。
【０１０３】
次に、ＢＥ  サイクルにおいて、ＲＵＢ３４のデータがＯＰ１Ｒにセットされ、ＧＲ３５のデータがＥユニット内のＯＰ２Ｒ（ｏｐｅｒａｎｄ  ２  ｒｅｇｉｓｔｅｒ）にセットされる。また、Ｂ ＥＵ ＲＳＭ ＩＤ５７の値がＸ ＥＵ ＲＳＭ ＩＤ５８にセットされる。
【０１０４】
次に、ＸＥ  サイクルにおいて、ＥユニットがＯＰ１Ｒのビット＜０：７＞をＥＵ  ＲＲ３２のビット＜０：７＞にセットし、ＯＰ２Ｒのビット＜８：３１＞をＥＵ  ＲＲ３２のビット＜８：３１＞にセットする。また、Ｘ ＥＵ ＲＳＭ ＩＤ５８の値がＵ ＥＵ ＲＳＭ ＩＤ５９にセットされる。
【０１０５】
次に、ＵＥ  サイクルにおいて、ＥＵ  ＲＲ３２のデータがＲＵＢ３４にセットされ、Ｕサイクルにおいて、処理完了の判断が行われて、ＣＳＥ２０のエントリが解放される。そして、Ｕ＋サイクルにおいて、ＲＳＭ ＯＵＴ ＰＴＲ６２が指すＲＳＭ４５のエントリの情報がＷ ＴＡＧ５３にセットされる。また、ＲＳＭ ＯＵＴ ＰＴＲ６２の値がＲＳＭ ＯＵＴ ＰＴＲ ＬＣＨ６３にセットされ、ＲＳＭ ＯＵＴ ＰＴＲ６２の値がインクリメントされる。
【０１０６】
そして、Ｗサイクルにおいて、ＲＵＢ３４のデータがＧＲ３５にセットされ、ＧＲ３５のデータが更新される。
【０１０７】
これらの例では、ＵＥ  サイクルとＵサイクルが異なるサイクルとして説明されているが、これらは同じタイミングになることもある。また、ＵＥ  サイクルとＵサイクルの間隔が１サイクル以上になることもある。
【０１０８】
以上説明した実施形態においては、先願の特願平１０−１９１９００に記載された命令リザベーション・ステーションを含む情報処理装置における命令制御について説明したが、命令リザベーション・ステーションとしては任意のものを用いることができる。また、ＲＳＭ４５およびＭＤＢ４７のエントリの数としては、任意の数を採用することができる。
【０１０９】
【発明の効果】
本発明によれば、命令をアウト・オブ・オーダーで実行することのできる情報処理装置において、マイクロプログラムの制御情報および制御で使用するデータを命令処理と同期して制御対象に出力することができ、マイクロプログラムにより命令を制御することが可能になる。
【図面の簡単な説明】
【図１】本発明の命令制御装置の原理図である。
【図２】情報処理装置の構成図である。
【図３】ＲＳＭを示す図である。
【図４】ＲＳＭとＭＤＢの関係を示す図である。
【図５】ＲＳＭ ＩＮ ＰＴＲの制御回路を示す図である。
【図６】ＲＳＭ ＯＵＴ ＰＴＲの制御回路を示す図である。
【図７】Ｄ ＦＣＮＴの制御回路を示す図である。
【図８】Ｐ ＥＵ ＲＳＭ ＩＤの生成回路を示す図である。
【図９】ＲＳＭの割り当てと解放を示す図である。
【図１０】命令の各フローを示す図である。
【図１１】第１の動作例を示す図（その１）である。
【図１２】第１の動作例を示す図（その２）である。
【図１３】第２の動作例を示す図（その１）である。
【図１４】第２の動作例を示す図（その２）である。
【符号の説明】
１  格納手段
２  制御リザベーション・ステーション手段
３  データバッファ手段
１１  ＩＡＲ
１２  ＩＦ  ＥＡＧ
１３  ＩＥＡＲ
１４  ＩＦ  ＴＬＢ
１５  ＩＦ  ＴＡＧ
１６  ＩＦ  ＬＢＳ
１７  Ｉ  ＢＵＦＦＥＲ
１８  ＩＷＲ
１９  Ｄ  ＤＥＣＯＲＤＥＲ
２０  ＣＳＥ
２１  ＲＳＥ
２２  ＲＳＢＲ
２３  ＲＳＡ
２４  ＯＰ  ＡＤＲＳ  ＲＥＧ
２５  ＥＡＧ
２６  ＯＥＡＲ
２７  ＯＰ  ＴＬＢ
２８  ＯＰ  ＴＡＧ
２９  ＯＰ  ＬＢＳ
３０  ＬＲ
３１  ＥＵ
３２  ＥＵ  ＲＲ
３３  ＥＵ  ＳＴＤＲ
３４  ＲＵＢ
３５  ＧＲ／ＦＲ
３６  レジスタ
４１  ＣＳＡＲ
４２  ＭＣＳ
４３  Ｄ ＴＡＧ
４４  Ａ ＴＡＧ
４５  ＲＳＭ
４６  Ｔ ＭＲ ＴＡＧ
４７  ＭＤＢ
５１、５２、６４、６５、６６、６７、７２、７４、７６  セレクタ
５３  Ｗ ＴＡＧ
５４  Ｂ ＥＵ ＶＡＬ
５５  Ｘ ＥＵ ＶＡＬ
５６  Ｕ ＥＵ ＶＡＬ
５７  Ｂ ＥＵ ＲＳＭ ＩＤ
５８  Ｘ ＥＵ ＲＳＭ ＩＤ
５９  Ｕ ＥＵ ＲＳＭ ＩＤ
６１  ＲＳＭ ＩＮ ＰＴＲ
６２  ＲＳＭ ＯＵＴ ＰＴＲ
６３  ＲＳＭ ＯＵＴ ＰＴＲ ＬＣＨ
７１、７３、７５  加算器
７７  Ｄ ＦＣＮＴ
８１  ＮＸＯＲ回路
８２  ＡＮＤ回路
８３  エンコーダ
【図１】
0003554211.tif 000002
【図２】
0003554211.tif 000003
【図３】
0003554211.tif 000004
【図４】
0003554211.tif 000005
【図５】
0003554211.tif 000006
【図６】
0003554211.tif 000007
【図７】
0003554211.tif 000008
【図８】
0003554211.tif 000009
【図９】
0003554211.tif 000010
【図１０】
0003554211.tif 000011
【図１１】
0003554211.tif 000012
【図１２】
0003554211.tif 000013
【図１３】
0003554211.tif 000014
【図１４】
0003554211.tif 000015