(57)【要約】      （修正有）【課題】多数の異なるタイプの映画を多数の異なる加入者に供給する能力を有する記憶装置を提供する。【解決手段】オンデマンド・サーバ・システムは、１つ以上のフラッシュ・ベースのメモリ・デバイスへのアクセスを調整するメモリ・コントローラを含む。フラッシュ・デバイスは、それぞれのネットワーク上で複数の宛先の各々がオンデマンドで選択的に視聴することができる大量の映像コンテンツを格納する。読み出しバッファと書き込みバッファとを使用することにより、メモリ・コントローラは、書き込みバッファ内に格納されたデータのメモリ・デバイスのアレイへの転送と、メモリ・デバイスのアレイ内のデータの読み出しバッファへの転送と、を切り替えることができる。書き込みバッファは、オンデマンドの映像コンテンツを格納する。読み出しバッファは、ユーザに現在ストリーミングされているオンデマンドの映像コンテンツのセグメントを格納する。【選択図】図１
2008234629.tif 000002
【特許請求の範囲】
【請求項１】
コンテンツ・ストリームの特定部分を求める第１の要求を受信するステップと、
同第１の要求の受信に応答して、メモリ・デバイスのアレイからデータ・ブロックへのアクセスを開始するステップであって、同データ・ブロックは前記コンテンツ・ストリームの前記特定部分および前記コンテンツ・ストリームの対応する隣接部分を含むステップと、
それぞれの宛先へのオンデマンド・ストリーミングのために、読み出しバッファ内に前記アクセスしたデータ・ブロックの少なくとも一部を格納するステップと、
前記それぞれの宛先へ、前記コンテンツ・ストリームの特定部分の送信を開始するステップと、
を含む方法。
【請求項２】
前記メモリ・デバイスのアレイから前記データ・ブロックへのアクセスを開始するステップが、前記第１の要求によって指定されたデータよりも多いデータを前記メモリ・デバイスのアレイから検索するステップを含み、
前記データ・ブロックの少なくとも一部を格納するステップが、前記第１の要求によって指定されたデータよりも多い、前記読み出しバッファ内のメモリ・デバイスのアレイから検索されたデータ、を格納するステップを含む請求項１に記載の方法。
【請求項３】
前記コンテンツ・ストリームの異なる部分を求める第２の要求を受信するステップと、
前記読み出しバッファのコンテンツの前記異なる部分の送信を開始するステップであって、前記コンテンツ・ストリームの前記異なる部分が、前記読み出しバッファ内に格納された前記データ・ブロックの部分に含まれるステップと、をさらに含む請求項２に記載の方法。
【請求項４】
前記メモリ・デバイスのアレイから前記データ・ブロックへの前記アクセスを開始するステップが、
前記メモリ・デバイスのアレイの前記データ・ブロックの読み出しを開始するステップと、
前記メモリ・デバイスのアレイから前記データ・ブロックが検索可能になった後に、前記データ・ブロックをすべて検索する代わりにそれぞれの読み出しを打ち切って前記データ・ブロックの一部を検索するステップと、
前記データ・ブロックの前記部分を前記読み出しバッファに格納するステップと、
を含む請求項３に記載の方法。
【請求項５】
前記メモリ・デバイスのアレイから前記データ・ブロックへのアクセスを開始するステップが、
前記メモリ・デバイスのアレイから前記データ・ブロックの読み出しを開始するステップと、
前記メモリ・デバイスのアレイから前記データ・ブロックが検索可能になった後に、前記データ・ブロックをすべて検索する代わりに、前記読み出しを打ち切って前記データ・ブロックの一部を検索するステップと、
前記データ・ブロックの前記部分を、それぞれの宛先への前記データ・ブロックの前記部分のオンデマンドのストリーミングのために割り当てられた読み出しバッファの領域内に格納するステップと、
を含む請求項１に記載の方法。
【請求項６】
前記メモリ・デバイスのアレイから前記読み出しバッファへのデータ転送を使用可能にする一方で、前記メモリ・デバイスのアレイに最終的に格納される受信データを一時的に格納するために書き込みバッファを維持するステップと、
前記受信データがしきい値を超えたことの検出に応答して、
ｉ）前記メモリ・デバイスのアレイから前記読み出しバッファへのデータ・アクセスを使用不可にするステップと、
ｉｉ）前記書き込みバッファ内に格納された前記受信データの前記メモリ・デバイスのアレイへの転送を開始するステップと、
ｉｉｉ）前記転送時に、前記読み出しバッファ内の前記コンテンツ・ストリームの特定部分をそれぞれの宛先にストリーミングするステップと、
ｉｖ）前記転送後に、前記メモリ・デバイスのアレイ内に格納されたデータの読み出しバッファへの転送を再度使用可能にするステップと、
をさらに含む請求項１に記載の方法。
【請求項７】
前記メモリ・デバイスのアレイからデータの前記読み出しバッファへの転送を使用可能にするステップの間に、前記メモリ・デバイスのアレイ内に格納された前記データを修正できる修正モードを使用可能にするステップと、
前記メモリ・デバイスのアレイ内のそれぞれの位置に格納する新しいページを受信するステップと、
前記メモリ・デバイスのアレイ内の前記位置に格納された現在のページを含むある範囲の複数のページを検索するステップと、
前記検索した範囲の複数のページ内の現在のページを前記新しいページで置き換えるステップと、
前記修正モードで、前記新しいページが前記メモリ・デバイスのアレイ内の前記それぞれの位置に格納されるように、前記メモリ・デバイスのアレイへの前記新しいページを含む複数のページの格納を開始するステップと、
をさらに含む請求項１に記載の方法。
【請求項８】
前記メモリ・デバイスのアレイへの前記新しいページを含む複数のページの格納を開始するステップが、前記メモリ・デバイスのアレイから前記現在のページを含む複数のページを消去するステップを含む請求項７に記載の方法。
【請求項９】
前記データ・ブロックへの前記アクセスを開始するステップが、格納したデータの複数のバイトへのブロック・アクセスをサポートするフラッシュ・メモリ・デバイスのアレイにアクセスするステップを含む請求項１に記載の方法。
【請求項１０】
前記アクセスしたデータ・ブロックの少なくとも一部を格納するステップが、前記アクセスしたデータ・ブロックの一部をＲＡＭベースの（ランダム・アクセス・メモリ・ベースの）記憶装置に格納するステップを含む請求項９に記載の方法。
【請求項１１】
前記フラッシュ・メモリ・デバイスのアレイを維持して連続的な方法で再生が可能な映像データの少なくとも１つの論理グループを格納するステップと、
ネットワークを介したさまざまなそれぞれの宛先へのストリームのために映像データの前記少なくとも１つの論理グループのさまざまな対応するセグメントを格納するＲＡＭベースの記憶装置の部分を割り当てるステップと、
前記さまざまな対応するセグメントが前記それぞれの宛先にストリーミングされている間に、前記ＲＡＭベースの記憶装置の前記部分を映像データの少なくとも１つの論理グループのそれぞれの新しいセグメントに更新するステップと、
をさらに含む請求項１０に記載の方法。
【請求項１２】
選択および貼り付け動作をサポートするコンピュータ・システムであって、
プロセッサと、
前記プロセッサによって実行されるアプリケーションに関連する命令を格納するメモリ・ユニットと、
前記プロセッサと前記メモリ・ユニットを結合するインターコネクトであって、前記コンピュータ・システムが前記アプリケーションを実行し、
コンテンツ・ストリームの特定部分を求める第１の要求を受信する動作と、
前記第１の要求の受信に応答して、メモリ・デバイスのアレイからデータ・ブロックへのアクセスを開始する動作であって、前記コンテンツ・ストリームの前記特定部分および前記コンテンツ・ストリームの対応する隣接部分を含む動作と、
それぞれの宛先へのオンデマンド・ストリーミングのために読み出しバッファ内に前記アクセスしたデータ・ブロックの少なくとも一部を格納する動作と、
前記それぞれの宛先への前記コンテンツ・ストリームの前記特定部分の送信を開始する動作と、
を実行できるようにするインターコネクトと、
を備えるコンピュータ・システム。
【請求項１３】
前記メモリ・デバイスのアレイから前記データ・ブロックへのアクセスを開始する動作が、前記第１の要求によって指定されたデータよりも多くのデータを前記メモリ・デバイスのアレイから検索する動作を含み、
前記データ・ブロックの少なくとも一部を格納する動作が、前記第１の要求によって指定されたデータよりも多くの、記読み出しバッファ内の前記メモリ・デバイスのアレイから検索したデータ、を格納する動作を含む請求項１２に記載のコンピュータ・システム。
【請求項１４】
前記コンテンツ・ストリームの異なる部分を求める第２の要求を受信する動作と、
前記読み出しバッファのコンテンツの前記異なる部分の送信を開始する動作であって、前記コンテンツ・ストリームの前記異なる部分が、前記読み出しバッファ内に格納された前記データ・ブロックの前記部分に含まれる動作と、
をさらにサポートする請求項１３に記載のコンピュータ・システム。
【請求項１５】
前記メモリ・デバイスのアレイから前記データ・ブロックへの前記アクセスを開始する動作が、
前記メモリ・デバイスのアレイから前記データ・ブロックの読み出しを開始する動作と、
前記メモリ・デバイスのアレイから前記データ・ブロックが検索可能になった後に、前記データ・ブロックをすべて検索する代わりに、前記それぞれの読み出しを打ち切って前記データ・ブロックの一部を検索する動作と、
前記データ・ブロックの前記部分を前記読み出しバッファに格納する動作と、
を含む請求項１４に記載のコンピュータ・システム。
【請求項１６】
前記メモリ・デバイスのアレイから前記データ・ブロックへの前記アクセスを開始する動作が、
前記メモリ・デバイスのアレイから前記データ・ブロックの読み出しを開始する動作と、
前記メモリ・デバイスのアレイから前記データ・ブロックが検索可能になった後に、前記データ・ブロックをすべて検索する代わりに、前記読み出しを打ち切って前記データ・ブロックの一部を検索する動作と、
前記データ・ブロックの前記部分を前記それぞれの宛先への前記データ・ブロックの前記部分の前記オンデマンドのストリーミングのために割り当てられた前記読み出しバッファの領域内に格納する動作と、
を含む請求項１３に記載のコンピュータ・システム。
【請求項１７】
前記メモリ・デバイスのアレイから前記読み出しバッファへのデータ転送を使用可能にする一方で、前記メモリ・デバイスのアレイに最終的に格納される受信データを一時的に格納するために書き込みバッファを維持する動作と、
前記受信データがしきい値を超えたことの検出に応答して、
ｉ）前記メモリ・デバイスのアレイから前記読み出しバッファへのデータ・アクセスを使用不可にする動作と、
ｉｉ）前記書き込みバッファ内に格納された前記受信データの前記メモリ・デバイスのアレイへの転送を開始する動作と、
ｉｉｉ）前記転送時に、前記読み出しバッファ内の前記コンテンツ・ストリームの前記特定部分を前記それぞれの宛先にストリーミングする動作と、
ｉｖ）前記転送後に、前記メモリ・デバイスのアレイ内に格納されたデータの前記読み出しバッファへの転送を再度使用可能にする動作と、
をさらにサポートする請求項１３に記載のコンピュータ・システム。
【請求項１８】
前記メモリ・デバイスのアレイからデータの前記読み出しバッファへの転送を使用可能にする動作の間に、前記メモリ・デバイスのアレイ内に格納された前記データを修正できる修正モードを使用可能にする動作と、
前記メモリ・デバイスのアレイ内のそれぞれの位置に格納する新しいページを受信する動作と、
前記メモリ・デバイスのアレイ内の前記位置に格納された現在のページを含むある範囲の複数のページを検索する動作と、
前記検索した範囲の複数のページ内の前記現在のページを前記新しいページで置き換える動作と、
前記修正モードで、前記新しいページが前記メモリ・デバイスのアレイ内の前記それぞれの位置に格納されるように、前記メモリ・デバイスのアレイへの前記新しいページを含む前記複数のページの格納を開始する動作と、
をさらにサポートする請求項１３に記載のコンピュータ・システム。
【請求項１９】
前記メモリ・デバイスのアレイへの前記新しいページを含む前記複数のページの格納を開始する動作が、前記メモリ・デバイスのアレイから前記現在のページを含む前記複数のページを消去する動作を含む請求項１８に記載のコンピュータ・システム。
【請求項２０】
前記データ・ブロックへの前記アクセスを開始する動作が、格納したデータの複数のバイトへのブロック・アクセスをサポートするフラッシュ・メモリ・デバイスのアレイにアクセスする動作を含む請求項１３に記載のコンピュータ・システム。
【請求項２１】
前記アクセスしたデータ・ブロックの少なくとも一部を格納する動作が、前記アクセスしたデータ・ブロックの前記一部をＲＡＭベースの（ランダム・アクセス・メモリ・ベースの）記憶装置に格納する動作を含む請求項２０に記載のコンピュータ・システム。
【請求項２２】
前記フラッシュ・メモリ・デバイスのアレイを維持して連続的な方法で再生が可能な映像データの少なくとも１つの論理グループを格納する動作と、
ネットワークを介したさまざまなそれぞれの宛先へのストリームのために映像データの前記少なくとも１つの論理グループのさまざまな対応するセグメントを格納するＲＡＭベースの記憶装置の部分を割り当てる動作と、
前記さまざまな対応するセグメントが前記それぞれの宛先にストリーミングされている間に、前記ＲＡＭベースの記憶装置の前記部分を映像データの少なくとも１つの論理グループのそれぞれの新しいセグメントに更新する動作と、
をさらにサポートする請求項２１に記載のコンピュータ・システム。
【請求項２３】
コンテンツ・ストリームの特定部分を求める要求を受信する手段と、
前記要求の受信に応答して、メモリ・デバイスのアレイからデータ・ブロックへのアクセスを開始する手段であって、前記データ・ブロックが、前記コンテンツ・ストリームの前記特定部分および前記コンテンツ・ストリームの対応する隣接部分を含む手段と、
それぞれの宛先へのオンデマンド・ストリーミングのために読み出しバッファ内に前記アクセスしたデータ・ブロックの少なくとも一部を格納する手段と、
前記それぞれの宛先への前記コンテンツ・ストリームの前記特定部分の送信を開始する手段と、
を備えるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
オンデマンド・ケーブル・ネットワークの加入者に情報をより迅速かつ効率的に伝達する。
【背景技術】
【０００２】
例えば、ケーブル・ネットワークのディジタル・ケーブルでは、現在、加入者がそれぞれのテレビジョンに、オンデマンド再生するさまざまなタイプのストリーミング・データ・コンテンツを受信するための多数のチャネルを有している。
【０００３】
従来のケーブル技術によれば、それぞれの加入者は、対応するケーブル会社が管理するサーバから送信される符号化ディジタル情報を受信するいわゆるセット・トップ・ボックス装置を家に所有していることがある。符号化ディジタル情報を受信すると、それぞれのセット・トップ・ボックスは、再生のための復号化機能を実行する。復号化が完了すると、視聴者の家のそれぞれのセット・トップ・ボックスは、選択したチャネルから取り出した復号化データの適当な「ラスタ化」信号で対応するテレビジョン・システムを駆動する。したがって、テレビジョンの視聴者は、ケーブル会社から送信されて、対応するセット・トップ・ボックスが受信した対応するテレビジョン番組を視聴することができる。
【０００４】
通常、対応するケーブル会社は、対応する目標セット・トップ・ボックスに配信可能な情報のライブラリを維持しているか、またはアクセスすることができる。したがって、加入者は、家庭で視聴するアイテムをライブラリから選択することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ケーブル会社が管理するそれぞれのサーバからコンテンツを供給するための１つの解決策は、１つ以上のＲＡＭ（例えば、ランダム・アクセス・メモリ）タイプの記憶装置内にコンテンツを一時的に格納する処理を含む。このように用いると、映画全体のようなコンテンツをＲＡＭに格納してその映画のオンデマンド視聴を開始する１人以上の加入者に配信することができる。
【０００６】
上記それぞれの加入者に配信するコンテンツ全体（例えば、数本の映画を始めから終わりまで）を一時的に格納するメモリ（例えば、ＲＡＭ）の従来の使用法に関する１つの欠陥は、ＲＡＭベースの記憶装置関連のコストである。例えば、大量のコンテンツ（例えば、多数の異なる映画）を配信するように構成されたサーバが、多数の異なるタイプの映画を多数の異なる加入者に供給する能力を有するＲＡＭベースの記憶装置を必要とする場合を考える。
【０００７】
ＲＡＭベースの記憶装置を使用する可能な別の方法は、コンテンツをディスクベースの記憶装置に格納することである。ディスクベースの記憶装置からコンテンツを供給する（例えば、ストリーミングする）には時間がかかり、したがって多数のユーザがそれぞれリモート・サーバからのコンテンツの受信を制御できる真のオンデマンド体験を提供できないため、この解決策は許容できない。
【課題を解決するための手段】
【０００８】
以下の開示は、コンテンツを処理し配信するいくつかの有用な実施形態を含む。例えば、本明細書の一実施形態は、データ処理システムの別の部分がデータの短いバーストを管理する一方で、比較的高帯域幅のインタフェースによって、データの長いバーストを実施する、それぞれのデータ処理システムの部分を介して１つ以上のフラッシュ・デバイスからデータを迅速に（ディスクと比較して）検索することを可能にする処理を含む。
【０００９】
例えば、以下に詳細に述べる一般的な実施形態によれば、本明細書のシステムは、１つ以上のフラッシュ・ベースのメモリ・デバイスへのアクセスを調整するメモリ・コントローラを含む。上記実施形態では、メモリ・コントローラは、フラッシュ・メモリ・デバイスのアレイに加えて対応する読み出しバッファおよび書き込みバッファを有する。読み出しバッファと書き込みバッファの使用によって、メモリ・コントローラは、書き込みバッファに格納されたデータをメモリ・デバイスのアレイに転送する処理と、メモリ・デバイスのアレイ内のデータを読み出しバッファに転送する処理とを切り替えることができる。
【００１０】
特定の実施形態では、書き込みバッファに格納されたデータは、加入者へのオンデマンド配信のためにメモリ・デバイスのアレイに格納された映画などの映像コンテンツである。読み出しバッファは、メモリ・デバイスのアレイから検索したデータ・セグメント（例えば、映像コンテンツの一部）を格納する１つ以上のＲＡＭベースのメモリ・デバイスを含むように構成することができる。それ故、メモリ・デバイスのアレイからデータを直接配信する代わりに、メモリ・コントローラは、映像コンテンツをストリーミング・データとして読み出しバッファ（例えば、キャッシュ）から配信する。現在読み出しバッファ内にない映像コンテンツの一部分を提供するコマンドを受信すると、メモリ・コントローラは、後続のセグメントを求めてフラッシュ・メモリ・デバイスのアレイへのアクセスを開始する。メモリ・コントローラは、読み出しバッファからコンテンツをストリーミングし、それぞれのサーバが要求されたコンテンツをすべて配信するか、またはそれぞれの加入者が対応するコンテンツのストリーミングを中止するコマンドを発行するまで、読み出しバッファのコンテンツを更新する上記処理を繰り返す。
【００１１】
一実施形態では、コンテンツは、ナビゲーションのための埋め込みポインタを含む。例えば、書き込みバッファ、フラッシュ・メモリ・デバイスのアレイ、および読み出しバッファ内に格納されたコンテンツ内のポインタは、コンテンツ内の異なる場所を前方および後方にポイントする。ストリーミングされた映像コンテンツを視聴するユーザは、それぞれのセット・トップ・ボックスから、再生、早送り、一時停止、巻き戻しなどのコマンドを発行できる。それぞれのサーバの映像コンテンツのストリーミングを管理するプロセッサは、ストリーミングされたコンテンツに関連するナビゲーション・ポインタの使用に基づいて発行されたコマンドに従ってコンテンツの異なる部分をナビゲートし配信する。言い換えれば、サーバのある処理では、さまざまなナビゲーション・ポインタを用いてユーザ・コマンドの受信に基づいてコンテンツのさまざまな部分をストリーミングする。
【００１２】
本明細書の技術は、ライブまたは事前記録されたデータ・ストリームなどのナビゲーション可能なデータ・ストリームを生成し、多数の加入者にオンデマンドで配信する用途などで使用するのに十分適している。しかし、本明細書に記載する構成は、上記用途での使用に限定されず、それ故、本明細書に記載する構成およびその変形は他の用途にも十分適していることに留意されたい。
【００１３】
ロジック、バッファ、レジスタなどの離散的なハードウェア構成要素を介して実施できると共に、本明細書に記載する他の実施形態は、記憶装置の管理およびコンテンツの配信の上記技術をサポートするように構成されたコンピュータ・デバイス（例えば、コンピュータ・プロセッサ・システム、ホスト・コンピュータ、パーソナル・コンピュータ、ワークステーションなど）などのハードウェア・プラットフォームを含むことができる。上記実施形態では、コンピュータ・デバイスは、メモリ・システム、プロセッサ（例えば、処理デバイス）、およびそれぞれのインターコネクトを含む。インターコネクトは、プロセッサをメモリ・システムに結合する。メモリ・システムは、プロセッサ上で実行されるとコンテンツの管理と配信が可能になるアプリケーション（例えば、ソフトウェア・コード）で符号化される。
【００１４】
本明細書に開示する本出願のさらに別の実施形態は、上記概説し、以下に詳細に開示する方法実施形態および動作を実行するソフトウェア・プログラムを含む。より詳細には、本明細書に記載する実施形態は、コンピュータ・デバイス上で実行でき、本明細書で説明するコンテンツの格納および配信を管理できる符号化されたコンピュータ・プログラム・ロジックを含むコンピュータ・プログラム・プロダクト（例えば、コンピュータ可読媒体）を含む。コンピュータ・システムによって少なくとも１つのプロセッサでコンピュータ・プログラム・ロジックが実行されると、プロセッサは、本発明の実施形態として本明細書に記載する作用（例えば、方法）を実行する。本明細書でさらに開示する配置構成は、通常、光学媒体（例えば、ＣＤ−ＲＯＭ）、フロッピー（登録商標）またはハード・ディスクあるいは１つ以上のＲＯＭまたはＲＡＭまたはＰＲＯＭチップ内のファームウェアまたはマイクロコードなどの他の媒体などのコンピュータ可読媒体に配置または符号化されたソフトウェア、コードおよび／または他のデータ構造として、あるいは特定用途向け集積回路（ＡＳＩＣ）またはフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）として、あるいは１つ以上のモジュール、共用ライブラリなどの内部のダウンロード可能なソフトウェア画像として提供される。ソフトウェアまたはファームウェアまたは他のこのような構成は、コンピュータ・デバイスにインストールしてコンピュータ・デバイス内の１つ以上のプロセッサに本明細書に記載する技術を実行させることができる。
【００１５】
本発明のさらに別の特定の実施形態は、本明細書に記載する実施形態によるコンテンツ管理および配信をサポートする命令を格納したコンピュータ可読媒体を含むコンピュータ・プログラム・プロダクトに関する。これらの命令は、それぞれのコンピュータ・デバイスのプロセッサによって実行されると、プロセッサに、ｉ）コンテンツ・ストリームの特定部分を求める要求を受信するステップと、ｉｉ）要求の受信に応答して、フラッシュ・メモリ・デバイスのアレイからコンテンツ・ストリームの特定部分およびコンテンツ・ストリームの対応する隣接部分を含むデータ・ブロックへのアクセスを開始するステップと、ｉｉｉ）それぞれの宛先へのオンデマンド・ストリーミングのために（ＲＡＭベースの）読み出しバッファ内に上記アクセスしたデータ・ブロックの少なくとも一部を格納するステップと、ｉｖ）それぞれの宛先へのコンテンツ・ストリームの特定部分の送信を開始するステップとを実行させる。本明細書の別の実施形態は、上記概説し、以下に詳細に開示する任意の方法実施形態ステップおよび動作を実行するソフトウェア・プログラムおよび／またはハードウェアを含む。
【００１６】
なお、この概要では、本明細書または特許請求の範囲のすべての実施形態および／または漸進的に新規の態様を明記しているわけではないことに留意されたい。逆に、この概要では、さまざまな実施形態および従来の技術に対する新規性のある機能について予備的な説明を行うにとどめる。本発明の追加の詳細および／または可能な展望（置き換え）については、読者は詳細な説明と本明細書の対応する図とを参照されたい。
【００１７】
本出願の上記および他の目的、特徴および利点は、さまざまな図面を通して一貫して同様の参照符号が同じ部分を指す添付の図面に示す好ましい実施形態の下記のより具体的な説明から明らかになろう。図面は必ずしも正確に縮尺したものではなく、例示的実施形態、原理および概念を示すことに力点が置かれている。
【発明を実施するための最良の形態】
【００１８】
以下の開示は、フラッシュ・メモリおよびＲＡＭベースの記憶装置の効率的な使用をサポートするいくつかの有用な実施形態を含む。例えば、本明細書に記載するオンデマンド・サーバ・システムは、１つ以上のフラッシュ・ベースのメモリ・デバイスへのアクセスを調整するメモリ・コントローラを含む。フラッシュ・デバイスは、それぞれのネットワーク上で複数の宛先の各々がオンデマンドで選択的に視聴することができる大量のコンテンツ（例えば、ポインタ情報の埋め込みセットを含む映像コンテンツ）を格納する。
【００１９】
フラッシュ・メモリ・デバイスのアレイにアクセスできる以外に、メモリ・コントローラは、それに対応する読み出しバッファおよび書き込みバッファにアクセスできる。読み出しバッファは、対応するユーザからフラッシュ・デバイス内の少量のデータしか要求されない時にフラッシュ・デバイスから読み出した大量のデータを格納することができる。本明細書に記載する実施形態による高いフラッシュ読み取り性能を高効率に獲得する方法は、大量のバースト読み出しを開始することである。データをストリーミングする時に、対応する処理エンジンがフラッシュ・デバイスにアクセスし、所与の時間に少量のデータを利用する。特定のストリーム内で、読み出しアクセスは直線的にアドレス指定できる。それ故、最初の大量のバーストの残りが高帯域幅読み出しバッファ内に格納されている場合、最大限のフラッシュ処理能力を実現できる。システムは、同様の理由で書き込みバッファを含むことができるが、本明細書にさらに説明するように、読み出し／書き込みインタリーブを容易にすることもできる。
【００２０】
本明細書に記載する実施形態によるキャッシュは、要求元ユーザに送信されるストリーミング・データなどのデータをキャッシュする。一実施形態では、書き込みバッファは、さまざまなユーザが視聴するために選択することができるオンデマンド映像コンテンツを格納する。読み出しバッファは、ユーザに現在ストリーミングされるオンデマンド映像コンテンツのセグメントを格納する。
【００２１】
図１は、本明細書に記載する実施形態による通信システム１００の一例を示す図である。この例では、通信システム１００（例えば、コンテンツ・レポジトリおよびデータ・ストリーミング・システム）は、コンテンツ・マネージャ１０５、ネットワーク１５０（例えば、公衆または私設ネットワーク）、レポジトリ１８０、データ・ストリーム・モディファイア１０９、および映像情報を視聴し、音声情報を聴取する複数のユーザ・ドメイン１９０（例えば、ユーザ・ドメイン１９０−１，．．．，ユーザ・ドメイン１９０−Ｍなどのホーム環境）を含む。
【００２２】
図示の実施形態では、コンテンツ・マネージャ１０５は、ホスト・システム１１５と、メモリ・コントローラ１２０と、書き込みバッファ１２２と、読み出しバッファ１２４と、メモリ・デバイス１４５とを含む。ユーザ・ドメイン１９０の各々（例えば、個人の家などの加入者環境）は、それぞれのメディア・プレーヤ１９２（例えば、テレビジョン、コンピュータ・システム、オーディオ・システムなどのメディア・プレーヤ１９２−１，．．．，メディア・プレーヤ１９２−Ｍ）およびセット・トップ・ボックス１９４（例えば、セット・トップ・ボックス１９４−１，．．．，セット・トップ・ボックス１９４−Ｍ）を含む。コンテンツ・マネージャ１０５は、ユーザ・ドメイン１９０に対してリモート・サーバの場所に常駐する。
【００２３】
一実施態様によれば、ユーザ・ドメイン１９０−１に関連するそれぞれのユーザ（例えば、加入者）は、それぞれのメディア・プレーヤ１９２−１（例えば、テレビジョン、ビデオ再生装置、音楽再生装置など）で再生されるコンテンツ（例えば、映像および／または音声情報）のストリーミングを制御するために、１つ以上の入力信号１９６−１（例えば、加入者が操作するハンドヘルド無線リモート制御デバイスなどのデバイスで生成されたナビゲーション制御信号）をそれぞれのセット・トップ・ボックス１９４−１に提供する。上記実施態様では、それぞれのセット・トップ・ボックス１９４−１は、ネットワーク１５０上でそれぞれの加入者から受信した入力制御信号１９６−１を、ユーザ・ドメイン１９０に適当なデータを供給する処理を少なくとも部分的に管理するホスト・システム１１５に送信する。
所与のコンテンツ・ストリームに関してネットワーク１５０上でそれぞれのユーザ・ドメイン１９０から受信したコマンド（例えば、再生、停止、早送り、巻き戻しなど）に基づいて、コンテンツ・マネージャ１０５のホスト・システム１１５は、メモリ・コントローラ１２０と通信する。例えば、ホスト・システム１１５は、ストリーミングするコンテンツのタイトル（または他の一意の識別子）および／または対応するストリーミング対象のコンテンツの位置を、それぞれのセット・トップ・ボックス１９４に送信できる。
【００２４】
上記のように、メモリ・コントローラ１２０は、読み出しバッファ１２４にストリームを一時的に格納するために、メモリ・デバイス１４５からデータを抽出する動作を管理する。メモリ・コントローラ１２０は、ホスト・システム１１５に送信するか、またはホスト・システム１１５が適当なコンテンツをネットワーク１５０上でコンテンツ・ストリームを視聴または録画しているそれぞれの加入者にストリーミングできるようにする。ホスト・システム１１５が読み出しバッファ１２４内に見つからない（例えば、アクセスの結果、キャッシュ・ミスになって）データのセグメントを検索しようとする場合、メモリ・コントローラ１２０は、メモリ・デバイス１４５へのアクセスを開始して、それぞれのコンテンツ・ストリームの要求されたセグメントと他のセグメントとを読み出しバッファ１２４に転送する。一実施形態では、メモリ・コントローラ１２０は、コンテンツ・ストリームの新しいセグメントを読み出しバッファ１２４に格納する必要性を予測でき（データをストリーミングするホスト・システム１１５が、読み出しバッファ１２４内に格納されたコンテンツの範囲の最後からデータを送信することの検出に基づいて）、したがって、ホスト・システム１１５は、それぞれの加入者に途切れない視聴体験を提供することができる。
【００２５】
したがって、各ホーム環境は、それぞれのユーザがネットワーク１５０上でコンテンツ・マネージャ１０５との間で受信する（例えば、データをストリーミング）し、送信する（例えば、コマンドを入力する）ことを可能にする比較的簡単なセット・トップ・ボックス１９４を含むことができる。図示のように、コンテンツ・マネージャ１０５は、ユーザ要求に応じて多数の非同期データ・ストリームを処理してさまざまな宛先に配信する中央ロケーションのサーバであってもよい。
【００２６】
ネットワーク１５０上で加入者へのコンテンツのストリーミングを開始する前に、中央マネージャ１０５は、メモリ・デバイス１４５へのコンテンツの格納を開始する。例えば、リポジトリ１８０は、ＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）フォーマットに従って符号化されたいくつかの映画などのコンテンツのライブラリを含むことができる。リポジトリ１８０内のコンテンツは、ナビゲーション・ポインタのセットを含んでいてもよいし、含まなくてもよい。含まない場合、コンテンツ・マネージャ１０５に送信された複数のコンテンツ・ストリーム（例えば、映画）の各々について、図２に示すように、データ・ストリーム・モディファイア１０９は、対応するコンテンツ・セグメント内にナビゲーション・ポインタのセットを埋め込む。
【００２７】
具体的には、図２は、本明細書に記載する実施形態によるそれぞれのコンテンツ・ストリーム２０１に挿入されるポインタのセットを示す図である。コンテンツ・ストリーム内のセグメントは、１つ以上の異なるタイプのＭＰＥＧフレーム情報（例えば、Ｉフレーム、Ｂフレーム、Ｐフレームなど）を含むことができる。セグメントは、１つ以上の画像グループ（例えば、ＧＯＰ）であってもよい。
【００２８】
ナビゲーション・ポインタ（例えば、ＰＳ１、ＰＳ２など）の挿入されたセットなどのメタデータは、前方ポインタ（例えば、ＦＰＴ１、ＦＰＴ２、ＦＰＴ３）および後方ポインタ（例えば、ＢＰＴ１，ＢＰＴ２、ＢＰＴ３など）を含むことができる。例として、リポジトリ１８０から受信したコンテンツ・ストリーム２０１は、最初、ＳＥＧ２、ＳＥＧ３、ＳＥＧ４、ＳＥＧ５などを含むことができる。データ・ストリーム・モディファイア１０９は、コンテンツ・ストリームの他の場所への前方および後方ポインタを含むコンテンツ・ストリーム２０２を生成する。したがって、ネットワーク１５０上でコンテンツ・ストリーム（２０１または２０２）を視聴している加入者からさまざまなコマンドを受信すると、ホスト・システム１１５は、コンテンツの同じセグメントの反復送信（例えば、一時停止コマンドの受信に応答した）、通常の視聴速度でのコンテンツ・ストリームのセグメントのストリーミング（例えば、再生コマンドに基づく）、コンテンツ・ストリームの現在より後のセグメントの送信（例えば、早送りコマンドの受信に基づく）、コンテンツ・ストリームの現在より前のセグメントの送信（例えば、巻き戻しコマンドの受信に基づく）などの動作を実行することができる。
【００２９】
それ故、コンテンツ・ストリーム２０２内の前方および後方ポインタの１つの目的は、それぞれのユーザがリポジトリ１８０内に格納されたそれぞれのデータ・ストリームのどの部分をそれぞれのメディア・プレーヤで再生するか制御できるようにすることである。例えば、挿入された前方ポインタ（例えば、ＦＰＴ１、ＦＰＴ２、ＦＰＴ３）および後方ポインタ（例えば、ＢＰＴ１，ＢＰＴ２、ＢＰＴ３）を用いて、それぞれのユーザは、異なる速度で早送りおよび巻き戻し機能などのナビゲーションを実行できる。言い換えれば、加入者が低速の早送りを開始した場合、各セグメント間のＦＰＴ１は、それぞれのコンテンツ・ストリーム内の次の隣接フレームに飛ぶ方法を提供する。ＦＰＴ２は、２セグメント飛び越して後続のセグメントへ移行することを可能にし、高速の早送り速度を提供する。ＦＰＴ３は、１０セグメント飛び越して後続のセグメントへ移行することを可能にし、加入者にとってさらに高速の早送り速度を提供する。後者のＦＰＴ２、ＦＰＴ３のケースでは、加入者は、それぞれコンテンツ・ストリーム２０２の３番目および１０番目ごとのフレーム（例えば、セグメント）を視聴することができる。なお、それぞれのコンテンツ・ストリーム内の後方ポインタ（例えば、ＢＰＴは後方へのナビゲーションに使用できる）も同様である。
【００３０】
図１を再度参照すると、データ・ストリーム・モディファイア１０９は、挿入されたナビゲーション・ポインタ・セットを含むコンテンツ・ストリーム２０２をホスト・システム１１５に提供する。ホスト・システム１１５は、次に、書き込みバッファ１２２へのコンテンツ・ストリーム２０２の格納を開始する。書き込みバッファ１２２内に格納されたコンテンツ・ストリーム２０２のある部分（例えば、１つ以上のセグメントおよびそれに対応するポインタ）がしきい値を超えたことを検出すると、メモリ・コントローラ１２０は、書き込みバッファ内のコンテンツ・ストリーム２０２の上記部分のメモリ・デバイス１４５への格納を開始する。
【００３１】
転送開始のしきい値は、メモリ・デバイス１４５への書き込みのブロック・サイズに少なくとも部分的に基づくことができる。例えば、一実施形態では、コンテンツ・マネージャ１０５は、コンテンツ・ストリーム２０２と他の同様のコンテンツ・ストリームを格納するフラッシュ・メモリ・デバイスのアレイを含むことができる。メモリ・デバイスのアレイ１４５は、メモリへの指定した数のデータ・バイトの書き込みを要求できる。書き込みバッファ１２２が特定のコンテンツ・ストリームの指定した数のバイトを超えるバイト数を含む時には、書き込みバッファ１２２からメモリ・デバイス１４５へ特定のコンテンツを転送することができる。
【００３２】
メモリ・デバイス１４５内に格納されたコンテンツ・ストリーム２０２は、１人または複数の加入者に配信できる。この例に関しては、環境１９０−１のそれぞれのユーザが入力１９６−１（例えば、リモート制御デバイスを介したコマンド）を生成して、読み出しバッファ１２４からストリーミングされたコンテンツに関連する現在の視聴ポイントを早送りする。データ・ストリーム・マネージャ１０５、より具体的には、ホスト・システム１１５は、ネットワーク１５０上でこのコマンドを受信し、その後、それぞれのコンテンツ・ストリーム（読み出しバッファ１２４から受信した）内の前方ポインタを用いて前方にジャンプし、ネットワーク１５０上で、データ・ストリーム１４０内の異なる場所から上記ユーザへデータをストリーミングする。前述したように、前方ポインタＦＰＴ１は、早送りの第１の速度を使用可能にし、前方ポインタＦＰＴ２は、早送りの第２の速度を使用可能にし、前方ポインタＦＰＴ３は、早送りの第３の速度を使用可能にし、以下同様である。一実施形態では、ネットワーク１５０は、インターネット、ワイド・エリア・ネットワーク、ローカル・エリア・ネットワークなどのネットワークを表す。したがって、データ・ストリーム・マネージャ１０５−１は、環境１９０などの複数の異なる場所へのデータのストリーミングを管理する中央の場所として動作する。
【００３３】
ホスト・システム１１５は、読み出しバッファ１２４からコンテンツ・ストリーム２０２を受信できるが、ホスト・システム１１５は、コンテンツ・ストリーム２０２からナビゲーション・ポインタを取り除き、元のＭＰＥＧデータのみをユーザに送信できる。上記実施形態では、ホスト・システム１１５は、加入者から受信したそれぞれのコマンドに基づいて上記のナビゲーション・ポインタを用いて適当なコンテンツをストリーミングする。
【００３４】
図３は、本明細書に記載する実施形態のコンテンツ格納および配信システムの一例を示す図である。この例示的実施形態では、図１に従って、メモリ・コントローラ１２０は、書き込みバッファ１２２からフラッシュ・メモリ・デバイスのアレイ３４５へのコンテンツの転送とフラッシュ・メモリ・デバイスのアレイ３４５内のコンテンツの読み出しバッファ１２４（例えば、キャッシュ）への転送との間で調整を行う。図３に示すように、読み出しバッファ１２４は、ネットワーク１５０上でホスト・システム１１５を通ってそれぞれの加入者にストリーミングされるコンテンツの複数の部分（例えば、映画全体ではなく上記の複数のセグメント）を格納する複数の格納領域３２４（例えば、領域３２４−１，．．．，３２４−Ｍ）に分割することができる。例えば、読み出しバッファ１２４の領域３２４−１は、ユーザ・ドメイン１９０−１にストリーミングされるコンテンツを格納でき、読み出しバッファ１２４の領域３２４−Ｍは、ユーザ・ドメイン１９０−Ｍにストリーミングされるコンテンツを格納でき、以下同様である。
【００３５】
メモリ・コントローラ１２０は、それぞれの加入者にあらかじめセグメントを送信した後で、フラッシュ・メモリ・デバイスのアレイ３４５内に格納されたセグメントの次のセットを領域３２４に転送する（順方向または逆方向に）。一実施形態では、ホスト・システム１１５は、必要に応じて領域３２４を新しいデータで更新する要求を生成し、加入者へのデータの連続的なストリーミングをサポートする。別の方法としては、メモリ・コントローラ１２０は、所与の領域についてストリーム・データの現在のセグメントの位置を監視し、必要に応じて、フラッシュ・メモリ・デバイスのアレイ３４５内に格納されたコンテンツの後続セグメントを読み出しバッファ１２４の対応する領域に転送することで、読み出しバッファ１２４内の全領域を更新する。
【００３６】
それ故、本明細書に記載する実施形態は、フラッシュ・メモリ・デバイスのアレイ３４５を維持してそれぞれの加入者による再生を連続的な方法で再生可能な映像データの１つ以上の論理グループを格納する動作と、読み出しバッファ１２４（例えば、ＲＡＭベースの記憶装置）の部分を割り当てて、ネットワーク１５０上でさまざまなそれぞれの宛先にストリーミングする映像データの１つ以上の論理グループのさまざまな対応するセグメントを格納する動作と、読み出しバッファ内の現在のセグメントがそれぞれの宛先にホスト・システム１１５によってストリーミングされる間、映像データの１つ以上の論理グループのそれぞれの新しいセグメントに領域３２４（例えば、ＲＡＭベースの記憶装置の部分）を更新する動作とをサポートする。
【００３７】
一実施形態では、配信システム３００は、フラッシュ・メモリ・デバイス３８０−１、フラッシュ・メモリ・デバイス３８０−２，．．．，フラッシュ・メモリ・デバイス３８０−Ｊを含むフラッシュ・メモリ・デバイス（例えば、ＮＡＮＤ技術に基づく）のアレイ３４５を含む。フラッシュ・メモリ・デバイスのアレイ３４５は、６４個のＤＩＭＭ（デュアル・インライン・メモリ・モジュール）を含むことができる。各ＤＩＭＭは、８個の（３２ギガバイトの）フラッシュ・メモリ・デバイスを搭載することができる。メモリ・コントローラ１２０は、コンテンツをストライピングされたデータとしてフラッシュ・メモリ・デバイスのアレイ３４５内に格納する。
【００３８】
一般に、メモリ・コントローラ１２０は、単一のバイトにアクセスする代わりにフラッシュ・メモリ・デバイスのアレイ３４５のデータ・ブロック（例えば、複数のバイト）にアクセスする。ブロック・サイズは、各フラッシュ・メモリ・デバイスからのデータの２キロバイト（すなわち、ページ）と指定できる。フラッシュ・メモリ・デバイスのアレイ３４５内に５１２のフラッシュ・メモリ・デバイス（例えば、複数のＤＩＭＭの各々について６４×８のフラッシュ・デバイス）があると仮定すると、フラッシュ・メモリ・デバイスのアレイ３４５への１回のアクセスは、１メガバイト以上のデータを含むことができる。
【００３９】
フラッシュ・メモリ・デバイスのアレイ３４５から読み出しバッファ１２４内の領域３２４への上記大量のデータの転送には、長い時間がかかり、また、特に読み出しバッファ１２４が多数の異なる加入者にストリーミングするコンテンツを格納している場合、読み出しバッファ１２４のサイズが超特大であることが必要である。これらの問題の一方または両方を緩和するため、メモリ・コントローラ１２０は、それぞれのアクセスをブロック全体より少ない回数で打ち切ることができる。言い換えれば、フラッシュ・メモリ・デバイスのアレイ３４５の指定アドレスからの読み出し動作を実行し、途中で打ち切ることができる。これによって、フラッシュ・メモリ・デバイス３４５のメモリ・サブシステム・アレイは、読み出しデータの粒度を改善すると同時にフラッシュ・メモリ・デバイスのアレイ３４５のアクセス対象データのページ全体を終了しないことで読み出し動作を実行する時間を削減することができる。ＮＡＮＤベースのフラッシュ・メモリ・デバイスは、読み出しの打ち切りをサポートし、本明細書に記載する一実施形態で使用できる。
【００４０】
メモリ・コントローラ１２０は、それぞれのブロック・アクセスを開始し、フラッシュ・メモリ・デバイスのアレイ３４５からのデータ読み出しのバースト・サイズを２５％に設定することができる。ブロック・アクセスのブロック読み出し段階では、フラッシュ・メモリ・デバイスのアレイ３４５内のデータが利用可能になると（例えば、メモリ・デバイスの対応するセンス増幅器から読み出せるようになると）、メモリ・コントローラ１２０は、利用可能なデータ・ブロックの一部（例えば、この例では、２５％）にだけアクセスする。それ故、この例に関しては、メモリ・コントローラ１２０は、フラッシュ・メモリ・デバイスのアレイ３４５の各フラッシュ・メモリ・デバイスから利用可能な２キロバイトのデータにアクセスすることはない。代わりに、メモリ・コントローラ１２０は、読み出しバッファ１２４の適当な領域に転送するフラッシュ・デバイスあたり２キロバイトの４分の１（例えば、５１２バイト）だけにアクセスして転送する。バースト・サイズを２５％に設定したことに基づいて、メモリ・コントローラ１２０は、フラッシュ・メモリ・デバイスのアレイ３４５から利用可能な１メガバイトの４分の１（例えば、５１２のフラッシュ・メモリ・デバイスにわたってストライピングされた）を転送する。したがって、本明細書に記載する実施形態は、フラッシュ・メモリ・デバイスのアレイ３４５のデータ・ブロックの読み出しを開始するステップと、メモリ・デバイスのアレイからデータ・ブロックが検索可能になった後に、データ・ブロックをすべて検索する代わりに読み出しを打ち切ってデータ・ブロックの一部だけを検索するステップと、データ・ブロックの検索した部分を、それぞれの加入者宛先にデータ・ブロックの上記部分をオンデマンドでストリーミングするために割り当てられた読み出しバッファ１２４の領域３２４内に格納するステップとを含むことができる。本明細書に記載する手順は、メモリ・サブシステム全体の処理能力を制限するが設計は実際的になる。バッファ・サイズと処理能力全体とが引き換えになる。
【００４１】
コンテンツをフラッシュ・メモリ・デバイスのアレイ３４５に書き込みをする際、旧データを消去してからフラッシュ・メモリ・デバイスのアレイ３４５に新データを書き込むことが必要になる場合がある。メモリ・デバイスのアレイ３４５から読み出しバッファ１２４へのデータの転送と、書き込みバッファ１２２からフラッシュ・メモリ・デバイスのアレイ３４５へのデータの転送とを使用可能にする間に、メモリ・コントローラ１２０は、フラッシュ・メモリ・デバイスのアレイ３４５内に格納されたデータを修正できる修正モードを使用可能にすることができる。例えば、メモリ・コントローラ１２０は、メモリ・デバイスのアレイ３４５内の指定位置に格納するデータの新しいページを受信できる。新しいページの受信に応答して、メモリ・コントローラ１２０は、新しいページで上書きするメモリ・デバイスのアレイ内の上記位置に格納された現在のページを含むある範囲の連続するページを検索する。ローカル・バッファでは、メモリ・コントローラ１２０は、検索した範囲の複数のページ内の現在のページを新しいページで置き換える。メモリ・コントローラ１２０は、以前に検索した範囲の連続するページの範囲の消去を開始する。消去後に、修正モードで、メモリ・コントローラ１２０は、指定位置に書き込まれたページを例外として検索された複数のページの格納を開始する。この例では、新しいページは、旧ページではなく指定位置に書き込まれる。
【００４２】
それ故、本明細書に記載する実施形態は、他のデータ・ページを損失することなく、６４ページのブロック内にいくつかのデータ・ページを書き込むことでフラッシュ・メモリ内のデータの効率的な修正をサポートする。例えば、上記の実施形態では、メモリ・コントローラ１２０は、バッファ内に６４ページを読み込むことができ、アクセスした６４ページのブロックを消去し、フラッシュ・メモリ・デバイスのアレイ３４５にブロックを書き戻すために任意の新しいページを旧ページと組み合わせることができる。
【００４３】
図４は、本明細書に記載する実施形態による１つ以上の処理機能（例えば、メモリ・コントローラ処理機能）を実施するアーキテクチャの例を示す図である。例えば、図示のように、コンテンツ・マネージャ１０５は、本明細書に記載する実施形態を実行するプロセッサ３１３およびそれに対応するソフトウェア・コード（例えば、メモリ・コントローラ・アプリケーション１２０−２）を含むそれぞれのコンピュータ・システム内に実施できる。前述したように、図４に示す実施形態の代替形態として、メモリ・コントローラ１２０およびコンテンツ・マネージャ１０５は、論理ゲート、バッファなどのハードウェア構成要素、または両方のタイプの適したハードウェアおよびソフトウェア・リソースの組み合わせによって実施できる。
【００４４】
図４に示すように、この例のコンテンツ・マネージャ１０５（例えば、コンピュータ・システム）は、メモリ・システム３１２と、プロセッサ３１３と、入出力インタフェース３１４とを結合するインターコネクト３１１を含む。入出力インタフェース３１４によって、コンテンツ・マネージャ１０５は、書き込みバッファ１２２、メモリ・デバイス１４５、読み出しバッファ１２４、およびホスト・システム１１５にアクセスし、および／またはそれらと通信することができる。
【００４５】
メモリ・システム３１２は、書き込みバッファ１２２とメモリ・デバイス１４５との間のデータ転送、メモリ・デバイス１４５と読み出しバッファ１２４との間のデータ転送を調整し、ホスト・システム１１５と通信する機能をサポートするメモリ・コントローラ・アプリケーション１２０−１によって符号化される。メモリ・コントローラ・アプリケーション１２０−１は、本明細書に記載するさまざまな実施形態の処理機能をサポートするデータおよび／または論理命令などのソフトウェア・コード（例えば、メモリ内、またはディスクなどの別のコンピュータ可読媒体上に格納されたコード）として実施することができる。動作時に、プロセッサ３１３は、インターコネクト３１１を介してメモリ・システム３１２にアクセスして、メモリ・コントローラ・アプリケーション１２０−１の論理命令を起動し、ランさせ、実行し、解釈し、または他の処理を実行する。メモリ・コントローラ・アプリケーション１２０−１の実行によってメモリ・コントローラ・プロセス１２０−２内に処理機能が生成される。言い換えれば、メモリ・コントローラ・プロセス１２０−２は、図１に関して説明したメモリ・コントローラの１つ以上の部分を表す。
【００４６】
図４に示すコンピュータ・システム内で実行されるメモリ・コントローラ・アプリケーション１２０−１は、メモリ・コントローラ・アプリケーション１２０−１および／またはメモリ・コントローラ・プロセス１２０−２のいずれか一方または両方によって表すことができることに留意されたい。この説明のために、一般に、メモリ・コントローラ１２０は、本明細書に記載する技術を実行するさまざまなステップおよび機能動作を実行またはサポートする存在として参照される。
【００４７】
また、本明細書内の構成例は、メモリ・コントローラ・アプリケーション１２０−１自体（すなわち、未実行または非実行中の論理命令および／またはデータ）を含むことに留意されたい。メモリ・コントローラ・アプリケーション１２０−１は、コンピュータ可読媒体、ハード・ディスク、または光媒体上に格納できる。また、メモリ・コントローラ・アプリケーション１２０−１は、ファームウェア、読み出し専用メモリ（ＲＯＭ）などのメモリ・システム３１２内に格納でき、または、この例のように、ランダム・アクセス・メモリ（ＲＡＭ）などの実行可能なコードとして格納できる。なお、これらの実施形態に加えて、本明細書内の他の実施形態は、メモリ・コントローラ・プロセス１２０−２としてプロセッサ３１３内でのメモリ・コントローラ・アプリケーション１２０−１の実行を含むことに留意されたい。それ故、当業者には明らかなように、データ通信デバイスは、本明細書に記載する機能を実行する他のプロセスおよび／またはソフトウェアおよびハードウェア構成要素を含むことができる。
【００４８】
図５は、本明細書に記載する実施形態によるフラッシュまたは他のタイプのメモリ・デバイス１４５を用いたコンテンツの配信を容易にする技術を示す流れ図５００である。図５を図１〜４に関する上記実施形態に関連して説明する。なお、上記のように、メモリ・コントローラ１２０および関連する機能は、ハードウェアおよび／またはソフトウェアで実施することができることに留意されたい。
【００４９】
ステップ５１０で、メモリ・コントローラ１２０は、コンテンツ・ストリーム２０２などのコンテンツ・ストリームの特定の部分を求める要求を受信する。
ステップ５２０で、要求に応答して、メモリ・コントローラ１２０は、メモリ・デバイス１４５（例えば、フラッシュ・メモリ・デバイスのアレイ）のデータ・ブロック（例えば、複数のデータ・バイト）へのアクセスを開始する。メモリ・コントローラ１２０がアクセスするデータ・ブロックは、ホスト・システム１１５が要求するコンテンツ・ストリーム２０２の特定の部分と、コンテンツ・ストリームのそれに対応する隣接部分とを含むことができる。言い換えれば、ホスト・システム１１５は、メモリ・デバイス１４５内のコンテンツ・ストリーム２０２のセグメントＳＥＧ１００を要求することができる。要求に応答して、ホスト・システム１１５は、読み出しバッファ１２２内に格納するＳＥＧ１００のみの検索とネットワーク１５０を介して対応する加入者への将来の送信を要求しているが、メモリ・コントローラ１２０は、メモリ・デバイス１４５のＳＥＧ１００〜ＳＥＧ１５０を含むデータ・ブロックへのアクセスを開始できる。
【００５０】
ステップ５３０で、メモリ・コントローラ１２０は、ユーザ・ドメイン１９０−１の加入者などのそれぞれの宛先へのオンデマンド・ストリーミングのために、アクセスしたデータ・ブロック（例えば、ＳＥＧ１００〜ＳＥＧ１１２）の全部（例えば、ＳＥＧ１００〜ＳＥＧ１５０）または一部（例えば、アクセスを打ち切る場合には、２５％）を読み出しバッファ１２４に格納する。ステップ５４０で、メモリ・コントローラ１２０は、ホスト・システム１１５を通したそれぞれの加入者宛先への要求によって指定されるコンテンツ・ストリームの特定部分の送信を開始する。
【００５１】
図６および図７は、組み合わせて、本明細書に記載する実施形態のデータ転送およびデータ配信を調整する技術を示す流れ図６００（例えば、流れ図６００−１および流れ図６００−２）を形成する。
【００５２】
図６の流れ図６００−１のステップ６１０で、メモリ・コントローラ１２０は、メモリ・デバイス１４５内に格納されたコンテンツ・ストリーム２０２などのコンテンツ・ストリームの特定部分を求める要求をホスト・システム１１５から受信する。ホスト・システム１１５からの要求は、加入者がコンテンツ・ストリームを視聴するコマンドをホスト・システム１１５に送信したことに応答して生じる。一実施形態では、加入者は、メモリ・デバイス１４５内に格納されたコンテンツのリストからコンテンツ・ストリーム（例えば、映画）を選択する。
【００５３】
ステップ６１５で、第１の要求の受信に応答して、メモリ・コントローラ１２０は、（フラッシュ・ベースのアレイ）メモリ・デバイス１４５からのデータ・ブロック（例えば、複数のデータ・バイト）へのアクセスを開始する。アクセスするデータ・ブロックは、メモリ・コントローラ１２０が要求したコンテンツ・ストリームの特定部分と、加入者が視聴するためにホスト・システム１１５から送信されるコンテンツ・ストリームの対応する隣接部分とを含む。
【００５４】
ステップ６１５に関連するサブステップ６２０で、メモリ・コントローラ１２０は、フラッシュ・メモリ・デバイスのアレイ１４５からのデータ・ブロックの読み出しを開始する。
【００５５】
ステップ６１５に関連するサブステップ６２５で、データ・ブロックをメモリ・デバイス１４５から検索できるようになった後で、メモリ・コントローラは、メモリ・デバイス１４５からのデータのそれぞれの読み出しを打ち切り、メモリ・デバイス１４５から全データ・ブロックを検索する代わりにデータ・ブロックの一部（例えば、データ・ブロックの２５％）を検索する。言い換えれば、前述したように、メモリ・コントローラ１２０は、メモリ・コントローラ１２０が実際に読み出しバッファ１２４に送信するよりも大きいデータ・ブロックをメモリ・デバイスに要求できる。これは、メモリ・デバイス１４５内のデータを読み出しバッファ１２４に転送するための追加のアクセス回数を必要とすることがある。しかし、読み出しバッファ１２４に転送し格納するデータ部分を少なくすることで読み出しバッファ１２４を実施するために使用する必要のあるＲＡＭベースの記憶装置の容量は低減される。
【００５６】
ステップ６３０で、メモリ・コントローラ１２０は、ユーザ・ドメイン１９０などのそれぞれの宛先にオンデマンドでストリーミングするために、メモリ・デバイス１４５からのアクセスしたデータ・ブロックの少なくとも一部を読み出しバッファ１２４に格納する。
【００５７】
ステップ６３５で、メモリ・コントローラ１２０は、ホスト・システム１１５を通したそれぞれの加入者宛先への要求によって指定されるコンテンツ・ストリームの特定部分の送信を開始する。
【００５８】
ステップ６４０で、メモリ・コントローラ１２０は、コンテンツ・ストリーム２０２の異なるまたは別の部分を求める別の要求（例えば、第２の要求）を受信する。
ステップ６４５で、メモリ・コントローラ１２０は、読み出しバッファからホスト・システム１１５へのコンテンツの新たに要求された部分の送信を開始する。この場合、読み出しバッファ１２４は、ホスト・システム１１５が要求したコンテンツ・セグメントをたまたま現在格納しているので、キャッシュ・ヒット（例えば、読み出しバッファ１２４がキャッシュである）が発生する。
【００５９】
ステップ６５０で、メモリ・デバイス１４５から読み出しバッファ１２４へデータを移動する上記の転送動作を使用可能にする一方で、メモリ・コントローラ１２０は、メモリ・デバイスのアレイ１４５に最終的に格納される受信データを一時的に格納するために書き込みバッファ１２２を維持する。
【００６０】
ステップ６５５で、書き込みバッファ１２２内の受信データがしきい値を超えたことの検出に応答して、メモリ・コントローラ１２０が、ｉ）メモリ・デバイスのアレイ１４５から読み出しバッファ１２４へのデータ・アクセス（転送）を使用不可にし、ｉｉ）書き込みバッファ１２４内に格納された受信データ（ナビゲーション・ポインタのセットを含む、または含まない）のメモリ・デバイスのアレイ１４５への転送を開始し、ｉｉｉ）転送時に、加入者が中断しないで映画を視聴できるように、読み出しバッファ１２４からそれぞれの宛先への１つ以上のコンテンツ・ストリームのストリーミングを使用可能にし、ｉｖ）転送後に、メモリ・デバイスのアレイ１４５内に格納されたデータの読み出しバッファ１２４への転送を再度使用可能にする。
【００６１】
上記のように、本明細書に記載する技術は、フラッシュ・ベースのメモリ・デバイス内に格納されたコンテンツの配信などの用途で使用するのに適している。しかし、本明細書に記載する構成は、上記用途での使用に限定されず、それ故、本明細書に記載する構成およびその変形は他の用途にも十分適していることに留意されたい。
【００６２】
以上、好ましい実施形態に関して本発明を具体的に示し、説明してきたが、当業者であれば、添付の特許請求の範囲に記載する本発明の精神および範囲を逸脱することなしに本発明の形式および詳細をさまざまに変更することができることは明らかであろう。上記変更は本発明の範囲内に入るものとする。したがって、本発明の上記説明は、限定的なものではない。逆に、本発明の実施形態の任意の限定は、特許請求の範囲に記載されている。
【図面の簡単な説明】
【００６３】
【図１】本明細書に記載する実施形態の例示的なコンテンツ・マネージャを示す図。
【図２】本明細書に記載する実施形態の未来および過去のセグメントをポイントするポインタの複数のセットを含む例示的なデータ・ストリームを示す図。
【図３】本明細書に記載する実施形態のバッファリング・ストリーム・コンテンツの一例を示す図。
【図４】本明細書に記載する実施形態のメモリ・コントローラの例示的なアーキテクチャを示す図。
【図５】本明細書に記載する実施形態のコンテンツをバッファリングおよび配信する技術を示す流れ図。
【図６】組み合わせて、本明細書に記載する一実施形態のコンテンツをバッファリングおよび配信する技術のより具体的な技術を示す流れ図。
【図７】組み合わせて、本明細書に記載する一実施形態のコンテンツをバッファリングおよび配信する技術のより具体的な技術を示す流れ図。
【図１】
2008234629.tif 000003
【図２】
2008234629.tif 000004
【図３】
2008234629.tif 000005
【図４】
2008234629.tif 000006
【図５】
2008234629.tif 000007
【図６】
2008234629.tif 000008
【図７】
2008234629.tif 000009
【外国語明細書】
2008234629.tif 000010
2008234629.tif 000011
2008234629.tif 000012
2008234629.tif 000013
2008234629.tif 000014
2008234629.tif 000015
2008234629.tif 000016
2008234629.tif 000017
2008234629.tif 000018
2008234629.tif 000019
2008234629.tif 000020
2008234629.tif 000021
2008234629.tif 000022
2008234629.tif 000023
2008234629.tif 000024
2008234629.tif 000025
2008234629.tif 000026
2008234629.tif 000027
2008234629.tif 000028
2008234629.tif 000029
2008234629.tif 000030
2008234629.tif 000031
2008234629.tif 000032
2008234629.tif 000033
2008234629.tif 000034
2008234629.tif 000035
2008234629.tif 000036
2008234629.tif 000037
2008234629.tif 000038
2008234629.tif 000039
2008234629.tif 000040
2008234629.tif 000041
2008234629.tif 000042