以下、本発明を実施するための形態について、図面を参照しながら説明する。本発明は様々な情報を処理する情報処理装置に適用可能であるが、本実施形態では、一例として本発明をデジタルカメラの画像処理装置に適用した場合について説明する。デジタルカメラにおける信号処理系のアーキテクチャを例示するブロック図を図1に示す。
この信号処理系は、画像入出力部1、データメモリ部2、CPUコア部3、DSPアレイ部4、CPU/DSP間同期通信機構部5、および各部を繋ぐバス61〜66などから構成される。
画像入出力部1は、いずれも図示を省略する画像入力系や画像出力系、CFカードやSDカード(登録商標)などの外部記録媒体との間で、画像データの入出力を制御する制御部である。画像入出力部1には、上記各部と画像データのやりとりを実行するI/O回路11、画像データのコーデックやデコードを実行する機能ブロック(IP)12などが設けられ、ストリームI/Oバス61を介して画像入力系、画像出力系、外部記録媒体と繋がっている。
なお、画像入力系は、デジタルカメラにより種々のフォーマットで撮影された画像(静止画または動画)の原データを入力する系であり、例えば、CMOSあるいはCCD等の撮像素子と、撮像素子に被写体の像を結像する撮像レンズとを備えて構成される。また、画像出力系は、画像処理装置により処理された画像データを液晶表示パネルや外部出力端子に出力する系である(図6を参照)。
画像入出力部1は、ストリームI/Oバス61およびバスブリッジを介してメインバス62に接続される。メインバス62には、データメモリ部2、CPUコア部3、DSPアレイ部4が接続されている。すなわち、メインバス62には、データメモリ部2が接続される他、バスブリッジを介してCPUコア部3のCPUデータバス63が接続され、同様にバスブリッジを介してDSPアレイ部4のDSPデータバス(ストリームバス)64が接続されている。なお、ストリームI/Oバス61とDSPデータバス64とは、バスブリッジを介して直接的にも接続されている。
データメモリ部2は、データメモリ21とメモリコントローラ22とを備えて構成される。データメモリ21は、画像入力系や外部記録媒体等から画像入出力部1を介して入力された画像データを一時記憶する記憶素子であり、例えば記憶量がギガバイトオーダのDRAM(Dynamic Random Access Memory)が用いられる。メモリコントローラ22は、データメモリ21への画像データの書き込みや、データメモリ21に一時記憶された画像データの読み出しを制御する制御回路である。
CPUコア部3は、予め設定記憶されたプログラムに基づいてデジタルカメラの作動を制御する制御部であり、図1では2つの処理回路を並列に設けた並列演算モジュールの構成例を示す。CPUコア部3は、命令RAM(Instruction RAM)31と、命令RAM31にCPU命令バス65を介して並列接続された処理回路と、各処理回路にCPUデータバス63を介して接続されたDMAC(Direct Memory Access Controller)35やSRAM(Static Random Access Memory)36等とを有して構成される。命令RAM31は、複数の処理命令からなるプログラムが予め設定記憶されたRAM(Random Access Memory)である。
並列に設けられた各処理回路は、プログラムの各ステップの処理命令を一時保持する命令キャッシュ32、処理命令を実行するCPU33、処理命令を実行する際に参照される演算データを一時保持するデータキャッシュ34を有して構成される。命令キャッシュ32は、CPU命令バス65を介して命令RAM31に接続されており、命令RAM31に記憶されたプログラムの処理命令が、処理ステップの進行とともに読み出されて命令キャッシュ32に一時保持される。データキャッシュ34はCPUデータバス63に接続されており、このバスに接続されたDMAC35やSRAM36等から、CPU33が処理を実行する際に参照する演算データが、処理ステップの進行とともに読み出されてデータキャッシュ34に一時保持される。CPU33は、命令キャッシュ32に一時保持された処理命令に基づき、データキャッシュ34に一時保持された演算データを参照して処理を実行する。
DSPアレイ部4は、予め設定記憶されたプログラムに基づいて所定の画像処理を行う画像処理装置である。図1には、複数のデジタル信号プロセッサ(DSP:Digital Signal Processor)43,43・・・を並列に設けた並列処理モジュールの構成例を示す。また、図1には、複数のデジタル信号プロセッサ43,43・・・について共通の共有メモリ44を設けた構成例を示す。
DSPアレイ部4は、複数の処理命令からなるプログラムが予め設定記憶された命令RAM41と、命令RAM41にDSP命令バス66を介して並列接続された画像処理回路と、画像処理回路にDSPデータバス64を介して接続されたDMAC45やSRAM46等とを有して構成される。
並列に設けられた画像処理回路は、各々、処理命令を一時保持する命令キャッシュ(I$)42と、処理命令を実行するデジタル信号プロセッサ(以下、適宜DSPと略記する)43とを有し、複数のDSP43,43・・・が処理を分担して並列に画像処理を実行する。命令キャッシュ42,42・・・は、DSP命令バス66を介して命令RAM41に並列接続されており、各命令キャッシュ42には各DSP43が分担処理すべき処理命令が読み出されて一時保持される。DSP43,43・・・は共有メモリ44に接続され、各DSPが共有メモリ44から画像データを読み出し、あるいは処理した画像データを共有メモリ44に書き込み可能になっている。
また、共有メモリ44は、DSPデータバス64に接続され、バスブリッジを介してメインバス62およびストリームI/Oバス61に接続されている。そのため、共有メモリ44は、これらのバスを介してデータメモリ21やDMAC45、SRAM46、画像入力系等との間で画像データのやりとりが可能になっている。
共有メモリ44は、命令RAM41から読み出した処理命令に基づいて、上記各部(例えばデータメモリ21)から所定の画像データを読み出し、メモリ内に一時記憶する。DSP43,43・・・は、命令RAM41から読み出して命令キャッシュ42,42・・・に一時保持された処理命令に基づいて、共有メモリ44から各自が分担する画像データの一部を読み出し、それぞれ画像処理を実行する。DSP43,43・・・により画像処理された画像データは共有メモリ44に一時記憶され、逐次データメモリ21に転送されて記憶される。
CPU/DSP間同期通信機構部5は、CPUコア部3とDSPアレイ部4との間で、相互に実行する処理のタイミングを調整する機構であり、CPU33とDSP43との間に設けられた同期制御割り込みコントローラ51と、CPUデータバス63とDSPデータバス64との間に設けられた共有RAM52とを有して構成される。例えば、CPU33は、プログラムの実行中に画像処理が必要なプロセスが生じたときに、共有RAM52に処理すべき画像データのアドレスや処理内容等のデータを書き込み、同期制御割り込みコントローラ51を介してDSP43に割り込み処理の実行指令を出力する。DSP43は、指定された画像データを読み出して画像処理を実行し、処理後の画像データのアドレス等を共有RAM52に書き込むとともに、同期制御割り込みコントローラ51を介してCPU33に割り込み処理が完了した旨の信号を出力する。これにより、CPUコア部3とDSPアレイ部4とで効率的に並列処理が行われる。
以上のように概要構成されるデジタルカメラの信号処理系にあって、外部記録媒体(不図示)に記録された画像データや、外部記録媒体から読み出されてデータメモリ21に一時記憶される画像データは、画像を構成する多数の単位データからなるデータ群であり、隣接する単位データが空間的に相互に所定の関連性をもったデータの集合体、すなわちストリームデータである。また、画像データに所定の画像処理を行うDSP43は、プロセッサ内部に算術論理ユニット(ALU:Arithmetic Logic Unit)、あるいは浮動小点演算ユニット(FPU:Floating Point number processing Unit)等の演算器を有して構成される。
そして、本デジタルカメラの信号処理系においては、画像データが一時記憶された外部記録媒体(不図示)やデータメモリ21と、DSP43,43・・・の演算器との間に、複数の記憶領域が連設されたカラムを有するマーチングメモリが設けられて構成される。以下、マーチングメモリを用いた画像処理装置の具体的な態様について詳細に説明する。
第1実施形態の画像処理装置は、DSP43にマーチングメモリを備える、すなわち、マーチングメモリをDSP43に内蔵して一体に構成される。本形態に含まれる第1の態様の画像処理装置100について、その概要のブロック図である図2を参照して説明する。なお、図2は、画像処理装置100におけるDSP(デジタル信号プロセッサ)43を主体として示すブロック図であり、データメモリ部2におけるメモリコントローラ22や、DSPアレイ部4における命令RAM41、命令キャッシュ42、共有メモリ44等の記載を省略している。
画像処理装置100は、画像データを一時記憶するデータメモリ21と、データメモリ21から読み出した画像データに所定の情報処理を行うDSP43とを備える。本態様のDSP43は、演算処理に必要なデータを一時保持するレジスタファイル110と、レジスタファイル110に保持されたデータを用いて演算処理を実行するALUあるいはFPU等の演算器120と、演算結果を一時的に保持するアキュムレータ130と、データメモリ21とレジスタファイル110との間に設けたロードバッファ151およびストアバッファ152からなるバッファメモリ150とを備えて構成される。そして、このロードバッファ151およびストアバッファ152としてマーチングメモリが用いられる。
ロードバッファ151およびストアバッファ152は、複数のセル(記憶領域)が行方向に連接されたカラムにより形成される単位マーチングメモリを一つのバッファとし、これを複数並列に設けて構成される。例えば、行方向に256のセルが連接されたカラムにより形成される単位マーチングメモリを一つのバッファとし、これを列方向に256個並列に設けて、256個のバッファからなるロードバッファ151、ストアバッファ152が形成される。マーチングメモリの各セルには画像データを構成する単位データが一時保持され、ロードバッファ151およびストアバッファ152に、各々256×256個の単位データを一時保持(一時記憶)可能に構成される。
ロードバッファ151は、命令RAM41からのDMA(Direct Memory Access)転送命令に応じてデータメモリ21にアクセスし、所定範囲の画像データを読み込んで一時保持する。例えば、水平方向(X方向とする)に4メガピクセル×垂直方向(Y方向とする)に3メガピクセルの画像データから、X方向に256ピクセル×Y方向に256ピクセル分の画像データを読み出し、256のバッファに一時保持する。このとき、X方向について最初に読み出したX1ラインの256ピクセル分の単位データを、B1バッファの第1セルから第256セルに順次送り動作させて一時保持し、次に読み出したX2ラインの256ピクセル分の単位データを、B2バッファの第1セルから第256セルに順次送り動作させて一時保持させる。以降同様に読み出し動作を繰り返し、B1バッファからB256バッファに順次一時保持させる。各レジスタには画像データのX方向ラインに沿って隣接する256ピクセル分の単位データが一時保持される。
レジスタファイル110は、命令RAM41からのロード命令に応じてロードバッファ151から単位データを読み込み、所定のレジスタ、例えばR1レジスタに格納する。同様にDMAC45あるいはSRAM46から実行する画像処理に応じたデータを読み込み、所定のレジスタ、例えばR2レジスタに格納する。
演算器120は、命令RAM41からの演算命令に応じ、R1レジスタに格納された単位データと、R2レジスタに格納されたデータとを用いて演算処理を実行し、演算結果をアキュムレータ130を介してレジスタファイル110に出力し、所定のレジスタ、例えばR3レジスタに格納する。
レジスタファイル110は、命令RAM41からのストア命令に応じて演算処理後の単位データを出力し、ストアバッファ152に演算結果の単位データを書き込む。
このとき、レジスタファイル110には、ロードバッファ151における各バッファ(単位マーチングメモリ)のカラムに並んだ単位データが順にロードされて演算器120により演算処理される。また、演算処理後の単位データは、演算処理された順にストアされ、ストアバッファ152における各バッファ(単位マーチングメモリ)のカラムに一時保持される。例えば、ロードバッファ151におけるB1バッファのカラムに並んだ単位データが、第1セルから順にレジスタファイル110に読み込まれて演算器120により演算処理され、演算処理後の単位データは、ストアバッファ152におけるB1バッファのカラムに、第1セルから第256セルに順次送り動作されて書き込まれる。以降、B2バッファ〜B256バッファについても同様である。
演算器120による上記演算処理の進行に伴い、ロードバッファ151に一時保持された画像データは順次減少し、ストアバッファ152には演算処理後(画像処理後)の画像データが順次増加する。ロードバッファ151およびストアバッファ152は、この演算処理の進行と並行して、すなわち演算処理実行のバックグラウンドで、データメモリ21との間で画像データのDMA転送を行う。
このような構成の画像処理装置100においては、X方向ライン1本分の画像データが各バッファの第1セルから第256セルに一時保持され、X1ラインからX256ラインの画像データが、B1バッファからB256バッファ(第1単位マーチングメモリから第256単位マーチングメモリ)に一時保持される。そして、演算器120により、B1バッファの第1セル〜第256セル、B2バッファの第1セル〜第256セル、B3バッファの第1セル〜第256セル・・・、B256バッファの第1セル〜第256セルのように、各バッファのセルに一時保持された単位データが順次ロードされて演算処理される。
画像データは、隣接するセルに一時記憶される単位データが空間的に相互に関連性を有する(例えば隣接する画素により検出された)データの集合体であり、ストリームデータである。そのため、ランダムデータのように、各単位データに対してアドレッシングを施して読み書きを行う必要がなく、1ライン分の単位データを各単位マーチングメモリのバッファにおいて順に送り動作させてセルに記憶させ、あるいは読み出せばよい。また、隣接するセル間のデータの送り移動、すなわち単位データの書き込みおよび読み出し動作は、DSP43のクロックパルスに同期させて高速に行うことができる。
さらに、ロードバッファ151およびストアバッファ152とデータメモリ21とは、物理的に離れているため画像データのやりとりに時間がかかり、画像処理を高速化・高効率化する一つの障害になり得る。しかし、画像処理装置100においては、ロードバッファ151およびストアバッファ152とデータメモリ21との間での画像データの転送が、演算器120において演算処理が実行されている期間に並行して、バックグラウンドで行われる。
従って、画像処理装置100によれば、マーチングメモリの特長的な動作形態を活かし、高速・高効率で画像処理を実行することができる。
なお、B1〜B256バッファにX1〜X256ラインの画像データが一時保持される構成を例示したが、B1〜B256バッファは各々任意ラインの画像データを一時保持させることができ、処理に応じて空いているバッファを使用することができる。例えば、B35バッファにX1ラインの画像データ、B42バッファにX2ラインの画像データを一時保持させる等のように使用することができる。
次に、第1実施形態に含まれる第2の態様の画像処理装置200について、図3を参照して説明する。図3は、画像処理装置200におけるDSP(デジタル信号プロセッサ)43を主体として示すブロック図であり、図2と同様にデータメモリ部2におけるメモリコントローラ22や、DSPアレイ部4における命令RAM41、命令キャッシュ42、共有メモリ44等の記載を省略している。
画像処理装置200は、画像データを一時記憶するデータメモリ21と、データメモリ21から読み出した画像データに所定の情報処理を行うDSP43とを備える。本態様のDSP43は、演算処理に必要なデータを一時保持するレジスタファイル210と、レジスタファイル210に保持されたデータを用いて演算処理を実行するALUあるいはFPU等の演算器220と、演算結果を一時的に保持するアキュムレータ230と、レジスタファイル210の各レジスタに一時記憶された画像データのアドレス情報を一時保持するアドレスレジスタファイル250とを備えて構成される。そして、本態様の画像処理装置200においては、レジスタファイル210としてマーチングメモリが用いられる。
レジスタファイル210は、複数のセル(記憶領域)が行方向に連接されたカラムにより形成される単位マーチングメモリを一つのレジスタとし、これを複数並列に設けて構成される。すなわち、並列に設けられた単位マーチングメモリ211,212,213,・・・,21Nが、レジスタファイル210におけるR1,R2,R3,・・・,RNレジスタを構成する。例えば、行方向に256のセルを有する単位マーチングメモリを列方向に32個並列に設けたレジスタファイル210では、各々256個の単位データを保持可能なレジスタが32個設けられる。
アドレスレジスタファイル250は、レジスタファイル210の各レジスタに一時保持された画像データのアドレスデータを一時保持するレジスタファイルであり、R1,R2,R3,・・・,RNレジスタに対応したA1,A2,A3,・・・,ANアドレスレジスタを有して構成される。例えば32のレジスタを有して構成される。
本態様の画像処理装置200において、1つのバッチ命令により、レジスタ1ライン分のロード、ストア、演算処理が実行される。すなわち、1つのバッチロード命令により256個の単位データからなる1ライン分の画像データがレジスタにロードされ、1つのバッチ演算命令により1ライン分の画像データについて演算処理が行われ、1つのバッチストア命令により1ライン分の画像データがデータメモリ21にストアされる。レジスタにマーチングメモリを用いこのようなバッチ命令を行うことにより、命令効率を大幅に高めることができる。具体的には、以下のようにバッチ命令、処理が実行される。
レジスタファイル210は、命令RAM41からのバッチロード命令に応じてデータメモリ21にアクセスし、所定範囲の画像データを読み出して、各レジスタに格納する。例えば、水平方向に4メガピクセル×垂直方向に3メガピクセルの画像データから、水平方向に256ピクセル×垂直方向に10ピクセル分の画像データを読み出し、10のレジスタに格納する。このとき、最初のバッチロード命令に基づいてロードしたX1ラインの256ピクセル分の単位データを、R1レジスタの第1セルから第256セルに順次送り動作させて格納し、次のバッチロード命令に基づいてロードしたX2ラインの256ピクセル分の単位データを、R2レジスタの第1セルから第256セルに順次送り動作させて格納させる。以降同様にバッチロード命令に基づくロード動作を繰り返し、R1レジスタからR10レジスタに順次格納する。R1〜R10の各レジスタには画像データのX方向ラインに沿って隣接する256ピクセル分の単位データが格納される。
このとき、アドレスレジスタファイル250には、バッチロード命令に基づいて読み出され、各レジスタに格納された画像データのアドレス情報が格納される。例えば、R1レジスタの第1セル〜第256セルに、X1ラインの画像データが格納された場合には、このX1ラインのアドレスがA1レジスタに格納される。また、次述する演算処理後のX1ラインの画像データがR21レジスタに格納された場合には、演算処理後のX1ラインのアドレスがA21レジスタに格納される。
また、レジスタファイル210には、命令RAM41からのバッチロード命令の実行に応じてDMAC45あるいはSRAM46から、実行する画像処理に応じたデータが読み出され、各レジスタに格納される。例えば、DMAC45から、バッチロード命令の実行に応じてX1ラインの画像処理に対応した256個のデータが読み出されてR11レジスタに格納され、バッチロード命令の実行に応じてX2ラインの画像処理に対応した256個のデータが読み出されてR12レジスタに格納される。以下同様にして、X10ラインの画像処理に対応した256個のデータが読み出されてR20レジスタに格納される。
演算器220は、命令RAM41からのバッチ演算命令に応じて、各レジスタに格納された画像データをバッチ処理する。例えば、命令RAM41からのバッチ演算命令が、R1レジスタに格納された画像データと、R11レジスタに格納されたデータとを加算して、R21レジスタに格納せよというバッチ演算命令であったとき、演算器220は次のように演算処理を実行する。
演算器220は、バッチ演算命令に基づいてR1レジスタの第1セルに格納された単位データと、R11レジスタの第1セルに格納されたデータとを加算して、R21レジスタの第1セルに格納する。次いで、R1レジスタの第2セルに格納された単位データと、R11レジスタの第2セルに格納されたデータとを加算して、R21レジスタの第2セルに格納する。以下同様に、R1レジスタの第nセルに格納された単位データと、R11レジスタの第nセルに格納されたデータとを加算して、R21レジスタの第nセルに格納する。この処理を1命令で第1セル〜第256セルまで実行する。
命令RAM41からの次のバッチ演算命令として、R2レジスタ(X2ライン)に格納された画像データに対する処理命令が出されると、演算器220は、R1レジスタに格納された画像データに対して行った処理と同様に演算処理を実行する。以降、バッチ演算を繰り返す場合は、例えばR3レジスタ〜R10レジスタについて、同様の演算処理を実行する。
ここで、R1レジスタ〜R10レジスタの第1セル〜第256セルには、それぞれX1ライン〜X10ラインを形成する演算処理前の単位データが順に並んで格納される。また、レジスタファイル210を構成する各レジスタはいずれも単位マーチングメモリであり、第1セル〜第256セルに格納されたデータはデータの並び順を維持したまま順送り移動される。そのため、演算処理の実行時に各単位マーチングメモリを単純に順送り動作させることによって、第1セル〜第256セルに格納された単位データを順に演算器220に送り出し、演算処理を実行させることができる。演算処理後の単位データをR21レジスタ〜R30レジスタの第1セル〜第256セルに書き込むときについても同様であり、各単位マーチングメモリを順送り動作させて単位データを送り込むことにより、第1セル〜第256セルに単位データが順に並んで格納される。
演算器220による上記演算処理の進行に伴い、R1レジスタ〜R10レジスタに格納された演算処理前の画像データ、およびR11レジスタ〜R20レジスタに格納されたデータは順次減少し、R21レジスタ〜R30レジスタに格納された演算処理後の画像データが順次増加する。DSP43は、演算器220による演算処理の進行と並行して、バッチストア命令を出すことにより、レジスタファイル210とデータメモリ21との間で画像データのDMA転送を行わせる。
このような構成の画像処理装置200においては、1つのバッチロード命令でX方向ライン1本分の256の単位データからなる画像データが各レジスタの第1セルから第256セルに格納され、10のバッチロード命令でX1ラインからX10の2560の単位データからなる画像データが、R1レジスタからR10レジスタに格納される。演算器220では、1つのバッチ演算命令で256の単位データからなる1ライン分の画像データが演算処理され、10のバッチ演算命令でR1レジスタ〜R10レジスタに格納された10ライン分の画像データが演算処理されて、R21〜R30に格納される。
画像データは、隣接するセルに格納される単位データが空間的に相互に関連性を有する(例えば隣接する画素により検出された)データの集合体であり、ストリームデータである。そのため、ランダムデータのように、各単位データに対して逐一アドレッシングを施して読み書きを行う必要がなく、アドレッシングやデータサーチ等に要する時間を排除することができる。
さらに、画像処理装置200においては、演算器220が1本のX方向ライン分に相当する単位データ群(上記実施例では256の単位データ群)のロード・演算・ストアの各処理をそれぞれ1命令でバッチ処理する。1ライン分の単位データ群はデータの並び順を維持したまま順送り移動されるため、ロード時や演算処理の実行時、ストア時に単位マーチングメモリを単純に順送り動作させることによって、単位データ群を順にロードし、演算処理し、演算結果のデータ群を順に格納することができる。単位マーチングメモリにおける隣接するセル間のデータの送り移動、すなわち単位データの書き込みおよび読み出し動作は、基準クロックパルスに同期させて高速に行うことができる。さらに、1つのバッチ命令により、レジスタ1ライン分のロード、ストア、演算処理が実行されるため命令効率を大幅に高めることができる。
また、レジスタファイル210とデータメモリ21とは、物理的に離れているため画像データのやりとりに時間がかかり、画像処理を高速化・高効率化する一つの障害になり得る。しかしながら、画像処理装置200においては、レジスタファイル210とデータメモリ21との間での画像データの転送が、演算器220において演算処理が実行されている期間に並行して、バックグラウンドで行われる。
従って、画像処理装置200によれば、マーチングメモリの特長的な動作形態を活かし、高速・高効率で画像処理を実行することができる。
なお、以上では、説明簡明化のため、レジスタファイル210におけるR1〜R10レジスタにX1〜X10ラインの画像データが格納され、R11〜R20レジスタにX1〜X10ラインの処理データが格納され、R21〜R30レジスタにX1〜X10ラインの処理後の画像データが格納される構成を例示した。しかしながら、R1〜R32レジスタは、その時の割り付けにより、各々任意ラインの画像データ、処理データ、処理後の画像データを格納することができ、処理に応じて空いているレジスタを割り付けて使用することができる。例えば、R8レジスタ及びR13レジスタにX1ライン及びX2ラインの画像データが格納され、R2レジスタ及びR25レジスタにX1ライン及びX2ラインの処理データが格納され、R5レジスタ及びR32レジスタにX1ライン及びX2ラインの処理後の画像データが格納されるようにすることができる。
アドレスレジスタ250についても同様であり、A1〜A32レジスタは、その時の割り付けにより、各々任意ラインの画像データのアドレス、処理後の画像データのアドレスを格納することができ、処理に応じて空いているレジスタを割り付けて使用することができる。例えば、R9レジスタに格納したX3ラインの画像データのアドレスがA2レジスタに格納され、R22レジスタに格納したX3ラインの処理後のアドレスがA11レジスタに格納されるようにすることができる。
次に、第2実施形態の画像処理装置について説明する。第2実施形態の画像処理装置は、データメモリ21と、複数のDSP(デジタル信号プロセッサ)43,43,・・・,43とを備え、データメモリ21とDSP43,43,・・・,43との間にマーチングメモリを利用した共有メモリ44を設けて構成される。
本実施形態の画像処理装置400について、図4を参照して説明する。図4は、画像処理装置400における共有メモリ44を主体として示すブロック図であり、データメモリ部2におけるメモリコントローラ22や、DSPアレイ部4における命令RAM41、命令キャッシュ42等の記載を省略している。
画像処理装置400は、画像データを一時記憶するデータメモリ21と、データメモリ21から読み出した画像データに所定の情報処理を行うDSP43と、共有メモリ44とを備える。共有メモリ44は、画像データ等を一時記憶するデータ記憶部401と、データ記憶部401に入出力される画像データ等の流れを制御するデータ制御部402とから構成される。
データ記憶部401は、画像データを一時記憶するMMアレイ410と、MMアレイ(マーチングメモリアレイ)410に一時記憶された画像データの情報を一時保持するMMラベル管理コントローラ420とを有して構成される。データ制御部402は、データメモリ21およびDSP43,43,・・・,43とMMアレイ410との間に設けられたリード/ライト調整回路430と、リード/ライト調整回路430の作動を制御するリード/ライトシーケンサ440とを有して構成される。
MMアレイ410は、複数のセル(記憶領域)が行方向に連接されたカラムにより形成される単位マーチングメモリを一つのメモリとし、これを複数並列に設けて構成される。すなわち、並列に設けられた単位マーチングメモリ411,412,413,・・・,41Nが、MMアレイ410におけるC1,C2,C3,・・・,CNメモリを構成する。MMアレイの容量は、デジタルカメラにより撮影される画像データのデータ容量に応じて設定され、例えば、行方向に256×nのセルを有する単位マーチングメモリを、列方向に256×m個並列に設けて構成される。本実施形態では、各単位マーチングメモリのカラムの一端をデータの入出力ポートとした構成を例示する。
リード/ライト調整回路430は、MMアレイ410とデータメモリ21との間での画像データの読み出しや書き込み、MMアレイ410とDSP43,43,・・・,43との間での画像データの転送を行う際の、画像データの流れを調整する回路である。例示するリード/ライト調整回路430は、DSP43,43,・・・,43に対応して設けられたロード/ストアユニット431,431,・・・,431と、単位マーチングメモリ411,412,・・・,41Nに対応する第1〜第Nレジスタが円環状に相互接続されたリングレジスタ433と、ロード/ストアユニット431とリングレジスタ433との接続をコントロールするポート接続コントローラ432とを有して構成される。
ロード/ストアユニット431は、一端がグローバルメモリ転送バス68を介してDSP43,43,・・・,43およびデータメモリ21に接続され、他端がポート接続コントローラ432に接続される。リングレジスタ433は、第1〜第Nレジスタの一端が各々対応するC1〜CNメモリの入出力ポートに接続され、他端がポート接続コントローラ432に接続される。
リード/ライトシーケンサ440は、画像処理装置400で実行する画像処理の内容に応じて、リード/ライト調整回路430のロード/ストアユニット431、ポート接続コントローラ432、およびリングレジスタ433の作動を制御する。画像処理装置400で実行する画像処理は既に公知の種々のものがあり、処理内容に応じてリード/ライトシーケンサ440が制御するリード/ライト調整回路430の制御形態(処理モード)も異なったものとなる。ここでは、(1)データメモリ21に記憶された画像データをそのままMMアレイ410に一時記憶するコピーモード、(2)データメモリ21に記憶された画像データの水平方向と垂直方向とを反転させるX−Y変換モード、(3)データメモリ21に記憶された画像データのデータ数を減少させる圧縮モードを、処理モードの代表例として説明する。
(1)コピーモード
コピーモードは、データメモリ21に記憶された画像データを、そのままMMアレイ410に一時記憶するような処理モードである。コピーモードの場合に、リード/ライトシーケンサ440は、リード/ライト調整回路430を以下のように制御する。いま、第1のロード/ストアユニット431に、X1ライン〜X5ラインの画像データを読み出し、MMアレイ410のC1メモリ〜C5メモリに一時記憶させる(書き込む)とする。
このとき、リード/ライトシーケンサ440は、まず第1のロード/ストアユニット431に、X1ラインのアドレスを指定してX方向ライン1本分の画像データを読み出させる。ポート接続コントローラ432には、第1のロード/ストアユニット431と、リングレジスタ433におけるC1メモリに対応したレジスタである第1レジスタとを接続させる。リングレジスタ433は、レジスタ間でのデータ移動を行わず、ポート接続コントローラ432から入力されたデータをそのメモリに出力する設定とする。これにより、データメモリ21から読み出されたX1ラインの画像データは、第1のロード/ストアユニット431〜ポート接続コントローラ432〜リングレジスタ433の第1レジスタを通り、MMアレイ410のC1メモリに一時記憶される。
次いで、リード/ライトシーケンサ440は、第1のロード/ストアユニット431に、X2ラインのアドレスを指定してX方向ライン1本分の画像データを読み出させる。ポート接続コントローラ432には、第1のロード/ストアユニット431と、リングレジスタ433の第2レジスタとを接続させる。リングレジスタ433はレジスタ間でのデータ移動を行わない設定を維持する。これにより、データメモリ21から読み出されたX2ラインの画像データが、第1のロード/ストアユニット431〜ポート接続コントローラ432〜リングレジスタ433の第2レジスタを通り、MMアレイ410のC2メモリに一時記憶される。X3ライン〜X5ラインについても同様であり、ポート接続コントローラ432の接続設定を順次切り替えることにより、X3ライン〜X5ラインの画像データが、MMアレイ410のC3メモリ〜C5メモリに一時記憶される。
MMラベル管理コントローラ420には、MMアレイ410のC1メモリ〜C5メモリに一時記憶された画像データのアドレス情報がラベルとして一時記憶される。例えば、C1メモリに一時記憶された画像データは、データメモリ21に記憶された原画像データにおけるX1ラインの画像データである旨のラベルが一時記憶される。C2メモリ〜C5メモリについても同様である。
なお、MMアレイ410のC1〜CNメモリには、任意ラインの画像データを一時記憶させることができる。例えば、C3メモリにX1ラインの画像データ、C6メモリにX2ラインの画像データを一時記憶させるようにすることができる。
以上は、データメモリ21に記憶された画像データをMMアレイ410に一時記憶する場合について説明したが、MMアレイ410に一時記憶された画像データを、DSP43に転送するとき、あるいはデータメモリ21に書き込むときについても同様である。すなわち、リード/ライトシーケンサ440は、読み出すべきMMアレイ410のメモリと、DSP43への転送を行うロード/ストアユニット431との接続を順次切り換えて、所定範囲の画像データをDSP43に転送する。
(2)X−Y変換モード
X−Y変換モードは、データメモリ21に記憶された画像データにおける水平方向(X方向)と垂直方向(Y方向)とを反転させてMMアレイ410に一時記憶するようなる処理モードである。X−Y変換モードの場合、リード/ライトシーケンサ440は、リード/ライト調整回路430を以下のように制御する。いま、第1のロード/ストアユニット431に、X1ライン〜X5ラインの画像データを読み出し、MMアレイ410にY1ライン〜Y5ラインとして一時記憶させる場合を説明する。
このとき、リード/ライトシーケンサ440は、まず第1のロード/ストアユニット431に、X1ラインのアドレスを指定してX方向イン1本分の画像データを読み出させる。ポート接続コントローラ432には、第1のロード/ストアユニット431と、リングレジスタ433における第1レジスタとを接続させる。リングレジスタ433については、X1ラインを構成する単位データが入力されるごとに、レジスタ間でデータを送り移動させるように設定する。
図5は、1本のX方向ラインが4つの単位データで構成される場合のリングレジスタ433の作用を示している。このとき、データメモリ21から読み出されたX1ラインの4つの単位データは、リングレジスタ433により順次データが移動され、X1ラインの第1単位データがC4メモリに対応する第4レジスタに、第2単位データがC3メモリに対応する第3レジスタに、第3単位データがC2メモリに対応する第2レジスタに、第4単位データがC1メモリに対応する第1レジスタに移動される。そして、X方向ライン1本分の画像データがリングレジスタ433の第4レジスタ〜第1レジスタに格納されたのち、各レジスタに格納された単位データがMMアレイ410に書き込まれる。これにより、X1ラインがY1ラインにX−Y変換される。
次いで、リード/ライトシーケンサ440は、第1のロード/ストアユニット431に、X2ラインのアドレスを指定してX方向ライン1本分の画像データを読み出させる。ポート接続コントローラ432、リングレジスタ433の設定は同一である。データメモリ21から読み出されたX2ラインの4つの単位データは、リングレジスタ433により順次データが移動され、X2ラインの第1単位データが第4レジスタに、第2単位データが第3レジスタに、第3単位データが第2レジスタに、第4単位データが第1レジスタに移動される。そして、X方向ライン1本分の画像データがリングレジスタ433の第4レジスタ〜第1レジスタに格納されたのち、各レジスタに格納された単位データがMMアレイ410に書き込まれる。これにより、X2ラインがY2ラインにX−Y変換される。このとき、先にC4メモリ〜C1メモリの第1セルに一時記憶されていたY1ラインの各単位データは、Y2ラインの各単位データの書き込み動作とともに第2セルに送り移動される。
X3ライン〜X5ラインついても同様にしてX−Y変換され、Y3ライン〜Y5ラインとしてMMアレイ410に一時記憶される。
MMラベル管理コントローラ420には、MMアレイ410のC1メモリ〜C4メモリに一時記憶された画像データの情報がラベルとして一時記憶される。例えば、C1メモリに一時記憶された画像データは、データメモリ21に記憶された原画像データにおけるY4ラインに相当する画像データである旨のラベルが一時記憶される。C2メモリ〜C4メモリについても同様である。
以上は、データメモリ21に記憶された画像データを、X−Y変換してMMアレイ410に一時記憶する場合について説明したが、MMアレイ410に一時記憶された画像データを、DSP43に転送するとき、あるいはデータメモリ21に書き込むときにX−Y変換する場合も同様である。例えば、上記のようにしてC1メモリ〜C4メモリにX−Y変換された画像データが一時記憶されている場合に、C1メモリ〜C4メモリを同時に送り動作させてリングレジスタ433の各レジスタに単位データを格納し、この4つの単位データをデータ移動させて一つのロード/ストアユニット431から出力させれば、Y方向ラインをX方向ラインにX−Y変換してDSP43等に転送することができる。
(3)圧縮モード
圧縮モードは、データメモリに記憶された画像データを間引いてデータ数を減少させた画像データをMMアレイ410に一時記憶するような処理モードである。圧縮モードの場合、リード/ライトシーケンサ440は、リード/ライト調整回路430を以下のように制御する。いま、第1のロード/ストアユニット431に、X1ライン〜X5ラインの画像データを読み出し、MMアレイ410にデータ数を1/4に圧縮した画像データを一時記憶させる場合を説明する。
このとき、リード/ライトシーケンサ440は、まず第1のロード/ストアユニット431に、X1ラインのアドレスを指定してX方向ライン1本分の画像データを読み出させる。ポート接続コントローラ432には、第1のロード/ストアユニット431と、リングレジスタ433における第1レジスタとを接続させる。リングレジスタ433に対しては、ポート接続コントローラ432からリングレジスタ433に入力されるX1ラインの単位データが4n−2〜4n(nは1以上の整数)の場合には、単位データが入力されるごとに、レジスタ間でデータを送り移動させるように設定する。
具体的には、X1ラインを構成する単位データが入力されたときに、1〜4番目(n=1)の単位データについて、前述したX−Y変換モードと同様の動作を行わせる。すなわち、2〜4番目の単位データが入力されたときに、リングレジスタ433によりレジスタ間で順次データが移動され、1番目の単位データが第4レジスタに、2番目の単位データが第3レジスタに、3番目の単位データが第2レジスタに、4番目の単位データが第1レジスタに移動される。そして、これら4つの単位データがリングレジスタ433の第4レジスタ〜第1レジスタに格納されたのち、各レジスタに格納された単位データがMMアレイ410に書き込まれる。これによりX1ラインにおける、1番目の単位データがC4メモリ、2番目の単位データがC3メモリ、3番目の単位データがC2メモリ、4番目の単位データがC1メモリに一時保持される。
5〜8番目(n=2)の単位データが入力されたときも同様に、6〜8番目の単位データが入力されたときに、リングレジスタ433によりレジスタ間で順次データが移動され、5番目の単位データが第4レジスタに、6番目の単位データが第3レジスタに、7番目の単位データが第2レジスタに、8番目の単位データが第1レジスタに移動される。そして、これら4つの単位データがリングレジスタ433の第4レジスタ〜第1レジスタに格納されたのち、各レジスタに格納された単位データがMMアレイ410に書き込まれる。これによりX1ラインにおける、1番目と5番目の単位データがC4メモリ、2番目と6番目の単位データがC3メモリ、3番目と7番目の単位データがC2メモリ、4番目と8番目の単位データがC1メモリに一時保持される。
このような動作をX1ライン1本分について実行すると、MMアレイ410のC4メモリにX1ラインにおける1,5,9,・・・,4m番目の単位データ、C3メモリにX1ラインにおける2,6,10,・・・,(4m+1)番目の単位データ、C2メモリにX1ラインにおける3,7,11,・・・,(4m+2)番目の単位データ、C1メモリにX1ラインにおける4,8,12,・・・,(4m+3)番目の単位データが一時記憶される。C1メモリ〜C4メモリに一時記憶された画像データは、いずれもX1ラインの画像データであるが、データを4つ飛びに間引いてデータ数を1/4に減少させた圧縮画像データである。
X2ライン以降のX方向ラインについても、X1ラインと同様に同期して同時に実行させることができる。リード/ライトシーケンサ440は、例えば第2のロード/ストアユニット431に、X2ラインのアドレスを指定してX方向ライン1本分の画像データを読み出させる。ポート接続コントローラ432には、第2のロード/ストアユニット431と、リングレジスタ433における第5レジスタとを接続させる。リングレジスタ433に対しては、ポート接続コントローラ432からリングレジスタ433に入力されるX2ラインの単位データが4n−2〜4n(nは1以上の整数)の場合には、X2ラインを構成する単位データが入力されるごとに、レジスタ間でデータを送り移動させるように設定する。
このような設定により、X2ラインにおける1〜4番目の単位データは、1番目の単位データが第8レジスタに、2番目の単位データが第7レジスタに、3番目の単位データが第6レジスタに、4番目の単位データが第5レジスタに移動される。そして、これら4つの単位データがリングレジスタ433の第8レジスタ〜第5レジスタに格納されたのち、各レジスタに格納された単位データがMMアレイ410に書き込まれる。これによりX2ラインにおける、1番目の単位データがC8メモリ、2番目の単位データがC7メモリ、3番目の単位データがC6メモリ、4番目の単位データがC5メモリに一時保持される。
5〜8番目(n=2)の単位データが入力されたときも同様に処理され、5番目の単位データが第8レジスタに、6番目の単位データが第7レジスタに、7番目の単位データが第6レジスタに、8番目の単位データが第5レジスタに移動される。そして、これら4つの単位データがリングレジスタ433の第8レジスタ〜第5レジスタに格納されたのち、各レジスタに格納された単位データがMMアレイ410に書き込まれる。これによりX2ラインにおける、1番目と5番目の単位データがC8メモリ、2番目と6番目の単位データがC7メモリ、3番目と7番目の単位データがC6メモリ、4番目と8番目の単位データがC5メモリに一時保持される。
このような動作をX2ライン1本分について実行すると、MMアレイ410のC8メモリにX2ラインにおける1,5,9,・・・,4m番目の単位データ、C7メモリにX2ラインにおける2,6,10,・・・,(4m+1)番目の単位データ、C6メモリにX2ラインにおける3,7,11,・・・,(4m+2)番目の単位データ、C5メモリにX2ラインにおける4,8,12,・・・,(4m+3)番目の単位データが一時記憶される。C5メモリ〜C8メモリに一時記憶された画像データは、いずれもX2ラインの画像データであるが、データを4つ飛びに間引いてデータ数を1/4に減少させた圧縮画像データである。
リード/ライトシーケンサ440は、X3ライン〜X5ラインについても上記X1ラインおよびX2ラインと同様の設定を行い、同様の処理を行わせる。MMアレイ410には、C12メモリ,C16メモリ,C20メモリにX3,X4,X5ラインにおける1,5,9,・・・,4m番目の単位データが一時記憶され、C11メモリ,C15メモリ,C19メモリにX3,X4,X5ラインにおける2,6,10,・・・,4m+1番目の単位データが一時記憶される。
以上の動作により、MMアレイ410には、C1〜C4メモリに各々データ数を1/4に減少させたX1ラインの圧縮画像データ、C5〜C8メモリに各々データ数を1/4に減少させたX2ラインの圧縮画像データ、C9〜C12メモリに各々データ数を1/4に減少させたX3ラインの圧縮画像データ、・・・、C17〜C20メモリに各々データ数を1/4に減少させたX5ラインの圧縮画像データが一時記憶される。
そして、ポート接続コントローラ432により、第1のロード/ストアユニット431とC1メモリ、第2のロード/ストアユニット431とC5メモリ、第3のロード/ストアユニット431とC9メモリ、・・・、第5のロード/ストアユニット431とC17メモリを接続する設定とし、C1,C5,C9,・・・,C17メモリの単位マーチングメモリを順送り動作させて、例えばデータメモリ21に書き込むことにより、原画像データに対してデータ数を1/4に減少させた圧縮画像データを作成することができる。
なお、本実施形態では、複数並列に並べられた単位マーチングメモリのカラムの一端を入出力ポートとしたが、一端を入力ポート、他端を出力ポートとしてもよく、あるいは両端をともに入出力ポートとしてもよい。これらの場合に、ロード/ストアユニット431およびポート接続コントローラ432は、MMアレイ410を挟んで両側に設けられるが、リングレジスタ433は、いずれか一方としてもよい。
さて、以上では、マーチングメモリを画像処理装置に適用した場合について、いくつかの適用例を示して説明してきた。しかし、マーチングメモリはこれらの適用例に限らず、画像処理装置における他の部位や、処理形態が異なる他の情報処理装置等にも広く適用することが可能である。画像処理装置における他の部位への適用について、図6を参照して簡潔に説明する。図6は画像処理装置における信号の処理系統を大まかにまとめたブロック図である。
図示する信号処理系は、画像入力系510、画像処理系520、画像出力系530、画像処理装置に接続されるDRAM540、外部メモリ(MM)550、ストレージ560、および外部処理系570などから構成される。
画像処理系520は、CPU521、GPU(Graphics Processing Unit)522、コーデック523、DRAMコントローラ524、外部メモリコントローラ525、ストレージ用IP526、外部処理系用IP527などからなり、これらがバスで接続されたSoC(System on Chip)構成になっている。なお、図1を参照して説明した信号処理系との対比においては、概ね、CPU521がCPUコア部3、GPU522がDSPアレイ部4、DRAM540がDRAM21に相当する。
このような信号処理系において、画像入力系510、画像処理系520におけるCPU521および外部処理系用IP527、画像出力系530、外部メモリ550、ストレージ560、外部処理系570などにマーチングメモリを好適に適用することができる。すなわち、画像入力系510においては、撮像素子により撮影された画像データの一時記憶に、画像出力系530においては、画像処理系520から出力された画像データの一時記憶に、マーチングメモリを好適に適用することができる。画像処理系520におけるCPU521においては、例えば、顔認識や動く被写体のトラッキング等を行う際の画像データの一時記憶にマーチングメモリを好適に適用することができる。外部メモリ550やストレージ560、外部処理系570等についても同様であり、画像データの一時記憶にマーチングメモリを好適に適用することができる。
本実施形態のアプリケーションは、複数の単位データからなるストリームデータ(例えば、実施形態における画像データ)を一時記憶するデータメモリと、演算器を有しデータメモリから読み出したストリームデータに所定の情報処理を行うプロセッサ(例えば、実施形態におけるデジタル信号プロセッサ)とを備えた情報処理装置である。そのうえで、本実施形態の情報処理装置は、プロセッサのレジスタファイルとしてマーチングメモリを備える。マーチングメモリは、複数の記憶領域が連設されたカラムを有し入力された複数の単位データをカラムの一端から順次隣接する記憶領域に送り移動させて各記憶領域に一時記憶する単位マーチングメモリが複数設けられて構成される。そして、マーチングメモリは、入力された複数の単位データを第1の単位マーチングメモリの各記憶領域に一時記憶し、プロセッサは、バッチ演算処理命令に基づいて、第1の単位マーチングメモリの各記憶領域に一時記憶された複数の単位データを、演算器により順次演算処理して処理後の各単位データを第2の単位マーチングメモリの各記憶領域に一時記憶させるように構成される。
ここで、本実施形態における「ストリームデータ」とは、複数の単位データからなるデータ群であり、隣接する単位データが、空間的および/または時間的に相互に所定の関連性をもっているようなデータの集合体をいう。具体的には、デジタルカメラやデジタルビデオカメラ等で撮影された静止画や動画の画像データ、これらのカメラやICレコーダ等により録音された音声データ、各種測定器により測定された時間的・空間的な測定データなどがストリームデータの例として示される。
例えば、デジタルカメラによって撮影された静止画の画像データは、撮像素子を構成する各画素の検出信号に基づいて生成された単位データの集合体(データ群)である。このデータ群を構成する単位データは、データ間に関連性がないランダムデータではなく、所定範囲で空間的な関連性を有するデータである。この空間的な関連性に基づいて、隣接する単位データ間では、明度や彩度等の特徴量についてある一定の関連性を有し、例えば特徴量が滑らかに変化している。また、静止画が連写された場合の画像データや動画の画像データでは、1フレーム内で空間的に隣接する単位データについて上記のような空間的な関係を有することに加えて、前後のフレーム間で時間的な関連性を有している。ICレコーダ等により録音された音声データも同様であり、周波数や強度が時間軸方向に滑らかに変化する単位データの集合体である。
また、本実施形態の情報処理装置は、データメモリと複数のプロセッサとの間に、共有メモリとしてマーチングメモリを備える。マーチングメモリは、複数の記憶領域が連設されたカラムを有し入力された複数の単位データをカラムの一端から順次隣接する記憶領域に送り移動させて各記憶領域に一時記憶する単位マーチングメモリが複数並列に設けられて構成される。
このとき、前記マーチングメモリにおける各単位マーチングメモリの入力ポートおよび/または出力ポートには、入力された複数の単位データの配列および/または出力する複数の単位データの配列を変更する配列変更手段(例えば、実施形態におけるリングレジスタ)を設けて情報処理装置を構成することができる。
また、前記配列変更手段は、各前記単位マーチングメモリの入力ポートおよび/または出力ポートに接続されたレジスタ群からなるリングレジスタと、このリングレジスタの作動を制御するシーケンサ(例えば、実施形態におけるリード/ライトシーケンサ)とを有し、シーケンサが、情報処理装置が実行する情報処理のモードに応じてリングレジスタの作動を制御し、複数の単位データの配列を変更するように構成しても良い。
ここで、情報処理のモードは、情報処理装置が適用されるシステムに応じて適宜に設定することができる。例えば、情報処理装置をデジタルカメラに適用する場合の代表例として、画像圧縮モードや垂直−水平変換モード、デコンボリューションモードなどが例示される。画像圧縮モードについても既に公知の複数のモードが考えられるが、例えば、データメモリに記憶された全画素の画像データ(データ容量が大きいストリームデータ)から、画素数を間引くことにより圧縮した画像データ(データ容量を縮小したストリームデータ)に変関するようなモードが例示される。
また、本実施形態の情報処理装置は、プロセッサのバッファメモリとしてマーチングメモリを備える。マーチングメモリは、複数の記憶領域が連設されたカラムを有し入力された複数の単位データをカラムの一端から順次隣接する記憶領域に送り移動させて各記憶領域に一時記憶する単位マーチングメモリが複数並列に設けられて構成される。
本実施形態における他の態様は、以上いずれかに記載の情報処理装置と、撮像素子を有し前記情報処理装置にストリームデータである画像データを入力する画像入力系と、情報処理装置により処理された画像データを出力する画像出力系とを備えたデジタルカメラである。
本実施形態によれば、マーチングメモリは複数の記憶領域(セル)が連設されたカラムを単位とし、入力ポートに入力された単位データが順次隣接する記憶領域に送り移動されて各セルに一時記憶される。このとき、単位データの入力および移動速度は、例えばCPUの基準クロックに対応させることもでき、高速の読み取り動作が可能である。また、本発明の態様の情報処理装置が対象とするデータ群は、複数の単位データからなるストリームデータであり、隣接するデータ間で所定の関連性を有するデータ群である。すなわち、読み込む単位データごとに逐一アドレッシングが必要なランダムデータと異なり、マーチングメモリの動作形態に合致したデータ群なのである。
以上説明したように、本発明が対象とするデータ群はストリームデータであり、隣接するデータ間で所定の関連性を有している。そのため、ランダムデータのように、各単位データに対して逐一アドレッシングを施して読み書きを行う必要がなく、アドレッシングやデータサーチ等に要する時間を排除することができる。また、マーチングメモリは複数のセルが連設されたカラムを単位とし、セルに入力された単位データが順次送り移動されて各セルに一時記憶される。このとき、単位データの入力および移動速度は、CPUの基準クロック等に対応させることもでき、高速で書き込みおよび読み出し動作させることができる。従って、本発明によれば、マーチングメモリの特長的な動作形態を活かした好適なアプリケーションを提供することができる。例えば、本発明の態様の情報処理装置および情報処理装置を備えたデジタルカメラによれば、マーチングメモリの特長的な動作形態を活かした好適なアプリケーションを提供することができる。