(57)【要約】【課題】ＤＭＡコントローラ連動におけるソフトウェアプログラムによる制御を簡略化すること。【解決手段】異なるＤＭＡコントローラ間で前記ＤＭＡコントローラ同士が互いの動作状況に応じてメモリを介してデータ転送を行う連動データ転送を制御するデータ転送制御装置であって、前記連動データ転送が指示された場合に、前記ＤＭＡコントローラへのメモリ領域の割り当てを要求する割当要求部と、前記メモリ領域の割り当てが要求された場合に、前記ＤＭＡコントローラに前記メモリ領域を割り当てる領域割当部と、を備え、前記メモリ領域が割り当てられた前記ＤＭＡコントローラは、割り当てられた前記メモリ領域を介して前記連動データ転送を行う。【選択図】図１
2016103112.tif 000002
【特許請求の範囲】
【請求項１】
異なるＤＭＡコントローラ間で前記ＤＭＡコントローラ同士が互いの動作状況に応じてメモリを介してデータ転送を行う連動データ転送を制御するデータ転送制御装置であって、
前記連動データ転送が指示された場合に、前記ＤＭＡコントローラへのメモリ領域の割り当てを要求する割当要求部と、
前記メモリ領域の割り当てが要求された場合に、前記ＤＭＡコントローラに前記メモリ領域を割り当てる領域割当部と、
を備え、
前記メモリ領域が割り当てられた前記ＤＭＡコントローラは、割り当てられた前記メモリ領域を介して前記連動データ転送を行うことを特徴とするデータ転送制御装置。
【請求項２】
前記メモリ領域が割り当てられた前記ＤＭＡコントローラは、割り当てられた前記メモリ領域の領域情報に基づいて、割り当てられた前記メモリ領域を介して前記連動データ転送を行うことを特徴とする請求項１に記載のデータ転送制御装置。
【請求項３】
前記メモリは、前記データ転送制御装置により専用に使用されることを特徴とする請求項１又は２に記載のデータ転送制御装置。
【請求項４】
前記メモリ領域が割り当てられた前記ＤＭＡコントローラとは異なるＤＭＡコントローラが前記メモリ領域にアクセスした場合、割り込みを発生するアクセス割込発生部を備えることを特徴とする請求項１乃至３いずれか１項に記載のデータ転送制御装置。
【請求項５】
前記メモリ領域の割り当てが要求された際、割り当てることのできるメモリ領域がない場合、割り込みを発生する割当割込発生部を備えることを特徴とする請求項１乃至４いずれか１項に記載のデータ転送制御装置。
【請求項６】
前記メモリ領域の割り当てが要求された際、割り当てることのできるメモリ領域がない場合、前記メモリ領域を割り当てることができるようになるまで前記ＤＭＡコントローラを待機させる待機指示部を備えることを特徴とする請求項１乃至５いずれか１項に記載のデータ転送制御装置。
【請求項７】
前記メモリ領域を使用可能な状態と使用不可能な状態とのいずれかに設定する使用状態設定部を備えることを特徴とする請求項１乃至６いずれか１項に記載のデータ転送制御装置。
【請求項８】
前記使用状態設定部は、前記メモリ領域の割り当てが要求された際、前記ＤＭＡコントローラに割り当てることのできるメモリ領域がない場合、使用不可能な状態に設定されているメモリ領域を使用可能な状態に設定することを特徴とする請求項７に記載のデータ転送制御装置。
【請求項９】
請求項１乃至８いずれか１項に記載のデータ転送制御装置を備えることを特徴とする情報処理装置。
【請求項１０】
請求項１乃至８いずれか１項に記載のデータ転送制御装置を備えることを特徴とする画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送制御装置、情報処理装置、画像形成装置に関する。
【背景技術】
【０００２】
近年、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）や画像形成装置などの情報処理装置のように複数の機能モジュールがバスアービタを介して接続されているようなシステムにおいては、機能モジュールによるメモリアクセスがＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｃｅｓｓｉｎｇ  Ｕｎｉｔ）を介さずに直接行われるＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）が一般的となっている。このようなＤＭＡは、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ：ＤＭＡコントローラ）により行われ、システム全体として処理負荷の軽減や処理速度の向上を図る技術である。
【０００３】
このようなＤＭＡの応用的な技術として、ＤＭＡＣ連動という技術が知られている（例えば、特許文献１を参照）。ＤＭＡＣ連動は、例えば、ＲＤＭＡＣ（Ｒｅａｄ  ＤＭＡＣ）によりメモリからデータを読み出し、そのデータに所定の処理が行われた後、処理後のデータをＷＤＭＡＣ（Ｗｒｉｔｅ  ＤＭＡＣ）によりメモリに書き戻すような、複数のＤＭＡＣを連動させる技術である。ＤＭＡＣ連動は、メモリ使用容量の削減、ソフトウェアプログラムによる制御の簡略化などを目的とする技術である。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところが、従来のＤＭＡＣ連動においては、ＤＭＡＣ連動に使用されるメモリ領域の管理や、ＤＭＡＣ連動に必要となる設定をソフトウェアプログラムが行わなければならないため、その点について、ソフトウェアプログラムによる制御の簡略化の余地がある。
【０００５】
本発明は、このような課題を解決するためになされたものであり、ＤＭＡコントローラ連動におけるソフトウェアプログラムによる制御を簡略化することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明の一態様は、異なるＤＭＡコントローラ間で前記ＤＭＡコントローラ同士が互いの動作状況に応じてメモリを介してデータ転送を行う連動データ転送を制御するデータ転送制御装置であって、前記連動データ転送が指示された場合に、前記ＤＭＡコントローラへのメモリ領域の割り当てを要求する割当要求部と、前記メモリ領域の割り当てが要求された場合に、前記ＤＭＡコントローラに前記メモリ領域を割り当てる領域割当部と、を備え、前記メモリ領域が割り当てられた前記ＤＭＡコントローラは、割り当てられた前記メモリ領域を介して前記連動データ転送を行うことを特徴とする。
【発明の効果】
【０００７】
本発明によれば、ＤＭＡコントローラ連動におけるソフトウェアプログラムによる制御を簡略化することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態に係る画像形成装置のハードウェア構成を模式的に示すブロック図である。
【図２】本発明の実施形態に係る画像形成装置がＤＭＡＣ連動を行う際のデータの流れを示す図である。
【図３】本発明の実施形態に係るＡＳＩＣメモリに設定されたＤＭＡＣ連動用バッファの一例を示す図である。
【図４】本発明の実施形態に係るコントローラＡＳＩＣにおいてＤＭＡＣ連動を行うモジュールの組み合わせの一例を示す図である。
【図５】本発明の実施形態に係る画像形成装置がＤＭＡＣ連動用バッファを割り当てる際の処理を説明するためのフローチャートである。
【発明を実施するための形態】
【０００９】
以下、図面を参照して、本発明の実施形態を詳細に説明する。本実施形態においては、複数の機能モジュールがバスアービタを介して接続されて構成され、機能モジュールによるメモリアクセスがＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）により行われる画像形成装置を例として説明する。このようなＤＭＡは、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ：ＤＭＡコントローラ）により行われ、システム全体として処理負荷の軽減や処理速度の向上を図ることができる。
【００１０】
本実施形態に係る画像形成装置は、読み出し側のＤＭＡＣによりメモリからデータを読み出した後、そのデータに所定の処理を行い、処理後のデータを書き込み側のＤＭＡＣによりメモリに書き戻すような、複数のＤＭＡＣを連動させるＤＭＡＣ連動により機能モジュールによるメモリアクセスを行う。即ち、本実施形態に係る画像形成装置は、異なるＤＭＡＣ間でＤＭＡＣ同士が互いに動作状況を監視し合いながらメモリを介して連動データ転送を行う。
【００１１】
まず、本実施形態に係る画像形成装置１のハードウェア構成について図１を参照して説明する。図１は、本実施形態に係る画像形成装置１のハードウェア構成を模式的に示すブロック図である。尚、図１において、Ｒは、読み出し専用のＤＭＡＣであるＲＤＭＡＣ（Ｒｅａｄ  ＤＭＡＣ）を、Ｗは、書き込み専用のＤＭＡＣであるＷＤＭＡＣ（Ｗｒｉｔｅ  ＤＭＡＣ）を、ＲＷは、読み出しと書き込みとを切り替え可能なＲＷＤＭＡＣ（Ｒｅａｄ／Ｗｒｉｔｅ  ＤＭＡＣ）を示す。
【００１２】
図１に示すように、本実施形態に係る画像形成装置１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｃｅｓｓｉｎｇ  Ｕｎｉｔ）１００、ＣＰＵメモリ２００、ＲＯＭ３００（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｃ  Ｄｒｉｖｅ）４００、コントローラＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）５００、ＡＳＩＣメモリ６００、エンジンＡＳＩＣ７００を備える。
【００１３】
ＣＰＵ１００は演算手段であり、ＲＯＭ３００やＨＤＤ４００若しくは光学ディスク等の記憶媒体に格納されたソフトウェアプログラムに従い、画像形成装置１全体の動作を制御する。
【００１４】
ＣＰＵメモリ２００は、ＣＰＵ１００に接続され、情報の高速な読み書きが可能な揮発性の記憶媒体であり、データの一時的な記憶に用いられ、また、ＣＰＵ１００が情報を処理する際の作業領域として用いられる。ＣＰＵメモリ２００は、ＤＤＲ３−ＳＤＲＡＭ（Ｄｏｕｂｌｅ−Ｄａｔａ−Ｒａｔｅ３−Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  ＲＡＭ）等の大容量メモリで実現される。
【００１５】
ＲＯＭ３００は、読み出し専用の不揮発性記憶媒体であり、ファームウェア等のプログラムが格納されている。
【００１６】
ＨＤＤ４００は、情報の読み書きが可能な不揮発性の記憶装置であり、画像データ等の各種データや、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）、制御プログラム、アプリケーション・プログラム等の各種プログラムが格納されている。
【００１７】
コントローラＡＳＩＣ５００は、ＣＰＵ１００によって制御され、ＣＰＵメモリ２００に記憶されている符号データに対して伸長処理を施してエンジンＡＳＩＣ７００に出力し、若しくは、エンジンＡＳＩＣ７００から入力された画像データに対して圧縮処理を施してＣＰＵメモリ２００に記憶させる。即ち、本実施形態においてはコントローラＡＳＩＣ５００がデータ転送制御装置として機能する。
【００１８】
このコントローラＡＳＩＣ５００は、シリアル通信部５０１、メモリコントローラ５０２、ＨＤＤ制御部５０３、圧縮伸長部５０４、編集部５０５、ビデオ入力部５０６、ビデオ出力部５０７がバスアービタ５０８を介して接続され、シリアル通信部５０９、割込制御部５１０、連動用バッファ情報設定部５１１、連動用バッファ情報記憶部５１２、連動用バッファ割当部５１３を備えて構成されている。
【００１９】
シリアル通信部５０１は、ＣＰＵ１００とコントローラＡＳＩＣ５００とを接続するためのＩ／Ｆであり、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）などの高速シリアルＩ／Ｆで実現される。
【００２０】
メモリコントローラ５０２は、コントローラＡＳＩＣ５００によるＡＳＩＣメモリ６００へのメモリアクセスを制御する。このメモリコントローラ５０２は、シリアル通信部５０１によるデータ転送速度よりも速いＩ／ＦでコントローラＡＳＩＣ５００とＡＳＩＣメモリ６００とを接続するため、データ転送におけるパフォーマンスを向上させることができる。
【００２１】
また、ＣＰＵ１００は、通常、汎用品が使用されるため、コントローラＡＳＩＣ５００によるＣＰＵメモリ２００へのメモリアクセスは、ＣＰＵ１００に依存した設計となるが、コントローラＡＳＩＣ５００によるＡＳＩＣメモリ６００へのメモリアクセスにはそういったことがないため、設計自由度が高いといった利点がある。
【００２２】
ＨＤＤ制御部５０３は、ＲＷＤＭＡＣを持ち、ＨＤＤ４００へのデータの読み出し／書き込みを制御する。
【００２３】
圧縮伸長部５０４は、ＲＤＭＡＣ及びＷＤＭＡＣを持ち、圧縮伸長部５０４は、ＲＤＡＭＣによりＣＰＵメモリ２００若しくはＡＳＩＣメモリ６００から読み出した画像データ若しくは圧縮データに対してそれぞれ圧縮処理若しくは伸長処理を施してＷＤＭＡＣによりＣＰＵメモリ２００若しくはＡＳＩＣメモリ６００に書き込む。
【００２４】
編集部５０５は、ＷＤＭＡＣ及び２つのＲＤＭＡＣを持ち、ＲＤＡＭＣによりＣＰＵメモリ２００若しくはＡＳＩＣメモリ６００から読み出した画像データに対して編集処理を施してＷＤＭＡＣによりＣＰＵメモリ２００若しくはＡＳＩＣメモリ６００へ書き込む。
【００２５】
例えば、編集部５０５は、２つのＲＤＡＭＣによりＣＰＵメモリ２００若しくはＡＳＩＣメモリ６００から読み出した２つの画像データ（例えば、画像とスタンプや、画像と地紋など）を合成したり、ＲＤＭＡＣにより読み出した画像データに対してトリミング処理を施したりしてＷＤＭＡＣによりＣＰＵメモリ２００若しくはＡＳＩＣメモリ６００へ書き込む。
【００２６】
ビデオ入力部５０６は、ＷＤＭＡＣを備え、エンジンＡＳＩＣ７００で生成されてシリアル通信部５０９を介してライン単位で入力された画像データをＷＤＭＡＣによりＣＰＵメモリ２００若しくはＡＳＩＣメモリ６００に順次書き込んでいく。
【００２７】
このとき、ビデオ入力部５０６は、データ１ライン分をデータ転送の単位として、一定間隔でエンジン側からデータが入力されるが、データ転送に時間を要するからといって、その間、スキャナエンジンの動作を停止させることができない。そのため、ビデオ入力部５０６は、１ライン分のデータを決められた時間内に転送しなければならないという制約がある。従って、ビデオ入力部５０６は、ライン等時性を満たすように構成されている。
【００２８】
ビデオ出力部５０７は、ＲＤＭＡＣを備え、ＲＤＭＡＣによりＣＰＵメモリ２００若しくはＡＳＩＣメモリ６００からライン単位で読み出した画像データをシリアル通信部５０９を介してエンジンＡＳＩＣ７００に順次出力していく。
【００２９】
このとき、ビデオ出力部５０７は、データ１ライン分をデータ転送の単位として、一定間隔でエンジン側へデータを出力するが、データ転送に時間を要するからといって、その間、プリントエンジンの動作を停止させることができない。そのため、ビデオ出力部５０７は、１ライン分のデータを決められた時間内に転送しなければならないという制約がある。従って、ビデオ出力部５０７は、ビデオ入力部５０６と同様に、ライン等時性を満たすように構成されている。
【００３０】
尚、圧縮伸長部５０４、編集部５０５、ビデオ入力部５０６、ビデオ出力部５０７におけるＲＤＭＡＣ、ＷＤＭＡＣはそれぞれ、ＣＰＵメモリ２００とＡＳＩＣメモリ６００とのどちらにアクセスするかを選択することができる。
【００３１】
バスアービタ５０８は、バスに接続されている各バスマスタからのＣＰＵメモリ２００若しくはＡＳＩＣメモリ６００へのアクセス要求を調停してアクセスの順番を制御する。尚、バスアービタ５０８は、ビデオ入力部５０６やビデオ出力部５０７といったライン等時性が必要なバスマスタに対しては優先的に調停を行う、確実にライン等時性を満たすように構成されている。
【００３２】
シリアル通信部５０９は、コントローラＡＳＩＣ５００とエンジンＡＳＩＣ７００とを接続するためのＩ／Ｆであり、ＰＣＩｅなどの高速シリアルＩ／Ｆで実現される。
【００３３】
割込制御部５１０は、コントローラＡＳＩＣ５００に含まれる各モジュールから割り込み要因が通知されると、割り込みを発生してシリアル通信部５０１を介してＣＰＵ１００に通知する。
【００３４】
連動用バッファ情報設定部５１１、連動用バッファ情報記憶部５１２、連動用バッファ割当部５１３については後述する。
【００３５】
ＡＳＩＣメモリ６００は、ＣＰＵメモリ２００から読み出された符号データに対してコントローラＡＳＩＣ５００により伸長処理が施された画像データや、エンジンＡＳＩＣ７００から入力された画像データに対してコントローラＡＳＩＣ５００により圧縮処理が施された符号データを中間データとして一時的に記憶する。
【００３６】
エンジンＡＳＩＣ７００は、スキャナエンジンが原稿を光学的に走査して読み取ることで生成した読取データに対してシェーディング補正、ドット補正、γ補正、色空間変換、変倍処理などの画像処理を施してコントローラＡＳＩＣ５００に入力する。
【００３７】
また、エンジンＡＳＩＣ７００は、コントローラＡＳＩＣ５００から入力された画像データに対して回転処理、圧縮処理、伸張処理、変倍処理、階調処理などの画像処理を施して、プリントエンジンが画像形成動作において形成すべき画像を描画するための描画データを生成する。
【００３８】
次に、本実施形態に係る画像形成装置１がＤＭＡＣ連動を行う際の処理について、図２を参照して説明する。図２は、本実施形態に係る画像形成装置１がＤＭＡＣ連動を行う際のデータの流れを示す図である。尚、図２においては、ＣＰＵメモリ２００に記憶されている符号データを伸長してエンジンＡＳＩＣ７００に出力する際の、即ち、印刷出力の際のＤＭＡＣ連動について示している。
【００３９】
図２に示すように、本実施形態に係る画像形成装置１は、ＤＭＡＣ連動を行う際にはまず、圧縮伸長部５０４は、ＲＤＭＡＣによりＣＰＵ１００及びシリアル通信部５０１を介してＣＰＵメモリ２００から１ページ分の符号データを読み出す。
【００４０】
そして、圧縮伸長部５０４は、ＣＰＵメモリ２００から読み出した符号データに対して伸長処理を施して画像データとし、その画像データをＷＤＭＡＣによりＡＳＩＣメモリ６００に書き込む。
【００４１】
ビデオ出力部５０７は、ＡＳＩＣメモリ６００に画像データが書き込まれると、ＲＤＭＡＣによりＡＳＩＣメモリ６００から画像データを読み出し、読み出した画像データを自身が備えるデータバッファに書き込みながら、書き込んだ順にシリアル通信部５０９を介してエンジンＡＳＩＣ７００に出力する。
【００４２】
ここで、ビデオ出力部５０７が備えるデータバッファの役割について説明する。ビデオ出力部５０７がシリアル通信部５０９を介してエンジンＡＳＩＣ７００に画像データを出力する際のデータ転送速度は、ＡＳＩＣメモリ６００から画像データを読み出す際のデータ転送速度に比べて遅い。
【００４３】
そのため、ビデオ出力部５０７は、ＡＳＩＣメモリ６００から読み出した画像データをそのままシリアル通信部５０９を介してエンジンＡＳＩＣ７００に出力していったのでは、画像データの出力が読み出しに追いつかず、画像データが溢れることになる。
【００４４】
データバッファは、この画像データの溢れを解消する、即ち、溢れるであろう画像データを記憶しておくためのバッファである。換言すれば、データバッファは、ビデオ出力部５０７が、シリアル通信部５０９を介してエンジンＡＳＩＣ７００に画像データを出力する際のデータ転送速度と、ＡＳＩＣメモリ６００から画像データを読み出す際のデータ転送速度との差を埋めるためのバッファである。
【００４５】
尚、伸長処理後の画像データ１ページ分全てがＡＳＩＣメモリ６００に書き込まれてからその画像データが読み出されるとすると、ＡＳＩＣメモリ６００のメモリ容量が多く消費されてしまうことになる。
【００４６】
また、伸長処理後の画像データ１ページ分全てがＡＳＩＣメモリ６００に書き込まれてからその画像データが読み出されるとすると、１ページ分全ての画像データがＡＳＩＣメモリ６００に書き込まれてからでないと、エンジンＡＳＩＣ７００に画像データが出力されず、印刷出力の生産性が低下してしまう。
【００４７】
そこで、本実施形態に係る画像形成装置１は、図２に示すように、１ページ分の画像データをバンド単位に分割して管理し、トグル制御により各バンド領域にデータを書き込み若しくは各バンド領域からデータを読み出すように構成されている。そのため、本実施形態に係る画像形成装置１は、ＡＳＩＣメモリ６００のメモリ消費量を低減させると共に、印刷出力の生産性を向上させることができる。
【００４８】
また、本実施形態に係る画像形成装置１においては、トグル制御はハードウェアにより行われ、ソフトウェアプログラムは、各ＤＭＡＣを連動モードに設定し起動するのみである。そのため、本実施形態に係る画像形成装置１においては、ソフトウェアプログラムによる制御を簡略化することができる。さらに、連動モードに設定された各ＤＭＡＣは、互いの進捗を監視して動作状況を通知し合うことで、追い越しなどが起きないように構成されている。
【００４９】
また、本実施形態に係るコントローラＡＳＩＣ５００には、ＣＰＵメモリ２００の他にＡＳＩＣメモリ６００が接続されている。そして、ＤＭＡＣは、ＣＰＵメモリ２００にアクセスする場合、ＣＰＵ１００及びシリアル通信部５０１を介してアクセスすることになる。そのため、ＣＰＵメモリ２００へのアクセス速度は、ＡＳＩＣメモリ６００に比べて遅くなる。
【００５０】
従って、仮に、コントローラＡＳＩＣ５００にＡＳＩＣメモリ６００が接続されておらず、ＣＰＵメモリ２００のみが接続されている場合、画像形成装置１は、ＣＰＵメモリ２００へのアクセス速度の遅さを原因としたパフォーマンスの低下を改善するために、スプリットトランザクションのバスを採用し、アクセス要求の先投げ回数を多くする必要がある。ところが、アクセス要求の先投げ回数を多くすると、その分、コントローラＡＳＩＣ５００の回路規模が複雑になってしまうという問題がある。
【００５１】
また、仮に、コントローラＡＳＩＣ５００にＡＳＩＣメモリ６００が接続されておらず、ＣＰＵメモリ２００のみが接続されている場合、ＣＰＵメモリ２００にばかりアクセスが集中することがあるため、シリアル通信部５０１の通信帯域が空くまで、アクセス要求を行ったＤＭＡＣの一部は待たされることになる。その結果、コントローラＡＳＩＣ５００内でのデータ転送のパフォーマンスが低下するといった問題がある。
【００５２】
そこで、バスアービタ５０８及びＣＰＵメモリ２００を介したデータ転送ではなく、コントローラＡＳＩＣ５００内の各モジュールがそれぞれ直接接続された構成とすれば、コントローラＡＳＩＣ５００内でのデータ転送のパフォーマンスが低下するといった問題は起こらない。
【００５３】
ところが、コントローラＡＳＩＣ５００内の各モジュールをそれぞれ直接接続された構成とするためには、コントローラＡＳＩＣ５００において起こり得る全てのデータ転送パスについてモジュール同士を接続しなければならないため、配線が複雑になといった問題がある。
【００５４】
また、仮に、コントローラＡＳＩＣ５００にＡＳＩＣメモリ６００が接続されておらず、ＣＰＵメモリ２００のみが接続されている場合、シリアル通信部５０１を介したデータの再送や、ＣＰＵ１００によるアクセス要求のアービトレーションなどの要因により、一時的に、ビデオ出力部５０７によるＣＰＵメモリ２００からのデータの読み出しが滞ることがある。
【００５５】
そのため、仮に、コントローラＡＳＩＣ５００にＡＳＩＣメモリ６００が接続されておらず、ＣＰＵメモリ２００のみが接続されている場合、上記要因を回避するためのシステム設計を行わなければならないが、そのシステム設計は複雑になるといった問題がある。
【００５６】
また、上述したように、ビデオ出力部５０７は、ライン等時性を満たすように構成されている。そのため、ビデオ出力部５０７は、ＣＰＵメモリ２００からのデータの読み出しが滞った場合に、その影響が１ライン周期期間内でのデータ転送に及ばないように、少なくとも１ライン分もの大容量のデータバッファを備える必要がある。
【００５７】
そこで、本実施形態に係る画像形成装置１は、コントローラＡＳＩＣ５００にＡＳＩＣメモリ６００が接続されることで上記問題を解消することができる。
【００５８】
即ち、本実施形態に係る画像形成装置１は、コントローラＡＳＩＣ５００にＡＳＩＣメモリ６００が接続されることで、アクセス要求の先投げ回数を多くすることによるコントローラＡＳＩＣ５００の回路規模の複雑化、ＣＰＵメモリ２００にばかりアクセスが集中することによるデータ転送のパフォーマンスの低下、直接接続による配線の複雑化、ライン等時性を満たすためのシステム設計の複雑化、ライン等時性を満たすためのデータバッファの大容量化を解消することができる。
【００５９】
次に、本実施形態に係るＡＳＩＣメモリ６００に設定されたＤＭＡＣ連動用のメモリ領域（以下、「ＤＭＡＣ連動用バッファ」とする）の一例について、図３を参照して説明する。図３は、本実施形態に係るＡＳＩＣメモリ６００に設定されたＤＭＡＣ連動用バッファの一例を示す図である。尚、図３においては、ＤＭＡＣ連動用バッファが３つ設定されている例を示している。
【００６０】
図３に示すように、本実施形態に係るＡＳＩＣメモリ６００は、ＤＭＡＣ連動の際に使用される専用のメモリ領域（ＤＭＡＣ連動用バッファ）が予め設定されており、各ＤＭＡＣ連動用バッファにはそれぞれ連動用バッファ情報が設定されている。
【００６１】
ここで、連動用バッファ情報とは、図３に示すように、ＤＭＡＣ連動用バッファの開始アドレス、ＤＭＡＣ連動用バッファのメモリ幅、ＤＭＡＣ連動用バッファが記憶することができるライン数を含む情報のことである。即ち、本実施形態においては、連動用バッファ情報が領域情報として利用される。
【００６２】
そして、ＤＭＡＣは、連動モードで起動された場合、このように設定されたＤＭＡＣ連動用バッファを中間データの一時的なメモリ領域として使用する。このとき、連動モードで起動されたＤＭＡＣは、使用するＤＭＡＣ連動用バッファが割り当てられた際、連動用バッファ情報が通知されることで、そのＤＭＡＣ連動用バッファを使用することが可能となる。
【００６３】
尚、各ＤＭＡＣ連動用バッファにはそれぞれ、有効か無効かを設定する有効無効設定値が設定されている。この有効無効設定値が、無効である場合、そのＤＭＡＣ連動用バッファについては使用不可能な状態になっていることを意味し、有効である場合、そのＤＭＡＣ連動用バッファについては使用可能な状態になっていることを意味する。
【００６４】
そのため、図３に示す例では、この有効無効設定値により、最大で３つのＤＭＡＣ連動用バッファを使用可能とすることができるが、使用可能なＤＭＡＣ連動用バッファの数を調整することもできる。従って、本実施形態に係る画像形成装置１は、状況に応じて必要な分だけのＤＭＡＣ連動用バッファを使用可能とすることができる。そのため、本実施形態に係る画像形成装置１は、ＤＭＡＣ連動用バッファが無駄に使用されることを防ぐことが可能となる。
【００６５】
尚、図３においては、開始アドレスは、ＤＭＡＣ連動用バッファ毎に設定されている例について示しているが、トグルバッファ毎に設定されていても良い。また、メモリ幅は、ＤＭＡＣ連動用バッファが記憶する対象となるデータサイズの最大値に設定されていれば、最大値以下の全てのデータサイズに対応することができる。また、ＤＭＡＣ連動用バッファは、記憶する対象となるデータが２次元の画像データではなく、符号データのような１次元データである場合には、メモリ幅×ライン数の１次元領域として使用される。
【００６６】
尚、従来の画像形成装置は、ＤＭＡＣ連動を行う際にはその都度ソフトウェアプログラムにより使用するＤＭＡＣ連動用バッファを確保し、確保したＤＭＡＣ連動用バッファの連動用バッファ情報を設定するといったように、ＤＭＡＣ連動用バッファをソフトウェアプログラムが管理するようになっている。
【００６７】
ところで、ＤＭＡＣ連動用バッファに一時的に記憶される中間データは、ソフトウェアプログラムにとってみれば転送先に転送さえできれば良だけのデータであり、存在を意識する必要のないデータである。
【００６８】
そのため、ソフトウェアプログラムがこのような中間データの存在を意識しないで、ハードウェア制御のみでコントローラＡＳＩＣ５００内でその中間データの転送が実現されることは、ＤＭＡＣ連動におけるソフトウェアプログラムによる制御の簡略化につながる。
【００６９】
そこで、本実施形態に係る画像形成装置１においては、図３に示すように、ＡＳＩＣメモリ６００にＤＭＡＣ連動用バッファが予め設定されており、連動モードでＤＭＡＣが起動された場合、コントローラＡＳＩＣ５００は、使用するＤＭＡＣ連動用バッファの割り当て及びその連動用バッファ情報のＤＭＡＣへの通知を自動で行うようになっている。
【００７０】
そのため、本実施形態に係る画像形成装置１においては、ソフトウェアプログラムは、ＤＭＡＣ連動用バッファを管理する必要がない。従って、本実施形態に係る画像形成装置１は、ＤＭＡＣ連動におけるソフトウェアプログラムによる制御を簡略化することが可能となる。
【００７１】
次に、本実施形態に係るコントローラＡＳＩＣ５００においてＤＭＡＣ連動を行うモジュールの組み合わせについて、図４を参照して説明する。図４は、本実施形態に係るコントローラＡＳＩＣ５００においてＤＭＡＣ連動を行うモジュールの組み合わせの一例を示す図である。
【００７２】
図４に示すように、本実施形態に係るコントローラＡＳＩＣ５００においてＤＭＡＣ連動を行うモジュールの組み合わせとして６パターンある。
【００７３】
尚、図４に示す組み合わせは、全てが同時に動作することはない。例えば、Ｎｏ３．とＮｏ．４との組み合わせは、どちらも編集部を含む組み合わせであるため、ハードウェアの制約として同時に動作することができない。また、例えば、ハードウェアの制約として同時に動作することができる組み合わせであっても、同時に動作する状況になることがあり得ない組み合わせもある。
【００７４】
従って、組み合わせのパターンの数だけ、若しくは、ＤＭＡＣの数だけＤＭＡＣ連動用バッファが設定されると常に、使用されないＤＭＡＣ連動用バッファが必ず存在することになり、メモリ容量が無駄に消費されることになる。そのため、ＤＭＡＣ連動用バッファは、ハードウェアの制約や、起こり得る動作状況を考慮して、必要最低限の数だけ設定されることが望ましい。
【００７５】
次に、本実施形態に係るコントローラＡＳＩＣ５００における連動用バッファ情報設定部５１１、連動用バッファ情報記憶部５１２、連動用バッファ割当部５１３について、図１を参照して説明する。
【００７６】
連動用バッファ情報設定部５１１は、各ＤＭＡＣ連動用バッファの連動用バッファ情報及び有効無効設定値を連動用バッファ情報記憶部５１２に設定し記憶させる。この連動用バッファ情報設定部５１１は、レジスタの設定値を設定するソフトウェアプログラム、若しくは、固定値を記憶するＲＯＭにより実現される。
【００７７】
連動用バッファ情報記憶部５１２は、各ＤＭＡＣ連動用バッファの連動用バッファ情報及び有効無効設定値を記憶する。この連動用バッファ情報記憶部５１２は、例えば、レジスタにより実現される場合、各ＤＭＡＣ連動用バッファにつき、開始アドレス、メモリ幅、ライン数、有効無効設定値を記憶するための４つのレジスタが必要になる。従って、図３に示すように、ＤＭＡＣ連動用バッファが３つ設定されている場合には、連動用バッファ情報記憶部５１２は、計４つのレジスタを３セット備えることになる。
【００７８】
尚、開始アドレス、メモリ幅、ライン数については、出荷時や初期化時などに一度設定されるだけで、ＤＭＡＣ連動の都度、設定される必要はない。これは、本実施形態に係るＤＭＡＣ連動用バッファは予め設定された固定領域であるため、一度設定されてしまえばその設定値は変化することがないためである。
【００７９】
連動用バッファ割当部５１３は、連動モードで起動されたＤＭＡＣから連動用バッファの割り当てが要求されると、有効無効設定値が有効に設定されており、かつ、使用されていないＤＭＡＣ連動用バッファを要求元のＤＭＡＣに割り当てる。即ち、本実施形態においては、連動用バッファ割当部５１３が領域割当部として機能する。
【００８０】
このとき、連動用バッファの割り当てを要求するのは、読み出し側のＤＭＡＣであっても良いし、書き込み側のＤＭＡＣであっても良い。また、連動用バッファの割り当てを要求するのは、ＤＭＡＣ以外の機構部であっても良い。即ち、本実施形態においては、読み出し側のＤＭＡＣ、若しくは、書き込み側のＤＭＡＣ、若しくは、ＤＭＡＣ以外の機構部が割当要求部として機能する。
【００８１】
連動用バッファ割当部５１３は、ＤＭＡＣ連動用バッファを割り当てると、連動用バッファ情報記憶部５１２を参照して、割り当てたＤＭＡＣ連動用バッファの連動用バッファ情報を要求元のＤＭＡＣに通知する。そして、連動用バッファ情報を割り当てられたＤＭＡＣは、連動相手となるＤＭＡＣとその連動用バッファ情報を共有してデータ転送を開始する。
【００８２】
このとき、連動用バッファ割当部５１３は、ＤＭＡＣ連動用バッファを割り当てたＤＭＡＣを識別するための識別情報を保持し、メモリコントローラ５０２に通知する。
【００８３】
そして、識別情報が通知されたメモリコントローラ５０２は、ＤＭＡＣ連動用バッファへのアクセスが発生した場合、どのＤＭＡＣからのアクセスであるかを判断する。
【００８４】
このとき、メモリコントローラ５０２は、ＤＭＡＣ連動用バッファが割り当てられているＤＭＡＣ以外からのアクセスであると判断した場合、意図しないアクセスが発生したものと判断して、割込制御部５１０に対してその旨を割り込み要因として通知する。
【００８５】
そして、割込制御部５１０は、その割り込み要因についての割り込みを発生して、シリアル通信部５０１を介してＣＰＵ１００に通知する。即ち、本実施形態においては、割込制御部５１０がアクセス割込発生部として機能する。
【００８６】
本実施形態に係るコントローラＡＳＩＣ５００は、このように構成されることで、意図しないメモリアクセスを検知することが可能となる。従って、本実施形態に係るコントローラＡＳＩＣ５００によれば、開発者は、開発段階でのソフトバグなどを容易に発見することが可能となる。
【００８７】
尚、メモリコントローラ５０２がどのＤＭＡＣからのアクセスであるかを判断する方法として、例えば、各ＤＭＡＣを識別するためにＤＭＡＣ毎に付与されている一意の識別情報がアクセス要求に含まれるプロトコルとすることなどがある。
【００８８】
次に、本実施形態に係る画像形成装置１がＤＭＡＣ連動用バッファを割り当てる際の処理について、図５を参照して説明する。本実施形態に係る画像形成装置１がＤＭＡＣ連動用バッファを割り当てる際の処理を説明するためのフローチャートである。
【００８９】
図５に示すように、本実施形態に係る画像形成装置１がＤＭＡＣ連動用バッファを割り当てる際にはまず、ＣＰＵ１００は、ソフトウェアプログラムに従い、ＤＭＡＣ連動の対象となるＤＭＡＣを連動モードで起動する（Ｓ５０１）。
【００９０】
連動モードで起動されたＤＭＡＣは、連動用バッファ割当部５１３に対してＤＭＡＣ連動用バッファの割り当てを要求する（Ｓ５０２）。
【００９１】
連動用バッファ割当部５１３は、連動用バッファの割り当てが要求されると、連動用バッファ情報記憶部５１２を参照して、有効無効設定値が有効に設定されているＤＭＡＣ連動用バッファに空きがあるか否かを判定する（Ｓ５０３）。
【００９２】
このとき、ＡＳＩＣメモリ６００に設定されているＤＭＡＣ連動用バッファの数と、同時に動作するＤＭＡＣの組み合わせの数とが同一である場合、ＤＭＡＣ連動用バッファに空きがなくなることはない。一方、ＡＳＩＣメモリ６００に設定されているＤＭＡＣ連動用バッファの数が、同時に動作するＤＭＡＣの組み合わせの数よりも少なく設定されている場合、ＤＭＡＣ連動用バッファに空きがなくなることがある。
【００９３】
連動用バッファ割当部５１３は、Ｓ５０３における判定処理において、空きがあると判定した場合（Ｓ５０３／ＹＥＳ）、要求元のＤＭＡＣにＤＭＡＣ連動用バッファを割り当て、連動用バッファ情報記憶部５１２を参照して、そのＤＭＡＣ連動用バッファの連動用バッファ情報を要求元のＤＭＡＣに通知し（Ｓ５０４）、割り当て処理を終了する。
【００９４】
このように、本実施形態に係る画像形成装置１においては、ＡＳＩＣメモリ６００にＤＭＡＣ連動用バッファが予め設定されており、連動モードでＤＭＡＣが起動された場合、連動用バッファ割当部５１３は、使用するＤＭＡＣ連動用バッファの割り当て及びその連動用バッファ情報のＤＭＡＣへの通知を自動で行うようになっている。
【００９５】
そのため、本実施形態に係る画像形成装置１においては、ソフトウェアプログラムは、ＤＭＡＣ連動用バッファを管理する必要がない。従って、本実施形態に係る画像形成装置１は、ＤＭＡＣ連動におけるソフトウェアプログラムによる制御を簡略化することが可能となる。
【００９６】
一方、連動用バッファ割当部５１３は、Ｓ５０３における判定処理において、空きがないと判定した場合（Ｓ５０３／ＮＯ）、動作モードがウェイトモードであるかソフト制御モードであるかを判定する（Ｓ５０５）。この動作モードは予め、連動用バッファ割当部５１３に設定されているものとする。
【００９７】
連動用バッファ割当部５１３は、Ｓ５０５における判定処理において、動作モードがウェイトモードであると判定した場合（Ｓ５０５／ＮＯ）、ＤＭＡＣ連動用バッファに空きが出るまでＤＭＡＣを待機させ、ＤＭＡＣは、定期的にＳ５０３と同様の処理を行う。即ち、本実施形態においては、連動用バッファ割当部５１３が待機指示部として機能する。
【００９８】
一方、連動用バッファ割当部５１３は、Ｓ５０５における判定処理において、動作モードがソフト制御モードであると判定した場合（Ｓ５０５／ＹＥＳ）、連動用バッファ情報記憶部５１２を参照して、有効無効設定値が無効に設定されているＤＭＡＣ連動用バッファがあるか否かを判定する（Ｓ５０６）。
【００９９】
連動用バッファ割当部５１３は、Ｓ５０６における判定処理において、無効に設定されているＤＭＡＣ連動用バッファがあると判定した場合（Ｓ５０６／ＹＥＳ）、割込制御部５１０に対してそのＤＭＡＣ連動用バッファの使用要求を割り込み要因として通知する（Ｓ５０７）。そして、割込制御部５１０は、そのＤＭＡＣ連動用バッファの使用要求についての割り込みを発生して、シリアル通信部５０１を介してＣＰＵ１００に通知する。即ち、本実施形態においては、割込制御部５１０が割当割込発生部として機能する。
【０１００】
ＣＰＵ１００は、割込制御部５１０から割り込みが通知されると、ソフトウェアプログラムに従い、そのＤＭＡＣ連動用バッファを使用するか否かを判定する（Ｓ５０８）。
【０１０１】
ＣＰＵ１００は、Ｓ５０８における判定処理において、使用すると判定した場合（Ｓ５０８／ＹＥＳ）、連動用バッファ情報設定部５１１は、有効無効設定値が無効に設定されているＤＭＡＣ連動用バッファの連動用バッファ情報を連動用バッファ情報記憶部５１２に設定すると共に（Ｓ５０９）、有効無効設定値を有効に設定する（Ｓ５１０）。即ち、本実施形態においては、連動用バッファ情報設定部５１１が使用状態設定部として機能する。
【０１０２】
そして、ＣＰＵ１００は、ソフトウェアプログラムに従い、ＤＭＡＣ連動の対象となるＤＭＡＣを再度、連動モードで起動することで（Ｓ５１１）、連動モードで起動されたＤＭＡＣは、Ｓ５０２と同様の処理を行う。
【０１０３】
一方、連動用バッファ割当部５１３は、Ｓ５０６における判定処理において、無効に設定されているＤＭＡＣ連動用バッファがないと判定した場合（Ｓ５０６／ＮＯ）、割込制御部５１０に対してそのＤＭＡＣ連動用バッファに空きがないことを割り込み要因として通知する（Ｓ５１２）。そして、割込制御部５１０は、そのＤＭＡＣ連動用バッファに空きがないことについての割り込みを発生して、シリアル通信部５０１を介してＣＰＵ１００に通知する。
【０１０４】
ＣＰＵ１００は、割込制御部５１０から割り込みが通知されると、若しくは、Ｓ５０８における判定処理において、使用しないと判定した場合（Ｓ５０８／ＹＥＳ）、ソフトウェアプログラムに従い、ＡＳＩＣメモリ６００の他の領域からＤＭＡＣ連動用バッファを確保する（Ｓ５１３）。
【０１０５】
そして、ＣＰＵ１００は、ソフトウェアプログラムに従い、連動モードで起動されたＤＭＡＣに、確保したＤＭＡＣ連動用バッファの連動用バッファ情報を通知して（Ｓ５１４）、ＤＭＡＣ連動の対象となるＤＭＡＣを再度、連動モードで起動し（Ｓ５１５）、割り当て処理を終了する。
【０１０６】
このとき、ＣＰＵ１００は、ソフトウェアプログラムに従い、ソフトウェアプログラムの制御による連動モードでＤＭＡＣを起動する。従って、起動されたＤＭＡＣは、連動用バッファの割り当てを要求することなく、ソフトウェアプログラムの制御により、即ち、従来の方式でＤＭＡＣ連動を行う。
【０１０７】
これにより、本実施形態に係る画像形成装置１は、予め設定されたＤＭＡＣ連動用バッファを使用しない場合であっても、ソフトウェアプログラムの制御により、即ち、従来の方式でＤＭＡＣ連動を行うことが可能となる。
【０１０８】
以上、説明したように、本実施形態に係る画像形成装置１においては、ＡＳＩＣメモリ６００にＤＭＡＣ連動用バッファが予め設定されており、連動モードでＤＭＡＣが起動された場合、連動用バッファ割当部５１３は、使用するＤＭＡＣ連動用バッファの割り当て及びその連動用バッファ情報のＤＭＡＣへの通知を自動で行うようになっている。
【０１０９】
そのため、本実施形態に係る画像形成装置１においては、ソフトウェアプログラムは、ＤＭＡＣ連動用バッファを管理する必要がない。従って、本実施形態に係る画像形成装置１は、ＤＭＡＣ連動におけるソフトウェアプログラムによる制御を簡略化することが可能となる。
【０１１０】
尚、本実施形態においては、ＤＭＡＣ連動用バッファが予めＡＳＩＣメモリ６００に設定されている例について説明したが、この他、ＣＰＵメモリ２００に設定されていても良いし、その両方に設定されていても良い。
【０１１１】
また、本実施形態においては、コントローラＡＳＩＣ５００にＡＳＩＣメモリ６００が接続されて、そのＡＳＩＣメモリ６００にＤＭＡＣ連動用バッファが予め設定されている例について説明した。この他、コントローラＡＳＩＣ５００にＡＳＩＣメモリ６００が接続されておらず、ＣＰＵメモリ２００のみが接続されて、そのＣＰＵメモリ２００にＤＭＡＣ連動用バッファが予め設定されていても良い。
【０１１２】
尚、本実施形態においては、データ転送制御装置としてのコントローラＡＳＩＣ５００を備える画像形成装置を例にして説明したが、コントローラＡＳＩＣ５００を備えるＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等の情報処理装置であっても適用可能である。
【符号の説明】
【０１１３】
１  画像形成装置
１００  ＣＰＵ
２００  ＣＰＵメモリ
３００  ＲＯＭ
４００  ＨＤＤ
５００  コントローラＡＳＩＣ
５０１  シリアル通信部
５０２  メモリコントローラ
５０３  ＨＤＤ制御部
５０４  圧縮伸長部
５０５  編集部
５０６  ビデオ入力部
５０７  ビデオ出力部
５０８  バスアービタ
５０９  シリアル通信部
５１０  割込制御部
５１１  連動用バッファ情報設定部
５１２  連動用バッファ情報記憶部
５１３  連動用バッファ割当部
６００  ＡＳＩＣメモリ
７００  エンジンＡＳＩＣ
【先行技術文献】
【特許文献】
【０１１４】
【特許文献１】特開２００９−０２５８９６号公報
【図１】
2016103112.tif 000003
【図２】
2016103112.tif 000004
【図３】
2016103112.tif 000005
【図４】
2016103112.tif 000006
【図５】
2016103112.tif 000007