(57)【要約】【課題】データ転送におけるレイテンシーの遅れや、データ転送機構以外の回路の増大を伴うことなく、演算器の並列度を高めても、急激な回路規模の増大を抑えることができるようにする。【解決手段】演算器１−１〜１−ｎが、自己が接続されているローカル共有バス２に接続されている共有メモリ３から隣接している他の演算器１の演算結果を読み出して、その演算結果に対する所定の演算処理を実施し、その演算処理の演算結果を上記ローカル共有バス２に接続されている上記共有メモリ３以外の共有メモリ３に書き込むように構成する。【選択図】図１
2011141791.tif 000002
【特許請求の範囲】
【請求項１】
演算対象のデータを入力して、上記データに対する所定の演算処理を実施する複数の演算器が並列に動作する並列信号処理装置において、
上記複数の演算器の中のいずれかの演算器を接続している複数のローカル共有バスと、上記複数のローカル共有バスのうち、隣接している２つのローカル共有バスに接続されている複数の共有メモリとを設け、
上記複数の演算器が、自己が接続されているローカル共有バスに接続されている共有メモリから隣接している他の演算器の演算結果を読み出して、上記演算結果に対する所定の演算処理を実施し、上記演算処理の演算結果を上記ローカル共有バスに接続されている上記共有メモリ以外の共有メモリに書き込むことを特徴とする並列信号処理装置。
【請求項２】
１つの演算器と２つの共有メモリが１つのローカル共有バスに接続されて、隣接している演算器が１つの共有メモリを共有することで、複数の演算器がパイプライン構成の並列信号処理を実現することを特徴とする請求項１記載の並列信号処理装置。
【請求項３】
複数の共有メモリと接続されているグローバル共有バスと、任意の共有メモリに格納されているデータを上記グローバル共有バス経由で他の共有メモリに転送するダイレクトメモリアクセスコントローラとを設けたことを特徴とする請求項１または請求項２記載の並列信号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プログラム可能な複数の演算器を実装して、デジタル信号処理を並列に行う並列信号処理装置に関するものである。
【背景技術】
【０００２】
例えば、デジタルスチルカメラ、デジタルビデオカメラ、デジタルテレビやＰＣ（パーソナルコンピュータ）グラフィックスなどの分野では、高速かつ大量のデジタル画像信号を処理する必要があるため、大規模な専用ハードウェア（例えば、ＬＳＩ）の開発が行われている。
一方、デジタル画像信号に対する信号処理アルゴリズムが短期間で高度化・複雑化していく傾向にあるため、専用ハードウェアを開発する上で、短期間で高度化・複雑化する信号処理アルゴリズムへの追従が困難である。
【０００３】
そこで、プログラマビリティが高い高速プロセッサやＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）から構成されている画像処理装置の開発も行われている。
しかしながら、画像の高解像度化や高画質化に伴って、画像処理装置に対する要求性能が増大しているため、単独のプロセッサやＤＳＰでは、演算処理量や演算精度の不足、あるいは、高速クロック化の限界が問題とされている。
そのため、複数の演算器を用いて、データを並列処理する構成で演算処理能力を高める方法が考えられている。
【０００４】
複数のプログラマブルな演算器を用いて、並列信号処理装置を構成する場合、複数の演算器の間で中間データを交換するために、複数の共有メモリを実装する必要がある。
このとき、複数の演算器と共有メモリを接続する方法を決定するに際して、データ転送性能と回路規模がトレードオフの関係となり、適正な接続方法を選択することが重要となる。
例えば、図６に示すように、全ての演算器と共有メモリが１対１で、任意に接続することが可能なクロスバー型のマトリクスバス構成の場合、データ転送性能は高いが、演算器の個数Ｎに対して、Ｎ本相当のバスが必要となるため、演算器の並列度が増加すると、急激に回路規模が増大する課題がある。
【０００５】
このような課題を踏まえて、以下の特許文献１では、複数の演算器と複数の共有メモリをリング形状バスで結び、マスタースレーブ（各演算器＝マスタノード、各共有メモリ＝スレーブノード）間で、パケット通信によるデータ転送を実現している並列信号処理装置を開示している。
しかしながら、リング形状バスでデータ転送を行う場合、マスタースレーブ間でパケット通信を行うため、データ転送のレイテンシーが一定でなくなり遅くなる。
また、あるマスタノードとスレーブノード間でデータ転送を行っているとき、別のマスタノードとスレーブノード間でデータ転送を行うと、転送帯域が分割されて低下する問題が生じる。
さらに、マスタースレーブのパケット通信のために、本来のデータ転送機構以外の回路が増大する問題も生じる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平９−９１２６２号公報（図１）
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来の並列信号処理装置は以上のように構成されているので、複数の演算器と複数の共有メモリをリング形状バスで結び、マスタースレーブ（各演算器＝マスタノード、各共有メモリ＝スレーブノード）間で、パケット通信によるデータ転送を実現すれば、演算器の並列度が増加しても、急激な回路規模の増大を抑えることができる。しかし、マスタースレーブ間でパケット通信を行うため、データ転送のレイテンシーが一定でなくなり遅くなる課題があった。
また、あるマスタノードとスレーブノード間でデータ転送を行っているとき、別のマスタノードとスレーブノード間でデータ転送を行うと、転送帯域が分割されて低下する課題があり、また、マスタースレーブのパケット通信のために、本来のデータ転送機構以外の回路が増大してしまう課題があった。
【０００８】
この発明は上記のような課題を解決するためになされたもので、データ転送におけるレイテンシーの遅れや、データ転送機構以外の回路の増大を伴うことなく、演算器の並列度を高めても、急激な回路規模の増大を抑えることができる並列信号処理装置を得ることを目的とする。
【課題を解決するための手段】
【０００９】
この発明に係る並列信号処理装置は、複数の演算器の中のいずれかの演算器を接続している複数のローカル共有バスと、複数のローカル共有バスのうち、隣接している２つのローカル共有バスに接続されている複数の共有メモリとを設け、複数の演算器が、自己が接続されているローカル共有バスに接続されている共有メモリから隣接している他の演算器の演算結果を読み出して、その演算結果に対する所定の演算処理を実施し、その演算処理の演算結果を自己が接続されているローカル共有バスに接続されている上記共有メモリ以外の共有メモリに書き込むようにしたものである。
【発明の効果】
【００１０】
この発明によれば、複数の演算器の中のいずれかの演算器を接続している複数のローカル共有バスと、複数のローカル共有バスのうち、隣接している２つのローカル共有バスに接続されている複数の共有メモリとを設け、複数の演算器が、自己が接続されているローカル共有バスに接続されている共有メモリから隣接している他の演算器の演算結果を読み出して、その演算結果に対する所定の演算処理を実施し、その演算処理の演算結果を自己が接続されているローカル共有バスに接続されている上記共有メモリ以外の共有メモリに書き込むように構成したので、データ転送におけるレイテンシーの遅れや、データ転送機構以外の回路の増大を伴うことなく、演算器の並列度を高めても、急激な回路規模の増大を抑えることができる効果がある。
【図面の簡単な説明】
【００１１】
【図１】この発明の実施の形態１による並列信号処理装置を示す構成図である。
【図２】演算器１−１〜１−ｎの内部を示す構成図である。
【図３】この発明の実施の形態１による並列信号処理装置がＪＰＥＧの画像符号化信号処理を実施する場合の処理内容を示すフローチャートである。
【図４】図３の画像符号化信号処理を実施する際、演算器１−１〜１−３がパイプライン構成で並列信号処理を実現している様子を示す説明図である。
【図５】この発明の実施の形態２による並列信号処理装置を示す構成図である。
【図６】クロスバー型のマトリクスバス構成の並列信号処理装置を示す構成図である。
【発明を実施するための形態】
【００１２】
実施の形態１．
図１はこの発明の実施の形態１による並列信号処理装置を示す構成図である。
図１では、演算対象のデータを入力して、そのデータに対する所定の演算処理を実施する演算器がｎ個実装されて、ｎ個の演算器１−１〜１−ｎが並列に動作する例を示している。
図１において、演算器１−１〜１−ｎはそれぞれローカル共有バス２−１〜２−ｎに接続されており、信号処理用の処理プログラムを格納するＲＡＭ・ＲＯＭなどの記録媒体や、プログラムカウンタなどを実装し、その処理プログラムを実行することで、信号データの演算や共有メモリ３に対するアクセス動作を実現している。
即ち、演算器１−１〜１−ｎは自己が接続されているローカル共有バス２に接続されている共有メモリ３（例えば、演算器１−２の場合、共有メモリ３−２）から隣接している他の演算器１の演算結果（例えば、演算器１−２の場合、演算器１−１の演算結果）を読み出して、その演算結果に対する所定の演算処理を実施し、その演算処理の演算結果を自己が接続されているローカル共有バス２に接続されている上記共有メモリ３以外の共有メモリ３（例えば、演算器１−２の場合、共有メモリ３−３）に書き込む処理を実施する。
【００１３】
ローカル共有バス２−１〜２−ｎは１つの演算器１と２つの共有メモリ３を接続しているバスである。
ただし、図１では、１つのローカル共有バス２に対して、２つの共有メモリ３が接続されている例を示しているが、共有メモリ３が接続されている個数は２個に限定されるものではなく、１つのローカル共有バス２に対して、３つ以上の共有メモリ３が接続されていてもよい。
【００１４】
共有メモリ３−１〜３−ｎ＋１は隣接している２つのローカル共有バス２に接続されており（例えば、共有メモリ３−３は、ローカル共有バス２−２とローカル共有バス２−３に接続されている）、演算器１−１〜１−ｎの演算結果等を格納する記録媒体である。
ただし、共有メモリ３−１はローカル共有バス２−１とデータ入力バス４に接続されており、データ入力バス４から演算対象のデータを入力して、そのデータを格納する。
また、共有メモリ３−ｎ＋１はローカル共有バス２−ｎとデータ出力バス５に接続されており、演算器１−ｎの演算結果をデータ出力バス５に出力する。
【００１５】
図２は演算器１−１〜１−ｎの内部を示す構成図である。
図２において、命令メモリ１１は例えばＲＡＭなどの記録媒体であり、機能分割されている信号処理用の処理プログラムを格納している。
制御部１２は例えばプログラムカウンタ、ＲＯＭや制御回路などを備えており、命令メモリ１１により格納されている処理プログラム内の命令を順次読み出して、その命令に対応する動作をＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  ａｎｄ  Ｌｏｇｉｃ  Ｕｎｉｔ）１３、レジスタファイル１４及びバスＩ／Ｆ１５に指示する処理を実施する。
【００１６】
ＡＬＵ１３は制御部１２の指示の下、レジスタファイル１４から出力された演算対象のデータに対して、例えば、算術演算や論理演算などの算術論理演算や、データシフトなどを行うマイクロプロセッサである。
レジスタファイル１４はレジスタ群又はＲＡＭ等で構成されており、他の演算器の演算結果（あるいは、データ入力バス４から入力された演算対象のデータ）や、ＡＬＵ１３の演算結果などを格納する。
バスＩ／Ｆ１５は例えばアドレス生成回路やバス制御回路を備えており、制御部１２の指示の下、ローカル共有バス２（あるいは、データ入力バス４、データ出力バス５）にアクセスする。
【００１７】
次に動作について説明する。
共有メモリ３−１は、データ入力バス４から演算対象のデータを入力して、そのデータを格納する。
演算器１−１は、ローカル共有バス２−１に接続されている共有メモリ３−１から演算対象のデータを読み出して、そのデータに対する所定の演算処理を実施し（例えば、ＡＬＵ１３が、演算対象のデータに対する算術演算を実施する）、その演算処理の演算結果をローカル共有バス２−１に接続されている共有メモリ３−２に書き込む処理を実施する。
【００１８】
演算器１−２は、ローカル共有バス２−２に接続されている共有メモリ３−２から演算器１−１の演算結果を読み出して、その演算結果に対する所定の演算処理を実施し（例えば、ＡＬＵ１３が、演算器１−１の演算結果に対する算術演算を実施する）、その演算処理の演算結果をローカル共有バス２−２に接続されている共有メモリ３−３に書き込む処理を実施する。
演算器１−３〜１−ｎ−１は、演算器１−２と同様に、ローカル共有バス２−３〜２−ｎ−１に接続されている共有メモリ３−３〜３−ｎ−１から演算器１−２〜１−ｎ−２の演算結果を読み出して、その演算結果に対する所定の演算処理を実施し（例えば、ＡＬＵ１３が、演算器１−２〜１−ｎ−２の演算結果に対する算術演算を実施する）、その演算処理の演算結果をローカル共有バス２−３〜２−ｎ−１に接続されている共有メモリ３−４〜３−ｎに書き込む処理を実施する。
【００１９】
演算器１−ｎは、ローカル共有バス２−ｎに接続されている共有メモリ３−ｎから演算器１−ｎ−１の演算結果を読み出して、その演算結果に対する所定の演算処理を実施し（例えば、ＡＬＵ１３が、演算器１−ｎ−１の演算結果に対する算術演算を実施する）、その演算処理の演算結果をローカル共有バス２−ｎに接続されている共有メモリ３−ｎ＋１に書き込む処理を実施する。
共有メモリ３−ｎ＋１は、演算器１−ｎの演算結果をデータ出力バス５に出力する。
これにより、ｎ個の演算器１によりパイプラインが構成されて、並列信号処理を実現することが可能になる。
【００２０】
ここで、図３はこの発明の実施の形態１による並列信号処理装置がＪＰＥＧの画像符号化信号処理を実施する場合の処理内容を示すフローチャートである。
図４は図３の画像符号化信号処理を実施する際、演算器１−１〜１−３がパイプライン構成で並列信号処理を実現している様子を示す説明図である。
【００２１】
図３に示すＪＰＥＧの画像符号化信号処理では、「ＤＣＴ変換処理」と「量子化処理」と「可変長符号化処理」が行われるが、図４に示すように、「ＤＣＴ変換処理」が演算器１−１、「量子化処理」が演算器１−２、「可変長符号化処理」が演算器１−３に割り当てられ、演算器１−１〜１−３がパイプライン構成で、画像符号化信号処理を並列に実行する。
具体的には、以下のようにして、画像符号化信号処理を並列に実行する。
【００２２】
共有メモリ３−１は、データ入力バス４から演算対象のデータである画像データを入力して、その画像データを格納する。
演算器１−１は、画像データが共有メモリ３−１に格納されると、その共有メモリ３−１から画像データを読み出して、その画像データをＤＣＴ変換し、ＤＣＴ変換後の画像データであるＤＣＴ変換データを共有メモリ３−２に格納する（ステップＳＴ１）。
【００２３】
演算器１−２は、演算器１−１がＤＣＴ変換データを共有メモリ３−２に格納すると、その共有メモリ３−２からＤＣＴ変換データを読み出して、そのＤＣＴ変換データを量子化し、量子化後のＤＣＴ変換データである量子化データを共有メモリ３−３に格納する（ステップＳＴ２）。
【００２４】
演算器１−３は、演算器１−２が量子化データを共有メモリ３−３に格納すると、その共有メモリ３−３から量子化データを読み出して、その量子化データを可変長符号化し、可変長符号化後の量子化データである可変長符号化データを共有メモリ３−４に格納する（ステップＳＴ３）。
共有メモリ３−４は、可変長符号化データをデータ出力バス５に出力する。
【００２５】
以上で明らかなように、この実施の形態１によれば、演算器１−１〜１−ｎの中のいずれかの演算器１を接続しているローカル共有バス２−１〜２−ｎと、ローカル共有バス２−１〜２−ｎのうち、隣接している２つのローカル共有バス２に接続されている共有メモリ３−１〜３−ｎ＋１とを設け、演算器１−１〜１−ｎが、自己が接続されているローカル共有バス２に接続されている共有メモリ３から隣接している他の演算器１の演算結果を読み出して、その演算結果に対する所定の演算処理を実施し、その演算処理の演算結果を自己が接続されているローカル共有バス２に接続されている上記共有メモリ以外の共有メモリ３に書き込むように構成したので、データ転送におけるレイテンシーの遅れや、データ転送機構以外の回路の増大を伴うことなく、演算器１の並列度を高めても、急激な回路規模の増大を抑えることができる効果を奏する。
【００２６】
即ち、ローカル共有バス２−１〜２−ｎには、限定された共有メモリ３が接続されるのみであるため、バス制御回路（図示せず）の構成が複雑にならず、小型化することができる。また、バス配線領域を削減することができるとともに、バス転送クロックの高速化も容易に図ることができる。
また、バス制御回路と配線領域を削減することで、低消費電力化を図ることができる。
さらに、並列度を高めるために演算器１と共有メモリ３の個数を増加させても、１つのローカル共有バス２に接続される演算器１と共有メモリ３の個数が増加しないため、バス性能の低下を招くことなく、効率的に演算性能を高めることができる。したがって、柔軟な拡張性を効率的に実現することができる。
【００２７】
実施の形態２．
図５はこの発明の実施の形態２による並列信号処理装置を示す構成図であり、図において、図１と同一符号は同一又は相当部分を示すので説明を省略する。
グローバル共有バス６は全ての共有メモリ３−１〜３−ｎ＋１と接続されているバスである。
ダイレクトメモリアクセスコントローラであるＤＭＡ７は任意の共有メモリ３に格納されているデータをグローバル共有バス６経由で他の共有メモリ３に転送する処理を実施する。
ただし、図５の例では、データ入力バス４が共有メモリ３−１に接続されておらず、データ出力バス５が共有メモリ３−ｎ＋１に接続されていない。
【００２８】
上記実施の形態１では、隣接している演算器１間でデータ転送を行っているものについて示したが、稀に少量のデータを隣接外の演算器１間で交換する場合がある。
少量のデータを隣接外の演算器１間で交換するためだけに、従来のマトリクスバス構成を実装することは多くの無駄が発生する。
そこで、この実施の形態２では、隣接している演算器１間のデータ転送だけでなく、隣接外の演算器１間でデータ転送を行えるようにするために、全ての共有メモリ３−１〜３−ｎ＋１と接続されているグローバル共有バス６を設け、ＤＭＡ７が、任意の共有メモリ３に格納されているデータをグローバル共有バス６経由で他の共有メモリ３に転送するようにしている。
これにより、大きな回路の増加を招くことなく、処理性能とプログラマの柔軟性が高い並列信号処理装置を実現することができる。
【符号の説明】
【００２９】
１−１〜１−ｎ  演算器、２−１〜２−ｎ  ローカル共有バス、３−１〜３−ｎ＋１  共有メモリ、４  データ入力バス、５  データ出力バス、６  グローバル共有バス、７  ＤＭＡ（ダイレクトメモリアクセスコントローラ）、１１  命令メモリ、１２  制御部、１３  ＡＬＵ、１４  レジスタファイル、１５  バスＩ／Ｆ。
【図１】
2011141791.tif 000003
【図２】
2011141791.tif 000004
【図３】
2011141791.tif 000005
【図４】
2011141791.tif 000006
【図５】
2011141791.tif 000007
【図６】
2011141791.tif 000008