(57)【要約】キャッシュラインをフェッチする実施形態は、第１のＮ個のデータ要素の組（２０９ａ）および隣接する第２のＮ個のデータ要素の組（２０９ｂ）を記憶するメモリロケーションを有する第１のメモリ（２０６）を準備することを含む。両方のデータ要素の組が前記第１のメモリ（２０６）内でライン状に整列される。前記Ｎ個のデータ要素が整数個のラインを形成する。  前記キャッシュメモリ（２０７）にアクセスするプロセッサ（２０２）が準備され、第１のモード（２９０）および第２のモード（２９１）の二つのモードで動作する。  前記プロセッサの動作モードが判定される。前記第１の動作モード（２９０）にある時、前記第１のメモリから前記キャッシュメモリ（２０７）へＮ個のデータ要素が同時に転送される。Ｍが１よりも大きい整数であり、前記プロセッサが前記第２の動作モード（２９１）にある時少なくとも時折は、前記プロセッサは前記第１のメモリ（２０６）から前記キャッシュメモリへＭ×Ｎ個のデータ要素を同時に転送する。
2005536798.tif 000002
【特許請求の範囲】
【請求項１】
第１のＮ個のデータ要素の組および隣接する第２のＮ個のデータ要素の組を記憶するメモリロケーションを有する第１のメモリであって、両方のデータ要素の組が前記第１のメモリ内でライン状に整列され、前記Ｎ個のデータ要素が整数個のラインを形成する、前記第１のメモリを準備するステップと、
キャッシュメモリを準備するステップと、
前記キャッシュメモリにアクセスし、かつ、第１のモードおよび第２のモードの二つのモードのそれぞれで動作するプロセッサを準備するステップと、
前記プロセッサの動作モードを判定するステップと、
前記プロセッサが前記第１の動作モードにある時、前記第１のメモリから前記キャッシュメモリへＮ個のデータ要素を同時に転送するステップと、
Ｍが１よりも大きい整数であり、前記プロセッサが前記第２の動作モードにある時少なくとも時折は、前記第１のメモリから前記キャッシュメモリへＭ×Ｎ個のデータ要素を同時に転送するステップと、
を有する、キャッシュラインをフェッチする方法。
【請求項２】
前記第１のモードは前記プロセッサによって要求されたデータがその要求の時点で前記キャッシュメモリ内に記憶されているキャッシュヒットモードを含み、
前記第２のモードは前記プロセッサによって要求されたデータがその要求の時点で前記キャッシュメモリ以外に記憶されているキャッシュミスモードを含む、
請求項１に記載の方法。
【請求項３】
キャッシュミスが発生したデータ要素が前記第１のメモリ内でＭ本のラインの境界に揃えられているかどうかを判定するステップをさらに有し、
前記第１のメモリから前記キャッシュメモリへＭ×Ｎ個のデータ要素を同時に転送するステップは前記データ要素がＭ本のラインの境界に揃えられている時に限り実行される、
請求項２に記載のキャッシュラインをフェッチする方法。
【請求項４】
Ｍが２のべき乗である、請求項３に記載の方法。
【請求項５】
Ｍが２である、請求項４に記載の方法。
【請求項６】
Ｎ＝４である、請求項５に記載の方法。
【請求項７】
キャッシュミスが発生したデータ要素が前記第１のメモリ内でＭ本のラインの境界に揃えられたデータ要素のライン内にあるかどうかを判定するステップをさらに有し、
前記第１のメモリから前記キャッシュメモリへＭ×Ｎ個のデータ要素を同時に転送するステップは前記データ要素がＭ本のラインの境界に揃えられている時に限り実行される、
請求項２に記載の方法。
【請求項８】
Ｍが２のべき乗である、請求項７に記載の方法。
【請求項９】
Ｍが２である、請求項８に記載の方法。
【請求項１０】
Ｎ＝４である、請求項９に記載の方法。
【請求項１１】
第１の動作モードおよび第２の動作モードを含む複数の動作モードの中からプロセッサの動作モードを判定するステップと、
前記プロセッサが前記第１の動作モードにある時、第１のメモリからキャッシュメモリへＮ個のデータ要素を同時に転送するステップと、
Ｍが１よりも大きい整数であり、前記プロセッサが前記第２の動作モードにある時に少なくとも時折は、前記第１のメモリから前記キャッシュメモリへＭ×Ｎ個のデータ要素を同時に転送するステップと、
を実行する命令を記述するデータが記憶されたメモリ。
【請求項１２】
前記データは、前記第１の動作モードが前記プロセッサによって要求されたデータがその要求の時点で前記キャッシュメモリ内に記憶されているキャッシュヒットモードを含み、前記第２の動作モードが前記プロセッサによって要求されたデータがその要求の時点で前記キャッシュメモリ以外に記憶されているキャッシュミスモードを含むように、命令を実行するためのデータである、請求項１１に記載のメモリ。
【請求項１３】
前記データは、キャッシュミスが発生したデータ要素が前記第１のメモリ内でＭ本のラインの境界に揃えられているかどうかを判定するステップを実行する命令を記述し、
前記第１のメモリから前記キャッシュメモリへＭ×Ｎ個のデータ要素を同時に転送するステップは前記データ要素がＭ本のラインの境界に揃えられている時に限り実行される、
請求項１２に記載のメモリ。
【請求項１４】
Ｍが２のべき乗である、請求項１３に記載のメモリ。
【請求項１５】
Ｍが２である、請求項１４に記載のメモリ。
【請求項１６】
Ｎ＝４である、請求項１５に記載のメモリ。
【請求項１７】
前記データは、キャッシュミスが発生したデータ要素が前記第１のメモリ内でＭ本のラインの境界に揃えられたデータ要素のライン内にあるかどうかを判定するステップを実行する命令を記述し、
前記第１のメモリから前記キャッシュメモリへＭ×Ｎ個のデータ要素を同時に転送するステップは前記データ要素がＭ本のラインの境界に揃えられている時に限り実行される、
請求項１２に記載のメモリ。
【請求項１８】
Ｍが２のべき乗である、請求項１７に記載のメモリ。
【請求項１９】
Ｍが２である、請求項１８に記載のメモリ。
【請求項２０】
Ｎ＝４である、請求項１９に記載のメモリ。
【請求項２１】
キャッシュメモリと、
Ｍ＞Ｎであり、ＭおよびＮのそれぞれはキャッシュラインがもつ整数であり、第１の動作モードにおいて、１本以上のキャッシュラインを形成するＮ個のデータ要素を前記キャッシュメモリに単一オペレーションでフェッチし、第２の別の動作モードにおいて、２本以上のキャッシュラインを形成するＭ個のデータ要素を前記キャッシュメモリに単一オペレーションでフェッチするキャッシュラインフェッチ回路と、
を有する、メモリシステム回路。
【請求項２２】
Ｎ個のデータ要素が１本のキャッシュラインを形成し、Ｍ個のデータ要素が複数個のキャッシュラインを形成する、請求項２１に記載のメモリシステム回路。
【請求項２３】
Ｍ個のデータ要素が２本のキャッシュラインを形成する、請求項２２に記載のメモリシステム回路。
【請求項２４】
Ｎ＝４である、請求項２３に記載のメモリシステム。
【請求項２５】
キャッシュヒット動作モードとキャッシュミス動作モードの範囲内で動作するプロセッサを有し、
前記第１の動作モードが前記プロセッサの前記キャッシュヒット動作モードであり、前記第２の別の動作モードが前記プロセッサの前記キャッシュミス動作モードである、
請求項２３に記載のメモリシステム。
【請求項２６】
キャッシュヒット動作モードとキャッシュミス動作モードの範囲内で動作するプロセッサを有し、
前記第１の動作モードが前記プロセッサの前記キャッシュヒット動作モードであり、前記第２の別の動作モードが前記プロセッサの前記キャッシュミス動作モードである、
請求項２１に記載のメモリシステム。
【請求項２７】
前記第２の別の動作モードがキャッシュミスモードであり、
キャッシュミスがＭ個のデータ要素の境界に揃えられたデータ要素であるキャッシュライン内のデータ要素に関係する、
請求項２６に記載のメモリシステム。
【請求項２８】
前記第２の別の動作モードがキャッシュミスモードであり、
キャッシュミスがＭ個のデータ要素の境界に揃えられたデータ要素に関係する、
請求項２７に記載のメモリシステム。
【請求項２９】
キャッシュメモリと、
Ｍ＞Ｎであり、ＭおよびＮのそれぞれはキャッシュラインがもつ整数であり、第１のキャッシュヒット動作モードにおいて、１本以上のキャッシュラインを形成するＮ個のデータ要素をキャッシュメモリに単一オペレーションでフェッチし、第２のキャッシュミス動作モードにおいて、２本以上のキャッシュラインを形成するＭ個のデータ要素を前記キャッシュメモリに単一オペレーションでフェッチするキャッシュラインフェッチ回路と、
を有する、メモリシステム回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータプリフェッチの分野に係わり、特に、プロセッサのストールサイクルを容易に減少させるようにメモリからデータをプリフェッチする分野に関する。
【背景技術】
【０００２】
集積回路テクノロジーが形状の小型化を進めるにつれて、その結果として、より高速な中央処理演算装置（ＣＰＵ）が開発されている。残念ながら、命令およびデータが典型的に記憶されているランダムアクセスメモリ（ＲＡＭ）の形の主メモリのようなメモリサブシステムのアクセス時間は、未だＣＰＵの高速化に適合していない。ＣＰＵは、これらの低速装置にアクセスして、そこから命令およびデータを取り出して処理しなければならない。これらの命令およびデータを取り出す際に、ＣＰＵと低速のメモリサブシステムとの間でボトルネックが実感される。典型的に、このボトルネックの影響を縮小するために、キャッシュメモリがメモリサブシステムとＣＰＵとの間に導入され、最近使用された（ＭＲＵ）命令およびデータをより低いレイテンシーでプロセッサに供給する。このキャッシュメモリの目的は、メモリサブシステムからＣＰＵへ流れる情報の命令およびデータのレイテンシーを向上させることである。レイテンシーは、所定の量の情報をメインメモリからＣＰＵへ転送するために要するクロックサイクル数で測定される。所要クロック数が減少するほど、レイテンシーが良くなる。
【０００３】
ＣＰＵによる命令の実行中に、メモリサブシステムとキャッシュメモリの両方がアクセスされる。キャッシュメモリは、対応したデータバイトがメモリアクセス要求を満たすかどうかを調べるために最初にアクセスされる。メモリアクセス要求が満たされるならば、キャッシュ「ヒット」が起こり、メモリアクセス要求が満たされないならば、メモリサブシステムがそのデータバイトを取り出すためにアクセスされる。要求されたデータバイトを取り出すためにメモリサブシステムにアクセスしなければならないことは、キャッシュ「ミス」と呼ばれる。キャッシュミスが発生すると、プロセッサにはストールサイクルが生じ、その間に要求されたデータバイトがメモリサブシステムからプロセッサおよびキャッシュメモリへ転送される。
【０００４】
メモリサブシステムからデータバイトをプリフェッチするプロセスは、プロセッサストールサイクル数を減少させるため実行される。将来の命令およびデータの使用を予想することにより、実際に使用される時にこの情報がキャッシュメモリへ高速に供給できるように、この予想されたデータのメモリサブシステムからのプリフェッチが実行される。その結果として、データはプリフェッチ済であり、メモリサブシステムからフェッチする必要がないので、プロセッサのストールサイクル数は減少させられる。
【０００５】
データブロックをプリフェッチするプロセスはデータバスを使用し、データバスがメモリサブシステムとキャッシュメモリとの間の通信を担う。プリフェッチオペレーションの結果として、データバスの帯域幅が減少する。一部のケースでは、プリフェッチのプロセスは、プロセッサによって使用されないことがあるメモリサブシステムからデータブロックを取り出す。これはバスの利用に不必要な負荷を加える。データブロックをキャッシュメモリ階層のあるレベルへ取り込むためには、既存のキャッシュデータブロックを置き換えることが必要であり、このようなデータブロックの置き換えは、メモリサブシステムから正しいデータを得るために別のフェッチオペレーションが発生させられるので、余分なバス利用の原因となる。キャッシュデータブロックは置き換えられるブロックがキャッシュメモリ階層のより低いレベルへ移されるように再編成されることがよくある。さらに、移されたデータブロックが将来の参照のためキャッシュメモリ階層の最上位レベルでもはや利用できなくなるならば、キャッシュミスが起こるかもしれない。
【０００６】
さらに、プロセッサによる将来の使用を予想して余分なデータブロックをプリフェッチすることは、以下の理由によって非効率的でもある。多数のプリフェッチが次から次へ発生するならば、バスが爆発的に利用され、最終的にバス帯域幅を減少させることになる。爆発的なバス利用は、共有データバスリソースを使用する他のコンポーネントの一時的な飢餓状態を引き起こし、その結果として、他のタイプのプロセッサストールが生じ、プロセッサおよびシステムの性能を低下させる影響を与える。
【０００７】
メモリサブシステムからキャッシュメモリへデータバイトを転送する時、転送の単位はキャッシュラインとして知られている。あるキャッシュラインがメモリサブシステムから転送されると、後続キャッシュラインがメモリからプリフェッチされる。このプリフェッチ処理は、メモリサブシステムからの後続ラインのプリフェッチがプロセッサ性能を向上させるという仮定に基づいている。現在のキャッシュライン上でキャッシュミスが発生した時、対応したキャッシュラインはメモリサブシステムからフェッチ済であり、キャッシュラインのフェッチレイテンシーを効果的に減少させる。このケースでは、プリフェッチされたキャッシュラインは、このライン上でキャッシュミスが発生した時に限りキャッシュメモリに入れられ、キャッシュミスが発生する前に、プリフェッチされたキャッシュラインはプリフェッチキャッシュラインバッファ内に存在する。これは使用されないプリフェッチされたキャッシュラインによって有効なキャッシュラインを犠牲にすることを回避する。
【０００８】
後続キャッシュラインのプリフェッチを実行するこの機能は、プロセッサ側に現れる低速メモリサブシステムのアクセス時間の影響、すなわち、メモリレイテンシーを軽減するために使用されるよく知られた技術である。プリフェッチを使用してこのレイテンシーを隠すことにより、予想される可能性があるキャッシュラインはキャッシュメモリの近くのプリフェッチバッファに既に存在するので、プロセッサに生じるストールサイクル数が減少する。プロセッサはキャッシュメモリからこのプリフェッチされたキャッシュラインにより効率的にアクセスすることが可能であるので、プロセッサ性能を向上させる可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
キャッシュラインプリフェッチはシステム性能を低下させる。プロセッサによって実質的に要求されないプリフェッチされたキャッシュラインは、次に、メモリサブシステムからプロセッサへ転送され、これにより、メモリ帯域幅を無駄に使用し、他のメモリトランザクションの発生を妨げる。この副次的な悪影響は、多数の処理エレメントがクリティカルなメモリ帯域幅リソースを共有しなければならない統合メモリシステムオンチップアーキテクチャにおいてより明白になる。したがって、プリフェッチは、プロセッサの観点だけでなく、システムアーキテクチャの観点からも取り扱われるべきプロセスである。
【００１０】
典型的に、キャッシュメモリで使用されるキャッシュラインのサイズはプロセッサの最適性能を考慮に入れて決められ、典型的に、これは、最も一般的な状況、すなわち、キャッシュヒットにおいてキャッシュラインのサイズを最適化することを要求する。また、キャッシュラインのサイズはキャッシュミスの増減にも関係する。キャッシュラインがあまりに大きいならば、キャッシュメモリは非常に大量のデータを格納し、このデータの大半は正しくないためプロセッサによって使用できないので、キャッシュ汚染が生じる。キャッシュラインがあまりに小さいならば、キャッシュは大部分のキャッシュミスを防止するために十分な量のデータを格納せず、プロセッサは処理動作を円滑に進めるためにメモリサブシステムからデータをプリフェッチすることが必要である。
【００１１】
上記の問題は、複数のプロセッサがメモリおよびバスリソースを共有するマルチプロセッサシステムにおいてより一層重大になる。このようなシステムにおいて、キャッシュミスはすべてのプロセッサの性能に影響を与え、キャッシュミスの効率的な解決が全体的なシステム性能を維持するために適時に求められる。効率的なプリフェッチはプロセッサ性能を著しく向上させる。
【発明が解決しようとする手段】
【００１２】
本発明によれば、第１のＮ個のデータ要素の組および隣接する第２のＮ個のデータ要素の組を記憶するメモリロケーションを有する第１のメモリであって、両方のデータ要素の組が前記第１のメモリ内でライン状に整列され、前記Ｎ個のデータ要素が整数個のラインを形成する、前記第１のメモリを準備するステップと、キャッシュメモリを準備するステップと、前記キャッシュメモリにアクセスし、かつ、第１のモードおよび第２のモードの二つのモードのそれぞれで動作するプロセッサを準備するステップと、前記プロセッサの動作モードを判定するステップと、前記プロセッサが前記第１の動作モードにある時、前記第１のメモリから前記キャッシュメモリへＮ個のデータ要素を同時に転送するステップと、Ｍが１よりも大きい整数であり、前記プロセッサが前記第２の動作モードにある時少なくとも時折は、前記第１のメモリから前記キャッシュメモリへＭ×Ｎ個のデータ要素を同時に転送するステップと、を有する、キャッシュラインをフェッチする方法が提供される。
【００１３】
本発明の他の特徴によれば、第１の動作モードおよび第２の動作モードを含む複数の動作モードの中からプロセッサの動作モードを判定するステップと、前記プロセッサが前記第１の動作モードにある時、第１のメモリからキャッシュメモリへＮ個のデータ要素を同時に転送するステップと、Ｍが１よりも大きい整数であり、前記プロセッサが前記第２の動作モードにある時に少なくとも時折は、前記第１のメモリから前記キャッシュメモリへＭ×Ｎ個のデータ要素を同時に転送するステップと、を実行する命令を記述するデータが記憶されたメモリが提供される。
【００１４】
本発明のさらに他の特徴によれば、キャッシュメモリと、Ｍ＞Ｎであり、ＭおよびＮのそれぞれはキャッシュラインがもつ整数であり、第１の動作モードにおいて、１本以上のキャッシュラインを形成するＮ個のデータ要素を前記キャッシュメモリに単一オペレーションでフェッチし、第２の別の動作モードにおいて、２本以上のキャッシュラインを形成するＭ個のデータ要素を前記キャッシュメモリに単一オペレーションでフェッチするキャッシュラインフェッチ回路と、を有する、メモリシステム回路が提供される。
【発明を実施するための最良の形態】
【００１５】
以下、添付図面を参照して本発明を説明する。
【００１６】
図１は従来技術によるシステムオンチップ（ＳｏＣ）アーキテクチャ１０１を例示する。ＳｏＣはオフチップメモリコントローラ１０４に結合されたプロセッサ１０２を規定する。オフチップメモリコントローラは外部データバス１０５を介してダイナミックランダムアクセスメモリ（ＤＲＡＭ）の形態のメモリサブシステム１０６に結合される。メモリサブシステム１０６は、ｎ個のメモリページ１０６ａ〜１０６ｎにより構成され、ｎページのそれぞれは個別にアドレス指定可能である。また、キャッシュバッファ１０８は、ＳｏＣ１０１の一部として設けられたキャッシュメモリ１０７内に記憶する前に、メモリサブシステムから転送されたキャッシュラインを記憶するため設けられる。
【００１７】
オフチップメモリコントローラ１０４は、外部データバス１０５を使用してメモリサブシステムからのデータバイトをキャッシュメモリ１０７およびキャッシュバッファ１０８へ供給するため、メモリページ１０６ａ〜１０６ｎのいずれかにアクセスするため使用される。典型的に、メモリサブシステム１０６とキャッシュメモリ１０７またはキャッシュバッファ１０８との間で転送されるデータバイトの量はキャッシュライン１０９を形成するデータバイトの量である。オフチップメモリコントローラ１０４はプロセッサ１０２によって制御され、プロセッサのストールサイクル数を減少させるため、メモリサブシステム１０６からキャッシュメモリ１０７およびキャッシュバッファ１０８へのプリフェッチトランザクションを実行する責任を担う。
【００１８】
プロセッサ１０２がプリフェッチトランザクションを発生する時、一定レイテンシーおよび可変レイテンシーが生じる。一定レイテンシーは、同じ時間量がすべてのプリフェッチトランザクションを設定するために必要とされるという点で一定の時間量を有する。可変レイテンシーは、トランザクション中にプリフェッチされるべきデータ要素の量に応じて時間が伸縮する。したがって、可変レイテンシー時間は、プリフェッチオペレーションで転送されるデータ要素の数が乗算され、一定レイテンシーに加算され、結果として総プリフェッチレイテンシーを生ずる。
【００１９】
プリフェッチトランザクションが行われる時、外部データバス１０５は現在のプリフェッチトランザクションだけのために使用され、その結果として、他のトランザクションは、プリフェッチが終了するまで同じ外部バス１０５のリソースを同時に共有できない。プリフェッチトランザクションを終了するために要する時間は、トランザクション中に転送されるデータバイト数に依存する。このように、一部のケースでは、外部バスリソースがトランザクション毎にあまり利用されないように、小さいキャッシュラインサイズを有するプリフェッチトランザクションを実行する方が有利である。しかし、多数のプリフェッチトランザクションを発生させることにより、より多くの時間が各トランザクションを設定する際に費やされるので、一定レイテンシーに基づく時間の量が増加する。したがって、プリフェッチトランザクションの回数と、各プリフェッチトランザクションで転送されるデータの量との間にはトレードオフがある。
【００２０】
メモリサブシステムがアクセスされる時にさらなる問題点が生じるが、その理由は、メモリサブシステム１０６内のメモリページをアクセスすることによって余分なレイテンシーが生じるからである。メモリサブシステム１０６内のメモリページがアクセスされる時、同じメモリページに対する後続のアクセスは可能ではないが、その理由は、そのページを記憶するため使用されたメモリ回路が典型的に１ポート型であり、したがって、異なるアドレスでの複数の読み出しをサポートしないからである。プリフェッチトランザクションが第１のアドレスで現在のメモリページにアクセスするため既に実行されているならば、第２のメモリアドレスで同じメモリページにアクセスする後続のトランザクションの実行は、先行のトランザクションが終了するまで遅らせられる。これは後続キャッシュラインのプリフェッチに問題を引き起こすが、その理由は、典型的に後続キャッシュラインが先にフェッチされたキャッシュラインと同じメモリページにあるからである。しかし、後続キャッシュラインのプリフェッチトランザクションは前のキャッシュラインのフェッチトランザクションが終了するまで待機させることが必要であるため、後続キャッシュラインをプリフェッチするプロセスは開始前に遅延させられる。フェッチオペレーションが終了すると、メモリページはアクセスのため利用可能であり、後続キャッシュラインのプリフェッチトランザクションが開始する。典型的に、トランザクションが終了するまでの待ち時間中に、プロセッサはストールサイクルに陥り、その結果として、プロセッサ１０２による命令処理の効率が低下する。言うまでもなく、外部データバスリソースがプリフェッチオペレーションのため利用される間に、他のメモリサブシステムから同じバスリソースを使用しようとする干渉が生じる。勿論、プロセッサに接続する内部データバス、キャッシュメモリ、および、オフチップメモリコントローラは、また、プリフェッチオペレーション中にも利用されるので、後続キャッシュラインのフェッチは他のＳｏＣエレメントに由来するメモリサブシステムトランザクションからの干渉を生じる。このように、メモリサブシステム１０６内のオフチップメモリページが閉じているため、大きいトランザクションレイテンシーが典型的に観察される。上記の問題は、極めてマルチプロセッサシステム中に含まれる。
【００２１】
図１ｂはマルチプロセッサ型システムオンチップ（ＳｏＣ）アーキテクチャ１１１を例示する。ＳｏＣ内のアーキテクチャは図１ａに示されたＳｏＣ内のアーキテクチャと同様である。しかし、このケースでは、付加的なプロセッサ１１２が追加されている。プロセッサ１０２および１１２の両方はオフチップメモリコントローラ１０４に結合され、メモリサブシステム１０６からデータ要素を取り出す時に外部データバス１０５を共有する。このように、ある種の状況では、オフチップメモリコントローラ１０４は、プロセッサ１０２のためのプリフェッチトランザクションを遂行するため、メモリサブシステムにアクセスする。これと同じ状況の間に、付加的なプロセッサ１１２はメモリサブシステムに即時アクセスできないが、その理由は外部バス１０５が利用されているからである。付加的なプロセッサ１１２がプリフェッチオペレーションを始めるために待機しているならば、付加的なプロセッサ１１２は、プロセッサ１０２のプリフェッチオペレーションが終了するまで待機するために、この時間中にストールサイクルを生じる。したがって、付加的なプロセッサをＳｏＣに追加することは、必ずしもシステムの処理容量を増大させない。各プロセッサが他のプロセッサのプリフェッチオペレーションの終了をほぼ常に待機させられると、デュアルプロセッサシステムの性能はシングルプロセッサシステムの性能またはそれより悪くなるまで低下させられる。かくして、付加的なプロセッサの追加が処理帯域幅の増加を促進するために役立たない限り、マルチプロセッサシステムは有利にならない。実際上、２台のプロセッサが同じ外部バス１０５のリソースに対して互いに競合する時、性能は低下する。
【００２２】
図１ｃはマルチプロセッサ型システムオンチップ（ＳｏＣ）アーキテクチャ１２１の別の実施形態を例示する。ＳｏＣ内のアーキテクチャは図１ｂに示されたアーキテクチャと同様である。しかし、このケースでは、付加的なプロセッサ１１２は特殊プロセッサ１２２によって置き換えられる。ＳｏＣの動作は図１ｂのＳｏＣの動作とほぼ同一である。そうであるとしても、プロセッサのそれぞれは異なり、異なるアプリケーションのための性能を提供することを目的としているので、このようなシステムは、ストールサイクル数が多い時でさえ、依然として性能が向上する可能性がある。
【００２３】
勿論、ストールサイクル数の削減は上記のシステムのいずれにおいても性能の向上をもたらす。
【００２４】
ここでは、メモリサブシステムへのＳｏＣインタフェースの特性を利用する後続ラインのプリフェッチ技術が説明される。キャッシュミスの発生毎にメモリサブシステムからの単一のキャッシュラインのプリフェッチを生成するのではなく、ミスが発生したキャッシュラインと次に続くキャッシュラインの両方をフェッチする単一のトランザクションが生成される。その結果は、単一のキャッシュラインだけがメモリサブシステムからプリフェッチされる時のトランザクションサイズと比べると、２倍のトランザクションサイズを有する単一のメモリサブシステムのプリフェッチトランザクションであり、勿論、一定レイテンシーはそのまま変わらない。したがって、ｎがキャッシュライン内の要素の数である場合に、ｎ個の要素を要求し、最初のｎ個の要素がキャッシュミスを解決できない時にその後に続く後続のｎ要素を要求するのではなく、２ｎ個の要素を要求する単一のプリフェッチトランザクションが生成される。このタイプのプリフェッチオペレーションは、かくして爆発的なバス利用を減少させる。同数のデータバイトがプリフェッチオペレーションで転送されるので、可変レイテンシーは２ｎ個の要素が取り出される時に両方のケースで同一である。勿論、２ｎ個、３ｎ個、４ｎ個などの要素を要求するプリフェッチトランザクションの可能性は、ストールサイクル数および爆発的なバス利用を減少させる観点でどれが最も効果的であるかに依存する。
【００２５】
図２ａはシステムオンチップ（ＳｏＣ）アーキテクチャ２０１を例示する。ＳｏＣは、内部データバスおよびオフチップメモリコントローラ２０４に結合されたプロセッサ２０２を定める。オフチップメモリコントローラは、外部データバス２０５を介して、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）の形態のメモリサブシステム２０６、すなわち、第１のメモリ２０６に結合される。メモリサブシステム２０６は、ｎ個のメモリページ２０６ａ〜２０６ｎにより構成され、ｎ個のページのそれぞれは個別にアドレス指定可能である。キャッシュバッファ２０８は、また、メモリサブシステムから転送された単一のキャッシュラインのため設けられ、ＳｏＣ２０１の一部として設けられたキャッシュメモリ２０７内に格納される前に、メモリサブシステムから転送された多数のキャッシュラインを記憶する。
【００２６】
オフチップメモリコントローラ２０４は、外部データバス２０５を使用してメモリサブシステムからのデータバイトをキャッシュメモリ２０７およびキャッシュバッファ２０８へ供給するため、メモリページ２０６ａ〜２０６ｎのいずれかにアクセスするため使用される。典型的に、メモリサブシステムとキャッシュメモリ２０７またはキャッシュバッファ２０８との間で転送されるデータバイトの量はキャッシュラインを形成するデータバイトの量であるが、キャッシュミスの状況の間に、多数のキャッシュラインを形成する大量のデータバイトが転送される。オフチップメモリコントローラ２０４はプロセッサ２０２によって制御され、プロセッサのストールサイクル数を減少させるため、メモリサブシステム２０６からキャッシュメモリ２０７およびキャッシュバッファ２０８へのプリフェッチトランザクションを実行する責任を担う。オフチップメモリコントローラ２０４は、単一キャッシュライン２０９ａの転送オペレーションを実行し、かつ多重キャッシュラインの転送オペレーションを実行する回路をその中に含む。たとえば、多重キャッシュラインの転送オペレーションは、キャッシュミスの状況の間に、２本の後続キャッシュライン２０９ａおよび２０９ｂを転送する。
【００２７】
図２ｂはマルチプロセッサ型システムオンチップ（ＳｏＣ）アーキテクチャ２１１を例示する。ＳｏＣ内のアーキテクチャは図２ａに示されたアーキテクチャと同様である。しかし、このケースでは、付加的なプロセッサ２１２が追加された。プロセッサ２０２および２１２の両方はオフチップメモリコントローラ２０４に結合され、メモリサブシステム２０６からデータ要素を取り出す時に外部データバス２０５を共有する。このように、ある種の状況の間に、オフチップメモリコントローラ２０４は、プロセッサ２０２のためのプリフェッチトランザクションを遂行するため、メモリサブシステムにアクセスしている。これと同じ状況の間に、付加的なプロセッサ２１２はメモリサブシステムに即時アクセスできないが、その理由は外部バス２０５が利用されているからである。
【００２８】
図２ｃはマルチプロセッサ型システムオンチップ（ＳｏＣ）アーキテクチャ２２１の別の実施形態を例示する。ＳｏＣ内のアーキテクチャは図２ｂに示されたアーキテクチャと同様である。しかし、このケースでは、特殊プロセッサ２２２が付加的なプロセッサ２１２を置き換える。ＳｏＣの動作は図２ｂのＳｏＣの動作とほぼ同一である。
【００２９】
図２ｄによれば、プロセッサがプリフェッチトランザクション内でデータを転送するため第１の動作モード２９０と第２の動作モード２９１のどちらで動作するかを示すフローチャートが表されている。第１の動作モード２９０では、プロセッサは第１のメモリからキャッシュメモリへＮ個のデータ要素を同時に転送し、第２の動作モード２９１では、プロセッサは、Ｍが１よりも大きい整数である場合に、第１のメモリからキャッシュメモリへＭ×Ｎ個のデータ要素を同時に転送する。
【００３０】
図３ａによれば、５本の順次キャッシュライン３０１〜３０５を記憶したメモリサブシステムのメモリページ２０６ａが表されている。これらのキャッシュラインのそれぞれは、４個のデータ要素３０１ａ〜３０１ｄから３０５ａ〜３０５ｄまでをそれぞれに有する。５×４個のデータ要素が開始アドレス０ｘ００から０ｘ１０に位置する。データ要素のアドレスがＡｎによって一般的に表現されるならば、ｎ番目の要素の次に続くラインは、
Ａｎ＋１＝Ａｎ＋（４×要素サイズ）
を使用して見つけられる。
【００３１】
メモリサブシステムからＳｏＣ内の回路エレメントであるメモリシステムへキャッシュラインを転送する時に、プロトコルが使用される。これらのプロトコルは典型的に３つの特徴が観察される。最初に、メモリサブシステムのプロトコルは、典型的に、トランザクション要素サイズの２の整数べき乗であるトランザクションサイズをサポートする。すなわち、このプロトコルは、２のべき乗、すなわち、２ｎであるトランザクションサイズを使用して動作する。その結果として、２個、４個および８個のデータ要素転送はメモリサブシステムのトランザクションに共通である。
【００３２】
次に、メモリサブシステムのトランザクションメモリ領域は、一般に、トランザクションサイズに応じて整列された領域である。したがって、４個の要素のトランザクションは、図３ａに示されるように、先頭の要素が４要素の境界に揃えられた領域を参照し、ここで、
Ａｎ  ＭＯＤ  （要素サイズ）＝０
である。メモリサブシステム内のキャッシュラインを整列させることにより、メモリサブシステムからのこれらのキャッシュラインの読み出しが容易になる。図３ａのキャッシュラインは、それぞれが、４個の要素を有し、すなわち、
Ａｎ  ＭＯＤ  ４＝０
であるとしても、８個の要素のキャッシュラインもまた容易にサポートされる。８個の要素からなるキャッシュラインを有するメモリは図３ｂに示されている。
【００３３】
図３ｂによれば、５本の順次キャッシュライン３１１〜３１５を記憶したメモリサブシステムのメモリページ１０６ａが示されている。これらのキャッシュラインのそれぞれは、８個のデータ要素３１１ａ〜３１１ｈから３１５ａ〜３１５ｈまでをそれぞれに有する。５×８個のデータ要素が開始アドレス０ｘ００から０ｘ２０に位置する。データ要素のアドレスがＡｎによって一般的に表現されるならば、ｎ番目の要素の次に続くラインは、
Ａｎ＋１＝Ａｎ＋（８×要素サイズ）
を使用して見つけられる。
【００３４】
さらに、殆どのメモリサブシステムのプロトコルは、トランザクション内で線形アドレスのラップアラウンドをサポートする。したがって、キャッシュラインが４要素の境界による整列以外の整列を使用してアクセスされるならば、４個のデータ要素が依然として転送されるが、アドレス昇順の順次データ要素の形ではない。たとえば、要素３０１ｂに対しキャッシュミスが発生した場合、プリフェッチトランザクションが要素３０１ｂに対するアドレスで始まり、これにより、メモリサブシステムから３０１ｂ、３０１ｃ、３０１ｄ、３０１ａの順序でデータ要素を転送する。４個の要素が転送されるのは、これが本実施例で使用されるキャッシュラインサイズであり、メモリサブシステムは４要素のラインで整列されているからである。キャッシュミスの原因となり、アドレス０ｘ００におけるキャッシュライン内にある要素、すなわち、要素３０１ｂがメモリサブシステムからプロセッサへ供給されると直ちに、プロセッサはアンストールオペレーションを開始する。勿論、将来の使用のためプロセッサのリフィル（ｒｅｆｉｌｌ）ユニットを解放するために、４要素のキャッシュラインの全体がメモリサブシステムから転送される。
【００３５】
図３ａと図３ｂのメモリサブシステムアーキテクチャ間の差は単なる設計の選択の範囲の問題であることは明白であるが、プロセッサの異なる動作モードのそれぞれで、両方のアーキテクチャをサポートすることはシステム全体の性能の向上をもたらす。図４のメモリの概要図を参照して次に説明する。
【００３６】
図４には、４個のデータ要素の形で整列されたメモリアーキテクチャが表され、太線は８個のデータ要素の形で整列されたデータ要素を分離する。キャッシュヒットの状況が発生した時、キャッシュは従来技術のキャッシュと類似した形式で動作させられ、プロセッサは第１のモード２９０で動作するので、キャッシュラインが単一のメモリアクセスオペレーション内で転送される。キャッシュミスが発生した時、プロセッサは第２のモード２９１で動作するので、２本のキャッシュラインが単一のメモリアクセスオペレーション内で転送される。好ましくは、２本のキャッシュラインは８要素で整列させられる。かくして、キャッシュミスがデータ要素４０１ａに対して発生した時、キャッシュライン４０１が取り出される。しかし、キャッシュミスが要素４０２ｅに対して発生した時、単一のキャッシュラインが最初のキャッシュミスデータ転送オペレーションで転送され、その後、キャッシュミス状況が持続するならば、２本のキャッシュライン４０１が取り出される。或いは、２本のキャッシュライン４０２が取り出されるが、これは殆ど可能性のない利益のためにバス利用を増加させるのであまり有利ではない。
【００３７】
要素４０３ａに対してキャッシュミスが発生した時、２本のキャッシュライン４０３を転送することは、キャッシュミスを解決し、引き続くキャッシュミスの可能性を低下させるために十分なデータがキャッシュ内に記憶される可能性を高くする。この可能性が存在する理由は、データ要素４０３ａがそのキャッシュラインの終点付近にあるからである。
【００３８】
本発明の別の実施形態は、再度図４のメモリ概要図を参照して開示される。キャッシュミス中に、それぞれが４個のデータ要素を有する２本のキャッシュライン４０２の形で複数のキャッシュラインをプリフェッチするプリフェッチトランザクションが実行されるのは、以下の二つの条件が充たされる時であり、その条件は、キャッシュラインにキャッシュミスを生じさせた要素が当該キャッシュラインの先頭の要素４０２ａであること、および、キャッシュラインにキャッシュミスを生じさせた要素４０２ａが４個のデータ要素による境界と８個のデータ要素による境界の両方に揃えられていることである。
【００３９】
上記の二つの条件が充たされる時、２倍のサイズのプリフェッチトランザクションが実行され、これにより、第２の動作モードを使用して８個のデータ要素４０２を転送する。これは、キャッシュミスを生じさせた先頭の要素４０２ａがプロセッサへ供給されると直ちに、プロセッサがストールされずに動作することを可能にさせる点で有利である。さらに、最初のキャッシュラインのすべてのデータ要素は、次のライン、すなわち、プリフェッチされるラインのデータ要素がプロセッサに与えられるよりも前に、プロセッサによって受け取られる。したがって、これは、８要素のトランザクションの最初の４個の要素がプロセッサへ供給されると直ぐに、プロセッサのリフィルユニットが解放されることを可能にさせる。
【００４０】
キャッシュライン内の先頭のデータ要素以外のデータ要素がキャッシュミスを発生する時、線形アドレスのラップアラウンドのため、２本の順次キャッシュラインを転送することは本実施形態において防止される。したがって、次に続くキャッシュラインからの要素は、プロセッサが第１の動作モードで動作する時に転送されない。
【００４１】
有利的には、本実施形態によるプリフェッチ技術の性能は、命令キャッシュ参照が非常に規則正しい順次アクセスパターンを有する時に、効率的に動作する。ある種のキャッシュラインへの参照がメモリサブシステム内で行われる時、後続キャッシュラインは近い将来に参照される可能性が非常に高い。したがって、現在と後続の両方のキャッシュラインをプロセッサへ供給することにより、プリフェッチトランザクションに関連した一定レイテンシーの合計のみならず、プロセッサのストールサイクル数が減少する。
【００４２】
ストリーミングアクセスパターン／順次アクセスパターンのデータキャッシュ参照は、順次プリフェッチによる恩恵を受ける。これらのアクセスパターンは、一般に、その先頭の要素に関してキャッシュラインをミスする。有利的には、本発明の実施形態にしたがって現在のキャッシュラインおよび次に続くキャッシュラインをプリフェッチするプロセスは、ミスが発生したキャッシュライン内の先頭の要素が８個の要素の境界に揃えられている時に、ストリーミングアクセスパターン／順次アクセスパターンに役立つ。
【００４３】
勿論、ミスが発生したキャッシュライン内の先頭の要素が８個の要素の境界に揃えられた要素以外の要素である時、システムの「通常」のキャッシュプリフェッチオペレーションになるので、システム上でパフォーマンスヒットはない。
【００４４】
本発明は、１本のキャッシュラインサイズと２本のキャッシュラインサイズに関して説明されているが、その他の多重キャッシュラインサイズに適用することができる。好ましくは、多重キャッシュラインサイズは２のべき乗である。さらに好ましくは、キャッシュライン内のデータ要素の個数は２のべき乗個である。
【００４５】
多数のその他の実施形態が本発明の精神や範囲を逸脱することなく想定される。
【図面の簡単な説明】
【００４６】
【図１ａ】従来技術によるシステムオンチップアーキテクチャの説明図である。
【図１ｂ】従来技術によるマルチプロセッサ型システムオンチップ（ＳｏＣ）アーキテクチャの説明図である。
【図１ｃ】別の従来技術によるマルチプロセッサ型システムオンチップ（ＳｏＣ）アーキテクチャの説明図である。
【図２ａ】本発明と共に使用するシステムオンチップ（ＳｏＣ）アーキテクチャの説明図である。
【図２ｂ】マルチプロセッサ型システムオンチップ（ＳｏＣ）アーキテクチャの説明図である。
【図２ｃ】マルチプロセッサ型システムオンチップ（ＳｏＣ）アーキテクチャの別の実施形態の説明図である。
【図２ｄ】プロセッサの第１および第２の動作モードの説明図である。
【図３ａ】４個のデータ要素が記憶された５本の順次キャッシュラインを有するメモリサブシステムのメモリページの簡単化されたメモリ概略図である。
【図３ｂ】８個のデータ要素が記憶された５本の順次キャッシュラインを有するメモリサブシステムのメモリページの簡単化されたメモリ概略図である。
【図４】４個のデータ要素が並べられ、太線で８個のデータ要素が分離されたメモリアーキテクチャを有する簡単化されたメモリ概略図である。
【図１ａ】
2005536798.tif 000003
【図１ｂ】
2005536798.tif 000004
【図１ｃ】
2005536798.tif 000005
2005536798.tif 000006
2005536798.tif 000007
【図２ｄ】
2005536798.tif 000008
2005536798.tif 000009
【図４】
2005536798.tif 000010
【国際調査報告】
2005536798.tif 000011
2005536798.tif 000012