データ処理装置および並列演算装置
【課題】並列演算器が効率的に演算処理を行なうことが可能なデータ処理装置を提供すること。
【解決手段】並列演算モジュールは、複数のPE13と、複数のPE13に対応して設けられ、複数のPE13が演算を行なう際に用いられるデータを記憶するAバンク14およびBバンク15と、複数のPE13に対応して設けられ、外部メモリとの間でデータ転送が行なわれるIOバンク16とを含む。選択回路17は、Bバンク15とIOバンク16とのいずれかを選択的に複数のPE13に接続する。選択回路18は、外部メモリと複数のPE13とのいずれかを選択的にIOバンク16に接続する。したがって、複数のPE13に演算処理を行なわせるのと並行して、外部メモリからIOバンク16にデータ転送を行なわせることができ、PE13が効率的に演算処理を行なうことが可能となる。
【解決手段】並列演算モジュールは、複数のPE13と、複数のPE13に対応して設けられ、複数のPE13が演算を行なう際に用いられるデータを記憶するAバンク14およびBバンク15と、複数のPE13に対応して設けられ、外部メモリとの間でデータ転送が行なわれるIOバンク16とを含む。選択回路17は、Bバンク15とIOバンク16とのいずれかを選択的に複数のPE13に接続する。選択回路18は、外部メモリと複数のPE13とのいずれかを選択的にIOバンク16に接続する。したがって、複数のPE13に演算処理を行なわせるのと並行して、外部メモリからIOバンク16にデータ転送を行なわせることができ、PE13が効率的に演算処理を行なうことが可能となる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、信号処理アプリケーションなどを高速に処理する技術に関し、特に、単一命令複数データ流(SIMD:Single Instruction Multiple Data stream)の演算方式を用いて大量のデータを高速に処理するデータ処理装置および並列演算装置に関する。
【背景技術】
【0002】
近年、デジタル民生機器の普及に伴い、音声や画像といった大量のデータを高速に処理するデジタル信号処理の重要性が高まってきている。このようなデジタル信号処理においては、一般に専用の半導体装置としてDSP(Digital Signal Processor)が用いられることが多い。しかしながら、信号処理アプリケーション、特に画像処理アプリケーションにおいては、処理対象のデータ量が非常に大きいため、DSPでも処理能力が十分ではない。
【0003】
これに対して、複数の演算器を並列に動作させることによって高い信号処理性能を実現する並列プロセッサ技術の開発が進んでいる。このような専用プロセッサをCPU(Central Processing Unit)に付随するアクセラレータとして用いれば、組み込み機器に搭載されるLSIのように低消費電力、低コストが要求される場合においても高い信号処理性能を実現することができる。これに関連する技術として、下記の特許文献1〜2に開示された発明がある。
【0004】
特許文献1は、SIMD演算を効率的に行うことができる半導体集積回路を提供することを目的とする。半導体集積回路は、複数個のデータを並列演算可能なSIMD演算部と、SIMD演算部に接続可能なデータバッファと、データバッファとの間のデータ転送制御を行うデータ転送制御部とを有する。データ転送制御部は、データバッファから読み出された複数個のデータに対するSIMD演算部による演算動作に並行してデータバッファに次の演算に用いるデータを転送制御可能とされる。SIMD演算部による演算動作に並行してデータバッファには以降の演算に用いるデータが転送されるから、SIMD演算部はデータバッファへの演算データの内部転送動作によって演算動作が中断されず、間段なく演算動作を行うことができ、SIMD演算を効率的に行うことができる。
【0005】
特許文献2は、比較的長い時間を要する外部メモリへのアクセスが頻繁に行われる場合、SIMD型演算は、外部メモリのアクセスによる時間ロスにより十分に性能が上がらないといった問題点を解決することを目的とする。SIMD型演算部と外部メモリとの間に、2面の内蔵メモリを設ける。命令制御器により、一方の内蔵メモリがSIMD型演算部に接続されて演算が実行される間、他方の内蔵メモリは、データ転送制御器を介して外部メモリに接続され、次の演算で必要となるパックデータを外部メモリから読み出したり、あるいは、既にSIMD型演算部で実行された演算結果であるパックデータを外部メモリに書き込んだりするように動作させる。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2002−358288号公報
【特許文献2】特開平11−312085号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
上述のような複数の演算器を並列に動作させる専用プロセッサ、たとえばSIMD方式の並列プロセッサを用いて画像処理を行なう場合、後述のように並列プロセッサ内部の演算器アレイ(PE:Processor Element)は、PEに接続されるデータバッファにアクセスしながら演算処理を行なう。そのため、外部メモリからデータバッファへのデータ転送と、PEによるデータバッファへのアクセスとが効率的に行なわれる必要があり、そのような機構が必要となる。
【0008】
また、画像データの中から2次元の画像データを切り出して演算処理を行なう場合には、PEに接続されるデータバッファに切り出した画像データを効率的に配置するための機構が必要となる。
【0009】
本発明は、上記問題点を解決するためになされたものであり、その目的は、並列演算器が効率的に演算処理を行なうことが可能なデータ処理装置および並列演算装置を提供することである。
【課題を解決するための手段】
【0010】
本発明の一実施例によれば、CPUと並列演算モジュールとがシステムバスによって接続され、CPUからの要求に応じて並列演算モジュールが演算を行なうデータ処理装置が提供される。並列演算モジュールは、複数の並列演算器と、複数の並列演算器に対応して設けられ、複数の並列演算器が演算を行なう際に用いられるデータを記憶するAバンクおよびBバンクと、複数の並列演算器に対応して設けられ、外部メモリとの間でデータ転送が行なわれるIOバンクと、BバンクとIOバンクとのいずれかを選択的に複数の並列演算器に接続する第1の選択回路と、外部メモリと複数の並列演算器とのいずれかを選択的にIOバンクに接続する第2の選択回路とを含む。
【発明の効果】
【0011】
この実施例によれば、第2の選択回路が、外部メモリと複数の並列演算器とのいずれかを選択的にIOバンクに接続するので、複数の並列演算器に演算処理を行なわせるのと並行して、外部メモリからIOバンクにデータ転送を行なわせることができ、並列演算器が効率的に演算処理を行なうことが可能となる。
【図面の簡単な説明】
【0012】
【図1】SIMD方式の並列演算モジュールを用いたデータ処理装置の一例を示す図である。
【図2】図1に示すデータ処理装置を用いた汎用的な画像処理の一例を示す図である。
【図3】図1に示すデータ処理装置を用いた画像処理のデータフローの一例を示す図である。
【図4】並列演算モジュール100のデータバッファ114および115のアドレス割り付けの一例を示す図である。
【図5】並列演算モジュール100内部でPE113、データバッファ114および115が演算制御回路112から制御信号を受けて、どのように並列演算を行なうかを説明するための図である。
【図6】本発明の実施の形態におけるデータ処理装置の並列演算モジュールの構成例を示す図である。
【図7】図6に示す並列演算モジュール内部において演算動作とデータ入出力動作とが並列に行なわれる場合を説明するための図である。
【図8】バンク間コピーの動作を説明するための図である。
【図9】図7に示す並列動作および図8に示すバンク間コピーを用いた本発明の実施の形態における並列演算モジュールの動作シーケンスを説明するための図である。
【図10】本発明の実施の形態におけるデータ処理装置によって1ライン分の画像データを処理したときの処理時間を説明するための図である。
【図11】バンク間コピーを用いたROI(Region Of Interest)データの再構成を説明するための図である。
【図12】図1に示すデータ処理装置によるROI処理の一例を示す図である。
【図13】特徴点とその周辺領域とを切り出してデータバッファ114または115に配置するところを示す図である。
【図14】バンク間コピーによるデータアラインメントを説明するための図である。
【図15】バンク間コピーによる効率的なデータアラインメントを説明するための図である。
【図16】本発明の実施の形態の変形例におけるデータ処理装置の並列演算モジュールの構成例を示す図である。
【図17】本発明におけるデータ処理装置の適用システム例である。
【発明を実施するための形態】
【0013】
図1は、SIMD方式の並列演算モジュールを用いたデータ処理装置の一例を示す図である。このデータ処理装置は、並列演算モジュール100と、CPU101と、DMA(Direct Memory Access)コントローラ102と、メモリインタフェース103と、外部メモリ104とを含み、これらがシステムバス105を介して接続される。
【0014】
外部メモリ104は、CPU101によって実行されるプログラムや、プログラムの実行の際に参照されるデータなどを記憶する。また、外部メモリ104は、画像データなどの並列演算モジュール100によって演算されるデータを記憶する。図1において、外部メモリ104は外付けのメモリとして記載しているが、データ処理装置内部に搭載するようにしても良い。
【0015】
メモリインタフェース103は、CPU101およびDMAコントローラ102からのアクセス要求に応じて外部メモリ104に対する命令コードのフェッチおよびデータの読出し/書込みを制御する。
【0016】
CPU101は、図示しない内蔵メモリまたはメモリインタフェース103を介して外部メモリ104から命令コードをフェッチして実行することにより、データ処理装置全体の制御を行なう。
【0017】
DMAコントローラ102は、CPU101からのDMA転送要求に応じてデータ処理装置内のDMA転送を制御する。たとえば、DMAコントローラ102は、外部メモリ104と並列演算モジュール100内のデータバッファ114または115との間のDMA転送を実行する。
【0018】
並列演算モジュール100は、入出力制御回路111と、演算制御回路112と、エントリ数に対応した個数のPE113と、PE113のそれぞれに対応して設けられるSRAM(以下、データバッファと呼ぶ。)114および115とを含む。
【0019】
データバッファ114および115は、PE113の処理対象データ、たとえば画像データをサンプリングされたデータの配列として一時的に記憶する。PE113のそれぞれは、データレジスタ114および115に記憶された配列データの各要素に対して演算を行なうことにより並列処理を実現する。このPE113はエントリ数に対応して設けられており、実現する並列度に応じて性能を最適化することができる。ここで、演算器アレイはSIMD方式で演算を行なっており、全てのPE113は同じ動作をするものとする。なお、PE113、データレジスタ114および115の動作の詳細は後述する。
【0020】
入出力制御回路111は、システムバス105を介してデータの入出力を制御する。入出力制御回路111は、システムバス105を介して信号処理要求を受けると、その信号処理要求を演算制御回路112に出力する。また、入出力制御回路111は、演算制御回路112の制御によって信号処理結果を受けると、その信号処理結果をシステムバス105を介して出力する。
【0021】
演算制御回路112は、入出力制御回路111から信号処理要求を受けると、図示しない内蔵の命令メモリに格納されたマイクロコードに対応してPE113、データバッファ114および115に制御信号を出力しながら演算を順次PE113に行なわせ、信号処理要求に対応した信号処理を行なわせる。そして、演算制御回路112は、データバッファ114および115に記憶される信号処理結果を入出力制御回路111に出力させる。
【0022】
図2は、図1に示すデータ処理装置を用いた汎用的な画像処理の一例を示す図である。図2においては、汎用的な画像処理として、たとえばフィルタ処理のような入力画像の全ての画素に対して同一の局所演算処理を並列に施す場合を示している。このフィルタ処理は、画像データ中のエッジを浮かび出させるための処理、画像をぼやけさせるための処理などである。
【0023】
図2は、画素Bnに対してフィルタ処理を施すときの処理を示しており、画素Bnの周辺画素の画素値を用いて処理を行なう。周辺の画素An−1、Cn−1、An+1およびCn+1の画素値を加算して係数P0を乗算する。また、画素Bn−1、An、Bn+1およびCnの画素値を加算して係数P1を乗算する。また、画素Bnの画素値に係数P2を乗算する。そして、これらの値を加算することによって、フィルタ処理後の画素値Bn outを得る。
【0024】
図3は、図1に示すデータ処理装置を用いた画像処理のデータフローの一例を示す図である。このような画像処理においては、外部メモリ104に入力画像データが格納されており、この画像データが1列単位で並列演算モジュール100のデータバッファ114または115にDMA転送される。
【0025】
データバッファ114および115には入力データ領域、中間データ領域および出力データ領域が設けられており、PE113は入力データ領域に格納された1列単位の画像データに対して並列に演算処理を実行する。PE113は、演算処理中に中間データの保存が必要な場合には、データバッファ114または115の中間データ領域に中間データを保存しながら処理を行なう。演算結果はデータバッファ114または115の出力データ領域に格納され、DMA転送によって外部メモリ104に出力画像データとして転送される。
【0026】
図3に示すような外部メモリ104とデータバッファ114または115との間のDMA転送時や、並列演算モジュール100内における演算時には、並列演算モジュール100内部のデータバッファ114および115のアドレスを指定する必要がある。
【0027】
図4は、並列演算モジュール100のデータバッファ114および115のアドレス割り付けの一例を示す図である。PE113のそれぞれに対して、左側に512ビット(ビットアドレス512〜1023)分のデータバッファ114が接続され、右側に512ビット(ビットアドレス0〜511)分のデータバッファ115が接続されている。なお、PEと1024ビットのデータバッファとを1単位として、「エントリ」と呼ぶことにする。したがって、図4においては、1024エントリ(エントリアドレス0〜1023)分のアドレス空間が示されていることになる。
【0028】
このように、ビットアドレスとエントリアドレスとを組み合わせることによって、DMA転送時や演算時に対象データを指し示すことができる。
【0029】
図5は、並列演算モジュール100内部でPE113、データバッファ114および115が演算制御回路112から制御信号を受けて、どのように並列演算を行なうかを説明するための図である。PE113は、ビットアドレスで指定されたデータバッファ114および115内の斜線を施した演算対象データを用いて演算を行ない、演算結果をビットアドレスで指定されたデータバッファ115内の斜線を施した領域に格納する。このとき、SIMD演算により全てのエントリが同時動作するため、エントリアドレスを指定する必要はない。
【0030】
以上説明した並列演算器を用いた画像処理技術に関し、本発明の実施の形態におけるデータ処理装置について以下に詳細に説明する。
【0031】
図6は、本発明の実施の形態におけるデータ処理装置の並列演算モジュールの構成例を示す図である。この並列演算モジュールは、入出力制御回路11と、演算制御回路12と、エントリ数に対応する個数のPE13と、データバッファ14〜16と、選択回路17および18とを含む。なお、データ処理装置の全体的な構成は、図1に示すデータ処理装置の構成と同様である。
【0032】
データバッファ14〜16は、それぞれ独立したバンク化された構成を有している。データバッファ14にはビットアドレス512〜1023が割り当てられており、この領域をAバンク(第1のバンク)と呼ぶ。データバッファ15にはビットアドレス256〜511が割り当てられており、この領域をBバンク(第2のバンク)と呼ぶ。また、データバッファ16にはビットアドレス0〜255が割り当てられており、この領域をIOバンク(第3のバンク)と呼ぶ。
【0033】
図1の構成と比較すると、例えば、データバッファ114の領域がAバンク14、データバッファ115の領域がBバンク15とCバンク16とにそれぞれ相当する。
【0034】
PE13のそれぞれは、データレジスタ14〜16に記憶された画像データの各要素に対して演算を行なうことにより並列処理を実現する。このPE13はエントリ数に対応して設けられており、実現する並列度に応じて性能を最適化することができる。
【0035】
入出力制御回路11は、システムバス105を介してデータの入出力を制御する。入出力制御回路11は、システムバス105を介して信号処理要求を受けると、その信号処理要求を演算制御回路12に出力する。また、入出力制御回路11は、演算制御回路12の制御によって信号処理結果を受けると、その信号処理結果をシステムバス105を介して出力する。
【0036】
演算制御回路12は、入出力制御回路11から信号処理要求を受けると、図示しない内蔵の命令メモリに格納されたマイクロコードに対応してPE13、データバッファ14〜16および選択回路17〜18に制御信号を出力しながら演算を順次PE13に行なわせ、信号処理要求に対応した信号処理を行なわせる。このとき、並行してデータ入出力の制御も行なう。
【0037】
選択回路17(第1の選択手段)は、演算制御回路12から出力される制御信号によってデータの経路を変更することができる。選択回路17は、Bバンク15との接続を選択することにより、PE13はBバンク15に記憶されるデータを参照したり、演算後のデータをBバンク15に格納したりすることができる。また、選択回路17は、選択回路18を介してIOバンク16との接続を選択することにより、PE13はIOバンク16に記憶されるデータを参照したり、演算後のデータをIOバンク16に格納したりすることができる。
【0038】
選択回路18(第2の選択手段)は、演算制御回路12から出力される制御信号によってデータの経路を変更することができる。選択回路18は、入出力制御回路11との接続を選択することにより、入出力制御回路11を介して外部メモリ104とIOバンク16との間のデータ転送を行なうことができる。また、選択回路18は、選択回路17を介してPE13との接続を選択することにより、PE13はIOバンク16に記憶されるデータを参照したり、演算後のデータをIOバンク16に格納したりすることができる。
【0039】
図7は、図6に示す並列演算モジュール内部において演算動作とデータ入出力動作とが並列に行なわれる場合を説明するための図である。選択回路17は、Bバンク15との接続を選択しており、PE13はAバンク14およびBバンク15からデータを読み出して演算を行ない、演算結果をAバンク14またはBバンク15に書き込む。
【0040】
選択回路18は、入出力制御回路11との接続を選択しており、入出力制御回路11を介して外部メモリ104とIOバンク16との間でデータ入出力が行なわれる。このように、Aバンク14およびBバンク15を用いた演算動作中に、IOバンク16を用いたデータ転送が並列に行なえる。
【0041】
図8は、バンク間コピーの動作を説明するための図である。選択回路17および18は、PE13とIOバンク16との接続を選択しており、PE13は、次の演算を行なうためにIOバンク16に記憶されるデータをAバンク14またはBバンク15にコピーする。
【0042】
図8に示すようにPE13がデータコピーを行なうことにより、外部メモリ104からIOバンク16に転送されたデータをAバンク14またはBバンク15に転送したり、Aバンク14またはBバンク15に記憶された演算処理後のデータをIOバンク16に転送したりすることができる。
【0043】
図9は、図7に示す並列動作および図8に示すバンク間コピーを用いた本発明の実施の形態における並列演算モジュールの動作シーケンスを説明するための図である。まず、T1において、演算制御回路12は、選択回路18を切り替えて入出力制御回路11とIOバンク16とを接続させ、外部メモリ104からIOバンク16への演算に必要なデータのDMA転送が行なわれる。
【0044】
演算制御回路12は、PE13による演算とDMA転送との両方の停止を確認すると、T2において、選択回路17および18を切り替えてPE13とIOバンク16とを接続させ、PE13を制御してIOバンク16からAバンク14またはBバンク15へのバンク間コピーを行なう。
【0045】
T3において、演算制御回路12は、選択回路17を切り替えてPE13とBバンク15とを接続させ、PE13を制御してAバンク14およびBバンク15を用いた演算処理を行わせる。これと並行して、演算制御回路12は、選択回路18を切り替えて入出力制御回路11とIOバンク16とを接続させ、外部メモリ104からIOバンク16への次の演算に必要なデータのDMA転送が行なわれる。
【0046】
演算制御回路12は、PE13による演算とDMA転送との両方の停止を確認すると、T4において、選択回路17および18を切り替えてPE13とIOバンク16とを接続させ、PE13を制御してAバンク14またはBバンク15からIOバンク16への演算結果のバンク間コピーを行なう。
【0047】
T5において、演算制御回路12は、既にIOバンク16にDMA転送されている演算対象のデータをAバンク14またはBバンク15にバンク間コピーを行なう。
【0048】
T6において、演算制御回路12は、選択回路17を切り替えてPE13とBバンク15とを接続させ、PE13を制御してAバンク14およびBバンク15を用いた演算処理を行わせる。これと並行して、演算制御回路12は、選択回路18を切り替えて入出力制御回路11とIOバンク16とを接続させ、IOバンク16から外部メモリ104への演算結果のDMA転送、および外部メモリ104からIOバンク16への次の演算に必要なデータのDMA転送が行なわれる。
【0049】
演算制御回路12は、PE13による演算とDMA転送との両方の停止を確認すると、T7において、選択回路17および18を切り替えてPE13とIOバンク16とを接続させ、PE13を制御してAバンク14またはBバンク15からIOバンク16への演算結果のバンク間コピーを行なう。
【0050】
T8において、演算制御回路12は、既にIOバンク16にDMA転送されている演算対象のデータをAバンク14またはBバンク15にバンク間コピーを行なう。
【0051】
T9において、演算制御回路12は、選択回路17を切り替えてPE13とBバンク15とを接続させ、PE13を制御してAバンク14およびBバンク15を用いた演算処理を行わせる。これと並行して、演算制御回路12は、選択回路18を切り替えて入出力制御回路11とIOバンク16とを接続させ、IOバンク16から外部メモリ104への演算結果のDMA転送、および外部メモリ104からIOバンク16への次の演算に必要なデータのDMA転送が行なわれる。
【0052】
上述のT4〜T9の動作が必要回数分だけ繰り返され、画像データに対する演算処理が行われる。
【0053】
このように並列演算モジュールを動作させた場合、IOバンク16とAバンク14またはBバンク15との間のバンク間コピーは演算制御回路12の制御によってPE13により行なわれることになる。すなわち、T2,T4,T5,T7およびT8に示す動作は演算プログラムによって行なわれる。このデータコピーの実行にはあるサイクル数だけ必要となる。
【0054】
しかし、例えば、演算器(PE13)の個数を非常に多い超並列構成とすることで大量のデータを一括処理して大容量の画像データの高速処理を実現する場合には、バンク間の演算バス幅がシステムバスなどのバンド幅よりも非常に広いため、Aバンク14およびBバンク15を用いた演算処理のサイクル数に比べると無視できるほどの小さいサイクル数でIOバンクからAバンク14あるいはBバンク15へデータコピーを行なうことができる。このように、演算器(PE13)の個数が非常に多い超並列構成では本発明による高速化の効果が非常に大きいといえる。
【0055】
図10は、本発明の実施の形態におけるデータ処理装置によって1ライン分の画像データを処理したときの処理時間を説明するための図である。図10に示すように、nライン目の処理において、外部メモリ104からのデータ転送動作と外部メモリ104へのデータ転送動作とが直列的に行なわれ、これと並行して並列演算器(PE13)における演算動作が行なわれる。したがって、nライン目の処理に要する時間は、外部メモリ104からのデータ転送時間tWRと外部メモリ104へのデータ転送時間tRDとの合計、または並列演算器における演算時間tEXとなり、高速化を図れることが分かる。なお、並列演算器における演算時間には、バンク間コピーに要する時間が含まれる。
【0056】
図11は、バンク間コピーを用いたROI(Region Of Interest)データの再構成を説明するための図である。図12は、ROI処理の一例を示す図である。図12においては、処理画像内の特徴点とその周辺領域とを、たとえば64×64画素で切り出し、これら画素データに対して演算を行なうことにより、特徴量を64次元ベクトルとして出力する。このとき、切り出した画像データを並列演算モジュール内のデータバッファ114または115に転送すると、データバッファにはライン状に配置されてしまう。
【0057】
図13は、特徴点とその周辺領域とを切り出してデータバッファ114または115に配置するところを示す図である。図13(a)は、外部メモリ104に記憶される入力画像の特徴点とその周辺領域とを示している。
【0058】
図13(b)は、DMA転送によって特徴点とその周辺領域の画素を切り出してデータバッファ114または115に転送したところを示している。図13(b)に示すように、画像データがデータバッファ114または115にライン状に配置されてしまう。
【0059】
図13(c)は、切り出した画像データをデータバッファ114または115に2次元に配置したところを示している。図13(c)に示すように、データバッファ114または115に画像データが2次元に配置される機構が必要とされる。
【0060】
図13を用いて説明したように、外部メモリ104とIOバンク16との間でDMA転送を行なうと、特徴点とその周辺領域とがIOバンク16にライン状に配置されてしまう。演算制御回路12はPE13を制御して、IOバンク16にライン状に配置された画像データを、Aバンク14に2次元に配置されるようにデータコピーを行わせる。
【0061】
たとえば、切り出した画像データが64×64画素の場合には、特定の64個のPE13によって演算処理を行える。したがって、他のPE13は他の特徴点とその周辺領域とを切り出した画像データの演算処理を並列に行なうことができる。
【0062】
図14は、バンク間コピーによるデータアラインメントを説明するための図である。DMA転送可能なサイズ、すなわちシステムバスのバス幅が64ビットの場合、64ビット単位でしかDMA転送ができない。そのため、任意のサイズでの画像データのDMA転送ができない。
【0063】
図14に示すように、転送したいROI領域のサイズが64ビット未満の場合には、網掛けで示す不要な画像データを含んだ形でDMA転送が行なわれ、IOバンク16にライン状に配置される。演算制御回路12はPE13を制御して、IOバンク16にライン状に配置された画像データの中からROI領域に対応する画像データのみを、Aバンク14またはBバンク15に2次元に配置されるようにデータコピーを行わせる。
【0064】
このように、2次元状にデータをAバンク14(または、Bバンク15)に配置することができれば、並列演算器内でも画像を2次元形状を維持したまま演算することができ、隣接ピクセル間の処理を高速に行なえるなどの利点がある。図14のようなデータ配置状態で並列演算を行なうことも可能であるが、並列演算器を最大限に利用するためにはAバンク14で示されるデータバッファのうちデータが配置されていない残りの領域も利用した方が演算の効率を高めることができる。
【0065】
図15は、バンク間コピーによる効率的なデータアラインメントを説明するための図である。具体的には、図15に示すような複数のROI領域をI/Oバンク16に転送しておき、Aバンク14にコピーを行なう際に、2次元的な整列を行ないながらコピーを行なえば、並列度を生かしながら効率の高い演算を行なうことができる。
【0066】
以上説明したように、本実施の形態におけるデータ処理装置によれば、IOバンク16のみを外部メモリ104との間でデータ転送可能とし、PE13がAバンク14およびBバンク15を用いて演算処理を行なうのと並行して、IOバンク16と外部メモリ104との間でデータ転送を行なうようにした。したがって、並列演算器を用いた画像処理の高速化を図ることが可能となった。
【0067】
またさらに、IOバンク16とAバンク14およびBバンク15との間のデータ転送を、PE13を用いて行なうため、バンク間におけるデータ転送についても高速で処理することが可能となった。
【0068】
また、IOバンク16に転送された画像データをAバンク14またはBバンク15にバンク間コピーを行なった後、Aバンク14およびBバンク15を用いた演算処理を行なうようにしたので、任意のサイズのROIデータをデータバッファに2次元で配置することができ、並列演算器が効率的に画像処理を行なうことが可能となった。
【0069】
また、DMA転送の制限によって不要な画像データがIOバンク16に配置された場合でも、PE13を用いたバンク間コピーによってROIデータのみをAバンク14またはBバンク15に配置することができ、並列演算器が効率的に画像処理を行なうことが可能となった。
【0070】
(変形例)
図16は、本発明の実施の形態の変形例におけるデータ処理装置の並列演算モジュールの構成例を示す図である。なお以下で、図8に示すデータ処理装置と同じ構成部分には同一の符号を付し、その詳細な説明は繰り返さない。
【0071】
この並列演算モジュールは、入出力制御回路11と、演算制御回路12と、エントリ数に対応する個数のPE13と、データバッファ14〜15および162と、選択回路17および18とを含む。なお、データ処理装置の全体的な構成は、図1に示すデータ処理装置の構成と同様である。
【0072】
画像処理においては、例えば隣接するフレームの差分を演算するなど、近い範囲に存在する画像データや一旦処理されたデータを以後の演算において再利用することが多く、演算ごとにすべての画像データを外部メモリ104からデータ転送する必要はない。複数の演算処理で用いるデータは複数の演算処理の間、Aバンク14やBバンク15においてデータを保持する。
【0073】
そのため、差分を演算する処理のような場合には、演算処理間のデータ転送は新たに必要となる画像データや演算結果の転送に限られ、データ転送に用いるIOバンク162はAバンク14、Bバンク15に比べて小さな容量で実現できる。
【0074】
以上説明したように、本実施の形態の変形例におけるデータ処理装置によれば、IOバンク162をAバンク14、Bバンク15に比べて小さな容量で実現することが可能となり、チップ面積の小さなデータ処理装置を提供することが可能となった。
【0075】
(適用例)
図17は、本発明におけるデータ処理装置の適用システム例である。なお以下で、図1に示すデータ処理装置と同じ構成部分には同一の符号を付し、その詳細な説明は繰り返さない。
【0076】
ストリーム処理部200は、MPEG(Moving Picture Experts Group)などの画像コーデックの1処理であるストリーム処理を行う。映像処理部201は、ストリーム処理部200と連携して画像コーデックの符号化や復号化を行う。音声処理部202は、音声コーデックの符号化や復号化を行う。
【0077】
PCIインタフェース203は、システムバス105と標準バスであるPCIバス204とを接続する。PCIバス204には、ハードディスクなどの各種PCIデバイス205が接続される。
【0078】
表示制御部206は、表示デバイスであるディスプレイ207に接続され、ディスプレイ207上の画像表示を制御する。
【0079】
DMAコントローラ102には、DMAバス105を介して、各種IOデバイスが接続される。IOデバイスには、カメラなどの映像入出力を行う映像入出力部209、ストリームを入出力するストリーム入出力部210、音声の入出力を行う音声入出力部211などがある。
【0080】
本発明の並列演算モジュールは、例えばストリーム処理部200に配置されて画像処理を行う。このようなシステムは、映像や音声の入出力を有し、映像や音声処理を行うシステムであり、例えば携帯電話やカメラなどがある。
【0081】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0082】
11,111 入出力制御回路、12,112 演算制御回路、13,113 PE、14〜16,162,114,115 データバッファ、17,18 選択回路、100 並列演算モジュール、101 CPU、102 DMAコントローラ、103 メモリインタフェース、104 外部メモリ、105 システムバス。
【技術分野】
【0001】
本発明は、信号処理アプリケーションなどを高速に処理する技術に関し、特に、単一命令複数データ流(SIMD:Single Instruction Multiple Data stream)の演算方式を用いて大量のデータを高速に処理するデータ処理装置および並列演算装置に関する。
【背景技術】
【0002】
近年、デジタル民生機器の普及に伴い、音声や画像といった大量のデータを高速に処理するデジタル信号処理の重要性が高まってきている。このようなデジタル信号処理においては、一般に専用の半導体装置としてDSP(Digital Signal Processor)が用いられることが多い。しかしながら、信号処理アプリケーション、特に画像処理アプリケーションにおいては、処理対象のデータ量が非常に大きいため、DSPでも処理能力が十分ではない。
【0003】
これに対して、複数の演算器を並列に動作させることによって高い信号処理性能を実現する並列プロセッサ技術の開発が進んでいる。このような専用プロセッサをCPU(Central Processing Unit)に付随するアクセラレータとして用いれば、組み込み機器に搭載されるLSIのように低消費電力、低コストが要求される場合においても高い信号処理性能を実現することができる。これに関連する技術として、下記の特許文献1〜2に開示された発明がある。
【0004】
特許文献1は、SIMD演算を効率的に行うことができる半導体集積回路を提供することを目的とする。半導体集積回路は、複数個のデータを並列演算可能なSIMD演算部と、SIMD演算部に接続可能なデータバッファと、データバッファとの間のデータ転送制御を行うデータ転送制御部とを有する。データ転送制御部は、データバッファから読み出された複数個のデータに対するSIMD演算部による演算動作に並行してデータバッファに次の演算に用いるデータを転送制御可能とされる。SIMD演算部による演算動作に並行してデータバッファには以降の演算に用いるデータが転送されるから、SIMD演算部はデータバッファへの演算データの内部転送動作によって演算動作が中断されず、間段なく演算動作を行うことができ、SIMD演算を効率的に行うことができる。
【0005】
特許文献2は、比較的長い時間を要する外部メモリへのアクセスが頻繁に行われる場合、SIMD型演算は、外部メモリのアクセスによる時間ロスにより十分に性能が上がらないといった問題点を解決することを目的とする。SIMD型演算部と外部メモリとの間に、2面の内蔵メモリを設ける。命令制御器により、一方の内蔵メモリがSIMD型演算部に接続されて演算が実行される間、他方の内蔵メモリは、データ転送制御器を介して外部メモリに接続され、次の演算で必要となるパックデータを外部メモリから読み出したり、あるいは、既にSIMD型演算部で実行された演算結果であるパックデータを外部メモリに書き込んだりするように動作させる。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2002−358288号公報
【特許文献2】特開平11−312085号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
上述のような複数の演算器を並列に動作させる専用プロセッサ、たとえばSIMD方式の並列プロセッサを用いて画像処理を行なう場合、後述のように並列プロセッサ内部の演算器アレイ(PE:Processor Element)は、PEに接続されるデータバッファにアクセスしながら演算処理を行なう。そのため、外部メモリからデータバッファへのデータ転送と、PEによるデータバッファへのアクセスとが効率的に行なわれる必要があり、そのような機構が必要となる。
【0008】
また、画像データの中から2次元の画像データを切り出して演算処理を行なう場合には、PEに接続されるデータバッファに切り出した画像データを効率的に配置するための機構が必要となる。
【0009】
本発明は、上記問題点を解決するためになされたものであり、その目的は、並列演算器が効率的に演算処理を行なうことが可能なデータ処理装置および並列演算装置を提供することである。
【課題を解決するための手段】
【0010】
本発明の一実施例によれば、CPUと並列演算モジュールとがシステムバスによって接続され、CPUからの要求に応じて並列演算モジュールが演算を行なうデータ処理装置が提供される。並列演算モジュールは、複数の並列演算器と、複数の並列演算器に対応して設けられ、複数の並列演算器が演算を行なう際に用いられるデータを記憶するAバンクおよびBバンクと、複数の並列演算器に対応して設けられ、外部メモリとの間でデータ転送が行なわれるIOバンクと、BバンクとIOバンクとのいずれかを選択的に複数の並列演算器に接続する第1の選択回路と、外部メモリと複数の並列演算器とのいずれかを選択的にIOバンクに接続する第2の選択回路とを含む。
【発明の効果】
【0011】
この実施例によれば、第2の選択回路が、外部メモリと複数の並列演算器とのいずれかを選択的にIOバンクに接続するので、複数の並列演算器に演算処理を行なわせるのと並行して、外部メモリからIOバンクにデータ転送を行なわせることができ、並列演算器が効率的に演算処理を行なうことが可能となる。
【図面の簡単な説明】
【0012】
【図1】SIMD方式の並列演算モジュールを用いたデータ処理装置の一例を示す図である。
【図2】図1に示すデータ処理装置を用いた汎用的な画像処理の一例を示す図である。
【図3】図1に示すデータ処理装置を用いた画像処理のデータフローの一例を示す図である。
【図4】並列演算モジュール100のデータバッファ114および115のアドレス割り付けの一例を示す図である。
【図5】並列演算モジュール100内部でPE113、データバッファ114および115が演算制御回路112から制御信号を受けて、どのように並列演算を行なうかを説明するための図である。
【図6】本発明の実施の形態におけるデータ処理装置の並列演算モジュールの構成例を示す図である。
【図7】図6に示す並列演算モジュール内部において演算動作とデータ入出力動作とが並列に行なわれる場合を説明するための図である。
【図8】バンク間コピーの動作を説明するための図である。
【図9】図7に示す並列動作および図8に示すバンク間コピーを用いた本発明の実施の形態における並列演算モジュールの動作シーケンスを説明するための図である。
【図10】本発明の実施の形態におけるデータ処理装置によって1ライン分の画像データを処理したときの処理時間を説明するための図である。
【図11】バンク間コピーを用いたROI(Region Of Interest)データの再構成を説明するための図である。
【図12】図1に示すデータ処理装置によるROI処理の一例を示す図である。
【図13】特徴点とその周辺領域とを切り出してデータバッファ114または115に配置するところを示す図である。
【図14】バンク間コピーによるデータアラインメントを説明するための図である。
【図15】バンク間コピーによる効率的なデータアラインメントを説明するための図である。
【図16】本発明の実施の形態の変形例におけるデータ処理装置の並列演算モジュールの構成例を示す図である。
【図17】本発明におけるデータ処理装置の適用システム例である。
【発明を実施するための形態】
【0013】
図1は、SIMD方式の並列演算モジュールを用いたデータ処理装置の一例を示す図である。このデータ処理装置は、並列演算モジュール100と、CPU101と、DMA(Direct Memory Access)コントローラ102と、メモリインタフェース103と、外部メモリ104とを含み、これらがシステムバス105を介して接続される。
【0014】
外部メモリ104は、CPU101によって実行されるプログラムや、プログラムの実行の際に参照されるデータなどを記憶する。また、外部メモリ104は、画像データなどの並列演算モジュール100によって演算されるデータを記憶する。図1において、外部メモリ104は外付けのメモリとして記載しているが、データ処理装置内部に搭載するようにしても良い。
【0015】
メモリインタフェース103は、CPU101およびDMAコントローラ102からのアクセス要求に応じて外部メモリ104に対する命令コードのフェッチおよびデータの読出し/書込みを制御する。
【0016】
CPU101は、図示しない内蔵メモリまたはメモリインタフェース103を介して外部メモリ104から命令コードをフェッチして実行することにより、データ処理装置全体の制御を行なう。
【0017】
DMAコントローラ102は、CPU101からのDMA転送要求に応じてデータ処理装置内のDMA転送を制御する。たとえば、DMAコントローラ102は、外部メモリ104と並列演算モジュール100内のデータバッファ114または115との間のDMA転送を実行する。
【0018】
並列演算モジュール100は、入出力制御回路111と、演算制御回路112と、エントリ数に対応した個数のPE113と、PE113のそれぞれに対応して設けられるSRAM(以下、データバッファと呼ぶ。)114および115とを含む。
【0019】
データバッファ114および115は、PE113の処理対象データ、たとえば画像データをサンプリングされたデータの配列として一時的に記憶する。PE113のそれぞれは、データレジスタ114および115に記憶された配列データの各要素に対して演算を行なうことにより並列処理を実現する。このPE113はエントリ数に対応して設けられており、実現する並列度に応じて性能を最適化することができる。ここで、演算器アレイはSIMD方式で演算を行なっており、全てのPE113は同じ動作をするものとする。なお、PE113、データレジスタ114および115の動作の詳細は後述する。
【0020】
入出力制御回路111は、システムバス105を介してデータの入出力を制御する。入出力制御回路111は、システムバス105を介して信号処理要求を受けると、その信号処理要求を演算制御回路112に出力する。また、入出力制御回路111は、演算制御回路112の制御によって信号処理結果を受けると、その信号処理結果をシステムバス105を介して出力する。
【0021】
演算制御回路112は、入出力制御回路111から信号処理要求を受けると、図示しない内蔵の命令メモリに格納されたマイクロコードに対応してPE113、データバッファ114および115に制御信号を出力しながら演算を順次PE113に行なわせ、信号処理要求に対応した信号処理を行なわせる。そして、演算制御回路112は、データバッファ114および115に記憶される信号処理結果を入出力制御回路111に出力させる。
【0022】
図2は、図1に示すデータ処理装置を用いた汎用的な画像処理の一例を示す図である。図2においては、汎用的な画像処理として、たとえばフィルタ処理のような入力画像の全ての画素に対して同一の局所演算処理を並列に施す場合を示している。このフィルタ処理は、画像データ中のエッジを浮かび出させるための処理、画像をぼやけさせるための処理などである。
【0023】
図2は、画素Bnに対してフィルタ処理を施すときの処理を示しており、画素Bnの周辺画素の画素値を用いて処理を行なう。周辺の画素An−1、Cn−1、An+1およびCn+1の画素値を加算して係数P0を乗算する。また、画素Bn−1、An、Bn+1およびCnの画素値を加算して係数P1を乗算する。また、画素Bnの画素値に係数P2を乗算する。そして、これらの値を加算することによって、フィルタ処理後の画素値Bn outを得る。
【0024】
図3は、図1に示すデータ処理装置を用いた画像処理のデータフローの一例を示す図である。このような画像処理においては、外部メモリ104に入力画像データが格納されており、この画像データが1列単位で並列演算モジュール100のデータバッファ114または115にDMA転送される。
【0025】
データバッファ114および115には入力データ領域、中間データ領域および出力データ領域が設けられており、PE113は入力データ領域に格納された1列単位の画像データに対して並列に演算処理を実行する。PE113は、演算処理中に中間データの保存が必要な場合には、データバッファ114または115の中間データ領域に中間データを保存しながら処理を行なう。演算結果はデータバッファ114または115の出力データ領域に格納され、DMA転送によって外部メモリ104に出力画像データとして転送される。
【0026】
図3に示すような外部メモリ104とデータバッファ114または115との間のDMA転送時や、並列演算モジュール100内における演算時には、並列演算モジュール100内部のデータバッファ114および115のアドレスを指定する必要がある。
【0027】
図4は、並列演算モジュール100のデータバッファ114および115のアドレス割り付けの一例を示す図である。PE113のそれぞれに対して、左側に512ビット(ビットアドレス512〜1023)分のデータバッファ114が接続され、右側に512ビット(ビットアドレス0〜511)分のデータバッファ115が接続されている。なお、PEと1024ビットのデータバッファとを1単位として、「エントリ」と呼ぶことにする。したがって、図4においては、1024エントリ(エントリアドレス0〜1023)分のアドレス空間が示されていることになる。
【0028】
このように、ビットアドレスとエントリアドレスとを組み合わせることによって、DMA転送時や演算時に対象データを指し示すことができる。
【0029】
図5は、並列演算モジュール100内部でPE113、データバッファ114および115が演算制御回路112から制御信号を受けて、どのように並列演算を行なうかを説明するための図である。PE113は、ビットアドレスで指定されたデータバッファ114および115内の斜線を施した演算対象データを用いて演算を行ない、演算結果をビットアドレスで指定されたデータバッファ115内の斜線を施した領域に格納する。このとき、SIMD演算により全てのエントリが同時動作するため、エントリアドレスを指定する必要はない。
【0030】
以上説明した並列演算器を用いた画像処理技術に関し、本発明の実施の形態におけるデータ処理装置について以下に詳細に説明する。
【0031】
図6は、本発明の実施の形態におけるデータ処理装置の並列演算モジュールの構成例を示す図である。この並列演算モジュールは、入出力制御回路11と、演算制御回路12と、エントリ数に対応する個数のPE13と、データバッファ14〜16と、選択回路17および18とを含む。なお、データ処理装置の全体的な構成は、図1に示すデータ処理装置の構成と同様である。
【0032】
データバッファ14〜16は、それぞれ独立したバンク化された構成を有している。データバッファ14にはビットアドレス512〜1023が割り当てられており、この領域をAバンク(第1のバンク)と呼ぶ。データバッファ15にはビットアドレス256〜511が割り当てられており、この領域をBバンク(第2のバンク)と呼ぶ。また、データバッファ16にはビットアドレス0〜255が割り当てられており、この領域をIOバンク(第3のバンク)と呼ぶ。
【0033】
図1の構成と比較すると、例えば、データバッファ114の領域がAバンク14、データバッファ115の領域がBバンク15とCバンク16とにそれぞれ相当する。
【0034】
PE13のそれぞれは、データレジスタ14〜16に記憶された画像データの各要素に対して演算を行なうことにより並列処理を実現する。このPE13はエントリ数に対応して設けられており、実現する並列度に応じて性能を最適化することができる。
【0035】
入出力制御回路11は、システムバス105を介してデータの入出力を制御する。入出力制御回路11は、システムバス105を介して信号処理要求を受けると、その信号処理要求を演算制御回路12に出力する。また、入出力制御回路11は、演算制御回路12の制御によって信号処理結果を受けると、その信号処理結果をシステムバス105を介して出力する。
【0036】
演算制御回路12は、入出力制御回路11から信号処理要求を受けると、図示しない内蔵の命令メモリに格納されたマイクロコードに対応してPE13、データバッファ14〜16および選択回路17〜18に制御信号を出力しながら演算を順次PE13に行なわせ、信号処理要求に対応した信号処理を行なわせる。このとき、並行してデータ入出力の制御も行なう。
【0037】
選択回路17(第1の選択手段)は、演算制御回路12から出力される制御信号によってデータの経路を変更することができる。選択回路17は、Bバンク15との接続を選択することにより、PE13はBバンク15に記憶されるデータを参照したり、演算後のデータをBバンク15に格納したりすることができる。また、選択回路17は、選択回路18を介してIOバンク16との接続を選択することにより、PE13はIOバンク16に記憶されるデータを参照したり、演算後のデータをIOバンク16に格納したりすることができる。
【0038】
選択回路18(第2の選択手段)は、演算制御回路12から出力される制御信号によってデータの経路を変更することができる。選択回路18は、入出力制御回路11との接続を選択することにより、入出力制御回路11を介して外部メモリ104とIOバンク16との間のデータ転送を行なうことができる。また、選択回路18は、選択回路17を介してPE13との接続を選択することにより、PE13はIOバンク16に記憶されるデータを参照したり、演算後のデータをIOバンク16に格納したりすることができる。
【0039】
図7は、図6に示す並列演算モジュール内部において演算動作とデータ入出力動作とが並列に行なわれる場合を説明するための図である。選択回路17は、Bバンク15との接続を選択しており、PE13はAバンク14およびBバンク15からデータを読み出して演算を行ない、演算結果をAバンク14またはBバンク15に書き込む。
【0040】
選択回路18は、入出力制御回路11との接続を選択しており、入出力制御回路11を介して外部メモリ104とIOバンク16との間でデータ入出力が行なわれる。このように、Aバンク14およびBバンク15を用いた演算動作中に、IOバンク16を用いたデータ転送が並列に行なえる。
【0041】
図8は、バンク間コピーの動作を説明するための図である。選択回路17および18は、PE13とIOバンク16との接続を選択しており、PE13は、次の演算を行なうためにIOバンク16に記憶されるデータをAバンク14またはBバンク15にコピーする。
【0042】
図8に示すようにPE13がデータコピーを行なうことにより、外部メモリ104からIOバンク16に転送されたデータをAバンク14またはBバンク15に転送したり、Aバンク14またはBバンク15に記憶された演算処理後のデータをIOバンク16に転送したりすることができる。
【0043】
図9は、図7に示す並列動作および図8に示すバンク間コピーを用いた本発明の実施の形態における並列演算モジュールの動作シーケンスを説明するための図である。まず、T1において、演算制御回路12は、選択回路18を切り替えて入出力制御回路11とIOバンク16とを接続させ、外部メモリ104からIOバンク16への演算に必要なデータのDMA転送が行なわれる。
【0044】
演算制御回路12は、PE13による演算とDMA転送との両方の停止を確認すると、T2において、選択回路17および18を切り替えてPE13とIOバンク16とを接続させ、PE13を制御してIOバンク16からAバンク14またはBバンク15へのバンク間コピーを行なう。
【0045】
T3において、演算制御回路12は、選択回路17を切り替えてPE13とBバンク15とを接続させ、PE13を制御してAバンク14およびBバンク15を用いた演算処理を行わせる。これと並行して、演算制御回路12は、選択回路18を切り替えて入出力制御回路11とIOバンク16とを接続させ、外部メモリ104からIOバンク16への次の演算に必要なデータのDMA転送が行なわれる。
【0046】
演算制御回路12は、PE13による演算とDMA転送との両方の停止を確認すると、T4において、選択回路17および18を切り替えてPE13とIOバンク16とを接続させ、PE13を制御してAバンク14またはBバンク15からIOバンク16への演算結果のバンク間コピーを行なう。
【0047】
T5において、演算制御回路12は、既にIOバンク16にDMA転送されている演算対象のデータをAバンク14またはBバンク15にバンク間コピーを行なう。
【0048】
T6において、演算制御回路12は、選択回路17を切り替えてPE13とBバンク15とを接続させ、PE13を制御してAバンク14およびBバンク15を用いた演算処理を行わせる。これと並行して、演算制御回路12は、選択回路18を切り替えて入出力制御回路11とIOバンク16とを接続させ、IOバンク16から外部メモリ104への演算結果のDMA転送、および外部メモリ104からIOバンク16への次の演算に必要なデータのDMA転送が行なわれる。
【0049】
演算制御回路12は、PE13による演算とDMA転送との両方の停止を確認すると、T7において、選択回路17および18を切り替えてPE13とIOバンク16とを接続させ、PE13を制御してAバンク14またはBバンク15からIOバンク16への演算結果のバンク間コピーを行なう。
【0050】
T8において、演算制御回路12は、既にIOバンク16にDMA転送されている演算対象のデータをAバンク14またはBバンク15にバンク間コピーを行なう。
【0051】
T9において、演算制御回路12は、選択回路17を切り替えてPE13とBバンク15とを接続させ、PE13を制御してAバンク14およびBバンク15を用いた演算処理を行わせる。これと並行して、演算制御回路12は、選択回路18を切り替えて入出力制御回路11とIOバンク16とを接続させ、IOバンク16から外部メモリ104への演算結果のDMA転送、および外部メモリ104からIOバンク16への次の演算に必要なデータのDMA転送が行なわれる。
【0052】
上述のT4〜T9の動作が必要回数分だけ繰り返され、画像データに対する演算処理が行われる。
【0053】
このように並列演算モジュールを動作させた場合、IOバンク16とAバンク14またはBバンク15との間のバンク間コピーは演算制御回路12の制御によってPE13により行なわれることになる。すなわち、T2,T4,T5,T7およびT8に示す動作は演算プログラムによって行なわれる。このデータコピーの実行にはあるサイクル数だけ必要となる。
【0054】
しかし、例えば、演算器(PE13)の個数を非常に多い超並列構成とすることで大量のデータを一括処理して大容量の画像データの高速処理を実現する場合には、バンク間の演算バス幅がシステムバスなどのバンド幅よりも非常に広いため、Aバンク14およびBバンク15を用いた演算処理のサイクル数に比べると無視できるほどの小さいサイクル数でIOバンクからAバンク14あるいはBバンク15へデータコピーを行なうことができる。このように、演算器(PE13)の個数が非常に多い超並列構成では本発明による高速化の効果が非常に大きいといえる。
【0055】
図10は、本発明の実施の形態におけるデータ処理装置によって1ライン分の画像データを処理したときの処理時間を説明するための図である。図10に示すように、nライン目の処理において、外部メモリ104からのデータ転送動作と外部メモリ104へのデータ転送動作とが直列的に行なわれ、これと並行して並列演算器(PE13)における演算動作が行なわれる。したがって、nライン目の処理に要する時間は、外部メモリ104からのデータ転送時間tWRと外部メモリ104へのデータ転送時間tRDとの合計、または並列演算器における演算時間tEXとなり、高速化を図れることが分かる。なお、並列演算器における演算時間には、バンク間コピーに要する時間が含まれる。
【0056】
図11は、バンク間コピーを用いたROI(Region Of Interest)データの再構成を説明するための図である。図12は、ROI処理の一例を示す図である。図12においては、処理画像内の特徴点とその周辺領域とを、たとえば64×64画素で切り出し、これら画素データに対して演算を行なうことにより、特徴量を64次元ベクトルとして出力する。このとき、切り出した画像データを並列演算モジュール内のデータバッファ114または115に転送すると、データバッファにはライン状に配置されてしまう。
【0057】
図13は、特徴点とその周辺領域とを切り出してデータバッファ114または115に配置するところを示す図である。図13(a)は、外部メモリ104に記憶される入力画像の特徴点とその周辺領域とを示している。
【0058】
図13(b)は、DMA転送によって特徴点とその周辺領域の画素を切り出してデータバッファ114または115に転送したところを示している。図13(b)に示すように、画像データがデータバッファ114または115にライン状に配置されてしまう。
【0059】
図13(c)は、切り出した画像データをデータバッファ114または115に2次元に配置したところを示している。図13(c)に示すように、データバッファ114または115に画像データが2次元に配置される機構が必要とされる。
【0060】
図13を用いて説明したように、外部メモリ104とIOバンク16との間でDMA転送を行なうと、特徴点とその周辺領域とがIOバンク16にライン状に配置されてしまう。演算制御回路12はPE13を制御して、IOバンク16にライン状に配置された画像データを、Aバンク14に2次元に配置されるようにデータコピーを行わせる。
【0061】
たとえば、切り出した画像データが64×64画素の場合には、特定の64個のPE13によって演算処理を行える。したがって、他のPE13は他の特徴点とその周辺領域とを切り出した画像データの演算処理を並列に行なうことができる。
【0062】
図14は、バンク間コピーによるデータアラインメントを説明するための図である。DMA転送可能なサイズ、すなわちシステムバスのバス幅が64ビットの場合、64ビット単位でしかDMA転送ができない。そのため、任意のサイズでの画像データのDMA転送ができない。
【0063】
図14に示すように、転送したいROI領域のサイズが64ビット未満の場合には、網掛けで示す不要な画像データを含んだ形でDMA転送が行なわれ、IOバンク16にライン状に配置される。演算制御回路12はPE13を制御して、IOバンク16にライン状に配置された画像データの中からROI領域に対応する画像データのみを、Aバンク14またはBバンク15に2次元に配置されるようにデータコピーを行わせる。
【0064】
このように、2次元状にデータをAバンク14(または、Bバンク15)に配置することができれば、並列演算器内でも画像を2次元形状を維持したまま演算することができ、隣接ピクセル間の処理を高速に行なえるなどの利点がある。図14のようなデータ配置状態で並列演算を行なうことも可能であるが、並列演算器を最大限に利用するためにはAバンク14で示されるデータバッファのうちデータが配置されていない残りの領域も利用した方が演算の効率を高めることができる。
【0065】
図15は、バンク間コピーによる効率的なデータアラインメントを説明するための図である。具体的には、図15に示すような複数のROI領域をI/Oバンク16に転送しておき、Aバンク14にコピーを行なう際に、2次元的な整列を行ないながらコピーを行なえば、並列度を生かしながら効率の高い演算を行なうことができる。
【0066】
以上説明したように、本実施の形態におけるデータ処理装置によれば、IOバンク16のみを外部メモリ104との間でデータ転送可能とし、PE13がAバンク14およびBバンク15を用いて演算処理を行なうのと並行して、IOバンク16と外部メモリ104との間でデータ転送を行なうようにした。したがって、並列演算器を用いた画像処理の高速化を図ることが可能となった。
【0067】
またさらに、IOバンク16とAバンク14およびBバンク15との間のデータ転送を、PE13を用いて行なうため、バンク間におけるデータ転送についても高速で処理することが可能となった。
【0068】
また、IOバンク16に転送された画像データをAバンク14またはBバンク15にバンク間コピーを行なった後、Aバンク14およびBバンク15を用いた演算処理を行なうようにしたので、任意のサイズのROIデータをデータバッファに2次元で配置することができ、並列演算器が効率的に画像処理を行なうことが可能となった。
【0069】
また、DMA転送の制限によって不要な画像データがIOバンク16に配置された場合でも、PE13を用いたバンク間コピーによってROIデータのみをAバンク14またはBバンク15に配置することができ、並列演算器が効率的に画像処理を行なうことが可能となった。
【0070】
(変形例)
図16は、本発明の実施の形態の変形例におけるデータ処理装置の並列演算モジュールの構成例を示す図である。なお以下で、図8に示すデータ処理装置と同じ構成部分には同一の符号を付し、その詳細な説明は繰り返さない。
【0071】
この並列演算モジュールは、入出力制御回路11と、演算制御回路12と、エントリ数に対応する個数のPE13と、データバッファ14〜15および162と、選択回路17および18とを含む。なお、データ処理装置の全体的な構成は、図1に示すデータ処理装置の構成と同様である。
【0072】
画像処理においては、例えば隣接するフレームの差分を演算するなど、近い範囲に存在する画像データや一旦処理されたデータを以後の演算において再利用することが多く、演算ごとにすべての画像データを外部メモリ104からデータ転送する必要はない。複数の演算処理で用いるデータは複数の演算処理の間、Aバンク14やBバンク15においてデータを保持する。
【0073】
そのため、差分を演算する処理のような場合には、演算処理間のデータ転送は新たに必要となる画像データや演算結果の転送に限られ、データ転送に用いるIOバンク162はAバンク14、Bバンク15に比べて小さな容量で実現できる。
【0074】
以上説明したように、本実施の形態の変形例におけるデータ処理装置によれば、IOバンク162をAバンク14、Bバンク15に比べて小さな容量で実現することが可能となり、チップ面積の小さなデータ処理装置を提供することが可能となった。
【0075】
(適用例)
図17は、本発明におけるデータ処理装置の適用システム例である。なお以下で、図1に示すデータ処理装置と同じ構成部分には同一の符号を付し、その詳細な説明は繰り返さない。
【0076】
ストリーム処理部200は、MPEG(Moving Picture Experts Group)などの画像コーデックの1処理であるストリーム処理を行う。映像処理部201は、ストリーム処理部200と連携して画像コーデックの符号化や復号化を行う。音声処理部202は、音声コーデックの符号化や復号化を行う。
【0077】
PCIインタフェース203は、システムバス105と標準バスであるPCIバス204とを接続する。PCIバス204には、ハードディスクなどの各種PCIデバイス205が接続される。
【0078】
表示制御部206は、表示デバイスであるディスプレイ207に接続され、ディスプレイ207上の画像表示を制御する。
【0079】
DMAコントローラ102には、DMAバス105を介して、各種IOデバイスが接続される。IOデバイスには、カメラなどの映像入出力を行う映像入出力部209、ストリームを入出力するストリーム入出力部210、音声の入出力を行う音声入出力部211などがある。
【0080】
本発明の並列演算モジュールは、例えばストリーム処理部200に配置されて画像処理を行う。このようなシステムは、映像や音声の入出力を有し、映像や音声処理を行うシステムであり、例えば携帯電話やカメラなどがある。
【0081】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0082】
11,111 入出力制御回路、12,112 演算制御回路、13,113 PE、14〜16,162,114,115 データバッファ、17,18 選択回路、100 並列演算モジュール、101 CPU、102 DMAコントローラ、103 メモリインタフェース、104 外部メモリ、105 システムバス。
【特許請求の範囲】
【請求項1】
プロセッサと並列演算モジュールとがシステムバスによって接続され、前記プロセッサからの要求に応じて前記並列演算モジュールが演算を行なうデータ処理装置であって、
前記並列演算モジュールは、複数の演算手段と、
前記複数の演算手段に対応して設けられ、前記複数の演算手段が演算を行なう際に用いられるデータを記憶する第1のバンクおよび第2のバンクと、
前記複数の演算手段に対応して設けられ、前記システムバスを介して外部メモリとの間でデータ転送が行なわれる第3のバンクと、
前記第2のバンクと前記第3のバンクとのいずれかを選択的に前記複数の演算手段に接続する第1の選択手段と、
前記外部メモリと前記複数の演算手段とのいずれかを選択的に前記第3のバンクに接続する第2の選択手段とを含む、データ処理装置。
【請求項2】
前記データ処理装置はさらに、前記第1の選択手段および前記第2の選択手段を切り替えて、前記複数の演算手段に前記第2のバンクを接続させて前記複数の演算手段に演算処理を行なわせるのと並行して、前記第3のバンクに前記外部メモリを接続させてデータ転送を行なわせた後、前記第2の選択手段を切り替えて前記複数の演算手段に前記第3のバンクを接続させて該第3のバンクに記憶される演算対象のデータを前記第1のバンクまたは前記第2のバンクにデータコピーさせる制御手段を含む、請求項1記載のデータ処理装置。
【請求項3】
前記制御手段は、前記第3のバンクにライン状に配置された演算対象のデータを、前記第1のバンクまたは前記第2のバンクに2次元に配置されるようにデータコピーを行なう、請求項2記載のデータ処理装置。
【請求項4】
前記制御手段は、前記第3のバンクにライン状に配置された演算対象のデータの中の不要なデータを除いて、前記第1のバンクまたは前記第2のバンクに2次元に配置されるようにデータコピーを行なう、請求項3記載のデータ処理装置。
【請求項5】
前記並列演算モジュールの演算バスは、前記システムバスのバス幅よりも大きなバス幅を有しており、
前記外部メモリから前記第3のバンクへのデータ転送よりも高速に、前記第3のバンクから前記第1のバンクまたは前記第2のバンクへのデータコピーを行なうことができる、請求項1〜4のいずれかに記載のデータ処理装置。
【請求項6】
前記第3のバンクの容量は、前記第1のバンクおよび前記第2のバンクの容量よりも小さい、請求項1〜5のいずれかに記載のデータ処理装置。
【請求項7】
前記データ処理装置はさらに、外部とのデータ入出力を行なう入出力部を有し、
前記外部メモリは、前記入出力部に入力されたデータを記憶し、前記プロセッサからの要求に応じて前記入力されたデータを前記第3のバンクに転送する、請求項1記載のデータ処理装置。
【請求項8】
複数の演算手段と、
前記複数の演算手段に対応して設けられ、前記複数の演算手段が演算を行なう際に用いられるデータを記憶する第1のバンクおよび第2のバンクと、
前記複数の演算手段に対応して設けられ、外部との間でデータ転送が行なわれる第3のバンクと、
前記第2のバンクと前記第3のバンクとのいずれかを選択的に前記複数の演算手段に接続する第1の選択手段と、
前記外部メモリと前記複数の演算手段とのいずれかを選択的に前記第3のバンクに接続する第2の選択手段とを含む、並列演算装置。
【請求項9】
前記並列演算装置はさらに、前記第1の選択手段および前記第2の選択手段を切り替えて、前記複数の演算手段に前記第2のバンクを接続させて前記複数の演算手段に演算処理を行なわせるのと並行して、前記第3のバンクに前記外部メモリを接続させてデータ転送を行なわせた後、前記第2の選択手段を切り替えて前記複数の演算手段に前記第3のバンクを接続させて該第3のバンクに記憶される演算対象のデータを前記第1のバンクまたは前記第2のバンクにデータコピーさせる制御手段を含む、請求項8記載の並列演算装置。
【請求項1】
プロセッサと並列演算モジュールとがシステムバスによって接続され、前記プロセッサからの要求に応じて前記並列演算モジュールが演算を行なうデータ処理装置であって、
前記並列演算モジュールは、複数の演算手段と、
前記複数の演算手段に対応して設けられ、前記複数の演算手段が演算を行なう際に用いられるデータを記憶する第1のバンクおよび第2のバンクと、
前記複数の演算手段に対応して設けられ、前記システムバスを介して外部メモリとの間でデータ転送が行なわれる第3のバンクと、
前記第2のバンクと前記第3のバンクとのいずれかを選択的に前記複数の演算手段に接続する第1の選択手段と、
前記外部メモリと前記複数の演算手段とのいずれかを選択的に前記第3のバンクに接続する第2の選択手段とを含む、データ処理装置。
【請求項2】
前記データ処理装置はさらに、前記第1の選択手段および前記第2の選択手段を切り替えて、前記複数の演算手段に前記第2のバンクを接続させて前記複数の演算手段に演算処理を行なわせるのと並行して、前記第3のバンクに前記外部メモリを接続させてデータ転送を行なわせた後、前記第2の選択手段を切り替えて前記複数の演算手段に前記第3のバンクを接続させて該第3のバンクに記憶される演算対象のデータを前記第1のバンクまたは前記第2のバンクにデータコピーさせる制御手段を含む、請求項1記載のデータ処理装置。
【請求項3】
前記制御手段は、前記第3のバンクにライン状に配置された演算対象のデータを、前記第1のバンクまたは前記第2のバンクに2次元に配置されるようにデータコピーを行なう、請求項2記載のデータ処理装置。
【請求項4】
前記制御手段は、前記第3のバンクにライン状に配置された演算対象のデータの中の不要なデータを除いて、前記第1のバンクまたは前記第2のバンクに2次元に配置されるようにデータコピーを行なう、請求項3記載のデータ処理装置。
【請求項5】
前記並列演算モジュールの演算バスは、前記システムバスのバス幅よりも大きなバス幅を有しており、
前記外部メモリから前記第3のバンクへのデータ転送よりも高速に、前記第3のバンクから前記第1のバンクまたは前記第2のバンクへのデータコピーを行なうことができる、請求項1〜4のいずれかに記載のデータ処理装置。
【請求項6】
前記第3のバンクの容量は、前記第1のバンクおよび前記第2のバンクの容量よりも小さい、請求項1〜5のいずれかに記載のデータ処理装置。
【請求項7】
前記データ処理装置はさらに、外部とのデータ入出力を行なう入出力部を有し、
前記外部メモリは、前記入出力部に入力されたデータを記憶し、前記プロセッサからの要求に応じて前記入力されたデータを前記第3のバンクに転送する、請求項1記載のデータ処理装置。
【請求項8】
複数の演算手段と、
前記複数の演算手段に対応して設けられ、前記複数の演算手段が演算を行なう際に用いられるデータを記憶する第1のバンクおよび第2のバンクと、
前記複数の演算手段に対応して設けられ、外部との間でデータ転送が行なわれる第3のバンクと、
前記第2のバンクと前記第3のバンクとのいずれかを選択的に前記複数の演算手段に接続する第1の選択手段と、
前記外部メモリと前記複数の演算手段とのいずれかを選択的に前記第3のバンクに接続する第2の選択手段とを含む、並列演算装置。
【請求項9】
前記並列演算装置はさらに、前記第1の選択手段および前記第2の選択手段を切り替えて、前記複数の演算手段に前記第2のバンクを接続させて前記複数の演算手段に演算処理を行なわせるのと並行して、前記第3のバンクに前記外部メモリを接続させてデータ転送を行なわせた後、前記第2の選択手段を切り替えて前記複数の演算手段に前記第3のバンクを接続させて該第3のバンクに記憶される演算対象のデータを前記第1のバンクまたは前記第2のバンクにデータコピーさせる制御手段を含む、請求項8記載の並列演算装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【公開番号】特開2011−141823(P2011−141823A)
【公開日】平成23年7月21日(2011.7.21)
【国際特許分類】
【出願番号】特願2010−3075(P2010−3075)
【出願日】平成22年1月8日(2010.1.8)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
【公開日】平成23年7月21日(2011.7.21)
【国際特許分類】
【出願日】平成22年1月8日(2010.1.8)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
[ Back to top ]