(57)【要約】【課題】メモリ帯域の利用率が大きくても緩衝バッファの緩衝機能によりリアルタイム処理を維持できる期間であるにも拘わらず、バスマスタのアクセス制限が発生していたため、装置全体の処理効率が低下する。【解決手段】メインメモリにアクセスする複数のバスマスタを有する画像処理装置であって、複数のバスマスタによる前記メインメモリへのアクセスを検知してバス帯域を取得し、リアルタイム処理が要求されるバスマスタと前記メインメモリとの間に設けられた緩衝バッファのデータ量を取得する。そして、取得した前記バス帯域が第１閾値を超え、且つ取得した前記緩衝バッファのデータ量と第２閾値との比較に応じて、複数のバスマスタの内、最も優先順位の低いバスマスタによる前記メインメモリへのアクセスを制限する。【選択図】  図１１
2019212027.tif 000002
【特許請求の範囲】
【請求項１】
メインメモリにアクセスする複数のバスマスタを有する画像処理装置であって、
前記複数のバスマスタによる前記メインメモリへのアクセスを検知してバス帯域を取得する帯域監視手段と、
リアルタイム処理が要求されるバスマスタと前記メインメモリとの間に設けられた緩衝バッファのデータ量を取得する取得手段と、
前記帯域監視手段が取得した前記バス帯域が第１閾値を超え、且つ前記取得手段が取得した前記緩衝バッファのデータ量と第２閾値との比較に応じて、前記複数のバスマスタの内、最も優先順位の低いバスマスタによる前記メインメモリへのアクセスを制限するよう制御する制御手段と、
を有することを特徴とする画像処理装置。
【請求項２】
前記リアルタイム処理が要求されるバスマスタは、スキャナからのデータを処理するバスマスタであり、
前記制御手段は、前記帯域監視手段が取得した前記バス帯域が第１閾値を超え、且つ前記取得手段が取得した前記緩衝バッファのデータ量が前記第２閾値よりも大きい場合に、前記複数のバスマスタの内、最も優先順位の低いバスマスタによる前記メインメモリへのアクセスを制限することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記リアルタイム処理が要求されるバスマスタは、プリンタに出力するデータを処理するバスマスタであり、
前記制御手段は、前記帯域監視手段が取得した前記バス帯域が第１閾値を超え、且つ前記取得手段が取得した前記緩衝バッファのデータ量が前記第２閾値よりも小さい場合に、前記複数のバスマスタの内、最も優先順位の低いバスマスタによる前記メインメモリへのアクセスを制限することを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記リアルタイム処理が必要な期間か否かを示す情報を設定する設定手段を更に有し、
前記制御手段は、前記情報が前記リアルタイム処理が必要な期間を示しているときに、前記制御を実行することを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記プリンタに出力するデータを格納する格納手段を更に有し、
前記設定手段は、前記格納手段から前記プリンタへのデータ転送の開始から、前記格納手段へ最終のデータの書き込むまでの間、前記情報を前記リアルタイム処理が必要な期間を示す情報に設定することを特徴とする請求項４に記載の画像処理装置。
【請求項６】
前記格納手段はリングバッファを有し、
前記リングバッファへのデータの書き込みを制御するライト制御手段と、前記リングバッファからのデータの読み出しを制御するリード制御手段とを、更に有し、
前記ライト制御手段は、前記リングバッファにデータを書き込むときの書き込み位置を示すライトポインタを有し、前記リード制御手段は、前記リングバッファからデータを読み出す位置を示すリードポインタを有し、前記ライト制御手段と前記リード制御手段は、前記リードポインタが前記ライトポインタを追いかけるように制御され、かつ、前記ライトポインタが前記リードポインタを追い越さないように制御されることを特徴とする請求項５に記載の画像処理装置。
【請求項７】
メインメモリにアクセスする複数のバスマスタを有する画像処理装置であって、
前記複数のバスマスタによる前記メインメモリへのアクセスを検知してバス帯域を取得する帯域監視手段と、
リアルタイム処理が要求されるバスマスタが、前記リアルタイム処理のためのデータを格納する格納手段と、
前記格納手段に格納されているデータ量を取得する取得手段と、
前記帯域監視手段が取得した前記バス帯域が第１閾値を超え、且つ前記取得手段が取得した前記データ量と第２閾値との比較に応じて、前記複数のバスマスタの内、最も優先順位の低いバスマスタによる前記メインメモリへのアクセスを制限するよう制御し、
前記取得手段が取得した前記データ量が前記第２閾値よりも大きい場合に、前記格納手段へのデータの書き込みを制限するように制御する制御手段と、
を有することを特徴とする画像処理装置。
【請求項８】
前記リアルタイム処理が要求されるバスマスタは、プリンタに出力するデータを処理するバスマスタであり、
前記制御手段は、前記帯域監視手段が取得した前記バス帯域が第１閾値を超え、且つ前記取得手段が取得した前記データ量が前記第２閾値に等しいか、それよりも小さい場合に、前記複数のバスマスタの内、最も優先順位の低いバスマスタによる前記メインメモリへのアクセスを制限することを特徴とする請求項７に記載の画像処理装置。
【請求項９】
前記リアルタイム処理が必要な期間か否かを示す情報を設定する設定手段を更に有し、
前記制御手段は、前記情報が前記リアルタイム処理が必要な期間を示しているときに、前記制御を実行することを特徴とする請求項８に記載の画像処理装置。
【請求項１０】
前記設定手段は、前記格納手段から前記プリンタへのデータ転送の開始から、前記格納手段へ最終のデータの書き込むまでの間、前記情報を前記リアルタイム処理が必要な期間を示す情報に設定することを特徴とする請求項９に記載の画像処理装置。
【請求項１１】
前記格納手段はリングバッファを有し、
前記リングバッファへのデータの書き込みを制御するライト制御手段と、前記リングバッファからのデータの読み出しを制御するリード制御手段とを、更に有し、
前記ライト制御手段は、前記リングバッファにデータを書き込むときの書き込み位置を示すライトポインタを有し、前記リード制御手段は、前記リングバッファからデータを読み出す位置を示すリードポインタを有し、前記ライト制御手段と前記リード制御手段は、前記リードポインタが前記ライトポインタを追いかけるように制御され、かつ、前記ライトポインタが前記リードポインタを追い越さないように制御されることを特徴とする請求項７乃至１０のいずれか１項に記載の画像処理装置。
【請求項１２】
メインメモリにアクセスする複数のバスマスタを有する画像処理装置を制御する制御方法であって、
前記複数のバスマスタによる前記メインメモリへのアクセスを検知してバス帯域を取得する帯域監視工程と、
リアルタイム処理が要求されるバスマスタと前記メインメモリとの間に設けられた緩衝バッファのデータ量を取得する取得工程と、
前記帯域監視工程で取得した前記バス帯域が第１閾値を超え、且つ前記取得工程で取得した前記緩衝バッファのデータ量と第２閾値との比較に応じて、前記複数のバスマスタの内、最も優先順位の低いバスマスタによる前記メインメモリへのアクセスを制限するよう制御する制御工程と、
を有することを特徴とする制御方法。
【請求項１３】
メインメモリにアクセスする複数のバスマスタを有する画像処理装置を制御する制御方法であって、
前記複数のバスマスタによる前記メインメモリへのアクセスを検知してバス帯域を取得する帯域監視工程と、
リアルタイム処理が要求されるバスマスタが、前記リアルタイム処理のためのデータをメモリに格納する格納工程と、
前記メモリに格納されているデータ量を取得する取得工程と、
前記帯域監視工程で取得した前記バス帯域が第１閾値を超え、且つ前記取得工程で取得した前記データ量と第２閾値との比較に応じて、前記複数のバスマスタの内、最も優先順位の低いバスマスタによる前記メインメモリへのアクセスを制限するよう制御し、
前記取得工程で取得した前記データ量が前記第２閾値よりも大きい場合に、前記メモリへのデータの書き込みを制限するように制御する制御工程と、
を有することを特徴とする制御方法。
【請求項１４】
コンピュータを、請求項１乃至１１のいずれか１項に記載の画像処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置とその制御方法、及びプログラムに関する。
【背景技術】
【０００２】
スキャナ機能、プリンタ機能、コピー機能などを兼備えるデジタル複合機のような画像処理装置が知られている。デジタル複合機の動作は、通常、画像処理や画像入出力制御を行うためのＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）が実装されたコントローラにより制御されている。
【０００３】
近年、小型化や低コスト化のために、ＣＰＵ及び各種機能を実現する複数の機能処理部を１つのＡＳＩＣに集約している。更に、ＣＰＵがワーク領域として使用するメモリと、各種機能を実現する際に画像データの転送に使用するメモリもメインメモリに集約されてきており、メインメモリへのデータアクセス量が非常に増大してきている。
【０００４】
更に、メインメモリへのデータアクセス量を増大させる要因として、スキャン性能及びプリント性能の高速化も挙げられる。スキャン、プリントといった処理は、一度動作を開始すると、少なくとも処理中のページの画像データの入出力が完了するまで、その動作を停止させることができないリアルタイム処理が必須な処理である。通常、このようなリアルタイム処理では、万が一、コントローラの一時的な処理速度の低下が発生しても、スキャナやプリンタとの間の画像データの転送を正常に継続可能にするために、データを一時保存するショートバッファを設けている。このショートバッファは、ＡＳＩＣ内のスキャン処理部やプリント処理部に実装される緩衝用バッファで、スキャナやプリンタとのデータ転送はこのショートバッファを介して行われる。
【０００５】
特許文献１には、各バスマスタの動作状態を監視し、得られるメモリ帯域の利用率がメモリ帯域制限値に達するとバスマスタのデータ転送を制限するバス調停部を有する画像処理装置が記載されている。更に引用文献１では、動的に複数バスマスタのメモリ帯域制限値を設定可能にする構成が記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１３−１９６６６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、スキャンやプリントのリアルタイム処理でのデータ転送は、メインメモリに対するバスのみならず、ショートバッファも経由する。例えば、特許文献１に記載の技術では、各バスマスタの動作状態のみを監視し、メモリ帯域の利用率が大きくなると、あるバスマスタのアクセスに制限が課せられる。このため、例えメモリ帯域の利用率が大きくても、ショートバッファの緩衝機能によりリアルタイム処理を維持できる期間であるにも拘わらず、バスマスタのアクセス制限が発生することになる。その結果、非リアルタイムの処理速度が低下してしまうという問題を生じていた。尚、このショートバッファの緩衝機能により、リアルタイム処理を維持できる期間とは、スキャン処理ではショートバッファに格納されるデータ量が少ない期間、プリント処理ではショートバッファに格納されるデータ量が多い期間のことである。
【０００８】
本発明の目的は、上記従来技術の問題点の少なくとも一つを解決することにある。
【０００９】
本発明の目的は、緩衝バッファによりリアルタイム処理を維持できるときはバスマスタのアクセス制限を行わないようにして、リアルタイム処理を維持しつつ、非リアルタイム処理の速度低下を最低限に抑えることにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するために本発明の一態様に係る画像処理装置は以下のような構成を備える。即ち、
メインメモリにアクセスする複数のバスマスタを有する画像処理装置であって、
前記複数のバスマスタによる前記メインメモリへのアクセスを検知してバス帯域を取得する帯域監視手段と、
リアルタイム処理が要求されるバスマスタと前記メインメモリとの間に設けられた緩衝バッファのデータ量を取得する取得手段と、
前記帯域監視手段が取得した前記バス帯域が第１閾値を超え、且つ前記取得手段が取得した前記緩衝バッファのデータ量と第２閾値との比較に応じて、前記複数のバスマスタの内、最も優先順位の低いバスマスタによる前記メインメモリへのアクセスを制限するよう制御する制御手段と、を有することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、バス帯域が所定値以上であっても、緩衝バッファの効果が発揮できているときは、優先順位の低いバスマスタのアクセス制限を回避できるため、装置の性能の低下を防止できる。
【００１２】
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。なお、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
【図面の簡単な説明】
【００１３】
添付図面は明細書に含まれ、その一部を構成し、本発明の実施形態を示し、その記述と共に本発明の原理を説明するために用いられる。
【図１】本発明の実施形態１に係る画像処理装置の構成を説明するブロック図。
【図２】メモリ帯域の算出例を示す図。
【図３】実施形態１に係る画像処理装置におけるスキャン処理部の構成を説明するブロック図。
【図４】実施形態１に係るバス調停部がバス調停に使用するバスマスタ管理テーブルの一例を示す図。
【図５】実施形態１に係る画像処理装置におけるバスマスタ管理テーブルの初期化処理を説明するフローチャート。
【図６】実施形態１に係る画像処理装置において、ジョブを開始するときのバス帯域制御処理を説明するフローチャート。
【図７】実施形態１に係る画像処理装置において、画像処理部による画像処理が終了するときの処理を説明するフローチャート。
【図８】実施形態１に係る画像処理装置において、帯域制御処理が必要かどうかを判定する処理を説明するフローチャート（Ａ）と、図８（Ａ）のＳ８０５のバスマスタのアクセス制御処理を説明するフローチャート（Ｂ）。
【図９】本発明の実施形態２に係る画像処理装置の構成を説明するブロック図。
【図１０】実施形態２に係る画像処理装置に係るプリント処理部の構成の例を説明するブロック図。
【図１１】実施形態２に係る画像処理装置において、帯域制御処理が必要かどうかを判定する処理を説明するフローチャート。
【図１２】実施形態３に係る画像処理装置におけるプリント処理部の構成を説明するブロック図。
【図１３】実施形態３に係る画像処理装置において、帯域制御処理が必要かどうかを判定する処理を説明するフローチャート。
【図１４】本発明の実施形態４に係る画像処理装置の構成を説明するブロック図。
【図１５】実施形態４に係る画像処理装置において、帯域制御処理が必要かどうかを判定する処理を説明するフローチャート。
【図１６】実施形態５に係る画像処理装置におけるプリント処理部の構成を説明するブロック図。
【図１７】実施形態５に係る画像処理装置において、帯域制御処理が必要かどうかを判定する処理を説明するフローチャート。
【図１８】実施形態６に係る画像処理装置におけるプリント処理部１７０の構成を説明するブロック図。
【図１９】施形態６に係る画像処理装置において、帯域制御処理が必要かどうかを判定する処理を説明するフローチャート。
【発明を実施するための形態】
【００１４】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１５】
まず実施形態の前提を簡単に説明する。スキャナからの画像データは一度ショートバッファに書き込まれ、スキャン処理部は、そのショートバッファから画像データを読み出して画像処理を施す。通常状態では、スキャン処理部がスキャナの転送速度と同程度の速度で画像データを処理できるので、ショートバッファに画像データが蓄積されることなく、ショートバッファの残留データ量は少ない状態となる。これに対して、例えば、メインメモリの一時的なバス帯域不足により、スキャン処理部がスキャナの転送速度を下回る速度でしか画像データを処理できない場合には、ショートバッファの残留データ量は徐々に増加する。しかしながら、このように一時的にバス帯域不足に陥っても、ショートバッファの緩衝機能により、スキャナからスキャン処理部へのデータ転送が途切れることはない。そして、一時的なバス帯域不足が解消されると、スキャン処理部は、ショートバッファに格納される画像データを、スキャナからの画像データの転送速度を上回る速度で処理できる。その結果、ショートバッファの残留データ量は徐々に減少し、ショートバッファに格納される残留データ量が少量の状態に落ち着く。
【００１６】
また、プリント処理部で処理が施された画像データは、一度ショートバッファに書き込まれ、ショートバッファから読み出された画像データがプリンタへ送出される。このときプリンタへデータ転送を開始する前に、プリント処理部は、ショートバッファを画像データで満たす。これはプリンタへのデータ転送開始直後に、データが途切れることを防ぐためである。通常状態では、プリント処理部がプリンタの転送速度と同程度の速度で画像データを処理できるので、ショートバッファから画像データが減少することなく、ショートバッファの残留データ量は多い状態のままとなる。しかし、メインメモリの一時的なバス帯域不足により、プリント処理部がプリンタの転送速度を下回る速度でしか画像データを処理できない場合には、ショートバッファの残留データ量は徐々に減少する。しかしながら、このように一時的にバス帯域不足に陥っても、ショートバッファの緩衝機能により、プリンタへの画像データの転送が途切れることはない。そして、一時的なバス帯域不足が解消されると、プリント処理部がプリンタへのデータ転送速度を上回る速度で画像データを処理してショートバッファに格納できる。その結果、ショートバッファの残留データ量は徐々に増加し、ショートバッファに格納される残留データ量が多い状態で落ち着く。
【００１７】
更に、プリント処理部は、大量のデータをバッファリングするために、メインメモリ上の領域をリングバッファとして利用する。プリント処理部は、処理を施した画像データを順次リングバッファ領域の先頭から書き込んでいき、リングバッファ領域の最後に画像データを書き込むと、リングバッファ領域の先頭から後続のデータで上書きしていくことを繰り返す。またプリント処理部は、リングバッファ領域の先頭から順次データを読み出し、そのデータをプリンタへ転送する。そしてプリント処理部はリングバッファ領域の最後からデータを読み出すと、次にリングバッファ領域の先頭からデータを読み出していくことを繰り返す。プリント処理部は、データを書き込むリングバッファ領域の位置を示すライトポインタと、データを読み出すリングバッファ領域の位置を示すリードポインタを有する。そしてプリント処理部は、リードポインタがライトポインタを追いかけるように制御し、かつ、ライトポインタがリードポインタを追い越さないように制御する。
【００１８】
これらを制御するコントローラでは、リアルタイム処理が必須な画像処理に対するメインメモリへのアクセスは常に一定の転送帯域を保証しつつ、非リアルタイム処理機能もできる限り並行して動作させる事が望ましい。即ち、コントローラは、リアルタイム処理が必須な画像処理に対するメインメモリへのアクセスの転送帯域が保証できなくなる状況が発生しないよう設計されている。
【００１９】
全ての機能を同時に動作させてもメモリへのアクセスの転送帯域が十分保証できるようにするには、高周波数で、多ビット幅のメモリ素子を使用し、かつ十分なメモリ転送性能を確保しなければならない。しかしながら、高周波数のメモリ素子を使用することは、メモリのコストアップ及び消費電力の増加を招き、また、多ビット幅のメモリを使用することは、チップのピン数増加によるチップ単価のコストアップにつながる。そこで、メモリの高周波数化及び多ビット化を抑制しつつ、リアルタイム処理機能のメインメモリへの転送帯域を確保する手法を提案する。このために、メインメモリに対する各バスマスタの動作状態を監視し、各バスマスタのアクセスを制御することも考えられる。以下、図を参照して実施形態を詳しく説明する。
【００２０】
［実施形態１］
図１は、本発明の実施形態１に係る画像処理装置の構成を説明するブロック図である。実施形態に係る画像処理装置は、画像処理や画像入出力制御を行うためのコントローラ（制御部）１０と、ユーザが各種の操作及び設定変更を行うための操作部１０５と、操作部１０５からの指示に従い原稿を読み取るスキャナ部１６１とを有する。スキャナ部１６１は、スキャナ部１６１を制御する図示しないＣＰＵや原稿読取を行うための図示しない照明ランプや走査ミラーなどを有する。
【００２１】
コントローラ１０は、ＣＰＵ１０１が実行するブートプログラムが格納されているＲＯＭ１０３を有し、ＣＰＵ１０１はＲＯＭＩ／Ｆ１０２を介してＲＯＭ１０３に格納されている内容を読み出す。またＣＰＵ１０１は、操作部Ｉ／Ｆ１０４を介して操作部１０５を制御し、ユーザの操作を検知する。更にコントローラ１０は、ＣＰＵ１０１が動作するためのシステムワークメモリであり、かつ画像データを一時記憶するための画像メモリでもあるメインメモリ１５２を有している。メモリコントローラ１５１は、ＣＰＵ１０１、スキャナ部１６１及び画像処理部１１１〜１１５からのメインメモリ１５２に対するアクセスを調停し、メインメモリ１５２に対してリード・ライトの制御を行う。コントローラ１０は、スキャナ部１６１から画像データを入力して処理し、処理した画像データをメインメモリ１５２に転送するスキャン処理部１６０を有する。
【００２２】
またコントローラ１０は、メインメモリ１５２から画像データを入力して画像処理を施し、処理した画像データをメインメモリ１５２に転送する画像処理部Ａ〜Ｅ（１１１〜１１５）を有する。これら画像処理部１１１〜１１５はバスマスタとなり、メインメモリ１５２に対して、読み出しや書き込みを行う。また、これら画像処理部１１１〜１１５のメインメモリ１５２に対するアクセスはバス調停部１３０により調停され、バス１４２を介して、メモリコントローラ１５１に伝えられる。尚、画像処理部が５個であることはあくまで一例にすぎない。更に、コントローラ１０は、メモリコントローラ１５１に接続されるバス１４１、バス１４２及びバス１４３の転送データ量を監視し、転送データの合計帯域を算出する帯域モニタ（帯域監視部）１５０を有する。
【００２３】
次に帯域モニタ１５０について説明する。メモリコントローラ１５１とメインメモリ１５２との間、即ちメモリコントローラ１５１のメモリ側の転送速度（メモリ帯域）は、メインメモリ１５２の動作周波数やデータビット幅、データ転送効率でほぼ決まる。データ転送効率とは、理論上の最大データ転送量に対する、実際に利用できるデータ転送量の割合である。一般的に、分散されたアドレスのアクセスが多い場合、データの転送効率は低く、連続するアドレスを順にアクセスすることが多い場合はデータ転送効率は高い。メモリ帯域の算出方法は、以下の式で表される。
【００２４】
メモリ帯域［ＭＢ／ｓ］＝（メモリ動作周波数［ＭＨｚ］）×（メモリバス幅［ビット］）×（メモリデータ転送効率［％］）／８
図２は、メモリ帯域の算出例を示す図である。
【００２５】
帯域モニタ１５０がバス１４１、バス１４２及びバス１４３の転送データ量を監視し、算出される転送データの合計帯域（バス帯域）がメモリ帯域を下回る場合には、各バスからのアクセスは遅延なくメインメモリ１５２にデータが送られる。一方、バス帯域の値がメモリ帯域の値に一致するか、或いは近い値の場合は、メモリコントローラ１５１のメモリ側のデータ転送量が限界に近い状態であり、各バスからのアクセスに対して、待ち時間が生じている可能性が大きい。よって、リアルタイム処理が要求されるバス１４３に接続されるスキャン処理部１６０のメインメモリ１５２に対するアクセス速度が低下し、スキャン処理で必要されるリアルタイム処理が破たんしかねない。
【００２６】
よって、メモリ帯域の値、又は、その値より少し小さい値を閾値として、帯域モニタ１５０が算出するバス帯域の値が、その閾値を超えた場合には、リアルタイム処理が破たんしないためのバス帯域制御が必要になるとして以下の説明する制御を行う。
【００２７】
図３は、実施形態１に係る画像処理装置におけるスキャン処理部１６０の構成を説明するブロック図である。
【００２８】
スキャン処理部１６０は、スキャナ部１６１からのデータを処理するスキャン画像処理部３０１と緩衝バッファとして使用するショートバッファ３０２を有する。スキャン処理部１６０は、スキャナ部１６１からの画像データを一度、ショートバッファ３０２に書き込む。またスキャン処理部１６０は、ショートバッファ３０２に画像データが格納されている限り、その画像データを読み出してスキャン画像処理部３０１へ送って画像処理を施す。更に、スキャン処理部１６０は、スキャン画像処理部３０１で処理された画像データを、バス１４３を介してメモリコントローラ１５１へ送る。
【００２９】
スキャン処理部１６０は、ショートバッファ３０２に格納されるデータ量を監視するショートバッファモニタ３０３を有する。ショートバッファモニタ３０３によるショートバッファ３０２に格納されるデータ量の監視は、例えば、ショートバッファモニタ３０３にショートバッファ３０２に格納されるデータ量を示すカウンタ（不図示）を設ける。そして、そのカウンタにより、ショートバッファ３０２に書き込むデータ量と、ショートバッファ３０２から読み出すデータ量を計測することで実現できる。このときショートバッファモニタ３０３は、データの書き込みを検知するとデータ量を示すカウンタをインクリメントし、データの読出しを検知するとカウンタをデクリメントする。そして、このカウンタの値をレジスタに割り付けて、ＣＰＵ１０１がそのレジスタをリードすることで、ショートバッファ３０２のデータ量を取得することができる。また、ショートバッファ３０２が、例えばＳＲＡＭで構成されていれば、次にデータを書き込むライトアドレスと、次にデータを読み出するアドレスとの差分から、ショートバッファ３０２に格納されているデータ量を取得してもよい。
【００３０】
図４は、実施形態１に係るバス調停部１３０がバス調停に使用するバスマスタ管理テーブルの一例を示す図である。尚、インデックスは、このバスマスタ管理テーブルの一部ではなく、後述するＣＰＵ１０１がバスマスタ管理テーブルを上から順に参照する処理を説明するためのものである。
【００３１】
ここではバスマスタＥが最も優先順位が高く、バスマスタＤが最も優先順位が低くなっている。また初期状態では、いずれのバスマスタも稼働中でなく、またアクセス制限も発生していない。
【００３２】
図５は、実施形態１に係る画像処理装置におけるバスマスタ管理テーブルの初期化処理を説明するフローチャートである。この処理は、画像処理装置の電源投入後のバスマスタ管理テーブルの初期化処理を示すフローチャートである。尚、このフローチャートで示す処理は、ＣＰＵ１０１がＲＯＭ１０３からメインメモリ１５２に展開したプログラムを実行することにより実行される。
【００３３】
まずＳ５０１でＣＰＵ１０１は、例えば図４に示すようなバスマスタ管理テーブルをメインメモリ１５２に作成する。このバスマスタ管理テーブルは、ＣＰＵ１０１が各バスマスタの使用状況を管理するためのものである。ここでＣＰＵ１０１は、優先順位が低い順、言い換えれば、リアルタイム処理に対する悪影響が少ない順にバスマスタ管理テーブルの行を作成する。
【００３４】
次にＳ５０２に進みＣＰＵ１０１は、そのバスマスタ管理テーブルの全てのバスマスタの「稼働中」の欄を「Ｎｏ」に初期化する。次にＳ５０３に進みＣＰＵ１０１は、そのバスマスタ管理テーブルの全てのバスマスタの「アクセス制限」の欄を「Ｎｏ」に初期化して、この処理を終了する。こうしてバスマスタ管理テーブルを作成し、初期化した状態を図４に示している。
【００３５】
図６は、実施形態１に係る画像処理装置において、ジョブを開始するときのバス帯域制御処理を説明するフローチャートで、操作部１０５からの指示により、ジョブが開始されるときに実行される処理のフローチャートである。尚、このフローチャートで示す処理は、ＣＰＵ１０１がＲＯＭ１０３からメインメモリ１５２に展開したプログラムを実行することにより実行される。
【００３６】
まずＳ６０１でＣＰＵ１０１は、操作部１０５から指示されたジョブから、そのジョブで使用するバスマスタを取得する。次にＳ６０２に進みＣＰＵ１０１は、バスマスタ管理テーブルの、Ｓ６０１で取得したバスマスタの「稼働中」の欄を「Ｙｅｓ」に更新する。次にＳ６０３に進みＣＰＵ１０１は、バスマスタ管理テーブルの、Ｓ６０１で取得したバスマスタの「アクセス制限」の欄を「Ｎｏ」に更新する。そしてＳ６０４に進みＣＰＵ１０１は、その指示されたジョブで使用されるバスマスタのアクセス制限を解除して、そのジョブに対応する画像処理部による画像処理を開始させる。対応するバスマスタのアクセス制限に関しては後述する。
【００３７】
こうして指示されたジョブに対応する画像処理と、対応するバスマスタによるメインメモリ１５２へのアクセスが実行される。
【００３８】
図７は、実施形態１に係る画像処理装置において、画像処理部による画像処理が終了するときの処理を説明するフローチャートで、各画像処理部１１１〜１１５からの処理終了割り込み等で、ある画像処理が終了した時点で実行される制御処理を説明する。尚、このフローチャートで示す処理は、ＣＰＵ１０１がＲＯＭ１０３からメインメモリ１５２に展開したプログラムを実行することにより実行される。
【００３９】
まずＳ７０１でＣＰＵ１０１は、割り込み要因などから、処理が終了した画像処理部を特定し、その画像処理部に対応するバスマスタを取得する。次にＳ７０２に進みＣＰＵ１０１は、バスマスタ管理テーブルにおける、Ｓ７０１で取得したバスマスタの「稼働中」の欄を「Ｎｏ」に更新して、この処理を終了する。
【００４０】
これにより、バスマスタ管理テーブルにおける、処理が終了したバスマスタの情報が更新される。
【００４１】
図８（Ａ）は、実施形態１に係る画像処理装置において、帯域制御処理が必要かどうかを判定する処理を説明するフローチャートで、帯域モニタ１５０が取得するバス帯域を監視するために、一定時間間隔で繰り返し実行される。尚、このフローチャートで示す処理は、ＣＰＵ１０１がＲＯＭ１０３からメインメモリ１５２に展開したプログラムを実行することにより実行される。
【００４２】
まずＳ８０１でＣＰＵ１０１は、帯域モニタ１５０が検出しているバス帯域値を取得する。次にＳ８０２に進みＣＰＵ１０１は、Ｓ８０１で取得したバス帯域値と第１の所定値（第１閾値）とを比較する。ここでバス帯域値が第１閾値を超えていれば、つまり、バスマスタのアクセス制限が必要かもしれない場合はＳ８０３に進み、そうでないときはこの処理フローを終了する。ここで、第１閾値とは前述した通り、メモリ帯域の値、或いは、その値より少し小さい値である。
【００４３】
Ｓ８０３でＣＰＵ１０１は、ショートバッファモニタ３０３からショートバッファ３０２に格納されている残留データ量を取得する。そしてＳ８０４に進みＣＰＵ１０１は、Ｓ８０３で取得した残留データ量と第２所定値（第２閾値）とを比較する。ここで残留データ量が第２閾値を超えていれば、つまり、バスマスタのアクセス制限が必要な場合はＳ８０５に進み、そうでないときはこの処理を終了する。このバス帯域を監視する処理は一定時間間隔で繰り返し実行されるが、この監視処理間でショートバッファ３０２がスキャナ部１６１からのデータにより溢れてはならない。この時間間隔とスキャナ部１６１のデータ転送速度から、監視処理間でショートバッファ３０２に転送されるデータ量がわかる。ここでの第２閾値は、ショートバッファ３０２の空き量が、この転送されるデータ量、或いは、それより大きい量となるような値とすればよい。
【００４４】
Ｓ８０５でＣＰＵ１０１は、優先順位の低いバスマスタのアクセスを制限する処理を行うが、この処理は図８（Ｂ）のフローチャートを参照して説明する。
【００４５】
図８（Ｂ）は、図８（Ａ）のＳ８０５のバスマスタのアクセス制御処理を説明するフローチャートである。
【００４６】
まずＳ８１０でＣＰＵ１０１は、バスマスタ管理テーブルを順に参照するための変数ＩＮＤＥＸ（メインメモリ１５２に設けられている）を「０」に初期化する。次にＳ８１１に進みＣＰＵ１０１は、バスマスタ管理テーブルを参照し、変数ＩＮＤＥＸの値に対応するバスマスタの「稼働中」と「アクセス制限」欄の内容を取得する。次にＳ８１２に進みＣＰＵ１０１は、「稼働中」が「Ｙｅｓ」で、かつ「アクセス制限」が「Ｎｏ」であるかを判定する。ここで「稼働中」が「Ｙｅｓ」で、かつ「アクセス制限」が「Ｎｏ」であれば、そのバスマスタは実際に稼働しているためＳ８１３へ進み、そうでないときはＳ８１５に進む。
【００４７】
Ｓ８１３でＣＰＵ１０１は、バスマスタ管理テーブルにおける、変数ＩＮＤＥＸの値に対応するバスマスタの「アクセス制限」欄を「Ｙｅｓ」に更新する。そしてＳ８１４に進みＣＰＵ１０１は、バスマスタ管理テーブルにおける、変数ＩＮＤＥＸの値に対応するバスマスタのアクセスを制限して、この処理を終了する。この場合のアクセス制限は、画像処理部１１１〜１１５にアクセス制限を指示するレジスタを設け、アクセス制限を指示された画像処理部１１１〜１１５は、対応するバス１２１〜１２５に対するアクセス間隔を広げることで実現できる。またバス調停部１３０のバス１２１〜１２５に対する調停優先度を制御する、即ち、アクセスを制限したいバスマスタのバスに対する調停の優先度を下げることで、アクセス制限を行ってもよい。
【００４８】
一方、Ｓ８１２でＣＰＵ１０１が「稼働中」が「Ｎｏ」、又は「アクセス制限」が「Ｙｅｓ」であると判定した場合はＳ８１５へ処理を進める。Ｓ８１５でＣＰＵ１０１は、次にバスマスタの情報を参照するために変数ＩＮＤＥＸをインクリメントする。そしてＳ８１６に進みＣＰＵ１０１は、変数ＩＮＤＥＸの値とバスマスタ管理テーブルに登録されたバスマスタの数とを比較する。ここで変数ＩＮＤＥＸの値がバスマスタの数より小さい場合、つまりバスマスタ管理テーブルに参照していないバスマスタがある場合はＳ８１１へ戻り、バスマスタ管理テーブルの参照を続ける。一方、そうでないときは、この処理を終了する。
【００４９】
このようにバスマスタのアクセス制御処理において、優先順位の最も低いバスマスタから、そのバスマスタの稼働状態とアクセス制限の有無を調べ、稼働中でアクセス制限がなされていないバスマスタをアクセス制御処理の対象として決定する。そしてその決定されたバスマスタに対してアクセス制御処理を実行する。
【００５０】
以上に説明したように実施形態１によれば、帯域モニタが検知しているバス帯域の値が、例え、閾値を超えていたとしても、リアルタイム処理が要求されるショートバッファの残留データ量が閾値を超えなければバスマスタのアクセス制限は行われない。その結果、無駄なバスマスタのアクセス制限が抑えられ、画像処理装置の性能低下が抑えられる。
【００５１】
また、バスマスタのアクセス制限を行う際、バスマスタ管理テーブルを参照して、アクセス制限を行う対象のバスマスタを決定する。これにより、稼働中でアクセス制限が課せられていないバスマスタのうち、最も優先順位の低いバスマスタを、アクセス制限を行う対象のバスマスタとして決定できる。
【００５２】
［実施形態２］
図９は、本発明の実施形態２に係る画像処理装置の構成を説明するブロック図である。実施形態１に係る画像処理装置の装置構成との相違点はスキャナ部がなく、プリンタ部１７１が存在する点である。
【００５３】
実施形態２に係る画像処理装置は、画像処理や画像入出力制御を行うためのコントローラ１０と、ユーザが各種の操作及び設定変更を行うための操作部１０５と、操作部１０５からの指示に従い画像データを用紙に印刷するプリンタ部１７１とを有する。プリンタ部１７１は、プリンタ部１７１の制御を行う図示しないＣＰＵや画像形成や定着を行うための図示しない感光体ドラムや定着器を有する。コントローラ１０は、メインメモリ１５２に格納される画像データを処理し、プリンタ部１７１へ画像データを転送するプリント処理部１７０を有する。その他の構成は、前述の実施形態１に係る画像処理装置の装置構成と同じであるため、それらの説明を省略する。
【００５４】
図１０は、実施形態２に係る画像処理装置に係るプリント処理部１７０の構成の例を説明するブロック図である。
【００５５】
プリント処理部１７０は、バス１４４を介してメモリコントローラ１５１から受け取った画像データを処理するプリント画像処理部１００１を有する。また、プリント処理部１７０は、プリント画像処理部１００１からの画像データをメインメモリ１５２上のリングバッファ領域に書き込むリングバッファライト制御部１００２を有する。更に、リングバッファ領域に格納された画像データを読み出すリングバッファリード制御部１００３を有する。またプリント処理部１７０は、緩衝バッファとして使用するショートバッファ１００４を有し、リングバッファリード制御部１００３でリングバッファから読み出された画像データは、ショートバッファ１００４を介してプリンタ部１７１へ送られる。
【００５６】
リングバッファライト制御部１００２はライトポインタを、リングバッファリード制御部１００３はリードポインタを有し、リングバッファライト制御部１００２はリードポインタを、リングバッファリード制御部１００３はライトポインタをそれぞれ参照する。リングバッファライト制御部１００２は、ライトポインタとリードポインタの値から、リングバッファ領域に空きが存在すると判断するとリングバッファ領域にデータを書き込む。一方、リングバッファリード制御部１００３は、ライトポインタとリードポインタの値から、リングバッファ領域にデータが存在すると判断したときにデータを読み出す。このとき、リードポインタがライトポインタを追いかけるように制御され、かつライトポインタがリードポインタを追い越さないように制御される。
【００５７】
更に、プリント処理部１７０は、ショートバッファ１００４に格納されるデータ量を監視するショートバッファモニタ１００５を有する。ショートバッファ１００４に格納されるデータ量の監視は、例えば、ショートバッファモニタ１００５内にデータ量を示すカウンタ（不図示）を設け、ショートバッファ１００４に対するデータの書き込みと読み出しを監視することで実現する。このときショートバッファモニタ１００５は、ライトの検知でデータ量を示すカウンタをインクリメントし、リードの検知でカウンタをデクリメントする。そして、このカウンタの値をレジスタに割り付けて、ＣＰＵ１０１がそのレジスタをリードすることで知ることができる。
【００５８】
また、ショートバッファ１００４がＳＲＡＭで構成されていれば、次にライトすべきライトアドレスと次にリードすべきリードアドレスの差から、ショートバッファ１００４に格納されるデータ量を算出してもよい。
【００５９】
図１１は、実施形態２に係る画像処理装置において、帯域制御処理が必要かどうかを判定する処理を説明するフローチャートで、帯域モニタ１５０が取得するバス帯域を監視するために、一定時間間隔で繰り返し実行される。尚、このフローチャートで示す処理は、ＣＰＵ１０１がＲＯＭ１０３からメインメモリ１５２に展開したプログラムを実行することにより実行される。尚、実施形態２における、電源投入後のバス帯域制御処理に関する初期化の制御フローは図５に示す実施形態１に係る画像処理装置と同じである。また実施形態２における、操作部１０５からの指示により、ジョブが開始されるときに実行される制御フローは図６の実施形態１に係る画像処理装置と同じである。更に実施形態２における、各画像処理部１１１〜１１５からの処理終了割り込み等で、ある画像処理が終了した時点で実行される制御フローは図７の実施形態１に係る画像処理装置と同じである。
【００６０】
次に図１１のフローチャートを用いて、帯域モニタ１５０で算出されるバス帯域を監視するために、一定時間間隔で繰り返し実行される制御フローを説明する。同図で、Ｓ１１０３とＳ１１０４が、前述の実施形態１とは異なる処理である。
【００６１】
まずＳ１１０１でＣＰＵ１０１は、帯域モニタ１５０からバス帯域値を取得する。次にＳ１１０２に進みＣＰＵ１０１は、Ｓ１１０１で取得したバス帯域値と第１閾値とを比較する。ここでバス帯域値が第１閾値を超えていれば、つまり、バスマスタのアクセス制限が必要かもしれない場合はＳ１１０３へ処理を進め、そうでないときはこの処理を終了する。ここで、第１閾値は、前述した通り、メモリ帯域の値、或いは、その値より少し小さい値である。
【００６２】
Ｓ１１０３でＣＰＵ１０１は、ショートバッファモニタ１００５からショートバッファ１００４に格納された残留データ量を取得する。次にＳ１１０４に進みＣＰＵ１０１は、残留データ量と第２閾値とを比較する。ここで残留データ量が第２閾値を下回っていれば、つまり、バスマスタのアクセス制限が必要な場合はＳ１１０５へ処理を進め、そうでないときは、この処理を終了する。このバス帯域を監視する処理は一定時間間隔で繰り返し実行されるが、この監視処理間でプリンタ部１７１に出力するデータをショートバッファ１００４から絶やしてはならない。この時間間隔とプリンタ部１７１のデータ転送速度から、監視処理間でショートバッファ１００４から読み出されるデータ量がわかる。ここでの第２閾値は、ショートバッファ１００４のデータ量がこの読み出されるデータ量か、それより大きい量となるような値とすればよい。
【００６３】
Ｓ１１０５でＣＰＵ１０１は、優先順位の低いバスマスタのアクセスを制限する処理を行うが、この処理は図８（Ｂ）を参照して説明した処理と同じである。尚、実施形態２における第１閾値及び第２閾値は、前述の実施形態１の第１閾値及び第２閾値と同じであってもよく、或いは互いに異なる値であってもよい。
【００６４】
以上に説明したように実施形態２によれば、帯域モニタからのバス帯域の値が、例え閾値を超えていたとしても、プリンタに出力するデータを一時保存する緩衝バッファのデータ量が閾値を下回らなければ、バスマスタのアクセス制限は行われない。その結果、無駄なバスマスタのアクセス制限が抑えられ、画像処理装置の性能低下が抑えられる。
【００６５】
また、バスマスタのアクセス制限を行う際、バスマスタ管理テーブルを参照してアクセス制限を行うバスマスタを決定する。これにより、稼働中でアクセス制限が課せられていないバスマスタのうち、帯域制限の対象となるバスマスタとして最も優先順位の低いバスマスタを決定できる。
【００６６】
［実施形態３］
本発明の実施形態３に係る画像処理装置の装置構成は、実施形態２に係る画像処理装置の装置構成と同じである。
【００６７】
実施形態２に係る画像処理装置で、プリント動作が行われていない場合、プリント処理部１７０内のショートバッファ１００４はエンプティ（格納されたデータ量がゼロ）である。プリント動作が行われていない、即ち、リアルタイム処理が行われていないならば、当然バスマスタの制限を行うべきではない。しかしながら、図１１のフローチャートで明らかなように、帯域モニタ１５０のバス帯域値が閾値を超えていると、プリント動作が行われていない場合、Ｓ１１０４からＳ１００５に分岐してしまい、バスマスタ・アクセス制限処理が実行されてしまう。実施形態３の画像処理装置は、このような問題を解決する。
【００６８】
まず、ショートバッファ１００４がプリント画像処理部１００１により画像データで満たされた後に、プリンタ部１７１へのデータ転送を開始する。これはデータ転送開始直後に、データ転送が途切れることを防ぐためである。つまり、プリンタ部１７１へのデータ転送を開始するまでは、ショートバッファ１００４の残留データ量を気にすることはない。
【００６９】
また、プリンタ部１７１へのデータ転送中で、ページの最後の画像データ、つまり、プリンタ部１７１へのデータ転送の最終データがショートバッファ１００４に書き込まれた後は、ショートバッファ１００４の残留データ量はゼロに向かって減少していく。しかしながら、この場合、ショートバッファ１００４の残留データ量の減少によって、プリンタ部１７１へのデータ転送が途切れることはない。
【００７０】
図１２は、実施形態３に係る画像処理装置におけるプリント処理部１７０の構成を説明するブロック図である。尚、図１２において、前述の図１０の構成と共通する部分は同じ参照番号で示し、それらの説明を省略する。
【００７１】
プリント処理部１７０は、バス１４４を介してメモリコントローラ１５１から受け取った画像データを処理するプリント画像処理部１００１を有する。プリント処理部１７０は、プリント画像処理部１００１からの画像データをメインメモリ１５２のリングバッファ領域に書き込むリングバッファライト制御部１００２とリングバッファ領域に格納された画像データを読み出すリングバッファリード制御部１００３を有する。プリント処理部１７０は、緩衝バッファとして使用するショートバッファ１００４を有し、リングバッファリード制御部１００３でリングバッファから読み出された画像データはショートバッファ１００４を介してプリンタ部１７１へ送られる。
【００７２】
リングバッファライト制御部１００２はライトポインタを、リングバッファリード制御部１００３はリードポインタをそれぞれ有する。そしてリングバッファライト制御部１００２はリードポインタを、リングバッファリード制御部１００３はライトポインタをそれぞれ参照する。リングバッファライト制御部１００２はライトポインタとリードポインタの値から、リングバッファ領域に空きが存在すると判断したときにデータを書き込む。一方、リングバッファリード制御部１００３はライトポインタとリードポインタの値から、リングバッファ領域にデータが存在すると判断したときにデータを読み出す。このとき、リードポインタがライトポインタを追いかけるように制御され、かつライトポインタがリードポインタを追い越さないように制御される。
【００７３】
プリント処理部１７０は、ショートバッファ１００４に格納されるデータ量を監視するショートバッファモニタ１００５を有する。ショートバッファ１００４に格納されるデータ量を監視は、例えば、ショートバッファモニタ１００５内にデータ量を示すカウンタ（不図示）を設け、ショートバッファ１００４に対するデータのライトとリードを監視することで実現する。もちろん、ショートバッファモニタ１００５は、データの書き込みの検知でデータ量を示すカウンタをインクリメントし、データの読出しの検知でカウンタをデクリメントする。そして、このカウンタの値をレジスタに割り付けて、ＣＰＵ１０１がそのレジスタを読み出すことで、格納されているデータ量を取得できる。また、ショートバッファ１００４がＳＲＡＭで構成されていれば、次にライトすべきライトアドレスと次にリードすべきリードアドレスの差から、ショートバッファ１００４に格納されているデータ量を取得してもよい。
【００７４】
更に、プリント処理部１７０は、実施形態３の特徴であるプリンタ部１７１のデータ転送状態を監視するデータ転送状態監視部１２０１を有する。データ転送状態監視部１２０１はリアルタイム処理が必要な期間か否かのリアルタイムフラグ（不図示）を内部に有し、ＣＰＵ１０１は所定のレジスタをリードすることでそれを知ることができる。
【００７５】
転送状態監視部１２０１は、最初、リアルタイムフラグを「０」に初期化する。転送状態監視部１２０１は、プリンタ部１７１のデータ転送の開始を示す信号を参照し、データ転送開始を検知すると、リアルタイムフラグを「１」にセットする。そして転送状態監視部１２０１は、リングバッファリード制御部１００３から、ページの最終データをショートバッファ１００４に書き込み通知信号を受け、ページの最終データの書き込みで、リアルタイムフラグを「０」に戻す。このようにして転送状態監視部１２０１がリアルタイムフラグを制御することで、リアルタイム処理が必要な期間のみリアルタイムフラグが「１」となる。
【００７６】
図１３は、実施形態３に係る画像処理装置において、帯域制御処理が必要かどうかを判定する処理を説明するフローチャートで、帯域モニタ１５０が取得するバス帯域を監視するために、一定時間間隔で繰り返し実行される。尚、このフローチャートで示す処理は、ＣＰＵ１０１がＲＯＭ１０３からメインメモリ１５２に展開したプログラムを実行することにより実行される。尚、電源投入後のバス帯域制御処理に関する初期化の制御は、図５の実施形態１に係るフローチャートと同じである。また、操作部１０５からの指示により、ジョブが開始されるときに実行される制御は、図６の実施形態１に係るフローチャートと同じである。更に、各画像処理部１１１〜１１５からの処理終了割り込み等で、ある画像処理が終了した時点で実行される制御は、図７の実施形態１に係るフローチャートと同じである。
【００７７】
次に図１３のフローチャートを参照して、帯域モニタ１５０で算出されるバス帯域を監視するために、一定時間間隔で繰り返し実行される制御を説明する。同図で、実施形態２との差異はＳ１３０３とＳ１３０４の処理が追加されている点にある。
【００７８】
Ｓ１３０１でＣＰＵ１０１は、帯域モニタ１５０からバス帯域値を取得する。次にＳ１３０２に進みＣＰＵ１０１は、バス帯域値と第１閾値と比較する。バス帯域値が第１閾値を超えていれば、つまり、バスマスタのアクセス制限が必要かもしれない場合はＳ１３０３へ処理を進め、そうでないときは、この処理を終了する。ここで、第１閾値とは前述した通り、メモリ帯域の値、或いは、その値より少し小さい値である。
【００７９】
Ｓ１３０３でＣＰＵ１０１は、データ転送状態監視部１２０１からリアルタイムフラグの内容を取得する。次にＳ１３０４に進みＣＰＵ１０１は、リアルタイムフラグの内容が「１」であるか否かを判定する。リアルタイムフラグの内容が「１」、即ち、リアルタイム処理が必要な場合はＳ１３０５へ処理を進め、そうでないときはこの処理フローを終了する。
【００８０】
Ｓ１３０５でＣＰＵ１０１は、ショートバッファ１００４に格納された残留データ量を取得する。次にＳ１３０６に進みＣＰＵ１０１は、残留データ量と第２閾値とを比較する。ここで残留データ量が第２閾値を下回っていれば、つまり、バスマスタのアクセス制限が必要な場合はＳ１３０７へ処理を進め、そうでないときは、この処理フローを終了する。バス帯域を監視する処理は一定時間間隔で繰り返し実行されるが、この監視処理間でプリンタ部１７１へのデータをショートバッファ１００４から絶やしてはならない。この時間間隔とプリンタ部１７１のデータ転送速度から、監視処理間でショートバッファ１００４から読み出されるデータ量がわかる。ここでの閾値は、ショートバッファ１００４のデータ量がこの読み出されるデータ量か、それより大きい量となるような値とすればよい。Ｓ１３０７でＣＰＵ１０１は、優先順位の低いバスマスタのアクセスを制限する処理を行うが、この処理は図８（Ｂ）の処理と同じである。
【００８１】
以上に説明したように実施形態３によれば、帯域モニタからのバス帯域の値が、例え、閾値を超えていたとしても、プリント処理でリアルタイム性が要求されない期間であれば、バスマスタのアクセス制限は行われない。更に、プリント処理でリアルタイム性が要求される期間であっても、緩衝バッファの残留データ量が閾値を下回らなければ、バスマスタのアクセス制限は行われない。その結果、無駄なバスマスタのアクセス制限が抑えられることにより、画像処理装置の性能低下が抑えられる。また、バスマスタのアクセス制限を行う際、バスマスタ管理テーブルを参照してアクセス制限を行うバスマスタを決定する。これにより、稼働中でアクセス制限が課せられていないバスマスタのうち、最も優先順位の低いバスマスタを選択できる。尚、実施形態３における第１閾値及び第２閾値は、前述の実施形態１の第１閾値及び第２閾値と同じであってもよく、或いは互いに異なる値であってもよい。
【００８２】
［実施形態４］
図１４は、本発明の実施形態４に係る画像処理装置の構成を説明するブロック図である。実施形態４に係る画像処理装置と、実施形態１や実施形態２に係る画像処理装置の構成との相違点は、スキャナ部１６１とプリンタ部１７１の両方が存在する点である。ここで前述の実施形態１〜３に係る画像処理装置の構成の構成と共通する部分は同じ参照番号で示し、それらの説明を省略する。
【００８３】
図１５は、実施形態４に係る画像処理装置において、帯域制御処理が必要かどうかを判定する処理を説明するフローチャートで、帯域モニタ１５０が取得するバス帯域を監視するために、一定時間間隔で繰り返し実行される。尚、このフローチャートで示す処理は、ＣＰＵ１０１がＲＯＭ１０３からメインメモリ１５２に展開したプログラムを実行することにより実行される。尚、電源投入後のバス帯域制御処理に関する初期化の制御は図５のフローチャートと同じである。また、操作部１０５からの指示により、ジョブが開始されるときに実行される制御は、図６のフローチャートと同じである。更に、各画像処理部１１１〜１１５からの処理終了割り込み等で、ある画像処理が終了した時点で実行される制御は、図７のフローチャートと同じである。
【００８４】
次に図１５のフローチャートを参照して、帯域モニタ１５０で算出されるバス帯域を監視するために、一定時間間隔で繰り返し実行される制御フローを説明する。同図で、Ｓ１５０３からＳ１５０６が、前述の実施形態１や実施形態２とは異なる処理である。
【００８５】
Ｓ１５０１でＣＰＵ１０１は、帯域モニタ１５０からバス帯域値を取得する。次にＳ１５０２に進みＣＰＵ１０１は、取得したバス帯域値と第１閾値とを比較する。ここでバス帯域値が第１閾値を超えていれば、つまり、バスマスタのアクセス制限が必要かもしれない場合はＳ１５０３へ移行し、そうでないときは、この処理フローを終了する。ここで、第１閾値とは前述した通り、メモリ帯域の値、或いはその値より少し小さい値である。
【００８６】
Ｓ１５０３でＣＰＵ１０１は、スキャン処理部１６０のショートバッファ３０２に格納された残留データ量を取得する。次にＳ１５０４に進みＣＰＵ１０１は、残留データ量と第２閾値とを比較する。ここで残留データ量が第２閾値を超えていれば、つまり、バスマスタのアクセス制限が必要な場合はＳ１５０７へ移行し、バスマスタ・アクセス制限処理が行われる。そうでないときは次のステップへ進む。
【００８７】
Ｓ１５０４で残留データ量が第２閾値を超えていなければＳ１５０５に進みＣＰＵ１０１は、プリント処理部１７０のショートバッファ１００４に格納された残留データ量を取得する。そしてＳ１５０６でＣＰＵ１０１は、残留データ量と第３閾値とを比較する。ここで残留データ量が第３閾値を下回っていれば、つまり、バスマスタのアクセス制限が必要な場合はＳ１５０７へ進み、そうでないときは、この処理を終了する。Ｓ１５０７でＣＰＵ１０１は、優先順位の低いバスマスタのアクセスを制限する処理を行うが、この処理は図８（Ｂ）を参照して説明した処理と同じである。
【００８８】
尚、ここで、第１〜第２閾値は、前述の実施形態における第１及び第２閾値と同じであっても、或いは異なってもよい。また第３閾値も、前述の実施形態における第１及び第２閾値と同じであっても、或いは異なってもよい。
【００８９】
以上に説明したように実施形態４によれば、帯域モニタからのバス帯域の値が閾値を超えていたとしても、スキャン処理部のショートバッファの残留データ量が閾値を超えなくて、かつ、プリント処理部のショートバッファの残留データ量が閾値を下回らなければ、バスマスタのアクセス制限は行われない。その結果、無駄なバスマスタのアクセス制限が抑えられ、画像処理装置の性能低下が抑えられる。
【００９０】
また、バスマスタのアクセス制限を行う際、バスマスタ管理テーブルを参照してアクセス制限を対象のバスマスタを決定する。これにより、稼働中でアクセス制限が課せられていないバスマスタのうち、最も優先順位の低いバスマスタを、帯域制限の対象のバスマスタとして選択できる。
【００９１】
［実施形態５］
次に本発明の実施形態５を説明する。実施形態５に係る画像処理装置の構成は、前述の実施形態２に係る画像処理装置の構成と同じであるため、その説明を省略する。
【００９２】
図１６は、実施形態５に係る画像処理装置におけるプリント処理部１７０の構成を説明するブロック図である。図１６において、前述の実施形態２に係るプリント処理部１７０の構成と共通する部分は同じ参照番号で示し、それらの説明を省略する。
【００９３】
このプリント処理部１７０は、リングバッファ領域に格納されるデータ量を監視するリングバッファモニタ１６０１を有している。リングバッファ領域に格納されるデータ量は、リングバッファライト制御部１００２とリングバッファリード制御部１００３が持つライトポインタとリードポインタの値から計算できる。そして、この計算値をレジスタに割り付けて、ＣＰＵ１０１がそのレジスタをリードすることでリングバッファ領域に格納されるデータ量を知ることができる。
【００９４】
実施形態５に係る画像処理装置における、電源投入後のバス帯域制御処理に関する初期化の制御は図５のフローチャートと同じである。また、操作部１０５からの指示により、ジョブが開始されるときに実行される制御は、図６のフローチャートと同じである。更に、各画像処理部１１１〜１１５からの処理終了割り込み等で、ある画像処理が終了した時点で実行される制御は、図７のフローチャートと同じである。
【００９５】
図１７は、実施形態５に係る画像処理装置において、帯域制御処理が必要かどうかを判定する処理を説明するフローチャートで、帯域モニタ１５０が取得するバス帯域を監視するために、一定時間間隔で繰り返し実行される。尚、このフローチャートで示す処理は、ＣＰＵ１０１がＲＯＭ１０３からメインメモリ１５２に展開したプログラムを実行することにより実行される。
【００９６】
まずＳ１７０１でＣＰＵ１０１は、帯域モニタ１５０からバス帯域値を取得する。次にＳ１７０２に進みＣＰＵ１０１は、Ｓ１７０１で取得したバス帯域値と第１閾値とを比較する。ここでバス帯域値が第１閾値を超えていれば、つまり、バスマスタのアクセス制限が必要かもしれない場合はＳ１７０３に進み、そうでないときは、この処理を終了する。ここで、第１閾値とは前述した通り、メモリ帯域の値、或いは、その値より少し小さい値である。
【００９７】
Ｓ１７０３でＣＰＵ１０１は、リングバッファモニタ１６０１からリングバッファ領域に格納されている残留データ量を取得する。そしてＳ１７０４に進みＣＰＵ１０１は、その残留データ量と第２閾値とを比較するここで。残留データ量が第２閾値を超えていれば、即ち、リングバッファ領域に十分なデータ格納されている場合はＳ１７０５に進み、そうでないときはＳ１７０６に進んで、前述の図８（Ｂ）のフローチャートで示す処理を実行する。
【００９８】
Ｓ１７０５でＣＰＵ１０１は、リングバッファ領域へのライトアクセスを制限する。このライトアクセスの制限は、リングバッファライト制御部１００２にアクセス制限を指示するレジスタを設け、アクセス制限を指示されたリングバッファライト制御部１００２はライトアクセスの間隔を広げることで実現できる。またメモリコントローラ１５１のバス１４４のライトに対する調停優先度を制御することで、アクセス制限を行ってもよい。
ステップＳ８０６では、ＣＰＵ１０１が優先順位の低いバスマスタのアクセスを制限する処理を行うが、この処理は図８のステップＳ８０６１からステップＳ８０６７ショートで行われる。
【００９９】
以上に説明したように実施形態５によれば、帯域モニタ１５０で検出されたバス帯域の値が閾値を超えたとき、リングバッファ領域の残留データ量が閾値を超えていればバスマスタのアクセス制限は行われない。その代わりにリングバッファ領域へのライトアクセスを制限することにより、バス帯域の値を下げるが、非リアルタイム処理の速度を低下させることはない。その結果、バスマスタの無駄なアクセス制限が抑えられ、画像処理装置の性能低下が抑えられる。また、バスマスタのアクセス制限を行う際、バスマスタ管理テーブルを参照して、アクセス制限を行うバスマスタを決定する。これにより、稼働中、でアクセス制限が課せられていないバスマスタの内、最も優先順位の低いバスマスタをアクセス制限の対象バスマスタとして決定することができる。尚、実施形態５における第１閾値及び第２閾値は、前述の実施形態の第１閾値及び第２閾値と同じであってもよく、或いは互いに異なる値であってもよい。
【０１００】
［実施形態６］
図１８は、実施形態６に係る画像処理装置におけるプリント処理部１７０の構成を説明するブロック図である。図１８において、前述の実施形態５に係る図１６のプリント処理部１７０の構成と共通する部分は同じ参照番号で示し、それらの説明を省略する。
【０１０１】
前述の実施形態に係る画像処理装置において、プリント動作の開始時点では、リングバッファ領域はエンプティ（格納されたデータ量がゼロ）である。プリント動作が行われていない、即ち、リアルタイム処理が行われていないならば、当然バスマスタの制限を行うべきではない。しかしながら、図１７のフローチャートで明らかなように、帯域モニタ１５０のバス帯域値が閾値を超えていると、プリント動作が行われていない場合はＳ１７０４に分岐してしまい、バスマスタ・アクセス制限処理が実行されてしまう。実施形態６に係る画像処理装置は、このような問題を解決する。
【０１０２】
リングバッファ領域がプリント画像処理部１００１からの画像データで満たされた後に、プリンタ部１７１へのデータ転送を開始する。これはデータ転送開始直後に、データ転送が途切れることを防ぐためである。つまり、プリンタ部１７１へのデータ転送を開始するまでは、リングバッファ領域の残留データ量を気にすることはない。プリンタ部１７１へのデータ転送中で、ページの最後の画像データ、つまり、プリンタ部１７１へのデータ転送の最終データがリングバッファ領域に書き込まれた後は、リングバッファ領域の残留データ量はゼロに向かって減少していく。しかしながら、この場合、リングバッファ領域の残留データ量の減少によって、プリンタ部１７１へのデータ転送が途切れることはない。図１８では、図１６のプリント処理部１７０の構成にデータ転送状態監視部１８０１が追加されている。
【０１０３】
プリント処理部１７０は、リングバッファ領域に格納されるデータ量を監視するリングバッファモニタ１６０１を有する。リングバッファ領域に格納されるデータ量はリングバッファライト制御部１００２とリングバッファリード制御部１００３が持つライトポインタとリードポインタの値から計算できる。そして、この計算値をレジスタに割り付けて、ＣＰＵ１０１がそのレジスタをリードすることでリングバッファに格納されるデータ量を知ることができる。更にプリント処理部１７０は、プリンタ部１７１のデータ転送状態を監視するデータ転送状態監視部１８０１を有する。データ転送状態監視部１８０１は、リアルタイム処理が必要な期間であるか否かのリアルタイムフラグ（不図示）を内部に持ち、ＣＰＵ１０１は所定のレジスタをリードすることで、そのフラグの値を知ることができる。
【０１０４】
転送状態監視部１８０１は、最初、リアルタイムフラグを「０」に初期化する。転送状態監視部１８０１は、プリンタ部１７１のデータ転送の開始を示す信号を参照し、データ転送開始を検知すると、リアルタイムフラグを「１」にする。そして転送状態監視部１８０１は、リングバッファライト制御部１００２から、ページの最終データをリングバッファへ書き込んだ通知信号を受け、そのページの最終データの書き込みで、リアルタイムフラグを「０」に戻す。転送状態監視部１８０１がこのように、リアルタイムフラグを制御することで、リアルタイム処理が必要な期間のみ、リアルタイムフラグが「１」となる。
【０１０５】
図１９は、実施形態６に係る画像処理装置において、帯域制御処理が必要かどうかを判定する処理を説明するフローチャートで、帯域モニタ１５０が取得するバス帯域を監視するために、一定時間間隔で繰り返し実行される。尚、このフローチャートで示す処理は、ＣＰＵ１０１がＲＯＭ１０３からメインメモリ１５２に展開したプログラムを実行することにより実行される。
【０１０６】
実施形態６に係る画像処理装置における、電源投入後のバス帯域制御処理に関する初期化の制御は図５のフローチャートと同じである。また、操作部１０５からの指示により、ジョブが開始されるときに実行される制御は、図６のフローチャートと同じである。更に、各画像処理部１１１〜１１５からの処理終了割り込み等で、ある画像処理が終了した時点で実行される制御は、図７のフローチャートと同じである。
【０１０７】
まずＳ１９０１でＣＰＵ１０１は、帯域モニタ１５０からバス帯域値を取得する。次にＳ１９０２に進みＣＰＵ１０１は、その取得したバス帯域値と第１閾値とを比較する。ここでバス帯域値が第１閾値を超えていれば、つまり、バスマスタのアクセス制限が必要かもしれない場合はＳ１９０３に進み、そうでないときは、この処理を終了する。ここで、第１閾値とは前述した通り、メモリ帯域の値、又は、その値より少し小さい値である。
【０１０８】
Ｓ１９０３でＣＰＵ１０１は、データ転送状態監視部１８０１からリアルタイムフラグの内容を取得する。そしてＳ１９０４に進みＣＰＵ１０１は、そのアルタイムフラグが「１」か否かを判定する。ここでリアルタイムフラグが「１」であれば、リアルタイム処理が必要な場合であるためＳ１９０５に進み、そうでないときは、この処理を終了する。
【０１０９】
Ｓ１９０５でＣＰＵ１０１は、リングバッファモニタ１６０７からリングバッファ領域に格納された残留データ量を取得する。そしてＳ１９０６に進みＣＰＵ１０１は、その残留データ量と第２閾値と比較する。ここで残留データ量が第２閾値を下回っていれば、つまり、バスマスタのアクセス制限が必要な場合はＳ１９０７へ移行し、そうでないときはＳ１９０８へ移行する。Ｓ１９０７でＣＰＵ１０１は、リングバッファ領域へのライトアクセスを制限する。このライトアクセスの制限は、リングバッファライト制御部１００２にアクセス制限を指示するレジスタを設け、アクセス制限を指示されたリングバッファライト制御部１００２は、ライトアクセスの間隔を広げることで実現できる。また、メモリコントローラ１５１のバス１４４のライトに対する調停優先度を制御することで、アクセス制限を行ってもよい。一方、Ｓ１９０８でＣＰＵ１０１は、優先順位の低いバスマスタのアクセスを制限する処理を行う。この処理は、前述の図８（Ｂ）のフローチャートを参照して説明した通りである。
【０１１０】
以上に説明したように実施形態６によれば、帯域モニタが検出したバス帯域の値が閾値を超えていたとしても、プリント処理でリアルタイム性が要求されない期間であれば、バスマスタのアクセス制限は行われない。更に、プリント処理でリアルタイム性が要求される期間であれば、リングバッファ領域の残留データ量が閾値を下回らなければ、バスマスタのアクセス制限は行われない。その結果、バスマスタの無駄なアクセス制限が抑えられ、画像処理装置の性能低下が抑えられる。
【０１１１】
また、バスマスタのアクセス制限を行う際、バスマスタ管理テーブルを参照して、アクセス制限を行うバスマスタを決定する。これにより、稼働中でアクセス制限が課せられていないバスマスタのうち、最も優先順位の低いバスマスタを、制限する対象のバスマスタとして選択できる。
【０１１２】
尚、以上説明した実施形態では、それぞれ独立して各実施形態を説明したが、各実施形態の構成を適宜組み合わせてもよい。例えば、実施形態３に係るリアルタイムフラグを、実施形態１のスキャン処理部１６０、或いは実施形態４に係るスキャン処理部１６０、プリント処理部１７０に適用してもよい。尚、実施形態６における第１閾値及び第２閾値は、前述の実施形態の第１閾値及び第２閾値と同じであってもよく、或いは互いに異なる値であってもよい。
【０１１３】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【０１１４】
本発明は上記実施形態に制限されるものではなく、本発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
【符号の説明】
【０１１５】
１０１…ＣＰＵ、１０５…操作部、１３０…バス調停部、１５０…帯域モニタ、１５２…メインメモリ、１６０…スキャン処理部、１６１…スキャナ部、１７０…プリント処理部、１７１…プリンタ部、３０２，１００４…ショートバッファ、３０３，１００５…ショートバッファモニタ
【図１】
2019212027.tif 000003
【図２】
2019212027.tif 000004
【図３】
2019212027.tif 000005
【図４】
2019212027.tif 000006
【図５】
2019212027.tif 000007
【図６】
2019212027.tif 000008
【図７】
2019212027.tif 000009
【図８】
2019212027.tif 000010
【図９】
2019212027.tif 000011
【図１０】
2019212027.tif 000012
【図１１】
2019212027.tif 000013
【図１２】
2019212027.tif 000014
【図１３】
2019212027.tif 000015
【図１４】
2019212027.tif 000016
【図１５】
2019212027.tif 000017
【図１６】
2019212027.tif 000018
【図１７】
2019212027.tif 000019
【図１８】
2019212027.tif 000020
【図１９】
2019212027.tif 000021