(57)【要約】プロセッサは、複数のアクセラレータ・ユニットと複素数計算ユニットを備える。複数のアクセラレータ・ユニットの各々は一つ以上の専用機能を実行しうる。プロセッサ・コアは整数命令を実行可能な整数実行ユニットを含む。複素数計算ユニットは複素数計算論理ユニット実行パイプラインを含み得、実行パイプラインは一つ以上のデータパス及びベクトル・ロード・ユニットを含みうる。各々のデータパスは短い複素乗算器／アキュムレータ・ユニットを含み得、複素乗算器／アキュムレータ・ユニットは複素データ値に、｛０，＋／−１｝＋｛０，＋／−ｉ｝を含む数の集合に含まれる値を乗算するように構成しうる。ベクトル・ロード・ユニットによって複素データアイテムを各々のクロック・サイクルでフェッチでき、複素データアイテムが複素数計算論理ユニット実行パイプラインのいずれかのデータパスにおいて使用される。
2009505214.tif 000002
【特許請求の範囲】
【請求項１】
デジタル信号プロセッサであって、前記プロセッサは、
各々のアクセラレータ・ユニットが一つ以上の専用機能を実行するように構成される複数のアクセラレータ・ユニットと；そして
複数のアクセラレータ・ユニットに接続されるプロセッサ・コアと
を備え、
プロセッサ・コアは整数命令を実行するように構成される整数実行ユニットを含み；そして前記プロセッサは更に、
複数のアクセラレータ・ユニットに接続される複素数計算ユニットを備え、複素数計算ユニットは複素数計算論理ユニット実行パイプラインを含み、前記実行パイプラインは：
一つ以上のデータパスを含み、各々のデータパスは、前記データパスにおいて複素ベクトル命令が実行されるように構成され、そして各々のデータパスは短い複素乗算器／アキュムレータ・ユニットを含み、複素乗算器／アキュムレータ・ユニットは複素データ値に、｛０，＋／−１｝＋｛０，＋／−ｉ｝を含む数の集合に含まれる値を乗算するように構成され；そして前記実行パイプラインは更に、
短い各々の複素乗算器／アキュムレータ・ユニットに接続されベクトル・ロード・ユニットを含み、ベクトル・ロード・ユニットは、ベクトル・ロード・ユニットによって複素データアイテムが各々のクロック・サイクルでフェッチされて、複素数計算論理ユニット実行パイプラインのいずれかのデータパスにおいて使用されるように構成される、
デジタル信号プロセッサ。
【請求項２】
短い各々の複素乗算器／アキュムレータ・ユニットは、複素データ値に、｛０，＋／−１｝＋｛０，＋／−ｉ｝を含む数の集合に含まれる値を乗算器を用いずに、２つの共役計算を行なうことによって乗算するように構成される、請求項１記載のプロセッサ。
【請求項３】
ベクトル・ロード・ユニットはストレージを含み、ストレージは、前のクロック・サイクルの間に行なわれるフェッチ処理で取得したデータを保存して、データが複素数計算論理ユニット実行パイプラインのいずれかのデータパスにおいて次のクロック・サイクルの間に使用されるように構成される、請求項１記載のプロセッサ。
【請求項４】
複素数計算論理ユニット実行パイプラインは更に、ベクトル・コントローラ・ユニットを含み、ベクトル・コントローラ・ユニットはベクトル・ロード・ユニットに接続され、かつ複素数計算論理ユニット実行パイプラインの複数のデータパスのうちのいずれかのデータパスにおけるベクトル演算の読込順及び保存順を管理するように構成される、請求項１記載のプロセッサ。
【請求項５】
短い各々の複素乗算器／アキュムレータデータパスは、前記データパスにおいて全てのデータを、実部及び虚部を有する複素数値データとしてネイティブに解釈するように構成される、請求項１記載のプロセッサ。
【請求項６】
複素ベクトル命令は、実部及び虚部を有する複素数値データに対して実行される、請求項１記載のプロセッサ。
【請求項７】
複素数計算ユニットは、シングル・インストラクション・マルチデータ（ｓｉｎｇｌｅ
ｉｎｓｔｒｕｃｔｉｏｎ  ｍｕｌｔｉｐｌｅ  ｄａｔａ：ＳＩＭＤ）命令を実行するように構成される、請求項１記載のプロセッサ。
【請求項８】
複素数計算論理ユニット実行パイプラインの内部の各々のデータパスは、前記データパスにおいてベクトル命令の一部分である単一の複素数演算をクロック・サイクルごとに実
行するように構成される、請求項１記載のプロセッサ。
【請求項９】
整数実行ユニットは単一の命令をクロック・サイクルごとに、複素数計算論理ユニット実行パイプラインの内部の複数のデータパスのうちのいずれかのデータパスにおいて実行されるいずれかの複素ベクトル命令の実行と同時に実行するように構成される、請求項８記載のプロセッサ。
【請求項１０】
一つ以上の専用機能のうちの所定の該当する機能は、異なる無線通信標準規格に対応するベースバンド信号処理に関連付けられる、請求項１記載のプロセッサ。
【請求項１１】
更に複数のメモリ・ユニットを備え、複数のメモリ・ユニットの各々、複数のアクセラレータ・ユニットの少なくとも一部分、プロセッサ・コア、及び複素数計算ユニットは単一の集積回路上に形成される、請求項１記載のプロセッサ。
【請求項１２】
更にネットワークを備え、ネットワークは、複数のメモリ・ユニット、複数のアクセラレータ・ユニット、プロセッサ・コア、及び複素数計算ユニットの間の接続を可能にするように構成される、請求項１１記載のプロセッサ。
【請求項１３】
特定の整数命令が実行されると、ネットワークは、複数のメモリ・ユニットのうちの所定のメモリ・ユニットを、複数のアクセラレータ・ユニットのうちの一つ以上のアクセラレータ・ユニットに接続するように構成される、請求項１２記載のプロセッサ。
【請求項１４】
複数のアクセラレータ・ユニットのうちの少なくとも幾つかのアクセラレータ・ユニットは、ベースバンド信号処理に関連付けられる専用機能の構成可能なハードウェア形態である、請求項１記載のプロセッサ。
【請求項１５】
マルチモード無線通信デバイスであって、前記無線通信デバイスは、
無線周波数信号を送信し、そして受信するように構成される無線周波数フロントエンド・ユニットと；
無線周波数フロントエンド・ユニットに接続されるプログラマブル・デジタル信号プロセッサと
を備え、前記プログラマブル・デジタル信号プロセッサは：
各々のアクセラレータ・ユニットがベースバンド信号処理に関連付けられる一つ以上の専用機能を実行するように構成される複数のアクセラレータ・ユニットと；
整数命令を実行するように構成される整数実行ユニットを含むプロセッサ・コアと；そして
複数のアクセラレータ・ユニットに接続される複素数計算ユニットと
を含み、複素数計算ユニットは複素数計算論理ユニット実行パイプラインを含み、実行パイプラインは：
一つ以上のデータパスを含み、各々のデータパスは、前記データパスにおいて複素ベクトル命令を実行するように構成され、そして各々のデータパスは短い複素乗算器／アキュムレータ・ユニットを含み、複素乗算器／アキュムレータ・ユニットは複素データ値に、｛０，＋／−１｝＋｛０，＋／−ｉ｝を含む数の集合に含まれる値を乗算するように構成され；そして前記実行パイプラインは更に、
短い各々の複素乗算器／アキュムレータ・ユニットに接続されるベクトル・ロード・ユニットを含み、ベクトル・ロード・ユニットは、ベクトル・ロード・ユニットによって複素データアイテムが各々のクロック・サイクルでフェッチされて、複素数計算論理ユニット実行パイプラインのいずれかのデータパスにおいて使用されるように構成される、
マルチモード無線通信デバイス。
【請求項１６】
短い各々の複素乗算器／アキュムレータ・ユニットは、複素データ値に、｛０，＋／−１｝＋｛０，＋／−ｉ｝を含む数の集合に含まれる値を乗算器を用いることなく、２つの共役計算を行なうことによって乗算するように構成される、請求項１５記載の無線通信デバイス。
【請求項１７】
ベクトル・ロード・ユニットはストレージを含み、ストレージは、前のクロック・サイクルの間に行なわれるフェッチ処理で取得したデータを保存して、データが複素数計算論理ユニット実行パイプラインのいずれかのデータパスにおいて次のクロック・サイクルの間に使用されるように構成される、請求項１５記載の無線通信デバイス。
【請求項１８】
複素数計算論理ユニット実行パイプラインは、更にベクトル・コントローラ・ユニットを含み、ベクトル・コントローラ・ユニットはベクトル・ロード・ユニットに接続され、かつ複素数計算論理ユニット実行パイプラインの複数のデータパスのうちのいずれかのデータパスにおけるベクトル演算の読込順及び保存順を管理するように構成される、請求項１５記載の無線通信デバイス。
【請求項１９】
短い各々の複素乗算器／アキュムレータデータパスは、前記データパスにおいて全てのデータを、実部及び虚部を有する複素数値データとしてネイティブに解釈するように構成される、請求項１５記載の無線通信デバイス。
【請求項２０】
複素ベクトル命令は、実部及び虚部を有する複素数値データに対して実行される、請求項１５記載の無線通信デバイス。
【請求項２１】
複素数計算ユニットは、シングル・インストラクション・マルチデータ（ｓｉｎｇｌｅ
ｉｎｓｔｒｕｃｔｉｏｎ  ｍｕｌｔｉｐｌｅ  ｄａｔａ：ＳＩＭＤ）命令を実行するように構成される、請求項１５記載の無線通信デバイス。
【請求項２２】
複素数計算論理ユニット実行パイプラインの内部の各々のデータパスは、前記データパスにおいてベクトル命令の一部分である単一の複素数演算をクロック・サイクルごとに実行するように構成される、請求項１５記載の無線通信デバイス。
【請求項２３】
整数実行ユニットは、単一の命令をクロック・サイクルごとに、複素数計算論理ユニット実行パイプラインの内部の複数のデータパスのうちのいずれかのデータパスにおいて実行されるいずれかの複素ベクトル命令の実行と同時に実行するように構成される、請求項２２記載の無線通信デバイス。
【請求項２４】
一つ以上の専用機能のうちの所定の該当する機能は、異なる無線通信標準規格に関連付けられる、請求項１５記載の無線通信デバイス。
【請求項２５】
更に複数のメモリ・ユニットを備え、複数のメモリ・ユニット、複数のアクセラレータ・ユニットの少なくとも一部分、プロセッサ・コア、及び複素数計算ユニットは単一の集積回路上に形成される、請求項１５記載の無線通信デバイス。
【請求項２６】
更にネットワークを備え、ネットワークは、複数のメモリ・ユニット、複数のアクセラレータ・ユニット、プロセッサ・コア、及び複素数計算ユニットの間の接続を可能にするように構成される、請求項２５記載の無線通信デバイス。
【請求項２７】
特定の整数命令が実行されると、ネットワークは、複数のメモリ・ユニットのうちの所定のメモリ・ユニットを、複数のアクセラレータ・ユニットのうちの一つ以上のアクセラレータ・ユニットに接続するように構成される、請求項２６記載の無線通信デバイス。
【請求項２８】
複数のアクセラレータ・ユニットのうちの少なくとも幾つかのアクセラレータ・ユニットは、ベースバンド信号処理に関連付けられる専用機能の構成可能なハードウェア形態である、請求項１５記載の無線通信デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデジタル信号プロセッサに関し、特にプログラマブル・デジタル信号プロセッサマイクロ・アーキテクチャに関する。
【背景技術】
【０００２】
非常に短期間の内に、無線デバイス、特に携帯電話機の使用が爆発的に増えている。無線デバイスのこのような全世界的な普及によって、非常に多くの無線通信標準規格が登場し、そして無線製品が溢れてきている。これによって今度は、ソフトウェア無線（ＳＤＲ）への関心が高まっている。
【０００３】
ＳＤＲはＳＤＲフォーラムで述べられているように、「無線ネットワーク及びユーザ端末の再構成可能なシステム・アーキテクチャを実現するハードウェア技術及びソフトウェア技術の集合体である。ＳＤＲは、ソフトウェアのアップグレードを利用して高性能化することができるマルチモード、マルチバンド、マルチ機能無線デバイスを実現する際の問題の効率的で、非常に低コストのソリューションを提供する。従って、ＳＤＲは、無線業界の広範囲の領域に渡って適用することができる要素技術と考えることができる。」
多くの無線通信デバイスは無線トランシーバを使用し、無線トランシーバは一つ以上のデジタル信号プロセッサ（ＤＳＰ）を含む。無線に使用される一のタイプのＤＳＰがベースバンドプロセッサ（ｂａｓｅｂａｎｄ  ｐｒｏｃｅｓｓｏｒ：ＢＢＰ）であり、ベースバンドプロセッサは、信号処理無線信号及び準備信号の多くを処理して送信することができる。例えば、ＢＢＰは変調及び復調だけでなく、チャネル符号化及び同期化機能を提供することができる。
【０００４】
多くの従来のＢＢＰは特定用途向け集積回路（ＡＳＩＣ）デバイスとして実装され、ＡＳＩＣデバイスは単一の無線通信標準規格をサポートする。多くの場合、ＡＳＩＣ  ＢＢＰは極めて優れた性能を提供する。しかしながら、ＡＳＩＣソリューションは、オンチップハードウェアが設計されたときに用いられる無線通信標準規格に準拠した動作に限定される。
【０００５】
ＳＤＲソリューションを提供するためには、無線ベースバンドプロセッサのフレキシビリティを高めて市場に出す時期、コスト、及び製品寿命に対する要件を満たす必要がある。無線ローカルエリア・ネットワーク（ＬＡＮ）、第３／第４世代携帯電話技術、及びデジタルビデオ放送のような性能要求の厳しいアプリケーションの要件を満たすためには、極めて高い並列処理能力がベースバンドプロセッサに必要となる。
【０００６】
この目的を達成するために、種々のプログラマブルＢＢＰ（ＰＢＢＰ）ソリューションが提案されており、これらのソリューションは通常、非常に複雑で非常に長い命令ワード（ｖｅｒｙ  ｌｏｎｇ  ｉｎｓｔｒｕｃｔｉｏｎ  ｗｏｒｄ：ＶＬＩＷ）、及び／又は複数のプロセッサ・コアマシンを利用する。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
これらの従来のＰＢＢＰソリューションは、これらのソリューションに対抗するＡＳＩＣソリューションと比較すると、チップ面積が大きくなる、性能が下がる可能性があるといった不具合を有する。従って、非常に多くの異なる変調技術、帯域要件及びモビリティ要件をサポートし、かつ許容可能な面積及び消費電力も有するプログラマブルＤＳＰアー
キテクチャを実現することが望ましい。
【課題を解決するための手段】
【０００８】
クラスタードＳＩＭＤマイクロ・アーキテクチャを含むプログラマブル・デジタル信号プロセッサの種々の実施形態を開示する。一の実施形態では、デジタル信号プロセッサは複数のアクセラレータ・ユニットと、プロセッサ・コアと、そして複素数計算ユニットと、を含む。これらのアクセラレータ・ユニットの各々は、一つ以上の専用機能を実行するように構成することができる。プロセッサ・コアは整数実行ユニットを含み、整数実行ユニットは整数命令を実行するように構成することができる。複素数計算ユニットは複素ベクトル命令を実行するように構成することができる。複素数計算ユニットは第１及び第２クラスタード実行パイプラインを含むことができる。第１クラスタード実行パイプラインは、第１複素ベクトル命令を実行するように構成される一つ以上の複素数計算論理ユニット・データパスを含むことができる。第２クラスタード実行パイプラインは、第２複素ベクトル命令を実行するように構成される一つ以上の複素乗算器／アキュムレータデータパスを含むことができる。
【０００９】
一の特定の実施形態においては、これらのクラスタード実行パイプラインの内部の各々のデータパスでは、全てのデータを複素数値データとしてネイティブに解釈するように構成することができる。
【００１０】
別の特定の実施形態においては、所定のクラスタード実行パイプラインの内部の各々のデータパスでは、ベクトル命令の一部分である単一の複素数演算をクロック・サイクルごとに実行することができる。更に、整数実行ユニットは単一の命令をクロック・サイクルごとに、第１及び第２クラスタード実行パイプラインの内部の複数のデータパスのうちのいずれかのデータパスにおいて実行されるいずれかの複素ベクトル命令の実行と同時に実行することができる。
【００１１】
更に別の特定の実施形態では、複素数計算ユニットはシングル・インストラクション・マルチデータ（ＳＩＭＤ）命令を実行することができる。
【発明を実施するための最良の形態】
【００１２】
次に、図１を参照すると、プログラマブル・ベースバンド・プロセッサを含むマルチモード無線通信デバイスの一の実施形態のブロック図が示される。図示の実施形態では、無線通信システムを機能及びハードウェアの両方の観点から区分して得られる基本パーティションの幾つかが示される。更に詳細には、マルチモード無線通信デバイス１００は受信サブシステム１１０及び送信サブシステム１２０を含み、これらのサブシステムの各々は一つ以上のアンテナ（群）１２５に接続される。ここで、種々の実施形態では、マルチモード無線通信デバイスは携帯電話などとすることができることに留意されたい。更に、数字及び文字の両方を含む参照記号を有する構成要素は必要に応じて数字によってのみ指示されることに留意されたい。
【００１３】
受信サブシステム１１０はＲＦフロントエンド１３０の内、アンテナ１２５とアナログ−デジタル変換器（ＡＤＣ）１４０との間に接続される部分を含む。ＡＤＣ１４０はプログラマブル・ベースバンド・プロセッサ（ＰＢＢＰ）１４５Ａに接続され、今度はこのプログラマブル・ベースバンド・プロセッサがアプリケーションプロセッサ（群）１５０に接続される。送信サブシステム１２０は、ＰＢＢＰ  １４５Ｂに接続されるアプリケーションプロセッサ（群）１６０を含み、ＰＢＢＰ  １４５Ｂはデジタル−アナログ変換器（ＤＡＣ）１７０に接続される。ＤＡＣ  １７０はＲＦフロントエンド１３０の一部分にも接続される。ここで、ＰＢＢＰ  １４５Ａ及び１４５Ｂは一つのプログラマブルプロセッサとして実装することができ、そして或る実施形態では、これらのＰＢＢＰは単一の集積
回路上に形成することができることに留意されたい。更に、或る実施形態では、ＡＤＣ  １４０及びＤＡＣ  １７０はＰＢＢＰ  １４５Ａの一部分として実装することができることに留意されたい。更に、他の実施形態では、通信デバイス１００は単一の集積回路上に形成することができることに留意されたい。
【００１４】
ＰＢＢＰ  １４５は多くの機能を送信サブシステム１２０及び受信サブシステム１１０の両方において実行する。送信サブシステム１２０内では、ＰＢＢＰ  １４５Ｂは、アプリケーションソースからのデータを無線チャネルに適合させたフォーマットに変換することができる。例えば、送信サブシステム１２０は、チャネル符号化、デジタル変調、及びシンボル整形のような機能を実行することができる。チャネル符号化とは、異なる方法を使用してエラー訂正（例えば、畳み込み符号化）及びエラー検出（例えば、巡回冗長符号（ＣＲＣ）を使用して）を行なう処理を指す。デジタル変調とは、ビットストリームを複素サンプルストリームにマッピングするプロセスを指す。デジタル変調における最初の（及び、或る場合には、唯一の）ステップでは、ビットグループ群を特定の信号コンスタレーションにマッピングし、デジタル変調として、２相位相変調（ＢＰＳＫ）、直交位相変調（ＱＰＳＫ）、または直交振幅変調（ＱＡＭ）を挙げることができる。ビットグループ群を無線信号の振幅及び位相にマッピングする方法には種々の方法がある。或る場合では、第２ステップ、すなわちドメイン変換を適用することができる。直交周波数分割多重（ＯＦＤＭ）システム（すなわち、情報を非常に多くの隣接周波数で同時に送信する変調方法）では、逆高速フーリェ変換（ＩＦＦＴ）をこのステップに使用することができる。符号分割多重接続（ＣＤＭＡ）のような拡散スペクトルシステムでは、例えば（ＲＦスペクトルの複数のユーザによる共有を、各々のアクティブユーザに個々の「符号」を割り当てることによって可能にする「拡散スペクトル」方式）各々のシンボルに｛０，＋／−１｝＋｛０，＋／−ｉ｝を含む拡散系列を乗算する。最後のステップはシンボル整形であり、シンボル整形では、方形波を帯域制限信号にデジタルバンドパスフィルタを使用して変換する。チャネル符号化機能及びマッピング機能は通常、ビットレベルで行なわれる（かつ、ワードレベルでは行なわれない）ので、これらの機能は普通、プログラマブルプロセッサへの実装には適さない。しかしながら、以下に更に詳細に説明するように、ＰＢＢＰ  １４５の種々の実施形態では、これらの機能、及び他の機能は一つ以上の専用ハードウェア・アクセラレータを使用して実装することができる。
【００１５】
ＰＢＢＰ  １４５は、同期化、チャネル等化、復調、及び順方向エラー訂正のような機能を実行することができる。例えば、受信サブシステム１１０はシンボルを、歪んだアナログベースバンド信号から取り出し、そしてこれらのシンボルを、アプリケーションプロセッサ（群）１５０で実行されるアプリケーションに許容できるビットエラー率（ＢＥＲ）を持つビットストリームに変換することができる。
【００１６】
同期化は幾つかのステップに分割して行なうことができる。第１ステップでは、着信信号または着信フレームを検出することができ、このステップは「エネルギー検出（ｅｎｅｒｇｙ  ｄｅｔｅｃｔｉｏｎ）」と表記されることがある。このステップに関連して、アンテナ選択及びゲインコントロールのような処理も実行することができる。次のステップはシンボル同期化であり、シンボル同期化は、着信シンボルの正確なタイミングを検出することを目的とする。先行する処理の全ては通常、複素自動相関（ｃｏｍｐｌｅｘ  ａｕｔｏ−ｃｏｒｒｅｌａｔｉｏｎ）及び複素相互相関（ｃｏｍｐｌｅｘ  ｃｒｏｓｓ−ｃｏｒｒｅｌａｔｉｏｎ）を利用する。
【００１７】
多くの場合において、受信サブシステム１１０が無線チャネルの不完全性を補償するために或る種類の補償を実行することが必要になる。この補償はチャネル等化として知られる。ＯＦＤＭシステムにおいては、チャネル等化では、ＦＦＴを行なった後に、各々のサブキャリアの簡単なスケーリング及び回転を行なう。ＣＤＭＡシステムでは、多くの場合
「ｒａｋｅ（レイク）」受信機を使用して複数の信号経路からの着信信号を異なる経路からの遅延波と合成する。或るシステムでは、最小２乗（ＬＭＳ）適応フィルタを使用することができる。同期化と同じように、チャネル推定及び等化において行なわれるほとんどの処理は、畳み込みで実現するアルゴリズムを用いることができる。これらのアルゴリズムは普通、同じ固定ハードウェアを共有するための十分な類似性を持たない。しかしながら、これらのアルゴリズムはＰＢＢＰ  １４５のようなプログラマブルＤＳＰプロセッサに効率的に実装することができる。
【００１８】
復調は変調の逆の処理と考えることができる。復調では通常、ＦＦＴをＯＦＤＭシステムにおいて行ない、そして拡散系列との相関、または「逆拡散」をＤＳＳＳ／ＣＤＭＡシステムにおいて行なう。復調の最後のステップでは、複素シンボルをビット群に信号コンスタレーションに従って変換することができる。チャネル符号化と同じように、デインターリーブ及びチャネル符号化はファームウェア実装には適さない。しかしながら、以下に更に詳細に説明するように、畳み込み符号に使用することができるビタビ（Ｖｉｔｅｒｂｉ）復号化またはターボ（Ｔｕｒｂｏ）復号化は非常に高い性能を要求する用途に必要な機能であり、これらの機能は一つ以上のハードウェア・アクセラレータとして実装することができる。
【００１９】
（プログラマブル・ベースバンド・プロセッサ・アーキテクチャ）
図２は、図１のプログラマブル・ベースバンド・プロセッサの一の実施形態のブロック図を示している。ＰＢＢＰ  １４５は、処理の複数のモード（すなわち、プリアンブル受信、ペイロード受信、及び送信）に関する異なる無線通信標準規格、及び異なるデータレートを、動的な再構成を可能にすることによってサポートすることができる。所望の再構成可能性を実現するために、ＰＢＢＰ  １４５の種々の実施形態は中央プロセッサ・コアを組み込むことができ、中央プロセッサ・コアはＤＳＰフローを、プロセッサ・コア、複数のメモリ・ユニット、及び種々のハードウェア・アクセラレータの間の相互接続を、内部ネットワークを使用して制御することによって管理する。
【００２０】
図２を参照すると、ＰＢＢＰ  １４５はプロセッサ・コア１４６及び複素数計算ユニット２９０を含む。ＰＢＢＰ  １４５は更に、０〜ｎで示す複数のデータメモリ・ユニットを含み、この場合のｎはいずれかの番号とすることができる。ＰＢＢＰ  １４５は更に、０〜ｍで示す複数のハードウェア・アクセラレータを含み、この場合のｍはいずれかの番号とすることができる。更に、ＰＢＢＰ  １４５は、プロセッサ・コア１４６及び複素数計算ユニット２９０と、データメモリ及びアクセラレータの各々との間に接続されるネットワーク相互接続２５０を含む。更に、ＰＢＢＰ  １４５は、２２０及び２１５でそれぞれ示す整数メモリ・ユニット及び係数メモリ・ユニットを含み、これらのユニットの各々は、プロセッサ・コア１４６及び複素数計算ユニット２９０にネットワーク相互接続２５０によって接続される。最後に、ＰＢＢＰ  １４５はメディアアクセス層（ｍｅｄｉｕｍ
ａｃｃｅｓｓ  ｌａｙｅｒ：ＭＡＣ）インターフェースユニット２２５を含み、ＭＡＣインターフェースユニットはネットワーク相互接続２５０と、例えばアプリケーションプロセッサ１５０及び１６０のようなＨｏｓｔ／ＭＡＣプロセッサとの間に接続される。
【００２１】
図示の実施形態では、プロセッサ・コア１４６は整数実行ユニット２６０を含み、整数実行ユニットは制御レジスタＣＲ  ２６５に、そしてネットワーク相互接続２５０に接続される。整数実行ユニット２６０はＡＬＵ  ２６１と、乗算器／アキュムレータ・ユニット２６２と、そしてレジスタファイル（ＲＦ）セット２６３と、を含む。一の実施形態では、整数実行ユニット２６０は縮小命令セットコントローラ（ＲＩＳＣ）として機能することができ、縮小命令セットコントローラは、例えば１６ビット整数命令を実行するように構成される。ここで、他の実施形態では、整数実行ユニット２６０は、例えば８ビット命令または３２ビット命令のような、異なるビット長の整数命令を実行するように構成す
ることができることに留意されたい。
【００２２】
種々の実施形態では、複素数計算ユニット２９０は、複数のクラスタードシングル・インストラクション・マルチデータ（ｓｉｎｇｌｅ−ｉｎｓｔｒｕｃｔｉｏｎ  ｍｕｌｔｉｐｌｅ  ｄａｔａ：ＳＩＭＤ：１つの命令で複数のデータを扱う処理方式）実行パイプラインを含むことができる。従って、図２に示す実施形態では、複素数計算ユニット２９０は、ＳＩＭＤクラスタ・パイプライン２９５Ａ及びＳＩＭＤクラスタ・パイプライン２９５Ｂを含む。ＳＩＭＤクラスタ・パイプライン２９５Ａは複素乗算器／アキュムレータ（ｃｏｍｐｌｅｘ  ｍｕｌｔｉｐｌｉｅｒ  ａｃｃｕｍｕｌａｔｏｒ：ＣＭＡＣ）ユニット２７０、及びＣＭＡＣ２７０に接続されるベクトルコントローラ２７５Ａを含む。更に、ＳＩＭＤクラスタ・パイプライン２９５Ａはベクトル・ロード・ユニット（ｖｅｃｔｏｒ
ｌｏａｄ  ｕｎｉｔ：ＶＬＵ）２８４Ａ、及びベクトル・ストア・ユニット（ｖｅｃｔｏｒ  ｓｔｏｒｅ  ｕｎｉｔ：ＶＳＵ）２８３Ａを含み、これらのユニットの各々はＣＭＡＣ２７０に接続される。ＳＩＭＤクラスタ・パイプライン２９５Ｂは、ベクトルコントローラ２７５Ｂに接続される複素数計算論理ユニット（ｃｏｍｐｌｅｘ  ａｒｉｔｈｍｅｔｉｃ  ｌｏｇｉｃ  ｕｎｉｔ：ＣＡＬＵ）２８０を含む。ＳＩＭＤクラスタ・パイプライン２９５Ｂは更に、ＶＳＵ  ２８３Ｂ及びＶＬＵ  ２８４Ｂを含み、これらのユニットの各々はＣＡＬＵ  ２８０に接続される。
【００２３】
図示の実施形態では、ＣＡＬＵ  ２８０は４ウェイ複素ＡＬＵとして示され、４ウェイ複素ＡＬＵは４つの独立データパスを含むことができ、各々のデータパスは短い複素乗算器／アキュムレータ（ＣＳＭＡＣ）（図４に示すように）を有する。以下に更に詳細に説明するように、ＣＡＬＵ  ２８０はベクトル命令を実行することができる。一の実施形態では、ＣＡＬＵ  ２８０は複素ベクトル命令を実行するように特に適合させることができる。更に、ＣＡＬＵ  ２８０の独立データパスの各々では、複素ベクトル命令を同時に実行することができる。
【００２４】
ＣＭＡＣ  ２７０は複素数ベクトルに対する演算に最適化することができる。すなわち、一の実施形態では、ＣＭＡＣ  ２７０は、全てのデータを複素データとして解釈するように構成することができる。更に、ＣＭＡＣ  ２７０は、同時に、または別々に実行することができる複数のデータパスを含むことができる。一の実施形態では、ＣＭＡＣ  ２７０は４つの複素データパスを含むことができ、これらのデータパスは、乗算器、加算器、及びアキュムレータ・レジスタ（これらの全てが図２には示されない）を含む。従って、ＣＭＡＣ  ２７０は４ウェイＣＭＡＣデータパスと表記することができる。乗算処理及び加算処理の他に、ＣＭＡＣ  ２７０は丸め処理、及びスケーリング処理を行ない、更に飽和をサポートすることもできる。一の実施形態では、ＣＭＡＣ  ２７０による演算は、複数のパイプラインステップに分割することができる。更に、４つの複素データパスの各々では、複素乗算及び複素累積を１クロック・サイクルで計算することができる。ＣＭＡＣ
２７０（すなわち、４つのデータパスを一括した要素）は、Ｎ−要素ベクトルに対する演算をＮ／４クロック・サイクルで実行して、複素ベクトル計算をサポートすることができる（例えば、複素畳み込み、共役複素畳み込み、及び複素ベクトルの内積）。更に、ＣＭＡＣ  ２７０はアキュムレータ・レジスタに保存される複素数値に対する演算（例えば、複素加算、複素減算、複素共役など）をサポートすることもできる。例えば、ＣＭＡＣ
２７０は（ＡＲ＋ｊＡＩ）＊（ＢＲ＋ｊＢＩ）のような複素乗算を１クロック・サイクルで、そして複素累積を１クロック・サイクルで計算し、更に複素ベクトル計算（例えば、複素畳み込み、共役複素畳み込み、及び複素ベクトル内積）をサポートすることができる。
【００２５】
一の実施形態では、上に説明したように、ＰＢＢＰ  １４５は複数のクラスタードＳＩＭＤ実行パイプラインを含むことができる。更に詳細には、上に説明した複数のデータパ
スは一括して複数のＳＩＭＤクラスタにグループ化することができ、この場合、各々のクラスタは、或るクラスタ内の全てのデータパスで単一命令を複数のデータに対して各々のクロック・サイクルで実行している間に異なるタスクを実行することができる。詳細には、４ウェイＣＡＬＵ  ２８０及び４ウェイＣＭＡＣ  ２７０は個別のＳＩＭＤクラスタとして機能することができ、この場合、ＣＡＬＵ  ２８０は、４つの異なる符号の４つの相関を並列に算出する、または４つの異なる符号を並列に逆拡散するような４つのパラレル演算を実行し、ＣＭＡＣ  ２７０は、例えば２つの基数−２ＦＦＴバタフライ演算を並列に処理する、または１つの基数−４ＦＦＴバタフライ演算を処理する。ここで、ＣＡＬＵ
２８０及びＣＭＡＣ  ２７０を４ウェイ・ユニットとして示しているが、他の実施形態では、ＣＡＬＵ  ２８０及びＣＭＡＣ  ２７０はそれぞれ、どのような数のユニットも含むことができるようにすることが考えられることに留意されたい。従って、このような実施形態では、ＰＢＢＰ  １４５は必要に応じてどのような数のＳＩＭＤクラスタも含むことができる。クラスタードＳＩＭＤ処理の制御パスについて、図５について説明しながら以下に詳細に説明する。
【００２６】
（命令セットアーキテクチャ）
一の実施形態では、プロセッサ・コア１４６の命令セットアーキテクチャは、３クラスの複合命令を含むことができる。第１クラスの命令はＲＩＳＣ命令であり、ＲＩＳＣ命令で１６ビット整数オペランドを処理する。ＲＩＳＣ命令クラスは制御指向命令のほとんどを含み、かつプロセッサ・コア１４６の整数実行ユニット２６０内で実行することができる。次のクラスの命令はＤＳＰ命令であり、ＤＳＰ命令で実部及び虚部を有する複素数値データを処理する。ＤＳＰ命令は複数のＳＩＭＤクラスタの一つ以上のクラスタで実行することができる。第３クラスの命令はベクトル命令である。ベクトル命令はＤＳＰ命令の拡張版と考えることができる、というのは、ベクトル命令で大規模データセットを処理し、かつベクトル命令は最先端のアドレス指定モード及びベクトルサポートを利用することができるからである。ベクトル命令のリスト例を下の表１に示す。ほとんど例外はないが、そして上に述べたように、ベクトル命令で複素データタイプを処理する。
【００２７】
【表１】
2009505214.tif 000003
2009505214.tif 000004
【００２８】
図５に関する説明を参照しながら以下に詳細に記載されるように、命令フォーマットは種々のフィールドを含むことができ、いずれのフィールドを含むかは、命令のクラスによって変わる。例えば、一の実施形態では、ＲＩＳＣ命令はユニット・フィールド、ｏｐｃｏｄｅフィールド、及び引数フィールドを含むことができ、そしてベクトル命令は更にベクトルサイズフィールドを含むことができる。
【００２９】
多くのベースバンド受信アルゴリズムは、タスク間の後方依存関係がほとんどない複数のタスクチェーンに分解することができる。この特性によって、異なるタスクをＳＩＭＤ実行ユニット上で並列に実行することができるだけでなく、この特性を、上記命令セットアーキテクチャを使用して利用することもできる。ベクトル演算は通常、大規模ベクトルに対して行なわれるので、一つの命令をクロック・サイクルごとに発行して、制御パスの複雑さを低減することができる。更に、ベクトルＳＩＭＤ命令は長いベクトルに対して実行されるので、多くのＲＩＳＣ命令はベクトル演算の間に実行することができる。従って、一の実施形態では、プロセッサ・コア１４６は、クロック・サイクルごとに単一の命令を出すマシン（ＳＩＭＴ）とすることができ、そして複数のＳＩＭＤクラスタの各々のＳＩＭＤクラスタ、及び整数実行ユニットは命令を各々のクロック・サイクルでパイプライン状に実行することができる。従って、ＰＢＢＰ  １４５は２つのスレッドを並列に実行するものとして考えることができる。第１スレッドはプログラムフローを含み、そして種々の処理を、整数実行ユニット２６０を使用して行なう。第２スレッドは、ＳＩＭＤクラスタで実行される複素ベクトル命令を持つ。図３は、図２のプログラマブル・ベースバンド・プロセッサの一の実施形態の命令実行パイプラインを示している。図２及び図３を一緒に参照すると、図３の左列は時間を（実行クロック・サイクル単位で）表わす。残りの列は、複素ＳＩＭＤクラスタの実行パイプライン（例えば、ＣＭＡＣ  ２７０及びＣＡＬＵ  ２８０の一つのデータパス）、及び整数実行ユニット２６０、更にはこれらのユニットに対して発行される命令を表わす。更に詳細には、第１クロック・サイクルでは、複素ベクトル命令（例えば、ＣＶＬ．２５６）がＣＭＡＣ  ２７０に対して発行される。図示のように、ベクトル命令は完了するのに多くのサイクルを要する。次のクロック・サイク
ルでは、ベクトル命令がＣＡＬＵ  ２８０に対して発行される。次のクロック・サイクルでは、整数命令が整数実行ユニット２６０に対して発行される。次の幾つかのサイクルでは、ベクトル命令が実行されている間に、いずれかの個数の整数命令を整数実行ユニット２６０に対して発行することができる。ここで、図示しないが、残りのＳＩＭＤクラスタでも命令を同様な態様で同時に実行していることに留意されたい。
【００３０】
ここで、一の実施形態では、制御フロー同期を実現し、かつデータフローを制御するために、「アイドル（ｉｄｌｅ）」命令を使用して、制御フローを所定のベクトル演算が完了するまで中断することができることに注目されたい。例えば、所定のベクトル命令を該当するＳＩＭＤ実行ユニットによって実行することによって、「アイドル」命令を整数実行ユニット２６０によって実行することができる。「アイドル」命令によって整数実行ユニット２６０を、例えばフラグのような表示を該当するＳＩＭＤ実行ユニットから整数実行ユニット２６０が受信するまで休止させることができる。
【００３１】
（ハードウェア・アクセラレータ）
上に説明したように、広い範囲の無線通信標準規格に準拠したマルチモードサポートを提供するために、多くのベースバンド機能を、プログラマブル・コアと組み合わせて使用される専用ハードウェア・アクセラレータによって提供することができる。例えば、一の実施形態では、次の機能：デシメータ／フィルタ、ＣＤＭＡ及びＤＳＳＳ変調方式に使用されるＲＡＫＥ機能（例えば、４「フィンガ」ＲＡＫＥ）、ＯＦＤＭ変調方式及びＩＥＥＥ  ８０２．１１ｂに使用される基数−４ＦＦＴ／変更版ウォルシュ変換、ディマッパー、畳み込み／ターボエンコーダ−ビタビ／ターボデコーダ、構成可能なブロックインターリーバ、構成可能なスクランブラー、及びＣＲＣアクセラレータのうちの一つ以上の機能を図２のアクセラレータ０〜ｍを使用して実装することができる。ここで、他の実施形態では、他の個数の機能、及び他のタイプの機能をアクセラレータ０〜ｍを使用して実装することができることに留意されたい。
【００３２】
一の実施形態では、デシメータ／フィルタ・アクセラレータは、有限インパルス応答（ＦＩＲ）フィルタのような構成可能なフィルタを含むことができ、このフィルタはＩＥＥＥ  ８０２．１１ａ及び他の類似の規格のような標準規格に使用することができる。ｒａｋｅアクセラレータは、遅延パスストレージ用のローカル複素メモリと、逆拡散符号発生器と、そしてマルチパス検索及びチャネル推定機能を実行するマッチドフィルタ（全て図示せず）と、を含むことができる。基数−４ＦＦＴ／変更版ウォルシュ変換（ＦＦＴ／ＭＷＴ）アクセラレータは、基数−４バタフライ演算器（図示せず）及びフレキシブルアドレス発生器（図示せず）を含むことができる。一の実施形態では、ＦＦＴ／ＭＷＴアクセラレータは、６４−ポイントＦＦＴを５４クロック・サイクルで、そして変更版ウォルシュ変換をＩＥＥＥ  ８０２．１１ｂ規格をサポートする形で、１８クロック・サイクルで行なうことができる。畳み込み／ターボエンコーダ−ビタビデコーダアクセラレータは、再構成可能なビタビデコーダ、及びターボエンコーダ／デコーダを含むことができ、これによって畳み込み符号及びターボエラー訂正符号のサポートを行なう。一の実施形態では、畳み込み符号のデコードはビタビ・アルゴリズムによって行なうことができ、ターボ符号は、ソフト出力ビタビ・アルゴリズムを利用することによってデコードすることができる。再構成可能なブロックインターリーバアクセラレータを使用してデータの順番を並べ替えて、隣接データビットを時間軸で拡散させ、そしてＯＦＤＭの場合には、異なる周波数に拡散させる。更に、スクランブラーアクセラレータを使用してデータを疑似ランダムデータでスクランブルして、１及び０を送信データストリームに確実に均一に分布させる。ＣＲＣアクセラレータは、ＣＲＣを生成するリニアフィードバックシフトレジスタ（図示せず）または他のアルゴリズムを含むことができる。
【００３３】
（メモリ・ユニット）
プロセッサ・コア１４６のＳＩＭＤアーキテクチャを効率的に利用するためには、メモリ管理及びメモリ割り当てが重要な検討事項となる。従って、データメモリシステム・アーキテクチャは幾つかの非常に容量の小さいデータメモリ・ユニット（例えば、ＤＭ０〜ＤＭｎ）を含む。一の実施形態では、データメモリＤＭ０〜ＤＭｎを使用して複素データを処理中に保存することができる。これらのメモリの各々は、交互に書き込み及び読み出しが行なわれる構成の、いずれかの個数（例えば４個）のメモリバンクを有する形で実装することができ、この構成によって、いずれかの個数（例えば４個）の連続したアドレス（ベクトル要素）に同時にアクセスすることができる。更に、データメモリＤＭ０〜ＤＭｎの各々はアドレス生成ユニット（例えば、ＤＭ０のＡｄｄｒ．  Ｇｅｎ  ２０１）を含むことができ、このアドレス生成ユニットは、モジュロアドレス指定だけでなくＦＦＴアドレス指定を行なうように構成することができる。更に、ＤＭ０〜ＤＭｎの各々はネットワーク相互接続２５０を介して、アクセラレータ群のうちのいずれかのアクセラレータに、そしてプロセッサ・コア１４６に接続することができる。係数メモリ２１５を使用してＦＦＴ係数及びフィルタ係数、ルックアップテーブル、及びアクセラレータによって処理されない他のデータを保存することができる。整数メモリ２２０をパケットバッファとして使用することによって、ビットストリームをＭＡＣインターフェース２２５のために保存することができる。係数メモリ２１５を及び整数メモリ２２０は共にプロセッサ・コア１４６にネットワーク相互接続２５０を介して接続される。
【００３４】
（ネットワーク）
ネットワーク相互接続２５０は、データパス、メモリ、アクセラレータ、及び外部インターフェースを相互接続するように構成される。従って、一の実施形態では、ネットワーク相互接続２５０はクロスバー（ｃｒｏｓｓｂａｒ）と類似の動作を行なうことができ、クロスバーでは、接続を一の入力（書き込み）ポートから一の出力（読み出し）ポートに向けて設定することができ、そしていずれかの入力ポートをいずれかの出力ポートにＭ×Ｍ構造で接続することができる。或る実施形態では、幾つかのメモリと幾つかの計算ユニットとの間の接続は必要ではない。従って、ネットワーク相互接続２５０を最適化することによって所定の特殊構成が可能になるので、ネットワーク相互接続２５０を簡易化することができる。ネットワーク相互接続２５０のような相互接続を構築することによって、アービター及びアドレス指定ロジックが必要ではなくなるので、多くの同時通信を可能にしながらも、ネットワーク及びアクセラレータ・インターフェースの複雑さを低減することができる。ここで、一の実施形態では、ネットワーク相互接続２５０はマルチプレクサ、または例えばＡｎｄ−Ｏｒ構造のような組合せ論理構造を使用して実装することができることに注目されたい。しかしながら、他の実施形態では、ネットワーク相互接続２５０を、いずれかのタイプの物理構造を必要に応じて使用して実装することが考えられる。
【００３５】
一の実施形態では、ネットワーク相互接続２５０は２つのサブ・ネットワークとして実装することができる。第１サブ・ネットワークはサンプルごとの転送に使用し、そして第２サブ・ネットワークは、ビットごとの転送に使用されるシリアルネットワークとすることができる。２つのネットワークに分割することによってネットワークのスループットを上げることができる、というのは、２つのネットワークに分割しない場合には、ビットごとの転送には、ネットワークのデータ幅に等しくないデータチャンクをフレーミングし、そしてデフレーミングする処理を長々と行なう必要があるからである。このような実施形態では、各々のサブ・ネットワークは個別のクロスバー・スイッチとして実装することができ、クロスバー・スイッチの構成はプロセッサ・コア１４６によって行なわれる。ネットワーク相互接続２５０は更に、関連する機能を持つアクセラレータ群を互いにチェーン状に直接接続し、かつデータメモリ群に接続することができるように構成される。一の実施形態では、ネットワーク相互接続２５０によってデータをシームレスにアクセラレータ・ユニット群の間をプロセッサ・コア１４６による介入無しに流すことができるので、プロセッサ・コア１４６をネットワークにネットワーク接続の設定及び解除の間にのみ関与
させることができる。
【００３６】
上に説明したように、全てのユニット（例えば、メモリ、アクセラレータなど）を全ての他のユニットに接続する必要はなく、そしてネットワーク相互接続２５０を最適化して所定の構成のみが可能になるようにすることができる。これらの実施形態では、ネットワーク相互接続２５０は「部分的ネットワーク（ｐａｒｔｉａｌ  ｎｅｔｗｏｒｋ）」と表記することができる。データをこれらの部分的ネットワークの間で転送するために、一つ以上のデータメモリ・ユニット（例えば、ＤＭ０）の内部の幾つかのメモリブロックを両方のサブ・ネットワークに割り当てることができる。これらのメモリブロックは複数のタスクの間のピンポンバッファ（ｐｉｎｇ−ｐｏｎｇ  ｂｕｆｆｅｒｓ）として使用することができる。コストが高く付くメモリの移動は、メモリブロック群を計算要素群の間で「スワッピングする」ことによって回避することができる。この手法によって、コストが高く付くメモリの移動を行なうことなく、データを効率的に、かつ予測できる形で流すことができる。
【００３７】
図４は、図２のプログラマブル・ベースバンド・プロセッサの実施形態の別の態様を示している。ここで、図２の構成要素に対応する構成要素に同じ参照番号を付して説明を明瞭かつ簡単にしていることに留意されたい。図４の実施形態では、プロセッサ・コア１４６はプログラムコントロールユニット３１０を含み、プログラムコントロールユニット３１０は整数実行ユニット２６０に接続される。上に説明したように、整数実行ユニット２６０はＡＬＵ  ２６１と、個別の乗算器／アキュムレータ・ユニット２６２と、そして一連のレジスタファイル（ＲＦ）２６３と、を含む。複素数計算ユニット２９０はＣＭＡＣ実行ユニット２９１及びＣＡＬＵ実行ユニット２９２を含む。ＣＭＡＣ実行ユニット２９１はベクトルコントローラ２７５Ａを含み、ベクトルコントローラ２７５Ａはベクトル・ロード・ユニット２８４Ａに接続され、今度はベクトル・ロード・ユニット２８４ＡがＣＭＡＣユニット２７０に接続される。ＣＭＡＣユニット２７０は更にベクトル・ストア・ユニット２８３Ａに接続される。ＣＡＬＵ実行ユニット２９２はベクトルコントローラ２７５Ｂを含み、ベクトルコントローラ２７５Ｂはベクトル・ロード・ユニット２８４Ｂに接続され、今度はベクトル・ロード・ユニット２８４ＢがＣＡＬＵ  ２８０に接続される。ＣＡＬＵ  ２８０は更にベクトル・ストア・ユニット２８３Ｂに接続される。ここで、一の実施形態では、ＣＭＡＣ実行ユニット２９１及びＣＡＬＵ実行ユニット２９２はＳＩＭＤクラスタ・パイプライン２９５Ａ及び２９５Ｂにそれぞれ対応することに注目されたい。
【００３８】
図示の実施形態では、ＣＡＬＵ  ２８０は４つのデータパスを含む。同様に、ＣＭＡＣ
２７０も、ＣＭＡＣ  ２７６Ａ〜２７６Ｄとして示される４つのＣＭＡＣユニットを含む４つのデータパスを含む。ＣＭＡＣデータパスの一の実施形態について、図７に関する説明と一緒に以下に更に説明する。
【００３９】
ＣＡＬＵ  ２８０はアドレス発生器及び符号発生器とともに、レイクフィンガを処理するような機能に使用される主要コンポーネントとすることができるので、４ウェイＣＡＬＵ（複素数計算論理ユニット）をアクセラレータを用いる形で実装することによって、４つの異なるコードに対する４つの並列相関または逆拡散を同時に行なうことができる。これらの操作は、単に｛０，＋／−１｝＋｛０，＋／−ｉ｝を乗算する機能を持つ簡単な、または「短い」複素乗算器をアキュムレータ・ユニットに接続することによって可能になる。従って、一の実施形態では、ＣＡＬＵ  ２８０は、２８５Ａ〜２８５Ｄで示される４つの異なるＣＳＭＡＣデータパスを含む。例示としてのＣＳＭＡＣデータパス（例えば、ＣＳＭＡＣ  ２８５Ａ）を図６に示す。ここで、４つのデータパスがＣＡＬＵ  ２８０及びＣＳＭＡＣ  ２７０の内部に示されるが、他の実施形態では、どのような個数のデータパスも使用することができることが考えられることに留意されたい。
【００４０】
一の実施形態では、ＣＳＭＡＣ２８５は命令ワード、デスクランブルコード発生器によって、またはＯＶＳＦ符号発生器によって制御することができる。全てのサブユニットはベクトルコントローラ２７５Ａ及び２７５Ｂによって制御することができ、これらのベクトルコントローラは読込順及び保存順、コード発生、及びハードウェアループ計数を管理するように構成することができる。
【００４１】
メモリインターフェースを緩和するために、ベクトル・ロード・ユニット２８４及びベクトル・ストア・ユニット２８３を用いることができる。従って、図示の実施形態では、ＶＬＵ  ２８４はストレージ２８１を含み、このストレージによってメモリインターフェースを緩和し、そしてネットワーク２５０経由のメモリデータフェッチの回数を減らす。例えば、４つの連続するデータアイテムがメモリから読み出されるとした場合、ＶＬＵ  ２８４は或る場合においては、メモリフェッチの回数を、フェッチ処理を１回しか行なわないことによって最大３／４も減らすことができる。
【００４２】
ＣＭＡＣ実行ユニット２９１は複数のＣＭＡＣユニットを含むので、幾つかのＣＭＡＣ（複素乗算／アキュムレーション）演算を同時に行なうことができる。従って、各々のＣＭＡＣユニットは一つの係数、及び一つの入力データアイテムを各々の処理に使用することができる。従って、このタイプのタスクに関するメモリ帯域を拡大することができる。しかしながら、命令セットでは、ベクトル・ロード・ユニット２８４内のストレージ２８１を、多数の先行データアイテムを自律的に保存することによって有効に利用することができる。データアクセスパターンの順番を入れ替えることによって、メモリアクセスレートを低減することができる。
【００４３】
一の実施形態では、ＶＬＵ  ２８４はメモリ（例えば、ＤＭ０〜ｎ）、ネットワーク相互接続２５０、及び実行ユニット（例えば、ＶＬＵ  ２８４ＡはＣＭＡＣ実行ユニットに接続され、そしてＶＬＵ  ２８４ＢはＣＡＬＵ実行ユニットに接続される）の間のインターフェースとして機能する。一の実施形態では、ＶＬＵ  ２８４はデータを、２つの異なるモードを使用して読み込むことができる。第１モードでは、複数のデータアイテムをメモリバンクから読み込むことができる。他方のモードでは、データを１回にデータアイテム１個の割合で読み込み、そして所定のクラスタの複数のＳＩＭＤデータパスに分散させることができる。
【００４４】
後者のモードを使用して、連続するデータをＳＩＭＤクラスタによって処理するときのメモリアクセスの回数を減らすことができる。
図５は、図２及び図４のＰＢＢＰ  １４５のようなクラスタードＳＩＭＤプロセッサの例示としての制御パスを示す図である。ＰＢＢＰ  １４５は、ＲＩＳＣ的な実行ユニットを含み、かつＲＩＳＣデータパス５１０によって表わされるプロセッサ・コア１４６と、そしてＳＩＭＤデータパス＃０  ５２５、及びＳＩＭＤデータパス＃ｎ  ５３５によって表わされる多数のＳＩＭＤデータパスと、を含む。複数のデータパスに対する制御を可能にするために、制御パスハードウェア５００は、プログラムカウンタ５０２に接続されるプログラムフロー・コントロール５０１を含み、今度はプログラムカウンタ５０２がプログラムメモリ（ＰＭ）５０３に接続される。ＰＭ５０３はマルチプレクサ５０４、ユニット・フィールド抽出５０８、ＳＩＭＤコントロール５２０、及びＳＩＭＤコントロール５３０に接続される。マルチプレクサ５０４は命令レジスタ５０５に接続され、命令レジスタ５０５は命令デコーダ５０６に接続される。命令デコーダ５０６は更に制御信号レジスタ（ＣＳＲ）５０７に接続され、今度はＣＳＲ５０７がＲＩＳＣデータパス５１０の残りの部分に接続される。同様に、ＳＩＭＤコントロールユニット５２０及び５３０の各々は、該当する命令レジスタ（例えば、５２２，５３２）、命令デコーダ（例えば、５２３，５３３）、及びＣＳＲ（例えば、５２４，５３４）を含み、これらのＣＳＲは、これらの
ＣＳＲの該当するＳＩＭＤクラスタ（例えば、５２５，５３５）に接続される。ここで、図５に示す複数の回路のうちの少なくとも幾つかの回路は図４のプログラムコントロールユニット３１０の一部分とすることができることに留意されたい。例えば、一の実施形態では、プログラムフロー・コントロール５０１、命令レジスタ５０５、デコーダ５０６、コントロールユニット５０７、ユニット・フィールド抽出５０８、及び発行コントロール５０９は、図４のプログラムコントロールユニット３１０の一部分とすることができる。
【００４５】
上に説明したように、命令フォーマットはユニット・フィールドを含むことができる。一の実施形態では、命令ワードのユニット・フィールドは３ビットを含むことができ、３ビットは、命令の発行先となる予定のユニット（例えば、整数実行ユニット、またはＳＩＭＤパス＃１〜４）を表わす。更に詳細には、ユニット・フィールドは、発行コントロールユニット５０９に、どの命令デコーダ／実行ユニットに対して命令を発行すべきかを決定させる情報となる。従って、実行ユニット内の全ての命令デコーダは、該当するユニットによって指定される残りのフィールドをデコードすることができる。これは、残りのフィールドの体系及びサイズを実行ユニット群の間で、必要に応じて異ならせることができることを意味する。一の実施形態では、ユニット・フィールド抽出ユニット５０８はユニット・フィールドを、命令ワードの残りのビットが該当する命令レジスタ／デコーダに送信される前に除去する、または削除することができる。
【００４６】
一の実施形態では、各々のクロック・サイクルの間に、一つの命令をＰＭ５０３からフェッチすることができる。命令ワードのユニット・フィールドは命令ワードから抽出し、そして使用して、どのコントロールユニットに対して命令を送出すべきかについて制御することができる。例えば、ユニット・フィールドが“０００”である場合、命令はＲＩＳＣデータパスに送出することができる。これによって、発行コントロールユニット５０９に指示して命令ワードを、マルチプレクサ５０４を通って「命令レジスタ」５０５に渡し、ＲＩＳＣデータパスに到達させることができ、この間、新規の命令はＳＩＭＤコントロールユニットにはこのサイクルでは全く読み込まれない。しかしながら、ユニット・フィールドが他のいずれかの値を保持するとした場合、発行コントロールユニット５０９によって、命令ワードを「命令レジスタ」５２２，５３２に渡し、該当するＳＩＭＤコントロールユニットに到達させることができ、更にＮＯＰ命令をＲＩＳＣデータパス命令レジスタに送信することができる。
【００４７】
一の実施形態では、或る命令がＳＩＭＤ実行ユニットに送出されると、命令ワードのベクトル長フィールドを抽出し、そして該当するＳＩＭＤコントロールユニット（例えば、５２０，５３０）のカウントレジスタ（例えば、５２１，５３１）に保存することができる。このカウントレジスタを使用して該当するベクトル命令のベクトル長を追跡し続けることができる。該当するＳＩＭＤ実行ユニットがベクトル演算を終了したとき、ベクトルコントローラ２７５は指示を出して信号（フラグ）をプログラムフロー・コントロール５０１に送信させ、当該ユニットが新規命令を受信する状態になっていることを通知する。各々のＳＩＭＤコントロールユニット５２０，５３０に対応するベクトルコントローラは更に、プロローグ状態及びエピローグ状態に関する制御信号を実行ユニット内で生成することができる。このような制御信号によってＶＬＵ  ２８４を制御してＣＳＭＡＣ（短い複素乗算／アキュムレーション）演算を実行させ、更に例えば一定ではないベクトル長を管理することができる。
【００４８】
上に説明したように、ＣＤＭＡシステムにおけるような多くのベースバンド処理アルゴリズムでは、例えばアンテナから受信する複素データ系列に「（逆）拡散符号」を乗算する。従って、複素ベクトルに逆拡散符号を要素ごとに乗算する（そしてアキュムレートする）必要があり、この複素ベクトルは次の集合：｛０，＋／−１｝＋｛０，＋／−ｉ｝に含まれる数のみを含む複素ベクトルとすることができる。次に、複素乗算の結果をアキュ
ムレートする。幾つかの従来のプログラマブルプロセッサでは、この機能は、幾つかの計算命令を実行することによって、または一つのフル実装のＣＭＡＣユニットによって行なうことができる。しかしながら、プログラマブルプロセッサ内のＮウェイＣＳＭＡＣユニット（例えば、ＣＳＭＡＣ  ２８５Ａ〜Ｄ）を使用して、ハードウェアコストを下げることができる。
【００４９】
図６は、図４に示す複素ＡＬＵの４ウェイＣＳＭＡＣユニットの例示としてのデータパスの図である。図６のＣＳＭＡＣ  ２８５は、図４のＣＳＭＡＣ  ２８５Ａ〜２８５Ｄのうちのいずれかを例示したものであることに留意されたい。ＣＳＭＡＣ  ２８５はインバータ６０１Ａ及び６０１Ｂ、及び６０３Ａ〜６０３Ｄで示される４つのマルチプレクサを含む。更に、ＣＳＭＡＣ  ２８５は、６０２、及び６０４Ａ，６０４Ｂ，６０６Ａ，及び６０６Ｂで示される幾つかの加算器を含む。更に、ＣＳＭＡＣ  ２８５は２つのガードユニット６０５Ａ及び６０５Ｂと、２つのアキュムレータ・レジスタ６０７Ａ及び６０７Ｂと、そして２つの丸め／飽和ユニット６０８Ａ及び６０８Ｂと、を含む。
【００５０】
一の実施形態では、ＣＳＭＡＣ  ２８５はベクトルデータをＶＬＵ２８４を経由して受信する。実部及び虚部は、図示のように別々のパスを通る。着信ベクトルデータを乗算することになる逆拡散符号によって変わるが、マルチプレクサ６０３Ａ〜６０３Ｄによって、該当する実部及び虚部、及びこの複素数の共役複素数、または複素数の符号反転を加算器６０４Ａ及び６０４Ｂに渡すことができ、これらの加算器において、これらの数が加算され、時にはキャリーが加算される。従って、演算によって変わるが、ＣＳＭＡＣ  ２８５は、実部及び虚部それぞれに｛０，＋／−１｝＋｛０，＋／−ｉ｝を、２つの共役計算を使用して効率的に乗算することができる。ガードユニット６０５Ａ及び６０５Ｂは、加算器６０４Ａ及び６０４Ｂから得られる結果を調整するように構成することができる。例えば、桁溢れ（ｏｖｅｒｆｌｏｗｓ）のような状態が発生する場合、結果を調整して最大または最小（すなわち、飽和した）の値を必要に応じて供給することができる。加算器６０６Ａ及び６０６Ｂはアキュムレータ・レジスタ６０７Ａ及び６０７Ｂと連動して、それぞれの結果をアキュムレートし、アキュムレートした結果を丸め／飽和ユニットに、更にＶＳＵ  ２８３Ｂに渡してデータメモリに送信することができる。
【００５１】
従って、これまでの記述から、従来の乗算器は使用されない。従来の乗算器を使用しないで、２つの複素数共役加算を実行することによって、チップ面積及びチップ電力を小さくする。従って、ＣＳＭＡＣ  ２８５Ａ〜Ｄのような４ウェイＣＳＭＡＣは、面積効率の高い４ウェイＣＳＭＡＣユニットとして実装することができ、４ウェイＣＳＭＡＣユニットは４つのＣＳＭＡＣ（短い複素乗算／アキュムレーション）演算を並列にプログラマブル環境で実行することができる。機能強化版４ウェイＣＳＭＡＣユニットは、ベクトル乗算を単一ユニットよりも４倍の速度で実行することができる、または同じベクトルに４つの異なる係数ベクトルを乗算することができる。後者の演算を使用して、ＣＤＭＡシステムにおける「マルチコード逆拡散」を可能にする。上に説明したように、ＶＬＵ  ２８４は一つのデータアイテムまたは一つの係数アイテムの複製を、ＣＳＭＡＣ  ２８５の全てのデータパスに必要に応じて転送することができる。複製モードは特に、同じデータアイテムに異なる内部生成係数を乗算する（例えば、ＯＶＳＦ符号を使用して）場合に有用となり得る。
【００５２】
図７は、図４に示す複素ＭＡＣユニット・データパスの一の実施形態の図である。ここで、図７のＣＭＡＣ  ２７６は、図４のＣＭＡＣ  ２７６Ａ〜２７６Ｄのうちのいずれかを例示していることに留意されたい。ＣＭＡＣ  ２７６は、７０１Ａ〜７０１Ｄで示される４つのマルチビット乗算器を含み、これらの乗算器は４つの該当する結果レジスタ７０２Ａ〜７０２Ｄに接続される。更に、ＣＭＡＣ  ２７６は、７０３，７０４，７０９Ａ，７０９Ｂ，７１０Ａ，及び７１０Ｂで示される６つの全加算器を含む。更に、ＣＭＡＣ  
２７６は、マルチプレクサ７０５，７０６，７０７，及び７０８、及びアキュムレータ・レジスタＡＣＲＲ  ７１１Ａ及びＡＣＩＲ  ７１１Ｂを含む。
【００５３】
図示の実施形態では、乗算器７０１ＡはオペランドＡの実部にオペランドＣの実部を乗算し、乗算器７０１ＢはオペランドＡの虚部にオペランドＣの虚部を乗算することができる。更に、乗算器７０１ＣはオペランドＡの実部にオペランドＣの虚部を乗算し、そして乗算器７０１ＤはオペランドＡの虚部にオペランドＣの実部を乗算することができる。これらの結果は結果レジスタ７０２Ａ〜７０２Ｄにそれぞれ保存することができる。
【００５４】
加算器７０３は加算及び減算を乗算器７０２Ａ及び７０２Ｂから得られる結果に対して実行し、加算器７０４は加算及び減算を乗算器７０２Ｃ及び７０２Ｄから得られる結果に対して実行することができる。マルチプレクサ７０５及び７０７によって、乗算器／加算器を迂回することができ、迂回するかどうかは、オペランドの値によって変わる。実行されている機能によって変わるが、マルチプレクサ７０６及び７０８は値を、加算器７０９Ａ，７０９Ｂ，７１０Ａ，及び７１０Ｂ、及びアキュムレータ・レジスタＡＣＲＲ  ７１１Ａ及びＡＣＩＲ  ７１１Ｂを含むアキュムレータ部分に選択的に供給することができる。ＡＣＲＲ  ７１１Ａは、実部データに対応するアキュムレータ・レジスタであり、そしてＡＣＩＲ  ７１１Ｂは虚部データに対応するアキュムレータ・レジスタである。
【００５５】
一の実施形態では、ＣＭＡＣ  ２７６Ａは、一つの複素数値乗算−アキュムレーション演算（例えば、基数−２ＦＦＴバタフライ演算）を各々のクロック・サイクルで実行することができる。この演算は特に、相関、ＦＦＴ、または例えば複素数ベクトル（例えば、複素同相（Ｉ）及び直交相（Ｑ）ペア）に対して実行することができる絶対最大値検索のような演算に関して最適化される。上に説明したように、プロセッサ・コア１４６は特定クラスのベクトル指向マルチサイクル命令を有し、これらのマルチサイクル命令はＣＡＬＵ命令及びＲＩＳＣ／整数命令と並列に実行することができる。一の実施形態では、複素ベクトル命令は１６ビット長とすることができ、この構成によってプログラムメモリを効率的に使用することができる。しかしながら、他の実施形態では、命令はいずれの長さのビット数でも表現することができる。
【００５６】
一の実施形態では、複素乗算または複素畳み込みを行なう場合、普通の複素数計算は、加算器７０３が減算を行ない、そして加算器７０４が加算を行なうときに行なうことができる。複素共役計算は、加算器７０３が加算を行ない、そして加算器７０４が減算を行なうときに行なうことができる。更に、普通の複素乗算または複素共役乗算を行なって内積乗算及びベクトル回転を行なう場合、ＡＣＲＲ  ７１１Ａ及びＡＣＩＲ  ７１１Ｂの繰り返しループを中断し、そして結果をベクトルメモリにネイティブな長さで送信する前に、加算器７１０Ａ及び加算器７１０Ｂを使用して丸め処理を行なうことができる。同様に、複素フィルタの複素畳み込み、複素自動相関、及び複素相互相関を行なう場合、加算器７１０Ａ及び加算器７１０Ｂは、実部及び虚部の加算累積、または減算累積をそれぞれ行なう。
【００５７】
一の実施形態では、ＦＦＴまたはＩＦＦＴ計算を行なう場合、ＣＭＡＣ  ２７６データパスでは、クロック・サイクルごとに１回のバタフライ演算を（パイプラインで）行なうことができる（すなわち、クロック・サイクルごとに２ポイントのＦＦＴ計算）。ＦＦＴを行なうために、加算器７０９Ａ及び加算器７０９Ｂは減算を行ない、そして加算器７１０Ａ及び加算器７１０ＢのＡＣＲＲ及びＡＣＩＲの繰り返しループが中断される。更に、加算器７１０Ａ及び加算器７１０Ｂは加算演算を行なう。
【００５８】
一の実施形態では、上に説明したベースバンド同期及びデータ受信に関連する種々の処理を行なうために、次の命令をＣＭＡＣ  ２７６で実行することができる：
ＣＭＵＬ．ｎ：普通の複素乗算を行ない、この場合、乗算の結果を丸め処理し、そしてｎ個のステップを非重複ループ（ｎｏｎ−ｏｖｅｒｌａｐｐｅｄ  ｌｏｏｐ）として実行する。オペランドはＯＰＡポート及びＯＰＢポートから供給することができる。結果はポートＣに、ネイティブな長さの複素データフォーマットで出力される。
【００５９】
ＣＣＭＵＬ．ｎ：複素共役乗算を行ない、この場合、乗算の結果を丸め処理し、そしてｎ個のステップを非重複ループとして実行する。オペランドはＯＰＡポート及びＯＰＢポートから供給することができる。結果は、ポートＣにネイティブな長さの複素データフォーマットで出力される。
【００６０】
ＣＭＡＣ．ｎ：普通の複素乗算及びアキュムレーションを、ｎ個のステップを実行する非重複ループとして行なう。オペランドはＯＰＡポート及びＯＰＢポートから供給することができる。結果の実部はＡＣＲＲ  ７１１Ａに保存し、そして虚部はＡＣＩＲ  ７１１Ｂに保存することができる。
【００６１】
ＣＣＭＡＣ．ｎ：複素共役乗算及びアキュムレーションを、ｎ個のステップを実行する非重複ループとして行なう。オペランドはＯＰＡポート及びＯＰＢポートから供給することができる。結果の実部はＡＣＲＲ  ７１１Ａに保存し、そして虚部はＡＣＩＲ  ７１１Ｂに保存することができる。
【００６２】
ＦＦＴ．ｍ．ｎ：サイズｎのＦＦＴのｍ番目のステップ：複素データはポートＡ及びポートＢからフェッチすることができ、そして複素係数はポートＣから、普通のインオーダー（ｉｎ−ｏｒｄｅｒ：プログラムが記述された順に読み込まれ、そのままの順番で命令が実行される方式）でアドレス指定することによってフェッチすることができる；複素データ結果はポートＤにビット反転アドレス指定を使用して送信することができる。
【００６３】
ここで、上に説明したＰＢＢＰ  １４５のアーキテクチャ及びマイクロ・アーキテクチャのフレキシブルな特性によって、複数の無線標準規格、及びこれらの標準規格内の複数の動作モードのサポートが可能になることに注目されたい。
【００６４】
上記の実施形態についてかなり詳細に説明してきたが、上記開示が全て理解された場合には、多くの変更及び変形がこの技術分野の当業者には明らかになるものと考えられる。次の請求項は全てのこのような変更及び変形を包含するものと解釈されるべきと考えられる。
【００６５】
本発明に種々の変更を加え、そして本発明を別の形態とすることができるが、本発明の特定の実施形態は図に一例として示され、そして本明細書に詳細に説明される。しかしながら、これらの図、及びこれらの図に関連する詳細な記述は、本発明を、開示する特定の形態に限定するものとして提示されるのではなく、添付の請求項によって規定される本発明の技術思想及び技術範囲に含まれる全ての変形物、等価物、及び代替物を包含するために提示されることを理解されたい。見出しは体系化のためにのみ付されるのであり、記述または請求項を限定する、または解釈するために使用されるように意図したものではないことに留意されたい。更に、「ｍａｙ」という単語は本出願全体を通じて、許容的な意味（すなわち、〜する可能性を有する、〜することができる）で使用されるのであり、強制的な意味（すなわち、〜しなければならない）で使用されるのではないことに留意されたい。「ｉｎｃｌｕｄｅ」という用語、及びこの用語の派生語は、「ｉｎｃｌｕｄｉｎｇ，
ｂｕｔ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ（〜に制限されないが、〜を含む）」を意味する。「ｃｏｎｎｅｃｔｅｄ」という用語は、「ｄｉｒｅｃｔｌｙ  ｏｒ  ｉｎｄｉｒｅｃｔｌｙ  ｃｏｎｎｅｃｔｅｄ，」、及び「ｃｏｕｐｌｅｄ」という用語は、「ｄｉｒｅｃｔｌｙ  ｏｒ  ｉｎｄｉｒｅｃｔｌｙ  ｃｏｕｐｌｅｄ，」を意味する。
【図面の簡単な説明】
【００６６】
【図１】プログラマブル・ベースバンド・プロセッサを含むマルチモード無線通信デバイスの一の実施形態のブロック図である。
【図２】図１のプログラマブル・ベースバンド・プロセッサの一の実施形態のブロック図である。
【図３】図２のプログラマブル・ベースバンド・プロセッサの一の実施形態の命令発行パイプラインを示す図である。
【図４】図２のプログラマブル・ベースバンド・プロセッサの一の実施形態の更に詳細な態様を示すブロック図である。
【図５】図２のプロセッサ・コアのクラスタードＳＩＭＤ制御パスの一の実施形態の更に詳細な態様を示すブロック図である。
【図６】図４に示す複素ＡＬＵの短い複素ＭＡＣデータパスの一の実施形態の図である。
【図７】図４に示す複素ＭＡＣユニットのデータパス例の一の実施形態の図。
【図１】
2009505214.tif 000005
【図２】
2009505214.tif 000006
【図３】
2009505214.tif 000007
【図４】
2009505214.tif 000008
【図５】
2009505214.tif 000009
【図６】
2009505214.tif 000010
【図７】
2009505214.tif 000011
【国際調査報告】
2009505214.tif 000012
2009505214.tif 000013
2009505214.tif 000014
2009505214.tif 000015