(57)【要約】【課題】  リアルタイムの処理を行うためのデータ転送は確保しつつ、効率的にメモリのアクセスを制御してデータの処理を可能にする。【解決手段】  マスタDMAC1は、スケジュールされた周期での512バースト長の転送が行えないと判定した場合、その512バースト転送が完了した場合の、すケージュールの周期に対する超過的に利用した期間から、スレーブDMAC2の一時的なバースト長を算出し、それをスレーブDMAC2に設定する。スレーブDMAC2は、マスタDMAC1から設定が行われる、その直後のバースト転送では、設定されたバースト長での転送を行う。【選択図】  図２
2015102912.tif 000002
【特許請求の範囲】
【請求項１】
システムバスに接続されたデバイス間でバースト転送するための複数のバスマスタを有するバス制御装置であって、
前記複数のバスマスタの中の、所定のスケジューリングの周期ごとに予め設定されたデータ量のバースト転送が要求される第１のバスマスタが、前記システムバスに対して前記スケジューリングの周期でのバースト転送を行うことができるか否かを判定する判定手段と、
該判定手段の判定結果が、前記第１のバスマスタが前記スケジューリングの周期内でのバースト転送を行うことができないことを示す場合、前記スケジューリングの周期においてバースト転送が行うことになっている少なくとも１つの他のバスマスタに対し、前記第１のバスマスタによるバースト転送が完了するために必要な、前記スケジューリングの周期に対する超過部分の期間に対応するデータ量を減じたデータ量のバースト転送を一時的に行うように設定する設定手段と
を有することを特徴とするバス制御装置。
【請求項２】
前記設定手段は、前記第１のバスマスタによるバースト転送に後続して前記システムバスを占有してバースト転送を行う第２のバスマスタに対して、一時的にデータ量を減らしたバースト転送を設定することを特徴とする請求項１に記載のバス制御装置。
【請求項３】
前記設定手段は、前記スケジューリングの周期内における前記第１のバスマスタによるバースト転送にかかる期間を除く期間でバースト転送を行う他のｎ個のバスマスタそれぞれに対し、前記超過部分に対応するデータ量の１／ｎを削減したバースト転送を行うように設定することを特徴とする請求項１に記載のバス制御装置。
【請求項４】
前記複数のバスマスタそれぞれは、バースト転送で転送するデータを読み出すためのバッファメモリと、転送することになるデータを書き込むためのバッファメモリを有することを特徴とする請求項１乃至３のいずれか１項に記載のバス制御装置。
【請求項５】
バースト転送される対象のデータを発生する撮像部、撮像した画像を処理する処理部と、前記システムバスに接続され転送先として利用されるメモリとを有する撮像装置であって、
前記撮像部、処理部から前記メモリへのバースト転送を行うため、請求項１乃至４のいずれか１項に記載のバス制御装置を有することを特徴とする撮像装置。
【請求項６】
システムバスに接続されたデバイス間でバースト転送するための複数のバスマスタを有するバス制御装置の制御方法であって、
前記複数のバスマスタの中の、所定のスケジューリングの周期ごとに予め設定されたデータ量のバースト転送が要求される第１のバスマスタが、前記システムバスに対して前記スケジューリングの周期でのバースト転送を行うことができるか否かを判定する判定工程と、
該判定工程の判定結果が、前記第１のバスマスタが前記スケジューリングの周期内でのバースト転送を行うことができないことを示す場合、前記スケジューリングの周期においてバースト転送が行うことになっている少なくとも１つの他のバスマスタに対し、前記第１のバスマスタによるバースト転送が完了するために必要な、前記スケジューリングの周期に対する超過部分の期間に対応するデータ量を減じたデータ量のバースト転送を一時的に行うように設定する設定工程と
を有することを特徴とするバス制御装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、それぞれがバースト転送を行う複数のバスマスタを有するバス制御装置及びその制御方法、並びに撮像装置に関するものである。
【背景技術】
【０００２】
近年、デジタルカメラなどにおいては、様々な画像処を行うシステムＬＳＩを用いる構成が一般的となっている。デジタルカメラでは、高機能化が進むにつれて、複雑な処理を短時間に処理させる必要があり、そのため、個々の画像処理機能を同時動作させる必要がある。画像処理の速度を上げるため、それぞれの画像処理はＡＳＩＣなどの専用回路で処理される場合が多い。また、複雑な処理をさせるためには、マイクロプロセッサ（ＣＰＵ）によるソフトウエア処理も同時に実行される。
【０００３】
このような画像処理は、システムＬＳＩの外部に設けられたＤＲＡＭなどのメモリを用いて実行される。そのため、各種の画像処理に伴い、メモリへのアクセスを適切に管理する必要がある。特に、デジタルカメラにおいては、処理の中断を許されないような処理（以下、リアルタイム系処理）が存在する。例えば、撮像センサからの入力処理、外部モニタへ出力処理などを途中で止めることは許されないため、これらのリアルタイム処理が停止されないようにメモリへのアクセスを管理する必要がある。
【０００４】
これに対し、規定時間に余裕のある処理は、ＣＰＵによるソフトウェア処理により実現されることが多いが、近年では、デジタルカメラの高機能化に伴い、ＣＰＵによるメモリへのアクセスの割合が高くなってきている。
【０００５】
そのため、ＣＰＵの処理によりメモリが長時間占有されることにより、メモリの帯域が多く使用された場合、リアルタイム系の処理が、規定時間内に完了しないことが懸念される。
【０００６】
特許文献１には、複数のメモリアクセス部（ＤＭＡＣ）からの要求についての優先度により、メモリのアクセスを制御する構成が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１１−５９９７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１では、優先度の高いアクセス要求によって、優先度の低いアクセス要求によるデータ転送を途中で停止される。ＳＤＲＡＭを用いた場合、データ転送を中断するために、バースト転送を中断するためのコマンドが必要となり、その分、メモリへのデータ転送ができないため、無駄な時間（オーバーヘッド）となってしまう。
【０００９】
データ転送中に、中途半端な位置で停止した場合、転送再開時、アクセス効率が低下する場合がある。例えば、データ転送再開時のアドレスが、バースト転送のアドレスアライメントに合わない場合は、バースト転送のアライメントに一致するまでバースト転送によらない転送を行い、その後、バースト転送を開始する必要がある。
【００１０】
本発明はこのよう問題点に鑑みなされたものである。そして、本明細書では、リアルタイムの処理を破たんさせることなく、効率的にメモリのアクセスを制御してデータの処理が可能な技術を開示する。
【課題を解決するための手段】
【００１１】
この課題を解決するため、例えば本発明のバス制御装置は以下の構成を備える。すなわち、
システムバスに接続されたデバイス間でバースト転送するための複数のバスマスタを有するバス制御装置であって、
前記複数のバスマスタの中の、所定のスケジューリングの周期ごとに予め設定されたデータ量のバースト転送が要求される第１のバスマスタが、前記システムバスに対して前記スケジューリングの周期でのバースト転送を行うことができるか否かを判定する判定手段と、
該判定手段の判定結果が、前記第１のバスマスタが前記スケジューリングの周期内でのバースト転送を行うことができないことを示す場合、前記スケジューリングの周期においてバースト転送が行うことになっている少なくとも１つの他のバスマスタに対し、前記第１のバスマスタによるバースト転送が完了するために必要な、前記スケジューリングの周期に対する超過部分の期間に対応するデータ量を減じたデータ量のバースト転送を一時的に行うように設定する設定手段とを有する。
【発明の効果】
【００１２】
本発明によれば、リアルタイムの処理を行うためのデータ転送は確保しつつ、効率的にメモリのアクセスを制御してデータの処理が可能になる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施形態のシステム全体図。
【図２】リアルタイム系DMACと非リアルタイム系DMACの内部構成、関係を説明する図。
【図３】リアルタイム系DMACがシステムバスへのスケジューリングと、データバッファのデータ量推移を説明するタイミングチャート。
【図４】スケジューリングと、データバッファの推移、バースト長の変更を行ったときのタイミングチャート。
【図５】は、第２の実施形態のフローチャート。
【図６】は、第２の実施形態のリアルタイム系のDMAC内部構成図。
【発明を実施するための形態】
【００１４】
以下、添付図面に従って本発明に係る実施の形態を詳細に説明する。なお、以下では、バス制御装置が適用する電子機器としてデジタルカメラを例を説明するが、デジタルカメラの代わりにデジタルビデオカメラ、カメラ付携帯電話等の撮像装置を採用しても構わなく、その種類は特に問わない。
【００１５】
［第１の実施形態］
図１は、第一の実施形態に係わるデジタルカメラにおけるシステムの構成を説明するブロック図である。以下、図１について説明をする。
【００１６】
図１において、100は、撮像を行うための撮像光学系であり、撮像レンズ、シャッター、絞り等で構成される。101は、撮像部であり、光学系より照射される光を受光し、撮像信号を生成する撮像素子と、撮像信号に含まれるリセットノイズを除去する不図示の相関二重サンプリングと、撮像信号のレベルを利得可変に増幅する利得可変増幅と、アナログデータをデジタルデータに量子化するA/D変換を含む。102は、信号処理部であり、撮像部101より得られたデジタル画像データに対して、所定の信号処理を施す。評価処理部103は撮像部101から入力された画像データを用いて、ホワイトバランスや露出制御のための評価データを生成する処理を行う。検出処理部104は信号処理部102により生成された画像データから、動きを検出したり、画像データ中の物体、顔を認識する処理を行う。圧縮処理部105は信号処理部102より出力された画像データに対し、公知の符号化処理を施してデータ量を圧縮する処理を行う。ＤＭＡＣセレクタ106は、各処理部101〜105を、後述のメインメモリへダイレクト転送を行うためのDMACとを接続させる処理を行う。ＤＭＡコントローラ107-1〜6は、システムバスを一時的占有するバスマスタとして機能し、デバイス間のバースト転送を行う。116は、システムバスである。CPU120は本システムの処理を管理する。SDRAMコントローラ108は、SDRAM109へのデータアクセスをコントロールする。ＳＤＲＡＭコントローラ108は、後述のように、複数のＤＭＡＣ107-1〜107-6より、ＳＤＲＡＭ109へのアクセス要求を受け、このアクセス要求に基づいて、いずれかのＤＭＡＣからのアクセスを許可する。また、複数のＤＭＡＣから同時にアクセス要求があった場合、所定のルールに従い調停処理を行い、いずれかのアクセス要求を許可する。ＡＤＲＡＭコントローラ108は、いずれかのＤＭＡＣによるデータ転送が完了したことに応じて、次のアクセス要求の調停処理を行う。109は、SDRAMである。表示コントローラ110は表示用の画像データを、表示デバイス111へ送信して表示する処理を行う。表示デバイス111は、例えばデジタルカメラのライブビューを表示させる液晶パネルなどである。ビデオ出力部112は外部機器、例えばディスプレイに対し、画像データ等を出力する。カードコントローラ113は、装着されたメモリカード（主にフラッシュメモリ）へのデータアクセスをコントロールする。114は、外付けのカードである。
【００１７】
次に、図２を用いて、図１のDMAC107-1〜6の内部制御について詳細に説明する。本第１の実施形態では、DMAC1701-1がマスター、それ外のDMAC1701-2〜6がマスタであるDMAC1によって制御されるスレーブとして機能するものとして説明する。つまり、DMAC1701-1は、単位時間当たりに予め設定されたデータ量のバースト転送が要求されているものとする。また、実施形態におけるＤＭＡＣは全部で６つ存在する例を示しているが、１つのマスタと、少なくとも１つ以上のスレーブがあれば良いので、この数によって本発明が限定されるものではない。
【００１８】
また、本第１の実施形態での説明は、転送先として利用されるＳＤＲＡＭ109へのデータの書き込み（ライト）動作について説明する。SDRAM109からのデータの読み出し（リード）動作については、データのアクセス方向が逆になるだけであり、DMACの内部制御について、概念的にまったく同一である。よって、ライト動作のDAMC制御のみの説明とし、リードについては、ここでは省略する。また、以下では２つのDMACについて説明する。
【００１９】
107-1は、DMAC1であり、107-2は、DMAC2である。DMAC1701-2は、DMAC1701-1によって制御される。従って、DMAC1701-1は、システムバス116に対して、マスタ動作を行う(マスタDMAC)。一方、DMAC1702-2は、スレーブ動作を行う(スレーブDMAC)。ここで具体的に、マスタDMAC1701-1は、スレーブDMAC1701-2に対して、システムバスへアクセスするバースト長を、ダイナミックに制御する。107-1-1は、DMACセレクタ106から選択されたデータ入力バスである。DMACセレクタ106は、撮像部101からの入力を選択している。従って、DMAC1701-1には撮像部からのデータが入力される。
【００２０】
バッファメモリ107-1-2は、入力された転送データを保持する。バッファメモリ107-1-2はシステムバスに対して転送可能な最大のバースト長のデータを記憶可能な容量を備える。例えば、最大のバースト長512バースト、システムバスのビット幅が32bitとすると、バッファメモリ107-1-2は2048Byteの容量を持つ。BUF0ライトアドレス制御部107-1-3は、バッファメモリ107-1-2にデータにおける転送データの書き込みアドレスを発行する。107-1-4はそのアドレスを指す。BUF0リードアドレス制御部107-1-5は、バッファメモリ107-1-2から読み出される転送データの読み出しアドレスを発行する。107-1-6はそのアドレスである。107-1-7は、システムバスに対してのバスリクエスト信号である。BUF0リードアドレス制御部107-1-5は、バッファメモリ107-1-2にデータがバースト転送分蓄積されたら、リクエストを発行しシステムバスとハンドシェイクを行う。107-1-8は、バッファメモリ107-1-2から読みだされたデータで、システムバスへライト出力される。
【００２１】
バッファメモリ107-1-9は、バッファメモリ107-1-2と同様な容量を備える。BUF1ライトアドレス制御部107-1-10は、バッファメモリ107-1-9にデータライトするためのアドレスを発行する。107-1-11はそのアドレスを指す。BUF1リードアドレス制御部107-1-12は、バッファメモリ107-1-9からデータリードするためのアドレスを発行する。107-1-13はそのアドレスである。107-1-14は、システムバスに対してのバスリクエスト信号である。バッファメモリ107-1-9にデータがバースト転送分蓄積されたら、リクエストを発行しシステムバスとハンドシェイクを行う。107-1-15は、バッファメモリ107-1-9から読みだされたデータで、システムバスへライト出力される。
【００２２】
セレクタ107-1-16は、バッファメモリ107-1-2,107-1-9からシステムバスに対するリクエストを選択するセレクタである。107-1-21は、その選択されたリクエストである。せれ北107-1-17は、バッファメモリ107-1-2,107-1-9からシステムバスにライト出力するデータを選択するセレクタである。107-1-22は、その選択されたシステムバスへのライト出力されたデータである。
【００２３】
バッファ切り替え制御部107-1-18は、バッファメモリ107-1-2,107-1-9に対するライト/リードアドレスから、バッファメモリ107-1-2,107-1-9に対するのライト/リード制御、及び、リクエスト/データセレクタの制御を行う。107-1-19は、その制御信号である。107-1-20は、スレーブDMACに対する制御信号である。この制御信号には、どのスレーブDMACに対して設定するのかを示す信号、並びに、バースト長を設定する信号が含まれる。
【００２４】
制御信号107-2-18は、スレーブDMAC(DAC1)107-2でのバッファ切り替え制御部である。マスタDMAC107-1との差異は、マスタDMAC107-1からスレーブDMAC107-2へ指定、送信されたバースト長に従って、バースト転送長が決定され、それに従い、バッファの切り替えを行う。
【００２５】
次に、マスタDMAC107-1の動作、制御について説明するバッファメモリ107-1-2,107-1-9の初期状態では、データが蓄積されていない。まず、バス107-1-1からデータが入力される。このデータは撮像部101からのデータ入力である。ライトアドレス107-1-4に従い、バッファメモリ107-1-2へデータが順次ライトされる。このため、107-1-19のバッファ選択信号107-1-19は、バッファメモリ107-1-2がライト、バッファメモリ107-1-9がリード状態となっている。バッファメモリ107-1-2へ、最大2048Byteまでのデータが蓄積されると、バッファメモリ107-1-2のライトアドレスを監視しているバッファ切り替え制御部107-1-18は、バッファ選択信号を発行して、バッファメモリ107-1-2をリード、バッファメモリ107-1-9をライトに切り替える。バッファメモリ107-1-29にデータがライトされると同時に、BUF0リードアドレス制御部107-1-5は、既にデータが準備されたバッファメモリ107-1-2に対して、システムバスに対してリクエストを発行し、バッファメモリ107-1-2への読み出しアドレスを発行し、512バースト長分のデータをバッファメモリ107-1-2から連続して出力する。システムバスへの出力が完了すると、バッファメモリ107-1-9へのデータ蓄積が完了するまで待機する。バッファメモリ107-1-9へ 2048 Byte分のデータ蓄積が完了すると、バッファ切り替え制御部107-1-18は、バッファ選択信号を発行し、バッファメモリ107-1-2をライト、バッファメモリ107-1-9をリードと再度切り替え、撮像部101からのデータをバッファメモリ107-1-2に蓄積させる。このとき、今度は、BUF1リードアドレス制御部107-1-12で、バッファメモリ107-1-9へのリードアドレスを制御し、バッファメモリ107-1-9からデータを読み出し、システムバスへ出力する。この動作を順次繰り返す。従った、撮像部からのデータをどちらか一方のバッファへ蓄積している間は、蓄積していないもう一方のバッファからデータを読み出しシステムバスへ出力している。
【００２６】
次に、スレーブDMAC107-2の動作について説明する。内部構成は、マスタDMAC107-1とほぼ同一であるため、差分についてのみ説明する。なお、図示の参照符号107-2-*（*は任意の数字）が、マスタDMAC107-1における参照符号107-1-*に対尾する。
【００２７】
マスタDMAC107-1からのスレーブDMACに対するバースト長制御信号107-1-20は、スレーブDMAC107-2中の信号線107-2-20に接続されている。スレーブDMAC107-2中のバッファ切り替え制御部107-2-18では、この信号線107-2-20を介して受信したバースト長制御信号に応じて、スレーブDMACのバースト長を決定する。指定されたバースト長分のデータの単位で、バッファからのリード、ライトの切り替えを行う。
【００２８】
次に、マスタＤＭＡＣ107-1による、スレーブＤＭＡＣ107-22におけるバースト長の制御について説明する。図３は、DMAC107-1がシステムバスへのアクセスと、マスタDMAC107-1内のバッファメモリ107-1-2,107-1-9のバッファの蓄積の様子を示している。横軸は時間を表わす。縦軸は、バッファ(バッファメモリ107-1-2.107-1-9)の蓄積量を表す。図３（ａ）はマスタDMAC107-1-2のバッファメモリ107-1-2(BUF0)のデータ量を示している。図３（ｂ）は同バッファメモリ107-1-9(BUF1)のデータ量を表わしている。そして、図３（ｃ）は、システムバスに複数のバスマスタ（ここでは、前述の複数のDMAC）が、システムバスにアクセスしているタイミングを表す。ここでは、複数（４個）のDMACのアクセスを、Access(1)、Access(2)、Access(3)、Access(4)と、表現している。網がけで図示されたAccess(1)は、マスタDMAC107-1がアクセスしている期間を示している。従って、図３（ａ）、（ｂ）のBUF0、BUF1のデータ量推移は、Access(1)であるマスタDMAC内のBUF0、BUF1のデータ量の推移を示している。また、所定のスケジューリングされた規定時間（周期）は、Tで表わされていて、それぞれのアクセス（Access(1)、Access(2)、Access(3)、Access(4)）の規定時間は、簡単のため、すべて T/4時間としている。
【００２９】
まず、時刻0において、バッファメモリ107-1-9(BUF1)には、既に、2048バイトのデータが蓄積されている。時刻T/4までに、このデータは順次、システムバスへ出力されているので、時刻T/4では、バッファメモリ107-1-9のデータ量は、0となっている。一方、バッファメモリ107-1-91のデータをシステムバスへ出力している間、バッファメモリ107-1-2(BUF0)へ、撮像部からデータが入力される。データが2048バイトまでの蓄積時間は、時間Tを要する。グラフから、蓄積に要する時間と、システムバス116へ出力に要する時間の比は、4 : 1となっていることが分かる。システムバス116の処理能力と、撮像部101におけるセンサの読み出し時間から、予め、これら時間の比率を求めることは、比較的容易である。また、Access(1)の処理は、撮像部101の処理であるため、リアルタイム系の処理と見なせる。すなわち、撮像部101からのデータを一方のバッファメモリに蓄積し終わるまでに、他方のバッファメモリのＳＤＲＡＭ109への転送を完了させる必要があり、システムバス116へのアクセスを待たせることが許されない。またここでは、他のAccess(2)、Access(3)、Access(4)の処理は、非リアルタイム系の処理としている。
【００３０】
本実施形態では、マスタDMAC107-1における、バッファメモリ107-1-2,107-1-9にそれぞれ蓄積されている、転送データのデータ量に基づいて、スレーブＤＭＡＣ107-2におけるバースト長を決める。マスタDMAC107-1のバッファ切り替え制御部107-1-18は、例えば、バッファメモリ107-1-2に撮像部101からのデータを記憶しながら、バッファメモリ107-1-9からシステムバス116にデータを転送している場合、バッファメモリ107-1-2のライトアドレスを監視することにより、バッファメモリ107-1-2に蓄積されている転送データの蓄積量を容易に認識することができる。おなじく、バッファメモリ107-1-9のリードアドレスを監視することにより、バッファメモリ107-1-9からの転送済みのデータ量（或いは未転送のデータ量）を容易に認識することができる。マスタDMAC107-1のバッファ切り替え制御部107-1-18は、バッファメモリ107-1-2に蓄積されたデータ量が所定値、ここでは256Byteに達したときに、バッファメモリ107-1-9からの転送済みデータ量を検出する。
【００３１】
例えば、本実施形態では、図３に示されたポイント301にて、バッファメモリ107-1-2に蓄積されたデータ量が256Byteに達した場合、バッファメモリ107-1-9に蓄積された未転送のデータ量が所定量、ここでは1024Byteを超えていた場合は、バッファメモリ107-1-9からのデータの転送が遅れていると判断するものとする。図３では、バッファメモリ107-1-2に蓄積されたデータ量が256Byteに達した時点で、バッファメモリ107-1-9に蓄積されている未転送のデータ量が1024Byteとなっているので、バッファメモリ107-1-9からのデータ転送が遅れていないと判断する。
【００３２】
このとき、マスタDMAC107-1のバッファ切り替え制御部107-1-18は、通常の長さである、バースト長として512バースト設定するための信号を、それぞれのスレーブDMAC107-2〜6に送信する。
【００３３】
次に、図４を用いて、マスタDMAC107-1からシステムバス116（ＳＤＲＡＭ）へのデータ転送が、決められたタイミングからの遅延が生じた場合について説明する。なお、図４（ａ）乃至（ｃ）は、図３（ａ）乃至（ｃ）に対応するものである。ここでは、時刻3T/4に、斜線で示された想定していない、T/16の期間のアクセス（例えば、ＣＰＵ120からのアクセス）が発生している。従って、このＣＰＵ120によるアクセスが完了するまで、次のアクセスが待たされることになる。ＣＰＵ120のアクセスが完了し、次にマスタDMAC107-1のアクセス要求がＳＤＲＡＭコントローラ108により許可されて、マスタDAMC107-1からのデータ転送が開始される。このマスタDMAC107-1のアクセス期間Access(4)は、マスタDMAC107-1の規定されたアクセスタイミングからT/16時間遅れて開始されている。T/16時間遅れていることは、バッファメモリ107-1-2,107-1-9のアドレスにより、書き込み状態のバッファメモリにおける蓄積データ量と、読み出し状態のバッファメモリにおける未転送のデータ量を検出することで検知することができる。時刻4T/4から、バッファメモリ107-1-9にデータがライトされる。ここで、マスタDMAC107-1のバッファ切り替え制御部107-1-18は、前述と同様にバッファメモリ107-1-9に蓄積された転送データのデータ量が256Byteとなったとき（(B)で図示されたポイント）、バッファメモリ107-1-2のリードアドレスを検出する。そして、マスタDMAC107-1のバッファ切り替え制御部107-1-18は、リードアドレスに基づいて、バッファメモリ107-1-2に蓄積されている未転送のデータ量を検出する。ここでは、未転送のデータ量が1536Byteである。この値は、1024Byteよりも多いため、マスタDMAC107-1のバッファ切り替え制御部107-1-18は、マスタＤＭＡＣ107-1によるアクセスに遅延が生じていると判定する。
【００３４】
ここで、バッファメモリ107-1-2に蓄積された未転送のデータ量、1536Byteと所定値1024Byteとの差は512Byteとなる。バッファの容量が2048Byteであることから、バッファの容量と、算出された差との比は４：１となる。また、バッファメモリ107-1-2に蓄積された全てのデータを転送するのに要する時間はT/4なので、
T/4 × 1/4 ＝ T/16時間
の遅れとなることが求められる。
【００３５】
そこで、マスタDMAC107-1のバッファ切り替え制御部107-1-18は、複数の非リアルタイム処理に対応したＤＭＡＣ107-2〜107-2-6に対し、バースト長を短くするように制御する。バースト長を短くするＤＭＡＣとしては、例えば、ＳＤＲＡＭ109に対して周期的にアクセスすることが決まっている処理に対応したＤＭＡＣとする。
【００３６】
ここでは、マスタＤＭＡＣ107-1の次にアクセスされるスレーブDMAC107-2のバースト長を、
512バースト × 15/16 = 480バースト
とバースト長を削減することで、遅れを取り戻している。このときの制御としては、マスタDMAC107-1から、スレーブDMAC107-2へ、上記の判定結果、すなわち、スレーブDMACのバースト長制御信号を送信して、一時的に480バーストアクセスの指示を出す。スレーブDMAC107-2は、指示された直後のバースト転送では、設定された480バーストアクセスを行う。これにより、マスタＤＭＡＣの次のアクセスは、規定されたタイミングで実行される。そのため、マスタDMAC107-1のバッファ切り替え制御部107-1-18は、スレーブDMAC107-2に対し、バースト長を512バーストに設定する。
【００３７】
ところで、DMAC内の２つのバッファメモリのデータ容量は、最大バースト転送である512バーストを実現させるため、2048Byteの容量を備えていた。最大512バーストの場合は、2048Byteの位置で、２つのバッファメモリのリード、ライトの切り替えを、107-1-19で図示された制御信号の切り替えで行っていた。ここでは、480バースト長と指示されたので、この切り替えを、行う２つのバッファメモリのデータ蓄積量は、
2048Byte × 15/16 = 1920Byte
によって求められる。また、本第１の実施形態では、マスタDMAC107-1がスケジューリングの周期内でのバースト転送を行うことができないことを示す場合のバースト長の調整（短縮）を、マスタDMAC107-1に後続するタイミングでバースト転送を行うDMAC107-2のAccess(2)に対してのみ行った。しかしながら、スケジューリングの周期でバースト転送を行っているＤＭＡＣがｎ個の場合、上記超過部分を１／ｎに分担しあっても良い。すなわち、実施形態では、Access(2)、Access(3)、Access(4)の３つがあるので、これらから等分にバースト長を減じてもよい。場合によっては、順番にバースト長削減対象スレーブとしてラウンドロビンしてもよい。
【００３８】
［第２の実施形態］
上記第１の実施形態では、システムバスにアクセスするDMACをマスタDMACとスレーブDMACと分類し、マスタDMACをリアルタイム系処理に割り当て、アクセス時間の遅れが発生した場合は、遅れた時間から、非リアルタイム系処理に割り当てられたスレーブDMACのバースト長を時間遅れ分短縮することを自動的に行った。しかしながら、撮像処理のようにタイミングが厳密に定義されているものは、第１の実施形態のような処理が可能であるが、すべてのシステムバスへのアクセスに対して、厳密にスケジューリングすることは、困難な場合もある。
【００３９】
実際のデジタルカメラのシステムにおいて、例えば、動画記録時にユーザがGUI(Graphical User Interface)をアクセスしたような場合は、動画記録中の帯域に対して局所的にCPUのアクセスがシステムバスの帯域を圧迫するようなときがある。実は、このような、CPUのアクセス負荷が大きくなるような場合を予め検知することは、例えば、ユーザがCPUの負荷が高まる特定の処理を外部割り込みで検知するなどで可能である。このような場合、例えば、顔、動き等の検出処理、表示画像に重畳させるようなグラフィック描画処理は、精度は落ちるものの、局所的であれば、処理を遅らせても問題がない場合が多い。
【００４０】
図５のフローチャートを用いて、本第２の実施形態の処理シーケンスについて説明する。動画記録処理中に、前述のような処理を遅らせることが可能な処理のバースト長制御フローである。動画記録では、特定のフレームレート中に各々の処理を完了させなければならないが、前述の検出、グラフィックの処理などは、必ずしも、記録のフレームレートの処理は必要としない。S502では、ユーザからのGUIでのアクセス等で、CPU負荷が一時的に増大するかどうかを判別している。CPU負荷が高い処理が発生することが判定されると、S503にて、バースト長を短縮する処理がなされる。具体的には、図６に、スレーブDMACの構成を示す。第１の実施形態では、スレーブDMACのバースト長の決定は、マスタDMACからのバースト長制御信号によってなされていた。図６は、図２のスレーブDMACの部分とほとんど同じであるが、信号107-2-21で示した信号のみが異なる。この信号107-2-21は、図１で示されたCPU120から制御される信号で、CPU120からバースト長が指定される。本フローチャートでは、S502でCPU負荷の高い処理が行われる場合、予め、リアルタイム処理を関係の薄いスレーブDMACのバースト長を変更する。例えば、通常であれば、512バースト転送で60fpsのフレームレートで処理をしていたが、一時的に半分の30fpsにフレームレートを落とすのであれば、バースト長を半分の128バーストに変更する。S504では、CPUの負荷の高い処理が終了したかどうかを検知している。終了と判定されれば、S505で通常のバースト長に戻す。前述の例であれば、512バースト長に戻すことになる。
【００４１】
以上説明したように本実施形態によれば、スケジューリングされたシステムバスへのアクセスにおいて、CPUアクセスの負荷が局所的に大きく発生した場合、帯域変動に対して生じるアクセス時間の遅れを、精度良く算出し、算出された時間から、適切にシステムバスへのアクセスの調整を行うことで、システムバスにおいて、最もアクセス効率が良く、適切な処理を行うことができる。
【図１】
2015102912.tif 000003
【図２】
2015102912.tif 000004
【図３】
2015102912.tif 000005
【図４】
2015102912.tif 000006
【図５】
2015102912.tif 000007
【図６】
2015102912.tif 000008