(57)【要約】【課題】複数のエントリのデータを同時に出力可能なデータ処理装置の出力ポートの調停に係る遅延を抑制する。【解決手段】複数のエントリ及び複数の出力ポートを有し、クロックが入力された場合、複数の出力ポートにそれぞれ対応する複数の調停グループに複数のエントリをそれぞれ振り分け、出力ポートからエントリに保持されたデータを出力する場合、振り分けられた調停グループ単位で出力ポートの調停を行い、調停結果に従ってエントリに保持されたデータを出力する。【選択図】図４
2013206095.tif 000002
【特許請求の範囲】
【請求項１】
複数のエントリ及び複数の出力ポートと、
クロックが入力された場合、前記複数の出力ポートにそれぞれ対応する複数の調停グループに前記複数のエントリをそれぞれ振り分ける振り分け部と、
前記出力ポートから前記エントリに保持されたデータを出力する場合、振り分けられた前記調停グループ単位で前記出力ポートの調停を行うポート調停部と、
前記ポート調停部による調停結果に従って前記エントリに保持されたデータを出力する出力部と、
を備えることを特徴とするデータ処理装置。
【請求項２】
前記データ処理装置はさらに、
各エントリに保持されたデータが出力可能な状態であるかを設定する出力可否設定部を有することを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記複数の出力ポートのうち、対応するエントリに保持されるデータが出力される出力ポートを前記エントリ毎に指定可能なポート指定部を備えることを特徴とする請求項１又は２記載のデータ処理装置。
【請求項４】
前記振り分け部は、
前記複数のエントリ間の優先順位関係を示す優先順位情報に基づいて、各エントリの優先順位を判定する順位判定部と、
前記順位判定部が判定した判定結果に基づいて、前記複数のエントリを複数の調停グループにそれぞれ振り分けるグループ決定部とを有することを特徴とする請求項１〜３の何れか１項に記載のデータ処理装置。
【請求項５】
前記振り分け部は、
各エントリに対応する乱数をそれぞれ発生させる乱数発生部と、
前記乱数発生部が発生した乱数に基づき、前記複数のエントリを複数の調停グループにそれぞれ振り分けるグループ決定部とを有することを特徴とする請求項１〜３の何れか１項に記載のデータ処理装置。
【請求項６】
複数のエントリ及び複数の出力ポートを有するデータ処理装置の制御方法において、
クロックが入力された場合、前記データ処理装置が有する振り分け部が、前記複数の出力ポートにそれぞれ対応する複数の調停グループに前記複数のエントリをそれぞれ振り分け、
前記データ処理装置が有するポート調停部が、前記出力ポートから前記エントリに保持されたデータを出力する場合、振り分けられた前記調停グループ単位で前記出力ポートを調停し、
前記データ処理装置が有する出力部が、前記ポート調停部による調停結果に従って前記エントリに保持されたデータを出力することを特徴とするデータ処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置及びデータ処理装置の制御方法に関する。
【背景技術】
【０００２】
プロセッサは、その命令発行部にデータバッファを有するのが一般的である。例えば、プログラムに記述された命令の順序に関係なく、演算処理に必要なデータが揃った命令から実行する、命令のアウトオブオーダ（out of order）実行を行うプロセッサでは、データバッファとしてプライオリティキュー（優先順位付キュー）の一種であるリザベーションステーション（reservation station）が用いられる。リザベーションステーションの基本的な機能は、発行可能な条件を満たす命令を検出し、発行可能な命令の中で調停を行い、出力ポートに接続された演算器へ命令を発行することである。リザベーションステーションと同様の機能を有するバッファは、例えば命令発行キュー、命令スケジューラ、命令ウインドウとも呼ばれる。
【０００３】
プライオリティキューの出力ポート調停のための優先度決定方式としては、バブルアップ方式（shifting queue，compacting schedulerなどとも呼ばれる）や、優先順序の関係を示す優先順位行列（age matrix, precedence matrixなどとも呼ばれる）を用いるものなどがある。ここで、バブルアップ方式とは、各々のエントリの優先順位が固定であり、あるエントリからデータが取り出されるか移動して空いた場合に、次の優先順位のエントリからその空いたエントリへデータがすぐに移動することにより、優先度の高いエントリから順に空きエントリがなくデータが格納されることを実現するバッファの方式である。また、優先順位行列とは、あるエントリに対する別のエントリの優先順序の大小関係が記録された行列である。
【０００４】
データバッファ等のデータ処理装置は、複数のエントリに対して、少数の出力ポートを備えることが普通である。複数のエントリが出力可能である場合には、出力ポートに対応するプライオリティエンコーダにより調停を行うことで、複数のエントリのうち何れのエントリが実際にデータを出力できるかが決定される。プライオリティエンコーダは、ある回路資源の数が限られ、その回路資源を用いることを要求する他の複数の回路がある場合に、何れの回路が回路資源の使用権を得るかを調停する。
【０００５】
プライオリティエンコーダは、１つの出力ポートの調停のみを行うものに比べ、複数の出力ポートの調停を同時に行うものは回路が複雑となり、回路遅延が増大する。例えば、図２０（Ａ）に示すように出力Ａ及び出力Ｂとして複数のデータを同時に出力可能なバッファでは、出力Ａ及び出力Ｂの一方の出力ポートについての調停結果を用いて他方の出力ポートの調停を行うために遅延が大きくなる。
【０００６】
なお、複数のデータを同時に出力可能なバッファの構成として、図２０（Ｂ）に示すように、単一データのみ出力するバッファを複数設けることが考えられる。しかし、一方のバッファだけが先にエントリの空きがなくなりデータを投入できなくなったり、一方のバッファが空になって同時に１つのデータしか出力しかできなくなることにより、バッファリングの効率が低下することがある。また、バッファのエントリの空きがなくなった場合、伝送路上の上流側に停滞が波及し、スループットが低下する。プロセッサにおける、一つの命令により複数サイクル占有されるブロッキング演算器が接続されたリザベーションステーションを原因とするストールやネットワークにおけるhead of line blockingが、これに当たる。
【０００７】
特許文献１には、バブルアップ方式を用いるリザベーションステーションにおいてエントリのグループ化を行い、グループ化により１つのプライオリティエンコーダあたりの調停を行うエントリ数を削減するリザベーションステーションが提案されている。特許文献２には、複数出力ポートを有し、すべてのエントリについて出力ポートの調停を１つの調停回路で行うリザベーションステーションが提案されている。調停及び出力ポートの決定において特定の出力ポートからの出力を許可又は禁止する信号を用いることが記載されている。特許文献３には、Precedence matrixを用い、すべてのエントリについて、出力ポートの調停を１つの調停回路で行う命令キューが提案されている。特許文献４には、Age Matrixを用いる命令取出しキュー（unified pick queue）が提案されており、命令スケジューリングで用いられるスロット番号がデコーダによって割り当てられ、スロットあたり１命令取り出される場合の例が記載されている。非特許文献１には、Age Matrixを用いる、２つのキューで構成された命令発行キュー（Unified Queue）が示されている。ディスパッチステージにおいていずれのキューを用いるかが決定され、１つのキューには異種の３つの演算パイプラインが接続されており、それぞれの種類の演算パイプラインに対して１命令、一つのキューあたり最大３命令が同時に取り出される実装が示されている。特許文献５には、Age Matrixを用いる命令発行キューが提案されており、Age Matrixを構成するために用い、選択的なクロック入力を可能とするラッチ回路を有する構成が示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１０−２８２６６８号公報
【特許文献２】特開２０１１−８７３２号公報
【特許文献３】米国特許第５７４５７２６号公報
【特許文献４】米国特許出願公開第２０１１／００７８６９７号公報
【特許文献５】米国特許出願公開第２０１１／０１８５１５９号公報
【非特許文献】
【０００９】
【非特許文献１】“IBM POWER7 multicore server processor”,IBM J. RES. & DEV. VOL. 55 NO. 3 PAPER 1 MAY/JUNE 2011
【発明の概要】
【発明が解決しようとする課題】
【００１０】
１つの側面では、本発明は、複数のエントリのデータを同時に出力可能なデータ処理装置の出力ポートの調停に係る遅延を抑制することを目的とする。
【課題を解決するための手段】
【００１１】
データ処理装置の一態様は、複数のエントリ及び複数の出力ポートと、クロックが入力された場合、複数の出力ポートにそれぞれ対応する複数の調停グループに複数のエントリをそれぞれ振り分ける振り分け部と、出力ポートからエントリに保持されたデータを出力する場合、振り分けられた調停グループ単位で出力ポートの調停を行うポート調停部と、ポート調停部による調停結果に従ってエントリに保持されたデータを出力する出力部とを備える。
【発明の効果】
【００１２】
出力ポートの調停に係る遅延を抑制することができる。
【図面の簡単な説明】
【００１３】
【図１】情報処理システムの構成例を示す図である。
【図２】本実施形態におけるプロセッサの構成例を示す図である。
【図３】本実施形態における命令発行制御部の構成例を示す概略図である。
【図４】第１の実施形態によるデータ処理装置を用いた命令発行制御部の構成例を示す図である。
【図５】第１の実施形態における優先順位行列を説明するための図である
【図６】第１の実施形態における優先順位判定部の回路構成例を示す図である。
【図７】第１の実施形態におけるエントリのグループ分けの例を示す図である。
【図８】第１の実施形態におけるエントリのグループ分けの他の例、及びそれを行う回路構成例を示す図である。
【図９】第１の実施形態におけるグループ分け回路の他の例を示す図である。
【図１０】第１の実施形態におけるグループ決定回路の例を示す図である。
【図１１】第１の実施形態における取出し可否設定部の回路構成例を示す図である。
【図１２】第１の実施形態における出力可能ポート指定部の回路構成例を示す図である。
【図１３】第１の実施形態におけるポート調停部の回路構成例を示す図である。
【図１４】第１の実施形態におけるポート調停部の構成例を示す図である。
【図１５】第１の実施形態におけるグループ決定回路の他の構成例を示す図である。
【図１６】第２の実施形態によるデータ処理装置を用いた命令発行制御部の構成例を示す図である。
【図１７】第２の実施形態におけるポート調停部の回路構成例を示す図である。
【図１８】第２の実施形態におけるポート調停部の構成例を示す図である。
【図１９】第２の実施形態におけるポート調停部の構成例を示す図である。
【図２０】複数のデータを同時に出力可能なバッファの例を示す図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施形態を図面に基づいて説明する。
【００１５】
（第１の実施形態）
本発明の第１の実施形態について説明する。
図１は、演算処理装置としてのプロセッサを含む情報処理システムの構成例を示す図である。図１に示す情報処理システムは、例えば複数のプロセッサ１１Ａ、１１Ｂ及びメモリ１２Ａ、１２Ｂと、外部装置との入出力制御を行うインターコネクト制御部１３とを有する。例えば、プロセッサ１１Ａ、１１Ｂが、第１の実施形態によるデータ処理装置を内部に有する。
【００１６】
図２は、本実施形態におけるプロセッサ１１の構成例を示す図である。本実施形態におけるプロセッサ１１は、例えば命令のアウトオブオーダ実行やパイプライン処理の機能を有する。
【００１７】
命令フェッチステージでは、命令フェッチ部２１、命令バッファ２４、分岐予測回路２２、一次命令キャッシュメモリ２３、及び二次キャッシュメモリ３４等が動作する。命令フェッチ部２１は、分岐予測回路２２からフェッチする命令の予測分岐先アドレス、分岐制御部３０から分岐演算により確定した分岐先アドレス等を受け取る。命令フェッチ部２１は、受け取った予測分岐先アドレス、分岐先アドレス、及び命令フェッチ部２１内で作成した分岐しない場合にフェッチする命令の連続した次のアドレス等から、１つのアドレスを選択して次の命令フェッチアドレスを確定する。命令フェッチ部２１は、確定した命令フェッチアドレスを一次命令キャッシュメモリ２３に出力し、出力された確定後の命令フェッチアドレスに対応する命令コードをフェッチする。
【００１８】
一次命令キャッシュメモリ２３は、二次キャッシュメモリ３４の一部のデータを格納しているものであり、二次キャッシュメモリ３４は、メモリコントローラ３５を介してアクセス可能なメモリの一部のデータを格納しているものである。一次命令キャッシュメモリ２３に該当するアドレスのデータが存在しない場合には二次キャッシュメモリ３４からデータをフェッチし、二次キャッシュメモリ３４に該当するデータが存在しない場合にはメモリからデータをフェッチする。本実施形態では、メモリはプロセッサ１１の外部に配置しているため、外部にあるメモリとの入出力制御はメモリコントローラ３５を介して行われる。一次命令キャッシュメモリ２３や二次キャッシュメモリ３４、メモリの該当するアドレスからフェッチされた命令コードは、命令バッファ２４に格納される。
【００１９】
分岐予測回路２２は、命令フェッチ部２１から出力された命令フェッチアドレスを受け取り、命令フェッチと並行して分岐予測を実行する。分岐予測回路２２は、受け取った命令フェッチアドレスを基に分岐予測を行い、分岐の成立又は不成立を示す分岐方向と予測分岐先アドレスとを命令フェッチ部２１へ返す。命令フェッチ部２１は、予測された分岐方向が成立であった場合には次の命令フェッチアドレスとして予測された分岐先アドレスを選択する。
【００２０】
命令発行ステージでは、命令デコーダ２５及び命令発行制御部２７が動作する。命令デコーダ２５は、命令バッファ２４から命令コードを受け取って命令の種別や必要な実行資源等を解析し、解析結果を複数のエントリを有するラッチ２６を介して命令発行制御部２７に出力する。命令発行制御部２７は、リザベーションステーションの構造を持つ。命令発行制御部２７は、命令で参照するレジスタ等の依存関係を見て、依存関係のあるレジスタの更新状況や同じ実行資源を用いる命令の実行状況等から実行資源が命令を実行可能かどうかを判断する。命令発行制御部２７は、実行資源が命令を実行可能であると判断した場合には、レジスタ番号やオペランドアドレス等の命令の実行に必要な情報を実行資源に対して出力する。また、命令発行制御部２７は、実行可能な状態になるまで命令を格納しておくバッファの機能も有する。
【００２１】
命令実行ステージでは、演算器２８、一次オペランドキャッシュメモリ２９、及び分岐制御部３０等の実行資源が動作する。演算器２８は、レジスタ３１や一次オペランドキャッシュメモリ２９からデータを受け取り、四則演算、論理演算、三角関数演算、及びアドレス計算等の命令に対応した演算を実行し、演算結果をレジスタ３１や一次オペランドキャッシュメモリ２９に出力する。一次オペランドキャッシュメモリ２９は、命令キャッシュメモリ２３と同様に、二次キャッシュメモリ３４の一部のデータを格納しているものである。一次オペランドキャッシュメモリ２９は、ロード命令によるメモリから演算器２８やレジスタ３１へのデータのロードや、ストア命令による演算器２８やレジスタ３１からメモリへのデータのストア等に用いられる。各実行資源は、命令実行の完了通知を命令完了制御部３２へ出力する。
【００２２】
分岐制御部３０は、命令デコーダ２５から分岐命令の種別を受け取り、演算器２８から分岐先アドレスや分岐条件となる演算の結果を受け取って、演算結果が分岐条件を満たしていれば分岐成立、満たしていなければ分岐不成立の判断を行い、分岐方向を確定する。また、分岐制御部３０は、演算結果と分岐予測時の分岐先アドレスと分岐方向が一致するかどうかの判断や、分岐命令の順序関係の制御も行う。分岐制御部３０は、演算結果と予測とが一致した場合には命令完了制御部３２へ分岐命令の完了通知を出力する。一方、演算結果と予測とが一致しなかった場合には分岐予測失敗を意味するので、分岐制御部３０は、命令完了制御部３２へ分岐命令の完了通知とともに後続命令のキャンセル及び再命令フェッチ要求を出力する。
【００２３】
命令完了ステージでは、命令完了制御部３２、レジスタ３１、及び分岐履歴更新部３３が動作する。命令完了制御部３２は、命令の各実行資源から受け取った完了通知を基に、コミットスタックエントリに格納された命令コード順に命令完了処理を行い、レジスタ３１の更新指示を出力する。レジスタ３１は、命令完了制御部３２からレジスタ更新指示を受け取ると、演算器２８や一次オペランドキャッシュメモリ２９から受け取る演算結果のデータを基にレジスタの更新を実行する。分岐履歴更新部３３は、分岐制御部３０から受け取る分岐演算の結果を基に分岐予測の履歴更新データを作成し、分岐予測回路２２に出力する。
【００２４】
図３は、図２に示した命令発行制御部２７の構成例を示す概略図である。図３には、リザベーションステーションの機能を実現する命令発行制御部２７の構成例を示している。図３に示す命令発行制御部２７は、複数の出力ポートを有し、各出力ポートからそれぞれ１つの命令を出力することで複数の命令を同時に出力可能なものである。図３には、２つの出力ポートを有する例を示している。
【００２５】
命令デコーダでデコードされた命令は、リザベーションステーションのエントリ本体３５の空いているエントリに登録される。登録される内容は、エントリが有効であることを示すバリッドビット（Ｖ）、命令におけるディスティネーションレジスタ等の命令オペランドを識別するタグ、及びデコード済みオペコード等である。リザベーションステーションのエントリに登録された命令は、取出し可能命令検出部３６により、実行済命令のタグ等に基づいて先行命令との間のレジスタ依存関係が解析され実行可能であると判定されると、エントリから取出し可能な命令として検出される。取出し可能な命令は、ポート調停部３７により出力ポートの調停を受け、調停の結果、出力されることが決定した命令は演算器へ送出される。なお、命令デコーダから取出し可能命令検出部３６に命令に係る情報をバイパスする経路を設けることで、命令が１クロックサイクルのレイテンシでリザベーションステーションを通過できるようにすることも可能である。
【００２６】
図４は、第１の実施形態によるデータ処理装置を用いた命令発行制御部２７の構成例を示す図である。図４に示す命令発行制御部２７は、優先順位判定部４１、優先順位行列４２、グループ決定部４３、取出し可否設定部４４、出力可能ポート指定部４５、ポート調停部４６、及びバッファエントリ本体４７を有する。優先順位判定部４１、優先順位行列４２、グループ決定部４３、取出し可否設定部４４、及び出力可能ポート指定部４５は、図３に示した取出し可能命令検出部３６に含まれる。また、ポート調停部４６が図３に示したポート調停部３７に対応し、バッファエントリ本体４７が図３に示したリザベーションステーションのエントリ本体３５に対応する。
【００２７】
本実施形態における命令発行制御部２７は、命令発行の１クロックサイクル前のタイミングで、バッファエントリ本体４７のエントリのグループ分けを毎クロックサイクルで行う。つまり、出力ポートの調停の前（命令発行の１クロックサイクル前）に、グループ決定部４３が、出力ポートの数だけグループ分けする。そして、ポート調停部４６による出力ポートの調停は、グループ内で各々行う。例えば、出力ポートがポートＡ及びポートＢの２つならば、各エントリをグループＡ又はグループＢに割り振り、グループＡのエントリ同士及びグループＢのエントリ同士のそれぞれで出力ポートの調停を行う。なお、エントリのグループ分けにおいては、各グループに属するエントリの数が可能な限り均等になるようにすることが望ましい。
【００２８】
なお、以下では、命令発行制御部２７が出力ポートとして出力ポートＡ及び出力ポートＢの２つを有する場合を一例として説明するが、３以上の出力ポートを有する場合についても調停グループ毎に固有の信号を用いることで拡張可能である。また、以下の説明では、バッファエントリ本体４７のエントリの総数をｍとし、「エントリｎ」は、エントリ０〜エントリ（ｍ−１）のうちの任意の１つのエントリを指すものとする。
【００２９】
優先順位判定部４１は、バッファエントリ本体４７のエントリ間の優先順位関係を示す優先順位行列４２に基づいて、エントリの優先順位が奇数順位であるか偶数順位であるかを判定する。優先順位行列４２は、図５に示すように、エントリ毎に各エントリに対して優先度が高いか低いかを示す情報が格納されている。図５に示す例では、自エントリより古い（優先度の高い）エントリのフラグOLDER_Fのビットが立っており（値１）、自エントリより新しい（優先度の低い）エントリのフラグOLDER_Fのビットが立っていない（値０）。例えば、図５においては、エントリ０、３、４はエントリ１より優先度が高い。
【００３０】
優先順位判定部４１は、フラグE(x)_OLDER_Fのビットが立っている数により、自エントリの優先順位を判定する。図６は、優先順位判定部４１の回路構成例を示す図である。優先順位判定部４１は、図６に示す回路を各エントリ毎に有する。優先順位判定部４１は、排他的論理和演算回路（ＥＸＯＲ回路）１０１を有する。ＥＸＯＲ回路１０１には、信号En_OLDER_F[0]〜En_OLDER_F[m-1]が入力され、その演算結果を信号En_F_OLDER_ODDとして出力する。
【００３１】
入力信号En_OLDER_F[0]〜En_OLDER_F[m-1]は、エントリ０からエントリ（ｍ−１）までのエントリｎを除く（ｍ−１）個のエントリのそれぞれがエントリｎよりも優先度が高いか否かを示す信号である。入力信号En_OLDER_F[0]〜En_OLDER_F[m-1]は、優先順位行列４２のフラグOLDER_Fに基づく信号である。例えば、入力信号En_OLDER_F[1]は、エントリｎよりもエントリ１の方の優先度が高い場合に“１”とされ、優先度が低い場合に“０”とされる。そのため、En_OLDER_F[0]〜En_OLDER_F[m-1]の（ｍ−１）本の信号のうち、“１”となっている信号の本数は、エントリｎよりも優先度が高いエントリの個数を意味している。
【００３２】
出力信号En_F_OLDER_ODDは、出力ポートの調停の際の優先度がエントリｎよりも高いエントリの数が奇数であること、すなわち、エントリｎの優先順位が偶数であることを示す信号である。このように、入力信号En_OLDER_F[0]〜En_OLDER_F[m-1]の（ｍ−１）本の信号の排他的論理和をとることにより、エントリｎの優先順位が偶数順位であるか奇数順位であるかが判定される。
【００３３】
グループ決定部４３は、優先順位判定部４１の出力を基に、バッファエントリ本体４７のエントリのグループ分けを行う。グループ決定部４３は、優先順位判定部４１の出力信号En_F_OLDER_ODDに基づいて、各エントリを偶数順位のグループと奇数順位のグループとにグループ分けする。以下では、優先順位が偶数順位であるエントリをグループＢに割り当て、奇数順位であるエントリをグループＡに割り当てるものとして説明する。なお、グループＡ及びグループＢの割り当ては、説明の便宜上のものであり、対応関係を逆にしても良いことは言うまでもない。以上のようにして、バッファエントリ本体４７のｍ個のエントリを、図７に示すように２つのグループＡ、Ｂに分けることができる。
【００３４】
なお、前述の説明では、バッファエントリ本体４７のｍ個のエントリを２つのグループに分けたが、４つのグループに分けることも可能である。例えば、出力ポートの数が３又は４の場合には、４つのグループ分けを適用すれば良い。ｍ個のエントリを４つのグループに分ける場合には、前述した２つのグループ分けと同様にして、図８（Ａ）に示すように、１段目のグループ分けでグループＡ及びグループＢに分け、さらにグループＡ及びグループＢのそれぞれに対して２段目のグループ分けを行えば良い。このようにすることで、ｍ個のエントリをグループＡＡ、グループＡＢ、グループＢＡ、グループＢＢの４つに分けることができる。なお、出力ポートの数が３である場合には、何れかの２グループを１つの出力ポートに対応させればよい。
【００３５】
図８（Ｂ）、（Ｃ）は、ｍ個のエントリを４つにグループ分けするための回路の構成例を示す図である。ＥＸＯＲ回路１１１は、信号En_OLDER_F[0]〜En_OLDER_F[m-1]が入力され、その演算結果を信号En_gpA/Bとして出力する。論理積演算回路（ＡＮＤ回路）１１２は、信号En_OLDER_F[i]（ｉは添え字であり、ｉ＝０〜ｍ−１、ただしｎを除く）及び信号Ei_gpA/Bが入力される。ＥＸＯＲ回路１１３は、ＡＮＤ回路１１２の出力が入力され、その演算結果を信号En_gpAA/ABとして出力する。また、ＡＮＤ回路１１４は、信号En_OLDER_F[i]、及び信号Ei_gpA/Bの負論理信号が入力される。ＥＸＯＲ回路１１５は、ＡＮＤ回路１１４の出力が入力され、その演算結果を信号En_gpBA/BBとして出力する。
【００３６】
入力信号En_OLDER_F[0]〜En_OLDER_F[m-1]は、エントリ０からエントリ（ｍ−１）までのエントリｎを除く（ｍ−１）個のエントリのそれぞれがエントリｎよりも優先度が高いか否かを示す信号である。また、信号En_gpA/Bは、エントリｎがグループＡ、グループＢのどちらのグループであるかを示す信号である。同様に、信号En_gpAA/ABは、エントリｎがグループＡＡ、グループＡＢのどちらのグループであるかを示す信号であり、信号En_gpBA/BBは、エントリｎがグループＢＡ、グループＢＢのどちらのグループであるかを示す信号である。
【００３７】
同様にして、８、１６、３２・・・と２の冪乗の数のグループ分けについても、３、４、５・・・段構成とすることで対応可能である。また、図９に示すようなグループ分け回路１２１を用い、信号En_OLDER_F[0]〜En_OLDER_F[m-1]のうち、“１”となっている信号の本数をカウント回路１２２で数え、そのカウント値をｎで除したときの剰余ＭＯＤを剰余算出回路１２３により算出する。そして、剰余ＭＯＤの値に応じてグループ分けすることで、ｍ個のエントリを任意のｎグループに分けることも可能である。
【００３８】
ここで、前述したグループ分けの例では、エントリのデータが特定の出力ポートから出力できない場合であっても、区別することなくグループ分けを行っている。しかし、あるエントリが出力できない出力ポートに対応する調停グループにグループ分けされた場合には、そのエントリが最も優先度が高くてもバッファに待機することとなり、バッファリング効率が低下してしまう。
【００３９】
そこで、特定の出力ポートが使用できない場合には、その出力ポートを避けるように図１０に示すような回路を用いてグループ分けすることでバッファリング効率が低下するのを防止することができる。図１０は、エントリｎにバッファされている内容が特定の出力ポートから出力されることを防ぐグループ決定回路の構成例を示す図である。図１０には、出力ポートとして出力ポートＡ及び出力ポートＢの２つを有する場合を一例として示している。
【００４０】
図１０に示すグループ決定回路は、ＡＮＤ回路１３１、論理和演算回路（ＯＲ回路）１３２、及びラッチ１３３を有する。ＡＮＤ回路１３１には、信号En_F_OLDER_ODD及び信号En_ENA_PBが入力される。ＯＲ回路１３２は、ＡＮＤ回路１３１の出力、及び信号En_ENA_PAの負論理信号が入力され、その演算結果をラッチ１３３を介して信号En_GRBとして出力する。入力信号En_F_OLDER_ODDは、エントリｎが前段のグループ分け論理の結果、エントリｎの内容を何れのポートからも出力することが可能な場合には、グループＢにグループ分けされることを指示する信号である。入力信号En_ENA_PAは、エントリｎが出力ポートＡから取り出されることを許可する信号であり、入力信号En_ENA_PBは、エントリｎが出力ポートＢから取り出されることを許可する信号である。入力信号En_ENA_PA、En_ENA_PBは、後述する出力可能ポート指定部４５から出力され、対応する出力ポートから取り出されることを許可する場合に“１”とされる。出力信号En_GRBは、エントリｎの調停グループがグループＢに含まれることを設定する信号である。なお、ラッチ１３３の位置は必ずしもここに限られない。
【００４１】
図１０に示すグループ決定回路は、エントリｎが出力ポートが何ら制限されていない場合には、入力信号En_F_OLDER_ODDを出力信号En_GRBとして出力する。また、出力ポートＡから出力できない場合には、入力信号En_F_OLDER_ODDにかかわらずグループＢに振り分ける出力信号En_GRB（値“１”）を出力する。また、出力ポートＢから出力できない場合には、入力信号En_F_OLDER_ODDにかかわらずグループＡに振り分ける出力信号En_GRB（値“０”）を出力する。
【００４２】
図４に戻り、取出し可否設定部４４は、エントリが取出し可能状態であることを設定する。図１１は、取出し可否設定部４４の回路構成例を示す図である。図１１には、エントリｎに対応する回路を示している。取出し可否設定部４４は、ＡＮＤ回路１４１、ＯＲ回路１４２、及びラッチ１４３を有する。ＡＮＤ回路１４１には、信号En_V_NOT_ISS、信号En_OPR_RDY、信号En_NOT_INTL、及びＯＲ回路１４２の出力が入力され、その演算結果をラッチ１４３を介して信号En_RDYとして出力する。ＯＲ回路１４２には、信号En_ENA_PA及び信号En_ENA_PBが入力される。
【００４３】
入力信号En_V_NOT_ISSは、エントリｎが有効であって、かつバッファエントリ本体４７（リザベーションステーション）から取り出されていない状態であることを示す。入力信号En_OPR_RDYは、エントリｎにバッファされている命令のオペランドがすべて揃っている、又はすべて読み出せる状態にあることを示す。つまり、レジスタ依存関係にある先行命令の実行が終わっており、演算器等がオペランドを利用可能な状態である。
【００４４】
入力信号En_NOT_INTLは、エントリｎの取出しが不可能な状態になっていることの否定を示す信号である。なお、常に“１”となるように構成しても良い。信号En_NOT_INTLは、エントリｎにバッファされているデータ（命令）の発行が抑止される場合に用いられる。例えば、命令のオペランドを命令発行後にレジスタから読み出す構成をとるプロセッサであって、命令のオペランドがレジスタから読み出せない状態になっている場合である。また、例えば、レジスタファイルの構造により、同時に読み出し可能なレジスタの種類が限定され、エントリｎの命令のオペランドが読み出せなくなっている種類のレジスタに該当した場合等である。同時に読み出し可能なレジスタの種類を限定する場合としては、例えば、ハードウエアマルチスレッディングにおいてレジスタファイルから同時に読み出せるアーキテクチャレジスタを何れかのスレッドに限定する場合、レジスタウインドウを持つ命令セットアーキテクチャのプロセッサにおいてレジスタファイルから同時に読み出せるレジスタを、レジスタウインドウ内のレジスタに限定する場合、などがある。その他、命令の発行が抑止される場合としては、レジスタ依存関係のみによらず命令デコーダにより命令間の発行順序の制御を行う場合等がある。
【００４５】
入力信号En_ENA_PAは、後述する出力可能ポート指定部４５から出力される信号であり、エントリｎが出力ポートＡから取り出されることを許可する信号である。また、入力信号En_ENA_PBは、後述する出力可能ポート指定部４５から出力される信号であり、エントリｎが出力ポートＢから取り出されることを許可する信号である。
【００４６】
出力信号En_RDYは、エントリｎが有効なエントリであって、まだバッファエントリ本体４７から取り出されておらず、かつ命令が取出し可能な状態にあって、何れかの出力ポートから取り出しできることを示す信号である。なお、ラッチ１４３の位置は一例であり、これに限定されない。
【００４７】
前述したエントリが取出し可能な状態であることを設定する論理は、本実施形態におけるデータ処理装置を命令発行制御部（リザベーションステーション）に用いる場合の一例である。本実施形態におけるデータ処理装置をリザベーションステーション以外に用いる場合においても、データ処理装置の用途に応じてエントリが取出し可能状態であることを設定する任意の論理回路を構成できる。
【００４８】
出力可能ポート指定部４５は、各エントリについて出力可能な出力ポートを指定するものであり、特定の出力ポートから取り出されることを許可又は禁止する。図１２は、出力可能ポート指定部４５の回路構成例を示す図である。図１２（Ａ）には、出力ポートＡについてのエントリｎに対応する回路を示しており、図１２（Ｂ）には、出力ポートＢについてのエントリｎに対応する回路を示している。
【００４９】
図１２（Ａ）に示すように、出力可能ポート指定部４５は、出力ポートＡについては、ＡＮＤ回路１５１、１５２、及び否定論理和演算回路（ＮＯＲ回路）１５３を有する。ＡＮＤ回路１５１には、信号En_MC_OP及び信号INH_PA_MC_OPが入力される。また、ＡＮＤ回路１５２には、信号En_FLA_OP及び信号INH_PA_FLA_OPが入力される。ＮＯＲ回路１５３には、ＡＮＤ回路１５１、１５２の出力及び信号En_PB_ONLYが入力され、その演算結果を信号En_ENA_PAとして出力する。
【００５０】
また、図１２（Ｂ）に示すように、出力可能ポート指定部４５は、出力ポートＢについては、ＡＮＤ回路１５４、１５５、及びＮＯＲ回路１５６を有する。ＡＮＤ回路１５４には、信号En_MC_OP及び信号INH_PB_MC_OPが入力される。また、ＡＮＤ回路１５５には、信号En_FLA_OP及び信号INH_PB_FLA_OPが入力される。ＮＯＲ回路１５６には、ＡＮＤ回路１５４、１５５の出力及び信号En_PA_ONLYが入力され、その演算結果を信号En_ENA_PBとして出力する。
【００５１】
図１２（Ａ）及び（Ｂ）において、入力信号En_MC_OPは、エントリｎにバッファされている命令が、使用する演算器を複数サイクル占有し続ける命令であることを示す信号である。入力信号INH_PA_MC_OPは、出力ポートＡに接続されている演算器が、この演算器を複数サイクル占有し続ける命令によって既に使用されていることを示し、新たにこの演算器を使用する命令が出力ポートＡから取り出されることを禁止する信号である。信号En_MC_OPと信号INH_PA_MC_OPとを論理積演算して得られる信号は、エントリｎにバッファされている命令が演算器を複数サイクル占有し続ける命令であって、かつ、出力ポートＡに接続されている演算器が既に使用されていることから、エントリｎの命令が出力ポートＡから取り出されることを禁止する信号である。
【００５２】
入力信号En_FL_OPは、エントリｎにバッファされている命令が、最大の出力遅延サイクル数が固定であるパイプライン化された演算器を用いる命令であることを示す信号である。ここで、最大の出力遅延サイクル数が固定であるとは、例えば、演算器の演算レイテンシが４サイクル又は６サイクルである場合に、レイテンシが高々６サイクルであると演算終了以前に予見できるといった意味である。入力信号INH_PA_FLA_OPは、出力ポートＡに接続されている演算器であり、最大の出力遅延サイクル数が固定であるパイプライン化された演算器について、その演算結果出力のための伝送路が他の命令によって使用される見込みであることを示し、新たにこの演算器を使用する命令が出力ポートＡから取り出されることを禁止する信号である。信号En_FLA_OPと信号INH_PA_FLA_OPとを論理積演算して得られる信号は、エントリｎにバッファされている命令が最大の出力遅延サイクル数が固定であるパイプライン化された演算器を用いる命令であり、かつ、その演算結果出力のための伝送路が他の命令によって使用される見込みであることから、エントリｎの命令が出力ポートＡから取り出されることを禁止する信号である。
【００５３】
入力信号En_PB_ONLYは、エントリｎでバッファされている命令が、出力ポートＢにのみ接続されている演算器を使用する命令であることを示し、出力ポートＢ以外から取り出されることを禁止する信号である。
【００５４】
出力信号En_ENA_PAは、エントリｎにバッファされている命令が出力ポートＡから取り出されることを許可する信号である。
なお、図１２（Ｂ）に示す各信号は、前述した図１２（Ｂ）に示す各信号を出力ポートＡと出力ポートＢとを入れ換えたものに相当する。
【００５５】
ある演算器の結果出力のための伝送路が他の命令によって使用される状態が起こる場合としては、演算器が複数種類あって、それぞれのレイテンシが異なる場合があげられる。後続命令が用いる小さいレイテンシの演算器の結果出力の伝送路が、先行命令が用いる大きいレイテンシの演算器の結果出力のために使用されることが予め確定している場合には、その伝送路を用いる演算器が接続された出力ポートへの後続命令の出力を禁止する制御を行う。前述した信号En_MC_OP、En_FLA_OP、En_PA_ONLY、En_PB_ONLYは、命令の種類によって異なる命令実行時の制御を指示する信号であり、命令デコーダから送られる。前段のパイプラインステージから命令がエントリに登録された後に、レイテンシ１サイクルで通過することができるリザベーションステーションを構成するために、これらの信号の直前に図３に示したようなバイパス経路が設けられる場合がある。
【００５６】
前述したエントリを出力可能なポートを指定する論理は、本実施形態におけるデータ処理装置を命令発行制御部（リザベーションステーション）に用いる場合の一例である。本実施形態におけるデータ処理装置をリザベーションステーション以外に用いる場合においても、データ処理装置の用途に応じてエントリを出力可能なポートを指定する任意の論理回路を構成できる。
【００５７】
ポート調停部４６は、グループ決定部４３によるグループ分けの結果に基づいて、グループ別に出力ポートの調停を行う。図１３は、ポート調停部４６の回路構成例を示す図である。図１３には、任意の出力ポートｘについてのエントリｎに対応する回路（エントリｎ用のプライオリティエンコーダ）を示している。ポート調停部４６は、ＡＮＤ回路１６１、１６２−ｉ、１６３を有する。ＡＮＤ回路１６１には、信号En_RDY及び信号En_GRxが入力される。また、ＡＮＤ回路１６２−ｉには、信号Ei_RDY、信号Ei_GRx、信号Ei_PRI_Enが入力される。ＡＮＤ回路１６３には、ＡＮＤ回路１６１の出力が入力されるとともに、ＡＮＤ回路１６２−ｉの出力の負論理信号が入力され、その演算結果を信号En_SEL_Pxとして出力する。
【００５８】
入力信号En_RDYは、エントリｎについて出力可能な状態であることを示す信号である。入力信号Ei_RDYは、エントリｉの各々について出力可能な状態であることを示す信号であり、信号は（ｍ−１）本である。データ処理装置の用途により、エントリ毎に待機状態を設定できる必要がない場合には、この信号が常に“１”であるように構成しても良い。
【００５９】
入力信号En_GRxは、エントリｎが調停グループｘに属しているか否かを示す信号である。入力信号Ei_GRxは、エントリｉの各々について調停グループｘに属しているか否かを示す信号であり、信号は（ｍ−１）本である。
【００６０】
入力信号Ei_PRI_Enは、エントリｉの優先度が、エントリｎの優先度より高いことをそれぞれ示す信号であり、信号は（ｍ−１）本である。（ｍ−１）本の入力信号Ei_PRI_Enのすべての信号が“０”である場合には、エントリｎが最も優先度が高いことを示す。なお、エントリｎに対応する信号En_PRI_Enは、あっても無くても良く、この例では存在しない。
【００６１】
図１３に示す回路は、エントリｎが出力可能な状態にあって、エントリｎが当該調停グループｘに属している場合で、かつ、エントリｎの優先度より優先度の高いエントリが１つもない場合には、エントリｎが出力ポートｘから出力されることを示す信号En_SEL_Pxが出力される。
【００６２】
図１４は、出力ポートの数が２であるときのポート調停部４６の構成例を示す図であり、図１３に示したエントリｎ用のプライオリティエンコーダを用いたポート調停部４６の例を示している。
【００６３】
入力信号E(i)_RDYは、エントリｉが出力可能な状態であることを示す信号であり、信号はｍ本である。また、入力信号E(i)_GRBは、エントリｉが調停グループＢに属するか否かを示す信号であり、信号はｍ本である。この例では、調停グループＢに属さないエントリは調停グループＡに属する。入力信号En_OLDER_F[0:(m-1)]は、エントリｎの優先度が番号０〜（ｍ−１）のｎを除くエントリの優先度よりも高いことを示す信号であり、信号は（ｍ−１）本である。なお、信号En_OLDER_F[n]は、あっても無くても良い。入力信号En_OLDER_F[0:(m-1)]は、図１３で説明したプライオリティエンコーダ内部の信号E(i)_PRI_Enに接続されている。例えば、信号En_OLDER_F[0]は信号E0_PRI_Enと、信号En_OLDER_F[1]は信号E1_PRI_Enとそれぞれ接続されている。
【００６４】
グループＡ用でエントリｎ用のプライオリティエンコーダ１７１は、信号E(i)_RDYと、信号E(i)_GRBの負論理信号と、信号En_OLDER_F[0:(m-1)]とを受け取り、エントリｎを出力ポートＡから出力するか否かの調停を行う。プライオリティエンコーダ１７１から出力される出力信号En_SEL_PAは、調停の結果であり、エントリｎが出力ポートＡから出力されることを示す。
【００６５】
同様に、グループＢ用でエントリｎ用のプライオリティエンコーダ１７２は、信号E(i)_RDYと、信号E(i)_GRBと、信号En_OLDER_F[0:(m-1)]とを受け取り、エントリｎを出力ポートＢから出力するか否かの調停を行う。プライオリティエンコーダ１７２から出力される出力信号En_SEL_PBは、調停の結果であり、エントリｎが出力ポートＢから出力されることを示す。
【００６６】
ここで、優先順位行列を用いたグループ分け方式の単純な実装では、エントリがバッファに登録されるサイクルでは、優先順位行列自体も登録される前であり、次のサイクルにならないとグループ分けに優先順位の情報が反映されない。図１５に示す回路を用いることで、グループ分けに用いられる信号がバッファのエントリへの登録時に、エントリ本体をバイパスされ、バッファを最短のレイテンシで通過できる適切なグループ分けが可能である。
【００６７】
図１５は、バッファを１クロックサイクルのレイテンシで通過できるようにする場合に適切な調停グループの決定回路の構成例を示す図である。図１５に示す調停グループの決定回路は、エントリｎの出力ポートの調停の際の優先度が偶数順位であるか否かを示す信号En_F_OLDER_ODDに加え、さらに当該バッファよりも１サイクル前段のパイプラインステージに待機しているエントリ（ラッチ２６のエントリ）についても考慮してグループ分けを行うものである。
【００６８】
ラッチ２６に待機用のエントリＰ０、Ｐ１、Ｐ２、Ｐ３が存在する場合の例を示している。後段はバッファエントリ本体４７のエントリ０〜エントリ（ｍ−１）である。優先度は、エントリＰ０が最も高く、エントリＰ０、Ｐ１、Ｐ２、Ｐ３の順であり、後段へ移動する際に変化することがない。エントリＰ０、Ｐ１、Ｐ２、Ｐ３は、何れもエントリ０〜エントリ（ｍ−１）の何れよりも優先度が低い。前段であるラッチ２６は必ずしも４エントリで構成されなくともよい。
【００６９】
入力信号En_F_OLDER_ODDは、エントリｎの出力ポート調停の際の優先順位が偶数順位であるか否かを示す信号である。入力信号E0_VALID〜E(m-1)_VALIDは、エントリ０からエントリ(ｍ−１)までのエントリに内容が登録されていることをそれぞれ示す信号であり、信号は合計ｍ本である。入力信号EP0_VALIDは、前段のラッチ２６にあるエントリＰ０に内容が登録されていることを示す信号である。同様に、入力信号EP1_VALID、EP2_VALIDは、前段のラッチ２６にあるエントリＰ２に内容が登録されていることを示す信号である。
【００７０】
ＥＸＯＲ回路１８１から出力される信号EP0_V_OLDER_ODDは、エントリ０〜エントリ（ｍ−１）の中でエントリＰ０よりも優先度の高いエントリの数が奇数であるか否かを示している。つまり、エントリＰ０の優先順位が偶数順位であることを示す。ＥＸＯＲ回路１８２から出力される信号EP1_V_OLDER_ODDは、エントリ０〜エントリ（ｍ−１）並びにエントリＰ０の中でエントリＰ１よりも優先度の高いエントリの数が奇数であるか否かを示している。つまり、エントリＰ１の優先順位が偶数順位であることを示す。ＥＸＯＲ回路１８３から出力される信号EP2_V_OLDER_ODD  は、エントリ０〜エントリ（ｍ−１）並びにエントリＰ０、Ｐ１の中でエントリＰ２よりも優先度の高いエントリの数が奇数であるか否かを示している。つまり、エントリＰ２の優先順位が偶数順位であることを示す。ＥＸＯＲ回路１８４から出力される信号EP3_V_OLDER_ODDは、エントリ０〜エントリ（ｍ−１）並びにエントリＰ０、Ｐ１、Ｐ２の中でエントリＰ３よりも優先度の高いエントリの数が奇数であるか否かを示している。つまり、エントリＰ３の優先順位が偶数順位であることを示す。
【００７１】
セレクタ１８５から出力される出力信号En_V_OLDER_ODDは、エントリｎについての新たに内容が登録される場合の優先度が考慮された、出力ポートの調停の際の優先度が偶数順位であること示す信号である。ここで、信号En_V_OLDER_ODDは、エントリ登録信号により、信号En_F_OLDER_ODD、EP0_V_OLDER_ODD、EP1_V_OLDER_ODD、EP2_V_OLDER_ODD、及びEP3_V_OLDER_ODDの内から何れか一つの値が選択された信号である。例えば、エントリＰ２の内容がエントリｎに登録される場合には、信号E2_V_OLDER_ODDの値が信号En_V_OLDER_ODDの値となる。なお、エントリを新たに登録しない場合には、信号En_F_OLDER_ODDの値が、信号En_V_OLDER_ODDの値となる。
【００７２】
図１５に示す回路によれば、エントリの内容がバッファに留まる時間が１クロックサイクルであっても適切にグループ分けを行うことができ、調停グループの間で、グループに含まれるエントリ数の偏りを防ぐことができる。
【００７３】
本実施形態によれば、以下のような効果が得られる。
バッファのエントリに登録されてからも出力ポートが固定されることがなく、バッファの利用効率が向上しスループットが改善される。例えば、出力先が複数サイクル占有されるブロッキングが頻繁に起こるような用途に用いられるバッファで、かつ、出力先を柔軟に選択できる場合において効果的である。また、本実施形態では、ポート調停部は、それぞれの出力ポートの調停を独立して行うので、他の出力ポートの調停結果を使用しないため、調停に係る遅延が削減される。
【００７４】
また、毎サイクルでグループ分けを行うことにより、グループに含まれるエントリ数が均等に保たれ、バッファリング効率が向上する。また、ある出力先がブロッキングされている場合でも、別のグループとなる可能性があり、別の出力先から取り出されることが期待できる。また、優先順位に基づいてグループ分けを行うことにより、グループ間で、各々のエントリの持つ優先度が偏ることを防ぐことができ、バッファ全体として近似的に優先度の高いエントリから取り出されることが期待できる。
【００７５】
なお、本実施形態では、優先順位行列を用いているが、エントリ間の優先順位関係の行列と同等な情報を保持する形態のバッファであれば適用することができる。例えば、エントリ間の優先順位関係の情報が圧縮された形態でラッチ、メモリ等に格納して保持されるバッファでも、優先順位の情報を用いてグループ分けすることにより同様な機能が実現できる。
【００７６】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。
図１６は、第２の実施形態によるデータ処理装置を用いた命令発行制御部の構成例を示す図である。図１６において、図４に示したブロックと同一の機能を有するブロックには同一の符号を付し、重複する説明は省略する。
【００７７】
第２の実施形態によるデータ処理装置は、グループ分け回路５１の出力に基づいて、グループ決定部４３がエントリの調停グループのグループ分けを行うものである。グループ分け回路５１は、乱数発生回路等を有する。乱数発生回路に発生される乱数の一様性が十分であれば、偏りのないグループ分けが期待できる。
【００７８】
乱数発生回路としては、例えばＬＦＳＲ(Linear feedback shift register）を用いた擬似乱数生成器が考えられる。または、乱数発生回路のシード値として、エントリの優先度やエントリ番号（バブルアップ方式の場合）、適当なカウンタ値等のサイクル毎に変化し得る値と、エントリの保持するデータ等のエントリ固有の値とを組み合わせて用いることで偏りの少ないグルーピングが期待できる。例えば、サイクル毎に変化する値とエントリ固有の値とのハッシュ値を用いれば良い。
【００７９】
第２の実施形態によるデータ処理装置は、バッファが優先順位行列を用いずに、バブルアップ方式の形態をとる場合にも適用することができる。バブルアップ方式の場合には、エントリ間の優先順位関係は固定であるので、図１７〜図１９に示すように、ポート調停部４６の構成を簡略化することができる。
【００８０】
図１７は、バブルアップ方式のバッファを用いた場合のポート調停部４６の回路構成例を示す図である。図１７には、任意の出力ポートｘについてのエントリｎに対応する回路（エントリｎ用のプライオリティエンコーダ）を示している。ポート調停部４６は、ＡＮＤ回路１９１−ｊ（ｊ＝０〜ｎの自然数（正の整数））、１９２を有する。ＡＮＤ回路１９１−ｊには、信号Ej_RDY及び信号Ej_GRxが入力される。ＡＮＤ回路１９２には、ＡＮＤ回路１９１−ｎの出力が入力されるとともに、ＡＮＤ回路１９１−ｊ（ｊ≠ｎ）の出力の負論理信号が入力され、その演算結果を信号En_SEL_Pxとして出力する。なお、各信号は、図１３に示したものと同様であるので、その説明は省略する。
【００８１】
図１８は、バブルアップ方式のバッファを用いた場合であって、出力ポートの数が２であるときのポート調停部４６の構成例を示す図であり、図１７に示したエントリｎ用のプライオリティエンコーダを用いたポート調停部４６の例を示している。
【００８２】
入力信号E(x)_RDYは、エントリ０〜エントリ（ｍ−１）が出力可能な状態であることを示す信号であり、信号はｍ本である。また、入力信号E(x)_GRBは、エントリ０〜エントリ（ｍ−１）が調停グループＢに属するか否かを示す信号であり、信号はｍ本である。この例では、調停グループＢに属さないエントリは調停グループＡに属する。グループＡ用でエントリｎ用のプライオリティエンコーダ２０１は、信号E(x)_RDYと、信号E(x)_GRBの負論理信号とを受け取り、エントリｎを出力ポートＡから出力するか否かの調停を行う。プライオリティエンコーダ２０１から出力される出力信号En_SEL_PAは、調停の結果であり、エントリｎが出力ポートＡから出力されることを示す。同様に、グループＢ用でエントリｎ用のプライオリティエンコーダ２０２は、信号E(x)_RDYと、信号E(x)_GRBとを受け取り、エントリｎを出力ポートＢから出力するか否かの調停を行う。プライオリティエンコーダ２０２から出力される出力信号En_SEL_PBは、調停の結果であり、エントリｎが出力ポートＢから出力されることを示す。各信号及びエントリのデータの流れの関係を図１９に示す。
【００８３】
なお、前述した各実施形態では、データ処理装置を命令発行制御部に適用した場合を一例として示したが、これに限定されない。パケットの順序の入れ替わりを許容するネットワークやＱｏＳ（Quality of Service）制御を行う場合に、ネットワークスイッチ等に前述した各実施形態におけるデータ処理装置を用いることも可能である。
【００８４】
また、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００８５】
４１  優先順位判定部
４２  優先順位行列
４３  グループ決定部
４４  取出し可否設定部
４５  出力可能ポート指定部
４６  ポート調停部
４７  バッファエントリ本体
【図１】
2013206095.tif 000003
【図２】
2013206095.tif 000004
【図３】
2013206095.tif 000005
【図４】
2013206095.tif 000006
【図５】
2013206095.tif 000007
【図６】
2013206095.tif 000008
【図７】
2013206095.tif 000009
【図８】
2013206095.tif 000010
【図９】
2013206095.tif 000011
【図１０】
2013206095.tif 000012
【図１１】
2013206095.tif 000013
【図１２】
2013206095.tif 000014
【図１３】
2013206095.tif 000015
【図１４】
2013206095.tif 000016
【図１５】
2013206095.tif 000017
【図１６】
2013206095.tif 000018
【図１７】
2013206095.tif 000019
【図１８】
2013206095.tif 000020
【図１９】
2013206095.tif 000021
【図２０】
2013206095.tif 000022