(57)【要約】      （修正有）【課題】プロセッサのロードストア依存関係を管理するための方法及び機構を提供する。【解決手段】依存関係がもはや必要ないがそれでも有効である場合、メモリレベルの並行処理が制限されて、プロセッサ効率が低下する。ロードストア依存関係予測器は、依存関係があり異なる順序で実行されることが見出されているロードストアペアに関するエントリを記憶するためのテーブルを含む。テーブルの各エントリは依存関係の予測強度を示すためのカウンタを含み、カウンタが閾値以上の場合、依存関係はロードストアペアに関して有効になり、カウンタが閾値以下の場合、依存関係は無効となる。ストアをディスパッチする場合、テーブルをサーチしてテーブルの何らかの適合エントリを作動可能にする。その後、ロードがディスパッチされ、作動可能なエントリに適合し、カウンタが閾値以上の場合、ロードは対応するストアが発行されるまで発行を待つ１３４、１３６。【選択図】図６
2015232902.tif 000002
【特許請求の範囲】
【請求項１】
古いストアオペレーションと依存関係にあるロードオペレーションを予測して、
対応する予測強度インジケータが閾値以上である場合所定のロードストアペアに関する依存関係を確立する、
ように構成されるロードストア依存関係予測器。
【請求項２】
前記ロードストア依存関係予測器は、以前に順序付け違反を生じたロードストアペアに対応するエントリを有するテーブルを備え、前記テーブルのエントリの各々は、予測強度インジケータを備える、請求項１に記載のロードストア依存関係予測器。
【請求項３】
新しいロードストアペアが検出された場合、置き換えのために、前記テーブルの対応するエントリをランク付けするために各カウンタが使用される、請求項２に記載のロードストア依存関係予測器。
【請求項４】
所定のストアオペレーションのディスパッチの検出に応答して、前記ロードストア依存関係予測器は、所定のストアオペレーションに対応する適合エントリの存否を調べるために、前記テーブルをサーチして、前記適合エントリが見つかった場合、該適合エントリを作動可能にするように構成される、請求項２に記載のロードストア依存関係予測器。
【請求項５】
所定のストアオペレーションのディスパッチの検出に応答して、前記ロードストア依存関係予測器は、所定のストアオペレーションに対応する適合エントリの存否を調べるために、前記テーブルをサーチして、前記適合エントリが見つかりかつ該適合エントリのカウンタ値が閾値以上の場合、該適合エントリを作動可能にするように構成される、請求項２に記載のロードストア依存関係予測器。
【請求項６】
前記所定のストアオペレーションは、少なくともプログラムカウンタ（ＰＣ）の一部を使用して識別される、請求項５に記載のロードストア依存関係予測器。
【請求項７】
所定のロードオペレーションのディスパッチの検出に応答して、前記ロードストア依存関係予測器は、前記所定のロードオペレーションのために前記テーブルをサーチして、作動可能な適合エントリが見つかりかつ該作動可能な適合エントリのカウンタ値が閾値以上の場合、前記所定のロードオペレーションは依存関係を伴うものとしてディスパッチされ、依存関係を伴うものとして前記所定のロードオペレーションをディスパッチすることは、前記所定のロードオペレーションを発行する前に、対応するストアオペレーションを発行することを伴うものである、請求項４に記載のロードストア依存関係予測器。
【請求項８】
並び換えバッファ（ＲＯＢ）と、
１つ又はそれ以上のリザベーションステーションと、
ロードストア依存関係予測器と、
を備えるプロセッサであって、前記ロードストア依存関係予測器は、
ロードオペレーションが古いストアオペレーションに依存する場合を予測し、
依存関係があることが予測されたロードストアペアのそれぞれに、予測強度を割り当て、
関連する予測強度が閾値以上であることの検出に応答して、所定のロードストアペアに関する実行の順序を有効にする、
ように構成される、プロセッサ。
【請求項９】
前記ロードストア依存関係予測器は、予測されたロードストアペアの各々に関するエントリを有するテーブルを維持するように更に構成され、各エントリは、ロード識別子（ＩＤ）、ストアＩＤ、及び作動可能なビット、及びカウンタを備え、前記カウンタは、それぞれのロードストアペアの予測強度を示すために利用される、請求項８に記載のプロセッサ。
【請求項１０】
前記エントリは、ストアＲＯＢエントリのナンバー（ＲＮＵＭ）を更に備える、請求項９に記載のプロセッサ。
【請求項１１】
前記ロードストア依存関係予測器は、
所定のストアオペレーションが検出されたことに応じて、前記所定のストアオペレーションに対する適合の存否を調べるために、前記テーブルをサーチして、
適合が見つかり対応するカウンタが閾値以上であるとの判定に応答して、所定のストアオペレーションの適合エントリの作動可能なビットを設定して、
前記適合エントリに、前記所定のストアオペレーションのＲＮＵＭを記憶する、
ように更に構成される、請求項１０に記載のプロセッサ。
【請求項１２】
前記ロードストア依存関係予測器は、
所定のロードオペレーションが検出されたことに応じて、前記所定のロードオペレーションに対する適合の存否を調べるために、テーブルをサーチして、
適合が見つかり対応するカウンタが閾値以上であるとの判定に応答して、前記所定のストアオペレーションへの前記所定のロードオペレーションの依存関係を確立する、
ように更に構成される、請求項１１に記載のプロセッサ。
【請求項１３】
前記所定のストアオペレーションへの前記所定のロードオペレーションの依存関係を確立することは、前記所定のロードオペレーションを、依存関係インジケータ及び前記所定のストアオペレーションのＲＮＵＭを有する所定のリザベーションステーションへディスパッチすることを備える、請求項１２に記載のプロセッサ。
【請求項１４】
前記ロードストア依存関係予測器は、前記カウンタ値に基づいて前記テーブルのエントリを置換するように更に構成される、請求項９に記載のプロセッサ。
【請求項１５】
ストアオペレーションをディスパッチする段階と、
前記ストアオペレーションのために、ロードストア依存関係予測器をサーチする段階と、
前記ストアオペレーションに適合するエントリが見つかり、前記エントリの予測強度インジケータが閾値以上であるとの判定に応答して、前記ロードストア依存関係予測器の前記エントリを作動可能にする段階と、
を含む方法。
【請求項１６】
ロードオペレーションをディスパッチする段階と、
前記ロードオペレーションのために、ロードストア依存関係予測器をサーチする段階と、
前記ロードオペレーションに適合する単一の作動可能なエントリが見つかったことに応答して、前記ロードオペレーションに関する依存関係を確立する段階と、
を更に含む、請求項１５に記載の方法。
【請求項１７】
前記ロードオペレーションに適合する複数の作動可能なエントリが見つかったことに応答して、前記ロードオペレーションに関するマルチマッチ依存関係を確立する段階と、
を更に含む、請求項１５に記載の方法。
【請求項１８】
前記ロードオペレーションに関する依存関係の確立に応答して、前記ストアオペレーションが発行された後に、リザベーションステーションから前記ロードオペレーションを発行する段階と、
前記ロードオペレーションに関するデータがストアキューから検索されたか否かを判定する段階と、
前記ロードオペレーションに関する前記データがストアキューから検索されたとの判定に応答して、前記エントリに関する前記予測強度インジケータをインクリメントする段階と、
前記ロードオペレーションに関する前記データがキャッシュから検索されたとの判定に応答して、前記エントリに関する前記予測強度インジケータをデクリメントする段階と、を更に含む、請求項１６に記載の方法。
【請求項１９】
前記ロードオペレーションに関するマルチマッチ依存関係の確立に応答して、各リザベーションステーションの中の最も古いストアオペレーションを識別する段階を更に含む、請求項１７に記載の方法。
【請求項２０】
前記ロードオペレーションに関するマルチマッチ依存関係の確立に応答して、前記ロードオペレーションの発行の前に、各リザベーションステーションの前記最も古いストアオペレーションが発行されるまで待つ段階を更に含む、請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全体的にはプロセッサに関し、詳細にはプロセッサのロードストア依存関係（load-store dependency）を管理するための方法及び機構に関する。
【背景技術】
【０００２】
スーパースカラプロセッサは、クロックサイクル毎に多重命令を発行して実行すること及び設計に適合するできるだけ高いクロック周波数を用いることで、高性能を実現しようとするものである。クロックサイクル毎に実行される命令数を増やす１つの方法は、アウトオブオーダ（out of order）実行を行うことである。アウトオブオーダ実行において、命令は、プログラムシーケンス（プログラム順）で特定されるものとは異なる順序で実行することができる。
【０００３】
いくつかのプロセッサは、できるだけ積極的に命令をばらばらの順序でスケジューリングすること及び／又は実現される性能向上が最大になるように推論的に試みることができる。例えば、ロードメモリオペレーションはより一般に従属命令を有するので、古いストアメモリオペレーションよりも前にロードメモリオペレーションのスケジュール設定することが望ましい。しかしながら、場合によっては、ロードメモリオペレーションは、古いストアメモリオペレーションに従属する場合がある（例えば、ストアメモリオペレーションは、ロードメモリオペレーションがアクセスした少なくとも１バイトを更新する）。この場合、ロードメモリオペレーションは、ストアメモリオペレーションよりも前に実行される場合は間違って実行される。ロードメモリオペレーションが古い従属ストアメモリオペレーションより前に実行される場合、プロセッサは、フラッシュ及びリダイレクトする必要があり、プロセッサ性能が低下する可能性がある。
【０００４】
プログラムの順番でオペレーションが他のオペレーションの前に行われる場合、このオペレーションは他のオペレーションよりも古い。プログラムの順番でオペレーションが他のオペレーションの後で行われる場合、このオペレーションは他のオペレーションよりも若い。同様に、オペレーションは他のオペレーションの前又は後として示すことができ、又は以前のオペレーション、先行するオペレーションと呼ぶことができる。この関連性は、オペレーションのプログラム順を参照することができる。更に、「ロードメモリオペレーション」又は「ロードオペレーション」はデータをメモリ又はキャッシュからプロセッサへ転送すること、「ストアメモリオペレーション」又は「ストアオペレーション」はデータをプロセッサからメモリ又はキャッシュへ転送することに言及することができる。「ロードオペレーション」及び「ストアオペレーション」は、本明細書では簡潔に「ロード」及び「ストア」と呼ぶ。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ロードとストアとの間の依存関係は動的であるが、一般的にこれらのイベントを妨げる機構は本質的に静的である。従って、ロードストアペアに関するアウトオブオーダ違反を防止するために、プロセッサは、アウトオブオーダを過度に補償して、積極的にスケジュール設定しない可能性がある。この場合、プロセッサは、不必要に命令を順番になるように要求することになる。依存関係がもはや必要ないがそれでも有効である場合、メモリレベルの並行処理が制限されて、プロセッサ効率が低下することになる。
【課題を解決するための手段】
【０００６】
ロードストア依存関係を予測するためのシステム、装置、プロセッサ、及び方法が意図される。プロセッサは、少なくともディスパッチユニット、ロードストア依存関係予測器、及びリザベーションステーションを含む。若いロードと依存関係のある古いストアとの間の順序付け違反が検出されると、これはロードストア依存関係予測器に関する訓練イベントを引き起こす。ロードストアペアの訓練後に、予測器は、依存関係をロードに付加することができ、次回、ロードはディスパッチユニットを通り過ぎる。この付加された依存関係は、ストアがスケジューリングされるまで、ロードがリザベーションステーションから出るようにスケジューリングできないことを示す。
【０００７】
１つの実施形態において、予測器テーブルを使用して、依存関係があるとして見出されたロードストアペアを記憶することができる。若いロードがアドレス依存関係を共有する古いストアの前に発行される場合、エントリは、予測器テーブルに割り振ることができ、１つの実施形態において、このエントリは、少なくともストアに関するストアプログラムカウンタ（ＰＣ）の一部、及び依存関係のあるロードに関するロードＰＣ値の一部に関連することができる。また、予測器テーブルの各エントリは、カウンタフィールドを含むことができ、カウンタフィールドは、特定のロードストアペアに関するデータ依存関係の予測強度を表すことができる。カウンタフィールドにより、古いか又はもはや有効でない場合は、予測された依存関係をクリアすることができる。
【０００８】
また、カウンタフィールドの値は、予測器テーブルに関する置換えポリシーに影響を与えることができる。置換えポインタは、予測器のエントリを絶えずスキャンして、低いカウンタ値のエントリを見つけることができる。１つの実施形態において、予測器テーブルがアクセスされる度に、置換えポインタを進めることができる。置換えポインタがカウンタ値ゼロのエントリを見つけると、ポインタは、このエントリで停止することができる。依存関係のある新しいロードストアペアに新しいエントリが割り振られると、ポインタが示すカウンタがゼロの既存のエントリは、新しいエントリのために使用される。
【０００９】
前記及び他の特徴及び利点は、当業者には本明細書に示すアプローチの以下の詳細な説明から明らかになるであろう。
【００１０】
本方法及び機構の前記の及び更なる利点は、添付図面と一緒に以下の説明を参照することで良好に理解できるであろう。
【図面の簡単な説明】
【００１１】
【図１】集積回路の一部の１つの実施形態を示す。
【図２】プロセッサコアの１つの実施形態を示すブロック図である。
【図３】マップ／ディスパッチユニット及びリザベーションステーションの１つの実施形態を示すブロック図である。
【図４】ロードストア依存関係予測器テーブルの１つの実施形態を示す。
【図５】ロードストア依存関係予測器テーブルで使用されるカウンタ値の表現の１つの実施形態を示すブロック図である。
【図６】ロードオペレーションを処理する方法の１つの実施形態を示す一般化フローチャートである。
【図７】ロードストア依存関係予測強度インジケータを調整する方法の１つの実施形態を示す一般化フローチャートである。
【図８】ロードストア依存関係予測器テーブルのエントリを置換する方法の１つの実施形態を示す一般化フローチャートである。
【図９】システムの１つの実施形態のブロック図である。
【図１０】コンピュータ可読媒体の１つの実施形態のブロック図である。
【発明を実施するための形態】
【００１２】
以下の説明において、多数の特定の詳細内容が明記され、本明細書に示される方法及び機構の完全な理解が可能になっている。当業者であれば、これらの特定の詳細内容がなくても種々の実施形態を実施できることを理解できるはずである。例えば、公知の構造、構成要素、信号、コンピュータプログラム命令、及び技術は、本明細書で説明する手法が不明確になるのを避けるために詳細に示されていない。簡潔かつ明瞭な説明のために、図面に示す要素は、必ずしも縮尺通りに示されていないことを理解されたい。例えば、一部の要素の寸法は、他の要素に比べて誇張されている。
【００１３】
本明細書は、「１つの実施形態」という記載を含む。「１つの実施形態において」という語句が異なる文脈で出現する場合は必ずしも同じ  実施形態に言及するものではない。特定の特徴、構成、又は特性は、本開示に適合する任意の適切な方法で組み合わせることができる。更に、本出願全体にわたって使用する場合、用語「〜できる（ｍａｙ）」は、必須の意味（つまり、必要があるという意味）ではなく、許可するという意味（つまり、可能性があるという意味で使用される）。同様に、用語「〜を含む（ｉｎｃｌｕｄｅ、ｉｎｃｌｕｄｉｎｇ、ｉｎｃｌｕｄｅｓ）」は、包含するという意味であるが限定されるものではない。
【００１４】
専門用語
以下に、本開示（請求項を含む）に見出される用語に関する定義及び／又は文脈を提示する。
【００１５】
「備える（Ｃｏｍｐｒｉｓｉｎｇ）」。この用語は非制限的である。請求項で使用する場合、付加的な構造又はステップを除外するものではない。「ロードストア依存関係予測器を備えるプロセッサ〜」という請求項を考える。このような請求項は、プロセッサが付加的な構成要素（例えば、キャッシュ、フェッチユニット、実行ユニット）を含むことを除外するものではない。
【００１６】
「〜ように構成された（Ｃｏｎｆｉｇｕｒｅｄ  Ｔｏ）」。種々のユニット、回路、又は他の構成要素は、１つ又は複数のタスクを遂行するように「構成される」ものとして説明され又は請求される。この点について、「構成される」とは、ユニット／回路／構成要素が動作中に１つ又は複数のタスクを遂行する構造体（例えば、回路）を含むことを指示することにより、構造体を暗示するのに使用される。従って、ユニット／回路／構成要素は、その指定のユニット／回路／構成要素が現在動作していない（例えば、オンでない）ときでも、タスクを遂行するように構成されると言うことができる。「構成される」の言語と共に使用されるユニット／回路／構成要素は、ハードウェア、例えば、回路、動作を具現化するために実行できるプログラム命令を記憶するメモリ、等を含む。ユニット／回路／構成要素が１つ又はそれ以上のタスクを遂行するように「構成された」という表現は、そのユニット／回路／構成要素に関して３５Ｕ．Ｓ．Ｃ．§１１２、第６節を引用しないことが明確に意図される。更に、「構成される」は、問題とするタスクを遂行できるようにソフトウェア及び／又はファームウェア（例えば、ソフトウェアを実行するＦＰＧＡ又は汎用プロセッサ）を動作することでオペレーションされるジェネリック構造体（例えば、ジェネリック回路）を含む。また、「構成される」は、１つ又はそれ以上のタスクを具現化又は遂行するデバイス（例えば、集積回路）を製造するように製造プロセス（例えば、半導体製造ファシリティ）を適用することも含む。
【００１７】
「〜に基づく（Ｂａｓｅｄ  Ｏｎ）」。ここで使用するこの用語は、決定に影響する１つ以上のファクタを記述するのに使用される。この用語は、決定に影響する付加的なファクタを除外するものではない。即ち、決定は、これらのファクタのみに基づいてもよいし、又はこれらのファクタに少なくとも一部分基づくものでもよい。「Ｂに基づいてＡを決定する（ｄｅｔｅｒｍｉｎｅ  Ａ  ｂａｓｅｄ  ｏｎ  Ｂ）」という句について考える。Ｂは、Ａの決定に影響するファクタであるが、そのような句は、Ａの決定を、Ｃに基づくことからも除外しない。他の例では、Ａは、Ｂのみに基づいて決定されてもよい。
【００１８】
図１を参照すると、集積回路（ＩＣ）の一部の１つの実施形態を示すブロック図が示されている。図示の実施形態において、ＩＣ１０は、プロセッサコンプレックス１２、メモリコントローラ２２、及びメモリ物理的インタフェース回路（ＰＨＹ）２４及び２６を含む。また、ＩＣ１０は図１に示されていない多数の他の構成要素を含み得ることに留意されたい。種々の実施形態において、ＩＣ１０は、システムオンチップ（ＳｏＣ）、特定用途向け集積回路（ＡＳＩＣ）、又は装置と呼ぶこともができる。
【００１９】
プロセッサコンプレックス１２は、中央処理装置（ＣＰＵ）１４及び１６、レベル２（Ｌ２）キャッシュ１８、及びバスインタフェースユニット（ＢＩＵ）２０を含むことができる。他の実施形態において、プロセッサコンプレックス１２は、他の多数のＣＰＵを含むことができる。また、ＣＰＵ１４及び１６は、プロセッサ又はコアと呼ぶことができる。ＣＰＵ１４及び１６は、Ｌ２キャッシュ１８に接続することができる。Ｌ２キャッシュ１８は、ＢＩＵ２０に接続することができ、ＢＩＵ２０は、メモリコントローラ２２に接続することができる。他の実施形態は、さらなるレベルのキャッシュ（レベル３（Ｌ３）キャッシュ）を含むことができる。プロセッサコンプレックス１２は、図１に示されていない他の構成要素を含み得ることに留意されたい。
【００２０】
ＣＰＵ１４及び１６は、命令セットアーキテクチャで定義される命令を実行する回路を含むことができる。特に、命令を含む１つ又はそれ以上のプログラムは、ＣＰＵ１４及び１６で実行できる。何らかの命令セットアーキテクチャは、種々の実施形態において実行することができる。例えば、１つの実施形態において、ＰｏｗｅｒＰＣ（登録商標）命令セットアーキテクチャを実行することができる。他の例示的な命令セットアーキテクチャとしては、ＡＲＭ（登録商標）命令セット、ＭＩＰＳ（登録商標）命令セット、ＳＰＡＲＣ（登録商標）命令セット、ｘ８６命令セット（ＩＡ−３２とも呼ばれる）、ＩＡ−６４命令セット等を挙げることができる。
【００２１】
種々の実施形態において、ＣＰＵ１４及び１６は、異なる順序で命令を実行することができ、このことは順序付け違反を引き起こす場合がある。例えば、ロード及びストア命令の場合、順序付け違反は、重なっている物理アドレスで古いストアの前に若いロードを実行した場合に発生する。このタイプの順序付け違反の反復を避けるか又は防止するために、種々の技術を用いて、若いロードが依存関係のある古いストアの前に実行されることを防止するようになっている。１つの実施形態において、ＣＰＵ１４及び１６の各々は、依存関係があることが予測又は期待され、異なる順序で実行される傾向がある、ロードストアペアを追跡するためのロードストア依存関係予測器を含むことができる。１つの実施形態において、依存関係のロードストアペアは、テーブルに記録することができる。
【００２２】
時として予測器はロードストアペアを訓練することができるが、依存関係は例外的とすることができる。このことは、ロード命令とストア命令との間の依存関係がアドレスに基づくことができ、ロード及びストア命令のアドレスが経時的に変わる場合があるので起こる。換言すると、ロードストア依存関係は動的である可能性がある。テーブルの一部のエントリは所定期間後には正確でない可能性があり、不正確なエントリに関する依存関係を実行することは、プロセッサが不必要にロードオペレーションを遅延させることにつながる。
【００２３】
陳腐化したエントリがテーブルに蓄積することを防止するために、及び陳腐化したエントリに対応するロードストアペアに対して依存関係が強制されることを防止するために、テーブルの各エントリは、依存関係予測の強度を表すインジケータを含むこともできる。インジケータは、依存関係が所定のロードストアペアに対して有効であるか否かを決めることができる。また、インジケータは、テーブルエントリの置換えポリシーに影響を及ぼすことができ、インジケータ値が低いエントリは、新しいエントリがテーブルに割り振られる際に置換することができる。
【００２４】
また、ＣＰＵ１４及び１６の各々は、レベル１（Ｌ１）キャッシュ（図示せず）を含むことができ、各Ｌ１キャッシュは、Ｌ２キャッシュ１８に接続することができる。１つの実施形態において、Ｌ２キャッシュ１８は、ＣＰＵ１４及び１６による短待ち時間のアクセスに関する命令及びデータをキャッシュするように構成することができる。Ｌ２キャッシュ１８は、任意の容量及び構成（例えば、ダイレクトマップ方式、セットアソシアティブ方式）を含むことができる。Ｌ２キャッシュ１８は、ＢＩＵ２０経由でメモリコントローラ２２に接続することができる。また、ＢＩＵ２０は、ＣＰＵ１４及び１６、並びにＬ２キャッシュ１８を種々の他のデバイス及びブロックに接続するための、種々の他の論理構成を含むことができる。
【００２５】
メモリコントローラ２２は、任意数のメモリポートを含むことができ、メモリにインタフェース接続するように構成される回路を含むことができる。例えば、メモリコントローラ２２は、同期式ＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ）ＳＤＲＡＭ、ＤＤＲ２  ＳＤＲＡＭ、ラムバスＤＲＡＭ（ＲＤＲＡＭ）等の、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）にインタフェース接続するように構成することができる。また、メモリコントローラ２２は、メモリ物理的インタフェース回路（ＰＨＹ）２４及び２６に接続することができる。メモリＰＨＹ２４及び２６は、メモリコントローラ２２に接続することができる任意数のメモリＰＨＹを表す。メモリＰＨＹ２４及び２６は、メモリ素子（図示せず）にインタフェース接続するように構成することができる。
【００２６】
他の実施形態は、図１及び／又は他の構成要素に示す構成要素のサブセット又は上位セットを含む、他の構成要素の組み合わせを含み得ることに留意されたい。図１は所定の構成要素の例を示すことができるが、他の実施形態は、２つ又はそれ以上の所定の構成要素の例を示すことができる。同様に、詳細な説明の全体にわたって、所定の構成要素の１つの例だけが示されている場合でも２つ又はそれ以上の例を含むことができ、及び／又は複数の例が示される場合でも１つの例だけを含む実施形態を用いることができる。
【００２７】
図２を参照すると、プロセッサコアの１つの実施形態が示されている。コア３０は、プロセッサコアの１つの実施例であり、コア３０は、図１のプロセッサコンプレックス１２のようなプロセッサコンプレックス内で用いることができる。１つの実施形態において、図１のＣＰＵ１４及び１６の各々は、コア３０の構成要素及び機能を含むことができる。コア３０は、フェッチ−デコード（ＦＥＤ）ユニット３２、マップ−ディスパッチユニット３６、メモリ管理ユニット（ＭＭＵ）４０、コアインタフェースユニット（ＣＩＦ）４２、実行ユニット４４、及びロードストアユニット（ＬＳＵ）４６を含むことができる。コア３０は、図２に示されていない他の構成要素及びインタフェースを含み得ることを理解されたい。
【００２８】
ＦＥＤユニット３２は、メモリから命令を読み取りレベル１（Ｌ１）命令キャッシュ３４に格納するように構成される回路を含むことができる。Ｌ１命令キャッシュ３４は、コア３０が実行することになる命令を記憶するためのキャッシュメモリとすることができる。Ｌ１命令キャッシュ３４は、任意の容量及び構成（例えば、ダイレクトマップ方式、セットアソシアティブ方式、フルアソシアティブ方式）を有することができる。更に、Ｌ１命令キャッシュ３４は、任意のキャッシュラインサイズを有することができる。また、ＦＥＤユニット３２は、分岐命令を予測して予測した経路をフェッチダウンする分岐予測ハードウェアを含むことができる。また、ＦＥＤユニット３２は、リダイレクトすることができる（例えば、予測ミス、除外、割り込み、フラッシュ等により）。
【００２９】
また、ＦＥＤユニット３２は、命令を命令オペレーション（ｏｐ）にデコードするように構成することができる。一般に、命令オペレーションは、実行ユニット４４及びＬＳＵ４６に含まれるハードウェアが実行することができるオペレーションとすることができる。各命令は、実行されると、命令セットアーキテクチャによる命令に関して定義されるオペレーションの遂行につながる、１つ又はそれ以上の命令オペレーションに変換することができる。ＦＥＤユニット３２は、複数の命令を並行にデコードするように構成することができる。
【００３０】
いくつかの実施形態において、各命令は、単一の命令オペレーションにデコードすることができる。ＦＥＤユニット３２は、命令タイプ、ソースオペランド等を特定するように構成することができ、デコードされた命令オペレーションの各々は、いくつかのデコード情報と一緒に命令を含むことができる。命令が単一の命令オペレーションに変換される別の実施形態において、各命令オペレーションは、単純に対応する命令又はその一部とすることができる（例えば、命令の１つ又は複数のオペコード）。いくつかの実施形態において、ＦＥＤユニット３２は、命令に関する命令オペレーションを発生するための回路及び／又はマイクロコードの任意の組み合わせを含むことができる。例えば、比較的単純な命令オペレーション（例えば、命令ごとに１つ又は２つの命令オペレーション）の生成はハードウェアで処理することができるが、より広範な命令オペレーション（例えば、１つの命令に関して３つ以上の命令オペレーション）の生成はマイクロコードで処理することができる。他の実施形態において、ＦＥＤユニット３２に含まれる機能性は、フェッチユニット、デコードユニット、及び／又は他のユニットのような２つ又はそれ以上の別個のユニットに分けることができる。
【００３１】
デコードされた命令オペレーションは、マップ／ディスパッチユニット３６に与えることができる。マップ／ディスパッチユニット３６は、命令オペレーション及びアーキテクチャレジスタをコア３０の物理レジスタにマッピングするように構成することができる。マップ／ディスパッチユニット３６は、レジスタリネームを実行して、命令オペレーションからのマップソースレジスタアドレスを、リネームされたソースレジスタを特定するソースオペランド数にマッピングするようになっている。また、マップ／ディスパッチユニット３６は、命令オペレーションを実行ユニット４４及びＬＳＵ４６内のリザベーションステーションにディスパッチするように構成することができる。マップ／ディスパッチユニット３６は、ロードストア依存関係（ＬＳＤ）予測器３７及び並び換えバッファ（ＲＯＢ）３８を含むことができる。ディスパッチされる前に、命令オペレーションは、ＲＯＢ３８に書き込むことができる。ＲＯＢ３８は、順序通りに完遂できるまで命令オペレーションを保持するように構成することができる。各命令オペレーションには、ＲＯＢ３８の特定のエントリに対応するＲＯＢインデックス（ＲＮＵＭ）を割り当てることができる。ＲＮＵＭは、コア３０で進行中のオペレーションを追跡するために使用することができる。また、マップ／ディスパッチユニット３６は、図２には示されていない他の構成要素（例えば、マッパーアレイ、ディスパッチユニット、ディスパッチバッファ）を含むことができる。更に、他の実施形態において、マップ／ディスパッチユニット３６に含まれる機能性は、マップユニット、ディスパッチユニット、及び／又は他のユニットのような、２つ又はそれ以上の別個のユニットに分けることができる。
【００３２】
ＬＳＤ予測器３７は、依存関係のロードストア命令ペアを訓練して異なる順序になる可能性を予測するように構成することができる。ＬＳＤ予測器３７は、訓練されたロードストアペアに関するエントリを含むテーブルを備えることができ、各エントリは、ロード及びストア命令、並びに予測強度を特定する情報を含むことができる。１つの実施形態において、訓練イベントは、重なっている物理アドレスで古いストアの前に若いロードを実行することで引き起こされる順序付け違反である。１つの実施形態において、テーブルは、２５６−エントリが完全に結合した構造とすることができる。他の実施形態において、テーブルは他の数のエントリを有することができる。種々の実施形態において、テーブルは、テーブルの種々のフィールドに関して内容参照可能メモリ（ＣＡＭ）とすることができる。
【００３３】
依存関係のロードオペレーションとストアオペレーションとの間で順序違反がある場合、コア３０は、リダイレクト及び再同期することができる。リダイレクトの結果として種々の修正動作を行うことができる。現段階では、再同期が生じた特定のロードストアペアに対して訓練を行うことができる。この特定のペアに関するエントリは、ＬＳＤ予測器３７に割り振ることができ、予測強度は高レベルに設定することができる。次に、コア３０のパイプラインを通る次のパスにおいて、ロードストアペアからのストアがユニット３６からディスパッチされる場合、ストアに関してＬＳＤ予測器３７をサーチすることができる。適合するエントリを探して作動可能にすることができる。訓練されたロードストアペアからのロードがユニット３６からディスパッチされると、ロードに関するＬＳＤ予測器３７のサーチを行うことができ、ロードは作動可能になったエントリに適合することになる。次に、ロードは、依存関係を有するリザベーションステーションにディスパッチされることができ、ロードは、リザベーションステーションから発行される前にストア上で待機することになる。
【００３４】
ＬＳＤ予測器３７は、エントリを作動可能にしたストアが、該ストアが発行される前に命令パイプラインからフラッシュされる場合、テーブルをクリーンアップするように構成することができる。例えば、故障した場合のような作動可能になったＬＳＤ予測器３７のエントリを取り除く必要がある場合に、或るシナリオが可能である。ロードオペレーションは、フラッシュアウトされたストアオペレーションに依存してこれを待つことができ、このことはデッドロックしたコア３０につながる。この場合、ストアオペレーションがコア３０からフラッシュされる場合、フラッシュされたストアに対応する何らかの作動可能なエントリに関してＬＳＤ予測器３７のテーブルをサーチすることができる。フラッシュされたストアに関して見つかった何らかの適合するエントリを取り除くことができる。１つの実施形態において、ＬＳＤ予測器３７の各エントリは、ロードストアペアの特定のストアを特定するためのストアＲＮＵＭを含むことができる。
【００３５】
実行ユニット４４は、任意数及び任意形式の実行ユニット（例えば、整数、浮動小数点、ベクトル）を含むことができる。また、実行ユニット４４の各々は、１つ又はそれ以上のリザベーションステーション（図示せず）を含むことができる。ＣＩＦ４２は、ＬＳＵ４６、ＦＥＤユニット３２、ＭＭＵ４０、及びＬ２キャッシュ（図示せず）に接続することができる。ＣＩＦ４２は、コア３０とＬ２キャッシュとの間のインタフェース接続を管理するように構成することができる。ＭＭＵ４０は、アドレス変換及びメモリ管理機能を行うように構成することができる。
【００３６】
ＬＳＵ４６は、Ｌ１データキャッシュ４８、リザベーションステーション５０及び５２、ストアキュー５４、及びロードキュー５６を含むことができる。ロード及びストアオペレーションは、マップ／ディスパッチユニット３６からリザベーションステーション５０及び５２にディスパッチすることができる。他の実施形態は、他の複数のリザベーションステーションを含むことができる。オペレーションは、リザベーションステーション５０及び５２から異なる順序で発行することができる。ストアキュー５４は、ストアオペレーションに対応するデータを記憶することができ、ロードキュー５６は、ロードオペレーションに関連するデータを記憶することができる。また、ＬＳＵ４６は、ＣＩＦ４２経由でＬ２キャッシュに接続することができる。また、ＬＳＵ４６は、図２に示されていない他の構成要素（例えば、レジスタファイル、プリフェッチ、トランスレーション・ルックアサイド・バッファ）を含み得ることに留意されたい。
【００３７】
ロードストア順序違反は、古いストアが発行された時点でＬＳＵ４６が検出することができる。１つの実施形態において、古いストア記憶アドレスは、ロードキュー５６内の全ての若いロードと比較することができる。一致が検出された場合、ロードオペレーションは、誤ったデータで完了している。これは、ロード及びストアオペレーションのＲＮＵＭを使用して元のマップ／ディスパッチユニット３６にリダイレクトする信号を発することで将来修正することができる。マップ／ディスパッチユニット３６は、コア３０のパイプラインからの命令をフラッシュして、コア３０のフロントエンドを元のロードの命令アドレスにリダイレクトすることができ、ロード命令は、リフェッチすることができる。更なるリダイレクトを防止するために、マップ／ディスパッチユニット３６は、ＬＳＤ予測器３７においてストアに対するロードの依存関係を予測して記録して、予測した依存関係をリザベーションステーション５０及び５２に連絡することができる。
【００３８】
典型的には、ストアがディスパッチされる場合、ストアは、ＬＳＤ予測器３７をサーチして、ストアに関して適合する場合、テーブルの適合エントリは、作動可能に（つまり、アクティブ）にすることができ、ストアＲＮＵＭは、エントリに書き込むことができる。その後、ロードはディスパッチすることができ、テーブル内のロード全体のサーチを行うことができる。１つの実施形態において、ＬＳＤ予測器３７をサーチするために使用される識別値は、少なくともロード及びストアＰＣ値の一部とすることができる。別の実施形態において、サーチを行うために使用されてエントリに記憶される識別値は、少なくともＰＣ値の一部、少なくともアーキテクチャレジスタ値の一部、及び／又は少なくともマイクロオペレーション値の一部から生じるハッシュ値とすることができる。他の識別子を利用することが可能であり想定されている。
【００３９】
種々の実施形態において、ＬＳＤ予測器３７において任意数のエントリに適合することができる。１つの実施形態において、適合が生じるように、エントリを作動可能にする必要がある。ロードが１つの作動可能になったエントリに適合する場合、作動可能になったストアＲＮＵＭをロードにリンク付けすることで、ストアＲＮＵＭへの依存関係を付与することができる。ロードは、リザベーションステーションから発行される特定のストアＲＮＵＭを待つようにマーク付けすることができる。リザベーションステーションにおいて、ロードに関する依存関係フィールドがあり、ロードは、リザベーションステーション５０又は５２から発行される所定のストアに依存するようにマーク付けすることができる。従って、この場合、ロードは、特定のストアＲＮＵＭを待つようにマーク付けすること、及びロードは、特定のストアの発行後の１サイクルを発行することができる。
【００４０】
ロードが複数の作動可能なストアエントリに適合する場合、これはマルチマッチケースと呼ぶことができる。この場合、ロードは、発行前に全ての古いストアが発行されるまで待つことができる。例えば、１つの実施形態において、或るビットは、ロードが自身の発行前に全ての古いストアが発行されるまで待つことができるように設定することができる。これにより、ロードに先だって全ての古いストアをリザベーションステーション５０及び５２から発行させることができる。１つの実施形態において、リザベーションステーション５０及び５２の各々は、含まれる最も古いストアを利用することができる。ロードが、両者のストアよりも古くなるとロードを発行できる。
【００４１】
リザベーションステーション５０及び５２の各々は、有効な何らかのオペレーションを発行するように構成されるピッカを含むことができる。ストアが有効になり、ピックされて発行されると、タグを一斉送信することができ、このストアに依存関係のあるロードは、タグに適合することになる。このことは、ロードをリザベーションステーションから発行する資格があるものとしてマーク付けすることになる。換言すれば、ストアは、ロードで使い果たされるタグを生成する。１つの実施形態において、タグは、ストアＲＮＵＭとすることができる。１つの実施形態において、ＲＮＵＭは９ビット値とすることができるが、他の実施形態において、ＲＮＵＭの大きさは様々とすることができる。依存関係を有するロードは、リザベーションステーションにおいてロードと一緒に記憶される追加のソースを有することができ、この追加のソースは、ＬＳＤ予測器３７の同じエントリからのストアのＲＮＵＭとすることができる。
【００４２】
ロードがＬＳＤ予測器３７のエントリに適合してこのエントリが作動可能な場合、このことはロードが待つ必要がある有効なストアが存在することを意味する。また、エントリは、予測強度に関するインジケータを含むことができる。１つの実施形態において、インジケータはカウンタとすることができ、カウンタ値が閾値以上の場合、エントリは強力で予測の可能性が高いと考えることができ、ロードストア依存関係を設定することができる。閾値の値は、各実施形態で様々とすることができる。ロードが作動可能なエントリに適合して、インジケータが脆弱な場合、予測を使用しないように示唆してロードに関する依存関係を確立できない。ロードストア依存関係が確立される場合には、ロードは、ストアＲＮＵＭをピックアップすることができ、ＲＮＵＭは、エントリを読み出して、ロードがディスパッチされている場合はロードと一緒にリザベーションステーションに転送する。また、ロードは、リザベーションステーションにおいて依存関係があるとしてマーク付けすることができる。
【００４３】
１つの実施形態において、リザベーションステーションから発行されるストアは、該ストアが有効なプロデューサであるとマーク付けされる場合にのみ一斉送信されるタグを生成することができる。ストアがＬＳＤ予測器３７をサーチして適合するものが見つからなかった場合、ストアは、有効なプロデューサとして設定されないことになる。ストアがＬＳＤ予測器３７において有効なエントリを見出して、予測強度インジケータが、ロードストアペア依存関係予測が閾値以上であることを示す場合（つまり、予測がオン作動する）、エントリは作動可能とすることができる。１つの実施形態において、予測強度インジケータが閾値以下である場合、ストアが当該ストアエントリに適合するとしても、ストアはエントリを作動可能にしないことになる。いくつかの実施形態において、エントリは、ストアが予測強度インジケータの値に関わらず適合するものを見出す場合、作動可能にすることができる。ストアは、複数のエントリに適合することができ、複数のエントリは、単一のストアに関して作動可能にすることができる。
【００４４】
ロードがＬＳＤ予測器３７の作動可能なエントリに適合する場合、ロードは、依存関係があるものとしてマーク付けされ、対応するストアがリザベーションステーションから発行されるまで、ロードはリザベーションステーションから発行されるのを待つことができる。次に、設定された依存関係を有するロードが発行されると、ロードがどこからデータを受信するかを決定することができる。ロードがどこからデータを受信するかに応じて、対応するＬＳＤ予測器３７のエントリにおいて、予測強度インジケータは、増大、減少、又は現状維持とすることができる。
【００４５】
例えば、ロードデータがストアキュー５４から送られる場合、ＬＳＤ予測器３７からの予測は良好とすることができる。この場合、ストアからのデータは未だキャッシュ４８に到着していないので、ロードがストアを待つことは好都合である。このロードオペレーションのロードデータが未だストアキュー５４にある場合、このことは、ロードとストアとの間に実際に真の依存関係があることを示すことができる。換言すると、データは、依存関係のあるロードに関するストアキュー５４から送る必要がある。
【００４６】
ロードデータに関するストアキュー５４でミスがある場合依存関係はもはや有効ではない。過去に依存関係があったが、ロード又はストアのアドレスが変わってロード及びストアがもはや衝突しないという可能性がある。この場合、ストアデータがキャッシュ４８から検索されると、データは長時間そこに記憶されている可能性がある。従って、ストアデータがストアキュー５４から送られてきたか又はキャッシュ４８から送られてきたかを判定することで、予測が正確か否かを示すことができる。更に、この判定に基づいて、ＬＳＤ予測器３７の適合するエントリに記憶される予測強度インジケータを更新することができる。ロードデータがストアキュー５４から発行されるような、予測が正確な場合、予測強度インジケータは増大させることができる。ロードデータがキャッシュ４８から到来する場合、予測強度インジケータは低減させることができる。他の実施形態において、依存関係予測が正確か否かを判定するために他の技術を利用することができる。
【００４７】
図２に示す機能分散は、プロセッサコアで使用することができる、唯一の可能性のあるマイクロアーキテクチャではないことを理解されたい。他のプロセッサコアは、他の構成要素を含むこと、図示の１つ又はそれ以上の構成要素を除外すること、及び／又は各構成要素の機能性の異なる構成を含むことができる。
【００４８】
図３を参照すると、マップ／ディスパッチユニット及びリザベーションステーションの１つの実施形態のブロック図が示される。１つの実施形態において、マップ／ディスパッチユニット６０は、レジスタマッパー６２、並び換えバッファ（ＲＯＢ）６４、ロードストア依存関係（ＬＳＤ）予測器６６、及びディスパッチユニット６８を含むことができる。レジスタマッパー６２及びＬＳＤ予測器６６はデコードユニット（図示せず）から命令オペレーションを受信するように接続される。ＬＳＤ予測器６６は、デコードユニットからＰＣを受信するように接続され、ロードストアユニット（図示せず）から「リダイレクト」及び「カウントアップデート」信号を受信するように接続される。また、ＬＳＤ予測器６６は、新しいエントリが割り振られた場合に廃棄することができるエントリに関してＬＳＤ予測器６６をサーチする「リプレースメントポインタ」に接続される。
【００４９】
レジスタマッパー６２は、アーキテクチャレジスタを物理レジスタにマッピングして、命令オペレーション及び物理レジスタアドレスをディスパッチユニット６８に提供するように構成することができる。ディスパッチユニット６８は、命令オペレーションをリザベーションステーション７０Ａ−Ｎにディスパッチするように構成することができる。ディスパッチユニット６８は、リザベーションステーション７０Ａ−Ｎのリザベーションステーションエントリのフリーリストを維持するように構成することができ、エントリを命令オペレーションに全体的に割り当てて、各リザベーションステーション７０Ａ−Ｎの間の負荷をバランスさせるようになっている。
【００５０】
ＬＳＤ予測器６６は、命令オペレーションのストア及びロードをチェックするように構成することができ、任意の検出されたストア及びロードを、以前に順序付け違反を起こして訓練テーブルのエントリに割り振られている、ストア及びロードのＰＣと比較することができる。ＰＣが所定のストに適合する場合、ＬＳＤ予測器６６は、対応する訓練テーブルのエントリを作動可能にするように構成することができる。１つの実施形態において、ＬＳＤ予測器６６は、エントリを作動可能にする前に予測強度のインジケータをチェックすることができる。インジケータが閾値以上の場合、エントリは作動可能になり、さもなければ、インジケータが閾値以下の場合、エントリは作動可能にならない。更に、ＬＳＤ予測器６６は、ストアの識別子としてストアに割り当てられるＲＮＵＭを取り込むように構成することができる。
【００５１】
作動可能なエントリに適合するロードが検出され、作動可能なエントリに関する予測強度のインジケータが閾値以上の場合、ＬＳＤ予測器６６は、ストア識別子を使用してストアに対するロードの依存関係を生成するように構成することができ、ロードが、ストアの発行が終わるまでリザベーションステーション７０から発行されることを防止するようになっている。１つの実施形態において、ＬＳＤ予測器６６は、ロードが依存関係を有するというインジケータと一緒にＲＮＵＭを所定のリザベーションステーション７０へ送るように構成することができる。更に、ロードに関する複数の適合がある場合、ＬＳＤ予測器６６は、マルチマッチインジケータを所定のリザベーションステーション７０へ送ることができる。他の実施形態において、ＬＳＤ予測器６６は、マルチマッチケースにおいて複数のストアＲＮＵＭをリザベーションステーション７０へ送るように構成することができ、リザベーションステーション７０は、ロード毎に２つ以上のストアＲＮＵＭを記憶するように構成することができる。他の実施形態では、ストア依存関係を他の様式で示すことができる。
【００５２】
リザベーションステーション７０Ａ−Ｎは、ロードストアユニット（図示せず）及び／又は実行ユニット（図示せず）の一部として使用することができる任意の数のリザベーションステーションで表される。リザベーションステーション７０Ａ−Ｎの各々は、オペレーションが対応する機能ユニットで実行されるまでオペレーションを記憶するように構成することができる。図３には、１つの実施形態によるリザベーションステーション７０Ａ内のエントリの実施例が示されている。リザベーションステーション７０Ａ−Ｎの各々は、実施形態に従って種々の数のエントリを含むことができる。各エントリは、依存関係インジケータ、マルチマッチインジケータ、依存関係のストアＲＮＵＭ、オペレーションがロードか又はストアかを示すロードストア（Ｌ／Ｓ）インジケータ、及びオペレーションのＰＣを含むことができる。他の実施形態において、エントリは、他のフィールド（例えば、ソースレジスタ、宛先レジスタ、ソースオペランド）を含むことができ、及び／又は図３に示す１つ又はそれ以上のフィールドを除外することができる。更に、他の形式のエントリ（例えば、整数、浮動小数点）は、異なるようにフォーマットすることができる。
【００５３】
ＬＳＤ予測器６６は、リダイレクト指示に基づいて順序付け違反を引き起こすロードストアペアを識別するように構成することができる。リダイレクト指示は、ロード及びストアＰＣ、又は他のロード及びストア識別子を含むことができる。従って、ＬＳＤ予測器６６は、プロセッサ同じコードシーケンスがリフェッチ及び再実行される場合に、順序付け違反を引き起こすストア又はロードによって訓練して将来的にこのようなイベントを防止することができる。
【００５４】
レジスタマッパー６２は、各論理レジスタに関するエントリを有するメモリを含むことができる。レジスタマッパー６２の各論理レジスタに関するエントリは、最新の命令オペレーションのＲＮＵＭを記憶して、論理レジスタを更新することができる。追加のステータスは、リネームマップエントリに記憶することができる。例えば、或るビットは最新の命令オペレーションが実行されたか否かを示すことができる。この実施形態において、レジスタマッパー６２は、発行された命令オペレーションを識別する所定のリザベーションステーション７０からの信号を受信することができ、これによりレジスタマッパー６２は当該ビットを更新することができる。また、最新の命令オペレーションがリタイヤしたか否かを示すビットを含むことができる。
【００５５】
図３に示すユニットへの全ての接続が示されておらず、マップ／ディスパッチユニット６０は、図示しない他のオペレーションを実行する追加の回路を含み得ることに留意されたい。例えば、レジスタマッパー６２及びＲＯＢ６４は、リダイレクト指示を受信して、フラッシュされる命令オペレーションに対処するためのマッピングを調整することができる。更に、レジスタマッパー６２及びＲＯＢ６４は、リタイヤする命令オペレーションの指示を受信して、リタイヤの状態を調整することができる（例えば、新しい命令オペレーションへの割り当てのためのエントリの解放、構築されるリネーム状態の更新等）。これらのオペレーションは、ＬＳＤ予測器６６のオペレーションの助けとなるが本明細書では詳細に説明しない。
【００５６】
ＰＣ及びＲＮＵＭをストアに関する識別子として使用し、ＰＣをロードに関する識別子として使用するが、他の実施形態では、プロセッサ内で進行中の命令を独自に識別する任意の識別子を使用できることに留意されたい（例えば、任意の種類のタグ又はシーケンス番号）。
【００５７】
図４を参照すると、ロードストア依存関係予測器テーブル１つの実施形態が示されている。テーブル９０は、実施形態に応じて種々の数のエントリを含むことができる。各エントリは、重なり合うアドレスを有して、異なる順序で発行されるとして予測されたロードストアペアに対応することができる。エントリは、検出された順序付け違反に応じてテーブル９０に割り振ることができる。順序付け違反が起こっているイベントにおいて、ストアキューエントリは、違反を引き起こすロードを含むプロセッサを元のフェッチユニットにフラッシュすることができ、テーブル９０は、この違反に対して訓練することができるので、この特定のロードストアペアに関するエントリをテーブル９０に追加するようになっている。一般的に、リダイレクトを引き起こすフラッシュされたストアは既に発行されているので、フラッシュされたロードがリフェッチ及びデコードされる場合、テーブル９０のエントリは作動可能にならずロードは普通に発行される。ＰＣにおけるストアの将来の実行において、ストアはテーブル９０の対応するエントリを作動可能にして、ストアが発行されるまでロードが発行されることを防止することになる。
【００５８】
テーブル９０は、複数の命令オペレーションによる複数の同時アクセス及び更新を可能にするように構成することができる。更に、テーブル９０は統合されたテーブルとして示されているが、異なるフィールドは、別のテーブルのエントリが互いに関連した状態で、別のメモリに対応する別のテーブルとすることができる。例えば、ロードＰＣは別のテーブルとすること、ストアＰＣは別のテーブルとすること、及びロードＰＣエントリは、特定のロードストア順序付け違反が検出されて訓練された、ストアＰＣエントリに対応することができる。
【００５９】
各エントリは、有効インジケータ９２を含むことができる。有効インジケータ９２は、エントリが有効なエントリであるか否か、及びエントリがエントリで示されたロードとストアとの間の依存関係を強化するために使用すべきか否かを示すことができる。１つの実施形態において、有効インジケータ９２は、クリア又はリセットすることができる。また、有効インジケータ９２は、置換えポリシーに影響を及ぼすことができ、有効なエントリは、新しいエントリが割り振られた場合に置換される第１のエントリとすることができる。いくつかの実施形態において、有効インジケータ９２は、テーブル９０のエントリに含まれる必要はない。代わりに、これらの実施形態において、カウンタフィールド１０２の値を、エントリが有効か否かを示すために使用することができる。他の実施形態では、テーブルのカウンタフィールド１０２を除いて、有効インジケータ９２だけを使用することができる。
【００６０】
また、各エントリは、特定のストアオペレーションを識別するためのストアＰＣ値９４を含むことができる。いくつかの実施形態において、ストアＰＣ値は、アーキテクチャレジスタと組み合わせること及び／又はハッシュ値とすることができる。ストアがディスパッチされる場合、テーブル９０のストアＰＣはディスパッチされたストアのＰＣを得るためにサーチすることができる。テーブル９０は、ストアＰＣフィールドに関するＣＡＭとすることができ、メモリの各エントリは、比較を行うための回路を含む。また、ストアＰＣフィールドは、ＣＡＭとして作動されるレジスタ及びコンパレータのセットとすることができる。ディスパッチされたストアが何らかのエントリに適合する場合、これらのエントリは、作動可能ビット９８のセットを有することができる。また、ストアのＲＮＵＭは、ストアＲＮＵＭ９６のエントリフィールドに書き込むことができる。ストアがリザベーションステーションから発行される場合、作動可能ビット９８は、特定のストアによって以前に作動可能になったテーブル９０の何らかのエントリからクリアすることができる。
【００６１】
ロードがディスパッチされる場合、テーブル９０の各エントリのロードＰＣ値１００は、ディスパッチされたロードのＰＣに関してサーチされる。テーブル９０は、ロードＰＣフィールドに関するＣＡＭとすることができる。ディスパッチされたロードが、何らかの作動可能なエントリに適合する場合、依存関係を確立して特定のロードに関して有効とすることができる。ロードが作動可能でないエントリに適合する場合、対応するストアがディスパッチされていないか又は既に発行されているので依存関係は確立されないので、順序付け違反は生じない。ロードが複数の作動可能なエントリに適合する場合、ロードは、ロード自体が発行される前に古いストアが発行されるまで待つことができる。ロードが単一のエントリに適合する場合、ストアＲＮＵＭはロードを有するリザベーションステーションに書き込むことができる。また、ロード有効な依存関係を有することを示すための、リザベーションステーションのロードに関する依存関係ビットセットが存在できる。
【００６２】
また、各エントリは、カウンタフィールド１０２を含むことができる。カウンタ１０２の値は、エントリの特定のロードストアペアに関する予測強度を示すことができる。１つの実施形態において、カウンタ１０２は２ビットのアップダウンカウンタとすることができる。他の実施形態において、カウンタ１０２は他のビット数とすることができる。更に、カウンタ１０２は、最大値及び最小値で飽和するように構成することができる。
【００６３】
ストアがエントリに適合する場合、カウンタ値１０２は、エントリを作動可能にする前にチェックすることができる。カウンタ値１０２が閾値以下の場合、エントリは作動状態にしないことができる。カウンタ値１０２が閾値以上の場合、エントリは作動状態にすることができる。いくつかの実施形態において、エントリは、カウンタ値１０２をチェックすることなく作動状態にすることができる。また、ロードがエントリに適合する場合、カウンタ値１０２をチェックすることができる。カウンタ値１０２が閾値以上の場合でのみ依存関係を有効とすることができる。閾値の値は実施形態に応じて様々とすることができ、特定の動作条件に応じて調整することができる。
【００６４】
別の実施形態において、テーブル９０のエントリに対してエージアウト（ａｇｅ−ｏｕｔ）カウンタを利用することができる。各エントリはエージアウトカウンタを含むことができ、エージアウトカウンタは、ントリが最初に割り振られる際に何らかの初期値に設定することができる。また、インターバルカウンタは、プログラム可能な期間をカウントするために使用することができ、インターバルカウンタが満了する場合、テーブル９０の各エージアウトカウンタはデクリメントすることができる。その後、インターバルカウンタはゼロから開始されて、プログラム可能な期間をカウントすることができる。期間経過の度に、テーブル９０のエージアウトカウンタをデクリメントすることができる。ロードストアペアによってエントリがアクセスされるか又は作動可能にされる度に、エージアウトカウンタは一定量だけインクリメントすることができる。テーブル９０のエントリが使用されなくなると、最終的にそのエージアウトカウンタはゼロの状態になることができ、この時点でエントリを新しいエントリに置き換えることができる。
【００６５】
他の実施形態において、テーブル９０は、追加のフィールドを含むこと及び／又は図４に示す１つ又はそれ以上のフィールドを省略することができる。更に、テーブル９０は、他の実施形態において異なるようにフォーマットすることができる。
【００６６】
図５を参照すると、予測器テーブルのロードストアペアエントリに対応するカウンタ値表現の１つの実施形態が示されている。このカウンタ値の割り当ては、テーブル１１０の２ビットカウンタについて示されている。別の実施形態において、カウンタは他のビット数を使用することができる。
【００６７】
１つの実施形態において、カウンタ値「１１」つまり「３」は、「強く使用可能（strongly enabled）」を表すことができる。このカウンタ値をもつエントリについて、ロードストアペアに関する依存関係を有効とすることができる。カウンタ値「１０」つまり「２」は、「弱く使用可能（weakly enabled）」を表すことができる。エントリが「弱く使用可能」な場合、依存関係は同様に有効であるとすることができる。カウンタ値「０１」つまり「１」は、「弱く使用不能（weakly disabled）」を表すことができる。エントリが「弱く使用不能」である場合、対応するロードストアペアに関して依存関係は有効でないとすることができる。カウンタ値「００」つまり「０」は、「強く使用不能（strongly disabled）」と表すことができる。いくつかの実施形態において、「強く使用不能」は同様にエントリが有効でないことを表すことができる。図５に示す実施形態の閾値は２と１の間である。他の実施形態において、閾値は他の値とすることができる。
【００６８】
１つの実施形態において、エントリが最初に割り振られる場合、初期設定により、新しいエントリに関するカウンタは「弱く使用可能」に設定することができる。カウンタが「弱く使用不能」（カウンタ＝１）の場合、エントに適合するロードストアペアは、確立された依存関係を有することができない。その代わりに、ロードは依存関係なしに発行することができる。他の実施形態において、他のサイズのカウンタを使用することができ、カウンタ値は異なる表現とすることができる。
【００６９】
図６を参照すると、ロードオペレーションを処理する方法の１つの実施形態が示される。説明目的で、本実施形態のステップは順番に示されている。以下に示す方法の種々の実施形態において、記載される１つ又はそれ以上の要素は、同時に、図示とは異なる順番で実行すること、又は完全に削除することができることを理解されたい。また、必要であれば他の追加の要素を実行することができる。更に、フローチャートの一部は、複数のロードオペレーションを同時に処理するために並列に実行することができる。
【００７０】
１つの実施形態において、ロードオペレーションはマップ／ディスパッチユニットで受信することができる（ブロック１２０）。ロードオペレーションは、プロセッサのパイプラインの先の段階でデコードされている。次に、ロードオペレーションとして同じＰＣを有するエントリに関して、ロードストア依存関係予測器テーブルをサーチすることができる（ブロック１２２）。サーチの実行後、見つかった適合の数を判定することができる（条件ブロック１２４）。適合するものがない場合（条件ブロック１２４）、ロードを依存関係なしでリザベーションステーションにディスパッチすることができる（ブロック１２６）。ロードは作動可能でないエントリに適合することができるが、これらの作動可能でない適合は、依存関係が有効であることを必要とする可能性がある実際の適合を構成するものではない。同様に、ロードが作動可能なエントリに適合するが、予測インジケータカウンタが閾値以下の場合、これは実際の適合を構成しなので、依存関係は有効ではない可能性がある。いくつかの実施形態において、カウンタは、エントリを作動可能にする前にストアがカウンタを既にチェックしている場合、ロードに関する閾値と比較する必要がない場合もある。
【００７１】
ロードが有効とする必要がある依存関係をもたない場合、このことは種々の方法で示すことができる。例えば、１つの実施形態において、依存関係ビットをクリアしてロードが依存関係をもたないことを示すことができるブロック１２６の後で、ピッカは、何らかの他のオペレーションが発行されることを待つことなく、任意の時間にリザベーションステーションから発行するロードを選択することができる（ブロック１３２）。
【００７２】
作動可能なエントリに関して１つの適合が見つかった場合、ロードは、依存関係のあるリザベーションステーションにディスパッチすることができる（ブロック１２８）。対応するストアのＲＮＵＭは、ロードを有するリザベーションステーションエントリに書き込むことができる。１つの実施形態において、適合すると見なされるエントリに関して、エントリのカウンタフィールドは、閾値以上であることが必要である。例えば、ロードが１つの作動可能なエントリに適合するが、エントリのカウンタフィールドが閾値以下の場合（つまり弱く作動不能又は強く作動不能）、これは実際の適合を構成しない。ブロック１２８の後で、ロードは、依存関係がある対応するストアが発行されるまで発行を待つことができる（ブロック１３４）。
【００７３】
作動可能なエントリに関して、ロードについて複数の適合が見つかった場合（条件ブロック１２４）、ロードは、マルチマッチインジケータセットを有するリザベーションステーションにディスパッチすることができる（ブロック１３０）。次に、ロードは、全ての古いストアが発行されるまで、リザベーションステーションから発行されるのを待つことができる（ブロック１３６）。ロードストアユニットは、複数のリザベーションステーションを含むことができ、各リザベーションステーションは、そのエントリの中で最も古いストアを追跡するように構成することができる。複数の適合をもつロードがディスパッチされる場合、各リザベーションステーションにおいて最も古いストアを記録することができ、各リザベーションステーションから最も古いストアが発行された後、ロードは１サイクル後に発行されることができる。
【００７４】
図７を参照すると、ロードストア依存関係予測強度インジケータを調整するための方法の１つの実施形態が示されている。説明目的で、本実施形態のステップは順番に示されている。以下に示す方法の種々の実施形態において、記載される１つ又はそれ以上の要素は、同時に、図示とは異なる順番で実行すること、又は完全に削除することができることを理解されたい。また、必要であれば他の追加の要素を実行することができる。
【００７５】
依存関係のあるロードをリザベーションステーションから発行することができる（ブロック１４０）。ロードは、対応するストアがロードストアペアから発行されるまで、発行を遅らせることができる。対応するストアは、同じリザベーションステーション又は異なるリザベーションステーションから発行することができる。ロードがリザベーションステーションから発行されて実行された後、ロードデータをどこから取得したかを決定することができる（ブロック１４２）。
【００７６】
ロードデータがストアキューにある場合（条件ブロック１４４）、この特定のロードストアペアに関する依存関係予測は、良好と判断することができ、ロードストア依存関係予測器の対応するエントリのカウンタは、インクリメントすることができる（ブロック１４６）。ロードデータに関するストアキューでミスがある場合（条件ブロック１４４）、ストアの依存関係は、ロードに関して正当ではない場合があり（つまり、依存関係予測はもはや有効ではない）、ロードストア依存関係予測器の対応するエントリのカウンタは、デクリメントすることができる（ブロック１４８）。本方法は、依存関係にある複数の別のロードに関して並列に実行することができる。
【００７７】
図８を参照すると、ロードストア依存関係予測器テーブルのエントリを置き換えるための方法の１つの実施形態が示されている。説明目的で、本実施形態のステップは順番に示されている。以下に示す方法の種々の実施形態において、記載される１つ又はそれ以上の要素は、同時に、図示とは異なる順番で実行すること、又は完全に削除することができることを理解されたい。また、必要であれば他の追加の要素を実行することができる。
【００７８】
ポインタは、ロードストア依存関係予測器テーブルの隣接エントリのグループを指し示すことができ、隣接エントリのグループのカウンタ値を解析することができる（ブロック１６０）。１つの実施形態において、グループは４つのエントリを含むことができる。他の実施形態において、グループは、他の数のエントリを含むことができる。次に、最も小さいカウンタ値のエントリを選択することができる（ブロック１６２）。２つ以上のエントリが最も小さいカウンタ値をもつ場合、ポインタは、これらのエントリをランダムに選択することができ、又は、ポインタは、何らかの他の値又は評価基準を使用して、これらの最も小さいカウンタ値の各エントリを識別することができる。
【００７９】
依存関係をもつ新しい訓練されたロードストアペアに関して、この時点で新しいエントリを割り振る必要がある場合（条件ブロック１６４）、グループの中で最も小さいカウンタ値を有する選択エントリを廃棄することができ、この場所に新しいエントリを割り振ることができる（ブロック１６６）。新しいロードストアペアは、信号で伝えられるリダイレクト又はフラッシュに応じて割り振ることができ、リダイレクトは任意の時間に生じることことに留意されたい。従って、条件ブロック１６４は、図８のフローチャートの他の場所に配置することができる。新しいエントリが割り振られた後で、ポインタは、次のエントリのグループに移動することができる（ブロック１７２）。この時点で新しいエントリを割り振る必要がない場合（条件ブロック１６４）、最も小さいカウンタ値がゼロか否かを決定することができる（条件ブロック１６８）。
【００８０】
最も小さいカウンタ値がゼロの場合（条件ブロック１６８）、ポインタは、現在の位置に留まり、エントリが割り振られるまで待つことができる（ブロック１７０）。最も小さいカウンタ値がゼロでない場合（条件ブロック１６８）、ポインタは、予測器の次のエントリのグループに移動することができる（ブロック１７２）。１つの実施形態において、ポインタは、ロード又はストアがロードストア依存関係予測器をアクセスするまで、次のエントリグループに移動するのを待つことができる。別の実施形態において、ポインタは、次のクロックサイクルで次のエントリグループに移動することができる。ブロック１７２の後で、本方法はブロック１６０に戻りグループのエントリを解析するようになっている。図８に示す方法は、１つの可能性のある置換えポリシーの実施例であり、別の実施形態において、他の置換えポリシーを利用することができる（例えば、最低使用頻度の）。
【００８１】
図９を参照すると、システム１８０の１つの実施形態のブロック図が示されている。図示のように、システム１８０は、デスクトップコンピュータ１９０、ラップトップコンピュータ２００、タブレットコンピュータ２１０、セルラーホン２２０等のチップ、回路、構成要素等を表わす。例示の実施形態では、システム１８０は、外部メモリ１８２に結合されたＩＣ１０（図１）の少なくとも１つのインスタンスを含む。
【００８２】
ＩＣ１０は、１つ又はそれ以上の周辺装置１８４及び外部メモリ１８２に結合される。電源１８６も設けられ、ＩＣ１０に供給電圧を供給すると共に、メモリ１８２及び／又は周辺装置１８４に１つ又はそれ以上の供給電圧を供給する。種々の実施形態において、電源１８６は、バッテリ（例えば、スマートホン、ラップトップ又はタブレットコンピュータの充電型バッテリ）を表わす。ある実施形態では、２つ以上のＩＣ１０が含まれる（且つ２つ以上の外部メモリ１８２も含まれる）。
【００８３】
メモリ１８２は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、同期式ＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ、ＤＤＲ２、ＤＤＲ３等）ＳＤＲＡＭ（ｍＤＤＲ３等のＳＤＲＡＭの移動バージョン、及び／又はＬＰＤＤＲ２等のＳＤＲＡＭの低電力バージョンを含む）、ＲＡＭＢＵＳ  ＤＲＡＭ（ＲＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）等の任意の形式のメモリとすることができる。１つ以上のメモリ装置が回路板に結合されて、シングルインラインメモリモジュール（ＳＩＭＭ）、デュアルインラインメモリモジュール（ＤＩＭＭ）、等のメモリモジュールを形成する。もしくは、装置は、ＩＣ８８と共に、チップオンチップ構成、パッケージオンパッケージ構成、又はマルチチップモジュール構成でマウントされてもよい。
【００８４】
周辺装置１８４は、システム１８０の形式に基づいて望ましい回路を含む。例えば、１つの実施形態では、周辺装置１８４は、ｗｉｆｉ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、セルラー、グローバルポジショニングシステム、等の、種々の形式のワイヤレス通信のための装置を含む。また、周辺装置１８４は、ＲＡＭ記憶装置、ソリッドステート記憶装置、又はディスク記憶装置を含む付加的な記憶装置も含む。また、周辺装置１８４５は、タッチディスプレイスクリーン又はマルチタッチディスプレイスクリーンを含むディスプレイスクリーン、キーボード又は他の入力装置、マイクロホン、スピーカ、等のユーザインターフェイス装置を含む。
【００８５】
図１０には、ＩＣ１０（図１）に含まれる回路を表わす１つ又はそれ以上のデータ構造体を含むコンピュータ読み取り可能な媒体２３０のブロック図の１つの実施形態が示されている。一般的に述べると、コンピュータ読み取り可能な媒体２３０は、磁気又は光学的媒体のような非一時的記憶媒体、例えば、ディスク、ＣＤ−ＲＯＭ、又はＤＶＤ−ＲＯＭ、揮発性又は不揮発性メモリ媒体、例えば、ＲＡＭ（例えば、ＳＤＲＡＭ、ＲＤＲＡＭ、ＳＲＡＭ、等）、ＲＯＭ、等、並びにネットワーク及び／又はワイヤレスリンクのような通信媒体を経て搬送される電気、電磁又はデジタル信号のような送信媒体又は信号を経てアクセスできる媒体を含む。
【００８６】
一般的に、コンピュータ読み取り可能な媒体２３０における回路のデータ構造（１つ又は複数）は、プログラムにより読み取られ、そして回路より成るハードウェアを製造するために直接的又は間接的に使用される。例えば、データ構造は、ベリログ又はＶＨＤＬのような高レベルデザイン言語（ＨＤＬ）でのハードウェア機能の１つ以上の振舞いレベル記述又はレジスタ転送レベル（ＲＴＬ）記述を含む。これら記述は、合成ライブラリからのゲートのリストより成る１つ以上のネットリストを発生するために記述を合成する合成ツールによって読み取られる。ネットリストは、回路より成るハードウェアの機能も表わすゲートのセットを含む。次いで、ネットリストは、マスクに適用される幾何学的形状を記述する１つ以上のデータセットを発生するように配置され、ルーティングされる。次いで、マスクは、種々の半導体製造ステップにおいて、その回路に対応する半導体回路（１つ又は複数）を製造するのに使用される。或いは又、コンピュータ読み取り可能な媒体１４０におけるデータ構造は、必要に応じて、ネットリスト（合成ライブラリを伴うもの又は伴わないもの）でもデータセットでもよい。更に別の形態では、データ構造は、図式的プログラムの出力、或いはそこから導出されたネットリスト又はデータセットを含む。
【００８７】
コンピュータ読み取り可能な媒体２３０はＩＣ１０の表現を含むが、他の実施形態では、ＩＣ１０の任意の部分又は部分の組み合わせの表現（例えば、ＬＳＤ予測器３７、ＬＳＵ４６）が含まれてもよい。
【００８８】
前記実施形態は、具現化の非限定例であることを強調しておく。当業者であれば、前記開示が充分に理解されれば、多数の変更や修正が明らかとなろう。そのような変更や修正は、全て、特許請求の範囲に包含されることが意図される。
【符号の説明】
【００８９】
１２０  マップ／ディスパッチユニットでロードオペレーションを受信する
１２２  ロードオペレーションに関して、ロードストア依存関係予測器テーブルをサーチする
１２４  適合数？
１２６  ロードを依存関係なしでリザベーションステーションにディスパッチする
１３２  何らかの他のオペレーションが発行されることを待つことなく、ロードを発行する
１２８  ロードを依存関係のあるリザベーションステーションにディスパッチする
１３４  ロードを発行する前に対応するストアが発行されるのを待つ
１３０  マルチマッチインジケータセットを有するリザベーションステーションにロードをディスパッチする
１３６  全ての古いストアが発行されるのを待った後でロードを発行する
【図１】
2015232902.tif 000003
【図２】
2015232902.tif 000004
【図３】
2015232902.tif 000005
【図４】
2015232902.tif 000006
【図５】
2015232902.tif 000007
【図６】
2015232902.tif 000008
【図７】
2015232902.tif 000009
【図８】
2015232902.tif 000010
【図９】
2015232902.tif 000011
【図１０】
2015232902.tif 000012
【手続補正書】
【提出日】平成27年8月18日(2015.8.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
並び換えバッファと、
１つ又は複数のリザベーションステーションと、
前記１つ又は複数のリザベーションステーションに接続されたロードストア依存関係予測器と、を備えるプロセッサであって、
前記ロードストア依存関係予測器は、エントリを有するテーブルと、回路と、を備え、
前記エントリのそれぞれは、
ロード識別子と、
ストア識別子と、
並び換えバッファエントリ番号と、
予測強度のインジケータと、
各エントリのストア識別子と適合する識別子を有するストアオペレーションがディスパッチされたことを示すのに使用される作動可能ビットと、を有し、
前記回路は、
前記テーブルのエントリに記憶されたストア識別子と適合する識別子を有するストアオペレーションのディスパッチが検出されたことに応じて、前記テーブルのエントリのために、作動可能ビットをセットし、
所定のロードオペレーションが、セットされた作動可能ビットを有する所定のエントリのロード識別子と適合する識別子を有することが検出されたことに応じて、
前記所定のロードオペレーションが、前記所定のエントリのストア識別子と適合する識別子を有する所定のストアオペレーションに依存することを予測し、
前記所定のロードオペレーションのためのデータが、ストアキューを有する第１のロケーションから検索されることの決定に応じて、前記所定のエントリの予測強度のインジケータをインクリメントし、
前記所定のロードオペレーションのためのデータが、前記第１のロケーションとは異なるキャッシュの第２のロケーションから検索されることの決定に応じて、前記所定のエントリの前記予測強度のインジケータをデクリメントする、ように構成される、プロセッサ。
【請求項２】
前記テーブルの各エントリの前記予測強度のインジケータは、予測強度のカウンタを含む、請求項１に記載のプロセッサ。
【請求項３】
リザベーションステーションからの所定のストアオペレーションの発行が検出されたことに応じて、前記回路は、前記所定のストアオペレーションのディスパッチに応じて予めセットされた前記テーブルの作動可能ビットをクリアにするように構成されている、請求項１に記載のプロセッサ。
【請求項４】
前記ロードストア依存関係予測器の前記回路は、
前記所定のストアオペレーションが、前記所定のエントリの前記ストア識別子と適合する識別子を有することが検出され、前記所定のエントリの予測強度のカウンタが閾値を超えていることが確認されたことに応じて、前記所定のエントリの前記作動可能ビットをセットし、
前記所定のストアオペレーションの並び換えバッファエントリ番号を前記所定のエントリに記憶する、ように更に構成される、請求項２に記載のプロセッサ。
【請求項５】
前記１つ又は複数のリザベーションステーションの１つは、前記所定のエントリの前記並び換えバッファエントリ番号の識別情報とともに、前記所定のロードオペレーションを記憶する、請求項４に記載のプロセッサ。
【請求項６】
前記所定のストアオペレーションの発行に応じて、
前記所定のストアオペレーションの前記並び換えバッファエントリ番号がブロードキャストされ、
前記所定のロードオペレーションを記憶する前記リザベーションステーションによって、ブロードキャスト並び換えバッファエントリ番号が検出され、
前記所定のストアオペレーションの前記ブロードキャスト並び換えバッファエントリ番号が、前記所定のロードオペレーションとともに記憶された前記並び換えバッファエントリ番号の前記識別情報と適合することが検出されたことに応じて、前記所定のロードオペレーションの発行が許可される、請求項５に記載のプロセッサ。
【請求項７】
プログラム可能な時間の経過に応じて、前記テーブルの各エントリの前記カウンタがデクリメントされる、請求項２に記載のプロセッサ。
【請求項８】
エントリを有するテーブルを維持し、
前記エントリのそれぞれは、
ロード識別子と、
ストア識別子と、
並び換えバッファエントリ番号と、
予測強度のインジケータと、
各エントリのストア識別子と適合する識別子を有するストアオペレーションがディスパッチされたことを示すのに使用される作動可能ビットと、を有し、
前記テーブルのエントリに記憶されたストア識別子と適合する識別子を有するストアオペレーションのディスパッチが検出されたことに応じて、前記テーブルのエントリのために、作動可能ビットをセットする段階と、
所定のロードオペレーションが、セットされた作動可能ビットを有する所定のエントリのロード識別子と適合する識別子を有することが検出されたことに応じて、
前記所定のロードオペレーションが、前記所定のエントリのストア識別子と適合する識別子を有する所定のストアオペレーションに依存することを予測し、
前記所定のロードオペレーションのためのデータが、ストアキューを有する第１のロケーションから検索されることの決定に応じて、前記所定のエントリの予測強度のインジケータをインクリメントし、
前記所定のロードオペレーションのためのデータが、前記第１のロケーションとは異なるキャッシュの第２のロケーションから検索されることの決定に応じて、前記所定のエントリの前記予測強度のインジケータをデクリメントする段階と、を有する方法。
【請求項９】
特定の識別子を有する前記所定のロードオペレーションをディスパッチする段階と、
前記特定の識別子と適合するロード識別子を調べるために前記テーブルをサーチする段階と、
前記特定の識別子と適合するロード識別子と、セットされた作動可能ビットとを有する１つのエントリを見つけたことに応じて、前記所定のロードオペレーションと、前記１つのエントリの並び換えバッファエントリ番号に対応するストアオペレーションとの間に依存関係を確立する段階と、を更に含む、請求項８に記載の方法。
【請求項１０】
特定の識別子を有する前記所定のロードオペレーションをディスパッチする段階と、
前記特定の識別子と適合するロード識別子を調べるために前記テーブルをサーチする段階と、
それぞれが、前記特定の識別子と適合するロード識別子と、セットされた作動可能ビットとを有する複数のエントリを見つけたことに応じて、前記所定のロードオペレーションと、複数のストアオペレーションとの間に依存関係を確立する段階と、を更に含む、請求項８に記載の方法。
【請求項１１】
前記１つのエントリの前記並び換えバッファエントリ番号の識別情報とともに、リザベーションステーションに前記所定のロードオペレーションを記憶する段階と、
前記１つのエントリの前記並び換えバッファエントリ番号に対応する前記ストアオペレーションの発行に応じて、前記１つのエントリの前記並び換えバッファエントリ番号をブロードキャストする段階と、
ブロードキャスト並び換えバッファエントリ番号の検出に応じて、前記リザベーションステーションから前記所定のロードオペレーションを発行することを許可する段階と、を更に含む、請求項９に記載の方法。
【請求項１２】
前記依存関係の確立に応じて、複数のリザベーションステーションの各リザベーションステーションの中の最も古いストアオペレーションを識別する段階と、
前記複数のリザベーションステーションの各リザベーションステーションから、識別されたすべての最も古いストアオペレーションが発行されたことに応じて、前記複数のリザベーションステーションのリザベーションステーションから前記所定のロードオペレーションを発行することを許可する段階と、を更に含む、請求項１０に記載の方法。
【請求項１３】
前記テーブルの各エントリは、カウンタを備え、前記テーブルの各エントリの前記カウンタは、プログラム可能な時間の経過に応じて、デクリメントされる、請求項８に記載の方法。
【請求項１４】
前記所定のロードオペレーションよりも古いすべてのストアオペレーションが発行されたことに応じて、リザベーションステーションから前記所定のロードオペレーションを発行することを許可する段階を更に含む、請求項１０に記載の方法。
【手続補正書】
【提出日】平成27年11月2日(2015.11.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
並び換えバッファと、１つ又は複数のリザベーションステーションと、前記１つ又は複数のリザベーションステーションに接続されたロードストア依存関係予測器と、回路とを備えるプロセッサであって、
前記ロードストア依存関係予測器は、エントリを有するテーブルを備え、
前記エントリのそれぞれは、ロード識別子と、ストア識別子と、並び換えバッファエントリ番号と、予測強度のインジケータと、各エントリのストア識別子と適合する識別子を有するストアオペレーションがディスパッチされたことを示すのに使用される作動可能ビットと、を有し、
前記回路は、
前記テーブルのエントリに記憶されたストア識別子と適合する識別子を有するストアオペレーションのディスパッチが検出されたことに応じて、前記テーブルのエントリのために、作動可能ビットをセットし、
所定のロードオペレーションが、セットされた作動可能ビットを有する所定のエントリのロード識別子と適合する識別子を有することが検出されたことに応じて、
前記所定のロードオペレーションが、前記所定のエントリのストア識別子と適合する識別子を有する所定のストアオペレーションに依存することを予測し、
前記所定のロードオペレーションのためのデータが、ストアキューを有する第１のロケーションから検索されることの決定に応じて、前記所定のエントリの予測強度のインジケータをインクリメントし、
前記所定のロードオペレーションのためのデータが、前記第１のロケーションとは異なるキャッシュの第２のロケーションから検索されることの決定に応じて、前記所定のエントリの前記予測強度のインジケータをデクリメントする、ように構成される、プロセッサ。
【請求項２】
前記テーブルの各エントリの前記予測強度のインジケータは、予測強度のカウンタを含む、請求項１に記載のプロセッサ。
【請求項３】
前記ロードストア依存関係予測器の前記回路は、
前記所定のストアオペレーションが、前記所定のエントリの前記ストア識別子と適合する識別子を有することが検出され、前記所定のエントリの予測強度のカウンタが閾値を超えていることが確認されたことに応じて、前記所定のエントリの前記作動可能ビットをセットし、
前記所定のストアオペレーションの並び換えバッファエントリ番号を前記所定のエントリに記憶する、ように更に構成される、請求項２に記載のプロセッサ。
【請求項４】
前記１つ又は複数のリザベーションステーションの１つは、前記所定のエントリの前記並び換えバッファエントリ番号の識別情報とともに、前記所定のロードオペレーションを記憶する、請求項３に記載のプロセッサ。
【請求項５】
前記所定のストアオペレーションの発行に応じて、
前記所定のストアオペレーションの前記並び換えバッファエントリ番号がブロードキャストされ、
前記所定のロードオペレーションを記憶する前記リザベーションステーションによって、ブロードキャスト並び換えバッファエントリ番号が検出され、
前記所定のストアオペレーションの前記ブロードキャスト並び換えバッファエントリ番号が、前記所定のロードオペレーションとともに記憶された前記並び換えバッファエントリ番号の前記識別情報と適合することが検出されたことに応じて、前記所定のロードオペレーションの発行が許可される、請求項４に記載のプロセッサ。
【請求項６】
前記テーブルの各エントリは、プログラム可能な時間の経過に応じてデクリメントされるエージアウトカウンタをさらに備える、請求項２に記載のプロセッサ。
【請求項７】
リザベーションステーションからの所定のストアオペレーションの発行が検出されたことに応じて、前記回路は、前記所定のストアオペレーションのディスパッチに応じて予めセットされた前記テーブルの作動可能ビットをクリアにするように構成されている、請求項１に記載のプロセッサ。
【請求項８】
エントリを有するテーブルを維持し、
前記エントリのそれぞれは、ロード識別子と、ストア識別子と、並び換えバッファエントリ番号と、予測強度のインジケータと、各エントリのストア識別子と適合する識別子を有するストアオペレーションがディスパッチされたことを示すのに使用される作動可能ビットと、を有し、
前記テーブルのエントリに記憶されたストア識別子と適合する識別子を有するストアオペレーションのディスパッチが検出されたことに応じて、前記テーブルのエントリのために、作動可能ビットをセットする段階と、
所定のロードオペレーションが、セットされた作動可能ビットを有する所定のエントリのロード識別子と適合する識別子を有することが検出されたことに応じて、
前記所定のロードオペレーションが、前記所定のエントリのストア識別子と適合する識別子を有する所定のストアオペレーションに依存することを予測し、
前記所定のロードオペレーションのためのデータが、ストアキューを有する第１のロケーションから検索されることの決定に応じて、前記所定のエントリの予測強度のインジケータをインクリメントし、
前記所定のロードオペレーションのためのデータが、前記第１のロケーションとは異なるキャッシュの第２のロケーションから検索されることの決定に応じて、前記所定のエントリの前記予測強度のインジケータをデクリメントする段階と、を有する方法。
【請求項９】
特定の識別子を有する前記所定のロードオペレーションをディスパッチする段階と、
前記特定の識別子と適合するロード識別子を調べるために前記テーブルをサーチする段階と、
前記特定の識別子と適合するロード識別子と、セットされた作動可能ビットとを有する１つのエントリを見つけたことに応じて、前記所定のロードオペレーションと、前記１つのエントリの並び換えバッファエントリ番号に対応するストアオペレーションとの間に依存関係を確立する段階と、を更に含む、請求項８に記載の方法。
【請求項１０】
前記１つのエントリの前記並び換えバッファエントリ番号の識別情報とともに、リザベーションステーションに前記所定のロードオペレーションを記憶する段階と、
前記１つのエントリの前記並び換えバッファエントリ番号に対応する前記ストアオペレーションの発行に応じて、前記１つのエントリの前記並び換えバッファエントリ番号をブロードキャストする段階と、
ブロードキャスト並び換えバッファエントリ番号の検出に応じて、前記リザベーションステーションから前記所定のロードオペレーションを発行することを許可する段階と、を更に含む、請求項９に記載の方法。
【請求項１１】
特定の識別子を有する前記所定のロードオペレーションをディスパッチする段階と、
前記特定の識別子と適合するロード識別子を調べるために前記テーブルをサーチする段階と、
それぞれが、前記特定の識別子と適合するロード識別子と、セットされた作動可能ビットとを有する複数のエントリを見つけたことに応じて、前記所定のロードオペレーションと、複数のストアオペレーションとの間に依存関係を確立する段階と、を更に含む、請求項８に記載の方法。
【請求項１２】
前記依存関係の確立に応じて、複数のリザベーションステーションの各リザベーションステーションの中の最も古いストアオペレーションを識別する段階と、
前記複数のリザベーションステーションの各リザベーションステーションから、識別されたすべての最も古いストアオペレーションが発行されたことに応じて、前記複数のリザベーションステーションのリザベーションステーションから前記所定のロードオペレーションを発行することを許可する段階と、を更に含む、請求項１１に記載の方法。
【請求項１３】
前記所定のロードオペレーションよりも古いすべてのストアオペレーションが発行されたことに応じて、リザベーションステーションから前記所定のロードオペレーションを発行することを許可する段階を更に含む、請求項１１に記載の方法。
【請求項１４】
前記テーブルの各エントリは、プログラム可能な時間の経過に応じてデクリメントされるエージアウトカウンタを備える、請求項８に記載の方法。
【外国語明細書】
2015232902000001.pdf