(57)【特許請求の範囲】
【請求項１】
関連するキャッシュを有するプロセッサにおいて、情報のアイテムを処理するための要求を受け取るステップと、
前記アイテムがキャッシュに記憶される場合、該キャッシュから要求された前記アイテムを読み出すステップと、
前記アイテムが前記キャッシュ内に記憶されていない場合、他のメモリから要求されたアイテムを読み出すステップと、
前記アイテムが所定の期間内に前もって要求されない場合、前記アイテムをキャッシュ内に記憶することなく前記アイテムを処理するステップと、
前記アイテムが所定の期間内に前もって要求されかつ前記前もって要求された時間がキャッシュ内に記憶されたアイテムのセット内の各アイテムに対する最新の要求よりも早い場合、前記アイテムを前記キャッシュ内に記憶することなく前記アイテムを処理するステップと、
前記アイテムが所定の期間内に前もって要求されかつ前記前もって要求された時間が前記キャッシュ内に記憶されたアイテムのセット内の少なくとも１つのアイテムに対する最新の要求よりも遅い場合、前記アイテムを処理しかつ前記アイテムを前記キャッシュ内に記憶するステップと
を含んでなる方法。
【請求項２】
クライアント・デバイスからの前記要求がサーバによってネットワーク上で受信され、前記アイテムを処理する前記要求が要求されたアイテムを前記クライアント・デバイスに送信するステップを含む請求項１に記載の方法。
【請求項３】
前記アイテムが、前記クライアント・デバイスにおいて表現されるオーディオ・データ又は画像データを含む請求項２に記載の方法。
【請求項４】
前記アイテムがファイルを含む請求項３に記載の方法。
【請求項５】
前記アイテムがファイルの一部を含む請求項４に記載の方法。
【請求項６】
削除されるアイテムに対する最後の要求がセット内の任意の他のアイテムに対する最後の要求よりも前である場合、前記アイテムのセットからアイテムを削除するステップをさらに含む請求項１に記載の方法。
【請求項７】
前記アイテムが、要求されたアイテムを前記キャッシュ内に記憶する前に削除される請求項６に記載の方法。
【請求項８】
前記要求されたアイテムの大きさが、前記キャッシュの大きさからセット内のアイテムの結合された大きさを減じた大きさを超える場合には、前記アイテムが削除される請求項７に記載の方法。
【請求項９】
前記アイテムがコンピュータ命令を含み、前記アイテムを処理するための要求が前記命令を処理することを含む請求項１に記載の方法。
【請求項１０】
前記アイテムがコンテンツ・ファイルを含み、前記アイテムを処理するための要求がコンテンツをユーザに送ることを含む請求項１に記載の方法。
【請求項１１】
前記キャッシュ内に記憶されたアイテムのセットが前記キャッシュ内に記憶された全てのアイテムを含む請求項１に記載の方法。
【請求項１２】
電子的に記憶された情報である、第１のメモリ内に記憶された第１のアイテムに対する現在の要求を受け取るステップと、
前記第１のアイテムが第２のメモリにも記憶される場合、前記第２のメモリから前記第１のアイテムを提供するステップと、
前記第１のアイテムが前記第２のメモリに記憶されていない場合、前記第１のアイテムを前記第１のメモリから提供するステップと、
前記第１のアイテムが所定の期間内に前もって要求されていたかどうかを、プロセッサを用いて判断するステップと、
前記第１のアイテムが前もって要求されていると判断された場合、前記第１のアイテムに関連付けられた、前記第１のアイテムに対する現在の要求と前記第１のアイテムに対する以前の要求との間の継続時間である第１の継続時間を、プロセッサを用いて確認するステップと、
前記第１のアイテムに対する現在の要求と前記第２のアイテムに対する最新の要求との間の継続時間であり、前記第２のメモリ内に記憶され前もって要求された第２のアイテムのセットの各アイテムに対する第２の継続時間を、プロセッサを用いて確認するステップと、
前記第１のアイテムが前もって要求され、かつ前記第１の継続時間が前記第２の継続時間の少なくとも１つよりも小さい場合は、前記第１のアイテムを前記第２のメモリ内に記憶するステップと
を含んでなる方法。
【請求項１３】
前記第１のアイテムを別の基準に基づいて前記第２のメモリに記憶するステップをさらに含む請求項１２に記載の方法。
【請求項１４】
前記別の基準が前記第１のアイテムの知名度を含む請求項１３に記載の方法。
【請求項１５】
前記アイテムの位置を参照するアイテムを要求するエンティティを提供することによって、前記第１のアイテムを提供するステップをさらに含む請求項１２に記載の方法。
【請求項１６】
前記アイテムのコピーを有するアイテムを要求するエンティティを提供することによって、前記第１のアイテムを提供するステップをさらに含む請求項１２に記載の方法。
【請求項１７】
電子的に記憶されている情報の第１のアイテムに対する要求を受け取るステップと、
前記第１のアイテムが所定の期間内に前もって要求されていない場合、前記第１のアイテムを第２のメモリ内に記憶せずに、前記第１のアイテムを第１のメモリから提供するステップと、
前記第２のメモリが複数の他のアイテムも記憶し前記他のアイテムの各々が少なくとも２回前もって要求されたことがある状態で、前記第１のアイテムが前記第２のメモリ内に記憶されている場合、前記第１のアイテムを前記第２のメモリから提供するステップと、
前記第１のアイテムが前もって要求されていると判断される場合、前記第１のアイテムに関連付けられた、前記第１のアイテムに対する以前の要求の間の継続時間に基づく第１の値を、プロセッサを用いて確認するステップと、
前記第２の値が前記第１のアイテムに対する現在の要求と前記第２のアイテムに対する最新の要求との間の継続時間に基づく値である場合に、前記第２のメモリ内に記憶され前もって要求された前記第２のアイテムのセットの各アイテムに関連付けられた第２の値を、プロセッサを用いて確認するステップと、
前記第１のアイテムが所定の期間内に前もって要求される場合、前記第１の値の前記第２の値との比較に基づいて、前記第１のアイテムを前記第１のメモリから提供し、そして前記第１のアイテムを前記第２のメモリ内に記憶するステップと
を含んでなる方法。
【請求項１８】
前記第２の値が重み関数に基づいて判断され、要求とその後の要求との間の継続時間に加えられた重みが別の要求が受け取られるたびに減少するものである請求項１７に記載の方法。
【請求項１９】
前記第２の値が、下記の関数、すなわち、
Ｅｎ＝−１＊（ＡＬＰＨＡ＊ＬＳｎ＋（１−ＡＬＰＨＡ）＊Ｅｎ−１）であり、
ここで、
「ｎ」は、要求がｎ番目に出現したことを示し、
「ＬＳｎ」は、要求のｎ番目の出現と以前の要求との間で経過した時間を示し、
「ＡＬＰＨＡ」は、０と１との間及び０と１とを含む値を示すことに基づくものである請求項１７に記載の方法。
【請求項２０】
前記第１の値が前記重み関数に基づくものである請求項１８に記載の方法。
【請求項２１】
情報のアイテムを記憶するように構成されたキャッシュと、
情報のアイテムを記憶するように構成された他のメモリと、
命令に基づいて前記キャッシュ内のアイテムを読み出し及び記憶して、前記アイテムを要求元のデバイスに提供するように構成されたプロセッサと
を備えてなり、
前記命令が、要求元のデバイスから要求されたアイテムに対する要求に応じて、
前記要求されたアイテムが前記キャッシュの中に記憶されている場合は、前記要求されたアイテムをキャッシュから読み出し、
前記要求されたアイテムが前記キャッシュの中に記憶されていない場合は、前記要求されたアイテムを他のメモリから読み出し、
前記アイテムが所定の期間内に前もって要求されていない場合は、前記要求されたアイテムを次の要求より前に前記キャッシュに記憶することなく、前記要求されたアイテムを要求元のデバイスに提供し、
前記アイテムが所定の期間内に前もって要求されており、かつ前もって要求された時間が前記キャッシュ内に記憶されたアイテムのセット内の各アイテムに対する最新の要求よりも早い場合は、前記要求されたアイテムを次の要求より前に前記キャッシュに記憶せずに、前記要求されたアイテムを前記要求元のデバイスに提供し、
前記アイテムが所定の期間内に前もって要求されており、かつ前もって要求された時間が前記キャッシュ内に記憶されたアイテムのセット内の少なくとも１つのアイテムに対する最新の要求よりも遅い場合は、前記要求されたアイテムを前記要求元のデバイスに提供し、そして前記要求されたアイテムを次の要求の前に前記キャッシュの中に記憶する、
ことを含むものである、システム。
【請求項２２】
前記プロセッサがネットワークのあるノードに存在し、かつ前記要求元のデバイスが前記プロセッサのノードとは異なるネットワークのノードにおいてデバイスを備える請求項２１に記載のシステム。
【請求項２３】
前記プロセッサがネットワークのあるノードに存在し、かつ前記要求元のデバイスが、前記プロセッサのノードとは異なるネットワークの複数のノードにおいて複数のデバイスを備える請求項２１に記載のシステム。
【請求項２４】
前記情報のアイテムがビデオ情報を含み、前記ネットワークがインターネットを含み、かつ前記要求元のデバイスがユーザ・コンピュータを含む請求項２３に記載のシステム。
【請求項２５】
前記プロセッサ及び要求元のデバイスは同一であるため、前記プロセッサは前記キャッシュや他のメモリから取得したアイテムを処理する請求項２１に記載のシステム。
【請求項２６】
命令に基づいて、メモリ内のアイテムを読み出すように及びメモリ内にアイテムを記憶するように構成されたプロセッサと、
第１の記憶容量及び第１のアクセス時間（この場合、前記アクセス時間は、前記プロセッサがメモリから情報を得るために要する時間を指す）を有する第１のメモリと、
第１の記憶容量よりも大きい第２の記憶容量及び第１のアクセス時間よりも遅い第２のアクセス時間を有する第２のメモリと、
第２の記憶容量よりも大きな第３の記憶容量及び第２のアクセス時間よりも遅い第３のアクセス時間を有する第３のメモリと
を備えてなり、
前記命令が、前記プロセッサが受信したアイテムに対する要求に応じて、
要求されたアイテムが前記第１のメモリ内に記憶される場合、前記要求されたアイテムを前記第１のメモリから読み出し、
前記要求されたアイテムが前記第２のメモリ内に記憶される場合、前記要求されたアイテムを前記第２のメモリから読み出し、
前記要求されたアイテムが前記第３のメモリ内に記憶される場合、前記要求されたアイテムを前記第３のメモリから読み出し、
前記アイテムが要求時に前記第２のメモリに記憶されていたかどうか、及び前記アイテムが要求された最後の時間から経過した時間が最後の削除期間（前記最後の削除期間は、まだ前記第１のメモリ内に記憶されている最後に削除されるアイテムに対する最後の要求から始まり、最後に削除されるアイテムの前記第１のメモリからの削除で終了する継続時間を含む）よりも短いかどうかに基づいて、前記要求されたアイテムを前記第１のメモリに記憶し、
前記アイテムが要求時に前記第２のメモリに記憶されていたかどうか、及び前記アイテムが前記第３のメモリから読み出されたかどうかに基づいて、前記要求されたアイテムを前記第２のメモリに記憶する、
ことを含む、システム。
【請求項２７】
前記第１のメモリがフラッシュ・メモリである請求項２６に記載のシステム。
【請求項２８】
前記第２のメモリがディスク・メモリである請求項２７に記載のシステム。
【請求項２９】
前記プロセッサがネットワークを経由して前記第３のメモリにアクセスするものである請求項２７に記載のシステム。
【請求項３０】
前記情報のアイテムがビデオ・ファイルのチャンクを含む請求項２６に記載のシステム。
【請求項３１】
命令に基づいて、メモリ内のアイテムを読み出すように及びメモリ内にアイテムを記憶するように構成されたプロセッサと、
第１の記憶容量を有する第１のメモリと、
前記第１の記憶容量よりも大きい第２の記憶容量を有する第２のメモリと、
前記第２の記憶容量よりも大きい第３の記憶容量を有する第３のメモリと
を備えてなり、
前記命令が、前記プロセッサが受信したアイテムに対する要求に応じて、
要求されたアイテムが前記第１のメモリ内に記憶される場合、前記要求されたアイテムを前記第１のメモリから読み出し、
前記要求されたアイテムが前記第２のメモリ内に記憶される場合、前記要求されたアイテムを前記第２のメモリから読み出し、
前記要求されたアイテムが前記第３のメモリ内に記憶される場合、前記要求されたアイテムを前記第３のメモリから読み出し、
前記要求されたアイテム及び前記第１のメモリ内に記憶された複数のアイテムに対する優先順位の値を決定し、ここで、前記優先順位の値は優先順位関数に基づき、前記優先順位関数はアイテムに対する要求の間の継続時間に基づき、より小さな重みがアイテムに対するより早い要求の間の継続期間に加えられるものであり、
前記アイテムが以前に要求されたことがある場合、前記要求されたアイテムが前記第２のメモリ内に記憶される場合、及び前記要求されたアイテムの優先順位の値が第１のメモリ内に記憶された少なくとも１つの他のアイテムの優先順位の値よりも大きい場合、前記要求されたアイテムを前記第１のメモリ内に記憶する、
ことを含む、システム。
【請求項３２】
前記優先順位関数が、下記の関数、すなわち、
優先順位の値＝−１＊（ＡＬＰＨＡ＊ＬＳｎ＋（１−ＡＬＰＨＡ）＊Ｅｎ−１）であり、
ここで、
「ｎ」は、要求がｎ番目に出現したことを示し、
「ＬＳｎ」は、要求のｎ番目の出現と以前の要求との間で経過した時間を示し、
「ＡＬＰＨＡ」は、０と１との間及び０と１とを含む値を示すことに基づくものである、請求項３１に記載のシステム。
【請求項３３】
前記第１のメモリが第１のアクセス時間を有し、ここで、アクセス時間は、前記プロセッサがメモリから情報を得るために要する時間を指すものであり、前記第２のメモリが前記第１のアクセス時間よりも遅い第２のアクセス時間を有し、前記第３のメモリが前記第２のアクセス時間よりも遅い第３のアクセス時間を有している請求項３１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願の相互参照］
本願は、２００９年８月２１日に出願された「SYSTEM AND METHOD OF CACHING INFORMATION」という名称の米国特許出願第１２／５４５，２２５号に対する利点を主張し、その全ての開示内容は引用することにより本明細書の一部をなすものとする。
【背景技術】
【０００２】
［発明の分野］
キャッシュは、通常、キャッシュが存在しない場合よりも低い「コスト」でプロセッサがアクセスする情報のアイテムを記憶するように、プロセッサを有するシステムの中で提供される。例えば、プロセッサが１つのメモリ内に記憶されているデータ又はプログラム命令を他のメモリよりも早く得ることができるように、システムを構成することができる。他のメモリに含まれている頻繁にアクセスされる情報がキャッシュにコピーされ、代わりにキャッシュからアクセスされることができるように、このメモリをキャッシュとして使用することができる。さらに、キャッシュを使用することは、情報アイテムがローカルで利用可能な場合は、プロセッサとメモリ又は入出力インターフェースなどの内部システム部品との間の内部データ・トラフィックを減少させるのに役立つことができると共に、情報がローカルに利用可能でない場合は、システムとリモート・システムとの間の外部データ・トラフィックを減少させるのに役立つことができる。
【０００３】
キャッシュは、プロセッサが必要とする情報の全てを記憶するには小さ過ぎることが多い。このため、どの情報をキャッシュに記憶するかを決定するに関して、キャッシュ・ベースのシステムを、一般に、選択する必要がある。例えば、プロセッサが繰り返しかつ頻繁に、１０個の異なる情報アイテムにアクセスする可能性がある場合でも、キャッシュは５回しか記憶することができないことがある。
【０００４】
アイテムをいつキャッシュに記憶すべきかを判断するために、種々のアルゴリズムが使用されてきた。例えば、幾つかの現行のシステムは、最後に使用された情報を自動的にキャッシュに記憶する。プロセッサが最近１０個のアイテムを処理し、キャッシュが５個を記憶できる場合、どの位の頻度でアイテムが使用されるかには無関係に、最後の５個の別個のアイテムがキャッシュに記憶される。
【発明の概要】
【０００５】
１つの態様では、関連するキャッシュを有するプロセッサにおいて、情報のアイテムを処理する要求を受け取るステップと、アイテムがキャッシュに記憶される場合、キャッシュから要求されたアイテムを読み出すステップと、アイテムがキャッシュ内に記憶されていない場合、他のメモリから要求されたアイテムを読み出すステップと、アイテムが所定の期間内に前もって要求されない場合、アイテムをキャッシュ内に記憶することなくアイテムを処理するステップと、アイテムが所定の期間内に前もって要求されかつこの前もって要求された時間がキャッシュ内に記憶されたアイテムのセット内の各アイテムに対する最新の要求よりも早い場合、アイテムをキャッシュ内に記憶することなくアイテムを処理するステップと、アイテムが所定の期間内に前もって要求されかつこの前もって要求された時間がキャッシュ内に記憶されたアイテムのセット内の少なくとも１つのアイテムに対する最新の要求よりも遅い場合、アイテムを処理しかつこのアイテムをキャッシュ内に記憶するステップと、を含んでなる方法を提供する。
【０００６】
別の態様では、電子的に記憶された情報の、第１のメモリ内に記憶された第１のアイテムに対する現在の要求を受け取るステップと、第１のアイテムが第２のメモリにも記憶される場合、第２のメモリから第１のアイテムを提供するステップと、第１のアイテムが第２のメモリに記憶されていない場合、第１のアイテムを第１のメモリから提供するステップと、第１のアイテムが所定の期間内に前もって要求されていたかどうかを、プロセッサを用いて判断するステップと、第１のアイテムが前もって要求されていると判断された場合、第１のアイテムに関連付けられた、第１のアイテムに対する現在の要求と第１のアイテムに対する以前の要求との間の継続時間である第１の継続時間を、プロセッサを用いて確認するステップと、第１のアイテムに対する現在の要求と第２のアイテムに対する最新の要求との間の時間の継続時間であり、第２のメモリ内に記憶され前もって要求された第２のアイテムのセットの各アイテムに対する第２の継続時間を、プロセッサを用いて確認するステップと、かつ第１のアイテムが前もって要求され、かつ第１の継続時間が第２の継続時間の少なくとも１つよりも小さい場合は、第１のアイテムを第２のメモリ内に記憶するステップとを含んでなる方法を提供する。
【０００７】
さらに別の方法は、電子的に記憶されている情報の第１のアイテムに対する要求を受け取るステップと、第１のアイテムが所定の期間内に前もって要求されていない場合、第１のアイテムを第２のメモリ内に記憶せずに、第１のアイテムを第１のメモリから提供するステップと、第２のメモリが複数の他のアイテムも記憶しその他のアイテムの各々が少なくとも２回前もって要求されたことがある状態で、第１のアイテムが第２のメモリ内に記憶されている場合、第１のアイテムを第２のメモリから提供するステップと、第１のアイテムが所定の期間内に前もって要求されていない場合、第１のアイテムを第２のメモリ内に記憶することなく、第１のアイテムを第１のメモリから提供するステップと、第１のアイテムが前もって要求されていると判断される場合、前記第１のアイテムに関連付けられた、前記第１のアイテムに対する以前の要求の間の継続時間に基づく第１の値を、プロセッサを用いて確認するステップと、第２の値が第１のアイテムに対する現在の要求と第２のアイテムに対する最新の要求との間の継続時間に基づく値である場合に、第２のメモリ内に記憶され前もって要求された第２のアイテムのセットの各アイテムに関連付けられた第２の値を、プロセッサを用いて確認するステップと、かつ第１のアイテムが所定の期間内に前もって要求される場合、第１の値の第２の値との比較に基づいて、第１のアイテムを第１のメモリから提供し、そして第１のアイテムを第２のメモリ内に記憶するステップとに関係する。
【０００８】
さらに別の態様では、情報のアイテムを記憶するように構成されたキャッシュと、情報のアイテムを記憶するように構成された他のメモリと、かつ命令に基づいてキャッシュ内のアイテムを読み出し及び記憶して、これらのアイテムを要求元のデバイスに提供するように構成されたプロセッサと、を備えるシステムが提供される。命令は、要求元のデバイスから要求されたアイテムに対する要求に応じて、要求されたアイテムがキャッシュの中に記憶されている場合は、要求されたアイテムをキャッシュから読み出すステップと、要求されたアイテムがキャッシュの中に記憶されていない場合は、要求されたアイテムを他のメモリから読み出すステップと、アイテムが所定の期間内に前もって要求されていない場合は、要求されたアイテムを次の要求より前にキャッシュに記憶することなく、要求されたアイテムを要求元のデバイスに提供するステップと、アイテムが所定の期間内に前もって要求されており、かつ前もって要求された時間がキャッシュ内に記憶されたアイテムのセット内の各アイテムに対する最新の要求よりも早い場合は、要求されたアイテムを次の要求より前にキャッシュに記憶せずに、要求されたアイテムを要求元のデバイスに提供するステップと、かつアイテムが所定の期間内に前もって要求されており、かつ前もって要求された時間がキャッシュ内に記憶されたアイテムのセット内の少なくとも１つのアイテムに対する最新の要求よりも遅い場合は、要求されたアイテムを要求元のデバイスに提供し、そして要求されたアイテムを次の要求の前にキャッシュの中に記憶するステップとを含む。
【０００９】
別のシステムは、命令に基づいて、メモリ内のアイテムを読み出すように及びメモリ内にアイテムを記憶するように構成されるプロセッサを備えることができる。それは、第１の記憶容量及び第１のアクセス時間（この場合、アクセス時間は、プロセッサがメモリから情報を得るために要する時間を指す）を有する第１のメモリと、第１のメモリよりも大きい記憶容量及び遅いアクセス時間を有する第２のメモリ、並びに第２のメモリよりも大きな記憶容量及び遅いアクセス時間を有する第３のメモリを備えることもできる。命令は、プロセッサが受信したアイテムに対する要求に応じて、要求されたアイテムが第１のメモリ内に記憶される場合、要求されたアイテムを第１のメモリから読み出すステップと、要求されたアイテムが第２のメモリ内に記憶される場合、要求されたアイテムを第２のメモリから読み出すステップと、要求されたアイテムが第３のメモリ内に記憶される場合、要求されたアイテムを第３のメモリから読み出すステップと、アイテムが要求時に第２のメモリに記憶されていたかどうか、及びアイテムが要求された最後の時間から経過した時間が最後の削除期間（last-eviction duration）よりも短いかどうかに基づいて、要求されたアイテムを第１のメモリに記憶するステップと、この場合、最後の削除期間は、まだ第１のメモリ内に記憶されている最後に削除されるアイテムに対する最後の要求から始まり、最後に削除されたアイテムの第１のメモリからの削除で終了する継続時間を含み、アイテムが要求時に第２のメモリに記憶されていたかどうか、及びアイテムが第３のメモリから読み出されたかどうかに基づいて、要求されたアイテムを第２のメモリに記憶するステップとを含みうる。
【図面の簡単な説明】
【００１０】
【図１】本発明の態様によるサーバ及びクライアント・デバイスから成るシステムの機能図である。
【図２】本発明の態様によるコンピュータ・チップ及び命令ストアの機能図である。
【図３】本発明の態様によるサーバ及びクライアント・デバイスの多層システムの機能図である。
【図４】本発明の態様によるコンピュータの機能図である。
【図５】本発明の態様によるフローチャートである。
【図６】本発明の態様によるフローチャートである。
【発明を実施するための形態】
【００１１】
本発明の１つの態様によれば、現在要求されている情報のアイテムは、それが前もって要求されたことがあるかどうか、またもしそうなら、前回要求された時間に基づいてキャッシュに記憶される。具体的に言うと、アイテムがこれまで要求されたことがない場合は、そのアイテムはキャッシュには決して記憶されることはない（ここで、「決して〜しない（never）」という用語は、「２４時間以内に決して〜しない」又は時間的に変化するデータに基づいて動的に決定される期間内で決して〜しないというように、所定の期間を引き合いに出すことができる）。テーマ・アイテムが以前要求されたことがある場合、テーマ・アイテムは、継続期間の決定及び比較に基づいて、すなわち、（１）テーマ・アイテムに対する現在の要求と前回の要求との間の時間の継続期間、及び（２）キャッシュ内のそれぞれの他のアイテムに対して、他のアイテムに対する現在の要求と前回の要求との間の時間の継続期間、に基づいてキャッシュされる。テーマ・アイテムに関連する継続期間がキャッシュ内の他のアイテムの継続期間よりも短い場合、テーマ・アイテムはキャッシュに記憶される。
【００１２】
図１に示すように、本発明の１つの態様によるシステム１００は、プロセッサ１２０、メモリ１３０、クロック１１５及び一般に汎用コンピュータに存在する他の構成部品を有するコンピュータ１１０を備えている。メモリ１３０は、プロセッサ１２０がアクセス可能な情報を記憶し、プロセッサ１２０が実行することができる命令１３１を含んでいる。それは、プロセッサが読み出し、操作又は記憶することができるデータ１３５も含んでいる。メモリは、ハード・ドライブ、メモリ・カード、ＲＯＭ、ＲＡＭ、ＤＶＤ、又は他の光ディスク、並びに書込み可能及び読出し専用メモリなどの、コンピュータが読み出し可能な媒体を含む、プロセッサがアクセス可能な情報を記憶することができる任意の種類のものでありうる。プロセッサ１２０は、Intel Corporation 又は AMDが販売しているプロセッサなど周知のプロセッサでありうる。別の方法では、このプロセッサは、ＡＳＩＣなどの、専用のコントローラでありうる。
【００１３】
命令１３１は、プロセッサによって（マシン・コードなどの）直接的に又は（スクリプトなどの）間接的に実行される任意の命令のセットでありうる。例えば、命令はコンピュータ・コードとしてコンピュータに読み取り可能な媒体上に記憶されることができる。その点において、「命令」及び「プログラム」という用語は、本願では交換可能に使用されることができる。これらの命令は、プロセッサが直接処理するためのオブジェクト・コード形式で、又はオンデマンドで解釈される又は事前にコンパイルされる独立ソース・コード・モジュールのスクリプト又はコレクションを含む任意の他のコンピュータ言語で記憶されうる。命令の機能、方法及びルーチンは、以下でより詳細に説明される。
【００１４】
データ１３５は、プロセッサ１２０によって、命令１３１に従って読み出し、記憶又は変更されることができる。例えば、このシステム及び方法は、特定のデータ構造によって限定されることはないが、データはコンピュータ・レジスタの中に、複数の様々なフィールド及びレコードを有するテーブル、ＸＭＬ文書、又はフラット・ファイルとしてリレーショナル・データベースの中に記憶されうる。データは、これらに限定されることはないが、バイナリ値、ＡＳＣＩＩ又はユニコードなどのコンピュータ可読の形式にフォーマットされることもできる。画像データは、圧縮される又は圧縮されない、すなわち可逆の（例えば、ＢＭＰ）又は不可逆の形式（例えば、ＪＰＥＧ）に基づいて記憶されるピクセルから成るビットマップとして、及びビットマップすなわちベクタ・ベースの形式（例えば、ＳＶＧ）として、並びにグラフィックを描画するコンピュータ命令として記憶されうる。ビデオ・データは、ＭＰＥＧ、ＧＩＦ、ＡＶＩ、Ｍ−ＪＰＥＧ、フラッシュ、クイック・タイムなどを含む種々のフォーマットの中に記憶されうる。このデータは、数、説明文、商標コード、ポインタ、他のメモリの中に記憶されたデータへの参照（他のネットワーク位置を含む）又は関係資料を計算するための関数として使用される情報などの、関連情報を識別するに十分な任意の情報を含みうる。
【００１５】
図１は、プロセッサ及びメモリが同じブロック内に存在するように機能的に例示しているが、プロセッサ及びメモリは、実質的には、同じ物理的な筐体内に格納される又は格納されない複数のプロセッサ及びメモリを含みうることが当業者には理解されるであろう。例えば、命令及びデータによっては、着脱可能なＣＤ−ＲＯＭ上に記憶することができるものもあれば、読取り専用のコンピュータ・チップ内に記憶することができるものもある。命令及びデータのうちの幾つか又は全てを、プロセッサから物理的に離れているが依然としてアクセス可能な位置に記憶することができる。このため、コンピュータ、プロセッサ及びメモリを参照することは、並列に動作することもしないこともできるコンピュータ、プロセッサ又はメモリの集合を参照することを含むものと理解される。
【００１６】
コンピュータ１１０は、ネットワーク１９５の１つ又は複数のノードに配置されて、ネットワークの他のノードと直接的に又は間接的に通信することができる。例えば、コンピュータ１１０は、ネットワーク１９５を介してクライアント・デバイス１５０〜１５２と通信する、クライアント・デバイス１５０〜１５２にウェブ・ページを配送する、及びそれに応じて情報や要求を受信することができるウェブ・サーバを備えることができる。サーバ１１０はネットワーク１９５を使用して、情報をユーザのクライアント・デバイス１５０のモニタ１６０上に送信及び表示することができる。
【００１７】
ネットワーク１９５、及びサーバ１１０とクライアント・デバイスとの間に介在するノードは、インターネット、ワールド・ワイド・ウェブ、イントラネット、仮想プライベート・ネットワーク、ワイド・エリア・ネットワーク、ローカル・ネットワーク、１つ又は複数の企業に専有の通信プロトコルを使用するプライベート・ネットワーク、セルラー及び他の無線ネットワーク、インターネット・リレー・チャット・チャネル（ＩＲＣ）、インスタント・メッセージング、シンプル・メール転送プロフィール（ＳＭＴＰ）、イーサネット（登録商標）、ＷｉＦｉ及びＨＴＴＰ、及び前述されたものの種々の組合せ、を含む様々な構成を有しまた種々のプロトコルを使用することができる。図１には数個のコンピュータしか示していないが、代表的なシステムは、多数の接続されたコンピュータを備えることができることが理解されよう。
【００１８】
各クライアント・デバイスは、サーバ１１０と同様に、プロセッサ、メモリ及び命令で構成することができる。各クライアント・デバイス１５０〜１５２は、人１９０及び１９１が使用することを意図された、中央処理装置（ＣＰＵ）、ディスプレイ１６０（例えば、スクリーン、プロジェクタ、タッチ・スクリーン、小型ＬＣＤスクリーン、テレビ、又はプロセッサによって処理される情報を表示するように動作可能な電気デバイスなどの他のデバイスを有するモニタ）、ＤＶＤドライブ、ハード・ドライブ、ユーザ入力デバイス１６３（例えば、マウス、キーボード、タッチ・スクリーン、又はマイクロフォン）、スピーカ、モデム、又はネットワークインターフェース・デバイス（電話、ケーブル、無線など）、並びにこれらの素子を互いに接続するために使用される全ての構成要素などの、パーソナル・コンピュータの中で通常見出される全ての内部構成要素を有するパーソナル・コンピュータでありうる。
【００１９】
クライアント・デバイス１５０〜１５２はフルサイズのパーソナル・コンピュータを備えることができるが、本システム及び方法は、インターネットなどのネットワークを介してサーバとデータを無線で交換することが可能なモバイル機器と接続して用いられることもできる。例えば、クライアント・デバイスは、ブラックベリー（Ｂｌａｃｋｂｅｒｒｙ）電話又はインターネット対応の携帯電話などの無線可能ＰＤＡでありうる。ユーザは小型キーボード（Ｂｌａｃｋｂｅｒｒｙ電話の場合）、キーパッド（通常の携帯電話の場合）、タッチ・スクリーン（ＰＤＡの場合）、又は任意の他のユーザ入力デバイスを用いて情報を入力することができる。実際に、本願で説明されるシステム及び方法によるコンピュータは、命令を処理しかつ、人や他のコンピュータにまた人や他のコンピュータからデータを送受信することができる任意のデバイスを含みうる、ここで、他のコンピュータは、汎用コンピュータ、局部記憶能力がないネットワーク・コンピュータ、及びテレビ用のセットトップ・ボックスを含む。
【００２０】
サーバ１１０に加えて、システム１００は別のサーバも備えることができる。例えば、サーバ１１５〜１１６は、Google社のYouTubeサービスを介して提供されるオーディオ／ビジュアル・ビデオ・ファイルなどの、ネットワークの他のノードに配送されるべき情報を記憶することができる。他の非限定的なコンテンツの例としては、音楽、静止画像、コンピュータ・ゲームを含むプログラム及び上記の組合せが含まれる。ビジュアル・コンテンツはクライアント・デバイスの電子ディスプレイ１６０を介してユーザに表示され、オーディオ・コンテンツはクライアント・デバイスに結合したスピーカを介して与えられる。コンテンツは無料又は有料で提供され、ディジタル著作権管理（ＤＲＭ）に対して制約を受ける又はそれの対象とされる可能性がある。
【００２１】
サーバ１１０は、ネットワーク１９６を介してコンテンツ用サーバ１１５〜１１６と通信することができる。このネットワークは、ネットワーク１９５と同様に構成されることができる。実際に、少なくとも１つの態様では、ネットワーク１９５及び１９６は同じノードを共有する、例えば、両方のネットワーク１９５及び１９６はインターネットを含みうる。
【００２２】
サーバ１１０は、将来使用するためにサーバが要求する情報を記憶するキャッシュ１４０を備えることができる。例えば、キャッシュは、当初はサーバ１１５〜１１６から受信したコンテンツ・ファイルを記憶して、クライアント・デバイス１５０〜１５２に与えることができる。以下でより詳細に説明するように、これは本発明によるシステム及び方法の１つの可能な態様に過ぎない。
【００２３】
１つの態様では、また多くの状況の中では、サーバ１１０は、一般的に、情報をコンテンツ用サーバ１１５〜１１６から得るよりも早く、キャッシュからの情報をクライアント・デバイス１５０〜１５２に配送することができる。例えば、サーバ１１０は、コンテンツ用サーバよりもクライアント・デバイスに地理的により近い可能性がある。サーバ１００はクライアント・デバイスに位相的により近いこともある、例えば、インターネットが両方のネットワーク１９５及びネットワーク１９６として機能している場合、サーバ１１０とクライアント・デバイス１５０との間よりも、コンテンツ用サーバ１１５とクライアント・デバイス１５０との間にはより多くの介在ノードが存在する可能性がある。さらに、キャッシュ１４０を、サーバ内に物理的に配置される大きなハード・ドライブといったように、プロセッサ１２０と同じ筐体内に格納することができ、そのような構成によりプロセッサは、一般に、情報に極めて高速にアクセスできるようになる。しかしながら、結果として待ち時間がハード・ドライブよりも大きいが、情報をコンテンツ用サーバ１１５〜１１６から得るよりも小さい別の位置に、キャッシュ１４０を配置することもできる。
【００２４】
このシステム及び方法は、様々な形式、構成及び大きさの情報を、記憶、読み出し及び処理することができる。その点において、キャッシュ内に記憶される情報アイテムの大きさは、異なっていても又は同じであっても良い。幾つかの態様では、各アイテムは、ユーザが希望する全ての情報を表す単一のファイルである（例えば、このファイルは、歌が全部揃った音楽ビデオである）。別の態様では、各アイテムは、ユーザのクライアント・デバイスが複数のパケットを一緒に受信して組み立てるまで、ユーザが有意義に使用できない情報の固定長パケットである。上記の組み合わせも可能である、例えば、キャッシュ内の個々のアイテムは、音楽ビデオの固定長の部分とすることができ、サーバ１１０は、キャッシュから個々のパケットを取得して送信することにより、ユーザのクライアント・デバイスに音楽ビデオを流す。
【００２５】
本システム及び方法は、アイテムに対する要求の間の時間の長さを示すデータを処理することもできる。例えば、データ１３５は、各レコードがキャッシュ１４０の中に記憶されたコンテンツ・ファイル１４３並びにクライアント・デバイスによってファイルが最後に要求された日時を識別する要求レコード１４５を記憶することができる。１つの態様では、要求レコード１４５は、キーがファイルの識別子（例えば、それぞれ異なるビデオ・ファイルに割り当てられる固有の数字）であり、かつこのキーがクライアント・デバイスが最後にファイルを要求した日時を示す、ハッシュ・テーブルとして記憶されることができる。
【００２６】
全ての要求されたアイテムがキャッシュされることはなく、以前要求されたアイテムがキャッシュされ、次に、キャッシュから削除される可能性があるため、要求レコードは、アイテムがキャッシュの中に記憶されているかどうかも確認することができる。
【００２７】
幾つかの態様では、以下で述べるように、追加の情報も記憶することができる。
【００２８】
図５に示す動作に加えて、本発明の多岐にわたる態様による様々な動作をここで説明する。以下の動作は、後述する正確な順序で実行される必要はないことを理解すべきである。それどころか、種々のステップを逆の順序で又は同時に処理することができる。
【００２９】
１つの態様では、本システム及び方法は、クライアント・デバイスが要求することができる情報を記憶するために、キャッシュを使用するサーバを備えている。例えば、サーバ１１０は、www.youtube.comといったウェブ・サイトに関連付けられた多くのサーバの１つのエッジ・サーバとすることができる。その点において、ユーザはクライアント・デバイス１５０を使用して、ビデオ・ファイル検索エンジンを動作させるウェブ・サーバと対話することができる。エンジン用サーバはユーザに適合するビデオのリストを提供して、次に、ユーザが希望するビデオに固有のウェブ・ページを選択して、そこに行くことを可能にする。それはエンジン用サーバによって提供されたが、このビデオ固有のウェブ・ページは、直接サーバ１１０を指すＵＲＬとファイルの固有ＩＤとを含みうる。このため、ユーザが「再生」ボタンをクリックするなどによりビデオのコピーを要求する場合、この要求はエンジン用サーバではなく、サーバ１１０に直接送られる。
【００３０】
情報に対する要求を受け取ると、本システム及び方法は、要求された情報を読み出して要求元エンティティに提供することができる。例えば、サーバ１１０は、最初に、キャッシュ１４０が要求されたコンテンツ・ファイルのコピーを有しているかどうかを判断する。そのファイルがキャッシュ内に含まれている場合は、プロセッサ１２０は、ファイルのコピーをキャッシュ１４０からネットワーク１９５を介してクライアント・デバイス１５０に送信することができる。そのファイルがキャッシュに含まれていない場合は、プロセッサはそのファイルをコンテンツ用サーバ１１５〜１１６の１つから要求して、それをプロクシングなどによりクライアント・デバイス１５０に転送することができる。別の方法では、サーバ１１０は、ＨＴＴＰ３０２リダイレクトを介して位置への指示を提供することなどにより、コンテンツ用サーバ又はクライアント・デバイスに十分な情報を提供するため、クライアント・デバイスは、サーバ１１０を通過させることなく、コンテンツ用サーバからファイルを得ることができる。
【００３１】
プロセッサが情報に対する要求を受け取ると、それはこの情報が以前に要求されたかどうかを判断する。例えば、サーバ１１０は、要求レコード１４５に問い合わせて、コンテンツ・ファイルがクライアント・デバイス１５０〜１５２のいずれかから以前に要求されたことがあるかどうかを判断することができる。レコードがハッシュ・テーブルに記憶されている場合は、プロセッサ１２０は、ファイルのＵＩＤに一致するキーを有するレコードに関してハッシュ・テーブルを確認することができる。そのようなキーが存在しない場合、プロセッサ１２０は、ファイルがこれまで要求されたことがないと判断する。キーが存在する場合は、プロセッサ１２０は、ファイルが以前要求されたことがあると判断する。
【００３２】
要求されたアイテムがこれまで要求されたことがない場合、本システム及び方法は、情報をキャッシュしないが、要求があった時間に関するデータを記憶する。例えば、それは、要求されたファイルのＵＩＤ並びに要求が発生した日時を識別するハッシュ・テーブル１４５にキー／値の対を加えることができる。それは、そのファイルがキャッシュ内に現在は記憶されていないことを示す、フラグのような、値をレコード内に含みうる。
【００３３】
所望の情報が前もって要求されている場合、プロセッサは、それが以前に要求された最後の時間を確認して、それがキャッシュ内の他の情報を要求した時間を特定する情報と比較する。キャッシュするかどうかの決定は、その決定に基づいてなされることがある。
【００３４】
本システム及び方法の１つの態様では、現在の要求の時間を除いて、アイテムがキャッシュ内に他のアイテムよりも最近要求された場合、それはキャッシュされる。例えば、サーバ１１０が午後７：００時に「ファイル＃３」に対する要求を受け取り、要求レコード１４５が下記の情報を確認すると仮定する。
【表１】
0005592489.tif 000002
上記によれば、ファイル＃３は、ファイル＃１（午後１：００時）よりも最近（午後３：００時）要求された−−現在の要求時間を除いて。従って、ファイル＃３はキャッシュに記憶されるであろう。
【００３５】
キャッシュが現在要求されたアイテムを記憶する容量がない場合、本システム及び方法は、その最後の要求以来最も長くキャッシュ内に置かれているアイテムを取り除くことができる。前述の実施例を用いると、ファイル＃１が前に要求されて以来、６時間（午後７：００時マイナス午後１：００時）が経過している。このため、ファイル＃１に対する次の要求がいつ来ようとも、最後の要求と次の要求との間の継続期間は６時間よりも短くなることはできない。この継続期間は、任意の他のファイルに対する任意の他の継続期間よりも長い。従って、ファイル＃１及びファイル＃３の両方に対して十分な余地がない場合は、ファイル＃１をキャッシュ１４０から取り除き、ファイル＃３をキャッシュに加えて、要求レコード１４５を下記のように更新することができる（最後の図表からの変化を太字で示す）。
【表２】
0005592489.tif 000003
別のアイテムを除いた後でもまだ現在要求されたアイテムを記憶するための十分なメモリ空間がない場合は、本システム及び方法は、十分なメモリ空間が提供されるまで、アイテムの削除を続けることができる。
【００３６】
１つの態様では、本システム及び方法は、現在要求されたアイテムをキャッシュすべきかどうかを判断するために、最後に削除されたアイテムに関連付けられたデータを使用する。例えば、ファイル＃１が除かれる場合、サーバ１１０は、以下に「−Ｘ−＞」で示すように、ファイル＃１用の要求レコードに対してデータ１３５の中にポインタを記憶することができる。
【表３】
0005592489.tif 000004
次に、サーバ１１０が、午後８：００時にファイル＃５に対する要求を受け取ると仮定する。プロセッサは、現在要求されているアイテムが要求された最後の時間をキャッシュ内の全てのアイテムと比較するのではなく、それを最後に削除されたアイテムと比較することができる。その点において、ファイル＃５が以前要求されたのが、今しがた削除されたファイル（ファイル＃１、午後１：００時）よりも最近であることを確認すると、ファイル＃５をキャッシュに加えることができる。ファイル＃５用のメモリ空間を作るためにファイル＃４を除く必要がある場合、結果として生じる要求レコード１４５は、下記のようになる。
【表４】
0005592489.tif 000005
【００３７】
別の態様では、本システム及び方法は現在のアイテムを、その最後の要求以降にキャッシュ内に残っている最後に除かれたアイテムの時間と比較することができる。前述の実施例に戻ると、本システム及び方法が、午後７：００時に削除するためにアイテムを選択する必要がある場合、それはファイル＃１を削除した、その理由は、他のアイテムが要求なしでキャッシュ内により長く残っていなかったためである。このため、最後に削除されたアイテムとして「最悪の実行者（worst performer）」を定義する場合、またその確定の前に要求されずにキャッシュ内に残っていた時間の長さとして、その「空費した時間（wasted time）」を定義する場合、ファイル＃１が最悪の実行者であり、それは６時間空費した（削除７：００時マイナス最後の要求１：００時）。
【００３８】
その点において、新しいアイテムが、「最悪の実行者」よりも多くの時間を「空費する」ことを予想される場合、本システム及び方法の１つの態様では、この新しいアイテムを全くキャッシュすべきではないと判断される。その点においてまたこの態様では、ファイル＃５は、それが要求されるときにキャッシュされるであろう、その理由は、その最後の要求（午後５：００時）とその現在の要求（午後８：００時）との間のスパンが３時間であり、これは最悪の実行者が空費した時間（６時間）よりも短いからである。しかしながら、ファイル＃１１がファイル＃５と同じ時間（午後８：００時）に要求されるが、ファイル＃１１は９時間前（午前１１：００時）に既に要求されていたと仮定する。ファイル＃１１がキャッシュ内に置かれて、別の９時間が要求なしで過ぎたとすると、このことは、それが現在の最悪の実行者：ファイル＃１の６時間よりもキャッシュ内で長い時間を空費したことを意味する。このため、本システム及び方法は、ファイル＃１１を全くキャッシュすべきではないと判断することができる。
【００３９】
現在要求されているアイテムが要求された最後の時間が、キャッシュ内の他のアイテムよりも前である場合、プロセッサはそのアイテムをキャッシュしないと判断することができる。たとえそうであっても、それは依然として現在の要求の時間を反映するように要求レコードを更新することができる。例えば、ファイル＃１に対する要求が午後９：００に受信されるとき、要求レコードが下記のように表示されると仮定する。
【表５】
0005592489.tif 000006
本システム及び方法は、現在要求されているアイテム（ファイル＃１、午後１：００時）に対する前の要求を最後に削除されたアイテム（ファイル＃４、４：００時）に対する最も新しい要求と比較することができる。ファイル＃４が、要求されずにあまりに長くキャッシュ内に残っているため今除去されたが、それはファイル＃１よりも最近要求されていた（システムがファイル＃１に対する現在の要求を評価していることは脇に置いておく）。このため、ファイル＃１はキャッシュの中には置かれないが、そのレコードは下記のように更新される。
【表６】
0005592489.tif 000007
その点において、ファイル＃１が午後１０：００時よりも後の時間に再度要求される場合、それは今削除されたアイテム（ファイル＃４、午後４：００時）よりも最近（午後９：００時）要求されたため、それはキャッシュに加えられる。
【００４０】
上述したように、本システム及び方法の１つの態様は、現在の要求時間と（特に）最後の要求時間とを使用して、アイテムをキャッシュすべきかどうかを決定する。
【００４１】
別の態様では、本システム及び方法は、現在の要求時間、最後の要求時間及び、それに加えて、それより前の要求時間を使用して決定を行う。さらに、本システム及び方法は、決定を行うときに異なる重みを適用することができる。例えば、アイテムをキャッシュすべきかどうかを決定する場合、最後の要求の時間をより前の要求時間よりも重要であると考えることができる。
【００４２】
１つのこのようなシステム及び方法は、指数関数的な減衰を使用する。ほんの一例として、各アイテムに優先順位の値を割り当てて、これにより、必要な場合、優先順位の低いアイテムをキャッシュから取り除いて、優先順位が高いアイテム用のメモリ空間を作ることができる。ただ１つの可能な方法は、各アイテムに優先順位の値の「Ｅ」を割り当てるステップを含み、ここで、
Ｅｎ＝−１＊（ＡＬＰＨＡ＊ＬＳｎ＋（１−ＡＬＰＨＡ）＊Ｅｎ−１）であり、
「ｎ」は、要求がｎ番目に出現したことを示す、例えば、Ｅ１０は１０回要求された後のアイテムの優先順位の値を示し、
「ＬＳｎ」は、要求のｎ番目の出現と以前の要求との間で経過した時間を示す、例えば、ＬＳ１０は、アイテムに対する９番目の要求と１０番目の要求との間で経過した時間を示し、そして
「ＡＬＰＨＡ」は、０と１との間及び０と１とを含む値を示している。その点において、プロセッサは、アイテムに対する優先順位の値を、それが要求されるたびに計算することができる。その値が、アイテムがキャッシュ内の他のアイテムよりも優先順位が高いことを示す場合、そのアイテムがキャッシュされる。キャッシュ内にそのアイテムに対する十分なメモリ空間がない場合、優先順位が低いアイテムが取り除かれる。（上記の式内の−１乗数を割愛することができることは理解されよう。この場合、より高いＥｎ値はより低いＥｎ値よりもキャッシングするために望ましくないと考えることができる。）
【００４３】
上述したように、最近の要求が古い要求よりも大きな重みが与えられるように、優先順位の値を計算することができる。その点に関して、Ｅｎに対して上記の式が使用される場合、最新の要求に多少の重みを与えるように、ＡＬＰＨＡを選択することができる。例えば、ＡＬＰＨＡを０．９になるように選択する場合、優先順位の値の９０％は、現在の要求と最後の要求との間の時間の継続期間に依存する。しかしながら、ＡＬＰＨＡを０．２になるように選択する場合は、優先順位の値のわずか２０％が、現在の要求と最後の要求との間の時間の継続期間に依存し、その値の残りは以前の要求の間の継続期間に依存する。その点において、ＡＬＰＨＡをシステムの要求に基づいて選択することができる。システムの定期的な統計分析に基づいて、時間的に自動的かつ動的にＡＬＰＨＡを調整することもできる。
【００４４】
アイテムのキャッシュ優先順位に対する以前の要求の影響は、より多くのその後の要求が受信されるにつれて指数関数的に減少する可能性がある。例えば、そのアイテムに対して１０回の要求があると仮定する。たとえＥｎのＡＬＰＨＡ値が０．２に設定されても（優先順位の値のわずか２０％が、２つの最も新しい要求の間の継続期間に依存する）、第１の要求と第２の要求との間の時間は、９番目の要求と１０番目の要求との間の時間よりも優先順位の値に対する影響はずっと少ない。実際に、ＡＬＰＨＡが０．２でありかつ約１０回の要求がある場合、最も初期の継続期間に対する最も新しい継続期間の影響は、約１０：１になる可能性がある。他方では、ＡＬＰＨＡを１に設定することができる、この場合、優先順位の値は最後の要求の間の継続期間に完全に依存する。
【００４５】
アイテムに対する要求が初めて受信され、かつＥｎに対して前記の式が使用される場合、Ｅｚｅｒｏに対してディフォルト値を選択することができる。小さいＥ値は一般に優先順位が高いアイテムを示すため、前に見たことがないアイテムに高い優先順位を与えることが好ましい場合は、Ｅｚｅｒｏに対して小さいディフォルト値を選択することができ、逆の場合も同様である。
【００４６】
別の方法では、要求レコード１４５は、各アイテムに対して単一の「Ｅ」値を記憶することができる、すなわち、それは各アイテムの要求ごとに別個のＥ値を記憶しない。そのことについては、アイテムが最初に要求される場合、Ｅに対して特別な値を記憶して、そのアイテムの最後の要求がまたその最初の要求であったことを示すことができる。そのアイテムに対して次の要求が受信されると、本システム及び方法は、現在のＥ値が特別な値に等しいかどうかを確認することができる。等しい場合、ＡＬＰＨＡ＝１であるようにＥ値を計算することができる、これにより、第１の要求と第２の要求との間の時間の長さに対して、式の中の全ての重みが配置される。本システム及び方法が、現在のＥ値は特別な値ではないと判断する場合、式をＡＬＰＨＡの通常の値に基づいて計算することができる。いずれにせよ、本システム及び方法は、次に、Ｅの前の値をＥに対して新しく計算された値と置き換えることができる。
【００４７】
本システム及び方法の利点の１つは、その能力が上記の態様とは異なる又は上記の態様に相乗効果的に組み合わされることができる構成の中で実行されるといった、その柔軟性である。
【００４８】
例えば、上記のシステム及び方法は、情報のアイテムをキャッシュすべきかどうかを判断するために、他のシステム及び方法と組み合わされることができる。その点において、そのアイテムがこれまで要求されたことがなかったという事実にもかかわらず、それがキャッシュされる状況が存在する。プロセッサはメモリ空間が存在するときはいつも、すなわち、アイテムの大きさが、キャッシュの全記憶容量からキャッシュ内に記憶されている他の全てのアイテム（もしあれば）を一緒にした大きさを引いたものよりも小さい場合は、アイテムをキャッシュ内に自動的に記憶することができる。別の方法では、アイテムをキャッシュすべきかどうかを示すことができる、アイテムに関連した別の特性が存在する。例えば、プロセッサは、ファイルが極めて人気がありかつ上記のＥｎ式が重み係数としてファイルの知名度を含みうることを示す情報を備えることができる。
【００４９】
本システム及び方法は、キャッシングを決定する根拠を、要求の詳細な日時を記憶せずに、要求時間に置くこともできる。優先順位の値に関連して前述したように、本システム及び方法は、多くのパラメータを有する式から計算される値を記憶することができ、そのわずか１つが要求時間である。
【００５０】
また前述したように、本システム及び方法は、アイテムの任意の特定の大きさに限定されることはない。ほんの一例として、個々のアイテムは、可変サイズのファイル、固定サイズのデータ部分、又はその両方を含みうる。それぞれ２ＭＢの４つのチャンクと０．５ＭＢの１つのチャンクから構成する８．５ＭＢファイルといった、固定サイズのチャンクの状態で記憶されかつストリームされる可変サイズのビデオの例を検討する。ユーザが最初の部分を見た後でビデオを終えることは一般的であるため、サーバが第１のチャンク又は２つのチャンクのみを送信することは十分に可能である。１つの態様では、本システム及び方法は、各チャンクを別個のアイテムであるとみなす可能性がある、この場合、最初の２つのチャンクはキャッシュされるが残りはキャッシュされない可能性がある。
【００５１】
別の態様では、本システム及び方法は、全体のファイルを単一のアイテムとみなす可能性がある、この場合、最初の１つ又は２つのチャンクだけが相次いでエンド・ユーザ配送されても、全てのチャンクがそのファイルに対する反復された要求に応じてキャッシュされる。この態様は、サーバ１１０がＨＴＴＰプロトコルに基づいて、別のサーバからのファイルをプロクシによって提供する場合は特に有用である、サーバ１１０がそのキャッシュから要求されたファイルの最初の２つのチャンクをストリームしまた残りは別のサーバに転送することは可能ではない。
【００５２】
さらに別の態様では、本システム及び方法は、本システム及び方法に基づいて全アイテムをキャッシュすることができる、さらに別の基準に従って、アイテムの一部を削除することもできる。例えば、サーバは、ファイルに対する要求レコードに基づいて、８．５ＭＢファイルの全ての４つのチャンクをキャッシュすることができる。しかしながら、サーバは、周知のキャッシング・アルゴリズム（例えば、Least Recently Used（ＬＲＵ）アルゴリズム）を使用して、８．５ＭＢファイルの最後の２つのファイルのような不人気のチャンクを、それらがまれにしかユーザに送られない場合は、時折、削除することができる、前述したように、本システム及び方法は、新たに要求されたファイルの要求時間を最後に削除されたアイテムの存続期間と比較することによって、新たに要求されたアイテムをキャッシュすべきかどうかを判断することができる。この段落で記述された態様では、本システム及び方法は、新たに要求されたファイルの要求時間を最後に削除されたチャンクの存続時間と比較することができる。
【００５３】
さらに、本システム及び方法を大規模なクライアント/サーバによるコンテンツ配信網と共に使用する場合は、特定の利点が生じる可能性があるが、特定の態様では、コンピュータ・チップのような小さい閉じたシステムの中で実現することもできる。ほんの一例として、また図２に示すように、マイクロプロセッサ２１０は、命令ソース２２０からマイクロコード命令のシーケンスを事前に取り込み、命令が近い将来使用されるとシステムが予想する場合、それらを単一の半導体チップ２４０上の比較的小さなキャッシュ２３０内に記憶することができる。その点において、情報の個々のアイテムは、マイクロプロセッサによって取得および処理される一連のマイクロコード命令を構成することができる。マイクロプロセッサ２１０が命令を必要とする場合、それはキャッシュ制御部２５０から命令を要求することができる。その命令が命令ブランチの一部であり、かつその命令ブランチがキャッシュ２３０に記憶されている場合、制御部２５０は命令をキャッシュから提供する。そうでない場合は、制御部２５０は、適用可能なブランチを命令記憶部２２０から取得する。ブランチが最初に記憶部２２０から取り出される場合、それはキャッシュされない。しかしながら、ブランチが以前に取り出されている場合は、制御部２５０は、キャッシュ内に記憶された他のブランチに対してこのブランチが処理された最後の時間に基づいて、このブランチをキャッシュすると決定することができる。
【００５４】
逆の言い方をすれば、前述したものよりもさらに大きなネットワーク・ベースのシステムの中で、本システム及び方法を実現することができる。例えば、図３に示すように、エッジ・サーバ３１０は、第２層サーバ３１５〜３１６からデータを要求することができる、それらは各自のキャッシュ３２５〜３２６及び要求レコードのセット３３５〜３３６を有することができ、また図３に示すサーバを運営する会社が動作させる他のサーバから利用できるファイルの一部のみを含みうる。多くの場合、第２層サーバは、キャッシュ・サイズが大きいといった、エッジ・サーバよりも大きな記憶容量を有している。このため、第２層サーバ３１５〜３１６は、第３層サーバ３４０〜３４１などの他のサーバからファイルを要求することができる、これは今度は、サーバ３１０を介して利用可能な全ての情報を記憶することができる（又は、別の場合では、全ての情報を得ることができる）。このため、任意のクライアント・デバイス１５０〜１５３からのファイルに対する要求は、全システム３００の複数の層の全体を通してカスケード接続するように、ファイル及びそのキャッシングに対する要求を生じさせる可能性がある。それに関して、本システム及び方法を使用して、どのファイルをエッジ・サーバ３１０でキャッシュすべきか、またどれをより大きな容量の大きなキャッシュに転送すべきかを決定することができる。
【００５５】
本システム及び方法は、地域分散形のエッジ・サーバと一緒に使用する場合、特に好適である。例えば、本システム及び方法が、地理上の区域に広く分散して配置されたエッジ・サーバにおいて実行される場合、エッジ・サーバによって要求及び提供されるアイテムは位置に極めて大きく依存する。例えば、日本語の面白いビデオ・クリップは、東京のエッジ・キャッシュによってサービス提供されるユーザの間では大きな人気があるため、東京ベースのエッジ・サーバはそのクリップを記憶することができる。しかしながら、そのクリップは、ロンドンのエッジ・キャッシュによってサービス提供されるユーザの間では人気がないため、それはそのクリップを記憶しない。
【００５６】
単一のサーバもまた、キャッシュの複数の層を持ち、ネットワークの支援なしでそれらのキャッシュにアクセスすることができる。例えば、図４に示すように、コンピュータ４００は、キャッシュ４１１に関連した要求レコード４１０を問い合わせることによって、アイテムに対する最初の確認を行うことができる。アイテムがキャッシュ４１０に存在しない場合は、それは、第２の独立したキャッシュ４２１に関連した要求レコード４２０の第２の独立したセットに問い合わせることができる。第２のキャッシュがそのアイテムを有していない場合は、コンピュータは要求レコードの他のセットに関連した他のキャッシュを確認することができる。
【００５７】
それに関して、本システム及び方法は、様々な種類の複数のメモリを有するデバイスと一緒に使用されることができる。例えば、サーバは単一のソリッド・ステート・ドライブ（例えば、フラッシュ・ドライブ）及び複数のローカル・ディスク・ドライブの両方にローカルにアクセスすることができる。フラッシュ・メモリの容量はディスク・ドライブよりも小さいが、それは情報を、ディスク・ドライブよりも平均して早く提供することもできる。さらにまた、サーバはそこから要求される可能性がある全ての情報よりも少ない情報を保持することになるため、それは情報を発生するサーバ上に記憶される情報にアクセスすることができる。この情報は、集合的にビデオ・ファイルを構成するチャンクの形式で記憶されることができる。
【００５８】
図６は、例えば、フラッシュ・メモリ、ディスク・メモリ、及び（オリジン・サーバからといったような）他のノードに配置されたメモリなどの、読み出し速度及び容量が異なる階層の中で情報のチャンクを記憶するシステムにおいて実行されることができるただ１つの方法を示している。チャンクは、このチャンクを記憶している最速のメモリから読み出される、例えば、それがフラッシュ・メモリの中にある場合はフラッシュ・メモリから、そこにない場合はディスク・メモリから、またそれがフラッシュ・メモリやディスク・メモリに記憶されていない場合はオリジン・サーバから読み出される。さらに、チャンクがオリジン・サーバから読み出されるたびに、コピーがローカル・ディスクに記憶されることができる（そして、必要な場合、最も古いチャンクがローカル・ディスクから削除される）。
【００５９】
しかしながら、チャンクがサーバから読み出された後で、このチャンクは自動的にディスク・メモリに記憶されることができるが、それがディスクから読み出される後で、それがフラッシュ・メモリ内に自動的に配置されることはない。さらに、チャンクがオリジン・サーバからフラッシュ・メモリに直接昇進されることはできない。そうではなく、本システム及び方法の１つの態様では、また参照番号６１０〜６１３で示すように、その最後の要求からの経過時間がフラッシュ・メモリ内の最後に削除されたチャンクの存続時間よりも短い場合は、チャンクはディスク・メモリからフラッシュ・メモリに進められるに過ぎない。
【００６０】
さらに別の態様では、図６のシステム及び方法は、余裕がある場合は、チャンクをフラッシュ・メモリ内に自動的に記憶する。別の方法では、それはオリジン・サーバから直接受け取ったどのようなチャンクでも、キャッシュが空の状態から始まりキャッシュが最初にチャンクを削除するまでのタイム・スパンの間に、直接フラッシュ・メモリ内に（例えば、ディスクをバイパスして）自動的に記憶することができる。
【００６１】
キャッシュは、クライアント・デバイスがアイテムを要求した日時に依存するのではなく、キャッシングを決定する基準として、別の時間ベースのイベントを使用することもできる。例えば、情報のアイテムが実行可能なファイルであり、かつ本システム及び方法がパーソナル・コンピュータ上で実行される場合、要求に関連した時間は、ファイルが磁気ディスクから専用のディスク・キャッシュにロードされる時間と考えることができる（すなわち、コンピュータの構成要素の中で生じる要求、ファイルをディスク・キャッシュにロードする要求を構成する要求、及びファイルがローディングを開始したときの要求の時間）。別の方法では、要求の時間は、プロセッサがファイルをＲＡＭにロードした後でその実行を開始する時間と考えることができる。さらに別の方法では、要求の時間は、要求が受け取られた時間、要求が送られた時間、又は要求が実行された時間と考えることができる。
【００６２】
本システム及び方法は、データを保護するための様々な手段をさらに備えることができる。例えば、要求レコード１４５は、高速アクセスするためにＲＡＭ内にメタデータとして記憶されることができるが、そのレコードがディスク内に存在することもよくあるため、関連するプログラムがクラッシュするかあるいは再起動する場合、状態は、再構築されたものからではなく、ディスクから読み取ることができる。
【００６３】
上記の代替的な実施形態のほとんどは互いに矛盾するものではなく、様々な組み合わせで実施して独特な利点を達成することができる。上記で検討した特徴のこれらの及び他の変形例及び組み合わせは、特許請求の範囲によって規定された本発明から逸脱することなく利用することができるので、実施形態の上述した説明は、特許請求の範囲によって規定されるような本発明を限定するものではなく説明するものとして受け取られるべきである。本発明の実施例を提供すること（及び「などの」、「含む」などと表された文節）は、本発明を特定の実施例に限定すると解釈してはならない、むしろ、実施例は多数の可能な実施形態の１つだけを例示するように意図されていることも理解されよう。
【産業上の利用可能性】
【００６４】
本発明は、コンピュータ用データ処理システムを含む広い産業上の利用可能性を有しているが、これに限定されることはない。
【図１】
0005592489.tif 000008
【図２】
0005592489.tif 000009
【図３】
0005592489.tif 000010
【図４】
0005592489.tif 000011
【図５】
0005592489.tif 000012
【図６】
0005592489.tif 000013