(57)【要約】【課題】ＩＤＥデバイスとのＤＭＡ転送の際に生じる転送データの欠落の防止。【解決手段】電子機器２０において、デバイスコントローラ３０は、ホスト装置１０からの要求コマンドに応じたコマンドをＩＤＥデバイス４０に対して発行すると、コマンドテーブル３３２を参照し、発行したコマンドに対応する転送モード（ＤＭＡ／ＰＩＯ転送モード）で、ＩＤＥデバイス４０との間のデータ転送を行う。【選択図】図１
2009187337.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも記録媒体からのデータ読み出しを実行するデバイスを内蔵し、ＤＭＡ転送モード及びＰＩＯ転送モードのうちの何れかの転送モードで前記デバイスからデータ転送されてきたデータを、所定の標準化規格で規格化された外部バスに接続されたホスト装置に出力する電子機器の制御回路によるデバイス制御方法であって、
前記ホスト装置から要求命令を受け付けることと、
前記デバイスに、前記要求命令に応じたデータ転送のコマンドを発行することと、
コマンド毎に、当該コマンドに対応する転送モードとして、当該コマンドに応じた前記デバイスからの転送データのデータ長が固定且つ偶数バイトであるコマンドにはＤＭＡ転送モードが、それ以外の場合にはＰＩＯ転送モードが予め対応づけられており、当該対応づけに基づいて、前記発行コマンドに対応する転送モードを設定することと、
前記設定された転送モードで前記発行コマンドに従ったデータ転送を行うことと、
を含むデバイス制御方法。
【請求項２】
少なくとも記録媒体からのデータ読み出しを実行するデバイスを内蔵し、ＤＭＡ転送モード及びＰＩＯ転送モードのうちの何れかの転送モードで前記デバイスからデータ転送されてきたデータを、所定の標準化規格で規格化された外部バスに接続されたホスト装置に出力する電子機器の制御回路であるコンピュータに、請求項１に記載のデバイス制御方法を実行させるためのプログラム。
【請求項３】
少なくとも記録媒体からのデータ読み出しを実行するデバイスを内蔵し、ＤＭＡ転送モード及びＰＩＯ転送モードのうちの何れかの転送モードで前記デバイスからデータ転送されてきたデータを、所定の標準化規格で規格化された外部バスに接続されたホスト装置に出力する電子機器の制御回路であって、
前記ホスト装置から要求命令を受け付ける要求命令受付部と、
前記デバイスに、前記要求命令受付部により受け付けられた要求命令に応じたデータ転送のコマンドを発行するコマンド発行部と、
コマンド毎に、当該コマンドに対応する転送モードとして、当該コマンドに応じた前記デバイスからの転送データのデータ長が固定且つ偶数バイトであるコマンドにはＤＭＡ転送モードが、それ以外の場合にはＰＩＯ転送モードが予め対応づけられており、当該対応づけに基づいて、前記発行コマンドに対応する転送モードを設定する転送モード設定部と、
前記転送モード設定部により設定された転送モードで前記発行コマンドに従ったデータ転送を行う転送制御部と、
を備えた制御回路。
【請求項４】
少なくとも記録媒体からのデータ読み出しを実行するデバイスと、前記デバイスを制御する請求項３に記載の制御回路とを備え、所定の標準化規格で規格化された外部バスでホスト装置と接続される電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記録媒体からのデータ読み出しを実行するデバイスに対するデバイス制御方法等に関する。
【背景技術】
【０００２】
ＨＤ（HardDisk）等の記録媒体からデータの読み出し／書き込みを行うドライブ等のデバイスのデータ転送を制御するデバイスコントローラには、データ転送方式として、ＤＭＡ転送方式及びＰＩＯ転送方式を併用したものがある（例えば、特許文献１参照）。
【特許文献１】特開２００５−２４２４１１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ＤＭＡ転送では、ＣＰＵとは別個の専用ＬＳＩであるＤＭＡコントローラによってデータ転送が行われるため、ＣＰＵが転送制御を行うＰＩＯ転送と比較して、ＣＰＵの処理負担が軽減されるとともに、高速なデータ転送が可能となる。
【０００４】
ところで、ＤＭＡ転送では、データ転送用メモリとデバイスとの間のデータ転送は、所定のデータ長（例えば、２バイト）を単位として行われる。このため、デバイスから転送されてくるデータ長がこの単位データ長の倍数とならない場合、例えば最後の１バイトといった半端なデータがメモリに格納されず、転送データの一部が欠落することがある。
【０００５】
また、ＤＭＡコントローラは、ＣＰＵから指定された転送データ長でデータ転送を行うため、転送データ長を予めＤＭＡコントローラに指定する必要がある。つまり、ホスト装置から要求されるコマンドに応じたデータ転送を行う場合、コマンドとともに要求されたデータ長を転送データ長としてＤＭＡコントローラに指定してデータ転送を行うこととなる、しかし、ホスト装置から要求されるコマンドには、当該コマンドに応答してデバイスから転送されてくるデータのデータ長（実データ長）が、ホスト装置から要求されたデータ長（要求データ長）と一致しないものがある。この場合、次のような不都合が生じる。すなわち、実データ長が要求データ長より小さい場合には、転送されてくるデータ長が指定された転送データ長に達しないためにデータ転送が完了せず、また逆に、実データ長が要求データ長より大きい場合には、転送されてきたデータ長が指定された転送データ長に達した時点でデータ転送が終了されるために、転送データの一部が欠落する。
【０００６】
本発明は、上記事情に鑑みてなされたものであり、ＤＭＡ転送の際に生じる転送データの欠落を防止することを目的としている。
【課題を解決するための手段】
【０００７】
上記課題を解決するための第１の発明は、少なくとも記録媒体からのデータ読み出しを実行するデバイスを内蔵し、ＤＭＡ転送モード及びＰＩＯ転送モードのうちの何れかの転送モードで前記デバイスからデータ転送されてきたデータを、所定の標準化規格で規格化された外部バスに接続されたホスト装置に出力する電子機器の制御回路によるデバイス制御方法であって、前記ホスト装置から要求命令を受け付けることと、前記デバイスに、前記要求命令に応じたデータ転送のコマンドを発行することと、コマンド毎に、当該コマンドに対応する転送モードとして、当該コマンドに応じた前記デバイスからの転送データのデータ長が固定且つ偶数バイトであるコマンドにはＤＭＡ転送モードが、それ以外の場合にはＰＩＯ転送モードが予め対応づけられており、当該対応づけに基づいて、前記発行コマンドに対応する転送モードを設定することと、前記設定された転送モードで前記発行コマンドに従ったデータ転送を行うこととを含むデバイス制御方法である。
【０００８】
また、第２の発明は、少なくとも記録媒体からのデータ読み出しを実行するデバイスを内蔵し、ＤＭＡ転送モード及びＰＩＯ転送モードのうちの何れかの転送モードで前記デバイスからデータ転送されてきたデータを、所定の標準化規格で規格化された外部バスに接続されたホスト装置に出力する電子機器の制御回路であるコンピュータに、第１の発明のデバイス制御方法を実行させるためのプログラムである。
【０００９】
また、第３の発明は、少なくとも記録媒体からのデータ読み出しを実行するデバイスを内蔵し、ＤＭＡ転送モード及びＰＩＯ転送モードのうちの何れかの転送モードで前記デバイスからデータ転送されてきたデータを、所定の標準化規格で規格化された外部バスに接続されたホスト装置に出力する電子機器の制御回路であって、前記ホスト装置から要求命令を受け付ける要求命令受付部と、前記デバイスに、前記要求命令受付部により受け付けられた要求命令に応じたデータ転送のコマンドを発行するコマンド発行部と、コマンド毎に、当該コマンドに対応する転送モードとして、当該コマンドに応じた前記デバイスからの転送データのデータ長が固定且つ偶数バイトであるコマンドにはＤＭＡ転送モードが、それ以外の場合にはＰＩＯ転送モードが予め対応づけられており、当該対応づけに基づいて、前記発行コマンドに対応する転送モードを設定する転送モード設定部と、前記転送モード設定部により設定された転送モードで前記発行コマンドに従ったデータ転送を行う転送制御部とを備えた制御回路である。
【００１０】
また、第４の発明は、少なくとも記録媒体からのデータ読み出しを実行するデバイスと、前記デバイスを制御する第３の発明の制御回路とを備え、所定の標準化規格で規格化された外部バスでホスト装置と接続される電子機器である。
【００１１】
この第１〜第４の発明によれば、記録媒体からのデータ読み出しを実行するデバイスを内蔵し、デバイスからデータ転送されてきたデータをホスト装置に出力する電子機器の制御回路において、ホスト装置からの要求命令に応じたデータ転送のコマンドが発行され、この発行コマンドに応じたデバイスからの転送データのデータ長が必ず偶数バイトになる場合には転送モードとしてＤＭＡ転送モードが設定され、それ以外の場合には転送モードとしてＰＩＯ転送モードが設定され、設定された転送モードで発行コマンドに従ったデータ転送が行われる。ＤＭＡ転送モードでは、所定単位（具体的には、２バイト）でデータ転送が行われるため、デバイスからの転送データのデータ長がこの所定単位の倍数とならない場合、ホスト装置に出力される転送データに欠落が生じるが、本発明のように、転送データのデータ長が偶数バイトになる場合にはＤＭＡ転送モードでデータ転送を行い、それ以外の場合にはＰＩＯ転送モードでデータ転送を行うことで、このような転送データの欠落が防止される。
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照して本発明の好適な実施形態を説明する。なお、以下では、デバイスとしてＨＤＤを有する電子機器を説明するが、本発明の適用可能な実施形態がこれに限定されるものではない。
【００１３】
［構成］
図１は、本実施形態における電子機器２０の構成図である。同図によれば、電子機器２０は、ＩＥＥＥ１３９４規格に準拠したバス１によって、ＰＣであるホスト装置１０と接続されている。なお、ホスト装置１０は、ＰＣに限らず、携帯情報端末や携帯電話機等の他の電子機器であっても良い。また、バス１は、ＩＥＥＥ１３９４規格に準拠したバスに限らず、ＵＳＢ規格に準拠したバスであっても良い。
【００１４】
電子機器２０は、制御回路であるデバイスコントローラ３０と、ＨＤＤであるＩＤＥデバイス４０とを有し、デバイスコントローラ３０とＩＤＥデバイス４０とは、ＡＴＡ／ＡＴＡＰＩ規格に準拠したバス２によって接続されている。なお、電子機器２０が複数台のＩＤＥデバイス４０を有することとしても良い。この場合、デバイスコントローラ３０とＩＤＥデバイス４０それぞれとがバス２によって接続され、ホスト装置１０からは全体として１台のＨＤＤとして認識される。また、ＩＤＥデバイス４０は、ＡＴＡ／ＡＴＡＰＩインターフェースに接続可能なデバイスであれば良く、光ディスクドライブ等のハードディスク以外のストレージデバイスであっても良い。
【００１５】
デバイスコントローラ３０は、マイクロコンピュータで実現され、ホスト装置１０とＩＤＥデバイス４０との間のデータ転送を制御する。また、このデバイスコントローラ３０は、ＣＰＵ３１と、ＤＭＡコントローラ３２と、ＲＯＭ３３と、ＲＡＭ３４とを有する。
【００１６】
ＣＰＵ３１は、デバイスコントローラ３０の全体制御を含む各種制御処理を行う。また、ＣＰＵ３１は、ホスト装置１０からコマンド要求が入力されると、転送制御プログラム３３１に従った転送制御処理を行う。この転送制御処理では、ホスト装置１０から要求されたコマンドを解析し、コマンドパケットを生成してＩＤＥデバイス４０に出力するパケットコマンドの発行を行う。次いで、コマンドテーブル３３２を参照し、このコマンドの転送モードを判断する。
【００１７】
図２は、コマンドテーブル３３２のデータ構成の一例を示す図である。同図によれば、コマンドテーブル３３２は、コマンド３３２ａそれぞれについて、転送モード３３２ｂと、データの転送方向３３２ｃとを対応付けて格納している。転送方向３３２ｃは、ホスト装置１０から入力されたデータをＩＤＥデバイス４０に書き込む方向（Ｈ→Ｄ）、或いはＩＤＥデバイス４０からデータを読み出してホスト装置１０に出力する方向（Ｈ←Ｄ）である。ここで、各コマンドの転送モードは、コマンドに応じてＩＤＥデバイス４０に転送されるデータ或いはＩＤＥデバイス４０から転送されてくるデータ（以下、双方を含めて「転送データ」という）のデータ長に応じて定められる。すなわち、転送データ長がＩＤＥデバイス４０によらずに固定であり、且つ転送データ長が偶数バイトであるコマンドについては、ＤＭＡ転送モードが設定され、それ以外のコマンドについては、ＰＩＯ転送モードが設定されている。これは、ＤＭＡ転送方式によるデータ転送の際には、ＤＭＡコントローラ３２に転送データ長を指定する必要があるとともに、ＤＭＡコントローラ３２によるデータバッファ３４１に対するデータの読み出し／書き込みは２バイトを単位として行われるためである。
【００１８】
ＣＰＵ３１は、判断した転送モードが「ＤＭＡ転送モード」ならば、転送モードをＤＭＡ転送モードに設定する。そして、ホスト装置１０からコマンドとともに要求されたデータ長（要求データ長）を転送データ長として、ＤＭＡコントローラ３２にデータ転送を行わせる。また、判断した転送モードが「ＰＩＯ転送モード」ならば、転送モードをＰＩＯ転送モードに設定する。次いで、ＩＤＥデバイス４０のＢｙｔｅＣｏｕｎｔレジスタの設定値を読み出し、転送データ長として設定する。この「ＢｙｔｅＣｏｕｎｔレジスタ」には、発行したコマンドに対する応答データのデータ長が設定されている。その後、設定した転送データ長のデータ転送を、ＰＩＯ転送方式で行う。
【００１９】
ＤＭＡコントローラ３２は、ＬＳＩで実現され、データバッファ３４１とＩＤＥデバイス４０との間のデータ転送を制御する。具体的には、ＩＤＥデバイス４０から転送されてきたデータをデータバッファ３４１に格納する読み出し処理、或いは、データバッファ３４１に格納されているデータをＩＤＥデバイス４０に転送する書き込み処理を行う。またこのとき、ＩＤＥデバイス４０とのデータ転送をＣＰＵ３１から指定された転送データ長で行うとともに、データバッファ３４１からのデータ読み出し／書き込みは、所定の単位（具体的には、２バイト単位）で行う。
【００２０】
ＲＯＭ３３は、ＣＰＵ３１がデバイスコントローラ３０を統括制御するためのシステムプログラムや、転送制御処理を含む各種処理を実現するためのプログラムやデータを記憶する。本実施形態では、ＲＯＭ３３には、転送制御プログラム３３１と、コマンドテーブル３３２とが記憶される。ＲＡＭ３４は、ＣＰＵの作業領域として用いられるとともに、転送データを一時的に格納するデータバッファ３４１を有する。
【００２１】
［処理の流れ］
図３は、ＣＰＵ３１が行う転送制御処理の流れを説明するためのフローチャートである。同図によれば、ＣＰＵ３１は、先ず、ホスト装置１０からのコマンド要求に応じたパケットコマンドを生成し、ＩＤＥデバイス４０に出力するパケットコマンドの発行を行う（ステップＳ１）。次いで、コマンドテーブル３３２を参照して、当該コマンドに定められている転送モードを判断する（ステップＳ３）。
【００２２】
転送モードを「ＰＩＯ転送モード」と判断したならば（ステップＳ５：「ＰＩＯ」）、データ転送モードを「ＰＩＯ転送モード」に設定する（ステップＳ７）。そして、ＩＤＥデバイス４０のＢｙｔｅＣｏｕｎｔレジスタの設定値を読み出し、転送データ長として設定する（ステップＳ９）。そして、設定した転送データ長のデータ転送を、ＩＤＥデバイス４０との間で行う（ステップＳ１１）。
【００２３】
一方、転送モードを「ＤＭＡ転送モード」と判断したならば（ステップＳ５：「ＤＭＡ」）、データ転送モードを「ＤＭＡ転送モード」に設定し（ステップＳ１３）、ホスト装置１０からの要求データ長を転送データ長として設定する（ステップＳ１５）。そして、ＤＭＡコントローラ３２に、ＩＤＥデバイス４０とのデータ転送を、設定した転送データ長で行わせる（ステップＳ１７）。以上の処理を行うと、転送制御処理を終了する。
【００２４】
［作用・効果］
このように、本発明によれば、電子機器２０において、デバイスコントローラ３０は、ホスト装置１０からコマンド要求を受けると、この要求に応じたパケットコマンドをＩＤＥデバイス４０に対して発行するとともに、コマンドそれぞれに転送モードが対応付けられたコマンドテーブル３３２を参照し、発行したコマンドに対応する転送モード（ＤＭＡ／ＰＩＯ転送モード）でＩＤＥデバイス４０との間のデータ転送を行う。コマンドテーブル３３２では、転送データ長が固定であり且つ転送データ長が偶数バイトであるコマンドについては、ＤＭＡ転送モードが設定され、それ以外のコマンドについては、ＰＩＯ転送モードが設定されている。これは、ＤＭＡ転送方式によるデータ転送の際には、ＤＭＡコントローラ３２に転送データ長を指定する必要があるとともに、ＤＭＡコントローラ３２によるデータバッファ３４１に対するデータの読み出し／書き込みは２バイトを単位として行われるためである。これにより、ホスト装置１０とＩＤＥデバイス４０との間での転送データの欠落が防止される。
【図面の簡単な説明】
【００２５】
【図１】電子機器の構成図。
【図２】コマンドテーブルのデータ構成例。
【図３】転送制御処理のフローチャート。
【符号の説明】
【００２６】
１０  ホスト装置、２０  電子機器、３０  デバイスコントローラ、３１  ＣＰＵ、３３  ＲＯＭ、３３１  転送制御プログラム、３３２  コマンドテーブル、３４  ＲＡＭ、３４１  データバッファ、３２  ＤＭＡコントローラ、４０  ＩＤＥデバイス
【図１】
2009187337.tif 000003
【図２】
2009187337.tif 000004
【図３】
2009187337.tif 000005