(57)【要約】改良された性能を有するＤＳＰアーキテクチャが記載される。例示アーキテクチャにおいて、ＤＳＰは２つのＭＡＣユニットと２つのＡＬＵを含み、ＡＬＵの一方は２つのＭＡＣユニットの一方のために加算器を交換する。このＤＳＰはデュアルＭＡＣ／シンボルＡＬＵ構成、シングルＭＡＣ／デュアルＡＬＵ構成、またはデュアルＭＡＣ／デュアルＡＬＵ構成において動作するように構成してもよい。この柔軟性は、ＤＳＰがさまざまなタイプの信号処理動作に対処することを可能にし、利用可能なハードウエアの利用を改善する。ＤＳＰアーキテクチャはさらに、クリティカルパスを分散し、より大きなスループットのためにより高いクロックスピードで動作を可能にするパイプラインレジスタを含む。
2007526723.tif 000002
【特許請求の範囲】
【請求項１】
第１および第２のオペランドを受信して乗算し、第１の中間結果を得、前記第１の中間結果を第１のレジスタに記憶し、前記記憶された第１の中間結果と第３のオペランドを加算し、第１の出力を供給するように動作可能な第１の乗累算（ＭＡＣ）ユニットと、
第４および第５のオペランドを受信して乗算し、第２の中間結果を得、前記第２の中間結果を第２のレジスタに記憶し、第６のオペランドを前記記憶された第２の中間結果と加算するかまたは前記記憶された第１および第２の中間結果と加算し、第２の出力を供給する第２のＭＡＣユニットと、
を備えたプロセッサー。
【請求項２】
第７のオペランドまたは第８のオペランドを受信して第１の演算を実行し、第３の中間結果を第３のレジスタに記憶し、前記第３の中間結果、前記第７のオペランド、前記第８のオペランドまたはそれらの組み合わせに対して第２の演算を実行し、第３の出力を供給する算術論理演算ユニット（ＡＬＵ）経路をさらに備えた、請求項１のプロセッサー。
【請求項３】
前記第１および第２のＭＡＣおよび前記ＡＬＵ経路のために前記第１乃至第８のオペランドを供給し、前記第１および第２のＭＡＣユニットおよび前記ＡＬＵ経路からの前記第１乃至第３の出力を記憶するように動作可能なレジスタファイルをさらに備えた、請求項２のプロセッサー。
【請求項４】
前記第１のＭＡＣユニットは、前記第１および第２のオペランドを受信して乗算し、前記第１の中間結果を供給するように動作可能な第１の乗算器を含み、その結果、前記第１のレジスタは、前記第１の中間結果を記憶するように動作可能であり、および前記第１のレジスタからの前記記憶された第１の中間結果を第３のオペランドと加算して第１の出力を得る第１の加算器を含み、前記第２のＭＡＣユニットは、前記第４および第５のオペランドを受信して乗算し、前記第２の中間結果を供給するように動作可能な第２の乗算器を含み、その結果前記第２のレジスタは、前記第２の中間結果を記憶するように動作可能であり、および前記第２のレジスタからの前記記憶された第２の中間結果とゼロまたは前記第１のレジスタからの前記第１の中間結果とを加算するように動作可能な第２の加算器と、前記第２の加算器の出力を前記第６のオペランドと加算して前記第２の出力を供給するように動作可能な第３の加算器とを含む、請求項１のプロセッサー。
【請求項５】
前記ＡＬＵ経路は、前記第７および第８オペランドを受信してシフトし、前記第３の中間結果を供給するように動作可能なシフターを含み、その結果、前記第３のレジスタは、前記第３の中間結果を記憶するように動作可能であり、および前記第３のレジスタからの前記第３の中間結果、前記第７のオペランド、前記第８のオペランドまたはそれらの組み合わせに対して前記第２の演算を実効し、前記第３の出力を供給するように動作可能なＡＬＵを含む、請求項２のプロセッサー。
【請求項６】
第１および第２のオペランドを受信して乗算し、第１の中間結果を供給するように動作可能な第１の乗算器と、前記第１の中間結果、第３のオペランド、および少なくとも１つのさらなるオペランドを受信し、前記受信されたオペランドに対して演算し、第１の出力を供給するように動作可能な第１の算術論理演算ユニット（ＡＬＵ）とを含む第１の乗累算（ＭＡＣ）ユニットと、
第４および第５のオペランドを受信して乗算し、第２の中間結果を供給するように動作可能な第２の乗算器と、前記第２の中間結果をゼロまたは前記第１のＭＡＣユニットからの前記第１の中間結果と加算するように動作可能な第１の加算器と、前記第１の加算器の出力と第６のオペランドを加算して第２の出力を供給するように動作可能な第２の加算器とを含む第２のＭＡＣユニットと、
を備えたプロセッサー。
【請求項７】
第７のオペランドまたは第８のオペランドを受信してシフトし、第３の中間結果を供給するように動作可能なシフターと、前記第３の中間結果、前記第７のオペランド、前記第８のオペランド、またはそれらの組み合わせに対して演算し第３の出力を供給するように動作可能な第２のＡＬＵとを含むＡＬＵ経路をさらに備えた、請求項６のプロセッサー。
【請求項８】
前記第１および第２のＭＡＣユニットおよび前記ＡＬＵ経路のために前記第１乃至第８のオペランドを供給し、前記第１および第２のＭＡＣユニットおよび前記ＡＬＵ経路からの前記第１乃至第３の出力を記憶するように動作可能なレジスタファイルをさらに備えた、請求項７のプロセッサー。
【請求項９】
前記レジスタファイルは、ＭＡＣまたはＡＬＵとして動作する前記第１のＭＡＣユニットをサポートするために設定可能な少なくとも２つの出力ポートを含む、請求項８のプロセッサー。
【請求項１０】
前記第１および第２のＡＬＵｓは、さらに中間バスからのオペランドを受信するように動作可能である、請求項７のプロセッサー。
【請求項１１】
デュアルＭＡＣ／シングルＡＬＵ構成、シングルＭＡＣ／デュアルＡＬＵ構成、またはデュアルＭＡＣ／デュアルＡＬＵ構成において動作するように設定可能な請求項７のプロセッサー。
【請求項１２】
デュアルＭＡＣ／シングルＡＬＵ構成、シングルＭＡＣ／デュアルＡＬＵ構成、またはデュアルＭＡＣ／デュアルＡＬＵ構成において動作するように命令ごとに設定可能な、請求項７のプロセッサー。
【請求項１３】
前記第１の中間結果を記憶し、記憶された第１の中間結果を前記第１のＡＬＵおよび前記第１の加算器に供給するように動作可能な第１のレジスタと、
前記第２の中間結果を記憶し、記憶された第２の中間結果を前記第１の加算器に供給するように動作可能な第２のレジスタと、
をさらに備えた、請求項６のプロセッサー。
【請求項１４】
前記第１の中間結果を記憶し、記憶された第１の中間結果を前記第１のＡＬＵおよび前記第１の加算器に供給するように動作可能な第１のレジスタと、
前記第２の中間結果を記憶し、記憶された第２の中間結果を前記第１の加算器に供給するように動作可能な第２のレジスタと、
前記第３の中間結果を記憶し、記憶された第３の中間結果を前記第２のＡＬＵに供給するように動作可能な第３のレジスタと、
をさらに備えた、請求項７のプロセッサー。
【請求項１５】
第１および第２のオペランドを受信して乗算し第１の中間結果を供給するように動作可能な第１の乗算器と、前記第１の中間結果を記憶し、記憶された第１の中間結果を供給するように動作可能な第１のレジスタと、前記記憶された第１の中間結果、第３のオペランド、少なくとも１つの他のオペランド、またはそれらの組み合わせに対して演算し、第１の出力を供給するように動作可能な第１の算術論理演算ユニット（ＡＬＵ）とを含む第１の乗累算’ＭＡＣ）ユニットと、
第４および第５オペランドを受信して乗算し第２の中間結果を供給するように動作可能な第２の乗算器と、前記第２の中間結果を記憶し、記憶された第２の中間結果を供給するように動作可能な第２のレジスタと、前記記憶された第２の中間結果をゼロまたは前記第１のＭＡＣユニットからの前記記憶された第１の中間結果と加算するように動作可能である第１の加算器と、前記第１の加算器の出力を第６のオペランドと加算し、第２の出力を供給するように動作可能な第２の加算器とを含む第２のＭＡＣユニットと、
を備えたプロセッサー。
【請求項１６】
第７のオペランドと第８のオペランドを受信してシフトし、第３の中間結果を供給するように動作可能な第１のシフターと、前記第３の中間結果を記憶し、記憶された第３の中間結果を供給するように動作可能な第３のレジスタと、前記記憶された中間結果、前記第７のオペランド、前記第８のオペランド、またはそれらの組み合わせに対して演算し、第３の出力を供給するように動作可能な第２のＡＬＵとを含むＡＬＵ経路をさらに備えた、請求項１５のプロセッサー。
【請求項１７】
前記第２のＡＬＵは、前記記憶された第３の中間結果、前記第７のオペランド、前記第８のオペランド、第９のオペランド、第１０のオペランドまたはそれらの組み合わせに対して演算し、第３の出力を供給するように動作可能である、請求項１６のプロセッサー。
【請求項１８】
第９および第１０のオペランドを受信し、第４の出力を供給するように動作可能な第２のシフターと、前記第３の出力および第４の出力を受信し、前記第３の出力または前記第４の出力を供給するように動作可能なマルチプレクサーをさらに含む、請求項１６のプロセッサー。
【請求項１９】
前記第１のＭＡＣユニットはさらに前記記憶された第１の中間結果を受信し、第１のシフトされた結果を前記第１のＡＬＵおよび前記第１の加算器に供給するように動作可能な第１のシフターを含み、前記第２のＭＡＣユニットは、さらに、前記記憶された第２の中間結果を受信し、第２のシフトされた結果を前記第１の加算器に供給するように動作可能な第２のシフターを含む、請求項１５のプロセッサー。
【請求項２０】
前記第１のＡＬＵは、前記記憶された第１の中間結果、前記第１のオペランド、前記第２のオペランド、前記第３のオペランド、前記第７のオペランド、またはそれらの組み合わせに対して演算し、前記第１の出力を供給するように動作可能である、請求項１６のプロセッサー。
【請求項２１】
第１および第２のオペランドを受信して乗算し、第１の中間結果を供給するように動作可能な第１の乗算器と、前記第１の中間結果、第３のオペランド、および少なくとも１つのさらなるオペランドを受信し、前記受信されたオペランドを演算し、第１の出力を供給するように動作可能な第１の算術論理演算ユニット（ＡＬＵ）とを含む第１の乗累算（ＭＡＣ）ユニットと、
第４および第５のオペランドを受信して乗算し、第２の中間結果を供給するように動作可能な第２の乗算器と、前記第２の中間結果とゼロまたは前記第１のＭＡＣユニットからの前記第１の中間結果とを加算するように動作可能な第１の加算器と、前記第１の加算器の出力と第６のオペランドとを加算し、第２の出力を供給するように動作可能な第２の加算器とを含む第２のＭＡＣユニットと、
第７のオペランドまたは第８のオペランドを受信してシフトし、第３の中間結果を供給するように動作可能なシフターと、前記第３の中間結果、前記第７のオペランド、前記第８のオペランド、またはそれらの組み合わせに対して演算し、第３の出力を供給するように動作可能な第２のＡＬＵを含むＡＬＵ経路と、
前記第１および第２のＭＡＣユニットおよび前記ＡＬＵ経路のための第１乃至第８のオペランドを供給し、前記第１および第２のＭＡＣユニットおよび前記ＡＬＵ経路からの前記第１乃至第３の出力を記憶するように動作可能なレジスタファイルと、
を備えた無線装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は一般に電子機器に関し、特に設定可能な乗累算（ＭＡＣ）ユニットおよび算術論理演算ユニット（ＡＬＵｓ）を有したデジタルシグナルプロセッサー（ＤＳＰｓ）に関する。
【背景技術】
【０００２】
ＤＳＰｓは数学的計算を非常に迅速に実行するように特に設計された特殊化したマイクロプロセッサーである。ＤＳＰｓはコンパクトディスクプレーヤー、ＰＣディスクドライブ、モデムバンク、オーディオ装置、携帯電話、等のようなさまざまな電子ユニットで使用される。携帯電話において、ＤＳＰ計算能力のための需要は、３Ｇ（第３世代）モデムプロセッシング、位置決定、画像およびビデオ処理、３−Ｄゲームのようなアプリケーションの増大する必要性により推進されて増大し続ける。これらのアプリケーションは、迅速かつ効率的に計算を実行することができるＤＳＰｓを必要とする。
【０００３】
ＤＳＰは典型的にＭＡＣユニットおよびＡＬＵを含む。ＭＡＣユニットは、一般にフィルタリングおよび信号処理で使用される乗累算演算のために使用される。ＡＬＵは、加算演算、減算演算、論理演算、シフト演算およびビット操作演算に使用される。ＤＳＰはまた、より高い計算スループットのために複数のＭＡＣを含んでもよい。例示デュアルＭＡＣ  ＤＳＰは、２００３年４月２９日に発行された「結合乗累算ユニットを有したデジタルシグナルプロセッサー」(Digital Signal Processor with Coupled Multiply-Accumulate Units)というタイトルの米国特許番号第６、５５７、０２２に記載されている。
【０００４】
任意のＤＳＰ設計の目的は、（１）単位時間当たりの演算の最多数を実現することおよび（２）利用可能なハードウエアのより良い利用を可能にするために同時に異なるタイプの演算を実行するように柔軟性を供給することである。これらの目的を満足させることができるＤＳＰアーキテクチャは、今日のアプリケーションの処理需要を満足させるために非常に望ましい。
【発明の概要】
【０００５】
改良された性能を有するＤＳＰアーキテクチャがここに記載される。一実施形態において、ＤＳＰは２つのＭＡＣユニットと２つのＡＬＵｓを含む、ＡＬＵｓの一方は２つのＭＡＣユニットの一方のために加算器を交換する。このＤＳＰは、デュアルＭＡＣ／シングルＡＬＵ構成、シングルＭＡＣ／デュアルＡＬＵ構成、またはデュアルＭＡＣ／デュアルＡＬＵ構成において動作するために、恐らく命令ごとに基づいて構成してもよい。構成の柔軟性は、ＤＳＰがさまざまなタイプの信号処理演算を処理することを可能にし、利用可能なハードウエアの利用を改善する。ＤＳＰはさらに、クリティカルパスを分散し、より大きなスループットのためにより高いクロックスピードでＤＳＰが動作することを可能にするパイプラインレジスタを含む。ＤＳＰアーキテクチャの他の実施形態も以下に記載される。
【０００６】
この発明の種々の観点および実施形態は以下にさらに詳細に記載される。
【０００７】
１つの観点において、第１および第２のオペランドを受信して乗算し、第１の中間結果を得、第１の中間結果を第１のレジスタに記憶し、記憶された第１の中間結果を第３のオペランドと加算し、第１の出力を供給するように動作可能な第１の乗累算（ＭＡＣ）ユニットと、第４および第５のオペランドを受信して乗算し、第２の中間結果を得、第２の中間結果を第２のレジスタに記憶し、第６のオペランドを、記憶された第２の中間結果または記憶された第１および第２の中間結果の合計と加算し、第２の出力を供給するように動作可能な第２のＭＡＣユニットを備えたプロセッサーが提供される。
【０００８】
他の観点において、第１および第２のオペランドを受信して乗算し第１の中間結果を供給するように動作可能な第１の乗算器と、第１の中間結果、第３のオペランド、および少なくとも１つの更なるオペランドを受信し、受信したオペランドを演算し、第１の出力を供給するように動作可能な第１の算術論理演算ユニット（ＡＬＵ）を含む第１の乗累算（ＭＡＣ）ユニットと、第４および第５のオペランドを受信して乗算し第２の中間結果を供給するように動作可能な第２の乗算器と、第２の中間結果をゼロまたは第１のＭＡＣユニットからの第１の中間結果と加算するように動作可能な第１の加算器と、第１の加算器の出力と第６のオペランドを加算して第２の出力を供給する第２の加算器を含む第２のＭＡＣユニットと、を備えたプロセッサーが提供される。
【０００９】
他の観点において、第１および第２のオペランドを受信して乗算し第１の中間結果を供給するように動作可能な第１の乗算器と、第１の中間結果を記憶し記憶された第１の中間結果を供給するように動作可能な第１のレジスタと、記憶された中間結果、第３のオペランド、少なくとも１つの他のオペランド、またはそれらの組み合わせを受信して演算するように動作可能な第１の算術論理演算ユニット（ＡＬＵ）と、を含む第１の乗累算（ＭＡＣ）ユニットと、第４および第５のオペランドを受信して乗算し、第２の中間結果を供給するように動作可能な第２の乗算器と、第２の中間結果を記憶し、記憶された第２の中間結果を供給するように動作可能な第２のレジスタと、記憶された第２の中間結果とゼロまたは第１のＭＡＣユニットからの記憶された第１の中間結果とを加算するように動作可能な第１の加算器と、第１の加算器の出力と第６のオペランドを加算して第２の出力を供給するように動作可能な第２の加算器と、を含む第２のＭＡＣユニットと、を備えたプロセッサーが提供される。
【００１０】
他の観点において、第１および第２のオペランドを受信して乗算し第１の中間結果を供給するように動作可能な第１の乗算器と、第１の中間結果、第３のオペランド、および少なくとも１つのさらなるオペランドを受信し、受信したオペランドを演算し、第１の出力を供給するように動作可能な第１の算術論理演算ユニット（ＡＬＵ）と、を含む第１の乗累算（ＭＡＣ）ユニットと、第４および第５のオペランドを受信して乗算し第２の中間結果を供給するように動作可能な第２の乗算器と、第２の中間結果をゼロまたは第１のＭＡＣユニットからの第１の中間結果と加算するように動作可能な第１の加算器と、第１の加算器の出力と第６のオペランドを加算して第２の出力を供給するように動作可能な第２の加算器と、を含む第２のＭＡＣユニットと、第７のオペランドまたは第８のオペランドを受信してシフトし、第３の中間結果を供給するように動作可能なシフターと、第３の中間結果、第７のオペランド、第８のオペランド、またはそれらの組み合わせに対して演算し、第３の出力を供給するように動作可能な第２のＡＬＵと、を含むＡＬＵ経路(path)と、第１および第２のＭＡＣユニットおよびＡＬＵ経路のための第１乃至第８のオペランドを供給し、第１および第２のＭＡＣユニットおよびＡＬＵ経路から第１乃至第３の出力を記憶するように動作可能なレジスタファイルと、を備えた無線装置が提供される。
【発明を実施するための最良の形態】
【００１１】
「例示」という用語は、「例、インスタンス、または例証」として機能することを意味するためにここに示される。「例示」としてここに記載されるいかなる実施形態または設計は、他の実施形態または設計に対して望ましいまたは利点があるとして必ずしも解釈されるべきでない。
【００１２】
図１は２つのＭＡＣユニットと１つのＡＬＵを備えたＤＳＰ１００のブロック図を示す。レジスタファイル１１０は、ＭＡＣユニットおよびＡＬＵのためのオペランドおよび結果を記憶するために使用することができる汎用レジスタのバンクを含む。レジスタファイル１１０はメモリユニット（図１に図示せず）に接続し、データを交換する。図１に示される実施形態の場合、レジスタファイル１１０は、ＰＩ１乃至ＰＩ３のラベルが付けられた３つの入力ポートと、ＰＯ１乃至ＰＯ８のラベルが付けられた８つの出力ポートを有する。一般に、レジスタファイルは、任意の数の入力ポートおよび出力ポートを持つことができる。
【００１３】
第１のＭＡＣユニット（ＭＡＣＩ）の場合、乗算器１２２ａは、レジスタファイル１１０の出力ポートＰＯ４およびＰＯ５から２つのオペランドを受信して乗算し、結果を加算器１４０ａの１つの入力に供給する。加算器１４０ａは出力ポートＰＯ６から他のオペランドを受信し、２つの入力オペランドを加算し、出力をレジスタファイル１１０の入力ポートＰＩ２に供給する。マルチプレクサー１２８は、２つの入力端子に乗算器１２２ａの出力とゼロの値を受信し、マルチプレクサー制御（ＭＣ）に応じて乗算器出力またはゼロを供給する。
【００１４】
第２のＭＡＣユニット（ＭＡＣ２）の場合、乗算器１２２ｂは、レジスタファイル１１０の出力ポートＰＯ２およびＰＯ３から２つのオペランドを受信して乗算し、その結果を加算器１３０の１つの入力に供給する。また、加算器１３０は乗算器１２８の出力を受信し、２つの入力オペランドを加算し、出力を加算器１４０ｂの１つの入力に供給する。加算器１４０ｂは、出力ポートＰＯ１から他のオペランドを受信し、２つの入力オペランドを加算し、出力をレジスタファイル１１０の入力ポートＰＩ１に供給する。
【００１５】
ＡＬＵ経路の場合、シフター１５４は、レジスタファイル１１０の出力ポートＰＯ７およびＰＯ８から２つの入力を受信し、中間バスから第３の入力を受信する。中間バスは、命令に埋め込まれたイメデェート(immediate)値をＡＬＵに転送する。シフター１５４は、３つの入力の１つを選択し、指定された数のビットだけ選択された入力からオペランドをシフトし（例えば、左に０、１、２、または３ビット）、出力をマルチプレクサー１５８ａおよび１５８ｂの１つの入力に供給する。また、マルチプレクサー１５８ａは、出力ポートＰＯ７からオペランドを受信し、２つの入力の１つをＡＬＵ１６０の１つの入力に供給する。また、マルチプレクサー１５８ｂは、中間バスからイメデェート値を受信し、２つの入力の１つをＡＬＵ１６０の他の入力に供給する。ＡＬＵ１６０はその入力オペランドに対して演算し、出力をレジスタファイル１１０の入力ポートＰＩ３に供給する。
【００１６】
ＤＳＰ１１０内のユニットは任意の数のビットで設計してもよい。一例として、乗算器１２２ａおよび１２２ｂは、１６×１６ビットの乗算器であってもよいし、加算器１３０は、３２ビットの加算器であってもよいし、加算器１４０ａは４０ビットの加算器であってもよいし、シフター１５４およびＡＬＵ１６０は４０ビットのユニットであってもよい。同様に、レジスタファイル１１０は、その入力ポートおよび出力ポートに対して任意の数のビットで設計してもよい。一例として、出力ポートＰＯ１、ＰＯ６、およびＰＯ７は、４０ビットオペランドを供給してもよいし、出力ポートＰＯ２、ＰＯ３、ＰＯ４、およびＰＯ５は、１６ビットオペランドを供給してもよいし、出力ポートＰＯ８は１６ビットまたは４０ビットオペランドを供給してもよいし、入力ポートＰＩ１、ＰＩ２、およびＰＩ３は、４０ビットの結果を受信してもよい。上述したものは例示値であり、他のビット幅を使用してもよい。
【００１７】
ＤＳＰ１００は、２つの独立したＭＡＣユニットまたは２つの結合したＭＡＣユニットとして動作するように構成してもよい。独立したデュアルＭＡＣ構成の場合、マルチプレクサー１２８はゼロ値を加算器１３０にわたすように制御され、ＭＡＣ１およびＭＡＣ２は、独立して動作し、異なるオペランドのセットに対して同時に２つのＭＡＣ動作を実行することができる。結合されたデュアルＭＡＣ構成の場合、マルチプレクサー１２８は、乗算器１２２ａの出力をわたすように制御され、ＭＡＣ１およびＭＡＣ２は集合的に計算を実行する。（Ｂ＊Ｃ）±（Ｄ＊  Ｅ）またはＡ±（Ｂ＊Ｃ）＋（Ｄ＊Ｅ）、但し、Ａ乃至Ｅは、それぞれ出力ポートＰＯ１乃至ＰＯ５からのオペランドである。これらの２つの計算は、虚数乗法および累算動作に非常に有用である。
【００１８】
単位時間当たりの処理能力を改良するために（すなわち、秒あたりのより多くの演算を実行するために）、ＤＳＰのクロックのスピードを増加することは非常に望ましい。例えば、クロックスピードが５０％だけ増加できるなら、同じハードウエアで毎秒５０％以上の演算を実行することができる。しかしながら、結合デュアルＭＡＣ経路およびＡＬＵ経路は、各々そのクリティカルパスに対して直列に複数の演算を有するので、図１に示されるＤＳＰアーキテクチャは、クロックスピードが増加されるにつれて増やされない。結合デュアルＭＡＣ経路は、乗算器１２２ａまたは１２２ｂおよび加算器１３０および１４０ｂを介してそのクリティカルパスにおいて乗算および２つの加算演算を有する。ＡＬＵ経路は、そのクリティカルパスにシフトおよび加算演算を有する。これらの演算は完了するのに多少の時間を必要とし、従ってＤＳＰに使用してもよいクロックスピードを制限するであろう。
【００１９】
図２は、２つのＭＡＣユニットおよび１つのＡＬＵを有したパイプライン型のＤＳＰ１０２のブロック図を示す。ＤＳＰ１０２は、図１に示されるＤＳＰ１００のエレメントのすべてを含む。ＤＳＰ１０２はさらに（１）乗算器１２２ａと加算器１４０ａとの間に結合されたレジスタ１２４ａ、（２）乗算器１２２ｂおよび加算器１３０との間に結合されたレジスタ１２４ｂ、および（３）シフター１５４とマルチプレクサー１５８ａおよび１５８ｂとの間に結合されたレジスタ１５６を含む。
【００２０】
レジスタ１２４ａ、１２４ｂ、および１５６は、それぞれＭＡＣ１、ＭＡＣ２のクリティカルパスおよびＡＬＵ経路に介挿されたパイプラインレジスタである。これらのレジスタはクリティカルパスを分散し、ＤＳＰ１０２がより高いレートでクロックされるのを可能にする。ＤＳＰ１０２のための実行サイクルは２つのパイプラインステージに分割される。第１のパイプラインステージにおいて、乗算器１２２ａおよび１２２ｂはレジスタファイル１１０からオペランドをフェッチし、乗算演算を実行し、それらの結果をそれぞれレジスタ１２４ａおよび１２４ｂに記憶する。同様に、ＡＬＵ経路の場合、シフター１５４はレジスタファイル１１０および／または中間バスから入力を受信し、指定されたシフトを実行し、結果をレジスタ１５６に記憶する。第２のパイプラインステージにおいて、ＭＡＣ１およびＭＡＣ２内の加算器およびＡＬＵ経路内のＡＬＵ１６０はアクティブである。独立したデュアルＭＡＣ構成の場合、加算器１４０ａは、レジスタ１２４ａの出力を出力ポートＰＯ６からのオペランドと加算し、出力を入力ポートＰＩ２に供給し、加算器１４０ｂは、レジスタ１２４ｂの出力を出力ポートＰＯ１からのオペランドと加算し、出力を入力ポートＰＩ１に供給する。結合されたデュアルＭＡＣ構成の場合、加算器１３０は、レジスタ１２４ａおよび１２４ｂの出力を加算し、加算器１４０ｂは、加算器１３０の出力と出力ポートＰＯ１からのオペランドとを加算し、出力を入力ポートＰＩ１に供給する。ＡＬＵ経路の場合、ＡＬＵ１６０は、レジスタ１５６の出力および／または出力ポートＰＯ７および中間バスからのオペランドを受信し、入力オペランドに対して演算し、出力を入力ポートＰＩ３に供給する。
【００２１】
ＤＳＰ１０２は、ＤＳＰ１００の機能性のすべてを提供することができる。しかしながら、ＤＳＰ１０２は、ＤＳＰ１００より早いレートで（２倍の速さまで）クロックしてもよい。なぜならＤＳＰ１０２内のクリティカルパスは、パイプラインレジスタを用いて分割されているからである。従って、これはＤＳＰ１００よりもより高い全体のスループットをＤＳＰ１０２が実現することを可能にする。ＤＳＰ１０２内の全ての他の経路よりもはるかに長い遅延を有する新しいクリティカルパスであるなら、この経路をさらに分割するために、加算器１３０と１４０ｂとの間にパイプラインレジスタを介挿してもよい。この場合、ＤＳＰ１０２のための実行サイクルは、３つのパイプラインステージに分割されるであろう。
【００２２】
図１に示されるＤＳＰアーキテクチャは、制限された設定可能性を有し、すべてのタイプの信号処理可能性に適合しない。ＤＳＰ１００は（独立したまたは結合して）２つのＭＡＣ演算および１つのＡＬＵ演算を並列に実行することができる。いくつかのアプリケーションの場合、２つのＡＬＵ演算と１つのＭＡＣ演算を生じさせるかまたは２つのＭＡＣ演算と２つのＡＬＵ演算を並列に生じさせることが望ましいかもしれない。並列に２つのＡＬＵ演算を好むアプリケーションは、ビデオ圧縮における動き検出のための絶対差分（ＳＡＤ）測定基準計算、音声認識におけるテンプレート比較、およびビタビデコーディングにおける経路距離計算の和を含む。これらはすべて技術的に知られている。
【００２３】
図３は、２つのＭＡＣユニットと２つのＡＬＵｓを有した設定可能なＤＳＰ１０４のブロック図を示す。ＤＳＰ１０４は図１に示されるＤＳＰ１００のエレメントのほとんどを含む。ＤＳＰ１０４はさらに、マルチプレクサー１４２ａおよび１４２ｂおよびＤＳＰ１００内の加算器１４０ａを交換するＡＬＵ１５０を含む。
【００２４】
図３に示される実施形態の場合、マルチプレクサー１４２ａは乗算器１２２ａの出力と出力ポートＰＯ５および中間バスからのオペランドを受信する。マルチプレクサー１４２ａは、その３つの入力の１つを選択し、選択された入力からのオペランドをＡＬＵ１５０の１つの入力に供給する。マルチプレクサー１４２ｂは、出力ポートＰＯ４およびＰＯ６からオペランドを受信し、２つの入力の１つを選択し、選択された入力からのオペランドをＡＬＵ１５０の他の入力に供給する。ＡＬＵ１５０はその入力オペランドに対して加算演算および減算演算とともに論理演算およびビット操作演算を実行することができ、出力を入力ポートＰＩ２に供給する。
【００２５】
図３は、ＭＡＣ１およびＡＬＵ１５０をサポートするためにレジスタファイル１１０の設定可能な出力ポートＰＯ４、ＰＯ５、およびＰＯ６の使用を示す。これは、ＭＡＣとＡＬＵをサポートするのに必要な出力ポートの数を低減する。これは、レジスタファイルの設計を簡単化することができる。また、図３は、ＡＬＵ１５０をレジスタファイルの出力ポートおよびＤＳＰ１０４内の他のユニットに接続するための特定の例を示す。他の接続も可能である。例えば、マルチプレクサー１４２ａおよび１４２ｂは、より多くのオペランドを受信するためにより多くの入力を有していてもよいし、および／またはレジスタファイル１１０の異なる出力ポートからオペランドを受信してもよい。
【００２６】
ＤＳＰ１０４は種々の構成で動作してもよい。これは表１にリストアップされる。これらの種々の構成は、例えばＤＳＰ命令を用いてＤＳＰ１０４内の種々のユニットのための接続を適切に設定することにより選択してもよい。ＤＳＰ１０４のための構成は、例えば命令ベースにより命令に対して動的に変更してもよい。
【表１】
2007526723.tif 000003
【００２７】
ＤＳＰ１０４の場合、オペランドのいくつかは、制限された数の出力ポートおよび接続のためにいくつかの構成において共有される。
【００２８】
ＤＳＰを種々の構成において動作させるための柔軟性は、ＤＳＰが種々のタイプの信号処理動作に適合することを可能にする。従って、これは、利用可能なハードウエアのより良い利用およびより高い全体のスループットを可能にする。ＤＳＰのための種々の構成は以下に図解される。
【００２９】
図４は、２つのＭＡＣユニットおよび２つのＡＬＵｓを有した設定可能なパイプライン型のＤＳＰ１０６のブロック図を示す。ＤＳＰ１０６は図３に示されるＤＳＰ１０４のエレメントのすべてを含む。さらに、ＤＳＰ１０６は、それぞれ乗算器１２２ａおよび１２２ｂの出力およびシフター１５４の出力に配置されるパイプラインレジスタ１２４ａ、１２４ｂおよび１５６を含む。ＤＳＰ１０６はＤＳＰ１０４のために表１に示される構成のすべてをサポートすることができる。しかしながら、ＤＳＰ１０６は、ＤＳＰ１０４よりもより高いクロックスピードで動作することができる。なぜならば、パイプラインレジスタ１２４ａ、１２４ｂ、および１５６は、それぞれＭＡＣ１、ＭＡＣ２およびＡＬＵ経路を分割するからである。
【００３０】
ＤＳＰデータ経路は、より多くのユニットおよび／または図３および図４に示される接続よりもより多くの接続を用いて設計し、さらにより大きな柔軟性および機能性を実現してもよい。さらに、オペランドを選択する際に、より大きな柔軟性をサポートするために更なる出力ポートを用いてレジスタファイルを設計してもよい。
【００３１】
図５は２つのＭＡＣユニットと２つのＡＬＵｓを用いた他の設定可能なパイプライン型のＤＳＰ１０８のブロック図を示す。ＤＳＰ１０８は、図４に示されるＤＳＰ１０６のエレメントのほとんどを含む。しかしながら、ＤＳＰ１０８は、８つの出力ポートを有するレジスタファイル１１０を交換する１０の出力ポートを有するレジスタファイル１１２を含む。ＤＳＰ１０８は以下に記載されるように、ＭＡＣ１およびＭＡＣ２およびＡＬＵ経路のためのさらなるユニットおよび接続をさらに含む。
【００３２】
ＭＡＣ１の場合、シフター１２６ａはレジスタ１２４ａの出力を受信し、指定された数のビットによりその入力オペランドをシフトし、出力をマルチプレクサー１２８および１４２ａの１つの入力に供給する。また、マルチプレクサー１４２ａは、出力ポートＰＯ４、ＰＯ５、およびＰＯ７および中間バスからオペランドを受信する。マルチプレクサー１４２ａは、５つの入力の１つをＡＬＵ１５０の１つの入力に供給する。
【００３３】
ＭＡＣ２の場合、シフター１２６ｂはレジスタ１２４ｂの出力を受信し、指定された数のビットだけその入力オペランドをシフトし、出力を加算器１３０に供給する。シフター１３２は、出力ポートＰＯ１からオペランドを受信し、指定された数のビットだけその入力オペランドをシフトし、出力をマルチプレクサー１３４の１つの入力に供給する。また、マルチプレクサー１３４は「０」の値と「０ｘ８０００」の値を受信し、３つの入力の１つを加算器１４０に供給する。特に、加算器１４０のための加算が必要ないときマルチプレクサー１３４は「０」の値を供給し、累算が実行されるとき、丸めのための「０ｘ８０００」の値を供給し、出力ポートＰＯ１からオペランドを供給する。
【００３４】
ＡＬＵ経路の場合、マルチプレクサー１５２は、出力ポートＰＯ８および中間バスからオペランドを受信し、出力をシフター１５４に供給する。また、シフター１５４は、出力ポートＰＯ７からオペランドを受信し、２つの入力の１つを選択し、指定された数のビットだけ選択された入力からオペランドをシフトし、出力をレジスタ１５６に供給する。マルチプレクサー１５８ａは、レジスタ１５６の出力と出力ポートＰＯ９からのオペランドを受信し、２つの入力の１つを選択し、選択された入力からのオペランドをＡＬＵ１６０の１つの入力に供給する。マルチプレクサー１５８ｂは、出力ポートＰＯ１０および中間バスからオペランドを受信し、２つの入力の１つを選択し、選択された入力からのオペランドをＡＬＵ１６０の他の入力に供給する。ＡＬＵ１６０はその入力オペランドに対して演算し、出力をマルチプレクサー１６４に供給する。シフター１６２は、出力ポートＰＯ９からオペランドを受信し、マルチプレクサー１５８ｂは２つの入力において、２つの入力の１つを選択し、指定された数のビットだけ選択された入力からオペランドをシフトし、出力をマルチプレクサー１６４に供給する。マルチプレクサー１６４は、２つの入力の１つをＡＬＵ飽和ユニット１６６に供給する。ＡＬＵ飽和ユニット１６６は、受信された値を飽和し、飽和された値を入力ポートＰＤに供給する。
【００３５】
大きさの異なる位階の数を処理するためにシフター１２６ａ、１２６ｂ、および１３２は、ＭＡＣ１およびＭＡＣ２に設けられる。シフター１５４および１６２はシフト動作のためにＡＬＵ経路に設けられる。これらのシフターの各々は、例えば左に０、１、２、または３ビットだけ、またはその他のビットシフトのレンジだけその入力オペランドをシフトするように個々に構成してもよい。マルチプレクサー１３４は、丸めのための「０ｘ８０００」を供給することにより更なる精度を供給する。これは、さらなるハーフビットの精度を供給する。
【００３６】
ＤＳＰ１０８は図１のＤＳＰ１００と以下の違いを有する。第１に、パイプラインレジスタ１２４ａおよび１２４ｂは、それぞれＭＡＣ１およびＭＡＣ２内の乗算器１２２ａおよび１２２ｂの出力において介挿され、パイプラインレジスタ１５６は、ＡＬＵ経路内のシフター１５４の出力に介挿される。第２にＭＡＣ１内の加算器１４０ａは、ＡＬＵ１５０と交換されている。ＡＬＵ１５０は、加算および減算とともに論理およびビット操作演算を実行することができる。第３に、シフター１６２およびレジスタファイル１１２内の出力ポートＰＯ９およびＰＯ１０は、ＡＬＵ経路のために追加されている。第４に、種々の新しい接続がＭＡＣ１のためのＡＬＵ１５０に注がれている。
【００３７】
ＤＳＰ１０８は、図３のＤＳＰ１０４のための表１に示される構成のすべてをサポートすることができる。ＤＳＰ１０８はさらなるシフター、マルチプレクサー、出力ポート、および接続のために演算の種々のタイプと組み合わせをサポートすることができる。パイプラインレジスタ１２４ａ、１２４ｂ、および１５６がそれぞれＭＡＣ１５、ＭＡＣ２およびＡＬＵ経路を分解するので、ＤＳＰ１０８は、より高いクロックスピードをサポートすることができる。
【００３８】
図６は、デュアルＭＡＣ／シングルＡＬＵ構成において動作するＤＳＰ１０８を示す。この構成において、ＭＡＣ１およびＭＡＣ２は、適切にマルチプレクサー１２８を制御することにより、独立してまたは組み合わせて動作してもよい。ＡＬＵ１５０は、（簡単のために図６には示していないマルチプレクサー１４２ａを介して）シフター１２６ａの出力を受信し、（図示していないマルチプレクサー１４２ｂを介して）出力ポートＰＯ６からオペランドを受信する。この構成の場合、ＡＬＵ１５０は、加算器として機能し、２つの入力オペランドに対して加算を実行する。
【００３９】
図７は、シングルＭＡＣ／デュアルＡＬＵ構成において動作するＤＳＰ１０８を示す。
【００４０】
この構成において、ＭＡＣ１は、バイパスされ、ＭＡＣ２は作動する。マルチプレクサー１４２ａは、出力ポートＰＯ４、ＰＩ５、およびＰＯ７および中間バスからオペランドを受信することができ、４つの入力の１つを選択することができ、選択された入力からのオペランドをＡＬＵ１５０の１つの入力に供給することができる。マルチプレクサー１４２ｂは、出力ポートＰＯ４およびＰＯ６からオペランドを受信することができ、２つの入力の１つを選択することができ、選択された入力からのオペランドをＡＬＵ１５０の他の入力に供給することができる。ＡＬＵ１５０は、その入力オペランドに対して任意のＡＬＵ演算を実行することができる。
【００４１】
図８は、デュアルＭＡＣ／デュアルＡＬＵ構成において動作するＤＳＰ１０８を示す。この構成において、ＭＡＣ１およびＭＡＣ２は、結合デュアルＭＡＣ構成で動作され、マルチプレクサー１２８は簡単のために省略されている。マルチプレクサー１４２ａは、出力ポートＰＯ７および中間バスからオペランドを受信することができ、２つの入力の１つを選択することができ、選択された入力からのオペランドをＡＬＵ１５０の１つの入力に供給することができる。また、ＡＬＵ１５０は、出力ポートＰＯ６からのオペランドおよび他の入力を受信することができ、その入力オペランドに対して任意のＡＬＵ演算を実行することができる。
【００４２】
また、ＤＳＰ１０４および１０６は、ＤＳＰ１０８のための図６、図７、および図８に示される方法と類似の方法で、デュアルＭＡＣ／シングルＡＬＵ、シングルＭＡＣ／デュアルＡＬＵ、およびデュアルＭＡＣ／デュアルＡＬＵ構成において動作することもできる。しかしながら、ＤＳＰ１０４および１０６は、ＤＳＰ１０８より少ない接続、出力ポートおよびマルチプレクサーを有しているので、これらの種々の構成のためのＤＳＰ１０４および１０６のための接続は、ＤＳＰ１０８のための接続と異なるであろう。
【００４３】
ＤＳＰ１０４、１０６および１０８のための設定可能なアーキテクチャは、これらのＤＳＰが単一の命令で種々のタイプと組み合わせの計算を実行することを可能にする。例えば、以下の計算タイプおよび組み合わせは１つの命令でこれらのＤＳＰｓにより実行してもよい。
【００４４】
Ａ＝Ｂ＋Ｃ；Ｄ＝Ｅ＋Ｆ；Ｇ＝Ｈ＋（Ｉ＊Ｊ）。
【００４５】
Ａ＝Ｂ＋Ｃ；Ｄ＝Ｅ−Ｆ；Ｇ＝Ｈ＋（Ｉ＊Ｊ）＋（Ｋ＊Ｌ）。
【００４６】
Ａ＝（Ｂ<<３）＋Ｃ；Ｄ＝Ｅ＆Ｆ；Ｇ＝Ｈ−（Ｉ＊Ｊ）。
【００４７】
上に示された計算のための入力オペランドは、レジスタファイルおよび中間のバスの出力ポートから生じることができる。計算のための３つの結果Ａ、Ｄ、およびＧは、レジスタファイルの３つの入力ポートに供給することができる。また、多くの他の計算タイプおよび組み合わせもＤＳＰｓ１０４、１０６および１０８により実行することができる。
【００４８】
設定可能なアーキテクチャは、表１に示される並列組み合わせのすべてをサポートするので、ＤＳＰ１０４および１０６のための設定可能なアーキテクチャはＤＳＰ１００のためのアーキテクチャよりもすべてのタイプの信号処理演算に対してより適している。
【００４９】
ここに記載された設定可能なおよび／またはパイプライン型のＤＳＰｓは、無線通信、計算、ネットワーキング、パーソナルエレクトロニクス等を含む種々のアプリケーションに使用してもよい。無線通信のためのＤＳＰｓの例示使用が以下に記載される。
【００５０】
図９は、無線通信システムにおいて無線装置９００のブロック図を示す。無線装置９００は、携帯電話、ハンドセット、端末、移動局、またはその他の装置または設計であってもよい。無線通信システムは、符号分割多重アクセス（ＣＤＭＡ）システム、モバイル通信（ＧＳＭ）システムのためのグローバルシステム、複数入力複数出力（ＭＩＭＯ）システム、直交周波数分割多重（ＯＦＤＭ）システム、および直交周波数分割多重アクセス（ＯＦＤＭＡ）システム等であってもよい。無線装置９００は受信経路および送信経路を介して双方向通信を供給することができる。
【００５１】
受信経路の場合、システム内の基地局により送信される信号は、アンテナ９１２により受信され、デュプレクサー（Ｄ）９１４を介して送られ、受信機ユニット（ＲＣＶＲ）９１６に供給される。受信機ユニット９１６は受信された信号を条件づけし（例えば、フィルターし、増幅し、および周波数コンバートする）、条件づけされた信号をデジタル化し、データサンプルを更なる処理のためにＤＳＰ９２０に供給する。送信経路の場合、無線装置９００から送信されたデータはＤＳＰ９２０により送信機ユニット（ＴＭＴＲ）９１８に供給される。送信機ユニット９１８はデータを条件づけし（例えば、フィルターし、増幅し、および周波数コンバートする）、変調された信号を発生する。変調された信号はデュプレクサー９１４を介して送られ、アンテナ９１２を介して基地局に送信される。
【００５２】
ＤＳＰ９２０は、例えば、レジスタファイル９３０、ＭＡＣユニット９３２、ＡＬＵｓ９３４および内部コントローラー９４０および内部メモリユニット９４２のような種々のユニットを含む。これらはすべて内部バスを介して接続される。内部コントローラー９４０は、ＭＡＣユニット９３２およびＡＬＵｓ９３４が種々の計算を実行するように指示する命令を実行する。例えば、ＤＳＰ９２０は、送信経路のための符号化、インターリービング、変調、コードチャネライゼーション(code channelization)、スペクトル拡散、フィルタリング等を実行してもよい。ＤＳＰ９２０は、受信経路のために、フィルタリング、逆拡散、チャネライゼーション、復調、デインターリービング、デコーディング等を実行してもよい。これらの種々の動作は技術的に知られている。ＤＳＰ９２０により実行される特定の処理は、通信システムに依存する。レジスタファイル９３０、ＭＡＣユニット９３２、およびＡＬＵｓ９３４は、図２、３、４および５に示されるＤＳＰアーキテクチャのいずれかを用いて実施してもよい。
【００５３】
コントローラー９５０は、ＤＳＰ９２０および無線装置９００内の他のユニットを制御する。他のユニットは、種々の実施形態の理解に寄与しないので、他のユニットは図９に示されていない。メモリユニット９４２および９５２はそれぞれコントローラー９４０および９５０により使用されるプログラムコードおよびデータを記憶する。
【００５４】
図９は、ここに記載された設定可能なおよび／またはパイプライン型のＤＳＰｓが使用されてもよい無線装置の例示設計を示す。また、これらのＤＳＰｓは他の電子装置に使用されてもよい。
【００５５】
ここに記載される設定可能なおよび／またはパイプライン型ＤＳＰは、種々のハードウエアユニットで実現してもよい。例えば、これらのＤＳＰアーキテクチャは、特定用途向け集積回路（ＡＳＩＣ）、デジタルシグナル処理装置（ＤＳＰＤ）、プログラマブルロジックデバイス（ＰＬＤ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プロセッサー、コントローラー、マイクロコントローラー、マイクロプロセッサーおよび他の電子ユニットにおいて実現してもよい。
【００５６】
開示された実施形態の上述の記載は、当業者がこの発明を製作または使用することを可能にするために提供される。これらの実施形態に対する種々の変更は当業者には容易に明白であろう。そして、ここに定義される包括的原理は、この発明の精神または範囲から逸脱することなく他の実施形態に適用してもよい。従って、この発明は、ここに示される実施形態に限定されることを意図したものではなく、ここに開示される原理および新規な特徴に一致する最も広い範囲が許容されるべきである。
【図面の簡単な説明】
【００５７】
【図１】図１は、２つのＭＡＣユニットと１つのＡＬＵを有するＤＳＰを示す。
【図２】図２は２つのＭＡＣユニットと１つのＡＬＵとを有するパイプライン型のＤＳＰを示す。
【図３】図３は２つのＭＡＣユニットと２つのＡＬＵｓを有した設定可能なＤＳＰを示す。
【図４】図４は、２つのＭＡＣユニットと２つのＡＬＵｓを有した設定可能なパイプライン型のＤＳＰを示す。
【図５】図５は２つのＭＡＣユニットと２つのＡＬＵｓを有した他の設定可能なパイプライン型のＤＳＰを示す。
【図６】図６は、デュアルＭＡＣ／シングルＡＬＵ構成において動作する図５のＤＳＰを示す。
【図７】図７は、シングルＭＡＣ／デュアルＡＬＵ構成において動作する図５のＤＳＰを示す。
【図８】図８は、デュアルＭＡＣ／デュアルＡＬＵ構成において動作する図５のＤＳＰを示す。
【図９】図９は無線通信システム中でワイヤレスデバイスを示す。
【図１】
2007526723.tif 000004
【図２】
2007526723.tif 000005
【図３】
2007526723.tif 000006
【図４】
2007526723.tif 000007
【図５】
2007526723.tif 000008
【図６】
2007526723.tif 000009
【図７】
2007526723.tif 000010
【図８】
2007526723.tif 000011
【図９】
2007526723.tif 000012
【国際調査報告】
2007526723.tif 000013
2007526723.tif 000014