JP2007213578A - データ・キャッシュ・ミス予測およびスケジューリング - Google Patents

データ・キャッシュ・ミス予測およびスケジューリング Download PDF

Info

Publication number
JP2007213578A
JP2007213578A JP2007025520A JP2007025520A JP2007213578A JP 2007213578 A JP2007213578 A JP 2007213578A JP 2007025520 A JP2007025520 A JP 2007025520A JP 2007025520 A JP2007025520 A JP 2007025520A JP 2007213578 A JP2007213578 A JP 2007213578A
Authority
JP
Japan
Prior art keywords
instruction
cache
pipeline
execution
data
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.)
Granted
Application number
JP2007025520A
Other languages
English (en)
Other versions
JP5089186B2 (ja
Inventor
David Arnold Luick
デビッド・アーノルド・ルーイック
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2007213578A publication Critical patent/JP2007213578A/ja
Application granted granted Critical
Publication of JP5089186B2 publication Critical patent/JP5089186B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6024History based prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】Dキャッシュ・ミス予測およびスケジューリングのための方法および装置を提供すること。
【解決手段】一実施形態では、プロセッサでの命令の実行がスケジューリングされる。プロセッサは、共通発行グループ内の命令を互いに対して遅延式に実行する2つ以上の実行パイプラインを有する少なくとも1つのカスケード式遅延実行パイプライン・ユニットを有することができる。この方法は、命令の発行グループを受け取ること、発行グループ内の第1命令が第1命令の以前の実行中にキャッシュ・ミスとなったかどうかを判定すること、および、そうである場合、カスケード式遅延実行パイプライン・ユニット内の別のパイプラインに対して実行が遅延されるパイプラインで実行するように第1命令をスケジューリングすることを含む。
【選択図】図1

Description

本発明は一般にプロセッサでの命令の実行に関する。詳細には、本願は、キャッシュ・ミスによるプロセッサでのパイプライン停止を最小限に抑えることに関する。
現代のコンピュータ・システムは通常、コンピュータ・システム内の情報を処理するのに使用することのできるプロセッサを含む、いくつかの集積回路(IC)を含む。プロセッサで処理されるデータは、プロセッサで実行されるコンピュータ命令、ならびにコンピュータ命令を使用してプロセッサで操作されるデータを含むことができる。コンピュータ命令およびデータは通常、コンピュータ・システム内のメイン・メモリに格納される。
プロセッサは通常、一連の小さいステップで命令を実行することによって命令を処理する。ある場合には、プロセッサで処理される命令の数を増加させる(したがってプロセッサの速度を向上させる)ために、プロセッサがパイプライン化されることがある。パイプライン化とは、プロセッサ内に別々のステージを設け、各ステージが、命令を実行するのに必要な小さいステップのうちの1つまたは複数を実行することを指す。ある場合には、(他の回路に加えて)パイプラインが、プロセッサ・コアと呼ばれるプロセッサの部分に配置されることがある。一部のプロセッサは、複数のプロセッサ・コアを有することがあり、ある場合には、各プロセッサ・コアが複数のパイプラインを有することがある。プロセッサ・コアが複数のパイプラインを有する場合、命令のグループ(発行グループと呼ばれる)を複数のパイプラインに対して並列に発行し、各パイプラインで並列に実行することができる。
パイプラインで命令を実行することの一例として、第1命令が受領されたとき、第1パイプライン・ステージは命令の小部分を処理することができる。第1パイプライン・ステージが命令のその小部分の処理を終了したとき、第2パイプライン・ステージは第1命令の別の小部分の処理を開始することができると共に、第1パイプライン・ステージは、第2命令の小部分を受け取り、その処理を開始する。したがって、プロセッサは、2つ以上の命令を同時に(並列に)処理することができる。
データおよび命令に対するより高速なアクセス、ならびにプロセッサのより良好な利用を実現するために、プロセッサはいくつかのキャッシュを有することがある。キャッシュは、メイン・メモリよりも一般に小さいメモリであり、通常はプロセッサと同じダイ(すなわちチップ)上に製造される。現代のプロセッサは通常、いくつかのレベルのキャッシュを有する。プロセッサのコアに最も近い所に配置される最速のキャッシュは、レベル1キャッシュ(L1キャッシュ)と呼ばれる。L1キャッシュに加えて、プロセッサは通常、レベル2キャッシュ(L2キャッシュ)と呼ばれる第2のより大きなキャッシュを有する。ある場合には、プロセッサは、その他の追加のキャッシュ・レベル(例えばL3キャッシュおよびL4キャッシュ)を有することがある。
プロセッサのパイプラインの各ステージを埋めるのに十分な命令をプロセッサに供給するために、プロセッサは、L2キャッシュから、命令ライン(Iライン)と呼ばれる複数の命令を含むグループとして命令を取り出すことができる。取り出したIラインは、L1命令キャッシュ(Iキャッシュ)に配置され、プロセッサのコアがIライン内の命令にアクセスすることができる。同様に、プロセッサで処理すべきデータのブロック(Dライン)をL2キャッシュから取り出し、L1データ・キャッシュ(Dキャッシュ)内に配置することができる。
上位キャッシュ・レベルから情報を取り出し、その情報を下位キャッシュ・レベルに配置するプロセスは、フェッチングと呼ばれることがあり、通常は一定量の時間(待ち時間)を必要とする。例えば、プロセッサ・コアが情報を要求し、情報がL1キャッシュ内にない場合(キャッシュ・ミスと呼ばれる)、情報をL2キャッシュからフェッチすることができる。各キャッシュ・ミスの結果、要求された情報を求めて次のキャッシュ/メモリ・レベルが探索されるときに追加の待ち時間が生じる。例えば、要求された情報がL2キャッシュ内にない場合、プロセッサは、L3キャッシュまたはメイン・メモリ内の情報を探すことがある。
ある場合には、プロセッサは、キャッシュまたはメモリあるいはその両方から命令およびデータが取り出されるよりも高速に命令およびデータを処理することができる。例えば、パイプラインで実行される命令がDキャッシュ内にないデータにアクセスすることを試みる場合、パイプライン・ステージは、プロセッサが上位レベルのキャッシュまたはメモリからのデータを含むDラインをフェッチ中に、前の命令を終了することがある。フェッチすべき適切なDラインの待機中にパイプラインが前の命令の処理を終了したとき、パイプラインには、処理が残っている命令がないことがある(パイプライン停止と呼ばれる)。パイプラインが停止するとき、プロセッサは十分に利用されておらず、パイプライン化プロセッサ・コアが提供する利点が失われる。
命令が実行されるまで所望のデータのアドレスが既知ではない可能性があるので、プロセッサは、命令が実行されるまで、所望のDラインを探索することができない可能性がある。しかし、一部のプロセッサは、現在アクセス中のデータ・アドレスに近い(近接する)データ・アドレスを含むDラインのブロックをフェッチすることによってそのようなキャッシュ・ミスを防止するように試みることができる。近接するDラインをフェッチすることは、Dライン内のデータ・アドレスにアクセスしたとき、近接するデータ・アドレスもアクセスされる可能性が高いという仮定に依拠する(この概念は一般に参照の局所性と呼ばれる)。しかし、ある場合には、この仮定が誤っていることがあり、それによって現在のDライン付近に位置していないDライン内のデータが命令によってアクセスされ、その結果、キャッシュ・ミスとなり、プロセッサが非効率となる。
したがって、キャッシュされたメモリを使用するプロセッサで命令を実行し、データを取り出すための改良型の方法および装置が求められている。
本発明の実施形態は、キャッシュされたメモリを使用するプロセッサで命令を実行し、データを取り出す改良型の方法および装置を提供する。一実施形態では、プロセッサの命令の実行がスケジューリングされる。プロセッサは、共通発行グループ内の命令を互いに対して遅延された態様で(以下、「遅延式」という)に実行する2つ以上の実行パイプラインを有する少なくとも1つのカスケード式遅延実行パイプライン・ユニットを有することができる。この方法は、命令の発行グループを受け取り、発行グループ内の第1命令が第1命令の以前の実行中にキャッシュ・ミスとなったかどうかを判定し、そうである場合、カスケード式遅延実行パイプライン・ユニット内の別のパイプラインに対して実行が遅延されるパイプラインで実行するように第1命令をスケジューリングする。
本発明の別の実施形態は、共通発行グループ内の命令を互いに対して遅延式に実行する2つ以上の実行パイプラインを有するカスケード式遅延実行パイプライン・ユニットを備える集積回路デバイスを提供する。この集積回路デバイスは、命令の発行グループを受け取り、発行グループ内の第1命令が第1命令の前の実行中にキャッシュ・ミスとなったかどうかを判定し、そうである場合、カスケード式遅延実行パイプライン・ユニット内の別のパイプラインに対して実行が遅延されるパイプラインで実行するように第1命令をスケジューリングするように構成された回路も含む。
本発明のさらに別の実施形態は、共通発行グループ内の命令を互いに対して遅延式に実行する2つ以上の実行パイプラインを有するカスケード式遅延実行パイプライン・ユニットを備える集積回路デバイスを提供する。この集積回路デバイスは、命令の発行グループを受け取り、発行グループ内の第1命令が第1命令の前の実行中にキャッシュ・ミスとなったかどうかを判定し、そうである場合、カスケード式遅延実行パイプライン・ユニット内の第2パイプラインに対して実行の遅延が小さい第1パイプラインで実行するように第1命令をスケジューリングするように構成された回路も含む。
本発明の上記で列挙した特長、利点、および目的が達成され、それらを詳細に理解できるように、添付の図面に示される本発明の実施形態を参照することによって上記で簡潔に要約した本発明のより具体的な説明を得ることができる。
しかし、本発明は他の等しく有効な実施形態を認めることができるので、添付の図面は本発明の典型的な実施形態を示すに過ぎず、したがって本発明の範囲の限定と見なすべきではない。
本発明は一般に、Dキャッシュ・ミス予測およびスケジューリングのための機構を提供する。一実施形態では、プロセッサでの命令の実行をスケジューリングする方法が提供される。プロセッサは、共通発行グループ内の命令を互いに対して遅延式に実行する2つ以上の実行パイプラインを有する少なくとも1つのカスケード式遅延実行パイプライン・ユニットを有することができる。この方法は、命令の発行グループを受け取り、発行グループ内の第1命令が第1命令の前の実行中にキャッシュ・ミスとなったかどうかを判定し、そうである場合、カスケード式遅延実行パイプライン・ユニット内の別のパイプラインに対して実行が遅延されるパイプラインで実行するように第1命令をスケジューリングする。一実施形態では、実行が遅延されるパイプラインに対して第1命令が発行されたとき、命令が対象とするデータへのアクセスをL2キャッシュに対して開始することができる。遅延実行パイプライン内の命令を実行し、命令が発行されたときにL2キャッシュ・アクセスを開始することにより、必要なら、命令が対象とするデータを、命令の実行を停止することなく、命令がデータを使用するのに間に合うようにL2キャッシュから取り出すことができる。
以下では、本発明の実施形態を参照する。しかし、本発明は記載の特定の実施形態に限定されない。むしろ、本発明を実装および実施するのに、異なる実施形態に関係するか否かに関わらず、以下の特徴および要素の任意の組合せが企図される。さらに、様々な実施形態において、本発明は従来技術に勝る多数の利点をもたらす。しかし、本発明の実施形態は他の可能な解決策または従来技術に勝る利点あるいはその両方を達成することができるが、特定の利点が所与の実施形態で達成されるか否かは本発明の制限ではない。したがって、以下の態様、特徴、実施形態、および利点は例示的なものに過ぎず、添付の特許請求の範囲で明示的に列挙される場合を除いて、特許請求の範囲の要素または制限と見なすべきではない。同様に、「本発明」に対する参照は、本明細書で開示される本発明の何らかの主題の一般化と解釈すべきではなく、特許請求の範囲で明示的に列挙される場合を除いて、添付の特許請求の範囲の要素または限定と見なすべきではない。
以下は、添付の図面で示される本発明の実施形態の詳細な説明である。実施形態は例であり、本発明を明確に伝達するような詳細なものである。しかし、提供される詳細の主旨は実施形態の予想される変形形態を限定するものではなく、逆に、添付の特許請求の範囲で定義される本発明の精神および範囲に包含されるすべての修正形態、均等物、代替実施形態を包含することが意図される。
システム、例えばコンピュータ・システムと共に本発明の実施形態を使用することができ、システムに関連して本発明の実施形態を説明する。本明細書では、システムは、パーソナル・コンピュータ、インターネット・アプライアンス、デジタル・メディア・アプライアンス、携帯情報端末(PDA)、ポータブル音楽/ビデオ・プレーヤ、およびビデオ・ゲーム・コンソールを含む、プロセッサおよびキャッシュ・メモリを使用する任意のシステムを含むことができる。キャッシュ・メモリを使用するプロセッサと同じダイ上にキャッシュ・メモリを配置することができるが、ある場合には、プロセッサとキャッシュ・メモリが異なるダイ(例えば、別々のモジュール内の別々のチップ、または単一モジュール内の別々のチップ)上に配置されることがある。
以下では、複数のプロセッサ・コアおよび複数のL1キャッシュを有し、各プロセッサ・コアが複数のパイプラインを使用して命令を実行するプロセッサに関して説明するが、単一処理コアを有するプロセッサを含む、キャッシュを使用する任意のプロセッサで本発明の実施形態を使用することができる。一般には、任意のプロセッサで本発明の実施形態を使用することができ、本発明の実施形態は特定の構成に限定されない。さらに、以下では、L1命令キャッシュ(L1 IキャッシュまたはIキャッシュ)とL1データ・キャッシュ(L1 DキャッシュまたはDキャッシュ224)に分割されたL1キャッシュを有するプロセッサに関して説明するが、統合L1キャッシュが使用される構成で本発明の実施形態を使用することができる。
図1は、本発明の一実施形態によるシステム100を示すブロック図である。システム100は、命令およびデータを格納するシステム・メモリ102と、グラフィックス処理のためのグラフィックス処理装置104と、外部装置と通信するI/Oインターフェース106と、命令およびデータを長期格納する記憶装置108と、命令およびデータを処理するプロセッサ110とを含むことができる。
本発明の一実施形態によれば、プロセッサ110は、L2キャッシュ112ならびに複数のL1キャッシュ116を有することができ、各L1キャッシュ116は複数のプロセッサ・コア114のうちの1つで使用される。一実施形態によれば、各プロセッサ・コア114をパイプライン化することができ、各命令が一連の小さいステップで実行され、各ステップが異なるパイプライン・ステージで実行される。
図2は、本発明の一実施形態によるプロセッサ110を示すブロック図である。話を簡単にするために、図2にはプロセッサの単一コア114が示されており、プロセッサ110の単一コア114に関して図2を説明する。一実施形態では、各コア114は同一でよい(例えば、同一のパイプライン・ステージを有する同一のパイプラインを含むことができる)。別の実施形態では、各コア114は異なっていてよい(例えば、異なるステージを有する異なるパイプラインを含むことができる)。
本発明の一実施形態では、L2キャッシュ112は、プロセッサ110で使用される命令およびデータの一部を含むことができる。ある場合には、プロセッサ110は、L2キャッシュ112に含まれていない命令およびデータを要求することがある。要求された命令およびデータがL2キャッシュ112に含まれていない場合、要求された命令およびデータを(上位レベル・キャッシュまたはシステム・メモリ102から)取り出し、L2キャッシュ112内に配置することができる。プロセッサ・コア114がL2キャッシュ112に命令を要求したとき、まずプリデコーダおよびスケジューラ220(以下で詳述する)で命令を処理することができる。
本発明の一実施形態では、Iラインと呼ばれるグループでL2キャッシュ112から命令をフェッチすることができる。同様に、Dラインと呼ばれるグループでL2キャッシュ112からデータをフェッチすることができる。図1に示すL1キャッシュ116を、Iラインを格納するL1命令キャッシュ222(Iキャッシュ222)ならびにDラインを格納するL1データ・キャッシュ224(Dキャッシュ224)の2つの部分に分割することができる。L2アクセス回路210を使用して、L2キャッシュ112からIラインおよびDラインをフェッチすることができる。
本発明の一実施形態では、L2キャッシュ112から取り出されたIラインをプリデコーダおよびスケジューラ220で処理することができ、Iキャッシュ222内にIラインを配置することができる。プロセッサ性能をさらに改善するために、しばしば命令が事前復号化され、例えばIラインがL2(またはより上位の)キャッシュから取り出される。そのような事前復号化は、アドレス生成、分岐予測、スケジューリング(命令を発行すべき順序を決定すること)などの様々な機能を含むことができ、命令実行を制御するディスパッチ情報(1組のフラグ)として取り込まれる。ある場合には、複数のコア114およびL1キャッシュの間でプリデコーダおよびスケジューラ220を共有することができる。同様に、L2キャッシュ112からフェッチされるDラインをDキャッシュ224内に配置することができる。各IラインおよびDライン内のビットを使用して、L2キャッシュ112内の情報のラインがIラインであるか、それともDラインであるかを追跡することができる。任意選択で、IラインまたはDラインあるいはその両方でL2キャッシュ112からデータをフェッチする代わりに、他の方式、例えばより小さい量のデータ、大きい量のデータ、または可変量のデータをフェッチすることによってL2キャッシュ112からデータをフェッチすることができる。
一実施形態では、Iキャッシュ222およびDキャッシュ224は、どのIラインおよびDラインが現在Iキャッシュ222およびDキャッシュ224内にあるかを追跡するために、それぞれIキャッシュ・ディレクトリ223およびDキャッシュ・ディレクトリ225を有することができる。IラインまたはDラインがIキャッシュ222またはDキャッシュ224に追加されたとき、対応するエントリをIキャッシュ・ディレクトリ223またはDキャッシュ・ディレクトリ225内に配置することができる。IラインまたはDラインがIキャッシュ222またはDキャッシュ224から除去されたとき、Iキャッシュ・ディレクトリ223またはDキャッシュ・ディレクトリ225内の対応するエントリを除去することができる。Dキャッシュ・ディレクトリ225を使用するDキャッシュ224に関して以下で説明するが、本発明の実施形態は、Dキャッシュ・ディレクトリ225が使用されない場合でも使用することができる。そのような場合、Dキャッシュ224に格納されたデータ自体は、どのDラインがDキャッシュ224内に存在するかを示すことができる。
一実施形態では、命令フェッチング回路236を使用してコア114に対する命令をフェッチすることができる。例えば、命令フェッチング回路236は、コアで実行中の現在の命令を追跡するプログラム・カウンタを含むことができる。コア内の分岐ユニットを使用して、分岐命令に遭遇したときにプログラム・カウンタを変更することができる。Iライン・バッファ232を使用して、L1 Iキャッシュ222からフェッチされた命令を格納することができる。発行およびディスパッチ回路234を使用して、Iライン・バッファ232から取り出された命令を命令グループとしてグループ化することができ、次いで、以下で説明するように命令グループをコア114に対して並列に発行することができる。ある場合には、発行およびディスパッチ回路234は、プリデコーダおよびスケジューラ220で与えられる情報を使用して、適切な命令グループを形成することができる。
発行およびディスパッチ回路234から命令を受け取ることに加えて、コア114は、様々な場所からデータを受け取ることができる。コア114がデータ・レジスタにデータを要求する場合、レジスタ・ファイル240を使用してデータを得ることができる。コア114がメモリ位置にデータを要求する場合、キャッシュ・ロードおよびストア回路250を使用して、Dキャッシュ224からデータをロードすることができる。そのようなロードが実行される場合、必要なデータを求める要求をDキャッシュ224に対して発行することができる。同時に、Dキャッシュ・ディレクトリ225をチェックして、所望のデータがDキャッシュ224内に配置されているかどうかを判定することができる。Dキャッシュ224が所望のデータを含む場合、Dキャッシュ・ディレクトリ225は、Dキャッシュ224が所望のデータを含み、Dキャッシュ・アクセスをある時間の後に完了することができることを示すことができる。Dキャッシュ224が所望のデータを含まない場合、Dキャッシュ・ディレクトリ225は、Dキャッシュ224が所望のデータを含まないことを示すことができる。Dキャッシュ・ディレクトリ225にはDキャッシュ224よりも迅速にアクセスすることができるので、Dキャッシュ・ディレクトリ225にアクセスした後、かつDキャッシュ・アクセスが完了する前に、所望のデータを求める要求を(例えばL2アクセス回路210を使用して)L2キャッシュ112に対して発行することができる。
ある場合には、コア114でデータを修正することができる。修正後データをレジスタ・ファイルに書き込むことができ、またはメモリに格納することができる。ライトバック回路238を使用してデータをレジスタ・ファイル240にライトバックすることができる。ある場合には、ライトバック回路238は、キャッシュ・ロードおよびストア回路250を使用して、データをDキャッシュ224にライトバックすることができる。任意選択で、コア114は、キャッシュ・ロードおよびストア回路250にアクセスして、直接的に格納を実行することができる。ある場合には、以下で説明するように、ライトバック回路238を使用して命令をIキャッシュ222にライトバックすることもできる。
上述のように、発行およびディスパッチ回路234を使用して、命令グループを形成し、形成した命令グループをコア114に対して発行することができる。発行およびディスパッチ回路234は、Iライン内の命令を回転およびマージし、それによって適切な命令グループを形成するための回路も含むことができる。発行グループの形成は、発行グループ内の命令間の依存関係、ならびに以下で詳細に説明する命令の順序付けから達成することのできる最適化などのいくつかの考慮すべき点を考慮に入れることができる。発行グループを形成した後、プロセッサ・コア114に対して発行グループを並列にディスパッチすることができる。ある場合には、命令グループは、コア114内のパイプラインごとに1つの命令を含むことができる。任意選択で、命令グループはより少数の命令でよい。
本発明の一実施形態によれば、1つまたは複数のプロセッサ・コア114は、カスケード式遅延実行パイプライン構成を使用することができる。図3に示す例では、コア114は、カスケード式構成の4つのパイプラインを含む。任意選択で、より少数(2つ以上のパイプライン)またはより多数(5つ以上のパイプライン)をそのような構成で使用することができる。さらに、図3に示すパイプラインの物理的レイアウトは例であって、必ずしもカスケード式遅延実行パイプライン・ユニットの実際の物理的レイアウトを示唆するものではない。
一実施形態では、カスケード式遅延実行パイプライン構成内の各パイプライン(P0、P1、P2、P3)は、実行ユニット310を含むことができる。実行ユニット310は、所与のパイプラインに対して1つまたは複数の機能を実行するいくつかのパイプライン・ステージを含むことができる。例えば、実行ユニット310は、命令のフェッチングおよび復号化のすべてまたは一部を実行することができる。実行ユニットで実行された復号化は、プリデコーダおよびスケジューラ220と共有することができる。プリデコーダおよびスケジューラ220は複数のコア114間で共有され、または任意選択で、単一コア114で使用される。実行ユニットはまた、レジスタ・ファイルからデータを読み取り、アドレスを計算し、(例えば演算論理装置すなわちALUを使用して)整数演算機能を実行し、浮動小数点演算機能を実行し、命令分岐を実行し、データ・アクセス機能を実行し(例えば、メモリからのロードおよびストア)、データをレジスタに戻す(例えば、レジスタ・ファイル240内)。ある場合には、コア114は、命令フェッチング回路236、レジスタ・ファイル240、キャッシュ・ロードおよびストア回路250、ライトバック回路、ならびにその他の任意の回路を使用してこれらの機能を使用することができる。
一実施形態では、各実行ユニット310は同一の機能を実行することができる。任意選択で、各実行ユニット310(または異なるグループの実行ユニット)は異なる機能の組を実行することができる。さらに、ある場合には、各コア114内の実行ユニット310は、他のコアで提供される実行ユニット310と同じでよく、または異なるものでよい。例えば、あるコアでは、実行ユニット310および310がロード/ストア機能および算術機能を実行し、実行ユニット310および310が算術機能のみを実行することができる。
一実施形態では、図示するように、実行ユニット310での実行を他の実行ユニット310に対して遅延式に実行することができる。図示する構成は、カスケード式遅延構成とも呼ばれることがあるが、図示するレイアウトは、必ずしも実行ユニットの実際の物理的レイアウトを示すわけではない。そのような構成では、命令グループ内の命令(便宜上I0、I1、I2、I3と呼ぶ)がパイプラインP0、P1、P2、P3に対して並列に発行され、各命令を、各他の命令に対して遅延式に実行することができる。例えば、まず命令I0をパイプラインP0に対する実行ユニット310で実行することができ、2番目に命令I1をパイプラインP1に対する実行ユニット310で実行することができ、以下同様である。
一実施形態では、プロセッサ・コア114に発行グループを発行する際、I0を実行ユニット310で直ちに実行することができる。後に、命令I0が実行ユニット310での実行を終了した後、実行ユニット310は命令I1の実行を開始することができ、以下同様にして、コア114に対して並列に発行された命令が互いに対して遅延式に実行される。
一実施形態では、一部の実行ユニット310を互いに対して遅延させることができ、一方、他の実行ユニット310は互いに対して遅延されない。第2命令の実行が第1命令の実行に依存する場合、転送経路312を使用して、第1命令から第2命令に結果を転送することができる。図示する転送経路312は例示的なものに過ぎず、コア114は、実行ユニット310内の様々な地点から他の実行ユニット310または同一の実行ユニット310へのより多くの転送経路を含むことができる。
一実施形態では、実行ユニット310で実行されていない命令(例えば遅延されている命令)を遅延キュー320またはターゲット遅延キュー330内に保持することができる。遅延キュー320は、実行ユニット310で実行されていない命令グループ内の命令を保持するのに使用することができる。例えば、命令I0が実行ユニット310で実行中に、命令I1、I2、およびI3を遅延キュー320内に保持することができる。命令が遅延キュー320を通じて移動された後、命令を適切な実行ユニット310に対して発行し、実行することができる。ターゲット遅延キュー330は、既に実行ユニット310で実行された命令の結果を保持するのに使用することができる。ある場合には、ターゲット遅延キュー330内の結果を実行ユニット310に転送して処理することができ、または適切なら無効にすることができる。同様に、ある環境では、以下で説明するように遅延キュー320内の命令を無効にすることができる。
一実施形態では、命令グループ内の各命令が遅延キュー320、実行ユニット310、およびターゲット遅延キュー330を通じて渡された後、結果(例えば、データ、および以下で説明するように、命令)をレジスタ・ファイルに、あるいはL1 Iキャッシュ222またはDキャッシュ224あるいはその両方に書き戻すことができる。ある場合に、ライトバック回路238を使用して、(ターゲット遅延キュー330の1つから受け取った)最後に変更したレジスタの値を書き戻し、無効にされた結果を廃棄することができる。
ロード命令のスケジューリング
本発明の一実施形態によれば、キャッシュ・ミスによるパイプライン停止は、最小遅延パイプライン(例えば、上述の例ではパイプラインP)でロード命令を実行することによって低減することができる。ロード命令がDキャッシュ・ミスとなった場合、ロード命令の後に発行された命令を無効にすることができ、データを求める要求をL2キャッシュ112に送ることができる。所望のデータをL2キャッシュ112からフェッチ中に、実行における遅延が最も大きいパイプライン(例えばパイプラインP3)に対してロード命令を再発行することができ、無効にされた命令を、再発行した命令と同じ発行グループ、または後続の発行グループで発行することができる。
上述のようにロード命令を実行することは、少なくとも3つの点で有益である。第1に、実行における遅延が最も小さいパイプラインでロード命令をまず実行することにより、ロード命令がDキャッシュ・ミスとなったかどうかについての判定を迅速に行うことができる。Dキャッシュ・ミスが生じたかどうかを初期に判定することで、パイプラインに対して発行される、無効にされ再発行される命令(例えば、後続の発行グループ内の命令)を少なくすることができる。第2に、発行された命令がL1キャッシュ・ミスとなったかどうかを迅速に判定することにより、L2キャッシュ・アクセスをより迅速に開始することができ、それによってL2キャッシュ・アクセスの実施中にパイプラインで生じる停止が低減される。第3に、遅延が最も大きいパイプラインに対してロード命令を再発行することにより、所望のデータのL2キャッシュ・アクセスを完了させるためにより多くの時間(例えば、遅延キュー320を通じてのロード命令の移動中、かつ命令が実行ユニット310で再実行される前)を与えることができ、それによってプロセッサ・コア114の停止を防止することになる。
図4〜5に、本発明の一実施形態による遅延実行パイプラインで命令を実行するプロセス400を示す。プロセス400はステップ402から開始して、ステップ404に進むことができ、ステップ404では、発行されたグループで実行すべき命令が受領される。
ステップ406では、受領された命令がロード命令を含むかどうかについて判定を行うことができる。受領された命令がロード命令を含まない場合、ステップ412でロード命令をデフォルト発行グループ内に配置し、プロセッサ・コア114に対して発行し、実行することができる。しかし、受領された命令がロード命令を含む場合、ステップ408で、命令グループ内で最小遅延パイプラインに対してロード命令を発行することができるかどうかについて判定を行うことができる。例えば、最小遅延パイプラインが、別の命令で必要とされる機能を実行するプロセッサ・コア114内の唯一のパイプラインである場合(例えば、最小遅延パイプラインが分岐命令を実行することのできる唯一のパイプラインである場合)、遅延が大きい別のパイプラインに対してロード命令を発行することができる。さらに、ある場合には、ロード命令の実行は、他の実行された命令の結果に依存する可能性がある。例えば、ロード命令が対象とするデータのメモリ・アドレスは、別の命令で実行された計算に依存する可能性がある。ロード命令が同一の発行グループ内の別の命令に依存する場合、例えば実行における遅延が小さいパイプラインを使用して、ロード命令の前にその別の命令を実行することができる。任意選択で、ある場合には、単一の発行グループ内のそのような依存関係を回避するように、(例えば複数の発行グループにわたって命令を分離することによって)発行グループ内の命令をスケジューリングすることができる。
ロード命令を発行グループ内で最小遅延パイプラインに対して発行することができると判定された場合、ステップ410で、最小遅延パイプライン(例えばパイプラインP)に対してロード命令を発行するようにスケジューリングすることができる。ステップ420では、プロセッサ・コア114に対して発行グループを発行することができ、ステップ422では、最小遅延パイプラインでロード命令を実行することができる。
ステップ424では、ロード命令に関するデータをDキャッシュ224に要求することができ、Dキャッシュ・ディレクトリ225をチェックして、要求したデータを含むDラインがDキャッシュ225内に位置しているかどうかを判定することができる。ロード命令が最小遅延パイプラインで実行されるので、より遅延の大きいパイプライン(例えばパイプラインP、P、またはP)でロード命令が実行される場合よりも早くキャッシュ・アクセスを開始することができる。
Dキャッシュ224が要求したデータを含むかどうかについてステップ426で判定を行うことができる。この判定は、例えばDキャッシュ・ディレクトリ225で提供される情報に基づくことができる。Dキャッシュ224が要求したデータを含む場合、ステップ428で、要求したデータをDキャッシュ224から受け取ることができ、ステップ442で、プロセス400は命令の実行を続行することができる。
しかし、Dキャッシュ224が要求したデータを含まない場合、ステップ430で、ロード命令の後にプロセッサ・コア114に対して発行された命令(例えば、後続の発行グループ内の命令)を無効にすることができる。例えば、ロード命令の結果に依存する可能性のある後の命令の不適切な実行を防ぐために、その後で発行された命令の無効化を実施することができる。一実施形態では、命令の無効化は、プロセッサ・コア114でその後に発行される各命令(例えば、実行ユニット310または遅延キュー320内のその後で発行される命令)についてビットをセットすることによって実施することができる。ビットは、命令によって生成された結果が有効であることを示すことができる。ビットが、例えばライトバック回路238で検出されたとき、無効にされた命令によって生成された結果を廃棄することができる。任意選択で、命令を上書きすることによってプロセッサ・コアから命令を除去することができる。一実施形態では、命令(ロード命令を含む)が無効にされた後、キャッシュ・ミスを後でスケジューリングの際に使用するために記録することができ(以下でより詳細に説明する)、無効にされた命令をIキャッシュ222に返すことができ、その結果、プロセッサ・コア114に対して命令を再発行することができる。
ステップ432では、要求されたデータを求めてL2キャッシュに対して要求を発行することができる。例えば、L2アクセス回路210を使用して要求を発行することができる。ある場合には、要求されたデータがDキャッシュ224内にないことをDキャッシュ・ディレクトリ225が示した後、要求を自動的に発行することができる。
ステップ434では、最大遅延パイプライン(例えばパイプラインP)に対して発行されるロード命令を含む発行グループを形成することができる。ステップ436では、プロセッサ・コア114に対して発行グループを発行することができ、ステップ438では、遅延キュー(例えば遅延キュー320)で遅延された後、遅延実行パイプラインPでロード命令を実行することができる。上述のように、最大遅延パイプラインに対する命令を実行することにより、命令が実行される前にL2キャッシュ・アクセスを完了することができ(例えば、命令が遅延キュー320を通じて移動中にL2キャッシュ・アクセスを続行することができる)、ロード命令に対するデータが、ロード命令を実行する「ちょうどその時に」到着することができる。
ステップ440では、ロード命令に対するデータをDキャッシュ224に要求することができる。L2キャッシュ112が要求されたデータを含むと仮定して、ステップ428では、要求されたデータがDキャッシュ224から受領され、ステップ442では、プロセッサ・コア114は、命令の実行を続行することができ、ステップ450では、プロセス400は終了することができる。
ある場合には、アクセス要求がL2キャッシュ112に送られ、最大遅延パイプラインで実行するためにロード命令が再発行された後、L2キャッシュ112は要求されたデータを含まない可能性がある。L2キャッシュ112が要求されたデータを含まない場合、上位レベルのキャッシュ・メモリ(例えばL3またはL4キャッシュ)またはシステム・メモリ102あるいはその両方にアクセス要求が行われる間、プロセッサ・コア114は停止することができる。要求されたデータがDキャッシュから受領されたとき、プロセッサ・コア114は、ロード命令と、その後で受領された任意のロード命令の実行を再開することができる。
ある場合には、最小遅延パイプライン(または望むなら、最大遅延パイプライン)は、ロード命令を望み通りに実行するために利用可能ではない可能性がある。一実施形態では、所望の量の遅延を有するパイプラインが利用可能でない場合、「次に良い」パイプラインの選択肢で実行するようにロード命令をスケジューリングすることができる。例えば、最小量の遅延を有するパイプラインPが命令を実行するのに利用可能ではない場合、最小量の遅延を有する次に利用可能なパイプラインで(例えば、選好順に、パイプラインP、P、またはPで)実行するように命令をスケジューリングすることができる。
上述のように、最小量の遅延を有するパイプラインでロード命令を実行することにより、ロード命令がキャッシュ・ミスとなった場合に、無効にする命令の数を削減することができる。さらに、キャッシュ・ミスとなったロード命令を、最大遅延パイプラインに対して再発行することにより、キャッシュ・メモリの上位レベルに対するキャッシュ・アクセスが完了するまでキャッシュ・アクセス命令の実行を延期することができる。以下で説明するように、予測および履歴情報を使用して、命令がキャッシュ・ミスを引き起こす可能性があることを予測する場合、命令のスケジューリングおよび実行における他の最適化も実施することができる。
Dキャッシュ・ミス予測を使用したロード命令のスケジューリング
ある場合には、キャッシュ・ミス予測および履歴情報を使用して、命令が実行されるようにスケジューリングされる(カスケード式遅延実行パイプライン・コア内の)パイプラインを変更することができる。例えば、一実施形態では、発行すべき1群の命令を受け取ることができる。グループ内の命令が、その命令の以前の実行中にキャッシュ・ミスとなった場合、遅延実行パイプライン・ユニット内の別のパイプラインに対して実行が遅延されるパイプラインで実行するように命令をスケジューリングすることができる。遅延パイプラインで実行するように命令をスケジューリングすることにより、(例えば、Dキャッシュ・ミスとなった場合にそれから生じる)上位レベル・キャッシュへのアクセスが実施される間、ロード命令の実行を延期することができる。
図6〜7に、本発明の一実施形態による、Dキャッシュ・ミス予測を使用してロード命令の実行をスケジューリングするプロセス500を示す。プロセス500はステップ502から開始して、ステップ504に進むことができ、ステップ504では、発行グループで実行すべき命令が受領される。ステップ506では、受領された命令がロード命令を含むかどうかについて判定を行うことができる。受領された命令がロード命令を含まない場合、ステップ514で、受領された命令をデフォルト発行グループ内に配置し、プロセッサ・コア114に対して発行し、実行することができる。
受領された命令がロード命令を含む場合、ステップ508で、ロード命令が以前にキャッシュ・ミスを引き起こしたかどうかについて判定を行う。一実施形態では、ロード命令が以前にDキャッシュ・ミスを引き起こしたかどうかについて、Dキャッシュ・ミス情報(例えば、以前のDキャッシュ・ミスの履歴を記録するビット)を使用して判定を行うことができる。以下で説明するように、命令自体、命令を有する命令ラインの一部、そのような情報を格納する特殊メモリ、またはその他の任意の場所、あるいはそれらの組合せにDキャッシュ・ミス情報を格納および維持することができる。
受領されたロード命令が以前にDキャッシュ・ミスを引き起こした場合、ステップ510で、最大遅延実行パイプラインで実行するようにロード命令をスケジューリングすることができるかどうかについて判定を行うことができる。上述のように、所与のパイプラインで命令を実行することができるかどうかについての判定は、パイプラインの処理能力、実行される命令の処理の必要性、および発行グループ内に配置される命令の命令間依存関係に依存する可能性がある。さらに、上述のように、ある場合には、最大遅延(または望むなら、最小遅延)パイプラインに対して命令を発行することを可能にするために、別々の発行グループ内の非互換命令を発行することにより、またはどの発行グループがどの命令を実行するかを修正することにより、発行グループを修正することができる。
遅延実行パイプラインで実行するようにロード命令をスケジューリングすることができる場合、ステップ512で、遅延実行パイプライン(例えばパイプラインP)に対して発行されるようにスケジューリングされたロード命令を含む発行グループを形成することができる。任意選択で、可能なら、利用可能な最大量の遅延を提供する利用可能なパイプラインで実行するように命令をスケジューリングすることができる。
ステップ520では、ロード命令が対象とするデータを求めてL2キャッシュ112に対して要求を発行することができる。要求は、例えばL2キャッシュ・アクセス回路210を使用して発行することができる。以下で説明するように、ある場合には、ロード命令を実行する前にL2キャッシュ・アクセスを開始することができる。任意選択で、ある場合には、ロード命令の一部を実行することができ(例えば、ロード命令に関するロード有効アドレスを計算することができる)、次いで、ロード・データがL2キャッシュ112からフェッチされる間、ロード命令の実行を遅延させることができる。
ステップ522では、プロセッサ・コア114に対して発行グループを発行することができ、ステップ524では、最大遅延実行パイプラインでロード命令を実行することができる。ロード命令が実行されるとき、ステップ526で、ロード命令が対象とするデータを、Dキャッシュ224に要求することができる。ステップ520でL2キャッシュに対して発行された要求が成功した場合、ステップ528で、Dキャッシュ224に要求したデータを受け取ることができる。任意選択で、上述のように、L2キャッシュ112が要求したデータを含まない場合、要求したデータが上位レベルのキャッシュまたはメモリあるいはその両方からフェッチされる間、プロセッサ・コア114は停止することができる。しかし、ロード命令の実行が遅延されるので、停止の長さを削減することができる。要求したデータを受領した後、ステップ530で、命令を引き続き実行することができ、ステップ550で、プロセス500は終了することができる。
上述のように、ロード命令が以前にキャッシュ・ミスを引き起こしたという判定を行ったとき、利用可能な最大遅延パイプラインに対してロード命令を発行することができ、ロード・データを求めてL2キャッシュ112に対して要求を発行することができる。ロード命令が(例えば遅延キュー320で)遅延される間、ロード命令でアクセスされる時間に間に合うようにロード・データがDキャッシュ224に到着するようにL2アクセスを実施することができる。
L2キャッシュ・アクセスを実施するために、ロード命令の有効アドレスを初期に(例えば、ロード命令を、遅延キュー320にロード命令を配置することによって遅延する前に)決定することができる。したがって、一実施形態では、命令がプロセッサ・コア114に対して発行される前、または命令が実行される前に、L2アクセスを開始することができる。例えば、ロード命令がL2キャッシュ112から取り出されるとき、プリデコーダおよびスケジューラ220は、ロード命令が以前にDキャッシュ・ミスとなったかどうかを判定し、そうである場合、L2キャッシュ・アクセスを開始することができる。命令が実行される前にL2アクセスが開始される場合、L2アクセスをプリフェッチと呼ぶことがある(対象のデータが命令の実行前にフェッチされるため)。
本発明の一実施形態では、プリデコーダおよびスケジューラ220がロード命令を復号化中に、ロード命令によって要求されるデータのターゲット・アドレスを決定することができる。例えば、ターゲット・アドレスを命令の一部として直接提供することができる。任意選択で、例えばプリデコーダおよびスケジューラ220またはL2キャッシュ・アクセスを開始するのに使用されるその他の回路にとって利用可能な情報を使用して、ターゲット・アドレスを事前解決可能である。別の実施形態では、ロード命令で要求されるデータのターゲット・アドレスを、命令の最初の実行中に計算することができる。次いで、計算したアドレスを格納し、その後でL2キャッシュ・アクセスを初期化する際に使用することができる。
一実施形態では、ターゲット・アドレスが格納される場合、要求されたデータのターゲット・アドレス全体を格納することができる。任意選択で、一実施形態では、ターゲット・アドレスが格納される場合、ターゲット・アドレスの一部のみを格納することができる(例えば、要求されたデータを含むDラインを識別するのに十分なターゲット・アドレスのアドレス・ビット)。例えば、有効アドレスの上位32ビットだけを使用して、ロード命令の要求されるデータを含むキャッシュされたDラインを配置することができる場合、Dラインをプリフェッチするためにその32ビットだけをターゲット・アドレスとして保存することができる。
本発明の一実施形態では、ロード命令をプロセッサ・コアに対して発行した後、かつロード命令が遅延キュー320内に配置され、または実行ユニット310によって完全に実行される前に、ロード・ターゲット・アドレスを計算することができる。例えば、図8に示すように、各パイプラインは、アドレス生成用ステージ(AGEN)602、602を使用することができる。非遅延パイプラインまたは遅延の小さいパイプラインでは、実行ユニット310の第1ステージとしてAGENステージ602を実行することができる。しかし、最も遅延の大きいパイプラインP3(または遅延の大きい他のパイプライン)では、命令が(例えば遅延キュー320で)遅延される前、かつ命令が(例えば実行ユニット310で)実行される前に、パイプラインの先頭でAGENステージ602を実行することができる。遅延されたパイプラインの先頭でアドレス生成を実行することにより、ロード命令が遅延キュー320で遅延される間に、ロード有効アドレスを迅速に決定することができ、L2キャッシュ・アクセスを開始および実行することができる。次いで、L2キャッシュ112からのデータが、実行ユニット310でのロード命令の実行を完了するのに間に合うように到着することができる。
上述のように、一実施形態では、Dキャッシュ・ミス情報を使用して、ロード命令が以前にDキャッシュ・ミスを引き起こしたかどうかを判定することができる。命令が以前にDキャッシュ・ミスを引き起こしたことをDキャッシュ・ミス情報が示す場合、上述の遅延パイプラインで実行するように命令をスケジューリングすることができる。
一実施形態では、Dキャッシュ・ミス情報は、ロード命令がDキャッシュ・ミスとなったときにそのロード命令に対してセットされる単一ビット(MISビット)を含むことができる。当初、命令が実行される前に、MISビットをクリアすることができ、それによって命令が以前にDキャッシュ・ミスを引き起こしていないことが示される。後に、命令が実行されたとき、命令がDキャッシュ・ミスとなったかどうかについて判定を行うことができる。命令がDキャッシュ・ミスとなった場合、MISビットをセットすることができ、それによって命令が以前にDキャッシュ・ミスを引き起こしたことが示される。その後でロード命令が実行のために(例えばL2キャッシュ112から)取り出されるとき、格納されたMISビットを、例えばプリデコーダおよびスケジューラ220を使用して検査することができる。MISビットがセットされている場合、プリデコーダおよびスケジューラ220は、ロード命令が別のDキャッシュ・ミスとなることを予測することができる。したがって、図6〜7に関して上記で説明したように、ロード命令のターゲット・アドレスを使用してL2キャッシュ・アクセスを開始することができ、利用可能な最大遅延パイプラインで実行するようにロード命令をスケジューリングすることができる。
ある場合には、ロード命令が後で実行され、Dキャッシュ・ミスとならない場合、MISを0にクリアすることができ、その後でロード命令がDキャッシュ・ミスとならない可能性があることが示される。任意選択で、MISを(例えば、スティッキ・ビットとして)1にセットしたままにすることができ、それによってロード命令が以前にDキャッシュ・ミスを引き起こしたことがあり、恐らくは別のDキャッシュ・ミスとなる可能性があることが示される。
ある場合には、MISビットがセットされ、要求されたデータがDキャッシュから首尾よく取り出された場合、どのようにデータがDキャッシュ内に配置されたかを求めることが有用であることがある。例えば、ある場合には、MISビットが使用されてデータがプリフェッチされたのでDキャッシュ・ミスを回避することができる。任意選択で、ある場合には、データをプリフェッチすることなくDキャッシュ・ミスを回避することができる(例えば、データが既にDキャッシュ内にある可能性があり、L2アクセスが不要である可能性がある)。一実施形態では、セットされたMISビットに基づくプリフェッチのために(例えばDライン内の)データがDキャッシュ224内に配置されるかどうかを示すようにビットを格納することができる。プロセッサ110でビットを使用して、Dキャッシュ・ミスを防ぐ際のプリフェッチの有効性を判定することができる。
任意選択で、プリデコーダおよびスケジューラ220(または任意選択でプリフェッチ回路)はまた、プリフェッチが不要であることを判定し、それに応じてIライン内のMISビットを変更することができる。例えばプリフェッチされるデータが既にDキャッシュ224内にあるためにプリフェッチが不要である場合、上述のようにMISビットをクリアすることができる。プリデコーダおよびスケジューラは、例えばDキャッシュ・ディレクトリ225をチェックすることにより、またはフェッチされたデータまたはDラインあるいはその両方のリストを維持することにより、要求されたデータがDキャッシュ224内にあるかどうかを判定することができる。
本発明の一実施形態では、複数の履歴ビット(HIS)を使用して、ロード命令がDキャッシュ・ミスとなるかどうかを予測し、どのようにロード命令を実行のためにスケジューリングすべきかを判定することができる。例えば、HISが2つの2進ビットである場合、00は、Dキャッシュ・ミスの予測なしに対応することができ、一方01、10、および11は、それぞれDキャッシュ・ミスの弱い予測、強い予測、および非常に強い予測に対応することができる。ロード命令がDキャッシュ・ミスとなるごとに、HISを増分して、Dキャッシュ・ミスに関する予測レベルを増大させることができる。HISが11であり、後続のDキャッシュ・ミスが検出されたとき、HISは11のままとどまることができる(例えば、カウンタは00に戻るのではなく、11で飽和することができる)。ロード命令がDキャッシュ・ミスとならなかったごとに、HISを減分することができる。ある場合には、複数の履歴ビットが使用される場合、複数の履歴ビットを使用して、どのデータ・アドレスを格納すべきかを判定し、かつどのようにロード命令をスケジューリングするかを判定することのどちらにも使用することができる。
上述のように、Dキャッシュ・ミス情報およびターゲット・アドレスを使用して、L2キャッシュ・アクセスを開始するかどうかを判定することができる。ある場合には、Dキャッシュ224またはDキャッシュ・ディレクトリ225あるいはその両方をまずチェックして、ロード命令が対象とするデータが実際にDキャッシュ内にあるかどうかを判定することなく、L2キャッシュ・アクセスを実施することができる。例えば、ある場合には、Dキャッシュ・ディレクトリ255に対して要求が開始される前にL2キャッシュ・アクセスを開始することができる。L2キャッシュ・アクセスが開始された後、(例えばL2キャッシュ・アクセス回路210を使用して)Dキャッシュ・ディレクトリ225に対して要求を発行することができる。Dキャッシュ224が要求されたデータを含まないとDキャッシュ・ディレクトリが示す場合、L2アクセスを続行することができる。L2キャッシュ・アクセスがまず開始され、その後にDキャッシュ・ディレクトリ225に対して要求が発行された場合、Dキャッシュ・ディレクトリ225に対する要求に関する結果を待つことなくL2アクセスが開始されたので、短い時間でL2アクセスを完了することができる。要求されたデータがDキャッシュ224内に含まれることをDキャッシュ・ディレクトリ225が示す場合、要求されたデータがDキャッシュ224を介してアクセスされる間に、L2キャッシュ・アクセスの結果を廃棄することができる。
任意選択で、ある場合には、プリデコーダおよびスケジューラ220がL2キャッシュ112からIラインまたはDラインをプリフェッチすることを試みる前に、プリデコーダおよびスケジューラ220(または任意選択で他のプリフェッチ回路)は、要求されたデータを含むDラインが既にDキャッシュ224に含まれているかどうか、または要求されたIラインまたはDラインを求めるプリフェッチ要求が既に発行されているかどうかを判定することができる。例えば、最近フェッチまたはプリフェッチされたIラインまたはDライン・アドレスの履歴を含む小さいキャッシュまたはバッファを使用して、IラインまたはDラインに対してプリフェッチ要求が既に発行されているかどうか、または要求されたIラインまたはDラインが既にIキャッシュ222またはDキャッシュ224内に存在するかどうかを判定することができる。
要求されたIラインまたはDラインが既にIキャッシュ222またはDキャッシュ224内に存在する場合、L2キャッシュ・プリフェッチは不要であり、したがって実行しなくてよい。上述のように、第2プリフェッチ要求が以前のプリフェッチ要求によって不要となった場合、格納されたDキャッシュ・ミス情報を修正することができる。例えば、ロード命令のL2キャッシュ・プリフェッチおよび修正後スケジューリングが不要であることを示すようにDキャッシュ・ミス情報を修正することができる。
命令ビット、Iライン・ビット、または特殊キャッシュ、あるいはそれらの組合せを用いることを含む様々な方式で、Dキャッシュ・ミス情報およびターゲット・アドレスを格納することができる。本発明の一実施形態では、Dキャッシュ・ミス情報およびターゲット・アドレス(必要な場合)をロード命令ごとに格納することができる。任意選択で、ある場合には、一部の命令(例えば、Dキャッシュ・ミスとなった命令、または同じIライン内の他の命令よりも頻繁にDキャッシュ・ミスとなるIライン内の命令)についてのみDキャッシュ・ミス情報またはターゲット・アドレスあるいはその両方を格納することができる。
一実施形態では、Dキャッシュ・ミス情報またはターゲット・アドレスあるいはその両方を、ロード命令を含むIラインに格納することができる。図9は、本発明の一実施形態による、Iライン702内のロード命令に関するDキャッシュ・ミス情報またはターゲット・アドレスあるいはその両方を格納するのに使用される例示的Iライン702を示すブロック図である。
図示するように、Iラインは、複数の命令(命令1、命令2など)、アドレスを格納するのに使用されるビット(例えば有効アドレスEA)、および制御情報(CTL)を格納するのに使用されるビットを含むことができる。本発明の一実施形態では、図9に示す制御ビットCTLを使用して、ロード命令に関するDキャッシュ・ミス情報(例えばMISビットまたはHISビットあるいはその両方)を格納するのに使用することができ、EAビットを使用して、ロード命令で要求されるデータのターゲット・アドレスを格納することができる。
Iライン702内にDキャッシュ・ミス情報を格納する一例として、Iライン702内の命令が実行されるときに、プロセッサ・コア114は、Iライン内のロード命令がDキャッシュ・ミスを引き起こしたかどうかを判定することができる。Dキャッシュ・ミスを検出した場合、命令に関するターゲット・アドレス(またはその一部)をEAに格納することができ、他のミス情報(例えばMISまたはHISビット)をCTLビットに格納することができる。ある場合には、Iライン702内のロード命令の位置をCTLビットに格納することもできる。例えば、各Iラインが32個の命令を含む場合、CTLビットに格納された(命令位置を識別するのに十分なビットを含む)5ビットの2進ビットを使用して、格納されたDキャッシュ・ミス情報およびターゲット・アドレスに対応するロード命令を識別することができる。
本発明の一実施形態では、ターゲット・アドレスまたはDキャッシュ・ミス情報またはその両方がIラインに格納される場合、システム100で使用されるキャッシュまたはメモリあるいはその両方の各レベルは、Iラインに含まれる情報のコピーを含むことができる。本発明の別の実施形態では、指定のレベルのキャッシュまたはメモリあるいはその両方だけが、命令またはIラインあるいはその両方に含まれる情報を含むことができる。当業者には周知であるキャッシュ・コヒーレンシ原理を使用して、キャッシュまたはメモリあるいはその両方の各レベルのIラインのコピー更新することができる。
命令キャッシュを使用する従来のシステムでは、一般に命令がプロセッサ110で修正されないことに留意されたい。したがって、従来のシステムでは、一般に、ある時間の後にIラインがL2キャッシュ112に書き戻されるのではなく、Iキャッシュ222からエージアウトされる。しかし、本明細書で述べるように、ある実施形態では、修正後のIラインまたは命令あるいはその両方をL2キャッシュ112に書き戻すことができ、それによってプリフェッチ・データを上位のキャッシュ・レベルまたはメモリ・レベルあるいはその両方で維持することが可能となる。
一例を挙げると、Iライン内の命令がプロセッサ・コアで処理されたとき(恐らくはターゲット・アドレスまたはDキャッシュ・ミス情報あるいはその両方が更新される)、(例えばライトバック回路238を使用して)IラインをIキャッシュ222に書き込むことができ、恐らくはIキャッシュ222に格納されたIラインの古いバージョンが上書きされる。一実施形態では、格納された情報に対して変更が行われたIラインだけをIキャッシュ222に配置することができる。任意選択で、一実施形態では、Iラインを常にIキャッシュ222に書き戻すことができる。
本発明の一実施形態によれば、修正後IラインがIキャッシュ222に書き戻されるとき、Iラインに変更済みと印を付けることができる。IラインがIキャッシュ222に書き戻され、変更済みと印が付けられた場合、Iラインは、様々な時間にわたってIキャッシュにとどまることができる。例えば、Iラインがプロセッサ・コア114で頻繁に使用されている場合、何回かIラインをフェッチし、Iキャッシュ222に返すことができ、恐らくはその度にIラインが更新される。しかし、Iラインが頻繁に使用されない場合(エージングと呼ばれる)、IラインをIキャッシュ222からパージすることができる。IラインがIキャッシュ222からパージされるとき、Iラインに変更済みと印を付けるかどうかについて判定を行うことができる。Iラインに変更済みと印を付ける場合、IラインをL2キャッシュ112に書き戻すことができる。任意選択で、Iラインを常にL2キャッシュ112に書き戻すことができる。一実施形態では、任意選択でIラインをいくつかのキャッシュ・レベルに(例えば、L2キャッシュ112およびIキャッシュ222に)すぐに書き戻すことができ、またはIキャッシュ222以外のレベルに(例えば、直接的にL2キャッシュ112に)書き戻すことができる。
一実施形態では、ロード命令で要求されるデータのターゲット・アドレスを、図9に示すIラインに直接格納する(付加する)ことができる。格納されるターゲット・アドレスEAは、有効アドレスまたは有効アドレスの一部(例えば有効アドレスの上位32ビット)でよい。ターゲット・アドレスEAは、ロード命令で要求されるデータを識別することができ、または任意選択で、対象データのアドレスを含むDラインを識別することができる。一実施形態によれば、Iラインは、Iライン内のロード命令にそれぞれ対応する複数のアドレスを格納することができる。
ある場合には、EAビットまたはCTLビットあるいはその両方を、Iライン内にその目的で割り振られたビットに格納することができる。本発明の一実施形態では、本明細書で述べる有効アドレス・ビットEAおよび制御ビットCTLを、普通なら未使用のIラインのビットに格納することができる。例えば、L2キャッシュ112内の各情報ラインは、異なるキャッシュ・レベル間で転送されるデータの誤り訂正のために使用することのできる余分なデータ・ビット(例えば、転送されたデータが壊れていないことを保証し、生じた破壊を修復するのに使用される誤り訂正コードECC)を有することができる。ある場合には、各レベルのキャッシュ(例えばL2キャッシュ112およびIキャッシュ222)は、各Iラインの同一のコピーを含むことができる。各レベルのキャッシュが所与のIラインのコピーを含む場合、ECCを使用する代わりに、例えば、パリティ・ビットを使用して、Iラインがキャッシュ間で適切に転送されたかどうかを判定することができる。Iラインがキャッシュ間で不適切に転送されていることをパリティ・ビットが示す場合、誤りチェックを実施する代わりに、(転送元キャッシュはラインを含むので)転送元キャッシュからIラインを再フェッチすることができる。
普通なら未使用のIラインのビットにアドレスおよび制御情報を格納する一例として、格納された2ワードごとに誤り訂正用に11ビットを使用する誤り訂正プロトコルを考慮する。Iラインでは、11ビットのうちの1つを使用して、2命令ごとにパリティ・ビットを格納することができる(1ワード当たり1命令が格納される場合)。残りの1命令当たり5ビットを使用して、命令ごとの制御ビットまたはアドレス・ビットあるいはその両方を格納することができる。例えば、5ビットのうちの4ビットを使用して、命令に関するDキャッシュ・ミス情報(MISビットまたはHISビットあるいはその両方など)を格納することができる。Iラインが32個の命令を含む場合、残りの32ビット(命令ごとに1ビット)を使用して、例えばロード命令のターゲット・アドレスのすべてまたは一部を格納することができる。上述のように、ある場合には、ロード命令ごとのターゲット・アドレスを抽出し、Iラインに格納することができる。任意選択で、最も頻繁に実行されるロード命令に関するターゲット・アドレスを抽出し、Iラインに格納することができる。
本発明の一実施形態では、Iラインは複数のロード命令を含むことができ、Dキャッシュ・ミス情報をロード命令ごとに格納することができる。一実施形態では、複数のDキャッシュ・ミス履歴を追跡することができるが、命令のうち最も頻繁に予測されるDキャッシュ・ミスに対応する1つのターゲット・アドレスだけをEAに格納することができる。任意選択で、Dキャッシュ・ミスとなったロード命令ごとのターゲット・アドレスを単一のIラインに格納することができる。以下で説明するように、(例えば、ロード命令で引き起こされるDキャッシュ・ミスが予測可能ではなく、または予測に関するしきい値を超えているために)ロード命令に関する有効アドレスが格納されない場合、(例えば図4〜5に関して上記で説明したように)実行のために最小遅延パイプラインに対してロード命令を発行することができ、それによってロード命令のターゲット・アドレスが迅速に解決され、ロード命令がDキャッシュ・ミスとなるかどうかが判定される。
ある場合には、命令が復号化され、または実行され、あるいはその両方が行われた後に、Dキャッシュ・ミス情報をロード命令に格納することができる(再符号化と呼ばれる)。図10は、本発明の一実施形態による例示的再符号化ロード命令704を示すブロック図である。ロード命令704は、命令のタイプを識別するのに使用されるOPコード、1つまたは複数のレジスタ・オペランド(REG.1、REG.2)、またはデータ、あるいはそれらの組合せを含むことができる。図示するように、ロード命令704は、MISビットまたはHISビットあるいはその両方を格納するのに使用されるビットも含むことができる。
ロード命令704が実行されるとき、ロード命令がDキャッシュ・ミスとなるかどうかについて判定を行うことができる。判定の結果、MISビットまたはHISビットあるいはその両方を上述のように修正することができる。次いで、MISビットまたはHISビットあるいはその両方を命令704の一部として符号化することができ、それによって、命令がその後で復号化されたとき、例えばプリデコーダおよびスケジューラ220でMISビットまたはHISビットあるいはその両方を検査することができる。次いで、プリデコーダおよびスケジューラは、L2キャッシュ・アクセスを開始し、実行のためにロード命令704を適宜スケジューリングすることができる。上述のように、ある場合には、ロード命令704が再符号化されるとき、その命令を含むIラインに変更済みと印を付け、Iキャッシュ222に書き戻すことができる。
一実施形態では、命令を再符号化するために命令704の他のビットを使用することもできる。例えば、命令704内のビットを使用して、ロード命令が独立か、解決可能か、またはその両方かを記録することができる。さらに、命令704内のビットを使用して、所与のパイプライン、例えば最大遅延パイプラインに命令を割り当てることができるかどうかを記録することができる。
一実施形態では、上述のように、命令が実行された後に命令704内のビットを再符号化することができる。ある場合には、命令が上位レベル・ソース・コードからコンパイルされるときに、命令内にDキャッシュ・ミス情報を符号化することもできる。例えば、一実施形態では、ソース・コードをコンパイルするのに使用されるコンパイラを、Dキャッシュ・ミスとなる可能性のあるロード命令を認識し、それに応じてロード命令内のMISビットまたはHISビットあるいはその両方をセットするように設計することができる。
任意選択で、プログラムのソース・コードを作成した後、ソース・コードを複数の命令にコンパイルすることができ、次いでテスト実行中にそれらの命令を実行することができる。テスト実行およびテスト実行の結果を監視して、どのロード命令がDキャッシュ・ミスとなったかを判定することができる。次いで、テスト実行に照らしてロード命令に関するMISビットまたはHISビットあるいはその両方が適切な値にセットされるようにソース・コードを再コンパイルすることができる。ある場合には、テスト実行をプロセッサ110上で実行することができる。ある場合には、プロセッサ110内の制御ビットまたは制御ピンを使用して、プロセッサ110をテスト実行用の特殊テストモードに設定することができる。任意選択で、テスト実行を実行し、結果を監視するように設計された特殊プロセッサを使用することができる。
本発明の一実施形態では、シャドー・キャッシュと呼ばれる特殊キャッシュにDキャッシュ・ミス情報(MISビットまたはHISビットあるいはその両方)を格納することができる。例えば、ロード命令がDキャッシュ・ミスとなったとき、エントリをシャドー・キャッシュに設定することができる。ロード命令のアドレス(または任意選択で、ロード命令を含むIラインのアドレス)を、シャドー・キャッシュへの索引として使用することができる。ロード命令のターゲット・アドレスを求めるのに使用される情報(例えば、事前復号化中またはロード命令の以前の実行中に計算された有効アドレス)をシャドー・キャッシュで維持することもできる。上述のように、ロード命令を含む発行グループがプロセッサ・コア114に対して発行されるとき(またはその他の任意の適切な時間)に、ターゲット・アドレス情報を使用してL2キャッシュ・アクセスを開始することができる。
一実施形態では、ロード命令を含むIラインが(例えばプリデコーダおよびスケジューラ220によって)受領されたとき、フェッチされたIラインに対応するエントリ(例えば、フェッチされたIラインと同じ有効アドレスを有するエントリ)を求めてシャドー・キャッシュを探索することができる(例えば、シャドー・キャッシュは内容アドレス可能でよい)。対応するエントリが見つかった場合、必要なら、エントリに関連するDキャッシュ・ミス履歴情報またはターゲット・アドレスあるいはその両方をプリデコーダおよびスケジューラ220またはその他の回路で使用して、ロード命令をスケジューリングし、L2キャッシュを開始することができる。
本発明の一実施形態では、シャドー・キャッシュは、上述の制御ビット(例えばDキャッシュ・ミス情報)とターゲット・アドレスを共に格納することができる。任意選択で、他の情報がシャドー・キャッシュに格納される間に、Iラインまたは個々の命令あるいはその両方に制御ビットを格納することができる。どちらの場合でも、一実施形態では、どのエントリをIラインに格納すべきかを決定することに関して上記で列挙した原理のいずれかに従ってシャドー・キャッシュ内のエントリを管理することができる。一例を挙げると、強く予測されるDキャッシュ・ミスとなるロード命令のターゲット・アドレスをシャドー・キャッシュに格納することができ、一方、弱く予測されるDキャッシュ・ミスに対応するシャドー・キャッシュに格納されたターゲット・アドレスを上書きすることができる。
どのエントリをシャドー・キャッシュに格納するかを決定するための上述の技法を使用することに加えて、一実施形態では、従来のキャッシュ管理技法を排他的に、または上述の技法を含めて使用して、シャドー・キャッシュを管理することができる。例えば、シャドー・キャッシュ内のエントリは、シャドー・キャッシュ内のエントリがアクセスされる頻度を示すエージ・ビットを有することができる。所与のエントリが頻繁にアクセスされる場合、エージ値は小さい(例えば、初期の)ままでよい。しかし、エントリへのアクセスがまれである場合、エージ値を増加することができ、ある場合にはエントリをシャドー・キャッシュから廃棄することができる。
本発明の一実施形態では、命令の実行中にターゲット・アドレスおよびDキャッシュ・ミス情報を継続的に追跡および更新することができ、それによって、所与の1組の命令が実行されるときにDキャッシュ・ミス情報および他の格納値が経時的に変化することができる。したがって、例えばプログラムが実行されるときに、ターゲット・アドレスおよびDキャッシュ・ミス情報を動的に修正することができる。
本発明の別の実施形態では、1組の命令の初期実行段階中(例えば、プログラムが実行される初期「トレーニング」期間中)にターゲット・アドレスおよびDキャッシュ・ミス情報を格納することができる。初期実行段階は、初期化段階またはトレーニング段階とも呼ばれることがある。トレーニング段階の間、Dキャッシュ・ミス情報を追跡することができ、上述の基準に従って1つまたは複数のターゲット・アドレスを(例えば、命令を含むIラインまたはシャドー・キャッシュに)格納することができる。トレーニング段階が完了したとき、格納されたターゲット・アドレスおよびDキャッシュ・ミス情報を引き続き使用して、データ・プリフェッチを実行し、ロード命令の実行をスケジューリングすることができる。
一実施形態では、(例えば、ロード命令を含むIラインあるいは特殊なキャッシュまたはレジスタに格納された)1つまたは複数のビットを使用して、命令がトレーニング段階で実行中であるかどうか、またはプロセッサ110がトレーニング段階モードであるかどうかを示すことができる。例えば、トレーニング段階中はプロセッサ110内のモード・ビットをクリアすることができる。ビットがクリアされている間、上述のようにDキャッシュ・ミス情報を追跡することができ、ターゲット・アドレスを更新することができる。トレーニング段階が完了したとき、ビットをセットすることができる。ビットがセットされると、ターゲット・アドレスはもはや更新されず、トレーニング段階を完了することができる。
一実施形態では、トレーニング段階は、指定の期間の間(例えば、いくつかのクロック・サイクルが経過するまで、または所与の命令が数回実行されるまで)継続することができる。一実施形態では、指定の期間が経過し、トレーニング段階を終了するとき、最も新しく格納されたターゲット・アドレスまたはDキャッシュ・ミス情報あるいはその両方が格納されたままでよい。
本発明の別の実施形態では、トレーニング段階は、1つまたは複数の終了基準が満たされるまで継続することができる。例えば、Dキャッシュ・ミス履歴が格納される場合、初期実行段階は、Dキャッシュ・ミスが予測可能(または強く予測可能)となるまで継続することができる。ロード命令の結果が予測可能となったとき、初期トレーニング段階が完了したこと、および強く予測可能なロード命令に関するターゲット・アドレスを、命令がL2キャッシュ112からフェッチされるときに実行される後続のプリフェッチングおよびスケジューリングのために使用することができることを示すロック・ビットをIラインでセットすることができる。
本発明の別の実施形態では、ターゲット・アドレスおよびキャッシュ・ミス情報を周期的トレーニング段階で修正することができる。例えば、トレーニング段階ごとの頻度および持続時間値を格納することができる。頻度に対応する数のクロック・サイクルが経過するごとに、トレーニング段階を開始することができ、指定の持続時間値の間継続することができる。別の実施形態では、頻度に対応する数のクロック・サイクルが経過するごとに、トレーニング段階を開始することができ、指定のしきい値条件が満たされるまで(例えば、上述のように、命令に対する指定のレベルのDキャッシュ・ミス予測可能性に達するまで)継続することができる。
ある場合には、MISビットまたはHISビットあるいはその両方は、最大遅延実行パイプラインに対して発行することのできるロードに対してのみセットすることができる。任意選択で、命令が独立または事前解決可能あるいはその両方であるかどうかを示す第2ビットを命令の中に再符号化し、MISビットまたはHISビットあるいはその両方と共に使用して、命令の適切なスケジューリングを決定することができる。
別の実施形態
本発明の一実施形態では、MISビットまたはHISビットあるいはその両方がセットされる場合、ロード命令がDキャッシュ・ミスとはならないことをMISビットまたはHISビットあるいはその両方が予測する場合、あるいはロード命令に対するターゲット・アドレスの計算または格納あるいはその両方を行っていない場合、あるいはそれらの組合せである場合、最小遅延パイプライン(例えばP)で実行するようにロード命令をスケジューリングすることができ、その結果、命令の結果(例えば、命令がDキャッシュ・ミスまたは命令のターゲット・アドレスあるいはその両方となるかどうか)を迅速に解決することができ、プロセッサ・コア114で生じる停止または命令無効化(それが存在する場合)を最小限に抑えることができる。あるいは、Dキャッシュ・ミスが予測され、かつ有効なターゲット・アドレスが利用可能である場合、上述のように、最大遅延パイプラインに対して命令を発行することができ、L2キャッシュ・アクセスを開始することができる。
図11〜13に、本発明の一実施形態による、Dキャッシュ・ミス情報を使用してロード命令のスケジューリングを決定するプロセス800を示す。図示するように、プロセス800はステップ802から開始して、ステップ804に進むことができ、ステップ804では、発行されたグループで実行すべき命令が受領される。受領された命令がロード命令を含む場合、ステップ808で、ロード命令が以前にキャッシュ・ミスを引き起こしたかどうかについて判定を行うことができる。ロード命令が以前にキャッシュ・ミスを引き起こしたかどうかについての判定は、例えばMISビットをチェックすることによって行うことができる。MISビットがセットされている場合、ロード命令が以前にキャッシュ・ミスを引き起こしたことを示している可能性がある。
ロード命令が以前にキャッシュ・ミスとなった場合、ステップ810で、最大遅延実行パイプラインで実行するようにロード命令をスケジューリングすることができるかどうかについて判定を行うことができる。上述のように、最大遅延パイプラインがロード命令が必要とする機能を提供しない場合、最大遅延パイプラインに対して別の命令を発行する必要がある場合、命令に対するターゲット・アドレスが計算されていない場合、またはその他の何らかの理由で、最大遅延パイプラインでロード命令を実行できないことがある。任意選択で、最大遅延パイプラインに対して命令を発行することができない場合、最も遅延の大きい次に利用可能なパイプラインに対して命令を発行するように試みることができる。
最大遅延パイプラインで実行するようにロード命令をスケジューリングすることができる場合、ステップ832で、最大遅延パイプラインに対して発行されるロード命令を含む発行グループを形成することができる。ステップ834では、ロード命令の対象とするデータを求めてL2キャッシュ112に対して要求を発行することができ、ステップ836では、発行グループを発行することができる。ステップ838では、最大遅延パイプライン(P)でロード命令を実行することができる。次いで、ステップ840では、ロード命令が対象とするデータをDキャッシュ224に要求することができる。
ステップ842では、要求したデータがL2キャッシュ112から取り出され、Dキャッシュ224内に配置されたと仮定して、要求したデータをDキャッシュ224から受領することができる。次いで、ステップ844では、プロセッサ・コア114が命令の実行を続行することができ、ステップ850でプロセス800は終了することができる。
ステップ808および810に戻ると、ロード命令が以前にDキャッシュ・ミスとならなかった場合、または最大遅延パイプラインで実行するようにロード命令をスケジューリングすることができない場合、プロセス800は、最小遅延パイプラインに対してロード命令をスケジューリングすることを試みて、ロード命令がDキャッシュ・ミスとなるかどうかを判定し、またはロード命令のターゲット・アドレスを求め、あるいはその両方を行うことができる。したがって、ステップ812では、最小遅延実行パイプラインで実行するようにロード命令をスケジューリングすることができるかどうかについて判定を行うことができる。最小遅延パイプラインでロード命令を実行することができない場合、ステップ814で、受領された命令をデフォルト発行グループ内に配置し、それを発行し、実行することができる。
最小遅延実行パイプラインで実行するようにロード命令をスケジューリングすることができる場合、ステップ820で、最小遅延パイプライン(P)に対して発行されるロード命令を含む発行グループを形成することができ、ステップ822で、発行グループを発行することができる。
ステップ824では、最小遅延パイプラインでロード命令を実行することができる。ステップ826では、ロード命令に関するデータをDキャッシュ224に要求することができ、Dキャッシュ・ディレクトリ225をチェックして、要求したデータがDキャッシュ224内にあるかどうかを判定することができる。次いで、ステップ828では、要求したデータがDキャッシュ224内にあることをDキャッシュ・ディレクトリ225が示すかどうかについて判定を行うことができる。要求したデータがDキャッシュ224内にある場合、ステップ842で、要求したデータを受領することができ、ステップ844で、プロセス800は命令の実行を続行することができる。
しかし、Dキャッシュ224が要求したデータを含まない場合、ステップ830で、プロセッサ・コア114に対してその後で発行された命令を無効にすることができ、ステップ832で、(可能なら)最大遅延実行パイプラインに対して発行されるロード命令を含む発行グループを形成することができる。次いで、上述のように、要求したデータを求めてL2キャッシュ112に要求を送ることができる。任意選択で、要求したデータがDキャッシュ224内にないことをDキャッシュ・ディレクトリ225が示すとすぐに、ロード命令が対象とするデータを求めてL2キャッシュ112に要求を自動的に転送することができる。次いで、発行グループを発行し(ステップ836)、ロード命令を実行し(ステップ838)、Dキャッシュ224にデータを要求し(ステップ840)、Dキャッシュ224からデータを受領し(ステップ842)、命令の実行に進み(ステップ844)、ステップ850で終了することによって記述されるようにプロセス800が続行することができる。
したがって、上述のように、Dキャッシュ・ミスとなると予測されるロード命令を最大遅延実行パイプラインに対して発行することにより、ロード命令で要求されるデータが上位レベルのキャッシュまたはメモリあるいはその両方からフェッチされる間にロード命令の実行を遅延させることによってプロセッサ停止を防止または低減することができる。しかし、ロード命令が以前に実行されていない場合、Dキャッシュ・ミスを引き起こすことに関してロード命令が予測不能である場合、またはロード命令が対象とするデータを求めることができない場合、最小遅延実行パイプラインに対して命令を発行することができ、それによって、命令の結果を迅速に解決することが可能となり、プロセッサ・コア114の停止となることが最小限に抑えられる。
ある場合には、セットされたDキャッシュ・ミス・フラグを有するロード命令を、最小遅延パイプラインまたは遅延の小さいパイプラインで実行するようにスケジューリングすることができ、ロード命令の結果を別のパイプライン(例えば、実行が遅延されるパイプライン)に転送することができる。例えば、図14は、Dキャッシュ・ミス情報を使用して、本発明の一実施形態による、ロード命令のスケジューリングを決定するプロセス900を示す流れ図である。図示するように、プロセス900は、実行すべきロード命令がメモリから受領されるステップ902から開始する。ステップ904では、ロード命令を実行することができ、ステップ906では、ロード命令がキャッシュ・ミスとなった場合、Dキャッシュ・ミスを示すフラグをセットすることができる。
ステップ908では、後続の事前復号化中に、セットされたDキャッシュ・ミス・フラグを検出することができ、可能な最小遅延実行パイプライン(例えばパイプラインP0)で実行するようにロード命令をスケジューリングすることができる。例えば、最小遅延パイプラインが利用可能ではない場合、プロセッサ・コア114内の他のパイプラインに対して遅延の小さいパイプライン(例えばパイプラインP1、P2など)で実行するようにロード命令をスケジューリングすることができる。ある場合には、(例えば、第1パイプラインで実行するようにスケジューリングされた他の命令の実行を可能にするために)命令の実行を停止することなくパイプラインに対してロード命令を発行することができる場合にのみ、(例えば、最小遅延パイプラインまたは遅延の小さいパイプラインに対する)そのようなスケジューリングを実施することができる。任意選択で、スケジューリングの結果が停止となった場合であっても、最小遅延実行パイプラインまたは遅延の小さい実行パイプラインで実行するようにロード命令をスケジューリングすることができる。
ある場合には、確認カウントを記録することができる。以下でより詳細に説明するように、確認カウントを使用して、Dキャッシュ・ミス・フラグがDキャッシュ・ミスとなる可能性のあるロード命令を正確に特定するかどうかを判定することができる。Dキャッシュ・ミスとなる可能性のあるロード命令をDキャッシュ・ミス・フラグが正確に特定しない場合、ある場合には、スケジューリングの目的でフラグを無視することができ、またはロード命令がスケジューリングされる条件を修正することができる。
したがって、ステップ910では、ロード命令の後続の実行中に、L2キャッシュ・アクセスを実施してロード・データを得ることができるが、Dキャッシュ・ディレクトリ225をチェックして、ロード・データが既にDキャッシュ224内にあるかどうかをチェックすることができる。(Dキャッシュ・ディレクトリ225で示されるように)データがDキャッシュ224内にある場合、ステップ912で、確認カウントを減少させることができ(カウントがゼロに達したときに停止する)、当該のデータが既にDキャッシュ224に内にあり、Dキャッシュ・ミスが発生しなかったことが示される。あるいは、データがDキャッシュ224内にない場合、カウントを増加させることができ(カウンタが飽和するまで)、Dキャッシュ・ミスが発生したことが示される。
ステップ914では、ロード・データがL2キャッシュ112から受領されたとき、実行において遅延の大きいパイプライン(例えば、ロード命令を実行するパイプラインの遅延よりも大きい)にロード・データを転送することができる(転送されるロード・データを受け取るパイプラインで命令を実行するのにそのような転送が必要である場合)。ある場合には、パイプラインの遅延差の量がL2キャッシュ・アクセス待ち時間以上でよく、それによって、転送が実施される前に、ロード命令に関するL2キャッシュ・アクセスを終了することが可能となる。したがって、遅延が最も小さい実行パイプラインでロード命令を実行することにより、転送され、例えば実行における遅延が大きいパイプラインで実行される他の命令で使用されるのに間に合うようにロード・データを受領することができる。
図15は、本発明の一実施形態による、ロード・データを転送することのできるプロセッサ・コア1014を示すブロック図である。図示するように、プロセッサ・コアは、複数の遅延実行パイプライン(P0、P1、...P5)を含むことができる。ある場合には、ある実行ユニット310から他の実行ユニットに転送経路312を設けることができる。ある場合には、遅延の小さい実行パイプラインから遅延の大きいパイプラインに転送3120−2を設けることができ、そのような転送3120−2を使用して、ロード命令の結果を、その結果を使用する別の命令に転送することができる。ある場合には、ある実行ユニットから別の実行ユニットに転送3120−2を実施することができる。任意選択で、ある場合には、遅延ターゲット・キュー330から実行ユニット310に転送3120−2を実施することができる。
上述のように、ある場合には、プロセッサ・コア114内の他のパイプラインに対して遅延の小さいいくつかのパイプラインの1つでロード命令を実行すべくスケジューリングすることができる。例えば、図15に関して、パイプラインP0でロード命令をスケジューリングすることにより、パイプラインP0から遅延の大きいパイプライン(例えばパイプラインP3、P4、またはP5)のいくつかへの転送を実施することが可能となる。しかし、例えば、ロード命令を実行する前に別の命令を実行するために、当該別の命令がパイプラインP0で実行されるようにスケジューリングされる場合、コア114内の他のパイプラインに対して遅延の小さい別のパイプライン(例えばパイプラインP1またはP2)にロード命令を配置することができる。遅延の小さいパイプラインにロード命令を配置することにより、遅延のより大きいパイプラインの1つへの転送を実現することができる。例えば、パイプラインP1は、パイプラインP4またはP5への転送を実現することができ、パイプラインP2は、パイプラインP5への転送を実現することができる。ロード・データをそこから転送することができる複数の遅延の小さいパイプラインを設けることにより、Dキャッシュ・ミスとなる可能性のあるロード命令の実行のスケジューリングに関してより高い柔軟性を実現することができる。
上述のように、確認カウントを使用して、例えばどのようにロード命令を実行するかを決定することができる。例えば、確認カウントが一定のしきい値よりも上である場合(例えば、確認カウントが2または3である場合)、ロード命令が発行中に停止するか否かに関わらず、上述のように、最小遅延パイプラインまたは遅延の小さいパイプラインに対してロード命令を発行することができる。例えば、ある場合には、プログラムは、各ロードが前のロード命令の結果を使用して後続のロードを実行する従属ロードの連鎖を実行することがある。そのような従属ロード連鎖は、プログラムが一連のポインタを使用してデータにアクセスする場合に生じることがある。従属ロード連鎖がプロセッサ110で実行するために受領された場合、従属ロード連鎖内の命令(例えば、従属ロード連鎖内の最初の命令)がキャッシュ・ミスとなった場合、第1命令でロードされるデータがフェッチされるまで、各命令を停止することができる。ある場合、そのような停止は、命令実行が停止され、命令が処理されていない間のプロセッサ110の消費電力を低くすることができるので有益である。
確認カウントが上限しきい値と下限しきい値の間の別の範囲内にある場合(例えば、確認カウントが1である場合)、プリデコーダおよびスケジューラ回路220は、最小遅延実行パイプラインまたは遅延の小さい実行パイプラインに対してロード命令をスケジューリングすることを試みることができるが、停止することなく、最小遅延実行パイプラインまたは遅延の小さい実行パイプラインに対してロード命令をスケジューリングすることができない場合、プロセッサは、プロセッサ・パイプラインのうちの1つ(例えば、パイプラインP3、P4、またはそれ以上)に対してロード命令を発行し、遅延の小さいパイプラインのうちの1つでのロード命令の実行をやめることができる。
さらに、確認カウントが所与のしきい値未満(例えば、確認カウントがゼロである場合のように下限しきい値未満)である場合、プリデコーダおよびスケジューラ220は、ロード命令がキャッシュ・ミスとならないことを予測することができ、実行のためにデフォルト発行グループ内にロード命令を配置することができる(例えば、ロード命令を普通にスケジューリングすることができる)。さらに、ある場合には、確認カウントがゼロに達した場合、ミス・フラグがいわゆる「スティッキ・ビット」である場合であっても、ロード命令に関するDキャッシュ・ミス・フラグをクリアすることができる。
ある場合には、プロセッサ110は、ロード連鎖を検出し、従属ロード連鎖を検出したことに応答して、Dキャッシュ・ミス情報の記憶を修正することができる。例えば、同一のデータ・ラインにアクセスすることを試みる複数のロード命令がそれぞれキャッシュ・ミスとなる場合、プロセッサはロード命令のグループ内の最初のロード命令だけにキャッシュ・ミスとして印を付けることで十分である。データ・ラインが最初のロード命令でロードされた後、即時実行のために後続のロード命令で同一のデータ・ラインを使用することができるからである。そのような判定は、キャッシュ・ミスとなる複数のロード命令を検出し、複数の検出したロード命令に関するロード・アドレスを比較し、検出したロード命令のうちのどれが同一のロード・アドレスを有するかを判定することを含むことができる。プロセッサ110は、どのロード命令が同一のロード・アドレスを有するかを判定したとき、どのロード命令が最も早く実行されたか(例えば第1ロード命令)を判定し、検出した合致するロード命令のグループ内の第1ロード命令についてのみDキャッシュ・ミス・フラグをセットすることができる。
一実施形態では、関連する予測レベルをそれぞれ有する複数のロード命令を発行グループが含む場合、命令ごとの予測レベルに従ってスケジューリングの選好を与えることができる。例えば、ロード命令がDキャッシュ・ミスとなることが強く予測される場合、Dキャッシュ・ミスとなることが弱く予測される同一の発行グループ内の命令に優先して、最大遅延パイプラインで実行するように命令をスケジューリングすることができる。任意選択で、発行グループを2つの発行グループに分割することができ、最大遅延実行パイプラインに対して各命令を発行することが可能となる。
ある場合には、遅延がL2キャッシュ・アクセスを完了するのに必要な時間以上となるように、最大遅延実行パイプライン内の遅延量を選択することができ、それによってL2キャッシュ・アクセス待ち時間が隠される。例えば、L1キャッシュが要求されたデータを含まないという判定が行われる時間から、要求されたL2キャッシュ112から利用可能であるという判定が行われる時間までL2キャッシュ・アクセス時間を測定することができる(データを上位レベルのキャッシュまたはメモリあるいはその両方からフェッチする必要がないと仮定する)。言い換えれば、要求されたデータがDキャッシュ224内にないことをL1Dキャッシュ・ディレクトリ225が示した後にL2キャッシュ・アクセスを完了するのに7サイクルかかる場合、最大遅延パイプライン内の遅延量を7サイクルにセットすることができ、したがって、最大遅延パイプラインに対して命令を再発行し、遅延キュー320内に保持し、要求されたデータがL2キャッシュ112から到着したときに実行することが可能となる。最大遅延実行パイプラインに対してそのような遅延を挿入することを、例えばステージ遅延を遅延キュー320に挿入することによって実施することができる。
ある場合には、(例えば、Dキャッシュ・ミスとなることが予測されるロード命令について)L2キャッシュ・アクセスが開始される前に、L2キャッシュ・アクセス回路210は、L2キャッシュからDラインをプリフェッチすることができ、L2キャッシュ・アクセス回路210は、まずDキャッシュ・ディレクトリ225を使用して、ロード命令が対象とするデータを含むDラインが既にDキャッシュ内に位置しているかどうかを判定することができる。Dラインが既にDキャッシュ内に位置していることをL1ディレクトリ225が示す場合、L2プリフェッチは不要であり、L2プリフェッチ回路は、L2キャッシュ112に対してプリフェッチ要求を発行しなくてよい。DラインがまだDキャッシュ224内に位置していないことをDキャッシュ・ディレクトリ225が示す場合、L2キャッシュ・アクセス回路210は、L2キャッシュ112に適切なDラインを要求することができる。
ある場合には、MISビットがセットされており、命令がDキャッシュ・ミスとなる可能性が高いとMISビットが予測する場合、予測の信頼性が低い可能性があり、例えば命令がDキャッシュ・ミスとはならない可能性がある。そのような状況では、命令の反復実行がDキャッシュ・ミスとならない場合、MISビットを後でクリアすることができる。例えば、カウンタは、ロード命令がDキャッシュ・ミスとならなかった以前の回数を記録することができる。命令がDキャッシュ・ミスとなるごとに、カウンタを0にリセットすることができる。命令がDキャッシュ・ミスとならなかったごとに、カウンタを増分することができる。カウンタが所与のしきい値に達したとき(例えば、4回連続のミスなし)、予測ビットMISをクリアすることができる。任意選択で、命令がミスとなったごとにカウンタをリセットする代わりに、カウンタを減分することができる。
MIS予測ビットをクリアする機構を提供することにより、プロセッサは、所与のロード命令を最大遅延実行パイプラインに対して不必要にスケジューリングすることを回避することができる。さらに、予測ビットがクリアされる場合、別のビットをセットして、命令がDキャッシュ・ミスとなるかどうかが予測不能であることを示すことができる。上述のように、ロード命令の結果が予測不能である場合、最小遅延パイプラインに対してロード命令を発行して、ロード命令の結果を早期に解決することができ、それによって、結果として生じるプロセッサ停止が最小限に抑えられる。
上記では、本発明の実施形態を対象としたが、本発明の基本的範囲から逸脱することなく本発明の別の実施形態を考案することができ、本発明の範囲は、特許請求の範囲で決定される。
本発明の一実施形態によるシステムを示すブロック図である。 本発明の一実施形態によるコンピュータ・プロセッサを示すブロック図である。 本発明の一実施形態によるプロセッサのコアのうちの1つを示すブロック図である。 本発明の一実施形態による遅延実行パイプラインで命令を実行するプロセスを示す図である。 本発明の一実施形態による遅延実行パイプラインで命令を実行するプロセスを示す図である。 本発明の一実施形態による、Dキャッシュ・ミス予測を使用してロード命令の実行をスケジューリングするプロセスを示す図である。 本発明の一実施形態による、Dキャッシュ・ミス予測を使用してロード命令の実行をスケジューリングするプロセスを示す図である。 本発明の一実施形態による、早期アドレス生成ステージを有する例示的遅延実行プロセッサ・パイプラインを示すブロック図である。 本発明の一実施形態による、Iライン内のロード命令に関するDキャッシュ・ミス情報またはターゲット・アドレスあるいはその両方を格納するのに使用される例示的Iラインを示すブロック図である。 命令の一実施形態による例示的再符号化ロード命令を示すブロック図である。 本発明の一実施形態による、Dキャッシュ・ミス情報を使用してロード命令のスケジューリングを求めるプロセスを示す図である。 本発明の一実施形態による、Dキャッシュ・ミス情報を使用してロード命令のスケジューリングを求めるプロセスを示す図である。 本発明の一実施形態による、Dキャッシュ・ミス情報を使用してロード命令のスケジューリングを求めるプロセスを示す図である。 本発明の一実施形態による、Dキャッシュ・ミス情報を使用して、最小遅延実行パイプラインに対するロード命令のスケジューリングを決定するプロセスを示す流れ図である。 本発明の一実施形態による、転送経路を有するカスケード式遅延実行パイプラインを示すブロック図である。
符号の説明
100 システム
102 システム・メモリ
104 グラフィックス処理装置
108 記憶装置
110 プロセッサ
112 L2キャッシュ
114 プロセッサ・コア
116 L1キャッシュ
112 L2キャッシュ
210 L2アクセス回路
220 プリデコーダおよびスケジューラ
222 Iキャッシュ
223 Iキャッシュ・ディレクトリ
224 Dキャッシュ
225 Dキャッシュ・ディレクトリ
232 Iライン・バッファ
234 発行およびディスパッチ回路
236 命令フェッチング回路
238 ライトバック回路
240 レジスタ・ファイル
250 キャッシュ・ロードおよびストア回路
310 実行ユニット
320 遅延キュー
330 ターゲット遅延キュー
602 アドレス生成用ステージ(AGEN)
702 Iライン
704 再符号化ロード命令
1014 プロセッサ・コア

Claims (16)

  1. 共通発行グループ内の命令を互いに対して遅延式に実行する2つ以上の実行パイプラインを有する少なくとも1つのカスケード式遅延実行パイプライン・ユニットを有するプロセッサでの命令の実行をスケジューリングする方法であって、
    命令の発行グループを受け取るステップと、
    前記発行グループ内の第1命令が前記第1命令の以前の実行中にキャッシュ・ミスとなったかどうかを判定するステップと、
    そうである場合、前記カスケード式遅延実行パイプライン・ユニット内の1つのパイプラインに対して実行が遅延される別のパイプラインで実行するように前記第1命令をスケジューリングするステップと
    を含む方法。
  2. 前記発行グループ内の第1命令がキャッシュ・ミスとなったかどうかを判定するステップが、
    前記第1命令が前記以前の実行中に前記キャッシュ・ミスとなったかどうかを示すミス予測ビットの値を求めるステップ、
    を含む請求項1に記載の方法。
  3. 前記ミス予測ビットが、前記第1命令の前記以前の実行中に前記第1命令の中に符号化される請求項2に記載の方法。
  4. 前記ミス予測ビットの前記値が、初期トレーニング段階中に修正され、前記ミス予測ビットの前記値が、前記初期トレーニング段階の満了後に一定となる請求項2に記載の方法。
  5. 前記発行グループ内の前記第1命令が前記キャッシュ・ミスとなったと判定したことに応答して、前記第1命令が対象とするデータを求める要求がレベル2キャッシュに送られる請求項1に記載の方法。
  6. 前記第1命令が対象とするデータを求める前記要求が、前記データのターゲット・アドレスを含み、前記データの前記ターゲット・アドレスが、前記第1命令の以前の実行中に計算され、前記第1命令を含む命令ラインに付加される請求項5に記載の方法。
  7. 前記発行グループ内の前記第1命令が前記キャッシュ・ミスとなったかどうかについての判定が、前記第1命令がレベル2キャッシュから取り出された後、かつ前記第1命令がレベル1キャッシュ内に配置される前に実施される請求項1に記載の方法。
  8. 共通発行グループ内の命令を互いに対して遅延式に実行する2つ以上の実行パイプラインを有するカスケード式遅延実行パイプライン・ユニットと、
    命令の発行グループを受け取り、
    前記発行グループ内の第1命令が前記第1命令の以前の実行中にキャッシュ・ミスとなったかどうかを判定し、
    そうである場合、前記カスケード式遅延実行パイプライン・ユニット内の1つのパイプラインに対して実行が遅延される別のパイプラインで実行するように前記第1命令をスケジューリングする
    ように構成された回路と
    を備える集積回路デバイス。
  9. レベル2キャッシュをさらに備え、
    前記回路が、前記発行グループ内の前記第1命令が前記キャッシュ・ミスとなったと判定したことに応答して、前記第1命令が対象とするデータを求める要求をレベル2キャッシュに対して発行するようにさらに構成される請求項8に記載の集積回路デバイス。
  10. レベル2キャッシュと、
    レベル1キャッシュと
    をさらに備え、
    前記発行グループ内の前記第1命令が前記キャッシュ・ミスとなったかどうかについての判定が、前記第1命令がレベル2キャッシュから取り出された後、かつ前記第1命令がレベル1キャッシュ内に配置される前に実施される請求項8に記載の集積回路デバイス。
  11. 共通発行グループ内の命令を互いに対して遅延式に実行する2つ以上の実行パイプラインを有するカスケード式遅延実行パイプライン・ユニットと、
    命令の発行グループを受け取り、
    前記発行グループ内の第1命令が前記第1命令の以前の実行中にキャッシュ・ミスとなったかどうかを判定し、
    そうである場合、
    前記カスケード式遅延実行パイプライン・ユニット内の第2パイプラインに対して実行の遅延が小さい第1パイプラインで実行するように前記第1命令をスケジューリングする
    ように構成された回路と
    を備える集積回路デバイス。
  12. 前記回路が、前記第1命令に関するデータを前記第1パイプラインから前記第2パイプラインに転送するようにさらに構成される請求項11に記載の集積回路デバイス。
  13. 前記データが、前記第1パイプライン内の実行ユニット内のステージから前記第2パイプラインに転送される請求項12に記載の集積回路デバイス。
  14. 前記データが、前記第1パイプライン内の遅延ターゲット・キューから第2パイプラインに転送される請求項13に記載の集積回路デバイス。
  15. 前記回路が、
    前記第1命令が発行されるときに、前記第1命令が要求するデータがレベル1データ・キャッシュ内にあるかどうかを判定し、
    そうでない場合、前記第1命令がキャッシュ・ミスとなったことを示すカウンタを増分し、
    そうである場合、前記第1命令がキャッシュ・ミスとなったことを示すカウンタを減分する
    ようにさらに構成される請求項11に記載の集積回路デバイス。
  16. 前記回路が、
    前記カウンタがしきい値未満である場合、停止なしで前記第1命令をスケジューリングすることができる場合にのみ、前記第1パイプラインで実行するように前記第1命令をスケジューリングする
    ようにさらに構成される請求項15に記載の集積回路デバイス。
JP2007025520A 2006-02-09 2007-02-05 データ・キャッシュ・ミス予測およびスケジューリング Active JP5089186B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/351,239 US7594078B2 (en) 2006-02-09 2006-02-09 D-cache miss prediction and scheduling
US11/351239 2006-02-09

Publications (2)

Publication Number Publication Date
JP2007213578A true JP2007213578A (ja) 2007-08-23
JP5089186B2 JP5089186B2 (ja) 2012-12-05

Family

ID=38335352

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007025520A Active JP5089186B2 (ja) 2006-02-09 2007-02-05 データ・キャッシュ・ミス予測およびスケジューリング

Country Status (4)

Country Link
US (1) US7594078B2 (ja)
JP (1) JP5089186B2 (ja)
CN (1) CN100487642C (ja)
TW (1) TWI396131B (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009009570A (ja) * 2007-06-27 2009-01-15 Internatl Business Mach Corp <Ibm> レジスタ状態エラー回復および再開機構
JP2009009569A (ja) * 2007-06-27 2009-01-15 Internatl Business Mach Corp <Ibm> 複数のロード命令を実行するための方法および装置
JP2009540411A (ja) * 2006-06-07 2009-11-19 インターナショナル・ビジネス・マシーンズ・コーポレーション 高速で安価なストア−ロード競合スケジューリング及び転送機構
JP2010026583A (ja) * 2008-07-15 2010-02-04 Hiroshima Ichi プロセッサ
JP2013504815A (ja) * 2009-09-11 2013-02-07 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド データストリームのためのストアアウェアプリフェッチ
JP5630798B1 (ja) * 2014-04-11 2014-11-26 株式会社Murakumo プロセッサーおよび方法
JP2018536230A (ja) * 2015-10-29 2018-12-06 アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited キャッシュへのアクセス
JP2020013362A (ja) * 2018-07-19 2020-01-23 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8065505B2 (en) * 2007-08-16 2011-11-22 Texas Instruments Incorporated Stall-free pipelined cache for statically scheduled and dispatched execution
US20090210664A1 (en) * 2008-02-15 2009-08-20 Luick David A System and Method for Issue Schema for a Cascaded Pipeline
US8108654B2 (en) * 2008-02-19 2012-01-31 International Business Machines Corporation System and method for a group priority issue schema for a cascaded pipeline
US8095779B2 (en) * 2008-02-19 2012-01-10 International Business Machines Corporation System and method for optimization within a group priority issue schema for a cascaded pipeline
US7984270B2 (en) 2008-02-19 2011-07-19 International Business Machines Corporation System and method for prioritizing arithmetic instructions
US7882335B2 (en) * 2008-02-19 2011-02-01 International Business Machines Corporation System and method for the scheduling of load instructions within a group priority issue schema for a cascaded pipeline
US7865700B2 (en) 2008-02-19 2011-01-04 International Business Machines Corporation System and method for prioritizing store instructions
US20090210672A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Resolving Issue Conflicts of Load Instructions
US7870368B2 (en) 2008-02-19 2011-01-11 International Business Machines Corporation System and method for prioritizing branch instructions
US7996654B2 (en) * 2008-02-19 2011-08-09 International Business Machines Corporation System and method for optimization within a group priority issue schema for a cascaded pipeline
US20090210666A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Resolving Issue Conflicts of Load Instructions
US7877579B2 (en) * 2008-02-19 2011-01-25 International Business Machines Corporation System and method for prioritizing compare instructions
US8140760B2 (en) * 2009-05-28 2012-03-20 International Business Machines Corporation I-cache line use history based done bit based on successful prefetchable counter
US8171224B2 (en) * 2009-05-28 2012-05-01 International Business Machines Corporation D-cache line use history based done bit based on successful prefetchable counter
US8332587B2 (en) * 2009-05-28 2012-12-11 International Business Machines Corporation Cache line use history based done bit modification to I-cache replacement scheme
US8291169B2 (en) * 2009-05-28 2012-10-16 International Business Machines Corporation Cache line use history based done bit modification to D-cache replacement scheme
JP5609092B2 (ja) * 2009-12-09 2014-10-22 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN102780616B (zh) * 2012-07-19 2015-06-17 北京星网锐捷网络技术有限公司 基于多核处理器的报文处理方法、装置和网络设备
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
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
CN106484682B (zh) 2015-08-25 2019-06-25 阿里巴巴集团控股有限公司 基于统计的机器翻译方法、装置及电子设备
CN106484681B (zh) 2015-08-25 2019-07-09 阿里巴巴集团控股有限公司 一种生成候选译文的方法、装置及电子设备
US10379940B2 (en) * 2016-12-08 2019-08-13 Sandisk Technologies Llc Pipeline delay detection during decoding by a data storage device
US10417127B2 (en) * 2017-07-13 2019-09-17 International Business Machines Corporation Selective downstream cache processing for data access
US20190065384A1 (en) * 2017-08-22 2019-02-28 Qualcomm Incorporated Expediting cache misses through cache hit prediction
US11106583B2 (en) * 2019-05-24 2021-08-31 Texas Instmments Incorporated Shadow caches for level 2 cache controller
CN117270972B (zh) * 2023-11-21 2024-03-15 芯来智融半导体科技(上海)有限公司 指令处理方法、装置、设备和介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1185513A (ja) * 1997-09-03 1999-03-30 Hitachi Ltd プロセッサ
JPH11110215A (ja) * 1997-10-03 1999-04-23 Keisuke Shindo マルチスレッドプログラムを使用する情報処理装置
JP2002333978A (ja) * 2001-05-08 2002-11-22 Nec Corp Vliw型プロセッサ

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6081872A (en) * 1997-07-07 2000-06-27 International Business Machines Corporation Cache reloading performance improvement through the use of early select techniques with and without pipelining
US6085290A (en) * 1998-03-10 2000-07-04 Nexabit Networks, Llc Method of and apparatus for validating data read out of a multi port internally cached dynamic random access memory (AMPIC DRAM)
US6748493B1 (en) * 1998-11-30 2004-06-08 International Business Machines Corporation Method and apparatus for managing memory operations in a data processing system using a store buffer
US6389529B1 (en) 1999-06-25 2002-05-14 International Business Machines Corporation Method for alternate preferred time delivery of load data
US6622235B1 (en) 2000-01-03 2003-09-16 Advanced Micro Devices, Inc. Scheduler which retries load/store hit situations
US6769057B2 (en) 2001-01-22 2004-07-27 Hewlett-Packard Development Company, L.P. System and method for determining operand access to data
US6912648B2 (en) 2001-12-31 2005-06-28 Intel Corporation Stick and spoke replay with selectable delays
US7136992B2 (en) * 2003-12-17 2006-11-14 Intel Corporation Method and apparatus for a stew-based loop predictor

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1185513A (ja) * 1997-09-03 1999-03-30 Hitachi Ltd プロセッサ
JPH11110215A (ja) * 1997-10-03 1999-04-23 Keisuke Shindo マルチスレッドプログラムを使用する情報処理装置
JP2002333978A (ja) * 2001-05-08 2002-11-22 Nec Corp Vliw型プロセッサ

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009540411A (ja) * 2006-06-07 2009-11-19 インターナショナル・ビジネス・マシーンズ・コーポレーション 高速で安価なストア−ロード競合スケジューリング及び転送機構
JP2009009570A (ja) * 2007-06-27 2009-01-15 Internatl Business Mach Corp <Ibm> レジスタ状態エラー回復および再開機構
JP2009009569A (ja) * 2007-06-27 2009-01-15 Internatl Business Mach Corp <Ibm> 複数のロード命令を実行するための方法および装置
JP2010026583A (ja) * 2008-07-15 2010-02-04 Hiroshima Ichi プロセッサ
JP4759026B2 (ja) * 2008-07-15 2011-08-31 公立大学法人広島市立大学 プロセッサ
JP2013504815A (ja) * 2009-09-11 2013-02-07 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド データストリームのためのストアアウェアプリフェッチ
JP5630798B1 (ja) * 2014-04-11 2014-11-26 株式会社Murakumo プロセッサーおよび方法
JP2018536230A (ja) * 2015-10-29 2018-12-06 アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited キャッシュへのアクセス
JP7038656B2 (ja) 2015-10-29 2022-03-18 アリババ・グループ・ホールディング・リミテッド キャッシュへのアクセス
JP2020013362A (ja) * 2018-07-19 2020-01-23 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP7131156B2 (ja) 2018-07-19 2022-09-06 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Also Published As

Publication number Publication date
TWI396131B (zh) 2013-05-11
US20070186073A1 (en) 2007-08-09
CN100487642C (zh) 2009-05-13
US7594078B2 (en) 2009-09-22
CN101017430A (zh) 2007-08-15
JP5089186B2 (ja) 2012-12-05
TW200813822A (en) 2008-03-16

Similar Documents

Publication Publication Date Title
JP5089186B2 (ja) データ・キャッシュ・ミス予測およびスケジューリング
US7447879B2 (en) Scheduling instructions in a cascaded delayed execution pipeline to minimize pipeline stalls caused by a cache miss
US8812822B2 (en) Scheduling instructions in a cascaded delayed execution pipeline to minimize pipeline stalls caused by a cache miss
JP5137948B2 (ja) ローカル及びグローバル分岐予測情報の格納
JP5357017B2 (ja) 高速で安価なストア−ロード競合スケジューリング及び転送機構
US7730283B2 (en) Simple load and store disambiguation and scheduling at predecode
JP5084280B2 (ja) データ・ラインのための自己プリフェッチl2キャッシュ機構
US20070288733A1 (en) Early Conditional Branch Resolution
US20070186049A1 (en) Self prefetching L2 cache mechanism for instruction lines
US8301871B2 (en) Predicated issue for conditional branch instructions
US20070288732A1 (en) Hybrid Branch Prediction Scheme
US20070288731A1 (en) Dual Path Issue for Conditional Branch Instructions
US20080162908A1 (en) structure for early conditional branch resolution
US20070288734A1 (en) Double-Width Instruction Queue for Instruction Execution
JP5128382B2 (ja) 複数のロード命令を実行するための方法および装置
US20080162907A1 (en) Structure for self prefetching l2 cache mechanism for instruction lines
US20080162819A1 (en) Design structure for self prefetching l2 cache mechanism for data lines
US20080162905A1 (en) Design structure for double-width instruction queue for instruction execution

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091030

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: 20120821

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120911

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150921

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5089186

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150