(57)【要約】３つ以上の入力バイナリ数(BIN1〜BIN4)の加算または減算の少なくとも一方を実行する演算回路(AC)を具えた電子装置を提供し、これらの入力バイナリ数の少なくとも２つはそのビット幅が異なる。この演算回路(AC)は、入これらの力バイナリ数(BIN1〜BIN4)の少なくとも１つの符号拡張及び／または０拡張を実行する拡張手段(EU1〜EU3)を具えている。さらに、この演算回路(AC)は、各々が、第１及び第２バイナリ数である２つのオペランドの加算及び／または減算を計算する少なくとも２つの２オペランド演算ユニット(AU1〜AU3)、及び少なくとも１つの前記２オペランド演算ユニット(AU1〜AU3)のオーバーフローを検出し、オーバーフローの検出結果に従い前記演算ユニット(AU1〜AU3)の計算結果を飽和させるオーバーフロー兼飽和ユニット(OSU1〜OSU3)を具えている。
2008522304.tif 000002
【特許請求の範囲】
【請求項１】
３つ以上の入力バイナリ数(BIN1, BIN2, BIN3, BIN4)の加算または減算の少なくとも一方を実行する演算回路(AC)を具え、前記入力バイナリ数(BIN1, BIN2, BIN3, BIN4)の少なくとも２つはそのビット幅が異なる電子装置において、
前記演算回路(AC)が、
前記入力バイナリ数(BIN1, BIN2, BIN3, BIN4)の少なくとも１つの、符号拡張または０拡張の少なくとも一方を実行する拡張手段(EU1, EU2, EU3)と；
各々が、第１及び第２バイナリ数である２つのオペランドの加算または減算の少なくとも一方を計算する少なくとも２つの２オペランド演算ユニット(AU1, AU2, AU3)と；
前記２オペランド演算ユニット(AU1, AU2, AU3)の少なくとも１つの計算オーバーフローを検出し、オーバーフローの検出結果に従い前記２オペランド演算ユニット(AU1, AU2, AU3)の計算結果を飽和させるオーバーフロー兼飽和手段(OSU1, OSU2, OSU3)と
を具えていることを特徴とする電子装置。
【請求項２】
前記演算回路(AC)がさらに、
少なくとも１つの入力バイナリ数(BIN1, BIN2, BIN3, BIN4)を前記拡張手段(EU1, EU2, EU3)に入力するための入力手段(IU1, IU2, IU3, IU4)を具えていることを特徴とする請求項１に記載の電子装置。
【請求項３】
前記演算回路(AC)が、
前記入力バイナリ数(BIN1, BIN2, BIN3, BIN4)の少なくとも１つの、符号拡張または０拡張の少なくとも一方を、最大のビット幅を有する前記入力バイナリ数のビット幅より小さいビット幅を有する前記入力バイナリ数毎に実行するための、複数の拡張ユニット(EU1, EU2, EU3)を具えていることを特徴とする請求項１または２に記載の電子装置。
【請求項４】
前記拡張ユニット(EU1, EU2, EU3)が、前記入力バイナリ数(BIN1, BIN2, BIN3)が符号付きバイナリ数であるか符号なしバイナリ数であるかを示す制御信号を受信するための入力、特に単一ビット入力を提供することを特徴とする請求項３に記載の電子装置。
【請求項５】
前記演算回路が、
各々が、１つの２オペランド演算ユニット(AU1, AU2, AU3)の計算オーバーフローを検出し、オーバーフローの検出結果に従い前記２オペランド演算ユニット(AU1, AU2, AU3)の計算結果を飽和させる複数のオーバーフロー兼飽和ユニット(OSU1, OSU2, OSU3)を具えていることを特徴とする請求項１〜４のいずれかに記載の電子装置。
【請求項６】
請求項１〜５のいずれかに記載の電子装置を少なくとも１つ具えたデータ処理システム。
【請求項７】
Ｎ個の入力バイナリ数(BIN1, BIN2, BIN3, BIN4)の和または差の少なくとも一方を計算する方法であって、ここにＮは２より大きく、前記入力バイナリ数(BIN1, BIN2, BIN3, BIN4)の少なくとも２つはそのビット幅が異なるバイナリ数の計算方法において、
より短いビット幅を有する少なくとも１つの第１入力バイナリ数(BIN1, BIN2, BIN3, BIN4)を、第２入力バイナリ数(BIN1, BIN2, BIN3, BIN4)と同じビット幅を持つように拡張するステップと；
各々が、２つのオペランドの加算または減算の少なくとも一方を計算するＮ−１個の２オペランド演算ユニット(AU1, AU2, AU3)を用いて、前記計算を実行するステップと；
前記計算の計算結果のオーバーフローを検出するステップと；
前記オーバーフローの検出結果に従い、前記計算結果を飽和させるステップと
を具えていることを特徴とするバイナリ数の計算方法。
【請求項８】
Ｎ個の入力バイナリ数(BIN1, BIN2, BIN3, BIN4)の加算または減算の少なくとも一方を実行する演算回路(AC)を設計する方法であって、ここにＮは２より大きく、前記入力バイナリ数(BIN1, BIN2, BIN3, BIN4)の少なくとも２つはそのビット幅が異なる演算回路の設計方法において、
前記Ｎ個の入力バイナリ数を前記演算回路(AC)に入力するための入力手段(IU1, IU2, IU3, IU4)を用意するステップと；
前記入力バイナリ数(BIN1, BIN2, BIN3, BIN4)の少なくとも１つの符号拡張または０拡張の少なくとも一方を実行する拡張手段(EU1, EU2, EU3)を用意するステップと；
各々が、第１及び第２バイナリ数である２つのオペランドの加算及び減算の少なくとも一方を計算するＮ−１個の２オペランド演算ユニット(AU1, AU2, AU3)を用意するステップと；
前記２オペランド演算ユニット(AU1, AU2, AU3)の少なくとも２つの計算オーバーフローを検出し、オーバーフローの検出結果に従い、前記２オペランド演算ユニット(AU1, AU2, AU3)の計算結果を飽和させるオーバーフロー兼飽和手段(OSU1, OSU2, OSU3)を用意するステップと；
前記入力手段(IU1, IU2, IU3, IU4)、前記拡張手段(EU1, EU2, EU3)、前記演算ユニット(AU1, AU2, AU3)、及び前記オーバーフロー兼飽和手段(OSU1, OSU2, OSU3)の間の接続を設けるステップと
を具えていることを特徴とする演算回路の設計方法。
【請求項９】
前記Ｎ−１個の２オペランド演算ユニット(AU1, AU2, AU3)の各出力が前記オーバーフロー兼飽和手段(OSU1, OSU2, OSU3)に接続されるように、前記演算回路(AC)内に接続を設けるステップを具えていることを特徴とする請求項８に記載の方法。
【請求項１０】
コンピュータ上での実行時に、請求項７または８に記載の方法のステップをコンピュータに実行させるためのプログラムコードを具えたコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、３つ以上の入力バイナリ（２進）数の加算または減算の少なくとも一方を実行する演算回路を有する電子装置に関するものである。これらの入力バイナリ数の少なくも２つはそのビット幅が異なる。本発明は、３つ以上の入力バイナリ数の加算または減算の方法にも関するものである。さらに、本発明は演算回路を設計する方法に関するものである。本発明は、異なるビット幅の３つ以上の入力バイナリ数の加算または減算の少なくとも一方を実行する演算回路を有する電子装置を有するデータ処理システムにも関するものである。
【背景技術】
【０００２】
ディジタル・シグナルプロセッサ（ＤＳＰ）他の種類のプロセッサまたはマイクロコントローラ、並びに特定用途向け集積回路（ＡＳＩＣ）において使用される演算ユニットは、所定ビット数の入力バイナリ数を有する。入力バイナリ数を表現するビット数がビット幅である。有限のビット幅は、表現可能な数の有限範囲を生じさせる。表現可能な数の有限範囲により、論理ユニットにおける入力バイナリ数は、最大表現可能値、最小表現可能値、及び有限の量子化に制限される。計算中の最小及び最大値の超過を回避するために、計算結果は、あり得るすべての結果をカバーすべく拡張したビット幅を有する。この結果は監視され、所定ビット幅の違反を信号通知するためのオーバーフロー（またはアンダーフロー）インジケータ（指標）が生成される。一般に、オーバーフローまたはアンダーフローフラグを用いて、計算結果が許容値範囲を拡張するか否かを指示する。さらに、オーバーフローまたはアンダーフローが発生した場合には、計算結果を表現する入力バイナリ数を所定値に設定し、この所定値は最大または最小の表現可能値である。このステップを飽和と称する。
【０００３】
オーバーフロー検出及び飽和の演算は、ＤＳＰ、マイクロコントローラ、及びマイクロプロセッサにおいて使用される演算処理ユニットの広く用いられている特徴である。飽和は、量子化によって、及びコンピュータ・アーキテクチャにおける表現可能数の有限範囲によって発生するエラーを減らすために必要である。入力バイナリ数は、符号付き及び符合なしフォーマットで用いられる。符号付き入力バイナリ数用の一般的なフォーマットは２の補数である。２の補数によれば、負の値は先頭に１を有する。
【０００４】
大部分のプロセッサ・アーキテクチャは２オペランドのモデルに基づくものである。従って、常に、同じバイナリ表現及び同じビット幅を有する２つの入力バイナリ数を計算する。同じ算術演算を３つ以上の数に適用しなければならない場合には、この演算を直列的に実行することができ、即ち、２つの数に対して演算を実行し、これに続いて３番目の数に対して実行する。特に、今日の特定用途向けプロセッサは、３ビット以上のオペランドに基づくアーキテクチャを必要とすることが多い。これに加えて、計算すべき入力バイナリ数のビット幅は、同じ演算ユニットについても変動し得る。プロセッサに関しては、次の２つのシナリオが考えられる：通常はメモリから取り出した２つのディジタル数を乗算及び加算するための数値演算（演算論理）ユニットを有するプロセッサまたはコントローラ、並びにより効率的な方法で計算ステップを実行するための専用論理回路を含むＡＳＩＣ。
【０００５】
ＡＳＩＣ用の演算回路の設計は通常、多くは階層的な方法で設計することを目論んだ設計ソフトウェアツールによってサポートされる。階層的な回路設計は、かなり挙動的な回路の記述から始まる。後のステップでは、設計者または設計ソフトウェアのいずれかが、論理ゲート及びトランジスタを合成して挙動の定義を満足させる。合成ステップの終わりには、回路の図面及びレイアウトが存在し、これに基づいて最終的に回路が製造される。今日、設計プロセスの種々のステップが自動的に実行される。しかし、結果的な演算回路は、自動的な合成ステップの後に完全には最適化されていないことが多い。従って、最適化された演算回路を設計するための有効な概念及びルールを見つけるに当たり多大な労力が払われている。
【０００６】
以下のマルチオペランド演算器の説明は、両方の入力が同じビット幅を有する標準的な整数の２の補数表現について例示する。単純な２入力演算ユニットの場合には、加算または減算用のオーバーフロー検出が広く知られている。通常、計算結果のビット幅は、入力バイナリ数のビット幅より１ビット大きい。これに加えて、キャリー（桁上げ）フラグ（またはビット）が設けられている。オーバーフローフラグは、符号なし整数についてはキャリーフラグであり、あるいは符号付きの場合には、論理反転（ネゲート）したキャリーフラグと結果の最高ビット位置との論理積（ＡＮＤ）である。アンダーフローフラグは、同じ論理の使用によって得ることができる。オーバーフローまたはアンダーフローを検出し次第、飽和を適用することになる。飽和の際には、得られた結果を表現可能な（オーバーフローの場合には）最大値または（アンダーフローの場合には）最小値に置き換える。
【０００７】
３つ以上のオペランドの場合には、既知の直接的なオーバーフロー検出法は適用することができない。例えば１１１１2（２進数の１１１１）の３回の加算は(０)１１０１2となる。従ってキャリーフラグは０である。キャリーフラグ０はオーバーフローが検出されないことを示すが、オーバーフローは発生している。符号付気オペランドについても同じ問題が生じる。異なるビット幅を有する３つ以上のオペランドを加算する場合には、追加的な問題が生じる。例えば、１１１１2＋１１１１2＋１１１１１１１１2は１０００１１１０１2となる。符合なしの場合には結果が正しくても、符号付き２進数については結果は正しくない。符号付きの数については、正しい結果は１１１１１１０１2（−３10（１０進数の−３））である。結論としては、３つ以上の入力オペランドを有するユニット用のオーバーフローまたはアンダーフロー検出は直接的な方法では実現することができない。
【０００８】
【特許文献１】米国特許第5,917,739号
【０００９】
米国特許第5,917,739号にはアルゴリズムユニットが開示され、ここでは４つの符号付きまたは符号なしのｎビット整数オペランドのｎビットの平均値を１命令サイクルで計算する。４つの数の平均値を得るために使用すべき方法及び回路が開示され、これらの数は同じビット幅を有する。飽和は、この方法および回路によってカバーされない。中間的な結果は拡張されるが、飽和については言及していない。
【００１０】
【特許文献２】米国特許出願公開第2003/0140072号
【特許文献３】米国特許第6,321,248号
【００１１】
米国特許出願公開第2003/0140072号は２入力の加算に関するものである。両方の入力が同じビット幅を有する。
米国特許第6,321,248号は、２入力演算用のオーバーフロー検出を開示している。２オペランド演算については、２つのオペランドが異なるビット幅を有する特別な場合について言及している。
【００１２】
【非特許文献１】Pai and Tran著：”Overflow detection in multi-operand addition”, International Journal of Electronics, Vol. 73, No. 3
【００１３】
”Overflow detection in multi-operand addition”, International Journal of Electronics, Vol. 73, No. 3, 461-469ページ, 1992年は、マルチオペランド加算におけるオーバーフローを検出するアルゴリズムを開示している。このアルゴリズムは、一般に市販されている算術加算チップをサポートすべく拡張されている。このアルゴリズムは、マルチオペランド・キャリーセーブ（桁上げ保存）加算器及びマルチオペランド・ビット直列加算器と共に、オーバーフローを検出するために使用されている。これらの回路には、オペランドの減算を含めるための用意もなされている。このアルゴリズムの検証のために、ＣＡＤツールを用いてハードウェアの論理回路をシミュレート（模擬）している。Pai and Tranの文献によれば、すべての入力が同じビット幅を有する。彼等は、入力の数に応じてキャリー出力のビット数を勘定に入れることを提案している。
【００１４】
本明細書では簡単のため、「オーバーフロー」は「アンダーフロー」を含む。従って、「オーバーフロー検出」及びこれに対応する飽和（最大値）の参照は、「アンダーフロー検出」及びこれに対応する飽和（最小値）としても解釈すべきものである。
【発明の開示】
【発明が解決しようとする課題】
【００１５】
本発明の目的は、少なくとも２つはそのビット幅が異なる３つ以上の入力バイナリ数に対する計算操作を実行するアルゴリズム回路を有する、改善された有効な電子装置を提供することにある。また本発明の目的は、少なくとも２つはそのビット幅が異なる３つ以上の入力バイナリ数に対する計算操作を実行するための改善されたアルゴリズム回路を生成するための設計法を提供することにある。
【課題を解決するための手段】
【００１６】
この目的は請求項１に記載の電子装置、請求項６に記載のデータ処理システム、請求項７８に記載の、Ｎ個の入力バイナリ数の和または差を計算する方法によって、そして請求項８に記載の演算回路を設計する方法によって解決される。
【００１７】
従って、３つ以上の入力バイナリ数の加算または減算を実行する演算回路を具えた電子装置が提供され、これらの入力バイナリ数の少なくとも２つはそのビット幅が異なる。この演算回路は、これらの入力バイナリ数の少なくとも１つの符号及び／または０の拡張を実行する拡張手段を具えている。さらに上記演算回路は、各々が、第１及び第２のバイナリ数である２つのオペランドの加算及び／または減算を計算する少なくとも２つの２オペランド演算ユニット、及び少なくとも１つの前記２オペランド演算ユニットの計算オーバーフローを検出し、オーバーフローの検出結果に従い前記演算ユニットの計算結果を飽和させるオーバーフロー兼飽和手段を具えている。
【００１８】
従って、常に２つの入力バイナリ数が組み合わされて中間結果または最終結果となる。オーバーフロー検出及び飽和は、２オペランドの計算結果の各々に独立して適用される。最終結果も２つの入力について計算される。このようにして、すべての２オペランド演算ユニットに対して、２オペランドのオーバーフロー検出及び飽和の共通ルールを再使用することができる。本発明によれば、入力バイナリ数を拡張するための拡張手段を必要な所に配置して、計算中に同じビット幅を持たせる。拡張手段は前記演算回路の入力に配置して、すべての入力バイナリ数を同じビット幅に拡張する。さらに、前記２つの２オペランド演算ユニットの間に拡張手段を配置して、先行する２オペランド演算ユニットの出力を、次の２オペランド演算ユニットに入力される前に拡張することができる。前記オーバーフロー兼飽和手段は、前記２オペランド演算ユニットの計算結果を制御し、計算のオーバーフローを検出し、そしてオーバーフローの検出結果に従い計算結果を最大値または最小値に設定する。前記オーバーフロー兼飽和手段は、前記２オペランド演算ユニットの全部、あるいは回路の特定段においてオーバーフローが発生しないことが事前にわかっていれば一部だけの出力を制御することができる。符号付き演算の場合には符号拡張を用い、符号なし演算の場合には０拡張を用いる。本発明が提案する演算ユニットは、オーバーフローまたはアンダーフローを正しく検出して結果を正しく飽和させつつ、異なるビット幅を有する３つ以上の入力を持つことができる。前記拡張手段は、入力オペランドが符号または０の拡張を必要とするか否かを検出し、これに応じてオペランドを拡張する。
【００１９】
本発明の一態様によれば、前記演算回路が、少なくとも１つの入力バイナリ数を前記拡張手段に入力するための入力手段を具えている。２つ以上の入力バイナリ数を入力手段に供給する場合には、これらの入力バイナリ数を並列的に入力することができる。多くの応用について、数を入力するための並列的な方法の方が、入力数を次々に、あるいはビット単位で入力することしかできない直列的な方法よりも有利である。
【００２０】
本発明の別な態様によれば、入力バイナリ数の少なくとも１つの符号及び／または０の拡張を実行するための複数の拡張ユニットを前記演算回路内に、最大のビット幅を有する入力バイナリ数よりも小さいビット幅を有する入力バイナリ数毎に設ける。非常に有効な方法は、多少なりとも集中させた拡張手段の代わりに、複数の拡張手段を使用することである。各拡張ユニットは、前記演算回路の入力ユニットの近くに配置することが好ましい。このようにして、各拡張ユニットは、最大ビット幅を有する入力バイナリ数よりも小さいビット幅を有する１つの入力バイナリ数を拡張することに専念することができる。従って、最大ビット幅を有する入力バイナリ数のビット幅を特定し、そしてより小さいビット幅を有する他の入力バイナリ数を、最大ビット幅を持つように拡張する。前記拡張ユニットは必ずしも前記回路装置の入力に配置せず、前記演算回路内のどこかに配置することもできる。
【００２１】
本発明の別な態様によれば、すべての前記拡張ユニットが、前記拡張ユニットの渡される入力バイナリ数が符号付きフォーマットであるか符号なしフォーマットであるかを示す制御信号を入力するための入力を具えている。従って、前記拡張ユニットはこの入力によって制御され、この入力は一般に、示された入力バイナリ数のフォーマットに応答して前記入力バイナリ数を符号拡張または０拡張するための単一ビットの制御入力である。
【００２２】
本発明の他の態様によれば、前記電子装置が複数のオーバーフロー兼飽和ユニットを具え、各々が単一の２オペランド演算ユニットの計算オーバーフローを検出し、オーバーフローの検出結果に従い前記２オペランド演算ユニットの計算結果を飽和させる。複数のオーバーフロー兼飽和ユニットの使用は、演算回路全体の計算速度及び有効性に寄与し得るかなり独立的な動作を生じさせる。例えば、前記２オペランド演算ユニットの各々に専用のオーバーフロー兼飽和ユニットが続く場合には、それぞれの論理回路は、オーバーフロー及び飽和の手順を実行するために、１つのオーバーフロー兼飽和ユニットを複数の２オペランド演算ユニット用に使用する場合ほど巧妙でなくすることができる。
【００２３】
また本発明は、Ｎ個の入力バイナリ数の和及び／または差を計算する方法に関するものであり、ここでＮは２より大きく、かつこれらの入力バイナリ数の少なくとも２つはそのビット幅が異なる。この方法は、より短いビット幅を有する少なくとも１つの入力バイナリ数を、第２の入力バイナリ数と同じビット幅を持つように拡張するステップを含む。他のステップでは、２つの入力バイナリ数の和及び／または差を計算する。この計算ステップは、Ｎ−１個の２オペランド演算ユニットを用いることによって実行し、各２オペランド演算ユニットは、第１及び第２バイナリ数である２つのオペランドの加算及び／または減算を実行する。これに加えて、前記演算ユニットの少なくとも１つの計算結果のオーバーフローを検出し、オーバーフローの検出結果に従い前記計算結果の飽和を実行する。上記計算ステップは、２オペランド演算ユニットに制約されるので、計算、オーバーフロー検出、及び飽和は他の解決法よりも高速であり、かつより複雑でない。
【００２４】
本発明はさらに、Ｎ個の入力バイナリ数の加算及び／または減算を実行するための演算回路を設計する方法に関するものであり、ここでＮは２より大きく、かつこれらの入力バイナリ数の少なくとも２つはそのビット幅が異なる。本発明による演算回路用の合成プロセスでは、次のエンティティ（実体）を用意しなければならない：前記Ｎ個の入力バイナリ数を前記演算手段に入力するための入力手段；前記入力バイナリ数の少なくとも１つの符号拡張及び／または０拡張を実行する拡張手段；各々が、第１及び第２バイナリ数である２つのオペランドの加算及び／または減算を計算するＮ−１個の２オペランド演算ユニット；前記２オペランド演算ユニットの少なくとも１つの計算オーバーフローを検出し、オーバーフローの検出結果に従い前記演算ユニットの計算結果を飽和させるオーバーフロー兼飽和手段；及び、前記入力手段、前記拡張手段、前記演算ユニット、及び前記オーバーフロー兼飽和手段の間の接続。上述した設計ステップに関して設計した演算回路は、従来の回路より複雑でなく、かつ有効である。
【００２５】
本発明の別な態様によれば、前記演算回路を設計する方法が、前記Ｎ−１個の２オペランド演算ユニットの各出力が前記オーバーフロー兼飽和手段に接続されるように前記演算回路を接続するステップを具えている。
【発明を実施するための最良の形態】
【００２６】
本発明のこれら及び他の態様は、以下に図面を参照して記述する実施例の説明より明らかになる。
【実施例１】
【００２７】
図１に、本発明の第１実施例による３オペランド演算回路のブロック図を示す。３つの入力バイナリ数ＢＩＮ１、ＢＩＮ２、及びＢＩＮ３が演算回路ＡＣに入力される。第１及び第２入力バイナリ数ＢＩＮ１、ＢＩＮ２は、第３入力バイナリ数ＢＩＮ３より小さいビット幅ｂｗ１、ｂｗ２を有する。第１及び第２入力バイナリ数ＢＩＮ１、ＢＩＮ２はそれぞれ、第１及び第２拡張ユニットＥＵ１、ＥＵ２に入力される。拡張ユニットＥＵ１、ＥＵ２では、入力バイナリ数ＢＩＮ１、ＢＩＮ２がそれぞれ符号拡張及び０拡張されて、第３入力バイナリ数ＢＩＮ３のビット幅ｂｗ３と同じビット幅を持つ。２つの拡張ユニットＥＵ１、ＥＵ２は第１の２オペランド演算ユニットＡＵ１の入力に接続されている。演算ユニットＡＵ１は、その２つの入力に対する計算ステップを実行する。この計算ステップは、減算または加算、あるいはこれら２つの入力オペランドに対するあらゆる類似の演算とすることができる。第１の２オペランド演算ユニットＡＵ１の出力は、第１オーバーフロー兼飽和ユニットＯＳＵ１によって制御される。オーバーフロー兼飽和ユニットＯＳＵ１は、第１の２オペランド演算ユニットＡＵ１の出力をチェックし、あり得るオーバーフローを検出し、検出したオーバーフローに従い計算結果を飽和させる。例えば、第３入力バイナリ数ＢＩＮ３のビット幅ｂｗ３が８ビットであれば、拡張された入力バイナリ数ＢＩＮ１及びＢＩＮ２のビット幅ｂｗ４、ｂｗ５も８ビットのビット幅である。従ってＡＵ１の出力は９ビットまたは１０ビットのビット幅である。オーバーフロー兼飽和ユニットＯＳＵ１は結果を８ビットに制限する。ＯＳＵ１の出力はビット幅ｂｗ７を有し、これは入力バイナリ数ＢＩＮ３のビット幅ｂｗ３に等しい。第１オーバーフロー兼飽和ユニットＯＳＵ１の出力は、ＯＳＵ１において飽和された後に、第２の２オペランド演算ユニットＡＵ２に入力される。第２の２オペランド演算ユニットＡＵ２の２番目の入力は第３入力バイナリ数ＢＩＮ３であり、これに対して演算が実行される。ｂｗ７はｂｗ３に等しいので、両方の入力が同じビット幅を有する。このことは第１及び第２の拡張ユニットＥＵ１及びＥＵ２によるものであり、これらはそれぞれ第１及び第２入力バイナリ数ＢＩＮ１、ＢＩＮ２を、第３入力バイナリ数ＢＩＮ３と同じビット幅に拡張し、さらにＯＳＵ１によるものである。第２の２オペランド演算ユニットＡＵ２の出力は、第２オーバーフロー兼飽和ユニットＯＳＵ２によって検出されたオーバーフローに従い、オーバーフロー制御及び飽和制御される。ＡＵ２の出力のビット幅ｂｗ８は９ビットまたは１０ビットである。ＯＳＵ２においてオーバーフロー及び飽和制御された後に、結果はここでも８ビットのビット幅に制限される。これに続く計算または処理が９ビット以上を処理することができる場合には、ＯＳＵ２を省略することができる。
【００２８】
２オペランド演算ユニットＡＵ１及びＡＵ２が共に加算を実行する場合には、第２オーバーフロー兼飽和ユニットＯＳＵ２の出力は、３つの入力バイナリ数ＢＩＮ１、ＢＩＮ２、及びＢＩＮ３の正しい総和である。２オペランド演算ユニットＡＵ１及びＡＵ２が共に減算を実行する場合には、第２オーバーフロー兼減算ユニットＯＳＵ２の出力は、３つの入力バイナリ数ＢＩＮ１、ＢＩＮ２、及びＢＩＮ３の正しい差である。
【実施例２】
【００２９】
図２に、本発明の第２実施例のブロック図を示す。４つの入力バイナリ数ＢＩＮ１〜ＢＩＮ４が演算回路ＡＣに入力される。それぞれ４つの入力バイナリ数ＢＩＮ１〜ＢＩＮ４を入力するための、４つの入力ユニットＩＵ１〜ＩＵ４が設けられている。入力ユニットＩＵ１〜ＩＵ４は入力バイナリ数ＢＩＮ１〜ＢＩＮ４を演算回路ＡＣに入力するための入力ピンまたはこれと等価な接続、さらにはラッチ等である。４つの入力ユニットＩＵ１〜ＩＵ４は、演算回路ＡＣの同じ側または異なる側に別個に配置することができる。さらに、４つの入力ユニットＩＵ１〜ＩＵ４は１つのブロックとして実現することができ、ここでは入力ピンまたは接続またはラッチを、２つ以上の入力バイナリ数ＢＩＮ１〜ＢＩＮ４の入力用に再使用する。入力バイナリ数ＢＩＮ１〜ＢＩＮ３はそれぞれ、４番目の入力バイナリ数ＢＩＮ４のビット幅ｂｗ４よりも小さいビット幅ｂｗ１、ｂｗ２、ｂｗ３を有する。入力ユニットＩＵ１、ＩＵ２、ＩＵ３の出力はそれぞれビット幅ｂｗ５、ｂｗ６、ｂｗ７を有し、これらは一般にそれぞれｂｗ１、ｂｗ２、ｂｗ３に等しい。このことは、バイナリ入力信号が入力ユニット内で対称にされることを排除するものではない。拡張ユニットＥＵ１〜ＥＵ３はそれぞれ、ビット幅ｂｗ５、ｂｗ６、及びｂｗ７を有する入力バイナリ数ＢＩＮ１〜ＢＩＮ３を供給される。拡張された入力バイナリ数ＢＩＮ１及びＢＩＮ２は同じビット幅ｂｗ８、ｂｗ９を有し、第１の２オペランド演算ユニットＡＵ１において加算または減算される。第１演算ユニットＡＵ１の出力はビット幅ｂｗ１２を有し、第１オーバーフロー兼飽和ユニットＯＳＵ１によってオーバーフロー及び飽和制御される。第３入力バイナリ数ＢＩＮ３は、第３拡張ユニットＥＵ３においてビット幅ｂｗ１０に拡張された後に、第１オーバーフロー兼飽和ユニットＯＳＵ１の出力と組み合わせられる。第２演算ユニットＡＵ２の出力は第２オーバーフロー兼飽和ユニットＯＳＵ２によってオーバーフロー及び飽和制御される。オーバーフロー及び飽和制御された出力は第３の２オペランド演算ユニットＡＵ３に渡される。このユニットは、第２オーバーフロー兼飽和ユニットＯＳＵ２の出力及び４番目の入力バイナリ数ＢＩＮ４に対する演算を実行する。第３の２オペランド演算ユニットＡＵ３の出力は、第３のオーバーフロー兼飽和ユニットＯＳＵ３によってオーバーフロー及び飽和制御される。
【００３０】
３つの２オペランド演算ユニットＡＵ１〜ＡＵ３のすべてが加算を実行する場合には、第３オーバーフロー兼飽和ユニットＯＳＵ３は、４つの入力バイナリ数ＢＩＮ１〜ＢＩＮ４の正しい総和である。しかし、３つの演算ユニットＡＵ１〜ＡＵ３が異なる演算操作を実行する際には、あるいは符号付き入力バイナリ数ＢＩＮ１〜ＢＩＮ４を処理する場合には、いくつかの異なる構成、及びこれに対応する結果が達成され得る。第１演算ユニットＡＵ１はビット幅ｂｗ１２を有し、これは、この演算ユニットＡＵ１への２つの入力オペランドのビット幅ｂｗ８、ｂｗ９より大きい。ビット幅ｂｗ１２はＯＳＵにおいて、ビット幅ｂｗ１０に等しいビット幅ｂｗ１３に制限される。第２演算ユニットＡＵ２の出力はビット幅ｂｗ１４を有し、これはＯＳＵ２においてビット幅ｂｗ１５に制限される。ｂｗ１５はｂｗ１１に等しく、ｂｗ１１はｂｗ４に等しい。それそれビット幅ｂｗ１５及びｂｗ１１を有する２つのバイナリ数が演算ユニットＡＵ３に供給される。その出力はビット幅ｂｗ１６を有し、これはＡＵ３の入力のビット幅ｂｗ１５及びｂｗ１１よりも１または２ビット大きい。ＡＵ３の出力はＯＳＵ３に供給され、ここでビット幅ｂｗ１７に制限される。ｂｗ１７はｂｗ４に等しい。ｂｗ１７をｂｗ４より１または２ビット大きくすることも可能である。
【実施例３】
【００３１】
図３に、第２実施例の代案実施例を構成する本発明の第３実施例を示す。４つの入力バイナリ数ＢＩＮ１〜ＢＩＮ４が演算回路ＡＣに入力される。それぞれ４つの入力バイナリ数ＢＩＮ１〜ＢＩＮ４を入力するための、４つの入力ユニットＩＵ１〜ＩＵ４が設けられている。入力ユニットＩＵ１〜ＩＵ４は入力バイナリ数ＢＩＮ１〜ＢＩＮ４を演算回路ＡＣに入力するための入力ピンまたはこれと等価な接続、さらにはラッチ等である。４つの入力ユニットＩＵ１〜ＩＵ４は、演算回路ＡＣの同じ側または異なる側に別個に配置することができる。さらに、４つの入力ユニットＩＵ１〜ＩＵ４は１つのブロックとして実現することができ、ここでは入力ピンまたは接続またはラッチを、２つ以上の入力バイナリ数ＢＩＮ１〜ＢＩＮ４の入力用に再使用する。入力バイナリ数ＢＩＮ１〜ＢＩＮ３はそれぞれ、４番目の入力バイナリ数ＢＩＮ４のビット幅ｂｗ４よりも小さいビット幅ｂｗ１、ｂｗ２、ｂｗ３を有する。従って、拡張ユニットＥＵ１〜ＥＵ３が入力バイナリ数ＢＩＮ１〜ＢＩＮ３用に設けられている。拡張ユニットＥＵ１〜ＥＵ３には随意的に、単一ビットの制御入力が設けられる。この単一ビットの制御入力が「ハイ（High）」であれば、符号拡張ユニットＥＵ１、ＥＵ２、またはＥＵ３は符号拡張を実行する。この単一ビットの制御入力が「ロー（Low）」であれば、符号拡張ユニットＥＵ１、ＥＵ２、またはＥＵ３は０拡張を実行する。こうした符号拡張制御を用いる場合には、すべての拡張ユニットＥＵ１〜ＥＵ３を、符号付き演算を実行すべきか符号なし演算を実行すべきかを示す同じ符号信号によって制御しなければならない。拡張された入力バイナリ数ＢＩＮ１及びＢＩＮ２は、第１の２オペランド演算ユニットにおいて加算または減算される。ＡＵ１の出力はビット幅ｂｗ１２を有する。３番目及び４番目の入力バイナリ数ＢＩＮ３及びＢＩＮ４は、第２の２オペランド演算ユニットＡＵ２において加算または減算される。それぞれビット幅ｂｗ１２、ｂｗ１３を有する第１及び第２演算ユニットＡＵ１、ＡＵ２は、それぞれ第１及び第２オーバーフロー兼飽和ユニットＯＳＵ１及びＯＳＵ２によってオーバーフロー及び飽和制御され、それぞれビット幅ｂｗ１４、ｂｗ１５に制限される。オーバーフロー及び飽和制御された出力は、等しいビット数ｂｗ１４、ｂｗ１５を有し、これらは第３の２オペランド演算ユニットＡＵ３に渡される。このユニットは、オーバーフロー及び飽和制御された第１及び第２の２オペランド演算ユニットＡＵ１及びＡＵ２の２つの出力の和または差を計算する。第３の２オペランド演算ユニットＡＵ３の出力はビット幅１６を有し、第３オーバーフロー兼飽和ユニットＯＳＵ３によってオーバーフロー及び飽和制御される。ＯＳＵ３の出力のビット幅はｂｗ１７である。ｂｗ１７はｂｗ４に等しいか、あるいは、これに続く計算または処理ユニットがより大きいビット幅を処理することができる場合には１または２ビット大きい。
【００３２】
３つの２オペランド演算ユニットＡＵ１〜ＡＵ３のすべてが加算を実行する場合には、第３オーバーフロー兼飽和ユニットＯＳＵ３の出力は、入力バイナリ数ＢＩＮ１〜ＢＩＮ４の正しい総和である。しかし、３つの演算ユニットＡＵ１〜ＡＵ３が異なる計算操作を実行する際には、あるいは、符号付き入力バイナリ数を処理する場合には、いくつかの異なる構成及びこれに対応する結果を達成することができる。
【実施例４】
【００３３】
本発明の他の実施例によれば、演算回路ＡＣを設計するための設計法が提供される。特に、図１、２及び３に示すそれぞれ第１、第２及び第３実施例の演算回路ＡＣは、自動または半自動設計合成プロセスの結果とすることができる。ビット幅が変動する４つの入力バイナリ数用の設計手順は次のように規定することができる。まず、４つの入力バイナリ数ＢＩＮ１〜ＢＩＮ４を演算ユニットに入力するための入力ユニットＩＵ１、ＩＵ２、ＩＵ３、ＩＵ４を用意する。さらに、入力バイナリ数ＢＩＮ１、ＢＩＮ２、ＢＩＮ３の符号拡張または０拡張を実行する３つの拡張ユニットＥＵ１、ＥＵ２、ＥＵ３を用意する。次の設計ステップでは、３つの２オペランド演算ユニットＡＵ１、ＡＵ２、ＡＵ３を用意する。演算ユニットＡＵ１〜ＡＵ３に対しては、３つの２オペランド演算ユニットＡＵ１、ＡＵ２、ＡＵ３の計算オーバーフローを検出するための３つのオーバーフロー兼飽和ユニットＯＳＵ１、ＯＳＵ２、ＯＳＵ３をそれぞれ用意し、オーバーフロー兼飽和ユニットＯＳＵ１、ＯＳＵ２、ＯＳＵ３はオーバーフローの検出結果に従い、それぞれ演算ユニットＡＵ１、ＡＵ２、ＡＵ３の計算結果を飽和させる。最後に、入力ユニットＩＵ１、ＩＵ２、ＩＵ３、ＩＵ４、拡張ユニットＥＵ１、ＥＵ２、ＥＵ３、演算ユニットＡＵ１、ＡＵ２、ＡＵ３、及びオーバーフロー兼飽和ユニットＯＳＵ１、ＯＳＵ２、ＯＳＵ３の間の接続を設ける。上述したステップのすべては、結果的な図面またはレイアウトに基づいて、図２または３に示した好適な回路を製造することができるように実行する。
【実施例５】
【００３４】
本発明のさらに他の実施例によれば、４つの入力バイナリ数ＢＩＮ１、ＢＩＮ２、ＢＩＮ３、ＢＩＮ４の和または差を計算するための２オペランド演算ユニットＡＵ１〜ＡＵ３の使用法が提供される。入力バイナリ数ＢＩＮ１、ＢＩＮ２、ＢＩＮ３はそのビット幅が異なる。第１ステップでは、バイナリ数ＢＩＮ１〜ＢＩＮ３は、４番目の入力バイナリ数ＢＩＮ４と同じビット幅を持つように拡張される。３つの２オペランド演算ユニットＡＵ１、ＡＵ２、ＡＵ３を使用し、各々が２つのオペランドの加算または減算を計算する。他のステップでは、演算ユニットＡＵ１〜ＡＵ３の計算結果のオーバーフローを検出し、オーバーフローの検出結果に従い計算結果を飽和させる。
【００３５】
上述した本発明の実施例のすべてが、入力バイナリ数を入力するための入力ユニットを具えることができる。しかし、入力ユニットは必ずしも実施例の一部ではない。各入力ユニットは、制御入力の値に応じて符号拡張と０拡張とを切り換えるための単一ビットの制御入力を提供することができる。
【００３６】
本発明の範囲は入力バイナリ数の特定のフォーマットまたは表現に限定されず、整数フォーマットでも浮動小数点フォーマットでもよく、符号付き表現でも符号なし表現でもよい。
【００３７】
以上の実施例は標準的な整数の２の補数表現に関して説明したが、本発明はこのバイナリ数の表現に限定されるものと解釈すべきでない。
【００３８】
なお、上述した実施例は本発明を限定するものではなく例示するものであり、当業者は請求項に記載の範囲を逸脱することなしに多くの代案実施例を設計することができる。これらの請求項では、かっこ内に置いた参照符号は特許請求の範囲を限定するものと解釈すべきではない。「具えている」及びその活用形は、請求項に挙げた以外の要素またはステップの存在を排除するものではない。請求項に挙げた構成要素は複数存在し得る。いくつかの手段を挙げた装置の請求項では、これらの手段のいくつかは同一のハードウェア・アイテムによって具体化することができる。さらに、互いに異なる従属請求項中に特定の方策が存在するという単なる事実は、これらの方策の組合せを有利に用いることができないことを示すものではない。
【００３９】
さらに、請求項中のあらゆる参照符号は本発明の範囲を制限するものと考えるべきでない。
【図面の簡単な説明】
【００４０】
【図１】本発明の第１実施例による３オペランド演算回路のブロック図である。
【図２】本発明の第２実施例によるマルチオペランド装置のブロック図である。
【図３】本発明の第３実施例によるマルチオペランド演算回路のブロック図である。
【図１】
2008522304.tif 000003
【図２】
2008522304.tif 000004
【図３】
2008522304.tif 000005
【国際調査報告】
2008522304.tif 000006
2008522304.tif 000007
2008522304.tif 000008