(57)【要約】【課題】  シンプルかつ低コストのメモリ管理手法により、２次元のデータを含む多様なサイズのデータを自由な取り扱いを可能とし、かつ、無駄なメモリ領域の発生を抑制可能な新規な動的メモリ管理技術を実現する。【解決手段】  メモリ管理装置１２０のメモリ領域確保・解放部１２２は、２次元の共有メモリ１１０において、多様なサイズの２次元（一次元を含む）のメモリ領域１１２ａ〜１１２ｃを自由に確保し、そのメモリ領域の使用後に解放する。メモリ領域の確保に際し、格納しようとする矩形データの水平垂直の関係をそのまま維持できるようにし、メモリの断片化も抑制することを考慮して、適切なサイズのメモリ領域を確保する。メモリ１１０のメモリ空間の使用状況（未使用状況）は、管理情報１２４によって適宜、管理する。【選択図】  図２
2007034555.tif 000002
【特許請求の範囲】
【請求項１】
メモリ空間に２次元のデータを格納する必要が生じると、前記メモリ空間のメモリ使用状況を管理するメモリ管理情報を参照して前記メモリ空間における未使用領域を検索し、前記２次元のデータを格納可能な２次元のメモリ領域を確保する第１のステップと、前記確保した２次元のメモリ領域が不要となると、その２次元のメモリ領域を解放する第２のステップとを含む動的メモリ管理方法であって、
前記２次元のデータは矩形状の画像データであり、
前記第１のステップでは、前記画像データの矩形状を維持したまま格納可能な矩形メモリ領域を確保することを特徴とする動的メモリ管理方法。
【請求項２】
請求項１記載の動的メモリ管理方法であって、
前記メモリ管理情報として、前記メモリ空間上の使用領域又は未使用領域を判定するためのテーブルを使用し、該テーブルにおいて、開始アドレスと、第１の方向及び該第１の方向に直交する第２の方向のサイズによって定義される矩形領域を単位として、前記メモリ空間上の使用領域又は未使用領域を特定することを特徴とする動的メモリ管理方法。
【請求項３】
請求項２記載の動的メモリ管理方法であって、
前記メモリ管理情報を参照して未使用領域を検索し、必要なメモリ領域を確保するに際し、
前記メモリ空間上において前記第１走査方向に検索する第１検索ステップと、
前記第１走査方向に必要サイズの未使用の部分があった場合に、前記第２走査方向に検索して必要サイズの未使用の部分があるかを検索する第２検索ステップと、
前記第２検索ステップによって、必要サイズ以上の矩形状の未使用領域を検出した場合に、この最初に検出した矩形状の未使用領域を前記２次元データの格納先として確保する格納先設定ステップと、
を有することを特徴とする動的メモリ管理方法。
【請求項４】
請求項２記載の動的メモリ管理方法であって、
前記メモリ管理情報を参照して未使用領域を検索し、必要なメモリ領域を確保するに際し、
前記メモリ空間上において前記第１走査方向に検索する第１検索ステップと、
前記第１走査方向に必要サイズの未使用の部分があった場合に、前記第２走査方向に検索して必要サイズの未使用の部分があるかを検索する第２検索ステップと、
前記第１及び第２検索ステップを繰り返し、必要サイズ以上の矩形状の未使用領域を全て検出する全未使用領域検出ステップと、
前記検出された未使用領域の中から、選択的にいずれか一つの矩形状の未使用領域を前記２次元データの格納先として確保する格納先選択設定ステップと、
を有することを特徴とする動的メモリ管理方法。
【請求項５】
請求項１〜請求項４のいずれか１項記載の動的メモリ管理方法であって、
前記第１のステップと第２のステップの間で、前記２次元のメモリ領域の確保に伴う前記メモリ管理情報の更新を行う第３のステップと、
前記第２のステップの後で、前記２次元のメモリ領域の解放に伴う前記メモリ管理情報の更新を行う第４のステップと、
を有することを特徴とする動的メモリ管理方法。
【請求項６】
請求項５記載の動的メモリ管理方法であって、
前記第３のステップは、前記２次元のメモリ領域が確保された後の、残余の未使用のメモリ領域に対して、新たに矩形領域を設定し直し、該設定された矩形領域の各々についての開始アドレスと水平及び垂直方向のサイズとの情報を前記テーブルに登録する処理であることを特徴とする動的メモリ管理方法。
【請求項７】
請求項５記載の動的メモリ管理方法であって、
前記第４のステップは、解放されたメモリの矩形領域を、該矩形領域の周辺の未使用領域と結合することによって、より大きなサイズの矩形エリアを形成し、この結合によって新たに生じる大サイズの矩形領域に対し、その開始アドレスと、水平及び垂直方向のサイズとの情報を前記テーブルに登録する処理であることを特徴とする動的メモリ管理方法。
【請求項８】
請求項１記載の動的メモリ管理方法であって、
前記メモリ空間を、ｍ画素×ｎ画素（ｍ，ｎは共に２以上の自然数）に対応する矩形領域を単位として分割し、それらの矩形領域の各々の使用状況を、各矩形領域を代表する代表ビットで表現し、該代表ビットを前記メモリ管理情報として使用することを特徴とする動的メモリ管理方法。
【請求項９】
請求項８記載の動的メモリ管理方法であって、
前記メモリ管理情報を参照して未使用領域を検索し、必要なメモリ領域を確保するに際し、
前記メモリ空間上において前記第１走査方向に検索する第１検索ステップと、
前記第１走査方向に必要サイズの未使用の部分があった場合に、前記第２走査方向に検索して必要サイズの未使用の部分があるかを検索する第２検索ステップと、
前記第２検索ステップによって、必要サイズ以上の矩形状の未使用領域を検出した場合に、この検出した矩形状の未使用領域を前記２次元データの格納先として確保する格納先設定ステップと、
を有することを特徴とする動的メモリ管理方法。
【請求項１０】
請求項１〜請求項９のいずれか１項記載の動的メモリ管理方法を実施するメモリ管理装置であって、
前記メモリ管理情報を具備し、前記第１及び第２のステップを実施するメモリ領域確保・解放部を有することを特徴とするメモリ管理装置。
【請求項１１】
請求項１０記載のメモリ管理装置と、前記メモリ空間を提供する少なくとも一つのメモリと、を有することを特徴とする電子機器。
【請求項１２】
固体撮像素子と、被写体像を前記固体撮像素子に結像する光学系と、前記固体撮像素子から出力されてくる信号を処理し画像データを生成する信号処理部と、この生成された画像を表示する表示部と、を備えた撮像装置であって、
前記画像データの生成の際に使用されるメモリと、
前記メモリを管理する請求項１０記載のメモリ管理装置と、
を備えたことを特徴とする撮像装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動的メモリ管理方法、メモリ管理装置、電子機器及び撮像装置に関し、特にメモリを有効利用する技術に関する。
【背景技術】
【０００２】
固体撮像素子を備えた撮像装置（電子スチルカメラやビデオカメラ等）では、固体撮像素子によって光電変換されて得られるアナログ信号をＡ／Ｄ変換し、その結果として得られる画像データをそのまま、あるいは必要に応じて圧縮してメモリに一時的に蓄積し、次に、その画像データを読出して画像処理回路へ送って所定の画像処理（例えば、歪み補正、ＹＣ分離、縮小ズーム、画像回転、ポストフィルタ処理、JPEG圧縮、垂直方向の拡大といった各種の画像処理）を行い、画像処理後の画像データを必要に応じて圧縮した後に再度メモリに蓄積する、というような一連の処理が行われる。
【０００３】
上記処理では、撮像データの一時的な蓄積のため、あるいは、各種の画像処理時（圧縮・伸長処理を含む）における処理データの一時的蓄積のため等に、メモリが頻繁に使用される。
【０００４】
デジタルカメラ等の撮像機器では、ＣＣＤ等の撮像素子からは一行毎のラインデータが出力される点に着目し、一行のデータを格納するためのラインメモリ（所定サイズをもつ静的メモリ）が多く用いられている。
【０００５】
ただし、ラインメモリのサイズを一律に固定してしまうと、メモリの使用効率が低下する（メモリが無駄になる）場合もある。そこで、特許文献１では、多数のラインメモリの集合体によって共有メモリを構築し、そして、共有メモリの使用の必要性が生じると、その都度、使用するラインメモリを、メモリ使用要求元の回路に割り当てるようにして、ラインメモリを効率的に使用できるようにしている。
【特許文献１】特開２００４−３１２０７２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献１記載の技術において、使用される共有メモリは、ラインメモリの集合体であり、したがって取り扱えるデータは、結局のところ、イメージセンサから出力される一行分の画像データだけである。
【０００７】
しかし、近年、撮像装置（電子スチルカメラ、ビデオカメラならびにカメラ付き携帯端末のような携帯機等を含む）の高機能化、多機能化に伴い、カメラ付き携帯電話機のような携帯機では、ネットワーク上のサーバからダウンロードした画像を実写した写真画像と合成する等の処理も可能となってきており、通常の撮像装置においても、イメージセンサから出力される一行分のデータ（ラインデータ）だけではなく、多様なサイズの２次元データを自由に取り扱う必要性が高まっている。
【０００８】
また、イメージセンサから出力される一行分のラインデータの処理に限った場合でも、特許文献１の技術では、固定サイズのラインメモリを多数使用することから、無駄なメモリ領域が発生し易くなるのはやむを得ない。つまり、一口にラインデータといっても、実際は、撮像装置の機種に応じて、あるいは、ユーザが選択する解像度等に応じて、ラインデータのサイズは多様に変化することから、特許文献１記載のように、一行分のサイズが固定のラインメモリを使用する場合、最も大きなサイズを想定してラインメモリの容量を決める必要があり、実際に取り扱うデータが小サイズの場合には、残余の部分が無駄になってしまう。
【０００９】
また、共有メモリとしては、図１２に示される構造をもつＤＲＡＭを使用することができる。ＤＲＡＭは、図１２に示されるように、ワード線Ｗ１〜Ｗ４と、ビット線（データ線）Ｃ１〜Ｃ４によって選択されるメモリセル（ｍ１〜ｍ１２）にデータを随時書き込みでき、同様に、選択されるメモリセルから随時データを読み出すことができるメモリである。ワード線（Ｗ１〜Ｗ４）の切替時には、若干の遅延が生じる。
【００１０】
また、ＣＣＤ等のイメージセンサを用いて画像データを生成する撮像装置（電子スチルカメラ等）では、基本的に、一行分のラインデータを単位として画像を処理する必要がある。
【００１１】
つまり、図１３（ａ）に示すように、ＣＣＤ等のイメージセンサで撮像されて得られる一枚の画像の画像データは、各行のラインデータ（１）〜（７）に区分されている。仮に、図１３（ａ）の画像データを、共有メモリのメモリ空間に図１３（ｂ）のような態様で格納すると、一行分のラインデータ（２），（４）が２行に跨って格納されてしまう。したがって、これらのラインデータを読み出すときに、ワード線を切り替える必要があり、この際に画像データの読み出しに遅延が生じる可能性が生じる。この場合、後続の処理に悪影響（例えば、画像の乱れや、ＤＳＰ等による画像処理の遅延が生じる等）を及ぼす場合がある。
【００１２】
このように、２次元データを動的メモリ管理方法によって管理する場合、単に、メモリ空間に必要なサイズの領域を確保すればよいというものではなく、後続の画像処理への影響を考えて、適切な形状のメモリ領域を迅速に確保する必要がある。また、無駄に大きなサイズのメモリ領域を確保することを避け、また、メモリの断片化（フラグメンテーション）を防止することも重要である。
【００１３】
本発明は、このような考察に基づいてなされたものであり、１次元のデータだけではなく、２次元のデータを含めて自由に取り扱いでき、また、多様なサイズのデータを自由に取り扱いでき、かつ、無駄なメモリ領域の発生を抑制できる、新規なメモリ管理技術を実現することを目的とする。
【課題を解決するための手段】
【００１４】
本発明に係る上記目的は下記構成により達成される。
（１）  メモリ空間に２次元のデータを格納する必要が生じると、前記メモリ空間のメモリ使用状況を管理するメモリ管理情報を参照して前記メモリ空間における未使用領域を検索し、前記２次元のデータを格納可能な２次元のメモリ領域を確保する第１のステップと、前記確保した２次元のメモリ領域が不要となると、その２次元のメモリ領域を解放する第２のステップとを含む動的メモリ管理方法であって、前記２次元のデータは矩形状の画像データであり、前記第１のステップでは、前記画像データの矩形状を維持したまま格納可能な矩形メモリ領域を確保することを特徴とする動的メモリ管理方法。
【００１５】
この動的メモリ管理方法によれば、メモリ空間における使用領域又は未使用領域をメモリ管理情報によって管理し、このメモリ情報を適宜、参照することによって、共通のメモリ空間において、多様なサイズの２次元のデータ（１次元のデータを含む）を自由に確保し、また、不要となったメモリ領域を解放することが可能な、メモリの動的管理方法を実現することができる。ここで用意されるメモリ空間は、従来技術に見られるようなラインメモリの集合体ではなく、多目的に、制限なく使用可能な、一つのメモリ空間であるため、イメージセンサからの１行分のラインデータだけでなく、他のあらゆる形式のデータ（２次元、１次元を問わない）をそのメモリ空間に格納することができる。必要なサイズのメモリ領域を必要なときに確保し、また、不要となったメモリ領域は解放して再利用を可能とすることができ、したがって、メモリの無駄を省き、効率的なメモリ利用が可能となる。
【００１６】
また、ＣＣＤ等のイメージセンサからは、一行分のラインデータ単位で画像データが出力される。ここで、確保したメモリ領域の行方向のサイズが足りず、一行分のラインデータを、二行のメモリ領域にまたがって格納することになると、メモリのリード時において、行の切替（つまり、ワード線の切替）のためにデータ読み出しに遅延が生じ、このことが後続の画像処理に悪影響（例えば、表示画像に乱れが生じる、あるいは、ＤＳＰ等による画像の信号処理に遅延が生じる等）を与える場合がある。そこで、メモリ空間に矩形（四角形）のブロックの画像データを格納するための矩形メモリ領域を動的に確保する際、矩形（四角形）の画像データ（のブロック）の状態を維持したまま、その画像データをそのまま格納できるような矩形状のメモリ領域を確保する。つまり、メモリ領域を自由に確保できるといっても、必要なサイズさえ満足すればどのような形状の領域を確保してもよい、という訳ではなく、その画像データの縦横のサイズを意識して領域を確保することが肝要である。これにより、一行分のラインデータは必ず一行のメモリ領域に確保でき、一行のラインデータの読み出しの途中で遅延が生じることを防止でき、また、矩形状の画像データがその形状を維持されてメモリ空間に格納されるため、画像処理回路等は、その画像データをそのまま読み出して、すぐに処理、加工を行うことができ、画像の処理、加工に伴う余計な負担が生じることもない。
【００１７】
（２）  請求項１記載の動的メモリ管理方法であって、前記メモリ管理情報として、前記メモリ空間上の使用領域又は未使用領域を判定するためのテーブルを使用し、該テーブルにおいて、開始アドレスと、第１の方向及び該第１の方向に直交する第２の方向のサイズによって定義される矩形領域を単位として、前記メモリ空間上の使用領域又は未使用領域を特定することを特徴とする動的メモリ管理方法。
【００１８】
この動的メモリ管理方法によれば、メモリ空間上の使用領域又は未使用領域を表すテーブルを用意し、そのテーブルにおいて、矩形領域（矩形ブロック）毎に、開始アドレスと、水平及び垂直方向のサイズを定義し、これをメモリ管理情報として使用するものである。テーブルを参照することによって、メモリ空間上に、どのようなサイズの矩形ブロックがどの位置にあるのかを直ちに検索することができ、これにより、必要なメモリ領域の迅速な確保に寄与できる。また、メモリ領域の確保や解放に伴い、メモリ管理情報は適宜、更新されるため、メモリ管理情報によって、メモリ空間の使用（未使用）状況をリアルタイムで管理することが可能となる。
【００１９】
（３）  （２）記載の動的メモリ管理方法であって、前記メモリ管理情報を参照して未使用領域を検索し、必要なメモリ領域を確保するに際し、前記メモリ空間上において前記第１走査方向に検索する第１検索ステップと、前記第１走査方向に必要サイズの未使用の部分があった場合に、前記第２走査方向に検索して必要サイズの未使用の部分があるかを検索する第２検索ステップと、前記第２検索ステップによって、必要サイズ以上の矩形状の未使用領域を検出した場合に、この最初に検出した矩形状の未使用領域を前記２次元データの格納先として確保する格納先設定ステップと、を有することを特徴とする動的メモリ管理方法。
【００２０】
この動的メモリ管理方法によれば、必要なサイズの矩形領域をメモリ空間上に確保する際、メモリ空間上を所定の場所から所定の方向に順番にサーチしていき、最初に発見できた、必要なサイズをもつ矩形状の未使用領域を、データの格納先のメモリ領域として確保する。これにより、高速なサーチが可能となる。
【００２１】
（４）  （２）記載の動的メモリ管理方法であって、前記メモリ管理情報を参照して未使用領域を検索し、必要なメモリ領域を確保するに際し、前記メモリ空間上において前記第１走査方向に検索する第１検索ステップと、前記第１走査方向に必要サイズの未使用の部分があった場合に、前記第２走査方向に検索して必要サイズの未使用の部分があるかを検索する第２検索ステップと、前記第１及び第２検索ステップを繰り返し、必要サイズ以上の矩形状の未使用領域を全て検出する全未使用領域検出ステップと、前記検出された未使用領域の中から、選択的にいずれか一つの矩形状の未使用領域を前記２次元データの格納先として確保する格納先選択設定ステップと、を有することを特徴とする動的メモリ管理方法。
【００２２】
この動的メモリ管理方法によれば、メモリ管理情報を参照して未使用領域を検索して必要なメモリ領域を確保するに際し、メモリ空間上を所定の場所から所定の方向に順番にサーチしていき、必要なサイズ以上の矩形状の未使用領域を抽出し、抽出された矩形状の未使用領域の各々の中から、必要なサイズに近く無駄な余白領域を少なくできる等の条件を満たすいずれか一つの矩形状の未使用領域を選択し、その選択された矩形状の未使用領域を２次元データの格納先として確保する。これにより、無駄に大きなサイズの領域を確保することがなくなり、また、その領域を確保したことによって生じるメモリの断片化（フラグメンテーション）の問題（メモリ空間内で、細切れの領域が散らばることによってメモリの利用効率が低下する問題）を、生じにくくすることができる。
【００２３】
（５）  （１）〜（４）のいずれか１項記載の動的メモリ管理方法であって、前記第１のステップと第２のステップの間で、前記２次元のメモリ領域の確保に伴う前記メモリ管理情報の更新を行う第３のステップと、前記第２のステップの後で、前記２次元のメモリ領域の解放に伴う前記メモリ管理情報の更新を行う第４のステップと、を有することを特徴とする動的メモリ管理方法。
【００２４】
この動的メモリ管理方法によれば、メモリ領域の確保の後、及び、メモリ領域の解放の後に、メモリ管理情報が更新される。したがって、メモリ管理情報により、メモリ空間の使用状況（未使用状況）をリアルタイムで把握することが可能となる。
【００２５】
（６）  （５）記載の動的メモリ管理方法であって、前記第３のステップは、前記２次元のメモリ領域が確保された後の、残余の未使用のメモリ領域に対して、新たに矩形領域を設定し直し、該設定された矩形領域の各々についての開始アドレスと水平及び垂直方向のサイズとの情報を前記テーブルに登録する処理であることを特徴とする動的メモリ管理方法。
【００２６】
この動的メモリ管理方法によれば、メモリ空間における使用領域又は未使用領域では、矩形（四角形）領域毎に未使用領域（又は使用領域）を定義している。したがって、一つのメモリ領域が新規に確保された結果として、残余の未使用領域の形がいびつな多角形になってしまうと、そのままでは管理しにくいため、この場合には、残余の未使用のメモリ領域に対して、新たに扁平率の極力低い矩形領域を設定し直し、それらの矩形領域の各々についての定義情報を追加し、これによって、テーブルの内容を更新するようにしたものである。
【００２７】
（７）  （５）記載の動的メモリ管理方法であって、前記第４のステップは、解放されたメモリの矩形領域を、該矩形領域の周辺の未使用領域と結合することによって、より大きなサイズの矩形エリアを形成し、この結合によって新たに生じる大サイズの矩形領域に対し、その開始アドレスと、水平及び垂直方向のサイズとの情報を前記テーブルに登録する処理であることを特徴とする動的メモリ管理方法。
【００２８】
この動的メモリ管理方法によれば、メモリ領域を解放する際、その解放する領域に隣接して未使用の領域が存在し、かつ、解放される領域とその未使用の隣接領域との結合によって、より大きなサイズの矩形領域を形成できるのであれば、そのような結合を実行し、メモリ管理情報であるテーブルには、その結合後の矩形領域についての定義情報を追加するようにしたものである。これによって、次に未使用領域をサーチする場合に、連続した未使用領域のサイズを簡単に把握できるようになり（つまり、小さな未使用領域毎に定義情報が管理されていると、それらが連続してどの程度のサイズの未使用領域を確保できるのかを、サーチ時にいちいち確認する必要が生じてサーチが面倒となる）、効率的な未使用領域のサーチが可能となる。
【００２９】
（８）  （１）記載の動的メモリ管理方法であって、前記メモリ空間を、ｍ画素×ｎ画素（ｍ，ｎは共に２以上の自然数）に対応する矩形領域を単位として分割し、それらの矩形領域の各々の使用状況を、各矩形領域を代表する代表ビットで表現し、該代表ビットを前記メモリ管理情報として使用することを特徴とする動的メモリ管理方法。
【００３０】
この動的メモリ管理方法によれば、前述のテーブルの代わりに、実メモリ空間を表すビットマップ情報を使用してメモリ管理を行うものである。例えば、ＪＰＥＧ画像で採用されている８×８画素（合計６４画素）ブロックを単位として、このブロック中の１画素でも使用中であるならば、そのブロックを代表するビットを、使用中を示す“１”に設定する（この場合“０”は未使用を示すことになる）。このようにすれば、ビットマップの“１”，“０”の配列をチェックするだけで、どのようなサイズの未使用領域がどこに存在するのか、未使用領域がどの程度、連続して存在するのか、といった情報を簡単に取得することが可能となる。したがって、効率的な未使用領域のサーチが可能となる。
【００３１】
（９）  （８）記載の動的メモリ管理方法であって、前記メモリ管理情報を参照して未使用領域を検索し、必要なメモリ領域を確保するに際し、前記メモリ空間上において前記第１走査方向に検索する第１検索ステップと、前記第１走査方向に必要サイズの未使用の部分があった場合に、前記第２走査方向に検索して必要サイズの未使用の部分があるかを検索する第２検索ステップと、前記第２検索ステップによって、必要サイズ以上の矩形状の未使用領域を検出した場合に、この検出した矩形状の未使用領域を前記２次元データの格納先として確保する格納先設定ステップと、を有することを特徴とする動的メモリ管理方法。
【００３２】
この動的メモリ管理方法によれば、複数画素を一単位とするビットマップを使用して未使用領域をサーチする際に、ビットマップ上の所定の場所から所定の方向に順番にサーチしていき、必要なサイズをもつ矩形状の未使用領域を、データの格納先のメモリ領域として確保する。これにより、高速なサーチが可能となる。
【００３３】
（１０）  （１）〜（９）のいずれか１項記載の動的メモリ管理方法を実施するメモリ管理装置であって、前記メモリ管理情報を具備し、前記第１及び第２のステップを実施するメモリ領域確保・解放部を有することを特徴とするメモリ管理装置。
【００３４】
このメモリ管理装置によれば、共通のメモリ空間において、多様なサイズの２次元のデータ（１次元のデータを含む）を自由に確保し、また、不要となったメモリ領域を解放する、という動的管理方法を実施できるメモリ管理装置が実現される。このメモリ管理装置によれば、無駄の少ないメモリ利用が可能となるため、小型化、軽量化、低コスト化が厳しく要求される電子機器におけるメモリ関連の問題の解決に貢献する。
【００３５】
（１１）  （１０）記載のメモリ管理装置と、前記メモリ空間を提供する少なくとも一つのメモリと、を有することを特徴とする電子機器。
【００３６】
この電子機器によれば、小型化、軽量化、低コスト化が厳しく要求される電子機器においても、非常に効率的なメモリ利用が可能となる。
【００３７】
（１２）  固体撮像素子と、被写体像を前記固体撮像素子に結像する光学系と、前記固体撮像素子から出力されてくる信号を処理し画像データを生成する信号処理部と、この生成された画像を表示する表示部と、を備えた撮像装置であって、前記画像データの生成の際に使用されるメモリと、前記メモリを管理する（１０）項記載のメモリ管理装置と、を備えたことを特徴とする撮像装置。
【００３８】
この撮像装置によれば、小型化、軽量化、低コスト化が厳しく要求されても、非常に効率的なメモリ利用が可能となる。また、共通のメモリ空間を有効利用して、多様なサイズのデータを効率的に処理することが可能となり、撮像装置の高性能化、多機能化が促進される。また、ＣＣＤ等のイメージセンサから出力される一行分のラインデータは、メモリ空間上において、他の行にまたがって記憶されることがなく、その画像データの縦横の関係がそのまま保たれたまま記憶されることになる。したがって、一行のラインデータの読み出しの途中で遅延が生じるのを防止でき、また、矩形状の画像データの縦と横の関係がそのまま維持されてメモリ空間に格納されるため、画像処理回路等は、その画像データをそのまま読み出して、すぐに処理、加工を行うことができ、画像の処理、加工に伴う余計な負担が生じることもなく、効率的な画像データの処理が実現される。
【発明の効果】
【００３９】
本発明によって、メモリ空間における使用領域・未使用領域をメモリ管理情報によって管理し、このメモリ情報を適宜、参照することによって、共通のメモリ空間において、多様なサイズの２次元のデータ（１次元のデータを含む）を自由に確保し、また、不要となったメモリ領域を解放することが可能な、メモリの動的管理方法を実現することができる。
【００４０】
また、本発明のメモリ管理装置によって、共通のメモリ空間において、多様なサイズの２次元のデータ（１次元のデータを含む）を自由に確保し、また、不要となったメモリ領域を解放する、という動的管理方法を実施可能となる。このメモリ管理装置は、無駄の少ないメモリ利用を可能とし、したがって、小型化、軽量化、低コスト化が厳しく要求される電子機器におけるメモリ関連の問題の解決に貢献する。
【００４１】
また、本発明は、小型化、軽量化、低コスト化が厳しく要求される電子機器、また、撮像装置においても、非常に効率的なメモリ利用を可能とするという効果を奏する。
【発明を実施するための最良の形態】
【００４２】
以下、本発明の動的メモリ管理方法の実施形態について、図面を参照して具体的に説明する。以下の実施形態では、電子機器の一例として電子スチルカメラを説明するがこれに限定されることはない。
（第１の実施形態）
【００４３】
図１は、本発明の撮像装置（電子スチルカメラ）の構成の一例を示すブロック図である。
図示されるように、この撮像装置は、レンズ１０、レンズ駆動部１１を備えた光学系と、撮像装置の動作を統括的に制御するＣＰＵ１２と、システムメモリ１３と、タイミングジェネレータ２６と、固体撮像素子であるＣＣＤ３１と、表示部としてのＬＣＤディスプレイ３２と、ＡＦ回路３６と、ＡＥ／ＡＷＢ回路３７と、アナログ信号処理回路（ＣＤＳ／ＡＧＣ／ＡＤＣ）３８と、メモリカード４９と、ＤＳＰ（ＤｉｇｉｔａｌＳｉｇｎａｌ Ｐｒｏｃｅｓｓｏｒ）１００（画像入力インタフェース４２，画像処理回路４３，圧縮・伸長処理回路４４，メディアコントローラ４６，ビデオエンコーダ４７，システムバス５５を備える信号処理部）と、メモリ１１０と、メモリ管理装置１２０（メモリ領域確保・解放部１２２と、管理情報１２４とを備える）と、を有している。
【００４４】
ＣＣＤイメージセンサ３１から取り込まれたアナログの撮像信号は、アナログ信号処理回路３８に入力される。
【００４５】
アナログ信号処理回路３８は、相関２重サンプリング回路（ＣＤＳ）と、オートゲインコントローラ（ＡＧＣ）と、ＡＤコンバータ（ＡＤＣ）とからなる。ＣＤＳは、アナログ信号のノイズを除去し、ＡＧＣはアナログ信号のゲインを自動調節する。ＡＤＣは、アナログ信号をデジタル変換して画像データを生成する。
【００４６】
この画像データは、各画素毎にＲ，Ｇ，Ｂの濃度値を持つＣＣＤ−ＲＡＷデータ（ＣＣＤラインセンサから出力される１行分の撮像データ）であり、このＣＣＤ−ＲＡＷデータがＤＳＰ１００に入力される。アナログ信号処理回路３８にも、タイミングジェネレータ２６からのタイミング信号が供給され、ＣＣＤイメージセンサ３１から電荷が取り込みまれるタイミングと同期が取られている。
【００４７】
ＤＳＰ１００は、ＡＦ回路３６，ＡＥ／ＡＷＢ回路３７，画像入力インターフェース４２，画像処理回路４３，圧縮・伸長処理回路４４，メディアコントローラ４６，ビデオエンコーダ４７からなるＩＣチップであり、アナログ信号処理回路３８から入力された画像データに対して、各種の信号処理を施した後、画像のＬＣＤディスプレイ３２への表示や画像データのメモリーカードへの書き込み処理を行う。
【００４８】
なお、ＡＦ回路３６は、ＣＣＤイメージセンサ３１によって撮像された画像データに基づいて、焦点位置を検出し、フォーカシングを行う。焦点検出方式としては、例えば、ピントが合った状態では画像のコントラストが高くなるという特徴を利用して合焦位置を検出するパッシブ方式が採用されている。
【００４９】
ＡＥ回路３７は、画像データに基づいて、被写体輝度を測定し、絞り値やシャッタ速度等を決定する。同じくＡＷＢ回路３７は、オートホワイトバランス回路であり、撮影時のホワイトバランスを自動調整する。
【００５０】
画像入力インタフェース４２は、アナログ信号処理回路３８からＣＣＤ−ＲＡＷデータを取り込み、これをメモリ１１０に書き込む。
【００５１】
また、画像処理回路４３は、例えば、歪み補正、ＹＣ分離、縮小ズーム、画像回転、ポストフィルタ処理、JPEG圧縮、垂直方向の拡大といった各種の画像処理を行い、各々の処理に際し、適宜、メモリ１１０を利用する。
【００５２】
また、圧縮・伸長処理回路４４は、画像入力インタフェース４２からの画像データを適宜、圧縮し、また、画像処理回路４３による各種の画像処理後の画像データを、必要に応じて圧縮し、その圧縮されたデータをメモリ１１０に書き込む。伸長処理の際も、圧縮の場合と同様に、メモリ１１０が利用される。
【００５３】
メモリ１１０は、共有のメモリ空間を提供するＤＲＡＭ等のＬＳＩである。図１では、一つのメモリだけが記載されているが、複数のＩＣを組み合わせて一つのメモリ空間を構成してもよい。
【００５４】
メモリ１１０によって提供されるメモリ空間は、多目的に使用される共有のメモリ空間であり、画像の一時保管に使用でき、また、各種の処理に伴う中間作業領域としても利用可能であり、あるいは、表示画像データを蓄積するフレームメモリとして使用することもできる。
【００５５】
メモリ管理装置１２０は、本発明のシンプルかつローコストの構成にて、無駄の少ない効率的な動的メモリ管理を実現する部分である。メモリ領域確保・解放部１２２は、メモリ１１０により提供される共有のメモリ空間内には、１次元、２次元の画像データ（画像データ以外でもよい）を自由に格納することができる。
【００５６】
また、管理情報１２４は、メモリ１１０の共有メモリ空間の使用状況を常時管理すると共に、メモリ使用要求元（画像入力インタフェース４２、画像処理回路４３、圧縮・伸長回路４４）からのメモリ使用要求（データサイズの通知を含む）を受け、そのデータサイズに基づいて、必要なサイズの格納先のメモリ領域を確保し、確保されたメモリ領域の先頭アドレスを要求元に返信する、という一連の動作を行う（この点は、図２を用いて説明する）。
【００５７】
図２は、図１のメモリ管理部の機能と、メモリ使用要求元の回路とメモリ管理部との間の情報授受の手順を説明するためのブロック図である。図２において、図１と共通する部分には同じ参照符号を付してある。
【００５８】
図２に示されるように、メモリ１１０は、１次元のデータ、２次元のデータを問わず、また、その目的を問わず、多様なサイズの多様な目的のデータを自由に格納することができるメモリ（例えば、Ｃ言語においてはmalloc関数によりメモリ領域を確保し、そのメモリ領域をfree関数により解放する２次元のヒープメモリ）である。図示されるように、このメモリ１１０が提供する共有のメモリ空間には、一次元のデータを格納している領域１１２ａ、２次元の画像データを格納している領域１１２ｂが確保されている。図中、領域１１２は、メモリ使用要求元からのメモリ使用要求に応じて、新たに確保される領域である。
【００５９】
先に説明したように、本発明のメモリ管理装置１２０には、メモリ領域確保・解放部１２２が設けられており、このメモリ領域確保・解放部１２２は、メモリ１１０の使用状況を監視して管理情報１２４を随時、更新する。
【００６０】
また、メモリ領域確保・解放部１２２は、メモリ使用要求元（図２の左側に示される、画像入力インタフェース４２、画像処理回路４３、圧縮・伸長処理回路４４）からメモリ１１０の使用要求（データのサイズ情報を含む）を受けると（ステップＰ１）、管理情報１２４を参照しつつ、メモリ１１０の共有メモリ空間において、必要サイズ以上の大きさの未使用領域を検索し、そのデータを格納するためのメモリ領域（ここでは、領域１１２ｃ）を確保する。
【００６１】
そして、メモリ領域確保・解放部１２２は、確保したそのデータの格納先アドレス（つまり、メモリ領域１１２ｃの先頭アドレスとサイズ等の情報）を、メモリ使用要求元の回路（ここでは、画像入力インタフェース４２とする）に返信する（ステップＰ２）。
【００６２】
次に、画像入力インタフェース４２は、メモリ１１０にアクセスして（ステップＰ３）、確保されたメモリ領域１１２ｃを自由に使用して所望の処理を行い、メモリ使用が終了すると、メモリ領域１１２ｃの解放指示をメモリ領域確保・解放部１２２に発出する（ステップＰ４）。
【００６３】
次に、図３〜図７を用いて、メモリ領域確保・解放部１２２によるメモリ領域の確保と解放の手順について説明する。以下の例では、管理情報１２４として、未使用領域テーブルを使用するものとする。
【００６４】
図３は、管理情報としての未使用領域テーブルの内容の一例を示す図である。
【００６５】
図示されるように、未使用領域テーブル１２５は、メモリ１１０内の未使用領域を、複数の矩形領域毎に管理するテーブルであり、各矩形領域に番号を付し、そして、各矩形領域を、スタートアドレス、Ｘサイズ（水平方向のサイズ）、Ｙサイズ（垂直方向のサイズ）によって定義している。
【００６６】
図４（ａ），（ｂ）は、メモリ領域確保・解放部による、必要なサイズのメモリ領域確保のための検索（サーチ）の概要を説明するための図である。
【００６７】
図４（ａ）に示すように、まず、メモリ１１０内において、縦方向（第１の方向）にサーチを進める（手順ＦＳ）。
【００６８】
そして、縦方向に必要なサイズの未使用領域が見つかると、図４（ｂ）に示すように、その未使用領域の開始アドレスＰｘを起点として、横方向（第２の方向）にサーチを行い（手順ＳＳ）、必要なサイズの領域が横方向にも確保できるかを確認する。なお、図中、Ｐｙは、横方向のサーチの結果として得られた未使用領域の終端のアドレスを示す。
【００６９】
なお、発見された未使用領域を、データ格納先として選択する方法としては二通りの方法がある。一つは、最初に発見された未使用領域を確保対象とする方法であり（高速サーチが可能）、他の一つは、複数の候補の中から、必要サイズに近くかつメモリ断片化を極力抑制できるという条件の下で、適切な一つの領域を選択する方法である。
【００７０】
図５（ａ），（ｂ）は、必要なサイズのメモリ領域を確保する場合の具体例を説明するための図である。
【００７１】
図５（ｂ）に示すように、格納するデータの水平方向のサイズはｘであり、垂直方向のサイズはｙである。
【００７２】
図５（ａ）において、ＤＴ１〜ＤＴ３ならびにＤＴ５は使用中の領域であり、ＢＬ０〜ＢＬ３は、未使用の領域である。点線で示されるＤＴ４は、今回のサーチの結果として新たに確保される領域である。新たに確保される領域ＤＴ４は、以下のようなサーチを経て決定される。
【００７３】
まず、座標Ｐ０から縦方向にサーチを開始する。Ｐ１〜Ｐ２において、必要な縦方向のサイズは確保できるから、次に、Ｐ１を起点として横方向にサーチを進める。ここで、Ｐ１〜Ｐ３までのサイズは必要なサイズに達しないから、未使用領域ＢＬ２には、格納先のメモリ領域を確保できないことが判明する。同様にサーチを進めると、Ｐ４〜Ｐ５の縦方向のサイズは必要サイズを満たすが、Ｐ４〜Ｐ６の横方向のサイズは必要サイズを満たさないことから、未使用領域ＢＬ０にも格納先のメモリ領域を確保できないことがわかる。結果的に、未使用領域ＢＬ３にて、必要なサイズの格納先領域（ＤＴ４）を確保することができることが判明する。
【００７４】
そこで、未使用領域ＢＬ３において、必要最小限のサイズの領域ＤＴ４を、使用中の領域ＤＴ３に密着させて隙間が生じないようにして、確保することになる。
【００７５】
次に、メモリ領域確保後のメモリ管理情報の更新（特に、未使用ブロックの再設定）について説明する。
【００７６】
図６（ａ）〜（ｃ）は、メモリ領域確保後のメモリ管理情報の更新（未使用ブロックの再設定）の手順について説明するため図である。
【００７７】
図６（ａ）は、新たなメモリ領域が確保される前の状態を示す。図中、ＤＴ６〜ＤＴ８は使用中の矩形ブロックであり、ＢＬ５〜ＢＬ６は、未使用の矩形ブロックである。。
【００７８】
図６（ｂ）では、新たにメモリ領域ＤＴ９が確保される。この結果、未使用のブロックＢＬ６は、歪んだ多角形になってしまう。
【００７９】
そこで、図６（ｃ）に示すように、より大きなサイズの矩形ブロックを設けるという視点に立って、矩形ブロック（ＢＬ７〜ＢＬ９）を再設定する。そして、再設定された（ＢＬ７〜ＢＬ９）の定義情報を、図３に示される未使用領域テーブル１２５に追加して、テーブル（すなわち、メモリ管理情報１２４）の更新を行う。
【００８０】
次に、メモリ領域の確保、確保後の矩形ブロックの再設定、メモリ領域の解放、メモリ領域解放後のメモリ管理情報の更新処理（隣接する未使用ブロック同士の結合処理を含む）の一連の処理について説明する。
【００８１】
図７（ａ）〜（ｅ）は、メモリ領域の確保、確保後の矩形ブロックの再設定、メモリ領域の解放ならびにメモリ領域解放後のメモリ管理情報の更新処理（隣接する未使用ブロック同士の結合処理を含む）の一連の処理について説明する。
【００８２】
図７（ａ）に示すように、初期状態では、メモリ１１０（が提供するメモリ空間）は完全に未使用状態であり、全面が未使用領域ＢＬ０となっている。
【００８３】
次に、図７（ｂ）に示すように、メモリ領域ＤＴ１が確保され、この結果、未使用領域の矩形ブロックＢＬ２，ＢＬ３が再設定され、これに伴い、メモリ管理情報１２４（未使用領域テーブル１２５）が更新される。
【００８４】
次に、図７（ｃ）に示すように、メモリ領域ＤＴ２が確保され、この結果、未使用領域の矩形ブロックＢＬ３，ＢＬ４が再設定され、これに伴い、メモリ管理情報１２４（未使用領域テーブル１２５）が更新される。
【００８５】
次に、図７（ｄ）に示すように、メモリ領域ＤＴ２が解放される。ここで、注目すべき点は、解放された領域ＤＴ２に隣接して、未使用の矩形ブロックＢＬ３とＢＬ４が存在し、これらを相互に結合すれば、扁平率が低く、より大きな未使用の矩形ブロックを生成することができる点である。より大きな未使用の矩形ブロックを生成し、そのブロックを単位としてメモリの未使用状況を管理できれば、空き領域のサイズを簡単に把握することができ、以後の未使用領域のサーチが効率化される。
【００８６】
そこで、図７（ｅ）に示すように、解放された領域ＤＴ２と、未使用の矩形ブロックＢＬ３、ＢＬ４と、を結合してより大きな未使用の矩形ブロックＢＬ５を生成し、これに伴い、メモリ管理情報１２４（未使用領域テーブル１２５）が更新される。
【００８７】
以上説明した、新たなメモリ領域の確保までの手順をまとめると、図８のようになる。図８は、新たなメモリ領域の確保までの手順の概要を示すフロー図である。
【００８８】
すなわち、メモリ領域確保・解放部１２２は、未使用領域テーブル１２４を作成してメモリ空間の管理を開始し（ステップ１０、以降はＳ１０と略記する）、メモリ使用要求元から、メモリ確保要求があると（Ｓ１１）、要求元からの、格納するデータのサイズ（ｘサイズ，ｙサイズ）の情報を受け取る（Ｓ１２）。
【００８９】
そして、メモリ領域確保・解放部１２２が、未使用領域テーブル１２４を検索し、メモリ１１０が提供する共有メモリ空間内に、ｘ，ｙの各サイズを満たす未使用領域が存在するかを検索（サーチ）する（Ｓ１３）。
【００９０】
サーチの結果、最初に発見された領域を格納先のメモリ領域として決定してもよく、また、複数の候補を抽出し（Ｓ１４）、その中から、必要サイズに近くかつメモリ断片化を抑制できるという条件の下で絞り込みを行ってもよく、これらの処理を経て、データ格納先のメモリ領域が確保される（Ｓ１５）。
【００９１】
そして、新たにメモリ領域が確保された後の未使用領域について、矩形ブロックを再設定し（Ｓ１６）、未使用領域テーブルを更新し（Ｓ１７）、確保したメモリ領域の先頭アドレスを要求元に通知する（Ｓ１８）。
【００９２】
また、メモリ領域の解放の手順をまとめると、図９のようになる。図９は、メモリ領域の解放手順の概要を示す図である。
【００９３】
まず、メモリ使用要求元から、解放指示と共に解放対象のメモリ領域を特定するための情報（先頭アドレス、ｘ，ｙサイズ）が入力される（Ｓ２０）。
【００９４】
メモリ領域確保・解放部１２２は、指定されたメモリ領域の解放を実施する（Ｓ２１）。
【００９５】
次に、解放された領域に隣接して、空き領域が存在する場合には、それらの空き領域同士を結合してさらに大きな空き領域の矩形ブロックを形成できないかを検討し（Ｓ２２）、そのような矩形ブロックの形成が可能ならば、空き領域同士を結合する（Ｓ２３）。
【００９６】
そして、メモリ領域確保・解放部１２２は、未使用領域テーブル１２５（すなわち、メモリ管理情報１２４）を更新する（Ｓ２４）。
【００９７】
このように、本実施形態のメモリ管理方法ならびにメモリ管理装置では、メモリ空間における使用領域・未使用領域をメモリ管理情報によって管理し、このメモリ情報を適宜、参照することによって、共通のメモリ空間において、多様なサイズの２次元のデータ（１次元のデータを含む）を自由に確保し、また、不要となったメモリ領域を解放することが可能な、メモリの動的管理方法を実現することが可能となる。
【００９８】
本発明で用意されるメモリ空間は、従来技術に見られるようなラインメモリの集合体ではなく、多目的に、制限なく使用可能な一つのメモリ空間であるため、イメージセンサからの１行分のラインデータだけでなく、他のあらゆる形式のデータ（２次元、１次元を問わない）をそのメモリ空間に格納することができ、必要なサイズのメモリ領域を必要なときに確保し、また、不要となったメモリ領域は解放して再利用を可能とすることができ、メモリの無駄を省き、効率的なメモリ利用が可能となる。
【００９９】
また、矩形状の画像データのブロックの矩形状を維持したまま、その画像データをそのまま格納できる矩形状のメモリ領域を確保することによって、一行分のラインデータは必ず一行のメモリ領域に確保でき、一行のラインデータの読み出しの途中で遅延が生じるのを防止できる。また、画像処理回路等は、その画像データをそのまま読み出して、すぐに処理、加工を行うことができ、画像の処理、加工に伴う余計な負担が生じることを防止することができる。
【０１００】
また、未使用領域テーブル（使用領域テーブルでもよい）を用意し、そのテーブルにおいて、矩形領域（矩形ブロック）毎に、開始アドレスと、横方向のサイズならびに縦方向のサイズを定義することによって、メモリ空間上に、どのようなサイズの矩形ブロックがどの位置にあるのかをすぐに検索することができるようになる。また、メモリ領域の確保や解放に伴い、メモリ管理情報は適宜、更新することによって、そのテーブルによって、メモリ空間の使用（未使用）状況をリアルタイムで管理することが可能となる。
【０１０１】
また、必要なサイズの矩形領域をメモリ空間上に確保する際、メモリ空間上を所定の場所から所定の方向に順番にサーチしていき、最初に発見できた、必要なサイズをもつ矩形状の未使用領域を、データの格納先のメモリ領域として確保するサーチ方法を採用することによって、高速なサーチが可能となる。
【０１０２】
また、メモリ空間上において、必要サイズ以上のサイズをもつ未使用領域の候補を複数、抽出し、その中から、そのサイズが必要サイズに近く、かつ、無駄な余白を抑制できるという条件の下で一つの矩形領域を選択し、確保するサーチ方法を採用することによって、無駄に大きなサイズの領域を確保することがなくなり、また、その領域を確保したことによって生じるメモリの断片化の問題を、生じにくくすることができる。
【０１０３】
また、メモリ領域の確保の後、及び、メモリ領域の解放の後に、メモリ管理情報を更新することにより、そのメモリ管理情報を参照して、メモリ空間の使用状況（未使用状況）をリアルタイムで把握することが可能となる。
【０１０４】
また、一つのメモリ領域が新規に確保されると、残余の未使用のメモリ領域について、新たに矩形領域を設定し直し、それらの矩形領域の各々についての定義情報を追加してテーブルの内容を更新することにより、メモリ管理情報としてのテーブル（矩形ブロックを単位としてメモリ領域を管理する形式のテーブル）を、常に最新の状態に保つことができる。
【０１０５】
また、メモリ領域を解放する際、その解放する領域に隣接して未使用の領域が存在し、かつ、解放される領域とその未使用の隣接領域との結合によって、より大きなサイズの矩形領域を形成できるのであれば、そのような結合を実行し、その結合をテーブル内容に反映させることによって、連続した未使用領域のサイズを簡単に把握できるようになり、効率的な未使用領域のサーチが可能となる。
（第２の実施形態）
【０１０６】
次に、本発明に係る動的メモリ管理方法の第２実施形態を説明する。
本実施形態では、メモリ管理情報として、テーブルではなくビットマップを使用する例について説明する。その他の点については、第１の実施形態と同じであるため、説明は省略する。
【０１０７】
図１０（ａ），（ｂ）は、メモリ管理情報としてのビットマップの生成方法を説明するための図である。
【０１０８】
すなわち、図１０（ａ）に示されるように、メモリ１１０を、ｍ画素×ｎ画素（ｍ，ｎは共に２以上の自然数で、図示されるのは８画素×８画素の場合である）の矩形領域を単位として分割する。
【０１０９】
そして、図１０（ｂ）に示すように、分割された矩形領域の各々の使用／未使用を、各矩形領域を代表する代表ビットで表現し、これによって実メモリ空間を投影するビットマップ１２６を形成し、そのビットマップ１２６をメモリ管理情報１２４として使用する。
【０１１０】
すなわち、図１０（ａ），（ｂ）では、８×８画素（合計６４画素）のブロックを単位として、このブロック中の１画素でも使用中であるならば、そのブロックを代表するビットを、使用中を示す“１”に設定し、未使用の場合は“０”を設定する。このようにすれば、ビットマップの“１”，“０”の配列をチェックするだけで、どのようなサイズの未使用領域がどこに存在するのか、未使用領域がどの程度、連続して存在するのか、といった情報を簡単に取得することが可能となる。したがって、効率的な未使用領域のサーチが可能となる。
【０１１１】
なお、８×８（合計６４画素）のブロックは、画像圧縮のためのＪＰＥＧ規格でも標準的に採用されているもので、実画像に即したブロックサイズとなり、画素対応がとりやすくなる。
【０１１２】
図１１（ａ），（ｂ），（ｃ）は各々、ビットマップを使用して未使用領域をサーチする場合の具体例を説明するための図である。
【０１１３】
図１１（ａ）に示すように、メモリ１１０内には、ＤＴ１０〜ＤＴ１３の使用中の領域が存在する。このような状況下で、図１１（ｂ）に示すようなサイズのデータの格納先を検索するものとする。
【０１１４】
すなわち、図１１（ｃ）に示すように、ビットマップ１２６を参照しつつ、まず、縦方向（第１の方向）にサーチを行って、列方向において所定サイズ以上の空き領域を確認すると、次に横方向（第２の方向）にサーチを行って、必要サイズ以上の空き領域があるかを確認し、そのようにして空きが確認できた場合、その最初に発見された空き領域ＤＴ１４を、図１１（ｂ）に示されるデータの格納先のメモリ領域として確保する。
【０１１５】
ビットマップを使用してサーチを行うことにより、高速なサーチが可能となる。すなわち、どのようなサイズの未使用領域がどこに存在するのか、未使用領域がどの程度連続して存在するのか、といった情報を簡単に取得することが可能となり、効率的な未使用領域のサーチが可能となる。
【０１１６】
このように、本発明によれば、シンプルかつローコストの構成で、多様なサイズの二次元のデータも取り扱うことが可能な動的なメモリ管理を行うことができ、したがって、本発明は、共通のメモリ空間に、複数の異なるサイズのデータを格納して各種の処理を行う必要のある電子機器全般に広く使用可能である。
【０１１７】
また、本発明は、電子スチルカメラ、ビデオカメラならびにカメラ付き携帯端末のような携帯機に広く利用することが可能である。近年は、標準モードやファインモード等をユーザが自由に設定できることから、撮像装置の内部で取り扱われる画像データのサイズが一律ではなく、このことは、メモリの有効利用を困難とする一因となっている。かといって、高級な動的メモリ管理手法は、低コスト化、小型軽量化が進展する撮像装置の分野ではむずかしい。
【０１１８】
しかしながら、本発明によれば、画像入力インタフェース部、画像処理部、画像圧縮・伸長部等のメモリ使用要求元と、メモリ管理装置との間の手続が極めて簡単化され、また、動的メモリの管理も簡単かつ迅速に行える。したがって、本発明によれば、撮像装置に対する小型、軽量、低コストといった厳しい要請を満足しつつ、メモリ空間における無駄な領域の発生や断片化の問題を効果的に抑制しつつ、メモリ空間の有効利用を促進することができる。
【０１１９】
以上説明したように、本発明によれば、メモリ空間における使用領域・未使用領域をメモリ管理情報によって管理し、このメモリ情報を適宜、参照することによって、共通のメモリ空間において、多様なサイズの２次元のデータ（１次元のデータを含む）を自由に確保し、また、不要となったメモリ領域を解放することが可能な、メモリの動的管理方法を実現することができる。
【０１２０】
また、第１実施形態におけるテーブルの代わりに、実メモリ空間を投影するビットマップ情報を使用して、メモリ管理を行うことにより、どのようなサイズの未使用領域がどこに存在するのか、未使用領域がどの程度連続して存在するのか、といった情報を簡単に取得することが可能となり、効率的な未使用領域のサーチが可能となる。
【０１２１】
また、ビットマップを使用して未使用領域をサーチする場合に、例えば、まず列方向において所定サイズ以上の空き領域を確認し、次に、行方向にサーチを行って、必要サイズ以上の空き領域があるかを確認し、そのようにして空きが確認できた場合に、その空き領域をデータ格納先のメモリ領域として確保する方式を採用することにより、高速なサーチが可能となる。
【０１２２】
本発明によって、１次元のデータだけではなく、２次元のデータを含めて自由に取り扱いでき、また、多様なサイズのデータを自由に取り扱いでき、かつ、無駄なメモリ領域の発生を抑制できる、新規なメモリ管理技術が実現される。
【図面の簡単な説明】
【０１２３】
【図１】本発明の撮像装置（電子スチルカメラ）の構成の一例を示すブロック図である。
【図２】図１のメモリ管理部の機能と、メモリ使用要求元の回路とメモリ管理部との間の情報授受の手順を説明するためのブロック図である。
【図３】管理情報としての未使用領域テーブルの内容の一例を示す図である。
【図４】（ａ），（ｂ）は各々、メモリ領域確保・解放部による、必要なサイズのメモリ領域確保のための検索（サーチ）の概要を説明するための図である。
【図５】（ａ），（ｂ）は各々、必要なサイズのメモリ領域を確保する場合の具体例を説明するための図である。
【図６】（ａ）〜（ｃ）は各々、メモリ領域確保後のメモリ管理情報の更新（未使用ブロックの再設定）の手順について説明するため図である。
【図７】（ａ）〜（ｅ）は各々、メモリ領域の確保、確保後の矩形ブロックの再設定、メモリ領域の解放ならびにメモリ領域解放後のメモリ管理情報の更新処理（隣接する未使用ブロック同士の結合処理を含む）の一連の処理について説明するための図である。
【図８】図８は、新たなメモリ領域の確保までの手順の概要を示すフロー図である。
【図９】メモリ領域の解放手順の概要を示す図である。
【図１０】（ａ），（ｂ）は各々、メモリ管理情報としてのビットマップの生成方法を説明するための図である。
【図１１】（ａ），（ｂ），（ｃ）は各々、ビットマップを使用して未使用領域をサーチする場合の具体例を説明するための図である。
【図１２】ＤＲＡＭのメモリセル部の構成を示すブロック図である。
【図１３】イメージセンサから出力される一行分のラインデータを、二行にまたがるメモリ領域に格納する場合の問題点を説明するための図である。
【符号の説明】
【０１２４】
１０  レンズ
１１  レンズ駆動部
１２  ＣＰＵ
１３  システムメモリ
２６  タイミングジェネレータ
３１  ＣＣＤ
３２  ＬＣＤディスプレイ
３６  ＡＦ回路
３７  ＡＥ／ＡＷＢ回路
３８  アナログ信号処理回路（ＣＤＳ／ＡＧＣ／ＡＤＣ）
４２  画像入力インタフェース
４３  画像処理回路
４４  圧縮・伸長処理回路
４６  メディアコントローラ
４７  ビデオエンコーダ
４９  メモリカード
５５  システムバス
１００  ＤＳＰ
１１０  メモリ（シンクロナスＤＲＡＭ等の２次元のメモリ空間をもつメモリ）
１２０  メモリ管理装置
１２２  メモリ領域確保・解放部
１２４  メモリ管理情報
１２５  未使用領域テーブル
１２６  ビットマップ
【図１】
2007034555.tif 000003
【図２】
2007034555.tif 000004
【図３】
2007034555.tif 000005
【図４】
2007034555.tif 000006
【図５】
2007034555.tif 000007
【図６】
2007034555.tif 000008
【図７】
2007034555.tif 000009
【図８】
2007034555.tif 000010
【図９】
2007034555.tif 000011
【図１０】
2007034555.tif 000012
【図１１】
2007034555.tif 000013
【図１２】
2007034555.tif 000014
【図１３】
2007034555.tif 000015