(57)【要約】【課題】複数のプロセッシングエレメント間の制御が容易であり、ビット精度を向上させることができるリコンフィギャラブル回路を提供することを課題とする。【解決手段】乗算する乗算器（１０５）と、前記乗算された値を累積加算する累積加算器（１０７）と、前記累積加算された値を丸め処理する丸め処理部（１１２）とを有し、前記乗算器、前記累積加算器及び前記丸め処理部は１個のプロセッシングエレメント内に設けられ、前記累積加算器は、制御信号に応じたタイミングで出力することを特徴とするリコンフィギャラブル回路が提供される。【選択図】図１
2008204356.tif 000002
【特許請求の範囲】
【請求項１】
乗算する乗算器と、
前記乗算された値を累積加算する累積加算器と、
前記累積加算された値を丸め処理する丸め処理部とを有し、
前記乗算器、前記累積加算器及び前記丸め処理部は１個のプロセッシングエレメント内に設けられ、
前記累積加算器は、制御信号に応じたタイミングで出力することを特徴とするリコンフィギャラブル回路。
【請求項２】
前記累積加算器は、制御信号に応じてリセットすることを特徴とする請求項１記載のリコンフィギャラブル回路。
【請求項３】
さらに、前記１個のプロセッシングエレメント内に設けられ、前記乗算された値のビット数を増やすために符号拡張する符号拡張器と、
前記累積加算器の出力値及び前記符号拡張器の出力値のいずれかを選択して前記丸め処理部に出力する第１のセレクタとを有することを特徴とする請求項１記載のリコンフィギャラブル回路。
【請求項４】
さらに、前記１個のプロセッシングエレメント内に設けられ、２個のデジタル値をビットシフト及びマスクして前記乗算器に出力するシフト及びマスク部を有することを特徴とする請求項１記載のリコンフィギャラブル回路。
【請求項５】
前記累積加算器は、オーバーフローすると累積加算値を最大値にし、アンダーフローすると累積加算値を最小値にし、エラー信号を出力することを特徴とする請求項１記載のリコンフィギャラブル回路。
【請求項６】
前記丸め処理部は、前記エラー信号が出力されると、その累積加算値の丸め処理をバイパスすることを特徴とする請求項５記載のリコンフィギャラブル回路。
【請求項７】
前記丸め処理部は、オーバーフローすると丸め処理した値を最大値にしてエラー信号を出力することを特徴とする請求項１記載のリコンフィギャラブル回路。
【請求項８】
前記丸め処理部は、入力値の整数ビット数と出力値の整数ビット数が異なるときには、前記丸め処理した値をビットシフトすることを特徴とする請求項１記載のリコンフィギャラブル回路。
【請求項９】
前記丸め処理部は、前記ビットシフトによりオーバーフローするとビットシフトした値を最大値にし、前記ビットシフトによりアンダーフローするとビットシフトした値を最小値にし、エラー信号を出力することを特徴とする請求項８記載のリコンフィギャラブル回路。
【請求項１０】
前記丸め処理部は、ビットモードに応じて出力ビット数を変えることを特徴とする請求項１記載のリコンフィギャラブル回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リコンフィギャラブル回路に関し、特にプロセッシングエレメントを有するリコンフィギャラブル回路に関する。
【背景技術】
【０００２】
図１１は、プロセッシングエレメント（ＰＥ）１１００の構成例を示す図である。リコンフィギャラブル回路は、多数のプロセッシングエレメントにより構成される。プロセッシングエレメント１１００は、レジスタ（フリップフロップ）１１０１、セレクタ１１０２、乗算器１１０３及び算術論理演算回路（ＡＬＵ）１１０４を有する。レジスタ１１０１は、値を保持する。セレクタ１１０２は、２個の入力値のいずれかを選択して出力する。乗算器１１０３は、乗算を行う。ＡＬＵ１１０４は、例えば加算を行う。
【０００３】
下記の特許文献１には、算術および／または論理機能を実行する機能セルと、情報を受け取り、記憶および／または出力するメモリセルとを有する、データ処理のためのセルエレメントフィールドにおいて、前記機能セルから制御コネクションが前記メモリセルに導かれていることを特徴とする、セルエレメントフィールドが記載されている。
【０００４】
また、下記の特許文献２には、複数のＰＥ、制御装置、それらを接続する第１通信路、第１通信路とは別の隣接ＰＥを接続する第２通信路を持つ並列計算機であって、制御装置は第１行列の縦ベクトルまたは横ベクトル（第１ベクトル）と第２行列の横ベクトルまたは縦ベクトル（第２ベクトル）をＰＥに分配する手段を備え、各ＰＥは、第１メモリ、第２メモリ、第１メモリに格納された第１ベクトルと第２メモリに格納された第２ベクトルを要素ごとに乗算する乗算器、乗算結果を累積加算する加算器、転送された第１ベクトルの第１メモリへの格納／転送された第２ベクトルの第２メモリへの格納／累積加算結果の制御装置への転送／第２通信路による第２ベクトルの隣接ＰＥへの転送をする制御手段を備える並列計算機が記載されている。
【０００５】
また、下記の特許文献３には、複数のプロセッシングエレメントのそれぞれに対応する複数のレジスタを含むレジスタ群が予め直列に接続された転送路を使用し、複数のデータ領域を順番に、継続して転送する工程と、前記レジスタ群の１のレジスタに転送されたデータ領域を、そのレジスタに対応するプロセッシングエレメントが使用可能であれば、そのデータ領域のデータを読出し、および／または前記データ領域にデータを書き込む入出力工程とを有するデータ伝送方法が記載されている。
【０００６】
【特許文献１】特表２００５−５１５５２５号公報
【特許文献２】特開平９−６２６５６号公報
【特許文献３】特開２００５−１６５４３５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記のプロセッシングエレメント１１００の場合、累積加算又は丸め処理を行うときに、プロセッシングエレメント１１００の外部に演算結果を出力し、ネットワーク経由で他のプロセッシングエレメントに入力するということを繰り返す必要がある。他のプロセッシングエレメントは、累積加算又は丸め処理を行う。この場合、演算器又はデータネットワーク等のリソースを非常に多く消費する。また、複雑な機能を複数のプロセッシングエレメントで実現しようとした場合、全体の制御やタイミング調整なども必要になる。
【０００８】
アーキテクチャが１６ビット又は３２ビットの場合は、データのバス幅も同じビット長になり、プロセッシングエレメントの出力時にデータネットワークを経由する度に、１６ビット又は３２ビットの正規化処理を行い、データを出力する必要がある。また、そのために冗長な回路が必要になったり、ビット精度不足を起こすことになる。また、実装検討及びデバッグ段階でも、常にビット精度を気にする必要があり、開発効率を妨げる要因になる。
【０００９】
本発明の目的は、複数のプロセッシングエレメント間の制御が容易であり、ビット精度を向上させることができるリコンフィギャラブル回路を提供することである。
【課題を解決するための手段】
【００１０】
本発明の一観点によれば、乗算する乗算器と、前記乗算された値を累積加算する累積加算器と、前記累積加算された値を丸め処理する丸め処理部とを有し、前記乗算器、前記累積加算器及び前記丸め処理部は１個のプロセッシングエレメント内に設けられ、前記累積加算器は、制御信号に応じたタイミングで出力することを特徴とするリコンフィギャラブル回路が提供される。
【発明の効果】
【００１１】
１個のプロセッシングエレメント内で乗算、累積加算及び丸め処理を行うことができるので、それらの演算を行う場合には、複数のプロセッシングエレメント間の制御が不要であり、それらの演算間のビット精度を向上させることができる。
【発明を実施するための最良の形態】
【００１２】
図１２は、本発明の実施形態によるリコンフィギャラブル回路１２００の構成例を示す図である。リコンフィギャラブル回路１２００は、ＬＳＩであり、複数のプロセッシングエレメント（ＰＥ）１２０１を有する。複数のプロセッシングエレメント１２０１の入力及び出力は、ネットワーク１２０２を介して、相互に接続可能である。コンフィグレーション番号を設定することにより、ネットワーク１２０２の接続が変わり、種々の演算が可能である。複数のプロセッシングエレメント１２０１は、相互に構成が同一でも、異なっていてもよく、例えばＡＬＵ、ＲＡＭ又は遅延回路等である。
【００１３】
図１は、１個のプロセッシングエレメント１００の構成例を示す図である。プロセッシングエレメント１００は、図１２の複数のプロセッシングエレメント１２０１の中の１個であり、シフト及びマスク部１０１，１０２、乗算器（ＭＵＬ）１０５、累積加算器（アキュムレータ：ＡＣＣ）１０７、符号拡張器（ＥＸＴ）１１０、丸め処理部（ＲＮＤ）１１２、セレクタ１０９，１１１，１１３，１１５及びレジスタ（フリップフロップ）１０３，１０４，１０６，１０８，１１４を有する。
【００１４】
外部入力値Ｄ１及びＤ２は、それぞれ、１６ビットデジタル値であり、１ビットの符号ビット及び１５ビットのデータを有する。シフト及びマスク部１０１は、外部入力値Ｄ１をビットシフト及びマスクしてレジスタ１０３を介して乗算器１０５に出力する。シフト及びマスク部１０２は、外部入力値Ｄ２をビットシフト及びマスクしてセレクタ１１５及びレジスタ１０４を介して乗算器１０５に出力する。
【００１５】
図５は、シフト及びマスク部１０１及び１０２の処理を説明するための図である。１６ビットの画像データ５０１は、下位８ビットの赤色（Ｒ）データを有する。１６ビットの画像データ５０２は、上位８ビットの緑色（Ｇ）データ及び下位８ビットの青色（Ｂ）データを有する。１画素のデータは、上記の赤色データ、緑色データ及び青色データからなる。例えば、シフト及びマスク部１０１は、画像データ５０１を外部入力値Ｄ１として入力し、画像データ５０１の上位８ビットをマスクして「０」にし、下位８ビットの赤色データのみを残し、画像データ５１１を出力する。また、シフト及びマスク部１０１は、画像データ５０２を外部入力値Ｄ１として入力し、画像データ５０２を右に８ビットシフトし、上位８ビットをマスクして「０」にし、緑色データのみを残し、画像データ５１２を出力する。また、シフト及びマスク部１０１は、画像データ５０２を外部入力値Ｄ１として入力し、画像データ５０２の上位８ビットをマスクして「０」にし、下位８ビットの青色データのみを残し、画像データ５１３を出力する。以上により、１６ビットの赤色データ５１１、緑色データ５１２及び青色データ５１３を生成することができる。
【００１６】
図１において、セレクタ１１５は、シフト及びマスク部１０２の出力値及び固定値ｉｍｍのいずれかを選択してレジスタ１０４に出力する。レジスタ１０３は、シフト及びマスク部１０１並びに乗算器１０５の間に設けられ、シフト及びマスク部１０１の出力値を保持して乗算器１０５に出力する。レジスタ１０４は、セレクタ１１５及び乗算器１０５の間に設けられ、セレクタ１１５の出力値を保持して乗算器１０５に出力する。乗算器１０５は、レジスタ１０３の出力値及びレジスタ１０４の出力値を乗算し、レジスタ１０６及びセレクタ１１３に出力する。乗算器１０５の出力値は、３２ビットデジタル値であり、２ビットの符号ビット及び３０ビットのデータを有する。レジスタ１０６は、乗算器１０５及び累積加算器１０７の間に設けられ、乗算器１０５の出力値を保持して累積加算器１０７に出力する。レジスタ１０８は累積加算器１０７の出力値を保持し、累積加算器１０７はレジスタ１０６の出力値及びレジスタ１０８の出力値を加算する。累積加算器１０７及びレジスタ１０８が実質的な累積加算器を構成する。すなわち、累積加算器１０７は、レジスタ１０６の出力値を累積加算してセレクタ１１１に出力する。
【００１７】
セレクタ１０９には、１６ビットの外部入力値Ｄ１及び１６ビットの外部入力値Ｄ２を合わせた３２ビットの値が入力される。セレクタ１０９は、制御信号Ｍｏｄｅ［０］に応じて、３２ビットの外部入力値Ｄ１，Ｄ２及びレジスタ１０６の出力値のいずれかを選択して符号拡張器１１０に出力する。符号拡張器１１０は、セレクタ１０９の出力値のビット数を増やすために符号拡張する。例えば、符号拡張器１１０の入力値は３２ビットであり、符号拡張器１１０の出力値は４２ビットである。符号拡張は、数値を変化させずにビット数を増やす処理であり、正の数である場合には上位ビットに０（２進数）を拡張し、負の数である場合には上位ビットに１（２進数）を拡張する。
【００１８】
セレクタ１１１には、累積加算器１０７及び符号拡張器１１０から４２ビットの値が入力される。その４２ビットの値は、１ビットのガードビット、１ビットの符号ビット及び４０ビットのデータを有する。正の値が最大値より大きくなるとオーバーフローが生じ、負の値が最小値より小さくなるとアンダーフローが生じる。正の値でありかつオーバーフローしていないときには、ガードビットが０、符号ビットが０になる。正の値でありかつオーバーフローしているときには、ガードビットが０、符号ビットが１になる。負の値でありかつアンダーフローしていないときには、ガードビットが１、符号ビットが１になる。負の値でありかつアンダーフローしているときには、ガードビットが１、符号ビットが０になる。ガードビット及び符号ビットを参照することにより、正の値であるのか又は負の値であるのか、オーバーフローしているのか否か、及びアンダーフローしているのか否かを判断することができる。ガードビットは、累積加算器１０７及び符号拡張器１１０により生成される。
【００１９】
セレクタ１１１は、制御信号Ｍｏｄｅ［１］に応じて、累積加算器１０７の出力値及び符号拡張器１１０の出力値のいずれかを選択して丸め処理部１１２に出力する。丸め処理部１１２は、セレクタ１１１の出力値を丸め処理する。丸め処理は、入力値を指定された桁位置で丸めた数値にする処理である。例えば、丸め処理部１１２は、小数点以下第１位を四捨五入し、小数を丸めて整数にする。ただし、入力値が負の場合で小数点以下第１位が５である場合（例えば−０．５）については、小数部を切り上げてもよいし、切り捨ててもよい。例えば、丸め処理部１１２の入力値は整数部及び小数部を有する４２ビット小数値であり、丸め処理部１１２の出力値は整数部のみからなる３２ビット整数値である。また、丸め処理部１１２は、ビットモードに応じて出力ビット数（例えば３２ビット又は１６ビット）を変える。これにより、外部出力信号のビット数を３２ビット又は１６ビットのいずれかに選択することができ、他のプロセッシングエレメントの入力値としてそのまま使用可能になる。
【００２０】
セレクタ１１３は、制御信号Ｍｏｄｅ［２］に応じて、丸め処理部１１２の出力値及び乗算器１０５の出力値のいずれかを選択してレジスタ１１４に出力する。レジスタ１１４は、丸め処理部１１２の出力値を保持して、外部出力信号ＯＵＴをネットワークに出力する。
【００２１】
以上のように、レジスタ１０３及び１０４は、シフト及びマスク部１０１，１０２並びに乗算器１０５の間に設けられる。レジスタ１０６は、乗算器１０５及び累積加算器１０７の間に設けられる。これにより、レジスタ１０３の前段のシフト及びマスクステージ、レジスタ１０３及び１０６の間の乗算ステージ、累積加算（又は符号拡張）及び丸め処理ステージの機能毎にパイプラインを分けることができ、必要な処理のみ実行することができる。また、パイプライン処理により、サイクル毎に別の演算処理を行うことができる。
【００２２】
図６は、図１のセレクタ１０９，１１１，１１３の選択に応じた４種類の演算処理の組み合わせパターンＡ〜Ｄを示す図である。演算組み合わせパターンＡは、図１に示すように、符号拡張器（ＥＸＴ）１１０及び丸め処理部（ＲＮＤ）１１２の処理を行う。セレクタ１０９は、外部入力値Ｄ１，Ｄ２を選択する。符号拡張器１１０は、外部入力値Ｄ１，Ｄ２に対して符号拡張を行う。セレクタ１１１は、符号拡張器１１０の出力値を選択する。丸め処理部１１２は、符号拡張された外部入力値Ｄ１，Ｄ２に対して丸め処理を行う。セレクタ１１３は、丸め処理部１１２の出力値を選択し、外部出力信号ＯＵＴを出力する。
【００２３】
演算組み合わせパターンＢは、図２に示すように、乗算器（ＭＵＬ）１０５の処理を行う。セレクタ１１５は、外部入力値Ｄ２を選択する。乗算器１０５は、外部入力値Ｄ１及びＤ２の乗算を行う。セレクタ１１３は、乗算器１０５の出力値を選択し、外部出力信号ＯＵＴとして出力する。
【００２４】
演算組み合わせパターンＣは、図３に示すように、乗算器（ＭＵＬ）１０５、符号拡張器（ＥＸＴ）１１０及び丸め処理部（ＲＮＤ）１１２の処理を行う。セレクタ１１５は、外部入力値Ｄ２を選択する。乗算器１０５は、外部入力値Ｄ１及びＤ２の乗算を行う。セレクタ１０９は、レジスタ１０６の出力値を選択する。符号拡張器１１０は、上記の乗算された値に対して符号拡張を行う。セレクタ１１１は、符号拡張器１１０の出力値を選択する。丸め処理部１１２は、上記の符号拡張された値に対して丸め処理を行う。セレクタ１１３は、丸め処理部１１２の出力値を選択し、外部出力値ＯＵＴとして出力する。
【００２５】
演算組み合わせパターンＤは、図４に示すように、乗算器（ＭＵＬ）１０５、累積加算器（ＡＣＣ）１０７及び丸め処理部（ＲＮＤ）１１２の処理を行う。セレクタ１１５は、外部入力値Ｄ２を選択する。乗算器１０５は、外部入力値Ｄ１及びＤ２の乗算を行う。累積加算器１０７は、上記の乗算された値を累積加算する。セレクタ１１１は、累積加算器１０７の出力値を選択する。丸め処理部１１２は、上記の累積加算された値に対して丸め処理を行う。セレクタ１１３は、丸め処理部１１２の出力値を選択し、外部出力値ＯＵＴとして出力する。
【００２６】
図７は、本実施形態によるプロセッシングエレメントのより具体的な構成例を示す図である。プロセッシングエレメント７００は、図１のプロセッシングエレメント１００に対応する。ただし、プロセッシングエレメント７００では、図１のシフト及びマスク部１０１及び１０２を省略している。プロセッシングエレメント７００は、乗算部７１１、累積加算部７１２、符号拡張部７１３、丸め処理部７１４、累積加算制御部７２１、動作制御部７２２、並びにデータ有効及び無効制御部７２３を有する。
【００２７】
レジスタ１０３は、外部入力値Ｄ１を保持する。レジスタ１０４は、外部入力値Ｄ２を保持する。レジスタ７０５は、固定値ｉｍｍを保持する。セレクタ１１５は、レジスタ１０４の出力値及びレジスタ７０５の出力値のいずれかを選択して乗算器１０５に出力する。乗算器１０５は、レジスタ１０３の出力値及びセレクタ１１５の出力値を乗算して出力する。レジスタ１０６は、乗算器１０５の出力値を保持する。符号拡張器７０１は、レジスタ１０６の出力値に対して符号拡張を行う。累積加算器１０７は、符号拡張器７０１及びレジスタ１０８の出力値を加算することにより累積加算を行う。レジスタ１０８は、累積加算器１０７の出力値を保持する。セレクタ７０２は、累積加算器１０７の出力値及びレジスタ１０８の出力値のいずれかを選択してセレクタ１１１に出力する。
【００２８】
レジスタ７０３は、外部入力値Ｄ１及びＤ２を合わせた３２ビット値を保持する。セレクタ１０９は、レジスタ７０３の出力値及びレジスタ１０６の出力値のいずれかを選択して符号拡張器１１０に出力する。符号拡張器１１０は、セレクタ１０９の出力値に対して符号拡張を行う。
【００２９】
セレクタ１１１は、符号拡張器１１０の出力値及びセレクタ７０２の出力値のいずれかを選択して丸め処理部１１２に出力する。丸め処理部１１２は、セレクタ１１１の出力値に対して丸め処理を行う。セレクタ１１３は、丸め処理部１１２の出力値及び乗算器１０５の出力値のいずれかを選択してレジスタ１１４に出力する。レジスタ１１４は、セレクタ１１３の出力値を保持し、外部出力値ＯＵＴを出力する。
【００３０】
動作制御部７２２は、制御信号ＣＴＬに応じて、乗算部７１１、累積加算部７１２、符号拡張部７１３及び丸め処理部７１４の動作のアクティブ又は非アクティブを制御し、レジスタ７０４にイネーブル信号ＥＮを出力する。レジスタ７０４は、そのイネーブル信号ＥＮを保持して外部に出力する。イネーブル信号ＥＮは、外部出力信号ＯＵＴの有効又は無効を示すバリッド信号である。
【００３１】
データ有効及び無効制御部７２３は、イネーブル信号ＥＮ１及びＥＮ２を基に外部入力値Ｄ１及びＤ２を有効又は無効にするために、乗算部７１１及び符号拡張部７１３の動作のアクティブ又は非アクティブを制御する。イネーブル信号ＥＮ１は外部入力値Ｄ１の有効又は無効を示し、イネーブル信号ＥＮ２は外部入力値Ｄ２の有効又は無効を示す。
【００３２】
累積加算制御部７２１は、制御信号ＡＣＴＬを基にレジスタ１０８，１１４及び７０４を制御することにより、累積加算を制御する。その詳細は、後に図９及び図１０を参照しながら説明する。
【００３３】
図９は図７の累積加算制御部７２１の制御方法を示す図であり、図１０は累積加算器１０７の入力値及び出力値を示すタイミングチャートである。
【００３４】
まず、アカウントモードＭＤが００（２進数）であるときの累積加算制御部７２１の動作を説明する。累積加算器１０７は、図１０に示すように、入力値ＩＮを累積加算し、レジスタ１０８を介して出力値ＯＵＴ１を出力する。累積加算制御部７２１は、累積加算器１０７の累積加算毎に累積加算結果を出力するようにレジスタ１０８を制御する。また、累積加算制御部７２１は、制御信号ＡＣＴＬが１１（２進数）になるとレジスタ１０８の保持値をリセットする。
【００３５】
次に、アカウントモードＭＤが０１（２進数）であるときの累積加算制御部７２１の動作を説明する。累積加算器１０７は、図１０に示すように、入力値ＩＮを累積加算し、レジスタ１０８を介して出力値ＯＵＴ２を出力する。累積加算制御部７２１は、コンフィグレーション番号の切り替え時のみ累積加算結果を出力するようにレジスタ１０８を制御する。また、累積加算制御部７２１は、制御信号ＡＣＴＬが１１（２進数）になるとレジスタ１０８の保持値をリセットする。
【００３６】
次に、アカウントモードＭＤが１０（２進数）であるときの累積加算制御部７２１の動作を説明する。累積加算制御部７２１は、制御信号ＡＣＴＬが１１（２進数）になると累積加算結果を出力し、それと同時に保持値をリセットするようにレジスタ１０８を制御する。また、累積加算制御部７２１は、制御信号ＡＣＴＬが１０（２進数）になると累積加算結果を出力し、その際に保持値をリセットしないようにレジスタ１０８を制御する。
【００３７】
次に、アカウントモードＭＤが１１（２進数）であるときの累積加算制御部７２１の動作を説明する。累積加算制御部７２１は、制御信号ＡＣＴＬが１１（２進数）になると累積加算結果を出力せずに、保持値をリセットするようにレジスタ１０８を制御する。また、累積加算制御部７２１は、制御信号ＡＣＴＬが１０（２進数）になると累積加算結果を出力し、その際に保持値をリセットしないようにレジスタ１０８を制御する。
【００３８】
以上のように、レジスタ１０８及び累積加算器１０７を含む累積加算器は、制御信号ＡＣＴＬに応じたタイミングで出力し、制御信号ＡＣＴＬに応じてリセットする。累積加算制御信号ＡＣＴＬにより制御することにより、連続してデータ処理を行いながら累積加算及び累積加算の出力タイミングを制御できる。
【００３９】
図８は、本実施形態によるプロセッシングエレメントのエラー処理方法を示すフローチャートである。ステップＳ８０１では、累積加算器１０７は累積加算を行う。次に、ステップＳ８０２では、累積加算器１０７は、上記の累積加算された値がオーバーフロー又はアンダーフローしているか否かをチェックする。オーバーフロー又はアンダーフローしていればステップＳ８０３に進み、オーバーフロー及びアンダーフローしていなければステップＳ８０４へ進む。
【００４０】
ステップＳ８０３では、累積加算器１０７は、オーバーフローしていれば上記の累積加算された値を最大値にし（クリップし）、アンダーフローしていれば上記の累積加算された値を最小値にする（クリップする）。その後、ステップＳ８０１、Ｓ８０４及びＳ８１０に進む。ステップＳ８１０では、累積加算器１０７は、エラー信号を出力する。ステップＳ８０１では、累積加算器１０７は、次の累積加算を続ける。
【００４１】
ステップＳ８０４では、丸め処理部１１２は、丸め処理を行う。ここでの丸め処理は、累積加算値に対する丸め処理と外部入力値に対する丸め処理を含む。なお、丸め処理部１１２は、累積加算器１０７から上記のエラー信号を入力すると、その累積加算値の丸め処理をバイパスする。
【００４２】
次に、ステップＳ８０５では、丸め処理部１１２は、上記の丸め処理された値がオーバーフローしているか否かをチェックする。オーバーフローは、丸め処理の繰り上げ加算時に生じる可能性がある。オーバーフローしていればステップＳ８０６に進み、オーバーフローしていなければステップＳ８０７へ進む。
【００４３】
ステップＳ８０６では、オーバーフローしていれば上記の丸め処理した値を最大値にし（クリップし）、ステップＳ８１０へ進む。ステップＳ８１０では、丸め処理部１１２は、エラー信号を出力する。
【００４４】
ステップＳ８０７では、丸め処理部１１２は、入力値の整数ビット数と出力値の整数ビット数が異なるときには、丸め処理した値をビットシフトする。入力値の整数ビット数が出力値の整数ビット数より多いときには、上記のビットシフトによりオーバーフローすることがある。
【００４５】
次に、ステップＳ８０８では、丸め処理部１１２は、上記のビットシフトされた値がオーバーフロー又はアンダーフローしているか否かをチェックする。オーバーフロー又はアンダーフローしていればステップＳ８０９に進み、オーバーフロー及びアンダーフローしていなければ処理を終了する。
【００４６】
ステップＳ８０９では、丸め処理部１１２は、上記のビットシフトによりオーバーフローしていれば上記のビットシフトした値を最大値にし（クリップし）、アンダーフローしていれば上記のビットシフトした値を最小値にし（クリップする）、ステップＳ８１０へ進む。ステップＳ８１０では、丸め処理部１１２は、エラー信号を出力する。上記のビットシフト量を決定することにより、丸め量、有効ビットによるクリップ処理、最大値及び最小値を変えることができる。
【００４７】
上記の累積加算部１０７は、エラー信号を丸め処理部１１２へ出力する。これにより、丸め処理部１１２は、累積加算によるエラー信号及び丸め処理によるエラー信号をまとめて出力することができ、累積加算によるエラー信号が出力されたときには丸め処理をバイパスすることができる。本実施形態は、上記のエラー出力部を、累積加算器１０７及び丸め処理部１１２で別々に持つより、回路規模や演算器の動作を減らすことができる。
【００４８】
以上のように、本実施形態によれば、乗算器１０５、累積加算器１０７及び丸め処理部１１２は１個のプロセッシングエレメント１００内に設けられる。１個のプロセッシングエレメント１００内で乗算、累積加算及び丸め処理を行うことができるので、それらの演算を行う場合には、複数のプロセッシングエレメント間の制御が不要であり、それらの演算間のビット精度を向上させることができる。
【００４９】
本実施形態は、よく使われる乗算器１０５及び累積加算器１０７の機能を１個のプロセッシングエレメント１００の内部にまとめる。これにより、プロセッシングエレメント外部のデータネットワークを消費せず、複数のプロセッシングエレメント間のタイミング調整が不要である。また、乗算器１０５及び累積加算器１０７がプロセッシングエレメント内部で閉じているために、符号ビットやガードビットを乗算器１０５の出力や累積加算器１０７の出力で持たせることができ、演算精度を高めることができる。
【００５０】
また、累積加算器１０７及び丸め処理部１１２を同一のプロセッシングエレメント１００内に実装するために、累積加算器１０７で累積加算したビット精度を損なうことなく、丸め処理部１１２で丸め処理を行うことができる。
【００５１】
また、有効ビット精度を指定することにより、外部入力値Ｄ１，Ｄ２のビット精度と外部出力値ＯＵＴのビット精度を規定でき、設定情報を共有でき、レジスタ数（回路規模）を減少することができる。
【００５２】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【００５３】
本発明の実施形態は、例えば以下のように種々の適用が可能である。
【００５４】
（付記１）
乗算する乗算器と、
前記乗算された値を累積加算する累積加算器と、
前記累積加算された値を丸め処理する丸め処理部とを有し、
前記乗算器、前記累積加算器及び前記丸め処理部は１個のプロセッシングエレメント内に設けられ、
前記累積加算器は、制御信号に応じたタイミングで出力することを特徴とするリコンフィギャラブル回路。
（付記２）
前記累積加算器は、制御信号に応じてリセットすることを特徴とする付記１記載のリコンフィギャラブル回路。
（付記３）
さらに、前記１個のプロセッシングエレメント内に設けられ、前記乗算された値のビット数を増やすために符号拡張する符号拡張器と、
前記累積加算器の出力値及び前記符号拡張器の出力値のいずれかを選択して前記丸め処理部に出力する第１のセレクタとを有することを特徴とする付記１記載のリコンフィギャラブル回路。
（付記４）
さらに、前記１個のプロセッシングエレメント内に設けられ、２個のデジタル値をビットシフト及びマスクして前記乗算器に出力するシフト及びマスク部を有することを特徴とする付記１記載のリコンフィギャラブル回路。
（付記５）
前記累積加算器は、オーバーフローすると累積加算値を最大値にし、アンダーフローすると累積加算値を最小値にし、エラー信号を出力することを特徴とする付記１記載のリコンフィギャラブル回路。
（付記６）
前記丸め処理部は、前記エラー信号が出力されると、その累積加算値の丸め処理をバイパスすることを特徴とする付記５記載のリコンフィギャラブル回路。
（付記７）
前記丸め処理部は、オーバーフローすると丸め処理した値を最大値にしてエラー信号を出力することを特徴とする付記１記載のリコンフィギャラブル回路。
（付記８）
前記丸め処理部は、入力値の整数ビット数と出力値の整数ビット数が異なるときには、前記丸め処理した値をビットシフトすることを特徴とする付記１記載のリコンフィギャラブル回路。
（付記９）
前記丸め処理部は、前記ビットシフトによりオーバーフローするとビットシフトした値を最大値にし、前記ビットシフトによりアンダーフローするとビットシフトした値を最小値にし、エラー信号を出力することを特徴とする付記８記載のリコンフィギャラブル回路。
（付記１０）
前記丸め処理部は、ビットモードに応じて出力ビット数を変えることを特徴とする付記１記載のリコンフィギャラブル回路。
（付記１１）
さらに、前記１個のプロセッシングエレメント内に設けられ、前記乗算器の出力値及び前記丸め処理部の出力値のいずれかを選択して出力する第１のセレクタを有することを特徴とする付記１記載のリコンフィギャラブル回路。
（付記１２）
さらに、前記１個のプロセッシングエレメント内に設けられ、前記乗算器の出力値及び外部入力値のいずれかを選択して前記符号拡張器へ出力する第２のセレクタを有することを特徴とする付記３記載のリコンフィギャラブル回路。
（付記１３）
さらに、前記１個のプロセッシングエレメント内に設けられ、前記乗算器及び前記累積加算器の間に設けられるレジスタを有することを特徴とする付記１記載のリコンフィギャラブル回路。
（付記１４）
さらに、前記１個のプロセッシングエレメント内において、前記シフト及びマスク部並びに前記乗算器の間に設けられる第１のレジスタと、
前記１個のプロセッシングエレメント内において、前記乗算器及び前記累積加算器の間に設けられる第２のレジスタとを有することを特徴とする付記４記載のリコンフィギャラブル回路。
（付記１５）
さらに、前記１個のプロセッシングエレメント内に設けられ、前記乗算された値のビット数を増やすために符号拡張する符号拡張器と、
前記累積加算器の出力値及び前記符号拡張器の出力値のいずれかを選択して前記丸め処理部に出力する第２のセレクタとを有することを特徴とする付記１１記載のリコンフィギャラブル回路。
（付記１６）
さらに、前記１個のプロセッシングエレメント内に設けられ、前記乗算器の出力値及び外部入力値のいずれかを選択して前記符号拡張器へ出力する第３のセレクタを有することを特徴とする付記１５記載のリコンフィギャラブル回路。
（付記１７）
さらに、前記１個のプロセッシングエレメント内に設けられ、２個のデジタル値をビットシフト及びマスクして前記乗算器に出力するシフト及びマスク部を有することを特徴とする付記１６記載のリコンフィギャラブル回路。
（付記１８）
さらに、前記１個のプロセッシングエレメント内において、前記シフト及びマスク部並びに前記乗算器の間に設けられる第１のレジスタと、
前記１個のプロセッシングエレメント内において、前記乗算器及び前記累積加算器の間に設けられる第２のレジスタとを有することを特徴とする付記１７記載のリコンフィギャラブル回路。
【図面の簡単な説明】
【００５５】
【図１】本発明の実施形態によるプロセッシングエレメントの構成例を示す図である。
【図２】演算組み合わせパターンを示す図である。
【図３】演算組み合わせパターンを示す図である。
【図４】演算組み合わせパターンを示す図である。
【図５】シフト及びマスク部の処理を説明するための図である。
【図６】図１のセレクタの選択に応じた４種類の演算処理の組み合わせパターンを示す図である。
【図７】本実施形態によるプロセッシングエレメントのより具体的な構成例を示す図である。
【図８】本実施形態によるプロセッシングエレメントのエラー処理方法を示すフローチャートである。
【図９】図７の累積加算制御部の制御方法を示す図である。
【図１０】累積加算器の入力値及び出力値を示すタイミングチャートである。
【図１１】プロセッシングエレメントの構成例を示す図である。
【図１２】リコンフィギャラブル回路の構成例を示す図である。
【符号の説明】
【００５６】
１００  プロセッシングエレメント
１０１，１０２  シフト及びマスク部
１０５  乗算器
１０７  累積加算器
１１０  符号拡張器
１１２  丸め処理部
７２１  累積加算制御部
７２２  動作制御部
７２３  データ有効及び無効制御部
１２００  リコンフィギャラブル回路
１２０１  プロセッシングエレメント
１２０２  ネットワーク
【図１】
2008204356.tif 000003
【図２】
2008204356.tif 000004
【図３】
2008204356.tif 000005
【図４】
2008204356.tif 000006
【図５】
2008204356.tif 000007
【図６】
2008204356.tif 000008
【図７】
2008204356.tif 000009
【図８】
2008204356.tif 000010
【図９】
2008204356.tif 000011
【図１０】
2008204356.tif 000012
【図１１】
2008204356.tif 000013
【図１２】
2008204356.tif 000014