説明

ディジタル信号処理装置

【課題】複数のディジタル信号処理装置にセグメントバスを構成し、このセグメントバスを制御して、低消費電力で高速演算処理を行う。
【解決手段】
シストリックアレー構成のディジタル信号処理装置において、アレイ状に配列された複数のコアプロセッサと、上記コアプロセッサに設けられ、データの入出力を制御するゲートウェイと、上記配列された複数のコアプロセッサとゲートウェイで構成される特定領域でデータを転送するセグメントバスと、上記ゲートウェイを制御して上記セグメントバスを介して、上記コアプロセッサ間でデータ転送する制御部とを有することにより、低クロックスピードで高速演算処理を行い、低消費電力化した。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のプロセッサを並列に動作させて、プロセッサ当たりの演算量を減らし、低速・低消費電力とし、特に通信端末などの画像処理に用いる低消費電力のディジタル信号処理装置に関する。
【背景技術】
【0002】
近年、高度な携帯端末にはビデオや音楽の再生など、マルチメディア信号処理の技術が広く利用されている。これらの信号処理技術が使われるようになったのは、高精度なカメラやディスプレイが低価格化し、携帯端末に搭載されるようになったためである。
将来、ディジタル信号処理の技術の向上により、これらの小型な携帯端末の機能は個人のインテリジェントアドバイザーになると考えられる。例えば、ハイビジョンカメラを搭載した携帯電話で、付近の人ごみを撮影して画像認識して撮影画像の中から知り合いを見つけることができるようになる。
【0003】
このような高解像度の画像や広帯域のオーディオから必要な情報を取り出すための演算量は、飛躍的に多くなる。しかし、現在の携帯端末に使用されているLSIのディジタル信号処理プロセッサは、現在のPC(パーソナル・コンピュータ)のプロセッサに比べて処理能力が低く、十分な処理能力を持っていない。また、携帯端末ではバッテリーを長時間持たせるために、低消費電力でなければならないので、高速動作は難しい。さらにこれに加えて、様々なマルチメディア命令の実装を容易にするためには、プログラマビリティが要求される。
【0004】
【非特許文献1】I.Tamitani,H.Harasaki,and T.Nishitani,"A Real-time HDTV Signal Processor":HD-VSP,IEEE Transaction on Circuits and Systems for Video Techonology, vol.1,no.1,pp.35-41,1991.
【非特許文献2】S.Kyo,T.Koga,S.Okazaki,I.Kuroda,"A 51.2GOPS Programmable Video Recognition Processor for Vision based Intelligent Cruise Control Applications",IEICE Trans.On Information and Systems,Vol.E87-D,No.1,pp.136-145,Jan,2004.
【非特許文献3】J.Levison,I.Kuroda, and T.Nishitani,"A Recofigurable Processor Array with Routing LSIs and General Purpose DSP",IEEE ISAP'92,pp.136-145,1992.
【特許文献1】特開平7−93268
【特許文献2】特開平11−175510
【特許文献3】特開2002−175283
【発明の開示】
【発明が解決しようとする課題】
【0005】
本発明において、マルチコアプロセッサによる低消費電力で高性能な処理能力を持つアーキテクチャの目標をTOPS(Tera Operation Per Second)とし、また消費電力は500mW以下とする。この消費電力500mWという目標は、今までの携帯端末に搭載された、アナログTV信号を処理するチップの最大消費電力に基く。
以下、約20年前の第一世代DSP(ディジタルシグナルプロセッサ)を基に検討する。LSI(超集積回路)の微細加工技術が8世代ほど進歩し、チップサイズを縦横共に2.5倍にすると、同一チップに1000個以上の第一世代DSPが実装可能となる。これはNTSC(National Television System Comittee)サイズの垂直方向のピクセル数の480個より多い。したがって、非特許文献1,2に開示された、粒度の粗い並列構成を用いて効率的な空間の処理が行えるビデオ処理用マルチプロセッサシステムは十分実現できる。
【0006】
次に消費電力に関して述べる。一般的に携帯電話で使用されるプログラマブルなシングルチップのDSPが製品化されてから久しい。1980年代の第一世代のDSPは、実時間での音楽や音声の処理が可能な処理能力を持っている。例えば、1980年半ばにUPD77C25(登録商標;NEC株式会社)は、図9に示すように、10MHzのクロックで60MOP(Mega Operation Per Second)の処理能力で、チップの消費電力は125mW、16×16Bitsの乗算器と1Kワードの命令メモリ、2KワードのデータRAM(Random Acsess Memory)を搭載している。
【0007】
LSIの集積度が向上したことで、現在の半導体のMOSプロセスルールは0.09μmから0.06μmが主流となっている。そのため、このプロセッサを現在の半導体製造プロセスルールで再デザインした場合、同じチップサイズの上に多数のDSPが実装可能である。
次に、このマルチプロセッサの処理能力や消費電力を評価する。LSIの評価は以下のLSIデバイスに関連する問題を基に行う。
1.LSIの消費電力をPとすると下記の式で表される。
【0008】
(数1)
P=C*f*V ・・・(1)
ここで、*は乗算記号、Cはチップの配線容量、fは周波数、Vは電圧である。
2.LSIプロセスの技術は、18ヶ月〜24ヶ月で集積度が2倍になる(ムーアの法則)。
【0009】
半導体MOSプロセスにおいて、1980年半ばのLSIから、LSIのプロセスは8世代が進んでいる。このことは、上述したムーアの法則によると、同じチップサイズの領域に256個のUPD77C25が実装可能である。動作電圧において、当時はユーザーの利便性を考え、周辺のTTL(Transistor Transistor Logic)チップと接続できるように、供給電圧を5Vとしていた。しかし、現在のCMOSLSIでは、1Vの電圧を用いるのが一般的であるので、本検討では1Vの電圧を使用する。つまり、式(1)においてクロックスピードを10MHz、供給電圧を1Vとすると、256個のプロセッサを25mWの消費電力で動作させることが可能である。
【0010】
さらに、民生用のハイエンドLSIは1980年代の民生用LSIのダイサイズと比較して4倍から5倍の大きさになっている。つまり、1024個から1280個のプロセッサを1個のチップ上に配置でき、またそれらを100mWから125mWの消費電力で動作させることが可能である。また、DSPはVLIW命令を用いることで6命令同時に実行できるので、演算量は60GOPS(Giga Operation Per Second)から76GOPSになる。高周波で動作させることで1TOPSの実現が可能であるが、消費電力が1Wから1.2Wくらいになってしまう。そのため、以降のクロックスピードを10MHzに設定する。
【0011】
消費電力に関する仮定として、ここではトランジスタのリーク電流については問題にしていない。この問題はSOI(Silicon On Insulator)などのLSI技術の進歩によりリーク電流の問題が解決されることを期待している。
【0012】
本発明のディジタル演算処理は、10MHz程度の遅いクロックスピードで動作するDSPアーキテクチャと短いコミュニケーションパスを使用し、全ての単位プロセッサは、簡単なゲートウェイ部分と、簡単化したDSPの二つで構成する。ゲートウェイ部分にローカルな限定された数の単位プロセッサとセグメントバスで接続する機能を持たせて、高速演算処理ができるDSPのアーキテクチャを提供する。また、このアーキテクチャを用いたDSPはフィルタリングや変換、動き推定などのディジタル演算処理を高速化することや、DSP部分で内部メモリを一時的に管理することにより、ピクセルベースのDSPの処理も行える低消費電力ディジタル信号処理装置を提供することにある。
【課題を解決するための手段】
【0013】
本発明の低消費電力のディジタル信号処理装置は、シストリックアレー構成のディジタル信号処理装置において、アレイ状に配列された複数のコアプロセッサと、上記コアプロセッサに設けられ、データの入出力を制御するゲートウェイと、上記配列された複数のコアプロセッサとゲートウェイで構成される特定領域でデータを転送するセグメントバスと、上記ゲートウェイを制御して上記セグメントバスを介して、上記コアプロセッサ間でデータ転送する制御部とを有する。
【0014】
本発明の低消費電力のディジタル信号処理装置は、シストリックアレー構成のディジタル信号処理装置において、アレイ状に配列された複数のコアプロセッサと、上記コアプロセッサに第1と第2のレジスタが接続され、上記第1のジスタに第1のゲートが接続され、上記第2のジスタに第2のゲートが接続され、上記第1と第2のゲート間に第1のバイパスが設けられたゲートウェイと、上記配列された複数のコアプロセッサとゲートウェイで構成される特定領域でデータを転送するセグメントバスと、上記ゲートウェイを制御して上記セグメントバスを介して、上記コアプロセッサ間でデータ転送する制御部とを有する。
【0015】
本発明のディジタル信号処理装置は、コアプロセッサとバイパスとレジスタ等を有するゲートウェイで構成される複数の単位プロセッサで構成され、ソフトウェアによりゲートウェイが制御され、特定の領域の単位プロセッサを選択し、セグメントバスを形成してデータの転送を高速にすると共に演算処理を行う。
ディジタル信号装置のアーキテクチャは非特許文献3に基づいた細粒度の並列プロセッサで、iWarpのメッセージ・パッシングコムニュケーションを無くしたプロセッサとも言える。このディジタル信号装置では、10MHz程度の遅いクロックスピードで動作する初期のDSPアーキテクチャと短いコミュニケーションパスを使用する。
また、全ての単位プロセッサは、簡単なゲートウェイ部分と、簡単化した第一世代のコアプロセッサ(DSP)の二つで構成し、ゲートウェイ部分は上述した非特許文献3で開示したゲートチップと同様な機能、つまり、両隣のチップとの通信を行う機能を有する。この接続はシストリックアレーのアプローチに基づいているが、ローカルな限定された数の単位プロセッサとセグメントバスで接続する機能を持つ。このバスによりフィルタリングや変換、動き推定などのDSPの演算処理を高速化することを提示する。また、DSP部分は内部メモリを一時的に管理することも必要で、ピクセルベースのDSPの処理も行う。
【発明の効果】
【0016】
本発明の低消費電力ディジタル信号処理装置は、低速クロックでかつ低電圧で動作する複数のコアプロセッサ間に簡単なゲートウェイを追加し、セグメントバスを形成してコアプロセッサ間に通信機能をもたせ、低消費電力で高速演算処理を行うことができる。特に、携帯端末などの画像処理に適用することができる。
【発明を実施するための最良の形態】
【0017】
図1に本発明の実施形態であるディジタル信号処理装置の構成を示す。多数の単位プロセッサを単一チップ上に実装した場合、データを転送するための内部接続が必要となってくる。この内部接続での高速なデータ転送や長い配線は、式(1)の周波数の向上や配線容量の増加に繋がることは明確である。仮に組み込んだ単位プロセッサ全てを接続できるようなバスを使用した場合、配線容量は非常に大きくなり、結果的に高い消費電力になってしまう。そこで、消費電力の増加を避けるために、単位プロセッサをコアプロセッサとゲートウェイの二つに分ける。以後、一般的にディジタル信号処理装置をDSPと表し、特定のDSPをたとえばコアプロセッサ(Dij)と記載する。
【0018】
図1(a)に示すように、低消費電力のディジタル信号処理装置(単にDSPとも記載する)10の構成例を示す。DSP10を構成する単位プロセッサはコアディジタル信号処理装置(コアプロセッサまたはコアDSP)DijとゲートウェイSijで構成される。また、図1(a)にDij間の接続構成例を示すが、本発明はこれに限定されず、データを空間的に斜め方向に転送する接続にすることもできる。
例えば、コアDSPのD11で演算した結果のデータをD22に転送できるようにゲートウェイS11またはS22(i,j=2)の接続構成をソフトウェアにより制御して変更してもよい。なお、ここでは説明を簡単にするため、i=4,j=5の場合について説明する。
【0019】
コアプロセッサD11はゲートウェイS11を介してD12のゲートウェイS12とD21のゲートウェイS21に接続される。コアプロセッサD12はゲートウェイS12を介してD11のゲートウェイS11、D13のゲートウェイS13とD22のゲートウェイS22に接続される。コアプロセッサD13はゲートウェイS13を介してD12のゲートウェイS12、D14のゲートウェイS14とD23のゲートウェイS23に接続される。コアプロセッサD14はゲートウェイS14を介してD13のゲートウェイS13、D15のゲートウェイS15とD24のゲートウェイS24に接続される。コアプロセッサのD15はセグメントS15を介してD14のセグメントS14とD25のセグメントS25に接続される。以下、D2j行、D3j行、D4j行(j=1〜5)と繰り返し、コアプロセッサのD45、S45まで同様な接続を行う。なお、ゲートウェイSijについては後述する。
【0020】
図1(a)に示すように、ゲートウェイSijを制御することにより、例えば破線で囲まれた領域aに配置されたコアプロセッサD21,D31,D41は、ある特定された信号処理を行うための縦方向に接続された構成例を示している。この破線領域aは他の破線領域b、c、dと切り離されているので、配線による容量が著しく減少し、電気的特性が向上するのみでなく消費電力を削減することができる。またこの他、破線領域bはコアプロセッサD22,D23,D24と横方向に構成され、破線領域cはコアプロセッサD32,D42と縦方向に構成され、また破線領域dはコアプロセッサD33,D34,D35と横方向に構成される。この破線領域と方向は処理内容により任意に変更される。破線領域aで処理Aに関する信号処理、破線領域bで処理Bに関する信号処理、破線領域cで処理Cに関する信号処理、破線領域dで処理Dに関する信号処理を独立して行う。
したがって、ゲートウェイSijを制御して、例えば各破線領域a,b,c,d内で独立したバスが形成され、お互い独立して動作することができる。この特定された領域内のバスを以下セグメントバスと記載する。
【0021】
このように、不図示のコントローラによりセグメントバスを介してゲートウェイSijを制御して、処理ステップに従う方向に隣接してコアプロセッサDij間を接続することにより、複数のコアプロセッサDij間でデータを転送する。この結果、所定の領域内で信号処理の一部で互いに異なる信号処理を同時に実行することができる。なお、各破線領域a,b,c,dの配線長は、例えばコアプロセッサDijの動作クロックを10MHzとしたときに、100ns(ナノ秒)以下になるようにする。これにより、各破線領域における各Dijで行われ演算処理時間の影響が少なくなる。
【0022】
図1(a)に示すディジタル信号処理装置10のコアプロセッサDijは10MHz程度の遅いクロックスピードで動作するDSPアーキテクチャと短いコミュニケーションパスを使用する。
全てのコアプロセッサDijは、簡単なゲートウェイSij部分と、簡単化した第一世代DSP(のDij)の二つで構成してあり、ゲートウェイSij部分は両隣のチップとの通信を行う機能を持っていて、この接続はシストリックアレーのアプローチに基づいているが、ローカルな限定された数の単位プロセッサとセグメントバスで接続する機能を持っている。このセグメントバスがフィルタリングや変換、動き推定などのDSPの演算処理を高速化することができる。また、DSP部分は内部メモリを一時的に管理することも必要で、ピクセルベースのディジタル信号処理も行える。
【0023】
このように、採用したアーキテクチャはシストリックアレーに基づいており、全てのコアプロセッサDijとゲートウェイSijは10MHzで動作する。コアプロセッサDijの数が十分多ければ、画面の全てのピクセルは同じ位置に存在するコアプロセッサDijに対応づけることが可能である。
また、隣接するコアプロセッサDijとのデータ転送はワードベースのアプローチで行う。背景予測のようなピクセルベースの処理はコアプロセッサDij部分のみで処理が行われる。しかし、この時ゲートウェイSij部分とコアプロセッサDij部分でシストリックアレーを構築することにより、各コアプロセッサへDijのI/O(入出力)処理はシストリックで行える。
これにより、メインメモリから一度データを取得したら、そのデータに対して連続的に処理を実行でき、フォンノイマンボトルネック、つまりマルチDSPにおけるメモリ幅が狭くなるという問題から開放される。
【0024】
次に、図1(b)にDSPのゲートウェイ部分20のブロック構成例を示す。図1(b)に示すように、このゲートウェイ部分20は、コアプロセッサDij(DSP)のゲートウェイSij部分のバイパス機能を用いて構成される。この機能により、図1(a)に示すように複数の破線領域は、各々セグメントバスによって構成されている。
コアプロセッサDijを除いたゲートウェイ部分20は、4個のレジスタ(Reg1〜Reg4)と4個のゲートG1〜G4とバイパス1,2で構成される。
【0025】
ゲートウェイ部分20において、第一の入出力端子T1は、ゲートG1の一方の端子に接続され、このゲートG1の他方の端子はレジスタReg1に接続され、このレジスタReg1の他方の端子はDSP(Dij)の第一の入出力端子に接続される。また、ゲートG1の他方の端子はゲートG3の他方の端子に直接接続される。
第二の入出力端子T2は、ゲートG2の一方の端子に接続され、このゲートG2の他方の端子はレジスタReg2に接続され、このレジスタReg2の他方の端子はDSP(Dij)の第二の入出力端子に接続される。また、ゲートG2の他方の端子はゲートG4の他方の端子に直接接続される。
第三の入出力端子T3は、ゲートG3の一方の端子に接続され、このゲートG3の他方の端子はレジスタReg3に接続され、このレジスタReg3の他方の端子はDSP(Dij)の第三の入出力端子に接続される。
第四の入出力端子T4は、ゲートG4の一方の端子に接続され、このゲートG4の他方の端子はレジスタReg4に接続され、このレジスタReg4の他方の端子はDSP(Dij)の第四の入出力端子に接続される。
【0026】
次にコアプロセッサDSP(Dij)に接続されたゲートウェイ部分20の動作について説明する。ソフトウェアでコントローラを制御してゲートG1を制御して開き、第一の入力端子T1から所定ビット長のデータをゲートG1に入力する。ゲートG1が開いている(接続される)とレジスタReg1にデータが格納される。
次に、格納されたデータはDSP(Dij)に入力され、そこで加算(減算)や乗算などの演算処理が例えば10MHzの動作クロックで行われる。DSP(Dij)で演算処理されたデータは、レジスタReg2、Reg3,Reg4のいずれかに出力されそこに格納される。例えば水平方向にデータを転送したい場合、DijからレジスタReg3にデータが転送され格納される。そして、次の動作ステップでゲートG3が開き次のコアプロセッサDij+1にデータが転送される。
またこれ以外の動作で、Dijで演算処理を行う必要がない場合、ゲートG1とG3間のバイパス1を接続して、端子T1に入力されたデータをゲートG1を介して直接ゲートG3に転送することも出来る。またゲートG3からG1へデータを転送して逆方向に直接転送できる。
以下、他の入力端子T2,T3,T4についても同様な動作を行い、第二と第四の入出力端子T2,T4間もゲートG2,G4を制御してバイパス2を接続することにより直接データを転送することが出来る。
【0027】
図1(b)に示すように、ゲートウェイ部分20はDijにゲートG1,G2,G3,G4を設け、これらのゲートG1,G2,G3,G4をソフトウェアを用いてコントローラにより制御し、転送する領域以外のゲートを閉めて(オフして)、隣接するプロセッサ間の転送路を遮断する。
その結果、ゲートウェイ部分20で接続された配線容量が少なくなり、式(1)で計算される容量cが小さくなり、消費電力を削減することが出来る。また動作ステップに関する一連のコアプロセッサのみを動作させ、それ以外のコアプロセッサの電源をオフ(切断)することにより、さらに消費電力を削減できる。
【0028】
このように、セグメントバスの配置はコアプロセッサDijのゲートウェイ部分(Sij)をソフトウェアで制御して行う。この変更によりバイパスの配線容量が増加するため、消費電力が増加してしまう。しかし、最悪の遅延が10MHzのクロックの間隔と同じ100ナノ秒以下になるようにセグメントバスの長さの制限をする。さらに、セグメントバス構造が必要でないときにはソフトウェアを用いてバイパス機能を切り替えることで、余計な消費電力を無くすることができる。
【0029】
次に、セグメントバスによる効率化について述べる。セグメントバスを採用する理由は二つある。
第一の理由は、アレープロセッサ(コアプロセッサDij)がプログラマブルである。図2(a)のタスク(1)に示すように、シストリックアレーは空間的な処理を行う場合、パイプラインで処理を行うため、一つのタスクキューを伴って順次実行される。
図2(a)に従来のシストリックアレー構成の演算処理装置によるパイプライン動作を示す。ピクセルのブロックが8個b1,b2,・・・,b8で構成され、それに対応して単位ブロック(または単位プロセッサ)が8個で構成されたれときの時間軸とブロックの演算処理の状態を示す。説明を簡単にするために、タスクを3個((1)、(2)、(3))とする。
【0030】
タスク(1)を時間(動作クロック)の経過に応じてブロックb1から順次b2,b3,・・・,b8までパイプライン式に演算を実行する。
まず、ステップ1で、タスク(1)がブロックb1で処理される。ステップ2で、ブロックb1でタスク(1)に関する演算処理(演算処理、情報収集などを含む)が行われた結果がブロックb2に転送され、演算処理が行われる。これと同時に、ブロックb1には次のタスク(2)が転送され、演算処理が行われる。ステップ3になると、ブロックb2で演算されたタスク(1)に関する結果がブロックb3に転送され演算処理が行われる。これと同時に、ブロックb1で演算されたタスク(2)に関する演算結果がブロックb2に転送されて演算処理が行われる。また、ブロックb1には、タスク(3)が転送され演算処理を行う。このような動作をクロックの経過に応じて行い、ブロックb8でタスク(3)の演算処理を行う。次のステップ11で結果(4)が得られる。この結果(4)をブロックb7,b6,・・・,b1に時間(動作クロック)に応じて順次転送する。そのため、従来のパイプライン方式による情報伝達(演算を含む)に関する必要なステップ数は、ブロック数をK個とすると、最大2Kステップ必要となる。
【0031】
このように、複数のタスクを連続して実行する場合には図2(a)のタスク(1)からタスク(3)のように、スキューを必要としてもタスクを効率よく実行することができる。また、情報収集も同様な処理でできる。しかし、判定は最後の単位プロセッサで作成されるため、ブロック内全ての単位プロセッサに送り返さなければならない。これは、図2(a)のタスク(4)に示すように、シストリック接続が、長いディレイドジャンプとなることを示している。
【0032】
次に、図2(b)に示す本発明に関するセグメントバスを用いたDSPの動作について説明する。
図2(a)の従来のシストリックアレー構成のDSPに対して、図1(b)のゲートウェイSijを制御しセグメントバスを介してデータを転送することにより高速に演算処理ができる。
図2(b)に示すように、まずステップ1において、ブロックc1でタスク(1)に関する演算処理(情報収集などを含む)を行う。ステップ2で、ブロックc1でタスク(1)に関する演算処理が行われた結果がブロックc2に転送され、次の演算処理を行う。これと同時に、ブロックc1には次のタスク(2)が転送され、演算処理を行う。ステップ3になると、ブロックc2で演算されたタスク(1)に関する演算結果がブロックc3に転送され次の演算処理を行う。これと同時に、ブロックc1で演算されたタスク(2)に関する演算結果がブロックc2に転送され、次の演算処理を行う。また、ブロックc1には、タスク(3)が転送され演算処理を行う。このような動作を行い、ブロックc8でタスク(3)の演算処理を行い、ステップ11で演算結果(4)を得る。また各ブロック(単位プロセッサ)は、それぞれゲートウェイSijを構成するので、このゲートウェイSijをソフトウェアで制御することにより、ステップ11で同時に各ブロックC1,C2,・・・,C8に転送する。
【0033】
図2(b)に示すように、ステップ11において、1ステップ期間に全てのコアプロセッサDij(またはブロックC1,C2,・・・,C8)に判定(タスク(4))を転送することができる。
もしセグメントバスよりも大きいブロックサイズに対して画像処理を行う場合、複数のセグメントバスによるパイプラインデータ転送が必要になるが、セグメントバスを用いることで高速な情報の転送が可能になり、結果として低遅延のジャンプとなる。
また、図2(a)に示す余分なステップでは、使用していないコアプロセッサDijを動作させないことで電力消費を抑えることが出来る。またこの他、動作ステップと低消費電力のどちらがより重要であるかにより、セグメントバスとシストリックの切り替えを行うことができる。さらに、ソフトウェアによって、ゲートウェイSijを制御することにより使用するアーキテクチャを決定することができる。
【0034】
次に、セグメントバスを使用する第二の理由について述べる。実際のシストリック構造の実現においては、シストリックアルゴリズムを効率よく実現するために、セグメントバスを使用することがある。本アーキテクチャでは、そのようなアルゴリズムを動き検出に利用する例について説明する。
動き検出は、以下の3つの処理に分けられる。
1.評価を行うプログラムと参照画像とのピクセル間の絶対値差分の演算とL1ノルム
形成のための絶対値差分の累算。
2.探索領域内のL1ノルム値の収集。
3.最小L1ノルム距離を求め、動きベクトルを決定するために最良のL1ノルムを探
索。
ここで、L1ノルムとは2点間の距離に相当する値である。
【0035】
図3に本アーキテクチャを画像動き検出装置に適用した例を示す。縦軸に時間経過に対する各単位プロセッサのタスク処理状態を示し、横軸に単位プロセッサに対応する各ピクセルのデータを示す。なお、この単位プロセッサは図1(b)に示すDSP(コアプロセッサDij)とゲートウェイSijで構成されている。
動き検出のアプローチは図3に示すように、セグメントバスを用いて全てのコアプロセッサDijに同時にデータを送信(転送)することで、上述した3つの処理を効率的に実行できる。
上述したように、動き検出の動作は基本的に3つの処理から成っている。具体的に説明すると以下のようになる。
【0036】
第一に、絶対値差分の演算と同時に同じプロセッサでL1ノルム演算のための差分の累算を行う。ただし、絶対値差分命令と累算命令の2回動作する必要がある。
第二に、スキューを伴った絶対値差分の累算を行う。このため、累算を行った単位プロセッサの右隣では、セグメントバスに乗せるピクセルの値が一つ次の値に変化していることが望ましい。
第三に、計算されたL1ノルム中の最小のL1ノルムと、新しく演算終了したL1ノルムの比較を行い、新しい最小のL1ノルムを決定する。
【0037】
図3に示すように、ステップ(Step)NでピクセルNの値が入力されると、参照ピクチャのピクセルデータ(値)をバスに転送する。すると、コアプロセッサDij(D11,D12,・・・,D18)は現在のブロックのピクセル値を保持する。
ステップ(Step)1でタスク(1)に関してコアプロセッサD11で演算処理(情報収集も含む)が行われる。ステップ2で、タスク(2)に関してコアプロセッサD11,D12で同時に演算処理が行われる。ステップ3で、タスク(3)に関してコアプロセッサD11,D12,D13で同時に演算処理が行われる。同様に、コアプロセッサD18まで繰り返す。
【0038】
以下に第2ステップを中心に動作を説明する。図3において、単位プロセッサに保存されているピクセル値diとdjの位置から開始する参照ピクセル値の絶対値差分の命令は以下の通りになり、これはj番目のL1ノルム値の演算をすることになる。
【0039】
(数2) |di−en+i| n=1,2,・・・,K ・・・(2)
i番目コアプロセッサD1i絶対値の累算命令は、前のコアプロセッサから送られてきた累算結果に、i番目の絶対値差分の結果を加えることで実行される。絶対値差分の累算は最も右にあるコアプロセッサD18で終了する。
【0040】
次に、(数2)に関する具体演算例を図4に示す。図4(a)にn=0のとき、1フレーム前の参照ピクチャ(ピクセル)値e1,e2,e3,・・・,e8がセグメントバスからステップに応じてコアプロセッサD11,D12,・・・,D18に転送される。なおこのとき、各コアプロセッサD11,D12,・・・,D18には現在のブロックのピクセル値を保持している。
ステップ1で、ピクセル値e1がコアプロセッサD11に転送され、そこでd1−e1の演算(ノルムL1の)計算が行われる。
ステップ2で、ピクセル値e2がコアプロセッサD11,D12に転送され、コアプロセッサD11でd1−e2の演算が行われ、コアプロセッサD12でd2−e2の演算が行われる。ステップ3で、ピクセル値e3がコアプロセッサD11,D12,D13に転送され、コアプロセッサD11でd1−e3の演算が行われ、コアプロセッサD12でd2−e3の演算が行われ、コアプロセッサD13でd3−e3の演算が行われる。以下同様に、ステップ8まで繰り返される。
そして、d1−e1,d2−e2,・・・,d8−e8の各値の絶対値を求め全てを加算する。
次に、n=1のときは、図4(a)と同様に、d1−e2,d2−e3,d3−e4,・・・,d8−e9の各値を求めそれぞれの絶対値を求め全てを加算する。これをn=kまで繰り返すことにより絶対値の累積加算を計算する。この各n=0〜Kの値に対する差分絶対値の累積加算結果を図4(b)に示す。
【0041】
図4(a)に示すように、ディジタル信号演算処理において絶対値差分演算と累積の2ステップを実行するため、コアプロセッサDij(D11〜D18)の接続バスの時分割使用が必要となる。結果として、長さKのブロックを、+−(プラス・マイナス)Pピクセルの探索範囲で同じ長さのブロックと比較する場合、2*(K+p)ステップで処理が可能である。ここで、*印は乗算記号を表し、pはパイプラインスキューにより要求される値である。また、この方法を用いることで、K個のノルムを並列に計算することが出来る。
【0042】
この説明は一次元の場合であるが、二次元の動き検出についてもこの方法の簡単な拡張で処理することが出来る。しかし、セグメントバスは4から8個のプロセッサの接続に限定しているため、情報を伝達すべきプロセッサに直接データを接続し、情報を伝達することで、パイプラインの処理の2から4ステップ程度の増加で効率よく処理が出来る。
【0043】
次に、ディジタル信号処理装置を用いた高速ベクトル掛算処理について説明する。
コアプロセッサDijにゲートウェイSijの導入により、高速なベクトル行列掛算を効率的に実行することが出来る。
N×Nの行列をA={xij}とし、積をN次元ベクトルY={bi}として、行列とベクトルの掛算を説明する(ここで、Nは正の整数)。
全てのベクトルXの要素xi、例えばx1をセグメントバスを介してゲートウェイSijに流す(転送する)と、ブロックにあるN個のコアプロセッサDijがAi1×x1の演算を並列に実行する。Xの要素一個毎にYの要素を求める累算が実行される。Nステップ経過すると、bjの累算が全ての単位プロセッサで完了する。
【0044】
次に図5を用いて、本発明の高速演算のアーキテクチャを用いたベクトル行列掛算の動作を具体的に説明する。
図5(a)に示すように、i,j=1〜3としたときの、3行3列のマトリックスに3行1列のマトリックスを掛算する例を示す。図5(a)のマトリックスの要素a11,a12,・・・,a33とx1,・・・,x3をセグメントバスを介してステップに応じてコアプロセッサDij(D11,D12,,・・・,D33)に転送する(図5(b)参照)。
具体例として図5(b),(c)に示すように、ゲートウェイSijを切り替えて、まずステップ1でセグメントバスを介してマトリックス要素x1をa11,a21,a31に対応するコアプロセッサDijに転送し、そのコアプロセッサDij(D11,D21,D31)でそれぞれa11*x1,a12*x1,a13*x1の演算を行う。
ステップ2において、ゲートウェイSijを切り替えて、セグメントバスを介してマトリックス要素x2がD12,D22,D32に転送される。コアプロセッサD12でa12*x2の演算を行うと共にステップ1で計算されたa11*x1を加算して、a11*x1+a12*x2を求める。
また、コアプロセッサD22において、マトリックス要素x2がa22と掛算が行われると共に、ステップ1で計算されたa21*x1と加算して、a21*x1+a22*x2を求める。さらに、このステップ2で、マトリックス要素x2がa32と掛算されてa32*x2を計算すると共に、ステップ1で計算されたa31*x1と加算されてa31*x1+a32*x2を求める。
ステップ3において、ゲートウェイSijを切り替えて、セグメントバスを介してマトリックス要素x3がコアプロセッサD13,D23,D33に転送される。コアプロセッサD13でa13*x3の演算を行うと共にステップ2で計算された値を加算して、a11*x1+a12*x2+a13*x3を求める。
また、コアプロセッサD23において、マトリックス要素x3がa23と掛算が行われると共に、ステップ2で計算された値と加算して、a21*x1+a22*x2+a23*x3を求める。さらに、コアプロセッサD33において、マトリックス要素x3がa33と掛算されてa33*x3を計算すると共にステップ2で計算された値と加算されてa31*x1+a32*x2+a33*x3を求める。
【0045】
このように、コアプロセッサDijにゲートウェイSijを導入したことにより行列ベクトル演算や変換などが効率的に実行可能であるが、高速アルゴリズムはこのアーキテクチャでは利用できない。これは、細粒度のマルチプロセッサアーキテクチャに高速アルゴリズム向き機能を盛り込むと高速な内部バスや外部メモリが必要となり、消費電力が大きくなる傾向があるためである。
【0046】
次に、他の実施形態例であるFFT(Fast Fourie Transformer)の例について説明する。図6(a)に示す高速演算アーキテクチャは、演算器と高速バス(またはデータ交換用配線)が交互に配置され、また演算結果を一時保持する一時保存用メモリを備えている。
図6(a)に示すように、一次元の入力を最初の線形配列の単位プロセッサ(コアプロセッサ(D11,D21,・・・DN1)とゲートウェイS11,S12,・・・,S1N)に入力する。最初のプロセッサ配列(D11,D21,・・・DN1)は次のプロセッサの配列(D12,D22,・・・DN2)にデータを入れ替えながら転送するので、長い配線のスイッチで構成する必要がある(図6(b)参照)。加えて、データを入れ替えるための機能は全てのプロセッサ配列に対して必要になる。そのため、チップ面積と配線容量は増加し、結果として消費電力の増加につながる。さらに、一次元の処理にはlogNの配列で処理を終えることができるが、全ての演算結果はビット反転を行ってメモリに格納しなければならない。もし、二次元の処理を行うのであれば、一次元出力を縦横に変換をするために並べ替えを行う必要があり、さらに必要な機能が増加す。
【0047】
一方、本発明のアーキテクチャではFFT演算処理において、もし全ての単位プロセッサが普通の順序でひねり因子(Twiddle Factor)ベクトル(FFTの計算の場合の位相回転値)を保持している場合、前述した行列とベクトルの演算方法を用いることで演算を終了する。さらに、もし二次元の処理が必要になった場合、全ての単位プロセッサで垂直のセグメントバスを構成し、セグメントバス単位で一次元のDFTの演算を実行する。これにより二次元の演算が処理可能である。追加のハードウェアは必要としないため、高速演算がマルチプロセッサと比較して、携帯端末に向いたアーキテクチャであるといえる。
【0048】
次に、上述したコアプロセッサDijとゲートウェイSijを有する(単位)プロセッサアレーをディジタル信号(画像)処理装置に導入したときの効率的な演算処理について述べる。
ビデオ信号のフレーム間隔は33ミリ秒で、クロックを10MHzにセットした場合、ピクセルと単位プロセッサの数が同じであれば330,000回(ステップ)の画面(画像)処理が可能になる。処理対象の画像に存在するMN個のピクセルとV個の単位プロセッサがチップにある場合について説明する。全てのプロセッサはMN/V回時分割使用しなければならない(ここで、N,Mは正の整数)。
【0049】
現在、2000個程度のプロセッサが単一チップ上に実装可能であるが、LSIのプロセスが後2世代進めば8000個のプロセッサが実装可能である。20MHzのセグメントバスと8000個のプロセッサを用いることで、1TOPSが実現化できる。将来、さらに微細加工技術が進歩し、プロセッサ数が増加しても同じプロセッサ構造を維持できるように、図7のような単純に拡張できる構造を持ったマルチプロセッサを構成することができる。
【0050】
次に、図7に示す本発明のアーキテクチャを用いたシステムでSIF画像(352*340画素)の処理を行う例について述べる。
このシステムは352*4個のコアプロセッサ(Dij)とゲートウェイSijの配列と、ピクチャデータを保存する外部メモリ(フレームメモリ)で構成される。フレームのインターバルの間に全ての単位プロセッサが60回の操作を時分割して処理を完了し、外部メモリから次に処理を行う画素と交換を行う。
【0051】
DSP(単位プロセッサ)の内部メモリ、例えばRAMは256ワードであり、1フレーム当り60回利用する。つまり、4ワードを割り当てるか、4フレームをチップに保存することが可能である。全ての時間において、全ての4ラインは並列に実行され、その都度、全てのDSP(単位プロセッサ)は内部の60メモリバンクの交換を行う。したがって、処理のステップに関しては、それぞれ4*352ピクセルにおいて5,500ステップが使用可能である。プロセッサで構成するので、要求される消費電力は75mW程度になる。
【0052】
このシステムを評価するために、例えば、水平と垂直方向に+−8ピクセルの範囲(ブロックを囲んで外側に8ピクセル広げた範囲を示す)のフルサーチの動き予測を行う場合について述べる。
ここで、ブロックサイズは16*16ピクセルとする。ブロックサイズはコアプロセッサDij(i,j=8)の数の4倍なので、リアルタイムな処理が必要な場合は、22,000ステップが使用可能である。図7に示すように、このアプローチは垂直方向に16ノルムの2*(16+16)ステップと、16*353の領域に対して16ピクセルずれた参照位置を設定する。この処理に必要なステップ数は、2*(16+16)*16=736となる。22,000ステップがリアルタイムの処理で可能なステップなので、使用可能なステップの4%程度のステップでフルサーチの動き予測が可能である。演算効率はパイプラインの遅延によって、従来の処理よりも悪くなるが、パイプラインを注意深く設計することで、従来の処理と変わらないくらいの効率で実現が可能である。
【0053】
次に、図8に本発明のDSPにおける演算量について述べる。前述したように、図7に示したアーキテクチャを用いることで、動き予測や行列など、様々な演算を高速に実行することができる。このアーキテクチャを使用した場合に、一般に用いられる処理を行う場合に要求されるステップ数を求めた結果を図8に示す。以下この図8のアプリケーションの演算量について説明する。
【0054】
動き補償については前述したように、ブロックサイズK=N、スキューp=N、探索範囲をMとすると、2*(N+M)*Mステップが必要となる。
N*N個のブロックからの情報収集については、ブロックの中心にデータを収集していくことで、縦方向・横方向共にNステップで実効可能で、N+N=2Nステップで情報収集ができる。また、この情報収集と同時に比較演算を実行することも可能である。
N*N個のブロックに対して情報伝達を行う場合は、セグメントバスを用いることで高速に実行するできる。ゲートウェイSijに接続が可能なコアプロセッサDijの数をK(K<<N)とすると、縦方向・横方向それぞれ2N/Kステップで情報の伝達が可能である。
【0055】
次に、二次元のFIRフィルタについては、フィルタの計数とピクセル値の乗算を行い、その結果を収集するだけなので、縦方向と横方向の情報収集だけで実効可能である。フィルタのタップ数をNとすると、NNステップで演算が終了する。
【0056】
DFTについても、ひねり因子を内部ROMに蓄えておくことでマトリックスとベクトルの乗算で実効することが可能である。上述したコアプロセッサDijとゲートウェイSijを有するディジタル信号処理装置は入力値の乗算と、演算結果の累算を同時にできるアーキテクチャを持っているので、実数のみの処理の場合は、2*(2N)ステップで処理が可能である。しかし、虚数の処理も行う場合、演算量は増加する。入力が実数の一次元処理の後に二次元処理を行うと、2N+4Nステップ、入力が虚数だった場合には2*(4N)ステップ必要となる。
【0057】
位相限定相関法において、DFT(Discrete Fourier Transform)とIDFT(Inverse Discrete Fourier Transform)、そしてブロックマッチングが行われる。つまり、二次元DFTに関する二回の処理とデータ収集、及び比較の処理が必要になる。ブロックサイズをN*N個とすると、最大値検出は2Nステップとなり、6N+8N+2N=16Nステップ必要となる。この演算には除算を考慮していないが、仮に除算を含めるとしても除算1回に対して増加するステップは1なので、無視できる演算量の増加である。
【0058】
これらの演算量は、いずれも単位プロセッサが十分に存在し、またパイプラインの遅延も考慮していないため、実際には多少の誤差が発生する可能性がある。しかし、処理量と比較して非常に小さいものであり、並列プロセッサは十分に効率的に動作する。
【0059】
このように、本発明において、全ての単位プロセッサは、簡単なゲートウェイ部分と、簡単化した第一世代DSPの二つで構成し、ゲートウェイ部分は上述した非特許文献3で開示したゲートチップと同様な機能、つまり、両隣のチップとの通信を行う機能を持っている。この接続はシストリックアレーのアプローチに基づいているが、ローカルな限定された数のプロセッサとセグメントバスで接続する機能を持たせた。このバスによりフィルタリングや変換、動き推定などのDSPの演算処理を高速化することができる。また、DSP部分は内部メモリを一時的に管理することも必要で、ピクセルベースのDSPの処理も行えるようにした。
シストリックのようなプロセッサアレーのディジタル信号処理装置にセグメントバスを導入することで、例えばSIF画像処理を効率的に処理することができる。また、高速演算アルゴリズムは実行可能であり、フルサーチの動き検出などは数%のステップ増加で処理できる。さらに、HDTVの処理については、非常に簡単なDSP部分の設計により、単位プロセッサの数を増やすことで実行可能である。
【0060】
以上述べたように、本発明のTOPS DSPアーキテクチャは、低消費電力でプログラマブルなHDTVの処理をはじめとして画像処理を行うことができる。このマルチプロセッサの処理能力は0.06から0.1TOPSと高速になり、また、1チップ上に多数の単位プロセッサを構成し、かつ低消費電力での動作が可能となる。
【図面の簡単な説明】
【0061】
【図1】ディジタル信号処理装置のブロック構成を示す図である。
【図2】ディジタル信号処理装置のセグメントバスを用いた動作を示す図である。
【図3】ディジタル信号処理装置の差分絶対値の演算処理の例を示す図である。
【図4】ディジタル信号処理装置の差分絶対値の累算の演算処理の例を示す図である。
【図5】ディジタル信号処理装置のマトリックス演算処理の例を示す図である。
【図6】ディジタル信号処理装置の高速バスを用いた演算処理の例を示す図である。
【図7】画像処理を行うディジタル信号処理装置のブロック構成を示す図である。。
【図8】ディジタル信号処理装置の演算処理結果を示す表である。
【図9】従来のディジタル信号処理装置の特性表である。
【符号の説明】
【0062】
10…ディジタル信号処理装置、20,Sij,S11,・・・,S45…ゲートウェイ、Dij,D11,・・・,D45…DSP(コアプロセッサ;コアDSP)、Reg1,・・・,Reg4…レジスタ、G1,・・・,G4…ゲート。

【特許請求の範囲】
【請求項1】
シストリックアレー構成のディジタル信号処理装置において、
アレイ状に配列された複数のコアプロセッサと、
上記コアプロセッサに設けられ、データの入出力を制御するゲートウェイと、
上記配列された複数のコアプロセッサとゲートウェイで構成される特定領域でデータを転送するセグメントバスと、
上記ゲートウェイを制御して上記セグメントバスを介して、上記コアプロセッサ間でデータ転送する制御部と
を有するディジタル信号処理装置。
【請求項2】
上記ゲートウェイは、レジスタ、ゲートとバイパス手段を有する
請求項1記載のディジタル信号処理装置。
【請求項3】
上記ディジタル信号処理装置は、上記制御部により上記ゲートウェイを制御することにより上記コアプロセッサとゲートウェイを一対とした単位プロセッサが隣接して配列された特定領域が選択される
請求項1記載のディジタル信号処理装置。
【請求項4】
上記特定領域は、該領域のコアプロセッサで他の領域に対して独立して演算処理が行われる
請求項1記載のディジタル信号処理装置。
【請求項5】
上記レジスタは上記コアプロセッサの縦横に設けられ、上記バイパスが縦方向または横方向に設けられ、該バイパスと上記レジスタから供給されるデータを切り替えて転送するゲートを有する
請求項1記載のディジタル信号処理装置。
【請求項6】
上記バイパスは、上記制御部で制御されて、上記ゲート同士に直接データが伝送される
請求項5記載のディジタル信号処理装置。
【請求項7】
上記ゲートウェイは、上記制御部により制御されて、特定のコアプロセッサで処理された結果を、同じステップで他のコアプロセッサに転送する
請求項1記載のディジタル信号処理装置。
【請求項8】
上記複数のコアプロセッサは同一半導体チップに形成された
請求項1記載のディジタル信号処理装置。
【請求項9】
シストリックアレー構成のディジタル信号処理装置において、
アレイ状に配列された複数のコアプロセッサと、
上記コアプロセッサに第1と第2のレジスタが接続され、上記第1のジスタに第1のゲートが接続され、上記第2のジスタに第2のゲートが接続され、上記第1と第2のゲート間に第1のバイパスが設けられたゲートウェイと、
上記配列された複数のコアプロセッサとゲートウェイで構成される特定領域でデータを転送するセグメントバスと、
上記ゲートウェイを制御して上記セグメントバスを介して、上記コアプロセッサ間でデータ転送する制御部と
を有するディジタル信号処理装置。
【請求項10】
上記ゲートウェイは、上記コアプロセッサに第3と第4のレジスタが接続され、上記第3のジスタに第3のゲートが接続され、上記第4のジスタに第4のゲートが接続され、上記第3と第4のゲート間に第2のバイパスが設けられた
請求項9記載のディジタル信号処理装置。
【請求項11】
上記ディジタル信号処理装置は、上記制御部により上記ゲートウェイを制御することにより上記コアプロセッサとゲートウェイを一対とした単位プロセッサが隣接して配列された特定領域が選択される
請求項9記載のディジタル信号処理装置。
【請求項12】
上記特定領域は、該領域のコアプロセッサで他の領域に対して独立して演算処理が行われる
請求項9記載のディジタル信号処理装置。
【請求項13】
上記第1と第2のバイパスは、上記制御部で制御されて、上記第1と第3、または第2と第4のゲート同士で直接データが伝送される
請求項9記載のディジタル信号処理装置。
【請求項14】
上記ゲートウェイは、上記制御部により制御されて、特定のコアプロセッサで処理された結果を、同じステップで他のコアプロセッサに転送する
請求項9記載のディジタル信号処理装置。
【請求項15】
上記複数のコアプロセッサは同一半導体チップに形成された
請求項9記載のディジタル信号処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate