(57)【要約】【課題】  メモリからデータを読み出す際に、その読み出し回数を削減する。【解決手段】  カレントアドレス計測部２１６の値と直接入力データ数計測部２１０の値とに基づいてデータ取り込み方法判定部２１１がバス動作制御部２０６を使用すると判定した場合は、バス動作制御部２０６に対しバス動作開始要求を出し、データ格納制御選択部２１２によりバスデータ格納制御部２０７を選択して読み出しデータを格納する。また直接入力部２０８を使用すると判定した場合は、データ格納制御選択部２１２により直接入力データ格納制御部２０９を選択して読み出しデータを格納する。【選択図】      図２
2006134175.tif 000002
【特許請求の範囲】
【請求項１】
バスに接続され、所定のバスマスターがメモリに書き込むデータを読み出すメモリ転送制御装置であって、
読み出しデータを一時的に格納するデータ格納手段と、
バス上にトランザクションを発行し、バス動作を制御するバス動作制御手段と、
メモリから転送されるデータを格納するバスデータ格納制御手段と、
バスマスターからのデータを直接入力する直接入力手段と、
前記直接入力手段によって入力されたデータを前記データ格納手段に格納する直接入力データ格納制御手段と、
前記データ格納手段に対する格納動作において、前記バスデータ格納制御手段と前記直接入力データ格納制御手段の何れかを選択するデータ格納制御選択手段と、
前記直接入力手段によって入力されたデータの数と、前記データ格納手段に格納されたデータの数とを比較して、読み出しデータを取り込むために前記バス動作制御手段と前記直接入力手段のどちらを使用するかを判定する判定手段とを有し、
前記判定手段で前記バス動作制御手段を使用すると判定した場合は、前記バス動作制御手段に対しバス動作開始要求を出し、前記データ格納制御選択手段により前記バスデータ格納制御手段を選択して読み出しデータを取り込み、
前記判定手段で前記直接入力手段を使用すると判定した場合は、前記データ格納制御選択手段により前記直接入力データ格納制御手段を選択して読み出しデータを取り込むことを特徴とするメモリ転送制御装置。
【請求項２】
請求項１記載のメモリ転送制御装置と、前記メモリ転送制御装置が読み出し対象とするデータをメモリへ書き込む際に前記メモリ転送制御装置に対して該データを直接出力するバスマスターとを有することを特徴とするデータ処理システム。
【請求項３】
請求項１記載のメモリ転送制御装置と、前記メモリ転送制御装置が読み出し対象とするデータをメモリへ書き込むバスマスターと、前記バスマスターの書き込み動作を検出し、前記メモリ転送制御装置の直接入力手段に入力されるデータを生成する直接入力データ生成手段とを有することを特徴とするデータ処理システム。
【請求項４】
バスに接続され、所定のバスマスターがメモリに書き込むデータを読み出すメモリ転送制御装置であって、
読み出しデータを一時的に格納するデータ格納手段と、
バス上にトランザクションを発行し、バス動作を制御するバス動作制御手段と、
メモリから転送されるデータを前記データ格納手段に格納するバスデータ格納制御手段と、
読み出し対象データを書き込むトランザクションを検出する書き込みトランザクション検出手段と、
前記書き込みトランザクション検出手段によって検出された書き込みトランザクションにおける書き込みデータを前記データ格納手段に格納する書き込みデータ格納制御手段と、
前記データ格納手段に対する格納動作において、前記バスデータ格納制御手段と前記書き込みデータ格納制御手段の何れかを選択するデータ格納制御選択手段と、
前記書き込みトランザクション検出手段によって検出された書き込みトランザクションにおける書き込みデータの数と、前記データ格納手段に格納されたデータの数とを比較して、読み出しデータを取り込むために前記バス動作制御手段と書き込みトランザクション検出手段のどちらを使用するかを判定する判定手段とを有し、
前記判定手段で前記バス動作制御手段を使用すると判定した場合は、前記バス動作制御手段に対しバス動作開始要求を出し、前記データ格納制御選択手段により前記バスデータ格納制御手段を選択して読み出しデータを取り込み、
前記判定手段で書き込みトランザクション検出手段を使用すると判定した場合は、前記データ格納制御選択手段により前記書き込みデータ格納制御手段を選択して読み出しデータを取り込むことを特徴とするメモリ転送制御装置。
【請求項５】
前記書き込みトランザクション検出手段は、前記バスに発行されるトランザクションのアドレス値と転送方向に基づいて前記読み出し対象データを書き込むトランザクションを検出することを特徴とする請求項４記載のメモリ転送制御装置。
【請求項６】
前記書き込みトランザクション検出手段は、前記バスに発行されるトランザクションのバスマスター識別値と転送方向に基づいて前記読み出し対象データを書き込むトランザクションを検出することを特徴とする請求項４記載のメモリ転送制御装置。
【請求項７】
請求項４記載のメモリ転送制御装置と、前記メモリ転送制御装置が読み出し対象とするデータをメモリへ書き込む一以上のバスマスターとを有することを特徴とするデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイス間でデータを転送する技術に関する。
【背景技術】
【０００２】
従来、２つのデバイスの間でデータの転送を行う場合、ＣＰＵがそれぞれのデバイスに直接アクセスして処理を行うと高速に転送することができない。また、２つのデバイスにおける転送速度や転送単位等が異なることが多く、一定時間内に転送動作を完了しなければならない場合もあり、デバイス間を直接接続して転送するには専用のバッファメモリを設ける必要があり、コストアップになる。
【０００３】
そのため、それぞれのデバイスに対して独立に動作する「ＤＭＡ」機能を設け、共有のメモリ領域に対してＤＭＡで書き込み及び読み出しを行い、デバイス間の転送速度を緩衝し、高速な転送を低コストで実現できるものが提案されている（例えば、特許文献１参照。）。また、一旦共有のメモリ領域に書き込まれたデータは、単なる一時的なものとしてだけでなく、ＣＰＵが別の用途に使用することもできる。
【０００４】
このようなシステムは、一般的に図１に示すようなブロックの構成によって実現されている。
【０００５】
図１は、一般的なデバイス間におけるデータ転送システムの構成の一例を示すブロック図である。図１に示すように、１つのシステムバスにＣＰＵ１００、メモリコントローラ１０１、ＤＭＡコントローラ１１２、ＤＭＡコントローラ１２２が接続されている。
【０００６】
ＣＰＵ１００は、各種コントローラやシステム全体の制御を行う。メモリコントローラ１０１はＲＡＭ１０２に対するデータの読み書きを制御する。ＲＡＭ１０２はＤＲＡＭといったメモリデバイスである。デバイスコントローラ１１１及び１２１は、それぞれデバイス１１０及び１２０に対するデータの送受信を制御する。そして、ＤＭＡコントローラ１１２及び１２２は、それぞれデバイスコントローラ１１１及び１２１とＲＡＭ１０１との間でＤＭＡ転送を行う。
【０００７】
図１に示す構成において、デバイス１１０からデバイス１２０へデータ転送する場合、ＣＰＵ１００の制御によってＤＭＡコントローラ１１２がデバイス１１０からのデータをＲＡＭ１０２へ書き込む動作と、ＤＭＡコントローラ１２２がデバイス１２０へのデータをＲＡＭ１０２から読み出す動作が、それぞれのデバイスにおける転送速度に応じて独立に行われる。
【特許文献１】特開2002-288116号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記従来の転送処理においては、ＤＭＡコントローラ１２２は、ＤＭＡコントローラ１１２によって書き込まれた量と同じ量のデータをＲＡＭ１０２から読み出さなければならない。そのため、ＲＡＭ１０２からの読み出しには、ＲＡＭ１０２を構成するメモリデバイスに依存した待ち時間が発生する。この読み出しにおける待ち時間は、デバイス１２０に対する転送性能だけでなく、待っている間ＤＭＡコントローラ１２２がシステムバスを占有するのでシステム全体の性能にも影響を及ぼすという問題がある。
【０００９】
本発明は上記課題を解決するためになされたもので、メモリからデータを読み出す際に、その読み出し回数を削減することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、バスに接続され、所定のバスマスターがメモリに書き込むデータを読み出すメモリ転送制御装置であって、読み出しデータを一時的に格納するデータ格納手段と、バス上にトランザクションを発行し、バス動作を制御するバス動作制御手段と、メモリから転送されるデータを格納するバスデータ格納制御手段と、バスマスターからのデータを直接入力する直接入力手段と、前記直接入力手段によって入力されたデータを前記データ格納手段に格納する直接入力データ格納制御手段と、前記データ格納手段に対する格納動作において、前記バスデータ格納制御手段と前記直接入力データ格納制御手段の何れかを選択するデータ格納制御選択手段と、前記直接入力手段によって入力されたデータの数と、前記データ格納手段に格納されたデータの数とを比較して、読み出しデータを取り込むために前記バス動作制御手段と前記直接入力手段のどちらを使用するかを判定する判定手段とを有し、前記判定手段で前記バス動作制御手段を使用すると判定した場合は、前記バス動作制御手段に対しバス動作開始要求を出し、前記データ格納制御選択手段により前記バスデータ格納制御手段を選択して読み出しデータを取り込み、前記判定手段で前記直接入力手段を使用すると判定した場合は、前記データ格納制御選択手段により前記直接入力データ格納制御手段を選択して読み出しデータを取り込むことを特徴とする。
【００１１】
また、本発明は、バスに接続され、所定のバスマスターがメモリに書き込むデータを読み出すメモリ転送制御装置であって、読み出しデータを一時的に格納するデータ格納手段と、バス上にトランザクションを発行し、バス動作を制御するバス動作制御手段と、メモリから転送されるデータを前記データ格納手段に格納するバスデータ格納制御手段と、読み出し対象データを書き込むトランザクションを検出する書き込みトランザクション検出手段と、前記書き込みトランザクション検出手段によって検出された書き込みトランザクションにおける書き込みデータを前記データ格納手段に格納する書き込みデータ格納制御手段と、前記データ格納手段に対する格納動作において、前記バスデータ格納制御手段と前記書き込みデータ格納制御手段の何れかを選択するデータ格納制御選択手段と、前記書き込みトランザクション検出手段によって検出された書き込みトランザクションにおける書き込みデータの数と、前記データ格納手段に格納されたデータの数とを比較して、読み出しデータを取り込むために前記バス動作制御手段と書き込みトランザクション検出手段のどちらを使用するかを判定する判定手段とを有し、前記判定手段で前記バス動作制御手段を使用すると判定した場合は、前記バス動作制御手段に対しバス動作開始要求を出し、前記データ格納制御選択手段により前記バスデータ格納制御手段を選択して読み出しデータを取り込み、前記判定手段で書き込みトランザクション検出手段を使用すると判定した場合は、前記データ格納制御選択手段により前記書き込みデータ格納制御手段を選択して読み出しデータを取り込むことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、メモリからデータを読み出す際に、その読み出し回数を削減することができるため、データ転送性能及びシステム全体の性能を向上させると共に、消費電力も削減できる。
【発明を実施するための最良の形態】
【００１３】
以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。
【実施例１】
【００１４】
図２は、実施例１におけるＤＭＡコントローラの構成の一例を示すブロック図である。図２に示すように、ＤＭＡコントローラ２００は、レジスタインターフェース（Ｉ／Ｆ）２０１、レジスタアクセス制御部２０２、制御レジスタ２０３、動作制御部２０４、バスインターフェース２０５、バス動作制御部２０６、バスデータ格納制御部２０７、直接入力部２０８、直接入力データ格納制御部２０９、直接入力データ数計測部２１０、データ取り込み方法判定部２１１、データ格納制御選択部２１２、格納データ数計測部２１３、データ格納部２１４、デバイスインターフェース２１５、カレントアドレス計測部２１６から構成されている。
【００１５】
ここで、図２に示すＤＭＡコントローラ２００の各ブロックについて詳細に説明する。レジスタインターフェース２０１は、不図示のＣＰＵがＤＭＡコントローラ２００の動作制御を行うために制御レジスタ２０３に対して読み書きを行う入出力部である。レジスタアクセス制御部２０２は、ＣＰＵアクセスにおけるアドレス値のデコード処理を行い、所定のアドレスにマッピングされた制御レジスタ２０３に対する読み書きを制御する。制御レジスタ２０３は、ＤＭＡコントローラ２００の制御用インターフェースとして使用されるレジスタ群である。
【００１６】
図３は、制御レジスタ２０３の詳細な構成を示すブロック図である。図３に示すように、制御レジスタ２０３は、ＤＭＡコントローラ２００の動作モードや動作開始及び停止等を設定するコントロールレジスタ３０１、ＤＭＡを行うメモリ領域の開始アドレスを設定するスタートアドレスレジスタ３０２、ＤＭＡを行うメモリ領域の終了アドレスを設定するエンドアドレスレジスタ３０３、ＤＭＡ動作時において転送中のアドレスを示すカレントアドレスレジスタ３０４等で構成される。
【００１７】
図２に戻り、動作制御部２０４は、制御レジスタ２０３に設定された値に従ってＤＭＡコントローラ２００における各ブロックの初期化や開始或いは停止等の制御を行う。
【００１８】
バスインターフェース２０５は、メモリにアクセスするためのバス動作における入出力部である。バス動作制御部２０６は、データ取り込み方法判定部２１１からの開始要求に従ってバスにトランザクションを発行し、メモリへアクセスする。バスを使用してメモリから読み出すデータの長さは、直接入力データ数計測部２１０で計測されている値と格納データ数計測部２１３で計測されている値の差として認識され、その長さを１回のトランザクションで転送可能な長さに分割してトランザクションを発行する。
【００１９】
また、各トランザクションにおけるアドレス値は、カレントアドレスレジスタ３０４の値から生成される。トランザクションを発行する際は、データ格納部２１４にそのトランザクションで転送されるデータ長分の空きがあることを調べ、空きがある状態になるまでそのトランザクションは発行されない。
【００２０】
バスデータ格納制御部２０７は、バス動作制御部２０６によって発行されたトランザクションにおいて得られたメモリからの読み出しデータをデータ格納部２１４へ格納する。直接入力部２０８は、ＤＭＡコントローラ２００が読み出し対象とするデータをメモリへ書き込むバスマスターに接続され、そのバスマスターがバストランザクションを発行し、データをメモリに書き込む際に、書き込みデータが直接入力される。
【００２１】
直接入力データ格納制御部２０９は、直接入力部２０８から入力されたデータをデータ格納部２１４に空きがある限り格納する。直接入力データ数計測部２１０は、直接入力部２０８から入力されたデータの数を計測する。
【００２２】
データ取り込み方法判定部２１１は、直接入力データ数計測部２１０による入力データ数と格納データ数計測部２１３による格納データ数とを比較する。ここで、入力データ数と格納データ数が一致している場合、データ取り込み方法として直接入力部２０８を使用すると判定し、データ格納制御選択部２１２に対してデータ格納部２１４に対する制御を直接入力データ格納制御部２０９が行うように選択信号を出力し、バス動作制御部２０６に対する開始要求を取り下げる。
【００２３】
また、入力データ数が格納データ数より多い場合、データ取り込み方法としてバスインターフェース２０５を使用すると判定し、データ格納制御選択部２１２に対してデータ格納部２１４に対する制御をバスデータ格納制御部２０７が行うように選択信号を出力し、バス動作制御部２０６に対する開始要求を出す。
【００２４】
データ格納制御選択部２１２は、データ取り込み方法判定部２１１の判定によって生成される選択信号に応じてデータ格納部２１４に対する制御をバスデータ格納制御部２０７と直接入力データ格納制御部２０９との間で切り替える。
【００２５】
格納データ数計測部２１３は、データ格納部２１４に格納されたデータの数を計測する。データ格納部２１４は、所定サイズのＦＩＦＯとして構成され、バスインターフェース２０５又は直接入力部２０８から取り込まれた読み出しデータを一時的に格納する。
【００２６】
デバイスインターフェース２１５は、データ格納部２１４に格納されているデータに対してデバイスコントローラからアクセスするための入出力部である。
【００２７】
カレントアドレス計測部２１６は、データ格納部２１４に対してデータが格納されると、格納されたデータ長分カレントアドレスレジスタ３０４の値を更新する。
【００２８】
ここで、図４に示すタイミングチャートを用いて実施例１におけるＤＭＡコントローラ２００の動作について説明する。
【００２９】
尚、実施例１では、直接入力部２０８に対して４バイト単位のデータが入力され、バスインターフェース２０８に対して４バイト単位のトランザクションが入力され、データ格納部２１４のＦＩＦＯサイズを８バイトとし、デバイスインターフェース２１５に対して４バイト単位のデータが出力され、ＤＭＡ対象となるメモリ領域のスタートアドレス及びエンドアドレスをそれぞれ0x1000番地及び0x2000番地として説明するが、本発明はこれに限定されるものではない。
【００３０】
区間Ｔ１において、不図示のＣＰＵが制御レジスタ２０３のスタートアドレスレジスタ３０２とエンドアドレスレジスタ３０３へメモリ領域の設定を行い、コントロールレジスタ３０１に動作開始の設定を行う。動作開始時において、ＤＭＡコントローラ２００は、直接入力データ数計測部２１０と格納データ数計測部２１３の計測値をそれぞれ“０”に初期化する。そして、データ取り込み方法判定部２１１は直接入力部２０８を使用すると判定し、データ格納制御選択部２１２には、データ格納部２１４に対して制御を直接入力データ格納制御部２０９が行うように選択信号を出力し、バス動作制御部２０６に対する開始要求を出さず、スタートアドレスレジスタ３０２の値（0x1000）をカレントアドレスレジスタ３０４へコピーする等の初期化処理を行う。
【００３１】
区間Ｔ２において、ＤＭＡコントローラ２００が読み出し対象とするデータをメモリへ書き込むバスマスターがそのデータをメモリに書き込み始めると、直接入力部２０８からのデータ入力が開始される。直接入力データ数計測部２１０で、直接入力部２０８からのデータ数のカウントアップが開始される。直接入力データ格納制御部２０９は、データ格納部２１４にデータが格納可能な状態なのでデータ（DATA0とDATA1）を格納する。これにより、格納データ数計測部２１３はデータ格納部２１４に格納されたデータ数のカウントアップを開始する。
【００３２】
カレントアドレス計測部２１６は、データ格納部２１４にデータが格納される毎にそのデータ長（４バイト）分カレントアドレスレジスタ３０４の値を更新する。データ取り込み方法判定部２１１は、直接入力データ数計測部２１０及び格納データ数計測部２１３の計測値を比較し、入力データ数と格納データ数が一致しているので、データ取り込み方法として直接入力部２０８を使用する状態を保持する。
【００３３】
区間Ｔ３において、データ格納部２１４に格納されたデータ数が８バイトに到達しフル状態となったため、直接入力データ格納制御部２０９はデータ格納部２１４に対する格納動作を停止する。これに伴い、格納データ数計測部２１３も、カウントアップ動作を停止する。直接入力部２０８からのデータ入力及び直接入力データ数計測部２１０のカウントアップは、他の状態に関わらず独立して動作する。
【００３４】
データ取り込み方法判定部２１１は、直接入力データ数計測部２１０及び格納データ数計測部２１３の計測値を比較し、入力データ数が格納データ数より多いので、データ取り込み方法としてバスインターフェース２０５を使用すると判定する。そして、データ格納制御選択部２１２には、データ格納部２１４に対する制御をバスデータ格納制御部２０７が行うように選択信号を出力し、バス動作制御部２０６に対する開始要求を出す。
【００３５】
バス動作制御部２０６は、バスを使用しメモリから読み出すデータの長さを、直接入力データ数計測部２１０及び格納データ数計測部２１３の計測値の差（８バイト）として認識し、１回のトランザクションが４バイト単位で行われるため、２回のトランザクションに分割してメモリからの読み出しを行う。但し、データ格納部２１４がフル状態のため、４バイト以上の空きができるまでトランザクションは発行されない。
【００３６】
区間Ｔ４において、デバイスコントローラがデバイスインターフェース２１５によりデータ格納部２１４のデータを取り出す動作が開始される。データ格納部２１４は、データが取り出されるとフル状態は解除され、データを格納可能な状態になる。バス動作制御部２０６は、データ格納部２１４に４バイト以上の空きができたため、カレントアドレスレジスタ３０４で示されるアドレス値に従って、アドレス値が0x1008番地で転送長４バイト及びアドレス値が0x100C番地で転送長４バイトのバストランザクションを発行し、それぞれメモリからDATA2及びDATA3を読み出す。そして、１回のバストランザクションが完了すると、バスデータ格納制御部２０７はメモリから読み出したデータをデータ格納部２１４へ格納し、格納データ数計測部２１３がカウントアップ動作を行い、カレントアドレス計測部２１６は転送長分カレントアドレスレジスタ３０４の値を更新する。バスインターフェース２０５からのデータ取り込みは、直接入力データ数計測部２１０及び格納データ数計測部２１３の計測値が一致するまで続けられる。
【００３７】
区間Ｔ５において、再び直接入力データ数計測部２１０及び格納データ数計測部２１３の計測値が一致すると、データ取り込み方法判定部２１１は直接入力部２０８を使用すると判定する。そして、データ格納制御選択部２１２に対してデータ格納部２１４に対する制御を直接入力データ格納制御部２０９が行うように選択信号を出力し、バス動作制御部２０６に対する開始要求を取り下げる。これにより、バス動作制御部２０６は開始要求が取り下げられたために、読み出し対象データをメモリへ書き込むバスマスターがデータを書き込んでいない領域に対するトランザクションを発行することはない。
【００３８】
デバイスインターフェース２１５によりデータ格納部２１４のデータを取り出す動作が並行して行われていると、データ格納部２１４がフル状態にならず、直接入力部２０８からのデータ（DATA4、DATA5、DATA6、DATA7）を直接入力データ格納制御部２０９から全てデータ格納部２１４に取り込むことができる。
【００３９】
以降、カレントアドレスレジスタ３０４の値がエンドアドレスレジスタ３０３の値に到達するまで、データ格納部２１４の状態に応じて上述した動作が繰り返される。その後、カレントアドレスレジスタ３０４の値がエンドアドレスレジスタ３０３の値に到達すると、ＤＭＡコントローラ２００は動作を停止し、ＣＰＵに割り込み通知等を行い、ＤＭＡ動作が完了したことを通知する。
【００４０】
実施例１によれば、ＤＭＡコントローラがメモリからデータを読み出す動作において、メモリからデータを読み出す回数を削減することができる。
【実施例２】
【００４１】
次に、図面を参照しながら本発明に係る実施例２について詳細に説明する。実施例２では、実施例１で説明したＤＭＡコントローラを用いたデータ処理システムとして、パーソナルコンピュータ（ＰＣ）等のホストコンピュータとそれに接続されるプリンタとで構成される場合を例に説明する。
【００４２】
図５は、実施例２におけるデータ処理システムの構成の一例を示すブロック図である。図５に示すように、ＰＣ５００とプリンタ５１０は、ＵＳＢケーブルで接続されている。ＵＳＢは高速シリアルバス通信規格であり、様々な機器を接続するためのものとして広く一般的に普及している。
【００４３】
プリンタ５１０には、実施例１のＤＭＡコントローラを含む半導体集積回路５１１と、メモリカードスロット等に接続されたメモリカード５１２と、液晶ディスプレイ等の表示部５１３と、半導体集積回路５１１が動作時にワークメモリ領域として使用するＤＲＡＭ５１４と、印刷を行う印字ヘッド等の印字部５１５とが搭載されている。
【００４４】
半導体集積回路５１１は、プリンタ５１０全体を制御するＣＰＵ５２０、ＣＰＵ５２０の動作プログラム等が格納された不揮発性のＲＯＭ５２１、システムバス５２６の調停や割り込み及びタイマ制御等を行う周辺回路５２２、表示部５１３へ表示データを出力する表示コントローラ５３２３、ＤＲＡＭ５１４に対してデータの読み書き制御を行うＤＲＡＭコントローラ５３２４、印字部５１５を制御する印字コントローラ５３２５、実施例１で説明したＤＭＡコントローラ５３０及び５３２、ＰＣ５００と接続するためのＵＳＢデバイスコントローラ５３１、メモリカード５１２とのデータ転送を制御するカードコントローラ５３３から構成されている。
【００４５】
そして、ＤＭＡコントローラ５３２は、ＤＭＡ転送でメモリへデータを書き込む際に、システムバス５２６へ書き込みトランザクションを発行すると同時に、そのデータを直接ＤＭＡコントローラ５３０へ出力するように構成されている。
【００４６】
次に、実施例２におけるデータ処理システムの動作について、プリンタ５１０からＰＣ５００へメモリカード５１２に保存されている画像ファイルを転送する場合を例に、図４のタイミングチャートと図６のフローチャートを用いて説明する。
【００４７】
図６は、実施例２におけるＤＭＡ転送処理を示すフローチャートである。まずステップＳ６０１において、ＰＣ５００からプリンタ５１０へメモリカード５１２内に蓄積されたファイルデータに対する転送要求が来ると、ＣＰＵ５２０は指定されたファイルデータをメモリカード５１２から読み出してＰＣ５００へ転送するための共有領域をＤＲＡＭ５１４上に確保する。
【００４８】
次に、ステップＳ６０２において、ＣＰＵ５２０は、ＰＣ５００へＤＭＡでデータ転送するためにＵＳＢデバイスコントローラ５３１の設定を行う。次に、ステップＳ６０３において、ＣＰＵ５２０は、ＤＲＡＭ５１４上に確保された領域に対してＤＭＡで読み出すための設定をＤＭＡコントローラ５３０に対して行い、ＤＭＡコントローラ５３０のＤＭＡ動作を開始する。この状態において、ＤＭＡコントローラ５３０は図４に示す区間Ｔ１の状態となり、ＤＭＡコントローラ５３２からの直接入力が開始されるのを待つ。
【００４９】
次に、ステップＳ６０４において、ＣＰＵ５２０は、メモリカード５１２からＤＭＡでデータ転送するためにカードコントローラ５３３の設定を行う。次に、ステップＳ６０５において、ＣＰＵ５２０は、ＤＲＡＭ５１４上に確保された領域に対してＤＭＡで書き込むための設定をＤＭＡコントローラ５３２に対して行い、ＤＭＡコントローラ５３２のＤＭＡ動作を開始する。
【００５０】
これにより、ＤＭＡコントローラ５３０は、ＤＭＡコントローラ５３２からの直接入力が開始され、ＵＳＢデバイスコントローラ５３１の転送速度、ＤＭＡコントローラ５３２の書き込み速度、ＤＭＡコントローラ５３０に内蔵されるバッファの状態に応じて、区間Ｔ２〜Ｔ５の状態を繰り返す。
【００５１】
ＵＳＢデバイスコントローラ５３１の転送速度がＤＭＡコントローラ５３２の書き込み速度に対して高速であり、直接入力データをそのまま転送する状態（区間Ｔ５）を保って動作すると、ＤＭＡコントローラ５３０がＤＲＡＭ５１４からデータを読み出すことが一切なくなる。ここで、ＤＭＡコントローラ５３０に内蔵されるバッファがフル状態（区間Ｔ３）になったとしても、システムバス５２６からＤＲＡＭ５１４のデータを読み出し（区間Ｔ５）、直接入力データをそのまま転送する状態（区間Ｔ５）に戻ることができる。
【００５２】
従って、ＤＲＡＭ５１４に対する読み出し回数が減り、ＤＲＡＭ５１４からの読み出し待ち時間が減少するので、ＰＣ５００に対するＵＳＢの転送性能が向上する。
【００５３】
また、印刷動作中で、印字コントローラ５２５がシステムバス５２６に大量のトランザクションを発生している状況であっても、ＤＲＡＭ５１４への読み出しトランザクションが発生しないため、システム全体としての性能を向上させることができる。
【００５４】
最後に、ステップＳ６０６において、ＣＰＵ５２０は、割り込み通知等でＤＭＡコントローラ５３０とＤＭＡコントローラ５３２のＤＭＡ転送が終了するのを待つ。
【００５５】
尚、ＰＣ５００へのファイル転送後、ＣＰＵ５２０は、ＤＲＡＭ５１４へ書き込まれた画像ファイルデータを表示可能な形式へ変換して表示部５１３へ出力したり、画像処理、印刷処理を行って印字部５１５から印刷したりすることができる。
【００５６】
実施例２によれば、本発明に係るＤＭＡコントローラを用いたデータ処理システムにおいて、メモリからデータを読み出す回数を削減することができる。
【実施例３】
【００５７】
次に、図面を参照しながら本発明に係る実施例３について詳細に説明する。実施例２では、ＤＭＡコントローラ５３０に対して読み出し対象データをメモリへ書き込むＤＭＡコントローラ５３２がその書き込みデータを直接出力する機能を有していたが、その機能がない既存のＤＭＡコントローラを使用して本発明のデータ処理システムを実現する場合は、新たにその機能を追加しなければならない。
【００５８】
その際、図７に示すように、既存のＤＭＡコントローラ７０１自体には機能追加を行わず、そのバス出力信号からバス書き込みを検知し、ＤＭＡコントローラ５３０に直接入力するデータを生成する直接入力データ生成部７０２を設ける構成としても良い。
【００５９】
このような構成にすることで、既存のＤＭＡコントローラ７０１を変更することなく、データ処理システムを実現することができる。
【００６０】
尚、実施例２、３では、本発明に係るＤＭＡコントローラを用いたデータ処理システムとして、ＰＣ等のホストとそれに接続されるプリンタを例に説明したが、本発明はこれに限定されるものではなく、所定のバスマスターがメモリに書き込むデータを読み出すＤＭＡコントローラを内蔵するものならば、他の周辺装置やホストにも適用可能である。
【００６１】
また、上述した実施例では、ＤＭＡコントローラに接続されるデバイスコントローラとしてＵＳＢデバイスコントローラを例に説明したが、本発明はこれに限定されるものではなく、ＤＭＡ転送可能であれば、他の通信デバイスコントローラや入出力（Ｉ／Ｏ）デバイスコントローラや画像処理コントローラにも適用可能である。
【００６２】
また、ＤＭＡコントローラに読み出し対象データを直接出力するバスマスターとして、カードコントローラに接続されるＤＭＡコントローラを例に説明したが、本発明はこれに限定されるものではなく、読み出し対象データを直接出力するものならば、一般的なバスマスターに適用可能である。
【００６３】
更に、実施例３においては、読み出し対象データを直接出力する機能を有しない一般的なバスマスターにも適用可能である。
【００６４】
以上説明したように、実施例によれば、ＤＭＡコントローラがメモリからデータを読み出す動作において、メモリからデータを読み出す回数を削減することができる。
【実施例４】
【００６５】
次に、図面を参照しながら本発明に係る実施例４について詳細に説明する。
【００６６】
図８は、実施例４におけるＤＭＡコントローラの構成の一例を示すブロック図である。図８に示すように、ＤＭＡコントローラ８００は、レジスタインターフェース（Ｉ／Ｆ）８０１、レジスタアクセス制御部８０２、制御レジスタ８０３、動作制御部８０４、バスインターフェース８０５、バス動作制御部８０６、バスデータ格納制御部８０７、書き込みトランザクション検出部８０８、書き込みデータ格納制御部８０９、書き込みデータ数計測部８１０、データ取り込み方法判定部８１１、データ格納制御選択部８１２、格納データ数計測部８１３、データ格納部８１４、デバイスインターフェース８１５、カレントアドレス計測部８１６から構成されている。
【００６７】
ここで、図８に示すＤＭＡコントローラ８００の各ブロックについて詳細に説明する。レジスタインターフェース８０１は、不図示のＣＰＵがＤＭＡコントローラ８００の動作制御を行うために制御レジスタ８０３に対して読み書きを行う入出力部である。レジスタアクセス制御部８０２は、ＣＰＵアクセスにおけるアドレス値のデコード処理を行い、所定のアドレスにマッピングされた制御レジスタ８０３に対する読み書きを制御する。制御レジスタ８０３は、ＤＭＡコントローラ８００の制御用インターフェースとして使用されるレジスタ群である。このレジスタ群の構成は、実施例１で用いた図３に示すレジスタ群と同様な構成であり、詳細な説明は省略する。
【００６８】
動作制御部８０４は、制御レジスタ８０３に設定された値に従ってＤＭＡコントローラ８００における各ブロックの初期化や開始或いは停止等の制御を行う。
【００６９】
バスインターフェース８０５は、メモリにアクセスするためのバス動作における入出力部である。バス上では、所定のプロトコルに従ってバスマスターとスレーブデバイスとの間でデータ転送を行う一連の処理（トランザクション）が行われる。
【００７０】
１回のトランザクションにおいて、バスマスターは、転送対象領域を示すアドレス値、読み書きを示す転送方向、転送データの長さを出力し、書き込みならば更にデータを出力してスレーブデバイスが受け取る、一方、読み出しならばアドレス値で示されるスレーブデバイスがデータを出力し、バスマスターが受け取る動作が行われる。ここで、バスからバスインターフェース６に入力される情報はバスを使用しているバスマスターとスレーブデバイスの出力が選択されたもの、即ち、バス上で行われているトランザクションの内容そのものであるため、他のバスマスターによって発行されたトランザクションのアドレス値、転送方向、転送長、データ等が含まれている。
【００７１】
バス動作制御部８０６は、データ取り込み方法判定部８１１からの開始要求に従ってバスにトランザクションを発行し、メモリへアクセスする。バスを使用してメモリから読み出すデータの長さは、書き込みデータ数計測部８１０で計測されている値と格納データ数計測部８１３で計測されている値の差として認識され、その長さを１回のトランザクションで転送可能な長さに分割してトランザクションを発行する。
【００７２】
また、各トランザクションにおけるアドレス値は、カレントアドレスレジスタ３０４の値から生成される。トランザクションを発行する際は、データ格納部８１４にそのトランザクションで転送されるデータ長分の空きがあることを調べ、空きがある状態になるまでそのトランザクションは発行されない。
【００７３】
バスデータ格納制御部８０７は、バス動作制御部８０６によって発行されたトランザクションにおいて得られたメモリからの読み出しデータをデータ格納部８１４へ格納する。書き込みトランザクション検出部８０８は、バス上で他のバスマスターによって発行されるトランザクションのアドレス値と転送方向を調べ、ＤＭＡを行うメモリ領域（スタートアドレスレジスタ３０２とエンドアドレスレジスタ３０３で設定される領域）に対する書き込みトランザクションを検出し、書き込みデータ格納制御部８０９と書き込みデータ数計測部８１０に検出したことを通知する。
【００７４】
書き込みデータ格納制御部８０９は、書き込みトランザクション検出部８０８からの通知を受け、検出された書き込みトランザクションにおける書き込みデータをデータ格納部８１４に空きがある限り格納する。
【００７５】
書き込みデータ数計測部８１０は、書き込みトランザクション検出部８０８からの通知を受け、検出された書き込みトランザクションにおける書き込みデータの数を計測する。
【００７６】
データ取り込み方法判定部８１１は、書き込みデータ数計測部８１０による書き込みデータ数と格納データ数計測部８１３による格納データ数とを比較する。ここで、書き込みデータ数と格納データ数が一致している場合、データ取り込み方法として書き込みトランザクション検出部８０８を使用すると判定し、データ格納制御選択部８１２に対してデータ格納部８１４に対する制御を書き込みデータ格納制御部８０９が行うように選択信号を出力し、バス動作制御部８０６に対する開始要求を取り下げる。
【００７７】
また、書き込みデータ数が格納データ数より多い場合、データ取り込み方法としてバス動作制御部８０６を使用すると判定し、データ格納制御選択部８１２に対してデータ格納部８１４に対する制御をバスデータ格納制御部８０７が行うように選択信号を出力し、バス動作制御部８０６に対する開始要求を出す。
【００７８】
データ格納制御選択部８１２は、データ取り込み方法判定部８１１の判定によって生成される選択信号に応じてデータ格納部８１４に対する制御をバスデータ格納制御部８０７と書き込みデータ格納制御部８０９との間で切り替える。
【００７９】
格納データ数計測部８１３は、データ格納部８１４に格納されたデータの数を計測する。データ格納部８１４は、所定のサイズのＦＩＦＯとして構成され、バス動作制御部８０６又は書き込みトランザクション検出部８０８によって取り込まれた読み出しデータを一時的に格納する。
【００８０】
デバイスインターフェース８１５は、データ格納部８１４に格納されているデータに対してデバイスコントローラからアクセスするための入出力部である。
【００８１】
カレントアドレス計測部８１６は、データ格納部８１４に対してデータが格納されると、格納されたデータ長分カレントアドレスレジスタ３０４の値を更新する。
【００８２】
ここで、図９に示すタイミングチャートを用いて実施例４におけるＤＭＡコントローラ８００の動作について説明する。
【００８３】
尚、実施例４では、バス上では４バイト単位のトランザクション、データ格納部８１４のＦＩＦＯサイズを８バイトとし、デバイスインターフェース８１５に対して４バイト単位のデータが出力され、ＤＭＡ対象となるメモリ領域のスタートアドレス及びエンドアドレスをそれぞれ0x1000番地及び0x2000番地として説明するが、本発明はこれに限定されるものではない。
【００８４】
区間Ｔ１において、不図示のＣＰＵが制御レジスタ８０３のスタートアドレスレジスタ３０２とエンドアドレスレジスタ３０３へメモリ領域の設定を行い、コントロールレジスタ３０１に動作開始の設定を行う。動作開始時において、ＤＭＡコントローラ８００は、書き込みデータ数計測部８１０と格納データ数計測部８１３の計測値をそれぞれ“０”に初期化する。そして、データ取り込み方法判定部８１１は書き込みトランザクション検出部８０８を使用すると判定し、データ格納制御選択部８１２には、データ格納部８１４に対する制御を書き込みデータ格納制御部８０９が行うように選択信号を出力し、バス動作制御部８０６に対する開始要求を出さず、スタートアドレスレジスタ３０２の値（0x1000）をカレントアドレスレジスタ３０４へコピーする等の初期化処理を行う。
【００８５】
区間Ｔ２において、ＤＭＡコントローラ８００が読み出し対象とするデータをメモリへ書き込むバスマスターがそのデータをメモリに書き込み始めると、バス上に書き込みトランザクションが発生する。書き込みトランザクション検出部８０８は、バス上のトランザクションにおけるアドレス値と転送方向（図９におけるトランザクション方向は、Lowが読み出し、Highが書き込みであることを示す）から0x1000から0x2000番地の領域に対する書き込みトランザクションの検出を行い、0x1000番地と0x1004番地に対する書き込みトランザクションが発生したことを書き込みデータ格納制御部８０９及び書き込みデータ数計測部８１０へ通知する。書き込みデータ数計測部８１０は、書き込みトランザクションにおける書き込みデータ数のカウントアップを開始する。また、書き込みデータ格納制御部８０９は、データ格納部８１４にデータが格納可能な状態なので書き込みトランザクションにおけるデータ（DATA0とDATA1）を格納する。これにより、格納データ数計測部８１３は、データ格納部８１４に格納されたデータ数のカウントアップを開始する。
【００８６】
カレントアドレス計測部８１６は、データ格納部８１４にデータが格納される毎にそのデータ長（４バイト）分カレントアドレスレジスタ３０４の値を更新する。データ取り込み方法判定部８１１は、書き込みデータ数計測部８１０及び格納データ数計測部８１３の計測値を比較し、入力データ数と格納データ数が一致しているので、データ取り込み方法として書き込みトランザクション検出部８０８を使用する状態を保持する。
【００８７】
区間Ｔ３において、データ格納部８１４に格納されたデータ数が８バイトに到達しフル状態となったため、書き込みデータ格納制御部８０９は、書き込みトランザクション検出部８０８からの通知があってもデータ格納部８１４に対する格納動作は行わない。これに伴い、格納データ数計測部８１３も、カウントアップ動作を停止する。書き込みトランザクション検出部８０８の書き込みトランザクション検出動作及び書き込みデータ数計測部８１０のカウントアップは、他の状態に関わらず独立して動作する。
【００８８】
データ取り込み方法判定部８１１は、書き込みデータ数計測部８１０及び格納データ数計測部８１３の計測値を比較し、書き込みデータ数が格納データ数より多いので、データ取り込み方法としてバス動作制御部８０６を使用すると判定する。そして、データ格納制御選択部８１２には、データ格納部８１４に対する制御をバスデータ格納制御部８０７が行うように選択信号を出力し、バス動作制御部８０６に対する開始要求を出す。
【００８９】
バス動作制御部８０６は、バスを使用しメモリから読み出すデータの長さを、書き込みデータ数計測部８１０及び格納データ数計測部８１３の計測値の差（８バイト）として認識し、１回のトランザクションが４バイト単位で行われるため、２回のトランザクションに分割してメモリからの読み出しを行う。但し、データ格納部８１４がフル状態のため、４バイト以上の空きができるまでトランザクションは発行されない。
【００９０】
区間Ｔ４において、デバイスコントローラがデバイスインターフェース８１５によりデータ格納部８１４のデータを取り出す動作が開始される。データ格納部８１４は、データが取り出されるとフル状態は解除され、データを格納可能な状態になる。バス動作制御部８０６は、データ格納部８１４に４バイト以上の空きができたため、カレントアドレスレジスタ３０４で示されるアドレス値に従って、アドレス値が0x1008番地で転送長４バイト及びアドレス値が0x100C番地で転送長４バイトのバストランザクションを発行し、それぞれメモリからDATA2及びDATA3を読み出す。そして、１回のバストランザクションが完了すると、バスデータ格納制御部８０７はメモリから読み出したデータをデータ格納部８１４へ格納し、格納データ数計測部８１３はカウントアップ動作を行い、カレントアドレス計測部８１６は転送長分カレントアドレスレジスタ３０４の値を更新する。バスインターフェース８０５からのデータ取り込みは、書き込みデータ数計測部８１０及び格納データ数計測部８１３の計測値が一致するまで続けられる。
【００９１】
区間Ｔ５において、再び書き込みデータ数計測部８１０及び格納データ数計測部８１３の計測値が一致すると、データ取り込み方法判定部８１１は書き込みトランザクション検出部８０８を使用すると判定する。そして、データ格納制御選択部８１２に対してデータ格納部８１４に対する制御を書き込みデータ格納制御部８０９が行うように選択信号を出力し、バス動作制御部８０６に対する開始要求を取り下げる。バス動作制御部８０６は、開始要求が取り下げられるため、読み出し対象データをメモリへ書き込むバスマスターがデータを書き込んでいない領域に対するトランザクションを発行することはない。
【００９２】
デバイスインターフェース８１５によりデータ格納部８１４のデータを取り出し動作が並行して行われていると、データ格納部８１４がフル状態にならず、書き込みトランザクション検出部８０８が検出した0x1010番地から0x101C番地に対する書き込みトランザクションにおけるデータ（DATA4、DATA5、DATA6、DATA7）を書き込みデータ格納制御部８０９によって全てデータ格納部８１４に取り込むことができる。
【００９３】
以降、カレントアドレスレジスタ３０４の値がエンドアドレスレジスタ３０３の値に到達するまで、データ格納部８１４の状態に応じて上述した動作が繰り返される。その後、カレントアドレスレジスタ３０４の値がエンドアドレスレジスタ３０３の値に到達すると、ＤＭＡコントローラ８００は動作を停止し、割り込み通知等を行い、ＣＰＵにＤＭＡ動作が完了したことを通知する。
【００９４】
実施例４によれば、ＤＭＡコントローラがメモリからデータを読み出す動作において、メモリからデータを読み出す回数を削減することができる。
【実施例５】
【００９５】
次に、図面を参照しながら本発明に係る実施例５について詳細に説明する。実施例４では、書き込みトランザクション検出部８０８がバス上で他のバスマスターによって発行されるトランザクションのアドレス値と転送方向を調べ、ＤＭＡを行うメモリ領域に対する書き込みトランザクションを検出している。しかしながら、アドレス値を使ったトランザクション検出では、例えばアドレス値が３２ビットで構成されている場合、ＤＭＡを行うメモリ領域の開始アドレス値と終了アドレス値との比較を行う２つの３２ビット比較回路が必要となる。
【００９６】
これに対し、バスのプロトコルとしてバスマスターの識別値を使用することも可能で、トランザクションを発行するバスマスターの識別値を得ることができる場合は、その識別値と転送方向からＤＭＡを行うメモリ領域に対する書き込みトランザクションを検出するように構成しても良い。
【００９７】
一般的に、バスに接続されているバスマスターの識別には数ビットの情報があれば十分であり、例えばバスマスター識別値が３ビットで構成されている場合は、１つの３ビット比較回路で済み、回路規模を削減できる。
【００９８】
検出対象となるバスマスターの識別値は、制御レジスタ８０３に設定用レジスタを設け、ＣＰＵが設定する。検出対象となるバスマスターが一つしか存在しない場合は、設定用レジスタを設けずに所定の固定値としても良く、この場合更に回路規模を削減できる。
【００９９】
ここで、図１０に示すタイミングチャートを用いて実施例５における書き込みトランザクション検出部８０８の検出動作について説明する。
【０１００】
この実施例５では、トランザクションを発行するバスマスターの識別値として、ＤＭＡコントローラ８００の識別値が“１”、ＤＭＡコントローラ８００が読み出し対象とするデータをメモリへ書き込むバスマスターの識別値が“２”の場合を説明する。また、書き込みトランザクション検出部８０８は、バス上に発行されるトランザクションにおいて、マスマスター識別値が“２”で、且つ転送方向が書き込みであるトランザクションを検出し、書き込みデータ格納制御部８０９と書き込みデータ数計測部８１０へ通知する。これ以外の動作は、実施例４と同じであり、その説明は省略する。
【０１０１】
実施例５によれば、ＤＭＡコントローラがメモリからデータを読み出す動作において、より少ない回路規模でメモリからデータを読み出す回数を削減することができる。
【実施例６】
【０１０２】
次に、図面を参照しながら本発明に係る実施例６について詳細に説明する。実施例６では、実施例４で説明したＤＭＡコントローラを用いたデータ処理システムとして、ＰＣ等のホストコンピュータとそれに接続されるスキャナ機能及び印刷機能等を有する複合装置とで構成される場合を例に説明する。
【０１０３】
図１１は、実施例６におけるデータ処理システムの構成の一例を示すブロック図である。図１１に示すように、ＰＣ１１００と複合装置１１１０は、ＵＳＢケーブルで接続されている。ＵＳＢは高速シリアルバス通信規格であり、様々な機器を接続するためのものとして広く一般的に普及している。
【０１０４】
複合装置１１１０には、実施例４のＤＭＡコントローラを含む半導体集積回路１１１１と、メモリカードスロット等に接続されたメモリカード１１１２と、液晶ディスプレイ等の表示部１１１３と、半導体集積回路１１１１が動作時にワークメモリ領域として使用するＤＲＡＭ１１１４と、印刷を行う印字ヘッド等の印字部１１１５と、ＣＣＤ等のスキャナセンサー１１１６とが搭載されている。
【０１０５】
半導体集積回路１１１１は、複合装置１１１０全体を制御するＣＰＵ１１２０、ＣＰＵ１１２０の動作プログラム等が格納された不揮発性のＲＯＭ１１２１、システムバス１１２８の調停や割り込み及びタイマ制御等を行う周辺回路１１２２、表示部１１１３へ表示データを出力する表示コントローラ１１２３、ＤＲＡＭ１１１４に対してデータの読み書き制御を行うＤＲＡＭコントローラ１１２４、印字部１１１５を制御する印字コントローラ１１２５、印字コントローラ１１２５用のＤＭＡコントローラ１１２６、バスマスター機能を有し、スキャナ画像処理部１１３４が生成したデータの印刷用画像処理を行う印刷画像処理部１１２７、ＰＣ１１００と接続するためのＵＳＢデバイスコントローラ１１３１、ＵＳＢデバイスコントローラ１１３１用のＤＭＡコントローラ１１３０、メモリカード１１１２に対してデータ転送を制御するカードコントローラ１１３３、カードコントローラ１１３３用のＤＭＡコントローラ１１３２、スキャナセンサー１１１６の制御を行うセンサー制御部１１３５、バスマスター機能を有し、スキャナセンサー１１１６から入力されるデータの画像処理を行うスキャナ画像処理部１１３４から構成されている。
【０１０６】
ここで、実施例６におけるデータ処理システムの動作について、複合装置１１１０からＰＣ１１００へメモリカード１１１２に保存されている画像ファイルを転送する場合を例に、図９のタイミングチャートと図１２のフローチャートを用いて説明する。
【０１０７】
図１２は、実施例６におけるＤＭＡ転送処理を示すフローチャートである。ステップＳ１２０１において、ＰＣ１１００から複合装置１１１０へメモリカード１１１２内に蓄積されたファイルデータに対する転送要求が来ると、ＣＰＵ１１２０は指定されたファイルデータをメモリカード１１１２から読み出してＰＣ１１００へ転送するための共有領域をＤＲＡＭ１１１４上に確保する。
【０１０８】
次に、ステップＳ１２０２において、ＣＰＵ１１２０は、ＰＣ１１００へＤＭＡでデータ転送するためにＵＳＢデバイスコントローラ１１３１の設定を行う。次に、ステップＳ１２０３において、ＣＰＵ５２０は、ＤＲＡＭ１１１４上に確保された領域に対してＤＭＡで読み出すための設定をＤＭＡコントローラ１１３０に対して行い、ＤＭＡコントローラ１１３０のＤＭＡ動作を開始する。この状態において、ＤＭＡコントローラ１１３０は区間Ｔ１の状態となり、ＤＭＡコントローラ１１３２がシステムバス１１２８へ書き込みトランザクションを発行するのを待つ。
【０１０９】
次に、ステップＳ１２０４において、ＣＰＵ１１２０は、メモリカード１１１２からＤＭＡでデータ転送するためにカードコントローラ１１３３の設定を行う。次に、ステップＳ１２０５において、ＣＰＵ１１２０は、ＤＲＡＭ１１１４上に確保された領域に対してＤＭＡで書き込むための設定をＤＭＡコントローラ１１３２に対して行い、ＤＭＡコントローラ１１３２のＤＭＡ動作を開始する。
【０１１０】
これにより、ＤＭＡコントローラ１１３０は、ＤＭＡコントローラ１１３２がシステムバス１１２８へ発行する書き込みトランザクションの検出を開始し、ＵＳＢデバイスコントローラ１１３１の転送速度、ＤＭＡコントローラ１１３２の書き込み速度、ＤＭＡコントローラ１１３０に内蔵されるバッファの状態に応じて、区間Ｔ２〜Ｔ５の状態を繰り返す。
【０１１１】
ＵＳＢデバイスコントローラ１１３１の転送速度がＤＭＡコントローラ１１３２の書き込み速度に対して高速であり、書き込みデータをそのまま転送する状態（区間Ｔ５）を保って動作すると、ＤＭＡコントローラ１１３０がＤＲＡＭ１１１４からデータを読み出すことが一切なくなる。ここで、ＤＭＡコントローラ１１３０に内蔵されるバッファがフル状態（区間Ｔ３）になったとしても、システムバス１１２８からＤＲＡＭ１１１４のデータを読み出し（区間Ｔ５）、書き込みデータをそのまま転送する状態（区間Ｔ５）に戻ることができる。
【０１１２】
従って、ＤＲＡＭ１１１４に対する読み出し回数が減り、ＤＲＡＭ１１１４からの読み出し待ち時間が減少するので、ＰＣ１１００に対するＵＳＢの転送性能が向上する。
【０１１３】
また、印刷動作中で、印字コントローラ１１２５がシステムバスに大量のトランザクションを発生している状況であっても、ＤＲＡＭ１１１４からの読み出しトランザクションが減少するため、システム全体としての性能を向上させることができる。
【０１１４】
最後に、ステップＳ１２０６において、ＣＰＵ１１２０は、割り込み通知等でＤＭＡコントローラ１１３０とＤＭＡコントローラ１１３２のＤＭＡ転送が終了するのを待つ。
【０１１５】
尚、ＰＣ１１００へのファイル転送後、ＣＰＵ１１２０は、ＤＲＡＭ１１１４へ書き込まれた画像ファイルデータを表示可能な形式へ変換して表示部１１１３へ出力したり、画像処理、印刷処理を行って印字部１１１５から印刷したりすることができる。
【０１１６】
また、複合装置１１１０からＰＣ１１００へスキャナセンサー１１１６で読み取ったスキャナデータを転送する場合においても、ＤＭＡコントローラ１１３０が読み出し対象とするデータをメモリへ書き込みバスマスターがスキャナ画像処理部１１３４になるだけで、ＤＭＡコントローラ１１３０におけるシステムバスへ発行される書き込みトランザクションの検出動作等に変わりはなく、上述した場合と同じような動作が適用できる。よって、スキャナ画像処理部１１３４による書き込みデータに対して、ＤＭＡコントローラ１１３０がメモリから読み出すトランザクション回数を削減することができる。
【０１１７】
また、ＰＣ１１００からメモリカード１１１２へファイルを転送する場合や、スキャナセンサー１１１６で読み取ったスキャナデータを画像ファイルとして圧縮しメモリカード１１１２へ保存する場合においても、ＤＭＡコントローラ１１３２を実施例４で説明したＤＭＡコントローラに置き換えることで、実施例６と同様な動作が適用できる。よって、ＤＭＡコントローラ１１３０やスキャナ画像処理部１１３４による書き込みデータに対して、ＤＭＡコントローラ１１３２がメモリから読み出すトランザクション回数を削減することができる。
【０１１８】
更に、スキャナ画像処理部１１３４が生成する画像ファイルをメモリカード１１１２へ保存すると同時にＰＣ１１００へも転送する場合、ＤＭＡコントローラ１１３０とＤＭＡコントローラ１１３２の両方が同時に動作しても、それぞれにおけるシステムバスへ発行される書き込みトランザクションの検出動作等に変わりはなく、実施例６と同様な動作が適用できる。よって、スキャナ画像処理部１１３４による書き込みデータに対して、ＤＭＡコントローラ１１３０とＤＭＡコントローラ１１３２の同時動作においても、それぞれがメモリから読み出すトランザクション回数を削減することができる。
【０１１９】
また、スキャナセンサー１１１６から読み取った画像を印字部１１１５で印刷するコピー動作では、ＤＲＡＭ１１１４上にスキャナ処理データ用と印字データ用のワーク領域を確保し、スキャナセンサー１１１６から入力されたデータをスキャナ画像処理部１１３４がＤＲＡＭ１１１４のスキャナ処理データ用領域へデータを書き込み、また印刷画像処理部１１２７がＤＲＡＭ１１１４のスキャナ処理データ用領域からデータを読み出して印刷用画像処理結果を再度ＤＲＡＭ１１１４の印字データ用領域へ書き込み、最後に印字コントローラ１１２５用のＤＭＡコントローラ１１２６がＤＲＡＭ１１１４の印字データ用領域からデータを読み出して印字部１１１５へ転送する処理が行われる。
【０１２０】
このような場合でも、印刷画像処理部１１２７に実施例４で説明したＤＭＡコントローラと同様の機能を持たせることで、実施例６と同様な動作が適用できる。よって、スキャナ画像処理部１１３４による書き込みデータに対して、印刷画像処理部１１２７がメモリから読み出すトランザクション回数を削減することができる。
【０１２１】
更に、ＤＭＡコントローラ１１２６を実施例４で説明したＤＭＡコントローラに置き換えることで、実施例６と同様な動作が適用できる。よって、印刷画像処理部１１２７による書き込みデータに対して、ＤＭＡコントローラ１１２６がメモリから読み出すトランザクション回数を削減することができる。
【０１２２】
また、システムバスのプロトコルとしてバスマスターの識別値も使用し、トランザクションを発行するバスマスターの識別値を得ることができる場合は、実施例４のＤＭＡコントローラの代わりに実施例５で説明したＤＭＡコントローラを使用しても良く、システムバスへ発行される書き込みトランザクションの検出動作がバスマスターの識別値に基づいて行われる部分が異なるだけで、実施例６と同様な動作が適用できる。
【０１２３】
実施例６では、システムバス１１２８に接続されているバスマスターの数は６つ（ＣＰＵ１１２０、ＤＭＡコントローラ１１３０、ＤＭＡコントローラ１１３２、スキャナ画像処理部１１３４、ＤＭＡコントローラ１１２６、印刷画像処理部１１２７）であるため、識別値として３ビットあれば良く、実施例４のＤＭＡコントローラを使用するより少ない回路規模でメモリから読み出すトランザクション回数を削減することができる。
【０１２４】
実施例６によれば、実施例４又は５で説明したＤＭＡコントローラを用いたデータ処理システムにおいて、メモリからデータを読み出す回数を削減することができる。
【０１２５】
尚、実施例６では、ＤＭＡコントローラを用いたデータ処理システムとして、ＰＣ等のホストコンピュータとそれに接続される複合装置を例として説明したが、本発明はこれに限定されるものではなく、所定のバスマスターがメモリに書き込むデータを読み出すＤＭＡコントローラを内蔵するものならば、他の周辺装置やホストにも適用可能である。
【０１２６】
また、ＤＭＡコントローラに接続されるデバイスコントローラは、各実施例で説明したものに限定されず、ＤＭＡ転送が可能であれば、他の通信デバイスコントローラやＩ／Ｏデバイスコントローラ或いは画像処理コントローラにも適用可能である。
【０１２７】
また、ＤＭＡコントローラが読み出し対象とするデータメモリへ書き込むバスマスターは、各実施例で説明したものに限定されず、一般的なバスマスターに適用可能であり、そのバスマスターが一つ或いは複数存在しても良い。
【０１２８】
尚、本発明は複数の機器（例えば、ホストコンピュータ，インターフェース機器，リーダ，プリンタなど）から構成されるシステムに適用しても、１つの機器からなる装置（例えば、複写機，ファクシミリ装置など）に適用しても良い。
【０１２９】
また、本発明の目的は前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵ若しくはＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【０１３０】
この場合、記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【０１３１】
このプログラムコードを供給するための記録媒体としては、例えばフロッピー（登録商標）ディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【０１３２】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１３３】
更に、記録媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【０１３４】
【図１】一般的なデバイス間におけるデータ転送システムの構成の一例を示すブロック図である。
【図２】実施例１におけるＤＭＡコントローラの構成の一例を示すブロック図である。
【図３】制御レジスタ２０３の詳細な構成を示すブロック図である。
【図４】実施例１におけるＤＭＡコントローラ２００の動作を説明するための図である。
【図５】実施例２におけるデータ処理システムの構成の一例を示すブロック図である。
【図６】実施例２におけるＤＭＡ転送処理を示すフローチャートである。
【図７】実施例３におけるデータ処理システムの構成の一例を示すブロック図である。
【図８】実施例４におけるＤＭＡコントローラの構成の一例を示すブロック図である。
【図９】実施例４におけるＤＭＡコントローラ８００の動作を説明するための図である。
【図１０】実施例５におけるＤＭＡコントローラ８００の動作を説明するための図である。
【図１１】実施例６におけるデータ処理システムの構成の一例を示すブロック図である。
【図１２】実施例６におけるＤＭＡ転送処理を示すフローチャートである。
【符号の説明】
【０１３５】
１００  ＣＰＵ
１０１  メモリコントローラ
１０２  ＲＡＭ
１１０  デバイス
１１１  デバイスコントローラ
１１２  ＤＭＡコントローラ
１２０  デバイス
１２１  デバイスコントローラ
１２２  ＤＭＡコントローラ
２００  ＤＭＡコントローラ
２０１  レジスタインターフェース
２０２  レジスタアクセス制御部
２０３  制御レジスタ
２０４  動作制御部
２０５  バスインターフェース
２０６  バス動作制御部
２０７  バスデータ格納制御部
２０８  直接入力部
２０９  直接入力データ格納制御部
２１０  直接入力データ数計測部
２１１  データ取り込み方法判定部
２１２  データ格納制御選択部
２１３  格納データ数計測部
２１４  データ格納部
２１５  デバイスインターフェース
２１６  カレントアドレス計測部
３０１  コントロールレジスタ
３０２  スタートアドレスレジスタ
３０３  エンドアドレスレジスタ
３０４  カレントアドレスレジスタ
５００  ＰＣ
５１０  プリンタ
５１１  半導体集積回路
５１２  メモリカード
５１３  表示部
５１４  ＤＲＡＭ
５１５  印字部
５２０  ＣＰＵ
５２１  ＲＯＭ
５２２  周辺回路
５２３  表示コントローラ
５２４  ＤＲＡＭコントローラ
５２５  印字コントローラ
５３０  ＤＭＡコントローラ
５３１  ＵＳＢデバイスコントローラ
５３２  メモリへ書き込むデータを直接出力する機能を有するＤＭＡコントローラ
５３３  カードコントローラ
７０１  メモリへ書き込むデータを直接出力する機能を有しないＤＭＡコントローラ
７０２  直接入力データ生成部
【図１】
2006134175.tif 000003
【図２】
2006134175.tif 000004
【図３】
2006134175.tif 000005
【図４】
2006134175.tif 000006
【図５】
2006134175.tif 000007
【図６】
2006134175.tif 000008
【図７】
2006134175.tif 000009
【図８】
2006134175.tif 000010
【図９】
2006134175.tif 000011
【図１０】
2006134175.tif 000012
【図１１】
2006134175.tif 000013
【図１２】
2006134175.tif 000014