(57)【要約】【課題】  バス形式が異なるデバイスとの間で行う相互のデータ転送処理を効率よく行う。【解決手段】    第１のバス形式のインタフェースを介してデータ転送を行う第１のメモリ制御手段と、第２のバス形式のインタフェースを介して接続されるメモリデバイスとの間でデータ転送を行う第２のメモリ制御手段とを備えるデータ転送装置において、調停手段が第１のメモリ制御手段と第２のメモリ制御手段とをローカルバスで接続し、かつ、当該ローカルバスに、第２のメモリ制御手段から前記第１のメモリ制御手段に対するライトアクセスまたはリードアクセスと、前記第１のメモリ制御手段から第２のメモリ制御手段に対するリードアクセスまたはライトアクセスと、をローカルバスに接続されるローカルメモリを介して調停することを特徴とする。【選択図】  図１１
2017156924.tif 000002
【特許請求の範囲】
【請求項１】
画像処理を行う情報処理装置であって、
第１のバス形式のインタフェースを介してデータ転送を行う第１のメモリ制御手段と、
第２のバス形式のインタフェースを介して接続されるメモリデバイスとの間でデータ転送を行う第２のメモリ制御手段とを備え、
さらに、前記第１のメモリ制御手段と前記第２のメモリ制御手段とをローカルバスで接続し、かつ、当該ローカルバスに、前記第２のメモリ制御手段から前記第１のメモリ制御手段に対するライトアクセスまたはリードアクセスと、前記第１のメモリ制御手段から前記第２のメモリ制御手段に対するリードアクセスまたはライトアクセスとを前記ローカルバスに接続されるローカルメモリを介して調停する調停手段を備えることを特徴とする情報処理装置。
【請求項２】
画像処理を行う情報処理装置であって、
第１のバス形式のインタフェースを介してデータ転送を行う第１のメモリ制御手段と、
第２のバス形式のインタフェースを介して接続されるメモリデバイスとの間でデータ転送を行う第２のメモリ制御手段とを備え、
さらに、前記第１のメモリ制御手段と前記第２のメモリ制御手段とをローカルバスで接続し、かつ、当該ローカルバスに、前記第２のメモリ制御手段から前記第１のメモリ制御手段に対するライトアクセスまたはリードアクセスと、前記第１のメモリ制御手段から前記第２のメモリ制御手段に対するリードアクセスまたはライトアクセスとを所定のバッファを介して制御するメモリ制御手段を備えることを特徴とする情報処理装置。
【請求項３】
前記所定のバッファは、ＦＩＦＯ形式のバッファであることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記第１のメモリ制御手段は、所定のアドレス情報を前記第１のバス形式のインタフェースに接続されるデバイスが管理するアドレス空間に変換するアドレス変換手段を備えることを特徴とする請求項１または２に記載の情報処理装置。
【請求項５】
前記第１のバス形式のインタフェースは、ＰＣＩｅインタフェースであることを特徴とする請求項１または２に記載の情報処理装置。
【請求項６】
前記第２のバス形式のインタフェースは、ＳＡＴＡインタフェースであることを特徴とする請求項１または２に記載の情報処理装置。
【請求項７】
前記ローカルバスは、所定のインタフェースを介して画像処理デバイスが接続されることを特徴とする請求項１または２に記載の情報処理装置。
【請求項８】
前記画像処理デバイスは、プリンタ、スキャナを含むことを特徴とする請求項７に記載の情報処理装置。
【請求項９】
データ転送装置であって、
第１のバス形式のインタフェースを介してデータ転送を行う第１のメモリ制御手段と、
第２のバス形式のインタフェースを介して接続されるメモリデバイスとの間でデータ転送を行う第２のメモリ制御手段とを備え、
さらに、前記第１のメモリ制御手段と前記第２のメモリ制御手段とをローカルバスで接続し、かつ、当該ローカルバスに、前記第２のメモリ制御手段から前記第１のメモリ制御手段に対するライトアクセスまたはリードアクセスと、前記第１のメモリ制御手段から前記第２のメモリ制御手段に対するリードアクセスまたはライトアクセスとを前記ローカルバスに接続されるローカルメモリを介して調停する調停手段を備えることを特徴とするデータ転送装置。
【請求項１０】
データ転送装置であって、
第１のバス形式のインタフェースを介してデータ転送を行う第１のメモリ制御手段と、
第２のバス形式のインタフェースを介して接続されるメモリデバイスとの間でデータ転送を行う第２のメモリ制御手段とを備え、
さらに、前記第１のメモリ制御手段と前記第２のメモリ制御手段とをローカルバスで接続し、かつ、当該ローカルバスに、前記第２のメモリ制御手段から前記第１のメモリ制御手段に対するライトアクセスまたはリードアクセスと、前記第１のメモリ制御手段から前記第２のメモリ制御手段に対するリードアクセスまたはライトアクセスとを所定のバッファを介して制御するメモリ制御手段を備えることを特徴とするデータ転送装置。
【請求項１１】
第１のバス形式のインタフェースを介してデータ転送を行う第１のメモリ制御手段と、第２のバス形式のインタフェースを介して接続されるメモリデバイスとの間でデータ転送を行う第２のメモリ制御手段とを備えるデータ転送装置の制御方法であって、
前記第１のメモリ制御手段と前記第２のメモリ制御手段とをローカルバスで接続し、かつ、当該ローカルバスに、前記第２のメモリ制御手段から前記第１のメモリ制御手段に対するライトアクセスまたはリードアクセスと、前記第１のメモリ制御手段から前記第２のメモリ制御手段に対するリードアクセスまたはライトアクセスとを前記ローカルバスに接続されるローカルメモリを介して調停する調停工程を備えることを特徴とするデータ転送装置の制御方法。
【請求項１２】
第１のバス形式のインタフェースを介してデータ転送を行う第１のメモリ制御手段と、第２のバス形式のインタフェースを介して接続されるメモリデバイスとの間でデータ転送を行う第２のメモリ制御手段とを備えるデータ転送装置の制御方法であって、
前記第１のメモリ制御手段と前記第２のメモリ制御手段とをローカルバスで接続し、かつ、当該ローカルバスに、前記第２のメモリ制御手段から前記第１のメモリ制御手段に対するライトアクセスまたはリードアクセスと、前記第１のメモリ制御手段から前記第２のメモリ制御手段に対するリードアクセスまたはライトアクセスとを所定のバッファを介して制御するメモリ制御工程を備えることを特徴とするデータ転送装置の制御方法。
【請求項１３】
請求項１１または１２に記載のデータ転送装置の制御方法をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、データ転送装置、データ転送装置の制御方法、及びプログラムに関するものである。
【背景技術】
【０００２】
近年のＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｒｉｎｔｅｒ）等の画像処理装置は、ユーザからの要求に応じた複数の処理（コピージョブ、プリントジョブ、ＳＥＮＤジョブ等）を選択できる。この際、各処理に応じた画像処理はハードウェア又はソフトウェアにより実行される。
【０００３】
ＭＦＰの制御部であるコントローラの中には、ＣＰＵと画像処理ＡＳＩＣを有し、画像処理ＡＳＩＣに内蔵されているハードウェアによる画像処理アクセラレータと、ＣＰＵとが連携して動作し、画像処理を分担する構成が知られている。
【０００４】
上記の画像処理ＡＳＩＣにおいては、ＣＰＵ側と画像処理ＡＳＩＣそれぞれにＤＤＲ等のワークメモリを持ち、ＣＰＵとＡＳＩＣを接続するために、汎用のＰＣＩＥｘｐｒｅｓｓ（ＰＣＩｅ） Ｉ／Ｆを搭載するものがある。また、上記画像処理ＡＳＩＣと、画像データを格納するためのＨＤＤを接続するために、汎用のＳＡＴＡ Ｉ／Ｆを搭載するものがある。
さらに、そのような複数のＩ／Ｆを備えるシステムには、Ｉ／Ｆ間のデータ転送に関わるソフトウェアの処理負荷を減らすために、ＤＭＡＣを備えているものがある。（特許文献１）
【０００５】
上記画像処理ＡＳＩＣにおいて、ＤＭＡＣは、セクタで表されるＨＤＤのアドレス空間と、画像処理ＡＳＩＣ内部のローカルバスアドレス空間の間のデータ転送を行う。この時、特許文献２にあるように、ローカルバスアドレス空間の一部がＰＣＩｅ Ｉ／Ｆのアドレスウインドウとしてアサインされていれば、ＤＭＡＣがＰＣＩｅ先のデバイスのメモリに直接アクセスできる。
これによって、ＤＭＡＣは、ＳＡＴＡ Ｉ／Ｆに接続されたＨＤＤと、ＰＣＩｅ Ｉ／Ｆに接続されたデバイスのメモリ間のデータ転送を、余計なソフト制御を介することなく行うことができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１２−１６０９９７号公報
【特許文献２】特開２０１４−２１９９４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記のように画像処理ＡＳＩＣのローカルバスアドレス空間の一部をＰＣＩｅ Ｉ／Ｆアドレスウインドウとしてアサインする方法は、いくつかの課題を抱えている。
まず１つは、ローカルバスアドレス空間が所定のサイズ（例えば３２ｂｉｔ空間：４ＧＢ）に限定されている場合、ＰＣＩｅアドレス空間以外にアサインする領域があるため、十分な領域をＰＣＩｅアドレス空間にアサインできない場合がある。
同様に、ＰＣＩｅ Ｉ／Ｆに接続されたデバイスが大容量のメモリを有し、そのアドレス空間が、画像処理ＡＳＩＣのローカルバスアドレス空間よりも大きい場合にも、十分な領域をＰＣＩｅアドレス空間にアサインできない場合がある。
これによって、ＤＭＡＣによる一度のデータ転送では、ＰＣＩｅ Ｉ／Ｆに接続されたデバイスの任意のメモリ領域へのデータ転送を達成することができない。そのため、ＰＣＩｅ Ｉ／Ｆに接続されたデバイス側で、例えばＣＰＵによるメモリコピーなどで、改めて別のメモリ領域にデータを置き直す必要があり、データ転送のパフォーマンスが遅くなる。この時、画像処理ＡＳＩＣ内部のローカルバスアドレス空間を拡張すれば、十分な領域をアサインできるが、ローカルバスのバス幅を広げる必要があるため、回路規模が増大してしまうという課題があった。
【０００８】
本発明は、上記の課題を解決するためになされたもので、本発明の目的は、バス形式が異なるデバイスとの間で行う相互のデータ転送処理を効率よく行える仕組みを提供することである。
【課題を解決するための手段】
【０００９】
上記目的を達成する本発明の情報処理装置は以下に示す構成を備える。
画像処理を行う情報処理装置であって、第１のバス形式のインタフェースを介してデータ転送を行う第１のメモリ制御手段と、第２のバス形式のインタフェースを介して接続されるメモリデバイスとの間でデータ転送を行う第２のメモリ制御手段とを備え、さらに、前記第１のメモリ制御手段と前記第２のメモリ制御手段とをローカルバスで接続し、かつ、当該ローカルバスに、前記第２のメモリ制御手段から前記第１のメモリ制御手段に対するライトアクセスまたはリードアクセスと、前記第１のメモリ制御手段から前記第２のメモリ制御手段に対するリードアクセスまたはライトアクセスとを前記ローカルバスに接続されるローカルメモリを介して調停する調停手段を備えることを特徴とする。
上記目的を達成する本発明のデータ転送装置は以下に示す構成を備える。
画像処理を行う情報処理装置であって、第１のバス形式のインタフェースを介してデータ転送を行う第１のメモリ制御手段と、第２のバス形式のインタフェースを介して接続されるメモリデバイスとの間でデータ転送を行う第２のメモリ制御手段とを備え、さらに、前記第１のメモリ制御手段と前記第２のメモリ制御手段とをローカルバスで接続し、かつ、当該ローカルバスに、前記第２のメモリ制御手段から前記第１のメモリ制御手段に対するライトアクセスまたはリードアクセスと、前記第１のメモリ制御手段から前記第２のメモリ制御手段に対するリードアクセスまたはライトアクセスとを所定のバッファを介して制御するメモリ制御手段を備えることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、バス形式が異なるデバイスとの間で行う相互のデータ転送処理を効率よく行える。
【図面の簡単な説明】
【００１１】
【図１】情報処理装置の構成を説明するブロック図である。
【図２】アドレス変換処理を行うためのアドレス空間を示す図である。
【図３】アドレス変換処理を行うためのアドレス空間を示す図である。
【図４】アドレス変換処理を行うためのアドレス空間を示す図である。
【図５】ＦＩＦＯ制御部の構成を説明するブロック図である。
【図６】データ転送装置の制御方法を説明するフローチャートである。
【図７】ディスクリプタテーブルを説明する図である。
【図８】ディスクリプタテーブルを説明する図である。
【図９】情報処理装置の構成を説明するブロック図である。
【図１０】調停部の詳細構成を説明するブロック図である。
【図１１】データ転送装置の制御方法を説明するフローチャートである。
【発明を実施するための形態】
【００１２】
次に本発明を実施するための最良の形態について図面を参照して説明する。
＜システム構成の説明＞
〔第１実施形態〕
［画像処理装置の構成］
図１は、本実施形態を示す情報処理装置の構成を説明するブロック図である。本例は、ＳＡＴＡ  ＤＭＡとＰＣＩｅ  ＤＭＡを連携動作させて転送効率を上げるための仕組みを備えた情報処理装置である画像処理装置１００の構成例である。なお、本実施形態では、画像処理を行う情報処理装置である画像処理装置を例として構成を説明する。なお、画像処理装置は第１のバス形式のインタフェースを介してデータ転送を行う第１のメモリ制御手段（ＰＣＩｅルートコンプレックス（以下、ＲＣ）を備える。さらに、画像処理装置は、第２のバス形式のインタフェースを介して接続されるメモリデバイスとの間でデータ転送を行う第２のメモリ制御手段（ＰＣＩｅエンドポイント（以下、ＥＰ）とを備える。ここで、第１のバス形式とは、ＰＣＩバスを例とし、さらに、第２のバス形式とは、ＳＡＴＡバスを例とする。また、第１のバス形式のインタフェースとは、ＰＣＩｅインタフェースを例とし、第２のバス形式のインタフェースとは、ＳＡＴＡインタフェースを例とする。
【００１３】
図１において、画像処理装置１００のメインコントローラ部は、大きく分けて、ＰＣＩｅルートコンプレックス（以下、ＲＣ）１２０とＰＣＩｅエンドポイント（以下、ＥＰ）１４０から構成され、ＰＣＩｅ１６７によって相互に通信可能に接続されている。ＰＣＩｅ  ＲＣ１２０は以下のような構成を備える。
【００１４】
まず、ＣＰＵ１２１は、ＲＯＭ  Ｉ／Ｆ１２２やメモリコントローラＡ１２３を介して、ＲＯＭ１６０、ＲＡＭ−Ａ１６２のプログラムやデータにアクセスし、画像処理装置１００全体の制御を行う。ＰＣＩｅ制御部Ａ１２４は、ＰＣＩｅ１６７を介してＰＣＩｅ  ＥＰ１４０と接続され、データの高速通信を行う。操作部Ｉ／Ｆ１２５は、操作部１６１が接続され、ユーザはこの操作部１６１を介して、画像処理装置１００へのジョブ投入指示などを行うことができる。
【００１５】
ネットワークＩ／Ｆ１２６は、例えばＰＣからのプリントジョブの投入などの、外部機器とのデータ通信に使用される。ＵＳＢ  Ｉ／Ｆ１２７は、例えばＵＳＢメモリ等のストレージデバイスが接続され、ストレージデバイス内の画像データの印刷などに使用される。ＦＡＸ  Ｉ／Ｆ１２８は、例えば、ＦＡＸ回線からのデータを受信し、プリントするために使用される。これらの各モジュールは、ＡＸＩやＡＨＢなどを代表とするローカルバス１２９によって相互接続されている。
【００１６】
ＰＣＩｅ  ＥＰ１４０は、以下のような構成を備える。
まず、ＰＣＩｅ制御部Ｂ１４１は、ＰＣＩｅ１６７を介してＰＣＩｅ  ＲＣ１２０と接続され、データの高速通信を行う。より詳細には、ＰＣＩｅ制御部Ｂ１４１はＰＣＩｅ  ＤＭＡＣ１４２とアドレス変換部１４３を含んで構成されている。これらについては後で詳述する。
ＳＡＴＡ制御部１４４は、ＳＡＴＡ１６８を介してＨＤＤ１６３と接続され、ＨＤＤ１６３へのデータの読み書きを制御する。また、ＳＡＴＡ制御部１４４は、ＳＡＴＡ  ＤＭＡＣ１４５を含んで構成されており、ＣＰＵ１２１による細かいソフト制御をすることなく、ＨＤＤ１６３へのデータの読み書きが効率的にできるようになっている。これについても後で詳述する。
【００１７】
メモリコントローラＢ１４６は、ＲＡＭ−Ｂ１６４が接続され、例えば画像処理デバイスであるスキャナ部１６５によって読み取った画像データをスキャナＩ／Ｆ１４７を介して、格納するために使用される。ＲＡＭ−Ｂ１６４に格納された画像データは、画像処理デバイスであるプリンタ部１６６による出力を行うために、プリンタＩ／Ｆ１４８を介して出力されたり、ＳＡＴＡ制御部１４４を介してＨＤＤ１６３に格納されたりする。さらには、ＲＡＭ−Ｂ１６４に格納された画像データは、ＰＣＩｅ１６７を介してＰＣＩｅ  ＲＣ１２０に転送される。そして、画像データは、ネットワークＩ／Ｆ１２６から外部ＰＣに転送されたり、ＵＳＢ  Ｉ／Ｆ１２７を介してＵＳＢメモリに格納されたり、ＦＡＸ  Ｉ／Ｆ１２８を介してＦＡＸ送信されたりすることもある。
ＦＩＦＯ形式（First-In First-Out形式）のＦＩＦＯ制御部１４９は、内部にもつバッファ１５０をＦＩＦＯ制御できるように構成することで、ＰＣＩｅ  ＤＭＡＣ１４２とＳＡＴＡ  ＤＭＡＣ１４５を連携動作させることができる。これについても後で詳述する。これらの各モジュールは、ＡＸＩやＡＨＢなどを代表とするローカルバス１５１によって相互接続されている。
【００１８】
図２は、図１に示した情報処理装置におけるローカルバスのアドレス変換処理を説明するアドレス空間を示す図である。本例では、ＰＣＩｅ制御部Ｂ１４１が、ＰＣＩｅ  ＲＣ１２０側のローカルバス１２９のアドレス空間（ＰＣＩｅアドレス空間）と、ＰＣＩｅ  ＥＰ１４０側のローカルバス１５１のアドレス空間の間で、データ転送時のアドレス変換について説明する。
図２の（ａ）は、アドレス変換部１４３によりアドレス変換の方法を示し、図２の（ｂ）は、ＰＣＩｅ  ＤＭＡＣ１４２によるアドレス変換の方法を示している。以下、アドレス変換部１４３が所定のアドレス情報を第１のバス形式のインタフェースに接続されるデバイスが管理するアドレス空間に変換する処理を説明する。ここで、デバイスとは、ＰＣＩｅ  ＲＣ１２０を例とする。
【００１９】
まず、図２の（ａ）において、ローカルバス１５１のアドレス空間には、アドレス変換部１４３によるアドレス変換を行うためのＰＣＩｅアドレス変換領域２０７が含まれている。ローカルバス１５１側のマスタが、このＰＣＩｅアドレス変換領域２０７にアクセスすると、アドレス変換部１４３は、ローカルバス１２９側のアドレス（ＰＣＩｅアドレス）に変換を行う。
そして、ローカルバス１２９側にマッピングされたＰＣＩｅ領域２０３に対して、ＰＣＩｅ１６７経由でアクセスを行うものである（変換２１０）。これは、ローカルバス側のアドレス空間にマッピング可能なサイズの領域しか配置できない。
【００２０】
したがって、例えばローカルバス１５１側が３２ビットアドレス空間を持つ場合、最大で４ＧＢの空間の領域をＰＣＩｅアドレス変換領域とすることができる。ただ、ローカルバス１５１のアドレスマップには、ＲＡＭ−Ｂ領域２０８や、その他、画像処理装置１００が備える不図示の画像処理モジュールの設定レジスタなどの領域（その他領域２０４）が必要である。
【００２１】
そのため、本実施形態では、ＰＣＩｅアドレス変換領域は１ＧＢとしている。また、ローカルバス１５１側を６４ビットアドレス空間に拡張したりすると、回路規模によるコストアップとのトレードオフとはなるが、ＰＣＩｅアドレス変換領域２０７としてマッピングできる領域は増やすことができる。
次に、図２の（ｂ）において、ＰＣＩｅＤＭＡＣ１４２は、転送元と転送先のアドレスとして、ローカルバス１５１アドレス空間とＰＣＩｅアドレス空間を指定することができる。
【００２２】
それによって、これら２つのアドレス空間の全領域にわたって、任意空間でデータ転送を行うことができる（変換２３０）。また、本実施形態におけるＰＣＩｅＤＭＡＣ１４２は、ディスクリプタテーブルによる離散処理が可能であり、ソフトウェアによる制御を減らして、より効率的な連続データ転送を行うことができる。
【００２３】
図３は、図１に示した情報処理装置において、アドレス変換処理を行うためのアドレス空間を示す図である。本例では、ＳＡＴＡ制御部１４４が、ＨＤＤ１６３側のＳＡＴＡアドレス空間（ＨＤＤセクタ領域３０５）と、ＰＣＩｅ  ＥＰ１４０側のローカルバス１５１のアドレス空間の間を、データ転送時にどのようにアドレス変換するかを示す例である。
図３において、ＳＡＴＡ  ＤＭＡＣ１４５は、転送元と転送先のアドレスとして、ＳＡＴＡアドレス空間とローカルバス１５１のアドレス空間とを指定することができる。これによって、これら２つのアドレス空間の全領域にわたって、任意の空間でデータ転送を行うことができる（変換３１０）。
【００２４】
また、ローカルバス１５１アドレス空間として設定できる領域には、前述したＰＣＩｅアドレス変換領域２０７が含まれている。これによって、限定された領域ではあるが、ＨＤＤ１６３からＰＣＩｅ  ＲＣ側のＲＡＭ−Ａ１６２への直接のデータ転送が可能となっている。
また、本実施形態におけるＳＡＴＡ  ＤＭＡＣ１４５は、ディスクリプタテーブルによる離散処理が可能であり、ソフトウェアによる制御を減らして、より効率的な連続データ転送を行うことができる。
【００２５】
図４は、図１に示した情報処理装置において、アドレス変換処理を行うためのアドレス空間を示す図である。
本例は、ＰＣＩｅ  ＤＭＡＣ１４２とＳＡＴＡ  ＤＭＡＣ１４５を、ＦＩＦＯ制御部１４９の調停を介して連携動作させて、データ転送させる場合のアドレス変換の方法を示す例である。なお、簡単のため、ＨＤＤ１６３からＰＣＩｅ  ＲＣ１２０のＲＡＭ−Ａ１６２へデータ転送する場合について説明するが、逆方向でも同様である。まず、ＳＡＴＡ  ＤＭＡＣ１４５は、転送元にＨＤＤセクタ領域３０５の所定アドレスを指定し、転送先にはＦＩＦＯ制御部１４９のバッファ１５０に対してライトアクセスするためのバッファ領域２０５を指定する。
【００２６】
次に、ＰＣＩｅ  ＤＭＡＣ１４２は、転送元にＦＩＦＯ制御部１４９のバッファ１５０に対してリードアクセスするためのバッファ領域２０６を指定する。また、ＰＣＩｅ  ＤＭＡＣ１４２は、転送先には任意のローカルバス１２９アドレス空間上のアドレス（通常、ＲＡＭ−Ａ領域２０２）を指定する。ＰＣＩｅ  ＤＭＡＣ１４２とＳＡＴＡ  ＤＭＡＣ１４５は、それぞれ、アドレス設定後にＣＰＵ１２１上で動作するソフトウェアによって動作開始が指示される。すると、ＰＣＩｅ  ＤＭＡＣ１４２とＳＡＴＡ  ＤＭＡＣ１４５は、ＦＩＦＯ制御部１４９で調停されながらバッファ１５０へのデータライトとデータリードを並列に実行するように動作する。
【００２７】
図５は、図１に示したＦＩＦＯ制御部の構成を説明するブロック図である。本例では、上記並列動作を実現するＦＩＦＯ制御部１４９の構成を説明する。
【００２８】
図５において、ＦＩＦＯ制御部１４９は、ローカルバス１５１とのＩ／Ｆとして、スレーブＩ／Ｆ  Ａ５０１、スレーブＩ／Ｆ  Ｂ５０２の２つのＩ／Ｆを有する。スレーブＩ／Ｆ  Ａ５０１は、ＰＣＩｅ  ＤＭＡＣ１４２やＳＡＴＡ  ＤＭＡＣ１４５などのマスターから、ＦＩＦＯ制御部１４９のバッファ領域（ライト）２０５のアドレスへのアクセスを、自身へのアクセスと認識する。
【００２９】
一方、スレーブＩ／Ｆ  Ｂ５０２は、ＰＣＩｅ  ＤＭＡＣ１４２やＳＡＴＡ  ＤＭＡＣ１４５などのマスターから、ＦＩＦＯ制御部１４９のバッファ領域（リード）２０６のアドレスへのアクセスを、自身へのアクセスと認識する。ライトポインタ制御部５０３は、スレーブＩ／Ｆ  Ａ５０１から転送されたライトアクセスに対し、アドレスの正当性とバッファ１５０の空きを確認して、バッファ１５０にデータライトする。
【００３０】
リードポインタ制御部５０４は、スレーブＩ／Ｆ  Ａ５０２から転送されたリードアクセスに対し、アドレスの正当性とバッファ１５０にリードデータが十分スタックされているかを確認して、バッファ１５０からデータリードする。アドレスポインタ格納部５０５は、ライトポインタ制御部５０３、リードポインタ制御部５０４から更新されるライトポインタ情報、リードポインタ情報を持つ。アドレスポインタ格納部５０５は、これらのポインタ情報から、バッファ１５０に格納されたデータ量と、空きデータ量がどれほどあるかの情報を算出し、各ポインタ制御部５０３，５０４に送っている。
【００３１】
図６は、本実施形態を示すデータ転送装置の制御方法を説明するフローチャートである。以下、ＦＩＦＯ制御部１４９、ＰＣＩｅ  ＤＭＡＣ１４２、ＳＡＴＡ  ＤＭＡＣ１４５との連携処理を説明する。なお、処理フロー６００は、ＳＡＴＡ  ＤＭＡＣ１４５の動作を示している。処理フロー６４０は、ＦＩＦＯ制御部１４９の動作を示している。処理フロー６２０は、ＰＣＩｅ  ＤＭＡＣ１４２の動作を示している。
【００３２】
まず、処理フロー６００において、ＳＡＴＡ  ＤＭＡＣ１４５は、ＰＣＩｅ  ＲＣ１２０側のＣＰＵ１２１などから、動作設定が行われる（６０１）。動作設定は、例えば後述する図７に示す２つのディスクリプタテーブルの先頭アドレスを指定することで行う。
【００３３】
図７において、テーブル７００は、ＨＤＤ１６３からの読み出し順を示したディスクリプタテーブルである。テーブル７００の各エントリは、ＨＤＤ１６３のセクタアドレスを示すＬＢＡアドレス７０１、ＬＢＡアドレス７０１から読み出すデータ量を示すセクタ数７０２、テーブルの完了を示すＥＯＦ７０３から構成されている。テーブル７１０は、ローカルバス１５１への書き出し順を示したディスクリプタテーブルである。
【００３４】
テーブル７１０の各エントリは、ローカルバスアドレス７１１、ローカルバスアドレス７１１に書き出すデータ量を示すバイト数７１２、テーブルの完了を示すＥＯＦ７１３から構成されている。
【００３５】
なお、ＳＡＴＡ  ＤＭＡＣ１４５への設定によって、同様のテーブルを使用して、ローカルバス１５１側からリードし、ＨＤＤ１６３にライトするような動作も可能である。本実施形態では、書き出すデータは、図３に示すＦＩＦＯ制御部１４９のバッファ領域（ライト）２０５に書き出す必要がある。このため、例えばこの領域の先頭アドレスが０ｘ４１００００００、サイズが０ｘ１００００００の場合、テーブル７１０のような設定をする。
【００３６】
これにより、ＳＡＴＡ  ＤＭＡＣ１４５からのライトアクセスは、常にＦＩＦＯ制御部１４９に対して行われるようになる。設定が完了すると、ＤＭＡＣ動作の開始が指示される（６０２）。すると、ＳＡＴＡ  ＤＭＡＣ１４５はテーブル７００にしたがってＨＤＤ１６３からデータの読み出しを行う（６０３）。
【００３７】
そして、テーブル７１０のローカルバスアドレス７１１が示す領域のスレーブ（ＦＩＦＯ制御部１４９）に対して、ライトリクエストを発行する（６０４）。その後、ＦＩＦＯ制御部１４９からのＲｅａｄｙ信号を待ち（６０５）、Ｒｅａｄｙが返されると（６０５のＹｅｓ）、ＦＩＦＯ制御部１４９にライトデータを送信する（６０６）。
【００３８】
そして、ＳＡＴＡ  ＤＭＡＣ１４５は、リード元のＬＢＡアドレスやライト先のローカルバスアドレスのアドレスをインクリメントし、必要があれば、ディスクリプタテーブルのエントリを１エントリ先に進める（６０７）。これら６０３から６０７の処理を、ディスクリプタテーブルが示す全データを転送完了するまで続けて（６０８）、ＳＡＴＡ  ＤＭＡＣ１４５は転送を完了する。
【００３９】
処理フロー６２０において、ＰＣＩｅ  ＤＭＡＣ１４２では、ＰＣＩｅ  ＲＣ１２０側のＣＰＵ１２１などから、動作設定が行われる（６２１）。当該動作設定は、例えば図８に示す２つのディスクリプタテーブルの先頭アドレスを指定することで行う。
図８において、テーブル８００は、ＰＣＩｅ１６７を介して、ＰＣＩｅ  ＲＣ１２０に転送するデータの書き出し順を示したディスクリプタテーブルである。テーブル８００の各エントリは、ＰＣＩｅ１６７のＰＣＩｅアドレス８０１、ＰＣＩｅアドレス８０１に書き出すデータ量を示すバイト数８０２、テーブルの完了を示すＥＯＦ８０３から構成されている。
【００４０】
テーブル８１０は、ローカルバス１５１からの読み出し順を示したディスクリプタテーブルである。テーブル８１０の各エントリは、ローカルバスアドレス８１１、ローカルバスアドレス８１１から読み出すデータ量を示すバイト数８１２、テーブルの完了を示すＥＯＦ８１３から構成されている。
なお、ＰＣＩｅ  ＤＭＡＣ１４２への設定によって、同様のテーブルを使用して、ＰＣＩｅ１６７の空間からリードし、ローカルバス１５１の空間にライトするような動作も可能である。
【００４１】
本実施形態では、読み出すデータは、図３に示したＦＩＦＯ制御部１４９のバッファ領域（リード）２０６から読み出す必要がある。このため、例えばこの領域の先頭アドレスが０ｘ４０００００００、サイズが０ｘ１００００００の場合、テーブル８１０のように設定をする。
これにより、ＰＣＩｅ  ＤＭＡＣ１４２からのリードアクセスは、常にＦＩＦＯ制御部１４９に対して行われるようになる。設定が完了すると、ＤＭＡＣ動作の開始が指示される（６２２）。
【００４２】
すると、ＰＣＩｅ  ＤＭＡＣ１４２はテーブル８１０にしたがって、ＦＩＦＯ制御部１４９からデータの読み出しを行うために、リードリクエストを発行する（６２３）。ＦＩＦＯ制御部１４９からのＲｅａｄｙ信号を待ち（６２４）、Ｒｅａｄｙが返ってくると（６２４のＹｅｓ）、ＦＩＦＯ制御部１４９からリードデータを受信する（６２５）。受信したデータは、テーブル８００にしたがって、ＰＣＩｅ１６７を介して、ＰＣＩｅ  ＲＣ１２０に送信される（６２６）。
【００４３】
そして、ＰＣＩｅ  ＤＭＡＣ１４２は、リード元のローカルバスアドレスやライト先のＰＣＩｅアドレスのアドレスをインクリメントし、必要があれば、ディスクリプタテーブルのエントリを１エントリ先に進める（６２７）。これら６２３から６２７の処理を、ディスクリプタテーブルが示す全データを転送完了するまで続けて（６２８）、ＰＣＩｅ  ＤＭＡＣ１４２は転送を完了する。
【００４４】
処理フロー６４０において、ＦＩＦＯ制御部１４９は、ステートマシンを持ち、ＳＡＴＡ  ＤＭＡＣ１４５やＰＣＩｅ  ＤＭＡＣ１４２からのライト／リードリクエストやデータの送受信に応じて、動作する。
まず、ＳＡＴＡ  ＤＭＡＣ１４５から、ライトリクエストが発行されると、バッファ１５０に空きがあるかどうかを確認する（６４１）。バッファの空きは、ＦＩＦＯ制御部１４９が持つライトポインタと、リードポインタと、バッファ１５０の量から計算される。空きがあるとＦＩＦＯ制御部１４９が判断した場合、ＳＡＴＡ  ＤＭＡＣ１４５からのライトリクエストに対してＲｅａｄｙを発行する（６４２）。その後に、送信されてくるライトデータを受信してバッファ１５０に格納し、ライトポインタをインクリメントする（６４３）。
【００４５】
一方、ＰＣＩｅ  ＤＭＡＣ１４２から、ＦＩＦＯ制御部１４９にリードリクエストが発行されると、ＦＩＦＯ制御部１４９は、バッファ１５０に転送するリードデータが存在するかを確認する（６４４）。これは、ＦＩＦＯ制御部１４９が持つライトポインタとリードポインタから、バッファ１５０に格納されたデータ量を計算することにより行われる。必要なリードデータ量があるとＦＩＦＯ制御部１４９が判断した場合、ＰＣＩｅ  ＤＭＡＣ１４２にＲｅａｄｙを返す（６４５）。
【００４６】
そして、ＦＩＦＯ制御部１４９は、バッファ１５０に格納されたデータをＰＣＩｅ  ＤＭＡＣ１４２に送信し、リードポインタをインクリメントする（６４６）。ここで、処理６４４のように、必要なデータ量がバッファ１５０に存在するかどうかを、ＦＩＦＯ制御部１４９が判断できるように構成する。これにより、ソフト制御を介することなく、ＳＡＴＡ  ＤＭＡＣ１４５とＰＣＩｅ  ＤＭＡＣ１４２との間におけるデータ転送処理を連携することができる。
【００４７】
以上のような構成によって、ＳＡＴＡ  ＤＭＡＣ１４５とＰＣＩｅ  ＤＭＡＣ１４２を連携動作させる。これにより、ＨＤＤ上の任意の領域に格納されたデータを、ＰＣＩｅ  ＲＣ１２０側の任意の全領域に、ソフト処理の負荷を大きくすることなく転送することが可能となる。
【００４８】
〔第２実施形態〕
図９は、本実施形態を示す情報処理装置の構成を説明するブロック図である。以下、第１実施形態と異なる構成について説明する。本実施形態におけるＰＣＩｅ  ＥＰ１４０は、ＦＩＦＯ制御部１４９の代わりに、ＰＣＩｅ制御部Ｂ１４１やＳＡＴＡ制御部１４４と、ローカルバス１５１の間のバスアクセスを調停する図１０に詳細を示す調停部９００を有する。
【００４９】
図１０は、図９に示した調停部９００の詳細構成を説明するブロック図である。
図１０において、スレーブＩ／Ｆ  Ｐ１００１は、マスターとなるＰＣＩｅ  ＤＭＡＣ１４２から、ローカルバス１５１へのリード／ライトアクセスを途中で受けるためのＩ／Ｆである。スレーブＩ／Ｆ  Ｓ１００２は、マスターとなるＳＡＴＡ  ＤＭＡＣ１４５から、ローカルバス１５１へのリード／ライトアクセスを途中で受けるためのＩ／Ｆである。リード／ライトポインタ制御部１００３は、設定部１００７、アドレスポインタ格納部１００４の情報を基に、スレーブＩ／Ｆ  Ｐ１００１とスレーブＩ／Ｆ  Ｓ１００２からのアクセスを許可するかどうかの判断を行う。
設定部１００７には、ローカルメモリであるＲＡＭ−Ｂ１４６のいずれの領域をＦＩＦＯとして使用するかの設定を行う。
【００５０】
例えば、設定部１００７に、ＦＩＦＯとして扱うＲＡＭ−Ｂ１４６の領域を０ｘ１０００００００−０ｘ１０００８０００と設定する。すると、上記各スレーブＩ／Ｆからのアクセスアドレスがその領域にあった場合は、リード／ライトポインタ制御部１００３において、後述するリード／ライトアクセス制御を行う。しかし、そうでない場合は、各スレーブＩ／Ｆからのアクセスは、リード／ライトポインタ制御部１００３で制御することなく、マスターＩ／Ｆ  Ｐ１００５、マスターＩ／Ｆ  Ｓ１００６から、そのままローカルバス１５１の方へリクエストが出て行く。アドレスポインタ格納部１００４には、上記設定部１００７に設定されたアドレス領域へのライト／リードアクセスが発生した場合に、どのアドレスまでアクセスが行われたかを示すポインタ情報が格納されている。
【００５１】
リード／ライトポインタ制御部は、設定部１００７に設定されたアドレス領域へのアクセスがあると、そのポインタ情報を基に、そのアクセスをローカルバス１５１に発行するかどうかを判断する。そして、それを発行すると、その後に、アドレスポインタ格納部１００４のライト／リードポインタ情報を更新する。
【００５２】
図１１は、本実施形態を示すデータ転送装置の制御方法を説明するフローチャートである。以下、調停部９００を用いたアクセス制御の詳細を説明する。なお、本処理のフローは図６のフローチャートと同じであるため、図６のフローチャートとの差分のみ説明する。
まず、ＳＡＴＡ  ＤＭＡＣ処理フロー１１００については、ライトリクエストの発行先が、ＦＩＦＯ制御部１４９から、調停部９００を介してＲＡＭ−Ｂ１６４へアクセスする点のみ異なる。したがって、ＳＡＴＡ  ＤＭＡＣフロー１１００の中では、処理１１０４〜処理１１０６でライトアクセスする相手が調停部になっている点が異なる。したがって、フロー１１２０の中では、処理１１２３〜処理１１２５でリードアクセスする相手が調停部になっている点が異なる。
【００５３】
次に、調停部処理フロー１１４０について説明する。
調停部９００では、まず、ＳＡＴＡ  ＤＭＡＣ１４５から、送信先アドレスを含むライトリクエストを、スレーブＩ／Ｆ  Ｓ１００２経由で受信すると、そのリクエストが設定部に設定されたアドレス領域に対するアクセスかどうかを判断する（１１６１）。
例えば、前述のように、設定部１００７に、ＦＩＦＯとして扱うＲＡＭ−Ｂ１４６の領域を０ｘ１０００００００−０ｘ１０００８０００と設定する。すると、スレーブＩ／Ｆ  Ｓ１００２からのアクセスアドレスがこの領域の範囲外であるとリード／ライトポインタ制御部１００３が判断した場合（１１６１のＮｏ）、（１１６２）へ進む。そして、リード／ライトポインタ制御部１００３は、ＳＡＴＡ  ＤＭＡＣ１４５に対してＲｅａｄｙをアサートする（１１６２）。そして、ＳＡＴＡ  ＤＭＡＣ１４５からライトデータを受信し、マスターＩ／Ｆ  Ｓ１００６を介してＲＡＭ−Ｂ１４６にデータを送信する（１１６３）。
【００５４】
一方、スレーブＩ／Ｆ  Ｓ１００２からのアクセスアドレス、設定部１００７に設定された領域の範囲内であるとリード／ライトポインタ制御部１００３が判断した場合（１１６１のＹｅｓ）、（１１４１）へ進む。そして、リード／ライトポインタ制御部１００３は、アドレスポインタ格納部１００４からポインタ情報を読み出し、空きバッファがあるかを計算する（１１４１）。空きバッファができると（１１４１のＹｅｓ）、ＳＡＴＡ  ＤＭＡＣ１４５に対してＲｅａｄｙをアサートする（１１４２）。そして、リード／ライトポインタ制御部１００３は、ＳＡＴＡ  ＤＭＡＣ１４５からライトデータを受信し、それをＲＡＭ−Ｂ１４６へ送信する。そして、最後に、リード／ライトポインタ制御部１００３は、アドレスポインタ格納部１００４のライトポインタをインクリメントして、本処理を完了する。
【００５５】
一方、調停部９００がＰＣＩｅ  ＤＭＡＣ１４２から、送信先アドレスを含むリードリクエストを、スレーブＩ／Ｆ  Ｐ１００１経由で受信する。すると、リード／ライトポインタ制御部１００３は、そのリクエストが設定部に設定されたアドレス領域に対するアクセスかどうかを判断する（１１６４）。スレーブＩ／Ｆ  Ｐ１００１からのアクセスアドレスがこの領域の範囲外であるとリード／ライトポインタ制御部１００３が判断した場合（１１６４のＮｏ）、（１１６５）へ進む。
そして、リード／ライトポインタ制御部１００３は、ＰＣＩｅ  ＤＭＡＣ１４２に対してＲｅａｄｙをアサートする（１１６５）。そして、ＲＡＭ−Ｂ１４６からマスターＩ／Ｆ  Ｐ１０５を介してリードデータを受信し、ＰＣＩｅ  ＤＭＡＣ１４２にリードデータを送信する（１１６６）。
【００５６】
一方、スレーブＩ／Ｆ  Ｐ１００１からのアクセスアドレスが、設定部１００７に設定された領域の範囲内であるとリード／ライトポインタ制御部１００３が判断した場合（１１６４のＹｅｓ）、（１１４４）へ進む。そして、アドレスポインタ格納部１００４からポインタ情報を読み出し、先にＲＡＭ−Ｂ１４６にライトされたリードデータがあるかを計算する（１１４４）。そして、リード／ライトポインタ制御部１００３がリードデータがあると判断した場合（１１４４のＹｅｓ）、ＰＣＩｅ  ＤＭＡＣ１４２対してＲｅａｄｙをアサートする（１１４５）。そして、ＲＡＭ−Ｂ１４６からリードデータを受信し、それをＰＣＩｅ  ＤＭＡＣ１４２に送信する。そして、最後に、リード／ライトポインタ制御部１００３は、アドレスポインタ格納部１００４のリードポインタをインクリメントして、本処理を完了する（１１４６）。
【００５７】
以上のような構成を採ることで、第１実施形態に示したように、追加のバッファ１５０や、ＦＩＦＯ領域専用のバッファ領域２０５、２０６を設けなくてもよい構成とすることができる。これにより、ＰＣＩｅ  ＤＭＡＣ１４２、ＳＡＴＡ  ＤＭＡＣ１４５間の連携動作をすることができ、当初の目的を達成することができる。
なお、各実施形態では、情報処理装置の例を画像処理装置とする場合について説明したが、各フローチャートで説明したデータ転送制御を実行可能な構成であれば、データ転送装置として構成することも可能である。これにより、画像処理装置以外の各種の情報処理装置に備えられる異なるバス形式を利用したデータ転送制御に本発明を適用することで同様の効果が期待できる。
【００５８】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステムまたは装置に供給する。そして、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えばＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００５９】
１２４、１４０  ＰＣＩｅ制御部
１４９  ＦＩＦＯ制御部
【図１】
2017156924.tif 000003
【図２】
2017156924.tif 000004
【図３】
2017156924.tif 000005
【図４】
2017156924.tif 000006
【図５】
2017156924.tif 000007
【図６】
2017156924.tif 000008
【図７】
2017156924.tif 000009
【図８】
2017156924.tif 000010
【図９】
2017156924.tif 000011
【図１０】
2017156924.tif 000012
【図１１】
2017156924.tif 000013