(57)【要約】  一実施形態の場合には、データ処理システム（１０）は、第１のマスタと、第１のマスタ（１２）が使用するために第１のマスタ（１２）と結合している記憶回路（３５）と、第１のプリフェッチ制限（６０）を記憶する第１の制御記憶回路（３８）と、プリフェッチ・バッファ（４２）と、第１の制御記憶回路、プリフェッチ・バッファ、および記憶回路と結合しているプリフェッチ回路（４０）とを含む。一実施形態の場合には、プリフェッチ回路（４０）は、第１のプリフェッチ制限が表示する値に最初に設定されたプリフェッチ・カウンタが期限切れになっているかどうかに基づいて、記憶回路からプリフェッチ・バッファ（４２）に、所定数のラインを選択的にプリフェッチする。一実施形態の場合には、それ故、第１のプリフェッチ制限を、プリフェッチ・バッファ内のミスの間に発生するプリフェッチの数を制御するために使用することができる。
2007500897.tif 000002
【特許請求の範囲】
【請求項１】
データ処理システムであって、
第１のマスタと、
前記第１のマスタが使用するための、前記第１のマスタと結合している記憶回路と、
第１のプリフェッチ制限を記憶する第１の制御記憶回路と、
プリフェッチ・バッファと、
前記第１の制御記憶回路、前記プリフェッチ・バッファ、および前記記憶回路と結合しているプリフェッチ回路であって、前記記憶回路から前記プリフェッチ・バッファ内に所定数のラインを選択的にプリフェッチし、前記第１のプリフェッチ制限が、前記プリフェッチ・バッファ内のミスの間に発生するプリフェッチの回数を制御する前記プリフェッチ回路と、
を備えるデータ処理システム。
【請求項２】
第１のプリフェッチ・カウンタをさらに備え、前記プリフェッチ回路が、前記第１のプリフェッチ・カウンタに基づいて、前記記憶回路から前記プリフェッチ・バッファ内に前記所定数のラインを選択的にプリフェッチする請求項１に記載のデータ処理システム。
【請求項３】
前記記憶回路が前記第２のマスタと結合して前記第２のマスタにより使用される、第２のマスタと、
前記第２のマスタに対応して、第２のプリフェッチ制限を記憶する第２の制御記憶回路と、
をさらに備える請求項１に記載のデータ処理システム。
【請求項４】
前記第１のプリフェッチ制限が、前記第１のマスタからの読出し要求に応じて、前記プリフェッチ・バッファ内のミスの間に発生する前記第１のマスタに対するプリフェッチの回数を制御し、
前記第２のプリフェッチ制限が、前記第２のマスタからの読出し要求に応じて、前記プリフェッチ・バッファ内のミスの間に発生する前記第２のマスタに対するプリフェッチの回数を制御する、請求項３に記載のデータ処理システム。
【請求項５】
前記プリフェッチ回路が、前記プリフェッチ・バッファ内のヒットまたはミスのうちの少なくとも１つに応じて、前記所定数のラインを選択的にプリフェッチする請求項１に記載のデータ処理システム。
【請求項６】
データ処理システムでプリフェッチを行うための方法であって、
マスタからアクセス記憶回路へ複数のアクセス要求を受信するステップと、
前記複数のアクセス要求の少なくとも一部からのプリフェッチ・バッファ内のミスの間に行ったプリフェッチの回数を制限するために、プリフェッチ制限を使用するステップと、
を含む方法。
【請求項７】
プリフェッチの回数を制限するために前記プリフェッチ制限を使用するステップが、
前記プリフェッチ制限にいつ達したのかを判定するために、前記プリフェッチ・バッファ内のミスの後でプリフェッチをカウントするステップを含む請求項６に記載の方法。
【請求項８】
各プリフェッチが、前記記憶回路から１つのラインをプリフェッチする請求項７に記載の方法。
【請求項９】
データ処理システムでプリフェッチを行うための方法であって、
マスタからアクセス記憶回路への読出し要求を受信するステップと、
前記読出し要求が、プリフェッチ・バッファ内のヒットまたはミスになるかどうかを判定するステップと、
前記読出し要求がヒットになった場合に、少なくとも一部は第１の値に達しているプリフェッチ・カウンタに基づいて、前記記憶回路から前記プリフェッチ・バッファ内に所定数のラインのプリフェッチを選択的に行うステップと、
前記読出し要求がミスになった場合に、前記読出し要求に応じて要求フェッチを行い、前記プリフェッチ・カウンタを第２の値に設定するステップと、
を含む方法。
【請求項１０】
前記所定数のラインを選択的にプリフェッチするステップが、さらに、前記所定数のラインが、前記プリフェッチ・バッファ内にすでに存在するか否かに基づく請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムに関し、特にデータ処理システムにおける先取り制御に関する。
【背景技術】
【０００２】
プリフェッチは、通常、データ処理システム内の情報にアクセスするために使用される。その情報に対する要求が行われる前に情報を先取り（プリフェッチ）することにより、バス・マスタが要求した情報にアクセスすることによる待ち時間を短縮することができる。しかし、通常のプリフェッチ法の場合には、バス・マスタは、プリフェッチした情報の多くへのアクセスを要求しないから、多数のプリフェッチが無駄になる。一般的なプリフェッチ法のもう１つの欠点は、このようなシステムが提供するプリフェッチ制限制御が固定のポリシーに基づいているために、柔軟性に乏しく、制御がうまくいかないことである。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
それ故、無駄になるプリフェッチの回数を低減し、それにより電力消費量を低減し、データ・プロセッサの性能を最適化するプリフェッチ方法が必要になる。
【課題を解決するための手段】
【０００４】
以下に本発明について説明するが、この説明は例示としてのものであり、また添付の図面により制限されない。図面中、類似の参照番号は類似の要素を示す。
当業者であれば、図面中の要素は、分かりやすくはっきりと示すためのものであって、必ずしも正確に縮尺したものでないことを理解するだろう。例えば、本発明の実施形態の理解を助けるために、図面中の要素のうちのあるものの寸法は他の要素より誇張してある。
【０００５】
本明細書で使用する場合、「バス」という用語は、データ、アドレス、制御または状態のような１つまたは複数の種々のタイプの情報を転送するために使用する複数の信号または導体を意味する。本明細書で使用する場合、導体という用語は、図面の中または説明の中において、１本の導体、複数本の導体、一方向性導体、または二方向性導体を意味する。しかし、異なる実施形態の場合には、別の方法により導体を実施することができる。例えば、別々の一方向性導体を二方向性導体の代わりに使用することができるし、その逆も行うことができる。また、複数の導体の代わりに、複数の信号を直列にまたは時分割多重により転送する１本の導体を使用することができる。同様に、複数の信号を運ぶ１本の導体を、これらの信号のサブセットを運ぶ種々の何本かの導体に分割することもできる。それ故、信号を転送するための多くの別法が存在する。
【０００６】
本発明の一実施形態は、プリフェッチが無駄になるのを防止するための順次プリフェッチ動作の回数の動的制御に関する。例えば、バッファ・ミスの後で行う順次プリフェッチの回数を制限することにより、メモリ制御ユニットの性能および電力消費を最適化することができる。一実施形態の場合には、順次プリフェッチの回数の制限は、一組のプリフェッチ・バッファ、制御レジスタ、およびプリフェッチ・カウンタにより行われる。これらすべてについては以下にさらに詳細に説明する。他の実施形態の場合には、バッファ・ミスの間の順次プリフェッチ動作の回数を動的に制御することができ、要求しているマスタの特性に基づいてユーザが予めプログラミングすることができるソフトウェア・プログラマブル制御法を使用している。例えば、中央処理装置（ＣＰＵ）においては、順次実行を
中止させる流れ命令の変更または例外に達するまで、命令は、通常、順次に実行される。順次に実行される命令の数は、ＣＰＵにより異なり、実行中のアプリケーション・プログラムのタイプの関数である。ある種のアプリケーションは、拡張した順次実行を示し、一方、他のアプリケーションは、流れイベントの頻繁な変更によるもっと不規則な行動をする。それ故、アプリケーションにより、プリフェッチの所望の数を変更することができる。他の実施形態の場合には、転送の終わりに達するか、チャネル切り替えが行われるまで、転送が順次に行われるＤＭＡマスタを使用している。この例の場合には、長いシーケンスが予想され、ＤＭＡマスタに対応するプリフェッチ制限をそれに従って調整することができる。データ処理システムでプリフェッチの回数を選択的に制御することにより、余分な電力を消費する無駄なプリフェッチおよびそれによる性能の低下を防止することができる。
【０００７】
本発明の一実施形態は、マスタ、マスタと結合している記憶回路、プリフェッチ制限を記憶する制御記憶回路、プリフェッチ・バッファ、および制御記憶回路、プリフェッチ・バッファ、および記憶回路と結合しているプリフェッチ回路を含むデータ処理システムに関する。一実施形態の場合には、プリフェッチ回路は、記憶回路からプリフェッチ・バッファ内へ所定数のラインを選択的にプリフェッチする。この場合、プリフェッチ制限は、プリフェッチ・バッファ内のミスの間に発生するプリフェッチの回数を制御する。
【０００８】
本発明の他の実施形態は、データ処理システムでプリフェッチを行うための方法に関する。マスタからのアクセス記憶回路への複数のアクセス要求が受信され、複数のアクセス要求の少なくとも一部からのプリフェッチ・バッファ内のミス間で行ったプリフェッチの回数を制限するためにプリフェッチ制限が使用される。本発明の一実施形態の場合には、プリフェッチ制御回路は、プリフェッチ制限を記憶するために使用される。
【０００９】
本発明のさらに他の実施形態は、マスタからアクセス記憶回路への読出し要求が受信され、読出し要求がプリフェッチ・バッファ内でヒットになるかまたはミスになるかを判断する、データ処理システムでプリフェッチを行うための方法に関する。一実施形態の場合には、読出し要求がヒットになった場合、少なくとも一部は、第１の値に達しているプリフェッチ・カウンタに基づいて、記憶回路からプリフェッチ・バッファ内へ、所定数のラインのプリフェッチが選択的に行われる。一実施形態の場合には、読出し要求がミスになった場合、読出し要求に応じて要求取出し（フェッチ）が行われ、プリフェッチ・カウンタが第２の値に設定される。
【発明を実施するための最良の形態】
【００１０】
図１は、データ処理システム１０の一実施形態である。データ処理システム１０は、マスタ１２（相互接続マスタ１２とも呼ばれる）、マスタ１４（相互接続マスタ１４とも呼ばれる）、メモリ・アレイ・コントローラ３６、システム相互接続２２、入出力回路１６、周辺装置１８、他のスレーブ２０、およびメモリ・アレイ３５を含む。マスタ１２は、導体４８を介してシステム相互接続２２に二方向で結合していて、マスタ１４は、導体５０を介してシステム相互接続２２に二方向で結合していて、入出力回路は、導体５２を介してシステム相互接続２２に二方向で結合していて、周辺装置１８は、導体５４を介してシステム相互接続２２に二方向で結合していて、他のスレーブ２０は、導体５６を介してシステム相互接続２２に二方向で結合していて、メモリ・アレイ・コントローラ３６は、導体２４を介してシステム相互接続２２に二方向で結合している。導体２４は、マスタ識別子２６、アドレス／データ２７、Ｒ／Ｗ信号２８、バースト信号３０、命令／データ信号３２、および他の信号３４と通信するための導体を含む。メモリ・アレイ・コントローラ３６は、制御レジスタ３８、要求モニタ４３、プリフェッチ回路４０、プリフェッチ・カウンタ４１、およびバッファ４２（プリフェッチ・バッファとも呼ばれる）を含み、導体３３を介してメモリ・アレイ３５に二方向で結合している。制御レジスタ３８は、要求
モニタ４３およびプリフェッチ回路４０と結合していて、プリフェッチ回路４０は、バッファ４２およびプリフェッチ・カウンタ４１と結合している。バッファ４２は、バッファ４４およびバッファ４６を含む。
【００１１】
図１には周辺装置１８は１つしか示していないが、データ処理システム１０は、システム相互接続２２と結合している任意の数の周辺装置を含むことができる。同様に、任意の数のマスタおよびスレーブをシステム相互接続２２に結合することができ、図１に示すこれらのものに限定されない。また、一実施形態の場合には、すべてのデータ処理システム１０を１つの集積回路上または同じデバイス内に位置させることができることに留意されたい。別の方法としては、データ処理システム１０は、相互に接続している任意の数の別々の集積回路、または別々のデバイスを含むことができる。例えば、一実施形態の場合には、メモリおよびメモリ・コントローラ（例えば、メモリ・アレイ３５およびメモリ・アレイ・コントローラ３６）を、データ処理システム１０の他の部分から独立している１つまたは複数の集積回路上に位置させることができる。
【００１２】
一実施形態の場合には、バス・マスタ１２およびバス・マスタ１４は、マイクロプロセッサ、デジタル信号プロセッサ等のような命令を実行することができるプロセッサであってもよいし、ダイレクト・メモリ・アクセス（ＤＭＡ）回路またはデバッグ回路のような他のタイプの相互接続マスタであってもよい。周辺装置１８は、汎用非同期受信送信機（ＵＡＲＴ）、リアルタイムクロック（ＲＴＣ）、キーボード・コントローラ等のような任意のタイプの周辺装置であってもよい。他のスレーブ２０は、例えば、マスタ１２および１４がアクセスすることができるメモリのような任意のタイプの相互接続スレーブ、および同じタイプの周辺装置を周辺装置１８として含むシステム・バス上に常駐する任意のタイプの周辺装置を含むことができることに留意されたい。入出力回路１６は、データ処理システム１０の外部で情報を受信または提供する任意のタイプの入出力回路を含むことができる。
【００１３】
図の実施形態の場合には、メモリ・アレイ・コントローラ３６およびメモリ・アレイ３５は、システム相互接続２２と結合している他のスレーブに対応する。他の実施形態の場合には、メモリ・アレイ３５は、任意の数のアレイを含むことができることに留意されたい。また他の実施形態の場合には、メモリ・アレイ３５は記憶回路３５と呼ばれることがあることにも留意されたい。メモリ・アレイ３５は、マスタ１２および１４として同じ集積回路上に位置することもできるし、別々の集積回路上に位置することもできる。さらに、メモリ・アレイ３５は、例えば、読出し専用メモリ（ＲＯＭ）、ランダム・アクセス・メモリ（ＲＡＭ）、不揮発性メモリ（例えば、フラッシュ）等のような任意のタイプのメモリであってもよい。また、メモリ・アレイ３５は、他の周辺装置またはスレーブ内に位置するメモリまたは他の記憶装置であってもよい。
【００１４】
システム相互接続２２は、マスタ１２、マスタ１４、入出力回路１６、周辺装置１８、他のスレーブ２０、およびメモリ・アレイ・コントローラ３６を相互に接続する。一実施形態の場合には、図１に示すように、システム相互接続２２は、システム・バス・プロトコルにより動作するシステム・バスとして実施される。別の方法としては、システム相互接続２２は、例えば、種々のデバイス間で情報を経路選択するスイッチング回路のような相互接続回路により実施することができる。
【００１５】
動作中、マスタ１２および１４は、メモリ・アレイ・コントローラ３６を介して、他のスレーブ２０へ、周辺装置１８へ、またはメモリ・アレイ３５へのアクセスを要求するために、システム相互接続２２へのアクセスを要求する。要求しているマスタは、システム相互接続２２を介して、メモリ・アレイ・コントローラ３６にアクセス要求を供給することができる。アクセス要求は、例えば、データまたは命令に対する読出し要求または書込
み要求であってもよい。メモリ・アレイ・コントローラ３６は、読出しアクセス要求に応じて、要求された情報（データまたは命令）をシステム相互接続２２を介して要求しているマスタに提供する。要求しているマスタからの読出しアクセス要求は、要求フェッチと呼ぶこともできることに留意されたい。
【００１６】
一実施形態の場合には、アクセス要求の場合、マスタ識別子２６は、どのマスタが現在のアクセスを要求しているのかを識別するメモリ・アレイ・コントローラ３６に送られる。Ｒ／Ｗ信号２８も、現在のアクセス要求が読出しタイプのアクセスなのか、または書込みタイプのアクセスなのかを示すために、メモリ・アレイ・コントローラ３６に送られる。バースト信号３０は、現在のアクセス要求が、バースト・タイプのアクセスなのか、非バースト・タイプのアクセスなのかを表示するために、メモリ・アレイ・コントローラ３６に送られる。命令／データ信号３２は、現在のアクセス要求が命令のためのものなのか、データのためのものなのかを表示するために、メモリ・アレイ・コントローラ３６に送られる。メモリ・アレイ・コントローラ３６は、また、現在のアクセス要求に対応するアドレス情報を受信し、アドレス／データ２７を介して要求された情報を提供する。メモリ・アレイ・コントローラ３６へおよびから通信するために必要な任意の他の信号は、他の信号３４により供給される。他の実施形態の場合には、マスタ識別子２６、Ｒ／Ｗ信号２８、バースト信号３０、命令／データ信号３２、および他の信号３４のうちのいくつかまたは全部は存在しなくてもよい。
【００１７】
一実施形態の場合には、プリフェッチ回路４０は、メモリ・アレイ３５からバッファ４４およびバッファ４６のようなバッファ４２内に情報をプリフェッチすることができる。それ故、要求しているマスタからの読出しアクセス要求に応じて、メモリ・アレイ・コントローラ３６は、バッファ４２と比較した場合、一般に、アクセス時間が長いメモリ・アレイ３５から情報を取り出さなくても、バッファ４２から要求された情報を提供することができる（情報がすでにプリフェッチされている場合）。一実施形態の場合には、プリフェッチ回路は、バッファ４４および４６それぞれに対応する、タグ部分（図示せず）、および現在のアクセス要求で要求されている情報が、バッファ４４および４６のうちの一方内にすでに位置しているのかどうかを判断するための比較回路（図示せず）を含む。例えば、プリフェッチ回路は、情報がすでにプリフェッチ済みであるかどうかを判断するために、アドレス／データ２７を介しての現在のアクセス要求に対応する外からのアドレスをタグ部分と比較することができる。情報がプリフェッチされていない場合には、メモリ・アレイ・コントローラ３６は、メモリ・アレイ３５から要求された情報を提供することができる。
【００１８】
図の実施形態の場合には、２つのバッファ（バッファ４４およびバッファ４６）しか図示していない。しかし、他の実施形態の場合には、バッファ４２は、任意の数（１つまたは複数）のバッファを含むことができる。一実施形態の場合には、プリフェッチ回路は、要求しているマスタにバッファ４４および４６の一方から情報を提供しながら、メモリ・アレイ３５からバッファ４４および４６の他方に情報をプリフェッチすることができる。すなわち、２つ以上のバッファを使用すれば、メモリ・アレイ３５へのプリフェッチの少なくとも一部を、要求しているマスタからのアクセス要求を提供するのと同時に行うことができる。
【００１９】
バッファ４２から情報を提供すると、要求しているマスタからのアクセス要求に応答するためのメモリ・アレイ３５へのアクセスと比較すると、アクセス回数が少なくなるので、以降に要求される情報をメモリ・アレイ３５からバッファ４２内にプリフェッチすることが望ましい。しかし、プリフェッチは、プリフェッチした情報がマスタにより実際に要求されるかどうかはっきりしないので見込的なものであることに留意されたい。例えば、プリフェッチした情報が後に要求されなかった場合には、プリフェッチは、余分な電力を
消費し、性能を低下させる無駄なプリフェッチになる。それ故、本発明の一実施形態の場合には、（マスタ１２および１４のような）各マスタに対するバッファ４２内のミスの間のプリフェッチの回数を制限することにより、プリフェッチ・カウンタ４１および制御レジスタ３８を使用して、バッファ４２内への見込的なデータのプリフェッチを制御する。例えば、一実施形態の場合には、各マスタに対するプリフェッチの数が、要求しているマスタの特性に基づくように、各マスタに対するプリフェッチ制限を記憶するために制御レジスタを使用する。他の実施形態の場合には、以下にさらにもっと詳細に説明するように、各プリフェッチ中にプリフェッチするラインの数を決定するためにも制御レジスタを使用することができる。
【００２０】
図２は、各マスタに対するプリフェッチ制限フィールドを含む制御レジスタ３８の一実施形態である。例えば、図２に示すように、制御レジスタ３８は、マスタ１２プリフェッチ制限フィールド６０、およびマスタ１４プリフェッチ制限フィールド６２を含む。他の実施形態の場合には、制御レジスタ３８は、所望のプリフェッチ制限を記憶するために、必要に応じて、もっと多くのまたはもっと少ないフィールドを含むことができる。また、制御レジスタ３８は、システム相互接続２２と結合しているマスタ１２またはマスタ１４のようなマスタからの命令により、プログラミングすることができることに留意されたい。例えば、ユーザは、プリフェッチ制限フィールドの値を提供することもできるし、または設計の段階でプログラミングすることもできる。
【００２１】
一実施形態の場合には、プリフェッチ回路４０は、プリフェッチ制限を動的に更新するためにそのプロファイルを使用することができるマスタ１２またはマスタ１４のような１つまたは複数のマスタからアクセス要求をプロファイルする要求モニタ４３に二方向で結合している。例えば、要求モニタ４３は、連続しているバッファ・ミスの間にバッファ４２に行ったアクセスの数を監視することもできるし、それに従って制限を更新または設定することもできる。他の実施形態の場合には、要求モニタ４３を、データ処理システム１０から除外することができ、プリフェッチ制限を、例えば、ユーザがプログラミングすることができるようにすることもできるし、またはハードウェアに組み込むことができる。
【００２２】
図３は、各マスタに対応するプリフェッチ・カウンタを含むプリフェッチ・カウンタ４１の一実施形態である。例えば、一実施形態の場合には、プリフェッチ・カウンタ４１は、マスタ１２に対応するプリフェッチ・カウンタ６４、およびマスタ１４に対応するプリフェッチ・カウンタ６６を含む。他の実施形態の場合には、データ処理システム１０は、マスタ１２または１４のような１つまたは複数のマスタにより共有されるメモリ・アレイ・コントローラ（例えば、メモリ・アレイ・コントローラ３６）毎に１つのプリフェッチ・カウンタを含むことができる。別の方法としては、プリフェッチ・カウンタ４１を、カウンタ、またはカウンタと同じような動作をする任意の他のデバイス（ソフトウェアまたはハードウェア）と呼ぶこともできる。
【００２３】
図４は、図２の制御レジスタ３８のフィールド定義の一実施形態を示す。例えば、一実施形態の場合には、各フィールド６０および６２は、３ビット・フィールドで、各フィールドは、８つの値（０００、００１、０１０、０１１、１００、１０１、１１０および１１１）を有することができる。図４に示すフィールド記述の一実施形態の場合には、プリフェッチ回路が使用するプリフェッチ・アルゴリズムを制御するために、プリフェッチ制限フィールド６０および６２を使用する。例えば、プリフェッチ制限フィールド６０および６２は、対応する各マスタに対するバッファ・ミスの間に行われる順次プリフェッチの最大数に関する制限を定義する。プリフェッチ制限フィールド６０および６２は、また、毎回プリフェッチするラインの数を定義するためにも使用することができる。
【００２４】
例えば、図の実施形態の場合には、０００の値は、バッファ４２内でミスとなる対応す
るマスタからのアクセス要求の間にプリフェッチが行われなかったことを示す。すなわち、マスタ１２のプリフェッチ制限フィールド６０が０００に設定されている場合には、マスタ１２からのアクセス要求によるバッファ４２内のミスの間にプリフェッチは行われない。同様に、マスタ１４のプリフェッチ制限フィールド６２が０００に設定されている場合には、マスタ１４からのアクセス要求によるバッファ４２内のミスの間にプリフェッチは行われない。プリフェッチ制限フィールド６０および６２の値が００１である場合には、バッファ・ミスの際に１つの追加ライン（メモリ・アレイ３５内の次のシーケンシャル・ライン）がプリフェッチされたことを示す。プリフェッチ制限フィールド６０および６２の値が０１０である場合には、プリフェッチをストップする前に、各バッファ・ミスの後に最大２つの追加ラインをプリフェッチすることができることを示す。この場合、バッファ・ミスの際に１つの追加ライン（メモリ・アレイ３５内の次のシーケンシャル・ライン）がプリフェッチされ、バッファ・ヒットの際に次の追加のシーケンシャル・ラインがプリフェッチされる（まだ存在していない場合）。
【００２５】
依然として図４の実施形態を参照すると、プリフェッチ制限フィールド６０および６２の値が０１１である場合には、プリフェッチをストップする前に、各バッファ・ミスの後で最大３つの追加ラインをプリフェッチすることができることを示す。すなわち、例えば、最初のミスの後で、単一プリフェッチをスタートすることができ、以降の各バッファ・ヒットの後で単一の追加プリフェッチをスタートすることができる（全部で３回の単一プリフェッチまで）。プリフェッチ制限フィールド６０および６２の値が１００である場合には、プリフェッチをストップする前に、各バッファ・ミスの後で、最大４つの追加ラインをプリフェッチすることができることを示す。すなわち、例えば、最初のミスの後で、単一プリフェッチをスタートすることができ、以降の各バッファ・ヒットの後で、単一の追加プリフェッチをスタートすることができる（全部で４回の単一プリフェッチまで）。プリフェッチ制限フィールド６０および６２の値が１０１である場合には、プリフェッチをストップする前に、各バッファ・ミスの後で、最大５つの追加ラインをプリフェッチすることができることを示す。すなわち、例えば、最初のミスの後で、単一プリフェッチをスタートすることができ、以降の各バッファ・ヒットの後で単一の追加プリフェッチをスタートすることができる（全部で５回の単一プリフェッチまで）。
【００２６】
依然として図４の実施形態を参照すると、プリフェッチ制限フィールド６０および６２の値が１１０である場合には、各バッファ・ミスの後で、無制限の数の追加ラインをプリフェッチすることができることを示す。すなわち、例えば、各バッファ・ヒットまたはミスの後で、単一の追加プリフェッチをスタートすることができる。（この実施形態の場合には、１１１という値は予約されていて、プリフェッチ動作を設定するために使用されていないことに留意されたい。）他の実施形態の場合には、制御レジスタ３８は、必要に応じて、もっと多くのまたはもっと少ないビットを使用して、各マスタに対するもっと多くのまたはもっと少ないフィールドを含むことができることに留意されたい。また、プリフェッチ制限フィールド６０および６２の他の定義は、必要に応じて、プリフェッチ回路４０を制御するために適用することができる。プリフェッチ制限フィールドの使用および定義については、図５を参照しながらさらに説明する。
【００２７】
図５は、本発明の一実施形態によるデータ処理システム１０の動作のフローチャートである。流れ７０は、スタート７２からスタートして、ブロック７４へ進み、そこでマスタ１２またはマスタ１４のようなマスタからのアクセス要求を受信する。このアクセス要求は、読出し要求、書込み要求、バースト要求、非バースト要求、データに対する要求、命令に対する要求等のような多くの異なるタイプのアクセス要求であってもよい。しかし、説明を分かりやすくするために、アクセス要求は読出し要求であると仮定する。
【００２８】
次に、流れは、ブロック７６に進み、そこで要求しているマスタの識別が、例えば、図
１のマスタ識別子２６が供給したマスタ識別子により決定される。それ故、異なるマスタは、異なるマスタ識別子を有することができる。例えば、マスタ１２は、０という識別子を有することができ、マスタ１４は１という識別子を有することができる。それ故、各マスタに一意の識別子を割当てることができる。他の実施形態の場合には、いくつかのマスタは、同じ識別子を共有することができる。また、他の実施形態の場合には、どのマスタがアクセスを要求しているのかを、マスタ識別子２６のような信号を供給する方法以外の異なる方法で決定することができることに留意されたい。一実施形態の場合には、正しいプリフェッチ・カウンタおよび対応するプリフェッチ制限を、複数のプリフェッチ・カウンタおよび制限からマスタ識別子の識別に基づいて選択することができる。
【００２９】
図５を参照すると、流れは決定ダイヤモンド・ブロック７８に進み、そこでアクセス要求がヒットになったのかミスになったのかの判断が行われる。アクセス要求がミスになった場合には、流れはブロック８６に進み、そこで要求しているマスタに対応するプリフェッチ・カウンタ（プリフェッチ・カウンタ４１内のカウンタのうちの１つ）が、要求しているマスタに対応するプリフェッチ制限（例えば、制御レジスタ３８内のプリフェッチ制限フィールドのうちの１つが示す）に設定される。このプリフェッチ制限は、要求しているマスタのバッファ・ミスの間のプリフェッチの回数を制御するために使用される。次に、流れはブロック８８に進み、そこで現在のアクセス要求に応じて１つのライン要求取出し（フェッチ）が行われる。他の実施形態の場合には、要求フェッチ中に追加ラインをプリフェッチすることができることに留意されたい。
【００３０】
次に、流れは決定ダイヤモンド・ブロック９４へ進み、そこで要求しているマスタに対応するプリフェッチ制限が、「プリフェッチなし」と表示しているかどうかが決定される。（例えば、図４の実施形態の場合には、制御レジスタ３８内の対応するプリフェッチ制限フィールドの０００という値は、プリフェッチなしを示す。）「プリフェッチなし」と表示された場合には、流れはエンド楕円ブロック９０に進む。しかし、「プリフェッチなし」が表示されない場合には、流れはブロック８９に進み、そこで１つのライン・プリフェッチが行われ、１つのラインがまだプリフェッチ・バッファ内に存在していない場合には、要求しているマスタに対応するプリフェッチ・カウンタの値が低減する。他の実施形態の場合には、ブロック８９が存在していないこと、すなわち、ミスに応じてプリフェッチを行うことができないこと、それ故、対応するプリフェッチ・カウンタを更新できないことに留意されたい。
【００３１】
決定ダイヤモンド・ブロック７８での結果がヒットである場合には、流れは決定ダイヤモンド・ブロック９６に進み、そこで要求しているマスタに対応するプリフェッチ制限が「プリフェッチなし」を表示しているかどうかの判断が行われる。「プリフェッチなし」が表示されている場合には、流れはエンド楕円ブロック９０に進む。そうでない場合で、「プリフェッチなし」が表示されていない場合には、流れは決定ダイヤモンド・ブロック８０に進み、そこで要求しているマスタに対応するプリフェッチ・カウンタが期限切れになっているかどうかが判断される。プリフェッチ・カウンタが期限切れになっていない場合には、流れはブロック８２に進む。ブロック８２においては、１つのラインがプリフェッチされ、１つのラインがまだプリフェッチ・バッファ内に存在していない場合には、要求しているマスタに対応するプリフェッチ・カウンタの値が低減され、それ故、最後のミス以降に発生したプリフェッチの数が追跡される。次に、流れはエンド楕円ブロック９０に進む。
【００３２】
決定ブロック８０に戻って説明すると、プリフェッチ・カウンタが期限切れになっている場合には、流れはブロック８４に進み、そこでは追加のプリフェッチは行わない。それ故、他のヒットが発生した場合でも、対応するプリフェッチ・カウンタが、ブロック８６内のミスに応じてプリフェッチ制限に再度設定されるまでプリフェッチは行われない。そ
れ故、このようにして、プリフェッチ制限は、対応する要求しているマスタのバッファ・ミスの間のプリフェッチの数を制限するために使用される。次に、流れはエンド楕円ブロック９０に進む。
【００３３】
図５の実施形態の場合には、プリフェッチ・カウンタの値は、例えば１のような固定の値だけ低減して、（例えば、図５のブロック８２および８９に示すように）プリフェッチが行われたことを示す。プリフェッチ・カウンタの値がその下限値（この場合は、０）に達した場合には、プリフェッチ・カウンタは時間切れになったと見なされる。他の実施形態の場合には、（図５のブロック８６に示すように）プリフェッチ・カウンタの初期値は０に設定することができ、そのためプリフェッチ・カウンタの値は、例えば１のような固定値だけ増大することができ、（図５のブロック８２および８９に示すように）プリフェッチが行われたことを示す。この他の実施形態の場合には、カウンタの値が対応するプリフェッチ制限に達すると、プリフェッチ・カウンタは時間切れになったと見なされる。
【００３４】
また、図５の実施形態の場合には、図４のフィールドが定義しているように、（ブロック８２および８９に示すように）各プリフェッチ中、１つの追加ラインだけが取出される（フェッチされる）ことに留意されたい。しかし、他の実施形態の場合には、所定の数（１つまたは複数）のラインを、（図５のブロック８２および８９に示すように）各プリフェッチ中に取出すことができることに留意されたい。すなわち、ラインがプリフェッチ・バッファ内にまだ存在していない場合には、ヒット、ミスまたは両方の場合に、所定数のラインをプリフェッチすることができる。また、プリフェッチ数を追跡するために、対応するプリフェッチ・カウンタの値を、それに応じて低減（または増大）することができる。それ故、制御レジスタ３８内のプリフェッチ制限フィールド６０および６２のようなプリフェッチ制限フィールドを、１つの追加ラインだけではなしに、（対応するカウンタが時間切れになるまで）ミスまたはヒットまたは両方の後で、任意の所定数のラインのプリフェッチを定義するために使用することができることに留意されたい。
【００３５】
すでに説明したように、プリフェッチ・カウンタは、各マスタに対して使用することができるが、他の実施形態の場合には、１つのカウンタを複数のマスタが共有している。この実施形態の場合には、優先権スキームを使用することができ、その場合、例えば、ユーザは、どのマスタが１つのカウンタの制御を行うのかについて、優先権スキームをプログラミングすることができる。例えば、マスタ１４は、現在マスタ１２が使用しているカウンタの使用を要求することができ、マスタ１４がマスタ１２より高い優先権を有している場合には、マスタ１２はマスタ１４へのカウンタへの制御を譲渡することができる。このようにして、複数のマスタが１つのカウンタを共有することができる。別の方法としては、マスタをベースとしないで、要求しているマスタの識別が何であれ、連続しているミスの間のプリフェッチの数をプリフェッチ制限が制限することができるように、カウンタを共有することができる。この他の実施形態の場合には、要求しているマスタの識別が何であれ、ミスが発生する度に（図５のブロック８６に示すように）共有カウンタを設定することができる。同様に、要求しているマスタの識別が何であれ、図５の決定ダイヤモンド・ブロック８０およびブロック８２および８９はこの共有カウンタ上で動作する。また、さらに他の実施形態の場合には、複数のマスタが制御レジスタ３８内のプリフェッチ制限を共有することができることに留意されたい。
【００３６】
データ処理システムで異なるタイプのマスタを使用している場合には、メモリ制御ユニットの性能を最適化する必要がある場合がある。異なるタイプのマスタは、種々の方法で命令およびデータを実行し、転送するので、マスタの異なるアクセス特性を考慮に入れ、ミスの間のプリフェッチの数を制限し、順次プリフェッチの動的制御を可能にするプリフェッチ制限スキームを理解することができるだろう。例えば、ＣＰＵ内の命令は、通常、流れの変化に達するまで順次に実行される。一方、ＤＭＡの場合には、転送が終了するま
でまたはチャネルが切り替えられるまで、大部分の転送は順次に行われる。それ故、ＣＰＵおよびＤＭＡのプリフェッチ制限フィールドは、例えば、ＤＭＡがＣＰＵと比較した場合、ミスの間のプリフェッチの数をもっと多くすることができるように異なる方法で設定することができる。それ故、プリフェッチ制限フィールドを、マスタ間の種々の違いを考慮に入れ、すでに説明したように、連続しているミスの間に発生するプリフェッチの数を制御するようにプログラミングすることができる。すなわち、プリフェッチ制限に達した後では、次のバッファ・ミスまでそれ以上プリフェッチは行われない。何故なら、順次プリフェッチが使用される可能性は、順次プリフェッチの回数が増大するにつれて低減するからである。また、無駄なプリフェッチをさらに低減するために、（プリフェッチ制限に達する前に）各ヒットまたはミスまたは両方に応じて、ラインプ・リフェッチの回数を制御するために、プリフェッチ制限フィールドをどのように使用することができるのかを理解することができるだろう。
【００３７】
今まで特定の実施形態を参照しながら本発明を説明してきた。しかし、通常の当業者であれば、添付の特許請求の範囲に記載する本発明の範囲から逸脱することなしに、種々の修正および変更を行うことができることを理解することができるだろう。それ故、本明細書および図面は例示としてのものであって、本発明を制限するものでないと見なすべきであり、そのようなすべての修正は、本発明の範囲内に含まれる。
【００３８】
特定の実施形態を参照しながら、本発明の利益、他の利点および問題の解決方法について説明してきた。しかし、何らかの利益、利点または解決方法をもたらしたり、より優れたものにすることができる上記利益、利点、問題の解決方法、および任意の要素は、任意のまたはすべての請求項の重要な、必要なまたは本質的な機能または要素であると解釈すべきではない。本明細書で使用する場合、ある（「ａ」または「ａｎ」）という用語は、１つまたは複数と定義される。本明細書で使用する場合、含む（ｉｎｃｌｕｄｉｎｇ）および／または有する（ｈａｖｉｎｇ）という用語は、備える（すなわち、オープン言語）と定義される。本明細書で使用する場合、「備える」、「備えている」またはその任意の他の派生語は、要素のリストを備えるプロセス、方法、物品または装置が、これらの要素を含むばかりでなく、リストに明示されていないか、またはこのようなプロセス、方法、物品または装置固有の他の要素を含むことができるように、非排他的な内容を含むことができるようにするためのものである。
【図面の簡単な説明】
【００３９】
【図１】本発明の一実施形態によるデータ処理システムのブロック図。
【図２】本発明の一実施形態による図１のデータ処理システムの制御レジスタのブロック図。
【図３】本発明の一実施形態による図１のデータ処理システムのプリフェッチ・カウンタのブロック図。
【図４】本発明の一実施形態による図２の制御レジスタのフィールド記述の表。
【図５】本発明の一実施形態による図１のデータ処理システムの動作のフローチャート。
【図１】
2007500897.tif 000003
【図２】
2007500897.tif 000004
【図３】
2007500897.tif 000005
【図４】
2007500897.tif 000006
【図５】
2007500897.tif 000007
【国際調査報告】
2007500897.tif 000008