(57)【要約】【課題】一回毎のデータ転送のトランザクションの処理時間を短くした効率的なデータ転送を実現すること。【解決手段】バスを介して他のデバイスとの間でデータ転送を行う各デバイスがターゲットデバイス２００として機能するときは、マスタデバイス１００から受け取った転送リクエストの要求するデータ転送を確実に実行できるか否かを示す実行前ステータスを出力する。一方、マスタデバイス１００として機能するときは、転送クエストを出力した後、データ転送を確実には実行できないことを示す実行前ステータスをターゲットデバイス２００から受け取った場合のみ、転送リクエストを自らの備えるメモリに格納するとともに、この転送リクエストをターゲットデバイス２００に再出力する。【選択図】      図１
2004287982.tif 000002
【特許請求の範囲】
【請求項１】
バスを介して他のデバイスとの間でデータ転送を行うデバイス内に設けられたデータ転送制御装置において、
メモリと、
転送制御部とを具備し、
前記転送制御部は、
前記デバイスを宛先とする転送リクエストをマスタデバイスから受け取ったとき、前記転送リクエストにより要求されたデータ転送を確実に実行することができるか否かを示す実行前ステータスを出力するターゲット制御部と、
ターゲットデバイス宛ての転送リクエストを出力した後、当該ターゲットデバイスからデータ転送を確実に実行することができないことを示す実行前ステータスを受け取った場合のみ、前記転送リクエストを前記メモリに格納するとともに、該転送リクエストを再出力するマスタ制御部とを有する、
データ転送制御装置。
【請求項２】
請求項１記載のデータ転送制御装置において、
前記ターゲット制御部は、
前記転送リクエストにより要求されたデータ転送を完遂できたか否かを示す実行後ステータスをマスタデバイスへ出力し、
前記マスタ制御部は、
ターゲットデバイスから実行後ステータスを受け取り、当該実行後ステータスがデータ転送を完遂できなかったことを示すとき、前記メモリに格納した転送リクエストを読み出して再出力する、
データ転送制御装置。
【請求項３】
請求項１記載のデータ転送制御装置において、
前記ターゲット制御部は、
前記転送リクエストにより要求されたデータ転送を完遂できたか否かを示す実行後ステータスをマスタデバイスへ出力し、
前記マスタ制御部は、
ターゲットデバイスから実行後ステータスを受け取り、当該実行後ステータスがデータ転送を完遂できたことを示すとき、前記メモリに格納した転送リクエストを消去する、
データ転送制御装置。
【請求項４】
請求項１記載のデータ転送制御装置において、
前記転送リクエストが、ターゲットデバイスの備えるメモリへのデータの書き込みリクエストであるとき、
前記ターゲット制御部は、
前記書き込みリクエストが指定するデータのすべてを前記マスタデバイスから取得して自らのメモリに書き込むことができないと判断すると、当該リクエストが要求するデータ転送を確実に実行できないことを示す実行前ステータスを出力する、
データ転送制御装置。
【請求項５】
請求項１記載のデータ転送制御装置において、
前記転送リクエストが、ターゲットデバイスの備えるメモリからのデータの読出しリクエストであるとき、
前記ターゲット制御部は、
前記読出しリクエストが指定するデータのすべてを自らのメモリから読み出して前記マスタデバイスに出力できないと判断すると、当該リクエストが要求するデータ転送を確実に実行できないことを示す実行前ステータスを出力する、
データ転送制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ転送制御装置に係り、特に、データ転送の形式を好適に切り替えることによって効率的なデータ転送を実現するデータ転送制御装置に関する。
【０００２】
【従来の技術】
従来のデータ転送装置は、特許文献１に示すように、バスブリッジ部にて、処理データをメモリに格納する動作と、データを出力する動作とを並列に処理し競合の排除を行っていた。
【０００３】
【特許文献１】
特開２０００−２１５１５６号公報
【０００４】
【発明が解決しようとする課題】
しかしながら、上記特許文献１は、データ転送のトランザクションにおいてリード又はライトするすべてのデータをバスブリッジ部を経由してメモリコントローラに一旦格納し、このメモリコントローラにデータが準備できてから再びバスブリッジ部を経由して転送先デバイスに出力するようになっていた。
【０００５】
このような構成では、データを受け入れる準備が既にできているデバイスに対する転送であっても、メモリコントローラへのデータの格納という本来ならば不要な工程を実行するため、結果としてトランザクションの処理時間が長くかかるという問題があった。
【０００６】
そこで、本発明は、このような不要な処理を避け、一回毎のデータ転送のトランザクションの処理時間を短くした効率的なデータ転送を実現することができるデータ転送制御装置を提供することを目的とする。
【０００７】
【課題を解決するための手段】
この発明の好適な態様であるデータ転送制御装置は、メモリと、転送制御部とを具備し、上記転送制御部が、自らを宛先とする転送リクエストをマスタデバイスから受け取ったとき、この転送リクエストにより要求されたデータ転送を確実に実行することができるか否かを示す実行前ステータスを出力するターゲット制御部と、ターゲットデバイス宛ての転送リクエストを出力した後、当該ターゲットデバイスからデータ転送を確実に実行することができないことを示す実行前ステータスを受け取った場合のみ、転送リクエストをメモリに格納するとともに、該転送リクエストを再出力するマスタ制御部とを有する。
【０００８】
この態様において、上述のターゲット制御部が、転送リクエストにより要求されたデータ転送を完遂できたか否かを示す実行後ステータスをマスタデバイスへ出力し、上述のマスタ制御部が、ターゲットデバイスから実行後ステータスを受け取り、当該実行後ステータスがデータ転送を完遂できなかったことを示すとき、メモリに格納した転送リクエストを読み出して再出力するようにしてもよい。
【０００９】
またこの態様において、上述のターゲット制御部が、転送リクエストにより要求されたデータ転送を完遂できたか否かを示す実行後ステータスをマスタデバイスへ出力し、上述のマスタ制御部が、ターゲットデバイスから実行後ステータスを受け取り、当該実行後ステータスがデータ転送を完遂できたことを示すとき、メモリに格納した転送リクエストを消去するようにしてもよい。
【００１０】
更に上述の態様において、転送リクエストが、ターゲットデバイスの備えるメモリへのデータの書き込みリクエストであるときに、ターゲット制御部が、書き込みリクエストが指定するデータのすべてをマスタデバイスから取得して自らのメモリに書き込むことができないと判断すると、当該リクエストが要求するデータ転送を確実に実行できないことを示す実行前ステータスを出力するようにしてもよい。
【００１１】
更に上述の態様において、ターゲット制御部が、読出しリクエストが指定するデータのすべてを自らのメモリから読み出してマスタデバイスに出力できないと判断すると、当該リクエストが要求するデータ転送を確実に実行できないことを示す実行前ステータスを出力するようにしてもよい。
【００１２】
【発明の実施の形態】
以下、図面を参照しつつ、本発明の実施の形態について説明する。本実施の形態は、いわゆるデジタル複合機のコントローラの内部に埋め込まれた各デバイス間のデータ転送に関するものである。一般的なコントローラの内部には、ＣＰＵのほか、データ圧縮デバイス、データ伸長デバイス、プリンタデバイスといった各デバイスがある。以下の説明では、これら各デバイスのうち、特定のデータ転送のトランザクションを開始するデバイスをマスタデバイスと呼び、データ転送のトランザクションの相手として指定されたデバイスをターゲットデバイスと呼ぶことにする。例えば、プリンタデバイスがデータ伸張デバイスを相手とするデータ転送のトランザクションを発生させた場合であれば、プリンタデバイスがマスタデバイスになり、データ伸張デバイスがターゲットデバイスになる。データ伸張デバイスが他のデバイスを相手とするデータ転送のトランザクションを発生させた場合であれば、このデータ伸張デバイスがマスタデバイスということになる。
【００１３】
本実施形態の特徴とするところは、マスタデバイスがターゲットデバイスを制御してデータ転送を実行させる際、２つの転送形態を適宜使いわけることにある。そして、この２つの転送形態とは、マスタデバイスの備えるメモリを利用せずに転送を行う形態（以下、直接転送という）と、マスタデバイスの備えるメモリに格納した転送リクエストを利用して転送を行う形態（以下、間接転送という）とを意味する。これら各転送形態の詳細については後述する。
【００１４】
＜実施の形態の構成＞
図１は、本実施形態にかかるマスタデバイス及びターゲットデバイスの物理的構成を示すブロック図である。同図に示すように、マスタデバイス１００は、データ処理部１１０と、内部インターフェース１２０と、メモリ１３０と、外部インターフェース１４０とを備えている。ここで、コントローラ内部に埋め込まれた各デバイスはすべて上記各部を備えており、トランザクションごとにマスタデバイスにもなりうるしターゲットデバイスにもなりうる。従って、図１では、マスタデバイスだけでなくターゲットデバイスにも上記各部を示すこととした。
【００１５】
データ処理部１１０は、マスタデバイス１００の機能（例えば、データ圧縮、データ伸張、画像形成など）に応じたデータ処理を行う電子回路又はプロセッサである。なお、このデータ処理部１１０がプロセッサである場合は、図示しないＲＯＭ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）に格納されたプログラムを実行することによりデータ処理を行ってもよい。またデータ処理部１１０は、外部のデバイスにデータの転送を要求するための転送リクエストを発行する。この転送リクエストには、転送の相手となるターゲットデバイス２００と、転送するデータの大きさ（バイト数）と、転送の種別とを指定するデータを含んでいる。転送の種別には、「ライト」と「リード」とがある。「ライト」のデータ転送を要求する転送リクエストには、上記データの他、ターゲットデバイス２００の備えるメモリ２３０に書き込むデータ（以下、書き込みデータという）も含む。
【００１６】
内部インターフェース１２０は、ターゲットデバイス２００への転送リクエストをデータ処理部１１０から取得する。この内部インターフェース１２０には、本実施形態に特有の動作を行う転送制御部１２１が内蔵されている。この転送制御部１２１は、転送リクエストが指定するデータ転送を直接転送により実行するか、それとも間接転送により実行するかを判断する。
【００１７】
メモリ１３０は、先入れ先出し方式の読み書きが可能な記憶素子であり、その種別は特に問わないが、制御が簡単なＳＲＡＭ（Ｓｔａｔｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）であることが望ましい。
【００１８】
外部インターフェース１４０は、外部デバイスにデータを引渡し或いは外部デバイスからデータを取得する機能を司る。このような機能を果たすためこの外部インターフェース１４０は、ＤＭＡＣ（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ  ｃｏｎｔｒｏｌｌｅｒ）１４１を備えている。ＤＭＡＣ１４１は、システムバス３００を利用したＤＭＡ（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）転送の制御を行う装置である。
【００１９】
また、以上説明したマスタデバイス１００とターゲットデバイス２００とを接続するシステムバス３００は、アドレスバス、データバス、及び制御信号のための信号線からなる制御バスを備えている、各デバイスは、予め定められたプロトコルに従った通信により、システムバス３００を介して相互にデータのやり取りを行う。なお、説明の便宜のため、本実施形態は一般的なバス構造のシステムを例にとって説明するが、本発明の方式はバス接続のシステム以外の他の接続方式、例えば一対一のハブ接続のシステムにも適用可能である。ここで、システムバス３００の主要な信号線及びそれら信号線をドライブして出力される信号の内容について、タイムチャートを参照しつつ説明しておく。
【００２０】
図２は、データ転送におけるトランザクションの一例を示すタイムチャートである。同図において、クロックＣＬＫ、ＲＥＱ信号、ＡＣＫ信号、ＣＭＤ信号、ＳＴＡ信号、ＥＮＡ信号およびＲＤＹ信号は、各々制御バスに出力される信号である。あるデバイスがバスアクセスを実行しようとする場合、そのデバイスは、ＲＥＱ信号をアサートすることによってバスの使用権を要求する。図２では、タイムスロット「２」におけるクロックの立ち上がりからタイムスロット「５」におけるクロックの立ち上がりまでと、タイムスロット「１１」におけるクロックの立ち上がりからタイムスロット「１４」におけるクロックの立ち上がりまでの２区間にわたってＲＥＱ信号がアサートされている。このＲＥＱ信号をアサートしてバスの使用権を獲得したデバイスがマスタデバイス１００となる。ＡＣＫ信号は、バスアクセスに応答するターゲットデバイス２００によってアサートされる信号である。ＣＭＤ信号は、データの転送方向（リードかライトか）、転送するデータの大きさ（何バイトのデータか）、及び転送の相手となるターゲットデバイス２００を指定するためにマスタデバイス１００のＤＭＡＣ１４１によって出力される複数ビットの信号である。
【００２１】
ＳＴＡ信号は、ターゲットデバイス２００のステータスをマスタデバイス１００に伝達するために出力される複数ビットの信号である。このＳＴＡ信号は、ＡＣＫ信号がアサートされた後の１クロック間と、ＡＣＫ信号がネゲートされた後の１クロック間に出力される。ＡＣＫ信号がアサートされた後の１クロック間に伝達されるステータス信号を実行前ステータスと呼び、ＡＣＫがネゲートされた後の１クロック間に伝達されるステータス信号を実行後ステータスと呼ぶことにする。
【００２２】
実行前ステータスには、「ＦＩＸ」と「ＮＯＦＩＸ」とがある。「ＦＩＸ」は、ＣＭＤ信号により指定されたデータ転送の完遂を保証することを示すフラグであり、「ＮＯＦＩＸ」は、ＣＭＤ信号により指定されたデータ転送の完遂を保証できないことを示すフラグである。一方、実行後ステータスには、「ＳＵＣＣＥＳＳ」（転送要求サイズ＝転送済みサイズ）と、「ＳＵＣＣＥＳＳ」（転送要求サイズ＞転送済みサイズ）と、「ＲＥＴＲＹ」とがある。「ＳＵＣＣＥＳＳ」（転送要求サイズ＝転送済みサイズ）は、データ転送を完遂した事を示すフラグであり、「ＳＵＣＣＥＳＳ」（転送要求サイズ＞転送済みサイズ）及び「ＲＥＴＲＹ」は、データ転送を完遂できなかった事を示すフラグである。
【００２３】
ここで、図２では、タイムスロット「９」におけるクロックの立ち上がり（以下、このようなタイミングを単にクロック９という）でＡＣＫ信号がネゲートされ、クロック１０で実行後ステータスが出力された後、いわゆるアイドルサイクルを経ることなくクロック１１でＲＥＱ信号が再びアサートされている。つまりデータ転送の新しいトランザクションが直ちに開始されている。この理由を説明すると、本実施形態において、「ＲＥＴＲＹ」の実行後ステータスを取得したマスタデバイス１００は、「ＳＵＣＣＥＳＳ」（転送要求サイズ＝転送済みサイズ）の実行後ステータスを取得するまで継続して転送要求を繰り返すようになっているからである。そして、この新しいトランザクションは、間接転送によって、即ち、メモリ１３０に格納した転送リクエストを利用した転送形態によって実行される。
【００２４】
ＥＮＡ信号は、マスタデバイス１００が、データの転送準備が整ったときにアサートする信号である。ＲＤＹ信号は、ターゲットデバイス２００が、データの転送準備が整ったときにアサートする信号である。
【００２５】
ＤＡＴＡは、データバスに出力されているデータである。「ライト」のデータ転送ではマスタデバイス１００がデータをデータバスに出力し、ターゲットデバイス２００がこのデータを受け取る。一方、「リード」のデータ転送では、ターゲットデバイス２００がデータをデータバスに出力し、マスタデバイス１００がこのデータを受け取る。ＥＮＡ信号とＲＤＹ信号が共にアサートされている間のみデータバスを介したデータ送受が行われる。いずれかがネゲートされている間は、いわゆるウェイト状態であり、データバスを介したデータ送受は行われない。図２に示す例では、クロック５からクロック６と、クロック９からクロック１０と、クロック１４からクロック１５と、クロック１７からクロック１８の各区間においてのみデータバスを経由したデータ送受が実行されている。
【００２６】
＜実施の形態の動作＞
以下、本実施形態の動作を説明する。上述のように、データ転送の種別には「リード」と「ライト」とがあり、これらのいずれであるかにより動作は異なる。まずは、図３のフローチャートを参照して、「ライト」のデータ転送の動作を説明する。
【００２７】
まず、内部インターフェース１２０の転送制御部１２１は、データ処理部１１０から転送リクエストが発行されるかを監視している（Ｓ１１０）。そして、データ処理部１１０が転送リクエストを発行すると、転送制御部１２１はこの内容を解析する（Ｓ１２０）。
【００２８】
転送制御部１２１は、転送リクエストの内容を指定する信号を外部インターフェース１４０のＤＭＡＣ１４１から送信する（Ｓ１３０）。即ち、ＤＭＡＣ１４１がＲＥＱ信号をアサートしてバスの使用権を獲得すると共に、転送の相手方と転送の向き（ライト）と転送するデータの大きさとを指定するＣＭＤ信号を出力する。この処理は、図２のタイムチャートでは、クロック２乃至クロック４の期間に行われている。
【００２９】
ＣＭＤ信号を受信したターゲットデバイス２００の転送制御部２２１は、上記転送リクエストによって指定される転送を確実に実行できるか判断し、この判断結果に応じた実行前ステータスをマスタデバイス１００に返信する（Ｓ１４０）。この処理を具体的に説明する。まず、すべてのデバイスはＣＭＤ信号をラッチしてデコードし、自分が転送の相手として指定されているかを検査している。そして、この検査の結果、自分が指定されていると判断したデバイスは、ターゲットデバイス２００となってＡＣＫ信号をアサートする。続いてこのターゲットデバイス２００の転送制御部２２１は、ＣＭＤ信号が示す大きさのデータをすべて受信して自らのメモリ２３０に書き込めるか判断し、この判断結果に応じた実行前ステータスを出力する。すべて受信して書き込めると判断したときの実行前ステータスは「ＦＩＸ」となり、すべてを受信して書き込むことはできないと判断したときの実行前ステータスは「ＮＯＦＩＸ」となる。この処理は図２のタイムチャートでは、クロック５において行われている。
【００３０】
マスタデバイス１００の転送制御部１２１は外部インターフェース１４０を経由して実行前ステータスを取得し、これを解析する（Ｓ１５０）。
【００３１】
この解析の結果、実行前ステータスが「ＦＩＸ」であったとき、ターゲットデバイス２００によりデータの転送の完遂が保証されているので、転送制御部１２１は直接転送モードを選択する。「ライト」の直接転送モードにおいて、転送制御部１２１は、転送リクエストをメモリ１３０に格納することなく外部インターフェース１４０から書き込みデータを送信する（Ｓ１６０）。このステップにおける書き込みデータの送信処理を具体的に説明する。まず、マスタデバイス１００はＲＥＱ信号をアサートすると同時にＥＮＡ信号をアサートしてデータの転送準備ができたことを宣言する（図２のクロック２において行われている）。続いてターゲットデバイス２００がＲＤＹ信号をアサートすると（図２のクロック５において行われている）、データバスを介して両デバイス間でデータが送受される。
【００３２】
ターゲットデバイス２００の転送制御部２２１は、マスタデバイス１００からデータを受信して自らの備えるメモリ２３０に書き込み、実行後ステータスを返信する（Ｓ１７０）。このステップにおける実行後ステータスの返信は、図２のタイムチャートではクロック９において行われている。ここで、実行前ステータスが「ＦＩＸ」であった場合、データの転送の完遂が保証されているので、返信される実行後ステータスは常に「ＳＵＣＣＥＳＳ」（転送要求サイズ＝転送済みサイズ）になる。
【００３３】
マスタデバイス１００の転送制御部１２１は、外部インターフェース１４０を経由して実行後ステータスを取得し、これを解析する（Ｓ１８０）。
【００３４】
実行後ステータスを解析した転送制御部１２１は、ステップ１１０に戻ってデータ処理部１１０からの他の転送リクエストの発行を監視する。今説明している例では、マスタデバイス１００は、データの転送が完遂したことを示す「ＳＵＣＣＥＳＳ」を実行後ステータスとして受信したため、図２のタイムチャートにおけるクロック１１からクロック２０の期間の間接転送は実行されずにデータ転送が終了する。
【００３５】
一方、上記ステップ１５０の解析の結果、実行前ステータスが「ＮＯＦＩＸ」であったとき、ターゲットデバイス２００によるデータの転送の完遂が保証されていないので、転送制御部１２１は直接／間接転送モードを選択する。「ライト」の直接／間接転送モードにおいて、転送制御部１２１は、転送リクエストをメモリ１３０に格納した後に、書き込みデータを外部インターフェース１４０を介してターゲットデバイス２００に送信する（Ｓ１９０）。ここで、このステップにおける書き込みデータの送信は上記ステップ１６０で説明したところと同様にして行なわれる。
【００３６】
ターゲットデバイス２００の転送制御部２２１は、マスタデバイス１００から受信した書き込みデータのメモリ２３０への書き込みを試み、この試みの結果を示す実行後ステータスを返信する（Ｓ２００）。この処理は、図２のタイムチャートでは、クロック１０において行われている。ここで、上述のように、実行前ステータスが「ＮＯＦＩＸ」であったときはデータの転送の完遂が保証されていない。従って、返信される実行後ステータスは「ＲＥＴＲＹ」となるケースと「ＳＵＣＣＥＳＳ」（転送要求サイズ＞転送済みサイズ）となるケースと「ＳＵＣＣＥＳＳ」（転送要求サイズ＝転送済みサイズ）となるケースの３つが想定される。即ち、ターゲットデバイス２００の転送制御部２２１がマスタデバイス１００から受信した書き込みデータのメモリ２３０への書き込みを試みた結果、受信した書き込みデータのすべてをメモリ２３０に書き込めなかったときは、再送信を促す「ＲＥＴＲＹ」を実行後ステータスとして返信する。また、ターゲットデバイス２００の転送制御部２２１がマスタデバイス１００から受信した書き込みデータのメモリ２３０への書き込みを試みた結果、受信した書き込みデータを途中までしかメモリ２３０に書き込めなかったときは、「ＳＵＣＣＥＳＳ」（転送要求サイズ＞転送済みサイズ）を実行後ステータスとして返信する。一方、ターゲットデバイス２００でのデータ処理が進んで書き込みデータのすべてを受け入れる記憶領域が確保できたときは、データのすべてを書き込んで「ＳＵＣＣＥＳＳ」（転送要求サイズ＝転送済みサイズ）を実行後ステータスとして返信する。
【００３７】
次にマスタデバイス１００の転送制御部１２１は、外部インターフェース１４０を経由して実行後ステータスを取得し、これを解析する（Ｓ２１０）。
【００３８】
この解析の結果、実行後ステータスが「ＳＵＣＣＥＳＳ」（転送要求サイズ＝転送済みサイズ）であったとき、転送制御部１２１は、ステップ１９０でメモリ１３０に格納した転送リクエストを消去する（Ｓ２２０）。その後、ステップ１１０に戻って、データ処理部１１０からの他の転送リクエストの発行を監視する。
【００３９】
一方、上記ステップ２１０の解析の結果、実行後ステータスが「ＳＵＣＣＥＳＳ」（転送要求サイズ＞転送済みサイズ）又は、「ＲＥＴＲＹ」であったとき、転送制御部１２１は、ステップ１９０でメモリ１３０に格納した転送リクエスト（転送の相手と転送の向きとデータの大きさ）を読み出す（Ｓ２３０）。その後、マスタデバイス１００がターゲットデバイス２００から「ＳＵＣＣＥＳＳ」（転送要求サイズ＝転送済みサイズ）を実行後ステータスとして受信するまでステップ１３０乃至ステップ２３０の処理が繰り返される。即ち、メモリ１３０から読み出した転送リクエストを基に、図２のタイムチャートのクロック１１からクロック１９までの間接転送を繰り返す。
【００４０】
そして、上記間接転送を実行した結果、「ＳＵＣＣＥＳＳ」（転送要求サイズ＝転送済みサイズ）の実行後ステータスを受信したとき、転送制御部１２１はステップ１９０でメモリ１３０に格納した転送リクエストを消去し（Ｓ２２０）、その後、ステップ１１０に戻ってデータ処理部１１０からの他の転送リクエストの発行を監視する。
【００４１】
続いて、図４のフローチャートを参照して、「リード」のデータ転送の動作を説明する。なお、「リード」のデータ転送の動作についても、上記図３に示したところと同様の動作を含むが、この動作については図３と同様のステップ番号を付する。
【００４２】
図３にも示したように、内部インターフェース１２０の転送制御部１２１は、データ処理部１１０から転送リクエストが発行されるかを監視しており（Ｓ１１０）、「リード」の転送リクエストがデータ処理部１１０から発行された場合も、転送リクエストの内容を指定する信号を外部インターフェース１４０のＤＭＡＣ１４１から送信し（Ｓ１３０）、これに応じたターゲットデバイス２００の転送制御部２２１が実行前ステータスを返信する（Ｓ１４０）。ここで、「リード」の転送リクエストが発行された場合、ターゲットデバイス２００の転送制御部２２１は、この転送リクエストによって読み出しが要求されるデータ（以下、読み出しデータという）のすべてをマスタデバイス１００に送信できると判断したとき、「ＦＩＸ」を実行前ステータスとして返信し、読み出しデータのすべてをマスタデバイス１００に送信できないと判断したとき、「ＮＯＦＩＸ」を実行前ステータスとして返信する。
【００４３】
マスタデバイス１００の転送制御部１２１は外部インターフェース１４０を経由して実行前ステータスを取得し、これを解析する（Ｓ１５０）。
【００４４】
この解析の結果、実行前ステータスが「ＦＩＸ」であったとき、転送制御部１２１は直接転送モードを選択する。「リード」の直接転送モードにおいて、転送制御部１２１は、読み出しデータを外部インターフェース１４０を介して受信し、この読み出しデータをメモリ１３０に格納することなくデータ処理部１１０に直接引き渡す（Ｓ１６１）。「ＦＩＸ」の実行前ステータスによってデータの転送の完遂が保証されているからである。
【００４５】
ターゲットデバイス２００の転送制御部２２１は、読み出しデータのすべての送信を完遂後、実行後ステータスを返信する（Ｓ１７０）。ここで、ターゲットデバイスが「ＦＩＸ」を実行前ステータスとして発行しているので、実行後ステータスは常に「ＳＵＣＣＥＳＳ」（転送要求サイズ＝転送済みサイズ）になる。
【００４６】
マスタデバイス１００の転送制御部１２１は外部インターフェース１４０を経由して実行後ステータスを取得し、これを解析する（Ｓ１８０）。そして実行後ステータスを解析したマスタデバイス１００は、ステップ１１０に戻ってデータ処理部１１０からの他の転送リクエストの発行を監視する。
【００４７】
上記ステップ１５０の解析の結果、実行前ステータスが「ＮＯＦＩＸ」であったとき、転送制御部１２１は直接／間接転送モードを選択する。「リード」の直接／間接転送モードにおいて、転送制御部１２１は、転送リクエストと、ターゲットデバイス２００から送信されてくる一連のデータとをメモリ１３０に格納する（Ｓ１９１）。
【００４８】
上記読出しデータの送信を試みたターゲットデバイス２００の転送制御部２２１は、この試みの結果を示す実行後ステータスを返信する（Ｓ２００）。即ち、転送制御部２２１が、転送リクエストが要求する読出しデータの送信を試みた結果、このデータの全部を送信できなかったときは、「ＲＥＴＲＹ」を実行後ステータスとして返信し、一部を送信できなかったときは、「ＳＵＣＣＥＳＳ」（転送要求サイズ＞転送済みサイズ）を実行後ステータスとして返信する。一方、ターゲットデバイス２００でのデータ処理が進んで読み出しデータの全部を送信できたときは、「ＳＵＣＣＥＳＳ」（転送要求サイズ＝転送済みサイズ）を実行後ステータスとして返信する。
【００４９】
マスタデバイス１００の転送制御部１２１は外部インターフェース１４０を経由して実行後ステータスを取得し、これを解析する（Ｓ２１０）。
【００５０】
この解析の結果、実行後ステータスが「ＳＵＣＣＥＳＳ」（転送要求サイズ＝転送済みサイズ）であったとき、転送制御部１２１は、それまでにメモリ１３０に格納した読み出しデータを読み出してデータ処理部１１０に引き渡す（Ｓ２１１）。
【００５１】
続いて、転送制御部１２１は、メモリ１３０に格納したデータ（転送リクエストと読み出しデータ）を消去する（Ｓ２２０）。その後、ステップ１１０に戻ってデータ処理部１１０からの他の転送リクエストの発行を監視する。
【００５２】
上記ステップ２１０の解析の結果、実行後ステータスが「ＲＥＴＲＹ」、又は「ＳＵＣＣＥＳＳ」（転送要求サイズ＞転送済みサイズ）であったとき、転送制御部１２１は、ステップ１９０でメモリ１３０に格納した転送リクエスト（転送の相手と転送の向きとデータの大きさ）を読み出す（Ｓ２３０）。その後、マスタデバイス１００がターゲットデバイス２００から「ＳＵＣＣＥＳＳ」（転送要求サイズ＝転送済みサイズ）を実行後ステータスとして受信するまでステップ１３０乃至ステップ２３０の処理が繰り返される。
【００５３】
そして、マスタデバイス１００の転送制御部１２１は、「ＳＵＣＣＥＳＳ」（転送要求サイズ＝転送済みサイズ）の実行後ステータスを受信したとき、それまでにターゲットデバイス２００から受け取ってメモリ１３０に格納した読み出しデータをデータ処理部１１０に引渡し（Ｓ２１１）、メモリ１３０に格納したデータ（転送リクエストと読み出しデータ）の全てを消去する（Ｓ２２０）。その後、ステップ１０１に戻ってデータ処理部１１０からの他の転送リクエストの発行を監視する。
【００５４】
以上説明した本実施形態によれば、転送リクエストを発行するマスタデバイスの転送制御部は、データ転送を確実に実行できるか否かを示す実行前ステータスをターゲットデバイスから取得し、この実行前ステータスが「ＮＯＦＩＸ」であるときは、データ転送が完遂できなかった場合に備えて上記転送リクエストをメモリに格納しておく。そして、転送制御部は、直接転送によるデータ転送をまず試み、この試みの結果を示す実行後ステータスをターゲットデバイスから取得する。更にこの実行後ステータスが「ＲＥＴＲＹ」、又は「ＳＵＣＣＥＳＳ」（転送要求サイズ＞転送済みサイズ）であったときは、メモリに格納しておいた転送リクエストを読み出して間接転送によるデータ転送を再度試みる。
【００５５】
このようにして、ターゲットデバイスがデータ転送の完遂を保証しなければ再要求に備えて転送リクエストをメモリに格納する処理を実行する一方、ターゲットデバイスがデータ転送の完遂を保証すればこのような格納処理を省略するため、不必要なデータ格納処理を実行することによるトランザクションの遅延を回避することができる。
【００５６】
以上この発明の一実施形態について説明したが、上記実施形態はあくまでも例示であり、いわゆる当業者による通常の技術的手段を用いた代替が適宜可能である。例えば、上記実施形態においては、ＣＬＫ信号、ＲＥＣ信号、ＣＭＡ信号、ＳＴＡ信号、ＡＣＫ信号、ＥＮＡ信号、ＲＤＹ信号の各々を制御することによって各デバイス間のデータ転送を実現しているが、これに加えて、バス・パリティを制御する信号や、インタラプトを制御する信号を利用してデータ転送をより確実なものとしてもよい。
【００５７】
【発明の効果】
以上説明したように、本発明によれば、マスタデバイスは、転送処理を実行させるターゲットデバイスに転送リクエストを発行したとき、この転送リクエストによって要求されるデータ転送を確実に実行できるか否かを示すステータスを当該ターゲットデバイスから受け取る。そしてこのステータスが転送を確実に実行できないことを示すとき、マスタデバイスはメモリにデータを格納してから転送処理を実行させる一方、転送を確実に実行できることを示すとき、メモリにデータを格納することなしに転送処理を実行させる。従って、ターゲットデバイスがデータ転送を確実に実行できるときはメモリにデータを格納する時間が不要となるため、効率的なデータ転送を実現できる。
【図面の簡単な説明】
【図１】実施形態の物理的構成を示すブロック図である。
【図２】トランザクションの一例を示すタイムチャートである。
【図３】実施形態の動作を示すフローチャートである。
【図４】実施形態の動作を示すフローチャートである。
【符号の説明】
１００…マスタデバイス、１１０…データ処理部、１２０…内部インターフェース、１２１…転送制御部、１３０…マスタ側メモリ、１４０…外部インターフェース、１４１…ＤＭＡＣ、２００…ターゲットデバイス、３００…システムバス。
【図１】
2004287982.tif 000003
【図２】
2004287982.tif 000004
【図３】
2004287982.tif 000005
【図４】
2004287982.tif 000006