(57)【特許請求の範囲】
【請求項１】
各実時間ストリームデータを夫々複数のデータブロックとして記憶したデータ記憶装置から、要求のあった実時間ストリームデータの各データブロックを順次バッファメモリ装置に読出し、該バッファメモリ装置に格納された該データブロックを要求元に繋がる通信路に送出する実時間ストリームサーバのために、該実時間ストリームデータのデータブロックの読出しおよび送出しのタイミングを決定するストリームスケジューリング方法において、
要求された実時間ストリームデータについて、ストリームの連続性を保証することのできる固定周期の送出しのタイミングを規定する固定周期の基準タイミングを決定するとともに、当該基準タイミングより以前で且つストリームの連続性を保証することのできる許容範囲内に実際に行なう読出しのタイミングを決定することを特徴とするストリームスケジューリング方法。
【請求項２】
各実時間ストリームデータを夫々複数のデータブロックとして記憶したデータ記憶装置から、周期的な動作タイミングを規定したタイムスロットに従って、要求のあった実時間ストリームデータの各データブロックを順次バッファメモリ装置に読出し、該バッファメモリ装置に格納された該データブロックを要求元に繋がる通信路に送出する実時間ストリームサーバのために、該実時間ストリームデータについてデータブロックの読出しおよび送出しのタイムスロット割当てを行なうストリームスケジューリング方法において、
各実時間ストリームデータについて、ストリームの連続性を保証することのできる固定周期の送出しのタイミングを規定する基準タイムスロットを記憶し、
新たな実時間ストリームデータが要求された場合に、他の実時間ストリームデータについて記憶された前記基準タイムスロットより以前で且つストリームの連続性を保証することのできる許容範囲内で実際に読出しを行なうべきタイムスロットの再割当てを行なって空きスロットを移動させ、この移動させた空きスロットを前記新たな実時間ストリームデータについて実際に読み出しを行なうべきタイムスロットとして採用することを特徴とするストリームスケジューリング方法。
【請求項３】
送出している各実時間ストリームデータのうち、実際に読出しを行なうべきタイムスロットを移動することが可能なものについてタイムスロットの前記再割当てを行なうことを特徴とする請求項２に記載のストリームスケジューリング方法。
【請求項４】
各実時間ストリームデータについて実際に読出しを行なうべきタイムスロットを前記許容範囲内で可能な限り時間軸上で前方に割当てておくことを特徴とする請求項２に記載のストリームスケジューリング方法。
【請求項５】
各実時間ストリームデータを夫々複数のデータブロックとして記憶したデータ記憶装置から、周期的な動作タイミングを規定したタイムスロットに従って、要求のあった実時間ストリームデータの各データブロックを順次バッファメモリ装置に読出し、該バッファメモリ装置に格納された該データブロックを要求元に繋がる通信路に送出する実時間ストリームサーバのために、該実時間ストリームデータについてデータブロックの読出しおよび送出しのタイムスロット割当てを行なうストリームスケジューリング方法において、
要求された実時間ストリームデータについて、ストリームの連続性を保証することのできる送出しのタイミングを規定する読出しの基準タイムスロットの候補を、要求を受け付けた時点から該実時間ストリームデータの最初のデータブロックの送出しを開始するまでの応答時間が定められた制限時間以内となるものの中から選択し、
各基準タイムスロットの候補を採用した場合夫々について、複数の実時間ストリームデータの基準タイムスロットの位置の分散の評価を行ない、
この評価結果に基づいて、前記基準タイムスロットの候補のうちの１つを採用することを特徴とするストリームスケジューリング方法。
【請求項６】
前記制限時間を、前記要求された実時間ストリームデータのデータ長に応じて決定することを特徴とする請求項５に記載のストリームスケジューリング方法。
【請求項７】
前記制限時間を、実時間ストリームデータに対する要求の種類に応じて決定することを特徴とする請求項５に記載のストリームスケジューリング方法。
【請求項８】
前記評価を行なう際、前記位置の分散に加え、送出している各実時間ストリームデータの残り時間を考慮して評価結果を求めることを特徴とする請求項５に記載のストリームスケジューリング方法。
【請求項９】
各実時間ストリームデータを夫々複数のデータブロックとして記憶したデータ記憶装置から、周期的な動作タイミングを規定したタイムスロットに従って、要求のあった実時間ストリームデータの各データブロックを順次バッファメモリ装置に読出し、該バッファメモリ装置に格納された該データブロックを要求元に繋がる通信路に送出する実時間ストリームサーバのために、該実時間ストリームデータについてデータブロックの読出しおよび送出しのタイムスロット割当てを行なうストリームスケジューリング方法において、
要求された実時間ストリームデータについて、ストリームの連続性を保証することのできる送出しのタイミングを規定する読出しの基準タイムスロットの候補を、複数の実時間ストリームデータの基準タイムスロットの位置の分散の評価に基づいて選択し、
選択された前記基準タイムスロットに基づいて定まる所定の許容範囲内で、実際に読出しを行なうべきタイムスロットの候補を選択し、
選択された前記タイムスロットの候補が空きスロットである場合、または候補とされた当該タイムスロットに既に割当てられている他の実時間ストリームデータについて、基準タイムスロットに基づいて定まる所定の許容範囲内で実際に読出しを行なうべきタイムスロットの再割当てを行ない、候補とされた当該タイムスロットを空きスロットにできる場合、前記基準タイムスロットの候補および該タイムスロットの候補を採用することを特徴とするストリームスケジューリング方法。
【請求項１０】
前記新たな実時間ストリームデータについての前記基準タイムスロットを、採用した前記実際に読出しを行なうべきタイムスロットが前記所定の許容範囲内に含まれ、かつ複数の実時間ストリームデータの基準タイムスロットの時間的な集中度が小さくなるよう決定することを特徴とする請求項２に記載のストリームスケジューリング方法。
【請求項１１】
各実時間ストリームデータを複数のデータブロックとして記憶したデータ記憶装置から、要求のあった実時間ストリームデータの各データブロックを順次バッファメモリ装置に読出し、該バッファメモリ装置に格納された該データブロックを要求元に繋がる通信路に送出する実時間ストリームサーバのために、該実時間ストリームデータについてデータブロックの読出しおよび送出しのスケジュールを決定するストリームスケジューリング装置において、
要求された実時間ストリームデータについて、要求を受け付けた時点から所定の制限時間以内に送出を開始できる基準スケジュールを選択するとともに、選択した該基準スケジュールを元にした所定の許容時間範囲内で実際に読出しおよび送出しを行なう動作スケジュールを決定する接続要求処理手段と、
少なくとも要求された前記実時間ストリームデータの前記動作スケジュールを決定する際に、送出しを行なっている実時間ストリームデータについて、前記基準スケジュールを満たす範囲で前記動作スケジュールを変更する動作スケジュール更新手段とを備えたことを特徴とするストリームスケジューリング装置。
【請求項１２】
各実時間ストリームデータを複数のデータブロックとして記憶したデータ記憶装置から、要求のあった実時間ストリームデータの各データブロックを順次バッファメモリ装置に読出し、該バッファメモリ装置に格納された該データブロックを要求元に繋がる通信路に送出する実時間ストリームサーバのために、該実時間ストリームデータについてデータブロックの読出しおよび送出しのスケジュールを決定するストリームスケジューリング装置において、
要求された実時間ストリームデータについて、要求を受け付けた時点から所定の制限時間以内に送出を開始できる基準スケジュールの中から、前記要求された実時間ストリームデータを含む複数の実時間ストリームデータについての時間的な集中度が小さくなるような基準スケジュールを選択するとともに、選択した該基準スケジュールを基にした所定の許容時間の範囲内で実際に読出しおよび送出しを行なう動作スケジュールを決定する接続要求処理手段と、
前記動作スケジュールに従って、前記データブロックの読出しおよび送出しを指示する制御手段とを備えたことを特徴とするストリームスケジューリング装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、実時間ストリームサーバのストリームスケジューリング方法及び装置に関する。
【０００２】
【従来の技術】
動画像や音声に代表されるような実時間で順次転送されるデータを、実時間ストリームデータと呼ぶ。これらのデータを扱う実時間ストリームサーバにおいては、ディスク装置に蓄積された実時間ストリームデータを、実時間での連続性を保証して各クライアント（実時間ストリームサーバと通信手段を介して接続されたセットトップボックスやパーソナルコンピュータなど）に送出できることが必要条件である。その条件を満たすために、従来技術では実時間ストリームデータを一定の再生時間単位あるいは一定の大きさ単位毎のブロックに分割してディスクに格納しておき、各クライアント毎にサーバが周期的にディスクにアクセスする。このようにデータを分割して複数のディスクに記憶する方式は、ストライピングと呼ばれ、従来から広く用いられている。
【０００３】
ディスクから読み出されたブロックは、一旦バッファメモリ上に置かれ、対応するクライアントに通信網を介して周期的に送出される。実時間ストリームサーバにおいて、このディスクアクセス命令とデータ転送命令の発行のタイミングの管理を行なうのがストリームスケジューリング装置である。また、ストリームスケジューリング装置は、クライアントからの接続要求を受け付けて、そのクライアントヘの実時間ストリームデータの送出をスケジューリングすることにより、新しいストリームチャネルを確立する。こうして確立された、実時間ストリームサーバからクライアントへの実時間ストリームデータの送出のためのストリームチャネルをストリームと呼ぶ。
【０００４】
ストリームスケジューリング装置では、ディスクアクセスとデータ転送のタイミングを、図２１で示すように一定の時間間隔で区切られたタイムスロットを用いて管理する。１タイムスロットには１回のディスクアクセスが割付けられ、そのディスクアクセスで実時間ストリームデータの１ブロックを読み出す。１ストリームのディスクアクセスの周期は一定であり、タイムスロットに割付けられたそのストリームのためのディスクアクセスは固定される。したがって、ストリーム毎に異なるタイムスロットにディスクアクセスを割り付けることにより、複数ストリームが同一のディスクに蓄積したストリームデータを同時に利用することが可能になる。ただし、１台のディスク装置へのアクセス周期の間には接続可能ストリーム数分のタイムスロットが必要となる。
【０００５】
複数ディスクにデータをストライピングした場合の従来の多重読み出し手法について、図２２には複数のディスク装置を仮想的に１台の高速なディスク装置として扱う方式を、図２３には１周期毎に次のブロックを保持するディスク装置にアクセスする方式を示す。
【０００６】
図２２，図２３の例では、各ディスクアクセス周期のタイムスロット０に、クライアント０のストリームのディスクアクセスが割り付けられている。読出しブロックのＡ１は、実時間ストリームデータＡのブロック１を表している。Ａ１が読み出された後、クライアント０に転送されて実時間で処理（例えば再生）される。Ａ１の処理が終了するまでにＡ２が読み出されて転送される。このように各ストリームが他のストリームの連続性に影響を与えることなくスケジューリングされる。ストリームスケジューラは、このようなタイムスロットであらわされるスケジュールにしたがって、周期的にディスクからのデータの読み込みと送り出しといった動作を繰り返すことで、各ストリームの連続性を保つ。
【０００７】
１台の実時間ストリームサーバに同時に接続可能なストリーム数は、データ再生ビットレートに対するディスク装置のデータ転送ビットレートの比Ｍとディスク装置の台数Ｎｄｉｓｋとで決定される。接続可能ストリーム数を増加させるには、ディスク装置の転送能力を高くする方法と、ディスク装置を増加してストライピング数を多くする方法がある。
【０００８】
前者では、ディスク装置のシーク時間を小さくすることによりディスク装置の応答時間を小さくし、平均転送速度を上げる方法が用いられる。１スロット時間を小さくできるので、最大ストリーム数を増やすことが可能である。
【０００９】
後者は、スケジューリング方式に応じて２種類に分けられる。第１の方式は、同時に複数のディスク装置から、１個のストリームへ送出する連続したブロックを読み出すことにより、複数のディスク装置を仮想的に１台の高速なディスク装置として扱う方法である。第２の方式は、１周期毎に次のブロックが格納されているディスク装置にアクセスする方式で、同時に複数のディスク装置で異なるストリームへのデータが読み出される。
【００１０】
図２２，図２３に示すように、上記の第１，第２の方式ともに、同時に接続可能ストリーム数は、Ｎｄｉｓｋ倍となる。ただし、各ストリームのある１台のディスク装置へのアクセス周期（タイムスロット数）もＮｄｉｓｋ倍となる。
【００１１】
実時間ストリームサーバでは、図２４で示すように、接続要求の発生した時刻から最初のディスクアクセスを開始するまでの時間と、ディスクアクセスに必要な時間と、ディスクから読み出したデータをクライアントへ送出を開始するまでバッファに格納しておく時間の合計が応答時間となる。実際にはネットワークを経由してクライアントへデータが転送され、クライアント側で送られてきたデータを再生開始するまでの遅延も含めたものが、ユーザが感じる遅延時間であるが、この部分は実時間ストリームサーバでは管理できないので、ここでは応答時間には含めない。
【００１２】
新しくクライアントからのストリームの接続要求が発生した場合、ストリームスケジューラは、新しいストリームのディスクアクセスの割付けが可能な空きタイムスロットを確保する。このとき、従来の技術では、タイムスロットに既に接続が確立しているストリームのディスクアクセスが固定されているため、接続要求が発生した時点のタイムスロット以降の接続済みのストリームが割り当てられていない空タイムスロットで、もっとも早く順番が回ってくるものを確保する。このような方式で空タイムスロットを確保する場合、タイムスロット中に空タイムスロットが満遍なく分散していれば短い時間で応答できる。しかし、実時間ストリームサーバにすでに多数のストリームが接続されているような状況などで、空タイムスロットが偏って分布している場合は、応答時間が長くなる確率が高くなる。それゆえ、応答時間に制限をもたせて一定の応答時間を確保したい場合には、指定した制限時間内に割り付け可能な空きタイムスロットが存在せず、応答時間が制限時間を越える確率が高くなる。特に、最大接続ストリーム数を増加させる場合、上記した第１の方式では最大接続ストリームの増加に限界があり、第２の方式では最大接続ストリーム数が大きくなるにつれ、最大応答時間も大きくなる。
【００１３】
例えば図２３では、クライアント２ｍ−１が実時間ストリームデータＦをブロック１から転送するように接続要求を出した場合、ブロックＦ１を格納しているディスク装置１のタイムスロットに空きが生じるまで、つまりディスクアクセス周期２のタイムスロットｍ−１までディスクアクセスは行なわれない。
【００１４】
近年、実時間ストリームサーバを基本技術としてビデオサーバ、マルチメディアサーバが開発され、それを用いたビデオオンデマンドやマルチメディアオンデマンドあるいはインフォメーションオンデマンドと呼ばれるような情報サービスが行われてきている。このような情報システムは、実時間ストリームデータであるビデオや音声、あるいはそれらを従来のテキストやイメージデータ等と組み合せた複合データを用いて、ネットワークで接続されたクライアント端末を介して多数のユーザに同時にサービスを行う。このような状況では、同時に多数のクライアントが実時間ストリームサーバに接続することになり、各クライアントに対する応答時間をできる限り小さくすることが必要不可欠の課題となっている。
【００１５】
【発明が解決しようとする課題】
上記にように、従来は、クライアントへ転送しているストリームのディスクアクセスのタイミングはタイムスロット上で固定されており、接続要求のあった新規のストリームには、最も近い空きタイムスロットを割当てていた。
【００１６】
したがって、実時間ストリームサーバにすでに多数のストリームが接続されているような状況などで、空タイムスロットが偏って分布している場合は、要求を受け付けた時点から該実時間ストリームデータの最初のデータブロックの送出しを開始するまでの応答時間が長くなる確率が高くなる。
【００１７】
それゆえ、応答時間に制限をもたせて一定の応答時間を確保したい場合には、指定した制限時間内に割り付け可能な空きタイムスロットが存在せず、応答時間が制限時間を越える確率が高くなる問題があった
本発明は、上記事情に鑑みてなされたものであり、実時間ストリームサーバの応答時間が指定された制限時間を越える確率を低くすることのできるストリームスケジューリング方法及び装置を提供することを目的とする。
【００１８】
【課題を解決するための手段】
本発明（請求項１）は、各実時間ストリームデータを夫々複数のデータブロックとして記憶したデータ記憶装置から、要求のあった実時間ストリームデータの各データブロックを順次バッファメモリ装置に読出し、該バッファメモリ装置に格納された該データブロックを要求元に繋がる通信路に送出する実時間ストリームサーバのために、該実時間ストリームデータのデータブロックの読出しおよび送出しのタイミングを決定するストリームスケジューリング方法において、要求された実時間ストリームデータについて、ストリームの連続性を保証することのできる送出しのタイミングの基準を決定し、決定された前記タイミングの基準より以前の所定の許容範囲内で、実際に行なう読出しのタイミングを決定することを特徴とする。
【００１９】
本発明（請求項２）は、各実時間ストリームデータを夫々複数のデータブロックとして記憶したデータ記憶装置から、周期的な動作タイミングを規定したタイムスロットに従って、要求のあった実時間ストリームデータの各データブロックを順次バッファメモリ装置に読出し、該バッファメモリ装置に格納された該データブロックを要求元に繋がる通信路に送出する実時間ストリームサーバのために、該実時間ストリームデータについてデータブロックの読出しおよび送出しのタイムスロット割当てを行なうストリームスケジューリング方法において、各実時間ストリームデータについて、ストリームの連続性を保証することのできる送出しのタイミングを規定する読み出しの基準タイムスロットを記憶し、新たな実時間ストリームデータが要求された場合に、他の実時間ストリームデータについて、記憶された前記基準タイムスロットに基づいて定まる所定の許容範囲内で実際に読出しを行なうべきタイムスロットの再割当てを行なって空きスロットを移動させ、この移動させた空きスロットを前記新たな実時間ストリームデータについて実際に読み出しを行なうべきタイムスロットとして採用することを特徴とする。
【００２０】
好ましくは、送出している各実時間ストリームデータのうち、実際に読出しを行なうべきタイムスロットを移動することが可能なものについてタイムスロットの前記再割当てを行なうことを特徴とする。
【００２１】
また、好ましくは、各実時間ストリームデータについて実際に読出しを行なうべきタイムスロットを前記許容範囲内で可能な限り時間軸上で前方に割当てておくことを特徴とする。
【００２２】
好ましくは、前記新たな実時間ストリームデータについての前記基準タイムスロットを、採用した前記実際に読出しを行なうべきタイムスロットが前記所定の許容範囲内に含まれ、かつ複数の実時間ストリームデータの基準タイムスロットの時間的な集中度が小さくなるよう決定することを特徴とする。
【００２３】
本発明（請求項５）は、各実時間ストリームデータを夫々複数のデータブロックとして記憶したデータ記憶装置から、周期的な動作タイミングを規定したタイムスロットに従って、要求のあった実時間ストリームデータの各データブロックを順次バッファメモリ装置に読出し、該バッファメモリ装置に格納された該データブロックを要求元に繋がる通信路に送出する実時間ストリームサーバのために、該実時間ストリームデータについてデータブロックの読出しおよび送出しのタイムスロット割当てを行なうストリームスケジューリング方法において、要求された実時間ストリームデータについて、ストリームの連続性を保証することのできる送出しのタイミングを規定する読出しの基準タイムスロットの候補を、要求を受け付けた時点から該実時間ストリームデータの最初のデータブロックの送出しを開始するまでの応答時間が定められた制限時間以内となるものの中から選択し、各基準タイムスロットの候補を採用した場合夫々について、複数の実時間ストリームデータの基準タイムスロットの位置の分散の評価を行ない、この評価結果に基づいて、前記基準タイムスロットの候補のうちの１つを採用することを特徴とする。
【００２４】
好ましくは、前記制限時間を、前記要求された実時間ストリームデータのデータ長に応じて決定することを特徴とする。
【００２５】
また、好ましくは、前記制限時間を、前記要求された実時間ストリームデータに使用されるアクセス方式に応じて決定することを特徴とする。
【００２６】
また、好ましくは、前記評価を行なう際、前記位置の分散に加え、送出している各実時間ストリームデータの残り時間を考慮して評価結果を求めることを特徴とする。
【００２７】
本発明（請求項９）は、各実時間ストリームデータを夫々複数のデータブロックとして記憶したデータ記憶装置から、周期的な動作タイミングを規定したタイムスロットに従って、要求のあった実時間ストリームデータの各データブロックを順次バッファメモリ装置に読出し、該バッファメモリ装置に格納された該データブロックを要求元に繋がる通信路に送出する実時間ストリームサーバのために、該実時間ストリームデータについてデータブロックの読出しおよび送出しのタイムスロット割当てを行なうストリームスケジューリング方法において、要求された実時間ストリームデータについて、ストリームの連続性を保証することのできる送出しのタイミングを規定する読出しの基準タイムスロットの候補を、複数の実時間ストリームデータの基準タイムスロットの位置の分散の評価に基づいて選択し、選択された前記基準タイムスロットに基づいて定まる所定の許容範囲内で、実際に読出しを行なうべきタイムスロットの候補を選択し、選択された前記タイムスロットの候補が空きスロットである場合、または候補とされた当該タイムスロットに既に割当てられている他の実時間ストリームデータについて、基準タイムスロットに基づいて定まる所定の許容範囲内で実際に読出しを行なうべきタイムスロットの再割当てを行ない、候補とされた当該タイムスロットを空きスロットにできる場合、前記基準タイムスロットの候補および該タイムスロットの候補を採用することを特徴とする。
【００２８】
本発明（請求項１１）は、各実時間ストリームデータを複数のデータブロックとして記憶したデータ記憶装置から、要求のあった実時間ストリームデータの各データブロックを順次バッファメモリ装置に読出し、該バッファメモリ装置に格納された該データブロックを要求元に繋がる通信路に送出する実時間ストリームサーバのために、該実時間ストリームデータについてデータブロックの読出しおよび送出しのスケジュールを決定するストリームスケジューリング装置において、要求された実時間ストリームデータについて、要求を受け付けた時点から所定の制限時間以内に送出を開始できる基準スケジュールを選択するとともに、選択した該基準スケジュールを元にした所定の許容時間範囲内で実際に読出しおよび送出しを行なう動作スケジュールを決定する接続要求処理手段と、少なくとも要求された前記実時間ストリームデータの前記動作スケジュールを決定する際に、送出しを行なっている実時間ストリームデータについて、前記基準スケジュールを満たす範囲で前記動作スケジュールを変更する動作スケジュール更新手段とを備えたことを特徴とする。
【００２９】
本発明（請求項１２）は、各実時間ストリームデータを複数のデータブロックとして記憶したデータ記憶装置から、要求のあった実時間ストリームデータの各データブロックを順次バッファメモリ装置に読出し、該バッファメモリ装置に格納された該データブロックを要求元に繋がる通信路に送出する実時間ストリームサーバのために、該実時間ストリームデータについてデータブロックの読出しおよび送出しのスケジュールを決定するストリームスケジューリング装置において、要求された実時間ストリームデータについて、要求を受け付けた時点から所定の制限時間以内に送出を開始できる基準スケジュールであって、選択した場合に複数の実時間ストリームデータの基準スケジュールの時間的な集中度の小さいものを選択するとともに、選択した該基準スケジュールを元にした所定の許容時間の範囲内で実際に読出しおよび送出しを行なう動作スケジュールを決定する接続要求処理手段と、前記動作スケジュールに従って、前記データブロックの読出しおよび送出しを指示する制御手段とを備えたことを特徴とする。
【００３０】
【作用】
本発明（請求項１）では、要求元（クライアント）からある実時間ストリームデータを転送するよう要求されると、まず、その実時間ストリームデータについて、ストリームの連続性を保証することのできる送出しのタイミングの基準を決定する。この送出しのタイミングの基準をもとに、クライアント側でのストリームの連続性を保証するためには、遅くともいつまでに読出し等を行なわなければならないかが規定される。
【００３１】
ここで、実際には、読出しを上記タイミングの基準から規定される時点で行なう必要はなく、それまでに完了していれば良い。ただし、実際の読出しは、対応するバッファメモリ装置について先行するデータブロックの送出しが完了した後でなければならない。そこで、この送りだし完了時から、決定された前記タイミングの基準をもとに規定される上記の時点までの範囲内（所定の許容範囲内）で、適宜、実際に行なう読出しのタイミングを決定することができる。
【００３２】
この実際に行なう読出しのタイミングは、固定的である必要はなく、必要に応じて変更することができる。
【００３３】
本発明（請求項２）では、まず、各実時間ストリームデータについて、ストリームの連続性を保証することのできる送出しのタイミングを規定する読出しの基準タイムスロットを記憶する。つまり、基準タイムスロットは、要求元（クライアント）側でのストリームの連続性を保証するためには、遅くともいつまでに読出しが行なわれなければならないか、早くともいつから読出しが可能か、および、いつ送出しが行なわれなければならないかを相対的な時刻で規定するための基準となるタイムスロットのことである。
【００３４】
次に、クライアントからある実時間ストリームデータを転送するよう要求されると、他の実時間ストリームデータについて実際の読出しを行なうべきタイムスロットの再割当て、すなわちその基準タイムスロットを満たす範囲内で実際の読出しを行なうべきタイムスロットの移動を行なうことができるのであれば、タイムスロットの再割当てを行なうことによって空きスロットを移動させることができるので、この移動させた空きスロットで、要求された実時間ストリームデータの実際の読出しを行なうことができる。
【００３５】
したがって、最も近い空きタイムスロットよりもさらに以前の割当て済みのタイムスロットを空きタイムスロットに変えて、新規のストリームに割付けることができ、従来よりも応答時間を短縮することができる。
【００３６】
また、応答時間に制限時間を設ける場合、指定された制限時間内に応答可能となるように読出しのタイミングを割り付けるタイムスロットが見つかる確率を高くすることができ、制限時間内で応答可能な確率を高くすることができる。
【００３７】
本発明（請求項５）では、要求元（クライアント）からある実時間ストリームデータを転送するよう要求されると、まず、その実時間ストリームデータについて、ストリームの連続性を保証することのできる送出しのタイミングを規定する読出しの基準タイムスロットの候補を選択する。つまり、基準タイムスロットは、要求元（クライアント）側でのストリームの連続性を保証するためには、遅くともいつまでに読出しが行なわれなければならないか、早くともいつから読出しが可能か、および、いつ送出しが行なわれなければならないかを相対的な時刻で規定するための基準となるタイムスロットのことである。
【００３８】
ただし、ここでは、要求を受け付けた時点から該実時間ストリームデータの最初のデータブロックの送出しを開始するまでの応答時間が定められた制限時間以内となるものを基準タイムスロットの候補として選択する。
【００３９】
基準タイムスロットの候補が幾つかある場合には、各基準タイムスロットの候補を夫々採用した場合について、当該候補とされた基準タイムスロットと既に存在する全部または一部の基準タイムスロットの時間的な存在位置の分散を評価し、評価の結果、より分散を大きくするとされた基準タイムスロットの候補をスケジューリング結果として採用する。
【００４０】
この結果、空きタイムスロットを時間的に偏りなく分散させることができ、新規のストリームの要求を受けた時点から短時間の位置に空きタイムスロットが存在する確率を高くすることができる。
【００４１】
また、指定された制限時間内に応答可能となるように読出しのタイミングを割り付けるタイムスロットが見つかる確率を高くすることができ、制限時間内で応答可能な確率を高くすることができる。
【００４２】
本発明（請求項９）では、要求元（クライアント）からある実時間ストリームデータを転送するよう要求されると、まず、その実時間ストリームデータについて、ストリームの連続性を保証することのできる送出しのタイミングを規定する読出しの基準タイムスロットの候補を選択する。つまり、基準タイムスロットは、要求元（クライアント）側でのストリームの連続性を保証するためには、遅くともいつまでに読出しが行なわれなければならないか、早くともいつから読出しが可能か、および、いつ送出しが行なわれなければならないかを相対的な時刻で規定するための基準となるタイムスロットのことである。
【００４３】
ここで、基準タイムスロットの候補が幾つかある場合には、各基準タイムスロットの候補を夫々採用した場合について、当該候補とされた基準タイムスロットと既に存在する全部または一部の基準タイムスロットの時間的な存在位置の分散を評価し、評価の結果、より分散を大きくするとされた基準タイムスロットの候補を選択する。
【００４４】
次に、前述したものと同様に、選択された基準タイムスロットに基づいて定まる所定の許容範囲内で、実際に読出しを行なうべきタイムスロットの候補を選択する。
【００４５】
ここで、選択された前記タイムスロットの候補が空きスロットである場合、対応する基準タイムスロットの候補およびこのタイムスロットの候補をスケジューリング結果として採用することができる。
【００４６】
もし、候補とされた当該タイムスロットに既に他の実時間ストリームデータが割当てられている場合には、当該他の実時間ストリームデータについてタイムスロットの再割当て、すなわちその基準タイムスロットを満たす範囲内でタイムスロットの移動を行なうことができるのであれば、タイムスロットの再割当てを行なうことによって候補とされた当該タイムスロットを空きスロットにすることができるので、この場合にも対応する基準タイムスロットの候補および当該タイムスロットの候補をスケジューリング結果として採用することができる。
【００４７】
したがって、最も近い空きタイムスロットよりもさらに以前の割当て済みのタイムスロットを空きタイムスロットに変えて、新規のストリームに割付けることができ、従来よりも応答時間を短縮することができる。
【００４８】
また、基準タイムスロットを分散させることにより、空きタイムスロットや空きにできるタイムスロットを時間的に偏りなく分散させることができ、新規のストリームの要求を受けた時点から短時間の位置に空きタイムスロットが存在する確率を高くすることができる。
【００４９】
また、応答時間に制限時間を設ける場合、指定された制限時間内に応答可能となるように読出しのタイミングを割り付けるタイムスロットが見つかる確率を高くすることができ、制限時間内で応答可能な確率を高くすることができる。
【００５０】
本発明（請求項１１）では、要求元（クライアント）からある実時間ストリームデータを転送するよう要求されると、接続要求処理手段は、要求された実時間ストリームデータについて、要求を受け付けた時点から所定の制限時間以内に送出を開始できる基準スケジュールを選択するとともに、選択した該基準スケジュールを元にした所定の許容時間範囲内で実際に読出しおよび送出しを行なう動作スケジュールを決定する。
【００５１】
その際、動作スケジュール更新手段は、送出しを行なっている実時間ストリームデータについて、前記基準スケジュールを満たす範囲で前記動作スケジュールを変更する。
【００５２】
したがって、最も近い空きタイムスロットよりもさらに以前の割当て済みのタイムスロットを空きタイムスロットに変えて、新規のストリームに割付けることができ、従来よりも応答時間を短縮することができる。
【００５３】
よって、指定された制限時間内に応答可能となるように読出しのタイミングを割り付けるタイムスロットが見つかる確率を高くすることができ、制限時間内で応答可能な確率を高くすることができる。
【００５４】
本発明（請求項１２）では、要求元（クライアント）からある実時間ストリームデータを転送するよう要求されると、接続要求処理手段は、要求された実時間ストリームデータについて、要求を受け付けた時点から所定の制限時間以内に送出を開始できる基準スケジュールであって、選択した場合に全部または一部の基準スケジュールの時間的な集中度の小さいものを選択するとともに、選択した該基準スケジュールを元にした所定の許容時間の範囲内で実際に読出しおよび送出しを行なう動作スケジュールを決定する。
【００５５】
そして、制御手段は、決定された動作スケジュールに従って、前記データブロックの読出しおよび送出しを指示する。
【００５６】
この結果、空きタイムスロットを時間的に偏りなく分散させることができ、新規のストリームの要求を受けた時点から短時間の位置に空きタイムスロットが存在する確率を高くすることができる。
【００５７】
また、指定された制限時間内に応答可能となるように読出しのタイミングを割り付けるタイムスロットが見つかる確率を高くすることができ、制限時間内で応答可能な確率を高くすることができる。
【００５８】
【実施例】
以下、図面を参照しながら本発明の一実施例を説明する。
【００５９】
図１に、本発明の一実施例に係る実時間ストリームサーバの構成およびそのストリームスケジューリング装置の内部構成を示す。
【００６０】
本実施例の実時間ストリームサーバ１は、実時間ストリームデータを記憶するデータ記憶装置３、データ記憶装置３から読み出したデータを一時的に記憶するバッファメモリ装置４、バッファメモリ装置４に読み出したデータを、通信網６を介して、クライアント７に送出するデータ転送装置５、データ記憶装置３とデータ転送装置５に対して動作を指示するストリームスケジューリング装置２から構成される。
【００６１】
データ記憶装置３は、磁気ディスクや半導体メモリ、光ディスク、テープ等の各種の記憶装置を用いることができる。
【００６２】
データ転送装置５は、ＡＴＭインタフェースやイーサネットインタフェースなど各種の通信手段に対するインタフェースを用いることができる。
【００６３】
本実施例のストリームスケジューリング装置２は、接続要求処理部２１、スケジュール更新部２３、基準スケジュール管理部２２、スケジュール管理部２４、データアクセス制御部２５、データ転送制御部２６から構成される。
【００６４】
基準スケジュール管理部２２は、各ストリームの連続性を保証するのに必要な動作のスケジュール（基準スケジュール情報３１）を管理する。基準スケジュールは、例えば前述したような（基準）タイムスロットで管理することができる。
【００６５】
一方、スケジュール管理部２４は、実際に実行する動作のスケジュール（スケジュール情報３２）を管理する。スケジュール管理部２４は、例えば、実際にデータ記憶装置３からのデータの読み出しやデータ転送装置５へのデータ転送といった動作のタイミングをタイムスロットとして管理する。
【００６６】
ここで、本実施例の各ストリームのタイムスロット管理方式について説明する。本実施例では、従来のように各ストリームのディスクアクセスを特定のタイムスロットに固定せずに、基準タイムスロットから一定のタイムスロット数の範囲内でのずれを許容して割り付ける。このずれの許容範囲は、タイムスロットをずらすことによってクライアントへの実時間ストリームデータの送出の連続性が途切れない範囲で設定する。本実施例では、このディスクアクセスのずれをジッターと呼び、ディスクアクセスの割り付けが許されるタイムスロットの範囲をそのストリームの許容ジッター範囲と呼ぶ。
【００６７】
本実施例では、ディスクアクセスをこれ以上後にずらすことのできないタイムスロット、即ち許容ジッター範囲の最後尾を、基準タイムスロットと同じタイムスロットと規定する。また、送出しのタイミングを基準タイムスロットの２タイムスロット後方と規定する。
【００６８】
ただし、基準タイムスロットは、必ずしも許容ジッター範囲の最後尾である必要はなく、例えば中央付近であっても最前であってもよい。要するに、基準タイムスロットは、クライアント側でのストリームの連続性を保証するためには、遅くともいつまでに読出しが行なわれなければならないか、早くともいつから読出しが可能か、および、いつ送出しが行なわれなければならないかを相対的な時刻で規定するための基準となるタイムスロットであれば良い。基準タイムスロットが最後尾である場合は、ディスクアクセスを行なうタイムスロットは基準タイムスロットより時間軸上で前方に位置するものの中から採用され、中央付近の場合は、基準タイムスロットの前方あるいは後方に位置するものの中から採用され、最前の場合は、基準タイムスロットの後方に位置するものの中から採用されることになる。
【００６９】
許容ジッター範囲は、図２，図３で示すようになり、したがって、最大ジッター数Ｊは次の式１で決定される。
【００７０】
Ｊ≦ＢＭ−Ｄ−Ｔ−１                            …（式１）
ここで、
Ｂ：１ストリームで使用できるバッファメモリの大きさと実時間ストリームの１ブロックの大きさの比
Ｍ：クライアントでの１ブロック再生時間（スロット数）
Ｔ：クライアントへの１ブロック転送時間（スロット数）
Ｄ：ディスクアクセス終了時刻が割り付けられたタイムスロットの終了時刻を越えた場合の予想最大遅延時間（スロット数）
である。
【００７１】
図２に示す例では、１ブロックの転送に要する時間とクライアント側で１ブロックの再生に要する時間は共に４タイムスロット分で等しいものとしている。
【００７２】
クライアント側にバッファメモリを持つことによって再生に必要な時間よりも短い時間でブロックの転送を行うことも可能である。例えば図３に示す例では、クライアントは２ブロック以上を格納可能なバッファメモリを持つ場合を示している。この場合、２タイムスロットの時間で転送したデータを４タイムスロットの時間で再生する。
【００７３】
接続要求処理部２１は、通信網６を介してクライアント７からストリーム接続要求を受け取ると、ストリームの連続性を保証することのできる基準スケジュールで予め与えられた制限時間以内に送出開始をスケジュールできるものを選択し、これを基準スケジュール管理部２２に登録し、さらに基準スケジュール管理部２２の管理する基準スケジュールを満たすように、実際の動作スケジュールをスケジュール管理部２４に登録する。
【００７４】
このとき、接続要求処理部２１は、基準スケジュール管理部２２の管理する基準スケジュールの時間的な集中度を小さくするようにストリームの基準スケジュールを選択するようにするのが好ましい。そのためには、例えば、ストリームスケジューリング装置２において、各タイムスロットにおける基準タイムスロットの集中度を表す評価関数を設定し、その値と指定された制限時間に基づいて新しいストリームの基準タイムスロットを選択するようにすれば良い。
【００７５】
各ストリームの残り時間を上記評価関数のパラメータに含めても良い。
【００７６】
なお、接続要求処理部２１は、ストリームの実時間ストリームデータの長さによって制限時間を変更するようにしても良い。また、接続要求処理部２１は、ストリームのアクセス方式によって制限時間を変更するようにしても良い。
【００７７】
データアクセス制御部２５は、スケジュール管理部２２の管理するスケジュールにしたがって、データ記憶装置３に対し、「記憶している実時間ストリームデータをバッファメモリ装置４に読み出す動作」を指示する。
【００７８】
データ転送制御部２６は、スケジュール管理部２４の管理するスケジュールにしたがって、データ転送装置５に対し、「バッファメモリ装置４に読み込まれた実時間ストリームデータを通信網６を介してクライアント７に送出する動作」を指示する。
【００７９】
ここで、図１のようにストリームスケジューリング装置２内にスケジュール更新部２３を設けるのが好ましい。このスケジュール更新部２３は、基準スケジュール管理部２２の管理する各ストリームの基準スケジュールを満たす範囲で、スケジュール管理部２４の管理するスケジュールを変更する。つまり、タイムスロットに割り付けられているディスクアクセスを許容ジッター範囲内の別のタイムスロットに移動させる手段を提供するものである。移動させる方向には、時間的に前方と後方の２種類があり、それぞれの方向への移動手続きを用意する。これらの前方移動、後方移動手続きを利用することにより、選択された許容ジッター範囲内のタイムスロットを解放して新しいストリームのディスクアクセスを割り付けることができる。
【００８０】
なお、スケジュール更新部２３をもたない構成も可能である。
【００８１】
次に、本実施例の動作の概要を説明する。
【００８２】
本実施例の実時間ストリームサーバ１のストリームスケジューリング装置２において、クライアント７から新しいストリームの接続要求がきた時点で、ストリームスケジューリング装置２の接続要求処理部２１は、そのストリームの基準スケジュールを基準タイムスロットとして選択する。このとき、本実施例では上記したごとく、接続後の全ストリームの基準タイムスロットが時間軸上でできる限り分散するように、新しいストリームの基準タイムスロットを選択することとする。ただし、応答時間が指定された制限時間を越えない範囲で基準タイムスロットを選択するようにする。
【００８３】
上記選択操作のために、各タイムスロットにおける基準タイムスロットの集中度を表す評価関数を設定し、基準タイムスロットとして選択すると応答時間が制限時間内を越えない範囲のタイムスロットの集中度評価関数の値を計算する。タイムスロットをその値でソーティングして、集中度の低い順に基準タイムスロットの候補として選択する。応答時間が指定された制限時間を越えない範囲で割り付け可能な基準タイムスロットが存在しなかった場合には、その範囲の直後のタイムスロットから順に基準タイムスロットの候補として選択する。
【００８４】
次に、スケジュール管理部２４の管理するタイムスロットにおいて、選択された許容ジッター範囲内の任意のタイムスロットに新しいストリームのディスクアクセスを割り付けるが、このタイムスロットに異なるストリームのディスクアクセスが既に割り付けられている場合には、ディスクアクセスの前方移動手続き、あるいは後方移動手続きを実行することによって、タイムスロットを空にしてから新しいストリームのディスクアクセスを割り付ける。ただし、どちらの方向への移動も不可能な場合には、そのタイムスロットへのディスクアクセスの割り付けは不可能であるので、許容ジッター範囲内の別のタイムスロットについて同様の処理を行なう。許容ジッター範囲内の全てのタイムスロットへの割り付けが不可能な場合には、基準タイムスロットと許容ジッター範囲を選択し直す。
【００８５】
このように、制限時間以内に空きタイムスロットが存在しない場合でも、ディスクアクセスを移動してタイムスロットを空けることにより、制限時間内に応答できる確率が高くなる。
【００８６】
本実施例の動作としては、上記動作以外に以下の動作も考えられる。接続要求到着時に、読出し中のタイムスロットの次のタイムスロットから順に、空きタイムスロットを探す。このとき、既に割り付けられているタイムスロットに対しては、上記動作と同様に前方移動手続きと後方移動手続きを実行してタイムスロットを空けることが可能かを調べる。空きタイムスロットが見つかったら、新しいストリームのディスクアクセスを割り付ける。
【００８７】
その後、基準タイムスロットとして選択するとディスクアクセスを割り付けたタイムスロットが許容ジッター範囲に含まれるようなタイムスロットを全て抽出する。抽出したタイムスロットの中に基準タイムスロットとして選択すると制限時間内に応答可能となるタイムスロットが存在する場合、それらのタイムスロットの中で前記集中度の最も低いタイムスロットを基準タイムスロットとする。制限時間内に応答可能となるタイムスロットが存在しない場合、抽出したタイムスロットの中で前記集中度の最も応答時間の短くなるタイムスロットを基準タイムスロットとする。
【００８８】
前方移動の場合、読出すブロックを格納してあるディスク装置に対する先頭タイムスロット（カレントヘッドが指すタイムスロット）より前には許容ジッター範囲内であってもディスクアクセスを移動できない。先に述べたように新しいストリームを接続する時には、前記先頭タイムスロット（ヘッド）に近いタイムスロットが選択されるので前方移動より後方移動の方が成功する確率が高い。しかし、後方移動によって遅らせたディスクアクセスを遅らせたままにしておくと、それ以上後方移動できない確率が高くなる。そこで、スケジュール更新部２３は、スケジュール管理部２４の管理するスケジュールを参照し、新しく接続要求があった時点以外でも、常時、各ディスクアクセスを前方に引き戻す処理を行なうようにする。これにより、後方移動が可能である確率を高くすることができる。
【００８９】
ここで、図４，図５に、本発明の方式による接続要求処理の具体例を示す。図４はストリーム４の接続要求時の状態を、図５はストリーム４の接続後の状態を示す。なお、図５中のディスクアクセス等の記述は、図４と同様である。図４，図５ともに、Ｍ＝Ｔ＝８，Ｂ＝２，Ｄ＝１というパラメータで表される実時間ストリームサーバにおいて、ディスク０へのアクセスと、各ストリームのバッファ０の利用タイムチャートを示している。また、０番目のブロックとｎ番目のブロックはディスク０に格納されているとする。図４のようにストリーム４の接続要求時に、現在ディスク０が読み出し中のタイムスロットから４スロット後方にしか空きタイムスロットが存在しない場合でも、図５のように各ストリームの許容ジッター範囲内でディスクアクセスを他のタイムスロットに移動させることにより、待ち時間が最も小さいタイムスロットに新しいストリームのディスクアクセスを割り付けることが可能となる。
【００９０】
図６，図７は、接続要求処理の他の具体例を示したものである。図６はストリーム４の接続要求時の状態を、図７はストリーム４の接続後の状態を示す。なお、図６，７中のディスクアクセス等の記述は、図４，図５と同様である。図４，図５ではタイムスロットを空けることができたが、常に指定したタイムスロットを空けることが可能とは限らない。図６の場合、ストリーム０〜３のディスクアクセスが許容ジッター範囲内でも基準タイムスロットに近いタイムスロットに割り付けられているために、それらのディスクアクセスを他のタイムスロットに移動することが不可能である。したがって、図７のようにストリーム４のディスクアクセスはそれ以降のタイムスロットに割り付けざるを得ない。
【００９１】
図６，図７のような状況をできる限り避けるための、ディスクアクセスの前方引き戻し手続きの具体例を示したのが、図８，図９である。図８，９中のディスクアクセス等の記述は、図４，図５と同様である。図８は、ある時点でのタイムスロットの状態と、ヘッド０の位置を基準にしたバッファ０の使用タイムチャートを示している。図９は、図８の３スロット時間後のタイムスロットの状態と、ヘッド１の位置を基準にしたバッファ１の使用タイムチャートを示している（バッファ利用タイムチャートの時刻は両図で一致していない）。ディスク０へのアクセスを実行したストリーム０，４，１の各ディスクアクセスは、許容ジッター範囲で且つヘッド１より後方のタイムスロットへ移動している。
【００９２】
以下、さらに具体的に本実施例を説明する。
【００９３】
一具体例として、最大接続ストリーム数が２５６である実時間ストリームサーバについて説明する。この実時間ストリームサーバの一構成例を図１０に示す。図１０のストリームスケジューリング装置２の構成は、図１で示したものと同様である。実時間ストリームデータを記憶するディスク装置４２、制御線４０およびデータを読み出すディスク制御装置４３が、図１のデータ記憶装置３に対応する。図中、図１のデータ転送装置５に対応する部分は省略してある。
【００９４】
ここでは、ストリームデータの再生ビットレートＶｂを１ＭＢｐｓ、再生時間１秒分のデータを１ブロックとする。したがって、１ブロックの大きさは１ＭＢとなる。また、ここで使用するディスク装置４２の転送ビットレートＤｂは、２ＭＢｐｓであるとする。すると、１２８台のディスク装置が必要となる。さらに、タイムスロット時間を短縮するために、４台のディスク装置を１台の仮想ディスク装置４１とみなして、１ブロックを４分割してストライピングしておく。したがって、３２台の仮想ディスク装置からそれぞれ１タイムスロットの間に１ブロックが読み出されるとみなして良く（スロットリング上のヘッドは仮想ディスク装置数と等しく３２台となり）、１ストリームのディスクアクセス周期は２５６／３２＝８（タイムスロット）、１スロット時間は１／８（秒／タイムスロット）となる。各ストリームで使用できるバッファメモリ装置４をダブルバッファとすると、全体でバッファメモリは５１２ＭＢ必要となる。
【００９５】
各バッファ４ａ〜４ｃからのクライアント７へのデータ転送ビットレートＴｂを１ＭＢｐｓ、ディスクアクセスの最大遅延時間を１タイムスロット時間とすると最大ジッター数Ｊは式１より、
0003575862.tif 000002
【００９６】
このような構成において、ストリームスケジューリング装置２は、図１１のフローチャートで示すように、１スロット時間に以下の処理を行なう。
１．接続要求処理（ステップＳ１）
２．ディスクアクセスの前方引き戻し処理とヘッドの更新（ステップＳ２，Ｓ３）
３．バッファメモリからクライアントへのデータ転送命令の発行（ステップＳ７）
４．ディスク装置からバッファメモリへの読出し命令の発行（ステップＳ１１）
ここで、図１２（ａ）に、スロットリングの一例を示す。本実施例では、ストリームの連続性を保証するために、（ａ）のように接続可能ストリーム数のタイムスロットを円状に配置したスロットリングを用意して、ディスクアクセスとクライアントへの転送の周期的動作の管理を行なう。スロットリング上には、各ディスク装置に対応するヘッドを、ディスクアクセス周期分の間隔を開けてストライピング番号の逆順で配置する。図１２（ｂ）〜（ｄ）に、タイムスロット構造体、ストリーム構造体、ディスクアクセス構造体およびデータ転送構造体の一例をそれぞれ示す。（ｂ）のように、タイムスロット構造体は、ディスクアクセス構造体ｉｄとデータ転送構造体ｉｄを持つ。（ｃ）のように、各ストリームは、ディスクアクセスとバッファからのデータ転送に関するパラメータを持つ。（ｄ）のように、ディスクアクセスに関しては、基準タイムスロットと許容ジッター範囲、次にディスクから読出すべきブロック（カレントブロック）の番号、そのブロックを格納しているディスク装置に対応したヘッド（カレントヘッド）の番号の値を保持している。また、（ｅ）のように、バッファからのデータ転送に関しては、転送タイムスロット、次にバッファから転送すべきブロック（転送カレントブロック）の番号、そのブロックを格納しているディスク装置に対応したヘッド（転送カレントヘッド）の番号の値を保持している。複数のディスクアクセスを同じタイムスロットに割り付けることはできないが、複数のストリームが同じタイムスロットを基準タイムスロットとすることは許される。同様に、同じタイムスロットを転送タイムスロットとすることも許される。
【００９７】
さて、図１２（ａ）のスロットリング上の各ヘッドは、１スロット時間毎に次のタイムスロット上へ移動する。その結果、特定のディスクへのアクセス周期で、スロットリングを１周する。
【００９８】
図１１のように、接続要求処理（ステップＳ１）を行ない、ディスクアクセスの前方引き戻し処理（ステップＳ２）を行ない、全てのヘッドを次のスロットへ移動させ（ステップＳ３）、その後、各ヘッドｉが指すタイムスロットＴＳｉについて、以下の▲１▼と▲２▼の処理を繰返す（ステップＳ４）。
【００９９】
▲１▼移動後のヘッドが指すタイムスロットＴＳｉにディスクアクセスが割り付けられており、かつ、そのヘッド番号がカレントヘッド番号と一致した場合に（ステップＳ５，Ｓ６）、ディスクアクセス命令を発行して、そのディスクアクセスを実行する（ステップＳ７）。そして、そのディスクアクセス構造体のカレントブロック番号とカレントヘッド番号を更新する（ステップＳ５〜Ｓ８）。
【０１００】
▲２▼タイムスロットＴＳｉに割り付けられた全ての構造体について、移動後のヘッドが指すタイムスロットにデータ転送が割り付けられており、かつ、そのヘッド番号が転送カレントヘッド番号と一致した場合、データ転送命令を発行して、そのデータ転送を実行する（ステップＳ９〜Ｓ１１）。そして、そのデータ転送構造体の転送カレントブロック番号と転送カレントヘッド番号を更新する（ステップＳ１２）。
【０１０１】
ところで、ディスク装置には、シーク距離の違い等が原因で転送速度に一定の分散があるので、ディスクアクセス終了時刻が、割り付けられたタイムスロットの終了時刻を越えてしまうことが有り得る。そこで、各ストリームの連続性を保証するために、基準タイムスロットの直後にディスクアクセスの遅延を吸収する時間をあけて、転送タイムスロットを設定すると良い。この実施例では、０．１２５秒間、つまり１スロット時間の待ち時間を基準タイムスロットと転送タイムスロットの間に入れている（図２〜図９参照）。
【０１０２】
また、サーバとクライアント間のネットワーク遅延の分散を吸収するために、２ブロック以降の転送を１スロット時間早く行なっても良い。具体的には、１ブロックの転送後に転送タイムスロットを１スロット前のタイムスロットに設定し直す。この場合、クライアント側には、２ブロックを同時に格納可能なバッファメモリ（つまりダブルバッファ）を用意しておく。
【０１０３】
次に、本実施例の接続要求処理について説明する。図１３に、接続要求処理のフローチャートを示す。
【０１０４】
クライアント７からの接続要求が到着すると、その要求は一旦待ち行列に入れられる。ストリームスケジューリング装置２は、次のタイムスロットの開始時に待ち行列内の要求を取り出して、各接続要求に対して以下の処理を行なう。
【０１０５】
ストリームスケジューリング装置２は、全タイムスロットの中から、新しいストリームの基準タイムスロットとして選択すると接続要求到着時刻から最初のブロックの転送開始時刻までの時間が指定された制限時間を越えないタイムスロットを抽出し、それらのタイムスロットを基準タイムスロット集中度でソーティングする（ステップＳ２２〜Ｓ２５）。そして、集中度の低いタイムスロットから順に基準タイムスロット候補とする（ステップＳ２６）。
【０１０６】
ここでは、各タイムスロットにおける基準タイムスロットの集中度を表す評価関数ｆ（ｘ）を、以下のように定義する。
ｆ（ｘ）＝Σ（Ｒ−ｄｉｓｔａｎｃｅ（ｘ，ｄ））ｎ            …（式２）
ただし、総和をとる条件は、｛ｄ｜ｄｉｓｔａｎｃｅ（ｘ，ｄ）≦Ｒ｝である。
【０１０７】
ここで、ｘはタイムスロット、ｄは接続中のストリームの基準タイムスロットを表し、ｄｉｓｔａｎｃｅ（ｘ，ｄ）はスロットリング上でのｘとｄの最短タイムスロット間隔を表す。Ｒは、あるディスクアクセスが集中度の値に影響を及ぼす範囲を表す。Ｒを最大ストリーム数／２とすることで、影響を及ぼす範囲が全タイムスロットになる。Ｒを０とすることで、集中度を用いたスケジューリングを行なわなくなる。
【０１０８】
ここで、上記の手続きで用いられる制限時間を、接続要求の種類に応じて変化させることも可能である。例えば、映画の再生の要求では制限時間を長く設定したり、多数のストリームデータの検索を行なう場合には制限時間を短く設定できる。あるいは、同一データの特殊再生の要求に対して、制限時間を最短に設定することも考えられる。
【０１０９】
また、集中度評価関数の影響範囲Ｒを、各ストリームの残り再生時間に応じて変化させることが可能である。残り再生時間が長いと予想されるストリームの基準タイムスロットは、以降のスロットリングの集中度への影響が長く続くと考えられるので、影響範囲Ｒの値を大きくする。逆に、残り再生時間が短いストリームのＲを小さくする。
【０１１０】
ここでは、集中度評価関数のパラメータＲとｎをそれぞれ１２８と２に設定する。
【０１１１】
上記の手続きで選んだ基準タイムスロット候補において、その候補で決定される許容ジッター範囲内にあり、かつ、カレントヘッドより後方にあるタイムスロットに、ディスクアクセスが割り付け可能かどうかを調べる（ステップＳ２７）。
【０１１２】
このとき、よりカレントヘッドに近いタイムスロットから順に選択して調べる。図１４にディスクアクセス割り付けるタイムスロットを探す処理のフローチャートを示す。
【０１１３】
選択したタイムスロットが空きタイムスロットの場合には、割り付け可能である（ステップＳ３３，Ｓ３８）。
【０１１４】
選択したタイムスロットに既に別のディスクアクセスが割り付けられている場合には、そのディスクアクセスに対して前方移動手続きを行なう（ステップＳ３３，Ｓ３４，Ｓ３５，Ｓ３８）。
【０１１５】
前方移動が不可能な場合には、後方移動手続きを実行する（ステップＳ３３，Ｓ３４，Ｓ３５，Ｓ３６，Ｓ３７，Ｓ３８）。
【０１１６】
どちらの方向にも移動が不可能な場合には、そのタイムスロットには割り付け不可能とみなして、別のタイムスロットを選択する。
【０１１７】
割り付け可能であった場合、ディスクアクセスをタイムスロットに割り付け（図１３のステップＳ２９）、データ転送を転送タイムスロットに割り付ける（ステップＳ３０）。
【０１１８】
選択可能な全てのタイムスロットでディスクアクセスの割り付けが不可能な場合には、その基準タイムスロットでのスケジューリングが不可能であるとみなして（図１４のステップＳ３９）、次に集中度の低いタイムスロットを基準タイムスロット候補としてディスクアクセス割り付け可能性を調べる（図１３のステップＳ２８，Ｓ２６，Ｓ２７）。
【０１１９】
上記のようにディスクアクセスを移動させるには、移動先のタイムスロットを見つける必要がある。許容ジッター範囲内に移動させる空きタイムスロットが存在する場合には、そのタイムスロットに移動させればよい。しかし、空きタイムスロットが存在しない場合でも、許容ジッター範囲内のタイムスロットに割り付けられている他のディスクアクセスを許容ジッター範囲外へ移動させることが可能であれば、最初に指定したディスクアクセスを移動してタイムスロットを空けることが可能となる。
【０１２０】
図１５に後方移動手続きのフローチャートを示す。また、図１６に前方移動手続きのフローチャートを示す。
【０１２１】
後方移動手続きでは、スロットリング上で連続したディスクアクセス群をまとめて１タイムスロット後方にずらす方法をとる。ずらす対象となるディスクアクセス群の中に、１タイムスロット後方にずらすと許容ジッター範囲を越えるディスクアクセスＤＡａが含まれる場合には（ステップＳ４４）、その許容ジッター範囲内に存在して、かつ、より後方に許容ジッター範囲をもつ他のディスクアクセスを探す（ステップＳ４５〜Ｓ４７）。そのようなディスクアクセスＤＡｂが見つかればＤＡａとＤＡｂを交換することで（ステップＳ４８）、連続したディスクアクセス群の１タイムスロット分の後方移動が可能となる（ステップＳ５０）。見つからない場合には最初のディスクアクセスの後方移動を不可能とみなす（ステップＳ４９）。
【０１２２】
前方移動手続きも同様に、スロットリング上で連続したディスクアクセス群をまとめて１タイムスロット前方にずらす方法をとる。ずらす対象となるディスクアクセス群の中に、１タイムスロット前方にずらすと許容ジッター範囲を越えるディスクアクセスＤＡｃが含まれる場合には（ステップＳ５４）、その許容ジッター範囲内に存在して、かつ、より前方に許容ジッター範囲をもつ他のディスクアクセスを探す（ステップＳ５５〜Ｓ５８）。そのようなディスクアクセスＤＡｄが見つかればＤＡｃとＤＡｄを交換することで（ステップＳ５９）、連続したディスクアクセス群の１タイムスロット分の前方移動が可能となる（ステップＳ６１）。見つからない場合には最初のディスクアクセスの前方移動を不可能とみなす（ステップＳ６０）。
【０１２３】
ストリームスケジューリング装置２では、接続要求の処理で後方移動したディスクアクセスの前方引き戻し処理を、１スロット時間毎に行なう。この実施例では、ヘッドが指すタイムスロットに割り付けられているディスクアクセスを前方引き戻し処理の対象にする。
【０１２４】
図１７に、前方引き戻し処理の例を示す。（ａ）は動作前の状態、（ｂ）はＤＡｆが前方移動可能な場合の結果、（ｃ）はＤＡｆが前方移動不可能で、ＤＡｇとＤＡｈが後方移動可能な場合の結果である。
【０１２５】
許容ジッター範囲内にあり、引き戻し対象のディスクアクセスＤＡｅが割り付けられているタイムスロット（図中ＴＳ７）より前方、かつ、ＤＡｅのカレントヘッドより後方のタイムスロットが、ＤＡｅを引き戻した後に割り付けるタイムスロットの候補である。これらの候補に割り付けられているディスクアクセスの中で、ＤＡｅの基準タイムスロットよりも前方の基準タイムスロットを持つディスクアクセスＤＡｆを探す。ＤＡｆが存在した場合には、ＤＡｆを前方移動して空いたタイムスロット（図中ＴＳ２）にＤＡｅを移動させる。前方移動が不可能な場合には、ＤＡｆの次のタイムスロット（図中ＴＳ３）を後方移動手続きにより解放して、その空きタイムスロット（図中ＴＳ３）にＤＡｅを移動させる。ＤＡｆが存在しない場合には、割り付け候補のタイムスロットの中で最も前方のタイムスロットを後方移動手続きにより解放して、その空きタイムスロットにＤＡｅを移動させる。
【０１２６】
ここで、以上のように動作するストリームスケジューリング装置２を、図１０の実時間ストリームサーバで動作させた場合、接続要求に対する応答時間は以下のようになる。
【０１２７】
一例として、再生時間６０秒の実時間データを３２個用意し、実時間毎に異なるヘッドをストライピングの先頭ヘッドとしてディスクに格納されていると仮定し、クライアントは２５６個存在し、制限時間は１．１２５秒とする。この条件の下で平均接続ストリーム数ｉ×８（ｉ＝１６，１７，…，３２）となるように各クライアントの平均要求間隔を設定してｉの値毎に１０分間動作させた場合の平均応答時間を測定した。図１８は、従来の手法（集中度の影響範囲Ｒ＝０，最大ジッター数Ｊ＝０）でスケジューリングした場合の平均接続ストリーム数Ｙの時点で到着した接続要求の応答時間Ｘのヒストグラムである。図１９は、本実施例の手法（集中度の影響範囲Ｒ＝１２８，最大ジッター数Ｊ＝６）でスケジューリングした場合の平均接続ストリーム数Ｙの時点で到着した接続要求の応答時間Ｘのヒストグラムである。
【０１２８】
従来に比べると、本実施例では、応答時間が制限時間を越える確率が格段に小さくなっていることが分かる。
【０１２９】
次に、各ストリームで使用できるバッファメモリの量を上記の例の２倍に増やした場合について示す。この場合、バッファメモリは１ＧＢ必要となる。バッファからのクライアントへのデータ転送ビットレートＴｂを２ＭＢｐｓ、ディスクアクセスの最大遅延時間を１スロット時間とすると、最大ジッター数Ｊは式１より、
0003575862.tif 000003
図２０は、集中度の影響範囲Ｒ＝１２８、最大ジッター数Ｊ＝２６である場合に、上記と同様の条件で測定した応答時間Ｘの例である。
【０１３０】
上記の例と比較して最大ジッター数が大きくなったことで、応答時間が制限時間を越える確率がより小さくなっている。最大接続ストリーム数２４０程度で運用すれば、ほぼ制限時間以内で応答できる。
【０１３１】
以上のように、本実施例によれば、接続要求時のカレントヘッドの位置がスロットリング上で集中して偏りが存在しても、ストリームの連続性を保証しつつ、指定された制限時間と最大ジッター数に応じてその偏りを解消できる。
【０１３２】
したがって、同時に多数のストリームをサービスしても、指定された制限時間内に応答可能となるようにディスクアクセスを割り付けるタイムスロットが見つかる確率を高くすることができる。よって、制限時間内で応答可能な確率が高くなる。
【０１３３】
また、本発明は上述した各実施例に限定されるものではなく、その要旨を逸脱しない範囲で、種々変形して実施することができる。
【０１３４】
【発明の効果】
本発明によれば、まず、ストリームの連続性を保証することのできる読出しおよび送出しの基準となる固定的なタイミングを決定し、次に、このタイミングを起点として実際に行なう読出しの（変更可能な）タイミングを決定するようにした。
【０１３５】
したがって、最も近い空きタイムスロットよりもさらに以前の割当て済みのタイムスロットを空きタイムスロットに変えて、新規のストリームに割付けることができ、従来よりも応答時間を短縮することができる。
【０１３６】
また、応答時間に制限時間を設ける場合、指定された制限時間内に応答可能となるように読出しのタイミングを割り付けるタイムスロットが見つかる確率を高くすることができ、制限時間内で応答可能な確率を高くすることができる。
【０１３７】
また、本発明によれば、空きタイムスロットあるいは空きにできるタイムスロットを時間的に偏りなく分散させることができ、新規のストリームの要求を受けた時点から短時間の位置に空きタイムスロットが存在する確率を高くすることができる。
【０１３８】
したがって、応答時間に制限時間を設ける場合、指定された制限時間内に応答可能となるように読出しのタイミングを割り付けるタイムスロットが見つかる確率を高くすることができ、制限時間内で応答可能な確率を高くすることができる。
【図面の簡単な説明】
【図１】本発明の一実施例に係るストリームスケジューリング装置の構成およびそれを用いる実時間ストリームサーバの構成を示す図
【図２】バッファメモリの使用状況を示すタイムチャートおよびその使用状況から決定される許容ジッター範囲の一例を示す図
【図３】バッファメモリの使用状況を示したタイムチャートおよびその使用状況から決定される許容ジッター範囲の他の例を示す図
【図４】接続要求処理を説明するための図
【図５】接続要求処理を説明するための図
【図６】接続要求処理を説明するための図
【図７】接続要求処理を説明するための図
【図８】前方引き戻し処理を説明するための図
【図９】前方引き戻し処理を説明するための図
【図１０】実時間ストリームサーバの構成のより具体的な例を示す図
【図１１】ディスクアクセス命令とデータ転送命令発行の手順を示すフローチャート
【図１２】スロットリングとヘッドの構成の一例を示す図
【図１３】接続要求処理の手順を示すフローチャート
【図１４】ディスクアクセス割り付けるタイムスロットを探す処理の手順を示すフローチャート
【図１５】後方移動処理の手順を示すフローチャート
【図１６】前方移動処理の手順を示すフローチャート
【図１７】前方引き戻し処理の動作例を説明するための図
【図１８】従来の方式でストリームをスケジューリングした場合の接続要求の応答時間のヒストグラム
【図１９】本実施例の方式でストリームをスケジューリングした場合の接続要求の応答時間のヒストグラム
【図２０】本実施例の方式でストリームをスケジューリングした場合の接続要求の応答時間の他のヒストグラム
【図２１】従来のタイムスロットを用いた多重読み出し手法を示す図
【図２２】従来の複数ディスクにデータをストライピングした場合の多重読み出し手法を示す図
【図２３】従来の複数ディスクにデータをストライピングした場合の多重読み出し手法を示す他の図
【図２４】接続要求から最初のブロック転送開始までの応答時間を示す図
【符号の説明】
１…実時間ストリームサーバ、２…ストリームスケジューリング装置、３…データ記憶装置、４…バッファメモリ装置、５…データ転送装置、６…通信網、７…クライアント、２１…接続要求処理部、２２…基準スケジュール管理部、２３…スケジュール更新部、２４…スケジュール管理部、２５…データアクセス制御部、２６…データ転送制御部、３１…基準スケジュール情報、３２…スケジュール情報
【図１】
0003575862.tif 000004
【図２】
0003575862.tif 000005
【図３】
0003575862.tif 000006
【図４】
0003575862.tif 000007
【図５】
0003575862.tif 000008
【図６】
0003575862.tif 000009
【図７】
0003575862.tif 000010
【図８】
0003575862.tif 000011
【図９】
0003575862.tif 000012
【図１０】
0003575862.tif 000013
【図１１】
0003575862.tif 000014
【図１２】
0003575862.tif 000015
【図１３】
0003575862.tif 000016
【図１４】
0003575862.tif 000017
【図１５】
0003575862.tif 000018
【図１６】
0003575862.tif 000019
【図１７】
0003575862.tif 000020
【図１８】
0003575862.tif 000021
【図１９】
0003575862.tif 000022
【図２０】
0003575862.tif 000023
【図２１】
0003575862.tif 000024
【図２２】
0003575862.tif 000025
【図２３】
0003575862.tif 000026
【図２４】
0003575862.tif 000027