JP5965041B2 - ロードストア依存関係予測器のコンテンツマネージメント - Google Patents

ロードストア依存関係予測器のコンテンツマネージメント Download PDF

Info

Publication number
JP5965041B2
JP5965041B2 JP2015160285A JP2015160285A JP5965041B2 JP 5965041 B2 JP5965041 B2 JP 5965041B2 JP 2015160285 A JP2015160285 A JP 2015160285A JP 2015160285 A JP2015160285 A JP 2015160285A JP 5965041 B2 JP5965041 B2 JP 5965041B2
Authority
JP
Japan
Prior art keywords
store
entry
load
identifier
predetermined
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015160285A
Other languages
English (en)
Other versions
JP2015232902A (ja
Inventor
ジー マイヤー ステファン
ジー マイヤー ステファン
エイチ ミリウス ジョン
エイチ ミリウス ジョン
アール ウィリアムズ ザ サード ジェラルド
アール ウィリアムズ ザ サード ジェラルド
ヴァッツ スパーン
ヴァッツ スパーン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Publication of JP2015232902A publication Critical patent/JP2015232902A/ja
Application granted granted Critical
Publication of JP5965041B2 publication Critical patent/JP5965041B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、全体的にはプロセッサに関し、詳細にはプロセッサのロードストア依存関係(load-store dependency)を管理するための方法及び機構に関する。
スーパースカラプロセッサは、クロックサイクル毎に多重命令を発行して実行すること及び設計に適合するできるだけ高いクロック周波数を用いることで、高性能を実現しようとするものである。クロックサイクル毎に実行される命令数を増やす1つの方法は、アウトオブオーダ(out of order)実行を行うことである。アウトオブオーダ実行において、命令は、プログラムシーケンス(プログラム順)で特定されるものとは異なる順序で実行することができる。
いくつかのプロセッサは、できるだけ積極的に命令をばらばらの順序でスケジューリングすること及び/又は実現される性能向上が最大になるように推論的に試みることができる。例えば、ロードメモリオペレーションはより一般に従属命令を有するので、古いストアメモリオペレーションよりも前にロードメモリオペレーションのスケジュール設定することが望ましい。しかしながら、場合によっては、ロードメモリオペレーションは、古いストアメモリオペレーションに従属する場合がある(例えば、ストアメモリオペレーションは、ロードメモリオペレーションがアクセスした少なくとも1バイトを更新する)。この場合、ロードメモリオペレーションは、ストアメモリオペレーションよりも前に実行される場合は間違って実行される。ロードメモリオペレーションが古い従属ストアメモリオペレーションより前に実行される場合、プロセッサは、フラッシュ及びリダイレクトする必要があり、プロセッサ性能が低下する可能性がある。
プログラムの順番でオペレーションが他のオペレーションの前に行われる場合、このオペレーションは他のオペレーションよりも古い。プログラムの順番でオペレーションが他のオペレーションの後で行われる場合、このオペレーションは他のオペレーションよりも若い。同様に、オペレーションは他のオペレーションの前又は後として示すことができ、又は以前のオペレーション、先行するオペレーションと呼ぶことができる。この関連性は、オペレーションのプログラム順を参照することができる。更に、「ロードメモリオペレーション」又は「ロードオペレーション」はデータをメモリ又はキャッシュからプロセッサへ転送すること、「ストアメモリオペレーション」又は「ストアオペレーション」はデータをプロセッサからメモリ又はキャッシュへ転送することに言及することができる。「ロードオペレーション」及び「ストアオペレーション」は、本明細書では簡潔に「ロード」及び「ストア」と呼ぶ。
ロードとストアとの間の依存関係は動的であるが、一般的にこれらのイベントを妨げる機構は本質的に静的である。従って、ロードストアペアに関するアウトオブオーダ違反を防止するために、プロセッサは、アウトオブオーダを過度に補償して、積極的にスケジュール設定しない可能性がある。この場合、プロセッサは、不必要に命令を順番になるように要求することになる。依存関係がもはや必要ないがそれでも有効である場合、メモリレベルの並行処理が制限されて、プロセッサ効率が低下することになる。
ロードストア依存関係を予測するためのシステム、装置、プロセッサ、及び方法が意図される。プロセッサは、少なくともディスパッチユニット、ロードストア依存関係予測器、及びリザベーションステーションを含む。若いロードと依存関係のある古いストアとの間の順序付け違反が検出されると、これはロードストア依存関係予測器に関する訓練イベントを引き起こす。ロードストアペアの訓練後に、予測器は、依存関係をロードに付加することができ、次回、ロードはディスパッチユニットを通り過ぎる。この付加された依存関係は、ストアがスケジューリングされるまで、ロードがリザベーションステーションから出るようにスケジューリングできないことを示す。
1つの実施形態において、予測器テーブルを使用して、依存関係があるとして見出されたロードストアペアを記憶することができる。若いロードがアドレス依存関係を共有する古いストアの前に発行される場合、エントリは、予測器テーブルに割り振ることができ、1つの実施形態において、このエントリは、少なくともストアに関するストアプログラムカウンタ(PC)の一部、及び依存関係のあるロードに関するロードPC値の一部に関連することができる。また、予測器テーブルの各エントリは、カウンタフィールドを含むことができ、カウンタフィールドは、特定のロードストアペアに関するデータ依存関係の予測強度を表すことができる。カウンタフィールドにより、古いか又はもはや有効でない場合は、予測された依存関係をクリアすることができる。
また、カウンタフィールドの値は、予測器テーブルに関する置換えポリシーに影響を与えることができる。置換えポインタは、予測器のエントリを絶えずスキャンして、低いカウンタ値のエントリを見つけることができる。1つの実施形態において、予測器テーブルがアクセスされる度に、置換えポインタを進めることができる。置換えポインタがカウンタ値ゼロのエントリを見つけると、ポインタは、このエントリで停止することができる。依存関係のある新しいロードストアペアに新しいエントリが割り振られると、ポインタが示すカウンタがゼロの既存のエントリは、新しいエントリのために使用される。
前記及び他の特徴及び利点は、当業者には本明細書に示すアプローチの以下の詳細な説明から明らかになるであろう。
本方法及び機構の前記の及び更なる利点は、添付図面と一緒に以下の説明を参照することで良好に理解できるであろう。
集積回路の一部の1つの実施形態を示す。 プロセッサコアの1つの実施形態を示すブロック図である。 マップ/ディスパッチユニット及びリザベーションステーションの1つの実施形態を示すブロック図である。 ロードストア依存関係予測器テーブルの1つの実施形態を示す。 ロードストア依存関係予測器テーブルで使用されるカウンタ値の表現の1つの実施形態を示すブロック図である。 ロードオペレーションを処理する方法の1つの実施形態を示す一般化フローチャートである。 ロードストア依存関係予測強度インジケータを調整する方法の1つの実施形態を示す一般化フローチャートである。 ロードストア依存関係予測器テーブルのエントリを置換する方法の1つの実施形態を示す一般化フローチャートである。 システムの1つの実施形態のブロック図である。 コンピュータ可読媒体の1つの実施形態のブロック図である。
以下の説明において、多数の特定の詳細内容が明記され、本明細書に示される方法及び機構の完全な理解が可能になっている。当業者であれば、これらの特定の詳細内容がなくても種々の実施形態を実施できることを理解できるはずである。例えば、公知の構造、構成要素、信号、コンピュータプログラム命令、及び技術は、本明細書で説明する手法が不明確になるのを避けるために詳細に示されていない。簡潔かつ明瞭な説明のために、図面に示す要素は、必ずしも縮尺通りに示されていないことを理解されたい。例えば、一部の要素の寸法は、他の要素に比べて誇張されている。
本明細書は、「1つの実施形態」という記載を含む。「1つの実施形態において」という語句が異なる文脈で出現する場合は必ずしも同じ 実施形態に言及するものではない。特定の特徴、構成、又は特性は、本開示に適合する任意の適切な方法で組み合わせることができる。更に、本出願全体にわたって使用する場合、用語「〜できる(may)」は、必須の意味(つまり、必要があるという意味)ではなく、許可するという意味(つまり、可能性があるという意味で使用される)。同様に、用語「〜を含む(include、including、includes)」は、包含するという意味であるが限定されるものではない。
専門用語
以下に、本開示(請求項を含む)に見出される用語に関する定義及び/又は文脈を提示する。
「備える(Comprising)」。この用語は非制限的である。請求項で使用する場合、付加的な構造又はステップを除外するものではない。「ロードストア依存関係予測器を備えるプロセッサ〜」という請求項を考える。このような請求項は、プロセッサが付加的な構成要素(例えば、キャッシュ、フェッチユニット、実行ユニット)を含むことを除外するものではない。
「〜ように構成された(Configured To)」。種々のユニット、回路、又は他の構成要素は、1つ又は複数のタスクを遂行するように「構成される」ものとして説明され又は請求される。この点について、「構成される」とは、ユニット/回路/構成要素が動作中に1つ又は複数のタスクを遂行する構造体(例えば、回路)を含むことを指示することにより、構造体を暗示するのに使用される。従って、ユニット/回路/構成要素は、その指定のユニット/回路/構成要素が現在動作していない(例えば、オンでない)ときでも、タスクを遂行するように構成されると言うことができる。「構成される」の言語と共に使用されるユニット/回路/構成要素は、ハードウェア、例えば、回路、動作を具現化するために実行できるプログラム命令を記憶するメモリ、等を含む。ユニット/回路/構成要素が1つ又はそれ以上のタスクを遂行するように「構成された」という表現は、そのユニット/回路/構成要素に関して35U.S.C.§112、第6節を引用しないことが明確に意図される。更に、「構成される」は、問題とするタスクを遂行できるようにソフトウェア及び/又はファームウェア(例えば、ソフトウェアを実行するFPGA又は汎用プロセッサ)を動作することでオペレーションされるジェネリック構造体(例えば、ジェネリック回路)を含む。また、「構成される」は、1つ又はそれ以上のタスクを具現化又は遂行するデバイス(例えば、集積回路)を製造するように製造プロセス(例えば、半導体製造ファシリティ)を適用することも含む。
「〜に基づく(Based On)」。ここで使用するこの用語は、決定に影響する1つ以上のファクタを記述するのに使用される。この用語は、決定に影響する付加的なファクタを除外するものではない。即ち、決定は、これらのファクタのみに基づいてもよいし、又はこれらのファクタに少なくとも一部分基づくものでもよい。「Bに基づいてAを決定する(determine A based on B)」という句について考える。Bは、Aの決定に影響するファクタであるが、そのような句は、Aの決定を、Cに基づくことからも除外しない。他の例では、Aは、Bのみに基づいて決定されてもよい。
図1を参照すると、集積回路(IC)の一部の1つの実施形態を示すブロック図が示されている。図示の実施形態において、IC10は、プロセッサコンプレックス12、メモリコントローラ22、及びメモリ物理的インタフェース回路(PHY)24及び26を含む。また、IC10は図1に示されていない多数の他の構成要素を含み得ることに留意されたい。種々の実施形態において、IC10は、システムオンチップ(SoC)、特定用途向け集積回路(ASIC)、又は装置と呼ぶこともができる。
プロセッサコンプレックス12は、中央処理装置(CPU)14及び16、レベル2(L2)キャッシュ18、及びバスインタフェースユニット(BIU)20を含むことができる。他の実施形態において、プロセッサコンプレックス12は、他の多数のCPUを含むことができる。また、CPU14及び16は、プロセッサ又はコアと呼ぶことができる。CPU14及び16は、L2キャッシュ18に接続することができる。L2キャッシュ18は、BIU20に接続することができ、BIU20は、メモリコントローラ22に接続することができる。他の実施形態は、さらなるレベルのキャッシュ(レベル3(L3)キャッシュ)を含むことができる。プロセッサコンプレックス12は、図1に示されていない他の構成要素を含み得ることに留意されたい。
CPU14及び16は、命令セットアーキテクチャで定義される命令を実行する回路を含むことができる。特に、命令を含む1つ又はそれ以上のプログラムは、CPU14及び16で実行できる。何らかの命令セットアーキテクチャは、種々の実施形態において実行することができる。例えば、1つの実施形態において、PowerPC(登録商標)命令セットアーキテクチャを実行することができる。他の例示的な命令セットアーキテクチャとしては、ARM(登録商標)命令セット、MIPS(登録商標)命令セット、SPARC(登録商標)命令セット、x86命令セット(IA−32とも呼ばれる)、IA−64命令セット等を挙げることができる。
種々の実施形態において、CPU14及び16は、異なる順序で命令を実行することができ、このことは順序付け違反を引き起こす場合がある。例えば、ロード及びストア命令の場合、順序付け違反は、重なっている物理アドレスで古いストアの前に若いロードを実行した場合に発生する。このタイプの順序付け違反の反復を避けるか又は防止するために、種々の技術を用いて、若いロードが依存関係のある古いストアの前に実行されることを防止するようになっている。1つの実施形態において、CPU14及び16の各々は、依存関係があることが予測又は期待され、異なる順序で実行される傾向がある、ロードストアペアを追跡するためのロードストア依存関係予測器を含むことができる。1つの実施形態において、依存関係のロードストアペアは、テーブルに記録することができる。
時として予測器はロードストアペアを訓練することができるが、依存関係は例外的とすることができる。このことは、ロード命令とストア命令との間の依存関係がアドレスに基づくことができ、ロード及びストア命令のアドレスが経時的に変わる場合があるので起こる。換言すると、ロードストア依存関係は動的である可能性がある。テーブルの一部のエントリは所定期間後には正確でない可能性があり、不正確なエントリに関する依存関係を実行することは、プロセッサが不必要にロードオペレーションを遅延させることにつながる。
陳腐化したエントリがテーブルに蓄積することを防止するために、及び陳腐化したエントリに対応するロードストアペアに対して依存関係が強制されることを防止するために、テーブルの各エントリは、依存関係予測の強度を表すインジケータを含むこともできる。インジケータは、依存関係が所定のロードストアペアに対して有効であるか否かを決めることができる。また、インジケータは、テーブルエントリの置換えポリシーに影響を及ぼすことができ、インジケータ値が低いエントリは、新しいエントリがテーブルに割り振られる際に置換することができる。
また、CPU14及び16の各々は、レベル1(L1)キャッシュ(図示せず)を含むことができ、各L1キャッシュは、L2キャッシュ18に接続することができる。1つの実施形態において、L2キャッシュ18は、CPU14及び16による短待ち時間のアクセスに関する命令及びデータをキャッシュするように構成することができる。L2キャッシュ18は、任意の容量及び構成(例えば、ダイレクトマップ方式、セットアソシアティブ方式)を含むことができる。L2キャッシュ18は、BIU20経由でメモリコントローラ22に接続することができる。また、BIU20は、CPU14及び16、並びにL2キャッシュ18を種々の他のデバイス及びブロックに接続するための、種々の他の論理構成を含むことができる。
メモリコントローラ22は、任意数のメモリポートを含むことができ、メモリにインタフェース接続するように構成される回路を含むことができる。例えば、メモリコントローラ22は、同期式DRAM(SDRAM)、ダブルデータレート(DDR)SDRAM、DDR2 SDRAM、ラムバスDRAM(RDRAM)等の、ダイナミックランダムアクセスメモリ(DRAM)にインタフェース接続するように構成することができる。また、メモリコントローラ22は、メモリ物理的インタフェース回路(PHY)24及び26に接続することができる。メモリPHY24及び26は、メモリコントローラ22に接続することができる任意数のメモリPHYを表す。メモリPHY24及び26は、メモリ素子(図示せず)にインタフェース接続するように構成することができる。
他の実施形態は、図1及び/又は他の構成要素に示す構成要素のサブセット又は上位セットを含む、他の構成要素の組み合わせを含み得ることに留意されたい。図1は所定の構成要素の例を示すことができるが、他の実施形態は、2つ又はそれ以上の所定の構成要素の例を示すことができる。同様に、詳細な説明の全体にわたって、所定の構成要素の1つの例だけが示されている場合でも2つ又はそれ以上の例を含むことができ、及び/又は複数の例が示される場合でも1つの例だけを含む実施形態を用いることができる。
図2を参照すると、プロセッサコアの1つの実施形態が示されている。コア30は、プロセッサコアの1つの実施例であり、コア30は、図1のプロセッサコンプレックス12のようなプロセッサコンプレックス内で用いることができる。1つの実施形態において、図1のCPU14及び16の各々は、コア30の構成要素及び機能を含むことができる。コア30は、フェッチ−デコード(FED)ユニット32、マップ−ディスパッチユニット36、メモリ管理ユニット(MMU)40、コアインタフェースユニット(CIF)42、実行ユニット44、及びロードストアユニット(LSU)46を含むことができる。コア30は、図2に示されていない他の構成要素及びインタフェースを含み得ることを理解されたい。
FEDユニット32は、メモリから命令を読み取りレベル1(L1)命令キャッシュ34に格納するように構成される回路を含むことができる。L1命令キャッシュ34は、コア30が実行することになる命令を記憶するためのキャッシュメモリとすることができる。L1命令キャッシュ34は、任意の容量及び構成(例えば、ダイレクトマップ方式、セットアソシアティブ方式、フルアソシアティブ方式)を有することができる。更に、L1命令キャッシュ34は、任意のキャッシュラインサイズを有することができる。また、FEDユニット32は、分岐命令を予測して予測した経路をフェッチダウンする分岐予測ハードウェアを含むことができる。また、FEDユニット32は、リダイレクトすることができる(例えば、予測ミス、除外、割り込み、フラッシュ等により)。
また、FEDユニット32は、命令を命令オペレーション(op)にデコードするように構成することができる。一般に、命令オペレーションは、実行ユニット44及びLSU46に含まれるハードウェアが実行することができるオペレーションとすることができる。各命令は、実行されると、命令セットアーキテクチャによる命令に関して定義されるオペレーションの遂行につながる、1つ又はそれ以上の命令オペレーションに変換することができる。FEDユニット32は、複数の命令を並行にデコードするように構成することができる。
いくつかの実施形態において、各命令は、単一の命令オペレーションにデコードすることができる。FEDユニット32は、命令タイプ、ソースオペランド等を特定するように構成することができ、デコードされた命令オペレーションの各々は、いくつかのデコード情報と一緒に命令を含むことができる。命令が単一の命令オペレーションに変換される別の実施形態において、各命令オペレーションは、単純に対応する命令又はその一部とすることができる(例えば、命令の1つ又は複数のオペコード)。いくつかの実施形態において、FEDユニット32は、命令に関する命令オペレーションを発生するための回路及び/又はマイクロコードの任意の組み合わせを含むことができる。例えば、比較的単純な命令オペレーション(例えば、命令ごとに1つ又は2つの命令オペレーション)の生成はハードウェアで処理することができるが、より広範な命令オペレーション(例えば、1つの命令に関して3つ以上の命令オペレーション)の生成はマイクロコードで処理することができる。他の実施形態において、FEDユニット32に含まれる機能性は、フェッチユニット、デコードユニット、及び/又は他のユニットのような2つ又はそれ以上の別個のユニットに分けることができる。
デコードされた命令オペレーションは、マップ/ディスパッチユニット36に与えることができる。マップ/ディスパッチユニット36は、命令オペレーション及びアーキテクチャレジスタをコア30の物理レジスタにマッピングするように構成することができる。マップ/ディスパッチユニット36は、レジスタリネームを実行して、命令オペレーションからのマップソースレジスタアドレスを、リネームされたソースレジスタを特定するソースオペランド数にマッピングするようになっている。また、マップ/ディスパッチユニット36は、命令オペレーションを実行ユニット44及びLSU46内のリザベーションステーションにディスパッチするように構成することができる。マップ/ディスパッチユニット36は、ロードストア依存関係(LSD)予測器37及び並び換えバッファ(ROB)38を含むことができる。ディスパッチされる前に、命令オペレーションは、ROB38に書き込むことができる。ROB38は、順序通りに完遂できるまで命令オペレーションを保持するように構成することができる。各命令オペレーションには、ROB38の特定のエントリに対応するROBインデックス(RNUM)を割り当てることができる。RNUMは、コア30で進行中のオペレーションを追跡するために使用することができる。また、マップ/ディスパッチユニット36は、図2には示されていない他の構成要素(例えば、マッパーアレイ、ディスパッチユニット、ディスパッチバッファ)を含むことができる。更に、他の実施形態において、マップ/ディスパッチユニット36に含まれる機能性は、マップユニット、ディスパッチユニット、及び/又は他のユニットのような、2つ又はそれ以上の別個のユニットに分けることができる。
LSD予測器37は、依存関係のロードストア命令ペアを訓練して異なる順序になる可能性を予測するように構成することができる。LSD予測器37は、訓練されたロードストアペアに関するエントリを含むテーブルを備えることができ、各エントリは、ロード及びストア命令、並びに予測強度を特定する情報を含むことができる。1つの実施形態において、訓練イベントは、重なっている物理アドレスで古いストアの前に若いロードを実行することで引き起こされる順序付け違反である。1つの実施形態において、テーブルは、256−エントリが完全に結合した構造とすることができる。他の実施形態において、テーブルは他の数のエントリを有することができる。種々の実施形態において、テーブルは、テーブルの種々のフィールドに関して内容参照可能メモリ(CAM)とすることができる。
依存関係のロードオペレーションとストアオペレーションとの間で順序違反がある場合、コア30は、リダイレクト及び再同期することができる。リダイレクトの結果として種々の修正動作を行うことができる。現段階では、再同期が生じた特定のロードストアペアに対して訓練を行うことができる。この特定のペアに関するエントリは、LSD予測器37に割り振ることができ、予測強度は高レベルに設定することができる。次に、コア30のパイプラインを通る次のパスにおいて、ロードストアペアからのストアがユニット36からディスパッチされる場合、ストアに関してLSD予測器37をサーチすることができる。適合するエントリを探して作動可能にすることができる。訓練されたロードストアペアからのロードがユニット36からディスパッチされると、ロードに関するLSD予測器37のサーチを行うことができ、ロードは作動可能になったエントリに適合することになる。次に、ロードは、依存関係を有するリザベーションステーションにディスパッチされることができ、ロードは、リザベーションステーションから発行される前にストア上で待機することになる。
LSD予測器37は、エントリを作動可能にしたストアが、該ストアが発行される前に命令パイプラインからフラッシュされる場合、テーブルをクリーンアップするように構成することができる。例えば、故障した場合のような作動可能になったLSD予測器37のエントリを取り除く必要がある場合に、或るシナリオが可能である。ロードオペレーションは、フラッシュアウトされたストアオペレーションに依存してこれを待つことができ、このことはデッドロックしたコア30につながる。この場合、ストアオペレーションがコア30からフラッシュされる場合、フラッシュされたストアに対応する何らかの作動可能なエントリに関してLSD予測器37のテーブルをサーチすることができる。フラッシュされたストアに関して見つかった何らかの適合するエントリを取り除くことができる。1つの実施形態において、LSD予測器37の各エントリは、ロードストアペアの特定のストアを特定するためのストアRNUMを含むことができる。
実行ユニット44は、任意数及び任意形式の実行ユニット(例えば、整数、浮動小数点、ベクトル)を含むことができる。また、実行ユニット44の各々は、1つ又はそれ以上のリザベーションステーション(図示せず)を含むことができる。CIF42は、LSU46、FEDユニット32、MMU40、及びL2キャッシュ(図示せず)に接続することができる。CIF42は、コア30とL2キャッシュとの間のインタフェース接続を管理するように構成することができる。MMU40は、アドレス変換及びメモリ管理機能を行うように構成することができる。
LSU46は、L1データキャッシュ48、リザベーションステーション50及び52、ストアキュー54、及びロードキュー56を含むことができる。ロード及びストアオペレーションは、マップ/ディスパッチユニット36からリザベーションステーション50及び52にディスパッチすることができる。他の実施形態は、他の複数のリザベーションステーションを含むことができる。オペレーションは、リザベーションステーション50及び52から異なる順序で発行することができる。ストアキュー54は、ストアオペレーションに対応するデータを記憶することができ、ロードキュー56は、ロードオペレーションに関連するデータを記憶することができる。また、LSU46は、CIF42経由でL2キャッシュに接続することができる。また、LSU46は、図2に示されていない他の構成要素(例えば、レジスタファイル、プリフェッチ、トランスレーション・ルックアサイド・バッファ)を含み得ることに留意されたい。
ロードストア順序違反は、古いストアが発行された時点でLSU46が検出することができる。1つの実施形態において、古いストア記憶アドレスは、ロードキュー56内の全ての若いロードと比較することができる。一致が検出された場合、ロードオペレーションは、誤ったデータで完了している。これは、ロード及びストアオペレーションのRNUMを使用して元のマップ/ディスパッチユニット36にリダイレクトする信号を発することで将来修正することができる。マップ/ディスパッチユニット36は、コア30のパイプラインからの命令をフラッシュして、コア30のフロントエンドを元のロードの命令アドレスにリダイレクトすることができ、ロード命令は、リフェッチすることができる。更なるリダイレクトを防止するために、マップ/ディスパッチユニット36は、LSD予測器37においてストアに対するロードの依存関係を予測して記録して、予測した依存関係をリザベーションステーション50及び52に連絡することができる。
典型的には、ストアがディスパッチされる場合、ストアは、LSD予測器37をサーチして、ストアに関して適合する場合、テーブルの適合エントリは、作動可能に(つまり、アクティブ)にすることができ、ストアRNUMは、エントリに書き込むことができる。その後、ロードはディスパッチすることができ、テーブル内のロード全体のサーチを行うことができる。1つの実施形態において、LSD予測器37をサーチするために使用される識別値は、少なくともロード及びストアPC値の一部とすることができる。別の実施形態において、サーチを行うために使用されてエントリに記憶される識別値は、少なくともPC値の一部、少なくともアーキテクチャレジスタ値の一部、及び/又は少なくともマイクロオペレーション値の一部から生じるハッシュ値とすることができる。他の識別子を利用することが可能であり想定されている。
種々の実施形態において、LSD予測器37において任意数のエントリに適合することができる。1つの実施形態において、適合が生じるように、エントリを作動可能にする必要がある。ロードが1つの作動可能になったエントリに適合する場合、作動可能になったストアRNUMをロードにリンク付けすることで、ストアRNUMへの依存関係を付与することができる。ロードは、リザベーションステーションから発行される特定のストアRNUMを待つようにマーク付けすることができる。リザベーションステーションにおいて、ロードに関する依存関係フィールドがあり、ロードは、リザベーションステーション50又は52から発行される所定のストアに依存するようにマーク付けすることができる。従って、この場合、ロードは、特定のストアRNUMを待つようにマーク付けすること、及びロードは、特定のストアの発行後の1サイクルを発行することができる。
ロードが複数の作動可能なストアエントリに適合する場合、これはマルチマッチケースと呼ぶことができる。この場合、ロードは、発行前に全ての古いストアが発行されるまで待つことができる。例えば、1つの実施形態において、或るビットは、ロードが自身の発行前に全ての古いストアが発行されるまで待つことができるように設定することができる。これにより、ロードに先だって全ての古いストアをリザベーションステーション50及び52から発行させることができる。1つの実施形態において、リザベーションステーション50及び52の各々は、含まれる最も古いストアを利用することができる。ロードが、両者のストアよりも古くなるとロードを発行できる。
リザベーションステーション50及び52の各々は、有効な何らかのオペレーションを発行するように構成されるピッカを含むことができる。ストアが有効になり、ピックされて発行されると、タグを一斉送信することができ、このストアに依存関係のあるロードは、タグに適合することになる。このことは、ロードをリザベーションステーションから発行する資格があるものとしてマーク付けすることになる。換言すれば、ストアは、ロードで使い果たされるタグを生成する。1つの実施形態において、タグは、ストアRNUMとすることができる。1つの実施形態において、RNUMは9ビット値とすることができるが、他の実施形態において、RNUMの大きさは様々とすることができる。依存関係を有するロードは、リザベーションステーションにおいてロードと一緒に記憶される追加のソースを有することができ、この追加のソースは、LSD予測器37の同じエントリからのストアのRNUMとすることができる。
ロードがLSD予測器37のエントリに適合してこのエントリが作動可能な場合、このことはロードが待つ必要がある有効なストアが存在することを意味する。また、エントリは、予測強度に関するインジケータを含むことができる。1つの実施形態において、インジケータはカウンタとすることができ、カウンタ値が閾値以上の場合、エントリは強力で予測の可能性が高いと考えることができ、ロードストア依存関係を設定することができる。閾値の値は、各実施形態で様々とすることができる。ロードが作動可能なエントリに適合して、インジケータが脆弱な場合、予測を使用しないように示唆してロードに関する依存関係を確立できない。ロードストア依存関係が確立される場合には、ロードは、ストアRNUMをピックアップすることができ、RNUMは、エントリを読み出して、ロードがディスパッチされている場合はロードと一緒にリザベーションステーションに転送する。また、ロードは、リザベーションステーションにおいて依存関係があるとしてマーク付けすることができる。
1つの実施形態において、リザベーションステーションから発行されるストアは、該ストアが有効なプロデューサであるとマーク付けされる場合にのみ一斉送信されるタグを生成することができる。ストアがLSD予測器37をサーチして適合するものが見つからなかった場合、ストアは、有効なプロデューサとして設定されないことになる。ストアがLSD予測器37において有効なエントリを見出して、予測強度インジケータが、ロードストアペア依存関係予測が閾値以上であることを示す場合(つまり、予測がオン作動する)、エントリは作動可能とすることができる。1つの実施形態において、予測強度インジケータが閾値以下である場合、ストアが当該ストアエントリに適合するとしても、ストアはエントリを作動可能にしないことになる。いくつかの実施形態において、エントリは、ストアが予測強度インジケータの値に関わらず適合するものを見出す場合、作動可能にすることができる。ストアは、複数のエントリに適合することができ、複数のエントリは、単一のストアに関して作動可能にすることができる。
ロードがLSD予測器37の作動可能なエントリに適合する場合、ロードは、依存関係があるものとしてマーク付けされ、対応するストアがリザベーションステーションから発行されるまで、ロードはリザベーションステーションから発行されるのを待つことができる。次に、設定された依存関係を有するロードが発行されると、ロードがどこからデータを受信するかを決定することができる。ロードがどこからデータを受信するかに応じて、対応するLSD予測器37のエントリにおいて、予測強度インジケータは、増大、減少、又は現状維持とすることができる。
例えば、ロードデータがストアキュー54から送られる場合、LSD予測器37からの予測は良好とすることができる。この場合、ストアからのデータは未だキャッシュ48に到着していないので、ロードがストアを待つことは好都合である。このロードオペレーションのロードデータが未だストアキュー54にある場合、このことは、ロードとストアとの間に実際に真の依存関係があることを示すことができる。換言すると、データは、依存関係のあるロードに関するストアキュー54から送る必要がある。
ロードデータに関するストアキュー54でミスがある場合依存関係はもはや有効ではない。過去に依存関係があったが、ロード又はストアのアドレスが変わってロード及びストアがもはや衝突しないという可能性がある。この場合、ストアデータがキャッシュ48から検索されると、データは長時間そこに記憶されている可能性がある。従って、ストアデータがストアキュー54から送られてきたか又はキャッシュ48から送られてきたかを判定することで、予測が正確か否かを示すことができる。更に、この判定に基づいて、LSD予測器37の適合するエントリに記憶される予測強度インジケータを更新することができる。ロードデータがストアキュー54から発行されるような、予測が正確な場合、予測強度インジケータは増大させることができる。ロードデータがキャッシュ48から到来する場合、予測強度インジケータは低減させることができる。他の実施形態において、依存関係予測が正確か否かを判定するために他の技術を利用することができる。
図2に示す機能分散は、プロセッサコアで使用することができる、唯一の可能性のあるマイクロアーキテクチャではないことを理解されたい。他のプロセッサコアは、他の構成要素を含むこと、図示の1つ又はそれ以上の構成要素を除外すること、及び/又は各構成要素の機能性の異なる構成を含むことができる。
図3を参照すると、マップ/ディスパッチユニット及びリザベーションステーションの1つの実施形態のブロック図が示される。1つの実施形態において、マップ/ディスパッチユニット60は、レジスタマッパー62、並び換えバッファ(ROB)64、ロードストア依存関係(LSD)予測器66、及びディスパッチユニット68を含むことができる。レジスタマッパー62及びLSD予測器66はデコードユニット(図示せず)から命令オペレーションを受信するように接続される。LSD予測器66は、デコードユニットからPCを受信するように接続され、ロードストアユニット(図示せず)から「リダイレクト」及び「カウントアップデート」信号を受信するように接続される。また、LSD予測器66は、新しいエントリが割り振られた場合に廃棄することができるエントリに関してLSD予測器66をサーチする「リプレースメントポインタ」に接続される。
レジスタマッパー62は、アーキテクチャレジスタを物理レジスタにマッピングして、命令オペレーション及び物理レジスタアドレスをディスパッチユニット68に提供するように構成することができる。ディスパッチユニット68は、命令オペレーションをリザベーションステーション70A−Nにディスパッチするように構成することができる。ディスパッチユニット68は、リザベーションステーション70A−Nのリザベーションステーションエントリのフリーリストを維持するように構成することができ、エントリを命令オペレーションに全体的に割り当てて、各リザベーションステーション70A−Nの間の負荷をバランスさせるようになっている。
LSD予測器66は、命令オペレーションのストア及びロードをチェックするように構成することができ、任意の検出されたストア及びロードを、以前に順序付け違反を起こして訓練テーブルのエントリに割り振られている、ストア及びロードのPCと比較することができる。PCが所定のストに適合する場合、LSD予測器66は、対応する訓練テーブルのエントリを作動可能にするように構成することができる。1つの実施形態において、LSD予測器66は、エントリを作動可能にする前に予測強度のインジケータをチェックすることができる。インジケータが閾値以上の場合、エントリは作動可能になり、さもなければ、インジケータが閾値以下の場合、エントリは作動可能にならない。更に、LSD予測器66は、ストアの識別子としてストアに割り当てられるRNUMを取り込むように構成することができる。
作動可能なエントリに適合するロードが検出され、作動可能なエントリに関する予測強度のインジケータが閾値以上の場合、LSD予測器66は、ストア識別子を使用してストアに対するロードの依存関係を生成するように構成することができ、ロードが、ストアの発行が終わるまでリザベーションステーション70から発行されることを防止するようになっている。1つの実施形態において、LSD予測器66は、ロードが依存関係を有するというインジケータと一緒にRNUMを所定のリザベーションステーション70へ送るように構成することができる。更に、ロードに関する複数の適合がある場合、LSD予測器66は、マルチマッチインジケータを所定のリザベーションステーション70へ送ることができる。他の実施形態において、LSD予測器66は、マルチマッチケースにおいて複数のストアRNUMをリザベーションステーション70へ送るように構成することができ、リザベーションステーション70は、ロード毎に2つ以上のストアRNUMを記憶するように構成することができる。他の実施形態では、ストア依存関係を他の様式で示すことができる。
リザベーションステーション70A−Nは、ロードストアユニット(図示せず)及び/又は実行ユニット(図示せず)の一部として使用することができる任意の数のリザベーションステーションで表される。リザベーションステーション70A−Nの各々は、オペレーションが対応する機能ユニットで実行されるまでオペレーションを記憶するように構成することができる。図3には、1つの実施形態によるリザベーションステーション70A内のエントリの実施例が示されている。リザベーションステーション70A−Nの各々は、実施形態に従って種々の数のエントリを含むことができる。各エントリは、依存関係インジケータ、マルチマッチインジケータ、依存関係のストアRNUM、オペレーションがロードか又はストアかを示すロードストア(L/S)インジケータ、及びオペレーションのPCを含むことができる。他の実施形態において、エントリは、他のフィールド(例えば、ソースレジスタ、宛先レジスタ、ソースオペランド)を含むことができ、及び/又は図3に示す1つ又はそれ以上のフィールドを除外することができる。更に、他の形式のエントリ(例えば、整数、浮動小数点)は、異なるようにフォーマットすることができる。
LSD予測器66は、リダイレクト指示に基づいて順序付け違反を引き起こすロードストアペアを識別するように構成することができる。リダイレクト指示は、ロード及びストアPC、又は他のロード及びストア識別子を含むことができる。従って、LSD予測器66は、プロセッサ同じコードシーケンスがリフェッチ及び再実行される場合に、順序付け違反を引き起こすストア又はロードによって訓練して将来的にこのようなイベントを防止することができる。
レジスタマッパー62は、各論理レジスタに関するエントリを有するメモリを含むことができる。レジスタマッパー62の各論理レジスタに関するエントリは、最新の命令オペレーションのRNUMを記憶して、論理レジスタを更新することができる。追加のステータスは、リネームマップエントリに記憶することができる。例えば、或るビットは最新の命令オペレーションが実行されたか否かを示すことができる。この実施形態において、レジスタマッパー62は、発行された命令オペレーションを識別する所定のリザベーションステーション70からの信号を受信することができ、これによりレジスタマッパー62は当該ビットを更新することができる。また、最新の命令オペレーションがリタイヤしたか否かを示すビットを含むことができる。
図3に示すユニットへの全ての接続が示されておらず、マップ/ディスパッチユニット60は、図示しない他のオペレーションを実行する追加の回路を含み得ることに留意されたい。例えば、レジスタマッパー62及びROB64は、リダイレクト指示を受信して、フラッシュされる命令オペレーションに対処するためのマッピングを調整することができる。更に、レジスタマッパー62及びROB64は、リタイヤする命令オペレーションの指示を受信して、リタイヤの状態を調整することができる(例えば、新しい命令オペレーションへの割り当てのためのエントリの解放、構築されるリネーム状態の更新等)。これらのオペレーションは、LSD予測器66のオペレーションの助けとなるが本明細書では詳細に説明しない。
PC及びRNUMをストアに関する識別子として使用し、PCをロードに関する識別子として使用するが、他の実施形態では、プロセッサ内で進行中の命令を独自に識別する任意の識別子を使用できることに留意されたい(例えば、任意の種類のタグ又はシーケンス番号)。
図4を参照すると、ロードストア依存関係予測器テーブル1つの実施形態が示されている。テーブル90は、実施形態に応じて種々の数のエントリを含むことができる。各エントリは、重なり合うアドレスを有して、異なる順序で発行されるとして予測されたロードストアペアに対応することができる。エントリは、検出された順序付け違反に応じてテーブル90に割り振ることができる。順序付け違反が起こっているイベントにおいて、ストアキューエントリは、違反を引き起こすロードを含むプロセッサを元のフェッチユニットにフラッシュすることができ、テーブル90は、この違反に対して訓練することができるので、この特定のロードストアペアに関するエントリをテーブル90に追加するようになっている。一般的に、リダイレクトを引き起こすフラッシュされたストアは既に発行されているので、フラッシュされたロードがリフェッチ及びデコードされる場合、テーブル90のエントリは作動可能にならずロードは普通に発行される。PCにおけるストアの将来の実行において、ストアはテーブル90の対応するエントリを作動可能にして、ストアが発行されるまでロードが発行されることを防止することになる。
テーブル90は、複数の命令オペレーションによる複数の同時アクセス及び更新を可能にするように構成することができる。更に、テーブル90は統合されたテーブルとして示されているが、異なるフィールドは、別のテーブルのエントリが互いに関連した状態で、別のメモリに対応する別のテーブルとすることができる。例えば、ロードPCは別のテーブルとすること、ストアPCは別のテーブルとすること、及びロードPCエントリは、特定のロードストア順序付け違反が検出されて訓練された、ストアPCエントリに対応することができる。
各エントリは、有効インジケータ92を含むことができる。有効インジケータ92は、エントリが有効なエントリであるか否か、及びエントリがエントリで示されたロードとストアとの間の依存関係を強化するために使用すべきか否かを示すことができる。1つの実施形態において、有効インジケータ92は、クリア又はリセットすることができる。また、有効インジケータ92は、置換えポリシーに影響を及ぼすことができ、有効なエントリは、新しいエントリが割り振られた場合に置換される第1のエントリとすることができる。いくつかの実施形態において、有効インジケータ92は、テーブル90のエントリに含まれる必要はない。代わりに、これらの実施形態において、カウンタフィールド102の値を、エントリが有効か否かを示すために使用することができる。他の実施形態では、テーブルのカウンタフィールド102を除いて、有効インジケータ92だけを使用することができる。
また、各エントリは、特定のストアオペレーションを識別するためのストアPC値94を含むことができる。いくつかの実施形態において、ストアPC値は、アーキテクチャレジスタと組み合わせること及び/又はハッシュ値とすることができる。ストアがディスパッチされる場合、テーブル90のストアPCはディスパッチされたストアのPCを得るためにサーチすることができる。テーブル90は、ストアPCフィールドに関するCAMとすることができ、メモリの各エントリは、比較を行うための回路を含む。また、ストアPCフィールドは、CAMとして作動されるレジスタ及びコンパレータのセットとすることができる。ディスパッチされたストアが何らかのエントリに適合する場合、これらのエントリは、作動可能ビット98のセットを有することができる。また、ストアのRNUMは、ストアRNUM96のエントリフィールドに書き込むことができる。ストアがリザベーションステーションから発行される場合、作動可能ビット98は、特定のストアによって以前に作動可能になったテーブル90の何らかのエントリからクリアすることができる。
ロードがディスパッチされる場合、テーブル90の各エントリのロードPC値100は、ディスパッチされたロードのPCに関してサーチされる。テーブル90は、ロードPCフィールドに関するCAMとすることができる。ディスパッチされたロードが、何らかの作動可能なエントリに適合する場合、依存関係を確立して特定のロードに関して有効とすることができる。ロードが作動可能でないエントリに適合する場合、対応するストアがディスパッチされていないか又は既に発行されているので依存関係は確立されないので、順序付け違反は生じない。ロードが複数の作動可能なエントリに適合する場合、ロードは、ロード自体が発行される前に古いストアが発行されるまで待つことができる。ロードが単一のエントリに適合する場合、ストアRNUMはロードを有するリザベーションステーションに書き込むことができる。また、ロード有効な依存関係を有することを示すための、リザベーションステーションのロードに関する依存関係ビットセットが存在できる。
また、各エントリは、カウンタフィールド102を含むことができる。カウンタ102の値は、エントリの特定のロードストアペアに関する予測強度を示すことができる。1つの実施形態において、カウンタ102は2ビットのアップダウンカウンタとすることができる。他の実施形態において、カウンタ102は他のビット数とすることができる。更に、カウンタ102は、最大値及び最小値で飽和するように構成することができる。
ストアがエントリに適合する場合、カウンタ値102は、エントリを作動可能にする前にチェックすることができる。カウンタ値102が閾値以下の場合、エントリは作動状態にしないことができる。カウンタ値102が閾値以上の場合、エントリは作動状態にすることができる。いくつかの実施形態において、エントリは、カウンタ値102をチェックすることなく作動状態にすることができる。また、ロードがエントリに適合する場合、カウンタ値102をチェックすることができる。カウンタ値102が閾値以上の場合でのみ依存関係を有効とすることができる。閾値の値は実施形態に応じて様々とすることができ、特定の動作条件に応じて調整することができる。
別の実施形態において、テーブル90のエントリに対してエージアウト(age−out)カウンタを利用することができる。各エントリはエージアウトカウンタを含むことができ、エージアウトカウンタは、ントリが最初に割り振られる際に何らかの初期値に設定することができる。また、インターバルカウンタは、プログラム可能な期間をカウントするために使用することができ、インターバルカウンタが満了する場合、テーブル90の各エージアウトカウンタはデクリメントすることができる。その後、インターバルカウンタはゼロから開始されて、プログラム可能な期間をカウントすることができる。期間経過の度に、テーブル90のエージアウトカウンタをデクリメントすることができる。ロードストアペアによってエントリがアクセスされるか又は作動可能にされる度に、エージアウトカウンタは一定量だけインクリメントすることができる。テーブル90のエントリが使用されなくなると、最終的にそのエージアウトカウンタはゼロの状態になることができ、この時点でエントリを新しいエントリに置き換えることができる。
他の実施形態において、テーブル90は、追加のフィールドを含むこと及び/又は図4に示す1つ又はそれ以上のフィールドを省略することができる。更に、テーブル90は、他の実施形態において異なるようにフォーマットすることができる。
図5を参照すると、予測器テーブルのロードストアペアエントリに対応するカウンタ値表現の1つの実施形態が示されている。このカウンタ値の割り当ては、テーブル110の2ビットカウンタについて示されている。別の実施形態において、カウンタは他のビット数を使用することができる。
1つの実施形態において、カウンタ値「11」つまり「3」は、「強く使用可能(strongly enabled)」を表すことができる。このカウンタ値をもつエントリについて、ロードストアペアに関する依存関係を有効とすることができる。カウンタ値「10」つまり「2」は、「弱く使用可能(weakly enabled)」を表すことができる。エントリが「弱く使用可能」な場合、依存関係は同様に有効であるとすることができる。カウンタ値「01」つまり「1」は、「弱く使用不能(weakly disabled)」を表すことができる。エントリが「弱く使用不能」である場合、対応するロードストアペアに関して依存関係は有効でないとすることができる。カウンタ値「00」つまり「0」は、「強く使用不能(strongly disabled)」と表すことができる。いくつかの実施形態において、「強く使用不能」は同様にエントリが有効でないことを表すことができる。図5に示す実施形態の閾値は2と1の間である。他の実施形態において、閾値は他の値とすることができる。
1つの実施形態において、エントリが最初に割り振られる場合、初期設定により、新しいエントリに関するカウンタは「弱く使用可能」に設定することができる。カウンタが「弱く使用不能」(カウンタ=1)の場合、エントに適合するロードストアペアは、確立された依存関係を有することができない。その代わりに、ロードは依存関係なしに発行することができる。他の実施形態において、他のサイズのカウンタを使用することができ、カウンタ値は異なる表現とすることができる。
図6を参照すると、ロードオペレーションを処理する方法の1つの実施形態が示される。説明目的で、本実施形態のステップは順番に示されている。以下に示す方法の種々の実施形態において、記載される1つ又はそれ以上の要素は、同時に、図示とは異なる順番で実行すること、又は完全に削除することができることを理解されたい。また、必要であれば他の追加の要素を実行することができる。更に、フローチャートの一部は、複数のロードオペレーションを同時に処理するために並列に実行することができる。
1つの実施形態において、ロードオペレーションはマップ/ディスパッチユニットで受信することができる(ブロック120)。ロードオペレーションは、プロセッサのパイプラインの先の段階でデコードされている。次に、ロードオペレーションとして同じPCを有するエントリに関して、ロードストア依存関係予測器テーブルをサーチすることができる(ブロック122)。サーチの実行後、見つかった適合の数を判定することができる(条件ブロック124)。適合するものがない場合(条件ブロック124)、ロードを依存関係なしでリザベーションステーションにディスパッチすることができる(ブロック126)。ロードは作動可能でないエントリに適合することができるが、これらの作動可能でない適合は、依存関係が有効であることを必要とする可能性がある実際の適合を構成するものではない。同様に、ロードが作動可能なエントリに適合するが、予測インジケータカウンタが閾値以下の場合、これは実際の適合を構成しなので、依存関係は有効ではない可能性がある。いくつかの実施形態において、カウンタは、エントリを作動可能にする前にストアがカウンタを既にチェックしている場合、ロードに関する閾値と比較する必要がない場合もある。
ロードが有効とする必要がある依存関係をもたない場合、このことは種々の方法で示すことができる。例えば、1つの実施形態において、依存関係ビットをクリアしてロードが依存関係をもたないことを示すことができるブロック126の後で、ピッカは、何らかの他のオペレーションが発行されることを待つことなく、任意の時間にリザベーションステーションから発行するロードを選択することができる(ブロック132)。
作動可能なエントリに関して1つの適合が見つかった場合、ロードは、依存関係のあるリザベーションステーションにディスパッチすることができる(ブロック128)。対応するストアのRNUMは、ロードを有するリザベーションステーションエントリに書き込むことができる。1つの実施形態において、適合すると見なされるエントリに関して、エントリのカウンタフィールドは、閾値以上であることが必要である。例えば、ロードが1つの作動可能なエントリに適合するが、エントリのカウンタフィールドが閾値以下の場合(つまり弱く作動不能又は強く作動不能)、これは実際の適合を構成しない。ブロック128の後で、ロードは、依存関係がある対応するストアが発行されるまで発行を待つことができる(ブロック134)。
作動可能なエントリに関して、ロードについて複数の適合が見つかった場合(条件ブロック124)、ロードは、マルチマッチインジケータセットを有するリザベーションステーションにディスパッチすることができる(ブロック130)。次に、ロードは、全ての古いストアが発行されるまで、リザベーションステーションから発行されるのを待つことができる(ブロック136)。ロードストアユニットは、複数のリザベーションステーションを含むことができ、各リザベーションステーションは、そのエントリの中で最も古いストアを追跡するように構成することができる。複数の適合をもつロードがディスパッチされる場合、各リザベーションステーションにおいて最も古いストアを記録することができ、各リザベーションステーションから最も古いストアが発行された後、ロードは1サイクル後に発行されることができる。
図7を参照すると、ロードストア依存関係予測強度インジケータを調整するための方法の1つの実施形態が示されている。説明目的で、本実施形態のステップは順番に示されている。以下に示す方法の種々の実施形態において、記載される1つ又はそれ以上の要素は、同時に、図示とは異なる順番で実行すること、又は完全に削除することができることを理解されたい。また、必要であれば他の追加の要素を実行することができる。
依存関係のあるロードをリザベーションステーションから発行することができる(ブロック140)。ロードは、対応するストアがロードストアペアから発行されるまで、発行を遅らせることができる。対応するストアは、同じリザベーションステーション又は異なるリザベーションステーションから発行することができる。ロードがリザベーションステーションから発行されて実行された後、ロードデータをどこから取得したかを決定することができる(ブロック142)。
ロードデータがストアキューにある場合(条件ブロック144)、この特定のロードストアペアに関する依存関係予測は、良好と判断することができ、ロードストア依存関係予測器の対応するエントリのカウンタは、インクリメントすることができる(ブロック146)。ロードデータに関するストアキューでミスがある場合(条件ブロック144)、ストアの依存関係は、ロードに関して正当ではない場合があり(つまり、依存関係予測はもはや有効ではない)、ロードストア依存関係予測器の対応するエントリのカウンタは、デクリメントすることができる(ブロック148)。本方法は、依存関係にある複数の別のロードに関して並列に実行することができる。
図8を参照すると、ロードストア依存関係予測器テーブルのエントリを置き換えるための方法の1つの実施形態が示されている。説明目的で、本実施形態のステップは順番に示されている。以下に示す方法の種々の実施形態において、記載される1つ又はそれ以上の要素は、同時に、図示とは異なる順番で実行すること、又は完全に削除することができることを理解されたい。また、必要であれば他の追加の要素を実行することができる。
ポインタは、ロードストア依存関係予測器テーブルの隣接エントリのグループを指し示すことができ、隣接エントリのグループのカウンタ値を解析することができる(ブロック160)。1つの実施形態において、グループは4つのエントリを含むことができる。他の実施形態において、グループは、他の数のエントリを含むことができる。次に、最も小さいカウンタ値のエントリを選択することができる(ブロック162)。2つ以上のエントリが最も小さいカウンタ値をもつ場合、ポインタは、これらのエントリをランダムに選択することができ、又は、ポインタは、何らかの他の値又は評価基準を使用して、これらの最も小さいカウンタ値の各エントリを識別することができる。
依存関係をもつ新しい訓練されたロードストアペアに関して、この時点で新しいエントリを割り振る必要がある場合(条件ブロック164)、グループの中で最も小さいカウンタ値を有する選択エントリを廃棄することができ、この場所に新しいエントリを割り振ることができる(ブロック166)。新しいロードストアペアは、信号で伝えられるリダイレクト又はフラッシュに応じて割り振ることができ、リダイレクトは任意の時間に生じることことに留意されたい。従って、条件ブロック164は、図8のフローチャートの他の場所に配置することができる。新しいエントリが割り振られた後で、ポインタは、次のエントリのグループに移動することができる(ブロック172)。この時点で新しいエントリを割り振る必要がない場合(条件ブロック164)、最も小さいカウンタ値がゼロか否かを決定することができる(条件ブロック168)。
最も小さいカウンタ値がゼロの場合(条件ブロック168)、ポインタは、現在の位置に留まり、エントリが割り振られるまで待つことができる(ブロック170)。最も小さいカウンタ値がゼロでない場合(条件ブロック168)、ポインタは、予測器の次のエントリのグループに移動することができる(ブロック172)。1つの実施形態において、ポインタは、ロード又はストアがロードストア依存関係予測器をアクセスするまで、次のエントリグループに移動するのを待つことができる。別の実施形態において、ポインタは、次のクロックサイクルで次のエントリグループに移動することができる。ブロック172の後で、本方法はブロック160に戻りグループのエントリを解析するようになっている。図8に示す方法は、1つの可能性のある置換えポリシーの実施例であり、別の実施形態において、他の置換えポリシーを利用することができる(例えば、最低使用頻度の)。
図9を参照すると、システム180の1つの実施形態のブロック図が示されている。図示のように、システム180は、デスクトップコンピュータ190、ラップトップコンピュータ200、タブレットコンピュータ210、セルラーホン220等のチップ、回路、構成要素等を表わす。例示の実施形態では、システム180は、外部メモリ182に結合されたIC10(図1)の少なくとも1つのインスタンスを含む。
IC10は、1つ又はそれ以上の周辺装置184及び外部メモリ182に結合される。電源186も設けられ、IC10に供給電圧を供給すると共に、メモリ182及び/又は周辺装置184に1つ又はそれ以上の供給電圧を供給する。種々の実施形態において、電源186は、バッテリ(例えば、スマートホン、ラップトップ又はタブレットコンピュータの充電型バッテリ)を表わす。ある実施形態では、2つ以上のIC10が含まれる(且つ2つ以上の外部メモリ182も含まれる)。
メモリ182は、ダイナミックランダムアクセスメモリ(DRAM)、同期式DRAM(SDRAM)、ダブルデータレート(DDR、DDR2、DDR3等)SDRAM(mDDR3等のSDRAMの移動バージョン、及び/又はLPDDR2等のSDRAMの低電力バージョンを含む)、RAMBUS DRAM(RDRAM)、スタティックRAM(SRAM)等の任意の形式のメモリとすることができる。1つ以上のメモリ装置が回路板に結合されて、シングルインラインメモリモジュール(SIMM)、デュアルインラインメモリモジュール(DIMM)、等のメモリモジュールを形成する。もしくは、装置は、IC88と共に、チップオンチップ構成、パッケージオンパッケージ構成、又はマルチチップモジュール構成でマウントされてもよい。
周辺装置184は、システム180の形式に基づいて望ましい回路を含む。例えば、1つの実施形態では、周辺装置184は、wifi、Bluetooth(登録商標)、セルラー、グローバルポジショニングシステム、等の、種々の形式のワイヤレス通信のための装置を含む。また、周辺装置184は、RAM記憶装置、ソリッドステート記憶装置、又はディスク記憶装置を含む付加的な記憶装置も含む。また、周辺装置1845は、タッチディスプレイスクリーン又はマルチタッチディスプレイスクリーンを含むディスプレイスクリーン、キーボード又は他の入力装置、マイクロホン、スピーカ、等のユーザインターフェイス装置を含む。
図10には、IC10(図1)に含まれる回路を表わす1つ又はそれ以上のデータ構造体を含むコンピュータ読み取り可能な媒体230のブロック図の1つの実施形態が示されている。一般的に述べると、コンピュータ読み取り可能な媒体230は、磁気又は光学的媒体のような非一時的記憶媒体、例えば、ディスク、CD−ROM、又はDVD−ROM、揮発性又は不揮発性メモリ媒体、例えば、RAM(例えば、SDRAM、RDRAM、SRAM、等)、ROM、等、並びにネットワーク及び/又はワイヤレスリンクのような通信媒体を経て搬送される電気、電磁又はデジタル信号のような送信媒体又は信号を経てアクセスできる媒体を含む。
一般的に、コンピュータ読み取り可能な媒体230における回路のデータ構造(1つ又は複数)は、プログラムにより読み取られ、そして回路より成るハードウェアを製造するために直接的又は間接的に使用される。例えば、データ構造は、ベリログ又はVHDLのような高レベルデザイン言語(HDL)でのハードウェア機能の1つ以上の振舞いレベル記述又はレジスタ転送レベル(RTL)記述を含む。これら記述は、合成ライブラリからのゲートのリストより成る1つ以上のネットリストを発生するために記述を合成する合成ツールによって読み取られる。ネットリストは、回路より成るハードウェアの機能も表わすゲートのセットを含む。次いで、ネットリストは、マスクに適用される幾何学的形状を記述する1つ以上のデータセットを発生するように配置され、ルーティングされる。次いで、マスクは、種々の半導体製造ステップにおいて、その回路に対応する半導体回路(1つ又は複数)を製造するのに使用される。或いは又、コンピュータ読み取り可能な媒体140におけるデータ構造は、必要に応じて、ネットリスト(合成ライブラリを伴うもの又は伴わないもの)でもデータセットでもよい。更に別の形態では、データ構造は、図式的プログラムの出力、或いはそこから導出されたネットリスト又はデータセットを含む。
コンピュータ読み取り可能な媒体230はIC10の表現を含むが、他の実施形態では、IC10の任意の部分又は部分の組み合わせの表現(例えば、LSD予測器37、LSU46)が含まれてもよい。
前記実施形態は、具現化の非限定例であることを強調しておく。当業者であれば、前記開示が充分に理解されれば、多数の変更や修正が明らかとなろう。そのような変更や修正は、全て、特許請求の範囲に包含されることが意図される。
120 マップ/ディスパッチユニットでロードオペレーションを受信する
122 ロードオペレーションに関して、ロードストア依存関係予測器テーブルをサーチする
124 適合数?
126 ロードを依存関係なしでリザベーションステーションにディスパッチする
132 何らかの他のオペレーションが発行されることを待つことなく、ロードを発行する
128 ロードを依存関係のあるリザベーションステーションにディスパッチする
134 ロードを発行する前に対応するストアが発行されるのを待つ
130 マルチマッチインジケータセットを有するリザベーションステーションにロードをディスパッチする
136 全ての古いストアが発行されるのを待った後でロードを発行する

Claims (14)

  1. 並び換えバッファと、1つ又は複数のリザベーションステーションと、前記1つ又は複数のリザベーションステーションに接続されたロードストア依存関係予測器とを備えるプロセッサであって、
    前記ロードストア依存関係予測器は、エントリを有するテーブルを備え、
    前記エントリのそれぞれは、ロード識別子と、ストア識別子と、並び換えバッファエントリ番号と、予測強度のインジケータと、当該エントリのストア識別子と適合する識別子を有するストアオペレーションがディスパッチされたことを示すのに使用される作動可能ビットと、を有し、
    前記プロセッサは、
    前記テーブルのエントリに記憶されたストア識別子と適合する識別子を有するストアオペレーションのディスパッチが検出されたことに応じて、前記テーブルのエントリのために、作動可能ビットをセットし、
    所定のロードオペレーションが、セットされた作動可能ビットを有する所定のエントリのロード識別子と適合する識別子を有することが検出されたことに応じて、
    前記所定のロードオペレーションが、前記所定のエントリのストア識別子と適合する識別子を有する所定のストアオペレーションに依存することを予測し、
    前記所定のロードオペレーションのためのデータが、ストアキューに含まれる第1のロケーションから検索されることの決定に応じて、前記所定のエントリの予測強度のインジケータをインクリメントし、
    前記所定のロードオペレーションのためのデータが、前記第1のロケーションとは異なるキャッシュの第2のロケーションから検索されることの決定に応じて、前記所定のエントリの前記予測強度のインジケータをデクリメントする、ように構成される、プロセッサ。
  2. 前記テーブルの各エントリの前記予測強度のインジケータは、予測強度のカウンタを含む、請求項1に記載のプロセッサ。
  3. 前記プロセッサは、
    記ストアオペレーションが、前記エントリの前記ストア識別子と適合する識別子を有することが検出され、前記エントリの予測強度のカウンタが閾値を超えていることが確認されたことに応じて、前記エントリの前記作動可能ビットをセットし、
    記ストアオペレーションの並び換えバッファエントリ番号を前記エントリに記憶する、ように更に構成される、請求項2に記載のプロセッサ。
  4. 前記1つ又は複数のリザベーションステーションの1つは、前記所定のエントリの前記並び換えバッファエントリ番号の識別情報とともに、前記所定のロードオペレーションを記憶する、請求項3に記載のプロセッサ。
  5. 前記所定のストアオペレーションの発行に応じて、
    前記所定のストアオペレーションの前記並び換えバッファエントリ番号がブロードキャストされ、
    前記所定のロードオペレーションを記憶する前記リザベーションステーションによって、ブロードキャスト並び換えバッファエントリ番号が検出され、
    前記所定のストアオペレーションの前記ブロードキャスト並び換えバッファエントリ番号が、前記所定のロードオペレーションとともに記憶された前記並び換えバッファエントリ番号の前記識別情報と適合することが検出されたことに応じて、前記所定のロードオペレーションの発行が許可される、請求項4に記載のプロセッサ。
  6. 前記テーブルの各エントリは、プログラム可能な時間の経過に応じてデクリメントされるエージアウトカウンタをさらに備える、請求項2に記載のプロセッサ。
  7. リザベーションステーションからの所定のストアオペレーションの発行が検出されたことに応じて、前記プロセッサは、前記所定のストアオペレーションのディスパッチに応じて予めセットされた前記テーブルの作動可能ビットをクリアにするように構成されている、請求項1に記載のプロセッサ。
  8. テーブルのエントリのために作動可能ビットをセットする段階であって、前記エントリのそれぞれは、ロード識別子と、ストア識別子と、並び換えバッファエントリ番号と、予測強度のインジケータと、当該エントリのストア識別子と適合する識別子を有するストアオペレーションがディスパッチされたことを示すのに使用される前記作動可能ビットと、を有するものであり、前記作動可能ビットをセットする段階においては、前記テーブルのエントリに記憶されたストア識別子と適合する識別子を有するストアオペレーションのディスパッチが検出されたことに応じて、前記テーブルのエントリのために、前記作動可能ビットをセットするものである、前記作動可能ビットをセットする段階と、
    所定のロードオペレーションが、セットされた作動可能ビットを有する所定のエントリのロード識別子と適合する識別子を有することが検出されたことに応じて、
    前記所定のロードオペレーションが、前記所定のエントリのストア識別子と適合する識別子を有する所定のストアオペレーションに依存することを予測し、
    前記所定のロードオペレーションのためのデータが、ストアキューに含まれる第1のロケーションから検索されることの決定に応じて、前記所定のエントリの予測強度のインジケータをインクリメントし、
    前記所定のロードオペレーションのためのデータが、前記第1のロケーションとは異なるキャッシュの第2のロケーションから検索されることの決定に応じて、前記所定のエントリの前記予測強度のインジケータをデクリメントする段階と、を有する方法。
  9. 特定の識別子を有する前記所定のロードオペレーションをディスパッチする段階と、
    前記特定の識別子と適合するロード識別子を調べるために前記テーブルをサーチする段階と、
    前記特定の識別子と適合するロード識別子と、セットされた作動可能ビットとを有する1つのエントリを見つけたことに応じて、前記所定のロードオペレーションと、前記1つのエントリの並び換えバッファエントリ番号に対応するストアオペレーションとの間に依存関係を確立する段階と、を更に含む、請求項8に記載の方法。
  10. 前記1つのエントリの前記並び換えバッファエントリ番号の識別情報とともに、リザベーションステーションに前記所定のロードオペレーションを記憶する段階と、
    前記1つのエントリの前記並び換えバッファエントリ番号に対応する前記ストアオペレーションの発行に応じて、前記1つのエントリの前記並び換えバッファエントリ番号をブロードキャストする段階と、
    ブロードキャスト並び換えバッファエントリ番号の検出に応じて、前記リザベーションステーションから前記所定のロードオペレーションを発行することを許可する段階と、を更に含む、請求項9に記載の方法。
  11. 特定の識別子を有する前記所定のロードオペレーションをディスパッチする段階と、
    前記特定の識別子と適合するロード識別子を調べるために前記テーブルをサーチする段階と、
    それぞれが、前記特定の識別子と適合するロード識別子と、セットされた作動可能ビットとを有する複数のエントリを見つけたことに応じて、前記所定のロードオペレーションと、複数のストアオペレーションとの間に依存関係を確立する段階と、を更に含む、請求項8に記載の方法。
  12. 前記依存関係の確立に応じて、複数のリザベーションステーションの各リザベーションステーションの中の最も古いストアオペレーションを識別する段階を更に含む、請求項11に記載の方法。
  13. 前記所定のロードオペレーションよりも古いすべてのストアオペレーションが発行されたことに応じて、リザベーションステーションから前記所定のロードオペレーションを発行することを許可する段階を更に含む、請求項11に記載の方法。
  14. 前記テーブルの各エントリは、プログラム可能な時間の経過に応じてデクリメントされるエージアウトカウンタを備える、請求項8に記載の方法。
JP2015160285A 2012-05-04 2015-08-17 ロードストア依存関係予測器のコンテンツマネージメント Active JP5965041B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/464,647 2012-05-04
US13/464,647 US9128725B2 (en) 2012-05-04 2012-05-04 Load-store dependency predictor content management

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2013096795A Division JP2013239166A (ja) 2012-05-04 2013-05-02 ロードストア依存関係予測器のコンテンツマネージメント

Publications (2)

Publication Number Publication Date
JP2015232902A JP2015232902A (ja) 2015-12-24
JP5965041B2 true JP5965041B2 (ja) 2016-08-03

Family

ID=48190741

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2013096795A Pending JP2013239166A (ja) 2012-05-04 2013-05-02 ロードストア依存関係予測器のコンテンツマネージメント
JP2015160285A Active JP5965041B2 (ja) 2012-05-04 2015-08-17 ロードストア依存関係予測器のコンテンツマネージメント

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2013096795A Pending JP2013239166A (ja) 2012-05-04 2013-05-02 ロードストア依存関係予測器のコンテンツマネージメント

Country Status (8)

Country Link
US (1) US9128725B2 (ja)
EP (1) EP2660716B1 (ja)
JP (2) JP2013239166A (ja)
KR (2) KR20130124221A (ja)
CN (1) CN103455309B (ja)
BR (1) BR102013010877B1 (ja)
TW (2) TWI529617B (ja)
WO (1) WO2013165754A1 (ja)

Families Citing this family (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
US9128725B2 (en) * 2012-05-04 2015-09-08 Apple Inc. Load-store dependency predictor content management
US9600289B2 (en) 2012-05-30 2017-03-21 Apple Inc. Load-store dependency predictor PC hashing
US8880829B2 (en) * 2012-11-19 2014-11-04 Qualcomm Innovation Center, Inc. Method and apparatus for efficient, low-latency, streaming memory copies
US10467010B2 (en) * 2013-03-15 2019-11-05 Intel Corporation Method and apparatus for nearest potential store tagging
US9116817B2 (en) * 2013-05-09 2015-08-25 Apple Inc. Pointer chasing prediction
US9619750B2 (en) 2013-06-29 2017-04-11 Intel Corporation Method and apparatus for store dependence prediction
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
US9286073B2 (en) * 2014-01-07 2016-03-15 Samsung Electronics Co., Ltd. Read-after-write hazard predictor employing confidence and sampling
US11093401B2 (en) * 2014-03-11 2021-08-17 Ampere Computing Llc Hazard prediction for a group of memory access instructions using a buffer associated with branch prediction
US9710268B2 (en) 2014-04-29 2017-07-18 Apple Inc. Reducing latency for pointer chasing loads
US10209995B2 (en) * 2014-10-24 2019-02-19 International Business Machines Corporation Processor core including pre-issue load-hit-store (LHS) hazard prediction to reduce rejection of load instructions
US10146539B2 (en) 2014-12-14 2018-12-04 Via Alliance Semiconductor Co., Ltd. Load replay precluding mechanism
WO2016097790A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude non-core cache-dependent load replays in out-of-order processor
US9804845B2 (en) * 2014-12-14 2017-10-31 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor
US10083038B2 (en) 2014-12-14 2018-09-25 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on page walks in an out-of-order processor
WO2016097800A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Power saving mechanism to reduce load replays in out-of-order processor
US10127046B2 (en) 2014-12-14 2018-11-13 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude uncacheable-dependent load replays in out-of-order processor
US10108420B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor
WO2016097786A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude load replays dependent on page walks in out-of-order processor
JP6286065B2 (ja) 2014-12-14 2018-02-28 ヴィア アライアンス セミコンダクター カンパニー リミテッド アウトオブオーダープロセッサの書き込み結合メモリ領域アクセスに依存するロードリプレイを除外する装置及び方法
US10089112B2 (en) * 2014-12-14 2018-10-02 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor
US10146540B2 (en) * 2014-12-14 2018-12-04 Via Alliance Semiconductor Co., Ltd Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor
WO2016097797A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Load replay precluding mechanism
WO2016097802A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude load replays dependent on long load cycles in an out-order processor
EP3049956B1 (en) * 2014-12-14 2018-10-10 VIA Alliance Semiconductor Co., Ltd. Mechanism to preclude i/o-dependent load replays in out-of-order processor
US10108421B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude shared ram-dependent load replays in an out-of-order processor
WO2016097815A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude x86 special bus cycle load replays in out-of-order processor
US10228944B2 (en) 2014-12-14 2019-03-12 Via Alliance Semiconductor Co., Ltd. Apparatus and method for programmable load replay preclusion
WO2016097792A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude load replays dependent on write combining memory space access in out-of-order processor
US10133579B2 (en) 2014-12-14 2018-11-20 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude uncacheable-dependent load replays in out-of-order processor
KR101820221B1 (ko) 2014-12-14 2018-02-28 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 프로그래머블 로드 리플레이 억제 메커니즘
US10108430B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor
US10175984B2 (en) * 2014-12-14 2019-01-08 Via Alliance Semiconductor Co., Ltd Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor
US10088881B2 (en) 2014-12-14 2018-10-02 Via Alliance Semiconductor Co., Ltd Mechanism to preclude I/O-dependent load replays in an out-of-order processor
US10120689B2 (en) 2014-12-14 2018-11-06 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor
WO2016097814A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude shared ram-dependent load replays in out-of-order processor
US10114646B2 (en) 2014-12-14 2018-10-30 Via Alliance Semiconductor Co., Ltd Programmable load replay precluding mechanism
WO2016097811A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude load replays dependent on fuse array access in out-of-order processor
US10635446B2 (en) * 2015-09-24 2020-04-28 Qualcomm Incorporated Reconfiguring execution pipelines of out-of-order (OOO) computer processors based on phase training and prediction
CN105117202B (zh) * 2015-09-25 2018-11-27 上海兆芯集成电路有限公司 具有融合保留站结构的微处理器
US9606805B1 (en) 2015-10-19 2017-03-28 International Business Machines Corporation Accuracy of operand store compare prediction using confidence counter
US10514925B1 (en) 2016-01-28 2019-12-24 Apple Inc. Load speculation recovery
US10437595B1 (en) 2016-03-15 2019-10-08 Apple Inc. Load/store dependency predictor optimization for replayed loads
US20170286114A1 (en) * 2016-04-02 2017-10-05 Intel Corporation Processors, methods, and systems to allocate load and store buffers based on instruction type
US11106467B2 (en) 2016-04-28 2021-08-31 Microsoft Technology Licensing, Llc Incremental scheduler for out-of-order block ISA processors
US10740107B2 (en) * 2016-06-01 2020-08-11 International Business Machines Corporation Operation of a multi-slice processor implementing load-hit-store handling
US10067762B2 (en) * 2016-07-01 2018-09-04 Intel Corporation Apparatuses, methods, and systems for memory disambiguation
WO2018034682A1 (en) 2016-08-13 2018-02-22 Intel Corporation Apparatuses, methods, and systems for neural networks
US11048506B2 (en) * 2016-08-19 2021-06-29 Advanced Micro Devices, Inc. Tracking stores and loads by bypassing load store units
CN106406822B (zh) * 2016-09-18 2019-02-15 上海兆芯集成电路有限公司 具有改进的别名队列和存储冲突检测的处理器
US10684859B2 (en) * 2016-09-19 2020-06-16 Qualcomm Incorporated Providing memory dependence prediction in block-atomic dataflow architectures
US20180081806A1 (en) * 2016-09-22 2018-03-22 Qualcomm Incorporated Memory violation prediction
US10402168B2 (en) 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
CA3069363A1 (en) 2017-07-11 2019-01-17 Pfizer Inc. Immunogenic compositions comprising cea muc1 and tert
US10725782B2 (en) * 2017-09-12 2020-07-28 Qualcomm Incorporated Providing variable interpretation of usefulness indicators for memory tables in processor-based systems
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US10387311B2 (en) 2018-01-11 2019-08-20 International Business Machines Corporation Cache directory that determines current state of a translation in a microprocessor core cache
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
CN108920191B (zh) * 2018-06-05 2020-11-20 上海兆芯集成电路有限公司 处理器电路及其操作方法
US11099846B2 (en) * 2018-06-20 2021-08-24 Advanced Micro Devices, Inc. Apparatus and method for resynchronization prediction with variable upgrade and downgrade capability
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10459866B1 (en) 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US11113055B2 (en) 2019-03-19 2021-09-07 International Business Machines Corporation Store instruction to store instruction dependency
US11243774B2 (en) 2019-03-20 2022-02-08 International Business Machines Corporation Dynamic selection of OSC hazard avoidance mechanism
US10929142B2 (en) 2019-03-20 2021-02-23 International Business Machines Corporation Making precise operand-store-compare predictions to avoid false dependencies
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
US11392410B2 (en) * 2020-04-08 2022-07-19 Microsoft Technology Licensing, Llc Operand pool instruction reservation clustering in a scheduler circuit in a processor
US11474821B1 (en) 2021-05-12 2022-10-18 International Business Machines Corporation Processor dependency-aware instruction execution
KR20230063791A (ko) * 2021-11-02 2023-05-09 리벨리온 주식회사 인공지능 코어, 인공지능 코어 시스템 및 인공지능 코어 시스템의 로드/스토어 방법

Family Cites Families (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4594660A (en) 1982-10-13 1986-06-10 Honeywell Information Systems Inc. Collector
US4521851A (en) 1982-10-13 1985-06-04 Honeywell Information Systems Inc. Central processor
US4860199A (en) 1987-07-31 1989-08-22 Prime Computer, Inc. Hashing indexer for branch cache
US5487156A (en) 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
US5276825A (en) 1991-03-12 1994-01-04 Chips & Technologies, Inc. Apparatus for quickly determining actual jump addresses by assuming each instruction of a plurality of fetched instructions is a jump instruction
US5488729A (en) 1991-05-15 1996-01-30 Ross Technology, Inc. Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
US5440752A (en) 1991-07-08 1995-08-08 Seiko Epson Corporation Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU
JPH0820949B2 (ja) 1991-11-26 1996-03-04 松下電器産業株式会社 情報処理装置
DE4237417C2 (de) 1992-03-25 1997-01-30 Hewlett Packard Co Datenverarbeitungssystem
JP3199465B2 (ja) 1992-07-22 2001-08-20 株式会社日立製作所 情報処理装置
WO1994008287A1 (en) 1992-09-29 1994-04-14 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5619662A (en) 1992-11-12 1997-04-08 Digital Equipment Corporation Memory reference tagging
US5467473A (en) 1993-01-08 1995-11-14 International Business Machines Corporation Out of order instruction load and store comparison
GB2281442B (en) 1993-08-24 1997-06-11 News Distribution Limited Manufacture of wound capacitors
US5471598A (en) 1993-10-18 1995-11-28 Cyrix Corporation Data dependency detection and handling in a microprocessor with write buffer
DE69429612T2 (de) 1993-10-18 2002-09-12 Via Cyrix Inc Schreibpuffer für einen superskalaren Mikroprozessor mit Pipeline
US5878245A (en) 1993-10-29 1999-03-02 Advanced Micro Devices, Inc. High performance load/store functional unit and data cache
DE69429061T2 (de) 1993-10-29 2002-07-18 Advanced Micro Devices Inc Superskalarmikroprozessoren
US5588126A (en) 1993-12-30 1996-12-24 Intel Corporation Methods and apparatus for fordwarding buffered store data on an out-of-order execution computer system
US5465336A (en) 1994-06-30 1995-11-07 International Business Machines Corporation Fetch and store buffer that enables out-of-order execution of memory instructions in a data processing system
US6216200B1 (en) 1994-10-14 2001-04-10 Mips Technologies, Inc. Address queue
US5666506A (en) 1994-10-24 1997-09-09 International Business Machines Corporation Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle
US5625789A (en) 1994-10-24 1997-04-29 International Business Machines Corporation Apparatus for source operand dependendency analyses register renaming and rapid pipeline recovery in a microprocessor that issues and executes multiple instructions out-of-order in a single cycle
US5784586A (en) 1995-02-14 1998-07-21 Fujitsu Limited Addressing method for executing load instructions out of order with respect to store instructions
US5887152A (en) 1995-04-12 1999-03-23 Advanced Micro Devices, Inc. Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions
US5802588A (en) 1995-04-12 1998-09-01 Advanced Micro Devices, Inc. Load/store unit implementing non-blocking loads for a superscalar microprocessor and method of selecting loads in a non-blocking fashion from a load/store buffer
US5832297A (en) 1995-04-12 1998-11-03 Advanced Micro Devices, Inc. Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations
US5625835A (en) 1995-05-10 1997-04-29 International Business Machines Corporation Method and apparatus for reordering memory operations in a superscalar or very long instruction word processor
US5761712A (en) 1995-06-07 1998-06-02 Advanced Micro Devices Data memory unit and method for storing data into a lockable cache in one clock cycle by previewing the tag array
US5717883A (en) 1995-06-28 1998-02-10 Digital Equipment Corporation Method and apparatus for parallel execution of computer programs using information providing for reconstruction of a logical sequential program
US5652859A (en) 1995-08-17 1997-07-29 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for handling snoops in multiprocessor caches having internal buffer queues
US5710902A (en) 1995-09-06 1998-01-20 Intel Corporation Instruction dependency chain indentifier
US5751983A (en) 1995-10-03 1998-05-12 Abramson; Jeffrey M. Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations
US5835747A (en) 1996-01-26 1998-11-10 Advanced Micro Devices, Inc. Hierarchical scan logic for out-of-order load/store execution control
US5799165A (en) 1996-01-26 1998-08-25 Advanced Micro Devices, Inc. Out-of-order processing that removes an issued operation from an execution pipeline upon determining that the operation would cause a lengthy pipeline delay
US5754812A (en) 1995-10-06 1998-05-19 Advanced Micro Devices, Inc. Out-of-order load/store execution control
US5781790A (en) 1995-12-29 1998-07-14 Intel Corporation Method and apparatus for performing floating point to integer transfers and vice versa
US5822559A (en) 1996-01-02 1998-10-13 Advanced Micro Devices, Inc. Apparatus and method for aligning variable byte-length instructions to a plurality of issue positions
US5742791A (en) 1996-02-14 1998-04-21 Advanced Micro Devices, Inc. Apparatus for detecting updates to instructions which are within an instruction processing pipeline of a microprocessor
US5748978A (en) 1996-05-17 1998-05-05 Advanced Micro Devices, Inc. Byte queue divided into multiple subqueues for optimizing instruction selection logic
US5781752A (en) 1996-12-26 1998-07-14 Wisconsin Alumni Research Foundation Table based data speculation circuit for parallel processing computer
US6016540A (en) 1997-01-08 2000-01-18 Intel Corporation Method and apparatus for scheduling instructions in waves
US5923862A (en) 1997-01-28 1999-07-13 Samsung Electronics Co., Ltd. Processor that decodes a multi-cycle instruction into single-cycle micro-instructions and schedules execution of the micro-instructions
US5768555A (en) 1997-02-20 1998-06-16 Advanced Micro Devices, Inc. Reorder buffer employing last in buffer and last in line bits
US5996068A (en) 1997-03-26 1999-11-30 Lucent Technologies Inc. Method and apparatus for renaming registers corresponding to multiple thread identifications
US6021485A (en) 1997-04-10 2000-02-01 International Business Machines Corporation Forwarding store instruction result to load instruction with reduced stall or flushing by effective/real data address bytes matching
US5850533A (en) 1997-06-25 1998-12-15 Sun Microsystems, Inc. Method for enforcing true dependencies in an out-of-order processor
US6108770A (en) * 1998-06-24 2000-08-22 Digital Equipment Corporation Method and apparatus for predicting memory dependence using store sets
US6212623B1 (en) 1998-08-24 2001-04-03 Advanced Micro Devices, Inc. Universal dependency vector/queue entry
US6122727A (en) 1998-08-24 2000-09-19 Advanced Micro Devices, Inc. Symmetrical instructions queue for high clock frequency scheduling
US6212622B1 (en) 1998-08-24 2001-04-03 Advanced Micro Devices, Inc. Mechanism for load block on store address generation
US6141747A (en) 1998-09-22 2000-10-31 Advanced Micro Devices, Inc. System for store to load forwarding of individual bytes from separate store buffer entries to form a single load word
US6658554B1 (en) 1999-03-09 2003-12-02 Wisconsin Alumni Res Found Electronic processor providing direct data transfer between linked data consuming instructions
US6393536B1 (en) 1999-05-18 2002-05-21 Advanced Micro Devices, Inc. Load/store unit employing last-in-buffer indication for rapid load-hit-store
US6266744B1 (en) 1999-05-18 2001-07-24 Advanced Micro Devices, Inc. Store to load forwarding using a dependency link file
US6728867B1 (en) 1999-05-21 2004-04-27 Intel Corporation Method for comparing returned first load data at memory address regardless of conflicting with first load and any instruction executed between first load and check-point
US6625723B1 (en) 1999-07-07 2003-09-23 Intel Corporation Unified renaming scheme for load and store instructions
US6481251B1 (en) 1999-10-25 2002-11-19 Advanced Micro Devices, Inc. Store queue number assignment and tracking
US6523109B1 (en) 1999-10-25 2003-02-18 Advanced Micro Devices, Inc. Store queue multimatch detection
US6658559B1 (en) 1999-12-31 2003-12-02 Intel Corporation Method and apparatus for advancing load operations
US6542984B1 (en) 2000-01-03 2003-04-01 Advanced Micro Devices, Inc. Scheduler capable of issuing and reissuing dependency chains
US6651161B1 (en) 2000-01-03 2003-11-18 Advanced Micro Devices, Inc. Store load forward predictor untraining
US6502185B1 (en) 2000-01-03 2002-12-31 Advanced Micro Devices, Inc. Pipeline elements which verify predecode information
US6694424B1 (en) * 2000-01-03 2004-02-17 Advanced Micro Devices, Inc. Store load forward predictor training
US6622237B1 (en) 2000-01-03 2003-09-16 Advanced Micro Devices, Inc. Store to load forward predictor training using delta tag
US6678807B2 (en) 2000-12-21 2004-01-13 Intel Corporation System and method for multiple store buffer forwarding in a system with a restrictive memory model
US6571318B1 (en) 2001-03-02 2003-05-27 Advanced Micro Devices, Inc. Stride based prefetcher with confidence counter and dynamic prefetch-ahead mechanism
JP3729087B2 (ja) * 2001-05-23 2005-12-21 日本電気株式会社 マルチプロセッサシステム、データ依存投機実行制御装置およびその方法
US20030065909A1 (en) 2001-09-28 2003-04-03 Jourdan Stephan J. Deferral of dependent loads until after execution of colliding stores
US20030126409A1 (en) 2001-12-28 2003-07-03 Toni Juan Store sets poison propagation
US6918030B2 (en) 2002-01-10 2005-07-12 International Business Machines Corporation Microprocessor for executing speculative load instructions with retry of speculative load instruction without calling any recovery procedures
US7062617B2 (en) 2002-03-26 2006-06-13 Intel Corporation Method and apparatus for satisfying load operations
US7181598B2 (en) 2002-05-17 2007-02-20 Intel Corporation Prediction of load-store dependencies in a processing agent
US7590830B2 (en) * 2004-05-28 2009-09-15 Sun Microsystems, Inc. Method and structure for concurrent branch prediction in a processor
US7415597B2 (en) * 2004-09-08 2008-08-19 Advanced Micro Devices, Inc. Processor with dependence mechanism to predict whether a load is dependent on older store
US7506105B2 (en) 2005-05-02 2009-03-17 Freescale Semiconductor, Inc. Prefetching using hashed program counter
US7376817B2 (en) 2005-08-10 2008-05-20 P.A. Semi, Inc. Partial load/store forward prediction
US7590825B2 (en) 2006-03-07 2009-09-15 Intel Corporation Counter-based memory disambiguation techniques for selectively predicting load/store conflicts
JP2007293814A (ja) * 2006-03-28 2007-11-08 Handotai Rikougaku Kenkyu Center:Kk プロセッサ装置とその処理方法
US7461238B2 (en) 2006-06-07 2008-12-02 International Business Machines Corporation Simple load and store disambiguation and scheduling at predecode
GB2445965B (en) * 2007-01-26 2011-05-04 Advanced Risc Mach Ltd Entry replacement within a data store
US20080209190A1 (en) 2007-02-28 2008-08-28 Advanced Micro Devices, Inc. Parallel prediction of multiple branches
US8200992B2 (en) 2007-09-24 2012-06-12 Cognitive Electronics, Inc. Parallel processing computer systems with reduced power consumption and methods for providing the same
US8151084B2 (en) 2008-01-23 2012-04-03 Oracle America, Inc. Using address and non-address information for improved index generation for cache memories
US8566565B2 (en) 2008-07-10 2013-10-22 Via Technologies, Inc. Microprocessor with multiple operating modes dynamically configurable by a device driver based on currently running applications
US8285947B2 (en) 2009-02-06 2012-10-09 Apple Inc. Store hit load predictor
US7975132B2 (en) 2009-03-04 2011-07-05 Via Technologies, Inc. Apparatus and method for fast correct resolution of call and return instructions using multiple call/return stacks in the presence of speculative conditional instruction execution in a pipelined microprocessor
US8099566B2 (en) 2009-05-15 2012-01-17 Oracle America, Inc. Load/store ordering in a threaded out-of-order processor
US20100325395A1 (en) 2009-06-19 2010-12-23 Doug Burger Dependence prediction in a memory system
US8768313B2 (en) 2009-08-17 2014-07-01 Digimarc Corporation Methods and systems for image or audio recognition processing
US8635428B2 (en) 2009-12-09 2014-01-21 Oracle America, Inc. Preventing duplicate entries in a non-blocking TLB structure that supports multiple page sizes
US8521992B2 (en) 2009-12-22 2013-08-27 International Business Machines Corporation Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors
US9128725B2 (en) * 2012-05-04 2015-09-08 Apple Inc. Load-store dependency predictor content management
US9600289B2 (en) 2012-05-30 2017-03-21 Apple Inc. Load-store dependency predictor PC hashing

Also Published As

Publication number Publication date
TW201403463A (zh) 2014-01-16
BR102013010877A2 (pt) 2015-06-30
US9128725B2 (en) 2015-09-08
EP2660716B1 (en) 2016-11-02
CN103455309A (zh) 2013-12-18
US20130298127A1 (en) 2013-11-07
TWI529617B (zh) 2016-04-11
CN103455309B (zh) 2016-12-28
JP2013239166A (ja) 2013-11-28
BR102013010877B1 (pt) 2021-07-06
JP2015232902A (ja) 2015-12-24
EP2660716A1 (en) 2013-11-06
KR101555166B1 (ko) 2015-09-22
KR20130124221A (ko) 2013-11-13
WO2013165754A1 (en) 2013-11-07
KR20150075067A (ko) 2015-07-02
TW201531939A (zh) 2015-08-16

Similar Documents

Publication Publication Date Title
JP5965041B2 (ja) ロードストア依存関係予測器のコンテンツマネージメント
TWI552069B (zh) 載入-儲存相依性預測器、用於在載入-儲存相依性預測器中處理操作的處理器與方法
US9448936B2 (en) Concurrent store and load operations
JP5894120B2 (ja) ゼロサイクルロード
US9710268B2 (en) Reducing latency for pointer chasing loads
US9524164B2 (en) Specialized memory disambiguation mechanisms for different memory read access types
US10437595B1 (en) Load/store dependency predictor optimization for replayed loads
US9582276B2 (en) Processor and method for implementing barrier operation using speculative and architectural color values
US20140281384A1 (en) Method and apparatus for predicting forwarding of data from a store to a load
US8856447B2 (en) Converting memory accesses near barriers into prefetches
JP2014013565A (ja) ループバッファ学習
US10838729B1 (en) System and method for predicting memory dependence when a source register of a push instruction matches the destination register of a pop instruction
US11928467B2 (en) Atomic operation predictor to predict whether an atomic operation will complete successfully
US20200319889A1 (en) Speculative instruction wakeup to tolerate draining delay of memory ordering violation check buffers
US10983801B2 (en) Load/store ordering violation management
US10747535B1 (en) Handling non-cacheable loads in a non-coherent processor
US10628164B1 (en) Branch resolve pointer optimization

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151102

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20151102

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20151225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160513

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160606

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160630

R150 Certificate of patent or registration of utility model

Ref document number: 5965041

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250