(57)【要約】  ハザード検出が、条件が満たされた場合にオペレーションを実行することができるように動作可能な条件付命令を、条件を評価するように動作可能なエミッサリ命令及びオペレーションを実行可能な制御不能基本命令に変換することによって簡略化される。基本命令が停止している間、エミッサリ命令が実行される。エミッサリ命令は、条件を評価し、条件評価を基本命令に報告し直す。条件評価に基づいて、基本命令は実行のためのパイプラインにラウンチされ、或いは破棄（或いは、ＮＯＰ、ヌル命令で代替え）される。いずれの場合においても、次に続く命令の従属性が解決される。【選択図】      図３
2008530693.tif 000002
【特許請求の範囲】
【請求項１】
パイプラインプロセッサにおいて条件付命令を実行する方法において、前記条件付命令は、条件が満たされた場合に、オペレーションを処理するように動作可能であり、前記方法は、
前記条件付命令を前記条件を満たしたか否かを決定するように動作可能なエミッサリ命令と、前記オペレーションを処理するように動作可能な条件無し基本命令とに変換し、
前記エミッサリ命令を実行し、
前記エミッサリ命令の実行が条件が満たされていることを示している場合に、条件無し基本命令を実行する方法。
【請求項２】
前記エミッサリ命令の実行が条件が満たされていないことを示している場合に、条件無し基本命令の代わりに、ＮＯＰ命令を実行することをさらに含む請求項１記載の方法。
【請求項３】
前記エミッサリ命令の実行が条件が満たされていないことを示している場合に、前記基本命令を破棄することをさらに含む請求項１記載の方法。
【請求項４】
前記エミッサリ命令を実行した後に、前記条件付命令以降の命令のためのハザード検出を実行することをさらに含む請求項１記載の方法。
【請求項５】
命令発行パイプステージ及び条件評価パイプステージを含む条件実行パイプラインと、
前記条件評価パイプステージから前記命令発行パイプステージまでのフィードバックパスと、
条件付命令を前記命令発行パイプステージでエミッサリ命令及び条件無し基本命令に変換し、前記エミッサリ命令を発行し、前記エミッサリ命令によって、前記条件評価パイプステージからのフィードバックに応答して前記基本命令を条件付で発行するように動作可能なパイプラインコントローラと
を具備するプロセッサ。
【請求項６】
前記条件評価の後に、以降に続く命令によって前記条件付命令の従属性を検出できるように動作するハザード検出ロジックをさらに具備する請求項５記載のプロセッサ。
【請求項７】
条件付命令を復号化し、前記条件付命令は、条件が満たされた場合にのみ、オペレーションを処理できるように動作するものであり、
前記条件付命令を前記条件を評価することができるように動作するエミッサリ命令と、前記オペレーションを処理できるように動作する条件無し基本命令とに変換し、
前記エミッサリ命令を実行し、条件評価を得て、
前記条件が満たされない場合に、前記条件付命令に従属する以降の命令がないことを決定するパイプラインプロセッサにおけるハザード検出を処理する方法。
【請求項８】
前記条件が満たされた場合に、前記条件付命令によって書き込まれたレジスタ或いはメモリを読むいずれかの以降の命令の従属性を検出することをさらに含む請求項７記載の方法。
【請求項９】
前記命令が満たされている場合に、前記条件無し基本命令を実行することをさらに含む請求項８記載の方法。
【請求項１０】
前記条件無し基本命令を実行する前に、前記従属性が検出される請求項９記載の方法。
【請求項１１】
前記条件無し基本命令が実行を完了するまで、従属性を検出するための以降の命令を停止することをさらに含む請求項１０記載の方法。
【請求項１２】
前記条件が満たされていない場合に、前記条件無し基本命令の代わりに、ＮＯＰ命令を実行することをさらに含む請求項７記載の方法。
【請求項１３】
前記条件が満たされていない場合に、前記基本命令を破棄することをさらに含む請求項７記載の方法。
【請求項１４】
条件付命令を復号化し、前記条件付命令は、条件がＴＲＵＥである場合にのみ、オペレーションを処理できるように動作するものであり、
前記条件付命令を２つの分離した命令に変換し、前記２つの命令は、エミッサリ命令と、前記オペレーションの処理の実行の際に動作できる条件無し基本命令であり、
前記エミッサリ命令を実行し、前記エミッサ命令に前記条件を評価させ、
前記エミッサリ命令による条件の評価に依存して基本命令を実行し、或いは実行せず、
１つ以上の以降の命令と基本命令との間のデータ依存性を検出するパイプラインプロセッサにおけるハザード検出を処理する方法。
【請求項１５】
依存性を検出することに応答して、基本命令がオペレーションを処理するまで以降の１つ以上の命令の実行を遅らせることをさらに含む請求項１４記載の方法。
【請求項１６】
１つ以上の以降の命令によって基本命令の依存性がないことを検出することに応答して、実行のための以降の１つ以上の命令をすぐにラウンチすることをさらに含む請求項１４記載の方法。
【請求項１７】
前記条件付命令をエミッサリ命令と基本命令とに変換し、
前記エミッサリ命令を実行し、
前記エミッサリ命令による条件評価に応答して前記基本命令を条件付で実行することを含む条件付命令を実行する方法。
【請求項１８】
前記条件付命令以降の１つ以上の命令でハザード検出を処理することをさらに含む請求項１７記載の方法。
【請求項１９】
前記基本命令が実行されない場合に、１つ以上の以降の命令と前記条件付命令との間に依存性は存在しない請求項１８記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にプロセッサの分野に関し、特に、条件評価のためのエミサッリ命令を介した条件付命令実行の方法に関する。
【背景技術】
【０００２】
マイクロプロセッサは、多様なアプリケーションにおいて計算タスクを実行する。高実行スピード、低消費電力及び省面積がプロセッサ設計者にとっての共通の重要なゴールであり、特に、ポータブル電子装置のような埋め込みアプリケーションにおいては共通の重要なゴールとなっている。しかしながら、重要な考察されるべきことは、正確さである。アーキテクチャの特徴は何でもプロセッサデザインに含まれ、実行スピード、或いはソフトウェアコードの正しい実行をさらに保証する他のメトリックニーズを改善する。
【０００３】
多くの現代のプロセッサは、パイプラインアーキテクチャを有する。このパイプラインアーキテクチャにおいては、各々が複数の実行ステップを有する連続的な命令が実行の際にオーバラップされる。改良された性能のために、命令が常にパイプラインを通して流れるべきである。しかしながら、データハザードとして知られている命令間のデータ従属性のような種々の理由のために命令がパイプラインにおいて停止をし始めることがある。複数のパイプラインは、システム性能全体でパイプライン停止の効果を最小限にすることができる。停止したパイプラインを待つ命令が、即時実行のための他のパイプラインにディスパッチされることができるからである。
【０００４】
スーパスカラーパイプラインによって提供される潜在的な性能ゲインの最大の利点を得るために、高性能プロセッサは故障(out-of-order)実行を共通にサポートする。すなわち、命令は、それらのプログラム順序以外で実行可能である。このようなディスパッチの１つの例として、レジスタからオペランドを読む論理或いは算術処理を実行する命令が、結果をレジスタに書き込み、その結果が計算された前の命令まで実行することができない（完了が命令がパイプラインに残っていることを示している場合に、データがフォワードされることが可能）。これら２つの命令は、実行されることができず、故障或いは正しくない結果が発生する。命令間の従属性を検出する処理はハザード検出として広く知られている。命令を実行パイプラインにディスパッチする以前に、ハザード検出はパイプラインにおいて非常に早く共通に処理される。
【０００５】
最も多くの命令セットアーキテクチャは、条件付命令を含み、この条件付命令はいくつかのオペレーションを処理し、条件の評価に依存しない命令である。条件評価は、一般的に、パイプラインの深部である実行パイプステージにおいて処理される。条件付命令は、オペレーションがパイプラインにおける深部までで実行されるかの知識を遅らせることによってハザード検出を非常に複雑にする。しかしながら、オペレーションが、例えば、レジスタの中身に影響するか否かの知識はハザード検出のためのパイプラインの早い段階において必要とされる。以下の例示コードセグメントはこの問題を示す。
【０００６】
ＡＤＤ  ｒ１，ｒ７，ｒ８  ｒ７及びｒ８をの内容を加算し、合計をｒ１に置く
ＣＭＰ  ｒ１，ｒ１２  ｒ１及びｒ１２の内容を比較する（比較の結果を反映するコード或いはフラグをセットする）
ＡＤＤＥＱ  ｒ１，ｒ８，ｒ９  以前の比較が等しい場合に、ｒ８及びｒ９の内容を加算し、その合計をｒ１に置く。さもなければ、ｒ１は変更されない。
【０００７】
ＡＤＤＮＥ  ｒ１，ｒ３，ｒ４  以前の比較が等しくない場合に、ｒ３及びｒ４の内容を加算し、合計をｒ１に置く。さもなければ、ｒ１は変更されない。
【０００８】
ＡＮＤ  ｒ１０，ｒ６，ｒ１  ｒ６の内容をｒ１の内容に対して論理的なＡＮＤをとり、その結果をｒ１０に置く。
【０００９】
最後のＡＮＤ命令はＡＤＤＮＥ命令上でｒ１依存性を有する。すなわち、ＡＤＤＮＥはＡＮＤ実行より前にその結果を計算しなければならず、ＡＤＤＮＥによってｒ１に書き込まれるデータがＡＮＤに入手可能となる。しかしながら、ＡＤＤＮＥは条件付命令であり、ＡＤＤオペレーションを実行可能ではない。このケースにおいては、ＡＮＤ命令の真の従属性はＡＤＤＥＱ命令上にある。前述の例（共通ソフトウェア構造を表わす）において、条件ＥＱ（等しい）及びＮＥ（等しくない）が相互に排他的で、かつ徹底的なものであることから、ＡＤＤＥＱ及びＡＤＤＮＥ命令のうちの１つは正確に実行される。しかしながら、一般的に、ＡＤＤＥＱ命令は条件付であるので、ＡＮＤは実際に早めの命令、このケースにおいては、最初のＡＤＤの従属性を実際に有する。さらに、従来の条件付命令が実行されない場合、以下に続く命令は従属性を全く有しない。
【００１０】
条件付命令によって表わされる臨時(contingent)の従属性、特に、可能複数レベル臨時従属性は、故障プログラム実行を正確に行なうために必要とされる正確なハザード検出のタスクを非常に複雑にする。
【発明の開示】
【００１１】
［概要］
ある実施の形態においては、オペレーションを実行可能な条件付命令が、条件が満たされた場合に、条件を評価するように動作可能なエミッサリー命令及びオペレーションを実施するように動作可能な条件無し基本命令に変換される。基本命令が停止している間、エミッサリ命令が実行される。エミッサリ命令は条件を評価し、この条件評価の報告を基本命令に戻す。条件評価に基づいて、基本命令は、実行のためのパイプラインにラウンチされ、或いは破棄され（或いはＮＯＰ或いはヌル命令に置き変えられる）るかのいずれかとされる。いずれのケースにおいても、以降の命令の従属性は解決される。
【００１２】
他の実施の形態においては、プロセッサは、命令発行パイプステージ及び条件評価パイプステージを含む条件実行パイプラインを具備する。このプロセッサは、条件評価パイプステージから命令発行パイプステージまでのフィードバックパスを具備する。このプロセッサは、さらに、条件付命令を命令発行パイプステージでエミッサリ命令及び条件無し基本命令に変換し、エミッサリ命令を発行し、エミッサリ命令によって、条件評価パイプステージからのフィードバックに応答して基本命令を条件付で発行するように動作可能なパイプラインコントローラを具備する。
【００１３】
他の実施の形態においては、条件付命令が復号化される。条件付命令は、条件が満たされた場合にのみ、オペレーションを処理できるように動作するものである。条件付命令が、条件を評価することができるように動作するエミッサリ命令と、オペレーションを実行できるように動作する条件無し基本命令とに変換される。エミッサリ命令が実行される。条件が満たされない場合に、条件付命令に従属する命令がないことを決定する。
【００１４】
さらに、他の実施の形態は、パイプラインプロセッサにおけるハザード検出を処理する方法に関連する。条件付命令が復号化される。条件付命令は、条件がＴＲＵＥである場合にのみ、オペレーションを処理できるように動作するものである。条件付命令を２つの分離した命令に変換する。２つの命令は、エミッサリ命令と、オペレーションを実行できるように動作する条件無し基本命令である。エミッサリ命令を実行し、エミッサ命令に条件を評価させる。エミッサリ命令によって、条件の評価に依存して基本命令が実行され、或いは実行されない。１つ以上の以降の命令と基本命令との間のデータ依存性が検出される。
【００１５】
他の実施の形態は、条件付命令を実行する方法に関する。条件付命令をエミッサリ命令と基本命令とに変換する。エミッサリ命令が実行される。エミッサリ命令による条件評価に応答して基本命令が条件付で実行される。
【００１６】
［詳細な説明］
図１は、プロセッサ１０の機能ブロック図を示す。プロセッサ１０は、制御ロジック１４に従って命令実行パイプライン１２において命令を実行する。パイプライン１２は、１２ａ，１２ｂのような複数の並行パイプラインを有するスーパスカラー設計であってもよい。パイプライン１２ａ，１２ｂは、パイプステージに編成された種々のレジスタ或いはラッチ１６及び１つ以上の演算論理ユニット（ＡＬＵ）１８を含む。汎用目的レジスタ（ＧＰＲ）ファイル２０は、メモリ階層のトップを含むレジスタを提供する。パイプライン１２ａ，１２ｂは、命令側トランスレーションルックアサイドバッファ（ＩＴＬＢ）２４によって管理されたメモリアドレッシング及び許可で命令キャッシュ（Ｉ−Ｃａｃｈｅ或いはＩ＄）２２から命令をフェッチする。
【００１７】
データは、メイントランスレーションルックサイドバッファ（ＴＬＢ）２８によって管理されるメモリアドレッシング及び許可でデータキャッシュ（Ｄ−キャッシュ或いはＤ＄）からアクセスされる。種々の実施の形態においては、ＩＴＬＢは、ＴＬＢの一部のコピーを有する。また、ＩＴＬＢ及びＴＬＢは集積しても良い。同様に、プロセッサ１０の種々の形態においては、Ｉ−キャッシュ２２及びＤ−キャッシュ２６が集積され、或いは単一化されることが可能である。Ｉ−キャッシュ２２及び／又はＤ−キャッシュ２６におけるミスが、メモリインターフェイス３０の制御下でメイン(オフチップ）メモリ３２へのアクセスを引き起こす。プロセッサ１０は、種々の周辺装置３６へのアクセスを制御する入力／出力（Ｉ／Ｏ）インターフェイス３４を含むことができる。当業者であれば、プロセッサ１０の多くの変形が可能であることを認識できる。例えば、プロセッサ１０は、Ｉ及びＤキャッシュのいずれか或いは双方のためのセカンドレベル（Ｌ２）キャッシュを含む。加えて、プロセッサ１０において示された１つ以上の機能ブロックが特定の実施の形態から省略されてもよい。
【００１８】
図２は、スーパスカラーパイプラインプロセッサアーキテクチャを示す図である。プロセッサパイプライン１２は、Ｉ−キャッシュ２２から命令をフェッチする命令フェッチパイプステージ４０を有する。この命令は、復号パイプステージ４２で復号化される。命令が一度知られると、ハザード検出ロジック４４が、復号化された命令と、復号化された命令によって必要とされるオペランドを生成する命令のような現在実行している命令との間の従属性を検出する。後に続くハザード検出ロジック４４は、拡張／発行(issue)パイプステージ４６であり、復号命令を複数の実行パイプライン１２ａ，１２ｂのうちの一つに発行する。
【００１９】
上述のように、ハザード検出は条件付命令によって非常に複雑化される。このタスクを簡略化するために、条件付命令が２つの関連付けられた命令、すなわち、エミッサリ命令及び基本命令に変換される。ここにおいて使用されるように、”エミサッリ命令”は、条件付命令の条件の評価である役割の命令であり、その条件評価の報告を基本命令に戻す。エミッサリ命令は、どんな汎用目的レジスタの読み出し或いは書き込みも行なわず、どんな条件コードの変更も行なわず、どんなメモリアクセスをも行なわない。例えば、条件付命令”ＡＤＤＥＱ  ｒ１，ｒ２，ｒ３”に対応するエミッサリ命令は、ＥＱ（均等）条件を、例えば、以前の比較或いは他の命令によって設定された条件付レジスタにおけるＥＱビットを検査することによって検出し、報告する命令である。エミッサリ命令は、ｒ３或いはｒ４を読まず、また、ｒ１の書き込みも行なわない。
【００２０】
ここにおいて使用されるように、”基本命令”は、条件無し命令であり、その条件がＴＲＵＥであると評価された場合に条件付命令が実行されるであろうように、同じオペランド及び宛先（destination)を有する同じオペレーションを処理する。例えば、条件付命令”ＡＤＤＥＱ  ｒ１，ｒ３，ｒ４”に対応する基本命令は”ＡＤＤ  ｒ１，ｒ３，ｒ４”である。ある実施の形態においては、基本命令は、その条件の評価をペンディングして、発行パイプステージ４６で停止する。
【００２１】
一度、条件付命令がエミッサリ命令及び基本命令に変換されると、エミッサリ命令は、基本命令が停止している間、実行パイプライン１２ａ，１２ｂにラウンチされる。エミッサリ命令は、条件評価パイプステージ４８，５０に届くまで進む。そこで、エミッサリ命令は条件付命令に関連する条件を評価し、発行パイプステージ４６で停止した基本命令に条件評価の報告を戻す。エミッサリ命令は、次に残りのパイプライン１２ａ，１２ｂを通して進むことが可能であり、残りのパイプライン１２ａ，１２ｂを通過して進むＮＯＰ（オペランドなし、或いはヌル命令）によって置き換えられることが可能であり、或いは破棄されることが可能であり、その結果のパイプ”バブル”がパイプライン１２ａ，１２ｂにおいて次に続く命令によって満たされる。要するに、エミッサリ命令の有効期間は、条件付命令の条件評価の評価及び報告の時点で終了し、エミッサリ命令は、そして、当業者によって良く理解されるように、プロセッサのプログラム状態に影響を与えないようないずれかの方法で処分される。
【００２２】
エミッサリ命令による条件評価の報告が行なわれると、発行パイプステージ４６で停止した基本命令が、条件評価がＴＲＵＥの場合に、入手可能な実行パイプライン１２ａ，１２ｂにラウンチされる。条件評価は、条件が満たされ、或いは条件付テストを通過した場合に、ＴＲＵＥとみなされる。逆に言えば、条件が満たされず、或いは条件付テストを失敗した場合には、条件評価はＦＡＬＳＥである。ＴＲＵＥ条件評価の場合、条件無し基本命令が実行され、レジスタファイル或いはメモリ上でその効果が知られる。したがって、ハザード検出ロジック４４は、基本命令が書き込むいくつかのレジスタ或いはメモリロケーションを読む基本命令に続く全ての命令のためにハザード検出を処理することができる。
【００２３】
エミッサリ命令によって評価された条件評価がＦＡＬＳＥの場合、基本命令は実行されない。基本命令は、ＮＯＰによって置き換えられ、入手可能な実行パイプライン１２ａ，１２ｂにラウンチされる。また、基本命令は破棄され、続く命令がパイプラインバブルを埋めるように進む。いずれのケースにおいても、ハザード検出ロジック４４は基本命令（及び、対応するオリジナル条件付命令）がいずれのレジスタ或いはメモリロケーションを変更せず、後に続く命令はオリジナル条件付命令のいずれの依存性もない。ハザード検出ロジック４４は、次に、１つ以上前の条件付命令を見て、以降の命令の実際の従属性を決定する。
【００２４】
このプロセスが、図３においてフロー形式で示されている。命令の復号に続き（ブロック５２）、命令が条件付命令である場合（ブロック５４）、命令はエミッサリ命令及び基本命令に変換される（ブロック５６）。基本命令は、命令発行パイプステージ４６で停止し、エミッサリ命令は入手可能な実行パイプライン１２ａ，１２ｂへ発行される（ブロック５８）。エミッサリ命令が条件評価パイプステージ４８、５０に到着したとき、エミッサリ命令が条件を評価し（ブロック６０）、条件評価を基本命令に報告する。条件がＴＲＵＥを評価した場合、基本命令が入手可能なパイプライン１２，１２ｂ(ブロック６２）に発行される。条件がＦＡＬＳＥを評価する場合、基本命令が破棄され、或いはＮＯＰへ変換され、パイプライン１２ａ，１２ｂへ発行される(ブロック６４）。いずれのケースでも、さらに、復号化された命令が条件付命令ではない場合(ブロック５４）、条件付命令が実行されるか否かを知られているので、ハザード検出が以降の命令のために行なわれる（ブロック６６）。
【００２５】
本発明のコンセプトが、特定の特徴、観点及びその実施の形態に関してここに述べられているが、多くの変形、改良及び他の実施の形態が本発明のコンセプトの広範な観点の範囲内で可能であることが明らかであり、したがって、全ての変形、改良及び実施の形態は、ここにおいて述べられた発明のコンセプトの範囲内であるとみなされている。本発明の実施の形態は、したがって、図示したような全ての観点において解釈され、限定的ではなく、全ては意味の範囲内において変化し、添付した請求の範囲の均等の範囲は、これに包含されるものと意図されている。
【図面の簡単な説明】
【００２６】
【図１】プロセッサの機能ブロック図である。
【図２】スーパスカラーパイプラインの機能ブロック図である。
【図３】条件付命令実行のフロー図である。
【図１】
2008530693.tif 000003
【図２】
2008530693.tif 000004
【図３】
2008530693.tif 000005
【国際調査報告】
2008530693.tif 000006
2008530693.tif 000007
2008530693.tif 000008