(57)【特許請求の範囲】
【請求項１】
情報記憶装置にそれぞれ接続された複数の並列プロセッサを有する並列処理コンピュータを含み、利用者のコマンドに応答して複数の利用者にデータを供給するマルチユーザデータ配布システムにおいて、前記複数の利用者をこのマルチユーザデータ配布システムに動的に割当てする方法であって、
前記複数の利用者のうちの各利用者を、前記複数の並列プロセッサのうちの少なくとも１個のプロセッサに割り当てて、この割当てプロセッサが、複数のスロットからなるサービス期間中のスロットを代表するようにするステップと、
利用者の各々について、利用者のコマンドに応答して、前記割当てプロセッサを用いることにより、この割当てプロセッサに対応付けられた情報記憶装置内のデータの指定された離散セグメントにアクセスするアクセスステップと、
前記利用者の各々に、対応する指定離散データセグメントを供給する供給ステップと、
前記利用者の各々を、利用者の各々によって選択された現在の操作モードに応じて、後続のサービス期間内の異なるスロットを代表する異なるプロセッサに前記利用者の各々を再割当てする再割当てステップと、
前記アクセスステップ、供給ステップ及び再割当てステップを繰り返し、前記利用者についてのデータのアクセス済み離散セグメントからなる連続ストリームを生成するステップと、
を備えている方法。
【請求項２】
前記アクセスステップ、供給ステップ及び再割当てステップは、各利用者にデータが供給される複数の連続サービス期間（sequential service period）を定めている請求項１記載の方法。
【請求項３】
前記再割当てステップは、後続のサービス期間における実装（implementation）のために、前記利用者の各々について選択された操作モードに基づいて、前記利用者の各々を再割当てするステップを含む請求項２記載の方法。
【請求項４】
アクセスされるべきデータセグメントに関する情報記憶装置アドレスロケーション及び利用者操作モードを含む広域割当てテーブルを、任意の前記利用者によって選択された操作モードの任意の変化に応じて更新するステップと、
現在のサービス期間中に使用される操作モードを、前記広域割当てテーブル中の操作モードと比較するステップと、
前記比較ステップの結果に基づいて前記利用者の各々に優先順位付けを行うステップと、
前記利用者の前記優先順位付けに基づいて前記利用者をプロセッサに再割当てするステップと、
を更に備えている請求項２記載の方法。
【請求項５】
前記優先順位付けは、各利用者によって選択された前記操作モードに応じて、各利用者に提供されるべきデータの前記離散セグメントに関する時間及びディスク重要度（time and disk criticality）を求めることにより実行される請求項４記載の方法。
【請求項６】
前記利用者の各々は、複数のプロセッサ及び複数の情報記憶装置からなるサブセットに割当て及び再割当てされて、前記複数の情報記憶装置からなる前記サブセットからデータがアクセスされるようになっており、複数の情報記憶装置からなる前記サブセット内の各情報記憶装置からアクセスされたデータが、データ要素を形成するように連結される請求項２記載の方法。
【請求項７】
情報記憶装置にそれぞれ接続された複数の並列プロセッサを有する並列処理コンピュータを含み、利用者のコマンドに応答して複数の利用者にデータを供給するマルチユーザデータ配布システムにおいて前記マルチユーザデータ配布システム内にデータをストライプする方法であって、
複数の離散セグメントに細分されたデータの連続ストリームを提供するステップと、
前記複数の情報記憶装置を、複数の情報記憶装置からなる複数のサブセットに分割するステップと、
情報記憶装置からなる前記サブセットの各々について前記データストリームの離散セグメントの連続番号（sequential number）を選択する離散セグメント選択ステップと、
前記選択番号の離散データセグメントを、情報記憶装置からなる前記サブセットの各々に記憶する記憶ステップと、
前記離散セグメントが、情報記憶装置からなる各サブセット内において所定のサイズを有する連続データの複数のブロックを形成するまで、前記データブロックの各々を含む前記離散セグメントがストライプパターンを有するように、前記離散セグメント選択ステップ及び前記記憶ステップを繰り返すステップと、
を備える方法。
【請求項８】
前記記憶ステップは、前記選択番号の離散データセグメントを情報記憶装置からなる前記サブセットの各々に同時に記憶するステップを更に備えている請求項７記載の方法。
【請求項９】
前記データの連続ストリームがデジタル化されたビデオプログラムである請求項７記載の方法。
【請求項１０】
複数の情報記憶装置からなる各サブセット内に記憶された前記連続データの複数のブロックは、前記データブロックが情報記憶装置からなる前記複数のサブセット内に連続データの連続ブロックからなるストライプパターンを形成するように順次に記憶される請求項７記載の方法。
【請求項１１】
前記情報記憶装置の各サブセットが５つの情報記憶装置を含み、各情報記憶装置がデータの１６，０００連続ワードを記憶し、データの８０，０００連続ワードを含む連続データの所定サイズのブロックを生成する請求項７記載の方法。
【請求項１２】
複数の利用者の中の各利用者を前記複数の並列プロセッサ中の少なくとも１個のプロセッサに割り当てて、この割当てプロセッサが、複数のスロットからなるサービス期間中の１個のスロットを代表するようにするステップと、
利用者の各々について、利用者のコマンドに応答して、前記割当てプロセッサを用いることにより、この割当てプロセッサに付随する情報記憶装置内のデータの指定された離散セグメントにアクセスするアクセスステップと、
前記利用者の各々に、対応する指定離散データセグメントを供給する供給ステップと、
利用者の各々によって選択された現在の操作モードに応じて、後続のサービス期間内の異なるスロットを代表する異なるプロセッサに前記利用者の各々を再割当てする再割当てステップと、
前記アクセスステップ、供給ステップ及び再割当てステップを繰り返し、前記利用者についてのデータのアクセス済み離散セグメントからなる連続ストリームを生成するステップと、
を更に備えている請求項７の方法。
【請求項１３】
前記アクセスステップ、供給ステップ及び再割当てステップは、各利用者にデータが供給される複数の連続サービス期間（sequential service period）を定めている請求項１２記載の方法。
【請求項１４】
前記再割当てステップは、後続のサービス期間における実装（implementation）のために、前記利用者の各々について選択された操作モードに基づいて、前記利用者の各々を再割当てするステップを含む請求項１２記載の方法。
【請求項１５】
アクセスされるべきデータセグメントに関する情報記憶装置アドレスロケーション及び利用者操作モードを含む広域割当てテーブルを、任意の前記利用者によって選択された操作モードの任意の変化に応じて更新するステップと、
現在のサービス期間中に使用される操作モードを、前記広域割当てテーブル中の操作モードと比較するステップと、
前記比較ステップの結果に基づいて前記利用者の各々に優先順位付けを行うステップと、
前記利用者の前記優先順位付けに基づいて前記利用者をプロセッサに再割当てするステップと、
を更に備えている請求項１４記載の方法。
【請求項１６】
前記優先順位付けは、各利用者によって選択された前記操作モードに応じて、各利用者に提供されるべきデータの前記離散セグメントに関する時間及びディスク重要度（time and disk criticality）を求めることにより実行される請求項１５記載の方法。
【請求項１７】
前記利用者の各々は、複数のプロセッサ及び複数の情報記憶装置からなるサブセットに割当て及び再割当てされて、前記複数の情報記憶装置からなる前記サブセットからデータがアクセスされるようになっており、複数の情報記憶装置からなる前記サブセット内の各情報記憶装置からアクセスされたデータが、データ要素を形成するように連結される請求項１２記載の方法。
【請求項１８】
各々のサブセット内の前記情報記憶装置に繰り返してアクセスし、利用者の各々のために前記データブロックセグメントを表示している一連のデータ要素を生じ、
利用者の各々に一連のデータ要素を供給するステップを更に含む請求項６又は１７いずれか１項記載の方法。
【請求項１９】
前記供給ステップが、
メモリ内に各々の利用者のために前記一連のデータ要素を記憶し、
メモリから前記一連のデータ要素をリコールし、
データ要素がリコールされるように、所定の順序に一連のデータ要素を再順序付けするステップを更に含む請求項１８記載の方法。
【請求項２０】
所定の順序を有している一連のデータ要素を多重送信し、
利用者に多重化されたデータを伝えるステップを更に含んでいる請求項１９記載の方法。
【請求項２１】
前記アクセスステップが、
情報記憶装置のサブセットの各々からアクセスされるデータ要素内の誤差を検出するステップと、
検出された誤りを修正する修正ステップと、
を更に含む請求項２又は１３いずれか１項記載の方法。
【請求項２２】
前記データ要素の各々がパリティー情報を含み、前記修正ステップは、検出された誤りを修正するためにパリティー情報を使うステップを更に含む請求項２１記載の方法。
【請求項２３】
パリティー情報が情報記憶装置のサブセットの各々を形成する情報記憶装置のうちの１つに記憶され、前記パリティー情報は、情報記憶装置のサブセットの各々内の、他の情報記憶装置に含まれるデータ情報から派生する請求項２２記載の方法。
【請求項２４】
再校正のための情報記憶装置の１つのサブセットを選択し、
残っているプロセッサーがそれらの関連情報記憶装置内のデータ要素にアクセスする間情報記憶装置の前記選択されたサブセットを再調整するステップを更に含んでいる請求項６又は１７いずれか１項記載の方法。
【請求項２５】
データの連続的離散的なセグメントの新しいストリームを提供し、
サービス期間中、前記情報記憶装置内のデータの連続的離散的なセグメントの前記新しい流れを記憶し、サービス期間中、前記プロセッサは利用者にデータセグメントを供給するステップを更に含んでいる請求項６又は１７いずれか１項記載の方法。
【発明の詳細な説明】
本発明は、電子データを記憶及びアクセスするシステムに関し、特に、複数のシステム利用者が以前に記憶された電子データのストリームに独立にアクセスすることを可能にするデータ記憶、検索及び配布システムに関する。
従来の電子データ記憶及び検索システムでは、中央演算処理装置（ＣＰＵ）により制御された複数の記憶素子からなるバンク又はアレイにデータが記憶されるのが普通である。このようなデータ記憶システムは、最近のコンピュータシステムの基礎を形成している。通常、これらの記憶素子は、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）やスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）等の半導体メモリと“ウインチェスター”ハードディスクドライブ等の回転ディスク磁気メモリ（ディスクドライブメモリ）との組合せである。半導体メモリは、ＣＰＵによる直接のアクセスを必要とするデータを記憶するために使用され、一方、ディスクドライブメモリは、通常、ＣＰＵによるアクセスの頻度が比較的少ないデータを記憶するために使用される。
通常、半導体メモリを使用して所定量のデータを記憶するのにかかる費用は、ディスクドライブメモリを使用して同じ量のデータを記憶する場合に比べて、一桁から二桁も大きい。しかし、半導体メモリが与えるデータ待ち時間、即ちＣＰＵによってメモリからデータが要求された時点からこの要求データをＣＰＵが実際に利用可能となる時点までの遅延時間は、ディスクドライブメモリについてのデータ待ち時間よりも三桁から四桁小さい。このため、データ待ち時間が重要となる用途では、半導体メモリに費用をかける方が価値がある。
更に、ディスクドライブメモリは、通常、データが“ブロック−シリアル”形式でアクセスされることを要求する。このため、ドライブに記憶された任意のデータビットへのランダムアクセスは、通常、不可能である。また、機械装置であることから、ディスクドライブメモリは機械的な欠陥によって被害を被り、このため、半導体メモリよりも信頼性が低い。
複数の利用者がシステム内に記憶されたデータに同時にアクセスする計算機システムやデータ検索システムでは、各利用者のデータ要求を順次処理するために様々な手段が用いられている。上記のシステムは、一般に、これらの利用者の各々が独立してデータにアクセスした場合をシミュレートする。通常、このようなシミュレーションは、プリエンプティブな、或いはラウンド・ロビン・マルチタスキング（round robin multitasking）のアルゴリズムによって実現される。システムＣＰＵは、計算機システムやデータ検索システムのオペレーティング・システムに通常組み込まれているこれらのアルゴリズムを実行する。このため、このＣＰＵは、このシステムのデータ記憶メモリの制御を各利用者に“ラウンドロビン（round-robin）”法で順次転送する。
ディスク記憶システムの見かけ上のスループットを高めるため、多くの計算機システムは、単一のディスクとして動作するように相互接続された複数のディスクドライブを用いている。１ブロックのデータが、Ｎ個のディスクに分配され、各ディスクがこのブロックの１／Ｎを同様のロケーションに記憶するようになっている。これらのディスクは、並列にアドレスされており、最初の待ち時間（latency）の後、各ディスクからのデータが同時に読み出され、ブロックを読み出すのに要する時間が削減されるようになっている。このスループットの増加によって、この記憶システムは、マルチタスキング・アルゴリズムが使用されているときに、更に多数の利用者にサービスを提供できるようになる。しかしながら、マルチユーザ処理は、実効の待ち時間を増加させる。Ｍ人の利用者にサービスを提供する場合、異なるデータストリームからのデータに対する一人の利用者の要求は、Ｍ−１人の利用者の処理が終わるまで待機させなければならない。平均すると、待ち時間は（Ｍ／２）倍に増加することになる。
所定の実効待ち時間での利用者の数を増やすために、記憶システムが、並列処理アーキテクチャで配置された複数のＣＰＵを使用する場合がある。このようなデータ記憶システムでは、単一の命令が各プロセッサによって使用されて、各プロセッサごとに異なるデータストリームが処理されるので、通常、マルチデータ・コンピュータ・アーキテクチャ（multiple data computer architecture）が使用される。マルチデータ・アーキテクチャでは、各ＣＰＵが、ディスクドライブメモリに取り付けられる。このため、各ＣＰＵは、ホストコンピュータから命令を受けると、それぞれに付随するディスクドライブメモリにアクセスする。結果として、これらのプロセッサは、全てのディスクドライブに並列して同時にアクセスすることができ、スループットの向上が達成される。このため、各利用者は、所定のＣＰＵを介してディスクドライブから１ブロックのデータを受け取る。
システムから利用者へデータが確実に連続して転送されるように、比較的大きな容量の半導体メモリを利用して、複数のＣＰＵからの並列出力データストリームをバッファしている。このようなデータバッファリングは、データが、鑑賞のため利用者へ転送する間に割込みがなされることのないビデオデータやオーディオデータであるときに特に必要である。このようなシステムでは、ビデオデータ及びオーディオデータは、ディスクドライブからバッファメモリへ別個の複数のデータブロックとして転送される。これらのブロックは、バッファメモリが読み出されるにつれてこれらのブロックが各利用者に対する連続データストリームを形成するように、バッファメモリ中に順次に配置される。
しかし、このような情報記憶システムでは、バッファメモリが極めて大きくならざるを得ず、このため、大変な費用がかかってしまう。例えば、Ｍ人の利用者を有するラウンドロビンタイプのアクセスシステムでは、他のＭ−１人の利用者が並列処理コンピュータによってサービスを受ける間、バッファメモリは、与えられた利用者データを一時的に記憶しなければならない。１０００人の利用者について１０〜１００kbyteのデータブロックが１００〜１０００個のディスクドライブから読み出される通常のビデオ記憶システムでは、バッファメモリは、１〜１００Gbyteでなければならない。このような大容量の半導体メモリアレイは、極めて費用がかかる。
ディスクドライブを記憶媒体として用いることに関連した別の短所は、ディスクドライブが、連続的な割込みのない読出し又は書込み処理を行うことができないという事実である。ドライブが内部ハウスキーピング処理又は内部保守処理を実行しているときは、通常、データへのアクセスを要求する外部コマンドは無視されるか、或いは遅延される。最も長い遅延は、ドライブのヘッド位置のリキャリブレーション（recalibration）によって引き起こされる。このようなリキャリブレーションは、ドライブ内のディスクの熱膨張差に起因して生じるミストラッキングエラーを訂正するため定期的に行われる。一般に、安価なディスクドライブは、リキャリブレーション処理を完了するのに０．１〜１．０秒を要する。再リキャリブレーション処理は、通常、動作の１０〜１００分ごとに実行される。
出力データストリームの割込みを防ぐため、データ配布システム（data distribution system（ＤＤＳ））は、各ディスクドライブのリキャリブレーション・サイクルの間、追加のバッファメモリを供給し、出力として用いられるデータを記憶する。各利用者について１〜１０Mbits/secでデータが利用者に転送される通常のシステムでは、バッファメモリは、０．１〜１０Mbitsの容量を有していなければならない。１０００人の利用者を有するシステムでは、１０Gbits、即ち１．２５Gbytesの半導体メモリが必要である。
従って、マルチユーザＤＤＳに関する技術では、バッファメモリの必要容量を大幅に低減し、かつ、データアクセス待ち時間を各利用者が気にならない程度に抑える必要がある。
本発明は、進歩的なマルチユーザＤＤＳを利用する。このマルチユーザＤＤＳは、磁気ディスクドライブ、光学ディスクドライブ、ランダム・アクセス・メモリ等の情報記憶装置にそれぞれが接続された複数の並列プロセッサを有する並列処理コンピュータであるディジタル情報サーバを含んでいる。このシステムは、複数のディスクドライブに情報を記憶するという、これまで知られていなかったデータストライピング法を用いる。このデータストライピング法は、複数のディスクドライブを、ディスクドライブの複数のサブセットに等分割する。例えば、サーバが５００個のディスクドライブを含み、サブセットが５個のドライブである場合、ドライブのサブセットが１００個あることになる。第１のサブセットが選択され、データの連続ブロックが繰り返しストライプされてディスクドライブの当該サブセットに記憶される。この後、第１のサブセットに隣接する第２のサブセットが選択され、データの別の連続ブロックが繰り返しストライプされてその上に記憶される。このプロセスが各サブセットについて繰り返される。全てのサブセットを使用してデータを記憶すると、この方法は、第１サブセットに戻り、データの次の連続ブロックをその上に記憶する。この方法を用いることで、複数の利用者による後続のアクセスに対して、多数のデータソースをディスクドライブに記憶することができる。全てのプロセッサを有効に利用するため、入力データは、複数の連続データブロックの各々をディスクドライブのサブセットに同時に記憶できるような特定の順序で事前に配列されている。
本発明の他の特徴は、上述の手法で記憶されたデータを利用して従来技術のＤＤＳに関する待ち時間を改善し、データバッファの必要サイズを低減するデータ検索方法である。この方法は、利用者が割り当てられる複数のスロットを含んだサービス期間を定めている。所定のスロット内では、割当て利用者がディスクドライブのサブセットの一つにアクセスすることで、利用者にデータが供給される。本発明のデータアクセス方法を用いることで、利用者はサービス期間内のスロットに動的割当てされ、各利用者がサービスを受ける特定の時間及び利用者にサービスを提供するサブセットがサービス期間ごとに変化するようになっている。しかし、全利用者はそれぞれ、各サービス期間中、常にサービスを受ける。サービス期間内の利用者の割当ては、利用者の現在の操作モード及び次の操作モード（このモードは、次のサービス期間中に使用される）によって定められる。更に、この方法によれば、ディスクドライブから検索されたデータに関するエラーの検出及び訂正が行われる。更にまた、この方法によれば、各サービス期間中に新たなデータをディスクドライブに加えることが可能になり、また、システムの処理に影響を与えることなく選択番号のディスクドライブをリキャリブレートすることが可能になる。
利用者の動的割当てに起因して、データは、各サービス期間中に利用者に割り当てられる順序でサーバによって正常に生成される。このため、データ出力の順序は、サービス期間ごとに変動することになる。この結果、このＤＤＳに接続される任意のデータ送達システム（data delivery system）は、このＤＤＳが生成したデータの現在の順序を判別し、このデータを正しい利用者へ適切にルーティングしなければならない。データ送達システムからこの負担を取り除くため、このＤＤＳは、利用者がサービス期間内にどのように割り当て直されようとも、サーバからのデータの順序を各サービス期間ごとに繰り返される順序に設定し直す出力タイミングシーケンサを備えている。
図面において、
図１は、マルチユーザデータ配布及び送達システムの高レベルブロック図を表している。
図２は、マルチユーザＤＤＳの高レベルブロック図を示している。
図３は、図２に示されるＤＤＳの一部分の詳細なブロック図を表している。
図４は、図２のＤＤＳのディスクドライブアレイにデータを記憶する好適な手順を示すデータアクセスマップである。
図５は、図４に示される記憶域マップを用いてディスクドライブアレイに記憶されたデータを検索する好適な手順を示すデータアクセスマップである。
図６は、図２に示されるＤＤＳにより実行されるデータ検索ルーチン（DATA RETRIEVAL routine）のフローチャートを表している。
図７は、図２に示されるＤＤＳにより実行される利用者サービスルーチン（USER SERVICE routine）のフローチャートを表している。
図８は、図２に示されるＤＤＳにより実行される利用者再割当てルーチン（USER REALLOCATION routine）のフローチャートを表している。
図９は、図２に示されるＤＤＳにより実行される優先順位１再割当てルーチン（PRIORITY 1 REALLOCATION routine）のフローチャートを表している。
図１０は、図２に示されるＤＤＳにより実行される優先順位２、３及び４再割当てルーチン（PRIORITY 2, 3 AND 4 REALLOCATION routine）のフローチャートを表している。
図１１は、出力タイミングシーケンサのブロック図を表している。
理解の容易のため、図に共通する同一の要素を表すのに、可能な限り同一の参照番号を使用した。
図１は、マルチユーザデータ配布及び送達システム１００の高レベルブロック図を表している。このシステム全体には、別個のシステム要素が２個含まれている。データ記憶、検索及び配布システム１０６を有する配布センター１０２と、“ハブ・アンド・スポーク（hub and spoke）”ネットワーク構成を有するデータ送達システム１０４である。一般に、送達システム１０４は複数の利用者１０８を含んでおり、これらの利用者１０８は、一般的なデータ分配ハブを形成するネットワーク・インターフェイス・ユニット１１０に連結されている。送達システム・インターフェイス・ユニット（図示せず）を使用して、この配布システムからのデータをこの送達システムと互換性のある形式でフォーマットすることもできる。ＤＤＳ（或いは、送達システム・インターフェイス・ユニット）からネットワーク・インターフェイス・ユニットへのデータリンクは、通常、標準Ｔ１リンク等の高速のデータ多重化リンク（data multiplexed link）である。これらのリンクからのデータをハブが分離化（demultiplex）すると、ＤＤＳ１０６から事前に要求されていたシリアルデータストリームが利用者に送られる。更に、利用者１０８は、コマンドリンクを介して、データの流れや各々が受け取るデータのタイプを制御する。配布センター内のＤＤＳは、複数の利用者から受け取ったコマンド（指令）を処理する。このＤＤＳは、コマンドを解釈し、実行する。データ送達システムは、地域電話システムや市内ケーブル会社や他のサービスプロバイダ組織が構築し、操作することができる。この他に、このデータ送達システムは、イーサネット型のローカル・エリア・ネットワークやケーブルテレビジョン分配フィーダにおけるようなバス構成を形成することもできる。利用者が配布センターに近い場合は、データ送達システムを設置する代わりに、データ記憶、検索及び配布システムへの直接接続を行うこともできる。このデータ送達システムは本発明の一部をなすわけではないので、本発明の使用法を読者に説明することだけを目的として一般的に説明するに止めておく。
本発明のＤＤＳ１０６は、互換性のあるデータ形式でデータを送達システム１０４に送り、適切な利用者へのデータの配布を容易にすることだけをここでは述べておく。本発明のＤＤＳ１０６の使用の一例は、有料テレビ放送システム（video-on-demand（ＶＯＤ）system）内での使用である。本発明のＤＤＳは、最も広義には、任意のタイプのディジタルデータ、例えば、オーディオ情報、ビデオ情報、テキスト情報、グラフィクスといったものを分配することができるが、本発明の説明を簡単にするため、以下の説明では、多数の利用者を有するＶＯＤシステム内での本発明の使用に焦点を絞る。
ＶＯＤシステムでは、利用者がインターフェイス・ユニットを有している。このインターフェイス・ユニットは、各利用者が映画や他のマルチメディアプログラムのようなビデオプログラムを選択できるようにし、ビデオテーププレーヤーのようなコントロール機能を用いてこれらのプログラムの再生を制御する。具体的に述べると、利用者は、いつでもプログラムを再生（play）、一時停止（pause）、停止（stop）、早送り（fast-forward）、高速早送り（fast-fast-forward）、巻戻し（reverse）、及び高速巻戻し（fast-reverse）することができる。ＤＤＳは、各利用者のコマンドを高速で処理し、実行する。重要なことであるが、このシステムの全ての利用者は、任意の数のプログラムについて同じ制御特徴を同時に利用することができる。このため、各利用者は、自身の受像器上装置（set top unit）を、ビデオプログラムの巨大なデータベースにアクセスすることが可能なビデオテーププレーヤーとして見ることになる。
ＤＤＳ１０６には、ある装置と、利用者のコマンドを目立たない程度の遅延で実行する付随的な方法と、が含まれている。通常、ひとたびコマンドが実行されると、要求されたデータは、配布センターによって複数の利用者ネットワークの一つに多重化された形式で転送される。データ送達システム内のネットワーク・インターフェイス・ユニットは、このデータストリームを分離化し、データを適切な利用者へ送る。このデータは、ディジタル形式で送ることもできるし、一部のケースでは、利用者による使用のためにアナログ信号に変換することもできる。このスポーク・アンド・ハブ・データ送達システムは、ネットワーク構成の１タイプを例示したものに過ぎない。利用可能な多数のデータ送達システムの中のどのシステムでも、データ多重化されたデータをＤＤＳから利用者へ転送する機能を果たすことは、当業者であれば理解できるであろう。
図２では、図１に示されるマルチユーザＤＤＳ１０６のブロック図が、大容量記憶装置２０２、ホストコンピュータ２０４、コマンド・インターフェイス２０６、ディジタル情報サーバ２０８、及びデータ多重化回路２１０を含んでいる。一般に、ライン２１２を介して、多重化されたシリアル情報が複数の利用者（図示せず）に送られる。各ラインは、利用者ネットワークを介して複数の利用者に接続された多重化チャネルを表している。
利用者は、コマンドリンクを介してＤＤＳ１０６の操作を制御する。このコマンドリンクは、ライン２１２内に組み込まれていると想定されている。コマンドリンクの具体的な実装（implementation）は、通常、データ送達システムによって定められる。コマンドリンクからの各コマンドは、インターフェイス２０６によって解釈される。インターフェイス２０６は、データ送達システムからの命令を、ホストコンピュータが理解することのできるコマンド形式にフォーマットし直す。コマンドリンクを用いることで、利用者は、ビデオプログラム、例えばマルチメディアプログラム、を選択し、その後、そのビデオプログラムを再生、停止、一時停止、巻戻し及び早送りすることができるようになる。言い換えると、このＶＯＤシステムは、一般的なビデオカセットプレーヤーについて利用可能な機能と同様の機能を各利用者に提供する。
操作中、利用者が情報、例えば選択したマルチメディアプログラム、を要求したときは、ホストコンピュータは、記憶装置２０２（例えば、ビデオテープライブラリ）からその情報を検索し、検索した情報をサーバ２０８へ配布する。このサーバは、その情報を記憶するローカルメモリ（ディスクドライブアレイ）を備えている。利用者が要求した情報がサーバ内に現在記憶されている場合は、大容量記憶装置２０２にアクセスする必要はない。
更に詳しく述べると、サーバ２０８は、複数データストリーム（ＳＩＭＤ）方式を有する並列処理コンピュータである。具体的には、サーバ２０８は、複数のコントローラ２１６nを備えており、各コントローラには、複数のプロセッサ・サブシステム２１８n、２２０n、及び２２２nが付随している。各プロセッサ・サブシステムは、対応する大容量記憶装置、例えばウインチェスター型のディスクドライブ２２４n、２２６n及び２２８nに接続されている。但し、磁気ディスクドライブの代わりに他の形態の大容量記憶装置、例えば、光学ディスクドライブやランダム・アクセス・メモリも使用することができる。
記憶装置２０２は、複数の磁気又は光学ディスクドライブ、又は半導体メモリ、或いはこれらの組合せから構成されていても良い。しかしながら、通常、この装置は、１個以上の磁気ディスクドライブである。装置２０２からのデータは、データフォーマッティング回路２０３及び入出力（Ｉ／Ｏ）回路２１４を介して、サーバ２０８内のディスクドライブに配布される。回路２０３は、二つの機能を実行する。第１の機能は、装置２０２から入ってくるデータをバッファして、この入りデータの種々のセグメントを順序付けし直し、ディスクドライブに同時に記憶することができるようにしている。この第１の機能は、図４を参照しながら詳細に説明する。回路２０３が果たす第２の機能は、ディジタル化された入力データ、例えば“オフ・エア（off the air）”や生放送、をフォーマットし直してからバッファして、これらの放送をサーバ２０８内に記憶できるようにすることである。このため、一度記憶されれば、このデータは、将来、いつでも利用者が見ることができるようになる。
Ｉ／Ｏ回路は、プロセッサ・サブシステムからの並列出力データをまとめて、６４ビット幅のシリアルビットストリーム（以下で詳細に説明する）にする。本開示内容では、このシステムは例示として６４ビット幅シリアルビットストリームを処理するが、他の任意の幅のビットストリーム、例えば１２８ビット幅シリアルビットストリーム、も本発明の範囲に含まれる。また、このＩ／Ｏ回路は、プロセッサへの利用者の動的割当てやデータエラー検出・訂正を容易にするプロセッサ間連絡回路を含んでいる。このＩ／Ｏ回路の詳細は、図３及び図１１を参照しながら後述する。
最後に、Ｉ／Ｏ回路２１４からの６４ビット幅シリアル出力データストリームは、回路２１０に転送される。回路２１０は、この後、このシリアルデータを多重化法で再フォーマットし、多数の利用者、例えば３０００人の利用者を多重化回路（multiplexing circuit）の種々のポート２１２に接続できるようにしている。言い換えると、多重化回路は、シリアル出力データストリームを再構成して、複数の多重チャネル（各チャネルは１個のポートによって表される）にする。所定のチャネルに対応付けられた各利用者には、特定のスロットが割り当てられ、その利用者のデータは、データ送達システムを通じてこのスロット内で転送される。
例を挙げると、本発明のＤＤＳを実際に実装する際には、１２８個のプロセッサ・サブシステム、例えばプロセッサ・サブシステム１１８1〜１１８128が存在することになり、これらは各コントローラ、例えばコントローラ１１６1に接続されている。物理的には、コントローラ及びその１２８個のプロセッサ・サブシステムは、単一の回路カード上に載っている。各カードは、３２個のプロセッサ・サブシステム集積回路を含んでおり、これらのプロセッサ・サブシステム集積回路は、それぞれ４個のプロセッサを含んでいる。サーバは、総計４個の回路カードを含んでおり、従って、総計５１２個のプロセッサがサーバ内に含まれている。４個のプロセッサの各々は、種々のプロセッサ補助回路、例えばメモリ、命令ロジック、Ｉ／Ｏ回路などを伴っており、各集積回路上に４個のプロセッサ・サブシステムを作り出している。この回路カードは、コンピュータ２０４を介して相互に接続されている。コンピュータ２０４は、一般に、プロセッサ・サブシステム及び利用者間のインターフェイスとして働く。更に述べると、ホストコンピュータは、サーバ２０８内の種々のコントローラ及びプロセッサ・サブシステムの操作を監視及び制御するメインコントローラとして機能する。使用されるプロセッサの数が用途によって異なること、及び並列処理コンピュータ内のプロセッサの数をそのコンピュータについての特定用途を満たすように容易に増減できることは、当業者であれば理解できるであろう。従って、ここで開示する発明は、任意の方法で配置された任意の数のプロセッサを有するサーバ内で使用できることが分かる。
更に具体的に述べると、図３は、図２に示されるサーバ２０８の一部分の詳細なブロック図である。図３は、プロセッサ・サブシステム２１８2及びＩ／Ｏ回路２１４の一部分、並びにディスクドライブ２２４2及びコントローラ２１６1の詳細を表している。上述のように、各プロセッサ・サブシステムは、プロセッサ３００、並びにローカルメモリ３０２及び種々の周知のプロセッサ補助回路３０４を含んでいる。また、各プロセッサ・サブシステムには、Ｉ／Ｏ回路２１４が付随している。命令バス３０８で搬送された命令に従って、プロセッサは、内部レジスタ３０６又は他のランダムアクセス半導体メモリ３０２に記憶されたデータに対する演算論理処理を実行する。
更に具体的に述べると、プロセッサ３００には、入力バス３１０を介して入力データが供給される。このデータは、プロセッサによって使用されるまで、入力レジスタ３１２に一時的に記憶される。この入力レジスタは、一般的なシフトレジスタとして動作し、これにより、各クロック周期においてシステムが１個のプロセッサ・サブシステムから次のプロセッサ・サブシステムに１ワードのデータ（１６ビット）を順次転送するようになっている。各プロセッサ・サブシステムについて適切な入力データがひとたび入力レジスタにクロック同期して送られると、このデータは、全プロセッサの内部レジスタ３０６に同時にロードされる。このプロセッサ・ローディング機能は、コントローラ２１６1からバス３０８に沿って送られる特定のプロセッサ命令によって発揮される。
Ｉ／Ｏ回路は、１個以上の出力レジスタ３１４、入力レジスタ３１２、プロセッサ間連絡（ＩＰＣ）バス３１８の一部、、及びディスクドライブ・インターフェイス３０１も含んでいる。レジスタ３１４は、プロセッサの出力ポートに接続された１６ビット幅レジスタであり、例えば、各レジスタは、１６ビットのパラレルデータを受け取り、１６ビットのパラレルデータを出力する。この出力レジスタは、図１１を参照しながら完全に説明される出力タイミング・シーケンサ（ＯＴＳ）の一部を形成している。このＯＴＳは、各プロセッサの１６ビット出力データを他の４個のプロセッサの出力データと合成して６４ビット幅のデータ要素を生成する、とだけここでは述べておく。ＯＴＳを使用する理由は、このシステムの残りの部分が説明されるにつれて明らかになる。
各プロセッサは、プロセッサ間連絡（ＩＰＣ）バス３１８を介して近接のプロセッサと連絡を取ることができる。このＩＰＣバス３１８は、データ及び他の情報を一方のプロセッサから他方のプロセッサに転送できるようにする回路装置である。このＩＰＣは双方向であり、情報がこのバスに沿って双方の方向に通過できるようになっている。ＩＰＣバスを特定することは本発明にとって重要ではなく、プロセッサが情報を共有することを可能にするバスであれば、いかなるバスであっても適切である。このようなＩＰＣバスの一つは、“Advanced Massively-Parallel Computer Apparatus”という名称の米国特許出願（出願番号08/091,935、出願日1993年7月12日）に開示されている。これは、出願番号07/926,735、出願日1992年8月5日の出願の一部継続出願である。
ディスクドライブ・インターフェイス３０１は、ディスクドライブ・サブシステム２２４2をＩ／Ｏ回路２１４に接続する。このため、ディスクドライブ・インターフェイス３０１は、ディスクからプロセッサへ、或いはプロセッサからディスクへ向かう情報のシリアル−パラレル変換を行う。
各プロセッサ・サブシステム２１８2は、ディスクコントローラ３２０及びディスクドライブ装置３２２を含むディスクドライブ・サブシステム２２４2に（Ｉ／Ｏチップ及びディスクドライブ・インターフェイスを介して）間接的に接続されている。ディスクコントローラ３２０は、プロセッサ３００からの指令を実行して、ディスクドライブ装置３２２からデータをプロセッサに転送する。プロセッサ及びディスクドライブは物理的に相互に隔てることができるので、ディスクコントローラの各々とこれらに対応したプロセッサとの間の電気接続は、通常、ビットシリアルの双方向データバスによって実現される。
各プロセッサは、コントローラ２１６1内の命令シーケンサ３２４から同一の命令を受け取る。この命令シーケンサは、プロセッサの各々によって実行されるべきプログラムを形成する一連の命令を記憶する。この一連の命令は、ホストコンピュータによってシーケンサにプリロードされている。プログラムがロードされ、実行される特定のプロセスは、この技術では周知であり、これ以上の説明を要しない。
処理中は、情報が大容量記憶装置からシリアル・ワード・ストリームとして検索されると、ホストコンピュータは、コントローラに命令を出し、この技術では“データ・ストライピング”として一般に知られる方法でその情報をディスクドライブ・サブシステムに記憶する。具体的には、この情報は、複数のディスクドライブに、一度に１６ビットワードずつ、ストライプパターン（縞模様）をなすように記憶される。例えば、図４の記憶域マップ４０２に示されるように、ワードストリーム４００は、アクセス待ち時間が少なくなるように、５０５個のディスクドライブにわたってデータストライプされる。以下で行う好適なデータストライピング技術の説明に関しては、１２８個の並列プロセッサが４セット（総計５１２個のうちの５０５個は、ビデオデータの記憶のために使用される）あり、これらは５１２個のディスクドライブに付随しているものと仮定されている。これらのディスクドライブは、１から５１２まで連続して番号が付けられている。データを記憶するため、この５０５個のディスクドライブは、ディスクドライブのサブセット、例えば１サブセットあたり５個のディスクドライブに等分割される。ビデオプログラムの一部は、各サブセット内に、ストライプパターンをなすように記憶される。このため、ディスクドライブ１は、入力データ４００の最初のワード（ワード１）を記憶し、ドライブ２はワード２を記憶し、ドライブ３はワード３を記憶し、ドライブ４はワード４を記憶し、ドライブ５はワード５を記憶する。この後、ワード６はドライブ１に記憶され、ワード７はドライブ２に記憶されるというようになり、ドライブ５がこの情報のワード８０，０００を記憶するまでこれが繰り返される。即ち、ドライブ１からドライブ５までのデータストライピングが１６，０００回繰り返される。この後、ドライブ６が次のワード（ワード８０，００１）を記憶するというようになり、全情報がこれらのディスクドライブに記憶されるまでこれが繰り返される。ディスクドライブ５０１〜５０５が対応する８０，０００ワードのデータを記憶すると、システムは、ディスクドライブ１〜５に戻って（ライン４０２で示されるように転回して）、次の８０，０００ワードを記憶する。このプロセスは、ドライブの各サブセットにデータをストライピングし、これを全サブセットにわたって行いながら、全ビデオプログラムが記憶されるまで繰り返される。
前述のデータストライピングの説明は、簡単のため、一度につきディスクドライブの１個のサブセットにデータが記憶されたものと仮定した。しかしながら、並列処理コンピュータを効果的に利用するためには、入力データは、全プロセッサ及び全ディスクドライブ、例えば５０５個のプロセッサ及びディスクドライブ、を用いて同時に記憶される。この同時記憶を容易にするため、データフォーマッティング回路（図２の２０３）は、大容量記憶装置からの入力データをバッファし、１６ビットデータワードのシリアルストリームを入力レジスタへ向けて適切な順序で出力する。この特定の順序により、全ての入力レジスタに全てのワードを同時に記憶することが容易になる。例えば、データの順序は、ワード１〜５、ワード８０００１〜８０００５、ワード１６０００１〜１６０００５、…が、全てのディスクドライブ・サブセットに同時に記憶されるように設定し直される。言い換えると、このデータの順序は、図４に示されるデータマップの全ての行のデータワードが同時に記憶されるように再設定される。
同様に、別のビデオプログラムは、この第２のプログラムをディスクドライブ６〜１０に記憶し始めることにより、このデータストライピング法を用いて記憶することができる。その後、各プログラムの冒頭は、ディスクドライブの１個のサブセットによって以前に記憶されたプログラムの冒頭からオフセット（offset）される。このため、複数のビデオプログラムをこれらのディスクドライブに記憶することができる。ここまでディスクドライブのデータストライピングについて一つの好適な方法を説明してきたが、他のデータストライピング法を本発明に使用できることは当業者であれば理解できるであろう。従って、データストライピングの好適な上記方法は、本発明を限定するものとして解釈すべきでなく、データストライピングの例示的方法であると考えるべきである。
また、以下の説明では、エラー訂正を容易にするため、入力データストリームがパリティワードを含んでいるものと仮定する。例を挙げると、このパリティワードは、４個の先行するデータワードから導出される。例えば、パリティワードは、４個の先行するデータワード内におけるビットのビット単位排他的論理和（bit-by-bit exclusive-OR）である。従って、各５番目のワードはパリティワードであり、このため、各５番目のディスクドライブは、先行する４個のデータワードについてのパリティワードを含んでいる。この他に、パリティワードが入力データに含まれていない場合は、ディジタル情報サーバにデータが記憶されるに伴ってパリティワードを生成し、データストリームに挿入することができる。
要求された情報（ビデオプログラム）がディスクドライブ上に存在していれば、利用者は、その情報をディスクから利用者のネットワークに送るように要求することができる。例えば、コマンド装置（図示せず）を操作することにより、利用者からコマンド・インターフェイスにコマンドが送られる。このコマンド装置を用いることにより、利用者は、情報を選択し、情報の再生を行ったり、情報の再生を巻戻し、高速巻戻し、早送り、高速早送り、一時停止又は停止することができる。例えば、情報が選択マルチメディア・ストリームである場合、利用者は、テレビ画面上のメニューから特定のマルチメディア・ストリームを選択することができる。マルチメディア・ストリームを選択してしまえば、利用者は、そのマルチメディア・ストリームの再生を、一般的なビデオカセットプレーヤーを用いているかのようにコントロールする。最も単純な機能では、利用者が再生を選択すると、並列プロセッサによってマルチメディア・ストリームがディスクドライブから呼び出される。このデータは、Ｉ／Ｏ回路を介して多重化回路に転送される。図２を参照して既に説明したように、多重化回路は多重化法でデータをフォーマットし、多数の利用者がシステムに接続できるようにする。
ＤＤＳを利用することにより、複数の利用者が同一の情報又は異なる情報に同時にアクセスすることができる。更に、これらの利用者は、いつでも情報にアクセスし、その情報を様々な速度で、例えば希望に応じて一時停止、早送り、巻戻しをしながら閲覧することができる。従って、このＤＤＳは、わずかな遅延で各利用者が自宅に全データベースを所有しているかのようにアクセスできる中央データベース、例えばビデオデータベース、を形成する。
図５は、要求されたデータストリームをディスクドライブからプロセッサを介して最終的に利用者へ転送するために使用されるデータマップを表している。具体的には、機能、例えば再生、が要求されると、利用者にはサービス期間（service period）内の１個のスロットが割り当てられる。有限数、例えば３２００個のスロットが存在している。利用者が割り当てられる実際のスロットは、後述するように、動的割当てされ、最初は、利用可能な３２００個のスロットのうちのどの１個であっても良い。利用者が使用する機能に応じて、利用者は、後続のサービス期間中に異なるスロットに再度割り当てられる。しかしながら、後述するように、可能な３２００個のスロットのうちの幾つかは、特別な機能を果たすために予約されている。
一般に、各スロットは、データの検索ブロック内にある情報の連続“要素（element）”への反復アクセスを表す。これらの要素は、１バイト（８ビット）の情報を含んでいても良く、また、単一ビットの情報しか含んでいなくても良い。実際の要素サイズは、用途に依存する。ここでは、図４で例示したデータ記憶域マップと一致させて、各要素が１６ビットワードのビデオ情報を４個とパリティ情報の１６ビットワードを１個含んでいるものと仮定する。更に、可能な３０００人の利用者のうちの１００人に関する１００要素のビデオ情報に同時にアクセスする５０５個のディスクドライブ及びこれに付随するプロセッサ（あとの７個のプロセッサは、他のプロセッサ及びディスクドライブのいずれかが不良の場合に使用することのできるスペアである）が存在している。このため、１００個のスロットを定める各行のデータ及びパリティワードは、同時にサービスを受ける。各スロット内では、そこに割り当てられた利用者が繰り返し１６，０００回サービスを受け、これらのアクセスに付随する８０，０００ワードのデータがローカルメモリ（ＲＡＭ）に記憶される。従って、所定のサービス期間中、各プロセッサは、所定のスロットについて１６，０００ワードをそのローカルメモリ内に記憶する。即ち、３０人の利用者にサービスを提供する一つのサービス期間の後、４８０，０００ワードが各プロセッサのローカルメモリに記憶される。
一つのサービス期間内には、３０００人の利用者が５００個のプロセッサによってサービスの提供を受ける。５個のプロセッサ、即ち１サブセットのプロセッサは、各サービス期間中にサービス利用者によって使用されることはない。これらのプロセッサ（図５のサービス期間１におけるプロセッサ１６〜２０）は、対応するディスクドライブがリキャリブレートされている間は、利用者にデータを供給するために使用されることはない。リキャリブレーション（recalibration）は、最も安価なディスクドライブが定期的に、例えば動作の約１０分から１００分ごとに行う一般的な処理である。リキャリブレーションがランダムに生じてデータアクセスに有害な影響を与えないように、このシステムは、各ディスクドライブにキャリブレーションを、所定の時間、例えば所定のリキャリブレーション・スロット（RECAL slot）中に実行させる。ディスクドライブのサブセットのリキャリブレーションは、一つのサービス期間内に完了する。
サービス期間の終端における２行のスロットは、二つの特別な機能のために予約されている。第１の機能は、パリティワードを用いて訂正することのできないエラー、例えば単一のデータ要素内に生じた２個のエラー、を含む第２の時間要素にアクセスする。このため、エラーの生じた要素が最初にアクセスされるディスクドライブは、データを検索する試みの中で２度目にアクセスされる。データがエラーなく検索されると、そのデータは、ローカルメモリ内においてエラーの生じたデータのロケーションに記憶される。更に述べると、プロセッサに不良が生じた場合は、サーバが自身を再構成し、不良のプロセッサをスペアのプロセッサに交換する。ディスクドライブに不良が生じた場合、は、パリティワードを用いて訂正することにより、ドライブのデータを回復することができる。この後、ドライブを交換し、パリティ再構成データを用いて、もとのデータを新しいドライブに復元しても良い。
第２の機能は、第２の特別な行のスロットの間に作動し、より多くのデータをディスクドライブに置く。例えば、利用者がディスクドライブに現在記憶されていないマルチメディア・ストリームを選択する場合、選択されたマルチメディア・ストリームのデータを図４を参照しながら説明したものと同じ方法で記憶するためにこの行は用いられる。例えば、５個のディスクドライブにわたる８０，０００ワードのビデオプログラミングを記憶し、次いで、次の５個のディスクドライブにわたる次の８０，０００ワードを記憶する、というような処理をプログラム全体が記憶されるまで繰り返す。連続した番号のサービス期間内でこの記憶プロセスを繰り返すことにより、ビデオプログラムの全体が、利用者のデータ検索プロセスに影響を与えることなく、ディスクドライブに分配されて記憶される。
次に続くディスクドライブ・サブセット、例えばドライブ２１〜２５、をリキャリブレートするため、リキャリブレーション機能（RECAL）は、各サービス期間につき１スロット進む。従って、図５に示されるように、全ての利用者が再生モードにあるものと仮定すると、全ての利用者が、連続する各サービス期間で１スロット進むことになる。このため、利用者１の次の８０，０００ワードのデータがプロセッサ６〜１０及びディスクドライブ６〜１０によって提供され、利用者２の次の８０，０００ワードのデータがプロセッサ１１〜１５及びディスク１１〜１５によって提供される、などというようになる。エラー訂正及びデータ充填は、上述のようにして行われる。この結果、再生機能を用いると、所定の利用者が１個のプロセッサから次のプロセッサに順次に進められ、配布済みのデータをそのデータが記憶されたオーダ、即ち８０，０００ワード単位で検索する。
早送り等の他の機能に関しては、利用者は、データを順次検索せずに、所定数のスロットだけ前方へ飛ばされる。例えば、利用者２がサービス期間１内のデータをスロット２の間に検索し、それから早送りを要求すると、利用者２に関する次のデータ要素が、例えばスロット２２の間にサービス期間２内で検索される。この後、早送り機能が止まるまで、利用者２に関するデータが検索されているスロットは、２０カウントだけ進められる。この結果が、データ、例えばビデオプログラムの早送りである。同一の一般的プロセスを用いて、情報の高速早送りや、巻戻しや、高速巻戻しが行われる。早送り機能や高速巻戻し機能の速度は、スキップするスロットの数によって決まる。このため、各サービス期間の前に、利用者は、利用者が要求した機能に応じた新しいスロットに再度割り当てられなければならない。この再割当て処理の詳細については、後述する。
一時停止機能に関しては、一時停止命令が他の命令に変わるまで、１個のスロットを使用して同じディスクドライブからの情報に繰り返しアクセスする。停止命令は、もちろん、現在のロケーションにおける利用者に対する情報の配布を停止する。アクセスされている現在のディスクドライブは、利用者ＩＤを用いてテーブル（表）に記憶され、利用者が再生を再開したときに、システムが、最後にアクセスされたディスクドライブからデータを送り始めることができるようになっている。
各サービス期間の間に行われるデータ検索処理の結果として、各サブセットのローカルメモリは、３０人の利用者の各々について１６，０００ワードを含むことになる。一つのサービス期間が完了すると、システムは、連続した次のサービス期間内に、引き続き新しいデータにアクセスする。先行するサービス期間からローカルメモリに記憶されたデータは、ディスクドライブに伴う比較的長いアクセス時間の間に出力される。このため、出力タイミング・シーケンサ（ＯＴＳ、図１１を参照して説明する）を用いることで、先行するサービス期間からのデータが多重化回路に出力され、同時に、新たなデータが現在のサービス期間に対するローカルメモリに記憶される。
更に具体的に述べると、図６は、各サービス期間間に利用されるデータ検索ルーチン（DATA RETRIEVAL routine）６００のフローチャートを表している。このルーチンは、全プロセッサの各々によって同時に実行される。簡単のため、以下では、このルーチンが単一のプロセッサ上で実行されるものとして説明を行う。しかし、読者は、このルーチンが他の５０４個のプロセッサ上で同時に実行されていることを理解しなければならない。
このルーチンは、“スタート”とラベルされたステップ６０２から開始する。ステップ６０４において、このルーチンは、現在アクティブな利用者が適切なスロットに割り当てられるように、複数のテーブルを初期化する。これらのテーブルには、広域割当てテーブル（global allocation table（ＧＡＴ））及び一対の局所割当てテーブル（local allocation table（ＬＡＴ））が含まれている。この一対のＬＡＴには、現在のＬＡＴ（ＣＬＡＴ）と次のＬＡＴ（ＮＬＡＴ）とが含まれている。一般に、これらのテーブルは、利用可能な各利用者スロットの現在の機能に関する情報、例えばそこに割り当てられた利用者の利用者識別名（ＩＤ）や、その利用者の現在及び次の操作モードや、その利用者へのサービスの提供のためにアクセスすることになっている次のデータのディスクアドレス等を含んでいる。
具体的に述べると、ＧＡＴは、複数の利用者、例えば３０００人の利用者の各々に関する情報を含んでいる。ＧＡＴのコピーは、各プロセッサのローカルメモリに記憶される。ＧＡＴに対する変更、例えば利用者の操作モードの変化は、ホストコンピュータによって更新される。テーブル中の各項目は、１から３０００まで（利用者ＩＤに対応して）番号が付けられており、各利用者の次の操作モードと、そのモードに対してデータ検索を実行するディスク上のメモリアドレスと、を含んでいる。通常、そのディスクアドレスは、アクセスされる１６，０００ワード中の最初のワードのアドレスである。
一方、ＬＡＴは、個々のプロセッサの各々に対応付けられており、例えば、各プロセッサについて異なるＬＡＴ対が対応付けられている。ＣＬＡＴは、対応付けられたプロセッサによって行われるデータ検索操作を現在のサービス期間に関して定める。このＣＬＡＴは、現在のサービス期間の間にプロセッサによってサービスの提供を受ける利用者についての利用者ＩＤのリスト、各利用者の現在の操作モード、及びアクセスされるべきデータのアドレスを含んでいる。名前が示されると、ＮＬＡＴは次のサービス期間の間に対応プロセッサによって行われるべきデータ検索操作を定める。このＮＬＡＴは、次のサービス期間にサービスの提供を受ける利用者についての利用者ＩＤのリスト、利用者の操作モード、及びアクセスされるべきデータのアドレスを含んでいる。
こうして図６のステップ６０４では、現在アクティブな利用者についてテーブルの項目が初期化される。この後、ステップ６０６において、利用者はサービスの提供を受ける。例えば、利用者サービスルーチン（USER SERVICE routine）７００を実行することによりディスクドライブからデータがアクセスされる。この後、ステップ６０８では、利用者に次のサービス期間中に使用する新たなスロットを再割当てするために割当てテーブルが更新される。利用者再割当ては、利用者再割当てルーチン（USER REALLOCATION routine）８００を実行することによって行われる。繰り返しデータを検索し、それから利用者を再割当てするステップを含んだ連続した一連のサービス期間を作成するため、利用者サービス期間生成ループ６１０が繰り返し実行される。
図７に示されるように、利用者が既にスロットに割り当てられているものとすると、利用者サービスルーチン７００は、全機能を実行して利用者のデータ要求に応える。この利用者サービスルーチンはステップ７０２から開始し、ステップ７０４に進む。このステップ７０４において、このルーチンは、このルーチンを実行するプロセッサが、サーマル・リキャリブレーション・ストリップ（thermal recalibration strip）、例えばディスクドライブ・リキャリブレーション、を行うために用いられる一連の縦のスロット（図５参照）内にあるかどうかを照会する。ＧＡＴ、ＣＬＡＴ及びＮＬＡＴは、各テーブルのモードフィールド内に、ディスクドライブがリキャリブレートされることになっているかどうかを示す指標を含んでいる。この照会の回答が肯定的である場合、このルーチンは、ステップ７０６において、そのプロセッサに対応したディスクドライブに、そのディスクドライブのサーマル・リキャリブレーションを実行させる。逆に、ステップ７０４の照会の回答が否定的である場合、このルーチンは、ＮＯ経路に沿ってステップ７０８へ進む。
ステップ７０８では、このルーチンを実行するプロセッサが扱う３０人の利用者の各々に関するデータにアクセスし、これをローカルメモリに記憶する。このようなデータアクセスは、プロセッサが３０人の利用者の各々について１６，０００ワードを検索することを要求する。１６０００ワードの開始アドレスは、利用者の各々についてのＣＬＡＴに含まれている。プロセッサは、そのアドレスのデータワードを検索し、その後、ディスクドライブ中の次の１５，９９９ワードを検索する。各コンピュータに対応付けられた各利用者は、この方法で順次にサービスの提供を受ける。
更に述べると、このデータがディスクドライブから呼び出され、ローカルメモリに記憶されているとき、プロセッサは、エラー検出を行う。このデータがディスクドライブから検索されると、プロセッサ及びディスク・コントローラの双方は、畳み込み多項式（convolution polynomial）を用いて検索データ上のチェックワードを算出する。検索の最後に、ディスク・コントローラは、プロセッサの内部算出値との比較のため、そのチェックワードをプロセッサに送る。この比較により、プロセッサへのデータ転送中のエラーを検出することが可能になる。
所定の利用者に関するデータがローカルメモリに送られた後、次の利用者のデータが検索される。次の利用者のデータの検索中に、前の利用者のデータ中に検出されたエラーが訂正される。エラー訂正プロセスを容易にするため、近接のプロセッサは、ＩＰＣバスを介して、最近検索されたデータワード及びパリティワードを共有し、パリティチェックを行う。要素中の他の４個のワードと組み合わされたこのパリティワードは、ＣＲＣエラー検出アルゴリズムによって検出された任意の単一データワードエラーを訂正するために使用することができる。１ワードを超えてエラーが生じている場合は、エラーを訂正することができない。このため、ルーチン７００は、ステップ７１０で、全ての利用者データが検索されると利用される特別なエラー訂正スロットを定める。このスロットでは、エラーのあるデータは、正確にデータを検索する試行のなかで２回目にアクセスされる。このスロットは、他のスロットと同様に、所定のプロセッサが１６０００ワードを検索することを可能にする。
ステップ７１２及び７１４では、新たなデータが、プロセッサに対応付けられたディスクドライブにロードされる。具体的には、ステップ７１２を使用して、適切に符号化された“ライブ”又は“オフ・エア”のデータをディスクドライブ上に記憶する。ステップ７１４では、１６，０００ワードのビデオ情報のブロックをディスクドライブに記憶することができる。最後に、ステップ７１６で、ルーチン７００は、図６のサービス期間生成ループ６１０に戻る。
データ検索ルーチンが実行されている間、プロセッサは、先行するサービス期間中にローカルメモリに記憶されたデータにアクセスし、そのデータをＯＴＳに出力する。ＯＴＳは、データを再編成して、再割当て処理によって変更されない標準化データストリームを作成する。言い換えると、ＯＴＳは、どのようなスロットに利用者が割り当てられようとも、多重化回路による使用に適切なように利用者データが再編成されるようにする。
図８は、利用者再割当てルーチン８００を表している。このルーチンは、１サービス期間につき１回の頻度で、利用者の各々を、利用者の現在の操作（機能）モードを実行する適切なスロットに割り当て直す。このルーチンは、ステップ８０２から開始し、ステップ８０４に進む。このステップ８０４では、利用者が現在要求している機能及び利用者が次のサービス期間内に実行するように要求した機能に応じて、利用者に優先順位が付けられる。
一般に、このルーチンは、プロセッサによって扱われる３０人の利用者をサービス期間内に利用可能な３０個の可能スロットに割り当て直す。この再割当ては、種々の割当てテーブル内で情報を比較することにより行われる。この情報は、特定利用者の優先順位（priority）をプロセッサに通知する。例えば、特定の利用者は特定のプロセッサからデータにアクセスしなければならないとか、特定の利用者は、見るデータに影響を与えることなく近接のプロセッサから情報にアクセスすることができるといったことを通知する。例を挙げると、最も高い優先順位、すなわち優先順位１は、現在再生モードにある利用者に常に割り当てられ、その利用者は、次のサービス期間の間、依然として再生モードにおかれる。これらの利用者には、適切なディスク（ディスク重要度（disk critical））から正しい時間（時間重要度（time critical））に次の一連のデータワードが与えられなければならない。さもないと、利用者は、ビデオのジャンプ又はスキップを体験することになる。更に、サーマル・リキャリブレーション処理にも、優先順位１が割り当てられる。
一方、現在、例えば早送りを使用しており、次のサービス期間に再生モードを使用する予定の利用者には、正確に次のセットのデータワード（ディスクは重要でない）を与える必要はないが、適切な時間（時間重要度）にデータワードを与えなければならない。再生モードでビデオが再開したときに、与えられたビデオデータが８０，０００ワードだけオフセットされれば、利用者は全く気づかない。このため、早送りから再生モードへ変わった利用者は、下位の優先順位である優先順位２に割り当てられる。次の表は、種々のモードとその優先順位の指定をまとめたものである。
0004195725.tif 000002
ここで、
時間重要度
１＝当該サービス期間にサービスを受けなければならない、
特別出力
２＝当該サービス期間にサービスを受けなければならない、
一般出力
３＝可能な限り早くサービスを受けなければならない、
先行出力なし
ディスク重要度
１＝当該ディスク・サブセットによってサービスを受けなければならない
２＝±１のディスク・サブセット内でサービスを受けなければならない
３＝±数個のディスク・サブセット内でサービスを受けなければならない
４＝±多数個のディスク・サブセット内でサービスを受けなければならない
特別出力は、正確なデータの発見を容易にするために利用者に供給しなければならない出力である。一般に、ビデオデータは圧縮されており、適切な時間に利用者の受像器上装置へ送られなければならない特定の復元制御ワード（decompression control words）がそのデータ内にあり、正確なデータ復元と適切なスクリーン表示を容易にしている。このため、これらの特別出力（即ち、復元制御ワード及びこれに伴うデータ）には、一般出力よりも大きな時間重要度優先順位が割り当てられる。この一般出力は、圧縮ビデオデータは含んでいないが、受像器上装置の機能に必要な制御データは含んでいても良い。先行出力がない場合、要求される出力は、それほど高い時間重要度を有しない。また、データは、次のサービス期間ではなく後のサービス期間に、視聴者に影響を与えることなく作成することができる。例えば、停止モードから再生モードに進むとき、プログラムを再開する際の１個のサービス期間の遅延は、視聴者のビデオプログラムの鑑賞にほとんど影響を与えない。
所定のプロセッサに対応付けられたＣＬＡＴは、そのプロセッサによって現在サービスを受けている各利用者によって実行される操作（機能）のモードを定める。サービス期間中に利用者の一人がその機能を変更した場合、ホストコンピュータは、その利用者の新たな機能及びその機能を実行するためその利用者に送る必要のあるデータのアドレスを用いてＧＡＴを更新する。ホストコンピュータは、このモード変更を全プロセッサに同報する。
現在のサービス期間の間、プロセッサは、現在サービスを提供している利用者についてのＧＡＴ情報を検索する。このＧＡＴ情報は、ＮＬＡＴ内に置かれている。ＮＬＡＴ機能をＣＬＡＴ機能と比較することにより、プロセッサは、表１に従って、現在の利用者の各々についての優先順位を判別する。更に、ステップ８０４では、ＮＬＡＴ及びＣＬＡＴが交換される。即ち、ＣＬＡＴ情報がＮＬＡＴ情報となり、ＮＬＡＴ情報がＣＬＡＴ情報になるように、各テーブルに対するポインタが交換される。
ステップ８０６では、優先順位１再割当てルーチン（PRIORITY 1 REALLOCATION routine）９００を実行することにより、優先順位１の利用者が適切なスロットに割り当てられる。優先順位１の利用者が再割当てされると、ルーチン８００は、ステップ８０８、８１０及び８１２で、優先順位２、３及び４再割当てルーチン（PRIORITY 2, 3 and 4 REALLOCATION routine）１０００、１１００及び１２００をそれぞれ実行することにより、優先順位２、３及び４の利用者を再割当てする。一般に、これらのルーチンを用いて、各プロセッサは、低優先順位の利用者を一つの割当てスロットに割り当てようと試みる。しかしながら、余りに多数の利用者が単一のプロセッサによってサービスを受けることになっている場合、超過利用者は、別のスロットの別のプロセッサに渡される。これらのルーチンの各々は、以下で詳細に説明する。利用者再割当てルーチン８００は、ステップ８１４で利用者サービスルーチン７００に戻る。
図９は、優先順位１再割当てルーチン９００を表している。このルーチンは、ステップ９０２から開始して、ステップ９０４へ進む。ステップ９０４において、このルーチンは、ＩＰＣバスを用いて、そのＣＬＡＴ内の優先順位１の利用者の利用者ＩＤを、次のスロットの利用者を扱う近接セットのプロセッサに渡す。例えば、このＩＤは、右側の５個のプロセッサに渡される。同時に、このプロセッサは、優先順位１の利用者のＩＤを、左側のスロットを定めるプロセッサの一つから受け取る。これらのプロセッサＩＤは、ＣＬＡＴ内に置かれる。
ステップ９０６では、ＧＡＴ内に記憶された利用者データアドレスを、ある行の最後のスロット、例えばプロセッサ５０１〜５０５、から、次の行の最初のスロット、例えばプロセッサ１〜５、へ渡された利用者について更新しなければならない。一般に、利用者が一つのスロットから次のスロットに渡されるとき、利用者が要求したデータの開始アドレスは変化しない。しかしながら、利用者が最後のスロットから新たな行の最初のスロットに再割当てされるとき、要求されたデータのアドレスは、１６，０００アドレスだけ増加する。これは、ディスクドライブにデータを配布する方法に起因して生じる（図４及びこれに付随する説明を参照）。この結果、この利用者についてのＧＡＴアドレスを更新しなければならなくなる。
ステップ９０８で、優先順位１再割当てルーチン９００は、利用者再割当てルーチン８００に戻る。
図１０は、優先順位２、３及び４再割当てルーチン１０００のフローチャートを表している。このルーチンは、優先順位２の利用者を再割当てするために使用されるものとして説明する。しかしながら、このルーチンは、優先順位３又は優先順位４の利用者を再割当てするために、単純に再実行され、これらの利用者を処理する。
このルーチン１０００は、ステップ１００２から開始して、ステップ１００４に進む。ステップ１００４において、このルーチンは、ＩＰＣバスを用いて、優先順位２の利用者の利用者ＩＤを宛先プロセッサに送る。この宛先プロセッサは、通常、複数のプロセッサ分だけ離れている。スキップされるプロセッサ（或いは複数のサブセットのプロセッサ）の具体的な数は、利用者の優先順位に依存する。例えば、早送りモード中の利用者（優先順位２の利用者）は、システム構成に応じて、１０個のプロセッサをスキップすることができ、或いは１００個のプロセッサをスキップすることすら可能である。このため、このルーチンは、モードに応じて、利用者ＩＤを、適切であるが離れたプロセッサにアドレスする。同時に、このプロセッサは、このプロセッサに再割当てされることになっている利用者の利用者ＩＤを受け取っている。特定のプロセッサがその３０個の利用可能なスロットを優先順位１の利用者で満たしていない場合、そのプロセッサは、優先順位２の利用者を受け入れてＣＬＡＴに置く。優先順位１再割当てルーチンと同じように、優先順位２再割当てルーチンは、ステップ１００６で、行を変更した利用者に関するＧＡＴ内のアドレスを増加する。
ステップ１００８では、このルーチンは、現在割り当てられている優先順位２の利用者の数が最大許容利用者の数、例えば３０人よりも大きいかどうかを照会する。大きい場合は、超過利用者を再割当てしなければならない。このため、照会の回答が肯定的である場合は、このルーチンは、ＹＥＳ経路に沿ってステップ１０１０及び１０１２に進む。これら二つのステップは、優先順位２の利用者の再割当ての必要がなくなるまで、利用者ＩＤを繰り返し送受し、必要ならばＧＡＴを更新する。こうして、ステップ１００８での照会の回答は肯定的となり、優先順位２再割当てルーチンは、ステップ１０１４で利用者再割当てルーチン８００に戻る。
優先順位３及び４の利用者を再割当てするため、図１０に表されるルーチンは、これらの利用者のために再実行される。このため、全利用者が最終的に適切なスロット（プロセッサ）に再割当てされる。
各サービス期間ごとに上述のルーチンを実行した後、３０人の利用者の各々に関する１６，０００のデータワードは、各プロセッサに付随するローカルメモリに記憶される。このため、４個の連続したプロセッサからなるグループは、特定の利用者に関して４データワード（６４ビット）を含むデータ要素を定めている。ここでは、パリティワードは無視している。利用者が動的に割り当てられるため、特定利用者のデータの具体的なロケーションは任意である。一般的な多重化回路の使用を容易にするためには、データがアクセスされサーバから出力されるとき、そのデータは反復可能な順序になければならない。従って、利用者データを、多重化回路によって容易に利用可能な所定の順序に順序付けし直してそのデータを利用者に配布するため、出力タイミング・シーケンサ（ＯＴＳ）を用いてデータの再順序付けがなされる。
図１１は、ＯＴＳ１１００のブロック図を表している。一般に、この回路は、データの各要素を検査し、そのデータを所定の順序に再順序付けする。簡単のため、この所定順序は、利用者ＩＤの順序を、例えば１から３０００まで上昇していく。ＯＴＳを用いると、任意の順序の利用者出力データは、上昇する利用者ＩＤ順序の６４ビット幅シーケンスの出力データとなる。この６４ビット幅シーケンスは、６４本の並列ライン上にある一連の６４ビットデータ要素出力として定められる。これらの並列ラインでは、データ要素中の全６４ビットに関して、各利用者データ要素の第１ビットはライン１上に位置し、各利用者データ要素の第２ビットはライン２上に位置する、などというようになっている。このように、６４本の並列ラインは、３０００人の利用者に対応した各利用者データ要素についての１ビットを有している。これらの要素が１から３０００まで順序付けられた後、次のセットのデータ要素について同様の処理が繰り返される、などというようになっている。この結果、任意に順序付けされた入力データに対して、利用者がどのプロセッサに再割当てされようとも繰り返すことの可能な標準的番号順序付けが行われることになる。結果として、ＯＴＳ回路は、本質的に、第１の多重化データストリームをその入力として有し、第２の多重化データストリームを出力として有する。この第２多重化データストリームは、第１データストリームが再編成されたものである。
具体的には、このＯＴＳは、マスターカウンタ１１０８、複数のデータ要素選択回路１１０２、複数のマルチプレクサ（ＭＵＸ）１１０４、及び出力レジスタ１１０６を含んでいる。マスターカウンタは、０から２９９９まで計数を行った後、０に戻る。即ち、このカウンタは、利用者の数と等しいカウントを有している。利用者データ要素は出力用に使用できるため、各データ要素は、記憶されたデータ要素に対応した利用者ＩＤに沿って各データ要素選択回路内に記憶される。こうして、データ要素選択回路は、全利用者の各々、例えば利用者１〜３０００についてデータ要素（４データワード又は６４ビット）を累積的に記憶する。
カウンタ１１０８が１から３０００まで順次計数を行うと、このカウントはデータ要素選択回路をアドレスし、マスターカウンタの各カウントごとにこれらの回路の一つからデータ要素を作成する。順次に接続された複数のＭＵＸ１１０４は、再クロッキングのために、データ要素の各々を６４ビットレジスタ１１０６に送る。再クロッキングの後、多重化された一連のデータ要素が出力となる。これらのデータ要素は、利用者ＩＤの上昇順序に編成される。
更に詳しく述べると、データ要素選択回路は、レジスタアレイ１１１０を含んでいる。このレジスタアレイは、一つのサービス期間内の全利用者、例えば３０人のデータ要素、及び４ワード要素の各々に対する利用者ＩＤを記憶及び二重バッファリングすることが可能である。二重バッファリングを用いることで、このアレイは、要素を同時に検索しつつ、要素を記憶することが可能となる。このため、１６個のプロセッサ（一つのプロセッサ・グループ）の出力レジスタは、データ要素選択回路１１０２に接続されている。アレイ内の各６４ビットレジスタ１１１４は、セレクタ１１１２に接続されている。マスターカウンタが計数を行っていて、そのカウントがアレイ１１１０内の利用者ＩＤと等しくなると、この利用者ＩＤに対応したデータ要素がセレクタを介して遅延回路１１１５に送られる。通常の二重バッファリング法でマスターカウンタが０に達すると、以前にデータを記憶していたレジスタにアクセスが行われ、データが検索される。
更に、データ要素がセレクタを通過すると、こり特定カウントでこの特定データ要素選択回路１１０２が出力を有していることを示すマッチ信号（MATCH signal）が生成される。このデータ要素及びマッチ信号は、所定数のクロック周期の間、遅延回路１１１５内に保持される。具体的には、この所定数のクロック周期はこのデータ要素選択回路が表す左からの１６個のプロセッサからなる各グループについての１クロック周期に等しい。例えば、左端のプロセッサ・グループからのデータを含むデータ要素選択回路は遅延を有しておらず、隣接する次のプロセッサ・グループからのデータを含む回路は１クロック周期の遅延を有しており、隣接する次のプロセッサ・グループからのデータを含む回路は２クロック周期の遅延を有している、などというようになっている。
適切な遅延が加えられた後、このデータ要素は、ＭＵＸ１１０４の入力の一つに与えられる。入力の選択は、マッチ信号によって制御される。この方法では、マッチ信号がアサートのとき、ＭＵＸは、マッチ信号を生成するデータ要素選択回路に接続された入力を選択する。これ以外の場合は、ＭＵＸは、デフォルトで他の入力を選択する。このような処理を用いることで、マスターカウンタの各カウントにつき１個のデータ要素が生成される。各ＭＵＸを現在通過しているデータ要素は、６４ビット幅レジスタ１１１６にクロック同期されている。このため、各クロック周期において、これらのデータ要素は、複数のＭＵＸ１１０４及びこれに対応付けられたレジスタ１１１６を介して出力レジスタ１１０６に送られる。この結果、レジスタ１１０６の出力は、利用者ＩＤ、例えば１〜３０００、の順位内で順次に順序付けされた一連の６４ビット幅データ要素となる。
上記の説明において、ＯＴＳ回路は、単一のマスタークロック及び複数の遅延回路を含んでいた。しかしながら、このような遅延回路は、ＯＴＳ集積回路上に付加的な回路を必要とする。従って、他の実施形態では、データ要素選択回路にそれぞれ個々に接続された複数のマスタークロックが使用される。各マスタークロックの初始動カウントは、固有のカウント遅延を与えるようにプリセットされている。例えば、左端のマスターカウンタがカウント０に初期化されると、隣接する次のカウンタはカウント２９９９に初期化され、次の隣接カウンタはカウント２９９８に初期化される、などというようになっている。このため、これらのカウンタは、レジスタアレイからデータ要素を検索する際に、適切な遅延（各データ要素選択回路につき１クロック周期）を与える。
再順序付けされたこのデータ要素ストリームは、多重化回路によって容易に扱われ、このデータ要素は適切な利用者ネットワークに配布される。説明を簡単にするため、ＯＴＳは、プロセッサ・サブシステムから分離した回路として説明してきた。しかしながら、ＯＴＳは、レジスタアレイがサブシステム中に分散するようにしてプロセッサ・サブシステムに容易に組み込めることは、当業者であれば分かるだろう。
ここまで、本発明の開示内容を組み込んだ種々の実施形態を示して詳細に説明してきたが、当業者であれば、この開示内容を組み込んだ他の多数の変形例を容易に考案することができる。ここで開示した装置及び方法は、ビデオサーバ、医療イメージング、特殊効果及びアニメーション並びにロケーション・ベースの娯楽システム、その他の用途に適用することができる。
【図１】
0004195725.tif 000003
【図２】
0004195725.tif 000004
【図３】
0004195725.tif 000005
【図４】
0004195725.tif 000006
【図５】
0004195725.tif 000007
【図６】
0004195725.tif 000008
【図７】
0004195725.tif 000009
【図８】
0004195725.tif 000010
【図９】
0004195725.tif 000011
【図１０】
0004195725.tif 000012
【図１１】
0004195725.tif 000013