(57)【要約】【課題】帯域保証が必要な各バスマスタの帯域を保証しつつ、各バスマスタへ効率よく帯域を割り当てる。【解決手段】データ処理装置であって、各バスマスタによるバスへのアクセスの度合いを示す帯域を検出し、前記帯域の閾値として設定された前記閾値と、検出された前記帯域を比較し、その比較に基づいて、前記各バスマスタの優先度を決定し、当該決定された優先度に基づいて、前記各バスマスタのアクセス要求を調停する。【選択図】  図２
2019200732.tif 000002
【特許請求の範囲】
【請求項１】
データ処理装置であって、
各バスマスタによるバスへのアクセスの度合いを示す帯域を検出する帯域検出手段と、
前記帯域の閾値を設定する設定手段と、
前記設定手段により設定された前記閾値と前記帯域検出手段により検出された前記帯域を比較する比較手段と、
前記比較手段による比較に基づいて、前記各バスマスタの優先度を決定し、当該決定された優先度に基づいて、前記各バスマスタのアクセス要求を調停する調停手段と、
を有することを特徴とするデータ処理装置。
【請求項２】
前記閾値は、前記帯域の上限閾値と下限閾値とを含み、
前記比較手段は、前記帯域検出手段により検出された前記帯域と、前記上限閾値と前記下限閾値のそれぞれと比較し、
前記調停手段は、前記検出された前記帯域が前記上限閾値を上回るときは前記優先度を下げ、前記検出された前記帯域が前記下限閾値を下回るときは前記優先度を上げることを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記閾値は、重みづけがなされた複数の前記帯域の上限閾値と下限閾値とを含み、
前記比較手段は、前記帯域検出手段により検出された前記帯域と、前記重みづけがなされた複数の帯域の上限閾値と下限閾値のそれぞれと比較し、
前記調停手段は、前記検出された前記帯域が前記上限閾値を上回るときは前記優先度を下げ、前記検出された前記帯域が前記下限閾値を下回るときは前記優先度を上げることを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記調停手段は、前記検出された前記帯域が前記上限閾値を上回るときは前記優先度を前記重みづけに応じて下げ、前記検出された前記帯域が前記下限閾値を下回るときは前記優先度を前記重みづけに応じて上げることを特徴とする請求項３に記載のデータ処理装置。
【請求項５】
前記閾値は、前記アクセスの種別に応じた前記帯域の上限閾値と下限閾値とを含み、
前記比較手段は、前記帯域検出手段により検出された前記帯域と、前記アクセスの種別に応じた前記帯域の上限閾値と下限閾値のそれぞれと比較し、
前記調停手段は、前記検出された前記帯域が前記上限閾値を上回るときは前記優先度を下げ、前記検出された前記帯域が前記下限閾値を下回るときは前記優先度を上げることを特徴とする請求項２に記載のデータ処理装置。
【請求項６】
前記アクセスの種別は、リード、ライトを含むことを特徴とする請求項５に記載のデータ処理装置。
【請求項７】
前記リードの場合の前記帯域の上限閾値と下限閾値は、前記ライトの場合の前記帯域の上限閾値と下限閾値よりも大きいことを特徴とする請求項６に記載のデータ処理装置。
【請求項８】
前記閾値は、前記アクセスの期間に応じた前記帯域の上限閾値と下限閾値とを含み、
前記比較手段は、前記帯域検出手段により検出された前記帯域と、前記アクセスの期間に応じた前記帯域の上限閾値と下限閾値のそれぞれと比較し、
前記調停手段は、前記検出された前記帯域が前記上限閾値を上回るときは前記優先度を下げ、前記検出された前記帯域が前記下限閾値を下回るときは前記優先度を上げることを特徴とする請求項２に記載のデータ処理装置。
【請求項９】
前記帯域検出手段は、所定の期間における前記各バスマスタのバストランザクションの転送バイト数の合計に基づいて前記帯域を検出することを特徴とする請求項１乃至８のいずれか１項に記載のデータ処理装置。
【請求項１０】
複数のバスマスタを含むデータ処理装置における帯域保証方法であって、
各バスマスタによるバスへのアクセスの度合いを示す帯域を検出する帯域検出工程と、
前記帯域の閾値を設定する設定工程と、
前記設定工程で設定された前記閾値と前記帯域検出工程で検出された前記帯域を比較する比較工程と、
前記比較工程による比較に基づいて、前記各バスマスタの優先度を決定し、当該決定された優先度に基づいて、前記各バスマスタのアクセス要求を調停する調停工程と、
を有することを特徴とする帯域保証方法。
【請求項１１】
コンピュータを、請求項１乃至９のいずれか１項に記載の情報処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置とデータ処理装置における帯域保証方法、及びプログラムに関するものである。
【背景技術】
【０００２】
近年、電子写真プロセスの高速化に伴い、デジタル複合機のコントローラの処理速度要求が高まっている。また、半導体プロセスの進化に伴い、スキャン、プリント、レンダリングといった各種画像処理機能及びシステム制御機能がＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）として１つのチップに集約されるようになっている。同様に、ＳｏＣに接続されるＤＲＡＭ等のメモリも１つのチップに集約されてきている。よって、多数の機能が一つのメモリに対して同時に、かつ高速でアクセスするようになり、メモリ帯域が逼迫している。
【０００３】
しかしながら、このような状況であっても、スキャン画像処理、プリント画像処理、ＵＩ描画処理といったリアルタイム性を要する処理では、処理に必要なメモリ帯域を保証することが求められる。リアルタイム処理のメモリ帯域を保証する方法としては、システムバスを介してメモリに接続されるバスマスタのアクセスを、各バスマスタの優先度を基にアービトレーションする手法がよく知られる。即ち、帯域保証が必要なバスマスタに対しては高い優先度を付加することで、そのバスマスタは、優先的にメモリ帯域を使用することが可能となる。
【０００４】
ところで、デジタル複合機の生産性を高めるためには、非リアルタイム処理であっても、可能な限りメモリ帯域を付与することで、システム全体の処理速度が低下しないようにすることが求められる。しかしながら、上述の優先度を付加するバスアービトレーションでは、高い優先度が付加されたリアルタイム処理用のバスマスタが、自身の動作中であってもメモリ帯域を占有するという問題が生じてしまう可能性がある。
【０００５】
従来、このような問題に対して、例えば特許文献１では、高い優先度に設定されたバスマスタであっても、一定以上帯域を占有した場合は、そのバスマスタによるアクセスを制限するという手法が記載されている。このような手法を採用することにより、リアルタイム処理などを行う高い優先度のバスマスタの帯域を保証しつつ、非リアルタイム処理などを行う低い優先度のバスマスタに対しても効率よくメモリアクセスさせることが可能となる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１４−１６０３４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、近年の集約されたメモリ、バスシステムでは、リアルタイム処理用のバスマスタが同時に複数存在するため、従来のように優先度を付加するだけでは、高い優先度のバスマスタ同士のアクセス競合時に帯域保証を行うことができない場合がある。
【０００８】
一方で、ＳｏＣに搭載されるＳＲＡＭ等のバッファメモリ容量が増えていることから、リアルタイム処理用のバスマスタであっても、バッファの空き状況等によっては占有するメモリ帯域を抑えることが可能である。しかしながら、従来の優先度が固定されたバスシステムでは、各バスマスタの動作状況に合わせて、効率よくメモリ帯域を配分することができないという課題があった。
【０００９】
本発明の目的は、上記従来技術の問題点の少なくとも一つを解決することにある。
【００１０】
本発明の目的は、複数のバスマスタによるバスへのアクセスの帯域を保証しつつ、各バスマスタに効率良く帯域を割り当てることができる技術を提供することにある。
【課題を解決するための手段】
【００１１】
上記目的を達成するために本発明の一態様に係るデータ処理装置は以下のような構成を備える。即ち、
データ処理装置であって、
各バスマスタによるバスへのアクセスの度合いを示す帯域を検出する帯域検出手段と、
前記帯域の閾値を設定する設定手段と、
前記設定手段により設定された前記閾値と前記帯域検出手段により検出された前記帯域を比較する比較手段と、
前記比較手段による比較に基づいて、前記各バスマスタの優先度を決定し、当該決定された優先度に基づいて、前記各バスマスタのアクセス要求を調停する調停手段と、を有することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、複数のバスマスタによるバスへのアクセスの帯域を保証しつつ、各バスマスタに効率良く帯域を割り当てることができるという効果がある。
【００１３】
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。なお、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
【図面の簡単な説明】
【００１４】
添付図面は明細書に含まれ、その一部を構成し、本発明の実施形態を示し、その記述と共に本発明の原理を説明するために用いられる。
【図１】実施形態に係るデータ処理装置のコントローラ（制御部）の構成を説明するブロック図。
【図２】実施形態に係る優先度制御部の構成を説明するブロック図。
【図３】実施形態に係るアービタの構成を説明するブロック図。
【図４】実施形態に係る閾値設定部に設定される帯域の閾値例を示す図。
【図５】実施形態に係る優先度制御部による優先度制御の手順を説明するフローチャート。
【図６】図５のＳ５０５の優先度を決定する処理を説明するフローチャート。
【発明を実施するための形態】
【００１５】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１６】
図１は、実施形態に係るデータ処理装置のコントローラ（制御部）１８０の構成を説明するブロック図である。
【００１７】
メモリコントローラ１９０は、コントローラ１８０のシステム制御、及びデータ処理に係るワークメモリとして機能するメモリ１９１を制御するためのコントローラである。ＣＰＵ１０１は、データ処理装置のシステム全体を制御するプロセッサであり、ＵＩ（ユーザインタフェース）１０５からのユーザによる操作指示や、ＬＡＮ１０４上に存在する不図示の外部装置からのジョブ実行命令に応じてデータ処理装置を統括的に制御する。ＵＩＣ（ユーザインタフェース・コントローラ）１０２は、ＵＩ１０５からの操作受け付けをＣＰＵ１０１へ通知する。ＬＡＮＣ（ネットワーク制御部）１０３は、ＬＡＮ１０４上へのネットワークパケットの送受信を行う。レジスタＩＦ（インタフェース）１０６は、コントローラ１８０内の各モジュールに対してレジスタ設定等を行うためのインターフェースである。ＣＰＵ１０１は、インターコネクト１００、レジスタＩＦ１０６を経由して、各モジュールのレジスタ設定を行う。インターコネクト１００は、ＣＰＵ１０１，ＵＩＣ１０２，ＬＡＮＣ１０３からのバスアクセスをラウンドロビン方式等によって調停した後、アドレス情報に応じてメモリ１９１、又はレジスタＩＦ１０６へアクセスする。
【００１８】
スキャナ１１１は、ラインセンサを用いて原稿の画像を読み取り、それにより得られた画像データを同期信号とともにスキャナＩＦ１１２へ出力する。スキャナＩＦ１１２は同期信号に同期して画像データを受信し、後段のモジュールへ出力する。またスキャナＩＦ１１２は、ＣＰＵ１０１からの制御に従って、スキャナ１１１へ画像の読み取り開始を指示する。補正処理部１１３は、スキャナ１１１が読み取って得られた画像データに対して、シェーディング補正、ＭＴＦ補正、ガンマ補正等の画像補正処理を行う。圧縮部１１４は、ＪＰＥＧ等の符号化処理により画像データを圧縮する。ＤＭＡＣ１１０は、ＣＰＵ１０１によってメモリ１９１に確保されたワーク領域へ、圧縮部１１４により圧縮された画像データをＤＭＡで書き込む。
【００１９】
ここで、スキャナＩＦ１１２、補正処理部１１３、圧縮部１１４、ＤＭＡＣ１１０による一連のデータ処理は、スキャナ１１１の画像読み取り動作に合わせて行うリアルタイム処理である。即ち、ＣＰＵ１０１からの原稿の読み取り開始指示後は、スキャナ１１１は自立的に画像読み取り動作を行う。よって、スキャナ１１１からの画像データ入力速度に対して、一連のデータ処理の速度が上回る必要があり、処理速度が下回った場合には画像データの消失（オーバーラン）が生じてしまう。より詳細には、一連の処理モジュール１１２〜１１４の不図示の内部ＳＲＡＭバッファがフルでかつ、ＤＭＡＣ１１０が画像データを出力できない状況で、新たな画像データがスキャナ１１１から入力されるとオーバーランとなる。ここで、ＤＭＡＣ１１０が画像データを出力できない状況とは、アービタ１６０によって、ＤＭＡＣ１１０からメモリ１９１へのアクセス要求が待たされていることを示している。ＤＭＡＣ１１１からのアクセスが待たされる要因としては、その他のバスマスタによるメモリアクセスがある。アービタ１６０については、図３を参照して詳しく説明する。
【００２０】
レンダラ１２１は、ＬＡＮ１０４上の不図示の外部装置から入力されたＰＤＬ（Ｐｒｉｎｔ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）を、ＲＩＰ（Ｒａｓｔｅｒ  Ｉｍａｇｅ  Ｐｒｏｃｅｓｓｉｎｇ）によってレンダリングする。圧縮部１２２は、レンダリングされた画像データを圧縮する。ＤＭＡＣ１２０は、ＣＰＵ１０１によってメモリ１９１上に展開されたＰＤＬを読み出し、また圧縮されたレンダリング画像データをメモリ１９１の所定の領域へ書き戻す。尚、レンダラ１２１、圧縮部１２２による一連のデータ処理は非リアルタイム処理である。しかしながら、データ処理装置としての生産性を向上させるためには、上記一連のレンダリング処理において、高速にメモリ１９１へアクセスできることが望ましい。
【００２１】
ディスクＩＦ１３１は、ＤＭＡＣ１３０を介して、前述の圧縮されたスキャン画像データ、或いはレンダリング画像データを、メモリ１９１からディスク１３２へスプールする。スプールされた圧縮データは、再度メモリ１９１に展開される。
【００２２】
伸張部１４１は、ＤＭＡＣ１４０を介して、メモリ１９１に展開された圧縮データを読み出して伸張する。変換処理部１４２は、ＲＧＢ、ＹＵＶなどの任意の色空間からＣＭＹＫ色空間へと変換する色空間変換処理や、画像データの階調表現を、濃度階調から面積階調へと変換するハーフトーン処理を行って印刷用の画像データを生成する。プリンタ１４４は、例えばタンデム方式の電子写真プリンタエンジンであり、例えば、Ｙ，Ｍ，Ｃ，Ｋの順番で並ぶ、４つの不図示の感光体ドラムを持つ。プリンタＩＦ１４３は、プリンタ１４４からの同期信号に従って、印刷用の画像データをプリンタ１４４へ転送する。プリンタ１４４は、転写体へ最初にトナー像を転写するＹから順に、Ｍ，Ｃ，Ｋの順番で露光タイミングを事前にずらすことで、転写体が各感光体ドラムへと到達するまでの時間差、即ち色ずれを吸収する。このため、プリンタＩＦ１４３は、ＤＭＡＣ１５０を介して、印刷用画像データをメモリ１９１へ一旦書き出した後に、Ｙ，Ｍ，Ｃ，Ｋの順番で色版ごとにタイミングをずらして印刷用画像データを読み出してプリンタ１４４へと出力する。
【００２３】
ここで伸張部１４１、変換処理部１４２、プリンタＩＦ１４３、及びＤＭＡＣ１４０，１５０による一連の処理は、プリンタ１４４からの画像データ転送要求に合わせて行うリアルタイム処理である。よって、プリンタ１４４からの画像データの転送要求に対して、一連のデータ処理速度が上回る必要があり、処理速度が下回った場合には画像データの消失（アンダーラン）が生じてしまう。前述したスキャン処理の場合と同様に、一連の処理モジュール１４１〜１４３の不図示の内部ＳＲＡＭバッファの状態、及びＤＭＡＣ１４０，１５０のアクセス要求がどの程度待たされるかどうかがアンダーランの発生要因となる。印刷処理においては、一度、印刷用画像データをメモリ１９１へスプールさせることが可能であるため、特にＤＭＡＣ１５０による印刷用画像データの読み出しがプリンタ１４４の画像データの転送要求に間に合うかどうか重要となる。
【００２４】
優先度制御部１７０は、アービタ１６０を介してメモリコントローラ１９０に接続される各バスマスタ（Ｍ０〜Ｍ５）のバストランザクションをモニタし、またアービタ１６０に対して優先度制御を行う。
【００２５】
図２は、実施形態に係る優先度制御部１７０の構成を説明するブロック図である。
【００２６】
帯域検出部２００は、各バスマスタ（Ｍ０〜Ｍ５）のバストランザクションをモニタし、各バスマスタがバスにアクセスする度合いを示す帯域を算出する。このバス帯域の算出には、事前にＣＰＵ１０１によって設定された測定期間内において、成立したトランザクションの転送バイト数を合計することで算出する。このようにして算出された帯域値は、一定の期間当たりの平均転送量となる。更に、この転送量をサイクルごとに更新し続けることにより、あるジョブ（例えばコピーやプリント）の実行中における、バスマスタのデータ転送量の移動平均を算出する。或いは、サイクルごとの更新ではなく、特定の間隔ごとで更新しても良い。帯域検出部２００はＣＰＵ１０１によって開始が指示されることで帯域の検出を開始する。尚、帯域検出部２００は、リードチャネルとライトチャネルがそれぞれ分かれているバスプロトコルであれば、リード、ライトチャネル毎に帯域検出を行っても良い。
【００２７】
閾値設定部２１０は、ＣＰＵ１０１によって各バスマスタ、もしくは各チャネルの帯域閾値が設定される。閾値設定部２１０については図４を参照して詳しく説明する。比較部２２０は、バスマスタ毎、もしくはチャネル毎に検出されたバス帯域を、閾値設定部２１０に設定された閾値と比較する。優先度決定部２３０は、比較部２２０の比較結果に基づき、各バスマスタ、もしくは各チャネルの優先度を決定して、アービタ１６０へ通知する。優先度制御部１７０による、バス帯域の検出から優先度を決定する制御フローについては図５を参照して詳しく説明する。
【００２８】
図３は、実施形態に係るアービタ１６０の構成を説明するブロック図である。
【００２９】
アービタ１６０は、各バスマスタに割り当て可能な優先度として「＃０」から「＃２」までの３段階の優先度を持つ。尚、実施形態では、優先度「＃０」を最も高い優先度とし、優先度「＃２」を最も低い優先度とする。アービタ１６０は、優先度「＃０」〜「＃２」にそれぞれ対応したキュー３１０，３１１，３１２を持つ。スイッチ３００は、優先度制御部１７０によって設定された優先度に応じて、各バスマスタ（Ｍ０〜Ｍ５）からのアクセス要求をキュー３１０〜３１２へ振り分ける。キュー３１０〜３１２は、アクセス要求をキューイングするための多段のＦＩＦＯを含んでいる。
【００３０】
尚、実施形態では、キュー３１０〜３１２は、実施形態ではＦＩＦＯを含んで構成されているが、同一の優先度を持つアクセス要求に関してはＦＩＦＯではなく、ラウンドロビン方式等によってキューイングされる順番を調停しても良い。また、キューの段数は優先度毎に異なっていても良い。
【００３１】
バスアクセス要求が発生すると、キューがフルでなければ、アクセス要求は受理され、キューがフルであればアクセス要求は受理されない。同一の優先度を持つバスマスタについては、均等にアクセス要求を受け付けることが可能であり、これは、同一の優先度を持つバスマスタへ帯域を均等に割り当てていることを意味する。但し、実際のデータ転送において、どの程度の帯域が得られるかは、バスマスタがアクセス要求を発行する頻度や、１回のアクセス要求に含まれるデータ量に依存する。
【００３２】
あるバスマスタにおいて、アクセス要求が受理されないことは、言い換えるとアクセスが待たされる状態である。この状態で、パイプラインで処理を行っているバスマスタ（例えばＤＭＡＣ１１０〜圧縮部１１４）の内部ＳＲＡＭバッファがフルとなれば、パイプラインストールが起きる。更に、スキャナ１１１やプリンタ１４４から新たなデータの入力やデータの転送要求があれば、オーバーラン、アンダーランを引き起こすことは前述した通りである。
【００３３】
メモリコントローラ１９０は、アクセス要求を受け付け可能であれば、セレクタ３２０を介して、何れかのキューに対してキューイングされたアクセス要求を受け付け可能であることを示すリクエストを通知する。各キューは、メモリコントローラ１９０からのリクエストを受けると、自身が空でなければ、キューイングされたアクセス要求を読み出してメモリコントローラ１９０へ転送する。セレクタ３２０は、優先度の高いキューが空でない限り、優先度の低いキューに対して、メモリコントローラ１９０からのリクエストを通知しない。即ち、優先度の最も高いキュー３１０は、他の優先度の低いキューの状態に依らず、メモリコントローラ１９０からのリクエスト通知を受け取ることができる。一方で、優先度の低いキュー３１１，３１２は、自身より優先度が高いキューが全て空きでない限り、メモリコントローラ１９０からのリクエスト通知を受け取ることができない。尚、図３に示したアービタの構成はあくまで一例であり、実施形態の構成に限定されるものではない。
【００３４】
図４は、実施形態に係る閾値設定部２１０に設定される帯域の閾値例を示す図である。  図４（Ａ）〜（Ｄ）は、閾値の設定例を示しており、各バスマスタに対する下限閾値と上限閾値がそれぞれ設定される。上限閾値とは、あるバスマスタが許容される上限の使用帯域幅であり、下限閾値とは、あるバスマスタが保証される最低の帯域幅である。優先度制御部１７０は、各バスマスタの使用帯域幅が上限、下限閾値内に収まるようにバスマスタの優先度を動的に制御する。
【００３５】
図４（Ａ）は、帯域閾値の第一の設定例を示す図である。
【００３６】
図４（Ａ）では、各マスタ（Ｍ０〜Ｍ５）に対して、下限閾値と上限閾値がそれぞれ設定される。例として、レンダリングＭ２のように、非リアルタイム処理のバスマスタについては、下限閾値を低い値「０」に設定している。一方で、非リアルタイム処理のバスマスタであっても、上限の閾値として高い値を設定することで、データ処理装置の生産性を落とさないようにする。スキャンＭ１やプリンタＭ５といった、リアルタイム処理を行うマスタについては、下限閾値を高い値に設定することで、帯域を保証している。実際に設定される値は、スキャナ１１１やプリンタ１４４が必要とするデータ転送レート、各モジュールのスループット、及び各モジュールが内部に持つＳＲＡＭバッファ容量等に対して、ある程度のマージンを加味した値である。０［ＭＢ／ｓ］よりも大きい下限閾値を設定されたバスマスタ（例えばＭ５）は、帯域検出部２００による検出帯域が下限閾値を下回ると、優先度決定部２３０により、そのバスマスタＭ５の優先度が動的に上げられる。優先度が上がると、他のバスマスタＭ０〜Ｍ４に対して優先してアクセス要求を発行することが可能となることで、帯域の最低値が保証される。
【００３７】
尚、上記のような制御を行った場合、バスマスタＭ５がアクセス要求を発行していない期間が続くと、優先度が際限なく上がってしまう。しかしながら、バスマスタＭ５の優先度が上がったところで、アクセス要求を発行していなければ、他のバスマスタＭ０〜Ｍ４の帯域を逼迫させるといった状況にはならない。或いは、優先度決定部２３０において、有効なトランザクションが発生しているバスマスタに対してのみ優先度を変更するような構成であっても良い。
【００３８】
優先度が上げられたバスマスタＭ５は、動作状況や内部ＳＲＡＭバッファの状況によっては、本来必要とする帯域以上の帯域を、一時的ないし慢性的に占有してしまうおそれが生じる。例えば、プリンタＩＦ１４３の内部ＳＲＡＭバッファの空きを埋めるために、必要以上に読み出しのアクセス要求を発行するといった場合である。そこで優先度制御部１７０は、バスマスタＭ５の使用帯域が上限閾値を上回った場合、そのバスマスタＭ５の優先度を動的に下げる。これにより、バスマスタＭ５の優先度は、他のバスマスタＭ０〜Ｍ４と等しくなる。その結果、そのバスマスタＭ５が占有していたメモリ帯域が、他のバスマスタへも割り当てられることになる。また、もしここで他のバスマスタ（例えばＭ１）の中で、使用帯域が下限値を下回っていた場合には、そのバスマスタＭ１の優先度が動的に上げられる。このように、優先度制御部１７０によって、帯域が足りていないバスマスタが高優先度となるように、動的に優先度の入れ替えがなされる。
【００３９】
図４（Ｂ）〜（Ｄ）は、閾値のその他の設定例を示す。何れの例にしても、図４（Ａ）と同様に上限閾値と下限閾値が設定される。
【００４０】
図４（Ｂ）は、上限閾値、下限閾値について、複数の閾値を持つように設定した例である。実施形態では、中間閾値と最大閾値の２つを設定している。図中に太線下線を引いた値について、バスマスタＭ５については、中間閾値、最大閾値がそれぞれ異なる値に設定されている。また中間閾値、最大閾値にはそれぞれ重みが与えられている。
【００４１】
優先度制御部１７０は、バスマスタＭ５について、上限閾値、下限閾値の範囲を超えた場合については、重みに応じて、そのバスマスタＭ５の優先度を変更する。例えば、重みが「１」である中間閾値の範囲を超えた場合には、優先度を１段階変更する。更に、重みが「２」である最大閾値の範囲を超えた場合には、優先度を２段階変更する。このように、段階的に閾値を設定することにより、優先度制御部１７０による優先度制御を、より細やかに行うことができる。
【００４２】
図４（Ｃ）〜（Ｄ）は、条件のタイプ毎に上限、下限閾値を設定した例である。
【００４３】
図４（Ｃ）は、条件タイプとして、アクセス要求の種別が設定されており、リード要求か、ライト要求かに応じて、それぞれ個別に上限、下限閾値をもつ。例えば、バスマスタＭ５については、印刷用画像データはメモリ１９１にある程度スプールされるため、ライト要求が滞ったとしても問題とならない場合がある。このような場合はライト要求の使用帯域を下げるように設定する。
【００４４】
図４（Ｄ）は、条件タイプとして、２つの期間が設定されており、それぞれの期間で上限、下限閾値を切り替えている例である。例えば、２つのリアルタイム処理バスマスタＭ１、Ｍ５について、各期間におけるバスマスタＭ１，Ｍ５の合計値が一定以下になるように設定されている。この結果、バスマスタＭ１、Ｍ５に対して割り当てる帯域を時分割多重化することが可能となる。また、上記２つの期間を、各モジュールの内部ＳＲＡＭバッファ容量、更にはスキャナ１１１やプリンタ１４４の画像の読み取り速度、印刷速度等を考慮して設定する。これにより、バスマスタＭ１，Ｍ５の合計帯域がメモリ１９１の許容帯域を超えないように制御することが可能となる。
【００４５】
以上、図４（Ａ）〜（Ｄ）のように、上限、下限閾値にはいくつかの設定方法が考えられる。図４（Ａ）を最も基本的な閾値の設定方法とした場合、図４（Ａ）と比較して図４（Ｂ）では段階的に閾値を設定することにより、優先度をより細かく制御することが可能となる。また、図４（Ａ）と比較して図４（Ｃ）ではリード、ライトのアクセス種別に応じて閾値を設定することにより、データ処理装置の動作に即した帯域の割り当てが可能となる。更に、図４（Ａ）と比較して図４（Ｄ）では、期間を区切り、それぞれの期間ごとに閾値を設定することにより、帯域を時分割多重させて、複数のリアルタイム処理バスマスタの帯域を保証することが可能となる。
【００４６】
図５は、実施形態に係る優先度制御部１７０による優先度制御の手順を説明するフローチャートである。尚、図５に示す手順は、全て優先度制御部１７０によって実行される処理である。また図５に示す手順は、あるバスマスタ単体についての優先度制御手順であり、本実施形態のようにバスマスタがＭ０〜Ｍ５まである場合は、同一の手順を各バスマスタについて並列に実行する。
【００４７】
Ｓ５０１では、バスマスタの優先度を初期値に設定する。ここでの優先度の初期値は任意であり、一例として、全てのバスマスタの優先度初期値を、最も低い優先度に設定する。次にＳ５０２に進み、図４を参照して説明した上限、下限閾値を決定する。尚、図４で説明した通り、閾値は、優先度制御部１７０の閾値設定部２１０に保持されているが、設定する閾値はＣＰＵ１０１によって事前に設定しても良く、例えばＲＯＭ等から読み出すように構成されていても良い。次にＳ５０３に進み、バスマスタの帯域の検出を開始する。
【００４８】
次にＳ５０４に進み、検出された帯域を取得する。尚、図２で説明したように、帯域を取得するタイミングは毎サイクルでもよく、一定のサイクルおきに取得するように構成しても良い。次にＳ５０５に進み、Ｓ５０４で取得した帯域、及びＳ５０２で決定された閾値を基に優先度を決定する。Ｓ５０５の処理については、図６のフローチャートを参照して詳しく説明する。そしてＳ５０６に進み、Ｓ５０５で決定した優先度をアービタ１６０へ通知する。そしてＳ５０７に進み、帯域の検出処理を終了するかどうかを判定し、帯域の検出処理を継続する場合はＳ５０４へ戻り、帯域の検出処理を終了する場合は、この処理を終了する。
【００４９】
図６は、図５のＳ５０５の優先度を決定する処理を説明するフローチャートである。
【００５０】
図６（Ａ）は、Ｓ５０２において、一組の上限、下限値が設定された場合における優先度決定処理を示し、これは図４（Ａ）の場合に対応している。
【００５１】
Ｓ６０１では、検出した帯域が下限閾値を下回っているかどうかを判定する。Ｓ６０１で、検出された帯域が下限閾値を下回っていると判定するとＳ６０２に進み優先度を１段階上げる。一方、Ｓ６０１で、検出された帯域が下限閾値を下回っていないと判定するとＳ６０３へ進む。Ｓ６０３では、検出された帯域が上限閾値を上回っているかを判定する。Ｓ６０３で、検出された帯域が上限閾値を上回っていると判定するとＳ６０４に進み、優先度を一段階下げる。一方、Ｓ６０３で、検出された帯域が上限閾値を上回っていないと判定すると、この処理を終了する。
【００５２】
図６（Ｂ）は、Ｓ５０２において、重みＷ付きで複数の上限、下限閾値が設定された場合における優先度決定処理を示し、これは図４（Ｂ）の場合に対応している。
【００５３】
Ｓ６１０では、以降のＳ６１１〜６１４の処理を、ループ変数を重みＷとし、全ての重みについて繰り返す。図４（Ｂ）の例では、重みが２つ設定されているため、重みＷ＝１、Ｗ＝２の二通りについて処理を繰り返す。Ｓ６１１では、検出された帯域が、重みＷにおける下限閾値を下回っているかどうかを判定する。Ｓ６１１で、検出された帯域が重みＷにおける下限閾値を下回っていると判定するとＳ６１２に進み、優先度をＷ段階上げる。一方、Ｓ６１１で、検出された帯域が重みＷにおける下限閾値を下回っていないと判定するとＳ６１３へと進む。Ｓ６１３では、検出された帯域が重みＷにおける上限閾値を上回っているかを判定する。Ｓ６１３で、検出された帯域が重みＷにおける上限閾値を上回っていると判定するとＳ６１４に進み、優先度をＷ段階下げてＳ６１０に進む。一方、Ｓ６１３で、検出された帯域が重みＷにおける上限閾値を上回っていないと判定するとＳ６１０へ戻る。Ｓ６１０では、重みＷを更新してＳ６１１〜Ｓ６１３の制御フローを繰り返し、全ての重みについて処理が完了すると、この処理を終了する。
【００５４】
図６（Ｃ）は、Ｓ５０２において、条件のタイプ毎に複数の上限、下限閾値が設定された場合における優先度決定処理を示し、図４（Ｃ）、図４（Ｄ）の場合に対応する。
【００５５】
Ｓ６２０では、以降のＳ６２１〜Ｓ６２４の処理を、ループ変数をタイプＴとし、全ての条件タイプについて繰り返す。図４（Ｃ）の例では、トランザクションのタイプＴ＝リード、Ｔ＝ライトの二通りについて処理を繰り返す。
【００５６】
Ｓ６２１では、検出された帯域がタイプＴにおける下限閾値を下回っていると判定するとＳ６２２に進み優先度を１段階上げてＳ６２２に進む。Ｓ６２１で、検出された帯域がタイプＴにおける下限閾値を下回っていないと判定するとＳ６２３へと進む。Ｓ６２３では、検出された帯域がタイプＴにおける上限閾値を上回っているかどうか判定する。Ｓ６２３で、検出された帯域がタイプＴにおける上限閾値を上回っていると判定するとＳ６２４に進み、優先度を１段階下げてＳ６２０に進む。一方、Ｓ６２３で、検出された帯域がタイプＴにおける上限閾値を上回っていないと判定するとＳ６２０へ戻る。Ｓ６２０では、タイプＴを更新してＳ６２１〜Ｓ６２３の制御フローを繰り返し、全てのタイプについて処理が完了するとこの処理を終了する。
【００５７】
以上説明したように実施形態によれば、各バスマスタの優先度を動的に制御することが可能となる。これにより、従来であれば静的に高優先度と設定されていたバスマスタが競合した場合においても、各バスマスタの実帯域に従って優先度が変更される。これにより、バスマスタによる不要な帯域の占有を抑えて、帯域保証が可能となる。更に、従来であれば静的に低優先度と設定されていたバスマスタに対しても、効率良く、帯域を割り当てることが可能となる。
【００５８】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００５９】
本発明は上記実施形態に制限されるものではなく、本発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
【符号の説明】
【００６０】
１６０…アービタ、１７０…優先度制御部、２００…帯域検出部、２１０…閾値設定部、２２０…比較部、２３０…優先度決定部
【図１】
2019200732.tif 000003
【図２】
2019200732.tif 000004
【図３】
2019200732.tif 000005
【図４】
2019200732.tif 000006
【図５】
2019200732.tif 000007
【図６】
2019200732.tif 000008