(57)【要約】キャッシュメモリにデータ割り当てを効率的に行うシステム及び方法を記載する。アクセス要求を検出することに応答して、キャッシュのルックアップが行われる。ターゲットデータがキャッシュに見つかり、ターゲットデータが、ターゲットデータの再使用が予測されないことを示す非割り当てデータタイプである場合、ターゲットデータは、そのアクセスに応答して、ターゲットデータのキャッシュ置換ポリシー情報を更新せずに、キャッシュから読み取られる。ルックアップがミスになる場合、ターゲットデータは、キャッシュに割り当てられない。【選択図】図３
2019537162.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するための複数のブロックを含むキャッシュと、
前記キャッシュに接続されたキャッシュコントローラと、を備え、
前記キャッシュコントローラは、所定のデータに対するアクセス要求を検出したことに応じて、
前記所定のデータの再使用が予測されると示されているか否かを判別することと、
前記アクセス要求が前記キャッシュにおいてミスしたと判別したことに応じて、前記所定のデータの再使用が予測されると示されていると判別したことに応じて、前記所定のデータを前記キャッシュに割り当てることと、前記所定のデータの再使用が予測されないと示されていると判別したことに応じて、前記所定のデータの前記キャッシュへの割り当てを抑制することと、
を行うように構成されている、
コンピューティングシステム。
【請求項２】
前記キャッシュコントローラは、前記アクセス要求が前記キャッシュにおいてヒットしたと判別したことに応じて、前記アクセスに応じて前記キャッシュ内の前記所定のデータのキャッシュ置換ポリシー情報を更新しない、
請求項１のコンピューティングシステム。
【請求項３】
前記キャッシュ置換ポリシー情報は、最長未使用時間（least recently used）データである、
請求項２のコンピューティングシステム。
【請求項４】
前記所定のデータの再使用が予測されると示されているか否かを判別することは、前記所定のデータの再使用が予測されるか否かを示す前記アクセス要求内の指標を検出することを含む、
請求項１のコンピューティングシステム。
【請求項５】
前記所定のデータの再使用が予測されると示されているか否かを判別することは、前記アクセス要求が所定のアドレス範囲内のアドレスを示しているのを判別することを含む、
請求項１のコンピューティングシステム。
【請求項６】
前記所定のデータの再使用が予測されないと判別することは、前記所定のデータがグラフィックスパイプラインにおける頂点シェーディングの結果を含むと判別することを含む、
請求項１のコンピューティングシステム。
【請求項７】
前記キャッシュコントローラは、
前記アクセス要求が、前記キャッシュにおいてヒットした書き込み要求であると判別することと、前記所定のデータが前記キャッシュにおいてクリーンであると検出したことと、に応じて、書き込みデータによって変更することなく、前記キャッシュから前記所定のデータを割り当て解除するように構成されている、
請求項１のコンピューティングシステム。
【請求項８】
前記キャッシュコントローラは、書き込み要求データを下位レベルのメモリに送るように構成されている、
請求項７のコンピューティングシステム。
【請求項９】
前記キャッシュコントローラは、
前記所定のデータ内のクリーンなサブブロックとダーティなサブブロックとの両方を識別することと、
書き込み要求データを用いて変更することなく、前記キャッシュから前記クリーンなサブブロックを割り当て解除することと、
書き込み要求データを用いて前記ダーティなサブブロックを変更することと、
を行うように構成されている、
請求項７のコンピューティングシステム。
【請求項１０】
メモリシステムのデータを管理する方法であって、
インタフェースロジックが、
前記メモリシステムに記憶された所定のデータへのアクセス要求を受信することと、
キャッシュ制御ロジックが、
前記所定のデータの再使用が予測されると示されているか否かを判別することと、
前記アクセス要求が前記キャッシュにおいてミスしたと判別したことに応じて、前記所定のデータの再使用が予測されると示されていると判別したことに応じて、前記所定のデータを前記キャッシュに割り当てることと、前記所定のデータの再使用が予測されないと示されていると判別したことに応じて、前記所定のデータの前記キャッシュへの割り当てを抑制することと、を含む、
方法。
【請求項１１】
前記方法は、前記アクセス要求が前記キャッシュにおいてヒットした判別したことに応じて、前記アクセスに応じて前記所定のデータのキャッシュ置換ポリシー情報の更新を抑制することを含む、
請求項１０の方法。
【請求項１２】
前記キャッシュ置換ポリシー情報は、最長未使用時間（least recently used）データである、
請求項１１の方法。
【請求項１３】
前記アクセス要求が、前記キャッシュにおいてヒットした書き込み要求であると判別することと、前記所定のデータが前記キャッシュにおいてクリーンであると検出したことと、に応じて、前記書き込み要求によって変更することなく、前記キャッシュから前記所定のデータを割り当て解除することを含む、
請求項１０の方法。
【請求項１４】
書き込み要求データを下位レベルのメモリに送ることを含む、
請求項１３の方法。
【請求項１５】
前記所定のデータ内のクリーンなサブブロックとダーティなサブブロックとの両方を識別することと、
書き込み要求データを用いて変更することなく、前記キャッシュから前記クリーンなサブブロックを割り当て解除することと、
書き込み要求データを用いて前記ダーティなサブブロックを変更することと、を含む、
請求項１３の方法。
【請求項１６】
前記所定のデータが再使用されないと判別することは、前記所定のデータがグラフィックスパイプラインの頂点シェーディングの結果を含むと判別することを含む、
請求項１０の方法。
【請求項１７】
データを記憶するための複数のブロックを含むキャッシュに接続された第１インタフェースと、
制御ユニットと、を備え、
前記制御ユニットは、所定のデータに対するアクセス要求を検出したことに応じて、
前記所定のデータの再使用が予測されると示されているか否かを判別することと、
前記アクセス要求が前記キャッシュにおいてミスしたと判別したことに応じて、前記所定のデータの再使用が予測されると示されていると判別したことに応じて、前記所定のデータを前記キャッシュに割り当てることと、前記所定のデータの再使用が予測されないと示されていると判別したことに応じて、前記所定のデータの前記キャッシュへの割り当てを抑制することと、
を行うように構成されている、
キャッシュコントローラ。
【請求項１８】
前記制御ユニットは、前記アクセス要求が前記キャッシュにおいてヒットしたと判別したことに応じて、前記アクセスに応じて前記キャッシュ内の前記所定のデータのキャッシュ置換ポリシー情報を更新しない、
請求項１７のキャッシュコントローラ。
【請求項１９】
前記キャッシュ置換ポリシー情報は、最長未使用時間（least recently used）データである、
請求項１８のキャッシュコントローラ。
【請求項２０】
前記制御ユニットは、
前記アクセス要求が、前記キャッシュにおいてヒットした書き込み要求であると判別することと、前記所定のデータが前記キャッシュにおいてクリーンであると検出したことと、に応じて、書き込み要求データによって変更することなく、前記キャッシュから前記所定のデータを割り当て解除するように構成されている、
請求項１７のキャッシュコントローラ。
【発明の詳細な説明】
【背景技術】
【０００１】
様々な実施形態において、マイクロプロセッサは、１つ以上のレベルのキャッシュ階層に接続されている。当技術分野で周知のように、キャッシュは、メモリに記憶されたデータに対する要求のレイテンシを低減するために使用される。一般的に、キャッシュは、１つ以上のデータブロックを記憶し、各データブロックは、システムメモリの対応するアドレスに記憶されたデータのコピーである。データは、キャッシュに存在する間、マイクロプロセッサによって操作されるときに更新され得る。キャッシュのサイズが有限であるため、キャッシュブロックの総数は本質的に制限される。また、セットアソシエイティブキャッシュの所定のセットにマップするブロック数に制限がある。
【０００２】
特定のデータが、利用可能なキャッシュストレージ位置を占有すると、占有されたキャッシュ位置は、その位置に現在記憶されているデータがエビクトされるまで、他のデータが利用できない。しかし、場合によっては、キャッシュに記憶された特定のデータが再使用されないか、所定の回数未満しか再使用されないことが予測される（例えば、データが１回のみ、又は、比較的少ない回数しか再使用されないことが予測される場合がある）。結果として、再使用が予測されない状態でキャッシュを占有しているデータによって、再使用される予測の高い他のデータが、当該キャッシュの位置を使用できなくなる。この結果、アクセスレイテンシが増加し、全体的なパフォーマンスが低下する可能性がある。
【０００３】
上記の観点から、キャッシュメモリにおけるデータ割り当てを効率的に行うための有効な方法及びシステムが望まれる。
【図面の簡単な説明】
【０００４】
【図１】データストレージの一実施形態の一般的な図である。
【図２】再使用が予測されないデータを有するアプリケーションを処理する方法の一実施形態の一般的な図である。
【図３】再使用が予測されないデータの読み出しアクセス要求を行う方法の一実施形態の一般的な図である。
【図４】再使用が予測されないデータの書き込みアクセス要求を行う方法の一実施形態の一般的な図である。
【発明を実施するための形態】
【０００５】
本発明は、様々な修正及び代替形態を受け入れることができるが、特定の実施形態について、例として図面に示し、本明細書で詳細に説明する。しかしながら、図面及び図面に関する詳細な説明は、本発明を開示された特定の形態に限定することを意図するものではなく、逆に、本発明は、添付の特許請求の範囲によって定義される本発明の範囲内にある全ての修正、均等物及び代替物を包含するものであることを理解されたい。
【０００６】
以下の説明では、本発明の完全な理解を提供するために、多くの特定の詳細を説明する。しかしながら、当業者は、本発明がこれらの特定の詳細無しに実施可能であることを認識されたい。いくつかの例においては、本発明を不明瞭にしないように、周知の回路、構造及び技術を詳細に示していない。さらに、説明を簡単且つ明確にするために、図に示す要素は、必ずしも縮尺通りに描かれていないことが理解されるであろう。例えば、一部の要素の寸法は、他の要素と比べて誇張されている。
【０００７】
再使用が予測されないデータをストレージアレイに割り当てるシステム及び方法が考えられる。様々な実施形態では、ストレージアレイは、データを記憶する複数のブロックを含み、ストレージコントローラは、複数のブロックへのアクセスを制御するためにストレージアレイに接続されている。いくつかの実施形態では、ストレージアレイは、セットアソシエイティブキャッシュアレイである。しかしながら、他の実施形態では、ストレージアレイは、例えばフルアソシエイティブキュー、コンテンツアドレッサブルメモリ（ＣＡＭ）アレイ、ファーストインファーストアウト（ＦＩＦＯ）キュー、ダイレクトマップドキャッシュ等の様々なストレージリソースのうちの１つである。
【０００８】
様々な実施形態では、ストレージアレイに記憶されたデータは、再使用が予測されないデータとしてマークされる。いくつかの実施形態では、ストレージアレイの所定のデータに対するアクセス要求は、アクセスされている当該所定のデータの再使用が予測されないという指標を含む。いくつかの実施形態では、ストレージコントローラは、アクセス要求が特定のアドレス範囲をターゲットにしているか否か、又は、所定のソース識別子（ＩＤ）に関連付けられているか否かを判別することによって、当該アクセス要求が、再使用が予測されないデータに対応するものであるか否かを判別する。さらに、様々な実施形態では、ストレージコントローラは、アクセス要求に対する所定のデータがストレージアレイ内で検出されない場合、再使用が予測されないタイプの所定のデータをストレージアレイに割り当てることを抑制する。
【０００９】
図１を参照すると、データストレージの１００の一実施形態の一般的なブロック図が示されている。ストレージアレイ１１０は、データと、対応するメタデータと、を記憶するための複数のエントリを含む。様々な実施形態では、ストレージアレイ１１０は、汎用プロセッサ又は並列アーキテクチャプロセッサ（例えば、グラフィックス処理ユニット若しくはデジタル信号プロセッサ等）によって処理される複数のスレッドによって共有される。一実施形態においては、ストレージアレイ１１０は、プロセッサコアにデータを記憶するために使用されるキューに対応する。他の実施形態では、ストレージアレイ１１０は、キャッシュメモリ階層の１つ以上のレベルのうち所定のレベルのキャッシュアレイに対応する。例えば、ストレージアレイは、セットアソシエイティブキャッシュアレイである。しかし、他の実施形態では、ストレージアレイは、例えば、フルアソシエイティブキュー、コンテンツアドレッサブルメモリ（ＣＡＭ）アレイ、ファーストインファーストアウト（ＦＩＦＯ）キュー、ダイレクトマップドキャッシュ等の様々なストレージリソースのうちの１つである。
【００１０】
図示するように、ストレージアレイ１１０の各エントリは、複数のフィールド１１２〜１１８を含む。フィールド１１２〜１１８に記憶された情報が連続して記憶されているように示されているが、様々な実施形態では、データは、異なる順で記憶され、非連続に記憶され、図示されていない他のフィールドを用いて記憶される。また、いくつかの実施形態では、ストレージアレイ１１０は、フィールド１１２〜１１８を記憶するための２つ以上の別個のアレイを含む。
【００１１】
様々な実施形態において、再使用データタイプフィールド１１２は、エントリに関連するデータが、非割り当てデータタイプ１２０であることを示している。以下に「非割り当てデータタイプ」を説明するが、これは、正確にはデータタイプではなく、データに関連するキャッシュポリシーとみなすことができる。したがって、非割り当てデータタイプと言う場合、代替的に、データに関連する非割り当てポリシーと読み取られてもよい。様々な実施形態では、非割り当てデータタイプは、そのデータの再使用が予測されないことを示す。例えば、データは、１回だけ生成され使用されると判別されるが、他のデータは、複数回再使用されることが予測される場合がある。一例では、ビデオグラフィックスレンダリングは、ベクトルシェーディング計算を含む。いくつかの頂点シェーディング結果は、効率的な処理のために再使用されるが、他の頂点シェーディング結果は、１回だけ使用される。何れの結果が再使用され、何れの結果が１回だけ使用されるのかを示すために、頂点インデックスが使用される。１回だけ使用されると示された結果は、非割り当てデータタイプ１２０でマークされる。
【００１２】
様々な実施形態では、非割り当てデータタイプ１２０は、ストレージアレイ１１０に対する読み出し／書き込み動作を処理するアルゴリズムによって使用されるステップを変更する。後述するように、これらの変更の目的は、再使用が予測されないデータを記憶しているストレージアレイ１１０の割り当てエントリ数を減らすことにある。様々な実施形態では、アクセス要求のソースは、データの再使用が予測されないときを判別し、当該データが非割り当てデータタイプ１２０に対応するという指標を提供する。
【００１３】
いくつかの実施形態では、特定のデータが所定回数使用されると予測されることを判別する。上記の頂点シェーディングの例では、結果データに関連する頂点インデックスは、結果データが１回ではなく２回使用されることを示す。いくつかの実施形態では、テーブルは、データのフレームのパーティションのための頂点インデックスを記憶し、関連する結果データが後に使用される回数を頂点インデックスが示していることを、テーブルから判別する。様々な実施形態では、結果データの予測される使用回数のカウントを維持する。カウントは、結果データが、計算完了ベース、スレッド完了ベース、アクセス完了ベース又は他のベースで使用される毎にデクリメントされる等して更新される。結果データがこれ以上再使用されることが予測されないことをカウントが示す場合、結果データは、非割り当てデータタイプ１２０としてマークされる。その後、データは、非割り当てタイプに対応するものとして扱われてもよい。
【００１４】
いくつかの実施形態では、他のデータプロパティフィールド１１４は、エントリに記憶されたデータが、特定の計算、プロセス識別子（ＩＤ）及び／又はスレッドＩＤ、優先レベル、ノード所有者（node ownership）ＩＤ、ノード所有者がリモートかローカルかの指標等、に対応することを示している。様々な実施形態では、ステータスフィールド１１６は、ストレージコントローラ１３０が使用するストレージブロック置換アルゴリズムに関連して使用されるＬＲＵ（Least Recently Used）（最長未使用時間）キャッシュ置換ポリシー情報等の経過時間情報を記憶する。また、ステータスフィールド１１６は、記憶されたデータのクリーン（未修正）又はダーティ（修正済）ステータスの指標と、記憶されたデータの有効ステータスと、を記憶する。いくつかの実施形態では、ステータスフィールド１１６は、修正済、排他的、所有、共有及び無効等のキャッシュのコヒーレンシ状態を指定する指標も記憶する。ストレージブロック１１８は、割り当てられたエントリにデータを記憶する。様々なサイズのうち１つのサイズが、ストレージブロック１１８に記憶されるデータに使用される。様々な実施形態では、ストレージブロック１１８は、セットアソシエイティブキャッシュの複数のウェイのうち１つのウェイである。
【００１５】
ストレージコントローラ１３０は、制御ロジック１３２と、制御レジスタ１３４と、を含む。様々な実施形態では、制御ロジック１３２は、ストレージアレイ１１０内のエントリの割り当て及び割り当て解除し、さらに、ストレージアレイ１１０に記憶されたカウンタ、ポインタ及び状態情報を更新するためのアルゴリズムを実現するハードウェア回路及び／又はソフトウェアを含む。いくつかの実施形態では、制御レジスタ１３４は、アルゴリズムを実施するために制御ロジック１３２によって使用されるプログラム可能な制御及びステータスレジスタを含む。ストレージコントローラ１３０内の制御ロジック１３２及び制御レジスタ１３４は、制御ユニットと呼ぶこともできる。また、ストレージコントローラ１３０は、ストレージアレイ１１０、他のメモリ及び結果バスと通信するためのインタフェースロジック（図示省略）を含む。
【００１６】
様々な実施形態では、ストレージアレイ１１０は、結果データを記憶するキャッシュアレイであり、ストレージコントローラ１３０は、キャッシュコントローラである。本明細書で使用される「ブロック」という用語は、キャッシュ内のコヒーレンシ目的の単位として扱われる、連続するメモリ位置に記憶されたバイトのセットを指すのに使用される。本明細書で使用される「キャッシュブロック」、「ブロック」、「キャッシュライン」及び「ライン」という用語は、交換可能である。いくつかの実施形態では、ブロックは、キャッシュにおける割り当て及び割り当て解除の単位である。様々なサイズのうち何れかのサイズを使用して、ブロック内のバイト数を示す。
【００１７】
本明細書で使用される場合、キャッシュメモリサブシステムに関する「アクセス」という用語は、対応する要求アドレスの要求されたデータがストレージアレイ１１０に存在する場合にキャッシュヒットとなる読み出し又は書き込み要求動作を実行することを意味する。読み出し又は書き込み要求動作は、対応する要求アドレスの要求されたデータがストレージアレイ１１０に存在しない場合にキャッシュミスとなる。キャッシュミスが発生すると、ストレージコントローラ１３０によって読み出し要求が生成され、メモリコントローラを介して下位レベルのメモリに送信される。後述するように、動作が、制限された再使用データタイプによって変更されない場合に、元の読み出し又は書き込み要求を完了するために、要求されたブロックを有する対応するキャッシュフィルラインがストレージアレイ１１０に送られる。また、キャッシュフィルラインは、キャッシュ内に配置される。
【００１８】
ストレージアレイ１１０内に使用可能なストレージブロック１１８が存在しない場合、ストレージコントローラ１３０によって実施されるＬＲＵ（Least Recently Used）アルゴリズム（又は、他の置換ポリシーアルゴリズム）は、何れのエントリ（例えば、セットアソシエイティブキャッシュ内の何れのウェイ）のデータをキャッシュからエビクトして、キャッシュフィルラインデータに置き換えるかを決定する。本明細書で使用される「割り当て」という用語は、特定のキャッシュに対するキャッシュミスの後に、メモリ階層の下位レベルからフェッチしたキャッシュフィルラインを当該特定のキャッシュのウェイに記憶することを指す。様々な実施形態では、キャッシュからエビクトするキャッシュブロックの選択は、フィールド１１２，１１４，１１６に記憶されたパラメータの１つ以上に基づいて行われる。
【００１９】
様々な実施形態では、ストレージコントローラ１３０のアルゴリズムに続くステップは、非割り当てデータタイプ／ポリシー１２０に基づいて変化する。例えば、ストレージコントローラ１３０は、アクセス要求１０２を受信する。いくつかの実施形態では、アクセス要求１０２は、関連するデータが非割り当てデータタイプ１２０であるか否かを示す。他の実施形態では、ストレージコントローラ１３０内のプログラム可能な制御レジスタ１３４が更新され、制御ロジック１３２は、受信したアクセス要求１０２に関連するデータが非割り当てデータタイプ１２０であるか否かを判別する。例えば、特定のソース、データを使用する特定の計算の指標等が、制御ロジック１３２によって使用され、受信したアクセス要求１０２に関連するデータが非割り当てデータタイプ１２０であるか否かを判別する。さらなる実施形態では、アクセス要求１０２に対応するデータが非割り当てデータタイプ１２０であることを示す指標が、ストレージアレイ１１０のフィールド１１２又はストレージコントローラ１３０内のテーブルに記憶される。
【００２０】
ストレージコントローラ１３０が、所定のデータが非割り当てデータタイプ１２０であると判別し、且つ、ストレージコントローラ１３０がさらにストレージアレイ１１０内のデータを検出した場合、ストレージコントローラ１３０は、当該データがキャッシュ内において寿命が延びるようにキャッシュ置換ポリシー情報の更新を行わない。例えば、このデータのＬＲＵデータは、アクセスに応じて更新されない。様々な実施形態では、ストレージコントローラ１３０は、読み出し要求のミスが発生した後に、ストレージアレイ１１０内の所定のデータの割り当てを抑制する。
【００２１】
図２を参照すると、再使用が予測されないデータを有するアプリケーションを処理する方法２００の一実施形態が示されている。説明のために、本実施形態のステップ（図３及び図４も同様）を順番に示す。しかしながら、他の実施形態では、いくつかのステップが図示されているものと異なる順番で発生し、いくつかのステップが同時に行われ、いくつかのステップが他のステップと組み合わされ、いくつかのステップが存在しない。
【００２２】
再使用が予測されないデータに対して非割り当てデータタイプ又はポリシーが生成される（ブロック２０２）。例えば、再使用が予測されないデータを識別するために、特定の符号化が選択される。様々な実施形態では、１つ以上の制御及びステータスレジスタが、所定のストレージアレイのアクセス要求中に制御ロジックで使用される特定の符号化を用いてプログラムされる。いくつかの実施形態では、制御及びステータスレジスタは、キャッシュコントローラ等のストレージコントローラ内に存在する。いくつかの実施形態では、データの再使用が予測されないという判別は、アクセス要求を生成する特定のソース、データを使用する特定の計算、アクセスされる特定のアドレス範囲等に基づいて行われる。
【００２３】
上述したように、様々な実施形態では、特定のタイプの計算は、グラフィックス処理パイプラインにおける頂点シェーディングを含む。いくつかの頂点シェーディング結果は、処理中に再使用されるが、他の頂点シェーディング結果は、１回だけ使用される。いくつかの実施形態では、特定のテーブルに記憶された頂点インデックスを使用して、再使用が予測されないデータを識別する。図２のブロック２０４において、プログラム命令が実行され、キャッシュ等のストレージがアクセスされる。特定のデータが、アプリケーションの処理中の再使用が予測されないデータとされる場合（条件ブロック２０６：Ｙｅｓ）、当該特定のデータは、非割り当てデータタイプとしてマークされる（ブロック２０８）。その後、キャッシュアクセスが検出されたが（条件ブロック２１０：Ｙｅｓ）、要求されたデータが非割り当てデータタイプであるとマークされておらず、他の方法で示されていない場合（条件ブロック２１２：Ｎｏ）、キャッシュアクセスは、図３及び図４に関連して説明するように、非割り当てデータタイプとして処理されない（ブロック２１４）。
【００２４】
しかしながら、キャッシュアクセスが検出され（条件ブロック２１０：Ｙｅｓ）、データが非割り当てデータタイプであるとマークされ又は他の方法で判別された場合（条件ブロック２１２：Ｙｅｓ）場合、キャッシュアクセスは、図３及び図４に関連して説明するように、当該データのキャッシュ内での寿命を制限するように処理される（ブロック２１６）。例えば、キャッシュコントローラは、キャッシュミスの後に、関連するデータのキャッシュへの割り当てを抑制することができる。これらのステップを実行することによって、非割り当てデータタイプを有するキャッシュブロックの数を制限して、再使用の可能性の高いデータ用の領域をキャッシュに残す。
【００２５】
図３を参照すると、再使用が予測されないデータに対する読み出しアクセス要求を行う方法３００の一実施形態が示されている。１つ以上のソフトウェアアプリケーションが処理されているときに、データアクセス要求が検出され（ブロック３０２）、データを求めてキャッシュがアクセスされる。上述したように、複数の方法を使用して、アクセス要求に対応するデータが非割り当てデータタイプであるか否かを判別してもよい。この場合、読み出し要求は、非割り当てデータタイプのデータに対するものである。読み出し要求に対して、キャッシュのルックアップ操作が実行される。ヒットが発生すると（条件ブロック３０４：Ｙｅｓ）、要求されたデータがキャッシュアレイから読み出され、要求元に返信される（ブロック３０６）。記憶されたデータはキャッシュアレイでアクセスされるが、一実施形態では、キャッシュコントローラは、アクセスされたキャッシュブロックを、最近のアクセスを示すように更新しない（ブロック３０８）。例えば、キャッシュコントローラは、アクセスに基づいて、キャッシュ置換ポリシーに使用されるデータを更新しない。一実施形態では、データの最後の使用からの経過期間（age）又は最長未使用時間（ＬＲＵ）情報は、更新されない。よって、データがキャッシュに残る時間は、アクセスによって増えない。むしろ、アクセスされたキャッシュデータのキャッシュ置換ポリシーデータは、アクセスが発生しなかったかのように変更されない。
【００２６】
キャッシュアレイのルックアップ操作の結果がミスの場合（条件ブロック３０４：Ｎｏ）、要求されたデータが下位レベルのメモリから読み出される（ブロック３１０）。要求されたデータは、要求を処理するために返信される（ブロック３１２）。しかしながら、読み出されたデータは、キャッシュに割り当てられない（ブロック３１４）。よって、キャッシュ内では、非割り当てデータタイプ（再使用が予測されないデータ）のデータ量が増加しない。
【００２７】
図４を参照すると、再使用が予測されないデータに対する書き込みアクセス要求を行う方法４００の一実施形態が示されている。１つ以上のソフトウェアアプリケーションが処理されると、データを求めてキャッシュがアクセスされる。上述したように、複数の方法を使用して、アクセス要求に対応するデータが非割り当てデータタイプであるか否かを判別する。図示した例では、非割り当てデータタイプのデータに対するキャッシュ書き込み要求が検出される（ブロック４０２）。書き込み要求に対して、キャッシュのルックアップ操作が行われる。ヒットが発生し（条件ブロック４０４：Ｙｅｓ）、且つ、キャッシュをバイパスする指標が検出されない場合（条件ブロック４１０：Ｎｏ）、書き込み要求データをキャッシュアレイに書き込む（ブロック４１２）。記憶されたデータは、キャッシュ内でアクセスされ、更新されるが、キャッシュコントローラは、例えば、最長未使用時間データ等のキャッシュブロックのキャッシュ置換ポリシーデータを更新しない（ブロック４１４）。よって、キャッシュ内のデータの寿命は、アクセスによって延長されない。
【００２８】
ヒットが発生し（条件ブロック４０４：Ｙｅｓ）、且つ、キャッシュをバイパスする指標が検出された場合（条件ブロック４１０：Ｙｅｓ）、キャッシュの非割り当てデータタイプのデータ量を低減することが、より積極的になる。例えば、キャッシュに記憶され、書き込み要求のターゲットであるデータがクリーン（未修正）である場合（条件ブロック４１６：Ｙｅｓ）、ターゲットデータは、キャッシュから割り当て解除され（又は、無効にされ）（ブロック４１８）、書き込み要求データが下位レベルのメモリに送られ、下位レベルのメモリ内でターゲットデータのコピーが更新される（ブロック４２０）。
【００２９】
キャッシュをバイパスする指標が検出されたが（条件ブロック４１０：Ｙｅｓ）、キャッシュに記憶され、書き込み要求のターゲットとなっているデータがダーティ（修正済）の場合（条件ブロック４１６：Ｎｏ）、方法４００の制御フローがブロック４１２に進み、書き込み要求データがキャッシュアレイに書き込まれる。いくつかの実施形態では、クリーンなサブブロックとダーティなサブブロックとの両方が、ターゲットデータ内で識別される。いくつかの実施形態では、サブブロックは、マルチバイトキャッシュライン内の１つ以上のバイトである。ビットベクトルを使用して、何れのサブブロックがクリーンで、何れのサブブロックがダーティかを示す。ヒットが発生し（条件ブロック４０４：Ｙｅｓ）、キャッシュをバイパスする指標が検出されると（条件ブロック４１０：Ｙｅｓ）、ダーティなサブブロックが残っている間、クリーンなサブブロックがキャッシュから割り当て解除される。ダーティなサブブロックが書き込み要求のターゲットである場合、当該サブブロックは、書き込み要求データによってキャッシュ内で変更される。クリーンなサブブロックが書き込み要求のターゲットである場合、当該サブブロックは、書き込み要求データを用いて下位レベルのメモリで変更される。
【００３０】
キャッシュアレイのルックアップ操作がミスの場合（条件ブロック４０４：Ｎｏ）、書き込み要求データは、ターゲットデータを更新するために下位レベルのメモリに送られる（ブロック４０６）。ターゲットデータがキャッシュに割り当てられるのが抑制される（ブロック４０８）。よって、制限された再使用データタイプのデータ量は、キャッシュ内で削減される。
【００３１】
上述した実施形態のうち１つ以上がソフトウェアを含むことに留意されたい。このような実施形態では、方法及び／又はメカニズムを実装するプログラム命令は、コンピュータ可読媒体に伝達又は記憶される。プログラム命令を記憶するように構成された多くのタイプの媒体が利用可能であり、これらには、ハードディスク、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、ＤＶＤ、フラッシュメモリ、プログラム可能ＲＯＭ（ＰＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）及び他の様々な形態の揮発性又は不揮発性ストレージデバイスが含まれる。一般的に言えば、コンピュータアクセス可能な記憶媒体は、命令及び／又はデータをコンピュータに提供するために使用中にコンピュータがアクセス可能な記憶媒体を含む。例えば、コンピュータアクセス可能な記憶媒体は、例えば磁気又は光学媒体（例えば、ディスク（固定若しくは取り外し可能）、テープ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、ブルーレイ（登録商標））等の記憶媒体を含む。記憶媒体は、ＲＡＭ（例えば、同期型ダイナミックＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ、ＤＤＲ２、ＤＤＲ３等）ＳＤＲＡＭ、低電力ＤＤＲ（ＬＰＤＤＲ２等）ＳＤＲＡＭ、ラムバスＤＲＡＭ（ＲＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）等）、ＲＯＭ、フラッシュメモリ、ＵＳＢインタフェース等の周辺インタフェースを介してアクセス可能な不揮発性メモリ（例えば、フラッシュメモリ）等の揮発性又は不揮発性記憶媒体をさらに含む。記憶媒体は、微小電気機械システム（ＭＥＭＳ）、並びに、ネットワーク及び／又は無線リンク等の通信媒体を介してアクセス可能な記憶媒体を含む。
【００３２】
また、様々な実施形態では、プログラム命令は、Ｃ等の高水準プログラミング言語、Ｖｅｒｉｌｏｇ、ＶＨＤＬ等の設計言語（ＨＤＬ）、又は、ＧＤＳ  ＩＩストリームフォーマット（ＧＤＳＩＩ）等のデータベースフォーマットにおけるハードウェア機能の動作レベル記述又はレジスタ転送レベル（ＲＴＬ）記述を含む。場合によっては、記述は合成ツールによって読み取られ、合成ツールは、記述を合成して、ゲートのリストを含むネットリストを合成ライブラリから生成する。ネットリストは、システムを含むハードウェアの機能を表すゲートのセットを含む。次に、ネットリストを配置してルーティングし、マスクに適用される幾何学的形状を記述するデータセットを生成する。次いで、マスクを様々な半導体製造工程で使用して、システムに対応する１つ以上の半導体回路を製造する。或いは、コンピュータアクセス可能な記憶媒体上の命令は、必要に応じて、ネットリスト（合成ライブラリを伴う若しくは伴わない）又はデータセットである。さらに、命令は、Ｃａｄｅｎｃｅ（登録商標）、ＥＶＥ（登録商標）及びＭｅｎｔｏｒ  Ｇｒａｐｈｉｃｓ（登録商標）等のベンダからのハードウェアベースタイプのエミュレータによるエミュレーションの目的で利用される。
【００３３】
上記の実施形態をかなり詳細に説明したが、上記の開示が十分に理解されれば、当業者には多くの変形及び修正が明らかになるであろう。添付の特許請求の範囲は、このような全ての変形及び修正を包含するように解釈されることを意図している。
【図１】
2019537162.tif 000003
【図２】
2019537162.tif 000004
【図３】
2019537162.tif 000005
【図４】
2019537162.tif 000006
【国際調査報告】
2019537162.tif 000007
2019537162.tif 000008