(57)【要約】【課題】  複数のキャッシュセグメントを備えるキャッシュメモリを使用して、光ディスクなどの記憶媒体から情報を取り出すキャッシュ管理戦略を提供すること。【解決手段】  第１のグループのキャッシュセグメントは第１のタイプの情報のストリーミング転送のみを動作し、第２のグループのキャッシュセグメントは第２のタイプの情報のバルク転送のみを動作してもよい。ホストシステムは、特定の読み出し要求がどのグループのキャッシュセグメントを対象とするかを識別するヒント情報を提供してもよい。循環形のラップアラウンドによるフィル戦略を使用して、プリフェッチを行うことでキャッシュヒット時に新しい情報をキャッシュセグメントに繰り返し格納してもよい。ＬＲＵアルゴリズムやＬＦＵアルゴリズム等、さまざまな追い出しアルゴリズムを使用して、キャッシュミスの際にフラッシュおよびレフィルするためのキャッシュセグメントを選択してもよい。【選択図】  図３
2005322215.tif 000002
【特許請求の範囲】
【請求項１】
光記憶媒体から情報を読み出す方法であって、
複数のキャッシュセグメントを備えるキャッシュメモリを提供するステップと、
前記光記憶媒体に格納された情報の要求を受信するステップと、
前記要求された情報が前記キャッシュセグメントの１つに格納されているかどうかを判定するステップと、
前記情報が前記キャッシュメモリに格納されていることが判定された場合に、前記キャッシュセグメントの１つから前記要求された情報を取り出すステップと、
前記情報が前記キャッシュメモリに格納されていないことが判定された場合に、前記要求された情報を前記光記憶媒体自体から取り出すステップとを備えることを特徴とする方法。
【請求項２】
前記取り出された情報はゲームアプリケーションに関連することを特徴とする請求項１に記載の方法。
【請求項３】
前記キャッシュメモリは、第１のタイプの情報のみを動作する少なくとも１つのキャッシュセグメントを含む第１のグループと、第２のタイプの情報のみを動作する少なくとも１つのキャッシュセグメントを含む第２のグループを備えることを特徴とする請求項１に記載の方法。
【請求項４】
前記第１のタイプの情報はストリーミング転送モードで取り出すように指定された情報に関連し、前記第２のタイプの情報はバルク転送モードで取り出すように指定された情報に関連することを特徴とする請求項３に記載の方法。
【請求項５】
前記第１のタイプの情報は音声のゲーム情報に関連し、前記第２のタイプの情報はゲームレベルのロード情報に関連することを特徴とする請求項４に記載の方法。
【請求項６】
前記要求された情報がキャッシュセグメントの１つに格納されているかどうかを判定する前記ステップは、前記要求された情報がホストシステムから受信したヒント情報で指定されたキャッシュセグメントに格納されているかどうかを判定するステップを備えることを特徴とする請求項１に記載の方法。
【請求項７】
前記要求された情報が前記キャッシュセグメントの１つから取り出された場合に、
前記キャッシュセグメントの１つに関連付けられたポインタを先に移動して解放されたキャッシュ領域を定義するステップと、
前記光記憶媒体から情報をプリフェッチするステップと、
前記プリフェッチされた情報を前記キャッシュセグメントの１つの前記解放されたキャッシュ領域にフィルするステップとをさらに備えることを特徴とする請求項１に記載の方法。
【請求項８】
前記プリフェッチするステップは、ドライブメカニズムが他のタスクを実行する必要がないときに実行されることを特徴とする請求項７に記載の方法。
【請求項９】
前記フィルのステップは、前記キャッシュセグメントの１つの終わりから前記キャッシュセグメントの１つの先頭に戻ることによる循環形で実行されることを特徴とする請求項７に記載の方法。
【請求項１０】
前記要求された情報が前記光記憶媒体から取り出された場合に、
前記要求された情報をどの１つのキャッシュセグメントで受け取ればよいかを追い出しアルゴリズムに基づいて決定するステップと、
前記決定したキャッシュセグメントの現在の内容をフラッシュするステップと、
前記光記憶媒体から取り出された前記情報を前記決定したキャッシュセグメントに格納するステップとをさらに備えることを特徴とする請求項１に記載の方法。
【請求項１１】
前記追い出しアルゴリズムは最も長い間使用されていない前記キャッシュセグメントを識別することによって、前記要求された情報を受け取る前記キャッシュセグメントを決定することを特徴とする請求項１０に記載の方法。
【請求項１２】
前記追い出しアルゴリズムは最も使用頻度の低い前記キャッシュセグメントを識別することによって、前記要求された情報を受け取る前記キャッシュセグメントを決定することを特徴とする請求項１０に記載の方法。
【請求項１３】
請求項１に記載の前記キャッシュメモリから情報を受信し、判定し、取り出す各ステップ、および前記光記憶媒体から情報を取り出すステップを実装するマシン可読命令を格納することを特徴とするコンピュータ可読媒体。
【請求項１４】
光記憶媒体から情報を読み出す装置であって、
複数のキャッシュセグメントを備えるキャッシュメモリと、
前記光記憶媒体に格納された情報の要求を受け取るように構成されたロジックと、
前記要求された情報が前記キャッシュセグメントの１つに格納されているかどうかを判定するように構成されたロジックと、
前記要求された情報が前記キャッシュメモリに格納されていることが判定された場合に、前記情報を前記キャッシュセグメントの１つから取り出すように構成されたロジックと、
前記要求された情報が前記キャッシュメモリに格納されていないことが判定された場合に、前記情報を前記光記憶媒体自体から取り出すように構成されたロジックとを含むキャッシュ管理ロジックを備えることを特徴とする装置。
【請求項１５】
前記取り出された情報はゲームアプリケーションに関連することを特徴とする請求項１４に記載の装置。
【請求項１６】
前記キャッシュメモリは、第１のタイプの情報のみを動作する少なくとも１つのキャッシュセグメントを含む第１のグループと、第２のタイプの情報のみを動作する少なくとも１つのキャッシュセグメントを含む第２のグループを備えることを特徴とする請求項１４に記載の装置。
【請求項１７】
前記第１のタイプの情報はストリーミング転送モードで取り出すように指定された情報に関連し、前記第２のタイプの情報はバルク転送モードで取り出すように指定された情報に関連することを特徴とする請求項１６に記載の装置。
【請求項１８】
前記第１のタイプの情報は音声のゲーム情報に関連し、前記第２のタイプの情報はゲームレベルのロード情報に関連することを特徴とする請求項１７に記載の装置。
【請求項１９】
前記判定のロジックは、前記要求された情報がホストシステムから受信したヒント情報で指定されたキャッシュセグメントに格納されているかどうかを判定するように構成されることを特徴とする請求項１４に記載の装置。
【請求項２０】
前記要求された情報を前記キャッシュセグメントの１つから取り出す前記ロジックは、
前記キャッシュセグメントの１つに関連付けられたポインタを先に移動して解放されたキャッシュ領域を定義するロジックと、
前記光記憶媒体から情報をプリフェッチするように構成されたロジックと、
前記プリフェッチされた情報を前記キャッシュセグメントの１つの前記解放されたキャッシュ領域に格納するように構成されたロジックとをさらに備えることを特徴とする請求項１４に記載の装置。
【請求項２１】
前記プリフェッチするロジックは、ドライブメカニズムが他のタスクを実行する必要がないときに動作するように構成されることを特徴とする請求項２０に記載の装置。
【請求項２２】
前記フィルのロジックは、前記キャッシュセグメントの１つの終わりから前記キャッシュセグメントの１つの先頭に戻ることによる循環形で前記キャッシュセグメントの１つにフィルするように構成されることを特徴とする請求項２０に記載の装置。
【請求項２３】
前記要求された情報が前記光記憶媒体から取り出すように構成された前記ロジックは、
前記要求された情報をどの１つのキャッシュセグメントで受け取ればよいかを追い出しアルゴリズムに基づいて決定するように構成されたロジックと、
前記決定したキャッシュセグメントの現在の内容をフラッシュするように構成されたロジックと、
前記光記憶媒体から取り出された前記情報を前記決定したキャッシュセグメントに格納するように構成されたロジックとをさらに備えることを特徴とする請求項１４に記載の装置。
【請求項２４】
前記追い出しアルゴリズムは最も長い間使用されていないキャッシュセグメントを識別することによって、前記要求された情報を受け取る前記キャッシュセグメントを決定することを特徴とする請求項２３に記載の装置。
【請求項２５】
前記追い出しアルゴリズムは最も使用頻度の低い前記キャッシュセグメントを識別することによって、前記要求された情報を受け取る前記キャッシュセグメントを決定することを特徴とする請求項２３に記載の装置。
【請求項２６】
請求項１４に記載の前記キャッシュメモリと各前記ロジックを実装するマシン可読情報を格納することを特徴とするコンピュータ可読媒体。
【請求項２７】
記憶媒体から情報を読み出す方法であって、
複数のキャッシュセグメントを備えており、ストリーミング転送モードで取り出すように指定された第１のタイプの情報を動作する少なくとも１つのキャッシュセグメントで構成される第１のグループと、バルク転送モードで取り出すように指定された第２のタイプの情報を動作する少なくとも１つのキャッシュセグメントで構成される第２のグループを備えるキャッシュメモリを提供するステップと、
前記記憶媒体に格納された情報の要求を受信するステップと、
前記要求された情報がキャッシュセグメントの前記グループの１つに格納されているかどうかを判定するステップと、
前記要求された情報がキャッシュメモリに格納されていることが判定された場合に、前記キャッシュセグメントの１つから前記情報を取り出すステップと、
前記要求された情報がキャッシュメモリに格納されていないことが判定された場合に、前記情報を前記記憶媒体自体から取り出すステップとを備えることを特徴とする方法。
【請求項２８】
前記第１のタイプの情報は音声のゲーム情報に関連し、前記第２のタイプの情報はゲームレベルのロード情報に関連することを特徴とする請求項２７に記載の方法。
【請求項２９】
前記要求された情報がキャッシュセグメントの前記グループの１つに格納されているかどうかを判定する前記ステップは、前記要求された情報がホストシステムから受信したヒント情報で指定されたキャッシュセグメントに格納されているかどうかを判定するステップを備えることを特徴とする請求項２７に記載の方法。
【請求項３０】
請求項２７に記載の前記キャッシュメモリから情報を受信し、判定し、取り出す各ステップ、および前記記憶媒体からの情報を取り出すステップを実装するマシン可読命令を格納することを特徴とするコンピュータ可読媒体。
【請求項３１】
記憶媒体から情報を読み出す方法であって、
キャッシュメモリを提供するステップと、
前記記憶媒体に格納された情報の要求を受信するステップと、
前記要求された情報が前記キャッシュメモリに格納されているかどうかを判定するステップと、
前記要求された情報が前記キャッシュメモリに格納されていることが判定された場合に、前記情報を前記キャッシュメモリから取り出すステップであって、
前記キャッシュセグメントに関連付けられたポインタを先に移動して解放されたキャッシュ領域を定義するステップと、
前記記憶媒体から情報をプリフェッチするステップと、
前記プリフェッチされた情報を前記キャッシュメモリの前記解放されたキャッシュ領域にフィルするステップとを含むステップと、
前記要求された情報が前記キャッシュメモリに格納されていないことが判定された場合に、前記情報を前記記憶媒体自体から取り出すステップとを備えることを特徴とする方法。
【請求項３２】
前記取り出された情報はゲームアプリケーションに関連することを特徴とする請求項３１に記載の方法。
【請求項３３】
前記プリフェッチするステップは、ドライブメカニズムが他のタスクを実行する必要がないときに実行されることを特徴とする請求項３１に記載の方法。
【請求項３４】
前記フィルのステップは、前記キャッシュメモリの終わりから前記キャッシュメモリの先頭に戻ることによる循環形で実行されることを特徴とする請求項３１に記載の方法。
【請求項３５】
前記記憶媒体は、光記憶媒体であることを特徴とする請求項３１に記載の方法。
【請求項３６】
請求項３１に記載の前記キャッシュメモリから情報を受信し、判定し、取り出す各ステップ、および前記記憶媒体からの情報を取り出すステップを実装するマシン可読命令を格納することを特徴とするコンピュータ可読媒体。
【請求項３７】
記憶媒体から情報を読み出す装置であって、
複数のキャッシュセグメントを備えており、ストリーミング転送モードで取り出すように指定された第１のタイプの情報を動作する少なくとも１つのキャッシュセグメントで構成される第１のグループと、バルク転送モードで取り出すように指定された第２のタイプの情報を動作する少なくとも１つのキャッシュセグメントで構成される第２のグループを備えるキャッシュメモリと、
前記記憶媒体に格納された情報の要求を受信するように構成されたロジックと、
前記要求された情報がキャッシュセグメントの前記グループの１つに格納されているかどうかを判定するように構成されたロジックと、
前記要求された情報が前記キャッシュメモリに格納されていることが判定された場合に、前記キャッシュセグメントの前記グループの１つから前記情報を取り出すように構成されたロジックと、
前記要求された情報がキャッシュメモリに格納されていないことが判定された場合に、前記情報を前記記憶媒体自体から取り出すように構成されたロジックとを含むキャッシュ管理ロジックを備えることを特徴とする装置。
【請求項３８】
前記第１のタイプの情報は音声のゲーム情報に関連し、前記第２のタイプの情報はゲームレベルのロード情報に関連することを特徴とする請求項３７に記載の装置。
【請求項３９】
前記判定のロジックは、前記要求された情報がホストシステムから受信したヒント情報で指定されたキャッシュセグメントに格納されているかどうかを判定するように構成されることを特徴とする請求項３７に記載の装置。
【請求項４０】
請求項３７に記載の前記キャッシュメモリと各前記ロジックを実装するマシン可読情報を格納することを特徴とするコンピュータ可読媒体。
【請求項４１】
記憶媒体から情報を読み出す装置であって、
キャッシュメモリと、
前記記憶媒体に格納された情報の要求を受信するように構成されたロジックと、
前記要求された情報が前記キャッシュメモリに格納されているかどうかを判定するように構成されたロジックと、
前記要求された情報が前記キャッシュメモリに格納されていることが判定された場合に、前記情報を前記キャッシュメモリから取り出すように構成されたロジックであって、
前記キャッシュセグメントに関連付けられたポインタを先に移動して解放されたキャッシュ領域を定義するように構成されたロジックと、
前記記憶媒体から情報をプリフェッチするように構成されたロジックと、
前記プリフェッチされた情報を前記キャッシュメモリの前記解放されたキャッシュ領域にフィルするように構成されたロジックとを含むロジックを備えたキャッシュ管理ロジックと、
前記要求された情報が前記キャッシュメモリに格納されていないことが判定された場合に、前記情報を前記記憶媒体自体から取り出すように構成されたロジックとを備えることを特徴とする装置。
【請求項４２】
前記取り出された情報はゲームアプリケーションに関連することを特徴とする請求項４１に記載の装置。
【請求項４３】
前記プリフェッチするロジックは、ドライブメカニズムが他のタスクを実行する必要がないときに動作するように構成されることを特徴とする請求項４１に記載の装置。
【請求項４４】
前記フィルのロジックは、前記キャッシュメモリの終わりから前記キャッシュメモリの先頭に戻ることによる循環形で実行されるように構成されることを特徴とする請求項４１に記載の装置。
【請求項４５】
前記記憶媒体は、光記憶媒体であることを特徴とする請求項４１に記載の装置。
【請求項４６】
請求項４１に記載の前記キャッシュメモリと各前記ロジックを実装するマシン可読情報を格納することを特徴とするコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリを使用して記憶媒体から情報を読み出すための戦略に関し、より詳細にはキャッシュメモリを使用して光学式大容量記憶媒体から情報を読み出すための戦略に関する。
【背景技術】
【０００２】
ホストシステムは、従来、光学式または磁気大容量記憶媒体から情報を読み出すときにキャッシュメモリを使用している。この手法では、ドライブメカニズムが記憶媒体から情報を読み出し、キャッシュメモリに格納する。ホストシステムがすでにキャッシュメモリに格納されている情報ブロックを要求した場合に、ホストシステムはこの情報を物理記憶媒体でなくキャッシュメモリから取り出す。このイベントは「キャッシュヒット」と呼ばれる。情報がキャッシュメモリに格納されていない場合は、ホストシステムは記憶媒体自体からこの情報を取り出さざるを得ない。このイベントは「キャッシュミス」と呼ばれる。一般に、要求された情報は物理記憶媒体から取り出すよりキャッシュメモリから取り出す方が高速である。このことは、キャッシュメモリを使用することの基本的な利点である。
【０００３】
図１は、従来のキャッシュメモリ１０２を示している。従来のキャッシュメモリ１０２は、高速メモリの部分（ＲＡＭなど）を備えている。キャッシュ管理ロジック（図示せず）は、１つまたは複数のポインタ（たとえばポインタ１０４）を使って情報を格納したり取り出されたりするキャッシュメモリ１０２内のロケーションを識別する。
【０００４】
図２は、記憶媒体から情報を取り出す従来の手順２００を示している。手順２００は、光記憶媒体からメディア情報（音楽や映画など）を取り出す従来の技術を詳細に示している。従来の光記憶媒体には、コンパクトディスク（ＣＤ：ｃｏｍｐａｃｔ  ｄｉｓｃ）、デジタル多用途ディスク（ＤＶＤ：ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｃ）などが含まれる。ステップ２０２で、光ドライブメカニズムはホストシステム（コンピュータシステムや専用のプレイヤデバイスなど）から特定の情報の要求を受信する。ホストシステムは、出力装置（表示装置および／またはスピーカーなど）に出力するメディア情報の特定のブロックを具体的に識別することができる。ステップ２０４では、ドライブメカニズムは要求された情報ブロックがキャッシュメモリ１０２内にあるかどうかを判定する。ある場合は、ステップ２０６でドライブメカニズムがキャッシュメモリ１０２から情報を取り出し、それをホストシステムに転送する。
【０００５】
要求された情報がキャッシュメモリ１０２内にない場合は、ステップ２０８でドライブメカニズムは記憶媒体（たとえば、実際のＣＤディスクやＤＶＤディスク）から情報を読み出す。ドライブメカニズムは、この情報をホストシステムに送る。また、ドライブメカニズムはキャッシュメモリ１０２をフラッシュし、新しく取り出された情報（記憶媒体から取り出された）をキャッシュメモリ１０２に格納する。さらに、ドライブメカニズムは先読み（ｒｅａｄ  ａｈｅａｄ）を実行して記憶媒体から追加の連続するブロックを取り出し、こうした追加のブロックをキャッシュメモリ１０２に格納することもできる。その結果、その後でホストシステムが記憶媒体に格納された次の連続する情報ブロックを要求する場合に、ドライブメカニズムはこの情報ブロックを記憶媒体でなくキャッシュメモリ１０２から取り出すことができる。ステップ２１０は、メディア情報を再生する間中、ホストシステムが手順２００を終了するまでこの手順２００が繰り返されることを示している。先読み技術を使用することで、ドライブメカニズムに要求される記憶媒体との対話が削減される。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
前述のキャッシュメモリ取出しスキームは、前述のメディア情報のようなもの、すなわち音楽や映画に対して適切に機能する。このような場合は、再生パターンが直線的で予測可能である。つまり、通常、コンシューマ（ｃｏｎｓｕｍｅｒ）はこうしたメディア情報を最初から最後まで再生する。コンシューマがメディア情報内の別のポイントに戻ったり進んだりする場合のように、このパターンから逸脱することもあるが、こうした逸脱は比較的珍しいので、ドライブメカニズムのパフォーマンスを著しく左右することはない。一方で、他の応用例（ａｐｐｌｉｃａｔｉｏｎｓ）はこの種の直線的で予測可能な情報再生には適さない。たとえば、ゲーム情報を提供する記憶媒体（たとえばＤＶＤ−ＲＯＭ）の事例について考察する。ゲーム情報には、シーンを構成するために使用されるキャラクタやその他のオブジェクトを定義する情報、ゲームのオーディオプレゼンテーションを定義する情報（たとえば、さまざまなボイスクリップ（ｖｏｉｃｅ  ｃｌｉｐｓ）やサウンドエフェクト）、さまざまなゲームエンジンを制御する情報などがある。ゲーム開発者は、同時に閉じるように要求される可能性の高い情報ブロックを関連ファイルのグループに編成し、このような関連ファイルのグループを互いに近接する記憶媒体に格納することで、ゲームのパフォーマンスを最適化しようとする。しかし、こうした対応をとっても、ゲームのプレイは基本的に自由な予測できない形で進行する。プレイヤがとる、概して予測が難しい行動に応じて、ドライブメカニズムはさまざまな部分を立て続けに記憶媒体から取り出す必要がある。この種の読み出し動作ではキャッシュミスが多発し、したがって、キャッシュメモリ１０２のフラッシュとリフィル（ｒｅｆｉｌｌｉｎｇ）が頻繁に発生する。こうした動作によって、ゲームのパフォーマンスによくない影響を及ぼす恐れがある。
【０００７】
したがって、例示的には、特にこうした直線的で予測可能な情報再生とは言えない情報消費環境のために、キャッシュメモリを使用して記憶媒体から情報を読み出すためのより効率的な戦略が必要とされている。
【課題を解決するための手段】
【０００８】
１つの例示的な実装に従って、光学式大容量記憶媒体から情報を読み出す方法について説明する。本方法は、複数のキャッシュセグメントに分割したキャッシュメモリを提供するステップを備えている。本方法は、光記憶媒体に格納された情報の要求を受信するステップと、要求された情報がキャッシュセグメントの１つに格納されているかどうかを判定するステップをさらに備えている。本方法は、情報がキャッシュメモリに格納されていることが判定された場合に要求された情報を前述の１つのキャッシュセグメントから取り出すステップと、情報がキャッシュメモリに格納されていないことが判定された場合に要求された情報を光記憶媒体自体から取り出すステップを備えている。
【０００９】
別の例示的な実装では、前述の取り出された情報はゲームアプリケーションに関連する。
【００１０】
別の例示的な実装によれば、キャッシュメモリは、第１のタイプの情報のみを動作する少なくとも１つのキャッシュセグメントを含む第１のグループと、第２のタイプの情報のみを動作する少なくとも１つのキャッシュセグメントを含む第２のグループを備えている。第１のタイプの情報はストリーミング転送モードで取り出すように指定された情報に関連し、第２のタイプの情報はバルク転送モードで取り出すように指定された情報に関連する。より具体的には、１つの応用例では、第１のタイプの情報は音声のゲーム情報に関連し、第２のタイプの情報はゲームレベルのロード情報に関連する。
【００１１】
別の例示的な実装によれば、前述の要求された情報がキャッシュセグメントの１つに格納されているかどうかを判定するステップは、要求された情報がホストシステムから受信したヒント情報で指定されたキャッシュセグメントに格納されているかどうかを判定するステップを備えている。
【００１２】
別の例示的な実装によれば、要求された情報が前述の少なくとも１つのキャッシュセグメントから取り出された場合に、本方法は前述の少なくとも１つのキャッシュセグメントに関連付けられたポインタを先に移動して解放されたキャッシュ領域を定義するステップと、光記憶媒体から情報をプリフェッチ（ｐｒｅ−ｆｅｔｃｈｉｎｇ）するステップと、さらにプリフェッチされた情報を前述の少なくとも１つのキャッシュセグメントの解放されたキャッシュ領域にフィル（ｆｉｌｌ）するステップを備えている。プリフェッチするステップは、ドライブメカニズムが他のタスクを実行する必要がないときに実行してもよい。さらに、前述のフィルのステップは、前述の少なくとも１つのキャッシュセグメントの終わりから前述の少なくとも１つのキャッシュセグメントの先頭に戻ることによる循環形で実行される。
【００１３】
別の例示的な実装によれば、要求された情報が光記憶媒体から取り出された場合に、本方法は要求された情報をどのキャッシュセグメントで受け取ればよいかを追い出し（ｅｖｉｃｔｉｏｎ）アルゴリズムに基づいて決定するステップと、決定したキャッシュセグメントの現在の内容をフラッシュするステップと、次に光記憶媒体から取り出された情報を決定したキャッシュセグメントに格納するステップをさらに備えている。１つのケースでは、追い出しアルゴリズムは最も長い間使用されていないキャッシュセグメントを識別することによって、要求された情報を受け取るキャッシュセグメントを決定する。別のケースでは、追い出しアルゴリズムは使用頻度が最も低いキャッシュセグメントを識別することによって、要求された情報を受け取るキャッシュセグメントを決定する。
【００１４】
その他の実装や機能については以下で説明する。
【００１５】
本開示および図面の全体を通じて、同類の機能やコンポーネントには同じ番号を使用する。１００番台の番号は図１で初めて示される機能を表し、２００番台の番号は図２で初めて示される機能を表し、３００番台の番号は図３で初めて示される機能を表している（以下同様）。
【発明を実施するための最良の形態】
【００１６】
セグメント化されたキャッシュメモリを使用して大容量記憶媒体から情報を読み出すための戦略について以下で説明する。本開示は、ａ）セグメント化されたキャッシュメモリを利用する例示的なシステムについて説明するＡ節、ｂ）セグメント化されたキャッシュメモリを管理し、セグメント化されたキャッシュメモリを使用して情報を読み出すための例示的な手順について説明するＢ節、ｃ）セグメント化されたキャッシュメモリの例示的な適用について説明するＣ節で構成される。
【００１７】
一般に、ここで説明する任意の機能は、ソフトウェア、および／またはファームウェア（たとえば、固定論理回路（ｆｉｘｅｄ  ｌｏｇｉｃ  ｃｉｒｃｕｉｔｒｙ））を使用して実装できる。「機能」、「ロジック」、または「モジュール」という用語は、ここで使用する限り、ソフトウェア、ファームウェア、あるいはソフトウェアとファームウェアの組み合わせを表す。たとえば、ソフトウェアとして実装する場合に、「機能」、「ロジック」、または「モジュール」という用語は、１台または複数台の処理装置（たとえばＣＰＵ）で実行した場合に指定されたタスクを実行するプログラムコードを表す。プログラムコードは１つまたは複数のコンピュータ可読メモリデバイスに格納される。機能、ロジックおよびモジュールを図示されたような別々のユニットに分割する場合は、該当するソフトウェアおよび／またはハードウェアの実際の物理的なグループ化や割り当てを反映してもよい。あるいは、単独のソフトウェアプログラムおよび／またはハードウェアユニットで実行するさまざまなタスクの概念的な割り当てに対応してもよい。図示された機能、ロジックおよびモジュールは、単独のサイトに配置してもよい（たとえば、１台の処理装置による実装）。あるいは、複数の場所に分散してもよい。
【００１８】
Ａ．  例示的なシステム  
システム概要  
図３は、セグメント化されたキャッシュメモリ３０２を利用する例示的なシステム３００を示している。システム３００にはホストシステム３０４が含まれる。ホストシステムは、キャッシュ関連の機能３１２の支援により、ドライブ機能３０８とインターフェイス機能３１０を介して物理記憶媒体３０６と対話する。
【００１９】
より具体的には、ホストシステム３０４は任意の種類の装置を表すことができる。１つの事例では、ホストシステム３０４は、汎用コンピュータワークステーション、ラップトップコンピュータ、携帯情報端末（ＰＤＡ：ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）、あるいはその他の各種コンピュータデバイスなど、あらゆる種類のコンピュータデバイスを表してもよい。または、ホストシステム３０４は、ゲーム機（たとえば、例示的な応用例では、ワシントン州、レドモンドのＭｉｃｒｏｓｏｆｔ社が製造したＸｂｏｘ（商標）ゲーム機）、オーディオ再生装置、ＤＶＤ再生装置、またはその他の種類の装置のようなアプリケーション専用の装置を表すことができる。
【００２０】
物理記憶媒体３０６は、任意の種類の磁気記憶媒体、任意の種類の光記憶媒体、または他の任意のタイプの記憶媒体から構成できる。たとえば、磁気媒体の場合は、記憶媒体３０６は磁気ハードデスクを備えていてもよい。光媒体の場合は、記憶媒体３０６はコンパクトディスク（ＣＤ：ｃｏｍｐａｃｔ  ｄｉｓｃ）、デジタル多用途ディスク（ＤＶＤ：ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｃ）などを備えていてもよい。１つの事例では、光記憶媒体は読み出し専用の媒体でよい。別の事例では、光記憶媒体は読み出しと書き込みの両方が可能な媒体でもよい。本開示では、光記憶媒体に格納されたゲーム情報と対話するゲーム機の事例に繰り返し言及する。しかし前述のように、この事例はここで説明するキャッシュ管理戦略の多くの可能な応用例のほんの１つにすぎない。
【００２１】
ドライブ機能３０８とインターフェイス機能３１０は、環境特有のさまざまな応用例に合わせて選択できる。磁気記憶媒体の場合は、ドライブ機能３０８は磁気ディスク読み取り機能／書出し機能（ｒｅａｄｅｒ／ｗｒｉｔｅｒ）を備えていてもよい。光記憶媒体の場合は、ドライブ機能３０８は光ディスク読み取り機能を備えていてもよい。たとえば、図示されていないが、従来のＤＶＤドライブメカニズムには、光ディスクを回転させるためのドライブモータ、回転しているディスクから情報を読み取るためのレーザと付随のレンズシステム、レーザアセンブリを動かすためのさまざまなトラッキング機能などが含まれる。
【００２２】
インターフェイス機能３１０は、ホストシステム３０４とドライブ機能３０８との対話を容易にするための任意のハードウェアおよび／またはソフトウェアを備えていてもよい。従来のインターフェイス機能には、Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ（ＳＣＳＩ）機能、Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ（ＩＤＥ）機能、ＡＴ  Ａｔｔａｃｈｍｅｎｔ  Ｐａｃｋｅｔ  Ｉｎｔｅｒｆａｃｅ（ＡＴＡＰＩ）機能などが含まれる。この機能３１０は、１つの実装では、ホストシステム３０４とドライブ機能３０８をインターフェイスするための適切なハードウェアとソフトウェアを伴う１枚または複数枚のカードに対応してもよい。
【００２３】
キャッシュ関連の機能３１２は、考察を容易にするためにドライブ機能３０８とインターフェイス機能３１０間に位置するように図示されている。この機能３１２は、実際には、図のように配置された個別のモジュールに対応してもよい。しかし、より一般的には、キャッシュ関連の機能３１２は図３に示す他の任意の機能モジュールまたは図３には示されていない他の機能モジュールに組み込まれていてもよい。すなわち、キャッシュ関連の機能３１２は、ホストシステム３０４、インターフェイス機能３１０、ドライブ機能３０８、または図示されていない他の機能モジュールに組み込まれていてもよい。また、キャッシュ関連の機能３１２に示す機能は、図３に示す複数の機能モジュールまたは図３には示されない付加的な機能モジュール全体に分散してもよい。
【００２４】
キャッシュ関連の機能３１２には、セグメント化されたキャッシュメモリ３０２自体を含めてもよい。セグメント化されたキャッシュメモリ３０２は、スタティックランダムアクセスメモリ（ＲＡＭ）、またはその他の各種メモリなどのメモリの所定の部分に対応してもよい。キャッシュメモリは、物理的に１つまたは複数のメモリチップを使用して実装できる。１つの例示的な限定されない例では、キャッシュメモリ３０２は総計２ＭＢの情報を備えていてもよい。これには最大６４ブロックの誤り訂正符号（ＥＣＣ）情報を格納できる。
【００２５】
セグメント化されたキャッシュ３０２は、その名前が示すように、複数のセグメント（３１４、３１６、．．．３１８）に分割されている。これらのキャッシュセグメント（３１４、３１６、．．．３１８）は、事実上別々のキャッシュメモリに対応し、別々のキャッシュメモリとして管理される。好ましい実装では、キャッシュ関連機能３１２は１つの物理メモリデバイスの各部分を割り当て、異なるキャッシュセグメント（３１４、３１６、．．．３１８）を作成する。以下に説明するように、こうしたキャッシュパーテションはポインタを使用して作成できる。
【００２６】
キャッシュ関連機能３１２にはキャッシュ管理ロジック３２０も含まれる。このロジック３２０は、一般にキャッシュセグメント（３１４、３１６、．．．３１８）を確立し、続いてキャッシュセグメント（３１４、３１６、．．．３１８）を利用して記憶媒体３０６から情報を読み出すための任意のメカニズムを表す。図示および説明しやすいように、キャッシュ管理ロジック３２０は統一モジュールとして示されている。しかし、このモジュールで表されるさまざまなタスクは、図３に示すシステム３００内の別の場所に実装してもよい。
【００２７】
キャッシュ管理ロジック３２０は、ポインタテーブル３２２を利用する。ポインタテーブル３２２には、セグメント化されたキャッシュ３０２を管理するためのパラメータの集まりが格納される。このようなパラメータには、各キャッシュセグメント（３１４、３１６、．．．３１８）の始まりと終わりをそれぞれ定義するポインタが含まれる。このようなパラメータには、各キャッシュセグメント（３１４、３１６、．．．３１８）内の場所を指定するための１つまたは複数のポインタも含まれる（以下で詳説する）。さらに、これらのパラメータには、キャッシュセグメントの追い出しアルゴリズム（以下で詳説する）を管理するためのＬＲＵ（ｌｅａｓｔ  ｒｅｃｅｎｔｌｙ  ｕｓｅｄ）カウンタ情報のように、セグメント化されたキャッシュメモリ３０２を管理するためのさまざまなアカウント情報を含めてもよい。
【００２８】
セグメント化されたキャッシュメモリが提供する例示的な利点の概要  
図４は、セグメント化されたキャッシュメモリ４０２の例示的な応用例４００を示している。このセグメント化されたキャッシュメモリ４０２は、図３に示す一般的なセグメント化されたキャッシュメモリ３０２の特定の実装である。応用例４００は、図３に示すシステム３００の付帯的な利点のいくつかを説明するための媒体の役割を果たす。したがって、以下の説明全体を通して、図３に示すシステム３００全体に戻って他の機能を参照する。
【００２９】
例示的なセグメント化されたキャッシュメモリ４０２には、３つのキャッシュセグメントすなわち、第１のキャッシュセグメント４０４、第２のキャッシュセグメント４０６、第３のキャッシュセグメント４０８が含まれる。この例示的で非限定的な例では、２つのキャッシュセグメント（４０４、４０６）は同じサイズであり、第３のキャッシュセグメント４０８は第１のキャッシュセグメント４０４、または第２のキャッシュセグメント４０６の２倍のサイズである。
【００３０】
図４の右側に示す情報４１０は、記憶媒体３０６（図３）に格納されたファイルの集まりとその他の情報を表している。たとえば、ゲームアプリケーションにおいて、情報は、キャラクタや他のシーンオブジェクトを構成するための頂点情報やテクスチャ情報を格納する多くのファイル、ゲーム実行中に再生するためのオーディオ情報セグメントを格納する多くのファイル、ゲームの動きを制御するためのゲームエンジン情報を格納する多くのファイルなどを表すことができる。より具体的に言えば、図４の情報４１０の縦の配列は、一般に記憶媒体３０６のトラックにある連続的な配列情報を表す。ゲーム開発者は、一般に短い時間間隔で連続的にアクセスされる可能性のあるファイルが、互いに物理的に近接して格納されるように、記憶媒体３０６の情報４１０を配列しようとすることができる。しかし、ゲームプレイの本来の性質は予測不能である。したがって、ホストシステム３０４はゲーム実行中に情報４１０内の分散した場所にアクセスすることを必然的に強いられることになる。前述のように、図１と２に関連して説明した関連技術の方法では、こうして短い時間枠の中で記憶媒体３０６の異なる部分へのこの予測できないアクセスが発生することにより、キャッシュメモリのフラッシュとリフィルが比較的頻繁に要求される。このことによってパフォーマンスの低下を招く恐れがある。
【００３１】
図４に示す解決策によって、前述の問題点のいくつかが改善される。すなわち、図４はキャッシュセグメント４０２に情報４１０の部分４１２に関連する情報を格納し、キャッシュセグメント４０６に情報４１０の部分４１４からの情報を格納し、キャッシュセグメント４０８に情報４１０の部分４１６からの情報を格納する様子を示している。たとえば、１つの事例では、ホストシステム３０４は情報４１０の部分４１２内の場所を初期読み出しし、ドライブ機能３０８に対してこの部分４１２の１ブロックの情報を取り出すように指示し、さらにそれをキャッシュセグメントの１つ（この例示的な事例ではキャッシュセグメント４０４）に割り当てる。キャッシュ管理ロジック３２０は、次にドライブ機能３０８に対して、情報４１０から追加のブロックの情報をプリフェッチし、次にこの追加情報をキャッシュセグメント４０４に格納することにより、キャッシュセグメント４０４の残りの部分をフィルするように指示する。以下でより詳細に説明するように、キャッシュ管理ロジック３２０は、ホストシステム３０４が記憶媒体３０６から次に要求する可能性のある情報を識別してからこの情報を取り出すことによって前述のプリフェッチを実行してもよい。こうしてプリフェッチされた情報は、初めに要求されたブロックの情報に連続して続くブロックの情報に対応してもよいが、プリフェッチされた情報は初めに要求されたブロックの情報に対して連続的な関係にある必要はない。いずれにしても、フィルの動作の結果として、キャッシュセグメント４０４は実質的に情報４１０の部分４１２の情報（情報４１０の連続的な部分として図４に示してあるが、連続的である必要はない）を格納し、したがって表現する。
【００３２】
その他のキャッシュセグメント（４０６、４０８）も上と同じ方法でフィルできる。たとえば、ホストシステム３０４が次に情報４１０の別の部分を要求したとする。キャッシュ管理ロジック３２０はまず、セグメント化されたキャッシュメモリ４０２が要求された情報を格納しているかどうかを判定しようとする。格納していない場合、キャッシュ管理ロジック３２０は記憶媒体３０６から要求された情報を取り出し、次に前述のように別のキャッシュセグメントにこれをフィルする。この動作を管理するために使用するアルゴリズムの詳細は、後の節で説明する。このキャッシュ管理動作の一般的な結果は図４に示す配列である。ここで、さまざまなキャッシュセグメント（４０４、４０６、４０８）は、実質的に記憶媒体３０６に格納された情報４１０のさまざまな部分（４１２、４１４、４１６）「に対するサービスを提供する（ｓｅｒｖｅ）」。
【００３３】
キャッシュセグメント（４０４、４０６、４０８）は、実質的に別々の独立したキャッシュメモリとして動作する。このように、キャッシュミスの結果として、すべてキャッシュセグメントではなく悪くても１つのセグメントのフラッシュとリフィルが行われる。これは、頻繁に使用されるキャッシュセグメントを、引き続き後続のホストシステムの読み出し要求に対するサービスを提供するように保持することができるので有効である。別の言い方をすれば、セグメント化されたキャッシュ４０２を使用すると、ホストプロセッサ３０４は、必ずしもジャンプのたびにキャッシュメモリのフラッシュおよびリフィル動作を呼び出さなくても、情報４１０のさまざまな部分にジャンプできる。最終的に、本戦略により、キャッシュミスの総数を減らす効果、したがって読み出し動作のパフォーマンスを向上する効果が得られる。
【００３４】
ただし、キャッシュ管理ロジック３２０は、読み出し要求が情報４１０の部分（４１２、４１４、４１６）の範囲外にある場合は、記憶媒体３０６から情報を読み出すことを強いられる。この場合は、キャッシュ管理ロジック３２０に対してキャッシュセグメント（４０４、４０６、４０８）の１つをフラッシュし、リフィルするように指示できる。しかし、そうしたフラッシュとリフィルの頻度は、循環形のフィル（ｃｉｒｃｕｌａｒ  ｆｉｌｌ）技術を使用することで減少できる。後の節で詳説するように、循環形のフィル技術では、キャッシュヒット（ｃａｃｈｅ  ｈｉｔ）が発生するたびに、新しい情報をラップアラウンド形（ｗｒａｐ−ａｒｏｕｎｄ  ｆａｓｈｉｏｎ）でキャッシュセグメント（４０４、４０６、４０８）に追加できる。このフィル動作は、システム３００がアイドル状態のときに、プリフェッチ機能を使用して実行できる。このメカニズムのおかげで、キャッシュセグメント（４０４、４０６、４０８）に格納された部分（４１２、４１４、４１６）は、記憶媒体３０６内の情報４１０が消費されるように繰り返し「移行」できる。一般に、ドライブメカニズム３０８は、ホストシステム３０４が実際に要求するのに先立ってアイドル時間中に記憶媒体３０６からこの情報を取り出すように構成されているので、記憶媒体３０６からこうして繰り返し読み出しを行ってもパフォーマンスに悪影響を及ぼすことはない。換言すれば、ドライブメカニズム３０８は、ホストシステム３０４から実際に要求される前に先読みしていることを期待される。したがって、循環形のフィル技術により、たとえばキャッシュミスを減らすことでシステム３００のパフォーマンスをいっそう向上できる。
【００３５】
前述のように機能するために、キャッシュ管理ロジック３２０には多くのタスクを実行するためのメカニズムを含めることができる。そのようなメカニズムの１つは、キャッシュセグメントの作成を管理する。そのようなメカニズムの別の１つは、循環形のフィル機能の動作を管理する。そのようなメカニズムのさらに別の１つは、どのキャッシュセグメントをフラッシュするかを決定する（たとえば、追い出しアルゴリズムによって決定される）ための規則を管理する。キャッシュ管理ロジック３２０は、以上で特に指定されていない付加的な機能も実行できる。
【００３６】
以下の節では、キャッシュ管理ロジック３２０によって実装される前述のメカニズムのそれぞれについて詳細に説明する。重ねて、キャッシュ管理ロジック３２０は、ホストシステム３０４、ドライブ機能３０８などのように図３に示すシステム３００のさまざまな要素によって実装される複数のメカニズムを表すことができる一般的な「コンテナ」である。
【００３７】
キャッシュセグメント作成の機能  
図３に戻ると、キャッシュ管理ロジック３２０は、まずキャッシュセグメント（３１４、３１６、．．．３１８）の作成を管理する。一般に、キャッシュ管理ロジック３２０では、キャッシュセグメント（３１４、３１６、．．．３１８）の数とこうしたキャッシュセグメントのそれぞれのサイズを選択できる。キャッシュ管理ロジック３２０は、このタスクを実行するために以下で説明するさまざまな戦略のいずれかを使用できる。
【００３８】
１つの戦略では、キャッシュ管理ロジック３２０は、読み出し動作に先立って、事前に指定された数のキャッシュセグメント（３１４、３１６、．．．３１８）を含むようにセグメント化されたキャッシュメモリ３０２に分割できる。これで、キャッシュセグメント（３１４、３１６、．．．３１８）は、読み出し動作の間中固定された状態にできる。キャッシュ管理ロジック３２０は、任意の数のキャッシュセグメント（３１４、３１６、．．．３１８）を提供できる。１つの事例では、キャッシュセグメント（３１４、３１６、．．．３１８）の数は、２のべき乗、すなわち、１、２、４、８、１６、３２、．．．２ｎでもよい。特に、２セグメントから１６セグメントの間を含むセグメント化されたキャッシュメモリは、大多数の応用例で利用されることが予想される。ただし、セグメント化されたキャッシュメモリ３０２を、３、５、６、７．．．などのように２のべき乗以外のセグメント数に分割することもできる。
【００３９】
１つの実装では、キャッシュセグメント（３１４、３１６、．．．３１８）はそれぞれ同じサイズである。別の応用例では、キャッシュセグメント（３１４、３１６、．．．３１８）は、サイズが異なってもよい。１つの実装では、より小さなキャッシュセグメントを併合することで、より大きなキャッシュセグメントを作成できる。このようにして、たとえば、８キャッシュセグメントなど、２ｎのキャッシュセグメントがある場合、こうした最後の４キャッシュセグメントを併合してより大きなキャッシュセグメントを形成でき、全部で５個の独立したキャッシュセグメントを生成してもよい。キャッシュ管理ロジック３２０で分割を指定しない場合、全部のキャッシュメモリは１つのキャッシュセグメントとして扱われる（すなわち、キャッシュメモリ３０２はデフォルトとしてセグメント化されずに残る）。
【００４０】
１つの例では、キャッシュセグメントのサイズとして、読み出し可能な最小のＥＣＣブロックサイズ（たとえば、３２ＫＢすなわち１６個の２ＫＢセクター）を格納するのに十分なサイズを選択する必要がある。たとえば、２ＭＢのセグメント化されたキャッシュは最大６４ＥＣＣブロックを格納できる。このセグメント化されたキャッシュは、それぞれがキャッシュセグメント当たり４ＥＣＣブロック（これは６４個の２ＫＢセクターに相当する）を含む１６セグメントに分割できる。
【００４１】
１つの実装では、キャッシュ管理ロジック３２０は、キャッシュセグメント（３１４、３１６、．．．３１８）が特定の情報のタイプに特化しないようにセグメント化されたキャッシュメモリ３０２をセットアップしてもよい。換言すれば、読み出し動作の間に、指定された任意のキャッシュセグメント（３１４、３１６、．．．３１８）は記憶媒体３０６から取り出された任意のタイプの情報を受け取ることができる。前述の例について考察すると、記憶媒体３０６には、キャラクタや他のシーンオブジェクトを構成するための頂点情報やテクスチャ情報を格納する多くのファイル、ゲームの実行中にオーディオを再生するためのオーディオ情報セグメントを含む多くのファイル、ゲームの動きを制御するためのゲームエンジン情報を含む多くのファイルなどを含むゲーム情報が格納されている。任意のキャッシュセグメント（３１４、３１６、．．．３１８）にまず第１の種類のゲーム情報をフィルし、そしてフラッシュされた時点で第２の種類のゲーム情報をフィルしてもよい。
【００４２】
しかし、別の応用例では、キャッシュ管理ロジック３２０は、特定のタイプの情報を格納するために特定のキャッシュセグメント（３１４、３１６．．．３１８）を割り当てることもできる。より具体的には、キャッシュ管理ロジック３２０は、第１のタイプの情報を格納するために１つまたは複数のキャッシュセグメントを割り当て、第２のタイプの情報を格納するために１つまたは複数のキャッシュセグメントを割り当て、第３のタイプの情報を格納するために１つまたは複数のキャッシュセグメントを割り当てることができる（以下同様）。情報のタイプに当てられたキャッシュセグメントの集りごとに、「キャッシュセグメントグループ」を定義する（各キャッシュセグメントグループは１つまたは複数のキャッシュセグメントを含むことができる）。
【００４３】
図５のセグメント化されたキャッシュメモリ５０２の説明的な事例について考察する。このセグメント化されたキャッシュメモリ５０２には、キャッシュセグメント５０４、５０６、５０８などが含まれる。第１のキャッシュセグメントグループ５１０は、少なくともキャッシュセグメント５０４と５０６を含むように定義され、第２のキャッシュセグメントグループ５１２は第１のキャッシュセグメントグループ５０８のキャッシュセグメント（５０４、５０６、．．．）のいずれよりもサイズの大きいキャッシュセグメント５０８のみを含むように定義されている。
【００４４】
さまざまな応用例や技術環境には、さまざまなキャッシュセグメントのグループ化スキームを採用できる。ゲームプレイ環境に関連する１つの例示的なグループ化スキームを以下に示す。ここで、記憶媒体３０６はさまざまなタイプのゲーム情報を提供する、上で定義された複数のファイルを提供する。このコンテキストでは、キャッシュ管理ロジック３２０はキャッシュセグメントの第１のグループ５１０をストリーミングモードの情報転送を示す任意の情報の動作のみに当てることができる。キャッシュ管理ロジック３２０は、次に第２のグループ５１２をバルクモードの情報転送を示す任意の情報の動作のみに当てることができる。１つの例示的なゲーム環境では、ホストシステム３０４はストリーミングモードの情報転送を使用してオーディオ情報を読み出すことができる。この技術において、ドライブ機能３０８は一般に必要に応じて記憶媒体３０６からオーディオセグメントを取り出す。したがって、ドライブ機能３０８は、この情報をホストシステム３０４で読み出す前に第１のキャッシュセグメントグループ５１０に転送するよう設定できる。オーディオセグメントはゲームプレイ全体を通じて使用されるので、このモードの情報転送が望ましい。また、そうした大量のオーディオセグメントをゲーム機のシステムメモリ（図示せず）に事前に格納しておくのは非効率的である。このオーディオ情報は必要に応じて消費されるので、ドライブ機能３０８は一般にホストシステム３０４による消費速度よりはるかに高速で情報を取得できる。
【００４５】
これに対して、ホストシステム３０４は、特にゲームが最初に開始されるとき、ユーザがゲームレベルを切り替えるとき、またはユーザがそれ以外のゲームモードの劇的な変化を指示するときなどに、バルクモードの情報転送を使用して他の種類の情報を読み出すことができる。たとえば、ゲームが開始されるときにホストシステム３０４は記憶媒体３０６から大量のゲーム情報をシーク（ｓｅｅｋ）して取り出し、ゲーム機のシステムメモリ（図示せず）に配置する。こうした情報には、キャラクタを伴うシーンを構成するための頂点情報やテクスチャ情報、ゲームエンジン情報などを含めることができる。情報のバルク転送の一般的な目的は、この情報を記憶媒体３０６からドライブ機能３０８が供給するのと同等の速さで取り出し、次にゲーム機のシステムメモリ（図示せず）にその情報を格納することである。
【００４６】
以上のように、ストリーミングモードの情報転送では、バルクモードの情報転送とは大いに異なる取出しパラダイムが使用される。換言すれば、こうした２つの情報取出しモードにより、システム３００上の大きく異なる要求が処理される。ストリーミング転送モードとバルク転送モードに割り当てられた別々のキャッシュセグメントグループ（５１０、５１２）を使用すると、これらの別々の要求に対応するのに役立つ。したがって、ストリーミング転送とバルク転送の両方の転送動作が同時に実行される場合は（たとえばインターリーブ形）、パフォーマンスを向上できる。基準の枠組みでは（Ｆｏｒ  ｆｒａｍｅ  ｏｆ  ｒｅｆｅｒｅｎｃｅ）、図１と２で説明したアプローチを使用して、ストリーミング転送とバルク転送を組み合わせた転送動作が実行される場合に、セグメント化されていないキャッシュメモリ１０２は頻繁にフラッシュされリフィルされるので、その結果多くのキャッシュミスが発生し、最終的にパフォーマンスが低下する可能性がある。特に、従来の技術では、たとえば情報のバルク転送はストリーミングオーディオ情報の表現と干渉する危険がある。
【００４７】
キャッシュセグメントグループが特定の情報タイプに割り当てられる場合、ホストシステム３０４は読み出し要求で呼び出すキャッシュセグメントグループを識別した読み出し要求をドライブ機能３０８に送信することによって専用のキャッシュセグメントグループと対話するよう設定できる。この動作をここでは「ヒンティング（ｈｉｎｔｉｎｇ）」と呼ぶ。これは、どのキャッシュセグメントグループが読み出し要求に関係するかに関して、実質的にホストシステム３０４がドライブ機能３０８に通知するため（すなわち、ドライブ機能３０８に「ヒントを与える」ため）である。ホストシステム３０４は、対象となるキャッシュセグメントグループを識別した１つまたは複数のコマンドをドライブ機能３０８に送信することにより、この機能を実行できる。あるいは、ホストシステム３０４は、読み出し要求自体の中の任意の未使用のビットを使用してグループに固有の情報を伝えることもできる。さらに別の戦略を使用してこのグループの関係を伝えることもできる。いずれにせよ、キャッシュ管理ロジック３２０は、指定されたキャッシュセグメントグループから要求された情報を取り出すこと（キャッシュ内にある場合）、または記憶媒体３０６から直接その情報を取り出すこと（キャッシュメモリにない場合）により、この情報に応答できる。
【００４８】
要約すると、前述のシナリオは特定の情報タイプが配置されるキャッシュセグメントがない第１の事例と、すべてのキャッシュセグメントに特定の情報タイプが配置される第２の事例に関する。さらに、さまざまな組み合わせによる構成が可能である。第３の事例は、たとえばいくつかのキャッシュセグメントは特定の情報のタイプが配置されず、他のキャッシュセグメントは特定の情報タイプが配置される。
【００４９】
結局のところ、前述の複数の事例では、読み出し動作全体を通じてキャッシュセグメント（３１４、３１６．．．３１８）の静的な割り当てが想定される。静的な割り当てでは、ホストシステム３０４は、読み出し動作全体を通じて同じ数と同じサイズのキャッシュセグメントを利用する。しかし、キャッシュ管理ロジック３２０は、読み出し動作の過程でに検出されるさまざまな読み出しパターンに合わせて、読み出し動作中にキャッシュセグメント割り当てスキームを動的に変更することもできる。この機能はさまざまな方法で実装できる。１つの技術では、キャッシュ管理ロジック３２０は分析を実行し、実行中の読み出し動作によって示されたパターンを推定し、動作中に現在のパターンに合わせてセグメント化スキームを変更することができる。このキャッシュセグメント化の再評価は、定期的に実行してもよい。または、検出された変化が事前に指定されたしきい値を超えた場合にトリガーしてもよい。別の例では、キャッシュ管理ロジック３２０が読み出し動作中にキャッシュセグメント化スキームを変更する命令を受信できる。こうした命令は、ホストシステム３０４、または記憶媒体３０６自体から読み出した情報など、任意のソースから（たとえば、キャッシュセグメント化スキームを管理するコード化された情報の形式で）発生できる。
【００５０】
キャッシュセグメントをフィルする機能  
キャッシュセグメント（３１４、３１６、．．．３１８）が定義されると、さまざまな戦略を使用してキャッシュセグメント（３１４、３１６、．．．３１８）を記憶媒体３０６から取り出された情報でフィルできる。たとえば、フラットフィル（ｆｌａｔ  ｆｉｌｌｉｎｇ）技術では、キャッシュミスイベントの際にドライブ機能３０８は要求された情報を記憶媒体３０６から取り出す。ドライブ機能３０８はキャッシュセグメントの１つにこの情報を格納する。ドライブ機能３０８は、要求された情報の位置から始まる一連の連続するブロックの情報を、記憶媒体３０６から先読みして取り出すこともできる。次に、ドライブ機能３０８はキャッシュセグメントの終わりをヒットするまで、この追加された情報をキャッシュセグメントにフィルできる。このように先読みした情報は、ホストシステム３０４が以前に要求した情報に続く連続するブロックの情報を要求した場合にそのまま利用できる。
【００５１】
一方、単に先読みして一連の連続する情報ブロックを取り出す代わりに、ホストシステム３０４はアクティブに情報をプリフェッチしてキャッシュセグメントの残りの部分にフィルすることもできる。このプリフェッチ技術には、以前の読み出しの動作によって示されたパターンを推定するステップと、次にホストシステム３０４がどこから読み出す可能性が高いかを予測するステップを含めることができる。たとえば、ホストシステム３０４は、記憶媒体３０６に格納された直後の連続するブロックから読み出す可能性が高いことを特定できる。しかし、単純な先読み動作の場合とは異なり、プリフェッチ分析はホストシステム３０４が以前の読み出し要求に関連して連続していないブロックから読み出す可能性が高いことを特定できる。プリフェッチ技術では、ドライブ機能３０８に対して、推定した読み出しパターンに基づいて次にどこから読み出すかを指定した命令（たとえば、ｐｒｅ−ｆｅｔｃｈコマンド）を送信できる。このようにして、キャッシュセグメントに対して近い将来にホストシステム３０４から要求される可能性の高い情報によるインテリジェントなフィルが実行される。
【００５２】
全体のフラッシュとリフィルの方法に加えて他の技術を使用できる。図６にそうした代替技術の１つを示す。この技術では、キャッシュメモリ６０２は循環形のフィル技術を使用してリフィルされる。循環形のフィル技術では、ヘッドポインタ（ｈｅａｄ  ｐｏｉｎｔｅｒ）６０４とテールポインタ６０６（ｔａｉｌ  ｐｏｉｎｔｅｒ）を使用する。要するに、循環形のフィル技術では、キャッシュヒットが発生した時点で、新しい情報をキャッシュメモリに連続的にフィルする。この新しい情報は、ループ６０８で定義される循環形（つまりラップアラウンド形）でキャッシュメモリ６０２に追加される。換言すれば、キャッシュメモリ６０２の終わりが情報ブロック番号５００に対応すると仮定した場合に、このポイントの後の新しい情報をキャッシュメモリ６０２に追加するときに、キャッシュ管理ロジック３２０はたとえば情報ブロック番号５０１から始まる新しい情報をキャッシュメモリ６０２の先頭に追加できる。
【００５３】
循環形のフィル技術の動作について、以下に詳説する。キャッシュヒットによってキャッシュメモリ６０２から情報を取り出す場合に、キャッシュ管理ロジック３２０はヘッドポインタ６０４をキャッシュメモリの取出し部分の終わり（すなわち、取り出され、ホストシステム３０４に送信されたキャッシュメモリの終わりの部分）に移動するよう設定されている。こうしてヘッドポインタ６０４を先に進めると、キャッシュメモリ６０２すなわちテールポインタ６０６の後ろに空き記憶領域が作成される。特に、このメモリ領域は「空き」である、なぜならホストシステム３０４が再びそれを読み出すことはないと予想されるからである。次に、キャッシュ管理ロジック３２０は、ドライブ機能３０８に対して、プリフェッチ動作を実行して新しく作成された空きキャッシュメモリ領域にフィルするよう指示する。プリフェッチ動作は上記と同じ考えに基づくことができる。すなわち、ホストシステム３０４が将来要求する可能性の高い情報ブロックはどれかに関する決定（この決定は、読み出し動作によって示された前の読み出しパターンの推定に基づく）に基づく。循環形のフィル動作は、システム３００が他の動作をしていないとき、たとえばドライブ機能３０８がそれ以外にアイドル状態のときに実行できる。循環形のフィル技術の結果として、キャッシュメモリ６０２の終わりに到達した時点で全体をフラッシュし、リフィルするという先行技術とは対照的に、新しい情報がキャッシュメモリ６０２に連続的なまとまりで追加される。したがって、循環形のフィル技術は、前述のフラットフラッシュおよびフィル技術より高いパフォーマンスを提供する可能性がある。
【００５４】
情報はヘッダポインタ６０４のすぐ後ろでなく、テールポインタ６０６の後ろに追加される。これは、ホストシステム３０４がヘッドポインタ６０４のすぐ後ろのキャッシュメモリ６０２の部分６１０から情報を読み出したいかもしれないという多少の可能性があるためである。たとえば、読み出し情報の中にエラーを検出した時点で、システム３００はキャッシュメモリ６０２から情報をシークして再読み出しする可能性がある。最近読み出された情報を部分６１０に保存することにより、システム３００は再びそれが必要な場合に、ホストシステム３０４がキャッシュメモリ６０２から、そのような情報を正確に取得できることを保証する。
【００５５】
前述の循環形のフィル技術は、セグメント化されていないキャッシュメモリとセグメント化されたキャッシュメモリを含む任意のキャッシュメモリに適用できる。セグメント化されたキャッシュメモリの場合、循環形のフィル技術はそれぞれのキャッシュセグメントに適用でき、１つのキャッシュセグメントに関する循環形のフィル動作は、別のキャッシュセグメントに関する循環形のフィル動作とは無関係である。また、セグメント化されたキャッシュメモリの応用例において、循環形のフィル技術を一部のキャッシュセグメントに適用し、他のキャッシュセグメントには適用しないこともできる（他のキャッシュセグメントには、フラットフラッシュやリフィル技術などの他の種類のフィル技術を使用してもよい）。
【００５６】
キャッシュ管理ロジック３２０は、ポインタテーブル３２２を使用して前述の循環形のフィル技術を実行できる。以下に示す表は例示的なポインタテーブル３２２である。
【００５７】
【表１】
2005322215.tif 000003
【００５８】
ポインタテーブル３２２の各列は、図３に示すさまざまなキャッシュセグメント（３１４、３１６、．．．３１８）に対応する。すなわち、第１列はキャッシュセグメント３１４のポインタ情報を提供し、第２列はキャッシュセグメント３１６のポインタ情報を提供し、さらに第３列はキャッシュセグメント３１８のポインタ情報を提供する。総計２ｎ個のキャッシュセグメントがあることが想定されるが、そうである必要はない。与えられた任意の列で、第１行はキャッシュセグメントのロジックブロックアドレス（ＬＢＡ）を表す。これは本質的にキャッシュセグメントの開始位置を識別する。第２行は、キャッシュセグメントで使用するヘッドポインタの位置を識別する（たとえば、図６のヘッドポインタ６０４）。第３行は、キャッシュセグメントで使用するテールポインタの位置を識別する（たとえば、図６のテールポインタ６０６）。第４行はキャッシュセグメントの長さを表す。最後の行は、キャッシュセグメントが最後に使用されたのはいつか（ｗｈｅｎ  ｔｈｅ  ｃａｃｈｅ  ｓｅｇｍｅｎｔ  ｗａｓ  ｌｅａｓｔ  ｒｅｃｅｎｔｌｙ  ｕｓｅｄ）または最近どの程度の頻度で使用されているかを表す記録を提供する（以下の節でさらに詳しく説明する）、これはカウンタ情報または他の種類のアカウント情報を使用して伝えることができる。
【００５９】
キャッシュセグメントから情報をフラッシュする機能  
キャッシュミス（ホストシステム３０４から要求された情報がセグメント化されたキャッシュメモリ３０２内で見つからない場合に発生する）が発生した時点で、ホストシステム３０４は記憶媒体３０６から情報を読み出して次に進む。この情報は、記憶媒体３０６からプリフェッチされる追加の情報を伴って、キャッシュセグメント（３１４、３１６、．．．３１８）の１つに格納される。この機能を実行するには、キャッシュ管理ロジック３２０は新しい情報を受け取るためにどのキャッシュセグメントをフラッシュするかを決定する必要がある。この節では、どのキャッシュセグメントをフラッシュするかを決定する例示的な技術について説明する。このような技術は追い出しアルゴリズムと呼ばれる。
【００６０】
キャッシュ管理ロジック３２０は、１つまたは複数の異なる追い出しアルゴリズムを使用して、どのキャッシュセグメントが新しい情報を受け取るかを決定する。１つのアルゴリズムでは、キャッシュ管理ロジック３２０は、そのキャッシュセグメントが最後に使用されたのはいつかを記録する各キャッシュセグメント（３１４、３１６、．．．３１８）の利用状況に関するストアを保持できる（ホストシステム３０４が最後にキャッシュセグメントを読み出したのはいつかに対応する）。特に、前述のように、ポインタテーブル３２２にはこの情報を格納できる。たとえば、ポインタテーブル３２２には、各キャッシュセグメントのカウンタを含めることができる。特定のキャッシュセグメントにキャッシュヒットが発生すると、それぞれのカウンタはゼロになり、他のキャッシュセグメントに関連するカウンタは増分される。したがって、カウントの値が大きい場合は、キャッシュセグメントが比較的長い時間使用されていないことになる。キャッシュ管理ロジック３２０は、キャッシュセグメント（３１４、３１６、．．．３１８）の１つをフラッシュする必要がある場合に、こうした利用状況の記憶にアクセスして最も長い間使用されていない（ＬＲＵ：ｌｅａｓｔ  ｒｅｃｅｎｔｌｙ  ｕｓｅｄ）キャッシュセグメントを決定できる。キャッシュ管理ロジック３２０は、ここで最も長い間使用されていないキャッシュセグメントのフラッシュを実行し、さらに前述の方法で記憶媒体３０６から取り出された新しい情報でそのキャッシュセグメントをリフィルする。
【００６１】
別の技術では、キャッシュ管理ロジック３２０は、最も使用頻度の低い（ＬＦＵ）キャッシュセグメントを識別することにより、どのキャッシュセグメント（３１４、３１６、．．．３１８）をフラッシュするかを決定する。次に、最も使用頻度の低いキャッシュセグメントをフラッシュし、前述のように新しい情報でそのキャッシュセグメントをリフィルする。最も使用頻度の低いキャッシュセグメント（３１４、３１６、．．．３１８）は、最も長い間使用されていないキャッシュセグメント（３１４、３１６、．．．３１８）と必ずしも一致するとは限らない。
【００６２】
さらに他の追い出しアルゴリズムを使用してキャッシュ管理ロジック３２０の動作を識別することもできる。
【００６３】
１つの実装では、キャッシュ管理ロジック３２０はセグメント化されたキャッシュメモリ３０２のすべてのキャッシュセグメント（３１４、３１６、．．．３１８）に対して同じ追い出しアルゴリズムを適用する。別の実装では、キャッシュ管理ロジック３２０は異なるキャッシュセグメント（３１４、３１６、．．．３１８）のそれぞれに対して異なる追い出しアルゴリズムを適用してもよい。
【００６４】
Ｂ．  例示的な動作方法  
図７〜９はＡ節で説明したいくつかの機能を流れ図形式に要約している。一般に解説しやすいように、特定の動作は特定の順序で実行される個別のステップを構成するように説明している。こうした実装は例示的であり、本発明を限定するものではない。ここで説明する特定のステップは、グループに統合し、１つの動作として実行してもよい。また、特定のステップを本開示で説明する例とは異なる順序で実行してもよい。
【００６５】
キャッシュヒンティング手順  
図７は、読み出し要求のターゲットがどのキャッシュセグメントグループかをホストシステム３０４からキャッシュ関連機能３１２に通知できる例示的な手順７００を示している。これを、以上の説明では「ヒンティング」と呼んでいる。たとえば、いったん図５に戻ってセグメント化されたキャッシュメモリ５０２を参照されたい。このセグメント化されたキャッシュメモリ５０２には、ストリーミングモードの情報転送を動作する第１のキャッシュセグメントグループ５１０と、バルク転送モードの情報転送を動作する第２のキャッシュセグメントグループ５１２とが含まれる。図７に示すヒンティング手順７００によって、特定の読み出し要求のターゲットがどのキャッシュセグメントグループ（５１０、５１２）かを、ホストシステム３０４からキャッシュ管理ロジック３２０に通知できる。キャッシュ管理ロジック３２０は、要求された情報に指定されたキャッシュセグメントグループからアクセスすることによって応答する（指定されたグループに該当する情報が存在する場合）。
【００６６】
より具体的には、ステップ７０２では読み出し要求によって呼び出された情報のタイプを判定する必要がある（該当する場合）。この動作はさまざまな技術を使用して実行できる。１つの技術では、キャッシュ管理ロジック３２０はホストシステム３０４により送られた、関連するキャッシュグループを識別する特別の命令を読むことができる。別の技術では、キャッシュ管理ロジック３２０は、読み出し要求そのものの中に埋め込まれた特別のコード、たとえば、従来の読み出し要求命令の中で１つまたは複数の未使用ビットを利用して表現された専用のコードを読むこともできる。さらに別の技術を使用して、読み出し要求のターゲットキャッシュグループを決定することもできる。
【００６７】
ステップ７０４では、要求された情報を指定されたキャッシュセグメントグループから取り出す必要がある（識別されたキャッシュセグメントグループに該当する情報が含まれる場合）。指定されたキャッシュセグメントグループに該当する情報が含まれない場合に、キャッシュ管理ロジック３２０はドライブメカニズム３０８に記憶媒体３０６から情報を取り出すように指示できる。
【００６８】
ステップ７０６は、ホストシステム３０４がこのプロセスを終了するまで、前述の手順７００が何度も繰り返される様子を示している。
【００６９】
循環形のキャッシュフィル手順  
図８は、ラップアラウンド技術を使用してキャッシュメモリをフィルするための例示的な循環形のフィル手順８００を示している。以下の説明は、図６に示すキャッシュメモリ６０２に言及する。これにはヘッドポインタ６０４とテールポインタ６０６が示されている。しかし、より一般的に、図８に示す循環形のフィル手順８００はセグメント化されていないキャッシュメモリとセグメント化されたキャッシュメモリのいずれにも適用できる。後者の場合は、それぞれのキャッシュセグメントのフィルに循環形のフィル手順８００を使用できる。
【００７０】
ステップ８０２で、キャッシュ管理ロジック３２０はまずホストシステム３０４から読み出し要求を受け取る。ステップ８０４で、キャッシュ管理ロジック３２０は、要求された情報がキャッシュメモリ６０２内にあるかどうかを判定する。存在する場合は、ステップ８０６でキャッシュ管理ロジック３２０はキャッシュメモリ６０２から情報を取得できるように調整する。つまり、ステップ８０６でキャッシュ管理ロジック３２０は直前に読み出された情報の部分の終わりにヘッドポインタ６０４を移動する。この動作によって、キャッシュメモリ６０２内に新しい情報を格納するための新しい領域が解放される。
【００７１】
ステップ８０８で、キャッシュ管理ロジック３２０はドライブ機能３０８に対して記憶媒体３０６から新しい情報をプリフェッチするように指示する。ここで、キャッシュメモリ６０２内の解放された領域に新しい情報を挿入する。この動作は、他の動作の妨げにならないように、システム３００がアイドル状態のときに実行できる。ポインタ（６０４、６０６）がキャッシュメモリ６０２の終わりに到達すると、キャッシュメモリ６０２の先頭に戻る。前述のように、キャッシュ管理ロジック３２０はドライブ機能３０８と共に、連続的なキャッシュヒットが発生する場合に連続する情報を記憶媒体３０６からまとめて読み出すことができる。情報は、一般に通常ホストシステム３０４から要求される前に読み出される。循環形のフィル技術によって、手順８００では、図２の手順２００に示されるように全キャッシュメモリ１０２がフラッシュされ、キャッシュメモリの終わりに到達するとリフィルされるといった劇的な変化（ｓｐｉｋｅｓ）は発生しない。
【００７２】
最後に、情報がキャッシュメモリにない場合は（ステップ８０４で判定する）、ステップ８１０でこの情報を記憶媒体３０６から取り出すようキャッシュ管理ロジック３２０に指示する。ステップ８１２で、キャッシュ管理ロジック３２０はキャッシュメモリ６０２をフラッシュし、取り出された情報と記憶媒体３０６からプリフェッチする追加の先取り情報とでメモリをリフィルする。
【００７３】
ステップ８１４は、ホストシステム３０４が手順８００を終了するまで前述の手順８００が繰り返される様子を示している。
【００７４】
キャッシュセグメントの追い出し手順  
図９は、キャッシュミスが発生した時点でどのキャッシュセグメントをフラッシュし、リフィルするかを決定する例示的な手順を示している。この図について説明する際には、図３の一般的なシステム３００との相互参照を行う。
【００７５】
ステップ９０２で、キャッシュ管理ロジック８０２はまずホストシステム３０４からの読み出し要求を受け取る。ステップ９０４で、キャッシュ管理ロジック８０２は要求された情報がセグメント化されたキャッシュメモリ３０２のキャッシュセグメント（３１４、３１６、．．．３１８）の１つに格納されているかどうかを判定する。ステップ９０６で、情報がキャッシュセグメント（３１４、３１６、．．．３１８）のいずれかに存在する場合に、キャッシュ管理ロジック３２０はその場所から情報を取り出す。
【００７６】
ステップ９０８では、要求された情報がセグメント化されたキャッシュメモリ３０２にないことが判定された場合に、キャッシュ管理ロジック３２０とドライブ機能３０８は記憶媒体３０６からこの情報を取得できるように調整する。
【００７７】
ステップ９１０では、キャッシュ管理ロジック３２０はどのキャッシュセグメントをフラッシュして新しく取り出された情報（および記憶媒体３０６から取り出された追加のプリフェッチ情報）を受け取るかを決定する。１つの技術により、キャッシュ管理ロジック３２０はフラッシュするキャッシュセグメントとして最も長い間使用されていない（ＬＲＵ）キャッシュセグメント（３１４、３１６、．．．３１８）を識別してもよい。別の技術では、キャッシュ管理ロジック３２０はフラッシュされるべきキャッシュセグメントとして、最も使用頻度の低い（ＬＦＵ）セグメント（３１４、３１６、．．．３１８）を識別してもよい。それ以外の追い出しアルゴリズムを使用してもよい。どの場合も、キャッシュ管理ロジック３２０はポインタテーブル３２２からログ情報を取り出し、この情報を使用してこうした決定を下すことができる。そのような情報には、それぞれのキャッシュセグメント（３１４、３１６、．．．３１８）のＬＲＵまたはＬＦＵのステータスを表すカウンタ情報が含まれてよい。
【００７８】
ステップ９１２で、キャッシュ管理ロジック３２０は指定されたキャッシュセグメントをフラッシュし、そのセグメントを新しい情報でリフィルする。
【００７９】
ステップ９１４は、一般にホストシステム３０４が手順９００を終了するまで手順９００が繰り返され、ホストシステム３０４からの連続する読み出し要求が処理される様子を示している。
【００８０】
最後に、システム３００の個々の機能について説明しやすいように別々に説明した。これらの機能は、実際に別々の実装が可能である。ただし、１つの応用例として、こうした機能の任意の組み合わせによる実装も可能である。１つの事例では、前述の機能のすべてを１つの応用例に組み込むこともできる。
【００８１】
Ｃ．  例示的な適用  
前述のように、図３に示す機能はさまざまな技術環境に適用できる。本節では、こうした２つの例示的な技術環境、すなわち汎用コンピュータ技術環境とゲーム機技術環境について説明する。
【００８２】
例示的なコンピュータ環境  
図１０は、図３に示すシステム３００を実装できる例示的な汎用コンピュータ環境１０００を示している。つまり、要素のグループ１００２は、図３に示すシステム３００を実装できる例示的な機能を示している。この機能群は、ＲＡＭメモリ１００６に格納されたプログラムとして実装されたホストプログラム１００４、データメディアインターフェイス（ｄａｔａ  ｍｅｄｉａ  ｉｎｔｅｒｆａｃｅ）１００８、光ドライブメカニズム１０１０、および光記憶媒体１０１２を一般的に表している。前述のさまざまなキャッシュ管理機能は、要素グループ１００２に示す要素の任意の１つまたは任意の組み合わせとしても、あるいは要素グループ１００２に含まれていない他の要素の全体または一部としても実装できる。全体として環境１０００について、以下で詳細に説明する。
【００８３】
コンピューティング環境１０００は、汎用コンピュータ１０１４と表示装置１０１６を含む。ただし、コンピューティング環境１０００は、その他のコンピューティング機器を含むことができる。たとえば、図示されていないが、コンピューティング環境１０００は、ハンドヘルドデバイスやラップトップデバイス、セットトップボックス、メインフレームコンピュータなどを含むことができる。例示的なコンピュータ１０１４は、１つまたは複数のプロセッサまたはプロセッシングユニット１０１６、システムメモリ１０１８、およびバス１０２０を備えている。バス１０２０はさまざまなシステムコンポーネント同士を接続する。たとえば、バス１０２０はプロセッサ１０１６をシステムメモリ１０１８に接続する。バス１０２０は、任意の種類のバス構造の１つまたは複数の組み合わせで実装できる。
【００８４】
コンピュータ１０１４は、さまざまなコンピュータ可読媒体を備えていてもよく、それはそれぞれ取り外し可能または取り外し不可能な揮発性および不揮発性のさまざまな媒体を含む。たとえば、システムメモリ１０１８は、ランダムアクセスメモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）１００６などの揮発性メモリ、および読み取り専用メモリ（ＲＯＭ：ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）１０２２などの不揮発性メモリの形をとるコンピュータ可読媒体を備えている。ＲＯＭ  １０２２には、起動時などにコンピュータ１０１４内の要素間の情報転送を支援する基本ルーチンを含む基本入出力システム（ＢＩＯＳ：ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）１０２４が格納されている。ＲＡＭ  １００６には、通常はデータおよび／またはプログラムモジュールがプロセシングユニット１０１６から直ちにアクセスできる形で格納されている。
【００８５】
その他のコンピュータ記憶媒体には、取り外し不可能な不揮発性の磁気媒体（図示せず）の読み出しおよび書き込みを行うハードディスクドライブ１０２６、取り外し可能な不揮発性の磁気ディスク１０３０（たとえば「フロッピー（登録商標）ディスク」）の読み出しおよび書き込みを行う磁気ディスクドライブ１０２８、ＣＤ  ＲＯＭ、ＤＶＤ−ＲＯＭ、あるいは他の光媒体のような取り外し可能な不揮発性の光ディスク１０１２の読み出しおよび／または書き込みを行う光ディスクドライブ１０１０が含まれる。ハードディスクドライブ１０２６、磁気ディスクドライブ１０２８、および光ディスクドライブ１０１０は、それぞれ１つまたは複数のデータメディアインターフェイス１００８を介してシステムバス１０２０に接続する。
【００８６】
一般に、上に識別したコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュールなど、パーソナルコンピュータ１０１４のデータを保存する不揮発性ストレージとして利用できる。たとえば、こうした可読媒体にはオペレーティングシステム１０３２、アプリケーションプログラム（たとえば、任意のホスティングプログラム１００４）、その他のプログラムモジュール１０３４、およびプログラムデータ１０３６を格納できる。
【００８７】
コンピューティング環境１０００には、さまざまな入力装置を配置してもよい。たとえば、コンピュータ環境１０００はコマンドや情報をコンピュータ１０１４に入力するためのキーボード１０３８とポインティングデバイス１０４０（たとえば「マウス」）を備えている。入力／出力インターフェイス１０４２は、入力装置をプロセシングユニット１０１６に接続する。より一般的には、入力装置はパラレルポート、シリアルポート、ゲームポート、ＵＳＢ（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）ポートなどのような任意のインターフェイスおよびバス構造を介してコンピュータ１０１４に接続できる。
【００８８】
コンピューティング環境１０００には表示装置１０１６も含まれる。ビデオアダプタ１０４４は表示装置１０１６をバス１０２０に接続する。コンピュータ環境１０００は、表示装置１０１６の他に、スピーカー（図示せず）、プリンタ（図示せず）などのようなその他の出力周辺装置を備えていてもよい。
【００８９】
コンピュータ１０１４は、リモートコンピューティングデバイス１０４６のような１台または複数台のリモートコンピュータへの論理接続を使用してネットワーク環境で動作する。コンピューティング環境１０４６は、汎用パーソナルコンピュータ、ポータブルコンピュータ、サーバなどを含む任意の種類のコンピュータ機器を備えていてもよい。リモートコンピューティングデバイス１０４６は、コンピュータ１０１４に関して上述したすべての機能またはその部分集合を備えていてもよい。
【００９０】
ＷＡＮ（たとえばインターネット）、ＬＡＮなどのような任意の種類のネットワーク１０４８を使用してコンピュータ１０１４をリモートコンピューティングデバイス１０４６に接続できる。コンピュータ１０１４はネットワークインターフェイス１０５０を介してネットワーク１０４８に接続する。ネットワークインターフェイスには、ブロードバンド接続、モデム接続、ＤＳＬ接続、またはその他の接続の戦略を利用できる。図示しないが、コンピュータ環境１０００はコンピュータ１０１４をリモートコンピューティングデバイス１０４６に接続する無線通信機能（変調された無線信号（ｍｏｄｕｌａｔｅｄ  ｒａｄｉｏ  ｓｉｇｎａｌｓ）、変調された赤外線信号（ｍｏｄｕｌａｔｅｄ  ｉｎｆｒａｒｅｄ  ｓｉｇｎａｌｓ）など）を提供してもよい。
【００９１】
例示的なゲーム機環境  
図１１は、図３に示すシステム３００を実装できる例示的なゲーム機環境１１００を示している。つまり、要素のグループ１１０２は、図３に示すシステム３００を実装できる例示的な機能を示している。この機能群は、ＲＡＭメモリ１１０６に格納されたホストプログラムを実装できる中央プロセシングユニットモジュール１００４とグラフィカルプロセシングユニットモジュール１１０８の組み合わせ、データメディアインターフェイス（ｄａｔａ  ｍｅｄｉａ  ｉｎｔｅｒｆａｃｅ）１１１０、光ドライブメカニズム１１１２、および光記憶媒体１１１４を一般的に表している。前述のさまざまなキャッシュ管理機能は、要素グループ１１０２に示す要素の任意の１つまたは任意の組み合わせとしても、あるいは要素グループ１１０２に含まれていない他の要素の全体または一部としても実装できる。全体としての環境１１００について、以下で詳細に説明する。
【００９２】
ゲーム機環境１１００では、コンピュータプロセシングユニットモジュール１１０４とグラフィカルプロセシングユニットモジュール１１０８が総括的なデータ処理を担当する。中央プロセシングユニットモジュール１１０４は、ゲームの全般的な流れを管理するなどのハイエンドの制御タスクを実行する。中央プロセシングユニットモジュール１１０４は、グラフィックスプロセシングユニットモジュール１１０８を使用して低レベルのグラフィックスレンダリングタスクを行う。グラフィックスプロセシングユニットモジュール１１０８は、従来のグラフィックスパイプラインを使用して、たとえばビデオエンコーダ１１１６を介して頂点情報を３次元ゲームシーン（ｇａｍｅ  ｓｃｅｎｅｓ）に変換し、表示装置（テレビモニターなど）に出力できる。中央プロセシングユニットモジュール１１０４とグラフィックスプロセシングユニットモジュール１１０８は、統合メモリアーキテクチャ（ＵＭＡ：ｕｎｉｆｉｅｄ  ｍｅｍｏｒｙ  ａｒｃｈｉｔｅｃｔｕｒｅ）技術を使用してシステムＲＡＭメモリ１１０６から抽出できる。
【００９３】
前述のプロセシングモジュール（１１０４、１１０８）は、マルチＩ／０モジュール１１１０を介して複数の入力および出力ソースと対話する。より具体的には、Ｉ／Ｏモジュール１１１０は、ＵＳＢ（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）インターフェイス１１２２を介して光ディスクドライブ１１１２、フラッシュメモリデバイス１１１８、ネットワークインターフェイス１１２０、およびさまざまなゲームコントローラに接続できる。
【００９４】
以上の２つの応用例（すなわち汎用コンピュータとゲーム機）は例示的なものにすぎない。したがって、図３に示す機能は他のさまざまな環境に適用できる。
【００９５】
終わりに、本開示では選択可能な多くの実施例（たとえば事例Ｘまたは事例Ｙ）を示している。さらに、本開示内で選択可能な実施例の（たとえばＸまたは事例Ｙ）の組み合わせによる１つの実装について明確に言及していない場合でも、本開示にはこうした組み合わせの事例が含まれる。
【００９６】
より一般的には、本発明について構造上の機能および／または方法動作に特有の言語で説明したが、前述の請求項で定義される本発明が必ずしも前述の特定の機能や動作に限定されないことを理解されたい。ただし、特定の機能や動作は、請求される本発明の例示的な実施形態として開示されている。
【図面の簡単な説明】
【００９７】
【図１】従来のキャッシュメモリを示す図である。
【図２】図１に示すキャッシュメモリを使用して記憶媒体から情報を読み出す従来の手順を示す図である。
【図３】セグメント化されたキャッシュメモリを使用して記憶媒体から情報を読み出す例示的なシステムを示す図である。
【図４】セグメント化されたキャッシュメモリと記憶媒体の内容との例示的な対応関係を示す図である。
【図５】２つのキャッシュセグメントグループ、つまりストリーミング転送タイプの情報取得を行う第１のグループとバルク転送タイプの情報取得を行う第２のグループへのキャッシュセグメントの割り当てを示す図である。
【図６】折り返し循環形（ｗｒａｐ−ａｒｏｕｎｄ  ｃｉｒｃｕｌａｒ  ｍａｎｎｅｒ）でキャッシュメモリに情報を格納するための例示的な戦略を示す図である。
【図７】セグメント化されたキャッシュメモリから情報を取り出すためのヒントを使用する例示的な手順を示す図である。
【図８】ラップアラウンド循環形（ｗｒａｐ−ａｒｏｕｎｄ  ｃｉｒｃｕｌａｒ  ｍａｎｎｅｒ）でキャッシュメモリに情報を格納するための例示的な手順を示す図である。
【図９】セグメント化されたキャッシュメモリから情報を読み出し、キャッシュミスが発生した場合はセグメント化されたキャッシュメモリから情報を追い出す例示的な手順を示す図である。
【図１０】図３に示すセグメント化されたキャッシュメモリの汎用コンピュータ環境への例示的な適用を示す図である。
【図１１】図３に示すセグメント化されたキャッシュメモリのゲーム機環境への例示的な適用を示す図である。
【符号の説明】
【００９８】
１０００  例示的な汎用コンピュータ環境
１００４  ホストプログラム
１００８  データメディアインターフェイス
１０１４  コンピュータ
１０１８  システムメモリ
１０２０  バス
１０３２  オペレーティングシステム
１０３４  その他のプログラムモジュール
１０３６  プログラムデータ
１０３８  キーボード
１０４２  キーボード／マウスインターフェイス
１０４４  ビデオアダプタ
１０４８  ネットワーク
１０５０  ネットワークインターフェイス
１１００  例示的なゲーム機環境
１００４  中央プロセシングユニットモジュール
１１０６  システムメモリ（ＲＡＭメモリ）
１１０８  グラフィカルプロセシングユニットモジュール
１１１０  マルチＩ／０モジュール
１１１２  ドライブ
１１１６  ビデオエンコーダ
１１１８  フラッシュＲＯＭ
１１２０  ネットワークインターフェイス
【図１】
2005322215.tif 000004
【図２】
2005322215.tif 000005
【図３】
2005322215.tif 000006
【図４】
2005322215.tif 000007
【図５】
2005322215.tif 000008
【図６】
2005322215.tif 000009
【図７】
2005322215.tif 000010
【図８】
2005322215.tif 000011
【図９】
2005322215.tif 000012
【図１０】
2005322215.tif 000013
【図１１】
2005322215.tif 000014
【外国語明細書】
2005322215000001.pdf