特開2015-228237(P2015-228237A)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧
特開2015-228237アウトオブオーダー型マイクロプロセッサにおけるオペランド・ストア比較ハザードの予測及び回避
<>
  • 特開2015228237-アウトオブオーダー型マイクロプロセッサにおけるオペランド・ストア比較ハザードの予測及び回避 図000003
  • 特開2015228237-アウトオブオーダー型マイクロプロセッサにおけるオペランド・ストア比較ハザードの予測及び回避 図000004
  • 特開2015228237-アウトオブオーダー型マイクロプロセッサにおけるオペランド・ストア比較ハザードの予測及び回避 図000005
  • 特開2015228237-アウトオブオーダー型マイクロプロセッサにおけるオペランド・ストア比較ハザードの予測及び回避 図000006
  • 特開2015228237-アウトオブオーダー型マイクロプロセッサにおけるオペランド・ストア比較ハザードの予測及び回避 図000007
  • 特開2015228237-アウトオブオーダー型マイクロプロセッサにおけるオペランド・ストア比較ハザードの予測及び回避 図000008
  • 特開2015228237-アウトオブオーダー型マイクロプロセッサにおけるオペランド・ストア比較ハザードの予測及び回避 図000009
  • 特開2015228237-アウトオブオーダー型マイクロプロセッサにおけるオペランド・ストア比較ハザードの予測及び回避 図000010
  • 特開2015228237-アウトオブオーダー型マイクロプロセッサにおけるオペランド・ストア比較ハザードの予測及び回避 図000011
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2015-228237(P2015-228237A)
(43)【公開日】2015年12月17日
(54)【発明の名称】アウトオブオーダー型マイクロプロセッサにおけるオペランド・ストア比較ハザードの予測及び回避
(51)【国際特許分類】
   G06F 9/38 20060101AFI20151120BHJP
   G06F 9/34 20060101ALI20151120BHJP
【FI】
   G06F9/38 350A
   G06F9/38 310F
   G06F9/34 350A
【審査請求】有
【請求項の数】26
【出願形態】OL
【全頁数】33
(21)【出願番号】特願2015-146076(P2015-146076)
(22)【出願日】2015年7月23日
(62)【分割の表示】特願2012-545216(P2012-545216)の分割
【原出願日】2010年12月13日
(31)【優先権主張番号】12/644,923
(32)【優先日】2009年12月22日
(33)【優先権主張国】US
(31)【優先権主張番号】12/822,960
(32)【優先日】2010年6月24日
(33)【優先権主張国】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.AIX
2.Solaris
3.HP−UX
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【復代理人】
【識別番号】100085545
【弁理士】
【氏名又は名称】松井 光夫
(74)【復代理人】
【識別番号】100118599
【弁理士】
【氏名又は名称】村上 博司
(72)【発明者】
【氏名】クリスチャン ジャコビ
(72)【発明者】
【氏名】ブライアン ウィリアム トンプト
(72)【発明者】
【氏名】グレゴリー ウィリアム アレクサンダー
(72)【発明者】
【氏名】カリー ジェーソン アレクサンダー
(72)【発明者】
【氏名】ブライアン ウィリアム カラン
(72)【発明者】
【氏名】ジェームズ ラッセル ミッチェル
(72)【発明者】
【氏名】ジョナサン ティン シェ
(72)【発明者】
【氏名】ブライアン ロバート プラスキー
【テーマコード(参考)】
5B013
5B033
【Fターム(参考)】
5B013AA12
5B013CC03
5B033DB03
(57)【要約】      (修正有)
【課題】アウトオブオーダー方式で実行されるロード及びストア動作を管理する方法及び情報処理システムを提供する。
【解決手段】ロード命令及びストア命令のうちの少なくとも1つが実行される。オペランドストア比較ハザードに遭遇したという判断がなされる。この判断に基づいて、オペランド・ストア比較予測テーブル116内のエントリ402、403が作成される。このエントリ402、403は、少なくとも、実行された命令の命令アドレス404、412と、命令と関連したハザード表示フラグ406、416とを含む。ハザード表示フラグ406、416は、命令がオペランドストア比較ハザードに遭遇したことを示す。ロード命令がハザード表示フラグと関連付けられると、ロード命令は、実質的に類似したフラグと関連した全てのストア命令に依存するようになる。
【選択図】図4
【特許請求の範囲】
【請求項1】
アウトオブオーダー方式で実行されるロード及びストア動作を管理する方法であって、
ロード命令及びストア命令のうちの少なくとも1つの命令を実行するステップと、
前記実行に基づいて、オペランドストア比較ハザードに遭遇したことを判断するステップと、
前記判断に基づいて、オペランドストア比較ハザード予測テーブル内に、少なくとも、実行された前記少なくとも1つの命令の命令アドレスと、実行された前記少なくとも1つの命令と関連したハザード表示フラグとを含むエントリを作成するステップであって、前記ハザード表示フラグは、実行された前記少なくとも1つの命令が前記オペランドストア比較ハザードに遭遇したことを示す、作成するステップと、
を含む方法。
【請求項2】
前記実行するステップは、前記ロード命令及び前記ストア命令から選択される1つの命令を実行するステップを含み、さらに、
前記判断に基づいて、前記オペランドストア比較ハザード予測テーブル内に、選択されなかった前記ロード命令及び前記ストア命令のうちのもう1つの命令の命令アドレスと、前記もう1つの命令と関連したハザード表示フラグとを含むエントリを作成するステップであって、前記もう1つの命令と関連した前記ハザード表示フラグは、前記実行された前記1つの命令と関連した前記ハザード表示フラグと実質的に類似しており、前記もう1つの命令と関連した前記ハザード表示フラグは、前記もう1つの命令が前記オペランドストア比較ハザードに遭遇したことを示す、作成するステップと、
を含む請求項1に記載の方法。
【請求項3】
前記実行するステップは、
前記ストア命令の前に前記ロード命令を実行するステップと、
前記ロード命令が実行を終了した後、前記ストア命令を実行するステップと、
を含み、
前記ロード命令は、前記ストア命令が後の書き込み動作を実行する記憶場所からデータセットを取得する、請求項1に記載の方法。
【請求項4】
前記ストア命令により、前記ロード命令が前記記憶場所から前記データセットを取得したと判断するステップと、
前記判断に応答して、前記ストア命令により、ストア・ヒット・ロードハザードに遭遇したと判断するステップと、
前記ストア・ヒット・ロードハザードに遭遇したと判断するステップに応答して、前記ストア命令により、前記ロード命令が前記記憶場所から前記データセットを取得したと判断したときに前記ストア命令が比較した最も古いロードキューエントリ内に、ハザード表示フラグを設定するステップであって、前記ハザード表示フラグは、前記ロード命令が前記ストア・ヒット・ロードハザードと関連付けられることを示す、設定するステップと、をさらに含む、請求項3に記載の方法。
【請求項5】
前記ストア命令により、前記オペランドストア比較ハザード予測テーブルを含む命令フェッチユニットに、前記ストア命令が前記ハザード表示フラグを設定したことを通知するステップであって、前記命令フェッチユニットは、前記通知することに応答して前記エントリを生成する、通知するステップと、
前記ストア命令が前記ハザードフラグを設定するステップに応答して、ストアキューにより、命令発行ユニットに、前記ストア命令の前記ストアキュー内のストアキューエントリ番号を通知するステップと、
前記ロード命令により、前記オペランドストア比較ハザード予測テーブルを含む前記命令フェッチユニットに、前記ストア命令が前記ハザード表示フラグを設定したことを通知するステップであって、前記命令フェッチユニットは、前記通知することに応答して前記エントリを生成する、通知するステップと、
のうちの少なくとも1つをさらに含む、請求項4に記載の方法。
【請求項6】
前記実行するステップは、
前記ロード命令の前に前記ストア命令を実行するステップであって、前記ストア命令と関連したデータセットが遅延される、実行するステップと、
前記データセットが前記ストア命令によりストアキュー内に書き込まれる前に前記ロード命令を実行するステップと、
をさらに含む、請求項1に記載の方法。
【請求項7】
前記データセットが前記ストア命令によりストアキュー内に書き込まれる前に実行されることに基づいて、前記ストア命令により、前記ロード命令が前記ストア命令に依存していると判断するステップと、
前記ロード命令が前記ストア命令に依存しているとの判断に基づいて、前記ロード命令により、ストア・データ転送を実行することができないと判断するステップと、
前記ストア・データ転送を実行することができないとの判断に基づいて、前記ロード命令により、前記ロード命令が転送不能ロード・ヒット・ストアハザードに遭遇したと判断するステップと、
をさらに含む、請求項6に記載の方法。
【請求項8】
前記ロード命令が前記転送不能ロード・ヒット・ストアハザードに遭遇したとの判断に基づいて、前記ロード命令により、前記ストア命令と関連した前記ストアキュー内のストアキューエントリ内に、ハザード表示フラグを設定するステップであって、前記ハザード表示フラグは、前記ストア命令が前記転送不能ロード・ヒット・ストアハザードと関連付けられることを示す、設定するステップと、
前記ロード命令が前記転送不能ロード・ヒット・ストアハザードに遭遇したとの判断に基づいて、前記ロード命令により、前記ロード命令と関連したロードキュー内のロードキューエントリ内に、ハザード表示フラグを設定するステップであって、前記ハザード表示フラグは、前記ロード命令が持続的転送不能ロード・ヒット・ストアハザードに遭遇したことを示す、設定するステップと、
をさらに含む、請求項7に記載の方法。
【請求項9】
前記ロード命令により、前記オペランドストア比較ハザード予測テーブルを含む命令フェッチユニットに、前記ロード命令が前記ロードキューエントリ内に前記ハザード表示フラグを設定したことを通知するステップであって、前記命令フェッチユニットは、前記通知することに応答して前記エントリを生成する、通知するステップと、
前記ストア命令により、前記オペランドストア比較ハザード予測テーブルを含む前記命令フェッチユニットに、前記ロード命令が前記ストアキューエントリ内に前記ハザード表示フラグを設定したことを通知するステップであって、前記命令フェッチユニットは、前記通知することに応答して前記エントリを生成する、通知するステップと、
のうちの少なくとも1つをさらに含む、請求項8に記載の方法。
【請求項10】
前記実行するステップは、
前記ロード命令の前に前記ストア命令を実行するステップであって、前記ストア命令と関連したデータセットは持続的に入手可能でない、実行するステップと、
前記ストア命令の後に前記ロード命令を実行するステップと、
をさらに含む、請求項1に記載の方法。
【請求項11】
前記データセットが持続的に入手可能でないことに基づいて、前記ロード命令により、前記ロード命令が前記ストア命令に依存していると判断するステップと、
前記ロード命令が前記ストア命令に依存しているとの判断に基づいて、前記ロード命令により、ストア・データ・転送を実行できないと判断するステップと、
前記ストア・データ・転送を実行することができず、かつ、前記データセットが持続的に入手可能でないとの判断に基づいて、前記ロード命令により、前記ロード命令が持続的転送不能ロード・ヒット・ストアハザードに遭遇したと判断するステップと、
をさらに含む、請求項10に記載の方法。
【請求項12】
前記ロード命令が前記持続的転送不能ロード・ヒット・ストアハザードに遭遇したとの判断に基づいて、前記ロード命令により、前記ストア命令と関連した前記ストアキュー内のストアキューエントリ内に、ハザード表示フラグを設定するステップであって、前記ハザード表示フラグは、前記ストア命令が前記持続的転送不能ロード・ヒット・ストアハザードと関連付けられること示す、設定するステップと、
前記ロード命令が前記持続的転送不能ロード・ヒット・ストアハザードに遭遇したとの判断に基づいて、前記ロード命令により、前記ロード命令と関連したロードキュー内のロードキューエントリ内に、ハザード表示フラグを設定するステップであって、前記ハザード表示フラグは、前記ロード命令が前記持続的転送不能ロード・ヒット・ストアハザードに遭遇したことを示す、設定するステップと、
をさらに含む、請求項11に記載の方法。
【請求項13】
前記ロード命令により、前記オペランドストア比較ハザード予測テーブルを含む命令フェッチユニットに、前記ロード命令が前記ロードキューエントリ内に前記ハザード表示フラグを設定したことを通知するステップであって、前記命令フェッチユニットは、前記通知することに応答して前記エントリを生成する、通知するステップと、
前記ストア命令により、前記オペランドストア比較ハザード予測テーブルを含む前記命令フェッチユニットに、前記ロード命令が前記ストアキューエントリ内に前記ハザード表示フラグを設定したことを通知するステップであって、前記命令フェッチユニットは、前記通知することに応答して前記エントリを生成する、通知するステップと、
のうちの少なくとも1つを含む、請求項12に記載の方法。
【請求項14】
前記命令の前記命令アドレスについて、前記オペランドストア比較ハザード予測テーブルに問い合わせするステップであって、前記オペランドストア比較ハザード予測テーブルは、ロード命令に関する第1のエントリと、ストア命令に関する第2のエントリとを含み、前記第1及び第2のエントリは、互いに独立しており、前記ロード命令及び前記ストア命令がそれぞれ以前にオペランドストア比較ハザードに遭遇したことを示し、かつ、それぞれ前記ロード命令及び前記ストア命令のうちの1つの少なくとも命令アドレスと、前記オペランドストア比較ハザードと関連したハザード表示フラグとを含む、問い合わせするステップと、
前記予測テーブルに問い合わせするステップに応答して、前記命令が、前記オペランドストア比較ハザード予測テーブル内の前記第1及び第2のエントリのうちの1つと関連付けられると判断するステップと、
前記判断することに基づいて、前記命令と関連した前記第1及び第2のエントリのうちの1つの中に含まれる前記ハザード表示フラグを識別するステップと、
をさらに含み、
前記命令が前記第1のエントリと関連付けられている場合、前記命令はロード命令であり、
前記識別されたハザード表示フラグに基づいて前記命令をマーク付けするステップであって、前記マーク付けするステップは、前記命令の実行を、所与の実行段階に達した前記命令と関連した前記ハザード表示フラグと実質的に類似したハザード表示フラグを含む前記予測テーブルの前記第2のエントリと関連した少なくとも1つのストア命令に依存させる、マーク付けするステップをさらに含み、
前記命令が前記第2のエントリと関連付けられる場合、前記命令はストア命令である、請求項1に記載の方法。
【請求項15】
前記命令と関連した前記ハザード表示フラグは、前記命令が以前に転送不能ロード・ヒット・ストアハザードに遭遇したことを示し、
前記マーク付けするステップは、前記命令の実行を、ストアが転送可能である段階に達した前記命令と関連したハザード表示フラグと実質的に類似した前記ハザード表示フラグを含む前記予測テーブルのエントリと関連した全てのストア命令に依存させる、
請求項14に記載の方法。
【請求項16】
前記命令と関連した前記ハザード表示フラグは、前記命令が以前に持続的転送不能ロード・ヒット・ストアハザードに遭遇したことを示し、
前記少なくとも1つのストア命令と関連した前記ハザード表示フラグは、前記少なくとも1つのストア命令が以前に持続的転送不能ロード・ヒット・ストアハザードに遭遇したことを示す、
請求項14に記載の方法。
【請求項17】
前記命令と関連した前記ハザード表示フラグは、前記命令が以前にストア・ヒット・ロードハザードに遭遇したことを示し、
前記少なくとも1つのストア命令と関連した前記ハザード表示フラグは、前記少なくとも1つのストア命令が以前にストア・ヒット・ロードハザードに遭遇したことを示す、
請求項14に記載の方法。
【請求項18】
前記マーク付けするステップに基づいて、前記命令と関連した前記ハザード表示フラグと実質的に類似した前記ハザード表示フラグを含む前記予測テーブルのエントリと関連した全てのストア命令が、そのアドレス計算を実行し、そのデータをストアキュー内の対応するエントリ内に書き込むまで、前記ロード命令の前記実行を遅延させるステップをさらに含む、請求項14に記載の方法。
【請求項19】
前記少なくとも1つのストア命令は、前記命令と関連した前記ハザード表示フラグと実質的に類似した前記ハザード表示フラグを含む最新のストア命令であり、
前記マーク付けするステップに基づいて、前記少なくとも1つのストア命令がL1キャッシュ・ライトバックを実行するまで、前記命令の前記実行を遅延させることをさらに含む、請求項14に記載の方法。
【請求項20】
前記方法の請求項のいずれかに記載の前記方法の全ての前記ステップを実行するように適合された手段を含むシステム。
【請求項21】
コンピュータプログラムであって、前記コンピュータプログラムがコンピュータシステム上で実行される場合に、前記方法の請求項のいずれかに記載の前記方法の全ての前記ステップを実行するための命令を含むコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、マイクロプロセッサに関し、より具体的には、アウトオブオーダー方式(out-of-order)で実行されるロード(load)及びストア(store)動作の管理に関する。
【背景技術】
【0002】
機械命令をアウトオブオーダー方式で発行し、実行することができるマイクロプロセッサは、一般に、ロードがストアの前に実行されることを可能にする。この特徴は、ロードアドレス及びストア・アドレスの両方が同じ物理アドレスをもたないことを条件として、大きな性能の利点を可能にする。典型的なプログラムにおいては、ロードはストアより先に進み、それらの物理アドレスが合致する頻度は低い。しかしながら、この書き込み違反(store violation)状態の発見は、典型的には、命令実行パイプラインの終わりの方の段階であるので、回復の不利益は相当に厳しいものとなり得る。例えば、回復プロセスは、典型的には、違反を引き起こしたロード命令、及びロード命令以降のプログラム順における全てのより新しい命令を無効にすること、次いでロード命令を再発行することを要する。ストア比較ハザードハザード(store-compare hazard)を管理するための従来のメカニズムは、一般に、これらのハザードをあまり有効に管理するものではない。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】「z/Architecture Principles of Operation」、SA22−7832−07、英語版、International Business Machines社、2009年2月発行
【発明の概要】
【発明が解決しようとする課題】
【0004】
アウトオブオーダー方式で実行されるロード及びストア動作を管理するための方法及び情報処理システムを提供する。
【課題を解決するための手段】
【0005】
一実施形態において、アウトオブオーダー方式で実行されるロード及びストア動作を管理する方法が開示される。この方法は、ロード命令及びストア命令のうちの少なくとも1つを実行することを含む。この実行に基づいて、オペランド・ストア比較ハザードが発生したという判断がなされる。この判断に基づいて、オペランド・ストア比較ハザード予測テーブル内にエントリが作成される。このエントリは、少なくとも、実行された命令の命令アドレスと、命令に関連付けられたハザード表示フラグ(ビットのような)とを含む。ハザード表示フラグは、命令がオペランド・ストア比較ハザードに遭遇したことを示す。
【0006】
別の実施形態において、アウトオブオーダー方式で実行されるロード及びストア動作を管理する方法が開示される。この方法は、命令をフェッチすることを含む。命令は、ロード命令及びストア命令のうちの1つである。命令はデコードされる。
【0007】
デコードに応答して、命令の命令アドレスについてオペランド・ストア比較ハザード予測テーブルに問い合わせする。オペランド・ストア比較ハザード予測テーブルは、ロード命令に関する第1のエントリと、ストア命令に関する第2のエントリとを含む。第1及び第2のエントリは互いに独立している。第1及び第2のエントリは、それぞれロード命令及びストア命令が以前にオペランド・ストア比較ハザードに遭遇したことを示す。第1及び第2のエントリは、少なくとも、それぞれロード命令及びストア命令の1つの命令アドレスと、オペランド・ストア比較ハザードに関連付けられたハザード表示フラグとを含む。予測テーブルに問い合わせすることに応答して、命令が、オペランド・ストア比較ハザード予測テーブル内の第1及び第2のエントリの1つに関連付けられているという判断がなされる。この判断に基づいて、命令に関連付けられた第1及び第2のエントリのうちの1つの中に含まれるハザード表示フラグが識別される。命令が第1のエントリに関連付けられるとき、命令はロード命令である。識別されたハザード表示フラグに基づいて、命令をマーク付けする。このマーク付けは、命令の実行を、所与の実行段階に達した命令に関連付けられたハザード表示フラグと実質的に類似したハザード表示フラグを含む予測テーブルのエントリと関連した少なくとも1つのストア命令に依存させる。命令が第2のエントリに関連付けられるとき、この命令はストア命令である。
【0008】
さらに別の実施形態において、アウトオブオーダー方式で実行されるロード及びストア動作を管理するための情報処理システムが開示される。この情報処理システムは、メモリと、メモリに通信可能に結合されたプロセッサとを含む。プロセッサは、ロード命令及びストア命令のうちの少なくとも1つを実行することを含む方法を実行するように構成される。この実行に基づいて、オペランド・ストア比較ハザードに遭遇したという判断がなされる。この判断に基づいて、オペランド・ストア比較ハザード予測テーブル内にエントリが作成される。エントリは、少なくとも、実行された命令の命令アドレスと、命令に関連付けられたハザード表示フラグ(ビットのような)とを含む。ハザード表示フラグは、命令がオペランド・ストア比較ハザードに遭遇したことを示す。
【0009】
同様の参照番号が、個々の図面を通じて同一の又は機能的に類似した要素を指しており、以下の詳細な説明と共に本明細書内に組み込まれて、本明細書の一部を形成する添付図面は、種々の実施形態をさらに示し、本発明に従った種々の原理及び全ての利点を説明するのに役立つ。
【図面の簡単な説明】
【0010】
図1】本発明の一実施形態による動作環境の一例を示す。
図2】本発明の一実施形態によるロードキュー・エントリの一例を示す。
図3】本発明の一実施形態によるストアキュー・エントリの一例を示す。
図4】本発明の一実施形態によるオペランド・ストア比較ハザード予測テーブルの一例を示す。
図5】本発明の種々の実施形態による、オペランド・ストア比較ハザード予測テーブル内のエントリを作成する種々の例を示す動作フロー図である。
図6】本発明の種々の実施形態による、オペランド・ストア比較ハザード予測テーブル内のエントリを作成する種々の例を示す動作フロー図である。
図7】本発明の種々の実施形態による、オペランド・ストア比較ハザード予測テーブル内のエントリを作成する種々の例を示す動作フロー図である。
図8】本発明の種々の実施形態による、オペランド・ストア比較ハザードを予測し、回避する一例を示す動作フロー図である。
図9】本発明の一実施形態による情報処理システムの一例を示すブロック図である。
【発明を実施するための形態】
【0011】
必要に応じて、本発明の詳細な実施形態を本明細書で開示するが、開示される実施形態は、種々の形態で具体化することができる本発明の例にすぎないことを理解すべきである。従って、本明細書で開示される特定の構造上及び機能上の詳細は、限定として解釈されるべきではなく、単に特許請求の範囲の基礎として、及び、事実上あらゆる適切に詳述される構造及び機能において本発明を様々に用いることを当業者に教示するための代表的な基礎として解釈されるべきである。さらに、本明細書で用いられる用語及び語句は、限定を意図するものではなく、寧ろ、本発明の分かりやすい説明を提供することを意図するものである。
【0012】
本明細書で用いられる「1つの(a)」又は「1つの(an)」という用語は、1つ以上として定義される。本明細書で用いられる「複数の(plurality)」という用語は、2つ以上として定義される。本明細書で用いられる「別の(another)」という用語は、少なくとも第2の又はそれ以上として定義される。本明細書で用いられる「含む(including)」及び「有する(having)」という用語は、備える(comprising)(すなわち、開放的語法(open language))として定義される。本明細書で用いられる「結合される(coupled)」という用語は、必ずしも直接及び機械的にではなく、接続されたものとして定義される。特に断らない限り、複数形及び単数形は同じである。
【0013】
概要
ロード命令及びストア命令をアウトオブオーダー方式で実行するマイクロプロセッサにおいて、依存しているロードとストアの間の並べ替え(reordering)が原因で、3つのオペランド・ストア比較ハザード(ストア・ヒット・ロード(store-hit-load)、転送不能ロード・ヒットストア(non-forwardableload-hit store)、及び持続的転送不能ロード・ヒットストア(persistentnon-forwardable load-hit store))が発生することがある。例えば、アドレスAに対するストアに続いてアドレスAに対するロードが行われると仮定する。1つの状況においては、ロードは、ストアの前に実行することができる、即ち、ストアキュー(Store Queue、STQ)は、ストア・アドレス情報を含まない。従って、ロードが実行されるとき、ストアキューは競合を示さない。ひとたびロードが実行を終了すると、ストアが実行され、ロードキュー内の既に終了したロードに対する競合を検出し、パイプラインをフラッシュして、ロード及びあらゆる後続の命令を停止させる。これは、(既に以前推論的に実行されたロード及び全ての後続の命令を)再実行するのに大量の作業が必要であるため、非常に費用のかかる動作である。上記の状況は、ストア・ヒット・ロード(SHL)と呼ばれる。
【0014】
別の状況においては、ストアはそのアドレス計算を実行するが、例えばデータ生成命令が長い待ち時間を有する(例えば、分割する)ために、ストアに関するデータが遅延される。次いで、ストア・データがストアキュー(STQ)に書き込まれる前にロードが実行される。ロードは、それがストアに依存していることを検出するが、データが入手可能でないので、ストア・データ転送(store-data-forwarding)を実行することができない。従って、ロードは、拒絶され、後でストア・データが入手可能になった後に再試行する必要がある。この状況は、転送不能ロード・ヒット・ストア(nf−LHS)と呼ばれる。
【0015】
さらに別の状況においては、上述したnf−LHSの状況に類似して、特定のストア命令(例えば、これらがライン交差している場合、又は長さが8バイトを上回る場合)、一般に、(特定のストアキュー(STQ)設計毎に)転送できないことがある。この状況において、ロードは、ストア・データが既にストアキュー(STQ)内に書き込まれているとしても、ストアがL1キャッシュにライトバックされる(write back、書き戻される)まで、何度も繰り返して再循環させる必要がある。この状況は、「持続的nf−LHS」と呼ばれる。
【0016】
アウトオブオーダー処理を管理するための従来のメカニズムは、一般に、上述した3つのハザードを有効に処理するものではない。例えば、幾つかの従来のメカニズムは、ロードを全ての先行するストア命令に依存させることによって、命令レベル並列処理(Instruction-Level-Parallelism、ILP)を制限する。他の従来のメカニズムは、一般に、ロード命令が複数のストア命令に依存しており、これらの複数のストア命令がロード命令に通じる異なる分岐パス上にあり得る、一般的な場合を処理することができない。
【0017】
しかしながら、本発明の種々の実施形態の1つの利点は、上述した3つのハザードが有効に回避されることである。少なくとも1つの実施形態において、どのロード及びストアが依存性を有するか、並びに、これらの依存性のタイプ(例えば、e−ビット又はw−ビット依存性)を予測する予測テーブルが作成される。次いで、命令のデコード後、e−ビットロードは、全ての先行するe−ビット・ストアに依存させられ、命令発行論理により、あたかも正規のレジスタ依存性であるかのように処理される。これにより、全てのe−ビット・ストアがそのアドレス計算を実行し、そのデータをストアキュー(STQ)に書き込むまで、e−ビットロード命令の実行が有効に遅延される。このことにより、事実上、SHL及びnf−LHSハザードが取り除かれることになる。w−ビット依存性に関して、ロードは、w−ビット・ストアとして予測された最後のストアのL1キャッシュ・ライトバックに依存させられる。このことは、持続的nf−LHSハザードを有効に防止する。
【0018】
動作環境
図1は、本発明の1つ又は複数の実施形態による、1つ又は複数の処理命令及びデータに適用可能な動作環境100の一例を示すブロック図である。プロセッサ101は、種々の実行ユニット、レジスタ、バッファ、メモリ、及び全て集積回路によって形成された他の機能ユニットを含む、スーパースカラー・プロセッサのような単一の集積回路プロセッサを含む。一実施形態において、プロセッサ101は、命令をアウトオブオーダー方式で発行し、実行することができる。
【0019】
一実施形態において、プロセッサ101は、命令フェッチ・ユニット(IFU)102と、命令デコード・ユニット(IDU)104と、命令発行ユニット(ISU)106と、ロード/ストア・ユニット(LSU)108と、オペランドアドレス生成ユニット110と、固定小数点ユニット112(又は、いずれかの他の実行ユニット)と、種々の他の実行ユニット、レジスタ、バッファ、メモリ、及び他の機能ユニットのような他のコンポーネント114とを含む。一実施形態において、命令フェッチ・ユニット(IFU)102は、オペランド・ストア比較(operand-store-compare、OSC)予測テーブル116を含む。OSC予測テーブル116は、以下に詳述される。
【0020】
この実施形態において、命令発行ユニット106は、発行キュー118を含む。この実施形態において、ロード/ストア・ユニット(LSU)108は、ロードキュー(LDQ)120と、ストアキュー(STQ)122と、L1キャッシュ124とを含む。ロードキュー(LDQ)120及びストアキュー(STQ)122の各々は、それぞれ、未処理のロード命令及びストア命令に関連付けられた付加的な情報を追跡するエントリ126、エントリ128をそれぞれ含む。本発明の種々の実施形態は、図1に示されるようなプロセッサ101の構成に限定されるものではないことに留意すべきである。本発明の実施形態は、図1に示される例とは異なり得る種々のアーキテクチャに適用可能である。
【0021】
一般に、命令フェッチ・ユニット(IFU)102は、L1キャッシュ124の一部とすることができる、Iキャッシュ内にストアされた命令コードをフェッチする。これらのフェッチされた命令コードは、命令デコード・ユニット(IDU)104によって命令処理データにデコードされる。ひとたびデコードされると、命令はディスパッチされ、適切な発行キュー118内に一時的に入れられる。命令は、それらの全ての必要なオペランドが入手可能になるまで、発行キュー118内に保持される。発行キュー118から、命令を、実行のために、プロセッサ100の実行ユニット、例えばロード/ストア・ユニット(LSU)108、固定小数点ユニット(FXU)112等などに日和見的に(opportunistically)発行することができる。換言すれば、命令は、アウトオブオーダー方式で発行することができる。しかしながら、命令のいずれかを再発行する必要がある場合に備えて、これらの命令は、命令の実行が完了し、もしあれば、結果データがライトバックされるまで、発行キュー118内に保持される。
【0022】
実行ユニット108、112の1つの中での実行中、命令は、実行ユニットに結合されたレジスタファイル内の1つ又は複数の設計済み(architected)及び/又はリネーム・レジスタから、もしあれば、オペランドを受け取る。実行ユニットが1つの命令の実行を終えた後、実行ユニットはその結果を、命令で定められるように指定された宛先に書き込み、発行キューからその命令を取り除き、次いで、命令の完了をプログラム順にスケジュールすることができる。オペランドアドレス生成ユニット110は、ロード命令及びストア命令に関するオペランドアドレス情報を生成し、これらのアドレスをそれぞれのロードキュー(LDQ)及びストアキュー(STQ)122に書き込む。固定小数点ユニット(FXU)112は、データ値をストアキュー(STQ)122に書き込む。
【0023】
上述のように、ロード/ストア・ユニット(LSU)108は、命令発行ユニット(ISU)106からロード命令及びストア命令を受け取り、そのロード命令及びストア命令を実行する。一般に、各々のロード命令は、必要とされるデータのアドレスを指定するアドレス情報を含む。一実施形態において、ロード/ストア・ユニット(LSU)108は、ロード命令及びストア命令のアウトオブオーダー実行をサポートし、これにより高レベルの性能を達成することができる。一実施形態において、ロード/ストア・ユニット(LSU)108は、パイプライン型である。つまり、ロード/ストア・ユニット(LSU)108は、順に実行される一組の順序付けられたパイプライン・ステージを介して、ロード命令及びストア命令を実行する。
【0024】
OSCハザード管理
上述のように、3つのタイプのハザード(ストア・ヒット・ロード、転送不能ロード・ヒットストア、及び持続的転送不能ロード・ヒットストア)は、ロード命令及びストア命令をアウトオブオーダー方式で実行するプロセッサ内で発生し得る。従って、図1に関して上述した一般的な処理メカニズムに加えて、以下の実施形態の1つ又は複数をプロセッサ100内で実施し、これらのOSCハザードを予測し、回避することもできる。
【0025】
一般に、あらゆるロードにはロードキュー(LDQ)内のエントリが割り当てられ、このエントリは、ロードが実行され、完了するまで各々のロードのアドレスを保存する。あらゆるストアにはストアキュー(STQ)122内のエントリが割り当てられ、同様にこのエントリは、ストアが完了し、データをL1キャッシュ124に書き込むまで、ストア・アドレス計算の実行から、ストア・アドレスを保存する。しかしながら、検出されたハザードのタイプに基づいて、ロードキュー(LDQ)エントリ及びストアキュー(STQ)エントリは、OSCハザードを予測し、回避するための付加的な情報を含むこともできる。
【0026】
例えば、一実施形態において、ロード/ストア・ユニット(LSU)108がロード命令を実行し、このロードをストアキュー(STQ)122内の対応するエントリと比較する。ロード命令は、ストア・データ転送を実行することができないと判断する。例えば、ストア・データがSTQに書き込まれる前にロードが実行される(nf−LHS)、又はデータが入手可能なときでさえ、ストア・データ転送が許可されない(持続的nf−LHS)。次に、ロード命令がnf−LHSハザードを検出した場合、ロード命令は、これが比較したストアキュー(STQ)エントリ内に、「e−フラグ」(例えば、実行フラグ)のようなOSCハザード表示ビットを設定する。或いは、ロード命令が持続的nf−LHSハザードを検出した場合、ロード命令は同様に、これが比較したストアキュー(STQ)エントリ内に、「w−フラグ」(例えば、書き込みフラグ)のようなOSCハザード表示ビットを設定する。ロード命令はまた、ロードキュー(LDQ)のそれ自体のエントリ内に、e−フラグ又はw−フラグなどの同じOSCハザード表示ビットを設定する。
【0027】
実行されたストア命令がSHLハザードを検出し、ロードキュー(LDQ)エントリに対してSHLフラッシュを実行すると、ストア命令は、それ自体のストアキュー(STQ)エントリ内に「e−フラグ」のようなOSCハザード表示ビットを設定し、命令が比較する(最も古い)ロードキュー(LDQ)エントリ内に、「e−フラグ」のようなOSCハザード表示ビットを設定する。結果として生じるフラッシュのためにこのロードキュー(LDQ)エントリは無効にされるが、「e−フラグ」はロードキュー(LDQ)内に保持されることに留意すべきである。プロセッサのパイプラインがフラッシュされた命令の再フェッチ及び再実行を開始するとき、同じロードが、今やフラッシュ前から設定された「e−フラグ」を有する同じロードキュー(LDQ)エントリに割り当てられる。
【0028】
図2及び図3はそれぞれ、本発明の一実施形態による、ロードキュー(LDQ)エントリ226及びストアキュー(STQ)エントリ328の一例を示す。図2に見られるように、オペランドアドレス情報204、有効ビット情報206、及び他の一般情報210などの一般情報に加えて、ロードキュー(LDQ)120内のエントリ226はまた、1つ又は複数のOSCハザード表示ビット208も含む。上述のように、このOSCハザード表示ビット208は、ロード命令がnf−LHSハザードに遭遇したのか、又は持続的nf−LHSハザードに遭遇したのかに応じて、e−フラグ又はw−フラグとすることができる。上述のように、このOSCハザード表示ビット208は、ストア命令によって設定することもできる。他のタイプのフラグ等を用いて、ロード命令がnf−LHSハザード又は持続的nf−LHSハザードに遭遇したことを示すこともできることに留意すべきである。
【0029】
図3に見られるように、オペランドアドレス情報304、有効ビット情報306、データ値情報308、及び他の一般情報312のような一般情報に加えて、ストアキュー(STQ)122内のエントリ328は、1つ又は複数のOSCハザード表示ビット310も含む。上述のように、このOSCハザード表示ビット310は、ロード命令がnf−LHSハザードに遭遇したのか、又は持続的nf−LHSハザードに遭遇したのかに応じて、e−フラグ又はw−フラグとすることができる。また、上述のように、このOSCハザード表示ビット310は、ストア命令がSHLハザードに遭遇した場合にe−フラグとすることができる。
【0030】
他のタイプのフラグ等を用いて、ロード命令がnf−LHSハザード又は持続的nf−LHSハザードに遭遇したこと、及び/又はストア命令がSHLハザードに遭遇したことを示すことができることに留意すべきである。また、ロード命令又はストア命令は、それぞれのキューのエントリ内に設定したのと同じビットを他のキューのエントリ内に設定するので、キュー120、122の1つの中のOSCハザード表示ビット208、310は、他のキュー120、122内の少なくとも1つのOSCハザード表示ビット208、310と合致する。また、OSCハザードを予測し、回避するために、OSCハザード表示ビット情報208、310をどのように使用するかについての考察が以下に与えられる。
【0031】
ひとたびロード命令が完了すると、ロード命令は、ロードキュー(LDQ)内にe−フラグ又はw−フラグのようなOSCハザード表示ビット情報を有するかどうかを判断する。OSCハザード表示ビット情報を有する場合には、ロード命令はこれを命令フェッチ・ユニット(IFU)102に示す。次に、一実施形態において、命令フェッチ・ユニット(IFU)102は、この特定のロード命令に関するエントリをOSC予測テーブル116内に生成する。OSC予測テーブルは、ロードの命令アドレスに基づいてエントリを作成し、このロードに関する1つ又は複数のフラグを記憶する。例えば、OSC予測テーブル内のエントリは、ロードがe−フラグ及び/又はw−フラグに関連付けられているかどうかを示し、ここで、ロードが複数のストアキューに対して比較する場合、ロードは両方のフラグを有することができる。
【0032】
ストア命令が完了し、L1キャッシュ124にライトバックされると、ストア命令は、該ストア命令がストアキュー(STQ)122内に、e−フラグ又はw−フラグのようなOSCハザード表示ビット情報を有するかどうかを判断する。OSCハザード表示ビット情報を有する場合、ストア命令は、これを命令フェッチ・ユニット(IFU)102に示す。次に、命令フェッチ・ユニット(IFU)102は、OSC予測テーブル116内に、ストア命令の命令アドレスと、ストアの命令アドレスの下の1つ又は複数のフラグとを含む、この特定のストア命令に関するエントリを生成する。また、ストア命令がL1キャッシュ124にライトバックされるとき、ストアキュー(STQ)122は、命令発行ユニット(ISU)106に、ストアキュー(STQ)122内の所与のストア命令のストアキュー(STQ)エントリ番号(スタグ)を通知する。
【0033】
図4は、OSC予測テーブル116内のロード命令エントリ及びストア命令エントリの一例を示す。特定的には、図4は、ロード命令エントリ402が、命令の命令アドレス404と、エントリ有効ビット406と、ロード「e」ビット408及びロード「w」ビット410のような1つ又は複数のハザード表示ビットとを含むことを示す。図4は、ストア命令エントリ403は、命令の命令アドレス412と、エントリ有効ビット414と、ストア「e」ビット416及びストア「w」ビット418のような1つ又は複数のハザード表示ビットとを含むことを示す。上述のように、ロード命令及びストアキュー(STQ)122から得られた情報に基づいて、OSCハザード表示ビット408、410、416、418が設定される。OSC予測テーブル116内の各々のロード及びストア・エントリは、互いに独立して作成される。換言すれば、OSC予測テーブル116内のロード・エントリは、OSC予測テーブル116内のストア・エントリ又はそれと関連した他のいずれのテーブルも参照せず、かつ、それらによっても参照されず、さらに言えば逆も又同様である。
【0034】
例えば、図4に示されるように、ロードキュー(LDQ)エントリ内に「e」依存性ビット(dependencybit)を設定し、対応するストア命令のストアキュー(STQ)エントリ内に「e」ビットを設定したロード命令は、これを命令フェッチ・ユニット(IFU)102に通知し、次に、予測テーブル116内にロード命令及びストア命令の各々についてのエントリ402、403を作成する。この例においては、ロード「e」ビット408がロード命令エントリ402内に設定され、ストア「e」ビット416がストア命令エントリ403内に設定される。種々の技術を用いて、命令アドレスに基づいた予測テーブルを生成できることにも留意すべきである。例えば、オーバーフローに向けられた技術(最長時間未使用技術)、読み出し/書き込み競合(キューイング)、及び予測テーブルに対する類似の技術を用いることができる。
【0035】
ひとたび予測テーブル116がポピュレートされる(populate)と、命令が命令フェッチ・ユニット(IFU)102によりフェッチされ、命令フェッチ・ユニット(IFU)102は、命令デコード・ユニット(IDU)104によりデコードするためにパイプライン内に送られる度に、並行して、OSC予測テーブル116に問い合わせし、この情報を命令デコード・ユニット(IDU)104に送る。この問い合わせは、所与のフェッチされた命令が「e」又は「w」ビットを含むロード及び/又はストアとして認識されるかどうかを判断するために、命令デコード・ユニット(IDU)104により用いられる。例えば、命令フェッチ・ユニット(IFU)102は、命令の命令アドレスを用いて予測テーブル116に問い合わせし、対応する命令アドレスを有するエントリを識別する。OSC予測テーブル116から得られた情報は、命令デコード・ユニット(IDU)104から命令発行ユニット(ISU)106に渡される。
【0036】
命令発行ユニット(ISU)106は、この依存性情報を用いて、以下のことを実行する。命令がストア・e−ビットを含む場合、命令発行ユニット(ISU)106は、その命令をストア・e−ビット命令として記憶する。命令がストア・w−ビットを有する場合、命令発行ユニット(ISU)106は、その命令に対して割り当てられたストアキュー(STQ)エントリ番号(「スタグ(stag)」)を記憶する。一実施形態において、命令発行ユニット(ISU)106は、w−スタグと呼ばれる、最も新しいそうしたスタグを記憶する。命令がロード・e−ビットを有する場合、命令発行ユニット(ISU)106は、この命令を、ストア・e−ビットでマーク付けされたあらゆる先行命令に依存するものとしてマーク付けする。この依存性は、所与の汎用レジスタのライターとリーダーの間で生成される依存性とよく似ている。命令発行ユニット(ISU)106は、ロード命令が、ストア命令が正常に実行され、ストア・アドレス及びデータがストアキュー(STQ)エントリ内に書き込まれるまで実行されないことを保証する。その時点までロードを遅延させることにより、命令発行ユニット(ISU)106は、ロードがストア転送済みデータをストアキュー(STQ)エントリから取得することができ、従って、SHLハザード又はnf−LHSハザードが回避されることを保証する。
【0037】
命令がロード・w−ビットを有する場合、ロード(即ち、w−スタグ)前の最後のストア・w−ビット・ストアのスタグがL1キャッシュ124にライトバックされるまで、命令発行ユニット(ISU)106がロードの実行を許容しないように、ロードがマーク付けされる(上述のように、ストアキュー(STQ)122は、いつライトバックが行われるかを、命令発行ユニット(ISU)106に通知する)。ストアがL1キャッシュ124にライトバックするまでロードを遅延させることにより、持続的nf−LHSハザードが防止される。事実上、命令発行ユニット(ISU)106によって実行される上記のプロセスは、全てのe−ビットロードを、全ての先行するe−ビット・ストアの実行に依存させ、全てのw−ビットロードを全ての先行するw−ビット・ストアのライトバックに依存させる。
【0038】
例えば分岐の誤りのために、命令発行ユニット(ISU)106内の最後にw−スタグを設定したストア命令がフラッシュされることもあることに留意すべきである。しかしながら、依然としてw−スタグを追跡することができる。例えば、一実施形態において、最新のフラッシュされていないw−ビット・ストアが、保存された最新のw−ビット・ストアとして指定される。この選択肢は、相当な追跡費用を必要とし得る。別の実施形態においては、最新のフラッシュされていないスタグが、保存された最新のw−ビット・ストアとなる。このストアを、実際に、w−ビット・ストアとしてマーク付けする必要はない。この選択肢は、あまり追跡費用を必要とせず、そのストアがw−ビット予測を有していなかった場合でも、ストアをw−ストアとして処理する。このことは、僅かな性能の低下をもたらす。さらに別の実施形態においては、保存された最新のw−ビット・ストアが無効にされる。保存された最新のw−ビット・ストアが依然として無効状態にある間にディスパッチされたw−ビットロードは、スタグ依存性をマーク付けしない。
【0039】
ロードでもストアでもある命令に対して、これらの命令が、それ自体へのw−ビット依存性をマーク付けしないことを確実にするように、ステップが取られる。これは特に、命令が複数の部分で構成される場合に問題となる。一実施形態においては、w−ビットをマーク付けしたストア部分が常にw−ビットをマーク付けしたロード部分の後にくるのを確実にすることによって、或いは、命令の全ての部分がディスパッチされるまで、保存された最新のw−ビット・ストアが更新されないことを確実にすることによって、この依存性の防止を達成することができる。一般に、それらの部分が互いに対して単にインオーダー方式に発行されるので、複数の部分からなる命令内でe−ビット依存性をマーク付けするのが安全である。しかしながら、必要に応じて、類似の方法を用いてこの依存性を防止することが可能である。
【0040】
一実施形態において、e−ビットでマーク付けされたストアのベクトルが保持され(他のレジスタ依存性のような追跡メカニズムが可能である、発行キュー・エントリ毎に1ビット)、e−ビットでマーク付けされたロードは、ベクトル内の対応するビットが設定される全てのより古い有効な発行キュー・エントリに依存させられる。ベクトル内のビットは、命令がそれらにディスパッチされるときに書き込まれ、命令がe−ビット・ストアである場合に設定状態におかれ、他の場合には未設定状態におかれる。
【0041】
代替的に、ロード及びストアは、e及びwビットのグループで追跡することができる(例えば、5個のe−ビットe1,...,e5が存在し、e1−ストアとe1−ロードだけが対にされる、e2−ストアとe2−ロードが対にされるなど)。ハザード時には、ロードキュー(LDQ)及びストアキュー(STQ)内に設定するように、無作為のe−ビット(例えば、e2)を選択することができる。この設計は、2つの態様を別個に処理するが、ストアとしての依存性及びロードとしての依存性の両方を強制することによって、特定の命令がロードでもあり、ストアでもある(例えば、システムz内のCS命令)上述した方法に拡張することができる。
【0042】
示されるように、本発明の上記の実施形態は、どのロード及びストアが依存性を有するか、及びこれらの依存性のタイプ(例えば、e−ビット又はw−ビット依存性)を予測する予測テーブルが作成されるという点で有利である。次に、命令のデコード後、e−ビットロードは、全ての先行するe−ビット・ストアに依存させられ、命令発行論理により、あたかも正規のレジスタ依存性であるかのように処理される。これは、全てのe−ビット・ストアがそのアドレス計算を実行し、そのデータをSTQに書き込むまで、e−ビットロード命令の実行を有効に遅延させる。このことにより、事実上、SHL及びnf−LHSハザードが取り除かれる。w−ビット依存性に関して、ロードは、w−ビット・ストアとして予測された最後のストアのL1キャッシュ・ライトバックに依存させられる。このことは、持続的nf−LHSハザードを有効に防止する。各ロード・エントリ及び各ストア・エントリは、OSC予測テーブル内で互いに独立している。換言すれば、ロード命令エントリはストア命令エントリを参照せず、逆もまた同様である。このことは、依存性が複数のストア命令及び複数のロード命令の間に生成されることを許す。
【0043】
さらに、一実施形態によると、ロードが設定されたe−ビット及びw−ビットの両方を有する場合、ロードは、全てのe−ビット・ストア及び全てのw−ビット・ストアがOSC予測テーブル内に示されるまで遅延される。つまり、ロードは、全てのe−ビット・ストアがそのアドレス計算を実行し、そのデータをストアキュー(STQ)内に書き込むまで遅延され、また、最後のw−ビット・ストアのL1キャッシュ・ライトバックに依存させられる。
【0044】
同様に、一例によると、ロードがOSCテーブル内に設定されたe−ビットを有し、ストアがOSCテーブル内に設定されたe−ビット及びw−ビットの両方を有する場合、ロードは、設定されたe−ビットを有するストアがそのアドレス計算を実行し、そのデータをストアキュー(STQ)内に書き込む(例えば、データが転送される)まで遅延される。ロードがOSCテーブル内に設定されたw−ビットを有し、ストアが設定されたe−ビット及びw−ビットの両方を有する場合、ロードは、設定されたw−ビットを有するストアがL1キャッシュのライトバックを実行するまで遅延される。最後に、ロードが設定されたe−ビット及び設定されたw−ビットの両方を有し、ストアが設定されたe−ビット及び設定されたw−ビットの両方を有する場合、w−ビットが優先する。設定されたw−ビットを有するロードは、設定されたw−ビットを有するストアの実行まで遅延され、これは、設定されたw−ビットを有するストアの最長遅延(L1キャッシュのライトバックに依存する)に対応する。
【0045】
一実施形態によると、1つ又は複数のロード及び1つ又は複数のストアが、1つの複合命令内に含まれることがある。このタイプの複合命令の種々の例は、次の非特許文献1に見出すことができる。つまり、1つの命令をロード及びストアと見なすことができる。同じ命令が、OSCテーブル内に1つ又は複数のロード・エントリ及び1つ又は複数のストア・エントリを作成することができる。これらのロード及びストアは、OSCテーブル内のそれぞれのe−ビット及びw−ビットによって追跡することができる。
【0046】
動作フロー図
図5は、OSCハザードを予測し、防止するためのOSC予測テーブル116内にエントリを生成する一例を示す動作フロー図である。図5の動作フロー図は、ステップ502で開始し、直ちにステップ504に進む。ステップ504において、関連したストア命令に先立って、ロード命令の実行を開始する。ステップ506において、ロード命令は、ストア命令が将来書き込む記憶場所からデータを取得する。ステップ508において、ロード命令の実行を終了する。ステップ510において、ストア命令の実行を開始する。ステップ512において、ストア命令は、ストア命令が現在書き込んでいる記憶場所からロード命令が以前にデータを取得していると判断する。
【0047】
ステップ514において、ストア命令は、SHLハザードに遭遇したことを判断する。次にステップ516において、ストア命令は、この命令(ストア命令)がOSCハザード状況の候補であることを示すように、e−フラグビットのようなフラグビットを設定する。このe−フラグビットは、ストア命令が比較する最も古いロードキュー(LDQ)エントリ内に設定される。ステップ518において、ストア命令は、ストアキュー(STQ)122内のストア命令に関連付けられたストアキュー(STQ)エントリ内にe−フラグビットを設定する。次にステップ520において、ストア命令は、ロード命令及びパイプラインからの全てのより新しいロード命令をフラッシュする。
【0048】
ステップ522において、ストア命令は、L1キャッシュ124にライトバックする。ステップ524において、ストア命令は、ストア命令がe−フラグ(又はロード命令によって設定されたようなw−フラグ)ビット・ペンディングを有することを、命令フェッチ・ユニット(IFU)102に通知する。ステップ526において、命令フェッチ・ユニット(IFU)102は、OSC予測テーブル116内に、ストア命令に関するエントリを生成する。このエントリは、ストア命令の命令アドレス、有効ビット、及びストア命令がe−フラグに関連付けられているという表示を含む。例えば、ビット又はフラグをエントリ内に設定し、命令がストア・e−ビットに関連付けられていることを示すことができる。ステップ527において、命令フェッチ・ユニット(IFU)102はまた、OSC予測テーブル116内に、ロード命令に関するエントリも生成する。例えば、ステップ520においてロードがSHLからフラッシュされた後、パイプラインが、以前と同じロードキュー(LDQ)エントリを用いるロードを再実行する。ロードが完了した後、ロードは、そのフラグ(例えば、e−ビット)をOSC予測テーブル116内に書き込む。このエントリは、ロード命令の命令アドレス、有効ビット、及びロード命令がe−フラグに関連付けられているという表示を含む。ストア・エントリ及びロード・エントリは互いに独立しており、決して互いに参照しない。ステップ528において、ストアキュー(STQ)122は、命令発行ユニット(ISU)106に、L1キャッシュ124にライトバックされたストア命令のストアキュー(STQ)エントリ番号(スタグ)を通知する。次に、ステップ530において、制御フローが終了する。
【0049】
図6は、OSCハザードを予測し、防止するためのOSC予測テーブル116内にエントリを生成する別の例を示す動作フロー図である。図6の動作フロー図は、ステップ602で開始し、直ちにステップ604に進む。ステップ604において、ストア命令がそのストア命令に関するアドレス計算を実行する。ステップ606において、ストア命令に関するデータが遅延される。ステップ608において、ストア・データがストアキュー(STQ)122に書き込まれる前に、ロード命令の実行を開始する。ステップ610において、ロード命令は、ロード命令がストア命令に依存しており、ストア・データ転送を実行できないと判断する。
【0050】
ステップ612において、ロード命令は、nf−LHS状況に遭遇したと判断する。ステップ614において、ロード命令は、ストア命令のストアキュー(STQ)エントリ内にe−フラグビットを設定する。ステップ616において、ロード命令は、対応するロードキュー(LDQ)エントリ内にe−フラグビットを設定する。ステップ618において、ロード命令が実行を終了する。ステップ620において、ロード命令は、ロード命令がロードキュー(LDQ)内にe−フラグビットを設定したという情報を命令フェッチ・ユニット(IFU)102に送る。ステップ622において、IFUが、OSCテーブル116内にロード命令に関するエントリを生成する。このエントリは、ロード命令の命令アドレス、有効ビット、及びロード命令がe−フラグビットに関連付けられているという表示を含む。例えば、命令がロード・e−ビットに関連付けられていることを示すビット又はフラグをエントリ内に設定することができる。ステップ623において、命令フェッチ・ユニット(IFU)102も同様に、OSC予測テーブル116内にストア命令に関するエントリを生成する。例えば、ストア命令がL1キャッシュ124にライトバックするとき(ステップ620の前又は後に起こり得る)、ストアキュー(STQ)内のフラグ(e−ビット)が命令フェッチ・ユニット(IFU)102に通信され、ストアに関するエントリがテーブル116内に作成される。このエントリは、ストア命令の命令アドレス、有効ビット、及びストア命令がe−フラグビットに関連付けられているという表示を含む。ロード及びストア・エントリは互いに独立しており、決して互いに参照しない。次に、ステップ624において、制御フローが終了する。
【0051】
図7は、OSCハザードを予測し、防止するためのOSC予測テーブル116内にエントリを生成するさらに別の例を示す動作フロー図である。図7の動作フロー図はステップ702で開始し、直ちにステップ704に進む。ステップ704において、ストア命令がそのアドレス計算を実行する。ステップ706において、ロード命令の実行を開始する。ステップ708において、ロード命令は、ロード命令がストア命令に依存しており、ストア・データ転送を実行できないと判断する。
【0052】
ステップ710において、ロード命令が持続的nf−LHS状況に遭遇したと判断する。ステップ712において、ロード命令は、ストア命令のストアキュー(STQ)エントリ内にw−フラグビットを設定する。ステップ714において、ロード命令は、対応するロードキュー(LDQ)エントリ内にw−フラグビットを設定する。ステップ716において、ロード命令が実行を終了する。ステップ718において、ロード命令は、ロード命令がロードキュー(LDQ)内にw−フラグビットを設定したことを命令フェッチ・ユニット(IFU)102に通知する。ステップ720において、IFUは、OSC予測テーブル116内にロード命令に関するエントリを生成する。このエントリは、ロード命令の命令アドレス、有効ビット、及びロード命令がw−フラグビットに関連付けられているという表示を含む。例えば、命令がロード・w−ビットに関連付けられていること示すビット又はフラグをエントリ内に設定することができる。ステップ721において、IFUは、OSC予測テーブル116内にストア命令に関するエントリを生成する。例えば、ストア命令がL1キャッシュ124にライトバックするとき(ステップ718の前又は後に起こり得る)、STQ内のフラグ(e−ビット)が命令フェッチ・ユニット(IFU)102に通信され、ストアに関するエントリがテーブル116内に作成される。このエントリは、ストア命令の命令アドレス、有効ビット、及びストア命令がw−フラグビットに関連付けられているという表示を含む。ロード及びストア・エントリは互いに独立しており、決して互いに参照しない。次に、ステップ722において、制御フローが終了する。
【0053】
図8は、OSCハザードを予測し、防止する一例を示す動作フロー図である。図8の動作フロー図はステップ802で開始し、直ちにステップ804に進む。ステップ804において、命令フェッチ・ユニット(IFU)102が命令をフェッチする。ステップ806において、命令フェッチ・ユニット(IFU)102は、並行して、命令の命令アドレスを用いてOSC予測テーブル116に問い合わせする。ステップ808において、命令フェッチ・ユニット(IFU)102は、命令が予測テーブル116内のエントリを含むかどうかを判断する。この判断の結果が否定である場合には、ステップ810において、通常の処理が行われる。次いでステップ812において、制御フローが終了する。判断の結果が肯定である場合、ステップ813において、命令フェッチ・ユニット(IFU)102は、命令、及びOSC予測テーブル116から取得された命令に関連付けられたOSCハザード情報を命令デコード・ユニット(IDU)104に送る。ステップ814において、命令デコード・ユニット(IDU)104が命令をデコードする。
【0054】
ステップ808における判断の結果が肯定である場合、ステップ816において、命令デコード・ユニット(IDU)104は、命令がストア・e−ビットを含む(例えば、命令がe−フラグビットを有するストアである)かどうかを判断する。判断の結果が肯定である場合、ステップ808において、命令発行ユニット(ISU)106は、ストア命令をストア・e−ビットとして記憶する。この命令が単一ビットしか含まない場合、次に制御フローはステップ804に戻る。しかしながら、命令が1つ又は複数のロード及び1つ又は複数のストアの両方を実行するために命令が複数のビットを含む場合、デコード・ユニット(IDU)104は、他のビットがロード「e」ビットである場合にはステップ826及び828を実行し、又は他のビットがロード「w」ビットである場合にはステップ832を実行する。
【0055】
ステップ816における判断の結果が否定である場合、ステップ820において、命令デコード・ユニット(IDU)104は、命令がストア・w−ビットを含む(例えば、命令がw−フラグビットを有するストアである)かどうかを判断する。判断の結果が肯定である場合、ステップ822において、命令発行ユニット(ISU)106は、ストア命令に割り当てられたストアキュー(STQ)エントリ番号(スタグ)を記憶する。次いで制御フローはステップ804に戻る。
【0056】
ステップ820の判断の結果が否定である場合、ステップ824において、命令デコード・ユニット(IDU)104は、命令がロード・e−ビットを含む(例えば、命令がe−フラグビットを有するロードである)かどうかを判断する。判断の結果が肯定である場合、ステップ826において、命令発行ユニット(ISU)106は、ストア・e−ビットでマーク付けされたあらゆる先行命令に依存するものとして、ロード命令をマーク付けする。ステップ828において、マーク付けされた結果として、ストアが成功裏に実行され、ストア・アドレス及びデータがそのストアキュー(STQ)エントリ内に書き込まれるまで、ロード命令を実行することができない。次いで制御フローはステップ804に戻る。
【0057】
ステップ824の判断が否定である場合、ステップ830において、命令は、w−フラグビットを有するロードであると判断される。ステップ832において、命令発行ユニット(ISU)106は、ロードの前の最後のストア・w−ビット・ストアのスタグ(即ち、w−スタグ)がL1キャッシュにライトバックするまで実行されないように、この命令をマーク付けする。次に制御フローはステップ804に戻る。
【0058】
情報処理システム
図9は、本発明の一実施形態による情報処理システム900の詳細な図を示すブロック図である。この情報処理システム900は、本発明の1つ又は複数の実施形態を実施するように適合された、適切に構成された処理システムに基づくものである。いずれかの適切に構成された処理システムを、本発明の実施形態による情報処理システム900として同様に用いることができる。
【0059】
情報処理システム900は、コンピュータ902を含む。コンピュータ902は、図1のプロセッサのようなプロセッサ101を有する。プロセッサ101は、図1に示されるように、OSC予測テーブル116を含む命令フェッチ・ユニット(IFU)102と、命令デコード・ユニット(IDU)104と、発行キュー118を含む命令発行ユニット(ISU)106と、ロードキュー(LDQ)、ストアキュー(STQ)122、及びL1キャッシュ124を含むロード/ストア・ユニット(LSU)108と、オペランドアドレス生成ユニット110と、固定小数点ユニット(FXU)112と、種々の他のコンポーネント114とを含む。
【0060】
プロセッサ101は、主メモリ906、マスストレージインタフェース908、及びネットワークアダプタハードウェア910に接続される。システムバス912がこれらのシステムコンポーネントを相互接続する。マスストレージインタフェース908は、データストレージ装置914のようなマスストレージ装置を接続するために用いられる。データストレージ装置の1つの特定のタイプは、CD/DVD916(これに限定されるものではないが)などのコンピュータ可読媒体又はストレージ製品にデータをストアし、これからデータを読み出すために用いることができる、CD/DVDドライブのような光ドライブである。別のタイプのストレージ装置は、例えばファイルシステムの動作をサポートするように構成されたデータストレージ装置である。
【0061】
一実施形態において、情報処理システム900は、従来の仮想アドレス指定メカニズムを用いて、プログラムが、あたかも、主メモリ906及びデータストレージ装置916のような複数のより小さいストレージ・エンティティにアクセスするのではなく、本明細書でコンピュータ・システム・メモリと呼ばれる、より大きい単一のストレージ・エンティティにアクセスするかのように動作することを可能にする。「コンピュータ・システム・メモリ」という用語は、本明細書において、情報処理システム900の仮想メモリ全体を総称的に指すように用いられる。
【0062】
コンピュータ902に関して1つだけのプロセッサ101が示されるが、複数のプロセッサを有するコンピュータ・システムを等しく有効に用いることもできる。本発明の種々の実施形態は、各々が、プロセッサ101からのオフロード処理のために用いられる完全にプログラムされた別個のマイクロプロセッサを含む、インタフェースをさらに組み込む。主メモリ内に含まれるオペレーティングシステム(図示せず)は、限定するものではないが、GNU/Linux、AIX、Solaris、及びHP−UXのような適切なマルチタスクオペレーティングシステムである。本発明の種々の実施形態は、いずれかの他の適切なオペレーティングシステムを用いることもできる。本発明の幾つかの実施形態は、オペレーティングシステム(図示せず)のコンポーネントの命令が、情報処理システム900内に配置されたいずれかのプロセッサ上で実行されるのを可能にする、オブジェクト指向フレームワークメカニズムのようなアーキテクチャを用いる。ネットワークアダプタハードウェア910は、1つ又は複数のネットワーク918へのインタフェースを与えるように用いられる。本発明の種々の実施形態は、今日のアナログ及び/又はデジタル技術を含む、又は将来のネットワーキングメカニズムを介する、いずれかのデータ通信接続と共に機能するように適合させることができる。
【0063】
本発明の例示的な実施形態を完全に機能的なコンピュータ・システムとの関連で説明したが、当業者であれば、実施形態は、例えば、CD916、CD−ROM、又は他の形態の記録可能媒体などのCD若しくはDVDを介して、或いは任意のタイプの電子伝送メカニズムを介して、プログラム製品として配布できることを認識するであろう。
【0064】
限定されない例
本発明の特定の実施形態を開示したが、当業者であれば、本発明の趣旨及び範囲から逸脱することなく、特定の実施形態に対する変更を行うことができることを理解するであろう。従って、本発明の範囲は、特定の実施形態に限定されず、添付の特許請求の範囲は、本発明の範囲内のいずれか又は全てのこのような用途、修正及び実施形態を包含することが意図される。
【0065】
本発明の種々の例示的な実施形態を、完全に機能的なコンピュータ・システムとの関連で説明したが、当業者であれば、種々の実施形態は、CD若しくはDVD、例えばCD916、CD ROM、又は他の形態の記録可能媒体を介して、又は任意の型の電子伝送メカニズムを介して、プログラム製品として配布することができることを認識するであろう。
【符号の説明】
【0066】
100:動作環境
101:プロセッサ
102:命令フェッチ・ユニット(IFU)
104:命令デコード・ユニット(IDU)
106:命令発行ユニット(ISU)
108:ロード/ストア・ユニット(LSU)
110:オペランドアドレス生成ユニット
112:固定小数点ユニット(FXU)
114:他のコンポーネント
116:オペランド・ストア比較(OSC)予測テーブル
118:発行キュー
120:ロードキュー(LDQ)
122:ストアキュー(STQ)
124:L1キャッシュ
126、128、226、328、402、403:エントリ
204、304:オペランドアドレス情報
206、306:有効ビット情報
208、310:OSCハザード表示ビット
210、312:他の一般情報
308:データ値情報
404、412:命令アドレス
406、414:入力有効ビット
408:ロード「e」ビット
410:ロード「w」ビット
416:ストア「e」ビット
418:ストア「w」ビット
900:情報処理システム
902:コンピュータ
906:主メモリ
908:マスストレージインタフェース
910:ネットワークアダプタハードウェア
912:システムバス
914:データストレージ
916:CD/DVD
918:ネットワーク
図1
図2
図3
図4
図5
図6
図7
図8
図9
【手続補正書】
【提出日】2015年7月23日
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
アウトオブオーダー方式で実行されるロード及びストア動作を管理する方法であって、
ロード命令及びストア命令のうちの少なくとも1つの命令実行を開始するステップと、
前記実行の開始に基づいて、オペランド・ストア比較ハザードに遭遇したことを判断するステップと、
前記判断に基づいて、オペランド・ストア比較ハザード予測テーブル内に、少なくとも、前記実行が開始された前記命令の命令アドレスと、前記実行が開始された前記命関連付けられたハザード表示フラグとを含むエントリを作成するステップであって、前記ハザード表示フラグは、前記オペランド・ストア比較ハザードのタイプを示し、前記実行が開始された前記命令が前記オペランド・ストア比較ハザードに遭遇したことを示す、前記作成するステップ
を含む、前記方法。
【請求項2】
前記実行を開始するステップは、
前記ロード命令の実行を開始するステップ、又は、
前記ストア命令の実行を開始するステップ
を含み、前記方法はさらに、
前記判断に基づいて、前記オペランド・ストア比較ハザード予測テーブル内に前記ロード命令及び前記ストア命令のうち実行が開始されなかったもう1つの命令の命令アドレスと、前記もう1つの命令関連付けられたハザード表示フラグとを含むエントリを作成するステップであって、前記もう1つの命令関連付けられた前記ハザード表示フラグは、前記実行が開始された前記命令関連付けられた前記ハザード表示フラグと合致しており、前記もう1つの命令関連付けられた前記ハザード表示フラグは、前記もう1つの命令が前記オペランド・ストア比較ハザードに遭遇したことを示す、前記作成するステップと
を含む、請求項1に記載の方法。
【請求項3】
前記実行を開始するステップは、
前記ストア命令の前に前記ロード命令実行を開始するステップと、
前記ロード命令が実行を終了した後、前記ストア命令実行を開始するステップと
を含み、
前記ロード命令は、前記ストア命令が後の書き込み動作を実行する記憶場所からデータセットを取得する、請求項1に記載の方法。
【請求項4】
前記ストア命令により、前記ロード命令が前記記憶場所から前記データセットを取得したと判断するステップと、
前記判断に応答して、前記ストア命令により、ストア・ヒット・ロードハザードに遭遇したと判断するステップと、
前記ストア・ヒット・ロードハザードに遭遇したと判断するステップに応答して、前記ストア命令により、前記ロード命令が前記記憶場所から前記データセットを取得したと判断したときに前記ストア命令が比較した最も古いロードキュー・エントリ内に、ハザード表示フラグを設定するステップであって、前記ハザード表示フラグは、前記ロード命令が前記ストア・ヒット・ロードハザード関連付けられることを示す、前記設定するステップと
をさらに含む、請求項3に記載の方法。
【請求項5】
前記ストア命令により、前記オペランド・ストア比較ハザード予測テーブルを含む命令フェッチ・ユニットに、前記ストア命令が前記ハザード表示フラグを設定したことを通知するステップであって、前記命令フェッチ・ユニットは、前記通知することに応答して前記エントリを生成する、前記通知するステップと、
前記ストア命令が前記ハザード表示フラグを設定するステップに応答して、ストアキューにより、命令発行ユニットに、前記ストア命令の前記ストアキュー内のストアキュー・エントリ番号を通知するステップと、
前記ロード命令により、前記オペランド・ストア比較ハザード予測テーブルを含む前記命令フェッチ・ユニットに、前記ストア命令が前記ハザード表示フラグを設定したことを通知するステップであって、前記命令フェッチ・ユニットは、前記通知することに応答して前記エントリを生成する、前記通知するステップと
のうちの少なくとも1つをさらに含む、請求項4に記載の方法。
【請求項6】
前記実行するステップは、
前記ロード命令の前に前記ストア命令実行を開始するステップであって、前記ストア命令関連付けられたデータセットが遅延される、前記実行を開始するステップと、
前記データセットが前記ストア命令によりストアキュー内に書き込まれる前に前記ロード命令実行を開始するステップと
をさらに含む、請求項1に記載の方法。
【請求項7】
前記データセットが前記ストア命令によりストアキュー内に書き込まれる前に実行されることに基づいて、前記ストア命令により、前記ロード命令が前記ストア命令に依存していると判断するステップと、
前記ロード命令が前記ストア命令に依存しているとの判断に基づいて、前記ロード命令により、ストア・データ転送を実行することができないと判断するステップと、
前記ストア・データ転送を実行することができないとの判断に基づいて、前記ロード命令により、前記ロード命令が転送不能ロード・ヒット・ストアハザードに遭遇したと判断するステップと
をさらに含む、請求項6に記載の方法。
【請求項8】
前記ロード命令が前記転送不能ロード・ヒット・ストアハザードに遭遇したとの判断に基づいて、前記ロード命令により、前記ストア命令関連付けられた前記ストアキュー内のストアキュー・エントリ内に、ハザード表示フラグを設定するステップであって、前記ハザード表示フラグは、前記ストア命令が前記転送不能ロード・ヒット・ストアハザード関連付けられることを示す、前記設定するステップと、
前記ロード命令が前記転送不能ロード・ヒット・ストアハザードに遭遇したとの判断に基づいて、前記ロード命令により、前記ロード命令関連付けられたロードキュー内のロードキュー・エントリ内に、ハザード表示フラグを設定するステップであって、前記ハザード表示フラグは、前記ロード命令が前記転送不能ロード・ヒット・ストアハザードに遭遇したことを示す、前記設定するステップと
をさらに含む、請求項7に記載の方法。
【請求項9】
前記ロード命令により、前記オペランド・ストア比較ハザード予測テーブルを含む命令フェッチ・ユニットに、前記ロード命令が前記ロードキュー・エントリ内に前記ハザード表示フラグを設定したことを通知するステップであって、前記命令フェッチ・ユニットは、前記通知することに応答して前記エントリを生成する、前記通知するステップ
前記ストア命令により、前記オペランド・ストア比較ハザード予測テーブルを含む前記命令フェッチ・ユニットに、前記ロード命令が前記ストアキュー・エントリ内に前記ハザード表示フラグを設定したことを通知するステップであって、前記命令フェッチ・ユニットは、前記通知することに応答して前記エントリを生成する、前記通知するステップ
のうちの少なくとも1つをさらに含む、請求項8に記載の方法。
【請求項10】
前記実行を開始するステップは、
前記ロード命令の前に前記ストア命令実行を開始するステップであって、前記ストア命令関連付けられたデータセットが入手可能でない状態が持続する前記実行を開始するステップと、
前記ストア命令の実行の後に前記ロード命令実行を開始するステップと
をさらに含む、請求項1に記載の方法。
【請求項11】
前記データセット入手可能でない状態が持続することに基づいて、前記ロード命令により、前記ロード命令が前記ストア命令に依存していると判断するステップと、
前記ロード命令が前記ストア命令に依存しているとの判断に基づいて、前記ロード命令により、ストア・データ転送を実行できないと判断するステップと、
前記ストア・データ転送を実行することができず、かつ、前記データセット入手可能でない状態が持続するとの判断に基づいて、前記ロード命令により、前記ロード命令が持続的転送不能ロード・ヒット・ストアハザードに遭遇したと判断するステップと
をさらに含む、請求項10に記載の方法。
【請求項12】
前記ロード命令が前記持続的転送不能ロード・ヒット・ストアハザードに遭遇したとの判断に基づいて、前記ロード命令により、前記ストア命令関連付けられた前記ストアキュー内のストアキュー・エントリ内に、ハザード表示フラグを設定するステップであって、前記ハザード表示フラグは、前記ストア命令が前記持続的転送不能ロード・ヒット・ストアハザード関連付けられること示す、前記設定するステップと、
前記ロード命令が前記持続的転送不能ロード・ヒット・ストアハザードに遭遇したとの判断に基づいて、前記ロード命令により、前記ロード命令関連付けられたロードキュー内のロードキュー・エントリ内に、ハザード表示フラグを設定するステップであって、前記ハザード表示フラグは、前記ロード命令が前記持続的転送不能ロード・ヒット・ストアハザードに遭遇したことを示す、前記設定するステップと
をさらに含む、請求項11に記載の方法。
【請求項13】
前記ロード命令により、前記オペランド・ストア比較ハザード予測テーブルを含む命令フェッチ・ユニットに、前記ロード命令が前記ロードキュー・エントリ内に前記ハザード表示フラグを設定したことを通知するステップであって、前記命令フェッチ・ユニットは、前記通知することに応答して前記エントリを生成する、前記通知するステップ
前記ストア命令により、前記オペランド・ストア比較ハザード予測テーブルを含む前記命令フェッチ・ユニットに、前記ロード命令が前記ストアキュー・エントリ内に前記ハザード表示フラグを設定したことを通知するステップであって、前記命令フェッチ・ユニットは、前記通知することに応答して前記エントリを生成する、前記通知するステップ
のうちの少なくとも1つを含む、請求項12に記載の方法。
【請求項14】
アウトオブオーダー方式で実行されるロード及びストア動作を管理する方法であって、
ロード命令及びストア命令のうちの少なくとも1つの命令をフェッチするステップと、
前記フェッチした命令をデコードするステップと、
前記デコードに応答して、前記フェッチした命令の前記命令アドレスについて、オペランド・ストア比較ハザード予測テーブルに問い合わせするステップであって、前記オペランド・ストア比較ハザード予測テーブルは、ロード命令に関する第1のエントリと、ストア命令に関する第2のエントリとを含み、前記第1及び第2のエントリは、互いに独立しており、前記ロード命令及び前記ストア命令がそれぞれ以前にオペランド・ストア比較ハザードに遭遇したことを示し、かつ、それぞれ前記ロード命令及び前記ストア命令のうちの1つの少なくとも命令アドレスと、前記オペランド・ストア比較ハザード関連付けられたハザード表示フラグとを含む、前記問い合わせするステップと、
前記予測テーブルに問い合わせするステップに応答して、前記フェッチした命令が、前記オペランド・ストア比較ハザード予測テーブル内の前記第1及び第2のエントリのうちの1つ関連付けられると判断するステップと、
前記判断することに基づいて、前記フェッチした命令関連付けられた前記第1及び第2のエントリのうちの1つの中に含まれる前記ハザード表示フラグを識別するステップと
をさらに含み、
前記フェッチした命令が前記第1のエントリ関連付けられている場合、前記フェッチした命令はロード命令であり、
前記方法は、
前記識別されたハザード表示フラグに基づいて前記フェッチした命令をマーク付けするステップであって、前記マーク付けするステップは、前記フェッチした命令の実行を、所与の実行段階に達した前記フェッチした命令関連付けられた前記ハザード表示フラグと合致したハザード表示フラグを含む前記予測テーブルの前記第2のエントリ関連付けられた少なくとも1つのストア命令に依存させる、前記マーク付けするステップ
をさらに含み、
前記フェッチした命令が前記第2のエントリ関連付けられる場合、前記命令はストア命令である、
請求項1に記載の方法。
【請求項15】
前記フェッチした命令関連付けられた前記ハザード表示フラグは、前記フェッチした命令が以前に転送不能ロード・ヒット・ストアハザードに遭遇したことを示し、
前記マーク付けするステップは、前記フェッチした命令の実行を、ストアが転送可能である段階に達した前記フェッチした命令関連付けられたハザード表示フラグと合致した前記ハザード表示フラグを含む前記予測テーブルのエントリ関連付けられた全てのストア命令に依存させる、
請求項14に記載の方法。
【請求項16】
前記フェッチした命令関連付けられた前記ハザード表示フラグは、前記フェッチした命令が以前に持続的転送不能ロード・ヒット・ストアハザードに遭遇したことを示し、
前記少なくとも1つのストア命令関連付けられた前記ハザード表示フラグは、前記少なくとも1つのストア命令が以前に持続的転送不能ロード・ヒット・ストアハザードに遭遇したことを示す、
請求項14に記載の方法。
【請求項17】
前記フェッチした命令関連付けられた前記ハザード表示フラグは、前記フェッチした命令が以前にストア・ヒット・ロード・ハザードに遭遇したことを示し、
前記少なくとも1つのストア命令関連付けられた前記ハザード表示フラグは、前記少なくとも1つのストア命令が以前にストア・ヒット・ロード・ハザードに遭遇したことを示す、
請求項14に記載の方法。
【請求項18】
前記マーク付けするステップに基づいて、前記フェッチした命令関連付けられた前記ハザード表示フラグと合致した前記ハザード表示フラグを含む前記予測テーブルのエントリ関連付けられた全てのストア命令が、そのアドレス計算を実行し、そのデータをストアキュー内の対応するエントリ内に書き込むまで、前記ロード命令の前記実行を遅延させるステップ
をさらに含む、請求項14に記載の方法。
【請求項19】
前記少なくとも1つのストア命令は、前記フェッチした命令関連付けられた前記ハザード表示フラグと合致した前記ハザード表示フラグを含む最新のストア命令であり、
前記マーク付けするステップに基づいて、前記少なくとも1つのストア命令がL1キャッシュ・ライトバックを実行するまで、前記フェッチした命令の前記実行を遅延させることをさらに含む、
請求項16に記載の方法。
【請求項20】
前記エントリ内の前記ハザード表示フラグは、前記オペランド・ストア比較ハザード予測テーブル内の他のエントリを参照しない、請求項1に記載の方法。
【請求項21】
前記オペランド予測テーブルが、ロード命令エントリ及びストア命令エントリを有し、
前記ロード命令エントリが1又は複数の第1のハザード表示フラグを含み、前記第1のハザード表示フラグが、ロード実行フラグ、ロード書き込みフラグ又はそれらの組み合わせを含み、
前記ストア命令エントリが1又は複数の第2のハザード表示フラグを含み、前記第2のハザード表示フラグが、ストア実行フラグ、ストア書き込みフラグ又はそれらの組み合わせを含み、
前記ロード命令エントリ及び前記ストア命令エントリは互いに独立して生成される、
請求項1に記載の方法。
【請求項22】
前記ロード命令エントリは、前記ストア命令エントリ若しくは前記オペランド予測テーブルに関連付けられた他のオペランド予測テーブルも参照せず、又は、前記ストア命令エントリ若しくは前記他のオペランド予測テーブルからも参照されない、請求項21に記載の方法。
【請求項23】
前記ロード命令エントリがさらに、ロード命令の命令アドレスと当該ロード命令エントリの有効ビットとを含み、
前記ストア命令エントリがさらに、ストア命令の命令アドレスと当該ストア命令エントリの有効ビットとを含む、
請求項21又は22に記載の方法
【請求項24】
前記ロード命令エントリが、設定されたロード実行フラグ及びロード書き込みフラグの両方を有する場合、ロード命令は、データをストアキューに書き込まれるまで遅延され;
前記ロード命令エントリが、設定されたロード実行フラグを有し、且つ、前記ストア命令エントリが、設定されたストア実行フラグ及びストア書き込みフラグの両方を有する場合、ストア命令がデータをストアキューに書き込まれるまで遅延され;
前記ロード命令エントリが、設定されたロード書き込みフラグを有し、且つ、前記ストア命令エントリが、設定されたストア実行フラグ及びストア書き込みフラグの両方を有する場合、ロード命令は、前記設定されたロード書き込みフラグを有するストアがライトバックを実行するまで遅延され;又は、
前記ロード命令エントリが、設定されたロード実行フラグ及びロード書き込みフラグの両方を有し、且つ、前記ストア命令エントリが、設定されたストア実行フラグ及びストア書き込みフラグの両方を有する場合、前記設定されたロード書き込みフラグを有するロード命令は前記設定されたストア書き込みフラグを有するストア命令の実行が開始されるまで遅延される、
請求項21〜23のいずれか一項に記載の方法。
【請求項25】
請求項1〜24のいずれか一項に記載の方法の各ステップを実行するように適合された手段を含むシステム。
【請求項26】
コンピュータ・プログラムであって、コンピュータ・システムに、請求項1〜24のいずれか一項に記載の方法の各ステップを実行させる、前記コンピュータ・プログラム。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0002
【補正方法】変更
【補正の内容】
【0002】
機械命令をアウトオブオーダー方式で発行し、実行することができるマイクロプロセッサは、一般に、ロードがストアの前に実行されることを可能にする。この特徴は、ロードアドレス及びストア・アドレスの両方が同じ物理アドレスをもたないことを条件として、大きな性能の利点を可能にする。典型的なプログラムにおいては、ロードはストアより先に進み、それらの物理アドレスが合致する頻度は低い。しかしながら、この書き込み違反(store violation)状態の発見は、典型的には、命令実行パイプラインの終わりの方の段階であるので、回復の不利益は相当に厳しいものとなり得る。例えば、回復プロセスは、典型的には、違反を引き起こしたロード命令、及びロード命令以降のプログラム順における全てのより新しい命令を無効にすること、次いでロード命令を再発行することを要する。ストア比較ハザード(store-compare hazard)を管理するための従来のメカニズムは、一般に、これらのハザードをあまり有効に管理するものではない。
【手続補正3】
【補正対象書類名】図面
【補正対象項目名】図1
【補正方法】変更
【補正の内容】
図1
【手続補正4】
【補正対象書類名】図面
【補正対象項目名】図2
【補正方法】変更
【補正の内容】
図2
【手続補正5】
【補正対象書類名】図面
【補正対象項目名】図3
【補正方法】変更
【補正の内容】
図3
【手続補正6】
【補正対象書類名】図面
【補正対象項目名】図5
【補正方法】変更
【補正の内容】
図5
【手続補正7】
【補正対象書類名】図面
【補正対象項目名】図6
【補正方法】変更
【補正の内容】
図6
【手続補正8】
【補正対象書類名】図面
【補正対象項目名】図7
【補正方法】変更
【補正の内容】
図7