説明

並列信号処理装置

【課題】データ転送におけるレイテンシーの遅れや、データ転送機構以外の回路の増大を伴うことなく、演算器の並列度を高めても、急激な回路規模の増大を抑えることができるようにする。
【解決手段】演算器1−1〜1−nが、自己が接続されているローカル共有バス2に接続されている共有メモリ3から隣接している他の演算器1の演算結果を読み出して、その演算結果に対する所定の演算処理を実施し、その演算処理の演算結果を上記ローカル共有バス2に接続されている上記共有メモリ3以外の共有メモリ3に書き込むように構成する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、プログラム可能な複数の演算器を実装して、デジタル信号処理を並列に行う並列信号処理装置に関するものである。
【背景技術】
【0002】
例えば、デジタルスチルカメラ、デジタルビデオカメラ、デジタルテレビやPC(パーソナルコンピュータ)グラフィックスなどの分野では、高速かつ大量のデジタル画像信号を処理する必要があるため、大規模な専用ハードウェア(例えば、LSI)の開発が行われている。
一方、デジタル画像信号に対する信号処理アルゴリズムが短期間で高度化・複雑化していく傾向にあるため、専用ハードウェアを開発する上で、短期間で高度化・複雑化する信号処理アルゴリズムへの追従が困難である。
【0003】
そこで、プログラマビリティが高い高速プロセッサやDSP(Digital Signal Processor)から構成されている画像処理装置の開発も行われている。
しかしながら、画像の高解像度化や高画質化に伴って、画像処理装置に対する要求性能が増大しているため、単独のプロセッサやDSPでは、演算処理量や演算精度の不足、あるいは、高速クロック化の限界が問題とされている。
そのため、複数の演算器を用いて、データを並列処理する構成で演算処理能力を高める方法が考えられている。
【0004】
複数のプログラマブルな演算器を用いて、並列信号処理装置を構成する場合、複数の演算器の間で中間データを交換するために、複数の共有メモリを実装する必要がある。
このとき、複数の演算器と共有メモリを接続する方法を決定するに際して、データ転送性能と回路規模がトレードオフの関係となり、適正な接続方法を選択することが重要となる。
例えば、図6に示すように、全ての演算器と共有メモリが1対1で、任意に接続することが可能なクロスバー型のマトリクスバス構成の場合、データ転送性能は高いが、演算器の個数Nに対して、N本相当のバスが必要となるため、演算器の並列度が増加すると、急激に回路規模が増大する課題がある。
【0005】
このような課題を踏まえて、以下の特許文献1では、複数の演算器と複数の共有メモリをリング形状バスで結び、マスタースレーブ(各演算器=マスタノード、各共有メモリ=スレーブノード)間で、パケット通信によるデータ転送を実現している並列信号処理装置を開示している。
しかしながら、リング形状バスでデータ転送を行う場合、マスタースレーブ間でパケット通信を行うため、データ転送のレイテンシーが一定でなくなり遅くなる。
また、あるマスタノードとスレーブノード間でデータ転送を行っているとき、別のマスタノードとスレーブノード間でデータ転送を行うと、転送帯域が分割されて低下する問題が生じる。
さらに、マスタースレーブのパケット通信のために、本来のデータ転送機構以外の回路が増大する問題も生じる。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開平9−91262号公報(図1)
【発明の概要】
【発明が解決しようとする課題】
【0007】
従来の並列信号処理装置は以上のように構成されているので、複数の演算器と複数の共有メモリをリング形状バスで結び、マスタースレーブ(各演算器=マスタノード、各共有メモリ=スレーブノード)間で、パケット通信によるデータ転送を実現すれば、演算器の並列度が増加しても、急激な回路規模の増大を抑えることができる。しかし、マスタースレーブ間でパケット通信を行うため、データ転送のレイテンシーが一定でなくなり遅くなる課題があった。
また、あるマスタノードとスレーブノード間でデータ転送を行っているとき、別のマスタノードとスレーブノード間でデータ転送を行うと、転送帯域が分割されて低下する課題があり、また、マスタースレーブのパケット通信のために、本来のデータ転送機構以外の回路が増大してしまう課題があった。
【0008】
この発明は上記のような課題を解決するためになされたもので、データ転送におけるレイテンシーの遅れや、データ転送機構以外の回路の増大を伴うことなく、演算器の並列度を高めても、急激な回路規模の増大を抑えることができる並列信号処理装置を得ることを目的とする。
【課題を解決するための手段】
【0009】
この発明に係る並列信号処理装置は、複数の演算器の中のいずれかの演算器を接続している複数のローカル共有バスと、複数のローカル共有バスのうち、隣接している2つのローカル共有バスに接続されている複数の共有メモリとを設け、複数の演算器が、自己が接続されているローカル共有バスに接続されている共有メモリから隣接している他の演算器の演算結果を読み出して、その演算結果に対する所定の演算処理を実施し、その演算処理の演算結果を自己が接続されているローカル共有バスに接続されている上記共有メモリ以外の共有メモリに書き込むようにしたものである。
【発明の効果】
【0010】
この発明によれば、複数の演算器の中のいずれかの演算器を接続している複数のローカル共有バスと、複数のローカル共有バスのうち、隣接している2つのローカル共有バスに接続されている複数の共有メモリとを設け、複数の演算器が、自己が接続されているローカル共有バスに接続されている共有メモリから隣接している他の演算器の演算結果を読み出して、その演算結果に対する所定の演算処理を実施し、その演算処理の演算結果を自己が接続されているローカル共有バスに接続されている上記共有メモリ以外の共有メモリに書き込むように構成したので、データ転送におけるレイテンシーの遅れや、データ転送機構以外の回路の増大を伴うことなく、演算器の並列度を高めても、急激な回路規模の増大を抑えることができる効果がある。
【図面の簡単な説明】
【0011】
【図1】この発明の実施の形態1による並列信号処理装置を示す構成図である。
【図2】演算器1−1〜1−nの内部を示す構成図である。
【図3】この発明の実施の形態1による並列信号処理装置がJPEGの画像符号化信号処理を実施する場合の処理内容を示すフローチャートである。
【図4】図3の画像符号化信号処理を実施する際、演算器1−1〜1−3がパイプライン構成で並列信号処理を実現している様子を示す説明図である。
【図5】この発明の実施の形態2による並列信号処理装置を示す構成図である。
【図6】クロスバー型のマトリクスバス構成の並列信号処理装置を示す構成図である。
【発明を実施するための形態】
【0012】
実施の形態1.
図1はこの発明の実施の形態1による並列信号処理装置を示す構成図である。
図1では、演算対象のデータを入力して、そのデータに対する所定の演算処理を実施する演算器がn個実装されて、n個の演算器1−1〜1−nが並列に動作する例を示している。
図1において、演算器1−1〜1−nはそれぞれローカル共有バス2−1〜2−nに接続されており、信号処理用の処理プログラムを格納するRAM・ROMなどの記録媒体や、プログラムカウンタなどを実装し、その処理プログラムを実行することで、信号データの演算や共有メモリ3に対するアクセス動作を実現している。
即ち、演算器1−1〜1−nは自己が接続されているローカル共有バス2に接続されている共有メモリ3(例えば、演算器1−2の場合、共有メモリ3−2)から隣接している他の演算器1の演算結果(例えば、演算器1−2の場合、演算器1−1の演算結果)を読み出して、その演算結果に対する所定の演算処理を実施し、その演算処理の演算結果を自己が接続されているローカル共有バス2に接続されている上記共有メモリ3以外の共有メモリ3(例えば、演算器1−2の場合、共有メモリ3−3)に書き込む処理を実施する。
【0013】
ローカル共有バス2−1〜2−nは1つの演算器1と2つの共有メモリ3を接続しているバスである。
ただし、図1では、1つのローカル共有バス2に対して、2つの共有メモリ3が接続されている例を示しているが、共有メモリ3が接続されている個数は2個に限定されるものではなく、1つのローカル共有バス2に対して、3つ以上の共有メモリ3が接続されていてもよい。
【0014】
共有メモリ3−1〜3−n+1は隣接している2つのローカル共有バス2に接続されており(例えば、共有メモリ3−3は、ローカル共有バス2−2とローカル共有バス2−3に接続されている)、演算器1−1〜1−nの演算結果等を格納する記録媒体である。
ただし、共有メモリ3−1はローカル共有バス2−1とデータ入力バス4に接続されており、データ入力バス4から演算対象のデータを入力して、そのデータを格納する。
また、共有メモリ3−n+1はローカル共有バス2−nとデータ出力バス5に接続されており、演算器1−nの演算結果をデータ出力バス5に出力する。
【0015】
図2は演算器1−1〜1−nの内部を示す構成図である。
図2において、命令メモリ11は例えばRAMなどの記録媒体であり、機能分割されている信号処理用の処理プログラムを格納している。
制御部12は例えばプログラムカウンタ、ROMや制御回路などを備えており、命令メモリ11により格納されている処理プログラム内の命令を順次読み出して、その命令に対応する動作をALU(Arithmetic and Logic Unit)13、レジスタファイル14及びバスI/F15に指示する処理を実施する。
【0016】
ALU13は制御部12の指示の下、レジスタファイル14から出力された演算対象のデータに対して、例えば、算術演算や論理演算などの算術論理演算や、データシフトなどを行うマイクロプロセッサである。
レジスタファイル14はレジスタ群又はRAM等で構成されており、他の演算器の演算結果(あるいは、データ入力バス4から入力された演算対象のデータ)や、ALU13の演算結果などを格納する。
バスI/F15は例えばアドレス生成回路やバス制御回路を備えており、制御部12の指示の下、ローカル共有バス2(あるいは、データ入力バス4、データ出力バス5)にアクセスする。
【0017】
次に動作について説明する。
共有メモリ3−1は、データ入力バス4から演算対象のデータを入力して、そのデータを格納する。
演算器1−1は、ローカル共有バス2−1に接続されている共有メモリ3−1から演算対象のデータを読み出して、そのデータに対する所定の演算処理を実施し(例えば、ALU13が、演算対象のデータに対する算術演算を実施する)、その演算処理の演算結果をローカル共有バス2−1に接続されている共有メモリ3−2に書き込む処理を実施する。
【0018】
演算器1−2は、ローカル共有バス2−2に接続されている共有メモリ3−2から演算器1−1の演算結果を読み出して、その演算結果に対する所定の演算処理を実施し(例えば、ALU13が、演算器1−1の演算結果に対する算術演算を実施する)、その演算処理の演算結果をローカル共有バス2−2に接続されている共有メモリ3−3に書き込む処理を実施する。
演算器1−3〜1−n−1は、演算器1−2と同様に、ローカル共有バス2−3〜2−n−1に接続されている共有メモリ3−3〜3−n−1から演算器1−2〜1−n−2の演算結果を読み出して、その演算結果に対する所定の演算処理を実施し(例えば、ALU13が、演算器1−2〜1−n−2の演算結果に対する算術演算を実施する)、その演算処理の演算結果をローカル共有バス2−3〜2−n−1に接続されている共有メモリ3−4〜3−nに書き込む処理を実施する。
【0019】
演算器1−nは、ローカル共有バス2−nに接続されている共有メモリ3−nから演算器1−n−1の演算結果を読み出して、その演算結果に対する所定の演算処理を実施し(例えば、ALU13が、演算器1−n−1の演算結果に対する算術演算を実施する)、その演算処理の演算結果をローカル共有バス2−nに接続されている共有メモリ3−n+1に書き込む処理を実施する。
共有メモリ3−n+1は、演算器1−nの演算結果をデータ出力バス5に出力する。
これにより、n個の演算器1によりパイプラインが構成されて、並列信号処理を実現することが可能になる。
【0020】
ここで、図3はこの発明の実施の形態1による並列信号処理装置がJPEGの画像符号化信号処理を実施する場合の処理内容を示すフローチャートである。
図4は図3の画像符号化信号処理を実施する際、演算器1−1〜1−3がパイプライン構成で並列信号処理を実現している様子を示す説明図である。
【0021】
図3に示すJPEGの画像符号化信号処理では、「DCT変換処理」と「量子化処理」と「可変長符号化処理」が行われるが、図4に示すように、「DCT変換処理」が演算器1−1、「量子化処理」が演算器1−2、「可変長符号化処理」が演算器1−3に割り当てられ、演算器1−1〜1−3がパイプライン構成で、画像符号化信号処理を並列に実行する。
具体的には、以下のようにして、画像符号化信号処理を並列に実行する。
【0022】
共有メモリ3−1は、データ入力バス4から演算対象のデータである画像データを入力して、その画像データを格納する。
演算器1−1は、画像データが共有メモリ3−1に格納されると、その共有メモリ3−1から画像データを読み出して、その画像データをDCT変換し、DCT変換後の画像データであるDCT変換データを共有メモリ3−2に格納する(ステップST1)。
【0023】
演算器1−2は、演算器1−1がDCT変換データを共有メモリ3−2に格納すると、その共有メモリ3−2からDCT変換データを読み出して、そのDCT変換データを量子化し、量子化後のDCT変換データである量子化データを共有メモリ3−3に格納する(ステップST2)。
【0024】
演算器1−3は、演算器1−2が量子化データを共有メモリ3−3に格納すると、その共有メモリ3−3から量子化データを読み出して、その量子化データを可変長符号化し、可変長符号化後の量子化データである可変長符号化データを共有メモリ3−4に格納する(ステップST3)。
共有メモリ3−4は、可変長符号化データをデータ出力バス5に出力する。
【0025】
以上で明らかなように、この実施の形態1によれば、演算器1−1〜1−nの中のいずれかの演算器1を接続しているローカル共有バス2−1〜2−nと、ローカル共有バス2−1〜2−nのうち、隣接している2つのローカル共有バス2に接続されている共有メモリ3−1〜3−n+1とを設け、演算器1−1〜1−nが、自己が接続されているローカル共有バス2に接続されている共有メモリ3から隣接している他の演算器1の演算結果を読み出して、その演算結果に対する所定の演算処理を実施し、その演算処理の演算結果を自己が接続されているローカル共有バス2に接続されている上記共有メモリ以外の共有メモリ3に書き込むように構成したので、データ転送におけるレイテンシーの遅れや、データ転送機構以外の回路の増大を伴うことなく、演算器1の並列度を高めても、急激な回路規模の増大を抑えることができる効果を奏する。
【0026】
即ち、ローカル共有バス2−1〜2−nには、限定された共有メモリ3が接続されるのみであるため、バス制御回路(図示せず)の構成が複雑にならず、小型化することができる。また、バス配線領域を削減することができるとともに、バス転送クロックの高速化も容易に図ることができる。
また、バス制御回路と配線領域を削減することで、低消費電力化を図ることができる。
さらに、並列度を高めるために演算器1と共有メモリ3の個数を増加させても、1つのローカル共有バス2に接続される演算器1と共有メモリ3の個数が増加しないため、バス性能の低下を招くことなく、効率的に演算性能を高めることができる。したがって、柔軟な拡張性を効率的に実現することができる。
【0027】
実施の形態2.
図5はこの発明の実施の形態2による並列信号処理装置を示す構成図であり、図において、図1と同一符号は同一又は相当部分を示すので説明を省略する。
グローバル共有バス6は全ての共有メモリ3−1〜3−n+1と接続されているバスである。
ダイレクトメモリアクセスコントローラであるDMA7は任意の共有メモリ3に格納されているデータをグローバル共有バス6経由で他の共有メモリ3に転送する処理を実施する。
ただし、図5の例では、データ入力バス4が共有メモリ3−1に接続されておらず、データ出力バス5が共有メモリ3−n+1に接続されていない。
【0028】
上記実施の形態1では、隣接している演算器1間でデータ転送を行っているものについて示したが、稀に少量のデータを隣接外の演算器1間で交換する場合がある。
少量のデータを隣接外の演算器1間で交換するためだけに、従来のマトリクスバス構成を実装することは多くの無駄が発生する。
そこで、この実施の形態2では、隣接している演算器1間のデータ転送だけでなく、隣接外の演算器1間でデータ転送を行えるようにするために、全ての共有メモリ3−1〜3−n+1と接続されているグローバル共有バス6を設け、DMA7が、任意の共有メモリ3に格納されているデータをグローバル共有バス6経由で他の共有メモリ3に転送するようにしている。
これにより、大きな回路の増加を招くことなく、処理性能とプログラマの柔軟性が高い並列信号処理装置を実現することができる。
【符号の説明】
【0029】
1−1〜1−n 演算器、2−1〜2−n ローカル共有バス、3−1〜3−n+1 共有メモリ、4 データ入力バス、5 データ出力バス、6 グローバル共有バス、7 DMA(ダイレクトメモリアクセスコントローラ)、11 命令メモリ、12 制御部、13 ALU、14 レジスタファイル、15 バスI/F。

【特許請求の範囲】
【請求項1】
演算対象のデータを入力して、上記データに対する所定の演算処理を実施する複数の演算器が並列に動作する並列信号処理装置において、
上記複数の演算器の中のいずれかの演算器を接続している複数のローカル共有バスと、上記複数のローカル共有バスのうち、隣接している2つのローカル共有バスに接続されている複数の共有メモリとを設け、
上記複数の演算器が、自己が接続されているローカル共有バスに接続されている共有メモリから隣接している他の演算器の演算結果を読み出して、上記演算結果に対する所定の演算処理を実施し、上記演算処理の演算結果を上記ローカル共有バスに接続されている上記共有メモリ以外の共有メモリに書き込むことを特徴とする並列信号処理装置。
【請求項2】
1つの演算器と2つの共有メモリが1つのローカル共有バスに接続されて、隣接している演算器が1つの共有メモリを共有することで、複数の演算器がパイプライン構成の並列信号処理を実現することを特徴とする請求項1記載の並列信号処理装置。
【請求項3】
複数の共有メモリと接続されているグローバル共有バスと、任意の共有メモリに格納されているデータを上記グローバル共有バス経由で他の共有メモリに転送するダイレクトメモリアクセスコントローラとを設けたことを特徴とする請求項1または請求項2記載の並列信号処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate