JP2013505488A - 読み取り及び書き込みアウェア・キャッシュを制御する方法、装置、プログラム、キャッシュ・コントローラ - Google Patents

読み取り及び書き込みアウェア・キャッシュを制御する方法、装置、プログラム、キャッシュ・コントローラ Download PDF

Info

Publication number
JP2013505488A
JP2013505488A JP2012529199A JP2012529199A JP2013505488A JP 2013505488 A JP2013505488 A JP 2013505488A JP 2012529199 A JP2012529199 A JP 2012529199A JP 2012529199 A JP2012529199 A JP 2012529199A JP 2013505488 A JP2013505488 A JP 2013505488A
Authority
JP
Japan
Prior art keywords
cache
area
access request
cache line
read
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
JP2012529199A
Other languages
English (en)
Other versions
JP5511965B2 (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.)
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 JP2013505488A publication Critical patent/JP2013505488A/ja
Application granted granted Critical
Publication of JP5511965B2 publication Critical patent/JP5511965B2/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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/27Using a specific cache architecture
    • G06F2212/271Non-uniform cache access [NUCA] architecture
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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

【課題】キャッシュにおいて読み取り及び書き込みアウェア・キャッシュを提供するためのメカニズムを提供する。
【解決手段】このメカニズムは、大きなキャッシュを高頻度読み取り領域及び高頻度書き込み領域に分割する。このメカニズムは、不均一キャッシュ・アーキテクチャの置換ポリシにおいて、読み取り/書き込み頻度を考慮する。頻繁に書き込まれるキャッシュ・ラインは、より遠いバンクのうちの1つに配置される。頻繁に読み取られるキャッシュ・ラインは、より近いバンクのうちの1つに配置される。高頻度読み取り及び高頻度書き込み領域のサイズの比は、静的であっても、又は動的であってもよい。高頻度読み取り領域と、高頻度書き込み領域との間の境界は、明確であっても、又はファジーであってもよい。
【選択図】図4

Description

本願は、全般的に、改善されたデータ処理装置及び方法に関し、特に、読み取り及び書き込みアウェア・キャッシュを提供する装置及び方法に関する。
キャッシュは、データ転送の速度を上げるために使用され、データのステージング領域としての機能を果たす。メモリ・キャッシュは、命令実行、データ検索、及びデータ更新の速度を上げ、そのコンテンツは常に変化する。メモリ・キャッシュすなわち「CPUキャッシュ」は、メインメモリと中央処理ユニット(CPU)との橋渡しをするメモリ・バンクである。メモリ・キャッシュは、メインメモリよりも高速であり、命令の実行並びにデータの読み取り及び書き込みを、より高速で行うことを可能にする。命令及びデータは、キャッシュ「ライン」として知られる固定ブロックで、メインメモリからキャッシュに転送される。
大きなキャッシュについては、そのすべての部分がCPUなどの所定のポイントから同じレイテンシでアクセス可能ではない。したがって、大きなキャッシュの設計のための新たなキャッシュ・アーキテクチャとして、不均一キャッシュ・アーキテクチャ(NUCA:Non−uniform cache architecture)が生み出された。NUCA設計では、キャッシュは、バンクの配置、異なる配線遅延及びレイテンシのために、アクセス・ポイント(CPUなど)からのアクセス遅延が異なる複数のバンクに分割される。NUCAにおいて見出される異なるレイテンシ特性をインテリジェントに管理することで、メモリ・システムの性能が改善される。
動的なNUCA(D−NUCA:Dynamic NUCA)設計では、バンクのいずれか1つにラインが配置される。D−NUCAは、従来のものと異なるキャッシュ配置及びデータ移動ポリシを使用して、高頻度でアクセスされるデータを、より近いバンクに置くことができる。処理ユニットに対し、第1のバンクが第2のバンクよりも短いレイテンシを有する場合、第1のバンクは第2のバンクに比べて「より近い」と定義される。したがって、より近いバンクからのデータには、より迅速にアクセス可能である。
例示のための一実施形態では、データ処理システムにおける、読み取り及び書き込みアウェア・キャッシュに関する方法が提供される。方法は、キャッシュ・コントローラがキャッシュ・アクセス要求を処理ユニットから受けるステップを含む。ロードのキャッシュ・アクセス要求がキャッシュ・ミスを発生させると、キャッシュ・コントローラは、データのキャッシュ・ラインをキャッシュの高頻度読み取り領域内にロードする。キャッシュは、バンクのアレイを含む。高頻度読み取り領域は、処理ユニットに近いバンクを含む。方法は、キャッシュ・コントローラが、キャッシュ・ストア・ミスの結果をキャッシュの高頻度書き込み領域に記憶するステップをさらに含む。高頻度書き込み領域は、処理ユニットから遠いバンクを含む。
他の実施形態では、コンピュータ可読プログラムを有するコンピュータ使用可能又は可読媒体を含むコンピュータ・プログラム製品が提供される。コンピュータ可読プログラムは、コンピューティング・デバイス上で実行されると、本方法の例示のための実施形態に関して上記で概要を述べた様々な個々の動作及び動作の組み合わせをコンピューティング・デバイスに実行させる。
例示のためのさらに別の実施形態では、読み取り及び書き込みアウェア・キャッシュに関する装置が提供される。この装置は、処理ユニットと、バンクのアレイを含むキャッシュ・アレイと、キャッシュ・アレイ及び処理ユニットに結合されたキャッシュ・コントローラとを含む。バンクのアレイは、高頻度読み取り領域及び高頻度書き込み領域を含む。高頻度読み取り領域は、バンクのアレイの中で、処理ユニットに近いバンクを含む。高頻度書き込み領域は、バンクのアレイの中で、処理ユニットからより遠いバンクを含む。キャッシュ・コントローラは、処理ユニットからキャッシュ・アクセス要求を受けるよう構成されている。アクセスが、キャッシュ・ミスを発生させるロードであれば、キャッシュ・コントローラは、データのキャッシュ・ラインを高頻度読み取り領域内にロードする。キャッシュ・ミスを発生させるストアに関しては、データのキャッシュ・ラインがキャッシュの高頻度書き込み領域内に配置されるよう、キャッシュ・コントローラはさらに構成されている。
本発明のこれらの特徴及び利点、並びに他の特徴及び利点が、以下の本発明の例示の実施形態の詳細な説明に記載されるか、又はこの説明を考慮することで当業者には明らかとなる。
例示のための実施形態の以下の詳細な説明を添付の図面と併せて読み、参照することで、本発明、並びにその好適な使用方法、並びにさらなる目的及び利点が、最もよく理解される。
例示のための実施形態の各側面が実装され得るデータ処理システムのブロック図である。 例示のための実施形態の各側面が実装され得る不均一キャッシュ・アーキテクチャを示すブロック図である。 例示のための実施形態による読み取り及び書き込みアウェア不均一キャッシュ・アーキテクチャを示すブロック図である。 例示のための実施形態による読み取り及び書き込みアウェア・キャッシュのハードウェア・サポートを示すブロック図である。 例示のための実施形態による読み取り及び書き込みアウェア・キャッシュのキャッシュ・コントローラの動作を示すフローチャートである。
例示のための実施形態は、読み取り及び書き込みアウェア・キャッシュを提供するメカニズムを提供する。このメカニズムは、大きなキャッシュを高頻度読み取り領域及び高頻度書き込み領域に分割する。このメカニズムは、不均一キャッシュ・アーキテクチャの置換ポリシにおいて、読み取り/書き込み頻度を考慮する。高頻度書き込みキャッシュ・ラインは、より遠いバンクのうちの1つに配置される。高頻度読み取りキャッシュ・ラインは、より近いバンクのうちの1つに配置される。高頻度読み取り及び高頻度書き込み領域のサイズの比は、静的であっても、又は動的であってもよい。高頻度読み取り領域と、高頻度書き込み領域との間の境界は、明確であってもよいし、ファジー(fuzzy)であってもよい。
したがって、例示のための実施形態は、分散型データ処理環境、単一データ処理デバイス、又は同様のものを含む、多数の異なるタイプのデータ処理環境において利用され得る。例示のための実施形態の特定の構成要素及び機能性について記載するためのコンテキストを提供するべく、以下、例示のための実施形態の各側面が実装され得る例示の環境として図1及び2を提供する。図1及び2に付随する説明は、主として単一データ処理デバイス実装に焦点を当てるが、これは例でしかなく、本発明の特徴に関していかなる制限を提示することも、暗示することも目的としていない。反対に、例示のための実施形態は、分散データ処理環境を含むものとする。
以下、図面を参照する。特に図1及び2を参照すると、本発明の例示のための実施形態が実装され得るデータ処理環境の例示の図が提供されている。当然のことながら、図1及び2は例でしかなく、本発明の側面又は実施形態が実装され得る環境に関していかなる制限を主張することも暗示することも目的としていない。示される環境に対する多数の変更が、本発明の範囲から逸脱することなく加えられ得る。
以下、図面を参照する。図1は、例示のための実施形態の各側面が実装され得るデータ処理システムのブロック図である。データ処理システム100は、例示のための実施形態に関して、プロセスを実装するコンピュータ使用可能プログラム・コード又は命令が位置し得るコンピュータの例である。この例示では、データ処理システム100は、通信ファブリック102を含み、これは、プロセッサ・ユニット104、メモリ106、永続性記憶装置108、通信ユニット110、入出力(I/O)ユニット112、及びディスプレイ114間の通信を提供する。
プロセッサ・ユニット104は、メモリ106内にロードされ得るソフトウェアの命令を実行する働きをする。プロセッサ・ユニット104は、特定の実装に応じて、1つ以上のプロセッサのセットであってもよく、又はマルチ・プロセッサ・コアであってもよい。さらに、プロセッサ・ユニット104は、単一チップ上にメイン・プロセッサが二次プロセッサとともに存在する1つ以上の異種プロセッサ・システムを使用して実装されてもよい。別の例として、プロセッサ・ユニット104は、同じタイプのプロセッサを複数含む対称型マルチプロセッサ・システムであってもよい。
メモリ106及び永続性記憶装置108は、記憶デバイス116の例である。記憶デバイスは、例えば、限定はされないが、データ、関数形式のプログラム・コード、若しくはその他の適切な情報、又はそのいずれかの組み合わせなどの情報を、一時的若しくは永久的又はその両方で記憶できる任意のハードウェア部品である。こうした例では、メモリ106は、例えば、ランダム・アクセス・メモリ又はその他任意の適切な揮発性若しくは不揮発性記憶デバイスとしてよい。永続性記憶装置108は、特定の実装に応じて様々な形式をとり得る。例えば、永続性記憶装置108は、1つ以上のコンポーネント又はデバイスを含んでもよい。例えば、永続性記憶装置108は、ハード・ドライブ、フラッシュ・メモリ、書き換え可能な光ディスク、書き換え可能な磁気テープ、又は上記のものの何らかの組み合わせとしてもよい。さらに、永続性記憶装置108によって使用される媒体は、リムーバブルであってもよい。例えば、リムーバブル・ハード・ドライブが永続性記憶装置108に使用されてもよい。
処理ユニット104は、キャッシュ134を有するとよい。キャッシュ134は、レベル0(L0)若しくはレベル1(L1)キャッシュ、又はその両方であってもよい。メモリ106は、キャッシュ136を有するとよく、これは例えばレベル2(L2)キャッシュであってもよい。メモリ106は、複数のスレッド又は複数の処理ユニット間で共有される共有メモリであってもよい。したがって、キャッシュ136は、共有キャッシュであってもよい。
これらの例では、通信ユニット110は、他のデータ処理システム又はデバイスとの通信を提供する。これらの例では、通信ユニット110は、ネットワーク・インターフェイス・カードである。通信ユニット110は、物理的通信リンク及びワイヤレス通信リンクのいずれか又は両方を用いて通信を提供するとよい。
入出力ユニット112は、データ処理システム100に接続されているとよい他のデバイスとのデータの入力及び出力を可能にする。例えば、入出力ユニット112は、キーボード、マウス、若しくはその他何らかの適切な入力デバイス、又はそのいずれかの組み合わせを介した、ユーザ入力のための接続を提供するとよい。さらに、入出力ユニット112は、出力をプリンタに送ってもよい。ディスプレイ114は、ユーザに対して情報を表示するメカニズムを提供する。
オペレーティング・システム、アプリケーション、若しくはプログラム、又はそのいずれかの組み合わせのための命令は、記憶デバイス116に位置してもよく、記憶デバイス116は、通信ファブリック102を介してプロセッサ・ユニット104と通信している。これらの例では、命令は関数形式で永続性記憶装置108上にある。これらの命令は、プロセッサ・ユニット104による実行のためにメモリ106内にロードされるとよい。種々の実施形態のプロセスは、メモリ106などのメモリ内に位置するとよいコンピュータ実装命令を使用してプロセッサ・ユニット104によって実行され得る。
これらの命令は、プログラム・コード、コンピュータ使用可能ブログラム・コード又はコンピュータ可読プログラム・コードと呼ばれ、プロセッサ・ユニット104内のプロセッサによって読み取り及び実行されるとよい。種々の実施形態のプログラム・コードは、メモリ106又は永続性記憶装置108など、種々の物理的な、又は有形のコンピュータ可読媒体上で具現化され得る。
プログラム・コード118は、選択的にリムーバブルであるコンピュータ可読媒体120上に関数形式で位置し、プロセッサ・ユニット104による実行のために、データ処理システム100にロード又は転送されるとよい。プログラム・コード118及びコンピュータ可読媒体120は、これらの例において、コンピュータ・プログラム製品122を形成する。一例では、コンピュータ可読媒体120は、例えば、永続性記憶装置108の一部であるハード・ドライブなどの記憶デバイス上に転送されるよう、永続性記憶装置108の一部であるドライブ又は他のデバイスに挿入又は配置される、光学又は磁気ディスクなどの有形の形式であってもよい。有形の形式では、コンピュータ可読媒体120はさらに、データ処理システム100に接続されるハード・ドライブ、サム・ドライブ、又はフラッシュ・メモリなどの永続性記憶装置の形式をとってもよい。有形の形式のコンピュータ可読媒体120は、コンピュータ記録可能記憶媒体とも呼ばれる。場合によっては、コンピュータ可読媒体120はリムーバブルでなくてもよい。
あるいは、プログラム・コード118は、通信ユニット110への通信リンク、若しくは入出力ユニット112への接続、又はその両方を介して、コンピュータ可読媒体120からデータ処理システム100に転送されてもよい。通信リンク若しくは接続又はその両方は、例示では、物理的であっても、又はワイヤレスであってもよい。さらに、コンピュータ可読媒体は、プログラム・コードを含む通信リンク又はワイヤレス伝送などの非有形媒体の形式をとってもよい。
一部の例示のための実施形態では、プログラム・コード118は、データ処理システム100内での使用のために、ネットワーク上で、別のデバイス又はデータ処理システムから永続性記憶装置108にダウンロードされてもよい。例えば、サーバ・データ処理システム内のコンピュータ可読記憶媒体に記憶されたプログラム・コードが、ネットワーク上でサーバからデータ処理システム100にダウンロードされてもよい。プログラム・コード118を提供するデータ処理システムは、サーバ・コンピュータ、クライアント・コンピュータ、又はプログラム・コード118の記憶及び伝送ができる他の何らかのデバイスであってもよい。
データ処理システム100に関して示されている種々のコンポーネントは、種々の実施形態が実装され得る方法に対して、アーキテクチャの制限を規定することを意図したものではない。種々の例示のための実施形態は、データ処理システム100に関して示されたものに対し追加又は代わりのコンポーネントを含むデータ処理システムにおいて実装され得る。図1に示されている他のコンポーネントは、示されている例示とは異なることもあり得る。種々の実施形態は、プログラム・コードを実行できる任意のハードウェア・デバイス又はシステムを使用して実装され得る。
別の例として、データ処理システム100内の記憶デバイスは、データを記憶し得る任意のハードウェア装置である。メモリ106、永続性記憶装置108、及びコンピュータ可読媒体120は、有形の形式の記憶デバイスの例である。
別の例では、通信ファブリック102を実装するためにバス・システムが使用されてもよく、システム・バス又は入出力バスなどの1つ以上のバスから成ってもよい。当然、バス・システムは、バス・システムに接続された種々のコンポーネント又はデバイス間のデータの転送を提供する任意の適切なタイプのアーキテクチャを使用して実装されるとよい。さらに、通信ユニットは、モデム又はネットワーク・アダプタなど、データの送受信に使用される1つ以上のデバイスを含んでもよい。さらに、メモリは、例えば通信ファブリック102内に存在し得るインターフェイス及びメモリ・コントローラ・ハブなどにあるメモリ106又はキャッシュであってもよい。
図2は、例示のための実施形態の各側面が実装され得る不均一キャッシュ・アーキテクチャを示すブロック図である。不均一キャッシュ・アーキテクチャ(NUCA)は、レベル1(L1)キャッシュを備えるコア210、レベル2(L2)キャッシュ・コントローラ212、及びL2キャッシュ・アレイ220を含む。例示のための実施形態によれば、読み取りの方が、キャッシュ・アクセス・レイテンシによる影響を書き込みに比べてより強く受けるため、L2キャッシュ・コントローラ212は、読み取り及び書き込みを違うように扱う。したがって、L2キャッシュ・コントローラ212は、新たなキャッシュ・ラインをL2キャッシュ220内に割り当てるとき、又はL2キャッシュ220内でキャッシュ・ラインを移動するとき、読み取り/書き込み頻度を考慮する。
図3は、例示のための実施形態による読み取り及び書き込みアウェア不均一キャッシュ・アーキテクチャを示すブロック図である。不均一キャッシュ・アーキテクチャ(NUCA)は、L1キャッシュを備えるコア310、L2キャッシュ・コントローラ312、並びに高頻度読み取り領域322及び高頻度書き込み領域324に分けられているL2キャッシュ・アレイを含む。L2キャッシュ・コントローラ312は、NUCAにおける読み取り/書き込み頻度を考慮する。L2キャッシュ・コントローラ312は、頻繁に書き込まれるキャッシュ・ラインを、高頻度書き込み領域324内のより遠いバンクのうちの1つに配置し、頻繁に読み取られるキャッシュ・ラインを、高頻度読み取り領域322内のより近いバンクのうちの1つに配置する。さらに、NUCA置換に関しては、L2キャッシュ・コントローラ312は、頻繁に書き込まれるキャッシュ・ラインを高頻度書き込み領域324内のより遠いバンクに移動し、頻繁に読み取られるラインを、高頻度読み取り領域322内のより近いバンクに移動する。
高頻度読み取り領域322及び高頻度書き込み領域324のサイズの比は、静的であっても、又は動的であってもよい。すなわち、高頻度読み取り領域322及び高頻度書き込み領域324は、全般的な読み取り/書き込み頻度比情報に基づき、静的なサイズにセットされてもよい。例えば、キャッシュ・アレイの近い方の3分の2が、高頻度読み取り領域322に構成されてもよく、キャッシュ・アレイの遠い方の3分の1が、高頻度書き込み領域324として構成されてもよい。あるいは、L2キャッシュ・コントローラ312は、読み取り/書き込み頻度情報を考慮してもよく、高頻度読み取り領域322及び高頻度書き込み領域324を動的に再構成してもよい。例えば、L2キャッシュ・コントローラ312は、高頻度読み取り及び高頻度書き込みキャッシュ・ラインの実行時の比に基づき、高頻度読み取り領域322及び高頻度書き込み領域324を動的に再構成してもよい。1つの例示の実施形態では、L2キャッシュ・コントローラ312は、高頻度読み取り領域322のキャッシュ・ラインの割り当てをキャッシュ・アレイの前方(より近いバンク)から始めて開始してもよく、高頻度書き込み領域324のキャッシュ・ラインの割り当てをキャッシュ・アレイの後方(より遠いバンク)から開始してもよい。この例示の実施形態では、高頻度読み取り領域322と、高頻度書き込み領域324との間の境界はファジーであってもよい一方で、他の実施形態では、高頻度読み取り領域322と、高頻度書き込み領域324との間の境界は、固定され、すなわち静的であってもよい。
例示の実施形態では、L2キャッシュ・コントローラ312は、ソフトウェアを介して読み取り/書き込み頻度情報を受け取ってもよい。例えば、ソフトウェアは、ロード及びストア命令内で、ソフトウェアによって保持されている読み取り/書き込み頻度情報を示す専用ビットを提供してもよい。ソフトウェアはさらに、ページ・テーブル・エントリ内に読み取り/書き込み頻度情報の専用ビットを記憶してもよい。別の例示の実施形態では、ソフトウェアは、読み取り/書き込み頻度情報とともに、読み取りのためのプリフェッチ・キャッシュ・ライン又は書き込みのためのプリフェッチ・キャッシュ・ラインなど、専用キャッシュ命令を使用してもよい。
あるいは、L2キャッシュ・コントローラ312は、ハードウェアにおいて読み取り/書き込み頻度を検出してもよい。例えば、プリフェッチ・エンジン(図示せず)が、読み取り傾向及び書き込み傾向を検出してもよい。L2キャッシュ・コントローラ312は、頻繁に読み取られるキャッシュ・ライン及び頻繁に書き込まれるキャッシュ・ラインを検出するために、キャッシュ・ラインごとに飽和カウンタを保持してもよい。
例示のための実施形態によれば、L2キャッシュ・コントローラ312は、読み取り及び書き込みアウェア・キャッシュ用に、既知の置換ポリシを拡張するとよい。例えば書き込みミスに関しては、L2キャッシュ・コントローラ312は、Xの最長時間未使用(LRU:least recently used)キャッシュ・ラインの最も遠いキャッシュ・ラインを置換するとよく、Xは、2〜キャッシュ連想度の値であればよい。読み取りミスに関しては、L2キャッシュ・コントローラ312は、XのLRUキャッシュ・ラインの最も近いラインを置換するとよい。別の例として、頻繁に読み取られるキャッシュ・ラインに関して、L2キャッシュ・コントローラ312は、高頻度読み取り領域322内のLRUラインを置換してもよく、頻繁に書き込まれるキャッシュ・ラインに関して、L2キャッシュ・コントローラ312は、高頻度書き込み領域324内のLRUラインを置換してもよい。
例示のための実施形態によれば、L2キャッシュ・コントローラ312は、読み取り及び書き込みアウェア・キャッシュ用に、既知のデータ移動ポリシを拡張するとよい。例えば、世代昇格(generational promotion)を使用して、L2キャッシュ・コントローラ312は、ライト・ヒットの後に単にキャッシュ・ラインをより近いバンクへとスワップしなくてもよい。データ移動ポリシに対するこうした拡張は、データ移動の削減をもたらし、電力消費が削減される。データ移動ポリシのより事前対応型の拡張として、頻繁に書き込まれるキャッシュ・ラインが、頻繁に読み取られるキャッシュ・ラインをより遠くのバンクに移動するスワップをトリガしてもよい。
図4は、例示のための実施形態による読み取り及び書き込みアウェア・キャッシュのハードウェア・サポートを示すブロック図である。タグ及びステータス・アレイ410は、読み取り領域420のタグ及びステータス・アレイと、書き込み領域430のタグ及びステータス・アレイとを含む。読み取り領域420のタグ及びステータス・アレイは、キャッシュの高頻度読み取り領域内の各キャッシュ・ラインの飽和カウンタ(sat cnt:saturation counter)、有効ビット、及びタグを含む。同様に、書き込み領域430のタグ及びステータス・アレイは、キャッシュの高頻度書き込み領域内の各キャッシュ・ラインの飽和カウンタ、有効ビット、及びタグを含む。データ・アレイ450は、読み取り領域460及び書き込み領域470を含む。
デコーダ440は、キャッシュに対する読み取り及び書き込みのアドレスをデコードする。キャッシュ・アクセスのアドレスは、タグ、インデックス、及びオフセットを含むとよい。読み取り領域420のタグ及びステータス・アレイが、タグを比較する。読み取り領域420のタグ及びステータス・アレイにおいて、キャッシュ・ラインに関しタグが一致し、有効ビットがセットされていれば、キャッシュ・アクセスは、読み取り領域460におけるキャッシュ・ヒットを発生させる。同様に、書き込み領域430のタグ及びステータス・アレイは、タグを比較する。書き込み領域430のタグ及びステータス・アレイにおいて、キャッシュ・ラインに関しタグが一致し、有効ビットがセットされていれば、キャッシュ・アクセスは、書き込み領域470におけるヒットを発生させる。
読み取り領域420のタグ及びステータス・アレイにおけるヒットに関して、デコーダ440は、インデックス及びオフセットを使用して、高頻度読み取り領域460内のキャッシュ・ラインにアクセスする。書き込み領域430のタグ及びステータス・アレイにおけるヒットに関して、デコーダ440は、インデックス及びオフセットを使用して、高頻度書き込み領域470内のキャッシュ・ラインにアクセスする。頻繁に読み取られたキャッシュ・ラインであって、頻繁に書き込みが行われているキャッシュ・ラインは、高頻度読み取り領域460から高頻度書き込み領域470に移動されてもよい。頻繁に書き込まれたキャッシュ・ラインであって、続いて頻繁に読み取りが行われているキャッシュ・ラインは、スワップ・バッファ480を介して、高頻度書き込み領域470から高頻度読み取り領域460に移動されてもよい。
当業者であれば当然のことであるが、本発明は、システム、方法、又はコンピュータ・プログラム製品として具現化され得る。したがって、本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、又は本願明細書においてすべて概して「回路」、「モジュール」若しくは「システム」と呼ばれることもある、ソフトウェア及びハードウェアの側面を兼ね備えた実施形態の形式をとってもよい。さらに、本発明は、任意の有形の表現媒体に具現化されたコンピュータ使用可能プログラム・コードを有する該媒体において具現化されたコンピュータ・プログラム製品の形式をとることもできる。
1つ以上のコンピュータ使用可能又はコンピュータ可読媒体(単数又は複数)の任意の組み合わせが利用され得る。コンピュータ使用可能又はコンピュータ可読媒体は、例えば、限定はされないが、電子、磁気、光学、電磁気、赤外線、若しくは半導体システム、装置、デバイス、又は伝播媒体とすることもできる。コンピュータ可読媒体のより具体的な例(包括的でないリスト)には、1つ以上のワイヤを有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラム可能読み取り専用メモリ(EPROM又はフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ(CDROM)、光学式記憶デバイス、インターネット若しくはイントラネットをサポートするものなどの伝送媒体、又は磁気記憶デバイスがあると考えられる。なお、プログラムは、例えば紙又は他の媒体の光学式走査により電子的に獲得され、続いて必要に応じコンパイル、解釈、又は適切な方法により別の形で処理され、続いてコンピュータ・メモリに記憶されることが可能なため、コンピュータ使用可能又はコンピュータ可読媒体は、プログラムが印刷される紙又は別の適切な媒体とすることさえもできる。この文書の文脈では、コンピュータ使用可能又はコンピュータ可読媒体は、命令実行システム、装置若しくはデバイスによって、又はそれに関連して使用されるプログラムを含むこと、記憶すること、伝達すること、伝播させること、又は搬送することができる任意の媒体であればよい。コンピュータ使用可能媒体は、ベースバンドにおいて、又は搬送波の一部として伝播データ信号により具現化されたコンピュータ使用可能プログラム・コードを備える該伝播データ信号を含むこともできる。コンピュータ使用可能プログラム・コードは、ワイヤレス、有線、光ファイバ・ケーブル、無線周波数(RF:radio frequency)などを含むがこれらに限定されない、任意の適切な媒体を使用して伝送されることもできる。
本発明の動作を実行するコンピュータ・プログラム・コードは、Java(TM)、Smalltalk(TM)、C++又は同様のものなどのオブジェクト指向プログラミング言語、及び「C」プログラミング言語若しくは同様のプログラミング言語などの従来の手続きプログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで書かれていてよい。プログラム・コードは、スタンド・アロン・ソフトウェア・パッケージとして、完全にユーザのコンピュータ上で実行されること、部分的にユーザのコンピュータ上で実行されること、又は部分的にユーザのコンピュータ上で、且つ部分的にリモート・コンピュータ上で実行されること、又は完全にリモート・コンピュータ若しくはサーバ上で実行されることもできる。後者のシナリオでは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含む任意の種類のネットワークを介してリモート・コンピュータがユーザのコンピュータに接続されてもよく、又は、外部コンピュータに接続されてもよい(例えば、インターネット・サービス・プロバイダを使用しインターネットを介して)。さらに、プログラム・コードは、サーバ又はリモート・コンピュータ上のコンピュータ可読記憶媒体上で具現化され、リモート・コンピュータ又はユーザのコンピュータのコンピュータ可読記憶媒体に、記憶若しくは実行又はその両方のためにネットワーク上でダウンロードされることもできる。さらに、コンピューティング・システム又はデータ処理システムのいずれかが、リモート・コンピューティング・システム又はデータ処理システムからネットワーク上でプログラム・コードをダウンロードした後に、コンピュータ可読記憶媒体にプログラム・コードを記憶することもできる。
本発明の例示のための実施形態による方法、装置(システム)、及びコンピュータ・プログラム製品のフローチャート図若しくはブロック図又はその両方を参照して、例示のための実施形態について以下に記載する。当然のことながら、フローチャート図若しくはブロック図又はその両方の各ブロック、及びフローチャート図若しくはブロック図又はその両方の複数ブロックの組み合わせは、コンピュータ・プログラム命令により実装可能である。マシンを生じるよう、当該コンピュータ・プログラム命令が、汎用コンピュータ、専用コンピュータ、又はその他のプログラム可能データ処理装置のプロセッサに提供されて、この命令が、コンピュータ又はその他のプログラム可能データ処理装置のプロセッサにより実行されて、フローチャート若しくはブロック図又はその両方のブロック若しくは複数ブロックにおいて指定された機能/動作を実装する手段を作り出すようにすることもできる。
さらに、特定の形で機能するようコンピュータ又はその他のプログラム可能データ処理装置に指示することができる当該コンピュータ・プログラム命令は、コンピュータ可読媒体に記憶されて、コンピュータ可読媒体に記憶されたこの命令が、フローチャート若しくはブロック図又はその両方のブロック若しくは複数ブロックにおいて指定された機能/動作を実装する命令手段を含む製品を生じるようにすることもできる。
さらに、コンピュータ・プログラム命令は、コンピュータ又はその他のプログラム可能データ処理装置にロードされて、コンピュータ又はその他のプログラム可能装置上で一連の動作ステップが実行されるようにしてコンピュータに実装されるプロセスを生じさせ、コンピュータ又はその他のプログラム可能装置上で実行される命令が、フローチャート若しくはブロック図又はその両方のブロック若しくは複数ブロックにおいて指定された機能/動作を実装するためのプロセスを提供するようにすることもできる。
各図面のフローチャート及びブロック図は、本発明の様々な実施形態によるシステム、方法及びコンピュータ・プログラム製品の考えられる実装のアーキテクチャ、機能性及び動作を示す。この関連で、フローチャート又はブロック図内の各ブロックは、指定の論理機能(単数又は複数)を実装する1つ以上の実行可能命令を含むモジュール、セグメント、又はコードの一部を表すこともできる。なお、さらに、いくつかの代わりの実装では、ブロック内に示されている機能が、図面に示されているのとは異なる順序で生じてもよい。例えば、関連する機能性次第で、連続して示されている2つのブロックが実際には事実上同時に実行されてもよく、又は、各ブロックが逆順で実行されることがあってもよい。なお、さらに、ブロック図若しくはフローチャート図又はその両方の各ブロック、及びブロック図若しくはフローチャート図又はその両方の複数ブロックの組み合わせは、指定の機能若しくは動作を実行する専用ハードウェア・ベース・システム、又は専用ハードウェア及びコンピュータ命令の組み合わせにより実装することができる。
図5は、例示のための実施形態による読み取り及び書き込みアウェア・キャッシュのキャッシュ・コントローラの動作を示すフローチャートである。動作が始まり、キャッシュ・コントローラがキャッシュ・アクセス要求を受ける(ブロック502)。キャッシュ・コントローラは、キャッシュ・アクセス要求がキャッシュ・ヒットを発生させるかどうかを判断する(ブロック504)。キャッシュ・アクセス要求がキャッシュ・ヒットを発生させなければ、キャッシュ・コントローラは、新たなキャッシュ・ラインをキャッシュ・アレイ内に割り当てる(ブロック506)。続いてキャッシュ・コントローラは、キャッシュ・アクセスがロードであるかストアであるかを判断する(ブロック508)。キャッシュ・アクセスがロードであれば、キャッシュ・コントローラは、キャッシュ・ラインをキャッシュの高頻度読み取り領域内にロードし(ブロック510)、キャッシュ・ラインの飽和カウンタを初期化する(ブロック512)。その後、動作は終了する。ブロック508において、キャッシュ・アクセスがストアであれば、キャッシュ・コントローラは、キャッシュ・ラインをキャッシュの高頻度書き込み領域内にロードし(ブロック514)、キャッシュ・ラインの飽和カウンタを初期化する(ブロック516)。その後、動作は終了する。
例示のための実施形態によれば、飽和カウンタは、キャッシュ・ラインが適切な領域内にあるかどうかを決定する。別の実施形態では、1つ以上のカウンタが、読み取り/書き取り頻度を判断するために使用され得る。例えば、単一のカウンタが使用されて、読み取りの場合はインクリメントされ、書き込みの場合はデクリメントされてもよい。別の例では、キャッシュ・コントローラは、別々の読み取り及び書き込みカウンタを保持してもよい。さらに、別の実施形態では、キャッシュ・コントローラは、例えば、インクリメント/デクリメントの重みを調整すること、又は読み取り及び書き込みカウンタと種々の閾値とを比較することによって、違うように読み取り及び書き込みを重み付けしてもよい。
図5に戻る。ブロック504においてキャッシュ・アクセス要求がヒットを発生させれば、キャッシュ・コントローラは、キャッシュ・アクセスが高頻度読み取り領域におけるロード、又は高頻度書き込み領域におけるストアであるかどうかを判断する(ブロック518)。言い換えると、ブロック518においてキャッシュ・コントローラは、キャッシュ・ラインが割り当てられている領域に、キャッシュ・アクセスが一致するかどうかを判断する。キャッシュ・コントローラが、キャッシュ・アクセスは、高頻度読み取り領域におけるロードである、又は高頻度書き込み領域におけるストアであると判断すれば、キャッシュ・コントローラは、キャッシュ・ラインからデータを提供し(ブロック520)、キャッシュ・ラインに関連する飽和カウンタをインクリメントする(ブロック522)。その後、動作は終了する。
ブロック518において、キャッシュ・アクセスが高頻度読み取り領域におけるロードではなく、且つ高頻度書き込み領域におけるストアでなければ、キャッシュ・アクセスは、高頻度読み取り領域におけるストア又は高頻度書き込み領域におけるロードであり、キャッシュ・アクセスは、キャッシュ・ラインが割り当てられている領域と一致しない。この場合、キャッシュ・コントローラは、キャッシュ・ラインからデータを提供し(ブロック524)、キャッシュ・ラインに関連する飽和カウンタをデクリメントする(ブロック526)。続いて、キャッシュ・コントローラは、飽和カウンタの最上位ビット(MSB:most significant bit)がゼロであるかどうかを判断する(ブロック528)。
示されている例では、飽和カウンタのMSBがゼロでなければ、キャッシュ・ラインは適切な領域内にあり、動作は終了する。ブロック528において、飽和カウンタのMSBがゼロであれば、キャッシュ・ラインは適切な領域内にない。この場合、キャッシュ・コントローラは、他の一方の領域内のキャッシュ・ラインを選択し、現在のキャッシュ・ラインと、選択されたキャッシュ・ラインとをスワップする(ブロック530)。続いてキャッシュ・コントローラは、スワップされたキャッシュ・ラインに関連する飽和カウンタを初期化して(ブロック532)、動作は終了する。
このようにして、例示のための実施形態は、読み取り及び書き込みアウェア・キャッシュを提供するメカニズムを提供する。このメカニズムは、大きなキャッシュを高頻度読み取り領域及び高頻度書き込み領域に分割する。このメカニズムは、不均一キャッシュ・アーキテクチャの置換ポリシにおいて、読み取り/書き込み頻度を考慮する。頻繁に書き込まれるキャッシュ・ラインは、より遠いバンクのうちの1つに配置される。頻繁に読み取られるキャッシュ・ラインは、より近いバンクのうちの1つに配置される。高頻度読み取り及び高頻度書き込み領域のサイズの比は、静的であっても、又は動的であってもよい。高頻度読み取り領域と、高頻度書き込み領域との間の境界は、明確であっても、又はファジーであってもよい。
上述のとおり、当然のことながら、例示のための実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、又はハードウェア及びソフトウェア両方の構成要素を含む実施形態の形式をとり得る。例示の一実施形態では、例示のための実施形態のメカニズムは、限定はされないがファームウェア、常駐ソフトウェア、マイクロコードなどを含むソフトウェア又はプログラム・コードにおいて実装される。
プログラム・コードの記憶若しくは実行又はその両方に適したデータ処理システムは、システム・バスを介してメモリ要素に直接又は間接的に結合された少なくとも1つのプロセッサを含む。メモリ要素は、プログラム・コードを実際に実行する間に用いられるローカル・メモリ、大容量記憶装置、及び、実行中にコードが大容量記憶装置から読み出されなければならない回数を減らすために少なくとも一部のプログラム・コードの一時的な記憶装置となるキャッシュ・メモリを含むことができる。
入出力、すなわちI/Oデバイス(限定はされないが、キーボード、ディスプレイ、ポインティング・デバイスなどを含む)は、直接、又は介在するI/Oコントローラを介して、システムに結合されることが可能である。ネットワーク・アダプタもシステムに結合されて、データ処理システムが、他のデータ処理システム又はリモート・プリンタ又は記憶デバイスに、介在するプライベート又はパブリック・ネットワークを介して結合された状態となることを可能にしてもよい。モデム、ケーブル・モデム、及びイーサネット(R)カードが、現在利用可能なタイプのネットワーク・アダプタのごく一部である。
本発明の記載は、例証及び説明のために示されたものであり、包括的であることも、開示された形式の発明に限定されることも目的としていない。当業者には、多数の変更及び変形が明らかであろう。実施形態は、本発明の原理、実際の応用を最もよく説明して、当業者が、意図される特定の用途に適する様々な変更を用いた様々な実施形態に関して、本発明を理解できるように選ばれ、記載された。

Claims (20)

  1. データ処理システムにおける、読み取り及び書き込みアウェア・キャッシュに関する方法であって、キャッシュ・コントローラにおいて、処理ユニットからキャッシュ・アクセス要求を受けるステップを含み、
    前記キャッシュ・コントローラは、前記キャッシュ・アクセス要求がキャッシュ・ミスを発生させるロードであれば、データのキャッシュ・ラインをキャッシュの高頻度読み取り領域内にロードし、前記キャッシュは、バンクのアレイを含み、前記高頻度読み取り領域は、前記処理ユニットに近いバンクを含み、
    前記キャッシュ・コントローラは、前記キャッシュ・アクセス要求がキャッシュ・ミスを発生させるストアであれば、データの前記キャッシュ・ラインを前記キャッシュの高頻度書き込み領域内に配置し、前記高頻度書き込み領域は、前記処理ユニットから遠いバンクを含む、方法。
  2. 前記キャッシュ・ラインに関連する飽和カウンタを初期化するステップ
    をさらに含む、請求項1に記載の方法。
  3. 前記キャッシュ・ラインにアクセスするための、後のキャッシュ・アクセス要求を、前記キャッシュ・コントローラにおいて受けるステップと、
    前記キャッシュ・ラインが適切な領域内にあるかどうかを判断するステップと、
    前記キャッシュ・ラインが前記適切な領域内にないことに応じて、前記キャッシュ・ラインと、他の一方の領域内のキャッシュ・ラインとをスワップするステップと、
    をさらに含む、請求項2に記載の方法。
  4. 前記キャッシュ・アクセス要求によってアクセスされる前記キャッシュ・ラインが前記適切な領域内にあるかどうかを判断するステップは、
    前記キャッシュ・アクセス要求が、前記高頻度読み取り領域におけるストアであること、又は前記高頻度書き込み領域におけるロードであることに応じて、前記飽和カウンタをデクリメントするステップと、
    前記飽和カウンタが閾値未満であることに応じて、前記キャッシュ・ラインは前記適切な領域内にないと判断するステップと、
    を含む、請求項3に記載の方法。
  5. 前記キャッシュ・ラインにアクセスするための、後のキャッシュ・アクセス要求を、前記キャッシュ・コントローラにおいて受けるステップと、
    前記キャッシュ・アクセス要求が前記高頻度読み取り領域におけるロードであること、又は前記高頻度書き込み領域におけるストアであることに応じて、前記飽和カウンタをインクリメントするステップと、
    をさらに含む、請求項2に記載の方法。
  6. 前記高頻度読み取り領域と、前記高頻度書き込み領域との間のサイズの比は、静的である、請求項1に記載の方法。
  7. 前記高頻度読み取り領域と、前記高頻度書き込み領域との間の境界は、明確である、請求項1に記載の方法。
  8. データ処理システムにおける、読み取り及び書き込みアウェア・キャッシュに関する装置であって、前記装置は、
    処理ユニットと、
    バンクのアレイを含むキャッシュ・アレイであって、前記バンクのアレイは、高頻度読み取り領域及び高頻度書き込み領域を含み、前記高頻度読み取り領域は、前記バンクのアレイの中で、処理ユニットに近いバンクを含み、前記高頻度書き込み領域は、前記バンクのアレイの中で、前記処理ユニットから遠いバンクを含む、前記キャッシュ・アレイと、
    前記キャッシュ・アレイ及び前記処理ユニットに結合されたキャッシュ・コントローラであって、前記処理ユニットからキャッシュ・アクセス要求を受け、
    前記キャッシュ・アクセス要求がキャッシュ・ミスを発生させるロードであることに応じて、データのキャッシュ・ラインを前記高頻度読み取り領域内にロードし、
    前記キャッシュ・アクセス要求がキャッシュ・ミスを発生させるストアであることに応じて、データのキャッシュ・ラインを前記キャッシュの前記高頻度書き込み領域内に配置するよう構成されている、前記キャッシュ・コントローラと、
    を含む装置。
  9. 前記キャッシュ・コントローラは、前記キャッシュ・ラインに関連する飽和カウンタを初期化するようさらに構成されている、請求項8に記載の装置。
  10. 前記キャッシュ・コントローラは、
    前記キャッシュ・ラインにアクセスするための、後のキャッシュ・アクセス要求を、前記キャッシュ・コントローラにおいて受け、
    前記キャッシュ・ラインが適切な領域内にあるかどうかを判断し、
    前記キャッシュ・ラインが前記適切な領域内にないことに応じて、前記キャッシュ・ラインと、他の一方の領域内のキャッシュ・ラインとをスワップするようさらに構成されている、請求項9に記載の装置。
  11. 前記キャッシュ・アクセス要求によってアクセスされる前記キャッシュ・ラインが前記適切な領域内にあるかどうかの判断は、
    前記キャッシュ・アクセス要求が、前記高頻度読み取り領域におけるストアであること、又は前記高頻度書き込み領域におけるロードであることに応じて、前記飽和カウンタをデクリメントすること、及び
    前記飽和カウンタが閾値未満であることに応じて、前記キャッシュ・ラインは前記適切な領域内にないと判断すること
    を含む、請求項10に記載の装置。
  12. 前記キャッシュ・コントローラは、
    前記キャッシュ・ラインにアクセスするための、後のキャッシュ・アクセス要求を、前記キャッシュ・コントローラにおいて受け、
    前記キャッシュ・アクセス要求が前記高頻度読み取り領域におけるロードであること、又は前記高頻度書き込み領域におけるストアであることに応じて、前記飽和カウンタをインクリメントするようさらに構成されている、請求項9に記載の装置。
  13. 前記高頻度読み取り領域と、前記高頻度書き込み領域との間のサイズの比は、静的である、請求項8に記載の装置。
  14. 前記高頻度読み取り領域と、前記高頻度書き込み領域との間の境界は、明確である、請求項8に記載の装置。
  15. コンピュータ可読プログラムが記録されているコンピュータ記録可能媒体を含むコンピュータ・プログラム製品であって、前記コンピュータ可読プログラムは、コンピューティング・デバイス上で実行されると、前記コンピューティング・デバイスに、
    キャッシュ・コントローラにおいて、処理ユニットからキャッシュ・アクセス要求を受けること、
    前記キャッシュ・アクセス要求が、キャッシュ・ミスを発生させるロードであることに応じて、前記キャッシュ・コントローラによって、データのキャッシュ・ラインをキャッシュの高頻度読み取り領域内にロードすることであって、前記キャッシュは、バンクのアレイを含み、前記高頻度読み取り領域は、前記処理ユニットに近いバンクを含む、前記ロードすること、及び
    前記キャッシュ・アクセス要求が、キャッシュ・ミスを発生させるストアであることに応じて、前記キャッシュ・コントローラによって、データのキャッシュ・ラインを前記キャッシュの高頻度書き込み領域内にロードすることであって、前記高頻度書き込み領域は、前記処理ユニットから遠いバンクを含む、前記ロードすること
    を行わせる、コンピュータ・プログラム製品。
  16. 前記コンピュータ可読プログラムは、前記コンピューティング・デバイスに、
    前記キャッシュ・ラインに関連する飽和カウンタを初期化すること、
    前記キャッシュ・ラインにアクセスするための、後のキャッシュ・アクセス要求を、前記キャッシュ・コントローラにおいて受けること、
    前記キャッシュ・ラインが適切な領域内にあるかどうかを判断すること、及び
    前記キャッシュ・ラインが前記適切な領域内にないことに応じて、前記キャッシュ・ラインと、他の一方の領域内のキャッシュ・ラインとをスワップすること
    をさらに行わせる、請求項15に記載のコンピュータ・プログラム製品。
  17. 前記キャッシュ・アクセス要求によってアクセスされる前記キャッシュ・ラインが前記適切な領域内にあるかどうかの判断は、
    前記キャッシュ・アクセス要求が、前記高頻度読み取り領域におけるストアであること、又は前記高頻度書き込み領域におけるロードであることに応じて、前記飽和カウンタをデクリメントすること、及び
    前記飽和カウンタが閾値未満であることに応じて、前記キャッシュ・ラインは前記適切な領域内にないと判断すること
    を含む、請求項16に記載のコンピュータ・プログラム製品。
  18. 前記コンピュータ可読プログラムは、前記コンピューティング・デバイスに、
    前記キャッシュ・ラインにアクセスするための、後のキャッシュ・アクセス要求を、前記キャッシュ・コントローラにおいて受けること、及び
    前記キャッシュ・アクセス要求が前記高頻度読み取り領域におけるロードであること、又は前記高頻度書き込み領域におけるストアであることに応じて、前記飽和カウンタをインクリメントすること
    をさらに行わせる、請求項16に記載のコンピュータ・プログラム製品。
  19. 前記コンピュータ可読プログラムは、データ処理システム内のコンピュータ可読記憶媒体内に記憶されており、前記コンピュータ可読プログラムは、リモート・データ処理システムからネットワーク上でダウンロードされたものである、請求項15に記載のコンピュータ・プログラム製品。
  20. 前記コンピュータ可読プログラムは、サーバ・データ処理システム内のコンピュータ可読記憶媒体内に記憶されており、前記コンピュータ可読プログラムは、リモート・データ処理システムとともにコンピュータ可読記憶媒体で使用されるよう、ネットワーク上で前記リモート・システムにダウンロードされる、請求項15に記載のコンピュータ・プログラム製品。
JP2012529199A 2009-09-18 2010-08-31 読み取り及び書き込みアウェア・キャッシュを制御する方法、装置、プログラム、キャッシュ・コントローラ Active JP5511965B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/562,242 US8271729B2 (en) 2009-09-18 2009-09-18 Read and write aware cache storing cache lines in a read-often portion and a write-often portion
US12/562,242 2009-09-18
PCT/EP2010/062735 WO2011032834A1 (en) 2009-09-18 2010-08-31 Read and write aware cache

Publications (2)

Publication Number Publication Date
JP2013505488A true JP2013505488A (ja) 2013-02-14
JP5511965B2 JP5511965B2 (ja) 2014-06-04

Family

ID=43216463

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012529199A Active JP5511965B2 (ja) 2009-09-18 2010-08-31 読み取り及び書き込みアウェア・キャッシュを制御する方法、装置、プログラム、キャッシュ・コントローラ

Country Status (6)

Country Link
US (2) US8271729B2 (ja)
EP (1) EP2478441B1 (ja)
JP (1) JP5511965B2 (ja)
KR (1) KR101419615B1 (ja)
CN (1) CN102483720A (ja)
WO (1) WO2011032834A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016509324A (ja) * 2013-03-07 2016-03-24 クアルコム,インコーポレイテッド キャッシュメモリアクセスを高速化するためのキャッシュメモリフィルの重要ワード優先順序付け、ならびに関連するプロセッサベースのシステムおよび方法

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8341353B2 (en) * 2010-01-14 2012-12-25 Qualcomm Incorporated System and method to access a portion of a level two memory and a level one memory
TWI417721B (zh) * 2010-11-26 2013-12-01 Etron Technology Inc 衰減熱資料之方法
US9436475B2 (en) 2012-11-05 2016-09-06 Nvidia Corporation System and method for executing sequential code using a group of threads and single-instruction, multiple-thread processor incorporating the same
US9058282B2 (en) 2012-12-31 2015-06-16 Intel Corporation Dynamic cache write policy
US9524164B2 (en) * 2013-08-30 2016-12-20 Advanced Micro Devices, Inc. Specialized memory disambiguation mechanisms for different memory read access types
CN103631972B (zh) * 2013-12-23 2016-09-21 济南大学 一种列访问感知的数据缓存方法及系统
JP2016170682A (ja) * 2015-03-13 2016-09-23 富士通株式会社 演算処理装置及び演算処理装置の制御方法
EP3376369B1 (en) 2016-01-20 2020-03-04 Samsung Electronics Co., Ltd. Method, apparatus and recording medium for processing division calculation
US10387329B2 (en) * 2016-02-10 2019-08-20 Google Llc Profiling cache replacement
US10853267B2 (en) * 2016-06-14 2020-12-01 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Adaptive method for selecting a cache line replacement algorithm in a direct-mapped cache
US10235299B2 (en) 2016-11-07 2019-03-19 Samsung Electronics Co., Ltd. Method and device for processing data
US10417134B2 (en) * 2016-11-10 2019-09-17 Oracle International Corporation Cache memory architecture and policies for accelerating graph algorithms
JP6799256B2 (ja) * 2016-11-28 2020-12-16 富士通株式会社 ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
US10649904B2 (en) * 2016-12-12 2020-05-12 Samsung Electronics Co., Ltd. System and method for store streaming detection and handling
US10902020B2 (en) * 2018-06-08 2021-01-26 International Business Machines Corporation Multiple cache processing of streaming data
CN111367831B (zh) * 2020-03-26 2022-11-11 超睿科技(长沙)有限公司 翻译页表的深度预取方法、部件、微处理器及计算机设备
KR20210121527A (ko) 2020-03-30 2021-10-08 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US11899589B2 (en) 2021-06-22 2024-02-13 Samsung Electronics Co., Ltd. Systems, methods, and devices for bias mode management in memory systems
CN116028388B (zh) * 2023-01-17 2023-12-12 摩尔线程智能科技(北京)有限责任公司 高速缓存方法、装置、电子设备、存储介质和程序产品

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078794B2 (en) * 2000-01-06 2011-12-13 Super Talent Electronics, Inc. Hybrid SSD using a combination of SLC and MLC flash memory arrays
JP2005522773A (ja) 2002-04-08 2005-07-28 ユニバーシティー・オブ・テキサス・システム 非均等型キャッシュ装置、システム及び方法
US7058764B2 (en) * 2003-04-14 2006-06-06 Hewlett-Packard Development Company, L.P. Method of adaptive cache partitioning to increase host I/O performance
US7287122B2 (en) * 2004-10-07 2007-10-23 International Business Machines Corporation Data replication in multiprocessor NUCA systems to reduce horizontal cache thrashing
US7457922B2 (en) 2004-11-20 2008-11-25 International Business Machines Corporation Cache line placement prediction for multiprocessor non-uniform cache architecture systems
US7293141B1 (en) 2005-02-01 2007-11-06 Advanced Micro Devices, Inc. Cache word of interest latency organization
JP2006252031A (ja) 2005-03-09 2006-09-21 Nec Corp ディスクアレイコントローラ
US8566560B2 (en) * 2008-02-01 2013-10-22 Dell Products L.P. System and method for configuring storage resources for database storage
US9152569B2 (en) * 2008-11-04 2015-10-06 International Business Machines Corporation Non-uniform cache architecture (NUCA)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016509324A (ja) * 2013-03-07 2016-03-24 クアルコム,インコーポレイテッド キャッシュメモリアクセスを高速化するためのキャッシュメモリフィルの重要ワード優先順序付け、ならびに関連するプロセッサベースのシステムおよび方法

Also Published As

Publication number Publication date
KR101419615B1 (ko) 2014-07-15
EP2478441B1 (en) 2014-02-26
US20120311265A1 (en) 2012-12-06
CN102483720A (zh) 2012-05-30
US20110072214A1 (en) 2011-03-24
US8843705B2 (en) 2014-09-23
WO2011032834A1 (en) 2011-03-24
EP2478441A1 (en) 2012-07-25
JP5511965B2 (ja) 2014-06-04
KR20120089842A (ko) 2012-08-14
US8271729B2 (en) 2012-09-18

Similar Documents

Publication Publication Date Title
JP5511965B2 (ja) 読み取り及び書き込みアウェア・キャッシュを制御する方法、装置、プログラム、キャッシュ・コントローラ
US8943272B2 (en) Variable cache line size management
US8392658B2 (en) Cache implementing multiple replacement policies
JP3888508B2 (ja) キャッシュ・データ管理方法
JP6009589B2 (ja) マルチレベルのキャッシュ階層におけるキャストアウトを低減するための装置および方法
US7430638B2 (en) Adaptive input / output compressed system and data cache and system using same
US8230179B2 (en) Administering non-cacheable memory load instructions
CN109074312B (zh) 基于高速缓存测试区域来为预取选择高速缓存老化策略
US20180300258A1 (en) Access rank aware cache replacement policy
US20130205089A1 (en) Cache Device and Methods Thereof
JP6859361B2 (ja) 中央処理ユニット(cpu)ベースシステムにおいて複数のラストレベルキャッシュ(llc)ラインを使用してメモリ帯域幅圧縮を行うこと
US20060112228A1 (en) Cache line placement prediction for multiprocessor non-uniform cache architecture systems
US11803484B2 (en) Dynamic application of software data caching hints based on cache test regions
US11409663B2 (en) Methods and systems for optimized translation of a virtual address having multiple virtual address portions using multiple translation lookaside buffer (TLB) arrays for variable page sizes
JP2000090009A (ja) キャッシュメモリにおいてキャッシュラインを置き換えるための方法および装置
US8112589B2 (en) System for caching data from a main memory with a plurality of cache states
US9529730B2 (en) Methods for cache line eviction
JP2019525330A (ja) キャッシュテスト領域に基づくプリフェッチデータに対するキャッシュ転送ポリシーの選択
US11074189B2 (en) FlatFlash system for byte granularity accessibility of memory in a unified memory-storage hierarchy
US8656106B2 (en) Managing unforced injections of cache lines into a cache utilizing predetermined address ranges
US10180904B2 (en) Cache memory and operation method thereof
US11436158B2 (en) Fine-grained forced cache eviction
Subisha et al. Prefetching in hybrid main memory systems
CN115269492A (zh) 可重构处理器多端口缓存的流式数据管理方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130509

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140226

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140325

R150 Certificate of patent or registration of utility model

Ref document number: 5511965

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150