(57)【要約】　　　（修正有）【課題】大規模単一メモリアレイに、通信プロトコルを生成するストリームプロセッサを用いて、複数のネットワークに接続すること。【解決手段】このネットワークでは、データ通信のために１つ以上のプロトコルが使用されており、それぞれのネットワークにあわせて、トランスポートプロトコルスタックが生成される。このスタックは、ハードウェアで生成されているため、大幅なスループット改善と、生成できるストリーム数の増加が可能になる。プロトコルスタックをハードウェアで生成するので、広域データバスと広域アドレスバスを使用することができ、その結果、大規模メモリアレイからのスループットをより高速で行えるようにすることができる。複数のプロトコルスタックジェネレータが同じメモリブロックにアクセスすることで、多くのストリームを大規模メモリバッファアレイにあるコンテンツからのシングルコピーで生成することができるようになる。【選択図】　　　図１
2004040749.tif 000002
【特許請求の範囲】
【請求項１】
ビデオデータやオーディオデータの複数のストリームを生成するための装置であって、
大規模メモリデバイスと、
該大規模メモリデバイスに前記データを格納する手段と、
前記大規模メモリデバイスから前記データの少なくとも一部を取り出し、複数の非同期のデータストリームを生成する手段とを有し、
前記データ取り出し手段は、
（ａ）前記大規模メモリデバイスに動作的に接続された少なくとも２つのストリームサーバプロセッサと、
（ｂ）前記大規模メモリデバイスに格納された前記データに前記少なくとも２つのストリームサーバプロセッサがほぼ同時にアクセスすることを可能にする相互接続手段と、
（ｃ）前記相互接続手段に含まれ、前記少なくとも２つのストリームサーバプロセッサに動作的に接続され、前記複数のデータストリームが前記少なくとも２つのストリームサーバプロセッサのうちの１つ以上によって前記大規模メモリデバイスから生成されるように前記大規模メモリデバイスへのアクセスを制御する、ハードウェアベースのアビトレータと、
（ｄ）少なくとも１つのネットワークを介して各ストリームを転送し、かつ前記データストリームをデコードするために必要なプロトコルを生成する手段と、
を有する装置。
【請求項２】
前記大規模メモリデバイスから取り出されて格納された前記データが、前記ビデオに対して所定の関係を有するオーディオを含む請求項１記載の装置。
【請求項３】
前記大規模メモリデバイスがランダムアクセスメモリで構成される請求項１記載の装置。
【請求項４】
前記大規模メモリデバイスが少なくとも６５ギガバイトの記憶容量をもつ請求項３記載の装置。
【請求項５】
前記大規模メモリデバイスが３６ビットよりも大きなアドレスバスをもつ請求項３記載の装置。
【請求項６】
前記オーディオデータやビデオデータが複数のプログラムを含む請求項３記載の装置。
【請求項７】
非同期のデータストリームからなる前記複数のストリームが前記複数のプログラムから同時に生成される請求項６記載の装置。
【請求項８】
前記プログラムの全体が前記大規模メモリに書き込まれるのを待つ必要なしに、前記大規模メモリに格納されつつあるオーディオ／ビデオプログラムの最初のブロックから前記ストリームが生成されることを可能にする手段を含むクレーム７記載の装置。
【請求項９】
前記少なくとも２つのストリームサーバプロセッサのそれぞれのためのＣＰＵモジュールを含み、該ＣＰＵモジュールのそれぞれが、前記データストリームの取り出される第２のバスから分離した第１のバスを使用する請求項３記載の装置。
【請求項１０】
前記大規模メモリデバイスが二重インラインメモリモジュールで構成される請求項１記載の装置。
【請求項１１】
前記大規模メモリデバイスがＤＲＡＭで構成される請求項１記載の装置。
【請求項１２】
前記大規模メモリデバイスがマグネティックＲＡＭで構成される請求項１記載の装置。
【請求項１３】
前記大規模メモリデバイスがデュアルデータレートＲＡＭで構成される請求項１記載の装置。
【請求項１４】
前記大規模メモリデバイスがスタティックＲＡＭで構成される請求項１記載の装置。
【請求項１５】
前記大規模メモリデバイスがシンクロナスＤＲＡＭで構成される請求項１記載の装置。
【請求項１６】
前記データストリームに関連付けられた前記プロトコルがハードウェアで生成される請求項１記載の装置。
【請求項１７】
前記ストリームサーバプロセッサ間が相互接続され、バックプレーンを介して共有されている請求項１記載の装置。
【請求項１８】
前記取り出して生成する手段がＶＣＲタイプ制御に応答する手段を含み、該制御はソフトウェアを実行しているそれぞれのＣＰＵで操作される請求項１記載の装置。
【請求項１９】
ビデオデータやオーディオデータのストリームを非同期で複数生成する方法であって、
（ａ）１つ又はそれ以上のビデオやオーディオのプログラムストリームを生成するステップと、
（ｂ）大規模メモリデバイスに前記プログラムストリームを転送するステップと、
（ｃ）前記プログラムストリームの少なくとも一部を前記大規模メモリデバイスに格納するステップと、
（ｄ）１つ又はそれ以上の顧客端末からのリクエストに応じてセッションを確立して１つ又はそれ以上のプログラムストリームを生成するステップであって、前記リクエストが、プログラムストリームが前記顧客端末に転送される際に通過する第２バスとは分離された第１バスを使用するＣＰＵによって操作されるステップと、
（ｅ）前記大規模メモリに格納された１つ又はそれ以上のプログラムストリームから前記顧客端末用の１つ又はそれ以上のプログラムストリームを取り出して生成するためのそれぞれのハードウェアベースのプロセッサを使用するステップと、
を有する方法。
【請求項２０】
前記大規模メモリデバイスがランダムアクセスメモリで構成される請求項１９記載の方法。
【請求項２１】
前記大規模メモリデバイスに同時にアクセスする複数のハードウェアベースのプロセッサを使用して複数のプログラムストリームを生成するステップを更に備える請求項１９記載の方法。
【請求項２２】
前記ハードウェアベースのプロセッサで、前記データストリームそれぞれに関連付けられたプロトコルスタックを生成するステップを更に備える請求項１９記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マルチプルネットワークプロセッサ又はアウトプットストリーム用プロセッサを、大規模な単一メモリアレイに接続するための方法と装置に関する。特に、大規模な単一メモリアレイから、ハードウェアであるネットワークプロセッサやストリームのための通信プロトコルを生成するストリームプロセッサを使用して、複数のネットワークに接続する方法と装置に関する発明である。上述の装置は、ストリームプロセッサのメモリアレイへのアクセスを制御する。
【０００２】
【発明の背景】
複数のネットワークプロセッサ間で、大容量のメモリアレイを共用することで、複数の出力情報が媒体からのシングルコピーで生成できるようになり、データ（対象となるコンテンツ）の複写をしなくても、異なる間隔で複数の出力ポートを通して同時に転送できるようになる。メモリバッファが大きくなるほど、より多くのデータや単一のプログラム、ソースマテリアルを格納できる。単一メモリアレーを活用することで、プログラムのシングルコピーで多くの出力を生成することが可能となる。本発明は、特にオーディオやビデオで使用するプログラムサイズが大きく同時にたくさんのデータを再生する必要があるような負荷の高いアプリケーションに有効である。
【０００３】
オーディオやビデオ、インターネットサーバ（サーバ群）を開発する場合には、構造上の重要な用件がある。いくつかの設計要素について、考慮すべき要因がある。その一つの要因は、同時に出力するストリームの数や、要求されるペイバックセッションの数である。もう一つの要因は、ストリーミングされる情報のトータルサイズである。３番目の要因は、それぞれのストリーミング出力のデータ転送レート、又は転送ビットレートである。これらの要因を知ることで、対象となる設計構造が具体化する。現在ある高速ネットワークのインターフェースにはたくさんのタイプが存在する。一般的には、これらのインターフェースは、ネットワークコントローラチップとして存在する。これらのネットワークコントローラは、ＰＣやワークステーションなどのコンピュータの中央演算装置（ＣＰＵ）に適合するようにしてある。ＰＣやワークステーションには、一般的にＰＣＩバス、又は類似の拡張されたインターフェースを持ち、ネットワークコントロールカードやＩ／Ｏコントロールカードを接続できるようになっている。上述の拡張バスは、シグナルプロセッサ用に設計されているので、デスクトップコンピュータのシステムで見かける。加えて、コンピュータにはシングルネットワークコントローラのみが含まれている。具体的には、例えばファイルサーバは、複数のネットワークインターフェースを持つが、大抵の場合はインターフェースは２つのみである。ストリーミングサーバを使用する目的は、可能な限り多くのコンテンツを、可能な限り多くのユーザに、可能な限り小さなスペースからスリーミングすることである。しかし、上述の目的のためにコンピュータに追加できるネットワークインターフェースの数には限界がある。
【０００４】
ＣＰＵはネットワークのトラフィックを発生するソフトウェアの動作を担っている。これは一般的に通信プロトコルスタックと呼ばれる。しかし、ＣＰＵのスピードが制限、或いは性能のボトルネックとなる。この制限を克服するために、マルチＣＰＵが使用される。しかし、本発明で対象となるアプリケーションに対して上述の解決策を実施するためには、複数のネットワークインターフェースカードが必要になり、また複数のＣＰＵ全てが相互に連結するための、或いはデータ通信するためのバス構造がサーバに必要となる。このボトルネックに対する解決策がいくつか発明されている。
【０００５】
図９に、先行技術の実施例を示す。この配置では、ＣＰＵ９０２が全てのデータ通信を制御、実行する。データブロックは、信号線９１１上のＣＰＵ９０２によってストレージデバイス９０１から取り出され、取り出されたデータブロックは、次に信号線９１２上のメモリ９０３に書き込まれる。メモリ９０３に書き込みが完了すると、ＣＰＵ９０２は、ソフトウェアの指示に従って、該当するネットワークのプロトコルパケットを生成し、メモリ９０３に格納する。プロトコルパケットがメモリ９０３に格納されると、ＣＰＵ９０２は、上記パケットを信号線９１４上の出力用インターフェース９０４に移動させる。このデータブロックは、ライン９１５を通してクライアントデバイスに送信される。
【０００６】
最後の要因は、記憶装置に関連する。ストリーミングするペイロードデータは全てサーバが元となっていなければならない。現行のアーキテクチャでは、データはハードディスク装置に格納される。全てのハードディスク装置には、２つの主な制限要因がある。データの継続した転送レートと、シーク時間又はランダムアクセス時間である。継続した通信レートは、継続した状態でデータを装置からどれだけ早く読み取ることができるかを決める。シーク時間は、指定されたデータブロックにアクセスするために、装置のある部分から他の部分に移動するための反応速度を示す。ディスク上の指定された場所をシークする時間は、データを転送する時間に含まれない。上述の様に、シーク時間によってディスク装置の性能は著しく低下する。ストリーミングサーバのアプリケーションでは、非常に多くのストリーミング出力があり、それぞれのストリーミングが異なったプログラムであったり、同じプログラムでも異なる場所にある。これが原因となり、ストレージシステムのボトルネックとなる。ディスクドライブは、かなりの時間を適合するデータブロックをシークするために費やしてしまう。上述の問題を克服するために、さらにハードディスクドライブの追加が必要となる。
【０００７】
ストリーム出力が増加するにしたがって、システムに必要なハードディスクドライブも増加する。ハードディスクドライブはアレイ、又はドライブのグループに接続して、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ　Ａｒｒａｙ　ｏｆ　Ｉｎｅｘｐｅｎｓｉｖｅ　Ｄｉｓｋ）やＪＢＯＤ（Ｊｕｓｔ　ａ　Ｂｕｎｃｈ　Ｏｆ　Ｄｉｓｋ）構成のようにすることができるが、結局、全ての回転式メディアは、転送レートとシーク時間に限界がある。
【０００８】
ストレージ装置９０１から読み出されたデータブロックは、最終的なプロトコルのブロックサイズとは異なるサイズとなる。このバッファの転送サイズは、ＣＰＵ９０２によってプログラム制御されている。このシステムは、ハードウェアが少なく、全ての機能はＣＰＵ９０２上のソフトウェアによって実行されるため、経済的である。上述のアプローチの主な制限事項は、ＣＰＵの処理時間によって性能が制約されてしまうことである。
【０００９】
図１０は、改良を加えたバージョンのダイレクトメモリアクセス、又はＤＭＡの実行について記述している。このバージョンでは、ストレージデバイス１００１と出力用インターフェース１００４が直接メモリ１００３にアクセスできるように、共有バス１０１１を追加している。ＣＰＵ１００２は、信号線１０１３とバス１０１１、信号線１０１２を使用して、ストレージ装置１００１にデータ転送を指示する。ストレージデバイス１００１は、信号線１０１２とバス１０１１、信号線１０１４を使用してメモリ１００３にデータ転送を開始する。この時のデータ転送は、データパス上にあるＣＰＵ１００２なしで実行されるため、性能を向上することができる。
【００１０】
１ブロックのデータがメモリ１００３に格納されると、ＣＰＵ１００２は、ソフトウェアの制御に基づいて、適当なネットワークプロトコルパケットを生成し、メモリ１００３に格納する。プロトコルパケットがメモリ１００３に格納されると、ＣＰＵ１００２は出力用インターフェース１００４にデータを出力するように指示する。出力用インターフェース１００４は、メモリ１００３からのデータ転送を開始し、信号線１０１４、バス１０１１、信号線１０１５上を通って出力用インターフェース１００４から出力ポート１０１６に出力される。上述のシステムの場合、ＣＰＵは実質的にデータの移動に関わっていないので、図９のシステムに比較して性能が向上している。しかし、プロトコルパケットは、依然ＣＰＵ１００２で生成されているため、メモリ１００３は、相対的にサイズが小さい。そして、バス１０１１を全ての装置と共有しなければならない。最も高速なバスと最も高速なＣＰＵを使用しても、上述のアーキテクチャでは、本発明のシステムに比較して性能的に限界がある。
【００１１】
上述のように、本発明の目的の１つは、単一メモリからのストリームの出力数をできるだけ増加させることである。本発明のもう一つの目的は、データバスとアドレスバスのサイズを増加させ、大規模なメモリアレイから、より高速なデータ転送をすることである。本発明のもう一つの目的は、メモリバス上の仲裁的な処理やプロトコルスタックを生成する処理からＣＰＵを開放することである。
【００１２】
【発明の概要】
大規模なメモリには、多くのビデオやオーディオ、オーディオビジュアル、その他のコンテンツを記憶している。ハードディスク装置に要求されるアクセス時間を除くと、メモリはランダムアクセスである。メモリの内容は、異なるネットワークプロトコルを使用している、ネットワークを経由して複数の顧客サイトに読み出される。コンテンツは、メモリに格納され、中継用ハードウェアで制御されて、メモリから様々な顧客サイトに読み出される。
【００１３】
メモリの内容は、パケットデータに束ねられる。それぞれのバケットデータは、通信プロトコルスタックからプロトコルに従ってコード化されている。通信プロトコルスタックは、ハードウェアで構成されたアーキテクチャで生成される。従って、スループットが大幅に改善され、生成可能なストリームの数も増えている。広域データバスと広域アドレスバスを活用することができる。これは、プロトコルスタックをハードウェアで生成するので、大規模なメモリからでもより高速なスループットが得られるからである。多数のプロトコルスタック生成機は、同じメモリブロックにアクセスをするので、たくさんのストリーム出力が、大規模メモリの内容をシングルコピーで生成することができる。
【００１４】
【詳細説明】
本発明における上記構成及びその他の構成、並びにそれらを実現するための方法は、以下の記述で、より明らかになる。そして、本発明は、添付図面と関連付けながら記述された本発明の実施例を参照することで、最良の理解が得られる。
【００１５】
図１に示すように、サーバシステム１００は、メモリアレイ１０１と相互接続装置１０２、ストリームサーバモジュール１０３ａから１０３ｎ（１０３）で構成されている。サーバシステム１００は、通信システムの一部で、トランスポートネットワーク１２２ａから１２２ｎ（１２２）とクライアントデバイス１２４ａから１２４ｎ（１２４）を含む。代表的なシステムでは、それぞれのクライアントデバイスが、一つのトランスポートネットワークを通してのみ操作できるが、それぞれのトランスポートネットワークは、どのストリームサーバモジュールからでもサーバシステム１００と通信することができる。
【００１６】
それぞれのトランスポートネットワークは、異なるプロトコルを使用して操作可能である。例えばＩＰ（Ｉｎｔｅｒｎｅｔ　Ｐｒｏｔｏｃｏｌ）、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ　Ｔｒａｎｓｆｅｒ　Ｍｏｄｅ）、イーサネット、その他適宜レイヤ−２やレイヤ−３のプロトコルを使用することができる。加えて、特定のトランスポートネットワークは、クイックタイム、リアルネットワーク、ＲＴＰ（Ｒｅａｌ　Ｔｉｍｅ　Ｐｒｏｔｏｃｏｌ）、ＲＴＳＰ（Ｒｅａｌ　Ｔｉｍｅ　Ｓｔｒｅａｍｉｎｇ　Ｐｒｏｔｏｃｏｌ）、ＵＤＰ（Ｕｓｅｒ　Ｄａｔａｇｒａｍ　Ｐｒｏｔｏｃｏｌ）、ＴＣＰ（Ｔｒａｎｓｐｏｒｔ　ＣｏｎｔｒｏｌＰｒｏｔｏｃｏｌ）など多数の下位レベルのプロトコルで操作が可能である。代表的な実施例は、イーサネットトランスポートネットワークで、ＵＤＰパケットを含むＩＰプロトコルパケットを使用する。このＵＤＰパケットには、ＲＴＰペイロードパケットも含まれる。
【００１７】
通信プロセスは、接続されているトランスポートネットワーク１２２を通してクライアント装置１２４から送られるストリーム要求で開始される。要求に対するコマンドは、信号線１１４ａ−１１４ｎ（１１４）を通ってストリームサーバ１０３に届く。この間のプロトコル情報はデコードされている。例えば、要求がストリームサーバモジュール１０３ａに届くと、この要求はバス１１７を通してマスターＣＰＵ１０７に送られる。マスターＣＰＵには、モトローラ社製のパワーＰＣ　７５０のような、市販のＣＰＵを何個も使用することができる。部分的に配置や状態を更新するために、ＣＰＵ１０７は、ローカルコントロールインターフェース１０６に信号線１０６によって接続されている。このローカルコントロールインターフェース１０６は、ライン１２１を通してシステムオペレータと通信することができる。一般的には、ライン１２１には、シリアル接続かネットワーク接続された端末、又はローカルコンピュータが接続される。制御機能、或はノンストリーミングペイロードは、マスターＣＰＵ１０７で処理される。マスターＣＰＵ１０７のプログラム命令が、メモリアレイ１０１に格納されている要求のあったコンテンツやプログラムの位置を判断する。メモリアレイ１０１は、ビデオやオーディオ、その他の情報を格納することができる大規模なメモリバッファである。上述のようにして、サーバシステム１００は、同時に様々なコンテンツを各顧客装置に提供することができる。カスタマーセッションには、動画、音楽、スポーツのイベント、書面情報などを収録することができ、これらはプログラムである。また一方、各顧客装置が、同じコンテンツや異なるコンテンツを受け取ることが出来る。各顧客は、非同期に特定のストリームを受け取ることができ、そのデータは、他の顧客装置に送る非同期で特定のストリームの送信と同時である場合でも、そうでない場合でも受け取ることができる。
【００１８】
要求されたコンテンツが、既にメモリアレイ１０１に常駐していない場合、そのプログラムをロードする要求が、信号線１１８、バックプレーンインターフェース１０５、信号線１１９を通して発行される。外部のプロセッサやＣＰＵ（未図示）は、その要求に応答して、要求のあったプログラムコンテンツをバックプレーンインターフェース１０４の制御でバックプレーンライン１１６を通してローディングされる。バックプレーンインターフェース１０４は、相互接続装置１０２を通してメモリアレイ１０１に接続されている。このため、メモリアレイ１０１は、ストリームサーバモジュール１０３だけでなく、バックプレーンインターフェース１０４とも共用することができる。プログラムコンテンツは、バックプレーンインターフェース１０４から信号線１１５、相互接続装置１０２、信号線１１２を通ってメモリアレイ１０１に書き込まれる。
【００１９】
バックプレーンがより機能的に動作するのは、一般的に大量なデータ又はデータブロックを動かす場合である。バックプレーンインターフェース１０４、相互接続装置１０２、メモリアレイ１０１は、それぞれ容量の小さいバッファを持っており、急激に大きなデータが送られてきても許容できるようになっている。より高速にするためのもう一つの方法は、より広域なバスパスを使用することである。例えば、１２８ビット、２５６ビットやさらに広域のバスを使用することである。より広域なバスインターフェースを使用することで、各メモリアクセスサイクルで転送されるデータのバイト数を大きくすることが出来る。
【００２０】
プログラムの最初のブロックがメモリアレイ１０１にロードされると、出力ストリームの開始可能となる。ストリーミング出力は、全てのプログラムがメモリアレイ１０１にロードされるか、或はメモリアレイ１０１にロード中のいずれかの時点まで遅らせることができる。ペイバックデータは、選択された一つ、又はそれ以上のストリームサーバモジュール１０３によって制御される。例えば、ストリームサーバモジュール１０３ａが選択されると、ストリームサーバモジュール１０３ａは、信号線１１３ａ、相互接続装置１０２、信号線１１１を通してメモリアレイ１０１にリードリクエストを送る。データブロックは、メモリアレイ１０１から読み出され、信号線１１２、相互接続装置１０２、信号線１１３ａを通してストリームサーバモジュール１０３ａに送られる。読み出されたデータブロックがストリームサーバモジュール１０３ａに送られると、このブロックに対するトランスプロトコルスタックが生成され、その結果が信号線１１４ａを通してトランスポートネットワーク１１２ａに送られる。トランスポートネットワークは、信号線１２３ａを通してクライアント装置１２４ａにストリーミングデータブロックを伝える。上述のプロセスが、プログラムソースを含むそれぞれのデータブロックに対して繰り返される。
【００２１】
要求されたプログラムコンテンツが既にメモリアレイ１０１に常駐されている場合、ＣＰＵ１０７は、ストリームサーバコントローラ１０３ａにメモリアレイ上の現在位置を通知する。この情報とともに、ストリームサーバモジュールは、直ちにメモリアレイ１０１からのプログラムストリーム送信要求を開始する。
【００２２】
システムは、２つのパスに分離されている。第一のパスは、大きいコンテンツ又はペイロード用のパスで、第二のパスは、制御とその他のノンペイロードパケットのためのパスである。ノンペイロードパケットは、ＶＣＲタイプの制御か、“トリックモード”パケットで、例えば中断、早送り、巻き戻しなどである。また、プログラムリスト一覧や利用可能なコンテンツ情報もノンペイロードパケットである。これらの信号は、通常ほとんどＣＰＵに影響を与えないので、ソフトウェアを動かしているＣＰＵで簡単に処理することができる。実際のパイロードパケットは、ペイロードに必要な小さな処理でも、非常にＣＰＵに負荷がかかる。上述の場合には、ストリーミングサーバモジュール１０３ａ、又は他のストリーミングサーバモジュールが、ペイロードデータの転送や移動を処理し、マスターＣＰＵ１０７は関与しない。上述のようにパスを分離することで、より高密度のシステムを実現し、従来のＣＰＵに比較してより大容量のストリームを提供することが可能となる。
【００２３】
メモリアレイ１０１は、多くのソースプログラムを保持するに十分な大きさの容量であることが望ましい。そして、ギガバイト或はテラバイト単位の容量があることが望ましい。最低でも、６５ギガバイトの容量が推奨される。上述のソースプログラムは、ビデオやオーディオ、又はそれらが組み合わされたデータである。メモリアレイは、コンベンショナルメモリで構成されており、ｄｙｎａｍｉｃ　ｒａｎｄｏｍ　ａｃｃｅｓｓ　ｍｅｍｏｒｙ（ＤＲＡＭ）や、ｓｙｎｃｈｒｏｎｏｕｓ　ＤＲＡＭ（ＳＤＲＡＭ）、Ｒａｍｂｕｓ　ＤＲＡＭ（ＲＤＲＡＭ）、ｄｕａｌ　ｄａｔａｒａｔｅ　ＤＲＡＭ（ＤＤＲＤＲＡＭ）、ｓｔａｔｉｃ　ＲＡＭ（ＳＲＡＭ）、ｍａｇｎｅｔｉｃ　ＲＡＭ（ＭＲＡＭ）、フラッシュメモリ、その他の自然状態では個体の状態の全てのメモリが使用できる。Ｄｕａｌ　ｉｎｌｉｎｅ　ｍｅｍｏｒｙ　ｍｏｄｕｌｅ（ＤＩＭＭｓ）を使用することもできる。上述のような大容量のメモリにアクセスするには、広域アドレスバスを使用する。従来の３２ビットアドレスバスでは、４ギガバイトのＲＡＭのアドレスへのアクセスしかできず、本発明に適用しない方がよい。３６ビット幅以上のアドレスバスを使用し、４８ビット幅のアドレスバスが本発明での使用には適している。これは、２５６ペタバイトのメモリに直接アクセスが可能となるからである。
【００２４】
図２に相互接続装置１０２をより詳細に示に示す。相互接続装置１０２は、メモリアレイ１０１とストリームサーバモジュール１０３間のデータ転送を制御している。相互接続装置１０２は、ストリームサーバモジュール１０３間の優先順位を確立し、メモリ１０１からデータを受け付けるストリームサーバモジュールの順番を決定している。
【００２５】
相互接続装置１０２内には、アビトレータ２０２がある。アビトレータ２０２は、なるべくハードウェアでの構成が望ましいが、ＦＰＧＡ（ａ　ｆｉｅｌｄ　ｐｒｏｇｒａｍｍａｂｌｅ　ｇａｔｅ　ａｒｒａｙ）やその他の適当なデバイスでも可能である。アビトレータ２０２は、ハードウェアで構成された機器である。リクエストの優先順位を決定する時に、アビトレータ２０２はバックプレーンインターフェース１０４を最優先順位にプログラムすることが可能になっている。いくつかのストリームサーバモジュール１０３は、適切な方法で優先順位を与えられる。連続的に決定する優先順位や、オーディオ、ビデオなどのコンテンツによって決定する優先順位、などがある。
【００２６】
各ストリームサーバモジュールは、アドレスバス１１１に信号線２０８ａ．．．２０８ｎ（２０８）を通して接続されている。データは、メモリアレイ１０１からストリームサーバモジュール１０３に、データバス１１２と信号線２１０ａ−２１０ｎ（２１０）を通して送られる。ストリームサーバモジュール１０３は、アビトレータ２０２を通してデータを要求する。例えば、ストリームサーバモジュール１０３ａは、データ要求をアビトレータ２０２に対して信号線２０４ａを通して実施する。アビトレータは、ストリームサーバモジュール１０３ａが受けるべきデータを決定し、権限がライン２１０ａから送られる。この様にして、アビトレータは、ストリームサーバモジュールに関する優先順位を設定する。
【００２７】
バックプレーンインターフェース１０４は、特にメモリアレイ１０１に新しい情報をロードするために使用される。新しい情報は、信号線１１６、バックプレーンインターフェース１０４を通してロードされる。バックプレーンインターフェース１０４がデータを受け取る場合、アドレスバス１１１とデータバス１１２へのアクセス要求を信号線２１２を通してアビトレータ２０２に出す。アビトレータ２０２は、信号線２１４からの信号によりデータ転送の権限を通知される。バックプレーンインターフェース１０４は、信号線２１６を介してバス１１１にメモリアレイ１０１にアドレスデータを送信する。データは、信号線２１８を介してバス２１８に転送される。
【００２８】
アビトレータ２０２の動作を、図３のフローチャートでさらに詳細に示す。ステップＳ３０２で、アビトレータ２０２は、ストリームサーバモジュール１０３やバックプレーンインターフェース１０４からのリクエスト信号がきているかを判断する。リクエストがない場合、アビトレータは、ステップＳ３０２とＳ３０４を繰り返し実行してリクエストを待つ。ステップＳ３０４で、１つ又は１つ以上のリクエストを受けた場合、アビトレータはリクエストのあった全ての装置を記憶し、選択されている“ウイニング”装置を初期化し、ステップＳ３０６で最初にリクエストのあった装置に対してポインタをセットする。全ての装置が一斉にリクエストを出す場合には、最も優先度の高い装置を“勝ち残り”装置として選択しなければならない。Ｓ３０８は、現在選択されているリクエストのあった装置が、リクエストのあった装置の中で最も優先度の高い装置かをチェックする。リクエストのあった装置の中で最も優先度が高い装置であれば、Ｓ３１０で、その装置を新しく“ウイナー”装置として選択する。上述のプロセスを、リクエストのあった全ての装置に対して実施する。Ｓ３１２では、リクエストのあった最後の装置であるかをチェックする。リクエストのあった最後の装置でない場合には、Ｓ３１４で、次の装置を選択するためにポインタをインクリメントする。上述のプロセスは、全てのリクエストの優先順位を評価し終えるまで繰り返され、最も優先度の高い装置が“ウイナー”装置となる。上述の評価が完了すると、Ｓ３１６で“勝ち残り”装置に対して制御権が与えられる。そして、“ウイナー”は、アビトレータを通してコマンド発行が出来るようになる。この“ウイナー”がサービスを要求している間は、サービスを受けられることになる。Ｓ３１８は、上述の“ウイナー”装置からのリクエスト信号を監視し、リクエストがＳ３１８とＳ３１６を繰り返している間は、制御権を維持する。Ｓ３１８で、装置がサービスの要求をやめると、Ｓ３２０で制御権が開放され、Ｓ３０２の処理にもどって最初から始まる。
【００２９】
図４は、図１に示したストリームサーバモジュール１０３の動作を示すブロックダイアグラムである。ストリームサーバプロセッサ（ＳＳＰ）４０１は、オートペイロードリクエスタと、プロトコルのエンコーダ、デコーダとしてサービスを提供する。ＳＳＰ４０１は、信号線１１３を通してペイロードデータを要求し、受け取る。受け取ったペイロードデータは、エンコードして、ＴＣＰ／ＩＰやＵＤＰ／ＩＰなどのネットワークパケットに変換される。エンコードされたパケットは、信号線４１１ａ−４１１ｎ（４１１）を通して、一つ又はそれ以上のメディアアクセスコントローラ（ＭＡＣ）４０２ａ−４０２ｎ（４０２）に送信される。メディアアクセスコントローラ４０２は、シリアルなデータとシリアルでないデータを処理し、物理ネットワーク層で使用される規格のフォーマットを使用する。イーサネットの場合には、メディアアクセスコントロール４０２も、コリージョンの検出やリンク層のネットワークエラーのオートリカバリ機能を持つ。
【００３０】
メディアアクセスコントロール４０２は、信号線４１２ａ−４１２ｎ（４１２）を使用してメディアインターフェースモジュール４０３ａ−４０３ｎ（４０３）に接続され、ネットワークに接続する物理媒体に対する処理を実施する。対象となる物理媒体には、イーサネット用ツイストペアトランシーバやイーサネット用光ファイバーインターフェース、ＳＯＮＥＴ、その他多くの物理インターフェースがあり、これらの中には現在存在するものや今後作られるものがあり、希望するネットワークの物理的な低レベルインターフェースに適合したインターフェースを使用し、信号線１１４ａ−１１４ｎ（１１４）を通じて送信される。
【００３１】
制御パケットが要求された場合、例えばＶＣＲのような制御では、ハードウェアの変わりにＣＰＵで処理を実行しても十分である。装置構成によって、プロトコルを頻繁に変えることができるので、様々なシステムに対して変えることができる。あるケースでは、制御プロトコルスタックは、装置環境によってカスタマイズすることができる。上述の理由で、制御機能はＣＰＵ４０４で処理される。これに対して、ペイロードプロトコルスタックは比較的安定しているので、ハードウェアで処理することができる。さらに、ハードウェアで処理することにより、広域データパスや、標準的なＣＰＵで使用する３２ビット又は６４ビットのデータパス以上に広域なデータパスを使用することが可能となる。２５６ビットデータバスのように、より広域なデータパスを使用することで、アクセスサイクル毎に、より多くのデータをメモリから転送することができる。
【００３２】
ＳＳＰデータバスのデータ幅は、ＣＰＵのデータ幅より広域であることが望ましい。なるべく、ＳＳＰ４０１は、フィールド　プログラマブル　ゲート　アレイ（ＦＰＧＡ）のように再プログラム可能なハードウェアロジックを使用する。ＦＰＧＡ等を使用することにより、ペイロードプロトコルを必要に応じてアップデートすることができ、さらにソフトウェアと比較して優れた性能を出すことが可能となる。上述のように柔軟性を持たせることで、同じサーバ内の異なるＳＳＰを必要に応じて異なるプロトコルで動作させることが可能となる。アーキテクチャにＦＰＧＡを利用することで、ハードウェア全体の機能を、簡単なコードファイルを更新によって、わずか１００ｍｓほどで変更することができる。
【００３３】
実際には、ストリームサーバプロセッサ４０１は、入力と出力のパケットを分離している。出力しようとするペイロードパケットが上述のパケットである場合、ストリームサーバプロセッサ（ＳＳＰ）４０１で直接生成することが可能となる。例えば、ＳＳＰ４０１が、信号線４１１ａを通してＭＡＣ４０２ａにパケットを送る。この時、ＭＡＣ４０２ａはメディアインターフェースモジュール４０３ａと信号線４１２ａを使用して、信号線１１４ａを通してネットワークにパケットを送信する。
【００３４】
クライアントの制御リクエストは、メディアインターフェースモジュール４０３ａ、信号線４１２ａ、ＭＡＣ４０２ａを介して、ネットワーク線１１４ａから受信される。ＭＡＣ４０２ａは、ＳＳＰ４０１に上記リクエストを送信する。ＳＳＰ４０１は、制御パケットを分離し、信号線４１３を通してＣＰＵ４０４に転送する。ＣＰＵ４０４は、ＲＯＭ／Ｆｌａｓｈ　ＲＯＭ４０６などに格納されているプログラムを使用して、コントロールパケットを加工する。プログラムの実行や、実行時のローカル変数を格納するために、ＲＡＭ４０７が使用される。ＲＯＭ４０６とＲＡＭ４０７は、内部バス４１５でＣＰＵと接続され、内部バス４１５は常に直接ＣＰＵ４０４と接続されている。
【００３５】
ＣＰＵ４０４は、信号線４１４、コントロールバスインタフェース４０５、信号線１１７を使用してプログラムコンテンツやシステム制御に関する命令を図１のマスターＣＰＵ１０７に送信する。それぞれのストリームサーバモジュールにＣＰＵ４０４を置くことにより、セッションマネジメントやセッションコントロールのタスクを、ネットワークライン１１４ａ−１１４ｎ付近で処理することができる。このため、ＣＰＵへの負荷に軽減し、ネットワークインターフェース毎に、より多くのストリームコンテンツを同時に処理することが可能となる。
【００３６】
ストリームサーバモジュールとシステムのＣＰＵを接続する方法は、いろいろある。ここでは、その１例を示す。
図５は、図４のストリームサーバプロセッサ（ＳＳＰ）４０１の実施例を示している。ＳＳＰ４０１は、１つ又は１つ以上のストリームコントローラ５０１ａ−５０１ｎ（５０１）を持ち、アドレスバス５１８、ペイロードデータバス５１９、コントロールデータバス５２０と相互に接続されている。この例で、プロトコルストリームエンコーダ／デコーダ５０５ａに、データ要求がきた場合、アドレスがアドレスジェネレータ５０２ａによって生成される。大規模なメモリアレイにアクセスするために、アドレスジェネレータ５０２ａは４８ビットのビット幅を持つアドレスを生成できるようにしている。生成されたアドレスは、ストリームコントローラ５０１ａから、信号線５１５ａ、アドレスバス５１８を通って、アドレスバスインターフェース５０６に送り出される。アドレスバス５０６は、ライン５１１を通って、ＳＳＰの外に要求されたアドレスデータを送信する。データは、外部ＲＡＭバッファから、信号線５１３、ペイロードデータバスインターフェース５０９、バス５１９、信号線５１６ａを通ってペイロードデータバッファ５０３ａに返される。データは、ペイロードデータバッファ５０３ａから、信号線５２１ａ、プロトコルシステムエンコーダ／デコーダ５０５ａを通って、ライン４１１ａに出力される。
【００３７】
システムの処理能力を最大限に引き出すために、１２８ビットや２５６ビットのような広域データバスを利用する。ペイロードデータバッファ５０３ａにデータをバッファリングすることにより、ペイロードデータバスインターフェース５０９と結合されたバスが、プロトコルストリームエンコーダ／デコーダ５０５ａから異なる転送スピードで操作可能となる。ＴＣＰ／ＩＰ、ＵＤＰ／ＩＰ，ＲＴＰ，ＲＴＳＰ、その他の上位層の通信プロトコルは、プロトコルストリームエンコーダ／デコーダで生成される。これらのプロトコルパケット生成に、ハードウェアデバイスを使用することで、より大量のデータのスループット率を得られる。プロトコルパケットが生成されると、データは、パケットやブロック単位でライン４１１ａを通って外部へ送られる。上述の処理は、ほとんど或は全くオーバーヘッドなく継続することができる。停止、再生、一時停止等のコントロールパケットや、コンテンツ一覧、ショウタイム、スケジュールは、使用頻度が少なく、データ量も小さく、特別な処理が必要なため、一般的にはハードウェアで直接処理することはせず、ＣＰＵで処理をさせる。上述の処理とは逆に、送られてくる制御パケットは、ライン４１１ａを通してプロトコルストリームエンコーダ／デコーダ５０５ａが受信し、適当な通信プロトコルでデコードされる。そして、制御データはライン５２２ａを通ってコントロールデータバッファ５０４ａに転送される。コントロールパケットは、コントロールデータバッファ５０４ａから、ライン５１７ａ、バス５２０、コントロールデータバスインターフェース５１０を通ってライン５１４に出力される。
【００３８】
セッションマネージメントやプログラムリストなど外部に送信されるコントロールパケットには、逆向きの処理ルートを使用する。コントロールパケットは、ライン５１４を通して、コントロールデータバスインタフェース５１０送られる。そこから、コントロールパケットは、バス５２０、ライン５１７ａ、コントロールデータバッファ５０４ａ、ライン５２２ａを通ってプロトコルストリームエンコーダ／デコーダ５０５ａに送られる。ここで、データはエンコードされ、ライン４１１ａを通って外部へ送信される。コントロールデータバッファ５０４ａにコントロールデータをバッファリングすることで、コントロールデータバスインターフェース５１０と関連するバスを、プロトコルストリームエンコーダ／デコーダ５０５ａから異なる転送スピードで操作することが可能となる。
【００３９】
図６は、１つのストリームコントローラ５０１の一部を詳細に示したブロックダイアグラムである。出力しようとするペイロードデータは、ライン５１６を通して受け取り、ペイロードデータバッファ５０３に記録される。そのデータは、ライン６１１を通してプロトコルセレクトロジックアレイ６０１に送られ、さらにライン６１２を通って適当なプロトコルエンコードロジックアレイ６０２ａ−６０２ｎに送られる。データブロックは、的確にプロトコルにしたがってエンコードされた後、ライン６１３ａ−６１３ｎ（６１３）を通ってペイロード／コントロールトランスミットコンバイナロジック４０３に送られ、ライン４１１を通してネットワークインターフェースに出力される。
【００４０】
特定の通信用コントロールデータを出力する場合には、ライン５１７を通ってコントロールデータバッファ５０４に送信する。コントロールデータバッファ５０４の出力データは、ライン６１４を通って、プロトコルセレクトロジック回路６０５に送られ、ここで必要なプロトコルを識別し、ライン６１５を通して、適切なプロトコルエンコードロジック回路６０４ａ−６０４ｎ（６０４）に送られる。エンコードされたデータは、ライン６１６ａ−６１６ｎ（６１６）を通って、ペイロード／コントロールトランスミットコンバイナロジックロジック６０３に送られる。そして、制御情報はライン４１１を通って伝送される。
【００４１】
入力データは、上述と同様な方法でデコードされる。ライン４１１を通って入力されたデータは、ペイロード／コントロールレシーブセパレータロジック６０６で分解される。ペイロードデータはライン６１７を通ってプロトコルセレクトロジック６０７に送られる。プロトコルセレクトロジックは、特定のペイロードで使用するプロトコルを認識し、そのデータを適切なライン６１８を通してプロトコルデコードロジック回路６０８ａ−６０８ｎ（６０８）に送信する。デコードされたデータの出力は、ライン６１９を通して、ペイロードデータバッファ５０３に記憶され、ライン５１６を通して出力される。
【００４２】
制御データも、上述と同様な方法でデコードされる。ライン４１１を通してシステムに入力されるデータは、ペイロード／コントロールレシーブセパレータロジック６０６で分解される。分解されたデータは、ライン６２０を通して、プロトコルセレクトロジック６０９に送られ、ここで、コントロールデータが使用しているプロトコルを識別し、適切なライン６２１を通して、プロトコルデコードロジック６１０ａ−６１０ｎ（６１０）に送信される。デコードされたデータは、ライン６２２を通して、セレクトコントロールデータバッファ５０４に記録され、ライン５１７を通してストリームコントローラに送信される。
【００４３】
図７は、図５に示したストリームコントローラ５０１の状態ダイアグラムである。ストリームコントローラは、コンテンツデータが要求されるまで、アイドル状態Ｓ７０１となっている。上述の時は、Ｓ７０２で適切なアドレスが生成される。そして、コンテンツデータは、状態Ｓ７０３で即座にメモリ１０１から読み込まれる。メモリ１０１は、バッファがフルの状態になるまで読み込まれる。そして、必要があれば、バッファ内の全てのデータがプロトコルにしたがってエンコードされるまで、タイムスタンプが調整され、Ｓ７０４の状態でプロトコルラッパーが付加される。Ｓ７０４のオペレーショナルな状態の詳細は、図８に記述する。バッファのデータは、Ｓ７０５の状態でアウトプットインターフェースに書き込まれ、Ｓ７０１でストリームコントローラはアイドル状態になる。
【００４４】
図８では、図５で示したプロトコルエンコーダロジック５０５の動作を詳しく記述している。これは、図７のＳ７０４の状態を詳細に記述したものである。ステップＳ８０１で、バッファポインタはクリアされる。ステップＳ８０２でロジックアレイは、バッファからのデータブロックがタイムスタンプを持っているか判断する。データブロックがタイムスタンプを持っていない場合、データはＳ８０３で変更されずに次のステップに進み、タイムスタンプを持っている場合は、Ｓ８０４で存在するタイムスタンプにオフセットを追加する。Ｓ８０５で、ロジックアレイは、参照クロックが必要か判断する。参照クロックが不要の場合、データは変更されずにＳ８０６を通り過ぎ、参照クロックが必要な場合には、Ｓ８０７で参照クロックデータが挿入される。Ｓ８０８で、アレイは、ヘッダデータが必要か判断する。ヘッダが不要な場合は、Ｓ８０９でデータを変更せずに次のステップに移り、ヘッダが必要な場合には、Ｓ８１０でエンコードされたプロトコルにしたがって、プロトコルヘッダが書き込まれる。Ｓ８１１で、バッファがフルでなければ、バッファポインタをＳ８１３でインクリメントしてＳ８０２の処理に戻る。バッファの最後まで到達したらエンコードは終了し、Ｓ８１２で処理から抜ける。
【００４５】
本発明での多くの効果を明確にした。大容量のコンテンツを、単一の大規模なメモリバッファから多くのユーザに配信することができる。高速データ転送だけでなく、高い処理性能も実現された。多くのストリーム出力が、大規模メモリバッファにあるコンテンツをシングルコピーで生成することができる。
【００４６】
本発明の原理を、具体的な機器とアプリケーションとに関連して記述してきたが、この記述はほんの一例であって、本発明の範囲がこれに限定されるものではない。
【図面の簡単な説明】
【図１】本発明で使用する通信システムの具体的なブロック図である。
【図２】図１に示すシステムの一部のブロック図である。
【図３】図２のアビトレータの動作を示したフローチャートである。
【図４】図１のシステムのストリームサーバモジュールのブロック図である。
【図５】図４のストリームサーバモジュール内部にあるストリームサーバプロセッサのブロック図である。
【図６】図５のストリームサーバプロセッサ内にあるストリームコントローラの入出力パスを示すブロック図である。
【図７】図６のストリームコントローラの処理を示した状態図である。
【図８】図７の状態Ｓ７０４で示された、図５のプロトコルエンコーダロジックの動作を示したフローチャートである。
【図９】従来の通信システムのブロック図である。
【図１０】図９とは別の従来の通信システムのブロック図である。
【図１】
2004040749.tif 000003
【図２】
2004040749.tif 000004
【図３】
2004040749.tif 000005
【図４】
2004040749.tif 000006
【図５】
2004040749.tif 000007
【図６】
2004040749.tif 000008
【図７】
2004040749.tif 000009
【図８】
2004040749.tif 000010
【図９】
2004040749.tif 000011
【図１０】
2004040749.tif 000012
【外国語明細書】
2004040749.tif 000013
2004040749.tif 000014
2004040749.tif 000015
2004040749.tif 000016
2004040749.tif 000017
2004040749.tif 000018
2004040749.tif 000019
2004040749.tif 000020
2004040749.tif 000021
2004040749.tif 000022
2004040749.tif 000023
2004040749.tif 000024
2004040749.tif 000025
2004040749.tif 000026
2004040749.tif 000027
2004040749.tif 000028
2004040749.tif 000029
2004040749.tif 000030
2004040749.tif 000031
2004040749.tif 000032
2004040749.tif 000033
2004040749.tif 000034
2004040749.tif 000035
2004040749.tif 000036
2004040749.tif 000037
2004040749.tif 000038
2004040749.tif 000039
2004040749.tif 000040
2004040749.tif 000041
2004040749.tif 000042
2004040749.tif 000043
2004040749.tif 000044
2004040749.tif 000045
2004040749.tif 000046
2004040749.tif 000047
2004040749.tif 000048
2004040749.tif 000049
2004040749.tif 000050