(57)【要約】      （修正有）【課題】キャッシュ内のストリーミング・データの管理システムと方法の提供。【解決手段】コンピュータ・システム１００は、プロセッサ１０２、キャッシュ１０４、システム・メモリ１１０を備える。プロセッサ１００は、ストリーミング・データに関するデータ要求を発する。ストリーミング・データは、１以上の小データ部分を有している。システム・メモリ１１０は、ストリーミング・データのストア用に特定のエリアを有している。キャッシュは、ストリーミング・データ用にロックされた、事前定義エリアを有し、キャッシュ・コントローラが接続され、プロセッサ１０６とシステム・メモリ１１０と通信を行い、ストリーミング・データの少なくとも１つの小データ部分がキャッシュの事前定義エリア内に見つからない場合に、その小データ部分をシステム・メモリ１１０の特定のエリアからキャッシュ１０４のあらかじめ定義済みのエリアへ転送する。【選択図】図１
2004246898.tif 000002
【特許請求の範囲】
【請求項１】
１以上の小データ部分を有するストリーミング・データに関するデータ要求を発するプロセッサ、
前記ストリーミング・データをストアするための特定のエリアを有し、前記プロセッサと通信するシステム・メモリ、
前記プロセッサに結合され、前記ストリーミング・データ用にロックされた事前定義エリアを有するキャッシュ、および、
前記キャッシュに結合され、前記プロセッサおよび前記システム・メモリの両方と通信して、前記１以上の小データ部分の少なくとも１つが前記キャッシュの前記事前定義エリア内に見つからないときに前記１以上の小データ部分の前記少なくとも１つを前記システム・メモリの前記特定のエリアから前記キャッシュの前記事前定義エリアへ転送するキャッシュ・コントローラ、
を備えるコンピュータ・システム。
【請求項２】
さらに、
前記システム・メモリに結合され、前記システム・メモリから各小データ部分を受け取るためのシステム・バス、ならびに、
前記キャッシュおよび前記システム・バスの両方に結合され、前記システム・バスから前記キャッシュへ各小データ部分を送るためのバス・コントローラ、
を備える請求項１に記載のコンピュータ・システム。
【請求項３】
前記事前定義エリアが、１以上のキャッシュ・セットを含み、各キャッシュ・セットは、複数のキャッシュ・ラインを含む、請求項１に記載のコンピュータ・システム。
【請求項４】
前記１以上の小データ部分の少なくとも１つが、さらに１以上のキャッシュ・ライン・データ部分に分割され、前記１以上のキャッシュ・ライン・データ部分は、前記メモリから前記キャッシュへ、連続的に送られる、請求項３に記載のコンピュータ・システム。
【請求項５】
前記事前定義エリアが、１以上のキャッシュ・セットを含み、各キャッシュ・セットは、複数のキャッシュ・ラインを含む、請求項２に記載のコンピュータ・システム。
【請求項６】
前記小データ部分の少なくとも１つが、さらに１以上のキャッシュ・ライン・データ部分に分割され、前記１以上のキャッシュ・ライン・データ部分は、前記メモリから前記キャッシュへ、連続的に送られる、請求項５に記載のコンピュータ・システム。
【請求項７】
さらに、前記キャッシュに結合されるキャッシュ・コントローラを備える、請求項２に記載のコンピュータ・システム。
【請求項８】
前記データ要求が、前記プロセッサから前記システム・メモリへ、前記キャッシュ・コントローラ、前記バス・コントローラ、および前記システム・バスを介して送られる、請求項７に記載のコンピュータ・システム。
【請求項９】
前記キャッシュ・コントローラが、
前記プロセッサが前記データ要求を発したときに前記キャッシュ内に前記ストリーミング・データがストアされているか否かについての決定を行うためのメモリ・アクセス・コントロール・ユニット、
ＬＲＵユニット、
前記事前定義エリアを決定するためのロック・コントロール・ユニット、および、
前記メモリ・アクセス・コントロール・ユニット、前記ＬＲＵユニット、およびロック・コントロール・ユニットに結合され、前記キャッシュの前記事前定義エリア内にのみ前記ストリーミング・データがストアされるべく前記キャッシュをコントロールする置換コントロール・ユニット、
を備える、請求項１に記載のコンピュータ・システム。
【請求項１０】
前記データは、前記キャッシュの前記事前定義エリア外にはストアされない、請求項１に記載のコンピュータ・システム。
【請求項１１】
前記事前定義エリアは、前記データ用にロックされている、請求項１に記載のコンピュータ・システム。
【請求項１２】
プロセッサおよびシステム・メモリを有するコンピュータ・システム内のキャッシュを使用してデータを効率的に処理するための方法であって、
データに関するデータ要求を発するステップ、
前記データ要求をプロセッサからシステム・メモリへ送るステップ、
前記データ要求に応答して、前記データを１以上の小データ部分に分割するステップ、
第１の小データ部分を前記システム・メモリから前記キャッシュへ送るステップ、
前記キャッシュの事前定義エリア内において前記第１の小データ部分を用いて前記キャッシュを更新するステップ、および、
前記キャッシュの前記事前定義エリア内において別の小データ部分を用いて前記キャッシュを更新する前に前記第１の小データ部分を前記キャッシュから前記プロセッサへ転送するステップ、
を含む方法。
【請求項１３】
さらに、すべての小データ部分を前記キャッシュへ送ったか否かを決定するステップを含む、請求項１２に記載の方法。
【請求項１４】
さらに、すべての小データ部分をまだ前記キャッシュへ送っていないとの決定に応答して、前記キャッシュの前記事前定義エリア内において別の小データ部分を用いて前記キャッシュを更新するステップを含む、請求項１３に記載の方法。
【請求項１５】
前記データがストリーミング・データを含む、請求項１２に記載の方法。
【請求項１６】
前記１以上の小データ部分の少なくとも１つが、さらに１以上のキャッシュ・ライン・データ部分に分割され、前記１以上のキャッシュ・ライン・データ部分は、前記メモリから前記キャッシュへ、連続的に送られるものとする、請求項１２に記載の方法。
【請求項１７】
さらに、前記キャッシュの前記事前定義エリアを前記データ用にロックするステップを含む、請求項１２に記載の方法。
【請求項１８】
プロセッサおよびシステム・メモリを有するコンピュータ・システム内のキャッシュを使用してデータを効率的に処理するためのコンピュータ・プログラムであって、
データに関するデータ要求を発するためのコンピュータ・プログラム・コード、
前記データ要求をプロセッサからシステム・メモリへ送るためのコンピュータ・プログラム・コード、
前記データ要求に応答して、前記データを１以上の小データ部分に分割するためのコンピュータ・プログラム・コード、
第１の小データ部分を前記システム・メモリから前記キャッシュへ送るためのコンピュータ・プログラム・コード、
前記キャッシュの事前定義エリア内において前記第１の小データ部分を用いて前記キャッシュを更新するためのコンピュータ・プログラム・コード、および、
前記キャッシュの前記事前定義エリア内において別の小データ部分を用いて前記キャッシュを更新する前に前記第１の小データ部分を前記キャッシュから前記プロセッサへ転送するためのコンピュータ・プログラム・コード、
を含む、コンピュータ・プログラム。
【請求項１９】
さらに、すべての小データ部分を前記キャッシュへ送ったか否かを決定するためのコンピュータ・プログラム・コードを含む、請求項１８に記載のコンピュータ・プログラム。
【請求項２０】
さらに、すべての小データ部分をまだ前記キャッシュへ送っていないとの決定に応答して、前記キャッシュの前記事前定義エリア内において別の小データ部分を用いて前記キャッシュを更新するためのコンピュータ・プログラム・コードを含む、請求項１９に記載のコンピュータ・プログラム。
【請求項２１】
前記データがストリーミング・データを含む、請求項１８に記載のコンピュータ・プログラム。
【請求項２２】
前記１以上の小データ部分の少なくとも１つが、さらに１以上のキャッシュ・ライン・データ部分に分割され、前記１以上のキャッシュ・ライン・データ部分は、前記メモリから前記キャッシュへ、連続的に送られる、請求項１８に記載のコンピュータ・プログラム。
【請求項２３】
前記コンピュータ・プログラムが、さらに、前記キャッシュの前記事前定義エリアを前記データ用にロックするためのコンピュータ・プログラム・コードを含む、請求項１８に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ管理に関し、特にロック機能を持ったキャッシュ・メモリを使用するストリーミング・データのより効率的な処理に関する。
【背景技術】
【０００２】
大規模構成のコンピュータ・システムにおいては、メモリ階層のレベルがいくつも存在し、最も低いレベルにシステム・メモリがあり、より高いレベルとしては、頻繁にアクセスされるデータをよりコンピューティング・エンジンに近いところで保持するキャッシュがある。
【０００３】
レベル１（Ｌ１）キャッシュは、通常、コンピュータ・システム内においてコンピューティング・エンジンによって共有されない。レベル２（Ｌ２）キャッシュは、通常、コンピュータ・システム内においてコンピューティング・エンジンによって共有される。一般に、キャッシュは、データをコンピューティング・エンジンの近くに維持し、キャッシュ内にストアされているデータは、はるかに良好な待ち時間で再使用されることになる。
【０００４】
ストリーミング・データ・アプリケーションについて言えば、大量のデータが、キャッシュを介してプルまたはプッシュされるが、その再使用は、あったところで非常にわずかである。従来技術においては、ＬＲＵアルゴリズムが使用されて、新しいデータによって置き換えられるべきキャッシュ内のデータが決定される。ストリーミング・データの場合には、この結果、キャッシュ内の再使用性の高いデータが、再使用性の低い大量のストリーミング・データによって置き換えられ、したがって頻繁に使用されるデータのアクセス待ち時間を短縮するというキャッシュの効果が最小限に抑えられてしまう。このストリーミング状況においては、キャッシュが事実上、ストリーミング・データによって「スラッシュ」され（頻繁に置き換えられ）、キャッシュの使用を非効率なものにしている。
【０００５】
この振る舞いを回避するための従来技術のアプローチは、ストリーミング・データをキャッシュ不可として再使用性の低いストリーミング・データによるキャッシュのスラッシングを防止している。しかしながらこれは、キャッシュのプリ‐フェッチおよび部分的アクセス・メカニズムがディセーブルされてしまうことからストリーミング・データのアクセスの待ち時間を著しく増加するという好ましくない副次効果を有している。データのキャッシュが禁止されている場合には、このデータのオンチップ・キャッシュ間転送も失われる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
したがって、より効率的な方法でキャッシュ内のストリーミング・データを管理するためのシステムおよび方法が求められている。
【課題を解決するための手段】
【０００７】
本発明は、コンピュータ・システム内のキャッシュを用いるデータの効率的な処理のためのシステムおよび方法を提供する。コンピュータ・システムは、プロセッサ、キャッシュ、およびシステム・メモリを備える。プロセッサは、ストリーミング・データに関するデータ要求を発する。ストリーミング・データは、１以上の小データ部分を有している。システム・メモリは、プロセッサと通信する。システム・メモリは、ストリーミング・データのストア用に特定のエリアを有している。キャッシュはプロセッサに結合されている。キャッシュは、ストリーミング・データ用にロックされた、事前定義エリアを有する。キャッシュにはキャッシュ・コントローラが接続されており、それがプロセッサおよびシステム・メモリの両方と通信を行って、ストリーミング・データの少なくとも１つの小データ部分がキャッシュの事前定義エリア内に見つからない場合にその小データ部分をシステム・メモリの特定のエリアからキャッシュの事前定義エリアへ転送する。
【発明を実施するための最良の形態】
【０００８】
以下の説明においては、本発明の完全な理解を提供するべく多数の具体的な詳細が示されている。しかしながら、当業者にとっては自明となろうが、これらの具体的な詳細を用いずに本発明を実施することもできる。一方、周知の要素については、不必要な詳細の中に本発明が埋もれることのないように略図またはブロック図の形式を用いて図示している。
【０００９】
さらにここで注意されたいが、特に示さない限り、ここに述べているすべての機能は、ハードウエアもしくはソフトウエア、またはそれらの何らかの組み合わせのいずれを用いても実行することができる。しかしながら好ましい実施態様においては、特に示さない限り、これらの機能が、コンピュータ・プログラム・コード、ソフトウエア等のコードに従って動作するコンピュータ、電子データ・プロセッサ等のプロセッサ、またはこれらの機能を実行するべくコードされた集積回路によって実行されるものとする。
【００１０】
図１を参照すると、キャッシュのロックを使用して効率的にストリーミング・データを処理するコンピュータ・システムが包括的に参照番号１００として示されている。コンピュータ・システム１００は、プロセッサ１０２、キャッシュ１０４、バス・コントローラ１０６、システム・バス１０８、およびシステム・メモリ１１０を備えている。
【００１１】
プロセッサ１０２は、キャッシュ１０４に結合されている。キャッシュ１０４は、バス・コントローラ１０６に結合されている。システム・バス１０８は、バス・コントローラ１０６に結合されている。システム・メモリ１１０は、システム・バス１０８に結合されている。
【００１２】
一般に、キャッシュ１０４は、複数のキャッシュ・セットを含んでいる。この例においては、８つのキャッシュ・セットＡ〜Ｈが示されており、そのうちキャッシュ・セットＥは、システム・メモリ１１０内の１以上のストリーミング・データ・エリア（図示せず）に拘束された選択キャッシュ・セットを表している。たとえば、キャッシュが５１２キロバイトである場合には、各キャッシュ・セットが６４キロバイトになる。この特定の例は、複数のキャッシュ・セットからストリーミング・データをストアするために１以上のキャッシュ・セットが選択されるという形で充分に一般化することができる。キャッシュ・セットＥは、複数のキャッシュ・ラインを含んでおり、それにはキャッシュ・ライン１１２、１１４、および１１６が含まれる。同様に、ほかのキャッシュ・セットもそれぞれ複数のキャッシュ・ラインを含んでいる（図示せず）。たとえば、各キャッシュ・ラインは１２８バイトである。さらにキャッシュには、キャッシュ・コントローラ１１１が備わる。
【００１３】
プロセッサ１０２は、データに関する要求を行う。好ましくは、このデータが、限定する意図ではないがビデオ／オーディオ・ストリーミング・データを含むストリーミング・データの形式を取るものとする。通常、ストリーミング・オペレーションの初期段階では、データがキャッシュ１０４内ではなく、システム・メモリ１１０内において見つかる。より詳しく言えば、プロセッサ１０２は、そのデータに関するデータ要求を発する。このデータ要求は、接続１１８を介してキャッシュ・コントローラ１１１へ送られる。すでにキャッシュ１０４内にそのデータが存在する場合には、そのデータがプロセッサ１０２へ返される。キャッシュ１０４内にそのデータが存在しない（たとえば、そのデータがシステム・メモリ１１０内にストアされている）場合には、キャッシュ・コントローラ１１１がそのデータ要求を、接続１２０を介してバス・コントローラへ転送する。この場合、キャッシュ・コントローラ１１１は、キャッシュ１０４のいずれのキャッシュ・セット（１以上）を使用して被要求データをストアすることになるかについての決定を行わなければならない。
【００１４】
好ましくはプロセッサ１０２には、いずれのキャッシュ・ラインがそのデータの一時的なストアのためにロックされているかについてわかっているものとする。ここに示した構成においては、たとえば、プロセッサ１０２には、この目的のためにキャッシュ・ライン１１２、１１４、および１１６がロックされていることがわかっている。キャッシュ１０４は、続いて３つの要求（図示せず）を連続的に、接続１２０を介してバス・コントローラ１０６へ送る。これら３つの要求は、３つのキャッシュ・ライン１１２、１１４、および１１６に関する要求である。一般に、Ｎを１以上の整数とするとき、データの一時的なストア用にＮ個のキャッシュ・ラインがロックされている場合には、キャッシュ１０４が、接続１２０を介してバス・コントローラ１０６へ、Ｎ個の要求を連続的に送る。その後これら３つの要求が、バス・コントローラ１０６から接続１２２を介してシステム・バス１０８へ、連続的な形で送られる。最終的に、これら３つの要求が、システム・バス１０８から接続１２４を介してシステム・メモリ１１０へ、連続的に送られる。
【００１５】
バス・コントローラ１０６は、接続１２２を介してシステム・バス１０８へデータ要求を送る。システム・バス１０８は、続いてそのデータ要求を、接続１２４を介してシステム・メモリ１１０へ送る。
【００１６】
このデータ要求に応答してシステム・メモリ１１０は、被要求データをキャッシュ１０４へ順次に転送する。しかしながら、システム・メモリ１１０は、被要求データの全体を一度に送らない。むしろ、一度にプロセッサ１０２へ送るデータは、被要求データの一部だけであり、キャッシュへ全体の被要求データが送られるまで、被要求データの一部を送り続ける。好ましくはシステム・メモリ１１０は、被要求データをより小さい、単一のキャッシュ・ラインのサイズに等しい複数のデータに分割した後、それぞれの、より小さいデータをその都度キャッシュ１０４に送る。キャッシュ１０４からシステム・メモリ１１０へ、要求が連続的に送られる場合には、システム・メモリ１１０は、それぞれの個別の要求を受け取ったときに、それに応答する。したがって、上記の、複数の要求を連続的に送る好ましい実施態様においては、システム・メモリ１１０が、連続的に送られた複数の要求に応答し、接続１２６を介してシステム・バス１０８へ、被要求データの複数の小データ部分を連続的に送る。システム・バス１０８は、これらの小データ部分をバス・コントローラ１０６へ連続的に送る。バス・コントローラ１０６は、これらの小データ部分を、キャッシュ１０４内のキャッシュ・ライン１１２、１１４、および１１６のそれぞれに対して連続的に送る。
【００１７】
被要求データの小部分（たとえば、単一のキャッシュ・ライン）がシステム・メモリ１１０からキャッシュ１０４へ送られる動作の詳細は次のようになる。システム・メモリ１１０が、被要求データの小部分を接続１２６を介してシステム・バス１０８へ送る。続いてシステム・バス１０８が、この被要求データの小部分を接続１２８を介してバス・コントローラ１０６へ送る。次にバス・コントローラ１０６が、この被要求データの小部分を接続１３０を介してキャッシュ１０４へ送る。この例においては、キャッシュ・セットＥだけが、被要求データの小部分の一時的なストア用にロックされている。したがって、この被要求データの小部分は、キャッシュ１０４のキャッシュ・セットＥ内にストアされる。コンピュータ・システム１００が、被要求データを、それぞれの小部分が単一のキャッシュ・ラインのサイズに等しい複数の小部分に分割するべく設計されている場合には、被要求データの小部分がキャッシュ・ライン１１２、１１４、および１１６のいずれかにストアされることになる。つまり、プロセッサ１０２は、接続１３２を介してキャッシュ１０４へアクセスし、被要求データの小部分をフェッチし、その被要求データの小部分の処理を行う。被要求データのすべての小部分がこの方法に従ってプロセッサ１０２へ送られるまで、このプロセス全体が経時的に繰り返される。
【００１８】
好ましい実施態様においては、キャッシュ・コントローラ１１１が、メモリ・アクセス・コントロール・ユニット１３４、ＬＲＵユニット１３６、ロック・コントロール・ユニット１３８、および置換コントロール・ユニット１４０を備える。メモリ・アクセス・コントロール・ユニット１３４、ＬＲＵユニット１３６、およびロック・コントロール・ユニット１３８は、プロセッサ１０２からのデータ要求を独立して処理する。メモリ・アクセス・コントロール・ユニット１３４は、被要求データがキャッシュ１０４内にストアされているか否かについての決定を行う。たとえば、メモリ・アクセス・コントロール・ユニット１３４は、キャッシュ・コントローラ１１１内のディレクトリ（図示せず）をチェックしてこの決定を行う。データ・ミスが生じている場合には、メモリ・アクセス・コントロール・ユニット１３４が、接続１２０を介してバス・コントローラ１０６へデータ要求を送る。その間に、ＬＲＵユニット１３６およびロック・コントロール・ユニット１３８もまた、このデータ要求を処理する。被要求データがストリーミング・データであった場合には、ロック・コントロール・ユニット１３８は、いずれのキャッシュ・セット（１以上）がシステム・メモリ１１０から返された被要求データをストアすることになるかについての決定を行う。ストリーミング・データでなかった場合には、ＬＲＵユニット１３６がその決定を行う。この例においては、ロック・コントロール・ユニット１３８が、システム・メモリ１１０から返された被要求データをキャッシュ・セットＥがストアすることになるという決定を行う。この情報は、続いて置換コントロール・ユニット１４０に提供され、それが、この目的に関してキャッシュ・セットＥをコントロールする。
【００１９】
好ましくは、被要求データの処理を要求するアプリケーション・プログラムが、システム・メモリ１１０内におけるデータ‐ストリーミング領域の場所およびサイズ、ならびにロックされかつそのエリアに拘束される単一の選択済みキャッシュ・セットまたは選択済みキャッシュ・セットの数を決定する。つまり、被要求データの大きさにかかわらず、被要求データは、１以上の事前定義キャッシュ・セット内だけに一時的にストアされ、キャッシュ１０４の残りのセットを書き換えることはない。
【００２０】
本発明の好ましい実施態様においては、１以上のロックされたキャッシュ・セットに対するシステム・メモリ１１０のエリアの拘束は、プロセッサのロードおよびストア・オペレーションに関し、ハードウエア・レンジ・レジスタ（図示せず）のロードによって行われる。この種のハードウエア・レンジ・レジスタは、開始システム・メモリ・アドレス、長さ、および関連付けされたキャッシュ‐ロック・インデクスを定義する。ストリーミング・ダイレクト・メモリ・アクセス（ＤＭＡ）オペレーションに関しては、そのオペレーションで使用するキャッシュ‐ロック・インデクスが、ＤＭＡコマンド内に指定される。ハードウエアは、キャッシュ‐ロック・インデクスを使用してキャッシュ管理テーブル（図示せず）へアクセスするが、このテーブルは、各キャッシュ・ロック・エリア用にいずれのキャッシュ・セットが用いられることになるかを示すべくソフトウエアによってあらかじめロードされている。たとえば、このテーブル内の各ビットは、６４キロバイトのキャッシュ・セットを表す。ビットがセットされていれば、対応するセットがそのインデクスに対してロックされている。ビットがセットされていなければ、対応するセットはそのインデクスに対してロックされていない。１つのセットを複数のインデクスに対してロックすることも可能である。
【００２１】
ストリーミング・データは、一般にサイズが大きくなりがちである。しかしながら、プロセッサ１０２が、すべてのストリーミング・データを一度に処理しなければならないということはない。むしろプロセッサ１０２は、通常、小時間間隔の間にストリーミング・データの小部分を処理し、別の小時間間隔の間には別の小部分へ移動するという形で処理を続ける。
【００２２】
本発明の好ましい実施態様においては、システム・メモリ１１０のストリーミング・データ・エリア（図示せず）が、好ましくはアドレスおよびサイズによって定義され、ストリーミング・データのストアのために使用される。システム・メモリ１１０のストリーミング・データ・エリアは、キャッシュ１０４内の１以上のロックされたセット（たとえば、キャッシュ・セットＥ）に拘束されている。プロセッサ１０２が、システム・メモリ１１０のストリーミング・データ・エリアからのデータに関する要求を発したとき、キャッシュ１１４のロックされたセット（たとえば、キャッシュ・セットＥ）内に被要求データが見つからなければ、ロックされたセット（たとえば、キャッシュ・セットＥ）内の１以上のキャッシュ・ライン（たとえば、キャッシュ・ライン１１２、１１４、１１６）へ、標準のＬＲＵアルゴリズムを使用して被要求データがロードされる。このようにして、被要求ストリーミング・データは、キャッシュ１０４のロックされたセット（たとえば、キャッシュ・セットＥ）内だけにロードされることになる。
【００２３】
プロセッサ１０２が、キャッシュ１０４内にもなく、また上記のシステム・メモリ１１０のストリーミング・データ・エリア内にも見つからないデータに関する要求を発した場合には、被要求データが、ロックされたセット（たとえば、キャッシュ・セットＥ）に対応していないキャッシュ１０４のエリアにロードされることになる。このようにして被要求非ストリーミング・データは、ロックされたセット（たとえば、キャッシュ・セットＥ）を除くほかのキャッシュ・セット（たとえば、キャッシュ・セットＡ〜ＤおよびＦ〜Ｈのうちのいずれか）にロードされることになる。
【００２４】
本発明の一実施態様においては、複数のその種のストリーミング・データ・エリアを、キャッシュ１０４内の異なるロックされたセットに拘束することができる。変形実施態様においては、複数のその種のストリーミング・データ・エリアを、キャッシュ１０４内の同一のロックされたセットに拘束することができる。
【００２５】
コンピュータ・システム１００は、複数のプロセッサを有するコンピュータ・システムに一般化することができる。その場合、追加のキャッシュ（図示せず）および追加のバス・コントローラ（図示せず）を、それぞれの追加のプロセッサ（図示せず）とシステム・バス１０８の間に、プロセッサ１０２とシステム・バス１０８の間の接続と同様に結合すればよい。
【００２６】
本発明の好ましい実施態様においては、システム・メモリ１１０内の複数のストリーミング・データ・エリアを、キャッシュ１０４内の異なるロックされたセットに拘束することができる。変形実施態様においては、システム・メモリ１１０内の複数のストリーミング・データ・エリアを、キャッシュ１０４内の同一のロックされたセットに拘束することができる。
【００２７】
図２は、図１のコンピュータ・システム１００のオペレーションを例示しているフローチャート２００である。ステップ２０２において、プロセッサ１０２はデータに関するデータ要求を発する。好ましくはこのデータがストリーミング・データの形式を取り、限定する意図ではないがビデオ／オーディオ・ストリーミング・データを含む。
【００２８】
ステップ２０４においては、このデータ要求がプロセッサ１０２からシステム・メモリ１１０へ送られる。好ましくはこのデータ要求が、プロセッサ１０２からキャッシュ１０４へ、さらにそこからバス・コントローラ１０６へ、さらにそこからシステム・バス１０８へ、さらにそこからシステム・メモリ１１０へと送られる。
【００２９】
ステップ２０６においては、このデータ要求に応答してデータが１以上の小データ部分に分割される。ここでは、各データ部分がキャッシュ１０４の事前定義エリア内にストアされることになる。通常、この事前定義エリアが１以上のキャッシュ・セットを含む。図１のコンピュータ・システム１００の場合であれば、この事前定義エリアがキャッシュ・セットＥになる。
【００３０】
ステップ２０８においては、１つの小データ部分がシステム・メモリ１１０からキャッシュ１０４へ送られる。好ましくはこの１つの小データ部分が、システム・メモリ１１０からシステム・バス１０８へ、さらにそこからバス・コントローラ１０６へ、さらにそこからキャッシュ１０４へと送られる。
【００３１】
ステップ２１０においては、キャッシュ１０４の事前定義エリア内において１つの小データ部分を用いてキャッシュ１０４が更新される。好ましくはキャッシュ１０４の事前定義エリアが、１以上のキャッシュ・セットを含む。
【００３２】
ステップ２１２においては、この１つの小データ部分がキャッシュ１０４からプロセッサ１０２へ送られる。好ましくは、プロセッサ１０２がキャッシュ１０４の事前定義エリアへアクセスし、そこにストアされている１つの小データ部分を取り出す。
【００３３】
ステップ２１４においては、すべての小データ部分がキャッシュ１０４へ送られたか否かについての決定を行う。否であれば、データがまだ完全にキャッシュへ送られていないことになる。その場合には、フローチャート２００がステップ２０８に戻り、別の小データ部分を送る。ステップ２１４において、すべての小データ部分がキャッシュ１０４へ送られたと決定されると、このフローチャート２００が終了する。
【００３４】
次に図３を参照するが、このフローチャート３００は、図２に示したステップ２０４の好ましい実施態様を例示している。ステップ３０２においては、データ要求がプロセッサ１０２からキャッシュ１０４へ送られる。好ましくはこのデータ要求が、ステップ３０２において、完全な形でプロセッサ１０２からキャッシュ１０４へ送られる。
【００３５】
ステップ３０４においては、そのデータ要求から、１以上の個別の要求が生成される。ここでは、それぞれの個別の要求が、単一のキャッシュ・ラインに対応している。言い換えると、それぞれの個別の要求は、単一のキャッシュ・ライン内にストアされることになるデータに関する要求として定義される。たとえば、図１に示されている特定の構成においては、キャッシュ・ライン１１２、１１４、および１１６に関する少なくとも３つの個別の要求が作られ、３つの個別の要求のそれぞれは、キャッシュ・ライン１１２、１１４、および１１６のそれぞれにストアされることになるデータに関する要求となる。
【００３６】
ステップ３０６においては、これらの１以上の個別の要求が、キャッシュ１０４からバス・コントローラ１０６へ連続的に送られる。同様に、ステップ３０８においては、これらの１以上の個別の要求が、バス・コントローラ１０６からシステム・バス１０８へ連続的に送られる。ステップ３１０においては、これらの１以上の個別の要求が、システム・バス１０８からシステム・メモリ１１０へ連続的に送られる。
【００３７】
図４のフローチャート４００は、図２に示されているステップ２０８の好ましい実施態様を例示している。ステップ４０２においては、１つの小データ部分が１以上のキャッシュ・ライン・データ部分に分割される。この場合、それぞれのキャッシュ・ライン・データ部分が、対応する個別の要求に対する応答となる。言い換えると、それぞれのキャッシュ・ライン・データ部分は、それぞれのキャッシュ・ライン内にストアされることになる。たとえば、図１に示した特定の構成においては、キャッシュ・ライン１１２、１１４、および１１６内にそれぞれストアされることになる少なくとも３つのキャッシュ・ライン・データ部分を持つことになる。
【００３８】
ステップ４０４においては、これらの１以上のキャッシュ・ライン・データ部分が、システム・メモリ１１０からシステム・バス１０８へ、連続的に送られる。前述した例においては、最初にキャッシュ・ライン１１２内にストアされることになるキャッシュ・ライン・データ部分が、システム・バス１０８へ送られる。それに続き、キャッシュ・ライン１１４内にストアされることになるキャッシュ・ライン・データ部分が送られる。さらにその後、キャッシュ・ライン１１６内にストアされることになるキャッシュ・ライン・データ部分が送られる。
【００３９】
ステップ４０６においては、これらの１以上のキャッシュ・ライン・データ部分が、同様にしてシステム・バス１０８からバス・コントローラ１０６へ、連続的に送られる。
【００４０】
ステップ４０８においては、これらの１以上のキャッシュ・ライン・データ部分が、バス・コントローラ１０６からキャッシュ１０４へ、連続的に送られる。
【００４１】
以上の説明から理解されることになろうが、本発明の真の精神から逸脱することなく、本発明の好ましい実施態様において各種の修正および変更を行うことが可能である。この記述は、例示目的のみを意図としたものであって限定的な意味で解釈されるものではない。本発明の範囲は、特許請求の範囲の文言によってのみ限定される。
【００４２】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００４３】
（１）１以上の小データ部分を有するストリーミング・データに関するデータ要求を発するプロセッサ、
前記ストリーミング・データをストアするための特定のエリアを有し、前記プロセッサと通信するシステム・メモリ、
前記プロセッサに結合され、前記ストリーミング・データ用にロックされた事前定義エリアを有するキャッシュ、および、
前記キャッシュに結合され、前記プロセッサおよび前記システム・メモリの両方と通信して、前記１以上の小データ部分の少なくとも１つが前記キャッシュの前記事前定義エリア内に見つからないときに前記１以上の小データ部分の前記少なくとも１つを前記システム・メモリの前記特定のエリアから前記キャッシュの前記事前定義エリアへ転送するキャッシュ・コントローラ、
を備えるコンピュータ・システム。
（２）さらに、
前記システム・メモリに結合され、前記システム・メモリから各小データ部分を受け取るためのシステム・バス、ならびに、
前記キャッシュおよび前記システム・バスの両方に結合され、前記システム・バスから前記キャッシュへ各小データ部分を送るためのバス・コントローラ、
を備える上記（１）に記載のコンピュータ・システム。
（３）前記事前定義エリアが、１以上のキャッシュ・セットを含み、各キャッシュ・セットは、複数のキャッシュ・ラインを含む、上記（１）に記載のコンピュータ・システム。
（４）前記１以上の小データ部分の少なくとも１つが、さらに１以上のキャッシュ・ライン・データ部分に分割され、前記１以上のキャッシュ・ライン・データ部分は、前記メモリから前記キャッシュへ、連続的に送られる、上記（３）に記載のコンピュータ・システム。
（５）前記事前定義エリアが、１以上のキャッシュ・セットを含み、各キャッシュ・セットは、複数のキャッシュ・ラインを含む、上記（２）に記載のコンピュータ・システム。
（６）前記小データ部分の少なくとも１つが、さらに１以上のキャッシュ・ライン・データ部分に分割され、前記１以上のキャッシュ・ライン・データ部分は、前記メモリから前記キャッシュへ、連続的に送られる、上記（５）に記載のコンピュータ・システム。
（７）さらに、前記キャッシュに結合されるキャッシュ・コントローラを備える、上記（２）に記載のコンピュータ・システム。
（８）前記データ要求が、前記プロセッサから前記システム・メモリへ、前記キャッシュ・コントローラ、前記バス・コントローラ、および前記システム・バスを介して送られる、上記（７）に記載のコンピュータ・システム。
（９）前記キャッシュ・コントローラが、
前記プロセッサが前記データ要求を発したときに前記キャッシュ内に前記ストリーミング・データがストアされているか否かについての決定を行うためのメモリ・アクセス・コントロール・ユニット、
ＬＲＵユニット、
前記事前定義エリアを決定するためのロック・コントロール・ユニット、および、
前記メモリ・アクセス・コントロール・ユニット、前記ＬＲＵユニット、およびロック・コントロール・ユニットに結合され、前記キャッシュの前記事前定義エリア内にのみ前記ストリーミング・データがストアされるべく前記キャッシュをコントロールする置換コントロール・ユニット、
を備える、上記（１）に記載のコンピュータ・システム。
（１０）前記データは、前記キャッシュの前記事前定義エリア外にはストアされない、上記（１）に記載のコンピュータ・システム。
（１１）前記事前定義エリアは、前記データ用にロックされている、上記（１）に記載のコンピュータ・システム。
（１２）プロセッサおよびシステム・メモリを有するコンピュータ・システム内のキャッシュを使用してデータを効率的に処理するための方法であって、
データに関するデータ要求を発するステップ、
前記データ要求をプロセッサからシステム・メモリへ送るステップ、
前記データ要求に応答して、前記データを１以上の小データ部分に分割するステップ、
第１の小データ部分を前記システム・メモリから前記キャッシュへ送るステップ、
前記キャッシュの事前定義エリア内において前記第１の小データ部分を用いて前記キャッシュを更新するステップ、および、
前記キャッシュの前記事前定義エリア内において別の小データ部分を用いて前記キャッシュを更新する前に前記第１の小データ部分を前記キャッシュから前記プロセッサへ転送するステップ、
を含む方法。
（１３）さらに、すべての小データ部分を前記キャッシュへ送ったか否かを決定するステップを含む、上記（１２）に記載の方法。
（１４）さらに、すべての小データ部分をまだ前記キャッシュへ送っていないとの決定に応答して、前記キャッシュの前記事前定義エリア内において別の小データ部分を用いて前記キャッシュを更新するステップを含む、上記（１３）に記載の方法。
（１５）前記データがストリーミング・データを含む、上記（１２）に記載の方法。
（１６）前記１以上の小データ部分の少なくとも１つが、さらに１以上のキャッシュ・ライン・データ部分に分割され、前記１以上のキャッシュ・ライン・データ部分は、前記メモリから前記キャッシュへ、連続的に送られるものとする、上記（１２）に記載の方法。
（１７）さらに、前記キャッシュの前記事前定義エリアを前記データ用にロックするステップを含む、上記（１２）に記載の方法。
（１８）プロセッサおよびシステム・メモリを有するコンピュータ・システム内のキャッシュを使用してデータを効率的に処理するためのコンピュータ・プログラムであって、
データに関するデータ要求を発するためのコンピュータ・プログラム・コード、
前記データ要求をプロセッサからシステム・メモリへ送るためのコンピュータ・プログラム・コード、
前記データ要求に応答して、前記データを１以上の小データ部分に分割するためのコンピュータ・プログラム・コード、
第１の小データ部分を前記システム・メモリから前記キャッシュへ送るためのコンピュータ・プログラム・コード、
前記キャッシュの事前定義エリア内において前記第１の小データ部分を用いて前記キャッシュを更新するためのコンピュータ・プログラム・コード、および、
前記キャッシュの前記事前定義エリア内において別の小データ部分を用いて前記キャッシュを更新する前に前記第１の小データ部分を前記キャッシュから前記プロセッサへ転送するためのコンピュータ・プログラム・コード、
を含む、コンピュータ・プログラム。
（１９）さらに、すべての小データ部分を前記キャッシュへ送ったか否かを決定するためのコンピュータ・プログラム・コードを含む、上記（１８）に記載のコンピュータ・プログラム。
（２０）さらに、すべての小データ部分をまだ前記キャッシュへ送っていないとの決定に応答して、前記キャッシュの前記事前定義エリア内において別の小データ部分を用いて前記キャッシュを更新するためのコンピュータ・プログラム・コードを含む、上記（１９）に記載のコンピュータ・プログラム。
（２１）前記データがストリーミング・データを含む、上記（１８）に記載のコンピュータ・プログラム。
（２２）前記１以上の小データ部分の少なくとも１つが、さらに１以上のキャッシュ・ライン・データ部分に分割され、前記１以上のキャッシュ・ライン・データ部分は、前記メモリから前記キャッシュへ、連続的に送られる、上記（１８）に記載のコンピュータ・プログラム。
（２３）前記コンピュータ・プログラムが、さらに、前記キャッシュの前記事前定義エリアを前記データ用にロックするためのコンピュータ・プログラム・コードを含む、上記（１８）に記載のコンピュータ・プログラム。
【図面の簡単な説明】
【００４４】
【図１】キャッシュのロックを使用して効率的にストリーミング・データを処理するコンピュータ・システムを示したブロック図である。
【図２】図１のコンピュータ・システムのオペレーションを例示したフローチャートである。
【図３】図２に示されているデータ要求を送るステップの好ましい実施態様を例示したフローチャートである。
【図４】図２に示されている小データ部分を送るステップの好ましい実施態様を例示したフローチャートである。
【図１】
2004246898.tif 000003
【図２】
2004246898.tif 000004
【図３】
2004246898.tif 000005
【図４】
2004246898.tif 000006