(57)【要約】【課題】データ転送の処理能力の低下を回避しながら、バッファの容量を最小アクセス単位以下に抑えることを課題とする。【解決手段】バッファは、記憶媒体との間および制御部との間で転送ビット数（電気的に同一のタイミングで転送されるデータのビット数）の整数倍の容量を有するものであって、バッファと記憶媒体との間で転送ビット数単位でデータ転送を行うことと並行して、制御部とバッファとの間で転送ビット数単位でデータ転送を行い、バッファにおけるデータの出力（入力）の回数をカウントし、回数が１セクタを転送ビット数で除算した数分カウントしたことを示した場合に、１セクタ分のデータが記憶媒体に向けて出力（入力）されたことをカウントし、カウントされたセクタ数と、記憶媒体においてバッファから入力（出力）されたセクタ数とを比較して、データ転送が正常に行われたか否かを判定する。【選択図】        図１
2008146335.tif 000002
【特許請求の範囲】
【請求項１】
所定のセクタ数のデータを当該所定のセクタ数単位でデータを管理する記憶媒体との間でデータ転送する制御部を有し、当該制御部と当該記憶媒体との間でバッファを介して行われる当該データ転送を制御するデータ転送制御装置であって、
前記バッファは、前記記憶媒体との間および前記制御部との間で電気的に同一のタイミングで転送されるデータのビット数を示す転送ビット数の整数倍の容量を有するものであって、当該バッファと当該記憶媒体との間で当該転送ビット数単位でデータ転送を行うことと並行して、当該制御部と当該バッファとの間で当該転送ビット数単位でデータ転送を行うデータ転送手段と、
前記バッファにおける前記記憶媒体に向けたデータの出力および／または当該記憶媒体からのデータの入力の回数をカウントするデータカウント手段と、
前記データカウント手段によってカウントされた前記回数が、１セクタを前記転送ビット数で除算した数分カウントしたことを示した場合に、１セクタ分のデータが前記記憶媒体に向けて出力されたことおよび／または当該記憶媒体から入力されたことをカウントし、当該出力されたセクタ数および／または入力されたセクタ数をカウントするセクタカウント手段と、
前記セクタカウント手段によってカウントされた前記セクタ数と、前記記憶媒体において前記バッファから入力されたセクタ数および／または当該バッファに向けて出力されたセクタ数とを比較して、当該データ転送が正常に行われたか否かを判定する判定手段と、
を備えたことを特徴とするデータ転送制御装置。
【請求項２】
前記バッファは、１セクタ分の容量を有するものであって、
前記制御部と前記バッファとの間で１セクタ分のデータ転送が行われた後に、当該制御部と当該バッファとの間で当該転送された１セクタ分のデータを転送するデータ転送、および／または、前記バッファと前記記憶媒体との間で１セクタ分のデータ転送が行われた後に、前記制御部と前記バッファとの間で当該転送された１セクタ分のデータを転送するデータ転送を行う一括データ転送手段と、
データ転送を行うに際し、前記データ転送手段によるデータ転送、または、前記一括データ転送手段によるデータ転送のいずれか一つを選択する選択手段と、
をさらに備えたことを特徴とする請求項１に記載のデータ転送制御装置。
【請求項３】
前記データ転送手段によって前記制御部と前記記憶媒体との間で転送するデータが終了した際に、前記データカウント手段によってカウントされた前記回数が前記１セクタ分に満たない場合には、１セクタを充填する回数分の所定のデータを出力および／または入力するデータ充填手段をさらに備えたことを特徴とする請求項１または２に記載のデータ転送制御装置。
【請求項４】
前記記憶媒体に管理されたデータを消去する指示を受け付けて当該データを消去するデータ消去手段と、
データ転送を継続する所定の時間を設定する継続時間設定手段とをさらに備え、
前記データ転送手段は、前記継続時間設定手段によって前記所定の時間が設定された場合には、前記データ消去手段によって前記指示を受け付けた場合であっても、当該所定の時間はデータ転送を継続することを特徴とする請求項１〜３のいずれか一つに記載のデータ転送制御装置。
【請求項５】
所定のセクタ数のデータを当該所定のセクタ数単位でデータを管理する記憶媒体との間でデータ転送する制御部を有し、当該制御部と当該記憶媒体との間でバッファを介して行われる当該データ転送を制御するデータ転送制御方法をコンピュータに実行させるデータ転送制御プログラムであって、
前記バッファは、前記記憶媒体との間および前記制御部との間で電気的に同一のタイミングで転送されるデータのビット数を示す転送ビット数の整数倍の容量を有するものであって、当該バッファと当該記憶媒体との間で当該転送ビット数単位でデータ転送を行うことと並行して、当該制御部と当該バッファとの間で当該転送ビット数単位でデータ転送を行うデータ転送手順と、
前記バッファにおける前記記憶媒体に向けたデータの出力および／または当該記憶媒体からのデータの入力の回数をカウントするデータカウント手順と、
前記データカウント手順によってカウントされた前記回数が、１セクタを前記転送ビット数で除算した数分カウントしたことを示した場合に、１セクタ分のデータが前記記憶媒体に向けて出力されたことおよび／または当該記憶媒体から入力されたことをカウントし、当該出力されたセクタ数および／または入力されたセクタ数をカウントするセクタカウント手順と、
前記セクタカウント手順によってカウントされた前記セクタ数と、前記記憶媒体において前記バッファから入力されたセクタ数および／または当該バッファに向けて出力されたセクタ数とを比較して、当該データ転送が正常に行われたか否かを判定する判定手順と、
をコンピュータに実行させることを特徴とするデータ転送制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データ転送制御装置、データ転送制御プログラムおよびデータ転送制御方法に関する。
【背景技術】
【０００２】
従来より、交換装置などのボードに搭載される記憶媒体として、メモリー・カード（Memory  Card）など、着脱可能な記憶媒体（リムーバブル・メディア：Removable  media）の使用が増加している。メモリー・カードとは、フラッシュ・メモリ（Flash  Memory）と呼ばれるＲＯＭ（Read  Only  Memory）を採用するカード型の小型記憶媒体のことであり、ＳａｎＤｉｓｋ社が開発したコンパクト・フラッシュ（ＣＦ：Compact  Flash）などがその一例として挙げられる。
【０００３】
ところで、フラッシュ・メモリに対するアクセス（ライト処理、リード処理）は、フラッシュ・メモリと制御部（フラッシュ・メモリとの間でデータ転送を行う部）との間にバッファが設けられることで実現されるのが一般的である。具体的に説明すると、フラッシュ・メモリに対するアクセス単位である１ブロック（ライト処理、リード処理の単位）が、１セクタ（最小アクセス単位）である場合には、例えば、図１２の（Ａ）に示すように、フラッシュ・メモリと制御部との間に１セクタ分の容量のバッファが設けられる。そして、ライト処理であれば、データ転送を制御するデータ転送制御装置が、１セクタ分のデータを制御部から一括してバッファに転送し、次に、バッファに転送した１セクタ分のデータを一括してフラッシュ・メモリに転送する。また、１ブロックが複数セクタである場合には、図１２の（Ｂ）に示すように、１セクタ分の容量のバッファが複数設けられ、データ転送制御装置が、かかるデータ転送を１セクタごとに順次行う。
【０００４】
もっとも、上記した手法では、データ転送制御装置は、バッファに対するデータ転送が１セクタ分のデータについて完了するまで、バッファに転送したデータをフラッシュ・メモリに転送することができないことから、データ転送の処理能力が低下する。また、１ブロックが複数セクタである場合には、１セクタ分の容量のバッファが複数設けられなければならない。このため、例えば、特許文献１に開示されている手法では、図１３の（Ａ）よび（Ｂ）に示すように、フラッシュ・メモリと制御部との間にバッファが２つ設けられ、制御部とバッファとの間のデータ転送、および、バッファとフラッシュ・メモリとの間のデータ転送を並行して行うことで、データ転送の処理能力の低下を回避している。また、１ブロックが複数セクタである場合には、データ転送制御装置が、転送セクタ数をカウントすることで、１セクタ分の容量のバッファによって複数セクタ分のデータ転送を実現している。
【０００５】
【特許文献１】特開２００２−２８８０３４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、上記した従来の技術では、以下に説明するように、データ転送の処理能力の低下を回避しながら、バッファの容量を抑えることができないという課題がある。すなわち、特許文献１に開示される手法では、確かに、２つのバッファが設けられ、アクセス制御装置がデータ転送を並行して行うことで、データ転送の処理能力の低下を回避することは可能であるが、結果として、１セクタ分の容量のバッファが２つ設けられなければならないことから、バッファの容量を抑えることができない。
【０００７】
そこで、この発明は、上記した従来技術の課題を解決するためになされたものであり、データ転送の処理能力の低下を回避しながら、バッファの容量を最小アクセス単位以下に抑えることが可能なデータ転送制御装置、データ転送制御プログラムおよびデータ転送制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、請求項１に係る発明は、所定のセクタ数のデータを当該所定のセクタ数単位でデータを管理する記憶媒体との間でデータ転送する制御部を有し、当該制御部と当該記憶媒体との間でバッファを介して行われる当該データ転送を制御するデータ転送制御装置であって、前記バッファは、前記記憶媒体との間および前記制御部との間で電気的に同一のタイミングで転送されるデータのビット数を示す転送ビット数の整数倍の容量を有するものであって、当該バッファと当該記憶媒体との間で当該転送ビット数単位でデータ転送を行うことと並行して、当該制御部と当該バッファとの間で当該転送ビット数単位でデータ転送を行うデータ転送手段と、前記バッファにおける前記記憶媒体に向けたデータの出力および／または当該記憶媒体からのデータの入力の回数をカウントするデータカウント手段と、前記データカウント手段によってカウントされた前記回数が、１セクタを前記転送ビット数で除算した数分カウントしたことを示した場合に、１セクタ分のデータが前記記憶媒体に向けて出力されたことおよび／または当該記憶媒体から入力されたことをカウントし、当該出力されたセクタ数および／または入力されたセクタ数をカウントするセクタカウント手段と、前記セクタカウント手段によってカウントされた前記セクタ数と、前記記憶媒体において前記バッファから入力されたセクタ数および／または当該バッファに向けて出力されたセクタ数とを比較して、当該データ転送が正常に行われたか否かを判定する判定手段と、を備えたことを特徴とする。
【０００９】
また、請求項２に係る発明は、上記の発明において、前記バッファは、１セクタ分の容量を有するものであって、前記制御部と前記バッファとの間で１セクタ分のデータ転送が行われた後に、当該制御部と当該バッファとの間で当該転送された１セクタ分のデータを転送するデータ転送、および／または、前記バッファと前記記憶媒体との間で１セクタ分のデータ転送が行われた後に、前記制御部と前記バッファとの間で当該転送された１セクタ分のデータを転送するデータ転送を行う一括データ転送手段と、データ転送を行うに際し、前記データ転送手段によるデータ転送、または、前記一括データ転送手段によるデータ転送のいずれか一つを選択する選択手段と、をさらに備えたことを特徴とする。
【００１０】
また、請求項３に係る発明は、上記の発明において、前記データ転送手段によって前記制御部と前記記憶媒体との間で転送するデータが終了した際に、前記データカウント手段によってカウントされた前記回数が前記１セクタ分に満たない場合には、１セクタを充填する回数分の所定のデータを出力および／または入力するデータ充填手段をさらに備えたことを特徴とする。
【００１１】
また、請求項４に係る発明は、上記の発明において、前記記憶媒体に管理されたデータを消去する指示を受け付けて当該データを消去するデータ消去手段と、データ転送を継続する所定の時間を設定する継続時間設定手段とをさらに備え、前記データ転送手段は、前記継続時間設定手段によって前記所定の時間が設定された場合には、前記データ消去手段によって前記指示を受け付けた場合であっても、当該所定の時間はデータ転送を継続することを特徴とする。
【００１２】
また、請求項５に係る発明は、所定のセクタ数のデータを当該所定のセクタ数単位でデータを管理する記憶媒体との間でデータ転送する制御部を有し、当該制御部と当該記憶媒体との間でバッファを介して行われる当該データ転送を制御するデータ転送制御方法をコンピュータに実行させるデータ転送制御プログラムであって、前記バッファは、前記記憶媒体との間および前記制御部との間で電気的に同一のタイミングで転送されるデータのビット数を示す転送ビット数の整数倍の容量を有するものであって、当該バッファと当該記憶媒体との間で当該転送ビット数単位でデータ転送を行うことと並行して、当該制御部と当該バッファとの間で当該転送ビット数単位でデータ転送を行うデータ転送手順と、前記バッファにおける前記記憶媒体に向けたデータの出力および／または当該記憶媒体からのデータの入力の回数をカウントするデータカウント手順と、前記データカウント手順によってカウントされた前記回数が、１セクタを前記転送ビット数で除算した数分カウントしたことを示した場合に、１セクタ分のデータが前記記憶媒体に向けて出力されたことおよび／または当該記憶媒体から入力されたことをカウントし、当該出力されたセクタ数および／または入力されたセクタ数をカウントするセクタカウント手順と、前記セクタカウント手順によってカウントされた前記セクタ数と、前記記憶媒体において前記バッファから入力されたセクタ数および／または当該バッファに向けて出力されたセクタ数とを比較して、当該データ転送が正常に行われたか否かを判定する判定手順と、をコンピュータに実行させることを特徴とする。
【発明の効果】
【００１３】
請求項１または５の発明によれば、所定のセクタ数のデータを所定のセクタ数単位でデータを管理する記憶媒体との間でデータ転送する制御部を有し、制御部と記憶媒体との間でバッファを介して行われるデータ転送を制御するデータ転送制御装置であって、バッファは、記憶媒体との間および制御部との間で電気的に同一のタイミングで転送されるデータのビット数を示す転送ビット数の整数倍の容量を有するものであって、バッファと記憶媒体との間で転送ビット数単位でデータ転送を行うことと並行して、制御部とバッファとの間で転送ビット数単位でデータ転送を行い、バッファにおける記憶媒体に向けたデータの出力および／または記憶媒体からのデータの入力の回数をカウントし、カウントされた回数が、１セクタを転送ビット数で除算した数分カウントしたことを示した場合に、１セクタ分のデータが記憶媒体に向けて出力されたことおよび／または記憶媒体から入力されたことをカウントし、出力されたセクタ数および／または入力されたセクタ数をカウントし、カウントされたセクタ数と、記憶媒体においてバッファから入力されたセクタ数および／またはバッファに向けて出力されたセクタ数とを比較して、データ転送が正常に行われたか否かを判定するので、データ転送の処理能力の低下を回避しながら、バッファの容量を最小アクセス単位以下に抑えることが可能になる。
【００１４】
また、請求項２の発明によれば、バッファは、１セクタ分の容量を有するものであって、制御部とバッファとの間で１セクタ分のデータ転送が行われた後に、制御部とバッファとの間でこの転送された１セクタ分のデータを転送するデータ転送、および／または、バッファと記憶媒体との間で１セクタ分のデータ転送が行われた後に、制御部とバッファとの間でこの転送された１セクタ分のデータを転送するデータ転送を行う一括データ転送手段を備え、データ転送を行うに際し、データ転送手段によるデータ転送、または、一括データ転送手段によるデータ転送のいずれか一つを選択するので、五月雨方式のデータ転送（バッファと記憶媒体との間で転送ビット数単位でデータ転送を行うことと並行して、制御部とバッファとの間で転送ビット数単位でデータ転送を行う）と一括データ転送とのいずれかを選択することが可能になる。
【００１５】
また、請求項３の発明によれば、制御部と記憶媒体との間で転送するデータが終了した際に、カウントされた回数が１セクタ分に満たない場合には、１セクタを充填する回数分の所定のデータを出力および／または入力するので、記憶媒体におけるビジー状態（スタック）を回避することが可能になる。
【００１６】
また、請求項４の発明によれば、記憶媒体に管理されたデータを消去する指示を受け付けてデータを消去する手段と、データ転送を継続する所定の時間を設定する手段とを備え、所定の時間が設定された場合には、指示を受け付けた場合であっても、所定の時間はデータ転送を継続するので、記憶媒体に管理されたデータがライト処理時等に破壊されることを回避することが可能になる。
【発明を実施するための最良の形態】
【００１７】
以下に添付図面を参照して、本発明に係るデータ転送制御装置、データ転送制御プログラムおよびデータ転送制御方法の実施例を詳細に説明する。なお、以下では、以下の実施例で用いる主要な用語、実施例１に係るデータ転送制御装置の概要および特徴、実施例１に係るデータ転送制御装置の構成および処理の手順、実施例１の効果を順に説明し、次に、他の実施例について説明する。
【実施例１】
【００１８】
［用語の説明］
まず最初に、以下の実施例で用いる主要な用語を説明する。以下の実施例で用いる「記憶媒体」とは、交換装置などのボードに搭載される記憶媒体のことであり、フラッシュ・メモリと呼ばれるＲＯＭ（Read  Only  Memory）を採用するカード型の小型記憶媒体など（例えば、コンパクト・フラッシュなど）を想定している。このような「記憶媒体」は、ＭＰＵ（Micro  Processing  Unit）において演算処理された演算処理結果などの情報を一時的に記憶する目的に利用される。すなわち、同じくボードに搭載される「制御部」と「記憶媒体」との間で、演算処理結果などの情報が「データ転送」されることで、情報が「記憶媒体」に一時的に書き込まれたり（ライト処理）、「記憶媒体」に一時的に書き込まれた情報が再び「制御部」によって読み出されたりする（リード処理）。
【００１９】
ここで、「記憶媒体」は、１セクタ（例えば、512byteなど）もしくは複数セクタ（例えば、２セクタなど）の「セクタ数単位」でデータを管理する。このため、「制御部」は、「記憶媒体」が管理する単位のセクタ数のデータを「記憶媒体」との間でデータ転送することになる。具体的に例を挙げて説明すると、「記憶媒体」が２セクタ単位でデータを管理する場合には、「制御部」は、「記憶媒体」との間で２セクタのデータをデータ転送する。
【００２０】
ところで、「制御部」と「記憶媒体」との間で行われるデータ転送は、「制御部」と「記憶媒体」との間で直接データが入出力されることによって行われるものではない。「制御部」におけるデータの入出力の速度と「記憶媒体」におけるデータの入出力の速度とには乖離があるため、「制御部」と「記憶媒体」との間に「バッファ」が介在し、この「バッファ」が速度の違いを吸収するなどすることで、「制御部」と「記憶媒体」との間のデータ転送が行われる。このように、データ転送は、「制御部」と「バッファ」との間のデータ転送、および、「バッファ」と「記憶媒体」との間のデータ転送の２段階で行われることから、「データ転送制御装置」は、「バッファ」を介在させることに起因するデータ転送の処理能力の低下を回避するように、データ転送を制御しなければならない。
【００２１】
［実施例１に係るデータ転送制御装置の概要および特徴］
続いて、図１を用いて、実施例１に係るデータ転送制御装置の概要および特徴を説明する。図１は、実施例１に係るデータ転送制御装置の概要および特徴を説明するための図である。
【００２２】
実施例１に係るデータ転送制御装置は、上記したように、所定のセクタ数のデータを、所定のセクタ数単位でデータを管理する記憶媒体との間でデータ転送する制御部を有し、かかる制御部と記憶媒体との間でバッファを介して行われるデータ転送を制御することを概要とし、データ転送の処理能力の低下を回避しながら、バッファの容量を最小アクセス単位以下に抑えることを主たる特徴とする。
【００２３】
この主たる特徴について簡単に説明すると、実施例１におけるバッファは、転送ビット数の整数倍の容量を有する。ここで、転送ビット数とは、バッファと記憶媒体との間やバッファと制御部との間で、電気的に同一のタイミングで転送されるデータのビット数のことである。具体的に例を挙げて説明すると、例えば、バッファであるレジスタの幅が２バイト（１６ビット）である場合には、バッファと記憶媒体との間やバッファと制御部との間で、２バイト（１６ビット）のデータが電気的に同一のタイミングで転送される。
【００２４】
この時、転送ビット数は「１６ビット」であり、１６ビット、３２ビット、４８ビットなどが１６ビットの整数倍であるが、実施例１においては、バッファが、転送ビット数の整数倍の容量であり、かつ、１セクタ分の容量であると想定し、また、１セクタを５１２バイトであると想定するので、結局、バッファは、転送ビット数（１６ビット）の２５６倍の容量を有することになる（５１２バイト÷２バイト＝２５６）。なお、実施例１においては、１セクタが５１２バイトであると想定し、バッファが１セクタ分の容量であると想定するが（この場合には一括データ転送を選択することが可能になる）、本発明はこれに限られるものではなく、バッファが転送ビット数の整数倍の容量であれば、具体的な１セクタのサイズやバッファの容量はいずれでもよい。
【００２５】
このような構成のもと、実施例１に係るデータ転送制御装置は、バッファと記憶媒体との間で転送ビット数単位でデータ転送を行うこと（図１の（１）−１を参照）と並行して、制御部とバッファとの間で転送ビット数単位でデータ転送を行う（図１の（１）−２を参照）。実施例１においては、ライト処理について説明することとすると、例えば、データ転送制御装置は、図１の（１）−１および（１）−２に示すように、まず、バッファと記憶媒体との間で２バイトの『ｄａｔａ１』のデータ転送を行うことと並行して、制御部とバッファとの間で２バイトの『ｄａｔａ２５４』のデータ転送を行う。次に、データ転送制御装置は、バッファと記憶媒体との間で２バイトの『ｄａｔａ２』のデータ転送を行うことと並行して、制御部とバッファとの間で２バイトの『ｄａｔａ２５５』のデータ転送を行う。そして、データ転送制御装置は、このようなデータ転送を繰り返す。なお、バッファの容量以上のデータについては、バッファに向けてサイクリックにデータ転送される。
【００２６】
この時、データ転送制御装置は、バッファにおける記憶媒体に向けたデータの出力の回数をカウントする（図１の（２）を参照）。例えば、データ転送制御装置は、データの出力の回数を、「２５６」からカウントダウンすることでカウントする。なお、実施例１においては、カウントダウンする手法について説明するが、本発明はこれに限られるものではなく、カウントアップする手法など、カウントする具体的な手法はいずれでもよい。
【００２７】
そして、データ転送制御装置は、カウントされたデータの出力の回数が、１セクタを転送ビット数で除算した数分カウントしたことを示した場合に、１セクタ分のデータが記憶媒体に出力されたことをカウントし、出力されたセクタ数をカウントする（図１の（３）を参照）。例えば、データ転送制御装置は、カウントされたデータの出力の回数が「２５６」を示した場合（「２５６」からカウントダウンして「１」を示した場合）、「２５６」は１セクタ（５１２バイト）を転送ビット数（１６ビット）で除算した数であるので、１セクタ分のデータが記憶媒体に出力されたことをカウントし、例えば、「２５６」が２回カウントされた場合には、出力されたセクタ数として、「２」をカウントする。
【００２８】
その後、データ転送制御装置は、カウントされたセクタ数と、記憶媒体においてバッファから入力されたセクタ数とを比較して、データ転送が正常に行われたか否かを判定する（図１の（４）を参照）。例えば、データ転送制御装置は、カウントされたセクタ数「２」と、記憶媒体においてバッファから入力されたセクタ数「２」とを比較し、比較の結果が一致することから、データ転送が正常に行われたと判定する。
【００２９】
このようにして、実施例１に係るデータ転送制御装置は、データ転送の処理能力の低下を回避しながら、バッファの容量を最小アクセス単位以下に抑えることが可能になる。
【００３０】
［実施例１に係るデータ転送制御装置の構成］
次に、図２〜図４を用いて、実施例１に係るデータ転送制御装置の構成を説明する。図２は、実施例１に係るデータ転送制御装置の構成を示すブロック図であり、図３および図４は、レジスタを説明するための図である。
【００３１】
図２に示すように、実施例１に係るデータ転送制御装置１０は、コンパクト・フラッシュ（Compact−Flash）１との間でデータ転送する制御部２０を有し、制御部２０とコンパクト・フラッシュ１との間でバッファ３０を介して行われるデータ転送を制御する。実施例１において、コンパクト・フラッシュ１は、２セクタ単位でデータを管理するものとする。なお、実施例１においては、記憶媒体の一例としてコンパクト・フラッシュの場合を説明するが、本発明はこれに限られるものではなく、コンパクト・フラッシュ以外の他の記憶媒体の場合にも、本発明を同様に適用することができる。
【００３２】
データ転送制御装置１０は、制御部２０と、バッファ３０と、データ転送部／一括データ転送部４０と、ライトカウント制御部５０と、リードカウント制御部６０と、判定部７０と、選択部８０と、データ消去部９０と、ＦＩＦＯ１００とから構成される。
【００３３】
制御部２０は、所定のセクタ数のデータをコンパクト・フラッシュ１との間でデータ転送するＭＰＵ（Micro  Processing  Unit）であり、本発明に密接に関連するものとしては、演算処理部２１と、レジスタ部２２とを備える。演算処理部２１は、演算処理を行い、演算処理の結果を、コンパクト・フラッシュ１との間でデータ転送する。すなわち、データ転送制御装置１０が制御するデータ転送とは、演算処理部２１による演算処理の結果などを、コンパクト・フラッシュ１との間で転送することである。具体的には、演算処理部２１は、後述するデータ転送部／一括データ転送部４０やバッファ３０などを介してコンパクト・フラッシュ１に向けて演算処理の結果を出力したり（コンパクト・フラッシュ１に向けたライト処理）、バッファ３０やデータ転送部／一括データ転送部４０などを介してコンパクト・フラッシュ１から演算処理の結果を入力されたりする（コンパクト・フラッシュからのリード処理）。
【００３４】
レジスタ部２２は、演算や実行状態を保持する記憶素子である。具体的には、レジスタ部２２は、図２に示すように、役割別のレジスタを各種備えている。ここで、レジスタ部２２が備える各種レジスタについて、図３および図４を用いて説明する。
【００３５】
Ｌｏｏｋ−ＵＰレジスタは、例えば、図３の（Ａ）に示すように、８ビット目（７）と２５〜３２ビット目（２４〜３１）とに情報を記憶する。まず、『ＲＤＹ／ＣＭＰ』は、コンパクト・フラッシュ１に対するリード処理時には、「ビジー解除通知」の役割を果たし、コンパクト・フラッシュ１に対するライト処理時には、「書き込み完了通知」の役割を果たすビットである。すなわち、リード処理時に『０』のビットがセットされている場合は、コンパクト・フラッシュ１が「ビジー中」であることを意味しており、『１』のビットがセットされている場合は、コンパクト・フラッシュ１が「ビジー解除」の状態になったことを意味する。また、ライト処理時に『０』のビットがセットされている場合は、コンパクト・フラッシュ１が「書き込み中」であることを意味しており、『１』のビットがセットされている場合は、コンパクト・フラッシュ１が「書き込み完了」の状態になったことを意味する。
【００３６】
次に、『ＣＦ検出ＥＲＲ』は、「ソフト検出したコンパクト・フラッシュアクセス時のエラー要因通知」の役割を果たすビットである。すなわち、『ＵＮＣ』（２５ビット目）に『１』のビットがセットされている場合は、「修復不可のＥＣＣエラー」を検出したことを意味しており、『ＤＷＦ』（２６ビット目）に『１』のビットがセットされている場合は、「コンパクト・フラッシュカード内のライト不良」を検出したことを意味しており、『ＢＢＫ』（２７ビット目）に『１』のビットがセットされている場合は、「バットブロック」を検出したことを意味しており、『ＩＮＤＦ』（２８ビット目）に『１』のビットがセットされている場合は、「アクセス対象のセクタにエラーがあるか、そのセクタが存在しないこと」を検出したことを意味しており、『ＡＢＲＴ』（２９ビット目）に『１』のビットがセットされている場合は、「Abored  Command」を検出したことを意味しており、『ＡＭＮＦ』（３０ビット目）に『１』のビットがセットされている場合は、「一般的なエラー」を検出したことを意味している。
【００３７】
ＦＩＦＯ追加レジスタは、例えば、図３の（Ｂ）に示すように、１〜８ビット目（０〜７）と、９〜１６ビット目（８〜１５）と、１７〜３０ビット目（１６〜２９）と、３１〜３２ビット目（３０〜３１）とに情報を記憶する。まず、『Ｓｅｃｔｏｒ−Ｃｏｕｎｔ』は、コンパクト・フラッシュ１の一括処理単位（管理する単位のセクタ数）を設定する役割を果たすビットである。また、『Ｏｆｆｓｅｔ  Ａｄｄｒｅｓｓ』は、コンパクト・フラッシュのオフセットアドレスを指定する役割を果たすビットである。データ転送制御装置１０は、指定されたオフセットアドレスおよびセクタ数に基づいて、コンパクト・フラッシュ１のいずれのアドレスからライト処理するか（リード処理するか）について制御する。『Ｗ／Ｒ識別』は、リード処理とライト処理とを識別する役割を果たすビットである。
【００３８】
起動制御レジスタは、例えば、図３の（Ｃ）に示すように、１ビット目（０）に情報を記憶する。『起動』は、データ転送のトリガの役割を果たすビットである。例えば、制御部２０とバッファ３０との間で１セクタ分の全データ（512byte）のデータ転送が行われた後に、『起動』に『１』のビットがセットされた場合は、一括データ転送部によるデータ転送となり、最初に『起動』に『１』のビットがセットされた後に、制御部２０とコンパクト・フラッシュ１との間でデータ転送が行われた場合は、データ転送部によるデータ転送となる。
【００３９】
ＲＥＳＥＴ制御レジスタは、例えば、図３の（Ｄ）に示すように、１ビット目（０）に情報を記憶する。『ＲＳＴ』は、コンパクト・フラッシュ１に対してリセット（コンパクト・フラッシュ１に管理されたデータの消去）を行う役割を果たすビットである。『ＲＳＴ』に『１』のビットがソフト制御でセットされた場合は、データ消去部９０によって、コンパクト・フラッシュ１に対するリセットが行われる。なお、ＲＥＳＥＴ制御レジスタおよびデータ消去部９０は、特許請求の範囲に記載の「データ消去手段」に対応する。
【００４０】
リード完了Ｂｉｔ設定レジスタは、例えば、図４の（Ｅ）に示すように、１ビット目（０）に情報を記憶する。『ＲＥＡＤ完了』は、「リード完了通知」の役割を果たすビットである。『ＲＥＡＤ完了』に『１』のビットがセットされた場合は、リード処理が完了したことを意味する。
【００４１】
保護用リセット遅延タイマ設定レジスタは、例えば、図４の（Ｆ）に示すように、１〜８ビット目（０〜７）と９ビット目（８）とに情報を記憶する。『設定初期タイマ値』は、データ転送を継続する所定の時間を設定する役割を果たすビットである。『ＦＬＧ』は、ライト処理時に『１』のビットがセットされる。ライト処理時には、まず、保護用リセット遅延タイマ設定レジスタがセットされ、次に、ライト処理に必要な情報が制御部２０にセットされ、その後、起動制御レジスタがセットされる。すると、非同期にリセット（コンパクト・フラッシュ１に管理されたデータの消去）の指示を受け付けた場合であっても、保護用リセット遅延タイマ設定レジスタに設定された所定の時間は、データ転送が継続される。これは、コンパクト・フラッシュ１が、ライト処理中のリセット（その他、電源断など）に対する保証をしていないためである。なお、保護用リセット遅延タイマ設定レジスタは、特許請求の範囲に記載の「継続時間設定手段」に対応する。
【００４２】
書き込みフラグクリアレジスタは、例えば、図４の（Ｇ）に示すように、９ビット目（８）に情報を記憶する。『ＦＬＧ』は、コンパクト・フラッシュ書き込み用（ライト処理）のフラグをクリアする指示の役割を果たすビットである。『ＦＬＧ』に『０』のビットがセットされた場合は、無視され、『１』のビットがセットされた場合は、書き込み用のフラグはクリアされる。
【００４３】
図２に戻り、バッファ３０は、制御部２０とコンパクト・フラッシュ１との間で行われるデータ転送に介在する記憶素子（データ格納レジスタ）である（図４の（Ｈ）を参照）。実施例１において、バッファ３０は、転送ビット数の整数倍の容量を有する。ここで、転送ビット数とは、バッファ３０とコンパクト・フラッシュ１との間や、バッファ３０と制御部２０との間で、電気的に同一のタイミングで転送されるデータのビット数のことである。具体的に例を挙げて説明すると、例えば、バッファ３０（データ格納レジスタ）の幅が２バイト（１６ビット）である場合には、バッファ３０とコンパクト・フラッシュ１との間や、バッファ３０と制御部２０との間で、２バイト（１６ビット）のデータが電気的に同一のタイミングで転送される。
【００４４】
実施例１においては、バッファ３０が転送ビット数の整数倍の容量であり、かつ、１セクタ分の容量であると想定し、また、１セクタを５１２バイトであると想定するので、結局、バッファ３０は、転送ビット数（１６ビット）の２５６倍の容量を有することになる。なお、バッファ３０は、特許請求の範囲に記載の「バッファ」に対応する。
【００４５】
データ転送部／一括データ転送部４０は、バッファ３０とコンパクト・フラッシュ１との間で転送ビット数単位でデータ転送を行うことと並行して、制御部２０とバッファ３０との間で転送ビット数単位でデータ転送を行うデータ転送部、および、バッファ３０とコンパクト・フラッシュ１との間で１セクタ分のデータ転送が行われた後に、制御部２０とバッファ３０との間でこの１セクタ分のデータを転送するデータ転送等を行う一括データ転送部である。具体的には、データ転送部／一括データ転送部４０は、選択部８０による選択を受け付け、選択されたデータ転送（データ転送部によるデータ転送、または、一括データ転送部によるデータ転送のいずれか一つ）を行う。
【００４６】
データパディング部４１は、データ転送部によって制御部２０とコンパクト・フラッシュ１との間で転送するデータが終了した際に、ライトデータカウント部５１によってカウントされた回数が１セクタ分に満たない場合には、コンパクト・フラッシュ１に向けて１セクタを充填する回数分の所定のデータを出力する。例えば、データパディング部４１は、「ＦＦ」または「００」等の任意のデータをパディング（充填）し、データ転送のスタックを回避する（コンパクト・フラッシュ１においてバッファ３０から入力されたセクタ数等をカウントしているため、ビジー状態となることを回避する）。なお、データ転送部／一括データ転送部４０は、特許請求の範囲に記載の「データ転送手段」および「一括データ転送手段」に対応し、データパディング部４１は、「データ充填手段」に対応する。
【００４７】
ライトカウント制御部５０は、ライトデータカウント部５１およびセクタカウント部５２を制御する。ライトデータカウント部５１は、バッファ３０におけるコンパクト・フラッシュ１に向けたデータの出力の回数をカウントする。セクタカウント部５２は、ライトデータカウント部５１によってカウントされた出力の回数が、１セクタを転送ビット数で除算した数分カウントしたことを示した場合に、１セクタ分のデータがコンパクト・フラッシュ１に向けて出力されたことをカウントし、出力されたセクタ数をカウントする。なお、ライトデータカウント部５１は、特許請求の範囲に記載の「データカウント手段」に対応し、セクタカウント部５２は、特許請求の範囲に記載の「セクタカウント手段」に対応する。
【００４８】
リードカウント制御部６０は、リードデータカウント部６１およびセクタカウント部６２を制御する。リードデータカウント部６１は、バッファ３０におけるコンパクト・フラッシュ１からのデータの入力の回数をカウントする。セクタカウント部６２は、リードデータカウント部６１によってカウントされた入力の回数が、１セクタを転送ビット数で除算した数分カウントしたことを示した場合に、１セクタ分のデータがコンパクト・フラッシュ１から入力されたことをカウントし、入力されたセクタ数をカウントする。なお、リードデータカウント部６１は、特許請求の範囲に記載の「データカウント手段」に対応し、セクタカウント部６２は、特許請求の範囲に記載の「セクタカウント手段」に対応する。
【００４９】
判定部７０は、セクタカウント部５１によってカウントされたセクタ数と、コンパクト・フラッシュ１においてバッファ３０から入力されたセクタ数とを比較して、データ転送が正常に行われたか否かを判定したり、セクタカウント部６２によってカウントされたセクタ数と、コンパクト・フラッシュ１においてバッファ３０に向けて出力されたセクタ数とを比較して、データ転送が正常に行われたか否かを判定するなどする。例えば、判定部７０は、セクタカウント部５２によってカウントされたセクタ数と、コンパクト・フラッシュ１においてバッファ３０から入力されたセクタ数とを比較し、比較の結果が一致する場合には、データ転送が正常に行われたと判定する。なお、判定部７０は、特許請求の範囲に記載の「判定手段」に対応する。
【００５０】
選択部８０は、データ転送を行うに際し、データ転送部によるデータ転送、または、一括データ転送部によるデータ転送のいずれか一つを選択する。なお、選択部８０は、特許請求の範囲に記載の「選択手段」に対応する。
【００５１】
データ消去部９０は、コンパクト・フラッシュ１に管理されたデータを消去する指示を受け付けて、データを消去する。また、データ消去部９０は、障害検出時は、ハード自律でコンパクト・フラッシュ１に対してデータを消去する。なお、ＲＥＳＥＴ制御レジスタおよびデータ消去部９０は、特許請求の範囲に記載の「データ消去手段」に対応する。
【００５２】
ＦＩＦＯ１００は、First-In  First-Outのバッファである。本発明におけるＦＩＦＯ１００は、データ転送の速度の違いを吸収するなどの目的で備えられている。なお、ＦＩＦＯ１００も独自のカウンタを備えるが、本発明のライトカウント制御部５０やリードカウント制御部６０が備えるカウンタとは異なる趣旨のものである。
【００５３】
［実施例１に係るデータ転送制御装置による処理の手順］
次に、図５〜図９を用いて、実施例１に係るデータ転送制御装置による処理の手順を説明する。図５は、実施例１におけるデータ転送処理手順およびカウント処理手順を示すフローチャートであり、図６は、実施例１における判定処理手順を示すフローチャートであり、図７は、実施例１における選択処理手順を示すフローチャートであり、図８は、実施例１におけるデータ充填処理手順を示すフローチャートであり、図９は、実施例１における継続時間設定処理手順を示すフローチャートである。
【００５４】
［データ転送処理手順およびカウント処理手順］
まず、データ転送制御装置１０は、制御部２０のＦＩＦＯ追加レジスタに、セクタ数を設定する（ステップＳ５０１）。例えば、データ転送制御装置１０は、制御部２０のＦＩＦＯ追加レジスタに、セクタ数「２」を設定する。
【００５５】
次に、データ転送制御装置１０は、データ転送部／一括データ転送部４０において、データ転送部によるデータ転送を開始する（ステップＳ５０２）。具体的には、データ転送制御装置１０は、データ転送部／一括データ転送部４０において、バッファ３０とコンパクト・フラッシュ１との間でデータ転送を行うことと並行して、制御部２０とバッファ３０との間でデータ転送を行うデータ転送を開始する。
【００５６】
続いて、データ転送制御装置１０は、ライトデータカウント部５１において、バッファ３０におけるコンパクト・フラッシュ１に向けたデータの出力の回数をカウントする（ステップＳ５０３）。例えば、データ転送制御装置１０は、ライトデータカウント部５１において、データの出力の回数を、「２５６」からカウントダウンすることでカウントする。
【００５７】
そして、データ転送制御装置１０は、セクタカウント部５２において、１セクタ分のデータがコンパクト・フラッシュ１に向けて出力されたか否かを判定する（ステップＳ５０４）。具体的には、データ転送制御装置１０は、セクタカウント部５２において、ライトデータカウント部５１においてカウントされた回数が、１セクタを転送ビット数で除算した数（実施例１において、「２５６」）分カウントしたことを示したか否かを判定する。
【００５８】
判定の結果、１セクタ分のデータが出力されたことをカウントしていない場合には（ステップＳ５０４否定）、データ転送制御装置１０は、セクタカウント部５２において、１セクタ分のデータがコンパクト・フラッシュ１に向けて出力されたか否かを判定する処理に戻る。一方、判定の結果、１セクタ分のデータが出力されたことをカウントした場合には（ステップＳ５０４肯定）、データ転送制御装置１０は、セクタカウント部５２において、出力されたセクタ数をカウントする（ステップＳ５０５）。
【００５９】
［判定処理手順］
まず、データ転送制御装置１０は、判定部７０において、「コンパクト・フラッシュ１においてバッファ３０から入力されたセクタ数」を受け付けたか否かを判定する（ステップＳ６０１）。
【００６０】
受け付けていない場合には（ステップＳ６０１否定）、データ転送制御装置１０は、判定部７０において、「コンパクト・フラッシュ１においてバッファ３０から入力されたセクタ数」を受け付けたか否かを判定する処理に戻る。一方、受け付けた場合には（ステップＳ６０１肯定）、データ転送制御装置１０は、判定部７０において、セクタカウント部５２においてカウントされたセクタ数と、「コンパクト・フラッシュ１においてバッファ３０から入力されたセクタ数」とを比較する（ステップＳ６０２）。
【００６１】
続いて、データ転送制御装置１０は、判定部７０において、比較の結果が一致したか否かを判定する（ステップＳ６０３）。一致した場合には（ステップＳ６０３肯定）、データ転送制御装置１０は、判定部７０において、データ転送が正常に行われたことを判定する（ステップＳ６０４）。一方、一致しなかった場合には（ステップＳ６０３否定）、データ転送制御装置１０は、判定部７０において、データ転送が正常に行われなかったことを判定する（ステップＳ６０５）。
【００６２】
［選択処理手順］
まず、データ転送制御装置１０は、選択部８０において、選択を受け付けたか否かを判定する（ステップＳ７０１）。選択を受け付けていない場合には（ステップＳ７０１否定）、データ転送制御装置１０は、選択部８０において、選択を受け付けたか否かを判定する処理に戻る。一方、選択を受け付けた場合には（ステップＳ７０１肯定）、データ転送制御装置１０は、選択部８０において、選択されたデータ転送がデータ転送部によるデータ転送か否かを判定する（ステップＳ７０２）。
【００６３】
判定の結果、データ転送部によるデータ転送の場合には（ステップＳ７０２肯定）、データ転送制御装置１０は、起動制御レジスタにビットをセットし（ステップＳ７０３）、データ転送部によるデータ転送を開始する（ステップＳ７０４）。
【００６４】
一方、データ転送部によるデータ転送ではない場合には（ステップＳ７０２否定）、データ転送制御装置１０は、一括データ転送部によるデータ転送を開始し（ステップＳ７０５）、次に、起動制御レジスタにビットをセットする（ステップＳ７０６）。
【００６５】
［データ充填処理手順］
まず、データ転送制御装置１０は、データパディング部４１において、制御部２０とコンパクト・フラッシュ１との間で転送するデータが終了したか否かを判定する（ステップＳ８０１）。判定の結果、転送するデータが終了したと判定されていない場合には（ステップＳ８０１否定）、データ転送制御装置１０は、データパディング部４１において、制御部２０とコンパクト・フラッシュ１との間で転送するデータが終了したか否かを判定する処理に戻る。
【００６６】
一方、判定の結果、転送するデータが終了したと判定する場合には（ステップＳ８０１肯定）、データ転送制御装置１０は、データパディング部４１において、ライトデータカウント部５１によってカウントされた回数が、１セクタ分に満たないか否かを判定する（ステップＳ８０２）。
【００６７】
判定の結果、１セクタ分に満たないと判定された場合には（ステップＳ８０２肯定）、データ転送制御装置１０は、データパディング部４１において、１セクタを充填する回数分のデータを出力する（ステップＳ８０３）。一方、判定の結果、１セクタ分を満たすと判定された場合には（ステップＳ８０２否定）、データ転送制御装置１０は、データパディング部４１における処理を終了する。
【００６８】
［継続時間設定処理手順］
まず、データ転送制御装置１０は、制御部２０の保護用リセット遅延タイマ設定レジスタにおいて、継続時間の設定を受け付けたか否かを判定する（ステップＳ９０１）。継続時間の設定を受け付けていない場合には（ステップＳ９０１否定）、データ転送制御装置１０は、制御部２０の保護用リセット遅延タイマ設定レジスタにおいて、継続時間の設定を受け付ける処理に戻る。
【００６９】
一方、継続時間の設定を受け付けた場合には（ステップＳ９０１肯定）、データ転送制御装置１０は、データ転送部／一括データ転送部４０によるデータ転送を開始する（ステップＳ９０２）。
【００７０】
次に、データ転送制御装置１０は、データ消去部９０において、コンパクト・フラッシュ１に管理されたデータを消去する指示を受け付けたか否かを判定する（ステップＳ９０３）。データを消去する指示を受け付けていない場合には（ステップＳ９０３否定）、データ転送制御装置１０は、データ消去部９０において、コンパクト・フラッシュ１に管理されたデータを消去する指示を受け付けたか否かを判定する処理に戻る。
【００７１】
一方、データを消去する指示を受け付けた場合には（ステップＳ９０３肯定）、データ転送制御装置１０は、継続時間を経過したか否かを判定する（ステップＳ９０４）。継続時間を経過していないと判定した場合には（ステップＳ９０４否定）、データ転送制御装置１０は、継続時間を経過したか否かを判定する処理に戻る。
【００７２】
一方、継続時間を経過したと判定した場合には（ステップＳ９０４肯定）、データ転送制御装置１０は、データ消去部９０において、コンパクト・フラッシュ１に管理されたデータを消去する（ステップＳ９０５）。
【００７３】
［実施例１の効果］
上記してきたように、実施例１によれば、所定のセクタ数のデータを所定のセクタ数単位でデータを管理する記憶媒体との間でデータ転送する制御部を有し、制御部と記憶媒体との間でバッファを介して行われるデータ転送を制御するデータ転送制御装置であって、バッファは、記憶媒体との間および制御部との間で電気的に同一のタイミングで転送されるデータのビット数を示す転送ビット数の整数倍の容量を有するものであって、バッファと記憶媒体との間で転送ビット数単位でデータ転送を行うことと並行して、制御部とバッファとの間で転送ビット数単位でデータ転送を行い、バッファにおける記憶媒体に向けたデータの出力および／または記憶媒体からのデータの入力の回数をカウントし、カウントされた回数が、１セクタを転送ビット数で除算した数分カウントしたことを示した場合に、１セクタ分のデータが記憶媒体に向けて出力されたことおよび／または記憶媒体から入力されたことをカウントし、出力されたセクタ数および／または入力されたセクタ数をカウントし、カウントされたセクタ数と、記憶媒体においてバッファから入力されたセクタ数および／またはバッファに向けて出力されたセクタ数とを比較して、データ転送が正常に行われたか否かを判定するので、データ転送の処理能力の低下を回避しながら、バッファの容量を最小アクセス単位以下（１セクタ以下）に抑えることが可能になる。
【００７４】
また、実施例１によれば、バッファにおける記憶媒体に向けたデータの出力および／または記憶媒体からのデータの入力の回数をカウントし、出力されたセクタ数および／または入力されたセクタ数をカウントすることから、任意のブロック数やセクタ数を指定して、制御部と記憶媒体との間のデータ転送をすることが可能になる。
【００７５】
また、実施例１によれば、バッファは、１セクタ分の容量を有するものであって、制御部とバッファとの間で１セクタ分のデータ転送が行われた後に、制御部とバッファとの間でこの転送された１セクタ分のデータを転送するデータ転送、および／または、バッファと記憶媒体との間で１セクタ分のデータ転送が行われた後に、制御部とバッファとの間でこの転送された１セクタ分のデータを転送するデータ転送を行う一括データ転送手段を備え、データ転送を行うに際し、データ転送手段によるデータ転送、または、一括データ転送手段によるデータ転送のいずれか一つを選択するので、五月雨方式のデータ転送（バッファと記憶媒体との間で転送ビット数単位でデータ転送を行うことと並行して、制御部とバッファとの間で転送ビット数単位でデータ転送を行う）と一括データ転送とのいずれかを選択することが可能になる。
【００７６】
また、実施例１によれば、制御部と記憶媒体との間で転送するデータが終了した際に、カウントされた回数が１セクタ分に満たない場合には、１セクタを充填する回数分の所定のデータを出力および／または入力するので、記憶媒体におけるビジー状態（スタック）を回避することが可能になる。
【００７７】
すなわち、記憶媒体においては、バッファから入力されたセクタ数やバッファに向けて出力されたセクタ数をカウントしているので、１セクタに満たないデータが入力されたり出力された場合にビジー状態（スタック）になるおそれがあるが、１セクタを充填する回数分のデータを出力または入力する（パディングする）ことで、ビジー状態を回避することが可能になる。
【００７８】
また、実施例１によれば、記憶媒体に管理されたデータを消去する指示を受け付けてデータを消去する手段と、データ転送を継続する所定の時間を設定する手段とを備え、所定の時間が設定された場合には、指示を受け付けた場合であっても、所定の時間はデータ転送を継続するので、記憶媒体に管理されたデータがライト処理時等に破壊されることを回避することが可能になる。
【実施例２】
【００７９】
ところで、これまで実施例１として、データ転送制御装置がライト処理のデータ転送を制御する事例について説明したが、本発明はこれに限られるものではなく、データ転送制御装置がリード処理のデータ転送を制御する事例についても、本発明を同様に適用することができる。そこで、以下では、実施例２として、データ転送制御装置がリード処理のデータ転送を制御する事例について、図１０および図１１を用いて説明する。図１０は、実施例２におけるデータ転送処理手順およびカウント処理手順を示すフローチャートであり、図１１は、実施例２における判定処理手順を示すフローチャートである。
【００８０】
［データ転送処理手順およびカウント処理手順］
まず、データ転送制御装置１０は、実施例１と同様、制御部２０のＦＩＦＯ追加レジスタに、セクタ数を設定し（ステップＳ１００１）、データ転送部／一括データ転送部４０において、データ転送部によるデータ転送を開始する（ステップＳ１００２）。
【００８１】
続いて、データ転送制御装置１０は、リードデータカウント部６１において、バッファ３０におけるコンパクト・フラッシュ１からのデータの入力の回数をカウントする（ステップＳ１００３）。例えば、データ転送制御装置１０は、リードデータカウント部６１において、データの入力の回数を、「２５６」からカウントダウンすることでカウントする。
【００８２】
そして、データ転送制御装置１０は、セクタカウント部６２において、１セクタ分のデータがコンパクト・フラッシュ１から入力されたか否かを判定する（ステップＳ１００４）。具体的には、データ転送制御装置１０は、セクタカウント部６２において、リードデータカウント部６１においてカウントされた回数が、１セクタを転送ビット数で除算した数（実施例２において、「２５６」）分カウントしたことを示したか否かを判定する。
【００８３】
判定の結果、１セクタ分のデータが入力されたことをカウントしていない場合には（ステップＳ１００４否定）、データ転送制御装置１０は、セクタカウント部６２において、１セクタ分のデータがコンパクト・フラッシュ１から入力されたか否かを判定する処理に戻る。一方、判定の結果、１セクタ分のデータが入力されたことをカウントした場合には（ステップＳ１００４肯定）、データ転送制御装置１０は、セクタカウント部６２において、入力されたセクタ数をカウントする（ステップＳ１００５）。
【００８４】
［判定処理手順］
まず、データ転送制御装置１０は、判定部７０において、「コンパクト・フラッシュ１においてバッファ３０に向けて出力されたセクタ数」を受け付けたか否かを判定する（ステップＳ１１０１）。
【００８５】
受け付けていない場合には（ステップＳ１１０１否定）、データ転送制御装置１０は、判定部７０において、「コンパクト・フラッシュ１においてバッファ３０に向けて出力されたセクタ数」を受け付けたか否かを判定する処理に戻る。一方、受け付けた場合には（ステップＳ１１０１肯定）、データ転送制御装置１０は、判定部７０において、セクタカウント部６２においてカウントされたセクタ数と、「コンパクト・フラッシュ１においてバッファ３０に向けて出力されたセクタ数」とを比較する（ステップＳ１１０２）。
【００８６】
続いて、データ転送制御装置１０は、判定部７０において、比較の結果が一致したか否かを判定する（ステップＳ１１０３）。一致した場合には（ステップＳ１１０３肯定）、データ転送制御装置１０は、判定部７０において、データ転送が正常に行われたことを判定する（ステップＳ１１０４）。一方、一致しなかった場合には（ステップＳ１１０３否定）、データ転送制御装置１０は、判定部７０において、データ転送が正常に行われなかったことを判定する（ステップＳ１１０５）。
【実施例３】
【００８７】
ところで、これまで実施例１および実施例２に係るデータ転送制御装置について説明したが、本発明は上記した実施例以外にも種々の異なる形態にて実施されてよいものである。そこで、以下では、実施例３に係るデータ転送制御装置として、異なる実施例を説明する。
【００８８】
上記の実施例では、バッファが１セクタ分の容量を有するものであって、データ転送制御装置が選択部を有し、五月雨方式のデータ転送と一括データ転送とのいずれかを選択する手法について説明したが、本発明はこれに限られるものではなく、バッファが１セクタ分より少ない容量を有するものであって、データ転送制御装置が選択部を有せず、五月雨方式のデータ転送のみを行う手法にも、本発明を同様に適用することができる。
【００８９】
また、上記の実施例では、データ転送制御装置が、制御部と記憶媒体との間で転送するデータが終了した際に、カウントされた回数が１セクタ分に満たない場合には、１セクタを充填する回数分の所定のデータを出力や入力するデータ充填部を備える手法を説明したが、本発明はこれに限られるものではなく、データ転送制御装置が、データ充填部を備えない手法にも、本発明を同様に適用することができる。なお、この場合には、データ転送制御装置は、記憶媒体におけるビジー状態（スタック）を回避するその他の対策を講じることになる。
【００９０】
また、上記の実施例では、データ転送制御装置が、データ消去部と継続時間設定部とを備え、所定の時間が設定された場合には、消去（リセット）の指示を受け付けた場合であっても、所定の時間はデータ転送を継続する手法を説明したが、本発明はこれに限られるものではなく、データ転送制御装置が、データ消去部と継続時間設定部とを備えない手法にも、本発明を同様に適用することができる。なお、この場合には、記憶媒体に管理されたデータがライト処理時等に破壊されることを回避するその他の対策を講じることになる。
【００９１】
また、上記の実施例では、所定のセクタ数（例えば、２セクタなど）のデータ転送が終了した後に、カウントされたセクタ数「２」と記憶媒体において入力（出力）されたセクタ数「２」とを比較して、データ転送の正常性を判定する手法について説明したが、本発明はこれに限られるものではなく、正常性の判定は、１セクタごとに行う手法（例えば、１セクタのデータ転送が終了した後に、カウントされたセクタ数「１」と記憶媒体において入力されたセクタ数「１」とを比較して、データ転送の正常性を判定するなど）にも、本発明を同様に適用することができる。
【００９２】
［システム構成等］
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる（例えば、記憶媒体に管理されたデータを消去する指示を定期的にデータ転送制御装置に送信するなど）。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００９３】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示（図２）の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００９４】
なお、本実施例で説明したデータ転送制御方法（図５〜図１１）は、マイクロ・コントロール・ユニットで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【産業上の利用可能性】
【００９５】
以上のように、本発明に係るデータ転送制御装置、データ転送制御プログラムおよびデータ転送制御方法は、所定のセクタ数のデータを所定のセクタ数単位でデータを管理する記憶媒体との間でデータ転送する制御部を有し、制御部と記憶媒体との間でバッファを介して行われるデータ転送を制御することに有用であり、特に、データ転送の処理能力の低下を回避しながら、バッファの容量を最小アクセス単位以下に抑えることに適する。
【図面の簡単な説明】
【００９６】
【図１】実施例１に係るデータ転送制御装置の概要および特徴を説明するための図である。
【図２】実施例１に係るデータ転送制御装置の構成を示すブロック図である。
【図３】レジスタを説明するための図である。
【図４】レジスタを説明するための図である。
【図５】実施例１におけるデータ転送処理手順およびカウント処理手順を示すフローチャートである。
【図６】実施例１における判定処理手順を示すフローチャートである。
【図７】実施例１における選択処理手順を示すフローチャートである。
【図８】実施例１におけるデータ充填処理手順を示すフローチャートである。
【図９】実施例１における継続時間設定処理手順を示すフローチャートである。
【図１０】実施例２におけるデータ転送処理手順およびカウント処理手順を示すフローチャートである。
【図１１】実施例２における判定処理手順を示すフローチャートである。
【図１２】従来技術を説明するための図である。
【図１３】従来技術を説明するための図である。
【符号の説明】
【００９７】
１  コンパクト・フラッシュ
１０  データ転送制御装置
２０  制御部
２１  演算処理部
２２  レジスタ部
３０  バッファ（データ格納用レジスタ）
４０  データ転送部／一括データ転送部
４１  データパディング部
５０  ライトカウント制御部
５１  ライトデータカウント部
５２  セクタカウント部
６０  リードカウント制御部
６１  リードデータカウント部
６２  セクタカウント部
７０  判定部
８０  選択部
９０  データ消去部
１００  ＦＩＦＯ
【図１】
2008146335.tif 000003
【図２】
2008146335.tif 000004
【図３】
2008146335.tif 000005
【図４】
2008146335.tif 000006
【図５】
2008146335.tif 000007
【図６】
2008146335.tif 000008
【図７】
2008146335.tif 000009
【図８】
2008146335.tif 000010
【図９】
2008146335.tif 000011
【図１０】
2008146335.tif 000012
【図１１】
2008146335.tif 000013
【図１２】
2008146335.tif 000014
【図１３】
2008146335.tif 000015