(57)【要約】【課題】演算器による演算処理を誤りなく効率化することを課題とする。【解決手段】プライオリティ回路は、リザベーションステーションと、処理可能な演算が異なる複数の演算器とに接続され、命令デコーダおよびリザベーションステーションによる入力によって、特定の演算器でのみ実行可能な命令であることを示す実行可能フラグが立っていると判定された場合に、当該特定の演算器とは異なる演算器であって、キューに空きが存在する演算器に命令をディスパッチする。【選択図】図１
2011008732.tif 000002
【特許請求の範囲】
【請求項１】
リザベーションステーションと、処理可能な演算が異なる複数の演算器とに接続されたプライオリティ回路であって、
特定の演算器でのみ実行可能な命令であることを示す実行可能フラグに基づいて、当該特定の演算器とは異なる演算器であって、キューに空きが存在する演算器に命令をディスパッチするディスパッチ手段を有することを特徴とするプライオリティ回路。
【請求項２】
前記ディスパッチ手段は、さらに、特定の演算器へのディスパッチが不可であることを示すディスパッチ抑止フラグに基づいて、当該特定の演算器とは異なる演算器であって、キューに空きが存在する演算器に命令をディスパッチすることを特徴とする請求項１に記載のプライオリティ回路。
【請求項３】
リザベーションステーションと、
処理可能な演算が異なる複数の演算器と、
特定の演算器でのみ実行可能な命令であることを示す実行可能フラグを前記リザベーションステーションに入力する命令デコーダと、
前記リザベーションステーションによる前記実行可能フラグの入力に基づいて、前記特定の演算器とは異なる演算器であって、キューに空きが存在する演算器に命令をディスパッチするプライオリティ回路と、
を有することを特徴とする演算処理装置。
【請求項４】
前記プライオリティ回路は、さらに、特定の演算器へのディスパッチが不可であることを示すディスパッチ抑止フラグに基づいて、当該特定の演算器とは異なる演算器であって、キューに空きがある演算器にディスパッチすることを特徴とする請求項３に記載の演算処理装置。
【請求項５】
リザベーションステーションと、処理可能な演算が異なる複数の演算器とを有する演算処理装置の演算処理方法であって、
前記演算処理装置が有する命令デコーダが、特定の演算器でのみ実行可能な命令であることを示す実行可能フラグを前記リザベーションステーションに入力するステップと、
前記演算処理装置が有するプライオリティ回路が、前記リザベーションステーションによる前記実行可能フラグの入力に基づいて、前記特定の演算器とは異なる演算器であって、キューに空きが存在する演算器に命令をディスパッチするステップと、
を含んだことを特徴とする演算処理方法。
【請求項６】
前記プライオリティ回路は、さらに、特定の演算器へのディスパッチが不可であることを示すディスパッチ抑止フラグに基づいて、当該特定の演算器とは異なる演算器であって、キューに空きがある演算器にディスパッチすることを特徴とする請求項５に記載の演算処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プライオリティ回路、演算処理装置及び演算処理方法に関する。
【背景技術】
【０００２】
従来、プロセッサ（ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）等を含む）は、情報処理装置や携帯電話機などに含まれ、各種演算処理を実行する演算処理装置である。そして、最近では、プロセッサの小型化や処理能力の向上などによって、当該プロセッサの適用シーンも多様なものとなっている。
【０００３】
ここで、図１０および図１１を用いて、プロセッサの構成とプロセッサにおけるパイプラインとを説明する。図１０は、プロセッサの構成例を示す図であり、図１１は、プロセッサにおけるパイプラインの例を示す図である。
【０００４】
例えば、図１０に示すように、プロセッサは、１次命令キャッシュから命令デコーダに命令を送り、命令デコーダによってデコード（Ｄ）サイクル（図１１参照）でデコードされる。この命令デコーダによるデコードは、実行される命令が格納される実行キューであるＲＳ（Reservation  Station）に対するデコードであり、インオーダー（プログラム順）で実行される。
【０００５】
例えば、ＲＳには、ロード／ストア命令用のＲＳＡ（Reservation  Station  for  Address）、固定小数点演算命令（整数演算命令）用のＲＳＥ（Reservation  Station  for  Execution）、浮動小数点演算命令用のＲＳＦ（Reservation  Station  for  Floating  point）および分岐命令用のＲＳＢＲ（Reservation  Station  for  BRanch）等がある。
【０００６】
そして、プロセッサは、命令デコーダによってデコードされた全ての命令の管理を行うＣＳＥ（Commit  Stack  Entry）に登録するとともに、プログラム順に関わらず実行可能な命令から実行を行うアウトオブオーダー実行制御を行う各ＲＳに登録する。続いて、プロセッサは、それぞれのＲＳのプライオリティ（Ｐ）サイクル（図１１参照）で命令実行が可能となった命令をアウトオブオーダーで選択する。
【０００７】
その後、プロセッサは、バッファ（Ｂ）サイクル（図１１参照）でレジスタを読み出して、演算実行（Ｘ）サイクル（図１１参照）で演算処理を実行する。この演算処理による実行結果は、レジスタ更新（Ｕ）サイクル（図１１参照）で更新バッファに格納され、その後、命令完了の処理であるコミット処理待ちとなる。
【０００８】
そして、プロセッサは、ＣＳＥでの演算処理の実行完了、１次データキャッシュからのデータ転送処理の完了および分岐制御機構からの分岐判定処理の完了などの報告を受け、インオーダーによってコミット処理を行う。続いて、プロセッサは、レジスタ書き込み（Ｗ）サイクル（図１１参照）で更新バッファからレジスタへの書き込み、ＰＣ（Program  Counter）および次のＰＣであるＮＰＣ（Next  Program  Counter）の更新を行う。
【０００９】
ところで、プロセッサによる命令の実行に要するキャッシュ、パイプラインおよび演算器などにおける資源の使用効率を向上して、当該プロセッサの性能を引き出す手法として、図１２に示すように、スーパースカラ（Superscalar）方式と呼ばれる技術がある。図１２は、スーパースカラ方式によるアウトオブオーダー処理を説明する図である。
【００１０】
例えば、図１２に示すように、スーパースカラ方式では、演算器を複数有している場合に、当該演算器それぞれに対するＲＳを有し、当該ＲＳそれぞれへの命令の割り振りは、デコーダによって行なわれる。そして、演算器は、各ＲＳによって最も古いエントリ、且つ実行準備完了（oldest  ready）な命令プライオリティに従ってディスパッチ（発行）された演算処理を実行する。
【００１１】
図１２では、実行する最大処理数として同時実行可能な４つの演算器を有し、アウトオブオーダーで実行する例を示しており、複数の命令のフェッチ、デコードおよびコミットは、インオーダーで行なわれる。すなわち、図１２では、最も古くエントリされた且つ実行準備中（oldest  ready）であるものから優先して、複数の演算器によってアウトオブオーダーで実行されたとしても、インオーダーでコミット処理が行われることとなる。
【００１２】
次に、図１３を用いて、非対称な固定小数点演算器を複数有するＲＳについて説明する。図１３は、非対称な固定小数点演算器を複数有するＲＳの例について説明する図である。なお、非対称とは、演算器Ａと演算器Ｂとが存在する場合に、これらの演算器Ａと演算器Ｂとで実行可能な演算が異なる場合のことを言う。非対称の例を挙げると、演算器Ａでは加算と減算との演算のみが可能であり、演算器Ｂでは乗算と除算との演算のみが可能であるような場合である。
【００１３】
例えば、図１３に示すように、非対称な固定小数点演算器（EX：EXecution．unit）ＥＸＡおよびＥＸＢを有する場合には、当該ＥＸＡでのみ実行可能な命令の存在がデコーダで判別され、ＥＸＡおよびＥＸＢそれぞれの演算器ごとに該当するＲＳＥ（ＲＳＥＡ或いはＲＳＥＢ）に登録される。そして、ＲＳＥごとに命令のプライオリティに従ってＥＸＡ或いはＥＸＢにディスパッチされる。
【００１４】
次に、図１４を用いて、演算器へのディスパッチを説明する。図１４は、演算器へのディスパッチの例を説明する図である。なお、図１４では、最大で４つの命令を同時にデコード可能である場合を説明する。また、図１４におけるEXA＿ONLYは、ＥＸＡでのみ実行可能な命令を示している。
【００１５】
例えば、図１４に示すように、最大で４つの命令を同時にデコード可能である場合には、デコードされた命令がＲＳＥＡ或いはＲＳＥＢに割り振られて、当該ＲＳＥＡ或いはＲＳＥＢそれぞれのキューである「０〜３」に登録される。このとき、上述したように、ＥＸＡでのみ実行可能である命令は、ＲＳＥＡに登録されることとなる。
【００１６】
そして、それぞれのキューに登録された命令は、毎サイクルで古い命令が上の番号（例えば、「４〜９」など）に移動するバブルアップをしつつ、プライオリティ回路でＲＳＥＡおよびＲＳＥＢそれぞれにおけるoldest  readyな命令が選択される。続いて、選択された命令は、ＥＸＡおよびＥＸＢそれぞれの演算器に対するディスパッチ抑止フラグである「＋INH＿EXA（B）＿P＿TGR」が立っていない場合に、当該演算器のプライオリティ選択信号のor信号である「EXA（B）＿VALID」が有効になりディスパッチされる。
【００１７】
図１４に示した構成では、バブルアップ後のプライオリティ回路側で各種フラグや条件などの情報が送受され、演算に要する実データやアドレスなどの資源は、当該プライオリティ回路の右側に図示したタグ部分での送受となる。要するに、ディスパッチ抑止フラグが立っていない場合（ディスパッチ抑止フラグが「−INH＿EXA（B）＿P＿TGR」である場合）には、演算器ＥＸＡ或いはＥＸＢにおいて実データの演算処理が実行されることとなる。
【００１８】
次に、図１５を用いて、ＲＳＥＡのプライオリティ回路の機能ブロックを説明する。図１５は、ＲＳＥＡのプライオリティ回路の機能ブロックを説明する図である。
【００１９】
例えば、図１５に示すように、プライオリティ回路は、各エントリとしての９つの命令「＋P＿RSEA＿０」〜「＋P＿RSEA＿９」それぞれのＲＥＡＤＹ条件を入力条件として、ＥＸＡにディスパッチするエントリを選択する信号「＋P＿EXA＿SEL［０：９］」の１ｂｉｔだけ「１」とする。
【００２０】
各エントリのＲＥＡＤＹ条件としては、例えば、「条件１：エントリが有効且つディスパッチ中ではない」、「条件２：ソース１レジスタが依存関係無し若しくはバイパス可能」および「条件３：ソース２レジスタが依存関係無し若しくはバイパス可能」となる。
【００２１】
次に、図１６を用いて、ＲＳＥＡのプライオリティ回路によるフローを説明する。図１６は、ＲＳＥＡのプライオリティ回路によるフローを説明する図である。
【００２２】
例えば、図１６に示すように、プライオリティ回路は、ＲＥＡＤＹ条件から「P＿RSEA＿０」〜「P＿RSEA＿９」のＲＥＡＤＹ条件を決定する（ステップＳ１）。そして、プライオリティ回路は、「P＿RSEA＿９」のＲＥＡＤＹ条件として条件１〜条件３を満たすか否かを判定する（ステップＳ２）。
【００２３】
続いて、プライオリティ回路は、上記３つの条件を全て満たす場合に（ステップＳ２肯定）、演算器ＥＸＡにディスパッチする命令としてキュー「９」を選択「＋P＿EXA＿SEL［９］＝１」する（ステップＳ３）。ここでの３つの条件の入力におけるプライオリティ回路の詳細は、例えば、図１７に示すように、条件１〜条件３を満たしていれば、「０〜９」のうち古いキューすなわち「９」から判定していくこととなる。なお、図１７は、ＲＳＥＡのプライオリティ回路の詳細を示す図である。
【００２４】
また、プライオリティ回路は、上記３つの条件を満たさない場合に（ステップＳ２否定）、キュー「９」を非選択「＋P＿EXA＿SEL［９］＝０」とする（ステップＳ４）。そして、プライオリティ回路は、「P＿RSEA＿８」のＲＥＡＤＹ条件として条件１〜条件３を満たすか否かを判定する（ステップＳ５）。続いて、プライオリティ回路は、上記３つの条件を全て満たす場合に（ステップＳ５肯定）、演算器ＥＸＡにディスパッチする命令としてキュー「８」を選択「＋P＿EXA＿SEL［８］＝１」する（ステップＳ６）。
【００２５】
また、プライオリティ回路は、上記３つの条件を満たさない場合に（ステップＳ５否定）、キュー「８」を非選択「＋P＿EXA＿SEL［８］＝０」とする（ステップＳ７）。そして、プライオリティ回路は、「P＿RSEA＿７」のＲＥＡＤＹ条件として条件１〜条件３を満たすか否かを判定する（ステップＳ８）。
【００２６】
続いて、プライオリティ回路は、上記３つの条件を全て満たす場合に（ステップＳ８肯定）、演算器ＥＸＡにディスパッチする命令としてキュー「７」を選択「＋P＿EXA＿SEL［７］＝１」する（ステップＳ９）。なお、プライオリティ回路は、上記３つの条件を満たさない場合に（ステップＳ８否定）、キュー「０〜６」についても同様に上記処理を実施する。
【００２７】
上述のフローにおけるＲＳＥＡのプライオリティ回路では、例えば、図１８に示すように、「＋P＿RSEA＿９＿READY」であれば「９」が選択され、一方、「９」が選択されていない「−P＿RSEA＿９＿READY」状態において、「＋P＿RSEA＿８＿READY」であれば「８」が選択される。
【００２８】
また、「−P＿RSEA＿９＿READY」、「−P＿RSEA＿８＿READY」および「＋P＿RSEA＿７＿READY」である場合には、「７」が選択される。なお、図１８は、ＲＳＥＡのプライオリティ回路の詳細を示す図である。また、ＲＳＥＢについてもＲＳＥＡと同様なプライオリティ回路によってディスパッチされる。
【００２９】
但し、上記のように、固定小数点演算器ごとにＲＳＥを有する場合には、回路での実装面積が大きくなる。また、ＨＰＣ（High  Performance  Computing）向けなどの固定小数点演算より負荷が高くなる浮動小数点演算のプログラムを実行することを目的とするプロセッサでは、ＲＳＥのエントリが全て埋まるようなことが少ないため、より小さな実装で効率的にＲＳＥ資源を利用することが好ましい。
【００３０】
そこで、近年では、図１９に示すように、固定小数点演算器ごとにＲＳＥを有するのではなく、実装面積をより小さくするためにＲＳＥを共通化して、１つのＲＳＥに命令を登録させる技術がある。なお、図１９は、ＲＳＥを共通化する例を説明する図である。
【先行技術文献】
【特許文献】
【００３１】
【特許文献１】特開２０００−１０５６９９号公報
【発明の概要】
【発明が解決しようとする課題】
【００３２】
しかしながら、上述したＲＳＥを共通化する技術では、所定の演算器でのみ実行可能な命令にかかる演算に誤りが発生するという課題がある。具体的には、上述したＲＳＥを共通化する技術では、演算器ごとに異なる実行可能な命令の割り振りについて考慮されていないため、演算器で実行できない命令がディスパッチされることにより、所定の演算器でのみ実行可能な命令にかかる演算に誤りが発生する。
【００３３】
そこで、本願に開示する技術は、上記に鑑みてなされたものであって、演算器による演算処理を誤りなく効率化することが可能であるプライオリティ回路、演算処理装置及び演算処理方法を提供することを目的とする。
【課題を解決するための手段】
【００３４】
上述した課題を解決し、目的を達成するため、本願に開示するプライオリティ回路は、リザベーションステーションと、処理可能な演算が異なる複数の演算器とに接続されたプライオリティ回路であって、特定の演算器でのみ実行可能な命令であることを示す実行可能フラグに基づいて、当該特定の演算器とは異なる演算器であって、キューに空きが存在する演算器に命令をディスパッチするディスパッチ手段を有する。
【発明の効果】
【００３５】
本願に開示するプライオリティ回路、演算処理装置及び演算処理方法の一つの様態によれば、演算器による演算処理を誤りなく効率化するという効果を奏する。
【図面の簡単な説明】
【００３６】
【図１】図１は、実施例１に係るＲＳＥへの登録とディスパッチとの例を説明する図である。
【図２−１】図２−１は、ＲＳＥＢのキューが空である場合の演算器へのディスパッチの例を説明する図である。
【図２−２】図２−２は、ディスパッチ抑止フラグが立っている場合の演算器へのディスパッチの例を説明する図である。
【図２−３】図２−３は、命令１と命令２とに依存関係がある場合の演算器へのディスパッチの例を説明する図である。
【図２−４】図２−４は、命令１、命令２および命令３に依存関係がある場合の演算器へのディスパッチの例を説明する図である。
【図２−５】図２−５は、命令１および命令２がＥＸＡ＿ＯＮＬＹである場合の演算器へのディスパッチの例を説明する図である。
【図３】図３は、実施例１に係るＲＳＥのプライオリティ回路の機能ブロックを説明する図である。
【図４】図４は、プライオリティ回路によるＥＸＡ＿ＳＥＬに該当するフローを説明する図である。
【図５】図５は、プライオリティ回路によるＥＸＢ＿ＳＥＬ［９］に該当するフローを説明する図である。
【図６】図６は、プライオリティ回路によるＥＸＢ＿ＳＥＬ［８］に該当するフローを説明する図である。
【図７】図７は、ＲＳＥのプライオリティ回路の詳細を示す図である。
【図８】図８は、ＲＳＥのプライオリティ回路のＥＸＡ選択論理部の例を示す図である。
【図９】図９は、ＲＳＥのプライオリティ回路のＥＸＢ選択論理部の例を示す図である。
【図１０】図１０は、プロセッサの構成例を示す図である。
【図１１】図１１は、プロセッサにおけるパイプラインの例を示す図である。
【図１２】図１２は、スーパースカラ方式によるアウトオブオーダー処理を説明する図である。
【図１３】図１３は、非対称な固定小数点演算器を複数有するＲＳの例について説明する図である。
【図１４】図１４は、演算器へのディスパッチの例を説明する図である。
【図１５】図１５は、ＲＳＥＡのプライオリティ回路の機能ブロックを説明する図である。
【図１６】図１６は、ＲＳＥＡのプライオリティ回路によるフローを説明する図である。
【図１７】図１７は、ＲＳＥＡのプライオリティ回路の詳細を示す図である。
【図１８】図１８は、ＲＳＥＡのプライオリティ回路の詳細を示す図である。
【図１９】図１９は、ＲＳＥを共通化する例を説明する図である。
【発明を実施するための形態】
【００３７】
以下に添付図面を参照して、本願に開示するプライオリティ回路、演算処理装置及び演算処理方法の実施例を説明する。なお、以下の実施例により本発明が限定されるものではない。
【実施例１】
【００３８】
最初に、図１を用いて、実施例１に係るＲＳＥへの登録とディスパッチとについて説明する。図１は、実施例１に係るＲＳＥへの登録とディスパッチとの例を説明する図である。なお、以下では、最大で４つの命令を同時にインオーダーでデコード可能な場合を説明する。
【００３９】
例えば、図１に示すように、命令デコーダ１００は、０〜４つの命令を同時にインオーダーでデコードする場合に、ＥＸＡでのみ実行可能な命令を示すフラグ「EXA＿ONLY」をＲＳＥのエントリタグとして登録する。そして、共通化されたＲＳＥ１１０は、バブルアップをするとともに、登録されたフラグ「EXA＿ONLY」情報をプライオリティ回路１２０に入力する。なお、ＲＳＥ１１０は、ＥＸＡ１３０とＥＸＢ１４０とで実行される演算にかかる該当する実データ「０〜９」をＥＸＡ１３０とＥＸＢ１４０とに入力する。
【００４０】
一方、プライオリティ回路１２０では、フラグ「EXA＿ONLY」情報を判別して、ディスパッチのプライオリティ論理において当該フラグ「EXA＿ONLY」が立っているエントリについて、ＥＸＢ１４０にディスパッチしないようにする。
【００４１】
また、プライオリティ回路１２０は、ＥＸＡ１３０を利用する命令が実行中のために当該ＥＸＡ１３０へのディスパッチを不可とすることを示すディスパッチ抑止フラグ「＋INH＿EXA＿P＿TGR」が立っている場合に、「EXA＿ONLY」ではないことを条件にして、oldestな命令をＥＸＢ１４０にディスパッチする。そして、ＥＸＡ１３０およびＥＸＢ１４０は、このようにして振り分けられた命令にかかる演算処理を実行する。
【００４２】
ここで、図２−１〜図２−５を用いて、ＲＳＥの空き、ディスパッチ抑止フラグ、各命令間での依存関係およびフラグＥＸＡ＿ＯＮＬＹそれぞれの条件における演算器へのディスパッチを説明する。
【００４３】
まず、図２−１を用いて、ＲＳＥＢのキューが空である場合の演算器へのディスパッチについて説明する。図２−１は、ＲＳＥＢのキューが空である場合の演算器へのディスパッチの例を説明する図である。
【００４４】
例えば、図２−１に示すように、ＲＳＥＡのキュー９〜７に命令１〜命令３が振り分けられており、且つＲＳＥＢのキュー９〜７が空である状態において、従来技術のようにＲＳＥを二つに分けている場合には、ＥＸＢが空いているにもかかわらず命令２を当該ＥＸＢにディスパッチすることができない。そこで、ＲＳＥを共通化した本願では、命令２にフラグＥＸＡ＿ＯＮＬＹが立っていない場合に、命令２をＥＸＢにディスパッチする。
【００４５】
次に、図２−２を用いて、ディスパッチ抑止フラグが立っている場合の演算器へのディスパッチについて説明する。図２−２は、ディスパッチ抑止フラグが立っている場合の演算器へのディスパッチの例を説明する図である。
【００４６】
例えば、図２−２に示すように、ディスパッチ抑止フラグ「INH＿EXA＿P＿TGR＝１」において、ＲＳＥＡのキュー９に命令１が振り分けられており、且つＲＳＥＢのキュー９〜７が空である状態において、従来技術のようにＲＳＥを二つに分けている場合には、命令１をＲＳＥＡから発行することができない。そこで、ＲＳＥを共通化した本願では、命令１にフラグＥＸＡ＿ＯＮＬＹが立っていない場合に、命令１をＥＸＢにディスパッチする。
【００４７】
次に、図２−３を用いて、命令１と命令２とに依存関係がある場合の演算器へのディスパッチについて説明する。図２−３は、命令１と命令２とに依存関係がある場合の演算器へのディスパッチの例を説明する図である。
【００４８】
例えば、図２−３に示すように、命令１の演算結果が命令２と依存関係があり、ＲＳＥＡのキュー９〜７に命令１、３および４が振り分けられており、且つＲＳＥＢのキュー９に命令２が振り分けられている状態において、従来技術のようにＲＳＥを二つに分けている場合には、命令３をＲＳＥＢから発行することができない。そこで、ＲＳＥを共通化した本願では、命令３および命令４にフラグＥＸＡ＿ＯＮＬＹが立っていない場合に、命令２をＥＸＡにディスパッチするとともに、命令３および命令４をＥＸＢにディスパッチする。
【００４９】
次に、図２−４を用いて、命令１、命令２および命令３に依存関係がある場合の演算器へのディスパッチについて説明する。図２−４は、命令１、命令２および命令３に依存関係がある場合の演算器へのディスパッチの例を説明する図である。
【００５０】
例えば、図２−４に示すように、命令１の演算結果が命令２および命令３の両方に依存関係があり、ＲＳＥＡのキュー９に命令１が振り分けられており、且つＲＳＥＢのキュー９〜８に命令２および命令３が割り振られている状態において、従来技術のようにＲＳＥを二つに分けている場合には、命令１の次のサイクルで命令２を、当該命令２の次のサイクルで命令３をディスパッチすることになる。そこで、ＲＳＥを共通化した本願では、命令２および命令３にフラグＥＸＡ＿ＯＮＬＹが立っていない場合に、命令１がディスパッチされた次のサイクルで命令２をＥＸＡに、命令３をＥＸＢに同時にディスパッチする。
【００５１】
次に、図２−５を用いて、命令１および命令２がＥＸＡ＿ＯＮＬＹである場合の演算器へのディスパッチについて説明する。図２−５は、命令１および命令２がＥＸＡ＿ＯＮＬＹである場合の演算器へのディスパッチの例を説明する図である。
【００５２】
例えば、図２−５に示すように、命令１および命令２がＥＸＡ＿ＯＮＬＹであり、ＲＳＥＡのキュー９〜７それぞれに命令１〜３が割り振られており、且つＲＳＥＢのキューが空である状態において、従来技術のようにＲＳＥを二つに分けている場合には、ＥＸＡ＿ＯＮＬＹである命令１および命令２が詰まっていることにより、後段でのＥＸＡ＿ＯＮＬＹではない命令３がＥＸＢにディスパッチされることはない。そこで、ＲＳＥを共通化した本願では、命令３にフラグＥＸＡ＿ＯＮＬＹが立っていない場合に、当該命令３をＥＸＢにディスパッチする。
【００５３】
要するに、実施例１に係るプライオリティ回路は、ＲＳＥを共通化していることによって、演算器にディスパッチする命令それぞれの依存関係、フラグＥＸＡ＿ＯＮＬＹまたはディスパッチ抑止フラグに基づいて、演算器にディスパッチすることとなる。換言すると、プライオリティ回路は、各命令の依存関係や各種フラグなどに基づいて演算器にディスパッチするので、演算処理での誤りがなく、演算処理の効率化をはかることができる。
【００５４】
次に、図３を用いて、ＲＳＥのプライオリティ回路の機能ブロックを説明する。図３は、実施例１に係るＲＳＥのプライオリティ回路の機能ブロックを説明する図である。
【００５５】
例えば、図３に示すように、プライオリティ回路は、各エントリとしての９つの命令「＋P＿RSE＿０」〜「＋P＿RSE＿９」それぞれのＲＥＡＤＹ条件と、ＥＸＡ＿ＯＮＬＹであるか否かのフラグ「＋P＿RSE＿０＿EXA＿ONLY」〜「＋P＿RSE＿９＿EXA＿ONLY」と、ディスパッチ抑止フラグ「＋INH＿EXA＿P＿TGR」とを入力として、ＥＸＡ或いはＥＸＢにディスパッチするエントリを選択する信号「＋P＿EXA＿SEL［０：９］」或いは「＋P＿EXB＿SEL［０：９］」の１ｂｉｔを「１」とする。
【００５６】
要するに、図３におけるプライオリティ回路は、従来技術に係るプライオリティの条件に、ＥＸＡでのみ実行可能な命令であることを示すフラグと、複数サイクルにわたってＥＸＡを使用する命令が実行中であるために当該ＥＸＡにディスパッチすることができないディスパッチ抑止フラグとの条件を加えたものである。また、プライオリティ回路による出力としては、ＥＸＡ或いはＥＸＢにディスパッチするエントリを選択する信号となる。なお、各エントリのＲＥＡＤＹ条件は、従来技術と同様であるためその説明を省略する。
【００５７】
次に、図４を用いて、プライオリティ回路によるＥＸＡ＿ＳＥＬに該当するフローを説明する。図４は、プライオリティ回路によるＥＸＡ＿ＳＥＬに該当するフローを説明する図である。
【００５８】
例えば、図４に示すように、プライオリティ回路は、ＲＳＥのＲＥＡＤＹ条件から「P＿EXA＿０」〜「P＿EXA＿９」のＲＥＡＤＹ条件を決定する（ステップＳ１０１）。そして、プライオリティ回路は、「P＿EXA＿９」のＲＥＡＤＹ条件として条件１〜条件３を満たすか否かを判定する（ステップＳ１０２）。
【００５９】
続いて、プライオリティ回路は、上記３つの条件を全て満たす場合に（ステップＳ１０２肯定）、演算器ＥＸＡにディスパッチする命令としてキュー「９」を選択「＋P＿EXA＿SEL［９］＝１」する（ステップＳ１０３）。
【００６０】
また、プライオリティ回路は、上記３つの条件を満たさない場合に（ステップＳ１０２否定）、キュー「９」を非選択「＋P＿EXA＿SEL［９］＝０」とする（ステップＳ１０４）。そして、プライオリティ回路は、「P＿EXA＿８」のＲＥＡＤＹ条件として条件１〜条件３を満たすか否かを判定する（ステップＳ１０５）。続いて、プライオリティ回路は、上記３つの条件を全て満たす場合に（ステップＳ１０５肯定）、演算器ＥＸＡにディスパッチする命令としてキュー「８」を選択「＋P＿EXA＿SEL［８］＝１」する（ステップＳ１０６）。
【００６１】
また、プライオリティ回路は、上記３つの条件を満たさない場合に（ステップＳ１０５否定）、キュー「８」を非選択「＋P＿EXA＿SEL［８］＝０」とする（ステップＳ１０７）。そして、プライオリティ回路は、「P＿EXA＿７」のＲＥＡＤＹ条件として条件１〜条件３を満たすか否かを判定する（ステップＳ１０８）。
【００６２】
続いて、プライオリティ回路は、上記３つの条件を全て満たす場合に（ステップＳ１０８肯定）、演算器ＥＸＡにディスパッチする命令としてキュー「７」を選択「＋P＿EXA＿SEL［７］＝１」する（ステップＳ１０９）。なお、プライオリティ回路は、上記３つの条件を満たさない場合に（ステップＳ１０８否定）、キュー「０〜６」についても同様に上記処理を実施する。
【００６３】
次に、図５を用いて、プライオリティ回路によるＥＸＢ＿ＳＥＬ［９］に該当するフローを説明する。図５は、プライオリティ回路によるＥＸＢ＿ＳＥＬ［９］に該当するフローを説明する図である。
【００６４】
例えば、図５に示すように、プライオリティ回路は、ＲＳＥのＲＥＡＤＹ条件から「P＿EXA＿９」のＲＥＡＤＹ条件を決定する（ステップＳ２０１）。そして、プライオリティ回路は、「P＿EXA＿９」のＲＥＡＤＹ条件として条件１〜条件３を満たすか否かを判定する（ステップＳ２０２）。
【００６５】
続いて、プライオリティ回路は、上記３つの条件を全て満たす場合に（ステップＳ２０２肯定）、フラグＥＸＡ＿ＯＮＬＹが立っているか否かを判定する（ステップＳ２０３）。その後、プライオリティ回路は、フラグＥＸＡ＿ＯＮＬＹが立っていない、すなわち「＋P＿RSE＿９＿EXA＿ONLY＝１」でない場合に（ステップＳ２０３否定）、ディスパッチ抑止フラグが立っているか否かを判定する（ステップＳ２０４）。
【００６６】
そして、プライオリティ回路は、ディスパッチ抑止フラグが立っている、すなわち「＋INH＿EXA＿P＿TGR＝１」である場合に（ステップＳ２０４肯定）、演算器ＥＸＢにディスパッチする命令としてキュー９を選択「＋P＿EXB＿SEL［９］＝１」する（ステップＳ２０５）。
【００６７】
なお、プライオリティ回路は、３つの条件を満たさない場合（ステップＳ２０２否定）、「＋P＿RSE＿９＿EXA＿ONLY＝１」である場合（ステップＳ２０３肯定）、或いは「＋INH＿EXA＿P＿TGR＝１」でない場合（ステップＳ２０４否定）に、演算器ＥＸＢにディスパッチしないことを選択「＋P＿EXB＿SEL［９］＝０」する（ステップＳ２０６）。
【００６８】
次に、図６を用いて、プライオリティ回路によるＥＸＢ＿ＳＥＬ［８］に該当するフローを説明する。図６は、プライオリティ回路によるＥＸＢ＿ＳＥＬ［８］に該当するフローを説明する図である。
【００６９】
例えば、図６に示すように、プライオリティ回路は、ＲＳＥのＲＥＡＤＹ条件から「P＿EXA＿９」および「P＿EXA＿８」のＲＥＡＤＹ条件を決定する（ステップＳ３０１）。そして、プライオリティ回路は、「P＿EXA＿８」のＲＥＡＤＹ条件として条件１〜条件３を満たすか否かを判定する（ステップＳ３０２）。
【００７０】
続いて、プライオリティ回路は、上記３つの条件を全て満たす場合に（ステップＳ３０２肯定）、フラグＥＸＡ＿ＯＮＬＹが立っているか否かを判定する（ステップＳ３０３）。その後、プライオリティ回路は、フラグＥＸＡ＿ＯＮＬＹが立っていない、すなわち「＋P＿RSE＿８＿EXA＿ONLY＝１」でない場合に（ステップＳ３０３否定）、ディスパッチ抑止フラグが立っているか否かを判定する（ステップＳ３０４）。
【００７１】
そして、プライオリティ回路は、ディスパッチ抑止フラグが立っていない、すなわち「＋INH＿EXA＿P＿TGR＝１」でない場合に（ステップＳ３０４否定）、「P＿EXA＿９」のＲＥＡＤＹ条件として条件１〜条件３を満たすか否かを判定する（ステップＳ３０５）。
【００７２】
続いて、プライオリティ回路は、３つの条件を全て満たす場合、すなわち「＋P＿EXA＿９＿READY＝１」である場合に（ステップＳ３０５肯定）、演算器ＥＸＢにディスパッチする命令としてキュー８を選択「＋P＿EXB＿SEL［８］＝１」する（ステップＳ３０６）。
【００７３】
また、プライオリティ回路は、ディスパッチ抑止フラグが立っている、すなわち「＋INH＿EXA＿P＿TGR＝１」である場合に（ステップＳ３０４肯定）、「P＿EXA＿９」のＲＥＡＤＹ条件として条件１〜条件３を満たすか否かを判定する（ステップＳ３０７）。そして、プライオリティ回路は、３つの条件を全て満たす場合、すなわち「＋P＿EXA＿９＿READY＝１」である場合に（ステップＳ３０７肯定）、演算器ＥＸＢにキュー８をディスパッチしないことを選択「＋P＿EXB＿SEL［８］＝０」する（ステップＳ３０９）。なお、プライオリティ回路は、ステップＳ３０７において、３つの条件を満たさない場合、すなわち「＋P＿EXA＿９＿READY＝１」でない場合に（ステップＳ３０７否定）、演算器ＥＸＢにディスパッチする命令としてキュー８を選択「＋P＿EXB＿SEL［８］＝１」する（ステップＳ３０６）。
【００７４】
また、プライオリティ回路は、ステップＳ３０２において３つの条件を満たさない場合（ステップＳ３０２否定）、ステップＳ３０３において「＋P＿RSE＿８＿EXA＿ONLY＝１」である場合（ステップＳ３０３肯定）、或いはステップＳ３０５において「＋P＿EXA＿９＿READY＝１」でない場合（ステップＳ３０５否定）に、演算器ＥＸＢにキュー８をディスパッチしないことを選択「＋P＿EXB＿SEL［８］＝０」する（ステップＳ３０８）。
【００７５】
要するに、「＋P＿EXB＿SEL［８］」以降のエントリは、前段の全てのエントリのＲＥＡＤＹ条件によって選択されることとなる。なお、図４〜６におけるＥＸＡおよびＥＸＢにかかるフローは、同時に実行されるものである。
【００７６】
また、３つの条件の入力におけるプライオリティ回路の詳細では、例えば、図７に示すように、ＥＸＡそれぞれのエントリのＲＥＡＤＹ状態を決定する論理に、「−P＿RSE＿０(０〜９)＿EXA＿ONLY」を含めることによって、ＥＸＡでのみ実行可能な命令をＥＸＢにディスパッチしないようにする。なお、図７は、ＲＳＥのプライオリティ回路の詳細を示す図である。
【００７７】
次に、図８を用いて、ＲＳＥのプライオリティ回路のＥＸＡ選択論理部を説明する。図８は、ＲＳＥのプライオリティ回路のＥＸＡ選択論理部の例を示す図である。
【００７８】
例えば、図８に示すように、上述のフローにおけるＲＳＥのプライオリティ回路のＥＸＡ選択論理部では、「＋P＿EXA＿９＿READY」であれば「９」が選択され、「９」が選択されていない「−P＿EXA＿９＿READY」状態において、「＋P＿EXA＿８＿READY」であれば「８」が選択される。
【００７９】
また、例えば、「−P＿EXA＿９＿READY」、「−P＿EXA＿８＿READY」および「＋P＿EXA＿７＿READY」である場合には、「７」が選択される。このようにして、ＥＸＡ選択論理部では、「−P＿EXA＿９＿READY」〜「−P＿EXA＿１＿READY」である場合に、「＋P＿EXA＿０＿READY」であれば「０」が選択されることとなる。
【００８０】
次に、図９を用いて、ＲＳＥのプライオリティ回路のＥＸＢ選択論理部を説明する。図９は、ＲＳＥのプライオリティ回路のＥＸＢ選択論理部の例を示す図である。
【００８１】
例えば、図９に示すように、上述のフローにおけるＲＳＥのプライオリティ回路のＥＸＢ選択論理部では、ＥＸＡおよびＥＸＢのＲＥＡＤＹ信号に基づいて、second  oldest  readyのエントリをＥＸＢにディスパッチする。但し、ディスパッチ抑止フラグ「＋INH＿EXA＿P＿TGR」が「１」である場合には、oldest  readyのエントリをＥＸＢにディスパッチする。そして、このとき、ＥＸＡにもoldest  readyなエントリがディスパッチされているものの、「EXA＿VALID」が「−INH＿EXA＿P＿TGR」で「０」になるため、結果的にＥＸＡでの演算が抑止され、実行されることはない。
【００８２】
［実施例１による効果］
上述したように、プライオリティ回路は、命令デコーダによって演算器Ａにのみ実行可能である命令を示すＥＸＡ＿ＯＮＬＹが一つのリザベーションステーションに入力され、リザベーションステーションによる当該ＥＸＡ＿ＯＮＬＹの入力によって、ＥＸＡ＿ＯＮＬＹが立っていると判定された場合に、演算器Ｂのキューが空であれば当該演算器Ｂに命令をディスパッチするので、演算器による演算処理を誤りなく効率化することができる。
【００８３】
また、プライオリティ回路は、最も古い命令が演算器Ａで複数サイクルでの演算実行中である場合に、ディスパッチ抑止フラグが立っている、且つ演算器Ｂのキューが空であれば当該演算器Ｂに命令をディスパッチするので、演算器による演算処理の効率化をより高めることができる。
【実施例２】
【００８４】
さて、これまで本願に開示するプライオリティ回路の実施例について説明したが、上述した実施例以外にも種々の異なる形態にて実施されてよいものである。そこで、（１）演算処理装置、（２）浮動小数点演算器、（３）プライオリティ回路の構成、において異なる実施例を説明する。
【００８５】
（１）演算処理装置
上記実施例１では、主にプライオリティ回路への好適な実施例について説明したが、当該プライオリティ回路を含んだ演算処理装置（プロセッサ）として実現することもできる。例えば、プライオリティ回路を図１０に示したプロセッサに適用すれば良い。
【００８６】
（２）浮動小数点演算器
また、上記実施例１では、演算器について、固定小数点演算器に適用する場合について説明したが、浮動小数点演算器に対して適用することとしても良い。
【００８７】
（３）プライオリティ回路の構成
また、上記文書中や図面中などで示した処理手順、制御手順、具体的名称、各種のデータやパラメタなどを含む情報（例えば、「ディスパッチ抑止フラグ」の具体的名称など）については、特記する場合を除いて任意に変更することができる。
【００８８】
また、図示した各回路の各構成要素は、機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各回路の分散・統合の具体的形態は、図示のものに限られず、その全部または一部を各種の負担や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合することができる。
【符号の説明】
【００８９】
１００  命令デコーダ
１１０  ＲＳＥ
１２０  プライオリティ回路
１３０  ＥＸＡ
１４０  ＥＸＢ
【図１】
2011008732.tif 000003
【図２−１】
2011008732.tif 000004
【図２−２】
2011008732.tif 000005
【図２−３】
2011008732.tif 000006
【図２−４】
2011008732.tif 000007
【図２−５】
2011008732.tif 000008
【図３】
2011008732.tif 000009
【図４】
2011008732.tif 000010
【図５】
2011008732.tif 000011
【図６】
2011008732.tif 000012
【図７】
2011008732.tif 000013
【図８】
2011008732.tif 000014
【図９】
2011008732.tif 000015
【図１０】
2011008732.tif 000016
【図１１】
2011008732.tif 000017
【図１２】
2011008732.tif 000018
【図１３】
2011008732.tif 000019
【図１４】
2011008732.tif 000020
【図１５】
2011008732.tif 000021
【図１６】
2011008732.tif 000022
【図１７】
2011008732.tif 000023
【図１８】
2011008732.tif 000024
【図１９】
2011008732.tif 000025