(57)【要約】      （修正有）【課題】画像処理のようなリアルタイム処理が必須な処理に対して、メインメモリへのアクセスのメモリ帯域を保証でき、無駄な電力消費も削減できる適切なメモリ周波数の変更する情報処理装置のメモリシステムを提供する。【解決手段】画像処理とメモリコントローラの間の内部バス帯域を取得する帯域モニタを持ちＳ７０２、複数の周波数設定が切り替え可能なメモリデバイスを用いて、内部バス帯域とメモリ動作周波数から算出されるメモリ帯域とを比較して閾値を超えた場合にメモリクロックの周波数を高くするＳ７１１。【選択図】図７
2019197299.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリ動作周波数に切替えが可能なメモリと、
前記メモリと第１のバスで接続され、バスマスターと第２のバスで接続される前記メモリを制御するメモリコントローラとを備える情報処理装置のメモリシステムであって、
前記第２のバスの使用メモリ帯域を計測する計測手段と、
前記第２のバスの使用メモリ帯域の値が第１の閾値以上または第２の閾値未満であるかを判定する判定手段と、
前記第１のバスのメモリ帯域を取得する第１の取得手段と、
前記第１のバスのメモリクロックの周波数を変更する変更手段と、
を有し、
前記変更手段は、
前記判定手段の判定の結果が、前記使用メモリ帯域が第１の閾値以上である場合には前記メモリクロックの周波数を高い設定に、第２の閾値未満である場合には前記メモリクロックの周波数を低い設定に変更すること、
を特徴とするメモリシステム。
【請求項２】
前記メモリのメモリ動作周波数を切替える切替手段を更に有し、
前記切替手段は、前記判定手段の判定の結果が、前記使用メモリ帯域が第１の閾値以上である場合にはメモリのメモリ動作周波数を高い設定に、第２の閾値未満である場合にはメモリ動作周波数を低い設定に切替えること、
を特徴とする請求項１に記載のメモリシステム。
【請求項３】
第１の閾値は、前記メモリ帯域を超えない値であり、第２の閾値は、０に近い値であることを特徴とする請求項１又は２に記載のメモリシステム。
【請求項４】
ジョブを受信する受信手段と、
複数のメモリ動作周波数の切替えが可能なメモリと、
前記メモリと第１のバスで接続され、バスマスターと第２のバスで接続される前記メモリを制御するメモリコントローラと、を備える情報処理装置のメモリシステムであって、
受信したジョブに必要な必要メモリ帯域を取得する第２の取得手段と、
前記第２のバスの使用メモリ帯域を計測する計測手段と、
前記使用メモリ帯域と前記必要メモリ帯域の総和が第１の閾値以上であるかを判定する判定手段と、
前記第１のバスのメモリ帯域を取得する第１の取得手段と、
前記第１のバスのメモリクロックの周波数を変更する変更手段と、
を有し、
前記変更手段は、
前記判定手段の判定の結果が、前記使用メモリ帯域と前記必要メモリ帯域の総和が第１の閾値以上である場合にはメモリクロックの周波数を高く変更すること、
を特徴とする情報処理装置のメモリシステム。
【請求項５】
第１の閾値は、前記メモリ帯域を超えない値であることを特徴とする請求項４に記載のメモリシステム。
【請求項６】
前記切替手段は、前記メモリがセルフリフレッシュモードである時に、メモリ動作周波数の設定を切り替えることを特徴とする請求項2又は３に記載のメモリシステム。
【請求項７】
前記メモリコントローラはバッファを有し、
前記変更手段によってメモリクロックの周波数を変更する前に、使用可能なバッファの容量を増やすバッファ制御手段、
を有することを特徴とする請求項1〜６のいずれか１項に記載のメモリシステム。
【請求項８】
情報処理装置は、画像処理装置であることを特徴とする請求項１〜７のいずれか１項に記載の情報処理装置。
【請求項９】
複数のメモリ動作周波数に切替えが可能なメモリと、
前記メモリと第１のバスで接続され、バスマスターと第２のバスで接続される前記メモリを制御するメモリコントローラとを備える情報処理装置のメモリシステムの制御方法であって、
前記第２のバスの使用メモリ帯域を計測する計測工程と、
前記第２のバスの使用メモリ帯域の値が第１の閾値以上または第２の閾値未満であるかを判定する判定工程と、
前記第１のバスのメモリ帯域を取得する取得工程と、
前記第１のバスのメモリクロックの周波数を変更する変更工程と、
を有し、
前記変更工程は、
前記判定工程の判定の結果が、前記使用メモリ帯域が第１の閾値以上である場合には前記メモリクロックの周波数を高い設定に、第２の閾値未満である場合には前記メモリクロックの周波数を低い設定に変更すること、
を特徴とするメモリシステムの制御方法。
【請求項１０】
ジョブを受信する受信手段と、
複数のメモリ動作周波数の切替えが可能なメモリと、
前記メモリと第１のバスで接続され、バスマスターと第２のバスで接続される前記メモリを制御するメモリコントローラと、を備える情報処理装置のメモリシステムの制御方法であって、
受信したジョブに必要な必要メモリ帯域を取得する第２の取得工程と、
前記第２のバスの使用メモリ帯域を計測する計測工程と、
前記使用メモリ帯域と前記必要メモリ帯域の総和が第１の閾値以上であるかを判定する判定工程と、
前記第１のバスのメモリ帯域を取得する第１の取得工程と、
前記第１のバスのメモリクロックの周波数を変更する変更工程と、
を有し、
前記変更工程は、
前記判定工程の判定の結果が、前記使用メモリ帯域と前記必要メモリ帯域の総和が前記第１の閾値以上である場合にはメモリクロックの周波数を高く変更すること、
を特徴とする情報処理装置のメモリシステムの制御方法。
【請求項１１】
請求項１０又は１１に記載の情報処理装置のメモリシステムの制御方法をコンピュータにより実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内部メモリバスの必要帯域に応じてメモリ動作周波数の動的に変更する画像形成装置等でもある情報処理装置のメモリシステム、情報処理装置のメモリシステムの制御方法及びプログラムに関する。
【背景技術】
【０００２】
スキャナ機能、プリンタ機能、コピー機能、ネットワーク機能、FAX送受信といった様々な機能を兼備えるデジタル複合機(MFP)のような画像形成装置が知られている。デジタル複合機における各機能の動作は、通常、コントローラと呼ばれる画像入出力制御部により制御されている。
コントローラはコストダウンのためCPU及び上記機能を実現する複数の機能処理部を1つのチップ内に集約している。さらに、CPUのワークメモリ及び上記機能を実現するための画像データ転送を行うためのメインメモリも集約されてきており、メインメモリへのデータアクセス量が非常に増大してきている。
【０００３】
メインメモリへのデータアクセス量を増大させる要因に、スキャン性能及びプリント性能の高速化もあげられる。特に、スキャン、プリントといった処理は一度動作を開始すると、少なくとも処理中のページの入出力が完了するまでは止めることができないリアルタイム処理が必須である。つまり、コントローラとしては、リアルタイム処理が必須な画像処理のメインメモリへのアクセスに対しては常に一定のメモリ帯域を保証しつつ、非リアルタイム処理機能に対しても出来る限り並行に動作させることが望ましい。言い方をかえると、リアルタイム処理が必須な画像処理に対するメインメモリへのアクセスのメモリ帯域が保証できなくなる状況が発生しないようコントローラは作られている。
例えば、全ての機能を動作させてもメモリ転送性能が十分保証できる高周波数・多bit幅のメモリを使用し十分なメモリ転送性能を確保している。
【０００４】
しかしながら、メモリ帯域を常に保証するために、高周波のままメモリを使用すると、消費電力が増加する。近年、高周波数をサポートしたメモリが開発されているが、電力は周波数に比例して増加するため、メモリの消費電力の増加が問題となっている。
そこで、メモリトランザクションをキューイングするキューイングバッファの状態から、メモリクロックの周波数を増減させる提案がなされている。これにより、メモリが頻繁に使われている場合はメモリ周波数を高くし、メモリが使われていない場合はメモリ周波数を低くすることで、消費電力の最適化が図られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開2006-99569号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献1では、メモリクロックを変更するためには、メモリデバイスの設定変更が必要であるにもかかわらず、その具体的方法については説明されていない。
さらに、メモリクロックの変更方法について、PLL(Phase Locked Loop)の逓倍率を変更する説明がなされているが、通常逓倍率を変更する場合には数百μs〜数msの時間が必要である。つまりメモリデバイスの設定変更やPLLの設定変更に要する時間を考慮していないため、メモリ周波数を変更した場合の方がかえって、処理時間が長くかかってしまう場合がある。
上記課題を踏まえて、本発明は、画像処理のようなリアルタイム処理が必須な処理に対して、メインメモリへのアクセスのメモリ帯域を保証でき、無駄な電力消費も削減できる適切なメモリ周波数を変更する情報処理装置のメモリシステムを提供する目的とする。
【課題を解決するための手段】
【０００７】
本発明は、複数のメモリ動作周波数に切替えが可能なメモリと、前記メモリと第１のバスで接続され、バスマスターと第２のバスで接続される前記メモリを制御するメモリコントローラとを備える情報処理装置のメモリシステムであって、前記第２のバスの使用メモリ帯域を計測する計測手段と、前記第２のバスの使用メモリ帯域の値が第１の閾値以上または第２の閾値未満であるかを判定する判定手段と、前記第１のバスのメモリ帯域を取得する第１の取得手段と、前記第１のバスのメモリクロックの周波数を変更する変更手段と、
を有し、前記変更手段は、前記判定手段の判定の結果が、前記使用メモリ帯域が第１の閾値以上である場合には前記メモリクロックの周波数を高い設定に、第２の閾値未満である場合には前記メモリクロックの周波数を低い設定に変更すること、を特徴とする。
【発明の効果】
【０００８】
本発明によれば、画像処理のようなリアルタイム処理が必須な処理に対して、メインメモリへのアクセスのメモリ帯域を保証でき、無駄な電力消費も削減できる適切なメモリ周波数の変更する情報処理装置のメモリシステムを提供できる。
【図面の簡単な説明】
【０００９】
【図１】実施例における画像形成装置のシステム構成を示すブロック図。
【図２】実施例におけるメインコントローラのメモリシステムのブロック図。
【図３】実施例におけるシステム制御部のブロック図。
【図４】実施例における帯域モニタのブロック図。
【図５】実施例におけるクロック生成部のブロック図。
【図６】実施例における帯域例を示す図。
【図７】実施例におけるメモリクロックの周波数変更方法を示すフローチャート。
【図８】実施例におけるメモリ動作周波数設定切替構成を示す図。
【図９】他の実施例のメモリ周波数変更方法(バッファ変更)を示すフローチャート。
【図１０】別の実施例のメモリ周波数設定方法（JOBから予測）を示すフローチャート。
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための形態について図面を用いて説明する。
【実施例１】
【００１１】
<画像形成装置>
図１に、本実施形態を説明するための画像形成装置100のブロック図を示す。
スキャナ部110は、原稿画像を光学的に読み取り、画像データに変換する。また、スキャナ部110は、原稿を読取るための機能を持つ原稿読取部112と、原稿用紙を搬送するための機能を持つ原稿給紙部111とで構成される。
プリンタ部140は、記録紙を搬送し、その上に画像データを可視画像として印字して装置外に排紙する。プリンタ部140は、複数種類の記録紙カセットを持つ給紙部142と、画像データを記録紙に転写、定着させる機能を持つ転写定着部141と、印字された記録紙をソート、ステイプルして機外へ排出する機能を持つ排紙部143とで構成される。
【００１２】
コントローラ部120は、スキャナ部110、プリンタ部140と電気的に接続され、さらにLAN、ISDN、インターネット/イントラネット等のネットワーク150と接続されている。コントローラ部120は、スキャナ部110を制御して、原稿の画像データを読込み、プリンタ部140を制御して画像データを記録用紙に出力してコピー機能を提供する。
また、スキャナ部110から読み取った画像データを、コードデータに変換し、ネットワーク150を介して図示しないホストコンピュータへ送信するスキャナ機能を提供する。また、ホストコンピュータからネットワーク150を介して受信したコードデータを画像データに変換し、プリンタ部140に出力するプリンタ機能を提供する。
また、ISDNからデータを受信してプリントするFAX受信機能やISDNへスキャンしたデータを送信するFAX送信機能を有する。また、これらスキャンやプリント、FAX送受信といった処理をジョブと呼び、画像形成装置100はこれらジョブを指示に従って制御・処理するものである。
操作部130は、コントローラ部120に接続され、液晶タッチパネルで構成され、画像形成装置を操作するためのユーザインタフェースを提供する。
【００１３】
<コントローラ部>
図２は、本実施例に係るコントローラ部120の内部構成を示すブロック図である。コントローラ部120は、メインコントローラ部200、ROM290、DRAM291a〜291b、HDD292、PHY293で構成される。以下、各部について詳しく説明する。
まず、メインコントローラ部200について説明する。メインコントローラ部200は、システム制御部210、リングバススイッチ220、プリント処理部230、ループバック処理部240、スキャン処理部250、DRAMコントローラ260、クロック生成部270で構成される。メインコントローラ部200は、さらに帯域モニタ295を持つ。
システム制御部210は、スキャナ部110におけるスキャン処理やプリンタ部140におけるプリント処理を制御する制御モジュールである。システム制御部210は、リングバススイッチ220に接続され、上記スキャン処理やプリント処理で用いる画像データの転送制御を、リングバススイッチ220を介して行う。さらに、システム制御部210は、PHY293を介してネットワーク150へのデータ送信やネットワーク150からのデータ受信を行い、操作部130への表示処理などシステム全体を統括制御する。
【００１４】
リングバススイッチ220は、コントローラ部120内の各モジュールへ画像データを転送するためのスイッチ制御を行う。これにより、システム制御部210、プリント処理部230、ループバック処理部240、スキャン処理部250の間で、画像データのやり取りが可能になっている。
プリント処理部230は、プリンタ部140で使用する画像データのための色空間変換処理、中間調処理、ガンマ補正処理といったプリント用画像処理を行う。プリント処理部230は、リングバススイッチ220から画像データを受け取り、画像データに上記プリント用画像処理を施し、処理後の画像データをプリンタ部140へ出力する。
ループバック処理部240は画像の編集処理を行うブロックであり、変倍処理、画像合成処理、回転処理など各種画像処理を備えている。ループバック処理部240はシステム制御部210からリングバス205を介して画像データを受け取り、内部の画像処理を施したあとにシステム制御部210へリングバス205を介して画像データを戻す。
【００１５】
スキャン処理部250は、スキャナ部110で取得した画像データに対し、シェーディング補正処理、MTF補正処理、ガンマ補正処理、フィルタ処理といったスキャナ用画像処理を行う。スキャン処理部250は、スキャナ部110から転送されてきた画像データにスキャナ用画像処理を施し、処理後の画像データをリングバススイッチ220へ転送する。リングバススイッチ220へ転送された画像データは、システム制御部210へ転送される。
DRAMコントローラ260は、内部バス202を介してプリント処理部230、ループバック処理部240、スキャン処理部250から受け取った画像データを受け取る。また、DRAMコントローラ260は、DRAMバス207を介してDRAM291bへ転送して書き込む、又はDRAM291bへ書き込んだ画像データを読み出して転送する処理を行う。プリント処理部230、ループバック処理部240、スキャン処理部250は、それぞれが担当する画像処理を実行するためにDRAM291bを一時的な画像バッファとして利用する。このように、DRAMコントローラ260は、内部バス202を介してプリント処理部230等のバスマスターと、またDRAMバス207を介してDRAM291bと接続するメモリシステムが構築されている。
このときDRAMコントローラ260とDRAM291bとの間のDRAMバス207には、プリント処理部230、ループバック処理部240、スキャン処理部250などのバスマスターからの画像データが多重化して行き交うことになる。そのため、この転送路のメモリ帯域を超えるデータ転送が要求されると、転送待ち状態が発生する。よって、DRAMコントローラ260とDRAM291bとの間のデータ転送が、メインコントローラ部200の処理能力のボトルネックとなるケースが多々発生することになる。このDRAMバス207のメモリ帯域性能はメモリ（DRAM）、メモリコントローラ（DRAMコントローラ）及び動作周波数により決まるものであり、一般にMB/s等、単位時間当たりのデータ転送量で表される。
ところで、DRAM291bの使用されるメモリ帯域がメモリデバイスや動作周波数で決まる上限値に達した場合、DRAM291bを使用するいずれかの処理が待たされるか、又は処理が遅くなることとなる。この時、スキャン処理部230やプリント処理部250等のリアルタイム処理が遅延する状況が生じた場合には、システムとして破綻することとなるため、どのような状況においてもリアルタイム処理についてはメモリ帯域を保証する必要がある。また、BUFFER261〜263は、プリント処理部230、ループバック処理部240、スキャン処理部250からの受信データ、及び送信データを一時的にバッファリングするバッファである。BUS_CONVERTER265は、各BUFFER261〜263のアクセス権をラウンドロビンで調停する調停機能と、DRAM291bへアクセスするためのプロトコルへの変換を行う。また、DRAMコントローラ260には、クロック生成部270で生成されたメモリクロックが入力される。このメモリクロックにより、DRAM291bへの転送クロックが決定される。
【００１６】
帯域モニタ295は、メインコントローラ部200内部のRAM291bの内部バス帯域性能を測定するために用いられるものである。より具体的には、メインコントローラ部200のプリント処理部230、ループバック処理部240、スキャン処理部250の各処理部とDRAMコントローラ260間の内部バス202に接続され、内部バス202で使用している使用メモリ帯域をモニタする。帯域モニタ295の詳細については図４を用いて後述する。
クロック生成部270は、メインコントローラ200で必要なクロック周波数を生成するものである。図２では割愛しているが、クロック生成部270は、DRAMコントローラ260用のメモリクロック以外のクロックも生成し、各モジュールに供給している。クロック生成部270の詳細については図５を用いて後述する。
【００１７】
<システム制御部>
図３は、本実施例に係る、システム制御部210の内部構成を示すブロック図である。以下、システム制御部210を構成する各要素について説明する。
CPU310は、システム全体を制御するプロセッサーである。CPU310は、DRAM291aに展開されたOSや制御プログラムに従って、プリント処理やスキャン処理といったジョブ処理を統括的に制御する。
ROMコントローラ320は、システムのブートプラグラムを格納しているROM 290にアクセスするための制御モジュールである。画像形成装置100の電源がONされた時に、CPU310はROMコントローラ320を介してROM 290にアクセスし、CPU310がブートする。DRAMコントローラ330は、システムの制御プログラムや画像データが格納されるDRAM291aにアクセスするための制御モジュールである。DRAMコントローラ330は、DRAM291aの設定や制御を行うためのレジスタを備えており、このレジスタは、CPU310からアクセス可能である。操作部インタフェース340は、ユーザが操作部130を操作した操作指示の受付及び操作結果の表示の制御を行う。
【００１８】
HDD292は、システムソフトウェアやアプリケーションプログラム、画像データと各画像データに対応するページ情報やジョブ情報を格納する。HDD292は、HDDコントローラ360を介してシステムバス300に接続されており、CPU310の指示に従ってデータの書き込みや読み出しを行う。LANコントローラ370はPHY293を介してネットワーク150に接続し、外部のホストコンピュータとの間で画像データなどの情報の入出力を行う。モデム372は図示しない公衆回線に接続し、FAX送信やFAX受信ジョブを処理する際に外部のFAX機器とデータ通信を行う。
画像圧縮部350はDRAM291a又はHDD 292に格納される画像データをJPEGフォーマットに圧縮処理する。また画像伸張部351はJPEGフォーマットに圧縮された画像データを伸張処理する。レンダリング部352は、ネットワーク150からLANコントローラ370を経由して受信した画像データ(PDLデータ)を、プリンタ部140で取り扱い可能なビットマップデータに変換する。
【００１９】
クロック制御部380はクロックの設定に関するレジスタで構成されており、CPU310から読み書き可能である。CPU310クロック制御部380のレジスタを設定することで、クロック生成部270のクロックの発振・停止制御や周波数変更等の設定が可能である。
モジュールIF390は、CPU310から帯域モニタ295とDRAMコントローラ260にアクセスするためのバスを変換するインタフェースである。モジュールIF390を介して、CPU310は、帯域モニタ295から得られる内部バス帯域情報を取得し、DRAMコントローラ260のレジスタ設定を行い、DRAM 291b周波数設定の変更をすることが可能である。
【００２０】
<帯域モニタ>
図４は、本実施例に係る、メインコントローラ部200内の帯域モニタ295の内部構成を示すブロック図である。
帯域モニタ295は、帯域検出部401及び、帯域通知部402及び、帯域閾値設定部403および、割り込み通知部404から構成される。
帯域モニタ295はメインコントローラ部200内部の内部バス202で使用する転送帯域を測定するために用いられるものである。具体的には、メインコントローラ部200のプリント処理部230、ループバック処理部240、スキャン処理部250とDRAMコントローラ260間のデータ転送を帯域検出部401がモニタし、DRAM291bの現在の使用メモリ帯域を算出する。
帯域検出部401により検出されたメインコントローラ部200内部のDRAM291bの使用メモリ帯域は、帯域通知部402を通してCPU310が読み取ることが可能である。
【００２１】
帯域閾値設定部403における内部バス202の転送帯域の閾値は、CPU310により設定される。そして、帯域閾値設定部403に設定された閾値は、帯域検出部401により計測されたDRAM291bの現在の使用メモリ帯域との比較に用いられる。現在の使用メモリ帯域が帯域閾値設定部403に設定された値よりも大きい場合、割り込み通知部404を通してCPU310に通知することも可能である。また、逆に、現在の使用メモリ帯域が帯域閾値設定部403に設定された値よりも小さい場合、割り込み通知部404を通してCPU310に通知することも可能である。
これらの要因は、割り込み通知部404内のレジスタによって確認することが可能である。実際の使用例として、帯域閾値設定部403には、先述したようなメモリデバイスや動作周波数で決まるDRAM291bのメモリ帯域の上限値または上限値に近い値を設定することになる。
そして、プリント処理部230およびループバック処理部240およびスキャン処理部250を使用する時に、帯域検出部401に計測されたDRAM291bの現在の使用メモリ帯域との比較に用いられる。
【００２２】
帯域検出部401が示すDRAM291bの現在の使用メモリ帯域が帯域閾値設定部403に設定した閾値より大きい場合、メインコントローラ部200のDRAM291bが混雑していると判定することができる。もちろん、各画像処理を行う時に、帯域検出部401が示すDRAM291bの現在の使用メモリ帯域と、これから実行する画像処理で使用するメモリ帯域の予想値との合計値を、帯域閾値設定部403に設定した閾値との比較に用いてもよい。こうすることにより、これから実行する画像処理を行った場合にDRAM291bの使用メモリ帯域が、DRAM291bのメモリ帯域性能の上限値に達してしまうかどうかを判定することができる。
この帯域モニタ295により、CPU310はDRAM291bの現在の使用メモリ帯域を知ることが可能となる。
【００２３】
<クロック生成部>
図５は、本実施例に係る、メインコントローラ部200内のクロック生成部270の内部構成を示すブロック図である。
クロック生成部270は、PLL部271、分周器272、273、マルチプレクサ(MUX)274及びクロックゲート275から構成される。
クロック生成部270は、メインコントローラ部200へ入力される図示していない発振器等で生成される基準クロックが入力される。そして、入力された基準クロックがPLL部271に入力され、基準クロックが逓倍される。例えば、基準クロックとして30MHzが入力され、PLL部271で1.2GHzを生成する。
分周器272、273は、PLL部271で生成された逓倍クロックを分周し、必要な周波数のクロックを生成する。
【００２４】
MUX274は、分周器272、273で生成された複数クロックの一つを選択するためのものである。CPU310で設定されクロック制御部380からの信号であるクロック周波数選択信号によって、一つのクロックが選択される。
クロックゲート275は、MUX274で選択されたクロックの停止と発振を制御するものである。CPU310で設定されクロック制御部380からの信号であるクロック停止信号によって、発振と停止の制御が可能である。
実際にクロック周波数を変更する場合は、クロック停止信号によってクロックゲート275でクロック停止した後に、クロック周波数選択信号によってMUX274で選択するクロック周波数を決定する。
【００２５】
<転送帯域>
図６は、図３で説明したDRAM291bが出せるメモリ帯域、及びスキャン処理部250とプリント処理部230の必要メモリ帯域の具体例を示す図である。
図６(a)はDRAM291bが出せる帯域を示す図である。算出方法は以下の式(1)となる。
【数１】
2019197299.tif 000003
【００２６】
メモリ動作周波数はDRAM291bの動作周波数である。
メモリバス幅はDRAMコントローラ260とDRAM291bの間のデータ転送信号のバス幅のbit数である。
メモリ効率は実際にDRAMコントローラ260とDRAM291bの間の転送効率である。転送効率は、DRAM291bへのアクセスパターンにより変化するものである。
図６(b)はスキャン処理部250の必要帯域を示す図である。算出方法は以下の式(2)となる。
【数２】
2019197299.tif 000004
【００２７】
1ページあたりの画素数は、1ページの画素数である。例えば、600[dpi]のA4サイズの画素数は約35[Mpixel]となる。
componentは、例をあげて説明する。
例えばスキャン処理部250がDRAM291bに転送する画像データがRGB画像で1色あたり256であれば、componentあたりのbit幅は8bit幅であり、component数は3色あるため3となる。
例えばスキャン処理部250が出力する画像データの階調が1024であればcomponentあたりのbit幅は10bitとなる。
また、RGBの画像以外に文字・写真といった画像識別情報を加えて出力する場合は、RGB＋画像識別情報でcomponent数は4となる。
ipmはスキャナ部110の読み取り性能を示し、1分間に何枚スキャンし読み出せるかを示す。
画像転送以外の割合は、スキャナ部110から画像が入力される場合の実際に画像が転送されている以外の時間の割合を示す。
【００２８】
図６(c)はプリント処理部230の必要帯域を示す図である。算出方法は以下の式(3)となる。
【数３】
2019197299.tif 000005
【００２９】
式(2)との算出方法の違いは、ipmとppmのみであり、ppmは1分間に何枚プリントできるかを示す。
つまり、DRAM291bは、画像形成装置100のスキャン読み取り速度及びプリント出力速度を少なくとも保証し、かつ、CPU等最低限動作可能なメモリ帯域を持つものを選択する必要がある。図６の例を使用し説明すると、スキャン性能が図６(b)のスキャン帯域例2とし、プリント性能が図６(c)のプリント帯域例4を前提とすると、233[MB/s]+933[MB/s]の合わせて1166[MB/s]がメモリ帯域には最低限必要となる。より詳細にはCPU310等が少なくとも動作できる帯域は最低保証する必要があるため、メモリ帯域は1166+α[MB/s]が必要となる。ここで、αはCPU310が使用するメモリ帯域である。
よって、コントローラ部120がスキャン処理とプリント処理を同時に動作可能とする場合は、図６(a)に示すメモリ帯域例1のメモリ動作周波数が1066[MHz]のメモリは1066[MB/s]しか出ないためは選択できない。本例においては、少なくとも図６(a)のメモリ帯域例2のメモリ動作周波数が1866[MHz]で、メモリ帯域が1866[MB/s]であるメモリを選択する必要がある。余りの帯域が非リアルタイム画像パスに割り当てられるため、より動作周波数が高いメモリを選択すると、非リアルタイム画像パスも同時に動作できる可能性が高くなる。
【００３０】
＜メモリ周波数の変更処理＞
次に、図７のフローチャートに沿って、実施例の情報処理装置である画像形成装置において、メモリ帯域の使用状況に応じて、メモリ周波数を変更する処理について説明する。
本フローチャートは、HDD292に格納されたプログラムに従って、CPU310がクロック生成部270や帯域モニタ295やDRAMコントローラ260を制御することで実行される。
S701で、CPU310は、DRAMバス207のメモリ帯域を取得するために、クロック制御部380にアクセスしてメモリクロックの周波数を取得し、図６(a)で説明したようにメモリ帯域を算出する。この処理は、システム立ち上げ時に行われる。
S702で、CPU310は、帯域モニタ295の帯域閾値設定部403に閾値を設定する。ここで設定する閾値は、上限の閾値と下限の閾値がある。まず上限の閾値は、S701で取得したメモリ帯域の値から設定され、メモリ帯域を超えない値が設定される。また、下限の閾値は、0に近い値が設定され、メモリを使用していない状態を判別する閾値である。この処理は、システム立ち上げ時に行われる。
S703で、CPU310は、帯域モニタ295の割り込み通知部404からの割り込み待ちを行い、割り込みを受信した場合はS704へ進む。
S704で、CPU310は、帯域モニタ295の割り込み通知部404へアクセスして割り込み発生要因を確認する。
S705では、CPU310は、S704での割り込み要因がメモリ周波数を上げてメモリ帯域を上げる要求かどうかを判定する。メモリ周波数を上げる要求である場合（帯域モニタの上限の閾値以上の場合）はS707へ進む。また逆に、メモリ周波数を下げる要求である場合（帯域モニタの下限の閾値未満の場合）にはS706へ進む。
【００３１】
S706では、メモリクロックの周波数設定が現状の設定よりも低い設定があるかどうかを判定する。現状の設定よりも低い設定がない場合は処理を終了し、低い設定がある場合にはS708へ進む。
S707では、メモリクロックの周波数設定が現状の設定よりも高い設定があるかどうかを判定する。現状の設定よりも高い設定がない場合は処理を終了し、高い設定がある場合にはS708へ進む。
S708では、CPU310は、DRAMコントローラ260を介してDRAM291bをセルフリフレッシュモードに投入する。仮に、DRAM291bにアクセスしているトランザクションがある場合には、そのトランザクションが終了するのを待ってセルフリフレッシュモードに投入する。セルフリフレッシュは、DRAM291bが、他の周辺機器とバスを介してトランザクションを行わず、外部クロックの入力無しで、自ら蓄積しているデータのリフレッシュを行うことである。このセルフリフレッシュモードに入ることにより、DRAMバス207の周波数を変更することができるようになる。
【００３２】
S709では、CPU310は、DRAMコントローラ260にアクセスしてDRAM291bの周波数設定を変更するコマンドを発行する。このコマンドによってDRAM291bが動作するメモリ動作周波数設定を変更することが可能である。
図８に、DRAM291b内のメモリ動作周波数設定の概念を示す。DRAM291b内の動作周波数設定をするブロックとしては、レジスタ部801、第一設定値802、第二設定値803、切替レジスタ804、MUX 805、動作設定値806で構成される。DRAMコントローラ260は、周波数設定を変更するコマンドを発行することによりレジスタ部801の内容を変更することが可能である。まず、DRAMコントローラ260は、DRAM291bの動作させる初期設定として、第一設定値802と第二設定値803の設定を行う。本設定は、DRAM291bが動作する周波数によって決まるタイミングパラメータ等である。図８では、1866Mbpsで動作する設定と2400Mbpsで動作する設定を設定している。また、切替レジスタ804の設定によって、第一設定値か第二設定値のどちらを選択するかが決定される。そして、切替レジスタ804の設定により選択された第一又は第二設定値の周波数が動作設定値806に設定されて、DRAM291bは選択された周波数設定で動作する。なお、切替レジスタ804による周波数切替はメモリアクセスがない場合、つまりメモリがセルフリフレッシュモードに投入されている場合等で変更可能である。
この仕組みを使うことによって、DRAMコントローラ260は、DRAM291bのメモリ動作周波数の切替えを素早く行うことが可能となる。
具体的に、図７のフローチャートで、S705でメモリ動作周波数を上げる要求と判定され、S707で現状の周波数よりも高い設定があると判定された場合、現在が、図８の1866Mbps設定の場合には、高い周波数の2400Mbps設定に変更する。
S705でメモリ動作周波数を下げる要求であると判定され、S706で現状の周波数よりも低い設定があると判定された場合で、現在、図８の2400Mbps設定となっていた場合には、より低い周波数の1866Mbps設定に変更する。
【００３３】
DRAMコントローラ260は、メモリ動作周波数の設定の変更が終了すると、CPUにメモリクロックの周波数を変更する要求を発行する。
S710で、CPU310は、DRAMコントローラ260からメモリクロックの周波数を変更する要求があるまで待機する。要求があった場合は、S711へ進む。
S711で、CPU310は、クロック制御部380にアクセスし、クロック生成部270から出力されるメモリクロックを変更する。
S712では、CPU310は、周波数変更が完了したことをDRAMコントローラ260に通知する。
S713では、S701同様、CPU301は、クロック制御部380にアクセスして、現在のメモリクロックの周波数を取得して、DRAMバス207のメモリ帯域を算出する。
S714では、S701同様、帯域モニタ295の閾値を再設定する。
S715では、CPU310は、DRAM291bのセルフリフレッシュを解除する。
【００３４】
本フローチャートで説明したように、メモリ帯域と帯域モニタ295から得られる内部のメモリ帯域情報からメモリクロックの周波数を高く、もしくは低く設定することが可能となる。これにより、メモリ帯域が必要な場合にはメモリクロックの周波数を高く設定し、メモリ帯域が必要ない場合にはメモリクロックの周波数を低く設定することで、メモリクロックを最適化する。そうすることで、リアルタイム処理が滞ることがないようメモリクロックの周波数を上げて、メモリ帯域を動的に確保するとともに、必要がないときには、メモリクロックの周波数を下げて、省電力効果を得ることができる。
【実施例２】
【００３５】
実施例１では、メモリ帯域と帯域モニタ295から得られる内部バス202のメモリ帯域情報からメモリ周波数を変更する方法について説明した。実施例２では、さらにメモリ周波数を切替える際に発生する時間的なオーバーヘッドを吸収するために、DRAMコントローラ260内のバッファの使用可能な容量を大きくする方法について説明する。
実施例２における画像形成装置のメモリ周波数の変更処理の流れについて、図９のフローチャートにしたがって説明する。本フローチャートは、HDD292格納されたプログラムに従って、CPU310がクロック生成部270や帯域モニタ295やDRAMコントローラ260を制御することで実行される。また、図９は図７のフローチャートにS901〜S903が追加されたものであるため、これらを中心に説明する。
S701からS706,S707までは、図７の処理フローと同じである。そして、メモリ周波数の変更が必要となった状態で、次のS901に進む。
S901では、メモリ周波数を変更処理の前に、DRAMコントローラ260のBUFFER261，262，263の全ての段数を使用するようバッファ制御する。BUFFER261，262，263は、プリント処理部230、ループバック処理部240、スキャン処理部250からの受信データ及び送信データを一時的にバッファリングするバッファである。デフォルト状態では、バッファ段数の半分を使用する設定となっている。
【００３６】
続いて、S708〜S712では、DRAM291bは、セルフリフレッシュモードの入り、またメモリクロックが変更される。
続いて、S902では、CPU310は、メモリ周波数を高い周波数から低い周波数に変更したかどうかを判定する。メモリ周波数を低い周波数に変更した場合（YES）は、S903へ進み、メモリ周波数を低い周波数に変更した場合(NO)ならばS713へ進む。
メモリ周波数を現在の周波数より低い周波数に変更した場合は、S903で、DRAMコントローラ260のBUFFER261，262，263の半分段数を使用する設定、つまり、デフォルトの設定に変更する。そして、S713に進む。
S713とS714では、S701とS702と同様に、更新されたクロック設定に対してメモリ帯域、帯域モニタの閾値の再設定を行い、S715 でセルフリフレッシュを解除する。
本処理では、メモリ周波数を変更する際にBUFFER261，262，263を全て使用する設定にすることバッファの容量が多くなり、メモリ周波数を変更する際に一時的にDRAM291bが使用できなくなる間の処理の中断を防ぐことが可能となる。これにより、メモリ周波数変更による時間的なオーバーヘッドを最小限にとどめることが可能となる。
【実施例３】
【００３７】
＜ジョブに基づいてメモリ周波数を変更する＞
実施例１では、内部バスのメモリ帯域情報からメモリ周波数を変更する方法について、実施例２では、DRAMコントローラ260内のバッファの容量を変更することにより、周波数変更によるオーバーヘッドを回避することを説明した。実施例３では、投入されたJOBに基づいて適切なメモリ周波数設定の設定方法について図１０を用いて説明する。
図１０は、本実施形態における画像形成装置のDRAM291bに設定するメモリ周波数の変更処理の流れを示すフローチャートである。本フローチャートは、HDD292に格納されたプログラムに従って、CPU310が帯域モニタ295やDRAMコントローラ260を制御することで実行される。
まず、S1001で、画像形成装置がJOBを受信するまで待機する。JOBを受信すると、S1002へ進む。
S1002では、CPU310は、帯域モニタ295の帯域通知部402にアクセスして、プリント処理部230、ループバック処理部240、スキャン処理部250が現在使用している内部バス202の使用メモリ帯域を取得する。
S1003では、CPU310は、S1001で受信したJOBによって必要となる必要メモリ帯域を取得する。この必要帯域は、図６(b)(c)で説明したように計算によって予め決められた値を用いる。
【００３８】
S1004では、CPU310は、クロック制御部380にアクセスして、図６(a)で説明したように現状設定されているメモリ周波数からDRAMバス207のメモリ帯域（DRAMバス帯域）を算出し、取得する。
S1005では、CPU310は、DRAMコントローラ260にアクセスして、DRAM291bに設定しているメモリ動作周波数設定を取得する。
S1006では、CPU310は、S1005で取得したメモリ動作周波数設定値に基づく帯域値（DRAM帯域値）が、S1003で取得したJOBの必要メモリ帯域とS1002に取得した内部バスの使用メモリ帯域の総和よりも小さいかどうかを判定する。つまり、受信したJOBによって必要となる必要メモリ帯域が現在のDRAM帯域値で確保できていないかどうか判定する。確保できない(YES)の場合はS1007へ進み、確保できている(NO)の場合はS1008へ進む。
S1007で、CPU310は、DRAMコントローラ260を介して、DRAM帯域値が、S1003で取得したJOBの必要メモリ帯域とS1002に取得した内部バスの使用メモリ帯域の総和を下回らないよう、メモリ動作周波数設定値を変更する。
【００３９】
S1008で、CPU310は、S1004で取得したDRAM291bのDRAMバス帯域がS1003で取得したJOBの必要帯域とS1002に取得した内部バス帯域の総和よりも小さいかどうかを判定する。つまり、受信したJOBの必要帯域が確保できるメモリ周波数が設定されているかどうかを判定する。YESの場合はS1009へ進み、NOの場合は処理を終了する。
S1009では、CPU310は、クロック制御部380を介して、クロック生成部270に対して、メモリクロックの周波数について、S1003で取得したJOBで必要な内部バス帯域とS1002に取得した内部バス帯域の総和を下回らない値に変更する。変更処理は、図７又は図９のS708〜S715の処理フローで変更する。
本フローチャートで説明したように、DRAM291bのメモリ周波数設定値とメモリ周波数の設定する方法について、JOBを受信するタイミングで変更することを説明した。これにより、JOB処理中にメモリ周波数設定値とメモリ周波数を変更する必要がなくなるため、変更にかかる時間的オーバーヘッドによるメモリアンダーランやオーバーランなどのシステム破綻を防ぐことが可能となる。
【００４０】
(その他の実施例) 
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【符号の説明】
【００４１】
200  メインコントローラ
202  内部バス
207  DRAMバス
260  DRAMコントローラ
270  クロック生成部
291  DRAM
295  帯域モニタ
380  クロック制御部
【図１】
2019197299.tif 000006
【図２】
2019197299.tif 000007
【図３】
2019197299.tif 000008
【図４】
2019197299.tif 000009
【図５】
2019197299.tif 000010
【図６】
2019197299.tif 000011
【図７】
2019197299.tif 000012
【図８】
2019197299.tif 000013
【図９】
2019197299.tif 000014
【図１０】
2019197299.tif 000015