(57)【要約】メインメモリ（１１２）を複数のブロック（１２０）に分割できるようにし、各ブロックは他のブロックのうちの少なくとも１つと隣接しており、各データブロックは、データバイトを１つ以上含む複数のデータ単位（１２２）を有する方法ならびに装置である。また、メインメモリの各ブロックを、データ単位を１つ以上有する複数のゾーンに分割し、各所定のブロックの対応するゾーンの少なくとも一部をその所定のブロックに隣接するブロックの対応する別のブロックと関連付け、別のブロックのうちの所定のブロックに関連付けられているゾーンのいずれかにあるデータ単位のいずれかがアドレス指定された場合に、そのブロックをキャッシュメモリにプリフェッチできるようにする。
2005531847.tif 000002
【特許請求の範囲】
【請求項１】
複数の二次元のブロックに分割されているメインメモリを有し、各ブロックは１つ以上のデータバイトを有する複数のデータ単位を備え、各所定のブロックは複数のゾーンに分割されており、各ゾーンは前記データ単位を１つ以上備えるとともに前記ゾーンの少なくとも一部は、前記所定のブロックに隣接する対応するブロックに関連付けられているものであり、
前記メインメモリのデータバイトに対するアドレスを受け取ると共に、前記アドレスをデコードして、対応するデータバイトが存在するゾーンを特定するように動作可能なアドレスデコーダと、
前記アドレスデコーダが対応するゾーンに存在するデータバイトのアドレスを受け取ると、前記対応するゾーンに関連付けられているブロックをキャッシュメモリにプリフェッチするように動作可能なプリフェッチアドレスジェネレータと、を有するメモリ制御装置。
【請求項２】
前記各ブロックは、左の隣接ブロックと当該ブロックとで共有する左境界線、右の隣接ブロックと当該ブロックとで共有する右境界線、上の隣接ブロックと当該ブロックとで共有する上境界線、および下の隣接ブロックと当該ブロックとで共有する下境界線、のうちの少なくとも１つを有し、
前記各ブロックは、前記左の隣接ブロックに関連付けられて前記左境界線に沿って配置されたデータ単位を少なくとも１つ有する左ゾーン、前記右の隣接ブロックに関連付けられて前記右境界線に沿って配置されたデータ単位を少なくとも１つ有する右ゾーン、前記上の隣接ブロックに関連付けられて前記上境界線に沿って配置されたデータ単位を少なくとも１つ有する上ゾーン、および前記下の隣接ブロックに関連付けられて前記下境界線に沿って配置されたデータ単位を少なくとも１つ有する下ゾーン、のうちの少なくとも１つを有する請求項１に記載の装置。
【請求項３】
前記左ゾーンは前記上境界線から前記下境界線まで延びる左分割線によって少なくともその一部が画定されており、前記左ゾーンは前記左境界線と前記左分割線との間に存在するデータ単位の少なくとも一部を有するものであり、
前記右ゾーンは前記上境界線から前記下境界線まで延びる右境界線によって少なくともその一部が確定されており、前記右ゾーンは前記右境界線と前記右分割線との間に存在するデータ単位の少なくとも一部を有するものであり、
前記上ゾーンは前記左境界線から前記右境界線まで延びる上境界線によって少なくともその一部が画定されており、前記上ゾーンは前記上境界線と前記上分割線との間に存在するデータ単位の少なくとも一部を有するものであり、
前記下ゾーンは前記左境界線から前記右境界線まで延びる下境界線によって少なくともその一部が画定されており、前記下ゾーンは前記下境界線と前記下分割線との間に存在するデータ単位の少なくとも一部を有するものである、請求項２に記載の装置。
【請求項４】
前記左分割線、前記右分割線、前記上分割線、および前記下分割線は、前記アドレスの特定のビットに対応付けられており、前記アドレスデコーダは、前記アドレスをデコードして、前記特定のビットに基づいて前記対応するデータバイトが存在するゾーンを特定するように動作可能である請求項３に記載の装置。
【請求項５】
各ブロックは、前記左分割線、前記右分割線、前記上分割線、および前記下分割線の間に存在する１つ以上のデータ単位を有する中央ゾーンを有し、前記中央ゾーンはどの隣接ブロックとも関連付けられていない請求項３に記載の装置。
【請求項６】
各ブロックは、
前記左境界線、前記上境界線、前記上分割線および前記左分割線の間に存在するデータ単位を有し、どの隣接ブロックとも関連付けられていない左上ゾーンと、
前記左境界線、前記下境界線、前記下分割線および前記左分割線の間に存在するデータ単位を有し、どの隣接ブロックとも関連付けられていない左下ゾーンと、
前記右境界線、前記上境界線、前記上分割線および前記右分割線の間に存在するデータ単位を有し、どの隣接ブロックとも関連付けられていない右上ゾーンと、
前記右境界線、前記下境界線、前記下分割線および前記右分割線の間に存在するデータ単位を有し、どの隣接ブロックとも関連付けられていない右下ゾーンと、のうちの少なくとも１つを有する請求項３に記載の装置。
【請求項７】
メインメモリを複数の二次元のブロックに分割すると共に、各ブロックをデータバイトを１つ以上含む複数のデータ単位に分割するステップと、
前記メインメモリの各ブロックを、前記データ単位を１つ以上有する複数のゾーンに分割するステップと、
前記ブロックのうちの少なくとも１つのブロックの少なくとも１つのゾーンを他のブロックに関連付けるステップと、
前記少なくとも１つのゾーンに存在する前記データ単位のうちの１つのデータバイトの１つ以上がアドレス指定された場合に、前記他のブロックの少なくとも一部をキャッシュメモリにプリフェッチするステップと、を有する方法。
【請求項８】
メインメモリを複数の二次元のブロックに分割すると共に、各ブロックをデータバイトを１つ以上含む複数のデータ単位に分割するステップと、
前記メインメモリの各ブロックを、前記データ単位を１つ以上有する複数のゾーンに分割するステップと、
各ブロックの対応するゾーンの少なくとも一部を前記ブロックのうちの別のブロックに関連付けるステップと、
前記別のブロックのうちの１つのブロックに関連付けられているゾーンのいずれかにあるデータ単位のいずれかがアドレス指定された場合に、そのブロックの少なくとも一部をキャッシュメモリにプリフェッチするステップと、を有する方法。
【請求項９】
各ブロックの前記少なくとも一部のゾーンのそれぞれは１つの隣接するブロックに関連付けられている請求項８に記載の方法。
【請求項１０】
各ブロックの少なくとも１つのゾーンは、そのブロックと、関連付けられている隣接ブロックとの間の境界線に沿って配置されている請求項９に記載の方法。
【請求項１１】
各ブロックは、そのブロックと、関連付けられている対応する隣接ブロックとの各境界線に沿って配置されている対応するゾーンを有する請求項１０に記載の方法。
【請求項１２】
メインメモリを複数の二次元の矩形ブロックに分割するステップであって、各ブロックは共通の境界線に沿って他のブロックのうちの少なくとも１つと隣接しており、各データブロックは、データバイトを１つ以上含む複数のデータ単位を有するステップと、
前記メインメモリの各ブロックを、前記データ単位を１つ以上有する複数のゾーンに分割するステップと、
各所定のブロックの対応するゾーンの少なくとも一部を前記所定のブロックに隣接するブロックの対応する別のブロックと関連付けるステップと、
前記別のブロックのうちの所定のブロックに関連付けられているゾーンのいずれかにあるデータ単位のいずれかがアドレス指定された場合に、そのブロックをキャッシュメモリにプリフェッチするステップと、を有する方法。
【請求項１３】
前記各ブロックは、左の隣接ブロックと共通の左境界線、右の隣接ブロックと共通の右境界線、上の隣接ブロックと共通の上境界線、および下の隣接ブロックと共通の下境界線のうちの少なくとも１つを有し、
前記各ブロックは、前記左の隣接ブロックに関連付けられており、前記左境界線に沿って配置されたデータ単位を少なくとも１つ有する左ゾーン、前記右の隣接ブロックに関連付けられており、前記右境界線に沿って配置されたデータ単位を少なくとも１つ有する右ゾーン、前記上の隣接ブロックに関連付けられており、前記上境界線に沿って配置されたデータ単位を少なくとも１つ有する上ゾーン、および前記下の隣接ブロックに関連付けられており、前記下境界線に沿って配置されたデータ単位を少なくとも１つ有する下ゾーンのうちの少なくとも１つを有する請求項１２に記載の方法。
【請求項１４】
前記左ゾーンは前記上境界線から前記下境界線まで延びる左分割線によって少なくとも一部画定されており、前記左ゾーンは前記左境界線と前記左分割線との間に存在するデータ単位の少なくとも一部を有し、
前記右ゾーンは前記上境界線から前記下境界線まで延びる右境界線によって少なくとも一部画定されており、前記右ゾーンは前記右境界線と前記右分割線との間に存在するデータ単位の少なくとも一部を有し、
前記上ゾーンは前記左境界線から前記右境界線まで延びる上境界線によって少なくとも一部画定されており、前記上ゾーンは前記上境界線と前記上分割線との間に存在するデータ単位の少なくとも一部を有し、
前記下ゾーンは前記左境界線から前記右境界線まで延びる下境界線によって少なくとも一部画定されており、前記下ゾーンは前記下境界線と前記下分割線との間に存在するデータ単位の少なくとも一部を有する請求項１３に記載の方法。
【請求項１５】
各ブロックは、前記左分割線、前記右分割線、前記上分割線、および前記下分割線の間に存在する１つ以上のデータ単位を有する中央ゾーンを有し、前記中央ゾーンはどの隣接ブロックとも関連付けられていない請求項１４に記載の方法。
【請求項１６】
各ブロックは、
前記左境界線、前記上境界線、前記上分割線および前記左分割線の間に存在するデータ単位を有し、どの隣接ブロックとも関連付けられていない左上ゾーンと、
前記左境界線、前記下境界線、前記下分割線および前記左分割線の間に存在するデータ単位を有し、どの隣接ブロックとも関連付けられていない左下ゾーンと、
前記右境界線、前記上境界線、前記上分割線および前記右分割線の間に存在するデータ単位を有し、どの隣接ブロックとも関連付けられていない右上ゾーンと、
前記右境界線、前記下境界線、前記下分割線および前記右分割線の間に存在するデータ単位を有し、どの隣接ブロックとも関連付けられていない右下ゾーンと、のうちの少なくとも１つを有する請求項１４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリを制御するための方法ならびに装置に関し、より詳細にはキャッシュメモリにデータをプリフェッチするための方法ならびに装置に関する。
【背景技術】
【０００２】
近年、最先端のコンピュータアプリケーションがますます複雑になっているため、コンピュータによるデータ処理のスループットの向上への要求がとどまることを知らず、マイクロプロセシングシステムに対する要求が増加の一途をたどっている。とりわけ、グラフィックアプリケーションは、所望の視覚的効果を得るため、比較的短時間に膨大な数のデータアクセス、データ演算およびデータ操作を実行する必要があるため、マイクロプロセシングシステムに対する要求が高いシステムの１つとなっている。従来のマイクロプロセッサは、サイクルタイム（マイクロプロセッサがデータを操作することができる時間の単位）が例えば２ナノ秒と非常に短いが、メインメモリに記憶されているデータへのアクセスに必要な時間は、マイクロプロセッサのサイクルタイムに比べてかなり長い。例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）技術を利用して実装したメインメモリから１バイトのデータを取り出す際のアクセス時間は約６０ナノ秒代である。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ＤＲＡＭメモリのアクセス時間が比較的長いことによるボトルネックを改善するために、当業者はキャッシュメモリを利用してきた。キャッシュメモリは、ＤＲＡＭメモリよりも格段に高速であり、メインメモリが備えるデータ記憶機能を強化する。例えば、Ｌ２キャッシュメモリをマイクロプロセッサの外部に結合したり、Ｌ１キャッシュメモリをマイクロプロセッサの内部に結合したりすることができ、これらのメモリはＤＲＡＭ技術を利用して実装したメインメモリよりも格段に高速である。Ｌ２キャッシュメモリは、例えばスタティックランダムアクセスメモリ（ＳＲＡＭ）技術を利用して実装することができ、ＤＲＡＭ技術よりも約２〜３倍高速である。Ｌ１キャッシュメモリは、Ｌ２キャッシュメモリよりもさらに高速である。
【０００４】
キャッシュメモリは比較的高価であるため、通常はメインメモリよりも容量が大幅に小さい。このため、キャッシュメモリに記憶すべきデータを決定するために、従来のアルゴリズムが使用されている。例えば、このような従来のアルゴリズムは、「参照の局所性」の理論の概念に基づいており、この概念は、ある特定の時点において、マイクロプロセッサが膨大な実行可能プログラムの比較的限られた部分しか使用していないという事実を利用するものである。このため、参照の局所性の概念に従って、ある特定の時点において、全実行可能プログラムのうちの限られた部分のみがキャッシュメモリに記憶される。
【０００５】
キャッシュメモリへのデータの記憶を制御するための、参照の局所性を利用する公知のアルゴリズムやその他の概念の詳細については、その数が多いためにここに記載することはできない。ただし、アプリケーションによってデータ処理の目的が大きく異なることがあるため、あらゆるアプリケーションに適するアルゴリズムは存在しないということを言及すれば十分であろう。
【０００６】
グラフィックアプリケーションでは、例えば、メインメモリ内で記憶されているデータに強い局所性がみられることがあり、この局所性は、メインメモリ内のピクセルデータの座標の関数となっている。詳しく述べると、グラフィックアプリケーションに使用するメインメモリは、概念上、二次元平面に編成され得、画像内の各ピクセルに関する情報は、特定のＸＹ座標に記憶される。グラフィックアプリケーションに使用するメインメモリは、さらに複数の矩形ブロックに編成され得、それぞれのブロックに、複数のピクセルに関する情報が格納される。特定のブロック内のピクセルは極めて線形的にアドレスを付与され得る。換言すれば、特定の矩形ブロック内で、ピクセル情報へのアクセスが極度に連続していることがある。
【０００７】
このため、グラフィックアプリケーションでキャッシュメモリを制御するための従来のアルゴリズムは、通常、矩形ブロックの全体のピクセル情報を特定のキャッシュラインに記憶させる。キャッシュヒットが発生した場合（すなわち、特定のデータバイトに対するメモリアクセス要求が、キャッシュメモリにアクセスすることで満たされた場合）、その特定の矩形ブロック内のピクセル情報の線形性が高いため、次に行われるデータアクセス要求がキャッシュヒットとなる可能性が高い。一方、キャッシュミスが発生した場合（すなわち、キャッシュメモリにアクセスしても、特定のデータバイトに対するメモリアクセス要求が満たされない場合）、要求されたデータバイトが存在する矩形ブロック内の全ピクセル情報をメインメモリから読み出して、キャッシュメモリに記憶する。しかし、この従来のアルゴリズムは、グラフィックアプリケーションで使用するメモリの線形性と高い局所性とに付随する特性を有効に利用していない。実際、このようなアルゴリズムでは、かなりのキャッシュミスが発生し、この結果、メモリ制御の効率低下、処理のスループットの低下、およびグラフィックの画質の劣化が生じる。
【０００８】
したがって、処理のスループットを向上させ、グラフィックの画質を向上させるために、グラフィックアプリケーションで使用するメモリにみられる線形性および高い局所性を利用するような、キャッシュメモリを含むメモリ全般を制御するための新しい方法ならびに装置が当業界で求められている。
【課題を解決するための手段】
【０００９】
本発明の少なくとも１つの態様によると、メモリ制御装置は、複数の二次元のブロックに分割されているメインメモリと、各ブロックは１つ以上のデータバイトを有する複数のデータ単位を有し、各所定のブロックは複数のゾーンに分割されており、各ゾーンは前記データ単位を１つ以上有し、前記ゾーンの少なくとも一部は、前記所定のブロックに隣接する対応するブロックに関連付けられており、前記メインメモリの前記データバイトに対するアドレスを受け取ると共に、前記アドレスをデコードして、対応するデータバイトが存在するゾーンを特定するように動作可能なアドレスデコーダと、前記アドレスデコーダが対応するゾーンに存在するデータバイトのアドレスを受け取ると、前記対応するゾーンに関連付けられているブロックをキャッシュメモリにプリフェッチするように動作可能なプリフェッチアドレスジェネレータと、を有する。
例えば、前記各ブロックは、左の隣接ブロックと共通の左境界線、右の隣接ブロックと共通の右境界線、上の隣接ブロックと共通の上境界線、および下の隣接ブロックと共通の下境界線のうちの少なくとも１つを有し得る。さらに、前記各ブロックは、前記左の隣接ブロックに関連付けられており、前記左境界線に沿って配置されたデータ単位を少なくとも１つ有する左ゾーン、前記右の隣接ブロックに関連付けられており、前記右境界線に沿って配置されたデータ単位を少なくとも１つ有する右ゾーン、前記上の隣接ブロックに関連付けられており、前記上境界線に沿って配置されたデータ単位を少なくとも１つ有する上ゾーン、および前記下の隣接ブロックに関連付けられており、前記下境界線に沿って配置されたデータ単位を少なくとも１つ有する下ゾーン少なくとも１つを有し得る。
【００１０】
このような分割を使用して、前記左ゾーンは前記上境界線から前記下境界線まで延びる左分割線によって少なくとも一部画定されてもよく、前記左ゾーンは前記左境界線と前記左分割線との間に存在するデータ単位の少なくとも一部を有してもよく、前記右ゾーンは前記上境界線から前記下境界線まで延びる右境界線によって少なくとも一部画定されてもよく、前記右ゾーンは前記右境界線と前記右分割線との間に存在するデータ単位の少なくとも一部を有してもよく、前記上ゾーンは前記左境界線から前記右境界線まで延びる上境界線によって少なくとも一部画定されてもよく、前記上ゾーンは前記上境界線と前記上分割線との間に存在するデータ単位の少なくとも一部を有してもよく、前記下ゾーンは前記左境界線から前記右境界線まで延びる下境界線によって少なくとも一部画定されてもよく、前記下ゾーンは前記下境界線と前記下分割線との間に存在するデータ単位の少なくとも一部を有してもよい。
【００１１】
好ましくは、前記左分割線、前記右分割線、前記上分割線、および前記下分割線は前記アドレスの特定のビットに対応付けられており、前記アドレスデコーダは、前記アドレスをデコードして、前記特定のビットに基づいて前記対応するデータバイトが存在するゾーンを特定するように動作可能である。
【００１２】
例えば、各ブロックは、前記左分割線、前記右分割線、前記上分割線、および前記下分割線の間に存在する１つ以上のデータ単位を有する中央ゾーンを有してもよく、前記中央ゾーンは好ましくはどの隣接ブロックとも関連付けられていない。各ブロックは、好ましくは、前記左境界線、前記上境界線、前記上分割線および前記左分割線の間に存在するデータ単位を有し、どの隣接ブロックとも関連付けられていない左上ゾーンと、前記左境界線、前記下境界線、前記下分割線および前記左分割線の間に存在するデータ単位を有し、どの隣接ブロックとも関連付けられていない左下ゾーンと、前記右境界線、前記上境界線、前記上分割線および前記右分割線の間に存在するデータ単位を有し、どの隣接ブロックとも関連付けられていない右上ゾーンと、前記右境界線、前記下境界線、前記下分割線および前記右分割線の間に存在するデータ単位を有し、どの隣接ブロックとも関連付けられていない右下ゾーンと、のうちの少なくとも１つをさらに有する。
【００１３】
本発明の少なくとも１つの別の態様に係る方法は、メインメモリを複数の二次元のブロックに分割すると共に、各ブロックをデータバイトを１つ以上含む複数のデータ単位に分割するステップと、前記メインメモリの各ブロックを、前記データ単位を１つ以上有する複数のゾーンに分割するステップと、各ブロックの対応するゾーンの少なくとも一部を前記ブロックのうちの別のブロックに関連付けるステップと、前記別のブロックのうちの１つのブロックに関連付けられているゾーンのいずれかにあるデータ単位のいずれかがアドレス指定された場合に、そのブロックの少なくとも一部をキャッシュメモリにプリフェッチするステップと、を有する。
【００１４】
好ましくは、各ブロックの前記少なくとも一部のゾーンのそれぞれは１つの隣接ブロックに関連付けられている。さらに、各ブロックの少なくとも１つのゾーンは、好ましくはそのブロックと、関連付けられている隣接ブロックとの間の境界線に沿って配置されている。
【００１５】
添付の図面を参照しつつ、ここに記載する本発明の説明を読めば、他の態様、特徴および利点等は当業者に自明となるであろう。
【発明を実施するための最良の形態】
【００１６】
本発明を説明するために、現在の好ましい形態を図面の形で示すが、本発明は、図示したとおりの構成ならびに手段に限定されないことを理解されたい。
【００１７】
図面において、同じ参照符号は、同一の要素を示している。図１に、本発明による、メモリを制御するために適した方法および／または装置の態様を示す。簡潔を期すと共に明確になるように、図１のブロック図は装置１００の説明として本明細書において参照かつ記載される。しかし、この記載は同等の効力を有する方法のさまざまな態様に容易に適用できることを理解されたい。装置１００は、好ましくは、プロセッサ１０２、アドレスレジスタ１０４、アドレスデコーダ１０６、プリフェッチアドレスジェネレータ１０８、メモリコントローラ１１０、メインメモリ１１２、およびキャッシュメモリ１１４を備える。
【００１８】
プロセッサ１０２は、メインメモリおよび／またはキャッシュメモリ１１４からデータを要求し、このデータを操作して所望の結果を得ることができる公知の技術のいずれかを用いて実装することができる。例えば、プロセッサ１０２は、通常のマイクロプロセッサ、分散型マイクロプロセッサなど、ソフトウェアおよび／またはファームウェアを実行することができる公知のマイクロプロセッサのいずれかを利用して実装することができる。例えば、プロセッサ１０２は、グレースケール情報、色情報、テクスチャデータ、ポリゴン情報、ビデオフレーム情報等を含むピクセルデータなどのデータを要求して操作することができるグラフィックプロセッサであり得る。
【００１９】
プロセッサ１０２は、好ましくは、メモリアドレスなどのデータアクセス要求を、アドレスレジスタ１０４とメモリコントローラ１１０に対して与える。アドレスデコーダ１０６とプリフェッチアドレスジェネレータ１０８は、好ましくは、メインメモリ１１２に対してキャッシュメモリ１１４に記憶する情報の管理上望ましい結果を得るために、メモリコントローラ１１０にさらに情報を与えるように動作可能である。装置１００の各種機能ブロックのこの相互の関係をさらに詳しく説明するため、図２〜５を参照する。
【００２０】
図２は、図１の機能ブロックに従って実行および／または実装され得る特定のアクション／機能を示すフローチャートである。アクション２００で、メインメモリ１１２（図１）が好ましくは複数の二次元のデータブロックに分割される。メインメモリ１１２が必ずしも物理的に分割されるわけではないという点で、メインメモリ１１２の分割は主として概念的なものであり、メインメモリ１１２は、装置１００のさまざまな機能ブロックが実行するデータの記憶およびデータへのアクセスに対して機能的に分割されるという点を理解されたい。
【００２１】
より詳細には、図３を参照すると、メインメモリ１１２は、好ましくは、ＤＲＡＭなどの、データ記憶位置１１２Ａを複数有する公知の技術のいずれかを利用して実装することができる。説明のために、各データ位置１１２Ａは１データバイトを表し、各バイトは、例えば、８ビット、１６ビット、３２ビット、６４ビット等を有するとする。データ記憶位置１１２Ａは、１６進アドレス、すなわち００００、０００１、０００２、...００３Ｆ、...０２３Ｆ等で示されている。この例では、図３のメインメモリ１１２は、１，０２４のデータ記憶位置１１２Ａを有し、それぞれの位置１１２Ａに１データバイトを記憶することができるとする。このメインメモリ１１２のサイズは例に過ぎず、本発明の範囲を限定することを意図するものではないことを理解されたい。
【００２２】
図２のアクション２００に説明を戻すと、メインメモリ１１２は二次元のデータブロック１２０に分割されており、さらに図３を参照すると、メインメモリ１１２のデータ記憶位置１１２Ａは、好ましくはデータブロック１２０に編成されており、例えばアドレス００００〜００３Ｆに記憶されている全ピクセル情報（すなわちデータバイト）を格納している。説明のために、画像の１ピクセルを表すための情報が、４データバイト（例えば、グレースケール情報に１バイト、色情報に１バイトなど）を必要とするとさらに想定する。このため、この例では、図３のメモリ１１２は、１４４個のピクセルに関する情報を記憶することができる。各データブロック１２０は、メインメモリ１１２に記憶されている１４４個のピクセルからなるサブセットに関する情報を格納している。各データブロック１２０は、好ましくは二次元の矩形ブロックであり、それぞれのピクセルのサブセットに関する情報がＸＹデカルト座標系に配置される。
【００２３】
図２，３を参照すると、アクション２０２（図２）で、各データブロック１２０が好ましくは複数のデータ単位１２２（図３）に分割され、このとき、各データ単位１２２はピクセルのそれぞれ１つに関する情報を格納している。上に挙げた例では、図３の各データ単位１２２は４データバイトを有する。本発明に従ってデータ単位１２２を編成する方法は数多くあるが、ジグザグパターンで直線状に並ぶように、データ単位１２２を左から右、上から下の順で編成することが好ましい。この場合、データバイトのアドレスは、順に（先頭のデータ単位１２２の）００００、０００１、０００２、０００３、（次のデータ単位１２２の）０００４、０００５、０００６、０００７、…と続く。データブロック１２０の全体について、後続のデータ単位１２２の後続のデータバイトが、左から右（Ｘ方向）に、上から下に（Ｙ方向）に並んでいく。
【００２４】
図４に示すように、メインメモリ１１２内の別のピクセル群に関連する情報は、好ましくは別のデータブロック１２０に分割されており、このデータブロック１２０は二次元のＸ、Ｙの格子に配置されている。上に挙げた例では、これにより、中央ブロック（名称表示なし）、左上データブロック、上データブロック、右上データブロック、左データブロック、右データブロック、左下データブロック、下データブロック、および右下データブロックの９個のデータブロック１２０が形成されている。左上データブロック１２０（すなわち図３のデータブロック１２０）がアドレス００００〜００３Ｆに記憶されているデータバイトに関連する情報を表すと想定すると、図４の中央ブロックは、メインメモリ１１２のアドレス０１００〜０１３Ｆに記憶されているピクセル情報を格納している。
【００２５】
メモリコントローラ１１０に採用されているアルゴリズムによって、キャッシュメモリ１１４内の特定のキャッシュラインに、データブロック１２０全体のピクセル情報が記憶されていると想定すると、プロセッサ１０２が、例えば（図４の中央ブロック内の）アドレス０１１４に記憶されているデータバイトを要求したときに、キャッシュメモリ１１４が中央ブロックに関連するピクセル情報を格納していなければ、キャッシュミスが発生する。この結果、メモリコントローラ１１０は好ましくは、メインメモリ１１２から、アドレス０１００〜０１３Ｆに記憶されているピクセル情報を読み込んで、この情報をキャッシュメモリ１１４に記憶する。
【００２６】
上に挙げた例では、次に行われるデータアクセス要求が、メモリ位置０１１５に記憶されているデータバイトに対するものである可能性が高く、このデータバイトは既にキャッシュメモリ１１４に記憶されているため、キャッシュヒットとなる。さらに、プロセッサ１０２がアドレス０１１４〜０１１７（同じデータ単位１２２内のアドレス）に記憶されているデータバイトを既に全て要求している場合には、次に行われるデータアクセス要求の対象が、中央データブロック１２０に存在する可能性もあれば、存在しない可能性もある。実際、次に行われるデータアクセス要求が、隣接するデータブロック１２０（例えば左上データブロック１２０、上データブロック１２０、右上データブロック１２０など）に存在するデータバイトに対するものである可能性がある。事実、次に要求されたデータバイトが、キャッシュメモリ１１４に記憶していない隣接データブロック１２０に存在する場合にはキャッシュミスが発生する。
【００２７】
本発明は、別のデータブロックにあるデータに対する要求に基づいて、１つ以上の隣接データブロック１２０をキャッシュメモリ１１４にプリフェッチすることによって、キャッシュヒット率を向上させる方法ならびに装置を得ることを意図するものである。これを実現するため、アクション２０４（図２）で、各データブロック１２０が好ましくは複数のゾーンに分割され、各ゾーンは１つ以上のデータ単位を含む。
【００２８】
図５を参照して例を挙げると、中央データブロック１２０が、ゾーン１〜ゾーン９と記された９個のゾーンに分割される。図５では、ゾーンに分割されているのは中央データブロック１２０だけであるが、本発明では、ゾーンに分割するデータブロック１２０の数は幾つであってもよく、好ましくは、各データブロック１２０がこのように分割される。この例では、ゾーン１、３、７、９はそれぞれデータ単位１２２を１つ含み、ゾーン２、４、６、８はそれぞれデータ単位１２２を２つ含み、ゾーン５はデータ単位１２２を４つ含む。
【００２９】
アクション２０６（図２）で、図５の中央データブロック１２０などの各データブロック１２０内の少なくとも一部のゾーンのそれぞれが、中央データブロック１２０に隣接しているデータブロック１２０に関連付けられる。例えば、本発明の一態様によれば、ゾーン２は好ましくは上データブロック１２０に関連付けられ、ゾーン４は好ましくは左データブロック１２０に関連付けられ、ゾーン６は好ましくは右データブロック１２０に関連付けられ、ゾーン８は好ましくは下データブロック１２０に関連付けられる。中央データブロック１２０のゾーン１、３、７、９は、好ましくはどの隣接データブロック１２０とも関連付けられない。同様に、中央データブロック１２０のゾーン５は、好ましくはどの隣接データブロック１２０とも関連付けられない。このように関連付けをする理由、および／または関連付けをしない理由は、本明細書で詳細に後述する。
【００３０】
アクション２０８（図２）で、プロセッサ１０２は、好ましくはアクセス要求（１つ以上のデータバイトのアドレスなど）を生成する。上記したように、このデータバイトは、データブロック１２０のゾーンのデータ単位１２２に存在する。このアクセス要求は、好ましくはアドレスレジスタ１０４とメモリコントローラ１１０に与えられる（アクション２０８）。メモリコントローラ１１０は、好ましくは、このアクセス要求がキャッシュメモリ１１４のキャッシュラインに関連付けられている複数のキャッシュタグのうちのいずれか１つと一致するかどうかを判定する。キャッシュヒットの場合、すなわち、アクセス要求がキャッシュメモリ１１４に記憶されているデータと一致した場合、要求されたデータバイトがキャッシュメモリ１１４から読み出されて、プロセッサ１０２（および／または他の任意の適切なデバイスまたはプロセス）に提供される。
【００３１】
本発明の１つ以上の別の態様よれば、アドレスレジスタ１０４は、好ましくはこのアクセス要求（すなわち要求されたデータバイトのアドレス）をアドレスデコーダ１０６に与える。アドレスデコーダ１０６は、好ましくはこのアクセス要求をデコード、すなわち要求されたデータバイトのアドレスをデコードして、そのデータバイトが存在するゾーンを特定するように動作可能である（アクション２１０）。例えば、アドレスデコーダ１０６は、要求されたデータバイトが存在するゾーンを特定する際に、好ましくはそのアドレスの特定のビットを分析するように動作可能である。この点について、図６を参照してさらに詳細に説明する。中央データブロック１２０は、９個のゾーンに分割されており、これらのゾーンは、左境界線１３０（隣接する左データブロック１２０と共通）、右境界線１３２（隣接する右データブロック１２０と共通）、上境界線１３４（隣接する上データブロック１２０と共通）、および下境界線１３６（隣接する下データブロック１２０と共通）によって画定されている。これらのゾーンは、上境界線１３４から下境界線１３６まで延びる左分割線１４０、同様に上境界線１３４から下境界線１３６まで延びる右境界線、左境界線１３０から右境界線１３２まで延びる上分割線１４４、および同様に左境界線１３０から右境界線１３２まで延びる下分割線１４６によってさらに画定されている。
【００３２】
この境界線および分割線の例によると、ゾーン１（左上ゾーン）は、左境界線１３０、上境界線１３４、上分割線１４４、および左分割線１４０の間に存在する１つのデータ単位１２２を有する。ゾーン２（上ゾーン）は、上境界線１３４と上分割線１４４との間に存在する２つのデータ単位１２２を有する。ゾーン３（右上ゾーン）は、右境界線１３２、上境界線１３４、上分割線１４４、および右分割線１４２の間に存在する１つのデータ単位１２２を有する。ゾーン４（左ゾーン）は、左境界線１３０と左分割線１４０との間に存在する２つのデータ単位１２２を有する。ゾーン５（中央ゾーン）は、左分割線１４０、右分割線１４２、上分割線１４４、および下分割線１４６の間に存在する４つのデータ単位１２２を有する。ゾーン６（右ゾーン）は、右境界線１３２と右分割線１４２との間に存在する２つのデータ単位１２２を有する。ゾーン７（左下ゾーン）は、左境界線１３０、下境界線１３６、下分割線１４６、および左分割線１４０の間に存在する１つのデータ単位１２２を有する。ゾーン８（下ゾーン）は下境界線１３６と下分割線１４６との間に存在する２つのデータ単位１２２を有する。最後に、ゾーン９（右下ゾーン）は、右境界線１３２、下境界線１３６、下分割線１４６、および右分割線１４２の間に存在する１つのデータ単位１２２を有する。
【００３３】
上述の例では、左分割線１４０、右分割線１４２、上分割線１４４、および下分割線１４６は、中央データブロック１２０（さらには任意のデータブロック１２０）に記憶されているデータバイトのアドレスの特定のビットによって定義することができる。実際、左分割線１４０と右分割線１４２は、アクセス要求アドレスの第３ビットと第２ビットによって定義することができる（例えば、これらからデコードまたは確認されても、この両方が行われてもよい）。同様に、上分割線１４４と下分割線１４６は、アクセス要求アドレスの第５ビットと第４ビットによって定義される。当業者であれば、それぞれのゾーンの境界を定義またはデコードするために使用するアドレスの特定のビットは、データブロック１２０のサイズ、データ単位１２２のサイズ、バイトのサイズ、および境界線と分割線の位置や経路によって決まることを理解されよう。
【００３４】
上述の例では、アドレスデコーダ１０６は、好ましくはアクセス要求アドレスのビット５、４、３、２を分析して、要求されたデータバイトが存在するゾーンを特定する（図２のアクション２１０）。アクション２１２で、特定されたゾーンが隣接データブロック１２０に関連付けられているかどうかを判定する。プリフェッチアドレスジェネレータ１０８は、好ましくはアクション２０６で定義した関連付けに基づいてこの判定を行うように動作可能である。例えば、アクセス要求アドレスが０１１Ｃの場合（図５）、アドレスデコーダ１０６は、好ましくはアクセス要求アドレスの上記のビットを分析して、要求されたデータバイトがゾーン６に存在することを特定する。プリフェッチアドレスジェネレータ１０８は、好ましくはこの情報を受け取って、ゾーン６が隣接データブロック１２０に関連付けられているかどうかを判定する。上に挙げた例では、ゾーン６は、右データブロック１２０に関連付けられている。これにより、プリフェッチアドレスジェネレータ１０８は、好ましくは、メインメモリ１１２から右データブロック１２０をキャッシュメモリ１１４にプリフェッチするよう求める要求を生成する（アクション２１４）。アドレスデコーダ１０６によって特定されたゾーンが隣接データブロック１２０に関連付けられていない場合（アクション２１２）、手順フローは好ましくはアクション２０８に分岐して、プロセッサ１０２から次のアクセス要求を受け取る。
【００３５】
図５を参照すると、ゾーン２、ゾーン４、ゾーン６、およびゾーン８は、ある一定の仮定に基づいて、上データブロック１２０、左データブロック１２０、右データブロック１２０、および下データブロック１２０にそれぞれ関連付けされた点に留意されたい。例えば、現在のアクセス要求が中央データブロック１２０のゾーン２に存在するデータバイトに対するものである場合、次のアクセス要求は、上データブロック１２０に対して行われる可能性が高いと仮定した。ゾーン４と左データブロック１２０、ゾーン６と右データブロック１２０、およびゾーン８と下データブロック１２０の間の関係についても同じように仮定した。
【００３６】
さらに、現在のアクセス要求がゾーン５に存在するデータバイトに対するものである場合には、次のアクセス要求が、中央データブロック１２以外に対して行われる可能性は低いと仮定した。ゾーン１、ゾーン３、ゾーン７、およびゾーン９については、次のアクセス要求が隣接データブロック１２０に対するものである可能性があるものの、この隣接データブロック１２０が左データブロックである可能性、左上データブロックである可能性、および上データブロックである可能性は同程度であると仮定した。このため、例えばゾーン１とこれらの隣接データブロック１２０のうちの特定の１つとを関連付けたからといって、キャッシュヒット率が必ずしも向上するわけでない。当然、状況の緊急度が高い場合には、ゾーン１、ゾーン３、ゾーン７、および／またはゾーン９と、隣接データブロック１２０の１つ以上とを関連付けることが有用なこともあり、このため、本発明のさらに別の態様に従ってこの点が考察される。
【００３７】
図５，図６に示すゾーン構成は、本発明に必須というわけではない。図７Ａ，７Ｂに別法によるゾーン構成を示す。これらのゾーン構成についても例に過ぎず、本発明の範囲を限定することを意図するものではない。
【００３８】
本発明の少なくとも１つの別の態様によれば、メインメモリ１１２とキャッシュメモリ１１４とを制御するための方法ならびに装置は、図１に示すような適切なハードウェアを用いて実現することができる。この種のハードウェアは、公知の技術のいずれかを用いて実装することができる。この例には、標準的なディジタル回路、ソフトウェアプログラムおよび／またはファームウェアプログラムを実行するように動作可能な公知のプロセッサのいずれか、プログラマブル読出し専用メモリ（ＰＲＯＭ）、プログラマブルアレイロジックデバイス（ＰＡＬ）などの、１つ以上のプログラム可能なディジタル装置またはシステムなどがある。さらに、図１に示した装置１００は、特定の機能ブロックに分けて図示しているが、これらのブロックは、別個の回路によって実施しても、１つ以上の機能単位を結合しても、この両方を行ってもよい。さらに、本発明は、持ち運んだり配布したり、あるいはこの両方を行えるように、適切な記憶媒体（フロッピーディスク、メモリチップなど）に記憶可能なソフトウェアプログラムおよび／またはファームウェアプログラムによって実装されてもよい。
【００３９】
本明細書に記載し、特許を請求するメモリ制御のための方法ならびに装置は、例えばグラフィックアプリケーションで使用されるメモリの線形性と高い局所性とに付随する特性を有利に利用する。キャッシュヒットが大幅に向上し、このため、メモリ効率、処理のスループット、およびグラフィックの画質の向上が達成される。
【００４０】
本明細書において、具体的な実施形態を用いて本発明を記載したが、これらの実施形態は、本発明の原理および応用の例を示すものに過ぎないことを理解されたい。このため、添付の請求の範囲に記載した本発明の趣旨および範囲から逸脱することなく、これら例示的な実施形態を種々に変更したり、上記以外の構成を考案し得ることが理解されよう。
【図面の簡単な説明】
【００４１】
【図１】本発明の１つ以上態様に従ってメモリを制御するために適した装置の態様（および／または方法の態様）を示すブロック図である。
【図２】図１に示したような本発明の１つ以上の態様に従って実行および／または実装され得る特定のアクション／機能を示すフローチャートである。
【図３】図１に示した装置（および／または方法の態様）と共に使用され得るメモリの特定の特徴を示す概念ブロック図である。
【図４】図３のメモリの概念を詳細に示す別の概念ブロック図である。
【図５】図３のメモリの概念を詳細に示すさらに別の概念ブロック図である。
【図６】図３のメモリのデータブロックの特定の態様を詳細に示す概念ブロック図である。
【図７Ａ】本発明の１つ以上の別の態様による、メモリの制御および／または実装に関し、図５に示した概念の別例を詳細に示す概念ブロック図である。
【図７Ｂ】本発明の１つ以上の別の態様による、メモリの制御および／または実装に関し、図５に示した概念の別例を詳細に示す概念ブロック図である。
【図１】
2005531847.tif 000003
【図２】
2005531847.tif 000004
【図３】
2005531847.tif 000005
【図４】
2005531847.tif 000006
【図５】
2005531847.tif 000007
【図６】
2005531847.tif 000008
【図７Ａ】
2005531847.tif 000009
【図７Ｂ】
2005531847.tif 000010
【国際調査報告】
2005531847.tif 000011
2005531847.tif 000012