(57)【要約】  【課題】  記録ディスクのランダムアクセスをリアルタイム性を保ちつつ高速に実現可能な記録ディスク制御方法を提供する。  【解決手段】  ブロックアロケータ１は、ヘッドの平均移動距離でのヘッドの回転待ち時間が小さくなるようにスキューを決定し、当該スキューに基づいてデータブロックをディスク５上の所定の位置に配置すると共に、そのブロックマップ３を生成する。スケジューラ２は、ヘッドの移動量が少なくなるように、複数のアクセスリクエスト４０の順番を並べ替えるスケジューリングを行い、スケジュールされた順番でアクセス指示をＳＣＳＩデバイスドライバ６に出力する。  【選択図】        図１
2004158179.tif 000002
【特許請求の範囲】
【請求項１】
ヘッドが記録ディスクに対してアクセスするときの平均移動距離での回転待ち時間が短くなるようにスキューを決定し、
少なくとも前記決定されたスキューに基づいて、データブロックの記録ディスク上における位置を決定し、
前記ヘッドによる前記記録ディスクに対するアクセス時に、前記ヘッドの移動量が少なくなるように、入力した複数のディスクアクセス要求の順番をスケジューリングし、
前記スケジューリング結果に基づいて、前記ヘッドによる前記記録ディスクのアクセスを行う
記録ディスクアクセス制御方法。
【請求項２】
前記データブロックの記録ディスク上における位置の決定は、前記スキューに加えて、同一データブロック内での先頭と末尾との角度差を示すギャップに基づいて行う請求項１に記載の記録ディスクアクセス制御方法。
【請求項３】
複数のデータブロックについてスキューとギャップとのそれぞれの組み合わせに関する組み合わせデータを決定し、
前記記録ディスク上の各データブロックの位置に応じて、前記組み合わせデータを選択的に使用する請求項２に記載の記録ディスクアクセス制御方法。
【請求項４】
前記記録ディスクの外側から内側の全領域にわたって前記ギャップが一定であるようにデータブロックの大きさを変化させた請求項１〜３のいずれかに記載の記録ディスクアクセス制御方法。
【請求項５】
前記記録トラックの半径の差異によって生じるデータブロックのギャップの変化に応じて前記スキューを決定する請求項１〜４のいずれかに記載の記録ディスクアクセス制御方法。
【請求項６】
前記スケジューリングは、前記記録ヘッドを現在位置から前記記録ディスクの内周もしくは外周に向かって移動させた時に前記記録ヘッドに近いものから順に並ぶように複数のディスクアクセスの要求の順序を交換し、
前記データブロックの記録ディスク上における位置の決定は、下記式（１）で与えられるディレイ時間Ｔｄ（Ｌ）と、下記式（２）で与えられる平均シーク距離Ｌａ付近におけるシーク時間Ｔｓ（Ｌ）との差が回転周期と比較して十分に小さくなるように、スキューに加えて、同一のデータブロックの始めと終わりとの間の角度の差異を示すギャップに基づいて行われる請求項１〜５のいずれかに記載の記録ディスクアクセス制御方法。
（数１）
Ｔｄ（Ｌ）＝（Ｌ・Ｂｃ・θｓ＋θｇ＋２ｍπ）／ω        （１）
（数２）
Ｌａ  ＝  Ｌｔ  ／  （Ｎー１）                          （２）
ここでＬはシーク距離で単位はシリンダ数、Ｂｃは１シリンダ内に存在するデータブロック数、θｓはスキューで単位はラジアン、θｇはギャップで単位はラジアン、ωはディスクの回転速度（ラジアン／秒）、Ｌｔはアクセス要求を順に並べた時の両端のアクセス位置間の距離の最大値で単位はシリンダ数、Ｎは同時に処理するアクセスの個数である。また、ｍはＴｄ（Ｌ）がシーク距離Ｌにおけるシーク時間Ｔｓ（Ｌ）を越える範囲で最も小さくなるように選択される。
【請求項７】
前記スケジューリングはヘッドを現在位置から前記記録ディスクの内周もしくは外周に向かって移動させた時に出会う順番となるように複数のディスクアクセスの要求の順序を交換し、
前記データブロックの記録ディスク上における位置の決定は、下記式（３）で与えられるディレイ時間Ｔｄ（Ｌ）が常にシーク時間Ｔｓ（Ｌ）以上であり、かつＬａ付近においてシーク時間Ｔｓ（Ｌ）との差が回転周期と比較して十分に小さくなるようにスキューに加えて、ギャップに基づいて行われる請求項１〜５のいずれかに記載の記録ディスクアクセス制御方法。
（数３）
Ｔｄ（Ｌ）＝（Ｌ・Ｂｃ・θｓ＋θｇ）／ω                （３）
ここでＬはシーク距離で単位はシリンダ数、Ｂｃは１シリンダ内に存在するデータブロック数、θｓはスキューで単位はラジアン、θｇはギャップで単位はラジアン、ωはディスクの回転速度（ラジアン／秒）である。
【請求項８】
前記記憶ディスク上をヘッドが内周から外周に移動する時に使用する第１の領域と、ヘッドが外周から内周に移動する時に使用する第２の領域とに分割し、
前記データブロックの記録ディスク上における位置の決定は、おのおのの領域においてヘッドの移動方向に基づいて最適なスキューとギャップを決定し、この最適なスキューとギャップに基づいて、前記データブロックの記録ディスク上における位置を決定し、
前記スケジューリングは、ヘッドの移動方向に合わせて前記第１と第２の領域だけを選択的にアクセスする
請求項１〜７のいずれかに記載の記録ディスクアクセス制御方法。
【請求項９】
前記記録ディスク上の第１の領域と第２の領域とはディスクを半径方向に沿って２つ以上の複数の部分に分割し、第１の領域と第２の領域とがともにディスク上の最内周から最外周まで分散するように割り当てる
請求項８に記載の記録ディスクアクセス制御方法。
【請求項１０】
ヘッドが記録ディスクに対してアクセスするときの平均移動距離での回転待ち時間が短くなるようにスキューを決定するスキュー決定手段と、
少なくとも前記決定されたスキューに基づいて、データブロックの記録ディスク上における位置を決定するデータブロック配置手段と、
前記ヘッドによる前記記録ディスクに対するアクセス時に、前記ヘッドの移動量が少なくなるように、入力した複数のディスクアクセス要求の順番をスケジューリングするスケジュール手段とを有し、
前記ヘッドは、前記スケジューリング結果に基づいて、前記記録ディスクにアクセスを行う
記録ディスクアクセス制御装置。
【請求項１１】
前記データブロック配置手段は、前記スキューに加えて、同一データブロック内での先頭と末尾との角度差を示すギャップに基づいて行う請求項１０に記載の記録ディスクアクセス制御装置。
【請求項１２】
前記データブロック配置手段は、複数のデータブロックについてスキューとギャップとのそれぞれの組み合わせに関する組み合わせデータを決定し、
前記記録ディスク上の各データブロックの位置に応じて、前記組み合わせデータを選択的に使用する請求項１１に記載の記録ディスクアクセス制御装置。
【請求項１３】
前記データブロック配置手段は、前記記録ディスクの外側から内側の全領域にわたって前記ギャップが一定であるようにデータブロックの大きさを変化させた請求項１０〜１２のいずれかに記載の記録ディスクアクセス制御装置。
【請求項１４】
前記スキュー決定手段は、前記記録トラックの半径の差異によって生じるデータブロックのギャップの変化に応じて前記スキューを決定する請求項１０〜１３のいずれかに記載の記録ディスクアクセス制御装置。
【請求項１５】
前記スケジュール手段は、前記記録ヘッドを現在位置から前記記録ディスクの内周もしくは外周に向かって移動させた時に近いものから順に並ぶように複数のディスクアクセスの要求の順序を交換し、
前記データブロック配置手段は、下記式（４）で与えられるディレイ時間Ｔｄ（Ｌ）と、下記式（５）で与えられる平均シーク距離Ｌａ付近におけるシーク時間Ｔｓ（Ｌ）との差が回転周期と比較して十分に小さくなるように、スキューに加えて、同一のデータブロックの始めと終わりとの間の角度の差異を示すギャップに基づいて行われる請求項１０〜１４のいずれかに記載の記録ディスクアクセス制御装置。
（数４）
Ｔｄ（Ｌ）＝（Ｌ・Ｂｃ・θｓ＋θｇ＋２ｍπ）／ω        （４）
（数５）
Ｌａ  ＝  Ｌｔ  ／  （Ｎー１）                          （５）
ここでＬはシーク距離で単位はシリンダ数、Ｂｃは１シリンダ内に存在するデータブロック数、θｓはスキューで単位はラジアン、θｇはギャップで単位はラジアン、ωはディスクの回転速度（ラジアン／秒）、Ｌｔはアクセス要求を順に並べた時の両端のアクセス位置間の距離の最大値で単位はシリンダ数、Ｎは同時に処理するアクセスの個数である。また、ｍはＴｄ（Ｌ）がシーク距離Ｌにおけるシーク時間Ｔｓ（Ｌ）を越える範囲で最も小さくなるように選択される。
【請求項１６】
前記スケジュール手段はヘッドを現在位置から前記記録ディスクの内周もしくは外周に向かって移動させた時に出会う順番となるように複数のディスクアクセスの要求の順序を交換し、
前記データブロック配置手段は、下記式（６）で与えられるディレイ時間Ｔｄ（Ｌ）が常にシーク時間Ｔｓ（Ｌ）以上であり、かつＬａ付近においてシーク時間Ｔｓ（Ｌ）との差が回転周期と比較して十分に小さくなるように、スキューに加えて、ギャップに基づいて前記記録ディスク上のデータブロックの位置を決定する請求項１０〜１４のいずれかに記載の記録ディスクアクセス制御装置。
（数６）
Ｔｄ（Ｌ）＝（Ｌ・Ｂｃ・θｓ＋θｇ）／ω                （６）
ここでＬはシーク距離で単位はシリンダ数、Ｂｃは１シリンダ内に存在するデータブロック数、θｓはスキューで単位はラジアン、θｇはギャップで単位はラジアン、ωはディスクの回転速度（ラジアン／秒）である。
【請求項１７】
前記記憶ディスク上をヘッドが内周から外周に移動する時に使用する第１の領域と、ヘッドが外周から内周に移動する時に使用する第２の領域とに分割し、
前記データブロック配置手段は、おのおのの領域においてヘッドの移動方向に基づいて最適なスキューとギャップを決定し、この最適なスキューとギャップに基づいて、前記データブロックの記録ディスク上における位置を決定し、
前記スケジュール手段は、ヘッドの移動方向に合わせて前記第１と第２の領域だけを選択的にアクセスする
請求項１０〜１６のいずれかに記載の記録ディスクアクセス制御装置。
【請求項１８】
前記記録ディスク上の第１の領域と第２の領域とはディスクを半径方向に沿って２つ以上の複数の部分に分割し、第１の領域と第２の領域とがともにディスク上の最内周から最外周まで分散するように割り当てる
請求項１７に記載の記録ディスクアクセス制御装置。
【請求項１９】
ヘッドがディスクに対してアクセスするときの平均移動距離での回転待ち時間が短くなるように、データブロックのディスク上における位置を決定し、
前記ヘッドによる前記ディスクに対するアクセス時に、前記ヘッドの移動量が少なくなるように、入力した複数のディスクアクセス要求の順番をスケジューリングし、
前記スケジューリング結果に基づいて、前記ヘッドによる前記ディスクのアクセスを行う
記録ディスクアクセス制御方法。
【請求項２０】
前記データブロックのディスク上における位置の決定は、
ヘッドがディスクに対してアクセスするときの平均移動距離での回転待ち時間が短くなるようにスキューを決定し、
少なくとも前記決定されたスキューに基づいて、前記データブロックのディスク上における位置の決定し、
前記スキューは、隣接するデータブロック間の円周方向における角度の差異を示している
請求項１９に記載の記録ディスクアクセス制御方法。
【請求項２１】
前記データブロックのディスク上における位置の決定は、前記スキューに加えて、同一データブロック内での先頭と末尾との角度差を示すギャップに基づいて行う請求項２０に記載の記録ディスクアクセス制御方法。
【請求項２２】
ヘッドがディスクに対してアクセスするときの平均移動距離での回転待ち時間が短くなるように、データブロックのディスク上における位置を決定する手段と、
前記ヘッドによる前記ディスクに対するアクセス時に、前記ヘッドの移動量が少なくなるように、入力した複数のディスクアクセス要求の順番をスケジューリングする手段と、
前記スケジューリング結果に基づいて、前記ヘッドによる前記ディスクのアクセスを行う手段と
を有する記録ディスクアクセス制御装置。
【請求項２３】
前記データブロックのディスク上における位置を決定する手段は、
ヘッドがディスクに対してアクセスするときの平均移動距離での回転待ち時間が短くなるようにスキューを決定する手段と、
少なくとも前記決定されたスキューに基づいて、前記データブロックのディスク上における位置の決定する手段とを有し、
前記スキューは、隣接するデータブロック間の円周方向における角度の差異を示している
請求項２２に記載の記録ディスクアクセス制御装置。
【請求項２４】
前記データブロックのディスク上における位置を決定する手段は、
前記スキューに加えて、同一データブロック内での先頭と末尾との角度差を示すギャップに基づいて行う請求項２３に記載の記録ディスクアクセス制御装置。
【請求項２５】
ヘッドが記録ディスクに対してアクセスするときの平均移動距離での回転待ち時間が短くなるようにスキューを決定するスキュー決定手段と、
少なくとも前記決定されたスキューに基づいて、データブロックの記録ディスク上における位置を決定するブロックアロケータと、
前記ヘッドによる前記記録ディスクに対するアクセス時に、前記ヘッドの移動量が少なくなるように、入力した複数のディスクアクセス要求の順番をスケジューリングするスケジューラとを有し、
前記ヘッドは、前記スケジューリング結果に基づいて、前記記録ディスクにアクセスを行う
記録ディスクアクセス制御装置。
【請求項２６】
前記ブロックアロケータは、前記スキューに加えて、同一データブロック内での先頭と末尾との角度差を示すギャップに基づいて行う請求項２５に記載の記録ディスクアクセス制御装置。
【請求項２７】
前記ブロックアロケータは、複数のデータブロックについてスキューとギャップとのそれぞれの組み合わせに関する組み合わせデータを決定し、
前記記録ディスク上の各データブロックの位置に応じて、前記組み合わせデータを選択的に使用する請求項２６に記載の記録ディスクアクセス制御装置。
【請求項２８】
前記ブロックアロケータは、前記記録ディスクの外側から内側の全領域にわたって前記ギャップが一定であるようにデータブロックの大きさを変化させた請求項２５〜２７のいずれかに記載の記録ディスクアクセス制御装置。
【請求項２９】
前記スキュー決定手段は、前記記録トラックの半径の差異によって生じるデータブロックのギャップの変化に応じて前記スキューを決定する請求項２５〜２８のいずれかに記載の記録ディスクアクセス制御装置。
【請求項３０】
前記スケジューラは、前記記録ヘッドを現在位置から前記記録ディスクの内周もしくは外周に向かって移動させた時に近いものから順に並ぶように複数のディスクアクセスの要求の順序を交換し、
前記ブロックアロケータは、下記式（７）で与えられるディレイ  時間Ｔｄ（Ｌ）と、下記式（８）で与えられる平均シーク距離Ｌａ付近におけるシーク時間Ｔｓ（Ｌ）との差が回転周期と比較して十分に小さくなるように、スキューに加えて、同のデータブロックの始めと終わりとの間の角度の差異を示すギャップに基づいて行われる請求項２５〜２９のいずれかに記載の記録ディスクアクセス制御装置。
（数７）
Ｔｄ（Ｌ）＝（Ｌ・Ｂｃ・θｓ＋θｇ＋２ｍπ）／ω        （７）
（数８）
Ｌａ  ＝  Ｌｔ  ／  （Ｎー１）                          （８）
ここでＬはシーク距離で単位はシリンダ数、Ｂｃは１シリンダ内に存在するデータブロック数、θｓはスキューで単位はラジアン、θｇはギャップで単位はラジアン、ωはディスクの回転速度（ラジアン／秒）、Ｌｔはアクセス要求を順に並べた時の両端のアクセス位置間の距離の最大値で単位はシリンダ数、Ｎは同時に処理するアクセスの個数である。また、ｍはＴｄ（Ｌ）がシーク距離Ｌにおけるシーク時間Ｔｓ（Ｌ）を越える範囲で最も小さくなるように選択される。
【請求項３１】
前記スケジューラはヘッドを現在位置から前記記録ディスクの内周もしくは外周に向かって移動させた時に出会う順番となるように複数のディスクアクセスの要求の順序を交換し、
前記ブロックアロケータは、下記式（９）で与えられるディレイ時間Ｔｄ（Ｌ）が常にシーク時間Ｔｓ（Ｌ）以上であり、かつＬａ付近においてシーク時間Ｔｓ（Ｌ）との差が回転周期と比較して十分に小さくなるように、スキューに加えて、ギャップに基づいて前記記録ディスク上のデータブロックの位置を決定する請求項２５〜２９のいずれかに記載の記録ディスクアクセス制御装置。
（数９）
Ｔｄ（Ｌ）＝（Ｌ・Ｂｃ・θｓ＋θｇ）／ω                （９）
ここでＬはシーク距離で単位はシリンダ数、Ｂｃは１シリンダ内に存在するデータブロック数、θｓはスキューで単位はラジアン、θｇはギャップで単位はラジアン、ωはディスクの回転速度（ラジアン／秒）である。
【請求項３２】
前記記憶ディスク上をヘッドが内周から外周に移動する時に使用する第１の領域と、ヘッドが外周から内周に移動する時に使用する第２の領域とに分割し、
前記ブロックアロケータは、おのおのの領域においてヘッドの移動方向に基づいて最適なスキューとギャップを決定し、この最適なスキューとギャップに基づいて、前記データブロックの記録ディスク上における位置を決定し、
前記スケジューラは、ヘッドの移動方向に合わせて前記第１と第２の領域だけを選択的にアクセスする
請求項２５〜３１のいずれかに記載の記録ディスクアクセス制御装置。
【請求項３３】
前記記録ディスク上の第１の領域と第２の領域とはディスクを半径方向に沿って２つ以上の複数の部分に分割し、第１の領域と第２の領域とがともにディスク上の最内周から最外周まで分散するように割り当てる
請求項３２に記載の記録ディスクアクセス制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は高速な転送速度とディスク上の不連続な場所のアクセス（ランダム・アクセス）とが必要とされる記録ディスクアクセス制御方法およびその装置に関する。
【背景技術】
【０００２】
コンピュータの高速化に伴い、高速でランダムなアクセスが可能なディスク装置はますますその重要性を増している。近年、特に注目されているマルチメディア技術では、ディジタルデータとしてディスクに格納した動画像や音声を高速にかつディスク上の互いに離れた場所からアクセスすることが必須である。すなわち、動画像、音声などのマルチメディア・データ用のストレージには、高い転送速度とリアルタイム性が必要とされる。高い転送速度は大量の動画像や音声を扱う上で当然必要となる。
一方、リアルタイム性とは処理時間の上限が保証されていることを意味する。例えば動画像は毎秒３０枚、一定の間隔でつぎつぎに表示されないと動きがぎこちなくなる。
【０００３】
また、ディスクの能力が追い付かず音声データが不足すれば音が途切れて不快なノイズを発する。このようにマルチメディアのデータはそれぞれが特定の時刻に用意され使用されないと情報としての価値が激減してしまう。したがってマルチメディア用のストレージでは最悪の場合でもこれだけの時間で処理できる、という上限が保証されていることが重要である。さもないと、たとえ平均的な性能が仕様を満足していても、一時的にデータが間に合わないということが起きかねない。処理時間の最大値が保証されていることをリアルタイム性と呼び、マルチメディア分野では欠かせない機能である。
【０００４】
従来のコンピュータ用のストレージでは平均性能の向上が第一目標であり、必ずしも最悪値が低く抑えられてはいなかった、つまりストレージ処理時間のばらつきが大きく、この点がマルチメディア用のストレージとは対照的である。
しかも、主要なマルチメディアの応用分野（アプリケーション）においては物理的に離れた場所のデータを次々にアクセスすること（ランダム・アクセス）が高速に行なえなくてはならない。例えばビデオ・オン・デマンド（ＶＯＤ）は大勢の視聴者がそれぞれ好みの番組を好きな時に呼び出して見るシステムであるが、これを実現するには多数の視聴者からの要求を並行して処理し、各視聴者が現在見ている部分のデータを素早く用意しなくてはならない。このため、ディスク上のさまざまな場所に格納されている映画などのソースを高速にたどってまわることが必要になる。
【０００５】
また、近年ではビデオや映画の編集はテープやフィルムを用いずに、ディスクを使用して行なわれる。テープでは、オーバーライトを避けるために、例えば１時間の番組を作った後で先頭付近に数秒のシーンを挿入する場合、挿入個所よりあとのすべての映像を後ろにずらして再度録画しなくてはならない。アナログオーディオカセットテープの高速再生とは異なり、そのようなビデオプログラムの再度の録画にはほぼ番組１本分の時間が必要であり、効率が悪い。しかし、ディスクではランダムアクセスが可能なため、挿入部分をディスク上の別の場所に置いておき、再生時にはその場所にいったんジャンプして挿入された映像をアクセスし、その後でもとの場所に戻り、映像の再生を続ければよい。この考えをさらに発展させ、番組の各シーン（カット）はディスク上の別々の場所に置いておき、再生時にこれを高速にたどりながらあたかも連続した一本のテープを再生しているかのように見せる技術が知られている。このようにすれば、シーンの入れ換えや長さの変更は、ディスク上のデータをたどる順番を変更するだけで可能なので、編集の効率が極めて高い。これをノン・リニア編集と呼ぶ。ただし、この場合にもディスク上の物理的に離れた場所を高速にたどることが必要である。
【０００６】
これらの例に見られるように、マルチメディアの応用分野ではディスク上の不連続な場所をたどりながら（これをランダム・アクセスと呼ぶ）高速にデータをアクセスすることが極めて重要であるが、不連続な場所への移動にはシーク時間と呼ばれる、ヘッドが所望のシリンダまで移動するための時間と、回転待ち時間とよばれる、シリンダ内でデータの先頭が現れるまでディスクの回転を待つ時間とが必要である。これらの時間をアクセスのオーバヘッドと呼ぶ。これが実際にデータをアクセスしている時間に比べて大きいほどディスクからのデータ転送に時間がかかることになり、性能が低下する。
【０００７】
今、ディスクのシーク時間をＴｓ、回転待ち時間をＴｒとすれば、ディスクアクセスのオーバヘッドはＴｓ＋Ｔｒとなる。ディスクのヘッドがデータ上に存在し、実際にアクセスをしている時間をＴｔとおけば、離れた場所へのヘッドのジャンプが一切ない場合と比べた効率は下記式（１０）に示すように低くなる。
（数１０）
Ｔｔ  ／  （Ｔｔ  ＋  Ｔｓ  ＋  Ｔｒ）                    （１０）
すなわち、ディスク上のデータを端から順に（シーケンシャルに）アクセスする場合と比べて、離れた場所のデータをたどりながら（ランダム・アクセス）する場合にはこれだけの性能の低下を想定しなくてはならない。従ってリアルタイム性（処理時間の上限を定め、常にそれ以下で動作することを保証する）を保ちつつランダム・アクセス時の性能低下を抑えることがマルチメディア用ディスクの課題である。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところで、ディスクのアクセスのリアルタイム性を保証する方法に関しては近年研究が進められている。例えば、D.Anderson, Y.Osawa, R.Govindan 著の"A File System for Continuous Media", ACM Transactions on Computer Systems, Vol.10, No.4, pp.311-337, 1992  （以下 [Anderson92] ）においてはディスクから読み出したデータを一時的に格納するバッファメモリの量と一回のアクセスで読み出すデータ量との関係を最適化することでシステムの性能の向上を計っている。
【０００９】
しかし、ディスクのアクセスのオーバヘッドに関しては、解析を容易にするためにシーク時間も回転待ち時間も考えられる最悪の値がランダムアクセスの都度発生すると仮定している。すわなち、シーク時間は最内周から最外周まであるいは最外周から最内周までシークする時の時間が最長シーク時間として採用され、ちょうど一回転分待つための時間が回転待ち時間として採用される。これらの２つの値が加えられてオーバヘッドが得られる。もちろん、このように仮定すれば処理時間の最悪値の見積もりとして極めて安全であるが、毎回必ずこのような動作をすることは実際にはないので、現実にディスクから引き出せる性能と比べて最悪値の見積もりはだいぶ低いものとなり、そのような見積もりは設計データとしての意義が薄い。
【００１０】
また、V.Rangan, H.Vin 著の"Efficient Storage Techniques for Digital Continuous Multimedia", IEEE Transactions on knowledge and data engineering, Vol.5, No.4, pp.564-573, 1993  （以下 [Rangan93] ）においては映像ファイルを複数個のセグメントに切り、それぞれのセグメントを別の場所に格納する時、セグメントの長さとセグメント間の間隔をどのように決定すればリアルタイム性を保てるかを検討している。
【００１１】
しかしここでもセグメント間をジャンプする時（ランダム・アクセス時）には[Anderson92]と同様に毎回最悪のオーバヘッドが発生すると仮定しているため、同様な問題がある。
これらの研究と比較して、最悪値をより低く抑えようとする試みもある。それによって、それだけ高い性能でリアルタイム・ランダムアクセスが保証出来る。N.Reddy, J.Wyllie 著の "Disk scheduling in a multimedia I/O system",ACM Multimedia 93, pp.225-233, 1993.  （以下 [Reddy93]）、およびJ.Gemmel, J.Han 他著の "Delay-Sensitive Multimedia on Disk", IEEE Multimedia 1994, pp.56-67, 1994.  （以下 [Gemmel94] ）、およびM.Chen, D.Kandlur, P.Yu 著の "Optimization of the Grouped Sweeping Scheduling (GSS) with Heterogeneous Multimedia Streams", ACM Multimedia 93,pp.235-242, 1993. （以下 [Chen93] ）はいずれもSCANと呼ばれるヘッドスケジューリング・アルゴリズムを用いてオーバヘッドを抑えることを試みるものである。
【００１２】
ヘッドスケジューリングとは、ディスク上の複数の場所のアクセスが必要な場合に、アクセスの順番を工夫することでシーク時間を減少させる方法である。図１６に示すSCANアルゴリズムにおいては与えられた複数のＩ／Ｏ要求（＃１、＃２、…）をディスクの半径方向にソートして順に処理するアルゴリズムであり、Ｉ／Ｏ要求の到着順(#1, #2,  …) に処理したら発生したであろうヘッドの往復動作を防ぐことができ、ひいてはそれぞれのシーク時間を減少させることが出来る。ヘッドスケジューリングのアルゴリズムは多くのものが知られており例えば H.Deitel 著 Operating Systems, Addison Wesley, 1990. に詳しく述べられている。
【００１３】
[Reddy93] 、[Gemmel94]、[Chen93]  はいずれもSCANアルゴリズムの使用を前提にしており、このためにシーク時間を抑えることができる。したがってオーバヘッドの最悪値を低くすることが可能で、[Anderson92]や[Rangan93]と比べて高い性能を保証出来る。
しかし、SCANアルゴリズムによって抑えることができるのはシーク時間のみであり、回転待ち時間の低減に関して言及したものはこれまでなかった。
[Reddy93] ではゼロ・レイテンシ・アクセス機構と呼ばれる特殊な機能がディスクに存在することを仮定する。ゼロ・レイテンシ・アクセス機構は、ヘッドが所望のトラックに到達した時点で、たとえデータの途中からでもディスクからどんどん読みだし、間に合わなかったデータの先頭部分はあとでディスクが一回転してその部分が戻ってきた時に改めて読む、という方法である。従って、ディスクが１回転すればかならず所望のデータはすべて読み出すことが出来るので、回転待ちとデータのアクセスの合計は最大でも１回転分の時間となる。
【００１４】
しかし、現実のディスクでこの機構を搭載しているものはほとんどなく、[Reddy93] の仮定は現実的ではないという問題がある。さらに、たとえゼロ・レイテンシ・アクセス機構が搭載されていたとしても、データ長がちょうどトラック長の整数倍でない限り、回転待ちはやはり発生する。例えば、データ長が２．５トラック分の長さであるとき、最初の２トラック分に関しては、ゼロ・レイテンシ・アクセス機構によってシーク後ただちにデータの読み出し・書き込みが開始できるが、最後に残る０．５トラック分については、その部分にヘッドが到達するまでに回転待ちを避けることができない。
一方[Gemmel94]は、回転待ちは制御や予測が不可能な量であるとして、常に最大値を加算してオーバヘッドを見積もる方法を取る。これは安全であるが無駄も多く、そこが問題となる。
さらに[Chen93]は回転待ちは無視出来る補正項として扱っているが、これは現実的ではない。例えば最近の高速なディスクでは回転周期が８．３ｍＳであり、一方SCANアルゴリズムを使用すればシーク時間の最大値は６ｍＳ程度あるいはそれ以下に抑えることができるので回転待ちは支配的である。さらに、空気抵抗やモータの消費電力による発熱の面からも、今後回転速度の飛躍的向上を望むことは難しく、回転待ちの減少は解決すべき最大の課題となっている。
【００１５】
回転待ちの削減が重要であることはコンピュータ用の通常のファイルシステムにおいても指摘されている。S.Ng  著 "Improving Disk Performance Via Latency Reduction", IEEE Transactions on Computers, Vol.40, No.1,January 1991,pp.22-30.  （以下 [Ng91] ）は回転方向に位相をずらしたデータのコピーを用意するなどの方法でリード時の平均回転待ち時間を削減する方法について述べる。しかし、この方法はデータ量の多いマルチメディア用途への応用は困難である。
【００１６】
本発明は以上のような状況に鑑みてなされたものであり、シーク時間と回転待ち時間の両方を低く抑えることで、ランダム・アクセスをリアルタイム性を保ちつつ高速に実現できる記録ディスクアクセス制御方法およびその装置を提供することを目的とする。このような、記録ディスクアクセス制御方法およびその装置は需要の増しつつあるマルチメディア・データ用のストレージとして好適である。
【課題を解決するための手段】
【００１７】
上述した従来技術の問題点を解決し、上述した目的を達成するために、本発明の記録ディスクアクセス制御方法は、ヘッドが記録ディスクに対してアクセスするときの平均移動距離での回転待ち時間が短くなるようにスキューを決定し、少なくとも前記決定されたスキューに基づいて、データブロックの記録ディスク上における位置を決定し、前記ヘッドによる前記記録ディスクに対するアクセス時に、前記ヘッドの移動量が少なくなるように、入力した複数のディスクアクセス要求の順番をスケジューリングし、前記スケジューリング結果に基づいて、前記ヘッドによる前記記録ディスクのアクセスを行う。
【００１８】
また、本発明の記録ディスクアクセス制御方法は、好ましくは、前記データブロックの記録ディスク上における位置の決定は、前記スキューに加えて、同一データブロック内での先頭と末尾との角度差を示すギャップに基づいて行う。
【００１９】
また、本発明の記録ディスクアクセス制御方法は、好ましくは、複数のデータブロックについてスキューとギャップとのそれぞれの組み合わせに関する組み合わせデータを決定し、前記記録ディスク上の各データブロックの位置に応じて、前記組み合わせデータを選択的に使用する。
【００２０】
また、本発明の記録ディスクアクセス制御方法は、好ましくは、前記記録ディスクの外側から内側の全領域にわたって前記ギャップが一定であるようにデータブロックの大きさを変化させる。
【００２１】
また、本発明の記録ディスクアクセス制御方法は、好ましくは、前記記録トラックの半径の差異によって生じるデータブロックのギャップの変化に応じて前記スキューを決定する。
【００２２】
また、本発明の記録ディスクアクセス制御方法は、好ましくは、前記スケジューリングは、前記記録ヘッドを現在位置から前記記録ディスクの内周もしくは外周に向かって移動させた時に前記記録ヘッドに近いものから順に並ぶように複数のディスクアクセスの要求の順序を交換し、前記データブロックの記録ディスク上における位置の決定は、下記式（１１）で与えられるディレイ時間Ｔｄ（Ｌ）と、下記式（１２）で与えられる平均シーク距離Ｌａ付近におけるシーク時間Ｔｓ（Ｌ）との差が回転周期と比較して十分に小さくなるように、スキューに加えて、同一のデータブロックの始めと終わりとの間の角度の差異を示すギャップに基づいて行われる。
【００２３】
（数１１）
Ｔｄ（Ｌ）＝（Ｌ・Ｂｃ・θｓ＋θｇ＋２ｍπ）／ω        （１１）
【００２４】
（数１２）
Ｌａ  ＝  Ｌｔ  ／  （Ｎー１）                          （１２）
ここでＬはシーク距離で単位はシリンダ数、Ｂｃは１シリンダ内に存在するデータブロック数、θｓはスキューで単位はラジアン、θｇはギャップで単位はラジアン、ωはディスクの回転速度（ラジアン／秒）、Ｌｔはアクセス要求を順に並べた時の両端のアクセス位置間の距離の最大値で単位はシリンダ数、Ｎは同時に処理するアクセスの個数である。また、ｍはＴｄ（Ｌ）がシーク距離Ｌにおけるシーク時間Ｔｓ（Ｌ）を越える範囲で最も小さくなるように選択される。
【００２５】
また、本発明の記録ディスクアクセス制御方法は、好ましくは、前記スケジューリングはヘッドを現在位置から前記記録ディスクの内周もしくは外周に向かって移動させた時に出会う順番となるように複数のディスクアクセスの要求の順序を交換し、前記データブロックの記録ディスク上における位置の決定は、下記式（１３）で与えられるディレイ時間Ｔｄ（Ｌ）が常にシーク時間Ｔｓ（Ｌ）以上であり、かつＬａ付近においてシーク時間Ｔｓ（Ｌ）との差が回転周期と比較して十分に小さくなるようにスキューに加えて、ギャップに基づいて行われる。
【００２６】
（数１３）
Ｔｄ（Ｌ）＝（Ｌ・Ｂｃ・θｓ＋θｇ）／ω                （１３）
ここでＬはシーク距離で単位はシリンダ数、Ｂｃは１シリンダ内に存在するデータブロック数、θｓはスキューで単位はラジアン、θｇはギャップで単位はラジアン、ωはディスクの回転速度（ラジアン／秒）である。
【００２７】
また、本発明の記録ディスクアクセス制御方法は、好ましくは、前記記憶ディスク上をヘッドが内周から外周に移動する時に使用する第１の領域と、ヘッドが外周から内周に移動する時に使用する第２の領域とに分割し、前記データブロックの記録ディスク上における位置の決定は、おのおのの領域においてヘッドの移動方向に基づいて最適なスキューとギャップを決定し、この最適なスキューとギャップに基づいて、前記データブロックの記録ディスク上における位置を決定し、前記スケジューリングは、ヘッドの移動方向に合わせて前記第１と第２の領域だけを選択的にアクセスする。
【００２８】
また、本発明の記録ディスクアクセス制御方法は、好ましくは、前記記録ディスク上の第１の領域と第２の領域とはディスクを半径方向に沿って２つ以上の複数の部分に分割し、第１の領域と第２の領域とがともにディスク上の最内周から最外周まで分散するように割り当てる。
【００２９】
また、本発明の記録ディスクアクセス制御装置は、ヘッドが記録ディスクに対してアクセスするときの平均移動距離での回転待ち時間が短くなるようにスキューを決定するスキュー決定手段と、少なくとも前記決定されたスキューに基づいて、データブロックの記録ディスク上における位置を決定するデータブロック配置手段と、前記ヘッドによる前記記録ディスクに対するアクセス時に、前記ヘッドの移動量が少なくなるように、入力した複数のディスクアクセス要求の順番をスケジューリングするスケジュール手段とを有し、前記ヘッドは、前記スケジューリング結果に基づいて、前記記録ディスクにアクセスを行う。
【００３０】
また、本発明の記録ディスクアクセス制御装置は、好ましくは、前記データブロック配置手段は、前記スキューに加えて、同一データブロック内での先頭と末尾との角度差を示すギャップに基づいて行う。
【００３１】
また、本発明の記録ディスクアクセス制御装置は、好ましくは、前記データブロック配置手段は、複数のデータブロックについてスキューとギャップとのそれぞれの組み合わせに関する組み合わせデータを決定し、前記記録ディスク上の各データブロックの位置に応じて、前記組み合わせデータを選択的に使用する。
【００３２】
また、本発明の記録ディスクアクセス制御装置は、好ましくは、前記データブロック配置手段は、前記記録ディスクの外側から内側の全領域にわたって前記ギャップが一定であるようにデータブロックの大きさを変化させる。
【００３３】
また、本発明の記録ディスクアクセス制御装置は、好ましくは、前記スキュー決定手段は、前記記録トラックの半径の差異によって生じるデータブロックのギャップの変化に応じて前記スキューを決定する。
【００３４】
また、本発明の記録ディスクアクセス制御装置は、好ましくは、前記スケジュール手段は、前記記録ヘッドを現在位置から前記記録ディスクの内周もしくは外周に向かって移動させた時に近いものから順に並ぶように複数のディスクアクセスの要求の順序を交換し、前記データブロック配置手段は、下記式（１４）で与えられるディレイ時間Ｔｄ（Ｌ）と、下記式（１５）で与えられる平均シーク距離Ｌａ付近におけるシーク時間Ｔｓ（Ｌ）との差が回転周期と比較して十分に小さくなるように、スキューに加えて、同一のデータブロックの始めと終わりとの間の角度の差異を示すギャップに基づいて行われる。
【００３５】
（数１４）
Ｔｄ（Ｌ）＝（Ｌ・Ｂｃ・θｓ＋θｇ＋２ｍπ）／ω        （１４）
【００３６】
（数１５）
Ｌａ  ＝  Ｌｔ  ／  （Ｎー１）                          （１５）
ここでＬはシーク距離で単位はシリンダ数、Ｂｃは１シリンダ内に存在するデータブロック数、θｓはスキューで単位はラジアン、θｇはギャップで単位はラジアン、ωはディスクの回転速度（ラジアン／秒）、Ｌｔはアクセス要求を順に並べた時の両端のアクセス位置間の距離の最大値で単位はシリンダ数、Ｎは同時に処理するアクセスの個数である。また、ｍはＴｄ（Ｌ）がシーク距離Ｌにおけるシーク時間Ｔｓ（Ｌ）を越える範囲で最も小さくなるように選択される。
【００３７】
また、本発明の記録ディスクアクセス制御装置は、好ましくは、前記スケジュール手段はヘッドを現在位置から前記記録ディスクの内周もしくは外周に向かって移動させた時に出会う順番となるように複数のディスクアクセスの要求の順序を交換し、前記データブロック配置手段は、下記式（１６）で与えられるディレイ時間Ｔｄ（Ｌ）が常にシーク時間Ｔｓ（Ｌ）以上であり、かつＬａ付近においてシーク時間Ｔｓ（Ｌ）との差が回転周期と比較して十分に小さくなるように、スキューに加えて、ギャップに基づいて前記記録ディスク上のデータブロックの位置を決定する。
【００３８】
（数１６）
Ｔｄ（Ｌ）＝（Ｌ・Ｂｃ・θｓ＋θｇ）／ω                （１６）
ここでＬはシーク距離で単位はシリンダ数、Ｂｃは１シリンダ内に存在するデータブロック数、θｓはスキューで単位はラジアン、θｇはギャップで単位はラジアン、ωはディスクの回転速度（ラジアン／秒）である。
【００３９】
また、本発明の記録ディスクアクセス制御装置は、好ましくは、前記記憶ディスク上をヘッドが内周から外周に移動する時に使用する第１の領域と、ヘッドが外周から内周に移動する時に使用する第２の領域とに分割し、前記データブロック配置手段は、おのおのの領域においてヘッドの移動方向に基づいて最適なスキューとギャップを決定し、この最適なスキューとギャップに基づいて、前記データブロックの記録ディスク上における位置を決定し、前記スケジュール手段は、ヘッドの移動方向に合わせて前記第１と第２の領域だけを選択的にアクセスする。
【００４０】
また、本発明の記録ディスクアクセス制御装置は、好ましくは、前記記録ディスク上の第１の領域と第２の領域とはディスクを半径方向に沿って２つ以上の複数の部分に分割し、第１の領域と第２の領域とがともにディスク上の最内周から最外周まで分散するように割り当てる。
【００４１】
本発明の記録ディスクアクセス制御方法およびその装置では、データブロックの配置を行なう際に円周方向にずらしながら（スキューを与えて）配置するため、シーク動作中に所望のデータの先頭がヘッドの位置を通り過ぎないように制御できる。このため、所望のデータの先頭が再び戻ってくるまでの時間を待つ必要がなく、シーク時間と回転待ち時間の両方を低く抑え、ランダム・アクセスをリアルタイム性を保ちつつ高速に実現できる。
また、本発明の記録ディスクアクセス制御方法およびその装置では、ヘッドが外周から内周に移動している時に使用する領域と、内周から外周に移動している時に使用する領域とでスキューを変化させることでヘッドの移動方向に関わらず最適なスキューを与えることができる。
【発明の効果】
【００４２】
以上に述べたように、本発明の記録ディスクアクセス制御方法およびその装置によれば、記録ディスクのオーバヘッド、つまりシーク時間と回転待ち時間の和を低減でき、しかもその最大値を低い値で保証できる。
また、本発明の記録ディスクアクセス制御方法およびその装置によれば、ヘッドの移動方向にみあったスキューを領域ごとに与えることによって、ヘッドの移動方向に関わらず前述のオーバヘッドの低減が可能である。
【発明を実施するための最良の形態】
【００４３】
以下、本発明の実施形態に係わる記録ディスクアクセス制御方法およびその装置について説明する。
第１実施形態
図１は、本実施形態に係わる記録ディスクアクセス制御装置の構成図である。
本実施形態に係わる記録ディスクアクセス制御装置は、例えば、コンピュータにおいてソフトウェアを動作させることによって実現され、図１に示す各ブロックは主要なプログラムモジュールあるいは主要なデータ構造を表している。
ブロックアロケータ（配置手段）１はディスク５にデータをどのように配置するかを、与えられたフォーマットパラメータ１０をもとに決定する。ディスク５としては、例えば、磁気ディスク、光磁気（ＭＯ）ディスクあるいはハードディスク（ＨＤＤ）などが用いられる。
【００４４】
このフォーマットパラメータ１０は第１のデータのブロックの大きさ、SCANスケジュールを行なう時の平均のヘッド移動距離Ｌａ、使用するドライブのシーク時間関数Ｔｓ（Ｌ）、ディスク５の物理的フォーマットを含む。
平均のヘッド移動距離Ｌａは、ディスクの総シリンダ数Ｌｔと、１回のスキャンで処理するアクセスの個数Ｎから下記式（１７）で与えられる。
（数１７）
Ｌａ  ＝  Ｌｔ  ／（Ｎー１）                            （１７）
【００４５】
ドライブのシーク時間  Ｔｓ（Ｌ）はシーク距離Ｌ（シリンダ数）の関数であり、その値は使用するディスクドライブの機械的特性によって決まる。図４にその例を示す。何個のアクセスリクエストをまとめてスキャンで処理するかは、このディスクを使用するアプリケーションの性格、そこで求められる性能、使用できるバッファメモリの量などから決定する。まとめてスキャンするアクセスリクエストの数Ｎは大きいほどディスクのランダムアクセス性能が向上するが、必要なバッファメモリの量が増加するとともに、応答時間が増加するという副作用がある。
【００４６】
これらのフォーマットパラメータ１０は、システム全体を管理するプログラム（図示しない）を処理する中央プロセッサユニット（ＣＰＵ）が決定してブロックアロケータ１に与える。本実施形態をノンリニア編集用に応用した実施例ではＮ＝１０、Ｌａ＝３００をブロックアロケータ１に与えた。また、データ１ブロックの大きさは画像データ１枚分であり、放送局などで使用されるCCIR-601というフォーマットの場合は約７００ＫＢ（キロ・バイト）である。もちろんこの数値は用途やさまざまな要求仕様にあわせて自由に設定可能である。
【００４７】
ブロックアロケータ１は与えられたフォーマットパラメータ１０に基づいて、各ブロックをディスク５上のどこに置くか決定する。この例では１ブロックは画像１フレームであるが、もちろんＭＰＥＧなどの圧縮画像を適当な長さに分割したものでも、またオーディオデータでも、基本的な考え方は同様である。
ディスク５は通常セクタと呼ばれる領域ごとにアクセスすることができる。一つのセクタは通常５１２Ｂ（バイト）から４ＫＢ程度の大きさで、これを円周上に並べたドーナツ型の領域をトラック、さらに複数枚重ねた磁気メディアの同じトラックを集めた円筒状の領域をシリンダとよぶ。
【００４８】
画像や音声データの１ブロックは通常１セクタよりも大きいので、ブロックアロケータ１はそれぞれのブロックに対して複数のセクタを割り当てる。図５に磁気メディアが１枚の場合の簡単な例を示す。図５において斜線によって示した部分、すなわちトラック「１」の一周全部とトラック「２」のセクタ「０」〜「６」とが１ブロックに対応する。この例ではメディアは１枚なのでトラックとシリンダが同じ意味であったが、磁気メディアが複数枚存在するディスクドライブの場合は同じシリンダ内を全部使い切ったら隣接シリンダを使用するように割り当てを行なう。
【００４９】
セクタへの割り当てを全部のブロックについて行ない、その結果をブロックマップ３に記入してブロックアロケータ１の役割は終了する。ブロックアロケータ１はセクタの位置をシリンダ番号、メディア番号（何枚目のメディアか）、セクタ番号の組で指定する。しかし、近年最も普及しているＳＣＳＩ(ANSI Small Computer System Interface)仕様のドライブではドライブ内のすべてのセクタに通し番号（論理セクタ番号）を与え、これを用いてデータをアクセスするようになっている。尚、ＳＣＳＩでは、論理セクタのことを論理ブロックアドレスと呼ぶが、画像や音声ブロックとの混同を避けるために、論理セクタという言葉を用いる。
そのため、物理アドレステーブル７に予めドライブが定める論理セクタ番号と物理的なアドレスすなわち（シリンダ番号、メディア番号、セクタ番号）との対応を格納しておき、ブロックアロケータ１は物理アドレステーブル７を参照して、所望の物理アドレスをＳＣＳＩの定める論理セクタ番号に変換し、これをもブロックマップ３に記入する。
【００５０】
図６にブロックマップの例を示す。ブロック「０」に対応する情報は図５の斜線部と対応している。
一方、スケジューラ２は、以下のように動作する。まず、システム全体を管理するプログラム（図示しない）がスケジュールパラメータ２０を決定し、スケジュールパラメータ２０をスケジューラ２に与える。スケジュールパラメータ２０には何個のアクセスリクエストをまとめて１回のスキャンで処理するかを示す定数Ｎが含まれる。
【００５１】
さて、オペレータがディスク５に記録された動画像の再生開始を指示すると、図示しない適切な制御プログラムを持つＣＰＵが、動画像を構成する画像の１枚１枚について、それが格納されているブロックへのアクセスリクエストを出す。これらのアクセスリクエスト４０はアクセスリクエストバッファ４に格納される。スケジューラ２は、アクセスリクエストバッファ４に格納されたアクセスリクエスト４０を先に到着したものから順にＮ個ずつ取り出し、ブロックマップ３を参照してこれらのリクエストと対応するデータのディスク５上の位置を求め、ヘッドの移動量が最小となるようにアクセスリクエストの順番を入れ換えてディスク５にアクセスの指示を出す。アクセスの指示はディスクドライブの外部インタフェースに合わせるため、ＳＣＳＩデバイスドライバ６でＳＣＳＩのプロトコルに変換されディスク５に伝えられる。ディスク５から読み出されたデータはデータバッファ８にいったん格納され、さらに装置のビデオインタフェースに転送される。
【００５２】
また、オペレータが、動画像のディスク５への記録開始を指示すると、図示しない適切な制御プログラムを持つＣＰＵは、各イメージ毎に、その動画像を構成するイメージが記録されたブロックにアクセス要求を発する。これらのアクセスリクエスト４０は、アクセスリクエストバッファ４に記録される。それと同時に、動画像を構成するイメージデータ８０は、ビデオインターフェース（図示しない）からデータバッファ８に転送される。そのイメージデータ８０は、データバッファ８に一時的に記録される。スケジューラ２は、アクセスリクエストバッファ４に記録されたＮ個のアクセス要求４０を、先に到着したものから順に取り出す。次に、スケジューラ２はブロックマップ３を参照しながら、これらのリクエストに対応したデータのディスク５上の位置を検出する。さらに、スケジューラ２は、ヘッドの総動作量が最小になるように、アクセスリクエストの順番を替え、ディスク５にアクセスするための指示を生成する。そのアクセス指示は、ディスクドライブの外部インターフェースに合うように生成され、ＳＣＳＩデバイスドライバ６によってＳＣＳＩプロトコルに変換され、ディスク５に転送される。
【００５３】
以下、ブロックアロケータ１の動作について詳細に説明する。
図１におけるフォーマットパラメータ１０として、１ブロックの大きさ、SCANスケジュールを行なう時の平均のヘッド移動距離Ｌａ、使用するドライブのシーク時間関数Ｔｓ（Ｌ）、ディスク５の物理的フォーマット（シリンダ数、１トラック内のセクタ数、シリンダを構成するメディアの枚数）が与えられると、ブロックアロケータ１は各ブロックのディスク５上での位置の決定を図２に示すステップＳ１〜Ｓ５の手順で行なう。
【００５４】
ステップＳ１で１シリンダ内に画像のブロックが何個存在するか（Ｂｃ）を計算する。１シリンダ内のセクタの総数はトラック内のセクタ数にメディアの枚数を乗じたものである。１ブロックを格納するために必要なセクタ数でこれを割れば、Ｂｃが求まる。
【００５５】
ステップＳ２でギャップθｇを求める。ギャップはブロックの先頭セクタと最終セクタとの角度差である。例として、図５に斜線で示したブロックの場合は先頭がトラック「１」のセクタ「０」、末尾はトラック「２」のセクタ「６」であるから、ギャップθｇは円周の５／１２、すなわち５π／６ラジアンである。
【００５６】
以上のデータをもとにステップＳ３でスキューθｓを求める。ここで、スキューθｓとは、ディスク５上の隣接するブロックの先頭同士の円周方向における角度差をいう。まず、あるブロックを読み終わった時点でのヘッドの位置を起点として、そこからＬシリンダ移動した位置においてデータの先頭が円周方向の同じ角度に達するまでの時間Ｔｄ（Ｌ）を式で表すと、下記式（１８）のようになる。
【００５７】
（数１８）
Ｔｄ（Ｌ）＝（Ｌ・Ｂｃ・θｓ＋θｇ＋２・ｍ・π）／ω      （１８）
【００５８】
ここで、Ｌはシーク距離で単位はシリンダ数、Ｂｃは１シリンダ内に存在するブロック数、θｓはスキューで単位はラジアン、θｇはギャップで単位はラジアン、ωはディスクの回転速度（ラジアン／秒）、ｍはＴｄ（Ｌ）が正となるような任意の整数である。
【００５９】
図７は、上記式（１８）の意味をディスク上で説明するものである。
図７においていまちょうどブロック「０」のアクセスが終了したとする。ヘッドは中心から見て角度７０の方向にあるものとする。いま、同じブロック「０」を再度アクセスすることを考えるとギャップθｇの分だけディスクが回転するのを待たないといけないからθｇ／ωの待ち時間が発生する。
【００６０】
また、ブロック「ｎ」の先頭に関してはブロック「０」のギャップθｇとｎブロック分のスキュー（ｎθｓ）との和の角度だけディスクの回転を待たなくてはならない。これには、ｎθｓ／ωの時間を要する。ディスクは回転しているからこうして得られた時間に回転周期（Ｔｒｏｔ）の整数倍を加えた時刻にもデータの先頭はヘッドの存在する位置に到達する。ｎブロック移動する時、シリンダ数ではｎ／Ｂｃシリンダの移動に相当するので、横軸をシリンダ数、縦軸を先頭が到着するまでの待ち時間としてグラフを描くと図８のようになる。スキューを大きくするほど直線群の傾きは大きくなる。なお、以上の議論では中心から見たヘッドの円周方向の位置（角度）が、中心からの距離によらず一定であるとした。実際にはヘッドの機構によっては正確に位置が一定でない場合もあるが、その影響は十分に小さいので通常は無視出来る。
【００６１】
図８にしめすように、上記式（１８）によって各シリンダにおいてブロックの先頭がヘッド下に到達するまでの時間が得られる。ただし、この時間内にヘッドが所望のシリンダまで移動していないといけないから、待ち時間はシーク後に、最初にブロックの先頭が現れるまでの時間となる。これがシークと回転待ちの両方を考慮したオーバヘッドＴｄ( Ｌ）である。図９にその例を示し、下記式（１９）にその定義をしめす。実際のオーバヘッド（待ち時間）は図９において太線で示した。
なおシーク時間の関数は点線でしめしてある。図中、Ｔｒｏｔは１回転周期である。
【００６２】
ステップＳ３−１では、式（１８）や図８におけるｍ＝０の直線の方程式、すなわち、下記式（１９）で示される方程式を求める。
（数１９）
Ｔｄ（Ｌ）＝（Ｌ・Ｂｃ・θｓ＋θｇ）／ω                （１９）
【００６３】
続くステップＳ３−２，Ｓ３−３およびＳ３−４は、この直線が常にシーク時間の関数Ｔｓ（Ｌ）よりも上で（大きく）かつシーク時間の関数にほぼ接するようにスキューθｓを選択するステップである。図９のｍ＝０の直線はこうして選択されたθｓを用いて得られたものである。
【００６４】
ステップＳ４，Ｓ５は以上のようにして得られたスキューとギャップを用いて、ディスク全域にわたって各ブロックのディスク上位置を決定するものである。  ステップＳ４でまず物理アドレスのポインタを（０／０／０）に初期化する。  次のステップＳ５は全てのブロックについて繰り返すループであり、ループの内部ではまずステップＳ５−１において物理アドレス表を参照して物理アドレスから論理セクタ番号を得、ステップＳ５−２においてこれと物理アドレスなどの情報をブロックマップ３に書き込む。ブロックマップ３の内容を図６に示す。
【００６５】
ここまでの処理が終わったら、次のブロックの処理の準備として物理アドレスのポインタを進める。物理アドレスのポインタＰｐａはステップＳ５−３において更新する。ステップＳ５−４では、全てのブロックについて、ステップＳ５−１〜Ｓ５−３までの処理を行ったか否かを判断し、行っていなければ、処理を行っていないブロックについてステップＳ５−１〜Ｓ５−３までの処理を行う。
ここで、第Ｎ番目のブロックのディスク上の配置は、
（１）割り当てたブロックより後方で、
（２）かつ第０ブロックの先頭との角度差がＮθｓに最も近いセクタを先頭とする領域である。
【００６６】
次に、本実施形態に係わる記録ディスクアクセス制御装置における最悪のオーバヘッドについて説明する。
一般にアクセスリクエスト４０はディスク５上のあらゆる場所に対して発生する。一回のスキャンで処理する場所は図１０（ａ）や（ｂ）に示すように分布に偏りがあったり、逆に（ｃ）に示すように均等に分布したりする。図１０の例では６個のアクセスリクエスト４０の間を移動するために５回のランダムアクセスとそれに伴うオーバヘッドが発生する。そのひとつずつについて、図９の太線にしめすオーバヘッドが発生する。この５回のランダムアクセスに対するオーバヘッドの総和が最悪になるのは、オーバヘッドの関数が上に凸であるときには、すべてのアクセスが均等に分布している場合（図１０（ｃ））である。分布に偏りがある時には、オーバヘッドの総和はこれよりも少なくなる。言い換えれば、ヘッドの平均移動距離Ｌａにおけるオーバヘッドが繰り返し発生する時、オーバヘッドの総和は最悪（最大）になる。
【００６７】
図９のＴｄ（Ｌ）は鋸歯状の関数であるが、これに上から包絡するような上に凸な関数でＴｄ（Ｌ）を代用すれば上記の議論は近似的に成立する。このような関数の例を図１２に示す。つまりアクセス１回あたりの最悪のオーバヘッドは、図９のグラフにおいてＴｄ（Ｌ）値を距離がＬａのところで読みとった値となる（図中のＴｍａｘ）。前述のように、これは近似であるが、図９の例のように、通常Ｌａ付近ではＴｄ（Ｌ）と上から包絡する関数とは一致するので、事実上誤差はないと考えてよい。また、近似は安全側（オーバヘッドを大きく見積もる側）なので、最悪値を本来より小さく見積もる危険はない。
【００６８】
図２に示すステップＳ３では、上記式（１８）で与えられる回転待ちの直線群のひとつがシーク時間の関数Ｔｓ（Ｌ）よりも上でかつなるべくそれに近いようにスキューを選択した。これによって、距離Ｌａ付近においてＴｄ（Ｌ）を小さくすることができ、ひいては最悪のオーバヘッドＴｍａｘを小さくすることができる。
【００６９】
図１１は従来のSCANアルゴリズムにおけるオーバヘッドを示すものである。従来のSCANアルゴリズムにおいても、オーバヘッドの総和はアクセスが均等に分布するときに最悪となる。しかし、本実施形態とは異なり、回転待ちに対する考慮がないために、ヘッドのシークが終了した後も最悪で１回転の回転待ちが発生することを考慮しなくてはならない。このため、Ｌａにおけるシーク時間Ｔｓ（Ｌａ）に１回転の周期Ｔｒｏｔを加えたものが最悪のオーバヘッドとなる。図１１と図９を比較すれば明らかなように、これは本実施形態による方法と比較してはるかに大きな値となる。我々の実験では、最悪のオーバヘッドが従来のSCANアルゴリズムと比べ、本実施形態ではほぼ半分になることが確認されている。
【００７０】
以上に説明したように、本実施形態に係わる記録ディスクアクセス制御装置ではスキューとギャップを適切に選ぶことで、平均のヘッド移動距離ＬａにおけるオーバヘッドＴｄ( Ｌ）を最低限に抑えることが可能であり、これによって回転待ち時間を小さくすることができる。図２にあげたフローチャートではブロックの大きさは与えられた固定の値であったが、用途によってはブロックの大きさをある程度の範囲で選択可能である。この場合はギャップθｇとスキューθｓの両方を変化させることができるので、Ｌａ付近でシーク時間に近付くようにより細かく直線の位置を制御することができる。
【００７１】
以上の方法によって、ブロック間の移動に伴うオーバヘッドは大きく改善される。しかしブロックが大きく、複数のトラック、あるいは複数のシリンダにまたがる場合には、トラック変更にともなう時間や隣接シリンダへの移動時間も考慮しなくてはならない。トラックの変更も隣接シリンダへの移動も必要な時間はそれぞれ一定なので、この時間を経た後にちょうどヘッドの下にデータが到着するようにトラック間あるいはシリンダ間でスキューを与えておくことにより、トラックの変更やシリンダの移動に伴ってブロック内で長い回転待ちが発生することを予防できる。このためにはブロックアロケータ１はすでに説明したブロック間の移動のためのスキューとギャップの他に、ブロック内をもっとも高速にアクセスするための別のスキューとギャップの組を持ち、図２におけるステップＳ４，Ｓ５において、１ブロックをディスク上に配置する時には後者のスキューとギャップを用いてブロックの配置を行なえばよい。後者のギャップは通常０にでき、スキューだけでトラックの変更やシリンダの移動時間を吸収できる。
【００７２】
次に、スケジューラ２の動作について説明する。
図３はスケジューラ２のフローチャートを示すものである。ステップＳ１１でまずディスクのヘッドをシリンダ「＃０」に移動させる。次いで実際のスケジュールを行なうステップＳ１２に移る。
ステップＳ１２では、ステップＳ１２−１において時間的に前の（古い）ものから順にＮ個のアクセスリクエストをアクセスリクエストバッファから読み込む。アクセスリクエスト１個にはアクセスすべきブロックの番号と、データ転送に使用するデータバッファの先頭アドレスとが記述されている。また、個数Ｎはあらかじめ別の制御プログラムから与えられる定数である。
【００７３】
ステップＳ１２−２においてＮ個のアクセスリクエストのそれぞれについてブロックマップ３を参照し、アクセスすべきブロックの物理アドレス（シリンダ番号、メディア番号、セクタ番号）を知る。次いでステップＳ１２−３においてこれらＮ個のアクセスリクエストをシリンダ番号の小さい順に並べ替える。この操作によってSCANアルゴリズムのスケジュールが実現される。ステップＳ１２−４では並べ替えられたこれらのアクセスリクエストをシリンダ番号の小さいものから順にデバイスドライバを介してディスクに送り、実際のアクセスとデータ転送を行なう。１ブロック分のアクセス指示を出したらステップＳ１２−５で転送の終了を待ち、次いで次のアクセス指示を出す。これをＮ回繰り返すことで（Ｓ１２−６）、Ｎ個のアクセスリクエストの処理が終了する。最後に、ステップＳ１２−７においてＮ個のアクセスの処理が終了したことを制御プログラムに通知して、当該Ｎ個のアクセスリクエストに関する一連の処理は終了する。
尚、このフローの最後において、アクセス要求が全て処理され、アクセス要求バッファ４が空になったかどうかが判断される（Ｓ１２−８）。
その後、スケジューラ２はステップＳ１２−１に戻り次のＮ個のアクセスリクエストを取り出して処理を続行する。もしアクセスリクエストバッファにＮ個のリクエストがなければ、このステップで待つ。
尚、例えば、ブロックアロケータ１は、ディスク５の外側から内側の全領域にわたってギャップが一定であるようにブロックの大きさを変化させたりすることで、アクセスのリアルタイム性をさらに高めることができる。
【００７４】
第２実施形態
以上に説明した第１実施形態のスケジューラ２は、内周まで移動したヘッドは次のスキャンの最初で最も外側のアクセスの位置まで移動していた。すなわち、図３におけるステップＳ１２−４，Ｓ１２−５で最後のアクセスを行なった時にヘッドはＮ個のアクセスの中では最も内側のアクセスをしており、次のＮ個を処理するループの最初のアクセスでは最もシリンダ番号の小さい、外側のシリンダへの移動が発生する。この移動に関しては最悪の場合再内周から再外周までの最大長のシークと、１回転の回転待ちが発生する。Ｎ個のアクセスごとにこれが発生し、この間データのアクセスはできないのでこれをスキャン全体でのオーバヘッドの総和に加算しなくてはならない。当然、その分だけ性能は低下する。
【００７５】
もちろん内周から外周に向けて移動する最中にもディスクのアクセスは可能であるが、ヘッドの移動方向が逆になるので、前記式（１８）における最初の項、つまりスキューの項の符号が反転する。このため外周から内周に向けての移動の場合に最適なスキューとギャップは、反対向きの移動には必ずしも適切なパラメータではなくなり、逆方向にヘッドが移動した時の性能が低下する原因となる。
【００７６】
以下に説明する本発明の第２の実施形態に係わる記録ディスクアクセス制御装置はこの問題に対処し、内周から外周へ戻る時にも高速なデータ転送を行なう方法を提供する。まず、ブロックアロケータ１は図１３に示すように、シリンダを外から内へスキャンする時に使用する斜線で示されるシリンダ５０と、内から外へスキャンする時に使用するシリンダ５１とに分ける。図１３においてＦを付したシリンダ５０は外から内へスキャンするときに使用し、Ｂを付したシリンダ５１は内から外へスキャンする時に使用する。図１３では２シリンダずつ分割しているが、これに限らず、適当な単位でシリンダを分ければよい。
【００７７】
前述した第１の実施形態に係わる記録ディスクアクセス制御装置と同様に、図２のステップＳ１に従ってスキューとギャップを求めた後の図２に示すステップＳ４，Ｓ５の処理を図１４に示すように変更する。
図１４においてステップＳ３１は第１実施形態と同様に、割り当てる物理アドレスのポインタを初期化する。
次いで、ステップＳ３２で各ブロックをディスクに割り当てていく。ステップＳ３２はすべてのブロックについて繰り返すループであり、ステップＳ３２−１では処理中のブロックの物理アドレスをもとにブロック全体がＦの領域あるいはＢの領域に属するかどうかを判定する。
【００７８】
ステップＳ３２−２はこの判定結果に基づく分岐である。もし１ブロック全体がＦの領域に属するならばステップＳ３２−３〜ステップＳ３２−６を実行する。このうちステップＳ３２−３は図２におけるステップＳ５−１と同じで、物理アドレス表を用いて、対応する論理セクタ番号をしらべるステップであり、またステップＳ３２−４は図２におけるステップＳ５−２と同じでブロックマップ３への記入を行なう。
【００７９】
図６に示した第１実施形態のブロックマップ３と比べ、本実施形態におけるブロックマップ３はそのブロックがＦの領域に存在するかＢの領域に存在するかを示すフラグが追加されている。この様子を図１５に示す。ステップＳ３２−５はこの部分へＦと記入するステップである。
ステップＳ３２−２の分岐で１ブロックが完全にＦの領域に属さない場合は、その物理アドレスへの割り当てを行なわず、完全にＦの領域の内側になるような物理アドレスを探す。ステップＳ３２−６では次の物理アドレスをスキューとギャップから求め、さらにそれがどの領域に属すかを調べる。ステップＳ３２−７では、最内周まで読み取りが行われたか否かが判断され、そうなければ、ステップＳ３２−１へジャンプし、ふたたび判定のためのＳ３２−２を実行する。こうして再試行を繰り返すうちに再び全体がＦの領域に属するような物理アドレスが得られるので、これをブロックに割り当てる。
【００８０】
例えば、図１５において、第１実施形態の配置方式であれば次のブロック５番は物理アドレス（１／５／８）においていたが、これではブロックの後半はシリンダ２番にまたがってしまう。シリンダ２番はＢの領域なので、この領域を割り当てることはせず、次に割り当て可能なアドレスを順次探していく。物理アドレスポインタを逐次進めていき、ブロック５番に関しては物理アドレス（４／２／０）が割り当てられる。第１の実施形態のように、途中をとばさずにブロックを割り当てる方法でも、この実施例のように途中をとばしながらブロックを割り当てる方法でも、半径方向の距離（シリンダ数）とスキュー量の関係は一定に保たなくてはならないので、以上に説明したような割り当て方法を使用する。シリンダ４番の先頭（４／０／０）から使用しないのもこのためである。以上の処理を物理アドレスが最内周に到達するまで繰り返す。
【００８１】
ステップＳ３３〜Ｓ３６は同様な処理をＢの領域に対して行なうものである。Ｂの領域の先頭は図１３に示すようにシリンダ２番なので、ステップＳ３３で物理アドレスのポインタをこのアドレスに初期化する。
次いで、スキューの符号をステップＳ３４で反転する。Ｂの領域は内周から外周に向けてアクセスするため、シリンダの移動量が負になる。そこでスキューの符号もこれに対応させて反転すれば内から外へのヘッドの移動に最適なスキューとなる。
【００８２】
ステップＳ３５は実際にブロックマップに書き込むステップであり、この部分はステップＳ３２−１〜Ｓ３２−６と同様である。ただし、
（１）ブロックマップにはブロック全体がＢの領域のときにのみ書き込み、そうでなければ新しい物理アドレスで再試行する点と、
（２）ブロックマップにはＢを記入する点と
がステップＳ３２−１〜Ｓ３２−６と異なる。
【００８３】
最後に、ステップＳ３６において、全てのブロックについて処理が終了したが判断され、終了していない場合には、ステップＳ３１の処理に戻る。一方、既に全てのブロックについて処理が終了していれば、このステップで処理が停止する。
【００８４】
図１５では、Ｆの領域には総計で５０１２ブロックを割り当てた場合の例を示している。このとき、Ｂの領域のブロック番号は５０１３から開始し再び再内周に到達するまでブロックの割り当てを繰り返す。
【００８５】
以上のように、本実施形態では、ヘッドがディスクにアクセスしている期間または後に、ヘッドの次のアクセス動作のスケジュールが決定される。この次のアクセスが開示されたとき、ヘッドは、そのようなヘッドの次のアクセス動作のために既に決定されたスケジュールによって決定されたスタート位置に移動される。図１に示す装置の電源を投入した後にヘッドが最初にアクセス動作をする場合に、電源投入後に最初に決定されたスケジューリングによって、ヘッドはスタート位置に移動される。
【００８６】
ブロックアロケータ１を以上のような構成とし、スケジューラ２はヘッドが外周から内周方向へ向かっている時にはＦの領域をアクセスするリクエストのみをアクセスリクエストバッファから取り出してスケジュールし、それが完了して内周から外周へ移動するときにはＢの領域をアクセスするリクエストのみをアクセスリクエストバッファから取り出してスケジュールする。これによって、ヘッドの移動方向には関わらず常に回転待ちを最小限に抑えることができる。第１の実施形態では内周に達したヘッドが外周に戻るための待ち時間が発生していたが、本第２の実施形態ではこのような待ち時間はなく、ディスクの性能が向上する。
【００８７】
なお、第１の実施形態において１つのブロックが大きく複数のトラックやセクタにまたがるときには、これらの時間を考慮した別のスキューを与えると効率がよいことを述べた。本第２の実施形態においても同様な工夫が可能である。本第２の実施形態においては、ヘッドが内周から外周に向かう時にはブロック内のアクセスにおいても内側から外側のシリンダへ順にヘッドが移動するため、シリンダ移動に必要な時間を得るためのスキューは、外周から内周へ向かう時とは逆向きに与えればよい。
【００８８】
尚、図１３に示すように、シリンダ５０とシリンダ５１とをディスク上の最内周から最外周に分散するように設けることで、ディスクアクセスの性能をさらに向上させることができる。
【図面の簡単な説明】
【００８９】
【図１】本発明の第１実施形態に係わる記録ディスクアクセス制御装置の構成図である。
【図２】図１に示すブロックアロケータにおける処理を説明するためのフローチャートである。
【図３】図１に示すスケジューラにおける処理を説明するためのフローチャートである。
【図４】ドライブのシーク時間とシーク距離との関係を示す図である。
【図５】ブロックアロケータによるブロックのディスク上への配置方法を説明するための図である。
【図６】ブロックマップの内容を説明するための図である。
【図７】図２に示すステップＳ３における処理の内容を説明するための図である。
【図８】図２に示すステップＳ３における処理の内容を説明するための図である。
【図９】シークと回転待ちの両方を考慮した場合におけるオーバヘッドを説明するための図である。
【図１０】ディスク上のアクセスの分布の一例を説明するための図である。
【図１１】従来SCANアルゴリズムにおけるオーバヘッドを説明するための図である。    従来の方法によるオーバヘッドの関数
【図１２】鋸歯上の関数を包絡する上に凸な関数を用いた場合におけるシーク距離Ｌとディレイとの関係を説明するための図である。
【図１３】本発明の第２実施形態に係わる記録ディスクアクセス制御装置のブロックアロケータにおける処理を説明するための図である。
【図１４】図１３に示す記録ディスクアクセス制御装置におけるブロックアロケータの処理を説明するための図である。
【図１５】図１３に示す記録ディスクアクセス制御装置におけるブロックマップの内容を説明するための図である。
【図１６】従来技術を説明するための図である。
【符号の説明】
【００９０】
１…ブロックアロケータ、２…スケジューラ、３…ブロックマップ、４…アクセスリクエストバッファ、５…ディスク、６…ＳＣＳＩデバイスドライバ、７…物理アドレステーブル、８…データバッファ
【図１】
2004158179.tif 000003
【図２】
2004158179.tif 000004
【図３】
2004158179.tif 000005
【図４】
2004158179.tif 000006
【図５】
2004158179.tif 000007
【図６】
2004158179.tif 000008
【図７】
2004158179.tif 000009
【図８】
2004158179.tif 000010
【図９】
2004158179.tif 000011
【図１０】
2004158179.tif 000012
【図１１】
2004158179.tif 000013
【図１２】
2004158179.tif 000014
【図１３】
2004158179.tif 000015
【図１４】
2004158179.tif 000016
【図１５】
2004158179.tif 000017
【図１６】
2004158179.tif 000018