(57)【要約】【課題】プリチャージコマンドの発行頻度を低減することでデータ転送効率を向上させる。【解決手段】メモリに対するデータの書き込みを行う複数の処理を示す情報を取得し、該処理の各々に対して、それぞれ異なる、複数の記憶領域のうちの少なくとも１つの記憶領域をデータの書き込み用に割り当てる。そして情報処理装置は、複数の処理が他の処理に割り込まれずに連続してアクセスできるデータ長に応じて、複数の処理についてデータの書き込み用に割り当てる記憶領域の数を異ならせる。【選択図】図４
2014013506.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶領域を有するメモリへのデータの書き込みを制御する情報処理装置であって、
前記メモリに対するデータの書き込みを行う複数の処理を示す情報を取得する取得手段と、
前記取得手段により取得された前記複数の処理の各々に対して、前記複数の記憶領域のうちの少なくとも１つの記憶領域を該処理におけるデータの書き込み用に割り当てる制御手段と、
前記複数の処理の各々について、前記制御手段により割り当てられた記憶領域にデータを転送して書き込みを行う転送手段と、を有し、
前記制御手段は、前記複数の処理の各々が、前記複数の処理のうちの他の処理に割り込まれずに連続してアクセスできるデータ長に応じて、前記複数の処理について前記データの書き込み用に割り当てる記憶領域の数を異ならせる
ことを特徴とする情報処理装置。
【請求項２】
前記制御手段は、前記複数の処理のうち、前記他の処理に割り込まれずに連続してアクセスできる期間に前記メモリに書き込まれるデータ長が予め定められたデータ長以下である処理については、前記他の処理と同一の記憶領域を割り当てることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記制御手段は、前記複数の処理のうち、前記メモリへの書き込みを行う回数が予め定められた回数以下である処理については、前記他の処理と同一の記憶領域を割り当てることを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記制御手段は、前記複数の処理のうち、前記メモリへの書き込みを行わない期間の長さが予め定められた期間以上である処理については、前記他の処理と同一の記憶領域を割り当てることを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記複数の処理には処理の種類に応じて優先度が設けられ、
前記転送手段は、同一の記憶領域が割り当てられた複数の処理について、前記優先度の高い処理がデータの書き込みを行なっている場合に、前記他の処理における該記憶領域へのデータの書き込みを抑止することを特徴とする請求項２乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
複数の記憶領域を有するメモリへのデータの書き込みを制御する情報処理装置の制御方法であって、
前記情報処理装置の取得手段が、前記メモリに対するデータの書き込みを行う複数の処理を示す情報を取得する取得工程と、
前記情報処理装置の制御手段が、前記取得工程において取得された前記複数の処理の各々に対して、前記複数の記憶領域のうちの少なくとも１つの記憶領域を該処理におけるデータの書き込み用に割り当てる制御工程と、
前記情報処理装置の転送手段が、前記複数の処理の各々について、前記制御工程において割り当てられた記憶領域にデータを転送して書き込みを行う転送工程と、を有し、
前記制御手段は前記制御工程において、前記複数の処理の各々が、前記複数の処理のうちの他の処理に割り込まれずに連続してアクセスできるデータ長に応じて、前記複数の処理について前記データの書き込み用に割り当てる記憶領域の数を異ならせる
ことを特徴とする情報処理装置の制御方法。
【請求項７】
コンピュータを、請求項１乃至５のいずれか１項に記載の情報処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、制御方法、及びプログラムに関し、特にメモリアクセスの効率化技術に関する。
【背景技術】
【０００２】
デジタルカメラ等の撮像装置を始めとする様々な機器では、一時的なデータの格納用メモリとしてＤＲＡＭが使用されている。例えば撮像装置では、静止画撮影により得られた画像データや、動画撮影により得られた動画データに係るフレーム（画像データ）等がＤＲＡＭに伝送されて格納される。
【０００３】
ＤＲＡＭは、複数の処理の同時アクセスに対応するように、仮想的にＤＲＡＭ内のメモリ領域を分割した、バンクと呼ばれる複数の領域に分けられている。各バンクにはバンクアドレス（ＢＡ）が割り当てられ、さらにバンク内の最小単位である各メモリセルにはカラムアドレス（ＣＡ）及びロウアドレス（ＲＡ）が割り当てられている。ＤＲＡＭに対するアクセスは、このようなバンクアドレス及びロウアドレスと、データの先頭が存在するメモリセルのカラムアドレスとを特定することにより行われる。
【０００４】
図８（ａ）は、ＤＲＡＭの１つのバンクに対してロウアドレスを順次変更してデータの書き込みを行う場合の、コマンド発行及びデータ転送状況を時系列に示している。図示されるように、まずタイミングＴ１では、データを書き込むバンクアドレス（バンクＢ０）とロウアドレスとを指定してバンクアクティブ（ＡＣＴ）コマンドが発行される。ＡＣＴコマンドにより、データを書き込むバンクＢ０のロウアドレスで指定されるページが開かれる。このときバンクＢ０は、アイドル状態からデータ書き込み可能な状態に変化する。そしてタイミングＴ２では、データを書き込むカラムアドレスを指定してライト（ＷＲ）コマンドが発行される。ＷＲコマンドにより、書き込み対象データが転送されて、開かれたページのカラムアドレスのメモリセルから順に書き込まれる。
【０００５】
所定のデータ長の書き込み対象データが転送されて書き込まれた後、タイミングＴ３ではプリチャージ（ＰＲＥ）コマンドが発行される。ＰＲＥコマンドにより、開かれたページはクローズされ、バンクＢ０は再びアイドル状態になる。ＲＲＥコマンドは、ページを閉じるコマンドであり、１つのページが開かれている際に、同一のバンク内の異なるロウアドレスで指定されるページへのアクセスが必要となった場合には発行される必要がある。図８（ａ）の例では、次のタイミングＴ４以降で別のロウアドレスのページに対してデータの書き込みが行われるため、タイミングＴ３においてＰＲＥコマンドが発行されている。
【０００６】
図からも明らかなように、ＰＲＥコマンドやＡＣＴコマンドが発行されている間は、バンクＢ０に対するアクセスを行うことができない。即ち、１つのバンクに対してロウアドレスを順次変更しながらアクセスを行う場合は、ロウアドレスを変更する回数（ページ切り替え回数）に応じてＤＲＡＭへのアクセス効率が低下する。
【０００７】
これに対し、図８（ｂ）のようにＤＲＡＭに対するデータの書き込みを、バンクを異ならせる、所謂インタリーブアクセスしながら行う場合は、ＰＲＥコマンドの発行頻度（以下、プリチャージ頻度）を低減することができる。即ち、データを分割して複数のバンクに書き込むため、１つのバンクについての書き込み回数が少なく、結果的にプリチャージ頻度を低減することができる。また他のバンクに対するアクセス中にＰＲＥコマンドを発行すればよいため、ＰＲＥコマンドやＡＣＴコマンドの発行によるバンクアクセス不能状態の影響を受けずに、データの書き込みを行うことができる。
【０００８】
このようなＤＲＡＭに対するデータアクセス時のプリチャージ頻度を低減する方法については、様々な提案がなされている。特許文献１には、動画符号化データの復号時に、過去のフレームのブロックが参照されるため、ラスタスキャン順ではなくブロック内のデータが同一のロウアドレスに格納されるようにデータの書き込みを制御する方法が開示されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００８−２９９４３８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、インタリーブアクセスによるプリチャージ頻度の低減は、１つの処理がＤＲＡＭに対して連続してアクセスする場合は有効であるが、複数の処理が交互にＤＲＡＭへのアクセスを繰り返す場合は、プリチャージ頻度を低減させることができない。
【００１１】
例えば図９（ａ）に示されるような、１つの処理ＡがＤＲＡＭに対して連続してアクセスする場合を考える。図では、ＢＡＮＫ０の１つのロウアドレスに対してＡ−１、Ａ−２のアクセスを行なった後、ＢＡＮＫ１の同一のロウアドレスに対してＡ−３、Ａ−４のアクセスを行っている。またＢＡＮＫ７まで同様にアクセスを行った後、ＢＡＮＫ０の次のロウアドレスにアクセスしている。このような場合は、図９（ａ）に示されるように例えばＡ−３の処理中にＢＡＮＫ０に対するＰＲＥコマンドを発行することでＢＡＮＫ０はアクセス不能状態となるが、ＢＡＮＫ０へのアクセスが行われない期間であるため、総アクセス時間は変化しない。
【００１２】
一方、例えば図９（ｂ）に示されるような、複数の処理Ｂ、Ｃ、及びＤがＤＲＡＭに対して交互に繰り返してアクセスする場合を考える。このとき、図９（ｂ）に示されるようにＢＡＮＫ０において交互に異なるロウアドレスへのアクセスが行われるため、ロウアドレスの変更時にＰＲＥコマンド及びＡＣＴコマンドの発行が必要となる。即ち、１つの処理がインタリーブしながらＤＲＡＭアクセスを行うとしても、異なる処理で異なるロウアドレスへのアクセスが発生する場合は、プリチャージ頻度を抑えることができなかった。
【００１３】
本発明は、上述の問題点に鑑みてなされたものであり、プリチャージコマンドの発行頻度を低減することでメモリアクセスを効率化する情報処理装置、制御方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
前述の目的を達成するために、本発明の情報処理装置は、以下の構成を備える。
複数の記憶領域を有するメモリへのデータの書き込みを制御する情報処理装置であって、メモリに対するデータの書き込みを行う複数の処理を示す情報を取得する取得手段と、取得手段により取得された複数の処理の各々に対して、複数の記憶領域のうちの少なくとも１つの記憶領域を該処理におけるデータの書き込み用に割り当てる制御手段と、複数の処理の各々について、制御手段により割り当てられた記憶領域にデータを転送して書き込みを行う転送手段と、を有し、制御手段は、複数の処理の各々が、複数の処理のうちの他の処理に割り込まれずに連続してアクセスできるデータ長に応じて、複数の処理についてデータの書き込み用に割り当てる記憶領域の数を異ならせることを特徴とする。
【発明の効果】
【００１５】
このような構成により本発明によれば、プリチャージコマンドの発行頻度を低減することでデータ転送効率を向上させることが可能となる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態に係るデジタルカメラ１００の機能構成を示したブロック図
【図２】本発明の実施形態に係る転送制御部１０６の内部構成を示したブロック図
【図３】本発明の実施形態に係る処理に応じたデータアクセスタイミングを説明するための図
【図４】本発明の実施形態に係る各処理のアクセス用に割り当てたバンク、及び各処理のＤＲＡＭアクセスタイミングを説明するための図
【図５】本発明の実施形態に係るＤＭＡＣのアドレス制御機能についてのブロック図
【図６】本発明の実施形態に係るデジタルカメラ１００のＤＲＡＭ転送シーケンスを例示したフローチャート
【図７】本発明の変形例に係る連続アクセス報知信号を用いた各処理のアクセス制御を説明するための図
【図８】一般的なＤＲＡＭへのデータ書き込みのタイミングチャートを説明するための図
【図９】一般的なＤＲＡＭへのバンクインターリーブアクセスを説明するための図
【発明を実施するための形態】
【００１７】
［実施形態］
以下、本発明の例示的な実施形態について、図面を参照して詳細に説明する。なお、以下に説明する一実施形態は、情報処理装置の一例としての、ＤＲＡＭを有し、該ＤＲＡＭへのデータ転送を制御するデジタルカメラに、本発明を適用した例を説明する。しかし、本発明は、ＤＲＡＭへのデータ転送を制御することが可能な任意の機器に適用可能である。
【００１８】
《デジタルカメラ１００の構成》
図１は、本発明の実施形態に係るデジタルカメラ１００の機能構成を示すブロック図である。
【００１９】
ＣＰＵ１０１は、デジタルカメラ１００が有する各ブロックの動作を制御する。具体的にはＣＰＵ１０１は、不図示のＲＯＭに格納されている各ブロックの動作プログラムを読み出し、不図示のＲＡＭに展開して実行することにより、各ブロックの動作を制御する。
【００２０】
撮像素子１０３は、例えばＣＣＤやＣＭＯＳセンサ等である。撮像素子１０３は、結像光学系１０２により受光面に結像された光学像を光電変換し、Ａ／Ｄ変換回路１０４に得られたアナログ画像信号を出力する。Ａ／Ｄ変換回路１０４は、入力されたアナログ画像信号に対してＡ／Ｄ変換処理を適用することで、画像データを生成する。
【００２１】
第１信号処理部１０５及び第２信号処理部１０８は、画像データに対してノイズ低減処理等の種々の画像処理を行う。本実施形態では、第１信号処理部１０５はＤＲＡＭ１０７に書き込むデータに係る画像処理、第２信号処理部１０８はＤＲＡＭ１０７から読み出したデータに係る画像処理を行う。また動画生成部１０９は、Ａ／Ｄ変換回路１０４から出力された画像データから、動画用ストリームデータを生成する。
【００２２】
転送制御部１０６は、ＤＲＡＭ１０７への書き込み及び読み出しを制御する。具体的には転送制御部１０６は、第１信号処理部１０５から出力されたデータのＤＲＡＭ１０７への書き込み、あるいは第２信号処理部１０８で使用されるデータのＤＲＡＭ１０７からの読み出しを、対応するコマンドをＤＲＡＭ１０７に発行することで行う。
【００２３】
顔検出部１１０は、ＤＲＡＭ１０７に書き込まれた画像データあるいは動画用ストリームデータのフレームについて、人物の顔を検出する。具体的には顔検出部１１０は、ＤＲＡＭ１０７から所定の画素数を有する顔検出用の画像データを読み出し、該画像データに人物の顔のパターンが含まれているか否かを判断する。
【００２４】
表示部１１１は、例えばＬＣＤ等のデジタルカメラ１００が有する表示装置である。表示部１１１には、第２信号処理部１０８あるいは動画生成部１０９により生成された画像データや動画データが表示される。
【００２５】
〈転送制御部１０６の内部構成〉
ここで、本実施形態の転送制御部１０６の内部構成について、図２を用いてさらに詳細に説明する。なお、本実施形態のＤＲＡＭ１０７は、バンクアドレスがＢＡＮＫ０乃至７である８つのバンク（記憶領域）を有し、８バースト転送に対応している。各バンクは、２０４８のカラムアドレス（ＣＡ１乃至２０４８）と４０９６のロウアドレス（ＲＡ１乃至４０９６）を有する。また各メモリセル（１ワード）は３２ｂｉｔの容量を有する。
【００２６】
デジタルカメラ１００において撮像が行われると、第１信号処理部１０５はＡ／Ｄ変換回路１０４により出力された画像データから３種類の画像データ（Ｘ１データ、Ｘ１／２データ、Ｘ１／４データ）を生成する。３種類の画像データはそれぞれ、
・Ｘ１データ    ：入力された画像データと同一の画像データ
・Ｘ１／２データ：入力された画像データを、水平及び垂直方向に１／２ダウンサンプ
リングを適用して得られた画像データ
・Ｘ１／４データ：入力された画像データを、水平及び垂直方向に１／４ダウンサンプ
リングを適用して得られた画像データ
である。本実施形態では、Ａ／Ｄ変換回路１０４は単位画素の情報量が８ｂｉｔである、１０２４×７６８画素の画像データを出力するものとする。つまり、上述の３種類の画像データの画素数は、Ｘ１データが１０２４×７６８画素、Ｘ１／２データが５１２×３８４画素、Ｘ１／４データが２５６×１９２画素となる。
【００２７】
３種類の画像データは、それぞれ異なるラインで転送制御部１０６に伝送され、それぞれＷＲＤＭＡＣ（Write Direct Memory Access Controller）２０１、ＷＲＤＭＡＣ２０２、及びＷＲＤＭＡＣ２０３に入力される。ＷＲＤＭＡＣ２０１乃至２０３は、ＤＲＡＭ１０７に対して８バースト転送を行うために、入力された画像データを３２Ｂｙｔｅ（＝３２ｂｉｔ×８バースト）単位でメモリアクセス部２０５に出力する。
【００２８】
また動画生成部１０９により生成された動画用ストリームデータは、別のラインで転送制御部１０６に伝送され、ＷＲＤＭＡＣ２０４に入力される。本実施形態では動画生成部１０９は、１ＭＢｙｔｅ（＝１０２４×１０２４Ｂｙｔｅ）の動画用ストリームデータを転送制御部１０６内のＷＲＤＭＡＣ２０４に出力する。
【００２９】
各ＷＲＤＭＡＣは、ＣＰＵ１０１よりＤＲＡＭ１０７の書き込み先のアドレス情報を受信し、８バースト転送単位の３２Ｂｙｔｅ分のデータが入力された後、順次ＤＲＡＭ１０７への書き込み要求を後述するメモリアクセス部２０５に対して行う。なお、アドレス情報には、後述する書き込み先のスタートアドレス、オフセットデータ転送長、オフセット値、及びバースト長が含まれる。
【００３０】
また本実施形態では、第２信号処理部１０８あるいは顔検出部１１０における処理に用いられる画像データをＲＤＤＭＡＣ（Read Direct Memory Access Controller）２０７乃至２１０により読み出す。各ＲＤＤＭＡＣはそれぞれ以下のように用途が分けられているものとする。
・ＲＤＤＭＡＣ２０７：Ｘ１データを読み出す
・ＲＤＤＭＡＣ２０８：Ｘ１／２データを読み出す
・ＲＤＤＭＡＣ２０９：Ｘ１／４データを読み出す
・ＲＤＤＭＡＣ２１０：顔検出用画像データを読み出す
【００３１】
各ＲＤＤＭＡＣは、ＷＲＤＭＡＣと同様にＣＰＵ１０１からデータを読み出すＤＲＡＭ１０７のアドレス情報を受信し、メモリアクセス部２０５に対して読み出し要求を行う。なお各ＲＤＤＭＡＣは読み出しによりメモリアクセス部２０５から入力された画像データを、１Ｂｙｔｅ単位で第２信号処理部１０８あるいは顔検出部１１０に出力する。なお、本実施形態では第２信号処理部１０８は、Ｘ１／２データ及びＸ１／４データをアップサンプリングし、Ｘ１データと合成することで、単位画素が８ｂｉｔの情報量を有する１０２４×７６８画素の画像データを生成する、所謂階層処理を実行するものとする。また顔検出用画像データは、単位画素が８ｂｉｔの情報量を有する１２８×９６画素の画像データである。
【００３２】
メモリアクセス部２０５は、データ転送に係るＤＲＡＭ１０７へのアクセス制御を行う。メモリアクセス部２０５は、ＷＲＤＭＡＣあるいはＲＤＤＭＡＣによりＤＲＡＭ１０７へのアクセス要求及びアクセス先のアドレス情報を受信すると、要求を許可し、対応するコマンドをＤＲＡＭ１０７に発行する。
【００３３】
具体的にはメモリアクセス部２０５は、書き込み要求をＷＲＤＭＡＣより受信した場合、要求されたバンクにおいて指定されたロウアドレスとは異なる他のロウアドレスが開かれているか否かを判断する。他のロウアドレスが開かれている場合、メモリアクセス部２０５は該ロウアドレスに対するＰＲＥコマンドを発行することで要求されたバンクをアイドル状態にする。またメモリアクセス部２０５は、要求されたバンクにおいて指定されたロウアドレスが開かれているか否かを判断する。指定されたロウアドレスが開かれていない場合、メモリアクセス部２０５は該ロウアドレスに対するＡＣＴコマンドを発行することで指定されたロウアドレスを開く。そしてメモリアクセス部２０５は、指定されたロウアドレスが開かれた状態となった後、ＷＲコマンドを発行するとともに、要求を受けたＷＲＤＭＡＣからデータを受信し、ＤＲＡＭ１０７に対して書き込みを行う。
【００３４】
なお、メモリアクセス部２０５は、読み出し要求をＲＤＤＭＡＣから受信した場合も同様に処理する。このときメモリアクセス部２０５は、指定されたアドレスのデータを８バースト転送で読み出し、要求を受けたＲＤＤＭＡＣに対して読み出したデータを入力する。
【００３５】
なお、メモリアクセス部２０５は調停部２０６を有する。調停部２０６は、同時期に、複数のＤＲＡＭ１０７へのアクセス要求を受信した場合に、アクセスを行う処理について予め定められた優先度に応じて、要求を許可するＤＭＡＣを決定する。即ち、優先度の高い処理に対応するＤＭＡＣがアクセスを行なっている、あるいは行う場合、調停部２０６は優先度の低い処理に対応するＤＭＡＣのアクセスを抑止する。
【００３６】
〈データアクセスタイミングチャート〉
ここで、本実施形態の各ＤＭＡＣがメモリアクセス部２０５に対してアクセス要求を生成するタイミングを示したタイミングチャートについて、図３を用いて説明する。
【００３７】
（階層処理時）
図３（ａ）は、階層処理を伴う画像データを生成する撮影モードがデジタルカメラ１００に適用されている際の、各ＷＲＤＭＡＣが書き込み要求を生成するタイミングチャートを示している。
【００３８】
ＷＲＤＭＡＣ２０１、ＷＲＤＭＡＣ２０２、及びＷＲＤＭＡＣ２０３には、第１信号処理部１０５において生成されるＸ１データ、Ｘ１／２データ、及びＸ１／４データのそれぞれが生成過程において順次入力される。本実施形態では、第１信号処理部１０５においてラスタスキャン順に処理されたデータが、順次ＷＲＤＭＡＣに伝送されるものとする。各ＷＲＤＭＡＣは、入力されたデータが８バースト転送で転送されるデータ長、即ち３２Ｂｙｔｅとなった際に、メモリアクセス部２０５に対して書き込み要求を生成する。
【００３９】
図３（ａ）では８バースト転送で転送される３２Ｂｙｔｅのデータが１つのブロックとして示されている。Ｘ１データは、上述したように水平１ラインには、単位画素が８ｂｉｔ（１Ｂｙｔｅ）の情報量を有する画素が１０２４個並ぶ。このため、水平１ラインについてなされる書き込み要求は１０２４÷３２＝３２回行われ、画像データ全体で３２×７６８＝２４５７６回行われる。またＸ１／２データは、水平１ラインについてなされる書き込み要求は５１２÷３２＝１６回行われ、画像データ全体で１６×３８４＝６１４４回行われる。またＸ１／４データは、水平１ラインについてなされる書き込み要求は２５６÷３２＝８回行われ、画像データ全体で８×１９２＝１５３６回行われる。
【００４０】
つまり、ラスタスキャン順に第１信号処理部１０５における処理がなされて順次ＷＲＤＭＡＣ２０１乃至２０３に画像データが入力される場合、各ＷＲＤＭＡＣが生成する書き込み要求には、次の関係がある。
・Ｘ１／２データの１ブロックの書き込み要求がなされるまでの期間に、Ｘ１データの２ブロックの書き込み要求がなされる
・Ｘ１／４データの１ブロックの書き込み要求がなされるまでの期間に、Ｘ１／２データは２ブロック、Ｘ１データは４ブロックの書き込み要求がなされる
【００４１】
なお、これはＸ１データ、Ｘ１／２データ、及びＸ１／４データの全てのデータに使用される画素を有する水平ラインについて、第１信号処理部１０５が処理を行なっている場合であり、使用される画素が存在しないラインについてはこの限りではない。
【００４２】
（顔検出時）
図３（ｂ）は、撮像された画像データ、あるいは動画用ストリームデータのフレームデータについて顔検出を行う撮影モードが、デジタルカメラ１００に適用されている際の、ＲＤＤＭＡＣ２１０が読み出し要求を生成するタイミングチャートを示している。
【００４３】
上述したように、顔検出用画像データは水平１ラインに、単位画素が８ｂｉｔの情報量を有する画素が１２８個並ぶ。このため、第１信号処理部１０５から順次処理されてＤＲＡＭ１０７に格納された顔検出用画像を、水平１ラインごとに順次読み出す場合、水平１ラインについてなされる読み出し要求は１２８÷３２＝４回である。また画像データ全体では４×９６＝３８４回の読み出し要求が行われる。
【００４４】
（動画生成時）
図３（ｃ）は、動画用ストリームデータを生成する撮影モードがデジタルカメラ１００に適用されている際の、ＷＲＤＭＡＣ２０４が書き込み要求を生成するタイミングチャートを示している。
【００４５】
動画生成部１０９は、３２７６８（＝１０２４×１０２４／３２）ブロック分のストリームデータを生成し、ＷＲＤＭＡＣ２０４に順次入力する。ＷＲＤＭＡＣ２０４は、１ブロック毎にメモリアクセス部２０５にＤＲＡＭ１０７への書き込み要求を出力する。なお、本実施形態では動画生成部１０９は、２０４８ブロック毎に動画用ストリームデータを生成する。
【００４６】
《アクセス制御》
以下、本実施形態のデジタルカメラ１００において行われる、ＤＲＡＭ１０７に対するアクセス制御について図４を用いて説明する。
【００４７】
本実施形態では、複数の処理によって交互になされる、ＤＲＡＭ１０７へのアクセスが繰り返し行われる際のプリチャージ頻度を低減するために、ＣＰＵ１０１は、複数の処理の各々に対して、それぞれ異なるバンクをアクセス用に割り当てる。具体的には、各処理が他の処理に割り込まれずに連続してＤＲＡＭ１０７にアクセスできる期間に転送されるデータ長に応じて、ＣＰＵ１０１は各処理がアクセスするバンクのバンクアドレスを図４（ａ）のように異ならせる。
【００４８】
本実施形態では、階層処理を伴う画像データの生成処理、顔検出処理、及び動画生成処理が同時に行われる場合について説明する。図４（ａ）は、本実施形態でのＤＲＡＭ１０７にアクセスする処理に対して割り当てられるバンクを示している。図の例では、動画用ストリームデータを書き込むバンクとしてＢＡＮＫ０乃至７が割り当てられている。またＸ１データを書き込むバンクとしてＢＡＮＫ０及び１が、Ｘ１／２データを書き込むバンクとしてＢＡＮＫ２が、Ｘ１／４データを書き込むバンクとしてＢＡＮＫ３が割り当てられている。また顔検出用画像データを書き込む（読み出す）バンクとして、Ｘ１／４データと同一のＢＡＮＫ３が割り当てられている。
【００４９】
なお、動画用ストリームデータの書き込み時は、ＢＡＮＫ０→ＢＡＮＫ１→・・・→ＢＡＮＫ７の順で同一のロウアドレスの連続するカラムアドレスの全てに書き込みを行った後、ＢＡＮＫ０の次のロウアドレスを開いて同様に書き込みを行う。またＸ１データの書き込み時は、ＢＡＮＫ０→ＢＡＮＫ１の順で同一のロウアドレスの連続するカラムアドレスの全てに書き込みを行った後、ＢＡＮＫ０の次のロウアドレスを開いて同様に書き込みを行う。Ｘ１／２データの書き込み時は、ＢＡＮＫ２の同一のロウアドレスの連続するカラムアドレスの全てに書き込みを行った後、次のロウアドレスを開いて同様に書き込みを行う。またＸ１／４データや顔検出用画像データの書き込み時は、ＢＡＮＫ３の同一のロウアドレスの連続するカラムアドレスの全てに書き込みを行った後、次のロウアドレスを開いて同様に書き込みを行う。
【００５０】
図４（ｂ）は、本実施形態におけるＤＲＡＭ１０７への各ＷＲＤＭＡＣから画像データを書き込む期間（アクセス期間）を示している。本実施形態ではメモリアクセス部２０５の調停部２０６は、動画用ストリームデータのアクセスに係る処理について、他のデータのアクセスに係る処理よりも高い優先度を設定している。図４（ａ）で示したように、動画用ストリームデータは全てのバンクに格納されるため、少なくともいずれかのバンク内には他の処理で生成されたデータが格納される。このため調停部２０６は、動画用ストリームデータのアクセスに係る処理については優先度を高くすることで、他の処理でＤＲＡＭ１０７へのアクセス要求が発生した場合でも該アクセス要求の割り込みを禁止することができる。つまり、同一のバンクにアクセスする処理が交互に発生する、即ちロウアドレスの変更が行われないため、プリチャージコマンド頻度を低減することができる。
【００５１】
また第１信号処理部１０５により生成されるＸ１データ、Ｘ１／２データ、及びＸ１／４データは、他の処理に割り込まれずに連続してＤＲＡＭ１０７にアクセスできる期間に転送されるデータ長が、動画用ストリームデータに比べて短い。このため該３種類のデータは、３２Ｂｙｔｅのデータが生成される度に各ＤＭＡＣによりアクセス要求がなされ、調停部２０６はメモリアクセス部２０５がＤＲＡＭ１０７へアクセスする処理を交互に切り替える必要がある。しかしながら、本実施形態では図４（ａ）に示されるようにそれぞれのデータは異なるバンクに格納されるため、アクセスする処理が切り替えた場合であっても、各バンクをアイドル状態に戻す必要はなく、プリチャージ頻度を低減することができる。
【００５２】
なお、本実施形態ではＸ１データはＸ１／２データ及びＸ１／４データよりも、他の処理に割り込まれずに連続してＤＲＡＭ１０７にアクセスできる期間に転送されるデータ長が長い。このため、Ｘ１データの書き込み先として、ＤＲＡＭ１０７のＢＡＮＫ０及び１の２つのバンクがＸ１データ用に割り当てられている。これは、Ｘ１／２データやＸ１／４データの転送されるブロックが生成される間に、Ｘ１データのブロックが連続して生成されてＤＲＡＭ１０７に書き込まれるからである。本実施形態ではＸ１データに係るアクセスは、複数のバンクにインタリーブさせながら実行されるため、より効率的にアクセスが実行される。
【００５３】
また、プリチャージ頻度を低減するためには、並行して行われるＤＲＡＭ１０７への書き込みを行う処理について、書き込みを行うバンクを各処理で異ならせることが好ましい。しかしながら、ＤＲＡＭ１０７にアクセスを行う処理の数によっては、ＤＲＡＭ１０７のバンク数が不足する可能性がある。即ち、本実施形態のようにＤＲＡＭ１０７が８つのバンクを有している場合は、８つの処理までは異なるバンクを割り当てることが可能であるが、それ以上の数については未割り当てのバンクを選択することができない。このため、本実施形態では図４（ａ）に示されたＸ１／４データと顔検出用画像データのように、処理において行われるＤＲＡＭ１０７へのアクセス要求発生条件が特定の条件を満たす場合には、書き込み先のバンクを共通化する。
【００５４】
例えば、動画用ストリームデータ以外の、他の処理に割り込まれずに連続してＤＲＡＭ１０７にアクセスできる期間に転送されるデータ長が所定のデータ長以下のデータについては、ＣＰＵ１０１は次のように判断する。ＣＰＵ１０１は、このようなデータに係るアクセスを行う処理のアクセス要求の発生条件が以下の条件を満たすか否かによって格納されるバンクを予め定める。
・処理においてなされるＤＲＡＭ１０７への総アクセス回数が予め定められた回数以下である
・処理において、ＤＲＡＭ１０７へのアクセスが行われない期間の長さが予め定められた期間以上である
【００５５】
例えば、Ｘ１／４データのように、ＤＲＡＭ１０７へのアクセス要求がＷＲＤＭＡＣ２０３によりなされる回数は、水平１ラインで最大８回と少ないため、プリチャージ頻度も全体的に少なくなる。またＸ１／４データは、水平４ラインのうちの１ラインでのみ出力されるため、水平３ライン分の期間ではＤＲＡＭ１０７へのアクセス要求はなされない。つまり、水平３ライン分の期間に同一のバンクで他のデータに係るアクセスを連続させたとしてもプリチャージ頻度は２回で済むため、２つ以上の処理をＤＲＡＭ１０７の同一バンクにアクセスさせても、プリチャージ頻度に影響は少ない。
【００５６】
本実施形態ではＸ１／４データと顔検出用データとを同一のバンクに書き込むことで、プリチャージ頻度を低減しつつ、アクセスされるＤＲＡＭ１０７のバンク数を抑えている。なお、本実施形態では調停部２０６は、ＲＤＤＭＡＣ２１０による顔検出用画像データの読み出し要求よりも、ＷＲＤＭＡＣ２０３によるＸ１／４データの書き込み要求の優先度を高くしてＸ１／４データによるアクセスを連続させることで、プリチャージ頻度を低減している。
【００５７】
このようにＣＰＵ１０１は、１つの処理が他の処理に割り込まれずに連続してＤＲＡＭ１０７にアクセスできる期間に転送されるデータ長に応じてインタリーブさせるバンク数を変更することで、各処理におけるＤＲＡＭ１０７へのアクセスを効率化することができる。また、総アクセス回数が多い処理やアクセス間隔が短い処理同士を同一のバンクに割り当てるとアクセスが交互に行われる可能性が高く、プリチャージ頻度も高くなる。本実施形態では、このような処理を異なるバンクに割り当てることでプリチャージ頻度を低減することができる。さらに、総アクセス回数が少ない処理やアクセス間隔が長い処理については、同一のバンクに割り当ててもアクセスが交互に行われる可能性は低いため、同一のバンクに割り当てることでプリチャージ頻度の増加を低減しつつ、割り当てるバンク数を節約できる。
【００５８】
〈アドレス制御機能〉
並行して生じうる処理の各々に割り当てられたＤＭＡＣが、ＤＲＡＭ１０７の特定のバンクのみにアクセスするようにアドレスを制御する方法は、各ＤＭＡＣが有するアドレス制御機能により実現される。
【００５９】
図５は、本実施形態の各ＤＭＡＣが有するアドレス制御機能を説明するためのブロック図である。本実施形態の各ＤＭＡＣは、所定量のデータを転送した場合に、データ格納アドレスの値をジャンプさせて特定のアドレスに移動させるオフセット機能（アドレスジャンプ機能）を有している。このようなアドレス制御機能に係るアドレスジャンプ機能を利用することで、Ｘ１データのようにバンクインタリーブしながら書き込みがなされる場合であっても、特定のバンクにのみデータが書き込まれるように制御することができる。
【００６０】
ＣＰＵ１０１からアドレス情報（スタートアドレス、オフセットデータ転送長、オフセット値、バースト長を含む）が伝送されると、各ＤＭＡＣでは次のような処理がなされ、最終的にアクセスするアドレスが決定される。
【００６１】
アドレスセレクタ５０１は、データのアクセス開始時には、アドレス情報に含まれるスタートアドレスを、アクセス開始後には後述する加算器５０４により出力されたアドレスを選択する。アドレスは、ロウアドレスとカラムアドレスとを有しており、Ｘ１データの場合、スタートアドレスは（１，１）となる。アドレスセレクタ５０１で選択されたアドレスは、フリップフロップ５０５により保持され、所定のタイミングで加算器５０４に出力される。
【００６２】
転送長カウンタ５０２は、ＤＭＡＣから転送されたデータ長が、アドレス情報に含まれるオフセットデータ転送長分となった場合に、オフセット値算出器５０３に対してオフセットタイミングを示すタイミング信号を出力する。本実施形態では、図４（ａ）で示したようにＸ１データのオフセットデータ転送長は、ＢＡＮＫ０の先頭からＢＡＮＫ１の終端までのカラムアドレスのデータ長に対応しており、５１２ブロック（＝１６３８４Ｂｙｔｅ）となっている。
【００６３】
オフセット値算出器５０３は、転送長カウンタ５０２からオフセットタイミング信号を受信すると、アドレス情報に含まれるオフセット値を出力する。またオフセット値算出器５０３は、それ以外のタイミングではアドレス情報に含まれるバースト長を出力する。本実施形態ではオフセット値は、加算器５０４における加算後のロウアドレスが現在のロウアドレス値に１を足した値（次のロウアドレス（ページ）にジャンプ）、カラムアドレスがスタートカラムアドレスとなるように設定される。なお、本実施形態ではバースト長は「８」である。
【００６４】
そして加算器５０４は、オフセット値算出器５０３より出力された値をフリップフロップ５０５に保持されていたアドレスに加算することで、アクセスするアドレスを決定する。
【００６５】
《ＤＲＡＭ転送シーケンス》
このような構成をもつ本実施形態のデジタルカメラ１００のＤＲＡＭ転送シーケンスについて、図６のフローチャートを用いて具体的な処理を説明する。
【００６６】
Ｓ６０１で、ＣＰＵ１０１は、現在デジタルカメラ１００に設定されている撮影モードの情報を参照し、ＤＲＡＭ１０７へのアクセスを行う処理、及び割り当てるバンクの情報を取得する。
【００６７】
Ｓ６０２で、ＣＰＵ１０１は、ＷＲＤＭＡＣ２０１乃至２０４、及びＲＤＤＭＡＣ２０７乃至２１０の各々に、アドレス情報を伝送する。具体的にはＣＰＵ１０１は、アクセスを行う処理及び割り当てるバンクの情報に従って、各処理に係るデータアクセスを行うＤＭＡＣに対して、予め定められたスタートアドレス、オフセットデータ転送長、オフセット値、バースト長の情報伝送する。
【００６８】
Ｓ６０３で、ＣＰＵ１０１は、ＤＲＡＭ１０７へのデータアクセスを伴う各処理の実行を開始する。そしてＣＰＵ１０１はＳ６０４で、データアクセスが完了したか否かを判断する。具体的にはＣＰＵ１０１は、データアクセスが完了したことを示す制御信号を転送制御部１０６から受信したか否かを判断する。ＣＰＵ１０１は、データアクセスが完了したと判断した場合はシーケンスを完了し、完了していないと判断した場合は本ステップの処理を繰り返す。
【００６９】
以上説明したように、本実施形態の情報処理装置では、複数の処理が交互に繰り返してＤＲＡＭにアクセスする場合であっても、プリチャージコマンドの発行頻度を低減することでデータ転送効率を向上させることができる。
【００７０】
また情報処理装置は、並行してＤＲＡＭへのアクセスを行う複数の処理の組み合わせに応じて、複数の処理がアクセスするＤＲＡＭのバンクの数を異ならせる制御を行う。即ち、他の処理に割り込まれずに連続してＤＲＡＭにアクセスできる期間に転送されるデータ長が予め定められたデータ長以下である処理については、他の処理と同一のバンクを割り当てたとしてもプリチャージ頻度を低減できる。このため、組み合わせを把握することで適切なバンク数を決定することができる。つまり、並行してＤＲＡＭへのアクセスを行う複数の処理の組み合わせについて、各処理の連続してデータアクセスするデータ長を事前に把握することで、プリチャージ頻度を低減させた適切なバンク数を情報処理装置は決定できる。
【００７１】
なお、本実施形態ではＸ１データ、Ｘ１／２データ、Ｘ１／４データ、顔検出用画像データ、及び動画用ストリームデータの５種類のデータをＤＲＡＭに格納する例について説明したが、本発明の実施はこれに限られるものではないことは容易に理解されよう。
【００７２】
また、本実施形態では、動画用ストリームデータを８つのバンクに、Ｘ１データを２つのバンクに、他の画像データを１つのバンクに割り当てるものとして説明したが、各データ用に割り当てられるバンクの数はこれに限られない。各データ用に割り当てられるバンクの数は、連続してアクセス可能なデータ長の大小関係に応じたバンク数であればよい。
【００７３】
［変形例］
上述した実施形態では、ＤＲＡＭ１０７へのアクセスを行う各処理に対してアクセスの優先度を設けることで、例えば顔検出用画像データの読み出しを、他の処理がＤＲＡＭ１０７へのアクセスを行なっている際に実行されないように制御する方法について説明した。しかしながら、単に処理に対して優先度を設定する方法では、例えば図７（ａ）に示すように、他の画像データの書き込みに係るアクセスがなされていないタイミングＴ１にアクセス要求がなされた場合には他の処理が実行されていないため、読み出しが可能である。このような場合、タイミングＴ２で顔検出用画像データと同一のバンクに対するＸ１／４データの書き込みがなされる際にはプリチャージが必要となる。またさらに、その後タイミングＴ３で再び顔検出用画像データの読み出しがなされる場合は、再度プリチャージが必要となる。即ち、データのアクセス要求のタイミングによっては同一のバンクの異なるロウアドレスへのアクセスが交互に発生する可能性がある。
【００７４】
これに対し本変形例では、ＤＲＡＭ１０７に対して所定の時間間隔より短い間隔で連続してデータアクセスを行う場合は、該アクセスが行われている期間、メモリアクセス部２０５の調停部２０６に対して、アクセス中であることを報知する信号が送信される。具体的にはＸ１／４データについてのデータアクセスがなされている間は、図７（ｂ）に示すようにＷＲＤＭＡＣ２０３から調停部２０６に対して、ＨＩＧＨにされた連続アクセス報知信号が送信される。
【００７５】
調停部２０６は、ＨＩＧＨの連続アクセス報知信号を受信した場合、該信号を送信したＷＲＤＭＡＣ２０３のアクセスしているバンクを特定し、該特定したバンクに対して他のＤＭＡＣ（ＲＤＤＭＡＣ２１０）からなされたアクセス要求をマスクする。なお、ＷＲＤＭＡＣ２０３は、ＣＰＵ１０１により設定された、所定の時間間隔より短い間隔で連続して書き込みを行うデータ量（８ブロック：１水平ライン分）のデータ転送が完了すると、連続アクセス報知信号をＬＯＷにするものとする。
【００７６】
また同様に、顔検出用画像データのデータアクセスがなされている間は、図７（ｂ）に示すようにＲＤＤＭＡＣ２１０から調停部２０６に対して、ＨＩＧＨにされた連続アクセス報知信号が送信される。そしてＲＤＤＭＡＣ２１０は、ＣＰＵ１０１により設定された連続して読み出しを行うデータ量（４ブロック）のデータ転送が完了すると、連続アクセス報知信号をＬＯＷにする。このとき調停部２０６は、ＷＲＤＭＡＣ２０３によるアクセス要求をマスクする。
【００７７】
このようにすることで、同一のバンクに対してアクセスする複数の処理について、いずれかの処理が連続してデータアクセスを行う期間には、他の処理が割り込むことがなくなるため、プリチャージ回数を低減し、効率良くアクセスすることができる。
【００７８】
［その他の実施形態］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2014013506.tif 000003
【図２】
2014013506.tif 000004
【図３】
2014013506.tif 000005
【図４】
2014013506.tif 000006
【図５】
2014013506.tif 000007
【図６】
2014013506.tif 000008
【図７】
2014013506.tif 000009
【図８】
2014013506.tif 000010
【図９】
2014013506.tif 000011