(57)【要約】【課題】本発明は、データ転送を効率的に行うデータ転送制御装置、データ転送制御方法、データ転送制御プログラム及び記録媒体に関する。【解決手段】画像処理装置１は、メインＣＰＵ３を介したデータ転送要求が、複数のＤＭＡＣ２０ａ〜５０ａからあると、内部アービタ７０が、該データ転送要求に対して公平に所定転送期間だけデータ転送を許可するデータ転送の許可／不許可を制御するとともに、許可したデータ転送が該転送期間を経過すると、該ＤＭＡＣ２０ａ〜５０ａからのデータ転送要求をマスク期間だけマスクするマスク処理を制御する際に、メインＣＰＵ３の内部バッファのデータ量をフローコントロール処理時間毎に取得して、取得した内部バッファのデータ量に基づいてメインＣＰＵ３によるデータ転送状況を判定し、該判定結果に基づいてマスク処理を制御する。【選択図】          図２
2010191492.tif 000002
【特許請求の範囲】
【請求項１】
内部バッファを有して該内部バッファを利用した複数のデータ転送を調整するデータ転送調整手段と、
前記データ転送調整手段を介したデータ転送要求を行う複数のデータ転送要求手段と、
複数の前記データ転送要求手段からのデータ転送要求に対して公平に所定転送期間だけデータ転送を許可するデータ転送の許可／不許可を制御するとともに、許可したデータ転送が該転送期間を経過すると、該データ転送要求手段からのデータ転送要求を所定のマスク期間だけ不許可とするマスク処理を制御するデータ転送要求制御手段と、
前記データ転送調整手段に接続され、前記データ転送要求制御手段がデータ転送を許可した前記データ転送要求手段による該データ転送調整手段を利用したデータ転送を可能とするとともに、該データ転送調整手段の前記内部バッファのデータ量を所定基準時間毎に取得する転送インターフェイス手段と、
前記転送インターフェイス手段の取得した前記内部バッファのデータ量に基づいて前記データ転送調整手段による前記データ転送状況を判定するデータ転送状況判定手段と、
を備え、前記データ転送要求制御手段は、前記データ転送状況判定手段の判定結果に基づいて前記マスク処理を制御することを特徴とするデータ転送制御装置。
【請求項２】
前記データ転送要求制御手段は、前記データ転送要求手段からの前記データ転送要求によって前記データ転送調整手段での前記データ転送に与える転送負荷の大きさに基づいて前記マスク処理を制御することを特徴とする請求項１記載のデータ転送制御装置。
【請求項３】
前記データ転送要求制御手段は、前記転送負荷の大きさを前記データ転送要求手段からの前記データ転送要求の要求する転送データ量に基づいて判断することを特徴とする請求項２記載のデータ転送制御装置。
【請求項４】
前記データ転送調整手段は、ＤＭＡデータ転送によるデータ転送を調整し、前記データ転送要求手段は、前記データ転送要求としてＤＭＡデータ転送要求を行い、前記データ転送要求制御手段は、前記転送負荷の大きさを前記ＤＭＡＣ転送要求がディスクリプタ転送要求であるかデータ転送要求であるかによって判断することを特徴とする請求項２記載のデータ転送制御装置。
【請求項５】
前記データ転送要求制御手段は、前記データ転送要求手段からのデータ転送要求に基づいて、前記マスクを設定するか否かのマスク設定制御及び設定した前記マスクの前記マスク期間の解除を行うか否かのマスク期間制御を行うことを特徴とする請求項１から請求項４のいずれかに記載のデータ転送制御装置。
【請求項６】
内部バッファを利用した複数のデータ転送を調整するデータ転送調整処理ステップと、
前記データ転送調整処理ステップを通したデータ転送要求を行う複数のデータ転送要求処理ステップと、
複数の前記データ転送要求処理ステップからのデータ転送要求に対して公平に所定転送期間だけデータ転送を許可するデータ転送の許可／不許可を制御するとともに、許可したデータ転送が該転送期間を経過すると、該データ転送要求処理ステップからのデータ転送要求を所定のマスク期間だけ不許可とするマスク処理を制御するデータ転送要求制御処理ステップと、
前記データ転送調整処理ステップと連携して、前記データ転送要求制御処理ステップがデータ転送を許可した前記データ転送要求処理ステップによる該データ転送調整処理ステップを利用したデータ転送を可能とするとともに、該データ転送調整処理ステップの前記内部バッファのデータ量を所定基準時間毎に取得する転送インターフェイス処理ステップと、
前記転送インターフェイス処理ステップの取得した前記内部バッファのデータ量に基づいて前記データ転送調整処理ステップにおける前記データ転送状況を判定するデータ転送状況判定処理ステップと、
を有し、前記データ転送要求制御処理ステップは、前記データ転送状況判定処理ステップでの判定結果に基づいて前記マスク処理を制御することを特徴とするデータ転送制御方法。
【請求項７】
コンピュータに、
内部バッファを利用した複数のデータ転送を調整するデータ転送調整処理と、
前記データ転送調整処理を通したデータ転送要求を行う複数のデータ転送要求処理と、
複数の前記データ転送要求処理からのデータ転送要求に対して公平に所定転送期間だけデータ転送を許可するデータ転送の許可／不許可を制御するとともに、許可したデータ転送が該転送期間を経過すると、該データ転送要求処理からのデータ転送要求を所定のマスク期間だけ不許可とするマスク処理を制御するデータ転送要求制御処理と、
前記データ転送調整処理と連携して、前記データ転送要求制御処理がデータ転送を許可した前記データ転送要求処理による該データ転送調整処理を利用したデータ転送を可能とするとともに、該データ転送調整処理の前記内部バッファのデータ量を所定基準時間毎に取得する転送インターフェイス処理と、
前記転送インターフェイス処理の取得した前記内部バッファのデータ量に基づいて前記データ転送調整処理における前記データ転送状況を判定するデータ転送状況判定処理と、
を実行させるとともに、前記データ転送要求制御処理で、前記データ転送状況判定処理での判定結果に基づいて前記マスク処理を制御させることを特徴とするデータ転送制御プログラム。
【請求項８】
請求項７記載のデータ転送制御プログラムを記録したことを特徴とするコンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送制御装置、データ転送制御方法、データ転送制御プログラム及び記録媒体に関し、詳細には、データ転送を効率的に行うデータ転送制御装置、データ転送制御方法、データ転送制御プログラム及び記録媒体に関する。
【背景技術】
【０００２】
近年、データを取り扱う装置、例えば、複合装置、プリンタ装置、複写装置、スキャナ装置、ファクシミリ装置等の画像処理装置においては、スキャナユニット、プリンタユニット及びメインメモリを有するコントローラ等の各ユニットを汎用バスで接続してインターフェイスを共通化することで、ユニットの拡張等における無駄な回路や制御ソフトの増加を抑制し、また、拡張性を向上させることが行われている。
【０００３】
ところが、このようなバスシステムを用いた画像処理装置においては、スキャナユニットで原稿の画像データを読み取る画像読み取り時やプリンタユニットで画像データに基づいて画像を印刷出力する印刷出力時及びスキャナユニットで読み取った画像データをプリンタユニットで印刷出力するコピー時には、スキャナユニットやプリンタユニットが一定速度で動作する必要があるため、スキャナユニットやプリンタユニットとコントローラのメインメモリとの間で一定量のデータをバスを介して転送する必要があり、一時的にバストラフィックが著しく増加する。この現象は、高速機ほど顕著になる。
【０００４】
そして、画像処理装置においては、上記汎用バスは、ＩＥＥＥ１３９４やＵＳＢ（Universal Serial Bus）等の通信系の外部ＩＦ（インターフェース）を接続することも可能であり、このような外部ＩＦを介して、ＳＤカード（Secure Digital memory card）やＵＳＢデバイス等の外部機器及びネットワークとの間でデータを送受信することが一般的に行われている。
【０００５】
このように汎用バスに、スキャナユニット、プリンタユニット、通信系インターフェースデバイス等がマスタデバイスとして複数存在する画像処理装置の構成においては、上記汎用バスは、アービタを内蔵するメインＣＰＵを介してメインメモリと接続されており、アービタのバス調整方法が重要となるが、従来、このバスの調停方法として、固定優先順位方式やラウンドロビン方式等が一般的に用いられている。この固定優先順位方式は、複数のマスタデバイスからバス要求が同時に発生した場合に、予め固定的に設定されているマスタデバイスの優先順位に従って優先順位の高い方にバス使用権を与える方法である。ラウンドロビン方式は、優先順位が固定ではなく、バス使用権を獲得したマスタデバイスに対しては、そのバス使用権獲得直後に優先順位を最下位に設定して、全体として公平にバス使用権を調停する方法である。
【０００６】
これらの従来のバス調停方式には、それぞれ長所、短所がある。例えば、固定優先順位方式は、優先順位が高いマスタデバイスにはバス獲得が常に保証されて優位であるが、優先順位の低いマスタデバイスは自分より優先順位の高いマスタデバイスからの要求がある限りバスの使用権を獲得することができない状況が発生するという短所がある。
【０００７】
また、ラウンドロビン方式は、全てのマスタデバイスに対して公平にバス獲得の調停を行うことができるという長所はあるが、逆にバスの使用率を各マスタデバイス毎に転送データ量、密度等に応じて異ならせたい場合には不向きであるという短所がある。
【０００８】
特に、ラウンドロビン方式は、本来バス自体の有するデータ転送能力（バス幅×所定バス幅当たりのデータの転送時間）が、入力画像コントローラ（スキャナユニット）、出力画像コントローラ（プリンタユニット）等のデバイス（ユニット）が動作しているときに転送しなければならないデータ量に対して限界に近いほど、不都合が発生するおそれがある。
【０００９】
すなわち、スキャナユニットは、読み取った画像に順次画像処理を行いながら画像データをメインメモリへ転送する必要があり、必ずその帯域を確保する必要がある。また、プリンタユニットは、電子写真方式の場合、感光体ドラムにレーザで書き込みながら画像データをメインメモリから転送する必要があり、必ずその帯域を確保する必要がある。さらに、外部ＩＦは、例えば、ネットワークからデータを受信する場合、一旦受信を開始すると、受信したネットワークパケットをメインメモリに転送して一定時間内に応答する必要があり、必ずその帯域を確保する必要がある。
【００１０】
そして、画像処理装置におけるデータ転送は、一般的に、ＤＭＡ（Direct Memory Access）データ転送方式が用いられている。また、バス接続としては、一般的に、メインＣＰＵの内蔵するアービタが担っており、ラウンドロビン方式で動作するアービタが、スキャナユニットやプリンタユニットのデータ転送を優先して確保できるような技術が要望される。
【００１１】
そこで、従来、ラウンドロビン方式のバスアービタにおいて、特定事象発生時の第１のバスマスタ以外の優先度の低いバスマスタからのバス獲得要求に対して、バス使用権を与えた後の次のバス獲得要求を一定期間マスクすることで、バスの使用頻度を一時的に低下させて、第１のバスマスタのデータ転送効率を確保する技術が提案されている（特許文献１参照）。すなわち、この従来技術は、外部ＩＦからの転送要求に対してバス使用権を与えると、次のバス獲得要求を一定期間マスクすることで、スキャナユニットやプリンタユニットのデータ転送を優先して確保しようとしている。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、上記従来技術にあっては、優先度の低いバスマスタにデータ転送を許可すると、単に次の一定期間マスクするのみであるため、効率的なバス獲得の調停を行って、効率的なデータ転送を行う上で改良の必要があった。
【００１３】
すなわち、従来技術にあっては、全てのマスタデバイスに対して公平にバス獲得の調停を行うラウンドロビン方式において、優先度の低いバスマスタ、例えば、外部ＩＦに複数のデバイスが接続されて各デバイスからのバス獲得要求に対してラウンドロビン方式でバス使用権を与えた後に、スキャナユニットやプリンタユニットによるバス帯域を確保するために、該バス使用権を与えたデバイスに対してマスク期間を設定する。ところが、１ラウンドロビンで転送できるデータ量は決まっているため、外部ＩＦのデバイスからメインメモリに転送するデータ量がこの１ラウンドロビンで転送できるデータ量を超えているときには、外部ＩＦのデバイスから複数回のバス獲得要求を行うこととなる。しかし、１回バス使用権が与えられて１ラウンドロビンデータ転送を行うと、マスク期間に入り、このマスク期間に、例えば、ディスクリプタ転送等のような使用バス帯域の狭いバス転送に対するバス獲得要求に対してバス使用権が与えられると、このバス使用権の１ラウンドロビンのバス転送が終了するまで、他にバス獲得要求がない場合であっても、外部ＩＦのデバイスに対してバス使用権が与えられない。そして、使用バス帯域の狭いバス転送の１ラウンドのバス転送が終了したときに、外部ＩＦからバス獲得要求を行ってバス使用権を獲得しても、１ラウンドロビンのバス転送が終了すると、再度、マスク期間に入るというバス転送が繰り返されることとなる。その結果、効率的なバス獲得の調停を行って、効率的なデータ転送を行う上で改良の必要があるとともに、メインＣＰＵが内蔵するアービタが、該外部ＩＦから転送されるデータを保持するだけの内部バッファを必要とし、コストが高くつくという問題があった。
【００１４】
そこで、本発明は、安価かつより効率的なラウンドロビン方式でのデータ転送を行うことのできるデータ転送装置、データ転送方法、データ転送プログラム及び記録媒体を提供することを目的としている。
【課題を解決するための手段】
【００１５】
本発明は、上記目的を達成するために、内部バッファを有して該内部バッファを利用した複数のデータ転送を調整するデータ転送調整手段を介したデータ転送要求が、複数のデータ転送要求手段からあると、該データ転送要求に対して公平に所定転送期間だけデータ転送を許可するデータ転送の許可／不許可を制御するとともに、許可したデータ転送が該転送期間を経過すると、該データ転送要求手段からのデータ転送要求を所定のマスク期間だけ不許可とするマスク処理を制御する際に、該データ転送調整手段の内部バッファのデータ量を所定基準時間毎に取得して、取得した該内部バッファのデータ量に基づいて前記データ転送調整手段による前記データ転送状況を判定し、該判定結果に基づいて前記マスク処理を制御することを特徴としている。
【００１６】
また、本発明は、前記データ転送要求手段からの前記データ転送要求によって前記データ転送調整手段での前記データ転送に与える転送負荷の大きさに基づいて前記マスク処理を制御することを特徴としてもよい。
【００１７】
さらに、本発明は、前記転送負荷の大きさを前記データ転送要求の要求する転送データ量に基づいて判断することを特徴としてもよい。
【００１８】
また、本発明は、前記データ転送調整手段が、ＤＭＡデータ転送によるデータ転送を調整し、前記データ転送要求が、ＤＭＡデータ転送要求であって、前記転送負荷の大きさを前記ＤＭＡＣ転送要求がディスクリプタ転送要求であるかデータ転送要求であるかによって判断することを特徴としてもよい。
【発明の効果】
【００１９】
本発明によれば、ラウンドロビン方式でのデータ転送の完了したデータ転送要求元によるデータ転送要求をマスク期間だけマスクするマスク処理を、データ転送状況を把握して制御することができ、安価かつより効率的なラウンドロビン方式でのデータ転送を行うことができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の一実施例を適用した画像処理装置のブロック構成図。
【図２】外部ＩＦＡＳＩＣの詳細なブロック構成図。
【図３】メインＣＰＵと外部ＩＦＡＳＩＣのバス接続の説明図。
【図４】ＤＭＡライト処理を示すフローチャート。
【図５】ＤＭＡリード処理を示すフローチャート。
【図６】ディスクリプタのフォーマットの一例を示す図。
【図７】転送要求マスク処理のタイミング図。
【図８】マスク制御処理を示すフローチャート。
【図９】転送要求がディスクリプタに関する場合にマスク解除するときのタイミング図。
【図１０】メモリ帯域に空きがある場合にマスクを解除するときのタイミング図。
【発明を実施するための形態】
【００２１】
以下、本発明の好適な実施例を添付図面に基づいて詳細に説明する。なお、以下に述べる実施例は、本発明の好適な実施例であるので、技術的に好ましい種々の限定が付されているが、本発明の範囲は、以下の説明によって不当に限定されるものではなく、また、本実施の形態で説明される構成の全てが本発明の必須の構成要件ではない。
【実施例１】
【００２２】
図１〜図１０は、本発明のデータ転送制御装置、データ転送制御方法、データ転送制御プログラム及び記録媒体の一実施例を示す図であり、図１は、本発明のデータ転送制御装置、データ転送制御方法、データ転送制御プログラム及び記録媒体の一実施例を適用した画像処理装置１のブロック構成図である。
【００２３】
図１において、画像処理装置１は、コントローラＡＳＩＣ２、メインＣＰＵ３、メインメモリ４、スキャナＡＳＩＣ５、スキャナ部６、プロッタＡＳＩＣ７、プロッタ部８、ハードディスク（ＨＤＤ）９、外部ＩＦＡＳＩＣ１０、ネットワーク１１及び外部デバイス１２等を備えている。
【００２４】
スキャナ部６は、例えば、ＣＣＤ（Charge Coupled Device ）を利用したイメージスキャナ等が利用されており、原稿を走査及び副走査して、原稿の画像を所定の解像度で読み取って、２値化してスキャナＡＳＩＣ５に出力する。
【００２５】
スキャナＡＳＩＣ５は、スキャナ部６で読み取られた原稿の画像データに適宜の画像処理を行って画像処理後の画像データをコントローラＡＳＩＣ２に出力する。
【００２６】
コントローラＡＳＩＣ２は、スキャナＡＳＩＣ５、ハードディスク９及びメインＣＰＵ３と接続されており、スキャナＡＳＩＣ５、ハードディスク９及びメインＣＰＵ３との間での画像データの転送制御を行うとともに、メインＣＰＵ３の制御下で、ハードディスク９の駆動制御、スキャナＡＳＩＣ５を介したスキャナ部６の駆動制御を行う。
【００２７】
コントローラＡＳＩＣ２は、ハードディスク９へのリード／ライトの制御を行い、ハードディスク９は、各種画像データを記憶する。
【００２８】
プロッタ部８は、所定の印刷方式、例えば、電子写真式で、図示しないホストコンピュータやファクシミリ受信した画像データやスキャナ部６で読み取った画像データをプロッタＡＳＩＣ７から受け取って、該画像データに基づいて画像を用紙に印刷出力する。
【００２９】
プロッタＡＳＩＣ７は、メインＣＰＵ３から受け取った画像データに適宜の画像処理を施してプロッタ部８に出力する。
【００３０】
メインメモリ４は、メインＣＰＵ３に接続されており、ＲＡＭ（Random Access Memory）等で構成されている。メインメモリ４は、メインＣＰＵ３の制御下で、処理対象の画像データ等のデータ、プログラム及びディスクリプタ等を格納し、このプログラムとしては、画像処理装置１としての基本プログラム及び本発明のデータ転送を効率的に行うデータ転送制御方法を実行するデータ転送制御プログラムを格納する。
【００３１】
なお、画像処理装置１は、ＲＯＭ、ＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory ）、ＥＰＲＯＭ、フラッシュメモリ、フレキシブルディスク、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory ）、ＣＤ−ＲＷ（Compact Disc Rewritable ）、ＤＶＤ（Digital Video Disk）、ＳＤ（Secure Digital）カード、ＭＯ（Magneto-Optical Disc）等のコンピュータが読み取り可能な記録媒体に記録されている本発明のデータ転送制御方法を実行するデータ転送制御プログラムを読み込んでメインメモリ４やハードディスク９に導入することで、後述するデータ転送を効率的に行うデータ転送制御方法を実行するデータ転送制御装置を備えた画像処理装置として構築されている。このデータ転送制御プログラムは、アセンブラ、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ（登録商標）等のレガシープログラミング言語やオブジェクト指向ブログラミング言語等で記述されたコンピュータ実行可能なプログラムであり、上記記録媒体に格納して頒布することができる。
【００３２】
外部ＩＦＡＳＩＣ１０には、外部機器部として、ネットワーク１１や外部デバイス１２が接続されており、外部ＩＦＡＳＩＣ１０は、ネットワーク１１及び外部デバイス１２との間でデータ（パケットデータ）の授受を行う。ネットワーク１１は、例えば、ＬＡＮ（Local Area Network）、インターネット等であり、外部デバイス１２は、ＳＤカード、ＵＳＢデバイス等である。
【００３３】
メインＣＰＵ（データ転送調整手段）３には、メインメモリ４が接続されており、メインＣＰＵ３は、メインメモリ４へのデータ等の書き込みやメインメモリ４からのデータ、ディスクリプタ等の読み出しを制御する。すなわち画像処理装置１は、ＰＣＩｅバスを用いたＤＭＡ（Direct Memory Access）によってデータ転送を行っており、メインＣＰＵ３は、後述するように、内部バッファ３ｂ（図３参照）を有して、該内部バッファ３ｂを利用した複数のデータ転送を調整する。
【００３４】
上記外部ＩＦＡＳＩＣ１０は、図２に示すように、接続される外部デバイス用の外部デバイスコントローラ２０〜５０、メインＣＰＵ３とのＰＣＩｅコントローラ６０及び内部アービタ７０等を備えており、外部デバイスコントローラ（データ転送要求手段）２０〜５０は、例えば、ネットワークコントローラ２０、ＳＤカードコントローラ３０、ＵＳＢコントローラ４０、ＩＣカードコントローラ５０等である。なお、ＰＣＩｅは、ＰＣＩ（Peripheral Component Interconnect） Expressを略した表示であり、また、本実施例では、外部ＩＦＡＳＩＣ１０に接続されるネットワーク１１とのデータ転送について詳細に説明するために、図２は、ネットワークコントローラ２０について詳細に内部構成を示した図となっている。
【００３５】
ネットワークコントローラ２０は、ＤＭＡＣ（Direct Memory Access Controller ：ＤＭＡコントローラ）２０ａ、内部バッファ２０ｂ及びネットワーク制御部２０ｃ等を備えている。ネットワーク制御部２０ｃは、ネットワーク１１及び内部バッファ２０ｂと接続されていて、ネットワーク１１との通信制御を行い、内部バッファ２０ｂは、所定容量のバッファであって、ネットワーク制御部２０ｃとＤＭＡＣ２０ａとの転送データのバッファ処理を行う。ＤＭＡＣ２０ａは、内部アービタ７０に接続され、内部アービタ７０にデータ転送要求を行って、ネットワーク１１とメインメモリ４との間のデータ転送を行う。外部デバイスコントローラ３０〜５０は、ネットワークコントローラ２０と同様の構成を有しており、それぞれネットワークコントローラ２０と同様の処理を行って、対応する外部デバイスとメインメモリ４とのデータ転送を行う。なお、図示しないが、ネットワークコントローラ２０以外の他の外部デバイスコントローラ３０〜５０も、ネットワークコントローラ２０と同様に、ＤＭＡＣ３０ａ〜５０ａ以外に、制御部、内部バッファを備えている。
【００３６】
内部アービタ（データ転送要求制御手段）７０は、転送要求制御部７０ａを備えており、転送要求制御部７０ａが、各コントローラ２０〜５０のＤＭＡＣ２０ａ〜５０ａからのデータ転送要求をラウンドロビン方式で調停して、各コントローラ２０〜５０のＤＭＡＣ２０ａ〜５０ａによるバス利用を制御する。
【００３７】
ＰＣＩｅコントローラ６０は、ＰＣＩｅエンドポイント６０ａを備えており、ＰＣＩｅエンドポイント（転送インターフェイス手段、データ転送状況判定手段）６０ａは、内部アービタ７０に接続されているとともに、メインＣＰＵ３と接続されている。
【００３８】
メインＣＰＵ３には、上述のように、メインメモリ４が接続されているとともに、コントローラＡＳＩＣ２及びプロッタＡＳＩＣ７等と接続されて、メインＣＰＵ３は、通常、アービタを備えているとともに、図３に示すように、ＰＣＩｅルートコンプレックス３ａを備えており、ＰＣＩｅルートコンプレックス３ａは、内部バッファ３ｂを有している。また、ＰＣＩｅコントローラ６０のＰＣＩｅエンドポイント６０ａは、図３に示すように、内部バッファ６０ｂを有している。
【００３９】
メインＣＰＵ３と外部ＩＦＡＳＩＣ１０とは、ＰＣＩｅ８０で接続されており、ＰＣＩｅルートコンプレックス３ａとＰＣＩｅエンドポイント６０ａとは、ＰＣＩｅ８０のトランザクション層に規定されているフローコントロールで、定期的（所定基準時間毎）に相手の内部バッファ３ｂ、６０ｂの状況（データ量等）をやりとりする。
【００４０】
内部アービタ７０は、コントローラ２０〜５０に対して、バス使用権を与えると、所定のマスク期間だけ該コントローラ２０〜５０のバス使用権に対してマスクを行うマスク処理を実行する。また、内部アービタ７０は、上記メインＣＰＵ３のＰＣＩｅルートコンプレックス３ａに設けられている内部バッファ３ｂの状況（データ量等）に基づいてコントローラ２０〜５０に設定したマスクの解除、マスクの設定可否等のマスク制御を行う。
【００４１】
次に、本実施例の作用を説明する。本実施例の画像処理装置１は、バス制御をラウンドロビン方式で行うとともに、マスク処理の効率的な制御を行う。
【００４２】
なお、以下の説明では、外部ＩＦＡＳＩＣ１０の内部アービタ７０におけるネットワークコントローラ２０とメインＣＰＵ３を介したメインメモリ４へのデータ転送におけるマスク制御を伴うバス制御について説明するが、外部ＩＦＡＳＩＣ１０に接続されているバス制御の対象デバイスとしては、ネットワーク１１に限るものではなく、ＳＤカード、ＵＳＢデバイス等の他の外部デバイス１２であっても同様に適用することができる。また、以下の説明では、ネットワーク１１からデータ受信要求があって、外部ＩＦＡＳＩＣ１０のネットワークコントローラ２０が内部アービタ７０にバス獲得要求を行って、ＰＣＩｅ８０を通して、メインＣＰＵ３を介してメインメモリ４にデータをＤＭＡ転送する場合について説明するが、バスとしては、ＰＣＩｅ８０に限るものではなく、メインＣＰＵ３側のバス制御を実行する部分であるデータ転送調整手段が内部バッファを搭載して、該内部バッファの状況を所定間隔毎に取得することで、メインＣＰＵ３を介して他のデバイスがメインメモリ４にアクセスしている状況を把握し、該他のデバイスのメインメモリ４へのアクセス状況に応じてマスク制御を伴うバス制御を行う場合に適用することができる。
【００４３】
画像処理装置１は、ネットワーク１１からデータ受信要求があると、外部ＩＦＡＳＩＣ１０のネットワークコントローラ２０が、そのネットワーク制御部２０で該データ受信要求を制御して、必要なデータを内部バッファ２０ｂに保管しつつ、ＤＭＡＣ２０ａが内部アービタ７０にバス獲得要求（転送要求）を行い、内部アービタ７０は、基本的に、各コントローラ２０〜５０からのバス獲得要求に対してラウンドロビン方式でバス使用権を与えるというバス制御を行う。
【００４４】
画像処理装置１は、メインメモリ４と各デバイスとのデータ転送をＤＭＡ転送によって行い、例えば、ネットワークコントローラ２０とメインメモリ４とのＤＭＡデータ転送を、図４及び図５に示すように行って、メモリへのデータライト及びデータリードを行う。すなわち、ネットワークコントローラ２０のＤＭＡＣ２０ａは、メインメモリ４にデータをライトするデータライトの場合、図４に示すように、メインメモリ上のＤＭＡディスクリプタを読み取るリード転送を行い（ステップＳ１０１）、ネットワーク制御部２０ｃによってネットワーク制御を行ってデータ受信を開始する（ステップＳ１０２）。ＤＭＡＣ２０ａは、内部バッファ２０ｂに転送データが溜まると（ステップＳ１０３）、ＤＭＡパケットのライト転送を行い（ステップＳ１０４）、パケット終端をメインメモリ４へ転送したかチェックする（ステップＳ１０５）。パケット終端をメモリに転送していないときには、ＤＭＡＣ２０ａは、ディスクリプタをチェーンするかチェックして（ステップＳ１０７）、ディスクリプタをチェーンするときには、ステップＳ１０１に戻って上記同様に処理する。
【００４５】
ステップＳ１０５で、パケット終端をメモリに転送したときには、ＤＭＡＣ２０ａは、ＤＭＡディスクリプタをメインメモリ４にライト転送して書き戻し（ステップＳ１０６）、ディスクリプタをチェーンするかチェックする（ステップＳ１０７）。ステップＳ１０７で、ディスクリプタをチェーンするときには、ステップＳ１０１に戻って、メモリのディスクリプタのリード転送から上記同様に処理し（ステップＳ１０１〜Ｓ１０７）、ステップＳ１０７で、ディスクリプタのチェーンを行わないときには、ＤＭＡライト処理を終了する。
【００４６】
また、メインメモリ４上のデータをリードしてネットワーク１１に転送するデータリードの場合、ＤＭＡＣ２０ａは、まず、メインメモリ４上のＤＭＡディスクリプタを読み取るリード転送を行い（ステップＳ２０１）、該ディスクリプタに基づいてメインメモリ４上のＤＭＡパケット（データ）をリードして内部バッファ２０ｂに書き込むリード転送を開始する（ステップＳ２０２）。ＤＭＡＣ２０ａは、ＤＭＡパケットのリード転送を開始すると、ネットワーク制御を行って、データ送信を開始し（ステップＳ２０３）、パケット終端をネットワーク１１へ送信したかチェックする（ステップＳ２０４）。パケット終端をネットワーク１１へ送信していないときには、ＤＭＡＣ２０ａは、内部バッファ２０ｂに空きがあるかチェックし（ステップＳ２０６）、内部バッファ２０ｂに空きがないときには、ステップＳ２０３に戻って、データの受信を継続してステップＳ２０４でパケット終端をネットワークＮＷへ送信すると、ＤＭＡディスクリプのタライト転送をディスクリプタの書き戻しを行い（ステップＳ２０５）、内部バッファに空きがあるかチェックする（ステップＳ２０６）。
【００４７】
ステップＳ２０６で、内部バッファに空きがないときには、ステップＳ２０３に戻って上記同様にネットワーク１１へデータ転送する処理を行い（ステップＳ２０３〜Ｓ２０６）、ステップＳ２０６で内部バッファに空きができると、ディスクリプタをチェーンするかチェックする（ステップＳ２０７）。ステップＳ２０７で、ディスクリプタをチェーンするときには、ＤＭＡＣ２０ａは、ステップＳ２０１に戻って、メインメモリ４のディスクリプタのリード転送から上記同様に処理し（ステップＳ２０１〜Ｓ２０７）、ステップＳ２０７で、ディスクリプタのチェーンを行わないときには、ＤＭＡリード処理を終了する。
【００４８】
すなわち、ＤＭＡ転送においては、ディスクリプタリード、データリード、データライト、ディスクリプタライトという動作処理を繰り返し行うことで、データ転送を行う。
【００４９】
そして、ネットワークコントローラ２０のＤＭＡＣ２０ａは、この動作処理のアクセス毎に、内部アービタ７０にバス獲得要求を行い、バス使用権が与えられてデータ転送を開始するまでネットワーク１１からのデータを内部バッファ２０ｂに保管して待つという転送待ちが発生する。
【００５０】
そして、このＤＭＡ転送において用いられるディスクリプタは、一般的に、図６に示すようにフォーマット構成されており、次ディスクリプタアドレス、転送アドレス、転送サイズ、ＤＭＡ制御／パケット情報がある。次ディスクリプタアドレスは、次に読み込むディスクリプタのメインメモリ４上のアドレスが格納され、「０ｘ０」の場合は、次に読み込むディスクリプタがないことを示している。転送アドレスは、メインメモリ４上のデータの格納先が格納されており、転送サイズは、メインメモリ４に転送するデータ量が格納されている。ＤＭＡ制御は、ＤＭＡを一時停止させたり、割り込みを発生させるための制御情報が格納され、パケット情報は、ＤＭＡがパケット終了を示すためにライトする領域である。そして、このディスクリプタは、１２８ｂｉｔという少ないデータ量となっており、ディスクリプタの転送によるバス帯域への影響は非常に少ない。
【００５１】
一方、バス制御においては、メインＣＰＵ３を介してメインメモリ４にアクセスするデバイスが、外部ＩＦＡＳＩＣ１０に接続されたネットワーク１１や外部デバイス１２だけでなく、画像処理装置１として優先的にバス使用の確保が必要なスキャナ部６からのデータ転送やプロッタ部８へのデータ転送（以下、必要に応じて、優先データ転送という。）があり、メインＣＰＵ３のＰＣＩｅバス８０の使用をこのような優先データ転送に対して優先させる必要がある。
【００５２】
そこで、外部ＩＦＡＳＩＣ１０の内部アービタ７０は、ネットワークコントローラ２０やその他の外部ドライバコントローラ３０〜５０に、バス使用権を１ラウンドロビンの間だけ与えて該バス使用権の使用が完了すると、図７に示すように、一定期間（図７では、１００クロック間）だけ、バス使用権を与えた該コントローラ２０〜５０のＤＭＡＣ２０ａ〜５０ａからのバス獲得要求（転送要求）に対してマスクする。
【００５３】
ところが、上述のように、バス使用権を与えて１ラウンド期間が終了し、バス使用が終了するとマスク期間だけマスクするというマスク処理を単純に行うと、メインＣＰＵ３のＰＣＩｅ８０の使用状況を無視した制御となり、効率的なバス制御を行うことができない。
【００５４】
そこで、外部ＩＦＡＳＩＣ１０の内部アービタ７０は、ＰＣＩｅのトランザクション層に規定されるフローコントロールによる対向デバイスの内部バッファの状況のやり取り機能を利用して、図３に示したように、メインＣＰＵ３のＰＣＩｅバスの使用状況を、メインＣＰＵ３のＰＣＩｅルートコンプレックス３ａに設けられている内部バッファ３ｂの状況（データ量等）を把握し、該内部バッファ３ｂの状況から他のデバイスであるコントロールＡＳＩＣ２やプロッタＡＳＩＣ７等によるメインＣＰＵ３のＰＣＩｅバスの使用状況を判断してネットワークコントローラ２０等の外部デバイス２０〜５０へのマスク制御を行う。
【００５５】
また、内部アービタ７０は、バス獲得要求が発生した場合に、該バス獲得要求の内容に基づいて該バス獲得要求によるバス使用のバス帯域への影響を判断して、マスク制御を行う。内部アービタ７０は、このバス帯域への影響を、転送データ量やバス獲得要求の種類に基づいてＰＣＩｅバスの帯域への影響を判断して、マスク制御を行う。例えば、上述のように、ディスクリプタは、１２８ｂｉｔという少ないデータ量であるため、バス獲得要求がディスクリプタのリード要求、ライト要求であると、マスクをかけないように制御したり、既にかかっているマスクを解除するように制御するマスク制御を行う。
【００５６】
すなわち、内部アービタ７０は、図８に示すように、ネットワークコントローラ２０のＤＭＡＣ２０ａからのバス獲得要求に応じて１ラウンドロビン期間の間だけバス使用権を与え、該バス使用が終了すると、マスク期間（図７、図９、図１０では、「１００」クロック期間）をマスク期間カウンタにセットして（ステップＳ３０１）、該マウス期間カウンタのカウントダウンを開始し（ステップＳ３０２）、その後に、ＤＭＡＣ２０ａから転送要求であるバス獲得要求があると、該バス獲得要求がディスクリプタリードまたはディスクリプタライトのディスクリプタに関するバス獲得要求であるかチェックする（ステップＳ３０３）。すなわち、ネットワークコントローラ２０のＤＭＡＣ２０ａは、通常のバス獲得要求（転送要求）に、その転送要求の種類を示す情報（制御信号等）を付加して、内部アービタ７０に入力する。
【００５７】
ステップＳ３０３で、バス獲得要求がディスクリプタに関する要求であると、バス使用帯域が狭いと判断して、内部アービタ７０は、図９に示すように、マスク期間カウンタを「０」にクリアして、該バス獲得要求に対してバス使用権を付与し（ステップＳ３０４）、転送許可して、該バス使用権による転送が完了すると、ステップＳ３０１に戻って上記同様に処理する。なお、図９では、ＤＭＡＣ２０ａからの転送要求であるＲＥＱ１がディスクリプタであるときに、マスク期間カウンタが「１００」にセットされて、「９９」にカウントダウンしたところで、「０」にクリアして、転送許可（バス使用権）を付与した状態を示している。
【００５８】
ステップＳ３０３で、転送要求がディスクリプタでないとき、例えば、データリードやデータライトの転送要求であるときには、内部アービタ７０は、データ量が多いと判断して、メインＣＰＵ３のＰＣＩｅバスのメモリ帯域に、バス獲得要求に対してバス使用権を付与するのに十分な空きがあるかチェックする（ステップＳ３０５）。なお、このメモリ帯域に充分な空きがあるか否かのチェックについては、後述する。
【００５９】
ステップＳ３０５で、メモリ帯域に充分な空きがあるときには、内部アービタ７０は、図１０に示すように、マスク期間カウンタを「０」にクリアして、該バス獲得要求に対してバス使用権を付与し（ステップＳ３０４）、転送許可して、該バス使用権による転送が完了すると、ステップＳ３０１に戻って上記同様に処理する。
【００６０】
ステップＳ３０５で、メモリ帯域に充分な空きがないときには、内部アービタ７０は、マスク期間カウンタが「０」であるか、すなわち、マスク期間が過ぎているかチェックし（ステップＳ３０６）、マスク期間が過ぎていないときには、図７に示したように、マスクを解除することなく、ステップＳ３０２に戻って、マスク期間カウンタのカウントダウンから上記同様に処理する（ステップＳ３０２〜Ｓ３０６）。
【００６１】
ステップＳ３０６で、マスク期間カウンタが「０」のときには、内部アービタ７０は、マスク期間が過ぎていると判断して、バス獲得要求に対してバス使用権を付与し（ステップＳ３０４）、転送許可して、該バス使用権による転送が完了すると、ステップＳ３０１に戻って上記同様に処理する。
【００６２】
そして、上記メインＣＰＵ３のＰＣＩｅバスのメモリ帯域に、バス獲得要求に対してバス使用権を付与するのに十分な空きがあるか否かは、メインＣＰＵ３のＰＣＩｅルートコンプレックス３ａの内部バッファ３ｂの状況に基づいて判断する。すなわち、外部ＩＦＡＳＩＣ１０の内部アービタ７０は、ＰＣＩｅのトランザクション層に規定されるフローコントロールによる対向デバイスの内部バッファ３ｂの状況のやり取り機能を利用して、図３に示したように、メインＣＰＵ３のＰＣＩｅバスの使用状況を、メインＣＰＵ３のＰＣＩｅルートコンプレックス３ａの内部バッファ３ｂの状況（データ量等）を把握する。例えば、ＰＣＩｅエンドポイント６０ａは、フローコントロールによって、あるフローコントロール処理時点でのメインＣＰＵ３のＰＣＩｅルートコンプレックス３ａの内部バッファ状態を取得して保存し、次のフローコントロール処理で、該次のフローコントロール処理時点でのＰＣＩｅルートコンプレックス３ａの内部バッファ３ｂの状況を取得する。ＰＣＩｅエンドポイント６０ａは、今回のフローコントロール処理時点での取得したＰＣＩｅルートコンプレックス３ａの内部バッファ３ｂの状況と前回のフローコントロール時点での内部バッファ３ｂの状況との変化量を求めて、該変化量を予め設定されている変化閾値と比較し、フローコントロール処理間隔の間にＰＣＩｅバスを使用したデータ転送処理が進行したのかのデータ転送処理進行状況を判定する。例えば、転送要求制御部７０ａは、変化量が変化閾値よりも大きいときには、スキャナ部６やプロッタ部８の関与するデータ転送が発生せずに、メインＣＰＵ３からメインメモリ４へのデータ転送が順調に行われていると判定し、変化量が変化閾値よりも小さいときには、スキャナ部６やプロッタ部８の関係するデータ転送が頻繁に発生していると判定することができる。なお、ＰＣＩｅルートコンプレックス３ａの内部バッファ３ｂの状況の変化量は、連続するフローコントロール処理間での変化量に限るものではなく、所定数のフローコントロール処理間隔を空けたフローコントロール処理時点での内部バッファ３ｂの状況の変化量であってもよい。
【００６３】
そして、ＰＣＩｅエンドポイント６０ａは、上記判定結果を内部アービタ７０に渡し、内部アービタ７０が、ステップＳ３０５で、該判定結果に基づいてメモリ帯域に充分な空きがあるか判定する。
【００６４】
なお、図８の処理では、転送要求（バス獲得要求）がディスクリプタに関する転送要求であるか否かと、メモリ帯域に充分な空きがあるか否かに基づいて、マスクの解除を行っているが、転送要求（バス獲得要求）で要求しているデータ量（転送要求データ量）に基づいてマスクの解除を行ってもよい。この場合、内部アービタ７０は、ＤＭＡＣ２０ａからのバス獲得要求から転送要求データ量を取得し、取得した転送要求データ量を予め設定されているデータ閾値と比較して転送要求データ量がデータ閾値よりも少ないときにのみマスクの解除を行って、該バス獲得要求に応じてバス使用権を設定する。
【００６５】
また、内部アービタ７０は、上記ＰＣＩｅルートコンプレックス３ａの内部バッファ３ｂのデータ量が所定量よりも少ない場合、少ないデータ量のデータのバス獲得要求を許可して、該データの内部バッファ３ｂからの転送状況をフローコントロールによって監視し、該監視結果に基づいてマスクを解除して、データ量多いデータ転送を許可するバス使用権を付与するようにしてもよい。
【００６６】
このように、本実施例の画像処理装置１は、内部バッファ３ｂを有して該内部バッファ３ｂを利用した複数のデータ転送を調整するＰＣＩｅルートコンプレックス３ａを介したバス獲得要求（データ転送要求）が、複数のＤＭＡＣ２０ａ〜５０ａからあると、該データ転送要求に対して公平に所定転送期間だけデータ転送を許可するデータ転送の許可／不許可を制御するとともに、許可したデータ転送が該転送期間を経過すると、該ＤＭＡＣ２０ａ〜５０ａからのデータ転送要求を所定のマスク期間だけ不許可とするマスク処理を制御する際に、ＰＣＩｅルートコンプレックス３ａの内部バッファ３ｂのデータ量を所定基準時間毎（フローコントロール毎）に取得して、取得した内部バッファ３ｂのデータ量に基づいてＰＣＩｅルートコンプレックス３ａによるデータ転送状況を判定し、該判定結果に基づいてマスク処理を制御している。
【００６７】
したがって、ラウンドロビン方式でのデータ転送の完了したバス獲得要求（データ転送要求）元によるデータ転送要求をマスク期間だけマスクするマスク処理を、データ転送状況を把握して制御することができ、安価かつより効率的なラウンドロビン方式でのデータ転送を行うことができる。
【００６８】
また、本実施例の画像処理装置１は、ＤＭＡＣ２０ａ〜５０ａからのデータ転送要求によってＰＣＩｅルートコンプレックス３ａでのデータ転送に与える転送負荷の大きさに基づいてマスク処理を制御している。
【００６９】
したがって、データ転送状況をより適切に把握して制御することができ、安価かつより一層効率的なラウンドロビン方式でのデータ転送を行うことができる。
【００７０】
さらに、本実施例の画像処理装置１は、転送負荷の大きさをデータ転送要求の要求する転送データ量に基づいて判断している。
【００７１】
したがって、データ転送状況をより適切に把握して制御することができ、安価かつより一層効率的なラウンドロビン方式でのデータ転送を行うことができる。
【００７２】
また、本実施例の画像処理装置１は、ＰＣＩｅルートコンプレックス３ａが、ＤＭＡデータ転送によるデータ転送を調整し、データ転送要求が、ＤＭＡデータ転送要求であって、転送負荷の大きさをＤＭＡＣ転送要求がディスクリプタ転送要求であるかデータ転送要求であるかによって判断している。
【００７３】
したがって、ＤＭＡデータ転送におけるラウンドロビン方式でのデータ転送を安価にかつ効率的に行うことができる。
【００７４】
さらに、本実施例の画像処理装置１は、内部アービタ７０が、ＤＭＡＣ２０ａ〜５０ａからのデータ転送要求に基づいて、マスクを設定するか否かのマスク設定制御及び設定したマスクのマスク期間の解除を行うか否かのマスク期間制御を行っている。
【００７５】
したがって、マスクの設定の事前制御を行うことができるとともに、設定したマスク期間の制御を行うことができ、より一層適切かつ効率的にラウンドロビン方式でのデータ転送を行うことができる。
【００７６】
なお、上記実施例においては、スキャナ処理とプロッタ処理を行う複合装置、複写装置等の画像処理装置１に適用した場合について説明したが、データ転送装置としては、画像処理装置に限るものではなく、データ転送をラウンドロビン方式で行う装置一般に適用することができる。
【００７７】
以上、本発明者によってなされた発明を好適な実施例に基づき具体的に説明したが、本発明は上記実施例で説明したものに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【００７８】
本発明は、データ転送をラウンドロビン方式で行うとともに、マスク処理を行って意図するデバイスの転送を優先させるデータ転送制御装置、画像処理装置、データ転送制御方法、データ転送制御プログラム及び記録媒体に利用することができる。
【符号の説明】
【００７９】
１  画像処理装置
２  コントローラＡＳＩＣ
３  メインＣＰＵ
３ａ  ＰＣＩｅルートコンプレックス
３ｂ  内部バッファ
４  メインメモリ
５  スキャナＡＳＩＣ
６  スキャナ部
７  プロッタＡＳＩＣ
８  プロッタ部
９  ハードディスク（ＨＤＤ）
１０  外部ＩＦＡＳＩＣ
１１  ネットワーク
１２  外部デバイス
２０  ネットワークコントローラ
２０ａ  ＤＭＡＣ
２０ｂ  内部バッファ
２０ｃ  ネットワーク制御部
３０〜５０  外部デバイスコントローラ
３０ａ〜５０ａ  ＤＭＡＣ
６０  ＰＣＩｅコントローラ
６０ａ  ＰＣＩｅエンドポイント
６０ｂ  内部バッファ
７０  内部アービタ
７０ａ  転送要求制御部
８０  ＰＣＩｅ
【先行技術文献】
【特許文献】
【００８０】
【特許文献１】特許４０２４４８４号公報
【図１】
2010191492.tif 000003
【図２】
2010191492.tif 000004
【図３】
2010191492.tif 000005
【図４】
2010191492.tif 000006
【図５】
2010191492.tif 000007
【図６】
2010191492.tif 000008
【図７】
2010191492.tif 000009
【図８】
2010191492.tif 000010
【図９】
2010191492.tif 000011
【図１０】
2010191492.tif 000012