(57)【特許請求の範囲】
【請求項１】
データ処理システムにおける読み取り及び書き込みアウェア・キャッシュを制御する方法であって、前記キャッシュはバンクのアレイを含み、前記バンクのアレイは前記処理ユニットに近いバンクを含む高頻度読み取り領域及び前記処理ユニットから遠いバンクを含む高頻度書き込み領域を形成し、前記方法は、
前記キャッシュを制御するキャッシュ・コントローラが処理ユニットからキャッシュ・アクセス要求を受けるステップと、
前記キャッシュ・アクセス要求がキャッシュ・ミスを発生させるロードであることに応じて、前記キャッシュ・コントローラがデータのキャッシュ・ラインをキャッシュの高頻度読み取り領域内にロードするステップと、
前記キャッシュ・アクセス要求がキャッシュ・ミスを発生させるストアであることに応じて、前記キャッシュ・コントローラがデータの前記キャッシュ・ラインを前記キャッシュの高頻度書き込み領域内に配置するステップと、
を含む、方法。
【請求項２】
前記キャッシュ・ラインに関連する飽和カウンタを初期化するステップをさらに含む、請求項１に記載の方法。
【請求項３】
第２のキャッシュ・アクセス要求を、前記キャッシュ・コントローラが受けるステップと、
前記第２のキャッシュ・アクセス要求によりアクセスされるキャッシュ・ラインが、前記高頻度読み取り領域または前記高頻度書き込み領域のうちの適切な領域内にあるかどうかを判断するステップと、
前記キャッシュ・ラインが適切な領域内にないことに応じて、前記キャッシュ・ラインと当該キャッシュ・ラインが属する領域ではない他の一方の領域内のキャッシュ・ラインとをスワップするステップと、
をさらに含む、請求項２に記載の方法。
【請求項４】
前記判断するステップは、
前記第２のキャッシュ・アクセス要求が、前記高頻度読み取り領域におけるストアであること又は前記高頻度書き込み領域におけるロードであることに応じて、前記飽和カウンタをデクリメントするステップと、
前記飽和カウンタが閾値未満であることに応じて、前記キャッシュ・ラインが前記適切な領域内にないと判断するステップと、
を含む、請求項３に記載の方法。
【請求項５】
第２のキャッシュ・アクセス要求を、前記キャッシュ・コントローラにおいて受けるステップと、
前記キャッシュ・アクセス要求が前記高頻度読み取り領域におけるロードであること又は前記高頻度書き込み領域におけるストアであることに応じて、前記飽和カウンタをインクリメントするステップと、
をさらに含む、請求項２に記載の方法。
【請求項６】
前記高頻度読み取り領域と前記高頻度書き込み領域との間のサイズの比が静的である、請求項１に記載の方法。
【請求項７】
請求項１乃至６のいずれかに記載の方法の各ステップをコンピュータに実行させる、プログラム。
【請求項８】
データ処理システムにおける、読み取り及び書き込みアウェア・キャッシュを備える装置であって、
処理ユニットと、
バンクのアレイを含むキャッシュ・アレイであって、前記バンクのアレイは、処理ユニットに近いバンクを含む高頻度読み取り領域及び前記処理ユニットから遠いバンクを含む高頻度書き込み領域を形成する、キャッシュ・アレイと、
前記キャッシュ・アレイ及び前記処理ユニットに結合されたキャッシュ・コントローラであって、前記処理ユニットからキャッシュ・アクセス要求を受け、
前記キャッシュ・アクセス要求がキャッシュ・ミスを発生させるロードであることに応じて、データのキャッシュ・ラインを前記高頻度読み取り領域内にロードし、
前記キャッシュ・アクセス要求がキャッシュ・ミスを発生させるストアであることに応じて、データのキャッシュ・ラインを前記高頻度書き込み領域内に配置するよう構成されている、キャッシュ・コントローラと、
を備える、装置。
【請求項９】
前記キャッシュ・コントローラは、前記キャッシュ・ラインに関連する飽和カウンタを初期化するようさらに構成されている、請求項８に記載の装置。
【請求項１０】
前記キャッシュ・コントローラは、前記第２のキャッシュ・アクセス要求を受け、前記第２のキャッシュ・アクセス要求によりアクセスされる前記キャッシュ・ラインが、前記高頻度読み取り領域または前記高頻度書き込み領域のうちの適切な領域内にあるかどうかを判断し、前記キャッシュ・ラインが前記適切な領域内にないことに応じて、前記キャッシュ・ラインと当該キャッシュ・ラインが属する領域ではない他の一方の領域内のキャッシュ・ラインとをスワップするようさらに構成されている、請求項９に記載の装置。
【請求項１１】
前記判断が、
前記キャッシュ・アクセス要求が前記高頻度読み取り領域におけるストア要求であること又は前記高頻度書き込み領域におけるロードであることに応じて、前記飽和カウンタをデクリメントすること、及び
前記飽和カウンタが閾値未満であることに応じて、前記キャッシュ・ラインが前記適切な領域内にないと判断すること、
を含む、請求項１０に記載の装置。
【請求項１２】
前記キャッシュ・コントローラは、
第２のキャッシュ・アクセス要求を受け、
前記第２のキャッシュ・アクセス要求が前記高頻度読み取り領域におけるロードであること又は前記高頻度書き込み領域におけるストアであることに応じて、前記飽和カウンタをインクリメントするようさらに構成されている、請求項９に記載の装置。
【請求項１３】
データ処理システムにおける読み取り及び書き込みアウェア・キャッシュを制御するためのプログラムであって、前記キャッシュはバンクのアレイを含み、前記バンクのアレイは前記処理ユニットに近いバンクを含む高頻度読み取り領域及び前記処理ユニットから遠いバンクを含む高頻度書き込み領域を備え、前記プログラムは、
前記キャッシュを制御するキャッシュ・コントローラが処理ユニットからキャッシュ・アクセス要求を受けるステップと、
前記キャッシュ・アクセス要求がキャッシュ・ミスを発生させるロードであることに応じて、前記キャッシュ・コントローラがデータのキャッシュ・ラインをキャッシュの高頻度読み取り領域内にロードするステップと、
前記キャッシュ・アクセス要求がキャッシュ・ミスを発生させるストアであることに応じて、前記キャッシュ・コントローラがデータの前記キャッシュ・ラインを前記キャッシュの高頻度書き込み領域内に配置するステップと、
を装置に実行させる、プログラム。
【請求項１４】
データ処理システムにおける読み取り及び書き込みアウェア・キャッシュを制御するキャッシュ・コントローラであって、前記キャッシュは前記処理ユニットに近いバンクを含む高頻度読み取り領域及び前記処理ユニットに対して遠いバンクを含む高頻度書き込み領域を備え、
処理ユニットからキャッシュ・アクセス要求を受ける手段と、
前記キャッシュ・アクセス要求がキャッシュ・ミスを発生させるロードであることに応じて、データのキャッシュ・ラインをキャッシュの高頻度読み取り領域内にロードする手段と、
前記キャッシュ・アクセス要求がキャッシュ・ミスを発生させるストアであることに応じて、データの前記キャッシュ・ラインを前記キャッシュの高頻度書き込み領域内に配置する手段と、
を備える、キャッシュ・コントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、全般的に、改善されたデータ処理装置及び方法に関し、特に、読み取り及び書き込みアウェア・キャッシュを提供する装置及び方法に関する。
【背景技術】
【０００２】
キャッシュは、データ転送の速度を上げるために使用され、データのステージング領域としての機能を果たす。メモリ・キャッシュは、命令実行、データ検索、及びデータ更新の速度を上げ、そのコンテンツは常に変化する。メモリ・キャッシュすなわち「ＣＰＵキャッシュ」は、メインメモリと中央処理ユニット（ＣＰＵ）との橋渡しをするメモリ・バンクである。メモリ・キャッシュは、メインメモリよりも高速であり、命令の実行並びにデータの読み取り及び書き込みを、より高速で行うことを可能にする。命令及びデータは、キャッシュ「ライン」として知られる固定ブロックで、メインメモリからキャッシュに転送される。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
大きなキャッシュについては、そのすべての部分がＣＰＵなどの所定のポイントから同じレイテンシでアクセス可能ではない。したがって、大きなキャッシュの設計のための新たなキャッシュ・アーキテクチャとして、不均一キャッシュ・アーキテクチャ（ＮＵＣＡ：Ｎｏｎ−ｕｎｉｆｏｒｍ  ｃａｃｈｅ  ａｒｃｈｉｔｅｃｔｕｒｅ）が生み出された。ＮＵＣＡ設計では、キャッシュは、バンクの配置、異なる配線遅延及びレイテンシのために、アクセス・ポイント（ＣＰＵなど）からのアクセス遅延が異なる複数のバンクに分割される。ＮＵＣＡにおいて見出される異なるレイテンシ特性をインテリジェントに管理することで、メモリ・システムの性能が改善される。
【０００４】
動的なＮＵＣＡ（Ｄ−ＮＵＣＡ：Ｄｙｎａｍｉｃ  ＮＵＣＡ）設計では、バンクのいずれか１つにラインが配置される。Ｄ−ＮＵＣＡは、従来のものと異なるキャッシュ配置及びデータ移動ポリシを使用して、高頻度でアクセスされるデータを、より近いバンクに置くことができる。処理ユニットに対し、第１のバンクが第２のバンクよりも短いレイテンシを有する場合、第１のバンクは第２のバンクに比べて「より近い」と定義される。したがって、より近いバンクからのデータには、より迅速にアクセス可能である。
【課題を解決するための手段】
【０００５】
例示のための一実施形態では、データ処理システムにおける、読み取り及び書き込みアウェア・キャッシュに関する方法が提供される。方法は、キャッシュ・コントローラがキャッシュ・アクセス要求を処理ユニットから受けるステップを含む。ロードのキャッシュ・アクセス要求がキャッシュ・ミスを発生させると、キャッシュ・コントローラは、データのキャッシュ・ラインをキャッシュの高頻度読み取り領域内にロードする。キャッシュは、バンクのアレイを含む。高頻度読み取り領域は、処理ユニットに近いバンクを含む。方法は、キャッシュ・コントローラが、キャッシュ・ストア・ミスの結果をキャッシュの高頻度書き込み領域に記憶するステップをさらに含む。高頻度書き込み領域は、処理ユニットから遠いバンクを含む。
【０００６】
他の実施形態では、コンピュータ可読プログラムを有するコンピュータ使用可能又は可読媒体を含むコンピュータ・プログラム製品が提供される。コンピュータ可読プログラムは、コンピューティング・デバイス上で実行されると、本方法の例示のための実施形態に関して上記で概要を述べた様々な個々の動作及び動作の組み合わせをコンピューティング・デバイスに実行させる。
【０００７】
例示のためのさらに別の実施形態では、読み取り及び書き込みアウェア・キャッシュに関する装置が提供される。この装置は、処理ユニットと、バンクのアレイを含むキャッシュ・アレイと、キャッシュ・アレイ及び処理ユニットに結合されたキャッシュ・コントローラとを含む。バンクのアレイは、高頻度読み取り領域及び高頻度書き込み領域を含む。高頻度読み取り領域は、バンクのアレイの中で、処理ユニットに近いバンクを含む。高頻度書き込み領域は、バンクのアレイの中で、処理ユニットからより遠いバンクを含む。キャッシュ・コントローラは、処理ユニットからキャッシュ・アクセス要求を受けるよう構成されている。アクセスが、キャッシュ・ミスを発生させるロードであれば、キャッシュ・コントローラは、データのキャッシュ・ラインを高頻度読み取り領域内にロードする。キャッシュ・ミスを発生させるストアに関しては、データのキャッシュ・ラインがキャッシュの高頻度書き込み領域内に配置されるよう、キャッシュ・コントローラはさらに構成されている。
【０００８】
本発明のこれらの特徴及び利点、並びに他の特徴及び利点が、以下の本発明の例示の実施形態の詳細な説明に記載されるか、又はこの説明を考慮することで当業者には明らかとなる。
【０００９】
例示のための実施形態の以下の詳細な説明を添付の図面と併せて読み、参照することで、本発明、並びにその好適な使用方法、並びにさらなる目的及び利点が、最もよく理解される。
【図面の簡単な説明】
【００１０】
【図１】例示のための実施形態の各側面が実装され得るデータ処理システムのブロック図である。
【図２】例示のための実施形態の各側面が実装され得る不均一キャッシュ・アーキテクチャを示すブロック図である。
【図３】例示のための実施形態による読み取り及び書き込みアウェア不均一キャッシュ・アーキテクチャを示すブロック図である。
【図４】例示のための実施形態による読み取り及び書き込みアウェア・キャッシュのハードウェア・サポートを示すブロック図である。
【図５】例示のための実施形態による読み取り及び書き込みアウェア・キャッシュのキャッシュ・コントローラの動作を示すフローチャートである。
【発明を実施するための形態】
【００１１】
例示のための実施形態は、読み取り及び書き込みアウェア・キャッシュを提供するメカニズムを提供する。このメカニズムは、大きなキャッシュを高頻度読み取り領域及び高頻度書き込み領域に分割する。このメカニズムは、不均一キャッシュ・アーキテクチャの置換ポリシにおいて、読み取り／書き込み頻度を考慮する。高頻度書き込みキャッシュ・ラインは、より遠いバンクのうちの１つに配置される。高頻度読み取りキャッシュ・ラインは、より近いバンクのうちの１つに配置される。高頻度読み取り及び高頻度書き込み領域のサイズの比は、静的であっても、又は動的であってもよい。高頻度読み取り領域と、高頻度書き込み領域との間の境界は、明確であってもよいし、ファジー（ｆｕｚｚｙ）であってもよい。
【００１２】
したがって、例示のための実施形態は、分散型データ処理環境、単一データ処理デバイス、又は同様のものを含む、多数の異なるタイプのデータ処理環境において利用され得る。例示のための実施形態の特定の構成要素及び機能性について記載するためのコンテキストを提供するべく、以下、例示のための実施形態の各側面が実装され得る例示の環境として図１及び２を提供する。図１及び２に付随する説明は、主として単一データ処理デバイス実装に焦点を当てるが、これは例でしかなく、本発明の特徴に関していかなる制限を提示することも、暗示することも目的としていない。反対に、例示のための実施形態は、分散データ処理環境を含むものとする。
【００１３】
以下、図面を参照する。特に図１及び２を参照すると、本発明の例示のための実施形態が実装され得るデータ処理環境の例示の図が提供されている。当然のことながら、図１及び２は例でしかなく、本発明の側面又は実施形態が実装され得る環境に関していかなる制限を主張することも暗示することも目的としていない。示される環境に対する多数の変更が、本発明の範囲から逸脱することなく加えられ得る。
【００１４】
以下、図面を参照する。図１は、例示のための実施形態の各側面が実装され得るデータ処理システムのブロック図である。データ処理システム１００は、例示のための実施形態に関して、プロセスを実装するコンピュータ使用可能プログラム・コード又は命令が位置し得るコンピュータの例である。この例示では、データ処理システム１００は、通信ファブリック１０２を含み、これは、プロセッサ・ユニット１０４、メモリ１０６、永続性記憶装置１０８、通信ユニット１１０、入出力（Ｉ／Ｏ）ユニット１１２、及びディスプレイ１１４間の通信を提供する。
【００１５】
プロセッサ・ユニット１０４は、メモリ１０６内にロードされ得るソフトウェアの命令を実行する働きをする。プロセッサ・ユニット１０４は、特定の実装に応じて、１つ以上のプロセッサのセットであってもよく、又はマルチ・プロセッサ・コアであってもよい。さらに、プロセッサ・ユニット１０４は、単一チップ上にメイン・プロセッサが二次プロセッサとともに存在する１つ以上の異種プロセッサ・システムを使用して実装されてもよい。別の例として、プロセッサ・ユニット１０４は、同じタイプのプロセッサを複数含む対称型マルチプロセッサ・システムであってもよい。
【００１６】
メモリ１０６及び永続性記憶装置１０８は、記憶デバイス１１６の例である。記憶デバイスは、例えば、限定はされないが、データ、関数形式のプログラム・コード、若しくはその他の適切な情報、又はそのいずれかの組み合わせなどの情報を、一時的若しくは永久的又はその両方で記憶できる任意のハードウェア部品である。こうした例では、メモリ１０６は、例えば、ランダム・アクセス・メモリ又はその他任意の適切な揮発性若しくは不揮発性記憶デバイスとしてよい。永続性記憶装置１０８は、特定の実装に応じて様々な形式をとり得る。例えば、永続性記憶装置１０８は、１つ以上のコンポーネント又はデバイスを含んでもよい。例えば、永続性記憶装置１０８は、ハード・ドライブ、フラッシュ・メモリ、書き換え可能な光ディスク、書き換え可能な磁気テープ、又は上記のものの何らかの組み合わせとしてもよい。さらに、永続性記憶装置１０８によって使用される媒体は、リムーバブルであってもよい。例えば、リムーバブル・ハード・ドライブが永続性記憶装置１０８に使用されてもよい。
【００１７】
処理ユニット１０４は、キャッシュ１３４を有するとよい。キャッシュ１３４は、レベル０（Ｌ０）若しくはレベル１（Ｌ１）キャッシュ、又はその両方であってもよい。メモリ１０６は、キャッシュ１３６を有するとよく、これは例えばレベル２（Ｌ２）キャッシュであってもよい。メモリ１０６は、複数のスレッド又は複数の処理ユニット間で共有される共有メモリであってもよい。したがって、キャッシュ１３６は、共有キャッシュであってもよい。
【００１８】
これらの例では、通信ユニット１１０は、他のデータ処理システム又はデバイスとの通信を提供する。これらの例では、通信ユニット１１０は、ネットワーク・インターフェイス・カードである。通信ユニット１１０は、物理的通信リンク及びワイヤレス通信リンクのいずれか又は両方を用いて通信を提供するとよい。
【００１９】
入出力ユニット１１２は、データ処理システム１００に接続されているとよい他のデバイスとのデータの入力及び出力を可能にする。例えば、入出力ユニット１１２は、キーボード、マウス、若しくはその他何らかの適切な入力デバイス、又はそのいずれかの組み合わせを介した、ユーザ入力のための接続を提供するとよい。さらに、入出力ユニット１１２は、出力をプリンタに送ってもよい。ディスプレイ１１４は、ユーザに対して情報を表示するメカニズムを提供する。
【００２０】
オペレーティング・システム、アプリケーション、若しくはプログラム、又はそのいずれかの組み合わせのための命令は、記憶デバイス１１６に位置してもよく、記憶デバイス１１６は、通信ファブリック１０２を介してプロセッサ・ユニット１０４と通信している。これらの例では、命令は関数形式で永続性記憶装置１０８上にある。これらの命令は、プロセッサ・ユニット１０４による実行のためにメモリ１０６内にロードされるとよい。種々の実施形態のプロセスは、メモリ１０６などのメモリ内に位置するとよいコンピュータ実装命令を使用してプロセッサ・ユニット１０４によって実行され得る。
【００２１】
これらの命令は、プログラム・コード、コンピュータ使用可能ブログラム・コード又はコンピュータ可読プログラム・コードと呼ばれ、プロセッサ・ユニット１０４内のプロセッサによって読み取り及び実行されるとよい。種々の実施形態のプログラム・コードは、メモリ１０６又は永続性記憶装置１０８など、種々の物理的な、又は有形のコンピュータ可読媒体上で具現化され得る。
【００２２】
プログラム・コード１１８は、選択的にリムーバブルであるコンピュータ可読媒体１２０上に関数形式で位置し、プロセッサ・ユニット１０４による実行のために、データ処理システム１００にロード又は転送されるとよい。プログラム・コード１１８及びコンピュータ可読媒体１２０は、これらの例において、コンピュータ・プログラム製品１２２を形成する。一例では、コンピュータ可読媒体１２０は、例えば、永続性記憶装置１０８の一部であるハード・ドライブなどの記憶デバイス上に転送されるよう、永続性記憶装置１０８の一部であるドライブ又は他のデバイスに挿入又は配置される、光学又は磁気ディスクなどの有形の形式であってもよい。有形の形式では、コンピュータ可読媒体１２０はさらに、データ処理システム１００に接続されるハード・ドライブ、サム・ドライブ、又はフラッシュ・メモリなどの永続性記憶装置の形式をとってもよい。有形の形式のコンピュータ可読媒体１２０は、コンピュータ記録可能記憶媒体とも呼ばれる。場合によっては、コンピュータ可読媒体１２０はリムーバブルでなくてもよい。
【００２３】
あるいは、プログラム・コード１１８は、通信ユニット１１０への通信リンク、若しくは入出力ユニット１１２への接続、又はその両方を介して、コンピュータ可読媒体１２０からデータ処理システム１００に転送されてもよい。通信リンク若しくは接続又はその両方は、例示では、物理的であっても、又はワイヤレスであってもよい。さらに、コンピュータ可読媒体は、プログラム・コードを含む通信リンク又はワイヤレス伝送などの非有形媒体の形式をとってもよい。
【００２４】
一部の例示のための実施形態では、プログラム・コード１１８は、データ処理システム１００内での使用のために、ネットワーク上で、別のデバイス又はデータ処理システムから永続性記憶装置１０８にダウンロードされてもよい。例えば、サーバ・データ処理システム内のコンピュータ可読記憶媒体に記憶されたプログラム・コードが、ネットワーク上でサーバからデータ処理システム１００にダウンロードされてもよい。プログラム・コード１１８を提供するデータ処理システムは、サーバ・コンピュータ、クライアント・コンピュータ、又はプログラム・コード１１８の記憶及び伝送ができる他の何らかのデバイスであってもよい。
【００２５】
データ処理システム１００に関して示されている種々のコンポーネントは、種々の実施形態が実装され得る方法に対して、アーキテクチャの制限を規定することを意図したものではない。種々の例示のための実施形態は、データ処理システム１００に関して示されたものに対し追加又は代わりのコンポーネントを含むデータ処理システムにおいて実装され得る。図１に示されている他のコンポーネントは、示されている例示とは異なることもあり得る。種々の実施形態は、プログラム・コードを実行できる任意のハードウェア・デバイス又はシステムを使用して実装され得る。
【００２６】
別の例として、データ処理システム１００内の記憶デバイスは、データを記憶し得る任意のハードウェア装置である。メモリ１０６、永続性記憶装置１０８、及びコンピュータ可読媒体１２０は、有形の形式の記憶デバイスの例である。
【００２７】
別の例では、通信ファブリック１０２を実装するためにバス・システムが使用されてもよく、システム・バス又は入出力バスなどの１つ以上のバスから成ってもよい。当然、バス・システムは、バス・システムに接続された種々のコンポーネント又はデバイス間のデータの転送を提供する任意の適切なタイプのアーキテクチャを使用して実装されるとよい。さらに、通信ユニットは、モデム又はネットワーク・アダプタなど、データの送受信に使用される１つ以上のデバイスを含んでもよい。さらに、メモリは、例えば通信ファブリック１０２内に存在し得るインターフェイス及びメモリ・コントローラ・ハブなどにあるメモリ１０６又はキャッシュであってもよい。
【００２８】
図２は、例示のための実施形態の各側面が実装され得る不均一キャッシュ・アーキテクチャを示すブロック図である。不均一キャッシュ・アーキテクチャ（ＮＵＣＡ）は、レベル１（Ｌ１）キャッシュを備えるコア２１０、レベル２（Ｌ２）キャッシュ・コントローラ２１２、及びＬ２キャッシュ・アレイ２２０を含む。例示のための実施形態によれば、読み取りの方が、キャッシュ・アクセス・レイテンシによる影響を書き込みに比べてより強く受けるため、Ｌ２キャッシュ・コントローラ２１２は、読み取り及び書き込みを違うように扱う。したがって、Ｌ２キャッシュ・コントローラ２１２は、新たなキャッシュ・ラインをＬ２キャッシュ２２０内に割り当てるとき、又はＬ２キャッシュ２２０内でキャッシュ・ラインを移動するとき、読み取り／書き込み頻度を考慮する。
【００２９】
図３は、例示のための実施形態による読み取り及び書き込みアウェア不均一キャッシュ・アーキテクチャを示すブロック図である。不均一キャッシュ・アーキテクチャ（ＮＵＣＡ）は、Ｌ１キャッシュを備えるコア３１０、Ｌ２キャッシュ・コントローラ３１２、並びに高頻度読み取り領域３２２及び高頻度書き込み領域３２４に分けられているＬ２キャッシュ・アレイを含む。Ｌ２キャッシュ・コントローラ３１２は、ＮＵＣＡにおける読み取り／書き込み頻度を考慮する。Ｌ２キャッシュ・コントローラ３１２は、頻繁に書き込まれるキャッシュ・ラインを、高頻度書き込み領域３２４内のより遠いバンクのうちの１つに配置し、頻繁に読み取られるキャッシュ・ラインを、高頻度読み取り領域３２２内のより近いバンクのうちの１つに配置する。さらに、ＮＵＣＡ置換に関しては、Ｌ２キャッシュ・コントローラ３１２は、頻繁に書き込まれるキャッシュ・ラインを高頻度書き込み領域３２４内のより遠いバンクに移動し、頻繁に読み取られるラインを、高頻度読み取り領域３２２内のより近いバンクに移動する。
【００３０】
高頻度読み取り領域３２２及び高頻度書き込み領域３２４のサイズの比は、静的であっても、又は動的であってもよい。すなわち、高頻度読み取り領域３２２及び高頻度書き込み領域３２４は、全般的な読み取り／書き込み頻度比情報に基づき、静的なサイズにセットされてもよい。例えば、キャッシュ・アレイの近い方の３分の２が、高頻度読み取り領域３２２に構成されてもよく、キャッシュ・アレイの遠い方の３分の１が、高頻度書き込み領域３２４として構成されてもよい。あるいは、Ｌ２キャッシュ・コントローラ３１２は、読み取り／書き込み頻度情報を考慮してもよく、高頻度読み取り領域３２２及び高頻度書き込み領域３２４を動的に再構成してもよい。例えば、Ｌ２キャッシュ・コントローラ３１２は、高頻度読み取り及び高頻度書き込みキャッシュ・ラインの実行時の比に基づき、高頻度読み取り領域３２２及び高頻度書き込み領域３２４を動的に再構成してもよい。１つの例示の実施形態では、Ｌ２キャッシュ・コントローラ３１２は、高頻度読み取り領域３２２のキャッシュ・ラインの割り当てをキャッシュ・アレイの前方（より近いバンク）から始めて開始してもよく、高頻度書き込み領域３２４のキャッシュ・ラインの割り当てをキャッシュ・アレイの後方（より遠いバンク）から開始してもよい。この例示の実施形態では、高頻度読み取り領域３２２と、高頻度書き込み領域３２４との間の境界はファジーであってもよい一方で、他の実施形態では、高頻度読み取り領域３２２と、高頻度書き込み領域３２４との間の境界は、固定され、すなわち静的であってもよい。
【００３１】
例示の実施形態では、Ｌ２キャッシュ・コントローラ３１２は、ソフトウェアを介して読み取り／書き込み頻度情報を受け取ってもよい。例えば、ソフトウェアは、ロード及びストア命令内で、ソフトウェアによって保持されている読み取り／書き込み頻度情報を示す専用ビットを提供してもよい。ソフトウェアはさらに、ページ・テーブル・エントリ内に読み取り／書き込み頻度情報の専用ビットを記憶してもよい。別の例示の実施形態では、ソフトウェアは、読み取り／書き込み頻度情報とともに、読み取りのためのプリフェッチ・キャッシュ・ライン又は書き込みのためのプリフェッチ・キャッシュ・ラインなど、専用キャッシュ命令を使用してもよい。
【００３２】
あるいは、Ｌ２キャッシュ・コントローラ３１２は、ハードウェアにおいて読み取り／書き込み頻度を検出してもよい。例えば、プリフェッチ・エンジン（図示せず）が、読み取り傾向及び書き込み傾向を検出してもよい。Ｌ２キャッシュ・コントローラ３１２は、頻繁に読み取られるキャッシュ・ライン及び頻繁に書き込まれるキャッシュ・ラインを検出するために、キャッシュ・ラインごとに飽和カウンタを保持してもよい。
【００３３】
例示のための実施形態によれば、Ｌ２キャッシュ・コントローラ３１２は、読み取り及び書き込みアウェア・キャッシュ用に、既知の置換ポリシを拡張するとよい。例えば書き込みミスに関しては、Ｌ２キャッシュ・コントローラ３１２は、Ｘの最長時間未使用（ＬＲＵ：ｌｅａｓｔ  ｒｅｃｅｎｔｌｙ  ｕｓｅｄ）キャッシュ・ラインの最も遠いキャッシュ・ラインを置換するとよく、Ｘは、２〜キャッシュ連想度の値であればよい。読み取りミスに関しては、Ｌ２キャッシュ・コントローラ３１２は、ＸのＬＲＵキャッシュ・ラインの最も近いラインを置換するとよい。別の例として、頻繁に読み取られるキャッシュ・ラインに関して、Ｌ２キャッシュ・コントローラ３１２は、高頻度読み取り領域３２２内のＬＲＵラインを置換してもよく、頻繁に書き込まれるキャッシュ・ラインに関して、Ｌ２キャッシュ・コントローラ３１２は、高頻度書き込み領域３２４内のＬＲＵラインを置換してもよい。
【００３４】
例示のための実施形態によれば、Ｌ２キャッシュ・コントローラ３１２は、読み取り及び書き込みアウェア・キャッシュ用に、既知のデータ移動ポリシを拡張するとよい。例えば、世代昇格（ｇｅｎｅｒａｔｉｏｎａｌ  ｐｒｏｍｏｔｉｏｎ）を使用して、Ｌ２キャッシュ・コントローラ３１２は、ライト・ヒットの後に単にキャッシュ・ラインをより近いバンクへとスワップしなくてもよい。データ移動ポリシに対するこうした拡張は、データ移動の削減をもたらし、電力消費が削減される。データ移動ポリシのより事前対応型の拡張として、頻繁に書き込まれるキャッシュ・ラインが、頻繁に読み取られるキャッシュ・ラインをより遠くのバンクに移動するスワップをトリガしてもよい。
【００３５】
図４は、例示のための実施形態による読み取り及び書き込みアウェア・キャッシュのハードウェア・サポートを示すブロック図である。タグ及びステータス・アレイ４１０は、読み取り領域４２０のタグ及びステータス・アレイと、書き込み領域４３０のタグ及びステータス・アレイとを含む。読み取り領域４２０のタグ及びステータス・アレイは、キャッシュの高頻度読み取り領域内の各キャッシュ・ラインの飽和カウンタ（ｓａｔ  ｃｎｔ：ｓａｔｕｒａｔｉｏｎ  ｃｏｕｎｔｅｒ）、有効ビット、及びタグを含む。同様に、書き込み領域４３０のタグ及びステータス・アレイは、キャッシュの高頻度書き込み領域内の各キャッシュ・ラインの飽和カウンタ、有効ビット、及びタグを含む。データ・アレイ４５０は、読み取り領域４６０及び書き込み領域４７０を含む。
【００３６】
デコーダ４４０は、キャッシュに対する読み取り及び書き込みのアドレスをデコードする。キャッシュ・アクセスのアドレスは、タグ、インデックス、及びオフセットを含むとよい。読み取り領域４２０のタグ及びステータス・アレイが、タグを比較する。読み取り領域４２０のタグ及びステータス・アレイにおいて、キャッシュ・ラインに関しタグが一致し、有効ビットがセットされていれば、キャッシュ・アクセスは、読み取り領域４６０におけるキャッシュ・ヒットを発生させる。同様に、書き込み領域４３０のタグ及びステータス・アレイは、タグを比較する。書き込み領域４３０のタグ及びステータス・アレイにおいて、キャッシュ・ラインに関しタグが一致し、有効ビットがセットされていれば、キャッシュ・アクセスは、書き込み領域４７０におけるヒットを発生させる。
【００３７】
読み取り領域４２０のタグ及びステータス・アレイにおけるヒットに関して、デコーダ４４０は、インデックス及びオフセットを使用して、高頻度読み取り領域４６０内のキャッシュ・ラインにアクセスする。書き込み領域４３０のタグ及びステータス・アレイにおけるヒットに関して、デコーダ４４０は、インデックス及びオフセットを使用して、高頻度書き込み領域４７０内のキャッシュ・ラインにアクセスする。頻繁に読み取られたキャッシュ・ラインであって、頻繁に書き込みが行われているキャッシュ・ラインは、高頻度読み取り領域４６０から高頻度書き込み領域４７０に移動されてもよい。頻繁に書き込まれたキャッシュ・ラインであって、続いて頻繁に読み取りが行われているキャッシュ・ラインは、スワップ・バッファ４８０を介して、高頻度書き込み領域４７０から高頻度読み取り領域４６０に移動されてもよい。
【００３８】
当業者であれば当然のことであるが、本発明は、システム、方法、又はコンピュータ・プログラム製品として具現化され得る。したがって、本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、又は本願明細書においてすべて概して「回路」、「モジュール」若しくは「システム」と呼ばれることもある、ソフトウェア及びハードウェアの側面を兼ね備えた実施形態の形式をとってもよい。さらに、本発明は、任意の有形の表現媒体に具現化されたコンピュータ使用可能プログラム・コードを有する該媒体において具現化されたコンピュータ・プログラム製品の形式をとることもできる。
【００３９】
１つ以上のコンピュータ使用可能又はコンピュータ可読媒体（単数又は複数）の任意の組み合わせが利用され得る。コンピュータ使用可能又はコンピュータ可読媒体は、例えば、限定はされないが、電子、磁気、光学、電磁気、赤外線、若しくは半導体システム、装置、デバイス、又は伝播媒体とすることもできる。コンピュータ可読媒体のより具体的な例（包括的でないリスト）には、１つ以上のワイヤを有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤＲＯＭ）、光学式記憶デバイス、インターネット若しくはイントラネットをサポートするものなどの伝送媒体、又は磁気記憶デバイスがあると考えられる。なお、プログラムは、例えば紙又は他の媒体の光学式走査により電子的に獲得され、続いて必要に応じコンパイル、解釈、又は適切な方法により別の形で処理され、続いてコンピュータ・メモリに記憶されることが可能なため、コンピュータ使用可能又はコンピュータ可読媒体は、プログラムが印刷される紙又は別の適切な媒体とすることさえもできる。この文書の文脈では、コンピュータ使用可能又はコンピュータ可読媒体は、命令実行システム、装置若しくはデバイスによって、又はそれに関連して使用されるプログラムを含むこと、記憶すること、伝達すること、伝播させること、又は搬送することができる任意の媒体であればよい。コンピュータ使用可能媒体は、ベースバンドにおいて、又は搬送波の一部として伝播データ信号により具現化されたコンピュータ使用可能プログラム・コードを備える該伝播データ信号を含むこともできる。コンピュータ使用可能プログラム・コードは、ワイヤレス、有線、光ファイバ・ケーブル、無線周波数（ＲＦ：ｒａｄｉｏ  ｆｒｅｑｕｅｎｃｙ）などを含むがこれらに限定されない、任意の適切な媒体を使用して伝送されることもできる。
【００４０】
本発明の動作を実行するコンピュータ・プログラム・コードは、Ｊａｖａ（ＴＭ）、Ｓｍａｌｌｔａｌｋ（ＴＭ）、Ｃ＋＋又は同様のものなどのオブジェクト指向プログラミング言語、及び「Ｃ」プログラミング言語若しくは同様のプログラミング言語などの従来の手続きプログラミング言語を含む、１つ以上のプログラミング言語の任意の組み合わせで書かれていてよい。プログラム・コードは、スタンド・アロン・ソフトウェア・パッケージとして、完全にユーザのコンピュータ上で実行されること、部分的にユーザのコンピュータ上で実行されること、又は部分的にユーザのコンピュータ上で、且つ部分的にリモート・コンピュータ上で実行されること、又は完全にリモート・コンピュータ若しくはサーバ上で実行されることもできる。後者のシナリオでは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含む任意の種類のネットワークを介してリモート・コンピュータがユーザのコンピュータに接続されてもよく、又は、外部コンピュータに接続されてもよい（例えば、インターネット・サービス・プロバイダを使用しインターネットを介して）。さらに、プログラム・コードは、サーバ又はリモート・コンピュータ上のコンピュータ可読記憶媒体上で具現化され、リモート・コンピュータ又はユーザのコンピュータのコンピュータ可読記憶媒体に、記憶若しくは実行又はその両方のためにネットワーク上でダウンロードされることもできる。さらに、コンピューティング・システム又はデータ処理システムのいずれかが、リモート・コンピューティング・システム又はデータ処理システムからネットワーク上でプログラム・コードをダウンロードした後に、コンピュータ可読記憶媒体にプログラム・コードを記憶することもできる。
【００４１】
本発明の例示のための実施形態による方法、装置（システム）、及びコンピュータ・プログラム製品のフローチャート図若しくはブロック図又はその両方を参照して、例示のための実施形態について以下に記載する。当然のことながら、フローチャート図若しくはブロック図又はその両方の各ブロック、及びフローチャート図若しくはブロック図又はその両方の複数ブロックの組み合わせは、コンピュータ・プログラム命令により実装可能である。マシンを生じるよう、当該コンピュータ・プログラム命令が、汎用コンピュータ、専用コンピュータ、又はその他のプログラム可能データ処理装置のプロセッサに提供されて、この命令が、コンピュータ又はその他のプログラム可能データ処理装置のプロセッサにより実行されて、フローチャート若しくはブロック図又はその両方のブロック若しくは複数ブロックにおいて指定された機能／動作を実装する手段を作り出すようにすることもできる。
【００４２】
さらに、特定の形で機能するようコンピュータ又はその他のプログラム可能データ処理装置に指示することができる当該コンピュータ・プログラム命令は、コンピュータ可読媒体に記憶されて、コンピュータ可読媒体に記憶されたこの命令が、フローチャート若しくはブロック図又はその両方のブロック若しくは複数ブロックにおいて指定された機能／動作を実装する命令手段を含む製品を生じるようにすることもできる。
【００４３】
さらに、コンピュータ・プログラム命令は、コンピュータ又はその他のプログラム可能データ処理装置にロードされて、コンピュータ又はその他のプログラム可能装置上で一連の動作ステップが実行されるようにしてコンピュータに実装されるプロセスを生じさせ、コンピュータ又はその他のプログラム可能装置上で実行される命令が、フローチャート若しくはブロック図又はその両方のブロック若しくは複数ブロックにおいて指定された機能／動作を実装するためのプロセスを提供するようにすることもできる。
【００４４】
各図面のフローチャート及びブロック図は、本発明の様々な実施形態によるシステム、方法及びコンピュータ・プログラム製品の考えられる実装のアーキテクチャ、機能性及び動作を示す。この関連で、フローチャート又はブロック図内の各ブロックは、指定の論理機能（単数又は複数）を実装する１つ以上の実行可能命令を含むモジュール、セグメント、又はコードの一部を表すこともできる。なお、さらに、いくつかの代わりの実装では、ブロック内に示されている機能が、図面に示されているのとは異なる順序で生じてもよい。例えば、関連する機能性次第で、連続して示されている２つのブロックが実際には事実上同時に実行されてもよく、又は、各ブロックが逆順で実行されることがあってもよい。なお、さらに、ブロック図若しくはフローチャート図又はその両方の各ブロック、及びブロック図若しくはフローチャート図又はその両方の複数ブロックの組み合わせは、指定の機能若しくは動作を実行する専用ハードウェア・ベース・システム、又は専用ハードウェア及びコンピュータ命令の組み合わせにより実装することができる。
【００４５】
図５は、例示のための実施形態による読み取り及び書き込みアウェア・キャッシュのキャッシュ・コントローラの動作を示すフローチャートである。動作が始まり、キャッシュ・コントローラがキャッシュ・アクセス要求を受ける（ブロック５０２）。キャッシュ・コントローラは、キャッシュ・アクセス要求がキャッシュ・ヒットを発生させるかどうかを判断する（ブロック５０４）。キャッシュ・アクセス要求がキャッシュ・ヒットを発生させなければ、キャッシュ・コントローラは、新たなキャッシュ・ラインをキャッシュ・アレイ内に割り当てる（ブロック５０６）。続いてキャッシュ・コントローラは、キャッシュ・アクセスがロードであるかストアであるかを判断する（ブロック５０８）。キャッシュ・アクセスがロードであれば、キャッシュ・コントローラは、キャッシュ・ラインをキャッシュの高頻度読み取り領域内にロードし（ブロック５１０）、キャッシュ・ラインの飽和カウンタを初期化する（ブロック５１２）。その後、動作は終了する。ブロック５０８において、キャッシュ・アクセスがストアであれば、キャッシュ・コントローラは、キャッシュ・ラインをキャッシュの高頻度書き込み領域内にロードし（ブロック５１４）、キャッシュ・ラインの飽和カウンタを初期化する（ブロック５１６）。その後、動作は終了する。
【００４６】
例示のための実施形態によれば、飽和カウンタは、キャッシュ・ラインが適切な領域内にあるかどうかを決定する。別の実施形態では、１つ以上のカウンタが、読み取り／書き取り頻度を判断するために使用され得る。例えば、単一のカウンタが使用されて、読み取りの場合はインクリメントされ、書き込みの場合はデクリメントされてもよい。別の例では、キャッシュ・コントローラは、別々の読み取り及び書き込みカウンタを保持してもよい。さらに、別の実施形態では、キャッシュ・コントローラは、例えば、インクリメント／デクリメントの重みを調整すること、又は読み取り及び書き込みカウンタと種々の閾値とを比較することによって、違うように読み取り及び書き込みを重み付けしてもよい。
【００４７】
図５に戻る。ブロック５０４においてキャッシュ・アクセス要求がヒットを発生させれば、キャッシュ・コントローラは、キャッシュ・アクセスが高頻度読み取り領域におけるロード、又は高頻度書き込み領域におけるストアであるかどうかを判断する（ブロック５１８）。言い換えると、ブロック５１８においてキャッシュ・コントローラは、キャッシュ・ラインが割り当てられている領域に、キャッシュ・アクセスが一致するかどうかを判断する。キャッシュ・コントローラが、キャッシュ・アクセスは、高頻度読み取り領域におけるロードである、又は高頻度書き込み領域におけるストアであると判断すれば、キャッシュ・コントローラは、キャッシュ・ラインからデータを提供し（ブロック５２０）、キャッシュ・ラインに関連する飽和カウンタをインクリメントする（ブロック５２２）。その後、動作は終了する。
【００４８】
ブロック５１８において、キャッシュ・アクセスが高頻度読み取り領域におけるロードではなく、且つ高頻度書き込み領域におけるストアでなければ、キャッシュ・アクセスは、高頻度読み取り領域におけるストア又は高頻度書き込み領域におけるロードであり、キャッシュ・アクセスは、キャッシュ・ラインが割り当てられている領域と一致しない。この場合、キャッシュ・コントローラは、キャッシュ・ラインからデータを提供し（ブロック５２４）、キャッシュ・ラインに関連する飽和カウンタをデクリメントする（ブロック５２６）。続いて、キャッシュ・コントローラは、飽和カウンタの最上位ビット（ＭＳＢ：ｍｏｓｔ  ｓｉｇｎｉｆｉｃａｎｔ  ｂｉｔ）がゼロであるかどうかを判断する（ブロック５２８）。
【００４９】
示されている例では、飽和カウンタのＭＳＢがゼロでなければ、キャッシュ・ラインは適切な領域内にあり、動作は終了する。ブロック５２８において、飽和カウンタのＭＳＢがゼロであれば、キャッシュ・ラインは適切な領域内にない。この場合、キャッシュ・コントローラは、他の一方の領域内のキャッシュ・ラインを選択し、現在のキャッシュ・ラインと、選択されたキャッシュ・ラインとをスワップする（ブロック５３０）。続いてキャッシュ・コントローラは、スワップされたキャッシュ・ラインに関連する飽和カウンタを初期化して（ブロック５３２）、動作は終了する。
【００５０】
このようにして、例示のための実施形態は、読み取り及び書き込みアウェア・キャッシュを提供するメカニズムを提供する。このメカニズムは、大きなキャッシュを高頻度読み取り領域及び高頻度書き込み領域に分割する。このメカニズムは、不均一キャッシュ・アーキテクチャの置換ポリシにおいて、読み取り／書き込み頻度を考慮する。頻繁に書き込まれるキャッシュ・ラインは、より遠いバンクのうちの１つに配置される。頻繁に読み取られるキャッシュ・ラインは、より近いバンクのうちの１つに配置される。高頻度読み取り及び高頻度書き込み領域のサイズの比は、静的であっても、又は動的であってもよい。高頻度読み取り領域と、高頻度書き込み領域との間の境界は、明確であっても、又はファジーであってもよい。
【００５１】
上述のとおり、当然のことながら、例示のための実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、又はハードウェア及びソフトウェア両方の構成要素を含む実施形態の形式をとり得る。例示の一実施形態では、例示のための実施形態のメカニズムは、限定はされないがファームウェア、常駐ソフトウェア、マイクロコードなどを含むソフトウェア又はプログラム・コードにおいて実装される。
【００５２】
プログラム・コードの記憶若しくは実行又はその両方に適したデータ処理システムは、システム・バスを介してメモリ要素に直接又は間接的に結合された少なくとも１つのプロセッサを含む。メモリ要素は、プログラム・コードを実際に実行する間に用いられるローカル・メモリ、大容量記憶装置、及び、実行中にコードが大容量記憶装置から読み出されなければならない回数を減らすために少なくとも一部のプログラム・コードの一時的な記憶装置となるキャッシュ・メモリを含むことができる。
【００５３】
入出力、すなわちＩ／Ｏデバイス（限定はされないが、キーボード、ディスプレイ、ポインティング・デバイスなどを含む）は、直接、又は介在するＩ／Ｏコントローラを介して、システムに結合されることが可能である。ネットワーク・アダプタもシステムに結合されて、データ処理システムが、他のデータ処理システム又はリモート・プリンタ又は記憶デバイスに、介在するプライベート又はパブリック・ネットワークを介して結合された状態となることを可能にしてもよい。モデム、ケーブル・モデム、及びイーサネット（Ｒ）カードが、現在利用可能なタイプのネットワーク・アダプタのごく一部である。
【００５４】
本発明の記載は、例証及び説明のために示されたものであり、包括的であることも、開示された形式の発明に限定されることも目的としていない。当業者には、多数の変更及び変形が明らかであろう。実施形態は、本発明の原理、実際の応用を最もよく説明して、当業者が、意図される特定の用途に適する様々な変更を用いた様々な実施形態に関して、本発明を理解できるように選ばれ、記載された。
【図１】
0005511965.tif 000002
【図２】
0005511965.tif 000003
【図３】
0005511965.tif 000004
【図４】
0005511965.tif 000005
【図５】
0005511965.tif 000006