(57)【特許請求の範囲】
【請求項１】
共通バスに接続され、前記共通バスを介して入力されたデータを記憶するバッファ部と、
前記バッファ部に記憶された前記データに基づいて予め定められた処理を行う処理部と、
前記バッファ部と前記処理部との間でのデータの受け渡しの状態に基づいて、前記共通バス上のデータの帯域を検出する検出部と、
を備え、
前記検出部は、
前記処理部から前記バッファ部に記憶されている前記データの出力が要求されているが、前記バッファ部が前記データの出力要求に応じた前記データの出力ができない状態である期間を計測するカウンタ部、
を備え、
前記カウンタ部が計測した前記期間の情報を前記共通バス上の前記データの帯域の情報として出力する、
ことを特徴とするバス帯域モニタ装置。
【請求項２】
予め定められた処理を行い、該処理した後のデータを出力する処理部と、
共通バスに接続され、前記処理部が出力した前記データを記憶し、記憶されている前記データを前記共通バスに出力するバッファ部と、
前記処理部と前記バッファ部との間でのデータの受け渡しの状態に基づいて、前記共通バス上のデータの帯域を検出する検出部と、
を備え、
前記検出部は、
前記処理部から該処理部が処理した後の前記データを前記バッファ部に記憶する要求がされているが、前記バッファ部が前記データの記憶要求に応じて前記データの記憶ができない状態である期間を計測するカウンタ部、
を備え、
前記カウンタ部が計測した前記期間の情報を前記共通バス上の前記データの帯域の情報として出力する、
ことを特徴とするバス帯域モニタ装置。
【請求項３】
前記検出部は、
前記カウンタ部が計測した前記期間の情報を複数記憶する記憶部、
を備え、
前記カウンタ部が計測した複数回の前記期間の情報を、それぞれ前記共通バス上の前記データの帯域の情報として出力する、
ことを特徴とする請求項１または請求項２に記載のバス帯域モニタ装置。
【請求項４】
前記検出部は、
前記カウンタ部が複数回計測したそれぞれの前記期間の内、最大の期間の情報を前記共通バス上の前記データの帯域の情報として出力する、
ことを特徴とする請求項１または請求項２に記載のバス帯域モニタ装置。
【請求項５】
共通バスを介して入力されたデータを、前記共通バスに接続されたバッファ部に記憶するステップと、
前記バッファ部に記憶された前記データに基づいて予め定められた処理を行う処理ステップと、
前記バッファ部と前記処理部との間でのデータの受け渡しの状態に基づいて、前記共通バス上のデータの帯域を検出する検出ステップと、
を含み、
前記検出ステップは、
前記処理ステップにおいて、前記バッファ部に記憶されている前記データの出力が要求されているが、前記バッファ部が前記データの出力要求に応じた前記データの出力ができない状態である期間を計測するカウントステップ、
を含み、
前記カウントステップで計測した前記期間の情報を前記共通バス上の前記データの帯域の情報として出力する、
ことを特徴とするバス帯域モニタ方法。
【請求項６】
予め定められた処理を行い、該処理した後のデータを出力する処理ステップと、
前記処理ステップによって出力された前記データを、共通バスに接続されたバッファ部に記憶し、前記バッファ部に記憶されている前記データを前記共通バスに出力するステップと、
前記処理部と前記バッファ部との間でのデータの受け渡しの状態に基づいて、前記共通バス上のデータの帯域を検出する検出ステップと、
を含み、
前記検出ステップは、
前記処理ステップにおいて、該処理ステップで処理した後の前記データを前記バッファ部に記憶する要求がされているが、前記バッファ部が前記データの記憶要求に応じて前記データの記憶ができない状態である期間を計測するカウントステップ、
を含み、
前記カウントステップで計測した前記期間の情報を前記共通バス上の前記データの帯域の情報として出力する、
ことを特徴とするバス帯域モニタ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バス帯域モニタ装置およびバス帯域モニタ方法に関する。
【背景技術】
【０００２】
静止画用カメラ、動画用カメラ、医療用内視鏡カメラ、または産業用内視鏡カメラなどの画像処理装置に搭載されるシステムＬＳＩなど、多くのシステムＬＳＩでは、接続された１つのＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を、内蔵する複数の処理ブロックが共有している。このようなシステムＬＳＩにおいては、内蔵している複数の処理ブロックが、システムＬＳＩ内部のデータバスに接続され、各処理ブロックは、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）によってＤＲＡＭへのアクセスを行う。このとき、バスコントローラが、それぞれの処理ブロックから発せられるＤＲＡＭへのアクセス要求を適切に調停しながら、ＤＲＡＭへのアクセスを制御している。このバスコントローラによるアクセス要求の調停においては、システムとしての性能（パフォーマンス）を満足するように、各処理ブロックからのアクセス要求が調停されることが求められる。
【０００３】
アクセス要求を調停する方法としては、固定優先方式や、ラウンドロビン方式などがある。固定優先方式は、予めそれぞれの処理ブロック毎に固定した優先順位（プライオリティ）を設定し、設定されたプライオリティの高い処理ブロックからのアクセス要求を優先して受け付ける方式である。また、ラウンドロビン方式は、アクセス要求が受け付けられた処理ブロックはプライオリティの設定を低くし、アクセス要求が受け付けられなかった処理ブロックのプライオリティの設定を高くすることによって、各処理ブロックのアクセス要求が均等に受け付けられるようにする方式である。
【０００４】
しかしながら、固定優先方式や、ラウンドロビン方式などのアクセス要求の調停方法では、各処理ブロックのプライオリティを、例えば、画像処理装置の動作モードに応じて細かく設定することができない。このため、例えば、特許文献１に開示された技術のように、各処理ブロックのアクセス要求が受け付けられた回数をカウントしてプライオリティを変更する技術が開示されている。
【０００５】
また、固定優先方式とラウンドロビン方式とを組み合わせて、例えば、特許文献２または特許文献３に開示された技術のように、各処理ブロックのプライオリティを動的に変更するアクセス要求の調停方法も提案されている。特許文献２に開示された技術は、アクセス要求が予め定められた時間以上受け付けられていない処理ブロックのプライオリティを高くするなど、各処理ブロックから発せられるアクセス要求の頻度に応じて、各処理ブロックのプライオリティを動的に変更するという技術である。また、特許文献３に開示された技術は、複数の処理ブロックからのアクセス要求が競合したときに、予め定められた量だけプライオリティを高くすることによって、プライオリティを動的に変更するという技術である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平５−６１８１８号公報
【特許文献２】特開２００７−１１４９１８号公報
【特許文献３】特開２００４−１７８０５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に開示されているようなアクセス要求の調停方法においては、予め定められた計測範囲の時間内における各処理ブロックのアクセス要求の回数を測定することによって、各処理ブロックのＤＲＡＭへのアクセスにおけるデータバス上のデータ量を表すバス帯域の平均値（平均帯域）を測定している。そして、測定した平均帯域の情報に基づいて、各処理ブロックのプライオリティを変更している。
【０００８】
しかしながら、実際の各処理ブロックの動作においては、データバスの平均帯域が同じ場合であっても、アクセス要求の頻度がばらつくことによって、処理時間が長くなってしまったり、過剰にデータバスを占有してしまったり、という問題がある。
【０００９】
以下にアクセス要求の頻度と、処理時間およびデータバスの占有の関係について説明する。図７は、１つの処理ブロックにおけるデータバスのアクセスと処理時間の関係の一例を模式的に示した図である。図７は、２回のバスアクセス毎に内部処理が行われる処理ブロックの場合を示している。そして、図７（ａ）の例は、バスアクセスが集中することにより、ある程度の時間の間、ＤＲＡＭへのアクセスを占有する場合、図７（ｂ）の例は、バスアクセスを集中せず、分散してＤＲＡＭにアクセスする場合を、それぞれ示している。図７において、データバスの平均帯域の測定結果は、図７（ａ）に示したバスアクセスと、図７（ｂ）に示したバスアクセスとで同じである。しかし、図７をみてわかるように、図７（ａ）の場合は、ＤＲＡＭへのアクセスを占有することはできるが、内部処理が終了した後に、次の処理を行うためのデータの準備がされていないことによって、内部処理が中断されている時間が長く、結果として処理時間も長くなってしまっている。
【００１０】
図８は、２つの処理ブロックにおけるデータバスのアクセスの関係の一例を模式的に示した図である。図８は、図７と同様に、２回のバスアクセス毎に内部処理が行われる処理ブロックの場合を示している。そして、図８（ａ）は、図７（ａ）と同様に、１つの処理ブロックのバスアクセスを集中して行った場合のバスアクセスと処理時間の関係の例、図８（ｂ）は、図７（ｂ）と同様に、１つの処理ブロックのバスアクセスを分散して行った場合のバスアクセスと処理時間の関係の例を、それぞれ示している。図８（ａ）と図８（ｂ）とに示した例においては、図７（ａ）および図７（ｂ）と同様に、データバスの平均帯域の測定結果は同じである。さらに、図８（ａ）と図８（ｂ）とに示した例においては、図７（ａ）および図７（ｂ）と異なり、処理ブロックの処理時間も同じである。そして、図８（ｃ）および図８（ｄ）は、２つの処理ブロックが同時に動作している場合を示している。図８（ｃ）に示した例は、図８（ａ）のようにバスアクセスを集中して行う処理ブロックＡと、図８（ｂ）のようにバスアクセスを分散して行う処理ブロックＢとが同時に動作している場合を示している。また、図８（ｄ）は、図８（ｂ）のようにバスアクセスを分散して行う処理ブロックＡと処理ブロックＢとが同時に動作している場合を示している。
【００１１】
図８（ｃ）および図８（ｄ）をみてわかるように、１つの処理ブロックＡにおける平均帯域および処理時間が同じ場合であっても、同時に２つの処理ブロックが動作している場合には、全体の処理時間に差がでてしまう。すなわち、図８（ｄ）においては、２つの処理ブロックが互いに干渉せずにＤＲＡＭにアクセスすることができるが、図８（ｃ）においては、期間Ｘにおけるデータバスの競合によって処理ブロックＢがＤＲＡＭにアクセスすることができない時間が発生し、結果として全体の処理時間が長くなってしまっている。この期間Ｘにおけるデータバスの競合は、処理ブロックＢがＤＲＡＭにアクセスするときに、処理ブロックＡがＤＲＡＭへのアクセスを占有していることにより発生したものである。
【００１２】
このように、各処理ブロックがデータバスを使用する際の平均帯域のみでは、システムとしての性能（パフォーマンス）を判断することはできず、各処理ブロックからのアクセス要求を適切に調停することは困難である。
【００１３】
また、特許文献２や特許文献３に開示されているような、プライオリティを動的に変更する技術においては、多くの場合、各処理ブロックから発せられるアクセス要求におけるデータバスの平均帯域、各処理ブロックに備えているバッファの容量、システムの各動作モードにおける各処理ブロックの重要度などに応じて、システムとして破綻が起きないように、各処理ブロックのプライオリティを設定することが必要となる。
【００１４】
しかしながら、各処理ブロックのプライオリティを設定する際に必要な指針となる情報を取得する方法がなく、例えば、システムとして破綻していた場合に、どの処理ブロックがシステム破綻の要因となっているのか、プライオリティの設定をどの程度変更すれば、破綻なくシステムが動作するのかというようなことを確認する方法がなかった。そのため、従来、各処理ブロックのプライオリティを設定する際には、プライオリティの設定を行った上で実際にシステムを動作させ、システムとして破綻が起こらない設定を見つけだす作業が行われており、システム開発の効率が悪いという問題がある。
【００１５】
本発明は、上記の課題認識に基づいてなされたものであり、各処理ブロックのプライオリティを設定するために有用な情報を取得することができるバス帯域モニタ装置およびバス帯域モニタ方法を提供することを目的としている。
【課題を解決するための手段】
【００１６】
上記の課題を解決するため、本発明のバス帯域モニタ装置は、共通バスに接続され、前記共通バスを介して入力されたデータを記憶するバッファ部と、前記バッファ部に記憶された前記データに基づいて予め定められた処理を行う処理部と、前記バッファ部と前記処理部との間でのデータの受け渡しの状態に基づいて、前記共通バス上のデータの帯域を検出する検出部と、を備え、前記検出部は、前記処理部から前記バッファ部に記憶されている前記データの出力が要求されているが、前記バッファ部が前記データの出力要求に応じた前記データの出力ができない状態である期間を計測するカウンタ部、を備え、前記カウンタ部が計測した前記期間の情報を前記共通バス上の前記データの帯域の情報として出力する、ことを特徴とする。
【００１７】
また、本発明のバス帯域モニタ装置は、予め定められた処理を行い、該処理した後のデータを出力する処理部と、共通バスに接続され、前記処理部が出力した前記データを記憶し、記憶されている前記データを前記共通バスに出力するバッファ部と、前記処理部と前記バッファ部との間でのデータの受け渡しの状態に基づいて、前記共通バス上のデータの帯域を検出する検出部と、を備え、前記検出部は、前記処理部から該処理部が処理した後の前記データを前記バッファ部に記憶する要求がされているが、前記バッファ部が前記データの記憶要求に応じて前記データの記憶ができない状態である期間を計測するカウンタ部、を備え、前記カウンタ部が計測した前記期間の情報を前記共通バス上の前記データの帯域の情報として出力する、ことを特徴とする。
【００２０】
また、本発明の前記検出部は、前記カウンタ部が計測した前記期間の情報を複数記憶する記憶部、を備え、前記カウンタ部が計測した複数回の前記期間の情報を、それぞれ前記共通バス上の前記データの帯域の情報として出力する、ことを特徴とする。
【００２１】
また、本発明の前記検出部は、前記カウンタ部が複数回計測したそれぞれの前記期間の内、最大の期間の情報を前記共通バス上の前記データの帯域の情報として出力する、ことを特徴とする。
【００２２】
また、本発明のバス帯域モニタ方法は、共通バスを介して入力されたデータを、前記共通バスに接続されたバッファ部に記憶するステップと、前記バッファ部に記憶された前記データに基づいて予め定められた処理を行う処理ステップと、前記バッファ部と前記処理部との間でのデータの受け渡しの状態に基づいて、前記共通バス上のデータの帯域を検出する検出ステップと、を含み、前記検出ステップは、前記処理ステップにおいて、前記バッファ部に記憶されている前記データの出力が要求されているが、前記バッファ部が前記データの出力要求に応じた前記データの出力ができない状態である期間を計測するカウントステップ、を含み、前記カウントステップで計測した前記期間の情報を前記共通バス上の前記データの帯域の情報として出力する、ことを特徴とする。
【００２３】
また、本発明のバス帯域モニタ方法は、予め定められた処理を行い、該処理した後のデータを出力する処理ステップと、前記処理ステップによって出力された前記データを、共通バスに接続されたバッファ部に記憶し、前記バッファ部に記憶されている前記データを前記共通バスに出力するステップと、前記処理部と前記バッファ部との間でのデータの受け渡しの状態に基づいて、前記共通バス上のデータの帯域を検出する検出ステップと、を含み、前記検出ステップは、前記処理ステップにおいて、該処理ステップで処理した後の前記データを前記バッファ部に記憶する要求がされているが、前記バッファ部が前記データの記憶要求に応じて前記データの記憶ができない状態である期間を計測するカウントステップ、を含み、前記カウントステップで計測した前記期間の情報を前記共通バス上の前記データの帯域の情報として出力する、ことを特徴とする。
【発明の効果】
【００２４】
本発明によれば、各処理ブロックのプライオリティを設定するために有用な情報を取得することができるという効果が得られる。
【図面の簡単な説明】
【００２５】
【図１】本発明の実施形態における画像処理装置の概略構成を示したブロック図である。
【図２】本実施形態における処理ブロックの概略構成を示したブロック図である。
【図３】本実施形態の処理ブロックにおいて、プライオリティを設定するために必要な指針となる情報を取得するための概略構成と方法とを説明する図である。
【図４】本実施形態の処理ブロックにおいて、プライオリティを設定するために必要な指針となる情報を取得するための概略構成と方法とを説明する図である。
【図５】本実施形態の処理ブロックにおけるバス帯域モニタ回路の構成を示したブロック図である。
【図６】本実施形態のバス帯域モニタ回路が取得した結果に応じて処理ブロックの優先順位を変更する量を変える例を説明する図である。
【図７】１つの処理ブロックにおけるデータバスのアクセスと処理時間の関係の一例を模式的に示した図である。
【図８】２つの処理ブロックにおけるデータバスのアクセスの関係の一例を模式的に示した図である。
【発明を実施するための形態】
【００２６】
以下、本発明の実施形態について、図面を参照して説明する。図１は、本実施形態における画像処理装置の概略構成を示したブロック図である。図１に示した画像処理装置１は、システム制御部１０と、ＤＲＡＭ２０と、イメージャ３０と、表示部４０と、を備えている。
【００２７】
イメージャ３０は、図示しないレンズによって結像された被写体の光学像を光電変換する固体撮像素子を備え、被写体光に応じた画像信号（以下、「入力画像データ」という）をシステム制御部１０に出力する。
表示部４０は、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）などの表示装置を備え、システム制御部１０から出力された表示用の画像信号（以下、「出力画像データ」という）に基づいた画像を表示する。
ＤＲＡＭ２０は、システム制御部１０によってアクセス制御され、システム制御部１０の処理過程における様々なデータを記憶する。
【００２８】
システム制御部１０は、画像処理装置１における様々な処理を行うシステムＬＳＩである。システム制御部１０は、バスコントローラ１２と、撮像インタフェース１３１と、画像処理部１３２と、ビデオインタフェース１３６とを備えている。システム制御部１０内の各構成要素は、データバス１１を介してそれぞれ接続され、ＤＭＡアクセスによってＤＲＡＭ２０からのデータの読み出し、およびＤＲＡＭ２０へのデータの書き込みを行う。このとき、バスコントローラ１２は、データバス１１に接続されている各構成要素から発せられるＤＲＡＭ２０へのＤＭＡアクセス要求を調停し、実際にＤＲＡＭ２０へのアクセスを行う。
【００２９】
バスコントローラ１２は、システム制御部１０内の構成要素からＤＭＡアクセス要求が入力されると、現在データバス１１を使用してＤＲＡＭ２０のＤＭＡアクセスを行っている他の構成要素があるか否かを確認する。現在データバス１１を使用している他の構成要素がある場合には、ＤＭＡアクセス要求を受け付けない。また、現在データバス１１を使用している他の構成要素がない場合には、ＤＭＡアクセス要求を受け付け、ＤＭＡアクセス要求を出力した構成要素によるＤＭＡアクセスに応じた、ＤＲＡＭ２０の制御を行う。また、バスコントローラ１２は、システム制御部１０内の複数の構成要素からＤＭＡアクセス要求が入力されている場合には、各構成要素のプライオリティに基づいて、ＤＭＡアクセス要求をしている構成要素の内、最もプライオリティが高い構成要素のＤＭＡアクセス要求を受け付け、他の構成要素のＤＭＡアクセス要求を受け付けない。このように、バスコントローラ１２は、システム制御部１０内の構成要素のプライオリティに基づいて、ＤＭＡアクセス要求を調停する。
【００３０】
撮像インタフェース１３１は、イメージャ３０から入力された入力画像データを、ＤＲＡＭ２０に書き込む（記憶する）ための処理ブロックである。撮像インタフェース１３１は、イメージャ３０から入力された入力画像データを一時記憶する。そして、入力画像データをＤＲＡＭ２０に書き込む際に、ＤＲＡＭ２０へのＤＭＡアクセス要求をバスコントローラ１２に出力する。そして、撮像インタフェース１３１は、ＤＭＡアクセス要求がバスコントローラ１２に受け付けられた後に、一時記憶した入力画像データを、バスコントローラ１２を介してＤＲＡＭ２０に出力する。
【００３１】
画像処理部１３２は、ＤＲＡＭ２０に記憶している入力画像データを読み出し、各種の画像処理を行った後、表示用に処理した出力画像データをＤＲＡＭ２０に書き込む（記憶する）ための処理ブロックである。画像処理部１３２は、入力ＤＭＡ部１３３と、画像処理モジュール（画像処理モジュール１３４−１〜画像処理モジュール１３４−３）と、出力ＤＭＡ部１３５とを備えている。画像処理部１３２は、各構成要素を直列に接続し、複数の画像処理をパイプライン処理することによって、少ないバス帯域での複数の画像処理を実現している。
【００３２】
入力ＤＭＡ部１３３は、ＤＲＡＭ２０に記憶している入力画像データを読み出し、読み出した入力画像データを画像処理モジュール１３４−１に出力するための処理ブロックである。入力ＤＭＡ部１３３は、入力画像データをＤＲＡＭ２０から読み出す際に、ＤＲＡＭ２０へのＤＭＡアクセス要求をバスコントローラ１２に出力する。そして、入力ＤＭＡ部１３３は、ＤＭＡアクセス要求がバスコントローラ１２に受け付けられた後に、バスコントローラ１２を介してＤＲＡＭ２０から入力画像データを読み出し、読み出した入力画像データを一時記憶する。そして、入力ＤＭＡ部１３３は、一時記憶した入力画像データを、画像処理モジュール１３４−１に出力する。
【００３３】
画像処理モジュール１３４−１〜画像処理モジュール１３４−３は、それぞれ入力された画像信号に対して種々のデジタル的な画像処理を行って、次段の処理ブロックに出力する。画像処理モジュール１３４−１〜画像処理モジュール１３４−３による画像処理には、例えば、画像信号を記録するための記録用の画像処理や、被写体の画像を表示部４０に表示させるための表示用の画像処理が含まれる。以下の説明においては、画像処理モジュール１３４−１〜画像処理モジュール１３４−３によって、入力ＤＭＡ部１３２から入力された入力画像データが、表示用の画像信号に変換（画像処理）され、画像処理モジュール１３４−３から出力画像データとして、出力ＤＭＡ部１３５に出力されるものとして説明する。
【００３４】
出力ＤＭＡ部１３５は、画像処理モジュール１３４−３から入力された出力画像データを、ＤＲＡＭ２０に書き込む（記憶する）ための処理ブロックである。出力ＤＭＡ部１３５は、画像処理モジュール１３４−３から入力された出力画像データを一時記憶する。そして、出力画像データをＤＲＡＭ２０に書き込む際に、ＤＲＡＭ２０へのＤＭＡアクセス要求をバスコントローラ１２に出力する。そして、出力ＤＭＡ部１３５は、ＤＭＡアクセス要求がバスコントローラ１２に受け付けられた後に、一時記憶した出力画像データを、バスコントローラ１２を介してＤＲＡＭ２０に出力する。
【００３５】
ビデオインタフェース１３６は、ＤＲＡＭ２０に記憶している出力画像データを読み出し、読み出した出力画像データを表示部４０に出力するための処理ブロックである。ビデオインタフェース１３６は、出力画像データをＤＲＡＭ２０から読み出す際に、ＤＲＡＭ２０へのＤＭＡアクセス要求をバスコントローラ１２に出力する。そして、ビデオインタフェース１３６は、ＤＭＡアクセス要求がバスコントローラ１２に受け付けられた後に、バスコントローラ１２を介してＤＲＡＭ２０から出力画像データを読み出し、読み出した出力画像データを一時記憶する。そして、ビデオインタフェース１３６は、一時記憶した出力画像データを、表示部４０に出力する。
【００３６】
このように、システム制御部１０内の各処理ブロックは、それぞれの処理ブロック内に備える一時記憶領域（バッファ）にデータを一時記憶し、バスコントローラ１２にＤＭＡアクセス要求が受け付けられた後に、一時記憶しているデータを、データバス１１およびバスコントローラ１２を介して、ＤＲＡＭ２０に書き込む、またはＤＲＡＭ２０から読み出す。
【００３７】
そして、システム制御部１０内の各処理ブロックは、ビデオインタフェース１３６および入力ＤＭＡ部１３３のように、ＤＭＡアクセスによってＤＲＡＭ２０からデータを読み出す処理ブロック（以下「リードプロキシ」という）と、撮像インタフェース１３１および出力ＤＭＡ部１３５のように、ＤＭＡアクセスによってＤＲＡＭ２０にデータを書き込む処理ブロック（以下「ライトプロキシ」という）と、に分けることができる。
【００３８】
次に、システム制御部１０内の各処理ブロックについて説明する。図２は、本実施形態における処理ブロックの概略構成を示したブロック図である。図２（ａ）は、リードプロキシの概略構成を示し、図２（ｂ）は、ライトプロキシの概略構成を示している。以下の説明においては、リードプロキシとしてビデオインタフェース１３６を説明し、ライトプロキシとして撮像インタフェース１３１を説明する。そして、ビデオインタフェース１３６を、リードプロキシ１３６ともいう。また、撮像インタフェース１３１を、ライトプロキシ１３１ともいう。
【００３９】
図２（ａ）に示したように、リードプロキシ１３６は、バスリードインタフェース１３６１と、リードバッファ１３６２と、内部処理回路１３６３と、出力インタフェース１３６４と、バス帯域モニタ回路１３７と、を備えている。
【００４０】
バスリードインタフェース１３６１は、ＤＭＡアクセスによってＤＲＡＭ２０からデータバス１１に読み出されているデータを、リードプロキシ１３６内に取り込むインタフェース回路である。
リードバッファ１３６２は、バスリードインタフェース１３６１が取り込んだデータバス１１のデータを一時記憶するバッファ回路である。
内部処理回路１３６３は、リードバッファ１３６２に一時記憶されたデータを、リードプロキシ１３６の機能として処理する処理回路である。
出力インタフェース１３６４は、内部処理回路１３６３が処理したデータをリードプロキシ１３６に接続されている他のブロック（例えば、リードプロキシ１３６がビデオインタフェース１３６である場合は、表示部４０）に出力するインタフェース回路である。
バス帯域モニタ回路１３７は、リードプロキシ１３６のプライオリティを設定するために必要な指針となる情報（以下、「プライオリティ指針情報」という）を取得するモニタ回路である。
【００４１】
また、図２（ｂ）に示したように、ライトプロキシ１３１は、入力インタフェース１３１１と、内部処理回路１３１２と、ライトバッファ１３１３と、バスライトインタフェース１３１４と、バス帯域モニタ回路１３７と、を備えている。
【００４２】
入力インタフェース１３１１は、ライトプロキシ１３１に接続されている他のブロック（例えば、ライトプロキシ１３１が撮像インタフェース１３１である場合は、イメージャ３０）から入力されたデータを、ライトプロキシ１３１内に入力するインタフェース回路である。
内部処理回路１３１２は、入力インタフェース１３１１を介して入力されたデータを、ライトプロキシ１３１の機能として処理する処理回路である。
ライトバッファ１３１３は、内部処理回路１３１２が処理したデータをＤＭＡアクセスによってＤＲＡＭ２０に出力するために一時記憶するバッファ回路である。
バスライトインタフェース１３１４は、ライトバッファ１３１３に一時記憶されたデータをデータバス１１に出力してＤＲＡＭ２０に書き込むインタフェース回路である。
バス帯域モニタ回路１３７は、ライトプロキシ１３１のプライオリティ指針情報を取得するモニタ回路である。
【００４３】
次に、システム制御部１０内の各処理ブロックのプライオリティ指針情報を取得する構成について説明する。図３および図４は、本実施形態の処理ブロックにおいて、プライオリティ指針情報を取得するための概略構成と方法とを説明する図である。そして、図３は、リードプロキシ１３６の場合を示し、図４は、ライトプロキシ１３１の場合を示している。まず、図３に示したリードプロキシ１３６について説明する。図３（ａ）は、リードプロキシ１３６においてプライオリティ指針情報の取得に係わる構成要素のブロック図を示し、図３（ｂ）は、プライオリティ指針情報を取得する方法を説明する図を示している。なお、図３（ａ）は、処理ブロック内に一時記憶することができるデータ量が少量である、すなわち、リードバッファ１３６２が小容量バッファであるリードプロキシ１３６においてプライオリティ指針情報を取得するためのブロック図を示している。
【００４４】
リードプロキシ１３６は、内部処理回路１３６３がＤＲＡＭ２０から取得したデータを処理する。しかし、システム制御部１０では、各処理ブロックがデータバス１１に接続され、各処理ブロックがデータバス１１を共有しているため、ＤＭＡアクセスによってＤＲＡＭ２０からデータを取得しようとしても、リードプロキシ１３６がデータを要求したタイミングによっては処理に必要なデータを得ることができない場合もある。そのため、リードプロキシ１３６は、リードバッファ１３６２を備え、リードバッファ１３６２にＤＲＡＭ２０から読み出したデータが記憶された後に、内部処理回路１３６３が処理を開始する。このため、リードプロキシ１３６においては、内部処理回路１３６３がデータを要求してから、ＤＭＡアクセスによって処理に必要なデータがリードバッファ１３６２に記憶されるまでの時間、すなわち、内部処理回路１３６３の処理に必要なデータの待ち時間が、リードプロキシ１３６の処理における障害（ボトルネック）となる。そして、バス帯域モニタ回路１３７は、リードプロキシ１３６内の内部処理回路１３６３の待ち時間を計測する。
【００４５】
図３（ａ）に示すように、バス帯域モニタ回路１３７は、カウンタ回路１３７０と、論理回路（論理積ゲートＡＮＤと論理否定ゲートＩＮＶ）とによって構成されている。そして、バス帯域モニタ回路１３７は、リードバッファ１３６２と内部処理回路１３６３とのインタフェース信号（データ要求信号およびデータイネーブル信号）に基づいて、リードプロキシ１３６内の内部処理回路１３６３の待ち時間（クロックサイクル数）を計測（カウント）する。
【００４６】
なお、図３（ａ）に示したデータ要求信号は、内部処理回路１３６３がＤＲＡＭ２０のデータを要求するときに、“Ｈｉｇｈ”レベルとなる信号である。また、データイネーブル信号は、リードバッファ１３６２内にデータ要求信号に応じたＤＲＡＭ２０からのデータが一時記憶されているときに、“Ｈｉｇｈ”レベルとなる信号である。
【００４７】
バス帯域モニタ回路１３７は、内部処理回路１３６３からデータが要求されているがリードバッファ１３６２内にデータ要求信号に応じたデータが記憶されていない時間をカウントする。より具体的には、図３（ｂ）に示したように、データ要求信号が“Ｈｉｇｈ”レベルであり、かつデータイネーブル信号が“Ｌｏｗ”レベルである期間Ａのクロックサイクル数をカウントする。そして、カウントした期間Ａのクロックサイクル数を、プライオリティ指針情報として出力する。
【００４８】
続いて、図４に示したライトプロキシ１３１について説明する。図４（ａ）は、ライトプロキシ１３１においてプライオリティ指針情報の取得に係わる構成要素のブロック図を示し、図４（ｂ）は、プライオリティ指針情報を取得する方法を説明する図を示している。なお、図４（ａ）は、処理ブロック内に一時記憶することができるデータ量が少量である、すなわち、ライトバッファ１３１３が小容量バッファであるライトプロキシ１３１においてプライオリティ指針情報を取得するためのブロック図を示している。
【００４９】
ライトプロキシ１３１は、内部処理回路１３１２が処理したデータをＤＲＡＭ２０に書き込む。しかし、システム制御部１０では、各処理ブロックがデータバス１１に接続され、各処理ブロックがデータバス１１を共有しているため、ＤＭＡアクセスによってＤＲＡＭ２０に記憶するデータを出力しようとしても、ライトプロキシ１３１によってＤＲＡＭ２０に記憶するデータの処理が終了したタイミングによってはデータを出力することができない場合もある。そのため、ライトプロキシ１３１は、ライトバッファ１３１３を備え、ライトバッファ１３１３にＤＲＡＭ２０に出力するデータを記憶することによって、内部処理回路１３１２が次の処理を開始することができるようになっている。そして、ライトプロキシ１３１は、ＤＭＡアクセスによってライトバッファ１３１３に記憶しているデータをＤＲＡＭ２０に出力する。ところが、ライトプロキシ１３１においては、内部処理回路１３１２が次の処理を終了した場合であっても、ライトバッファ１３１３に記憶されているデータのＤＭＡアクセスによるＤＲＡＭ２０への出力が終了するまでの時間、すなわち、前回の処理において内部処理回路１３１２が処理したデータをライトバッファ１３１３が出力し終わるまでの待ち時間が、ライトプロキシ１３１の処理におけるボトルネックとなる。そして、バス帯域モニタ回路１３７は、ライトプロキシ１３１内の内部処理回路１３１２の待ち時間を計測する。
【００５０】
図４（ａ）に示すように、バス帯域モニタ回路１３７は、図３（ａ）に示したバス帯域モニタ回路１３７と同様の構成である。すなわち、カウンタ回路１３７０と、論理回路（論理積ゲートＡＮＤと論理否定ゲートＩＮＶ）とによって構成されている。そして、バス帯域モニタ回路１３７は、内部処理回路１３１２とライトバッファ１３１３とのインタフェース信号（データ出力要求信号およびデータ受付可能信号）に基づいて、ライトプロキシ１３１内の内部処理回路１３１２の待ち時間（クロックサイクル数）を計測（カウント）する。
【００５１】
なお、図４（ａ）に示したデータ出力要求信号は、内部処理回路１３１２の処理が終了し、ＤＲＡＭ２０へのデータ出力を要求するときに、“Ｈｉｇｈ”レベルとなる信号である。また、データ受付可能信号は、ライトバッファ１３１３内にデータ出力要求信号に応じたＤＲＡＭ２０への出力データを一時記憶することができるときに、“Ｈｉｇｈ”レベルとなる信号である。
【００５２】
バス帯域モニタ回路１３７は、内部処理回路１３１２からデータの出力要求がされているがライトバッファ１３１３内にデータ出力要求信号に応じたデータを記憶することができない、すなわち、ライトバッファ１３１３の記憶容量が不足している時間をカウントする。より具体的には、図４（ｂ）に示したように、データ出力要求信号が“Ｈｉｇｈ”レベルであり、かつデータ受付可能信号が“Ｌｏｗ”レベルである期間Ｂのクロックサイクル数をカウントする。そして、カウントした期間Ｂのクロックサイクル数を、プライオリティ指針情報として出力する。
【００５３】
次に、バス帯域モニタ回路１３７についてさらに詳細に説明する。図５は、本実施形態の処理ブロックにおけるバス帯域モニタ回路１３７の構成を示したブロック図である。なお、図５は、図３および図４に示したカウンタ回路１３７０の構成をより詳細に示したブロック図である。図５に示したカウンタ回路１３７０は、カウンタ１３７１と、セレクタ１３７２と、レジスタ１３７３と、最大値比較部１３７４と、最大値保持部１３７５と、を備えている。なお、以下の説明においては、ビデオインタフェース１３６であるリードプロキシ１３６に、１フレーム単位で転送開始信号が入力され、ＤＲＡＭ２０から１フレーム単位で取得した出力画像データを、表示部４０に出力する場合の例を説明する。
【００５４】
カウンタ１３７１は、転送開始信号が入力されると、内部処理回路１３６３の待ち時間（クロックサイクル数）のカウントを開始する。なお、カウンタ１３７１は、１フレームの転送が完了したときに入力される１フレーム転送完了信号によって、カウントしている値（カウント値）が初期化（リセット）される。
【００５５】
レジスタ１３７３は、カウンタ１３７１がカウントしたカウント値を一時記憶するレジスタである。このレジスタ１３７３に記憶したカウント値が、バス帯域モニタ回路１３７が取得するプライオリティ指針情報に含まれる情報となる。図５に示したバス帯域モニタ回路１３７においては、レジスタ１３７３を、過去３フレーム分のカウント値を記憶する構成とした場合を示している。
【００５６】
セレクタ１３７２は、レジスタ１３７３を、カウンタ１３７１がカウントするフレーム毎に順次切り替える。なお、リードプロキシ１３６が３フレームより多くの出力画像データを表示部４０に出力する場合、セレクタ１３７２は、すでにカウント値を記憶しているレジスタを、新たなカウント値に更新する。例えば、リードプロキシ１３６が４フレームの出力画像データを表示部４０に出力する場合には、１フレーム目のカウント値をレジスタ１に記憶させ、２フレーム目のカウント値をレジスタ２に記憶させ、３フレーム目のカウント値をレジスタ３に記憶させ、４フレーム目のカウント値をレジスタ１に記憶（更新）させる。
【００５７】
最大値比較部１３７４は、現在カウンタ１３７１がカウントしているカウント値と、最大値保持部１３７５に保持しているカウント値とを比較し、いずれか大きい方のカウント値を最大値保持部１３７５に出力する。
【００５８】
最大値保持部１３７５は、１フレーム転送完了信号が入力されたタイミング、すなわち、１フレームの転送が完了したタイミングで、最大値比較部１３７４から入力されたカウント値を、カウンタ最大値として保持する。この最大値保持部１３７５が保持したカウンタ最大値が、バス帯域モニタ回路１３７が取得するプライオリティ指針情報に含まれる情報となる。
【００５９】
上記に述べたように、処理ブロックに備えるバス帯域モニタ回路１３７によって、図５に示した例では、リードプロキシ１３６のフレーム毎の処理において、内部処理回路１３６３がＤＲＡＭ２０のデータを要求したタイミングでＤＭＡアクセスが完了していなかった時間、すなわち、ＤＭＡアクセスによって発生する内部処理回路１３６３の待ち時間を、複数フレーム（図５では過去３フレーム）分、プライオリティ指針情報として取得することができる。また、同時に、カウンタ最大値を、プライオリティ指針情報として取得することができる。そして、取得したプライオリティ指針情報に基づいて、処理ブロックのプライオリティを設定することができる。
【００６０】
なお、処理ブロックに備えるバス帯域モニタ回路１３７の構成は、図５に示した構成のみに限定されるものではない。例えば、図５に示した構成に、さらに追加して、全てのフレームに渡って内部処理回路１３６３の待ち時間をカウントするカウンタ、すなわち、１フレーム転送完了信号の入力に応じてカウント値がリセットされず、画像処理装置の動作モードが変更されたときのみリセットされるカウンタを備え、同一の動作モードでリードプロキシ１３６が動作しているときのプライオリティ指針情報を取得する構成とすることもできる。
【００６１】
次に、取得したプライオリティ指針情報に基づいて、システム制御部１０内の各処理ブロックのプライオリティを設定する方法について説明する。画像処理装置１においては、画像処理装置１の各動作モードにおける各処理ブロックの動作の重要度に応じて、各処理ブロックのプライオリティを設定する。以下の説明においては、システム制御部１０内のバスコントローラ１２が、各処理ブロックから出力されるプライオリティ指針情報に基づいて、システム制御部１０内のプライオリティを設定し、各処理ブロックからのＤＭＡアクセス要求の調停を行うものとして説明する。
【００６２】
画像処理装置１の各動作モードにおける各処理ブロックの動作の重要度は、例えば、以下のように分類され、それぞれの動作の重要度に応じて、以下のような考え方に基づいて、プライオリティを設定する。なお、以下の説明においては、プライオリティ指針情報は、予め定められた処理単位におけるカウント値、図５に示した例においては、レジスタ１３７３内のレジスタ１に記憶された１つのカウント値のみであるものとして説明する。
【００６３】
（重要度１）：例えば、撮像インタフェース１３１やビデオインタフェース１３６などは、画像処理装置１において最も重要度の高い処理ブロックであるため、プライオリティを高く設定する必要がある。このとき、バスコントローラ１２は、撮像インタフェース１３１およびビデオインタフェース１３６から出力されるプライオリティ指針情報のカウント値が“０”となるように、プライオリティを設定する。また、カウント値が“０”であるプライオリティの設定がされる処理ブロックが複数存在する場合には、カウント値が“０”であり、かつプライオリティの設定が低くなるようにする。これは、最も重要度が高い処理ブロックであるが、この処理ブロックによるＤＭＡアクセスが、データバス１１を占有してしまうことを回避するためである。
【００６４】
（重要度２）：画像処理装置１において最も高い重要度ではないが、処理ブロックが処理を完了するまでの処理時間（許容処理時間）が予め決まっている処理ブロックは、許容処理時間内に処理を完了する必要がある。このとき、バスコントローラ１２は、プライオリティ指針情報のカウント値に基づいて、処理ブロックの処理が止まっていた時間（停止時間）を算出し、予め定められた許容処理時間以下の時間で処理ブロックの処理が完了するように、プライオリティを設定する。例えば、カウント値に処理ブロックの動作クロックを乗算することによって、処理ブロックの停止時間を求める。そして、バスコントローラ１２は、許容処理時間から処理ブロックにおける処理が止まらずに完了した場合の時間（最速時間）を減算した時間（余裕時間）と、算出した停止時間とを比較する。算出した停止時間と余裕時間とを比較した結果、算出した停止時間が余裕時間以上である場合には、当該処理ブロックのプライオリティを高く設定する。また、算出した停止時間が余裕時間以下である場合には、当該処理ブロックのプライオリティを低く設定する。なお、処理ブロックのプライオリティは、当該処理ブロックの停止時間に予め定めた余裕（マージン）を含んだ時間が、余裕時間と同等になるように設定する。これにより、当該処理ブロックのプライオリティを、必要以上に高く設定しないようにすることができる。
【００６５】
（重要度３）：画像処理装置１において重要度が低く、許容処理時間が決まっていない処理ブロックは、特に最初に設定されているプライオリティを変更しない。ただし、結果的に重要度１または重要度２である処理ブロックよりもプライオリティが高く設定されてしまう場合には、例えば、重要度１または重要度２である処理ブロックよりも、さらにプライオリティを低く設定することもできる。
【００６６】
上記に述べたように、処理ブロックに備えるバス帯域モニタ回路１３７が取得したプライオリティ指針情報に基づいて、システム制御部１０内の各処理ブロックのプライオリティを設定することにより、画像処理装置１の各動作モードにおいて、システムとして破綻が起きないように、各処理ブロックのプライオリティを設定することができる。なお、処理ブロックに備えるバス帯域モニタ回路１３７が取得した複数のプライオリティ指針情報に基づいて、システム制御部１０内の各処理ブロックのプライオリティを設定することもできる。
【００６７】
なお、各処理ブロックのプライオリティの設定方法の説明においては、システム制御部１０内のバスコントローラ１２が、プライオリティの設定とＤＭＡアクセス要求の調停とを行うものとして説明したが、この形式に限定されるものではない。例えば、図示しないシステム制御部１０内の制御部、または図示しない画像処理装置１全体の制御部が、システム制御部１０内の各処理ブロックのプライオリティを設定し、システム制御部１０内のバスコントローラ１２が、設定されたプライオリティに基づいてＤＭＡアクセス要求の調停を行う構成とすることもできる。
【００６８】
なお、システム制御部１０内の各処理ブロックのプライオリティを、動的に変更する場合は、例えば、プライオリティ指針情報に基づいて、プライオリティを変更する量を変えることができる。図６は、本実施形態のバス帯域モニタ回路が取得した結果（プライオリティ指針情報）に応じて処理ブロックの優先順位を変更する量を変える例を説明する図である。
【００６９】
図６に示した例では、プライオリティ指針情報であるカウント値が、予め定められた許容値以下である場合には、当該処理ブロックのプライオリティを変更せず、カウント値が予め定められた許容値よりも大きい場合に、プライオリティの変更量を多くしている。このように制御することによって、例えば、特定の処理ブロック内の内部処理回路の待ち時間が許容値よりも長い場合に、プライオリティを高く設定する場合の変更幅を、内部処理回路の待ち時間に応じて変えることができる。これにより、ＤＭＡアクセス要求がバスコントローラ１２に受け付けられる確率が低い処理ブロックにおいても、ＤＭＡアクセス要求が受け付けられる確率を上昇させることができる。
【００７０】
上記に述べたとおり、本発明を実施するための形態によれば、各処理ブロックにバス帯域モニタ回路を備えることによって、処理ブロック内の内部処理回路がＤＭＡアクセスによって待たされている時間を、プライオリティ指針情報として取得することができる。そして、各処理ブロックが取得したプライオリティ指針情報に基づいて、各処理ブロックのプライオリティを効率的に設定することができる。これにより、システムとして破綻が起こらないプライオリティの設定を早期に見つけだすことができ、システム開発の効率を向上させることができる。
【００７１】
なお、本実施形態においては、バス帯域モニタ回路１３７が取得するプライオリティ指針情報として、図５に示したように、カウント値、およびその最大値であるカウンタ最大値を取得する構成について説明したが、プライオリティ指針情報としてその他の情報を取得する構成とすることもできる。例えば、カウント値の最小値を取得することによって、現状のプライオリティの設定における処理ブロックの最大の動作速度を想定することもできる。また、例えば、カウント値が予め定めた値以上となる回数および予め定めた値以下となる回数を取得することによって、プライオリティの設定を変更したことによって、処理ブロックの処理時間が短くなっているのか、長くなっているのかというような、システム開発に有用な情報とすることができる。
【００７２】
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。
【符号の説明】
【００７３】
１・・・画像処理装置
１０・・・システム制御部
１１・・・データバス（共通バス）
１２・・・バスコントローラ
１３１・・・撮像インタフェース，ライトプロキシ（バスアクセス装置）
１３１１・・・入力インタフェース
１３１２・・・内部処理回路（処理部）
１３１３・・・ライトバッファ（バッファ部）
１３１４・・・バスライトインタフェース
１３２・・・画像処理部
１３３・・・入力ＤＭＡ部（バスアクセス装置）
１３４−１，１３４−２，１３４−３・・・画像処理モジュール
１３５・・・出力ＤＭＡ部（バスアクセス装置）
１３６・・・ビデオインタフェース，リードプロキシ（バスアクセス装置）
１３６１・・・バスリードインタフェース
１３６２・・・リードバッファ（バッファ部）
１３６３・・・内部処理回路（処理部）
１３６４・・・出力インタフェース
１３７・・・バス帯域モニタ回路（検出部）
１３７０・・・カウンタ回路（カウンタ部）
１３７１・・・カウンタ（カウンタ部）
１３７２・・・セレクタ
１３７３・・・レジスタ（記憶部）
１３７４・・・最大値比較部
１３７５・・・最大値保持部
２０・・・ＤＲＡＭ
３０・・・イメージャ
４０・・・表示部
ＡＮＤ・・・論理積ゲート
ＩＮＶ・・・論理否定ゲート
【図１】
0005591022.tif 000002
【図２】
0005591022.tif 000003
【図３】
0005591022.tif 000004
【図４】
0005591022.tif 000005
【図５】
0005591022.tif 000006
【図６】
0005591022.tif 000007
【図７】
0005591022.tif 000008
【図８】
0005591022.tif 000009