(57)【要約】【課題】メモリで使用されている使用メモリ帯域を監視して、メモリが有する転送性能を最大限使用しつつ、リアルタイム処理部の必要帯域を確保するように制御する仕組みを提供する。【解決手段】本メモリアクセスシステムは、メモリと複数のマスターとの間で使用されているメモリ帯域の合計を示す使用メモリ帯域を監視し、当該使用メモリ帯域が第１の閾値以上であるか否かを判断する。また、本メモリアクセスシステムは、上記判断結果に基づいて、複数のマスターのうち優先度の低いマスターによるメモリへのアクセスを制限する。【選択図】  図２
2018120490.tif 000002
【特許請求の範囲】
【請求項１】
メモリアクセスシステムであって、
メモリと、
前記メモリにアクセスする複数のマスターと、
前記メモリと前記複数のマスターとの間で使用されているメモリ帯域の合計を示す使用メモリ帯域を監視する監視手段と、
前記監視手段によって監視されている前記使用メモリ帯域が第１の閾値以上であるか否かを判断する判断手段と、
前記判断手段によって前記使用メモリ帯域が前記第１の閾値以上であると判断されると、前記複数のマスターのうち優先度の低いマスターによる前記メモリへのアクセスを制限するメモリアクセス制御手段と
を備えることを特徴とするメモリアクセスシステム。
【請求項２】
前記判断手段は、さらに、前記メモリアクセス制御手段によって前記優先度の低いマスターによる前記メモリへのアクセスが制限された後に、前記使用メモリ帯域が前記第１の閾値より低い第２の閾値以下であるか否かを判断し、
前記メモリアクセス制御手段は、前記判断手段によって前記使用メモリ帯域が前記第２の閾値以下であると判断されると、前記優先度の低いマスターによる前記メモリへのアクセス制限を解除することを特徴とする請求項１に記載のメモリアクセスシステム。
【請求項３】
メモリアクセスシステムであって、
メモリと、
前記メモリにアクセスする複数のマスターと、
前記メモリと前記複数のマスターとの間で使用されているメモリ帯域の合計を示す使用メモリ帯域を監視する監視手段と、
前記監視手段によって監視されている前記使用メモリ帯域が第１の閾値以上であるか否かを判断し、前記使用メモリ帯域が前記第１の閾値以上であると判断すると、前記複数のマスターのうち優先度の低いマスターによる前記メモリへのアクセスを制限するメモリアクセス制御手段と
を備えることを特徴とするメモリアクセスシステム。
【請求項４】
前記メモリアクセス制御手段は、前記優先度の低いマスターによる前記メモリへのアクセスを制限した後に、前記使用メモリ帯域が前記第１の閾値より低い第２の閾値以下であるか否かを判断し、前記使用メモリ帯域が前記第２の閾値以下であると判断すると、前記優先度の低いマスターによる前記メモリへのアクセス制限を解除することを特徴とする請求項３に記載のメモリアクセスシステム。
【請求項５】
前記メモリアクセス制御手段は、前記優先度の低いマスターによる前記メモリへのアクセスを停止させることにより、アクセスを制限することを特徴とする請求項１乃至４の何れか１項に記載のメモリアクセスシステム。
【請求項６】
前記メモリアクセス制御手段は、前記優先度の低いマスターが前記メモリへアクセスする際のバースト長を短くすることにより、アクセスを制限することを特徴とする請求項１乃至４の何れか１項に記載のメモリアクセスシステム。
【請求項７】
前記優先度の低いマスターは、非リアルタイムでの前記メモリへのアクセスによるデータ転送を実行するマスターであり、
優先度の高いマスターは、リアルタイムでの前記メモリへのアクセスによるデータ転送を実行するマスターであることを特徴とする請求項１乃至６の何れか１項に記載のメモリアクセスシステム。
【請求項８】
前記複数のマスターに対して個別に前記第１の閾値が設けられ、
前記メモリアクセス制御手段は、各マスターに割り当てられ前記第１の閾値に基づいて、当該マスターによるメモリへのアクセスを制限することを特徴とする請求項１乃至７の何れか１項に記載のメモリアクセスシステム。
【請求項９】
前記判断手段は、ＣＰＵであることを特徴とする請求項１又は２に記載のメモリアクセスシステム。
【請求項１０】
前記メモリアクセス制御手段は、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラであることを特徴とする請求項１乃至９の何れか１項に記載のメモリアクセスシステム。
【請求項１１】
メモリと、前記メモリにアクセスする複数のマスターとを備えるメモリアクセスシステムの制御方法であって、
監視手段が、前記メモリと前記複数のマスターとの間で使用されているメモリ帯域の合計を示す使用メモリ帯域を監視する監視工程と、
判断手段が、前記監視工程で監視されている前記使用メモリ帯域が第１の閾値以上であるか否かを判断する判断工程と、
メモリアクセス制御手段が、前記判断工程で前記使用メモリ帯域が前記第１の閾値以上であると判断されると、前記複数のマスターのうち優先度の低いマスターによる前記メモリへのアクセスを制限するメモリアクセス制御工程と
を実行することを特徴とするメモリアクセスシステムの制御方法。
【請求項１２】
メモリと、前記メモリにアクセスする複数のマスターとを備えるメモリアクセスシステムの制御方法であって、
監視手段が、前記メモリと前記複数のマスターとの間で使用されているメモリ帯域の合計を示す使用メモリ帯域を監視する監視工程と、
メモリアクセス制御手段が、前記監視工程で監視されている前記使用メモリ帯域が第１の閾値以上であるか否かを判断し、前記使用メモリ帯域が前記第１の閾値以上であると判断すると、前記複数のマスターのうち優先度の低いマスターによる前記メモリへのアクセスを制限するメモリアクセス制御工程と
を実行することを特徴とするメモリアクセスシステムの制御方法。
【請求項１３】
メモリと、前記メモリにアクセスする複数のマスターとを備えるメモリアクセスシステムの制御方法における各工程をコンピュータに実行させるためのプログラムであって、前記制御方法は、
監視手段が、前記メモリと前記複数のマスターとの間で使用されているメモリ帯域の合計を示す使用メモリ帯域を監視する監視工程と、
判断手段が、前記監視工程で監視されている前記使用メモリ帯域が第１の閾値以上であるか否かを判断する判断工程と、
メモリアクセス制御手段が、前記判断工程で前記使用メモリ帯域が前記第１の閾値以上であると判断されると、前記複数のマスターのうち優先度の低いマスターによる前記メモリへのアクセスを制限するメモリアクセス制御工程と
を実行することを特徴とするプログラム。
【請求項１４】
メモリと、前記メモリにアクセスする複数のマスターとを備えるメモリアクセスシステムの制御方法における各工程をコンピュータに実行させるためのプログラムであって、前記制御方法は、
監視手段が、前記メモリと前記複数のマスターとの間で使用されているメモリ帯域の合計を示す使用メモリ帯域を監視する監視工程と、
メモリアクセス制御手段が、前記監視工程で監視されている前記使用メモリ帯域が第１の閾値以上であるか否かを判断し、前記使用メモリ帯域が前記第１の閾値以上であると判断すると、前記複数のマスターのうち優先度の低いマスターによる前記メモリへのアクセスを制限するメモリアクセス制御工程と
を実行することを特徴とするプログラム。
【請求項１５】
画像形成装置であって、
請求項１乃至１０の何れか１項に記載のメモリアクセスシステムと、
画像処理を実行する画像処理手段と、
原稿から画像を読み取るスキャナと、
記録媒体へ画像を形成するプリンタと
を備えることを特徴とする画像形成装置。
【請求項１６】
前記画像処理手段に関わる処理は、非リアルタイムでの前記メモリへのアクセスによるデータ転送を実行し、
前記スキャナ及び前記プリンタに関わる処理は、リアルタイムでの前記メモリへのアクセスによるデータ転送を実行することを特徴とする請求項１５に記載の画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリアクセスシステム、その制御方法、プログラム、及び画像形成装置に関するものである。
【背景技術】
【０００２】
メモリアクセスシステムを備える現行の画像形成装置には、スキャナ機能、プリンタ機能、コピー機能、ネットワーク機能、及びＦＡＸ送受信といった様々な機能を兼備えるデジタル複合機がある。デジタル複合機における機能動作は、通常、コントローラと称される画像入出力制御部により制御されている。
【０００３】
このようなコントローラでは、コストダウンのためＣＰＵ及び上記機能を実現する複数の機能処理部が１つのチップ内に集約されている。さらに、ＣＰＵのワークメモリ及び上記機能を実現する画像データ転送を行うためのメインメモリも集約されてきており、メインメモリへのデータアクセス量が非常に増大してきている。メインメモリへのデータアクセス量を増大させる要因には、スキャン性能及びプリント性能の高速化も挙げられる。特に、スキャンやプリントといった処理は、一度動作を開始すると、少なくとも処理中のページの入出力が完了するまでは停止することができないリアルタイム性が要求される処理である。つまり、コントローラとしては、リアルタイム処理が必須な画像処理に対するメインメモリへのアクセスは常に一定の転送帯域を保証しつつ、非リアルタイム処理機能もできる限り平行に動作させることが望ましい。言い換えれば、リアルタイム処理が必須な画像処理に対するメインメモリへのアクセスの転送帯域が保証できなくなる状況が発生しないようにコントローラは制御を行う必要がある。従って、全ての機能を動作させてもメモリ転送性能が十分保証できる高周波数・多ｂｉｔ幅のメモリを使用し十分なメモリ転送性能を確保する必要がある。
【０００４】
しかし、高周波数のメモリを使用することはメモリのコストアップ及び消費電力の増加に繋がり、多ｂｉｔ幅のメモリを使用することはチップのピン数増加によるチップ単価のコストアップに繋がってしまう。そこで、メモリの高周波数化及び多ビット化を抑制しつつ、リアルタイム処理機能のメインメモリへの転送帯域を確保すべく、リアルタイム処理機能部や非リアルタイム処理機能部とメインメモリ間の転送帯域をモニターし、メモリアクセスを制御する発明がある。
【０００５】
例えば、特許文献１には、予め設定された転送帯域を超えそうになった場合に非リアルタイム処理機能部からのアクセスを受け付けないように制御する技術が提案されている。これにより、リアルタイム処理部が全て動作しメインメモリの使用メモリ帯域が増大する状態において、非リアルタイム処理部の転送を受け付けないよう制御することで帯域を抑制し、リアルタイム処理の転送帯域を保証することが可能となる。
【０００６】
また、特許文献２には、リアルタイム処理機能部及び非リアルタイム処理機能部からのデータ転送単位を短くし、転送帯域に応じてそれぞれの処理機能部からのアクセスに対して、短くしたデータ転送単位毎にバス使用権を解放する技術が提案されている。これにより、リアルタイム処理部及び非リアルタイム処理部の転送が同時に起こる場合においても、リアルタイム処理の転送帯域を保証することが可能となる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１４−１６０３４１号公報
【特許文献２】特開２００９−７５９４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記従来技術には以下に記載する課題がある。例えば、上記従来技術では、メインメモリへのアクセスが集中していない状態でも非リアルタイム処理部の転送帯域がある閾値を超えそうになると転送帯域が抑制されてしまう。また、メインメモリへのアクセスが集中していない状態でも短いデータ転送単位でのバス使用権の解放が行われてしまう。これらの場合には、メインメモリが有するメモリ転送性能を十分に使いきることができない可能性が高い。
【０００９】
また、ＳＤＲＡＭ等に代表されるメモリは、１つのアドレスを指定するだけで次に続くアドレスのデータを連続して転送するバースト転送によりメモリへの高速データ転送を実現しており、バースト長を長くすることでメモリ転送性能を向上することが可能となる。しかし、メインメモリへアクセスする全ての処理部のバースト長を長くしてしまうと、メインメモリに転送するデータ量が多くなり、各処理部によるメモリバスを占有する時間が大きくなってしまう。
【００１０】
本発明は、上述の問題に鑑みて成されたものであり、メモリで使用されている使用メモリ帯域を監視して、メモリが有する転送性能を最大限使用しつつ、リアルタイム処理部の必要帯域を確保するように制御する仕組みを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、メモリアクセスシステムであって、メモリと、前記メモリにアクセスする複数のマスターと、前記メモリと前記複数のマスターとの間で使用されているメモリ帯域の合計を示す使用メモリ帯域を監視する監視手段と、前記監視手段によって監視されている前記使用メモリ帯域が第１の閾値以上であるか否かを判断する判断手段と、前記判断手段によって前記使用メモリ帯域が前記第１の閾値以上であると判断されると、前記複数のマスターのうち優先度の低いマスターによる前記メモリへのアクセスを制限するメモリアクセス制御手段とを備えることを特徴とする。
【００１２】
また、本発明は、メモリアクセスシステムであって、メモリと、前記メモリにアクセスする複数のマスターと、前記メモリと前記複数のマスターとの間で使用されているメモリ帯域の合計を示す使用メモリ帯域を監視する監視手段と、前記監視手段によって監視されている前記使用メモリ帯域が第１の閾値以上であるか否かを判断し、前記使用メモリ帯域が前記第１の閾値以上であると判断すると、前記複数のマスターのうち優先度の低いマスターによる前記メモリへのアクセスを制限するメモリアクセス制御手段とを備えることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、メモリで使用されている使用メモリ帯域を監視して、メモリが有する転送性能を最大限使用しつつ、リアルタイム処理部の必要帯域を確保するように制御することができる。
【図面の簡単な説明】
【００１４】
【図１】一実施形態に係る画像形成装置のブロック図。
【図２】一実施形態に係るコントローラ部のブロック図。
【図３Ａ】、
【図３Ｂ】一実施形態に係るコントローラ部の画像パス制御を示す図。
【図４】一実施形態に係る帯域例を示す図。
【図５】一実施形態に係る帯域モニターのブロック図。
【図６】一実施形態に係るＤＭＡＣのブロック図。
【図７】一実施形態に係る帯域制御用制御フローチャート。
【図８】一実施形態に係るＤＭＡＣのブロック図。
【図９】一実施形態に係るＤＭＡＣのブロック図。
【図１０】一実施形態に係る帯域制御用制御フローチャート。
【図１１Ａ】、
【図１１Ｂ】一実施形態に係るＲＡＭ制御に関するタイミングチャート。
【発明を実施するための形態】
【００１５】
以下に本発明の一実施形態を示す。以下で説明される個別の実施形態は、本発明の上位概念、中位概念及び下位概念など種々の概念を理解するために役立つであろう。また、本発明の技術的範囲は、特許請求の範囲によって確立されるのであって、以下の個別の実施形態によって限定されるわけではない。
【００１６】
＜第１の実施形態＞
＜画像形成装置の構成＞
以下では、本発明の第１の実施形態について説明する。まず、図１を参照して、本実施形態に係る画像形成装置１００の構成例について説明する。なお、本実施形態では、メモリアクセスシステムの一例として画像形成装置を例に説明を行う。なお、本発明を画像形成装置に限定する意図はない。即ち、本発明は、以下で説明する特徴的なメモリアクセスシステムを有する装置であれば適用可能である。
【００１７】
画像形成装置１００は、スキャナ部１１０、コントローラ部１２０、操作部１３０、及びプリンタ部１４０を備える。スキャナ部１１０は、原稿画像を光学的に読み取り、画像データに変換する。また、スキャナ部１１０は、原稿を読取るための機能を持つ原稿読取部１１２と、原稿用紙を搬送するための機能を持つ原稿給紙部１１１とを備える。プリンタ部１４０は、記録紙を搬送し、その上に画像データを可視画像として印字して装置外に排出する。プリンタ部１４０は、複数種類の記録紙カセットを持つ給紙部１４２と、画像データを記録紙に転写、定着させる機能を持つ転写定着部１４１と、印字された記録紙をソート、ステイプルして機外へ出力する機能を持つ排紙部１４３とを備える。
【００１８】
コントローラ部１２０は、スキャナ部１１０及びプリンタ部１４０と電気的に接続され、さらにＬＡＮ、ＩＳＤＮ、インターネット／イントラネット等のネットワーク１５０と接続されている。コントローラ部１２０は、スキャナ部１１０を制御して、原稿の画像データを読込み、プリンタ部１４０を制御して画像データを記録用紙に出力してコピー機能を提供する。
【００１９】
また、コントローラ部１２０は、スキャナ部１１０から読み取った画像データを、コードデータに変換し、ネットワーク１５０を介して図示しないホストコンピュータへ送信するスキャナ機能を提供する。さらに、コントローラ部１２０は、ホストコンピュータからネットワーク１５０を介して受信したコードデータを画像データに変換し、プリンタ部１４０に出力するプリンタ機能を提供する。また、コントローラ部１２０は、ＩＳＤＮからデータを受信してプリントするＦＡＸ受信機能やＩＳＤＮへスキャンしたデータを送信するＦＡＸ送信機能を提供する。また、これらスキャンやプリント、ＦＡＸ送受信といった処理をジョブと称し、画像形成装置１００はこれらジョブを操作者からの指示に従って制御・処理するものである。操作部１３０は、コントローラ部１２０に接続され、液晶タッチパネルで構成され、画像形成装置１００を操作するためのユーザインタフェースを提供する。
【００２０】
＜コントローラ部の構成＞
次に、図２を参照して、本実施形態に係るコントローラ部１２０の構成例について説明する。コントローラ部１２０に備えられる内部ブロックのそれぞれについて詳細に説明する。
【００２１】
コントローラ部１２０は、ＣＰＵ２００、ＲＯＭＣ２１０、ＲＯＭ２１１、ネットワークＩＦ（ＮＷ＿ＩＦ）２２０、インターコネクト２３０、２３１、ＤＭＡＣ２４０〜２４６、スキャン処理部２５０、回転処理部２５１、変倍処理部２５２、ＲＩＰ処理部２５３、圧縮処理部２５４、伸張処理部２５５、プリント処理部２５６、ＭＥＭＣ２６０、ＲＡＭ２７０、及び帯域モニター２８０を備える。ＣＰＵ（Ｃｅｎｔａｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２００は、システム全体を制御するプロセッサである。
【００２２】
ＣＰＵ２００は、ＲＡＭ２７０に展開されたＯＳや制御プログラムに従ってプリント処理やスキャン処理といったジョブに関わる処理を統括的に制御する。ＲＯＭＣ２１０は、システムのブートプラグラムを格納しているＲＯＭ２１１にアクセスするための制御モジュール（ＲＯＭコントローラ）である。画像形成装置１００の電源がＯＮされたときに、ＣＰＵ２００はＲＯＭコントローラ２１０を介してＲＯＭ２１１にアクセスし、ＣＰＵ２００がブートする。ＲＡＭ２７０はＣＰＵ２００が動作するためのシステムワークメモリであり、画像データを一時記憶するための画像メモリでもある。本実施形態では一例としてＳＤＲＡＭで構成されるものとする。
【００２３】
ＭＥＭＣ２６０は、システムの制御プログラムや画像データが格納されるＲＡＭ２７０にアクセスするための制御モジュール（Ｍｅｍｏｒｙコントローラ）である。ＭＥＭＣ２６０は、ＲＡＭ２７０の設定や制御を行うためのレジスタを備えており、このレジスタは、ＣＰＵ２００からアクセス可能である。ＭＥＭＣ２６０の詳細な構成については後述する。
【００２４】
ネットワークＩＦ２２０は、ネットワーク１５０に接続し、外部のホストコンピュータと画像データなどの情報の入出力を行う処理部である。インターコネクト２３０、２３１は、ＣＰＵ２００や各処理部とＭＥＭＣ２６０を接続する。
【００２５】
ＤＭＡＣ２４０〜２４６は、メモリアクセス制御手段として機能し、ＭＥＭＣ２６０を介してＲＡＭ２７０へアクセスするメモリアクセスマスターとなるＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラである。後述する各処理部２５０〜２５６とＲＡＭ２７０間のデータ転送を行う。ＤＭＡＣ２４０〜２４６はＣＰＵ２００により制御され、どのメモリアドレスに対し読み書きをするか、及びＤＭＡ転送を行うタイミングを制御する機能を有する。本実施形態において詳細は後述するが、ＤＭＡＣ２４０〜２４６は、ＣＰＵ２００からの設定により、メモリへの画像転送要求を発行しないよう制御する機能を有する。
【００２６】
以下で説明するスキャン処理部２５０、回転処理部２５１、変倍処理部２５２、ＲＩＰ処理部２５３、圧縮処理部２５４、伸張処理部２５５、及びプリント処理部２５６についても、ＣＰＵ２００によって統括的に制御される。また、各処理部を説明する上で画像データとは、圧縮されていない画像のことを示し、圧縮画像データとは、何らかの圧縮方式で圧縮された画像のことを示す。
【００２７】
スキャン処理部２５０は、ＣＰＵ２００により設定された設定に従い、スキャナ部１１０から入力される画像データに対し、シェーディング補正処理、ＭＴＦ補正処理、入力ガンマ補正やフィルタ処理等の画像処理を行い、ＤＭＡＣ２４０に画像データを出力する。回転処理部２５１は、ＣＰＵ２００により設定された設定に従い、ＤＭＡＣ２４１から入力される画像データに対し９０度、１８０度、２７０度の回転処理を行い、ＤＭＡＣ２４１に画像データを出力する。変倍処理部２５２は、ＣＰＵ２００により設定された設定に従い、ＤＭＡＣ２４２から入力される画像データに対し１／２倍、１／４倍等任意の倍率に変倍し、ＤＭＡＣ２４２に画像データを出力する。ＲＩＰ処理部２５３は、ＣＰＵ２００により設定された設定に従い、ＤＭＡＣ２４３から入力されるＰＤＬ画像に対しレンダリング処理を行い、ＤＭＡＣ２４３に画像データを出力する。
【００２８】
圧縮処理部２５４は、ＣＰＵ２００により設定された設定に従い、ＤＭＡＣ２４４から入力される画像データに対しＪＰＥＧ、ＪＢＩＧといった画像圧縮処理を行い、ＤＭＡＣ２４４に圧縮画像データを出力する。伸張処理部２５５は、ＣＰＵ２００により設定された設定に従い、ＤＭＡＣ２４５から入力されるＪＰＥＧ、ＪＢＩＧのような圧縮画像データに対し伸張処理を行い、ＤＭＡＣ２４５に伸張後の画像データを出力する。プリント処理部２５６は、ＣＰＵ２００により設定された設定に従い、ＤＭＡＣ２４５から入力される画像データに対し、色空間変換処理、フィルタ処理、ハーフトーン処理等の画像処理を行い、プリンタ部１４０に画像データを出力する。
【００２９】
ここまで説明したＤＭＡＣ及びインターコネクトとＭＥＭＣ間のバス２９０〜２９８は、標準バスであるＡＸＩ＿ＢＵＳ等で接続されているものとする。
【００３０】
次に、ＭＥＭＣ２６０の内部構成について説明する。バッファ２６１〜２６４は、各ＤＭＡＣ及びインターコネクトからの受信データ、及び、送信データを一時的にバッファリングするバッファである。各バッファ２６１〜２６４は、バス２９０〜２９３で一度にバースト転送可能なバッファサイズを少なくとも有する。また、各バッファ２６１〜２６４は、バス２９０〜２９３の動作周波数とバスコンバータの動作周波数が異なる場合には非同期対応バッファにもなる。バスコンバータ２６５は、各バッファ２６１〜２６４のアクセス権をラウンドロビンで調停する調停機能と、ＲＡＭ２７０へアクセスするためのプロトコルへの変換を行う。
【００３１】
帯域モニター２８０は、バス２９０〜２９３の転送データ量をモニターし、転送データの合計帯域を算出する。合計帯域とは、ＲＡＭ２７０に対する使用メモリ帯域を示す。算出した使用メモリ帯域はＣＰＵ２００から読み出し可能である。また、帯域の閾値をＣＰＵ２００から設定可能であり、使用メモリ帯域が設定された閾値以上か、或いは合計帯域が設定された閾値以下であることを検知することも可能である。詳細については、図５の帯域モニター２８０の詳細ブロック図を用いて後述する。
【００３２】
＜画像パス及びアクセス制御＞
次に、図３Ａ及び図３Ｂを参照して、本実施形態における画像パスと、本実施形態を適用した場合に、どのように画像データ転送が抑制されるかについて説明する。ここで、画像パスとは、コントローラ部１２０内部の画像データの流れのことを示す。なお、画像データの送受信や転送に関わる主体は、図３Ａ及び図３Ｂに示す矢印を通過する各ブロックとなる。なお、図３Ａには、図３（ａ）、図３（ｂ）、及び図３（ｃ）が含まれ、図３Ｂには、図３（ｄ）及び図３（ｅ）が含まれる。
【００３３】
まず、図３（ａ）乃至図３（ｅ）の図を説明する上での前提について説明する。各画像処理部と画像処理部間で画像を転送する場合は、必ずＲＡＭ２７０を介して画像データの転送が行われる。また、各図に示す太い矢印は、リアルタイム処理が必須である画像パス（以下では、リアルタイム画像パスと称する。）を示し、細い矢印は非リアルタイム処理である画像パス（以下では非リアルタイム画像パスと称する。）を示す。本実施形態におけるリアルタイム画像パスは、スキャナ部１１０から画像データの入力が開始されＲＡＭ２７０に画像データを転送するパスと、ＲＡＭ２７０に格納された画像データをプリンタ部１４０に転送するパスである。
【００３４】
スキャナ部１１０は原稿画像を読み取るため、一度読み出しを開始すると途中で停止することができない。よって、スキャナ部１１０からコントローラ部１２０に画像データの入力が開始されると、コントローラ部１２０はある一定量の画像データをＲＡＭ２７０に止まることなく転送し続ける必要がある。一方、プリンタ部１４０は一度プリントを開始すると途中で停止することができない。よって、コントローラ部１２０は画像データをプリンタ部１４０に出力開始すると、コントローラ部１２０から一定量の画像データを常にＲＡＭ２７０から読み出しプリンタ部１４０に出力する必要がある。このように、ある一定時間で決まった画像データ転送を必ず常に行い続ける必要があるパスがリアルタイム画像パスとなる。
【００３５】
ここから、図３（ａ）乃至図３（ｅ）を参照して、本実施形態おける画像パスの例と、本実施形態におけるＲＡＭ２７０へのデータ転送アクセス競合時の画像転送制御について説明する。より具体的には、データ転送アクセス競合時にメモリアクセスが混雑し、ＲＡＭ２７０の使用メモリ帯域が、ＲＡＭ２７０の実質的な転送帯域を超えそうになった場合の画像データ転送の抑制方法について説明する。
【００３６】
図３（ａ）は、ＳＥＮＤジョブを実行する場合の画像パスの例であり、実線の矢印で示される。ＳＥＮＤジョブとは、スキャナ部１１０から読み取った画像データを圧縮し、ネットワーク１５０上に接続される図示しないＰＣやサーバに転送するジョブのことである。Ｔ１で、スキャナ部１１０から読み取った画像データがＲＡＭ２７０にスプールされる。続いて、Ｔ２で、Ｔ１でスプールした画像データがＲＡＭ２７０から圧縮処理部２５４に転送されてＪＰＥＧ等の画像圧縮が行われ、Ｔ３で圧縮した圧縮画像データが圧縮処理部２５４からＲＡＭ２７０にスプールされる。その後、Ｔ４で、Ｔ３でスプールした圧縮画像データがＲＡＭ２７０からネットワークＩＦ２２０を介してネットワーク上に転送される。
【００３７】
図３（ｂ）は、ＰＤＬ＿ＰＲＩＮＴジョブを実行する場合の画像パスの例であり、破線の矢印で示される。ＰＤＬ＿ＰＲＩＮＴジョブとは、ネットワーク１５０上に接続される図示しないＰＣから、プリント処理を行うための印刷データを受信し、プリンタ部１４０に出力し印刷するジョブのことである。Ｔ１０で、ネットワーク上からＰＤＬデータがネットワークＩＦ２２０を介して受信され、ＲＡＭ２７０にスプールされる。続いて、Ｔ１１で、Ｔ１０でスプールされたＰＤＬデータがＲＡＭ２７０からＲＩＰ処理部２５３に転送されてレンダリング処理が行われ、Ｔ１２で画像データがＲＩＰ処理部２５３からＲＡＭ２７０にスプールされる。
【００３８】
次に、Ｔ１３で、Ｔ１２でスプールされた画像データがＲＡＭ２７０から圧縮処理部２５４に転送されてＪＢＩＧ等の画像圧縮が行われ、Ｔ１４で圧縮した圧縮画像データが圧縮処理部２５４からＲＡＭ２７０にスプールされる。続いて、Ｔ１５で、Ｔ１４でスプールされた圧縮画像データがＲＡＭ２７０から伸張処理部２５５に転送されて画像伸張が行われ、Ｔ１６で伸張した画像データが伸張処理部２５５からＲＡＭ２７０にスプールされる。Ｔ１７で、Ｔ１６でスプールされた画像データがＲＡＭ２７０から読み出されてプリンタ部１４０に出力される。
【００３９】
図３（ｃ）は、上記図３（ａ）と図３（ｂ）に示すＳＥＮＤジョブとＰＤＬ＿ＰＲＩＮＴジョブが同時に実行された場合の画像パスの例である。画像パスの説明については図３（ａ）と図３（ｂ）で説明したため省略する。このようにＳＥＮＤジョブとＰＤＬ＿ＰＲＩＮＴジョブが競合した場合には、当然動作する画像パスも増え、ＲＡＭ２７０へのデータ転送量が増大、つまり使用メモリ帯域が増大する。
【００４０】
ＲＡＭ２７０の使用メモリ帯域が増大しＲＡＭ２７０の可能な転送帯域を上回ってしまうと、リアルタイム画像パスであるスキャン画像パス（Ｔ１）とプリント画像パス（Ｔ１７）が必要な転送帯域が満たせなくなる。このような状況に陥ると、コントローラ部１２０のシステムとしては破綻してしまう。従って、このような状況を回避するため、本実施形態では、図３（ｄ）に示すように、ＲＡＭ２７０における使用メモリ帯域が、当該ＲＡＭ２７０が可能な転送帯域を上回りそうな場合には、非リアルタイム画像パスのデータ転送を一時停止するよう制御する。具体的には、ＣＰＵ２０帯域モニター２８０を使用し、ＤＭＡＣ２４１〜２４５を制御することにより実現する。このように制御することにより、コントローラ部１２０がシステムとして破綻しないことを保証する。
【００４１】
また、図３（ｅ）に示すように、ＲＡＭ２７０で可能な転送帯域がある程度高い場合には、非リアルタイム画像パスの一部のみについては、ＲＡＭ２７０でアクセスできるようにＣＰＵ２００によって制御することも可能である。本実施形態では、リアルタイム画像パスの必要転送帯域は保証しつつ、ＳＥＮＤジョブをできる限り優先して処理する場合を想定した動作である。しかしながら、本発明は、これに限定されず装置の仕様や設定等により他の処理を優先して処理するように制御してもよい。
【００４２】
＜転送帯域＞
次に、図４を参照して、図３で説明したＲＡＭ２７０で可能な転送帯域、及び、スキャン画像パス（Ｔ１）とプリント画像パス（Ｔ１７）の必要帯域の詳細について説明する。
【００４３】
図４（ａ）はＲＡＭ２７０で可能な転送帯域（メモリ帯域）を示す。算出方法は以下の式（１）、
メモリ帯域［ＭＢ／ｓ］＝メモリ動作周波数［ＭＨｚ］＊メモリバス幅［ｂｉｔ］＊メモリ効率［％］／８・・・（１）
となる。
【００４４】
ここで、メモリ動作周波数はＲＡＭ２７０の動作周波数である。メモリバス幅はＭＥＭＣ２６０とＲＡＭ２７０の間のデータ転送信号のバス幅のｂｉｔ数である。メモリ効率は実際のＭＥＭＣ２６０とＲＡＭ２７０の間の転送効率である。転送効率は、ＲＡＭ２７０へのアクセスパターンにより変化するものである。
【００４５】
図４（ｂ）はスキャン画像パス（図３のＴ１）の必要帯域を示す。算出方法は以下の式（２）、
スキャン画像パス必要帯域＝（１ページあたりの画素数＊１ｃｏｍｐｏｎｅｎｔあたりのｂｉｔ幅＊ｃｏｍｐｏｎｅｎｔ数）＊（ｉｐｍ／６０）＊（１／１−画像転送以外の割合）／８・・・（２）
となる。
【００４６】
ここで、１ページあたりの画素数は、スキャン対象となる原稿の１ページ分の画素数である。例えば、６００［ｄｐｉ］のＡ４サイズの画素数は約３５［Ｍｐｉｘｅｌ］となる。Ｃｏｍｐｏｎｅｎｔ（コンポーネント）については、例を挙げて説明する。例えばスキャン処理部２５０がＲＡＭ２７０に転送する画像データがＲＧＢ画像で１色あたりの諧調が２５６諧調であれば、ｃｏｍｐｏｎｅｎｔあたりのｂｉｔ幅は８ｂｉｔ幅であり、ｃｏｍｐｏｎｅｎｔ数は３色あるため３となる。また、スキャン処理部２５０が出力する画像データの諧調が１０２４諧調であればｃｏｍｐｏｎｅｎｔあたりのｂｉｔ幅は１０ｂｉｔとなる。さらに、ＲＧＢの画像以外に文字・写真といった画像識別情報を加えて出力する場合は、ＲＧＢ＊画像識別情報でｃｏｍｐｏｎｅｎｔ数は４となる。ｉｐｍはスキャナ部１１０の読み取り性能を示し、１分間に何枚の原稿をスキャンして読み出せるかを示す。画像転送以外の割合は、スキャナ部１１０から画像が入力される場合の実際に画像が転送されている以外の時間の割合を示す。
【００４７】
図４（ｃ）はプリント画像パス（図３のＴ１７）の必要帯域を示す。算出方法は以下の式（３）、
プリント画像パス必要帯域＝（１ページあたりの画素数＊１ｃｏｍｐｏｎｅｎあたりのｂｉｔ幅＊ｃｏｍｐｏｎｅｎｔ数）＊（ｐｐｍ／６０）＊（１／１−画像転送以外の割合）／８・・・（３）
となる。
【００４８】
式（２）との算出方法の違いは、ｉｐｍとｐｐｍのみであり、ｐｐｍは１分間に何枚のシート（記録媒体）にプリントできるかを示す。その他の変数等については式（２）と同様であるため説明を省略する。
【００４９】
このように、ＲＡＭ２７０は、画像形成装置１００のスキャン読取速度及びプリント出力速度を少なくとも保証し、かつ、ＣＰＵ等が最低限動作可能なメモリ帯域を有するものを選択する必要がある。
【００５０】
具体的に図４の例を用いて、スキャン性能が図４（ｂ）のスキャン帯域例２を前提とし、プリント性能が図４（ｃ）のプリント帯域例４の前提として説明する。この場合、スキャン処理の必要帯域である２３３［ＭＢ／ｓ］とプリント処理の必要帯域である９３３［ＭＢ／ｓ］とを合わせて１１６６［ＭＢ／ｓ］がメモリ帯域として最低限必要となる。より詳細には、ＣＰＵ２００等が少なくとも動作できる帯域についても最低保証する必要があるため、メモリ帯域は１１６６＋α［ＭＢ／ｓ］が必要となる。αはＣＰＵ２００が使用するメモリ帯域である。
【００５１】
よって、コントローラ部１２０がスキャン処理とプリント処理を同時に動作可能とする場合は、図４（ａ）に示すメモリ帯域例１のメモリ動作周波数が１０６６［ＭＨｚ］のメモリは１０６６［ＭＢ／ｓ］しか出ないため選択できない。従って、本実施形態においては、少なくとも図４（ａ）のメモリ帯域例２のメモリ動作周波数が１８６６［ＭＨｚ］の１８６６［ＭＢ／ｓ］の性能を有するメモリを選択する必要がある。余りの帯域を非リアルタイム画像パスに割り当て可能であるため、より動作周波数の早いメモリを選択すると、非リアルタイム画像パスも同時に動作できる可能性が高くなる。
【００５２】
以下では、図３（ｄ）に示す動作を実現するための構成及びフローについて詳細に説明する。
【００５３】
＜帯域モニターの構成＞
次に、図５を参照して、本実施形態に係る帯域モニター２８０の構成例について説明する。内部ブロックそれぞれについて詳細に説明する。帯域モニター２８０は、帯域計算部３００、帯域閾値設定部３１０、３１１、及び帯域閾値検知部３２０、３２１を備える。
【００５４】
帯域計算部３００は、ＲＡＭ２７０の使用メモリ帯域を測定するために用いられるものである。具体的には、バス２９０、２９１、２９２、２９３のデータ転送を帯域計算部３００によりモニターし、ＲＡＭ２７０の現在の使用メモリ帯域を算出する。帯域計算部３００の算出する使用メモリ帯域は、ＣＰＵ２００から読み取り可能である。また、帯域計算部３００は、算出した使用メモリ帯域を信号線を介して帯域閾値検知部３２０、３２１へ出力する。なお、図５では、バス２９０〜２９３を概念的に矢印で示しているが、これはバス２９０〜２９３を帯域モニター２８０がモニターし、情報を取得していることを示すものである。
【００５５】
また、図５では、帯域計算部３００から各ＤＭＡＣへ算出した使用メモリ帯域を出力している。これは、後述する第２の実施形態における構成であるため、ここでの説明は省略する。
【００５６】
帯域閾値設定部３１０、３１１は、ＣＰＵ２００により帯域の閾値を設定することが可能である。帯域閾値設定部３１０、３１１に設定された閾値は、現在の帯域計算部３００により計測されたＲＡＭ２７０の現在の使用メモリ帯域との比較に用いられる。
【００５７】
帯域閾値検知部３２０、３２１は帯域閾値設定部３１０、３１１に設定された閾値と、帯域計算部３００の算出する現在の使用メモリ帯域を比較し、ＣＰＵ２００に通知する。通知条件はＣＰＵ２００から設定可能であり、帯域計算部３００の算出する使用メモリ帯域が帯域閾値設定部３１０、３１１に設定された閾値を超えている場合、或いは帯域閾値設定部３１０、３１１に設定された閾値を下回る場合のいずれの条件設定が可能である。この帯域モニター２８０により、ＣＰＵ２００はＲＡＭ２７０の現在の使用メモリ帯域を知ることが可能となる。なお、本実施形態では、帯域閾値設定部及び帯域閾値検知部は２つしか設けていないが、複数の条件を作りたい場合は、３つ以上を設ける構成でもよい。
【００５８】
＜ＤＭＡＣの構成例＞
次に、図６を参照して、本実施形態に係るＤＭＡＣ２４１〜２４５の構成例について説明する。内部ブロックそれぞれについて詳細に説明する。ＤＭＡＣ２４１〜２４５は全てＣＰＵ２００により制御される。ＤＭＡＣ２４１〜２４５は、それぞれ送信バッファ４００、ＷＲＩＴＥ＿ＤＭＡＣ４１０、受信バッファ４２０、ＲＥＡＤ＿ＤＭＡＣ４３０、及び転送許可設定部４５０を備える。
【００５９】
送信バッファ４００とＷＲＩＴＥ＿ＤＭＡＣ４１０とは、各画像処理部からＲＡＭ２７０にデータを転送（ＲＡＭ２７０に書き込み）する場合に使用される。受信バッファ４２０とＲＥＡＤ＿ＤＭＡＣ４３０とは、ＲＡＭ２７０から各画像処理部にデータを転送（ＲＡＭ２７０から読み出し）する場合に使用される。
【００６０】
送信バッファ４００は、各画像処理部から入力されるデータを一時的に保持するバッファである。ＷＲＩＴＥ＿ＤＭＡＣ４１０はＲＡＭ２７０にデータを書き込むためのデータ転送を行うコントローラである。バースト転送を含め、一度に転送するデータが送信バッファ４００に溜まっているかを確認し、溜まっていれば画像データをバス（２９４〜２９８）に転送する。
【００６１】
受信バッファ４２０は、ＲＥＡＤ＿ＤＭＡＣ４３０から入力されるデータを一時的に保持するバッファである。受信バッファ４２０にデータが保持されると、各画像処理部にデータの転送を行う。ＲＥＡＤ＿ＤＭＡＣ４３０は、受信バッファ４２０にバースト転送を含め、一度に受信するデータを格納するための空き領域があるかを確認し、空き領域がある場合に読み出し要求をバス（２９４〜２９８）に出力し、画像データを受信する。
【００６２】
転送許可設定部４５０は、ＷＲＩＴＥ＿ＤＭＡＣ４１０及びＲＥＡＤ＿ＤＭＡＣ４３０のデータ転送を行える状態とするか、データ転送を停止させるかを制御するための設定部で、ＣＰＵ２００により設定される。ＷＲＩＴＥ＿ＤＭＡＣ４１０及びＲＥＡＤ＿ＤＭＡＣ４３０は、転送許可設定部４５０の出力するＥｎａｂｌｅ信号が許可の場合にはデータ転送のリクエストを上げることが可能である。一方、Ｅｎａｂｌｅ信号が停止の場合にはデータ転送のリクエストを上げることができなくなる。例えば、バス２９４〜２９８は本実施形態においてはＡＸＩ＿ＢＵＳであるので、ライトアドレスチャネル及びリードアドレスチャネルからＶＡＬＩＤ信号をアサートしないよう制御される。
＜処理フロー＞
次に、図７を参照して、本実施形態におけるメモリの使用メモリ帯域に応じた帯域抑制方法を制御する処理フローについて説明する。以下で説明する処理は、例えばＣＰＵ２００がＲＯＭ２１１に格納されている制御プログラムをＲＡＭ２７０に読み出して実行することにより実現される。
【００６３】
Ｓ１０１で、ＣＰＵ２００は、帯域モニター２８０で監視している使用メモリ帯域が閾値以上になっていないかを判断する。閾値以上になっていない場合はＳ１０１の判断を繰り返し行う。閾値以上になった場合はＳ１０２に進む。使用メモリ帯域が閾値以上になるかの判断方法は、帯域モニター２８０内の帯域閾値検知部３２０からの通知で検知することができる。本閾値とは、図４（ａ）に示したメモリ帯域のことであり、帯域閾値設定部３１０、３１１に予め設定されているものである。
【００６４】
Ｓ１０２で、ＣＰＵ２００は、使用メモリ帯域が閾値以上になったため、低優先度の処理用である非リアルタイム画像パスで使用されるＤＭＡＣ２４１〜２４５の転送許可設定部４５０に停止設定を行う。当該停止設定により、ＤＭＡＣ２４１〜２４５はデータ転送リクエストを上げないよう動作し、ＲＡＭ２７０の使用メモリ帯域が下がり、図４（ａ）に記載のメモリ帯域を超えないよう制御することが可能となる。
【００６５】
Ｓ１０３で、ＣＰＵ２００は、帯域モニター２８０で監視している使用メモリ帯域が閾値以下になっていないかを判断する。閾値以下になっていない場合はＳ１０３の判断を繰り返し行う。閾値以下になった場合はＳ１０４に進む。使用メモリ帯域が閾値以下になるかの判断方法は、帯域モニター２８０内の帯域閾値検知部３２１からの通知で検知する。
【００６６】
Ｓ１０４で、ＣＰＵ２００は、使用メモリ帯域が閾値以下になったため、非リアルタイム画像パスで使用されるＤＭＡＣ２４１〜２４５の転送許可設定部４５０に許可設定を行う。当該許可設定により、ＤＭＡＣ２４１〜２４５はデータ転送リクエストを上げることが可能となる。即ち、ここでは、Ｓ１０２で行ったメモリへのアクセス制限を解除している。
【００６７】
例えば、帯域閾値設定部３１１に設定する値を図４（ａ）に記載のメモリ帯域より少し小さい値を設定したとする。この場合、Ｓ１０２でＤＭＡＣ２４１〜２４５のデータ転送停止後すぐにＳ１０３で使用メモリ帯域が閾値以下となり、Ｓ１０４でＤＭＡＣ２４１〜２４５がデータ転送を再開するといった処理を繰り返すことになる。また、帯域閾値設定部３１１に設定する値を図４（ａ）に記載のメモリ帯域よりかなり小さい値にしたとする。この場合、帯域閾値設定部３１１に設定する値を図４（ａ）に記載のメモリ帯域より少し小さい値を設定した場合のように、頻繁に転送許可設定部４５０の設定を行うこともなくなる。
【００６８】
また、本実施形態では閾値は２つのみで実現しているが、図５の説明にあるように、帯域閾値設定部３１０及び帯域閾値検知部３２０を複数設けることも可能である。複数の閾値を用意しておくことで、それぞれの閾値に応じ各ＤＭＡＣ（２４１〜２４５）を停止・再開するようＣＰＵ２００が制御することで、図３（ｅ）に記載の動作を実現することが可能となる。この変形例は、後述する第２及び第３の実施形態にも適用可能である。
【００６９】
より具体的に例を挙げて説明する。例えば、３つの帯域閾値設定部３１０を設け、それぞれ１８６６［ＭＢ／ｓ］を超えた場合、１５００［ＭＢ／ｓ］を下回った場合、１２００［ＭＢ／ｓ］を下回った場合の３つの閾値を設定しているとする。各ＤＭＡＣ２４１〜２４５のＳ１０１で検出する閾値は１８６６［ＭＢ／ｓ］と共通である。一方、Ｓ１０３で検出する閾値として、ＤＭＡＣ２４４については１５００［ＭＢ／ｓ］を使用し、ＤＭＡＣ２４１、２４２、２４３、２４５については１２００［ＭＢ／ｓ］を使用するとする。
【００７０】
この場合、図３（ｃ）の状態になると、まず１８６６［ＭＢ／ｓ］を超えてしまうので、図３（ｄ）の状態になり、ＤＭＡＣ２４１〜２４５が全て一度停止する。この状態になるとやがて使用メモリ帯域が少なくなり、その後、使用メモリ帯域が１５００［ＭＢ／ｓ］を下回る。この状態になると、ＤＭＡＣ２４４のみが動作可能となる。この状態で１２００［ＭＢ／ｓ］を下回ると、その他のＤＭＡＣ２４１〜２４５も動作を開始するようになり、１２００［ＭＢ／ｓ］を下回らない場合は、図３（ｅ）の状態が保持される状況となる。
【００７１】
なお、変形例として各ＤＭＡＣ処理を停止又は再開するメモリ使用メモリ帯域を検知するための帯域閾値設定部３１０及び帯域閾値検知部３２０を備え、各ＤＭＡＣ毎に制御できる設定値を設定してもよい。これにより、各ＤＭＡＣ２４１〜２４５に優先度を付けたように動作させることが可能である。この変形例は、後述する第２及び第３の実施形態にも適用可能である。
【００７２】
以上説明したように、本実施形態に係るメモリアクセスシステムは、メモリと複数のマスターとの間で使用されているメモリ帯域の合計を示す使用メモリ帯域を監視し、当該使用メモリ帯域が第１の閾値以上であるか否かをＣＰＵで判断する。また、本メモリアクセスシステムは、上記ＣＰＵの判断に基づいて、複数のマスターのうち優先度の低いマスターによるメモリへのアクセスを制限する。このように、本実施形態では、ＲＡＭ２７０で使用されているメモリ帯域をモニターし、ＲＡＭ２７０で可能なメモリ帯域を超えそうになった場合にのみ非リアルタイム処理部からのＲＡＭ２７０へのメモリアクセス要求を発生しないように制御する。これにより、本実施形態によれば、ＲＡＭ２７０の使用可能な帯域を最大限使用しつつ、即ち、非リアルタイム処理部も限りなく使用可能な状況としつつ、リアルタイム処理部の転送帯域を保証することが可能となる。
【００７３】
＜第２の実施形態＞
以下では、本発明の第２の実施形態について説明する。上記第１の実施形態は、ＲＡＭ２７０の使用メモリ帯域がメモリ帯域に到達しそうになった場合に、ＣＰＵ２００に帯域モニター２８０の監視結果を通知し、ＣＰＵ２００がＤＭＡＣ２４１〜２４５を制御することでリアルタイム画像パスの帯域保証を行った。上記第１実施形態では、メモリ帯域が閾値に達してからＣＰＵ２００が制御するため最終的にＤＭＡＣ２４１〜２４５の転送許可設定部４５０の停止設定を行うまでには少し時間を要する。その少しの時間の間に、メモリ帯域の閾値を上回ってしまう可能性があるため、帯域閾値設定部３１０に設定する閾値は少しマージンを持たせて設定する必要がある。
【００７４】
一方、本実施形態では、上記第１の実施形態と異なる点として、ＤＭＡＣ２４１〜２４５の転送許可設定部４５０がＣＰＵ２００によって設定されるのではなく、ＤＭＡＣ２４１〜２４５内のハードウェアで制御を行う。ハードウェアで制御を行うことで、即座に転送許可設定部４５０の停止設定が行えるため、メモリ帯域の上限までメモリ転送帯域を使用することが可能となる。そのため、図５に示すように、本実施形態では、帯域計算部３００が算出した使用メモリ帯域が各ＤＭＡＣ２４１〜２４５へ通知される。ＤＭＡＣ２４１〜２４５は、通知された使用メモリ帯域に基づいて各マスターのＲＡＭ２７０へのアクセスを制御する。
【００７５】
＜ＤＭＡＣの構成＞
図８を参照して、本実施形態に係るＤＭＡＣ２４１〜２４５の構成例について説明する。内部ブロックそれぞれについて詳細に説明する。ＤＭＡＣ２４１〜２４５は全てＣＰＵ２００により制御される。ＤＭＡＣ２４１〜２４５は、上記第１の実施形態で説明した図６の構成と同様に、それぞれ送信バッファ４００、ＷＲＩＴＥ＿ＤＭＡＣ４１０、受信バッファ４２０、ＲＥＡＤ＿ＤＭＡＣ４３０、及び転送許可設定部４５０を備える。さらに、本実施形態に係るＤＭＡＣ２４１〜２４５は、転送許可判定部５６０、及び閾値設定部５６１を備える。
【００７６】
送信バッファ４００・ＷＲＩＴＥ＿ＤＭＡＣ４１０・受信バッファ４２０・ＲＥＡＤ＿ＤＭＡＣ４３０については図６で説明した構成と同様であるため説明は割愛する。以下では、図６に示した上記第１実施形態との差分について主に説明する。
【００７７】
各ＤＭＡＣ２４１〜２４５とＭＥＭＣ２６０との間のそれぞれには、帯域モニター２８０の帯域計算部３００が使用メモリ帯域を算出するための信号線が接続される。閾値設定部５６１はＣＰＵ２００により設定することが可能であり、帯域計算部３００が算出する使用メモリ帯域と比較するための閾値を設定する。転送許可判定部５６０は、帯域計算部３００が算出する使用メモリ帯域と、閾値設定部５６１の値を比較し、使用メモリ帯域が閾値設定部５６１に設定された閾値以上の場合は、停止設定を行うと判定する。一方、使用メモリ帯域が閾値設定部５６１に設定された閾値未満の場合は、転送許可判定部５６０は、許可設定を行うと判定する。当該判定結果は、転送許可設定部４５０に通知される。
【００７８】
転送許可設定部４５０は、上記第１実施形態と同じ構成であるが、ＣＰＵ２００によって制御されるのではなく、転送許可判定部５６０による判定結果に応じて制御される点のみ異なる。
【００７９】
また、本実施形態では、閾値設定部５６１にはある１つの閾値を設定し、転送許可判定部５６０はその閾値以上か未満かにより転送許可設定部の停止・許可設定を行っている。しかしながら、上記第１の実施形態のように、ある閾値を超えた場合に転送停止設定を行い、ある閾値を下回った場合に転送許可設定を行う構成としてもよい。
【００８０】
ここで、本実施形態の構成を採用する場合における、図３（ｃ）乃至図３（ｅ）に示す動作を行わせるための設定例について説明する。例えば、図７のフローチャートの説明と同様の動作をさせるための説明を行う。
【００８１】
各ＤＭＡＣ２４１〜２４５の閾値設定部５６１で停止設定を行う閾値を１８６６［ＭＢ／ｓ］に設定する。ＤＭＡＣ２４４の許可設定閾値には１５００［ＭＢ／ｓ］を設定し、ＤＭＡＣ２４１、２４２、２４３、２４５の許可設定閾値には１２００［ＭＢ／ｓ］を設定しておく。このように設定しておくことで、図３（ｃ）乃至図３（ｅ）に示す動作を上記第１の実施形態と同じように動作させることが可能となる。
【００８２】
当然別の設定値でも構わない。例えば、ＤＭＡＣ２４１、２４２、２４３、２４５の閾値設定部５６１で停止設定を行う閾値を１５００［ＭＢ／ｓ］としておけば、ＤＭＡＣ２４０、ＤＭＡＣ２４６が動作する転送帯域が保証されることはもちろんである。さらには、非リアルタイム画像パスであるが優先的に処理したいＤＭＡＣ２４４の動作する割合を高くすることも可能である。
【００８３】
以上説明したように、本実施形態に係るメモリアクセスシステムは、メモリと複数のマスターとの間で使用されているメモリ帯域の合計を示す使用メモリ帯域を監視し、当該使用メモリ帯域が第１の閾値以上であるか否かをＤＭＡＣで判断する。また、ＤＭＡＣは、当該判断結果に基づき、複数のマスターのうち優先度の低いマスターによるメモリへのアクセスを制限する。このように、本実施形態では、ＤＭＡＣ２４１〜２４５の転送許可設定部４５０をＤＭＡＣ２４１〜２４５内のハードウェアである転送許可判定部５６０が行う。これにより、ＣＰＵ２００で転送許可設定部４５０よりも即座に転送許可設定部４５０の停止設定を行うことが可能となる。よって、上記第１の実施形態と比べ、よりメモリ帯域の上限までメモリ転送帯域を使用することが可能となる。
【００８４】
＜第３の実施形態＞
以下では、本発明の第３の実施形態について説明する。本実施形態では、図３（ｄ）に示すように、ＲＡＭ２７０の使用メモリ帯域がＲＡＭ２７０で可能な転送帯域（メモリ帯域）を上回りそうな場合には、非リアルタイム画像パスのデータ転送の使用メモリ帯域を減らすためにバースト長を短くするように制御する。具体的には、ＣＰＵ２００が帯域モニター２８０を使用して、ＤＭＡＣ２４１〜２４５を制御することで上記制御を実現する。図３（ｄ）において、バースト長を短くしたＳＥＮＤジョブの非リアルタイム画像パスは点線の矢印で示され、バースト長を短くしたＰＤＬ＿ＰＲＩＮＴジョブの非リアルタイム画像パスは一点鎖線の矢印で示される。このように制御することにより、コントローラ部１２０がシステムとして破綻しないことを保証することができる。
【００８５】
＜ＤＭＡＣの構成＞
次に、図９を参照して、本実施形態におけるＤＭＡＣ２４１〜２４５の構成例について説明する。内部ブロックそれぞれについて詳細に説明する。ＤＭＡＣ２４１〜２４５は全てＣＰＵ２００により制御される。ここでは、上記第１の実施形態で説明した構成と異なる構成についてのみ説明する。
【００８６】
本実施形態に係るＤＭＡＣ２４１〜２４５はそれぞれ、図６の転送許可設定部４５０の構成に代えて、バースト長設定部４８０を備える。バースト長設定部４８０は、ＷＲＩＴＥ＿ＤＭＡＣ４１０及びＲＥＡＤ＿ＤＭＡＣ４３０のデータ転送時のバースト長を制御するための設定部であり、ＣＰＵ２００により設定される。ＷＲＩＴＥ＿ＤＭＡＣ４１０及びＲＥＡＤ＿ＤＭＡＣ４３０は、バースト長設定部４８０の出力するバースト長に従って、送信バッファ４００のデータの書き込み要求及び受信バッファ４２０へのデータの読み出し要求を出力する。
【００８７】
また、ＤＭＡＣのバースト長の初期値は設定可能な最大バーストサイズに設定される。当該最大バーストサイズは、バースト長設定部４８０に設定可能な最大バーストサイズ、又はＤＭＡＣがアクセスするバッファ（２６１〜２６４の何れか）と送信バッファ４００と受信バッファ４２０のそれぞれが格納できる最大バーストサイズから決定される。
【００８８】
＜処理フロー＞
次に、図１０を参照して、本実施形態におけるメモリの使用メモリ帯域に応じた帯域抑制方法を制御する処理フローについて説明する。以下で説明する処理は、例えばＣＰＵ２００がＲＯＭ２１１に格納されている制御プログラムをＲＡＭ２７０に読み出して実行することにより実現される。なお、ここでは、上記第１の実施形態で説明した図７の制御と異なるステップのみ説明する。即ち、処理フローでは、Ｓ１０２及びＳ１０４に代えて、Ｓ１００１及びＳ１００２が実行される。
【００８９】
Ｓ１００１で、ＣＰＵ２００は、使用メモリ帯域が閾値以上になってしまったため、非リアルタイム画像パスで使用されるＤＭＡＣ２４１〜２４５のバースト長設定部４８０にバースト長を短くする変更設定を行う。当該変更設定により、ＤＭＡＣ２４１〜２４５はデータ転送リクエストに対するデータ転送量が少なくなるよう動作し、ＲＡＭ２７０の使用メモリ帯域が下がり、図４（ａ）に記載のメモリ帯域を超えないよう制御することが可能となる。
【００９０】
また、Ｓ１０３で使用メモリ帯域が閾値以下になったと判断すると、Ｓ１００２に進み、ＣＰＵ２００は、非リアルタイム画像パスで使用されるＤＭＡＣ２４１〜２４５のバースト長設定部４８０にバースト長を長くする変更設定を行う。当該変更設定により、ＤＭＡＣ２４１〜２４５はデータ転送リクエストに対するデータ転送量が多くなるよう動作し、ＲＡＭ２７０の使用メモリ帯域を上げることが可能となる。
【００９１】
例えば、帯域閾値設定部３１１に設定する値を図４（ａ）に記載のメモリ帯域より少し小さい値にしてもよい。この場合、Ｓ１００１でＤＭＡＣ２４１〜２４５のデータ転送停止後すぐにＳ１０３で使用メモリ帯域が閾値以下となり、Ｓ１００２でＤＭＡＣ２４１〜２４５がデータ転送を再開するといった処理を繰り返すことができる。また、帯域閾値設定部３１１に設定する値を図４（ａ）に記載のメモリ帯域よりかなり小さい値にしてもよい。この場合、帯域閾値設定部３１１に設定する値を図４（ａ）に記載のメモリ帯域より少し小さい値を設定した場合のように、頻繁にバースト長設定部４８０の設定を行うこともなくなる。
【００９２】
また、本実施形態では閾値は２つのみで実現しているが、図５の説明にあるように、帯域閾値設定部３１０及び帯域閾値検知部３２０は複数備えることも可能である。複数の閾値を用意しておくことで、それぞれの閾値に応じ各ＤＭＡＣ（２４１〜２４５）のバースト長を変更するようＣＰＵ２００が制御し、図３（ｅ）に記載の動作を実現することが可能となる。より詳細には、帯域閾値設定部３１０を３つ設け、それぞれ１８６６［ＭＢ／ｓ］を超えた場合、１５００［ＭＢ／ｓ］を下回った場合、１２００［ＭＢ／ｓ］を下回った場合の３つの閾値を設定する。また、各ＤＭＡＣのバースト長の初期設定値はバースト長を８とする。各ＤＭＡＣ２４１〜２４５のＳ１０１で検出する閾値は１８６６［ＭＢ／ｓ］と共通である。Ｓ１０３で検出する閾値がＤＭＡＣ２４４は１５００［ＭＢ／ｓ］及び１２００［ＭＢ／ｓ］を使用し、ＤＭＡＣ２４１、２４２、２４３、２４５は１２００［ＭＢ／ｓ］のみを使用するとする。
【００９３】
この場合、図３（ｃ）の状態になると、まず１８６６［ＭＢ／ｓ］を超えてしまうので、図３（ｄ）の状態になり、ＤＭＡＣ２４１〜２４５が全て短いバースト長（バースト長２）に変更される。この状態になるとやがて使用メモリ帯域が少なくなり、その後使用メモリ帯域が１５００［ＭＢ／ｓ］を下回る。この状態になると、ＤＭＡＣ２４４のみが長いバースト長（バースト長４）に変更される。この状態で１２００［ＭＢ／ｓ］を下回ると、各ＤＭＡＣ（２４１〜２４５）を最大バースト長（バースト長８）に変更されるようになり、１２００［ＭＢ／ｓ］を下回らない場合は、図３（ｅ）の状態が保持される状況となる。
【００９４】
このように、帯域閾値に応じてバースト長を段階的に変更することで、帯域に応じた使用メモリ帯域の制御が可能となる。本実施形態では一例を記載したが、各ＤＭＡＣのバースト長を変更するメモリ使用メモリ帯域を検出するための帯域閾値設定部３１０及び帯域閾値検知部３２０を設け、ＤＭＡＣ毎に制御できる設定値を設定してもよい。これにより、各ＤＭＡＣ２４１〜２４５に優先度を付けたように動作させることが可能となる。
【００９５】
＜タイミングチャート＞
次に、図１１Ａ及び図１１Ｂを参照して、リアルタイム処理のＳＥＮＤジョブの書き込み画像データ転送及びＰＤＬ＿ＰＲＩＮＴジョブの読み出し画像データ転送と、非リアルタイム処理の書き込み画像データ転送が同時に発生した場合の動作を説明する。ここでは、ＤＭＡＣ２４０、２４６及び２４４は、２６６ＭＨｚで動作するバス幅１２８ｂｉｔのバスに接続され、それぞれバースト長８のリクエストを発行するものとする。また、ＲＡＭ２７０は５３３ＭＨｚの両エッジでデータ転送が行われるバス幅３２ｂｉｔのＲＡＭである。つまり、バスのバースト長１のデータは、ＲＡＭクロックの４サイクル分で転送される。
【００９６】
以下では、非リアルタイム処理のバースト長を短く変更しない場合とバースト長を短く変更した場合の使用メモリ帯域ついて説明する。まず、図１１Ａを用いて、非リアルタイム処理のバースト長を短くしない場合の動作について説明する。
【００９７】
サイクル１において、ＤＭＡＣ２４０、２４６、２４４がバスリクエスト（ＲｅｑＳ０、ＲｅｑＰ０、ＲｅｑＬ０）を発行する。ＤＭＡＣ２４０、２４４が書き込む画像データ（ＤａｔａＳ０、ＤａｔａＬ０）はサイクル３からサイクル１０にわたって転送され、バッファ２６１、２６２に書き込まれる。一方、ＤＭＡＣ２４６のバスリクエスト（ＲｅｑＰ０）はＲＡＭ２７０からの読み出しリクエストのため、サイクル３からサイクル１０にわたってＲＡＭ２７０から画像データの読み出しが行われる。
【００９８】
次に、サイクル１２からサイクル１９において、バッファ２６１に格納されたＤＭＡＣ２４０からの書き込み画像データ（ＤａｔａＳ０）がＲＡＭ２７０に転送される。一方、ＲＡＭ２７０から読み出された読み出し画像データ（ＤａｔａＰ０）がＤＭＡＣ２４６に転送される。
【００９９】
サイクル２１では、ＤＭＡＣ２４０は、バッファ２６１の画像データ（ＤａｔａＳ０）がＲＡＭ２７０に書き込まれてバッファに空きがあるため、次のバスリクエスト（ＲｅｑＳ１）を発行する。また、同様に、ＤＭＡＣ２４６は、バスリクエスト（ＲｅｑＰ０）に対する読み出しデータ（ＤａｔａＰ０）の読み出しが完了したため、次のバスリクエスト（ＲｅｑＰ１）を発行する。
【０１００】
サイクル２１からサイクル２８にわたって、バッファ２６２に書き込まれた画像データ（ＤａｔａＬ０）の書き込みが行われる。サイクル３０において、ＤＭＡＣ２４４は、バッファ２６２の画像データ（ＤａｔａＬ０）がＲＡＭ２７０に書き込まれてバッファに空きがあるため、次のバスリクエスト（ＲｅｑＬ１）を発行する。
【０１０１】
このように、ＲＡＭ２７０への画像データの転送は順に行われる。また、リアルタイム処理であるＤＭＡＣ２４０，２４６の２回分のバスリクエストに対する画像データの転送はサイクル４６で完了する。
【０１０２】
続いて、図１１Ｂを用いて、非リアルタイム処理のバースト長をバースト長２に変更した場合の動作について説明する。ＤＭＡＣ２４０、２４６の動作について、サイクル１からサイクル２１までは図１１Ａと同様のため説明は割愛する。
【０１０３】
一方、ＤＭＡＣ２４４は、バースト長２の設定のため、サイクル３からサイクル４で画像データ（ＤａｔａＬ０）がバッファ２６２に書き込まれる。バッファ２６２に書き込まれた画像データ（ＤａｔａＬ０）は、サイクル２１からサイクル２２でＲＡＭ２７０に書き込まれる。
【０１０４】
ＤＭＡＣ２４４からの画像データの転送はバースト長２のため、ＲＡＭ２７０への画像転送はサイクル２２で解放される。従って、サイクル２１で発行されたバスリクエスト（ＲｅｑＰ１）の画像データの読み出しがサイクル２４からサイクル３１で行われ、サイクル３３からサイクル４０でＤＭＡＣ２４０からの画像データ（ＤａｔａＳ１）の書き込みが行われる。
【０１０５】
このように、非リアルタイム処理であるＤＭＡＣ２４４におけるバースト長をバースト長２に変更した場合、リアルタイム処理であるＤＭＡＣ２４０、２４６の２回分のバスリクエストに対する画像データの転送はサイクル４０で完了する。なお、ここでは、リアルタイム処理をバースト長８、非リアルタイム処理をバースト長２とした一例を記載した。しかしながら、本発明はこれに限定されず、リアルタイム処理のバースト長を更に長くしたり、非リアルタイム処理のバースト長を更に短くすることで、リアルタイム処理に割り当てられる帯域を上げることが可能である。
【０１０６】
以上説明したように、本実施形態によれば、ＲＡＭ２７０で使用されている使用メモリ帯域をモニターし、ＲＡＭ２７０で可能なメモリ帯域を超えそうになった場合にのみ非リアルタイム処理部からのＲＡＭ２７０へのメモリアクセス要求に対する使用メモリ帯域を下げる。これにより、ＲＡＭ２７０の使用可能な帯域を最大限使用しつつ、即ち、非リアルタイム処理部も限りなく使用可能な状況としつつ、リアルタイム処理部の転送帯域を保証することが可能となる。なお、本実施形態は、上記第１及び第２の実施形態とそれぞれ組み合わせて適用することが可能である。即ち、メモリアクセス要求に対する使用メモリ帯域を下げる判定をＣＰＵ２００で行ってもよいし、各ＤＭＡＣで行ってもよい。
【０１０７】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１０８】
１００：画像形成装置、１１０：スキャナ部、１２０：コントローラ部、１３０：操作部、１４０：プリンタ部、２００：ＣＰＵ、２１０：ＲＯＭＣ、２１１：ＲＯＭ、２２０：ネットワークＩＦ、２３０、２３１：インターコネクト、２４０〜２４６：ＤＭＡＣ、２５０：スキャン処理部、２５１：回転処理部、２５２：変倍処理部、２５３：ＲＩＰ処理部、２５４：圧縮処理部、２５５：伸張処理部、２５６：プリント処理部、２６０：ＭＥＭＣ（メモリコントローラ）、２６１〜２６４：バス、２６５：バスコントローラ、２７０：ＲＡＭ、２８０：帯域モニター
【図１】
2018120490.tif 000003
【図２】
2018120490.tif 000004
【図３Ａ】
2018120490.tif 000005
【図３Ｂ】
2018120490.tif 000006
【図４】
2018120490.tif 000007
【図５】
2018120490.tif 000008
【図６】
2018120490.tif 000009
【図７】
2018120490.tif 000010
【図８】
2018120490.tif 000011
【図９】
2018120490.tif 000012
【図１０】
2018120490.tif 000013
【図１１Ａ】
2018120490.tif 000014
【図１１Ｂ】
2018120490.tif 000015