(57)【要約】【課題】  帯域モニターが取得し、一時記憶したログ情報をDRAMに転送する際、このログ情報の転送によって、DRAMの使用可能な帯域を圧迫し、情報処理装置が本来処理を必要とするスキャン処理やプリント処理などのリアルタイム処理が、正常に動作完了できない状態を回避する。【解決手段】  帯域モニターが取得し、一時記憶したログ情報をDRAMに転送する際、帯域モニターは自身が取得したDRAMの帯域情報を基に、所定の閾値以上の使用帯域を消費している時は、ログ情報をDRAMに転送しないよう制御する。【選択図】  図３
2019200626.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
前記メモリにアクセスする複数のバスマスターとを接続する複数のバスと、
前記複数のバスの使用帯域をモニターする帯域モニター手段を有する情報処理装置であって、
前記帯域モニター手段は、モニターした結果を帯域情報ログとして一時記憶するための記憶手段と、
前記帯域情報ログを前記記憶手段からメモリに転送するための転送手段を有し、
前記帯域モニター手段は、各バスの使用帯域の合計が、所定の閾値以上と判断した場合、前記転送手段の動作を停止する停止手段を有することを特徴とする情報処理装置。
【請求項２】
前記帯域情報ログは、少なくとも、チャネル番号、タイムスタンプ、読み込みカウント、書き込みカウントを含むことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記帯域モニター手段は、前記転送手段の動作を停止中に、前記記憶手段がフルになった場合、前記記憶手段に保持した帯域情報ログに対して、追加される帯域情報ログをマージして保存することを特徴とする請求項２に記載の情報処理装置。 
【請求項４】
前記帯域モニター手段は、前記転送手段の動作を停止中に、ログ保存する価値が低いチャネルについては、前記記憶手段に保持した帯域情報ログに対して、追加される帯域情報ログをマージして保存することを特徴とする請求項２に記載の情報処理装置。 
【請求項５】
前記帯域モニター手段は、前記転送手段の動作を停止中に、ログ保存する価値が低いチャネルの帯域情報をマージして帯域情報ログとして保存することを特徴とする請求項２に記載の情報処理装置。 
【請求項６】
前記帯域情報ログのマージは、複数のログの読み込みカウント及び書き込みカウントをそれぞれ加算することを特徴とする請求項１〜４の何れか１項に記載の情報処理装置。 
【請求項７】
前記ログ保存する価値が低いチャネルは、リアルタイム処理が必要なデータが転送されるバスでないチャネルであることを特徴とする請求項４〜６のいずれか１項に記載の情報処理装置。
【請求項８】
前記ログ保存する価値が低いチャネルは、CPUが使用するバスでないチャネルであることを特徴とする請求項４〜６のいずれか１項に記載の情報処理装置。
【請求項９】
前記情報処理装置は、画像処理装置であり、前記リアルタイム処理が必要なデータが転送されるバスは、スキャン画像とプリント画像を転送するバスであることを特徴とする請求項７に記載の情報処理装置。
【請求項１０】
メモリと、前記メモリにアクセスする複数のバスマスターとを接続する複数のバスと、前記複数のバスの使用帯域をモニターし、前記モニターした結果を帯域情報ログとして一時記憶するための記憶手段を備える帯域モニター手段とを有する情報処理装置の制御方法であって、
前記記憶手段からメモリに前記帯域情報ログを転送する転送工程と、
前記帯域モニター手段は、各バスの使用帯域の合計が、所定の閾値以上と判断した場合、転送を停止する停止工程を、
有することを特徴とする情報処理装置の制御方法。
【請求項１１】
請求項１０に記載の情報処理装置の制御方法をコンピュータにより実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内部のメモリバスの帯域情報をモニターする画像形成装置などの情報処理装置、情報処理装置の制御方法及びプログラムに関するものである。
【背景技術】
【０００２】
スキャナ機能、プリンタ機能、コピー機能、ネットワーク機能、FAX送受信といった様々な機能を兼備えたデジタル複合機（MFP)と呼ばれる画像形成装置が知られている。デジタル複合機における機能動作は、通常、コントローラと呼ばれる画像入出力制御部により制御されている。
コントローラはコストダウンのためCPU及び上記機能を実現する複数の機能処理部を１つのチップ内に集約している。さらに、CPUのワークメモリ及び上記機能を実現するための画像データ転送を行うためのメインメモリも集約されてきており、メインメモリへのデータアクセス量が非常に増大してきている。
【０００３】
メインメモリへのデータアクセス量を増大させる要因に、スキャン性能及びプリント性能の高速化もあげられる。特に、スキャン、プリントといった処理は一度動作を開始すると、少なくとも処理中のページの入出力が完了するまでは止めることができないリアルタイム処理が必須となる。つまり、コントローラとしては、リアルタイム処理が必須な画像処理に対するメインメモリへのアクセスは常に一定の転送帯域を保証しつつ、非リアルタイム処理機能も出来る限り並行に動作させることが望ましい。言い方をかえると、リアルタイム処理が必須な画像処理に対するメインメモリへのアクセスの転送帯域が保証できなくなる状況が発生しないよう制御するようコントローラは作られている。
例えば、全ての機能を動作させてもメモリ転送性能が十分保証できる高周波数・多ビット幅のメモリを使用し十分なメモリ転送性能を確保している。ここで、帯域とは、メインメモリに対して、各バスマスターから一定時間にどれくらいの有効データを転送（リード/ライト）できるかを示す指標である。
【０００４】
しかしながら、高周波数のメモリを使用することはメモリのコストアップ及び消費電力の増加をきたし、また、多ビット幅のメモリを使用することはチップのピン数増加によるチップ単価のコストアップにつながる。
そこで、メモリの高周波数化及び多ビット化を抑制しつつ、リアルタイム処理機能のメインメモリへの転送帯域を確保する手段として、従来、非リアルタイム処理機能部とメインメモリ間の転送帯域をモニターできる仕組み（以下「帯域モニター」という。）を備えるものがある。
具体的には、帯域モニターによりメインメモリの転送帯域が予め設定された転送帯域を超えそうになった場合に非リアルタイム処理機能部からのアクセスを受け付けないように制御する制御部を有するものである。従来の手法により、リアルタイム処理部が全て動作しメインメモリの使用帯域が増大する状態で非リアルタイム処理部の転送を受け付けないよう制御することで帯域を抑制し、リアルタイム処理の転送帯域を保証することは可能である（特許文献１）。
また、帯域モニターで取得できる帯域や、帯域取得にかかった所定時間間隔の情報（ログ）を保持しておくメモリ（SRAM）を用意することにより、取得した情報を格納しておくことで、動作後のメモリ帯域の使用状況の分析をする用途にも活用可能である。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開2014-160341号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、前記ログを保持するSRAMを大量に用意することは、チップサイズが増加するとともに、LSIのコストも上昇する。したがって、このコストアップを抑えるために、一度SRAMに保存したログデータをDRAMなどのより大容量で安価な外部記憶装置にDMAC(ダイレクト メモリ アクセス コントローラ)等でオフロードする方法が一般的である。
しかし、今度はDRAMへのアクセスが集中して帯域の使用率が高い状態になっているときに、前記ログをDRAMにオフロードしてしまうと、ログをオフロードすること自体が使用帯域をさらに押し上げてしまうことになる。
そこで、DRAMの使用帯域を帯域モニターによりモニターし、帯域情報をログとして一時記憶し、DRAMの使用帯域が所定の閾値以上になった時は、帯域モニターのログをDRAMへ出力することを抑制する情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、上記課題を解決するために以下の特徴を有する。
メモリと、前記メモリにアクセスする複数のバスマスターとを接続する複数のバスと、前記複数のバスの使用帯域をモニターする帯域モニター手段を有する情報処理装置であって、前記帯域モニター手段は、モニターした結果を帯域情報ログとして一時記憶するための記憶手段と、前記帯域情報ログを前記記憶手段からメモリに転送するための転送手段を有し、前記帯域モニター手段は、各バスの使用帯域の合計が、所定の閾値以上と判断した場合、前記転送手段の動作を停止する停止手段を有することを特徴とする。
【発明の効果】
【０００８】
本発明の情報処理装置によれば、DRAMの使用帯域を帯域モニターによりモニターし、帯域情報をログとして一時記憶し、DRAMの使用帯域が所定の閾値以上になった時は、帯域モニターのログをDRAMへ出力することを抑制できる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施例における情報処理装置のブロック図
【図２】実施例におけるコントローラ部のブロック図
【図３】実施例における帯域モニターのブロック図
【図４】実施例におけるログのフォーマットとログ格納部の構成図
【図５】実施例における帯域モニターの制御フローチャート
【図６】実施例における各パスのメモリ帯域を示す図
【図７】実施例１におけるログ格納部に格納されたログデータを示す図
【図８】実施例１におけるログ格納部に格納されたログデータを示す図（データフル後）
【図９】実施例１におけるログ格納部に格納されたログデータを示す図（DMAC再開）
【図１０】実施例２におけるログ格納部に格納されたログデータを示す図（データフル後）
【図１１】実施例３におけるログ格納部に格納されたログデータを示す図（データフル後）
【発明を実施するための形態】
【実施例１】
【００１０】
以下、本発明を実施するための形態である情報処理装置のうち画像形成装置について図面を用いて説明する。
＜画像形成装置＞
図１に、本実施例を説明するための画像形成装置100のブロック図を示す。
スキャナ部110は、原稿画像を光学的に読み取り、画像データに変換する。また、スキャナ部110は、原稿を読取るための機能を持つ原稿読取部112と、原稿用紙を搬送するための機能を持つ原稿給紙部111とで構成される。
プリンタ部140は、記録紙を搬送し、その上に画像データを可視画像として印字して装置外に排紙する。プリンタ部140は、複数種類の記録紙カセットを持つ給紙部142と、画像データを記録紙に転写、定着させる機能を持つ転写定着部141と、印字された記録紙をソート、ステイプルして機外へ排出する機能を持つ排紙部143とで構成される。
【００１１】
コントローラ部120は、スキャナ部110、プリンタ部140と電気的に接続され、さらにＬＡＮ、ISDN、インターネット/イントラネット等のネットワーク150と接続されている。コントローラ部120は、スキャナ部110を制御して、原稿の画像データを読込み、プリンタ部140を制御して画像データを記録用紙に出力してコピー機能を提供する。また、スキャナ部110から読み取った画像データを、コードデータに変換し、ネットワーク150を介して図示しないホストコンピュータへ送信するスキャナ機能を提供する。さらに、ホストコンピュータからネットワーク150を介して受信したコードデータを画像データに変換し、プリンタ部140に出力するプリンタ機能を提供する。また、ISDNからデータを受信してプリントするFAX受信機能やISDNへスキャンしたデータを送信するFAX送信機能を有する。
また、これらスキャンやプリント、FAX送受信といった処理をジョブと呼び、画像形成装置100はこれらジョブを指示に従って制御・処理するものである。
操作部130は、コントローラ部120に接続され、液晶タッチパネルで構成され、画像形成装置を操作するためのユーザインタフェースを提供する。
【００１２】
＜コントローラ部＞
図２に、本実施例におけるコントローラ部120のブロック図を示す。内部ブロックそれぞれについて詳細に説明する。
CPU 200は、システム全体を制御するプロセッサである。CPU 200は、RAM 270に展開されたOSや制御プログラムに従ってプリント処理やスキャン処理といったジョブに関わる処理を統括的に制御する。
ROMコントローラ(ROMC)210は、システムのブートプラグラムを格納しているROM 211にアクセスするための制御モジュールである。画像形成装置100の電源がONされた時に、CPU 200はROMC 210を介してROM 211にアクセスし、CPU 200がブートプログラムを実行する。
【００１３】
メモリコントローラ(MEMC)260は、システムの制御プログラムや画像データが格納されるRAM 270にアクセスするための制御モジュールである。MEMC 260は、RAM 270の設定や制御を行うためのレジスタを備えており、このレジスタは、CPU 200からアクセス可能である。MEMC 260の中の構成については後述する。
RAM 270はCPU 200が動作するためのシステムワークメモリであり、画像データを一時記憶するための画像メモリでもある。本例ではSDRAM で構成されるものとする。
ネットワークＩＦ(NW_IF)220は、ネットワーク150に接続し、外部のホストコンピュータと画像データなどの情報の入出力を行う処理部である。
InterConnect 230、231は、CPU 200や各処理部とMEMC 260を接続するインターコネクトである。
【００１４】
DMAC 240〜246はMEMC 260を介してRAM 270へアクセスするメモリアクセスマスターとなるDMA(Direct Memory Access)コントローラである。後述する各処理部(250〜256)とRAM 270間のデータ転送を行う。DMAC 240〜246はCPU 200により制御され、どのメモリアドレスに対し読み書きをするか、及びDMA転送を行うタイミングを制御する機能を有する。詳細は後述するが、DMAC 240〜246はCPU 200からの設定により、メモリへの画像転送要求を発行しないよう制御する機能を有する。
後述する、スキャン処理部250、回転処理部251、変倍処理部252、RIP処理部253、圧縮処理部254、伸張処理部255、プリント処理部256も、CPU 200により制御される。また、各処理部を説明する上で画像データとは、圧縮されていない画像のことをいい、圧縮画像データとは、何らかの圧縮手段で圧縮された画像のことをいう。
【００１５】
スキャン処理部250は、CPU 200により設定された設定に従い、スキャナ部110から入力される画像データに対し、シェーディング補正、MTF補正、入力ガンマ補正やフィルタ処理等の画像処理を行い、DMAC 240に画像データを出力する。
回転処理部251は、CPU 200により設定された設定に従い、DMAC 241から入力される画像データに対し90度、180度、270度の回転処理を行い、DMAC 241に画像データを出力する。
変倍処理部252は、CPU 200により設定された設定に従い、DMAC 242から入力される画像データに対し1/2倍、1/4倍等任意の倍率に変倍し、DMAC 242に画像データを出力する。
【００１６】
RIP処理部253は、CPU 200により設定された設定に従い、DMAC 243から入力されるPDL画像に対しレンダリング処理を行い、DMAC 243に画像データを出力する。
圧縮処理部254は、CPU 200により設定された設定に従い、DMAC 244から入力される画像データに対しJPEG、JBIGといった画像圧縮処理を行い、DMAC 244に圧縮画像データを出力する。
伸張処理部255は、CPU 200により設定された設定に従い、DMAC 245から入力されるJPEG、JBIGのような圧縮画像データに対し伸張処理を行い、DMAC 245に伸張後の画像データを出力する。
プリント処理部256は、CPU 200により設定された設定に従い、DMAC 246から入力される画像データに対し、色空間変換処理、フィルタ処理、ハーフトーン処理等の画像処理を行い、プリンタ部140に画像データを出力する。
【００１７】
BUS 290〜299は、MEMC 260とバスマスターとなるDMAC(246,240)及びInterConnect(230,231)との間を接続しており、標準BUSであるAXI_BUS等で構成されているものとする。
次に、MEMC 260の内部構成について説明する。
BUFFER 261〜265は、各DMAC、InterConnect、帯域モニターからの受信データ、及び、送信データを一時的にバッファリングするバッファである。本バッファは、BUS 290〜294で一度にバースト転送可能なバッファサイズを少なくとも持つものである。また、BUS 290〜294の動作周波数とBUS_CONVERTERの動作周波数が異なる場合には非同期対応バッファにもなる。
BUS_CONVERTER 266は、各BUFFER 261〜265のアクセス権をラウンドロビンで調停する調停機能と、RAM 270へアクセスするためのプロトコルへの変換を行う。
【００１８】
帯域モニター280は、BUS 290〜293の転送データ量をモニターし、転送データの合計帯域を算出する。本合計帯域は、RAM 270に対する使用帯域となる。帯域モニター280がモニターしたBUS 290〜293の帯域情報は、帯域モニター280が内部に有するDMAC 304で、BUS 294を介してRAM 270に転送できる。また、許可する使用帯域の上限としての閾値は、CPU 200から設定可能であり、バスの使用帯域が設定された閾値以上か、もしくは合計帯域が設定された閾値以下であることを検知することもできる。詳細については、図３の帯域モニターの詳細ブロック図を用いて後述する。
【００１９】
＜帯域モニター＞
図３に、本実施形態における帯域モニター280内部の詳細ブロック図を示す。
帯域計算部300は、RAM 270の使用メモリ帯域を測定するために用いられるものである。具体的には、BUS 290、291、292、293のデータ転送を帯域計算部300によりモニターし、RAM 270の現在の使用帯域を算出する。また、帯域計算部300は、CPU 200によって設定された所定時間ごとに、BUS 290〜293を監視して得られた情報を基に、図４で後述するログ情報を生成して、ログ格納部303に順次格納する。
【００２０】
帯域閾値設定部301は、CPU 200により帯域の閾値を設定することが可能である。帯域閾値設定部301に設定された閾値は、帯域計算部300によって計測されたRAM 270の現在の使用メモリ帯域との比較に用いられる。
帯域閾値検知部302は、帯域閾値設定部301に設定された閾値と帯域計算部300の算出する使用メモリ帯域を比較し、使用メモリ帯域が、閾値より大きくなった場合にDMAC 304を停止し、閾値より小さくなった場合に再開するよう制御する。
ログ格納部303は、帯域計算部300から転送されるログ情報を格納するために用いられるものである。ログ格納部303は、例えばSRAMと、SRAMのポインタ制御を行うための制御部などから構成される。
【００２１】
DMAC 304は、ログ格納部303に格納されたログ情報を、BUS 294を介してRAM 270に転送するためのDMAC である。DMAC 304は、CPU 200から起動されると、ログ格納部303にログが格納され次第、それをCPU 200から設定されるRAM 270のアドレス領域に転送する、という動作を行う。
【００２２】
＜転送帯域＞
図６(a)に、RAM 270が出すことのできる転送帯域、図６(b)にBUS 290を介してデータ転送されるスキャン画像パスの必要帯域、図６(c)に、BUS 292を介して転送されるプリント画像パスの必要帯域の具体例を示す。
図６(a)に、RAM 270が出せる帯域を示す。算出方法は以下の式(1)となる。
【数１】
2019200626.tif 000003
【００２３】
ここで、メモリ動作周波数はRAM 270の動作周波数である。メモリバス幅はMEMC 260とRAM 270の間のデータ転送信号のバス幅のbit数である。メモリ効率は実際にMEMC 260とRAM 270の間の転送効率である。転送効率は、RAM 270へのアクセスパターンにより変化するものである。
図６(b)に、BUS 290を介してデータ転送されるスキャン画像パスの必要帯域を示す。算出方法は以下の式(2)となる。
【数２】
2019200626.tif 000004
【００２４】
1ページあたりの画素数は、1ページの画素数である。例えば、600[dpi]のA4サイズの画素数は約35[Mpixel]となる。
componentは、例をあげて説明する。例えばスキャン処理部250がRAM 270に転送する画像データがＲＧＢ画像で1色あたりの階調が256階調であれば、componentあたりのbit幅は8bit幅であり、component数は3色あるため3となる。例えばスキャン処理部250が出力する画像データの階調が1024階調であればcomponentあたりのbit幅は10bitとなる。また、ＲＧＢの画像以外に文字・写真といった画像識別情報を加えて出力する場合は、ＲＧＢ×画像識別情報でcomponent数は4となる。ipmはスキャナ部110の読み取り性能を示し、1分間に何枚スキャンし読み出せるかを示す。画像転送以外の割合は、スキャナ部110から画像が入力される場合の実際に画像が転送されている以外の時間の割合を示す。
【００２５】
図６(c)に、BUS 292を介して転送されるプリント画像パスの必要帯域を示す。算出方法は以下の式(3)となる。
【数３】
2019200626.tif 000005
【００２６】
式(2)との算出方法の違いは、ipmとppmのみであり、ppmは1分間に何枚プリントできるかを示す。
つまり、RAM 270は、画像形成装置100のスキャン読み取り速度及びプリント出力速度を少なくとも保証し、かつ、CPU等最低限動作可能なメモリ帯域を持つものを選択する必要がある。図６の例を使用し説明すると、スキャン性能が図６(b)のスキャン帯域例2で、プリント性能が図６(c)のプリント帯域例4を前提とすると、233[MB/s]+933[MB/s]の合わせて1166[MB/s]がメモリ帯域には最低限必要となる。より詳細にはCPU 200等が少なくとも動作できる帯域は最低保証する必要があるため、αをCPU 200が使用するメモリ帯域とすると、メモリ帯域は1166+α[MB/s]が必要となる。
【００２７】
よって、コントローラ部120がスキャン処理とプリント処理を同時に動作可能とする場合は、図６(a)に示すメモリ帯域例1のメモリ動作周波数が1066[MHz]のメモリは1066[MB/s]しか出ないためは選択できない。本例においては、少なくとも図６(a)のメモリ帯域例2のメモリ動作周波数が1866[MHz]の1866[MB/s]が出せるメモリを選択する必要がある。余りの帯域を非リアルタイム画像パスに割り当てることが可能であるため、より動作周波数の高いメモリを選択すると、非リアルタイム画像パスも同時に動作できる可能性が高くなる。
【００２８】
＜ログ格納部とログフォーマット＞
図４に、ログ格納部303の内部構成と、それに格納されるログのフォーマットを説明するための図を示す。
ログ格納部303には、SRAM 410と、WritePointer 411、ReadPointer 412、FullFlag 413が含まれている。本実施例においては、SRAM 410に格納されるログ1セットは128bitで構成されており、それが32word格納できる構成となっている。
WritePointer 411は、帯域計算部300から転送されるログデータを受信し、SRAM 410に格納した時にインクリメントするポインタを示す。
ReadPointer 412は、SRAM 410から取りだし、DMAC 304に転送するログデータを送信した時に、インクリメントするポインタを示す。
FullFlag 413は、WritePointer 411がインクリメントし続けて、ReadPointer 412の示すアドレスの前まで到達した時にセットされるフラグであり、SRAM 410がすべて使用中であることを示す。帯域計算部300は、FullFlag 413がセットされていない場合、SRAM 410に空きがあると判断して、生成したログ情報をSRAM 410に転送しようと動作する。
DMAC 304は、ReadPointer 412とWritePointer 411の値に差があった場合に、出力すべきログデータがSRAM 410内に残っていると判断する。そして、DMAC 304が起動されている限りは、ReadPointer 412に格納されているログを取り出す動作をする。この動作は、ログ格納部303へログを格納する処理と、並行して行われる。
【００２９】
SRAM 410に格納される128bitのログデータ 400は、Header 401、TimeStamp 402、ReadCount 403、WriteCount 404という各32bitの情報を包含している。
Header 401は、ログ管理上の情報が含まれ、例えば、そのログがBUS 290〜293のいずれの帯域ログなのかが、BUS に対応させてch0〜ch3のチャネル番号として保存される。
TimeStamp 402（タイムスタンプ）には、帯域モニター280が動作してから経過した時間が記録される。時間は、実装によって帯域モニター280の動作クロック数や、μs/msオーダの実時間などで保持できるが、本実施例では、μsオーダの実時間が保持されているものとする。
ReadCount 403（読み込みカウント）、WriteCount 404（書き込みカウント）は、各BUS 290〜293が、所定時間内に、何回有効なデータ転送をおこなったかを示すカウント数の情報である。なお、所定時間は、CPU 200から帯域計算部300にあらかじめ設定される。例えば、カウント数が10000の時、各BUS 290〜293のデータ幅は32bit (4×1Byte)であるので、所定時間に40000Byte(≒約40KB)のデータ転送がおこなわれたことがわかる。
【００３０】
＜処理フロー＞
図５は、本実施例における帯域モニター280のログ取得、格納、出力という一連の動作フローを説明するためのフローチャートである。また、図７には、SRAM 410に保持されるログデータの例と、それぞれのログを受信した時の各チャネルとRAM 270全体の使用帯域と、DMAC 304の動作状態を対応づけた表を示す。
本実施例における帯域モニター280の動作について、図５と図７を参照して説明する。
まず、CPU 200は、帯域モニター280に対して、初期設定を行う(S501)。具体的には、CPU 200は、帯域計算部300がどれくらいの時間間隔でBUS 290〜293のログを取得するかのサンプル時間と、帯域閾値検知部302がどのくらいの使用帯域でDMAC 304の停止/再開制御を行うかの帯域閾値を設定する。また、CPU 200は、DMAC 304がRAM 270のどの領域にログを出力するかも設定する。ここでは、図６(a)のメモリ帯域例2に示したように、1866[MB/s]であるRAMが使用されているものとする。そして、サンプル時間は1msに、帯域閾値設定部301には、RAM 270のメモリ帯域のおよそ80%に相当する1500[MB/s]が帯域閾値として設定されているものとする。
【００３１】
次に、CPU 200は、帯域モニター280に対して、動作開始指示を出す(S502)。動作開始指示は、具体的には、DMAC 304に対する起動指示と、帯域計算部300に対するBUS 190〜193の帯域ログ取得開始指示である。
帯域モニター280は、動作開始指示を受けると、帯域計算部300で、ログ取得処理を開始する(S503)。
図５(b)に、S503のログの取得処理の詳細を示す。S503の処理は、RAM 270の空き帯域が潤沢で、DMAC 304が動作している場合のログ取得処理である。ログの取得処理S503では、まず、帯域計算部300は、CPU 200によって設定されたサンプル時間(ここでは1ms)が経過するのを待機する(S520)。
サンプル時間が経過すると(S520でYes)、帯域計算部300は、各チャネル(ch)の帯域情報を取得し、ログデータ400として整形して、ログ格納部303に転送し、SRAM 410に格納し一時記憶する(S521)。この時、DMAC 304は動作しているので、SRAM 410に格納されたログデータ400は、書き込まれた順に、随時BUFFER 265、BUS_CONVERTER 266を介してRAM 270に転送される。また、ログ取得処理は、全チャネル同時に行っても良いし、チャネル毎に行ってもよい。本実施例においては、全チャネル同時に行うこととして説明する。
以上の処理により、例えば、図７のログ1〜4のログデータに記載された項目が、まずSRAM 410に保存される。ログ1は、ch0(BUS 290)に発生した有効データアクセスのクロック数が、1msの間に、Readが1750サイクル、Writeが58250サイクルあったことを示している。BUS 290のデータ幅が32bit(=4Byte)であるため、この1msの期間にRAM 270と行ったデータ転送量は、(1750+58250)×4Byte=240000Byte≒240KBである。これを秒単位の帯域に換算したものが、帯域概算の項目に示されており、240MB/sが、最初の1msの時間にch0が使用したメモリ帯域ということになる。同様に、ch1〜3のログデータは、ログ2〜4としてSRAM 410に保存される。以上から、最初の1msでch0〜3トータルとして、288MB/sが使用されている。
【００３２】
図５(a)のフローチャートに戻って説明を続ける。
帯域計算部300は、ログ1〜4の帯域情報をSRAM 410に格納し、上記のように計算した使用メモリ帯域(上記場合288MB/s)の情報を、帯域閾値検知部302に転送する。そして、帯域閾値検知部302は、帯域閾値設定部301の閾値と比較する(S504)。この比較の結果、使用メモリ帯域が閾値以下であれば(S504のNo)、ログ取得処理S503を続ける。
使用メモリ帯域が閾値以上であれば(S504のYes)、帯域閾値検知部302は、DMAC 304の動作を停止する(S505)。図７の例によれば、2msまでは、使用帯域は、帯域閾値設定部301に設定された1500MB/sよりも少ないため、DMAC 304は起動状態となっている。3ms目の帯域情報であるログ9〜12をSRAM 410に転送した段階で、帯域閾値検知部302には、1684MB/sという使用メモリ帯域の情報が転送される。これは、帯域閾値設定部301に設定された1500MB/sよりも大きくなるため、S504でYesの処理に進み、帯域閾値検知部302によって、DMAC 304の動作が停止される(S505)。DMAC 304停止後も、帯域計算部300はBUS 190〜193の帯域情報を引き続き取得する(S506)。
S506は、RAM 270の帯域がひっ迫しており、DMAC 304が停止している場合のログ取得処理である。ログ取得処理S506について図5(c)を用いてより詳細に説明する。
まず、S503と同様に、帯域計算部300で、CPU 200によって設定されたサンプル時間(ここでは1ms)が経過するのを待つ(S540)。サンプル時間が経過すると(S540のYes)、帯域計算部300は、ログ格納部303のFullFlag 413を確認し、SRAM 410がデータフルの状態かどうかを確認する(S541)。SRAM 410がデータフルの状態でなければ(S541のNo)、帯域計算部300は、S521と同様に、ログデータ400をログ格納部303に転送して、SRAM 410に格納する(S544)。これらの処理により、例えば、図７のログ13〜16および、ログ17〜20のログデータに記載された項目が、SRAM 410に保存される。一方、S541において、ログ格納部303がデータフルの時は(S541のYes)、帯域計算部300は、直近にSRAM 410に保存した帯域情報のログを取得する(S542)。そして、帯域計算部300は、そこにBUS 190〜193から取得した新たな帯域情報を加算・マージし(S543)、ログデータ400をログ格納部303に転送して、SRAM 410に格納する(S544)。
【００３３】
図８を用いて、この動作についてより詳細に説明する。
図８は、DMAC 304が停止したためSRAM 410にログが溜まっていった時のSRAM 410の状態を示している。帯域モニター280において、起動後2msまではDMAC 304が動作していたが、3ms以降、RAM 270の使用帯域がひっ迫したため、DMAC 304が停止した。この場合、2msまでのログデータ(ログ1〜8に格納されていた)は、DMAC 304の動作によって、RAM 270上に既にデータ転送されている状態である。一方、3ms以降のログデータは、DMAC 304が停止しているため、10msのログデータまでSRAM 410に格納して、FullFlag 413がセットされる状態になっている。この状態で、11ms目に、10ms目で取得できたカウントと同じカウントを持つログデータを取得した場合を想定する。
この時は、まず直近にログ格納部303に保存したログデータは、ログ5〜8に格納されている10ms時のログデータであるため、これをSRAM 410から読み出す(S542)。
そして、11ms目に取得され、追加される帯域情報を加算・マージして、ログ5‐2〜8‐2のようなログを生成する(S543)。
ログの加算・マージの方法としては、チャネル番号を含むHeaderは、そのまま変更しない。TimeStamp情報は、最新のTimeStampに更新する。すなわち、上記の例では11msとする。ReadCountおよびWriteCount情報は、直近の情報に最新の情報を加算する。すなわち、10ms時のReadCount、WriteCountに11ms時のそれを加算することで、生成する。そして、加算・マージして生成したログデータは、SRAM 410に書き戻される。以上のような処理をおこなうことで、SRAM 410のデータフルが発生している際に受信したログデータが、消失することを防ぐことができる。
【００３４】
図５(a)のフローチャートと図７に説明を戻す。ログ取得処理S506が完了すると、帯域計算部300が計算した使用メモリ帯域の情報を、帯域閾値検知部302に転送し、帯域閾値設定部301の閾値と比較する(S507)。この比較処理は、DMAC 304の停止中におこなわれる処理であるため、図７のログ13〜16およびログ17〜20の格納後にそれぞれおこなわれる処理である。
この比較の結果、使用メモリ帯域が閾値以上であれば(S507のYes)、ログ取得処理S506を続ける。使用メモリ帯域が閾値未満であれば(S507のNo)、帯域閾値検知部302は、DMAC 304の動作を再開する(S508)。
図７の例によれば、4msまでは、使用帯域は、帯域閾値設定部301に設定された1500MB/sよりも大きいため、DMAC 304は停止状態となっている。5ms目の帯域情報であるログ17〜20をSRAM 410に転送した段階で、帯域閾値検知部302には、1436MB/sという使用メモリ帯域の情報が転送される。これは、帯域閾値設定部301に設定された1500MB/sよりも小さいため、S507でNoの処理に進み、帯域閾値検知部302によって、DMAC 304の動作が再開される。
【００３５】
図９は、図８の状態から12msまでDMAC 304が停止状態になって、ログが加算・マージされた状態と、その状態から13ms目のログを算出して、DMAC 再開した後の動作を説明するための表である。図９の左表のようなSRAM 410の状態にある時に、右表の13ms目の帯域情報を、帯域計算部300が算出すると、このデータ算出時はいまだDMAC 304は停止状態であるため、帯域情報はログ5〜8に加算・マージされて格納される。一方、使用メモリ帯域は1436MB/sとなり、閾値である1500MB/sを下回るため、DMAC 304の動作は再開される。すると、DMAC 304は、古いログであるログ9から順番にRAM 270にデータ出力を開始する。それによって、SRAM 410の空きができるため、例えば図９の右表に示した14ms目の帯域情報を帯域計算部300が算出すると、このログデータはDMAC 304によって出力されたログ9〜ログ12に上書きされるという動作になる。
【００３６】
以上によって、RAM 270の帯域がフルに近い状態にある時に、帯域モニター280によるBUS 294の帯域に圧迫されて、リアルタイム性が必要なスキャン/プリントパスのBUS 290、292のデータ転送が阻害されることを防ぐことができる。
【実施例２】
【００３７】
実施例１においては、SRAM 410がデータフルになった時に、できるだけ帯域情報を落とさないように帯域情報を加算・マージする方法を示した。以下の実施例では、DMAC 304が停止した場合、SRAM 410がデータフルになる前に、一部のログを保存する価値の低いチャネルに関するデータについては加算・マージを先行して行う方法について、例を挙げて説明する。
図１０は、3msでDMAC 304が停止状態になった後、4ms、5ms目に情報を取得した時に、帯域計算部300が、ch1とch3のログにそれぞれの情報を加算・マージする様子を説明する表である。
3ms目でDMAC 304が停止した後、帯域計算部300は、4ms目の情報を取得した時に、ch1とch3のログについては、ログ10、12に保存した3ms目のログの値に4ms目の情報を加算・マージして、保存し直す（ログ10-2,12-2）。また、5ms目も同様に、帯域計算部300は、取得した情報を各ログ（ログ10-2，12-2）の値に加算・マージして、保存し直す（ログ10-3,12-3）。一方、ch0とch2のログについては、SRAM 410の空いている領域(ここでは、ログ13〜16)にログを保存するように動作する。こうすることにより、ログ保存する価値の低いch1,3については、可算・マージすることにより、SRAM 410の領域を消費することなく、ログを保存する価値の高いch0,2については保存できるようになる。
なお、帯域計算部300は、ログを保存する価値の低いチャネルが多数ある場合には、それらを複数のグループに分けて、加算・マージして帯域情報ログとして保存してもよい。
【実施例３】
【００３８】
実施例２では、ch1,3の2つの各バスについて、DMAC 304が停止している期間中は、それぞれデータを加算・マージすることにより、SRAM 410の領域の消費を低減することができた。次の実施例３では、ログ保存する価値の低いチャネルのログをまとめて、サンプル時間毎に加算・マージするものである。
図１１は、3msでDMAC 304が停止状態になった後、4ms、5ms目にログを取得した時に、帯域計算部300が、ch1とch3のログを加算・マージする様子を説明する表である。これによれば、3ms目でDMAC 304が停止した後、帯域計算部300が、4ms目のログを取得した時に、ch1とch3のログを加算・マージして、ログ14に保存するように動作する（ログ14-2）。5ms目のログを取得した時も同様に、帯域計算部300は、ch1とch3のログを加算・マージして、ログ17に保存するように動作する（ログ17-2）。
一方、ch0、ch2のログについては、帯域計算部300は、SRAM 410の空いている領域(ここでは、4ms目はそれぞれログ13,15, 5ms目はそれぞれログ16,18)にログを保存する。
実施例２においては、RAM 270の帯域がフルに近い状態にある時に、リアルタイム性が必要なスキャン/プリントパスのBUS 290、292のデータ転送帯域が確保できているかを確認する用途に取得したログを使用することを優先する。したがって、ch0、ch2のログを、残す価値が相対的に高いチャネルとしてそのまま保存し、それ以外のch1、ch3のログをログが残す価値が相対的に低いチャネルとして、ログを加算・マージして保存するように動作している。
実施例３によれば、SRAM 410の消費する領域を低減できるともに、ログ保存する価値の低いチャネルのログの合計についてサンプル時間毎の推移についても把握することができる。
【００３９】
なお、この取得するログの価値は、帯域モニター280を使用するユーザが取得したい情報によって変わる。そのため、例えば、キャッシュなどの動作によって、使用メモリ帯域の推移が想定しづらいCPU 200が使用するメモリ帯域を詳細に見たい場合は、ch0、ch1、ch2のログを加算・マージするような動作をさせることもできる。
このように、例えばログを残す価値が相対的に低いチャネルのデータを、SRAM 410がフルになるのを待つことなく、ログを加算・マージすることで、ログを残す価値が相対的に高いチャネルのデータの精度を、より長い時間維持することができる。
【００４０】
（その他の実施例）
実施例１においては、帯域モニター280がRAMの使用メモリ帯域が閾値以上かどうかを判断(S504、S507)し、DMAC 304の動作を制御(S505、S508)していた。しかし、これらの処理は、帯域モニター280の代わりに外部のCPU 200が動作するソフト上で制御するような構成であってもよい。これによって、帯域モニター280に帯域閾値設定部301と帯域閾値検知部302が不要になり、回路規模が削減することができる。
また、実施例１においては、DMAC 304が停止し、ログ格納部303がデータフルになった場合、帯域計算部300は、それ以降に取得したログについて、DMAC 304が再開するまで加算・マージし続けるような制御を行っていた。しかし、これらの制御は、所定回数の加算・マージがおこなわれると、SRAM 410の内容をまとめて転送効率の良いバースト転送で、強制的に出力するような制御を行う構成であってもよい。これによって、帯域モニターのログ精度が極端に落ちることを防ぐことができる。
【００４１】
また、本発明は、上述の実施例の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【符号の説明】
【００４２】
270   RAM 
280   帯域モニター
300   帯域計算部
303   ログ格納部
304   DMAC 
【図１】
2019200626.tif 000006
【図２】
2019200626.tif 000007
【図３】
2019200626.tif 000008
【図４】
2019200626.tif 000009
【図５】
2019200626.tif 000010
【図６】
2019200626.tif 000011
【図７】
2019200626.tif 000012
【図８】
2019200626.tif 000013
【図９】
2019200626.tif 000014
【図１０】
2019200626.tif 000015
【図１１】
2019200626.tif 000016