(57)【特許請求の範囲】
【請求項１】
リアルタイム処理の開始要求に応じてリアルタイム処理を行う処理手段と、
バスと、
前記処理手段からのデータを転送する第１のバスマスタを含み、それぞれが前記バスに接続された複数のバスマスタと、
前記バスに接続され、前記複数のバスマスタとメモリとの間でデータの転送を行うメモリコントローラと、
前記複数のバスマスタから発行されたリクエストに応じて前記メモリコントローラによりデータの転送を行わせるとともに、前記バスマスタの転送データのバースト長を制御する制御手段とを備え、
前記制御手段は、前記処理手段による前記リアルタイム処理が行われていない場合、前記複数のバスマスタのうち前記第１のバスマスタ以外の所定のバスマスタの転送データのバースト長を第１のバースト長に設定し、前記処理手段による前記リアルタイム処理が開始された場合、前記リアルタイム処理の開始要求を受け付けたときに発行済みのリクエストによるデータの転送が完了した後、前記所定のバスマスタにおける転送データのバースト長を、前記第１のバースト長から、前記第１のバースト長よりも短い第２のバースト長に変更することを特徴とする電子機器。
【請求項２】
撮像手段と、
バスと、
前記撮像手段により得られた画像データを転送する第１のバスマスタを含み、それぞれが前記バスに接続された複数のバスマスタと、
前記バスに接続され、前記複数のバスマスタとメモリとの間で画像データの転送を行うメモリコントローラと、
前記複数のバスマスタから発行されたリクエストに応じて前記メモリコントローラにより画像データの転送を行わせるとともに、前記バスマスタの転送データのバースト長を制御する制御手段とを備え、
前記制御手段は、前記撮像手段による連写処理が行われていない場合、前記複数のバスマスタのうち前記第１のバスマスタ以外の所定のバスマスタの転送データのバースト長を第１のバースト長に設定し、連写開始の要求により前記撮像手段による連写処理が開始された場合、前記連写開始の要求を受け付けたときに発行済みのリクエストによる画像データの転送が完了した後、前記所定のバスマスタの転送データのバースト長を、前記第１のバースト長から、前記第１のバースト長よりも短い第２のバースト長に変更することを特徴とする電子機器。
【請求項３】
リアルタイム処理の開始要求に応じてリアルタイム処理を行う処理手段と、
バスと、
前記処理手段からのデータを転送する第１のバスマスタを含み、それぞれが前記バスに接続された複数のバスマスタと、
前記バスに接続され、前記複数のバスマスタとメモリとの間でデータの転送を行うメモリコントローラと、
前記複数のバスマスタから発行されたリクエストに応じて前記メモリコントローラによりデータの転送を行わせるとともに、前記バスマスタの転送データのバースト長を制御する制御手段とを備える電子機器の制御方法であって、
前記制御手段が、前記処理手段による前記リアルタイム処理が行われていない場合、前記複数のバスマスタのうち前記第１のバスマスタ以外の所定のバスマスタの転送データのバースト長を第１のバースト長に設定し、前記処理手段による前記リアルタイム処理が開始された場合、前記リアルタイム処理の開始要求を受け付けたときに発行済みのリクエストによるデータの転送が完了した後、前記所定のバスマスタにおける転送データのバースト長を、前記第１のバースト長から、前記第１のバースト長よりも短い第２のバースト長に変更する制御工程を
備えることを特徴とする方法。
【請求項４】
撮像手段と、
バスと、
前記撮像手段により得られた画像データを転送する第１のバスマスタを含み、それぞれが前記バスに接続された複数のバスマスタと、
前記バスに接続され、前記複数のバスマスタとメモリとの間で画像データの転送を行うメモリコントローラと、
前記複数のバスマスタから発行されたリクエストに応じて前記メモリコントローラにより画像データの転送を行わせるとともに、前記バスマスタの転送データのバースト長を制御する制御手段と
を備える電子機器の制御方法であって、
前記制御手段が、前記撮像手段による連写処理が行われていない場合、前記複数のバスマスタのうち前記第１のバスマスタ以外の所定のバスマスタの転送データのバースト長を第１のバースト長に設定し、連写開始の要求により前記撮像手段による連写処理が開始された場合、前記連写開始の要求を受け付けたときに発行済みのリクエストによる画像データの転送が完了した後、前記所定のバスマスタにおける転送データのバースト長を、前記第１のバースト長から、前記第１のバースト長よりも短い第２のバースト長に変更する制御工程
を備えることを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器及びその制御方法に関する。
【背景技術】
【０００２】
複数のバスマスタが効率良くバスへアクセスする方式として、スプリット・バス・トランザクションという方式がある。スプリット・バス・トランザクションは、バスへのリクエストを、予め予約しておく点に特徴がある。このようにしてスレーブへのアクセス要求（リクエスト）と応答とを分離することで、スループットの向上が図られる反面、リアルタイム性の高いバスマスタからの要求にもかかわらず、スレーブ応答が遅れる可能性がある。
【０００３】
特許文献１は、リアルタイム性の高いバスマスタのスレーブ応答の遅れることを回避するために、スレーブ応答時間の最悪値とデータバッファの蓄積量から、他のバスマスタのアクセスを禁止する方式を提案している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６-１８９９１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、現行のデジタルスチルカメラ等の製品においては、内部バス（特定のバスマスタとバススレーブ間のバス）と、外部バス（外部メモリとスレーブが接続されるバス）の比率が異なる場合がある。例えば、製品形態として上位機種と呼ばれるものは、外部バスとして帯域の大きいもの（ここでは、外部メモリのデータ幅やクロックの周波数を指す）を使用する。その一方、下位機種と呼ばれる製品に対しては、コスト削減の目的で、外部バスに帯域の低いものを使用する。
【０００６】
一方、内部バスに関しては、一般的に、ＬＳＩ等のハードウェアで実装されることが多く、製品形態（上位／下位）によらず、固定帯域を使用することになる。複数のＬＳＩを開発するには開発工数やコストもかかるため、上位から下位の機種に関係なく、できるだけ同一のＬＳＩを使用することが、デジタルスチルカメラの開発手法となっている。
【０００７】
外部バスの仕様に応じて、製品毎にバス使用条件に応じたバス設計を行うとすると、製品毎の設計負荷が生じ効率的ではない。特に、スプリット・バス・トランザクションを使用している場合、バススレーブの応答時間を考慮する必要があり、外部バスの変更に際してその都度変更するのは、大変手間のかかる作業となる。
【０００８】
以下に、スプリット・バス・トランザクションにおいて、外部バスに変更が生じたときのバススレーブの待ち時間がどのように変化するのかを簡単に説明する。
【０００９】
図１２（Ａ）は、内部バス、外部バス共に６４ビット、クロック周波数が同一のバスアクセスのタイミングチャートである。３つのバスマスタＡ、Ｂ、Ｃを仮定し、バスマスタＡ、Ｂはバスリクエストを既に発行済みである。ここでバスマスタＣがバスリクエストを発行すると、予約済のバスマスタＡ、Ｂの処理終了後にバスマスタＣの処理が開始される。従って、このときのバスマスタＣのスレーブ応答待ち時間は、図示された、Ｔ１の時間となる。なお、各バスマスタは、それぞれ、最大バースト長として「４」の長さのアクセスを行っている。
【００１０】
一方、図１２（Ｂ）は、図１２（Ａ）に対して、外部バスが３２ビットに削減された場合のタイミングチャートである。このとき、外部バスは、図１２（Ａ）のときのバス幅に対して１／２となるため、外部バスのアクセス時間は、２倍の時間を要する。従って、バスマスタＣのスレーブ応答の待ち時間Ｔ１は、約２倍の時間となる。
【００１１】
このような場合、従来のような他のバスマスタのアクセスを禁止するような制御だけでは、待ち時間が長くなった分だけアクセスが禁止される可能性が高まる。その結果、禁止時間が多くなり、他のバスマスタの処理が遅れ、全体処理のスループット低下につながることが想定される。
【００１２】
そこで本発明は、全体処理のスループット低下を防止しつつも、リアルタイム性を必要とするバスマスタの動作を保証するための技術を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記課題を解決するためのある側面に対応する発明は、電子機器であって、
リアルタイム処理の開始要求に応じてリアルタイム処理を行う処理手段と、
バスと、
前記処理手段からのデータを転送する第１のバスマスタを含み、それぞれが前記バスに接続された複数のバスマスタと、
前記バスに接続され、前記複数のバスマスタとメモリとの間でデータの転送を行うメモリコントローラと、
前記複数のバスマスタから発行されたリクエストに応じて前記メモリコントローラによりデータの転送を行わせるとともに、前記バスマスタの転送データのバースト長を制御する制御手段とを備え、
前記制御手段は、前記処理手段による前記リアルタイム処理が行われていない場合、前記複数のバスマスタのうち前記第１のバスマスタ以外の所定のバスマスタの転送データのバースト長を第１のバースト長に設定し、前記処理手段による前記リアルタイム処理が開始された場合、前記リアルタイム処理の開始要求を受け付けたときに発行済みのリクエストによるデータの転送が完了した後、前記所定のバスマスタにおける転送データのバースト長を、前記第１のバースト長から、前記第１のバースト長よりも短い第２のバースト長に変更することを特徴とする。
【００１４】
上記課題を解決するための他の側面に対応する発明は、電子機器であって、
撮像手段と、
バスと、
前記撮像手段により得られた画像データを転送する第１のバスマスタを含み、それぞれが前記バスに接続された複数のバスマスタと、
前記バスに接続され、前記複数のバスマスタとメモリとの間で画像データの転送を行うメモリコントローラと、
前記複数のバスマスタから発行されたリクエストに応じて前記メモリコントローラにより画像データの転送を行わせるとともに、前記バスマスタの転送データのバースト長を制御する制御手段とを備え、
前記制御手段は、前記撮像手段による連写処理が行われていない場合、前記複数のバスマスタのうち前記第１のバスマスタ以外の所定のバスマスタの転送データのバースト長を第１のバースト長に設定し、連写開始の要求により前記撮像手段による連写処理が開始された場合、前記連写開始の要求を受け付けたときに発行済みのリクエストによる画像データの転送が完了した後、前記所定のバスマスタの転送データのバースト長を、前記第１のバースト長から、前記第１のバースト長よりも短い第２のバースト長に変更することを特徴とする。
【発明の効果】
【００１６】
本発明によれば、全体処理のスループット低下を防止しつつも、リアルタイム性を必要とするバスマスタの動作を保証するための技術を提供することができる。
【図面の簡単な説明】
【００１７】
【図１】実施形態に対応する電子機器の構成例を示すブロック図。
【図２】実施形態に対応するデータバッファ９のデータの蓄積状況の説明図。
【図３】データバスの占有状況の一例の説明図。
【図４】データバスの占有状況の他の一例の説明図。
【図５】実施形態１を適用した場合のデータバスの占有状況の一例の説明図。
【図６】実施形態１に対応する処理のフローチャート。
【図７】実施形態２に対応する外部メモリに対するアクセスの説明図。
【図８】実施形態２に対応するフローチャート。
【図９】実施形態３に対応するバッファの蓄積量とアクセス制御の閾値との関係の説明図。
【図１０】実施形態３における各バスマスタへの属性割り当ての説明図。
【図１１】実施形態３に対応する処理のフローチャート。
【図１２】内部バスと外部バスの帯域によりバスマスタの応答時間が変化することを概念的に説明する図。
【発明を実施するための形態】
【００１８】
次に図を参照しながら、本発明の実施形態について説明する。以下の実施形態では、内部バスに複数のバスマスタとバススレーブとが接続され、バススレーブを介した外部メモリへのアクセスをバスアービタを用いて制御するシステムＬＳＩを備える電子機器の動作を説明する。当該電子機器の一例として各実施形態デジタルカメラを採用するが、デジタルカメラの代わりにデジタルビデオカメラ、カメラ付携帯電話、カメラ付きパーソナルコンピュータ等の撮像装置や情報処理装置を採用することも可能である。
【００１９】
［実施形態１］
図１は、実施形態１の電子機器の一例であるデジタルカメラにおけるバスシステムの構成を説明するブロック図である。以下、図１について説明をする。
【００２０】
図１において、システムＬＳＩ１は、発明の実施形態に対応するバスシステムを含むシステムＬＳＩである。内部バス２は、システムＬＳＩ１内に存在する内部バスである。バスマスタ３から８は、内部バス２に接続されるバスマスタである。各バスマスタは属性情報を有する。この属性情報は、各バスマスタが必要とするバス帯域等によって、予め決定される。割り当てられた属性情報と、バスアービタからの禁止信号と制限信号とによって、各バスマスタの制御（主にバースト長）を切り替える。属性情報の決定方法の具体例及びそれを用いた制御の詳細については実施形態３で説明する。
【００２１】
データバッファ９は、第１のバスマスタとしてのバスマスタ#０に接続され、アクセス禁止要求信号１５とアクセス制限要求信号１６の２本の信号を出力する。バスアービタ１０は、複数のバスマスタからのスレーブに対するリクエストの調停を行う。また、バスマスタに対するバースト長の切替指示を行う。より具体的には、データバッファ９から出力されるアクセス禁止要求信号１５に従って、禁止信号を各バスマスタに発行できる。更に、データバッファ９から出力されるアクセス制限要求信号１６によって、制限信号を各バスマスタに発行できる。アクセス禁止要求信号１５及びアクセス制限要求信号１６に基づく制御については実施形態３で説明する。
【００２２】
メインＣＰＵ１１は、システムＬＳＩ１の制御を司り、各バスマスタに対して属性を設定することができる。バススレーブ１２は、内部バスと接続され、外部メモリを制御するメモリコントローラとして機能する。本実施形態ではバススレーブの数は１個である。システムＬＳＩ１は、その他に外部メモリ（SDRAM）１３と、外部メモリとバススレーブとを接続する外部バス１４とを含む。
【００２３】
データバッファ９には、撮像回路２０が接続されている。撮像回路２０には、ＣＣＤやＣＭＯＳといった撮像素子で構成される光学センサ（以下センサ）２２から読み出されたアナログデータが、回路群２１でデジタルデータに変換されて入力される。撮像回路２０には生成された撮像画像データが次々と入力され、バスマスタ#０（３）は内部バス２を介して外部メモリ１３に撮像画像データを送信し、保持させる。これら一連の処理を撮像処理とする。撮像回路２０、回路群２１及びセンサ２２は、全体として撮像画像データ生成部として機能する。バスマスタ#０（３）は、データバッファ９に蓄積される撮像画像データがオーバフローする前にデータを読み出し、バスへ送信しなくてはならない。従って、撮像処理は、データバッファ９をオーバフローさせないような、リアルタイム性を保証することが必要な「リアルタイム処理」に該当する。
【００２４】
現像処理回路３０は、第２のバスマスタとしてのバスマスタ#３（６）と接続され、外部メモリ１３に保持された撮像画像データを読み出す。現像処理回路３０は、バスマスタ#３（６）が読み出した撮像画像データに、適正な画像処理を施してJPEG等の画像圧縮方式に従って圧縮処理を行う。これら一連の処理を現像処理とする。
【００２５】
本実施形態では、上述の撮像処理において、例えば連写のようなバースト的に撮像処理が行われた場合を説明する。
【００２６】
図２は、データバッファ９のデータの蓄積状況を説明する図である。ここでは撮像回路２０から撮像画像データが送信され、データバッファ９に蓄えられていく。データバッファ９は、説明の簡単のため０から３までの４領域に分割している。ある時点において、領域０にデータが蓄積されている。バスマスタ#０（３）は、蓄積されているデータにつき、バスアービタ１０にリクエストを発行する。
【００２７】
図３は、バスマスタ#０（３）が、リクエストを発行する際のタイミングチャートである。図２（Ａ）の状態では、図３のサイクル６のタイミングで、バスリクエストが発行されるが、図３では、この時点で既に他のバスマスタ#２（５）及び#１（４）がバスリクエストを発行している。よって、これら発行済の２個のリクエストの処理が終了するまで、バスマスタ#０（３）のアクセスは待たされる。即ち、この待ち時間の間にデータバッファ９がオーバフローしなければ、撮像処理のリアルタイム性が保証されることになる。
【００２８】
ここで簡単のために、撮像回路２０がデータバッファ９の１つの領域（図２で４分割した領域のうちの一つ分の領域）にデータを蓄積するのに要する時間と、バスマスタが、１回のアクセスを完了するまでの時間（図３のＴ１に相当する。）が同一であると仮定する。Ｔ１が経過した後のサイクル１２の時点では、データバッファの状態は、図２（Ｂ）の状態となり、領域０、領域１にそれぞれデータが蓄積されている。更に、Ｔ１が経過した時点のサイクル１７の時点では、図２（Ｃ）の状態となり、領域０、領域１及び領域２にそれぞれデータが蓄積されている。更にＴ１が経過したサイクル２２の時点では、領域３までデータが蓄えられるが、領域０に空きができるので次の処理は領域０を使用できる。
【００２９】
次に、外部メモリ１３のデータ幅が、前述の６４ビットから３２ビットとなるような場合について説明をする。図４は、外部バス１４が３２ビット時のタイミングチャートである。外部バスのバス幅が６４ビットから３２ビットと１／２となったために、マスタがアクセスを完了するまでの時間Ｔ１は２倍となっている。一方、撮像回路２０からのデータ入力速度は変化しないため、１回のアクセスＴ１に対して、データバッファは、領域０から領域２までを消費し、次のアクセスでは、オーバフローを起こしリアルタイム性は成立しない。リアルタイム性を保証するためには、データバッファ９の容量を増やすか、リクエストの先行予約を禁止する等の対策を行わなくてはならない。
【００３０】
図５は、各バスマスタの属性に応じて、バスマスタ#０（３）以外のバスマスタ（#１や#２等）の最大バースト長を変更した場合のタイミングチャートを示している。なお、バスマスタ#１、#２等の最大バースト長を切り替えるタイミングについては、図６のフローチャートを参照して後述する。図４では、バスマスタ#１（４）及び#２（５）の内部バス２でのバースト長は、「４」であったが、図５では、バスマスタ#１（４）及び#２（５）のバースト長は「２」となっている。これにより、外部バス１４が３２ビット時にも、外部バス１４にバースト長４でアクセスを行うことができることになり、バスマスタ#０のアクセスを待たせることなくリアルタイム性を保証することができる。
【００３１】
なお、図３乃至図５は、バスリクエストがバスアービタ１０によって即座に受け付けられると仮定したタイミングチャートとなっている。
【００３２】
次に、図６を参照して、バスマスタの最大バースト長を切り替える処理を説明する。Ｓ６０１では、ユーザからの操作に基づき撮像画像データ生成部における連写の開始要求を受け付ける。当該開始要求は、ＣＰＵ１１が検知して、バスアービタ１０に通知する。Ｓ６０２では、バスアービタ１０が、連写開始要求を受付時点で予約されているバスマスタからのリクエストの処理の完了を確認する。これら予約されているリクエストは高々数個なので、これによりレリーズタイムラグのような問題が発生する可能性は極めて低いと考えられる。Ｓ６０３では、バスアービタ１０が、最大バースト長として第１のバースト長（例えば、「４」）に割り当てられているバスマスタに対して、最大バースト長をより短い第２のバースト長（例えば、「２」）に切り替えるよう切替指示する。６０４では、センサからの撮像画像データを取り込み連写による撮像処理をスタートさせる。
【００３３】
なお、バスマスタ#０以外のバスマスタの最大バースト長を、初めから「２」に設定すれば、当然リアルタイム性を保証できる。しかし、バスの帯域を効率的に使用するには、１回あたりのトランザクションのバースト長をできるだけ長くとったほうが効率がよい。そこで現像処理を通常行う場合は、とり得る最大のバースト長を使用する一方、リアルタイム性を要求する連写処理といった特定の処理が発生した場合、現像処理のバースト長を「４」から「２」に削減する。これにより、撮像処理におけるデータバッファのオーバフローを回避し、連写における撮像処理のリアルタイム性を保証することができる。
【００３４】
本実施形態によれば、外部バスと、内部バスの比率が異なる場合において、内部バスを構成するシステムを変更することなく、特定のバスマスタのバースト長を変更することだけで、リアルタイム性を必要とするバスマスタの動作を保証できる。また、アクセス方式によって帯域が変わるようなSDRAM等の外部メモリとアクセスするような外部バスについては、帯域が変化するタイミングにて、特定のバスマスタのバースト長を制御する。これによりリアルタイム性を必要とするバスマスタの保証を行うことが可能である。
【００３５】
［実施形態２］
次に、実施形態２として、撮像処理と現像処理とが同時に動作する例を説明する。本実施形態における撮像装置の構成は図１に示すのと同様である。また、撮像処理、及び現像処理についても、実施形態１で説明した処理と同様である。実施形態２における撮像処理でも、実施形態１と同様に連写を行う。撮像画像データは、外部メモリ（SDRAM）１１３に随時保持される。
【００３６】
本実施形態では、外部メモリ（SDRAM)１１３が複数のバンクに分割されて構成されている。図７は実施形態２におけるバンク構成例を示す図である。図７に示すように、外部メモリ１３は、４つのバンクに分割されている。以下、図７を参照して外部メモリ１３に、連写された撮像画像データがどのように保持されるのかを説明する。まず、図７（Ａ）に示すように、１枚目の撮像画像データはバンク０に保持され、２枚目の撮像画像データはバンク１に保持される。続いて３枚目の撮像画像データが外部メモリ１３に入力されてきた場合、１枚目の撮像画像データは既に処理が終了されているとして、当該撮像画像データをバンク０に保持する。同様にして、４枚目の撮像画像データはバンク１に保持する。このようにして、バンク０とバンク１とを切り替えながら、撮像画像データを外部メモリ１３へ保持していく。
【００３７】
次に、現像処理において、どのように撮像画像データを読み出すかについて説明する。まず、１枚目の撮像画像データのバンク０への書き込みが終了すると、２枚目の撮像画像データのバンク１への書き込みがスタートし、その時点でバンク０に書き込まれた撮像画像データの読み出しを開始する。２枚目の撮像画像データのバンク１への書き込みが終了した時点で、バンク１に書き込まれた撮像画像データの読み出しを開始する。
【００３８】
ここで配慮すべきは、撮像処理で外部メモリ１３への書き込みのアクセスと、現像処理での外部メモリ１３からの読み出しのアクセスとは、常に異なるバンクに対して行われる点である。その理由は、一般にSDRAMへのアクセスが、同一バンクで異なるページ（ROWアドレス）に対して行われた場合、ページクローズ及びページオープンがSDRAMのアクセスに発生し、SDRAMの効率を下げるからである。以下、このような動作をページコンフリクトと呼ぶ。ページクローズとはSDRAMへのプリチャージ動作をいい、ページオープンとはSDRAMへのページアクティブコマンドをいう。
【００３９】
ところが、SDRAM及びセンサの各仕様は製品仕様に応じて異なることが多く、撮像画像データのサイズとSDRAMの１バンクのサイズが所望なサイズとならない場合が発生する。この場合、撮像処理及び現像処理の各アクセスを完全に別バンクとすることが困難となる状況も生じ得る。例えば、図７（Ｂ）に示すように、撮像画像データの一部がバンク０をはみ出すと（図の領域７０１）、別のバンクへのアクセスが発生する。このはみ出したアクセスが、前述の現像処理のデータ読み出しと同一のバンクであった場合、撮像処理と現像処理とが、同一のバンクアクセスとなり、頻繁にページコンフリクトが発生し、予想されるSDRAMの帯域を下回る可能性がある。このような場合、実施形態１で既に説明したように、バスマスタ#０のスレーブ応答の待ち時間が長くなり、データバッファに蓄積される撮像画像データがオーバフローを起こし、リアルタイム性を保証できない可能性を生じる。
【００４０】
しかし、センサの画像サイズは既知のため、バンクをはみ出してアクセスするときのタイミングは、SDRAMへのアドレス更新を監視していれば容易にわかる。そこで本実施形態では、このタイミングを事前に検知してバスのアクセス方式を変更（バースト長を変更）することでリアルタイム性を保証することを目的とする。
【００４１】
次に図８を参照して、本実施形態の処理シーケンスを説明する。Ｓ８０１では、撮像処理を開始する。ここでの処理は連写での１枚分の処理である。Ｓ８０２では、バスアービタ１０が現在実行されている撮像処理のアクセス先のバンクが異なるバンクに切り替わったか否か（バンクをはみ出したかどうか）を監視する。本実施形態では、バンクが切り替わった場合、同時に実行されている現像処理と同一のバンクにアクセスが発生しているとみなす。
【００４２】
そこで、Ｓ８０２にてバンクが切り替わったと判定された場合（Ｓ８０２で「ＹＥＳ」）、Ｓ８０３に移行する。Ｓ８０３では、バスアービタ１０が、現像処理で内部バス２へアクセスするバスマスタ#３（６）の最大バースト長を「４」から「２」に切り替える指示をバスマスタ#３へ送信する。このようにして予約済のリクエストのバースト長を削減することで、同一バンクアクセスによるスレーブ最大応答時間がバッファのオーバフローまでの時間以内となれば、バースト長の削減でリアルタイム性を保証できる。
【００４３】
このようにして、撮像処理と現像処理とでアクセスするバンクが異なり、SDRAMの帯域を十分に使用できる場合、現像処理のバースト長を最大長４に割り当てる。その一方、SDRAMの帯域を十分に使用できないような、バンクコンフリクトが発生する場合、バースト長を「２」に落として、現像処理のスループットをできるだけ落とすことなく、撮像処理のリアルタイム性を保証することができる。
【００４４】
［実施形態３］
上述の実施形態１及び２では、特定処理のリアルタイム性を保証するため、スレーブ応答時間を削減する目的でリアルタイム性の高いバスマスタ以外のバスマスタのバースト長の変更を行った。ところが、昨今のデジタルカメラでは、リアルタイム性を保証する処理が多岐にわたり、各々について、同様な処理を行っていては開発の効率が悪い。本実施形態では、リアルタイム性の高いバスマスタに接続されるデータバッファの容量から、他のバスマスタの効率をできるだけ落とすことなく、ハードウェアによる処理により、自動的にリアルタイム性を保証する。
【００４５】
本実施形態における撮像装置の構成は図１に示すのと同様である。また、撮像処理、及び現像処理についても、実施形態１で説明した処理と同様である。なお、本実施形態におけるデータバッファ９の容量は、バスマスタがバスアクセスする際のスレーブ応答の最悪時間で見積もられる。特開２００６-１８９９１９号公報は、データバッファに複数の閾値を持たせて、ある閾値に対して、データの蓄積量が上回った場合は、他のバスマスタのバスへのリクエスト発行を禁止する方法を提案している。
【００４６】
本実施形態は、これに対して、更に、バスマスタのリクエスト発行を禁止する目的ではなく、他のバスマスタのバースト長を制限することを目的とする閾値レベルを別途設ける。なお、閾値は、制限の発行と制限の解除にヒステリシスを持たせた複数の閾値を設定してもよいが、本実施形態では、簡単のために１つの閾値で説明を行う。
【００４７】
図９は、データバッファの閾値を説明した図である。図９（Ａ）は、撮像回路２０がデータの書き込みを実行する、データバッファ９のようなライトバッファについて説明したものである。また図９（Ｂ）は、バスマスタがデータの読み出しを実行するような、例えば表示画像データを外部メモリ１３から読み出す場合等に使用されるデータバッファ（リードバッファ）を説明した図である。表示画像データは、特定のフレームレートで出力する必要があるためリアルタイム性が必要となる。本実施形態では、ライトバッファの場合について説明するが、図９（Ｂ）のようなリードバッファについても同様な処理を適用可能であることは当業者で有れば直ちに理解できるであろう。
【００４８】
図９（Ａ）では、データがデータバッファ９の下から蓄積される例を示している。データバッファ９にデータが全く蓄積されていないときを「０」とし、データバッファ９にデータがフルに蓄積されたときを「FULL」として表記している。本実施形態では、アクセス禁止レベル９０１とアクセス制限レベル９０２の２通りのレベルを設定する。アクセス制限レベル９０２は、バッファにおけるデータ蓄積量が当該レベルを超えた場合に、データバッファ９がアクセス制限要求信号１６をバスアービタ１０に発行するための閾値として機能する。バスアービタ１０はアクセス制限要求信号１６を受信すると、バスマスタの属性に応じて特定のバスマスタに対して、制限信号を発行する。
【００４９】
ここで、属性の決め方の一例を示す。図１０は、図１のバスマスタ#０から#５までの属性を、リアルタイム性の有無、アクセスタイプ及びバンド使用量によって決定している。なお、本実施形態におけるアクセスタイプは、SDRAMのアドレスを「連続」して行うか、或いは、「ランダム」に行うかで区別される。なお、連続して行う場合はバースト長を長くとるほうが効率が良くなる。属性は、「０」から「３」までの４段階で識別される。属性の値が「０」又は「１」のバスマスタは、実行する処理にリアルタイム性が必要とされるバスマスタであって、バスアービタ１０からの禁止信号や制限信号によってバスへのリクエストが制御されることはない。
【００５０】
属性「０」と「１」の違いについては、属性０は、バスマスタ#０（３）のように、バンド使用量が多いためにリアルタイム性を確保するのに他のバスマスタの動作を制御しなければならない場合が発生するバスマスタである。即ち、「リアルタイム性・あり、アクセスタイプ：連続、バンド使用量：多い」、というパターンのバスマスタである。一方の属性１は、バンド使用量が少ないため、スレーブの応答時間が特に問題とならないようなバスマスタである。即ち、「リアルタイム性・あり、アクセスタイプ：ランダム、バンド使用量：少ない」、というパターンのバスマスタである。このような属性１のバスマスタは、他のバスマスタを制御することはない。
【００５１】
属性３のバスマスタは、実施形態２で説明したような現像処理を行うようなバスマスタである。即ち、「リアルタイム性・なし、アクセスタイプ：連続、バンド使用量：多い」、というパターンのバスマスタである。このようなバスマスタはリアルタイム性を保証する必要は必ずしもないが、処理時間を短縮させるためにはできるだけ長いバースト長で処理する必要があり、使用するバスの帯域も多い。属性２については、属性３ほどバスの帯域を使用せず、かつリアルタイム性を保証する必要はない。即ち、「リアルタイム性・なし、アクセスタイプ：連続、バンド使用量：普通」、というパターンのバスマスタである。
【００５２】
以上の属性について、属性０及び属性１については、第１の属性として「制限制御：なし、禁止制御：なし」、とする。また属性２については、第２の属性として「制限制御：なし、禁止制御：あり」、属性３については、第３の属性として「制限制御：あり、禁止制御：あり」、とする。
【００５３】
本実施形態では、バスアービタ１０から出力される制限信号で、属性３に割り当てられたバスマスタに対してバースト長を制限するような制御を行う。ここでは、現像処理のように、バス使用帯域は多いがリアルタイム性を保証する必要のない処理を行うバスマスタに対して、アクセスの制限（ここでは、バースト長を４から２へ切り替える）を行うことで、リアルタイム性の保証を行う。
【００５４】
なお、アクセスの制限を実行しないバスマスタによるアクセスが瞬間的に同時に発生してしまうことも、非常にまれであるが想定される。そのような場合、データバッファ９の蓄積量が、図９（Ａ）に示すアクセス禁止レベル９０１に到達する。この場合、データバッファ９はアクセス禁止要求信号１５をバスアービタ１０へ発行する。バスアービタ１０はアクセス禁止要求信号１５を受信すると、図１０で禁止制御の欄に「あり」と記載されたバスマスタ（バスマスタ#２, バスマスタ#３, バスマスタ#５）に対し禁止信号を発行して、バスへのリクエストを禁止する。
【００５５】
図１１は、本実施形態に対応する処理のフローチャートである。まず、Ｓ１１０１において、データバッファ９は、蓄積量Ｖｂを検知する。続くＳ１１０２において、データバッファ９は、蓄積量Ｖｂがアクセス制限レベル（Ａｃｌ）を超えるか否かを判定する。もし、Ａｃｌを超えない場合（Ｓ１１０２で「ＮＯ」）、Ｓ１１０１に戻る。一方、Ａｃｌを超える場合（Ｓ１１０２で「ＹＥＳ」）、Ｓ１１０３に移行して、データバッファ９は、蓄積量Ｖｂがアクセス禁止レベル（Ａｐｌ）を超えるか否かを判定する。もし、Ａｐｌを超える場合（Ｓ１１０３で「ＹＥＳ」）、Ｓ１１０４に移行する。
【００５６】
Ｓ１１０４では、データバッファ９が、バスアービタ１０に対してアクセス禁止要求信号１５を発行し、続くＳ１１０５では、バスアービタ１０がアクセス禁止要求信号１５に対応して禁止信号を各バスマスタに発行する。この禁止信号は、属性２及び３に属するバスマスタに対して有効であり、当該バスマスタはバスへのリクエストを抑制する。なお、この禁止信号は、データバッファ９の蓄積量がアクセス禁止レベルを下回るようになれ解除される。
【００５７】
また、蓄積量ＶｂがＡｐｌを超えない場合（Ｓ１１０３で「ＮＯ」）、Ｓ１１０６に移行する。Ｓ１１０６では、データバッファ９が、バスアービタ１０に対してアクセス制限要求信号１６を発行し、続くＳ１１０７では、バスアービタ１０がアクセス制限要求信号１６に対応して制限信号を各バスマスタに発行する。この制限信号は、属性３に属するバスマスタに対してのみ有効であり、当該バスマスタは、バースト長を切り替える。例えば、バスマスタ#３は、バースト長を「４」から「２」に切り替える。なお、この制限信号は、データバッファ９の蓄積量がアクセス制限レベルを下回るようになれば解除される。。
【００５８】
以上のように、本実施形態では、データバッファの蓄積量が所定量を超えた場合に、特定のバスマスタのバースト長を切り替えることを特徴とする。より具体的には、データバッファの蓄積度に応じてアクセスの制御レベルを切り替えて、特定処理のリアルタイム性を確保することができる。これにより、リアルタイム性の高いバスマスタに接続されるデータバッファの容量から、他のバスマスタの効率をできるだけ落とすことなく、ハードウェアによる処理により、自動的にリアルタイム性を保証することができる。
【００５９】
［その他の実施形態］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005623150.tif 000002
【図２】
0005623150.tif 000003
【図３】
0005623150.tif 000004
【図４】
0005623150.tif 000005
【図５】
0005623150.tif 000006
【図６】
0005623150.tif 000007
【図７】
0005623150.tif 000008
【図８】
0005623150.tif 000009
【図９】
0005623150.tif 000010
【図１０】
0005623150.tif 000011
【図１１】
0005623150.tif 000012
【図１２】
0005623150.tif 000013