(57)【要約】少なくとも１つのアプリケーションを処理するデータ処理システムを提供する。データ処理システムは、アプリケーションを実行するためのプロセッサ(100)を備える。システムは、プロセッサに対してデータ及び／又は命令をキャッシュするための、プロセッサ(100)に関連するキャッシュメモリ(200)をさらに備える。システムは、アプリケーションに対してデータ及び／命令を格納するためのメモリユニット(400)をさらに備える。メモリユニット(400)は、複数のメモリパーティション(401-404)を備える。同様のデータ属性を有するデータは、同一のメモリパーティション(401-404)に格納される。所定のプリフェッチパターンが、メモリパーティション(401-404)の各々に関連する。
2009528612.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのアプリケーションを処理するためのデータ処理システムであって、
-  前記少なくとも１つのアプリケーションを実行するための少なくとも１つのプロセッサと；
-  前記少なくとも１つのプロセッサに関連し、データ及び／又は命令をキャッシュするためのキャッシュメモリと；さらに
‐  前記少なくとも１つのアプリケーションのデータ及び／又は命令を格納するためのメモリユニットと；
を備え、
前記メモリユニットは、複数のメモリパーティションを含み、同様のデータ属性を有するデータは、同じメモリパーティションに格納され；さらに、
所定のプリフェッチパターンが、前記メモリパーティションの各々に関連している、
ことを特徴とするデータ処理システム。
【請求項２】
請求項１に記載のデータ処理システムにおいて、前記キャッシュメモリが、前記メモリパーティションに関連する前記所定のプリフェッチパターンを格納するための、各々が前記メモリパーティションのうちの１つに関連している複数のレジスタを備え、データ及び／又は命令が、前記レジスタに格納された前記プリフェッチパターンに従ってプリフェッチされる、ことを特徴とするデータ処理システム。
【請求項３】
請求項１または２に記載のデータ処理システムにおいて、同様の参照の局所性を有するデータが、同じ前記メモリパーティションに格納される、ことを特徴とするデータ処理システム。
【請求項４】
請求項３に記載のデータ処理システムにおいて、高い参照の局所性を有するメモリパーティションに格納されるデータは完全なデータブロックとしてフェッチされ、低い参照の局所性を有するメモリパーティションに格納されている要求データはただ単にフェッチされる、ことを特徴とするデータ処理システム。
【請求項５】
メモリユニットへ少なくとも１つのアプリケーションのデータ及び／又は命令をロードするための方法であって、前記メモリユニットは複数のメモリパーティションを備え、前記方法が：
‐  同様のデータ属性を有するデータ及び／又は命令を、同じ前記メモリパーティションにロードするステップ、
を含むことを特徴とするメモリユニットへ少なくとも１つのアプリケーションのデータ及び／又は命令をロードするための方法。
【請求項６】
複数のメモリパーティションを有するメモリユニットからの少なくとも１つのアプリケーションのデータ及び／又は命令を、プロセッサに関連するキャッシュメモリにプリフェッチするための方法であって、同様のデータ属性を有するデータが、同一の前記メモリパーティションに格納されており、前記方法が：
‐  前記メモリパーティションの各々に関連する所定のプリフェッチパターンを実行するステップ、
を含むことを特徴とするデータ及び／又は命令をプリフェッチするための方法。
【請求項７】
請求項６に記載のデータ及び／又は命令をプリフェッチするための方法において、同様の参照の局所性を有するデータ及び／又は命令が、同一の前記メモリパーティションに格納され、前記プリフェッチパターンが、プリフェッチすべき前記データが格納される前記メモリ領域に依存する、ことを特徴とするデータ及び／又は命令をプリフェッチするための方法。
【請求項８】
少なくとも１つのアプリケーションを処理するための電子デバイスであって：
‐  前記少なくとも１つのアプリケーションを実行するための少なくとも１つのプロセッサと、
‐  複数のメモリパーティションを有するメモリユニットかたデータ及び／又は命令をキャッシュするための、前記少なくとも１つのプロセッサに関連するキャッシュメモリと、
を備え、
同様のデータ属性を有するデータが、同一の前記メモリパーティションに格納され、所定のプリフェッチパターンが、前記メモリパーティションの各々に関連する、
ことを特徴とする電子デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システム、データ及び／又は命令のプリフェッチ方法、データ及び／又は命令のメモリ及び電子デバイスへのロード方法に関する。
【背景技術】
【０００２】
今日のデータ処理システムやプロセッサはあるメモリ階層に基づいており、速度及びサイズの異なるメモリを備えている。しかしながら、高速なメモリは高価であるため、メモリ階層は、各レベルがすぐ下のレベルよりも小さく高速で、かつバイト単価がより高価である複数のレベルに編成される。階層の最下層に達するまで、通常、１つのレベルにおける全データはそれよりも下位のレベルで見つけることができ、さらに、その下位のレベルの全データは、それよりも下位のレベルで見つけることができる。
【０００３】
キャッシュメモリは、メモリ階層の第１レベルを構成することができ、すなわち、それは中央演算処理装置ＣＰＵ又は処理装置に最も近いメモリである。ＣＰＵがデータアイテムを要求し、そのデータアイテムがキャッシュ内で見つかれば、いわゆるキャッシュヒットが生じる。しかしながら、ＣＰＵによってリクエストされたデータアイテムがキャッシュ内で見つからない場合は、いわゆるキャッシュミスが生じる。キャッシュミスを正し、リクエストされたデータアイテムをフェッチするのに必要な時間は、メモリのレイテンシ及びバンド幅に依存する。レイテンシは、１ブロックの第１のワードを読み出すための時間に相当し、バンド幅は、１ブロックの残りを読み出すための時間に関連する。キャッシュの基本的な考えは、来るべき処理サイクルの期間に必要となるであろうデータアイテムを、それらの実際の処理の前にフェッチすることである。
【０００４】
キャッシュミスが生じた場合、全部のキャッシュラインを一度にリプレイスすることでメモリバンド幅を活用することができる。しかしながら、このようなアプローチは、使用できるメモリバンド幅を向上するために、キャッシュラインサイズをも拡大させることになる。キャッシュラインの拡大は、特にプリフェッチに関して有利である。しかしながら、キャッシュラインのサイズが拡大すると、プログラムが充分な空間的局所性を有さずにキャッシュミスが頻発する場合、システムのパフォーマンスが低減するおそれがある。
【０００５】
K.イノウエ等による、“Dynamically Variable Line-Size Cache Exploiting High On-Chip Memory Bandwidth of Merged DRAM/Logic LSIs”，Proceedings of HPCA-5.5 International Conference on High Performance Computing， Jan. 1999には、現在実行されているアプリケーションに従って、ランタイムにキャッシュラインのサイズを変更することが記載されている。
【０００６】
データ処理システムの内部で処理することができるアルゴリズムは、データ及び命令に対するそれらの参照の局所性に関して異なる。参照の局所性は、プロセッサ上で動作しているアプリケーションのプロパティを構成する。参照の局所性は、種々のメモリ領域がアプリケーションによってどのようにアクセスされるかを示す。ここで、参照の局所性とは、参照の空間的局所性及び参照の時間的局所性のことを指す。最近アクセスされたデータ位置に近接するデータ位置が、近い将来にアクセスされるという大きな見込みがある場合、アプリケーションは、良好な参照の空間的局所性を有する。参照の時間的局所性は、最近のデータ位置へのアクセスが、近い将来に再び起こることを示す。従って、幾つかのアルゴリズムが良好な参照の局所性（空間的又は時間的のいずれか、或いは両方）を有することになる一方で、他のものは、不良の参照の局所性を成す。従って、幾つかのアルゴリズムは良好なキャッシュヒット率を有するようになり、一方で、他のものはいくぶん悪いキャッシュヒット率を有するようになる。なお、キャッシュミスは回避できない点に留意されたい。しかしながら、キャッシュミス率は、キャッシュミスペナルティを削減すべく最小限まで低減しなければならない。処理中のデータが高い空間的局所性を有する場合は、より大きなキャッシュラインが使用される。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、キャッシュミスペナルティの量を低減した、データ処理システム並びにデータ及び／又は命令のプリフェッチ方法を提供することにある。
【課題を解決するための手段】
【０００８】
この目的は、請求項１に係るデータ処理システム、請求項５にかかるデータ及び／又は命令のロード方法、請求項６に係るデータ及び／又は命令のプリフェッチ方法、及び請求項８に係る電子デバイスよって解決される。
【０００９】
その結果、少なくとも１つのアプリケーションを処理するためのデータ処理システムが提供される。データ処理システムは、アプリケーションを実行するためのプロセッサを備える。システムは、データ及び／又はプロセッサに対する命令をキャッシュするための、プロセッサに関連するキャッシュメモリをさらに備える。システムは、データ及び／又はアプリケーションに対する命令を格納するためのメモリユニットをさらに備える。メモリユニットは、複数のメモリパーティションを含む。同様のデータ属性を有するデータは、同じメモリパーティションに格納される。所定のプリフェッチパターンが、メモリパーティションの各々に関連している。
【００１０】
本発明の一態様によれば、キャッシュメモリが複数のレジスタを備え、それら各々はメモリのメモリパーティションのうちの１つに関連している。レジスタは、メモリパーティションに関連する所定のプリフェッチパターンを格納するのに用いられる。データ及び／又は命令は、レジスタに格納されたプリフェッチパターンに従ってプリフェッチされる。従って、データアイテムのプリフェッチは、特定のデータアイテムに対して、特に、そのデータ属性を考慮してカスタマイズすることができる。
【００１１】
本発明のさらに別の態様によれば、同様の参照の局所性を有するデータは、同じメモリパーティションに格納される。従って、必要とされるそれらデータアイテムだけがプリフェッチされて、キャッシュミスペナルティを低減することができる。
【００１２】
本発明のさらに別の態様によれば、高い参照の局所性を有するメモリパーティションに格納されるデータは、完全なデータブロックとしてフェッチされ、低い参照の局所性を有するメモリパーティションに格納されている要求データは、ただ単にフェッチされる。
【００１３】
本発明は、アプリケーションのデータ及び／又は命令のメモリユニットへのロードの方法にも関する。メモリユニットは、複数のメモリパーティションを備える。同様のデータ属性を有するデータ及び／又は命令は、同じメモリパーティションにロードされる。従って、その中に格納されるメモリ及びデータは、データ属性に従って編成されることになる。
【００１４】
本発明は、さらに、複数のメモリパーティションを備えるメモリユニットから、アプリケーションのデータ及び／又は命令をプリフェッチするための方法にも関する。メモリユニットからのデータは、プロセッサに関連するキャッシュメモリにプリフェッチされる。同様のデータ属性を有するデータが、同じメモリパーティションに格納される。所定のプリフェッチパターンが、各々のメモリパーティション上で実行される。
【００１５】
本発明は、アプリケーションを処理するための電子デバイスにも関する。電子デバイスは、アプリケーションを実行するための少なくとも１つのプロセッサを備えている。電子デバイスは、複数のメモリパーティションを有するメモリユニットから受信したデータ及び／又は命令をキャッシュするための、少なくとも１つのプロセッサに関連するキャッシュメモリをさらに備える。同様のデータ属性を有するデータは、同じメモリパーティションに格納される。所定のプリフェッチパターンが、各々のメモリパーティションに関連する。
【００１６】
本発明は、同様のキャッシュパフォーマンスを有する命令及び／又はデータを同様の領域に一緒に分類しながら、メモリ空間を異なる領域にパーティション化するための構想に関する。この領域は、キャッシュミスの期間にフェッチされるワードの量に基づいてもよい。従って、メモリにおけるデータの記憶を再編成することによって、かなりの利得を得ることができる。このことは、より良好なパフォーマンスと実行時間の削減とにつながる。
【発明を実施するための最良の形態】
【００１７】
これ以降に、本発明の実施例及びその効果を、図面を参照して更に詳細に説明する。
【００１８】
図１は、第１実施例による、アプリケーションを処理するためのデータ処理システムのアーキテクチャのブロック図である。データ処理システムは、プロセッサ１００、キャッシュ２００、データバス３００及びメモリユニット４００を備える。個別のプログラムデータ及び／又はアプリケーションに対する命令は、メモリユニット４００に格納される。メモリ４００からのデータ及び／又は命令は、バス３００を経て、キャッシュ２００にプリフェッチされる。キャッシュは、キャッシュの動作を制御するためのキャッシュコントローラ２１０及びキャッシュメモリ２２０を備えることができる。キャッシュは、コンフィギュラブルなレジスタ２４０をさらに備えることができる。
【００１９】
図２は、図１のメモリ４００の一例である。具体的には、メモリ４００は、異なる領域４０１〜４０４に分割され、データ及び／又はアプリケーションに対する命令は、これらメモリ領域４０１〜４０４に格納される。同様の参照の局所性のパターンを有するデータは、同じメモリ領域４０１〜４０４に配置される。データがいかなる参照の局所性も示さない場合は、そのようなデータは、メモリ領域４０１に置かれる。このデータがアクセスされる場合は、単に１つのワードのみがフェッチされて転送される。例として、領域４０４が、非常に良好な参照の局所性を共有しているデータ及び命令を含んでいるとする。メモリ領域４０４におけるこれらのデータがアクセスされる場合は、データの全キャッシュブロック（キャッシュライン又は多数のワード）が、キャッシュ２００にプリフェッチされる。従って、データ及び／又は命令のプリフェッチは、データが格納された場所、すなわち、データが格納されるメモリ領域に依存することになる。従って、このようなアーキテクチャによって、キャッシュミスペナルティが低減する。参照の局所性又は局所性の原理は、単一のリソースに複数回アクセスする処理と関係がある。参照の局所性は、時間的、空間的及び逐次的な局所性に関係し得る。参照の時間的局所性は、ある点でのリソース参照が、やがて近い将来再び参照されるという概念に関する。参照の空間的局所性は、近傍のリソースが参照されたリソースは、参照される可能性がより高いという概念に関する。参照の逐次的局所性は、メモリが順次アクセスされるという概念に関する。従って、データは、時間的、空間的及び／又は逐次的な参照の局所性に従って、特定のメモリ領域４０１〜４０４に格納される。メモリ４００に格納されるデータを解析して、そのデータの参照の局所性を判定し、さらに、それらの参照の局所性に基づいて、それぞれのメモリ領域４０１〜４０４にデータを格納することができる。
【００２０】
図３は、図１のキャッシュのパーティションの一例である。キャッシュ２００は、キャッシュメモリ内のデータの状態を示すのに用いることができるキャッシュメモリ２２０と、キャッシュの動作を制御するためのキャッシュコントローラ２１０とを備えることができる。第１のキャッシュカラム２０１は、キャッシュブロックの状態、すなわち、それが変更されるか、共有されるか、無効であるか又は排他的であるかどうかを示すのに用いられる。第２のキャッシュカラム２０２は、キャッシュブロック内のデータのビット状態を示すのに用いられる。この状態は、有効又は無効の状態を取りえる。第３のキャッシュコラム２０３は、多様なキャッシュメカニズムを実装するために必要となりえる他の状態ビット及びタグ情報を示すのに用いられる。第４のキャッシュカラムは、キャッシュに格納されている特定のデータを示すのに用いる。
【００２１】
キャッシュ２００は、（コンフィギュラブルな）レジスタ２４０を更に備えることができる。レジスタは、各パーティションに関連するのが好適である。このレジスタは、パーティションの各々に関する情報を格納するのに役立つ。この情報は、開始及び終了アドレス、データ又は命令がかかるパーティションからアクセスされた場合にフェッチすべきワードの数を含むことができる。
【００２２】
プロセッサ１００は、キャッシュ２００に対し、指定されたアドレスからデータを読み出すことを要求する命令を出す。このデータがすでにキャッシュ２００にプリフェッチされている場合はキャッシュヒットが生じ、それから、そのデータがキャッシュ２００からプロセッサ１００へと転送される。しかしながら、データがキャッシュ２００に存在しない場合は、キャッシュミスが生じる。キャッシュ２００のキャッシュコントローラ２１０は、メモリ４００内のアドレスのパーティション又はメモリ領域４０１〜４０４を判定して、このパーティションに関連付けられている幾つかのワードをフェッチするために、フェッチオペレーションを発することができる。続いて、パーティション又はメモリ・サブシステムからのデータは、この領域４０１〜４０４に対する所定のプリフェッチパターンに従って、キャッシュ２００へ転送される。その後、有効データがキャッシュブロックに存在するかどうかを示すべく、キャッシュブロックの状態が更新される。
【００２３】
本発明によれば、メモリ空間がパーティション化又は異なるメモリ領域に分割されて、命令及び／又はデータは、同様の参照の局所性のような同様のキャッシュ性能を有する他の命令及び／又はデータを有するメモリ領域の１つに分類される。データが格納されるメモリ領域は、キャッシュミス期間にフェッチされるワードの量を示す。
【００２４】
上述のアーキテクチャは、複数のプロセッサシステムオンチップに実装することができる。従って、参照の局所性が低いアプリケーションもマッピングすることができる。
【００２５】
本発明は、異なる性質のデータ及び命令を分類するための方法、及びメモリ内に対応するメモリパーティションを生成するための方法にも関する。この情報によれば、アプリケーション・オブジェクトコード（バイナリファイル）をブートアップ時間の間システムメモリにロードするリンカ又はローダ・アプリケーションが、命令の通りに、特定のメモリ領域内に実データを編成することができる。従って、コンパイラ、リンカ及び／又はローダユニットを、上述の編成及び生成を可能にするために設けることができる。所定のプリフェッチパターンは、メモリパーティション又はメモリ領域のそれぞれに関連づけられる。
【００２６】
上述した実施態様は本発明を制限するものではなく、当業者は、添付の請求の範囲から逸脱することなく、多くの代わりの実施態様を設計することができることに留意されたい。「含む」又は「備える」は、請求項又は明細書全体に記載されたもの以外の要素又はステップの存在を除外するものではない。単一の要素で示していたとしても、そのような要素が多数存在することを排除するものではない。複数の手段を列挙している装置クレームにおいて、それらの手段の幾つかを、同一のソフトウェア又はハードウェアによって実現してもよい。ある手法を、互いに異なる独立項において引用しているという単なる事実は、それらの手法を組み合わせて使用することが有利ではない、ということを示すものではない。
【図面の簡単な説明】
【００２７】
【図１】データ処理システムのブロック図である。
【図２】図１のメモリに対するメモリのパーティションの一例を示す図である。
【図３】キャッシュのパーティションの一例を示す図である。
【図１】
2009528612.tif 000003
【図２】
2009528612.tif 000004
【図３】
2009528612.tif 000005
【国際調査報告】
2009528612.tif 000006
2009528612.tif 000007
2009528612.tif 000008