(57)【要約】【課題】  共有メモリへデータを転送する際の転送サイクルを増大させることなく、データの転送効率を向上させたデータ転送システムを提供する。【解決手段】  入出力装置１１０は、入出力装置１１０から入出力装置１２０へデータを転送する際にＰＣＩバスコントローラ１１２を介して入出力装置１２０へ送出される転送要求を生成する第１の転送要求生成部１３１と、入出力装置１２０からの転送応答に基づいてＲＡＭ１１３上のデータをＲＡＭ１２３内に書き込む第１のデータ書込み部１３２と、入出力装置１２０から入出力装置１１０へデータを転送する際に送出される入出力装置１２０からの転送要求に基づいて読出し要求を当該転送要求に対する応答として生成する転送応答生成部１３３と、入出力装置１２０からの読出し応答に基づいてＲＡＭ１２３上のデータを読み出し、ＲＡＭ１１３内に書き込むデータ読出し部１３４により構成される。【選択図】  図４
2009064340.tif 000002
【特許請求の範囲】
【請求項１】
入出力バスを介してデータ転送可能に接続された第１の入出力装置及び第２の入出力装置からなるデータ転送システムであって、
上記第１の入出力装置は、上記入出力バスによるデータ転送を制御する第１の入出力バスコントローラと、上記第１の入出力バスコントローラが第１のローカルバスを介して通信可能に接続された第１のメモリとを有し、
上記第１のメモリは、上記入出力バスのアドレス空間に割り当てられていない非共有メモリと、上記アドレス空間に割り当てられ、入出力バスを介して第２の入出力装置と共有される共有メモリとからなり、
上記第２の入出力装置は、上記入出力バスによるデータ転送を制御する第２の入出力バスコントローラと、上記第２の入出力バスコントローラが第２のローカルバスを介して通信可能に接続され、上記アドレス空間に割り当てられた第２のメモリとを有するデータ転送システムにおいて、
上記第１の入出力装置が、第１の入出力装置から第２の入出力装置へデータを転送する際に、上記第１の入出力バスコントローラを介して上記第２の入出力装置へ送出される転送要求を生成する第１の転送要求生成手段と、
上記転送要求に対する上記第２の入出力装置からの応答に基づいて、上記第１のメモリ上のデータを、上記第１の入出力バスコントローラを介して上記第２のメモリ内に書き込む第１のデータ書込み手段と、
第２の入出力装置から第１の入出力装置へデータを転送する際に送出される上記第２の入出力装置からの転送要求に基づいて、上記第１の入出力バスコントローラを介して上記第２の入出力装置へ送出される読出し要求を当該転送要求に対する応答として生成する転送応答生成手段と、
上記読出し要求に対する上記第２の入出力装置からの応答に基づいて、上記第１の入出力バスコントローラを介して上記第２のメモリ上のデータを読み出し、上記第１のメモリ内に書き込むデータ読出し手段とを備えたことを特徴とするデータ転送システム。
【請求項２】
上記第２の入出力装置が、第２の入出力装置から第１の入出力装置へデータを転送する際に、上記第２の入出力バスコントローラを介して上記第１の入出力装置へ送出される上記転送要求として、上記共有メモリへの転送を指定した第１転送要求及び上記非共有メモリへの転送を指定した第２転送要求を生成する第２の転送要求生成手段と、
上記第１転送要求に対する上記第１の入出力装置からの応答に基づいて、上記第２のメモリ上のデータを、上記第２の入出力バスコントローラを介して上記共有メモリ内に書き込む第２のデータ書込み手段とを備え、
上記転送応答生成手段が、上記第２転送要求に基づいて上記読出し要求を生成し、
上記データ読出し手段が、上記読出し要求に対する上記第２の入出力装置からの応答に基づいて第２のメモリから読み出したデータを上記非共有メモリ内に書き込むことを特徴とする請求項１に記載のデータ転送システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送システムに係り、さらに詳しくは、ＰＣＩバスなどの入出力バスを介して入出力装置間でデータの転送を行うデータ転送システムの改良に関する。
【背景技術】
【０００２】
入出力バスを介して入出力装置間でデータの転送を行うデータ転送システムでは、各入出力装置における入出力バスコントローラにより、入出力バスを介して行われるデータ転送の制御が行われる。例えば、カラーコピー機能、ファクシミリ通信機能、ネットワークスキャナ機能及びネットワークプリンタ機能を有する複合機（MultiFunction Peripheral：ＭＦＰ）では、ＰＣＩ（Peripheral Component Interconnect）バスを介して行われるデータ転送がＰＣＩコントローラによって制御される（例えば、特許文献１）。
【０００３】
一般に、入出力バスを介して行われるデータ転送では、入出力バスコントローラがデータ転送時に使用するアドレス線の数により、入出力バスのバスアドレスからなるアドレス空間のサイズが決定される。この様なアドレス空間に入出力装置内のメモリのメモリアドレスを割り当てる場合のアドレス割当ては、入出力装置の使用目的や機能に応じて入出力装置ごとに適宜定められる。このため、メモリアドレスのビット数に比べて、アドレス空間のサイズが小さい場合や、アドレス空間に割り当てられるメモリアドレスの数が少ない場合に、入出力装置によっては、他の入出力装置と共有できないメモリ領域が生じることになる。すなわち、入出力バスのアドレス空間にメモリアドレスが割り当てられず、入出力装置間で共有されないメモリ領域（非共有メモリ）が生じることになる。従来のデータ転送システムでは、この様な非共有メモリへデータを転送する場合、一旦、転送先の入出力装置の共有メモリ、すなわち、アドレス空間にメモリアドレスが割り当てられたメモリ領域内にデータを書き込ませ、そして、転送元の入出力装置が書き込んだ共有メモリ上のデータを転送先の入出力装置内で非共有メモリに移動させなければならなかった。このため、データの転送効率が良くないという問題があった。
【０００４】
なお、ＰＣＩバスを介して入出力装置間でデータ転送を行う技術については、例えば、特許文献２に記載されている。
【特許文献１】特開２００６−３０９４４４号公報
【特許文献２】特開２００３−１２２７０１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述した様に、従来のデータ転送システムでは、入出力装置間でデータを転送する際のデータの転送効率が良くないという問題があった。
【０００６】
本発明は、上記事情に鑑みてなされたものであり、入出力装置間でデータを転送する際のデータの転送効率を向上させたデータ転送システムを提供することを目的としている。特に、共有メモリへデータを転送する際の転送サイクルを増大させることなく、データの転送効率を向上させたデータ転送システムを提供することを目的としている。また、非共有メモリを有する入出力装置へデータを転送する場合に、共有メモリへデータを転送する際の転送サイクルを増大させることなく、非共有メモリへデータを転送する際の転送効率を向上させることができるデータ転送システムを提供することを目的としている。
【課題を解決するための手段】
【０００７】
第１の本発明によるデータ転送システムは、入出力バスを介してデータ転送可能に接続された第１の入出力装置及び第２の入出力装置とからなるデータ転送システムであって、上記第１の入出力装置が、上記入出力バスによるデータ転送を制御する第１の入出力バスコントローラと、上記第１の入出力バスコントローラが第１のローカルバスを介して通信可能に接続された第１のメモリとを有し、上記第１のメモリが、上記入出力バスのアドレス空間に割り当てられていない非共有メモリと、上記アドレス空間に割り当てられ、入出力バスを介して第２の入出力装置と共有される共有メモリとからなり、上記第２の入出力装置が、上記入出力バスによるデータ転送を制御する第２の入出力バスコントローラと、上記第２の入出力バスコントローラが第２のローカルバスを介して通信可能に接続され、上記アドレス空間に割り当てられた第２のメモリとを有する。そして、上記第１の入出力装置は、第１の入出力装置から第２の入出力装置へデータを転送する際に、上記第１の入出力バスコントローラを介して上記第２の入出力装置へ送出される転送要求を生成する第１の転送要求生成手段と、上記転送要求に対する上記第２の入出力装置からの応答に基づいて、上記第１のメモリ上のデータを、上記第１の入出力バスコントローラを介して上記第２のメモリ内に書き込む第１のデータ書込み手段と、第２の入出力装置から第１の入出力装置へデータを転送する際に送出される上記第２の入出力装置からの転送要求に基づいて、上記第１の入出力バスコントローラを介して上記第２の入出力装置へ送出される読出し要求を当該転送要求に対する応答として生成する転送応答生成手段と、上記読出し要求に対する上記第２の入出力装置からの応答に基づいて、上記第１の入出力バスコントローラを介して上記第２のメモリ上のデータを読み出し、上記第１のメモリ内に書き込むデータ読出し手段とを備えて構成される。
【０００８】
このデータ転送システムでは、第２の入出力装置の第２のメモリが入出力バスを介して第１の入出力装置と共有される共有メモリとして機能し、第１の入出力装置から第２のメモリへデータを転送する場合に、第１の入出力装置によりデータの書込み動作が行われ、第２の入出力装置から第１の入出力装置へデータを転送する場合に、第１の入出力装置によりデータの読出し動作が行われる。
【０００９】
ここで、入出力装置間でデータを転送する場合に、転送先の入出力装置に転送元の入出力装置からデータを読み出させることにより、データが非共有メモリへ転送されるようにすることが考えられる。ところが、データ転送時につねに転送先の入出力装置に転送元の入出力装置からデータを読み出させるようにすると、共有メモリへデータを転送する場合であっても、転送先の入出力装置が転送元の入出力装置からデータを読み出すことになる。一般に、入出力バスを介して他の入出力装置にデータを書き込む動作（ライト動作）は、データの格納先を示すメモリアドレスとデータとを同時に送出することができるので、転送サイクル（サイクルタイム）を短くすることができる。一方、入出力バスを介して他の入出力装置からデータを読み出す動作（リード動作）は、データの格納元を示すメモリアドレスの送出後にデータが読み出されるので、メモリアドレスの送出とデータの送出との間にタイムラグが生じることになる。しかも、リード動作は、転送元の動作遅延を考慮する必要があることから、ライト動作に比べて転送サイクルが長くなる。このため、データ転送時につねに転送先の入出力装置に転送元の入出力装置からデータを読み出させるようにすると、共有メモリへデータを転送する場合であっても、転送先の入出力装置により転送元の入出力装置からデータが読み出されるので、転送サイクルが長くなってしまうという問題があった。
【００１０】
本発明によるデータ転送システムは、上記構成を採用することにより、第１の入出力装置から第２の入出力装置の共有メモリへデータを転送する際の転送サイクルを増大させることなく、第１の入出力装置の非共有メモリへデータを転送する際のデータの転送効率を向上させることができる。
【００１１】
第２の本発明によるデータ転送システムは、上記構成に加え、上記第２の入出力装置が、第２の入出力装置から第１の入出力装置へデータを転送する際に、上記第２の入出力バスコントローラを介して上記第１の入出力装置へ送出される上記転送要求として、上記共有メモリへの転送を指定した第１転送要求及び上記非共有メモリへの転送を指定した第２転送要求を生成する第２の転送要求生成手段と、上記第１転送要求に対する上記第１の入出力装置からの応答に基づいて、上記第２のメモリ上のデータを、上記第２の入出力バスコントローラを介して上記共有メモリ内に書き込む第２のデータ書込み手段とを備え、上記転送応答生成手段が、上記第２転送要求に基づいて上記読出し要求を生成し、上記データ読出し手段が、上記読出し要求に対する上記第２の入出力装置からの応答に基づいて第２のメモリから読み出したデータを上記非共有メモリ内に書き込むように構成される。
【００１２】
このデータ転送システムでは、第２の入出力装置から第１の入出力装置へデータを転送する場合に、共有メモリへのデータ転送については、第２の入出力装置によりデータ書込みが行われ、非共有メモリへのデータ転送については、第１の入出力装置によりデータ読出しが行われる。従って、非共有メモリを有する第１の入出力装置へデータを転送する場合に、共有メモリへデータを転送する際の転送サイクルを増大させることなく、非共有メモリへデータを転送する際の転送効率を向上させることができる。
【発明の効果】
【００１３】
本発明によるデータ転送システムによれば、第１の入出力装置から第２の入出力装置の共有メモリへデータを転送する際の転送サイクルを増大させることなく、第１の入出力装置の非共有メモリへデータを転送する際の転送効率を向上させることができる。また、非共有メモリを有する第１の入出力装置へデータを転送する場合に、共有メモリへデータを転送する際の転送サイクルを増大させることなく、非共有メモリへデータを転送する際の転送効率を向上させることができる。従って、入出力装置間でデータを転送する際のデータの転送効率を向上させたデータ転送システムを実現することができる。
【発明を実施するための最良の形態】
【００１４】
図１は、本発明の実施の形態によるデータ転送システムの一構成例を示したシステム図であり、データ転送システムの一例としてデジタル複合機１００が示されている。このデジタル複合機１００は、カラーコピー機能、ファクシミリ通信機能、ネットワークスキャナ機能及びネットワークプリンタ機能を有するデータ処理装置であり、ＰＣＩバス１０を介してデータ転送可能に接続された複数の入出力装置により構成される。
【００１５】
すなわち、デジタル複合機１００は、ＰＣＩバス１０、ＰＣＩブリッジ１１、ＭＦＰコントローラ２０、スキャナ２６、カラー画像処理ボード３０、ネットワークボード４０、プリンタコントローラ５０及びプリンタ５５により構成されている。
【００１６】
ＰＣＩバス１０は、データ伝送路としての入出力バスであり、データを伝送するためのデータ線、メモリアドレスを伝送するためのアドレス線、コマンドを伝送するための制御線などからなる。例えば、３２ビットのバス幅の入出力バスがＰＣＩバス１０として用いられる。
【００１７】
ＰＣＩブリッジ１１は、２つのＰＣＩバス１０を互いに接続するための回路である。この例では、一方のＰＣＩバス１０にＭＦＰコントローラ２０及びネットワークコントローラ４０が接続され、他方のＰＣＩバス１０にカラー画像処理ボード３０及びプリンタコントローラ５０が接続されている。この様な２つのＰＣＩバス１０は、ＰＣＩブリッジ１１により、１つの入出力バスとして機能するようになっている。
【００１８】
ＭＦＰコントローラ２０は、このデータ転送システムにおけるホストデバイスとして機能する入出力装置であり、カラー画像処理ボード３０、ネットワークボード４０及びプリンタコントローラ５０は、いずれもスレーブデバイスとして機能する入出力装置となっている。
【００１９】
ＭＦＰコントローラ２０は、ローカルバス２５を介して互いに通信可能に接続されたＣＰＵ２１、ＰＣＩホストコントローラ２２、割込みコントロールレジスタ２３及びＲＡＭ２４からなる。
【００２０】
このＭＦＰコントローラ２０では、例えば、スキャナ２６により原稿から読み取られたカラー画像データに対して、色空間変換やデータ圧縮などの画像処理を行い、ＰＣＩバス１０を介してカラー画像処理ボード３０又はネットワークボード４０に転送し、或いは、カラー画像データをファクシミリ送受信する動作が行われる。
【００２１】
スキャナ２６は、原稿などの光学読み取りにより、画像データを生成する光学式の画像読取装置であり、例えば、複数の色成分からなるカラー画像データが生成される。
【００２２】
ＣＰＵ（Central Processing Unit：中央演算処理装置）２１は、ローカルバス２５を介してＰＣＩホストコントローラ２２、割込みコントロールレジスタ２３及びＲＡＭ２４を制御する制御部である。ＰＣＩホストコントローラ２２は、ＰＣＩバス１０によるデータ転送を制御する入出力バスコントローラであり、ＰＣＩバス１０を介してスレーブデバイスとの間で行われる通信の制御を行っている。
【００２３】
割込みコントロールレジスタ２３は、このデータ転送システムを構成する入出力装置の１つが他の入出力装置に対して割込みを発生させる際に、割込み要求を書き込むためのメモリである。この割込みコントロールレジスタ２３は、自デバイスのＣＰＵ２１や他のスレーブデバイスのＣＰＵ３１、４１及び５１と割込み信号線により接続されており、割込み要求元のデバイスにより割込み要求が書き込まれると、割込み要求先のデバイスに割込み信号が出力される。
【００２４】
ＲＡＭ（Random Access Memory）２４は、通信データや画像データを保持するための書き換え可能な揮発性の半導体メモリであり、記憶保持に電力供給が必要なメモリとなっている。このＲＡＭ２４は、例えば、ＣＰＵ２１のメインメモリとして用いられる。ＲＡＭ２４には、自デバイスとＰＣＩバス１０を介して接続されたスレーブデバイスがコマンドを書き込むためのメモリ領域としてコマンド領域が設けられている。ＣＰＵ２１は、このコマンド領域を利用してスレーブデバイスと通信を行うことができる。
【００２５】
カラー画像処理ボード３０は、ローカルバス３４を介して互いに通信可能に接続されたＣＰＵ３１、ＰＣＩバスコントローラ３２及びＲＡＭ３３を有する回路基板からなり、画像データを用紙に印刷するための画像処理を行っている。例えば、ＰＣＩバス１０を介してＭＦＰコントローラ２０から転送された色成分ＹＣｒＣｂからなるカラー画像データを色成分ＣＭＹＫからなる画像データに色空間変換する処理、或いは、色空間変換された画像データをさらに２値化する階調減少処理などが行われる。
【００２６】
ＣＰＵ３１は、ローカルバス３４を介してＰＣＩバスコントローラ３２及びＲＡＭ３３を制御する制御部であり、割込みコントローラが内蔵されている。この割込みコントローラは、割込み信号線を介して割込みコントロールレジスタ２３から割込み信号を受信した場合に、割込みを発生させる。
【００２７】
ＰＣＩバスコントローラ３２は、ＰＣＩバス１０によるデータ転送を制御する入出力バスコントローラであり、ＰＣＩバス１０を介して他のデバイスとの間で行われる通信の制御を行っている。ＲＡＭ３３は、書き換え可能な揮発性の半導体メモリであり、例えば、ＣＰＵ３１のメインメモリとして用いられる。
【００２８】
ネットワークボード４０は、ローカルバス４４を介して互いに通信可能に接続されたＣＰＵ４１、ＰＣＩバスコントローラ４２及びＲＡＭ４３を有する回路基板からなり、ＬＡＮなどの通信ネットワーク４５上のクライアントＰＣ４６との間で通信を行っている。例えば、ＰＣＩバス１０を介してＭＦＰコントローラ２０から転送された画像データをクライアントＰＣ４６へ送信する処理、或いは、クライアントＰＣ４６から受信した画像データをファクシミリ送信するために、ＰＣＩバス１０を介して画像データをＭＦＰコントローラ２０に転送する処理が行われる。或いは、クライアントＰＣ４６から受信した画像データをプリンタ出力するために、ＰＣＩバス１０を介して画像データをプリンタコントローラ５０に転送する処理が行われる。
【００２９】
プリンタコントローラ５０は、ローカルバス５４を介して互いに通信可能に接続されたＣＰＵ５１、ＰＣＩバスコントローラ５２及びＲＡＭ５３からなり、他のデバイスから転送された画像データに基づいてプリンタ５５を制御する動作を行っている。例えば、ＰＣＩバス１０を介してカラー画像処理ボード３０から転送され、或いは、ネットワークボード４０から転送された画像データに基づいて、プリンタ５５が制御される。プリンタ５５は、画像データを用紙などに印刷する画像印刷装置である。
【００３０】
この様にして構成されたデータ転送システムでは、ホストデバイスとして機能するＭＦＰコントローラ２０がＰＣＩバス１０を介して接続されたカラー画像処理ボード３０、ネットワークボード４０及びプリンタコントローラ５０の各スレーブデバイスとの間で通信を行うことができるとともに、これらのスレーブデバイスがＭＦＰコントローラ２０を介さずに互いに通信を行うこともできる。
【００３１】
ここで、スレーブデバイス間でＭＦＰコントローラ２０を介さずに行われるデータ転送の一例として、カラー画像処理ボード３０がコマンド送信側のスレーブデバイスであり、プリンタコントローラ５０がコマンド受信側のスレーブデバイスである場合のデータ転送について説明する。
【００３２】
まず、コマンド送信側のカラー画像処理ボード３０のＣＰＵ３１は、コマンド受信側のプリンタコントローラ５０のＲＡＭ５３上に設けられている自デバイス、すなわち、カラー画像処理ボード３０用のコマンド領域のセマフォ（semaphore）を獲得する。具体的には、ＣＰＵ３１が、自デバイスのＲＡＭ３３上の所定領域内に上記コマンド領域の使用権を獲得するための情報を書き込むことにより、ＲＡＭ５３上のコマンド領域のセマフォが獲得される。
【００３３】
次に、ＣＰＵ３１は、ＲＡＭ５３上のコマンド領域内にコマンドを書き込む。このコマンドの書込みは、ＰＣＩバスコントローラ３２がＰＣＩバス１０を介してプリンタコントローラ５０のＰＣＩバスコントローラ５２にコマンドを送信し、ＰＣＩバスコントローラ５２が受信したコマンドをＲＡＭ５３上のコマンド領域内にローカルバス５４を介して書き込むことにより行われる。
【００３４】
次に、ＣＰＵ３１は、転送すべきデータをＲＡＭ５３上のデータ領域内に書き込む。具体的には、ＰＣＩバスコントローラ３２がＰＣＩバス１０を介してプリンタコントローラ５０のＰＣＩバスコントローラ５２にデータを送信し、ＰＣＩバスコントローラ５２が受信したデータをＲＡＭ５３上のデータ領域内にローカルバス５４を介して書き込むことにより行われる。
【００３５】
コマンド送信側のカラー画像処理ボード３０のＣＰＵ３１は、この様にしてコマンド受信側のＲＡＭ５３にコマンド及びデータを書き込むと、その旨をコマンド受信側のプリンタコントローラ５０に通知するために、割込みを発生させる。すなわち、ＰＣＩバスコントローラ３２により、プリンタコントローラ５０に対して割込みを発生させるための割込み要求が割込みコントロールレジスタ２３にＰＣＩバス１０を介して書き込まれる。
【００３６】
この割込み要求の書込みは、ＰＣＩバスコントローラ３２がＰＣＩバス１０を介してＰＣＩホストコントローラ２２に割込み要求を送信し、ＰＣＩホストコントローラ２２が受信した割込み要求を割込みコントロールレジスタ２３にローカルバス２５を介して書き込むことにより行われる。
【００３７】
カラー画像処理ボード３０からプリンタコントローラ５０への割込み要求が割込みコントロールレジスタ２３にセットされると、割込みコントロールレジスタ２３から割込み信号線を介してプリンタコントローラ５０のＣＰＵ５１に割込み信号が送信される。この様にして、ＣＰＵ３１がプリンタコントローラ５０のＣＰＵ５１に対して割込みを発生させることにより、コマンド及びデータの書込み完了がプリンタコントローラ５０に通知される。
【００３８】
一方、書込み完了が通知されたプリンタコントローラ５０のＣＰＵ５１は、ＲＡＭ５３内におけるカラー画像処理ボード３０用のコマンド領域からコマンドを読出し、データ領域からデータを読み出す。
【００３９】
次に、ＣＰＵ５１は、データ領域から読み出したデータに対して、カラー画像処理ボード３０用のコマンド領域から読み出したコマンドに対応する処理を実行し、カラー画像処理ボード３０用のコマンド領域からコマンド及びデータを読み出したことをコマンド送信側に通知するために、カラー画像処理ボード３０に対して割込みを発生させる。
【００４０】
すなわち、ＰＣＩバスコントローラ５２により、カラー画像処理ボード３０に対して割込みを発生させるための割込み要求が割込みコントロールレジスタ２３にＰＣＩバス１０を介して書き込まれる。
【００４１】
この割込み要求の書込みは、ＰＣＩバスコントローラ５２がＰＣＩバス１０を介してＰＣＩホストコントローラ２２に割込み要求を送信し、ＰＣＩホストコントローラ２２が受信した割込み要求を割込みコントロールレジスタ２３にローカルバス２５を介して書き込むことにより行われる。
【００４２】
プリンタコントローラ５０からカラー画像処理ボード３０への割込み要求が割込みコントロールレジスタ２３にセットされると、割込みコントロールレジスタ２３から割込み信号線を介してカラー画像処理ボード３０のＣＰＵ３１に割込み信号が送信される。
【００４３】
カラー画像処理ボード３０のＣＰＵ３１は、割込みコントロールレジスタ２３からの割込み信号の受信により、自デバイス用のコマンド領域に書き込んだコマンド及びデータがプリンタコントローラ５０のＣＰＵ５１によって読み出されて不要になったと判断する。そして、ＣＰＵ３１は、ＲＡＭ５３内における自デバイス用のコマンド領域に未使用であることを示すコマンドを書き込み、ＲＡＭ３３内の所定領域に上記コマンド領域の使用権を返却するための情報を書き込んで、自デバイス用のコマンド領域のセマフォを返却してこの通信を終了する。
【００４４】
本実施の形態では、この様にしてＰＣＩバス１０を介して行われるスレーブデバイス間のデータ転送と、ホストデバイス及びスレーブデバイス間で行われるデータ転送において、非共有メモリを有する入出力装置へデータを転送する場合に、転送先の入出力装置によるデータの読み出しが行われる。
【００４５】
図２は、図１のデジタル複合機１００の要部における構成例を示したブロック図であり、ＰＣＩバス１０により接続された入出力装置１１０及び１２０が示されている。入出力装置１１０及び１２０は、いずれもデータ転送システムを構成するホストデバイス又はスレーブデバイスである。
【００４６】
ここでは、ＭＦＰコントローラ２０、カラー画像処理ボード３０、ネットワークボード４０及びプリンタコントローラ５０の各入出力装置のうち、ＲＡＭ１１３上に共有メモリ１１３ａ及び非共有メモリ１１３ｂを有する入出力装置１１０を第１の入出力装置「デバイスＡ」とする。一方、ＲＡＭ１２３上に共有メモリしか有していない入出力装置１２０を第２の入出力装置「デバイスＢ」とする。
【００４７】
すなわち、入出力装置１１０は、ＣＰＵ１１１、ＰＣＩバスコントローラ１１２、共有メモリ１１３ａ、非共有メモリ１１３ｂ及びローカルバス１１４からなる。入出力装置１２０は、ＣＰＵ１２１、ＰＣＩバスコントローラ１２２、ＲＡＭ（共有メモリ）１２３及びローカルバス１２４からなる。
【００４８】
共有メモリ１１３ａ及びＲＡＭ１２３は、いずれもＰＣＩバス１０のアドレス空間にメモリアドレスが割り当てられ、ＰＣＩバス１０を介して他の入出力装置と共有されるメモリ領域からなる。一方、非共有メモリ１１３ｂは、ＰＣＩバス１０のアドレス空間にメモリアドレスが割り当てられず、他の入出力装置と共有されないメモリ領域からなる。
【００４９】
ここでは、共有メモリ１１３ａ及び非共有メモリ１１３ｂがＲＡＭ１１３上の異なるメモリ領域からなるものとして説明するが、共有メモリ及び非共有メモリがそれぞれ別個の独立したメモリであっても良い。
【００５０】
デジタル複合機１００には、この様な入出力装置１１０及び１２０がそれぞれ１以上存在するものとし、この様な入出力装置間で行われるデータ転送において、入出力装置１１０へデータを転送する場合に、転送先の入出力装置１１０によるデータの読み出しが行われる。
【００５１】
具体的には、入出力装置１１０から入出力装置１２０のＲＡＭ１２３へデータを転送する場合に、入出力装置１１０によりデータの書込み動作が行われ、入出力装置１２０から入出力装置１１０へデータを転送する場合に、入出力装置１１０によりデータの読出し動作が行われる。そして、入出力装置１２０から入出力装置１１０へデータを転送する場合には、共有メモリ１１３ａへのデータ転送については、入出力装置１２０によりデータ書込みが行われ、非共有メモリ１１３ｂへのデータ転送については、入出力装置１１０によりデータ読出しが行われる。
【００５２】
図３は、図２の入出力装置１１０及び１２０間でＰＣＩバス１０を介して行われるデータ転送におけるアドレス空間の一例を示した図である。このアドレス空間は、ＰＣＩバス１０のバスアドレスからなる仮想空間であり、ＰＣＩバスコントローラがＰＣＩバス１０を介してＲＡＭへデータを転送する際に使用するアドレス線の数に応じてそのサイズが定められる。
【００５３】
アドレス空間には、ＰＣＩバス１０を介して互いにデータ転送可能に接続されている入出力装置ごとに、メモリアドレスの割当て領域が形成される。例えば、入出力装置１１０のＲＡＭ１１３に対するアドレス割当てが配置される割当て領域「Ａの割当て領域」と、入出力装置１２０のＲＡＭ１２３に対するアドレス割当てが配置される割当て領域「Ｂの割当て領域」が形成される。
【００５４】
このとき、ＲＡＭのメモリアドレスのビット数や記憶容量に比べて、アドレス空間が小さくて割当て領域が狭い場合、又は、アドレス空間のサイズがたとえ大きくても、メモリアドレスが割り当てられる割当て領域が狭い場合に、アドレス空間にメモリアドレスが割り当てられないメモリ領域、すなわち、非共有メモリが生じることになる。入出力装置１１０の場合、アドレス空間には、ＲＡＭ１１３内のメモリ領域のうち、共有メモリ１１３ａに対してだけメモリアドレスが対応する割当て領域内に割り当てられている。
【００５５】
一方、割当て領域が大きい場合には、非共有メモリが生じることはなく、ＲＡＭの全メモリアドレスがアドレス空間に割り当てられる。入出力装置１２０の場合、アドレス空間には、ＲＡＭ１２３の全てのメモリアドレスが対応する割当て領域内に割り当てられる。
【００５６】
図４は、図２の入出力装置１１０におけるＣＰＵ１１１の構成例を示したブロック図である。このＣＰＵ１１１は、第１の転送要求生成部１３１、第１のデータ書込み部１３２、転送応答生成部１３３及びデータ読出し部１３４により構成される。第１の転送要求生成部１３１は、他の入出力装置へデータを転送する場合に、転送要求を生成する動作を行っている。この転送要求は、例えば、入出力装置１１０から入出力装置１２０へデータを転送する際に生成され、ＰＣＩバスコントローラ１１２を介して入出力装置１２０へ送出される。
【００５７】
第１のデータ書込み部１３２は、転送要求に対する他の入出力装置からの応答、すなわち、転送応答に基づいて、ＲＡＭ１１３上のデータを転送先のメモリ内に書き込む動作を行っている。具体的には、ＰＣＩバスコントローラ１１２を介して送出された転送要求に対する入出力装置１２０からの転送応答に基づいてＲＡＭ１１３上のデータを読出し、書込みデータとしてＰＣＩバスコントローラ１１２を介して入出力装置１２０へ送出することにより、当該書込みデータがＲＡＭ１２３内に書き込まれる。
【００５８】
転送応答生成部１３３は、他の入出力装置からの転送要求に基づいて、転送応答を生成する動作を行っている。この転送応答は、ＰＣＩバスコントローラ１１２を介して転送元の入出力装置へ送出される。
【００５９】
この転送応答生成部１３３は、読出し要求生成部１３３ａを有し、入出力装置１２０から入出力装置１１０へデータを転送する際に送出される入出力装置１２０からの転送要求であって、共有メモリ１１３ａへの転送が指定された第１転送要求に基づいて転送応答を生成する動作が行われる。また、入出力装置１２０から入出力装置１１０へデータを転送する際に送出される入出力装置１２０からの転送要求であって、非共有メモリ１１３ｂへの転送が指定された第２転送要求に基づいて、読出し要求を当該第２転送要求に対する応答として生成する動作が行われる。
【００６０】
データ読出し部１３４は、読出し要求に対する他の入出力装置からの応答、すなわち、読出し応答に基づいて、ＰＣＩバスコントローラ１１２を介してＲＡＭ１２３上のデータを読み出し、ＲＡＭ１１３内に書き込む動作を行っている。具体的には、ＰＣＩバスコントローラ１１２を介して送出された読出し要求に対する入出力装置１２０からの読出し応答に基づいて、ＰＣＩバスコントローラ１１２を介してＲＡＭ１２３上のデータを読出しデータとして読み出し、ＲＡＭ１１３内に書き込む動作が行われる。
【００６１】
読出し要求に対する入出力装置１２０からの読出し応答に基づいてＲＡＭ１２３から読み出した読出しデータは、非共有メモリ１１３ｂ内に書き込まれる。
【００６２】
図５は、図２の入出力装置１２０におけるＣＰＵ１２１の構成例を示したブロック図である。このＣＰＵ１２１は、転送応答生成部１４１、第２の転送要求生成部１４２、第２のデータ書込み部１４３及び読出し応答生成部１４４により構成される。転送応答生成部１４１は、他の入出力装置からの転送要求に基づいて、転送応答を生成する動作を行っている。この転送応答は、ＰＣＩバスコントローラ１２２を介して転送元の入出力装置へ送出される。
【００６３】
第２の転送要求生成部１４２は、他の入出力装置へデータを転送する場合に、転送要求を生成する動作を行っている。この転送要求は、例えば、入出力装置１２０から入出力装置１１０へデータを転送する際に生成され、ＰＣＩバスコントローラ１２２を介して入出力装置１１０へ送出される。
【００６４】
ここでは、この様な転送要求として、入出力装置１１０の共有メモリ１１３ａへの転送を指定した第１転送要求と、非共有メモリ１１３ｂへの転送を指定した第２転送要求が生成されるものとする。
【００６５】
第２のデータ書込み部１４３は、転送要求に対する他の入出力装置からの転送応答に基づいて、ＲＡＭ１２３上のデータを転送先のメモリ内に書き込む動作を行っている。具体的には、ＰＣＩバスコントローラ１１２を介して送出された第１転送要求に対する入出力装置１１０からの転送応答に基づいて、ＲＡＭ１２３上のデータを読出し、書込みデータとしてＰＣＩバスコントローラ１２２を介して入出力装置１１０へ送出することにより、当該書込みデータが共有メモリ１１３ａ内に書き込まれる。
【００６６】
読出し応答生成部１４４は、他の入出力装置により転送応答として送出された読出し要求に基づいて、読出し応答を生成する動作を行っている。この読出し応答は、ＰＣＩバスコントローラ１２２を介して転送先の入出力装置へ送出される。
【００６７】
図６は、図２の入出力装置１１０及び１２０間でＰＣＩバス１０を介して行われるデータ転送の一例を示したシーケンス図であり、入出力装置１１０から入出力装置１２０へデータを転送する場合が示されている。入出力装置１１０「デバイスＡ」から入出力装置１２０「デバイスＢ」にＰＣＩバス１０を介してデータを転送する場合、まず、入出力装置１１０のＣＰＵ１１１は、転送要求として送信コマンドを発行し、ＰＣＩバスコントローラ１１２を介して入出力装置１２０へ送出する（ステップＳ１０１）。
【００６８】
入出力装置１２０のＣＰＵ１２１は、入出力装置１１０からの送信コマンドを受信すると、転送応答として当該送信コマンドのレスポンスを発行し、ＰＣＩバスコントローラ１２２を介して入出力装置１１０へ送出する（ステップＳ１０２）。
【００６９】
ＣＰＵ１１１は、このレスポンスを受信すると、ＰＣＩバスコントローラ１１２を介して入出力装置１２０のＲＡＭ１２３に対するデータの書込みを行う（ステップＳ１０３）。次に、ＣＰＵ１１１は、データの書込みが終了し、データ転送が完了すると、送信完了コマンドを発行し、ＰＣＩバスコントローラ１１２を介して入出力装置１２０へ送出する（ステップＳ１０４，Ｓ１０５）。
【００７０】
入出力装置１２０のＣＰＵ１２１は、入出力装置１１０からの送信完了コマンドを受信すると、当該送信完了コマンドのレスポンスを発行してこの処理を終了する（ステップＳ１０６）。
【００７１】
このレスポンスは、ＰＣＩバスコントローラ１２２を介して入出力装置１１０へ送出され、ＣＰＵ１１１は、入出力装置１２０からの当該レスポンスを受信すると、その受信結果に基づいてこの処理を終了する。
【００７２】
図７は、図２の入出力装置１１０及び１２０間でＰＣＩバス１０を介して行われるデータ転送の一例を示したシーケンス図であり、入出力装置１２０から入出力装置１１０の共有メモリ１１３ａへデータを転送する場合が示されている。入出力装置１２０「デバイスＢ」から入出力装置１１０「デバイスＡ」の共有メモリ１１３ａにＰＣＩバス１０を介してデータを転送する場合、まず、入出力装置１２０のＣＰＵ１２１は、第１転送要求として送信コマンドを発行し、ＰＣＩバスコントローラ１２２を介して入出力装置１１０へ送出する（ステップＳ２０１）。
【００７３】
入出力装置１１０のＣＰＵ１１１は、入出力装置１２０からの送信コマンドを受信すると、転送応答として当該送信コマンドのレスポンスを発行し、ＰＣＩバスコントローラ１１２を介して入出力装置１２０へ送出する（ステップＳ２０２）。
【００７４】
ＣＰＵ１２１は、このレスポンスを受信すると、ＰＣＩバスコントローラ１２２を介して入出力装置１１０の共有メモリ１１３ａに対するデータの書込みを行う（ステップＳ２０３）。次に、ＣＰＵ１２１は、データの書込みが終了し、データ転送が完了すると、送信完了コマンドを発行し、ＰＣＩバスコントローラ１２２を介して入出力装置１１０へ送出する（ステップＳ２０４，Ｓ２０５）。
【００７５】
入出力装置１１０のＣＰＵ１１１は、入出力装置１２０からの送信完了コマンドを受信すると、当該送信完了コマンドのレスポンスを発行してこの処理を終了する（ステップＳ２０６）。
【００７６】
このレスポンスは、ＰＣＩバスコントローラ１１２を介して入出力装置１２０へ送出され、ＣＰＵ１２１は、入出力装置１１０からの当該レスポンスを受信すると、その受信結果に基づいてこの処理を終了する。
【００７７】
図８は、図２の入出力装置１１０及び１２０間でＰＣＩバス１０を介して行われるデータ転送の一例を示したシーケンス図であり、入出力装置１２０から入出力装置１１０の非共有メモリ１１３ｂへデータを転送する場合が示されている。入出力装置１２０「デバイスＢ」から入出力装置１１０「デバイスＡ」の非共有メモリ１１３ｂにＰＣＩバス１０を介してデータを転送する場合、まず、入出力装置１２０のＣＰＵ１２１は、第２転送要求として送信コマンドを発行し、ＰＣＩバスコントローラ１２２を介して入出力装置１１０へ送出する（ステップＳ３０１）。
【００７８】
入出力装置１１０のＣＰＵ１１１は、入出力装置１２０からの送信コマンドを受信すると、読出し要求として当該送信コマンドのレスポンスを発行し、ＰＣＩバスコントローラ１１２を介して入出力装置１２０へ送出する（ステップＳ３０２）。
【００７９】
ＣＰＵ１２１は、このレスポンスを受信すると、受信したレスポンスに基づいて読出し応答を生成し、ＰＣＩバスコントローラ１２２を介して入出力装置１１０へ送出する。
【００８０】
入出力装置１１０のＣＰＵ１１１は、入出力装置１２０からの読出し応答に基づいて、ＰＣＩバスコントローラ１１２を介して入出力装置１２０のＲＡＭ１２３に対するデータの読出しを行う（ステップＳ３０３）。
【００８１】
次に、ＣＰＵ１１１は、データの読出しが終了し、データ転送が完了すると、転送完了コマンドを発行し、ＰＣＩバスコントローラ１１２を介して入出力装置１２０へ送出する（ステップＳ３０４，Ｓ３０５）。
【００８２】
入出力装置１２０のＣＰＵ１２１は、入出力装置１１０からの転送完了コマンドを受信すると、当該転送完了コマンドのレスポンスを発行してこの処理を終了する（ステップＳ３０６）。
【００８３】
このレスポンスは、ＰＣＩバスコントローラ１２２を介して入出力装置１１０へ送出され、ＣＰＵ１１１は、入出力装置１２０からの当該レスポンスを受信すると、その受信結果に基づいてこの処理を終了する。
【００８４】
本実施の形態によれば、入出力装置１１０から入出力装置１２０の共有メモリへデータを転送する際の転送サイクルを増大させることなく、非共有メモリ１１３ｂへデータを転送する際のデータの転送効率を向上させることができる。特に、非共有メモリ１１３ｂを有する入出力装置１１０へデータを転送する場合に、共有メモリ１１３ａへデータを転送する際の転送サイクルを増大させることなく、非共有メモリ１１３ｂへデータを転送する際の転送効率を向上させることができる。
【００８５】
なお、本実施の形態では、ＣＰＵがＰＣＩバスコントローラ及びＲＡＭ間におけるデータの送受信を行う場合の例について説明したが、本発明はこれに限られるものではない。例えば、入出力装置内にＤＭＡ（Direct Memory Access）コントローラを設け、このＤＭＡコントローラがＣＰＵからの指示に基づいて動作することにより、ＣＰＵを介さずにＰＣＩバスコントローラ及びＲＡＭ間でデータが送受信されるようにしても良い。この様に、ＤＭＡコントローラにデータの送受信を行わせることにより、ＣＰＵの負荷を低減することができる。
【００８６】
ＤＭＡコントローラを用いてＰＣＩバスコントローラ及びＲＡＭ間のデータの送受信を行わせる際、ＤＭＡコントローラがアクセスできないメモリ領域が存在する場合には、ＳＲＡＭ（Static Random Access Memory）などの不揮発性メモリからなるワークバッファに一旦、データを受信して転送することが考えられる。
【００８７】
また、本実施の形態では、入出力装置１２０から入出力装置１１０の共有メモリ１１３ａへデータを転送する際に、入出力装置１２０がデータの書込み動作を行い、非共有メモリ１１３ｂへデータを転送する際に、入出力装置１１０がデータの読出し動作を行う場合の例について説明したが、本発明はこれに限られるものではない。例えば、入出力装置１２０から入出力装置１１０へデータを転送する場合に、非共有メモリ１１３ｂへのデータ転送であるか否かに関わらず、つねに、転送先の入出力装置１１０がデータの読出し動作を行うようなものであっても良い。
【００８８】
非共有メモリを有する入出力装置へデータを転送する場合には、つねに、転送先の入出力装置がデータの読出し動作を行うように構成することにより、読出し要求や読出し応答の送受信を省くことができるので、データの転送効率をさらに向上させることができる。
【００８９】
また、本実施の形態では、非共有メモリを有する入出力装置１１０と、非共有メモリを有していない入出力装置１２０との間でデータが転送される場合の例について説明したが、本発明はこれに限られるものではない。例えば、共に非共有メモリを有する入出力装置間でデータを転送する場合にも本発明は適用することができる。すなわち、非共有メモリを有する入出力装置間におけるデータ転送は、入出力装置１２０から入出力装置１１０へデータを転送する場合と同様にして行われる。
【図面の簡単な説明】
【００９０】
【図１】本発明の実施の形態によるデータ転送システムの一構成例を示したシステム図であり、データ転送システムの一例としてデジタル複合機１００が示されている。
【図２】図１のデジタル複合機１００の要部における構成例を示したブロック図であり、ＰＣＩバス１０により接続された入出力装置１１０及び１２０が示されている。
【図３】図２の入出力装置１１０及び１２０間でＰＣＩバス１０を介して行われるデータ転送におけるアドレス空間の一例を示した図である。
【図４】図２の入出力装置１１０におけるＣＰＵ１１１の構成例を示したブロック図である。
【図５】図２の入出力装置１２０におけるＣＰＵ１２１の構成例を示したブロック図である。
【図６】図２の入出力装置間でＰＣＩバス１０を介して行われるデータ転送の一例を示したシーケンス図であり、入出力装置１２０へデータを転送する場合が示されている。
【図７】図２の入出力装置間で行われるデータ転送の一例を示したシーケンス図であり、入出力装置１１０の共有メモリ１１３ａへデータを転送する場合が示されている。
【図８】図２の入出力装置間で行われるデータ転送の一例を示したシーケンス図であり、入出力装置１１０の非共有メモリ１１３ｂへデータを転送する場合が示されている。
【符号の説明】
【００９１】
１０  ＰＣＩバス
１１  ＰＣＩブリッジ
２０  ＭＦＰコントローラ
２１，３１，４１，５１  ＣＰＵ
２２  ＰＣＩホストコントローラ
２３  割込みコントロールレジスタ
２４，３３，４３，５３  ＲＡＭ
２５，３４，４４，５４  ローカルバス
２６  スキャナ
３０  カラー画像処理ボード
３２，４２，５２  ＰＣＩバスコントローラ
４０  ネットワークボード
５０  プリンタコントローラ
５５  プリンタ
１００  デジタル複合機
１１０，１２０  入出力装置
１１１，１２１  ＣＰＵ
１１２，１２２  ＰＣＩバスコントローラ
１１３，１２３  ＲＡＭ
１１３ａ  共有メモリ
１１３ｂ  非共有メモリ
１１４，１２４  ローカルバス
１３１  第１の転送要求生成部
１３２  第１のデータ書込み部
１３３  転送応答生成部
１３３ａ  読出し要求生成部
１３４  データ読出し部
１４１  転送応答生成部
１４２  第２の転送要求生成部
１４３  第２のデータ書込み部
１４４  読出し応答生成部
【図１】
2009064340.tif 000003
【図２】
2009064340.tif 000004
【図３】
2009064340.tif 000005
【図４】
2009064340.tif 000006
【図５】
2009064340.tif 000007
【図６】
2009064340.tif 000008
【図７】
2009064340.tif 000009
【図８】
2009064340.tif 000010