(57)【特許請求の範囲】
【請求項１】
下記を具備することを特徴とする電子回路：
（ａ）第１および第２の入力及び第１乃至第６の出力を有するレジスターファイル；
（ｂ）前記レジスターファイルの該第１の出力を受信する第１のシフト装置；
（ｃ）前記レジスターファイルの該第２及び第３の出力を受信する、及び出力を有する第１の乗算器；
（ｄ）前記レジスターファイルの該第４及び第５の出力を受信する、及び出力を有する第２の乗算器；
（ｅ）前記第１の乗算器の該出力を受信する、及び出力を有する第２のシフト装置；
（ｆ）前記第２の乗算器の該出力を受信する、及び出力を有する第３のシフト装置；
（ｇ）前記第１のシフト装置の該出力を受信する、及び出力を有する周回式マルチプレクサ；
（ｈ）第１の入力において、前記第２のシフト装置の該出力を受信する、及び出力を有する第１の加算器；
（ｉ）零または前記第３のシフト装置の該出力のどちらかを受信する、及び前記第１の加算器の第２の入力に出力を印加するマルチプレクサ；
（ｊ）前記周回式マルチプレクサ及び前記第１の加算器の該出力を受信する、及び前記レジスターファイルの該第１の入力へフィードバックされる出力を有する第２の加算器；  及び、
（ｋ）前記第３のシフト装置の該出力及び前記第６のレジスター出力を受信する、及び前記レジスターファイルの該第２の入力へフィードバックされる出力を有する第３の加算器。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデジタル信号プロセッサに関し、特に、積和演算（ＭＡＣ）器(multiply-accumulate units)に関する。
【０００２】
【背景技術】
デジタル信号プロセッサ（ＤＳＰ）は、非常に素早く数学計算を実行するために特に調整された専門のタイプのマイクロプロセッサである。ＤＳＰは、コンパクトディスクプレーヤ、ＰＣディスクドライブ、電気通信モデムバンク及びセルラ電話を含む様々なアプリケーションにおいて見られることができる。
【０００３】
セルラ電話環境において、ＤＳＰ計算機能に対する要求は増加し続けており、それは、例えばＧＰＳポジションロケーション、音声認識、低ビットレート音声及びオーディオ符合化、画像及びビデオ処理、及び３Ｇセルラのモデム処理などのようなアプリケーションの必要性が増大していることによって、駆り立てられている。これらの処理要求を満たすために、より効率的に計算を処理できる改良されたデジタル信号プロセッサの計算機構造が必要である。
【０００４】
重要な仕事がこれらの領域において行われた。出願人 Sihは、以下の米国特許出願の出願人でもある：
「デジタル信号プロセッサにおける多重バスアーキテクチャ」シリアル番号1998年3月18日に出願の第09/044087号、
「多元接続レジスターを有するデジタル信号プロセッサ」シリアル番号1998年3月18日に出願の第09/044088号、
「効率的な命令用記憶装置のメモリー」シリアル番号1998年3月18日に出願の第09/044089号、
「デジタル信号プロセッサを制御するための高度に平行した可変長命令」シリアル番号1998年3月18日に出願の第09/044104号、
「可変長命令デコーダ」シリアル番号1998年3月18日に出願の第09/044086号、及び
「シフト可能な積和演算器を伴うデジタル信号プロセッサ」シリアル番号1998年3月18日に出願の第09/044108号。
【０００５】
これらの出願の開示は、参考文献としてここに取り入れられる。
【０００６】
多くの信号処理アルゴリズムにおいて、計算（Ｂ＊Ｃ）＋／−（Ｄ＊Ｅ）は、著名であり、ここにおいて、Ｂ、Ｃ、Ｄ及びＥは１６ビットの整数である。シングルポール（single-pole）ＩＩＲ濾波を実行する時、この計算は実行され、合成量の絶対値、2つのベクトルの点積(dot-product)または外積(cross product)、及び補間(complex quantity)を計算する。それはまた、拡張精度操作（extended-precision operations）（例えば３２×３２の掛け算）においても使われる。この操作は非常にいたる所にあるので、デジタル信号プロセッサに１サイクルでこの操作を完了させることが望ましい。
【０００７】
２つの乗算−塁算（ＭＡＣ）ユニットを伴うＤＳＰが使用可能であるにもかかわらず（例えばLucent DSP16000, TI C6x）、それらのＭＡＣユニットが別々であるので、それらは要求する量を一つのサイクルで計算することができない。我々がＲ１、Ｒ２、Ｒ３及びＲ４をそれぞれＢ、Ｃ、Ｄ及びＥを含む汎用１６ビットレジスタとする場合、及び、Ｌ１、Ｌ２及びＬ３を４０ビット結果レジスタ（result registers）とする場合、計算（Ｂ＊Ｃ）＋（Ｄ＊Ｅ）の単一の実施は、ＬＩ＝Ｒ１＊Ｒ２、Ｌ２＝Ｒ３＊Ｒ４；Ｌ３＝Ｌ１＋Ｌ２;としてこれら既存のプロセッサ上の擬似コードに書かれることができる。この計算がこれらのプロセッサ上の２つのサイクルを必要とする点に注意すべきである。
【０００８】
図１は、従来のＭＡＣユニット（１００）のブロック図である。レジスターファイル（１０２）は、一つの入力端子ＰＩ１を有し、３つの出力端子、Ｐ０１、ＰＯ２及びＰ０３を有している。レジスターファイルは、メモリー（１０４）に接続している。出力端子Ｐ０２及びＰ０３は乗算器（１０６）に印加される。そして、乗算器（１０６）は信号を合わせて乗じて、それらを加算器（１０８）の一つの入力に印加する。加算器は、レジスターファイルのＰ０１からその他の入力を受信する。その合計は、レジスターファイルのＰＩ１にフィードバックされる。
【０００９】
第１のクロックサイクルにおいて、Ｐ０１には何も印加されず、端子Ｐ０２及びＰ０３にはＲ１及びＲ２がそれぞれ印加される。その結果のＬ１は、レジスターファイルへフィードバックされ、Ｐ０１に接続される一時(temporary)レジスターに配置される。第２のクロックサイクルにおいて、Ｒ３及びＲ４は、それぞれ端子Ｐ０２及びＰ０３に印加され、Ｌ２として乗算器から出てくる。加算器は、Ｐ０１からのＬＩと乗算器からのＬ２を結合して、Ｌ３を生じ、それをＰＩ１経由でレジスタバンク（register bank）にフィードバックする。一度Ｌ３がレジスタバンクに存在すると、それはメモリーに対して使用可能にされることができる。
【００１０】
４０ビット加算器、及び１７×１７ビット乗算器が示されている。これは通常の通りであるが、あらゆる便利な数のビットが使われ得る。
【００１１】
【本発明の簡潔な開示】
該計算（Ｂ＊Ｃ）＋（Ｄ＊Ｅ）が一つのサイクルで完了されることを可能とするために、２つの積和演算器が一つに結合される。加算器は、該２つの乗算器の結果をひとつに加算する。その合計は、該第１のアキュムレータに印加される。好ましくは、該第２の結果も該第２のアキュムレータに印加され、マルチプレクサ（multiplexer）は該加算器に零または該第２の結果を印加する。２つの無関係な計算が同時に実行される場合、該零が印加され、第２のアキュムレータの出力端は該レジスターファイルにフィードバックされる。単一の（Ｂ＊Ｃ）＋（Ｄ＊Ｅ）計算が実行されるべき場合、該第２の結果は該加算器に印加され、該第２のアキュムレータの出力は無視される。
【００１２】
【好ましい実施例の詳細な説明】
図１は、従来のＭＡＣユニットのブロック図である。それは、すでに「背景技術」に記載されており、更に説明される必要はない。
【００１３】
図２は、本発明（２００）のブロック図である。レジスターファイル（２０２）は、第１および第２の入力（ＰＩ１、ＰＩ２）、及び第１〜第６の出力（Ｐ０１−Ｐ０６）を有する。入力及び出力は、時には入力端子及び出力端子と呼ばれ、その術語は、本願明細書において交換可能に使用される。第１のシフト装置(shifter)（２０４）は該レジスターファイルの該第１の出力を受信し、第１の乗算器（２０６）は該レジスターファイルの該第２及び第３の出力を受信する。同様に、第２の乗算器（２０８）は、該レジスターファイルの該第４及び第５の出力を受信する。第２のシフト装置（２１０）は該第１の乗算器の該出力を受信し、第３のシフト装置（２１２）は該第２の乗算器の該出力を受信する。周回式マルチプレクサ（rounding multiplexer）（２１４）は、該第１のシフト装置の該出力を受信する。
【００１４】
第１の加算器（２１６）は、第１の入力において、該第２のシフト装置（２１０）の該出力を受信する、及び、マルチプレクサ（２１８）は零または該第３のシフト装置（２１２）の該出力を受信し、該第１の加算器（２１６）の第２の入力に、一つの出力を印加する。
【００１５】
第２の加算器（２２０）は、該周回式マルチプレクサ及び該第１の加算器の該出力を受信する。その出力は、該レジスターファイルの該第１の入力（ＰＩ１）にフィードバックされる。第３の加算器（２２２）は、該第３のシフト装置（２１２）の該出力、及び該第６のレジスター出力（Ｐ０６）を受信する。その出力は、該レジスターファイルの該第２の入力（ＰＩ２）にフィードバックされる。
【００１６】
図２に示される構造は、一般的な目的のレジスターのバンク(bank)を含んでいるレジスターファイル（２０２）から、オペランド(operands)を受信する２つのＭＡＣユニット（ＭＡＣ１及びＭＡＣ２）を有する。ＭＡＣ１は、該レジスターファイルの出力端子Ｐ０２及びＰ０３から、その乗算器にオペランドを取り込む。該乗算器（２０６）の該出力は、該結果を０，１，２または３ビットだけ左に（left by）シフトすることができるシフト装置（２１０）に渡される。該シフト装置の該出力は、零またはＭＡＣ２からのシフトされた結果を加算できる加算器（２１６）に渡される。該加算器の該出力は、該レジスターファイルの出力ポートＰ０１から取り込まれるもう一つの４０ビットのオペランドを加算できる４０ビット加算器（２２０）に渡される。該４０ビット加算器の該出力は、入力端子ＰＩ１を経て該レジスターファイルに蓄積される。ＭＡＣ２は、出力端子Ｐ０４及びＰ０５から乗算器にオペランドを取り込み、それら（２０８）を乗じて、該結果を０，１，２または３ビット（２１２）だけ左にシフトし、該結果を、出力端子Ｐ０６から取り込まれた付加レジスターファイルオペランドを加算できる４０ビット加算器（２２２）に渡す。該４０ビット加算器の該出力は、レジスターファイル入力端子ＰＩ２を経て該レジスターファイルに蓄積される。メモリー（２２４）は、これらの加算器の出力を該レジスターファイル（２０２）の該適当なレジスターから抜き出すことができる。メモリー（２２４）、またはいくつかの類似したデバイスは、そもそも、被乗数（multiplicands）及び加数を該レジスターファイル（２０２）に入れるものであった。
【００１７】
従来技術のように、該加算器は４０ビットのデバイスである、及び該乗算器は１６ビット被乗数を乗じるという事実は、望ましいが必要ではない。
【００１８】
ＭＡＣ２からの該シフトされた結果もまた、ＭＡＣ１中の該第１の加算器（２１６）に供給されるマルチプレクサ（２１８）に供給されることに注意すべきである。このマルチプレクサによって、ユーザーは２つの可能な構成のうちの一つにおいて二重ＭＡＣユニットを準備できる。
【００１９】
図３は、独立したＭＡＣユニットのために構成される図２の装置である。該マルチプレクサ（２１８）が従うべき（指示を経た）ユーザー特性が、その入力として該零をとる時、該二重ＭＡＣユニットはこの構成をとる。この構成において、該２つのＭＡＣユニットは完全に独立して動作する。そして、それは既存の設計の全ての利点を保持する。この構成は、同時に２つの無関係なＭＡＣ計算を実行することに役立つ。
【００２０】
図４は、接続されたＭＡＣユニットのために構成された図２の装置である。該上述したマルチプレクサ（２１８）が、ＭＡＣ２からの該乗算器の結果を、ＭＡＣ１中の該第１の加算器（２１６）に渡すために準備される時、該二重ＭＡＣユニットはこの構成をとる。この構成において、該ＭＡＣユニットは一つに接続され、ＭＡＣ２の該４０ビット加算器（２２２）の該出力は、該レジスターファイルに書込みができなくなる。これによって、該二重ＭＡＣユニットが、ＬＩ  ＝  Ｒ１＊Ｒ２  ＋／−  Ｒ３＊Ｒ４のような指示を実行することにより単一のサイクルで（Ｂ＊Ｃ）＋／−（Ｄ＊Ｅ）量を計算することが可能になる、ということが直ちにわかるであろう。さらに、この構成はまた、該量  Ａ  ＋／−（Ｂ＊Ｃ）＋／−（Ｄ＊Ｅ）を単一のサイクルで計算することもでき、ここにおいて、量Ａは出力端子Ｐ０１を経て該レジスターファイルから取り込まれる。この計算は、拡張精度操作と同様に積和演算操作を複合するのに極めて役立つ。
【００２１】
本発明は、その最も広い実施例において、上記の構成要素の全てを必要とするというわけではない。実際に、該電子回路は単に、第１の（２０６）及び第２の乗算器（２０８）（各々の乗算器は少なくとも２つの入力及び一つの出力を有する）、少なくとも２つの入力及び一つの出力を有する加算器（２１６）、及び、少なくとも一つの入力を具備するレジスターファイル（２０２）、を備えるだけで十分である。発明の重要な部分は、各々の乗算器の出力が該加算器の入力に接続しているということ、及び該加算器の出力が該レジスターファイルの入力に接続しているということである。単一のクロックサイクルにおいて、該乗算器、該加算器、及びレジスターファイルに、一緒に動作させることがこの特徴である。好ましくは、該加算器の出力を受信する該レジスターファイルはまた、該乗算器に該被乗数を出力する該レジスターファイルである。好ましくは、該レジスターファイルは４つよりむしろ６つの出力を有する、及び、好ましくは、付加加算器は、これらの付加的出力から該乗算器により生成される結果まで、数を加算するために提供される。好ましくは、シフト装置は異なる桁位置の数を取り扱うために提供される、及び、好ましくは、周回式マルチプレクサは付加的な正確さ（accuracy）を提供する。これらは、本発明のより詳細な実施例の全ての特徴であるが、発明の最も広い実施例には必要でない。
【００２２】
好ましくは、該加算器は第１の加算器（２１６）である及び、該電子回路は第２の加算器（２２０）を更に具備する。本実施例において、該第２の加算器の一つの入力は、該レジスターファイルの出力（Ｐ０１）であり、該第２の加算器（２２０）のもう一つの入力は、該第１の加算器（２１６）の出力であり、該第２の加算器（２２０）の該出力は、該レジスターファイルの入力（ＰＩ１）である。
【００２３】
もう一つの実施例では、該電子回路は該第２の加算器（２２０）に加えて、第３の加算器（２２２）をさらに具備する。本実施例において、該第３の加算器の一つの入力は、該レジスターファイルのもう一つの出力（Ｐ０６）であり、該第３の加算器のもう一つの入力は、該第２の乗算器（２０８）の出力である。
【００２４】
図５は、図２に示された装置の代替の加算器の構造である。本実施例において、該第２の加算器（２２０）は省略される。本実施例において、該第1の加算器（２１６）は、第３の入力を有する及び、該レジスターファイルの出力（Ｐ０１）に接続されている。
【００２５】
もう一つの実施例では、該電子回路は外部から制御された（externally-controlled）マルチプレクサ（２１８）をさらに具備する。該マルチプレクサの一つの入力は、該第２の乗算器（２０８）の該出力である及び、該マルチプレクサの該他の入力は零である及び、該マルチプレクサの該出力は該加算器（２１６）への入力である。
【００２６】
もう一つの実施例では、シフト装置（２１０）、（２１２）は、各々の乗算器（２０６）、（２０８）該の出力、及び該加算器（２１６）の該入力の間に挿入される。
【００２７】
【産業上の応用】
本発明は、産業上の利用が可能であり、単一のサイクルにおいて、複数の乗算−塁算の実行を行うことが要求される時はいつでも、製作され、使用されることができる。本願明細書において、示された装置および方法の個々の構成要素は、互いに個々に独立して取り上げられているが、全く従来通りであり得る。発明として請求されるものは、それらの組み合わせにある。
【００２８】
装置および方法の種々の様式が記載されているが、発明の真の趣旨および範囲はそれに対して制限されず、請求項及びそれらの均等物のみにより制限され、これは発明として請求される。
【図面の簡単な説明】
【図１】  従来のＭＡＣユニットのブロック図である。
【図２】  本発明のブロック図である。
【図３】  独立したＭＡＣユニットのために構成される図２の装置を示す。
【図４】  接続されたＭＡＣユニットのために構成される図２の装置を示す。
【図５】  図２に示される装置の代替加算器構造を示す。
【符号の説明】
２０２…レジスターファイル、２０４…シフト装置、２０６…１７×１７乗算器、２１６…加算器、２１８…マルチプレクサ。
【図１】
0004477279.tif 000002
【図２】
0004477279.tif 000003
【図３】
0004477279.tif 000004
【図４】
0004477279.tif 000005
【図５】
0004477279.tif 000006