バスモニタ装置、バスモニタ方法、およびプログラム
【課題】データバスの効率を向上するために有用な情報を取得することができるバスモニタ装置、バスモニタ方法、およびプログラムを提供する。
【解決手段】共通バスに接続された複数の処理ブロックが、複数のバンクを有するアドレス空間からなるメモリとの間で、共通バスを介してデータの受け渡しを行う際の、該データの受け渡しの状態を表す転送情報に基づいて、予め定められた一定の単位時間あたりの共通バス上のデータの帯域を測定する測定部、を備える。
【解決手段】共通バスに接続された複数の処理ブロックが、複数のバンクを有するアドレス空間からなるメモリとの間で、共通バスを介してデータの受け渡しを行う際の、該データの受け渡しの状態を表す転送情報に基づいて、予め定められた一定の単位時間あたりの共通バス上のデータの帯域を測定する測定部、を備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、バスモニタ装置、バスモニタ方法、およびプログラムに関する。
【背景技術】
【0002】
静止画用カメラ、動画用カメラ、医療用内視鏡カメラ、または産業用内視鏡カメラなどの画像処理装置に搭載されるシステムLSIなど、多くのシステムLSIでは、接続された1つのDRAM(Dynamic Random Access Memory)を、内蔵する複数の処理ブロックが共有している。このようなシステムLSIにおいては、内蔵している複数の処理ブロックが、システムLSI内部のデータバスに接続され、各処理ブロックは、DMA(Direct Memory Access)によってDRAMへのアクセスを行う。このとき、バスアービタは、それぞれの処理ブロックから発せられるDRAMへのアクセス要求を適切に調停しながら、DRAMへのアクセスを制御している。
【0003】
このバスアービタには、以下のような2つの重要な役割が求められている。その1つは、データバス全体のバス帯域を確保することである。そして、もう1つは、各処理ブロックの調停を適切に行うことである。
【0004】
バス帯域は、各処理ブロックがDRAMにアクセスした際の、データバス上のデータ量を表しており、データバス全体のバス帯域を確保する方法として、バンクインターリーブという方法が知られている。バンクインターリーブでは、DRAMのそれぞれのバンク毎にデータ転送を制御する。そして、先にアクセスしたバンクのデータ転送の処理中に、次にアクセスするバンクのアドレス設定の処理を並行して行うことによって、DRAMのデータアクセスの効率を向上させている。しかしながら、DRAMには、同一のバンクを連続してアクセスする場合に、アクセスを受け付けられない期間が存在する。このため、バンクインターリーブで同一のバンクに連続アクセスしてしまうと、DRAMがアクセスを受け付けられないロス時間が発生し、データアクセス効率が低下してしまう。そこで、データ転送処理とアドレス設定処理とを並行して行うことによって高いデータアクセス効率を確保するためには、バンクインターリーブによって、異なるバンクに順次アクセスする必要がある。
【0005】
また、各処理ブロックの調停を行う方法として、各処理ブロックからDRAMにアクセスする際の優先度を決定する方法が知られている。このDRAMへのアクセスの優先度は、例えば、各処理ブロックのバス帯域の平均値(平均帯域)、各処理ブロックに備えているバッファの容量、各処理ブロックの重要度などに応じて決定される。そして、DRAMへのアクセスが一定期間阻害されると処理が破綻してしまうような処理ブロックには、優先的にバス帯域を割り当てるようにすることによって、各処理ブロックが必要とするバス帯域を確保している。
【0006】
従来から、各処理ブロックが必要とするバス帯域を確保しつつ、バンクインターリーブによってデータバス全体のバス帯域を向上、すなわち、DRAMのデータアクセスの効率を向上させ、システムとしての性能(パフォーマンス)を確保させるための技術が開示されている。
【0007】
特許文献1に開示された技術は、各処理ブロックの優先度をレジスタに設定し、優先度の高い処理ブロックの異なるバンクのアクセスを優先的に受け付ける技術である。また、特許文献2に開示された技術は、各処理ブロックによるDRAMアドレスの発生方法などをレジスタに設定し、複数の処理ブロック間で、互いに離れたバンクをアクセスするように、DRAMのアドレスを発生させる技術である。
【0008】
特許文献1および特許文献2に開示された技術では、レジスタの設定で、それぞれの設定を調整することができるため、例えば、DRAMの種別や、システムの動作モードなどに応じて適切なレジスタ設定を行うことによって、システムの性能を確保するための最適な調停を行うことができる。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2011−3160号公報
【特許文献2】特開2011−3161号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
このように、特許文献1および特許文献2に開示されている技術では、データバス全体のバス帯域の向上と、各処理ブロックが必要とするバス帯域の確保という、相反する要求を、レジスタの設定によって調節することができる。
【0011】
しかし、特許文献1および特許文献2に開示されている技術では、レジスタの設定が最適でない場合、例えば、優先度が低い処理ブロックのDRAMアクセスの要求を優先的に受け付けてバス帯域を割り当ててしまったり、バンクインターリーブが有効に機能せずにデータバス全体のバス帯域が低下してしまったりなど、システム全体の動作が破綻してしまう場合がある。
【0012】
この場合には、システム全体の動作が破綻している要因となっている処理ブロックを特定し、レジスタの設定を最適にする必要がある。また、システム全体の動作が破綻するまでには至っていない場合でも、バンクインターリーブが有効に活用され、DRAMのデータアクセスが効率よく行われているのか否かを解析することは、レジスタの設定を最適にし、システムの性能を向上するためにも重要である。
【0013】
しかしながら、DRAMのデータアクセスの効率化や、レジスタの設定を最適にするための指針となる情報を取得する方法がなかった。このため、従来、各処理ブロックのレジスタ設定を行う際には、例えば、最適と思われるレジスタ設定を行った上で実際にシステムを動作させ、システムとして破綻が起こらない設定を見つけだす作業が行われており、システム開発の効率が悪いという問題がある。
【0014】
なお、システムとして破綻していた場合には、変更したレジスタ設定からシステム破綻の要因となっている処理ブロックをある程度特定することはできるが、システムとして破綻していない場合には、データアクセスの効率を解析することができないままである。
【0015】
本発明は、上記の課題認識に基づいてなされたものであり、データバスの効率を向上するために有用な情報を取得することができるバスモニタ装置、バスモニタ方法、およびプログラムを提供することを目的としている。
【課題を解決するための手段】
【0016】
上記の課題を解決するため、本発明のバスモニタ装置は、共通バスに接続された複数の処理ブロックが、複数のバンクを有するアドレス空間からなるメモリとの間で、前記共通バスを介してデータの受け渡しを行う際の、該データの受け渡しの状態を表す転送情報に基づいて、予め定められた一定の単位時間あたりの前記共通バス上のデータの帯域を測定する測定部、を備えることを特徴とする。
【0017】
また、本発明の前記測定部は、所定のタイミング信号に基づいて前記単位時間の区切りを表す単位時間タイミング信号を生成する単位時間生成部と、前記タイミング信号に基づいて、前記転送情報が、データの受け渡しにおける所定の状態を表している期間を計測する状態測定カウンタ部と、前記単位時間タイミング信号が前記単位時間の区切りを表すタイミングで、前記状態測定カウンタ部が計測した結果を保持する結果保持レジスタ部と、を備える、ことを特徴とする。
【0018】
また、本発明のバスモニタ装置における前記転送情報は、前記測定部の外部に配置され、前記共通バスに接続された複数の前記処理ブロックから出力されるデータアクセスの要求を調停し、前記メモリとの間でのデータの受け渡しを受け付ける共通バス調停部が、前記共通バスに接続された複数の前記処理ブロックの内、データの受け渡しを受け付けたいずれか1つの処理ブロックからの前記メモリへのデータアクセスの状況を表す情報である、ことを特徴とする。
【0019】
また、本発明の前記測定部は、前記共通バスに含まれる信号に基づいて、前記共通バスに接続された複数の前記処理ブロックの内、データの受け渡しが受け付けられたいずれか1つの処理ブロックが、前記メモリとの間で行うデータアクセスの状況を判定し、該判定結果を前記転送情報として出力するバス状態判定部を、さらに備える、ことを特徴とする。
【0020】
また、本発明の前記バス状態判定部は、前記共通バスに含まれる、前記共通バスに接続された複数の前記処理ブロックからのデータアクセスの要求に応じて出力される、データアクセスを受け付けたことを表すデータアクセス受け付け信号の間隔に基づいて、データアクセスが受け付けられないロスの時間を判定し、前記共通バスに含まれる、前記共通バスに接続された複数の前記処理ブロックから出力されるデータアクセスの要求を表すデータアクセス要求信号と、前記データアクセス受け付け信号とに基づいて、データアクセスが受け付けられた処理ブロックを判定し、該データアクセスが受け付けられた処理ブロックから出力される前記メモリのアドレス信号と、前記メモリへのデータの書き込みまたは前記メモリからのデータの読み出しを表す制御信号とに基づいて、該データアクセスが受け付けられた処理ブロックが前記メモリとの間で行うデータアクセスの状況を判定し、該判定したデータアクセスの状況に基づいて、判定した前記ロスの時間の種類を判定し、該判定した前記ロスの時間の種類に応じた前記転送情報を出力する、ことを特徴とする。
【0021】
また、本発明のバスモニタ装置における前記転送情報は、前記メモリに対して行われるバンクインターリーブのアクセスにおいて、前記メモリが有するバンクにアクセスする際に発生するデータアクセスが受け付けられないロスの期間を表すロス量情報を含み、前記測定部は、前記ロス量情報に基づいて、該ロスの時間、または該ロスの回数を測定する、ことを特徴とする。
【0022】
また、本発明のバスモニタ装置における前記転送情報は、前記メモリに対するデータアクセスに応じて、該メモリが読み出し動作から書き込み動作に切り替わるとき、または該メモリが書き込み動作から読み出し動作に切り替わるときに発生するデータアクセスが受け付けられないロスの期間を表すロス量情報を含み、前記測定部は、前記ロス量情報に基づいて、該ロスの時間、または該ロスの回数を測定する、ことを特徴とする。
【0023】
また、本発明のバスモニタ装置における前記転送情報は、前記メモリに対して行われるリフレッシュ動作によって発生するデータアクセスが受け付けられないロスの期間を表すロス量情報を含み、前記測定部は、前記ロス量情報に基づいて、該ロスの時間、または該ロスの回数を測定する、ことを特徴とする。
【0024】
また、本発明のバスモニタ装置における前記転送情報は、前記メモリに対してデータアクセスが行われているデータアクセスの期間を表すアクセス量情報を含み、前記測定部は、前記アクセス量情報に基づいて、該データアクセスの時間、または該データアクセスの回数を測定する、ことを特徴とする。
【0025】
また、本発明のバスモニタ装置における前記アクセス量情報は、前記メモリのバンク毎のデータアクセスの期間を表し、前記測定部は、前記アクセス量情報に基づいて、前記メモリのバンク毎の該データアクセスの時間、または該データアクセスの回数を測定する、ことを特徴とする。
【0026】
また、本発明のバスモニタ装置における前記アクセス量情報は、前記メモリの読み出し動作毎および書き込み動作毎のデータアクセスの期間を表し、前記測定部は、前記アクセス量情報に基づいて、前記メモリの読み出し動作毎および書き込み動作毎の該データアクセスの時間、または該データアクセスの回数を測定する、ことを特徴とする。
【0027】
また、本発明のバスモニタ方法は、共通バスに接続された複数の処理ブロックが、複数のバンクを有するアドレス空間からなるメモリとの間で、前記共通バスを介してデータの受け渡しを行う際の、該データの受け渡しの状態を表す転送情報に基づいて、予め定められた一定の単位時間あたりの前記共通バス上のデータの帯域を測定する測定ステップ、を含むことを特徴とする。
【0028】
また、本発明のプログラムは、共通バスに接続された複数の処理ブロックが、複数のバンクを有するアドレス空間からなるメモリとの間で、前記共通バスを介してデータの受け渡しを行う際の、該データの受け渡しの状態を表す転送情報に基づいて、予め定められた一定の単位時間あたりの前記共通バス上のデータの帯域を測定する測定ステップ、をコンピュータに実行させることを特徴とする。
【発明の効果】
【0029】
本発明によれば、データバスの効率を向上するために有用な情報を取得することができるという効果が得られる。
【図面の簡単な説明】
【0030】
【図1】本発明の第1の実施形態における画像処理装置の概略構成を示したブロック図である。
【図2】本第1の実施形態の画像処理装置におけるDRAMのアクセスの一例を模式的に示した図である。
【図3】本第1の実施形態の画像処理装置におけるバンクアクセスに起因するバス帯域のロス時間の一例を模式的に示した図である。
【図4】本第1の実施形態の画像処理装置におけるバンクアクセスに起因するバス帯域のロス時間の別の一例を模式的に示した図である。
【図5】本第1の実施形態の画像処理装置におけるバンクアクセスに起因するバス帯域のロス時間のさらに別の一例を模式的に示した図である。
【図6】本第1の実施形態の画像処理装置におけるDRAMの動作切り替えに起因するバス帯域のロス時間の一例を模式的に示した図である。
【図7】本第1の実施形態の画像処理装置に備えたDRAMコントローラの概略構成を示したブロック図である。
【図8】本第1の実施形態の画像処理装置に備えた帯域モニタ部によってデータバスのバス帯域のロス時間をモニタするタイミングの一例を示したタイミングチャートである。
【図9】本発明の第2の実施形態における画像処理装置の概略構成を示したブロック図である。
【図10】本第2の実施形態の画像処理装置に備えた帯域モニタ部の概略構成を示したブロック図である。
【図11】本第2の実施形態の画像処理装置に備えたバス状態判定部によってデータバスのバス帯域のロス時間を判定した場合の一例を模式的に示した図である。
【図12】本第2の実施形態の画像処理装置に備えたバス状態判定部によって各処理ブロックの休止期間を判定した場合の一例を模式的に示した図である。
【図13】本第2の実施形態の画像処理装置に備えたバス状態判定部によってデータバスのバス帯域のロス時間を判定した場合の別の一例を模式的に示した図である。
【発明を実施するための形態】
【0031】
<第1の実施形態>
以下、本発明の実施形態について、図面を参照して説明する。図1は、本第1の実施形態における画像処理装置の概略構成を示したブロック図である。図1において、画像処理装置10は、イメージセンサ100と、前処理部200と、画像処理部300と、表示処理部400と、表示デバイス401と、カードインタフェース部500と、記録媒体501と、CPU600と、DRAMコントローラ700と、DRAM701とを備えている。画像処理装置10内の前処理部200、画像処理部300、表示処理部400、カードインタフェース部500、CPU600、およびDRAMコントローラ700は、データバス800を介してそれぞれ接続され、DMAアクセスによってDRAMコントローラ700に接続されたDRAM701からのデータの読み出し、およびDRAM701へのデータの書き込みを行う。なお、データバス800には、各処理ブロックがDMAアクセスを行うための、DMAアクセス要求信号、DMAアクセス受け付け信号、読み出し/書き込み制御信号(RW制御信号)、アドレス、およびデータなどの信号が含まれている。
【0032】
イメージセンサ100は、図示しないレンズによって結像された被写体の光学像を光電変換するCCD(Charge Copled Device:電荷結合素子)イメージセンサや、CMOS(Complementary Metal−Oxide Semiconductor:相補型金属酸化膜半導体)イメージセンサに代表されるイメージセンサである。イメージセンサ100は、被写体光に応じた画像信号(以下、「入力画像データ」という)を前処理部200に出力する。
【0033】
前処理部200は、イメージセンサ100から入力された入力画像データに、キズ補正やシェーディング補正などの前処理を施し、前処理した結果の画像データ(以下、「前処理画像データ」という)を、DRAM701に転送する(書き込む)処理ブロックである。前処理部200は、前処理画像データをDRAM701に転送する際に、DRAM701へのDMAアクセス要求信号を、DRAMコントローラ700に出力する。そして、前処理部200は、DMAアクセス要求がDRAMコントローラ700に受け付けられ、DMAアクセス受け付け信号が入力された後に、前処理画像データを、DRAMコントローラ700を介してDRAM701に出力する。
【0034】
画像処理部300は、DRAM701に記憶している前処理画像データを取得し(読み出し)、ノイズ除去、YC変換処理、リサイズ処理、JPEG圧縮処理などの各種の画像処理を施して、表示用の画像データや記録用の画像データを生成する処理ブロックである。また、画像処理部300は、生成した表示用の画像データおよび記録用の画像データを、再びDRAM701に転送する(書き込む)処理ブロックでもある。画像処理部300は、前処理画像データをDRAM701から取得する際に、DRAM701へのDMAアクセス要求信号をDRAMコントローラ700に出力する。そして、画像処理部300は、DMAアクセス要求がDRAMコントローラ700に受け付けられ、DMAアクセス受け付け信号が入力された後に、DRAMコントローラ700を介してDRAM701から前処理画像データを読み出す。
【0035】
また、画像処理部300は、表示用の画像データおよび記録用の画像データを、DRAM701に転送する際に、DRAM701へのDMAアクセス要求信号を、DRAMコントローラ700に出力する。そして、画像処理部300は、DMAアクセス要求がDRAMコントローラ700に受け付けられ、DMAアクセス受け付け信号が入力された後に、生成した表示用の画像データおよび記録用の画像データを、DRAMコントローラ700を介してDRAM701に出力する。
【0036】
表示処理部400は、DRAM701に記憶している表示用の画像データを取得し(読み出し)、取得した表示用の画像データにOSD(On−Screen Display)表示用のデータを重畳する処理などの表示処理を施して表示デバイス401に出力する処理ブロックである。表示処理部400は、表示用の画像データをDRAM701から取得する際に、DRAM701へのDMAアクセス要求信号をDRAMコントローラ700に出力する。そして、表示処理部400は、DMAアクセス要求がDRAMコントローラ700に受け付けられ、DMAアクセス受け付け信号が入力された後に、DRAMコントローラ700を介してDRAM701から表示用の画像データを読み出す。そして、読み出した表示用の画像データに表示処理を施した後、表示処理後の画像データを、表示デバイス401に出力する。
【0037】
表示デバイス401は、TFT(薄膜トランジスター:Thin Film Transistor)液晶ディスプレイ(LCD:Liquid Crystal Display)や、有機EL(Electro Luminescence)ディスプレイなどの表示デバイスであり、表示処理部400から出力された表示処理後の画像データに応じた画像を表示する。
【0038】
カードインタフェース部500は、DRAM701に記憶している記録用の画像データを取得し(読み出し)、記録媒体501に記録させる処理ブロックである。また、カードインタフェース部500は、記録媒体501に記録している画像データを読み出し、読み出した画像データを、DRAM701に転送する(書き込む)処理ブロックでもある。カードインタフェース部500は、記録用の画像データをDRAM701から取得する際に、DRAM701へのDMAアクセス要求信号をDRAMコントローラ700に出力する。そして、カードインタフェース部500は、DMAアクセス要求がDRAMコントローラ700に受け付けられ、DMAアクセス受け付け信号が入力された後に、DRAMコントローラ700を介してDRAM701から記録用の画像データを読み出す。
【0039】
また、カードインタフェース部500は、記録媒体501から読み出した画像データを、DRAM701に転送する際に、DRAM701へのDMAアクセス要求信号を、DRAMコントローラ700に出力する。そして、カードインタフェース部500は、DMAアクセス要求がDRAMコントローラ700に受け付けられ、DMAアクセス受け付け信号が入力された後に、記録媒体501から読み出した画像データを、DRAMコントローラ700を介してDRAM701に出力する。
【0040】
記録媒体501は、メモリカードなどの記録媒体であり、カードインタフェース部500から出力された記録用の画像データを記録する。また、カードインタフェース部500によって記録している画像データが読み出される。なお、図1においては、記録媒体501も画像処理装置10の構成要素としているが、記録媒体501は、画像処理装置10に着脱可能な構成である。
【0041】
CPU600は、画像処理装置10の構成要素、すなわち、画像処理装置10全体を制御する。
DRAM701は、DRAMコントローラ700によってアクセス制御され、画像処理装置10内のそれぞれの処理ブロックの処理過程における様々なデータを記憶する。
【0042】
DRAMコントローラ700は、データバス800に接続されている画像処理装置10内の複数の処理ブロックからのDMAアクセス要求に応じて、接続されているDRAM701へのデータの転送(書き込み)、およびDRAM701からのデータの取得(読み出し)を行う。DRAMコントローラ700は、バスアービタ710と、DRAMインタフェース部720と、帯域モニタ部730とを備えている。
【0043】
バスアービタ710は、データバス800に接続されているそれぞれの処理ブロックから入力されたDMAアクセス要求信号に応じて、バンクインターリーブや各処理ブロックの優先順位に基づいて、各処理ブロックによるDRAM701へのアクセスの調停を行い、DMAアクセス要求を受け付ける処理ブロックを決定する。そして、決定した処理ブロックに、DMAアクセス受け付け信号を出力する。
【0044】
その後、バスアービタ710は、決定した処理ブロックがDRAM701にデータを転送する際には、DRAM701にデータを書き込むことを表すRW制御信号、および処理ブロックから入力されたDRAM701のアドレスや転送するデータを、DRAMインタフェース部720に出力する。また、バスアービタ710は、決定した処理ブロックがDRAM701からデータを取得する際には、DRAM701からデータを読み出すことを表すRW制御信号、処理ブロックから入力されたDRAM701のアドレスをDRAMインタフェース部720に出力する。その後、DRAMインタフェース部720から入力されたデータ、すなわち、DRAM701から取得したデータを、処理ブロックに出力する。
【0045】
また、バスアービタ710は、各処理ブロックがDRAM701をアクセスするためのRW制御信号やアドレスなどに基づいて、各処理ブロックからのDRAM701のアクセスの状況を表す情報(以下、「転送情報」という)を、帯域モニタ部730に出力する。なお、転送情報に関する詳細な説明は、後述する。
【0046】
DRAMインタフェース部720は、バスアービタ710から出力されたDRAM701の書き込みまたは読み出しを表すRW制御信号、アドレスやデータなど、すなわち、決定された処理ブロックからのDRAMアクセスに応じて、DRAM701へのデータの書き込みまたは読み出しを実行する。
【0047】
帯域モニタ部730は、バスアービタ710から入力された転送情報に基づいて、データバス800全体のバス帯域をモニタする。また、帯域モニタ部730は、モニタしたデータバス800全体のバス帯域の結果を保持し、例えば、CPU600を介した読み出し要求に応じて、保持しているバス帯域の結果を出力する。帯域モニタ部730がモニタしたデータバス800のモニタ結果が、DRAM701のデータアクセスの効率を向上するための指針の情報となる。なお、帯域モニタ部730におけるバス帯域のモニタ方法に関する詳細な説明は、後述する。
【0048】
このように、画像処理装置10内の各処理ブロックは、それぞれの処理ブロックがDRAM701をアクセスする際に、DRAMコントローラ700にDMAアクセス要求を出す。そして、DRAMコントローラ700にDMAアクセス要求が受け付けられた後に、データバス800およびDRAMコントローラ700を介して、DRAM701へのデータ書き込み、またはDRAM701からのデータ読み出しを行う。
【0049】
ここで、帯域モニタ部730がモニタするデータバス800のバス帯域について説明するため、図2を参照してデータバス800を介したDRAM701のアクセスの一例について説明する。図2は、本第1の実施形態の画像処理装置10におけるDRAM701のアクセスの一例を模式的に示した図である。画像処理装置10における一連の処理においては、図2に示したように、実際にデータバス800を介してDRAM701にアクセスしているアクセス期間と、DRAM701にアクセスしていない休止期間とが存在する。
【0050】
帯域モニタ部730は、画像処理装置10における一連の処理において、実際にデータバス800にアクセスが行われている割合を表す実行帯域や、DRAM701をアクセスする際のロス時間をモニタする。
【0051】
帯域モニタ部730によるデータバス800の実行帯域のモニタは、単位時間あたりにデータバス800にアクセスが行われているアクセス期間とアクセスが行われていない休止期間とに基づいて行う。より具体的には、帯域モニタ部730は、各処理ブロックからのデータバス800のアクセス回数やアクセス時間などに基づいて、データバス800の実行帯域をモニタする。
【0052】
なお、帯域モニタ部730が、それぞれの処理ブロック毎のアクセス回数やアクセス時間などに基づいて、データバス800の詳細な実行帯域をモニタすることもできる。さらに詳細にデータバス800の実行帯域をモニタするため、帯域モニタ部730が、DRAM701のバンク毎のアクセス回数やアクセス時間、またはDRAM701の書き込みおよび読み出し毎のアクセス回数やアクセス時間をモニタすることもできる。
【0053】
また、逆に、帯域モニタ部730が、休止期間をモニタすることによって、DRAM701のアクセス時間を算出することもできる。なお、このときには、後述するロス時間のモニタを考慮することによって、より正確にデータバス800の実行帯域を算出することができる。
【0054】
次に、帯域モニタ部730がモニタするデータバス800のバス帯域について説明するため、図3〜図6を参照してデータバス800を介したDRAM701のアクセスにおけるロス時間の一例について説明する。通常のDRAMのアクセスにおいては、DRAMの書き込みまたは読み出しを行う際の手続において、様々なロス時間が存在する。このDRAM701をアクセスする際のロス時間は、データバス800のバス帯域を低下させる要因となる。DRAMのアクセスにおけるロス時間には、以下のようなものがある。
(1):バンクアクセスに起因するロス時間。
(2):DRAMの動作の切り替えに起因するロス時間。
(3):DRAMのリフレッシュ動作に起因するロス時間。
【0055】
バンクアクセスに起因するロス時間は、データバス800を介してDRAM701にアクセスする場合において、DRAM701にアクセスする順番によって発生してしまうロス時間である。図3〜図5は、本第1の実施形態の画像処理装置10におけるバンクアクセスに起因するバス帯域のロス時間の一例を模式的に示した図である。図3は、バンクインターリーブが有効に機能することによって、ロス時間が存在しない場合を示している。また、図4は、同一のバンクに連続してアクセスしたことによって、ロス時間が発生している場合を示している。また、図5は、DRAM701のアクセスを受け付けられない期間によって、ロス時間が発生している場合を示している。
【0056】
図3に示したように、バンク1動作〜バンク4動作においてバンクインターリーブが有効に機能している場合には、同一のバンクをアクセスする期間(例えば、バンク1書き込み(W)アクセスの期間)と、書き込み(Write)動作が終了した後にそのバンクのアクセスが受け付けられないビジー期間とが重複しないように、それぞれのバンクへのアクセスが順次行われる。この場合には、DRAM701のアクセスにおいて、ロス時間は存在しない。
【0057】
しかし、図4に示したように、バンク1動作によってバンク1の書き込み(Write)動作が終了した後に、再度バンク1動作を行うような場合には、先の書き込み(Write)動作が終了した後のビジー期間中は再度バンク1への先の書き込み(Write)動作を行うことができない。このため、先のバンク1動作によるビジー期間が、DRAM701のアクセスにおけるロス時間となる。以下の説明においては、ビジー状態によるロスの期間を、「バンクロス期間」という。
【0058】
また、図5に示したように、バンク3動作によってバンク3の書き込み(Write)動作が終了した後に、他のバンクのアクセス(図5においては、バンク4動作)を挟んで再度バンク3動作を行うような場合には、先のバンク3の書き込み(Write)動作が終了した後のビジー期間が終了していないことがある。このような場合にも、先のバンク3動作のビジー期間が、DRAM701のアクセスにおけるロス時間となり、バンクロス期間が存在する。
【0059】
また、DRAMの動作の切り替えに起因するロス時間は、DRAMでは、書き込み(Write)動作から読み出し(Read)動作への切り替え、または読み出し(Read)動作から書き込み(Write)動作への切り替えを行う際に発生してしまうロス時間である。図6は、本第1の実施形態の画像処理装置10におけるDRAMの動作切り替えに起因するバス帯域のロス時間の一例を模式的に示した図である。図6に示したように、DRAMでは、書き込み(Write)動作から読み出し(Read)動作への切り替え、または読み出し(Read)動作から書き込み(Write)動作への切り替えを行う場合、DRAMには、動作の切り替えに伴ってアクセスを受け付けられない期間が存在する。この動作の切り替えによる期間が、DRAM701のアクセスにおけるロス時間となる。以下の説明においては、動作の切り替えによるロスの期間を、「RW切替ロス期間」という。
【0060】
また、DRAMのリフレッシュ動作に起因するロス時間は、DRAMのリフレッシュ動作に伴うロス時間である。このリフレッシュ動作は、DRAMがデータを記憶する際に必要な動作ではあるが、このDRAMのリフレッシュ動作を行っているときには、処理ブロックがDRAMにアクセスすることができないため、DRAM701のアクセスにおけるロス時間となる。以下の説明においては、DRAMのリフレッシュ動作によるロスの期間を、「リフレッシュ期間」という。
【0061】
このように、データバス800を介してDRAM701にアクセスする場合には、DRAM701にアクセスする順番によって、ロス時間が発生してしまう。バスアービタ710は、DMAアクセス要求信号を出力するそれぞれの処理ブロックの中から、DMAアクセス要求を受け付ける処理ブロックを決定する際に、極力ロス時間が生じないようなDMAアクセス要求を選択する。このとき、バスアービタ710は、バンクインターリーブによって、例えば、バンク1動作の後には、バンク1以外のバンクのアクセスを行う処理ブロックからのDMAアクセス要求を選択する。また、例えば、書き込み(Write)動作の後には書き込み(Write)動作を行う処理ブロックのDMAアクセス要求を選択するなどによって、データバス800全体のバス帯域、すなわち、DRAM701のデータアクセスの効率を高めるように動作する。
【0062】
一方、バスアービタ710は、例えば、優先順位が高い処理ブロックからDMAアクセス要求が入力された場合には、ある程度DRAM701のデータアクセスの効率を犠牲にしても、優先順位の高い処理ブロックからのDMAアクセス要求を優先させて、必要とするバス帯域を確保する必要がある。これは、画像処理装置10においては、例えば、イメージセンサ100が出力した入力画像データを、表示デバイス401に逐次表示させる場合に、イメージセンサ100からの入力画像データの出力、および表示デバイス401への表示処理後の画像データの入力には、決められたタイミングがあるためである。
【0063】
このとき、バスアービタ710は、例えば、バンク1動作の後であっても、バンク1のアクセスを行う処理ブロックからのDMAアクセス要求を選択するなどによって、それぞれの処理ブロックが必要とするバス帯域を確保するように動作する。例えば、上述した画像処理装置10におけるイメージセンサ100が出力した入力画像データを、表示デバイス401に逐次表示させる場合には、前処理部200および表示処理部400からのDMAアクセス要求を優先して選択することによって、前処理部200および表示処理部400が必要とするバス帯域を確保するように動作する。
【0064】
帯域モニタ部730は、画像処理装置10における一連の処理において、上記に述べたようなロス時間をモニタする。
【0065】
帯域モニタ部730によるバンクアクセスに起因するロス時間のモニタは、単位時間あたりにバンクアクセスに起因するロス時間がどれだけ発生したかを示すため、単位時間あたりのバンクロス期間の総和を測定する。なお、帯域モニタ部730が、単位時間あたりにバンクロス期間が発生した回数や、バンクロス期間が発生したアクセスの回数を測定する構成としてもよい。
【0066】
帯域モニタ部730によるDRAMの動作の切り替えに起因するロス時間のモニタは、単位時間あたりにDRAM動作の切り替えに起因するロス時間がどれだけ発生したかを示すため、単位時間あたりのRW切替ロス期間の総和を測定する。なお、帯域モニタ部730が、単位時間あたりにRW切替ロス期間が発生した回数や、RW切替ロス期間が発生したアクセスの回数を測定する構成としてもよい。
【0067】
帯域モニタ部730によるDRAMのリフレッシュ動作に起因するロス時間のモニタは、単位時間あたりにDRAMのリフレッシュ動作に起因するロス時間がどれだけ発生したかを示すため、単位時間あたりのリフレッシュ期間の総和を測定する。なお、帯域モニタ部730が、単位時間あたりにリフレッシュ期間が発生した回数を測定する構成としてもよい。
【0068】
次に、データバス800のバス帯域をモニタする構成について説明する。図7は、本第1の実施形態の画像処理装置10に備えたDRAMコントローラ700の概略構成を示したブロック図である。図7では、帯域モニタ部730がデータバス800のバス帯域をモニタする際に必要な接続のみを示している。
【0069】
バスアービタ710は、データバス800に接続されているそれぞれの処理ブロックから入力されたDMAアクセス要求信号に応じて、バンクインターリーブや各処理ブロックの優先順位に基づいたDRAM701へのアクセスの調停を行う。このため、バスアービタ710は、DRAM701にアクセスする各処理ブロックのアクセスの状況などを把握することができる。また、バスアービタ710は、DRAM701にアクセスする処理ブロックから出力されるDRAM701のRW制御信号、アドレス、およびデータを、DRAMインタフェース部720に出力する。このため、バスアービタ710は、処理ブロックがDRAM701に対してどのようなアクセスを行うのかを把握することができる。バスアービタ710は、これら把握した情報に基づいた転送情報を、帯域モニタ部730に出力する。
【0070】
図7では、転送情報として、アクセス期間、バンクロス期間、RW切替ロス期間、およびリフレッシュ期間を、それぞれ帯域モニタ部730に出力している場合を示している。アクセス期間は、図2〜図6に示したように、いずれかの処理ブロックが実際にデータバス800を介してDRAM701にアクセスしているアクセス期間を表す。また、バンクロス期間は、図4および図5に示したように、バンクアクセスに起因するロスの期間を表す。また、RW切替ロス期間は、図6に示したように、DRAMの動作の切り替えに起因するロスの期間を表す。また、リフレッシュ期間は、DRAM701のリフレッシュ動作に起因するロスの期間を表す。バスアービタ710は、それぞれの期間を表す期間信号を、転送情報として帯域モニタ部730に出力する。
【0071】
帯域モニタ部730は、バスアービタ710から入力された転送情報のそれぞれの期間信号に基づいて、アクセス期間、バンクロス期間、RW切替ロス期間、およびリフレッシュ期間のそれぞれの時間を測定(モニタ)する。帯域モニタ部730は、結果測定カウンタ731と、単位時間生成カウンタ732と、結果保持レジスタ733とを備えている。
【0072】
単位時間生成カウンタ732は、例えば、一定の周波数のクロック信号に基づいてカウントすることによって、帯域モニタ部730が測定(モニタ)する一定の単位時間を生成する。そして、単位時間生成カウンタ732は、単位時間となる毎、すなわち、一定の時間が経過する毎に、単位時間の区切りを表す信号(以下、「単位時間タイミング信号」という)を、結果測定カウンタ731と結果保持レジスタ733とに出力する。
【0073】
なお、単位時間生成カウンタ732による単位時間の生成は、例えば、画像処理装置10の動作が開始されたときから開始する。また、例えば、画像処理装置10の動作モードが変更されたときに、現在生成している単位時間の生成を中止し、再度単位時間の生成を最初から開始することもできる。なお、単位時間生成カウンタ732が生成する単位時間の長さは、例えば、レジスタ設定によって変更可能な構成にすることもできる。
【0074】
結果測定カウンタ731は、バスアービタ710から入力されるそれぞれの転送情報に対応した測定カウンタを備えている。なお、以下の説明においては、結果測定カウンタ731内の各測定カウンタも、「結果測定カウンタ731」ということとする。それぞれの結果測定カウンタ731は、単位時間生成カウンタ732と同じ一定の周波数のクロック信号に基づいて、対応する期間信号が表す期間をカウント(カウントアップ)する。それぞれの結果測定カウンタ731のカウント値が、帯域モニタ部730に入力された転送情報の時間、すなわち、アクセス期間、バンクロス期間、RW切替ロス期間、およびリフレッシュ期間のそれぞれの時間を表すこととなる。それぞれの結果測定カウンタ731は、対応する転送情報のカウント値を、結果保持レジスタ733に出力する。
【0075】
なお、それぞれの結果測定カウンタ731は、単位時間生成カウンタ732から単位時間タイミング信号が入力される毎に、転送情報のカウント値が初期化され、再び最初からカウントを行う。これにより、それぞれの結果測定カウンタ731は、単位時間内の期間信号が表す期間をカウントすることとなる。
【0076】
結果保持レジスタ733は、結果測定カウンタ731から入力されるそれぞれのカウント値に対応した保持レジスタを備えている。なお、以下の説明においては、結果保持レジスタ733内の各保持レジスタも、「結果保持レジスタ733」ということとする。それぞれの結果保持レジスタ733は、単位時間生成カウンタ732から単位時間タイミング信号が入力される毎に、対応する結果測定カウンタ731から入力されるカウント値を保持する。それぞれの結果保持レジスタ733が保持したカウント値が、帯域モニタ部730に入力された転送情報の単位時間内の時間、すなわち、単位時間あたりのアクセス期間、バンクロス期間、RW切替ロス期間、およびリフレッシュ期間のそれぞれの時間を表すこととなる。それぞれの結果保持レジスタ733は、保持しているカウント値を、例えば、CPU600からの読み出し要求に応じて外部に出力する。
【0077】
なお、図7では、結果保持レジスタ733内に、それぞれの転送情報に対応した保持レジスタを1つずつ備えた場合の一例を示しているが、結果保持レジスタ733内に備える保持レジスタの構成は、図7に示した構成のみに限定されるものではない。例えば、それぞれの転送情報に対応した保持レジスタを3つずつ、すなわち、3セット分備え、過去3回分の単位時間のカウント値を保持する構成とすることもできる。また、この構成で、例えば、4回目の単位時間のカウント値を保持する場合には、1回目のカウント値を保持している保持レジスタに、4回目の単位時間のカウント値を上書きすることによって、最新の3回分の単位時間のカウント値を保持することもできる。
【0078】
次に、データバス800のバス帯域をモニタする動作について説明する。図8は、本第1の実施形態の画像処理装置10に備えた帯域モニタ部730によってデータバス800のバス帯域のロス時間をモニタするタイミングの一例を示したタイミングチャートである。図8では、単位時間生成カウンタ732が生成する単位時間タイミング信号の間隔、すなわち、単位時間が、20クロックである場合において、バスアービタ710から入力されるそれぞれの転送情報と、それぞれの転送情報に対応して動作する結果測定カウンタ731および結果保持レジスタ733の動作を、単位時間の2回分の期間示している。なお、図8においては、それぞれの転送情報における“High”レベルの期間が、アクセス期間、バンクロス期間、RW切替ロス期間、およびリフレッシュ期間であるものとして説明する。
【0079】
単位時間生成カウンタ732は、一定の周波数のクロック信号に基づいてカウントアップし、カウント値が「20」になる毎に、“High”レベルになる単位時間タイミング信号を出力する。なお、単位時間生成カウンタ732のカウント値は、“High”レベルの単位時間タイミング信号によって初期化されることによって、次のクロック信号のタイミングで、単位時間タイミング信号が“Low”レベルになる。この20クロックの期間が、帯域モニタ部730がモニタする単位時間となる。
【0080】
結果測定カウンタ731は、単位時間生成カウンタ732と同じクロック信号に基づいて、対応する転送情報の期間信号が“High”レベルの期間をカウント(カウントアップ)する。なお、結果測定カウンタ731のカウント値も、“High”レベルの単位時間タイミング信号によって初期化されることによって、次のクロック信号のタイミングで、再び最初からカウントを行う。
【0081】
図8では、アクセス期間に対応した結果測定カウンタ731が、1回目の単位時間で「15」までカウントし、2回目の単位時間で「10」までカウントした場合を示している。また、バンクロス期間に対応した結果測定カウンタ731が、1回目の単位時間で「5」までカウントし、2回目の単位時間ではカウント値が「0」である場合を示している。また、RW切替ロス期間に対応した結果測定カウンタ731が、1回目の単位時間でがカウント値が「0」であり、2回目の単位時間で「5」までカウントした場合を示している。また、リフレッシュ期間に対応した結果測定カウンタ731が、1回目の単位時間でがカウント値が「0」であり、2回目の単位時間で「5」までカウントした場合を示している。
【0082】
結果保持レジスタ733は、単位時間タイミング信号が“High”レベルのときに、結果測定カウンタ731のカウント値を保持する。すなわち、1つの単位時間の間、結果測定カウンタ731が前回の単位時間中にカウントしたカウント値を保持する。
【0083】
図8では、アクセス期間に対応した結果保持レジスタ733は、1回目の単位時間中に前の単位時間のカウント値「10」を保持し、2回目の単位時間中に1回目の単位時間のカウント値「15」を保持し、次の単位時間に2回目の単位時間のカウント値「10」を保持する場合を示している。また、バンクロス期間に対応した結果保持レジスタ733は、1回目の単位時間中に前の単位時間のカウント値「6」を保持し、2回目の単位時間中に1回目の単位時間のカウント値「5」を保持し、次の単位時間に2回目の単位時間のカウント値「0」を保持する場合を示している。また、RW切替ロス期間に対応した結果保持レジスタ733は、1回目の単位時間中に前の単位時間のカウント値「4」を保持し、2回目の単位時間中に1回目の単位時間のカウント値「0」を保持し、次の単位時間に2回目の単位時間のカウント値「5」を保持する場合を示している。また、リフレッシュ期間に対応した結果保持レジスタ733は、1回目の単位時間中に前の単位時間のカウント値「0」を保持し、2回目の単位時間中に1回目の単位時間のカウント値「0」を保持し、次の単位時間に2回目の単位時間のカウント値「5」を保持する場合を示している。
【0084】
上記に述べたように、帯域モニタ部730は、バスアービタ710から入力された転送情報が表すそれぞれの期間を、単位時間毎にカウントして保持する。この帯域モニタ部730が保持しているカウント値が、データバス800に接続されているそれぞれの処理ブロックがDRAM701にアクセスする際の、データアクセスの効率を向上するための指針の情報となる。帯域モニタ部730内の結果保持レジスタ733に保持されたそれぞれのカウント値は、例えば、CPU600を介して外部に出力することによって、画像処理装置10の開発者が取得することができる。
【0085】
なお、図8では、単位時間が20クロックである場合の一例を示しているが、実際にデータアクセスの効率を向上するために有用な情報を取得するためには、さらに長い時間の単位時間が必要となる場合がある、この場合には、例えば、単位時間生成カウンタ732に備えた単位時間の長さを設定するレジスタに、必要な単位時間の設定を行うことによって、必要長さの単位時間でのカウント値を得ることができる。
【0086】
ここで、取得したカウント値によって得られる単位時間あたりのアクセス期間、バンクロス期間、RW切替ロス期間、およびリフレッシュ期間の情報、すなわち、データバス800のモニタ結果の活用方法として、バスアービタ710のバンクインターリーブや各処理ブロックの優先順位の設定に適用する場合のいくつかの例について説明する。
【0087】
(ケース1):帯域モニタ部730がモニタした単位時間あたりの全体のロス時間が大きい場合、すなわち、バンクロス期間、RW切替ロス期間、およびリフレッシュ期間に対応したそれぞれのカウント値の合計が大きい場合には、各処理ブロックの優先順位の設定が間違っている可能性がある。例えば、必要以上に優先順位が高い処理ブロックがあった場合、バスアービタ710がデータバス800全体のバス帯域、すなわち、DRAM701のデータアクセスの効率を犠牲にして、必要以上に優先順位が高い処理ブロックのバス帯域を優先して確保してしまっているなどの原因が考えられる。この場合には、例えば、各処理ブロックの優先度を見直して、最適な優先順位を設定することによって、全体のロス時間の改善が期待できる。
【0088】
(ケース2):帯域モニタ部730がモニタした単位時間あたりのロス時間の内、特にバンクロス期間に対応したカウント値の合計が大きい場合には、優先順位の高い処理ブロックのDRAM701のアドレス発生方法が効率的でない可能性がある。例えば、優先順位が高い処理ブロックが、バンク1→バンク1→バンク1→・・・というように、同一のバンクに連続してアクセスしてしまっていることによって、DRAM701のビジー期間が多くなっているなどの原因が考えられる(図4参照)。この場合には、例えば、優先順位が高い処理ブロックのアドレスが、バンク1→バンク2→バンク3→・・・というように、それぞれのバンクに順次アクセスするようなアドレス発生方法に変更することによって、バンクインターリーブが有効に機能し、全体のロス時間の改善が期待できる(図3参照)。なお、この場合において、優先順位の高い処理ブロックが複数ある場合には、異なるバンクのアクセスを優先的に受け付けるように、複数の処理ブロック間でアドレス発生方法を調整してもよい。
【0089】
(ケース3):帯域モニタ部730がモニタした単位時間あたりのロス時間の内、特にRW切替ロス期間に対応したカウント値の合計が大きい場合には、優先順位の高い処理ブロックのDRAM701に対する動作の切り替えが頻繁に起こっている可能性がある。例えば、優先順位が高い処理ブロックが、書き込み(Write)動作→読み出し(Read)動作→書き込み(Write)動作→・・・というように、書き込み(Write)動作と読み出し(Read)動作とが交互に行われているなどの原因が考えられる(図6参照)。この場合には、例えば、優先順位が高い処理ブロックのDRAM701に対する動作の切り替えが、書き込み(Write)動作→書き込み(Write)動作→・・・読み出し(Read)動作→読み出し(Read)動作→・・・というように、同じ動作が連続して行われるように動作の順番を変更することによって、DRAM701の動作が切り替わる回数が減少し、全体のロス時間の改善が期待できる。なお、この場合において、優先順位の高い処理ブロックが複数ある場合には、書き込み(Write)動作や読み出し(Read)動作が連続するように、複数の処理ブロック間でDRAM701に対する動作を調整してもよい。
【0090】
(ケース4):帯域モニタ部730がモニタした単位時間あたりの全体のロス時間と、単位時間あたりのアクセス期間との総和が小さい場合、すなわち、アクセス期間、バンクロス期間、RW切替ロス期間、およびリフレッシュ期間に対応したそれぞれのカウント値の合計が小さい場合には、単に、DRAM701にアクセスしている処理ブロックが少ない、または各処理ブロックのアクセス数が少ないなど考えられる。この場合には、データバス800全体のバス帯域は問題ないと考えることができる。ただし、特定の単位時間のみ総和が小さく別の単位時間の総和が大きいなど、一連の処理において総和の大きさに偏りがある場合には、総和が大きい単位時間で行っている処理を減らし、総和が小さい単位時間で行う処理を増やすなど、画像処理装置10の全体の処理を時間軸方向に最適化することができる可能性もある。このように、時間軸方向の処理の最適化を行うことによって、一連の処理の特定の時間におけるデータバス800のバス帯域の圧迫の改善が期待できる。
【0091】
(ケース5):帯域モニタ部730が、DRAM701のバンク毎のアクセス回数を単位時間毎にモニタした場合において、それぞれのバンクでアクセス回数の偏りがある場合には、各処理ブロックが発生するDRAM701のアドレスのバランスが悪い可能性がある。例えば、バンク1のアクセス回数は多いが、バンク2のアクセス回数が少ない場合には、バンク1のアクセスでのロス時間が多くなり、全体のロス時間が増加してしまうことも考えられる。すなわち、極端にアクセス回数が多いバンクと、極端にアクセス回数が少ないバンクとがある場合には、バンクインターリーブが有効に機能しないという懸念がある。この場合には、アクセス回数が多いバンクのアクセスを減らし、アクセス回数が少ないバンクのアクセス回数を増やすなど、DRAM701の各バンクのアクセスを最適化することによって、バンクインターリーブを有効に機能させ、全体のロス時間の改善が期待できる。
【0092】
<第2の実施形態>
次に、本第2の実施形態の画像処理装置について説明する。図9は、本第2の実施形態における画像処理装置の概略構成を示したブロック図である。図9において、画像処理装置20は、イメージセンサ100と、前処理部200と、画像処理部300と、表示処理部400と、表示デバイス401と、カードインタフェース部500と、記録媒体501と、CPU600と、DRAMコントローラ900と、DRAM701と、帯域モニタ部930とを備えている。
【0093】
図9に示した画像処理装置20は、図1に示した第1の実施形態の画像処理装置10内のDRAMコントローラ700がDRAMコントローラ900に代わり、さらに、帯域モニタ930がデータバス800に接続された構成となっているのみであり、その他の構成要素は、画像処理装置10と同様である。従って、本第2の実施形態の画像処理装置20の構成要素において、図1に示した第1の実施形態の画像処理装置10と同様の構成要素には、同一の符号を付加して詳細な説明は省略する。
【0094】
DRAMコントローラ900は、図1に示したDRAMコントローラ700と同様に、データバス800に接続されている画像処理装置20内の複数の処理ブロックからのDMAアクセス要求に応じて、接続されているDRAM701へのデータの転送(書き込み)、およびDRAM701からのデータの取得(読み出し)を行う。DRAMコントローラ900は、バスアービタ710と、DRAMインタフェース部720とを備えている。なお、バスアービタ710と、DRAMインタフェース部720とは、図1に示したDRAMコントローラ700内のバスアービタ710と、DRAMインタフェース部720と同様である。ただし、バスアービタ710は、転送情報を出力しない。
【0095】
帯域モニタ部930は、図1に示したDRAMコントローラ700内の帯域モニタ部730と同様に、データバス800全体のバス帯域をモニタする。ただし、帯域モニタ部930は、接続されているデータバス800の情報に基づいて、バス帯域をモニタする。なお、データバス800には、図1に示した画像処理装置10と同様に、各処理ブロックがDMAアクセスを行うための、DMAアクセス要求信号、DMAアクセス受け付け信号、読み出し/書き込み制御信号(RW制御信号)、アドレス、およびデータなどの信号が含まれている。
【0096】
帯域モニタ部930は、図1に示した帯域モニタ部730と同様に、モニタしたデータバス800全体のバス帯域の結果を保持し、例えば、CPU600を介した読み出し要求に応じて、保持しているバス帯域の結果を出力する。帯域モニタ部930がモニタしたデータバス800のモニタ結果が、DRAM701のデータアクセスの効率を向上するための指針の情報となる。なお、帯域モニタ部930の構成およびバス帯域のモニタ方法に関する詳細な説明は、後述する。
【0097】
ここで、帯域モニタ部930と図1に示した帯域モニタ部730との違いについて説明する。図1に示した画像処理装置10では、DRAMコントローラ700内に帯域モニタ部730を備えた構成であるため、帯域モニタ部730は、同じDRAMコントローラ700内のバスアービタ710から入力された転送情報に基づいて、データバス800全体のバス帯域をモニタすることができた。しかし、例えば、画像処理装置20内の前処理部200、画像処理部300、表示処理部400、カードインタフェース部500、CPU600、およびDRAMコントローラ900を備えたシステムLSIを開発する場合には、DRAMコントローラ900として、すでに市販されている汎用のIPモジュールなどを使用することもある。この場合には、DRAMコントローラ900内のバスアービタ710から転送情報を取得するために、提供されているDRAMコントローラのIPモジュールに変更を加えることが困難である。そもそも、IPモジュールの内部情報が公開されていないこともある。
【0098】
画像処理装置20では、図9に示した構成からもわかるように、帯域モニタ部930を、DRAMコントローラ900の外部で、データバス800に接続している。このため、画像処理装置20では、DRAMコントローラ900内のバスアービタ710に変更を加えずに、データバス800に含まれるそれぞれの信号に基づいて、データバス800全体のバス帯域をモニタすることができる。
【0099】
また、データバスのプロトコルは、AXI(Advanced eXtensible Interface)、OCP(Open Core Protocol)など、汎用のプロトコルとして定義されている場合もある。帯域モニタ部930は、データバス800のプロトコルに準じてバス帯域をモニタする。
【0100】
このように、データバスのプロトコルに準じてバス帯域をモニタする仕組みを帯域モニタ部930に搭載しておくことによって、画像処理装置20のみではなく、様々なシステムのデータバスのバス帯域のモニタに適用することもできる。例えば、システムLSIを開発する際のシミュレータツールなどにも、容易に適用することができる。
【0101】
次に、帯域モニタ部930の構成について説明する。図10は、本第2の実施形態の画像処理装置20に備えた帯域モニタ部930の概略構成を示したブロック図である。帯域モニタ部930は、バス状態判定部931と、結果測定カウンタ731と、単位時間生成カウンタ732と、結果保持レジスタ733とを備えている。帯域モニタ部930は、図7に示した帯域モニタ部730に、さらに、バス状態判定部931を備えた構成である。その他の構成要素は、帯域モニタ部730と同様であるため、同一の符号を付加して詳細な説明は省略する。
【0102】
バス状態判定部931は、データバス800に含まれるそれぞれの信号をモニタし、モニタしたそれぞれの信号に基づいて、データバス800に接続されている各処理ブロックによるDRAM701へのアクセスを判定(類推)する。より具体的には、バス状態判定部931は、データバス800に接続されている各処理ブロックから出力されたDMAアクセス要求信号、およびDRAMコントローラ900内のバスアービタ710から出力されたDMAアクセス受け付け信号に基づいて、いずれの処理ブロックのDMAアクセス要求が受け付けられたのかを判定する。
【0103】
また、バス状態判定部931は、DMAアクセス要求が受け付けられた処理ブロックから出力された、DRAM701をアクセスするためのRW制御信号やアドレスなどに基づいて、DRAM701に対するアクセス種別を判定する。このアクセス種別は、処理ブロックによるDRAM701のいずれのバンクへのアクセスなのか、そのアクセスはデータの書き込みまたはデータの読み出しのいずれのアクセスなのかを表す情報である。
【0104】
また、バス状態判定部931は、判定したアクセス種別に基づいた転送情報を、結果測定カウンタ731に出力する。バス状態判定部931が出力する転送情報は、第1の実施形態においてバスアービタ710が帯域モニタ部730に出力した転送情報と同様の情報である。
【0105】
結果測定カウンタ731、単位時間生成カウンタ732、および結果保持レジスタ733は、第1の実施形態の帯域モニタ部730と同様に、バス状態判定部931から入力された転送情報に基づいて、データバス800のアクセス期間、バンクロス期間、RW切替ロス期間などのそれぞれの期間を、単位時間毎にカウントして保持する。
【0106】
ここで、バス状態判定部931が転送情報を出力する方法について説明するため、図11〜図13を参照して各処理ブロックによるDRAM701へのアクセスの一例について説明する。なお、図11〜図13においては、各処理ブロックから出力されるそれぞれのDMAアクセス要求信号が“High”レベルでDMAアクセス要求がされているものとし、全てのDMAアクセス要求信号を1つの信号にまとめて(OR(論理和)して)表す。すなわち、DMAアクセス要求は、データバス800に接続されているいずれかの処理ブロックからDMAアクセス要求信号が出力されていることを表している。また、DMAアクセス受け付け、およびアクセス種別も同様にまとめて表す。すなわち、DMAアクセス受け付けは、データバス800に接続されているいずれかの処理ブロックのDMAアクセス要求が受け付けられたことを表し、アクセス種別は、受け付けられた処理ブロックによるDRAM701のアクセス種別を表している。
【0107】
図11は、本第2の実施形態の画像処理装置20に備えた帯域モニタ部930内のバス状態判定部931によってデータバス800のバス帯域のロス時間を判定した場合の一例を模式的に示した図である。通常、ロス時間がなくDRAM701のアクセスが行われる場合には、一定の間隔でDMAアクセスが受け付けられる。バス状態判定部931は、DMAアクセスが受け付けられた間隔に基づいて、ロス時間を判定する。
【0108】
バス状態判定部931は、まず、1回目のDMAアクセス受け付けと2回目のDMAアクセス受け付けとの間隔を測定する。そして、ここで測定した間隔を、ロス時間がない場合のDMAアクセス受付間隔(以下、「基準リクエスト受付間隔」という)と仮定する。その後、2回目のDMAアクセス受け付けと3回目のDMAアクセス受け付けとの間隔というように、順次DMAアクセスが受け付けられた間隔を測定する。そして、バス状態判定部931は、現在のDMAアクセス受け付けの間隔が、基準リクエスト受付間隔よりも長い場合に、基準リクエスト受付間隔を超えている期間を、ロス時間と判定する。図11では、5回目のアクセス(アクセス種別=バンク4の書き込み(W)アクセス)のときに、ロス時間があると判定された場合を示している。
【0109】
そして、バス状態判定部931は、前回のアクセス種別と今回のアクセス種別とがDRAM701のどのバンクにアクセスするものであったかを確認する。これにより、ロス時間の原因を特定することができる。そして、特定したロス時間の原因に応じた転送情報を、出力する。図11では、バンク1書き込み(W)アクセスが終了した後に、再度バンク1書き込み(W)アクセスが行われていることがロス時間の原因であるため、バンクロス期間を表す転送情報が出力されている場合を示している。
【0110】
図12は、本第2の実施形態の画像処理装置20に備えた帯域モニタ部930内のバス状態判定部931によって各処理ブロックの休止期間を判定した場合の一例を模式的に示した図である。バス状態判定部931は、データバス800に接続されているいずれかの処理ブロックからDMAアクセス要求信号が出力されているときに、順次DMAアクセス受け付けの間隔を測定する。そして、バス状態判定部931は、データバス800に接続されている全ての処理ブロックからDMAアクセス要求信号が出力されていない場合には、その期間を休止期間と判定し、いずれの転送情報も出力しない。図12では、2回目のアクセス(アクセス種別=バンク2の書き込み(W)アクセス)〜3回目のアクセス(アクセス種別=バンク3の書き込み(W)アクセス)までの期間が休止期間であると判定された場合を示している。
【0111】
しかし、データバス800に接続されている全ての処理ブロックからDMAアクセス要求信号が出力されていない場合でも、その期間が短いときには、最速でDRAM701にアクセスすることができることもある。例えば、次のDMAアクセス要求信号が、DMAアクセス受け付けを行う1サイクル手前までに出力された場合には、ロス時間がなくDRAM701にアクセスすることができる。そこで、バス状態判定部931では、ロス時間がなくDRAM701にアクセスすることができる期間を、DMAアクセス要求がない状態を無効とする期間(以下、「リクエストネゲート無効期間」という)として予め設定する。そして、このリクエストネゲート無効期間内に、いずれかの処理ブロックからDMAアクセス要求信号が出力された場合には、休止期間の判定を無視する。
【0112】
図13は、本第2の実施形態の画像処理装置20に備えた帯域モニタ部930内のバス状態判定部931によってデータバスのバス帯域のロス時間を判定した場合の別の一例を模式的に示した図である。リクエストネゲート無効期間を設定することによって、図13に示したように、バス状態判定部931の内部で、仮想のDMAアクセス要求を生成し、実際のDMAアクセス要求信号が“Low”レベルとなっている場合でも、仮想的にDMAアクセス要求が継続しているものとして処理することができる。図13では、基準リクエスト間隔の1サイクル手前までの期間を、リクエストネゲート無効期間に設定した場合において、1回目と2回目とのDMAアクセス要求がない状態が無効とされた場合を示している。
【0113】
これにより、図13では、1回目のアクセス(アクセス種別=バンク1の書き込み(W)アクセス)〜4回目のアクセス(アクセス種別=バンク4の書き込み(W)アクセス)までが連続して要求されているものとして処理されることとなる。これにより、図13に示したように、3回目のアクセス(アクセス種別=バンク2の書き込み(W)アクセス)のときに、ロス時間があると判定される。また、図13に示した3回目のDMAアクセス要求がない状態のように、全ての処理ブロックからDMAアクセス要求信号が出力されていない期間がリクエストネゲート無効期間よりも長い場合には、仮想のDMAアクセス要求もないものとして処理し、休止期間の判定を行う。
【0114】
上記に述べたように、バス状態判定部931は、DMAアクセス要求の有無、DMAアクセス受け付けの間隔によってロス時間を判定する。そして、前回のアクセス種別と今回のアクセス種別とによって、ロス時間の種類を特定する。これにより、バス状態判定部931は、第1の実施形態においてバスアービタ710が帯域モニタ部730に出力した転送情報と同様の情報を出力することができる。
【0115】
なお、上記の一例では、バンクロス期間を表す転送情報が出力される場合について説明したが、アクセス期間やRW切替ロス期間を表す転送情報も同様の判定によって出力することができる。より具体体には、休止期間以外の期間を、アクセス期間を表す転送情報として出力する。また、DMAアクセス受け付けの間隔によって判定したロス時間が、例えば、バンク1書き込み(W)アクセスが終了した後に、バンク2読み出し(R)アクセスが行われていることがロス時間の原因であると判定した場合に、RW切替ロス期間を表す転送情報を出力する。
【0116】
なお、上記の一例では、基準リクエスト間隔は、DRAM701に対する全てのアクセスで一定の間隔であるものとしているが、実際のリクエスト間隔は、DRAM701に対するアクセス種別に応じて異なることも考えられる。この場合には、基準リクエスト間隔を可変にする構成を適用し、アクセス種別に応じた基準リクエスト間隔に基づいてロス時間を判定する構成とすることもできる。例えば、1転送単位(1バースト)で4つのデータを転送(書き込みまたは読み出し)するDRAM701のアクセス(4転送アクセス)と、1転送単位で8つのデータを転送するDRAM701のアクセス(8転送アクセス)とが混在している場合を考える。この場合には、4転送アクセスのDMAアクセス要求を受け付けたときと、8転送アクセスのDMAアクセス要求を受け付けたときとでは、次のDMAアクセス受け付けまでの時間が異なるので、1転送単位で転送するデータの数に応じて、基準リクエスト間隔を変更する。
【0117】
また、前回のアクセス種別と今回のアクセス種別とによっては、ロス時間がなくDRAM701にアクセスすることができる期間が異なる、すなわち、最速でDRAM701にアクセスすることができるDMAアクセス受け付けの間隔が異なることも考えられる。例えば、書き込み(W)アクセス→読み出し(R)アクセスのときと、読み出し(R)アクセス→書き込み(W)アクセスのときと、書き込み(W)アクセス→書き込み(W)アクセスのときと、読み出し(R)アクセス→読み出し(R)アクセスのときとでは、最速でDRAM701にアクセスすることができるDMAアクセス受け付けの間隔が異なることが考えられる。この場合には、リクエストネゲート無効期間を可変にする構成を適用し、前回のアクセス種別と今回のアクセス種別とに応じて、休止期間の判定を無視する期間を切り換える構成とすることもできる。
【0118】
なお、図10に示した帯域モニタ部930のブロック図では、第1の実施形態においてバスアービタ710が出力したリフレッシュ期間を表す転送情報に関する構成を記載していない。これは、DRAMのリフレッシュ動作は、データバスには現れてこないためである。このため、DRAM701のリフレッシュ動作によるロス時間は、バンクロス期間またはRW切替ロス期間として、バス状態判定部931に判定されることになる。ただし、バス状態判定部931がロス時間の原因を判定する際に、例えば、前回のアクセス種別と今回のアクセス種別とに加えて、さらに前々回のアクセス種別がDRAM701のどのバンクにアクセスするものであったかを確認することによって、バンクロス期間またはRW切替ロス期間として判定されたロス時間を、リフレッシュ期間に振り分けてもよい。
【0119】
より具体的には、前々回がバンク1書き込み(W)アクセス、前回がバンク2書き込み(W)アクセス、今回がバンク3書き込み(W)アクセスであった場合には、今回のDRAM701のアクセスのときのロス時間は、リフレッシュ期間であると判定することができる。なお、前々回がバンク1書き込み(W)アクセス、前回がバンク2書き込み(W)アクセス、今回がバンク2書き込み(W)アクセスであった場合には、今回のDRAM701のアクセスのときのロス時間は、バンクロス期間であると判定される。また、前々回がバンク1書き込み(W)アクセス、前回がバンク2書き込み(W)アクセス、今回がバンク3読み出し(R)アクセスであった場合には、今回のDRAM701のアクセスのときのロス時間は、RW切替ロス期間であると判定される。
【0120】
上記に述べたとおり、本発明を実施するための形態によれば、単位時間あたりのDRAMアクセスのアクセス期間やロス時間をモニタすることによって、データバス全体のバス帯域を測定することができる。そして、画像処理装置の開発者は、バス帯域の測定結果を、画像処理装置においてDRAMのデータアクセスの効率を向上するための指針の情報として取得することができる。すなわち、画像処理装置の開発者は、現在、どのような頻度でDRAMのアクセスが行われているか、現在、どのようなDRAMアクセスのロス時間が発生しているかという、画像処理装置の内部のアクセス状態を把握することができる。このことにより、画像処理装置の開発者は、画像処理装置に備えるバスアービタに設定する各処理ブロックの優先順位、各処理ブロックが発生するアドレスの発生方法、各処理ブロックによって行われるDRAMの書き込み動作および読み出し動作の順番などを、適切な設定に変更することができ、画像処理装置のシステム開発の効率を向上させることができる。
【0121】
なお、本実施形態においては、第1の実施形態において、DRAMコントローラ700内のバスアービタ710が内部の状態を表す転送情報を出力し、帯域モニタ部730が、入力された転送情報に基づいてロス期間を単位時間毎にカウントする構成を示した。また、第2の実施形態において、帯域モニタ部930内のバス状態判定部931が、接続されたデータバス800に含まれるそれぞれの信号をモニタすることによって、DRAM701へのアクセスを判定した転送情報を出力する構成を示した。そして、第2の実施形態の構成は、汎用のIPモジュールを使用するなど、IPモジュールに含まれるバスアービタの変更が困難である場合や、バスアービタの情報が公開されていない場合に、適していることを示した。また、DRAMコントローラ700または帯域モニタ部930を、画像処理装置に適用した場合について示した。
【0122】
しかし、本実施形態において示したDRAMコントローラ700または帯域モニタ部930のような、データバスのバス帯域をモニタする構成は、本実施形態に示した適用方法に限定されるものではない。例えば、システムLSIのシミュレータや、システムLSIや画像処理装置を仮想的に実現するエミュレータなどの開発ツールで、データバスの帯域状況を測定するような、バス解析プログラムなどにも適用することができる。
【0123】
その際には、図7に示したDRAMコントローラ700、または図10に示した帯域モニタ部930による処理を実現するためのプログラムを、コンピュータ読み取り可能な記録媒体に記録して、当該記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、DRAMコントローラ700または帯域モニタ部930に係る上述した種々の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものであってもよい。また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、フラッシュメモリ等の書き込み可能な不揮発性メモリ、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【0124】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(例えばDRAM(Dynamic Random Access Memory))のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【0125】
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。
【符号の説明】
【0126】
10,20・・・画像処理装置
100・・・イメージセンサ
200・・・前処理部
300・・・画像処理部
400・・・表示処理部
401・・・表示デバイス
500・・・カードインタフェース部
501・・・記録媒体
600・・・CPU
700,900・・・DRAMコントローラ
710・・・バスアービタ(共通バス調停部)
720・・・DRAMインタフェース部
730,930・・・帯域モニタ部(測定部)
731・・・結果測定カウンタ(状態測定カウンタ部)
732・・・単位時間生成カウンタ(単位時間生成部)
733・・・結果保持レジスタ(結果保持レジスタ部)
931・・・バス状態判定部(バス状態判定部)
701・・・DRAM(メモリ)
800・・・データバス(共通バス)
【技術分野】
【0001】
本発明は、バスモニタ装置、バスモニタ方法、およびプログラムに関する。
【背景技術】
【0002】
静止画用カメラ、動画用カメラ、医療用内視鏡カメラ、または産業用内視鏡カメラなどの画像処理装置に搭載されるシステムLSIなど、多くのシステムLSIでは、接続された1つのDRAM(Dynamic Random Access Memory)を、内蔵する複数の処理ブロックが共有している。このようなシステムLSIにおいては、内蔵している複数の処理ブロックが、システムLSI内部のデータバスに接続され、各処理ブロックは、DMA(Direct Memory Access)によってDRAMへのアクセスを行う。このとき、バスアービタは、それぞれの処理ブロックから発せられるDRAMへのアクセス要求を適切に調停しながら、DRAMへのアクセスを制御している。
【0003】
このバスアービタには、以下のような2つの重要な役割が求められている。その1つは、データバス全体のバス帯域を確保することである。そして、もう1つは、各処理ブロックの調停を適切に行うことである。
【0004】
バス帯域は、各処理ブロックがDRAMにアクセスした際の、データバス上のデータ量を表しており、データバス全体のバス帯域を確保する方法として、バンクインターリーブという方法が知られている。バンクインターリーブでは、DRAMのそれぞれのバンク毎にデータ転送を制御する。そして、先にアクセスしたバンクのデータ転送の処理中に、次にアクセスするバンクのアドレス設定の処理を並行して行うことによって、DRAMのデータアクセスの効率を向上させている。しかしながら、DRAMには、同一のバンクを連続してアクセスする場合に、アクセスを受け付けられない期間が存在する。このため、バンクインターリーブで同一のバンクに連続アクセスしてしまうと、DRAMがアクセスを受け付けられないロス時間が発生し、データアクセス効率が低下してしまう。そこで、データ転送処理とアドレス設定処理とを並行して行うことによって高いデータアクセス効率を確保するためには、バンクインターリーブによって、異なるバンクに順次アクセスする必要がある。
【0005】
また、各処理ブロックの調停を行う方法として、各処理ブロックからDRAMにアクセスする際の優先度を決定する方法が知られている。このDRAMへのアクセスの優先度は、例えば、各処理ブロックのバス帯域の平均値(平均帯域)、各処理ブロックに備えているバッファの容量、各処理ブロックの重要度などに応じて決定される。そして、DRAMへのアクセスが一定期間阻害されると処理が破綻してしまうような処理ブロックには、優先的にバス帯域を割り当てるようにすることによって、各処理ブロックが必要とするバス帯域を確保している。
【0006】
従来から、各処理ブロックが必要とするバス帯域を確保しつつ、バンクインターリーブによってデータバス全体のバス帯域を向上、すなわち、DRAMのデータアクセスの効率を向上させ、システムとしての性能(パフォーマンス)を確保させるための技術が開示されている。
【0007】
特許文献1に開示された技術は、各処理ブロックの優先度をレジスタに設定し、優先度の高い処理ブロックの異なるバンクのアクセスを優先的に受け付ける技術である。また、特許文献2に開示された技術は、各処理ブロックによるDRAMアドレスの発生方法などをレジスタに設定し、複数の処理ブロック間で、互いに離れたバンクをアクセスするように、DRAMのアドレスを発生させる技術である。
【0008】
特許文献1および特許文献2に開示された技術では、レジスタの設定で、それぞれの設定を調整することができるため、例えば、DRAMの種別や、システムの動作モードなどに応じて適切なレジスタ設定を行うことによって、システムの性能を確保するための最適な調停を行うことができる。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2011−3160号公報
【特許文献2】特開2011−3161号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
このように、特許文献1および特許文献2に開示されている技術では、データバス全体のバス帯域の向上と、各処理ブロックが必要とするバス帯域の確保という、相反する要求を、レジスタの設定によって調節することができる。
【0011】
しかし、特許文献1および特許文献2に開示されている技術では、レジスタの設定が最適でない場合、例えば、優先度が低い処理ブロックのDRAMアクセスの要求を優先的に受け付けてバス帯域を割り当ててしまったり、バンクインターリーブが有効に機能せずにデータバス全体のバス帯域が低下してしまったりなど、システム全体の動作が破綻してしまう場合がある。
【0012】
この場合には、システム全体の動作が破綻している要因となっている処理ブロックを特定し、レジスタの設定を最適にする必要がある。また、システム全体の動作が破綻するまでには至っていない場合でも、バンクインターリーブが有効に活用され、DRAMのデータアクセスが効率よく行われているのか否かを解析することは、レジスタの設定を最適にし、システムの性能を向上するためにも重要である。
【0013】
しかしながら、DRAMのデータアクセスの効率化や、レジスタの設定を最適にするための指針となる情報を取得する方法がなかった。このため、従来、各処理ブロックのレジスタ設定を行う際には、例えば、最適と思われるレジスタ設定を行った上で実際にシステムを動作させ、システムとして破綻が起こらない設定を見つけだす作業が行われており、システム開発の効率が悪いという問題がある。
【0014】
なお、システムとして破綻していた場合には、変更したレジスタ設定からシステム破綻の要因となっている処理ブロックをある程度特定することはできるが、システムとして破綻していない場合には、データアクセスの効率を解析することができないままである。
【0015】
本発明は、上記の課題認識に基づいてなされたものであり、データバスの効率を向上するために有用な情報を取得することができるバスモニタ装置、バスモニタ方法、およびプログラムを提供することを目的としている。
【課題を解決するための手段】
【0016】
上記の課題を解決するため、本発明のバスモニタ装置は、共通バスに接続された複数の処理ブロックが、複数のバンクを有するアドレス空間からなるメモリとの間で、前記共通バスを介してデータの受け渡しを行う際の、該データの受け渡しの状態を表す転送情報に基づいて、予め定められた一定の単位時間あたりの前記共通バス上のデータの帯域を測定する測定部、を備えることを特徴とする。
【0017】
また、本発明の前記測定部は、所定のタイミング信号に基づいて前記単位時間の区切りを表す単位時間タイミング信号を生成する単位時間生成部と、前記タイミング信号に基づいて、前記転送情報が、データの受け渡しにおける所定の状態を表している期間を計測する状態測定カウンタ部と、前記単位時間タイミング信号が前記単位時間の区切りを表すタイミングで、前記状態測定カウンタ部が計測した結果を保持する結果保持レジスタ部と、を備える、ことを特徴とする。
【0018】
また、本発明のバスモニタ装置における前記転送情報は、前記測定部の外部に配置され、前記共通バスに接続された複数の前記処理ブロックから出力されるデータアクセスの要求を調停し、前記メモリとの間でのデータの受け渡しを受け付ける共通バス調停部が、前記共通バスに接続された複数の前記処理ブロックの内、データの受け渡しを受け付けたいずれか1つの処理ブロックからの前記メモリへのデータアクセスの状況を表す情報である、ことを特徴とする。
【0019】
また、本発明の前記測定部は、前記共通バスに含まれる信号に基づいて、前記共通バスに接続された複数の前記処理ブロックの内、データの受け渡しが受け付けられたいずれか1つの処理ブロックが、前記メモリとの間で行うデータアクセスの状況を判定し、該判定結果を前記転送情報として出力するバス状態判定部を、さらに備える、ことを特徴とする。
【0020】
また、本発明の前記バス状態判定部は、前記共通バスに含まれる、前記共通バスに接続された複数の前記処理ブロックからのデータアクセスの要求に応じて出力される、データアクセスを受け付けたことを表すデータアクセス受け付け信号の間隔に基づいて、データアクセスが受け付けられないロスの時間を判定し、前記共通バスに含まれる、前記共通バスに接続された複数の前記処理ブロックから出力されるデータアクセスの要求を表すデータアクセス要求信号と、前記データアクセス受け付け信号とに基づいて、データアクセスが受け付けられた処理ブロックを判定し、該データアクセスが受け付けられた処理ブロックから出力される前記メモリのアドレス信号と、前記メモリへのデータの書き込みまたは前記メモリからのデータの読み出しを表す制御信号とに基づいて、該データアクセスが受け付けられた処理ブロックが前記メモリとの間で行うデータアクセスの状況を判定し、該判定したデータアクセスの状況に基づいて、判定した前記ロスの時間の種類を判定し、該判定した前記ロスの時間の種類に応じた前記転送情報を出力する、ことを特徴とする。
【0021】
また、本発明のバスモニタ装置における前記転送情報は、前記メモリに対して行われるバンクインターリーブのアクセスにおいて、前記メモリが有するバンクにアクセスする際に発生するデータアクセスが受け付けられないロスの期間を表すロス量情報を含み、前記測定部は、前記ロス量情報に基づいて、該ロスの時間、または該ロスの回数を測定する、ことを特徴とする。
【0022】
また、本発明のバスモニタ装置における前記転送情報は、前記メモリに対するデータアクセスに応じて、該メモリが読み出し動作から書き込み動作に切り替わるとき、または該メモリが書き込み動作から読み出し動作に切り替わるときに発生するデータアクセスが受け付けられないロスの期間を表すロス量情報を含み、前記測定部は、前記ロス量情報に基づいて、該ロスの時間、または該ロスの回数を測定する、ことを特徴とする。
【0023】
また、本発明のバスモニタ装置における前記転送情報は、前記メモリに対して行われるリフレッシュ動作によって発生するデータアクセスが受け付けられないロスの期間を表すロス量情報を含み、前記測定部は、前記ロス量情報に基づいて、該ロスの時間、または該ロスの回数を測定する、ことを特徴とする。
【0024】
また、本発明のバスモニタ装置における前記転送情報は、前記メモリに対してデータアクセスが行われているデータアクセスの期間を表すアクセス量情報を含み、前記測定部は、前記アクセス量情報に基づいて、該データアクセスの時間、または該データアクセスの回数を測定する、ことを特徴とする。
【0025】
また、本発明のバスモニタ装置における前記アクセス量情報は、前記メモリのバンク毎のデータアクセスの期間を表し、前記測定部は、前記アクセス量情報に基づいて、前記メモリのバンク毎の該データアクセスの時間、または該データアクセスの回数を測定する、ことを特徴とする。
【0026】
また、本発明のバスモニタ装置における前記アクセス量情報は、前記メモリの読み出し動作毎および書き込み動作毎のデータアクセスの期間を表し、前記測定部は、前記アクセス量情報に基づいて、前記メモリの読み出し動作毎および書き込み動作毎の該データアクセスの時間、または該データアクセスの回数を測定する、ことを特徴とする。
【0027】
また、本発明のバスモニタ方法は、共通バスに接続された複数の処理ブロックが、複数のバンクを有するアドレス空間からなるメモリとの間で、前記共通バスを介してデータの受け渡しを行う際の、該データの受け渡しの状態を表す転送情報に基づいて、予め定められた一定の単位時間あたりの前記共通バス上のデータの帯域を測定する測定ステップ、を含むことを特徴とする。
【0028】
また、本発明のプログラムは、共通バスに接続された複数の処理ブロックが、複数のバンクを有するアドレス空間からなるメモリとの間で、前記共通バスを介してデータの受け渡しを行う際の、該データの受け渡しの状態を表す転送情報に基づいて、予め定められた一定の単位時間あたりの前記共通バス上のデータの帯域を測定する測定ステップ、をコンピュータに実行させることを特徴とする。
【発明の効果】
【0029】
本発明によれば、データバスの効率を向上するために有用な情報を取得することができるという効果が得られる。
【図面の簡単な説明】
【0030】
【図1】本発明の第1の実施形態における画像処理装置の概略構成を示したブロック図である。
【図2】本第1の実施形態の画像処理装置におけるDRAMのアクセスの一例を模式的に示した図である。
【図3】本第1の実施形態の画像処理装置におけるバンクアクセスに起因するバス帯域のロス時間の一例を模式的に示した図である。
【図4】本第1の実施形態の画像処理装置におけるバンクアクセスに起因するバス帯域のロス時間の別の一例を模式的に示した図である。
【図5】本第1の実施形態の画像処理装置におけるバンクアクセスに起因するバス帯域のロス時間のさらに別の一例を模式的に示した図である。
【図6】本第1の実施形態の画像処理装置におけるDRAMの動作切り替えに起因するバス帯域のロス時間の一例を模式的に示した図である。
【図7】本第1の実施形態の画像処理装置に備えたDRAMコントローラの概略構成を示したブロック図である。
【図8】本第1の実施形態の画像処理装置に備えた帯域モニタ部によってデータバスのバス帯域のロス時間をモニタするタイミングの一例を示したタイミングチャートである。
【図9】本発明の第2の実施形態における画像処理装置の概略構成を示したブロック図である。
【図10】本第2の実施形態の画像処理装置に備えた帯域モニタ部の概略構成を示したブロック図である。
【図11】本第2の実施形態の画像処理装置に備えたバス状態判定部によってデータバスのバス帯域のロス時間を判定した場合の一例を模式的に示した図である。
【図12】本第2の実施形態の画像処理装置に備えたバス状態判定部によって各処理ブロックの休止期間を判定した場合の一例を模式的に示した図である。
【図13】本第2の実施形態の画像処理装置に備えたバス状態判定部によってデータバスのバス帯域のロス時間を判定した場合の別の一例を模式的に示した図である。
【発明を実施するための形態】
【0031】
<第1の実施形態>
以下、本発明の実施形態について、図面を参照して説明する。図1は、本第1の実施形態における画像処理装置の概略構成を示したブロック図である。図1において、画像処理装置10は、イメージセンサ100と、前処理部200と、画像処理部300と、表示処理部400と、表示デバイス401と、カードインタフェース部500と、記録媒体501と、CPU600と、DRAMコントローラ700と、DRAM701とを備えている。画像処理装置10内の前処理部200、画像処理部300、表示処理部400、カードインタフェース部500、CPU600、およびDRAMコントローラ700は、データバス800を介してそれぞれ接続され、DMAアクセスによってDRAMコントローラ700に接続されたDRAM701からのデータの読み出し、およびDRAM701へのデータの書き込みを行う。なお、データバス800には、各処理ブロックがDMAアクセスを行うための、DMAアクセス要求信号、DMAアクセス受け付け信号、読み出し/書き込み制御信号(RW制御信号)、アドレス、およびデータなどの信号が含まれている。
【0032】
イメージセンサ100は、図示しないレンズによって結像された被写体の光学像を光電変換するCCD(Charge Copled Device:電荷結合素子)イメージセンサや、CMOS(Complementary Metal−Oxide Semiconductor:相補型金属酸化膜半導体)イメージセンサに代表されるイメージセンサである。イメージセンサ100は、被写体光に応じた画像信号(以下、「入力画像データ」という)を前処理部200に出力する。
【0033】
前処理部200は、イメージセンサ100から入力された入力画像データに、キズ補正やシェーディング補正などの前処理を施し、前処理した結果の画像データ(以下、「前処理画像データ」という)を、DRAM701に転送する(書き込む)処理ブロックである。前処理部200は、前処理画像データをDRAM701に転送する際に、DRAM701へのDMAアクセス要求信号を、DRAMコントローラ700に出力する。そして、前処理部200は、DMAアクセス要求がDRAMコントローラ700に受け付けられ、DMAアクセス受け付け信号が入力された後に、前処理画像データを、DRAMコントローラ700を介してDRAM701に出力する。
【0034】
画像処理部300は、DRAM701に記憶している前処理画像データを取得し(読み出し)、ノイズ除去、YC変換処理、リサイズ処理、JPEG圧縮処理などの各種の画像処理を施して、表示用の画像データや記録用の画像データを生成する処理ブロックである。また、画像処理部300は、生成した表示用の画像データおよび記録用の画像データを、再びDRAM701に転送する(書き込む)処理ブロックでもある。画像処理部300は、前処理画像データをDRAM701から取得する際に、DRAM701へのDMAアクセス要求信号をDRAMコントローラ700に出力する。そして、画像処理部300は、DMAアクセス要求がDRAMコントローラ700に受け付けられ、DMAアクセス受け付け信号が入力された後に、DRAMコントローラ700を介してDRAM701から前処理画像データを読み出す。
【0035】
また、画像処理部300は、表示用の画像データおよび記録用の画像データを、DRAM701に転送する際に、DRAM701へのDMAアクセス要求信号を、DRAMコントローラ700に出力する。そして、画像処理部300は、DMAアクセス要求がDRAMコントローラ700に受け付けられ、DMAアクセス受け付け信号が入力された後に、生成した表示用の画像データおよび記録用の画像データを、DRAMコントローラ700を介してDRAM701に出力する。
【0036】
表示処理部400は、DRAM701に記憶している表示用の画像データを取得し(読み出し)、取得した表示用の画像データにOSD(On−Screen Display)表示用のデータを重畳する処理などの表示処理を施して表示デバイス401に出力する処理ブロックである。表示処理部400は、表示用の画像データをDRAM701から取得する際に、DRAM701へのDMAアクセス要求信号をDRAMコントローラ700に出力する。そして、表示処理部400は、DMAアクセス要求がDRAMコントローラ700に受け付けられ、DMAアクセス受け付け信号が入力された後に、DRAMコントローラ700を介してDRAM701から表示用の画像データを読み出す。そして、読み出した表示用の画像データに表示処理を施した後、表示処理後の画像データを、表示デバイス401に出力する。
【0037】
表示デバイス401は、TFT(薄膜トランジスター:Thin Film Transistor)液晶ディスプレイ(LCD:Liquid Crystal Display)や、有機EL(Electro Luminescence)ディスプレイなどの表示デバイスであり、表示処理部400から出力された表示処理後の画像データに応じた画像を表示する。
【0038】
カードインタフェース部500は、DRAM701に記憶している記録用の画像データを取得し(読み出し)、記録媒体501に記録させる処理ブロックである。また、カードインタフェース部500は、記録媒体501に記録している画像データを読み出し、読み出した画像データを、DRAM701に転送する(書き込む)処理ブロックでもある。カードインタフェース部500は、記録用の画像データをDRAM701から取得する際に、DRAM701へのDMAアクセス要求信号をDRAMコントローラ700に出力する。そして、カードインタフェース部500は、DMAアクセス要求がDRAMコントローラ700に受け付けられ、DMAアクセス受け付け信号が入力された後に、DRAMコントローラ700を介してDRAM701から記録用の画像データを読み出す。
【0039】
また、カードインタフェース部500は、記録媒体501から読み出した画像データを、DRAM701に転送する際に、DRAM701へのDMAアクセス要求信号を、DRAMコントローラ700に出力する。そして、カードインタフェース部500は、DMAアクセス要求がDRAMコントローラ700に受け付けられ、DMAアクセス受け付け信号が入力された後に、記録媒体501から読み出した画像データを、DRAMコントローラ700を介してDRAM701に出力する。
【0040】
記録媒体501は、メモリカードなどの記録媒体であり、カードインタフェース部500から出力された記録用の画像データを記録する。また、カードインタフェース部500によって記録している画像データが読み出される。なお、図1においては、記録媒体501も画像処理装置10の構成要素としているが、記録媒体501は、画像処理装置10に着脱可能な構成である。
【0041】
CPU600は、画像処理装置10の構成要素、すなわち、画像処理装置10全体を制御する。
DRAM701は、DRAMコントローラ700によってアクセス制御され、画像処理装置10内のそれぞれの処理ブロックの処理過程における様々なデータを記憶する。
【0042】
DRAMコントローラ700は、データバス800に接続されている画像処理装置10内の複数の処理ブロックからのDMAアクセス要求に応じて、接続されているDRAM701へのデータの転送(書き込み)、およびDRAM701からのデータの取得(読み出し)を行う。DRAMコントローラ700は、バスアービタ710と、DRAMインタフェース部720と、帯域モニタ部730とを備えている。
【0043】
バスアービタ710は、データバス800に接続されているそれぞれの処理ブロックから入力されたDMAアクセス要求信号に応じて、バンクインターリーブや各処理ブロックの優先順位に基づいて、各処理ブロックによるDRAM701へのアクセスの調停を行い、DMAアクセス要求を受け付ける処理ブロックを決定する。そして、決定した処理ブロックに、DMAアクセス受け付け信号を出力する。
【0044】
その後、バスアービタ710は、決定した処理ブロックがDRAM701にデータを転送する際には、DRAM701にデータを書き込むことを表すRW制御信号、および処理ブロックから入力されたDRAM701のアドレスや転送するデータを、DRAMインタフェース部720に出力する。また、バスアービタ710は、決定した処理ブロックがDRAM701からデータを取得する際には、DRAM701からデータを読み出すことを表すRW制御信号、処理ブロックから入力されたDRAM701のアドレスをDRAMインタフェース部720に出力する。その後、DRAMインタフェース部720から入力されたデータ、すなわち、DRAM701から取得したデータを、処理ブロックに出力する。
【0045】
また、バスアービタ710は、各処理ブロックがDRAM701をアクセスするためのRW制御信号やアドレスなどに基づいて、各処理ブロックからのDRAM701のアクセスの状況を表す情報(以下、「転送情報」という)を、帯域モニタ部730に出力する。なお、転送情報に関する詳細な説明は、後述する。
【0046】
DRAMインタフェース部720は、バスアービタ710から出力されたDRAM701の書き込みまたは読み出しを表すRW制御信号、アドレスやデータなど、すなわち、決定された処理ブロックからのDRAMアクセスに応じて、DRAM701へのデータの書き込みまたは読み出しを実行する。
【0047】
帯域モニタ部730は、バスアービタ710から入力された転送情報に基づいて、データバス800全体のバス帯域をモニタする。また、帯域モニタ部730は、モニタしたデータバス800全体のバス帯域の結果を保持し、例えば、CPU600を介した読み出し要求に応じて、保持しているバス帯域の結果を出力する。帯域モニタ部730がモニタしたデータバス800のモニタ結果が、DRAM701のデータアクセスの効率を向上するための指針の情報となる。なお、帯域モニタ部730におけるバス帯域のモニタ方法に関する詳細な説明は、後述する。
【0048】
このように、画像処理装置10内の各処理ブロックは、それぞれの処理ブロックがDRAM701をアクセスする際に、DRAMコントローラ700にDMAアクセス要求を出す。そして、DRAMコントローラ700にDMAアクセス要求が受け付けられた後に、データバス800およびDRAMコントローラ700を介して、DRAM701へのデータ書き込み、またはDRAM701からのデータ読み出しを行う。
【0049】
ここで、帯域モニタ部730がモニタするデータバス800のバス帯域について説明するため、図2を参照してデータバス800を介したDRAM701のアクセスの一例について説明する。図2は、本第1の実施形態の画像処理装置10におけるDRAM701のアクセスの一例を模式的に示した図である。画像処理装置10における一連の処理においては、図2に示したように、実際にデータバス800を介してDRAM701にアクセスしているアクセス期間と、DRAM701にアクセスしていない休止期間とが存在する。
【0050】
帯域モニタ部730は、画像処理装置10における一連の処理において、実際にデータバス800にアクセスが行われている割合を表す実行帯域や、DRAM701をアクセスする際のロス時間をモニタする。
【0051】
帯域モニタ部730によるデータバス800の実行帯域のモニタは、単位時間あたりにデータバス800にアクセスが行われているアクセス期間とアクセスが行われていない休止期間とに基づいて行う。より具体的には、帯域モニタ部730は、各処理ブロックからのデータバス800のアクセス回数やアクセス時間などに基づいて、データバス800の実行帯域をモニタする。
【0052】
なお、帯域モニタ部730が、それぞれの処理ブロック毎のアクセス回数やアクセス時間などに基づいて、データバス800の詳細な実行帯域をモニタすることもできる。さらに詳細にデータバス800の実行帯域をモニタするため、帯域モニタ部730が、DRAM701のバンク毎のアクセス回数やアクセス時間、またはDRAM701の書き込みおよび読み出し毎のアクセス回数やアクセス時間をモニタすることもできる。
【0053】
また、逆に、帯域モニタ部730が、休止期間をモニタすることによって、DRAM701のアクセス時間を算出することもできる。なお、このときには、後述するロス時間のモニタを考慮することによって、より正確にデータバス800の実行帯域を算出することができる。
【0054】
次に、帯域モニタ部730がモニタするデータバス800のバス帯域について説明するため、図3〜図6を参照してデータバス800を介したDRAM701のアクセスにおけるロス時間の一例について説明する。通常のDRAMのアクセスにおいては、DRAMの書き込みまたは読み出しを行う際の手続において、様々なロス時間が存在する。このDRAM701をアクセスする際のロス時間は、データバス800のバス帯域を低下させる要因となる。DRAMのアクセスにおけるロス時間には、以下のようなものがある。
(1):バンクアクセスに起因するロス時間。
(2):DRAMの動作の切り替えに起因するロス時間。
(3):DRAMのリフレッシュ動作に起因するロス時間。
【0055】
バンクアクセスに起因するロス時間は、データバス800を介してDRAM701にアクセスする場合において、DRAM701にアクセスする順番によって発生してしまうロス時間である。図3〜図5は、本第1の実施形態の画像処理装置10におけるバンクアクセスに起因するバス帯域のロス時間の一例を模式的に示した図である。図3は、バンクインターリーブが有効に機能することによって、ロス時間が存在しない場合を示している。また、図4は、同一のバンクに連続してアクセスしたことによって、ロス時間が発生している場合を示している。また、図5は、DRAM701のアクセスを受け付けられない期間によって、ロス時間が発生している場合を示している。
【0056】
図3に示したように、バンク1動作〜バンク4動作においてバンクインターリーブが有効に機能している場合には、同一のバンクをアクセスする期間(例えば、バンク1書き込み(W)アクセスの期間)と、書き込み(Write)動作が終了した後にそのバンクのアクセスが受け付けられないビジー期間とが重複しないように、それぞれのバンクへのアクセスが順次行われる。この場合には、DRAM701のアクセスにおいて、ロス時間は存在しない。
【0057】
しかし、図4に示したように、バンク1動作によってバンク1の書き込み(Write)動作が終了した後に、再度バンク1動作を行うような場合には、先の書き込み(Write)動作が終了した後のビジー期間中は再度バンク1への先の書き込み(Write)動作を行うことができない。このため、先のバンク1動作によるビジー期間が、DRAM701のアクセスにおけるロス時間となる。以下の説明においては、ビジー状態によるロスの期間を、「バンクロス期間」という。
【0058】
また、図5に示したように、バンク3動作によってバンク3の書き込み(Write)動作が終了した後に、他のバンクのアクセス(図5においては、バンク4動作)を挟んで再度バンク3動作を行うような場合には、先のバンク3の書き込み(Write)動作が終了した後のビジー期間が終了していないことがある。このような場合にも、先のバンク3動作のビジー期間が、DRAM701のアクセスにおけるロス時間となり、バンクロス期間が存在する。
【0059】
また、DRAMの動作の切り替えに起因するロス時間は、DRAMでは、書き込み(Write)動作から読み出し(Read)動作への切り替え、または読み出し(Read)動作から書き込み(Write)動作への切り替えを行う際に発生してしまうロス時間である。図6は、本第1の実施形態の画像処理装置10におけるDRAMの動作切り替えに起因するバス帯域のロス時間の一例を模式的に示した図である。図6に示したように、DRAMでは、書き込み(Write)動作から読み出し(Read)動作への切り替え、または読み出し(Read)動作から書き込み(Write)動作への切り替えを行う場合、DRAMには、動作の切り替えに伴ってアクセスを受け付けられない期間が存在する。この動作の切り替えによる期間が、DRAM701のアクセスにおけるロス時間となる。以下の説明においては、動作の切り替えによるロスの期間を、「RW切替ロス期間」という。
【0060】
また、DRAMのリフレッシュ動作に起因するロス時間は、DRAMのリフレッシュ動作に伴うロス時間である。このリフレッシュ動作は、DRAMがデータを記憶する際に必要な動作ではあるが、このDRAMのリフレッシュ動作を行っているときには、処理ブロックがDRAMにアクセスすることができないため、DRAM701のアクセスにおけるロス時間となる。以下の説明においては、DRAMのリフレッシュ動作によるロスの期間を、「リフレッシュ期間」という。
【0061】
このように、データバス800を介してDRAM701にアクセスする場合には、DRAM701にアクセスする順番によって、ロス時間が発生してしまう。バスアービタ710は、DMAアクセス要求信号を出力するそれぞれの処理ブロックの中から、DMAアクセス要求を受け付ける処理ブロックを決定する際に、極力ロス時間が生じないようなDMAアクセス要求を選択する。このとき、バスアービタ710は、バンクインターリーブによって、例えば、バンク1動作の後には、バンク1以外のバンクのアクセスを行う処理ブロックからのDMAアクセス要求を選択する。また、例えば、書き込み(Write)動作の後には書き込み(Write)動作を行う処理ブロックのDMAアクセス要求を選択するなどによって、データバス800全体のバス帯域、すなわち、DRAM701のデータアクセスの効率を高めるように動作する。
【0062】
一方、バスアービタ710は、例えば、優先順位が高い処理ブロックからDMAアクセス要求が入力された場合には、ある程度DRAM701のデータアクセスの効率を犠牲にしても、優先順位の高い処理ブロックからのDMAアクセス要求を優先させて、必要とするバス帯域を確保する必要がある。これは、画像処理装置10においては、例えば、イメージセンサ100が出力した入力画像データを、表示デバイス401に逐次表示させる場合に、イメージセンサ100からの入力画像データの出力、および表示デバイス401への表示処理後の画像データの入力には、決められたタイミングがあるためである。
【0063】
このとき、バスアービタ710は、例えば、バンク1動作の後であっても、バンク1のアクセスを行う処理ブロックからのDMAアクセス要求を選択するなどによって、それぞれの処理ブロックが必要とするバス帯域を確保するように動作する。例えば、上述した画像処理装置10におけるイメージセンサ100が出力した入力画像データを、表示デバイス401に逐次表示させる場合には、前処理部200および表示処理部400からのDMAアクセス要求を優先して選択することによって、前処理部200および表示処理部400が必要とするバス帯域を確保するように動作する。
【0064】
帯域モニタ部730は、画像処理装置10における一連の処理において、上記に述べたようなロス時間をモニタする。
【0065】
帯域モニタ部730によるバンクアクセスに起因するロス時間のモニタは、単位時間あたりにバンクアクセスに起因するロス時間がどれだけ発生したかを示すため、単位時間あたりのバンクロス期間の総和を測定する。なお、帯域モニタ部730が、単位時間あたりにバンクロス期間が発生した回数や、バンクロス期間が発生したアクセスの回数を測定する構成としてもよい。
【0066】
帯域モニタ部730によるDRAMの動作の切り替えに起因するロス時間のモニタは、単位時間あたりにDRAM動作の切り替えに起因するロス時間がどれだけ発生したかを示すため、単位時間あたりのRW切替ロス期間の総和を測定する。なお、帯域モニタ部730が、単位時間あたりにRW切替ロス期間が発生した回数や、RW切替ロス期間が発生したアクセスの回数を測定する構成としてもよい。
【0067】
帯域モニタ部730によるDRAMのリフレッシュ動作に起因するロス時間のモニタは、単位時間あたりにDRAMのリフレッシュ動作に起因するロス時間がどれだけ発生したかを示すため、単位時間あたりのリフレッシュ期間の総和を測定する。なお、帯域モニタ部730が、単位時間あたりにリフレッシュ期間が発生した回数を測定する構成としてもよい。
【0068】
次に、データバス800のバス帯域をモニタする構成について説明する。図7は、本第1の実施形態の画像処理装置10に備えたDRAMコントローラ700の概略構成を示したブロック図である。図7では、帯域モニタ部730がデータバス800のバス帯域をモニタする際に必要な接続のみを示している。
【0069】
バスアービタ710は、データバス800に接続されているそれぞれの処理ブロックから入力されたDMAアクセス要求信号に応じて、バンクインターリーブや各処理ブロックの優先順位に基づいたDRAM701へのアクセスの調停を行う。このため、バスアービタ710は、DRAM701にアクセスする各処理ブロックのアクセスの状況などを把握することができる。また、バスアービタ710は、DRAM701にアクセスする処理ブロックから出力されるDRAM701のRW制御信号、アドレス、およびデータを、DRAMインタフェース部720に出力する。このため、バスアービタ710は、処理ブロックがDRAM701に対してどのようなアクセスを行うのかを把握することができる。バスアービタ710は、これら把握した情報に基づいた転送情報を、帯域モニタ部730に出力する。
【0070】
図7では、転送情報として、アクセス期間、バンクロス期間、RW切替ロス期間、およびリフレッシュ期間を、それぞれ帯域モニタ部730に出力している場合を示している。アクセス期間は、図2〜図6に示したように、いずれかの処理ブロックが実際にデータバス800を介してDRAM701にアクセスしているアクセス期間を表す。また、バンクロス期間は、図4および図5に示したように、バンクアクセスに起因するロスの期間を表す。また、RW切替ロス期間は、図6に示したように、DRAMの動作の切り替えに起因するロスの期間を表す。また、リフレッシュ期間は、DRAM701のリフレッシュ動作に起因するロスの期間を表す。バスアービタ710は、それぞれの期間を表す期間信号を、転送情報として帯域モニタ部730に出力する。
【0071】
帯域モニタ部730は、バスアービタ710から入力された転送情報のそれぞれの期間信号に基づいて、アクセス期間、バンクロス期間、RW切替ロス期間、およびリフレッシュ期間のそれぞれの時間を測定(モニタ)する。帯域モニタ部730は、結果測定カウンタ731と、単位時間生成カウンタ732と、結果保持レジスタ733とを備えている。
【0072】
単位時間生成カウンタ732は、例えば、一定の周波数のクロック信号に基づいてカウントすることによって、帯域モニタ部730が測定(モニタ)する一定の単位時間を生成する。そして、単位時間生成カウンタ732は、単位時間となる毎、すなわち、一定の時間が経過する毎に、単位時間の区切りを表す信号(以下、「単位時間タイミング信号」という)を、結果測定カウンタ731と結果保持レジスタ733とに出力する。
【0073】
なお、単位時間生成カウンタ732による単位時間の生成は、例えば、画像処理装置10の動作が開始されたときから開始する。また、例えば、画像処理装置10の動作モードが変更されたときに、現在生成している単位時間の生成を中止し、再度単位時間の生成を最初から開始することもできる。なお、単位時間生成カウンタ732が生成する単位時間の長さは、例えば、レジスタ設定によって変更可能な構成にすることもできる。
【0074】
結果測定カウンタ731は、バスアービタ710から入力されるそれぞれの転送情報に対応した測定カウンタを備えている。なお、以下の説明においては、結果測定カウンタ731内の各測定カウンタも、「結果測定カウンタ731」ということとする。それぞれの結果測定カウンタ731は、単位時間生成カウンタ732と同じ一定の周波数のクロック信号に基づいて、対応する期間信号が表す期間をカウント(カウントアップ)する。それぞれの結果測定カウンタ731のカウント値が、帯域モニタ部730に入力された転送情報の時間、すなわち、アクセス期間、バンクロス期間、RW切替ロス期間、およびリフレッシュ期間のそれぞれの時間を表すこととなる。それぞれの結果測定カウンタ731は、対応する転送情報のカウント値を、結果保持レジスタ733に出力する。
【0075】
なお、それぞれの結果測定カウンタ731は、単位時間生成カウンタ732から単位時間タイミング信号が入力される毎に、転送情報のカウント値が初期化され、再び最初からカウントを行う。これにより、それぞれの結果測定カウンタ731は、単位時間内の期間信号が表す期間をカウントすることとなる。
【0076】
結果保持レジスタ733は、結果測定カウンタ731から入力されるそれぞれのカウント値に対応した保持レジスタを備えている。なお、以下の説明においては、結果保持レジスタ733内の各保持レジスタも、「結果保持レジスタ733」ということとする。それぞれの結果保持レジスタ733は、単位時間生成カウンタ732から単位時間タイミング信号が入力される毎に、対応する結果測定カウンタ731から入力されるカウント値を保持する。それぞれの結果保持レジスタ733が保持したカウント値が、帯域モニタ部730に入力された転送情報の単位時間内の時間、すなわち、単位時間あたりのアクセス期間、バンクロス期間、RW切替ロス期間、およびリフレッシュ期間のそれぞれの時間を表すこととなる。それぞれの結果保持レジスタ733は、保持しているカウント値を、例えば、CPU600からの読み出し要求に応じて外部に出力する。
【0077】
なお、図7では、結果保持レジスタ733内に、それぞれの転送情報に対応した保持レジスタを1つずつ備えた場合の一例を示しているが、結果保持レジスタ733内に備える保持レジスタの構成は、図7に示した構成のみに限定されるものではない。例えば、それぞれの転送情報に対応した保持レジスタを3つずつ、すなわち、3セット分備え、過去3回分の単位時間のカウント値を保持する構成とすることもできる。また、この構成で、例えば、4回目の単位時間のカウント値を保持する場合には、1回目のカウント値を保持している保持レジスタに、4回目の単位時間のカウント値を上書きすることによって、最新の3回分の単位時間のカウント値を保持することもできる。
【0078】
次に、データバス800のバス帯域をモニタする動作について説明する。図8は、本第1の実施形態の画像処理装置10に備えた帯域モニタ部730によってデータバス800のバス帯域のロス時間をモニタするタイミングの一例を示したタイミングチャートである。図8では、単位時間生成カウンタ732が生成する単位時間タイミング信号の間隔、すなわち、単位時間が、20クロックである場合において、バスアービタ710から入力されるそれぞれの転送情報と、それぞれの転送情報に対応して動作する結果測定カウンタ731および結果保持レジスタ733の動作を、単位時間の2回分の期間示している。なお、図8においては、それぞれの転送情報における“High”レベルの期間が、アクセス期間、バンクロス期間、RW切替ロス期間、およびリフレッシュ期間であるものとして説明する。
【0079】
単位時間生成カウンタ732は、一定の周波数のクロック信号に基づいてカウントアップし、カウント値が「20」になる毎に、“High”レベルになる単位時間タイミング信号を出力する。なお、単位時間生成カウンタ732のカウント値は、“High”レベルの単位時間タイミング信号によって初期化されることによって、次のクロック信号のタイミングで、単位時間タイミング信号が“Low”レベルになる。この20クロックの期間が、帯域モニタ部730がモニタする単位時間となる。
【0080】
結果測定カウンタ731は、単位時間生成カウンタ732と同じクロック信号に基づいて、対応する転送情報の期間信号が“High”レベルの期間をカウント(カウントアップ)する。なお、結果測定カウンタ731のカウント値も、“High”レベルの単位時間タイミング信号によって初期化されることによって、次のクロック信号のタイミングで、再び最初からカウントを行う。
【0081】
図8では、アクセス期間に対応した結果測定カウンタ731が、1回目の単位時間で「15」までカウントし、2回目の単位時間で「10」までカウントした場合を示している。また、バンクロス期間に対応した結果測定カウンタ731が、1回目の単位時間で「5」までカウントし、2回目の単位時間ではカウント値が「0」である場合を示している。また、RW切替ロス期間に対応した結果測定カウンタ731が、1回目の単位時間でがカウント値が「0」であり、2回目の単位時間で「5」までカウントした場合を示している。また、リフレッシュ期間に対応した結果測定カウンタ731が、1回目の単位時間でがカウント値が「0」であり、2回目の単位時間で「5」までカウントした場合を示している。
【0082】
結果保持レジスタ733は、単位時間タイミング信号が“High”レベルのときに、結果測定カウンタ731のカウント値を保持する。すなわち、1つの単位時間の間、結果測定カウンタ731が前回の単位時間中にカウントしたカウント値を保持する。
【0083】
図8では、アクセス期間に対応した結果保持レジスタ733は、1回目の単位時間中に前の単位時間のカウント値「10」を保持し、2回目の単位時間中に1回目の単位時間のカウント値「15」を保持し、次の単位時間に2回目の単位時間のカウント値「10」を保持する場合を示している。また、バンクロス期間に対応した結果保持レジスタ733は、1回目の単位時間中に前の単位時間のカウント値「6」を保持し、2回目の単位時間中に1回目の単位時間のカウント値「5」を保持し、次の単位時間に2回目の単位時間のカウント値「0」を保持する場合を示している。また、RW切替ロス期間に対応した結果保持レジスタ733は、1回目の単位時間中に前の単位時間のカウント値「4」を保持し、2回目の単位時間中に1回目の単位時間のカウント値「0」を保持し、次の単位時間に2回目の単位時間のカウント値「5」を保持する場合を示している。また、リフレッシュ期間に対応した結果保持レジスタ733は、1回目の単位時間中に前の単位時間のカウント値「0」を保持し、2回目の単位時間中に1回目の単位時間のカウント値「0」を保持し、次の単位時間に2回目の単位時間のカウント値「5」を保持する場合を示している。
【0084】
上記に述べたように、帯域モニタ部730は、バスアービタ710から入力された転送情報が表すそれぞれの期間を、単位時間毎にカウントして保持する。この帯域モニタ部730が保持しているカウント値が、データバス800に接続されているそれぞれの処理ブロックがDRAM701にアクセスする際の、データアクセスの効率を向上するための指針の情報となる。帯域モニタ部730内の結果保持レジスタ733に保持されたそれぞれのカウント値は、例えば、CPU600を介して外部に出力することによって、画像処理装置10の開発者が取得することができる。
【0085】
なお、図8では、単位時間が20クロックである場合の一例を示しているが、実際にデータアクセスの効率を向上するために有用な情報を取得するためには、さらに長い時間の単位時間が必要となる場合がある、この場合には、例えば、単位時間生成カウンタ732に備えた単位時間の長さを設定するレジスタに、必要な単位時間の設定を行うことによって、必要長さの単位時間でのカウント値を得ることができる。
【0086】
ここで、取得したカウント値によって得られる単位時間あたりのアクセス期間、バンクロス期間、RW切替ロス期間、およびリフレッシュ期間の情報、すなわち、データバス800のモニタ結果の活用方法として、バスアービタ710のバンクインターリーブや各処理ブロックの優先順位の設定に適用する場合のいくつかの例について説明する。
【0087】
(ケース1):帯域モニタ部730がモニタした単位時間あたりの全体のロス時間が大きい場合、すなわち、バンクロス期間、RW切替ロス期間、およびリフレッシュ期間に対応したそれぞれのカウント値の合計が大きい場合には、各処理ブロックの優先順位の設定が間違っている可能性がある。例えば、必要以上に優先順位が高い処理ブロックがあった場合、バスアービタ710がデータバス800全体のバス帯域、すなわち、DRAM701のデータアクセスの効率を犠牲にして、必要以上に優先順位が高い処理ブロックのバス帯域を優先して確保してしまっているなどの原因が考えられる。この場合には、例えば、各処理ブロックの優先度を見直して、最適な優先順位を設定することによって、全体のロス時間の改善が期待できる。
【0088】
(ケース2):帯域モニタ部730がモニタした単位時間あたりのロス時間の内、特にバンクロス期間に対応したカウント値の合計が大きい場合には、優先順位の高い処理ブロックのDRAM701のアドレス発生方法が効率的でない可能性がある。例えば、優先順位が高い処理ブロックが、バンク1→バンク1→バンク1→・・・というように、同一のバンクに連続してアクセスしてしまっていることによって、DRAM701のビジー期間が多くなっているなどの原因が考えられる(図4参照)。この場合には、例えば、優先順位が高い処理ブロックのアドレスが、バンク1→バンク2→バンク3→・・・というように、それぞれのバンクに順次アクセスするようなアドレス発生方法に変更することによって、バンクインターリーブが有効に機能し、全体のロス時間の改善が期待できる(図3参照)。なお、この場合において、優先順位の高い処理ブロックが複数ある場合には、異なるバンクのアクセスを優先的に受け付けるように、複数の処理ブロック間でアドレス発生方法を調整してもよい。
【0089】
(ケース3):帯域モニタ部730がモニタした単位時間あたりのロス時間の内、特にRW切替ロス期間に対応したカウント値の合計が大きい場合には、優先順位の高い処理ブロックのDRAM701に対する動作の切り替えが頻繁に起こっている可能性がある。例えば、優先順位が高い処理ブロックが、書き込み(Write)動作→読み出し(Read)動作→書き込み(Write)動作→・・・というように、書き込み(Write)動作と読み出し(Read)動作とが交互に行われているなどの原因が考えられる(図6参照)。この場合には、例えば、優先順位が高い処理ブロックのDRAM701に対する動作の切り替えが、書き込み(Write)動作→書き込み(Write)動作→・・・読み出し(Read)動作→読み出し(Read)動作→・・・というように、同じ動作が連続して行われるように動作の順番を変更することによって、DRAM701の動作が切り替わる回数が減少し、全体のロス時間の改善が期待できる。なお、この場合において、優先順位の高い処理ブロックが複数ある場合には、書き込み(Write)動作や読み出し(Read)動作が連続するように、複数の処理ブロック間でDRAM701に対する動作を調整してもよい。
【0090】
(ケース4):帯域モニタ部730がモニタした単位時間あたりの全体のロス時間と、単位時間あたりのアクセス期間との総和が小さい場合、すなわち、アクセス期間、バンクロス期間、RW切替ロス期間、およびリフレッシュ期間に対応したそれぞれのカウント値の合計が小さい場合には、単に、DRAM701にアクセスしている処理ブロックが少ない、または各処理ブロックのアクセス数が少ないなど考えられる。この場合には、データバス800全体のバス帯域は問題ないと考えることができる。ただし、特定の単位時間のみ総和が小さく別の単位時間の総和が大きいなど、一連の処理において総和の大きさに偏りがある場合には、総和が大きい単位時間で行っている処理を減らし、総和が小さい単位時間で行う処理を増やすなど、画像処理装置10の全体の処理を時間軸方向に最適化することができる可能性もある。このように、時間軸方向の処理の最適化を行うことによって、一連の処理の特定の時間におけるデータバス800のバス帯域の圧迫の改善が期待できる。
【0091】
(ケース5):帯域モニタ部730が、DRAM701のバンク毎のアクセス回数を単位時間毎にモニタした場合において、それぞれのバンクでアクセス回数の偏りがある場合には、各処理ブロックが発生するDRAM701のアドレスのバランスが悪い可能性がある。例えば、バンク1のアクセス回数は多いが、バンク2のアクセス回数が少ない場合には、バンク1のアクセスでのロス時間が多くなり、全体のロス時間が増加してしまうことも考えられる。すなわち、極端にアクセス回数が多いバンクと、極端にアクセス回数が少ないバンクとがある場合には、バンクインターリーブが有効に機能しないという懸念がある。この場合には、アクセス回数が多いバンクのアクセスを減らし、アクセス回数が少ないバンクのアクセス回数を増やすなど、DRAM701の各バンクのアクセスを最適化することによって、バンクインターリーブを有効に機能させ、全体のロス時間の改善が期待できる。
【0092】
<第2の実施形態>
次に、本第2の実施形態の画像処理装置について説明する。図9は、本第2の実施形態における画像処理装置の概略構成を示したブロック図である。図9において、画像処理装置20は、イメージセンサ100と、前処理部200と、画像処理部300と、表示処理部400と、表示デバイス401と、カードインタフェース部500と、記録媒体501と、CPU600と、DRAMコントローラ900と、DRAM701と、帯域モニタ部930とを備えている。
【0093】
図9に示した画像処理装置20は、図1に示した第1の実施形態の画像処理装置10内のDRAMコントローラ700がDRAMコントローラ900に代わり、さらに、帯域モニタ930がデータバス800に接続された構成となっているのみであり、その他の構成要素は、画像処理装置10と同様である。従って、本第2の実施形態の画像処理装置20の構成要素において、図1に示した第1の実施形態の画像処理装置10と同様の構成要素には、同一の符号を付加して詳細な説明は省略する。
【0094】
DRAMコントローラ900は、図1に示したDRAMコントローラ700と同様に、データバス800に接続されている画像処理装置20内の複数の処理ブロックからのDMAアクセス要求に応じて、接続されているDRAM701へのデータの転送(書き込み)、およびDRAM701からのデータの取得(読み出し)を行う。DRAMコントローラ900は、バスアービタ710と、DRAMインタフェース部720とを備えている。なお、バスアービタ710と、DRAMインタフェース部720とは、図1に示したDRAMコントローラ700内のバスアービタ710と、DRAMインタフェース部720と同様である。ただし、バスアービタ710は、転送情報を出力しない。
【0095】
帯域モニタ部930は、図1に示したDRAMコントローラ700内の帯域モニタ部730と同様に、データバス800全体のバス帯域をモニタする。ただし、帯域モニタ部930は、接続されているデータバス800の情報に基づいて、バス帯域をモニタする。なお、データバス800には、図1に示した画像処理装置10と同様に、各処理ブロックがDMAアクセスを行うための、DMAアクセス要求信号、DMAアクセス受け付け信号、読み出し/書き込み制御信号(RW制御信号)、アドレス、およびデータなどの信号が含まれている。
【0096】
帯域モニタ部930は、図1に示した帯域モニタ部730と同様に、モニタしたデータバス800全体のバス帯域の結果を保持し、例えば、CPU600を介した読み出し要求に応じて、保持しているバス帯域の結果を出力する。帯域モニタ部930がモニタしたデータバス800のモニタ結果が、DRAM701のデータアクセスの効率を向上するための指針の情報となる。なお、帯域モニタ部930の構成およびバス帯域のモニタ方法に関する詳細な説明は、後述する。
【0097】
ここで、帯域モニタ部930と図1に示した帯域モニタ部730との違いについて説明する。図1に示した画像処理装置10では、DRAMコントローラ700内に帯域モニタ部730を備えた構成であるため、帯域モニタ部730は、同じDRAMコントローラ700内のバスアービタ710から入力された転送情報に基づいて、データバス800全体のバス帯域をモニタすることができた。しかし、例えば、画像処理装置20内の前処理部200、画像処理部300、表示処理部400、カードインタフェース部500、CPU600、およびDRAMコントローラ900を備えたシステムLSIを開発する場合には、DRAMコントローラ900として、すでに市販されている汎用のIPモジュールなどを使用することもある。この場合には、DRAMコントローラ900内のバスアービタ710から転送情報を取得するために、提供されているDRAMコントローラのIPモジュールに変更を加えることが困難である。そもそも、IPモジュールの内部情報が公開されていないこともある。
【0098】
画像処理装置20では、図9に示した構成からもわかるように、帯域モニタ部930を、DRAMコントローラ900の外部で、データバス800に接続している。このため、画像処理装置20では、DRAMコントローラ900内のバスアービタ710に変更を加えずに、データバス800に含まれるそれぞれの信号に基づいて、データバス800全体のバス帯域をモニタすることができる。
【0099】
また、データバスのプロトコルは、AXI(Advanced eXtensible Interface)、OCP(Open Core Protocol)など、汎用のプロトコルとして定義されている場合もある。帯域モニタ部930は、データバス800のプロトコルに準じてバス帯域をモニタする。
【0100】
このように、データバスのプロトコルに準じてバス帯域をモニタする仕組みを帯域モニタ部930に搭載しておくことによって、画像処理装置20のみではなく、様々なシステムのデータバスのバス帯域のモニタに適用することもできる。例えば、システムLSIを開発する際のシミュレータツールなどにも、容易に適用することができる。
【0101】
次に、帯域モニタ部930の構成について説明する。図10は、本第2の実施形態の画像処理装置20に備えた帯域モニタ部930の概略構成を示したブロック図である。帯域モニタ部930は、バス状態判定部931と、結果測定カウンタ731と、単位時間生成カウンタ732と、結果保持レジスタ733とを備えている。帯域モニタ部930は、図7に示した帯域モニタ部730に、さらに、バス状態判定部931を備えた構成である。その他の構成要素は、帯域モニタ部730と同様であるため、同一の符号を付加して詳細な説明は省略する。
【0102】
バス状態判定部931は、データバス800に含まれるそれぞれの信号をモニタし、モニタしたそれぞれの信号に基づいて、データバス800に接続されている各処理ブロックによるDRAM701へのアクセスを判定(類推)する。より具体的には、バス状態判定部931は、データバス800に接続されている各処理ブロックから出力されたDMAアクセス要求信号、およびDRAMコントローラ900内のバスアービタ710から出力されたDMAアクセス受け付け信号に基づいて、いずれの処理ブロックのDMAアクセス要求が受け付けられたのかを判定する。
【0103】
また、バス状態判定部931は、DMAアクセス要求が受け付けられた処理ブロックから出力された、DRAM701をアクセスするためのRW制御信号やアドレスなどに基づいて、DRAM701に対するアクセス種別を判定する。このアクセス種別は、処理ブロックによるDRAM701のいずれのバンクへのアクセスなのか、そのアクセスはデータの書き込みまたはデータの読み出しのいずれのアクセスなのかを表す情報である。
【0104】
また、バス状態判定部931は、判定したアクセス種別に基づいた転送情報を、結果測定カウンタ731に出力する。バス状態判定部931が出力する転送情報は、第1の実施形態においてバスアービタ710が帯域モニタ部730に出力した転送情報と同様の情報である。
【0105】
結果測定カウンタ731、単位時間生成カウンタ732、および結果保持レジスタ733は、第1の実施形態の帯域モニタ部730と同様に、バス状態判定部931から入力された転送情報に基づいて、データバス800のアクセス期間、バンクロス期間、RW切替ロス期間などのそれぞれの期間を、単位時間毎にカウントして保持する。
【0106】
ここで、バス状態判定部931が転送情報を出力する方法について説明するため、図11〜図13を参照して各処理ブロックによるDRAM701へのアクセスの一例について説明する。なお、図11〜図13においては、各処理ブロックから出力されるそれぞれのDMAアクセス要求信号が“High”レベルでDMAアクセス要求がされているものとし、全てのDMAアクセス要求信号を1つの信号にまとめて(OR(論理和)して)表す。すなわち、DMAアクセス要求は、データバス800に接続されているいずれかの処理ブロックからDMAアクセス要求信号が出力されていることを表している。また、DMAアクセス受け付け、およびアクセス種別も同様にまとめて表す。すなわち、DMAアクセス受け付けは、データバス800に接続されているいずれかの処理ブロックのDMAアクセス要求が受け付けられたことを表し、アクセス種別は、受け付けられた処理ブロックによるDRAM701のアクセス種別を表している。
【0107】
図11は、本第2の実施形態の画像処理装置20に備えた帯域モニタ部930内のバス状態判定部931によってデータバス800のバス帯域のロス時間を判定した場合の一例を模式的に示した図である。通常、ロス時間がなくDRAM701のアクセスが行われる場合には、一定の間隔でDMAアクセスが受け付けられる。バス状態判定部931は、DMAアクセスが受け付けられた間隔に基づいて、ロス時間を判定する。
【0108】
バス状態判定部931は、まず、1回目のDMAアクセス受け付けと2回目のDMAアクセス受け付けとの間隔を測定する。そして、ここで測定した間隔を、ロス時間がない場合のDMAアクセス受付間隔(以下、「基準リクエスト受付間隔」という)と仮定する。その後、2回目のDMAアクセス受け付けと3回目のDMAアクセス受け付けとの間隔というように、順次DMAアクセスが受け付けられた間隔を測定する。そして、バス状態判定部931は、現在のDMAアクセス受け付けの間隔が、基準リクエスト受付間隔よりも長い場合に、基準リクエスト受付間隔を超えている期間を、ロス時間と判定する。図11では、5回目のアクセス(アクセス種別=バンク4の書き込み(W)アクセス)のときに、ロス時間があると判定された場合を示している。
【0109】
そして、バス状態判定部931は、前回のアクセス種別と今回のアクセス種別とがDRAM701のどのバンクにアクセスするものであったかを確認する。これにより、ロス時間の原因を特定することができる。そして、特定したロス時間の原因に応じた転送情報を、出力する。図11では、バンク1書き込み(W)アクセスが終了した後に、再度バンク1書き込み(W)アクセスが行われていることがロス時間の原因であるため、バンクロス期間を表す転送情報が出力されている場合を示している。
【0110】
図12は、本第2の実施形態の画像処理装置20に備えた帯域モニタ部930内のバス状態判定部931によって各処理ブロックの休止期間を判定した場合の一例を模式的に示した図である。バス状態判定部931は、データバス800に接続されているいずれかの処理ブロックからDMAアクセス要求信号が出力されているときに、順次DMAアクセス受け付けの間隔を測定する。そして、バス状態判定部931は、データバス800に接続されている全ての処理ブロックからDMAアクセス要求信号が出力されていない場合には、その期間を休止期間と判定し、いずれの転送情報も出力しない。図12では、2回目のアクセス(アクセス種別=バンク2の書き込み(W)アクセス)〜3回目のアクセス(アクセス種別=バンク3の書き込み(W)アクセス)までの期間が休止期間であると判定された場合を示している。
【0111】
しかし、データバス800に接続されている全ての処理ブロックからDMAアクセス要求信号が出力されていない場合でも、その期間が短いときには、最速でDRAM701にアクセスすることができることもある。例えば、次のDMAアクセス要求信号が、DMAアクセス受け付けを行う1サイクル手前までに出力された場合には、ロス時間がなくDRAM701にアクセスすることができる。そこで、バス状態判定部931では、ロス時間がなくDRAM701にアクセスすることができる期間を、DMAアクセス要求がない状態を無効とする期間(以下、「リクエストネゲート無効期間」という)として予め設定する。そして、このリクエストネゲート無効期間内に、いずれかの処理ブロックからDMAアクセス要求信号が出力された場合には、休止期間の判定を無視する。
【0112】
図13は、本第2の実施形態の画像処理装置20に備えた帯域モニタ部930内のバス状態判定部931によってデータバスのバス帯域のロス時間を判定した場合の別の一例を模式的に示した図である。リクエストネゲート無効期間を設定することによって、図13に示したように、バス状態判定部931の内部で、仮想のDMAアクセス要求を生成し、実際のDMAアクセス要求信号が“Low”レベルとなっている場合でも、仮想的にDMAアクセス要求が継続しているものとして処理することができる。図13では、基準リクエスト間隔の1サイクル手前までの期間を、リクエストネゲート無効期間に設定した場合において、1回目と2回目とのDMAアクセス要求がない状態が無効とされた場合を示している。
【0113】
これにより、図13では、1回目のアクセス(アクセス種別=バンク1の書き込み(W)アクセス)〜4回目のアクセス(アクセス種別=バンク4の書き込み(W)アクセス)までが連続して要求されているものとして処理されることとなる。これにより、図13に示したように、3回目のアクセス(アクセス種別=バンク2の書き込み(W)アクセス)のときに、ロス時間があると判定される。また、図13に示した3回目のDMAアクセス要求がない状態のように、全ての処理ブロックからDMAアクセス要求信号が出力されていない期間がリクエストネゲート無効期間よりも長い場合には、仮想のDMAアクセス要求もないものとして処理し、休止期間の判定を行う。
【0114】
上記に述べたように、バス状態判定部931は、DMAアクセス要求の有無、DMAアクセス受け付けの間隔によってロス時間を判定する。そして、前回のアクセス種別と今回のアクセス種別とによって、ロス時間の種類を特定する。これにより、バス状態判定部931は、第1の実施形態においてバスアービタ710が帯域モニタ部730に出力した転送情報と同様の情報を出力することができる。
【0115】
なお、上記の一例では、バンクロス期間を表す転送情報が出力される場合について説明したが、アクセス期間やRW切替ロス期間を表す転送情報も同様の判定によって出力することができる。より具体体には、休止期間以外の期間を、アクセス期間を表す転送情報として出力する。また、DMAアクセス受け付けの間隔によって判定したロス時間が、例えば、バンク1書き込み(W)アクセスが終了した後に、バンク2読み出し(R)アクセスが行われていることがロス時間の原因であると判定した場合に、RW切替ロス期間を表す転送情報を出力する。
【0116】
なお、上記の一例では、基準リクエスト間隔は、DRAM701に対する全てのアクセスで一定の間隔であるものとしているが、実際のリクエスト間隔は、DRAM701に対するアクセス種別に応じて異なることも考えられる。この場合には、基準リクエスト間隔を可変にする構成を適用し、アクセス種別に応じた基準リクエスト間隔に基づいてロス時間を判定する構成とすることもできる。例えば、1転送単位(1バースト)で4つのデータを転送(書き込みまたは読み出し)するDRAM701のアクセス(4転送アクセス)と、1転送単位で8つのデータを転送するDRAM701のアクセス(8転送アクセス)とが混在している場合を考える。この場合には、4転送アクセスのDMAアクセス要求を受け付けたときと、8転送アクセスのDMAアクセス要求を受け付けたときとでは、次のDMAアクセス受け付けまでの時間が異なるので、1転送単位で転送するデータの数に応じて、基準リクエスト間隔を変更する。
【0117】
また、前回のアクセス種別と今回のアクセス種別とによっては、ロス時間がなくDRAM701にアクセスすることができる期間が異なる、すなわち、最速でDRAM701にアクセスすることができるDMAアクセス受け付けの間隔が異なることも考えられる。例えば、書き込み(W)アクセス→読み出し(R)アクセスのときと、読み出し(R)アクセス→書き込み(W)アクセスのときと、書き込み(W)アクセス→書き込み(W)アクセスのときと、読み出し(R)アクセス→読み出し(R)アクセスのときとでは、最速でDRAM701にアクセスすることができるDMAアクセス受け付けの間隔が異なることが考えられる。この場合には、リクエストネゲート無効期間を可変にする構成を適用し、前回のアクセス種別と今回のアクセス種別とに応じて、休止期間の判定を無視する期間を切り換える構成とすることもできる。
【0118】
なお、図10に示した帯域モニタ部930のブロック図では、第1の実施形態においてバスアービタ710が出力したリフレッシュ期間を表す転送情報に関する構成を記載していない。これは、DRAMのリフレッシュ動作は、データバスには現れてこないためである。このため、DRAM701のリフレッシュ動作によるロス時間は、バンクロス期間またはRW切替ロス期間として、バス状態判定部931に判定されることになる。ただし、バス状態判定部931がロス時間の原因を判定する際に、例えば、前回のアクセス種別と今回のアクセス種別とに加えて、さらに前々回のアクセス種別がDRAM701のどのバンクにアクセスするものであったかを確認することによって、バンクロス期間またはRW切替ロス期間として判定されたロス時間を、リフレッシュ期間に振り分けてもよい。
【0119】
より具体的には、前々回がバンク1書き込み(W)アクセス、前回がバンク2書き込み(W)アクセス、今回がバンク3書き込み(W)アクセスであった場合には、今回のDRAM701のアクセスのときのロス時間は、リフレッシュ期間であると判定することができる。なお、前々回がバンク1書き込み(W)アクセス、前回がバンク2書き込み(W)アクセス、今回がバンク2書き込み(W)アクセスであった場合には、今回のDRAM701のアクセスのときのロス時間は、バンクロス期間であると判定される。また、前々回がバンク1書き込み(W)アクセス、前回がバンク2書き込み(W)アクセス、今回がバンク3読み出し(R)アクセスであった場合には、今回のDRAM701のアクセスのときのロス時間は、RW切替ロス期間であると判定される。
【0120】
上記に述べたとおり、本発明を実施するための形態によれば、単位時間あたりのDRAMアクセスのアクセス期間やロス時間をモニタすることによって、データバス全体のバス帯域を測定することができる。そして、画像処理装置の開発者は、バス帯域の測定結果を、画像処理装置においてDRAMのデータアクセスの効率を向上するための指針の情報として取得することができる。すなわち、画像処理装置の開発者は、現在、どのような頻度でDRAMのアクセスが行われているか、現在、どのようなDRAMアクセスのロス時間が発生しているかという、画像処理装置の内部のアクセス状態を把握することができる。このことにより、画像処理装置の開発者は、画像処理装置に備えるバスアービタに設定する各処理ブロックの優先順位、各処理ブロックが発生するアドレスの発生方法、各処理ブロックによって行われるDRAMの書き込み動作および読み出し動作の順番などを、適切な設定に変更することができ、画像処理装置のシステム開発の効率を向上させることができる。
【0121】
なお、本実施形態においては、第1の実施形態において、DRAMコントローラ700内のバスアービタ710が内部の状態を表す転送情報を出力し、帯域モニタ部730が、入力された転送情報に基づいてロス期間を単位時間毎にカウントする構成を示した。また、第2の実施形態において、帯域モニタ部930内のバス状態判定部931が、接続されたデータバス800に含まれるそれぞれの信号をモニタすることによって、DRAM701へのアクセスを判定した転送情報を出力する構成を示した。そして、第2の実施形態の構成は、汎用のIPモジュールを使用するなど、IPモジュールに含まれるバスアービタの変更が困難である場合や、バスアービタの情報が公開されていない場合に、適していることを示した。また、DRAMコントローラ700または帯域モニタ部930を、画像処理装置に適用した場合について示した。
【0122】
しかし、本実施形態において示したDRAMコントローラ700または帯域モニタ部930のような、データバスのバス帯域をモニタする構成は、本実施形態に示した適用方法に限定されるものではない。例えば、システムLSIのシミュレータや、システムLSIや画像処理装置を仮想的に実現するエミュレータなどの開発ツールで、データバスの帯域状況を測定するような、バス解析プログラムなどにも適用することができる。
【0123】
その際には、図7に示したDRAMコントローラ700、または図10に示した帯域モニタ部930による処理を実現するためのプログラムを、コンピュータ読み取り可能な記録媒体に記録して、当該記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、DRAMコントローラ700または帯域モニタ部930に係る上述した種々の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものであってもよい。また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、フラッシュメモリ等の書き込み可能な不揮発性メモリ、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【0124】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(例えばDRAM(Dynamic Random Access Memory))のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【0125】
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。
【符号の説明】
【0126】
10,20・・・画像処理装置
100・・・イメージセンサ
200・・・前処理部
300・・・画像処理部
400・・・表示処理部
401・・・表示デバイス
500・・・カードインタフェース部
501・・・記録媒体
600・・・CPU
700,900・・・DRAMコントローラ
710・・・バスアービタ(共通バス調停部)
720・・・DRAMインタフェース部
730,930・・・帯域モニタ部(測定部)
731・・・結果測定カウンタ(状態測定カウンタ部)
732・・・単位時間生成カウンタ(単位時間生成部)
733・・・結果保持レジスタ(結果保持レジスタ部)
931・・・バス状態判定部(バス状態判定部)
701・・・DRAM(メモリ)
800・・・データバス(共通バス)
【特許請求の範囲】
【請求項1】
共通バスに接続された複数の処理ブロックが、複数のバンクを有するアドレス空間からなるメモリとの間で、前記共通バスを介してデータの受け渡しを行う際の、該データの受け渡しの状態を表す転送情報に基づいて、予め定められた一定の単位時間あたりの前記共通バス上のデータの帯域を測定する測定部、
を備えることを特徴とするバスモニタ装置。
【請求項2】
前記測定部は、
所定のタイミング信号に基づいて前記単位時間の区切りを表す単位時間タイミング信号を生成する単位時間生成部と、
前記タイミング信号に基づいて、前記転送情報が、データの受け渡しにおける所定の状態を表している期間を計測する状態測定カウンタ部と、
前記単位時間タイミング信号が前記単位時間の区切りを表すタイミングで、前記状態測定カウンタ部が計測した結果を保持する結果保持レジスタ部と、
を備える、
ことを特徴とする請求項1に記載のバスモニタ装置。
【請求項3】
前記転送情報は、
前記測定部の外部に配置され、前記共通バスに接続された複数の前記処理ブロックから出力されるデータアクセスの要求を調停し、前記メモリとの間でのデータの受け渡しを受け付ける共通バス調停部が、前記共通バスに接続された複数の前記処理ブロックの内、データの受け渡しを受け付けたいずれか1つの処理ブロックからの前記メモリへのデータアクセスの状況を表す情報である、
ことを特徴とする請求項2に記載のバスモニタ装置。
【請求項4】
前記測定部は、
前記共通バスに含まれる信号に基づいて、前記共通バスに接続された複数の前記処理ブロックの内、データの受け渡しが受け付けられたいずれか1つの処理ブロックが、前記メモリとの間で行うデータアクセスの状況を判定し、該判定結果を前記転送情報として出力するバス状態判定部を、さらに備える、
ことを特徴とする請求項2に記載のバスモニタ装置。
【請求項5】
前記バス状態判定部は、
前記共通バスに含まれる、前記共通バスに接続された複数の前記処理ブロックからのデータアクセスの要求に応じて出力される、データアクセスを受け付けたことを表すデータアクセス受け付け信号の間隔に基づいて、データアクセスが受け付けられないロスの時間を判定し、
前記共通バスに含まれる、前記共通バスに接続された複数の前記処理ブロックから出力されるデータアクセスの要求を表すデータアクセス要求信号と、前記データアクセス受け付け信号とに基づいて、データアクセスが受け付けられた処理ブロックを判定し、
該データアクセスが受け付けられた処理ブロックから出力される前記メモリのアドレス信号と、前記メモリへのデータの書き込みまたは前記メモリからのデータの読み出しを表す制御信号とに基づいて、該データアクセスが受け付けられた処理ブロックが前記メモリとの間で行うデータアクセスの状況を判定し、
該判定したデータアクセスの状況に基づいて、判定した前記ロスの時間の種類を判定し、
該判定した前記ロスの時間の種類に応じた前記転送情報を出力する、
ことを特徴とする請求項4に記載のバスモニタ装置。
【請求項6】
前記転送情報は、
前記メモリに対して行われるバンクインターリーブのアクセスにおいて、前記メモリが有するバンクにアクセスする際に発生するデータアクセスが受け付けられないロスの期間を表すロス量情報を含み、
前記測定部は、
前記ロス量情報に基づいて、該ロスの時間、または該ロスの回数を測定する、
ことを特徴とする請求項3から請求項5のいずれか1の項に記載のバスモニタ装置。
【請求項7】
前記転送情報は、
前記メモリに対するデータアクセスに応じて、該メモリが読み出し動作から書き込み動作に切り替わるとき、または該メモリが書き込み動作から読み出し動作に切り替わるときに発生するデータアクセスが受け付けられないロスの期間を表すロス量情報を含み、
前記測定部は、
前記ロス量情報に基づいて、該ロスの時間、または該ロスの回数を測定する、
ことを特徴とする請求項3から請求項5のいずれか1の項に記載のバスモニタ装置。
【請求項8】
前記転送情報は、
前記メモリに対して行われるリフレッシュ動作によって発生するデータアクセスが受け付けられないロスの期間を表すロス量情報を含み、
前記測定部は、
前記ロス量情報に基づいて、該ロスの時間、または該ロスの回数を測定する、
ことを特徴とする請求項3から請求項5のいずれか1の項に記載のバスモニタ装置。
【請求項9】
前記転送情報は、
前記メモリに対してデータアクセスが行われているデータアクセスの期間を表すアクセス量情報を含み、
前記測定部は、
前記アクセス量情報に基づいて、該データアクセスの時間、または該データアクセスの回数を測定する、
ことを特徴とする請求項3から請求項5のいずれか1の項に記載のバスモニタ装置。
【請求項10】
前記アクセス量情報は、
前記メモリのバンク毎のデータアクセスの期間を表し、
前記測定部は、
前記アクセス量情報に基づいて、前記メモリのバンク毎の該データアクセスの時間、または該データアクセスの回数を測定する、
ことを特徴とする請求項9に記載のバスモニタ装置。
【請求項11】
前記アクセス量情報は、
前記メモリの読み出し動作毎および書き込み動作毎のデータアクセスの期間を表し、
前記測定部は、
前記アクセス量情報に基づいて、前記メモリの読み出し動作毎および書き込み動作毎の該データアクセスの時間、または該データアクセスの回数を測定する、
ことを特徴とする請求項9に記載のバスモニタ装置。
【請求項12】
共通バスに接続された複数の処理ブロックが、複数のバンクを有するアドレス空間からなるメモリとの間で、前記共通バスを介してデータの受け渡しを行う際の、該データの受け渡しの状態を表す転送情報に基づいて、予め定められた一定の単位時間あたりの前記共通バス上のデータの帯域を測定する測定ステップ、
を含むことを特徴とするバスモニタ方法。
【請求項13】
共通バスに接続された複数の処理ブロックが、複数のバンクを有するアドレス空間からなるメモリとの間で、前記共通バスを介してデータの受け渡しを行う際の、該データの受け渡しの状態を表す転送情報に基づいて、予め定められた一定の単位時間あたりの前記共通バス上のデータの帯域を測定する測定ステップ、
をコンピュータに実行させることを特徴とするプログラム。
【請求項1】
共通バスに接続された複数の処理ブロックが、複数のバンクを有するアドレス空間からなるメモリとの間で、前記共通バスを介してデータの受け渡しを行う際の、該データの受け渡しの状態を表す転送情報に基づいて、予め定められた一定の単位時間あたりの前記共通バス上のデータの帯域を測定する測定部、
を備えることを特徴とするバスモニタ装置。
【請求項2】
前記測定部は、
所定のタイミング信号に基づいて前記単位時間の区切りを表す単位時間タイミング信号を生成する単位時間生成部と、
前記タイミング信号に基づいて、前記転送情報が、データの受け渡しにおける所定の状態を表している期間を計測する状態測定カウンタ部と、
前記単位時間タイミング信号が前記単位時間の区切りを表すタイミングで、前記状態測定カウンタ部が計測した結果を保持する結果保持レジスタ部と、
を備える、
ことを特徴とする請求項1に記載のバスモニタ装置。
【請求項3】
前記転送情報は、
前記測定部の外部に配置され、前記共通バスに接続された複数の前記処理ブロックから出力されるデータアクセスの要求を調停し、前記メモリとの間でのデータの受け渡しを受け付ける共通バス調停部が、前記共通バスに接続された複数の前記処理ブロックの内、データの受け渡しを受け付けたいずれか1つの処理ブロックからの前記メモリへのデータアクセスの状況を表す情報である、
ことを特徴とする請求項2に記載のバスモニタ装置。
【請求項4】
前記測定部は、
前記共通バスに含まれる信号に基づいて、前記共通バスに接続された複数の前記処理ブロックの内、データの受け渡しが受け付けられたいずれか1つの処理ブロックが、前記メモリとの間で行うデータアクセスの状況を判定し、該判定結果を前記転送情報として出力するバス状態判定部を、さらに備える、
ことを特徴とする請求項2に記載のバスモニタ装置。
【請求項5】
前記バス状態判定部は、
前記共通バスに含まれる、前記共通バスに接続された複数の前記処理ブロックからのデータアクセスの要求に応じて出力される、データアクセスを受け付けたことを表すデータアクセス受け付け信号の間隔に基づいて、データアクセスが受け付けられないロスの時間を判定し、
前記共通バスに含まれる、前記共通バスに接続された複数の前記処理ブロックから出力されるデータアクセスの要求を表すデータアクセス要求信号と、前記データアクセス受け付け信号とに基づいて、データアクセスが受け付けられた処理ブロックを判定し、
該データアクセスが受け付けられた処理ブロックから出力される前記メモリのアドレス信号と、前記メモリへのデータの書き込みまたは前記メモリからのデータの読み出しを表す制御信号とに基づいて、該データアクセスが受け付けられた処理ブロックが前記メモリとの間で行うデータアクセスの状況を判定し、
該判定したデータアクセスの状況に基づいて、判定した前記ロスの時間の種類を判定し、
該判定した前記ロスの時間の種類に応じた前記転送情報を出力する、
ことを特徴とする請求項4に記載のバスモニタ装置。
【請求項6】
前記転送情報は、
前記メモリに対して行われるバンクインターリーブのアクセスにおいて、前記メモリが有するバンクにアクセスする際に発生するデータアクセスが受け付けられないロスの期間を表すロス量情報を含み、
前記測定部は、
前記ロス量情報に基づいて、該ロスの時間、または該ロスの回数を測定する、
ことを特徴とする請求項3から請求項5のいずれか1の項に記載のバスモニタ装置。
【請求項7】
前記転送情報は、
前記メモリに対するデータアクセスに応じて、該メモリが読み出し動作から書き込み動作に切り替わるとき、または該メモリが書き込み動作から読み出し動作に切り替わるときに発生するデータアクセスが受け付けられないロスの期間を表すロス量情報を含み、
前記測定部は、
前記ロス量情報に基づいて、該ロスの時間、または該ロスの回数を測定する、
ことを特徴とする請求項3から請求項5のいずれか1の項に記載のバスモニタ装置。
【請求項8】
前記転送情報は、
前記メモリに対して行われるリフレッシュ動作によって発生するデータアクセスが受け付けられないロスの期間を表すロス量情報を含み、
前記測定部は、
前記ロス量情報に基づいて、該ロスの時間、または該ロスの回数を測定する、
ことを特徴とする請求項3から請求項5のいずれか1の項に記載のバスモニタ装置。
【請求項9】
前記転送情報は、
前記メモリに対してデータアクセスが行われているデータアクセスの期間を表すアクセス量情報を含み、
前記測定部は、
前記アクセス量情報に基づいて、該データアクセスの時間、または該データアクセスの回数を測定する、
ことを特徴とする請求項3から請求項5のいずれか1の項に記載のバスモニタ装置。
【請求項10】
前記アクセス量情報は、
前記メモリのバンク毎のデータアクセスの期間を表し、
前記測定部は、
前記アクセス量情報に基づいて、前記メモリのバンク毎の該データアクセスの時間、または該データアクセスの回数を測定する、
ことを特徴とする請求項9に記載のバスモニタ装置。
【請求項11】
前記アクセス量情報は、
前記メモリの読み出し動作毎および書き込み動作毎のデータアクセスの期間を表し、
前記測定部は、
前記アクセス量情報に基づいて、前記メモリの読み出し動作毎および書き込み動作毎の該データアクセスの時間、または該データアクセスの回数を測定する、
ことを特徴とする請求項9に記載のバスモニタ装置。
【請求項12】
共通バスに接続された複数の処理ブロックが、複数のバンクを有するアドレス空間からなるメモリとの間で、前記共通バスを介してデータの受け渡しを行う際の、該データの受け渡しの状態を表す転送情報に基づいて、予め定められた一定の単位時間あたりの前記共通バス上のデータの帯域を測定する測定ステップ、
を含むことを特徴とするバスモニタ方法。
【請求項13】
共通バスに接続された複数の処理ブロックが、複数のバンクを有するアドレス空間からなるメモリとの間で、前記共通バスを介してデータの受け渡しを行う際の、該データの受け渡しの状態を表す転送情報に基づいて、予め定められた一定の単位時間あたりの前記共通バス上のデータの帯域を測定する測定ステップ、
をコンピュータに実行させることを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2013−16117(P2013−16117A)
【公開日】平成25年1月24日(2013.1.24)
【国際特許分類】
【出願番号】特願2011−150082(P2011−150082)
【出願日】平成23年7月6日(2011.7.6)
【出願人】(000000376)オリンパス株式会社 (11,466)
【Fターム(参考)】
【公開日】平成25年1月24日(2013.1.24)
【国際特許分類】
【出願日】平成23年7月6日(2011.7.6)
【出願人】(000000376)オリンパス株式会社 (11,466)
【Fターム(参考)】
[ Back to top ]