(57)【要約】セクタに対して対応するバッファ領域がどれかを示すバッファ管理用テーブルを設ける。このテーブルによって、バッファ手段（ＲＡＭ）に、複数のセクタが同じバッファ領域を使用する共有バッファ領域と、セクタが個々に対応する個別のバッファ領域とを設定する。そして、各セクタにデータの処理状況を示すフラグを設ける。これにより、ＵＳＢ−ＦＤＤのリード／ライトを使用状況に合わせて高速に行うと共に、ＲＡＭバッファの容量を少なくする。また、そのデータのリード／ライトに使用するＲＡＭバッファの領域を、使用状況や他用途の必要度に合わせて、調節可能にする。【特許請求の範囲】
【請求項１】
シリアルデータ転送手段とバッファ手段を含むストレージディスク駆動装置を用いてストレージディスクの複数Ｎ個のセクタのデータをリードするデータリード方法において、
先頭のセクタから所定Ｋ番目（Ｋ＜Ｎ）のセクタに対して前記バッファ手段のうちの共有のバッファ領域が対応し、Ｋ＋１番目乃至Ｎ番目のセクタに対して前記バッファ手段のうちの個別のバッファ領域がそれぞれ対応するように設定し、
リード要求に応じて次の処理ｉ乃至処理ｉｖ、
処理ｉ；ストレージディスクの回転位置に基づいて次にリードするセクタを決定する、
処理ｉｉ；決定されたセクタのデータをリードする、
処理ｉｉｉ；リードされたセクタのデータを対応するバッファ領域へ格納する、
処理ｉｖ；データが格納されたセクタに対して、データ未処理を示すフラグをセットする、
を繰り返して実行すると共に、
同じくリード要求に応じて次のステップｖ乃至ステップｖｉ、
処理ｖ；先頭セクタからセクタ番号順に、前記フラグがセットされていることを条件に当該セクタからのデータを該当するバッファ領域から前記シリアルデータ転送手段を介して外部へ転送する、
処理ｖｉ；データが転送されたセクタのフラグをクリアする、
を繰り返して実行することを特徴とする、ストレージディスクのデータリード方法。
【請求項２】
前記処理ｉにおける次にリードするセクタは、データリードの当初においては、ストレージディスクの回転位置がセクタ１番目乃至セクタＫ番目にあるときはセクタＫ＋１番目であり、その回転位置がセクタＫ番目以降にあるときは当該セクタの次の順番のセクタであることを特徴とする、請求項１に記載のストレージディスクのデータリード方法。
【請求項３】
前記処理ｉｉｉにおけるセクタのデータをバッファ領域へ格納するに際し、データリードの当初においては、リードされたセクタのデータが、セクタ１番目乃至セクタＫ番目のセクタのデータであるときにはバッファ領域に格納せず、Ｋ＋１番目以降のセクタデータから対応するバッファ領域に順次格納することを特徴とする、請求項１に記載のストレージディスクのデータリード方法。
【請求項４】
前記処理ｉにおける次のリードセクタは、データリードの当初においては、ストレージディスクの回転位置のセクタ番号に関わらず、当該セクタの次の順番のセクタであり、
且つ前記処理ｉｉｉにおけるセクタのデータをバッファ領域へ格納するに際し、データリードの当初においては、リードされたセクタのセクタ番号に関わらず、対応するバッファ領域に順次格納することを特徴とする、請求項１に記載のストレージディスクのデータリード方法。
【請求項５】
前記処理ｉにおける次にリードするセクタは、ストレージディスクの回転位置のセクタの次の順番のセクタであり、
前記処理ｉｖにおけるフラグをセットする際に、そのセクタが先頭のセクタから所定Ｋ番目までのセクタである場合には、同じバッファ領域に対応する他のセクタのフラグをクリアすることを特徴とする、請求項１に記載のストレージディスクのデータリード方法。
【請求項６】
前記共有のバッファ領域は、リングバッファとして使用される２つ以上のバッファ領域であることを特徴とする、請求項１に記載のストレージディスクのデータリード方法。
【請求項７】
シリアルデータ転送手段とバッファ手段を含むストレージディスク駆動装置を用いてストレージディスクの複数Ｎ個のセクタへデータをライトするデータライト方法において、
先頭のセクタから所定Ｊ番目（Ｊ＜Ｎ）のセクタに対して前記バッファ手段のうちの個別のバッファ領域がそれぞれ対応し、Ｊ＋１番目乃至Ｎ番目のセクタに対して前記バッファ手段のうちの共有のバッファ領域が対応するように設定し、
ライト要求に応じて次の処理Ｖｉｉ乃至処理Ｖｉｉｉ、
処理Ｖｉｉ；先頭セクタからセクタ番号順に、データ未処理を示すフラグがクリアされていることを条件に、前記シリアルデータ転送手段を介して外部から転送されたデータを該当するバッファ領域へ格納する、
処理Ｖｉｉｉ；データが格納されたセクタに対して、データ未処理を示すフラグをセットする、
を繰り返して実行すると共に、
同じくライト要求に応じて次の処理ｉｘ乃至処理ｘｉ、
処理ｉｘ；ストレージディスクの回転位置に基づいて次にライトするセクタを決定する、
処理ｘ；決定されたセクタの前記フラグがセットされていることを条件に、ストレージディスクの当該セクタにデータをライトする、
処理ｘｉ；データがライトされたセクタに対する前記フラグをクリアする、
を繰り返して実行することを特徴とする、ストレージディスクのデータライト方法。
【請求項８】
前記処理ｉｘにおける次にライトするセクタは、ストレージディスクの回転位置にあるセクタの次の順番のセクタであることを特徴とする、請求項７に記載のストレージディスクのデータライト方法。
【請求項９】
前記共有のバッファ領域は、リングバッファとして使用される２つ以上のバッファ領域であることを特徴とする、請求項７に記載のストレージディスクのデータライト方法。
【請求項１０】
シリアルデータ転送手段と、バッファ手段と、ストレージディスク制御手段と、複数Ｎ個のセクタからなるセクタ群と共有及び個別対応のバッファ領域からなるバッファ領域群とを対応させるバッファ管理テーブルと、これらのシリアルデータ転送手段乃至バッファ管理テーブルの各々と結合され且つそれらの制御を司るＣＰＵを含み、
データリード時には、前記バッファ管理テーブルを、先頭のセクタから所定Ｋ番目（Ｋ＜Ｎ）のセクタに対して前記バッファ手段のうちの共有のバッファ領域が対応し、Ｋ＋１番目乃至Ｎ番目のセクタに対して前記バッファ手段のうちの個別のバッファ領域がそれぞれ対応するように設定し、
リード要求に応じて、ストレージディスクの回転位置に基づいて次にリードするセクタを決定し（処理ｉ）、決定されたセクタのデータをリードし（処理ｉｉ）、リードされたセクタのデータを対応するバッファ領域へ格納し（処理ｉｉｉ）、データが格納されたセクタに対してデータ未処理を示すフラグをセットする（処理ｉｖ）処理を、繰り返して実行すると共に、
同じくリード要求に応じて、先頭セクタからセクタ番号順に、前記フラグがセットされていることを条件に当該セクタからのデータを該当するバッファ領域から前記シリアルデータ転送手段を介して外部へ転送し（処理ｖ）、データが転送されたセクタのフラグをクリアする（処理ｖ）処理を、繰り返して実行し、
データライト時には、前記バッファ管理テーブルを、先頭のセクタから所定Ｊ番目（Ｊ＜Ｎ）のセクタに対して前記バッファ手段のうちの個別のバッファ領域がそれぞれ対応し、Ｊ＋１番目乃至Ｎ番目のセクタに対して前記バッファ手段のうちの共有のバッファ領域が対応するように設定し、
ライト要求に応じて、先頭セクタからセクタ番号順に、データ未処理を示すフラグがクリアされていることを条件に、前記シリアルデータ転送手段を介して外部から転送されたデータを該当するバッファ領域へ格納し（処理Ｖｉｉ）、データが格納されたセクタに対して、データ未処理を示すフラグをセットする（処理Ｖｉｉｉ）、処理を繰り返して実行すると共に、
同じくライト要求に応じて、ストレージディスクの回転位置に基づいて次にライトするセクタを決定し（処理ｉｘ）、決定されたセクタの前記フラグがセットされていることを条件に、ストレージディスクの当該セクタにデータをライトし（処理ｘ）、データがライトされたセクタに対する前記フラグをクリアする（処理ｘｉ）、処理を繰り返して実行することを特徴とする、ストレージディスク制御装置。
【請求項１１】
前記Ｋ番目、前記Ｊ番目及び前記複数Ｎ個は、Ｊ＝Ｎ−Ｋ、になるように、設定されていることを特徴とする、請求項１０に記載のストレージディスク制御装置。
【発明の詳細な説明】
【技術分野】  本発明は、ＵＳＢ（ユニバーサル・シリアル・バス）等のシリアルデータ転送手段を用いたＦＤＤ（フレキシブル・ディスク・ドライブ）等のストレージディスク駆動装置におけるデータリード方法、データライト方法、及びそのストレージディスクドライブ装置に関する。
【背景技術】  従来から、ＦＤ（フレキシブル・ディスク）のデータの読み取り（以下、リード）や書き込み（以下、ライト）には、ＵＳＢ接続のＦＤＤ（フレキシブル・ディスク・ドライブ）装置（以下、ＵＳＢ−ＦＤＤ装置）が多く用いられている。
このＵＳＢ−ＦＤＤ装置では、データのリード／ライトを行う場合は、まず、ＦＤの目標とするトラックにヘッドを移動させる。
そして、データ・リードを行う場合には、当該トラックの先頭のセクタ（セクタ番号１）から最終のセクタ（セクタ番号Ｎ）までのＮ個のセクタのデータをセクタ順に読みとり、ＵＳＢを通してデータをセクタ順に送出する。この場合に、ＦＤの回転位置は、先頭セクタのデータからリードできるヘッドの位置にあることは希である。従って、通常は、先頭セクタのデータが読み出せる位置にＦＤが回転してくるまで、回転待ち時間が発生する。
先頭セクタのデータが読み出せる位置にＦＤが回転してきた時から、当該トラックのセクタ番号１からセクタ番号Ｎまでのデータを順次読み出す。読み出されたデータは、ＵＳＢ−ＦＤＤ装置内のバッファＲＡＭに一時記憶され、その後ＵＳＢを介して外部のホスト・コンピュータ等に送出される。
また、データ・ライトを行う場合には、先頭セクタにデータが書き込める位置までＦＤが回転してくるのを待つ。そして、その位置までＦＤが回転すると、外部のホスト・コンピュータ等から送られてＵＳＢ−ＦＤＤ装置内のバッファＲＡＭに一時記憶されているデータを、当該トラックの先頭のセクタ（セクタ番号１）から最終のセクタ（セクタ番号Ｎ）までのＮ個のセクタへセクタ順に書き込む。
このデータのリード／ライト方法では、トラックの先頭セクタからリードし、またライトするから、先頭セクタのデータ処理が可能になるまで回転待ちが発生してしまう。従って、リード／ライト処理にその回転待ちの分だけ時間遅延が発生してしまう。
この回転待ちに伴う時間遅延を解消するために、ヘッド上に位置するＦＤのセクタ番号をリード／ライト処理に先行して読み取り、そのセクタ番号の次のセクタからリード／ライトを行うようにする方法が、特許文献１：特開２００４−１０３１０３号公報、に提案されている。
特許文献１のリード／ライト方法では、リード／ライト処理に要する時間は短くなるが、実際にリード／ライト処理するセクタ順が、ＦＤの回転位置に依存して、番号順にはならず前後してしまう。一方、ＵＳＢ−ＦＤＤ装置とデータのやり取りを行うホストコンピュータは常に、セクタ番号順のデータを要求する。したがって、基本的に１トラック分（ＦＤ１回転分）のデータを格納する記憶容量を持っているＲＡＭがバッファとして必要となる。ＵＳＢ−ＦＤＤ装置は、高速化と同時に小型化、低価格が求められているので、ＲＡＭバッファの容量が大きくなることは好ましくない。
そこで、本発明は、ＵＳＢ等のシリアルデータ転送手段を用いたＦＤＤ等のストレージディスク駆動装置におけるデータリード方法、データライト方法、及びそのストレージディスクドライブ装置において、そのリード／ライトを使用状況に合わせて高速に行うと共に、ＲＡＭバッファの容量を少なくすることを目的とする。また、そのデータのリード／ライトに使用するＲＡＭバッファの領域を、使用状況や他用途の必要度に合わせて、調節可能にすることを目的とする。
【発明の開示】
本発明のストレージディスクのデータリード方法は、シリアルデータ転送手段とバッファ手段を含むストレージディスク駆動装置を用いてストレージディスクの複数Ｎ個のセクタのデータをリードするデータリード方法において、
先頭のセクタから所定Ｋ番目（Ｋ＜Ｎ）のセクタに対して前記バッファ手段のうちの共有のバッファ領域が対応し、Ｋ＋１番目乃至Ｎ番目のセクタに対して前記バッファ手段のうちの個別のバッファ領域がそれぞれ対応するように設定し、
リード要求に応じて次の処理ｉ乃至処理ｉｖ、
処理ｉ；ストレージディスクの回転位置に基づいて次にリードするセクタを決定する、
処理ｉｉ；決定されたセクタのデータをリードする、
処理ｉｉｉ；リードされたセクタのデータを対応するバッファ領域へ格納する、
処理ｉｖ；データが格納されたセクタに対して、データ未処理を示すフラグをセットする、
を繰り返して実行すると共に、
同じくリード要求に応じて次のステップｖ乃至ステップｖｉ、
処理ｖ；先頭セクタからセクタ番号順に、前記フラグがセットされていることを条件に当該セクタからのデータを該当するバッファ領域から前記シリアルデータ転送手段を介して外部へ転送する、
処理ｖｉ；データが転送されたセクタのフラグをクリアする、
を繰り返して実行することを特徴とする。
また、そのストレージディスクのデータリード方法において、前記処理ｉにおける次にリードするセクタは、データリードの当初においては、ストレージディスクの回転位置がセクタ１番目乃至セクタＫ番目にあるときはセクタＫ＋１番目であり、その回転位置がセクタＫ番目以降にあるときは当該セクタの次の順番のセクタであることを特徴とする。
また、そのストレージディスクのデータリード方法において、前記処理ｉｉｉにおけるセクタのデータをバッファ領域へ格納するに際し、データリードの当初においては、リードされたセクタのデータが、セクタ１番目乃至セクタＫ番目のセクタのデータであるときにはバッファ領域に格納せず、Ｋ＋１番目以降のセクタデータから対応するバッファ領域に順次格納することを特徴とする。
また、そのストレージディスクのデータリード方法において、前記処理ｉにおける次のリードセクタは、データリードの当初においては、ストレージディスクの回転位置のセクタ番号に関わらず、当該セクタの次の順番のセクタであり、且つ前記処理ｉｉｉにおけるセクタのデータをバッファ領域へ格納するに際し、データリードの当初においては、リードされたセクタのセクタ番号に関わらず、対応するバッファ領域に順次格納することを特徴とする。
また、そのストレージディスクのデータリード方法において、前記処理ｉにおける次にリードするセクタは、ストレージディスクの回転位置のセクタの次の順番のセクタであり、前記処理ｉｖにおけるフラグをセットする際に、そのセクタが先頭のセクタから所定Ｋ番目までのセクタである場合には、同じバッファ領域に対応する他のセクタのフラグをクリアすることを特徴とする。
また、そのストレージディスクのデータリード方法において、前記共有のバッファ領域は、リングバッファとして使用される２つ以上のバッファ領域であることを特徴とする。
本発明のストレージディスクのデータライト方法は、シリアルデータ転送手段とバッファ手段を含むストレージディスク駆動装置を用いてストレージディスクの複数Ｎ個のセクタへデータをライトするデータライト方法において、
先頭のセクタから所定Ｊ番目（Ｊ＜Ｎ）のセクタに対して前記バッファ手段のうちの個別のバッファ領域がそれぞれ対応し、Ｊ＋１番目乃至Ｎ番目のセクタに対して前記バッファ手段のうちの共有のバッファ領域が対応するように設定し、
ライト要求に応じて次の処理Ｖｉｉ乃至処理Ｖｉｉｉ、
処理Ｖｉｉ；先頭セクタからセクタ番号順に、データ未処理を示すフラグがクリアされていることを条件に、前記シリアルデータ転送手段を介して外部から転送されたデータを該当するバッファ領域へ格納する、
処理Ｖｉｉｉ；データが格納されたセクタに対して、データ未処理を示すフラグをセットする、
を繰り返して実行すると共に、
同じくライト要求に応じて次の処理ｉｘ乃至処理ｘｉ、
処理ｉｘ；ストレージディスクの回転位置に基づいて次にライトするセクタを決定する、
処理ｘ；決定されたセクタの前記フラグがセットされていることを条件に、ストレージディスクの当該セクタにデータをライトする、
処理ｘｉ；データがライトされたセクタに対する前記フラグをクリアする、
を繰り返して実行することを特徴とする。
また、そのストレージディスクのデータライト方法において、前記処理ｉｘにおける次にライトするセクタは、ストレージディスクの回転位置にあるセクタの次の順番のセクタであることを特徴とする。
また、そのストレージディスクのデータライト方法において、前記共有のバッファ領域は、リングバッファとして使用される２つ以上のバッファ領域であることを特徴とする。
本発明のストレージディスク制御装置は、シリアルデータ転送手段ＵＳＢＣ１１と、バッファ手段１５と、ストレージディスク制御手段ＦＤＣ１６、ＦＤＤ１７と、複数Ｎ個のセクタからなるセクタ群と共有及び個別対応のバッファ領域からなるバッファ領域群とを対応させるバッファ管理テーブルと、これらのシリアルデータ転送手段ＵＳＢＣ１１乃至バッファ管理テーブルの各々と結合され且つそれらの制御を司るＣＰＵ１４を含み、
データリード時には、前記バッファ管理テーブルを、先頭のセクタから所定Ｋ番目（Ｋ＜Ｎ）のセクタに対して前記バッファ手段のうちの共有のバッファ領域が対応し、Ｋ＋１番目乃至Ｎ番目のセクタに対して前記バッファ手段のうちの個別のバッファ領域がそれぞれ対応するように設定し、
リード要求に応じて、ストレージディスクの回転位置に基づいて次にリードするセクタを決定し（処理ｉ）、決定されたセクタのデータをリードし（処理ｉｉ）、リードされたセクタのデータを対応するバッファ領域へ格納し（処理ｉｉｉ）、データが格納されたセクタに対してデータ未処理を示すフラグをセットする（処理ｉｖ）処理を、繰り返して実行すると共に、
同じくリード要求に応じて、先頭セクタからセクタ番号順に、前記フラグがセットされていることを条件に当該セクタからのデータを該当するバッファ領域から前記シリアルデータ転送手段を介して外部へ転送し（処理ｖ）、データが転送されたセクタのフラグをクリアする（処理ｖ）処理を、繰り返して実行し、
データライト時には、前記バッファ管理テーブルを、先頭のセクタから所定Ｊ番目（Ｊ＜Ｎ）のセクタに対して前記バッファ手段のうちの個別のバッファ領域がそれぞれ対応し、Ｊ＋１番目乃至Ｎ番目のセククに対して前記バッファ手段のうちの共有のバッファ領域が対応するように設定し、
ライト要求に応じて、先頭セクタからセクタ番号順に、データ未処理を示すフラグがクリアされていることを条件に、前記シリアルデータ転送手段を介して外部から転送されたデータを該当するバッファ領域へ格納し（処理Ｖｉｉ）、データが格納されたセクタに対して、データ未処理を示すフラグをセットする（処理Ｖｉｉｉ）、処理を繰り返して実行すると共に、
同じくライト要求に応じて、ストレージディスクの回転位置に基づいて次にライトするセクタを決定し（処理ｉｘ）、決定されたセクタの前記フラグがセットされていることを条件に、ストレージディスクの当該セクタにデータをライトし（処理ｘ）、データがライトされたセクタに対する前記フラグをクリアする（処理ｘｉ）、処理を繰り返して実行することを特徴とする。
また、そのストレージディスク制御装置において、前記Ｋ番目、前記Ｊ番目及び前記複数Ｎ個は、Ｊ＝Ｎ−Ｋ、になるように、設定されていることを特徴とする。
本発明によれば、データリード時、データライト時のデータ転送に用いるバッファ手段のバッファ領域（数）を伸縮することができるので、ハードウエア構成を変えることなく、バッファ手段（ＲＡＭバッファ）の記憶容量と速度性能のトレードオフを考慮したシステムを構築できる。
また、シリアルデータ転送手段の転送速度や、他装置の使用状況にもよるが、全セクタ分のバッファ領域を持つ特許文献１のものと比して、実質的に同程度の速度性能を得ることも期待できる。
また、一般にＵＳＢ−ＦＤＤ装置に代表される本発明のストレージディスク制御装置は、種々のフォーマットのストレージディスクに対応できるようになっており、各フォーマットによって要求される速度性能も、使用されるバッファ容量も異なる。本発明では、各フォーマットに対して最大の性能が出せるようにバッファ手段の管理を適応的に変えていくことができる。
使用できるバッファ領域（数）が制限される場合に、制限された容量まで一杯に使用して限られたバッファ資源で最大の性能を引き出せる。また、速度性能がさほど要求されない場合には、バッファ手段として使用するバッファ領域（数）を少なくし、残余のバッファ領域は他の用途に使用できる。また、バッファ資源（ハードウエアＲＡＭ）を節約できる。
【図面の簡単な説明】  図１は、本発明に係るＵＳＢ−ＦＤＤ装置１０の構成を示す図である。
図２は、リード時に使用するバッファ管理テーブルの構造を示す図である
図３は、図２のバッファ領域番号とセクタ番号との対応関係を示す図である。
図４は、リード時の処理を説明するフローチャートである。
図５は、ライト時に使用するバッファ管理テーブルの構造を示す図である。
図６は、図５のバッファ領域番号とセクタ番号との対応関係を示す図である。
図７は、ライト時の処理を説明するフローチャートである。
【発明を実施するための最良の形態】  以下、本発明のＵＳＢ（ユニバーサル・シリアル・バス）等のシリアルデータ転送手段を用いたＦＤＤ（フレキシブル・ディスク・ドライブ）等のストレージディスク駆動装置におけるデータリード方法、データライト方法、及びそのストレージディスクドライブ装置の実施例について、図を参照して説明する。この実施例では、シリアルデータ転送手段としてＵＳＢを、ストレージディスクとしてＦＤを、且つバッファ手段として所要のバッファ領域を持つＲＡＭを、それぞれ用いた場合について説明する。この例示に限らず、これらのものと同等のものが使用できる。
図１は、本発明に係るＵＳＢ−ＦＤＤ装置１０の構成を示す図である。本発明のＵＳＢ−ＦＤＤ装置１０は、ＵＳＢバス１２を介してＵＳＢ通信を行うＵＳＢコントローラ（以下、ＵＳＢＣ）１１と、ＦＤのリード・ライトを行うＦＤ制御手段であるＦＤコントローラ（以下、ＦＤＣ）１６及びＦＤＤ１７と、プログラムを格納するファームウエアＲＯＭ１３と、バッファ手段としての複数のバッファ領域を有するＲＡＭ１５と、これらの各構成要素の制御を司り、プログラ厶を実行するＣＰＵ１４を有している。
本発明では、ＦＤのデータのリード／ライトを使用状況に合わせて高速に行うと共に、そのデータのリード／ライトに使用するバッファ手段として必要なＲＡＭ１５の容量を少なくする。また、そのＲＡＭ１５のバッファ領域を、使用状況や他用途の必要度に合わせて、調節可能にする。このような処理を行うために、バッファ管理用テーブルを設けている。
このバッファ管理用テーブルは、セクタに対して対応するバッファ領域がどれかを示すこと、複数のセクタが同じバッファ領域を使用する場合があること（共有バッファ領域となる）、各セクタに対して未処理のデータがあることを示すフラグを設けること、共有バッファ領域を使用するセクタ数は、バッファ手段として使用できるＲＡＭ容量に応じて変え得ること、ＲＡＭ容量のうちのバッファ手段として用いる容量を変更可能であること等の機能の一部あるいは全部を有している。
このバッファ管理用テーブルは、例えば、ファームウエアＲＯＭ１３に格納されており、ＣＰＵ１４の制御の元にＲＡＭ１５に読み出される。また、このバッファ管理用テーブルは、例えば、別のデバイスを用いて、ハードウエアで実現する構成でもよい。
まず、図２〜図４を参照して、ＦＤのデータをリードしてＵＳＢバス１２側へ送信する場合（以下、リード時）について説明する。
図２は、リード時に使用するバッファ管理テーブルの構造を示す図である。図２において、複数Ｎ個のセクタに対して１〜Ｎのセクタ番号が付されている。各セクタ１〜Ｎに対応するバッファ領域の番号Ａ〜Ｒが付されている。複数Ｎ個は例えば２５６であり、バッファ領域数は例えばＮ個の５０％〜９０％、好適には７５％程度の比率に設定される。この複数Ｎ個の数及びそれに対するバッファ領域数の比率は、それぞれ必要に応じて、変更される。
先頭のセクタ１から所定Ｋ番目（Ｋ＜Ｎ）のセクタ（この例では、セクタ６）に対してバッファ手段であるＲＡＭ１５のうちの共有のバッファ領域Ａ、Ｂが対応するように設定されている。また、Ｋ＋１番目（この例では、セクタ７）乃至Ｎ番目のセクタに対してＲＡＭ１５のうちの個別のバッファ領域がそれぞれ対応するように設定されている。
共有のバッファ領域Ａ、Ｂは、２セクタ分のバッファ領域を用いてリングバッファとして動作させる。即ち、ＦＤＣ１６のリードしたデータをバッファ領域Ａに格納し、同時にバッファ領域Ｂに格納されているデータをＵＳＢＣ１１で送信する。この動作を共有のバッファ領域Ａ、Ｂを交換しながら、セクタ１〜６のデータを送出する。なお、共有のバッファ領域として、２つの領域を用いることとして説明するが、３つ以上のバッファ領域を、共有のバッファ領域として使用してもよい。
未処理フラグは、ＦＤＣ１６がデータをリードしたが、ＵＳＢＣ１１がそのデータをまだ送信していない場合に、セットされる。即ち、フラグ「１」が立てられる。なお、図２に示した未処理フラグは、個別のバッファ領域Ｃ〜Ｒに対応するセクタ７〜Ｎにフラグがセットされ、共有のバッファ領域Ａ、Ｂに対応するセクタ１〜６のフラグがクリアされている状況を、例示している。
図３は、図２のセクタ番号１〜Ｎとバッファ領域番号Ａ〜Ｒの関係を、バッファ領域番号Ａ〜Ｒから見た図である。バッファ領域Ａ、Ｂはセクタ１〜６で共用され、バッファ領域Ｃ〜Ｒは、個別にセクタ７〜Ｎに対応している。
図４は、リード時の処理を説明するフローチャートである。図４において、リード要求が発生される（ステップＳ１００）と、まず、ＦＤの目標とするトラックにヘッドを移動させる。そして、ＦＤＣ処理が開始される（ステップＳ１１０）と同時に、ＵＳＢＣ処理が開始される（ステップＳ１２０）。
ＦＤＣ処理では、ステップＳ１１１において、ＦＤＤ１７のヘッド位置に対するＦＤの回転位置を例えばＩＤコマンドを発行することにより得る。このＦＤの回転位置に基づいて次にリードするセクタを決定する。「次にリードするセクタ」は、セクタの頭からのデータを漏れなく読みとるために、ＦＤの回転位置のセクタの次の順番のセクタである。
ステップＳ１１２において、決定されたセクタのデータをリードする。ステップＳ１１３において、リードされたセクタのデータを対応するバッファ領域へ格納する。格納先のバッファ領域は図２のバッファ管理テーブルにしたがう。
ステップＳ１１４において、データが格納されたセクタに対して、データ未処理を示すフラグをセットする。このフラグをセットする際に、そのセクタが先頭のセクタから所定Ｋ番目までのセクタである場合には、同じバッファ領域に対応する他のセクタのフラグをクリアする。即ち、そのセクタのデータが格納されたバッファ領域が共有バッファ領域Ａ（またはＢ）である場合には、その共有バッファ領域Ａ（またはＢ）にはそれ以前のデータにそのセクタのデータが上書きして格納される。したがって、上書きされたそれ以前のデータ（他のセクタのデータ）は送信されないことになってしまうので、他のセクタのデータに対するフラグはクリアされる。
個別のバッファ領域Ｋ＋１（図２の例では、セクタ７）からＮでは、データが上書きされることはないから、ステップＳ１１４でのフラグのセットだけが行われる。
このステップＳ１１１〜ステップＳ１１４のＦＤＣ処理が、ステップＳ１１５でＵＳＢＣ処理が完了したことが確認されるまで、繰り返して行われる。
なお、ステップＳ１１１における「次にリードするセクタ」は、データリードの当初においては、ＦＤの回転位置がセクタ１番目乃至セクタＫ番目にあるときはセクタＫ＋１番目とし、その回転位置がセクタＫ番目以降にあるときは当該セクタの次の順番のセクタとしてもよい。
また、ステップ１１３において、リードされたセクタのデータを対応するバッファ領域に格納するに際し、データリードの当初においては、リードされたセクタのデータが、セクタ１番目乃至セクタＫ番目のセクタのデータであるときにはバッファ領域に格納せず、Ｋ＋１番目以降のセクタデータから対応するバッファ領域に順次格納するようにしてもよい。
即ち、ＦＤＣ処理が開始された当初（データリードの当初）のＦＤの回転位置がセクタ１番目乃至セクタＫ番目にあるときは、そのセクタのデータは読み出されてバッファ領域Ａ、Ｂに格納されても、処理の進行とともに上書きされてしまうから、セクタ１番目乃至セクタＫ番目のデータの読み出しやバッファ領域への格納を省略する。これにより、データリードの当初における無駄な処理を省くことができる。
ＵＳＢＣ処理では、ステップＳ１２１において、セクタ番号を示すセクタ変数Ｉを「１」にセットする。これはＵＳＢＣ１１からＵＳＢ１２へ転送するセクタデータは、セクタ番号の若い順、即ちセクタ１からセクタ番号順に転送する必要があることによる。以下、セクタ変数Ｉのセクタを、単にセクタＩという。
ステップＳ１２２において、セクタＩのフラグが「１」かどうか判定し、フラグが「１」でない場合には「１」がセットされるまで、待機する。フラグが「１」と判定されると、そのセクタのデータがＦＤＣ１６によってリードされたが、未だＵＳＢＣ１１が送信していないことを意味する。
そこで、ステップＳ１２３にてセクタＩのデータを送信するとともに、セクタＩのフラグをクリア（即ち「０」）する（ステップＳ１２４）。引き続いて、ステップＳ１２５で、セクタ変数Ｉを「Ｉ＋１」にセットする。
ステップＳ１２６にて、セクタ変数Ｉが「Ｎ＋１」になったかどうかを判定する。セクタ変数Ｉが「Ｎ＋１」になるまで、ステップＳ１２２〜ステップＳ１２５の処理を、繰り返して行う。セクタ変数Ｉが「Ｎ＋１」になると、当該トランクの全てのセクタ１〜ＮのデータがＵＳＢ１２に転送されたことになり、ＵＳＢＣ処理が終了する（ステップＳ１２７）。また、ステップＳ１１５でもＵＳＢＣ処理完了により、ＦＤＣ処理が終了する（ステップＳ１１６）。
以上のように、リード時に、ＦＤＣ処理では、ＦＤの回転位置に基づいて次にリードするセクタを決定し、当該セクタに対応するバッファ領域にデータを格納してゆく。ただ、データリードの当初においては、ＦＤの回転位置がセクタ１番目乃至セクタＫ番目（即ち、共有のバッファ領域に対応する）にあるときは、その間のセクタのデータを２回読みするか、あるいは１回目は読みとらない。また、ＵＳＢＣ処理では、特許文献１等と同じく、先頭セクタのデータからＵＳＢ１２に転送する。したがって、特許文献１に比して原理的には若干の時間遅延が生じることになる。しかし、他装置との共用などの条件を含めたＵＳＢのデータ転送速度と、処理速度（他装置との共用などの条件）や、共有バッファ領域に対応するセクタ数を適切に設定することによって、本発明は、リード時に全セクタ分のバッファ領域を持つ特許文献１のものと比して、実質的に同程度の速度性能を得ることも期待できる。
つぎに、図５〜図７を参照して、ＵＳＢバス１２側からのデータを受信してＦＤの該当するトラックの各セクタにデータをライトする場合（以下、ライト時）について説明する。
図５は、ライト時に使用するバッファ管理テーブルの構造を示す図であり、基本的には図２のリード時に使用するバッファ管理テーブルと同様である。
この図５では、ＵＳＢＣからは該当するトラックのセクタデータが、先頭セクタのデータから送信されてくるから、これを効率よく受信できるような構造とされている。
先頭のセクタ１から所定Ｊ番目（Ｊ＜Ｎ）のセクタ（この例では、セクタＮ−６）に対してバッファ手段であるＲＡＭ１５のうちの個別のバッファ領域がそれぞれ対応するように設定されており、Ｎ−５番目〜Ｎ番目のセクタに対してＲＡＭ１５のうちの共有のバッファ領域Ｑ、Ｒが対応するように設定されている。
共有のバッファ領域Ｑ、Ｒは、２セクタ分のバッファ領域を用いてリングバッファとして動作させる。即ち、ＵＳＢＣ１１の受信したデータをバッファ領域Ｑに格納し、同時にバッファ領域Ｒに格納されているデータをＦＤＣ１６、ＦＤＤ１７でＦＤにライトする。この動作を共有のバッファ領域Ｑ、Ｒを交換しながら、セクタＮ−５〜Ｎのデータをライトする。
未処理フラグは、ＵＳＢＣ１１が受信したが、ＦＤＣ１６、ＦＤＤ１７がまだライトしていない場合に、セットされる。即ち、フラグ「１」が立てられる。なお、図５に示した未処理フラグは、個別のバッファ領域Ａ〜Ｐに対応するセクタ１〜Ｎ−６及び共有のバッファ領域Ｑ、Ｒに対応するセクタＮ−５〜Ｎ−４にフラグがセットされ、共有のバッファ領域Ａ、Ｂに対応するセクタＮ−３〜Ｎのフラグがクリアされている状況を、例示している。
なお、図５で、セクタ番号とバッファ領域番号との対応は、図２のその対応と比較するといずれかの番号を逆にした形となる。したがって、図５のバッファ領域番号の欄に括弧書きで示したように、図２の対応関係を倒立した形とすることがよい。このように、対応関係を倒立した形とすることによって、データリード時とデータライト時とでバッファ管理テーブルの管理が、容易になる。
図６は、図５のセクタ番号１〜Ｎとバッファ領域番号Ａ〜Ｒの関係を、バッファ領域番号Ａ〜Ｒから見た図である。バッファ領域Ｑ、ＲはセクタＮ〜Ｎ−５で共用され、バッファ領域Ａ〜Ｐは、個別にセクタ１〜Ｎ−６に対応している。
図７は、ライト時の処理を説明するフローチャートである。図７において、ライト要求が発生される（ステップＳ２００）と、まず、ＦＤの目標とするトラックにヘッドを移動させる。そして、ＵＳＢＣ処理が開始される（ステップＳ２１０）と同時に、ＦＤＣ処理が開始される（ステップＳ２２０）。
ＵＳＢＣ処理では、ステップＳ２１１において、セクタ番号を示すセクタ変数Ｉを「１」にセットする。これはＵＳＢ１２からＵＳＢＣ１１へ転送され受信されるセクタデータは、セクタ番号の若い順、即ちセクタ１からセクタ番号順に受信される。この転送、受信を速やかに、効率よく行うためである。以下、セクタ変数Ｉのセクタを、単にセクタＩという。
ステップＳ２１２において、セクタＩの共有バッファのフラグが「０」かどうか判定し、フラグが「０」の時には、ステップＳ２１３に進む。フラグが「０」でない場合には「０」にクリアされるまで待機することになる。しかし、バッファ管理テーブルが図５の構造を持つので、セクタ番号１〜Ｎ−４までは、待機することはない。セクタ番号Ｎ−３以降で、フラグが「１」と判定されることがあるので、その場合には「待機」することになる。
ステップＳ２１３にてセクタＩのデータを受信し、対応するバッファ領域に格納する。そして、ステップＳ２１４で、セクタＩのフラグをセット（即ち「１」）する。引き続いて、ステップＳ２１５で、セクタ変数Ｉを「Ｉ＋１」にセットする。
ステップＳ２１６にて、セクタ変数Ｉが「Ｎ＋１」になったかどうかを判定する。セクタ変数Ｉが「Ｎ＋１」になるまで、ステップＳ２１２〜ステップＳ２１５の処理を、繰り返して行う。セクタ変数Ｉが「Ｎ＋１」になると、当該トラックの全てのセクタ１〜Ｎのデータが対応するバッファ領域に格納されたことになり、ＵＳＢＣ処理が終了する（ステップＳ２１７）。
ＦＤＣ処理では、ステップＳ２２１において、ＦＤＤ１７のヘッド位置に対するＦＤの回転位置を例えばＩＤコマンドを発行することにより得る。このＦＤの回転位置に基づいて次にライトするセクタを決定する。「次にライトするセクタ」は、受信したデータを全て書き込むために、ＦＤの回転位置のあるセクタの次の順番のセクタである。
ステップＳ２２２において、決定されたセクタのフラグが「１」であるかどうかを判定する。そのセクタのフラグが「１」でなければ、ステップＳ２２１に戻り、ＦＤの回転に伴って進行（更新）する次にライトするセクタのフラグ「１」を判定する。
ステップＳ２２２において、フラグ「１」と判定されると、ステップＳ２２３で当該セクタへデータをライトする。そして、ステップＳ２２４において、ライトされたセクタが対応するバッファ領域のフラグをクリア「０」する。
このステップＳ２２１〜ステップＳ２２４のＦＤＣ処理が、ステップＳ２２５で全セクタへのデータライト処理が完了したことが確認されるまで、繰り返して行われる。全セクタへのデータライト処理が完了すると、ＦＤＣ処理は終了する（ステップＳ２２６）。
なお、ＵＳＢＣ処理の処理速度とＦＤＣ処理の処理速度との関係などによって、ＦＤＣ処理がＵＳＢＣ処理に追いついてしまうことも予想される。この場合には、ＵＳＢＣで受信したデータを、バッファ手段であるＲＡＭ１５に格納することなく、ＦＤＣに直接転送するようにしてもよい。これにより、ライト処理に要する時間が短縮される。
以上のようにライト時に、また、ＵＳＢＣ処理では、特許文献１等と同じく、ＵＳＢ１２からは先頭セクタのデータからセクタの順番に受信される。ＦＤＣ処理は、ＵＳＢＣ処理と同時に開始されるが、「次にライトするセクタ」にはＦＤの回転位置によっては、未だそのセクタへのデータが受信できていない、即ち対応するバッファ領域に格納されていない場合が存在する。したがって、特許文献１に比して原理的には若干の時間遅延が生じることになる。しかし、他装置との共用などの条件を含めたＵＳＢのデータ転送速度と処理速度（他装置との共用などの条件）や、共有バッファ領域に対応するセクタ数を適切に設定することによって、本発明は、ライト時にも全セクタ分のバッファ領域を持つ特許文献１のものと比して、実質的に同程度の速度性能を得ることも期待できる。
そして、本発明では、データリード時、データライト時のデータ転送に用いるバッファ手段１５のバッファ領域（数）を伸縮する。これにより、ハードウエア構成を変えることなく、バッファ手段（ＲＡＭバッファ）の記憶容量と速度性能のトレードオフを考慮したシステムを構築できる。
また、一般にＵＳＢ−ＦＤＤ装置１０は、種々のフォーマットのＦＤに対応するので、そのフォーマットによって要求される速度性能も、使用されるバッファ容量も異なる。本発明では、各フォーマットに対して最大の性能が出せるようにバッファ手段１５の管理を適応的に変えていく。これにより、例えば、使用できるバッファ領域（数Ｎ）が制限される場合に、制限された容量まで一杯に使用して限られたバッファ資源で最大の性能を引き出せる。また、速度性能がさほど要求されない場合には、バッファ手段として使用するバッファ領域（数Ｎ）を少なくし、残余のバッファ領域（ＲＡＭ容量のうちバッファ手段として使用しない領域）は他の用途に使用できる。また、バッファ資源（ハードウエアＲＡＭ）を節約できる。
【産業上の利用可能性】  本発明に係るストレージディスクに対するデータリード方法、データライト方法、及びストレージディスク制御装置は、ＵＳＢ等のシリアルデータ転送手段を用いたＦＤＤ等のストレージディスク駆動装置のリード／ライトを使用状況に合わせて高速に行うと共に、ＲＡＭバッファの容量を少なくすることが可能である。
【図１】
2005124529.tif 000002
【図２】
2005124529.tif 000003
【図３】
2005124529.tif 000004
【図４】
2005124529.tif 000005
【図５】
2005124529.tif 000006
【図６】
2005124529.tif 000007
【図７】
2005124529.tif 000008
【国際調査報告】
2005124529.tif 000009
2005124529.tif 000010
2005124529.tif 000011
2005124529.tif 000012