説明

バス帯域モニタ装置およびバス帯域モニタ方法

【課題】各処理ブロックのプライオリティを設定するために有用な情報を取得することができるバス帯域モニタ装置およびバス帯域モニタ方法を提供する。
【解決手段】共通バスに接続され、共通バスを介して入力されたデータを記憶するバッファ部と、バッファ部に記憶されたデータに基づいて予め定められた処理を行う処理部と、バッファ部と処理部との間でのデータの受け渡しの状態に基づいて、共通バス上のデータの帯域を検出する検出部と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、バス帯域モニタ装置およびバス帯域モニタ方法に関する。
【背景技術】
【0002】
静止画用カメラ、動画用カメラ、医療用内視鏡カメラ、または産業用内視鏡カメラなどの画像処理装置に搭載されるシステムLSIなど、多くのシステムLSIでは、接続された1つのDRAM(Dynamic Random Access Memory)を、内蔵する複数の処理ブロックが共有している。このようなシステムLSIにおいては、内蔵している複数の処理ブロックが、システムLSI内部のデータバスに接続され、各処理ブロックは、DMA(Direct Memory Access)によってDRAMへのアクセスを行う。このとき、バスコントローラが、それぞれの処理ブロックから発せられるDRAMへのアクセス要求を適切に調停しながら、DRAMへのアクセスを制御している。このバスコントローラによるアクセス要求の調停においては、システムとしての性能(パフォーマンス)を満足するように、各処理ブロックからのアクセス要求が調停されることが求められる。
【0003】
アクセス要求を調停する方法としては、固定優先方式や、ラウンドロビン方式などがある。固定優先方式は、予めそれぞれの処理ブロック毎に固定した優先順位(プライオリティ)を設定し、設定されたプライオリティの高い処理ブロックからのアクセス要求を優先して受け付ける方式である。また、ラウンドロビン方式は、アクセス要求が受け付けられた処理ブロックはプライオリティの設定を低くし、アクセス要求が受け付けられなかった処理ブロックのプライオリティの設定を高くすることによって、各処理ブロックのアクセス要求が均等に受け付けられるようにする方式である。
【0004】
しかしながら、固定優先方式や、ラウンドロビン方式などのアクセス要求の調停方法では、各処理ブロックのプライオリティを、例えば、画像処理装置の動作モードに応じて細かく設定することができない。このため、例えば、特許文献1に開示された技術のように、各処理ブロックのアクセス要求が受け付けられた回数をカウントしてプライオリティを変更する技術が開示されている。
【0005】
また、固定優先方式とラウンドロビン方式とを組み合わせて、例えば、特許文献2または特許文献3に開示された技術のように、各処理ブロックのプライオリティを動的に変更するアクセス要求の調停方法も提案されている。特許文献2に開示された技術は、アクセス要求が予め定められた時間以上受け付けられていない処理ブロックのプライオリティを高くするなど、各処理ブロックから発せられるアクセス要求の頻度に応じて、各処理ブロックのプライオリティを動的に変更するという技術である。また、特許文献3に開示された技術は、複数の処理ブロックからのアクセス要求が競合したときに、予め定められた量だけプライオリティを高くすることによって、プライオリティを動的に変更するという技術である。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開平5−61818号公報
【特許文献2】特開2007−114918号公報
【特許文献3】特開2004−178056号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
特許文献1に開示されているようなアクセス要求の調停方法においては、予め定められた計測範囲の時間内における各処理ブロックのアクセス要求の回数を測定することによって、各処理ブロックのDRAMへのアクセスにおけるデータバス上のデータ量を表すバス帯域の平均値(平均帯域)を測定している。そして、測定した平均帯域の情報に基づいて、各処理ブロックのプライオリティを変更している。
【0008】
しかしながら、実際の各処理ブロックの動作においては、データバスの平均帯域が同じ場合であっても、アクセス要求の頻度がばらつくことによって、処理時間が長くなってしまったり、過剰にデータバスを占有してしまったり、という問題がある。
【0009】
以下にアクセス要求の頻度と、処理時間およびデータバスの占有の関係について説明する。図7は、1つの処理ブロックにおけるデータバスのアクセスと処理時間の関係の一例を模式的に示した図である。図7は、2回のバスアクセス毎に内部処理が行われる処理ブロックの場合を示している。そして、図7(a)の例は、バスアクセスが集中することにより、ある程度の時間の間、DRAMへのアクセスを占有する場合、図7(b)の例は、バスアクセスを集中せず、分散してDRAMにアクセスする場合を、それぞれ示している。図7において、データバスの平均帯域の測定結果は、図7(a)に示したバスアクセスと、図7(b)に示したバスアクセスとで同じである。しかし、図7をみてわかるように、図7(a)の場合は、DRAMへのアクセスを占有することはできるが、内部処理が終了した後に、次の処理を行うためのデータの準備がされていないことによって、内部処理が中断されている時間が長く、結果として処理時間も長くなってしまっている。
【0010】
図8は、2つの処理ブロックにおけるデータバスのアクセスの関係の一例を模式的に示した図である。図8は、図7と同様に、2回のバスアクセス毎に内部処理が行われる処理ブロックの場合を示している。そして、図8(a)は、図7(a)と同様に、1つの処理ブロックのバスアクセスを集中して行った場合のバスアクセスと処理時間の関係の例、図8(b)は、図7(b)と同様に、1つの処理ブロックのバスアクセスを分散して行った場合のバスアクセスと処理時間の関係の例を、それぞれ示している。図8(a)と図8(b)とに示した例においては、図7(a)および図7(b)と同様に、データバスの平均帯域の測定結果は同じである。さらに、図8(a)と図8(b)とに示した例においては、図7(a)および図7(b)と異なり、処理ブロックの処理時間も同じである。そして、図8(c)および図8(d)は、2つの処理ブロックが同時に動作している場合を示している。図8(c)に示した例は、図8(a)のようにバスアクセスを集中して行う処理ブロックAと、図8(b)のようにバスアクセスを分散して行う処理ブロックBとが同時に動作している場合を示している。また、図8(d)は、図8(b)のようにバスアクセスを分散して行う処理ブロックAと処理ブロックBとが同時に動作している場合を示している。
【0011】
図8(c)および図8(d)をみてわかるように、1つの処理ブロックAにおける平均帯域および処理時間が同じ場合であっても、同時に2つの処理ブロックが動作している場合には、全体の処理時間に差がでてしまう。すなわち、図8(d)においては、2つの処理ブロックが互いに干渉せずにDRAMにアクセスすることができるが、図8(c)においては、期間Xにおけるデータバスの競合によって処理ブロックBがDRAMにアクセスすることができない時間が発生し、結果として全体の処理時間が長くなってしまっている。この期間Xにおけるデータバスの競合は、処理ブロックBがDRAMにアクセスするときに、処理ブロックAがDRAMへのアクセスを占有していることにより発生したものである。
【0012】
このように、各処理ブロックがデータバスを使用する際の平均帯域のみでは、システムとしての性能(パフォーマンス)を判断することはできず、各処理ブロックからのアクセス要求を適切に調停することは困難である。
【0013】
また、特許文献2や特許文献3に開示されているような、プライオリティを動的に変更する技術においては、多くの場合、各処理ブロックから発せられるアクセス要求におけるデータバスの平均帯域、各処理ブロックに備えているバッファの容量、システムの各動作モードにおける各処理ブロックの重要度などに応じて、システムとして破綻が起きないように、各処理ブロックのプライオリティを設定することが必要となる。
【0014】
しかしながら、各処理ブロックのプライオリティを設定する際に必要な指針となる情報を取得する方法がなく、例えば、システムとして破綻していた場合に、どの処理ブロックがシステム破綻の要因となっているのか、プライオリティの設定をどの程度変更すれば、破綻なくシステムが動作するのかというようなことを確認する方法がなかった。そのため、従来、各処理ブロックのプライオリティを設定する際には、プライオリティの設定を行った上で実際にシステムを動作させ、システムとして破綻が起こらない設定を見つけだす作業が行われており、システム開発の効率が悪いという問題がある。
【0015】
本発明は、上記の課題認識に基づいてなされたものであり、各処理ブロックのプライオリティを設定するために有用な情報を取得することができるバス帯域モニタ装置およびバス帯域モニタ方法を提供することを目的としている。
【課題を解決するための手段】
【0016】
上記の課題を解決するため、本発明のバス帯域モニタ装置は、共通バスに接続され、前記共通バスを介して入力されたデータを記憶するバッファ部と、前記バッファ部に記憶された前記データに基づいて予め定められた処理を行う処理部と、前記バッファ部と前記処理部との間でのデータの受け渡しの状態に基づいて、前記共通バス上のデータの帯域を検出する検出部と、を備える、ことを特徴とする。
【0017】
また、本発明のバス帯域モニタ装置は、予め定められた処理を行い、該処理した後のデータを出力する処理部と、共通バスに接続され、前記処理部が出力した前記データを記憶し、記憶されている前記データを前記共通バスに出力するバッファ部と、前記処理部と前記バッファ部との間でのデータの受け渡しの状態に基づいて、前記共通バス上のデータの帯域を検出する検出部と、を備える、ことを特徴とする。
【0018】
また、本発明の前記検出部は、前記処理部から前記バッファ部に記憶されている前記データの出力が要求されているが、前記バッファ部が前記データの出力要求に応じた前記データの出力ができない状態である期間を計測するカウンタ部、を備え、前記カウンタ部が計測した前記期間の情報を前記共通バス上の前記データの帯域の情報として出力する、ことを特徴とする。
【0019】
また、本発明の前記検出部は、前記処理部から該処理部が処理した後の前記データを前記バッファ部に記憶する要求がされているが、前記バッファ部が前記データの記憶要求に応じて前記データの記憶ができない状態である期間を計測するカウンタ部、を備え、前記カウンタ部が計測した前記期間の情報を前記共通バス上の前記データの帯域の情報として出力する、ことを特徴とする。
【0020】
また、本発明の前記検出部は、前記カウンタ部が計測した前記期間の情報を複数記憶する記憶部、を備え、前記カウンタ部が計測した複数回の前記期間の情報を、それぞれ前記共通バス上の前記データの帯域の情報として出力する、ことを特徴とする。
【0021】
また、本発明の前記検出部は、前記カウンタ部が複数回計測したそれぞれの前記期間の内、最大の期間の情報を前記共通バス上の前記データの帯域の情報として出力する、ことを特徴とする。
【0022】
また、本発明のバス帯域モニタ方法は、共通バスを介して入力されたデータを、前記共通バスに接続されたバッファ部に記憶するステップと、前記バッファ部に記憶された前記データに基づいて予め定められた処理を行う処理ステップと、前記バッファ部と前記処理部との間でのデータの受け渡しの状態に基づいて、前記共通バス上のデータの帯域を検出する検出ステップと、を含む、ことを特徴とする。
【0023】
また、本発明のバス帯域モニタ方法は、予め定められた処理を行い、該処理した後のデータを出力する処理ステップと、前記処理ステップによって出力された前記データを、共通バスに接続されたバッファ部に記憶し、前記バッファ部に記憶されている前記データを前記共通バスに出力するステップと、前記処理部と前記バッファ部との間でのデータの受け渡しの状態に基づいて、前記共通バス上のデータの帯域を検出する検出ステップと、を含む、ことを特徴とする。
【発明の効果】
【0024】
本発明によれば、各処理ブロックのプライオリティを設定するために有用な情報を取得することができるという効果が得られる。
【図面の簡単な説明】
【0025】
【図1】本発明の実施形態における画像処理装置の概略構成を示したブロック図である。
【図2】本実施形態における処理ブロックの概略構成を示したブロック図である。
【図3】本実施形態の処理ブロックにおいて、プライオリティを設定するために必要な指針となる情報を取得するための概略構成と方法とを説明する図である。
【図4】本実施形態の処理ブロックにおいて、プライオリティを設定するために必要な指針となる情報を取得するための概略構成と方法とを説明する図である。
【図5】本実施形態の処理ブロックにおけるバス帯域モニタ回路の構成を示したブロック図である。
【図6】本実施形態のバス帯域モニタ回路が取得した結果に応じて処理ブロックの優先順位を変更する量を変える例を説明する図である。
【図7】1つの処理ブロックにおけるデータバスのアクセスと処理時間の関係の一例を模式的に示した図である。
【図8】2つの処理ブロックにおけるデータバスのアクセスの関係の一例を模式的に示した図である。
【発明を実施するための形態】
【0026】
以下、本発明の実施形態について、図面を参照して説明する。図1は、本実施形態における画像処理装置の概略構成を示したブロック図である。図1に示した画像処理装置1は、システム制御部10と、DRAM20と、イメージャ30と、表示部40と、を備えている。
【0027】
イメージャ30は、図示しないレンズによって結像された被写体の光学像を光電変換する固体撮像素子を備え、被写体光に応じた画像信号(以下、「入力画像データ」という)をシステム制御部10に出力する。
表示部40は、LCD(Liquid Crystal Display)などの表示装置を備え、システム制御部10から出力された表示用の画像信号(以下、「出力画像データ」という)に基づいた画像を表示する。
DRAM20は、システム制御部10によってアクセス制御され、システム制御部10の処理過程における様々なデータを記憶する。
【0028】
システム制御部10は、画像処理装置1における様々な処理を行うシステムLSIである。システム制御部10は、バスコントローラ12と、撮像インタフェース131と、画像処理部132と、ビデオインタフェース136とを備えている。システム制御部10内の各構成要素は、データバス11を介してそれぞれ接続され、DMAアクセスによってDRAM20からのデータの読み出し、およびDRAM20へのデータの書き込みを行う。このとき、バスコントローラ12は、データバス11に接続されている各構成要素から発せられるDRAM20へのDMAアクセス要求を調停し、実際にDRAM20へのアクセスを行う。
【0029】
バスコントローラ12は、システム制御部10内の構成要素からDMAアクセス要求が入力されると、現在データバス11を使用してDRAM20のDMAアクセスを行っている他の構成要素があるか否かを確認する。現在データバス11を使用している他の構成要素がある場合には、DMAアクセス要求を受け付けない。また、現在データバス11を使用している他の構成要素がない場合には、DMAアクセス要求を受け付け、DMAアクセス要求を出力した構成要素によるDMAアクセスに応じた、DRAM20の制御を行う。また、バスコントローラ12は、システム制御部10内の複数の構成要素からDMAアクセス要求が入力されている場合には、各構成要素のプライオリティに基づいて、DMAアクセス要求をしている構成要素の内、最もプライオリティが高い構成要素のDMAアクセス要求を受け付け、他の構成要素のDMAアクセス要求を受け付けない。このように、バスコントローラ12は、システム制御部10内の構成要素のプライオリティに基づいて、DMAアクセス要求を調停する。
【0030】
撮像インタフェース131は、イメージャ30から入力された入力画像データを、DRAM20に書き込む(記憶する)ための処理ブロックである。撮像インタフェース131は、イメージャ30から入力された入力画像データを一時記憶する。そして、入力画像データをDRAM20に書き込む際に、DRAM20へのDMAアクセス要求をバスコントローラ12に出力する。そして、撮像インタフェース131は、DMAアクセス要求がバスコントローラ12に受け付けられた後に、一時記憶した入力画像データを、バスコントローラ12を介してDRAM20に出力する。
【0031】
画像処理部132は、DRAM20に記憶している入力画像データを読み出し、各種の画像処理を行った後、表示用に処理した出力画像データをDRAM20に書き込む(記憶する)ための処理ブロックである。画像処理部132は、入力DMA部133と、画像処理モジュール(画像処理モジュール134−1〜画像処理モジュール134−3)と、出力DMA部135とを備えている。画像処理部132は、各構成要素を直列に接続し、複数の画像処理をパイプライン処理することによって、少ないバス帯域での複数の画像処理を実現している。
【0032】
入力DMA部133は、DRAM20に記憶している入力画像データを読み出し、読み出した入力画像データを画像処理モジュール134−1に出力するための処理ブロックである。入力DMA部133は、入力画像データをDRAM20から読み出す際に、DRAM20へのDMAアクセス要求をバスコントローラ12に出力する。そして、入力DMA部133は、DMAアクセス要求がバスコントローラ12に受け付けられた後に、バスコントローラ12を介してDRAM20から入力画像データを読み出し、読み出した入力画像データを一時記憶する。そして、入力DMA部133は、一時記憶した入力画像データを、画像処理モジュール134−1に出力する。
【0033】
画像処理モジュール134−1〜画像処理モジュール134−3は、それぞれ入力された画像信号に対して種々のデジタル的な画像処理を行って、次段の処理ブロックに出力する。画像処理モジュール134−1〜画像処理モジュール134−3による画像処理には、例えば、画像信号を記録するための記録用の画像処理や、被写体の画像を表示部40に表示させるための表示用の画像処理が含まれる。以下の説明においては、画像処理モジュール134−1〜画像処理モジュール134−3によって、入力DMA部132から入力された入力画像データが、表示用の画像信号に変換(画像処理)され、画像処理モジュール134−3から出力画像データとして、出力DMA部135に出力されるものとして説明する。
【0034】
出力DMA部135は、画像処理モジュール134−3から入力された出力画像データを、DRAM20に書き込む(記憶する)ための処理ブロックである。出力DMA部135は、画像処理モジュール134−3から入力された出力画像データを一時記憶する。そして、出力画像データをDRAM20に書き込む際に、DRAM20へのDMAアクセス要求をバスコントローラ12に出力する。そして、出力DMA部135は、DMAアクセス要求がバスコントローラ12に受け付けられた後に、一時記憶した出力画像データを、バスコントローラ12を介してDRAM20に出力する。
【0035】
ビデオインタフェース136は、DRAM20に記憶している出力画像データを読み出し、読み出した出力画像データを表示部40に出力するための処理ブロックである。ビデオインタフェース136は、出力画像データをDRAM20から読み出す際に、DRAM20へのDMAアクセス要求をバスコントローラ12に出力する。そして、ビデオインタフェース136は、DMAアクセス要求がバスコントローラ12に受け付けられた後に、バスコントローラ12を介してDRAM20から出力画像データを読み出し、読み出した出力画像データを一時記憶する。そして、ビデオインタフェース136は、一時記憶した出力画像データを、表示部40に出力する。
【0036】
このように、システム制御部10内の各処理ブロックは、それぞれの処理ブロック内に備える一時記憶領域(バッファ)にデータを一時記憶し、バスコントローラ12にDMAアクセス要求が受け付けられた後に、一時記憶しているデータを、データバス11およびバスコントローラ12を介して、DRAM20に書き込む、またはDRAM20から読み出す。
【0037】
そして、システム制御部10内の各処理ブロックは、ビデオインタフェース136および入力DMA部133のように、DMAアクセスによってDRAM20からデータを読み出す処理ブロック(以下「リードプロキシ」という)と、撮像インタフェース131および出力DMA部135のように、DMAアクセスによってDRAM20にデータを書き込む処理ブロック(以下「ライトプロキシ」という)と、に分けることができる。
【0038】
次に、システム制御部10内の各処理ブロックについて説明する。図2は、本実施形態における処理ブロックの概略構成を示したブロック図である。図2(a)は、リードプロキシの概略構成を示し、図2(b)は、ライトプロキシの概略構成を示している。以下の説明においては、リードプロキシとしてビデオインタフェース136を説明し、ライトプロキシとして撮像インタフェース131を説明する。そして、ビデオインタフェース136を、リードプロキシ136ともいう。また、撮像インタフェース131を、ライトプロキシ131ともいう。
【0039】
図2(a)に示したように、リードプロキシ136は、バスリードインタフェース1361と、リードバッファ1362と、内部処理回路1363と、出力インタフェース1364と、バス帯域モニタ回路137と、を備えている。
【0040】
バスリードインタフェース1361は、DMAアクセスによってDRAM20からデータバス11に読み出されているデータを、リードプロキシ136内に取り込むインタフェース回路である。
リードバッファ1362は、バスリードインタフェース1361が取り込んだデータバス11のデータを一時記憶するバッファ回路である。
内部処理回路1363は、リードバッファ1362に一時記憶されたデータを、リードプロキシ136の機能として処理する処理回路である。
出力インタフェース1364は、内部処理回路1363が処理したデータをリードプロキシ136に接続されている他のブロック(例えば、リードプロキシ136がビデオインタフェース136である場合は、表示部40)に出力するインタフェース回路である。
バス帯域モニタ回路137は、リードプロキシ136のプライオリティを設定するために必要な指針となる情報(以下、「プライオリティ指針情報」という)を取得するモニタ回路である。
【0041】
また、図2(b)に示したように、ライトプロキシ131は、入力インタフェース1311と、内部処理回路1312と、ライトバッファ1313と、バスライトインタフェース1314と、バス帯域モニタ回路137と、を備えている。
【0042】
入力インタフェース1311は、ライトプロキシ131に接続されている他のブロック(例えば、ライトプロキシ131が撮像インタフェース131である場合は、イメージャ30)から入力されたデータを、ライトプロキシ131内に入力するインタフェース回路である。
内部処理回路1312は、入力インタフェース1311を介して入力されたデータを、ライトプロキシ131の機能として処理する処理回路である。
ライトバッファ1313は、内部処理回路1312が処理したデータをDMAアクセスによってDRAM20に出力するために一時記憶するバッファ回路である。
バスライトインタフェース1314は、ライトバッファ1313に一時記憶されたデータをデータバス11に出力してDRAM20に書き込むインタフェース回路である。
バス帯域モニタ回路137は、ライトプロキシ131のプライオリティ指針情報を取得するモニタ回路である。
【0043】
次に、システム制御部10内の各処理ブロックのプライオリティ指針情報を取得する構成について説明する。図3および図4は、本実施形態の処理ブロックにおいて、プライオリティ指針情報を取得するための概略構成と方法とを説明する図である。そして、図3は、リードプロキシ136の場合を示し、図4は、ライトプロキシ131の場合を示している。まず、図3に示したリードプロキシ136について説明する。図3(a)は、リードプロキシ136においてプライオリティ指針情報の取得に係わる構成要素のブロック図を示し、図3(b)は、プライオリティ指針情報を取得する方法を説明する図を示している。なお、図3(a)は、処理ブロック内に一時記憶することができるデータ量が少量である、すなわち、リードバッファ1362が小容量バッファであるリードプロキシ136においてプライオリティ指針情報を取得するためのブロック図を示している。
【0044】
リードプロキシ136は、内部処理回路1363がDRAM20から取得したデータを処理する。しかし、システム制御部10では、各処理ブロックがデータバス11に接続され、各処理ブロックがデータバス11を共有しているため、DMAアクセスによってDRAM20からデータを取得しようとしても、リードプロキシ136がデータを要求したタイミングによっては処理に必要なデータを得ることができない場合もある。そのため、リードプロキシ136は、リードバッファ1362を備え、リードバッファ1362にDRAM20から読み出したデータが記憶された後に、内部処理回路1363が処理を開始する。このため、リードプロキシ136においては、内部処理回路1363がデータを要求してから、DMAアクセスによって処理に必要なデータがリードバッファ1362に記憶されるまでの時間、すなわち、内部処理回路1363の処理に必要なデータの待ち時間が、リードプロキシ136の処理における障害(ボトルネック)となる。そして、バス帯域モニタ回路137は、リードプロキシ136内の内部処理回路1363の待ち時間を計測する。
【0045】
図3(a)に示すように、バス帯域モニタ回路137は、カウンタ回路1370と、論理回路(論理積ゲートANDと論理否定ゲートINV)とによって構成されている。そして、バス帯域モニタ回路137は、リードバッファ1362と内部処理回路1363とのインタフェース信号(データ要求信号およびデータイネーブル信号)に基づいて、リードプロキシ136内の内部処理回路1363の待ち時間(クロックサイクル数)を計測(カウント)する。
【0046】
なお、図3(a)に示したデータ要求信号は、内部処理回路1363がDRAM20のデータを要求するときに、“High”レベルとなる信号である。また、データイネーブル信号は、リードバッファ1362内にデータ要求信号に応じたDRAM20からのデータが一時記憶されているときに、“High”レベルとなる信号である。
【0047】
バス帯域モニタ回路137は、内部処理回路1363からデータが要求されているがリードバッファ1362内にデータ要求信号に応じたデータが記憶されていない時間をカウントする。より具体的には、図3(b)に示したように、データ要求信号が“High”レベルであり、かつデータイネーブル信号が“Low”レベルである期間Aのクロックサイクル数をカウントする。そして、カウントした期間Aのクロックサイクル数を、プライオリティ指針情報として出力する。
【0048】
続いて、図4に示したライトプロキシ131について説明する。図4(a)は、ライトプロキシ131においてプライオリティ指針情報の取得に係わる構成要素のブロック図を示し、図4(b)は、プライオリティ指針情報を取得する方法を説明する図を示している。なお、図4(a)は、処理ブロック内に一時記憶することができるデータ量が少量である、すなわち、ライトバッファ1313が小容量バッファであるライトプロキシ131においてプライオリティ指針情報を取得するためのブロック図を示している。
【0049】
ライトプロキシ131は、内部処理回路1312が処理したデータをDRAM20に書き込む。しかし、システム制御部10では、各処理ブロックがデータバス11に接続され、各処理ブロックがデータバス11を共有しているため、DMAアクセスによってDRAM20に記憶するデータを出力しようとしても、ライトプロキシ131によってDRAM20に記憶するデータの処理が終了したタイミングによってはデータを出力することができない場合もある。そのため、ライトプロキシ131は、ライトバッファ1313を備え、ライトバッファ1313にDRAM20に出力するデータを記憶することによって、内部処理回路1312が次の処理を開始することができるようになっている。そして、ライトプロキシ131は、DMAアクセスによってライトバッファ1313に記憶しているデータをDRAM20に出力する。ところが、ライトプロキシ131においては、内部処理回路1312が次の処理を終了した場合であっても、ライトバッファ1313に記憶されているデータのDMAアクセスによるDRAM20への出力が終了するまでの時間、すなわち、前回の処理において内部処理回路1312が処理したデータをライトバッファ1313が出力し終わるまでの待ち時間が、ライトプロキシ131の処理におけるボトルネックとなる。そして、バス帯域モニタ回路137は、ライトプロキシ131内の内部処理回路1312の待ち時間を計測する。
【0050】
図4(a)に示すように、バス帯域モニタ回路137は、図3(a)に示したバス帯域モニタ回路137と同様の構成である。すなわち、カウンタ回路1370と、論理回路(論理積ゲートANDと論理否定ゲートINV)とによって構成されている。そして、バス帯域モニタ回路137は、内部処理回路1312とライトバッファ1313とのインタフェース信号(データ出力要求信号およびデータ受付可能信号)に基づいて、ライトプロキシ131内の内部処理回路1312の待ち時間(クロックサイクル数)を計測(カウント)する。
【0051】
なお、図4(a)に示したデータ出力要求信号は、内部処理回路1312の処理が終了し、DRAM20へのデータ出力を要求するときに、“High”レベルとなる信号である。また、データ受付可能信号は、ライトバッファ1313内にデータ出力要求信号に応じたDRAM20への出力データを一時記憶することができるときに、“High”レベルとなる信号である。
【0052】
バス帯域モニタ回路137は、内部処理回路1312からデータの出力要求がされているがライトバッファ1313内にデータ出力要求信号に応じたデータを記憶することができない、すなわち、ライトバッファ1313の記憶容量が不足している時間をカウントする。より具体的には、図4(b)に示したように、データ出力要求信号が“High”レベルであり、かつデータ受付可能信号が“Low”レベルである期間Bのクロックサイクル数をカウントする。そして、カウントした期間Bのクロックサイクル数を、プライオリティ指針情報として出力する。
【0053】
次に、バス帯域モニタ回路137についてさらに詳細に説明する。図5は、本実施形態の処理ブロックにおけるバス帯域モニタ回路137の構成を示したブロック図である。なお、図5は、図3および図4に示したカウンタ回路1370の構成をより詳細に示したブロック図である。図5に示したカウンタ回路1370は、カウンタ1371と、セレクタ1372と、レジスタ1373と、最大値比較部1374と、最大値保持部1375と、を備えている。なお、以下の説明においては、ビデオインタフェース136であるリードプロキシ136に、1フレーム単位で転送開始信号が入力され、DRAM20から1フレーム単位で取得した出力画像データを、表示部40に出力する場合の例を説明する。
【0054】
カウンタ1371は、転送開始信号が入力されると、内部処理回路1363の待ち時間(クロックサイクル数)のカウントを開始する。なお、カウンタ1371は、1フレームの転送が完了したときに入力される1フレーム転送完了信号によって、カウントしている値(カウント値)が初期化(リセット)される。
【0055】
レジスタ1373は、カウンタ1371がカウントしたカウント値を一時記憶するレジスタである。このレジスタ1373に記憶したカウント値が、バス帯域モニタ回路137が取得するプライオリティ指針情報に含まれる情報となる。図5に示したバス帯域モニタ回路137においては、レジスタ1373を、過去3フレーム分のカウント値を記憶する構成とした場合を示している。
【0056】
セレクタ1372は、レジスタ1373を、カウンタ1371がカウントするフレーム毎に順次切り替える。なお、リードプロキシ136が3フレームより多くの出力画像データを表示部40に出力する場合、セレクタ1372は、すでにカウント値を記憶しているレジスタを、新たなカウント値に更新する。例えば、リードプロキシ136が4フレームの出力画像データを表示部40に出力する場合には、1フレーム目のカウント値をレジスタ1に記憶させ、2フレーム目のカウント値をレジスタ2に記憶させ、3フレーム目のカウント値をレジスタ3に記憶させ、4フレーム目のカウント値をレジスタ1に記憶(更新)させる。
【0057】
最大値比較部1374は、現在カウンタ1371がカウントしているカウント値と、最大値保持部1375に保持しているカウント値とを比較し、いずれか大きい方のカウント値を最大値保持部1375に出力する。
【0058】
最大値保持部1375は、1フレーム転送完了信号が入力されたタイミング、すなわち、1フレームの転送が完了したタイミングで、最大値比較部1374から入力されたカウント値を、カウンタ最大値として保持する。この最大値保持部1375が保持したカウンタ最大値が、バス帯域モニタ回路137が取得するプライオリティ指針情報に含まれる情報となる。
【0059】
上記に述べたように、処理ブロックに備えるバス帯域モニタ回路137によって、図5に示した例では、リードプロキシ136のフレーム毎の処理において、内部処理回路1363がDRAM20のデータを要求したタイミングでDMAアクセスが完了していなかった時間、すなわち、DMAアクセスによって発生する内部処理回路1363の待ち時間を、複数フレーム(図5では過去3フレーム)分、プライオリティ指針情報として取得することができる。また、同時に、カウンタ最大値を、プライオリティ指針情報として取得することができる。そして、取得したプライオリティ指針情報に基づいて、処理ブロックのプライオリティを設定することができる。
【0060】
なお、処理ブロックに備えるバス帯域モニタ回路137の構成は、図5に示した構成のみに限定されるものではない。例えば、図5に示した構成に、さらに追加して、全てのフレームに渡って内部処理回路1363の待ち時間をカウントするカウンタ、すなわち、1フレーム転送完了信号の入力に応じてカウント値がリセットされず、画像処理装置の動作モードが変更されたときのみリセットされるカウンタを備え、同一の動作モードでリードプロキシ136が動作しているときのプライオリティ指針情報を取得する構成とすることもできる。
【0061】
次に、取得したプライオリティ指針情報に基づいて、システム制御部10内の各処理ブロックのプライオリティを設定する方法について説明する。画像処理装置1においては、画像処理装置1の各動作モードにおける各処理ブロックの動作の重要度に応じて、各処理ブロックのプライオリティを設定する。以下の説明においては、システム制御部10内のバスコントローラ12が、各処理ブロックから出力されるプライオリティ指針情報に基づいて、システム制御部10内のプライオリティを設定し、各処理ブロックからのDMAアクセス要求の調停を行うものとして説明する。
【0062】
画像処理装置1の各動作モードにおける各処理ブロックの動作の重要度は、例えば、以下のように分類され、それぞれの動作の重要度に応じて、以下のような考え方に基づいて、プライオリティを設定する。なお、以下の説明においては、プライオリティ指針情報は、予め定められた処理単位におけるカウント値、図5に示した例においては、レジスタ1373内のレジスタ1に記憶された1つのカウント値のみであるものとして説明する。
【0063】
(重要度1):例えば、撮像インタフェース131やビデオインタフェース136などは、画像処理装置1において最も重要度の高い処理ブロックであるため、プライオリティを高く設定する必要がある。このとき、バスコントローラ12は、撮像インタフェース131およびビデオインタフェース136から出力されるプライオリティ指針情報のカウント値が“0”となるように、プライオリティを設定する。また、カウント値が“0”であるプライオリティの設定がされる処理ブロックが複数存在する場合には、カウント値が“0”であり、かつプライオリティの設定が低くなるようにする。これは、最も重要度が高い処理ブロックであるが、この処理ブロックによるDMAアクセスが、データバス11を占有してしまうことを回避するためである。
【0064】
(重要度2):画像処理装置1において最も高い重要度ではないが、処理ブロックが処理を完了するまでの処理時間(許容処理時間)が予め決まっている処理ブロックは、許容処理時間内に処理を完了する必要がある。このとき、バスコントローラ12は、プライオリティ指針情報のカウント値に基づいて、処理ブロックの処理が止まっていた時間(停止時間)を算出し、予め定められた許容処理時間以下の時間で処理ブロックの処理が完了するように、プライオリティを設定する。例えば、カウント値に処理ブロックの動作クロックを乗算することによって、処理ブロックの停止時間を求める。そして、バスコントローラ12は、許容処理時間から処理ブロックにおける処理が止まらずに完了した場合の時間(最速時間)を減算した時間(余裕時間)と、算出した停止時間とを比較する。算出した停止時間と余裕時間とを比較した結果、算出した停止時間が余裕時間以上である場合には、当該処理ブロックのプライオリティを高く設定する。また、算出した停止時間が余裕時間以下である場合には、当該処理ブロックのプライオリティを低く設定する。なお、処理ブロックのプライオリティは、当該処理ブロックの停止時間に予め定めた余裕(マージン)を含んだ時間が、余裕時間と同等になるように設定する。これにより、当該処理ブロックのプライオリティを、必要以上に高く設定しないようにすることができる。
【0065】
(重要度3):画像処理装置1において重要度が低く、許容処理時間が決まっていない処理ブロックは、特に最初に設定されているプライオリティを変更しない。ただし、結果的に重要度1または重要度2である処理ブロックよりもプライオリティが高く設定されてしまう場合には、例えば、重要度1または重要度2である処理ブロックよりも、さらにプライオリティを低く設定することもできる。
【0066】
上記に述べたように、処理ブロックに備えるバス帯域モニタ回路137が取得したプライオリティ指針情報に基づいて、システム制御部10内の各処理ブロックのプライオリティを設定することにより、画像処理装置1の各動作モードにおいて、システムとして破綻が起きないように、各処理ブロックのプライオリティを設定することができる。なお、処理ブロックに備えるバス帯域モニタ回路137が取得した複数のプライオリティ指針情報に基づいて、システム制御部10内の各処理ブロックのプライオリティを設定することもできる。
【0067】
なお、各処理ブロックのプライオリティの設定方法の説明においては、システム制御部10内のバスコントローラ12が、プライオリティの設定とDMAアクセス要求の調停とを行うものとして説明したが、この形式に限定されるものではない。例えば、図示しないシステム制御部10内の制御部、または図示しない画像処理装置1全体の制御部が、システム制御部10内の各処理ブロックのプライオリティを設定し、システム制御部10内のバスコントローラ12が、設定されたプライオリティに基づいてDMAアクセス要求の調停を行う構成とすることもできる。
【0068】
なお、システム制御部10内の各処理ブロックのプライオリティを、動的に変更する場合は、例えば、プライオリティ指針情報に基づいて、プライオリティを変更する量を変えることができる。図6は、本実施形態のバス帯域モニタ回路が取得した結果(プライオリティ指針情報)に応じて処理ブロックの優先順位を変更する量を変える例を説明する図である。
【0069】
図6に示した例では、プライオリティ指針情報であるカウント値が、予め定められた許容値以下である場合には、当該処理ブロックのプライオリティを変更せず、カウント値が予め定められた許容値よりも大きい場合に、プライオリティの変更量を多くしている。このように制御することによって、例えば、特定の処理ブロック内の内部処理回路の待ち時間が許容値よりも長い場合に、プライオリティを高く設定する場合の変更幅を、内部処理回路の待ち時間に応じて変えることができる。これにより、DMAアクセス要求がバスコントローラ12に受け付けられる確率が低い処理ブロックにおいても、DMAアクセス要求が受け付けられる確率を上昇させることができる。
【0070】
上記に述べたとおり、本発明を実施するための形態によれば、各処理ブロックにバス帯域モニタ回路を備えることによって、処理ブロック内の内部処理回路がDMAアクセスによって待たされている時間を、プライオリティ指針情報として取得することができる。そして、各処理ブロックが取得したプライオリティ指針情報に基づいて、各処理ブロックのプライオリティを効率的に設定することができる。これにより、システムとして破綻が起こらないプライオリティの設定を早期に見つけだすことができ、システム開発の効率を向上させることができる。
【0071】
なお、本実施形態においては、バス帯域モニタ回路137が取得するプライオリティ指針情報として、図5に示したように、カウント値、およびその最大値であるカウンタ最大値を取得する構成について説明したが、プライオリティ指針情報としてその他の情報を取得する構成とすることもできる。例えば、カウント値の最小値を取得することによって、現状のプライオリティの設定における処理ブロックの最大の動作速度を想定することもできる。また、例えば、カウント値が予め定めた値以上となる回数および予め定めた値以下となる回数を取得することによって、プライオリティの設定を変更したことによって、処理ブロックの処理時間が短くなっているのか、長くなっているのかというような、システム開発に有用な情報とすることができる。
【0072】
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。
【符号の説明】
【0073】
1・・・画像処理装置
10・・・システム制御部
11・・・データバス(共通バス)
12・・・バスコントローラ
131・・・撮像インタフェース,ライトプロキシ(バスアクセス装置)
1311・・・入力インタフェース
1312・・・内部処理回路(処理部)
1313・・・ライトバッファ(バッファ部)
1314・・・バスライトインタフェース
132・・・画像処理部
133・・・入力DMA部(バスアクセス装置)
134−1,134−2,134−3・・・画像処理モジュール
135・・・出力DMA部(バスアクセス装置)
136・・・ビデオインタフェース,リードプロキシ(バスアクセス装置)
1361・・・バスリードインタフェース
1362・・・リードバッファ(バッファ部)
1363・・・内部処理回路(処理部)
1364・・・出力インタフェース
137・・・バス帯域モニタ回路(検出部)
1370・・・カウンタ回路(カウンタ部)
1371・・・カウンタ(カウンタ部)
1372・・・セレクタ
1373・・・レジスタ(記憶部)
1374・・・最大値比較部
1375・・・最大値保持部
20・・・DRAM
30・・・イメージャ
40・・・表示部
AND・・・論理積ゲート
INV・・・論理否定ゲート

【特許請求の範囲】
【請求項1】
共通バスに接続され、前記共通バスを介して入力されたデータを記憶するバッファ部と、
前記バッファ部に記憶された前記データに基づいて予め定められた処理を行う処理部と、
前記バッファ部と前記処理部との間でのデータの受け渡しの状態に基づいて、前記共通バス上のデータの帯域を検出する検出部と、
を備える、
ことを特徴とするバス帯域モニタ装置。
【請求項2】
予め定められた処理を行い、該処理した後のデータを出力する処理部と、
共通バスに接続され、前記処理部が出力した前記データを記憶し、記憶されている前記データを前記共通バスに出力するバッファ部と、
前記処理部と前記バッファ部との間でのデータの受け渡しの状態に基づいて、前記共通バス上のデータの帯域を検出する検出部と、
を備える、
ことを特徴とするバス帯域モニタ装置。
【請求項3】
前記検出部は、
前記処理部から前記バッファ部に記憶されている前記データの出力が要求されているが、前記バッファ部が前記データの出力要求に応じた前記データの出力ができない状態である期間を計測するカウンタ部、
を備え、
前記カウンタ部が計測した前記期間の情報を前記共通バス上の前記データの帯域の情報として出力する、
ことを特徴とする請求項1に記載のバス帯域モニタ装置。
【請求項4】
前記検出部は、
前記処理部から該処理部が処理した後の前記データを前記バッファ部に記憶する要求がされているが、前記バッファ部が前記データの記憶要求に応じて前記データの記憶ができない状態である期間を計測するカウンタ部、
を備え、
前記カウンタ部が計測した前記期間の情報を前記共通バス上の前記データの帯域の情報として出力する、
ことを特徴とする請求項2に記載のバス帯域モニタ装置。
【請求項5】
前記検出部は、
前記カウンタ部が計測した前記期間の情報を複数記憶する記憶部、
を備え、
前記カウンタ部が計測した複数回の前記期間の情報を、それぞれ前記共通バス上の前記データの帯域の情報として出力する、
ことを特徴とする請求項3または請求項4に記載のバス帯域モニタ装置。
【請求項6】
前記検出部は、
前記カウンタ部が複数回計測したそれぞれの前記期間の内、最大の期間の情報を前記共通バス上の前記データの帯域の情報として出力する、
ことを特徴とする請求項3または請求項4に記載のバス帯域モニタ装置。
【請求項7】
共通バスを介して入力されたデータを、前記共通バスに接続されたバッファ部に記憶するステップと、
前記バッファ部に記憶された前記データに基づいて予め定められた処理を行う処理ステップと、
前記バッファ部と前記処理部との間でのデータの受け渡しの状態に基づいて、前記共通バス上のデータの帯域を検出する検出ステップと、
を含む、
ことを特徴とするバス帯域モニタ方法。
【請求項8】
予め定められた処理を行い、該処理した後のデータを出力する処理ステップと、
前記処理ステップによって出力された前記データを、共通バスに接続されたバッファ部に記憶し、前記バッファ部に記憶されている前記データを前記共通バスに出力するステップと、
前記処理部と前記バッファ部との間でのデータの受け渡しの状態に基づいて、前記共通バス上のデータの帯域を検出する検出ステップと、
を含む、
ことを特徴とするバス帯域モニタ方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate