(57)【特許請求の範囲】
【請求項１】
共通バスに接続された複数の処理ブロックが、複数のバンクを有するアドレス空間からなるメモリとの間で、前記共通バスを介してデータの受け渡しを行う際の、該データの受け渡しの状態に基づいて、予め定められた一定の単位時間あたりの前記共通バス上のデータの転送ロスを測定するバスモニタ装置であって、
前記複数の処理ブロックからのデータアクセスの要求に応じて出力されるデータアクセス要求信号を受け付けたことを表すデータアクセス受け付け信号を出力するデータアクセス受け付け信号生成部と、
前記データアクセス要求信号に応じて、仮想アクセス信号を出力する仮想アクセス信号生成部と、
前記共通バス上の前記データの転送ロスを判定し、該判定結果を転送情報として出力するバス状態判定部と、
前記転送情報に基づいて前記データの転送ロスを測定する転送ロス測定部と、
を備え、
前記バス状態判定部は、
前記仮想アクセス信号に応じて、前記データアクセス受け付け信号生成部から出力されるデータアクセス受け付け信号の信号間隔と、予め決められた基準リクエスト時間とを比較して、前記データの転送ロスかどうかの判定を行なう、
ことを特徴とするバスモニタ装置。
【請求項２】
前記仮想アクセス信号生成部は、
前記複数の処理ブロックからの前記データアクセス要求信号に応じて前記仮想アクセス信号をアクティブにし、一方、前記データアクセス要求信号が、第一の所定時間以上出力されていない場合には、前記仮想アクセス信号をノンアクティブにする、
ことを特徴とする請求項１に記載のバスモニタ装置。
【請求項３】
前記バス状態判定部は、
前記仮想アクセス信号がアクティブである場合には、前記データアクセス受け付け信号生成部から出力されるデータアクセス受け付け信号の信号間隔と、予め決められた基準リクエスト時間とを比較し、その結果、該基準リクエスト時間よりも長い場合には、前記データの転送ロスとし、一方、前記仮想アクセス信号がノンアクティブである場合には、前記比較を行わなず、前記転送ロスと判断しない、
ことを特徴とする請求項１に記載のバスモニタ装置。
【請求項４】
前記転送ロス測定部は、
所定のタイミング信号に基づいて前記単位時間の区切りを表す単位時間タイミング信号を生成する単位時間生成部と、
前記タイミング信号に基づいて、前記転送情報が表すデータの受け渡しにおける前記データの転送ロスの期間を計測する状態測定カウンタ部と、
前記単位時間タイミング信号が前記単位時間の区切りを表すタイミングで、前記状態測定カウンタ部が計測した結果を保持する結果保持レジスタ部と、
をさらに備える、
ことを特徴とする請求項１から請求項３のいずれか１の項に記載のバスモニタ装置。
【請求項５】
前記バス状態判定部は、
前記転送ロスと判定した場合には、前記データアクセスが受け付けられない該転送ロスの時間を判定し、
前記データアクセス要求信号と、前記データアクセス受け付け信号とに基づいて、データアクセスが受け付けられた処理ブロックを判定し、
該データアクセスが受け付けられた処理ブロックから出力される前記メモリのアドレス信号と、前記メモリへのデータの書き込みまたは前記メモリからのデータの読み出しを表す制御信号とに基づいて、該データアクセスが受け付けられた処理ブロックが前記メモリとの間で行うデータアクセスの状況を判定し、
該判定したデータアクセスの状況に基づいて、判定した前記転送ロスの時間の種類を判定し、
該判定した前記転送ロスの時間の種類に応じた前記転送情報を出力する、
ことを特徴とする請求項２から請求項４のいずれか１の項に記載のバスモニタ装置。
【請求項６】
前記転送情報は、
前記メモリに対して行われるバンクインターリーブのアクセスにおいて、前記メモリが有するバンクにアクセスする際に発生するデータアクセスが受け付けられない前記転送ロスの期間を表すロス量情報を含み、
前記転送ロス測定部は、
前記ロス量情報に基づいて、該転送ロスの時間、または該転送ロスの回数を測定する、
ことを特徴とする請求項３から請求項５のいずれか１の項に記載のバスモニタ装置。
【請求項７】
前記転送情報は、
前記メモリに対するデータアクセスに応じて、該メモリが読み出し動作から書き込み動作に切り替わるとき、または該メモリが書き込み動作から読み出し動作に切り替わるときに発生するデータアクセスが受け付けられないロスの期間を表すロス量情報を含み、
前記転送ロス測定部は、
前記ロス量情報に基づいて、該転送ロスの時間、または該転送ロスの回数を測定する、
ことを特徴とする請求項３から請求項５のいずれか１の項に記載のバスモニタ装置。
【請求項８】
前記転送情報は、
前記メモリに対して行われるリフレッシュ動作によって発生するデータアクセスが受け付けられないロスの期間を表すロス量情報を含み、
前記転送ロス測定部は、
前記ロス量情報に基づいて、該転送ロスの時間、または該転送ロスの回数を測定する、
ことを特徴とする請求項３から請求項５のいずれか１の項に記載のバスモニタ装置。
【請求項９】
前記転送情報は、
前記メモリに対してデータアクセスが行われているデータアクセスの期間を表すアクセス量情報を含み、
前記転送ロス測定部は、
前記アクセス量情報に基づいて、該データアクセスの時間、または該データアクセスの回数を測定する、
ことを特徴とする請求項３から請求項５のいずれか１の項に記載のバスモニタ装置。
【請求項１０】
前記アクセス量情報は、
前記メモリのバンク毎のデータアクセスの期間を表し、
前記転送ロス測定部は、
前記アクセス量情報に基づいて、前記メモリのバンク毎の該データアクセスの時間、または該データアクセスの回数を測定する、
ことを特徴とする請求項９に記載のバスモニタ装置。
【請求項１１】
前記アクセス量情報は、
前記メモリの読み出し動作毎および書き込み動作毎のデータアクセスの期間を表し、
前記転送ロス測定部は、
前記アクセス量情報に基づいて、前記メモリの読み出し動作毎および書き込み動作毎の該データアクセスの時間、または該データアクセスの回数を測定する、
ことを特徴とする請求項９に記載のバスモニタ装置。
【請求項１２】
共通バスに接続された複数の処理ブロックが、複数のバンクを有するアドレス空間からなるメモリとの間で、前記共通バスを介してデータの受け渡しを行う際の、該データの受け渡しの状態に基づいて、予め定められた一定の単位時間あたりの前記共通バス上のデータの転送ロスを測定するバスモニタ装置におけるバスモニタ方法であって、
前記複数の処理ブロックからのデータアクセスの要求に応じて出力されるデータアクセス要求信号を受け付けたことを表すデータアクセス受け付け信号を出力するデータアクセス受け付け信号生成ステップと、
前記データアクセス要求信号に応じて、仮想アクセス信号を出力する仮想アクセス信号生成ステップと、
前記共通バス上の前記データの転送ロスを判定し、該判定結果を転送情報として出力するバス状態判定ステップと、
前記転送情報に基づいて前記データの転送ロスを測定する転送ロス測定ステップと、
を含み、
前記バス状態判定ステップは、
前記仮想アクセス信号に応じて、前記データアクセス受け付け信号生成ステップから出力されるデータアクセス受け付け信号の信号間隔と、予め決められた基準リクエスト時間とを比較して、前記データの転送ロスかどうかの判定を行なう、
ことを特徴とするバスモニタ方法。
【請求項１３】
共通バスに接続された複数の処理ブロックが、複数のバンクを有するアドレス空間からなるメモリとの間で、前記共通バスを介してデータの受け渡しを行う際の、該データの受け渡しの状態に基づいて、予め定められた一定の単位時間あたりの前記共通バス上のデータの転送ロスを測定するバスモニタ装置のコンピュータに実行させるプログラムであって、
前記複数の処理ブロックからのデータアクセスの要求に応じて出力されるデータアクセス要求信号を受け付けたことを表すデータアクセス受け付け信号を出力するデータアクセス受け付け信号生成ステップと、
前記データアクセス要求信号に応じて、仮想アクセス信号を出力する仮想アクセス信号生成ステップと、
前記共通バス上の前記データの転送ロスを判定し、該判定結果を転送情報として出力するバス状態判定ステップと、
前記転送情報に基づいて前記データの転送ロスを測定する転送ロス測定ステップと、
を含み、
前記バス状態判定ステップは、
前記仮想アクセス信号に応じて、前記データアクセス受け付け信号生成ステップから出力されるデータアクセス受け付け信号の信号間隔と、予め決められた基準リクエスト時間とを比較して、前記データの転送ロスかどうかの判定を行なう処理、
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バスモニタ装置、バスモニタ方法、およびプログラムに関する。
【背景技術】
【０００２】
静止画用カメラ、動画用カメラ、医療用内視鏡カメラ、または産業用内視鏡カメラなどの画像処理装置に搭載されるシステムＬＳＩなど、多くのシステムＬＳＩでは、接続された１つのＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を、内蔵する複数の処理ブロックが共有している。このようなシステムＬＳＩにおいては、内蔵している複数の処理ブロックが、システムＬＳＩ内部のデータバスに接続され、各処理ブロックは、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）によってＤＲＡＭへのアクセスを行う。このとき、バスアービタは、それぞれの処理ブロックから発せられるＤＲＡＭへのアクセス要求を適切に調停しながら、ＤＲＡＭへのアクセスを制御している。
【０００３】
このバスアービタには、以下のような２つの重要な役割が求められている。その１つは、データバス全体のバス帯域を確保することである。そして、もう１つは、各処理ブロックの調停を適切に行うことである。
【０００４】
バス帯域は、各処理ブロックがＤＲＡＭにアクセスした際の、データバス上のデータ量を表しており、データバス全体のバス帯域を確保する方法として、バンクインターリーブという方法が知られている。バンクインターリーブでは、ＤＲＡＭのそれぞれのバンク毎にデータ転送を制御する。そして、先にアクセスしたバンクのデータ転送の処理中に、次にアクセスするバンクのアドレス設定の処理を並行して行うことによって、ＤＲＡＭのデータアクセスの効率を向上させている。しかしながら、ＤＲＡＭには、同一のバンクを連続してアクセスする場合に、アクセスを受け付けられない期間が存在する。このため、バンクインターリーブで同一のバンクに連続アクセスしてしまうと、ＤＲＡＭがアクセスを受け付けられないロス時間が発生し、データアクセス効率が低下してしまう。そこで、データ転送処理とアドレス設定処理とを並行して行うことによって高いデータアクセス効率を確保するためには、バンクインターリーブによって、異なるバンクに順次アクセスする必要がある。
【０００５】
また、各処理ブロックの調停を行う方法として、各処理ブロックからＤＲＡＭにアクセスする際の優先度を決定する方法が知られている。このＤＲＡＭへのアクセスの優先度は、例えば、各処理ブロックのバス帯域の平均値（平均帯域）、各処理ブロックに備えているバッファの容量、各処理ブロックの重要度などに応じて決定される。そして、ＤＲＡＭへのアクセスが一定期間阻害されると処理が破綻してしまうような処理ブロックには、優先的にバス帯域を割り当てるようにすることによって、各処理ブロックが必要とするバス帯域を確保している。
【０００６】
従来から、各処理ブロックが必要とするバス帯域を確保しつつ、バンクインターリーブによってデータバス全体のバス帯域を向上、すなわち、ＤＲＡＭのデータアクセスの効率を向上させ、システムとしての性能（パフォーマンス）を確保させるための技術が開示されている。
【０００７】
特許文献１に開示された技術は、各処理ブロックの優先度をレジスタに設定し、優先度の高い処理ブロックの異なるバンクのアクセスを優先的に受け付ける技術である。また、特許文献２に開示された技術は、各処理ブロックによるＤＲＡＭアドレスの発生方法などをレジスタに設定し、複数の処理ブロック間で、互いに離れたバンクをアクセスするように、ＤＲＡＭのアドレスを発生させる技術である。
【０００８】
特許文献１および特許文献２に開示された技術では、レジスタの設定で、それぞれの設定を調整することができるため、例えば、ＤＲＡＭの種別や、システムの動作モードなどに応じて適切なレジスタ設定を行うことによって、システムの性能を確保するための最適な調停を行うことができる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１１−３１６０号公報
【特許文献２】特開２０１１−３１６１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
このように、特許文献１および特許文献２に開示されている技術では、データバス全体のバス帯域の向上と、各処理ブロックが必要とするバス帯域の確保という、相反する要求を、レジスタの設定によって調節することができる。
【００１１】
しかし、特許文献１および特許文献２に開示されている技術では、レジスタの設定が最適でない場合、例えば、優先度が低い処理ブロックのＤＲＡＭアクセスの要求を優先的に受け付けてバス帯域を割り当ててしまったり、バンクインターリーブが有効に機能せずにデータバス全体のバス帯域が低下してしまったりなど、システム全体の動作が破綻してしまう場合がある。
【００１２】
この場合には、システム全体の動作が破綻している要因となっている処理ブロックを特定し、レジスタの設定を最適にする必要がある。また、システム全体の動作が破綻するまでには至っていない場合でも、バンクインターリーブが有効に活用され、ＤＲＡＭのデータアクセスが効率よく行われているのか否かを解析することは、レジスタの設定を最適にし、システムの性能を向上するためにも重要である。
【００１３】
しかしながら、ＤＲＡＭのデータアクセスの効率化や、レジスタの設定を最適にするための指針となる情報を取得する方法がなかった。このため、従来、各処理ブロックのレジスタ設定を行う際には、例えば、最適と思われるレジスタ設定を行った上で実際にシステムを動作させ、システムとして破綻が起こらない設定を見つけだす作業が行われており、システム開発の効率が悪いという問題がある。
【００１４】
なお、システムとして破綻していた場合には、変更したレジスタ設定からシステム破綻の要因となっている処理ブロックをある程度特定することはできるが、システムとして破綻していない場合には、データアクセスの効率を解析することができないままである。
【００１５】
本発明は、上記の課題認識に基づいてなされたものであり、データバスの効率を向上するために有用な情報を取得することができるバスモニタ装置、バスモニタ方法、およびプログラムを提供することを目的としている。
【課題を解決するための手段】
【００１６】
上記の課題を解決するため、本発明のバスモニタ装置は、共通バスに接続された複数の処理ブロックが、複数のバンクを有するアドレス空間からなるメモリとの間で、前記共通バスを介してデータの受け渡しを行う際の、該データの受け渡しの状態に基づいて、予め定められた一定の単位時間あたりの前記共通バス上のデータの転送ロスを測定するバスモニタ装置であって、前記複数の処理ブロックからのデータアクセスの要求に応じて出力されるデータアクセス要求信号を受け付けたことを表すデータアクセス受け付け信号を出力するデータアクセス受け付け信号生成部と、前記データアクセス要求信号に応じて、仮想アクセス信号を出力する仮想アクセス信号生成部と、前記共通バス上の前記データの転送ロスを判定し、該判定結果を転送情報として出力するバス状態判定部と、前記転送情報に基づいて前記データの転送ロスを測定する転送ロス測定部と、を備え、前記バス状態判定部は、前記仮想アクセス信号に応じて、前記データアクセス受け付け信号生成部から出力されるデータアクセス受け付け信号の信号間隔と、予め決められた基準リクエスト時間とを比較して、前記データの転送ロスかどうかの判定を行なう、ことを特徴とする。
また、本発明のバスモニタ装置における前記仮想アクセス信号生成部は、前記複数の処理ブロックからの前記データアクセス要求信号に応じて前記仮想アクセス信号をアクティブにし、一方、前記データアクセス要求信号が、第一の所定時間以上出力されていない場合には、前記仮想アクセス信号をノンアクティブにする、ことを特徴とする。
また、本発明のバスモニタ装置における前記バス状態判定部は、前記仮想アクセス信号がアクティブである場合には、前記データアクセス受け付け信号生成部から出力されるデータアクセス受け付け信号の信号間隔と、予め決められた基準リクエスト時間とを比較し、その結果、該基準リクエスト時間よりも長い場合には、前記データの転送ロスとし、一方、前記仮想アクセス信号がノンアクティブである場合には、前記比較を行わなず、前記転送ロスと判断しない、ことを特徴とする。
【００１７】
また、本発明のバスモニタ装置における前記転送ロス測定部は、所定のタイミング信号に基づいて前記単位時間の区切りを表す単位時間タイミング信号を生成する単位時間生成部と、前記タイミング信号に基づいて、前記転送情報が表すデータの受け渡しにおける前記データの転送ロスの期間を計測する状態測定カウンタ部と、前記単位時間タイミング信号が前記単位時間の区切りを表すタイミングで、前記状態測定カウンタ部が計測した結果を保持する結果保持レジスタ部と、をさらに備える、ことを特徴とする。
【００２０】
また、本発明の前記バス状態判定部は、前記転送ロスと判定した場合には、前記データアクセスが受け付けられない該転送ロスの時間を判定し、前記データアクセス要求信号と、前記データアクセス受け付け信号とに基づいて、データアクセスが受け付けられた処理ブロックを判定し、該データアクセスが受け付けられた処理ブロックから出力される前記メモリのアドレス信号と、前記メモリへのデータの書き込みまたは前記メモリからのデータの読み出しを表す制御信号とに基づいて、該データアクセスが受け付けられた処理ブロックが前記メモリとの間で行うデータアクセスの状況を判定し、該判定したデータアクセスの状況に基づいて、判定した前記転送ロスの時間の種類を判定し、該判定した前記転送ロスの時間の種類に応じた前記転送情報を出力する、ことを特徴とする。
【００２１】
また、本発明のバスモニタ装置における前記転送情報は、前記メモリに対して行われるバンクインターリーブのアクセスにおいて、前記メモリが有するバンクにアクセスする際に発生するデータアクセスが受け付けられない前記転送ロスの期間を表すロス量情報を含み、前記転送ロス測定部は、前記ロス量情報に基づいて、該転送ロスの時間、または該転送ロスの回数を測定する、ことを特徴とする。
【００２２】
また、本発明のバスモニタ装置における前記転送情報は、前記メモリに対するデータアクセスに応じて、該メモリが読み出し動作から書き込み動作に切り替わるとき、または該メモリが書き込み動作から読み出し動作に切り替わるときに発生するデータアクセスが受け付けられないロスの期間を表すロス量情報を含み、前記転送ロス測定部は、前記ロス量情報に基づいて、該転送ロスの時間、または該転送ロスの回数を測定する、ことを特徴とする。
【００２３】
また、本発明のバスモニタ装置における前記転送情報は、前記メモリに対して行われるリフレッシュ動作によって発生するデータアクセスが受け付けられないロスの期間を表すロス量情報を含み、前記転送ロス測定部は、前記ロス量情報に基づいて、該転送ロスの時間、または該転送ロスの回数を測定する、ことを特徴とする。
【００２４】
また、本発明のバスモニタ装置における前記転送情報は、前記メモリに対してデータアクセスが行われているデータアクセスの期間を表すアクセス量情報を含み、前記転送ロス測定部は、前記アクセス量情報に基づいて、該データアクセスの時間、または該データアクセスの回数を測定する、ことを特徴とする。
【００２５】
また、本発明のバスモニタ装置における前記アクセス量情報は、前記メモリのバンク毎のデータアクセスの期間を表し、前記転送ロス測定部は、前記アクセス量情報に基づいて、前記メモリのバンク毎の該データアクセスの時間、または該データアクセスの回数を測定する、ことを特徴とする。
【００２６】
また、本発明のバスモニタ装置における前記アクセス量情報は、前記メモリの読み出し動作毎および書き込み動作毎のデータアクセスの期間を表し、前記転送ロス測定部は、前記アクセス量情報に基づいて、前記メモリの読み出し動作毎および書き込み動作毎の該データアクセスの時間、または該データアクセスの回数を測定する、ことを特徴とする。
【００２７】
また、本発明のバスモニタ方法は、共通バスに接続された複数の処理ブロックが、複数のバンクを有するアドレス空間からなるメモリとの間で、前記共通バスを介してデータの受け渡しを行う際の、該データの受け渡しの状態に基づいて、予め定められた一定の単位時間あたりの前記共通バス上のデータの転送ロスを測定するバスモニタ装置におけるバスモニタ方法であって、前記複数の処理ブロックからのデータアクセスの要求に応じて出力されるデータアクセス要求信号を受け付けたことを表すデータアクセス受け付け信号を出力するデータアクセス受け付け信号生成ステップと、前記データアクセス要求信号に応じて、仮想アクセス信号を出力する仮想アクセス信号生成ステップと、前記共通バス上の前記データの転送ロスを判定し、該判定結果を転送情報として出力するバス状態判定ステップと、前記転送情報に基づいて前記データの転送ロスを測定する転送ロス測定ステップと、を含み、前記バス状態判定ステップは、前記仮想アクセス信号に応じて、前記データアクセス受け付け信号生成ステップから出力されるデータアクセス受け付け信号の信号間隔と、予め決められた基準リクエスト時間とを比較して、前記データの転送ロスかどうかの判定を行なう、ことを特徴とする。
【００２８】
また、本発明のプログラムは、共通バスに接続された複数の処理ブロックが、複数のバンクを有するアドレス空間からなるメモリとの間で、前記共通バスを介してデータの受け渡しを行う際の、該データの受け渡しの状態に基づいて、予め定められた一定の単位時間あたりの前記共通バス上のデータの転送ロスを測定するバスモニタ装置のコンピュータに実行させるプログラムであって、前記複数の処理ブロックからのデータアクセスの要求に応じて出力されるデータアクセス要求信号を受け付けたことを表すデータアクセス受け付け信号を出力するデータアクセス受け付け信号生成ステップと、前記データアクセス要求信号に応じて、仮想アクセス信号を出力する仮想アクセス信号生成ステップと、前記共通バス上の前記データの転送ロスを判定し、該判定結果を転送情報として出力するバス状態判定ステップと、前記転送情報に基づいて前記データの転送ロスを測定する転送ロス測定ステップと、を含み、前記バス状態判定ステップは、前記仮想アクセス信号に応じて、前記データアクセス受け付け信号生成ステップから出力されるデータアクセス受け付け信号の信号間隔と、予め決められた基準リクエスト時間とを比較して、前記データの転送ロスかどうかの判定を行なう処理、をコンピュータに実行させることを特徴とする。
【発明の効果】
【００２９】
本発明によれば、データバスの効率を向上するために有用な情報を取得することができるという効果が得られる。
【図面の簡単な説明】
【００３０】
【図１】本発明の第１の実施形態における画像処理装置の概略構成を示したブロック図である。
【図２】本第１の実施形態の画像処理装置におけるＤＲＡＭのアクセスの一例を模式的に示した図である。
【図３】本第１の実施形態の画像処理装置におけるバンクアクセスに起因するバス帯域のロス時間の一例を模式的に示した図である。
【図４】本第１の実施形態の画像処理装置におけるバンクアクセスに起因するバス帯域のロス時間の別の一例を模式的に示した図である。
【図５】本第１の実施形態の画像処理装置におけるバンクアクセスに起因するバス帯域のロス時間のさらに別の一例を模式的に示した図である。
【図６】本第１の実施形態の画像処理装置におけるＤＲＡＭの動作切り替えに起因するバス帯域のロス時間の一例を模式的に示した図である。
【図７】本第１の実施形態の画像処理装置に備えたＤＲＡＭコントローラの概略構成を示したブロック図である。
【図８】本第１の実施形態の画像処理装置に備えた帯域モニタ部によってデータバスのバス帯域のロス時間をモニタするタイミングの一例を示したタイミングチャートである。
【図９】本発明の第２の実施形態における画像処理装置の概略構成を示したブロック図である。
【図１０】本第２の実施形態の画像処理装置に備えた帯域モニタ部の概略構成を示したブロック図である。
【図１１】本第２の実施形態の画像処理装置に備えたバス状態判定部によってデータバスのバス帯域のロス時間を判定した場合の一例を模式的に示した図である。
【図１２】本第２の実施形態の画像処理装置に備えたバス状態判定部によって各処理ブロックの休止期間を判定した場合の一例を模式的に示した図である。
【図１３】本第２の実施形態の画像処理装置に備えたバス状態判定部によってデータバスのバス帯域のロス時間を判定した場合の別の一例を模式的に示した図である。
【発明を実施するための形態】
【００３１】
＜第１の実施形態＞
以下、本発明の実施形態について、図面を参照して説明する。図１は、本第１の実施形態における画像処理装置の概略構成を示したブロック図である。図１において、画像処理装置１０は、イメージセンサ１００と、前処理部２００と、画像処理部３００と、表示処理部４００と、表示デバイス４０１と、カードインタフェース部５００と、記録媒体５０１と、ＣＰＵ６００と、ＤＲＡＭコントローラ７００と、ＤＲＡＭ７０１とを備えている。画像処理装置１０内の前処理部２００、画像処理部３００、表示処理部４００、カードインタフェース部５００、ＣＰＵ６００、およびＤＲＡＭコントローラ７００は、データバス８００を介してそれぞれ接続され、ＤＭＡアクセスによってＤＲＡＭコントローラ７００に接続されたＤＲＡＭ７０１からのデータの読み出し、およびＤＲＡＭ７０１へのデータの書き込みを行う。なお、データバス８００には、各処理ブロックがＤＭＡアクセスを行うための、ＤＭＡアクセス要求信号、ＤＭＡアクセス受け付け信号、読み出し／書き込み制御信号（ＲＷ制御信号）、アドレス、およびデータなどの信号が含まれている。
【００３２】
イメージセンサ１００は、図示しないレンズによって結像された被写体の光学像を光電変換するＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｐｌｅｄ  Ｄｅｖｉｃｅ：電荷結合素子）イメージセンサや、ＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ−Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ：相補型金属酸化膜半導体）イメージセンサに代表されるイメージセンサである。イメージセンサ１００は、被写体光に応じた画像信号（以下、「入力画像データ」という）を前処理部２００に出力する。
【００３３】
前処理部２００は、イメージセンサ１００から入力された入力画像データに、キズ補正やシェーディング補正などの前処理を施し、前処理した結果の画像データ（以下、「前処理画像データ」という）を、ＤＲＡＭ７０１に転送する（書き込む）処理ブロックである。前処理部２００は、前処理画像データをＤＲＡＭ７０１に転送する際に、ＤＲＡＭ７０１へのＤＭＡアクセス要求信号を、ＤＲＡＭコントローラ７００に出力する。そして、前処理部２００は、ＤＭＡアクセス要求がＤＲＡＭコントローラ７００に受け付けられ、ＤＭＡアクセス受け付け信号が入力された後に、前処理画像データを、ＤＲＡＭコントローラ７００を介してＤＲＡＭ７０１に出力する。
【００３４】
画像処理部３００は、ＤＲＡＭ７０１に記憶している前処理画像データを取得し（読み出し）、ノイズ除去、ＹＣ変換処理、リサイズ処理、ＪＰＥＧ圧縮処理などの各種の画像処理を施して、表示用の画像データや記録用の画像データを生成する処理ブロックである。また、画像処理部３００は、生成した表示用の画像データおよび記録用の画像データを、再びＤＲＡＭ７０１に転送する（書き込む）処理ブロックでもある。画像処理部３００は、前処理画像データをＤＲＡＭ７０１から取得する際に、ＤＲＡＭ７０１へのＤＭＡアクセス要求信号をＤＲＡＭコントローラ７００に出力する。そして、画像処理部３００は、ＤＭＡアクセス要求がＤＲＡＭコントローラ７００に受け付けられ、ＤＭＡアクセス受け付け信号が入力された後に、ＤＲＡＭコントローラ７００を介してＤＲＡＭ７０１から前処理画像データを読み出す。
【００３５】
また、画像処理部３００は、表示用の画像データおよび記録用の画像データを、ＤＲＡＭ７０１に転送する際に、ＤＲＡＭ７０１へのＤＭＡアクセス要求信号を、ＤＲＡＭコントローラ７００に出力する。そして、画像処理部３００は、ＤＭＡアクセス要求がＤＲＡＭコントローラ７００に受け付けられ、ＤＭＡアクセス受け付け信号が入力された後に、生成した表示用の画像データおよび記録用の画像データを、ＤＲＡＭコントローラ７００を介してＤＲＡＭ７０１に出力する。
【００３６】
表示処理部４００は、ＤＲＡＭ７０１に記憶している表示用の画像データを取得し（読み出し）、取得した表示用の画像データにＯＳＤ（Ｏｎ−Ｓｃｒｅｅｎ  Ｄｉｓｐｌａｙ）表示用のデータを重畳する処理などの表示処理を施して表示デバイス４０１に出力する処理ブロックである。表示処理部４００は、表示用の画像データをＤＲＡＭ７０１から取得する際に、ＤＲＡＭ７０１へのＤＭＡアクセス要求信号をＤＲＡＭコントローラ７００に出力する。そして、表示処理部４００は、ＤＭＡアクセス要求がＤＲＡＭコントローラ７００に受け付けられ、ＤＭＡアクセス受け付け信号が入力された後に、ＤＲＡＭコントローラ７００を介してＤＲＡＭ７０１から表示用の画像データを読み出す。そして、読み出した表示用の画像データに表示処理を施した後、表示処理後の画像データを、表示デバイス４０１に出力する。
【００３７】
表示デバイス４０１は、ＴＦＴ（薄膜トランジスター：Ｔｈｉｎ  Ｆｉｌｍ  Ｔｒａｎｓｉｓｔｏｒ）液晶ディスプレイ（ＬＣＤ：Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）や、有機ＥＬ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ）ディスプレイなどの表示デバイスであり、表示処理部４００から出力された表示処理後の画像データに応じた画像を表示する。
【００３８】
カードインタフェース部５００は、ＤＲＡＭ７０１に記憶している記録用の画像データを取得し（読み出し）、記録媒体５０１に記録させる処理ブロックである。また、カードインタフェース部５００は、記録媒体５０１に記録している画像データを読み出し、読み出した画像データを、ＤＲＡＭ７０１に転送する（書き込む）処理ブロックでもある。カードインタフェース部５００は、記録用の画像データをＤＲＡＭ７０１から取得する際に、ＤＲＡＭ７０１へのＤＭＡアクセス要求信号をＤＲＡＭコントローラ７００に出力する。そして、カードインタフェース部５００は、ＤＭＡアクセス要求がＤＲＡＭコントローラ７００に受け付けられ、ＤＭＡアクセス受け付け信号が入力された後に、ＤＲＡＭコントローラ７００を介してＤＲＡＭ７０１から記録用の画像データを読み出す。
【００３９】
また、カードインタフェース部５００は、記録媒体５０１から読み出した画像データを、ＤＲＡＭ７０１に転送する際に、ＤＲＡＭ７０１へのＤＭＡアクセス要求信号を、ＤＲＡＭコントローラ７００に出力する。そして、カードインタフェース部５００は、ＤＭＡアクセス要求がＤＲＡＭコントローラ７００に受け付けられ、ＤＭＡアクセス受け付け信号が入力された後に、記録媒体５０１から読み出した画像データを、ＤＲＡＭコントローラ７００を介してＤＲＡＭ７０１に出力する。
【００４０】
記録媒体５０１は、メモリカードなどの記録媒体であり、カードインタフェース部５００から出力された記録用の画像データを記録する。また、カードインタフェース部５００によって記録している画像データが読み出される。なお、図１においては、記録媒体５０１も画像処理装置１０の構成要素としているが、記録媒体５０１は、画像処理装置１０に着脱可能な構成である。
【００４１】
ＣＰＵ６００は、画像処理装置１０の構成要素、すなわち、画像処理装置１０全体を制御する。
ＤＲＡＭ７０１は、ＤＲＡＭコントローラ７００によってアクセス制御され、画像処理装置１０内のそれぞれの処理ブロックの処理過程における様々なデータを記憶する。
【００４２】
ＤＲＡＭコントローラ７００は、データバス８００に接続されている画像処理装置１０内の複数の処理ブロックからのＤＭＡアクセス要求に応じて、接続されているＤＲＡＭ７０１へのデータの転送（書き込み）、およびＤＲＡＭ７０１からのデータの取得（読み出し）を行う。ＤＲＡＭコントローラ７００は、バスアービタ７１０と、ＤＲＡＭインタフェース部７２０と、帯域モニタ部７３０とを備えている。
【００４３】
バスアービタ７１０は、データバス８００に接続されているそれぞれの処理ブロックから入力されたＤＭＡアクセス要求信号に応じて、バンクインターリーブや各処理ブロックの優先順位に基づいて、各処理ブロックによるＤＲＡＭ７０１へのアクセスの調停を行い、ＤＭＡアクセス要求を受け付ける処理ブロックを決定する。そして、決定した処理ブロックに、ＤＭＡアクセス受け付け信号を出力する。
【００４４】
その後、バスアービタ７１０は、決定した処理ブロックがＤＲＡＭ７０１にデータを転送する際には、ＤＲＡＭ７０１にデータを書き込むことを表すＲＷ制御信号、および処理ブロックから入力されたＤＲＡＭ７０１のアドレスや転送するデータを、ＤＲＡＭインタフェース部７２０に出力する。また、バスアービタ７１０は、決定した処理ブロックがＤＲＡＭ７０１からデータを取得する際には、ＤＲＡＭ７０１からデータを読み出すことを表すＲＷ制御信号、処理ブロックから入力されたＤＲＡＭ７０１のアドレスをＤＲＡＭインタフェース部７２０に出力する。その後、ＤＲＡＭインタフェース部７２０から入力されたデータ、すなわち、ＤＲＡＭ７０１から取得したデータを、処理ブロックに出力する。
【００４５】
また、バスアービタ７１０は、各処理ブロックがＤＲＡＭ７０１をアクセスするためのＲＷ制御信号やアドレスなどに基づいて、各処理ブロックからのＤＲＡＭ７０１のアクセスの状況を表す情報（以下、「転送情報」という）を、帯域モニタ部７３０に出力する。なお、転送情報に関する詳細な説明は、後述する。
【００４６】
ＤＲＡＭインタフェース部７２０は、バスアービタ７１０から出力されたＤＲＡＭ７０１の書き込みまたは読み出しを表すＲＷ制御信号、アドレスやデータなど、すなわち、決定された処理ブロックからのＤＲＡＭアクセスに応じて、ＤＲＡＭ７０１へのデータの書き込みまたは読み出しを実行する。
【００４７】
帯域モニタ部７３０は、バスアービタ７１０から入力された転送情報に基づいて、データバス８００全体のバス帯域をモニタする。また、帯域モニタ部７３０は、モニタしたデータバス８００全体のバス帯域の結果を保持し、例えば、ＣＰＵ６００を介した読み出し要求に応じて、保持しているバス帯域の結果を出力する。帯域モニタ部７３０がモニタしたデータバス８００のモニタ結果が、ＤＲＡＭ７０１のデータアクセスの効率を向上するための指針の情報となる。なお、帯域モニタ部７３０におけるバス帯域のモニタ方法に関する詳細な説明は、後述する。
【００４８】
このように、画像処理装置１０内の各処理ブロックは、それぞれの処理ブロックがＤＲＡＭ７０１をアクセスする際に、ＤＲＡＭコントローラ７００にＤＭＡアクセス要求を出す。そして、ＤＲＡＭコントローラ７００にＤＭＡアクセス要求が受け付けられた後に、データバス８００およびＤＲＡＭコントローラ７００を介して、ＤＲＡＭ７０１へのデータ書き込み、またはＤＲＡＭ７０１からのデータ読み出しを行う。
【００４９】
ここで、帯域モニタ部７３０がモニタするデータバス８００のバス帯域について説明するため、図２を参照してデータバス８００を介したＤＲＡＭ７０１のアクセスの一例について説明する。図２は、本第１の実施形態の画像処理装置１０におけるＤＲＡＭ７０１のアクセスの一例を模式的に示した図である。画像処理装置１０における一連の処理においては、図２に示したように、実際にデータバス８００を介してＤＲＡＭ７０１にアクセスしているアクセス期間と、ＤＲＡＭ７０１にアクセスしていない休止期間とが存在する。
【００５０】
帯域モニタ部７３０は、画像処理装置１０における一連の処理において、実際にデータバス８００にアクセスが行われている割合を表す実行帯域や、ＤＲＡＭ７０１をアクセスする際のロス時間をモニタする。
【００５１】
帯域モニタ部７３０によるデータバス８００の実行帯域のモニタは、単位時間あたりにデータバス８００にアクセスが行われているアクセス期間とアクセスが行われていない休止期間とに基づいて行う。より具体的には、帯域モニタ部７３０は、各処理ブロックからのデータバス８００のアクセス回数やアクセス時間などに基づいて、データバス８００の実行帯域をモニタする。
【００５２】
なお、帯域モニタ部７３０が、それぞれの処理ブロック毎のアクセス回数やアクセス時間などに基づいて、データバス８００の詳細な実行帯域をモニタすることもできる。さらに詳細にデータバス８００の実行帯域をモニタするため、帯域モニタ部７３０が、ＤＲＡＭ７０１のバンク毎のアクセス回数やアクセス時間、またはＤＲＡＭ７０１の書き込みおよび読み出し毎のアクセス回数やアクセス時間をモニタすることもできる。
【００５３】
また、逆に、帯域モニタ部７３０が、休止期間をモニタすることによって、ＤＲＡＭ７０１のアクセス時間を算出することもできる。なお、このときには、後述するロス時間のモニタを考慮することによって、より正確にデータバス８００の実行帯域を算出することができる。
【００５４】
次に、帯域モニタ部７３０がモニタするデータバス８００のバス帯域について説明するため、図３〜図６を参照してデータバス８００を介したＤＲＡＭ７０１のアクセスにおけるロス時間の一例について説明する。通常のＤＲＡＭのアクセスにおいては、ＤＲＡＭの書き込みまたは読み出しを行う際の手続において、様々なロス時間が存在する。このＤＲＡＭ７０１をアクセスする際のロス時間は、データバス８００のバス帯域を低下させる要因となる。ＤＲＡＭのアクセスにおけるロス時間には、以下のようなものがある。
（１）：バンクアクセスに起因するロス時間。
（２）：ＤＲＡＭの動作の切り替えに起因するロス時間。
（３）：ＤＲＡＭのリフレッシュ動作に起因するロス時間。
【００５５】
バンクアクセスに起因するロス時間は、データバス８００を介してＤＲＡＭ７０１にアクセスする場合において、ＤＲＡＭ７０１にアクセスする順番によって発生してしまうロス時間である。図３〜図５は、本第１の実施形態の画像処理装置１０におけるバンクアクセスに起因するバス帯域のロス時間の一例を模式的に示した図である。図３は、バンクインターリーブが有効に機能することによって、ロス時間が存在しない場合を示している。また、図４は、同一のバンクに連続してアクセスしたことによって、ロス時間が発生している場合を示している。また、図５は、ＤＲＡＭ７０１のアクセスを受け付けられない期間によって、ロス時間が発生している場合を示している。
【００５６】
図３に示したように、バンク１動作〜バンク４動作においてバンクインターリーブが有効に機能している場合には、同一のバンクをアクセスする期間（例えば、バンク１書き込み（Ｗ）アクセスの期間）と、書き込み（Ｗｒｉｔｅ）動作が終了した後にそのバンクのアクセスが受け付けられないビジー期間とが重複しないように、それぞれのバンクへのアクセスが順次行われる。この場合には、ＤＲＡＭ７０１のアクセスにおいて、ロス時間は存在しない。
【００５７】
しかし、図４に示したように、バンク１動作によってバンク１の書き込み（Ｗｒｉｔｅ）動作が終了した後に、再度バンク１動作を行うような場合には、先の書き込み（Ｗｒｉｔｅ）動作が終了した後のビジー期間中は再度バンク１への先の書き込み（Ｗｒｉｔｅ）動作を行うことができない。このため、先のバンク１動作によるビジー期間が、ＤＲＡＭ７０１のアクセスにおけるロス時間となる。以下の説明においては、ビジー状態によるロスの期間を、「バンクロス期間」という。
【００５８】
また、図５に示したように、バンク３動作によってバンク３の書き込み（Ｗｒｉｔｅ）動作が終了した後に、他のバンクのアクセス（図５においては、バンク４動作）を挟んで再度バンク３動作を行うような場合には、先のバンク３の書き込み（Ｗｒｉｔｅ）動作が終了した後のビジー期間が終了していないことがある。このような場合にも、先のバンク３動作のビジー期間が、ＤＲＡＭ７０１のアクセスにおけるロス時間となり、バンクロス期間が存在する。
【００５９】
また、ＤＲＡＭの動作の切り替えに起因するロス時間は、ＤＲＡＭでは、書き込み（Ｗｒｉｔｅ）動作から読み出し（Ｒｅａｄ）動作への切り替え、または読み出し（Ｒｅａｄ）動作から書き込み（Ｗｒｉｔｅ）動作への切り替えを行う際に発生してしまうロス時間である。図６は、本第１の実施形態の画像処理装置１０におけるＤＲＡＭの動作切り替えに起因するバス帯域のロス時間の一例を模式的に示した図である。図６に示したように、ＤＲＡＭでは、書き込み（Ｗｒｉｔｅ）動作から読み出し（Ｒｅａｄ）動作への切り替え、または読み出し（Ｒｅａｄ）動作から書き込み（Ｗｒｉｔｅ）動作への切り替えを行う場合、ＤＲＡＭには、動作の切り替えに伴ってアクセスを受け付けられない期間が存在する。この動作の切り替えによる期間が、ＤＲＡＭ７０１のアクセスにおけるロス時間となる。以下の説明においては、動作の切り替えによるロスの期間を、「ＲＷ切替ロス期間」という。
【００６０】
また、ＤＲＡＭのリフレッシュ動作に起因するロス時間は、ＤＲＡＭのリフレッシュ動作に伴うロス時間である。このリフレッシュ動作は、ＤＲＡＭがデータを記憶する際に必要な動作ではあるが、このＤＲＡＭのリフレッシュ動作を行っているときには、処理ブロックがＤＲＡＭにアクセスすることができないため、ＤＲＡＭ７０１のアクセスにおけるロス時間となる。以下の説明においては、ＤＲＡＭのリフレッシュ動作によるロスの期間を、「リフレッシュ期間」という。
【００６１】
このように、データバス８００を介してＤＲＡＭ７０１にアクセスする場合には、ＤＲＡＭ７０１にアクセスする順番によって、ロス時間が発生してしまう。バスアービタ７１０は、ＤＭＡアクセス要求信号を出力するそれぞれの処理ブロックの中から、ＤＭＡアクセス要求を受け付ける処理ブロックを決定する際に、極力ロス時間が生じないようなＤＭＡアクセス要求を選択する。このとき、バスアービタ７１０は、バンクインターリーブによって、例えば、バンク１動作の後には、バンク１以外のバンクのアクセスを行う処理ブロックからのＤＭＡアクセス要求を選択する。また、例えば、書き込み（Ｗｒｉｔｅ）動作の後には書き込み（Ｗｒｉｔｅ）動作を行う処理ブロックのＤＭＡアクセス要求を選択するなどによって、データバス８００全体のバス帯域、すなわち、ＤＲＡＭ７０１のデータアクセスの効率を高めるように動作する。
【００６２】
一方、バスアービタ７１０は、例えば、優先順位が高い処理ブロックからＤＭＡアクセス要求が入力された場合には、ある程度ＤＲＡＭ７０１のデータアクセスの効率を犠牲にしても、優先順位の高い処理ブロックからのＤＭＡアクセス要求を優先させて、必要とするバス帯域を確保する必要がある。これは、画像処理装置１０においては、例えば、イメージセンサ１００が出力した入力画像データを、表示デバイス４０１に逐次表示させる場合に、イメージセンサ１００からの入力画像データの出力、および表示デバイス４０１への表示処理後の画像データの入力には、決められたタイミングがあるためである。
【００６３】
このとき、バスアービタ７１０は、例えば、バンク１動作の後であっても、バンク１のアクセスを行う処理ブロックからのＤＭＡアクセス要求を選択するなどによって、それぞれの処理ブロックが必要とするバス帯域を確保するように動作する。例えば、上述した画像処理装置１０におけるイメージセンサ１００が出力した入力画像データを、表示デバイス４０１に逐次表示させる場合には、前処理部２００および表示処理部４００からのＤＭＡアクセス要求を優先して選択することによって、前処理部２００および表示処理部４００が必要とするバス帯域を確保するように動作する。
【００６４】
帯域モニタ部７３０は、画像処理装置１０における一連の処理において、上記に述べたようなロス時間をモニタする。
【００６５】
帯域モニタ部７３０によるバンクアクセスに起因するロス時間のモニタは、単位時間あたりにバンクアクセスに起因するロス時間がどれだけ発生したかを示すため、単位時間あたりのバンクロス期間の総和を測定する。なお、帯域モニタ部７３０が、単位時間あたりにバンクロス期間が発生した回数や、バンクロス期間が発生したアクセスの回数を測定する構成としてもよい。
【００６６】
帯域モニタ部７３０によるＤＲＡＭの動作の切り替えに起因するロス時間のモニタは、単位時間あたりにＤＲＡＭ動作の切り替えに起因するロス時間がどれだけ発生したかを示すため、単位時間あたりのＲＷ切替ロス期間の総和を測定する。なお、帯域モニタ部７３０が、単位時間あたりにＲＷ切替ロス期間が発生した回数や、ＲＷ切替ロス期間が発生したアクセスの回数を測定する構成としてもよい。
【００６７】
帯域モニタ部７３０によるＤＲＡＭのリフレッシュ動作に起因するロス時間のモニタは、単位時間あたりにＤＲＡＭのリフレッシュ動作に起因するロス時間がどれだけ発生したかを示すため、単位時間あたりのリフレッシュ期間の総和を測定する。なお、帯域モニタ部７３０が、単位時間あたりにリフレッシュ期間が発生した回数を測定する構成としてもよい。
【００６８】
次に、データバス８００のバス帯域をモニタする構成について説明する。図７は、本第１の実施形態の画像処理装置１０に備えたＤＲＡＭコントローラ７００の概略構成を示したブロック図である。図７では、帯域モニタ部７３０がデータバス８００のバス帯域をモニタする際に必要な接続のみを示している。
【００６９】
バスアービタ７１０は、データバス８００に接続されているそれぞれの処理ブロックから入力されたＤＭＡアクセス要求信号に応じて、バンクインターリーブや各処理ブロックの優先順位に基づいたＤＲＡＭ７０１へのアクセスの調停を行う。このため、バスアービタ７１０は、ＤＲＡＭ７０１にアクセスする各処理ブロックのアクセスの状況などを把握することができる。また、バスアービタ７１０は、ＤＲＡＭ７０１にアクセスする処理ブロックから出力されるＤＲＡＭ７０１のＲＷ制御信号、アドレス、およびデータを、ＤＲＡＭインタフェース部７２０に出力する。このため、バスアービタ７１０は、処理ブロックがＤＲＡＭ７０１に対してどのようなアクセスを行うのかを把握することができる。バスアービタ７１０は、これら把握した情報に基づいた転送情報を、帯域モニタ部７３０に出力する。
【００７０】
図７では、転送情報として、アクセス期間、バンクロス期間、ＲＷ切替ロス期間、およびリフレッシュ期間を、それぞれ帯域モニタ部７３０に出力している場合を示している。アクセス期間は、図２〜図６に示したように、いずれかの処理ブロックが実際にデータバス８００を介してＤＲＡＭ７０１にアクセスしているアクセス期間を表す。また、バンクロス期間は、図４および図５に示したように、バンクアクセスに起因するロスの期間を表す。また、ＲＷ切替ロス期間は、図６に示したように、ＤＲＡＭの動作の切り替えに起因するロスの期間を表す。また、リフレッシュ期間は、ＤＲＡＭ７０１のリフレッシュ動作に起因するロスの期間を表す。バスアービタ７１０は、それぞれの期間を表す期間信号を、転送情報として帯域モニタ部７３０に出力する。
【００７１】
帯域モニタ部７３０は、バスアービタ７１０から入力された転送情報のそれぞれの期間信号に基づいて、アクセス期間、バンクロス期間、ＲＷ切替ロス期間、およびリフレッシュ期間のそれぞれの時間を測定（モニタ）する。帯域モニタ部７３０は、結果測定カウンタ７３１と、単位時間生成カウンタ７３２と、結果保持レジスタ７３３とを備えている。
【００７２】
単位時間生成カウンタ７３２は、例えば、一定の周波数のクロック信号に基づいてカウントすることによって、帯域モニタ部７３０が測定（モニタ）する一定の単位時間を生成する。そして、単位時間生成カウンタ７３２は、単位時間となる毎、すなわち、一定の時間が経過する毎に、単位時間の区切りを表す信号（以下、「単位時間タイミング信号」という）を、結果測定カウンタ７３１と結果保持レジスタ７３３とに出力する。
【００７３】
なお、単位時間生成カウンタ７３２による単位時間の生成は、例えば、画像処理装置１０の動作が開始されたときから開始する。また、例えば、画像処理装置１０の動作モードが変更されたときに、現在生成している単位時間の生成を中止し、再度単位時間の生成を最初から開始することもできる。なお、単位時間生成カウンタ７３２が生成する単位時間の長さは、例えば、レジスタ設定によって変更可能な構成にすることもできる。
【００７４】
結果測定カウンタ７３１は、バスアービタ７１０から入力されるそれぞれの転送情報に対応した測定カウンタを備えている。なお、以下の説明においては、結果測定カウンタ７３１内の各測定カウンタも、「結果測定カウンタ７３１」ということとする。それぞれの結果測定カウンタ７３１は、単位時間生成カウンタ７３２と同じ一定の周波数のクロック信号に基づいて、対応する期間信号が表す期間をカウント（カウントアップ）する。それぞれの結果測定カウンタ７３１のカウント値が、帯域モニタ部７３０に入力された転送情報の時間、すなわち、アクセス期間、バンクロス期間、ＲＷ切替ロス期間、およびリフレッシュ期間のそれぞれの時間を表すこととなる。それぞれの結果測定カウンタ７３１は、対応する転送情報のカウント値を、結果保持レジスタ７３３に出力する。
【００７５】
なお、それぞれの結果測定カウンタ７３１は、単位時間生成カウンタ７３２から単位時間タイミング信号が入力される毎に、転送情報のカウント値が初期化され、再び最初からカウントを行う。これにより、それぞれの結果測定カウンタ７３１は、単位時間内の期間信号が表す期間をカウントすることとなる。
【００７６】
結果保持レジスタ７３３は、結果測定カウンタ７３１から入力されるそれぞれのカウント値に対応した保持レジスタを備えている。なお、以下の説明においては、結果保持レジスタ７３３内の各保持レジスタも、「結果保持レジスタ７３３」ということとする。それぞれの結果保持レジスタ７３３は、単位時間生成カウンタ７３２から単位時間タイミング信号が入力される毎に、対応する結果測定カウンタ７３１から入力されるカウント値を保持する。それぞれの結果保持レジスタ７３３が保持したカウント値が、帯域モニタ部７３０に入力された転送情報の単位時間内の時間、すなわち、単位時間あたりのアクセス期間、バンクロス期間、ＲＷ切替ロス期間、およびリフレッシュ期間のそれぞれの時間を表すこととなる。それぞれの結果保持レジスタ７３３は、保持しているカウント値を、例えば、ＣＰＵ６００からの読み出し要求に応じて外部に出力する。
【００７７】
なお、図７では、結果保持レジスタ７３３内に、それぞれの転送情報に対応した保持レジスタを１つずつ備えた場合の一例を示しているが、結果保持レジスタ７３３内に備える保持レジスタの構成は、図７に示した構成のみに限定されるものではない。例えば、それぞれの転送情報に対応した保持レジスタを３つずつ、すなわち、３セット分備え、過去３回分の単位時間のカウント値を保持する構成とすることもできる。また、この構成で、例えば、４回目の単位時間のカウント値を保持する場合には、１回目のカウント値を保持している保持レジスタに、４回目の単位時間のカウント値を上書きすることによって、最新の３回分の単位時間のカウント値を保持することもできる。
【００７８】
次に、データバス８００のバス帯域をモニタする動作について説明する。図８は、本第１の実施形態の画像処理装置１０に備えた帯域モニタ部７３０によってデータバス８００のバス帯域のロス時間をモニタするタイミングの一例を示したタイミングチャートである。図８では、単位時間生成カウンタ７３２が生成する単位時間タイミング信号の間隔、すなわち、単位時間が、２０クロックである場合において、バスアービタ７１０から入力されるそれぞれの転送情報と、それぞれの転送情報に対応して動作する結果測定カウンタ７３１および結果保持レジスタ７３３の動作を、単位時間の２回分の期間示している。なお、図８においては、それぞれの転送情報における“Ｈｉｇｈ”レベルの期間が、アクセス期間、バンクロス期間、ＲＷ切替ロス期間、およびリフレッシュ期間であるものとして説明する。
【００７９】
単位時間生成カウンタ７３２は、一定の周波数のクロック信号に基づいてカウントアップし、カウント値が「２０」になる毎に、“Ｈｉｇｈ”レベルになる単位時間タイミング信号を出力する。なお、単位時間生成カウンタ７３２のカウント値は、“Ｈｉｇｈ”レベルの単位時間タイミング信号によって初期化されることによって、次のクロック信号のタイミングで、単位時間タイミング信号が“Ｌｏｗ”レベルになる。この２０クロックの期間が、帯域モニタ部７３０がモニタする単位時間となる。
【００８０】
結果測定カウンタ７３１は、単位時間生成カウンタ７３２と同じクロック信号に基づいて、対応する転送情報の期間信号が“Ｈｉｇｈ”レベルの期間をカウント（カウントアップ）する。なお、結果測定カウンタ７３１のカウント値も、“Ｈｉｇｈ”レベルの単位時間タイミング信号によって初期化されることによって、次のクロック信号のタイミングで、再び最初からカウントを行う。
【００８１】
図８では、アクセス期間に対応した結果測定カウンタ７３１が、１回目の単位時間で「１５」までカウントし、２回目の単位時間で「１０」までカウントした場合を示している。また、バンクロス期間に対応した結果測定カウンタ７３１が、１回目の単位時間で「５」までカウントし、２回目の単位時間ではカウント値が「０」である場合を示している。また、ＲＷ切替ロス期間に対応した結果測定カウンタ７３１が、１回目の単位時間でがカウント値が「０」であり、２回目の単位時間で「５」までカウントした場合を示している。また、リフレッシュ期間に対応した結果測定カウンタ７３１が、１回目の単位時間でがカウント値が「０」であり、２回目の単位時間で「５」までカウントした場合を示している。
【００８２】
結果保持レジスタ７３３は、単位時間タイミング信号が“Ｈｉｇｈ”レベルのときに、結果測定カウンタ７３１のカウント値を保持する。すなわち、１つの単位時間の間、結果測定カウンタ７３１が前回の単位時間中にカウントしたカウント値を保持する。
【００８３】
図８では、アクセス期間に対応した結果保持レジスタ７３３は、１回目の単位時間中に前の単位時間のカウント値「１０」を保持し、２回目の単位時間中に１回目の単位時間のカウント値「１５」を保持し、次の単位時間に２回目の単位時間のカウント値「１０」を保持する場合を示している。また、バンクロス期間に対応した結果保持レジスタ７３３は、１回目の単位時間中に前の単位時間のカウント値「６」を保持し、２回目の単位時間中に１回目の単位時間のカウント値「５」を保持し、次の単位時間に２回目の単位時間のカウント値「０」を保持する場合を示している。また、ＲＷ切替ロス期間に対応した結果保持レジスタ７３３は、１回目の単位時間中に前の単位時間のカウント値「４」を保持し、２回目の単位時間中に１回目の単位時間のカウント値「０」を保持し、次の単位時間に２回目の単位時間のカウント値「５」を保持する場合を示している。また、リフレッシュ期間に対応した結果保持レジスタ７３３は、１回目の単位時間中に前の単位時間のカウント値「０」を保持し、２回目の単位時間中に１回目の単位時間のカウント値「０」を保持し、次の単位時間に２回目の単位時間のカウント値「５」を保持する場合を示している。
【００８４】
上記に述べたように、帯域モニタ部７３０は、バスアービタ７１０から入力された転送情報が表すそれぞれの期間を、単位時間毎にカウントして保持する。この帯域モニタ部７３０が保持しているカウント値が、データバス８００に接続されているそれぞれの処理ブロックがＤＲＡＭ７０１にアクセスする際の、データアクセスの効率を向上するための指針の情報となる。帯域モニタ部７３０内の結果保持レジスタ７３３に保持されたそれぞれのカウント値は、例えば、ＣＰＵ６００を介して外部に出力することによって、画像処理装置１０の開発者が取得することができる。
【００８５】
なお、図８では、単位時間が２０クロックである場合の一例を示しているが、実際にデータアクセスの効率を向上するために有用な情報を取得するためには、さらに長い時間の単位時間が必要となる場合がある、この場合には、例えば、単位時間生成カウンタ７３２に備えた単位時間の長さを設定するレジスタに、必要な単位時間の設定を行うことによって、必要長さの単位時間でのカウント値を得ることができる。
【００８６】
ここで、取得したカウント値によって得られる単位時間あたりのアクセス期間、バンクロス期間、ＲＷ切替ロス期間、およびリフレッシュ期間の情報、すなわち、データバス８００のモニタ結果の活用方法として、バスアービタ７１０のバンクインターリーブや各処理ブロックの優先順位の設定に適用する場合のいくつかの例について説明する。
【００８７】
（ケース１）：帯域モニタ部７３０がモニタした単位時間あたりの全体のロス時間が大きい場合、すなわち、バンクロス期間、ＲＷ切替ロス期間、およびリフレッシュ期間に対応したそれぞれのカウント値の合計が大きい場合には、各処理ブロックの優先順位の設定が間違っている可能性がある。例えば、必要以上に優先順位が高い処理ブロックがあった場合、バスアービタ７１０がデータバス８００全体のバス帯域、すなわち、ＤＲＡＭ７０１のデータアクセスの効率を犠牲にして、必要以上に優先順位が高い処理ブロックのバス帯域を優先して確保してしまっているなどの原因が考えられる。この場合には、例えば、各処理ブロックの優先度を見直して、最適な優先順位を設定することによって、全体のロス時間の改善が期待できる。
【００８８】
（ケース２）：帯域モニタ部７３０がモニタした単位時間あたりのロス時間の内、特にバンクロス期間に対応したカウント値の合計が大きい場合には、優先順位の高い処理ブロックのＤＲＡＭ７０１のアドレス発生方法が効率的でない可能性がある。例えば、優先順位が高い処理ブロックが、バンク１→バンク１→バンク１→・・・というように、同一のバンクに連続してアクセスしてしまっていることによって、ＤＲＡＭ７０１のビジー期間が多くなっているなどの原因が考えられる（図４参照）。この場合には、例えば、優先順位が高い処理ブロックのアドレスが、バンク１→バンク２→バンク３→・・・というように、それぞれのバンクに順次アクセスするようなアドレス発生方法に変更することによって、バンクインターリーブが有効に機能し、全体のロス時間の改善が期待できる（図３参照）。なお、この場合において、優先順位の高い処理ブロックが複数ある場合には、異なるバンクのアクセスを優先的に受け付けるように、複数の処理ブロック間でアドレス発生方法を調整してもよい。
【００８９】
（ケース３）：帯域モニタ部７３０がモニタした単位時間あたりのロス時間の内、特にＲＷ切替ロス期間に対応したカウント値の合計が大きい場合には、優先順位の高い処理ブロックのＤＲＡＭ７０１に対する動作の切り替えが頻繁に起こっている可能性がある。例えば、優先順位が高い処理ブロックが、書き込み（Ｗｒｉｔｅ）動作→読み出し（Ｒｅａｄ）動作→書き込み（Ｗｒｉｔｅ）動作→・・・というように、書き込み（Ｗｒｉｔｅ）動作と読み出し（Ｒｅａｄ）動作とが交互に行われているなどの原因が考えられる（図６参照）。この場合には、例えば、優先順位が高い処理ブロックのＤＲＡＭ７０１に対する動作の切り替えが、書き込み（Ｗｒｉｔｅ）動作→書き込み（Ｗｒｉｔｅ）動作→・・・読み出し（Ｒｅａｄ）動作→読み出し（Ｒｅａｄ）動作→・・・というように、同じ動作が連続して行われるように動作の順番を変更することによって、ＤＲＡＭ７０１の動作が切り替わる回数が減少し、全体のロス時間の改善が期待できる。なお、この場合において、優先順位の高い処理ブロックが複数ある場合には、書き込み（Ｗｒｉｔｅ）動作や読み出し（Ｒｅａｄ）動作が連続するように、複数の処理ブロック間でＤＲＡＭ７０１に対する動作を調整してもよい。
【００９０】
（ケース４）：帯域モニタ部７３０がモニタした単位時間あたりの全体のロス時間と、単位時間あたりのアクセス期間との総和が小さい場合、すなわち、アクセス期間、バンクロス期間、ＲＷ切替ロス期間、およびリフレッシュ期間に対応したそれぞれのカウント値の合計が小さい場合には、単に、ＤＲＡＭ７０１にアクセスしている処理ブロックが少ない、または各処理ブロックのアクセス数が少ないなど考えられる。この場合には、データバス８００全体のバス帯域は問題ないと考えることができる。ただし、特定の単位時間のみ総和が小さく別の単位時間の総和が大きいなど、一連の処理において総和の大きさに偏りがある場合には、総和が大きい単位時間で行っている処理を減らし、総和が小さい単位時間で行う処理を増やすなど、画像処理装置１０の全体の処理を時間軸方向に最適化することができる可能性もある。このように、時間軸方向の処理の最適化を行うことによって、一連の処理の特定の時間におけるデータバス８００のバス帯域の圧迫の改善が期待できる。
【００９１】
（ケース５）：帯域モニタ部７３０が、ＤＲＡＭ７０１のバンク毎のアクセス回数を単位時間毎にモニタした場合において、それぞれのバンクでアクセス回数の偏りがある場合には、各処理ブロックが発生するＤＲＡＭ７０１のアドレスのバランスが悪い可能性がある。例えば、バンク１のアクセス回数は多いが、バンク２のアクセス回数が少ない場合には、バンク１のアクセスでのロス時間が多くなり、全体のロス時間が増加してしまうことも考えられる。すなわち、極端にアクセス回数が多いバンクと、極端にアクセス回数が少ないバンクとがある場合には、バンクインターリーブが有効に機能しないという懸念がある。この場合には、アクセス回数が多いバンクのアクセスを減らし、アクセス回数が少ないバンクのアクセス回数を増やすなど、ＤＲＡＭ７０１の各バンクのアクセスを最適化することによって、バンクインターリーブを有効に機能させ、全体のロス時間の改善が期待できる。
【００９２】
＜第２の実施形態＞
次に、本第２の実施形態の画像処理装置について説明する。図９は、本第２の実施形態における画像処理装置の概略構成を示したブロック図である。図９において、画像処理装置２０は、イメージセンサ１００と、前処理部２００と、画像処理部３００と、表示処理部４００と、表示デバイス４０１と、カードインタフェース部５００と、記録媒体５０１と、ＣＰＵ６００と、ＤＲＡＭコントローラ９００と、ＤＲＡＭ７０１と、帯域モニタ部９３０とを備えている。
【００９３】
図９に示した画像処理装置２０は、図１に示した第１の実施形態の画像処理装置１０内のＤＲＡＭコントローラ７００がＤＲＡＭコントローラ９００に代わり、さらに、帯域モニタ９３０がデータバス８００に接続された構成となっているのみであり、その他の構成要素は、画像処理装置１０と同様である。従って、本第２の実施形態の画像処理装置２０の構成要素において、図１に示した第１の実施形態の画像処理装置１０と同様の構成要素には、同一の符号を付加して詳細な説明は省略する。
【００９４】
ＤＲＡＭコントローラ９００は、図１に示したＤＲＡＭコントローラ７００と同様に、データバス８００に接続されている画像処理装置２０内の複数の処理ブロックからのＤＭＡアクセス要求に応じて、接続されているＤＲＡＭ７０１へのデータの転送（書き込み）、およびＤＲＡＭ７０１からのデータの取得（読み出し）を行う。ＤＲＡＭコントローラ９００は、バスアービタ７１０と、ＤＲＡＭインタフェース部７２０とを備えている。なお、バスアービタ７１０と、ＤＲＡＭインタフェース部７２０とは、図１に示したＤＲＡＭコントローラ７００内のバスアービタ７１０と、ＤＲＡＭインタフェース部７２０と同様である。ただし、バスアービタ７１０は、転送情報を出力しない。
【００９５】
帯域モニタ部９３０は、図１に示したＤＲＡＭコントローラ７００内の帯域モニタ部７３０と同様に、データバス８００全体のバス帯域をモニタする。ただし、帯域モニタ部９３０は、接続されているデータバス８００の情報に基づいて、バス帯域をモニタする。なお、データバス８００には、図１に示した画像処理装置１０と同様に、各処理ブロックがＤＭＡアクセスを行うための、ＤＭＡアクセス要求信号、ＤＭＡアクセス受け付け信号、読み出し／書き込み制御信号（ＲＷ制御信号）、アドレス、およびデータなどの信号が含まれている。
【００９６】
帯域モニタ部９３０は、図１に示した帯域モニタ部７３０と同様に、モニタしたデータバス８００全体のバス帯域の結果を保持し、例えば、ＣＰＵ６００を介した読み出し要求に応じて、保持しているバス帯域の結果を出力する。帯域モニタ部９３０がモニタしたデータバス８００のモニタ結果が、ＤＲＡＭ７０１のデータアクセスの効率を向上するための指針の情報となる。なお、帯域モニタ部９３０の構成およびバス帯域のモニタ方法に関する詳細な説明は、後述する。
【００９７】
ここで、帯域モニタ部９３０と図１に示した帯域モニタ部７３０との違いについて説明する。図１に示した画像処理装置１０では、ＤＲＡＭコントローラ７００内に帯域モニタ部７３０を備えた構成であるため、帯域モニタ部７３０は、同じＤＲＡＭコントローラ７００内のバスアービタ７１０から入力された転送情報に基づいて、データバス８００全体のバス帯域をモニタすることができた。しかし、例えば、画像処理装置２０内の前処理部２００、画像処理部３００、表示処理部４００、カードインタフェース部５００、ＣＰＵ６００、およびＤＲＡＭコントローラ９００を備えたシステムＬＳＩを開発する場合には、ＤＲＡＭコントローラ９００として、すでに市販されている汎用のＩＰモジュールなどを使用することもある。この場合には、ＤＲＡＭコントローラ９００内のバスアービタ７１０から転送情報を取得するために、提供されているＤＲＡＭコントローラのＩＰモジュールに変更を加えることが困難である。そもそも、ＩＰモジュールの内部情報が公開されていないこともある。
【００９８】
画像処理装置２０では、図９に示した構成からもわかるように、帯域モニタ部９３０を、ＤＲＡＭコントローラ９００の外部で、データバス８００に接続している。このため、画像処理装置２０では、ＤＲＡＭコントローラ９００内のバスアービタ７１０に変更を加えずに、データバス８００に含まれるそれぞれの信号に基づいて、データバス８００全体のバス帯域をモニタすることができる。
【００９９】
また、データバスのプロトコルは、ＡＸＩ（Ａｄｖａｎｃｅｄ  ｅＸｔｅｎｓｉｂｌｅ  Ｉｎｔｅｒｆａｃｅ）、ＯＣＰ（Ｏｐｅｎ  Ｃｏｒｅ  Ｐｒｏｔｏｃｏｌ）など、汎用のプロトコルとして定義されている場合もある。帯域モニタ部９３０は、データバス８００のプロトコルに準じてバス帯域をモニタする。
【０１００】
このように、データバスのプロトコルに準じてバス帯域をモニタする仕組みを帯域モニタ部９３０に搭載しておくことによって、画像処理装置２０のみではなく、様々なシステムのデータバスのバス帯域のモニタに適用することもできる。例えば、システムＬＳＩを開発する際のシミュレータツールなどにも、容易に適用することができる。
【０１０１】
次に、帯域モニタ部９３０の構成について説明する。図１０は、本第２の実施形態の画像処理装置２０に備えた帯域モニタ部９３０の概略構成を示したブロック図である。帯域モニタ部９３０は、バス状態判定部９３１と、結果測定カウンタ７３１と、単位時間生成カウンタ７３２と、結果保持レジスタ７３３とを備えている。帯域モニタ部９３０は、図７に示した帯域モニタ部７３０に、さらに、バス状態判定部９３１を備えた構成である。その他の構成要素は、帯域モニタ部７３０と同様であるため、同一の符号を付加して詳細な説明は省略する。
【０１０２】
バス状態判定部９３１は、データバス８００に含まれるそれぞれの信号をモニタし、モニタしたそれぞれの信号に基づいて、データバス８００に接続されている各処理ブロックによるＤＲＡＭ７０１へのアクセスを判定（類推）する。より具体的には、バス状態判定部９３１は、データバス８００に接続されている各処理ブロックから出力されたＤＭＡアクセス要求信号、およびＤＲＡＭコントローラ９００内のバスアービタ７１０から出力されたＤＭＡアクセス受け付け信号に基づいて、いずれの処理ブロックのＤＭＡアクセス要求が受け付けられたのかを判定する。
【０１０３】
また、バス状態判定部９３１は、ＤＭＡアクセス要求が受け付けられた処理ブロックから出力された、ＤＲＡＭ７０１をアクセスするためのＲＷ制御信号やアドレスなどに基づいて、ＤＲＡＭ７０１に対するアクセス種別を判定する。このアクセス種別は、処理ブロックによるＤＲＡＭ７０１のいずれのバンクへのアクセスなのか、そのアクセスはデータの書き込みまたはデータの読み出しのいずれのアクセスなのかを表す情報である。
【０１０４】
また、バス状態判定部９３１は、判定したアクセス種別に基づいた転送情報を、結果測定カウンタ７３１に出力する。バス状態判定部９３１が出力する転送情報は、第１の実施形態においてバスアービタ７１０が帯域モニタ部７３０に出力した転送情報と同様の情報である。
【０１０５】
結果測定カウンタ７３１、単位時間生成カウンタ７３２、および結果保持レジスタ７３３は、第１の実施形態の帯域モニタ部７３０と同様に、バス状態判定部９３１から入力された転送情報に基づいて、データバス８００のアクセス期間、バンクロス期間、ＲＷ切替ロス期間などのそれぞれの期間を、単位時間毎にカウントして保持する。
【０１０６】
ここで、バス状態判定部９３１が転送情報を出力する方法について説明するため、図１１〜図１３を参照して各処理ブロックによるＤＲＡＭ７０１へのアクセスの一例について説明する。なお、図１１〜図１３においては、各処理ブロックから出力されるそれぞれのＤＭＡアクセス要求信号が“Ｈｉｇｈ”レベルでＤＭＡアクセス要求がされているものとし、全てのＤＭＡアクセス要求信号を１つの信号にまとめて（ＯＲ（論理和）して）表す。すなわち、ＤＭＡアクセス要求は、データバス８００に接続されているいずれかの処理ブロックからＤＭＡアクセス要求信号が出力されていることを表している。また、ＤＭＡアクセス受け付け、およびアクセス種別も同様にまとめて表す。すなわち、ＤＭＡアクセス受け付けは、データバス８００に接続されているいずれかの処理ブロックのＤＭＡアクセス要求が受け付けられたことを表し、アクセス種別は、受け付けられた処理ブロックによるＤＲＡＭ７０１のアクセス種別を表している。
【０１０７】
図１１は、本第２の実施形態の画像処理装置２０に備えた帯域モニタ部９３０内のバス状態判定部９３１によってデータバス８００のバス帯域のロス時間を判定した場合の一例を模式的に示した図である。通常、ロス時間がなくＤＲＡＭ７０１のアクセスが行われる場合には、一定の間隔でＤＭＡアクセスが受け付けられる。バス状態判定部９３１は、ＤＭＡアクセスが受け付けられた間隔に基づいて、ロス時間を判定する。
【０１０８】
バス状態判定部９３１は、まず、１回目のＤＭＡアクセス受け付けと２回目のＤＭＡアクセス受け付けとの間隔を測定する。そして、ここで測定した間隔を、ロス時間がない場合のＤＭＡアクセス受付間隔（以下、「基準リクエスト受付間隔」という）と仮定する。その後、２回目のＤＭＡアクセス受け付けと３回目のＤＭＡアクセス受け付けとの間隔というように、順次ＤＭＡアクセスが受け付けられた間隔を測定する。そして、バス状態判定部９３１は、現在のＤＭＡアクセス受け付けの間隔が、基準リクエスト受付間隔よりも長い場合に、基準リクエスト受付間隔を超えている期間を、ロス時間と判定する。図１１では、５回目のアクセス（アクセス種別＝バンク４の書き込み（Ｗ）アクセス）のときに、ロス時間があると判定された場合を示している。
【０１０９】
そして、バス状態判定部９３１は、前回のアクセス種別と今回のアクセス種別とがＤＲＡＭ７０１のどのバンクにアクセスするものであったかを確認する。これにより、ロス時間の原因を特定することができる。そして、特定したロス時間の原因に応じた転送情報を、出力する。図１１では、バンク１書き込み（Ｗ）アクセスが終了した後に、再度バンク１書き込み（Ｗ）アクセスが行われていることがロス時間の原因であるため、バンクロス期間を表す転送情報が出力されている場合を示している。
【０１１０】
図１２は、本第２の実施形態の画像処理装置２０に備えた帯域モニタ部９３０内のバス状態判定部９３１によって各処理ブロックの休止期間を判定した場合の一例を模式的に示した図である。バス状態判定部９３１は、データバス８００に接続されているいずれかの処理ブロックからＤＭＡアクセス要求信号が出力されているときに、順次ＤＭＡアクセス受け付けの間隔を測定する。そして、バス状態判定部９３１は、データバス８００に接続されている全ての処理ブロックからＤＭＡアクセス要求信号が出力されていない場合には、その期間を休止期間と判定し、いずれの転送情報も出力しない。図１２では、２回目のアクセス（アクセス種別＝バンク２の書き込み（Ｗ）アクセス）〜３回目のアクセス（アクセス種別＝バンク３の書き込み（Ｗ）アクセス）までの期間が休止期間であると判定された場合を示している。
【０１１１】
しかし、データバス８００に接続されている全ての処理ブロックからＤＭＡアクセス要求信号が出力されていない場合でも、その期間が短いときには、最速でＤＲＡＭ７０１にアクセスすることができることもある。例えば、次のＤＭＡアクセス要求信号が、ＤＭＡアクセス受け付けを行う１サイクル手前までに出力された場合には、ロス時間がなくＤＲＡＭ７０１にアクセスすることができる。そこで、バス状態判定部９３１では、ロス時間がなくＤＲＡＭ７０１にアクセスすることができる期間を、ＤＭＡアクセス要求がない状態を無効とする期間（以下、「リクエストネゲート無効期間」という）として予め設定する。そして、このリクエストネゲート無効期間内に、いずれかの処理ブロックからＤＭＡアクセス要求信号が出力された場合には、休止期間の判定を無視する。
【０１１２】
図１３は、本第２の実施形態の画像処理装置２０に備えた帯域モニタ部９３０内のバス状態判定部９３１によってデータバスのバス帯域のロス時間を判定した場合の別の一例を模式的に示した図である。リクエストネゲート無効期間を設定することによって、図１３に示したように、バス状態判定部９３１の内部で、仮想のＤＭＡアクセス要求を生成し、実際のＤＭＡアクセス要求信号が“Ｌｏｗ”レベルとなっている場合でも、仮想的にＤＭＡアクセス要求が継続しているものとして処理することができる。図１３では、基準リクエスト間隔の１サイクル手前までの期間を、リクエストネゲート無効期間に設定した場合において、１回目と２回目とのＤＭＡアクセス要求がない状態が無効とされた場合を示している。
【０１１３】
これにより、図１３では、１回目のアクセス（アクセス種別＝バンク１の書き込み（Ｗ）アクセス）〜４回目のアクセス（アクセス種別＝バンク４の書き込み（Ｗ）アクセス）までが連続して要求されているものとして処理されることとなる。これにより、図１３に示したように、３回目のアクセス（アクセス種別＝バンク２の書き込み（Ｗ）アクセス）のときに、ロス時間があると判定される。また、図１３に示した３回目のＤＭＡアクセス要求がない状態のように、全ての処理ブロックからＤＭＡアクセス要求信号が出力されていない期間がリクエストネゲート無効期間よりも長い場合には、仮想のＤＭＡアクセス要求もないものとして処理し、休止期間の判定を行う。
【０１１４】
上記に述べたように、バス状態判定部９３１は、ＤＭＡアクセス要求の有無、ＤＭＡアクセス受け付けの間隔によってロス時間を判定する。そして、前回のアクセス種別と今回のアクセス種別とによって、ロス時間の種類を特定する。これにより、バス状態判定部９３１は、第１の実施形態においてバスアービタ７１０が帯域モニタ部７３０に出力した転送情報と同様の情報を出力することができる。
【０１１５】
なお、上記の一例では、バンクロス期間を表す転送情報が出力される場合について説明したが、アクセス期間やＲＷ切替ロス期間を表す転送情報も同様の判定によって出力することができる。より具体体には、休止期間以外の期間を、アクセス期間を表す転送情報として出力する。また、ＤＭＡアクセス受け付けの間隔によって判定したロス時間が、例えば、バンク１書き込み（Ｗ）アクセスが終了した後に、バンク２読み出し（Ｒ）アクセスが行われていることがロス時間の原因であると判定した場合に、ＲＷ切替ロス期間を表す転送情報を出力する。
【０１１６】
なお、上記の一例では、基準リクエスト間隔は、ＤＲＡＭ７０１に対する全てのアクセスで一定の間隔であるものとしているが、実際のリクエスト間隔は、ＤＲＡＭ７０１に対するアクセス種別に応じて異なることも考えられる。この場合には、基準リクエスト間隔を可変にする構成を適用し、アクセス種別に応じた基準リクエスト間隔に基づいてロス時間を判定する構成とすることもできる。例えば、１転送単位（１バースト）で４つのデータを転送（書き込みまたは読み出し）するＤＲＡＭ７０１のアクセス（４転送アクセス）と、１転送単位で８つのデータを転送するＤＲＡＭ７０１のアクセス（８転送アクセス）とが混在している場合を考える。この場合には、４転送アクセスのＤＭＡアクセス要求を受け付けたときと、８転送アクセスのＤＭＡアクセス要求を受け付けたときとでは、次のＤＭＡアクセス受け付けまでの時間が異なるので、１転送単位で転送するデータの数に応じて、基準リクエスト間隔を変更する。
【０１１７】
また、前回のアクセス種別と今回のアクセス種別とによっては、ロス時間がなくＤＲＡＭ７０１にアクセスすることができる期間が異なる、すなわち、最速でＤＲＡＭ７０１にアクセスすることができるＤＭＡアクセス受け付けの間隔が異なることも考えられる。例えば、書き込み（Ｗ）アクセス→読み出し（Ｒ）アクセスのときと、読み出し（Ｒ）アクセス→書き込み（Ｗ）アクセスのときと、書き込み（Ｗ）アクセス→書き込み（Ｗ）アクセスのときと、読み出し（Ｒ）アクセス→読み出し（Ｒ）アクセスのときとでは、最速でＤＲＡＭ７０１にアクセスすることができるＤＭＡアクセス受け付けの間隔が異なることが考えられる。この場合には、リクエストネゲート無効期間を可変にする構成を適用し、前回のアクセス種別と今回のアクセス種別とに応じて、休止期間の判定を無視する期間を切り換える構成とすることもできる。
【０１１８】
なお、図１０に示した帯域モニタ部９３０のブロック図では、第１の実施形態においてバスアービタ７１０が出力したリフレッシュ期間を表す転送情報に関する構成を記載していない。これは、ＤＲＡＭのリフレッシュ動作は、データバスには現れてこないためである。このため、ＤＲＡＭ７０１のリフレッシュ動作によるロス時間は、バンクロス期間またはＲＷ切替ロス期間として、バス状態判定部９３１に判定されることになる。ただし、バス状態判定部９３１がロス時間の原因を判定する際に、例えば、前回のアクセス種別と今回のアクセス種別とに加えて、さらに前々回のアクセス種別がＤＲＡＭ７０１のどのバンクにアクセスするものであったかを確認することによって、バンクロス期間またはＲＷ切替ロス期間として判定されたロス時間を、リフレッシュ期間に振り分けてもよい。
【０１１９】
より具体的には、前々回がバンク１書き込み（Ｗ）アクセス、前回がバンク２書き込み（Ｗ）アクセス、今回がバンク３書き込み（Ｗ）アクセスであった場合には、今回のＤＲＡＭ７０１のアクセスのときのロス時間は、リフレッシュ期間であると判定することができる。なお、前々回がバンク１書き込み（Ｗ）アクセス、前回がバンク２書き込み（Ｗ）アクセス、今回がバンク２書き込み（Ｗ）アクセスであった場合には、今回のＤＲＡＭ７０１のアクセスのときのロス時間は、バンクロス期間であると判定される。また、前々回がバンク１書き込み（Ｗ）アクセス、前回がバンク２書き込み（Ｗ）アクセス、今回がバンク３読み出し（Ｒ）アクセスであった場合には、今回のＤＲＡＭ７０１のアクセスのときのロス時間は、ＲＷ切替ロス期間であると判定される。
【０１２０】
上記に述べたとおり、本発明を実施するための形態によれば、単位時間あたりのＤＲＡＭアクセスのアクセス期間やロス時間をモニタすることによって、データバス全体のバス帯域を測定することができる。そして、画像処理装置の開発者は、バス帯域の測定結果を、画像処理装置においてＤＲＡＭのデータアクセスの効率を向上するための指針の情報として取得することができる。すなわち、画像処理装置の開発者は、現在、どのような頻度でＤＲＡＭのアクセスが行われているか、現在、どのようなＤＲＡＭアクセスのロス時間が発生しているかという、画像処理装置の内部のアクセス状態を把握することができる。このことにより、画像処理装置の開発者は、画像処理装置に備えるバスアービタに設定する各処理ブロックの優先順位、各処理ブロックが発生するアドレスの発生方法、各処理ブロックによって行われるＤＲＡＭの書き込み動作および読み出し動作の順番などを、適切な設定に変更することができ、画像処理装置のシステム開発の効率を向上させることができる。
【０１２１】
なお、本実施形態においては、第１の実施形態において、ＤＲＡＭコントローラ７００内のバスアービタ７１０が内部の状態を表す転送情報を出力し、帯域モニタ部７３０が、入力された転送情報に基づいてロス期間を単位時間毎にカウントする構成を示した。また、第２の実施形態において、帯域モニタ部９３０内のバス状態判定部９３１が、接続されたデータバス８００に含まれるそれぞれの信号をモニタすることによって、ＤＲＡＭ７０１へのアクセスを判定した転送情報を出力する構成を示した。そして、第２の実施形態の構成は、汎用のＩＰモジュールを使用するなど、ＩＰモジュールに含まれるバスアービタの変更が困難である場合や、バスアービタの情報が公開されていない場合に、適していることを示した。また、ＤＲＡＭコントローラ７００または帯域モニタ部９３０を、画像処理装置に適用した場合について示した。
【０１２２】
しかし、本実施形態において示したＤＲＡＭコントローラ７００または帯域モニタ部９３０のような、データバスのバス帯域をモニタする構成は、本実施形態に示した適用方法に限定されるものではない。例えば、システムＬＳＩのシミュレータや、システムＬＳＩや画像処理装置を仮想的に実現するエミュレータなどの開発ツールで、データバスの帯域状況を測定するような、バス解析プログラムなどにも適用することができる。
【０１２３】
その際には、図７に示したＤＲＡＭコントローラ７００、または図１０に示した帯域モニタ部９３０による処理を実現するためのプログラムを、コンピュータ読み取り可能な記録媒体に記録して、当該記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、ＤＲＡＭコントローラ７００または帯域モニタ部９３０に係る上述した種々の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものであってもよい。また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、フラッシュメモリ等の書き込み可能な不揮発性メモリ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【０１２４】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（例えばＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【０１２５】
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。
【符号の説明】
【０１２６】
１０，２０・・・画像処理装置
１００・・・イメージセンサ
２００・・・前処理部
３００・・・画像処理部
４００・・・表示処理部
４０１・・・表示デバイス
５００・・・カードインタフェース部
５０１・・・記録媒体
６００・・・ＣＰＵ
７００，９００・・・ＤＲＡＭコントローラ
７１０・・・バスアービタ（共通バス調停部）
７２０・・・ＤＲＡＭインタフェース部
７３０，９３０・・・帯域モニタ部（測定部）
７３１・・・結果測定カウンタ（状態測定カウンタ部）
７３２・・・単位時間生成カウンタ（単位時間生成部）
７３３・・・結果保持レジスタ（結果保持レジスタ部）
９３１・・・バス状態判定部（バス状態判定部）
７０１・・・ＤＲＡＭ（メモリ）
８００・・・データバス（共通バス）
【図１】
0005744650.tif 000002
【図２】
0005744650.tif 000003
【図３】
0005744650.tif 000004
【図４】
0005744650.tif 000005
【図５】
0005744650.tif 000006
【図６】
0005744650.tif 000007
【図７】
0005744650.tif 000008
【図８】
0005744650.tif 000009
【図９】
0005744650.tif 000010
【図１０】
0005744650.tif 000011
【図１１】
0005744650.tif 000012
【図１２】
0005744650.tif 000013
【図１３】
0005744650.tif 000014