JP2007207240A - データ・ラインのための自己プリフェッチl2キャッシュ機構 - Google Patents

データ・ラインのための自己プリフェッチl2キャッシュ機構 Download PDF

Info

Publication number
JP2007207240A
JP2007207240A JP2007019613A JP2007019613A JP2007207240A JP 2007207240 A JP2007207240 A JP 2007207240A JP 2007019613 A JP2007019613 A JP 2007019613A JP 2007019613 A JP2007019613 A JP 2007019613A JP 2007207240 A JP2007207240 A JP 2007207240A
Authority
JP
Japan
Prior art keywords
data
instruction
line
cache
address
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
JP2007019613A
Other languages
English (en)
Other versions
JP5084280B2 (ja
Inventor
David A 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 JP2007207240A publication Critical patent/JP2007207240A/ja
Application granted granted Critical
Publication of JP5084280B2 publication Critical patent/JP5084280B2/ja
Expired - Fee Related 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

Landscapes

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

Abstract

【課題】 キャッシュされたメモリを用いるプロセッサにおいて命令及びデータを取り出すことについて改善された方法を提供すること。
【解決手段】 方法は、レベル2キャッシュから第1命令ラインをフェッチするステップと、第1の命令ラインから、第1の命令ラインまたは異なる命令ラインに含まれているデータ・アクセス命令のターゲットとされたデータを含む第1のデータ・ラインの識別アドレスを抽出するステップと、抽出されたアドレスを用いて、レベル2キャッシュから第1のデータ・ラインをプリフェッチするステップを含む。
【選択図】 図2

Description

本発明は、一般に、コンピュータ・プロセッサの分野に関する。より具体的には、本発明は、コンピュータ・プロセッサによって用いられるキャッシュ機構に関する。
現代のコンピュータ・システムは、一般的に、コンピュータ・システム内の情報を処理するために使用することができるプロセッサを含む、数個の集積回路(IC)を備える。プロセッサによって処理されたデータは、プロセッサによって実行されるコンピュータ命令を含み、さらに、そのコンピュータ命令を用いるプロセッサによって取り扱われるデータを含むことができる。一般的に、コンピュータ命令およびデータは、コンピュータ・システムのメイン・メモリに格納される。
プロセッサは、一般的に、一連の小ステップに分けて命令を実行することによって命令を処理するの。プロセッサによって処理される命令の数を増やす(そしてプロセッサの速度を上げる)ために、プロセッサをパイプラインすることができる場合がある。ここで、「パイプラインすること」とは、各々が1つの命令を実行するために必要な小ステップの1以上を行う独立した段を、プロセッサに提供することをいう。パイプラインは(他の回路に加えて)、プロセッサ・コアと呼ばれるプロセッサの一部に配置することができる。プロセッサは、複数のプロセッサ・コアを有することができる場合がある。
パイプラインにおける命令実行の1つの例として、第1の命令が受信されたときに、第1のパイプライン段はその命令の小部分を処理することができる。第1のパイプライン段がその命令の小部分の処理を終了したときに第2のパイプライン段が第1の命令の別の小部分の処理を開始することができ、その間に第1のパイプライン段は第2の命令を受信し、その小部分の処理を開始する。このようにして、プロセッサは、2以上の命令を同時に(並行して)処理することができる。
データおよび命令へのより高速のアクセス、および、プロセッサのより良好な活用を提供するために、プロセッサは、数個のキャッシュを有することができる。キャッシュとは、一般的に、メイン・メモリより小さく、プロセッサと同じダイ(すなわちチップ)上に製造されるメモリである。現代のプロセッサは、一般的に、複数のレベルのキャッシュを有する。プロセッサ・コアの最も近辺に設置される最も高速のキャッシュは、レベル1キャッシュ(L1キャッシュ)と呼ばれる。プロセッサは、一般的に、L1キャッシュに加えて、レベル2キャッシュ(L2キャッシュ)と呼ばれる、第2のより大型のキャッシュを有する。プロセッサは、他の付加的なレベルのキャッシュを有することもある(例えば、L3キャッシュおよびL4キャッシュ)。
プロセッサにプロセッサのパイプラインの各段を満たすのに十分な命令を与えるために、プロセッサは、L2キャッシュから命令ラインと呼ばれる複数の命令を含んだグループの形で命令を取り出すことができる。取り出された命令ラインはL1命令キャッシュ(I−キャッシュ)に配置することができ、プロセッサ・コアは命令ラインにある命令にアクセスすることができる。同様に、プロセッサによって処理されるべきデータ・ブロックは、L2キャッシュから取り出し、L1キャッシュ・データ・キャッシュ(D−キャッシュ)に配置することができる。
より上位レベルのキャッシュから情報を取り出し、その情報をより下位レベルのキャッシュに配置するプロセスは「フェッチする」と称され、一般的に、ある程度の時間(待ち時間)を要する。例えば、プロセッサ・コアが情報を要求し、その情報がL1キャッシュに存在しなかった場合(これはキャッシュ・ミスと呼ばれる)、その情報をL2キャッシュからフェッチすることができる。要求された情報のために次のレベルのキャッシュ/メモリが検索されることから、キャッシュ・ミスは付加的な待ち時間をもたらす。例えば、要求された情報がL2キャッシュに存在しなかった場合には、プロセッサは、L3キャッシュやメイン・メモリの中にその情報を探すであろう。
プロセッサは、ある命令およびデータを、キャッシュおよび/またはメモリから取り出される命令およびデータよりも速く処理することができる場合がある。例えば、命令ラインが処理された後で、処理されるべき次の命令ラインにアクセスするために時間がかかる場合がある(例えば、次の命令を含む命令ラインを求めてL1キャッシュが検索された時に、キャッシュ・ミスがあった場合など)。プロセッサがより上位レベルのキャッシュまたはメモリから次の命令ラインを取り出している間に、パイプライン段は前の命令の処理を終了し、それ以上処理する命令が残っていない場合がある(これは、パイプライン停止と呼ばれる)。パイプラインが停止したときには、プロセッサは活用されておらず、パイプラインされたプロセッサ・コアによって得られる利益を失うことになる。
命令(そして命令ライン)は、一般的に、逐次的に処理されることから、プロセッサは、逐次的にアドレスされた命令ラインのブロックをフェッチすることによって、パイプライン停止を防ぐことを試みる場合がある。逐次的にアドレスされた命令ラインのブロックをフェッチすることにより、次の命令ラインは必要とされた時に既にL1キャッシュにおいて利用可能となることができ、したがって、プロセッサ・コアは、現行の命令ラインにある命令の処理を終了したときに、次の命令ラインにある命令に容易にアクセスすることができる。
逐次的にアドレスされた命令ラインのブロックをフェッチしても、パイプライン停止を防ぐことができない場合がある。例えば、出口分岐(exit branch)命令と呼ばれる命令は、プロセッサを、逐次的にアドレスされた命令ラインのブロックの外部にある命令(ターゲット命令と呼ばれる)へ分岐させる場合がある。ここで、出口分岐命令は、現行の命令ラインに存在しないかまたは次の逐次的にアドレスされ既にフェッチされた命令ラインに存在するターゲット命令へ分岐する場合がある。したがって、分岐が行われるとプロセッサが判定したときに、出口分岐のターゲット命令を含む次の命令ラインは、L1キャッシュにおいて利用可能とならない場合がある。その結果として、パイプラインが停止し、プロセッサが非効率的に動作する場合がある。
データをフェッチすることに関して、命令がデータにアクセスする場合に、プロセッサが、L1キャッシュにあるデータを含むデータ・ラインを見つけることを試みる場合がある。データ・ラインがL1キャッシュにおいて見つけられなかった場合には、所望のデータ・ラインを求めてL2キャッシュ、および、上位のメモリが検索されている間、プロセッサが停止する場合がある。所望のデータのアドレスは命令が実行されるまで知られないことから、プロセッサは、その命令が実行されるまで所望のデータ・ラインを検索することができない場合がある。プロセッサが実際にデータ・ラインを検索したときに、キャッシュ・ミスが起こってパイプラインが停止することがある。
プロセッサは、現行のアクセスされているデータ・アドレスに近い(連続する)データ・アドレスを含むデータ・ラインのブロックをフェッチすることによって、こうしたキャッシュ・ミスを防ぐようにされる場合がある。近傍のデータ・ラインをフェッチすることは、あるデータ・ラインに存在するデータ・アドレスがアクセスされたときに、その近傍のデータ・アドレスもまたアクセスされる可能性が高いという仮定に依拠している(この仮定は、一般に、「参照の局所性」と呼ばれる)。しかし、この仮定が正しくない場合もあり、そのような場合、命令により現行のデータ・ラインの近傍に位置していないデータ・ラインにあるデータがアクセスされることによって、キャッシュ・ミスおよびプロセッサの非効率性がもたらされる。
したがって、キャッシュされたメモリを用いるプロセッサにおいて命令およびデータを取り出すことについて改善された方法に対する必要性が存在する。
本発明の実施形態は、データ・ラインをプリフェッチするための方法および装置を提供する。方法は、レベル2キャッシュから第1の命令ラインをフェッチするステップと、第1の命令ラインから、第1の命令ラインまたは異なる命令ラインに含まれているデータ・アクセス命令のターゲットとされたデータを含む第1のデータ・ラインの識別アドレスを抽出するステップと、抽出されたアドレスを用いて、レベル2キャッシュから第1のデータ・ラインをプリフェッチするステップとを含む。
ある実施形態においては、プロセッサが提供される。プロセッサは、レベル1キャッシュと、レベル2キャッシュと、プロセッサ・コアと、回路とを備える。レベル1キャッシュは、レベル2キャッシュから、1以上の命令を含む命令ラインを受信するように構成される。プロセッサ・コアは、レベル1キャッシュから取り出された命令を実行するように構成される。回路は、レベル2キャッシュから第1の命令ラインをフェッチし、第1の命令ラインまたは異なる命令ラインに含まれているデータ・アクセス命令のターゲットとされたデータを含む第1のデータ・ラインの識別アドレスをその第1の命令ラインにおいて識別し、抽出されたアドレスを用いて、レベル2キャッシュから第1のデータ・ラインをプリフェッチするように構成される。
ある実施形態においては、命令ラインにデータ・ターゲット・アドレスを格納する方法が提供される。方法は、命令ラインにある1以上の命令を実行するステップと、1以上の命令がデータ・ラインの中のデータにアクセスし、キャッシュ・ミスをもたらすかどうかを判定するステップと、キャッシュ・ミスをもたらすと判定された場合に、データ・ラインに対応するデータ・ターゲット・アドレスを、プリフェッチ機構によってアクセス可能な位置に格納するステップとを含む。
ある実施形態においては、プロセッサが提供される。プロセッサは、命令ラインにある1以上の命令を実行するプロセッサ・コアと、1以上の命令がデータ・ラインの中のデータにアクセスし、キャッシュ・ミスをもたらすかどうかを判定し、キャッシュ・ミスをもたらすと判定された場合に、データ・ラインに対応するデータ・ターゲット・アドレスを、プリフェッチ機構によってアクセス可能な位置に格納する回路を備える。
本発明の上記の特徴、利点、および目的が得られる手法が詳細に理解できるように、上記で要約された本発明のより具体的な説明が、添付の図面に示されている本発明の実施形態を参照することによってなされる。
しかし、添付の図面は本発明の典型的な実施形態のみを図示するものであって、本発明の範囲を限定するものと見なされるべきではないことに留意すべきである。
本発明の実施形態は、データ・ラインをプリフェッチするための方法および装置を提供する。本発明の実施形態においては、データ・ラインにあるデータをターゲットにするデータ・アクセス命令(例えばロード命令または格納命令)について、フェッチされている命令ラインを検査することができる。このようなデータ・アクセス命令のターゲット・データ・アドレスを抽出して、ターゲットにされたデータを含むデータ・ラインをL2キャッシュからプリフェッチするために用いることができる。その結果として、データ・ターゲティング命令が実行された場合に、ターゲットにされたデータ・ラインは、既にL1データ・キャッシュ(「D−キャッシュ」)に存在するようにすることができ、そうすることによって、コストのかかるデータ・キャッシュ・ミスをなくして全体の性能を向上させることができる。
本発明の実施形態においては、プリフェッチ・データ(例えば、ターゲット・アドレス)は、プリフェッチ・データが属する(例えば命令ラインまたはデータ・ラインに付加された)対応する情報ブロックの形で従来のキャッシュ・メモリに格納することができる。例えば、対応する情報のラインがキャッシュ・メモリからフェッチされる際に、そこに含まれているプリフェッチ・データを検査して、他の関連する情報のラインをプリフェッチするために用いることができる。次いで、各々の他のプリフェッチされた情報のラインに格納されたプリフェッチ・データを用いて、同様のプリフェッチを行うことができる。フェッチされた命令ライン内の情報を用いて、命令ラインにある命令によってターゲットとされたデータを含むデータ・ラインをプリフェッチすることにより、フェッチされた情報ブロックに関連付けられたキャッシュ・ミスを防ぐことができる。
本発明の実施形態によれば、プリフェッチ・データを命令ラインの一部としてキャッシュに格納することにより、プリフェッチ・データおよび予測データを排他的に格納する特別なキャッシュまたはメモリを不要とすることができる。しかし、上述されたように、かかる情報は、そうした履歴情報の格納を専門とする特別なキャッシュまたはメモリを含むいかなる位置に格納してもよい。また、異なるキャッシュ(およびキャッシュ・ライン)、バッファ、専用キャッシュ、および他の位置の組み合わせを用いて、ここに説明された履歴情報を格納することができる場合がある。
以下は、添付の図面に図示された本発明の実施形態の詳細な説明である。本発明の実施形態はあくまで例示であり、本発明を明確に教示するため、詳細なものとなっている。しかし、開示された詳細な説明は、実施形態の予期される変形物を排除することを意図しておらず、逆に、添付の特許請求の範囲によって定められる本発明の精神および範囲内にある全ての修正物、均等物、および代替物を包含することにあることを意図している。
本発明の実施形態は、例えばコンピュータ・システムなどのシステムとともに用いることができ、また、そうしたシステムに関して説明される。本明細書において用いられるシステムという用語は、パーソナル・コンピュータ、インターネット機器、ディジタル・メディア機器、携帯情報端末(PDA)、携帯型音楽/映像再生機、およびビデオゲーム機を含めた、プロセッサおよびキャッシュ・メモリを用いるいかなるシステムも含むことができる。キャッシュ・メモリは、そのキャッシュ・メモリを使用するプロセッサと同じダイに設置することができるが、プロセッサとキャッシュ・メモリは、異なるダイ(例えば、独立したモジュール内の独立したチップ、または単一のモジュール内の独立したチップ)に設置することもできる。
本発明の実施形態は、各々がパイプラインを用いて命令を実行する複数のプロセッサ・コアと複数のL1キャッシュとを有するプロセッサに関して以下で説明されるが、単一の処理コアを有するプロセッサおよび/または命令の実行にパイプラインを用いないプロセッサを含む、キャッシュを用いるいずれかのプロセッサとともに用いることもできる。一般的に、本発明の実施形態は、いかなるプロセッサとも用いることができ、特定の構成に限定されない。
本発明の実施形態は、以下で、L1命令キャッシュ(L1 I−キャッシュ222)とL1データ・キャッシュ(L1 D−キャッシュ224)に分割されたL1キャッシュを有するプロセッサに関して説明されるが、統合されたL1キャッシュが用いられるような構成において用いることができる。さらに、本発明の実施形態は、以下で、命令ラインおよびデータ・ラインをL2キャッシュからプリフェッチすること、および、プリフェッチされたラインをL1キャッシュに配置することに関して説明されるが、いずれかのキャッシュまたはメモリ・レベルから別のいずれかのキャッシュまたはメモリ・レベルへ命令ラインおよびデータ・ラインをプリフェッチするために用いることもできる。
(例示的なシステムの概要)
図1は、本発明の実施形態によるシステム100を図示するブロック図である。システム100は、命令およびデータを格納するためのシステム・メモリ102、グラフィックス処理のためのグラフィックス処理装置104、外部デバイスと通信するためのI/Oインターフェース、命令およびデータを長期格納するためのストレージ・デバイス108、および、命令およびデータを処理するためのプロセッサ110を含むことができる。
本発明の実施形態により、プロセッサ110は、L2キャッシュ112、複数のL1キャッシュ116を有することができ、L1キャッシュ116の各々は、複数のプロセッサ・コア114の1つによって用いられる。ある実施形態によれば、プロセッサ・コア114の各々はパイプラインすることができ、命令の各々は一連の小ステップの形で実施され、ステップの各々は異なるパイプライン段によって実施される。
図2は、本発明の実施形態によるプロセッサ110を図示するブロック図である。簡略化のために、図2は、プロセッサ110の単一のコア114を図示し、これに関して説明される。ある実施形態においては、コア114の各々は、同一のものとすることができる(例えば、同一のパイプライン段を伴う同一のパイプラインを含む)。別の実施形態においては、コア114の各々は異なるものとすることができる(例えば、異なる段を伴う異なるパイプラインを含む)。
本発明の実施形態においては、L2キャッシュは、プロセッサ110によって使用される命令およびデータの一部を格納することができる。プロセッサ110は、L2キャッシュ112に格納されていない命令およびデータを要求する場合がある。要求された命令およびデータがL2キャッシュ112に格納されていない場合には、要求された命令およびデータを(上位のレベルのキャッシュまたはシステム・メモリ102から)取り出して、L2キャッシュに配置することができる。プロセッサ・コア114がL2キャッシュ112から命令を要求したときに、その命令を、まずプリデコーダおよびスケジューラ220で処理することができる(以下でより詳細に説明する)。
本発明の実施形態においては、図1に図示されたL1キャッシュ116は、2つの部分、すなわち、命令ラインを格納するためのL1命令キャッシュ222(L1 I−キャッシュ)222、および、データ・ラインを格納するためのL1データ・キャッシュ(L1 D−キャッシュ)224に分割することができる。L2キャッシュ112から取り出された命令ラインがプリデコーダおよびスケジューラ220によって処理された後で、命令ラインを命令キャッシュ222に配置することができる。同様にして、L2キャッシュ112からフェッチされたデータ・ラインは、データ・キャッシュ224に配置することができる。L2キャッシュ112にある情報のラインが命令ラインであるかデータ・ラインであるかを追跡するために、命令ラインおよびデータ・ラインの各々の1ビットを使うことができる。
本発明の実施形態においては、命令は、命令ラインと呼ばれるグループとしてL2キャッシュ112および命令キャッシュ222からフェッチして、プロセッサ・コア114が命令ラインにある命令にアクセスすることができる命令ライン・バッファ226に配置することができる。同様にして、データは、データ・ラインと呼ばれるグループとしてL2キャッシュ112およびデータ・キャッシュ224からフェッチすることができる。ある実施形態においては、命令キャッシュ222および命令ライン・バッファ226の一部は、有効アドレスおよび制御ビット(EA/CTL)を格納するために用いることができ、それらは、命令ラインの各々を処理して、例えば以下で説明されるデータ・プリフェッチ機構を実行するために、コア114および/またはプリデコーダおよびスケジューラ220によって用いられることができる。
(L2キャッシュからのデータ・ラインのプリフェッチ)
図3は、本発明の実施形態による、データ・ラインにあるデータ(D4)をターゲットとするデータ・アクセス命令(I5)を格納している例示的な命令ラインを示す図である。ある実施形態においては、命令ライン(命令ライン1)は、複数の命令(例えば、I1、I2、I3、など)、並びに、有効アドレスおよび制御ビットなどの制御情報を格納することができる。同様にして、データ・ライン(データ・ライン1)は、複数のデータ・ワード(例えば、D1、D2、D3、など)を格納することができる。ある規模においては、命令ラインの各々にある命令は順番に実行され、それにより、命令I1が第一に実行され、I2が第二に実行され、以下続くことになる。命令が順番に実行されるので、一般的に命令ラインもまた順番に実行される。したがって、命令ラインがL2キャッシュ112から命令キャッシュ222に移動されるたびに、プリデコーダおよびスケジューラ220は、命令ライン(例えば命令ライン1)を検査して、次の逐次的な命令ライン(例えば命令ライン2)をプリフェッチし、そのことにより、次の命令ラインが命令キャッシュ222に配置され、プロセッサ・コア114によりアクセスできるようにすることができる場合がある。
プロセッサ・コア114によって実行される命令ラインは、命令I5のようなデータ・アクセス命令(例えば、ロード命令または格納命令)を含むことができる。データ・アクセス命令は、あるアドレス(例えばD4)に存在するデータをターゲットとして(例えばロードまたは格納の)動作を行う。データ・アクセス命令は、データ・アドレスを、(例えばデータ・レジスタに格納されたアドレスなどの)何らかの他のアドレスからのオフセットとして要求することがあり、それにより、データ・アドレスは、データ・アクセス命令が実行された時に算出される。
命令I5がプロセッサ・コア114によって実行されるときに、プロセッサ・コア114は、その命令によりデータD4がアクセスされるかどうかを判定することができる。プロセッサ・コア114は、データD4を含んだデータ・ライン(データ・ライン1)を、データ・キャッシュ224からフェッチすることを試みることができる。いくつかの場合においては、データ・ライン1は、データ・キャッシュ224に存在せず、それによりキャッシュ・ミスを引き起こす場合がある。データ・キャッシュにおいてキャッシュ・ミスが検出されたときに、L2キャッシュ112に対して、データ・ライン1を求めるフェッチ要求を発行することができる。フェッチ要求がL2キャッシュ112によって処理されている間、コア114のプロセッサ・パイプラインが停止し、それにより、プロセッサ・コア114による命令の処理を中止させる場合がある。データ・ライン1がL2キャッシュ112に存在しない場合には、データ・ラインが上位のレベルのキャッシュおよび/またはメモリからフェッチされる間、プロセッサ・パイプラインがより長期間停止する場合がある。
本発明の実施形態によれば、現在フェッチされている命令ラインから抽出されたデータ・ターゲット・アドレスによってデータ・ラインをプリフェッチすることにより、データ・キャッシュ・ミスの数を減少させることができる。
図4は、本発明の実施形態による、データ・キャッシュ・ミスを減少させるためのプロセス400を図示する流れ図である。プロセス400は、L2キャッシュ112から命令ラインがフェッチされるステップ404で開始することができる。ステップ406において、データ・アクセス命令を識別することができ、ステップ408において、データ・アクセス命令のターゲットとされたデータのアドレス(データ・ターゲット・アドレスと呼ばれる)を抽出することができる。次いで、ステップ410において、データ・ターゲット・アドレスを用いて、L2キャッシュ112からターゲットとされたデータを含むデータ・ラインをプリフェッチすることができる。ターゲットとされたデータを含むデータ・ラインをプリフェッチし、プリフェッチされたデータをデータ・キャッシュ224に配置することにより、データ・アクセス命令が実行された場合のキャッシュ・ミスを防ぐことができる。データ・ターゲット・アドレスは、実際にデータ・キャッシュ・ミスまたはデータ・キャッシュ・ミスの履歴が存在する場合にのみ格納することができる場合がある。
ある実施形態においては、図5に図示されたように、データ・ターゲット・アドレスは、直接、命令ラインに格納する(付加する)ことができる。格納されるデータ・ターゲット・アドレスEA1は、有効アドレスまたは有効アドレスの一部(例えば、有効アドレスの高位の32ビット)とすることができる。図示されたように、データ・ターゲット・アドレスEA1は、データ・アクセス命令I5のターゲットとされたデータD4のアドレスを含むデータ・ラインを識別することができる。
ある実施形態により、命令ラインはまた、他の有効アドレス(例えばEA2)および制御ビット(例えばCTL)を格納することもできる。以下で説明されるように、他の有効アドレスは、命令ラインまたは付加的なデータ・ラインにある分岐命令のターゲットとされた命令を含む命令ラインをプリフェッチするために用いることができる。制御ビットCTLは、データ・アクセス命令の履歴(DAH)を示す1以上のビット、および、データ・アクセス命令の位置(LOC)を示す1以上のビットを含むことができる。命令ラインに格納されるそのような情報の用途もまた以下で説明される。
本発明の実施形態においては、ここで説明される有効アドレス・ビットおよび制御ビットは、他の形では使用されない命令ラインのビットに格納することができる。例えば、L2キャッシュ112にある情報のラインの各々は、異なるキャッシュ・レベルの間で転送されるデータのエラー訂正に用いることができる追加のデータ・ビット(例えば、転送されたデータが破損されていないことを保証し、実際に起こったいずれかの破損を修復するために用いられるエラー訂正コードECCなど)を有することができる。各々のレベルのキャッシュ(例えばL2キャッシュ112および命令キャッシュ222)は、各々の命令ラインの同一コピーを格納することができる。各々のレベルのキャッシュが所与の命令ラインの同一コピーを格納する場合には、ECCは、用いなくともよい。代わって、例えば、キャッシュ間で命令ラインが適切に転送されたかどうかを判定するために、例えばパリティ・ビットを用いることができる。キャッシュ間で命令ラインが不適切に転送されたことをパリティ・ビットが示した場合には、(キャッシュにそのラインが含まれているため)、エラー確認を行う代わりに転送キャッシュからその命令ラインを再フェッチすることができる。
アドレスおよび制御情報を、他の形では用いられない命令ラインのビットに格納することの例として、格納された2ワードごとにエラー訂正用に11ビットを用いるエラー訂正プロトコルを考える。1つの命令ラインにおいて、2つの命令ごとにパリティ・ビットを格納するために、11ビットのうちの1つを用いることができる(1ワードごとに1つの命令が格納される場合)。残りの命令1つにつき5ビットを、各命令の制御ビットおよび/またはアドレス・ビットを格納するために用いることができる。例えば、5ビットのうちの4ビットを、その命令についての履歴情報(例えば、その命令が前に取られた分岐命令であるか否か、または、その命令が前にデータ・キャッシュ・ミスを引き起こしたデータ・アクセス命令であるか否か)といった、命令の制御ビット(履歴ビットなど)を格納するために用いることができる。命令ラインが32の命令を含む場合には、残りの32ビット(命令の各々につき1ビット)は、例えばデータ・ターゲット・アドレスまたは分岐出口アドレスの全てまたは一部を格納するために用いることができる。
(例示的なプリフェッチ回路)
図6は、本発明の実施形態による、命令およびデータ・ラインをプリフェッチするための回路を図示するブロック図である。本発明の実施形態においては、回路は、データ・ラインのみをプリフェッチすることができる。本発明の別の実施形態においては、回路は、命令ラインとデータ・ラインの両方をプリフェッチすることができる。
命令ラインまたはデータ・ラインがL2キャッシュ112からフェッチされて命令キャッシュ222またはデータ・キャッシュ224に配置されるたびに、命令/データ(I/D)によって制御される選択回路620は、フェッチされた命令ラインまたはデータ・ラインを、適切なキャッシュに送ることができる。
プリデコーダおよびスケジューラ220は、L2キャッシュ112によって出力された情報を検査することができる。複数のプロセッサ・コア114が用いられるある実施形態においては、複数のプロセッサ・コアの間で単一のプリデコーダおよびスケジューラ220を共有することができる。別の実施形態においては、プリデコーダおよびスケジューラ220は、プロセッサ・コア114の各々に個別に提供される。
ある実施形態においては、プリデコーダおよびスケジューラ220は、L2キャッシュ112によって出力された情報が命令ラインであるかデータ・ラインであるかを判定するプリデコーダ制御回路610を有することができる。例えば、L2キャッシュ112は、L2キャッシュ112に格納された情報ブロックの各々に特定のビットを設定することができ、プリデコーダ制御回路610はその特定のビットを検査して、L2キャッシュ112によって出力された情報ブロックが命令ラインであるかデータ・ラインであるかを判定することができる。
プリデコーダ制御回路610が、L2キャッシュ112によって出力された情報が命令ラインであると判定した場合、プリデコーダ制御回路610は、命令ライン・アドレス選択回路604およびデータ・ライン・アドレス選択回路606を使って、命令ラインに格納されるいずれかの適切な有効アドレス(例えばEA1、またはEA2)を選択することができる。次いで、選択(SEL)信号を用い、選択回路608によって、有効アドレスを選択することができる。次いで、選択された有効アドレスを、例えば対応する命令ラインまたはデータ・ラインをL2キャッシュ112からプリフェッチするために使われる32ビットのプリフェッチ・アドレスとして、プリフェッチ回路602に出力することができる。
上述されたように、第1の命令ラインにあるデータ・ターゲット・アドレスは、第1のデータ・ラインをプリフェッチするために用いることができる。第1のフェッチされた命令ラインは、また、第2の命令ラインにあるターゲット命令へ分岐する分岐命令(出口分岐命令と呼ばれる)を格納することができる場合がある。ある実施形態においては、第2の命令ラインに対応するアドレス(出口アドレスと呼ばれる)はまた、第1のフェッチされた命令ラインに格納することもできる。第1の命令ラインがフェッチされたときに、格納された出口アドレスを用いて、第2の命令ラインをプリフェッチすることができる。第1の命令ラインにある分岐が続行され、第2の命令ラインにあるターゲット命令が命令キャッシュから要求された場合には、第2の命令ラインをプリフェッチすることによって命令キャッシュ・ミスをなくすことができる。
したがって、フェッチされた単一の命令ラインに基づいて、命令ラインおよびデータ・ラインのグループ(チェーン)を命令キャッシュ222およびデータ・キャッシュ224へプリフェッチすることができる場合があり、そのことにより、フェッチされた命令ラインまたはプリフェッチされた命令ラインにある出口分岐命令またはデータ・アクセス命令が命令キャッシュ・ミスまたはデータ・キャッシュ・ミスを引き起こす機会を減少させることができる。
出口アドレスによって示された第2の命令ラインがL2キャッシュ112からプリフェッチされたときに、第2の命令ラインを検査して、その第2の命令ラインが、第2の命令ライン内のデータ・アクセス命令によってアクセスされた第2のデータ・ラインに対応するデータ・ターゲット・アドレスを格納するか否かを判定することができる。プリフェッチされた命令ラインが第2のデータ・ラインに対応するデータ・ターゲット・アドレスを格納する場合には、第2のデータ・ラインをプリフェッチすることもできる。
ある実施形態においては、プリフェッチされた第2の命令ラインは、やはりプリフェッチすることができる第3の命令ラインの有効アドレスを格納することができる。ここでも、第3の命令ラインは、プリフェッチすることができるターゲットデータ・ラインの有効アドレスを格納することができる。命令ラインおよび対応するデータ・ラインをプリフェッチするプロセスは、繰り返すことができる。プリフェッチされた命令ラインの各々は、メイン・メモリからプリフェッチされるべき複数の命令ラインおよび/または複数のデータ・ラインのどちらについての有効アドレスも格納することができる。
例示として、ある実施形態においては、データ・キャッシュ224は、L2キャッシュ112から同時に2つのデータ・ラインがフェッチされ、2ポート・データ・キャッシュに配置されるように、2ポート・キャッシュとすることができる。そのような構成が用いられる場合、2つのデータ・ラインに対応する2つの有効アドレスを命令ラインの各々に格納することができ、その命令ラインがL2キャッシュ112からフェッチされた場合には、その有効アドレスを用いて両方のデータ・ラインを同時にL2キャッシュ112からプリフェッチし、データ・キャッシュ224に配置して、恐らくはデータ・キャッシュ・ミスをなくすことができる。
したがって、フェッチされた単一の命令ラインに基づいて、命令ラインおよびデータ・ラインのグループ(チェーン)を、命令キャッシュ222およびデータ・キャッシュ224へプリフェッチすることができる場合があり、そのことにより、フェッチされた命令ラインまたはプリフェッチされた命令ラインにある出口分岐命令またはデータ・アクセス命令が命令キャッシュ・ミスまたはデータ・キャッシュ・ミスを引き起こす機会を減少させることができる。
ある実施形態により、プリフェッチされた命令ラインがプリフェッチされるべき複数の有効アドレスを格納している場合には、プリフェッチ回路602に有効アドレスの各々が送信されている間、(例えば、プリデコーダ制御回路610、命令ライン・アドレス選択回路604、または何らかの他のバッファに)アドレスを一時的に格納することができる。別の実施形態においては、プリフェッチ・アドレスは、プリフェッチ回路602および/またはL2キャッシュ112に並列に送信することができる。
プリフェッチ回路602は、要求された有効アドレスがL2キャッシュ112にあるか否かを判定することができる。例えば、プリフェッチ回路602は、要求された有効アドレスがL2キャッシュ112にあるか否かを判定することができる変換索引バッファ(TLB)のような内容アドレス可能メモリ(content addressable memory)(CAM)を格納することができる。要求された有効アドレスがL2キャッシュ112にあった場合には、プリフェッチ回路602は、要求された有効アドレスに対応する実アドレスをフェッチする要求を、L2キャッシュに発行することができる。次いで、実アドレスに対応する情報ブロックを選択回路620に出力し、適切なL1キャッシュ(例えば命令キャッシュ222、またはデータ・キャッシュ224)に向けることができる。プリフェッチ回路602が、要求された有効アドレスはL2キャッシュ112に存在しないと判定した場合には、プリフェッチ回路は、より上位レベルのキャッシュおよび/またはメモリに信号を送信することができる。例えば、プリフェッチ回路602はL3キャッシュにアドレスのプリフェッチ要求を送信することができ、次いでL3キャッシュは要求されたアドレスを検索される。
プリデコーダおよびスケジューラ220が命令ラインまたはデータ・ラインをL2キャッシュ112からプリフェッチすることを試みる前に、プリデコーダおよびスケジューラ220(または随意的にプリフェッチ回路602)は、要求されプリフェッチされる命令ラインまたはデータ・ラインが既に命令キャッシュ222またはデータ・キャッシュ224に格納されているか否かを判定することができ、または、要求された命令ラインまたはデータ・ラインのプリフェッチ要求が既に発行済みであるか否かを判定することができる場合がある。例えば、最近フェッチされまたはプリフェッチされた命令ラインまたはデータ・ラインのアドレスの履歴を格納する小型キャッシュを用いて、命令ラインまたはデータ・ラインに関するプリフェッチ要求が既に発行済みであるか否かを判定することができ、または、要求された命令ラインまたはデータ・ラインが既に命令キャッシュ222またはデータ・キャッシュ224にあるか否かを判定することができる。
要求された命令ラインまたはデータ・ラインが既に命令キャッシュ222またはデータ・キャッシュ224に設置されていた場合には、L2キャッシュ・プリフェッチは必ずしも必要ではなく、したがって、実施されない場合もある。前のプリフェッチ要求によって第2のプリフェッチ要求が不必要にされる場合においては、現行の有効アドレスを命令ラインに格納することは、やはり必ずしも必要ではなく、命令ラインに他の有効アドレスが格納することが可能となる(以下で説明する)。
本発明の実施形態においては、プリデコーダおよびスケジューラ220は、所定の数(閾値数)の命令ラインおよび/またはデータ・ラインがフェッチされるまで、命令ライン(およびデータ・ライン)のプリフェッチを続行することができる。閾値は、いずれかの適切な方法で選択することができる。例えば、閾値は、命令キャッシュに配置することができる命令ラインの数および/またはデータ・キャッシュに配置することができるデータ・ラインの数に基づいて選択することができる。命令キャッシュおよび/またはデータ・キャッシュがより大きな容量を有する場合には大きなプリフェッチ所定の数を選択することができるが、命令キャッシュおよび/またはデータ・キャッシュがより小さな容量を有する場合には小さなプリフェッチ所定の数を選択することができる。
別の例として、命令ライン・プリフェッチの所定の数は、フェッチされた命令ライン内の条件付き分岐命令の予測可能性に基づいて選択することができる。いくつかの場合においては、条件付き分岐命令の結果(その分岐が取られるか否か)が予測可能となることがあり、したがって、プリフェッチするべき適正な命令ラインが予測可能となることがある。しかし、命令ラインの間の分岐予測の数が増大するに従い、全体の予測精度は小さくなることがあり、そのことにより、与えられた命令ラインがアクセスされることになる可能性は小さくなる場合がある。予測不可能性のレベルは、予測不可能な分岐命令を用いるプリフェッチの数が増大するにしたがって、増大する場合がある。したがって、ある実施形態においては、命令ライン・プリフェッチの所定の数は、予測された、プリフェッチされた命令ラインにアクセスする可能性が、所与の率を下回らないように選び出される。また、予測不可能な分岐(例えば、その分岐に関する予測可能性の値が予測可能性の閾値を下回るような分岐)が到達されるようないくつかの場合においては、分岐命令の両方の経路に関する(例えば、予測される分岐経路と予測されない分岐経路の両方に関する)命令ラインをフェッチすることができる。
別の例として、フェッチされたデータ・ライン内のデータ・アクセスの予測可能性に基づいて、所定の数のデータ・ライン・プリフェッチを行うことができる。ある実施形態においては、前に実行された時にデータ・キャッシュ・ミスをもたらしたデータ・アクセス命令のターゲットとされているデータを格納しているデータ・ラインに関して、データ・ライン・プリフェッチを発行することができる。データ・キャッシュ・ミスを引き起こすデータ・アクセス命令に関して、予測可能性データを格納することもできる。予測可能性データが格納される場合には、プリフェッチされたデータ・ラインに関して起こるデータ・キャッシュ・ミスの相対的な予測可能性に基づいて、所定の数のプリフェッチを行うことができる。
命令ラインおよびデータ・ラインのプリフェッチに関して選び出された閾値は、サンプル命令のテスト・ランにより選択された固定の数とすることができる。テスト・ランおよび閾値の選択は設計時に行うことができ、閾値は、プロセッサ110に予めプログラムすることができる。随意的に、テスト・ランは、プログラム実行の最初の「トレーニング」フェーズの間に実施することができる(以下で詳細に説明する)。別の実施形態においては、プロセッサ110は、予測不可能な分岐命令および/または予測不可能なデータ・アクセスを格納しているプリフェッチされた命令ラインおよびデータ・ラインの数を追跡して、予測不可能な分岐命令または予測不可能なデータ・アクセス命令を格納している所与の数の命令ラインおよびデータ・ラインがフェッチされた後にのみ命令ラインおよびデータ・ラインのプリフェッチを止め、そのことにより、プリフェッチされた命令ラインの所定の数が命令ラインの実行履歴に基づいて動的に変化するようにすることができる。
本発明の実施形態においては、命令ラインにある命令のためのデータ・ターゲット・アドレスは、異なる命令ラインに格納することができる。図7は、本発明の実施形態による、複数の命令ラインに格納された単一の命令ラインにあるデータ・アクセス命令のための複数のデータ・ターゲット・アドレスを図示するブロック図である。図示されたように、命令ライン1は、3つの独立したデータ・ライン(実線の曲線で図示されたデータ・ライン1、データ・ライン2、データ・ライン3)にあるデータ・ターゲット・アドレスD2、D4、D5にアクセスする3つのデータ・アクセス命令(I4、I5、I6)を格納することができる。本発明の実施形態においては、1以上のデータ・アクセス命令のターゲット・アドレスに対応するアドレスは、フェッチ・シーケンスにおいてソース命令ライン(命令ライン1)と隣接する命令ライン(命令ライン0または命令ライン2)に格納することができる。
データ・アクセス命令I4、I5、I6が命令ライン1において以下で説明されるように検出されたときに、データ・ライン1に対応するデータ・ターゲット・アドレスを命令ライン0の位置EA2に、データ・ライン2に対応するデータ・ターゲット・アドレスを命令ライン1の位置EA2に、データ・ライン3に対応するデータ・ターゲット・アドレスを命令ライン2の位置EA2に、格納することもできる(破線の曲線で図示される)。データ・アクセス命令I4、I5、I6によるターゲット・データのターゲット・アドレスD2、D4、D5へのアクセスを追跡する目的で、各々の命令ラインにおいて、例えばその命令ラインに付加される位置(LOC)制御ビットに、そのデータ・ターゲット情報のソース(例えば命令ライン1)を示す位置情報を格納することができる。
このようにして、データ・ライン1および命令ライン1の有効アドレスを命令ライン0に格納し、データ・ライン2および命令ライン2の有効アドレスを命令ライン1に格納し、データ・ライン3の有効アドレスを命令ライン2に格納することができる。命令ライン0がフェッチされたときに、命令ライン0に格納された有効アドレスを用いて命令ライン1をプリフェッチすることができ、命令ライン1に格納された有効アドレスを用いて命令ライン2をプリフェッチすることができる。データ・ライン1にアクセスするデータ・アクセス命令を命令ライン0が格納していない場合があっても、命令ライン0に格納された有効アドレスを用いてデータ・ライン1をプリフェッチすることができ、そのことにより、命令ライン2にある命令I4がデータ・ライン1にあるデータD2へのアクセスを試みた場合/時のデータ・キャッシュ・ミスをなくすことができる。同様にして、命令ライン1および2がプリフェッチされたときに、データ・ライン2およびデータ・ライン3といったデータ・ラインをプリフェッチすることができ、そのことにより、命令ライン1にある命令I5がデータ位置D4にアクセスを試みた場合/時のデータ・キャッシュ・ミスをなくすことができ、命令ライン1にある命令I6がデータ位置D5にアクセスを試みた場合/時のデータ・キャッシュ・ミスをなくすことができる。
ある命令ラインに存在する命令のためのデータ・ターゲット・アドレスを、異なる命令ラインに格納することは、格納されるデータ・ターゲット・アドレスを必ずしも全ての命令ラインが格納していないようないくつかの場合には有用となろう。例えば、データ・ターゲット・アドレスが格納される場合において、そのターゲット・アドレスのデータへのアクセスがデータ・キャッシュ・ミスを引き起こすときに、1つの命令ラインがデータ・キャッシュ・ミスを引き起こす数個のデータ・アクセス命令(例えば3つの命令)を格納し、一方、他の命令ラインはデータ・キャッシュ・ミスを引き起こすようないかなるデータ・アクセス命令も格納しないようにすることができる。したがって、1つの命令ラインにおいてデータ・キャッシュ・ミスを引き起こすようなデータ・アクセス命令のための1以上のデータ・ターゲット・アドレスを他の命令ラインに格納し、そのことにより、データ・ターゲット・アドレスのストレージを他の命令ラインに分散することができる(例えば、3つのデータ・ターゲット・アドレスのうち2つを、2つの他の命令ラインに、それぞれ格納することができる)。
(命令ラインのためのデータ・ライン・プリフェッチ・アドレスの格納)
本発明の実施形態により、データ・アクセス命令を実行してデータ・ターゲット・アドレスを格納するデータ・ラインを要求することがデータ・キャッシュ・ミスにつながる時に、そのデータ・アクセス命令のデータ・ターゲット・アドレスを抽出して命令ラインに格納することができる。
図8は、本発明の実施形態による、データ・アクセス命令に対応するデータ・ターゲット・アドレスを格納するためのプロセス800を図示する流れ図である。プロセス800は、例えば命令キャッシュ222から命令ラインがフェッチされるステップ802で開始することができる。ステップ804において、フェッチされた命令ラインの中のデータ・アクセス命令を実行することができる。ステップ806において、データ・アクセス命令のターゲットとされたデータを格納しているデータ・ラインがデータ・キャッシュ224に位置するか否かの判定を行うことができる。データ・アクセス命令のターゲットとされたデータを格納しているデータ・ラインがデータ・キャッシュ224に存在しない場合には、ステップ808において、ターゲットとされたデータの有効アドレスがデータ・ターゲット・アドレスとして格納される。ターゲットとされたデータに対応するデータ・ターゲット・アドレスを記録することにより、次にL2キャッシュ112から命令ラインがフェッチされたときに、L2キャッシュ112から、ターゲットとされたデータを格納しているデータ・ラインをプリフェッチすることができる。データ・ラインをプリフェッチすることにより、データ・アクセス命令が実行された場合/時に、他の場合であれば起こり得るデータ・キャッシュ・ミスを、いくつかの場合においては防ぐことができる。
別の選択肢として、データ・アクセス命令のためのデータ・ターゲット・アドレスを、実行時に判定し、そのデータ・アクセス命令がデータ・キャッシュ・ミスを引き起こすか否かに拘わりなく命令ラインに格納することができる。例えば、データ・アクセス命令の各々のためのデータ・ターゲット・アドレスを抽出し、命令ラインに格納することができる。随意的に、最も頻繁に実行されるデータ・アクセス命令(単数または複数)のためのデータ・ターゲット・アドレスを抽出し、命令ラインに格納することができる。データ・ターゲット・アドレスを判定し格納する他の方法は、以下でより詳細に論じられる。
本発明の実施形態においては、データ・ターゲット・アドレスは、そのデータ・ターゲット・アドレスにアクセスするデータ・アクセス命令が実行されるまで、算出されない場合がある。例えば、データ・アクセス命令は、そのデータ・アクセスが行われるはずのアドレス・レジスタに格納されているアドレスからのオフセット値を指定することができる。データ・アクセス命令が実行されたときに、ターゲット・データの有効アドレスを算出し、データ・ターゲット・アドレスとして格納することができる。全部の有効アドレスを格納することができる場合もある。しかし、他の場合においては、一部の有効アドレスのみを格納することができる。例えば、有効アドレスのより高位の32ビットのみを用いて、データ・アクセス命令のターゲット・データを格納しているキャッシュされたデータ・ラインを見つけることができる場合には、データ・ラインをプリフェッチする目的のために、これら32ビットのみをデータ・ターゲット・アドレスとして保管することができる。
(データ・ラインのアクセス履歴の追跡および記録)
本発明の別の実施形態においては、データ・アクセス命令を実行することなしに、データ・ターゲット・アドレスを判定することができる。例えば、L2キャッシュ112からデータ・ラインがフェッチされる際に、フェッチされたデータ・ラインにあるデータ・アクセス命令から、データ・ターゲット・アドレスを抽出することができる。
本発明の実施形態においては、種々の量のデータ・アクセス履歴情報を格納することができる。データ・アクセス履歴は、命令ラインに存在するどのデータ・アクセス命令が実行されることになるか(または実行される可能性があるか)を示すことができる。随意的に、データ・アクセス履歴は、どのデータ・アクセス命令がデータ・キャッシュ・ミスを引き起こすことになるか(または既に引き起こしたか)を示すことができる。どのデータ・ターゲット・アドレスが命令ラインに格納されるのか(および/またはどのデータ・ラインがプリフェッチされるのか)は、リアルタイム実行の間に、または実行前の「トレーニング」期間の間に生成され格納されたデータ・アクセス履歴情報に基づいて判定することができる。
上記で説明されたように、ある実施形態により、命令ラインにおいて最後に実行されたデータ・アクセス命令に対応するデータ・ターゲット・アドレスのみを格納することができる。命令ラインにおいて最後に実行されたデータ・アクセス命令に対応するデータ・ターゲット・アドレスのみを格納することは、後でその命令ラインがフェッチされたときに同じデータがアクセスされることを効果的に予測する。よって、前に実行されたデータ・アクセス命令のためのターゲット・データを格納しているデータ・ラインをプリフェッチすることができる。
いくつかの場合においては、1以上のビットを用いてデータ・アクセス命令の履歴を記録することができる。ビットは、どのデータ・ラインが最も頻繁にアクセスされるか、またはどのデータ・ラインがアクセスされたときにデータ・キャッシュ・ミスを引き起こすかを判定するために用いることができる。例えば、図5に図示されたように、命令ライン(命令ライン1)に格納されている制御ビットCTLは、その命令ラインに存在するどのデータ・アクセス命令が前に実行されたかまたは前にデータ・キャッシュ・ミスを引き起こしたかを示す情報(LOC)を格納することができる。命令ラインはまた、データ・アクセス命令がいつ実行されたかまたはいつキャッシュ・ミスを引き起こしたかの履歴(DAH)(例えば、監視された実行回数のうちの何回その命令が実行されたか、またはある回数の前の実行のうちの何回キャッシュ・ミスを引き起こしたか)を格納することができる。
データ・アクセス命令位置LOCおよびデータ・アクセス履歴DAHをどのようにして用いることができるかの例として、L2キャッシュ112にあって、まだL1キャッシュ222にフェッチされていない命令ラインを考える。命令ラインがL1キャッシュ222にフェッチされたときに、プリデコーダおよびスケジューラ220は、最初に、その命令ラインがいかなるデータ・ターゲット・アドレスも持たないと判定することができ、したがって、別のデータ・ラインをプリフェッチしないであろう。
フェッチされた命令ラインにある命令がトレーニングの間に実行される際に、プロセッサ・コア114は、その命令ライン内のデータ・アクセス命令が実行されているか否かを判定することができる。データ・アクセス命令が検出された場合には、データ・ターゲット・アドレスをEA1に格納することに加えて、LOCにそのデータ・アクセス命令の命令ライン内の位置を格納することができる。命令ラインの各々が32の命令を格納する場合には、LOCに(可能性ある命令位置の各々に対応する)0−31の番号を格納して出口分岐命令を示すことができるように、LOCを5ビットのバイナリ数とすることができる。随意的に、(単一の命令ラインの有効アドレスを複数の命令ラインに格納することに関して上述されたように)LOCがソース命令およびソース命令ラインを示す場合には、LOCは、命令ライン内の位置と、そのデータ・アクセス命令がどの命令ラインに隣接して位置しているかの両方を示す、追加のビットを格納することができる。
ある実施形態においては、DAHに、LOCに設置されたデータ・アクセス命令が実行されたことまたはデータ・キャッシュ・ミスを引き起こしたことを示す値を書込むことができる。例えば、DAHが単一ビットであった場合には、データ・アクセス命令が実行されたときに、命令ラインにある命令の最初の実行の間に、DAHにその命令に関して0を書込むことができる。DAHに格納された0は、LOCに設置されたそのデータ・アクセス命令が、その後その命令ラインに格納されている命令を実行する間に実行されることの弱い予測を示す。随意的に、DAHに格納された0は、LOCに設置されたそのデータ・アクセス命令が、その後その命令ラインに格納されている命令を実行する間にデータ・キャッシュ・ミスを引き起こすことの弱い予測を示す。
命令ラインにある命令のその後の実行の間に、LOCに設置されたデータ・アクセス命令が再び実行された(またはデータ・キャッシュ・ミスを引き起こした)場合には、DAHを1に設定することができる。DAHに格納された1は、LOCに設置されたそのデータ・アクセス命令が再び実行されること、または再びデータ・キャッシュ・ミスを引き起こすことの強い予測を示す。
しかし、同一の命令ラインが再びフェッチされ(DAH=1)、かつ、異なる分岐出口命令が取られる場合には、LOCおよびEA1の値は同じままとすることができるが、DAHは、命令ラインに格納されている命令のその後の実行の間に、前に取られた分岐が取られることの弱い予測を示す0にクリアされる。
DAHが0であり、かつ、LOCに示されているデータ・アクセス命令以外のデータ・アクセス命令が実行される(または実行されてデータ・キャッシュ・ミスを引き起こす)場合には、データ・ターゲット・アドレスEA1を、そのデータ・アクセス命令のデータ・ターゲット・アドレスで上書きすることができ、LOCを、その命令ラインにある実行されるデータ・アクセス命令(またはデータ・キャッシュ・ミスを引き起こすデータ・アクセス命令)に対応する値に変更することができる。
このようにして、データ・アクセス履歴ビットが用いられる場合においては、命令ラインは、データ・ターゲット・アドレスに対応する格納されたデータ・ターゲット・アドレスを格納することができる。このような定期的に実行されるデータ・アクセス命令またはデータ・キャッシュ・ミスを引き起こすアクセス命令は、それほど頻繁に実行されないデータ・アクセス命令またはそれほど頻繁にデータ・キャッシュ・ミスを引き起こさないデータ・アクセス命令よりも優先される場合がある。しかし、データ・アクセス命令が弱く予測され、かつ別のデータ・アクセス命令が実行されまたはデータ・キャッシュ・ミスを引き起こした場合には、データ・ターゲット・アドレスを、そのデータ・アクセス命令に対応するアドレスに変更し、そのことにより、他のデータ・アクセス命令が定期的に実行されるか、または随意的に、定期的にキャッシュ・ミスを引き起こす時に、弱く予測されたデータ・アクセス命令が優先されないようにすることができる。
ある実施形態においては、DAHは、LOCによって示されるデータ・アクセス命令のより長い履歴を格納することができるように、複数の履歴ビットを格納することができる。例えば、DAHが2つのバイナリ・ビットである場合には、00は非常に弱い予測に対応することができ(その場合には他のデータ・アクセス命令を実行すること、または他のデータ・アクセス命令がデータ・キャッシュ・ミスを引き起こすと判定することは、データ・ターゲット・アドレスおよびLOCを上書きすることになる)、一方、01は弱い予測、10は強い予測、11は非常に強い予測に対応することができる(その場合には他のデータ・アクセス命令を実行すること、または他のデータ・キャッシュ・ミスを検出することは、必ずしもデータ・ターゲット・アドレスまたはLOCを上書きするとは限らない)。例として、データ・キャッシュ・ミスの強い予測に対応するデータ・ターゲット・アドレスを置換するためには、プロセッサ構成100は、3つの他のデータ・アクセス命令が命令ラインにある命令の3回の連続実行においてデータ・キャッシュ・ミスを引き起こすことを必要とする場合がある。
さらに、ある実施形態においては、データ・ターゲット・アドレスに対応するデータ・ラインは、いくつかの場合においては、(例えば、プロセッサ・コア114がデータ・ラインへのアクセスを試みた時に)データ・キャッシュ・ミスが非常に強く予測されることをDAHビットが示した場合においてのみプリフェッチすることができる。随意的に、データ・ラインをプリフェッチする前提条件として、異なるレベルの予測可能性(例えば、非常に強い予測可能性に対して強い予測可能性)を選択することができる。
本発明の実施形態においては、複数のデータ・アクセス履歴(例えばDAH1、DAH2など)、複数のデータ・アクセス命令位置(例えばLOC1、LOC2など)、および/または複数の有効アドレスを用いることができる。例えば、ある実施形態においては、DAH1、DAH2などを用いて複数のデータ・アクセス履歴を追跡することができるが、DAH1、DAH2などのうち最も予測可能性が高いデータ・アクセスおよび/または予測されたデータ・キャッシュ・ミスに対応する1つのデータ・ターゲット・アドレスのみを、EA1に格納することができる。随意的に、複数のデータ・アクセス履歴および複数のデータ・ターゲット・アドレスを単一の命令ラインに格納することができる。ある実施形態においては、LOCによって示される所与のデータ・アクセス命令が予測可能である(例えば、実行される、および/またはデータ・キャッシュ・ミスを引き起こす)ことをデータ・アクセス履歴が示した場合においてのみ、データ・ターゲット・アドレスを用いてデータ・ラインをプリフェッチすることができる。随意的に、いくつかの格納されたアドレスの中から最も予測可能性が高いデータ・ターゲット・アドレスに対応するデータ・ラインのみを、プリデコーダおよびスケジューラ220によってプリフェッチすることができる。
上述されたように、ある実施形態においては、データ・アクセス命令がデータ・キャッシュ・ミスを引き起こすかどうかを用いて、データ・ターゲット・アドレスを格納するか否かを判定することができる。例えば、与えられたデータ・アクセス命令が稀にしかデータ・キャッシュ・ミスを引き起こさない場合には、そのデータ・アクセス命令が命令ラインにある他のデータ・アクセス命令よりも頻繁に実行されるような場合であっても、そのデータ・アクセス命令に対応するデータ・ターゲット・アドレスを格納しなくてもよい。命令ラインにある別のデータ・アクセス命令が、実行される頻度は低いが、全体的により多くのデータ・キャッシュ・ミスを引き起こす場合には、他のデータ・アクセス命令に対応するデータ・ターゲット・アドレスを、その命令ラインに格納することができる。上述されたように、1以上のデータ・キャッシュ「ミス」フラグのような履歴ビットを用いて、どのデータ・アクセス命令がデータ・キャッシュ・ミスを引き起こす可能性が最も高いかを判定することができる。
命令ラインに格納されたビットを用い、データ・キャッシュ・ミスまたはプリフェッチに起因してデータ・キャッシュ224にデータ・ラインが配置されるか否かを示すことができる場合がある。ビットは、プロセッサ110により、キャッシュ・ミスを防ぐに当たって、プリフェッチの有効性を判定するために用いることができる。また、プリデコーダおよびスケジューラ220(または随意的に、プリフェッチ回路602)も、プリフェッチが不必要であると判定し、したがって命令ラインのビットを変更することができる場合もある。例えば、プリフェッチされた情報が既に命令キャッシュ222またはデータ・キャッシュ224に存在するなどの理由で、プリフェッチが不必要である場合においては、より多くの命令キャッシュ・ミスおよびデータ・キャッシュ・ミスを引き起こすアクセス命令に対応する他のデータ・ターゲット・アドレスを命令ラインに格納することができる。
ある実施形態においては、データ・アクセス命令がデータ・キャッシュ・ミスを引き起こすかどうかを、データ・アクセス命令のためのデータ・ターゲット・アドレスを格納するか否かを判定するために用いられる唯一の要因とすることができる。別の実施形態においては、データ・アクセス命令を実行する予測可能性と、そのデータ・アクセス命令がデータ・キャッシュ・ミスを引き起こすかどうかの予測可能性の両方をともに用いて、データ・ターゲット・アドレスを格納するか否かを判定することができる。例えば、アクセス履歴およびミス履歴に対応する値を加算するか、乗算するか、または他の計算式の中で(例えば加重として)用いて、データ・ターゲット・アドレスを格納するか否か、および/または、そのデータ・ターゲット・アドレスに対応するデータ・ラインをプリフェッチするか否かを判定することができる。
本発明の実施形態においては、データ・ターゲット・アドレス、データ・アクセス履歴、およびデータ・アクセス命令位置を実行時に継続的に追跡し、更新して、命令ラインに格納されたデータ・ターゲット・アドレスおよび他の値が、与えられた命令の組が実行されるに従い時間が経つにつれて変化するようにすることができる。このようにして、例えばプログラムが実行されるに従い、データ・ターゲット・アドレスおよびプリフェッチされたデータ・ラインを動的に修正することができる。
本発明の別の実施形態においては、命令の組の最初の実行フェーズの間に(例えばプログラムが実行される最初の「トレーニング」期間の間に)、データ・ターゲット・アドレスを選択し、格納することができる。最初の実行フェーズは、初期化フェーズ、またはトレーニング・フェーズと呼ばれることもある。トレーニング・フェーズの間に、データ・アクセス履歴およびデータ・ターゲット・アドレスを追跡することができ、1以上のデータ・ターゲット・アドレスを(例えば、上述された基準によって)命令ラインに格納することができる。フェーズが完了したときに、格納されたデータ・ターゲット・アドレスは、引き続き、L2キャッシュ112からデータ・ラインをプリフェッチするために用いることができるが、しかし、フェッチされた命令ラインにあるデータ・ターゲット・アドレス(単数または複数)は、それ以上追跡されたり更新されたりしないであろう。
ある実施形態においては、データ・ターゲット・アドレス(単数または複数)を格納している命令ラインの1以上のビットを用いて、そのデータ・ターゲット・アドレスが最初の実行フェーズの間に更新されたか否かを示すことができる。例えば、トレーニング・フェーズの間に、1つのビットをクリアすることができる。ビットがクリアされている間に、命令ラインにある命令が実行されるに従い、データ・アクセス履歴を追跡することができ、データ・ターゲット・アドレス(単数または複数)を更新することができる。トレーニング・フェーズが完了したときに、ビットを設定することができる。ビットが設定されたときに、データ・ターゲット・アドレス(単数または複数)はそれ以上更新されない場合があり、最初の実行フェーズが完了となるであろう。
ある実施形態においては、最初の実行フェーズは、特定の期間にわたって(例えばある数のクロック周期が経過するまで)続行することができる。ある実施形態においては、格納された最新のデータ・ターゲット・アドレスは、指定の期間が経過し、最初の実行フェーズが終了するまで、命令ラインに格納されたままでいることができる。別の実施形態においては、最も頻繁に実行されたデータ・アクセス命令に対応するデータ・ターゲット・アドレスか、または最も頻繁にデータ・キャッシュ・ミスを引き起こしたデータ・アクセス命令に対応するデータ・ターゲット・アドレスを命令ラインに格納して、その後のプリフェッチに用いることができる。
本発明の別の実施形態においては、最初の実行フェーズは、1以上の出口基準が満たされるまで続行することができる。例えば、データ・アクセス履歴が格納されるような場合においては、最初の実行フェーズは、命令ラインにあるデータ・アクセス命令の1つが予測可能になる(または強く予測可能になる)までか、またはデータ・キャッシュ・ミスが予測可能になる(または強く予測可能になる)まで、続行することができる。与えられたデータ・アクセス命令が予測可能になったときに、最初のトレーニング・フェーズが完了したことと、その命令ラインがL2キャッシュ112からフェッチされる時に行われるその後のデータ・ラインのプリフェッチの各々において、強く予測可能なデータ・アクセス命令のデータ・ターゲット・アドレスを用いることができることを示すロック・ビットを、命令ラインに設定することができる。
本発明の別の実施形態においては、断続的なトレーニング・フェーズにおいて、命令ラインにあるデータ・ターゲット・アドレスを修正することができる。例えば、トレーニング・フェーズの各々について、頻度および期間の値を格納することができる。頻度に対応しているある数のクロック周期が経過する度ごとに、トレーニング・フェーズは初期化され、指定の期間値にわたって続行することができる。別の実施形態においては、頻度に対応しているある数のクロック周期が経過する度ごとに、トレーニング・フェーズは初期化され、指定の条件が満たされるまで(例えば、上述されたように、命令に関して、指定のレベルのデータ・アクセス予測可能性かまたは指定のレベルのキャッシュ・ミス予測可能性が到達されるまで)、続行することができる。
本発明の実施形態においては、システム100において用いられる各々のレベルのキャッシュおよび/またはメモリは、命令ラインに格納されている情報のコピーを格納することができる。本発明の別の実施形態においては、指定のレベルのキャッシュおよび/またはメモリのみが、命令ラインに格納されている情報(例えば、データ・アクセス履歴およびデータ・ターゲット・アドレス)を格納することができる。ある実施形態においては、当業者には公知のキャッシュの一貫性原則を用いて、各々のレベルのキャッシュおよび/またはメモリにある命令ラインのコピーを更新することができる。
命令キャッシュを用いる従来型のシステムにおいては、一般的には、命令はプロセッサ110によって修正されないことに注意されたい。よって、従来型のシステムにおいては、命令ラインは、ある程度の時間が経過した後、L2キャッシュ112に書き戻されるのではなく、命令キャッシュ222からエージアウトされることが一般的にである。しかし、ここで説明されるように、本発明の実施形態においては、修正された命令ラインをL2キャッシュ112に書戻すことができ、それにより、上位レベルのキャッシュおよび/またはメモリにおいてプリフェッチ・データが維持されることが可能になる。
例として、命令ラインにある命令がプロセッサ・コアにより既に処理された(データ・ターゲット・アドレスおよび他の履歴情報が更新されることを引き起こす可能性がある)ときに、その命令ラインを、恐らくは命令キャッシュ222に格納されたより古いバージョンの命令ラインを上書きする形で、命令キャッシュ222に書込むことができる(書戻しと呼ばれる)。ある実施形態においては、命令ラインは、その命令ラインに格納された情報に対して変更が為された場合においてのみ、命令キャッシュ222に配置される。
本発明の実施形態により、修正された命令ラインがL2キャッシュ112に書戻されたときに、命令ラインを変更されたものとしてマークすることができる。命令ラインが命令キャッシュ222に書戻され、変更されたものとしてマークされる場合においては、命令ラインは異なった時間にわたって命令キャッシュに留まることができる。例えば、命令ラインがプロセッサ・コア114によって頻繁に使用される場合には、命令ラインは命令キャッシュ222へフェッチされ、戻されることが何度かあり、恐らくはその度に更新されるであろう。しかし、命令ラインが頻繁に使用されない場合には(エージングと呼ばれる)、その命令ラインを命令キャッシュ222からパージすることができる。命令ラインが命令キャッシュ222からパージされたときに、その命令ラインをL2キャッシュ112に書戻すことができる。ある実施形態においては、命令ラインが修正されたものとしてマークされた場合にのみ、L2キャッシュ112に書戻すことができる。別の実施形態においては、命令ラインは常にL2キャッシュ112に書戻すことができる。ある実施形態においては、命令ラインは、随意的に、いくつかのキャッシュ・レベルに(例えばL2キャッシュ112および命令キャッシュ222に)一度に書戻すか、または命令キャッシュ222以外のレベルに(例えばL2キャッシュ112に直接)書戻すことができる。
ある実施形態においては、命令ライン以外の位置にデータ・ターゲット・アドレス(単数または複数)を格納することができる。例えば、シャドウ・キャッシュにデータ・ターゲット・アドレスを格納することができる。図9は、本発明の実施形態による、命令およびデータ・ラインをプリフェッチするためのシャドウ・キャッシュ902を図示するブロック図である。
本発明の実施形態においては、(例えば、データ・アクセス命令が頻繁に実行されるかまたは頻繁にデータ・キャッシュ・ミスを引き起こすことに起因して、および/または上記で列挙された基準のいずれかにより)命令ラインにあるデータ・アクセス命令のためのデータ・ターゲット・アドレスが格納されるべきときに、命令ラインに対応するアドレスまたはアドレスの一部(例えば、命令ラインの有効アドレス、または有効アドレスの高位の32ビット)、および、データ・ターゲット・アドレス(またはその一部)を、シャドウ・キャッシュ902の項目として格納することができる。いくつかの場合においてはシャドウ・キャッシュ902には、単一の命令ラインに関する複数のデータ・ターゲット・アドレス項目を格納することができる。随意的に、命令ラインに関する項目の各々は、複数のデータ・ターゲット・アドレスを格納することができる。
L2キャッシュ112から情報がフェッチされるときに、シャドウ・キャッシュ902(または、例えばプリデコーダ制御回路610のような、シャドウ・キャッシュ902を用いる他の制御回路)は、フェッチされた情報が命令ラインなのか否かを判定することができる。L2キャッシュ112による出力が命令ラインであるとの判定が為された場合には、シャドウ・キャッシュ902を検索して(例えば、シャドウ・キャッシュ902は内容アドレス可能とすることができる)、フェッチされた命令ラインに対応する項目(または複数の項目)(例えば、フェッチされた命令ラインと同一の有効アドレスを有する項目)を探すことかできる。対応する項目が見つかった場合には、その項目に関連するデータ・ターゲット・アドレス(単数または複数)は、プリデコーダ制御回路610、プリデコーダおよびスケジューラ220にある他の回路、および、プリフェッチ回路602により、シャドウ・キャッシュ902によって示されたデータ・ターゲット・アドレス(単数または複数)をプリフェッチするために用いられる。随意的に、シャドウ・キャッシュ902には、(専門に、またはデータ・ターゲット・アドレスとともに)分岐出口アドレスを格納することができる。上述されたように、シャドウ・キャッシュ902は、そこに格納された有効アドレス、および/または、フェッチされた命令ラインおよびプリフェッチされた命令ラインに格納された有効アドレスを使って、命令ラインおよびデータ・ラインのチェーン/グループをフェッチするために用いることができる。
本発明の実施形態においては、シャドウ・キャッシュ902はまた、上述された制御ビット(例えば、履歴ビットおよび位置ビット)を格納することができる。随意的に、こうした制御ビットは、上述されたように、命令ラインに格納することができる。どちらの場合においても、ある実施形態においては、シャドウ・キャッシュ902にある項目は、どの項目が命令ラインに格納されるのかを判定することに関して上記で列挙されたいずれかの基準にしたがって管理することができる。各々がシャドウ・キャッシュ902を伴って実装することができる、上述された多くの技術のうちの1つの例として、強く予測されたデータ・キャッシュ・ミスを引き起こすデータ・アクセス命令のためのデータ・ターゲット・アドレスはシャドウ・キャッシュ902に格納し、一方、弱く予測されたデータ・キャッシュ・ミスに対応するデータ・ターゲット・アドレスは上書きすることができる。
どの項目がシャドウ・キャッシュ902に格納されるのかを判定する上述された技術を用いることに加えて、ある実施形態においては、専門に、または上述された技術を含めて従来型のキャッシュ管理技術を用いて、シャドウ・キャッシュ902を管理することができる。例えば、シャドウ・キャッシュ902にある項目は、そのシャドウ・キャッシュ902にある項目がアクセスされた頻度を示すエージ・ビットを有することができる。与えられた項目が頻繁にアクセスされる場合には、エージ値は小さい(例えば、若い)まま留まることができる。しかし、項目が頻繁にアクセスされない場合には、エージ値は増大することができ、いくつかの場合においては、シャドウ・キャッシュ902から項目を廃棄することができる。
上述したように、第1の命令ラインに格納されているデータ・アクセス命令のターゲットとされたデータのアドレスを格納し、ターゲットとされたデータを格納しているデータ・ラインを、L2キャッシュからプリフェッチするために用いることができる。その結果として、データ・キャッシュ・ミス、および対応する、データにアクセスする待ち時間の数を減少させることができ、プロセッサ性能を向上させることができる。
以上、本発明の実施形態を一例として説明したが、本発明の他のさらなる実施形態をその基本的な範囲を逸脱することなく考案することができる。本発明の範囲は、添付の特許請求の範囲によって定められる。
本発明の実施形態によるシステムを図示するブロック図である。 本発明の実施形態によるコンピュータ・プロセッサを図示するブロック図である。 本発明の実施形態による、データ・ラインにアクセスする命令ラインを図示する図である。 本発明の実施形態による、データ・キャッシュ・ミスを防ぐためのプロセスを図示する流れ図である。 本発明の実施形態によるデータ・アクセス・アドレスを含んだ命令ラインを図示するブロック図である。 本発明の実施形態による命令およびデータ・ラインをプリフェッチするための回路を図示するブロック図である。 本発明の実施形態による、複数の命令ラインに格納された単一の命令ラインにあるデータ・アクセス命令のための複数のデータ・ターゲット・アドレスを図示するブロック図である。 本発明の実施形態による、データ・アクセス命令に対応するデータ・ターゲット・アドレスを格納するためのプロセスを図示する流れ図である。 本発明の実施形態による、命令およびデータ・ラインをプリフェッチするためのシャドウ・キャッシュを図示するブロック図である。
符号の説明
110:プロセッサ
112:L2キャッシュ
220:プリデコーダおよびスケジューラ
222:L1 命令キャッシュ
224:L1 データ・キャッシュ
226:命令ライン・バッファ
114:プロセッサ・コア

Claims (27)

  1. データ・ラインをプリフェッチする方法であって、
    (a)レベル2キャッシュから第1の命令ラインをフェッチするステップと、
    (b)前記第1の命令ラインから、当該第1の命令ラインまたは異なる命令ラインに含まれているデータ・アクセス命令のターゲットとされたデータを含む第1のデータ・ラインの識別アドレスを抽出するステップと、
    (c)前記抽出されたアドレスを用いて、前記レベル2キャッシュから第1のデータ・ラインをプリフェッチするステップと、
    を含む方法。
  2. 前記第1の命令ラインにおいて、当該第1の命令ラインの外部にある命令をターゲットとする分岐命令を識別するステップと、
    前記識別された分岐命令に対応する出口アドレスを抽出するステップと、
    前記抽出された出口アドレスを用いて、前記レベル2キャッシュから、前記ターゲットとされた命令を含む第2の命令ラインをプリフェッチするステップと、
    をさらに含む、請求項1に記載の方法。
  3. 前記第2の命令ラインについて(a)から(c)の前記ステップを繰り返し、第2のデータ・アクセス命令のターゲットとされた第2のデータを含む第2のデータ・ラインをプリフェッチするステップをさらに含む、請求項2の記載の方法。
  4. 前記第2のデータ・アクセス命令が前記第2の命令ラインに存在する、請求項3に記載の方法。
  5. 前記第2のデータ・アクセス命令が前記第1の命令ラインに存在する、請求項3に記載の方法。
  6. 所定の数のデータ・ラインがプリフェッチされるまで(a)から(c)の前記ステップを繰り返すことをさらに含む、請求項1に記載の方法。
  7. 第1の命令ラインにおいて、第2のデータをターゲットとする第2のデータ・アクセス命令を識別するステップと、
    前記識別された第2のデータ・アクセス命令から第2のアドレスを抽出するステップと、
    前記抽出された第2のアドレスを用いて、前記レベル2キャッシュから、前記ターゲットとされた第2のデータを含む第2のデータ・ラインをプリフェッチするステップと、
    をさらに含む、請求項1に記載の方法。
  8. 前記抽出されたアドレスが、命令ラインに含まれる有効アドレスとして格納される、請求項1に記載の方法。
  9. 前記命令ラインが第1の命令ラインである、請求項8に記載の方法。
  10. 前記有効アドレスが、前の識別された分岐命令の実行の間に算出される、請求項8に記載の方法。
  11. 前記第1の命令ラインが、2以上のデータをターゲットとする2以上のデータ・アクセス命令を含み、前記第1の命令ラインに格納されているデータ・アクセス履歴値が、識別されたデータ・アクセス命令がキャッシュ・ミスを引き起こすと予測されることを示す、請求項1に記載の方法。
  12. 前記第1の命令ラインにおいて、第1のデータをターゲットとするデータ・アクセス命令を識別することをさらに含む、請求項1に記載の方法。
  13. レベル2キャッシュと、
    各々が1以上の命令を含む命令ラインを前記レベル2キャッシュから受信するように構成されたレベル1キャッシュと、
    前記レベル1キャッシュから取り出された命令を実行するように構成されたプロセッサ・コアと、
    (a)レベル2キャッシュから第1の命令ラインをフェッチし、
    (b)前記第1の命令ラインにおいて、前記第1の命令ラインまたは異なる命令ラインに含まれているデータ・アクセス命令のターゲットとされたデータを含む第1のデータ・ラインの識別アドレスを識別し、
    (c)前記抽出されたアドレスを用いて、前記レベル2キャッシュから第1のデータ・ラインをプリフェッチするように構成された回路と、
    を備える、プロセッサ。
  14. 前記抽出されたアドレスが、命令ラインに含まれる有効アドレスとして格納される、請求項13に記載のプロセッサ。
  15. 前記有効アドレスが、前の識別された分岐命令の実行の間に算出される、請求項14に記載のプロセッサ。
  16. 前記有効アドレスが、トレーニング・フェーズの間に算出される、請求項15に記載のプロセッサ。
  17. データ・ターゲット・アドレスを命令ラインに格納する方法であって、
    命令ラインにある1以上の命令を実行するステップと、
    前記1以上の命令がデータ・ラインの中のデータにアクセスし、キャッシュ・ミスをもたらすかどうかを判定するステップと、
    キャッシュ・ミスをもたらすと判定された場合に、前記データ・ラインに対応するデータ・ターゲット・アドレスを、プリフェッチ機構によってアクセス可能な位置に格納するステップと、
    を含む方法。
  18. 前記プリフェッチ機構によってアクセス可能な位置が前記命令ラインである、請求項17に記載の方法。
  19. 前記命令ラインおよび前記ターゲット・データ・アドレスを、レベル2キャッシュに書戻すことをさらに含む、請求項18に記載の方法。
  20. 前記データ・ターゲット・アドレスを伴う命令ラインをレベル2キャッシュに格納するステップと、
    前記レベル2キャッシュから、前記データ・ターゲット・アドレスを伴う命令ラインをフェッチし、当該命令ラインをレベル1キャッシュに配置するステップと、
    前記格納されたデータ・ターゲット・アドレスを用いて、前記データ・ラインをプリフェッチするステップと、
    をさらに含む、請求項18に記載の方法。
  21. 前記プリフェッチ機構によってアクセス可能な位置はシャドウ・キャッシュである、請求項17に記載の方法。
  22. 前記プリフェッチ機構によってアクセス可能な位置に、前記1以上の命令に対応するデータ・アクセス履歴情報を格納するステップをさらに含む、請求項17に記載の方法。
  23. 前記命令ラインにある1以上の命令のその後の実行の間に、前記命令ラインにある第2の1以上の命令を実行するステップと、
    前記第2の1以上の命令が第2のデータ・ラインの中のデータにアクセスし、当該アクセスが第2のキャッシュ・ミスをもたらす場合に、前記1以上の命令に対応する前記データ・アクセス履歴情報が、前記キャッシュ・ミスが予測可能であることを示すかどうかを判定するステップと、
    前記キャッシュ・ミスが予測可能ではなかった場合には、前記第2のデータ・ラインに対応する前記命令ラインに、第2のデータ・ターゲット・アドレスを付加するステップと、
    をさらに含む、請求項22に記載の方法。
  24. 前記データ・アクセス・アドレスを格納するステップは、複数の命令ラインが繰り返し実行される最初の実行フェーズの間に行われる、請求項17に記載の方法。
  25. 前記命令ラインにある第2の1以上の命令を実行するステップと、
    前記第2の1以上の命令が、別の命令ラインにある命令へ分岐するかどうかを判定するステップと、
    分岐すると判定された場合に、他の命令ラインに対応する出口アドレスを前記位置に格納するステップと、
    をさらに含む、請求項17に記載の方法。
  26. 前記データ・アクセス・アドレスは、前記1以上の命令のうちの1つの実行の間に算出された有効アドレスである、請求項17に記載の方法。
  27. 命令ラインにある1以上の命令を実行するプロセッサ・コアと、
    前記1以上の命令がデータ・ラインの中のデータにアクセスし、キャッシュ・ミスをもたらすかどうかを判定し、キャッシュ・ミスをもたらすと判定された場合に、前記データ・ラインに対応するデータ・ターゲット・アドレスを、プリフェッチ機構によってアクセス可能な位置に格納する回路と、
    を備える、プロセッサ。
JP2007019613A 2006-02-03 2007-01-30 データ・ラインのための自己プリフェッチl2キャッシュ機構 Expired - Fee Related JP5084280B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/347,414 US20070186050A1 (en) 2006-02-03 2006-02-03 Self prefetching L2 cache mechanism for data lines
US11/347414 2006-02-03

Publications (2)

Publication Number Publication Date
JP2007207240A true JP2007207240A (ja) 2007-08-16
JP5084280B2 JP5084280B2 (ja) 2012-11-28

Family

ID=38335339

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007019613A Expired - Fee Related JP5084280B2 (ja) 2006-02-03 2007-01-30 データ・ラインのための自己プリフェッチl2キャッシュ機構

Country Status (4)

Country Link
US (1) US20070186050A1 (ja)
JP (1) JP5084280B2 (ja)
CN (1) CN101013401A (ja)
TW (1) TW200745854A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007207246A (ja) * 2006-02-03 2007-08-16 Internatl Business Mach Corp <Ibm> 命令ラインのための自己プリフェッチl2キャッシュ機構
JP2012150824A (ja) * 2005-02-03 2012-08-09 Qualcomm Inc 電力的に効率的な命令プリフェッチ機構

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2011018B1 (en) 2006-04-12 2016-07-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US7543112B1 (en) 2006-06-20 2009-06-02 Sun Microsystems, Inc. Efficient on-chip instruction and data caching for chip multiprocessors
EP2122461A4 (en) 2006-11-14 2010-03-24 Soft Machines Inc DEVICE AND METHOD FOR PROCESSING COMMUNICATIONS IN A MULTITHREAD ARCHITECTURE WITH CONTEXT CHANGES
US8756404B2 (en) * 2006-12-11 2014-06-17 International Business Machines Corporation Cascaded delayed float/vector execution pipeline
US7793044B1 (en) * 2007-01-16 2010-09-07 Oracle America, Inc. Efficient caching of stores in scalable chip multi-threaded systems
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
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
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
US8707282B2 (en) * 2009-12-14 2014-04-22 Advanced Micro Devices, Inc. Meta-data based data prefetching
CN104615548B (zh) * 2010-03-29 2018-08-31 威盛电子股份有限公司 数据预取方法以及微处理器
TW201220048A (en) * 2010-11-05 2012-05-16 Realtek Semiconductor Corp for enhancing access efficiency of cache memory
US9135157B2 (en) 2010-11-22 2015-09-15 Freescale Semiconductor, Inc. Integrated circuit device, signal processing system and method for prefetching lines of data therefor
EP2689326B1 (en) 2011-03-25 2022-11-16 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
US8645404B2 (en) * 2011-10-21 2014-02-04 International Business Machines Corporation Memory pattern searching via displaced-read memory addressing
WO2013077876A1 (en) 2011-11-22 2013-05-30 Soft Machines, Inc. A microprocessor accelerated code optimizer
CN102831078B (zh) * 2012-08-03 2015-08-26 中国人民解放军国防科学技术大学 一种cache中提前返回访存数据的方法
US9361103B2 (en) * 2012-11-02 2016-06-07 Advanced Micro Devices, Inc. Store replay policy
CN105247484B (zh) 2013-03-15 2021-02-23 英特尔公司 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法
US10140138B2 (en) * 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US9658963B2 (en) * 2014-12-23 2017-05-23 Intel Corporation Speculative reads in buffered memory
US10666774B2 (en) * 2016-03-16 2020-05-26 International Business Machines Corporation Message processing
US10346943B2 (en) 2017-01-03 2019-07-09 Microsoft Technology Licensing, Llc Prefetching for a graphics shader
CN107273098B (zh) * 2017-05-03 2020-07-31 北京中科睿芯科技有限公司 一种优化数据流架构数据传输延迟的方法及其系统
KR102606009B1 (ko) * 2018-08-16 2023-11-27 에스케이하이닉스 주식회사 캐시 버퍼 및 이를 포함하는 반도체 메모리 장치
US11106583B2 (en) 2019-05-24 2021-08-31 Texas Instmments Incorporated Shadow caches for level 2 cache controller
CN111399913B (zh) * 2020-06-05 2020-09-01 浙江大学 一种基于预取的处理器加速取指方法
CN113778520B (zh) * 2021-09-09 2022-09-30 海光信息技术股份有限公司 偏移预取方法、执行偏移预取的装置、计算设备和介质
CN117492662B (zh) * 2023-12-28 2024-04-02 苏州元脑智能科技有限公司 预读取的确定方法和装置、存储介质及电子设备

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62235658A (ja) * 1986-03-27 1987-10-15 Yokogawa Hewlett Packard Ltd キヤツシユ・メモリ制御方式
JPH04205448A (ja) * 1990-11-30 1992-07-27 Matsushita Electric Ind Co Ltd 情報処理装置
JPH06168119A (ja) * 1992-11-30 1994-06-14 Fujitsu Ltd データ先読み制御装置
JPH06301537A (ja) * 1993-04-16 1994-10-28 Fujitsu Ltd 命令フェッチ回路
JPH0855025A (ja) * 1994-06-06 1996-02-27 Hitachi Ltd データプリフェッチ方法およびそのための情報処理装置
JPH08212068A (ja) * 1995-02-08 1996-08-20 Hitachi Ltd 情報処理装置
JPH0962573A (ja) * 1995-08-24 1997-03-07 Internatl Business Mach Corp <Ibm> データ・キャッシュ・システム及び方法
JPH0981456A (ja) * 1995-09-18 1997-03-28 Internatl Business Mach Corp <Ibm> キャッシュ制御の命令プリフェッチ方法及びシステム
JPH10232776A (ja) * 1996-12-23 1998-09-02 Texas Instr Inc <Ti> 複合分岐予測およびキャッシュ先取りをするマイクロプロセッサ
JP2000029701A (ja) * 1998-05-12 2000-01-28 Internatl Business Mach Corp <Ibm> 単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。
JP2000089953A (ja) * 1998-09-01 2000-03-31 Internatl Business Mach Corp <Ibm> 命令履歴キャッシングを使用して推測的に命令を実行する回路および方法
JP2001134439A (ja) * 1999-11-05 2001-05-18 Seiko Epson Corp キャッシュ予測プリロード装置、マイクロコンピュータ及び電子機器
US20040015683A1 (en) * 2002-07-18 2004-01-22 International Business Machines Corporation Two dimensional branch history table prefetching mechanism
US20050154867A1 (en) * 2004-01-14 2005-07-14 International Business Machines Corporation Autonomic method and apparatus for counting branch instructions to improve branch predictions

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US5673407A (en) * 1994-03-08 1997-09-30 Texas Instruments Incorporated Data processor having capability to perform both floating point operations and memory access in response to a single instruction
US6112019A (en) * 1995-06-12 2000-08-29 Georgia Tech Research Corp. Distributed instruction queue
US5860000A (en) * 1996-01-31 1999-01-12 Hitachi Micro Systems, Inc. Floating point unit pipeline synchronized with processor pipeline
US6446197B1 (en) * 1999-10-01 2002-09-03 Hitachi, Ltd. Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions
JP2002333978A (ja) * 2001-05-08 2002-11-22 Nec Corp Vliw型プロセッサ
US20040186982A9 (en) * 2002-02-06 2004-09-23 Matthew Becker Stalling Instructions in a pipelined microprocessor

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62235658A (ja) * 1986-03-27 1987-10-15 Yokogawa Hewlett Packard Ltd キヤツシユ・メモリ制御方式
JPH04205448A (ja) * 1990-11-30 1992-07-27 Matsushita Electric Ind Co Ltd 情報処理装置
JPH06168119A (ja) * 1992-11-30 1994-06-14 Fujitsu Ltd データ先読み制御装置
JPH06301537A (ja) * 1993-04-16 1994-10-28 Fujitsu Ltd 命令フェッチ回路
JPH0855025A (ja) * 1994-06-06 1996-02-27 Hitachi Ltd データプリフェッチ方法およびそのための情報処理装置
JPH08212068A (ja) * 1995-02-08 1996-08-20 Hitachi Ltd 情報処理装置
JPH0962573A (ja) * 1995-08-24 1997-03-07 Internatl Business Mach Corp <Ibm> データ・キャッシュ・システム及び方法
JPH0981456A (ja) * 1995-09-18 1997-03-28 Internatl Business Mach Corp <Ibm> キャッシュ制御の命令プリフェッチ方法及びシステム
JPH10232776A (ja) * 1996-12-23 1998-09-02 Texas Instr Inc <Ti> 複合分岐予測およびキャッシュ先取りをするマイクロプロセッサ
JP2000029701A (ja) * 1998-05-12 2000-01-28 Internatl Business Mach Corp <Ibm> 単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。
JP2000089953A (ja) * 1998-09-01 2000-03-31 Internatl Business Mach Corp <Ibm> 命令履歴キャッシングを使用して推測的に命令を実行する回路および方法
JP2001134439A (ja) * 1999-11-05 2001-05-18 Seiko Epson Corp キャッシュ予測プリロード装置、マイクロコンピュータ及び電子機器
US20040015683A1 (en) * 2002-07-18 2004-01-22 International Business Machines Corporation Two dimensional branch history table prefetching mechanism
US20050154867A1 (en) * 2004-01-14 2005-07-14 International Business Machines Corporation Autonomic method and apparatus for counting branch instructions to improve branch predictions

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012150824A (ja) * 2005-02-03 2012-08-09 Qualcomm Inc 電力的に効率的な命令プリフェッチ機構
US8661229B2 (en) 2005-02-03 2014-02-25 Qualcomm Incorporated Power efficient instruction prefetch mechanism
JP2007207246A (ja) * 2006-02-03 2007-08-16 Internatl Business Mach Corp <Ibm> 命令ラインのための自己プリフェッチl2キャッシュ機構

Also Published As

Publication number Publication date
CN101013401A (zh) 2007-08-08
US20070186050A1 (en) 2007-08-09
TW200745854A (en) 2007-12-16
JP5084280B2 (ja) 2012-11-28

Similar Documents

Publication Publication Date Title
JP5084280B2 (ja) データ・ラインのための自己プリフェッチl2キャッシュ機構
JP5089186B2 (ja) データ・キャッシュ・ミス予測およびスケジューリング
US7676656B2 (en) Minimizing unscheduled D-cache miss pipeline stalls in a cascaded delayed execution pipeline
JP5357017B2 (ja) 高速で安価なストア−ロード競合スケジューリング及び転送機構
US20070186049A1 (en) Self prefetching L2 cache mechanism for instruction lines
US8812822B2 (en) Scheduling instructions in a cascaded delayed execution pipeline to minimize pipeline stalls caused by a cache miss
EP2035920B1 (en) Local and global branch prediction information storage
US7958317B2 (en) Cache directed sequential prefetch
US6560693B1 (en) Branch history guided instruction/data prefetching
US6092182A (en) Using ECC/parity bits to store predecode information
US20070288733A1 (en) Early Conditional Branch Resolution
US8301871B2 (en) Predicated issue for conditional branch instructions
US20080140934A1 (en) Store-Through L2 Cache Mode
US11249762B2 (en) Apparatus and method for handling incorrect branch direction predictions
US20070288731A1 (en) Dual Path Issue for Conditional Branch Instructions
US20070288734A1 (en) Double-Width Instruction Queue for Instruction Execution
US20080162907A1 (en) Structure for self prefetching l2 cache mechanism for instruction lines
US11526356B2 (en) Prefetch mechanism for a cache structure
US20080162819A1 (en) Design structure for self prefetching l2 cache mechanism for data lines
US20070239939A1 (en) Apparatus for Performing Stream Prefetch within a Multiprocessor System

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091030

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120412

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120417

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120612

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120612

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20120612

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120614

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

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120816

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20120816

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150914

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees