(57)【要約】  本発明を例示する態様のアプリケーションは、複数の単位データからなるストリームデータを一時記憶するデータメモリ２１と、演算器２２０を有しデータメモリから読み出したストリームデータに所定の情報処理を行うプロセッサ４３とを備えた情報処理装置である。この情報処理装置２００は、複数の記憶領域が連設されたカラムを有するマーチングメモリ２１０が、データメモリ２１と演算器２２０との間に設けられて構成される。
2015125960.tif 000002
【特許請求の範囲】
【請求項１】
複数の単位データからなるストリームデータを一時記憶するデータメモリと、
演算器を有し前記データメモリから読み出したストリームデータに所定の情報処理を行うプロセッサとを備えた情報処理装置であって、
前記プロセッサのレジスタファイルとしてマーチングメモリを備え、
前記マーチングメモリは、複数の記憶領域が連設されたカラムを有し入力された複数の単位データを前記カラムの一端から順次隣接する記憶領域に送り移動させて各記憶領域に一時記憶する単位マーチングメモリが複数並列に設けられて構成され、
前記マーチングメモリは、入力された複数の単位データを第１の前記単位マーチングメモリの各記憶領域に一時記憶し、
前記プロセッサは、バッチ演算処理命令に基づいて、前記第１の単位マーチングメモリの各記憶領域に一時記憶された前記複数の単位データを、前記演算器により順次演算処理して処理後の各単位データを第２の前記単位マーチングメモリの各記憶領域に一時記憶させる情報処理装置。
【請求項２】
前記データメモリと前記プロセッサとの間に、共有メモリとして第２のマーチングメモリを備え、
前記第２のマーチングメモリは、入力された前記複数の単位データを一時記憶する請求項１に記載の情報処理装置。
【請求項３】
前記プロセッサのバッファメモリとして第３のマーチングメモリを備える請求項１又は２に記載の情報処理装置。
【請求項４】
複数の単位データからなるストリームデータを一時記憶するデータメモリと、
演算器を有し前記データメモリから読み出したストリームデータに所定の情報処理を行う複数のプロセッサとを備えた情報処理装置であって、
前記データメモリと前記複数のプロセッサとの間に、共有メモリとしてマーチングメモリを備え、
前記マーチングメモリは、複数の記憶領域が連設されたカラムを有し、入力された複数の単位データを前記カラムの一端から順次隣接する記憶領域に送り移動させて各記憶領域に一時記憶する単位マーチングメモリが複数並列に設けられて構成される情報処理装置。
【請求項５】
前記マーチングメモリにおける各前記単位マーチングメモリの入力ポートおよび／または出力ポートには、入力された複数の単位データの配列および／または出力する複数の単位データの配列を変更する配列変更手段が設けられる請求項４に記載の情報処理装置。
【請求項６】
前記配列変更手段は、各前記単位マーチングメモリの入力ポートおよび／または出力ポートに接続されたレジスタ群からなるリングレジスタと、前記リングレジスタの作動を制御するシーケンサとを有し、
前記シーケンサは、情報処理装置が実行する情報処理のモードに応じて前記リングレジスタの作動を制御し、前記複数の単位データの配列を変更する請求項５に記載の情報処理装置。
【請求項７】
複数の単位データからなるストリームデータを一時記憶するデータメモリと、
演算器を有し前記データメモリから読み出したストリームデータに所定の情報処理を行う複数のプロセッサとを備えた情報処理装置であって、
前記プロセッサのバッファメモリとしてマーチングメモリを備え、
前記マーチングメモリは、複数の記憶領域が連設されたカラムを有し、入力された複数の単位データを前記カラムの一端から順次隣接する記憶領域に送り移動させて各記憶領域に一時記憶する単位マーチングメモリが複数並列に設けられて構成される情報処理装置。
【請求項８】
請求項１〜７のいずれか一項に記載の情報処理装置と、
撮像素子を有し前記情報処理装置に前記ストリームデータである画像データを入力する画像入力系と、
前記情報処理装置により処理された画像データを出力する画像出力系と
を備えたデジタルカメラ。
【請求項９】
複数の単位データからなるストリームデータに所定の情報処理を行うプロセッサであって、
マーチングメモリで構成されたレジスタファイルと、
前記レジスタファイルに保持されたデータを用いて演算処理を実行する演算器と、を備え、
前記マーチングメモリは、複数の記憶領域が連設されたカラムを有し、入力された複数の単位データを前記カラムの一端から順次隣接する記憶領域に送り移動させて各記憶領域に一時記憶する単位マーチングメモリが複数並列に設けられて構成されるプロセッサ。
【請求項１０】
マーチングメモリで構成されたバッファメモリを備える請求項９に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の単位データからなるストリームデータを一時記憶するデータメモリと、データメモリから読み出したストリームデータに所定の情報処理を行うプロセッサとを備えた情報処理装置に関する。また、この情報処理装置を備えたデジタルカメラに関する。
【背景技術】
【０００２】
上記のような情報処理装置の一つとして画像処理装置がある。画像処理装置は、デジタルカメラやビデオカメラ、これらカメラの記録媒体に記録された画像データを取り扱うコンピュータ、プリンタ等に幅広く用いられている。近年では、画像の高精細化や高画質化などの要請から画像１枚（１フレーム）当たりの画像データの容量が大幅に増加し、さらに高フレーム化の要請が加わって、単位時間当たりに記録される画像データの容量が著しく増加している。このように巨大化した画像データを、撮影者等にストレスを与えることなく画像処理するため、画像処理装置には処理速度の高速化が求められている。【０００３】
画像処理を高速化する手段として種々の構成の画像処理装置が提案されている。例えば、コンパクトフラッシュ（登録商標）カードやＳＤカード（登録商標）などの外部記録媒体に記録された複数の画像データから、所定の（例えば画像１枚分または１フレーム分の）画像データを読み出して一時記憶するＤＲＡＭ等のデータメモリと、データメモリに一時記憶された画像データに対して所定の画像処理を行う画像処理プロセッサとを備える画像処理装置において、データメモリと画像処理プロセッサとの間に、データメモリから画像データの一部を読み出して一時記憶するリードキャッシュメモリと、画像処理プロセッサにより処理された上記一部の画像データを一時記憶するライトキャッシュメモリとを設けた画像処理装置が知られている。【０００４】
また、画像データに対する演算処理そのものを高速化する技術として、単一命令複数データ流（ＳＩＭＤ：Single  Instruction  Multiple  Date  stream）の演算方式を採用した画像処理装置が提案されている（例えば特許文献１を参照）。この技術は、演算処理を実行する演算器を複数並列に設け、これらを同時に並行して動作させることにより、処理速度の向上を図るものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−３５８２８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一方、データを記憶する記憶手段として、新規なメモリ技術の研究が進展しており、その一つとしてマーチングメモリ（Marching  Memory）がある。マーチングメモリは、半導体チップのマイクロアーキテクチャに関する国際的なシンポジウムである、ＩＥＥＥ／ＡＣＭの第４３回国際アニュアルシンポジウム（ＭＩＣＲＯ−４３）と併せて開催された、第６回ユニークなチップおよびシステムに関するワークショップＵＣＡＳ−６で発表された。その発表内容は、予稿集である以下の文献に記載されている。
T.Watanabe  and  M.J.Flynn,"Marching  Memory：designing  computers  to  avoid  the  Memory  Bottleneck",Workshop  on  Unique  Chips  and  Systems,UCAS-6,December  2010  Atlanta,GA,pp44-47.【０００７】
上記文献に示された内容から、マーチングメモリの基本的な構成および動作の態様を概説すると以下のようになる。マーチングメモリは、複数の記憶領域（セルという）が連設されたカラムを一つの単位として構成される。カラムの両端は、設定に応じてデータ（または命令）の入力ポートおよび出力ポートとなり、入力ポートに設定されたカラムの端部に順次データが入力される。入力ポートに入力された複数のデータ等は、順次隣接するセルに送り移動されて各セルに一時記憶される。【０００８】
例えば、５個のセル(記憶領域)が左右方向に連接されたカラムを有するマーチングメモリにおいて、カラムの左端側を入力ポートとし、入力ポートに１，２，３，４，５の５つのデータが順に入力される場合について説明する。この場合において、最初のデータである１が入力されたときに左端のセルに１が一時記憶される。他のセルはリセット状態（またはこの５つのデータが入力される直前に入力された４つのデータが一時記憶された状態）である。２番目のデータ２が入力されると、それまで左端のセルに記憶されていたデータである１は左端から２番目のセルに送り移動され、左端のセルには新たに入力されたデータの２が一時記憶される。以下同様に入力されたデータが順送りされて各セルに記憶され、５つのデータが全て入力されると、カラムの右端側から左端側に向けて各セルに１，２，３，４，５の５つのデータが一時記憶された状態になる。【０００９】
そのため、カラムの右端側を出力ポートとして設定した場合には、マーチングメモリに対して一時記憶した５つのデータの出力指令が出されたとき、または新たなデータが入力されるごとに、一時記憶されたデータが１，２，３，４，５の順に出力ポートから出力される。一方、カラムの右端部を入力ポートおよび出力ポートとした場合には、マーチングメモリに対して一時記憶した５つのデータの出力指令が出されたときに、一時記憶されたデータが５，４，３，２，１の順に出力ポートから出力される。【００１０】
本発明は、このような新規なメモリ技術であるマーチングメモリについて、その特長的な動作形態を活かした好適なアプリケーションを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明を例示する態様のアプリケーションは、複数の単位データからなるストリームデータ（例えば、実施形態における画像データ）を一時記憶するデータメモリと、演算器を有しデータメモリから読み出したストリームデータに所定の情報処理を行うプロセッサ（例えば、実施形態におけるデジタル信号プロセッサ）とを備えた情報処理装置である。そのうえで、第１の態様の情報処理装置は、プロセッサのレジスタファイルとしてマーチングメモリを備える。マーチングメモリは、複数の記憶領域が連設されたカラムを有し入力された複数の単位データをカラムの一端から順次隣接する記憶領域に送り移動させて各記憶領域に一時記憶する単位マーチングメモリが複数設けられて構成される。そして、マーチングメモリは、入力された複数の単位データを第１の単位マーチングメモリの各記憶領域に一時記憶し、プロセッサは、バッチ演算処理命令に基づいて、第１の単位マーチングメモリの各記憶領域に一時記憶された複数の単位データを、演算器により順次演算処理して処理後の各単位データを第２の単位マーチングメモリの各記憶領域に一時記憶させるように構成される。【００１２】
ここで、本明細書における「ストリームデータ」とは、複数の単位データからなるデータ群であり、隣接する単位データが、空間的および／または時間的に相互に所定の関連性をもっているようなデータの集合体をいう。具体的には、デジタルカメラやデジタルビデオカメラ等で撮影された静止画や動画の画像データ、これらのカメラやＩＣレコーダ等により録音された音声データ、各種測定器により測定された時間的・空間的な測定データなどがストリームデータの例として示される。【００１３】
例えば、デジタルカメラによって撮影された静止画の画像データは、撮像素子を構成する各画素の検出信号に基づいて生成された単位データの集合体(データ群)である。このデータ群を構成する単位データは、データ間に関連性がないランダムデータではなく、所定範囲で空間的な関連性を有するデータである。この空間的な関連性に基づいて、隣接する単位データ間では、明度や彩度等の特徴量についてある一定の関連性を有し、例えば特徴量が滑らかに変化している。また、静止画が連写された場合の画像データや動画の画像データでは、１フレーム内で空間的に隣接する単位データについて上記のような空間的な関係を有することに加えて、前後のフレーム間で時間的な関連性を有している。ＩＣレコーダ等により録音された音声データも同様であり、周波数や強度が時間軸方向に滑らかに変化する単位データの集合体である。【００１４】
第２の態様の情報処理装置は、データメモリと複数のプロセッサとの間に、共有メモリとしてマーチングメモリを備える。マーチングメモリは、複数の記憶領域が連設されたカラムを有し入力された複数の単位データをカラムの一端から順次隣接する記憶領域に送り移動させて各記憶領域に一時記憶する単位マーチングメモリが複数並列に設けられて構成される。【００１５】
このとき、前記マーチングメモリにおける各単位マーチングメモリの入力ポートおよび／または出力ポートには、入力された複数の単位データの配列および／または出力する複数の単位データの配列を変更する配列変更手段（例えば、実施形態におけるリングレジスタ）を設けて情報処理装置を構成することができる。【００１６】
また、前記配列変更手段は、各前記単位マーチングメモリの入力ポートおよび／または出力ポートに接続されたレジスタ群からなるリングレジスタと、このリングレジスタの作動を制御するシーケンサ（例えば、実施形態におけるリード／ライトシーケンサ）とを有し、シーケンサが、情報処理装置が実行する情報処理のモードに応じてリングレジスタの作動を制御し、複数の単位データの配列を変更するように構成しても良い。【００１７】
ここで、情報処理のモードは、情報処理装置が適用されるシステムに応じて適宜に設定することができる。例えば、情報処理装置をデジタルカメラに適用する場合の代表例として、画像圧縮モードや垂直−水平変換モード、デコンボリューションモードなどが例示される。画像圧縮モードについても既に公知の複数のモードが考えられるが、例えば、データメモリに記憶された全画素の画像データ(データ容量が大きいストリームデータ)から、画素数を間引くことにより圧縮した画像データ(データ容量を縮小したストリームデータ)に変関するようなモードが例示される。【００１８】
第３の態様の情報処理装置は、プロセッサのバッファメモリとしてマーチングメモリを備える。マーチングメモリは、複数の記憶領域が連設されたカラムを有し入力された複数の単位データをカラムの一端から順次隣接する記憶領域に送り移動させて各記憶領域に一時記憶する単位マーチングメモリが複数並列に設けられて構成される。【００１９】
本発明を例示する他の態様は、以上いずれかに記載の情報処理装置と、撮像素子を有し前記情報処理装置にストリームデータである画像データを入力する画像入力系と、情報処理装置により処理された画像データを出力する画像出力系とを備えたデジタルカメラである。
【発明の効果】
【００２０】
前述したように、マーチングメモリは複数の記憶領域（セル）が連設されたカラムを単位とし、入力ポートに入力された単位データが順次隣接する記憶領域に送り移動されて各セルに一時記憶される。このとき、単位データの入力および移動速度は、例えばＣＰＵの基準クロックに対応させることもでき、高速の読み取り動作が可能である。また、本発明の態様の情報処理装置が対象とするデータ群は、複数の単位データからなるストリームデータであり、隣接するデータ間で所定の関連性を有するデータ群である。すなわち、読み込む単位データごとに逐一アドレッシングが必要なランダムデータと異なり、マーチングメモリの動作形態に合致したデータ群なのである。【００２１】
従って、本発明の態様の情報処理装置および情報処理装置を備えたデジタルカメラによれば、マーチングメモリの特長的な動作形態を活かした好適なアプリケーションを提供することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の適用例として示す、デジタルカメラにおける信号処理系のアーキテクチャを例示するブロック図である。
【図２】第１実施形態における第１の態様の画像処理装置の概要のブロック図である。
【図３】第１実施形態における第２の態様の画像処理装置の概要のブロック図である。
【図４】第２実施形態の画像処理装置の概要のブロック図である。
【図５】第２実施形態の画像処理装置におけるリングレジスタの作用を説明するための説明図である。
【図６】本発明の他の適用例を説明するための、画像処理装置における信号の処理系統を大まかにまとめたブロック図である。
【発明を実施するための形態】
【００２３】
以下、本発明を実施するための形態について、図面を参照しながら説明する。本発明は様々な情報を処理する情報処理装置に適用可能であるが、本実施形態では、一例として本発明をデジタルカメラの画像処理装置に適用した場合について説明する。デジタルカメラにおける信号処理系のアーキテクチャを例示するブロック図を図１に示す。
【００２４】
この信号処理系は、画像入出力部１、データメモリ部２、ＣＰＵコア部３、ＤＳＰアレイ部４、ＣＰＵ／ＤＳＰ間同期通信機構部５、および各部を繋ぐバス６１〜６６などから構成される。
【００２５】
画像入出力部１は、いずれも図示を省略する画像入力系や画像出力系、ＣＦカードやＳＤカード（登録商標）などの外部記録媒体との間で、画像データの入出力を制御する制御部である。画像入出力部１には、上記各部と画像データのやりとりを実行するＩ／Ｏ回路１１、画像データのコーデックやデコードを実行する機能ブロック（ＩＰ）１２などが設けられ、ストリームＩ／Ｏバス６１を介して画像入力系、画像出力系、外部記録媒体と繋がっている。
【００２６】
なお、画像入力系は、デジタルカメラにより種々のフォーマットで撮影された画像（静止画または動画）の原データを入力する系であり、例えば、ＣＭＯＳあるいはＣＣＤ等の撮像素子と、撮像素子に被写体の像を結像する撮像レンズとを備えて構成される。また、画像出力系は、画像処理装置により処理された画像データを液晶表示パネルや外部出力端子に出力する系である（図６を参照）。
【００２７】
画像入出力部１は、ストリームＩ／Ｏバス６１およびバスブリッジを介してメインバス６２に接続される。メインバス６２には、データメモリ部２、ＣＰＵコア部３、ＤＳＰアレイ部４が接続されている。すなわち、メインバス６２には、データメモリ部２が接続される他、バスブリッジを介してＣＰＵコア部３のＣＰＵデータバス６３が接続され、同様にバスブリッジを介してＤＳＰアレイ部４のＤＳＰデータバス（ストリームバス）６４が接続されている。なお、ストリームＩ／Ｏバス６１とＤＳＰデータバス６４とは、バスブリッジを介して直接的にも接続されている。
【００２８】
データメモリ部２は、データメモリ２１とメモリコントローラ２２とを備えて構成される。データメモリ２１は、画像入力系や外部記録媒体等から画像入出力部１を介して入力された画像データを一時記憶する記憶素子であり、例えば記憶量がギガバイトオーダのＤＲＡＭ（Dynamic  Random  Access  Memory）が用いられる。メモリコントローラ２２は、データメモリ２１への画像データの書き込みや、データメモリ２１に一時記憶された画像データの読み出しを制御する制御回路である。
【００２９】
ＣＰＵコア部３は、予め設定記憶されたプログラムに基づいてデジタルカメラの作動を制御する制御部であり、図１では２つの処理回路を並列に設けた並列演算モジュールの構成例を示す。ＣＰＵコア部３は、命令ＲＡＭ（Instruction  RAM）３１と、命令ＲＡＭ３１にＣＰＵ命令バス６５を介して並列接続された処理回路と、各処理回路にＣＰＵデータバス６３を介して接続されたＤＭＡＣ（Direct Memory Access Controller）３５やＳＲＡＭ（Static  Random  Access  Memory）３６等とを有して構成される。命令ＲＡＭ３１は、複数の処理命令からなるプログラムが予め設定記憶されたＲＡＭ（Random  Access  Memory）である。
【００３０】
並列に設けられた各処理回路は、プログラムの各ステップの処理命令を一時保持する命令キャッシュ３２、処理命令を実行するＣＰＵ３３、処理命令を実行する際に参照される演算データを一時保持するデータキャッシュ３４を有して構成される。命令キャッシュ３２は、ＣＰＵ命令バス６５を介して命令ＲＡＭ３１に接続されており、命令ＲＡＭ３１に記憶されたプログラムの処理命令が、処理ステップの進行とともに読み出されて命令キャッシュ３２に一時保持される。データキャッシュ３４はＣＰＵデータバス６３に接続されており、このバスに接続されたＤＭＡＣ３５やＳＲＡＭ３６等から、ＣＰＵ３３が処理を実行する際に参照する演算データが、処理ステップの進行とともに読み出されてデータキャッシュ３４に一時保持される。ＣＰＵ３３は、命令キャッシュ３２に一時保持された処理命令に基づき、データキャッシュ３４に一時保持された演算データを参照して処理を実行する。
【００３１】
ＤＳＰアレイ部４は、予め設定記憶されたプログラムに基づいて所定の画像処理を行う画像処理装置である。図１には、複数のデジタル信号プロセッサ（ＤＳＰ：Digital  Signal  Processor）４３，４３・・・を並列に設けた並列処理モジュールの構成例を示す。また、図１には、複数のデジタル信号プロセッサ４３，４３・・・について共通の共有メモリ４４を設けた構成例を示す。
【００３２】
ＤＳＰアレイ部４は、複数の処理命令からなるプログラムが予め設定記憶された命令ＲＡＭ４１と、命令ＲＡＭ４１にＤＳＰ命令バス６６を介して並列接続された画像処理回路と、画像処理回路にＤＳＰデータバス６４を介して接続されたＤＭＡＣ４５やＳＲＡＭ４６等とを有して構成される。
【００３３】
並列に設けられた画像処理回路は、各々、処理命令を一時保持する命令キャッシュ（I＄）４２と、処理命令を実行するデジタル信号プロセッサ（以下、適宜ＤＳＰと略記する）４３とを有し、複数のＤＳＰ４３，４３・・・が処理を分担して並列に画像処理を実行する。命令キャッシュ４２，４２・・・は、ＤＳＰ命令バス６６を介して命令ＲＡＭ４１に並列接続されており、各命令キャッシュ４２には各ＤＳＰ４３が分担処理すべき処理命令が読み出されて一時保持される。ＤＳＰ４３，４３・・・は共有メモリ４４に接続され、各ＤＳＰが共有メモリ４４から画像データを読み出し、あるいは処理した画像データを共有メモリ４４に書き込み可能になっている。
【００３４】
また、共有メモリ４４は、ＤＳＰデータバス６４に接続され、バスブリッジを介してメインバス６２およびストリームＩ／Ｏバス６１に接続されている。そのため、共有メモリ４４は、これらのバスを介してデータメモリ２１やＤＭＡＣ４５、ＳＲＡＭ４６、画像入力系等との間で画像データのやりとりが可能になっている。
【００３５】
共有メモリ４４は、命令ＲＡＭ４１から読み出した処理命令に基づいて、上記各部（例えばデータメモリ２１）から所定の画像データを読み出し、メモリ内に一時記憶する。ＤＳＰ４３，４３・・・は、命令ＲＡＭ４１から読み出して命令キャッシュ４２，４２・・・に一時保持された処理命令に基づいて、共有メモリ４４から各自が分担する画像データの一部を読み出し、それぞれ画像処理を実行する。ＤＳＰ４３，４３・・・により画像処理された画像データは共有メモリ４４に一時記憶され、逐次データメモリ２１に転送されて記憶される。
【００３６】
ＣＰＵ／ＤＳＰ間同期通信機構部５は、ＣＰＵコア部３とＤＳＰアレイ部４との間で、相互に実行する処理のタイミングを調整する機構であり、ＣＰＵ３３とＤＳＰ４３との間に設けられた同期制御割り込みコントローラ５１と、ＣＰＵデータバス６３とＤＳＰデータバス６４との間に設けられた共有ＲＡＭ５２とを有して構成される。例えば、ＣＰＵ３３は、プログラムの実行中に画像処理が必要なプロセスが生じたときに、共有ＲＡＭ５２に処理すべき画像データのアドレスや処理内容等のデータを書き込み、同期制御割り込みコントローラ５１を介してＤＳＰ４３に割り込み処理の実行指令を出力する。ＤＳＰ４３は、指定された画像データを読み出して画像処理を実行し、処理後の画像データのアドレス等を共有ＲＡＭ５２に書き込むとともに、同期制御割り込みコントローラ５１を介してＣＰＵ３３に割り込み処理が完了した旨の信号を出力する。これにより、ＣＰＵコア部３とＤＳＰアレイ部４とで効率的に並列処理が行われる。
【００３７】
以上のように概要構成されるデジタルカメラの信号処理系にあって、外部記録媒体（不図示）に記録された画像データや、外部記録媒体から読み出されてデータメモリ２１に一時記憶される画像データは、画像を構成する多数の単位データからなるデータ群であり、隣接する単位データが空間的に相互に所定の関連性をもったデータの集合体、すなわちストリームデータである。また、画像データに所定の画像処理を行うＤＳＰ４３は、プロセッサ内部に算術論理ユニット（ＡＬＵ：Arithmetic  Logic  Unit）、あるいは浮動小点演算ユニット（ＦＰＵ：Floating  Point  number  processing  Unit）等の演算器を有して構成される。
【００３８】
そして、本デジタルカメラの信号処理系においては、画像データが一時記憶された外部記録媒体（不図示）やデータメモリ２１と、ＤＳＰ４３，４３・・・の演算器との間に、複数の記憶領域が連設されたカラムを有するマーチングメモリが設けられて構成される。以下、マーチングメモリを用いた画像処理装置の具体的な態様について詳細に説明する。
【００３９】
第１実施形態の画像処理装置は、ＤＳＰ４３にマーチングメモリを備える、すなわち、マーチングメモリをＤＳＰ４３に内蔵して一体に構成される。本形態に含まれる第１の態様の画像処理装置１００について、その概要のブロック図である図２を参照して説明する。なお、図２は、画像処理装置１００におけるＤＳＰ（デジタル信号プロセッサ）４３を主体として示すブロック図であり、データメモリ部２におけるメモリコントローラ２２や、ＤＳＰアレイ部４における命令ＲＡＭ４１、命令キャッシュ４２、共有メモリ４４等の記載を省略している。
【００４０】
画像処理装置１００は、画像データを一時記憶するデータメモリ２１と、データメモリ２１から読み出した画像データに所定の情報処理を行うＤＳＰ４３とを備える。本態様のＤＳＰ４３は、演算処理に必要なデータを一時保持するレジスタファイル１１０と、レジスタファイル１１０に保持されたデータを用いて演算処理を実行するＡＬＵあるいはＦＰＵ等の演算器１２０と、演算結果を一時的に保持するアキュムレータ１３０と、データメモリ２１とレジスタファイル１１０との間に設けたロードバッファ１５１およびストアバッファ１５２からなるバッファメモリ１５０とを備えて構成される。そして、このロードバッファ１５１およびストアバッファ１５２としてマーチングメモリが用いられる。
【００４１】
ロードバッファ１５１およびストアバッファ１５２は、複数のセル（記憶領域）が行方向に連接されたカラムにより形成される単位マーチングメモリを一つのバッファとし、これを複数並列に設けて構成される。例えば、行方向に２５６のセルが連接されたカラムにより形成される単位マーチングメモリを一つのバッファとし、これを列方向に２５６個並列に設けて、２５６個のバッファからなるロードバッファ１５１、ストアバッファ１５２が形成される。マーチングメモリの各セルには画像データを構成する単位データが一時保持され、ロードバッファ１５１およびストアバッファ１５２に、各々２５６×２５６個の単位データを一時保持（一時記憶）可能に構成される。
【００４２】
ロードバッファ１５１は、命令ＲＡＭ４１からのＤＭＡ（Direct  Memory  Access）転送命令に応じてデータメモリ２１にアクセスし、所定範囲の画像データを読み込んで一時保持する。例えば、水平方向（Ｘ方向とする）に４メガピクセル×垂直方向（Ｙ方向とする）に３メガピクセルの画像データから、Ｘ方向に２５６ピクセル×Ｙ方向に２５６ピクセル分の画像データを読み出し、２５６のバッファに一時保持する。このとき、Ｘ方向について最初に読み出したＸ１ラインの２５６ピクセル分の単位データを、Ｂ１バッファの第１セルから第２５６セルに順次送り動作させて一時保持し、次に読み出したＸ２ラインの２５６ピクセル分の単位データを、Ｂ２バッファの第１セルから第２５６セルに順次送り動作させて一時保持させる。以降同様に読み出し動作を繰り返し、Ｂ１バッファからＢ２５６バッファに順次一時保持させる。各レジスタには画像データのＸ方向ラインに沿って隣接する２５６ピクセル分の単位データが一時保持される。
【００４３】
レジスタファイル１１０は、命令ＲＡＭ４１からのロード命令に応じてロードバッファ１５１から単位データを読み込み、所定のレジスタ、例えばＲ１レジスタに格納する。同様にＤＭＡＣ４５あるいはＳＲＡＭ４６から実行する画像処理に応じたデータを読み込み、所定のレジスタ、例えばＲ２レジスタに格納する。
【００４４】
演算器１２０は、命令ＲＡＭ４１からの演算命令に応じ、Ｒ１レジスタに格納された単位データと、Ｒ２レジスタに格納されたデータとを用いて演算処理を実行し、演算結果をアキュムレータ１３０を介してレジスタファイル１１０に出力し、所定のレジスタ、例えばＲ３レジスタに格納する。
【００４５】
レジスタファイル１１０は、命令ＲＡＭ４１からのストア命令に応じて演算処理後の単位データを出力し、ストアバッファ１５２に演算結果の単位データを書き込む。
【００４６】
このとき、レジスタファイル１１０には、ロードバッファ１５１における各バッファ（単位マーチングメモリ）のカラムに並んだ単位データが順にロードされて演算器１２０により演算処理される。また、演算処理後の単位データは、演算処理された順にストアされ、ストアバッファ１５２における各バッファ（単位マーチングメモリ）のカラムに一時保持される。例えば、ロードバッファ１５１におけるＢ１バッファのカラムに並んだ単位データが、第１セルから順にレジスタファイル１１０に読み込まれて演算器１２０により演算処理され、演算処理後の単位データは、ストアバッファ１５２におけるＢ１バッファのカラムに、第１セルから第２５６セルに順次送り動作されて書き込まれる。以降、Ｂ２バッファ〜Ｂ２５６バッファについても同様である。
【００４７】
演算器１２０による上記演算処理の進行に伴い、ロードバッファ１５１に一時保持された画像データは順次減少し、ストアバッファ１５２には演算処理後（画像処理後）の画像データが順次増加する。ロードバッファ１５１およびストアバッファ１５２は、この演算処理の進行と並行して、すなわち演算処理実行のバックグラウンドで、データメモリ２１との間で画像データのＤＭＡ転送を行う。
【００４８】
このような構成の画像処理装置１００においては、Ｘ方向ライン１本分の画像データが各バッファの第１セルから第２５６セルに一時保持され、Ｘ１ラインからＸ２５６ラインの画像データが、Ｂ１バッファからＢ２５６バッファ（第１単位マーチングメモリから第２５６単位マーチングメモリ）に一時保持される。そして、演算器１２０により、Ｂ１バッファの第１セル〜第２５６セル、Ｂ２バッファの第１セル〜第２５６セル、Ｂ３バッファの第１セル〜第２５６セル・・・、Ｂ２５６バッファの第１セル〜第２５６セルのように、各バッファのセルに一時保持された単位データが順次ロードされて演算処理される。
【００４９】
画像データは、隣接するセルに一時記憶される単位データが空間的に相互に関連性を有する（例えば隣接する画素により検出された）データの集合体であり、ストリームデータである。そのため、ランダムデータのように、各単位データに対してアドレッシングを施して読み書きを行う必要がなく、１ライン分の単位データを各単位マーチングメモリのバッファにおいて順に送り動作させてセルに記憶させ、あるいは読み出せばよい。また、隣接するセル間のデータの送り移動、すなわち単位データの書き込みおよび読み出し動作は、ＤＳＰ４３のクロックパルスに同期させて高速に行うことができる。
【００５０】
さらに、ロードバッファ１５１およびストアバッファ１５２とデータメモリ２１とは、物理的に離れているため画像データのやりとりに時間がかかり、画像処理を高速化・高効率化する一つの障害になり得る。しかし、画像処理装置１００においては、ロードバッファ１５１およびストアバッファ１５２とデータメモリ２１との間での画像データの転送が、演算器１２０において演算処理が実行されている期間に並行して、バックグラウンドで行われる。
【００５１】
従って、画像処理装置１００によれば、マーチングメモリの特長的な動作形態を活かし、高速・高効率で画像処理を実行することができる。
【００５２】
なお、Ｂ１〜Ｂ２５６バッファにＸ１〜Ｘ２５６ラインの画像データが一時保持される構成を例示したが、Ｂ１〜Ｂ２５６バッファは各々任意ラインの画像データを一時保持させることができ、処理に応じて空いているバッファを使用することができる。例えば、Ｂ３５バッファにＸ１ラインの画像データ、Ｂ４２バッファにＸ２ラインの画像データを一時保持させる等のように使用することができる。
【００５３】
次に、第１実施形態に含まれる第２の態様の画像処理装置２００について、図３を参照して説明する。図３は、画像処理装置２００におけるＤＳＰ（デジタル信号プロセッサ）４３を主体として示すブロック図であり、図２と同様にデータメモリ部２におけるメモリコントローラ２２や、ＤＳＰアレイ部４における命令ＲＡＭ４１、命令キャッシュ４２、共有メモリ４４等の記載を省略している。
【００５４】
画像処理装置２００は、画像データを一時記憶するデータメモリ２１と、データメモリ２１から読み出した画像データに所定の情報処理を行うＤＳＰ４３とを備える。本態様のＤＳＰ４３は、演算処理に必要なデータを一時保持するレジスタファイル２１０と、レジスタファイル２１０に保持されたデータを用いて演算処理を実行するＡＬＵあるいはＦＰＵ等の演算器２２０と、演算結果を一時的に保持するアキュムレータ２３０と、レジスタファイル２１０の各レジスタに一時記憶された画像データのアドレス情報を一時保持するアドレスレジスタファイル２５０とを備えて構成される。そして、本態様の画像処理装置２００においては、レジスタファイル２１０としてマーチングメモリが用いられる。
【００５５】
レジスタファイル２１０は、複数のセル（記憶領域）が行方向に連接されたカラムにより形成される単位マーチングメモリを一つのレジスタとし、これを複数並列に設けて構成される。すなわち、並列に設けられた単位マーチングメモリ２１１，２１２，２１３，・・・，２１Ｎが、レジスタファイル２１０におけるＲ１，Ｒ２，Ｒ３，・・・，ＲＮレジスタを構成する。例えば、行方向に２５６のセルを有する単位マーチングメモリを列方向に３２個並列に設けたレジスタファイル２１０では、各々２５６個の単位データを保持可能なレジスタが３２個設けられる。
【００５６】
アドレスレジスタファイル２５０は、レジスタファイル２１０の各レジスタに一時保持された画像データのアドレスデータを一時保持するレジスタファイルであり、Ｒ１，Ｒ２，Ｒ３，・・・，ＲＮレジスタに対応したＡ１，Ａ２，Ａ３，・・・，ＡＮアドレスレジスタを有して構成される。例えば３２のレジスタを有して構成される。
【００５７】
本態様の画像処理装置２００において、１つのバッチ命令により、レジスタ１ライン分のロード、ストア、演算処理が実行される。すなわち、１つのバッチロード命令により２５６個の単位データからなる１ライン分の画像データがレジスタにロードされ、１つのバッチ演算命令により１ライン分の画像データについて演算処理が行われ、１つのバッチストア命令により１ライン分の画像データがデータメモリ２１にストアされる。レジスタにマーチングメモリを用いこのようなバッチ命令を行うことにより、命令効率を大幅に高めることができる。具体的には、以下のようにバッチ命令、処理が実行される。
【００５８】
レジスタファイル２１０は、命令ＲＡＭ４１からのバッチロード命令に応じてデータメモリ２１にアクセスし、所定範囲の画像データを読み出して、各レジスタに格納する。例えば、水平方向に４メガピクセル×垂直方向に３メガピクセルの画像データから、水平方向に２５６ピクセル×垂直方向に１０ピクセル分の画像データを読み出し、１０のレジスタに格納する。このとき、最初のバッチロード命令に基づいてロードしたＸ１ラインの２５６ピクセル分の単位データを、Ｒ１レジスタの第１セルから第２５６セルに順次送り動作させて格納し、次のバッチロード命令に基づいてロードしたＸ２ラインの２５６ピクセル分の単位データを、Ｒ２レジスタの第１セルから第２５６セルに順次送り動作させて格納させる。以降同様にバッチロード命令に基づくロード動作を繰り返し、Ｒ１レジスタからＲ１０レジスタに順次格納する。Ｒ１〜Ｒ１０の各レジスタには画像データのＸ方向ラインに沿って隣接する２５６ピクセル分の単位データが格納される。
【００５９】
このとき、アドレスレジスタファイル２５０には、バッチロード命令に基づいて読み出され、各レジスタに格納された画像データのアドレス情報が格納される。例えば、Ｒ１レジスタの第１セル〜第２５６セルに、Ｘ１ラインの画像データが格納された場合には、このＸ１ラインのアドレスがＡ１レジスタに格納される。また、次述する演算処理後のＸ１ラインの画像データがＲ２１レジスタに格納された場合には、演算処理後のＸ１ラインのアドレスがＡ２１レジスタに格納される。
【００６０】
また、レジスタファイル２１０には、命令ＲＡＭ４１からのバッチロード命令の実行に応じてＤＭＡＣ４５あるいはＳＲＡＭ４６から、実行する画像処理に応じたデータが読み出され、各レジスタに格納される。例えば、ＤＭＡＣ４５から、バッチロード命令の実行に応じてＸ１ラインの画像処理に対応した２５６個のデータが読み出されてＲ１１レジスタに格納され、バッチロード命令の実行に応じてＸ２ラインの画像処理に対応した２５６個のデータが読み出されてＲ１２レジスタに格納される。以下同様にして、Ｘ１０ラインの画像処理に対応した２５６個のデータが読み出されてＲ２０レジスタに格納される。
【００６１】
演算器２２０は、命令ＲＡＭ４１からのバッチ演算命令に応じて、各レジスタに格納された画像データをバッチ処理する。例えば、命令ＲＡＭ４１からのバッチ演算命令が、Ｒ１レジスタに格納された画像データと、Ｒ１１レジスタに格納されたデータとを加算して、Ｒ２１レジスタに格納せよというバッチ演算命令であったとき、演算器２２０は次のように演算処理を実行する。
【００６２】
演算器２２０は、バッチ演算命令に基づいてＲ１レジスタの第１セルに格納された単位データと、Ｒ１１レジスタの第１セルに格納されたデータとを加算して、Ｒ２１レジスタの第１セルに格納する。次いで、Ｒ１レジスタの第２セルに格納された単位データと、Ｒ１１レジスタの第２セルに格納されたデータとを加算して、Ｒ２１レジスタの第２セルに格納する。以下同様に、Ｒ１レジスタの第ｎセルに格納された単位データと、Ｒ１１レジスタの第ｎセルに格納されたデータとを加算して、Ｒ２１レジスタの第ｎセルに格納する。この処理を１命令で第１セル〜第２５６セルまで実行する。
【００６３】
命令ＲＡＭ４１からの次のバッチ演算命令として、Ｒ２レジスタ（Ｘ２ライン）に格納された画像データに対する処理命令が出されると、演算器２２０は、Ｒ１レジスタに格納された画像データに対して行った処理と同様に演算処理を実行する。以降、バッチ演算を繰り返す場合は、例えばＲ３レジスタ〜Ｒ１０レジスタについて、同様の演算処理を実行する。
【００６４】
ここで、Ｒ１レジスタ〜Ｒ１０レジスタの第１セル〜第２５６セルには、それぞれＸ１ライン〜Ｘ１０ラインを形成する演算処理前の単位データが順に並んで格納される。また、レジスタファイル２１０を構成する各レジスタはいずれも単位マーチングメモリであり、第１セル〜第２５６セルに格納されたデータはデータの並び順を維持したまま順送り移動される。そのため、演算処理の実行時に各単位マーチングメモリを単純に順送り動作させることによって、第１セル〜第２５６セルに格納された単位データを順に演算器２２０に送り出し、演算処理を実行させることができる。演算処理後の単位データをＲ２１レジスタ〜Ｒ３０レジスタの第１セル〜第２５６セルに書き込むときについても同様であり、各単位マーチングメモリを順送り動作させて単位データを送り込むことにより、第１セル〜第２５６セルに単位データが順に並んで格納される。
【００６５】
演算器２２０による上記演算処理の進行に伴い、Ｒ１レジスタ〜Ｒ１０レジスタに格納された演算処理前の画像データ、およびＲ１１レジスタ〜Ｒ２０レジスタに格納されたデータは順次減少し、Ｒ２１レジスタ〜Ｒ３０レジスタに格納された演算処理後の画像データが順次増加する。ＤＳＰ４３は、演算器２２０による演算処理の進行と並行して、バッチストア命令を出すことにより、レジスタファイル２１０とデータメモリ２１との間で画像データのＤＭＡ転送を行わせる。
【００６６】
このような構成の画像処理装置２００においては、１つのバッチロード命令でＸ方向ライン１本分の２５６の単位データからなる画像データが各レジスタの第１セルから第２５６セルに格納され、１０のバッチロード命令でＸ１ラインからＸ１０の２５６０の単位データからなる画像データが、Ｒ１レジスタからＲ１０レジスタに格納される。演算器２２０では、１つのバッチ演算命令で２５６の単位データからなる１ライン分の画像データが演算処理され、１０のバッチ演算命令でＲ１レジスタ〜Ｒ１０レジスタに格納された１０ライン分の画像データが演算処理されて、Ｒ２１〜Ｒ３０に格納される。
【００６７】
画像データは、隣接するセルに格納される単位データが空間的に相互に関連性を有する（例えば隣接する画素により検出された）データの集合体であり、ストリームデータである。そのため、ランダムデータのように、各単位データに対して逐一アドレッシングを施して読み書きを行う必要がなく、アドレッシングやデータサーチ等に要する時間を排除することができる。
【００６８】
さらに、画像処理装置２００においては、演算器２２０が１本のＸ方向ライン分に相当する単位データ群（上記実施例では２５６の単位データ群）のロード・演算・ストアの各処理をそれぞれ１命令でバッチ処理する。１ライン分の単位データ群はデータの並び順を維持したまま順送り移動されるため、ロード時や演算処理の実行時、ストア時に単位マーチングメモリを単純に順送り動作させることによって、単位データ群を順にロードし、演算処理し、演算結果のデータ群を順に格納することができる。単位マーチングメモリにおける隣接するセル間のデータの送り移動、すなわち単位データの書き込みおよび読み出し動作は、基準クロックパルスに同期させて高速に行うことができる。さらに、１つのバッチ命令により、レジスタ１ライン分のロード、ストア、演算処理が実行されるため命令効率を大幅に高めることができる。
【００６９】
また、レジスタファイル２１０とデータメモリ２１とは、物理的に離れているため画像データのやりとりに時間がかかり、画像処理を高速化・高効率化する一つの障害になり得る。しかしながら、画像処理装置２００においては、レジスタファイル２１０とデータメモリ２１との間での画像データの転送が、演算器２２０において演算処理が実行されている期間に並行して、バックグラウンドで行われる。
【００７０】
従って、画像処理装置２００によれば、マーチングメモリの特長的な動作形態を活かし、高速・高効率で画像処理を実行することができる。
【００７１】
なお、以上では、説明簡明化のため、レジスタファイル２１０におけるＲ１〜Ｒ１０レジスタにＸ１〜Ｘ１０ラインの画像データが格納され、Ｒ１１〜Ｒ２０レジスタにＸ１〜Ｘ１０ラインの処理データが格納され、Ｒ２１〜Ｒ３０レジスタにＸ１〜Ｘ１０ラインの処理後の画像データが格納される構成を例示した。しかしながら、Ｒ１〜Ｒ３２レジスタは、その時の割り付けにより、各々任意ラインの画像データ、処理データ、処理後の画像データを格納することができ、処理に応じて空いているレジスタを割り付けて使用することができる。例えば、Ｒ８レジスタ及びＲ１３レジスタにＸ１ライン及びＸ２ラインの画像データが格納され、Ｒ２レジスタ及びＲ２５レジスタにＸ１ライン及びＸ２ラインの処理データが格納され、Ｒ５レジスタ及びＲ３２レジスタにＸ１ライン及びＸ２ラインの処理後の画像データが格納されるようにすることができる。
【００７２】
アドレスレジスタ２５０についても同様であり、Ａ１〜Ａ３２レジスタは、その時の割り付けにより、各々任意ラインの画像データのアドレス、処理後の画像データのアドレスを格納することができ、処理に応じて空いているレジスタを割り付けて使用することができる。例えば、Ｒ９レジスタに格納したＸ３ラインの画像データのアドレスがＡ２レジスタに格納され、Ｒ２２レジスタに格納したＸ３ラインの処理後のアドレスがＡ１１レジスタに格納されるようにすることができる。
【００７３】
次に、第２実施形態の画像処理装置について説明する。第２実施形態の画像処理装置は、データメモリ２１と、複数のＤＳＰ（デジタル信号プロセッサ）４３，４３，・・・，４３とを備え、データメモリ２１とＤＳＰ４３，４３，・・・，４３との間にマーチングメモリを利用した共有メモリ４４を設けて構成される。
【００７４】
本実施形態の画像処理装置４００について、図４を参照して説明する。図４は、画像処理装置４００における共有メモリ４４を主体として示すブロック図であり、データメモリ部２におけるメモリコントローラ２２や、ＤＳＰアレイ部４における命令ＲＡＭ４１、命令キャッシュ４２等の記載を省略している。
【００７５】
画像処理装置４００は、画像データを一時記憶するデータメモリ２１と、データメモリ２１から読み出した画像データに所定の情報処理を行うＤＳＰ４３と、共有メモリ４４とを備える。共有メモリ４４は、画像データ等を一時記憶するデータ記憶部４０１と、データ記憶部４０１に入出力される画像データ等の流れを制御するデータ制御部４０２とから構成される。
【００７６】
データ記憶部４０１は、画像データを一時記憶するＭＭアレイ４１０と、ＭＭアレイ（マーチングメモリアレイ）４１０に一時記憶された画像データの情報を一時保持するＭＭラベル管理コントローラ４２０とを有して構成される。データ制御部４０２は、データメモリ２１およびＤＳＰ４３，４３，・・・，４３とＭＭアレイ４１０との間に設けられたリード／ライト調整回路４３０と、リード／ライト調整回路４３０の作動を制御するリード／ライトシーケンサ４４０とを有して構成される。
【００７７】
ＭＭアレイ４１０は、複数のセル（記憶領域）が行方向に連接されたカラムにより形成される単位マーチングメモリを一つのメモリとし、これを複数並列に設けて構成される。すなわち、並列に設けられた単位マーチングメモリ４１１，４１２，４１３，・・・，４１Ｎが、ＭＭアレイ４１０におけるＣ１，Ｃ２，Ｃ３，・・・，ＣＮメモリを構成する。ＭＭアレイの容量は、デジタルカメラにより撮影される画像データのデータ容量に応じて設定され、例えば、行方向に２５６×ｎのセルを有する単位マーチングメモリを、列方向に２５６×ｍ個並列に設けて構成される。本実施形態では、各単位マーチングメモリのカラムの一端をデータの入出力ポートとした構成を例示する。
【００７８】
リード／ライト調整回路４３０は、ＭＭアレイ４１０とデータメモリ２１との間での画像データの読み出しや書き込み、ＭＭアレイ４１０とＤＳＰ４３，４３，・・・，４３との間での画像データの転送を行う際の、画像データの流れを調整する回路である。例示するリード／ライト調整回路４３０は、ＤＳＰ４３，４３，・・・，４３に対応して設けられたロード／ストアユニット４３１，４３１，・・・，４３１と、単位マーチングメモリ４１１，４１２，・・・，４１Ｎに対応する第１〜第Ｎレジスタが円環状に相互接続されたリングレジスタ４３３と、ロード／ストアユニット４３１とリングレジスタ４３３との接続をコントロールするポート接続コントローラ４３２とを有して構成される。
【００７９】
ロード／ストアユニット４３１は、一端がグローバルメモリ転送バス６８を介してＤＳＰ４３，４３，・・・，４３およびデータメモリ２１に接続され、他端がポート接続コントローラ４３２に接続される。リングレジスタ４３３は、第１〜第Ｎレジスタの一端が各々対応するＣ１〜ＣＮメモリの入出力ポートに接続され、他端がポート接続コントローラ４３２に接続される。
【００８０】
リード／ライトシーケンサ４４０は、画像処理装置４００で実行する画像処理の内容に応じて、リード／ライト調整回路４３０のロード／ストアユニット４３１、ポート接続コントローラ４３２、およびリングレジスタ４３３の作動を制御する。画像処理装置４００で実行する画像処理は既に公知の種々のものがあり、処理内容に応じてリード／ライトシーケンサ４４０が制御するリード／ライト調整回路４３０の制御形態（処理モード）も異なったものとなる。ここでは、（１）データメモリ２１に記憶された画像データをそのままＭＭアレイ４１０に一時記憶するコピーモード、（２）データメモリ２１に記憶された画像データの水平方向と垂直方向とを反転させるＸ−Ｙ変換モード、（３）データメモリ２１に記憶された画像データのデータ数を減少させる圧縮モードを、処理モードの代表例として説明する。
【００８１】
（１）コピーモード
コピーモードは、データメモリ２１に記憶された画像データを、そのままＭＭアレイ４１０に一時記憶するような処理モードである。コピーモードの場合に、リード／ライトシーケンサ４４０は、リード／ライト調整回路４３０を以下のように制御する。いま、第１のロード／ストアユニット４３１に、Ｘ１ライン〜Ｘ５ラインの画像データを読み出し、ＭＭアレイ４１０のＣ１メモリ〜Ｃ５メモリに一時記憶させる（書き込む）とする。
【００８２】
このとき、リード／ライトシーケンサ４４０は、まず第１のロード／ストアユニット４３１に、Ｘ１ラインのアドレスを指定してＸ方向ライン１本分の画像データを読み出させる。ポート接続コントローラ４３２には、第１のロード／ストアユニット４３１と、リングレジスタ４３３におけるＣ１メモリに対応したレジスタである第１レジスタとを接続させる。リングレジスタ４３３は、レジスタ間でのデータ移動を行わず、ポート接続コントローラ４３２から入力されたデータをそのメモリに出力する設定とする。これにより、データメモリ２１から読み出されたＸ１ラインの画像データは、第１のロード／ストアユニット４３１〜ポート接続コントローラ４３２〜リングレジスタ４３３の第１レジスタを通り、ＭＭアレイ４１０のＣ１メモリに一時記憶される。
【００８３】
次いで、リード／ライトシーケンサ４４０は、第１のロード／ストアユニット４３１に、Ｘ２ラインのアドレスを指定してＸ方向ライン１本分の画像データを読み出させる。ポート接続コントローラ４３２には、第１のロード／ストアユニット４３１と、リングレジスタ４３３の第２レジスタとを接続させる。リングレジスタ４３３はレジスタ間でのデータ移動を行わない設定を維持する。これにより、データメモリ２１から読み出されたＸ２ラインの画像データが、第１のロード／ストアユニット４３１〜ポート接続コントローラ４３２〜リングレジスタ４３３の第２レジスタを通り、ＭＭアレイ４１０のＣ２メモリに一時記憶される。Ｘ３ライン〜Ｘ５ラインについても同様であり、ポート接続コントローラ４３２の接続設定を順次切り替えることにより、Ｘ３ライン〜Ｘ５ラインの画像データが、ＭＭアレイ４１０のＣ３メモリ〜Ｃ５メモリに一時記憶される。
【００８４】
ＭＭラベル管理コントローラ４２０には、ＭＭアレイ４１０のＣ１メモリ〜Ｃ５メモリに一時記憶された画像データのアドレス情報がラベルとして一時記憶される。例えば、Ｃ１メモリに一時記憶された画像データは、データメモリ２１に記憶された原画像データにおけるＸ１ラインの画像データである旨のラベルが一時記憶される。Ｃ２メモリ〜Ｃ５メモリについても同様である。
【００８５】
なお、ＭＭアレイ４１０のＣ１〜ＣＮメモリには、任意ラインの画像データを一時記憶させることができる。例えば、Ｃ３メモリにＸ１ラインの画像データ、Ｃ６メモリにＸ２ラインの画像データを一時記憶させるようにすることができる。
【００８６】
以上は、データメモリ２１に記憶された画像データをＭＭアレイ４１０に一時記憶する場合について説明したが、ＭＭアレイ４１０に一時記憶された画像データを、ＤＳＰ４３に転送するとき、あるいはデータメモリ２１に書き込むときについても同様である。すなわち、リード／ライトシーケンサ４４０は、読み出すべきＭＭアレイ４１０のメモリと、ＤＳＰ４３への転送を行うロード／ストアユニット４３１との接続を順次切り換えて、所定範囲の画像データをＤＳＰ４３に転送する。
【００８７】
（２）Ｘ−Ｙ変換モード
Ｘ−Ｙ変換モードは、データメモリ２１に記憶された画像データにおける水平方向（Ｘ方向）と垂直方向（Ｙ方向）とを反転させてＭＭアレイ４１０に一時記憶するようなる処理モードである。Ｘ−Ｙ変換モードの場合、リード／ライトシーケンサ４４０は、リード／ライト調整回路４３０を以下のように制御する。いま、第１のロード／ストアユニット４３１に、Ｘ１ライン〜Ｘ５ラインの画像データを読み出し、ＭＭアレイ４１０にＹ１ライン〜Ｙ５ラインとして一時記憶させる場合を説明する。
【００８８】
このとき、リード／ライトシーケンサ４４０は、まず第１のロード／ストアユニット４３１に、Ｘ１ラインのアドレスを指定してＸ方向イン１本分の画像データを読み出させる。ポート接続コントローラ４３２には、第１のロード／ストアユニット４３１と、リングレジスタ４３３における第１レジスタとを接続させる。リングレジスタ４３３については、Ｘ１ラインを構成する単位データが入力されるごとに、レジスタ間でデータを送り移動させるように設定する。
【００８９】
図５は、１本のＸ方向ラインが４つの単位データで構成される場合のリングレジスタ４３３の作用を示している。このとき、データメモリ２１から読み出されたＸ１ラインの４つの単位データは、リングレジスタ４３３により順次データが移動され、Ｘ１ラインの第１単位データがＣ４メモリに対応する第４レジスタに、第２単位データがＣ３メモリに対応する第３レジスタに、第３単位データがＣ２メモリに対応する第２レジスタに、第４単位データがＣ１メモリに対応する第１レジスタに移動される。そして、Ｘ方向ライン１本分の画像データがリングレジスタ４３３の第４レジスタ〜第１レジスタに格納されたのち、各レジスタに格納された単位データがＭＭアレイ４１０に書き込まれる。これにより、Ｘ１ラインがＹ１ラインにＸ−Ｙ変換される。
【００９０】
次いで、リード／ライトシーケンサ４４０は、第１のロード／ストアユニット４３１に、Ｘ２ラインのアドレスを指定してＸ方向ライン１本分の画像データを読み出させる。ポート接続コントローラ４３２、リングレジスタ４３３の設定は同一である。データメモリ２１から読み出されたＸ２ラインの４つの単位データは、リングレジスタ４３３により順次データが移動され、Ｘ２ラインの第１単位データが第４レジスタに、第２単位データが第３レジスタに、第３単位データが第２レジスタに、第４単位データが第１レジスタに移動される。そして、Ｘ方向ライン１本分の画像データがリングレジスタ４３３の第４レジスタ〜第１レジスタに格納されたのち、各レジスタに格納された単位データがＭＭアレイ４１０に書き込まれる。これにより、Ｘ２ラインがＹ２ラインにＸ−Ｙ変換される。このとき、先にＣ４メモリ〜Ｃ１メモリの第１セルに一時記憶されていたＹ１ラインの各単位データは、Ｙ２ラインの各単位データの書き込み動作とともに第２セルに送り移動される。
【００９１】
Ｘ３ライン〜Ｘ５ラインついても同様にしてＸ−Ｙ変換され、Ｙ３ライン〜Ｙ５ラインとしてＭＭアレイ４１０に一時記憶される。
【００９２】
ＭＭラベル管理コントローラ４２０には、ＭＭアレイ４１０のＣ１メモリ〜Ｃ４メモリに一時記憶された画像データの情報がラベルとして一時記憶される。例えば、Ｃ１メモリに一時記憶された画像データは、データメモリ２１に記憶された原画像データにおけるＹ４ラインに相当する画像データである旨のラベルが一時記憶される。Ｃ２メモリ〜Ｃ４メモリについても同様である。
【００９３】
以上は、データメモリ２１に記憶された画像データを、Ｘ−Ｙ変換してＭＭアレイ４１０に一時記憶する場合について説明したが、ＭＭアレイ４１０に一時記憶された画像データを、ＤＳＰ４３に転送するとき、あるいはデータメモリ２１に書き込むときにＸ−Ｙ変換する場合も同様である。例えば、上記のようにしてＣ１メモリ〜Ｃ４メモリにＸ−Ｙ変換された画像データが一時記憶されている場合に、Ｃ１メモリ〜Ｃ４メモリを同時に送り動作させてリングレジスタ４３３の各レジスタに単位データを格納し、この４つの単位データをデータ移動させて一つのロード／ストアユニット４３１から出力させれば、Ｙ方向ラインをＸ方向ラインにＸ−Ｙ変換してＤＳＰ４３等に転送することができる。
【００９４】
（３）圧縮モード
圧縮モードは、データメモリに記憶された画像データを間引いてデータ数を減少させた画像データをＭＭアレイ４１０に一時記憶するような処理モードである。圧縮モードの場合、リード／ライトシーケンサ４４０は、リード／ライト調整回路４３０を以下のように制御する。いま、第１のロード／ストアユニット４３１に、Ｘ１ライン〜Ｘ５ラインの画像データを読み出し、ＭＭアレイ４１０にデータ数を１／４に圧縮した画像データを一時記憶させる場合を説明する。
【００９５】
このとき、リード／ライトシーケンサ４４０は、まず第１のロード／ストアユニット４３１に、Ｘ１ラインのアドレスを指定してＸ方向ライン１本分の画像データを読み出させる。ポート接続コントローラ４３２には、第１のロード／ストアユニット４３１と、リングレジスタ４３３における第１レジスタとを接続させる。リングレジスタ４３３に対しては、ポート接続コントローラ４３２からリングレジスタ４３３に入力されるＸ１ラインの単位データが４ｎ−２〜４ｎ（ｎは１以上の整数）の場合には、単位データが入力されるごとに、レジスタ間でデータを送り移動させるように設定する。
【００９６】
具体的には、Ｘ１ラインを構成する単位データが入力されたときに、１〜４番目（ｎ＝１）の単位データについて、前述したＸ−Ｙ変換モードと同様の動作を行わせる。すなわち、２〜４番目の単位データが入力されたときに、リングレジスタ４３３によりレジスタ間で順次データが移動され、１番目の単位データが第４レジスタに、２番目の単位データが第３レジスタに、３番目の単位データが第２レジスタに、４番目の単位データが第１レジスタに移動される。そして、これら４つの単位データがリングレジスタ４３３の第４レジスタ〜第１レジスタに格納されたのち、各レジスタに格納された単位データがＭＭアレイ４１０に書き込まれる。これによりＸ１ラインにおける、１番目の単位データがＣ４メモリ、２番目の単位データがＣ３メモリ、３番目の単位データがＣ２メモリ、４番目の単位データがＣ１メモリに一時保持される。
【００９７】
５〜８番目（ｎ＝２）の単位データが入力されたときも同様に、６〜８番目の単位データが入力されたときに、リングレジスタ４３３によりレジスタ間で順次データが移動され、５番目の単位データが第４レジスタに、６番目の単位データが第３レジスタに、７番目の単位データが第２レジスタに、８番目の単位データが第１レジスタに移動される。そして、これら４つの単位データがリングレジスタ４３３の第４レジスタ〜第１レジスタに格納されたのち、各レジスタに格納された単位データがＭＭアレイ４１０に書き込まれる。これによりＸ１ラインにおける、１番目と５番目の単位データがＣ４メモリ、２番目と６番目の単位データがＣ３メモリ、３番目と７番目の単位データがＣ２メモリ、４番目と８番目の単位データがＣ１メモリに一時保持される。
【００９８】
このような動作をＸ１ライン１本分について実行すると、ＭＭアレイ４１０のＣ４メモリにＸ１ラインにおける１，５，９，・・・，４ｍ番目の単位データ、Ｃ３メモリにＸ１ラインにおける２，６，１０，・・・，（４ｍ＋１）番目の単位データ、Ｃ２メモリにＸ１ラインにおける３，７，１１，・・・，（４ｍ＋２）番目の単位データ、Ｃ１メモリにＸ１ラインにおける４，８，１２，・・・，（４ｍ＋３）番目の単位データが一時記憶される。Ｃ１メモリ〜Ｃ４メモリに一時記憶された画像データは、いずれもＸ１ラインの画像データであるが、データを４つ飛びに間引いてデータ数を１／４に減少させた圧縮画像データである。
【００９９】
Ｘ２ライン以降のＸ方向ラインについても、Ｘ１ラインと同様に同期して同時に実行させることができる。リード／ライトシーケンサ４４０は、例えば第２のロード／ストアユニット４３１に、Ｘ２ラインのアドレスを指定してＸ方向ライン１本分の画像データを読み出させる。ポート接続コントローラ４３２には、第２のロード／ストアユニット４３１と、リングレジスタ４３３における第５レジスタとを接続させる。リングレジスタ４３３に対しては、ポート接続コントローラ４３２からリングレジスタ４３３に入力されるＸ２ラインの単位データが４ｎ−２〜４ｎ（ｎは１以上の整数）の場合には、Ｘ２ラインを構成する単位データが入力されるごとに、レジスタ間でデータを送り移動させるように設定する。
【０１００】
このような設定により、Ｘ２ラインにおける１〜４番目の単位データは、１番目の単位データが第８レジスタに、２番目の単位データが第７レジスタに、３番目の単位データが第６レジスタに、４番目の単位データが第５レジスタに移動される。そして、これら４つの単位データがリングレジスタ４３３の第８レジスタ〜第５レジスタに格納されたのち、各レジスタに格納された単位データがＭＭアレイ４１０に書き込まれる。これによりＸ２ラインにおける、１番目の単位データがＣ８メモリ、２番目の単位データがＣ７メモリ、３番目の単位データがＣ６メモリ、４番目の単位データがＣ５メモリに一時保持される。
【０１０１】
５〜８番目（ｎ＝２）の単位データが入力されたときも同様に処理され、５番目の単位データが第８レジスタに、６番目の単位データが第７レジスタに、７番目の単位データが第６レジスタに、８番目の単位データが第５レジスタに移動される。そして、これら４つの単位データがリングレジスタ４３３の第８レジスタ〜第５レジスタに格納されたのち、各レジスタに格納された単位データがＭＭアレイ４１０に書き込まれる。これによりＸ２ラインにおける、１番目と５番目の単位データがＣ８メモリ、２番目と６番目の単位データがＣ７メモリ、３番目と７番目の単位データがＣ６メモリ、４番目と８番目の単位データがＣ５メモリに一時保持される。
【０１０２】
このような動作をＸ２ライン１本分について実行すると、ＭＭアレイ４１０のＣ８メモリにＸ２ラインにおける１，５，９，・・・，４ｍ番目の単位データ、Ｃ７メモリにＸ２ラインにおける２，６，１０，・・・，（４ｍ＋１）番目の単位データ、Ｃ６メモリにＸ２ラインにおける３，７，１１，・・・，（４ｍ＋２）番目の単位データ、Ｃ５メモリにＸ２ラインにおける４，８，１２，・・・，（４ｍ＋３）番目の単位データが一時記憶される。Ｃ５メモリ〜Ｃ８メモリに一時記憶された画像データは、いずれもＸ２ラインの画像データであるが、データを４つ飛びに間引いてデータ数を１／４に減少させた圧縮画像データである。
【０１０３】
リード／ライトシーケンサ４４０は、Ｘ３ライン〜Ｘ５ラインについても上記Ｘ１ラインおよびＸ２ラインと同様の設定を行い、同様の処理を行わせる。ＭＭアレイ４１０には、Ｃ１２メモリ，Ｃ１６メモリ，Ｃ２０メモリにＸ３，Ｘ４，Ｘ５ラインにおける１，５，９，・・・，４ｍ番目の単位データが一時記憶され、Ｃ１１メモリ，Ｃ１５メモリ，Ｃ１９メモリにＸ３，Ｘ４，Ｘ５ラインにおける２，６，１０，・・・，４ｍ＋１番目の単位データが一時記憶される。
【０１０４】
以上の動作により、ＭＭアレイ４１０には、Ｃ１〜Ｃ４メモリに各々データ数を１／４に減少させたＸ１ラインの圧縮画像データ、Ｃ５〜Ｃ８メモリに各々データ数を１／４に減少させたＸ２ラインの圧縮画像データ、Ｃ９〜Ｃ１２メモリに各々データ数を１／４に減少させたＸ３ラインの圧縮画像データ、・・・、Ｃ１７〜Ｃ２０メモリに各々データ数を１／４に減少させたＸ５ラインの圧縮画像データが一時記憶される。
【０１０５】
そして、ポート接続コントローラ４３２により、第１のロード／ストアユニット４３１とＣ１メモリ、第２のロード／ストアユニット４３１とＣ５メモリ、第３のロード／ストアユニット４３１とＣ９メモリ、・・・、第５のロード／ストアユニット４３１とＣ１７メモリを接続する設定とし、Ｃ１，Ｃ５，Ｃ９，・・・，Ｃ１７メモリの単位マーチングメモリを順送り動作させて、例えばデータメモリ２１に書き込むことにより、原画像データに対してデータ数を１／４に減少させた圧縮画像データを作成することができる。
【０１０６】
なお、本実施形態では、複数並列に並べられた単位マーチングメモリのカラムの一端を入出力ポートとしたが、一端を入力ポート、他端を出力ポートとしてもよく、あるいは両端をともに入出力ポートとしてもよい。これらの場合に、ロード／ストアユニット４３１およびポート接続コントローラ４３２は、ＭＭアレイ４１０を挟んで両側に設けられるが、リングレジスタ４３３は、いずれか一方としてもよい。
【０１０７】
さて、以上では、マーチングメモリを画像処理装置に適用した場合について、いくつかの適用例を示して説明してきた。しかし、マーチングメモリはこれらの適用例に限らず、画像処理装置における他の部位や、処理形態が異なる他の情報処理装置等にも広く適用することが可能である。画像処理装置における他の部位への適用について、図６を参照して簡潔に説明する。図６は画像処理装置における信号の処理系統を大まかにまとめたブロック図である。
【０１０８】
図示する信号処理系は、画像入力系５１０、画像処理系５２０、画像出力系５３０、画像処理装置に接続されるＤＲＡＭ５４０、外部メモリ（ＭＭ）５５０、ストレージ５６０、および外部処理系５７０などから構成される。
【０１０９】
画像処理系５２０は、ＣＰＵ５２１、ＧＰＵ（Graphics  Processing  Unit）５２２、コーデック５２３、ＤＲＡＭコントローラ５２４、外部メモリコントローラ５２５、ストレージ用ＩＰ５２６、外部処理系用ＩＰ５２７などからなり、これらがバスで接続されたＳｏＣ（System  on  Chip）構成になっている。なお、図１を参照して説明した信号処理系との対比においては、概ね、ＣＰＵ５２１がＣＰＵコア部３、ＧＰＵ５２２がＤＳＰアレイ部４、ＤＲＡＭ５４０がＤＲＡＭ２１に相当する。
【０１１０】
このような信号処理系において、画像入力系５１０、画像処理系５２０におけるＣＰＵ５２１および外部処理系用ＩＰ５２７、画像出力系５３０、外部メモリ５５０、ストレージ５６０、外部処理系５７０などにマーチングメモリを好適に適用することができる。すなわち、画像入力系５１０においては、撮像素子により撮影された画像データの一時記憶に、画像出力系５３０においては、画像処理系５２０から出力された画像データの一時記憶に、マーチングメモリを好適に適用することができる。画像処理系５２０におけるＣＰＵ５２１においては、例えば、顔認識や動く被写体のトラッキング等を行う際の画像データの一時記憶にマーチングメモリを好適に適用することができる。外部メモリ５５０やストレージ５６０、外部処理系５７０等についても同様であり、画像データの一時記憶にマーチングメモリを好適に適用することができる。
【０１１１】
以上説明したように、本発明が対象とするデータ群はストリームデータであり、隣接するデータ間で所定の関連性を有している。そのため、ランダムデータのように、各単位データに対して逐一アドレッシングを施して読み書きを行う必要がなく、アドレッシングやデータサーチ等に要する時間を排除することができる。また、マーチングメモリは複数のセルが連設されたカラムを単位とし、セルに入力された単位データが順次送り移動されて各セルに一時記憶される。このとき、単位データの入力および移動速度は、ＣＰＵの基準クロック等に対応させることもでき、高速で書き込みおよび読み出し動作させることができる。従って、本発明によれば、マーチングメモリの特長的な動作形態を活かした好適なアプリケーションを提供することができる。
【符号の説明】
【０１１２】
２１  データメモリ
４３  デジタル信号プロセッサ（ＤＳＰ）
４４  共有メモリ
１００  第１実施形態における第１の態様の画像処理装置
１２０  演算器
１５０  バッファメモリ
１５１  ロードバッファ（マーチングメモリ）
１５２  ストアバッファ（マーチングメモリ）
２００  第１実施形態における第２の態様の画像処理装置
２１０  レジスタファイル（マーチングメモリ）
２１１，２１２，２１３，・・・，２１Ｎ  単位マーチングメモリ
２２０  演算器
４００  第２実施形態の画像処理装置
４１０  ＭＭアレイ（マーチングメモリ）
４１１，４１２，４１３，・・・，４１Ｎ  単位マーチングメモリ
４３３  リングレジスタ（配列変更手段）
４４０  リード／ライトシーケンサ（シーケンサ）
５１０  画像入力系
５２０  画像処理系
５３０  画像出力系
【図１】
2015125960.tif 000003
【図２】
2015125960.tif 000004
【図３】
2015125960.tif 000005
【図４】
2015125960.tif 000006
【図５】
2015125960.tif 000007
【図６】
2015125960.tif 000008
【手続補正書】
【提出日】平成28年8月2日(2016.8.2)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の単位データからなるストリームデータを一時記憶するデータメモリと、データメモリから読み出したストリームデータに所定の情報処理を行うプロセッサとを備えた情報処理装置に関する。また、この情報処理装置を備えたデジタルカメラに関する。
【背景技術】
【０００２】
上記のような情報処理装置の一つとして画像処理装置がある。画像処理装置は、デジタルカメラやビデオカメラ、これらカメラの記録媒体に記録された画像データを取り扱うコンピュータ、プリンタ等に幅広く用いられている。近年では、画像の高精細化や高画質化などの要請から画像１枚（１フレーム）当たりの画像データの容量が大幅に増加し、さらに高フレーム化の要請が加わって、単位時間当たりに記録される画像データの容量が著しく増加している。このように巨大化した画像データを、撮影者等にストレスを与えることなく画像処理するため、画像処理装置には処理速度の高速化が求められている。
【０００３】
画像処理を高速化する手段として種々の構成の画像処理装置が提案されている。例えば、コンパクトフラッシュ（登録商標）カードやＳＤカード（登録商標）などの外部記録媒体に記録された複数の画像データから、所定の（例えば画像１枚分または１フレーム分の）画像データを読み出して一時記憶するＤＲＡＭ等のデータメモリと、データメモリに一時記憶された画像データに対して所定の画像処理を行う画像処理プロセッサとを備える画像処理装置において、データメモリと画像処理プロセッサとの間に、データメモリから画像データの一部を読み出して一時記憶するリードキャッシュメモリと、画像処理プロセッサにより処理された上記一部の画像データを一時記憶するライトキャッシュメモリとを設けた画像処理装置が知られている。
【０００４】
また、画像データに対する演算処理そのものを高速化する技術として、単一命令複数データ流（ＳＩＭＤ：Single  Instruction  Multiple  Date  stream）の演算方式を採用した画像処理装置が提案されている（例えば特許文献１を参照）。この技術は、演算処理を実行する演算器を複数並列に設け、これらを同時に並行して動作させることにより、処理速度の向上を図るものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−３５８２８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一方、データを記憶する記憶手段として、新規なメモリ技術の研究が進展しており、その一つとしてマーチングメモリ（Marching  Memory）がある。マーチングメモリは、半導体チップのマイクロアーキテクチャに関する国際的なシンポジウムである、ＩＥＥＥ／ＡＣＭの第４３回国際アニュアルシンポジウム（ＭＩＣＲＯ−４３）と併せて開催された、第６回ユニークなチップおよびシステムに関するワークショップＵＣＡＳ−６で発表された。その発表内容は、予稿集である以下の文献に記載されている。
T.Watanabe  and  M.J.Flynn,"Marching  Memory：designing  computers  to  avoid  the  Memory  Bottleneck",Workshop  on  Unique  Chips  and  Systems,UCAS-6,December  2010  Atlanta,GA,pp44-47.
【０００７】
上記文献に示された内容から、マーチングメモリの基本的な構成および動作の態様を概説すると以下のようになる。マーチングメモリは、複数の記憶領域（セルという）が連設されたカラムを一つの単位として構成される。カラムの両端は、設定に応じてデータ（または命令）の入力ポートおよび出力ポートとなり、入力ポートに設定されたカラムの端部に順次データが入力される。入力ポートに入力された複数のデータ等は、順次隣接するセルに送り移動されて各セルに一時記憶される。
【０００８】
例えば、５個のセル(記憶領域)が左右方向に連接されたカラムを有するマーチングメモリにおいて、カラムの左端側を入力ポートとし、入力ポートに１，２，３，４，５の５つのデータが順に入力される場合について説明する。この場合において、最初のデータである１が入力されたときに左端のセルに１が一時記憶される。他のセルはリセット状態（またはこの５つのデータが入力される直前に入力された４つのデータが一時記憶された状態）である。２番目のデータ２が入力されると、それまで左端のセルに記憶されていたデータである１は左端から２番目のセルに送り移動され、左端のセルには新たに入力されたデータの２が一時記憶される。以下同様に入力されたデータが順送りされて各セルに記憶され、５つのデータが全て入力されると、カラムの右端側から左端側に向けて各セルに１，２，３，４，５の５つのデータが一時記憶された状態になる。
【０００９】
そのため、カラムの右端側を出力ポートとして設定した場合には、マーチングメモリに対して一時記憶した５つのデータの出力指令が出されたとき、または新たなデータが入力されるごとに、一時記憶されたデータが１，２，３，４，５の順に出力ポートから出力される。一方、カラムの右端部を入力ポートおよび出力ポートとした場合には、マーチングメモリに対して一時記憶した５つのデータの出力指令が出されたときに、一時記憶されたデータが５，４，３，２，１の順に出力ポートから出力される。
【００１０】
本発明は、このような新規なメモリ技術であるマーチングメモリについて、その特長的な動作形態を活かした好適なアプリケーションを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本実施形態によれば、複数の単位データからなるストリームデータを一時記憶するデータメモリと、演算器を有し前記データメモリから読み出したストリームデータに所定の情報処理を行うプロセッサとを備えた情報処理装置であって、前記プロセッサのレジスタファイルとしてマーチングメモリを備え、前記マーチングメモリは、複数の記憶領域が連設されたカラムを有し入力された複数の単位データを前記カラムの一端から順次隣接する記憶領域に送り移動させて各記憶領域に一時記憶する単位マーチングメモリが複数並列に設けられて構成され、前記マーチングメモリは、入力された複数の単位データを第１の前記単位マーチングメモリの各記憶領域に一時記憶し、前記プロセッサは、バッチ演算処理命令に基づいて、前記第１の単位マーチングメモリの各記憶領域に一時記憶された前記複数の単位データを、前記演算器により順次演算処理して処理後の各単位データを第２の前記単位マーチングメモリの各記憶領域に一時記憶させる情報処理装置が提供される。
【００１２】
本実施形態によれば、複数の単位データからなるストリームデータを一時記憶するデータメモリと、演算器を有し前記データメモリから読み出したストリームデータに所定の情報処理を行う複数のプロセッサとを備えた情報処理装置であって、前記データメモリと前記複数のプロセッサとの間に、共有メモリとしてマーチングメモリを備え、前記マーチングメモリは、複数の記憶領域が連設されたカラムを有し、入力された複数の単位データを前記カラムの一端から順次隣接する記憶領域に送り移動させて各記憶領域に一時記憶する単位マーチングメモリが複数並列に設けられて構成される情報処理装置が提供される。
【００１３】
本実施形態によれば、複数の単位データからなるストリームデータを一時記憶するデータメモリと、演算器を有し前記データメモリから読み出したストリームデータに所定の情報処理を行う複数のプロセッサとを備えた情報処理装置であって、前記プロセッサのバッファメモリとしてマーチングメモリを備え、前記マーチングメモリは、複数の記憶領域が連設されたカラムを有し、入力された複数の単位データを前記カラムの一端から順次隣接する記憶領域に送り移動させて各記憶領域に一時記憶する単位マーチングメモリが複数並列に設けられて構成される情報処理装置が提供される。
【００１４】
本実施形態によれば、上記いずれかに記載の情報処理装置と、撮像素子を有し前記情報処理装置に前記ストリームデータである画像データを入力する画像入力系と、前記情報処理装置により処理された画像データを出力する画像出力系とを備えたデジタルカメラが提供される。
【００１５】
本実施形態によれば、複数の単位データからなるストリームデータに所定の情報処理を行うプロセッサであって、マーチングメモリで構成されたレジスタファイルと、前記レジスタファイルに保持されたデータを用いて演算処理を実行する演算器と、を備え、前記マーチングメモリは、複数の記憶領域が連設されたカラムを有し、入力された複数の単位データを前記カラムの一端から順次隣接する記憶領域に送り移動させて各記憶領域に一時記憶する単位マーチングメモリが複数並列に設けられて構成されるプロセッサが提供される。
【図面の簡単な説明】
【００１６】
【図１】本発明の適用例として示す、デジタルカメラにおける信号処理系のアーキテクチャを例示するブロック図である。
【図２】第１実施形態における第１の態様の画像処理装置の概要のブロック図である。
【図３】第１実施形態における第２の態様の画像処理装置の概要のブロック図である。
【図４】第２実施形態の画像処理装置の概要のブロック図である。
【図５】第２実施形態の画像処理装置におけるリングレジスタの作用を説明するための説明図である。
【図６】本発明の他の適用例を説明するための、画像処理装置における信号の処理系統を大まかにまとめたブロック図である。
【発明を実施するための形態】
【００１７】
以下、本発明を実施するための形態について、図面を参照しながら説明する。本発明は様々な情報を処理する情報処理装置に適用可能であるが、本実施形態では、一例として本発明をデジタルカメラの画像処理装置に適用した場合について説明する。デジタルカメラにおける信号処理系のアーキテクチャを例示するブロック図を図１に示す。
【００１８】
この信号処理系は、画像入出力部１、データメモリ部２、ＣＰＵコア部３、ＤＳＰアレイ部４、ＣＰＵ／ＤＳＰ間同期通信機構部５、および各部を繋ぐバス６１〜６６などから構成される。
【００１９】
画像入出力部１は、いずれも図示を省略する画像入力系や画像出力系、ＣＦカードやＳＤカード（登録商標）などの外部記録媒体との間で、画像データの入出力を制御する制御部である。画像入出力部１には、上記各部と画像データのやりとりを実行するＩ／Ｏ回路１１、画像データのコーデックやデコードを実行する機能ブロック（ＩＰ）１２などが設けられ、ストリームＩ／Ｏバス６１を介して画像入力系、画像出力系、外部記録媒体と繋がっている。
【００２０】
なお、画像入力系は、デジタルカメラにより種々のフォーマットで撮影された画像（静止画または動画）の原データを入力する系であり、例えば、ＣＭＯＳあるいはＣＣＤ等の撮像素子と、撮像素子に被写体の像を結像する撮像レンズとを備えて構成される。また、画像出力系は、画像処理装置により処理された画像データを液晶表示パネルや外部出力端子に出力する系である（図６を参照）。
【００２１】
画像入出力部１は、ストリームＩ／Ｏバス６１およびバスブリッジを介してメインバス６２に接続される。メインバス６２には、データメモリ部２、ＣＰＵコア部３、ＤＳＰアレイ部４が接続されている。すなわち、メインバス６２には、データメモリ部２が接続される他、バスブリッジを介してＣＰＵコア部３のＣＰＵデータバス６３が接続され、同様にバスブリッジを介してＤＳＰアレイ部４のＤＳＰデータバス（ストリームバス）６４が接続されている。なお、ストリームＩ／Ｏバス６１とＤＳＰデータバス６４とは、バスブリッジを介して直接的にも接続されている。
【００２２】
データメモリ部２は、データメモリ２１とメモリコントローラ２２とを備えて構成される。データメモリ２１は、画像入力系や外部記録媒体等から画像入出力部１を介して入力された画像データを一時記憶する記憶素子であり、例えば記憶量がギガバイトオーダのＤＲＡＭ（Dynamic  Random  Access  Memory）が用いられる。メモリコントローラ２２は、データメモリ２１への画像データの書き込みや、データメモリ２１に一時記憶された画像データの読み出しを制御する制御回路である。
【００２３】
ＣＰＵコア部３は、予め設定記憶されたプログラムに基づいてデジタルカメラの作動を制御する制御部であり、図１では２つの処理回路を並列に設けた並列演算モジュールの構成例を示す。ＣＰＵコア部３は、命令ＲＡＭ（Instruction  RAM）３１と、命令ＲＡＭ３１にＣＰＵ命令バス６５を介して並列接続された処理回路と、各処理回路にＣＰＵデータバス６３を介して接続されたＤＭＡＣ（Direct Memory Access Controller）３５やＳＲＡＭ（Static  Random  Access  Memory）３６等とを有して構成される。命令ＲＡＭ３１は、複数の処理命令からなるプログラムが予め設定記憶されたＲＡＭ（Random  Access  Memory）である。
【００２４】
並列に設けられた各処理回路は、プログラムの各ステップの処理命令を一時保持する命令キャッシュ３２、処理命令を実行するＣＰＵ３３、処理命令を実行する際に参照される演算データを一時保持するデータキャッシュ３４を有して構成される。命令キャッシュ３２は、ＣＰＵ命令バス６５を介して命令ＲＡＭ３１に接続されており、命令ＲＡＭ３１に記憶されたプログラムの処理命令が、処理ステップの進行とともに読み出されて命令キャッシュ３２に一時保持される。データキャッシュ３４はＣＰＵデータバス６３に接続されており、このバスに接続されたＤＭＡＣ３５やＳＲＡＭ３６等から、ＣＰＵ３３が処理を実行する際に参照する演算データが、処理ステップの進行とともに読み出されてデータキャッシュ３４に一時保持される。ＣＰＵ３３は、命令キャッシュ３２に一時保持された処理命令に基づき、データキャッシュ３４に一時保持された演算データを参照して処理を実行する。
【００２５】
ＤＳＰアレイ部４は、予め設定記憶されたプログラムに基づいて所定の画像処理を行う画像処理装置である。図１には、複数のデジタル信号プロセッサ（ＤＳＰ：Digital  Signal  Processor）４３，４３・・・を並列に設けた並列処理モジュールの構成例を示す。また、図１には、複数のデジタル信号プロセッサ４３，４３・・・について共通の共有メモリ４４を設けた構成例を示す。
【００２６】
ＤＳＰアレイ部４は、複数の処理命令からなるプログラムが予め設定記憶された命令ＲＡＭ４１と、命令ＲＡＭ４１にＤＳＰ命令バス６６を介して並列接続された画像処理回路と、画像処理回路にＤＳＰデータバス６４を介して接続されたＤＭＡＣ４５やＳＲＡＭ４６等とを有して構成される。
【００２７】
並列に設けられた画像処理回路は、各々、処理命令を一時保持する命令キャッシュ（I＄）４２と、処理命令を実行するデジタル信号プロセッサ（以下、適宜ＤＳＰと略記する）４３とを有し、複数のＤＳＰ４３，４３・・・が処理を分担して並列に画像処理を実行する。命令キャッシュ４２，４２・・・は、ＤＳＰ命令バス６６を介して命令ＲＡＭ４１に並列接続されており、各命令キャッシュ４２には各ＤＳＰ４３が分担処理すべき処理命令が読み出されて一時保持される。ＤＳＰ４３，４３・・・は共有メモリ４４に接続され、各ＤＳＰが共有メモリ４４から画像データを読み出し、あるいは処理した画像データを共有メモリ４４に書き込み可能になっている。
【００２８】
また、共有メモリ４４は、ＤＳＰデータバス６４に接続され、バスブリッジを介してメインバス６２およびストリームＩ／Ｏバス６１に接続されている。そのため、共有メモリ４４は、これらのバスを介してデータメモリ２１やＤＭＡＣ４５、ＳＲＡＭ４６、画像入力系等との間で画像データのやりとりが可能になっている。
【００２９】
共有メモリ４４は、命令ＲＡＭ４１から読み出した処理命令に基づいて、上記各部（例えばデータメモリ２１）から所定の画像データを読み出し、メモリ内に一時記憶する。ＤＳＰ４３，４３・・・は、命令ＲＡＭ４１から読み出して命令キャッシュ４２，４２・・・に一時保持された処理命令に基づいて、共有メモリ４４から各自が分担する画像データの一部を読み出し、それぞれ画像処理を実行する。ＤＳＰ４３，４３・・・により画像処理された画像データは共有メモリ４４に一時記憶され、逐次データメモリ２１に転送されて記憶される。
【００３０】
ＣＰＵ／ＤＳＰ間同期通信機構部５は、ＣＰＵコア部３とＤＳＰアレイ部４との間で、相互に実行する処理のタイミングを調整する機構であり、ＣＰＵ３３とＤＳＰ４３との間に設けられた同期制御割り込みコントローラ５１と、ＣＰＵデータバス６３とＤＳＰデータバス６４との間に設けられた共有ＲＡＭ５２とを有して構成される。例えば、ＣＰＵ３３は、プログラムの実行中に画像処理が必要なプロセスが生じたときに、共有ＲＡＭ５２に処理すべき画像データのアドレスや処理内容等のデータを書き込み、同期制御割り込みコントローラ５１を介してＤＳＰ４３に割り込み処理の実行指令を出力する。ＤＳＰ４３は、指定された画像データを読み出して画像処理を実行し、処理後の画像データのアドレス等を共有ＲＡＭ５２に書き込むとともに、同期制御割り込みコントローラ５１を介してＣＰＵ３３に割り込み処理が完了した旨の信号を出力する。これにより、ＣＰＵコア部３とＤＳＰアレイ部４とで効率的に並列処理が行われる。
【００３１】
以上のように概要構成されるデジタルカメラの信号処理系にあって、外部記録媒体（不図示）に記録された画像データや、外部記録媒体から読み出されてデータメモリ２１に一時記憶される画像データは、画像を構成する多数の単位データからなるデータ群であり、隣接する単位データが空間的に相互に所定の関連性をもったデータの集合体、すなわちストリームデータである。また、画像データに所定の画像処理を行うＤＳＰ４３は、プロセッサ内部に算術論理ユニット（ＡＬＵ：Arithmetic  Logic  Unit）、あるいは浮動小点演算ユニット（ＦＰＵ：Floating  Point  number  processing  Unit）等の演算器を有して構成される。
【００３２】
そして、本デジタルカメラの信号処理系においては、画像データが一時記憶された外部記録媒体（不図示）やデータメモリ２１と、ＤＳＰ４３，４３・・・の演算器との間に、複数の記憶領域が連設されたカラムを有するマーチングメモリが設けられて構成される。以下、マーチングメモリを用いた画像処理装置の具体的な態様について詳細に説明する。
【００３３】
第１実施形態の画像処理装置は、ＤＳＰ４３にマーチングメモリを備える、すなわち、マーチングメモリをＤＳＰ４３に内蔵して一体に構成される。本形態に含まれる第１の態様の画像処理装置１００について、その概要のブロック図である図２を参照して説明する。なお、図２は、画像処理装置１００におけるＤＳＰ（デジタル信号プロセッサ）４３を主体として示すブロック図であり、データメモリ部２におけるメモリコントローラ２２や、ＤＳＰアレイ部４における命令ＲＡＭ４１、命令キャッシュ４２、共有メモリ４４等の記載を省略している。
【００３４】
画像処理装置１００は、画像データを一時記憶するデータメモリ２１と、データメモリ２１から読み出した画像データに所定の情報処理を行うＤＳＰ４３とを備える。本態様のＤＳＰ４３は、演算処理に必要なデータを一時保持するレジスタファイル１１０と、レジスタファイル１１０に保持されたデータを用いて演算処理を実行するＡＬＵあるいはＦＰＵ等の演算器１２０と、演算結果を一時的に保持するアキュムレータ１３０と、データメモリ２１とレジスタファイル１１０との間に設けたロードバッファ１５１およびストアバッファ１５２からなるバッファメモリ１５０とを備えて構成される。そして、このロードバッファ１５１およびストアバッファ１５２としてマーチングメモリが用いられる。
【００３５】
ロードバッファ１５１およびストアバッファ１５２は、複数のセル（記憶領域）が行方向に連接されたカラムにより形成される単位マーチングメモリを一つのバッファとし、これを複数並列に設けて構成される。例えば、行方向に２５６のセルが連接されたカラムにより形成される単位マーチングメモリを一つのバッファとし、これを列方向に２５６個並列に設けて、２５６個のバッファからなるロードバッファ１５１、ストアバッファ１５２が形成される。マーチングメモリの各セルには画像データを構成する単位データが一時保持され、ロードバッファ１５１およびストアバッファ１５２に、各々２５６×２５６個の単位データを一時保持（一時記憶）可能に構成される。
【００３６】
ロードバッファ１５１は、命令ＲＡＭ４１からのＤＭＡ（Direct  Memory  Access）転送命令に応じてデータメモリ２１にアクセスし、所定範囲の画像データを読み込んで一時保持する。例えば、水平方向（Ｘ方向とする）に４メガピクセル×垂直方向（Ｙ方向とする）に３メガピクセルの画像データから、Ｘ方向に２５６ピクセル×Ｙ方向に２５６ピクセル分の画像データを読み出し、２５６のバッファに一時保持する。このとき、Ｘ方向について最初に読み出したＸ１ラインの２５６ピクセル分の単位データを、Ｂ１バッファの第１セルから第２５６セルに順次送り動作させて一時保持し、次に読み出したＸ２ラインの２５６ピクセル分の単位データを、Ｂ２バッファの第１セルから第２５６セルに順次送り動作させて一時保持させる。以降同様に読み出し動作を繰り返し、Ｂ１バッファからＢ２５６バッファに順次一時保持させる。各レジスタには画像データのＸ方向ラインに沿って隣接する２５６ピクセル分の単位データが一時保持される。
【００３７】
レジスタファイル１１０は、命令ＲＡＭ４１からのロード命令に応じてロードバッファ１５１から単位データを読み込み、所定のレジスタ、例えばＲ１レジスタに格納する。同様にＤＭＡＣ４５あるいはＳＲＡＭ４６から実行する画像処理に応じたデータを読み込み、所定のレジスタ、例えばＲ２レジスタに格納する。
【００３８】
演算器１２０は、命令ＲＡＭ４１からの演算命令に応じ、Ｒ１レジスタに格納された単位データと、Ｒ２レジスタに格納されたデータとを用いて演算処理を実行し、演算結果をアキュムレータ１３０を介してレジスタファイル１１０に出力し、所定のレジスタ、例えばＲ３レジスタに格納する。
【００３９】
レジスタファイル１１０は、命令ＲＡＭ４１からのストア命令に応じて演算処理後の単位データを出力し、ストアバッファ１５２に演算結果の単位データを書き込む。
【００４０】
このとき、レジスタファイル１１０には、ロードバッファ１５１における各バッファ（単位マーチングメモリ）のカラムに並んだ単位データが順にロードされて演算器１２０により演算処理される。また、演算処理後の単位データは、演算処理された順にストアされ、ストアバッファ１５２における各バッファ（単位マーチングメモリ）のカラムに一時保持される。例えば、ロードバッファ１５１におけるＢ１バッファのカラムに並んだ単位データが、第１セルから順にレジスタファイル１１０に読み込まれて演算器１２０により演算処理され、演算処理後の単位データは、ストアバッファ１５２におけるＢ１バッファのカラムに、第１セルから第２５６セルに順次送り動作されて書き込まれる。以降、Ｂ２バッファ〜Ｂ２５６バッファについても同様である。
【００４１】
演算器１２０による上記演算処理の進行に伴い、ロードバッファ１５１に一時保持された画像データは順次減少し、ストアバッファ１５２には演算処理後（画像処理後）の画像データが順次増加する。ロードバッファ１５１およびストアバッファ１５２は、この演算処理の進行と並行して、すなわち演算処理実行のバックグラウンドで、データメモリ２１との間で画像データのＤＭＡ転送を行う。
【００４２】
このような構成の画像処理装置１００においては、Ｘ方向ライン１本分の画像データが各バッファの第１セルから第２５６セルに一時保持され、Ｘ１ラインからＸ２５６ラインの画像データが、Ｂ１バッファからＢ２５６バッファ（第１単位マーチングメモリから第２５６単位マーチングメモリ）に一時保持される。そして、演算器１２０により、Ｂ１バッファの第１セル〜第２５６セル、Ｂ２バッファの第１セル〜第２５６セル、Ｂ３バッファの第１セル〜第２５６セル・・・、Ｂ２５６バッファの第１セル〜第２５６セルのように、各バッファのセルに一時保持された単位データが順次ロードされて演算処理される。
【００４３】
画像データは、隣接するセルに一時記憶される単位データが空間的に相互に関連性を有する（例えば隣接する画素により検出された）データの集合体であり、ストリームデータである。そのため、ランダムデータのように、各単位データに対してアドレッシングを施して読み書きを行う必要がなく、１ライン分の単位データを各単位マーチングメモリのバッファにおいて順に送り動作させてセルに記憶させ、あるいは読み出せばよい。また、隣接するセル間のデータの送り移動、すなわち単位データの書き込みおよび読み出し動作は、ＤＳＰ４３のクロックパルスに同期させて高速に行うことができる。
【００４４】
さらに、ロードバッファ１５１およびストアバッファ１５２とデータメモリ２１とは、物理的に離れているため画像データのやりとりに時間がかかり、画像処理を高速化・高効率化する一つの障害になり得る。しかし、画像処理装置１００においては、ロードバッファ１５１およびストアバッファ１５２とデータメモリ２１との間での画像データの転送が、演算器１２０において演算処理が実行されている期間に並行して、バックグラウンドで行われる。
【００４５】
従って、画像処理装置１００によれば、マーチングメモリの特長的な動作形態を活かし、高速・高効率で画像処理を実行することができる。
【００４６】
なお、Ｂ１〜Ｂ２５６バッファにＸ１〜Ｘ２５６ラインの画像データが一時保持される構成を例示したが、Ｂ１〜Ｂ２５６バッファは各々任意ラインの画像データを一時保持させることができ、処理に応じて空いているバッファを使用することができる。例えば、Ｂ３５バッファにＸ１ラインの画像データ、Ｂ４２バッファにＸ２ラインの画像データを一時保持させる等のように使用することができる。
【００４７】
次に、第１実施形態に含まれる第２の態様の画像処理装置２００について、図３を参照して説明する。図３は、画像処理装置２００におけるＤＳＰ（デジタル信号プロセッサ）４３を主体として示すブロック図であり、図２と同様にデータメモリ部２におけるメモリコントローラ２２や、ＤＳＰアレイ部４における命令ＲＡＭ４１、命令キャッシュ４２、共有メモリ４４等の記載を省略している。
【００４８】
画像処理装置２００は、画像データを一時記憶するデータメモリ２１と、データメモリ２１から読み出した画像データに所定の情報処理を行うＤＳＰ４３とを備える。本態様のＤＳＰ４３は、演算処理に必要なデータを一時保持するレジスタファイル２１０と、レジスタファイル２１０に保持されたデータを用いて演算処理を実行するＡＬＵあるいはＦＰＵ等の演算器２２０と、演算結果を一時的に保持するアキュムレータ２３０と、レジスタファイル２１０の各レジスタに一時記憶された画像データのアドレス情報を一時保持するアドレスレジスタファイル２５０とを備えて構成される。そして、本態様の画像処理装置２００においては、レジスタファイル２１０としてマーチングメモリが用いられる。
【００４９】
レジスタファイル２１０は、複数のセル（記憶領域）が行方向に連接されたカラムにより形成される単位マーチングメモリを一つのレジスタとし、これを複数並列に設けて構成される。すなわち、並列に設けられた単位マーチングメモリ２１１，２１２，２１３，・・・，２１Ｎが、レジスタファイル２１０におけるＲ１，Ｒ２，Ｒ３，・・・，ＲＮレジスタを構成する。例えば、行方向に２５６のセルを有する単位マーチングメモリを列方向に３２個並列に設けたレジスタファイル２１０では、各々２５６個の単位データを保持可能なレジスタが３２個設けられる。
【００５０】
アドレスレジスタファイル２５０は、レジスタファイル２１０の各レジスタに一時保持された画像データのアドレスデータを一時保持するレジスタファイルであり、Ｒ１，Ｒ２，Ｒ３，・・・，ＲＮレジスタに対応したＡ１，Ａ２，Ａ３，・・・，ＡＮアドレスレジスタを有して構成される。例えば３２のレジスタを有して構成される。
【００５１】
本態様の画像処理装置２００において、１つのバッチ命令により、レジスタ１ライン分のロード、ストア、演算処理が実行される。すなわち、１つのバッチロード命令により２５６個の単位データからなる１ライン分の画像データがレジスタにロードされ、１つのバッチ演算命令により１ライン分の画像データについて演算処理が行われ、１つのバッチストア命令により１ライン分の画像データがデータメモリ２１にストアされる。レジスタにマーチングメモリを用いこのようなバッチ命令を行うことにより、命令効率を大幅に高めることができる。具体的には、以下のようにバッチ命令、処理が実行される。
【００５２】
レジスタファイル２１０は、命令ＲＡＭ４１からのバッチロード命令に応じてデータメモリ２１にアクセスし、所定範囲の画像データを読み出して、各レジスタに格納する。例えば、水平方向に４メガピクセル×垂直方向に３メガピクセルの画像データから、水平方向に２５６ピクセル×垂直方向に１０ピクセル分の画像データを読み出し、１０のレジスタに格納する。このとき、最初のバッチロード命令に基づいてロードしたＸ１ラインの２５６ピクセル分の単位データを、Ｒ１レジスタの第１セルから第２５６セルに順次送り動作させて格納し、次のバッチロード命令に基づいてロードしたＸ２ラインの２５６ピクセル分の単位データを、Ｒ２レジスタの第１セルから第２５６セルに順次送り動作させて格納させる。以降同様にバッチロード命令に基づくロード動作を繰り返し、Ｒ１レジスタからＲ１０レジスタに順次格納する。Ｒ１〜Ｒ１０の各レジスタには画像データのＸ方向ラインに沿って隣接する２５６ピクセル分の単位データが格納される。
【００５３】
このとき、アドレスレジスタファイル２５０には、バッチロード命令に基づいて読み出され、各レジスタに格納された画像データのアドレス情報が格納される。例えば、Ｒ１レジスタの第１セル〜第２５６セルに、Ｘ１ラインの画像データが格納された場合には、このＸ１ラインのアドレスがＡ１レジスタに格納される。また、次述する演算処理後のＸ１ラインの画像データがＲ２１レジスタに格納された場合には、演算処理後のＸ１ラインのアドレスがＡ２１レジスタに格納される。
【００５４】
また、レジスタファイル２１０には、命令ＲＡＭ４１からのバッチロード命令の実行に応じてＤＭＡＣ４５あるいはＳＲＡＭ４６から、実行する画像処理に応じたデータが読み出され、各レジスタに格納される。例えば、ＤＭＡＣ４５から、バッチロード命令の実行に応じてＸ１ラインの画像処理に対応した２５６個のデータが読み出されてＲ１１レジスタに格納され、バッチロード命令の実行に応じてＸ２ラインの画像処理に対応した２５６個のデータが読み出されてＲ１２レジスタに格納される。以下同様にして、Ｘ１０ラインの画像処理に対応した２５６個のデータが読み出されてＲ２０レジスタに格納される。
【００５５】
演算器２２０は、命令ＲＡＭ４１からのバッチ演算命令に応じて、各レジスタに格納された画像データをバッチ処理する。例えば、命令ＲＡＭ４１からのバッチ演算命令が、Ｒ１レジスタに格納された画像データと、Ｒ１１レジスタに格納されたデータとを加算して、Ｒ２１レジスタに格納せよというバッチ演算命令であったとき、演算器２２０は次のように演算処理を実行する。
【００５６】
演算器２２０は、バッチ演算命令に基づいてＲ１レジスタの第１セルに格納された単位データと、Ｒ１１レジスタの第１セルに格納されたデータとを加算して、Ｒ２１レジスタの第１セルに格納する。次いで、Ｒ１レジスタの第２セルに格納された単位データと、Ｒ１１レジスタの第２セルに格納されたデータとを加算して、Ｒ２１レジスタの第２セルに格納する。以下同様に、Ｒ１レジスタの第ｎセルに格納された単位データと、Ｒ１１レジスタの第ｎセルに格納されたデータとを加算して、Ｒ２１レジスタの第ｎセルに格納する。この処理を１命令で第１セル〜第２５６セルまで実行する。
【００５７】
命令ＲＡＭ４１からの次のバッチ演算命令として、Ｒ２レジスタ（Ｘ２ライン）に格納された画像データに対する処理命令が出されると、演算器２２０は、Ｒ１レジスタに格納された画像データに対して行った処理と同様に演算処理を実行する。以降、バッチ演算を繰り返す場合は、例えばＲ３レジスタ〜Ｒ１０レジスタについて、同様の演算処理を実行する。
【００５８】
ここで、Ｒ１レジスタ〜Ｒ１０レジスタの第１セル〜第２５６セルには、それぞれＸ１ライン〜Ｘ１０ラインを形成する演算処理前の単位データが順に並んで格納される。また、レジスタファイル２１０を構成する各レジスタはいずれも単位マーチングメモリであり、第１セル〜第２５６セルに格納されたデータはデータの並び順を維持したまま順送り移動される。そのため、演算処理の実行時に各単位マーチングメモリを単純に順送り動作させることによって、第１セル〜第２５６セルに格納された単位データを順に演算器２２０に送り出し、演算処理を実行させることができる。演算処理後の単位データをＲ２１レジスタ〜Ｒ３０レジスタの第１セル〜第２５６セルに書き込むときについても同様であり、各単位マーチングメモリを順送り動作させて単位データを送り込むことにより、第１セル〜第２５６セルに単位データが順に並んで格納される。
【００５９】
演算器２２０による上記演算処理の進行に伴い、Ｒ１レジスタ〜Ｒ１０レジスタに格納された演算処理前の画像データ、およびＲ１１レジスタ〜Ｒ２０レジスタに格納されたデータは順次減少し、Ｒ２１レジスタ〜Ｒ３０レジスタに格納された演算処理後の画像データが順次増加する。ＤＳＰ４３は、演算器２２０による演算処理の進行と並行して、バッチストア命令を出すことにより、レジスタファイル２１０とデータメモリ２１との間で画像データのＤＭＡ転送を行わせる。
【００６０】
このような構成の画像処理装置２００においては、１つのバッチロード命令でＸ方向ライン１本分の２５６の単位データからなる画像データが各レジスタの第１セルから第２５６セルに格納され、１０のバッチロード命令でＸ１ラインからＸ１０の２５６０の単位データからなる画像データが、Ｒ１レジスタからＲ１０レジスタに格納される。演算器２２０では、１つのバッチ演算命令で２５６の単位データからなる１ライン分の画像データが演算処理され、１０のバッチ演算命令でＲ１レジスタ〜Ｒ１０レジスタに格納された１０ライン分の画像データが演算処理されて、Ｒ２１〜Ｒ３０に格納される。
【００６１】
画像データは、隣接するセルに格納される単位データが空間的に相互に関連性を有する（例えば隣接する画素により検出された）データの集合体であり、ストリームデータである。そのため、ランダムデータのように、各単位データに対して逐一アドレッシングを施して読み書きを行う必要がなく、アドレッシングやデータサーチ等に要する時間を排除することができる。
【００６２】
さらに、画像処理装置２００においては、演算器２２０が１本のＸ方向ライン分に相当する単位データ群（上記実施例では２５６の単位データ群）のロード・演算・ストアの各処理をそれぞれ１命令でバッチ処理する。１ライン分の単位データ群はデータの並び順を維持したまま順送り移動されるため、ロード時や演算処理の実行時、ストア時に単位マーチングメモリを単純に順送り動作させることによって、単位データ群を順にロードし、演算処理し、演算結果のデータ群を順に格納することができる。単位マーチングメモリにおける隣接するセル間のデータの送り移動、すなわち単位データの書き込みおよび読み出し動作は、基準クロックパルスに同期させて高速に行うことができる。さらに、１つのバッチ命令により、レジスタ１ライン分のロード、ストア、演算処理が実行されるため命令効率を大幅に高めることができる。
【００６３】
また、レジスタファイル２１０とデータメモリ２１とは、物理的に離れているため画像データのやりとりに時間がかかり、画像処理を高速化・高効率化する一つの障害になり得る。しかしながら、画像処理装置２００においては、レジスタファイル２１０とデータメモリ２１との間での画像データの転送が、演算器２２０において演算処理が実行されている期間に並行して、バックグラウンドで行われる。
【００６４】
従って、画像処理装置２００によれば、マーチングメモリの特長的な動作形態を活かし、高速・高効率で画像処理を実行することができる。
【００６５】
なお、以上では、説明簡明化のため、レジスタファイル２１０におけるＲ１〜Ｒ１０レジスタにＸ１〜Ｘ１０ラインの画像データが格納され、Ｒ１１〜Ｒ２０レジスタにＸ１〜Ｘ１０ラインの処理データが格納され、Ｒ２１〜Ｒ３０レジスタにＸ１〜Ｘ１０ラインの処理後の画像データが格納される構成を例示した。しかしながら、Ｒ１〜Ｒ３２レジスタは、その時の割り付けにより、各々任意ラインの画像データ、処理データ、処理後の画像データを格納することができ、処理に応じて空いているレジスタを割り付けて使用することができる。例えば、Ｒ８レジスタ及びＲ１３レジスタにＸ１ライン及びＸ２ラインの画像データが格納され、Ｒ２レジスタ及びＲ２５レジスタにＸ１ライン及びＸ２ラインの処理データが格納され、Ｒ５レジスタ及びＲ３２レジスタにＸ１ライン及びＸ２ラインの処理後の画像データが格納されるようにすることができる。
【００６６】
アドレスレジスタ２５０についても同様であり、Ａ１〜Ａ３２レジスタは、その時の割り付けにより、各々任意ラインの画像データのアドレス、処理後の画像データのアドレスを格納することができ、処理に応じて空いているレジスタを割り付けて使用することができる。例えば、Ｒ９レジスタに格納したＸ３ラインの画像データのアドレスがＡ２レジスタに格納され、Ｒ２２レジスタに格納したＸ３ラインの処理後のアドレスがＡ１１レジスタに格納されるようにすることができる。
【００６７】
次に、第２実施形態の画像処理装置について説明する。第２実施形態の画像処理装置は、データメモリ２１と、複数のＤＳＰ（デジタル信号プロセッサ）４３，４３，・・・，４３とを備え、データメモリ２１とＤＳＰ４３，４３，・・・，４３との間にマーチングメモリを利用した共有メモリ４４を設けて構成される。
【００６８】
本実施形態の画像処理装置４００について、図４を参照して説明する。図４は、画像処理装置４００における共有メモリ４４を主体として示すブロック図であり、データメモリ部２におけるメモリコントローラ２２や、ＤＳＰアレイ部４における命令ＲＡＭ４１、命令キャッシュ４２等の記載を省略している。
【００６９】
画像処理装置４００は、画像データを一時記憶するデータメモリ２１と、データメモリ２１から読み出した画像データに所定の情報処理を行うＤＳＰ４３と、共有メモリ４４とを備える。共有メモリ４４は、画像データ等を一時記憶するデータ記憶部４０１と、データ記憶部４０１に入出力される画像データ等の流れを制御するデータ制御部４０２とから構成される。
【００７０】
データ記憶部４０１は、画像データを一時記憶するＭＭアレイ４１０と、ＭＭアレイ（マーチングメモリアレイ）４１０に一時記憶された画像データの情報を一時保持するＭＭラベル管理コントローラ４２０とを有して構成される。データ制御部４０２は、データメモリ２１およびＤＳＰ４３，４３，・・・，４３とＭＭアレイ４１０との間に設けられたリード／ライト調整回路４３０と、リード／ライト調整回路４３０の作動を制御するリード／ライトシーケンサ４４０とを有して構成される。
【００７１】
ＭＭアレイ４１０は、複数のセル（記憶領域）が行方向に連接されたカラムにより形成される単位マーチングメモリを一つのメモリとし、これを複数並列に設けて構成される。すなわち、並列に設けられた単位マーチングメモリ４１１，４１２，４１３，・・・，４１Ｎが、ＭＭアレイ４１０におけるＣ１，Ｃ２，Ｃ３，・・・，ＣＮメモリを構成する。ＭＭアレイの容量は、デジタルカメラにより撮影される画像データのデータ容量に応じて設定され、例えば、行方向に２５６×ｎのセルを有する単位マーチングメモリを、列方向に２５６×ｍ個並列に設けて構成される。本実施形態では、各単位マーチングメモリのカラムの一端をデータの入出力ポートとした構成を例示する。
【００７２】
リード／ライト調整回路４３０は、ＭＭアレイ４１０とデータメモリ２１との間での画像データの読み出しや書き込み、ＭＭアレイ４１０とＤＳＰ４３，４３，・・・，４３との間での画像データの転送を行う際の、画像データの流れを調整する回路である。例示するリード／ライト調整回路４３０は、ＤＳＰ４３，４３，・・・，４３に対応して設けられたロード／ストアユニット４３１，４３１，・・・，４３１と、単位マーチングメモリ４１１，４１２，・・・，４１Ｎに対応する第１〜第Ｎレジスタが円環状に相互接続されたリングレジスタ４３３と、ロード／ストアユニット４３１とリングレジスタ４３３との接続をコントロールするポート接続コントローラ４３２とを有して構成される。
【００７３】
ロード／ストアユニット４３１は、一端がグローバルメモリ転送バス６８を介してＤＳＰ４３，４３，・・・，４３およびデータメモリ２１に接続され、他端がポート接続コントローラ４３２に接続される。リングレジスタ４３３は、第１〜第Ｎレジスタの一端が各々対応するＣ１〜ＣＮメモリの入出力ポートに接続され、他端がポート接続コントローラ４３２に接続される。
【００７４】
リード／ライトシーケンサ４４０は、画像処理装置４００で実行する画像処理の内容に応じて、リード／ライト調整回路４３０のロード／ストアユニット４３１、ポート接続コントローラ４３２、およびリングレジスタ４３３の作動を制御する。画像処理装置４００で実行する画像処理は既に公知の種々のものがあり、処理内容に応じてリード／ライトシーケンサ４４０が制御するリード／ライト調整回路４３０の制御形態（処理モード）も異なったものとなる。ここでは、（１）データメモリ２１に記憶された画像データをそのままＭＭアレイ４１０に一時記憶するコピーモード、（２）データメモリ２１に記憶された画像データの水平方向と垂直方向とを反転させるＸ−Ｙ変換モード、（３）データメモリ２１に記憶された画像データのデータ数を減少させる圧縮モードを、処理モードの代表例として説明する。
【００７５】
（１）コピーモード
コピーモードは、データメモリ２１に記憶された画像データを、そのままＭＭアレイ４１０に一時記憶するような処理モードである。コピーモードの場合に、リード／ライトシーケンサ４４０は、リード／ライト調整回路４３０を以下のように制御する。いま、第１のロード／ストアユニット４３１に、Ｘ１ライン〜Ｘ５ラインの画像データを読み出し、ＭＭアレイ４１０のＣ１メモリ〜Ｃ５メモリに一時記憶させる（書き込む）とする。
【００７６】
このとき、リード／ライトシーケンサ４４０は、まず第１のロード／ストアユニット４３１に、Ｘ１ラインのアドレスを指定してＸ方向ライン１本分の画像データを読み出させる。ポート接続コントローラ４３２には、第１のロード／ストアユニット４３１と、リングレジスタ４３３におけるＣ１メモリに対応したレジスタである第１レジスタとを接続させる。リングレジスタ４３３は、レジスタ間でのデータ移動を行わず、ポート接続コントローラ４３２から入力されたデータをそのメモリに出力する設定とする。これにより、データメモリ２１から読み出されたＸ１ラインの画像データは、第１のロード／ストアユニット４３１〜ポート接続コントローラ４３２〜リングレジスタ４３３の第１レジスタを通り、ＭＭアレイ４１０のＣ１メモリに一時記憶される。
【００７７】
次いで、リード／ライトシーケンサ４４０は、第１のロード／ストアユニット４３１に、Ｘ２ラインのアドレスを指定してＸ方向ライン１本分の画像データを読み出させる。ポート接続コントローラ４３２には、第１のロード／ストアユニット４３１と、リングレジスタ４３３の第２レジスタとを接続させる。リングレジスタ４３３はレジスタ間でのデータ移動を行わない設定を維持する。これにより、データメモリ２１から読み出されたＸ２ラインの画像データが、第１のロード／ストアユニット４３１〜ポート接続コントローラ４３２〜リングレジスタ４３３の第２レジスタを通り、ＭＭアレイ４１０のＣ２メモリに一時記憶される。Ｘ３ライン〜Ｘ５ラインについても同様であり、ポート接続コントローラ４３２の接続設定を順次切り替えることにより、Ｘ３ライン〜Ｘ５ラインの画像データが、ＭＭアレイ４１０のＣ３メモリ〜Ｃ５メモリに一時記憶される。
【００７８】
ＭＭラベル管理コントローラ４２０には、ＭＭアレイ４１０のＣ１メモリ〜Ｃ５メモリに一時記憶された画像データのアドレス情報がラベルとして一時記憶される。例えば、Ｃ１メモリに一時記憶された画像データは、データメモリ２１に記憶された原画像データにおけるＸ１ラインの画像データである旨のラベルが一時記憶される。Ｃ２メモリ〜Ｃ５メモリについても同様である。
【００７９】
なお、ＭＭアレイ４１０のＣ１〜ＣＮメモリには、任意ラインの画像データを一時記憶させることができる。例えば、Ｃ３メモリにＸ１ラインの画像データ、Ｃ６メモリにＸ２ラインの画像データを一時記憶させるようにすることができる。
【００８０】
以上は、データメモリ２１に記憶された画像データをＭＭアレイ４１０に一時記憶する場合について説明したが、ＭＭアレイ４１０に一時記憶された画像データを、ＤＳＰ４３に転送するとき、あるいはデータメモリ２１に書き込むときについても同様である。すなわち、リード／ライトシーケンサ４４０は、読み出すべきＭＭアレイ４１０のメモリと、ＤＳＰ４３への転送を行うロード／ストアユニット４３１との接続を順次切り換えて、所定範囲の画像データをＤＳＰ４３に転送する。
【００８１】
（２）Ｘ−Ｙ変換モード
Ｘ−Ｙ変換モードは、データメモリ２１に記憶された画像データにおける水平方向（Ｘ方向）と垂直方向（Ｙ方向）とを反転させてＭＭアレイ４１０に一時記憶するようなる処理モードである。Ｘ−Ｙ変換モードの場合、リード／ライトシーケンサ４４０は、リード／ライト調整回路４３０を以下のように制御する。いま、第１のロード／ストアユニット４３１に、Ｘ１ライン〜Ｘ５ラインの画像データを読み出し、ＭＭアレイ４１０にＹ１ライン〜Ｙ５ラインとして一時記憶させる場合を説明する。
【００８２】
このとき、リード／ライトシーケンサ４４０は、まず第１のロード／ストアユニット４３１に、Ｘ１ラインのアドレスを指定してＸ方向イン１本分の画像データを読み出させる。ポート接続コントローラ４３２には、第１のロード／ストアユニット４３１と、リングレジスタ４３３における第１レジスタとを接続させる。リングレジスタ４３３については、Ｘ１ラインを構成する単位データが入力されるごとに、レジスタ間でデータを送り移動させるように設定する。
【００８３】
図５は、１本のＸ方向ラインが４つの単位データで構成される場合のリングレジスタ４３３の作用を示している。このとき、データメモリ２１から読み出されたＸ１ラインの４つの単位データは、リングレジスタ４３３により順次データが移動され、Ｘ１ラインの第１単位データがＣ４メモリに対応する第４レジスタに、第２単位データがＣ３メモリに対応する第３レジスタに、第３単位データがＣ２メモリに対応する第２レジスタに、第４単位データがＣ１メモリに対応する第１レジスタに移動される。そして、Ｘ方向ライン１本分の画像データがリングレジスタ４３３の第４レジスタ〜第１レジスタに格納されたのち、各レジスタに格納された単位データがＭＭアレイ４１０に書き込まれる。これにより、Ｘ１ラインがＹ１ラインにＸ−Ｙ変換される。
【００８４】
次いで、リード／ライトシーケンサ４４０は、第１のロード／ストアユニット４３１に、Ｘ２ラインのアドレスを指定してＸ方向ライン１本分の画像データを読み出させる。ポート接続コントローラ４３２、リングレジスタ４３３の設定は同一である。データメモリ２１から読み出されたＸ２ラインの４つの単位データは、リングレジスタ４３３により順次データが移動され、Ｘ２ラインの第１単位データが第４レジスタに、第２単位データが第３レジスタに、第３単位データが第２レジスタに、第４単位データが第１レジスタに移動される。そして、Ｘ方向ライン１本分の画像データがリングレジスタ４３３の第４レジスタ〜第１レジスタに格納されたのち、各レジスタに格納された単位データがＭＭアレイ４１０に書き込まれる。これにより、Ｘ２ラインがＹ２ラインにＸ−Ｙ変換される。このとき、先にＣ４メモリ〜Ｃ１メモリの第１セルに一時記憶されていたＹ１ラインの各単位データは、Ｙ２ラインの各単位データの書き込み動作とともに第２セルに送り移動される。
【００８５】
Ｘ３ライン〜Ｘ５ラインついても同様にしてＸ−Ｙ変換され、Ｙ３ライン〜Ｙ５ラインとしてＭＭアレイ４１０に一時記憶される。
【００８６】
ＭＭラベル管理コントローラ４２０には、ＭＭアレイ４１０のＣ１メモリ〜Ｃ４メモリに一時記憶された画像データの情報がラベルとして一時記憶される。例えば、Ｃ１メモリに一時記憶された画像データは、データメモリ２１に記憶された原画像データにおけるＹ４ラインに相当する画像データである旨のラベルが一時記憶される。Ｃ２メモリ〜Ｃ４メモリについても同様である。
【００８７】
以上は、データメモリ２１に記憶された画像データを、Ｘ−Ｙ変換してＭＭアレイ４１０に一時記憶する場合について説明したが、ＭＭアレイ４１０に一時記憶された画像データを、ＤＳＰ４３に転送するとき、あるいはデータメモリ２１に書き込むときにＸ−Ｙ変換する場合も同様である。例えば、上記のようにしてＣ１メモリ〜Ｃ４メモリにＸ−Ｙ変換された画像データが一時記憶されている場合に、Ｃ１メモリ〜Ｃ４メモリを同時に送り動作させてリングレジスタ４３３の各レジスタに単位データを格納し、この４つの単位データをデータ移動させて一つのロード／ストアユニット４３１から出力させれば、Ｙ方向ラインをＸ方向ラインにＸ−Ｙ変換してＤＳＰ４３等に転送することができる。
【００８８】
（３）圧縮モード
圧縮モードは、データメモリに記憶された画像データを間引いてデータ数を減少させた画像データをＭＭアレイ４１０に一時記憶するような処理モードである。圧縮モードの場合、リード／ライトシーケンサ４４０は、リード／ライト調整回路４３０を以下のように制御する。いま、第１のロード／ストアユニット４３１に、Ｘ１ライン〜Ｘ５ラインの画像データを読み出し、ＭＭアレイ４１０にデータ数を１／４に圧縮した画像データを一時記憶させる場合を説明する。
【００８９】
このとき、リード／ライトシーケンサ４４０は、まず第１のロード／ストアユニット４３１に、Ｘ１ラインのアドレスを指定してＸ方向ライン１本分の画像データを読み出させる。ポート接続コントローラ４３２には、第１のロード／ストアユニット４３１と、リングレジスタ４３３における第１レジスタとを接続させる。リングレジスタ４３３に対しては、ポート接続コントローラ４３２からリングレジスタ４３３に入力されるＸ１ラインの単位データが４ｎ−２〜４ｎ（ｎは１以上の整数）の場合には、単位データが入力されるごとに、レジスタ間でデータを送り移動させるように設定する。
【００９０】
具体的には、Ｘ１ラインを構成する単位データが入力されたときに、１〜４番目（ｎ＝１）の単位データについて、前述したＸ−Ｙ変換モードと同様の動作を行わせる。すなわち、２〜４番目の単位データが入力されたときに、リングレジスタ４３３によりレジスタ間で順次データが移動され、１番目の単位データが第４レジスタに、２番目の単位データが第３レジスタに、３番目の単位データが第２レジスタに、４番目の単位データが第１レジスタに移動される。そして、これら４つの単位データがリングレジスタ４３３の第４レジスタ〜第１レジスタに格納されたのち、各レジスタに格納された単位データがＭＭアレイ４１０に書き込まれる。これによりＸ１ラインにおける、１番目の単位データがＣ４メモリ、２番目の単位データがＣ３メモリ、３番目の単位データがＣ２メモリ、４番目の単位データがＣ１メモリに一時保持される。
【００９１】
５〜８番目（ｎ＝２）の単位データが入力されたときも同様に、６〜８番目の単位データが入力されたときに、リングレジスタ４３３によりレジスタ間で順次データが移動され、５番目の単位データが第４レジスタに、６番目の単位データが第３レジスタに、７番目の単位データが第２レジスタに、８番目の単位データが第１レジスタに移動される。そして、これら４つの単位データがリングレジスタ４３３の第４レジスタ〜第１レジスタに格納されたのち、各レジスタに格納された単位データがＭＭアレイ４１０に書き込まれる。これによりＸ１ラインにおける、１番目と５番目の単位データがＣ４メモリ、２番目と６番目の単位データがＣ３メモリ、３番目と７番目の単位データがＣ２メモリ、４番目と８番目の単位データがＣ１メモリに一時保持される。
【００９２】
このような動作をＸ１ライン１本分について実行すると、ＭＭアレイ４１０のＣ４メモリにＸ１ラインにおける１，５，９，・・・，４ｍ番目の単位データ、Ｃ３メモリにＸ１ラインにおける２，６，１０，・・・，（４ｍ＋１）番目の単位データ、Ｃ２メモリにＸ１ラインにおける３，７，１１，・・・，（４ｍ＋２）番目の単位データ、Ｃ１メモリにＸ１ラインにおける４，８，１２，・・・，（４ｍ＋３）番目の単位データが一時記憶される。Ｃ１メモリ〜Ｃ４メモリに一時記憶された画像データは、いずれもＸ１ラインの画像データであるが、データを４つ飛びに間引いてデータ数を１／４に減少させた圧縮画像データである。
【００９３】
Ｘ２ライン以降のＸ方向ラインについても、Ｘ１ラインと同様に同期して同時に実行させることができる。リード／ライトシーケンサ４４０は、例えば第２のロード／ストアユニット４３１に、Ｘ２ラインのアドレスを指定してＸ方向ライン１本分の画像データを読み出させる。ポート接続コントローラ４３２には、第２のロード／ストアユニット４３１と、リングレジスタ４３３における第５レジスタとを接続させる。リングレジスタ４３３に対しては、ポート接続コントローラ４３２からリングレジスタ４３３に入力されるＸ２ラインの単位データが４ｎ−２〜４ｎ（ｎは１以上の整数）の場合には、Ｘ２ラインを構成する単位データが入力されるごとに、レジスタ間でデータを送り移動させるように設定する。
【００９４】
このような設定により、Ｘ２ラインにおける１〜４番目の単位データは、１番目の単位データが第８レジスタに、２番目の単位データが第７レジスタに、３番目の単位データが第６レジスタに、４番目の単位データが第５レジスタに移動される。そして、これら４つの単位データがリングレジスタ４３３の第８レジスタ〜第５レジスタに格納されたのち、各レジスタに格納された単位データがＭＭアレイ４１０に書き込まれる。これによりＸ２ラインにおける、１番目の単位データがＣ８メモリ、２番目の単位データがＣ７メモリ、３番目の単位データがＣ６メモリ、４番目の単位データがＣ５メモリに一時保持される。
【００９５】
５〜８番目（ｎ＝２）の単位データが入力されたときも同様に処理され、５番目の単位データが第８レジスタに、６番目の単位データが第７レジスタに、７番目の単位データが第６レジスタに、８番目の単位データが第５レジスタに移動される。そして、これら４つの単位データがリングレジスタ４３３の第８レジスタ〜第５レジスタに格納されたのち、各レジスタに格納された単位データがＭＭアレイ４１０に書き込まれる。これによりＸ２ラインにおける、１番目と５番目の単位データがＣ８メモリ、２番目と６番目の単位データがＣ７メモリ、３番目と７番目の単位データがＣ６メモリ、４番目と８番目の単位データがＣ５メモリに一時保持される。
【００９６】
このような動作をＸ２ライン１本分について実行すると、ＭＭアレイ４１０のＣ８メモリにＸ２ラインにおける１，５，９，・・・，４ｍ番目の単位データ、Ｃ７メモリにＸ２ラインにおける２，６，１０，・・・，（４ｍ＋１）番目の単位データ、Ｃ６メモリにＸ２ラインにおける３，７，１１，・・・，（４ｍ＋２）番目の単位データ、Ｃ５メモリにＸ２ラインにおける４，８，１２，・・・，（４ｍ＋３）番目の単位データが一時記憶される。Ｃ５メモリ〜Ｃ８メモリに一時記憶された画像データは、いずれもＸ２ラインの画像データであるが、データを４つ飛びに間引いてデータ数を１／４に減少させた圧縮画像データである。
【００９７】
リード／ライトシーケンサ４４０は、Ｘ３ライン〜Ｘ５ラインについても上記Ｘ１ラインおよびＸ２ラインと同様の設定を行い、同様の処理を行わせる。ＭＭアレイ４１０には、Ｃ１２メモリ，Ｃ１６メモリ，Ｃ２０メモリにＸ３，Ｘ４，Ｘ５ラインにおける１，５，９，・・・，４ｍ番目の単位データが一時記憶され、Ｃ１１メモリ，Ｃ１５メモリ，Ｃ１９メモリにＸ３，Ｘ４，Ｘ５ラインにおける２，６，１０，・・・，４ｍ＋１番目の単位データが一時記憶される。
【００９８】
以上の動作により、ＭＭアレイ４１０には、Ｃ１〜Ｃ４メモリに各々データ数を１／４に減少させたＸ１ラインの圧縮画像データ、Ｃ５〜Ｃ８メモリに各々データ数を１／４に減少させたＸ２ラインの圧縮画像データ、Ｃ９〜Ｃ１２メモリに各々データ数を１／４に減少させたＸ３ラインの圧縮画像データ、・・・、Ｃ１７〜Ｃ２０メモリに各々データ数を１／４に減少させたＸ５ラインの圧縮画像データが一時記憶される。
【００９９】
そして、ポート接続コントローラ４３２により、第１のロード／ストアユニット４３１とＣ１メモリ、第２のロード／ストアユニット４３１とＣ５メモリ、第３のロード／ストアユニット４３１とＣ９メモリ、・・・、第５のロード／ストアユニット４３１とＣ１７メモリを接続する設定とし、Ｃ１，Ｃ５，Ｃ９，・・・，Ｃ１７メモリの単位マーチングメモリを順送り動作させて、例えばデータメモリ２１に書き込むことにより、原画像データに対してデータ数を１／４に減少させた圧縮画像データを作成することができる。
【０１００】
なお、本実施形態では、複数並列に並べられた単位マーチングメモリのカラムの一端を入出力ポートとしたが、一端を入力ポート、他端を出力ポートとしてもよく、あるいは両端をともに入出力ポートとしてもよい。これらの場合に、ロード／ストアユニット４３１およびポート接続コントローラ４３２は、ＭＭアレイ４１０を挟んで両側に設けられるが、リングレジスタ４３３は、いずれか一方としてもよい。
【０１０１】
さて、以上では、マーチングメモリを画像処理装置に適用した場合について、いくつかの適用例を示して説明してきた。しかし、マーチングメモリはこれらの適用例に限らず、画像処理装置における他の部位や、処理形態が異なる他の情報処理装置等にも広く適用することが可能である。画像処理装置における他の部位への適用について、図６を参照して簡潔に説明する。図６は画像処理装置における信号の処理系統を大まかにまとめたブロック図である。
【０１０２】
図示する信号処理系は、画像入力系５１０、画像処理系５２０、画像出力系５３０、画像処理装置に接続されるＤＲＡＭ５４０、外部メモリ（ＭＭ）５５０、ストレージ５６０、および外部処理系５７０などから構成される。
【０１０３】
画像処理系５２０は、ＣＰＵ５２１、ＧＰＵ（Graphics  Processing  Unit）５２２、コーデック５２３、ＤＲＡＭコントローラ５２４、外部メモリコントローラ５２５、ストレージ用ＩＰ５２６、外部処理系用ＩＰ５２７などからなり、これらがバスで接続されたＳｏＣ（System  on  Chip）構成になっている。なお、図１を参照して説明した信号処理系との対比においては、概ね、ＣＰＵ５２１がＣＰＵコア部３、ＧＰＵ５２２がＤＳＰアレイ部４、ＤＲＡＭ５４０がＤＲＡＭ２１に相当する。
【０１０４】
このような信号処理系において、画像入力系５１０、画像処理系５２０におけるＣＰＵ５２１および外部処理系用ＩＰ５２７、画像出力系５３０、外部メモリ５５０、ストレージ５６０、外部処理系５７０などにマーチングメモリを好適に適用することができる。すなわち、画像入力系５１０においては、撮像素子により撮影された画像データの一時記憶に、画像出力系５３０においては、画像処理系５２０から出力された画像データの一時記憶に、マーチングメモリを好適に適用することができる。画像処理系５２０におけるＣＰＵ５２１においては、例えば、顔認識や動く被写体のトラッキング等を行う際の画像データの一時記憶にマーチングメモリを好適に適用することができる。外部メモリ５５０やストレージ５６０、外部処理系５７０等についても同様であり、画像データの一時記憶にマーチングメモリを好適に適用することができる。
【０１０５】
本実施形態のアプリケーションは、複数の単位データからなるストリームデータ（例えば、実施形態における画像データ）を一時記憶するデータメモリと、演算器を有しデータメモリから読み出したストリームデータに所定の情報処理を行うプロセッサ（例えば、実施形態におけるデジタル信号プロセッサ）とを備えた情報処理装置である。そのうえで、本実施形態の情報処理装置は、プロセッサのレジスタファイルとしてマーチングメモリを備える。マーチングメモリは、複数の記憶領域が連設されたカラムを有し入力された複数の単位データをカラムの一端から順次隣接する記憶領域に送り移動させて各記憶領域に一時記憶する単位マーチングメモリが複数設けられて構成される。そして、マーチングメモリは、入力された複数の単位データを第１の単位マーチングメモリの各記憶領域に一時記憶し、プロセッサは、バッチ演算処理命令に基づいて、第１の単位マーチングメモリの各記憶領域に一時記憶された複数の単位データを、演算器により順次演算処理して処理後の各単位データを第２の単位マーチングメモリの各記憶領域に一時記憶させるように構成される。
【０１０６】
ここで、本実施形態における「ストリームデータ」とは、複数の単位データからなるデータ群であり、隣接する単位データが、空間的および／または時間的に相互に所定の関連性をもっているようなデータの集合体をいう。具体的には、デジタルカメラやデジタルビデオカメラ等で撮影された静止画や動画の画像データ、これらのカメラやＩＣレコーダ等により録音された音声データ、各種測定器により測定された時間的・空間的な測定データなどがストリームデータの例として示される。
【０１０７】
例えば、デジタルカメラによって撮影された静止画の画像データは、撮像素子を構成する各画素の検出信号に基づいて生成された単位データの集合体(データ群)である。このデータ群を構成する単位データは、データ間に関連性がないランダムデータではなく、所定範囲で空間的な関連性を有するデータである。この空間的な関連性に基づいて、隣接する単位データ間では、明度や彩度等の特徴量についてある一定の関連性を有し、例えば特徴量が滑らかに変化している。また、静止画が連写された場合の画像データや動画の画像データでは、１フレーム内で空間的に隣接する単位データについて上記のような空間的な関係を有することに加えて、前後のフレーム間で時間的な関連性を有している。ＩＣレコーダ等により録音された音声データも同様であり、周波数や強度が時間軸方向に滑らかに変化する単位データの集合体である。
【０１０８】
また、本実施形態の情報処理装置は、データメモリと複数のプロセッサとの間に、共有メモリとしてマーチングメモリを備える。マーチングメモリは、複数の記憶領域が連設されたカラムを有し入力された複数の単位データをカラムの一端から順次隣接する記憶領域に送り移動させて各記憶領域に一時記憶する単位マーチングメモリが複数並列に設けられて構成される。
【０１０９】
このとき、前記マーチングメモリにおける各単位マーチングメモリの入力ポートおよび／または出力ポートには、入力された複数の単位データの配列および／または出力する複数の単位データの配列を変更する配列変更手段（例えば、実施形態におけるリングレジスタ）を設けて情報処理装置を構成することができる。
【０１１０】
また、前記配列変更手段は、各前記単位マーチングメモリの入力ポートおよび／または出力ポートに接続されたレジスタ群からなるリングレジスタと、このリングレジスタの作動を制御するシーケンサ（例えば、実施形態におけるリード／ライトシーケンサ）とを有し、シーケンサが、情報処理装置が実行する情報処理のモードに応じてリングレジスタの作動を制御し、複数の単位データの配列を変更するように構成しても良い。
【０１１１】
ここで、情報処理のモードは、情報処理装置が適用されるシステムに応じて適宜に設定することができる。例えば、情報処理装置をデジタルカメラに適用する場合の代表例として、画像圧縮モードや垂直−水平変換モード、デコンボリューションモードなどが例示される。画像圧縮モードについても既に公知の複数のモードが考えられるが、例えば、データメモリに記憶された全画素の画像データ(データ容量が大きいストリームデータ)から、画素数を間引くことにより圧縮した画像データ(データ容量を縮小したストリームデータ)に変関するようなモードが例示される。
【０１１２】
また、本実施形態の情報処理装置は、プロセッサのバッファメモリとしてマーチングメモリを備える。マーチングメモリは、複数の記憶領域が連設されたカラムを有し入力された複数の単位データをカラムの一端から順次隣接する記憶領域に送り移動させて各記憶領域に一時記憶する単位マーチングメモリが複数並列に設けられて構成される。
【０１１３】
本実施形態における他の態様は、以上いずれかに記載の情報処理装置と、撮像素子を有し前記情報処理装置にストリームデータである画像データを入力する画像入力系と、情報処理装置により処理された画像データを出力する画像出力系とを備えたデジタルカメラである。
【０１１４】
本実施形態によれば、マーチングメモリは複数の記憶領域（セル）が連設されたカラムを単位とし、入力ポートに入力された単位データが順次隣接する記憶領域に送り移動されて各セルに一時記憶される。このとき、単位データの入力および移動速度は、例えばＣＰＵの基準クロックに対応させることもでき、高速の読み取り動作が可能である。また、本発明の態様の情報処理装置が対象とするデータ群は、複数の単位データからなるストリームデータであり、隣接するデータ間で所定の関連性を有するデータ群である。すなわち、読み込む単位データごとに逐一アドレッシングが必要なランダムデータと異なり、マーチングメモリの動作形態に合致したデータ群なのである。
【０１１５】
以上説明したように、本発明が対象とするデータ群はストリームデータであり、隣接するデータ間で所定の関連性を有している。そのため、ランダムデータのように、各単位データに対して逐一アドレッシングを施して読み書きを行う必要がなく、アドレッシングやデータサーチ等に要する時間を排除することができる。また、マーチングメモリは複数のセルが連設されたカラムを単位とし、セルに入力された単位データが順次送り移動されて各セルに一時記憶される。このとき、単位データの入力および移動速度は、ＣＰＵの基準クロック等に対応させることもでき、高速で書き込みおよび読み出し動作させることができる。従って、本発明によれば、マーチングメモリの特長的な動作形態を活かした好適なアプリケーションを提供することができる。例えば、本発明の態様の情報処理装置および情報処理装置を備えたデジタルカメラによれば、マーチングメモリの特長的な動作形態を活かした好適なアプリケーションを提供することができる。
【符号の説明】
【０１１６】
２１  データメモリ
４３  デジタル信号プロセッサ（ＤＳＰ）
４４  共有メモリ
１００  第１実施形態における第１の態様の画像処理装置
１２０  演算器
１５０  バッファメモリ
１５１  ロードバッファ（マーチングメモリ）
１５２  ストアバッファ（マーチングメモリ）
２００  第１実施形態における第２の態様の画像処理装置
２１０  レジスタファイル（マーチングメモリ）
２１１，２１２，２１３，・・・，２１Ｎ  単位マーチングメモリ
２２０  演算器
４００  第２実施形態の画像処理装置
４１０  ＭＭアレイ（マーチングメモリ）
４１１，４１２，４１３，・・・，４１Ｎ  単位マーチングメモリ
４３３  リングレジスタ（配列変更手段）
４４０  リード／ライトシーケンサ（シーケンサ）
５１０  画像入力系
５２０  画像処理系
５３０  画像出力系
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の単位データからなるストリームデータを一時記憶するデータメモリと、
演算器を有し前記データメモリから読み出したストリームデータに所定の情報処理を行うプロセッサとを備えた情報処理装置であって、
前記プロセッサのレジスタファイルとしてマーチングメモリを備え、
前記マーチングメモリは、複数の記憶領域が連設されたカラムを有し入力された複数の単位データを前記カラムの一端から順次隣接する記憶領域に送り移動させて各記憶領域に一時記憶する単位マーチングメモリが複数並列に設けられて構成され、
前記マーチングメモリは、入力された複数の単位データを第１の前記単位マーチングメモリの各記憶領域に一時記憶し、
前記プロセッサは、バッチ演算処理命令に基づいて、前記第１の単位マーチングメモリの各記憶領域に一時記憶された前記複数の単位データを、前記演算器により順次演算処理して処理後の各単位データを第２の前記単位マーチングメモリの各記憶領域に一時記憶させる情報処理装置。
【請求項２】
前記データメモリと前記プロセッサとの間に、共有メモリとして第２のマーチングメモリを備え、
前記第２のマーチングメモリは、入力された前記複数の単位データを一時記憶する請求項１に記載の情報処理装置。
【請求項３】
前記プロセッサのバッファメモリとして第３のマーチングメモリを備える請求項１又は２に記載の情報処理装置。
【請求項４】
前記マーチングメモリにおける各前記単位マーチングメモリの入力ポートおよび／または出力ポートには、入力された複数の単位データの配列および／または出力する複数の単位データの配列を変更する配列変更手段が設けられ、
前記配列変更手段は、各前記単位マーチングメモリの入力ポートおよび／または出力ポートに接続されたレジスタ群からなるリングレジスタと、前記リングレジスタの作動を制御するシーケンサとを有する
請求項１から３のいずれか一項に記載の情報処理装置。
【請求項５】
複数の単位データからなるストリームデータを一時記憶するデータメモリと、
演算器を有し前記データメモリから読み出したストリームデータに所定の情報処理を行う複数のプロセッサとを備えた情報処理装置であって、
前記データメモリと前記複数のプロセッサとの間に、共有メモリとしてマーチングメモリを備え、
前記マーチングメモリは、複数の記憶領域が連設されたカラムを有し、入力された複数の単位データを前記カラムの一端から順次隣接する記憶領域に送り移動させて各記憶領域に一時記憶する単位マーチングメモリが複数並列に設けられて構成される情報処理装置。
【請求項６】
前記マーチングメモリにおける各前記単位マーチングメモリの入力ポートおよび／または出力ポートには、入力された複数の単位データの配列および／または出力する複数の単位データの配列を変更する配列変更手段が設けられる請求項５に記載の情報処理装置。
【請求項７】
前記配列変更手段は、各前記単位マーチングメモリの入力ポートおよび／または出力ポートに接続されたレジスタ群からなるリングレジスタと、前記リングレジスタの作動を制御するシーケンサとを有し、
前記シーケンサは、情報処理装置が実行する情報処理のモードに応じて前記リングレジスタの作動を制御し、前記複数の単位データの配列を変更する請求項６に記載の情報処理装置。
【請求項８】
複数の単位データからなるストリームデータを一時記憶するデータメモリと、
演算器を有し前記データメモリから読み出したストリームデータに所定の情報処理を行う複数のプロセッサとを備えた情報処理装置であって、
前記プロセッサのバッファメモリとしてマーチングメモリを備え、
前記マーチングメモリは、複数の記憶領域が連設されたカラムを有し、入力された複数の単位データを前記カラムの一端から順次隣接する記憶領域に送り移動させて各記憶領域に一時記憶する単位マーチングメモリが複数並列に設けられて構成される情報処理装置。
【請求項９】
前記マーチングメモリにおける各前記単位マーチングメモリの入力ポートおよび／または出力ポートには、入力された複数の単位データの配列および／または出力する複数の単位データの配列を変更する配列変更手段が設けられ、
前記配列変更手段は、各前記単位マーチングメモリの入力ポートおよび／または出力ポートに接続されたレジスタ群からなるリングレジスタと、前記リングレジスタの作動を制御するシーケンサとを有する
請求項８に記載の情報処理装置。
【請求項１０】
請求項１から９のいずれか一項に記載の情報処理装置と、
撮像素子を有し前記情報処理装置に前記ストリームデータである画像データを入力する画像入力系と、
前記情報処理装置により処理された画像データを出力する画像出力系と
を備えたデジタルカメラ。
【請求項１１】
複数の単位データからなるストリームデータに所定の情報処理を行うプロセッサであって、
マーチングメモリで構成されたレジスタファイルと、
前記レジスタファイルに保持されたデータを用いて演算処理を実行する演算器と、を備え、
前記マーチングメモリは、複数の記憶領域が連設されたカラムを有し、入力された複数の単位データを前記カラムの一端から順次隣接する記憶領域に送り移動させて各記憶領域に一時記憶する単位マーチングメモリが複数並列に設けられて構成されるプロセッサ。
【請求項１２】
マーチングメモリで構成されたバッファメモリを備える請求項１１に記載のプロセッサ。
【請求項１３】
前記マーチングメモリにおける各前記単位マーチングメモリの入力ポートおよび／または出力ポートには、入力された複数の単位データの配列および／または出力する複数の単位データの配列を変更する配列変更手段が設けられ、
前記配列変更手段は、各前記単位マーチングメモリの入力ポートおよび／または出力ポートに接続されたレジスタ群からなるリングレジスタと、前記リングレジスタの作動を制御するシーケンサとを有する
請求項１１又は１２に記載のプロセッサ。
【国際調査報告】
2015125960.tif 000009
2015125960.tif 000010
2015125960.tif 000011
2015125960.tif 000012