(57)【要約】【課題】  アービタを多段階の階層構造としながらも、リアルタイム性が高く、より優先度の高い処理を破綻を防止しつつ、各バスマスタの調停を行う。【解決手段】  複数のバスマスタからの共有メモリへのアクセスを制御するメモリコントローラであって、前記バスマスタからのアクセス要求を調停するアービタと、前記アービタで調停されたアクセス要求のコマンドを格納し、順に実行するコマンドキューと、前記アービタの調停実施の可否を制御する調停制御部とを有する。ここでアービタは、接続された複数のバスマスタ間の要求を調停する複数のサブアービタと、複数のサブアービタ間を調停するメインアービタとを有する。そして、調停制御部は、調停実施後に所定の条件が満たされるまで次の調停実施を停止する。【選択図】  図１
2017162431.tif 000002
【特許請求の範囲】
【請求項１】
複数のバスマスタからの共有メモリへのアクセスを制御するメモリ制御装置であって、
それぞれが複数の前記バスマスタに接続され、接続された複数の前記バスマスタからの前記共有メモリに対するアクセス要求を調停することにより一つのバスマスタを選択し、選択したバスマスタからのアクセス要求を出力する複数のサブアービタと、
前記複数のサブアービタから出力されたアクセス要求を調停することにより一つの前記サブアービタから出力されたアクセス要求を選択し、選択したアクセス要求を出力するメインアービタと、
前記メインアービタから出力されたアクセス要求のコマンドを格納し、格納された前記コマンドを実行するコマンドキューと、
前記メインアービタの調停実施の可否を制御する調停制御部とを有し、
前記調停制御部は、調停の開始した後に所定の条件が満たされるまで次の調停実施を停止することを特徴とするメモリ制御装置。
【請求項２】
前記複数のサブアービタそれぞれは、
アクセス要求を発行した複数の前記バスマスタのうち最も優先度の高いバスマスタからのアクセス要求を前記メインアービタに出力するとともに、調停待ちのバスマスタの有無を示す状態情報を前記メインアービタに出力し、
前記調停制御部は、コマンドキューの空き状態と、前記状態情報に基づき、前記メインアービタによる調停の可否を制御する
ことを特徴とする請求項１記載のメモリ制御装置。
【請求項３】
バスマスタの処理のマージンを算出する算出部を備え、
前記算出部は、
予め設定される値と、前記コマンドキューに格納済みのコマンドの転送処理時間より処理のマージンを算出し、
前記メインアービタは、算出した処理のマージンとアクセス要求の転送処理時間より調停を制御することを特徴とする請求項１又は２に記載のメモリ制御装置。
【請求項４】
前記調停制御部は、前記メインアービタによる調停を開始してからの経過時間を計測するタイマを有し、前記タイマのカウント値が所定値になるまで、前記メインアービタによる次回の調停実施を停止することを特徴とする請求項１に記載のメモリ制御装置。
【請求項５】
前記複数のサブアービタ、前記メインアービタ、前記コマンドキュー、前記調停制御部、及び、前記サブアービタに接続される複数のバスマスタは、１つのＬＳＩに実装され、
当該ＬＳＩの外に接続されたＳＤＲＡＭで構成される共有メモリと前記バスマスタ間の調停を行うことを特徴とする請求項１乃至４のいずれか項に記載のメモリ制御装置。
【請求項６】
撮像部と、
表示部と、
共有メモリと、
それぞれが前記共有メモリにアクセスする複数のバスマスタであって、前記撮像部からの画像を処理する画像処理部と、前記表示部に表示する画像を処理する表示制御部と、記録媒体に画像を記録するための処理を行う記録処理部とを含む複数のバスマスタと、して機能する複数の処理部と、
それぞれが複数の前記バスマスタに接続され、接続された複数の前記バスマスタからのアクセス要求を調停することにより一つのバスマスタを選択し、選択したバスマスタからのアクセス要求を出力する複数のサブアービタと、
前記複数のサブアービタから出力されたアクセス要求を調停することにより一つの前記サブアービタから出力されたアクセス要求を選択し、選択したアクセス要求を出力するメインアービタと、
前記メインアービタから出力されたアクセス要求のコマンドを格納し、前記格納したコマンドを実行するコマンドキューと、
前記メインアービタの調停実施の可否を制御する調停制御部とを有し、
前記調停制御部は、調停の開始した後に所定の条件が満たされるまで次の調停実施を停止することを特徴とする撮像装置。
【請求項７】
複数のバスマスタから共有メモリへののアクセスを制御するメモリ制御装置であって、
それぞれが複数の前記バスマスタに接続され、接続された複数の前記バスマスタからの前記共有メモリに対するアクセス要求を調停して出力する、複数のサブアービタと、
前記複数のサブアービタからのアクセス要求を調停して出力するメインアービタと、
前記メインアービタからのアクセス要求のコマンドを格納し、格納された前記コマンドを実行するコマンドキューと、
前記コマンドキューにおけるコマンドの格納状態、及び、前記サブアービタが発行する所定の情報に基づき、前記バスマスタの調停を行うか否かを制御する調停制御部とを有し、
前記複数のサブアービタそれぞれは、
複数の前記バスマスタから前記共有メモリに対する第１のアクセス要求を受信した場合、当該第１のアクセス要求を発行中のバスマスタのうち、優先度が最も高いバスマスタに対して、要求を受け付けたことを表す第１の応答を出力し、
前記優先度が最も高いバスマスタからの前記第１のアクセス要求に応じて第２のアクセス要求を前記メインアービタに出力し、
前記所定の情報として、待機状態にあるバスマスタの有無を表す状態情報を前記メインアービタに出力し、
前記メインアービタから、前記第２のアクセス要求に対する第２の応答を受信した場合は、前記優先度が最も高いバスマスタからの前記第１のアクセス要求を取り下げ、次に優先度が高いバスマスタからの前記第１のアクセス要求に応じて前記第２のアクセス要求を出力し、
前記メインアービタは、
前記複数のサブアービタから前記第２のアクセス要求を受信した場合、当該受信した第２のアクセス要求のうち、最も優先度の高いバスマスタからの前記共有メモリへのアクセス要求にを出力するとともに、前記最も優先度の高いバスマスタを接続したサブアービタに対して前記第２の応答を出力し、
前記調停制御部は、
前記コマンドキューの格納状態、及び、前記サブアービタからの前記状態情報に基づき、前記バスマスタの調停を行うか否かを制御する
ことを特徴とするメモリ制御装置。
【請求項８】
複数のバスマスタから共有メモリへのアクセスを制御するメモリ制御装置であって、
それぞれが複数の前記バスマスタに接続され、接続された複数の前記バスマスタからの前記共有メモリに対するアクセス要求を調停して出力する、複数のサブアービタと、
前記複数のサブアービタからのアクセス要求を調停して出力するメインアービタと、
前記メインアービタが調停を行ってからの経過時間に応じて前記メインアービタを制御する調停制御部であって、前記メインアービタが調停を行ってから所定時間が経過するまで、次の調停を停止するように前記メインアービタを制御する調停制御部とを有する
ことを特徴とするメモリ制御装置。
【請求項９】
前記複数のサブアービタと前記メインアービタはそれぞれ動作クロックに応じて調停を行い、前記調停制御部は、前記動作クロックに同期して前記メインアービタが調停を行ってからの経過時間を計測し、前記計測した経過時間が所定値に達するまで前記メインアービタによる次の調停を停止することを特徴とする請求項８に記載のメモリ制御装置。
【請求項１０】
前記メインアービタからのアクセス要求のコマンドを格納し、前記格納したコマンドを実行するコマンドキューを有し、
前記複数のサブアービタそれぞれは、
複数の前記バスマスタから前記共有メモリに対する第１のアクセス要求を受信した場合、当該第１のアクセス要求を発行中のバスマスタのうち、優先度が最も高いバスマスタに対して、要求を受け付けたことを表す第１の応答を出力し、
前記優先度が最も高いバスマスタからの前記第１のアクセス要求に応じて第２のアクセス要求を前記メインアービタに出力し、
前記メインアービタから、前記第２のアクセス要求に対する第２の応答を受信した場合は、前記優先度が最も高いバスマスタからの前記第１のアクセス要求を取り下げ、次に優先度が高いバスマスタからの前記第１のアクセス要求に応じて前記第２のアクセス要求を出力し、
前記メインアービタは、
前記複数のサブアービタから前記第２のアクセス要求を受信し、且つ、前記調停制御部から調停可を示す信号が発行されている場合、受信した第２のアクセス要求のうち、最も優先度の高いバスマスタからの前記共有メモリへのコマンドをコマンドキューに設定するとともに、前記最も優先度の高いバスマスタを接続したサブアービタに対して前記第２の応答を出力し、
前記調停制御部は、
前記複数のサブアービタから前記第２のアクセス要求を受信した場合における前記メインアービタによる調停を開始してからの経過時間を計測するためのタイマを有し、
前記コマンドキューが新たなコマンドの格納が可能な状態にあり、且つ、前記タイマによる調停を開始してからの経過時間が予め設定された閾値に達したことを表す条件を満たす場合に、前記バスマスタに対して調停可の信号を出力し、前記条件を満たさない場合には調停を停止させる信号を出力することを特徴とする請求項８に記載のメモリ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特にアービタを多段階の階層構造とした場合のメモリ制御技術に関するものである。
【背景技術】
【０００２】
従来より、ＬＳＩ(Large Scale Integration)と、ＳＤＲＡＭ(Synchronous Dynamic Random Access Memory)等の揮発性メモリを組み合わせてシステムを構築することが行われている。ＬＳＩには各種処理を行う処理部を実装させ、それら処理部がＳＤＲＡＭを共有メモリとして利用するというものである。そして、ＬＳＩ内には、各処理部が共有メモリにアクセスする際の調停を行うメモリコントローラも実装することになる。最近の半導体微細化技術の進歩により、より多くの処理部がＬＳＩに実装できるようになってきている。かかるＬＳＩを実装する装置としては、例えばデジタルスチルカメラやビデオカメラなどの撮像装置を挙げることができる。この撮像装置では、システム制御用のＣＰＵ(Central Processing Unit）、センサからの入力画像に対して色変換やリサイズ処理等を行う現像処理部、記録媒体に効率良く記録するためのデータ圧縮部等が一つのＬＳＩに実装されている。ＬＳＩ内に実装する処理部の個数が増えると、今度はメモリコントローラの調停に係る負担が大きくなる。そこで、これまで１つのアービタで対処していた構成を、多段階のアービタ階層構造にする技術が開発されている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−３０４３６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
通常、ＬＳＩに実装される各種処理部は、共有メモリへのアクセスが競合した場合に対処するための優先順位が設定されている。しかしながら、特許文献１に開示された技術では、複数の処理部が同時に共有メモリへのアクセス要求を発行した場合に、それら処理部が優先順位に従った順番で共有メモリへのアクセスが許可されるとは限らない。故に、厳格な処理タイミングが要求されるシステムでは、処理に破綻が生じる可能性がある。そこで、本発明は多段階のアービタ階層構造としつつ、処理の破綻を防止する技術を提供するものである。
【課題を解決するための手段】
【０００５】
上記課題を解決するために本発明のメモリ制御装置は以下の構成を備える。すなわち、
複数のバスマスタからの共有メモリへのアクセスを制御するメモリ制御装置であって、
それぞれが複数の前記バスマスタに接続され、接続された複数の前記バスマスタからの前記共有メモリに対するアクセス要求を調停することにより一つのバスマスタを選択し、選択したバスマスタからのアクセス要求を出力する複数のサブアービタと、
前記複数のサブアービタから出力されたアクセス要求を調停することにより一つの前記サブアービタから出力されたアクセス要求を選択し、選択したアクセス要求を出力するメインアービタと、
前記メインアービタから出力されたアクセス要求のコマンドを格納し、格納された前記コマンドを実行するコマンドキューと、
前記メインアービタの調停実施の可否を制御する調停制御部とを有し、
前記調停制御部は、調停の開始した後に所定の条件が満たされるまで次の調停実施を停止することを特徴とする。
【発明の効果】
【０００６】
本発明によれば、アービタを多段階の階層構造としながらも、リアルタイム性が高く、より優先度の高い処理の破綻を防止しつつ、各バスマスタの調停を行うことが可能となる。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態における撮像装置の構成図。
【図２】第１の実施形態におけるメモリコントローラ動作のタイミングチャート。
【図３】第１の実施形態における調停制御のフローチャート。
【図４】第２の実施形態における撮像装置の構成図。
【図５】第２の実施形態におけるメモリコントローラ動作のタイミングチャート。
【図６】第２の実施形態における調停制御のフローチャート。
【図７】（ａ）は単一アービタのメモリコントローラ、（ｂ）は多段階アービタのメモリコントローラの構成図。
【図８】単一アービタ構成における調停制御のタイミングチャート。
【図９】多段階アービタ構成における調停制御のタイミングチャート。
【図１０】第３の実施形態における撮像装置の構成図。
【図１１】第３の実施形態におけるメモリコントローラ動作のタイミングチャート。
【図１２】第３の実施形態における調停制御のフローチャート。
【発明を実施するための形態】
【０００８】
以下、添付図面に従って本発明に係る実施形態の詳細を以下に説明する。
【０００９】
まず、複数のバスマスタから共有メモリへのアクセスの調停を、１つのアービタが行うシステム構成、並びに、複数のアービタによる階層構造の多段階アービタで行うシステム構成について説明する。図７（ａ）は、１つのアービタが複数のバスマスタからの共有メモリへのアクセスを調整するシステム構成図、図７（ｂ）が多段階アービタ構造を持つシステム構成図である。いずれのシステムも、バスマスタ、共有メモリ等の各種処理部はＬＳＩに実装されるものとして理解されたい。図８は、図７（ａ）のシステムにおけるタイミングチャート、図９は図７（ｂ）のシステムのタイミングチャートである。以下、図７（ａ），（ｂ），図８、図９の調停タイミングの違いを説明する。
【００１０】
図７（ａ）のシステムでは、単一のアービタ（以下、メインアービタ）７００に対して、バスマスタ７０１〜７０６が並列に接続されている。そして、バスマスタ７０１〜７０６が、この順番に共有メモリへの優先順位を持つものとする。今、図８に示すように、バスマスタ７０１〜７０６が同時に共有メモリへアクセスするためにＲＥＱ＃要求（＃は１〜６のいずれか）をメインアービタ７００に向けて発行したとする。各バスマスタは、自身のＲＥＱ要求に対するＡＣＫ信号を受信するまで、待機する。メインアービタ７００は、バスマスタ７０１〜７０６それぞれからＲＥＱ＃要求を受信すると、予め設定された優先順位に基づき、要求を受け付けたことを示すＡＣＫ＃信号（＃は１〜６のいずれか）を送信する。図７に示す単一のメインアービタ７００で構成されるシステムにおいては、優先順位に従って各バスマスタにＡＣＫ＃信号が供給される。しかし、バスマスタの数が更に多くなってくると、メインアービタ７００の優先順位判定が複雑になり、バス調停処理の負荷が大きくなる。よってバスマスタが多数存在するシステムにおいては、単一アービタによるメモリコントローラのバス調停がネックなり、システムのスループットも下がることも起こり得る。
【００１１】
次に図７（ｂ）の多段階のアービタ階層構造を持つシステムの動作を、図９のタイミングチャートに従って説明する。
【００１２】
図７（ｂ）は、１つのメインアービタ７２４に対して、複数（図示では３つ）のサブアービタ７２１〜７２３が並列に接続される多段の階層構造（図示は２段の階層構造）を示している。そして、サブアービタ７２１にバスマスタ７０１、７０２が接続され、サブアービタ７２２にバスマスタ７０３，７０４が接続され、サブアービタ７２３にバスマスタ７０５，７０６が接続されている。ここでも説明を単純化するため、バスマスタ７０１〜７０６が、この順番で共有メモリへのアクセス優先順位を持つものとする。
【００１３】
図９において、タイミングＴ１にて、全バスマスタ７０１〜７０６から同時にＭＲＥＱ＃要求（＃は１〜６のいずれか）が発行されたとする。タイミングＴ２にて、サブアービタ７２１〜７２３それぞれは、自身に接続されたバスマスタのうちで最優先の１つのバスマスタを選択する。そして、サブアービタ７２１乃至７２３それぞれは、マスタアービタ７２４に向けて、選択したバスマスタからの要求に基づくＳＲＥＱ＃要求（＃は１〜３のいずれか）を発行する。また、サブアービタは、選択したバスマスタに対して応答ＭＡＣＫ＃信号（＃は１〜６のいずれか）を返す。図９の場合には、タイミングＴ２にて、サブアービタ７２１がバスマスタ７０１を、サブアービタ７２２がバスマスタ７０３を、そして、サブアービタ７２３がバスマスタ７０５を選択している。
【００１４】
次のタイミングＴ３にて、メインアービタ７２４はサブアービタ７２１〜７２３のうちの１つを、優先順位に応じて選択し、選択したサブアービタに、要求を受け付けたことを示すＳＡＣＫ＃信号（＃は１〜３のいずれか）を返す。図９の場合、メインアービタ７００はサブアービタ７２１に対してＳＡＣＫ１を返している。サブアービタ７２１はメインアービタ７２４からＳＡＣＫ１を検出すると、要求済みのＳＲＥＱ１を一旦取り下げ、バスマスタ７０２からの要求に差し替えて再度ＳＲＥＱ１要求をメインアービタ７２４に向けて発行する。このため、サブアービタ７２１からのＳＲＥＱ１がメインアービタ７２４で受け付けられてから、サブアービタ７２１が次のＳＲＥＱ１を発行するまでの期間は、ハンドシェイク処理のタイムラグが発生する。図９において、このハンドシェイクによるタイムラグはＴ４〜Ｔ５である。このタイムラグ期間中に、タイミングＴ３の時点でメインアービタ２４は、到達しているサブアービタ７２２，７２３に対して調停処理を実施する。このため、タイミングＴ４でバスマスタ７０３、Ｔ５でバスマスタ７０５が選択される。この結果、バスマスタ７０２は、全バスマスタのなかで２番目に優先度が高く設定されているにも関わらず、それより優先度の低いバスマスタ７０３、７０５の要求が先にマスタアービタ７２４に受け付けられてしまう。つまり、複数のバスマスタが同時にＲＥＱ要求を発行したとしても、バスマスタの優先度の順位にその要求が受け付けられない場合が起こり得る。
【００１５】
撮像装置では、センサからの画像取り込みや表示部への画像出力といった短周期で共有メモリへアクセスすることが必要なリアルタイム性の高い処理が存在している。このような装置の場合、優先度通りに調停されないと処理が破綻する恐れがある。本実施形態では、多段階のアービタ構成にしながらも、かかる問題を解決する。
【００１６】
［第１の実施形態］
第１の実施形態では、撮像装置に適用した例を説明する。図１は、第１の実施形態の撮像装置のブロック構成図である。本装置は、ＬＳＩ１００、撮像センサ１０１、表示部１０２、記録媒体１０３、ＳＤＲＡＭ１０４を有する。ＳＤＲＡＭ１０４は、ＬＳＩ１００に実装された各種処理部で利用する共有メモリとして機能することになる。ＬＳＩ１００は、撮像処理部１１０、現像処理部１１１、評価値処理部１１２、認識処理部１１３、表示制御部１１４、符号化処理部１１５、メモリコントローラ（メモリ制御装置）１２０を有する。このうち、撮像処理部１１０、現像処理部１１１、評価値処理部１１２、認識処理部１１３、表示制御部１１４、符号化処理部１１５それぞれは、共有メモリ（ＳＤＲＡＭ１０４）を利用するバスマスタとして機能する。それ故、特に明示しない限り、撮像処理部１１０、現像処理部１１１、評価値処理部１１２、認識処理部１１３、表示制御部１１４、符号化処理部１１５のいずれかを指す場合には「バスマスタ」と表現する。また、ＬＳＩ１００は、単一の半導体集積回路チップとして構成される。
【００１７】
撮像処理部１１０は、撮像センサ１０１から出力された画像データに対して欠陥画素補正、シェーディング補正などを行う。処理された画像データはメモリコントローラ１２０を経由してＳＤＲＡＭ１０４に記録される。現像処理部１１１は、メモリコントローラ１２０を経由してＳＤＲＡＭ１０４に記録されている撮像処理後の画像データを読み出す。そして、現像処理部１１１は、画素補間やフィルタ処理、縮小といったリサイズ処理や色変換処理、例えば圧縮画像データに保存するのに最適なフォーマットであるＹ ，Ｃ ｂ， Ｃ ｒ色空間への変換などを含む現像処理を行う。そして、現像部１１１は、処理後の画像をメモリコントローラ１１０経由でＳＤＲＡＭ１２０に記録する。また、評価値処理部１１２は、ＳＤＲＡＭ１０４から、色変換前後の画像データを、メモリコントローラ１１０経由で取得する。そして、評価値処理部１１２は、予め設定した画像領域単位で色情報を分析することで評価値を生成し、メモリコントローラ１２０を経由してＳＤＲＡＭ１０４に記録する。認識処理部１１３は、メモリコントローラ１２０を経由してＳＤＲＡＭ１０４より画像信号を読み出し、予め設定されている人物の顔情報と比較して特定の人物が含まれているかを判定する。表示制御部１１４は、メモリコントローラ１２０を経由しＳＤＲＡＭ１０４より現像処理後の画像データを読み出し、表示部１０２に出力する。符号化部１１５は、メモリコントローラ１２０を経由し、ＳＤＲＡＭ１０４より現像処理後の画像を読み出し、Ｈ．２６４等の圧縮・符号化処理を行い、記録媒体１０３に記録する。撮像装置において、撮像センサ１０１と表示部１０２は、所定期間の画像データを決められたタイミングまでに処理することが求められるリアルタイム性が高い処理を行う必要がある。例えば、撮像センサ１０１と表示部１０２は、１水平期間の画像データを、次の水平期間の開始までに処理する必要がある。このため、メモリコントローラ１２０は、撮像処理部１１０と表示制御部１１４からの要求を優先的に受け付けるように調停処理を行わなければならない。
【００１８】
次に実施形態のメモリコントローラ１２０の内部構成について説明する。メモリコントローラ１２０は、サブアービタ１２１〜１２３、メインアービタ１２４、調停制御部１２６、コマンドキュー１２５を有する。各バスマスタは、アクセス要求ＲＥＱ＃を発行する際に、自身を特定する信号、並びに共有メモリ（ＳＤＲＡＭ１０４）に対するコマンドも含めて発行するものとする。そして、サブアービタ１２１〜１２３は、自身に接続されたバスマスタ間の調停を行い、メインアービタ１２４はサブアービタ間の調停を行う。
【００１９】
サブアービタ１２１〜１２３、及び、メインアービタ１２４は、その内部に所定のサイズのバッファメモリを有する。サブアービタ１２１〜１２３のバッファメモリは、バスマスタからの要求及びその要求と共に供給された情報を記憶する。メインアービタのバッファメモリは、サブアービタ１２１〜１２３からの要求及びその要求と共に供給された情報を記憶する。
【００２０】
サブアービタ１２１は、バスマスタとしての撮像処理部１１０、表示制御部１１４からの共有メモリ（ＳＤＲＡＭ１０４）へのアクセス要求ＭＲＥＱ１、２を受信した場合、予め設定される優先度に応じて一つのバスマスタを選択する。サブアービタ１２２、１２３も同様である。そして、サブアービタ１２１〜１２３それぞれは、メインアービタ１２４へアクセス要求ＳＲＥＱ＃（＃は１〜３のいずれか）を発行する。また、サブアービタ１２１〜１２３は、これと同時に、アクセス要求ＭＲＥＱを発行中のバスマスタのうち、選択したバスマスタに対し、アクセス受け付けたことを示す応答ＭＡＣＫ＃（＃は１〜６のいずれか）を出力する。この時、サブアービタ１２１〜１２３がメインアービタ１２４に対して発行するアクセス要求ＳＲＥＱ＃には、その要求元のバスマスタを特定する信号、並びに、要求元のバスマスタからのＳＤＲＡＭ１０４に対するコマンドが含まれるものとする。また、サブアービタ１２１〜１２３は、メインアービタ１２４にアクセス要求している状態において、待たされている他のバスマスタの存在／非存在を示す状態情報ＲＤＹ＃（＃は１乃至３のいずれか）をセット／リセットする。実施形態では、各サブアービタは、サブアービタによりアクセス要求が待たされているバスマスタが１つでも存在するとき、状態情報ＲＤＹ＃をセットするものとする。
【００２１】
バスマスタとして機能する撮像処理部１１０、現像処理部１１１、評価値処理部１１２、認識処理部１１３、表示制御部１１４、符号化処理部１１５それぞれは、ＬＳＩ１００の内部に分散して配置される。それ故、サブアービタ１２１〜１２３もＬＳＩ内部に分散して配置される。外部デバイスと接続するバスマスタはＬＳＩの外部端子位置の近くに配置されるため、図１に示すように、全体の中で優先度が高い処理部が一つのサブアービタに集中する場合がある。メインアービタ１２４は調停が許可（ＡＲＢ_ＥＮ＝‘１’）されている場合は、サブアービタ１２１〜１２３からのアクセス要求に対して、それぞれのアクセス要求の発行元のバスマスタに対して予め設定される優先度に応じて一つのサブアービタを選択する。そして、メインアービタ１２４は、選択したサブアービタに対し、アクセス要求を受け付けたことを示す応答ＳＡＣＫ＃（＃は１〜３のいずれか）を出力する。また、メインアービタ１２４は、選択されたアクセス要求のコマンドをコマンドキューへ出力する。コマンドキュー１２５は、入力されたコマンドを一時記録し、先に格納されたコマンドから順番にＳＤＲＡＭ１０４に送ることにより、ＳＤＲＡＭ１０４との間でのデータ転送を行う。本実施形態では、コマンドキュー１２５は１段構成とし、１つのアクセス要求を格納可能であるとする。また、コマンドキュー１２５は、キューへのコマンドの格納状態をキューフルＦＵＬＬ信号として調停制御部１２６に供給する。コマンドキュー１２５は、キューに空きがなくなった場合にはキューフルフラグ（ＦＵＬＬ）をセットする。調停制御部１２６は、サブアービタ１２１〜１２３からの状態情報ＲＤＹ＃と、コマンドキュー１２５からの信号ＦＵＬＬに応じて、メインアービタ１２４による調停を行うか否か決定するための調停許可信号（ＡＲＢ＿ＥＮ）を制御する。
【００２２】
図２は本実施形態におけるメモリコントローラのタイミングチャートである。図２を用いてメモリコントローラ１２０の制御の一例について説明する。なお、以下の説明においても、特に断りがない限り、バスマスタは、撮像処理部１１０、現像処理部１１１、評価値処理部１１２、認識処理部１１３、表示制御部１１４、符号化処理部１１５のいずれかを指す。また、図２には、各バスマスタの優先度として数値１〜６が示されているが、数値が小さいほど優先度が高いことを示している。また、図１の各サブアービタ１２１〜１２３及びメインアービタ１２４はそれぞれ、不図示のクロック発生部により発生される動作クロックＣＫＬに応じて動作し、下記のようにアクセス要求の調停処理を行う。
【００２３】
図２において、タイミングＴ１でサブアービタ１２１〜１２３に繋がる全てのバスマスタからアクセス要求ＭＲＥＱ１〜ＭＲＥＱ６が発行されている。本実施形態では、後述のように、メインアービタ１２４が、いずれかのサブアービタからのアクセス要求を受け付けた後、調停制御部１２６は、今回アクセス要求を受け付けたサブアービタからの状態信号を確認する。そして、今回アクセス要求を受け付けたサブアービタからの状態信号がセットされている場合には、セット状態が解除されるまで、メインアービタ１２４による調停処理を停止させる。即ち、サブアービタがアクセス要求を受け付けられた後、同じサブアービタによるアクセス要求の受け付け待ち状態であるバスマスタが他に存在する場合、そのサブアービタが次のアクセス要求を発行するまで調停処理を行わないようにする。タイミングＴ１では、直前にアクセス要求を受け付けたサブアービタが無いため、調停制御部１２６は、メインアービタ１２４による調停処理を許可する。
【００２４】
次のタイミングＴ２にて、サブアービタ１２１〜１２３それぞれは、各バスマスタに対して予め設定される優先度に沿って調停を実施し、メインアービタ１２４に対し、選択されたバスマスタの情報を付加してアクセス要求を発行する（ＳＲＥＱ１〜３）。また、サブアービタ１２１〜１２３それぞれは、選択されたバスマスタに要求を受けたことを示す応答ＭＡＣＫ＃を出力する。ここでは、撮像処理部１１０、現像処理部１１１、符号化処理部１１５が選択されている。また、サブアービタ１２１〜１２３それぞれは、アクセス要求発行時に次のアクセス要求が準備できているため、調停待ちのバスマスタ有り示すため、状態情報ＲＤＹ１〜３をセットする。
【００２５】
次にタイミングＴ３にて、メインアービタ１２４は、サブアービタ１２１から出力されている、優先度が一番高いバスマスタである撮像処理部１１０からのアクセス要求に対するコマンドを選択し、コマンドキュー１２５へ出力する。また、メインアービタ１２４は、サブアービタ１２１に対してアクセス受け付けたことを示す応答ＳＡＣＫ１を出力する。コマンドキュー１２５は、既にＳＤＲＡＭ１０４をアクセスしているバスマスタが存在しない場合には、直ぐにそのコマンドをＳＤＲＡＭ１０４に対して発行し、撮像処理のデータ転送を開始する。また、この段階で、調停制御部１２６は、今回受け付けたアクセス要求を発行していたサブアービタ１２１からの状態情報ＲＤＹ１信号に基づき、サブアービタ１２１においてアクセス要求が選択されることを待たされているバスマスタの存在を検知できる。そのため、調停制御部１２６は、状態情報ＲＤＹ１信号がセット解除の状態となるまで、メインアービタ１２４による調停所定を停止させる。
【００２６】
次にタイミングＴ４にて、サブアービタ１２１は、メインアービタ１２４からのアクセス受け付けたことを示す応答ＳＡＣＫ１に合わせて、アクセス要求ＳＲＥＱ１を一旦取り下げる。そして、タイミングＴ５にて、サブアービタ１２１は、待たされていた表示制御部１１４の情報（表示制御部１１４を特定する信号とそのコマンドを含む）を付加してアクセス要求ＳＲＥＱ１をメインアービタ１２４に出力する。このとき、サブアービタ１２１は、待たされているアクセス要求が無くなるため、状態情報ＲＤＹ１をクリアする。また、サブアービタ１２１は、表示制御部１１４に、要求を受けたことを示す応答ＭＡＣＫ２を出力する。
【００２７】
次にタイミングＴ６でメインアービタ１２４は、その時点で各サブアービタから発行されているアクセス要求の発行元のうち、優先度が一番高いバスマスタである表示制御部１１４からのアクセス要求であるサブアービタ１２１からのアクセス要求に対するコマンドを選択しコマンドキュー１２５へ出力する。また、サブアービタ１２１に対してアクセス受け付けたことを示す応答ＳＡＣＫ１を出力する。コマンドキュー１２５はＳＤＲＡＭ１０４をアクセスしているバスマスタが存在しないため、直ぐにＳＤＲＡＭ１０４に対し表示制御部１１４からのコマンドを発行しデータ転送を開始する。
【００２８】
次のタイミングＴ７にて、サブアービタ１２１はメインアービタ１２４からの応答ＳＡＣＫ１に合わせて、アクセス要求ＳＲＥＱ１を取り下げる。このタイミングＴ７では、今回受け付けたアクセス要求を発行していたサブアービタ１２１からの状態情報ＲＤＹ１信号がセット状態でない。そのため、調停制御部１２６はメインアービタ１２４による調停処理を実行させる。メインアービタ１２４は、その時点で発行されているアクセス要求の発行元のうち優先度が一番高いバスマスタである現像処理部１１１からのアクセス要求であるサブアービタ１２２からのアクセス要求に対するコマンドを選択しコマンドキュー１２５へ出力する。また、メインアービタ１２４は、サブアービタ１２２に対して応答ＳＡＣＫ２を出力する。コマンドキュー１２５はＳＤＲＡＭ１０４が転送中のため、内部に一時格納しキューフルフラグＦＵＬＬをセットする。
【００２９】
次にタイミングＴ８で、サブアービタ１２２はメインアービタ１２４からの応答ＳＡＣＫ２に合わせて、アクセス要求ＳＲＥＱ２を取り下げる。コマンドキュー１２５はＳＤＲＡＭ１０４の転送が終了すると、格納済みの現像処理に対するコマンドを発行し、データ転送を開始する。また、コマンドキュー１２５は、コマンドキューに空きができるのでキューフルフラグ（ＦＵＬＬ）をクリアする。また、この時点で、今回受け付けたアクセス要求を発行していたサブアービタ１２２からの状態情報ＲＤＹ２信号がセット状態である。しかし、サブアービタ１２２に対しては現像処理部１１１と評価値処理部１１２がバスマスタとして接続されており、アクセス要求の受け付け待ちであるバスマスタが、優先度が一番低い評価値処理部１１２であることがわかる。そのため、サブアービタ１２２から次に発行されるアクセス要求よりも先に、より優先度が低いバスマスタからのアクセス要求が選択される恐れがない。そこで、調停制御部１２６は、タイミングＴ８において、状態情報ＲＤＹ２がセット状態であっても、メインアービタ１２４による調停処理を許可する。
【００３０】
次にタイミングＴ９にて、サブアービタ１２２は、待たされていた評価値処理部１１２の情報（評価値処理部１１２を特定する信号とそのコマンドを含む）を付加してアクセス要求ＳＲＥＱ２をメインアービタ１２４に出力する。このとき、サブアービタ１２２は、待たされているアクセス要求が無くなるため、状態情報ＲＤＹ２をクリアする。メインアービタ１２４は、その時点で各サブアービタから発行されているアクセス要求の発行元のうち、優先度が一番高いバスマスタである符号化処理部１１５からのアクセス要求であるサブアービタ１２３からのアクセス要求に対するコマンドを選択しコマンドキュー１２５へ出力する。また、メインアービタ１２４は、サブアービタ１２３に対して応答ＳＡＣＫ３を出力する。コマンドキュー１２５はＳＤＲＡＭ１０４が転送中のため、内部に一次格納しキューフルフラグＦＵＬＬをセットする。
【００３１】
次にタイミングＴ１０にて、サブアービタ１２３はメインアービタ１２４からの応答ＳＡＣＫ３に合わせて、アクセス要求ＳＲＥＱ３を取り下げる。コマンドキュー１２５はＳＤＲＡＭ１０４の転送が終了すると、格納済みの符号化処理に対するコマンドを発行し、データ転送を開始する。また、コマンドキューに空きができるのでキューフルフラグ（ＦＵＬＬ）をクリアする。また、この時点で、今回受け付けたアクセス要求を発行していたサブアービタ１２３からの状態情報ＲＤＹ３がセット状態である。そのため、調停制御部１２６は、メインアービタ１２４による調停処理を停止させる。
【００３２】
次にタイミングＴ１１にて、サブアービタ１２３は、待たされていた認識処理部１１３の情報（認識処理部１１３を特定する信号とそのコマンドを含む）を付加してアクセス要求ＳＲＥＱ３をメインアービタ１２４に出力する。このとき、サブアービタ１２３は、待たされているアクセス要求が無くなるため、状態情報ＲＤＹ３をクリアする。
【００３３】
次にタイミングＴ１２では、メインアービタ１２４は、その時点で各サブアービタから発行されているアクセス要求の発行元のうち、優先度が一番高いバスマスタである認識処理部１１５からのアクセス要求であるサブアービタ１２３からのアクセスに対するコマンドを選択しコマンドキュー１２５へ出力する。また、メインアービタ１２４は、サブアービタ１２３に対して応答ＳＡＣＫ３を出力する。コマンドキュー１２５はＳＤＲＡＭ１０４をアクセスしているバスマスタが存在しないため、直ぐにＳＤＲＡＭ１０４に対し認識処理部１１３からのコマンドを発行しデータ転送を開始する。
【００３４】
次に、タイミングＴ１３にて、サブアービタ１２３はメインアービタ１２４からの応答ＳＡＣＫ３に合わせて、アクセス要求ＳＲＥＱ３を取り下げる。メインアービタ１２４は、優先度が一番高いサブアービタ１２２からのアクセスに対するコマンドを選択（ここでは評価値処理部１１２）しコマンドキュー１２５へ出力する。また、メインアービタ１２４は、サブアービタ１２２に対して応答ＳＡＣＫ２を出力する。コマンドキュー１２５はＳＤＲＡＭ１０４が転送中のため、内部に一時格納しキューフルフラグＦＵＬＬをセットする。
【００３５】
次に、タイミングＴ１４では、コマンドキュー１２５はＳＤＲＡＭ１０４の転送が終了すると、格納済みの評価値処理に対するコマンドを発行し、データ転送を開始する。また、コマンドキューに空きができるのでキューフルフラグ（ＦＵＬＬ）をクリアする。
【００３６】
上記を踏まえ、本実施形態におけるメインアービタ１２４の調停処理を図３のフローチャートに従い、かつ、図２のタイミングチャートとの関係で説明する。
【００３７】
図２のタイミングＴ１、Ｔ２ではコマンドキュー１２５に空きがあり、調停待ちのバスマスタの有無を示す状態情報ＲＤＹ１〜３もセットされていない。そのため、メインアービタ１２４は、Ｓ３０１→Ｓ３０２→Ｓ３０３と処理し、調停を許可するため、ＡＲＢ＿ＥＮ＝‘１’とする。
【００３８】
図２のタイミングＴ３の調停実施のタイミングで、メインアービタ１２４は、優先度が一番高いサブアービタ１２１からのアクセスに対するコマンドを選択（ここでは撮像処理部１１０）する。ここで、サブアービタ１２１からの状態情報ＲＤＹ１がセットされている。つまり、サブアービタ１２１には、調停待ちのバスマスタが存在することを意味する。本実施例の構成では、サブアービタ１２１には表示制御部１１４が接続されており、Ｔ４の時点においてメインアービタ１２４で調停待ちをしている現像処理部１１１及び符号化処理１１５より表示制御部１１４の優先度が高い。このため、メインアービタ１２４が調停を実施すると表示制御部１１４より優先度の低いバスマスタが選択されるため優先度の逆転が起きてしまう。このため、調停処理部１２６は、図３においてＳ３０１→Ｓ３０２→Ｓ３０４→Ｓ３０５→Ｓ３０６と判定処理を進め、調停を禁止するため、ＡＲＢ＿ＥＮ＝‘０’とする。つまり、メインアービタ１２４による調停処理が一時的に停止される。また、タイミングＴ３にて、メインアービタ１２４は、サブアービタ１２１からの要求ＳＲＥＱ１と共に受信した、撮像処理部１１０からのコマンドをコマンドキュー１２５に出力する。このとき、コマンドキュー１２５は空であるので、そのコマンドが実行される。
【００３９】
タイミングＴ４では、前回調停で選択したサブアービタ１２１より調停待ちマスタの有りを示す状態情報ＲＤＹ１がセットされている。調停処理部１２６は、タイミングＴ３と同様に優先度の逆転を防止するため、図３においてＳ３０１→Ｓ３０２→Ｓ３０４→Ｓ３０５→Ｓ３０６の判定処理を経て、調停を禁止するために、ＡＲＢ＿ＥＮ＝‘０’とする。
【００４０】
タイミングＴ５では、メインアービタ１２４によって前回選択したサブアービタ１２１からの状態情報ＲＤＹ１がクリアされる。そのため、調停処理部１２６は、図３においてＳ３０１→Ｓ３０２→Ｓ３０３と判定処理を経て、調停を許可するため、ＡＲＢ＿ＥＮ＝‘１’にする。そして、タイミングＴ６の調停実施のタイミングでは、サブアービタ１２１からの状態情報ＲＤＹ１がセットされていない。そのため、調停処理部１２６は、図３においてＳ３０１→３０２→３０４→３０３と判定処理を経て、調停を許可するため、ＡＲＢ＿ＥＮ＝‘１’にする。なお、このとき、サブアービタ１２１〜１２３から発行されているアクセス要求の発行元のうち、最も優先度の高いバスマスタは表示制御部１１４であるので、メインアービタ１２４は、表示制御部１１４からのアクセス要求であるアブアービタ１２１からのアクセス要求を、コマンドキュー１２５に出力する。コマンドキュー１２５は、この時点で空であるので、そのコマンドは直ちに実行される。
【００４１】
タイミングＴ７にて、メインアービタ１２４は、そのタイミングで最も優先度の高いバスマスタ（現像処理部１１１）からのアクセス要求であるサブアービタ１２２からの要求ＳＲＥＱ２に対して応答信号ＳＡＣＫ２を出力する。そして、メインアービタ１２４は、現像処理部１１１からの要求コマンドをコマンドキュー１２５に出力する。このとき、前回の表示制御部１１４からのコマンドが実行中であるため、現像処理部１１１からの要求コマンドはコマンドキュー１２５に保留として蓄積される。この結果、コマンドキュー１２５の空きがない。それ故、調停処理部１２６は、図３においてＳ３０１→Ｓ３０６と判定処理を経て、調停を禁止するため、ＡＲＢ＿ＥＮ＝‘０’とする。
【００４２】
タイミングＴ８では、前回調停で選択されたサブアービタ１２２からの状態情報ＲＤＹ２がセットされている。本実施形態の構成では、サブアービタ１２２には評価値処理部１１２が接続されており、Ｔ８の時点においてメインアービタ１２４で調停待ちをしている符号化処理１１５より評価値処理部１１２の優先度が低い。このため、メインアービタ１２４が調停を実施しても優先度の逆転は発生しない。また、このタイミングでは、コマンドキュー１２５にあった現像処理部１１１からのコマンドが実行され、コマンドキュー１２５が空になる。それ故、メインアービタ１２４は、図３においてＳ３０１→Ｓ３０２→Ｓ３０４→Ｓ３０５→Ｓ３０３と判定され、調停を許可するため、ＡＲＢ＿ＥＮ＝‘１’とする。
【００４３】
タイミングＴ９では、前回の現像処理部１１１からのコマンドが実行中であるため、符号化処理部１１５からの要求コマンドはコマンドキュー１２５に保留として蓄積される。この結果、コマンドキュー１２５の空きがない。それ故、調停処理部１２６は、図３においてＳ３０１→Ｓ３０６と判定処理を経て、調停を禁止するため、ＡＲＢ＿ＥＮ＝‘０’とする。
【００４４】
タイミングＴ１０では、コマンドキュー１２５にあった符号化処理部１１５からのコマンドが実行され、コマンドキュー１２５が空になる。しかし、前回調停で選択したサブアービタ１２３より調停待ちマスタの有りを示す状態情報ＲＤＹ３がセットされている。つまり、サブアービタ１２３には、調停待ちのバスマスタが存在することを意味する。本実施例の構成では、サブアービタ１２３には認識処理部１１３が接続されており、Ｔ４の時点においてメインアービタ１２４で調停待ちをしている評価値処理部１１２より認識処理部１１３の優先度が高い。このため、メインアービタ１２４が調停を実施すると認識処理部１１２より優先度の低いバスマスタが選択されるため優先度の逆転が起きてしまう。それ故、調停制御部１２６は、図３においてＳ３０１→Ｓ３０２→Ｓ３０４→Ｓ３０５→Ｓ３０６の判定処理を経て、調停を禁止するため、ＡＲＢ＿ＥＮ＝‘０’とする。
【００４５】
タイミングＴ１１では、メインアービタ１２４によって前回選択したサブアービタ１２３からの状態情報ＲＤＹ３がクリアされる。また、コマンドキューにも空きがあるので、調停制御部１２６は、図３においてＳ３０１→Ｓ３０２→Ｓ３０３と判定処理を経て、調停を許可するため、ＡＲＢ＿ＥＮ＝‘１’にする。
【００４６】
タイミングＴ１２では、コマンドキュー１２５に空きがあり、調停待ちのバスマスタの有無を示す状態情報ＲＤＹ１〜３もセットされていない。そのため、メインアービタ１２４は、Ｓ３０１→Ｓ３０２→Ｓ３０３と処理し、調停を許可するため、ＡＲＢ＿ＥＮ＝‘１’とする。
【００４７】
タイミングＴ１３では、前回の認識処理部１１３からのコマンドが実行中であるため、評価値処理部１１２からの要求コマンドはコマンドキュー１２５に保留として蓄積される。この結果、コマンドキュー１２５の空きがない。それ故、調停処理部１２６は、図３においてＳ３０１→Ｓ３０６と判定処理を経て、調停を禁止するため、ＡＲＢ＿ＥＮ＝‘０’とする。
【００４８】
タイミングＴ１４、Ｔ１５ではコマンドキュー１２５に空きがあり、調停待ちのバスマスタの有無を示す状態情報ＲＤＹ１〜３もセットされていない。そのため、調停処理部１２６は、Ｓ３０１→Ｓ３０２→Ｓ３０３と処理し、調停を許可するため、ＡＲＢ＿ＥＮ＝‘１’とする。
【００４９】
なお、メインアービタ１２４は、先に説明したように内部にバッファメモリを有する。そして、調停制御部１２６から調停可のＡＲＢＮ＿ＥＮを受信した場合、バッファメモリに記憶された中で優先度の高いコマンドを、コマンドキューに１２５に出力する。
【００５０】
以上の結果、タイミングＴ３〜Ｔ５で示すように一つのサブアービタに優先度の高いバスマスタが集中し、より優先度の高いバスマスタのアクセス要求がメインアービタに到達していない状況があった場合、メインアービタの調停が禁止される。この結果、メインアービタは、優先度の低いバスマスタからの要求を、優先度の高いバスマスタより先行して受信してしまうことを防止できる。
【００５１】
よって、多段階のアービタ構造としたメモリコントローラにおいて、複数のバスマスタによるアクセス要求をしている状況下においても、リアルタイム性の高いバスマスタが優先的に処理され、システム或いは装置として処理の破綻も防止できる。
【００５２】
なお、上記実施形態では、サブアービタ１２１〜１２３のそれぞれは、２つのバスマスタが接続されるものとして説明したが、複数のバスマスタが接続可能であればよく、その数に特に制限はない。また、コマンドキュー１２５のキューの段数を１段として説明したが、その段数に特に制限はない。
【００５３】
［第２の実施形態］
次に、第２の実施形態について説明する。上記の第１の実施形態では、メモリコントローラは、複数のアービタによる多段階の階層構造とした。そして、アービタ間のハンドシェイク期間中にメインアービタ１２４が調停を禁止することで、優先度通りに調停することを実現した。しかし、図２のタイミングＴ５〜７の期間は、ＳＤＲＡＭ１０４が待機状態でバスマスタからのアクセス要求が出ているにも関わらず、調停が禁止されるため、ＳＤＲＡＭのメモリバス帯域をロスすることになる。このため、リアルタイム性の高い処理を保証する場合、システム全体で使用できるメモリバス帯域の使用率が低下するという課題がある。撮像装置では、センサからの読み出しや表示装置への出力は所定周期間隔での処理が必要なリアルタイム性の高い処理である。しかし、動作モードによって処理周期は変動する。また、ＳＤＲＡＭ１０４とのアクセスに必要な転送時間はバスマスタからのアクセス要求によって異なる。
【００５４】
本第２の実施形態では、サブアービタとメインアービタ間のハンドシェイク期間中に、より優先度の高いバスマスタからの要求がメインアービタに到達していない状況において、メインアービタがリアルタイム性の高い処理が破綻しない範囲で調停を実施する。これにより、メモリバス帯域のロスを軽減することを可能にする。
【００５５】
図４は、本第２の実施形態が適用する撮像装置のブロック構成図である。同図における符号４００〜４０４、４１０〜４１５は、第１の実施形態の図１における符号１０１〜１０４、１１０〜１１５と同一の構成要素であり、その機能や動作も同じであるものとし、それらの説明は省略する。また、以下に説明するバスマスタにおける処理時間、周期等を示す情報はメインアービタ４２４が予め保持しているものとするが、ＬＳＩ４００の外部に設けられたＲＯＭに保持させても構わない。
【００５６】
周期制御部４３０は、撮影時の動作モードに合わせて、水平周期信号（ＨＤ）を生成し、生成した水平同期信号を表示制御部４１４とマージン算出部４２７に出力する。表示制御部４１４は、水平同期信号に合わせてＳＤＲＡＭ４０４より現像処理後の画像データを読み出し、表示部４０２に出力する。コマンドキュー４２５は、入力されたコマンドを一時的に格納する。そして、コマンドキュー４２５は、先に格納されたコマンドから順番にＳＤＲＡＭ４０４（共有メモリ）に送ることにより、ＳＤＲＡＭ４０４とデータ転送を行い、コマンドキューの空きがなくなった場合はキューフルフラグ（ＦＵＬＬ）をセットする。また、ＳＤＲＡＭ４０４と転送中の処理を完了するために必要な時間（ｔＴＲＡＮＳ）を算出し、マージン算出部４２７へ出力する。調停制御部４２６は、各サブアービタからの状態情報ＲＤＹ＃（＃は１〜３）とコマンドキュー４２５からの信号ＦＵＬＬに応じてメインアービタ４２４の調停許可信号ＡＲＢ＿ＥＮを生成する。生成する調停許可信号ＡＲＢ＿ＥＮは３種類であり、許可を示すＡＲＢ＿ＥＮ＝‘２’、条件付き許可を示すＡＲＢ＿ＥＮ＝‘１’、そして、禁止を示すＡＲＢ＿ＥＮ＝‘０’である。マージン算出部４２７は動作モード毎に予め設定される表示処理周期、と表示処理で必要な転送処理時間より周期マージンを算出する。そして、マージン算出部４２７は、算出した周期マージンから動作状態によって変動するコマンドキューの処理時間（ｔＴＲＡＮＳ）を減算することで、調停許可マージンｔＭＥＲＧＩＮを算出し、メインアービタ４２４に出力する。メインアービタ４２４は、調停許可信号ＡＲＢ_ＥＮを判定し、調停が許可される場合はサブアービタ４２１〜４２３からのアクセス要求に対して、予め設定される優先度に応じて一つのサブアービタを選択する。そして、メインアービタ４２４は、選択したサブアービタに対し、アクセス受け付けたことを示す応答ＳＡＣＫを出力する。また、メインアービタ４２４は、選択されたアクセス要求のコマンドをコマンドキュー４２５へ出力する。
【００５７】
図５は本第２の実施形態におけるメモリコントローラ４２０の処理に係るタイミングチャートである。図５を用いてメモリコントローラ４２０の制御の一例について説明する。
【００５８】
図５において、タイミングＴ１で水平同期信号ＨＤを検出した表示制御部４１４は、アクセス要求ＭＲＥＱ２をサブアービタ４２１に向けて発行する。図５では、他のバスマスタとの競合時を示すため、他のバスマスタも同時にアクセス要求（ＭＲＥＱ１、３〜６）を発行させている。つまり、表示制御部４１４よりも優先度の高い撮像処理部４１０もアクセス要求ＭＲＥＱ１を発行している。ここで、それぞれのアクセス要求が受け付けられた場合の転送処理時間を、各ＭＲＥＱのセット後に示している。例えば、ＭＲＱ１、ＭＲＱ２の場合にはともに“２”であることを示している。また、マージン算出部４２７は、調停許可マージンｔＭＥＲＧＩＮを算出する。図５の場合、ＨＤ周期は「８」である。よって、調停マージンｔＭＥＲＧＩＮは、次回のＨＤまでの残り時間ＨＤ＿ＣＮＴの「８」から、表示処理時間に要する時間「２」とコマンドキューの処理時間ｔＴＲＡＮＳ「０」を減算した「６」となる。
【００５９】
次にタイミングＴ２で、サブアービタ４２１〜４２３それぞれは、予め設定される優先度に従ってバスマスタを選択して調停を実施する。そして、サブアービタ４２１〜４２３は、メインアービタ４２４に対し、選択されたバスマスタの情報（バスマスタを特定する信号及びコマンド）を付加してアクセス要求ＳＲＥＱ１〜３を発行する。また、サブアービタ４２１〜４２３それぞれは、アクセス要求発行時に次のアクセス要求が準備できているため、調停待ちのバスマスタ有り示すため、状態情報ＲＤＹ１〜３をセットする。ここでは、コマンドキューの処理時間ｔＴＲＡＮＳに変化はないが、次回のＨＤまでの残り時間ＨＤ＿ＣＮＴが７に減るため、調停許可マージンｔＭＥＲＧＩＮは５となる。
【００６０】
次のタイミングＴ３にて、メインアービタ４２４は、優先度が一番高いバスマスタが接続されたサブアービタ４２１からのアクセス要求によるコマンドを選択（ここでは撮像処理）しコマンドキュー４２５へ出力する。また、メインアービタ４２４は、サブアービタ４２１に対してアクセス受け付け信号ＳＡＣＫ１を出力する。コマンドキュー４２５は、ＳＤＲＡＭ４０４とのデータ転送中でない場合は直ぐにコマンドを発行し、撮像処理のデータ転送を開始する。処理時間「２」の撮像処理のコマンドが格納されたため、コマンドキューの処理時間ｔＴＲＡＮＳは２（＝ＨＤ＿ＣＮＴ「６」−表示処理時間「２」−ｔＴＲＡＮＳ「２」）となる。
【００６１】
次にタイミングＴ４にて、サブアービタ４２１はアクセス受け付け信号ＳＡＣＫ１に合わせて、アクセス要求ＳＲＥＱ１を一旦取り下げる。また、タイミングＴ４において、各サブアービタから発行されているアクセス要求のうち、優先度が一番高いサブアービタ４２２からのアクセスの転送処理時間「１」が調停許可マージンｔＭＥＲＧＩＮ「２」より小さい。そのため、調停処理部４２６は、今回アクセス要求を受け付けたサブアービタ４２１からの状態情報ＲＤＹ１がセット状態の場合であっても、メインアービタ４２４による調停処理を許可する。メインアービタ４２４は、優先度に基づいて選択した現像処理のコマンドをコマンドキュー４２５へ出力する。コマンドキュー４２５はＳＤＲＡＭ４０４が転送中のため、メインアービタ４２４から転送されたコマンドを内部に一時的に格納する。これを受けて、コマンドキュー４２５はキューフルフラグＦＵＬＬをセットする。ここでは、ＳＤＲＡＭ４０４と転送中の撮像処理の残り転送処理時間は１減るが、新たに現像処理の転送処理時間：１が加算されるためコマンドキューの処理時間ｔＴＲＡＮＳは「２」となる。次回のＨＤまでの残り時間ＨＤ＿ＣＮＴも「５」に減るため、調停許可マージンｔＭＥＲＧＩＮは「１」となる。
【００６２】
次にタイミングＴ５にて、サブアービタ４２１は、待たされていた表示処理の情報を含むアクセス要求ＳＲＥＱ１をメインアービタ４２４に出力する。このとき、サブアービタ４２１は、待たされているアクセス要求がなくなるため、状態情報ＲＤＹ１をクリアする。この時点で発行されているアクセス要求のうち、優先度が一番高いサブアービタ４２３からのアクセスの転送処理時間「２」が調停許可マージンｔＭＥＲＧＩＮ「１」より大きい。そのため、調停処理部４２６は、メインアービタ４２４による調停を行わないように制御する。また、コマンドキュー４２５はＳＤＲＡＭ４０４の転送が終了すると、格納済みの現像処理によるコマンドを発行し、データ転送を開始する。ここでは、コマンドキューの処理時間ｔＴＲＡＮＳは現像処理のみとなるため１となる。また、次回ＨＤまでの残り時間ＨＤ＿ＣＮＴも「４」に減るが、コマンドキューの処理時間ｔＴＲＡＮＳは変化しないため、調停許可マージンｔＭＥＲＧＩＮは「１」となる。
【００６３】
次にタイミングＴ６にて、サブアービタ４２２は待たされていた評価値処理の情報を含むアクセス要求ＳＲＥＱ２をメインアービタ４２４に出力する。このとき、サブアービタ４２２は、待たされているアクセス要求がなくなるため、状態情報ＲＤＹ２をクリアする。タイミングＴ６では、状態情報ＲＤＹ１、ＲＤＹ２が何れもセット状態でないため、調停処理部４２６はメインアービタ４２４による調停処理を許可する。メインアービタ４２４は、その時点で、優先度が一番高いバスマスタからのアクセス要求である、サブアービタ４２１からのアクセス要求によるコマンドを選択（ここでは表示処理）し、コマンドキュー４２５へ出力する。また、メインアービタ４３４は、サブアービタ４２１に対してアクセス受け付け信号ＳＡＣＫ１を出力する。コマンドキュー４２５はＳＤＲＡＭ４０４に対し表示処理に対するコマンドを発行しデータ転送を開始する。ここでは、コマンドキューの処理時間ｔＴＲＡＮＳは表示処理のみとなるため「２」となる。また、次回ＨＤまでの残り時間ＨＤ＿ＣＮＴも「３」に減るが、周期処理の対象である表示部の転送が開始されたため、調停許可マージンｔＭＥＲＧＩＮは次回ＨＤまで無効となる。
【００６４】
次にタイミングＴ７にて、サブアービタ４２１はアクセス受け付け信号ＳＡＣＫ１に合わせて、アクセス要求ＳＲＥＱ１を一旦取り下げる。メインアービタ４２４は、そのタイミングで優先度が一番高いサブアービタ４２３からのアクセス要求によるコマンドを選択（ここでは符号化処理）しコマンドキュー４２５へ出力する。また、サブアービタ４２３に対してアクセス受け付け信号ＳＡＣＫ３を出力する。コマンドキュー４２５はＳＤＲＡＭ４０４が転送中のため、メインアービタ４２４から転送されたコマンドを内部に一時的に格納する。これを受けて、コマンドキュー４２５はキューフルフラグＦＵＬＬをセットする。ここでは、ＳＤＲＡＭ４０４と転送中の撮像処理の残り転送処理時間は１減るが、新たに符号化処理の転送処理時間「２」が加算されるためコマンドキューの処理時間ｔＴＲＡＮＳは３となる。
【００６５】
次にタイミングＴ８にて、サブアービタ４２３はアクセス受け付け信号ＳＡＣＫ３に合わせて、アクセス要求ＳＲＥＱ３を一旦取り下げる。コマンドキュー４２５はＳＤＲＡＭ４０４の転送が終了すると、格納済みの符号化処理に対するコマンドを発行し、データ転送を開始する。また、コマンドキューに空きができるのでキューフルフラグ（ＦＵＬＬ）をクリアする。ここでは、コマンドキューの処理時間ｔＴＲＡＮＳは符号化処理のみとなるため「２」となる。
【００６６】
次にタイミングＴ９にて、水平同期信号ＨＤを検出した表示制御部４１４は、アクセス要求ＭＲＥＱ２を発行する。サブアービタ４２３は待たされていた認識処理の情報を含むアクセス要求ＳＲＥＱ３をメインアービタ４２４に出力する。このとき、サブアービタ４２２は、待たされているアクセス要求がなくなるため、状態情報ＲＤＹ３をクリアする。メインアービタ４２４は、このタイミングで優先度が一番高いバスマスタからのアクセス要求である、サブアービタ４２２からのアクセス要求によるコマンドを選択（ここでは評価値処理）し、コマンドキュー４２５へ出力する。コマンドキュー４２５はＳＤＲＡＭ４０４が転送中のため、メインアービタ４２４から転送されたコマンドを内部に一時的に格納する。これを受けて、コマンドキュー４２５はキューフルフラグＦＵＬＬをセットする。また、サブアービタ４２２に対してアクセス受け付け信号ＳＡＣＫ２を出力する。ここでは、ＳＤＲＡＭ４０４と転送中の符号化処理の残り転送処理時間は１減るが、新たに評価値処理の転送処理時間「１」が加算されるためコマンドキューの処理時間ｔＴＲＡＮＳは「２」となる。また、ＨＤを検出したため、マージン算出部４２７は、調停許可マージンを再計算する。次回のＨＤまでの残り時間ＨＤ＿ＣＮＴ「８」から、表示処理時間「２」、コマンドキューの処理時間ｔＴＲＡＮＳ「２」を減算するので、調停許可マージンｔＭＥＲＧＩＮは「４」となる。
【００６７】
次にタイミングＴ１０にて、サブアービタ４２１は表示処理の情報を含むアクセス要求ＳＲＥＱ１をメインアービタ４２４に出力する。また、サブアービタ４２２はアクセス受け付け信号ＳＡＣＫ２に合わせて、アクセス要求ＳＲＥＱ２を取り下げる。コマンドキュー４２５はＳＤＲＡＭ４０４の転送が終了すると、格納済みの評価値処理に対するコマンドを発行し、データ転送を開始する。また、コマンドキューに空きができるのでキューフルフラグ（ＦＵＬＬ）をクリアする。ここでは、コマンドキューの処理時間ｔＴＲＡＮＳは符号化処理のみとなるため「１」となる。
【００６８】
次にタイミングＴ１１にて、メインアービタ４３４は、その時点で優先度が一番高いバスマスタからのアクセス要求である、サブアービタ４２１からのアクセス要求によるコマンドを選択（ここでは表示処理）し、コマンドキュー４２５へ出力する。また、サブアービタ４２１に対してアクセス受け付け信号ＳＡＣＫ１を出力する。コマンドキュー４２５はＳＤＲＡＭ４０４に対し表示処理に対するコマンドを発行しデータ転送を開始する。ここでは、コマンドキューの処理時間ｔＴＲＡＮＳは表示処理のみとなるため「２」となる。また、次回ＨＤまでの残り時間ＨＤ＿ＣＮＴも「５」に減るが、周期処理の対象である表示部の転送が開始されたため、調停許可マージンｔＭＥＲＧＩＮは次回ＨＤまで無効となる。
【００６９】
次にタイミングＴ１２では、サブアービタ４２１はアクセス受け付け信号ＳＡＣＫ１に合わせて、アクセス要求ＳＲＥＱ１を取り下げる。メインアービタ４２４は、このタイミングで優先度が一番高いバスマスタからのアクセス要求である、サブアービタ４２３からのアクセス要求によるコマンドを選択（ここでは認識処理）し、コマンドキュー４２５へ出力する。コマンドキュー４２５はＳＤＲＡＭ４０４が転送中のため、内部に一次格納する。これを受けて、コマンドキュー４２５はキューフルフラグＦＵＬＬをセットする。ここでは、ＳＤＲＡＭ４０４と転送中の表示処理の残り転送処理時間は１減るが、新たに認識処理の転送処理時間「１」が加算されるためコマンドキューの処理時間ｔＴＲＡＮＳは２となる。
【００７０】
次にタイミングＴ１３では、サブアービタ４２２はアクセス受け付け信号ＳＡＣＫ２に合わせて、アクセス要求ＳＲＥＱ２を取り下げる。コマンドキュー４２５はＳＤＲＡＭ４０４の転送が終了すると、格納済みの認識処理に対するコマンドを発行し、データ転送を開始する。また、コマンドキューに空きができるのでキューフルフラグ（ＦＵＬＬ）をクリアする。ここでは、コマンドキューの処理時間ｔＴＲＡＮＳは認識処理のみとなるため「１」となる。
【００７１】
図６は本第２の実施形態におけるメインアービタ４２４の調停制御フローチャートである。以下、図５、６を用いて、メインアービタ４２４の調停許可の判定制御について説明する。
【００７２】
図５のタイミングＴ１、Ｔ２、Ｔ１３ではコマンドキュー４２５に空きがあり、調停待ちのマスタの有無を示す状態情報ＲＤＹ１〜３もセットされていない。そのため、このタイミングにて、メインアービタ４２５は、図６においてＳ６０１→Ｓ６０２→Ｓ６０３と判定処理を行い、調停を許可するため、ＡＲＢ＿ＥＮ＝‘１’とする。図５のタイミングＴ３の調停実施のタイミングでは、メインアービタ４２４は、選択したサブアービタ４２１の調停待ちバスマスタの有無を示す状態情報ＲＤＹ１がセットされていると判定する。本実施形態の構成では、サブアービタ４２１には表示制御部４１４が接続されており、Ｔ３の時点においてメインアービタ４２４で調停待ちをしているなかで一番優先度の高い現像処理部４１１より表示制御部４１４の優先度が高い。このため、メインアービタが調停を実施すると表示制御部４１４より優先度の低いバスマスタが選択されるため優先度の逆転が起きてしまう。しかし、現像処理の処理時間は「１」で調停許可マージンｔＭＥＲＧＩＮ「２」より小さい。このため、メインアービタ４２４は、図６のＳ６０１→Ｓ６０２→Ｓ６０４→Ｓ６０５→Ｓ６０６→Ｓ６０３と判定処理を行い、調停を許可するため、ＡＲＢ＿ＥＮ＝‘１’とする。タイミングＴ４、Ｔ７、Ｔ９、Ｔ１２では、コマンドキューの空きがないため、図６においてＳ６０１→Ｓ６０７と判定され、調停が禁止されるので、ＡＲＢ＿ＥＮ＝‘０’となる。タイミングＴ５では、メインアービタ４２４は、選択したサブアービタ４２２の調停待ちバスマスタの有無を示す状態情報ＲＤＹ２がセットされていると判定する。本実施形態の構成では、サブアービタ４２２には評価値処理部４１２が接続されており、メインアービタ４２４で調停待ちをしている符号化処理４１５より評価値処理部４１２の優先度が低い。しかし、符号化処理の処理時間「２」は、調停許可マージンｔＭＥＲＧＩＮ「１」より大きい。このため、メインアービタ４２４は、図６のＳ６０１→Ｓ６０２→Ｓ６０４→Ｓ６０５→Ｓ６０６→Ｓ６０７と判定処理を行い、調停が禁止されるので、ＡＲＢ＿ＥＮ＝‘０’となる。タイミングＴ６では、メインアービタ４２４は、選択したサブアービタ４２１の調停待ちバスマスタの有無を示す状態情報ＲＤＹ１がセットされていないと判定する。また、コマンドキューに空きがあるため、図６のＳ６０１→Ｓ６０２→Ｓ６０３と判定処理を行い、調停を許可するため、ＡＲＢ＿ＥＮ＝‘１’とする。タイミングＴ８では、メインアービタ４２４は、選択したサブアービタ４２３の調停待ちバスマスタの有無を示す状態情報ＲＤＹ３がセットされていると判定する。本実施形態の構成では、サブアービタ４２３には認識処理部４１３が接続されており、Ｔ８の時点においてメインアービタ４２４で調停待ちをしているなかで一番優先度の高い評価値処理部４１２より認識処理部４１３の優先度が高い。このため、メインアービタが調停を実施すると認識処理部４１３より優先度の低いバスマスタが選択されるため優先度の逆転が起きてしまう。しかし、調停許可マージンｔＭＥＲＧＩＮは無効となっているため、図６のＳ６０１→Ｓ６０２→Ｓ６０４→Ｓ６０５→Ｓ６０６→Ｓ６０３と判定処理を行い、調停を許可するため、ＡＲＢ＿ＥＮ＝‘１’とする。タイミングＴ１０では、メインアービタ４２４によって前回選択したサブアービタ４２２からの状態情報ＲＤＹ２がクリアされている。また、コマンドキューにも空きがあるので、メインアービタ４２４は、図３においてＳ６０１→Ｓ６０２→Ｓ６０３と判定処理を経て、調停を許可するため、ＡＲＢ＿ＥＮ＝‘１’にする。タイミングＴ１１では、メインアービタ４２４によって前回選択したサブアービタ４２２からの状態情報ＲＤＹ２がクリアされている。また、コマンドキューにも空きがあるので、メインアービタ４２４は、図３においてＳ６０１→Ｓ６０２→Ｓ６０３と判定処理を経て、調停を許可するため、ＡＲＢ＿ＥＮ＝‘１’にする。
【００７３】
以上に説明したように、タイミングＴ４で示すようにサブアービタとメインアービタ間のハンドシェイク期間中に、より優先度の高いバスマスタのアクセス要求がメインアービタに到達していない状況があったとする。この場合、本第２の実施形態のメインアービタ４２４は、リアルタイム性の高い処理のマージンの範囲であれば、優先度の低いバスマスタのアクセス要求を先行して受け付ける。この結果、リアルタイム性の高い処理の破綻を防止しつつ、メモリバス帯域のロスを削減することができる。
【００７４】
［第３の実施形態］
次に、第３の実施形態について説明する。上記の第１の実施形態では、バスマスタの転送処理時間よりもアービタ間のハンドシェイク時間が大きい。このため、図２のタイミングＴ５〜６の期間は、ＳＤＲＡＭ１０４が待機状態でバスマスタからのアクセス要求が出ているにも関わらず、調停が禁止されるため、ＳＤＲＡＭのメモリバス帯域をロスすることになる。つまり、バスマスタの転送処理時間よりもアービタ間のハンドシェイク時間が小さい場合はアービタ間のハンドシェイクが終了するまで調停を停止してもメモリバス帯域のロスは発生しない。
【００７５】
そこで、本第３の実施形態では、サブアービタとメインアービタ間のハンドシェイク期間中はメインアービタの調停を停止する。これにより、サブアービタで待たされている他のバスマスタの存在／非存在を示す状態情報ＲＤＹを使用することなく優先度の低いバスマスタからの要求を、優先度の高いバスマスタより先行して受信してしまうことを防止する。
【００７６】
図１０は、本第３の実施形態が適用する撮像装置のブロック構成図である。同図における符号１０００〜１００４、１０１０〜１０１５は、第１の実施形態の図１における符号１０１〜１０４、１１０〜１１５それぞれに対応し、その機能や動作も同じであるものとし、それらの説明は省略する。また、以下に説明するバスマスタにおける処理時間を示す情報はメインアービタ１０２４が予め保持しているものとするが、ＬＳＩ１００の外部に設けられたＲＯＭに保持させても構わない。
【００７７】
次に第３の実施形態のメモリコントローラ１０２０の内部構成について説明する。メモリコントローラ１０２０は、サブアービタ１０２１〜１０２３、メインアービタ１０２４、タイマ１０４０、調停制御部１０２６、コマンドキュー１０２５を有する。各バスマスタは、アクセス要求ＲＥＱ＃を発行する際に、自身を特定する信号、並びに共有メモリ（ＳＤＲＡＭ１００４）に対するコマンドも含めて発行するものとする。そして、サブアービタ１０２１〜１０２３は、自身に接続されたバスマスタ間の調停を行い、メインアービタ１０２４はサブアービタ間の調停を行う。
【００７８】
サブアービタ１０２１は、バスマスタとしての撮像処理部１０１０、表示制御部１０１４からの共有メモリ（ＳＤＲＡＭ１００４）へのアクセス要求ＭＲＥＱ１、２を同時に受信した場合、予め設定される優先度に応じて一つのバスマスタを選択し、選択したバスマスタからのアクセス要求をメインアービタ１０２４に転送する。サブアービタ１０２２、１０２３も同様である。そして、サブアービタ１０２１〜１０２３それぞれは、メインアービタ１０２４へアクセス要求ＳＲＥＱ＃（＃は１〜３のいずれか）を発行する。また、サブアービタ１０２１は、これと同時に、アクセス要求ＭＲＥＱを発行中のバスマスタのうち、選択したバスマスタに対し、アクセス受け付けたことを示す応答ＭＡＣＫ＃（＃は１、２のいずれか）を出力する。サブアービタ１０２２、１０２３も同様である。また、サブアービタ１０２１〜１０２３からメインアービタ１０２４に発行されるアクセス要求ＳＲＥＱ＃には、その要求元のバスマスタを特定する信号、並びに、要求元のバスマスタからのＳＤＲＡＭ１００４に対するコマンドが含まれるものとする。
【００７９】
メインアービタ１０２４は調停が許可（ＡＲＢ_ＥＮ＝‘１’）されている場合は、アクセス要求を発行中のサブアービタ１０２１〜１０２３から、予め設定される優先度に応じた１つのサブアービタを選択する。そして、メインアービタ１０２４は、選択したサブアービタに対し、アクセス受け付けたことを示す応答ＳＡＣＫ＃（＃は１〜３のいずれか）を出力する。また、メインアービタ１０２４は、選択されたサブアービタからのアクセス要求のコマンドをコマンドキュー１０２５とタイマ１０４０へ出力する。コマンドキュー１０２５は、メインアービタ１０２４から出力されたアクセス要求によるコマンドを一時的に格納する。そして、先に格納したコマンドから順番にＳＤＲＡＭ１００４に転送し、ＳＤＲＡＭ１００４とデータ転送を行う。また、コマンドキュー１０２５は、キューへのコマンドの格納状態をキューフルＦＵＬＬ信号として調停制御部１０２６に供給する。コマンドキュー１０２５は、キューに空きがなくなった場合にはキューフルフラグ（ＦＵＬＬ）をセットする。タイマ１０４０は、メインアービタ１０２４で調停の開始されたときにタイマのカウントを起動し、カウント値が予め設定される所定値になるまで次の調停実施を停止するＳＴＯＰ信号を調停制御部１０２６へ出力する。調停制御部１０２６は、コマンドキュー１０２５からの信号ＦＵＬＬとタイマ１０４０からの信号ＳＴＯＰに応じて、メインアービタ１０２４による調停可否を決定するための調停許可信号（ＡＲＢ＿ＥＮ）を制御する。
【００８０】
図１１は本第３の実施形態におけるメモリコントローラ１０２０の処理に係るタイミングチャートである。図１１を用いてメモリコントローラ１０２０の制御の一例について説明する。
【００８１】
図１１において、タイミングＴ１でサブアービタ１０２１〜１０２３に繋がる全てのバスマスタからアクセス要求ＭＲＥＱ１〜ＭＲＥＱ６が発行されている。
【００８２】
次のタイミングＴ２にて、サブアービタ１０２１〜１０２３それぞれは、予め設定される優先度に従って調停を実施し、メインアービタ１０２４に対し、選択されたバスマスタを特定する情報を付加してアクセス要求を発行する（ＳＲＥＱ１〜３）。また、サブアービタ１０２１〜１０２３それぞれは、選択されたバスマスタに、要求を受けたことを示す応答ＭＡＣＫ＃を出力する。なお、図示の場合、このタイミングにて、撮像処理部１０１０、現像処理部１０１１、符号化処理部１０１５が選択されていることを示している。
【００８３】
次にタイミングＴ３にて、メインアービタ１０２４は、その時点で優先度が一番高いバスマスタからのアクセス要求である、サブアービタ１０２１からのアクセス要求によるコマンドを選択（ここでは撮像処理部１０１０）し、コマンドキュー１０２５へ出力する。また、メインアービタ１０２４は、サブアービタ１０２１に対してアクセス受け付けたことを示す応答ＳＡＣＫ１を出力する。コマンドキュー１０２５は、既にＳＤＲＡＭ１００４をアクセスしているバスマスタが存在しない場合には、直ぐにそのコマンドを発行し、撮像処理のデータ転送を開始する。また、タイマ１０４０はメインアービタ１０２４で調停が実施されるとクロックＣＬＫに同期してカウントアップを開始する。本実施形態ではサブアービタ１０２１〜１０２３とメインアービタ１０２４間のハンドシェイク期間を「２」とする。タイマ１０４０は、カウント値が「１」、「２」の期間はＳＴＯＰ信号をセットする。図１１の例では、メインアービタ１０２４は、タイミングＴ３でサブアービタ１０２１〜１−２３から同時にアクセス要求ＳＲＥＱ＃を受信し、調停を行うことになるので、タイマ１０４０はカウントアップを行い、そのタイマカウント値が「１」にセットされることになる。
【００８４】
次にタイミングＴ４にて、サブアービタ１０２１は、メインアービタ１０２４からのアクセス受け付けたことを示す応答ＳＡＣＫ１に合わせて、アクセス要求ＳＲＥＱ１を一旦取り下げる。そして、タイミングＴ５にて、サブアービタ１０２１は、待たされていた表示制御部１０１４の情報（表示制御部１０１４を特定する信号とそのコマンドを含む）を付加してアクセス要求ＳＲＥＱ１をメインアービタ１０２４に出力する。このとき、タイマ１０４０はアービタ間のハンドシェイク期間とタイマカウント値が等しくなるため、ＳＴＯＰ信号をクリアする。つまり、メインアービタ１０２４による調停ＡＲＢ＿ＥＮが“１”となって、調停可となる。また、サブアービタ１０２１は表示制御部１１４に要求を受けたことを示す応答ＭＡＣＫ２を出力する。
【００８５】
次にタイミングＴ６でメインアービタ１０２４は、優先度が一番高いサブアービタ１０２１からのアクセスに対するコマンドを選択（ここでは表示制御部１０１４）しコマンドキュー１０２５へ出力する。また、サブアービタ１０２１に対してアクセス受け付けたことを示す応答ＳＡＣＫ１を出力する。コマンドキュー１０２５はＳＤＲＡＭ１００４が転送中のため、内部に一次格納しキューフルフラグＦＵＬＬをセットする。また、タイマ１０４０はタイマのカウントアップを開始する。
【００８６】
次のタイミングＴ７にて、サブアービタ１０２１はメインアービタ１０２４からの応答ＳＡＣＫ１に合わせて、アクセス要求ＳＲＥＱ１を取り下げる。コマンドキュー１０２５はＳＤＲＡＭ１００４の転送が終了すると、格納済みの表示処理に対するコマンドを発行し、データ転送を開始する。また、コマンドキューが空になるためＦＵＬＬをクリアする。そして、タイミングＴ８では、タイマ１０４０はアービタ間のハンドシェイク期間とタイマカウント値が等しくなるため、ＳＴＯＰ信号をクリアする。
【００８７】
次にタイミングＴ９でメインアービタ１０２４は、その時点で優先度が一番高いバスマスタからのアクセス要求である、サブアービタ１０２２からのアクセス要求によるコマンドを選択（ここでは現像処理部１０１１）しコマンドキュー１０２５へ出力する。また、サブアービタ１０２２に対してアクセス受け付けたことを示す応答ＳＡＣＫ２を出力する。コマンドキュー１０２５はＳＤＲＡＭ１００４が転送中のため、メインアービタ１０２４からのコマンドを内部に一時的に格納し、キューフルフラグＦＵＬＬをセットする。また、タイマ１０４０はタイマのカウントアップを開始し、ＳＴＯＰをセットする。
【００８８】
次にタイミングＴ１０にて、サブアービタ１０２２は、メインアービタ１０２４からのアクセス受け付けたことを示す応答ＳＡＣＫ２に合わせて、アクセス要求ＳＲＥＱ２を一旦取り下げる。そして、タイミングＴ１１にて、サブアービタ１０２２は、待たされていた評価値処理部１０１２の情報（評価値処理部１０１２を特定する信号とそのコマンドを含む）を付加してアクセス要求ＳＲＥＱ２をメインアービタ１０２４に出力する。このとき、タイマ１０４０はアービタ間のハンドシェイク期間とタイマカウント値が等しくなるため、ＳＴＯＰ信号をクリアする。また、サブアービタ１０２２は評価値処理部１０１２に要求を受けたことを示す応答ＭＡＣＫ２を出力する。また、コマンドキュー１０２５はＳＤＲＡＭ１００４の転送が終了すると、格納済みの現像処理に対するコマンドを発行し、データ転送を開始する。また、コマンドキューが空になるためＦＵＬＬをクリアする。
【００８９】
次にタイミングＴ１２でメインアービタ１０２４は、その時点で優先度が一番高いバスマスタからのアクセス要求である、サブアービタ１０２３からのアクセス要求によるコマンドを選択（ここでは符号化処理部１０１５）し、コマンドキュー１０２５へ出力する。また、サブアービタ１０２３に対してアクセス受け付けたことを示す応答ＳＡＣＫ３を出力する。コマンドキュー１０２５はＳＤＲＡＭ１００４が転送中のため、メインアービタ１０２４からのコマンドを内部に一時的に格納し、キューフルフラグＦＵＬＬをセットする。また、タイマ１０４０はタイマのカウントアップを開始し、ＳＴＯＰをセットする。
【００９０】
次にタイミングＴ１３にて、サブアービタ１０２３は、メインアービタ１０２４からのアクセス受け付けたことを示す応答ＳＡＣＫ３に合わせて、アクセス要求ＳＲＥＱ３を一旦取り下げる。そして、タイミングＴ１４にて、サブアービタ１０２３は、待たされていた認識処理部１０１３の情報（認識処理部１０１３を特定する信号とそのコマンドを含む）を付加してアクセス要求ＳＲＥＱ３をメインアービタ１０２４に出力する。このとき、タイマ１０４０はアービタ間のハンドシェイク期間とタイマカウント値が等しくなるため、ＳＴＯＰ信号をクリアする。また、サブアービタ１０２３は認識処理部１０１３に要求を受けたことを示す応答ＭＡＣＫ５を出力する。タイミングＴ１５では、コマンドキュー１０２５はＳＤＲＡＭ１００４の転送が終了すると、格納済みの符号化処理に対するコマンドを発行し、データ転送を開始する。また、コマンドキューが空になるためＦＵＬＬをクリアする。
【００９１】
次にタイミングＴ１６でメインアービタ１０２４は、その時点で優先度が一番高いバスマスタからのアクセス要求である、サブアービタ１０２３からのアクセス要求によるコマンドを選択（ここでは認識処理部１０１３）し、コマンドキュー１０２５へ出力する。また、サブアービタ１０２３に対してアクセス受け付けたことを示す応答ＳＡＣＫ３を出力する。コマンドキュー１０２５はＳＤＲＡＭ１００４が転送中のため、メインアービタ１０２４からのコマンドを内部に一時的に格納し、キューフルフラグＦＵＬＬをセットする。また、タイマ１０４０はタイマのカウントアップを開始し、ＳＴＯＰをセットする。
【００９２】
次にタイミングＴ１７にて、サブアービタ１０２３は、メインアービタ１０２４からのアクセス受け付けたことを示す応答ＳＡＣＫ３に合わせて、アクセス要求ＳＲＥＱ３を取り下げる。そして、タイミングＴ１８にて、タイマ１０４０はアービタ間のハンドシェイク期間とタイマカウント値が等しくなるため、ＳＴＯＰ信号をクリアする。タイミングＴ１９では、コマンドキュー１０２５はＳＤＲＡＭ１００４の転送が終了すると、格納済みの認識処理に対するコマンドを発行し、データ転送を開始する。また、コマンドキューが空になるためＦＵＬＬをクリアする。
【００９３】
次にタイミングＴ２０でメインアービタ１０２４は、その時点で優先度が一番高いバスマスタからのアクセス要求である、サブアービタ１０２２からのアクセス要求によるコマンドを選択（ここでは評価値処理部１０１２）し、コマンドキュー１０２５へ出力する。また、サブアービタ１０２２に対してアクセス受け付けたことを示す応答ＳＡＣＫ２を出力する。コマンドキュー１０２５はＳＤＲＡＭ１００４が転送中のため、メインアービタ１０２４からのコマンドを内部に一時的に格納し、キューフルフラグＦＵＬＬをセットする。また、タイマ１０４０はタイマのカウントアップを開始し、ＳＴＯＰをセットする。
【００９４】
次にタイミングＴ２１にて、サブアービタ１０２２は、メインアービタ１０２４からのアクセス受け付けたことを示す応答ＳＡＣＫ２に合わせて、アクセス要求ＳＲＥＱ２を取り下げる。そして、タイミングＴ２２にて、タイマ１０４０はアービタ間のハンドシェイク期間とタイマカウント値が等しくなるため、ＳＴＯＰ信号をクリアする。タイミングＴ２３では、コマンドキュー１０２５はＳＤＲＡＭ１００４の転送が終了すると、格納済みの評価値処理に対するコマンドを発行し、データ転送を開始する。また、コマンドキューが空になるためＦＵＬＬをクリアする。
【００９５】
図１２は本第３の実施形態におけるメインアービタ１０２４の調停制御フローチャートである。以下、図１１、１２を用いて、メインアービタ１０２４の調停許可の判定制御について説明する。
【００９６】
図１１のタイミングＴ１、Ｔ２、Ｔ２４〜２６ではコマンドキュー１０２５に空きがあり、メインアービタ１０２４が前回の調停を実施してから所定期間（本実施形態では「２」）を経過している。このため、図１２においてＳ１２０１→Ｓ１２０２→Ｓ１２０３と判定処理を行い、調停を許可するため、調停制御部１０２６はＡＲＢ＿ＥＮ＝‘１’とする。図１１のタイミングＴ３では、コマンドキュー１０２５に空きがあり、メインアービタ１０２４で調停が実施されるためタイマ１０４０よりＳＴＯＰ信号がセットされる。このため、図１２においてＳ１２０１→Ｓ１２０２→Ｓ１２０４と判定され、調停制御部１０２６は調停が禁止する。つまり、調停制御部１０２６はＡＲＢ＿ＥＮ＝‘０’とする。また、Ｔ４では、タイマ１０４０のカウンタが動作中でありＳＴＯＰ信号がセットされているため、図１２においてＳ１２０１→Ｓ１２０２→Ｓ１２０４と判定され、調停が禁止されるため、ＡＲＢ＿ＥＮ＝‘０’とする。
【００９７】
図１１のタイミングＴ５、Ｔ８では、タイマ１０４０のカウンタが所定値（本実施形態では「２」）となりＳＴＯＰ信号がクリアされる。このため、図１２においてＳ１２０１→Ｓ１２０２→Ｓ１２０３と判定処理が行われ、調停制御部１０２６は調停を許可するため、ＡＲＢ＿ＥＮ＝‘１’とする。図１１のタイミングＴ６、Ｔ９、Ｔ１２、Ｔ１６、Ｔ２０では、メインアービタ１０２４で調停が実施され、ＳＤＲＡＭ１００４も転送中のため、調停されたコマンドがコマンドキュー１０２５に格納され、ＦＵＬＬ信号がセットされるため、図１２においてＳ１２０１→Ｓ１２０４と判定され、調停が禁止される。このため、調停制御部１０２６はＡＲＢ＿ＥＮ＝‘０’とする。
【００９８】
図１１のタイミングＴ７では、ＳＤＲＡＭ１００４の転送が終了し、コマンドキュー１０２５に格納されていたコマンドの転送が開始されるためＦＵＬＬ信号がクリアされる。しかし、タイマ１０４０はカウンタ値が「２」であるので、調停制御部１０２６へのＳＴＯＰ信号がセットされている。このため、図１２においてＳ１２０１→Ｓ１２０２→Ｓ１２０４と判定され、調停制御部１０２６は調停を禁止するためにＡＲＢ＿ＥＮ＝‘０’とする。図１１のタイミングＴ１０、Ｔ１３、Ｔ１４、Ｔ１７、Ｔ１８、Ｔ２１、Ｔ２２ではコマンドキュー１０２５に空きがないためＦＵＬＬ信号がセットされている。それ故、図１２においてＳ１２０１→Ｓ１２０２→Ｓ１２０４と判定され、調停制御部１０２５は調停を禁止するために、ＡＲＢ＿ＥＮ＝‘０’とする。
【００９９】
以上の結果、タイミングＴ３〜Ｔ５で示すように一つのサブアービタに優先度の高いバスマスタが集中し、より優先度の高いバスマスタのアクセス要求がメインアービタに到達していない状況においてメインアービタの調停が禁止される。この結果、メインアービタは、優先度の低いバスマスタからの要求を、優先度の高いバスマスタより先行して受信してしまうことを防止できる。
【０１００】
なお、実施形態におけるタイマ１０４０はクロックＣＬＫに同期して０，１，２の３値を計時するタイマとしたが、計時する値によって発明が限定されるものではない。また、タイマ１０４０はカウントアップするものとしたが、カウントダウンしても構わない。要は、調停を開始してからの経過時間（クロック数）を計測できれば良いからである。
【符号の説明】
【０１０１】
１００…ＬＳＩ、１０１…撮像センサ、１０２…表示部、１０３…記録媒体、１０４…ＳＤＲＡＭ、１１０…撮像処理部、１１１…現像処理部、１１２…評価値処理部、１１３…認識処理部、１１４…表示制御部、１１５…符号化部、１２０…メモリコントローラ、１２１、１２２、１２３…サブアービタ、１２４…メインアービタ、１２５…コマンドキュー、１２６…調停制御部
【図１】
2017162431.tif 000003
【図２】
2017162431.tif 000004
【図３】
2017162431.tif 000005
【図４】
2017162431.tif 000006
【図５】
2017162431.tif 000007
【図６】
2017162431.tif 000008
【図７】
2017162431.tif 000009
【図８】
2017162431.tif 000010
【図９】
2017162431.tif 000011
【図１０】
2017162431.tif 000012
【図１１】
2017162431.tif 000013
【図１２】
2017162431.tif 000014