(57)【要約】【課題】入力条件によって異なる演算を行うような処理を連続して行うことが可能で、条件を満たせば途中で処理を中断するような場合の無駄な処理を抑止でき、また、転送効率の向上を図れる演算装置を提供する。【解決課題】アドレスＡＤＲ１２をバンク１１１に与えて演算器１５の演算のための第１のデータを読み出して、第１のソースデータＤＴ１１として出力するアドレス生成装置１２と、アドレスＡＤＲ１３をバンク１１２に与えて演算器１５の演算のための第２のデータを読み出して、演算の制御信号ＣＴＬＯＰとともに第２のソースデータＤＴ１２として出力するアドレス生成装置１３と、第１のソースデータＤＴ１１と第２のソースデータＤＴ１２に対して、制御信号ＣＴＬＯＰに応じた条件実行演算を行う演算器１５とを有する。【選択図】      図１
2005322174.tif 000002
【特許請求の範囲】
【請求項１】
第１のソースデータを生成する第１の生成装置と、
第２のソースデータを生成し、かつ、当該第２のソースデータに制御信号を付加して出力する第２の生成装置と、
上記第１の生成装置による第１のソースデータと、上記第２の生成装置による第２のソースデータに対して上記制御信号に応じて演算種を切り替えて所定の演算を行う演算器と
を有する演算装置。
【請求項２】
上記第１のソースデータおよび上記第２のソースデータを格納するメモリを有し、
上記第１の生成装置は、上記第１のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第１のソースデータを上記演算器に出力し、
上記第２の生成装置は、上記第２のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第２のソースデータと上記制御信号を上記演算器に出力する
請求項１記載の演算装置。
【請求項３】
上記演算器の演算結果を受けてアドレスを生成して、演算結果を上記メモリに書き込む第３の生成装置をさらに有する
請求項２記載の演算装置。
【請求項４】
上記演算器は、バス幅より小さい語長のデータで累算を行う際に複数のデータをひとかたまりに扱い累算を行う
請求項１記載の演算装置。
【請求項５】
第１のソースデータを生成する第１の生成装置と、
第２のソースデータを生成する第２の生成装置と、
上記第２の生成装置の第２のソースデータに対して所定の演算処理を行って第３のソースデータを生成し、かつ、当該第３のソースデータに制御信号を付加し出力する第１の演算器と、
上記第１の生成装置による第１のソースデータと、上記第１演算器による第３のソースデータに対して上記制御信号応じて演算種を切り替えて所定の演算を行う第２の演算器と
を有する演算装置。
【請求項６】
上記第１のソースデータおよび上記第２のソースデータを格納するメモリを有し、
上記第１の生成装置は、上記第１のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第１のソースデータを上記第２の演算器に出力し、
上記第２の生成装置は、上記第２のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第２のソースデータを上記第１の演算器に出力する
請求項５記載の演算装置。
【請求項７】
上記第２の演算器の演算結果を受けてアドレスを生成して、演算結果を上記メモリに書き込む第３の生成装置をさらに有する
請求項６記載の演算装置。
【請求項８】
上記第２の演算器は、上記演算結果に制御信号を付加して出力し、
上記第２の演算器の演算結果および制御信号を受けてアドレスを生成して、演算結果を上記メモリに書き込む第３の生成装置をさらに有する
請求項６記載の演算装置。
【請求項９】
上記第１および第２の演算器の少なくとも一方は、バス幅より小さい語長のデータで累算を行う際に複数のデータをひとかたまりに扱い累算を行う
請求項５記載の演算装置。
【請求項１０】
第１のソースデータを生成する第１の生成装置と、
第２のソースデータを生成する第２の生成装置と、
上記第１の生成装置の第１のソースデータと、上記第２の生成装置による第２のソースデータに所定の演算処理を行って第３のソースデータを生成する第１の演算器と、
上記第１の演算器による第３のソースデータに対して所定の演算を行って制御信号を付加して出力する第２の演算器と、
上記第２の演算器による演算結果および制御信号を受けて、上記第２および第３の生成装置の生成動作を制御する制御信号を生成する第３の生成装置と
を有する演算装置。
【請求項１１】
上記第１のソースデータおよび上記第２のソースデータを格納するメモリを有し、
上記第１の生成装置は、上記第１のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第１のソースデータを上記第２の演算器に出力し、
上記第２の生成装置は、上記第２のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第２のソースデータを上記第１の演算器に出力する
上記第３の生成装置は、上記第２の演算器の演算結果および制御信号を受けてアドレスを生成して、演算結果を上記メモリに書き込む
請求項１０記載の演算装置。
【請求項１２】
上記第１および第２の演算器の少なくとも一方は、バス幅より小さい語長のデータで累算を行う際に複数のデータをひとかたまりに扱い累算を行う
請求項１０記載の演算装置。
【請求項１３】
第１、第２、第３、および第４のソースデータを格納するメモリと、
上記第１のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第１のソースデータを出力する第１の生成装置と、
上記第２のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第２のソースデータに第１の制御信号を付加して出力する第２の生成装置と、
上記第３のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第３のソースデータを出力する第３の生成装置と、
上記第１の生成装置による第１のソースデータと、上記第２の生成装置による第２のソースデータに対して上記第１の制御信号に応じて演算を行ってアドレスデータを生成し、当該アドレスデータに第２の制御信号を付加して出力する第１の演算器と、
上記第１の演算器により上記アドレスデータおよび第２の制御信号に基づいて上記第４のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第４のソースデータを出力する第４の生成装置と、
上記第３の生成装置による第３のソースデータと、上記第４の生成装置による第４のソースデータに対して所定の演算を行って出力する第２の演算器と、
上記第２の演算器の演算結果を受けてアドレスを生成して、演算結果を上記メモリに書き込む第５の生成装置と
を有する演算装置。
【請求項１４】
上記第１および第２の演算器の少なくとも一方は、バス幅より小さい語長のデータで累算を行う際に複数のデータをひとかたまりに扱い累算を行う
請求項１３記載の演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、いわゆるデータフロー型演算装置に関するものである。
【背景技術】
【０００２】
従来のデータフロー型演算器の場合、メモリから連続したデータが転送され、転送されたデータに対しあらかじめ決められた１種類の演算を連続して行うものであった。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、このような演算器の場合、入力条件によって異なる演算を行うような処理を連続して行うことは不可能である。
【０００４】
また、ある条件を満たせば途中で処理を中断するような場合でもあらかじめ決められた個数分の処理を行わなければならないため無駄な処理が行われていた。
【０００５】
さらに、データバス幅よりも小さい語長のデータを累算する場合、たとえば３２ビットバスシステムにおいて８ビットデータを扱う場合等、転送効率が悪くなるという不利益があった。
【０００６】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、入力条件によって異なる演算を行うような処理を連続して行うことが可能で、条件を満たせば途中で処理を中断するような場合の無駄な処理を抑止でき、また、転送効率の向上を図れる演算装置を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明の第１の観点の演算装置は、第１のソースデータを生成する第１の生成装置と、第２のソースデータを生成し、かつ、当該第２のソースデータに制御信号を付加して出力する第２の生成装置と、上記第１の生成装置による第１のソースデータと、上記第２の生成装置による第２のソースデータに対して上記制御信号に応じて演算種を切り替えて所定の演算を行う演算器とを有する。
【０００８】
好適には、上記第１のソースデータおよび上記第２のソースデータを格納するメモリを有し、上記第１の生成装置は、上記第１のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第１のソースデータを上記演算器に出力し、上記第２の生成装置は、上記第２のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第２のソースデータと上記制御信号を上記演算器に出力する。
【０００９】
好適には、上記演算器の演算結果を受けてアドレスを生成して、演算結果を上記メモリに書き込む第３の生成装置をさらに有する。
【００１０】
本発明の第２の観点の演算装置は、第１のソースデータを生成する第１の生成装置と、第２のソースデータを生成する第２の生成装置と、上記第２の生成装置の第２のソースデータに対して所定の演算処理を行って第３のソースデータを生成し、かつ、当該第３のソースデータに制御信号を付加し出力する第１の演算器と、上記第１の生成装置による第１のソースデータと、上記第１演算器による第３のソースデータに対して上記制御信号応じて演算種を切り替えて所定の演算を行う第２の演算器とを有する。
【００１１】
好適には、上記第１のソースデータおよび上記第２のソースデータを格納するメモリを有し、上記第１の生成装置は、上記第１のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第１のソースデータを上記第２の演算器に出力し、上記第２の生成装置は、上記第２のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第２のソースデータを上記第１の演算器に出力する。
【００１２】
好適には、上記第２の演算器の演算結果を受けてアドレスを生成して、演算結果を上記メモリに書き込む第３の生成装置をさらに有する。
【００１３】
好適には、上記第２の演算器は、上記演算結果に制御信号を付加して出力し、上記第２の演算器の演算結果および制御信号を受けてアドレスを生成して、演算結果を上記メモリに書き込む第３の生成装置をさらに有する。
【００１４】
本発明の第３の観点の演算装置は、第１のソースデータを生成する第１の生成装置と、第２のソースデータを生成する第２の生成装置と、上記第１の生成装置の第１のソースデータと、上記第２の生成装置による第２のソースデータに所定の演算処理を行って第３のソースデータを生成する第１の演算器と、上記第１の演算器による第３のソースデータに対して所定の演算を行って制御信号を付加して出力する第２の演算器と、上記第２の演算器による演算結果および制御信号を受けて、上記第２および第３の生成装置の生成動作を制御する制御信号を生成する第３の生成装置とを有する。
【００１５】
好適には、上記第１のソースデータおよび上記第２のソースデータを格納するメモリを有し、上記第１の生成装置は、上記第１のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第１のソースデータを上記第２の演算器に出力し、上記第２の生成装置は、上記第２のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第２のソースデータを上記第１の演算器に出力する上記第３の生成装置は、上記第２の演算器の演算結果および制御信号を受けてアドレスを生成して、演算結果を上記メモリに書き込む。
【００１６】
本発明の第４の観点は、第１、第２、第３、および第４のソースデータを格納するメモリと、上記第１のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第１のソースデータを出力する第１の生成装置と、上記第２のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第２のソースデータに第１の制御信号を付加して出力する第２の生成装置と、上記第３のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第３のソースデータを出力する第３の生成装置と、上記第１の生成装置による第１のソースデータと、上記第２の生成装置による第２のソースデータに対して上記第１の制御信号に応じて演算を行ってアドレスデータを生成し、当該アドレスデータに第２の制御信号を付加して出力する第１の演算器と、上記第１の演算器により上記アドレスデータおよび第２の制御信号に基づいて上記第４のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第４のソースデータを出力する第４の生成装置と、上記第３の生成装置による第３のソースデータと、上記第４の生成装置による第４のソースデータに対して所定の演算を行って出力する第２の演算器と、上記第２の演算器の演算結果を受けてアドレスを生成して、演算結果を上記メモリに書き込む第５の生成装置とを有する。
【００１７】
好適には、演算器は、バス幅より小さい語長のデータで累算を行う際に複数のデータをひとかたまりに扱い累算を行う。
【００１８】
本発明によれば、たとえばある特定のインデックス条件を満たす場合のみ演算が加算から減算に切り替わるものである場合に、演算器自体は配列のインデックス、すなわちメモリのアドレスを知らないため演算を切り替える制御はアドレスを発行する側、つまり第２の生成装置が制御信号を生成することになる。
第２の生成装置によりメモリから読み出されたデータと共に制御信号を演算器に渡し、これにより演算が行われ、その結果がたとえばメモリに書き込まれるという一連の処理が実現される。
【発明の効果】
【００１９】
本発明によれば、入力条件によって異なる演算を行うような処理を連続して行うことができる。
また、条件を満たせば途中で処理を中断するような場合の無駄な処理を抑止でき、また、転送効率の向上を図れる利点がある。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の実施形態を図面に関連付けて説明する。
【００２１】
＜第１実施形態＞
図１は、本発明に係るデータフロー型演算装置の第１の実施形態を示す構成図である。
【００２２】
本演算装置１０は、複数（図１では３個）のバンク１１１〜１１３を備えたメモリ１１、バンク１１１〜１１３に応対して設けられた第１〜第３のアドレス生成装置１２（ＡＧ０），１３（ＡＧ１），１４（ＡＧ２）、および演算器（ＰＥ）１５を有している。
【００２３】
アドレス生成装置１２は、アドレスＡＤＲ１２およびコントロール信号ＣＴＬ１２をバンク１１１に与えて演算器１５の演算のための第１のデータを読み出して、第１のソースデータＤＴ１１として演算器１５に出力する。
【００２４】
アドレス生成装置１３は、アドレスＡＤＲ１３およびコントロール信号ＣＴＬ１３をバンク１１２に与えて演算器１５の演算のための第２のデータを読み出して、演算の制御信号ＣＴＬＯＰとともに第２のソースデータＤＴ１２として演算器１５に出力する。
【００２５】
アドレス生成装置１４は、アドレスＡＤＲ１４およびコントロール信号ＣＴＬ１４をバンク１１３に与えて演算器１５の演算結果を、バンク１１３に格納する。
【００２６】
演算器１５は、アドレス生成装置１２による第１のソースデータＤＴ１１とアドレス生成装置１３による第２のソースデータＤＴ１２に対して、制御信号ＣＴＬＯＰに応じたたとえば以下に示す条件実行演算を行い、演算結果Ｓ１５（Ｄｅｓｔｉｎａｔｉｏｎ）をアドレス生成装置１４に出力する。
【００２７】
演算器１５の制御方法を条件実行演算を例に述べる。
以下の例は配列のインデックスが分岐条件となるＣ言語によるプログラム例である。
【００２８】
＜プログラム例１＞
for (i=0; i<256; i++) ｛
if (i > 254) out[i] = a[i] - b[i];
else out[i] = a[i] + b[i];
｝
【００２９】
図２（Ａ）〜（Ｃ）は、演算器１５の演算実行状態を示す図である。
これはある特定のインデックス条件を満たす場合のみ演算が加算から減算に切り替わるものであるが、演算器自体は配列のインデックス、すなわちメモリのアドレスを知らないため演算を切り替える制御はアドレスを発行する側、つまりはアドレス生成装置１３が制御信号ＣＴＬＯＰを生成することになる。
【００３０】
この例では演算の種類が２種類なので制御線としては１ビットの信号線があればよく、図１のようにアドレス生成装置１３によりメモリから読み出されたデータと共に制御信号ＣＴＬＯＰを演算器１５に渡し、これにより演算が行われ、その結果がまたメモリ１１のバンク１１３に書き込まれるという一連のフローが実現される。
【００３１】
＜第２実施形態＞
図３は、本発明に係るデータフロー型演算装置の第２の実施形態を示す構成図である。
【００３２】
本演算装置２０は、複数（図３では３個）のバンク２１１〜２１３を備えたメモリ１１、バンク１１１〜１１３に応対して設けられた第１〜第３のアドレス生成装置２２（ＡＧ０），２３（ＡＧ１），２４（ＡＧ２）、第１の演算器（ＰＥ０）２５、および第２の演算器（ＰＥ１）２６を有している。
【００３３】
アドレス生成装置２２は、アドレスＡＤＲ２２およびコントロール信号ＣＴＬ２２をバンク２１１に与えて演算器２６の演算のための第１のデータを読み出して、第１のソースデータＤＴ２１として演算器２６に出力する。
【００３４】
アドレス生成装置２３は、アドレスＡＤＲ２３およびコントロール信号ＣＴＬ２３をバンク２１２に与えて演算器２５の演算のための第１のデータを読み出して、第２のソースデータＤＴ２２として演算器２５に出力する。
【００３５】
アドレス生成装置２４は、アドレスＡＤＲ２４およびコントロール信号ＣＴＬ２４をバンク２１３に与えて演算器２６の演算結果を、バンク２１３に格納する。
【００３６】
演算器２５は、アドレス生成装置２３による第２のソースデータＤＴ２２に基づいて比較演算を行い、演算の制御信号ＣＴＬＯＰとともに第３のソースデータＤＴ２３として演算器２６に出力する。
【００３７】
演算器２６は、アドレス生成装置２２による第１のソースデータＤＴ２１とアドレス生成装置２３による第３のソースデータＤＴ２３に対して、制御信号ＣＴＬＯＰに応じたたとえば以下に示す条件実行演算を行い、演算結果Ｓ２６（Ｄｅｓｔｉｎａｔｉｏｎ）をアドレス生成装置２４に出力する。
【００３８】
演算器２５，２６の制御方法を条件実行演算を例に述べる。
以下の例は配列のインデックスが分岐条件となるＣ言語によるプログラム例である。
ここでは、別の例としてデータの値が分岐条件となるプログラム例を以下に示す。
【００３９】
＜プログラム例２＞
for (i=0; i<256; i++) ｛
if (a[i] > 0) out[i] = a[i] + b[i];
else out[i] = a[i];
｝
【００４０】
図４（Ａ）〜（Ｃ）は、演算器２５，２６の演算実行状態を示す図である。
この例は、演算器の入力となる配列の値により演算の種類が切り替わるもので、図３のように演算器２つを縦続接続して前段の演算器２５で比較演算をすることにより後段の演算器２６の演算を切り替えるための制御信号ＣＴＬＯＰを生成する。
このとき、前段の演算器２５の演算結果は入力された値と同じ値を出力するようにする。
これは演算器２５内部がパイプライン化された場合でもデータと制御信号の同期を取るためである。
なお、上で示した２つの例は何れも２種類の演算を切り替える例であるが、原理的には３種類以上の切り替えも可能でありその場合は制御信号も２ビット以上必要になる。
【００４１】
＜第３実施形態＞
図５は、本発明に係るデータフロー型演算装置の第３の実施形態を示す構成図である。
【００４２】
本第３の実施形態の演算装置２０Ａ第２の実施形態の演算装置２０と異なる点は、演算器２５において比較演算により生成された制御信号ＣＴＬＯＰをアドレス生成装置の制御信号ＭＥＭＷＥとして用いる点にある。
【００４３】
比較演算により生成された制御信号をアドレス生成装置の制御に用いたプログラム例を以下に示す。
【００４４】
＜プログラム例３＞
j = 0;
for (i=0; i<256; i++) ｛
if (a[i] > 0) out[j++] = a[i] + b[i];
｝
【００４５】
図６（Ａ）〜（Ｅ）は、演算器２５，２６の演算実行状態およびメモリへの書き込み制御状態を示す図である。
【００４６】
この例は、演算の入力となるデータの値が条件を満たした場合のみ配列のインデックスをインクリメントし、演算結果をメモリへ書き込む動作をする。
図５は、この例を実現するための構成例であるが、図３と同様に２つの演算器２５，２６を縦続接続しているが、後段の演算器２６Ａは常に固定の演算を行い、前段の演算器２５の比較演算で生成された制御信号ＣＴＬＯＰはそのまま後段を通過しメモリ書き込み用のアドレス生成装置２４へデータと共に渡される。
もしも、演算器内部がパイプライン化されている場合でも制御信号がデータと同じ経路を通るためにデータと制御信号は常に同期している。
メモリ書き込み用のアドレス生成装置２４ではこの制御信号を用いてメモリに対するアドレスと書き込み(WE)の制御を行う。
【００４７】
＜第４実施形態＞
図７は、本発明に係るデータフロー型演算装置の第４の実施形態を示す構成図である。
【００４８】
本演算装置３０は、複数（図７では３個）のバンク３１１〜３１３を備えたメモリ３１、バンク３１１〜３１３に応対して設けられた第１〜第３のアドレス生成装置３２（ＡＧ０），３３（ＡＧ１），３４（ＡＧ２）、第１の演算器（ＰＥ０）３５、および第２の演算器（ＰＥ１）３６を有している。
【００４９】
アドレス生成装置３２は、アドレスＡＤＲ３２およびコントロール信号ＣＴＬ３２をバンク３１１に与えて演算器３５の演算のための第１のデータを読み出して、第１のソースデータＤＴ３１として演算器３５に出力する。
また、アドレス生成装置３２は、アドレス生成装置３４による制御信号ＣＴＬＥＮＤを受けて読み出し動作を終了する。
【００５０】
アドレス生成装置３３は、アドレスＡＤＲ３３およびコントロール信号ＣＴＬ３３をバンク３１２に与えて演算器３５の演算のための第２のデータを読み出して、第２のソースデータＤＴ３２として演算器３５に出力する。
また、アドレス生成装置３３は、アドレス生成装置３４による制御信号ＣＴＬＥＮＤを受けて読み出し動作を終了する。
【００５１】
アドレス生成装置３４は、演算器３６による制御信号ＣＴＬＷＥに基づいてアドレスＡＤＲ３４およびコントロール信号ＣＴＬ３４をバンク３１３に与えて演算器３６の演算結果を、バンク３１３に格納する。
また、アドレス生成装置３４は、演算器３６による制御信号ＣＴＬＷＥに基づいて一連の処理を終了させるための制御信号ＣＴＬＥＮＤを生成して、アドレス生成装置３２，３３に出力する
【００５２】
演算器３５は、アドレス生成装置２２による第１のソースデータＤＴ１とアドレス生成装置３３による第２のソースデータＤＴ３２に対して、たとえばたとえば以下に示す条件実行演算を行い、その結果を第３のソースデータＤＴ３３として演算器３６に出力する。
【００５３】
演算器３６は、演算器３５による第３のソースデータＤＴ３３に基づいて比較演算を行い、メモリ書き込みの制御信号ＣＴＬＷＥとともに演算結果Ｓ３６（Ｄｅｓｔｉｎａｔｉｏｎ）をアドレス生成装置３４に出力する。
【００５４】
以下に、演算結果によってループ処理を途中で終了するプログラム例を示す。
【００５５】
＜プログラム例４＞
for (i=0; i<256; i++) ｛
if ((a[i] - b[i]) == 0) break;
out[i] = a[i] - b[i];
｝
【００５６】
図８（Ａ）〜（Ｅ）は、図７の演算器３５，３６の演算実行状態およびメモリへの書き込み制御および読み出し終了制御状態を示す図である。
【００５７】
これは前段の演算器３５の演算結果を後段の演算器３６で比較し、これにより生成した制御信号ＣＴＬＷＥがデータと共にメモリ書き込み用のアドレス生成装置３４に渡される。
メモリ書き込み用のアドレス生成装置３４ではこの制御信号ＣＴＬＷＥによりメモリ３１のバンク３１３に対するアドレスと書き込み(WE)の制御を行うが、この時メモリ書き込み用のアドレス生成装置３４からメモリ読み込み用のアドレス生成装置３２，３３に対して動作を終了するような制御信号ＣＴＬＥＮＤを発生することによりメモリ３３のバンク３１１，３１２の読み出し動作も終了することで一連の処理動作を完全に終了することができる。
【００５８】
＜第５実施形態＞
図９は、本発明に係るデータフロー型演算装置の第５の実施形態を示す構成図である。
【００５９】
本演算装置４０は、複数（図９では５個）のバンク４１１〜４１５を備えたメモリ４１、バンク４１１〜４１５に応対して設けられた第１〜第５のアドレス生成装置４２（ＡＧ０），４３（ＡＧ１），４４（ＡＧ２），４５（ＡＧ３），４６（ＡＧ４）、第１の演算器（ＰＥ０）４７、および第２の演算器４８（ＰＥ１）を有している。
【００６０】
アドレス生成装置４２は、アドレスＡＤＲ４２およびコントロール信号ＣＴＬ４２をバンク４１１に与えて演算器４７の演算のための第１のデータを読み出して、第１のソースデータＤＴ４１として演算器４５に出力する。
【００６１】
アドレス生成装置４３は、アドレスＡＤＲ４３およびコントロール信号ＣＴＬ４３をバンク４１２に与えて演算器４５の演算のための第２のデータを読み出して、演算の第１の制御信号ＣＴＬＯＰとともに第２のソースデータＤＴ４２として演算器４５に出力する。
【００６２】
アドレス生成装置４４は、アドレスＡＤＲ４４およびコントロール信号ＣＴＬ４４をバンク４１３に与えて演算器４８の演算のための第３のデータを読み出して、第３のソースデータＤＴ４３として演算器４８に出力する。
【００６３】
アドレス生成装置４５は、演算器３７による制御信号ＣＴＬＡＤおよびアドレスデータＳ４７に基づいてアドレスＡＤＲ４５およびコントロール信号ＣＴＬ３５をバンク４１４に与えて第４のデータを読み出して、第４のソースデータＤＴ４４として演算器４８に出力する。
【００６４】
アドレス生成装置４６は、アドレスＡＤＲ４６およびコントロール信号ＣＴＬ４６をバンク４１５に与えて演算器４８の演算結果Ｓ４８を、バンク４１５に格納する。
【００６５】
演算器４７は、アドレス生成装置４２による第１のソースデータＤＴ４１とアドレス生成装置４３による第２のソースデータＤＴ４２に対して、第１の制御信号ＣＴＬＯＰに応じたたとえば所定の演算によりアドレスデータＳ４７生成し、第２の制御信号ＣＴＬＡＤと共にアドレス生成装置４５に出力する。
【００６６】
演算器４８は、アドレス生成装置４４による第３のソースデータＤＴ４３とアドレス生成装置４５による第４のソースデータＤＴ４４に対して、所定の演算を行い、演算結果Ｓ４８（Ｄｅｓｔｉｎａｔｉｏｎ）をアドレス生成装置２４に出力する。
【００６７】
演算器をアドレス計算に使う例を下に示す。
【００６８】
＜プログラム例５＞
for (i=0; i<256; i++) ｛
index = a[i] * b[i];
out[i] = c[index] + d[i];
｝
【００６９】
本実施形態では、図９に示すように、一端演算器(P４７を使ってアドレスの演算をした後、アドレス生成装置４５ではそのアドレスを利用してメモリを読み出し、別の演算器４８で最終的な結果を得るものである。
また、ここへ更に条件実行演算を組み合わせることでより複雑なアドレス生成を行わせることも可能である。
【００７０】
なお、一般的な静止画や動画の処理は８ビットデータが基本であることが多いため、３２ビットバスを用いたシステムではバスの利用効率が悪くなる。
そこで、本発明では累算処理の場合に着目してビットデータを４つまとめて処理することで転送効率／処理効率を改善している。
【００７１】
たとえば、８ビットデータが１６個ありメモリ上で図１０に示すように配置されているとする。
通常のようにデータを１つずつ読み出して処理をした場合は、図１１に示すように、１６回のメモリ転送が生じる。
これに対し、図１２に示すように、４つずつ読み出した場合は４回の転送で済むことになる。
【００７２】
図１３、図１４はそれぞれ１つずつ、４つずつ読み出した場合の処理ブロック図である。図１３および図１４においては、５１はアキュムレータ、５２は加算器を示している。
【００７３】
図１４に示すように、４つずつ読み出した場合演算器内部では一度１つにまとめられたデータから４つのデータを分離した後それらを１つに足し合わせ、これが累算されることになる。
また、動画像符号化などで多用される参照データに対する差分絶対値の合計を求める場合は、図１５に示すように差分絶対値を４つ同時に求めて１つに足し込んだ後累算を行うことで実現できる。なお、図１５において、５３−１〜５３−４は差分絶対値演算部（ＡｂｓＤｉｆｆ）を示している。
なお、これは１６ビットデータの場合にも応用することができ、その場合１６ビットデータ２つをまとめて処理することになる。
【００７４】
データフロー型演算装置を実装した場合、内部がパイプライン化される場合が多いため最終結果が求められるまでのレイテンシが大きくなる。
したがって、このような演算装置ではできる限り連続した動作をすることが望ましく、本発明の条件実行演算が可能になることにより従来複数回に分けて実行していたものが一度の実行で済むようになり、効率の良い動作が可能になる。
【００７５】
一方、複数のデータをひとつにまとめて累算する方法は動画符号化処理の動き検出など大量のデータを処理する場合にその処理量を大幅に減らすことが可能になり、装置の高効率化に寄与する。
【００７６】
以下に、本実施形態においては採用するアドレス生成装置の具体的な構成例について説明する。
【００７７】
図１６は、たとえば、図１のアドレス生成装置１４や図９のアドレス生成装置４６のように、入力データに基づいてアドレスを生成するアドレス生成装置の構成例を示す図である。
【００７８】
図１６のアドレス生成装置１００は、初期値を設定するためのレジスタ１０１，１０２、ステップ値を設定するためのレジスタ１０３，１０４、固定値を設定するためのレジスタ１０５、演算装置１０６，１０７、選択装置１０８，１０９、カウンタ１１０，１１１、および演算装置１１２を有している。
【００７９】
演算装置１０６は、レジスタ１０３のステップ値とカウンタ１１０からフィードバックされる値に基づいて、たとえば加算等の所定の演算を行い、演算結果を選択装置１０８に出力する。
【００８０】
演算装置１０７は、レジスタ１０４のステップ値とカウンタ１１１からフィードバックされる値に基づいて、たとえば加算等の所定の演算を行い、演算結果を選択装置１０９に出力する。
【００８１】
選択装置１０８は、図示されていない制御信号に基づいてレジスタ１０１の設定値と演算置１０６の出力のいずれかを選択しカウンタ１１０に出力する。
【００８２】
選択装置１０９は、図示されていない制御信号に基づいてレジスタ１０２の設定値と演算装置１０７の出力のいずれかを選択しカウンタ１１１に出力する。
【００８３】
カウンタ１１０は、選択装置１０８により選択されたレジスタ１０１の設定値（初期値）または演算装置１０６の演算結果の値によりカウント値を設定し、この値を演算装置１０６にフィードバックし、かつ第１アドレス計算カウント値ＡＣＮＴＶ１１として演算装置１１２に出力する。
【００８４】
カウンタ１１１は、選択装置１０９により選択されたレジスタ１０２の設定値（初期値）または演算装置１０７の演算結果の値によりカウント値を設定し、この値を演算装置１０７にフィードバックし、かつ第２アドレス計算カウント値ＡＣＮＴＶ１２として演算装置１１２に出力する。
【００８５】
演算装置１１１は、図示されていない制御信号に基づいてカウンタ１１０による第１アドレス計算カウント値ＡＣＮＴＶ１１と、カウンタ１１１による第２アドレス計算カウント値ＡＣＮＴＶ１２と、レジスタ１０５に設定された固定値と、入力データＤＩＮに基づいて所定の演算を行ってアドレスＡＤＲを計算する。
【００８６】
ここで、図１６のアドレス生成装置１００のアドレス生成動作について、図１７（Ａ）〜（Ｇ）のタイミングチャートに関連付けて説明する。
図１７（Ａ）はカウンタ２１０のカウント値ＣＮＴ１１０を、図１７（Ｂ）はカウンタ１１１のカウント値ＣＮＴ１１１を、図１７（Ｃ）は第１アドレス計算カウント値ＡＣＮＴＶ１１を、図１７（Ｄ）は第２アドレス計算カウント値ＡＣＮＴＶ１２を、図１７（Ｅ）はレジスタ１０５に設定された固定値ＳＣＶを、図１７（Ｆ）は演算装置１１２への入力データＤＩＮ、および図１７（Ｇ）は演算装置１１２において計算されたアドレスＡＤＲをそれぞれ示している。
【００８７】
アドレス生成は次のように行われる。
レジスタ１０１、レジスタ１０２にはカウンタの初期値として０が格納され、レジスタ１０３、レジスタ１０４にはステップ値として１が格納される。
【００８８】
演算装置１０６、および演算装置１０７はそれぞれ加算を実行する。
選択装置１０８は、３サイクルおきにレジスタ２０１の値を選択し、それ以外のときは演算装置１０６の値を選択する。
選択装置１０９は、常に演算装置１０９の演算結果の値を選択する。
これにより、カウンタ１１０およびカウンタ１１１のカウント値ＣＮＴ１１０，ＣＮＴ１１１は、図１７（Ａ），（Ｂ）に示すような値をとる。
このように動作させることで、第１アドレス計算カウント値ＡＣＮＴＶ１１、第２アドレス計算カウント値ＡＣＮＴＶ１２は、図１７（Ｃ），（Ｄ）に示すような値をとる。
【００８９】
また、図１７（Ｅ），（Ｆ）に示すように、レジスタ１０５には固定値ＳＣＶとして０が設定され、毎サイクル入力データＤＩＮ（ 0,1,0,1,2,0,1,2,3....）が供給される。
そして、演算装置１１２は、以下の演算を実行して、アドレスＡＤＲを算出する。
【００９０】
（数１）
ＡＤＲ＝ＡＣＮＴＶ１１＋ＡＣＮＴＶ１２＋ＳＣＶ＋ＤＩＮ
【００９１】
ここで入力データＤＩＮとしては、図示されていない他のアドレス生成装置を用いてメモリから読み出したデータや、本実施形態のようにメモリからの読み出しデータに所定の演算を実行した結果を用いることもできる。
【００９２】
演算装置１１１で実行する演算は減算、乗算などの一般的な演算も可能であり、加算に限定するものではないことは明らかである。
【００９３】
本例によれば、従来のＤＳＰなどで生成される単純なアドレスパターンに比べて、複雑なアドレスパターンを生成することができる。
【００９４】
図１８は、たとえば、図１のアドレス生成装置１３や図９のアドレス生成装置４３のように、制御信号を生成することができるアドレス生成装置の構成例を示す図である。
【００９５】
本アドレス生成装置２００は、初期値を設定するレジスタ２０１、ステップ値を設定するレジスタ２０２、演算装置２０３、選択装置２０４、カウンタ２０５、演算装置２０６、パラメータレジスタ２０７、タイミングカウンタ２０８、制御装置２０９、および制御信号生成装置２１０を有している。また、入力として起動信号ＴＲＧ、制御入力ＣＴＬＩＮを有する。
【００９６】
演算装置２０３は、レジスタ２０２のステップ値とカウンタ２０５からフィードバックされる値に基づいて、たとえば加算等の所定の演算を行い、演算結果を選択装置２０４に出力する。
【００９７】
選択装置２０４は、図示されていない制御信号に基づいてレジスタ２０１の設定値と演算置２０３の出力のいずれかを選択しカウンタ２０５に出力する。
【００９８】
カウンタ２０５は、選択装置２０４により選択されたレジスタ２０１の設定値（初期値）または演算装置２０４の演算結果の値によりカウント値を設定し、この値を演算装置２０６にフィードバックし、かつ第１アドレス計算カウント値ＡＣＮＴＶ２１として演算装置２０６および制御信号生成装置２１０に出力する。
カウンタ２０５は、制御装置２０９による制御信号Ｓ２０９ａに応答してカウントアップ動作を開始する。
【００９９】
演算装置２０６は、図示されていない制御信号に基づいてカウンタ３１２による第１アドレス計算カウント値ＡＣＮＴＶ２１に基づいて所定の演算を行ってアドレスＡＤＲを算出する。
【０１００】
パラメータレジスタ２０７は、外部からアドレス生成遅延値が設定される。
【０１０１】
タイミングカウンタ２０８は、起動信号ＴＲＧが入力されるとカウンタ値をカウントアップし、パラメータレジスタ２０７に設定された値になるまでアドレス生成を遅延させるタイミングをカウントする。
【０１０２】
制御装置２０９は、タイミングカウンタ２０８のカウント値ＣＮＴ２０８が、パラメータレジスタ２０７に設定された所定の遅延値に達したか否かを判定し、達したと判定した場合に制御信号Ｓ２０９ａをカウンタ２０５に出力して、カウンタ２０５のカウントアップを有効にする。
また、制御装置２０９は、タイミングカウンタのタイミングカウント値ＣＮＴ２０８が設定値に達した後に、制御信号Ｓ２０９ｂを制御信号生成装置２１０に出力してアドレス有効信号ＡＶＬＤを有効するように制御する。
【０１０３】
制御信号生成装置２１０は、制御入力ＣＴＬＩＮとこの有効状態からアドレス有効信号ＡＶＬＤを生成する。
制御信号生成装置２１０は、制御装置２０９による制御信号Ｓ２０９ｂに応答してアドレス有効信号ＡＶＬＤを有効状態にし、カウンタ２０５のカウント値、すなわち第１アドレス計算カウント値ＡＣＮＴＶ２１が所定の終了値に達するとアドレス有効信号ＡＶＬＤを無効状態にする。
制御信号生成装置２１０は、カウンタ２０５のカウント値が特定の値になったときに制御出力ＣＴＬＯＵＴを有効、もしくは無効状態にすることができる。
【０１０４】
ここで、図１８のアドレス生成装置２００におけるアドレス生成動作について図１９（Ａ）〜（Ｇ）のタイミングチャートに関連付けて説明する。
図１９（Ａ）はタイミングカウンタ２０８に与えれる起動信号ＴＲＧを、図１９（Ｂ）はタイミングカウンタ２０８のタイミングカウント値ＣＮＴ２０８を、図１９（Ｃ）はカウンタ２０５による第１アドレス計算カウント値ＡＣＮＴＶ２１を、図１９（Ｄ）は演算装置２０６において計算されたアドレスＡＤＲを、図１９（Ｅ）は制御信号生成装置２１０で生成されるアドレス有効信号ＡＶＬＤを、図１９（Ｆ）は制御入力ＣＴＬＩＮを、図１９（Ｇ）は制御出力ＣＴＬＯＵＴをそれぞれ示している。
【０１０５】
アドレス生成はつぎのように行われる。
パラメータレジスタ２０７にはアドレス生成遅延値「４」が設定され、図１９（Ａ）に示すように、外部から入力されるトリガ信号としての起動信号ＴＲＧによりタイミングカウンタ２０８のカウントアップが行われる。
そして、図１９（Ｂ）に示すように、タイミングカウンタ２０８のカウント値ＣＮＴ２０８が、パラメータレジスタ２０７に設定された所定の遅延値「４」に達すると、制御装置２０９が、アドレス生成カウンタ２０５が動作するように制御信号Ｓ２０９ａをカウンタ２０５に出力して、カウンタ２０５のカウントアップを有効にする。
【０１０６】
レジスタ２０１にはカウンタの初期値として０が格納され、レジスタ２０２にはステップ値として２が格納される。演算装置２０３はたとえば加算を実行する。
選択装置２０４は常に演算装置２０３の値を選択する。
このように動作させることで、第１アドレス計算カウント値ＡＣＮＴＶ２１は、図１９（Ｃ）に示すような値をとる。
【０１０７】
演算装置２０６は、第１アドレス計算カウント値ＡＣＮＴＶ２１を用いてアドレスＡＤＲを算出する。
【０１０８】
上記のアドレス生成と並行してアドレス有効信号ＡＶＬＤ・制御出力ＣＴＬＯＵＴを出力することも可能である。
図１９（Ｅ）〜（Ｇ）に示すように、アドレス有効信号ＡＶＬＤは制御入力ＣＴＬＩＮと、起動信号ＴＲＧとタイミングカウント値ＣＴＬ２０８をもとに制御装置２０９と制御信号生成装置２１０により生成される。
制御装置２０９は、タイミングカウント値ＣＮＴ２０８が設定値に達した後に、制御信号Ｓ２０９ｂによりアドレス有効信号ＡＶＬＤを有効状態にし、カウンタ２０５のカウント値が終了値に達するとアドレス有効信号ＡＶＬＤを無効状態にする。
【０１０９】
制御信号生成装置２１０は、カウンタ２０５のカウント値が特定の値になったときに制御出力ＣＴＬＯＵＴを有効、もしくは無効状態にする。
図１９（Ｃ），（Ｇ）に示すように、本例では、第１アドレス計算カウント値ＡＣＮＴＶ２１が「６」と「１２」になったときに制御出力ＣＴＬＯＵＴを有効状態にしている。
【０１１０】
本例によれば、アドレス生成と同時に制御信号とアドレス有効信号を出力することが可能であるため、これらの信号を用いてメモリや演算装置の制御を柔軟に行うことができるようになる利点がある。
また、アドレス生成のタイミングをパラメータで制御することが可能であるため、複数のメモリからの読み出しや、書き込みに時間的な依存関係がある場合についても容易に対応することが可能になる。
【図面の簡単な説明】
【０１１１】
【図１】本発明に係るデータフロー型演算装置の第１の実施形態を示す構成図である。
【図２】図１の演算器の演算実行状態を示す図である。
【図３】本発明に係るデータフロー型演算装置の第２の実施形態を示す構成図である。
【図４】図３の演算器の演算実行状態を示す図である。
【図５】本発明に係るデータフロー型演算装置の第３の実施形態を示す構成図である。
【図６】図５の演算器の演算実行状態およびメモリへの書き込み制御状態を示す図である。
【図７】本発明に係るデータフロー型演算装置の第４の実施形態を示す構成図である。
【図８】図７の演算器の演算実行状態およびメモリへの書き込み制御および読み出し終了制御状態を示す図である。
【図９】本発明に係るデータフロー型演算装置の第５の実施形態を示す構成図である。
【図１０】８ビットデータの配列の一例を示す図である。
【図１１】８ビットデータを１つずつ読み出す場合の例を示す図である。
【図１２】８ビットデータを４つずつ読み出す場合の例を示す図である。
【図１３】８ビットデータを１つずつ演算処理する場合の例を示す図である。
【図１４】８ビットデータを４つずつ演算処理する場合の例を示す図である。
【図１５】差分絶対値を求める例を示す図である。
【図１６】図１のアドレス生成装置１４や図９のアドレス生成装置４６のように、入力データに基づいてアドレスを生成するアドレス生成装置の構成例を示す図である。
【図１７】図１６のアドレス生成装置のアドレス生成動作について説明するためのタイミングチャートである。
【図１８】図１のアドレス生成装置１３や図９のアドレス生成装置４３のように、制御信号を生成することができるアドレス生成装置の構成例を示す図である。
【図１９】図１８のアドレス生成装置のアドレス生成動作について説明するためのタイミングチャートである。
【符号の説明】
【０１１２】
１０…演算装置、１１…メモリ、１１１〜１１３…バンク、１２〜１４（ＡＧ０〜ＡＧ２）…アドレス生成装置、１５（ＰＥ）…演算器、２０，２０Ａ…演算装置、２１…メモリ、２１１〜２１３…バンク、２２〜２４（ＡＧ０〜ＡＧ２）…アドレス生成装置、２５（ＰＥ０）…演算器、２６（ＰＥ１）…演算器、３０…演算装置、３１…メモリ、３１１〜３１３…バンク、３２〜３４（ＡＧ０〜ＡＧ２）…アドレス生成装置、３５（ＰＥ０）…演算器、３６（ＰＥ１）…演算器、４０…演算装置、４１…メモリ、４１１〜３１５…バンク、４２〜３６（ＡＧ０〜ＡＧ４）…アドレス生成装置、４７（ＰＥ０）…演算器、４８（ＰＥ１）…演算器、１００…アドレス生成装置、１０１，１０２…初期値を設定するレジスタ、１０３，１０４…ステップ値を設定するレジスタ、１０５…固定値を設定するレジスタ、１０６，１０７…演算装置、１０８，１０９…選択装置、１１０，１１１…カウンタ、１１２…演算装置、２００…アドレス生成装置、２０１…初期値を設定するレジスタ、２０２…ステップ値を設定する、２０３…演算装置、２０４…選択装置、２０５…カウンタ、２０６…演算装置、２０７…パラメータレジスタ、２０８…タイミングカウンタ、２０９…制御装置、２１０…制御信号生成装置、ＴＲＧ…起動信号、ＣＴＬＩＮ…制御入力、ＣＴＬＯＵＴ…制御出力、ＡＶＬＤ…アドレス有効信号。
【図１】
2005322174.tif 000003
【図２】
2005322174.tif 000004
【図３】
2005322174.tif 000005
【図４】
2005322174.tif 000006
【図５】
2005322174.tif 000007
【図６】
2005322174.tif 000008
【図７】
2005322174.tif 000009
【図８】
2005322174.tif 000010
【図９】
2005322174.tif 000011
【図１０】
2005322174.tif 000012
【図１１】
2005322174.tif 000013
【図１２】
2005322174.tif 000014
【図１３】
2005322174.tif 000015
【図１４】
2005322174.tif 000016
【図１５】
2005322174.tif 000017
【図１６】
2005322174.tif 000018
【図１７】
2005322174.tif 000019
【図１８】
2005322174.tif 000020
【図１９】
2005322174.tif 000021