(57)【要約】【課題】転送先又は転送元が備えているＤＭＡコントローラが利用できないマルチチップ構成のシステムで、転送先又は転送元ではない制御チップのＤＭＡコントローラについても、転送条件に基づいて適切に制御する仕組みを提供する。【解決手段】複数の制御チップを有するマルチチップシステムにおいて、データ転送の転送条件に基づき、データの転送元の制御チップとデータの転送先の制御チップとを特定するとともに、特定した当該制御チップ間でのテータ転送を制御する、複数の制御チップのいずれかに設けられた利用可能なＤＭＡコントローラを決定する。【選択図】  図７
2016224560.tif 000002
【特許請求の範囲】
【請求項１】
それぞれがメモリを備える複数の制御チップを有するマルチチップシステムであって、
データ転送の要求を取得する取得手段と、
前記取得手段によって取得したデータ転送の要求に係る転送条件を解析する解析手段と、
前記解析手段によって解析された前記転送条件に基づき、データの転送元の制御チップとデータの転送先の制御チップとを特定するとともに、特定した当該制御チップ間でのテータ転送を制御する、前記複数の制御チップのいずれかに設けられた利用可能なＤＭＡコントローラを決定する決定手段と
を備えることを特徴とするマルチチップシステム。
【請求項２】
前記決定手段は、
データの転送元の制御チップに備えられた前記ＤＭＡコントローラを前記利用可能なＤＭＡコントローラとして決定することを特徴とする請求項１に記載のマルチチップシステム。
【請求項３】
前記決定手段は、
データの転送元の制御チップに前記ＤＭＡコントローラが備えられていない場合には、該データの転送元の制御チップに対して最も近くに設けられた制御チップのＤＭＡコントローラを前記利用可能なＤＭＡコントローラとして決定することを特徴とする請求項１又は２に記載のマルチチップシステム。
【請求項４】
前記決定手段は、
データの転送元の制御チップに前記ＤＭＡコントローラが備えられていない場合であって、かつ、該データの転送元の制御チップに対して最も近くに設けられた制御チップのＤＭＡコントローラが利用可能でない場合には、他の制御チップに設けられたＤＭＡコントローラを前記利用可能なＤＭＡコントローラとして決定することを特徴とする請求項３に記載のマルチチップシステム。
【請求項５】
前記決定手段によって決定された利用可能なＤＭＡコントローラが前記データの転送元の制御チップ以外の制御チップに設けられている場合において、該データの転送元の制御チップは、制御チップ間のメッセージ通信を用いて、該利用可能なＤＭＡコントローラが設けられた制御チップへ該ＤＭＡコントローラの起動を要求することを特徴とする請求項１乃至４の何れか１項に記載のマルチチップシステム。
【請求項６】
前記決定手段は、
データの転送方向に基づいて、前記利用可能なＤＭＡコントローラを決定することを特徴とする請求項１に記載のマルチチップシステム。
【請求項７】
前記決定手段は、
データの転送元と転送先との制御チップのメモリ空間が、いずれの制御チップとの共有空間であるかに基づいて、前記利用可能なＤＭＡコントローラを決定することを特徴とする請求項１に記載のマルチチップシステム。
【請求項８】
前記データの転送元の制御チップと、前記データの転送先の制御チップとに関連して利用可能なＤＭＡコントローラを定義したテーブルを記憶する記憶手段をさらに備え、
前記決定手段は、前記記憶手段に記憶された前記テーブルを用いて前記利用可能なＤＭＡコントローラを決定することを特徴とする請求項１乃至７の何れか１項に記載のマルチチップシステム。
【請求項９】
前記テーブルには、
前記データの転送元の制御チップに設けられたＤＭＡコントローラが利用可能である場合と利用可能でない場合とのそれぞれについて、利用可能なＤＭＡコントローラが定義されていることを特徴とする請求項８に記載のマルチチップシステム。
【請求項１０】
前記テーブルには、
前記データの転送元の制御チップに設けられたＤＭＡコントローラが利用可能でない場合において、他の制御チップに設けられたＤＭＡコントローラを用いる際に、利用可能な複数のＤＭＡコントローラが優先順位を付して定義されていることを特徴とする請求項８又は９に記載のマルチチップシステム。
【請求項１１】
それぞれがメモリを備える複数の制御チップを有するマルチチップシステムの制御方法であって、
データ転送の要求を取得する取得工程と、
前記取得工程で取得したデータ転送の要求に係る転送条件を解析する解析工程と、
前記解析工程で解析された前記転送条件に基づき、データの転送元の制御チップとデータの転送先の制御チップとを特定するとともに、特定した当該制御チップ間でのテータ転送を制御する、前記複数の制御チップのいずれかに設けられた利用可能なＤＭＡコントローラを決定する決定工程と
を備えることを特徴とするマルチチップシステムの制御方法。
【請求項１２】
請求項１乃至１０の何れか１項に記載のマルチチップシステムを有する画像形成装置。
【請求項１３】
転送される前記データは、前記画像形成装置で画像形成対象の画像データに対して実行される各制御チップの画像処理に応じて転送される画像データであることを特徴とする請求項１２に記載の画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチチップシステム、及びその制御方法に関するものである。
【背景技術】
【０００２】
複合機やプリンタ等の画像形成装置では、近年、装置の高機能化や対応する色数の増加に伴い、各種処理を実行する複数の集積回路チップが必要となってきている。例えば、ホストコンピュータから送られてくる画像データの画像処理を実行する画像処理ブロックや、印字データを生成する生成ブロックなどの機能単位に処理を分割し、それぞれの処理を異なる集積回路チップで並列処理する方法が考えられている。
【０００３】
このような画像形成装置は、異なる集積回路チップ間でデータのコピーを高速に行うために、ＤＭＡ（ダイレクトメモリアクセス）コントローラが用いられている。特許文献１には、第１の揮発性メモリ及び第１のＤＭＡコントローラを有する第１制御回路と、第２の揮発性メモリ及び第２のＤＭＡコントローラを有する第２制御回路の間でのデータ転送について記載されている。具体的には、データ転送の転送先、転送元に応じて、データ転送がより速くなるＤＭＡコントローラを選択し、データ転送の効率を向上させている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−７９７３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来技術には以下に記載する課題がある。上記従来技術においては、転送先又は転送元のチップのＤＭＡコントローラを、転送効率が最適になるように選択する処理であり、転送先と転送元のそれぞれのＤＭＡコントローラが利用できることが前提となる。そのため、転送先又は転送元にＤＭＡコントローラを備えていない、或いは備えているＤＭＡコントローラが使えない状況にあるマルチチップシステムでは、選択されたＤＭＡコントローラが必ずしも利用できるわけではない。その結果、転送効率が最適なデータ転送を安定して実現できないという課題が生じるおそれがあった。
【０００６】
本発明は、上述の問題に鑑みて成されたものである。すなわち、マルチチップ構成のシステムにおける適切なデータ転送を実現する仕組みを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、それぞれがメモリを備える複数の制御チップを有するマルチチップシステムであって、データ転送の要求を取得する取得手段と、前記取得手段によって取得したデータ転送の要求に係る転送条件を解析する解析手段と、前記解析手段によって解析された前記転送条件に基づき、データの転送元の制御チップとデータの転送先の制御チップとを特定するとともに、特定した当該制御チップ間でのテータ転送を制御する、前記複数の制御チップのいずれかに設けられた利用可能なＤＭＡコントローラを決定する決定手段とを備えることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、転送先又は転送元が備えているＤＭＡコントローラが利用できないマルチチップ構成のシステムで、転送先又は転送元ではない制御チップのＤＭＡコントローラについても、転送条件に基づいて適切に制御することができる。
【図面の簡単な説明】
【０００９】
【図１】一実施形態に係る画像形成装置の構成例を示すブロック図。
【図２】一実施形態に係る第１制御チップの構成例を示すブロック図。
【図３】一実施形態に係る第２制御チップの構成例を示すブロック図。
【図４】一実施形態に係る第３制御チップの構成例を示すブロック図。
【図５】一実施形態に係るデータ転送を模式的に示す図。
【図６】一実施形態に係るデータ転送を模式的に示す図。
【図７】一実施形態に係る第１制御チップのＣＰＵ１１１がデータ転送処理を制御する制御手順を示すフローチャート。
【図８】一実施形態に係る転送条件によって起動するＤＭＡコントローラを示すテーブル。
【図９】一実施形態に係る画像形成装置の構成例を示すブロック図。
【図１０】一実施形態に係る第２制御チップの構成例を示すブロック図。
【図１１】一実施形態に係る第１制御チップのＣＰＵ１１１がデータ転送処理を制御する制御手順を示すフローチャート。
【図１２】一実施形態に係る転送条件によって起動するＤＭＡコントローラを示すテーブル。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１１】
＜第１の実施形態＞
＜マルチチップシステムの構成＞
以下では、本発明の第１の実施形態について説明する。本実施形態では、画像形成装置内の各制御チップ間でデータ転送を行う形態について説明する。まず、図１を参照して、本実施形態におけるマルチチップシステムを有する画像形成装置の構成例について説明する。
【００１２】
１０１は画像形成装置である。１０２及び１０３はユーザが操作するホストコンピュータである。１０５は画像形成装置１０１とホストコンピュータ１０２、１０３をつなぐホストインターフェースである。画像形成装置１０１は、ホストコンピュータ１０２、１０３から印刷データを受信し、印刷物を生成する装置である。
【００１３】
画像形成装置１０１の構成を説明する。１１０は第１制御チップである。１２０は第２制御チップである。１３０は第３制御チップである。１５０は第１制御チップ１１０と第３制御チップ１３０をつなぐチップ間通信インターフェースである。１５１は第２制御チップ１２０と第３制御チップ１３０をつなぐチップ間通信インターフェースである。
【００１４】
１６０は第１制御チップ用のＲＡＭ（揮発性メモリ）である。１６１は第１制御チップの制御プログラムが格納されているＲＯＭ（不揮発性メモリ）である。１７０は第２制御チップ用のＲＡＭ（揮発性メモリ）である。１７１は第２制御チップの制御プログラムが格納されているＲＯＭ（不揮発性メモリ）である。１８０は第３制御チップ用のＲＡＭ（揮発性メモリ）である。１８１は第３制御チップの制御プログラムが格納されているＲＯＭ（不揮発性メモリ）である。
【００１５】
２００は印字部であり、ホストコンピュータ１０２から送られる印刷データを元に印刷を実行する。具体的には、第１制御チップ１１０と第２制御チップ１２０と第３制御チップ１３０で処理された印刷データを紙等の印刷メディア（記録媒体）に画像データの配列に従ってインクやトナー等を付着させることにより印刷物を生成する。
【００１６】
＜第１制御チップの構成＞
次に、図２を参照して、本実施形態における第１制御チップ１１０の構成について説明する。１１１はプログラムを処理するＣＰＵである。１１２及び１１３はチップ間通信インターフェースとなるＰＣＩｅコントローラである。１１５はデータのコピーを行うＤＭＡ（ダイレクトメモリアクセス）コントローラである。１１６はＲＡＭ１（１６０）を制御するメモリーコントローラである。１１７はＲＯＭ１（１６１）を制御するＲＯＭコントローラである。１１８は印字部２００を制御する印字コントローラである。１１９はホストＰＣコントローラである。１１４は内部バスである。ＣＰＵ１１１、ＰＣＩｅコントローラ１１２、１１３、ＤＭＡコントローラ１１５、及びホストＰＣコントローラ１１９はそれぞれバスマスタである。一方、ＰＣＩｅコントローラ１１２、１１３、メモリコントローラ１１６、ＲＯＭコントローラ１１７、印字コントローラ１１８、及びホストＰＣコントローラ１１９はそれぞれバススレーブである。これらのバスマスタとバススレーブとの間でデータ転送が可能である。また、ＣＰＵ１１１とＤＭＡコントローラ１１５は、ＰＣＩｅコントローラ１１２、１１３を通して、ＲＡＭ２（１７０）とＲＡＭ３（１８０）にアクセスすることができる。なお、チップ間通信インターフェースとしては、ＰＣＩｅコントローラ以外であってもよい。
【００１７】
＜第２制御チップの構成＞
次に、図３を参照して、本実施形態における第２制御チップ１２０の構成について説明する。１２１はプログラムを処理するＣＰＵである。１２２はチップ間通信インターフェースとなるＰＣＩｅコントローラである。１２６はＲＡＭ２（１７０）を制御するメモリーコントローラである。１２７はＲＯＭ２（１７１）を制御するＲＯＭコントローラである。１２４は内部バスである。ＣＰＵ１２１、及びＰＣＩｅコントローラ１２２はそれぞれバスマスタである。ＰＣＩｅコントローラ１２２、メモリコントローラ１２６、及びＲＯＭコントローラ１２７はそれぞれバススレーブである。これらのバスマスタとバススレーブとの間でデータ転送が可能である。また、ＣＰＵ１２１は、ＰＣＩｅコントローラ１２２を通して、ＲＡＭ１（１６０）とＲＡＭ３（１８０）にアクセスすることができる。なお、チップ間通信インターフェースとしては、ＰＣＩｅコントローラ以外であってもよい。
【００１８】
＜第３制御チップの構成＞
次に、図４を参照して、本実施形態における第３制御チップ１３０の構成について説明する。１３１はプログラムを処理するＣＰＵである。１３２及び１３３はチップ間通信インターフェースとなるＰＣＩｅコントローラである。１３５はデータのコピーを行うＤＭＡコントローラである。１３６はＲＡＭ３（１８０）を制御するメモリーコントローラである。１３７はＲＯＭ３（１８１）を制御するＲＯＭコントローラである。１３８は印字部２００を制御する印字コントローラである。１３９はホストＰＣコントローラである。１３４は内部バスである。ＣＰＵ１３１、ＰＣＩｅコントローラ１３２、１３３、ＤＭＡコントローラ１３５、及びホストＰＣコントローラ１３９はそれぞれバスマスタである。ＰＣＩｅコントローラ１３２、１３３、メモリコントローラ１３６、ＲＯＭコントローラ１３７、印字コントローラ１３８、及びホストＰＣコントローラ１３９はそれぞれバススレーブである。これらのバスマスタとバススレーブ間でデータ転送が可能である。また、ＣＰＵ１２１とＤＭＡコントローラ１３５は、ＰＣＩｅコントローラ１３２、１３３を通して、ＲＡＭ１（１６０）とＲＡＭ２（１７０）にアクセスすることができる。なお、第３制御チップ１３０の構成は、第１制御チップ１１０の構成と同一であってもよい。また、チップ間通信インターフェースとしては、ＰＣＩｅコントローラ以外であってもよい。
【００１９】
＜データ転送＞
次に、図５を参照して、第１制御チップ１１０のＤＭＡコントローラ１１５を用いた、第２制御チップ１２０から第１制御チップ１１０へのデータ転送について説明する。図５は、メモリ領域２−１（５２１）からメモリ領域１−１（５１１）へデータをコピーする際のデータ転送の仕組みを示す。ただし、メモリ領域１−１（５１１）、メモリ領域１−２（５１２）、及びメモリ領域１−３（５１３）は図１のＲＡＭ１（１６０）の領域である。メモリ領域２−１（５２１）、メモリ領域２−２（５２２）、及びメモリ領域２−３（５２３）は図１のＲＡＭ２（１７０）の領域である。メモリ領域３−１（５３１）、メモリ領域３−２（５３２）、及びメモリ領域３−３（５３３）は図１のＲＡＭ３（１８０）の領域である。また、メモリ領域１−１（５１１）、メモリ領域２−１（５２１）、及びメモリ領域３−１（５３１）はデータ領域として確保されている。メモリ領域１−２（５１２）、メモリ領域２−２（５２２）、及びメモリ領域３−２（５３２）はプログラム領域として確保されている。メモリ領域１−３（５１３）、メモリ領域２−３（５２３）、及びメモリ領域３−３（５３３）はＣＰＵ間通信領域として確保されている。
【００２０】
ＣＰＵ１（１１１）はＤＭＡコントローラ１（１１５）に対して、指定領域のデータコピー要求（ＤＭＡリクエスト）を行う。ＤＭＡコントローラ１（１１５）はＣＰＵ１（１１１）のＤＭＡリクエストに従いＲｅａｄ  Ｒｅｑｕｅｓｔを発行する。当該リクエストに従って、各制御チップのＰＣＩｅコントローラ１１３、１３２、１３３、１２２を経由して、制御チップ１２０のメモリコントローラからメモリ領域２−１（５２１）に対してメモリリードが実行される。その後、リードデータが、Ｒｅａｄ  Ａｃｋと共に、Ｒｅａｄ  Ｒｅｑｕｅｓｔの発行元に送られる。この時、リードデータとＲｅａｄ  Ａｃｋが各制御チップのＰＣＩｅコントローラ１２２、１３３、１３２、１１３を経由してＲｅａｄ  Ｒｅｑｕｅｓｔの発行元に送られる。リードデータを受け取ると、ＤＭＡコントローラ１（１１５）はメモリ領域１−１（５１１）にデータをライトする。この時、第１制御チップ１１０のメモリコントローラからメモリ領域１−１（５１１）に対してメモリライトが実行される。通常のメモリコピーは、例えば数ＭＢｙｔｅといったデータ単位で実行されるため、１回のＲｅａｄ  Ｒｅｑｕｅｓｔで転送しきれない。そのため、ＤＭＡコントローラ１（１１５）は、上記のＲｅａｄ  Ｒｅｑｕｅｓｔの発行と、メモリ領域１（５１１）へのデータライトを複数回実行することで、ＣＰＵ１（１１１）から指定された領域のデータコピーを行う。即ち、このような転送の場合、Ｒｅａｄ  Ｒｅｑｕｅｓｔの回数分のデータ転送５０１〜５０７を必要とする。
【００２１】
次に図６を参照して、第３制御チップ１３０のＤＭＡコントローラ１３５を用いた、第２制御チップ１２０から第１制御チップ１１０へのデータ転送について説明する。図６は、図５とは異なり、メモリ領域２−１（５２１）からメモリ領域１−１（５１１）へデータをコピーする際のデータ転送の仕組みを示す。ただし、図５と同様で、メモリ領域１−１（５１１）、メモリ領域１−２（５１２）、及びメモリ領域１−３（５１３）は図１のＲＡＭ１（１６０）の領域である。メモリ領域２−１（５２１）、メモリ領域２−２（５２２）、及びメモリ領域２−３（５２３）は図１のＲＡＭ２（１７０）の領域である。メモリ領域３−１（５３１）、メモリ領域３−２（５３２）、及びメモリ領域３−３（５３３）は図１のＲＡＭ３（１８０）の領域である。また、メモリ領域１−１（５１１）、メモリ領域２−１（５２１）、及びメモリ領域３−１（５３１）はデータ領域として確保されている。メモリ領域１−２（５１２）、メモリ領域２−２（５２２）、及びメモリ領域３−２（５３２）はプログラム領域として確保されている。メモリ領域１−３（５１３）、メモリ領域２−３（５２３）、及びメモリ領域３−３（５３３）はＣＰＵ間通信領域として確保されている。
【００２２】
ＣＰＵ１（１１１）はＰＣＩｅコントローラ１１３、１３２を経由して、ＤＭＡコントローラ３（１３５）に対して、指定領域のデータコピー要求（ＤＭＡリクエスト）を行う。ＤＭＡコントローラ３（１３５）がＣＰＵ１（１１１）のＤＭＡリクエストに従いＲｅａｄ  Ｒｅｑｕｅｓｔを発行する。当該リクエストに従って、各制御チップのＰＣＩｅコントローラ１３３、１２２を経由して、制御チップ１２０のメモリコントローラからメモリ領域２−１（５２１）に対してメモリリードが実行される。リードデータは、Ｒｅａｄ  Ａｃｋと共に、Ｒｅａｄ  Ｒｅｑｕｅｓｔの発行元に送られる。この時、リードデータとＲｅａｄ  Ａｃｋが各制御チップのＰＣＩｅコントローラ１２２、１３３を経由してＲｅａｄ  Ｒｅｑｕｅｓｔの発行元に送られる。リードデータを受け取ると、ＤＭＡコントローラ３（１３５）はＰＣＩｅコントローラ１３２、１１３を経由して、メモリ領域１−１（５１１）にデータをライトする。この時、第１制御チップ１１０のメモリコントローラ６０７からメモリ領域１（５１１）に対してメモリライトが実行される。この場合も、１回のＲｅａｄ  Ｒｅｑｕｅｓｔで転送しきれない。そのため、ＤＭＡコントローラ３（１３５）は、上記のＲｅａｄ  Ｒｅｑｕｅｓｔの発行と、メモリ領域１へのデータライトを複数回実行することで、ＣＰＵ１（１１１）から指定された領域のデータコピーを行う。
【００２３】
ＣＰＵ１（１１１）のＤＭＡリクエストは、上記のように、ＣＰＵ１（１１１）が直接ＤＭＡコントローラ３（１３５）に対して行う方法とは別に、ＣＰＵ間通信を使って間接的にＤＭＡリクエストを発行することもできる。以下にその方法について説明する。
【００２４】
ＣＰＵ１（１１１）が、ＰＣＩｅコントローラ１１３、１３２を経由して、ＣＰＵ３（１３１）のＣＰＵ間通信領域であるメモリ領域３−３（５３３）に、ＤＭＡコントローラ３へのＤＭＡリクエストのメッセージコマンドを書き込む。ＣＰＵ３（１３１）は、メモリ領域３−３（５３３）に書き込まれたメッセージコマンドを受け取り、メッセージコマンドに従って、ＤＭＡコントローラ３（１３５）に指定領域のデータコピー要求（ＤＭＡリクエスト）を行う。ここで、ＤＭＡリクエストのメッセージコマンドは、使用するＤＭＡコントローラの指定と、ＤＭＡを実行するデータ転送元アドレス及びデータ転送先アドレスと、ＤＭＡのデータ長と、ステータスビットとで構成される。
【００２５】
ＤＭＡが完了すると、ＣＰＵ３（１３１）がＰＣＩｅコントローラ１３２、１１３を経由して、ＣＰＵ１（１１１）のＣＰＵ間通信領域であるメモリ領域１−３（５１３）に、処理完了通知のメッセージコマンドを書き込む。この転送の場合、１回分のデータ転送指示６０１並びに、Ｒｅａｄ  Ｒｅｑｕｅｓｔの回数分のデータ転送６０２〜６０７を必要とする。したがって、図５及び図６の転送を比較すると、第１制御チップ１１０と第３制御チップ１３０のチップ間通信において、データ転送５０１がＲｅａｄ  Ｒｅｑｕｅｓｔの回数分実行される。これに対して、データ転送指示６０１は１回だけなので、低レイテンシの転送が可能となる。即ち、より高速にデータ転送を実現することができる。
【００２６】
＜処理フロー＞
次に、図７を参照して、第１制御チップ１１０におけるデータ転送処理を制御する制御手順について説明する。以下で説明する処理は、第１制御チップ１１０のＣＰＵ１１１がＲＯＭ１（１６１）等に格納された制御プログラムをＲＡＭ１（１６０）に読み出して実行することにより実現される。
【００２７】
Ｓ７０１で、第１制御チップ１１０のＣＰＵ１１１は、実行中のアプリケーションからメモリデータコピーの要求を取得する。メモリデータコピーの要求を取得すると、Ｓ７０２で、ＣＰＵ１１１は、データ転送元が第１制御チップ１１０に接続されているメモリのＲＡＭ１（１６０）であるか否かを判定する。該当する場合はＳ７０３に進み、該当しない場合はＳ７０５に進む。
【００２８】
Ｓ７０５で、ＣＰＵ１１１は、データの転送元が第２制御チップ１２０に接続されているメモリのＲＡＭ２（１７０）であるか否かを判定する。該当する場合はＳ７０６に進み、該当しない場合はＳ７０７に進む。
【００２９】
Ｓ７０６で、ＣＰＵ１１１は、データ転送元の第２制御チップ１２０にはＤＭＡコントローラが存在しないため、他のチップのＤＭＡコントローラを検索する。具体的には、ＣＰＵ１１１は、第２制御チップ１２０にチップ間通信インターフェース１５１を介して接続されている第３制御チップ１３０のＤＭＡコントローラ（１３５）が利用可能か否かを判定する。該当する場合はＳ７０７に進み、該当しない場合はＳ７０３に進む。なお、ＤＭＡコントローラが利用可能か否かの判定方法の一例として２つ説明する。１つ目は、ＣＰＵ１１１がＤＭＡＣ１３５のステータスレジスタにアクセスし、ステータスが「ＤＭＡ実行中」の場合には利用不可、そうでない場合は利用可として判断します。２つ目は、ソフトウェアセマフォを使って、ＤＭＡＣ１３５に他のＣＰＵが使用中かどうかの確認をします。ソフトウェアセマフォとは、例えば、ＲＡＭ３のある特定領域をステータス領域として確保し、ＤＭＡＣ１３５を使用中のＣＰＵがステータスを１に設定することで、他のＣＰＵに対して、ＤＭＡＣ１３５を使用中であることを知らせます。そして、ＤＭＡ転送が終了するとＣＰＵがステータスを０に設定し、他のＣＰＵが利用可能であることを知らせます。なお、どちらの方法が用いられても良いが、本実施例では２つ目のソフトウェアセマフォを用いて実現するものとする。
【００３０】
Ｓ７０２及びＳ７０５において、ＣＰＵ１１１は、取得したデータ転送の転送条件を解析する解析手段として機能する。ここで、転送条件とは、データの転送元が何れの制御チップに接続されたメモリであるかを示す。また、ＣＰＵ１１１は、後述するＳ７０３及びＳ７０７において、上記の解析結果に基づき、ＤＭＡコントローラ１１５及びＤＭＡコントローラ１３５の何れでデータ転送を実行するかを選択する選択手段としても機能する。
【００３１】
Ｓ７０３で、ＣＰＵ１１１は、ＤＭＡコントローラ１１５を起動する。続いて、Ｓ７０４で、ＣＰＵ１１１は、ＤＭＡコントローラ１１５を用いて、データ転送元からＲＡＭ１（１６０）へデータの転送を実行する。なお、Ｓ７０６においてＮｏと判定されたことでＳ７０３が実行される場合、ＣＰＵ１１１は、ＤＭＡＣ１１５を起動してデータ転送元となるＲＡＭ２（１７０）からＲＡＭ１（１６０）へのデータの転送を実行する。
【００３２】
Ｓ７０７で、ＣＰＵ１１１は、ＤＭＡコントローラ１３５の使用リクエストを出す。続いて、Ｓ７０８で、ＣＰＵ１１１は、ＤＭＡコントローラ１３５を起動する。さらに、Ｓ７０９で、ＣＰＵ１１１は、ＤＭＡコントローラ１３５を用いて、データ転送元からＲＡＭ１（１６０）へデータの転送を実行する。ただし、ＣＰＵ１１１が直接ＤＭＡコントローラ１３５を制御できない場合は、Ｓ７０７において、ＣＰＵ１１１は、第３制御チップ１３０のＣＰＵ１３１に対して、ＣＰＵ間メッセージ通信（制御チップ間のメッセージ通信）を行う。これにより、ＣＰＵ１３１に対して、メモリコピーを要求する。続いて、Ｓ７０８で、ＣＰＵ１３１は、ＤＭＡコントローラ１３５を起動する。さらに、Ｓ７０９で、ＤＭＡコントローラ１３５はデータ転送元からＲＡＭ１（１６０）へデータの転送を実行する。
【００３３】
このように、本実施形態によれば、データ転送元が第２制御チップ１２０のようにＤＭＡコントローラを搭載していない場合には、第３制御チップ１３０のように、データ転送を中継する制御チップのＤＭＡコントローラを使用した転送を実行することができる。
【００３４】
＜テーブル＞
次に、図８を参照して、データ転送に利用することができるＤＭＡコントローラの組み合わせのテーブルについて説明する。当該テーブル８００は、ＣＰＵ１１１が実行中のアプリケーションから要求を受けたメモリデータの転送元と転送先によって、起動するＤＭＡコントローラの組み合わせを表す。つまり、テーブル８００には、データの転送元の制御チップと、データの転送先の制御チップとに関連して利用可能なＤＭＡコントローラが定義されている。
【００３５】
データのアクセスについては、レスポンスを待たなくてよいため、リードアクセスよりもライトアクセスの方が低レイテンシで完了する。そのため、データ転送元がＲＡＭ１、ＲＡＭ３の場合は、データ転送元の制御チップに対して最も近くに設けられた制御チップのＤＭＡコントローラを起動する。つまり、原則として、テーブル８００には、データの転送方向に基づいて起動すべきＤＭＡコントローラが定義されている。
【００３６】
データ転送元がＲＡＭ２の場合は、データ転送元のＤＭＡコントローラが利用できないため、データ転送元以外の制御チップのＤＭＡコントローラを起動する。なお、データ転送元がＲＡＭ２でデータ転送先がＲＡＭ１の場合は、ＤＭＡコントローラ１とＤＭＡコントローラ３の両方利用可能である。ただし、ＤＭＡコントローラ３を起動させることによって、ＤＭＡコントローラ１を起動するよりも、低レイテンシの転送が可能となる。従って、データ転送元がＲＡＭ２でデータ転送先がＲＡＭ１の場合は、利用可能な複数のコントローラがテーブル８００に定義されるとともに、それらの優先順位が定義されてもよい。当該優先順位は、より高速にデータ転送を行うことが可能なＤＭＡコントローラを優先するように定義されることが望ましい。
【００３７】
なお、テーブル８００をＣＰＵ１１１が参照できるテーブルとして、ＲＡＭ１（１６０）、又はＲＯＭ１（１６１）に格納することが望ましい。この場合、ＣＰＵ１１１はデータ転送元と転送先の条件に従い、ＤＭＡコントローラ１（１１５）を起動するか、ＤＭＡコントローラ３（１３５）を起動するかを選択する構成であってもよい。また、テーブル８００は、ユーザ入力等に従って内容を更新できるように構成されてもよい。
【００３８】
以上説明したように、本実施形態に係るマルチチップシステムは、データ転送の転送条件に基づき、データの転送元の制御チップとデータの転送先の制御チップとを特定する。また、マルチチップシステムは、複数の制御チップのいずれかに設けられた利用可能なＤＭＡコントローラを、特定した当該制御チップ間でのテータ転送を制御するために決定する。これにより、転送元又は転送先にＤＭＡコントローラがないマルチチップ構成のシステムであっても好適に他のチップに設けられたＤＭＡコントローラを利用することができる。本実施形態では、ＣＰＵ１１１が、転送元が何れの制御チップに接続されたＲＡＭであるかと、転送元又は転送元のＤＭＡコントローラの有無の判定を行う。その際、転送元がＤＭＡコントローラを備えていない制御チップのＲＡＭであると判定された場合、ＣＰＵ１１１が転送元と転送先の制御チップの間を中継する制御チップのＤＭＡコントローラを使ってデータ転送を実行する。この処理により、データ転送の効率を向上させることができる。つまり、本実施形態によれば、複数の制御チップの間でデータ転送を行う際に、データ転送の転送条件に基づいて、データの転送先の制御チップではなく、且つ、転送元の制御チップではない別の制御チップを利用して、適切にデータ転送を制御することができる。
【００３９】
＜第２の実施形態＞
以下では、本発明の第２の実施形態について説明する。本実施形態では、画像形成装置１０１内の各制御チップ間でデータ転送を行う別の形態について説明する。上記第１の実施形態では、第２制御チップ１２０がＤＭＡコントローラを備えていない構成であったが、第２制御チップ９２０がＤＭＡコントローラを備えている構成について説明する。
【００４０】
＜構成＞
まず、図９を参照して、本実施形態におけるマルチチップシステムを有する画像形成装置９０１の構成について説明する。第２制御チップ９２０が上記第１の実施形態における第２制御チップ９２０と異なり、ＤＭＡコントローラを備えている点以外は、上記第１の実施形態で説明した図１と同じである。従って、他の重複する説明は省略する。
【００４１】
続いて、図１０を参照して、本実施形態における第２制御チップ９２０の構成について説明する。９２１はプログラムを処理するＣＰＵである。９２５はデータの転送を行うＤＭＡコントローラである。９２２はチップ間通信インターフェースとなるＰＣＩｅコントローラである。９２６はＲＡＭ２（１７０）を制御するメモリコントローラである。９２７はＲＯＭ２（１７１）を制御するＲＯＭコントローラである。９２４は内部バスである。ＣＰＵ９２１、及びＰＣＩｅコントローラ９２２はそれぞれバスマスタである。ＰＣＩｅコントローラ９２２、メモリコントローラ９２６、及びＲＯＭコントローラ９２７はそれぞれバススレーブである。これらのバスマスタとバススレーブ間でデータ転送が可能である。また、ＣＰＵ９２１はとＤＭＡコントローラ９２５は、ＰＣＩｅコントローラ９２２を通して、ＲＡＭ１（１６０）とＲＡＭ３（１８０）にアクセスすることができる。なお、第２制御チップ９２０の構成は、第１制御チップ１１０の構成と同一であってもよい。また、チップ間通信インターフェースとしては、ＰＣＩｅコントローラ以外であってもよい。
【００４２】
＜処理フロー＞
次に、図１１を参照して、第１制御チップ１１０におけるＣＰＵ１１１がデータ転送処理を制御する制御手順を示すフローについて説明する。以下で説明する処理は、第１制御チップ１１０のＣＰＵ１１１がＲＯＭ１（１６１）等に格納された制御プログラムをＲＡＭ１（１６０）に読み出して実行することにより実現される。
【００４３】
Ｓ８０１で、第１制御チップ１１０のＣＰＵ１１１は、実行中のアプリケーションからメモリデータコピーの要求を取得する。メモリデータコピーの要求を取得すると、Ｓ８０２で、ＣＰＵ１１１は、データ転送元が第１制御チップ１１０に接続されているメモリのＲＡＭ１（１６０）であるか否かを判定する。該当する場合はＳ８０３に進み、該当しない場合はＳ８０５に進む。
【００４４】
Ｓ８０５で、ＣＰＵ１１１は、データの転送元が第２制御チップ９２０に接続されているメモリのＲＡＭ２（１７０）であるか否かを判定する。該当する場合はＳ８０６に進み、該当しない場合はＳ８０８に進む。Ｓ８０６で、ＣＰＵ１１１は、データ転送元の第２制御チップ９２０のＤＭＡコントローラ（９２５）が利用可能か否かを判定する。該当する場合はＳ８１１に進み、該当しない場合はＳ８０７に進む。Ｓ８０７で、ＣＰＵ１１１は、データ転送元の第２制御チップ９２０に最も近い第３制御チップ１３０内のＤＭＡコントローラ（１３５）が利用可能か否かを判定する。該当する場合はＳ８０８に進み、該当しない場合はＳ８０３に進む。
【００４５】
Ｓ８０２、Ｓ８０５、Ｓ８０６、及びＳ８０７において、ＣＰＵ１１１は、取得したデータ転送の転送条件を解析する解析手段として機能する。ここで、転送条件とは、データの転送元が何れの制御チップに接続されたメモリであるかと、ＲＡＭ２が転送元であった場合にＤＭＡコントローラの利用可否を示す。また、ＣＰＵ１１１は、後述するＳ８０３、Ｓ８０８及びＳ８１１において、上記の解析結果に基づき、ＤＭＡコントローラ１１５及びＤＭＡコントローラ９２５及びＤＭＡコントローラ１３５の何れでデータ転送を実行するかを選択する選択手段として機能する。
【００４６】
Ｓ８０３で、ＣＰＵ１１１は、ＤＭＡコントローラ１１５を起動する。続いて、Ｓ８０４で、ＤＭＡコントローラ１１５はデータ転送元からＲＡＭ１（１６０）へデータの転送を実行する。なお、Ｓ８０７においてＮｏと判定されたことでＳ８０３が実行される場合、ＣＰＵ１１１は、ＤＭＡＣ１１５を起動してデータ転送元となるＲＡＭ２（１７０）からＲＡＭ１（１６０）へのデータの転送を実行する。Ｓ８０８で、ＣＰＵ１１１は、ＣＰＵ１３１に対して、ＤＭＡコントローラ１３５の使用リクエストを出す。続いて、Ｓ８０９で、ＣＰＵ１１１は、ＤＭＡコントローラ１３５を起動する。さらに、Ｓ８１０で、ＣＰＵ１１１は、ＤＭＡコントローラ１３５を用いてデータ転送元からＲＡＭ１（１６０）へデータの転送を実行する。
【００４７】
Ｓ８１１で、ＣＰＵ１１１はＣＰＵ９２１に対して、ＤＭＡコントローラ９２５の使用リクエストを出す。続いて、Ｓ８１２で、ＣＰＵ１１１は、ＤＭＡコントローラ９２５を起動する。さらに、Ｓ８１３において、ＣＰＵ１１１は、ＤＭＡコントローラ９２５を利用してデータ転送元からＲＡＭ１（１６０）へデータの転送を実行する。
【００４８】
本実施形態によれば、データ転送元が第２制御チップ９２０で且つＤＭＡコントローラ９２５を使用できない場合には、第３制御チップ１３０のように、データ転送を中継する制御チップのＤＭＡコントローラを使用した転送を実行することができる。
【００４９】
＜テーブル＞
次に、図１２を参照して、データ転送に利用することができるＤＭＡコントローラの組み合わせのテーブルについて説明する。当該テーブル１２００は、ＣＰＵ１１１が実行中のアプリケーションから要求を受けたメモリデータの転送元と転送先によって、起動するＤＭＡコントローラの組み合わせを表す。
【００５０】
データのアクセスについては、レスポンスを待たなくてよいため、リードアクセスよりもライトアクセスの方が低レイテンシで完了する。そのため、データ転送元がＲＡＭ１、ＲＡＭ３の場合は、データ転送元に最も近い制御チップのＤＭＡコントローラを起動する。データ転送元がＲＡＭ２の場合、データ転送元のＤＭＡコントローラが利用できる場合は、データ転送元のＤＭＡコントローラを起動する。データ転送元のＤＭＡコントローラが利用できない場合は、データ転送元以外の制御チップのＤＭＡコントローラを起動する。なお、データ転送元がＲＡＭ２でデータ転送先がＲＡＭ１の場合は、ＤＭＡコントローラ１とＤＭＡコントローラ３の両方利用可能である。ただし、ＤＭＡコントローラ３を起動させることによって、ＤＭＡコントローラ１を起動するよりも、低レイテンシの転送が可能となる。
【００５１】
なお、テーブル１２００をＣＰＵ１１１が参照できるテーブルとして、ＲＡＭ１（１６０）もしくは、ＲＯＭ１（１６１）に格納することが望ましい。この場合、ＣＰＵ１１１はデータ転送元とデータ転送先の条件に従い、ＤＭＡコントローラ１（１１５）を起動するか、ＤＭＡコントローラ３（１３５）を起動するかを選択する構成であってもよい。また、テーブル１２００は、ユーザ入力等に従って内容を更新できるように構成されてもよい。
【００５２】
以上説明したように、本実施形態に係るマルチチップシステムは、転送元又は転送先にＤＭＡコントローラを備えたマルチチップ構成のシステムを想定している。そしてＣＰＵ１１１が、転送元が何れの制御チップに接続されたＲＡＭであるかと、転送元のＤＭＡコントローラの使用可否の判定を行う。そして、転送元の制御チップのＤＭＡコントローラを使用できないと判定された場合に、転送元と転送先の制御チップの間を中継する制御チップのＤＭＡコントローラがデータ転送のために使用される。その結果、データ転送の効率を向上させることができる。
【００５３】
＜その他の実施形態＞
上記第１及び第２の実施形態の変形例について説明する。第１制御チップ１１０と第２制御チップ１２０、９２０と第３制御チップ１３０は、全部または一部は同一の制御チップであってもよい。また、第１制御チップ１１０と第２制御チップ１２０、９２０の間を中継する制御チップは、第３制御チップ１３０のみに限定されず、第３制御チップ以外に１つまたは複数あってもよい。さらに、第１制御チップ１１０や第２制御チップ１２０、９２０の先に接続されるチップが１つまたは複数あってもよい。また、制御チップ間の転送を実現するためにはＤＭＡコントローラから転送先や転送元にアクセス可能であることが必要であるため、転送先又は転送元のメモリ空間がアクセス可能、即ち、共有空間であるか否かを転送条件に加えてもよい。また、上記各実施形態で転送されるデータは、画像形成装置１０１において画像形成対象の画像データに対して実行される各制御チップの画像処理に応じて転送される画像データであってもよい。また、実施形態１および２では、マルチチップシステムが画像形成装置１０１において搭載された場合について説明したが、画像形成装置とは異なる装置に搭載されたマルチチップシステムにおいて実施形態１または２の処理が実行されても構わない。たとえば、デジタルカメラが、他の装置から画像データを取得して表示する際に実施形態１または２が実行されても構わない。
【００５４】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００５５】
１０１：画像形成装置、１０２、１０３：ホストコンピュータ、１０５：ホストインターフェース、１１０：第１制御チップ、１２０：第２制御チップ、１３０：第３制御チップ
【図１】
2016224560.tif 000003
【図２】
2016224560.tif 000004
【図３】
2016224560.tif 000005
【図４】
2016224560.tif 000006
【図５】
2016224560.tif 000007
【図６】
2016224560.tif 000008
【図７】
2016224560.tif 000009
【図８】
2016224560.tif 000010
【図９】
2016224560.tif 000011
【図１０】
2016224560.tif 000012
【図１１】
2016224560.tif 000013
【図１２】
2016224560.tif 000014