(57)【特許請求の範囲】
【請求項１】
少なくとも１つのパリティブロックが少なくとも１つのキャッシュ内のブロックのポピュラリティより高いポピュラリティを有する場合、前記パリティブロックを前記キャッシュにキャッシュするステップを有する方法であって、
前記パリティブロックのポピュラリティは、永久ストレージからの前記パリティブロックの実際の読み出し及び付随的な読み出しと、前記キャッシュからの前記パリティブロックの読み出しとの双方によって決定される方法。
【請求項２】
前記パリティブロックがキャッシュされていないとき、前記パリティブロックのポピュラリティは、実際の又は付随的なものであるかに関わらず、永久ストレージからの前記パリティブロックの読み出しによって決定され、
前記付随的な読み出しは、前記パリティブロックのポピュラリティを何れのキャッシュされているブロックより高くしない、請求項１記載の方法。
【請求項３】
前記パリティブロックの実際の読み出しの結果として、前記パリティブロックが前記キャッシュの少なくとも１つの他のブロックと同程度以上のポピュラリティを有する場合、前記パリティブロックをキャッシュするステップをさらに有する、請求項１記載の方法。
【請求項４】
前記パリティブロックが、前記キャッシュにおける前記少なくとも１つの他のブロックと同程度のポピュラリティを有し、前記少なくとも１つの他のブロックより直近に読み出されている場合、前記パリティブロックをキャッシュするステップをさらに有する、請求項３記載の方法。
【請求項５】
前記パリティブロックをマルチノードストリームサーバのノードにキャッシュするステップをさらに有し、
前記パリティブロックがキャッシュされるノードは、前記パリティブロックが格納されるマスストレージを有する、請求項１記載の方法。
【請求項６】
前記パリティブロックのポピュラリティは、前記パリティブロックの読み出しが、１以上の時間インターバルにおいてマスストレージ又はキャッシュから何回行われたかによって少なくとも部分的に決定される、請求項１記載の方法。
【請求項７】
前記パリティブロックが前記キャッシュ内のその他のブロックの少なくとも一部より直近に読み出されている場合でも、前記パリティブロックのポピュラリティが前記キャッシュ内のその他のブロックのポピュラリティより高くない場合には前記パリティブロックをキャッシュしないステップをさらに有する、請求項１記載の方法。
【請求項８】
置換ブロックが永久ストレージから読み出されるよりも頻繁に前記パリティブロックがキャッシュから読み出される場合でも、前記ブロックのポピュラリティが前記置換ブロックより高くない場合には前記パリティブロックを置換するステップをさらに有する、請求項１記載の方法。
【請求項９】
マルチノードメディアサーバの各ノードは、前記ノードにより永久に格納されるブロックのポピュラリティを維持する、請求項１記載の方法。
【請求項１０】
少なくとも１つの減衰ファンクションを前記パリティブロックのポピュラリティに適用するステップをさらに有する、請求項１記載の方法。
【請求項１１】
ある時間の経過のため、前記パリティブロックのポピュラリティを減少させるステップをさらに有する、請求項１０記載の方法。
【請求項１２】
前記時間の経過後、前記パリティブロックのポピュラリティをある大きさによって除するステップをさらに有する、請求項１１記載の方法。
【請求項１３】
ポピュラリティの順序を保持した方法によって前記パリティブロックのポピュラリティを減少させるステップをさらに有する、請求項１１記載の方法。
【請求項１４】
前記パリティブロックがポピュラリティリミットに達した結果として、前記減衰ファンクションを適用するステップをさらに有する、請求項１１記載の方法。
【請求項１５】
スタートアップ及び／又はリセットの状況の結果として、前記パリティブロックのポピュラリティを初期化するステップをさらに有する、請求項１記載の方法。
【請求項１６】
前記パリティブロックのポピュラリティの履歴に少なくとも部分的に従って、前記パリティブロックのポピュラリティを初期化するステップをさらに有する、請求項１５記載の方法。
【請求項１７】
前記パリティブロックに対応するコンテンツブロックを有するプログラムの視聴履歴及び／又はメディアストリーミングに少なくとも部分的に従って、前記パリティブロックのポピュラリティを初期化するステップをさらに有する、請求項１５記載の方法。
【請求項１８】
隣接する格納位置のブロックのポピュラリティに少なくとも部分的に従って、前記パリティブロックのポピュラリティを初期化するステップをさらに有する、請求項１５記載の方法。
【請求項１９】
メディアサーバハイパーキューブの異なるノードの隣接するＲＡＩＤ格納位置のブロックのポピュラリティに少なくとも部分的に従って、前記パリティブロックのポピュラリティを初期化するステップをさらに有する、請求項１８記載の方法。
【請求項２０】
永久マスマシーン記憶ストレージと、
キャッシュメモリと、
少なくとも１つのパリティブロックが前記キャッシュ内のブロックのポピュラリティより高いポピュラリティを有する場合、前記パリティブロックを前記キャッシュにキャッシュするロジックと、
を有するシステムであって、
前記パリティブロックのポピュラリティは、前記永久ストレージからの前記パリティブロックの実際の読み出し及び付随的な読み出しと、前記キャッシュからの前記パリティブロックの読み出しとの双方によって決定されるシステム。
【請求項２１】
前記パリティブロックがキャッシュされていないとき、実際の又は付随的なものであるかに関わらず、永久ストレージからの前記パリティブロックの読み出しによって前記パリティブロックのポピュラリティを決定するロジックと、
前記パリティブロックのポピュラリティを何れのキャッシュされているブロックより前記付随的な読み出しを高くしないロジックと、
をさらに有する、請求項２０記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
［優先権の主張］
本出願は、２００５年６月１４日に出願された出願番号６０／６９０６９５を有する仮特許出願“ＭＵＬＴＩＭＥＤＩＡ  ＳＴＲＥＡＭ  ＳＥＲＶＥＲ”の主題に対応するユーティリティ出願としての優先権を主張する。
［技術分野］
本開示は、データ処理システムにおけるキャッシュ処理技術に関する。
【背景技術】
【０００２】
データキャッシュ処理は、データ処理システムのパフォーマンスを向上させるかもしれない。キャッシュリプレースメント技術は、ＬＲＵ（Ｌｅａｓｔ−Ｒｅｃｅｎｔｌｙ−Ｕｓｅｄ）及びＬＦＵ（Ｌｅａｓｔ−Ｆｒｅｑｕｅｎｔｌｙ−Ｕｓｅｄ）を含む。しかしながら、これらの技術は、データブロックがマスストレージから読み出されるときは常に、当該ブロックをキャッシュ処理し、キャッシュから他のブロックを取り除くかもしれない。しかしながら、これらの技術は、大量のオーディオ及び／又はビジュアル（すなわち、Ａ／Ｖ）情報をストリーミング又は操作するデータ処理システムにおいては全く適していないかもしれない。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明の課題は、Ａ／Ｖ情報のためのデータ処理システムにおけるキャッシュ処理技術を提供することである。
【課題を解決するための手段】
【０００４】
一方法は、少なくとも１つのキャッシュに少なくとも１つのブロックを、該ブロックが前記キャッシュの各ブロックのポピュラリティより高いポピュラリティを有する場合、キャッシュ処理するステップを有し、前記ブロックのポピュラリティは、永久ストレージからの前記ブロックの読み出し及び前記キャッシュからの前記ブロックの読み出しによって決定されることを含む及び／又は伴うかもしれない。前記キャッシュ処理するステップは、前記ブロックがキャッシュの少なくとも１つの他のブロックと同程度、より高い又は同程度以上のポピュラリティを有する場合、前記ブロックをキャッシュ処理するステップ、前記ブロックがキャッシュ処理されるノードが前記ブロックが格納されている大容量ストレージを含むマルチノードストリームサーバのノードに前記ブロックをキャッシュ処理するステップ、及び／又は前記ブロックのポピュラリティが１以上の期間において大容量ストレージ又はキャッシュから前記ブロックの読み出しが何回実行されたかに少なくとも部分的によって決定されるステップを含む及び／又は伴うかもしれない。前記ブロックがキャッシュの少なくとも１つの他のブロックと同程度、より高い又は同程度以上のポピュラリティを有する場合、前記ブロックをキャッシュ処理するステップは、前記ブロックがキャッシュにおける少なくとも１つの他のブロックと同程度のポピュラリティを有し、さらに該ブロックより最近に読み出されている場合、前記ブロックをキャッシュ処理するステップを含む及び／又は伴うかもしれない。
【０００５】
本方法は、前記ブロックのポピュラリティが前記キャッシュにおける他のブロックより高いポピュラリティを有しない場合、前記ブロックが前記キャッシュにおける他のブロックの少なくとも一部より最近に読み出されているとしても、前記ブロックをキャッシュ処理しないステップを含む及び／又は伴うかもしれない。
【０００６】
本方法は、前記ブロックのポピュラリティがリプレースメントブロックより高いポピュラリティを有しない場合、前記リプレースメントブロックが永久ストレージより読み出されるより頻繁に前記ブロックが読み出されていても、前記ブロックをリプレースするステップを含む及び／又は伴うかもしれない。
【０００７】
本方法は、マルチノードメディアサーバの各ノードが、該ノードにより永久に格納される各ブロックのポピュラリティを維持するステップを含む及び／又は伴うかもしれない。
【０００８】
本方法は、少なくとも１つの減衰ファンクションをブロックポピュラリティに適用するステップを含む及び／又は伴うかもしれない。前記少なくとも１つの減衰ファンクションをブロックポピュラリティに適用するステップは、ある時間の経過後に前記ブロックポピュラリティの少なくとも一部を減少させるステップ、ポピュラリティ順序を保存するように前記ブロックポピュラリティを減少させるステップ、及び／又は少なくとも１つのブロックがポピュラリティリミットに到達した結果として、前記減衰ファンクションを適用するステップを含む及び／又は伴うかもしれない。前記ある時間の経過後に前記ブロックポピュラリティの少なくとも一部を減少させるステップはさらに、前記時間の経過後に前記ブロックポピュラリティの少なくとも一部をある数量により除するステップを含む及び／又は伴うかもしれない。
【０００９】
スタートアップ及び／又はリセット状況の結果として、少なくとも一部のブロックポピュラリティを初期化するステップはさらに、前記ブロックのポピュラリティ履歴に少なくとも部分的に従って、ブロックポピュラリティを初期化するステップ、前記ブロックを有するプログラムのメディアストリーミング及び／又は視聴履歴に少なくとも部分的に従って、ブロックポピュラリティを初期化するステップ、及び／又は隣接するストレージ位置の各ブロックのポピュラリティに少なくとも部分的に従って、ブロックポピュラリティを初期化するステップを含む及び／又は伴うかもしれない。前記隣接するストレージ位置の各ブロックのポピュラリティに少なくとも部分的に従って、ブロックポピュラリティを初期化するステップはさらに、メディアサーバハイパーキューブの各ノードの隣接するＲＡＩＤストレージ位置の各ブロックのポピュラリティに少なくとも部分的に従って、ブロックポピュラリティを初期化するステップを含む及び／又は伴うかもしれない。
【００１０】
他のシステム、方法、装置の各特徴が、本出願を構成するテキスト（詳細な説明及び請求項など）及び図面に記載される。
【発明の効果】
【００１１】
本発明によると、Ａ／Ｖ情報のためのデータ処理システムにおけるキャッシュ処理技術を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、ハイパーキューブメディアサーバの実施例のブロック図である。
【図２】図２は、ブロックポピュラリティキャッシュマネージメント技術を適用する際のキャッシュコンフィギュレーションの実施例のブロック図である。
【図３】図３は、ブロックポピュラリティキャッシュマネージメント技術の実施例のフローチャートである。
【図４】図４は、パリティブロックを伴うブロックポピュラリティキャッシュマネージメント技術の実施例のフローチャートである。
【発明を実施するための形態】
【００１３】
“一実施例”又は“ある実施例”という用語は、必ずしも同一の実施例を参照しているとは限らない。
【００１４】
文脈が明確に要求する場合を除き、本記載及び請求項を通じて、“有する”などという用語は、排他的又は包括的な意味とは対照的に、内包的な意味に解釈されるべきである。すなわち、“含むが、それに限定されない”という意味である。単数形又は複数形を利用した用語はまた、それぞれ複数形又は単数形を含むかもしれない。さらに、“ここでは”、“以上”、“以下”や同様の単語は、本出願に使用されるときには、本出願の全体を参照するものであり、本出願の特定の部分を参照するものでない。請求項において、２以上のアイテムのリストを参照して“又は”という単語が使用されるとき、当該単語は、リストの何れかのアイテム、リストのすべてのアイテム及びリストのアイテムの何れかの組み合わせのすべてをカバーしている。
【００１５】
“ロジック”とは、装置の動作に影響を及ぼすのに適用される信号及び／又は情報を表す。ソフトウェア、ハードウェア及びファームウェアは、ロジックの具体例である。ハードウェアロジックは、回路により実現されるかもしれない。一般に、ロジックは、ソフトウェア、ハードウェア及び／又はファームウェアの組み合わせを有するかもしれない。
【００１６】
ハイパーキューブメディアサーバ
図１は、ハイパーキューブメディアサーバの実施例のブロック図である。ハイパーキューブは、ノード１０２〜１０５を有する。ハイパーキューブは、より多く又はより少ないノードを有してもよい。
【００１７】
各ノード１０２〜１０５はそれぞれ、ローカルマスストレージ１１７〜１２０を有するかもしれない。マスストレージ１１７〜１２０（永久ストレージ又はデータストレージとも呼ばれる）は、メディアコンテンツのブロックを有するかもしれない。メディアコンテンツは、デジタルプログラムエピソード及び／又は映画などのコンテンツを有するかもしれない。コンテンツは、メディア配信システムを介しハイパーキューブによりストリーミングされるかもしれない。ビデオ・オン・デマンドアプリケーションでは、加入者リクエストの結果として、メディアは特定の位置にストリーミングされるかもしれない。
【００１８】
ノード１０２〜１０５はそれぞれ、ローカルＩ／Ｏインタフェース１０７〜１１０を有するかもしれない。Ｉ／Ｏ１０７〜１１０は、加入者への最終的な配信のため、メディアストリームをメディア配信プラントに配信するのに利用されるかもしれない。
【００１９】
あるプログラムは、複数のノードのマスストレージにあるそれのコンテンツのブロックを有するかもしれない。これは、シーケンシャルなコンテンツのブロックについて、すなわち、同一のストリームの一部として互いに視聴されるコンテンツのブロックについて成り立つ。例えば、ブロック１０〜２５が映画のオープニングシーンを有し、ブロック１０がまず視聴され、次にブロック１１が視聴されるなどの場合、ブロック１０はマスストレージ１１７に設けられ、ブロック１１はマスストレージ１２０に設けられ、ブロック１２はデータストレージ１１８などに設けられる。図１に示されるようなメディアストリーミングシステムは、ブロックストレージについて特定の構成を仮定するものでない。
【００２０】
ノード１０２〜１０５はそれぞれ、ローカルキャッシュ１１２〜１１５を有してもよい。ノードのキャッシュは、何れかの時点において他のブロックと共に１以上のプログラムのためのブロックを有するかもしれない。これらのノードは、ブロックに関する他の情報を各自のキャッシュ又は何れかに（他の付属のメモリなど）格納するかもしれない。例えば、ポピュラリティ（ｐｏｐｕｌａｒｉｔｙ）情報が、現在キャッシュされていないブロックと共にキャッシュされているブロックに対して格納されるかもしれない。
【００２１】
メディアストリームが生成されると、それに係るブロックがマスストレージ又はキャッシュから読み出される。マスストレージ又はキャッシュからのブロックの読み出しは、それのポピュラリティを増大させるかもしれない。ストリームのシーケンシャルブロック又はほぼシーケンシャルブロックのポピュラリティは、各時点において類似する値を有することが予想されるかもしれない。各ブロックのポピュラリティは、これらのブロックがストリームにおいて広範に分離しているとき、又は異なるストリームに分離しているとき、実質的に異なるかもしれない。例えば、一部の実施例では、一部のブロックが“リセット”、ノミナル又はミニマムポピュラリティを有し、それと同時に同一の又は他のコンテンツのブロックが最大ポピュラリティを意味するポピュラリティリミットに接近するか又は当該リミットにある可能性がある。
【００２２】
メディアサーバにおけるブロックキャッシュ処理
ブロックは、それがマスストレージ又はキャッシュから読み出される場合、ブロックのポピュラリティが増加するかもしれない。
【００２３】
方法は、少なくとも１つのブロックがキャッシュの各ブロックのポピュラリティより相対的に高いポピュラリティを有する場合、当該ブロックをキャッシュ処理することを含む及び／又は伴うかもしれない。各ブロックは、これらのブロックがマスストレージ及び／又は他のノードに格納される場合、ノードによりキャッシュ処理されるかもしれない。一部の実施例では、マルチノードメディアサーバの各ノードは、ノードにより永久的に格納される（例えば、ノードのローカルマスストレージに格納される）ブロックのポピュラリティを維持するかもしれない。
【００２４】
少なくとも１つのブロックがキャッシュの他のブロックのポピュラリティより相対的に高いポピュラリティを有する場合、マスストレージから少なくとも１つのキャッシュに読み出された当該ブロックのキャッシュ処理は、それがキャッシュの他の少なくとも１つのブロックと同程度のポピュラリティを有するか、又はより高いポピュラリティを有する場合、当該ブロックをキャッシュ処理することを含む及び／又は伴うかもしれない。このブロックは、ブロックが格納されているマスストレージを含む当該ブロックがキャッシュ処理されているマルチノードストリームサーバのノードにキャッシュ処理されてもよい。
【００２５】
当該ブロックがキャッシュの他の少なくとも１つのブロックと同程度の又はより高いポピュラリティを有する場合、ブロックをキャッシュ処理することは、キャッシュの少なくとも１つの他のブロックと同程度のポピュラリティを有し、当該他のブロックより最近に読み出されたものである場合、当該ブロックをキャッシュ処理することを含む及び／又は伴うかもしれない。
【００２６】
本方法は、ブロックのポピュラリティがキャッシュの他のブロックより相対的に高いポピュラリティを有していない場合、当該ブロックがたとえキャッシュの他のブロックの少なくとも一部より最近に読み出されていたとしても、当該ブロックをキャッシュ処理しないことを含む及び／又は伴うかもしれない。
【００２７】
本方法は、マルチノードメディアサーバの各ノードがノードにより永久に格納されているブロックのポピュラリティを維持することを含む及び／又は伴うかもしれない。
【００２８】
ブロックのポピュラリティは、マスストレージ又はキャッシュからのブロックの読み出しがある期間に何回発生したかによって少なくとも部分的に決定されるかもしれない。読み出し処理に、異なる期間からの読み出しがポピュラリティの決定において異なる重み付けが与えられるようなものであってもよい。本方法は、少なくとも１つの減衰ファンクションをポピュラリティに適用することを含む及び／又は伴うかもしれない。少なくとも１つの減衰ファンクションをポピュラリティに適用することは、ある時間の経過後にポピュラリティの少なくとも一部を減少させ、ポピュラリティの順序を保存する方法によりポピュラリティを減少させ、及び／又は少なくとも１つのブロックがポピュラリティリミットに到達した結果として減衰ファンクションを適用することを含む及び／又は伴うかもしれない。ある時間の経過後にポピュラリティの少なくとも一部を低減することは、ある時間の経過後にある数量によりポピュラリティの少なくとも一部を除することを含む及び／又は伴うかもしれない。
【００２９】
ブロックポピュラリティは、各種ファクタに従ってスタートアップ及び／又はリセット状況の結果として初期化されるかもしれない。スタートアップ及び／又はリセット状況の結果として少なくとも一部のブロックポピュラリティを初期化することは、隣接するブロック（ストリームにおいて隣接する）のポピュラリティに従ってブロックのポピュラリティ履歴に少なくとも部分的に応じてブロックポピュラリティを初期化し、及び／又は隣接するストレージ位置のポピュラリティに少なくとも部分的に従ってブロックポピュラリティを初期化することを含む及び／又は伴うかもしれない。隣接するストレージ位置の各ブロックのポピュラリティに少なくとも部分的に従うブロックポピュラリティの初期化は、メディアサーバハイパーキューブの各ノードの隣接するＲＡＩＤストレージ位置のブロックのポピュラリティに少なくとも部分的に従ってブロックポピュラリティを初期化することを含む及び／又は伴うかもしれない。
【００３０】
ブロックポピュラリティは、システムのすべてのブロックについて維持されてもよい。すべてのブロックは、現在キャッシュされているブロック、現在キャッシュされていない非パリティ（データとしても知られる）ブロック、及び現在キャッシュされていないパリティブロックを含む。パリティブロックは、当該データブロックがエラーの結果として再構成を必要とする場合、データブロックを構成するのに利用されるように情報を有する。
【００３１】
パリティブロックのポピュラリティは、マスストレージ又はキャッシュからの実際の読み出し又は付随的な（非明示的（ｉｍｐｌｉｅｄ）としても知られる）読み出しが実行されるときは常に増加される。付随的な読み出しは、パリティブロックに係るデータブロックが読み出されるときに行われるかもしれない。しかしながら、読み出しエラーが発生しないため、データブロックに係るパリティブロックは読み出される必要がなかった。パリティブロックのポピュラリティの増加は、当該増加がそれのポピュラリティ値をキャッシュに現在ある最もポピュラリティの低いブロックと同程度又はそれより高いものにする場合、付随的な読み出しの結果としては行われないかもしれない。このため、付随的な読み出しの結果として、何れのパリティブロックもキャッシュの現在のブロックをリプレースしない。
【００３２】
パリティブロックは、マスストレージからの実際の読み出しの結果として、それらのポピュラリティの増加を確認するかもしれない。このような読み出しは、パリティブロックにキャッシュの現在のブロックをリプレースさせるかもしれない。これは、現在キャッシュされている１以上のブロックのポピュラリティより大きく又は一部のケースでは同程度に大きくなるように、パリティブロックのポピュラリティが増加するときに行われるかもしれない。
【００３３】
すべてのブロックに関して、それがキャッシュから読み出される場合、パリティブロックのポピュラリティが増加されるかもしれない。
【００３４】
パリティブロックのポピュラリティは、減衰ファンクションを受けるかもしれない。減衰ファンクションは、上述したように機能するかもしれない。
【００３５】
ブロックポピュラリティキャッシュマネージメント技術を適用する際のキャッシュコンフィギュレーション
図２は、ブロックポピュラリティキャッシュマネージメント技術を適用する際のキャッシュコンフィギュレーションの実施例のブロック図である。メディアストリームＡ、Ｂ、Ｃ及びＤ並びにブロック２１３が示される。ストリームＡは、ブロック１、１１、２及び１２を有する。ストリームＢは、ブロック３、１３、４及び１４を有する。ストリームＣは、ブロック５、１５、６及び１６を有する。ストリームＤは、ブロック７、１７、８及び１８を有する。
【００３６】
ブロック識別子２１４は、ポピュラリティ２１５に関連付けされる。ブロック識別子１〜２０が示される。ブロック１は対応するポピュラリティ９を有し、ブロック２は対応するポピュラリティ２を有し、ブロック３は対応するポピュラリティ１を有するなどである。
【００３７】
キャッシュ２１６は、ブロック１、４、６、１０、１１、１４、１６及び２０を有する。これらは、図示されたメディアストリームＡ〜Ｄを有するブロックの読み出しの結果としてブロックポピュラリティが増加される直前である図示された時点において最も高いポピュラリティを有するブロックである。これらのストリームを有するブロック２１３が読み出された後、これらのブロック２１３のポピュラリティが増加されてもよい。これは、現在キャッシュされていないブロック（ブロック２など）と現在キャッシュされているブロック（ブロック１など）の両方について行われてもよい。本例では、各ポピュラリティは１ずつ増加される。このため、ブロック２は３のポピュラリティを有することになり、ブロック１は１０のポピュラリティを有することとなる。本例では、キャッシュのすべてのブロックがキャッシュされていないものより高いポピュラリティを有するとき、キャッシュは依然としてブロック１、４、６、１０、１１、１４、１６及び２０を有することとなる。
【００３８】
ポピュラリティキャッシュ処理
一実施例では、ブロックがキャッシュの他のブロックより高いポピュラリティを有する場合、当該ブロックはキャッシュ処理される。例えば、ブロックがキャッシュの少なくとも１つの他のブロックと同程度、より高い又は同程度以上のポピュラリティを有する場合、当該ブロックはキャッシュ処理されてもよい。ブロックがキャッシュの他のブロックと同程度のポピュラリティを有し、さらに他のブロックより最近に及び／又は頻繁に読み出される場合、当該ブロックがキャッシュ処理されるかもしれない。
【００３９】
ブロックのポピュラリティがキャッシュの他のブロックより高いポピュラリティを有しない場合、当該ブロックがキャッシュの他のブロックより最近に読み出されたとしても、及び／又は当該ブロックがキャッシュの他のブロックより頻繁に読み出されていたとしても、当該ブロックはキャッシュ処理されなくてもよい。
【００４０】
ブロックポピュラリティキャッシュマネージメント技術
図３は、ブロックポピュラリティキャッシュマネージメント技術の実施例のフローチャートである。図示された技術は、パリティブロックでないブロックに対するものである。
【００４１】
３０２において、例えば、１以上のノードのリセット又はブートアップ時に、ポピュラリティが初期化される。初期化は、オペレーティングシステムロジック、特定のノードのロジック又はシステムの他のロジックにより提供されるかもしれない。ある期間において各プログラムに対応するメディアストリームがリクエストされるとき、初期化が行われるようにしてもよい。
【００４２】
３０４において、ブロックが永久データストレージ又はキャッシュから読み出される。３０６において、ブロックポピュラリティが更新される。ブロックがストリーム生成の結果として読み出されるとき、ブロックを有するストリームが当該ブロックが読み出されたものと同一のノードによって、又は異なるノードによって出力されてもよい。
【００４３】
３０８において、ブロックポピュラリティは、それがキャッシュに現在ある他のブロックより高いポピュラリティを有しているか判断するためチェックされる。ブロックがすでにキャッシュされている場合、当該ステップは省略され、本プロセスは３１２に移行してもよい。キャッシュがフルでない場合、当該比較ステップは省略され、本プロセスは３１０に移行してもよい。
【００４４】
３１０において、ブロックポピュラリティは、少なくとも１つの現在キャッシュされているブロックより高いポピュラリティを有していたため（又はキャッシュがフルでなかったため）、当該ブロックがキャッシュされる。キャッシュがフルであった場合、ブロックのキャッシュ処理は、より低いポピュラリティを有する他のブロックをキャッシュから排除することを伴うかもしれない。一部の実施例では、他のブロックのポピュラリティと等しく、さらにそれのブロックがより最近に読み出されていた場合、ポピュラリティは他のブロックのポピュラリティより高いと考えられるかもしれない。
【００４５】
３１２において、更新されるポピュラリティが減衰状態を充足するか判断するため、更新されるポピュラリティの値がチェックされる。更新されるポピュラリティは、それがポピュラリティリミットなどに等しいか若しくは超過する場合、又はある期間が経過した場合若しくは他の条件によって、減衰条件を充足することになるかもしれない。
【００４６】
３１４において、減衰条件が充足されており、これにより、ポピュラリティ値が調整される。この調整は、ノードにより制御されているポピュラリティの一部若しくはすべてに対して、又はメディアサーバの複数のノードに対して行われるかもしれない。当該調整は、例えば、影響を受けるすべてのポピュラリティを１より大きな値により除算することにより影響を受けるすべてのポピュラリティを減少させることなどによって、各種方法により行われてもよい。
【００４７】
３０４において、他のブロックが読み出され、本プロセスが繰り返される。
【００４８】
ポピュラリティ減衰
ブロックポピュラリティを調整するため、１以上の減衰ファンクションが適用されるかもしれない。減衰ファンクションは、ある時間の経過後に、ブロックポピュラリティの少なくとも一部を低減するよう動作するかもしれない。例えば、減衰ファンクションは、ある時間の経過後にブロックポピュラリティの少なくとも一部をある数量だけ除するよう適用されるかもしれない。一般に、減衰ファンクションは、ポピュラリティの順序を保存する方法により、ブロックポピュラリティを低減するよう動作してもよい。
【００４９】
一部の実施例では、減衰ファンクションの適用は、イベントによりトリガーされるようにしてもよい。例えば、減衰ファンクションは、少なくとも１つのブロックがポピュラリティリミットに到達した結果として、適用されるようにしてもよい。
【００５０】
一部の実施例では、直近の減衰ファンクションが適用されてから、システム全体において又はシステムの何れかの部分においてある動作量が行われた後に、減衰が適用されてもよい。例えば、１以上のノード、１以上のディスク、ノードとディスクの組み合わせなど、各種サブシステムにグループ化されたブロックに対するいくつかの組み合わされたブロック読み出しの後に、減衰が適用されてもよい。
【００５１】
パリティブロックポピュラリティキャッシュマネージメント技術
図４は、パリティブロックを伴うブロックポピュラリティキャッシュマネージメント技術の実施例のフローチャートである。
【００５２】
４０２において、例えば、１以上のノードのリセット又はブートアップ持などに、ポピュラリティが初期化される。初期化は、オペレーティングシステムロジック、特定のノードのロジック又はシステムの他のロジックにより提供されてもよい。ある期間において各プログラムに対応するメディアストリームがリクエストされると、初期化が実行されてもよい。一実施例では、パリティブロックのポピュラリティは、キャッシュにおいて最も低いポピュラリティを有するブロックのポピュラリティに等しいか又はわずかに低い値に初期化される。
【００５３】
４０４において、パリティブロックは、永久データストレージ又はキャッシュから読み出される。この読み出しは、永久データストレージ若しくはキャッシュからの実際の読み出しであってもよく、又は当該読み出しは付随的な読み出しであってもよい。
【００５４】
４０６において、読み出しがパリティブロックの実際の読み出しか又は付随的な読み出しか判断される。
【００５５】
４０８において、読み出しが付随的であった場合、ブロックの潜在的に新しいポピュラリティが計算される。すなわち、更新されるポピュラリティが有する値が計算される。
【００５６】
４１０において、潜在的に新たなポピュラリティは、それがキャッシュに現在ある少なくとも１つの他のブロックより高いポピュラリティを有しているか判断するためチェックされる。そうでない場合、４１２において、ポピュラリティが増加される。そうである場合、ポピュラリティは増加されず、このため、キャッシュされていないブロックの付随的な読み出しは、ブロックのキャッシュ処理を実行しない。
【００５７】
４１４において、パリティブロックの読み出しが付随的なものでなかった場合、ブロックポピュラリティは増加される。４１６において、ブロックがすでにキャッシュされていた場合、本プロセスは４２２において終了する。そうでない場合、４１８において、ブロックがより高い新規なポピュラリティを有するか、又はキャッシュがフルでないか判断される。何れのケースでも、４２０において、ブロックはキャッシュに追加される。
【００５８】
一部の実施例では、パリティブロックがすでにキャッシュされている場合、付随的な読み出しは、キャッシュされたパリティブロックのポピュラリティを更新されるかもしれない。
【００５９】
当業者は、ここに記載された方法及び／又はシステムを実現可能な各種手段（ハードウェア、ソフトウェア及び／又はファームウェアなど）が存在し、及び／又は好適な手段が本方法が展開されるコンテクストに応じて変更可能であるということを認識するであろう。例えば、ある実施者がスピードと精度が優先されていると判断した場合、実施者はハードウェア及び／又はファームウェア手段を選択し、あるいは、フレキシビリティが優先されている場合、実施者はソフトウェアのみによる実現形態を選択するかもしれない。あるいは、実施者は、ハードウェア、ソフトウェア及び／又はファームウェアの組み合わせを選択するかもしれない。このため、ここに記載された方法が実現される可能性のある手段は複数存在し、その何れも利用される手段が可変的な展開されるコンテクスト及び実施者の固有の関心事（スピード、フレキシビリティ、予測可能性など）に応じて選択される。当業者は、実現形態の光学的特徴が光学的ハードウェア、ソフトウェア及び／又はファームウェアに関するものであるかもしれないことを認識するであろう。
【００６０】
上記詳細な説明は、ブロック図、フローチャート及び／又は具体例を利用することを介して装置及び／又は方法の各種実施例を提供した。このようなブロック図、フローチャート及び／又は具体例が１以上の機能及び／又は処理を含む限り、当該ブロック図、フローチャート又は具体例の範囲内の各機能及び／又は処理が、広範なハードウェア、ソフトウェア、ファームウェア又は実質的に任意のこれらの組み合わせによって、個別に及び／又は一体的に実現可能であるということ理解するであろう。ここに記載される主題のいくつかの部分は、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）又は他の統合されたフォーマットを介し実現されてもよい。しかしながら、ここに開示された実施例のいくつかの特徴が、１以上のコンピュータ上で実行される１以上のコンピュータプログラムとして（１以上のコンピュータシステム上で実行される１以上のプログラムとして）、１以上のプロセッサ上で実行される１以上のプログラムとして（１以上のマイクロプロセッサ上で実行される１以上のプログラムとしてなど）、ファームウェアとして、又は実質的に任意のこれらの組み合わせとして、標準的な集積回路において等しく実現可能であり、ソフトウェア及び／又はファームウェアのためのコードを書き込み及び／又は回路を設計することが、本開示に基づき当該分野の技術範囲内にあるということを当業者は認識するであろう。さらに、当業者は、ここに記載された主題のメカニズムが各種形式によるプログラムプロダクトとして配布可能であり、ここに記載された主題の例示的な実施例が実際に配布を実行するのに利用される信号搬送媒体の特定タイプに関係なく等しく適用されることを認識するであろう。信号搬送媒体の具体例として、以下に限定するものでないが、フロッピー（登録商標）ディスク、ハードディスクドライブ、ＣＤ  ＲＯＭ  デジタルテープ、コンピュータメモリなどの記録可能媒体と、ＴＤＭ又はＩＰベース通信リンク（パケットリンクなど）を利用したデジタル及びアナログ通信などの伝送タイプ媒体があげられる。
【００６１】
一般的には、当業者は、広範なハードウェア、ソフトウェア、ファームウェア又はこれらの何れかの組み合わせにより個別に及び／又は一体的に実現可能なここに記載された各種特徴が、各種タイプの“電気回路”から構成されるとみなすことができることを認識するであろう。このため、ここに使用される“電気回路”は、以下に限定するものでないが、少なくとも１つの離散的な電気回路を有する電気回路、少なくとも１つの集積回路を有する電気回路、少なくとも１つのＡＳＩＣを有する電気回路、コンピュータプログラムにより設定される汎用計算装置を構成する電気回路（ここに記載された方法及び／又は装置を少なくとも部分的に実行するコンピュータプログラムにより設定される汎用コンピュータ又はマイクロプロセッサなど）、メモリ装置を構成する電気回路（ランダムアクセスメモリなど）及び／又は通信装置を構成する電気回路（モデム、通信スイッチ、光電装置など）を含む。
【００６２】
当業者は、ここに与えられた形式により装置及び／又は方法を記載し、以降において、標準的な技術を利用してこのように記載された装置及び／又は方法をより大きなシステムに一体化することが、当該分野において一般的なことであると認識するであろう。すなわち、ここに記載された装置及び／又は方法の少なくとも一部は、妥当な程度の実験を介してネットワーク処理システムに統合することが可能である。
【００６３】
上述した特徴は、他の各種コンポーネントに含まれる又は接続される各コンポーネントを示す。このように示されたアーキテクチャは単なる一例であり、実際に同一の機能を実現する他の多くのアーキテクチャが実現可能であるということは理解されるべきである。概念的な意味では、同一の機能を実現するための任意のコンポーネントの構成が、所望の機能を実現するよう効果的に関連付けされる。このため、特定に機能を実現するため組み合わせされた任意の２つのコンポーネントは、アーキテクチャ又は中間的なコンポーネントに関係なく実現されるように、互いに関連付けされているとみなすことができる。同様に、そのように関連付けされた何れか２つのコンポーネントは、所望の機能を実現するため互いに動作可能に接続されているとみなすことができる。
【符号の説明】
【００６４】
１０２〜１０５  ノード
１０７〜１１０  Ｉ／Ｏインタフェース
１１２〜１１５  キャッシュ
１１７〜１２０  マスストレージ
【図１】
0005608765.tif 000002
【図２】
0005608765.tif 000003
【図３】
0005608765.tif 000004
【図４】
0005608765.tif 000005