JP2008117388A - キャッシュ及びキャッシュバイパス機能法 - Google Patents

キャッシュ及びキャッシュバイパス機能法 Download PDF

Info

Publication number
JP2008117388A
JP2008117388A JP2007275122A JP2007275122A JP2008117388A JP 2008117388 A JP2008117388 A JP 2008117388A JP 2007275122 A JP2007275122 A JP 2007275122A JP 2007275122 A JP2007275122 A JP 2007275122A JP 2008117388 A JP2008117388 A JP 2008117388A
Authority
JP
Japan
Prior art keywords
cache
memory
request
line
cache line
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
JP2007275122A
Other languages
English (en)
Other versions
JP4673353B2 (ja
Inventor
D Gaiser Brain
ブレイン・ディー・ガイザー
Patrick Knebel
パトリック・クネベル
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of JP2008117388A publication Critical patent/JP2008117388A/ja
Application granted granted Critical
Publication of JP4673353B2 publication Critical patent/JP4673353B2/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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels

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)

Abstract

【課題】キャッシュの機能を高める。
【解決手段】プロセッサ(102)をメインメモリ(106)に動作可能に結合させるためのキャッシュ(104)が提供された。前記キャッシュは、キャッシュメモリ(108)と、該キャッシュメモリに動作可能に結合されたキャッシュコントローラ(110)とを含む。前記キャッシュメモリか又は前記メインメモリに適合されることとなるメモリリクエストを、受け取るよう前記キャッシュコントローラが構成される。追加的には、キャッシュ活動情報を処理することによって、少なくとも1つの前記メモリリクエストが、前記キャッシュメモリをバイパスさせられるように、前記キャッシュコントローラが構成される。
【選択図】図1

Description

本発明は、キャッシュに関し、特にプロセッサをメインメモリに動作可能に結合させるキャッシュに関する。
コンピュータシステムは、プロセッサがメインメモリ内のデータにアクセスすることに一般に関連した明らかな時間遅延か又はレイテンシを低減させることにより、コンピューティング性能とスループットとを改善するために、キャッシュを頻繁に利用する。このようなコンピュータシステムは、1つか又は複数のキャッシュを用いる可能性があり、それらキャッシュは各々、キャッシュコントローラのような制御ロジックと共にキャッシュメモリを含む。一般には、キャッシュメモリの各々はメインメモリよりも小さく且つより高速であり、その結果、プロセッサは、キャッシュメモリによるデータのコピーに対し、メインメモリによるデータよりも、より迅速に且つ即座にアクセスすることができる。この目的を達成するために、コンピュータシステムは、システムプロセッサの最高メモリアクセス速度(すなわち、「要求レート(demand rate)」)を処理するのに十分なアクセス帯域幅を提供するメモリを有したキャッシュを頻繁に用いる。
典型的には、異なるタイプのプロセッサ仕事量は、異なる要求レートを要する。キャッシュが、その関連したプロセッサの最大要求レートを処理するように設計されていない場合には、キャッシュメモリに対してアクセスするための多くのリクエストが、ある期間の間、キュー(待ち行列)に入れられる必要がある。メモリリクエストが高速で継続する場合には、キューに入れられたメモリアクセスのうちのいくつかに対する結果としてのレイテンシがメインメモリへの直接アクセスに関連したレイテンシよりも長いレベルにまでおそらく、アクセスキューの長さが増長する。結果として、それらの期間の間、キャッシュが実際にはメモリアクセスレイテンシを延長させ、従って、コンピュータシステム内における性能障害となる。
こうした、性能における低下を防止するために、キャッシュは、典型的には、上述のように最大要求レートを処理するように設計され、提供するためにキャッシュメモリが必要とする広いアクセス帯域幅に起因して、該キャッシュが、複雑なキャッシュ設計と、相応の高価なキャッシュメモリとを頻繁に含む可能性がある。更には、いくつかのシステムにおいて、必要な帯域幅を提供するキャッシュをシステム設計者が実装することを、集積回路(IC)ピン配列、プリント回路基板(PCB)レイアウト、熱特性、設計の複雑性、製品化までの時間、及び製造コストのような様々な物理的制約か又は設計上の制約が、妨げる可能性があり、従って、設計者を、コンピュータシステム内おいて、キャッシュの実装を先行するより他に完全に手がない状態にする。
本発明の一実施例は、プロセッサ(102)をメインメモリ(106)に動作可能に結合させるためのキャッシュ(104)であって、キャッシュメモリ(108)と、前記キャッシュメモリ(108)に動作可能に結合されたキャッシュコントローラ(110)であって、該キャッシュメモリ(108)か又は前記メインメモリ(106)に適合されたメモリリクエストを受け取るよう構成された、キャッシュコントローラとを備え、キャッシュ活動情報を処理することによって、前記メモリリクエストのうちの少なくとも1つが、前記キャッシュメモリ(108)をバイパスさせられるように、前記キャッシュコントローラ(110)が更に構成されることからなる、キャッシュである。
キャッシング機能を高めることができる。
図1は、本発明の一実施形態、すなわち、コンピュータシステム100内において用いられるキャッシュ104を示す。ここで、該キャッシュは、プロセッサ102をメインメモリ106に結合させる。キャッシュ104は、キャッシュメモリ108と、該キャッシュメモリ108に動作可能に結合されたキャッシュコントローラ110とを含み、キャッシュメモリ108か又はメインメモリ106に適合される(又はキャッシュメモリ108か又はメインメモリ106によって条件が満たされる)、プロセッサ102から等のメモリリクエストを、受け取るよう構成される。キャッシュコントローラ110はまた、キャッシュ活動情報(キャッシュアクティビティ情報)を処理することによって、メモリリクエストのうちの少なくとも1つが、キャッシュメモリ108をバイパスさせられるように構成される。
同様に、図2は、図1のキャッシュ104のようなキャッシュを動作させる方法200のフローチャートを提供する。まず最初に、キャッシュのキャッシュメモリか又はメインメモリに適合されることになる(又はキャッシュメモリか又はメインメモリによって条件が満足される)メモリリクエストが受け取られる(動作202)。キャッシュの活動情報が処理されることによって、メモリリクエストのうちの少なくとも1つが、キャッシュメモリをバイパスさせられる(動作204)。
図3において、本発明の別の実施形態のブロック図、すなわち、コンピュータシステム300内において用いられるキャッシュ304が示されている。キャッシュ304は、プロセッサ302とメインメモリ306とを動作可能に結合する。オプションで、少なくとも1つの上位キャッシュ320が、プロセッサ302とキャッシュ304とを結合させることができる。キャッシュ304をメインメモリ306に結合させる1つか又は複数の下位キャッシュ(図示せず)を、他の実施形態に含めることができる。別の実施形態において、プロセッサ302か又は別のプロセッサかのいずれかに結合される、キャッシュ304と同じレベルに存在する(又は常駐する)他のキャッシュが、コンピュータシステム300内に存在することが可能である。
キャッシュ304は、メインメモリ306内に存在する(又は常駐する)データの一部のコピーを格納するよう構成されたキャッシュメモリ308を含む。キャッシュメモリ308は、典型的には、キャッシュラインのうちのあるグループとして編成され、該キャッシュラインの各々は、メインメモリ306における多数の連続したアドレス指定可能な位置のコピーを格納することができる。キャッシュラインタグに対するランダムアクセスを可能にするキャッシュタグアレイ316もまた、キャッシュ304内に提供される。各タグは、キャッシュメモリ308内のキャッシュラインに関連付けられており、メインメモリ306のいずれの位置がその特定のキャッシュラインにおいて格納されているかを示す。
キャッシュ304はまた、キャッシュ304のいくつかの機能を制御するキャッシュコントローラ310も含む。例えば、キャッシュコントローラ310は、キャッシュタグアレイ316によってキャッシュメモリ308の各キャッシュラインの状態を追跡し続ける。例えば、無効なキャッシュラインは、目下有効なデータを保持していないキャッシュラインである。有効で変更されていないキャッシュラインは、メインメモリ306内における対応するデータに一致するデータのコピーを保持するが、有効で変更されたキャッシュラインは、キャッシュライン内のデータがメインメモリ306内における対応するデータにもはや一致しないように更新されている。この場合には、別のキャッシュか又はプロセッサがメインメモリ306からそのデータを読み出す前に、キャッシュライン内のデータが、メインメモリ306内に書き戻されなければならない。
キャッシュコントローラ310はまた、キャッシュメモリ308とシステム300の他の部分とを含むアクセス活動(又はアクセス作用、又はアクセス機能)に基づいて、キャッシュメモリ308内の各キャッシュラインの状態を変更する。例えば、キャッシュコントローラ310が、有効で変更されたキャッシュラインをパージ(purge)し、次いで、該キャッシュラインをメインメモリ306へと書き戻して、別のキャッシュラインのためにキャッシュメモリ308内における場所を空ける場合には、該キャッシュコントローラ310は、そのキャッシュラインの状態を、有効且つ変更された状態から、無効に変化させる。典型的には、キャッシュコントローラ310は、変更・所有・排他・共有・無効状態(MOESI:Modified-Owned-Exclusive-Shared-Invalid)プロトコルのような所定のキャッシュコヒーレンシプロトコルに従って、キャッシュラインの状態変化を制御する。これらのキャッシュライン状態か又は他のキャッシュライン状態を含む他のキャッシュコヒーレンシプロトコルを、他の実施形態において利用することもできる。メインメモリ306の同じメモリアドレスの各コピーが、キャッシュ304内とコンピュータシステム300の他のキャッシュ内とで同じ値を保持し、その結果、システム300のアドレス空間全体が、全体を通して一定のままとなるということを保証するために、キャッシュコヒーレンシプロトコルの使用が役立つ。
図3において、キャッシュコントローラ310はまた、キャッシュタグキュー312も含む。該キャッシュタグキュー312は、キャッシュ304による処理を待っているキャッシュタグの先入れ先出し(FIFO)待ち行列として主に動作する。より具体的には、キャッシュメモリ308内のデータに対する、プロセッサ302からか又は上位キャッシュ320からの各アクセスリクエストが、キャッシュタグに関連付けられる。キャッシュコントローラ310は、キュー内の各キャッシュタグを取得し、タグアレイ316内において対応するタグを検索する。一致が見出された場合には、リクエストされたデータの有効なコピーが、キャッシュメモリ308内に存在し、そのキャッシュラインを使用して、該リクエストが、処理されることが可能となる。一致が見出されない場合には、該リクエストされたデータは、典型的には、メインメモリ306を用いてアクセスされなければならない。
メモリの読み出し及び書き込みリクエストを処理することに加えて、キャッシュコントローラ310はまた、キャッシュ304をプロセッサ302にか又は上位キャッシュ320に結合させるバス318のような接続されたバス上の活動を「スヌープする(又は探る:snoop)」、すなわち監視することができる。他のキャッシュも結合されることが可能であるメインメモリ306にキャッシュ304を結合させる第2のバス322を、類似の手法でスヌープすることもできる。スヌープすることにより、キャッシュメモリ308内のキャッシュラインの状態に影響を及ぼす可能性のある、コンピュータシステム300による他のメモリアクセス活動(又は作用)を、キャッシュコントローラ310が検出することができる。この同じ目的のために、キャッシュコントローラ310はまた、コンピュータシステム300の様々な構成要素によるブロードキャストメッセージを送出し且つ受け取ることができる。別の実施形態において、キャッシュコントローラ310は、システム300のキャッシュ間で共有されるキャッシュコヒーレンシディレクトリ(図3内には図示せず)にアクセスすることができ、その結果、システム300内の各キャッシュラインの状態を、該ディレクトリによって各キャッシュに対して知らせることが可能である。
キャッシュコントローラ310はまた、キャッシュメモリ308の過負荷状態を検出するようにか又は予測するように構成された制御モジュールとして作用するキャッシュメモリ過負荷検出モジュール314を含む。このような過負荷の検出か又は予測に基づいて、制御モジュール314がキャッシュコントローラ310に指示することによって、1つか又は複数の到来するメモリリクエストが、キャッシュメモリ308をバイパスさせられて、メインメモリ306へと導かれる。制御モジュール314を、キャッシュコントローラ310内において組み込むことができるか、又はキャッシュコントローラ310によってアクセスされるよう構成された別個の回路として実装することができる。
一実施形態において、消費されているキャッシュメモリ308によって提供される最大帯域幅の量か又は割合を示す任意の情報とすることが可能であるキャッシュ活動情報によって、キャッシュメモリ308の過負荷を制御モジュール314が検出するか又は予測する。例えば、制御モジュール314は、キャッシュメモリ318をプロセッサ302にか又は上位キャッシュ320に結合させるバス318の一部分を監視して、任意のフリーのバスサイクルが利用可能であるかどうかを決定することができる。利用可能でない場合には、キャッシュメモリ308の利用は、その最大の耐えうるレベルにおいてか又はその付近とすることができる。別の実施形態において、例えばプロセッサ302からの読み出し動作か或いはプロセッサ302又はメインメモリ306からのデータ更新動作を保持するキャッシュタグキュー312の長さを制御モジュール314が監視して、キャッシュメモリ308が、キュー312によって受け取られているメモリリクエストに、遅れずについて行くことができるかどうかを決定することができる。一実施例において、読み出し動作リクエストとデータ更新動作リクエストとが、データ読み出しキュー及びデータ更新キューのような別個のキャッシュタグキュー312内に保持される。キュー312内において待機しているアクティブなリクエストの数がより多くなればなるほど、キャッシュメモリ308は、それらのリクエストを処理することを更に滞らせ、該リクエストの各々が処理される前に更に長く待つ必要がある。他の実施形態において、制御モジュール314は、キャッシュ304の動作の他の態様か又は特性を監視して、キャッシュ活動情報をもたらすこともできる。
更に、キャッシュ活動情報を処理して、監視された値の最大値か或いは稼働平均(又は移動平均)のような1つか又は複数のキャッシュ活動統計値を生成することができる。例えば、1つのキャッシュ活動統計値は、最後の1分間にわたって平均化されたキャッシュタグキュー312の長さの稼働平均とすることができる。別のキャッシュ活動統計値は、最後の30秒間にわたるキャッシュメモリ308に結合されたバス318の利用の最大値とすることができる。多くの他のタイプの統計値もまた生成することができる。別の例において、様々なキャッシュ活動情報の統計値を組み合わせて、キャッシュメモリ308が過負荷である(従って、プロセッサ302、上位キャッシュ320か、又はコンピュータシステム300の別の構成要素から受け取られている1つか又は複数のメモリリクエストの処理が遅延される)か又はまもなく過負荷となるかどうかに関する指示をもたらすことができる。
一般には、キャッシュ活動情報か又は統計値が、ある所定レベルに達すると、制御モジュール314は、キャッシュメモリ308が過負荷状態であるか又は過負荷状態になるであろうこと、及び1つか又は複数の到来するリクエストがその時点でキャッシュメモリ308をバイパスするべきであるということを推定することができる。一例において、キャッシュメモリ308をバイパスする読み出しリクエストを、メインメモリ306に直接ルーティングすることができ、その結果、キャッシュメモリ308は、データがその中に保持されているとしても、該リクエストを処理しない。別の例において、キャッシュメモリ308内に存在しない、メインメモリ306から読み出されているデータを含むデータ更新リクエストは、該データがキャッシュメモリ308に格納されないようにキャッシュメモリ308をバイパスすることができる。更に、プロセッサ302によって提供されたデータによって発生するデータ更新リクエストは、キャッシュメモリ308をバイパスして、メインメモリ306に直接書き込まれることが可能である。到来する十分なリクエストが、キャッシュメモリ308をバイパスして、過負荷状態が緩和されていることをキャッシュ活動情報か又は統計値が示すと考えると、制御モジュール314は、将来のメモリリクエストがキャッシュメモリ308をバイパスする必要がないことを指示することができ、従って、キャッシュ304を、動作のより通常のモードに戻すことができる。一実施形態において、キャッシュメモリ308をバイパスすることを開始するために用いられる所定レベルは、バイパスモードをディセーブルにするために使用されるレベルと同じレベルとすることができる。別の実施形態において、バイパスすることをディセーブルにするために使用されるレベルは、バイパスを開始するために使用される所定レベルよりも低い値とすることができる。その場合には、バイパスモードをイネーブル及びディセーブルにするために2つの異なる統計上の又は情報のレベルを使用することによって、キャッシュメモリ308の活動の一時的な急増か又は低下に応答して、キャッシュ304内における通常モードとバイパスモードとの間での不必要な又は不当なスイッチンングを、結果として、ある形のヒステリシスを備えた制御モジュール314によって、防ぐことができる。
キャッシュコヒーレンシを維持するために、幾つかの実施形態は、キャッシュラインの現在の(目下の)状態を考慮することができる。該キャッシュラインの現在の状態が、キャッシュタグアレイ316内のタグ参照によって頻繁に判断されて、該キャッシュラインを含むメモリリクエストが、キャッシュメモリ308をバイパスすることが可能であるかどうかが決定される。図4は、リクエストされたキャッシュラインの現在の状態に提供されるこうした決定を行わせるための方法400を示す。一例において、キャッシュコントローラ310によって、概して、キャッシュメモリ308内に目下保持されていないキャッシュラインに対する任意の読み出し又は書き込みリクエスト(動作402)が、キャッシュメモリ308をバイパスすることが可能にされる(動作404)。リクエスト内に含まれるデータが、後のリクエストのためのアクセスレイテンシを改善するためにキャッシュメモリ308内において利用可能とならないことになるが、キャッシュメモリ308をバイパスすることが、別様にはキャッシュメモリ308の帯域幅の過負荷となる可能性のあるものを低減させることとなる。更には、リクエストに関連付けられたデータのコピーが、キャッシュメモリ308内に格納されることにはならないため、そのデータに関してキャッシュコヒーレンシ問題が発生しない。
キャッシュメモリ308内において保持された、有効で、且つ変更されていない、すなわち「クリーン(clean)」な、キャッシュラインの読み出し又は書き込みリクエストに関して、類似の状況が当てはまる。読み出しリクエストの場合(動作406)には、メインメモリ306内とキャッシュメモリ308内とにおけるデータコピーが一致するので、キャッシュコヒーレンシを維持させながら、関連付けられたデータを、メインメモリ306から読み出して、リクエストを行っているプロセッサ302か又は上位キャッシュ320に直接送ることができる(動作408)。同様に、有効で且つ変更されていないキャッシュラインの書き込みを含む書き込みリクエストの場合には(動作410)、該書き込みリクエストは、キャッシュメモリ308をバイパスすることができる(動作412)。追加的には、キャッシュコントローラ310は、キャッシュメモリ308内に格納された対応するキャッシュラインを、そのデータがメインメモリ306にちょうど書き込まれたばかりのデータにはもはや一致しない可能性があるため、無効にする(動作414)。
有効であるが、変更されている、すなわち「ダーティ(dirty)な」、キャッシュラインをメモリリクエストが含む場合には、キャッシュライン内における全てのデータが書き込まれることとなる完全なライン書き込みを含む書き込みリクエスト(動作416)のみが、キャッシュメモリ308をバイパスすることができ(動作418)、従って、関連付けられたデータがメインメモリ306内に直接的に書き込まれる。その場合には、キャッシュタグアレイ316内における影響を受けたキャッシュラインに関連付けられたキャッシュタグを更新することによって、キャッシュコントローラ310はまたキャッシュメモリ308内のキャッシュラインを無効にする(動作420)。別様には、メモリリクエストが、ダーティ且つ有効なキャッシュラインの読み出しか又は部分的な書き込みである場合には、キャッシュメモリ308をバイパスすることが利用可能ではない(動作422)。より具体的には、キャッシュメモリ308をバイパスすることを、このような読み出しリクエストが可能にされる場合には、プロセッサ302か又は上位キャッシュ320に送られるデータは、キャッシュメモリ308内の更新されたデータラインに一致しないこととなる。部分的な書き込みリクエストが、キャッシュメモリ308をバイパスすることを可能にされて、メインメモリ306に直接送られる場合には、キャッシュメモリ308内における対応するキャッシュラインにおける変更されたデータの全てが、メインメモリ306内において上書きされたかどうかを、キャッシュコントローラ310は知らない。結果として、そのキャッシュライン内におけるメインメモリ306内のデータは、プロセッサ302か又は上位キャッシュ320によって理解されるので、データの真の状態を表さないこととなる可能性がある。
幾つかのコンピュータシステム300において、キャッシュ304と、上位キャッシュ320と、プロセッサ302と、コンピュータシステム300の他の構成要素との間の伝達量を低減するために、キャッシュ包括性(cache-inclusiveness)が用いられる。キャッシュ包括性は、典型的には、図3の上位キャッシュ320のような上位キャッシュの有効な内容が、キャッシュ304のような次のより下位のキャッシュに複製されることを必要とする。結果として、ネゴシエーションの量、従って、キャッシュレベル間の伝達量が大幅に低減され、そのため、他のメモリリクエストのために、キャッシュ304を上位キャッシュ320に結合させるバス318のようなシステム300のバスのうちの幾つかにわたって、幾つかの利用可能な帯域幅が解放される。
本発明の実施形態のキャッシュコントローラ310は、1つか又は複数のキャッシュラインがキャッシュメモリ308内に割り当てられるが、そのキャッシュライン内における対応するデータは有効でないということを指示することにより、キャッシュ包括性をサポートすることができる。図5は、キャッシュバイパス機能を提供している間、キャッシュ包括性を維持するための方法500を提供する。例えば、キャッシュメモリ308内において保持されないキャッシュラインの場合に、上位キャッシュ320がメモリ読み出しリクエストをキャッシュ304に転送する場合(動作502)には、キャッシュコントローラ310は、該リクエストをメインメモリ306に送って(動作504)、キャッシュメモリ308内にキャッシュラインを割り当てる(動作506)こととなる。キャッシュコントローラ310が、キャッシュラインに対応するリクエストされたデータをメインメモリ306から受け取ると(動作508)、キャッシュコントローラ310は、上位キャッシュ320によってそのキャッシュラインをプロセッサ302に向けて送ることができる(動作510)。キャッシュコントローラ310はまた、次いで、読み出しリクエストがキャッシュメモリ308をバイパスすべきかどうかを判定することができる(動作512)。バイパスすべきでない場合には、キャッシュコントローラ310は、メインメモリ306から戻されたデータを、キャッシュメモリ308の割り当てられたキャッシュライン内へと格納することができ(動作514)、従って、キャッシュタグアレイ316内において適切なタグを更新することができる(動作516)。バイパスすべきである場合には、データが、キャッシュメモリ308内の関連付けられたキャッシュライン内に格納されていないが、代りに上位キャッシュ320に格納されていることを指示するために、キャッシュコントローラ310は、割り当てられたキャッシュラインに対してキャッシュタグアレイ316を、代りにマークする(印付ける)ことができる(動作518)。この方法を用いることにより、キャッシュ304は、キャッシュ包括性の下で要求されるように上位キャッシュ320に格納されたデータの全ての内容の指示を依然として保持する一方で、キャッシュメモリ308の予測されたか又は検出された過負荷を緩和させるために依然としてキャッシュメモリ308をバイパスする。
一実施形態において、キャッシュコントローラ310は、ある特定のメモリリクエスト分類に関連付けられるメモリリクエストをバイパスするよう構成される。例えば、キャッシュコントローラ310が、キャッシュメモリ308の過負荷状態を予測するか又は検出するある期間の間、キャッシュコントローラ310は、バイパスモードの場合に利用可能な全てのメモリリクエストに対して、あるタイプのデータについてか又はあるプログラムからのメモリリクエストに関して、キャッシュメモリ308をバイパスさせることができる。こうした機能は、例えば、他のものと比較されたあるタイプのデータをキャッシュすることからコンピュータシステム300がより利益を得る場合に、有益な可能性がある。更には、メモリリクエストの一部のみを、メインメモリ306に直接導くことにより、キャッシュメモリ308上における負荷をかなり低減することができ、従って、キャッシュ304が、非バイパスモードにおいて他のメモリリクエストを正常に処理することが可能となる。
この特定の実施形態の下において、メモリリクエストを、命令に対するリクエストとデータに対するリクエストとに分類するなどのように、多くの方法において分類することができる。更に、そのデータリクエストを、ローカルデータリクエストとリモートデータリクエストとに更に分類することができる。ローカルデータは、対称型マルチプロセッサ(SMP:symmetric multi-processor)システムのようなマルチプロセッサシステムのプロセッサ302の付近に配置されたメインメモリ306の一部内において格納されるデータとすることができる一方で、リモートデータは、別のプロセッサによって識別されたメインメモリ306の一部内に格納されることが可能である。メモリリクエストを、メインメモリ306内におけるリクエストされたデータのアドレスによって分類することもでき、その結果、ある範囲内におけるデータに対するメモリリクエストは、キャッシュメモリ308によって処理されるが、その他の範囲のデータに対するメモリリクエストは、キャッシュメモリ308をバイパスすることになる。
上述のように、本発明の様々な実施形態によって、1つか又は複数のメモリリクエストがキャッシュメモリをバイパスするように導かれ、該リクエストがメインメモリに直接ルーティングされることを、キャッシュが可能になる。一実施形態において、キャッシュに関連付けられたキャッシュコントローラは、その対応するキャッシュメモリの過負荷が予測されるか又は検出される時に、このバイパスモードを用いる。バイパスモードの実施において、コンピュータシステムの性能が、キャッシュを実装していないシステムに関連付けられた性能レベルより下にまで低下しないように、キャッシュコントローラは、キャッシュメモリの仕事量を低減させる。この機能によって、より低速のキャッシュメモリを用いた、より低コスト、より低性能のキャッシングシステムが、コンピュータシステム内に組み込まれることが可能となる一方で、システム性能の十分な向上を依然として提供する。更に、設計上の制約か又は物理的制約が、これまでキャッシュの使用を妨げていたシステム内に、キャッシュシステムを組み込むことができる。従って、本明細書内において検討されたシステム及び方法の下における十分な利点のために、より低速のキャッシュメモリを利用することができる一方で、一実施形態において、全てのメモリリクエストと、スヌープ要求と、キャッシュを制御すること及びキャッシュコヒーレンシを維持することが含められた他のタスクとに対して、最大システム仕事量の条件下において応答されるように、キャッシュコントローラと関連付けられたタグアレイとが設計されることを、保証することによって、キャッシング機能を高めることができる。
本明細書内において本発明のいくつかの実施形態が説明されてきたが、本発明の範囲によって包含される他の実施形態も可能である。例えば、本発明のいくつかの実施形態が、図3内に示された特定のコンピュータシステムアーキテクチャに関連して上記に説明されたが、上述のSMPシステムのようなマルチプロセッサ方式を含む多くの他のコンピュータアーキテクチャも、本発明の様々な態様から利益を得ることができる。例えば、本発明の様々な実施形態を実施しつつ、プロセッサの数、キャッシュの数、キャッシュレベルの数、及び他のパラメータのような、コンピュータシステムの様々な特性を、変更することができる。追加的には、本明細書内において説明されたキャッシュが、コンピュータシステム内において用いられる一方で、専用処理システム、組込み処理システム、及びそれらに類似したもの等の任意のタイプの処理システムについてのキャッシュに本発明の実施形態を組み込むことができる。本発明の更なる実施例を生成するために、一実施形態の態様を、それらの代替の実施形態の態様と組み合わせることができる。従って、本発明は特定の実施形態のコンテキストにおいて説明されてきたが、そのような説明は、例示のために提供され、限定のためではない。従って、本発明の正当な範囲は、添付の特許請求の範囲によってのみ定められる。
本発明の一実施形態によるキャッシュを用いるコンピュータシステムのブロック図である。 プロセッサをメインメモリに動作可能に結合させるためのキャッシュを動作させるための本発明の一実施形態による一方法のフローチャートである。 本発明の別の実施形態によるキャッシュを用いるコンピュータシステムのブロック図である。 本発明の別の実施形態による、図3のキャッシュのキャッシュメモリをバイパスすることをメモリリクエストが可能にされるかどうかを決定するための一方法のフローチャートである。 本発明の別の実施形態による、バイパス機能を提供している間、図3のキャッシュにおけるキャッシュ包括性を維持するための一方法のフローチャートである。
符号の説明
102 プロセッサ
104 キャッシュ
106 メインメモリ
108 キャッシュメモリ
110 キャッシュコントローラ

Claims (10)

  1. プロセッサ(102)をメインメモリ(106)に動作可能に結合させるためのキャッシュ(104)であって、
    キャッシュメモリ(108)と、
    前記キャッシュメモリ(108)に動作可能に結合されたキャッシュコントローラ(110)であって、該キャッシュメモリ(108)か又は前記メインメモリ(106)に適合されたメモリリクエストを受け取るよう構成された、キャッシュコントローラ
    とを備え、
    キャッシュ活動情報を処理することによって、前記メモリリクエストのうちの少なくとも1つが、前記キャッシュメモリ(108)をバイパスさせられるように、前記キャッシュコントローラ(110)が更に構成されていることからなる、キャッシュ。
  2. 前記キャッシュメモリ(108)内に保持されていない、キャッシュラインの読み出しリクエストか又は書き込みリクエストと、前記キャッシュメモリ(108)内に変更されずに保持されている、キャッシュラインの読み出しリクエスト、とのうちの1つを、前記少なくとも1つのメモリリクエストが含むことからなる、請求項1に記載のキャッシュ。
  3. 前記キャッシュメモリ(108)内の有効で変更されたキャッシュラインのライン書き込みに対する書き込みリクエストと、前記キャッシュメモリ(108)内の有効で変更されていないキャッシュラインに対する書き込みリクエスト、とのうちの1つを、前記少なくとも1つのメモリリクエストが含み、前記キャッシュコントローラ(110)は、前記書き込みリクエストに応答して前記キャッシュメモリ(108)内の前記キャッシュラインを無効にするよう構成されている、請求項1に記載のキャッシュ。
  4. 前記キャッシュメモリ(108)内に保持されていないキャッシュラインに対する読み出しリクエストを、前記少なくとも1つのメモリリクエストが含み、前記キャッシュコントローラ(110)が、前記読み出しリクエストに応答して、
    前記読み出しリクエストを、前記メインメモリ(106)に送り、
    前記キャッシュメモリ(108)内のキャッシュライン記憶域を、前記キャッシュラインに割り当て、
    前記メインメモリ(106)から前記キャッシュラインを受け取り、
    前記キャッシュラインを前記プロセッサ(102)に向けて送り、及び、
    前記キャッシュラインが前記キャッシュメモリ(108)内に格納されていないことを指示するために、前記割り当てられたキャッシュライン記憶域に関連付けられたキャッシュタグを更新する
    ように構成されていることからなる、請求項1に記載のキャッシュ。
  5. 前記キャッシュコントローラ(110)が、前記キャッシュメモリ(108)の過負荷状態を検出するか又は予測するよう更に構成されている、請求項1に記載のキャッシュ。
  6. プロセッサをメインメモリに動作可能に結合させるキャッシュを動作させるための方法(200)であって、
    前記キャッシュのキャッシュメモリか又は前記メインメモリに適合されることになるメモリリクエストを受け取り(202)、及び、
    前記キャッシュの活動情報を処理することによって、前記メモリリクエストのうちの少なくとも1つが、前記キャッシュメモリをバイパスさせられる(204)
    ことを含むことからなる、方法。
  7. 前記キャッシュメモリ内に保持されていないキャッシュラインの読み出しリクエストか又は書き込みリクエスト(402)と、前記キャッシュメモリ内において変更されずに保持されているキャッシュラインの読み出しリクエスト(406)、とのうちの1つを、前記少なくとも1つのメモリリクエストが含むことからなる、請求項6に記載の方法。
  8. 前記キャッシュメモリ内の有効で変更されたキャッシュラインのライン書き込みに対する書き込みリクエスト(416)と、前記キャッシュメモリ内の有効で変更されていないキャッシュラインに対する書き込みリクエスト(410)、とのうちの1つを、前記少なくとも1つのメモリリクエストが含み、前記方法が、前記書き込みリクエスト(410、416)に応答して、前記キャッシュメモリ内の前記キャッシュラインを無効にすること(414、420)を更に含むことからなる、請求項6に記載の方法。
  9. 前記キャッシュメモリ内に保持されていないキャッシュラインに対する読み出しリクエスト(502)を前記少なくとも1つのメモリリクエストが含み、前記方法が、前記読み出しリクエスト(502)に応答して、
    前記読み出しリクエストを、前記メインメモリに送り(504)、
    前記キャッシュメモリ内のキャッシュライン記憶域を、前記キャッシュラインに割り当て(506)、
    前記メインメモリから前記キャッシュラインを受け取り(508)、
    前記キャッシュラインを前記プロセッサに向けて送り(510)、及び、
    前記キャッシュラインが前記キャッシュメモリ内に格納されていないことを指示するために、前記割り当てられたキャッシュライン記憶域に関連付けられたキャッシュタグを更新する(518)
    ことを更に含むことからなる、請求項6に記載の方法。
  10. 前記キャッシュメモリの過負荷状態を検出することか又は予測することを更に含むことからなる、請求項6に記載の方法。
JP2007275122A 2006-10-31 2007-10-23 キャッシュ及びキャッシュバイパス機能法 Active JP4673353B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/554,827 US8683139B2 (en) 2006-10-31 2006-10-31 Cache and method for cache bypass functionality

Publications (2)

Publication Number Publication Date
JP2008117388A true JP2008117388A (ja) 2008-05-22
JP4673353B2 JP4673353B2 (ja) 2011-04-20

Family

ID=39331762

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007275122A Active JP4673353B2 (ja) 2006-10-31 2007-10-23 キャッシュ及びキャッシュバイパス機能法

Country Status (2)

Country Link
US (2) US8683139B2 (ja)
JP (1) JP4673353B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8762647B2 (en) 2011-06-15 2014-06-24 Kabushiki Kaisha Toshiba Multicore processor system and multicore processor
US9098414B2 (en) 2010-06-25 2015-08-04 Fujitsu Limited Multi-core processor system, computer product, and control method
US9613703B2 (en) 2013-10-25 2017-04-04 Winbond Electronics Corp. Semiconductor memory device

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8683139B2 (en) 2006-10-31 2014-03-25 Hewlett-Packard Development Company, L.P. Cache and method for cache bypass functionality
US7769955B2 (en) * 2007-04-27 2010-08-03 Arm Limited Multiple thread instruction fetch from different cache levels
US9275003B1 (en) * 2007-10-02 2016-03-01 Sandia Corporation NIC atomic operation unit with caching and bandwidth mitigation
US8892823B2 (en) 2007-12-28 2014-11-18 Emulex Corporation Data bus efficiency via cache line usurpation
EP2350875A1 (en) 2008-09-19 2011-08-03 Oracle International Corporation Storage-side storage request management
US10430338B2 (en) * 2008-09-19 2019-10-01 Oracle International Corporation Selectively reading data from cache and primary storage based on whether cache is overloaded
US8868831B2 (en) 2009-09-14 2014-10-21 Oracle International Corporation Caching data between a database server and a storage system
US8595437B1 (en) * 2008-11-21 2013-11-26 Nvidia Corporation Compression status bit cache with deterministic isochronous latency
US8700862B2 (en) * 2008-12-03 2014-04-15 Nvidia Corporation Compression status bit cache and backing store
KR101840238B1 (ko) * 2010-03-08 2018-03-20 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 데이터 저장 장치 및 방법
CN102622303B (zh) * 2011-01-30 2016-02-17 国际商业机器公司 一种内存过载控制的方法及装置
US8560779B2 (en) * 2011-05-20 2013-10-15 International Business Machines Corporation I/O performance of data analytic workloads
US9298636B1 (en) * 2011-09-29 2016-03-29 Emc Corporation Managing data storage
EP2761466B1 (en) 2011-09-30 2020-08-05 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy
EP2761472B1 (en) 2011-09-30 2020-04-01 Intel Corporation Memory channel that supports near memory and far memory access
CN103946826B (zh) 2011-09-30 2019-05-31 英特尔公司 用于在公共存储器通道上实现多级存储器层级的设备和方法
CN103946811B (zh) 2011-09-30 2017-08-11 英特尔公司 用于实现具有不同操作模式的多级存储器分级结构的设备和方法
US10592416B2 (en) 2011-09-30 2020-03-17 Oracle International Corporation Write-back storage cache based on fast persistent memory
CN102646073B (zh) 2012-04-28 2015-01-07 华为技术有限公司 数据处理方法及装置
US9645917B2 (en) * 2012-05-22 2017-05-09 Netapp, Inc. Specializing I/O access patterns for flash storage
US9063908B2 (en) 2012-05-31 2015-06-23 Oracle International Corporation Rapid recovery from loss of storage device cache
US9195598B2 (en) 2012-06-08 2015-11-24 International Business Machines Corporation Synchronous and asynchronous discard scans based on the type of cache memory
US9336150B2 (en) * 2012-06-08 2016-05-10 International Business Machines Corporation Performing asynchronous discard scans with staging and destaging operations
WO2014015409A1 (en) * 2012-07-24 2014-01-30 Institute Of Computer Science Of The Foundation For Research And Technology - Hellas (Ics-Forth) System and method for implementing ssd-based i/o caches
US9208099B2 (en) 2012-08-08 2015-12-08 International Business Machines Corporation Adjustment of the number of task control blocks allocated for discard scans
US8972645B2 (en) * 2012-09-19 2015-03-03 Hewlett-Packard Development Company, L.P. Request sent to storage device based on moving average
US9274971B2 (en) * 2012-11-27 2016-03-01 International Business Machines Corporation Low latency data exchange
US9047092B2 (en) * 2012-12-21 2015-06-02 Arm Limited Resource management within a load store unit
US9176892B2 (en) 2013-01-22 2015-11-03 International Business Machines Corporation Performing staging or destaging based on the number of waiting discard scans
US9965397B2 (en) * 2013-02-26 2018-05-08 Avago Technologies General Ip (Singapore) Pte. Ltd. Fast read in write-back cached memory
US10380021B2 (en) 2013-03-13 2019-08-13 Oracle International Corporation Rapid recovery from downtime of mirrored storage device
WO2014143036A1 (en) * 2013-03-15 2014-09-18 Intel Corporation Method for pinning data in large cache in multi-level memory system
US20150113221A1 (en) * 2013-03-15 2015-04-23 Herbert Hum Hybrid input/output write operations
US9798655B2 (en) 2013-09-20 2017-10-24 Oracle International Corporation Managing a cache on storage devices supporting compression
US10229161B2 (en) 2013-09-20 2019-03-12 Oracle International Corporation Automatic caching of scan and random access data in computing systems
US9568986B2 (en) * 2013-09-25 2017-02-14 International Business Machines Corporation System-wide power conservation using memory cache
CN105683930B (zh) * 2013-10-29 2019-05-31 上海宝存信息科技有限公司 用于数据存储系统的动态缓存方法和系统
BR102013031479B1 (pt) * 2013-12-06 2021-08-03 Smart Modular Technologies Industria De Componentes Eletrônicos Ltda Sistema adaptativo de memória cache em hardware
US9811469B2 (en) 2013-12-16 2017-11-07 Empire Technology Development Llc Sequential access of cache data
US9785568B2 (en) 2014-05-19 2017-10-10 Empire Technology Development Llc Cache lookup bypass in multi-level cache systems
US9857864B1 (en) * 2014-10-29 2018-01-02 Amazon Technologies, Inc. Systems and methods for reducing power consumption in a memory architecture
US20160179387A1 (en) * 2014-12-19 2016-06-23 Jayesh Gaur Instruction and Logic for Managing Cumulative System Bandwidth through Dynamic Request Partitioning
US9727463B2 (en) * 2015-05-22 2017-08-08 Nvidia Corporation Assymetric coherent caching for heterogeneous computing
US10261901B2 (en) * 2015-09-25 2019-04-16 Intel Corporation Method and apparatus for unneeded block prediction in a computing system having a last level cache and a multi-level system memory
KR102589298B1 (ko) 2016-05-11 2023-10-13 삼성전자주식회사 그래픽스 프로세싱 장치 및, 그래픽스 프로세싱 장치에서 캐시 바이패스를 제어하는 방법
EP3249541B1 (en) * 2016-05-27 2020-07-08 NXP USA, Inc. A data processor
US10133667B2 (en) 2016-09-06 2018-11-20 Orcle International Corporation Efficient data storage and retrieval using a heterogeneous main memory
CN107870872B (zh) * 2016-09-23 2021-04-02 伊姆西Ip控股有限责任公司 用于管理高速缓存的方法和设备
US10592142B2 (en) * 2016-09-30 2020-03-17 International Business Machines Corporation Toggling modal transient memory access state
US10331573B2 (en) 2016-11-04 2019-06-25 Oracle International Corporation Detection of avoidable cache thrashing for OLTP and DW workloads
US10599578B2 (en) * 2016-12-13 2020-03-24 Advanced Micro Devices, Inc. Dynamic cache bypassing
US10540281B2 (en) * 2017-01-17 2020-01-21 Arm Limited Cache allocation based on quality-of-service monitoring
US10424040B2 (en) * 2017-04-21 2019-09-24 Intel Corporation Dynamic allocation of cache based on instantaneous bandwidth consumption at computing devices
US10803039B2 (en) 2017-05-26 2020-10-13 Oracle International Corporation Method for efficient primary key based queries using atomic RDMA reads on cache friendly in-memory hash index
US10719446B2 (en) 2017-08-31 2020-07-21 Oracle International Corporation Directly mapped buffer cache on non-volatile memory
US10802766B2 (en) 2017-09-29 2020-10-13 Oracle International Corporation Database with NVDIMM as persistent storage
US11086876B2 (en) 2017-09-29 2021-08-10 Oracle International Corporation Storing derived summaries on persistent memory of a storage device
US10956335B2 (en) 2017-09-29 2021-03-23 Oracle International Corporation Non-volatile cache access using RDMA
US10732836B2 (en) 2017-09-29 2020-08-04 Oracle International Corporation Remote one-sided persistent writes
US20190042451A1 (en) * 2018-02-20 2019-02-07 Intel Corporation Efficient usage of bandwidth of devices in cache applications
US10802969B2 (en) * 2019-02-04 2020-10-13 Arm Limited Interconnect and method of operation of such an interconnect
GB2584440B (en) * 2019-06-03 2021-12-08 Advanced Risc Mach Ltd Cache arrangement for graphics processing systems
US11182291B2 (en) 2020-02-03 2021-11-23 International Business Machines Corporation Using multi-tiered cache to satisfy input/output requests
US11526449B2 (en) * 2020-08-31 2022-12-13 Advanced Micro Devices, Inc. Limited propagation of unnecessary memory updates
US11188473B1 (en) * 2020-10-30 2021-11-30 Micron Technology, Inc. Cache release command for cache reads in a memory sub-system

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05233450A (ja) * 1992-02-24 1993-09-10 Hitachi Ltd キャッシュモード選択方法
JPH08137752A (ja) * 1994-11-04 1996-05-31 Fujitsu Ltd 情報処理装置
US5717894A (en) * 1994-03-07 1998-02-10 Dell Usa, L.P. Method and apparatus for reducing write cycle wait states in a non-zero wait state cache system
US6496902B1 (en) * 1998-12-31 2002-12-17 Cray Inc. Vector and scalar data cache for a vector multiprocessor
WO2005026965A1 (en) * 2003-09-11 2005-03-24 Intel Corporation Adaptive cache algorithm for temperature sensitive memory
JP2006048182A (ja) * 2004-07-30 2006-02-16 Fujitsu Ltd 記憶制御装置、ムーブインバッファ制御方法およびプログラム

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4075686A (en) 1976-12-30 1978-02-21 Honeywell Information Systems Inc. Input/output cache system including bypass capability
US4189770A (en) 1978-03-16 1980-02-19 International Business Machines Corporation Cache bypass control for operand fetches
US4268907A (en) 1979-01-22 1981-05-19 Honeywell Information Systems Inc. Cache unit bypass apparatus
US4317168A (en) 1979-11-23 1982-02-23 International Business Machines Corporation Cache organization enabling concurrent line castout and line fetch transfers with main storage
US4484267A (en) * 1981-12-30 1984-11-20 International Business Machines Corporation Cache sharing control in a multiprocessor
US4942518A (en) 1984-06-20 1990-07-17 Convex Computer Corporation Cache store bypass for computer
US4646233A (en) 1984-06-20 1987-02-24 Weatherford James R Physical cache unit for computer
US4851993A (en) 1987-04-20 1989-07-25 Amdahl Corporation Cache move-in bypass
US4888679A (en) 1988-01-11 1989-12-19 Digital Equipment Corporation Method and apparatus using a cache and main memory for both vector processing and scalar processing by prefetching cache blocks including vector data elements
JP2679363B2 (ja) 1989-06-20 1997-11-19 日本電気株式会社 マイクロプロセッサ
US4998221A (en) 1989-10-31 1991-03-05 International Business Machines Corporation Memory by-pass for write through read operations
EP0442116A3 (en) 1990-02-13 1993-03-03 Hewlett-Packard Company Pipeline method and apparatus
US5265232A (en) 1991-04-03 1993-11-23 International Business Machines Corporation Coherence control by data invalidation in selected processor caches without broadcasting to processor caches not having the data
US5625793A (en) 1991-04-15 1997-04-29 International Business Machines Corporation Automatic cache bypass for instructions exhibiting poor cache hit ratio
US5708784A (en) * 1991-11-27 1998-01-13 Emc Corporation Dual bus computer architecture utilizing distributed arbitrators and method of using same
US5510934A (en) 1993-12-15 1996-04-23 Silicon Graphics, Inc. Memory system including local and global caches for storing floating point and integer data
US5515521A (en) * 1994-02-08 1996-05-07 Meridian Semiconductor, Inc. Circuit and method for reducing delays associated with contention interference between code fetches and operand accesses of a microprocessor
US6161208A (en) 1994-05-06 2000-12-12 International Business Machines Corporation Storage subsystem including an error correcting cache and means for performing memory to memory transfers
US5704058A (en) * 1995-04-21 1997-12-30 Derrick; John E. Cache bus snoop protocol for optimized multiprocessor computer system
US5854943A (en) 1996-08-07 1998-12-29 Hewlett-Packard Company Speed efficient cache output selector circuitry based on tag compare and data organization
US6131155A (en) 1997-11-07 2000-10-10 Pmc Sierra Ltd. Programmer-visible uncached load/store unit having burst capability
US6212603B1 (en) 1998-04-09 2001-04-03 Institute For The Development Of Emerging Architectures, L.L.C. Processor with apparatus for tracking prefetch and demand fetch instructions serviced by cache memory
US6356980B1 (en) * 1999-11-09 2002-03-12 International Business Machines Corporation Method and system for bypassing cache levels when casting out from an upper level cache
US6370618B1 (en) * 1999-11-09 2002-04-09 International Business Machines Corporation Method and system for allocating lower level cache entries for data castout from an upper level cache
US6446145B1 (en) * 2000-01-06 2002-09-03 International Business Machines Corporation Computer memory compression abort and bypass mechanism when cache write back buffer is full
US6347360B1 (en) * 2000-02-25 2002-02-12 Sun Microsystems, Inc. Apparatus and method for preventing cache data eviction during an atomic operation
KR100798020B1 (ko) 2000-04-12 2008-01-24 엔엑스피 비 브이 데이터 처리 회로, 데이터 처리 회로를 포함하는 장치, 그리고 장치를 위한 컴퓨터 독출 가능 저장 매체
US6636949B2 (en) 2000-06-10 2003-10-21 Hewlett-Packard Development Company, L.P. System for handling coherence protocol races in a scalable shared memory system based on chip multiprocessing
US6668308B2 (en) 2000-06-10 2003-12-23 Hewlett-Packard Development Company, L.P. Scalable architecture based on single-chip multiprocessing
US6434673B1 (en) * 2000-06-30 2002-08-13 Intel Corporation Optimized configurable scheme for demand based resource sharing of request queues in a cache controller
US6751705B1 (en) 2000-08-25 2004-06-15 Silicon Graphics, Inc. Cache line converter
US6662273B1 (en) * 2000-09-29 2003-12-09 Intel Corporation Least critical used replacement with critical cache
US20020087798A1 (en) * 2000-11-15 2002-07-04 Vijayakumar Perincherry System and method for adaptive data caching
FR2820850B1 (fr) 2001-02-15 2003-05-09 Bull Sa Controleur de coherence pour ensemble multiprocesseur, module et ensemble multiprocesseur a architecture multimodule integrant un tel controleur
US6662272B2 (en) * 2001-09-29 2003-12-09 Hewlett-Packard Development Company, L.P. Dynamic cache partitioning
US6704844B2 (en) * 2001-10-16 2004-03-09 International Business Machines Corporation Dynamic hardware and software performance optimizations for super-coherent SMP systems
US20030115402A1 (en) 2001-11-16 2003-06-19 Fredrik Dahlgren Multiprocessor system
US6973544B2 (en) 2002-01-09 2005-12-06 International Business Machines Corporation Method and apparatus of using global snooping to provide cache coherence to distributed computer nodes in a single coherent system
US6957305B2 (en) 2002-08-29 2005-10-18 International Business Machines Corporation Data streaming mechanism in a microprocessor
US7467377B2 (en) 2002-10-22 2008-12-16 Intel Corporation Methods and apparatus for compiler managed first cache bypassing
US7107410B2 (en) 2003-01-07 2006-09-12 Hewlett-Packard Development Company, L.P. Exclusive status tags
US7469321B2 (en) 2003-06-25 2008-12-23 International Business Machines Corporation Software process migration between coherency regions without cache purges
US7484043B2 (en) 2003-06-25 2009-01-27 International Business Machines Corporation Multiprocessor system with dynamic cache coherency regions
US7321956B2 (en) 2004-03-25 2008-01-22 International Business Machines Corporation Method and apparatus for directory-based coherence with distributed directory management utilizing prefetch caches
US7363432B2 (en) 2004-03-25 2008-04-22 International Business Machines Corporation Method and apparatus for directory-based coherence with distributed directory management
US7418551B2 (en) * 2004-07-06 2008-08-26 Intel Corporation Multi-purpose register cache
JP4673584B2 (ja) 2004-07-29 2011-04-20 富士通株式会社 キャッシュメモリ装置、演算処理装置及びキャッシュメモリ装置の制御方法
US7228388B2 (en) 2004-11-19 2007-06-05 International Business Machines Corporation Enabling and disabling cache bypass using predicted cache line usage
US20060179240A1 (en) 2005-02-09 2006-08-10 International Business Machines Corporation System and method for algorithmic cache-bypass
US7383397B2 (en) 2005-03-29 2008-06-03 International Business Machines Corporation Method and apparatus for filtering snoop requests using a scoreboard
US7596662B2 (en) * 2006-08-31 2009-09-29 Intel Corporation Selective storage of data in levels of a cache memory
US8683139B2 (en) 2006-10-31 2014-03-25 Hewlett-Packard Development Company, L.P. Cache and method for cache bypass functionality

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05233450A (ja) * 1992-02-24 1993-09-10 Hitachi Ltd キャッシュモード選択方法
US5717894A (en) * 1994-03-07 1998-02-10 Dell Usa, L.P. Method and apparatus for reducing write cycle wait states in a non-zero wait state cache system
JPH08137752A (ja) * 1994-11-04 1996-05-31 Fujitsu Ltd 情報処理装置
US6496902B1 (en) * 1998-12-31 2002-12-17 Cray Inc. Vector and scalar data cache for a vector multiprocessor
WO2005026965A1 (en) * 2003-09-11 2005-03-24 Intel Corporation Adaptive cache algorithm for temperature sensitive memory
JP2006048182A (ja) * 2004-07-30 2006-02-16 Fujitsu Ltd 記憶制御装置、ムーブインバッファ制御方法およびプログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9098414B2 (en) 2010-06-25 2015-08-04 Fujitsu Limited Multi-core processor system, computer product, and control method
US8762647B2 (en) 2011-06-15 2014-06-24 Kabushiki Kaisha Toshiba Multicore processor system and multicore processor
US9613703B2 (en) 2013-10-25 2017-04-04 Winbond Electronics Corp. Semiconductor memory device

Also Published As

Publication number Publication date
US9405696B2 (en) 2016-08-02
US20080104329A1 (en) 2008-05-01
US20140143503A1 (en) 2014-05-22
JP4673353B2 (ja) 2011-04-20
US8683139B2 (en) 2014-03-25

Similar Documents

Publication Publication Date Title
JP4673353B2 (ja) キャッシュ及びキャッシュバイパス機能法
US7234029B2 (en) Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US8359414B2 (en) Retry mechanism
US8015365B2 (en) Reducing back invalidation transactions from a snoop filter
US5778422A (en) Data processing system memory controller that selectively caches data associated with write requests
US9619390B2 (en) Proactive prefetch throttling
KR102531264B1 (ko) 오버라이드 가능한 무효화를 갖는 판독 트랜잭션
US20040049641A1 (en) System and method for controlling prefetching
EP1035476A1 (en) Multiprocessing system employing pending tags to maintain cache coherence
US6574710B1 (en) Computer cache system with deferred invalidation
US5559987A (en) Method and apparatus for updating a duplicate tag status in a snoop bus protocol based computer system
US8595443B2 (en) Varying a data prefetch size based upon data usage
CN113853590A (zh) 伪随机路选择
KR101472967B1 (ko) 라이트 백 동작을 수행하는 캐시 메모리, 이의 동작 방법, 및 이를 포함하는 시스템
US8332592B2 (en) Graphics processor with snoop filter
US8041898B2 (en) Method, system and apparatus for reducing memory traffic in a distributed memory system
US7797495B1 (en) Distributed directory cache
US6678800B1 (en) Cache apparatus and control method having writable modified state
JP4904802B2 (ja) キャッシュメモリ及びプロセッサ
JP4504134B2 (ja) システム制御装置、投機フェッチ方法および情報処理装置
US8856444B2 (en) Data caching method
EP3332329B1 (en) Device and method for prefetching content to a cache memory
WO2007110898A1 (ja) マルチプロセッサシステムおよびマルチプロセッサシステムの動作方法
JP2003015955A (ja) キャッシュコントローラ及びコンピュータシステム
WO2007110914A1 (ja) マルチプロセッサシステムおよびマルチプロセッサシステムの動作方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100309

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100609

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100614

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100907

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4673353

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140128

Year of fee payment: 3

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

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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