(57)【特許請求の範囲】
【請求項１】
並列乗算器と、この並列乗算器の乗算結果データを格納する乗算結果記憶回路と、この乗算結果記憶回路から出力されるデータを算術論理演算する算術論理演算回路と、この算術論理演算回路の演算結果データを格納する演算結果記憶回路とを具備してなる演算装置において、
前記算術論理演算回路は、３つ以上の複数の入力部を備え、これら複数の入力部に与えられるデータをオペランドとして同時に演算可能に構成され、
算術論理演算回路の各入力部に各出力端子が接続されると共に、複数の入力端子には乗算結果記憶回路の出力データ或いは演算結果記憶回路の出力データが与えられており、何れかの入力端子に与えられているデータを選択的に出力可能に構成された複数の選択回路を具備したことを特徴とする演算装置。
【請求項２】
選択回路の複数の入力端子の内の何れか一つには、ゼロデータが与えられていることを特徴とする請求項１記載の演算装置。
【請求項３】
並列乗算器及び乗算結果記憶回路を複数組備えていることを特徴とする請求項１または２記載の演算装置。
【請求項４】
並列乗算器と乗算結果記憶回路との間に、並列乗算器の乗算結果データを累積加減算する算術演算回路を具備したことを特徴とする請求項１乃至３の何れかに記載の演算装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、並列乗算器を備え、例えばデジタル信号処理を行うＤＳＰなどの演算装置に関する。
【０００２】
【従来の技術】
近年、ＬＳＩ技術や信号処理技術などのめざましい進歩によって、携帯電話機などの情報通信端末装置のデジタル化が進んでいる。特に、携帯電話機の分野においては、デジタル化することにより回線容量不足及び雑音の解消や秘匿性の向上、通話及び待ち受け時間の長期化などの多くの利点があることから、現在、非常に大きな伸びを見せている。
【０００３】
このデジタル化を進める場合には、キーデバイスたるデジタル信号処理用ＬＳＩ（ＤＳＰ：Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）が必要不可欠である。デジタル信号処理においては、積和演算が処理の大半を占めるため、処理時間の向上のために積和演算を如何に高速化するかがＤＳＰの主要な開発課題となっている。
【０００４】
一般に、処理の高速性を重視する場合には、固定小数点方式のＤＳＰが使用されるが、演算精度を重視する用途においては、プログラマは演算誤差を常に考慮する必要がある。また、高精度の演算を行う必要がある処理の場合は、語長（ビット幅）の長いＤＳＰを使用することも考えられるが、語長の長いＤＳＰでは、メモリサイズ，データバス，端子数，レジスタ語長など、ＤＳＰの全構成要素の回路規模が大きくなるため、チップサイズやコスト，動作速度の面でのデメリットが増加してしまう。そこで、一般には、通常の処理については単精度で演算を行い、高精度が要求される処理についてのみ倍精度で演算する方式が多く用いられている。
【０００５】
ここで、斯様な倍精度演算を行うＤＳＰの一構成例を図５に示す。例えば、各１６ビットの乗算オペランドレジスタ１（Ｘ）及び２（Ｙ）に格納されるオペランドデータは、乗算器（ＭＰＹ）３に与えられて乗算（Ｘ×Ｙ）が行われるようになっている。乗算器３における乗算結果データは、例えば３２ビットの乗算結果格納レジスタ（Ｍ）４に出力されるようになっている。
【０００６】
乗算結果格納レジスタ（以下、レジスタと称す）４に格納されたデータは、３入力のマルチプレクサ５を介して算術論理演算回路（以下、ＡＬＵと称す）６にオペランドとして与えられるようになっている。ＡＬＵ６の演算結果データは、例えば各６４ビットのアキュムレータ７（Ｚ０），８（Ｚ１）に格納されるようになっている。
【０００７】
アキュムレータ７，８の出力データは、マルチプレクサ５及びもう１つのマルチプレクサ９を介して夫々ＡＬＵ６に与えられるようになっている。尚、マルチプレクサ５及び９に何れのデータを選択出力させるかは、ＡＬＵ６により制御されるようになっている。以上がＤＳＰ１０を構成している。また、ＤＳＰ１０は、図示しないシステムクロック信号に同期した演算周期（サイクル）で演算処理を行うようになっている。
【０００８】
図６は、ＤＳＰ１０が、倍精度乗算（３２ビット×３２ビット）を行う場合の演算処理を概念的に示すものである。図６（ａ）は、各３２ビットのオペランドデータＸＨ／ＨＬ，ＹＨ／ＹＬ（上位／下位：各１６ビット）を乗算した結果を、アキュムレータＺに加算することを表したものであり、図６（ｂ）は、最終的に乗算結果▲１▼〜▲４▼がアキュムレータＺに格納されるビット配置のイメージを表したものである。
【０００９】
即ち、図６（ｂ）において、各オペランドデータを１６ビットの上位データ，下位データに分けて、▲１▼〜▲４▼の４回の乗算を行う。
▲１▼：ＸＬ×ＹＬ
▲２▼：ＸＨ×ＹＬ
▲３▼：ＸＬ×ＹＨ
▲４▼：ＸＨ×ＹＨ
そして、これら▲１▼〜▲４▼の乗算結果は、順次レジスタ４を介してＡＬＵ６に与えられ、桁合わせが行われながらアキュムレータＺに加算されていく。
【００１０】
図７は、ＤＳＰ１０が乗算処理を行う場合のタイミングチャートである。この図７において、サイクル１でレジスタ１にはデータＸＬが、レジスタ２にはデータＹＬが格納されると（図７（ａ），（ｂ）参照）、乗算器３により乗算（▲１▼：ＸＬ×ＹＬ）が１クロックで実行され、次のサイクル２においては、レジスタ４（Ｍ）に乗算結果が格納される（図７（ｃ）参照）。それと同時に、次の乗算▲２▼を行うため、レジスタ１にはデータＸＨが格納される（レジスタ２はデータＹＬのまま）。
【００１１】
また、サイクル２においては、ＡＬＵ６により、命令（Ｚ０＝Ｍ＞＞１６：レジスタＭを１６ビット右シフトして、アキュムレータＺ０に転送）が実行される（図７（ｄ）参照）。ここで、レジスタ４（Ｍ）のビット３１〜０は、レジスタＭ→アキュムレータＺの転送をシフトせずに行った場合はアキュムレータ７（Ｚ０）のビット６３〜３２に転送されるようになっており、従って、上記命令を実行した結果は、（次のサイクル３で）アキュムレータ７のビット４７〜１６に転送されることになる。
【００１２】
次のサイクル３においては、レジスタ４に乗算結果（▲２▼：ＸＨ×ＹＬ）が格納される（図７（ｃ）参照）。それと同時に、次の乗算▲３▼を行うため、レジスタ１にはデータＸＬ，レジスタ２はデータＹＨが格納される。また、ＡＬＵ６においては、乗算結果（▲２▼：ＸＨ×ＹＬ）をアキュムレータ７のビット６３〜３２に転送する命令（Ｚ０＝Ｚ０＋Ｍ：アキュムレータＺ０に、レジスタＭの内容を加算）が実行される（図７（ｄ）参照）。この時、アキュムレータ７には、１つ前のサイクルでＡＬＵ６により実行された命令（Ｚ０＝Ｍ＞＞１６）の結果が格納される（図７（ｅ）参照）。
【００１３】
次のサイクル４においては、サイクル３と同様にして、レジスタ４には乗算結果（▲３▼：ＸＬ×ＹＨ）が格納される（図７（ｃ）参照）と同時に、レジスタ１にはデータＸＨが格納される（レジスタ２はデータＹＨのまま）。また、ＡＬＵ６においては、乗算結果（▲３▼：ＸＬ×ＹＨ）をアキュムレータ７のビット６３〜３２に加算する命令（Ｚ０＝Ｚ０＋Ｍ）が実行され（図７（ｄ）参照）、アキュムレータ７には、１つ前のサイクルでＡＬＵ６により実行された命令（Ｚ０＝Ｚ０＋Ｍ）の結果が格納される（図７（ｅ）参照）。
【００１４】
尚、サイクル３及び４において、アキュムレータ７（Ｚ０）のビット６３〜３２に乗算結果▲２▼及び▲３▼が転送されることにより上位桁にオーバーフローを生じる場合には、図示しないオーバーフロー処理部により適宜処理されるようになっている。
【００１５】
そして、次のサイクル５においては、レジスタ４に乗算結果（▲４▼：ＸＨ×ＹＨ）が格納される（図７（ｃ）参照）と同時に、ＡＬＵ６においては、命令（Ｚ０＝Ｚ０＞＞１６＋Ｍ：アキュムレータＺ０を１６ビット右シフトしたものに、レジスタＭの内容を加算）が実行される（図７（ｄ）参照）。
【００１６】
即ち、サイクル４までの過程において、アキュムレータ７のビット６３〜１６には各乗算結果▲１▼〜▲３▼の累加算値（▲１▼＋▲２▼＋▲３▼）が格納されており、そのアキュムレータ７を１６ビット右シフトすることにより、前記累加算値は、ビット４７〜０に配置される。その状態で、アキュムレータ７のビット６３〜３２にレジスタ４の内容（乗算結果▲４▼）を加算することによって、最終的に３２ビット×３２ビットの乗算結果が得られることになる。また、この時、アキュムレータ７（Ｚ０）には、１つ前のサイクルでＡＬＵ６により実行された命令（Ｚ０＝Ｚ０＋Ｍ）の結果が格納される（図７（ｅ）参照）。
【００１７】
而して、次のサイクル６では、ＡＬＵ６において、命令（Ｚ１＝Ｚ１＋Ｚ０：アキュムレータＺ１の内容に、アキュムレータＺ０の内容を加算）が実行される（図７（ｄ）参照）と共に、アキュムレータ７には、１つ前のサイクルでＡＬＵ６により実行された命令（Ｚ０＝Ｚ０＞＞１６＋Ｍ）の結果が格納される（図７（ｅ）参照）。
【００１８】
次のサイクル７では、サイクル６でＡＬＵ６により命令（Ｚ１＝Ｚ１＋Ｚ０）が実行された結果、アキュムレータ８（Ｚ１）の内容に（ＯＬＤ  Ｚ）にアキュムレータ７（Ｚ０）の内容が累加算され、Ｚ１＝（ＮＥＷ  Ｚ）、となった時点で乗算処理を終了する。以上において、サイクル２〜６が積和サイクルであり、５サイクルを要している。
【００１９】
また、図８は、乗算器を２個有するＤＳＰの一構成例である。各１６ビットの乗算オペランドレジスタ１１ａ（ＸＨ）及び１１ｂ（ＨＬ）に格納されるオペランドデータは、乗算器１２（ＭＰＹ１）及び１３（ＭＰＹ２）に夫々与えられるようになっている。各１６ビットの乗算オペランドレジスタ１４ａ（ＹＨ）及び１４ｂ（ＹＬ）に格納されるオペランドデータは、マルチプレクサ１５及び１６に共に与えられ、マルチプレクサ１５及び１６の出力データは、乗算器１２及び１３に夫々与えられるようになっている。
【００２０】
乗算器１２及び１３の出力データは、累積演算器１７及び１８に夫々与えられるようになっており、累積演算器１７及び１８の出力データは、各４８ビットの乗算結果格納レジスタ１９（Ｍ１）及び２０（Ｍ２）に夫々与えられるようになっている。乗算結果格納レジスタ１９及び２０に格納されたデータは、３入力のマルチプレクサ２１及び２２に夫々与えられると共に、累積演算器１７及び１８にも夫々与えられるようになっている。
【００２１】
マルチプレクサ２１及び２２は、図５の構成におけるマルチプレクサ９及び５に対応するものであり、それ以降のＡＬＵ２３，アキュムレータ２４（Ｚ０）及び２５（Ｚ１）は、図５の構成におけるＡＬＵ６，アキュムレータ７及び８に対応するものである。以上がＤＳＰ２６を構成している。
【００２２】
図９は、ＤＳＰ２６が、倍精度の乗算を行う場合の演算処理を概念的に示すものであり、基本的には図６と同様であるが、図９（ｂ）では、乗算▲１▼及び▲２▼を乗算器１２（ＭＰＹ１）で行い、乗算▲３▼及び▲４▼を乗算器１３（ＭＰＹ２）で行うことを示している。
【００２３】
図１０は、ＤＳＰ２６が乗算処理を行う場合のタイミングチャートである。尚、図１０では、乗算オペランドレジスタ１１ａ，１１ｂ，１４ａ及び１４ｂのタイミングチャートは図示を省略しているが、これらのレジスタには、図示しないサイクル１でオペランドデータＸＨ，ＸＬ，ＹＨ及びＹＬが同時に格納され、以降は次の演算処理が実行されるまで変化しない。
【００２４】
この図１０において、サイクル２では、乗算器１２及び１３によって行われた乗算結果▲３▼（ＸＨ×ＹＬ）及び▲１▼（ＸＬ×ＹＬ）のデータが、乗算結果格納レジスタ１９（Ｍ１）及び２０（Ｍ２）のビット４７〜１６に格納される（図１０（ａ）及び（ｂ）参照）。同時に、マルチプレクサ１５及び１６によりオペランドデータの切り換えが行われ（ＹＬ→ＹＨ）、乗算器１２及び１３においては、乗算▲４▼（ＸＨ×ＹＨ）及び▲２▼（ＸＬ×ＹＨ）が夫々実行される。
【００２５】
次のサイクル３では、レジスタ１９には、累積加算器１７によって、サイクル２でレジスタ１９に格納されている乗算結果▲３▼（ＸＨ×ＹＬ）のデータが１６ビット右シフトされた内容（ビット３１〜０に配置）に、サイクル２で行われた乗算結果▲４▼（ＸＨ×ＹＨ）のデータがビット４７〜１６に加算されたもの（▲３▼＋▲４▼）が格納される。
【００２６】
同様に、レジスタ２０には、累積加算器１８によって、サイクル２でレジスタ２０に格納されている乗算結果▲１▼（ＸＬ×ＹＬ）のデータが１６ビット右シフトされた内容に、サイクル２で行われた乗算結果▲２▼（ＸＬ×ＹＨ）のデータが加算されたもの（▲１▼＋▲２▼）が格納される。また、ＡＬＵ２３においては、命令（Ｚ０＝Ｚ０＋Ｍ２＞＞１６：レジスタＭ２を１６ビット右シフトしたものを、アキュムレータＺ０に加算）が実行される（図１０（ｃ）参照）。
【００２７】
次のサイクル４においては、レジスタ１９及び２０の内容はそのまま保持されており、ＡＬＵ２３では、命令（Ｚ０＝Ｚ０＋Ｍ１：レジスタＭ１の内容をアキュムレータＺ０に加算）が実行される。また、アキュムレータ２４の内容（ＯＬＤ  Ｚ）に対しては、サイクル３におけるＡＬＵ２３の命令（Ｚ０＝Ｚ０＋Ｍ２＞＞１６）実行結果として、加算値（▲１▼＋▲２▼）がビット４７〜０に累加算される。
【００２８】
そして、次のサイクル５においては、アキュムレータ２４の内容には、サイクル４におけるＡＬＵ２３の命令（Ｚ０＝Ｚ０＋Ｍ１）実行結果として、ビット６３〜１６に加算値（▲３▼＋▲４▼）が累加算される。以上で乗算処理が終了するが、サイクル２〜４が積和サイクルであり、３サイクルを要している。
【００２９】
【発明が解決しようとする課題】
斯様な演算を行うＤＳＰ１０においては、取扱うデータのビット幅に一定の制約がある場合でも、演算処理をできる限り高速に行うことが要求される。
本発明は、上記事情に鑑みてなされたものであり、より少ないサイクル数によって並列乗算処理を行うことができる演算装置を提供することを目的とするものである。
【００３０】
【課題を解決するための手段】
上記目的を達成するため、請求項１記載の演算装置は、並列乗算器と、この並列乗算器の乗算結果データを格納する乗算結果記憶回路と、この乗算結果記憶回路から出力されるデータを算術論理演算する算術論理演算回路と、この算術論理演算回路の演算結果データを格納する演算結果記憶回路とを具備してなるものにおいて、
前記算術論理演算回路は、３つ以上の複数の入力部を備え、これら複数の入力部に与えられるデータをオペランドとして同時に演算可能に構成され、
算術論理演算回路の各入力部に各出力端子が接続されると共に、複数の入力端子には乗算結果記憶回路の出力データ或いは演算結果記憶回路の出力データが与えられ、何れかの入力端子に与えられているデータを選択的に出力可能に構成された複数の選択回路を具備
したことを特徴とする。
【００３１】
斯様に構成すれば、算術論理演算回路が、３つ以上の複数の入力部に与えられるデータをオペランドとして同時に算術論理演算することにより、従来のように入力部を２つのみ備えているものに比べて、例えば、処理データの桁数を多く必要とする倍精度乗算処理などを、より少ない演算周期で行うことができる。そして、算術論理演算回路は、複数の選択回路を介して各入力部に与えられるオペランドデータを適宜選択することによって、より多様なオペランドの組み合わせによる演算処理を行うことができる。
【００３２】
この場合、請求項２に記載したように、選択回路の複数の入力端子の内の何れか一つにゼロデータを与える構成とするのが好ましい。斯様に構成すれば、算術論理演算回路は、各入力部に与えられるオペランドデータの内何れかをゼロデータとすることによって、入力部の数よりも少ない項数での加減算処理などを容易に行うことができる。
【００３４】
また、請求項３に記載したように、並列乗算器及び乗算結果記憶回路を複数組備える構成としても良く、斯様に構成すれば、複数の並列乗算器によって乗算処理が並列に実行される場合でも、算術論理演算回路は、それら並列乗算器の乗算結果データを格納する乗算結果記憶回路の出力データと演算結果記憶回路の出力データとをオペランドとして同時に算術論理演算できるので、演算処理を高速に実行することができる。
【００３８】
加えて、請求項４に記載したように、並列乗算器と乗算結果記憶回路との間に、並列乗算器の乗算結果データを累積加減算する算術演算回路を具備すると良い。斯様に構成すれば、例えば、演算周期をより多く必要とする倍精度乗算処理などを実行する場合に、算術論理演算回路で処理を行うと同時に、算術演算回路によって中間処理を行うことができるので、算術論理演算回路の処理負担を軽減して、総じて演算処理を高速に実行することができる。
【００３９】
【発明の実施の形態】
（第１実施例）
以下、本発明の第１実施例について図１及び図２を参照して説明する。尚、図５と同一部分には同一符号を付して説明を省略し、以下異なる部分についてのみ説明する。本実施例のＤＳＰ（演算装置）３１においては、図５に示すＤＳＰ１０のＡＬＵ６に代えて、３つの入力部３２ａ，３２ｂ及び３２ｃを備え、これらに夫々与えられる３つのオペランドデータを同時に演算可能に構成されたＡＬＵ（算術論理演算回路）３２が配置されている。
【００４０】
また、マルチプレクサ９及び５に代えて、ＡＬＵ３２の３つの入力部３２ａ，３２ｂ及び３２ｃには、２つの入力ポート（入力端子）に与えられるデータの何れか一方を選択して出力ポート（出力端子）に出力するマルチプレクサ（選択回路）３３，３４及び３５が配置されている。マルチプレクサ３３，３４及び３５の一方の入力ポートには、アキュムレータ（演算結果記憶回路）７，８及び乗算結果格納レジスタ（乗算結果記憶回路）４の格納データが与えられており、他方の入力ポートには、ゼロデータが与えられている。その他の構成は、図５と同様である。
【００４１】
斯様に構成することによって、ＡＬＵ３２は、３つの入力部３２ａ，３２ｂ及び３２ｃに夫々与えられるオペランドデータをａ，ｂ及びｃとすると、以下のような３項間での加減算が実行可能となる。
ａ＋ｂ＋ｃ，ａ−ｂ＋ｃ，ａ＋ｂ−ｃ，ａ−ｂ−ｃ
また、何れか一つのオペランドデータを加減算に使用しない場合は、対応するマルチプレクサにゼロデータを選択させることにより、従来と同様に、ａ±ｂ，ｂ±ｃ，ａ±ｃの２項演算を行うこともできる。
【００４２】
次に、本実施例の作用について図２をも参照して説明する。図２は、図７に示した場合と同様に、ＤＳＰ３１によって倍精度乗算を行う場合のタイミングチャートである。この図２においては、サイクル４までは図７に示すタイミングチャートと同様に演算処理が行われる。
【００４３】
即ち、ＡＬＵ３２は、サイクル２ではマルチプレクサ３２ｃを介して、サイクル３及び４ではマルチプレクサ３２ａ，３２ｃを介して図７に示す場合と同様の命令を実行する。この場合、加算について使用しないマルチプレクサ３２ｂについては、上述のようにゼロデータを選択させておく。
【００４４】
そして、サイクル５において、ＡＬＵ３２は、マルチプレクサ３３，３４及び３５を用いて、命令（Ｚ１＝Ｚ１＋Ｚ０＞＞１６＋Ｍ：アキュムレータＺ１の内容に、アキュムレータＺ０を１６ビット右シフトしたものとレジスタＭの内容とを加算）を実行する。
【００４５】
即ち、ここでのサイクル５においてＡＬＵ３２により実行される命令は、図７に示すタイミングチャートにおいてサイクル５及び６で実行された命令を、１サイクルで行うものである。
【００４６】
そして、次のサイクル６においては、サイクル５でのＡＬＵ３２の命令（Ｚ１＝Ｚ１＋Ｚ０＞＞１６＋Ｍ）実行結果がアキュムレータ８（Ｚ１）に格納されて、アキュムレータ８の内容が（ＮＥＷ  Ｚ）となり、乗算処理は終了する。従って、本実施例における積和サイクルは、サイクル２〜５の４サイクルであり、従来よりも１サイクル少ない時間で実行されることになる。
【００４７】
以上のように本実施例によれば、乗算オペランドレジスタ１及び２に夫々与えられる１６ビットのオペランドデータを乗算器３により乗算処理して３２ビット×３２ビットの倍精度乗算処理を行う場合に、ＡＬＵ３２を、３つの入力部３２ａ，３２ｂ及び３２ｃに与えられるオペランドデータについて同時に演算可能な構成として、その入力部３２ａ，３２ｂ及び３２ｃには、一方の入力ポートにアキュムレータ７，８及びレジスタ４の出力データが与えられると共に、他方の入力ポートにゼロデータが与えられるマルチプレクサ３３，３４及び３５を配置した。
【００４８】
従って、最後の乗算▲４▼（ＸＨ×ＹＨ）の結果がレジスタ４に格納されると同時にアキュムレータ８に対する累加算を行うことができるので、従来よりも１サイクル少ない時間で倍精度乗算処理を実行することができる。具体的には、従来は同じ乗算処理を行うのに５サイクル要したものを４サイクルで行うことが可能となり、処理速度を２０％向上させることができた。
【００４９】
また、マルチプレクサ３３，３４及び３５を備えたことにより、演算処理を多様なオペランドの組み合わせで行うことができると共に、何れかのマルチプレクサにゼロデータを選択して出力させることによって、従来と同様に、ａ±ｂ，ｂ±ｃ，ａ±ｃの２項演算を容易に行うこともできる。
【００５０】
（第２実施例）
図３及び図４は本発明の第２実施例を示すものであり、図８と同一部分には同一符号を付して説明を省略し、以下異なる部分についてのみ説明する。第２実施例のＤＳＰ（演算装置）３６においては、図８に示すＤＳＰ２６のＡＬＵ２３に代えて、第１実施例と同様に、３つのオペランドデータを同時に演算可能に構成されたＡＬＵ（算術論理演算回路）３７が配置されている。
【００５１】
また、マルチプレクサ２１及び２２に代えて、ＡＬＵ３７の３つの入力部３７ａ，３７ｂ及び３７ｃには、３つの入力ポートに与えられるデータの何れか一方を選択して出力するマルチプレクサ（選択回路）３８，３９及び４０が配置されている。マルチプレクサ３８の２つの入力ポートには、アキュムレータ（演算結果記憶回路）２４（Ｚ０）及び２５（Ｚ１）の格納データが与えられており、マルチプレクサ３９の２つの入力ポートには、アキュムレータ２４及び乗算結果格納レジスタ（乗算結果記憶回路）１９（Ｍ１）の格納データが与えられている。
【００５２】
また、マルチプレクサ４０の２つの入力ポートには、アキュムレータ２５及び乗算結果格納レジスタ（乗算結果記憶回路）２０（Ｍ２）の格納データが与えられている。そして、各マルチプレクサ３８，３９及び４０の残りの１つの入力ポートには、何れもゼロデータが与えられている。その他の構成は、図８と同様である。
【００５３】
斯様に構成することによって、ＡＬＵ３７は、ＡＬＵ３２と同様に、３つの入力部３７ａ，３７ｂ及び３７ｃに夫々与えられるオペランドデータａ，ｂ，ｃについて、３項間での加減算が実行可能となり、また、何れか１つのマルチプレクサにゼロデータを選択させることによって、従来と同様に２項演算を行うこともできる。
【００５４】
次に、第２実施例の作用について説明する。図４は、図１０に示した場合と同様に、ＤＳＰ３６によって倍精度乗算を行う場合のタイミングチャートである。図４において、ＡＬＵ３７は、サイクル３において、マルチプレクサ３８，３９及び４０を用いて、命令（Ｚ０＝Ｚ０＋Ｍ１＋Ｍ２：アキュムレータＺ０の内容に、レジスタＭ１及びＭ２の内容を加算）を実行する。
【００５５】
即ち、ここでのサイクル３においてＡＬＵ３７により実行される命令は、図１０に示すタイミングチャートにおけるサイクル３及び４で実行された命令を１サイクルで行うものである。
【００５６】
そして、次のサイクル４においては、サイクル３でのＡＬＵ３７の命令（Ｚ０＝Ｚ０＋Ｍ１＋Ｍ２）実行結果がアキュムレータ２４（Ｚ０）に格納されて、アキュムレータ２４の内容が（ＮＥＷ  Ｚ）となり、乗算処理は終了する。従って、第２実施例における積和サイクルは、サイクル２〜３の２サイクルであり、従来よりも１サイクル少ない時間で実行されることになる。
【００５７】
以上のように第２実施例によれば、２つの乗算器（並列乗算器）１２及び１３並びに２つの累積演算器（算術演算回路）１７及び１８を備えると共に、ＡＬＵ３７を、３つの入力部３７ａ，３７ｂ及び３７ｃに与えられるオペランドデータについて同時に演算可能な構成として、その入力部３７ａ，３７ｂ及び３７ｃには、１つの入力ポートにゼロデータが与えられるマルチプレクサ３８，３９及び４０を備える構成とした。
【００５８】
従って、ＡＬＵ３７は、１サイクルで命令（Ｚ０＝Ｚ０＋Ｍ１＋Ｍ２）を実行することが可能となり、従来よりも１サイクル少ない時間で倍精度乗算処理を実行することができる。具体的には、従来は同じ乗算処理を行うのに３サイクル要したものを２サイクルで行うことが可能となり、処理速度を約３３％向上させることができた。
【００５９】
本発明は上記し且つ図面に記載した実施例にのみ限定されるものではなく、次のような変形または拡張が可能である。
第２実施例において、マルチプレクサ３８，３９及び４０に代えて、マルチプレクサ３８，３９及び４０のゼロデータが与えられている入力ポートを削除した２入力のマルチプレクサを配置して、上記と同様に、使用しない入力部に与えられているデータをＡＬＵ３７の内部で無視するようにしても良い。
【００６０】
処理データやレジスタ，アキュムレータやＡＬＵなどのビット幅は一例であり、個々の処理系に応じて適宜変更して適用すれば良い。
第１実施例の乗算器３とレジスタ４との間に、第２実施例のように算術演算回路を配置しても良い。
第１実施例において、乗算結果を累積加算することなく１回毎の乗算結果のみを求める場合には、アキュムレータ８を設けずとも良い。
【００６１】
第２実施例において、このような乗算処理のみを行う場合には、アキュムレータ２５を設けずとも良い。
並列乗算器及び乗算結果記憶回路を、３組以上設けても良い。
算術論理演算回路は、入力部を４つ以上有するものでも良い。
演算装置としてはＤＳＰに限ることなく、例えばＣＰＵやマイクロコンピュータの内部回路であっても良い。
【００６２】
【発明の効果】
本発明は以上説明した通りであるので、以下の効果を奏する。
請求項１記載の演算装置によれば、算術論理演算回路は、３つ以上の複数の入力部に与えられるデータをオペランドとして同時に算術論理演算することにより、従来のように入力部を２つのみ備えているものに比べて、例えば、処理データの桁数を多く必要とする倍精度乗算処理などをより少ない演算周期で行うことができ、演算処理を高速に実行することができる。そして、算術論理演算回路は、複数の選択回路を介して各入力部に与えられるオペランドデータを適宜選択することによって、より多様なオペランドの組み合わせによる演算処理を行うことができる。
【００６３】
請求項２記載の演算装置によれば、算術論理演算回路は、各入力部に与えられるオペランドデータの内何れかをゼロデータとすることによって、入力部の数よりも少ない項数での加減算処理などを容易に行うことができる。
【００６４】
請求項３記載の演算装置によれば、複数の並列乗算器によって乗算処理が並列に実行される場合でも、算術論理演算回路は、それら並列乗算器の乗算結果データを格納する乗算結果記憶回路の出力データと演算結果記憶回路の出力データとをオペランドとして同時に算術論理演算できるので、演算処理を高速に実行することができる。
【００６７】
請求項４記載の演算装置によれば、例えば、演算周期をより多く必要とする倍精度乗算処理などを実行する場合に、算術論理演算回路で処理を行うと同時に、算術演算回路によって中間処理を行うことができるので、算術論理演算回路の処理負担を軽減して、総じて演算処理を高速に実行することができる。
【図面の簡単な説明】
【図１】本発明の第１実施例における演算装置の構成を示す機能ブロック図
【図２】倍精度乗算処理を行う場合のタイミングチャート
【図３】本発明の第２実施例を示す図１相当図
【図４】図２相当図
【図５】従来技術（その１）を示す図１相当図
【図６】倍精度乗算処理を行う場合の処理過程を概念的に示す図であり、（ｂ）は（ａ）をより具体的なイメージで示す図
【図７】図２相当図
【図８】従来技術（その２）を示す図３相当図
【図９】図６相当図
【図１０】図４相当図
【符号の説明】
３は乗算器（並列乗算器）、４は乗算結果格納レジスタ（乗算結果記憶回路）、７及び８はアキュムレータ（演算結果記憶回路）、１２及び１３は乗算器（並列乗算器）、１７及び１８は累積演算器（算術演算回路）、１９及び２０は乗算結果格納レジスタ（乗算結果記憶回路）、２４及び２５はアキュムレータ（演算結果記憶回路）、３１はＤＳＰ（演算装置）、３２はＡＬＵ（算術論理演算回路）、３２ａ，３２ｂ及び３２ｃは入力部、３３，３４及び３５はマルチプレクサ（選択回路）、３６はＤＳＰ（演算装置）、３７はＡＬＵ（算術論理演算回路）、３７ａ，３７ｂ及び３７ｃは入力部、３８，３９及び４０はマルチプレクサ（選択回路）を示す。
【図１】
0003547309.tif 000002
【図２】
0003547309.tif 000003
【図３】
0003547309.tif 000004
【図４】
0003547309.tif 000005
【図５】
0003547309.tif 000006
【図６】
0003547309.tif 000007
【図７】
0003547309.tif 000008
【図８】
0003547309.tif 000009
【図９】
0003547309.tif 000010
【図１０】
0003547309.tif 000011