(57)【特許請求の範囲】
【請求項１】
上位ホスト自体の動作を制御する制御装置と、前記上位ホストに備えられた所定のデバイスの動作を制御するホストコントローラとを備え、
前記ホストコントローラが、前記デバイスから読み出したデータを一時的に保持するバッファメモリを備えると共に、前記制御装置の指示に基づいて前記デバイスからデータを前記バッファメモリに読み出す機能を備え、
前記制御装置が、前記バッファメモリに保持されたデータを読み出す機能と、前記デバイスが前記ホストコントローラにデータを転送した後に出力する割り込み処理を受け付ける機能とを備えたデータ転送制御装置において、
前記ホストコントローラが、当該ホストコントローラ内に備えられたバッファメモリに前記デバイスからあらかじめ設定された読み出し予定容量の一部を残して所定の単位量毎にデータを読み出すデータ読出制限機能と、前記バッファメモリ内のデータが前記制御装置に転送されることにより当該バッファメモリが空になったことを検出して前記デバイスから読み出し予定容量の残りの一部に相当するデータを前記バッファメモリに読み出す残余データ読出機能とを備えたことを特徴とするデータ転送制御装置。
【請求項２】
前記データ読出制限機能にて、前記デバイスに残す一部のデータの容量を、前記ホストコントローラが前記デバイスから読み出し最小単位量としたことを特徴とする請求項１記載のデータ転送制御装置。
【請求項３】
上位ホスト自体の動作を制御する制御装置と、前記上位ホストに備えられた所定のデバイスの動作を制御するホストコントローラとを備え、
前記ホストコントローラが、前記デバイスから読み出したデータを一時的に保持するバッファメモリを備えると共に、前記制御装置の指示に基づいて前記デバイスからデータを前記バッファメモリに読み出す機能と、読み出したデータの誤り検出データであるＣＲＣ値を前記デバイスに書き込む機能とを備え、
前記制御装置が、前記バッファメモリに保持されたデータを読み出す機能と、前記ＣＲＣ値を受け取った前記デバイスから出力される割り込み処理を受け付ける機能とを備えたデータ転送制御装置において、
前記ホストコントローラが、当該ホストコントローラ内に備えられたバッファメモリに前記デバイスからあらかじめ設定された読み出し予定容量の全部のデータを所定の単位量毎に読み出すデータ読出機能と、前記バッファメモリ内のデータが前記制御装置に転送されることにより当該バッファメモリが空になったことを検出して前記ＣＲＣ値を前記デバイスに対して書き込むＣＲＣ値書込機能を備えたことを特徴とするデータ転送制御装置。
【請求項４】
上位ホスト自体の動作を制御する制御装置が、所定のデバイスの動作を制御する前記上位ホストに備えられたホストコントローラ内のバッファメモリを介して前記デバイスから所定の容量のデータを読み出すと共に、前記デバイスが前記ホストコントローラにデータを転送した後に当該デバイスから発生する割り込み処理を受け付けるよう、データ転送を制御する方法であって、
前記ホストコントローラが前記バッファメモリに前記デバイスからあらかじめ設定された読み出し予定容量の一部を残して所定の単位量毎にデータを読み出すデータ読出制限工程と、前記制御装置が前記バッファメモリに一時的に保持されたデータを所定の単位量毎に読み出すデータ転送工程と、このデータ転送工程に並列して前記ホストコントローラが前記バッファメモリが空になったか否かを検出するバッファメモリ容量検出工程とを備え、
このバッファメモリ容量検出工程にて前記バッファメモリの容量が空になったことを検出したときに、前記ホストコントローラが前記デバイスから前記読出予定容量の残りの一部に相当するデータを前記バッファメモリに読み出す残余データ読出工程を備えたことを特徴とするデータ転送制御方法。
【請求項５】
前記データ読出工程にて、前記デバイスに残す一部のデータの容量を、読み出し最小単位量としたことを特徴とする請求項４記載のデータ転送制御方法。
【請求項６】
上位ホスト自体の動作を制御する制御装置が、所定のデバイスの動作を制御する前記上位ホストに備えられたホストコントローラ内のバッファメモリを介して前記デバイスから所定の容量のデータを読み出すと共に、前記ホストコントローラが前記デバイスに対して読み出しデータの転送における誤り検出データであるＣＲＣ値を書き込み、このＣＲＣ値を受け取った前記デバイスから出力される割り込み処理を前記制御装置が受け付けるよう、データ転送を制御する方法であって、
前記ホストコントローラが前記バッファメモリに前記デバイスからあらかじめ設定された読み出し予定容量の全てのデータを読み出す全データ読出工程と、前記制御装置が前記バッファメモリに一時的に保持されたデータを所定の単位量毎に読み出すデータ転送工程と、このデータ転送工程に並列して前記ホストコントローラが前記バッファメモリが空になったか否かを検出するバッファメモリ容量検出工程とを備え、
このバッファメモリ容量検出工程にて前記バッファメモリの容量が空になったことを検出したときに、前記ホストコントローラが前記ＣＲＣ値を前記デバイスに書き込むＣＲＣ値書込工程を備えたことを特徴とするデータ転送制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ転送制御装置及び方法にかかり、特に、上位ホストがハードディスクなどのデバイスからデータを読み出すと共に、当該デバイスからの割り込み信号を受け付けるよう、データ転送制御する装置及び方法に関する。
【０００２】
【従来の技術】
近年のデータ転送を行うインタフェースは、転送量の増加により高速化に対応した規格に移行している。これらのインタフェースを制御するホスト側では、かかるデータ転送をＣＰＵにより制御するが、データ転送の高速化によりホストで行っている転送制御処理の影響によるデータ転送スループット（コンピュータが単位時間内に処理できるジョブ（仕事）の量）の低下が無視できなくなってきた。
【０００３】
これを、図８乃至図１３を参照して説明する。図８乃至図１０は、従来例におけるデータ転送制御装置の一例を示す図であり、図１１乃至図１３は、従来例の他の例を示す図である。そして、図８は、従来例の一例における装置の構成を示すブロック図であり、図９は、その動作を示すフローチャートを示す。図１０は、図８に開示した従来例の一例における信号の動作を示すタイミングチャートである。また、図１１は、従来例の他の例における装置の構成を示すブロック図であり、図１２は、その動作を示すフローチャートである。図１３は、図１１に開示した従来例におけるデータ転送装置の信号の動作を示すタイミングチャートである。
【０００４】
図８に示すように、パーソナルコンピュータなどの上位ホストであるのＬＳＩ１には、制御装置としてのＣＰＵ１０と、ハードディスクやＣＤ−ＲＯＭドライブなどのＡＴＡ／ＡＴＡＰＩデバイス２の動作を制御するＡＴＡホストコントローラ３とが備えられている。そして、ＣＰＵ１０の指令にて、デバイス内の記憶媒体から、ＡＴＡホストコントローラ３を介してデータを読み出す処理、すなわち、データ転送処理が実行される。
【０００５】
図９において、処理Ａ１から処理Ａ６、及び処理Ａ８は、ＬＳＩ１内部に構成されたＡＴＡホストコントローラ３に対するＣＰＵ１０からの制御処理を示している。またＢ１、Ｂ２、Ｂ７は上記ＡＴＡホストコントローラ３の動作処理を示している。ここで、本発明におけるデータ転送とは、特に上位ホスト１が、所定のデバイス２からデータを読み出すときのデータ転送である。
【０００６】
処理Ａ１は、ＣＰＵ１０が、データ転送における開始セクタ番号やセクタサイズ、データサイズ、モードなどのデータ転送に必要なパラメータを、データ転送処理を行うＡＴＡ／ＡＴＡＰＩデバイス２に対して設定する処理を示している。処理Ａ２は、ＣＰＵ１０が、転送を行うＡＴＡ／ＡＴＡＰＩデバイス２への転送における、データサイズ、モードなどのデータ転送に必要なパラメータを、ＡＴＡホストコントローラ３へ設定する処理を示している。処理Ａ３は、ＣＰＵ１０が処理Ａ１により設定されたパラメータによって、実際の転送処理の開始を指示するコマンドを、ＡＴＡホストコントローラ３を介してＡＴＡ／ＡＴＡＰＩデバイス２に書き込む処理を示している。処理Ａ４は、処理Ａ３の処理に対して、デバイス２が正常に転送処理の開始を受け付けたか否かを、処理対象のＡＴＡ／ＡＴＡＰＩデバイス２へ確認する処理である。処理Ａ５は、ＡＴＡホストコントローラ３にデータ読み出しを開始するよう、当該ＡＴＡホストコントローラ３をデータ転送モード（リードモード）に設定する処理を示している。
【０００７】
そして、ＣＰＵ１０がＡＴＡホストコントローラ３を介してＡＴＡデバイス２からデータを読み出している最中に、処理Ａ６に示すように、ＡＴＡ／ＡＴＡＰＩデバイス２からの割込み信号の検出を行う。このとき、ＡＴＡデバイス２からは、当該ＡＴＡ／ＡＴＡＰＩデバイス２がＡＴＡホストコントローラ３に読み出し予定容量のデータを全て転送した後に、割り込み信号を出力する。処理Ａ８は、転送されたデータがＡＴＡホストコントローラ３に敷設されたバッファメモリ６の中にあるか否か、すなわち、バッファメモリ６の状態を示すレジスタの値を読み出す処理を示す。このとき、処理Ａ８での処理の結果、バッファメモリ６の状態が空になったかどうかを処理９にて判定し、空であると判断したときに上記割り込み処理を許容する（図示せず）。そして、転送終了処理が行われる。
【０００８】
また、ＡＴＡホストコントローラ３では、まず処理Ｂ１に示すように、ＣＰＵ１０からの処理Ａ５を受けて、自己の動作をデータ転送モードに切り換える。すなわち、ＡＴＡホストコントローラ３がデータ転送モードへ切り替わる。そして、処理Ｂ２で、ＡＴＡ／ＡＴＡＰＩデバイス２に対してＡＴＡプロトコルに従ってデータの読み出しであるデータ転送処理を行う。その後、処理Ａ２に設定されたデータサイズとなるまで処理Ｂ２の処理を繰り返す判定を処理Ｂ７にて行う。このようにして、ホストであるＬＳＩ１は、ＡＴＡ／ＡＴＡＰＩデバイス２からデータを読み出している。
【０００９】
【発明が解決しようとする課題】
しかしながら、上記従来技術では、以下のような不都合があった。すなわち、処理Ａ９にて、ＡＴＡホストコントローラ３のバッファメモリ６の状態が空になった事を認識するまで、ＣＰＵ１０がＡＴＡホストコントローラ３に対し処理Ａ８と処理Ａ９を繰り返すポーリング処理により、データ転送速度の低下が発生するという問題が生じる。すなわち、図１０のタイミングチャートに示すように、上記ポーリング処理により、ＣＰＵバス９のデータ信号１７にサイクルＤ８が伴うため、当該サイクルＤ８とデータ転送サイクルとがＣＰＵバス９内で同時に行われ、データ転送速度の低下が起こる問題があった。
【００１０】
また、上記従来例において、ＣＰＵ１０によるバッファメモリ６の状態のポーリング処理開始を、ＡＴＡ／ＡＴＡＰＩデバイス２からの割込み信号発生直後ではなく、一定時間ウェイトする処理とすることも考えられる。しかし、かかる場合、ＡＴＡホストコントローラ３のバッファ６のサイズやＣＰＵバス９の転送速度の違いにより、割込み認識からＣＰＵ１０によるバッファ状態のポーリング処理開始までのタイミングを個別に設定する必要があり、ＡＴＡホストコントローラ３を他のシステムに流用した場合に処理方法がシステムにより異なってくるため、制御プログラムのポータビリティ性（移植性）が失われるという不都合がある。
【００１１】
一方で、上記問題点を解決するために、上記従来例に対して、図１１に示すように、ＡＴＡホストコントローラ１６内に、転送終了までＡＴＡ／ＡＴＡＰＩデバイス２へ入力されるの割込信号１２をマスクする回路１３を敷設するという手段が採られている。そして、バッファ６メモリから出力される当該バッファが空であることを示すＥＭＰＴＹ信号１４（図１１参照）により、ＡＴＡ／ＡＴＡＰＩデバイス２から出力される割込信号１２を制御する。すなわち、図１３におけるＡＴＡバスからの割込信号１２をＡＴＡホストコントローラ内部信号のＦＩＦＯ空信号１９が”Ｈ”である場合に、ＣＰＵバス９への割込信号２０を出力するようにする。従って、図１２における、割込み信号をマスクする処理Ｂ１０と処理Ｂ４の後に割込み信号１２のマスクを解除する処理Ｂ１１の制御が追加されることとなる。これにより、図８におけるＣＰＵ１０からのＡＴＡホストコントローラ１６に対するポーリング処理Ａ８及び処理Ａ９を抑制することができ、データ転送速度の低速化を抑制することができる。
【００１２】
しかし、上記データ転送方法では、ＡＴＡ／ＡＴＡＰＩデバイス２からの割込み信号をＡＴＡホストコントローラ１６内のバッファメモリ６の状態によってマスク処理を行っている間に、データ転送エラー等によりＡＴＡ／ＡＴＡＰＩデバイス２からの割込みが発生すると、バッファメモリ６が空になるまで割込み信号を認識できないという不都合が生じる。このため、エラーに対するＣＰＵ１０の処理が遅れ、システムとしての性能を劣化させるという不都合が生じる。また、何らかの原因によりＣＰＵバス９でのデータ転送も行われなかった場合には、割込み信号が全く認識できないという事態になり、システムがフリーズしてしまうという問題も生じる。
【００１３】
【発明の目的】
本発明は、データ転送速度の低下の抑制を図ると共に、動作の安定したデータ転送制御装置及び方法を提供することをその目的とする。
【００１４】
【課題を解決するための手段】
そこで、本発明では、上位ホスト自体の動作を制御する制御装置と、上位ホストに備えられた所定のデバイスの動作を制御するホストコントローラとを備え、ホストコントローラが、デバイスから読み出したデータを一時的に保持するバッファメモリを備えると共に、制御装置の指示に基づいてデバイスからデータをバッファメモリに読み出す機能を備え、制御装置が、バッファメモリに保持されたデータを読み出す機能と、デバイスがホストコントローラにデータを転送した後に出力する割り込み処理を受け付ける機能とを備えている。
そして、ホストコントローラが、当該ホストコントローラ内に備えられたバッファメモリにデバイスからあらかじめ設定された読み出し予定容量の一部を残して所定の単位量毎にデータを読み出すデータ読出制限機能と、バッファメモリ内のデータが制御装置に転送されることにより当該バッファメモリが空になったことを検出してデバイスから読み出し予定容量の残りの一部に相当するデータをバッファメモリに読み出す残余データ読出機能とを備えた、という構成を採っている（請求項１）。
【００１５】
このような構成にすることにより、デバイスからホストにデータが読み出される際には、まず、読み出し予定容量の全てのデータではなく、その一部をデバイスに残してバッファメモリに読み出される。これと同時に、バッファメモリから制御装置にデータが転送される。このとき、ホストコントローラがデバイスからデータを読み出した後にバッファメモリから制御装置に転送していることや、転送速度の違いなどから、ホストコントローラがデバイスから所定量のデータの読み出しが終わっても、依然として制御装置ではバッファメモリからデータ転送が実行されていて、当該バッファメモリ内にはデータが残存している。すなわち、バッファメモリと制御装置との間でデータ転送が行われている間は、それが終了するまでホストコントローラはデバイスから残りのデータの読み出しを行わず、バッファメモリ内が空になるまで一時的に処理が停止状態となる。その後、バッファメモリ内が空になると、ホストコントローラは読み出し予定の残りのデータをデバイスからバッファメモリに読み出す。すると、バッファメモリに読み出されたデータは、容量が少ないため、迅速に制御装置に転送され、バッファメモリは再度空状態となる。
【００１６】
ここで、デバイスは、読み出される予定の全てのデータ、すなわち、残りのデータをバッファメモリに転送し終えると、割り込み処理がある場合には、割り込み信号をホストコントローラを介して出力する。この場合でも、上述したようにバッファメモリほぼ空状態になっているか、あるいは、すぐに空状態となるため、制御装置にて上記割り込み処理を迅速に受け付けて処理することができる。
【００１７】
また、データ読出制限機能にて、デバイスに残す一部のデータの容量を、ホストコントローラがデバイスから読み出し最小単位量とすると望ましい（請求項２）。これにより、デバイスからバッファメモリに転送される最終データが、一度の転送処理で読み出し可能な単位量のデータであるため、かかるデータがバッファメモリに一旦保持されて、その後、制御装置により一度の処理で転送される。従って、デバイスが転送予定量のデータを全て転送終了した後に、すぐに割り込み処理が出力されたとしても、バッファメモリに読み出されたデータは読み出し最小単位量であり、迅速に制御装置にて転送されて当該バッファメモリの再度空となるため、当該制御装置は迅速に割り込み処理することができる。このため、ポーリング処理の発生を抑制し、処理速度の低下を抑制することができる。
【００１８】
さらに、本発明では、ホストコントローラが、デバイスから読み出したデータを一時的に保持するバッファメモリを備えると共に、制御装置の指示に基づいてデバイスからデータをバッファメモリに読み出す機能と、読み出したデータの誤り検出データであるＣＲＣ値を前記デバイスに書き込む機能とを備え、制御装置が、バッファメモリに保持されたデータを読み出す機能と、ＣＲＣ値を受け取ったデバイスから出力される割り込み処理を受け付ける機能とを備えたデータ転送制御装置において、ホストコントローラが、当該ホストコントローラ内に備えられたバッファメモリにデバイスからあらかじめ設定された読み出し予定容量の全部のデータを所定の単位量毎に読み出すデータ読出機能と、バッファメモリ内のデータが制御装置に転送されることにより当該バッファメモリが空になったことを検出してＣＲＣ値を前記デバイスに対して書き込むＣＲＣ値書込機能を備えた、という構成をも採っている（請求項３）。
【００１９】
このような構成にすることにより、デバイスからホストにデータが読み出される際には、まず、読み出し予定容量の全てのデータがバッファメモリに読み出される。これと同時に、バッファメモリから制御装置にデータが転送される。そして、このとき、バッファメモリ内の全てのデータが制御装置に転送されるまで、ホストコントローラはデバイスから次のデータの読み出しがあったとしてもかかる処理を行わず、バッファメモリ内が空になるまで一時的に処理が停止状態となる。その後、バッファメモリ内が空になると、ＣＲＣ値がデバイスに対して書き込まれる。これを受けたデバイスは、割り込み処理がある場合には、当該割り込み処理信号を出力するが、かかる場合にはすでにバッファメモリは空状態であるため、制御装置にて上記割り込み処理を迅速に受け付けて処理することができる。
【００２０】
また、本発明では、上述したデータ転送制御装置にて実現するデータ転送方法をも提供している。すなわち、上位ホスト自体の動作を制御する制御装置が、所定のデバイスの動作を制御する上位ホストに備えられたホストコントローラ内のバッファメモリを介してデバイスから所定の容量のデータを読み出すと共に、デバイスがホストコントローラにデータを転送した後に当該デバイスから発生する割り込み処理を受け付けるよう、データ転送を制御する方法であって、ホストコントローラがバッファメモリにデバイスからあらかじめ設定された読み出し予定容量の一部を残して所定の単位量毎にデータを読み出すデータ読出制限工程と、制御装置がバッファメモリに一時的に保持されたデータを所定の単位量毎に読み出すデータ転送工程と、このデータ転送工程に並列してホストコントローラがバッファメモリが空になったか否かを検出するバッファメモリ容量検出工程とを備え、このバッファメモリ容量検出工程にてバッファメモリの容量が空になったことを検出したときに、ホストコントローラがデバイスから読出予定容量の残りの一部に相当するデータをバッファメモリに読み出す残余データ読出工程を備えたデータ転送制御方法をも提供している（請求項４）。このとき、データ読出工程にて、デバイスに残す一部のデータの容量を、読み出し最小単位量とすると望ましい（請求項５）。
【００２１】
また、上位ホスト自体の動作を制御する制御装置が、所定のデバイスの動作を制御する上位ホストに備えられたホストコントローラ内のバッファメモリを介してデバイスから所定の容量のデータを読み出すと共に、ホストコントローラがデバイスに対して読み出しデータの転送における誤り検出データであるＣＲＣ値を書き込み、このＣＲＣ値を受け取ったデバイスから出力される割り込み処理を制御装置が受け付けるよう、データ転送を制御する方法であって、ホストコントローラがバッファメモリにデバイスからあらかじめ設定された読み出し予定容量の全てのデータを読み出す全データ読出工程と、制御装置がバッファメモリに一時的に保持されたデータを所定の単位量毎に読み出すデータ転送工程と、このデータ転送工程に並列してホストコントローラがバッファメモリが空になったか否かを検出するバッファメモリ容量検出工程とを備え、このバッファメモリ容量検出工程にてバッファメモリの容量が空になったことを検出したときに、ホストコントローラがＣＲＣ値をデバイスに書き込むＣＲＣ値書込工程を備えた、というデータ転送制御方法をも提供している（請求項６）。
このようにしても、上述と同様の作用、効果を得ることができる。
【００２２】
【発明の実施の形態】
〈第１の実施形態〉
以下、本発明の第１の実施形態について、図１乃至図３を参照して説明する。図１は、本発明の第１の実施形態における構成を示すブロック図であり、図２は、その動作を示すフローチャートである。図３は、信号の動作を示すタイミングチャートである。
【００２３】
本発明は、ＡＴＡ／ＡＴＡＰＩ規格に準拠したハードディスク及びＣＤ−ＲＯＭ装置などのストレージデバイスのデータ転送制御を行う装置及び方法である。特に、後述するように、ストレージデバイスに対するデータ読み出し時の転送終了直前における読み出し制御方法を工夫したことにより、転送速度を低下させることなく転送可能となる。
【００２４】
はじめに、その概略を簡単に説明すると、図２の本実施形態におけるデータ読み出し回路の動作を示すフローチャートに示すように、ＡＴＡホストコントローラ３がＡＴＡ／ＡＴＡＰＩデバイス２から読み出すべきデータサイズに対し、残り１回の読み出しとなったタイミングで、ＡＴＡホストコントローラ３の上記デバイス２からのデータ転送制御を停止する。そして、先に取り込んだデータがバッファメモリ６からＣＰＵ１０に転送されて、当該バッファメモリ６が空になったら、ＡＴＡホストコントローラ３のデータ転送制御を再開し、ＡＴＡ／ＡＴＡＰＩデバイス２から残り１回の読み出しを行う。これにより、ＡＴＡホストコントローラ３のバッファメモリ６の状態が空になった事を認識するまで、常にＡＴＡホストコントローラ３への状態をポーリングする処理を抑制し、データ転送速度の低下をなくす。さらに、データ転送中のエラーにより発生した割込みに対しても遅れなくＣＰＵ側で認識可能となる。
【００２５】
（構成）
図１に示すように、本発明であるデータ転送制御装置は、ＡＴＡ／ＡＴＡＰＩデバイス２を制御する機能を有すＬＳＩ１などの上位ホストに備えられている。具体的には、上位ホスト１自体の動作を制御する制御装置であるＣＰＵ１０と、上位ホスト１に備えられた所定のデバイス２の動作を制御するホストコントローラであるＡＴＡホストコントローラ３とにより構成される。
【００２６】
そして、上記ＡＴＡ／ＡＴＡＰＩデバイス２とは、ＡＴＡ／ＡＴＡＰＩ規格に準拠したハードディスクやＣＤ−ＲＯＭなどであり、ＡＴＡバス１５によりＡＴＡホストコントローラ３に接続される。また、上記ＡＴＡバス１５には、ＡＴＡ規格に準拠した制御信号及びデータを受け渡しするデータ信号１１と割込信号１２を含む。また、ＬＳＩ１の内部では、ＡＴＡホストコントローラ３とＣＰＵ１０とがＣＰＵバス９により接続される。このＣＰＵバス９は、ＣＰＵ１０からＡＴＡホストコントローラ３への制御信号及びデータを受け渡しするデータ信号１７と割込信号１８を含む。
【００２７】
また、ＡＴＡホストコントローラ３の構成は、以下のようになっている。すなわち、上記ＡＴＡバス１５とデータ受け渡しを行うＡＴＡインタフェース部４と、ＣＰＵバス９とデータ受け渡しを行うＣＰＵインタフェース部５と、ＡＴＡバス１５及びＣＰＵバス９への転送データを一時的に貯えるバッファメモリ６と、ＡＴＡバス１５及びＣＰＵバス９の動作を制御する制御部７で構成される。また、バッファメモリ６の制御部７には、当該バッファメモリ６からＡＴＡバス１５でのデータ転送を一時的に停止させるサイクルウェイト信号１９が接続されている。ＡＴＡバス１５及びＣＰＵバス９への転送データを一時的に貯えるバッファメモリ６は、入った順番に処理を行うＦＩＦＯ８で構成される。
【００２８】
ここで、データ転送制御装置が有する基本的な機能について説明する。まず、ＡＴＡホストコントローラ３には、ＣＰＵ１０からの指示に基づいてＡＴＡ／ＡＴＡＰＩデバイス２からデータをバッファメモリ６に読み出す機能を備えている。このように、デバイス２からのデータは、まず、バッファメモリ６に読み出される。また、ＣＰＵ１０には、バッファメモリ６に保持されたデータを読み出す機能と、ＡＴＡ／ＡＴＡＰＩデバイス２がＡＴＡホストコントローラ３にデータを転送した後に出力する割り込み処理を受け付ける機能とを備えている。これにより、ＡＴＡ／ＡＴＡＰＩデバイス２からデータを読み出すと共に、当該デバイス２からの割り込み処理を実行することができる。但し、上述したようなポーリングなどの処理遅延の問題が生じている。
【００２９】
そして、本実施形態では、さらに、ＡＴＡホストコントローラ３には、当該ホストコントローラ３内に備えられたバッファメモリ６にＡＴＡ／ＡＴＡＰＩデバイス２からあらかじめ設定された読み出し予定容量の一部を残して所定の単位量毎にデータを読み出すデータ読出制限機能と、バッファメモリ６内のデータがＣＰＵ１０に転送されることにより当該バッファメモリ６が空になったことを検出してＡＴＡ／ＡＴＡＰＩデバイス２から読み出し予定容量の残りの一部に相当するデータをバッファメモリ６に読み出す残余データ読出機能と、が備えられている。
【００３０】
これらの機能が作動することにより、本実施形態におけるデータ転送制御装置は、以下のように作動する。ちなみに、上記ＣＰＵ１０やＡＴＡホストコントローラ３が備えている各機能は、当該各機能用プログラムがそれぞれの演算処理部（ＣＰＵ１０自体や、バッファメモリ６の制御部７）に組み込まれることにより実現できる。そして、上記プログラムは、あらかじめＬＳＩ１内の所定の記憶装置（図示せず）に記憶されている。
【００３１】
次に、図２及び図３を参照して本発明の第１の実施形態の動作について詳細に説明する。また、図３は、図２の処理内容に対し、ＡＴＡバス及びＣＰＵバスでの信号動作を示したタイミングチャートを示している。
【００３２】
まず、図２において、処理Ａ１は、図１に示すＣＰＵ１０が転送を行うＡＴＡ／ＡＴＡＰＩデバイス２に対して、転送における開始セクタ番号やセクタサイズ、データサイズ、モードなどの、データ転送に必要なパラメータを設定する処理を示している。このとき、ＡＴＡ／ＡＴＡＰＩデバイス２の転送プロトコルに従い、実際にデータ転送を行いたいセクタの開始アドレスを示すセクタ番号や、前記セクタ番号からの転送セクタ数を示すセクタサイズを、ＡＴＡ／ＡＴＡＰＩデバイス２のＡＴＡ規格で定められたレジスタへ書き込む。
【００３３】
処理Ａ２は、転送を行うＡＴＡ／ＡＴＡＰＩデバイス２への転送におけるデータサイズ、モードなどの、データ転送に必要なパラメータをＡＴＡホストコントローラ３へ設定する処理を示している。ここでは、前記処理Ａ１で設定したセクタサイズと１セクタあたりのデータサイズよりデータサイズをＣＰＵ１０が計算しＡＴＡホストコントローラ３に設定する。
【００３４】
処理Ａ３は実際の転送処理の開始をＡＴＡ／ＡＴＡＰＩデバイス２に指示するために、転送方法によってＡＴＡ規格により定められたコマンドをＡＴＡ／ＡＴＡＰＩデバイス２のレジスタへ書き込む。そして、このとき、上記処理Ａ３に対して、正常に転送処理の開始を受け付けたかをＡＴＡ／ＡＴＡＰＩデバイス２へ確認する為に、ＡＴＡ／ＡＴＡＰＩデバイス２のステータスレジスタを読み込む。ここで、仮にエラーとなった場合は、データ転送処理を直ちに中止しエラー処理を行う（処理Ａ４）。エラーがない場合は、処理Ａ５によりＡＴＡホストコントローラ３にデータ転送モード（リードモード）を設定することで、ＡＴＡ／ＡＴＡＰＩデバイス２との転送を行うモードへ移行する。
【００３５】
ここで、以上の処理は、図３に示すＣＰＵバスの動作状態Ｃ７における区間Ｓ４の間で行われる。この後は、処理Ａ５によりＡＴＡ／ＡＴＡＰＩデバイス２からの割込み信号の検出を行う処理に移行する。そして、当該処理は、図３に示すＣＰＵバスの動作状態Ｃ７における区間Ｓ５の間にて行われる。
【００３６】
続いて、処理Ｂ１がＡＴＡホストコントローラ３内で行われる。すなわち、ＣＰＵ１０が処理Ａ５を行っている間、ＡＴＡホストコントローラ３の制御によりＡＴＡ／ＡＴＡＰＩデバイス２との間でデータ転送が行われる。
【００３７】
続いて、処理Ｂ２によりＡＴＡ／ＡＴＡＰＩデバイス２に対して、ＡＴＡプロトコルにしたがってデータ転送を行う。ここで、上記処理Ａ３とＡ５により、ＡＴＡ／ＡＴＡＰＩデバイス２とＡＴＡホストコントローラ３がデータ転送モードへ移行したことにより双方の間でデータ転送のハンドシェイクを行いながら、処理Ａ２、Ａ３で設定したデータサイズ分の転送を行う。これらの処理は、図３に示すＣＰＵバス９の動作状態Ｃ７における区間Ｓ５及びＡＴＡバスの動作状態Ｃ３の区間Ｓ１の間で行われる。このとき、処理Ｂ３により、転送が行われたデータサイズが残り１Ｗｏｒｄとなるまで処理Ｂ２を繰り返す（データ読出制限工程）。すなわち、上記処理Ａ２、Ａ３で設定されたデータサイズ分が全て一度に転送されるわけではなく、わずかなデータをＡＴＡ／ＡＴＡＰＩデバイス２に残して、バッファメモリ６に読み出す。ここでは、Ｗｏｒｄとは、一度に読み出すことができるデータの最小単位をいう。例えば、１Ｗｏｒｄは、３２ビットである。
【００３８】
そして、転送が行われたデータサイズが残り１Ｗｏｒｄとなったタイミングで、すなわち、図３に示すＡＴＡバス１５のデータ信号１１に示すサイクルＤ２において、ＡＴＡホストコントローラ３の内部信号のサイクルウェイト信号１９を”Ｈ”にする（信号を立ち上げる）。そして、サイクルウェイト信号１９が”Ｈ”の区間では（図３のＤ５参照）、ＡＴＡバス１５のデータ信号１１をウェイトする信号として用い、サイクルＤ２の終了を延長する。これにより、処理Ｂ２であるデバイス２からのデータの読み出しを１Ｗｏｒｄ残して一旦停止する。
【００３９】
このとき、処理Ｂ２によりＡＴＡ／ＡＴＡＰＩデバイス２からＡＴＡホストコントローラ３に転送されたデータは、ＡＴＡホストコントローラ３に敷設されたバッファメモリ６に蓄積されている。この蓄積されたデータは、ＣＰＵ１０がＣＰＵバス９を介して読み出し、バッファメモリ６が空になるまで実行する（データ転送工程）。そして、バッファメモリ６が空になったことを、バッファメモリ６の制御部７が認識し（バッファメモリ容量検出工程）、そのタイミング、すなわち、図３に示すＣＰＵバス９のデータ信号１７におけるサイクルＤ３が終了したタイミングの後、上記サイクルウェイト信号１９を”Ｌ”にする（信号を下げる）。
【００４０】
これにより、残っている１Ｗｏｒｄ分のデータがＡＴＡ／ＡＴＡＰＩデバイス２からＡＴＡホストコントローラ２に転送されて、すなわち、図３に示すデータ信号１１におけるサイクルＤ２のウェイトが解除されて、サイクルＤ２が終了する（残余データ読出工程）。その後、バッファメモリ６に貯まった１Ｗｏｒｄ分のデータをＣＰＵ１０が読み出すことにより、図３に示すＣＰＵバス９のデータ信号１７におけるサイクルＤ４が完了する。
【００４１】
ＡＴＡ／ＡＴＡＰＩデバイス２は、全てのデータをＡＴＡホストコントローラ３に完全に転送したら、図３に示すＡＴＡバスの処理内容Ｃ３における割込み信号を出力するまでのリカバリ区間Ｓ２を経たのち、図３に示すＡＴＡバス１５の割込信号１２を”Ｈ”にし（信号を立ち上げ）、割込が有ることをＡＴＡホストコントローラ３へ伝える。すなわち、ＡＴＡバス１５の処理内容Ｃ３における区間Ｓ３の割込み信号出力時間へ移る。
【００４２】
すると、ＡＴＡホストコントローラ３は、ＡＴＡ／ＡＴＡＰＩデバイス２から割込信号１２を受け、図３に示すＣＰＵバス９の割込信号１８を”Ｈ”にし、ＣＰＵ１０に割込が有ることを伝える。ＣＰＵ１０は、この信号を受けて処理Ａ６から抜け、データ転送が正常終了か異常終了かを判断する為に、ＡＴＡ／ＡＴＡＰＩデバイス２のステータスレジスタを読込み判断する。すると、図３に示すＣＰＵバス９の動作状態Ｃ７における状態Ｓ６へ移行する。エラーがなければ転送終了となる。
【００４３】
このようにすることにより、ＡＴＡホストコントローラ３内でデータ転送終了直前残り１回の転送となるタイミングでＡＴＡ／ＡＴＡＰＩデバイス２からの転送を一旦ウェイトし、バッファメモリ６が空になったら最終データ転送を行う処理を追加したことで、当該最終データがバッファメモリ６に転送されるまでＡＴＡ／ＡＴＡＰＩデバイス２から割り込み処理が出力されず、ＣＰＵ１０がＡＴＡホストコントローラ３の状態をポーリングする処理を抑制することができる。そして、ＡＴＡ／ＡＴＡＰＩデバイス２が転送する最終データは１Ｗｏｒｄであるため、バッファメモリ６に転送した後に迅速にＣＰＵ１０に転送され、割り込み処理が出力されたとしてもＡＴＡホストコントローラ３のバッファメモリ６の状態がすぐに空の状態となることから、ポーリング処理とデータ転送がＣＰＵバス９内で同時に行われることがなくなり、データ転送速度の低下を有効に抑制することができる。
【００４４】
このとき、上記効果は、バッファサイズ、ＣＰＵ性能により効果は変化するが、ＡＴＡホストコントローラ３のバッファメモリ６のサイズを５１２ＫＢｙｔｅ、データ転送中は１０サイクル毎にポーリングが行われるＣＰＵを一般的に考えた場合、転送データサイズがバッファサイズ以下の場合は、データサイズによらず従来より約１０％転送速度が向上する。転送データサイズがバッファサイズ以上の場合でも、データサイズが１ＭＢｙｔｅの場合を例にとると、最後の５１２ＫＢｙｔｅの転送に対するポーリングが行われなくなり、従来より約５％転送速度が向上する。
【００４５】
また、従来例にて備えられるＡＴＡ／ＡＴＡＰＩデバイス２からの割込み信号をＡＴＡホストコントローラ３内のバッファメモリ６の状態によってＣＰＵ１０に伝播しないための信号マスク処理を行う回路を不要としたことにより、データ転送中のエラーにより発生した割込みも迅速にＣＰＵ１０で認識することができる。従って、エラー割込に対する処理の遅れを抑制することができる。
【００４６】
さらには、ＡＴＡホストコントローラ３内でデータ転送終了直前残り１回の転送となるタイミングで転送を一旦ウェイトし、バッファメモリ６が空になったら最終データ転送を行う処理を追加したことにより、ＡＴＡホストコントローラ３のバッファメモリ６の状態が空になった事を認識するまで常にＣＰＵ１０がＡＴＡホストコントローラ３の状態をポーリングする処理を不要としたため、ＣＰＵバス９で行われるプログラムをリードするＲＯＭフェッチ処理や、他インタフェースの制御処理とポーリング処理とがＣＰＵバス内で同時に行われることがなくなったことにより、システムの安定性の向上など、当該システム全体の性能の向上を図ることができる。
【００４７】
そして、転送制御方法をＡＴＡホストコントローラ３のバッファ６のサイズに関係なく、ＡＴＡ／ＡＴＡＰＩデバイス２からの転送回数により制御するようにしたため、転送タイミングに依存しない。従って、ＡＴＡホストコントローラ３内のバッファ６のサイズにより処理のタイミングを切替える必要がないという効果をも有する。すなわち、本装置及び方法は、あらゆるデバイス２に用いることができ、汎用性の向上を図ることができる。
【００４８】
〈第２の実施形態〉
以下、本発明の第２の実施形態について、図４乃至図５を参照して説明する。図４は、本発明の第２の実施形態における動作を示すフローチャートであり、図５は、その信号の動作を示すタイミングチャートである。
【００４９】
本実施形態では、基本的には上記第１の実施形態と同様であるが、特に、図４において、処理Ｂ３における転送データサイズの残り、すなわち、ＡＴＡ／ＡＴＡＰＩデバイス２から読み出さず残しておくデータ量が１Ｗｏｒｄであったのが、残り２Ｗｏｒｄとする処理Ｂ６となっている点で異なる。
【００５０】
また、図５において、ＡＴＡバス１５中のデータ信号１１に対するサイクルウェイト信号１９を”Ｈ”とするタイミングが、転送データが残り２Ｗｏｒｄとなったとき、すなわち、ＡＴＡバス１５のデータサイクルがサイクルＤ１である点で異なる。
【００５１】
図４を参照して、その動作を詳細に説明する。図４において、処理Ａ１から処理Ａ６は、ＬＳＩ１内部に構成されたＡＴＡ／ＡＴＡＰＩデバイス２の動作を制御するＡＴＡホストコントローラ３に対するＣＰＵ１０からの制御処理を示している。また処理Ｂ１、Ｂ２、Ｂ４、Ｂ５及びＢ６は、ＡＴＡホストコントローラ３の動作処理を示している。
【００５２】
まず、処理Ａ１は、図１に示すＣＰＵ１０が転送を行うＡＴＡ／ＡＴＡＰＩデバイス２に対して、転送における開始セクタ番号やセクタサイズ、データサイズ、モードなどの、データ転送に必要なパラメータを設定する処理を示している。このとき、ＡＴＡ／ＡＴＡＰＩデバイス２の転送プロトコルに従い、実際にデータ転送を行いたいセクタの開始アドレスを示すセクタ番号や、前記セクタ番号からの転送セクタ数を示すセクタサイズを、ＡＴＡ／ＡＴＡＰＩデバイス２のＡＴＡ規格で定められたレジスタへ書き込む。
【００５３】
処理Ａ２は、転送を行うＡＴＡ／ＡＴＡＰＩデバイス２への転送におけるデータサイズ、モードなどの、データ転送に必要なパラメータをＡＴＡホストコントローラ３へ設定する処理を示している。ここでは、前記処理Ａ１で設定したセクタサイズと１セクタあたりのデータサイズよりデータサイズをＣＰＵ１０が計算しＡＴＡホストコントローラ３に設定する。
【００５４】
処理Ａ３は、実際の転送処理の開始をＡＴＡ／ＡＴＡＰＩデバイス２に指示するために、転送方法によってＡＴＡ規格により定められたコマンドをＡＴＡ／ＡＴＡＰＩデバイス２のレジスタへ書き込む。そして、このとき、上記処理Ａ３に対して、正常に転送処理の開始を受け付けたかをＡＴＡ／ＡＴＡＰＩデバイス２へ確認する為に、ＡＴＡ／ＡＴＡＰＩデバイス２のステータスレジスタを読み込む。ここで、仮にエラーとなった場合は、データ転送処理を直ちに中止しエラー処理を行う（処理Ａ４）。エラーがない場合は、処理Ａ５によりＡＴＡホストコントローラ３にデータ転送モード（リードモード）を設定することで、ＡＴＡ／ＡＴＡＰＩデバイス２との転送を行うモードへ移行する。また、処理Ａ６では、ＡＴＡ／ＡＴＡＰＩデバイス２からの割込み信号の検出を行う。
【００５５】
また、上記処理Ａ５を受けて、ＡＴＡホストコントローラ３がデータ転送モードへ切り替わる処理を実行する（処理Ｂ１）。そして、処理Ｂ２が実行され、ＡＴＡ／ＡＴＡＰＩデバイス２に対して、ＡＴＡプロトコルにしたがってデータ転送を行う。処理Ｂ３は、上記処理Ａ２に設定されたデータサイズより転送データが残り２Ｗｏｒｄとなるまで、処理Ｂ２の処理を繰り返す判定を行う処理である。すなわち、転送を行う予定のデータサイズよりも２Ｗｏｒｄ少ないサイズのデータの転送をまず実行する。
【００５６】
その後、処理Ｂ４にて、処理Ｂ２により転送されたデータが、ＡＴＡホストコントローラ３に敷設されたバッファメモリ６からＣＰＵ１０にて読み出されるまで待つ。そして、転送サイズよりも２Ｗｏｒｄ少ないサイズのデータが、ＣＰＵ１０に転送されるとバッファメモリ６が空となり、処理Ｂ２と同様にＡＴＡ／ＡＴＡＰＩデバイス２に対して、ＡＴＡプロトコルにしたがって残っているデータ転送を行う処理が実行される。
【００５７】
これらの処理が終了すると、ＡＴＡ／ＡＴＡＰＩデバイス２から割り込み処理が実行される場合があり、かかる場合であってもバッファメモリ６がすぐに空となるため、迅速に割り込み処理を実行することができる（処理Ａ６）。
【００５８】
このようにすることにより、ＡＴＡホストコントローラ３内でデータ転送終了直前残り２回の転送となるタイミングで転送を一旦ウェイトし、バッファメモリ６が空になったら最終データ転送を行う処理を追加したことにより、当該最終データがバッファメモリ６に転送されるまでＡＴＡ／ＡＴＡＰＩデバイス２から割り込み処理が出力されず、ＣＰＵ１０がＡＴＡホストコントローラ３の状態をポーリングする処理を抑制することができる。そして、ＡＴＡ／ＡＴＡＰＩデバイス２が転送する最終データは２Ｗｏｒｄであるため、バッファメモリ６に転送した後に迅速にＣＰＵ１０に転送されるため、割り込み処理が出力されたとしてもＡＴＡホストコントローラ３のバッファメモリ６の状態がすぐに空の状態となるため、ポーリング処理とデータ転送がＣＰＵバス９内で同時に行われることがなくなり、データ転送速度の低下を有効に抑制することができる。
【００５９】
このことから、システム構成やＡＴＡ／ＡＴＡＰＩデバイス２の割込み信号の出力タイミング、すなわち、図５に示すＡＴＡバスの動作状態Ｃ３の区間Ｓ２の時間が長ければ、上記処理Ｂ３における処理Ｂ２のデータ転送サイズは、［転送すべきデータサイズ−１Ｗｏｒｄ］以下であっても、同様の効果が得られる。換言すると、ＡＴＡホストコントローラ３のデータ読出制限機能にてＡＴＡ／ＡＴＡＰＩデバイス２からデータが読み出される際に、当該ＡＴＡ／ＡＴＡＰＩデバイス２に残されるデータは、１Ｗｏｒｄに限定されず、ＣＰＵ１０がバッファメモリ６から短時間で転送できるよう、転送予定容量の一部であればその容量に制限はない。但し、少なければ少ないほど、ポーリングを抑制することができる。
【００６０】
〈第３の実施形態〉
以下、本発明の第３の実施形態について、図６乃至図７を参照して説明する。図６は、本発明の第３の実施形態における動作を示すフローチャートであり、図７は、その信号の動作を示すタイミングチャートである。
【００６１】
本実施形態では、図６において、上記第１の実施形態における図２に対して、処理Ｂ３における転送データサイズが残り１Ｗｏｒｄであったのが、全てのデータを転送する処理Ｂ７となっている点と、処理Ｂ５における残っているデータ転送を行う処理であったのが、ＡＴＡ／ＡＴＡＰＩデバイス２へ転送したデータのＣＲＣ値を書き込む処理を行う処理Ｂ８となっている点で異なる。
【００６２】
また、図７において、上記第１の実施形態における図３に対して、ＡＴＡバスデータサイクルウェイト信号Ｃ４を”Ｈ”とするタイミングが、転送データをすべて終了したのち、すなわち、ＡＴＡバスのデータサイクル１１のサイクルＤ２が終了した後に”Ｈ”とする点と、ＡＴＡバス１５のデータサイクル１１にホストからのＣＲＣ出力サイクルＤ８がある点と、ＡＴＡバス１５の動作状態Ｃ３にホストからのＣＲＣ受信待ちＳ８がある点とで異なる。
【００６３】
このため、第３の実施形態におけるＡＴＡホストコントローラ３には、ＡＴＡ／ＡＴＡＰＩデバイス２から読み出したデータの誤り検出データであるＣＲＣ値を当該ＡＴＡ／ＡＴＡＰＩデバイス２に書き込む機能を備えている。この機能は、特に、バッファメモリ６内のデータがＣＰＵ１０に転送されることにより当該バッファメモリ６が空になったことを検出してＣＲＣ値をＡＴＡ／ＡＴＡＰＩデバイス２に対して書き込むＣＲＣ値書込機能である。上述したデータ読み取り機能は、ＡＴＡホストコントローラ３内に備えられたバッファメモリ６にＡＴＡ／ＡＴＡＰＩデバイス２からあらかじめ設定された読み出し予定容量の全部のデータを所定の単位量毎に読み出す機能である。すなわち、上記実施形態と異なり、ＡＴＡ／ＡＴＡＰＩデバイス２にデータを残すことなく、バッファメモリ６に読み出す。
【００６４】
また、ＣＰＵ１０には、ＣＲＣ値を受け取ったＡＴＡ／ＡＴＡＰＩデバイス２から出力される割り込み処理を受け付ける機能が備えられている。すなわち、本実施形態におけるＡＴＡ／ＡＴＡＰＩデバイス２は、上記ＣＲＣ値を受け取った後にホスト１に割り込み処理を出力するようになっている。
【００６５】
次に、図６を参照して、その動作を詳細に説明する。図６において、処理Ａ１から処理Ａ６は、ＬＳＩ１内部に構成されたＡＴＡ／ＡＴＡＰＩデバイス２の動作を制御するＡＴＡホストコントローラ３に対するＣＰＵ１０からの制御処理を示している。また処理Ｂ１、Ｂ２、Ｂ４、Ｂ７及びＢ８は、ＡＴＡホストコントローラ３の動作処理を示している。
【００６６】
まず、処理Ａ１は、図１に示すＣＰＵ１０が転送を行うＡＴＡ／ＡＴＡＰＩデバイス２に対して、転送における開始セクタ番号やセクタサイズ、データサイズ、モードなどの、データ転送に必要なパラメータを設定する処理を示している。このとき、ＡＴＡ／ＡＴＡＰＩデバイス２の転送プロトコルに従い、実際にデータ転送を行いたいセクタの開始アドレスを示すセクタ番号や、前記セクタ番号からの転送セクタ数を示すセクタサイズを、ＡＴＡ／ＡＴＡＰＩデバイス２のＡＴＡ規格で定められたレジスタへ書き込む。
【００６７】
処理Ａ２は、転送を行うＡＴＡ／ＡＴＡＰＩデバイス２への転送におけるデータサイズ、モードなどの、データ転送に必要なパラメータをＡＴＡホストコントローラ３へ設定する処理を示している。ここでは、前記処理Ａ１で設定したセクタサイズと１セクタあたりのデータサイズよりデータサイズをＣＰＵ１０が計算しＡＴＡホストコントローラ３に設定する。
【００６８】
処理Ａ３は、実際の転送処理の開始をＡＴＡ／ＡＴＡＰＩデバイス２に指示するために、転送方法によってＡＴＡ規格により定められたコマンドをＡＴＡ／ＡＴＡＰＩデバイス２のレジスタへ書き込む。そして、このとき、上記処理Ａ３に対して、正常に転送処理の開始を受け付けたかをＡＴＡ／ＡＴＡＰＩデバイス２へ確認する為に、ＡＴＡ／ＡＴＡＰＩデバイス２のステータスレジスタを読み込む。ここで、仮にエラーとなった場合は、データ転送処理を直ちに中止しエラー処理を行う（処理Ａ４）。エラーがない場合は、処理Ａ５によりＡＴＡホストコントローラ３にデータ転送モード（リードモード）を設定することで、ＡＴＡ／ＡＴＡＰＩデバイス２との転送を行うモードへ移行する。また、処理Ａ６では、ＡＴＡ／ＡＴＡＰＩデバイス２からの割込み信号の検出を行う。
【００６９】
また、上記処理Ａ５を受けて、ＡＴＡホストコントローラ３がデータ転送モードへ切り替わる処理を実行する（処理Ｂ１）。そして、処理Ｂ２が実行され、ＡＴＡ／ＡＴＡＰＩデバイス２に対して、ＡＴＡプロトコルにしたがってデータ転送を行う。続いて、処理Ｂ７は、処理Ａ２に設定されたデータサイズとなるまで処理Ｂ２を繰り返す判定を行う。すなわち、ＡＴＡ／ＡＴＡＰＩデバイス２からバッファメモリ６に読み出し予定容量のデータを全て読み出す。
【００７０】
その後、処理Ｂ４では、上記処理Ｂ２により転送されたデータがＡＴＡホストコントローラ３に敷設されたバッファメモリ６からＣＰＵ１０にＣＰＵバス９を介して読み出されるまで待つ。全てのデータが転送されると、処理Ｂ８では、ＡＴＡホストコントローラ３内で行っている、転送を行ったデータに対して計算されたＣＲＣ値をＡＴＡ／ＡＴＡＰＩデバイス２へ書き込む。
【００７１】
ここで、ＡＴＡ規格におけるＵｌｔｒａＤＭＡ転送のプロトコルでは、データ転送終了後ホストからデバイスに対し転送データのＣＲＣ値を書き込む処理Ｂ８が必要である。転送が正常に行われた場合は、前記ＣＲＣ値の書き込みをＡＴＡ／ＡＴＡＰＩデバイス２が受け取った後に割込み信号が出力される。本実施形態は、この処理の特徴を生かしたものである。
【００７２】
すなわち、ＡＴＡ／ＡＴＡＰＩデバイス２からＡＴＡホストコントローラ３に敷設されたバッファメモリ６にあらかじめ設定されたデータ全てを読み出し、ＣＰＵ１０がＣＰＵバス９を介してかかるデータを転送し、その全てが転送された事を認識するまで待ち、その後、処理８のＣＲＣ出力を行う。これにより、図７に示すＡＴＡバスのデータサイクル１１におけるサイクルＤ２が終了したのちに、ＡＴＡホストコントローラ内部信号のＡＴＡバスデータサイクルウェイト信号Ｃ４を”Ｈ”にし、当該ＡＴＡバスデータサイクルウェイト信号Ｃ４が”Ｈ”の区間ではＡＴＡホストコントローラ３からのＣＲＣ出力サイクルＤ８をウェイトし、その間もＡＴＡホストコントローラ３に敷設されたバッファ６に蓄積されたデータをＣＰＵ１０がＣＰＵバス９を介して読み出される。そして、バッファが空になったことを認識したタイミング、すなわち、図７に示すＣＰＵバスのデータサイクルＣ５におけるサイクルＤ４が終了したタイミングの後、ＡＴＡバスデータサイクルウェイト信号Ｃ４を”Ｌ”にし、ＡＴＡホストコントローラ３からのＣＲＣ出力サイクルＤ８のウェイトを解除することで、ＣＲＣ値がＡＴＡ／ＡＴＡＰＩデバイス２に出力されて、当該ＡＴＡ／ＡＴＡＰＩデバイス２から割り込み処理がホスト１に出力される。
【００７３】
かかる場合であっても、バッファメモリ６からＣＰＵ１０へのデータのデータの転送はすでに終了しており、バッファメモリ６は空となっているので、ＣＰＵ１０は受け付けた割り込み処理を迅速に実行することができ、上記同様の効果が得られる。
【００７４】
【発明の効果】
本発明は、以上のように構成され機能するので、これによると、まず、デバイスからホストに予定容量の一部をデバイスに残してバッファメモリに読み出され、これと同時に、バッファメモリから制御装置にデータが転送されるが、このとき、バッファメモリ内が空になってからホストコントローラが読み出し予定の残りのデータをデバイスからバッファメモリに読み出し、かかるデータが制御装置に迅速に転送されるため、デバイスが転送予定容量のデータを全て出力した後に、すぐに割り込み処理を出力したとしても、バッファメモリがすぐに空となるため、当該割り込み処理を直ちに処理することができ、ポーリング処理とデータ転送の同時発生を抑制することができるため、データ転送速度の低下を有効に抑制することができる、という従来にない優れた効果を有する。
【００７５】
また、このようにすると、データ転送中のエラーにより発生した割込みも迅速に制御装置にて認識することができるため、従来例にて割込み信号をマスクする回路が不要となり、エラー割込に対する処理の遅れを抑制することができる。
【００７６】
さらには、上位ホスト内部で行われるプログラムをリードする処理や、他インタフェースの制御処理とポーリング処理とがホストで同時に行われることがなくなったことにより、システムの安定性の向上など、当該システム全体の性能の向上を図ることができる。
【００７７】
また、転送制御方法をホストコントローラのバッファサイズに関係なく、デバイスからの転送回数により制御するようにしたため、バッファメモリのサイズにより処理のタイミングを切替える必要がなく、本装置及び方法を容易にあらゆるデバイスに用いることができ、汎用性の向上を図ることができる。
【００７８】
そして、ＡＴＡ規格におけるＵｌｔｒａＤＭＡ転送のプロトコルでは、データ転送終了後ホストからデバイスに対し転送データのＣＲＣ値を書き込む処理が必要であるが、かかる場合には、デバイスから転送予定容量全てのデータをバッファメモリに読み出し、これを全て制御装置に転送してバッファメモリが空になった後に、上記ＣＲＣ値をデバイスに書き込み、このＣＲＣ値を受け取った後に当該デバイスから割り込み処理が出力されるが、このときにはバッファメモリは空であるため、割り込み処理を迅速に処理することができ、データ転送速度の低速化を抑制することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態における構成を示すブロック図である。
【図２】本発明の第１の実施形態における動作を示すフローチャートである。
【図３】本発明の第１の実施形態における信号の動作を示すタイミングチャートである。
【図４】本発明の第２の実施形態における動作を示すフローチャートである。
【図５】本発明の第２の実施形態における信号の動作を示すタイミングチャートである。
【図６】本発明の第３の実施形態における動作を示すフローチャートである。
【図７】本発明の第３の実施形態における信号の動作を示すタイミングチャートである。
【図８】従来例の一例における構成を示すブロック図である。
【図９】従来例の一例における動作を示すフローチャートである。
【図１０】従来例の一例における信号の動作を示すタイミングチャートである。
【図１１】従来例の他の例における構成を示すブロック図である。
【図１２】従来例の他の例における動作を示すフローチャートである。
【図１３】従来例の他の例における信号の動作を示すタイミングチャートである。
【符号の説明】
１  ＬＳＩ（上位ホスト）
２  ＡＴＡ／ＡＴＡＰＩデバイス（デバイス）
３  ＡＴＡホストコントローラ（ホストコントローラ）
４  ＡＴＡインタフェース部
５  ＣＰＵインタフェース部
６  バッファメモリ
７  制御部（バッファメモリ用）
８  ＦＩＦＯ
９  ＣＰＵバス
１０  ＣＰＵ（ＣＰＵバス）
１１  データ信号（ＡＴＡバス）
１２  割込信号（ＡＴＡバス）
１５  ＡＴＡバス
１７  データ信号（ＣＰＵバス）
１８  割込信号（ＣＰＵバス）
１９  サイクルウェイト信号
【図１】
0003703439.tif 000002
【図２】
0003703439.tif 000003
【図３】
0003703439.tif 000004
【図４】
0003703439.tif 000005
【図５】
0003703439.tif 000006
【図６】
0003703439.tif 000007
【図７】
0003703439.tif 000008
【図８】
0003703439.tif 000009
【図９】
0003703439.tif 000010
【図１０】
0003703439.tif 000011
【図１１】
0003703439.tif 000012
【図１２】
0003703439.tif 000013
【図１３】
0003703439.tif 000014