JP5615927B2 - データストリームのためのストアアウェアプリフェッチ - Google Patents

データストリームのためのストアアウェアプリフェッチ Download PDF

Info

Publication number
JP5615927B2
JP5615927B2 JP2012528890A JP2012528890A JP5615927B2 JP 5615927 B2 JP5615927 B2 JP 5615927B2 JP 2012528890 A JP2012528890 A JP 2012528890A JP 2012528890 A JP2012528890 A JP 2012528890A JP 5615927 B2 JP5615927 B2 JP 5615927B2
Authority
JP
Japan
Prior art keywords
request
data stream
cache
access
prefetch
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012528890A
Other languages
English (en)
Other versions
JP2013504815A (ja
Inventor
ティー. サンダー ベンジャミン
ティー. サンダー ベンジャミン
ナラシンハ スワーミー バハラット
ナラシンハ スワーミー バハラット
プニヤムルタラ スワーミー
プニヤムルタラ スワーミー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2013504815A publication Critical patent/JP2013504815A/ja
Application granted granted Critical
Publication of JP5615927B2 publication Critical patent/JP5615927B2/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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/6026Prefetching based on access pattern detection, e.g. stride based prefetch

Description

本発明は、コンピューティングシステムに関するものであり、より具体的には、効率的なキャッシュラインのプリフェッチに関するものである。
最新のマイクロプロセッサは、各プロセッサがソフトウェアアプリケーションの命令を実行する能力を有する、1つ以上のプロセッサコアまたはプロセッサを含む場合がある。これらのプロセッサは、一般的に、パイプライン型であり、段階間に配置された記憶素子(例えば、レジスタおよび配列)と直列に接続された1つ以上のデータ処理段階を含む。理想的には、全てのクロックサイクルは、パイプラインの各段階における命令が有効に実行される。しかしながら、パイプライン内のストールは、特定のパイプライン段階中に実行されるべき有効な動作を実行しない場合がある。典型的にはマルチサイクルストールであるストールの一例は、データキャッシュミスまたは命令キャッシュミスである。より上位レベルのキャッシュおよび/またはシステムメモリからのデータ検索には、相当な待ち時間となる場合がある。メモリからのデータ検索に必要なプロセッササイクルの総数であるこの待ち時間は、プロセッサの周波数がシステムメモリのアクセスタイムよりも速く増大する場合に、急激に長くなる。
種々の実施形態では、システムメモリは、プロセッサにおいて2つ以上のキャッシュ階層レベルを含んでもよい。システムメモリの階層におけるより最近のレベルは、ダイナミックランダムアクセスメモリ(DRAM)、デュアルインラインメモリモジュール(dimms)、ハードディスクなどへのメモリコントローラによるアクセスを含んでもよい。メモリのこれらのより下位レベルへのアクセスには、相当な数のクロックサイクルが必要となる。マルチコアマイクロプロセッサの多重コアにおいて共有されてもよい複数レベルのキャッシュは、キャッシュヒットが存在するときの待ち時間を短縮するための補助となる。しかしながら、キャッシュサイズが増大し、より最近のレベルのキャッシュ階層がプロセッサコア(複数可)からさらに離れて位置する場合には、リクエストされたメモリラインがキャッシュに存在するか否かを判定する待ち時間はさらに長くなる。DRAMアクセスの後に、ヒットしない各キャッシュレベルの順次または並列アクセスに続くメモリリクエストをプロセッサコアが有するべき場合には、メモリリクエストに与えられる全体の待ち時間が重要となる場合がある。
前述の問題に起因する全体の性能低下を軽減するための解決策の1つは、クロックサイクルによって、多重命令の順番になっていない実行を含むキャッシュミスに起因するキャッシュラインフィルトランザクションを重複することである。しかしながら、いくつかのクロックサイクルのストールは、有効な動作を含むストールサイクルの完全な重複を防ぐ場合がある順番通りのリタイアメントのために、プロセッサの性能をなおも減少させる。別の解決策は、現在処理されているデータよりも先に既定数のキャッシュラインの、DRAMなどのより下位レベルメモリに推測プリフェッチリクエストを用いることである。このプリフェッチリクエストは、1つ以上のレベルのキャッシュサブシステムへの現在のメモリリクエストと直列であっても、または並行であってもよい。それ故、現在のメモリリクエスト後の、記憶階層から次のメモリリクエストにアクセスする待ち時間は大幅に短縮される場合がある。データは予めメモリコントローラのキャッシュ内に存在してもよく、より前の推測プリフェッチリクエストのためにメモリコントローラに直ぐに到達してもよい。
データストリーム検出のためにデータストリームプリフェッチユニットが用いられてきた。データストリームは、連続するデータブロックを参照する一連のメモリアクセスとして定義されてもよい。連続するデータブロックは、1つ以上の記憶階層レベルに記憶されてもよい。例えば、データブロックはメインメモリに記憶されてもよく、読み出され、かつより上位レベルの記憶階層の1つ以上のキャッシュに送信されてもよい。記憶階層のより下位レベルからより上位レベルへの、この連続するデータブロックの伝達は、キャッシュラインフィルトランザクションの結果でもある。代替的に、この連続するデータブロックの伝達は、プリフェッチトランザクションの結果であってもよい。一例では、画像または画素をシャープにするためのアルゴリズムの実行にデータストリームが用いられる場合がある。このようなアルゴリズムは、以下のループ式、a[i]=b[i]+c[i]を用いてもよい。
データストリームの検出は、単調増加または単調減少の様態で連続するキャッシュラインの組を参照する一連のメモリアクセスの識別を含んでもよい。データストリームプリフェッチユニットは、データストリームの検出に応答して、現在リクエストされているキャッシュラインよりも先に、既定数のキャッシュラインのプリフェッチを開始してもよい。データストリームプリフェッチユニットは、散在されたロードおよび記憶アクセスを含むデータストリーム(これ以降、混合アクセスデータストリームと称する)を追跡し、ミスアドレスのアクセスタイプ(ロードまたは記憶)を無視する。本明細書に用いられる場合、記憶操作または記憶命令は書き込みアクセスであり、一方、ロードオペレーションまたはロード命令は読み出しアクセスである。それ故、データストリームプリフェッチユニットは、読み出し専用状態において全てのキャッシュラインをプリフェッチする。この読み出し専用状態は、例えば、MOESI−キャッシュコヒーレンスプロトコルに関連する場合がある。状態変更リクエストを発行するために、プリフェッチライン上でヒットするプロセッサからの要求アクセスストリームにおける第1の記憶動作が要求される。状態変更リクエストは、キャッシュラインへの書き込み許可を取得する。状態変更リクエストは、キャッシュラインをプリフェッチする利益を低減する。
前述の内容を考慮して、効率的なキャッシュラインプリフェッチのための効率的な方法およびメカニズムが所望される。
プロセッサにおける効率的なキャッシュラインのプリフェッチのためのシステムおよび方法が開示される。一実施形態では、コンピューティングシステムは、キャッシュ、下位レベルメモリ、非推測要求リクエストを伝達するように構成されたプロセッサコアにおけるロード/記憶バッファ、およびプロセッサコアにおけるプリフェッチユニットを備えている。一例では、画像または画素をシャープにするためのアルゴリズムの実行にデータストリームが用いられてもよい。このようなアルゴリズムは、以下のループ式、a[i]=b[i]+c[i]を用いてもよい。プリフェッチユニットは、特定のデータストリームに対応する特性データを記憶する。
データストリームの検出は、単調増加または単調減少様態において連続するデータブロックの組を参照する一連のストレージアクセスの識別を含んでもよい。他の既存データストリームのミスアドレスに連続しない初期の対応するミスアドレスは、新規のデータストリームの先頭部でもよい。プリフェッチユニットが新規のデータストリームを検出すると、既定のトレーニング期間に入る場合がある。
特定のデータストリームに関するトレーニング期間が終了すると、プリフェッチユニットは、所与のデータストリームへの第1の書き込みアクセスの検出が無いことに応答し、書き込み許可なしに、下位レベルメモリから所与のデータストリームの一部のプリフェッチを開始してもよい。また、プリフェッチユニットは、トレーニング期間の終了後、所与のデータストリームへの第1の書き込みアクセスの検出に応答して、書き込み許可を取得して、下位レベルメモリから所与のデータストリームの別個の一部のプリフェッチを開始できる。この時の書き込み許可の取得により、後続のプリフェッチされるキャッシュラインにおいて検出される記憶動作に関する後続の状態変更ペナルティを回避する場合がある。それ故、後続の記憶動作を含むキャッシュラインのプリフェッチの利益がなおも保持される。
以下の記述および添付図面を参照して、これらのおよび他の実施形態が明らかとなる。
例示のマイクロプロセッサの一実施形態を示す一般化されたブロック図である。
順番になっていない実行を実施する汎用プロセッサコアの一実施形態を示す一般化されたブロック図である。
メモリリクエストの異なるソースを示すメモリインターフェースの一実施形態を示す一般化されたブロック図である。
プリフェッチユニットの状態および状況遷移を示す表の一実施形態を示す一般化されたブロック図である。
プリフェッチユニット内の特性データの記憶の一般化されたブロック図である。
プロセッサにおける効率的なキャッシュラインのプリフェッチ方法の一実施形態を説明するフローチャートである。
プロセッサにおける効率的なキャッシュラインのプリフェッチを継続する方法の一実施形態のフローチャートである。
プロセッサにおける効率的なキャッシュラインのプリフェッチを継続する方法の一実施形態のフローチャートである。
本発明は種々の変形および代替的な形状により影響を受けるが、特定の実施形態が例示として図面により示され、本明細書において詳細に記載される。しかしながら、それに関する図面および詳細な説明が、開示する特定の形状に本発明を限定することを意図せず、それどころか、本発明が添付の特許請求の範囲により定義される本発明の精神および範囲内に含まれる全ての変更、均等物および代替物を含むことを理解するべきである。
以下の説明では、本発明の完全な理解を提供するための多くの具体的な詳細が記載される。しかしながら、これらの具体的な詳細が無くとも、本発明が実行可能であることを当業者は理解するはずである。いくつかの例では、本発明をあいまいにすることを回避するために、周知の回路、構造、および技術は詳細には示されない。
図1を参照すると、例示のプロセッサ100の一実施形態を示す。プロセッサ100は、示す実施形態ではマイクロプロセッサであり、メモリコントローラ120、インターフェースロジック140、1つ以上のプロセシングユニット115、クロスバー相互接続ロジック116、および共有キャッシュメモリサブシステム118を備えてもよく、プロセシングユニット115はさらに、1つ以上のプロセッサコア112、およびそれに対応するキャッシュメモリサブシステム114を備えてもよい。一実施形態では、示されたマイクロプロセッサ100の機能性は、単一集積回路上に組み込まれる。
インターフェース140は、通常、マイクロプロセッサ100から離れた入力/出力(I/O)デバイスとのインターフェースを、共有キャッシュメモリサブシステム118およびプロセシングユニット115に提供する。本明細書に用いられる場合、番号の後に続く文字により参照される要素は、数字のみにより集合的に参照されてもよい。例えば、プロセシングユニット115a〜115bは、プロセシングユニット115、またはユニット115と集合的に参照されてもよい。I/Oデバイスは、プリンタ、キーボード、モニタ、カメラ、カードリーダ、ハードもしくはフロッピー(登録商標)ディスクドライブまたはドライブコントローラ、ネットワークインターフェースカード、ビデオアクセラレータ、オーディオカード、モデム、汎用インターフェースバス(GPIB)またはフィールドバスインターフェースカードなどの種々のデータ収集カードなどの周辺ネットワークデバイスを含んでもよい。さらに、インターフェース140は、他のマイクロプロセッサおよび/または他の処理ノードとの通信に用いられてもよい。インターフェースロジック140は、通常、対応するリンクからパケットを受信し、対応するリンク上で送信されるべきパケットをバッファリングするバッファを備えてもよい。マイクロプロセッサ100への、およびマイクロプロセッサ100からのパケットの伝達には、任意の適切なフロー制御メカニズムが用いられてもよい。
マイクロプロセッサ100は、各メモリコントローラ120を介して各メモリに連結されてもよい。メモリは任意の適切なメモリ装置を備えてもよい。例えば、メモリは、1つ以上のRAMBUSダイナミックランダムアクセスメモリ(DRAM)、シンクロナスDRAM(SDRAM)、DRAM、スタティックRAMなどを備えてもよい。マイクロプロセッサ100のアドレス空間は、多重メモリの中で分割されてもよい。各マイクロプロセッサ100またはマイクロプロセッサ100を備えるそれぞれの処理ノードは、メモリマップを含んでもよく、これは、どのアドレスがどのメモリにマッピングされるかの判定、そしてそれ故、特定のアドレスに関するメモリリクエストを、どのマイクロプロセッサ100または処理ノードに対してルーティングするかの判定に用いられる。一実施形態では、アドレスに関するコヒーレンス点は、アドレスに対応するバイトを記憶するメモリに連結されたメモリコントローラ120である。メモリコントローラ120は、メモリとインターフェース接続するための制御回路を備えてもよい。さらに、メモリコントローラ120は、メモリリクエストを待ち行列に入れるためのリクエストキューを含んでもよい。前述に加えて、メモリコントローラ120はプリフェッチユニットを含むか、プリフェッチユニットに連結されてもよい。
一般的に、クロスバー相互接続ロジック116は、インターフェース140に連結されたリンク上で受信した受信制御パケットに応答し、プロセッサコア112および/またはキャッシュメモリサブシステム114に応答して制御パケット生成し、プローブコマンドを生成し、メモリコントローラ120により選択された提供するためのトランザクションに応答してパケットに応答し、マイクロプロセッサを備えた中間ノードに関するパケットを、インターフェースロジック140を通して他のノードにルーティングするように構成されている。インターフェースロジック140は、パケットを受信し、そのパケットをクロスバー相互接続116によって用いられる内部クロックに同期させるロジックを含んでもよい。クロスバー相互接続116は、プロセッサコア112からのメモリリクエストを、共有キャッシュメモリサブシステム118またはメモリコントローラ120、およびより下位レベルのメモリサブシステムに伝達するように構成されてもよい。また、クロスバー相互接続116は、メモリコントローラ120を介して、下位レベルメモリから受信したメモリラインおよび制御信号を、プロセッサコア112並びにキャッシュメモリサブシステム114および118に伝達してもよい。クロスバー相互接続116、メモリコントローラ120、インターフェース140、およびプロセッサユニット115間の相互接続バスの実装は、任意の適切な技術を含んでもよい。
キャッシュメモリサブシステム114および118は、データブロックを記憶するように構成された高速キャッシュメモリを備えてもよい。キャッシュメモリサブシステム114は、それぞれのプロセッサコア112内で一体化されてもよい。代替的に、キャッシュメモリサブシステム114は、所望に応じて、バックサイドキャッシュ構成またはインライン構成でプロセッサコア112に連結されてもよい。なおさらに、キャッシュメモリサブシステム114は、キャッシュ階層として実施されてもよい。プロセッサコア112により近いキャッシュは、所望する場合は、(階層内で)プロセッサコア112に一体化されてもよい。一実施形態では、キャッシュメモリサブシステム114は、それぞれ、L2キャッシュ構造を示し、共有キャッシュサブシステム118はL3キャッシュ構造を示す。
キャッシュメモリサブシステム114および共有キャッシュメモリサブシステム118の両方が、対応するキャッシュコントローラに連結されたキャッシュメモリを含んでもよい。プロセッサコア112は、所定の汎用命令の組に従い命令を実行する回路を含む。例えば、x86命令の組のアーキテクチャが選択されてもよい。代替的に、アルファ、パワーPC、または任意の他の汎用命令の組のアーキテクチャが選択されてもよい。通常、プロセッサコア112は、データおよび命令のためにそれぞれ、キャッシュメモリサブシステム114にアクセスする。キャッシュメモリサブシステム114または共有キャッシュメモリサブシステム118の中にリクエストされたブロックが見つからない場合には、読み出しリクエストが生成されてもよく、不足しているブロックがマッピングされた位置の途中で、メモリコントローラ120に送信されてもよい。
図2は順番になっていない実行を実施する汎用プロセッサコア200の一実施形態を示す。命令キャッシュ(i−キャッシュ)および対応するトランスレーションルックアサイドバッファ(TLB)202は、ソフトウェアアプリケーションに関する命令、および命令にアクセスするためのアドレスを記憶してもよい。キャッシュ202および222の両方がプロセッサコア200内部に配置されてもよく、または例えば、図1のキャッシュメモリサブシステム114の中などのように、外側に配置されてもよい。命令フェッチユニット(IFU)204は、i−キャッシュミスが存在しない場合に、クロックサイクルに従って、i−キャッシュ202から多重命令をフェッチすることができる。IFU204は、i−TLBのアドレスと比較される場合がある、i−キャッシュ202においてフェッチするために、次の命令のアドレスに関するポインタを保持するプログラムカウンタを含んでもよい。IFU204は、最新のパイプライン段階における実際の結果を実行ユニットが決定する前に、条件命令の結果を予測する分岐予測ユニットをさらに含んでもよい。
復号器ユニット206は、多重フェッチ命令のオペコードを復号し、レコーダバッファ208などの順番通りのリタイアメントキューに入力を割り当てる場合がある。入力は再順番付けバッファ208への割り当て後、整数キュー212および浮動小数点キュー216に割り当てられる場合がある。ロード/記憶ユニット220内での入力キューは、所望する場合、実行ユニット210内での割り当て後、またはそれと同時に割り当てられてもよい。実行ユニット210および/またはロード/記憶ユニット220内での入力の割り当ては、ディスパッチと考えられる。実行ユニット210の説明は、メモリアクセスの記述の後に続くであろう。
ロード動作および記憶動作などのメモリアクセスが、ロード/記憶ユニット220に発行される。ロード/記憶ユニット220は、メモリアクセス命令を実行するためのキューおよびロジックを含んでもよい。また、ロード命令による、正確に最新の記憶命令からの転送データの受信を確実にする検証ロジックが、ロード/記憶ユニット220に常駐してもよい。ロード/記憶ユニット220は、チップ上において1つ以上のレベルのデータキャッシュ(d−キャッシュ)222にメモリアクセスリクエスト224を送信してもよい。各レベルのキャッシュは、メモリリクエスト224と共にアドレス比較に関するその独自のTLBを有してもよい。各レベルのキャッシュ222は、順次の様態でまたは並行の様態で検索されてもよい。リクエストされるメモリラインがキャッシュ222において見つからない場合には、次に、キャッシュ114および118などのような下位レベルのキャッシュメモリ、または場合によってはオフチップメモリに、メモリリクエスト224が送信される。順次または並行検索、他のメモリへの可能性のあるリクエスト、およびリクエストされるメモリラインに到着するための待ち時間は、十分な数のクロックサイクルを要求する場合がある。
実行ユニット210およびロード/記憶ユニット220からの結果は、共通データバス230に示されてもよい。この結果は再順番付けバッファ208に送信されてもよい。一実施形態では、再順番付けバッファ208は、プログラム順序に従う命令の順番通りのリタイアメントを確実にする先入れ先出し(FIFO)キューでもよい。ここで、その結果を受信する命令がリタイアメントのためにマークされる。命令がキューの先頭部である場合には、それは対応するアーキテクチャレジスタファイルに送信される結果を有してもよい。各キュー212および216は、対応するアーキテクチャレジスタファイルを保持してもよい。アーキテクチャレジスタファイルは、プロセッサコア200の汎用レジスタのアーキテクチャ状態を保持してもよい。次に、再順番付けバッファ内の命令が順番通りにリタイアしてもよく、そのキュー先頭部のポインタが、プログラムの順番で後続の命令に対して調整されてもよい。
共通データバス230における結果は、その結果に関する命令待ち時間のオペランドに値を転送するために、実行ユニット210に送信されてもよい。例えば、算術命令が、以前の算術命令の結果に依存するオペランドを有してもよく、またはロード命令が、機能ユニット214におけるアドレス生成ユニット(AGU)により計算されたアドレスを必要としてもよい。これらの待ち時間命令がそれらのオペランドに関する値を有し、ハードウェアリソースがこの命令を実行するために利用可能な場合には、これらの命令は、キュー212および216からそれぞれ機能ユニット214および216またはロード/記憶ユニット220の適切なリソースに順番通りでなく発行されてもよい。
コミットされていない、またはリタイアしていないメモリアクセス命令は、ロード/記憶ユニット220内に入力を有する。インフライトに関する転送されたデータ値、または最新かつコミットされていないより古い記憶命令からのコミットされていないロード命令は、共通データバス230に配置されてもよく、または単にロード/記憶ユニット220内のロードバッファへの適切な入力にルーティングされてもよい。
実行ユニット210に戻ると、キュー212および216は、それらのオペランドが利用可能になるのを待つ、対応する整数および浮動小数点命令を記憶してもよい。レジスタリネーミングおよび実行スケジューリングが、キュー212および216内、または図示しない周囲の対応する回路内で生じてもよい。オペランドが利用可能になり、さらにハードウェアリソースも利用可能になると、命令が、キュー212および216から、整数機能ユニット214、浮動小数点機能ユニット218、および/またはロード/記憶ユニット220に順番通りでなく発行されてもよい。整数機能ユニット214の各組は、加算、減算、アドレス生成、分岐条件命令の結果の決定、乗算、除算などの整数計算機計算のための算術論理演算ユニット(ALU)を含んでもよい。浮動小数点機能ユニット218は、浮動小数点加算、減算、乗算、除算、平方根、整数から浮動小数点への換算、浮動小数点から整数への換算などを実行する回路を含んでもよい。
一実施形態では、多重整数機能ユニット214は、マイクロプロセッサ命令スループットを増大するためにインスタンス化されてもよい。例えば、プロセッサコア200は、多重ソフトウェアスレッドの実行を実行するように構成されてもよい。マイクロプロセッサ100、および対応するプロセッサコア200に対するオペレーティングシステムは、メモリ領域をソフトウェアアプリケーションに割り当てる。ソフトウェアアプリケーションがコンパイルされるときに、アプリケーションは多重プロセスを含んでもよい。このような実施形態では、各プロセスは、メモリ画像、またはアプリケーション実行前の命令およびデータのインスタンスなどのその独自のリソースを所有してもよい。また、各プロセスは、コード、データ、および場合によってはヒープおよびスタックに対処するアドレス空間、データ変数、スタックポインタ、汎用レジスタおよび浮動小数点レジスタ、プログラムカウンタなどの制御レジスタ、stdin、stdoutなどのオペレーティングシステム記述子、ならびにプロセッサの所有者およびプロセスの許可の組といったセキュリティ属性などのプロセス固有情報を含んでもよい。
ソフトウェアアプリケーションの各プロセスは、さらにソフトウェアスレッドに分けられてもよい。最新のマイクロプロセッサの多くは、2つ以上のソフトウェアスレッドを並行実行するように構成される。これらのマイクロプロセッサは、並列実行、およびオペレーティングシステムのカーネルによる割り当てに対して利用可能であり2つ以上のハードウェアスレッドまたはストランドを有してもよい。例えば、マルチスレッドマイクロプロセッサに対して、各整数機能ユニット214は、特定のユニット214内のハードウェアリソースの利用可能性に応じて、クロックサイクルごとに、特定のスレッドの1つ以上の整数命令を受信してもよい。命令フェッチユニット204から整数キュー212への回路は、各ユニットのハードウェアを複製することなく、プロセッサコア200の2つ以上のストランドを管理するように変更されてもよい。例えば、スレッドのアーキテクチャ状態を保持するレジスタは複製されてもよいが、実行ハードウェアリソースは複製されない。
別の実施形態では、プロセッサコア200のマルチスレッド実行は、単一スレッドの実行のために利用されるクラスタ全体のコピーのインスタンス化を含んでもよく、一実施形態では、復号器ユニット206から命令機能ユニット214への回路を備える。このような実施形態では、この回路は整数実行クラスタと呼ばれる場合がある。別の実施形態では、浮動小数点コプロセッサは、復号器ユニット206から浮動小数点機能ユニット218への回路を含んでもよい。この浮動小数点コプロセッサのインスタンス化の数は、整数実行クラスタのインスタンス化の数より少なくてもよい。このような実施形態では、各浮動小数点コプロセッサは2つ以上のスレッドに相当し、一方、各整数実行クラスタは単一の異なるスレッドに相当する。命令フェッチユニット204は、コア200内の多重スレッドを管理する回路を含むことになり、各クラスタに、1つ以上の利用可能な対応する特定のスレッドの命令を供給することになる。この場合では、各クラスタはストランドまたはハードウェアスレッドである。
整数機能ユニット214の各コピーに付随するために、浮動小数点ユニット218の多重コピーをインスタンス化することが、回路論理の観点から所望されるかもしれないが、ハードウェア実施の観点からは所望されないかもしれない。例えば、浮動小数点機能ユニット(FPU)218は、多量のオンダイのリアルエステートを消費する複合論理を含んでもよい。また、浮動小数点オペレーションは多くの場合に、プログラムコードでは実行されない。それ故、ハードウェアの設計者は、ダイ上で浮動小数点機能ユニット218の独立した高価なコピーを生成する意欲をおこさせないかもしれない。
ここで図3を参照すると、メモリリクエストの異なるソースを示すメモリインターフェース300の一実施形態が示される。図3に示す構成要素が、構成要素の実際の物理的配置ではなく、構成要素の一般的構成および連結を示すことに留意されたい。図2および図3に用いられる回路およびロジックは、適切な番号が付けられている。物理的配置の例は、図1および図2に示される場合がある。一実施形態では、メモリサブシステム330は、付随するミスバッファ334をともなう、コンピューティングシステムのオンコアL2キャッシュに対応する場合があるキャッシュメモリ332を備える。このような実施形態では、オンコアL1i−キャッシュ202およびL1d−キャッシュ222は、それぞれのキャッシュ内で失われたメモリ参照命令に関連するアドレスを保持するための関連するオンコアミスバッファを有してもよい。別の実施形態では、キャッシュメモリ332は、ミスバッファ334内の付随する1つ以上のミスバッファをともなう、L1i−キャッシュ202、L1d−キャッシュ222、L2d−キャッシュ、およびL3d−キャッシュなどのような複数レベルのキャッシュ階層を備えてもよい。他の組み合わせも可能であり、考慮される。下位レベルメモリ340は、コンピューティングシステムのメインメモリを備えてもよい。キャッシュメモリ332およびプリフェッチユニット320の両方が下位レベルメモリ340に連結されてもよい。プリフェッチユニット320は、メモリサブシステム330を介してプリフェッチリクエストを送信してもよく、メモリサブシステム330を独立して形成してもよい。プリフェッチユニット320は、それ自体がキャッシュヒットおよびキャッシュミスの両方を検出できるように、ミスバッファ334内には配置されない。この検出は、より詳細には下記するように、トレーニング状態および伝搬状態の両方のプリフェッチユニット320において有効である場合がある。
キャッシュメモリ332は、以前のレベルのキャッシュライン全てを含んでもよい。一実施形態では、L1d−キャッシュ222から複雑さを除くために、L1d−キャッシュはライトスルーキャッシュとして実施されてもよく、L2キャッシュはメモリ順序およびコヒーレンス発行を管理する。それ故、コア200内のメモリリクエストは、L1d−キャッシュ222およびキャッシュメモリ332などのL2キャッシュの両方に送信される。
キャッシュメモリ332は、記憶キュー310およびロードバッファ312両方からの非推測要求リクエストを提供してもよい。キャッシュメモリ332はさらに、プリフェッチユニット320からの推測プリフェッチリクエストを提供してもよい。プリフェッチユニット320からの推測プリフェッチリクエストは、データが実際に必要となるよりも前に、データをキャッシュメモリ332に送るように意図されてもよく、これにより、メモリアクセスに関連する待ち時間が短縮する場合がある。
一実施形態では、ミスバッファ334は、それらが完了するのが困難な状況に遭遇した場合に、ロード、プリフェッチ、および記憶命令などの全ての読み出しおよび書き込み操作を待ち行列に入れる複数の入力を備える。例えば、リクエストされたキャッシュラインは、キャッシュメモリ332に存在しなくてもよい。代替的に、リクエストされたキャッシュラインはキャッシュメモリに存在してもよいが、それは特定のキャッシュコヒーレンス状態を有しない。例えば、キャッシュメモリ332内の対応するキャッシュラインがキャッシュコヒーレンスプロトコルの排他状態にない場合に、記憶動作においてキャッシュミスが生じる場合がある。記憶動作を提供するための追加の待ち時間を含む、後続の状態変更リクエストが送信される場合がある。一実施形態では、キャッシュメモリ332は、メモリモデルに関する広範囲の命令ポイントとなるように選択されてもよい。メモリモデルの規則に従うために、記憶階層内に広範囲の命令ポイントが必要となる場合がある。この広範囲の命令ポイントは、全ての記憶動作に対する参照として機能する関連するライトスルーL1キャッシュと共に、L2キャッシュでもよいキャッシュメモリ332を含んでもよい。キャッシュメモリ332は、記憶動作の、一貫性があり、かつ適切な順序を全ての消費者が確認するであろうことが確実になるように機能することの責任を有する。
少なくともIFU202、記憶キュー310、ロードバッファ312においてメモリリクエストは生成されてもよい。これらのメモリリクエストは要求メモリリクエストと呼ばれてもよい。前述のように、IFU202は、フェッチするスレッドを選択し、選択されたスレッドに関する命令を、図3の対応するL2キャッシュメモリ332をともなうL1キャッシュに相当する場合があるi−キャッシュ205からフェッチするように構成されてもよい。記憶キュー310は、選ばれたスレッドに関してコミットされた記憶命令のデータを書き出すために、選ばれたスレッドに対して、同じL1およびL2キャッシュにメモリリクエストを伝達するように構成されてもよい。
ロードバッファ312は、実行されるロード命令のデータを読み取るために、選ばれたスレッドに対して同じL1およびL2キャッシュにメモリリクエストを伝達するように構成されてもよい。データストリームプリフェッチユニット、またはプリフェッチユニット320は、現在リクエストされているキャッシュラインよりも先に既定数のキャッシュラインをプリフェッチするために、選ばれたスレッドに対して同じL1およびL2キャッシュに推測プリフェッチリクエストを伝達するように構成されてもよい。プリフェッチユニット320は、データストリームを検出するために用いられてもよい。データストリームは、単調増加または単調減少の様態で連続するキャッシュラインの組を参照する一連のストレージアクセスとして定義されてもよい。それ故、一実施形態では、記憶キュー310、ロードバッファ312、およびプリフェッチユニット320を含む、LSU220内のプロセッサコア200の少なくとも3つのソースは、キャッシュインターフェース325を介するL2キャッシュメモリ332へのアクセスを奪い合う。
前述のように、キャッシュメモリ332は、記憶キュー310およびロードバッファ312両方からの非推測要求リクエストを提供してもよい。キャッシュメモリ332はさらに、プリフェッチユニット320がデータストリームを検出した後に、プリフェッチユニット320からの推測プリフェッチリクエストを提供してもよい。メモリサブシステム330が提供した各リクエストのヒット/ミス状況は、メモリサブシステム330からLSU220に伝達されてもよい。一実施形態では、データストリーム検出およびデータストリームに関するプリフェッチリクエストをいつ開始するかの決定の両方にヒット/ミス状況が用いられてもよい。例えば、プリフェッチユニット320は、他の既存データストリームのミスアドレスに連続しないミスアドレスを検出する場合がある。この特定のミスアドレスは、新規のデータストリームの最初の部分である場合がある。この特定のアドレスに近接および連続するミスアドレスが既定数に達すると、トレーニング期間が終わる場合があり、プリフェッチユニットは、この新規のデータストリームに関するデータのプリフェッチを開始する場合がある。
一実施形態では、プリフェッチユニット320は、書き込み許可をリクエストしないプリフェッチリクエストを送信する間に、非推測要求リクエストのロードまたは記憶アクセスタイプを検出するように構成されてもよい。この要求リクエストは、ロードおよび記憶アクセスと共に散在される混合アクセスデータストリーム内であってもよい。これにより、プリフェッチユニット320は、書き込み許可をリクエストするトレーニング期間の終了後、第1のメモリアクセス動作を検出可能になる。一実施形態では、記憶動作がアクセスしたデータを修正する場合があるように、記憶動作は明示的または暗示的の何れかで書き込み許可をリクエストする動作の一例である。アクセスされたデータを修正する場合がある他の動作は、同様に、明示的にまたは暗示的に書き込み許可をリクエストする場合がある。例えば、読み取り/ロード排他動作に意図するかどちらかのロード動作の一例である。それ故、特定の読み取り型の動作もまた、明示的にまたは暗示的に、書き込み許可をリクエストする場合がある。書き込み許可をリクエストするかかるオペレーションの任意の所望の組み合わせを用いる実施形態が考慮される。種々の実施形態では、検出された動作後の、書き込み許可をリクエストするプリフェッチリクエストは、プリフェッチされたデータに関する書き込み許可の取得を含んでもよいが、一方、このような動作検出前のプリフェッチリクエストは、書き込み許可がなくても、データをプリフェッチする場合がある。このようなアプローチの利用では、以前に検出されたオペレーション後の、書き込み許可をリクエストする推測プリフェッチリクエストは、書き込み許可を取得するための必要からもたらされる最新の状態変更ペナルティを回避する場合がある。
一実施形態では、プリフェッチユニット320は、トレーニング期間後の第1の記憶動作において特定のデータストリームが検出されたか否かを追跡するために、各プリフェッチリクエストに関するスティッキ記憶ビットを用いてもよい。このスティッキ記憶ビットは一旦設定されると、プリフェッチユニット320が同一のデータストリームに関するロードアクセスをその後検出した場合でさえもその設定を維持できる。対応するスティッキ記憶ビットが、プリフェッチユニット320内で特定のデータストリームの入力用に設定されている場合には、それは特定のデータストリームに対応する非推測要求リクエストアドレスセットよりも前に、記憶動作が検出されたことを示す場合がある。続いて、この特定のデータストリームに対応する送信された推測プリフェッチリクエストは、リクエストされたキャッシュラインの書き込み許可をリクエストしてもよい。
ここで図4を参照すると、プリフェッチユニットの状態および状況遷移を示す表350の一実施形態が示される。単調増加の様態で連続するキャッシュラインの組を参照するアドレスを追跡するために、汎用キャッシュライン境界アドレスX、およびキャッシュライン境界オフセットを用いる。アドレスがロードまたは記憶アクセスタイプのいずれに対応するかが示される。一実施形態では、プリフェッチユニット320においてモニタされた特定のデータストリームは、3つの状態、すなわち割り当て、トレーニング、および伝搬のうちの1つを有してもよい。
要求リクエストアドレスが既存データストリームの追跡されたアドレスに一致しない場合には、プリフェッチユニット320内に新規のデータストリームを割り当ててもよい。次に、この新規に割り当てられたデータストリームは、トレーニング状態に入る。トレーニング状態では、データストリームがトレーニング期間を経ることにより、後続の要求リクエストミスアドレスを、対応する以前のミスアドレスおよび予期される次の連続するミスアドレスと比較する。後続のミスアドレスの所定数がこのデータストリームに相当すると認識されると、このデータストリームはトレーニング状態から伝搬状態に遷移する。伝搬状態では、プリフェッチユニット320は、この同一のデータストリームに属する後続のアクセスを追跡し、現在参照されているキャッシュラインよりも先にキャッシュラインを検索するために推測プリフェッチリクエストを発行してもよい。さらに、対応するスティッキ記憶ビットが設定された場合には、送信された推測プリフェッチリクエストはさらに、プリフェッチされたキャッシュラインの書き込み許可を取得する。スティッキ記憶ビット、プリフェッチ状態、および書き込み許可状態は表350に全て示される。
表350のデルタフィールドにより、現在の要求リクエストアドレスに関連するプリフェッチアドレスに用いられるオフセットが決定されてもよい。示す例では、アドレスX−2は、追跡されるいずれの既存データストリームにも属していないものとして、プリフェッチユニット320に認識される場合がある。それ故、新規のデータストリームが割り当てられる。示す例では、簡易化のために、各要求リクエストアドレスがキャッシュミスに相当する。
示す例では、トレーニング状態から伝搬状態への遷移の認定に、既定数の3つのミスアドレスが用いられる。この例での3ミスアドレスは、X−2、X−1、およびXを含む。別の既定数およびさらなる認定は、この遷移に関するシミュレーションに基づいて選ばれてもよい。一旦伝搬状態になると、プリフェッチユニット320は、書き込み許可無しに、プリフェッチ列においてYで示されるプリフェッチリクエストを送信する。
プリフェッチリクエストにより、より下位レベルのメモリからのデータが、L1キャッシュ、L2キャッシュ、それらの両方、または他の組み合わせの中にフェッチされるか、取り出される。このデータの取り出しは、そのデータがLSU220によって必要とされるよりも先に行われることが好ましい。プリフェッチする概念は、データアクセスが頻繁に空間の局所性を示すことを認識する。空間局所性の一般的な表現は、少なくとも一つの命令により連続するキャッシュラインが参照されるように、単調増加(または、減少)シーケンスにおいてメモリブロックからのデータがアクセスされるデータストリームである。プリフェッチユニット320がデータストリームを検出する場合には、将来の参照が、同じ方向で現在のキャッシュラインに隣接するキャッシュラインのアドレスに対して生成されるであろうことを予測することが適切である場合がある。プリフェッチユニット320は、ソフトウェアアプリケーションがこれらを実際に必要とする前に、これらの隣接するキャッシュラインの1つ以上をプロセッサが検索できるようにする。他の実施形態では、プリフェッチユニット320が、より下位レベルの記憶階層にも連結される場合があることが留意される。例えば、トレーニングおよび伝搬はL2/L3ヒットおよびミスに基づく場合がある。このような代替手段の多くが可能であり、考慮される。
一実施形態では、プリフェッチユニット320内のロジックが1のデルタを計算する。このデルタ値は、第1の推測プリフェッチアドレスX+1と、現在の要求リクエストアドレスXとの間のオフセットを見出すために用いられてもよい。この例では、既定数のラインである4つのキャッシュラインが、プリフェッチリクエストに対して用いられる。それ故、推測アドレスX+1〜X+4が用いられる。別の実施形態では、異なる既定数のキャッシュラインが選ばれてもよい。さらに、この値は各プリフェッチリクエストに関する異なる値に対して計算されてもよい。
アドレスX+2に対応するアクセスと共に、スティッキ記憶ビットが設定される。このスティッキ記憶ビットは、このデータストリームに関する最新のアクセス用の設定を維持する。それ故、対応するプリフェッチリクエストは書き込み許可を取得する。
ここで図5を参照すると、図3のプリフェッチユニット320内の特性データのストレージの一実施形態を示す。プリフェッチユニット320はデータストリーム配列410を含んでもよい。一実施形態では、LSU220により生成されたアドレスなどの、データストリームの特性データを待ち行列に入れるように各入力412は構成されてもよい。別の実施形態では、キャッシュヒット/ミス状況がLSU220に送信されるまで、各入力412はアドレスを待ち行列に入れなくてもよい。リクエストアドレスフィールド420はこのようなアドレスを保持してもよい。一実施形態では、キャッシュライン境界に対応するアドレスの一部のみを待ち行列に入れてもよい。バイトオフセットに対応するビットは待ち行列に入れられなくてもよい。
特性データは要求リクエストのアクセスタイプ(ロードまたは記憶動作)を含んでもよく、フィールド428で待ち行列に入れられてもよい。生成されたアドレスに対応するキャッシュヒット/ミス状況は、フィールド430で待ち行列に入れられてもよい。スティッキ記憶ビット値はフィールド432において保持されてもよい。代替的に、入力依存性のないスティッキ記憶ビットおよびデータストリーム状態(すなわち、割り当て、トレーニング、伝搬)などの他の状況情報は、各入力412に記憶されるのではなく、特定のデータストリーム配列410に対応するレジスタにおいて待ち行列に入れられてもよい。
制御ロジック440は新規のデータストリームの割り当てを制御してもよい。一実施形態では、制御ロジック440は、プリフェッチユニット320の中心位置に存在する回路および記憶素子を含んでもよい。代替的な実施形態では、各データストリーム配列410は、それ独自の対応する制御ロジックを有してもよい。さらに、制御ロジック440はまた、既存データストリームの状況およびアドレス情報を更新してもよい。アドレスがLSU220、または代替的にミスバッファ334により伝達されると、各データストリーム配列410において、このアドレスとリクエストアドレスフィールド420と推測アドレスフィールド424との比較が行われてもよい。一致が見出されると、制御ロジック440は対応するデータストリーム配列410に別の入力を追加してもよい。データストリームの状態(すなわち、割り当て、トレーニング、伝搬)は、状況情報フィールド434または個々のレジスタに記憶されてもよい。この状態情報は制御ロジック440により更新されてもよい。
一実施形態では、各要求リクエストアドレスおよび各推測プリフェッチアドレスは、オンチップのリアルエステート制限に起因して、データストリーム配列410内のフィールド420および424に別個に記憶されない場合がある。むしろ、アドレスの範囲の記憶にはポインタフィールド422および426が用いられる場合がある。図3のキャッシュメモリ332にプリフェッチリクエストを送信するために、フィールド424に対応する推測アドレスが用いられる場合がある。一実施形態では、データストリームが伝搬状態である場合に、これらのプリフェッチリクエストが送信される。
生成されたアドレスがデータストリーム配列410内の待ち行列アドレスまたはそれから派生したアドレスに一致しない場合には、新規のデータストリームを生成されてもよい。一実施形態では、この比較から一致しないことが、新規のデータストリームを生成するための唯一の条件である場合がある。別の実施形態では、追加の条件は、生成されたアドレスが、プリフェッチリクエストがこのアドレスに既に送信されたことを示す状況情報をともなう、ミスバッファ334の任意の入力内には検出されないことを含んでもよい。他の認定状況が可能であり、考慮される。
制御ロジック440により新規のデータストリームが生成されることが決定されると、特定のデータストリーム配列410への割り当てが生成される。制御ロジック440は、最も長い間使われていない(LRU)アルゴリズムなどの任意の所望の置換アルゴリズムを用いて、空配列410または上書きするための配列410を選択してもよい。
状況情報フィールド434は、ストリーム識別値(SID)、アップ/ダウンビット、待ち行列アドレスの先頭部、長さフィールド、および深度フィールドも含んでもよい。長さフィールドおよび待ち行列アドレスの先頭部は、データストリームの境界を定義してもよい。データストリームが最初に割り当てられる場合には、待ち行列フィールドの先頭部は、データストリーム内の第1のキャッシュラインのアドレスを含んでもよい。深度フィールドは対応するデータストリームに(例えば、積極的または保守的に)関連するプリフェッチレベルを示してもよい。この値は、プリフェッチ中に、リクエストのためのキャッシュラインの数を導き出すのに用いられてもよい。キャッシュラインの数は、特定の実施に応じて、プリフェッチごとに異なってもよく、一定数でもよい。
プリフェッチは積極的とるすことができ、または保守的とすることができる。積極性レベルは、プリフェッチの深度、またはコンピュータプログラムにより現在ロードされているか、またはコンピュータプログラム内に記憶されているキャッシュラインよりも先に、リクエストによりプリフェッチされたキャッシュラインの数に反映されてもよい。理想的には、キャッシュミスによる待ち時間ペナルティを回避しつつ、同時に、過度なプリフェッチを引き起こさない十分な数のキャッシュラインがプリフェッチされるように、プリフェッチ実施の深度は最適化される。過度のプリフェッチは、プロセッサに利用可能な所与の現在最大のデータ帯域幅に必要な数よりも多いキャッシュラインのプリフェッチを意味する。
プリフェッチするキャッシュラインの数は、帯域幅に対するメモリ待ち時間の割合を用いて制御ロジック440により判定される。メモリに顕著なこの割合よりも大きいプリフェッチリクエストの数により、待ち時間に起因するいかなる間隙も無しに、システムの全体の帯域幅が利用可能になる。並行データストリームの数などの、プリフェッチするキャッシュラインの数の判定には他のファクタが用いられてもよい。一つのデータストリームに対する最適なプリフェッチ深度は、別のデータストリームの最適深度と同じでなくてもよい。制御ロジック440は、プリフェッチ深度などのプリフェッチパラメータにわたる動的サポートおよびデータストリームの特定の制御を提供してもよい。図5に示すフィールドは特定の順序で示したが、他の組み合わせも可能であり、追加のフィールドが含まれてもよいことが留意される。フィールド420〜434に関するビット記憶情報は、連続していても、連続していなくてもよい。同様に、データストリーム配列410および制御ロジック440の配列は、より優れた設計トレードオフのための他の配置でもよい。
ここで図6を参照すると、プロセッサにおける効率的なキャッシュラインのプリフェッチ方法500の一実施形態が示される。当業者は方法500を変更して、代替的な実施形態を導き出してもよい。また、この実施形態のステップは示す逐次的な順序で示される。しかしながら、別の実施形態では、いくつかのステップは示すのとは異なる順序で実施されてもよく、いくつかのステップは並行実行されてもよく、いくつかのステップは他のステップと統合されてもよく、さらにいくつかのステップは無くてもよい。示される実施形態では、プロセッサコア200は、ブロック502において1つ以上のソフトウェアアプリケーション命令を実行してもよい。コア200は1つ以上のソフトウェアアプリケーションの命令をフェッチする。これらのフェッチされた命令はデコードされ、リネームされてもよい。リネームされた命令は実行のために後で取り上げられる。
ブロック504において、メモリ参照命令は要求リクエストをメモリに送信してもよい。一実施形態では、対応するアドレスはプリフェッチユニット320に伝達されてもよい。別の実施形態では、ブロック506においてキャッシュヒット/ミス状況が既知となるまで、プリフェッチユニット320に対応するアドレスを伝達しなくてもよい。アドレスがプリフェッチユニット320に伝達されると、このアドレスは、ブロック508において、プリフェッチユニット320に記憶されている要求リクエストアドレスおよび記憶されている推測アドレスの両方と比較される。
アドレス一致が見つからない場合(条件付きブロック510)には、次に、ブロック512において、新規のデータストリームがプリフェッチユニット320に割り当てられる。前述のような割り当てが実行される前に追加の認定条件が用いられてもよい。ブロック514において、この時点で、データストリームは割り当てからトレーニングへの状態遷移を有してもよい。後の比較のために、アップ/ダウンビットの補助により次のアドレスを導き出してもよい。代替的に、アップ/ダウン値が既知でない場合には、1つが単調増大値、もう1つが単調減少値である2つのアドレスが導き出されてもよい。別の実施形態では、データストリームのための導出値を用いた比較が後に実行されるまで、割り当てからトレーニングへの状態遷移が起こらなくてもよい。その後、方法500の制御フローはブロック502に戻る。
アドレス一致が見つかった場合(条件付きブロック510)には、ブロック516において、データストリームの状態(すなわち、割り当て、トレーニング、伝搬)が検査される。データストリームが、割り当てまたはトレーニング状態のいずれかの、より新規のデータストリームである場合(条件付きブロック518)には、方法500の制御フローはブロックBに進む。他の場合には、方法500の制御フローはブロックAに進む。
ここで図7を参照すると、プロセッサにおける効率的なキャッシュラインのプリフェッチを継続する方法600の一実施形態が示される。当業者は方法500と同様に、方法600を変更して、代替的な実施形態を導き出してもよい。また、この実施形態のステップは示す逐次的な順序で示される。しかしながら、別の実施形態では、いくつかのステップは示されるのとは異なる順序で実施されてもよく、いくつかのステップは並行実行されてもよく、いくつかのステップは他のステップと統合されてもよく、さらにはいくつかのステップは無くてもよい。示される実施形態では、方法600の制御フローは、伝搬状態であるデータストリーム内のアドレス一致により達成されるブロックAで開始される。
現在のアクセスが、対応するアドレスに関する第1の要求リクエストアクセスである場合(条件付きブロック602)には、対応するデータストリームに関する伝搬ヒットが生じる。本明細書に用いられる場合、伝搬ヒットは、アドレスに基づいて1つ以上のプリフェッチリクエストを生成するデータストリーム(例えば、配列410により識別されるデータストリーム)内のアドレス比較の一致、またはヒットを意味する。例えば、状況フィールド434に記憶された「伝搬」状態を有する特定のデータストリーム配列410の推測アドレスフィールド424に記憶された値(または、フィールド424およびポインタフィールド426から導き出された値)におけるアドレス一致は、伝搬ヒットであってもよい。ブロック604において、新規のプリフェッチパラメータを決定されてもよい。例えば、図4の表350に示すような新規のデルタ値は計算されてもよい。プリフェッチ深度、または取り出されるべきキャッシュラインの数が一定値で無い場合には、この値もこの時点で計算されてもよい。一実施形態では、制御ロジック440は、伝達される要求リクエストアドレスが、この値と各データストリーム配列410のフィールド420に記憶されたアドレスとを比較することにより、その第1のキャッシュアクセスに利用されることを判定してもよい。その第1のキャッシュアクセスに利用されるアドレスは、フィールド420にまだ記憶されていない。ただし、アドレス値は、以前のプリフェッチに基づいてフィールド424に記憶されてもよい。
伝達された要求リクエストのアクセスタイプが記憶動作である場合(条件付きブロック608)には、ブロック616においてスティッキ記憶ビットが設定されてもよい。このスティッキ記憶ビットが一旦設定されると、この設定は維持される。ブロック618において、導き出されたプリフェッチパラメータを用いて、1つ以上のプリフェッチリクエストは書き込み許可により送信される。推測アドレスは、現在一致する要求リクエストアドレス、デルタ値、およびプリフェッチ深度値から導き出されてもよい。プリフェッチリクエストは書き込み許可により送信されるため、取り込まれたキャッシュラインのデータを修正する任意の最新の記憶動作は、状態変更リクエストペナルティを受けない。方法600の制御フローは、次に、ブロックDに進む。
要求リクエストのアクセスタイプが記憶動作でない場合(条件付きブロック608)には、スティッキ記憶ビットの検査が行われる。例えば、データストリーム内の以前の、場合によっては、同じキャッシュラインにおけるより以前の記憶アクセスから、スティッキ記憶ビットが設定された場合(条件付きブロック612)には、ブロック618において、導き出されたプリフェッチパラメータを用いて、1つ以上のプリフェッチリクエストが書き込み許可により送信される。この場合も、プリフェッチリクエストが書き込み許可を利用して送信されるため、検索されたキャッシュラインにおけるデータを修正する任意の最新の記憶動作は、状態変更リクエストペナルティを受けない。ここでも図4の表350を参照すると、アドレスX+3の最初の発生とアドレスX+4の発生とはこのカテゴリに含まれる。これ以外の場合では、スティッキ記憶ビットが設定されない場合(条件付きブロック612)は、ブロック614において、書き込み許可無しに、導き出されたプリフェッチパラメータを用いて1つ以上のプリフェッチリクエストが送信される。方法600の制御フローは、次に、ブロックDに進む。
現在のアクセスが、対応するアドレスに関する第1の要求リクエストアクセスでない場合(条件付きブロック602)には、次に、対応するデータストリームに関する非伝搬ヒットが生じる。本明細書に用いられる場合、非伝搬ヒットは、アドレスに基づくいかなるプリフェッチリクエストも生成しないデータストリーム配列(例えば、配列410により識別されるデータストリーム)内におけるアドレス比較の一致、またはヒットを意味する。例えば、状況フィールド434に記憶された伝搬状態をともなう特定のデータストリーム配列410の要求リクエストアドレスフィールド420における記憶された値におけるアドレス一致は、非伝搬ヒットであってもよい。ここでも図4の表350を参照すると、アドレスX+1の第2の発生とアドレスX+3の第2および第3の発生とは非伝搬ヒットに対応する。スティッキ記憶ビットがこの特定のデータストリーム用に設定される場合(条件付きブロック610)には、方法600の制御フローはブロックDに進む。この場合、既に事前にプリフェッチされたキャッシュライン内のデータにアクセスが行われるため,プリフェッチリクエストは不要である。また、スティッキビットが既に設定されているため、要求リクエストのアクセスタイプの検査は不要である。これ以外の場合では、スティッキ記憶ビットが設定されていない場合(条件付きブロック610)には、方法600の制御フローは条件付きブロック608に進む。ここで要求リクエストのアクセスタイプが検査される。
ここで図8を参照すると、プロセッサにおける効率的なキャッシュラインのプリフェッチを継続する方法700の一実施形態が示される。当業者は前述の各方法と同様に、方法700を変更して、代替的な実施形態を導き出してもよい。また、この実施形態のステップは逐次的順序で示される。しかしながら、別の実施形態では、いくつかのステップは示すのとは異なる順序で実施されてもよく、いくつかのステップは並行実行されてもよく、いくつかのステップは他のステップと統合されてもよく、さらにいくつかのステップは無くてもよい。示される実施形態では、方法700の制御フローは、トレーニング状態であるデータストリーム内のアドレス一致により到達されるブロックBで開始される。
一実施形態では、要求リクエストがキャッシュヒット状況を有する場合(条件付きブロック702)には、ブロック704において、アドレスが一致したデータストリームは、更新されたそれ自体の交換戦略を有してもよい。例えば、LRUアルゴリズムに対応する値は、このデータストリームは最も使用されていないデータストリームであることを表示するために更新されてもよい。さらに、データストリーム状態は、別の状態に遷移するのではなく、トレーニング状態を維持してもよい。方法700の制御フローは、次に、ブロックCに進む。
一実施形態では、要求リクエストがキャッシュミス状況を有する場合(条件付きブロック702)には、ブロック706において、アドレス一致に対応するデータストリーム内の次の入力としてこのアドレスを記憶してもよい。ブロック708において、入力の数のカウンタがインクリメントされてもよい。このカウンタは、特定のデータストリームにおいて待ち行列に入っている入力の数を維持してもよい。データストリーム状態がトレーニング状態から伝搬状態にいつ遷移するべきかの決定にこのカウント値が用いられてもよい。一実施形態では、伝達された要求リクエストのアクセスタイプは検査される必要はなく、方法700の制御フローはブロック708から条件付きブロック710に進んでもよい。別の実施形態では、このアクセスタイプは検査されてもよく、要求リクエストが記憶動作である場合には、対応するスティッキビットが設定されてもよい。一実施形態では、このスティッキビットが一旦設定されると、その設定は維持され続ける。このような実施は、例えば、データストリームのトレーニング状態において生じた記憶動作が記憶動作を確実に予測することが、最新のデータストリームの伝搬状態において生じる場合があると考えられる場合に用いられてもよい。
入力カウンタの数が既定の閾値に達すると(条件付きブロック710)、データストリーム状態が更新される。ブロック712において、トレーニング状態から伝搬状態へと、この状態が遷移する。ブロック714において、プリフェッチパラメータが決定されてもよい。これらのパラメータはデルタ値およびプリフェッチ深度を含んでもよい。方法700の制御フローは、次に、ブロックEに進む。入力カウンタの数が既定の閾値に達しない場合(条件付きブロック710)には、方法700の制御フローは、次に、ブロックDに進む。
前述の実施形態がソフトウェアを備えてもよいことが留意される。このような実施形態では、方法および/またはメカニズムを実施するプログラム命令は伝達されてもよく、またはコンピュータ可読媒体に記憶される。プログラム命令を記憶するように構成された多くの種類の媒体が利用可能であり、ハードディスク、フロッピー(登録商標)ディスク、CD−ROM、DVD、フラッシュメモリ、プログラマブルROM(PROM)、ランダムアクセスメモリ(RAM)、および種々の他の形状の揮発性または不揮発性記憶装置が含まれる。さらに、記述されたコンピューティングシステムが、デスクトップコンピュータ、ラップトップコンピュータ、サーバ、携帯用コンピュータ装置、セットトップボックス、ルータなどの任意の適切なデバイスに用いられるプロセッサの一部でもよいことが理解される。
前述の実施形態は相当詳細に記載したが、多くの変更および変形は、当業者が前述の開示を完全に理解すると明らかとなるであろう。以下の特許請求の範囲は全てのこのような変更および変形を含むものとして解釈されることが意図される。

Claims (15)

  1. 下位レベルメモリにおける複数の連続するデータブロックに対応するデータストリームへのアクセスを検出し、
    前記アクセスを検出することと、前記データストリームへのキャッシュミスの数が既定の閾値に達していると決定することとに応答して、
    前記キャッシュミスの数が前記既定の閾値に達した後に書き込み許可をリクエストする前記データストリームへのアクセスが無い場合、下位レベルメモリから前記データストリームの一部を書き込み許可無しでプリフェッチし、
    前記キャッシュミスの数が前記既定の閾値に達した後に書き込み許可をリクエストする前記データストリームへのアクセスがある場合、下位レベルメモリから前記データストリームの一部を書き込み許可付きでプリフェッチするように構成されたプリフェッチユニットを備える、コンピューティングシステム。
  2. 前記アクセスを検出することと、前記データストリームへのキャッシュミスの数が既定の閾値に達していると決定することとに応答して、前記プリフェッチユニットが、
    前記アクセスが書き込み許可をリクエストし、前記アクセスが前記キャッシュミスの数を前記既定の閾値に達しさせると決定することに応答して、下位レベルメモリから前記データストリームの一部を書き込み許可付きでプリフェッチするようにさらに構成される、請求項1に記載のコンピューティングシステム。
  3. 前記プリフェッチユニットは、前記アクセスのアドレスと、初期のプリフェッチキャッシュラインのアドレスとの間の整数デルタ値を決定するようにさらに構成されている、請求項1に記載のコンピューティングシステム。
  4. 前記プリフェッチユニットは、前記データストリームに対応する特性データを記憶するようにさらに構成されている、請求項1に記載のコンピューティングシステム。
  5. 特定のデータストリームに対応する前記特性データは、データストリーム識別子(ID)、各要求リクエストの読み出し/書き込みアクセスタイプ、各要求リクエストのアドレス、要求リクエストのキャッシュヒット/ミス状況、および要求リクエストに対応する初期のプリフェッチアドレスのうちの少なくとも1つを含む、請求項4に記載のコンピューティングシステム。
  6. 前記特性データは表に記憶されており、
    回路が、前記キャッシュミスの数が前記既定の閾値に達した後に、書き込み許可をリクエストする前記データストリームへの第1のアクセスを検出することに応答してスティッキ記憶ビットを設定するようにさらに構成されており、
    前記スティッキ記憶ビットは一旦設定されると、前記データストリームデータが前記表内に有効な入力を有する間、その設定を維持する、請求項4に記載のコンピューティングシステム。
  7. 前記特性データは表に記憶されており、
    前記プリフェッチユニットは、新規のデータストリームのキャッシュミスアドレスが前記表に現在記憶されているデータストリームのアドレスに隣接しないことを検出することに応答して、前記新規のデータストリームを前記表に割り当てるようにさらに構成されている、請求項4に記載のコンピューティングシステム。
  8. 下位レベルメモリにおける複数の連続するデータブロックに対応するデータストリームへのアクセスを検出することと、
    前記アクセスを検出することと、前記データストリームへのキャッシュミスの数が既定の閾値に達していると決定することとに応答して、
    前記キャッシュミスの数が前記既定の閾値に達した後に書き込み許可をリクエストする前記データストリームへのアクセスが無い場合、下位レベルメモリから前記データストリームの一部を書き込み許可無しでプリフェッチすることと、
    前記キャッシュミスの数が前記既定の閾値に達した後に書き込み許可をリクエストする前記データストリームへのアクセスがある場合、下位レベルメモリから前記データストリームの一部を書き込み許可付きでプリフェッチすることと、を含む、方法。
  9. 前記アクセスを検出することと、前記データストリームへのキャッシュミスの数が既定の閾値に達していると決定することとに応答して、前記方法は、
    前記アクセスが書き込み許可をリクエストし、前記アクセスが前記キャッシュミスの数を前記既定の閾値に達しさせると決定することに応答して、前記下位レベルメモリからの前記データストリームの一部を書き込み許可付きでプリフェッチすることをさらに含む、請求項8に記載の方法。
  10. 現在の要求リクエストのアドレスと、初期の隣接しないプリフェッチキャッシュラインのアドレスとの間の整数デルタ値を決定することをさらに含む、請求項8に記載の方法。
  11. 記データストリームに対応する特性データを記憶することをさらに含む、請求項8に記載の方法。
  12. キャッシュに連結するように構成された第1のインターフェースと、
    下位レベルメモリに連結するように構成された第2のインターフェースと、
    制御回路とを備えるプリフェッチユニットであって、
    前記制御回路は、
    前記下位レベルメモリにおける複数の連続するデータブロックに対応するデータストリームへのアクセスを検出することと、前記データストリームへのキャッシュミスの数が既定の閾値に達していると決定することとに応答して、
    前記キャッシュミスの数が前記既定の閾値に達した後に書き込み許可をリクエストする前記データストリームへのアクセスが無い場合、下位レベルメモリから前記データストリームの一部を書き込み許可無しでプリフェッチし、
    前記キャッシュミスの数が前記既定の閾値に達した後に書き込み許可をリクエストする前記データストリームへのアクセスがある場合、前記下位レベルメモリから前記データストリームの一部を書き込み許可付きでプリフェッチするように構成されている、プリフェッチユニット。
  13. 前記アクセスを検出することと、前記データストリームへのキャッシュミスの数が既定の閾値に達していると決定することとに応答して、前記制御回路は、
    前記アクセスが書き込み許可をリクエストし、前記アクセスが前記キャッシュミスの数を前記既定の閾値に達しさせると決定することに応答して、前記下位レベルメモリから前記データストリームの一部を書き込み許可付きでプリフェッチするようにさらに構成されている、請求項12に記載のプリフェッチユニット。
  14. 特定のデータストリームに対応する特性データを記憶するように各々が構成された複数の入力を含む表をさらに備え、特定のデータストリームに対応する前記特性データは、データストリーム識別子(ID)、各要求リクエストの読み出し/書き込みアクセスタイプ、各要求リクエストのアドレス、要求リクエストのキャッシュヒット/ミス状況、および要求リクエストに対応する初期のプリフェッチアドレスのうちの少なくとも1つを含む、請求項12に記載のプリフェッチユニット。
  15. 前記下位レベルメモリからの前記データストリームの一部は、1つ以上の連続するキャッシュラインに対応する、請求項12に記載のプリフェッチユニット。
JP2012528890A 2009-09-11 2010-09-09 データストリームのためのストアアウェアプリフェッチ Active JP5615927B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/558,465 US8667225B2 (en) 2009-09-11 2009-09-11 Store aware prefetching for a datastream
US12/558,465 2009-09-11
PCT/US2010/048241 WO2011031837A1 (en) 2009-09-11 2010-09-09 Store aware prefetching for a datastream

Publications (2)

Publication Number Publication Date
JP2013504815A JP2013504815A (ja) 2013-02-07
JP5615927B2 true JP5615927B2 (ja) 2014-10-29

Family

ID=43242176

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012528890A Active JP5615927B2 (ja) 2009-09-11 2010-09-09 データストリームのためのストアアウェアプリフェッチ

Country Status (7)

Country Link
US (1) US8667225B2 (ja)
EP (1) EP2476060B1 (ja)
JP (1) JP5615927B2 (ja)
KR (1) KR101614867B1 (ja)
CN (1) CN102640124B (ja)
IN (1) IN2012DN02977A (ja)
WO (1) WO2011031837A1 (ja)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
US8832415B2 (en) * 2010-01-08 2014-09-09 International Business Machines Corporation Mapping virtual addresses to different physical addresses for value disambiguation for thread memory access requests
US8751748B2 (en) * 2010-01-15 2014-06-10 International Business Machines Corporation Reader set encoding for directory of shared cache memory in multiprocessor system
US8533399B2 (en) * 2010-01-15 2013-09-10 International Business Machines Corporation Cache directory look-up re-use as conflict check mechanism for speculative memory requests
US8509254B2 (en) * 2010-06-28 2013-08-13 Intel Corporation Direct memory access engine physical memory descriptors for multi-media demultiplexing operations
US8583894B2 (en) * 2010-09-09 2013-11-12 Advanced Micro Devices Hybrid prefetch method and apparatus
US8880847B2 (en) * 2010-09-28 2014-11-04 Texas Instruments Incorporated Multistream prefetch buffer
US9417998B2 (en) 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US9098418B2 (en) * 2012-03-20 2015-08-04 Apple Inc. Coordinated prefetching based on training in hierarchically cached processors
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
US9311251B2 (en) 2012-08-27 2016-04-12 Apple Inc. System cache with sticky allocation
GB2513042B (en) * 2013-01-15 2015-09-30 Imagination Tech Ltd Improved control of pre-fetch traffic
US9384136B2 (en) * 2013-04-12 2016-07-05 International Business Machines Corporation Modification of prefetch depth based on high latency event
WO2014202825A1 (en) * 2013-06-20 2014-12-24 Nokia Corporation Microprocessor apparatus
JP6119523B2 (ja) * 2013-09-20 2017-04-26 富士通株式会社 演算処理装置、演算処理装置の制御方法及びプログラム
WO2015089488A1 (en) 2013-12-12 2015-06-18 Memory Technologies Llc Channel optimized storage modules
JP5936152B2 (ja) * 2014-05-17 2016-06-15 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation メモリアクセストレース方法
US9529727B2 (en) 2014-05-27 2016-12-27 Qualcomm Incorporated Reconfigurable fetch pipeline
KR101757098B1 (ko) 2014-12-14 2017-07-26 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 메모리 액세스에 의한 효용성 기반 공격성 레벨 프리패칭
US9817764B2 (en) * 2014-12-14 2017-11-14 Via Alliance Semiconductor Co., Ltd Multiple data prefetchers that defer to one another based on prefetch effectiveness by memory access type
US9971694B1 (en) 2015-06-24 2018-05-15 Apple Inc. Prefetch circuit for a processor with pointer optimization
US10324832B2 (en) * 2016-05-25 2019-06-18 Samsung Electronics Co., Ltd. Address based multi-stream storage device access
US10042749B2 (en) 2015-11-10 2018-08-07 International Business Machines Corporation Prefetch insensitive transactional memory
JP6734760B2 (ja) 2015-11-10 2020-08-05 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation プリフェッチ・インセンシティブのトランザクション・メモリ
US10152419B2 (en) 2015-11-10 2018-12-11 International Business Machines Corporation Deferred response to a prefetch request
US10474576B2 (en) 2015-11-10 2019-11-12 International Business Machines Corporation Prefetch protocol for transactional memory
US9904624B1 (en) 2016-04-07 2018-02-27 Apple Inc. Prefetch throttling in a multi-core system
US10180905B1 (en) 2016-04-07 2019-01-15 Apple Inc. Unified prefetch circuit for multi-level caches
US10169240B2 (en) * 2016-04-08 2019-01-01 Qualcomm Incorporated Reducing memory access bandwidth based on prediction of memory request size
US10649904B2 (en) 2016-12-12 2020-05-12 Samsung Electronics Co., Ltd. System and method for store streaming detection and handling
US10331567B1 (en) 2017-02-17 2019-06-25 Apple Inc. Prefetch circuit with global quality factor to reduce aggressiveness in low power modes
KR102429429B1 (ko) 2017-03-24 2022-08-04 삼성전자주식회사 전자 장치 및 그 동작방법
CN109669880A (zh) * 2017-10-13 2019-04-23 展讯通信(上海)有限公司 一种数据预取方法及装置、微处理器
CN109408412B (zh) * 2018-10-24 2021-04-30 龙芯中科技术股份有限公司 内存预取控制方法、装置及设备
US10963249B2 (en) 2018-11-02 2021-03-30 International Business Machines Corporation Processor prefetcher mode governor for switching between prefetch modes
CN110427332B (zh) * 2019-08-05 2021-08-20 上海兆芯集成电路有限公司 数据预取装置、数据预取方法及微处理器
CN114065947B (zh) * 2021-11-15 2022-07-22 深圳大学 一种数据访问推测方法、装置、存储介质及电子设备

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778436A (en) 1995-03-06 1998-07-07 Duke University Predictive caching system and method based on memory access which previously followed a cache miss
US5848254A (en) 1996-07-01 1998-12-08 Sun Microsystems, Inc. Multiprocessing system using an access to a second memory space to initiate software controlled data prefetch into a first address space
US6401193B1 (en) 1998-10-26 2002-06-04 Infineon Technologies North America Corp. Dynamic data prefetching based on program counter and addressing mode
US6282614B1 (en) 1999-04-15 2001-08-28 National Semiconductor Corporation Apparatus and method for reducing the power consumption of a microprocessor with multiple levels of caches
US6457101B1 (en) 1999-12-20 2002-09-24 Unisys Corporation System and method for providing the speculative return of cached data within a hierarchical memory system
US6865652B1 (en) 2000-06-02 2005-03-08 Advanced Micro Devices, Inc. FIFO with undo-push capability
US6571318B1 (en) 2001-03-02 2003-05-27 Advanced Micro Devices, Inc. Stride based prefetcher with confidence counter and dynamic prefetch-ahead mechanism
JP4030314B2 (ja) * 2002-01-29 2008-01-09 富士通株式会社 演算処理装置
US7107408B2 (en) 2002-03-22 2006-09-12 Newisys, Inc. Methods and apparatus for speculative probing with early completion and early request
US7103725B2 (en) 2002-03-22 2006-09-05 Newisys, Inc. Methods and apparatus for speculative probing with early completion and delayed request
US7003633B2 (en) 2002-11-04 2006-02-21 Newisys, Inc. Methods and apparatus for managing probe requests
US7099999B2 (en) * 2003-09-30 2006-08-29 International Business Machines Corporation Apparatus and method for pre-fetching data to cached memory using persistent historical page table data
US7487296B1 (en) 2004-02-19 2009-02-03 Sun Microsystems, Inc. Multi-stride prefetcher with a recurring prefetch table
JP4532931B2 (ja) * 2004-02-25 2010-08-25 株式会社日立製作所 プロセッサ、および、プリフェッチ制御方法
US7836259B1 (en) 2004-04-02 2010-11-16 Advanced Micro Devices, Inc. Prefetch unit for use with a cache memory subsystem of a cache memory hierarchy
US7434004B1 (en) 2004-06-17 2008-10-07 Sun Microsystems, Inc. Prefetch prediction
US7350029B2 (en) * 2005-02-10 2008-03-25 International Business Machines Corporation Data stream prefetching in a microprocessor
US7380066B2 (en) 2005-02-10 2008-05-27 International Business Machines Corporation Store stream prefetching in a microprocessor
US7594078B2 (en) * 2006-02-09 2009-09-22 International Business Machines Corporation D-cache miss prediction and scheduling
US7917731B2 (en) * 2006-08-02 2011-03-29 Qualcomm Incorporated Method and apparatus for prefetching non-sequential instruction addresses
US20090106498A1 (en) 2007-10-23 2009-04-23 Kevin Michael Lepak Coherent dram prefetcher
US7958317B2 (en) * 2008-08-04 2011-06-07 International Business Machines Corporation Cache directed sequential prefetch

Also Published As

Publication number Publication date
JP2013504815A (ja) 2013-02-07
US20110066811A1 (en) 2011-03-17
EP2476060B1 (en) 2015-06-17
CN102640124A (zh) 2012-08-15
EP2476060A1 (en) 2012-07-18
US8667225B2 (en) 2014-03-04
IN2012DN02977A (ja) 2015-07-31
WO2011031837A1 (en) 2011-03-17
CN102640124B (zh) 2015-11-25
KR101614867B1 (ko) 2016-04-22
KR20120070584A (ko) 2012-06-29

Similar Documents

Publication Publication Date Title
JP5615927B2 (ja) データストリームのためのストアアウェアプリフェッチ
US9524164B2 (en) Specialized memory disambiguation mechanisms for different memory read access types
US9448936B2 (en) Concurrent store and load operations
US9940132B2 (en) Load-monitor mwait
US9213551B2 (en) Return address prediction in multithreaded processors
US9026705B2 (en) Interrupt processing unit for preventing interrupt loss
US7743232B2 (en) Multiple-core processor with hierarchical microcode store
US8166251B2 (en) Data prefetcher that adjusts prefetch stream length based on confidence
US8412911B2 (en) System and method to invalidate obsolete address translations
US8140769B2 (en) Data prefetcher
US20180349280A1 (en) Snoop filtering for multi-processor-core systems
US10338928B2 (en) Utilizing a stack head register with a call return stack for each instruction fetch
US20100318998A1 (en) System and Method for Out-of-Order Resource Allocation and Deallocation in a Threaded Machine
US11263012B2 (en) Method for migrating CPU state from an inoperable core to a spare core
US20130024647A1 (en) Cache backed vector registers
US10108548B2 (en) Processors and methods for cache sparing stores
WO2009054959A1 (en) Coherent dram prefetcher
US8046538B1 (en) Method and mechanism for cache compaction and bandwidth reduction
US8504805B2 (en) Processor operating mode for mitigating dependency conditions between instructions having different operand sizes
US11169812B2 (en) Throttling while managing upstream resources
JP2023550231A (ja) 局所性を欠くデータを対象とするメモリ要求のプリフェッチ無効化

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130708

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140327

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140430

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140731

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140910

R150 Certificate of patent or registration of utility model

Ref document number: 5615927

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250