(57)【特許請求の範囲】
【請求項１】
記録媒体への複数のアクセス要求を処理するアクセス制御装置であって、 データの転送レートの変化に応じてアクセス処理の終了期限を決定し、該終了期限の早い順に前記複数のアクセス要求の実行スケジュールを設定するスケジューリング手段と、
前記実行スケジュールに従って前記複数のアクセス要求の実行を制御する制御手段と
を備え、
前記スケジューリング手段は、前記記録媒体からデータを読み出す要求に対して、読み出しデータの書き込み時の終了期限に関する情報に基づいて、読み出し処理の終了期限を決定することを特徴とするアクセス制御装置。
【請求項２】
前記制御手段は、前記記録媒体へのデータ書き込む要求を受け付けた場合、送られてきたデータのうちダミーデータを除く有効データのみ、書き込みデータとしてバッファリングするバッファ手段を含み、前記スケジューリング手段は、該バッファ手段が該有効データを所定領域にバッファリングするのに要する時間に基づいて、書き込み処理の終了期限を決定することを特徴とする請求項１記載のアクセス制御装置。
【請求項３】
前記制御手段は、前記書き込み処理の終了期限に関する情報を、前記書き込みデータと共に記録媒体に書き込む制御を行うことを特徴とする請求項２記載のアクセス制御装置。
【請求項４】
前記制御手段は、前記記録媒体からデータを読み出す要求を受け付けた際、読み出しデータの書き込み時におけるダミーデータと有効データの転送順序に従って、該読み出しデータにダミーデータを付加して送り出す制御を行うことを特徴とする請求項２記載のアクセス制御装置。
【請求項５】
記録媒体への複数のアクセス要求を処理するアクセス制御方法であって、 データの転送レートの変化に応じてアクセス処理の終了期限を決定し、
前記終了期限の早い順に前記複数のアクセス要求の実行スケジュールを設定するとともに、前記記録媒体からデータを読み出す要求に対して、読み出しデータの書き込み時の終了期限に関する情報に基づいて、読み出し処理の終了期限を決定し、
前記実行スケジュールに従って前記複数のアクセス要求の実行を制御する
ことを特徴とするアクセス制御方法。
【請求項６】
記録媒体への複数のアクセス要求を処理する処理装置のためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
データの転送レートの変化に応じてアクセス処理の終了期限を決定するステップと、
前記終了期限の早い順に前記複数のアクセス要求の実行スケジュールを設定するとともに、前記記録媒体からデータを読み出す要求に対して、読み出しデータの書き込み時の終了期限に関する情報に基づいて、読み出し処理の終了期限を決定するステップと、
前記実行スケジュールに従って前記複数のアクセス要求の実行を制御するステップと
を含む処理を前記コンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
技術分野
本発明は、複数チャンネルのデータを同時に記録／再生するために、記録媒体へのアクセスを制御するアクセス制御装置およびその方法に関する。
【０００２】
背景技術
近年、マイクロコンピュータやＭＰＥＧ２（Ｍｏｖｉｎｇ Ｐｉｃｔｕｒｅ Ｅｘｐｅｒｔｓ Ｇｒｏｕｐ ｐｈａｓｅ ２）等の動画符号化／復号化ＬＳＩ（Ｌａｒｇｅ Ｓｃａｌｅ Ｉｎｔｅｇｒａｔｉｏｎ）の発展に伴い、映像のデジタル化が飛躍的に進み、その結果として、２０世紀から２１世紀に向けて、テレビジョン放送がアナログからデジタルへ急激に変化しようとしている。また、ＢＳ（Ｂｒｏａｄｃａｓｔｉｎｇ Ｓａｔｅｌｌｉｔｅ）、ＣＳ（Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ Ｓａｔｅｌｌｉｔｅ）等を利用した衛星放送では数１００チャンネルのプログラムを用意し、視聴者の多様化に応えようとしている。
【０００３】
放送のデジタル化および多チャンネル化が進むにつれて、安価なセットトップボックス（ＳＴＢ）やデジタルＴＶ（Ｔｅｌｅｖｉｓｉｏｎ）の開発等とあいまって、家庭にもデジタルの映像データを大量に取り込む時代が来ようとしており、記憶装置（ストレージデバイス）にデータを蓄積する機会が増えると考えられる。
【０００４】
このような大容量の映像データを蓄積することを主な目的として、ハードディスクや光ディスク等の大容量ストレージデバイスの開発が活発に行われている。例えば、ＭＰＥＧ２を用いた場合、２時間程度の映像データを数ＧＢに圧縮して蓄積することができる。
【０００５】
このようなストレージデバイスでは、コンピュータの入出力システムとして求められるスループットの他に、新たにリアルタイム性が要求されることになる。そのような状況の中で、現在、ＳＴＢ、ストレージデバイス、プリンタ、およびＴＶ等のディスプレイ装置を結ぶホームネットワークを実現するインタフェースとして最も期待されているインタフェースに、ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ ｏｆ Ｅｌｅｃｔｒｉｃａｌ ａｎｄ Ｅｌｅｃｔｒｏｎｉｃ Ｅｎｇｉｎｅｅｒｓ）１３９４と呼ばれる高速のシリアルインタフェースがある。
【０００６】
ＩＥＥＥ１３９４では、音声や映像等のデータをリアルタイムで転送するために、同期（Ｉｓｏｃｈｒｏｎｏｕｓ）転送という独自の転送モードを持っており、一定の転送レートでデータを送ることを保証している。したがって、ＩＥＥＥ１３９４を介して映像データをストレージデバイスに記録したり、ストレージデバイスから映像データを再生したりする場合は、この同期転送に基づき、リアルタイム要求に応えなければならない。
【０００７】
また、多チャンネル化により、同時（正確には時系列）に複数のチャンネルのデータを取り込む状況が想定される。したがって、リアルタイム要求を満たしつつ、どれだけ多くのチャンネルのデータを効率よく同時に記録／再生できるかが鍵となる。
【０００８】
ところが、ストレージデバイスの場合、データ転送の他に、シーク待ち、回転待ち、ベリファイ、リトライ等の時間ファクタが存在する。シーク待ちは、ディスクヘッドが所望のトラックまで移動するための時間を表す。回転待ちは、ディスクヘッドの下部に所望のセクタの先頭が現れるまでのディスクの回転時間を表す。ベリファイは、書き込みデータの確認処理を表し、リトライは、アクセスが失敗した場合の再アクセスを表す。
【０００９】
これらの時間ファクタは、ある期限までに処理を終了してスケジュールを守るというリアルタイム処理の妨げとなっている。そこで、従来は、効率よくディスクをアクセスするために、ディスクスケジューリングによりデータのリード／ライトの実行の順序や、データの記録・読み出し場所を制御している。
【００１０】
従来のスケジューリングアルゴリズムとしては、次のようなものが挙げられる（Ａ．Ｌ．Ｎ．Ｒｅｄｄｙ ａｎｄ Ｊ．Ｃ．Ｗｙｌｌｉｅ，“Ｉ／Ｏ Ｉｓｓｕｅｓ ｉｎ ａ Ｍｕｌｔｉｍｅｄｉａ Ｓｙｓｔｅｍ”，Ｃｏｍｐｕｔｅｒ，２７，Ｍａｒ，ｐｐ．６９−７４，１９９４．）。
【００１１】
（１）ＥＤＦ（Ｅａｒｌｉｅｓｔ Ｄｅａｄｌｉｎｅ Ｆｉｒｓｔ）：終了期限（ｄｅａｄｌｉｎｅ）が最も迫っている処理を優先する方法。
（２）ＬＳＴＦ（Ｌｅａｓｔ Ｓｌａｃｋ Ｔｉｍｅ Ｆｉｒｓｔ）：時間の余裕が最も少ない処理を優先する方法。
（３）ＳＳＴＦ（Ｓｈｏｒｔｅｓｔ Ｓｅｅｋ Ｔｉｍｅ Ｆｉｒｓｔ）：シーク時間が最短の処理を優先する方法。
（４）ＳＣＡＮ：シーク方向が同じでかつシーク時間が最短の処理を優先する方法。
（５）ＳＣＡＮ−ＥＤＦ：まず、終了期限を優先し、同じ期限の場合は、ＳＣＡＮを採用する方法。
【００１２】
これらのアルゴリズムのうち、（１）と（２）は、時間の要素のみを考慮しており、ディスクアクセスの効率化（シーク時間の短縮）を考慮していない。逆に、（３）と（４）は、ディスクアクセスの効率化の要素のみを考慮しており、時間の要素を考慮していないため、リアルタイム処理に適さない。したがって、時間とディスクアクセスの効率化の両方を考慮している（５）のアルゴリズムが、現在では一般的に使用されている。
【００１３】
図１は、このようなＥＤＦおよびＳＣＡＮによるディスクスケジューリングの概念を示している。ここでは、時分割で４つのチャンネルの映像データがディスク１内を流れると仮定している。４つのチャンネルＣｈ１、Ｃｈ２、Ｃｈ３、およびＣｈ４のうち、Ｃｈ１、Ｃｈ２、およびＣｈ３については、送られてきた映像データをディスク１に書き込む処理（Ｗｒｉｔｅ）が行われ、Ｃｈ４については、ディスク１から映像データを読み出す処理（Ｒｅａｄ）が行われる。
【００１４】
従来のスケジューリングの用途としては再生（プレイバック）が多く、書き込みの同時性はほとんど考慮されていない。したがって、各チャンネルの映像データは、読み出し易いようにシーケンシャルに固まって集中しており、各チャンネルのアドレスポイントは分散される場合が多い。ここでは、ディスク１上で各チャンネルのデータの書き込み／読み出し位置を表すアドレスポイントは、右端に示すように、ディスク１の外周から内周に向かってＣｈ１、Ｃｈ３、Ｃｈ４、Ｃｈ２の順に分散されている。
【００１５】
Ｗｒｉｔｅ処理の場合は、まず、送られてきた映像データを一時ダブルバッファ（バッファメモリ）２の片方のバッファに蓄積する。次に、次の映像データをダブルバッファ２の他方のバッファに蓄積している間に、最初に蓄積された映像データをディスク１に書き込む処理を終了しなければならない。例えば、Ｃｈ１では、周期（ｒｏｕｎｄ）Ｔの間に、データＷ１２がダブルバッファ２に蓄積され、データＷ１１がダブルバッファ２からディスク１に書き込まれなければならない。Ｃｈ２とＣｈ３についても同様である。
【００１６】
また、Ｒｅａｄ処理の場合は、まず、映像データをディスク１から読み出し、一時ダブルバッファ２の片方のバッファに蓄積する。次に、その蓄積された映像データを送り出している間に、次の映像データをディスク１から先読みして、ダブルバッファの他方のバッファに蓄積する処理を終了しなければならない。例えば、Ｃｈ４では、周期Ｔの間に、データＲ４２をダブルバッファ２から送り出している間に、次のデータＲ４３がディスク１からダブルバッファ２に読み出されなければならない。
【００１７】
図１では、時系列的にＣｈ１、Ｃｈ２、Ｃｈ３、Ｃｈ４の順でディスクアクセスが要求されるため、終了期限も同じ順に設定される。したがって、ＥＤＦを採用した場合、ディスク１は、Ｃｈ１、Ｃｈ２、Ｃｈ３、Ｃｈ４、Ｃｈ１、Ｃｈ２、Ｃｈ３、Ｃｈ４、．．．の順にアクセスされる。
【００１８】
しかし、各チャンネルＣｈ１〜Ｃｈ４のアドレスポイントが異なる順に配置されているため、チャンネル間のシーク距離が長く、ヘッドが移動するのに時間がかかる。特に、Ｃｈ１とＣｈ２のアドレスポイントは大きく離れており、Ｃｈ１の書き込みからＣｈ２の書き込みまでに時間がかかる。
【００１９】
また、ＳＣＡＮを採用した場合、アクセス要求の順に関係なく、ヘッドの位置からシーク相対距離が短い順に、Ｃｈ１、Ｃｈ３、Ｃｈ４、Ｃｈ２のようにアクセスされ、ここでシーク方向が逆になって、さらにＣｈ２、Ｃｈ４、Ｃｈ３、Ｃｈ１、．．．の順でアクセスされる。この場合、アクセス要求の順序に対して、Ｃｈ１の書き込みは、ある周期では最初に処理され、次の周期では最後に処理されるため、Ｃｈ１の場合、アクセス時間間隔が空きすぎてアクセス要求を満たせなくなることがある。このような場合、アクセス要求を満たすためには、バッファ２をより大きくする必要がある。
【００２０】
これに対して、（５）のＳＣＡＮ−ＥＤＦは、ＥＤＦとＳＣＡＮを混在させた方法であり、シーク時間とアクセス要求の順序の両方を考慮したスケジューリングを行うことができる。
【００２１】
しかしながら、上述した従来のディスクスケジューリングには、次のような問題がある。
従来のスケジューリングでは、ストレージデバイスが映像データを一定レートで受け取り、一定レートで送り出すことを仮定している。例えば、図２は、６つのチャンネルＣｈ１〜Ｃｈ６の映像データが、それぞれ、一定の帯域（ビットレート）でストレージデバイスに入力される様子を示している。ここで、１トランスポンダは、衛星放送における１回線の容量に対応する。
【００２２】
このような仮定の下では、各チャンネルＣｈ１〜Ｃｈ６の書き込み／読み出しの終了期限は周期的に訪れると考えられ、終了期限は最初に決められた周期情報に基づいて設定される傾向にある。
【００２３】
ところが、デジタル放送等で流れる映像データは、図３に示すように、統計多重化されており、転送レートは必ずしも一定ではない。この場合、１トランスポンダのレートは一定だが、各チャンネルのＭＰＥＧ２の符号化データの転送レートは画像の動きの激しさに応じて変化し、これにより効率の良い放送が実現される。
【００２４】
ところで、ＩＥＥＥ１３９４上の同期転送によりパケット転送を行う場合、通常、パケット内に転送すべきデータを含ませる。しかし、このような可変レートで送られてくる映像データでは、レートが変わったりしてデータが揃わない場合に、データを含まないダミー・パケットを転送して、転送の時間保証を継続している（ＩＥＣ（Ｉｎｔｅｒｎａｔｉｏｎａｌ Ｅｌｅｃｔｒｏｔｅｃｈｎｉｃａｌ Ｃｏｍｍｉｓｓｉｏｎ）１８６６３およびＩＥＥＥ１３９４−１９９５に準拠）。
【００２５】
図４は、このようなパケット転送の手順を示している。ここでは、１８８バイトのトランスポート・パケット３に４バイトのタイム・スタンプＴが付加されて、１９２バイトのパケットが生成され、それが２４バイト単位のデータ・ブロックに分割される。そして、４つ（他の整数でもよい）のデータ・ブロックが１つのデータ・ブロック・パケット４にまとめられ、同期転送パケットとして転送される。
【００２６】
データ・ブロック・パケット４には、ＩＥＥＥ１３９４のヘッダＨとマルチメディアデータ用のＣＩＰ（Ｃｏｍｍｏｎ Ｉｓｏｃｈｒｏｎｏｕｓ Ｐａｃｋｅｔ）ヘッダとが付加される。ＣＩＰヘッダには、データ・ブロックの分割方法が定義されており、受信ノードは、この情報に基づいてトランスポート・パケット３を再構築することができる。
１２５μｓ毎に１つのサイクル・スタート・パケットＳと１つのデータ・ブロック・パケット４が転送されるが、データ・ブロック・パケット４がないときは、ＣＩＰヘッダのみのダミー・パケット５が同期転送パケットとして転送される。
このような状況で従来のような終了期限を設定すると、同期転送パケットが全てデータ・ブロック・パケット４を含む場合の最大転送レートに合わせて、実際よりも厳しい（早い）終了期限を定義することとなり、より多数のチャンネルを処理できなくなるという問題がある。
【００２７】
また、上述した（１）〜（５）のスケジューリングは、いずれもプレイバックを主な適用対象としており、ディスク上の書き込み場所を規定しておらず、個々の映像データはディスク上に分散して記録されていると仮定している。したがって、多数のチャンネルを処理する場合、長いシーク時間がかかることが多く、好ましくない。
また、現在のディスクは、高密度の特徴を活かして複数のゾーン（トラックの集合）に分割し、ディスクの回転制御方式として、ＺＣＡＶ（Ｚｏｎｅ Ｃｏｎｓｔａｎｔ Ａｎｇｕｌａｒ Ｖｅｌｏｃｉｔｙ）を採用することにより、同じ回転数でも外周のゾーンの転送レートを内周のゾーンより速くすることで、記憶容量を大きくしている。最内周の転送レートは、例えば、最外周のそれの６０％程度である。
【００２８】
ところが、従来のスケジューリングでは、このような複数のゾーンの存在を考慮しておらず、ディスク上にはデータが内周と外周に一様に分布し、データ量も転送レートも、内周と外周で共に一定であると仮定している。このため、特に内周部分に転送レートの高いデータが集中して書き込まれた場合には処理効率が悪くなり、多数のチャンネルの処理に適さないという問題もあった。
【００２９】
ところで、最近、主に映像データの蓄積を目的とした光ディスクとしてＡＳＭＯ（Ａｄｖａｎｃｅｄ Ｓｔｏｒａｇｅ Ｍａｎａｇｅｍｅｎｔ Ｏｐｔｏｃａｌ ｄｉｓｃ）が検討されている。ＡＳＭＯは、磁界変調方式の光磁気ディスクであり、直径１２０ｍｍ の大きさで片面当たり最大６．１ＧＢ（ギガバイト）の容量を持つ。
【００３０】
図５にＡＳＭＯの構成を示す。
同図に示すように、ＡＳＭＯでは、ランド（山）１１とグループ（谷）１２の両方にデータを高密度記録するランド・グループ記録方式により大容量化を図っている。ランド１１とグループ１２のピッチは０．６マイクロメートルとなっている。また、ディスクのデータ記録領域（ｒｅｃｏｒｄｉｎｇ ａｒｅａ）１３の厚さは０．６ｍｍである。また、この例では、記録領域１３は、２２個の物理ゾーンに分割されている。すなわち、１つのディスクに２２個の物理ゾーンが形成されている。１つの物理ゾーンは、数千トラックを有する。また、トラックはディスク上に螺旋状に形成されている。
また、さらに、ディスクをドライブ装置に固定するための仕組み（チャッキング機構）をＣＤやＤＶＤと兼用できるようにするため、ディスクのデータが記録されていない中心部（クランプ部）１７の厚さは１．２ｍｍにしてある。
【００３１】
各物理ゾーンには、ディスクの径方向に所定数のトラックが設けられている。そして、各トラックは、１以上のフレーム１４に分割されている。フレーム１４は、複数のセグメントに分割されており、通常、先頭のセグメントをアドレスセグメント（ＡＤＲＳ）１５とし、それ以外のセグメントはデータセグメント１６と呼ばれている。アドレスセグメント１５とデータセグメント１６には、図中で△で示されたクロックマーク１７が設けられている。
【００３２】
１つのフレーム１４の全データセグメント１６には、例えば、２ＫＢ（キロバイト）のデータとＥＣＣ（Ｅｒｒｏｒ Ｃｏｒｒｅｃｔｉｎｇ Ｃｏｄｅ）が記録される。また、アドレスセグメント１５には、アドレス情報、チルトパターン、プリアンブル、リザーブ等が記録される。アドレスセグメント１５では、これらの情報が、グルーブ１２を形成する２つの壁の内、一方の壁のみにウォブル（Ｗｏｂｂｌｅ）を施す、いわゆる、片側ウォブルで記録されている。片側ウォブルアドレス（Ｓｉｎｇｌｅｄ Ｓｉｄｅｄ Ｗｏｂｂｌｅｄ Ａｄｄｒｅｓｓ）１８は、データの位置を示す片方向（両方向も存在する）のウォブルアドレスである。ＡＳＭＯにおいては、ディスクの１回転当たりのフレーム数は、１６〜７３個である。
【００３３】
また、ランド１１とグループ１２共に、ピット長は０．２３５マイクロメートルである。
上述したように、ＡＳＭＯは、物理的に２２個のゾーンに分割されるが、これらの物理ゾーンは図６に示すように、外周側から内周側に、論理ゾーン（Ｌｏｇｉｃａｌ Ｚｏｎｅ）Ｎ〜論理ゾーンＭ＋２）までの７１４個の論理ゾーンに分割される。 また、図６において、各論理ゾーンＮ〜Ｍ＋２の右隣にはバッファ内のデータ量の時間的変化を示している。同図に示す例は、ＡＳＭＯの論理ゾーンＮ〜論理ゾーンＮ＋１をアクセスして、論理ゾーンＮ〜論理ゾーンＮ＋１からデータをバッファに読みだした後、今度は、最内周の論理ゾーンＭ＋２からデータをバッファに読みだす例を示している。この場合、ヘッドが外周の論理ゾーンＮ＋１から内周の論理ゾーンＭ＋２までシーク動作する間、バッファ内に保持されているデータは外部装置に転送され、バッファ内のデータ量は次第に減少していく。
【００３４】
この論理ゾーンＮ＋１をアクセスしてから、次に、論理ゾーンＭ＋２をアクセスするまでの許容時間は１秒以内でなければならない。この１秒以内に、バッファから外部装置には１ＭＢ（メガバイト）のデータが転送される。
【００３５】
図７はＡＳＭＯの論理ゾーンのデータ構造を示す図である。同図に示すように、ＡＳＭＯにおいては、論理ゾーン２０は、８ＭＢ（メガバイト）の記憶容量を有し、隣接する４ＭＢ（メガバイト）のランド１１と４ＭＢ（メガバイト）のグループ１２との対で構成されている。
【００３６】
論理ゾーン２０は、図７に示すようにユーザエリア（図中、ハッチングで示す）とスペアエリア（図中、黒塗りで示す）に分割され、通常、データはユーザエリアにセクタ単位で先頭から順に記録されていく。このとき、ユーザエリアに欠陥セクタが無ければ、データはユーザエリアのみに記録される。しかしながら、ユーザエリアに欠陥セクタがある場合には、該欠陥セクタに記録しようとしていたデータはスペアエリアに記録される。このように、スペアエリアは、ユーザエリアに欠陥セクタが存在する場合の交替処理用の予備セクタとして利用される。
【００３７】
ところで、上記欠陥セクタの補償には、スリッピング・リプレースメント（Ｓｌｉｐｐｉｎｇ Ｒｅｐｌａｃｅｍｅｎｔ：ＳＲ）とリニアリプレースメント（Ｌｉｎｅａｒ Ｒｅｐｌａｃｅｍｅｎｔ：ＬＲ）が利用される。ＳＲは、欠陥セクタを飛ばして、次のセクタにデータを順番に記録していく方法である。この場合、スペアエリアには、記録データ列の内、欠陥セクタの数分だけ後尾セクタがずれ込む形で記録される。一方、ＬＲは、欠陥セクタをスペアエリアで交替する方法である。
【００３８】
図７には、ＳＲとＬＲの方法が模式的に示されている。（１）がＳＲを示し、（２）〜（４）がＬＲを示している。ＬＲには３種類の方法があり、
（２）は同一論理ゾーン内のスペアエリアで欠陥セクタを交替する方法、
（３）は前の論理ゾーン内のスペアエリアで欠陥セクタを交替する方法、
そして、
（４）は隣接する論理ゾーン内のスペアエリアで欠陥セクタを交替する方法を示している。
【００３９】
このように、ＡＳＭＯは、論理ゾーンのグループとランドに交替処理用の領域（スペアエリア）を設けることにより、例え、データの交替処理が必要になった場合でも、アクセス時間が短くてすむように構成されている。物理ゾーンは数百ＭＢ（メガバイト）、論理ゾーンは８ＭＢ程度であり、１つの物理ゾーンに、論理ゾーンは３０〜５０個ほど含まれる。
【００４０】
ところで、論理ゾーンの範囲は、図８に示すように、ヘッド本体を移動するシーク動作を行わずとも、対物レンズ３０の駆動によるビーム偏向走査（光シーク）のみでビームをジャンプできる範囲（約２００トラック）を基準にして設計されている。同図においては、対物レンズ３０によるアクセス可能領域（欠陥ブロック３１とその予備ブロック３２との最大幅が２００トラック）であることが示されている。この対物レンズ３０による光シークの速度は、最大５ｍｓ程度である。ちなみに、ヘッド本体を移動するシーク動作により、上記光シークと同様な２００トラックの走査を行った場合には、その２倍以上の速度を要する。
【００４１】
また、ＡＳＭＯにおいては、論理ゾーンの中は、原則的にシーケンシャルにアクセスし、次のステップで、ヘッドが最大シーク距離（最内周から最外周までの距離）まで移動しても、シームレスに音声・映像データを取り込んだり再生できることを保証している。上記最大シーク距離の移動によるアクセス待ち時間は１秒である。このため、この１秒間の間にリアルタムでの音声・映像データの取り込み／再生を実現するために、１ＭＢ（メガバイト）のデータを保持できる内部バッファを設けるようにしている。
【００４２】
図９、１０は、それぞれ、ＡＳＭＯにおいて、シームレスな音声・映像データの取り込み及び再生を実現するための概念図である。図９は、ＡＳＭＯに対するバッファリングされた音声・映像データの論理ゾーンＮ〜Ｎ＋２に対する書き込み操作を示している。また、図１０は、ＡＳＭＯの論理ゾーンＮ〜Ｎ＋２からバッファに、音声・映像データを読みだす操作を示している。
【００４３】
ところで、ＡＳＭＯでは、単一チャンネルの記録・再生のみを考慮しており、複数チャンネルの同時記録、同時再生、あるいは時差再生（記録しながら再生する動作）などについては、まだ、考慮されていないのが現状である。
【００４４】
また、現在の３．５インチＭＯ（Ｍａｇｎｅｔｏ Ｏｐｔｉｖａｌ ｄｉｓｃ）は、回転制御方式として，ＺＣＡＶ（Ｚｏｎｅ Ｃｏｎｓｔａｎｔ Ａｎｇｕｌａｒ Ｖｅｌｏｃｉｔｙ）を採用している。このため、ＡＳＭＯに比べてシーク時間が短いものの、３．５インチＭＯの場合、内周の方が外周よりも転送速度が遅く（内周の転送速度は外周の転送速度の６０％程度である）、多チャンネルの映像データについて、同時記録、同時再生を試みた場合、より高い処理性能が要求され、内周部で処理に対処しきれなくなるなどの問題があった。この問題は、ＨＤＤ（Ｈａｒｄ Ｄｉｓｋ Ｄｒｉｖｅ）においても同様である。
【００４５】
一方、ＡＳＭＯの場合には、回転制御方式として，内周と外周の回転数を変化させることで、全体の転送速度を一定とするＺＣＬＶ（Ｚｏｎｅ Ｃｏｎｓｔａｎｔ Ｌｉｎｅａｒ Ｖｅｌｏｃｉｔｙ）を採用しているため、３．５インチＭＯの場合のような問題は発生しないが、ゾーン間を跨がるアクセスが生じた場合、回転数を変えるための制御時間が必要となり、これが処理性能を妨げる要因になっている。
【００４６】
本発明の第１の目的は、複数チャンネルのデータの記録／再生に伴う記録媒体へのアクセスをリアルタイムで処理する場合に、より多くのチャンネルを効率良く処理するアクセス制御装置およびその方法を提供することである。また、本発明の第２の目的は、ランドとグループに記録する記録媒体において、複数チャンネルの同時記録・再生等を可能にすることである。
【００４７】
発明の開示
図１は、本発明のアクセス制御装置の原理図である。
本発明の第１の原理によれば、アクセス制御装置は、スケジューリング手段１１および制御手段１２を備え、記録媒体への複数のアクセス要求を処理する。
【００４８】
スケジューリング手段１１は、データの転送レートの変化に応じてアクセス処理の終了期限を決定し、終了期限の早い順に複数のアクセス要求の実行スケジュールを設定する。制御手段１２は、実行スケジュールに従ってそれらのアクセス要求の実行を制御する。
【００４９】
例えば、同期転送の場合、データの転送レートは挿入されるダミー・パケットの割合に応じて刻々と変化する。スケジューリング手段１１は、その時々の転送レートに応じて動的に書き込み／読み出し処理の終了期限を決定し、終了期限の早い順に書き込み／読み出し処理を実行するようなスケジュールを設定する。そして、制御手段１２は、設定されたスケジュールに従って、それらの書き込み／読み出し処理の実行を制御する。
【００５０】
このようなアクセス制御装置によれば、実際の転送レートに従って終了期限が決定され、それに基づいて柔軟なスケジューリングが行われる。このため、統計多重化された可変レートの映像データをリアルタイムで記録／再生する場合でも、各チャンネルの転送レートに合わせたスケジューリングが行われ、より多数のチャンネルの記録／再生が可能になる。
【００５１】
また、本発明の第２の原理によれば、アクセス制御装置は、制御手段１２および決定手段１３を備え、ディスク型記録媒体への複数のアクセス要求を処理する。
【００５２】
決定手段１３は、記録媒体へデータを書き込む複数の書き込み要求に対して、それらの書き込み要求に対応する複数の書き込み位置が互いに近接するように、書き込み領域を決定する。制御手段１２は、各書き込み要求の書き込みデータを上記書き込み領域にシーケンシャルに書き込む制御を行う。
【００５３】
決定手段１３は、互いに近接する複数の書き込み位置を含む書き込み領域を決定し、制御手段１２は、各書き込み要求の書き込みデータを、その書き込み領域内の複数の書き込み位置にシーケンシャルに書き込む制御を行う。これらの書き込み位置は、例えば、ディスク型記録媒体上に設けられたゾーン内の連続アドレスに対応する。
【００５４】
このようなアクセス制御装置によれば、複数チャンネルの映像データの同時書き込みが要求された場合でも、それらのチャンネルのデータがまとめてシーケンシャルに書き込まれ、書き込みの際のシーク待ちや回転待ちが大幅に削減される。これにより、処理が効率化され、より多数のチャンネルの記録／再生が可能になる。
【００５５】
例えば、図１のスケジューリング手段１１および決定手段１３は、後述する図２のＭＰＵ（マイクロプロセッサユニット）３１に対応し、制御手段１２は、ＭＰＵ３１、ＬＳＩ３２、ドライバ回路３３、およびバッファメモリ３４に対応する。
【００５６】
また、本発明の第３の原理によれば、アクセス制御装置は、ＺＣＡＶに基づき回転制御が行われる記録媒体に対する複数チャンネルの同時記録を制御するアクセス制御装置を前提とする。そして、前記記録媒体上のゾーンの転送速度が平均化されるように、前記記録媒体から複数ゾーンを選択する選択手段と、前記複数チャンネルのデータが、該選択された複数のゾーンに分散・記録されるように制御する制御手段とを備える。前記選択手段は、例えば、外周ゾーンと内周ゾーンを対にして、複数のゾーンを選択する。
【００５７】
このようなアクセス制御装置によれば、記録媒体全体での転送速度（転送レート）が一定となるように複数のゾーンを交互にアクセスして、複数チャンネルのデータの同時記録の要求性能（総合要求性能）に対応して、各チャンネルのデータを記録媒体に正しく記録することができる。
【００５８】
また、本発明の第４の原理によれば、アクセス制御装置は、ＺＣＡＶに基づき回転制御が行われる記録媒体に対する複数チャンネルの同時記録を制御するアクセス制御装置を前提とし、該各チャンネルのデータの記録要求性能の総和である総合要求性能以上の転送速度平均を持つ複数のゾーンを、前記記録媒体から選択する選択手段と、該選択された複数のゾーンに前記複数チャンネルのデータが分散・記録されるように制御する制御手段とを備える。
【００５９】
このようなアクセス制御装置によれば、各チャンネルのデータの要求性能の総和（総合要求性能）に優るように複数のゾーンを選択して、各チャンネルのデータを該複数のゾーンに分散・記録するので、複数チャンネルのデータを記録媒体に正しく記録することができる。
【００６０】
上記第３及び第４の原理のアクセス制御装置において、前記選択手段は、例えば、各ゾーン間のヘッドの移動時間を加味して、前記複数のゾーンを選択する。また、前記選択手段は、例えば、各ゾーン間のヘッドの移動時間に加え、前記複数チャンネル数も加味して、前記複数のゾーンを選択する。このようなゾーン選択により、より精密にゾーンを選択することが可能になる。
【００６１】
また、前記制御手段は、各チャンネルのデータとその記録ゾーンとが、１対１に対応するように制御する。このことにより、各チャンネルのデータの再生を高速化でき、また、データ削除後の領域を効率的に利用できる。
【００６２】
また、前記制御手段は、該各チャンネルのデータがブロック単位で該各ゾーンに交互に記録されるように制御する。また、さらに、前記制御手段は、各チャンネルのデータが、同一のゾーンに交互に記録されるように制御する。
【００６３】
また、本発明の第５の原理のアクセス制御装置によれば、上記第３及び第４の原理のアクセス制御装置において、更に、あるゾーンから、そのゾーンに記録されているあるチャンネルのデータを削除する削除手段と、前記チャンネルのデータが削除された前記ゾーンの空き領域に、現在、最も外周のゾーンに記録されている別チャンネルのデータを移動するガーベージコレクション手段とを備える。
【００６４】
このようなアクセス制御装置によれば、転送速度の速い外周ゾーンを、効率的に利用でき、高速なチャンネルの記録に、常時、対処することが可能になる。
また、本発明の第６の原理のアクセス制御装置によれば、上記第３及び第４の原理のアクセス制御装置において、更に、あるチャンネルのデータの再生要求を受け付けた場合、そのチャンネルのデータが記録されているゾーンから再生データを連続して読みだす読みだし手段を備える。
【００６５】
このようなアクセス制御装置によれば、チャンネルデータの高速再生が可能になる。
また、本発明の第７の原理によれば、アクセス制御装置は、ＺＣＬＶに基づき回転制御が行われる記録媒体に対する複数チャンネルの同時記録を制御するアクセス制御装置を前提とし、複数チャンネルの同時記録要求を受け付けたとき、記録容量の多い外周ゾーンを優先的に選択する選択手段と、前記複数チャンネルのデータが、該選択されたゾーンに集中して記録されるように制御する制御手段とを備える。
【００６６】
このようなアクセス制御装置によれば、チャンネルデータの高速記録が可能になる。
また、本発明の第８の原理によれば、アクセス制御装置は、ランド・グループ方式で記録が行われる記録媒体に対する複数チャンネルの同時記録を制御するアクセス制御装置を前提とし、複数チャンネルの同時記録要求を受け付けたとき、各チャンネルのデータが１対１対応で記録されるランドまたはグループを決定する決定手段と、前記各チャンネルのデータが、該決定された対応するランドまたはグループに沿って分散・記録されるように制御する制御手段とを備える。
【００６７】
前記記録媒体が所定セクタ数のランドとグループを有する論理ゾーンに分割される記録媒体である場合、前記制御手段は、例えば、各チャンネルのデータが、論理ゾーン単位で、ランドとグループに交互に分散・記録されるように制御する。
【００６８】
このようなアクセス制御装置によれば、各チャンネルのデータへのアクセス効率を向上できる。また、同時記録した一方のチャンネルのデータを削除する処理も高速化でき、該削除が同時記録した他方のチャンネルのデータのアクセスに及ぼす影響も少なくできる。また、ガーベージコレクションの実行回数も削減できる。
【００６９】
また、本発明の第９の原理によれば、アクセス制御装置は、上記第８の原理のアクセス制御装置において、更に、あるチャンネルのデータの削除要求を受け付けた場合、そのチャンネルのデータを、それが記録されているランドまたはグループから削除する削除手段と、該ランドまたは該グループと対になっている他のランドまたは他のグループに記録されている別のチャンネルのデータを、空き領域のある論理ゾーンに移動させて再記録させるガーベージコレクション手段を備える。
【００７０】
このようなアクセス制御装置によれば、チャンネルデータの削除を容易かつ高速にできると共に、不連続な空き領域を削減できる。
また、本発明の第１０の原理によれば、アクセス制御装置は、上記第８及び第９の原理のアクセス制御装置において、更に、あるチャンネルのデータの再生要求を受け付けた場合、そのチャンネルのデータが記録されているランドまたはグループから再生データを連続して読みだす読みだし手段を備える。
【００７１】
このようなアクセス制御装置によれば、チャンネルの再生を高速にできる。
発明を実施するための最良の実施形態
図１１は、本発明のアクセス制御装置の原理図である。
【００７２】
本発明の第１の原理によれば、アクセス制御装置は、スケジューリング手段４１および制御手段４２を備え、記録媒体への複数のアクセス要求を処理する。
スケジューリング手段４１は、データの転送レートの変化に応じてアクセス処理の終了期限を決定し、終了期限の早い順に複数のアクセス要求の実行スケジュールを設定する。制御手段４２は、実行スケジュールに従ってそれらのアクセス要求の実行を制御する。
【００７３】
例えば、同期転送の場合、データの転送レートは挿入されるダミー・パケットの割合に応じて刻々と変化する。スケジューリング手段４１は、その時々の転送レートに応じて動的に書き込み／読み出し処理の終了期限を決定し、終了期限の早い順に書き込み／読み出し処理を実行するようなスケジュールを設定する。そして、制御手段４２は、設定されたスケジュールに従って、それらの書き込み／読み出し処理の実行を制御する。
【００７４】
このようなアクセス制御装置によれば、実際の転送レートに従って終了期限が決定され、それに基づいて柔軟なスケジューリングが行われる。このため、統計多重化された可変レートの映像データをリアルタイムで記録／再生する場合でも、各チャネルの転送レートに合わせたスケジューリングが行われ、より多数のチャネルの記録／再生が可能になる。
【００７５】
また、本発明の第２の原理によれば、アクセス制御装置は、制御手段４２および決定手段４３を備え、ディスク型記録媒体への複数のアクセス要求を処理する。
【００７６】
決定手段４３は、記録媒体へデータを書き込む複数の書き込み要求に対して、それらの書き込み要求に対応する複数の書き込み位置が互いに近接するように、書き込み領域を決定する。制御手段４２は、各書き込み要求の書き込みデータを上記書き込み領域にシーケンシャルに書き込む制御を行う。
【００７７】
決定手段４３は、互いに近接する複数の書き込み位置を含む書き込み領域を決定し、制御手段４２は、各書き込み要求の書き込みデータを、その書き込み領域内の複数の書き込み位置にシーケンシャルに書き込む制御を行う。これらの書き込み位置は、例えば、ディスク型記録媒体上に設けられたゾーン内の連続アドレスに対応する。
【００７８】
このようなアクセス制御装置によれば、複数チャネルの映像データの同時書き込みが要求された場合でも、それらのチャネルのデータがまとめてシーケンシャルに書き込まれ、書き込みの際のシーク待ちや回転待ちが大幅に削減される。これにより、処理が効率化され、より多数のチャネルの記録／再生が可能になる。
【００７９】
例えば、図１１のスケジューリング手段４１および決定手段４３は、後述する図１２のＭＰＵ（マイクロプロセッサユニット）６１に対応し、制御手段４２は、ＭＰＵ６１、ＬＳＩ６２、ドライバ回路６３、およびバッファメモリ６４に対応する。
【００８０】
以下、図面を参照しながら、本発明の実施の形態を詳細に説明する。
本発明においては、受け取った転送パケットからダミー・パケットを省き、有効なデータを一定のブロック単位でバッファメモリに一時蓄積する。このとき、ダミー・パケットが多いほど、有効なデータを蓄積するために多くの時間がかかることになる。そして、各チャネルの蓄積時間に対応して終了期限を随時設定し、その終了期限に従ってスケジューリングを行う。
【００８１】
このように、実際の転送レートに依存する蓄積時間に応じて終了期限を柔軟に設定することで、スケジューリングの時間制約が穏やかになり、より多数のチャネル、またはより高速なチャネルを処理できるようになる。
【００８２】
また、より厳しい条件（特に、より多数のチャネル、またはより高速なチャネル）で書き込みが同時に起こる場合、より転送能力のあるディスクの外周ゾーンをアクセスポイントとして、データを集中的に（時系列で連続的に）書き込むようにスケジューリングする。これにより、転送レートとシーク待ちの両方の時間制約が軽減され、より多数のチャネルまたはより高速なチャネルを処理できるようになる。
【００８３】
図１２は、本発明の実施形態のアクセス制御装置を含むストレージシステムの構成図である。図１２のストレージシステムは、ストレージデバイス５１、ＳＴＢ５２、およびデジタルＴＶ５３を備え、これらの各装置はＩＥＥＥ１３９４回線５４により互いに接続されている。ＳＴＢ５２は、例えば、外部のネットワークからＭＰＥＧの映像データを受信し、それを同期転送によりストレージデバイス５１に転送する。そして、デジタルＴＶ５３は、ストレージデバイス２５に格納された映像データを読み出して、画面に表示する。
【００８４】
ストレージデバイス５１において、ディスクアクセスの制御を行う回路は、ディスクアクセス制御用ＭＰＵ６１（マイクロプロセッサユニット）、ＩＥＥＥ１３９４ＬＳＩ６２、ディスクドライバ６３、およびバッファメモリ６４を含み、これらの各装置はバス６５により互いに接続されている。
【００８５】
ＬＳＩ６２は、回線６４とストレージデバイス５１の間の通信インタフェースとして動作する。バッファメモリ６４は、例えば、６４キロバイト（ＫＢ）の容量を有する１６個の単位ブロックから構成され、回線６４を介して送られてきた映像データまたは回線５４へ送り出す映像データを一時的に蓄積する。
【００８６】
ＭＰＵ６１は、回線５４から入力されるＲｅａｄ／Ｗｒｉｔｅ命令を受け、ディスクスケジューリングのアルゴリズムに従って、ディスク６６のアクセス実行順序と読み出し／書き込み場所を決定する。そして、その順序に従って、ディスク６６を搭載したディスクドライブ（不図示）に、ドライバ回路６３を介してアクセスする。
【００８７】
図１３は、ＭＰＵ６１によるディスクスケジューリングの原理を説明するフローチャートである。ＭＰＵ６１は、まず、複数チャネルのＲｅａｄ／Ｗｒｉｔｅのリアルタイム命令に従って、バッファメモリ６４の、一定容量の単位ブロックにデータを一時蓄積する（ステップＳ１）。単位ブロックのサイズは、通常、ディスクのトラックサイズに対応して決められ、６４ＫＢ程度に設定される。
【００８８】
次に、バッファメモリ６４の単位ブロックにデータを一時蓄積するのに要した時間に応じて、各チャネルの終了期限を決定する（ステップＳ２）。書き込みデータの一時蓄積の際には、受け取った転送パケットのうち、データ・ブロック・パケットのデータのみを蓄積し、ダミー・パケットは廃棄する。このため、ダミー・パケットの出現頻度に応じて処理時間が異なり、転送レートは可変になる。次に、複数チャネルの中の最大転送レートに対応する周期毎に、ＳＣＡＮ−ＥＤＦに基づいてスケジューリングを行う（ステップＳ３）。
【００８９】
最大転送レートは、ダミー・パケットなしでデータ・ブロック・パケットを連続転送した場合のレートに相当し、このとき、単位ブロック当たりのデータ転送時間は最短となる。ここで、すべてのチャネルが最大転送レートでデータを転送する場合を考えると、最短のデータ転送時間毎に新たな終了期限が決定されることになる。そこで、このような場合のスケジューリングミスを防ぐため、単位ブロック当たりの最短のデータ転送時間を周期として、定期的にスケジューリングを行う。
【００９０】
ここでは、ＳＣＡＮ−ＥＤＦのアルゴリズムに基づいて、終了期限が迫っている処理を優先的にスケジューリングする。また、同じ終了期限の処理が複数ある場合には、シーク距離が短いチャネルを優先する。このように、スッテプＳ２で決めた終了期限をＳＣＡＮ−ＥＤＦに適用することで、実際の処理状況に合わせて時間制約がより穏やかになる。
【００９１】
図１４は、このようなディスクスケジューリングの例を示している。ここでは、４つのチャネルＣｈ１、Ｃｈ２、Ｃｈ３、およびＣｈ４のうち、Ｃｈ１、Ｃｈ２、およびＣｈ３の３つのチャネルではＷｒｉｔｅ処理が行われ、Ｃｈ４ではＲｅａｄ処理が行われている。
【００９２】
パケットＷは、書き込みデータを含むデータ・ブロック・パケットを表し、パケットＲは、読み出しデータを含むデータ・ブロック・パケットを表し、パケットＤは、ダミー・パケットを表す。また、バッファメモリ６４内では、各チャネルにそれぞれ３つの単位ブロック６４ａが割り当てられている。
【００９３】
Ｗｒｉｔｅ処理においては、ダミー・パケットＤを除く有効パケットＷのデータが、バッファメモリ６４の１つの単位ブロック６４ａに一時蓄積される。このとき、単位ブロック分のデータをバッファメモリ６４に書き込むのに要した時間により、各チャネルの終了期限が設定される。
【００９４】
そして、「最大転送レート」、「終了期限情報」、および「有効パケットとダミー・パケットの種別を時系列的に示したバイナリデータ」が、「有効データ」と共にディスク６６に記録される。これらのデータは、バッファメモリ６４を介して、図１５に示すようなフォーマットでディスク６６に記録される。最大転送レートは、例えば、１パケット当たりの有効データのバイト数で表される。
【００９５】
また、終了期限情報としては、例えば、単位ブロック分のデータの一時蓄積に要した時間を記録してもよく、その間に受け取った有効パケットとダミー・パケットの数の合計を記録してもよい。図１５では、後者の終了期限情報が用いられている。また、図１５のバイナリデータとしては、有効パケットを論理“１”で表し、ダミー・パケットを論理“０”で表したバイナリシーケンスが用いられている。
【００９６】
これらの終了期限情報とバイナリデータは、有効データのＲｅａｄ処理において利用される。このとき、記録されている終了期限情報を利用してＲｅａｄ処理の終了期限が決定されるとともに、対応するバイナリデータに従ってダミー・パケットが挿入される。
【００９７】
これにより、ＴＶ５３のようなディスク６６に対するデータのＲｅａｄ処理を要求した受け取り側においても、ＳＴＢ５２から直接映像データを受け取る場合と同様のシーケンスで、ＬＳＩ５２を介して同期転送パケットを受け取ることができる。したがって、受け取り側のバッファメモリを必要以上に増やすことなく、リアルタイムの同期転送が可能になる。
【００９８】
あるいは、受け取り側で非同期（Ａｓｙｎｃｈｒｏｎｏｕｓ）転送が可能であれば、ダミー・パケットを挿入せずに有効パケットのみを送出してもよい。この場合、転送データは既にディスク６６に格納されているので、受け取り側のペースで転送保証を行いながら、ＩＥＥＥ１３９４のもう１つの転送モードである非同期転送によりＲＥＡＤ処理を実行することができる。
【００９９】
ところで、図４に示したトランスポート・パケット３は１９２バイトの有効データを含んでおり、バッファメモリ６４の単位ブロックサイズとしてディスクトラックレベルの６４ＫＢ程度を採用した場合、約３４０個のパケット３に相当するデータがバッファメモリ６４の単位ブロックに蓄積される。したがって、パケット３から２つのデータ・ブロック・パケット４を生成した場合、約６８０個のデータ・ブロック・パケット４が一時蓄積されるのに要する時間から終了期限が決定される。
【０１００】
図１４のスケジューリングの例では、説明を簡単にするため、バッファメモリ６４の単位ブロック６４ａの容量を有効パケット４個分とし、４つの有効パケットが蓄積されるのに要した時間から終了期限が決定されるものとしている。ここで、＃１〜＃１０の各矢印は、４つの有効パケットに対応するＲｅａｄ／Ｗｒｉｔｅ処理を表し、矢印の番号は、スケジューリングされた処理の実行順序を表す。また、矢印の元は終了期限の決定タイミングを表し、矢印の先は決定された終了期限を表す。このスケジューリングの概要は、次のようになる。
【０１０１】
＃１：Ｃｈ４で４パケット分の有効データがディスク６６から読み出され、バッファメモリ６４に一時蓄積される。このとき、図１５に示した他の情報も有効データと共に蓄積される。
【０１０２】
＃２：読みだした終了期限情報に従ってＲｅａｄ処理の終了期限が決定され、読みだしたバイナリデータ“１０１０１０１”に従って、蓄積された有効データがバッファメモリ６４から同期転送で送り出される。このとき、バイナリデータの論理“１”に対応して有効パケットＲが送り出され、論理“０”に対応してダミー・パケットＤが送り出される。それと同 時に、次の４パケット分の有効データがディスク６６から読み出され、 バッファメモリ６４に一時蓄積される。
【０１０３】
＃３：＃２の処理の間に、まず、Ｃｈ１とＣｈ３で、４つの有効パケットＷのデータのバッファメモリ６４への一時蓄積が完了し、その一時蓄積時間から終了期限が決定される。このとき、図１５に示した他の情報も有効データと共に蓄積される。
【０１０４】
ここでは、Ｃｈ１とＣｈ３で、共に、４つの有効パケットＷが連続して送られてきたため、それらのバイナリデータは共に“１１１１”となる。また、終了期限は上記４有効パケット分の転送時間に基づいて決められるため、Ｃｈ１とＣｈ３の終了期限は同じ時刻となる。そこで、現在のディスクヘッドの位置Ｈ０が参照され、その位置により近い（シーク距離がより短い）アドレスポイントを持つＣｈ１のＷｒｉｔｅ処理が優先的にスケジューリングされる。
【０１０５】
＃４：次に、Ｃｈ１と同じ終了期限を持つＣｈ３のＷｒｉｔｅ処理がスケジューリングされる。
【０１０６】
＃５：次に、Ｃｈ２で４つの有効パケットＷのデータの一時蓄積が完了し、終了期限が決定される。ここでは、４つの有効パケットＷの間に２つのダミー・パケットＤが送られてきたため、バイナリデータは“１０１１０１”となり、終了期限は６パケット分の転送時間に基づいて決定される。
【０１０７】
以下同様にして、各チャネルのＲｅａｄ／Ｗｒｉｔｅ処理が終了期限の早い順にスケジューリングされる。この結果、＃６はＣｈ３、＃７はＣｈ４、＃８はＣｈ１、＃９はＣｈ３、＃１０はＣｈ２となる。
【０１０８】
このように、処理の実行順序は、バッファメモリ６４への一時蓄積の終了順ではなく、一時蓄積に要した時間から決定された終了期限の早い順に設定される。したがって、複数のＷｒｉｔｅ処理をスケジューリングする際、必ずしも一時蓄積が終了した順にディスク６６がアクセスされるとは限らない。
【０１０９】
また、図１４の例では、各チャネル毎に単位ブロック３個分のバッファ領域６４ａを持ち、終了期限の変動に応じて、ディスク６６との間の転送に２ブロック分を利用し、ＬＳＩ６２との間の転送に１ブロック分を利用している。このように、バッファメモリ６４の容量は限られているため、終了期限にも上限を設けておく必要がある。
【０１１０】
この例では、一時蓄積に要する時間は４〜８パケットの転送時間の範囲である。そこで、最も長い８パケットの転送時間に基づいて終了期限が設定された直後に、最大転送レートでデータがバッファメモリ６４に入力された場合を考えてみる。この場合、既に蓄積されている１ブロック分のデータがディスク６６に書き込まれる間に、２ブロック分のデータがバッファメモリ６４に蓄積されることになる。したがって、各チャネル毎に少なくとも３ブロック分のバッファ領域が必要であり、終了期限は８パケットの転送時間内に設定される必要がある。
【０１１１】
言い換えれば、終了期限の上限は、バッファメモリ６４の利用可能な領域に最大転送レートで有効データを蓄積するのに要する蓄積時間により決定される。ここでは、この蓄積時間は、最大転送レートの半分の転送レートの場合の単位ブロック当たりの一時蓄積時間（８パケットの転送時間）に一致しており、転送レートはそれより小さくならないものと仮定している。
【０１１２】
また、終了期限情報として有効パケットおよびダミー・パケットの数の合計を用いた場合、これを時間または時刻へ変換することは容易である。ここでは、終了期限情報の範囲は４−８パケットであり、ＩＥＥＥ１３９４における１パケットの転送時間は１２５μｓである。したがって、４〜８パケットを転送時間に換算すると、５００μｓ〜１ｍｓとなり、終了期限は、開始時刻から５００μｓ〜１ｍｓ経過した時刻となる。開始時刻としては、バッファメモリ６４への一時蓄積が完了した時刻が用いられる。
【０１１３】
次に、図１６は、同期転送パケットにダミー・パケットが含まれない場合のディスクスケジューリングの例を示している。この場合は、ダミー・パケットがないため、各チャネルの処理の開始時刻および転送レートが同じであれば、それらの処理の終了期限は同じになる。そこで、ＳＣＡＮ−ＥＤＦのアルゴリズムに基づき、終了期限が同じ２つ以上の処理については、シーク方向が同じでシーク距離の短い順に実行順序が設定される。
【０１１４】
図１６の例では、Ｃｈ４の２回のＲｅａｄ処理（＃１および＃２）から始まって、Ｃｈ２のＷｒｉｔｅ処理（＃３）に移り、シーク方向を変えてＣｈ４（＃４）、Ｃｈ３（＃５）、Ｃｈ１（＃６）の順に処理されるようなスケジュールが設定される。その後、＃７はＣｈ１、＃８はＣｈ３、＃９はＣｈ４、＃１０および＃１１はＣｈ２、＃１２はＣｈ４、＃１３はＣｈ３、＃１４はＣｈ１となる。
【０１１５】
次に、図１７から図２２までを参照しながら、ＭＰＵ５１によるスケジューリング処理について詳細に説明する。ＭＰＵ５１は、実行予定の各チャネルの処理を登録したスケジュールテーブル（不図示）を保持しており、このテーブルを用いてディスクアクセスのスケジューリングを行う。
【０１１６】
図１７は、Ｎチャネルを対象に２Ｎ個（各チャネル当たり２個）の処理命令を受け付ける場合のスケジュールテーブルを示している。図１７のスケジュールテーブル７０の各要素Ｏｒｄｅｒ（Ｉ）（Ｉ＝１，２，．．．，２Ｎ）は、終了期限Ｔ、Ｒｅａｄ／Ｗｒｉｔｅ処理の識別情報Ｒ／Ｗ、チャネル番号Ｃ、およびディスク６６上のブロックアドレスＡを含み、実行予定の１つのＲｅａｄ／Ｗｒｉｔｅ処理を表している。同図は、スケジュールテーブル７０にｍ個の要素が登録された状態を示しており、それらのｍ個の要素は終了期限Ｔの早い順に並べられている。
【０１１７】
また、Ｏｒｄｅｒ（１）に含まれる各データの添え字ｉは、対応する処理の対象となるチャネルの番号を表し、Ｃｉ＝ｉである。Ｏｒｄｅｒ（ｍ−１）、Ｏｒｄｅｒ（ｍ）に含まれる各データの添え字ｊ、ｋについても同様である。また、ＷｉはＷｒｉｔｅ処理を、Ｒｊ，ＲｋはＲｅａｄ処理を示す。
【０１１８】
図１８は、Ｗｒｉｔｅ処理のスケジューリングおよび実行のフローチャートである。同図のフローチャートで使用されている変数ｍは、スケジュールテーブル７０に登録されている要素Ｏｒｄｅｒ（Ｉ）の個数を示す。
【０１１９】
ＭＰＵ５１は、まず、いずれかのチャネルｋで単位ブロック分の書き込みデータがバッファメモリ６４に一時蓄積されたかどうかを判定する（ステップＳ１１）。一時蓄積が終了していなければステップＳ１１の判定を繰り返す。
【０１２０】
チャネルｋで一時蓄積が終了すると、次に、その一時蓄積に要した時間に従ってチャネルｋのＷｒｉｔｅ処理の終了期限Ｔｋを算出する（ステップＳ１２）。一時蓄積時間は、チャネルｋの転送レートによって異なるため、終了期限Ｔｋもそれによって異なってくる。
【０１２１】
チャネルｋの転送レートは、ダミー・パケットの割合によって変化するが、単位ブロック２個分のデータを転送する間には大きく変化しないと考えられる。したがって、次の単位ブロック分のデータの一時蓄積時間も同じ程度であり、既に蓄積されたデータをこの時間内にディスク６６に書き込めばよいことになる。そこで、例えば、タイマから取得した現時刻に一時蓄積時間を加算して、終了期限Ｔｋを算出する。
【０１２２】
次に、未処理のｍ個のＷｒｉｔｅ処理を終了期限の早い順に並べたスケジュールテーブル７０の最下位に、チャネルｋのＷｒｉｔｅ処理を登録する（ステップＳ１３）。すなわち、変数ｍの値を“１”インクリメントした後、Ｏｒｄｅｒ（ｍ）にＴｋを登録する。このとき、Ｏｒｄｅｒ（ｍ）には、同時に、Ｗｋ、Ｃｋ、およびＡｋも登録される。
【０１２３】
次に、登録されたＯｒｄｅｒ（ｍ）を含めて、ｍ個の要素の終了期限Ｔを比較し、早い順に要素を並べ替えて（ステップＳ１４）、ステップＳ１１に戻り、ステップＳ１１以降の処理を繰り返す。ステップＳ１１〜ステップＳ１４の処理は、あるチャンネルの単位ブロックのデータがバッファメモリ６４に蓄積される毎に、スケジュールテーブル７０に新たな要素を追加して、スケジュールテーブル７０に登録された要素を終了期限の早いものから順に、ソートする処理である。これにより、スケジュールテーブル７０には、常に、終了期限の早いものから順に、要素Ｏｒｄｅｒ（１）、Ｏｒｄｅｒ（２）、．．．が登録される。
【０１２４】
ステップＳ１１〜Ｓ１４の処理と並行して、ステップＳ１５〜ステップＳ１７のループ処理が、ＭＰＵ５１により実行される。
このループ処理において、まず、ｍ＝０かどうかを判定する（ステップＳ１５）。この判定は、スケジュールテーブル７０に要素Ｏｒｄｅｒ（Ｉ）が登録されているか判断する処理である。
【０１２５】
ｍ＝０でなければ、未処理のＷｒｉｔｅ処理が残っていると判断し、スケジュールテーブル７０を参照して、その先頭要素Ｏｒｄｅｒ（１）に登録されたＷｒｉｔｅ処理の実行をドライバ回路６３に指示する（ステップＳ１６）。これにより、ドライバ回路６３は、バッファメモリ６４に蓄積されたＯｒｄｅｒ（１）に登録されたチャネルｉのデータを、ディスク６６上のアドレスＡｉの位置に書き込む。
【０１２６】
次に、ＭＰＵ６１は、スケジュールテーブル７０において、登録されているＯｒｄｅｒ（２）以下の要素の番号を１つずつ繰り上げる（ステップＳ１７）。ここでは、Ｉ＝２，３，．．．，ｍについて、Ｏｒｄｅｒ（Ｉ−１）＝Ｏｒｄｅｒ（Ｉ）の置き換えを実行し、変数ｍの値を“１”デクリメントする。そして、ステップＳ１５以降の処理を繰り返す。
【０１２７】
ステップＳ１５においてｍ＝０であれば、Ｗｒｉｔｅ処理はすべて終了していると判断し、ステップＳ１１に移行する。
また、図１９は、Ｒｅａｄ処理のスケジューリングおよび実行を説明するフローチャートである。各チャネルではバッファメモリ６４の単位ブロック２個分のデータがドライバ回路６３によりディスク６６から先読みされ、バッファメモリ６４に一時蓄積される（ステップＳ２１）。今、チャネルｋで最初のブロックのデータがバッファメモリ６４からＬＳＩ６２へ転送中であり、次のブロックのデータは先読みが終了したとする。
【０１２８】
この時、ＭＰＵ６１は、まず、いずれかのチャネルで単位ブロック分の読み出しデータがバッファメモリ６４から送り出されたかどうかを判定する（ステップＳ２２）。送り出しが終了していなければステップＳ２２の判定を繰り返す。
【０１２９】
そして、ステップＳ２２で、チャネルｋのデータの送り出しが終了したと判定すると、既に、先読みされているチャネルｋの次のブロックのデータの終了期限情報に従って、チャネルｋのＲｅａｄ処理の終了期限Ｔｋを算出する（ステップＳ２３）。
【０１３０】
ディスク６６から読み出されたバイナリデータに従って読み出しデータを転送する場合、転送時間は、書き込み時のバッファメモリ６４での一時蓄積時間を表す終了期限情報によって決まってくる。そこで、例えば、タイマから取得した現時刻に終了期限情報に対応する時間を加算して、終了期限Ｔｋを算出する。ドライバ回路６３は、この終了期限Ｔｋまでに、次の単位ブロック分のデータをディスク６６から先読みすればよい。
【０１３１】
次に、図１８のステップＳ１３と同様にして、未処理のｍ個のＲｅａｄ処理を含むスケジュールテーブル７０の最下位に、チャネルｋのＲｅａｄ処理を登録する（ステップＳ２４）。そして、図８のステップＳ１４と同様にして、ｍ個の要素を終了期限の早い順に並べ替えて（ステップＳ２５）、ステップＳ２２〜Ｓ２５の処理を繰り返す。
【０１３２】
ＭＰＵ６１は、ステップＳ２２〜Ｓ２５のループ処理と並行して、ステップＳ２６〜Ｓ２８のループ処理を実行する。
すなわち、まず、ｍ＝０かどうかを判定する（ステップＳ２６）。
【０１３３】
ｍ＝０でなければ、未処理のＲｅａｄ処理が残っていると判断し、スケジュールテーブル７０を参照して、先頭要素Ｏｒｄｅｒ（１）に登録されたＲｅａｄ処理の実行をドライバ回路６３に指示する（ステップＳ２７）。そして、ドライバ回路６３は、ディスク６６上のアドレスＡｉの位置からチャネルｉのデータを読み出し、バッファメモリ６４に格納する。
【０１３４】
次に、ＭＰＵ６１は、図１８のステップＳ１７と同様にして、スケジュールテーブル７０においてＯｒｄｅｒ（２）以下の要素の番号を１つずつ繰り上げ（ステップＳ２８）、再び、ステップＳ２６以降の処理を繰り返す。そして、ステップＳ２６においてｍ＝０であれば、Ｒｅａｄ処理はすべて終了していると判断し、ステップＳ２２に移行する。
【０１３５】
また、Ｗｒｉｔｅ処理とＲｅａｄ処理が混在する場合は、図２０に示すような処理が行われる。ＭＰＵ３１は、まず、いずれかのチャネルでバッファメモリ６４へのアクセスが終了したかどうかを判定する（ステップＳ３１）。アクセスが終了していなければステップＳ３１の判定を繰り返す。
【０１３６】
そして、ステップＳ３１において、チャネルｋのバッファメモリ６４へのアクセスが終了したと判定すると、次に、終了したアクセスの種類がＷｒｉｔｅ処理に伴う一時蓄積とＲｅａｄ処理に伴う送り出しのいずれであるかを判定する（ステップＳ３２）。アクセスが一時蓄積であれば、図１８のステップＳ１２と同様にして、一時蓄積時間から終了期限Ｔｋを算出する（ステップＳ３３）。一方、アクセスが送り出しであれば、図１９のステップＳ２３と同様にして、次のブロックのデータの終了期限情報から終了期限Ｔｋを算出する（ステップＳ３４）。
【０１３７】
次に、図１８のステップＳ１３と同様にして、スケジュールテーブル７０の最下位にチャネルｋの処理を登録する（ステップＳ３５）。このとき、Ｗｒｉｔｅ処理の場合はＷｋが登録され、Ｒｅａｄ処理の場合はＲｋが登録される。
【０１３８】
次に、図１８のステップＳ１４と同様にして、スケジュールテーブル７０の要素を並べ替え（ステップＳ３６）、ステップＳ３１〜Ｓ３６のループ処理を繰り また、上記ループ処理と並行して、ステップＳ３７〜Ｓ４１のループ処理を実行する。すなわち、まず、ｍ＝０かどうかを判定する（ステップＳ３７）。
【０１３９】
ｍ＝０でなければ、スケジュールテーブル７０を参照して、先頭要素Ｏｒｄｅｒ（１）に登録された処理の種類をチェックする（ステップＳ３８）。そして、「Ｗ」が登録されていれば、Ｗｒｉｔｅ処理の実行をドライバ回路６３に指示し（ステップＳ３９）、「Ｒ」が登録されていれば、Ｒｅａｄ処理の実行をドライバ回路６３に指示する（ステップＳ４０）。
【０１４０】
次に、図１８のステップＳ１７と同様にして、スケジュールテーブル７０においてＯｒｄｅｒ（２）以下の要素の番号を１つずつ繰り上げ（ステップＳ４１）、ステップＳ３７に戻る。そして、ステップＳ３７においてｍ＝０であれば、Ｒｅａｄ／Ｗｒｉｔｅ処理はすべて終了していると判断し、ステップＳ３１に移行する。
【０１４１】
ところで、図１８のステップＳ１４、図１９のステップＳ２５、および図２０のステップＳ３６においてスケジュールテーブル７０の要素を並べ替える場合、終了期限Ｔの比較方法に応じていくつかのアルゴリズムが考えられる。
【０１４２】
例えば、図１７において新たに登録された要素を１つ上の順位の要素と比較するアルゴリズムは、図２１のようになる。このアルゴリズムでは、ＭＰＵ６１は、まず、新たに登録されたＯｒｄｅｒ（ｍ）の終了期限Ｔｋ（ｍ）をＯｒｄｅｒ（ｍ−１）の終了期限Ｔｊ（ｍ−１）と比較し、Ｔｋ（ｍ）＞Ｔｊ（ｍ−１）であれば、並べ替えを終了する。
【０１４３】
また、Ｔｋ（ｍ）＝Ｔｊ（ｍ−１）であれば、現在のヘッドのブロックアドレスＡｈ、Ｏｒｄｅｒ（ｍ）のブロックアドレスＡｋ（ｍ）、およびＯｒｄｅｒ（ｍ−１）のブロックアドレスＡｊ（ｍ−１）の関係をチェックする。そして、Ａｋ（ｍ）−Ａｈ＞Ａｊ（ｍ−１）−Ａｈであれば、Ｏｒｄｅｒ（ｍ）の方がＯｒｄｅｒ（ｍ−１）よりもヘッドのシーク時間が長くなると判断して、並べ替えを終了する。
【０１４４】
｛Ｔｋ（ｍ）＝Ｔｊ（ｍ−１）かつＡｋ（ｍ）−Ａｈ≦Ａｊ（ｍ−１）−Ａｈ｝、またはＴｋ（ｍ）＜Ｔｊ（ｍ−１）であれば、Ｏｒｄｅｒ（ｍ）とＯｒｄｅｒ（ｍ−１）を入れ替える。そして、ｍの値を“１”デクリメントして、同様の処理を繰り返す。
【０１４５】
多くの場合、新たに登録された処理の終了期限は既に登録されている処理のそれよりも遅いことが期待できるので、このようなアルゴリズムによれば、並べ替え処理の時間が最小限に押さえられる。
【０１４６】
また、図１７において新たに登録された要素を、二分探索手法を用いてスケジュールテーブル７０に登録するアルゴリズムは、図２２のようになる。このアルゴリズムでは、ＭＰＵ６１は、まず、Ｏｒｄｅｒ（ｍ）の終了期限Ｔｋ（ｍ）をＯｒｄｅｒ（ｍ／２）の終了期限Ｔｊ（ｍ／２）と比較する。
【０１４７】
そして、Ｔｋ（ｍ）＞Ｔｊ（ｍ／２）であれば、次に、Ｏｒｄｅｒ（ｍ／２）とＯｒｄｅｒ（ｍ）の間のさらに半分の順位の要素Ｏｒｄｅｒ（３ｍ／４）を比較対象とし、Ｔｋ（ｍ）をＴｊ（３ｍ／４）と比較する。一方、Ｔｋ（ｍ）＜Ｔｊ（ｍ／２）であれば、次に、Ｔｋ（ｍ）をＴｊ（ｍ／４）と比較する。
【０１４８】
このような比較処理を繰り返して、Ｔｋ（ｍ）が属する範囲を徐々に絞り込んでいき、最後に確定した順位にＯｒｄｅｒ（ｍ）を挿入する。これにより、２のべき乗程度の回数で比較が終了し、並べ替えが比較的短時間で終了する。
【０１４９】
次に、図２３から図２９までを参照しながら、複数のチャンネルでリアルタイムの書き込み要求が発生した場合に、ディスク６６上の適切な書き込み領域を割り当てるスケジューリング方法について説明する。
【０１５０】
前述したように、通常、ディスク６６には１つ以上のトラックからなる複数のゾーンが設けられている。ＺＣＡＶ方式の場合、外周のゾーンの記憶容量は内周のゾーンのそれよりも大きいため、外周のゾーンの転送レートは内周のゾーンのそれよりも大きくなる。そこで、このようなゾーンによる転送レートの違いを考慮し、状況に応じて書き込み対象のゾーンを動的に変更することにする。
【０１５１】
図２３は、リアルタイムの複数の書き込み要求に対して、Ｗｒｉｔｅ処理の数に応じてゾーンを決定する処理の第１の原理を説明するフローチャートである。ＭＰＵ６１は、まず、複数チャネルのＲｅａｄ／Ｗｒｉｔｅのリアルタイム命令に従い、一定のブロック単位でデータをバッファメモリ６４に一時蓄積する（ステップＳ５１）。上述したように、単位ブロックのサイズは、通常、６４ＫＢ程度である。
【０１５２】
次に、リアルタイムのＷｒｉｔｅ命令の実行数が増えた場合には、その実行数に従ってディスク６６上の書き込みゾーンをより外周に変更し（ステップＳ５２）、Ｗｒｉｔｅ命令の実行数が減った場合には、その実行数に従って書き込みゾーンをより内周に変更する（ステップＳ５３）。
【０１５３】
この方法では、Ｗｒｉｔｅ命令の実行数とゾーンとがあらかじめ対応付けられており、同時に実行するＷｒｉｔｅ処理の数に応じて書き込みゾーンを移動することで、転送レートの最適化が図られる。
【０１５４】
例えば、ＭＰＵ６１は、ステップＳ５２においては、書き込みアドレスを実行数に対応する、より外周のゾーンに移動し、ステップＳ５３においては、書き込みアドレスを実行数に対応する、より内周のゾーンに移動する。このように、Ｗｒｉｔｅ処理の数が増えた場合に、より転送レートの高い外周のゾーンを利用することで、処理効率が向上する。
【０１５５】
また、図２４は、リアルタイムの複数の書き込み要求に対して、Ｗｒｉｔｅ処理の転送レートに応じてゾーンを決定する処理の第２の原理を説明するフローチャートである。ＭＰＵ６１は、まず、複数チャネルのＲｅａｄ／Ｗｒｉｔｅのリアルタイム命令に従い、一定のブロック単位でデータをバッファメモリ６４に一時蓄積する（ステップＳ６１）。
【０１５６】
次に、リアルタイムのＷｒｉｔｅ命令の実行数が増えた場合には、それらの命令の実行レートの合計に従ってディスク３６上の書き込みゾーンをより外周に変更し（ステップＳ６２）、Ｗｒｉｔｅ命令の実行数が減った場合には、それらの命令の実行レートの合計に従って書き込みゾーンをより内周に変更する（ステップＳ６３）。
【０１５７】
この方法では、複数のＷｒｉｔｅ命令が要求する転送レートの総和と各ゾーンの転送レートとの関係を考慮してゾーンを移動することで、図２３の方法よりさらに綿密な最適化が図られる。
【０１５８】
ＭＰＵ６１は、ステップＳ６２においては、例えば、複数のＷｒｉｔｅ命令が要求する転送レートの総和が現在のヘッド位置に対応するゾーンの基準転送レートを上回るならば、書き込みアドレスをより外周のゾーンに移動する。
【０１５９】
また、ステップＳ６３においては、例えば、転送レートの総和が現在のゾーンの基準転送レートを下回り、かつ、より内周のゾーンの基準転送レートがその総和を上回るならば、書き込みアドレスをそれより内周のゾーンに移動する。このように、複数のＷｒｉｔｅ命令が要求する転送レートの総和に応じて、より最適なゾーン領域に移動することで、ディスク６６を効率的に使用して、ディスク６６へのアクセス効率を向上することができる。
【０１６０】
図２５は、ディスク６６上の複数のゾーンと各ゾーンの転送レートの例を示している。ディスク３６は、６つのゾーンＺ１〜Ｚ６に分割され、ゾーンＺ１、Ｚ２、Ｚ３、Ｚ４、Ｚ５、Ｚ６の容量は、それぞれ、１トラック当たり９２ＫＢ（キロバイト）、１００ＫＢ、１０８ＫＢ、１１６ＫＢ、１２４ＫＢ、１３２ＫＢである。
【０１６１】
ディスク６６の回転数を１００００ｒｐｍ（６ｍｓ／回転）とすると、ゾーンＺ１、Ｚ２、Ｚ３、Ｚ４、Ｚ５、Ｚ６の転送レートは、それぞれ、１５．４ＭＢ／ｓ、１６．８ＭＢ／ｓ、１８．１ＭＢ／ｓ、１９．５ＭＢ／ｓ、２０．９ＭＢ／ｓ、２２．３ＭＢ／ｓとなる。一般に、最内周のゾーンの転送レートは最外周のゾーンの６０％程度である。
【０１６２】
図２６は、図２３のゾーン決定処理に従って、図２５のようなゾーンにデータを書き込む処理の例を示している。まず、Ｗｒｉｔｅ処理のチャネル数が１（Ｃｈ１）の場合は、最内周のゾーンＺ１が選択され、トラックの方向（円周方向）に沿ってＣｈ１、Ｃｈ１、Ｃｈ１、Ｃｈ１、．．．の順に、ゾーンＺ１の連続アドレスにデータが書き込まれる。また、チャネル数が２（Ｃｈ１、Ｃｈ２）の場合は、ゾーンＺ２が選択され、Ｃｈ１、Ｃｈ２、Ｃｈ１、Ｃｈ２、．．．の順に、ゾーンＺ２の連続アドレスにデータが書き込まれる。
【０１６３】
チャネル数が３（Ｃｈ１〜Ｃｈ３）の場合は、ゾーンＺ３が選択され、Ｃｈ１、Ｃｈ２、Ｃｈ３、．．．の順に、ゾーンＺ３の連続アドレスにデータが書き込まれる。また、チャネル数が４（Ｃｈ１〜Ｃｈ４）の場合は、ゾーンＺ４が選択され、Ｃｈ１、Ｃｈ２、Ｃｈ３、Ｃｈ４、．．．の順に、ゾーンＺ４の連続アドレスにデータが書き込まれる。チャネル数が５（Ｃｈ１〜Ｃｈ５）の場合は、ゾーンＺ５が選択され、Ｃｈ１、Ｃｈ２、Ｃｈ３、Ｃｈ４、Ｃｈ５、．．．の順に、ゾーンＺ５の連続アドレスにデータが書き込まれる。また、チャネル数が６（Ｃｈ１〜Ｃｈ６）の場合は、ゾーンＺ６が選択され、Ｃｈ１、Ｃｈ２、Ｃｈ３、Ｃｈ４、Ｃｈ５、Ｃｈ６、．．．の順に、ゾーンＺ６の連続アドレスにデータが書き込まれる。
【０１６４】
また、図２４のゾーン決定処理に従ってデータを書き込む場合は、各ゾーン毎に基準転送レートが設定され、Ｗｒｉｔｅ処理の転送レートの総和をこの基準転送レートと比較して、書き込みゾーンが決定される。各Ｗｒｉｔｅ処理の転送レートは、例えば、バッファメモリ６４における単位ブロック当たりの一時蓄積時間から計算される。
【０１６５】
基準転送レートとしては、図２５に示した各ゾーンの転送レート以下の値が用いられる。ここでは、シーク待ち、回転待ちの時間を考慮して、各ゾーンの転送レートの３０％程度の値を用いることにし、ゾーンＺ１、Ｚ２、Ｚ３、Ｚ４、Ｚ５、Ｚ６の基準転送レートを、それぞれ、５．０ＭＢ／ｓ、５．５ＭＢ／ｓ、６．０ＭＢ／ｓ、６．５ＭＢ／ｓ、７．０ＭＢ／ｓ、７．５ＭＢ／ｓとする。
【０１６６】
まず、Ｗｒｉｔｅ処理の転送レートの総和が５．０ＭＢ／ｓ以下の場合は、最内周のゾーンＺ１が選択され、図２６と同様にして、ゾーンＺ１の連続アドレスにデータが書き込まれる。また、転送レートの総和が５．０ＭＢ／ｓより大きく５．５ＭＢ／ｓ以下の場合は、ゾーンＺ２の連続アドレスにデータが書き込まれる。
【０１６７】
転送レートの総和が５．５ＭＢ／ｓより大きく６．０ＭＢ／ｓ以下の場合は、ゾーンＺ３の連続アドレスにデータが書き込まれ、それが６．０ＭＢ／ｓより大きく６．５ＭＢ／ｓ以下の場合は、ゾーンＺ４の連続アドレスにデータが書き込まれる。また、転送レートの総和が６．５ＭＢ／ｓより大きく７．０ＭＢ／ｓ以下の場合は、ゾーンＺ５の連続アドレスにデータが書き込まれ、それが７．０ＭＢ／ｓより大きく７．５ＭＢ／ｓ以下の場合は、ゾーンＺ６の連続アドレスにデータが書き込まれる。
【０１６８】
このように、各チャネルのデータは、ディスク６６上の同じゾーンまたは近接したゾーンに集中して、かつ、スケジューリングされた順序に従ってできる限りシーケンシャルに書き込まれる。これにより、ディスク６６のシーク待ち、回転待ち等の時間を短縮することができる。
【０１６９】
また、割り当てられたゾーンが実行時に一杯の場合（空き領域がない場合）は、自動的により外側の隣接するゾーンが選択され、外側のゾーンがすべて一杯の場合は、内側のゾーンが選択される。
【０１７０】
図２７は、図２３のゾーン決定処理に基づくＷｒｉｔｅ処理のフローチャートである。ストレージデバイス５１は、まず、Ｎチャネルの同時Ｗｒｉｔｅ命令を受け付けてそれらを実行し（ステップＳ７１）、同時Ｗｒｉｔｅ処理のチャネル数の増減があるかどうかをチェックする（ステップＳ７２）。
【０１７１】
チャネル数が増えた場合は、書き込みゾーンを１つ外側に移動し、チャネル数Ｎを１だけインクリメントして（ステップＳ７３）、Ｎチャネルの同時Ｗｒｉｔｅ処理をスケジューリングされた順序で実行する（ステップＳ７４）。このとき、各チャネルのデータは、選択されたゾーンにシーケンシャルに書き込まれ、ステップＳ７２以降の処理が繰り返される。
【０１７２】
ステップＳ７２においてチャネル数が減った場合は、書き込みゾーンを内側に移動し、チャネル数Ｎを１だけデクリメントして（ステップＳ７５）、Ｎ＝０となったかどうかをチェックする（ステップＳ７６）。Ｎ＝０でなければ、ステップＳ７４以降の処理を行う。
【０１７３】
また、ステップＳ７２においてチャネル数が変化していない場合は、書き込みゾーンを移動せずにステップＳ７４以降の処理を行う。そして、ステップＳ７６においてＮ＝０となれば、同時Ｗｒｉｔｅ処理がすべて終了したと判断し、処理を終了する。
【０１７４】
ところで、図２５に示したような内周と外周の転送レートが異なるディスク６６では、内周ゾーンに集中してデータを書き込むことが困難である。この場合、内周と外周のゾーンを対にして交互にアクセスすることで、ディスク全体で転送レートが平均化され、一定の転送レートが得られると考えられる。例えば、図１２の６つのゾーンの平均転送レートは、１８．８ＭＢ／ｓである。
【０１７５】
図２８は、このようなＷｒｉｔｅ処理のフローチャートである。ストレージデバイス５１は、まず、複数チャネルのＷｒｉｔｅのリアルタイム命令に従い、一定のブロック単位でデータをバッファメモリ６４に一時蓄積する（ステップＳ８１）。
【０１７６】
次に、ドライバ回路６３は、ゾーン対の片方のゾーンに対して、複数チャネルのＷｒｉｔｅ命令に対応する実行数分のブロックデータを連続して書き込み（ステップＳ８２）、ゾーン対の他方のゾーンにヘッドを移動する（シークする）（ステップＳ８３）。
【０１７７】
次に、移動先のゾーンに対して、複数チャネルのＷｒｉｔｅ命令に対応する実行数分のブロックデータを連続して書き込み（ステップＳ８４）、ゾーン対の他方のゾーンにヘッドを戻す（ステップＳ８５）。
【０１７８】
次に、書き込みデータが終了したかどうかを判定し（ステップＳ８６）、データが終了していなければ、ステップＳ８２以降の処理を繰り返す。そして、ステップＳ８６においてデータが終了すれば、処理を終了する。
【０１７９】
この方法によれば、ゾーン対となる内周と外周のゾーン間をヘッドが交互に移動しながら、各ゾーンにシーケンシャルにデータが書き込まれる。言い換えれば、データはディスク３６上の一部分に集中して書き込まれるのではなく、ゾーン単位で分散させながら書き込まれる。これにより、ディスク全体で転送レートが平均化されるため、処理効率が向上する。
【０１８０】
図２９は、図２８の書き込み処理の例を示している。Ｗｒｉｔｅ処理のチャネル数を３（Ｃｈ１〜Ｃｈ３）とし、最内周のゾーンＺ１と最外周のゾーンＺ６をゾーン対とすると、まず、ゾーンＺ１において、Ｃｈ１、Ｃｈ２、Ｃｈ３、．．．の順に連続アドレスにデータが書き込まれ、次に、ゾーンＺ６にシークして、Ｃｈ１、Ｃｈ２、Ｃｈ３、．．．の順に連続アドレスにデータが書き込まれる。このような動作がデータの書き込みが終了するまで繰り返され、ディスクヘッドはゾーンＺ１とゾーンＺ６の間を往復しながら、３チャネルのデータの連続書き込みを行う。
【０１８１】
以上説明したように、ディスクアクセスの制御は、主として、図１２のＭＰＵ６１により行われる。ＭＰＵ６１は、図３０に示すように、マイクロプロセッサ７１とメモリ７２を含む。メモリ７２は、例えば、ＲＯＭ（ｒｅａｄ ｏｎｌｙ ｍｅｍｏｒｙ）、ＲＡＭ（ｒａｎｄｏｍ ａｃｃｅｓｓ ｍｅｍｏｒｙ）等を含み、制御に用いられるプログラムとデータを格納する。マイクロプロセッサ７１は、メモリ７２を利用してプログラムを実行することにより、必要な処理を行う。
【０１８２】
バス７５に接続された媒体駆動装置７３は、可搬記録媒体７４を駆動し、その記録内容にアクセスする。可搬記録媒体７４としては、メモリカード、フロッピーディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ Ｄｉｓｋ Ｒｅａｄ Ｏｎｌｙ Ｍｅｍｏｒｙ）、光ディスク、光磁気ディスク（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌ ｄｉｓｋ）等、任意のコンピュータ読み取り可能な記録媒体が用いられる。この可搬記録媒体７４に上述のプログラムとデータを格納しておき、必要に応じて、それらをＭＰＵ６１のメモリ７２にロードして使用することもできる。
【０１８３】
さらに、ＭＰＵ６１は、ＬＳＩ６２を介して、外部のネットワークから上述のプログラムとデータを受け取り、それらをメモリ７２にロードして使用することもできる。
【０１８４】
本発明は、ホームネットワークにおける映像／音声データの処理だけでなく、データをリアルタイムで処理しなければならないような任意の用途に適用することができる。例えば、処理対象のデータをコンピュータシステムへ取り込む場合にも、同様の制御が可能である。また、アクセス対象としては、磁気ディスク、光ディスク、光磁気ディスクを始めとして、メモリカード等も含む任意の記録媒体を用いることができる。
【０１８５】
本発明によれば、実際の書き込みデータの転送レートに従って終了期限を決め、それに基づいてディスクアクセスのスケジューリングを行うことで、多数のチャネルの記録／再生が可能になる。また、リアルタイムの複数の書き込み要求に対して書き込み領域による転送レートの違いを利用することで、処理が効率化され、さらに多数のチャネルの記録／再生が可能になる。
【０１８６】
図３１から図３３は、本発明を、記録媒体としてＡＳＭＯに適用した実施形態の記録方式を説明する図である。尚、本発明は、ＡＳＭＯに限定されるものではなく、ランド・グループ記録方式を採用している他の記憶媒体にも適用可能である。
【０１８７】
図３１から図３３では、理解を容易にするために、論理ゾーンＬＺ１、ＬＺ２、ＬＺ３の３つの論理ゾーンにデータを記録する例を示している。
図３１に示すように、各論理ゾーンＬＺ１、ＬＺ２、ＬＺ３は、隣接するグループ１０１とランド１０２を有し、欠陥セクタに対処するために、グループ１０１とランド１０２のそれぞれに後続して、交替セクタ１０４、１０５が設けられている。
【０１８８】
図３２は、１チャンネルのデータを論理ゾーンＬＺ１、ＬＺ２、ＬＺ３にシーケンシャルに記録する方法を説明する図である。
同図（ａ）は、論理ゾーン単位で記録する例であり、論理ゾーンＬＺ１、ＬＺ２、ＬＺ３の順に、１〜６の順序でデータが記録される。すなわち、この場合、各論理ゾーンにおいて、グループ１０１、ランド１０２の順にデータが記録される。
【０１８９】
同図（ｂ）は、グループ１０１のみに記録する例であり、論理ゾーンＬＺ１、ＬＺ２、ＬＺ３の順に、それぞれのグループ１０１に、データが順に記録される。同図（ｃ）は、ランド１０２のみに記録する例であり、論理ゾーンＬＺ１、ＬＺ２、ＬＺ３の順に、それぞれのランド１０２に、データが順に記録される。
【０１９０】
図３３は、２チャンネルのデータを論理ゾーンＬＺ１、ＬＺ２、ＬＺ３に同時記録する方法を説明する図である。
同図において、１−１〜１−３はチャンネルＣｈ１のデータ、２−１〜２−３はチャンネルＣｈ２のデータを示している。この場合、論理ゾーンＬＺ１、ＬＺ２、ＬＺ３の順に、グループ１０１とランド１０２に交互にデータが記録されるが、チャンネルＣｈ１のデータは論理ゾーンＬＺ１、ＬＺ２、ＬＺ３のグループ１０１に記録され、チャンネルＣｈ２のデータは論理ゾーンＬＺ１、ＬＺ２、ＬＺ３のランド１０２に記録される。このように、チャンネルＣｈ１のデータとチャンネルＣｈ２のデータを、グループ１０１とランド１０２に分けて記録することで、一方のチャンネルの記録データが削除された場合でも、他方のチャンネルのデータの再生に支障が及ぶことはない。また、記録データが削除された場所に、新たなチャンネルのデータを集中して高速に記録することができる。
【０１９１】
図３４は、チャンネルＣｈ１，Ｃｈ２の２チャンネル同時記録を、図３３（ａ）に示す方法で行った後に，チャンネルＣｈ２の記録削除を行い、その後チャンネルＣｈ１の記録データのガーベージコレクションを実施する処理の例を示す図である。
【０１９２】
まず、同図（ａ）に示すように、論理ゾーンＬＺ１、ＬＺ２、ＬＺ３のグループ１０１にチャンネルＣｈ１のデータを、論理ゾーンＬＺ１、ＬＺ２、ＬＺ３のランド１０２にチャンネルＣｈ２のデータを同時記録したとする。この場合、ヘッドのシークは不要である。
【０１９３】
次に、同図（ｂ）に示すように、論理ゾーンＬＺ１、ＬＺ２、ＬＺ３のランド１０２からチャンネルＣｈ２のデータを削除したとする。この場合、チャンネルＣｈ１のデータは論理ゾーンＬＺ１、ＬＺ２、ＬＺ３のグループ１０１に連続して記録されているので、チャンネルＣｈ１のデータの再生はスムーズに実行できる。また、論理ゾーンＬＺ１、ＬＺ２、ＬＺ３のランド１０２に、新たに、チャンネルＣｈ２’のデータを記録するようにすることも可能となる。
【０１９４】
また、上述のようにしてチャンネルＣｈ２のデータを削除した後に、論理ゾーンＬＺ３以降に、新たに、２チャンネルの同時記録を実行したい場合には、同図（ｃ）に示すようにして、チャンネルＣｈ１のデータのガーベージコレクションを実施する。この場合、論理ゾーンＬＺ１のランド１０２に論理ゾーンＬＺ２のグループ１０１に記録されたチャンネルＣｈ１のデータが移動され、論理ゾーンＬＺ２のグループ１０１に論理ゾーンＬＺ３のチャンネルＣｈ１のデータが移動される。この結果、同図（ｃ）に示すように、論理ゾーンＬＺ３のグループ１０１とランド１０２が共に空き領域となる。このことにより、同図（ｅ）に示すように、論理ゾーンＬＺ３以降のグループ１０１とランド１０２に、それぞれ、チャンネルＣｈ３，Ｃｈ４のデータを同時記録することが可能になる。
【０１９５】
図３３及び図３４の動作を実現する本実施形態の処理手順を、図３５のフローチャートを参照しながら説明する。
まず、記録、再生、または削除命令をスタック（プッシュ・アップ・スタック）に格納する（ステップＳ９１）。
【０１９６】
次に、スタックに命令があるか判定し（ステップＳ９２）、命令がなければ処理を終了する。
一方、ステップＳ９２で、命令が存在すると判定した場合には、スタックから命令を取り出し、その命令が１ｃｈあるいは２ｃｈのいずれの記録命令、再生命令、または削除命令であるか判定する（ステップＳ９３）。
【０１９７】
そして、１ｃｈの記録命令であれば、論理ゾーン、グループ、またはランドに沿って記録する（ステップＳ９４）。また、２ｃｈの記録命令であれば、一方のチャンネルをグループに沿って、他方のチャンネルをランドに沿って記録する（ステップＳ９５）。ステップＳ９４、Ｓ９５の処理の後、ステップＳ９２に戻る。
【０１９８】
また、ステップＳ９３で命令が１ｃｈあるいは２ｃｈのいずれの記録命令でもないと判定した場合には、次に、再生命令または削除命令のいずれであるか判定する（ステップＳ９６）。そして、再生命令であれば、１ｃｈの再生を行い（ステップＳ９７）、ステップＳ９２に戻る。
【０１９９】
一方、ステップＳ９６で削除命令と判定した場合には、次に、その削除命令が２ｃｈ記録の片方の削除であるか判定する（ステップＳ９８）。すなわち、２ｃｈ同時記録した場合の片方のチャンネルの削除であるか判定する（図３３参照）。
【０２００】
そして、２ｃｈ記録の片方の削除ではなく、１ｃｈ記録の削除の命令であれば、指定された１ｃｈ記録を削除し（ステップＳ９９）、ステップＳ９２に戻る。すなわち、図３２に示すような１ｃｈ記録の削除でれば、論理ゾーン、グループ、またはランドから指定されたチャンネルの記録を削除する。
【０２０１】
一方、ステップＳ９８で２ｃｈ同時記録した場合の片方のチャンネルの削除命令であれば、その片方のチャンネルの記録を論理ゾーンのグループまたはランドから削除する（ステップＳ１００）。この場合、論理ゾーンのグループまたはランドに空きが生じる。
【０２０２】
次に、ディスク上に論理ゾーンの空き領域が十分にあるか判定する（ステップＳ１０１）。そして、空き領域が十分にあれば、ステップＳ９２に戻るが、空き領域が不足していれば、次の２ｃｈ同時記録に備え、ステップＳ１００で削除されなかったチャンネルの記録を、ステップＳ１００でグループまたはランドに空きが生じた論理ゾーンにガーベージコレクションする（ステップＳ１０２）。
【０２０３】
このガーベージコレクションは、図３３（ｂ），（ｃ）に示す方法により行う。これにより、空き領域となる論理ゾーンが増加する。ステップＳ１０２の処理の後、ステップＳ９２に戻る。
【０２０４】
以上のようにして、２ｃｈの同時記録において、グループ或いはランドの連続性をうまく利用して記録することで、後で、１ｃｈの再生をスムーズに行える。また、片方のチャンネルの削除を行っても飛び空き領域を作ることなく、それに伴うガーベージコレクションの実行回数も削減することができる。
【０２０５】
次に、ＺＣＡＶにより回転制御されるディスクにおける内周と外周の転送速度（転送レート）の違いを吸収する方法として、２チャンネルのデータを内周と外周に分散して記録する例を示す。図３６に示すように、内周と外周の転送速度が異なるＺＣＡＶによりディスク１１０の回転制御を行うドライブでは、転送速度の遅い内周に集中して記録することは困難となる、そこで、内周のゾーンと外周のゾーンを対にして、これらのゾーンを交互にアクセスすることで、転送速度が平均化され、ディスク１１０全体で一定レートが得られる。
【０２０６】
図３６は、上述した図２５のディスク６６と同様な形式で、ディスク１１０を６つのゾーン１〜６に分割した例であり、平均転送レートとして、１８．８ＭＢ／ｓが得られる。
【０２０７】
図３７は、図３６に示すゾーン分割構成のディスク１１０に、２ｃｈの同時記録を適用した場合の処理を説明する図である。まず、同図（ａ）に示すようにゾーン１とゾーン６を対にして、ゾーン６、１に、それぞれ、チャンネルＣｈ１、２のデータを同時記録したとする。この場合、トラック（円周）方向に各チャンネルのデータを記録する。この場合、ヘッドのシークは、ゾーン６とゾーン１に対し交互に行われる。
【０２０８】
次に、同図（ａ）に示すように、ゾーン１からＣｈ２の記録を削除したとする。このことにより、ゾーン１に、新たに、チャンネルＣｈ２’のデータを集中して記録することが可能になる。また、内周の空き領域のみが増加して、２ｃｈの同時記録をする場所が少なくなってきた場合には、同図（ｂ）に示すように、転送レートの高いゾーン６の有効利用を図るために、ゾーン６に記録されているＣｈ１のデータをＣｈ２のデータの削除により空きができたゾーン１に移動するガーベージコレクションを実施する。
【０２０９】
そして、ゾーン６に空き領域を確保した上で、同図（ｃ）に示すように、ゾーン６とゾーン２を対にして、ゾーン６、２に、それぞれ、チャンネルＣｈ３、４の同時記録を行う。
【０２１０】
図３８は、図３７に示す処理を実現するアルゴリズムを説明するフローチャートである。
まず、記録、再生、または削除命令をスタック（プッシュ・アップ・スタック）に格納する（ステップＳ１１１）。
【０２１１】
次に、スタックに命令があるか判定し（ステップＳ１１２）、命令がなければ処理を終了する。
一方、ステップＳ１１２で、命令が存在すると判定した場合には、スタックから命令を取り出し、その命令が１ｃｈあるいは２ｃｈのいずれの記録命令、再生命令、または削除命令であるか判定する（ステップＳ１１３）。
【０２１２】
そして、１ｃｈの記録命令であれば、内周のゾーンを優先して指定されたチャンネルのデータを記録する（ステップＳ１１４）。また、２ｃｈの記録命令であれば、一方のチャンネルを内周のゾーンに沿って、他方のチャンネルを外周のゾーンに沿って、交互に記録する（ステップＳ１１５）。ステップＳ１１４、Ｓ１１５の処理の後、ステップＳ１１２に戻る。
【０２１３】
また、ステップＳ１９３で命令が１ｃｈあるいは２ｃｈのいずれの記録命令でもないと判定した場合には、次に、再生命令または削除命令のいずれであるか判定する（ステップＳ１１６）。そして、再生命令であれば、１ｃｈの再生を行い（ステップＳ１９７）、ステップＳ１１２に戻る。
【０２１４】
一方、ステップＳ１１６で削除命令を判定した場合には、次に、その削除命令が２ｃｈ記録の片方の削除であるか判定する（ステップＳ１１８）。すなわち、２ｃｈ同時記録した場合の片方のチャンネルの削除であるか判定する（図３７（ａ）参照）。
【０２１５】
そして、２ｃｈ記録の片方の削除ではなく、１ｃｈ記録の削除の命令であれば、指定された１ｃｈ記録を削除し（ステップＳ１１９）、ステップＳ１１２に戻る。
【０２１６】
一方、ステップＳ１２８で２ｃｈ同時記録した場合の片方のチャンネルの削除命令であれば、その片方のチャンネルの記録を削除する（ステップＳ１２０）。この場合、内周または外周のゾーンに空き領域が生じる。
【０２１７】
次に、記録が削除されたゾーンが内周側であるか判定する（ステップＳ１２１）。そして、内周側でなければ、ステップＳ１１２に戻るが、内周側であれば、次の２ｃｈ同時記録に備え、ステップＳ１００で削除されなかった外周側のゾーンに記録されているデータを内周側のゾーンに移動するガーベージコレクションを実施する（ステップＳ１２２）。
【０２１８】
このガーベージコレクションは、図３７（ｂ）に示す方法により行う。これにより、外周側のゾーンの空き領域が増加する。ステップＳ１２２の処理の後、ステップＳ１１２に戻る。
【０２１９】
以上のようにして、転送速度の遅い内周側のゾーンと転送速度の速い外周側のゾーンとを対にして利用することにより、２チャンネル記録を高速化することができる。
【０２２０】
図３９及び図４０は、図３８の詳細フローチャートである。図３９及び図４０のフローチャートの説明に先立って、本フローチャートで使用する管理テーブルについて説明する。
【０２２１】
本フローチャートでは、ｍチャンネルの映像データに対して、各チャンネル毎のストリームデータの繋ぎを示すＳｔｒｅａｍという情報を定義する。図４１は、このＳｔｒｅａｍを管理するテーブル１２０の構成例を示す図である。
【０２２２】
このテーブル１２０は、ｍ個のＳｔｒｅａｍ（１）〜（ｍ）から構成される。Ｓｔｒｅａｍ（ｉ）はｉチャンネルのストリームデータの情報である（ｉ＝１，２，．．．ｍ）。各Ｓｔｒｅａｍ（ｉ）は、データが記録されている先頭アドレス（Ａｄｄ）と連続アドレスに記録されているデータ量（Ｄａｔａ）との組（Ａｄｄ，Ｄａｔａ）がリスト構造で連結されたデータ構造となっており、このリストの最後にはストリームの終了を示す情報（ＥＮＤ）が付加される。また、Ｓｔｒｅａｍ（ｉ）は、２ｃｈ記録の対象となっているかを示す“相手ｓｔｒｅａｍ”という情報を有する。１ｃｈ記録の場合、相手ｓｔｒｅａｍの値は“０”に設定される。
【０２２３】
また、図４２はディスク１１０の各ゾーンの空き領域を管理するテーブル１３０の構成例を示す図である。この例では、ディスク１１０の内周と外周を共にｎ個のゾーンに分割し、内周のｎ個のゾーン（ゾーン１〜ゾーンｎ＋１）と外周のｎ個のゾーン（ゾーンｎ＋２〜ゾーン２ｎ）を個別に管理する。各ゾーンｊ（ｊ＝１〜２ｎ）は、その中での空き領域を示す情報（Ｅｍｐｔｙ〔ｊ〕）と記録された充填領域を示す情報（Ｆｕｌｌ（ｊ））を持つ。Ｅｍｐｔｙ〔ｊ〕とＦｕｌｌ〔ｊ〕のいずれの情報も、Ｓｔｒｅａｍ（ｉ）と同様な連結リストで構成される。尚、Ｅｍｐｔｙ〔ｊ」のアドレスＡｄｄは対応ゾーンｊの空き領域の先頭アドレスをしめし、Ｆｕｌｌ〔ｊ〕のアドレスＡｄｄは対応ゾーンｊの先頭アドレスを示す。また、Ｅｍｐｔｙのデータ量は空き容量であり、Ｆｕｌｌのデータ量は記録データ量を示す。また、Ｅｍｐｔｙ〔ｊ」の初期値は（ゾーンｊの先頭アドレス，ゾーンｊのデータ量）→Ｅｎｄであり、Ｆｕｌｌ「ｋ」の初期値はＥｎｄ（記録データ量無し）である。
【０２２４】
図４３は、図３６に示すディスク１１０のゾーン構成を管理するテーブル１４０を示す図である。このテーブル１４０は、図４２においてｎ＝３とした場合に相当し、各ゾーンについて、「バイト数／トラック」、「トラック数」、「セクタ数」、及び「セクタアドレス」を管理している。ゾーン１〜６には、それぞれ、ゾーンｎｏ．（ゾーン番号）として“１”〜“６”が割り当てられている。また、各ゾーン１〜６には１０００個のトラックが設けられている。また、１セクタは５１２Ｂ（バイト）であり、ゾーン１には、１８４ｋ（１８４０００）のセクタが設けられている。図４３に示されているように、セクタ数は外周のゾーン程多くなり、ゾーン６では２６４ｋ（２６４０００）のセクタが設けられている。セクタアドレスは、ゾーン１の先頭セクタから順にシリアルに割り当てられている。図４３には、各ゾーンの先頭セクタアドレスと最終セクタアドレスが示されており、ゾーン１の先頭セクタアドレスは“１”、ゾーン６の最終セクタアドレスは“１３４４０００”となっている。
【０２２５】
以下、図３９及び図４０のフローチャートの処理手順を、説明する。
尚、これらのフローチャートで示されているアドレスは、セクタアドレスである。
【０２２６】
まず、ディスク１１０の空きゾーンを管理するためにテーブル１２０、１３０を初期化する（ステップＳ１３１）。この初期化処理では、以下の（１）〜（３）の処理を行う。
【０２２７】
（１） テーブル１２０の初期化 まだ、映像データを記録していないので、Ｓｔｒｅａｍ（１）〜（ｍ）に「ＥＮＤ」を登録し、相手ｓｔｒｅａｍを“０”に初期化する（最初は、１ｃｈ記録を対象とする）。
【０２２８】
（２） テーブル１３０の初期化 内周ゾーン（番号１〜ｎ）と外周ゾーン（番号ｎ＋１〜２ｎ）を定義し、これら２ｎ個のゾーンのＥｍｐｔｙ情報とＦｕｌｌ情報を初期化する。Ｅｍｐｔｙには、該当するゾーンの先頭アドレス、該ゾーンのデータ量を登録し、最後にＥｎｄを付加する。Ｆｕｌｌには、Ｅｎｄだけを登録する。
【０２２９】
（３） これから記録していく最初の内周ゾーンのゾーン番号を示すパラメータｉｎｎｅｒ−ｚｏｎｅを“１”に、これから記録していく最初の外周ゾーンのゾーン番号を示すパラメータｏｕｔｅｒ−ｚｏｎｅを“２ｎ”に設定する。また、Ｓｔｒｅａｍ番号を“１”に設定する。
【０２３０】
次に、命令の種類が、１ｃｈ記録なのか、２ｃｈ記録なのか、それら以外なのか判断し（ステップＳ１３２）、１ｃｈ記録であればステップＳ１３３に、２ｃｈ記録であればステップＳ１４０に、その他であればステップＳ１４７に進む。
【０２３１】
ステップＳ１３３では、１ｃｈ記録なので、内周に記録することを優先し、内周用のＳｔｒｅａｍ番号が設定される変数ｍ２にｍの値を代入し、Ｓｔｒｅａｍ番号ｍの値を“１”インクリメントする。また、相手ｓｔｒｅａｍはまだ存在しないので、相手ｓｔｒｅａｍは“０”に設定する。この処理により、ｍ２の値は最初は、“１”となる。
【０２３２】
次に、テーブル１３０において、内側のゾーン（ｉｎｎｅｒ−ｚｏｎｅ）から、各ゾーンの空き領域を示すＥｍｐｔｙリストを検索し、データ量が０より大きいＥｍｐｔｙ〔Ｉ〕（Ｉ＝ｉｎｎｅｒ−ｚｏｎｅ〜２ｎ＋１）が見つかれば（ステップＳ１３４）、そのＥｍｐｔｙ〔Ｉ〕のリスト内容に従い、ゾーンＩに１ｃｈ記録を行う（ステップＳ１３５）。
【０２３３】
ステップＳ１３５での記録の途中で、随時、Ｅｍｐｔｙ〔Ｉ〕にリストされている全ての領域に記録したか判断し（ステップＳ１３６）、全ての領域に記録すれば、テーブル１２０のＳｔｒｅａｍ（ｍ２）にＥｍｐｔｙ〔Ｉ〕のリストを追加する。これにより、Ｓｔｒｅａｍ（ｍ２）にＳｔｒｅａｍ番号ｍ２のストリームデータのゾーンＩ上の記録領域が登録される。次に、Ｅｍｐｔｙ〔Ｉ〕のリストをＥｎｄのみとする。これにより、ゾーンＩに空き領域がないことが、Ｅｍｐｔｙ〔１〕に登録される。また、Ｆｕｌｌ〔Ｉ〕には、対象ゾーンＩの全領域にデータが記録されたことを示すために、（ゾーンＩの先頭アドレス、ゾーンＩのデータ量）→Ｅｎｄのリストを登録する。そして、Ｉを“１”インクリメントし、対象ゾーンを１つ外周側に移す（ステップＳ１３７）。
【０２３４】
次に、１ｃｈの記録が終了したか判断し（ステップＳ１３８）、記録が終了していれば、ステップＳ１３９に進むが、まだ、Ｓｔｒｅａｍ番号ｍ２のストリームデータの全記録を終了していなければ、ステップＳ１３５に戻る。
【０２３５】
このようにして、１ｃｈ記録の場合には、Ｓｔｒｅａｍ番号ｍ２のストリームデータの全ての記録が終了するまで、ステップＳ１３５〜Ｓ１３７の処理を繰り返し、内周のゾーンから１ゾーンづつ外周のゾーンに残りのストリームデータを記録していく。
【０２３６】
そして、ステップＳ１３８でＳｔｒｅａｍ番号ｍ２のストリームデータの全ての記録が終了したと判断すれば、その記録データの最終アドレスまでのリストを、Ｓｔｒｅａｍ（ｍ２）に追加する。次に、Ｅｍｐｔｙ〔Ｉ〕には、（最終アドレス＋１，残りのデータ量）→Ｅｎｄのリストを登録し、Ｆｕｌｌ〔Ｉ〕には、（ゾーンＩの先頭アドレス、記録されたデータ量）→Ｅｎｄのリストを登録する。そして、次の内周ゾーンの書き込み起点を示すｉｎｎｅｒ−ｚｏｎｅにＩを設定し、ステップＳ１３２に戻る。
【０２３７】
尚、ステップＳ１３９において、ステップＳ１３６でＹｅｓと判断された後、ステップＳ１３８でＹｅｓと判断された場合には、ｉｎｎｅｒ−ｚｏｎｅにＩを設定する処理のみが行われる。この場合、ステップＳ１３６でＹｅｓと判断された時点で、Ｓｔｒｅａｍ番号ｍ２のストリームデータ記録は全て終了しており、再び、ステップＳ１３５の処理は実行されることはないからである。
【０２３８】
以上のようにして、記録されたＳｔｒｅａｍ番号ｍ２のストリームデータのアドレス情報とデータ量をテーブル１２０のＳｔｒｅａｍ（ｍ２）に登録し、テーブル１３０のＥｍｐｔｙ〔〕とＦｕｌｌ〔〕のリストを更新する。
【０２３９】
一方、ステップＳ１４０では、２ｃｈ記録なので、内周ゾーンと外周ゾーンに分散して記録する。このため、外周用のＳｔｒｅａｍ番号ｍ１をｍに、内周用のＳｔｒｅａｍ番号ｍ２を（ｍ＋１）に設定する。この実施形態の場合、外周ゾーンに記録されるチャンネルデータのＳｔｒｅａｍ番号は、内周ゾーンに記録される他チャンネルのＳｔｒｅａｍ番号よりも１つ小さくなる。続いて、２ｃｈ記録であるため、Ｓｔｒｅａｍ番号ｍを“２”インクリメントする。また、２ｃｈの記録の場合には、データが記録される内周ゾーンと外周ゾーンとも、相手ｓｔｒｅａｍは互いに存在するので、Ｓｔｒｅａｍ（ｍ１）の相手ｓｔｒｅａｍにｍ２を、Ｓｔｒｅａｍ（ｍ２）の相手ｓｔｒｅａｍにｍ１に設定する。次に、Ｓｔｒｅａｍ番号ｍ２のストリームデータは内周ゾーンに記録するので、ステップＳ１３４に進むと共に、Ｓｔｒｅａｍ番号ｍ１のストリームデータは外周ゾーンに記録するので、ステップＳ１４１に進む（ステップＳ１４０）。
【０２４０】
以後、ステップＳ１３４以降の処理とステップＳ１４１以降の処理は、並列処理される。
ステップＳ１４１では、テーブル１３０のＥｍｐｔｙリストを参照して、外周のゾーン（ｏｕｔｅｒ−ｚｏｎｅ）から順次１ゾーンづつ内周側のゾーンへと、空き領域の有るゾーンＪを探索する（ステップＳ１４１）。
【０２４１】
そして、ステップＳ１４１で見つけたゾーンＪのＥｍｐｔｙ〔Ｊ〕の内容に従い、ゾーンＪにＳｔｒｅａｍ番号ｍ１のストリームデータを記録する（ステップＳ１４２）。ステップＳ１４２において記録をしている途中で、随時、Ｅｍｐｔｙ〔Ｊ〕に登録されたゾーンＪの全ての領域に記録を終了したか判断し（ステップＳ１４３）、全ての領域に記録を終了したと判断した場合には、ステップＳ１４４に進み、まだ、全ての領域に記録を終了していないと判断した場合には、ステップＳ１４５に進む。
【０２４２】
ステップＳ１４４では、Ｓｔｒｅａｍ（ｍ１）にＥｍｐｔｙ〔Ｊ〕のリストを追加する。そして、Ｅｍｐｔｙ〔Ｊ〕のリストをＥｎｄ（データ量無し）とする。また、Ｆｕｌｌ〔Ｊ〕には、ゾーンＪの全ての領域に記録がなされたとして、（ゾーンＪの先頭アドレス、ゾーンＪのデータ量）→Ｅｎｄのリストを登録する。そして、Ｊを“１”デクリメントして、対象ゾーンを１つ内周側のゾーンに移す。
【０２４３】
次に、記録が終了したか判断し（ステップＳ１４５）、終了していれば、ステップＳ１４６に進み、終了していなければ、ステップＳ１４２に戻る。
このようにして、１つのゾーンのみでは記録が終了しない場合には、Ｓｔｒｅａｍ番号ｍ１のストリームデータの全ての記録が終了するまで、ステップＳ１４２〜Ｓ１４５の処理を繰り返しながら、外周側から内周側へとゾーンを１つづつ移動しながら、該ストリームデータを記録していく。
【０２４４】
そして、ステップＳ１４５でＳｔｒｅａｍ番号ｍ１のストリームデータの記録が全て終了したと判断すると、記録された最終アドレスまでのリストを、Ｓｔｒｅａｍ（ｍ１）に登録する。また、Ｅｍｐｔｙ〔Ｊ〕には、（最終アドレス＋１、残りのデータ量）→Ｅｎｄのリストを登録し、Ｆｕｌｌ〔Ｊ〕には、（ゾーンＪの先頭アドレス、記録されたアドレスまでのデータ量）→Ｅｎｄのリストを登録する。そして、次の外周ゾーンへの書き込みの起点となるｏｕｔｅｒ−ｚｏｎｅをＪに設定し（ステップＳ１４６）、ステップＳ１３２に戻る。
【０２４５】
尚、上述したステップＳ１３９と同様に、ステップＳ１４６においても、ステップＳ１４３でＹｅｓと判断された後、ステップＳ１４５でＹｅｓと判断された場合には、ｏｕｔｅｒ−ｚｏｎｅにＪを設定する処理のみが行われる。この場合、ステップＳ１４６でＹｅｓと判断された時点で、Ｓｔｒｅａｍ番号ｍ１のストリームデータ記録は全て終了しており、再び、ステップＳ１４２の処理は実行されることはないからである。
【０２４６】
以上のステップＳ１４１〜Ｓ１４６の処理と並列して、ステップＳ１３４〜Ｓ１３９の処理が実行され、内周側のゾーンにもＳｔｒｅａｍ番号ｍ２のストリームデータの記録がなされる。
【０２４７】
ステップＳ１４７では、再生命令または削除命令のいずれであるか判断し、再生命令であれば、指定されたＳｔｒｅａｍ番号ｍｘのストリームデータを、テーブル１２０のＳｔｒｅａｍ（ｍｘ）のリストを参照して再生し（ステップＳ１４８）、ステップＳ１４２に戻る。一方、削除命令であれば、指定されたＳｔｒｅａｍ番号ｍｘのストリームデータを管理しているＳｔｒｅａｍ（ｍｘ）のリストに従い、関連する各ゾーンのＥｍｐｔｙにＳｔｒｅａｍ（ｍｘ）のリストを追加すると共に、関連する各ゾーンのＦｕｌｌからＳｔｒｅａｍ（ｍｘ）のリストを削除する（ステップＳ１４９）。この処理により、当該ＥｍｐｔｙにＳｔｒｅａｍ番号ｍｘのストリームデータの削除領域が追加され、当該ＦｕｌｌからＳｔｒｅａｍ番号ｍｘのストリームデータの削除領域の情報が削除される。
【０２４８】
次に、削除指定されたＳｔｒｅａｍ（ｍｘ）に相手ｓｔｒｅａｍ（＝ｍｙ）があるか調べ（ステップＳ１５０）、相手ｓｔｒｅａｍが無ければ（ｍｙが“０”であれば）、ステップＳ１４２に戻る。
【０２４９】
一方、相手ｓｔｒｅａｍがあると判断した場合は、ｍｙ＞ｍｘであるか判断する（ステップＳ１５１）。この判断は、Ｓｔｒｅａｍ番号ｍｙのストリームデータを外周から内周に移動すべきか判断する処理である。上述したように、本実施形態では、ステップＳ１４０の処理により、２ｃｈ記録する場合、外周ゾーンに記録されるストリームデータのＳｔｒｅａｍ番号は、内周ゾーンに記録されるストリームデータのＳｔｒｅａｍ番号よりも１つ小さくなるように設定される。
【０２５０】
そして、ｍｙ＞ｍｘでなければ、ステップＳ１４２に戻るが、ｍｙ＞ｍｘであれば、Ｓｔｒｅａｍ（ｍｙ）のリストを参照して、Ｓｔｒｅａｍ番号ｍｙのストリームデータをディスク１１０から読みだし、次に、その読みだしたデータをＳｔｒｅａｍ（ｍｘ）のリストを参照して、ディスク１１０に再書き込みする（ステップＳ１５２）。この再書き込みは、ステップＳ１４９でＥｍｐｔｙに登録された領域にＳｔｒｅａｍ番号ｍｙのストリームデータを書き込む処理である。
【０２５１】
次に、Ｓｔｒｅａｍ（ｍｙ）のリストに従い、関連する各ゾーンのＥｍｐｔｙにＳｔｒｅａｍ（ｍｙ）のリストを追加すると共に、関連する各ゾーンのＦｕｌｌからＳｔｒｅａｍ（ｍｙ）のリストを削除する（ステップＳ１５３）。
【０２５２】
この処理は、Ｓｔｒｅａｍ番号ｍｙのストリームデータの記録領域の移動に伴う、ＥｍｐｔｙとＦｕｌｌの更新処理である。
続いて、Ｓｔｒｅａｍ（ｍｙ）のリストをＳｔｒｅａｍ（ｍｘ）のリストに置き換える。また、関連するＥｍｐｔｙからＳｔｒｅａｍ（ｍｙ）のリストを削除する。さらに、関連するＦｕｌｌにＳｔｒｅａｍ（ｍｘ）のリストを追加する。また、ストリーム（ｍｘ）を初期化する（ステップＳ１５４）。
【０２５３】
上述した図３９及び図４０のフローチャートの処理の流れの中で、２ｃｈ記録する場合、内周の空き領域を探索する処理と外周の空き領域を探索する処理は、それぞれ、ステップＳ１３４とステップＳ１４１に相当する。これらのステップの処理では、各ゾーンｋ（ｋ＝１〜２ｎ）の残りデータ量をＥｍｐｔｙ〔ｋ〕を検索して調べ、記録対象のゾーンを決定する。
【０２５４】
次に、上述した図３９及び図４０のフローチャートの処理を、図４３に示すゾーン構成のディスク１１０に適用した場合を例として取り上げながら、より具体的に説明する。
【０２５５】
図４４は、図４１、４２、及び４３のテーブル１２０、１３０をメモリ１５０上に実装した例を示す図である。メモリ１５０は、アドレス０〜１７までの初期化領域１５１とアドレス１８以降の拡張領域１５２を備えており、初期化領域１５１にテーブル１２０とテーブル１３０が実装される。また、拡張領域１５２にＳｔｒｅａｍ（ｉ）（ｉ＝１〜５）の追加リストが格納される。
【０２５６】
図４４において、格納内容は、メモリ１５０上の各アドレスに記憶されるリストを示している。このリストの要素は（記憶先頭アドレス、データ量、次格納アドレス）の３種類の情報の組からなる。尚、Ｅｎｄは（０、０、０）で表現される。
【０２５７】
メモリ１５０のアドレス０には（０、０、０）が格納される。また、メモリ１５０のアドレス１〜５には、Ｓｔｒｅａｍ（１）〜（５）の各行で構成されるテーブル１２０が実装される。また、さらに、メモリ１５０のアドレス６〜１７にはＥｍｐｔｙ（１）〜（６）及びＦｕｌｌ（１）〜（６）の各行で構成されるテーブル１３０が実装される。
【０２５８】
図３９のフローチャートのステップＳ１３１の初期化処理により、テーブル１２０、１３０の内容は、図４４の１に示す状態に初期化される。すなわち、テーブル１２０のＳｔｒｅａｍ（１）〜（５）にはＥｎｄ（０、０、０）が登録される。また、テーブル１３０のＥｍｐｔｙ（１）〜（６）には、ゾーン１（Ｚ１）〜６（Ｚ６）の（先頭アドレス、データ量、次格納アドレス）が設定される。尚、この場合、次格納アドレスは０となる。また、テーブル１３０のＦｕｌｌ（１）〜（６）には、（対応ゾーンの先頭アドレス、対応ゾーンの記録データ量、次格納アドレス）が設定される。この場合、記録データ量は“０”となる。また、次格納アドレスも０となる。
【０２５９】
次に、図４６に示すように、Ｓｔｒｅａｍ（１）とＳｔｒｅａｍ（２）の２ｃｈ同時記録が行われたとする。Ｓｔｒｅａｍ（１）は外周ゾーン６から、Ｓｔｒｅａｍ（２）はは内周ゾーン１から記録される。尚、ここで、Ｓｔｒｅａｍ（１）はＳｔｒｅａｍ番号１のストリームデータを、Ｓｔｒｅａｍ（２）はＳｔｒｅａｍ番号２のストリームで表す。以下の説明においても、同様である。
【０２６０】
図４６では、ストリームデータ２とストリームデータ１を、それぞれ、ゾーン１とゾーン６に交互に記録し、まず、記憶容量に少ないゾーン１の領域全体にストリームデータ２が記録された状態を示している。この時点では、Ｓｔｒｅａｍ（２）、Ｅｍｐｔｙ〔２〕およびＦｕｌｌ〔２〕の格納内容は２に示すようになる。この結果、Ｓｔｒｅａｍ（２）にＥｍｐｔｙ〔１〕のリストが追加され、次格納アドレスとして拡張領域１５２のアドレス１８が設定される。また、Ｅｍｐｔｙ〔１〕に空き領域無しを示すＥｎｄが設定され、Ｆｕｌｌ〔１〕にゾーン１が全て記録済みであることを示す（１、１８４０００、０）が設定される。
【０２６１】
続いて、図４７に示すように、ストリームデータ１がゾーン６全体に記録された後、続いてゾーン５に記録され、また、ストリームデータ２がゾーン２に記録されて２ｃｈ記録が終了したとする。この結果、ストリームデータ１、２の管理情報は、図４４の３に示すようになる。
【０２６２】
すなわち、
・ Ｓｔｒｅａｍ（１）にＥｍｐｔｙ〔６〕のリストを加え、その次格納アドレスに拡張領域１５２のアドレス１９を設定する。
【０２６３】
・ Ｅｍｐｔｙ〔６〕にＥｎｄ（０、０、０）を設定し、Ｅｍｐｔｙ〔６〕にゾーン６に空き領域無しの情報を設定する。
【０２６４】
・ 拡張領域１５２のアドレス１８に、Ｓｔｒｅａｍ（２）の記録終了を登録するために、（ゾーン２の先頭アドレス、該先頭アドレスから記録された最終アドレスまでのデータ量、次格納アレス）のリストを作成する。
すなわち、アドレス１８に（１８４００１、１１６００、０）のリストを作成する。
【０２６５】
・ 前記ゾーン２の最終アドレスを基に、Ｅｍｐｔｙ〔２〕、Ｆｕｌｌ〔２〕のリストを修正する。
Ｅｍｐｔｙ〔２〕を（３００００１、１８４０００、０）、Ｆｕｌｌ〔２〕を（１８４００１、１１６００、０）とする。
【０２６６】
・ 拡張領域１５２のアドレス１９に、Ｓｔｒｅａｍ（１）の記録終了を登録するために、（ゾーン５の先頭アドレス、該先頭アドレスから記録された最終アドレスまでのデータ量、次格納アドレス（＝０））のリストを作成する。
【０２６７】
すなわち、アドレス１９に（８３２００１、４４０００、０）のリストを作成する。
・ 前記ゾーン６の最終アドレスを基に、Ｅｍｐｔｙ〔５〕、Ｆｕｌｌ〔５〕のリストを修正する。
Ｅｍｐｔｙ〔５〕を（３００００１、８７６０００、０）、Ｆｕｌｌ〔５〕を（８３２００１、４４０００、０）とする。
続いて、図４８に示すように、ゾーン１とゾーン２からＳｔｒｅａｍ（２）を削除したとする。この結果、データ管理情報は、図４４の４に示すように変更される。
【０２６８】
すなわち、
・ Ｅｍｐｔｙ〔１〕を、再び、全て空き領域とし、Ｆｕｌｌ〔１〕を記録領域無しとする。
Ｅｍｐｔｙ〔１〕を（１、１８４０００、０）、Ｆｕｌｌ〔１〕を（１、０、０）とする。
【０２６９】
・ Ｅｍｐｔｙ〔２〕を空き領域とし、Ｆｕｌｌ〔１〕を記録領域無しとする。
Ｅｍｐｔｙ〔２〕を（１８４００１、２０００００２、０）、Ｆｕｌｌ〔２〕を（１８４００１、０、０）とする。
【０２７０】
次に、図４９に示すように、Ｓｔｒｅａｍ（１）をＳｔｒｅａｍ（２）が記憶されていた領域に移動するガーベージコレクションを行ったとする。この結果、ストリームデータ管理情報は、図４４の５に示すように変更される。
【０２７１】
すなわち、
・ Ｓｔｒｅａｍ（１）を初期化した後、Ｅｍｐｔｙ〔１〕のリストを加え、その次格納アドレスを拡張領域１５２のアドレス２０に設定する。
Ｓｔｒｅａｍ（１）を（１、１８４０００、２０）とする。
【０２７２】
・ Ｅｍｐｔｙ〔１〕の空き領域を無しとし、Ｆｕｌｌ〔１〕を全て記録済みとする。
Ｅｍｐｔｙ〔１〕に（０、０、０）を設定し、Ｆｕｌｌ〔１〕を（１、１８４００、０）とする。
【０２７３】
・ 拡張領域１５２のアドレス２０にＳｔｒｅａｍ（１）の記録終了を登録するために、アドレス２０に、（ゾーン２の先頭アドレス、該先頭アドレスから記録された最終アドレスまでのデータ量、次格納アドレス（＝０））のリストを作成する。
アドレス２０に（１８４００１、１１６０００、０）のリストを作成する。
【０２７４】
・ 前記ゾーン２の最終アドレスに基づき、Ｅｍｐｔｙ（２）とＦｕｌｌ（２）のリストを修正する。
Ｅｍｐｔｙ〔２〕を（３００００１、８４０００、０）、Ｆｕｌｌ〔２〕を（１８４００１、１１６００、０）とする。
【０２７５】
・ Ｅｍｐｔｙ〔６］を全て空き領域とし、Ｆｕｌｌ〔６〕を記録領域なしとする。
Ｅｍｐｔｙ〔６〕を（１０８０００１、２５６０００、０）、Ｆｕｌｌ〔６〕を（１０８０００１、０、０）とする。
【０２７６】
・ Ｅｍｐｔｙ〔５〕を全て空き領域とし、Ｆｕｌｌ〔５〕を記録領域なしとする。
Ｅｍｐｔｙ〔５〕を（８３２００１、２４８０００、０）、Ｆｕｌｌ〔５〕を（８３２００１、０、０）とする。
【０２７７】
続いて、図５０に示すように、Ｓｔｒｅａｍ（３）とＳｔｒｅａｍ（４）の２ｃｈ同時記録をしたとする。このとき、Ｓｔｒｅａｍ（３）は外周ゾーン６から、Ｓｔｒｅａｍ（４）は内周ゾーン２から記録する。同図は、両Ｓｔｒｅａｍを交互に記録したとき、まず、ゾーン２の領域全体が記録された状態を示している。この結果、データ管理情報は、図４４の６に示すようになる。
【０２７８】
すなわち、
・ Ｓｔｒｅａｍ（４）にＥｍｐｔｙ（２）のリストを加え、次格納アドレスを拡張領域１５２のアドレス２１に設定する。
Ｓｔｒｅａｍ（４）を（３００００１、８４０００、２１）とする。
【０２７９】
・ Ｅｍｐｔｙ〔２〕の空き領域を無しと設定し、Ｆｕｌｌ〔６〕を全て記録済みとする。
Ｅｍｐｔｙ〔２〕を（０、０、０）、Ｆｕｌｌ〔５〕を（８３２００１、０、０）とする。
【０２８０】
次に、図５１に示すように、Ｓｔｒｅａｍ（３）がゾーン６の領域全体に記録された後、Ｓｔｒｅａｍ（３）の残りのデータがゾーン５に、Ｓｔｒｅａｍ（４）の残りのデータがゾーン２に記録されて、全記録が終了したとする。この結果、データ管理情報は、図４４の７に示すようになる。
【０２８１】
すなわち、
・ Ｓｔｒｅａｍ（３）にＥｍｐｔｙ〔６〕のリストを加え、その次格納アドレスを拡張領域１５２のアドレス２２に設定する。
【０２８２】
・ Ｅｍｐｔｙ〔６〕の空き領域を無しとし、Ｆｕｌｌ〔６〕を全て記録済みとする。
Ｅｍｐｔｙ〔６〕を（０、０、０）、Ｆｕｌｌ〔６〕を（１０８０００１、２５６０００、０）とする。
【０２８３】
・ 拡張領域１５２のアドレス２１にＳｔｒｅａｍ（４）の記録終了を登録するために、アドレス２１に（ゾーン３の先頭アドレス、該先頭アドレスから記録された最終アドレスまでのデータ量、次格納アドレス（＝０））のリストを作成する。
アドレス２１に（３８４００１、２１６０００、０）を設定する。
【０２８４】
・ 前記ゾーン３の最終アドレスに基づき、Ｅｍｐｔｙ〔３〕とＦｕｌｌ〔３〕のリストを修正する。この場合、Ｅｍｐｔｙ〔３〕は空き領域無しとなり、Ｆｕｌｌ〔３〕は全て記録領域済みとする。
Ｅｍｐｔｙ〔３〕を（０、０、０）、Ｆｕｌｌ〔３〕を（３８４００１、２１６０００、０）とする。
【０２８５】
・ 拡張領域１５２のアドレス２２にＳｔｒｅａｍ（３）の記録終了を登録するために、アドレス２２に（ゾーン５の先頭アドレス、該先頭アドレスから記録された最終アドレスまでのデータ量、次格納アドレス（＝０））のリストを作成する。
アドレス２２に（８３２００１、４４０００、０）を設定する。
【０２８６】
・ 前記ゾーン５の最終アドレスに基づき、Ｅｍｐｔｙ〔５〕とＦｕｌｌ〔５〕のリストを修正する。
Ｅｍｐｔｙ〔５〕を（８７６００１、２０４０００、０）、Ｆｕｌｌ〔５〕を（８３２００１、４４０００、０）とする。
【０２８７】
このように、本実施形態においては、Ｓｔｒｅａｍ、Ｅｍｐｔｙ、及びＦｕｌｌの各テーブルにより、ディスクの各ゾーンの空き領域及び記録領域を管理し、かつ、各Ｓｔｒｅａｍのディスク上の記録領域も管理しながら、各チャンネルのストリームデータの記録、削除、ガーベージコレクションを管理する。
【０２８８】
次に、内周のゾーンと外周のゾーンとの転送速度の違いを吸収する別の手法として、複数データの同時記録の要求性能の和（総合要求性能）に対して、各ゾーンの転送性能の和（総合保持性能）が少なくとも優れるように、複数ゾーンの組み合わせを選択し、選択された各ゾーンに、複数データを分散させて記録する実施形態について説明する。
【０２８９】
この実施形態を、図５２に示すゾーン１〜６を有するディスク１６０を例にして説明する。ディスク１６０のゾーン１の１トラックのバイト数は７０ＫＢ（キロバイト）であり、転送レート（転送速度）は１７．５Ｍｂｐｓである。その他のゾーンのトラック構成、転送レートは、図５２に示す通りである。
【０２９０】
ここで、以下に示す、ステップ１（総合要求性能１）〜３（総合要求性能３）の記録要求があったとする。
ステップ１：ＭＰＥＧ２（６Ｍｂｐｓ）×３チャンネル＝１８Ｍｂｐｓ
ステップ２：ＭＰＥＧ２（６Ｍｂｐｓ）×２チャンネル＝１２Ｍｂｐｓ
ステップ３：ＭＰＥＧ２（６Ｍｂｐｓ）×４チャンネル＝２４Ｍｂｐｓ
まず、第１の実施例について説明する。この実施例では、ゾーン間の移動時間（シーク時間）を含むアクセス時間及び処理するチャンネル数は考慮しないで、総合保持性能を求め、それを上記総合要求性能と比較して、性能を達成できるゾーンを選択する。
【０２９１】
この結果、以下の様に、ステップ１〜３の記録方法を決定する。
ステップ１：ゾーン１とゾーン２の総合保持性能は１８．７５Ｍｂｐｓであり、ステップ１の総合要求性能よりも高いので、ゾーン１とゾーン２に分散させて記録する。
【０２９２】
ステップ２：ゾーン１の転送レート（＝１７．５Ｍｂｐｓ）は、ステップ２の総合要求性能よりも高いので、ゾーン１に記録する。
ステップ３：ゾーン２とゾーン６の総合保持性能は２５Ｍｂｐｓであり、ステップ３の総合要求性能よりも高いので、ゾーン２とゾーン６に分散させて記録する。
【０２９３】
図５３は、上述した第１の実施例のステップ１〜３の記録方法を具体的に示す図である。
ステップ１の場合は、同図（ａ）に示すように、まず、ゾーン１にＣｈ１、Ｃｈ２、Ｃｈ３のブロックデータをシーケンシャルに記録し、次に、ゾーン２に移動し、ゾーン２にＣｈ１、Ｃｈ２、Ｃｈ３の次のブロックデータをシーケンシャルに記録する。そして、再び、ゾーン１に移動し、Ｃｈ１、Ｃｈ２、Ｃｈ３の次のブロックデータをシーケンシャルに記録する。このように、３チャンネルのブロックデータをゾーン１とゾーン２に交互に分散記録していく。
【０２９４】
ステップ２の場合は、同図（ｂ）に示すように、ゾーン１にＣｈ１、Ｃｈ２、Ｃｈ１、Ｃｈ２．．．の順序で、ブロックデータを記録していく。
ステップ３の場合は、同図（ｃ）に示すように、ステップＳ１と同様にして、４チャンネルのブロックデータ（Ｃｈ１、Ｃｈ２、Ｃｈ３、Ｃｈ４）を、ゾーン２とゾーン６に交互に、シーケンシャルに分散・記録していく。
【０２９５】
次に述べる第２の実施例は、ゾーン間の移動時間（シーク時間）を含むアクセス時間を考慮して総合保持性能を求め、それを上記各ステップの総合要求性能と比較して、性能を達成できるゾーンを選択する。この場合、
アクセス時間＝１００ｍｓ×ゾーン間距離
と定義し、
ゾーン間距離＝選択された２つのゾーン間の番号差
と定義する。
【０２９６】
ゾーン間距離は、隣のゾーンに移動するときに往復で１００ｍｓ（片道５０ｍｓ）のアクセス時間を要するものと想定し、移動するゾーンが距離的に離れている程、ヘッドの移動距離に比例してアクセス時間が増加するものとして定義したものである。
【０２９７】
この結果、以下のようにして、各ステップの記録方法を決定する。
ステップ１：１８Ｍｂｐｓ（３ｃｈ記録）の総合要求性能に対して、アクセス時間（１００ｍｓ）を含めても総合保持性能（＝（２０＋２２．５）×０．９／２）が該総合要求性能を上回るゾーン２とゾーン３を選択して、Ｃｈ１〜Ｃｈ３のブロックデータを、ゾーン２とゾーン３に交互に記録する。
【０２９８】
ステップ２：１２Ｍｂｐｓ（２ｃｈ記録）の総合要求性能に対しては、ゾーン１の転送レート（＝１７．５ｍｓ）だけで十分に対応できるので、Ｃｈ１とＣｈ２のブロックデータをゾーン１のみに記録する。この場合、アクセス時間は０となる。
【０２９９】
ステップ３：２４Ｍｂｐｓ（４ｃｈ記録）の総合要求性能に対して、アクセス時間（１００ｍｓ）を含めても総合保持性能（＝（２７．５＋３０）×０．９／２）が該総合要求性能を上回るゾーン５とゾーン６を選択して、Ｃｈ１〜Ｃｈ４のブロックデータを、ゾーン５とゾーン６に交互に記録する。
【０３００】
図５４は、上述した第２の実施例のステップ１〜３の記録方法を具体的に示す図である。
ステップ１の場合は、同図（ａ）に示すように、まず、ゾーン２にＣｈ１、Ｃｈ２、Ｃｈ３のブロックデータをシーケンシャルに記録し、次に、ゾーン３に５０ｍｓで移動し、ゾーン２にＣｈ１、Ｃｈ２、Ｃｈ３の次のブロックデータをシーケンシャルに記録する。そして、再び、ゾーン２に５０ｍｓで移動し、Ｃｈ１、Ｃｈ２、Ｃｈ３の次のブロックデータをシーケンシャルに記録する。このように、３チャンネルのブロックデータをゾーン２とゾーン３に交互に、シーケンシャルに分散記録していく。
【０３０１】
ステップ２の場合は、同図（ｂ）に示すように、ゾーン１にＣｈ１、Ｃｈ２、Ｃｈ１、Ｃｈ２．．．の順序で、ブロックデータを記録していく。
ステップ３の場合は、同図（ｃ）に示すように、ステップＳ１と同様にして、４チャンネルのブロックデータ（Ｃｈ１、Ｃｈ２、Ｃｈ３、Ｃｈ４）を、ゾーン５とゾーン６の間を５０ｍｓで移動しながら、ゾーン５とゾーン６に交互に、シーケンシャルに分散・記録していく。
【０３０２】
次に述べる第３の実施例は、ゾーン間の移動時間（シーク時間）に加え、処理するチャンネル数も考慮して総合保持性能を求め、それを上記各ステップの総合要求性能と比較して、性能を達成できるゾーンを選択する。この実施例は、各チャンネルのデータはなるべく分散して記録した方が、単独再生や削除の場合に都合がよいという考えを基にしている。
【０３０３】
この結果、以下の様に、ステップ１〜３の記録方法を決定する。
ステップ１：１８Ｍｂｐｓ（３ｃｈ記録）の総合要求性能に対して、アクセス時間（１００ｍｓ）を含めても総合保持性能（＝（２０＋２２．５）×０．９／２）が該総合要求性能を上回るゾーン２とゾーン３を選択して、Ｃｈ１〜Ｃｈ３のブロックデータを、ゾーン２とゾーン３に交互に記録する。ここでは、３チャンネルなので、ゾーン２のＣｈ１とＣｈ２のデータを、ゾーン３にＣｈ３のデータを記録する。
【０３０４】
ステップ２：１２Ｍｂｐｓ（２ｃｈ記録）の総合要求性能に対しては、ゾーン１の転送レート（＝１７．５ｍｓ）だけで十分に対応できるが、できる限り分散記録させるという観点から、ゾーン１にＣｈ１のデータを、ゾーン２にＣｈ２のデータを記録させる。
【０３０５】
ステップ３：２４Ｍｂｐｓ（４ｃｈ記録）の総合要求性能に対して、アクセス時間（１００ｍｓ）を含めても総合保持性能（＝（２７．５＋３０）×０．９／２）が該総合要求性能を上回るゾーン５とゾーン６を選択して、Ｃｈ１〜Ｃｈ４のブロックデータを、ゾーン５とゾーン６に交互に記録する。この場合は、４チャンネルの記録なので、ゾーン５にＣｈ１とＣｈ２のデータを、ゾーン６のＣｈ３とＣｈ４のデータを記録する。
【０３０６】
図５５は、上述した第３の実施例のステップ１〜３の記録方法を具体的に示す図である。
ステップ１の場合は、同図（ａ）に示すように、まず、ゾーン２にＣｈ１、Ｃｈ２のブロックデータをシーケンシャルに記録し、次に、ゾーン３に５０ｍｓで移動し、ゾーン２にＣｈ３のブロックデータをシーケンシャル記録する。そして、再び、ゾーン２に５０ｍｓで移動し、Ｃｈ１、Ｃｈ２の次のブロックデータをシーケンシャルに記録する。そして、再び、ゾーン３に５０ｍｓで移動し、ゾーン３にＣｈ３の次のブロックデータをシーケンシャルに記録する。以上のような動作を繰り返しながら、３チャンネルのブロックデータをゾーン２とゾーン３に交互に分散記録していく。
【０３０７】
ステップ２の場合は、同図（ｂ）に示すように、ゾーン１とゾーン２に、それぞれ、Ｃｈ１とＣｈ２のブロックデータを交互に記録していく。
ステップ３の場合は、同図（ｃ）に示すように、一方の２チャンネルのブロックデータ（Ｃｈ１、Ｃｈ２）と他方の２チャンネルのブロックデータ（Ｃｈ３、Ｃｈ４）を、ゾーン５とゾーン６の間を５０ｍｓで移動しながら、ゾーン５とゾーン６に交互に分散・記録していく。
【０３０８】
ところで、上記アクセス時間は、ヘッドの移動の途中では、移動するトラック間距離に比例すると考えられるが、移動の最初と移動の終了の際には、それぞれ、加速と減速が生じるので、アクセス時間には、厳密には非線形的なファクタが加わる。上記実施例では、ゾーン間の移動なので、数千トラック間の移動が常時行われ、アクセス時間はトラック間距離に比例すると考える。そこで、隣接するゾーン間の移動時間を往復１００ｍｓ（片道５０ｍｓ）とみなし、１秒間でみれば、転送速度の１０％が無駄になると考えれば、このオーバヘッドにゾーン間の距離（ゾーン番号差）を乗算すれば、アクセス時間による転送速度の低下を算出できる。
【０３０９】
よって、隣接ゾーン間の往復アクセス時間をｍｓ単位で表現すると、実行の総合保持性能は、下記の式（１）で表現できる。
実行総合保持性能＝｛（片方ゾーンの転送速度）＋（他方ゾーンの転送速度）｝／２×｛１００％−｛（ゾーン間距離）×（隣接ゾーン間の往復アクセス時間）／１０｝％｝ ・・・（１）
第３の実施例において、ステップ１のように、処理するチャンネル数が奇数である場合には、２つのゾーンの内、どちらに、より多数のチャンネルを記録するかにより、上記式（１）の第一項が若干変わることになる。
【０３１０】
次に、図５６から図５９のフローチャートを参照して、上述した図５３に例示した第１実施例を実現するアルゴリズムを説明する。本フローチャートでも、上述した実施形態と同様に、Ｓｔｒｅａｍ、Ｅｍｐｔｙ、及びＦｕｌｌのリストを使用するものとする。
【０３１１】
まず、Ｓｔｒｅａｍ（１）〜（ｍ）を初期化する。尚、この実施例では、ガーベージコレクションは行いものとし、相手ｓｔｒｅａｍは“０”とする。また、総合要求性能を求めるために使用する各チャンネルの要求速度Ｃｈａｎｎｅｌ−ｒａｔｅ（１）〜（ｍ）をＭＰＥＧ２の要求性能（ここでは、６Ｍｂｐｓとする）に設定する。また、さらに、Ｅｍｐｔｙ〔１〕〜〔２ｎ〕及びＦｕｌｌ〔１〕〜〔２ｎ〕を初期設定する。また、各ゾーン１〜２ｎの転送速度を、Ｚｏｎｅ−ｒａｔｅ〔１〕〜〔２ｎ〕に設定する。また、これから記録していく片方ゾーンを示す変数ｉｎｚを“１”に、他方ゾーンを示す変数ｏｕｚを“２ｎ”に設定する。この変数ｏｕｚに対する “２ｎ”の設定処理は、内周及び外周に含まれるゾーン数を偶数に設定する処理である。
【０３１２】
また、さらに、総合要求性能を示す変数ｔｃを“０”に設定する。また、要求性能に見合う性能があるか（記録可能かどうか）を示すフラグｃｏｎｔを“０”に設定する（ステップＳ１６１）。
【０３１３】
上記初期化処理に続いて、命令の種類を判断する（ステップＳ１６２）。そして、１ｃｈ記録または２ｃｈ記録のいずれでもなければ、図５８のステップＳ１８２に進む。図５８のフローチャートに示すステップＳ１８２〜Ｓ１８９の処理は、上述した図４０のステップＳ１４７〜Ｓ１５４の空きゾーンを選択する処理と同様であるので、ここでは、説明を省略する。
【０３１４】
また、ステップＳ１６２で１ｃｈ記録の命令であると判断すれば、図５９のフローチャートのステップＳ１９０に進む。図５９のフローチャートに示すステップＳ１９０〜Ｓ１９６の処理は、上述した図３９のステップＳ１３３〜Ｓ１３９処理と同様であるので、ここでは、説明を省略する。
【０３１５】
また、ステップＳ１６２でｋｃｈ記録（ｋ＞１）の命令であれば、ｋｃｈ記録に対する総合要求性能に見合う総合保持性能を持つ２つのゾーンを選択する処理を行う（ステップＳ１６３）。
【０３１６】
この選択処理では、以下の（１）、（２）の処理を行う。
（１） ｋｃｈ記録に対する総合保持性能ｔｃを求める。
（２） 内周側のゾーンからみて、その内周側のゾーンから外周側のゾーンに向かって、総合保持性能ｔｚを求め、ｔｚ＞ｔｃの条件を満たす２つの該当ゾーンを探す。そして、該当ゾーンがみつかれば、ｃｏｎｔに“１”を設定する。
【０３１７】
次に、ｃｏｎｔが“１”であるか判断する（ステップＳ１６４）。そして、ｃｏｎｔ＝０ならば記録不可能と判断し、処理を停止する。一方、ｃｏｎｔ＝１ならば、ステップＳ１６３で求められた２つのゾーンＩ，Ｊを、それぞれ、選択された内周ゾーンｉｎｚ，外周ゾーンｏｕｚとする。また、最初に記録を実行するｃｈａｎｎｅｌ（チャンネル）を“１”とする（ステップＳ１６５）。
【０３１８】
次に、Ｅｍｐｔｙリストを検索して、内周のゾーンｉｎｚから、各ゾーンの空き領域を探索し、空き領域を有するゾーンを見つけ出す（ステップＳ１６６）。続いて、ステップＳ１６６で見つけ出されたゾーンＩのＥｍｐｔｙ〔Ｉ〕のリストに従い、ゾーンＩにｃｈａｎｎｅｌの示すチャンネルのデータを１ブロック記録する。次に、Ｓｔｒｅａｍ（ｃｈａｎｎｅｌ）に、記録された最終アドレスまでの１ブロック分のデータのリストを登録する。さらに、Ｅｍｐｔｙ〔Ｉ〕に（最終アドレス＋１，残りのデータ量）（Ｅｎｄ）のリストを登録し、Ｆｕｌｌ〔Ｉ〕に（ゾーンＩの先頭アドレス，記録データ量）（Ｅｎｄ）のリストを登録する。そして、ｃｈａｎｎｅｌの値を“１”インクリメントする（ステップＳ１６７）。
【０３１９】
次に、ｃｈａｎｎｅｌ＞ｋであるか判断し（ステップＳ１６８）、ｃｈａｎｎｅｌ＞ｋでなければ、ステップＳ１６７に戻る。ステップＳ１６８の判断は、ｋチャンネルの１ブロックのデータの記録が終了したか判断する処理であり、ステップＳ１６８でｃｈａｎｎｅｌ＞ｋと判断するまで、ステップＳ１６７の処理を繰り返す。
【０３２０】
そして、ステップＳ１６８でｋチャンネルの記録が終了したと判断すると、ｃｈａｎｎｅｌを“１”に初期化し（ステップＳ１６９）、次に、Ｅｍｐｔｙ〔Ｉ〕のリスト領域の全てを記録したか判断する（ステップＳ１７０）。そして、まだ、全て記録していなければ、ステップＳ１７２に進む。一方、全て記録していれば、Ｅｍｐｔｙ〔Ｉ〕のリストをＥｎｄ（データ量無し）とする。また、Ｆｕｌｌ〔Ｉ〕のリストは、対象ゾーンの全領域が記録されたとして、（ゾーンＩの先頭アドレス、ゾーンＩのデータ量）（ＥＮＤ）とする。そして、Ｉを“１”インクリメントする（ステップＳ１７１）。
【０３２１】
次に、記録が終了したか判断し（ステップＳ１７２）、記録が終了していれば次の内周ゾーンへのデータの記録の起点となるｉｎｎｅｒ−ｚｏｎｅを“Ｉ”とし（ステップＳ１７３）、ステップＳ１６２に戻る。一方、記録が終了していなければ、外周側のゾーンへの記録に移るために、Ｅｍｐｔｙリストを検索して、外周側のゾーンｏｕｚから空き領域の有るゾーンＪを見つけ出す（ステップＳ１７４）。
【０３２２】
続いて、Ｅｍｐｔｙ〔Ｊ〕のリストに従い、ゾーンＪにｃｈａｎｎｅｌの示すチャンネルのデータを１ブロック記録する。そして、Ｓｔｒｅａｍ（Ｊ）に、記録された最終アドレスまでの１ブロック分のデータのリストを追加する。次に、Ｅｍｐｔｙ〔Ｊ〕には（最終アドレス＋１，残りデータ量）（Ｅｎｄ）のリストを登録し、Ｆｕｌｌ〔Ｊ〕には（ゾーンＪの先頭アドレス、記録データ量）のリストを登録する。そして、ｃｈａｎｎｅｌの値を“１”インクリメントする（ステップＳ１７５）。
【０３２３】
次に、ｃｈａｎｎｅｌ＞ｋであるか判断する（ステップＳ１７６）。この判断は、ステップＳ１６８と同様にｋチャンネルの１ブロックのデータの記録が終了したか判断する処理であり、ステップＳ１７６でｃｈａｎｎｅｌ＞ｋと判断するまで、ステップＳ１７５の処理を繰り返す。
【０３２４】
そして、ステップＳ１７６でｋチャンネルの記録が終了したと判断すると、ｃｈａｎｎｅｌを“１”に初期化し（ステップＳ１７７）、次に、Ｅｍｐｔｙ〔Ｊ〕のリスト領域の全てを記録したか判断し（ステップＳ１７８）、まだ、全て記録していなければ、ステップＳ１８０に進む。一方、全て記録していれば、Ｅｍｐｔｙ〔Ｊ〕のリストをＥｎｄ（データ量無し）とする。また、Ｆｕｌｌ〔Ｊ〕のリストは、対象ゾーンの全領域が記録されたとして、（ゾーンＪの先頭アドレス、ゾーンＪのデータ量）（ＥＮＤ）とする。そして、Ｊを“１”インクリメントする（ステップＳ１７９）。
【０３２５】
次に、記録が終了したか判断し（ステップＳ１８０）、記録が終了していれば次の外周ゾーンへのデータの記録の起点となるｏｕｔｅｒ−ｚｏｎｅを“Ｊ”とし（ステップＳ１８１）、ステップＳ１６２に戻る。一方、記録が終了していなければ、ステップＳ１６６に戻る（片方のゾーンに再度、移る）。
【０３２６】
以上説明した、図５６から図５９のフローチャートでは、選択された２つのゾーンにｋチャンネルのブロックデータをまとめて、交互に記録する場合を示している。このフローチャートの中で、総合要求性能に対して、その性能を上回る総合保持性能を持つ２つのゾーンを選択する処理は、ステップＳ１６３に開示されている。ステップＳ１６３の処理は、第１の実施例の場合に対応しているが、第２の実施例に対応する場合には、前記式（１）に従って総合保持性能ｔｚを求めればよい。また、第３の実施例に対応する場合には、要求チャンネル数ｋに応じて、ステップＳ１６６〜Ｓ１７３の処理と、ステップＳ１７４〜Ｓ１８１の処理を切り分けるようにすればよい。
【０３２７】
次に、ＺＣＬＶに基づき回転制御を行うディスクに対して、複数チャンネルのデータの同時記録を実行するディスクアクセス制御方式において、ゾーン当たりの記録容量が多いゾーン（主に外周ゾーン）を優先して、該複数チャンネルのデータを該ゾーン内に集中して，交互に記録する実施形態について説明する。
【０３２８】
図６０は、この実施形態のアルゴリズムを説明するフローチャートである。
同図のフローチャートに示す処理は、上述した図５６のフローチャートのステップＳ１６２でｋｃｈ記録の命令であると判断された場合に実行される処理であり、図５６から図５７のフローチャートのステップＳ１６３〜Ｓ１８１の処理を代替するものである。
【０３２９】
したがって、図６０のフローチャートに示す処理は、図５６のステップＳ１６１の後、ステップＳ１６２でｋｃｈ記録命令と判断されたとき呼び出され、処理終了後、図５６のステップＳ１６２に戻るサブルーチンとして捉えることができる。
【０３３０】
図６０のフローチャートの説明を開始する。
まず、Ｅｍｐｔｙリストを探索し、外周側のゾーン（ｏｕｔｅｒ−ｚｏｎｅ）から内周側のゾーンに１ゾーンづつ移動しながら、空き領域を有するゾーンＪを見つけ出す（ステップＳ２０１）。
【０３３１】
次に、Ｅｍｐｔｙ〔Ｊ〕のリストに従い、ゾーンＪの空き領域にｃｈａｎｎｅｌの示すチャンネルのデータを１ブロック記録する。次に、Ｓｔｒｅａｍ（ｃｈａｎｎｅｌ）にゾーンＪに記録された該１ブロック分のデータの最終アドレスまでのリストを追加する。続いて、Ｅｍｐｔｙ〔Ｊ〕に、（該最終アドレス＋１，残りのデータ量）（Ｅｎｄ）のリストを登録し、ＦＵＬＬ〔Ｊ〕に、（ゾーンＪの先頭アドレス、記録データ量）（Ｅｎｄ）のリストを登録する。そして、ｃｈａｎｎｅｌの値を“１”インクリメントする（ステップＳ２０２）。
【０３３２】
続いて、ｃｈａｎｎｅｌ＞ｋであるか判断し（ステップＳ２０３）、ｃｈａｎｎｅｌ＞ｋでなければ、ステップＳ２０２に戻る。このようにして、ステップＳ２０３でｃｈａｎｎｅｌ＞ｋ、すなわち、ｋチャンネルの１ブロックデータ記録が全て終了したと判断するまで、ステップＳ２０２の処理を繰り返す。
【０３３３】
そして、ステップＳ２０３でｋチャンネルの１ブロックデータ記録が全て終了したと判断すると、ｃｈａｎｎｅｌを“１”に初期化し（ステップＳ２０４）、続いて、Ｅｍｐｔｙ〔Ｊ〕のリスト領域（ゾーンＪの空き領域）を全て記録したか判断し（ステップＳ２０５）、まだ、全て記録していなければステップＳ２０７に進む。一方、全て記録していれば、Ｅｍｐｔｙ〔Ｊ〕にＥｎｄを登録する。また、ＦＵＬＬ〔Ｊ〕に（ゾーンＪの先頭アドレス、ゾーンＪのデータ量）（Ｅｎｄ）のリストを登録する。そして、Ｊを“１”デクリメントして対象ゾーンを１つ内周側に移す（ステップＳ２０６）。
【０３３４】
次に、記録が終了したか判断し、まだ、記録が終了していなければ、ステップＳ２０１に戻り、１ゾーンだけ内周側のゾーンへの記録に移る。一方、記録が終了していれば、次のデータの記録の起点となるゾーンを示すｏｕｔｅｒ−ｚｏｎｅをＪに設定し（ステップＳ２０７）、図５６のステップＳ１６２に戻る。
【０３３５】
以上述べたＺＣＬＶの回転制御方式によるディスクの場合、どのゾーンも転送速度が一定であるため、ゾーンを移すメリットはなく、逆にゾーンを移動するとシーク時間等によるアクセス時間のロスが大きい。したがって、この場合、複数ゾーンを使用せず、記録容量の多い外周側のゾーンから、順次、内周側のゾーンに移動して、ｋチャンネルのブロックデータを同一ゾーンにシーケンシャルに連続して記録することが効果的である。
【０３３６】
上述した図３１から図６０に示したディスクに対する処理を実現するプログラムは、図１２に示すストレージシステムのディスクアクセス制御用ＭＰＵ６１によって実行される。すなわち、図３０に示すマイクロプロセッサ７１とメモリ７２を有するＭＰＵ６１によって実行される。この場合、ＭＰＵ６１が実行するプログラムは可搬記録媒体７４に格納され、この可搬記録媒体７４が媒体駆動装置７３に装着されることにより、ＭＰＵ６１は、媒体駆動装置７３をアクセスして可搬記録媒体７４に格納されたプログラムをメモリ７２にロードして実行する。
【０３３７】
また、プログラムは、公衆回線、専用回線、インターネット等の各種ネットワークを介してダウンロードすることも可能である。このような形態の場合、例えば、情報提供業者がプログラムを管理して、プログラムが更新された場合、直ちに、該情報提供業者からダウンロードするようにすることも可能である。また、該情報提供業者が、プログラムの保守をネットワークを介して遠隔実行することも可能である。
【０３３８】
以上、述べたように、本発明によれば、実際の書き込みデータの転送レートに従って終了期限を決め、それに基づいてディスクアクセスのスケジューリングを行うことで、多数のチャネルの記録／再生が可能になる。また、リアルタイムの複数の書き込み要求に対して書き込み領域による転送レートの違いを利用することで、処理が効率化され、さらに多数のチャネルの記録／再生が可能になる。
【０３３９】
また、本発明では、ランド・グループ記録方式の記録媒体に対して２チャンネルの同時記録を行う場合、グループ及びランドの記録領域の連続性を利用して、一方のチャンネルのデータをグループに他方のチャンネルのデータをランドに沿って記録することで、記録を高速に実行できると共に、その後の各チャンネルの再生、削除なども高速に行うことができ、ガーベージコレクションの実行回数も削減できる。
【０３４０】
また、ＺＣＡＶに基づく回転制御を行うディスクに対して、複数チャンネルのデータを同時記録する際、総合要求性能（複数チャンネルの同時記録に対する各要求性能の総和）以上の総合保持性能（記録されるゾーンが持つ転送性能の平均）を有する複数ゾーンを選択し、該複数ゾーンに上記複数チャンネルのデータを分散・記録することで、複数チャンネルのデータの同時記録の高速実行や、その後の各チャンネルの再生、削除などを容易に行うことができる。
【０３４１】
また、さらに、ＺＣＬＶの回転制御方式によるディスクに対する複数チャンネルの同時記録に対しては、複数ゾーンを使用せず、記録容量の多い外周側のゾーンから、順次、内周側のゾーンに移動して、各チャンネルのブロックデータを同一ゾーンにシーケンシャルに連続して記録することにより、高速な記録が可能となる。
【０３４２】
本発明は、ホームネットワークにおける映像／音声データの処理だけでなく、複数チャンネルのデータをリアルタイムで処理しなければならないような任意の用途に適用することができる。例えば、処理対象のデータをコンピュータシステムへ取り込む場合にも、同様の制御が可能である。また、アクセス対象としては、磁気ディスク、光ディスク、光磁気ディスク等のディスク型記録媒体を始めとして、メモリカード等も含む任意の記録媒体を用いることができる。
【図面の簡単な説明】
【図１】従来のディスクスケジューリングを示す図である。
【図２】一定レートの転送データを示す図である。
【図３】可変レートの転送データを示す図である。
【図４】同期転送を示す図である。
【図５】ＡＳＭＯの構成を示す図である。
【図６】ＡＳＭＯにおける論理ゾーンの構成を示す図である。
【図７】ＡＳＭＯにおける欠陥管理の操作方法を説明する図である。
【図８】ＡＳＭＯにおけるレンズ操作のみによるアクセス可能領域を説明する図である。
【図９】ＡＳＭＯにおけるＷｒｉｔｅ操作を説明する図である。
【図１０】ＡＳＭＯにおけるＲｅａｄ操作を説明する図である。
【図１１】本発明のアクセス制御装置の原理図である。
【図１２】ストレージシステムの構成図である。
【図１３】ディスクスケジューリングの原理フローチャートである。
【図１４】第１のディスクスケジューリングを示す図である。
【図１５】ディスクに記録されるデータのフォーマットを示す図である。
【図１６】第２のディスクスケジューリングを示す図である。
【図１７】スケジュールテーブルを示す図である。
【図１８】書き込み処理のフローチャートである。
【図１９】読み出し処理のフローチャートである。
【図２０】書き込み／読み出し処理のフローチャートである。
【図２１】第１の並べ替えアルゴリズムを示す図である。
【図２２】第２の並べ替えアルゴリズムを示す図である。
【図２３】第１のゾーン決定処理の原理フローチャートである。
【図２４】第２のゾーン決定処理の原理フローチャートである。
【図２５】複数ゾーンとその転送レートを示す図である。
【図２６】チャンネル数に基づく書き込み処理を示す図である。
【図２７】チャンネル数に基づく書き込み処理のフローチャートである。
【図２８】ゾーン対を用いた書き込み処理のフローチャートである。
【図２９】ゾーン対を用いた書き込み処理を示す図である。
【図３０】制御プログラムの格納場所を示す図である。
【図３１】ＡＳＭＯを３つの論理ゾーンに分割した状態を示す図である。
【図３２】図３１に示すＡＳＭＯに１チャンネルのデータを記録する方法を示す図であり、（ａ）は論理ゾーン、（ｂ）はグループ、（ｃ）はランドに沿って記録する方法を示す図である。
【図３３】図３１に示すＡＳＭＯに２チャンネルのデータを記録する方法を示す図である。
【図３４】図３１に示すＡＳＭＯに２チャンネルのデータを同時記録した場合の、再生、削除、ガーベージコレクション、及びガーベージコレクション後の新たな２チャンネルの同時記録の方法を説明する図であり、（ａ）は最初の２チャンネル同時記録、（ｂ）はＣｈ２の削除、（ｃ）はＣｈ１のガーベージコレクション、（ｄ）は該ガーベージコレクション後のＣｈ３、４の２チャンネル同時記録の方法を示す図である。
【図３５】本発明におけるランド・グループ方式の記録媒体に対する記録、再生、及び削除方法の原理を説明するフローチャートである。
【図３６】ＺＣＡＶ方式の回転制御方式のディスクのゾーン分割の構成及び転送レートを平均化するゾーン対の構成方法を示す図である。
【図３７】図３６のディスクに対する２チャンネルの同時記録に係わる処理の方法を示す図であり、（ａ）はＣｈ１、２の同時記録、Ｃｈ２の削除、（ｂ）はＣｈ１のガーベージコレクション、（ｃ）は該ガーベージコレクション後のＣｈ３、４の同時記録を示す図である。
【図３８】内周と外周の転送速度を平均化してデータ記録を行う処理手順を示すフローチャートである。
【図３９】ディスクの空きゾーンを選択するアルゴリズムを説明するフローチャート（その１）である。
【図４０】ディスクの空きゾーンを選択するアルゴリズムを説明するフローチャート（その２）である。
【図４１】ストリームを管理するテーブルの構成例を示す図である。
【図４２】ディスクの空きゾーンを管理するテーブルの構成例を示す図である。
【図４３】図３６のディスクの各ゾーンの構成を示す図である。
【図４４】図３９及び図４０のフローチャートの処理におけるストリーム管理テーブル及び空きゾーン管理テーブルの格納リストの状態遷移を示す図である。
【図４５】図４３のゾーン構成のディスクの初期状態を示す図である。
【図４６】図４３のゾーン構成のディスクに、図３９及び図４０のフローチャートに示す処理を実行した場合の、該ディスクのストリームデータの記録形態の遷移を示す図（その１）である。
【図４７】図４３のゾーン構成のディスクに、図３９及び図４０のフローチャートに示す処理を実行した場合の、該ディスクのストリームデータの記録形態の遷移を示す図（その２）である。
【図４８】図４３のゾーン構成のディスクに、図３９及び図４０のフローチャートに示す処理を実行した場合の、該ディスクのストリームデータの記録形態の遷移を示す図（その３）である。
【図４９】図４３のゾーン構成のディスクに、図３９及び図４０のフローチャートに示す処理を実行した場合の、該ディスクのストリームデータの記録形態の遷移を示す図（その４）である。
【図５０】図４３のゾーン構成のディスクに、図３９及び図４０のフローチャートに示す処理を実行した場合の、該ディスクのストリームデータの記録形態の遷移を示す図（その５）である。
【図５１】図４３のゾーン構成のディスクに、図３９及び図４０のフローチャートに示す処理を実行した場合の、該ディスクのストリームデータの記録形態の遷移を示す図（その６）である。
【図５２】６つのゾーンに分割されたＺＣＡＶ方式の回転制御方式のディスクの各ゾーンのバイト数／トラック、及び転送レートを示す図である。
【図５３】図５２に示すゾーン構成のディスクに、アクセス時間及びチャンネル数を考慮しないで２チャンネルの同時記録を行う方法を説明する図であり、（ａ）はゾーン１とゾーン２に分散・記録する例、（ｂ）はゾーン１のみに分散・記録する例、（ｃ）はゾーン２とゾーン６に分散・記録する例である。
【図５４】図５２に示すゾーン構成のディスクに、アクセス時間を考慮しないで２チャンネルの同時記録を行う方法を説明する図であり、（ａ）はゾーン２とゾーン３に分散・記録する例、（ｂ）はゾーン１のみに分散・記録する例、（ｃ）はゾーン５とゾーン６に分散・記録する例である。
【図５５】図５２に示すゾーン構成のディスクに、アクセス時間及びチャンネル数を考慮して、２チャンネルの同時記録を行う方法を説明する図であり、（ａ）はゾーン２とゾーン３に分散・記録する例、（ｂ）はゾーン１とゾーン２に分散・記録する例、（ｃ）はゾーン５とゾーン６に分散・記録する例である。
【図５６】総合要求性能に対して総合保持性能が優るように複数ゾーンを選択して複数チャンネルの同時記録を行うアルゴリズムを示すフローチャート（その１）である。
【図５７】総合要求性能に対して総合保持性能が優るように複数ゾーンを選択して複数チャンネルの同時記録を行うアルゴリズムを示すフローチャート（その２）である。
【図５８】総合要求性能に対して総合保持性能が優るように複数ゾーンを選択して複数チャンネルの同時記録を行うアルゴリズムを示すフローチャート（その３）である。
【図５９】総合要求性能に対して総合保持性能が優るように複数ゾーンを選択して複数チャンネルの同時記録を行うアルゴリズムを示すフローチャート（その４）である。
【図６０】ＺＣＬＶの回転制御方式のディスクに複数チャンネルのデータを同時記録するアルゴリズムを示すフローチャートである。
【図１】
0004473455.tif 000002
【図２】
0004473455.tif 000003
【図３】
0004473455.tif 000004
【図４】
0004473455.tif 000005
【図５】
0004473455.tif 000006
【図６】
0004473455.tif 000007
【図７】
0004473455.tif 000008
【図８】
0004473455.tif 000009
【図９】
0004473455.tif 000010
【図１０】
0004473455.tif 000011
【図１１】
0004473455.tif 000012
【図１２】
0004473455.tif 000013
【図１３】
0004473455.tif 000014
【図１４】
0004473455.tif 000015
【図１５】
0004473455.tif 000016
【図１６】
0004473455.tif 000017
【図１７】
0004473455.tif 000018
【図１８】
0004473455.tif 000019
【図１９】
0004473455.tif 000020
【図２０】
0004473455.tif 000021
【図２１】
0004473455.tif 000022
【図２２】
0004473455.tif 000023
【図２３】
0004473455.tif 000024
【図２４】
0004473455.tif 000025
【図２５】
0004473455.tif 000026
【図２６】
0004473455.tif 000027
【図２７】
0004473455.tif 000028
【図２８】
0004473455.tif 000029
【図２９】
0004473455.tif 000030
【図３０】
0004473455.tif 000031
【図３１】
0004473455.tif 000032
【図３２】
0004473455.tif 000033
【図３３】
0004473455.tif 000034
【図３４】
0004473455.tif 000035
【図３５】
0004473455.tif 000036
【図３６】
0004473455.tif 000037
【図３７】
0004473455.tif 000038
【図３８】
0004473455.tif 000039
【図３９】
0004473455.tif 000040
【図４０】
0004473455.tif 000041
【図４１】
0004473455.tif 000042
【図４２】
0004473455.tif 000043
【図４３】
0004473455.tif 000044
【図４４】
0004473455.tif 000045
【図４５】
0004473455.tif 000046
【図４６】
0004473455.tif 000047
【図４７】
0004473455.tif 000048
【図４８】
0004473455.tif 000049
【図４９】
0004473455.tif 000050
【図５０】
0004473455.tif 000051
【図５１】
0004473455.tif 000052
【図５２】
0004473455.tif 000053
【図５３】
0004473455.tif 000054
【図５４】
0004473455.tif 000055
【図５５】
0004473455.tif 000056
【図５６】
0004473455.tif 000057
【図５７】
0004473455.tif 000058
【図５８】
0004473455.tif 000059
【図５９】
0004473455.tif 000060
【図６０】
0004473455.tif 000061