(57)【要約】【課題】演算処理に要する時間を短縮することでスループットを向上させる。【解決手段】ＳＩＭＤ演算処理装置は、２つの単位プロセッサ演算ブロックＸ，Ｙを備える。制御部１は、プログラムメモリ２に格納される汎用関数を読み出して演算ブロックＸ，Ｙに設定する。これと共に、制御部１は、データメモリ３に格納される引数１（０），引数２（０），引数３（０）を演算ブロックＸに，引数１（１），引数２（１），引数３（１）を演算ブロックＹにそれぞれ供給する。演算ブロックＸ，Ｙは、上記汎用関数に基づいて上記供給されたデータに対する演算を並列に実行する。【選択図】      図１
2008117297.tif 000002
【特許請求の範囲】
【請求項１】
信号処理システムに設けられ、互いに独立して動作する複数の演算処理部と、
前記複数の演算処理部にそれぞれ対応するデータを記憶する第１の記憶部と、
前記信号処理システム内で共通する処理を部品化したライブラリである汎用関数を記憶する第２の記憶部と、
前記複数の演算処理部にそれぞれ前記第２の記憶部に記憶された汎用関数を設定し、前記第１の記憶部に記憶された対応するデータをそれぞれ供給して、前記設定された汎用関数に基づいて前記供給されたデータに対する演算を並列に実行させる制御部と
を具備することを特徴とするＳＩＭＤ（Single Instruction／Multiple Data）演算処理装置。
【請求項２】
信号処理システムに設けられ、互いに独立して動作する複数の演算処理部を備えるＳＩＭＤ演算処理装置に用いられる並列演算方法であって、
前記複数の演算処理部にそれぞれ対応するデータを記憶し、
前記信号処理システム内で共通する処理を部品化したライブラリである汎用関数を記憶し、
前記複数の演算処理部にそれぞれ前記記憶された汎用関数を設定し、前記記憶された対応するデータをそれぞれ供給して、前記設定された汎用関数に基づいて前記供給されたデータに対する演算を並列に実行させることを特徴とする並列演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数の演算ブロックを用いて並列演算を行うＳＩＭＤ（Single Instruction／Multiple Data）演算処理装置及び並列演算方法に関する。
【背景技術】
【０００２】
ファームウェアをＣ言語などの高級言語で開発する信号処理システムでは、関数は通常ブラックボックス的に使用される。よって、開発者がハードウェア資源を効率的に使用しているか否かを意識することは少ない。例えば、「三角関数や平方根などの汎用関数は、引数で入力値を１つ指定すると、これに対する演算結果が戻り値として１つ得られる」程度の理解が一般的である。
【０００３】
画像処理のように大量のデータを高速に処理する信号処理システムにおいて、実現したい機能をブラックボックス的な関数を使用して開発すると、例えば所望の時間内に処理が完了しない場合には、処理負荷を複数の計算機に分散して並列化するなどの対策が必要となり、ハードウェアの規模が大型化してしまう。
【０００４】
なお、１つの命令で複数の演算結果を得ることが可能なＳＩＭＤプロセッサを用いてデータ転送を高速化する手法が提案されている（例えば、特許文献１を参照。）。
【特許文献１】特開平７−１３９５６公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
例えば、画像処理においては、膨大な画像データに対して同一の命令を各画素毎に高速に処理するような場合がある。しかしながら、上述したように、高級言語を用いて開発する場合には、プロセッサの内部レベルでの処理の最適化は、オブジェクトコードに変換するコンパイラやインタープリタの性能に依存してしまう。
【０００６】
この発明は上記事情に着目してなされたもので、その目的とするところは、演算処理に要する時間を短縮することで、スループットを向上させることが可能なＳＩＭＤ演算処理装置及び並列演算方法を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するためにこの発明に係わるＳＩＭＤ演算処理装置は、信号処理システムに設けられ、互いに独立して動作する複数の演算処理部と、前記複数の演算処理部にそれぞれ対応するデータを記憶する第１の記憶部と、前記信号処理システム内で共通する処理を部品化したライブラリである汎用関数を記憶する第２の記憶部と、前記複数の演算処理部にそれぞれ前記第２の記憶部に記憶された汎用関数を設定し、前記第１の記憶部に記憶された対応するデータをそれぞれ供給して、前記設定された汎用関数に基づいて前記供給されたデータに対する演算を並列に実行させる制御部とを具備することを特徴とする。
【０００８】
また、この発明に係わる並列演算方法は、信号処理システムに設けられ、互いに独立して動作する複数の演算処理部を備えるＳＩＭＤ演算処理装置に用いられる並列演算方法であって、前記複数の演算処理部にそれぞれ対応するデータを記憶し、前記信号処理システム内で共通する処理を部品化したライブラリである汎用関数を記憶し、前記複数の演算処理部にそれぞれ前記記憶された汎用関数を設定し、前記記憶された対応するデータをそれぞれ供給して、前記設定された汎用関数に基づいて前記供給されたデータに対する演算を並列に実行させることを特徴とする。
【０００９】
上記構成によるＳＩＭＤ演算処理装置及び並列演算方法では、汎用性の高い汎用関数をマルチコアプロセッサ実装のプログラムでＳＩＭＤ化し、例えば信号処理システムのように同一関数を複数回使用する箇所に適用すると、一度の演算で複数の結果を得ることができるため、１つの結果を得るために必要な処理時間を短縮することができる。
【発明の効果】
【００１０】
したがってこの発明によれば、演算処理に要する時間を短縮することで、スループットを向上させることが可能なＳＩＭＤ演算処理装置及び並列演算方法を提供することができる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照しながら本発明の実施の形態を詳細に説明する。  
図１は、この発明に係わるＳＩＭＤ演算処理装置の一実施形態を示す機能ブロック図である。  
ＳＩＭＤ演算処理装置１００は、制御部１と、プログラムメモリ２と、データメモリ３と、２つの単位プロセッサである演算ブロックＸ及び演算ブロックＹを備える。演算ブロックＸは、乗算器１１と、加算器（ＡＬＵ）１２と、レジスタファイル１３とを備える。演算ブロックＸは、演算ブロックＹと同様に、乗算器２１と、加算器２２と、レジスタファイル２３とを備える。
【００１２】
制御部１は、上位プログラムからの指定によりプログラムメモリ２に記憶される汎用関数をロードして各演算ブロックＸ，Ｙに設定する。これと共に、データメモリ３に格納されるデータを演算ブロックＸ，Ｙにそれぞれ供給して、上記汎用関数に基づいて当該データに対して並列に演算を実行させる。なお、プログラムメモリ２に記憶される汎用関数は、信号処理システム内で共通する処理を部品化したライブラリで構成される。
【００１３】
次に、このように構成される演算処理装置１００の動作について説明する。図２は、演算処理装置１００の制御部処理手順とその内容を示すフローチャートである。なお、本実施形態では、汎用関数として得る計算結果を“（ａ＋ｂ）＊ｃ”とする。  
図２に示すデータメモリ３のアドレス”引数１（０）”に設定されている値をレジスタファイル１３のＸＲ０に、アドレス”引数２（０）”に設定されている値をレジスタファイル１３のＸＲ１に、それぞれ読み出す（ステップＳ２ｄ）。同様に、データメモリ３のアドレス”引数１（１）”に設定されている値をレジスタファイル２３のＹＲ０に、アドレス”引数２（１）”に設定されている値をレジスタファイル２３のＹＲ１に、それぞれ読み出す（ステップＳ２ｅ）。
【００１４】
続いて、演算ブロックＸの加算器１２でＸＲ０の値とＸＲ１の値を加算し、結果をＸＲ０に保存する（ステップＳ２ｆ）。また、演算ブロックＹの加算器２２でＹＲ０の値とＹＲ１の値を加算し、結果をＹＲ０に保存する（ステップＳ２ｆ）。
【００１５】
次に、制御部１はデータメモリ３のアドレス“引数３（０）”に設定されている値をＸＲ２に、“引数３（１）”に保存されている値をＹＲ２にロードする（ステップＳ２ｈ，Ｓ２ｉ）。
【００１６】
制御部１は演算ブロックＸの乗算器１１でＸＲ０の値とＸＲ２の値を乗算し、その結果をＸＲ０に保存する（ステップＳ３ｊ）。また、制御部１は演算ブロックＹの乗算器２１でＹＲ０の値とＹＲ２の値を乗算し、その結果をＹＲ０に保存する（ステップＳ２ｋ）。そして、制御部１はＸＲ０の値をアドレス“戻値（０）”に、ＹＲ０の値をアドレス“戻値（１）”にストアする（ステップＳ２ｌ，Ｓ２ｍ）。制御部１は、このように演算された演算結果“戻値（０）”及び“戻値（１）”を呼出元の上位プログラムにリターンする（ステップＳ２ｎ）。
【００１７】
以上述べたように、上記実施形態では、ＳＩＭＤ演算処理装置は、２つの単位プロセッサ演算ブロックＸ，Ｙを備える。制御部１は、プログラムメモリ２に格納される汎用関数を読み出して演算ブロックＸ，Ｙに設定する。これと共に、制御部１は、データメモリ３に格納される引数１（０），引数２（０），引数３（０）を演算ブロックＸに，引数１（１），引数２（１），引数３（１）を演算ブロックＹにそれぞれ供給する。演算ブロックＸ，Ｙは、上記汎用関数に基づいて上記供給されたデータに対する演算を並列に実行する。
【００１８】
すなわち、汎用関数をマルチコアプロセッサ実装のプログラムでＳＩＭＤ化し、例えば信号処理システムのように同一関数を複数回使用する箇所に適用すると、一度の演算で複数の結果を得ることができるため、１つの結果を得るために必要な処理時間を短縮することができる。上記実施形態に示した１Instruction ２DataのＳＩＭＤ演算処理装置１００では、処理時間が１／２となるため、スループットはＳＩＭＤ化前の２倍になる。
【００１９】
したがって上記実施形態によれば、汎用関数自体をＳＩＭＤ化することにより、通常の関数を同一のサイクル数で複数の演算結果を得ることができる。これにより、演算１回あたりの処理時間を短縮し、高スループットの信号処理システムを得ることが可能となる。本発明を使用頻度の高い関数に適用すれば演算速度を向上させることができ、処理効率を高めることが可能となる。
【００２０】
なお、この発明は上記実施形態に限定されるものではない。例えば、上記実施形態のＳＩＭＤ演算処理装置１００では、２つの演算ブロックＸ，Ｙを設けた構成であったが、３つ以上の演算ブロックを備えることももちろん可能である。また、各演算ブロックＸ，Ｙの構成はあくまでも一例であり、この他にシフター等を備えてもよい。
【００２１】
要するにこの発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【図面の簡単な説明】
【００２２】
【図１】この発明に係わるＳＩＭＤ演算処理装置の一実施形態を示す機能ブロック図。
【図２】図１に示すＳＩＭＤ演算処理装置の処理手順とその内容を示すフローチャート。
【符号の説明】
【００２３】
１００…ＳＩＭＤ演算処理装置、Ｘ…第１の演算ブロック、Ｙ…第２の演算ブロック、１…制御部、２…プログラムメモリ、３…データメモリ、１１…演算ブロックＸの乗算器、１２…演算ブロックＸの加算器（ＡＬＵ）、１３…演算ブロックＸのレジスタファイル、２１…演算ブロックＹの乗算器、２２…演算ブロックＹの加算器（ＡＬＵ）、２３…演算ブロックＹのレジスタファイル。
【図１】
2008117297.tif 000003
【図２】
2008117297.tif 000004