(57)【要約】      （修正有）【課題】高速回転演算を行うためのシステム及び方法を提供する。【解決手段】プロセッサ２０２において単一のベクトル回転命令２０６を実行する方法は、第１の座標２１０及び第２の座標２１６を示す第１のデータ２６２を受信することと、９０度の倍数の組から選択された第１の回転値を示す第１の制御値２６４を受信することと、第１の回転値だけ回転された第１のデータに対応する出力データ２４２，２４８を書き込むこととを含み、出力データ２４２，２４８は、第１の回転値だけ回転された第１のデータ２６２に対応する。【選択図】図２
2014238847.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
単一の命令をプロセッサにおいて実行することを備え、前記単一の命令を実行することは、
第１の座標及び第２の座標を示す第１のデータを受信することと、
９０度の倍数の組から選択された第１の回転値を示す第１の制御値を受信することと、
出力データをデータ記憶素子に書き込むことであって、前記出力データは、前記第１の回転値だけ回転された前記第１のデータに対応すること、とを含む、方法。
【請求項２】
前記単一の命令を実行することは、乗算演算又はテーブル検索を行うことなしに前記出力データを決定することをさらに備える請求項１に記載の方法。
【請求項３】
前記単一の命令は、プロセッサの単一の実行サイクル中に実行される請求項１に記載の方法。
【請求項４】
９０度の倍数の前記組は、ゼロ度と、９０度と、１８０度と、２７０度、とを含み、前記単一の命令を実行することは、
前記第１の回転値が９０度又は２７０度に対応するときに前記第１の座標及び前記第２の座標をスワップすることと、
前記第１の回転値が９０度、１８０度、又は２７０度に対応するときに前記第１の座標及び前記第２の座標のうちの少なくとも１つをネゲートすること、とをさらに備える請求項１に記載の方法。
【請求項５】
前記単一の命令を実行することは、前記第１の座標又は前記第２の座標をネゲートする前に前記第１の座標及び前記第２の座標をスワップすることを含む請求項４に記載の方法。
【請求項６】
前記単一の命令を実行することは、前記第１の座標及び前記第２の座標をスワップする前に前記第１の座標又は前記第２の座標をネゲートすることを含む請求項４に記載の方法。
【請求項７】
前記単一の命令を実行することは、前記第１の座標及び前記第２の座標のうちの少なくとも１つをネゲートするときにオーバーフロー状態を防止するための飽和論理を適用することをさらに備える請求項４に記載の方法。
【請求項８】
前記第１の制御値は、受信された無線信号のシンボル値に対応する請求項１に記載の方法。
【請求項９】
前記単一の命令を実行することは、無線受信機の直交復号サイクルと関係させて行われる請求項８に記載の方法。
【請求項１０】
前記単一の命令を実行することは、
第３の座標及び第４の座標を示す第２のデータを受信することと、
９０度の倍数の前記組から選択された第２の回転値を示す第２の制御値を受信することと、
前記第２の回転値だけ回転された前記第２のデータに対応する第２の出力データを書き込むこと、とをさらに備える請求項１に記載の方法。
【請求項１１】
前記出力データを決定することと同時並行して前記第２の出力データを決定することをさらに備える請求項１０に記載の方法。
【請求項１２】
前記出力データ及び前記第２の出力データは、前記出力データが前記データ記憶素子に書き込まれる前にプロセッサの単一の実行ユニットにおいて決定され、前記データ記憶素子は、レジスタファイル内である請求項１１に記載の方法。
【請求項１３】
前記単一の命令は、マイクロコードをサポートしないパイプラインにおいて実行される請求項１に記載の方法。
【請求項１４】
単一の実行サイクルにおいてベクトル回転を行うためにプロセッサによって実行可能であるプロセッサ命令であって、
命令名と、
第１のフィールドと、
第２のフィールドと、を備え、
前記第１のフィールドは、第１の座標と第２の座標とを含む第１のデータを含み、
前記第２のフィールドは、前記第１のデータを回転させる第１の量を示す第１の制御値を含み、
前記プロセッサは、前記プロセッサ命令を実行した時点で、回転されたデータをメモリに格納し、前記回転されたデータは、前記第１の制御値によって示された前記第１の量だけ回転された前記第１のデータに対応する、プロセッサ命令。
【請求項１５】
前記第１のフィールドは、第３の座標と第４の座標とを含む第２のデータをさらに含む請求項１４に記載のプロセッサ命令。
【請求項１６】
前記第２のフィールドは、前記第２のデータを回転させる第２の量を示す第２の制御値をさらに含む請求項１５に記載のプロセッサ命令。
【請求項１７】
前記プロセッサ命令は、前記第２の制御値によって示された前記第２の量だけ回転された前記第２のデータに対応する第２の回転されたデータをさらに戻す請求項１６に記載のプロセッサ命令。
【請求項１８】
プロセッサであって、
制御値に応答して第１の座標データ及び第２の座標データを選択的にスワップするための手段と、
前記第１の座標データをネゲートして第１のネゲートされた座標データを生成し及び前記第２の座標データをネゲートして第２のネゲートされた座標データを生成するための手段と、
前記制御値に応答して前記第１の座標データ又は前記第１のネゲートされた座標データを選択的に出力し及び前記第２の座標データ又は前記第２のネゲートされた座標データを選択的に出力するための手段と、を備え、
前記制御値は、前記第１の座標データ及び前記第２の座標データによって表されるベクトルの回転度を示す、プロセッサ。
【請求項１９】
選択的に切り替わるための前記手段は、クロスバーデバイスを含む請求項１８に記載のプロセッサ。
【請求項２０】
ネゲートするための前記手段は、ベクトル加算器又はベクトル乗算器を含む請求項１８に記載のプロセッサ。
【請求項２１】
前記ベクトル加算器における負のオーバーフロー状態を訂正するための飽和論理回路をさらに備える請求項２０に記載のプロセッサ。
【請求項２２】
選択的に出力するための前記手段は、マルチプレクサを含む請求項１８に記載のプロセッサ。
【請求項２３】
前記第１の座標データ又は前記第１のネゲートされた座標データを受信するために及び前記第２の座標データ又は前記第２のネゲートされた座標データを受信するために結合されたモデムをさらに備える請求項１９に記載のプロセッサ。
【請求項２４】
システムであって、
アンテナに結合されるように構成されたトランシーバと、
前記トランシーバから無線信号データを受信するために結合されたモデムであって、前記無線信号データは、シンボルデータを含むモデムと、を備え、
前記モデムは、
制御値に応答して第１の座標データ及び第２の座標データを選択的にスワップするように構成されたクロスバーデバイスと、
前記クロスバーデバイスの出力をネゲートするように構成されたベクトル加算器デバイスと、
前記制御値に応答して前記ベクトル加算器デバイスの出力又は前記クロスバーデバイスの前記出力のいずれかを選択的に出力するために結合されたマルチプレクサと、備え、
前記制御値は、前記第１の座標データ及び前記第２の座標データによって表される第１のベクトルの回転度を示す、システム。
【請求項２５】
前記モデムは、単一のプロセッサ命令を実行することによって単一の実行サイクル中に前記第１のベクトル及び第２のベクトルに対して同時並行の回転演算を行うように構成されたプロセッサを含む請求項２４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、高速回転演算を行うことに関するものである。
【背景技術】
【０００２】
技術の進歩の結果、より小型でかつより強力な計算デバイスが生み出されてきている。例えば、現在では、小型かつ軽量で、ユーザが簡単に持ち運べる無線計算デバイス、例えば、携帯式の無線電話、パーソナルデジタルアシスタント（ＰＤＡ）、及びページングデバイス、を含む様々な携帯式のパーソナル計算デバイスが存在する。より具体的には、携帯電話、ＩＰ電話、等の携帯式無線電話は、無線ネットワークを通じて音声及びデータパケットを通信することができる。
【０００３】
無線リンクを通じて通信されたデータを受信することは、データ復号機能を含む。データ復号機能は、乗算演算を用いる１つ以上のベクトル回転演算（ｖｅｃｔｏｒ  ｒｏｔａｔｉｏｎ  ｏｐｅｒａｔｉｏｎ）を含むことができる。例えば、無線データは、複素値、例えば、同相成分及び直交成分、を有するベクトル間での角変位を含む一連のシンボルとして符号化することができる。該シンボルからデータを取り出すことは、例えば、復号中に累積位相（ａｃｃｕｍｕｌａｔｅｄ  ｐｈａｓｅ）を補償するために、ベクトルを回転させることを要求することがある。該ベクトル演算は、特にポータブルデバイスにおける限られた処理リソースを消費することがある。
【発明の概要】
【０００４】
高速ベクトル回転演算を行うためのシステム及び方法が開示される。端点座標データによって特定されたベクトルは、１つ以上の制御値を介して指定された回転度又は角変位度だけ座標原点の周囲を回転させることができる。開示される実施形態は、例えばモデムデバイス又はプロセッサにおいて無線データを符号化又は復号させることと関係させて、又はその他のアプリケーションと関係させて動作することができる。
【０００５】
特定の実施形態においては、プロセッサにおいて単一のベクトル回転命令を実行することを含む方法が開示される。単一のベクトル回転命令は、第１の座標及び第２の座標を示す第１のデータを受信することと、９０度の倍数の組から選択された第１の回転値を示す第１の制御値を受信することと、出力データをデータ記憶素子に書き込むこと、とを含み、出力データは、第１の回転値だけ回転された第１のデータに対応する。
【０００６】
他の特定の実施形態においては、制御値に応答して第１の座標データ及び第２の座標データを選択的にスワップ（ｓｗａｐ）するための手段を含むプロセッサが開示される。プロセッサは、第１の座標データをネゲート（ｎｅｇａｔｅ）して第１のネゲートされた座標データを生成し及び第２の座標データをネゲートして第２のネゲートされた座標データを生成するための手段も含む。プロセッサは、制御値に応答して第１の座標データ又は第１のネゲートされた座標データを選択的に出力し及び第２の座標データ又は第２のネゲートされた座標データを選択的に出力するための手段をさらに含む。制御値は、第１の座標データ及び第２の座標データによって表されるベクトルの回転度を示す。
【０００７】
特定の実施形態においては、高速ベクトル回転演算を行うために好適化されたモデムを含むシステムが開示される。システムは、アンテナに結合するように構成されたトランシーバを含む。モデムは、トランシーバから無線信号データを受信するために結合される。無線信号データは、座標位置、例えば、ベクトル端点の位置、に対応することができるシンボルデータを含む。モデムは、制御値に応答してシンボルデータと関連づけられた第１の座標データ及び第２の座標データを選択的にスワップするように構成されたクロスバーデバイスを含む。モデムは、クロスバーデバイスの出力をネゲートするように構成されたベクトル加算器デバイスも含む。モデムは、制御値に応答してベクトル加算器デバイスの出力又はクロスバーの出力のいずれかを選択的に出力するために結合されたマルチプレクサをさらに含む。制御値は、第１の座標データ及び第２の座標データによって表される第１のベクトルの回転度を示す。
【０００８】
他の特定の実施形態においては、単一の実行サイクルにおいてベクトル回転を行うためにプロセッサによって実行可能なプロセッサ命令が開示される。プロセッサ命令は、命令名と、第１の座標と第２の座標とを含む第１のフィールドと、を含む。プロセッサ命令は、第１及び第２の座標データを回転させる第１の量を示す第１の制御値を含む第２のフィールドも含む。プロセッサは、プロセッサ命令を実行した時点で、回転されたデータをメモリに格納する。回転されたデータは、第１の制御値によって示される第１の量だけ回転された第１及び第２の座標データに対応する。
【０００９】
開示された実施形態によって提供される１つの特定の利点は、高速ベクトル回転演算によって可能にされる無線データのより高速な復号である。本開示のその他の態様、利点、及び特徴は、次の節、すなわち、図面の簡単な説明、発明を実施するための形態、及び請求項、を含む本出願全体を検討後に明確になるであろう。
【図面の簡単な説明】
【００１０】
【図１】高速ベクトル回転演算を行うように構成される携帯式通信デバイスの特定の例示的な実施形態のブロック図である。
【図２】高速ベクトル回転命令を実行するためのシステムの特定の例示的な実施形態のブロック図である。
【図３】ベクトル座標回転を行うためのシステムの第１の例示的な実施形態のブロック図である。
【図４】高速ベクトル回転演算を生成するためのシステムの特定の例示的な実施形態のブロック図である。
【図５】ベクトル座標回転を行うためのシステムの第２の例示的な実施形態のブロック図である。
【図６】ベクトル座標回転システムの第１の例示的な実施形態のデータフロー図である。
【図７】ベクトル座標回転システムの第２の例示的な実施形態のデータフロー図である。
【図８】高速ベクトル回転演算を行うための方法の第１の例示的な実施形態のフローチャートである。
【図９】高速ベクトル回転演算を行うための方法の第２の例示的な実施形態のフローチャートである。
【発明を実施するための形態】
【００１１】
図１を参照し、高速ベクトル回転演算を行うように構成される電子デバイスの特定の例示的な実施形態のブロック図が示され、概して１００の指定数字が付される。デバイス１００は、高速ベクトル回転演算１９０を行うように構成される、メモリ１３２に結合され及びモデム１４０にも結合されたプロセッサ、例えば、デジタル信号プロセッサ（ＤＳＰ）１１０、を含む。
【００１２】
図１は、デジタル信号プロセッサ１１０及びディスプレイ１２８に結合されるディスプレイコントローラ１２６も示す。符号化器／復号器（ＣＯＤＥＣ）１３４もデジタル信号プロセッサ１１０に結合することができる。スピーカ１３６及びマイク１３８をＣＯＤＥＣ１３４に結合することができる。
【００１３】
モデム１４０は、トランシーバ１４６に結合することができる。トランシーバ１４６は、無線アンテナ１４２に結合するように構成することができる。トランシーバ１４６は、トランシーバ１４６がアンテナ１４２に結合されているときに受信される無線信号に対応する座標データ、例えば、シンボル位相データ、を生成するように構成することができる。モデム１４０は、無線信号から符号化されたデータを取り出すための復号プロセスの一部としてトランシーバ１４６から受信された座標データに高速ベクトル回転演算１９０を適用するように構成される。
【００１４】
例えば、シンボル位相データは、座標原点において、例えば、（ｘ、ｙ）座標系における座標（０、０）において、１つの端部を有するベクトルとして表すことができ及びベクトルの他方の端部の座標、例えば、正のｘ軸から４５度の角度におけるベクトルに関する座標（１、１）、によって表すことができる。説明例として、座標面内において９０度の回転度、すなわち角変位、だけの（１、１）ベクトルのベクトル回転を行うことは、その結果、回転されたベクトル（−１、１）が得られる。１８０度の（１、１）ベクトルのベクトル回転を行うことは、その結果、回転されたベクトル（−１、−１）が得られる。２７０度の（１、１）ベクトルのベクトル回転を行うことは、その結果、回転されたベクトル（１、−１）が得られる。
【００１５】
特定の実施形態においては、ＤＳＰ１１０、ディスプレイコントローラ１２６、メモリ１３２、ＣＯＤＥＣ１３４、モデム１４０、及びトランシーバ１４６は、システムインパッケージ又はシステムオンチップデバイス１２２内に含められる。特定の実施形態においては、入力デバイス１３０及び電源１４４は、システムオンチップデバイス１２２に結合される。さらに、特定の実施形態においては、図１に示されるように、ディスプレイ１２８、入力デバイス１３０、スピーカ１３６、マイク１３８、無線アンテナ１４２、及び電源１４４は、システムオンチップデバイス１２２の外部に存在する。しかしながら、ディスプレイ１２８、入力デバイス１３０、スピーカ１３６、マイク１３８、無線アンテナ１４２、及び電源１４４の各々は、システムオンチップデバイス１２２のコンポーネント、例えば、インタフェース又はコントローラ、に結合することができる。
【００１６】
動作中においては、符号化されたデータを含む無線信号がアンテナ１４２において受信され、トランシーバ１４６を介して対応する座標データをモデム１４０に提供することができる。例えば、座標データは、ベクトルのＸ及びＹ座標を表すことができる。モデム１４０は、復号プロセスの一部として高速ベクトル回転演算１９０を用いて座標データの回転を行うことができる。高速ベクトル回転演算１９０は、モデム１４０の各処理サイクルごとに複数の座標回転を可能にし、データの高速復号を可能にすることができる。さらに、高速ベクトル回転演算１９０は、乗算又はテーブル検索を用いずに座標回転を行うことを可能にすることができ、それにより復号プロセスの電力消費量を低減させることができる。
【００１７】
特定の実施形態においては、モデム１４０は、単一のプロセッサ実行サイクル中に複数のベクトル座標回転を行うための高速ベクトル回転演算１９０を行うための命令を実行するように構成されるパイプライン化されたプロセッサを含む。例えば、モデム１４０は、第１の座標によって特定された第１のベクトルと第２の座標によって特定された第２のベクトルとを含むシンボルデータを含む無線信号データをトランシーバ１４６から受信することができる。モデム１４０は、単一のプロセッサ命令を実行することによって単一の実行サイクル中に第１のベクトル及び第２のベクトルに対して同時並行の回転演算を行うように構成することができる。
【００１８】
例えば、例示的な実施形態において、モデム１４０は、図４のシステム４００を含む実行ユニットを有するパイプライン化されたプロセッサを含み、すなわち、制御値に応答して第１のベクトルの第１の座標データ及び第２の座標データを選択的にスワップするように構成されたクロスバーデバイスと、クロスバーデバイスの出力をネゲートするように構成されたベクトル加算器デバイスと、制御値に応答してベクトル加算器デバイスの出力又はクロスバーデバイスの出力のいずれかを選択的に出力するために結合されたマルチプレクサと、を含む。制御値は、第１の座標データ及び第２の座標データによって表される第１のベクトルの希望される回転度（例えば、９０度の倍数）を示すことができる。
【００１９】
特定の実施形態においては、モデム１４０は、専用のハードウェアコンポーネント及び回路を含まないことができ、その代わりに、プロセッサ１１０において実行されるモデムアプリケーション、例えば、インターリービングされたマルチスレッド化されたパイプライン化されたプロセッサの処理スレッド、であることができ、高速ベクトル回転演算１９０は、プロセッサ１１０の単一の処理サイクル中に複数のベクトル座標回転を行うために実行される。さらに他の実施形態においては、高速ベクトル回転演算１９０は、専用のハードウェア、ファームウェア、１つ以上のその他のプロセッサ、又はそれらの組み合わせによって行うことができる。
【００２０】
図２を参照し、高速ベクトル回転演算命令を実行するためのシステムが示され、概して２００の指定数字が付される。システム２００は、レジスタファイル２０４を含むプロセッサ２０２を含む。プロセッサ２０２は、回転命令２０６を受信するように構成される。特定の実施形態においては、システム２００は、図1のモデム１４０に含められ、回転命令２０６は、図１に示される高速ベクトル回転演算１９０の一部に対応する。
【００２１】
特定の実施形態においては、回転命令２０６は、単一の実行サイクルにおいてベクトル回転を行うためにプロセッサ２０２によって実行可能であるプロセッサ命令である。回転命令２０６は、ＦａｓｔＲｏｔａｔｅ（高速回転）という名前で表される命令名２６０を含む。回転命令２０６は、第１のフィールド（Ｒｓｓ）２６２と、第２のフィールド（Ｒｔ）２６４と、も含む。回転命令２０６は、値（例えば、ベクトル回転演算を実行した結果得られた回転されたベクトル）をアドレス（Ｒｄｄ）２６６に戻す。
【００２２】
特定の実施形態においては、第１のフィールドＲｓｓ２６２は、レジスタファイル２０４の第１のレジスタ２０８に対応するアドレスを含む。第２のフィールドＲｔ２６２は、レジスタファイル２０４の第２のレジスタ２２２に対応するアドレスを含む。リターンアドレスＲｄｄ２６６は、レジスタファイル２０４の第３のレジスタ２４０に対応する。
【００２３】
特定の実施形態においては、プロセッサ２０２は、回転命令２０６を受信することに応答して第１のデータ２１０及び第１の制御値２２４（Ｃ１）にアクセスするように構成される。第１のデータ２１０（例えば、第１のベクトル）は、ソースレジスタＲｓｓ２０８からのベクトルの第１の座標（ｘ１）２１２と、第２の座標（ｙ１）２１４と、を含むことができる。回転命令２０６を実行した時点で、プロセッサ２０２は、回転されたデータ２４２をメモリ、例えば、レジスタファイル２０４の第３のレジスタ２４０、に格納することができる。回転されたデータ２４２は、第１の制御値２２４によって示される第１の量だけ回転された第１のデータ２１０に対応し、回転されたデータ２４２は、デスティネーションレジスタ（ｄｅｓｔｉｎａｔｉｏｎ  ｒｅｇｉｓｔｅｒ）Ｒｄｄ２４０において回転された座標Ａ  ２４４及びＢ  ２４６の組として格納することができる。特定の実施形態においては、プロセッサ２０２は、複数の実行ユニット２７０及び２７２を含み、それらは、プロセッサ２０２の単一の処理サイクル中に回転命令２０６を実行するように各々好適化することができる。
【００２４】
特定の実施形態においては、プロセッサ２０２は、回転命令２０６の実行時点で、第１のレジスタ２０８から第２のデータ２１６（例えば、第２のベクトル）を読み取るようにさらに構成され、第２のデータ２１６は、第３の座標（ｘ２）２１８と、第４の座標（ｙ２）２２０と、を含む。プロセッサ２０２は、第２のレジスタ２２２から第２の制御値（Ｃ２）２２６を読み取るようにさらに構成することができる。第２の制御値２２６は、第２のデータ２１６を回転させる第２の量を示す。プロセッサ２０２は、第２の回転されたデータ２４８をレジスタファイル２０４の第３のレジスタ２４０に戻すことができる。第２の回転されたデータ２４８は、第２の制御値２２６によって示された第２の量だけ回転された第２のデータ２１６に対応する回転された座標データ、例えば、座標Ｃ  ２５０及びＤ２５２の組、を含む。
【００２５】
特定の実施形態においては、プロセッサ２０２は、回転命令２０６の実行時点で第１のデータ２１０及び第２のデータ２１６を同時並行して読み取るように構成される。プロセッサ２０２は、第１の制御値２２４及び第２の制御値２２６の両方を第１及び第２のデータ２１０及び２１６とそれぞれ同時並行して読み取るようにさらに構成することができる。プロセッサ２０２は、回転されたデータ２４２を生成するために第１の制御値２２４に従って第１のデータ２１０に対して第１の回転演算を行うように、及び第２の回転されたデータ２４８を生成するために第２の制御値２２６に従って第２のデータ２１６に対して第２の回転を行うように構成することができる。回転されたデータ２４２及び第２の回転されたデータ２４８は、回転命令２０６のリターンアドレス２６６によって示されるアドレスを有する第３のレジスタ２４０において、レジスタファイル２０４に同時並行して書き込むことができる。
【００２６】
第１のデータ２１０、第２のデータ２１６、第１の制御値２２４、及び第２の制御値２２６を読み取ること、及び回転されたデータ２４２及び第２の回転されたデータ２４４を生成及び格納することは、単一の実行ユニット７０２又は２７２を用いて単一のプロセッサ実行サイクルにおいて行うことができる。従って、システム２００は、プロセッサ２０２がプロセッサ２０２の１つの実行サイクルごとに複数のベクトル回転を行うことを可能にする。例えば、第１のデータ２１０及び第２のデータ２１６は、１つの限定しない説明例として、例えば、無線受信機の直交復号サイクルと関係させて、トランシーバからモデムにおいて受信された逐次シンボル値と関連づけられたベクトルに対応することができる。
【００２７】
特定の実施形態においては、回転命令の実行は、以下に示されるように疑似符号命令ｖｃｒｏｔａｔｅに関して例示される回転論理により行うことができる。
【数１】
2014238847.tif 000003
【００２８】
上の疑似符号において、Ｒｓｓ．ｈ［ｎ］は、ソースレジスタＲｓｓのｎ番目の半語を意味する。例えば、Ｒｓｓは、４つの１６ビット半語を有する６４ビット値を含むことができ、６４ビット値は、それぞれ第１及び第２の半語Ｒｓｓ．ｈ［０］及びＲｓｓ．ｈ［１］内の第１のｘ及びｙデータ、及びそれぞれ第３及び第４の半語Ｒｓｓ．ｈ［２］及びＲｓｓ．ｈ［３］内の第２のｘ及びｙデータに対応する。Ｒｔは、ビット［１：０］における第１の回転インジケータとビット［３：２］における第２の回転インジケータとを含む制御値を格納するレジスタを意味する。各回転インジケータは、一組の４つの値のうちの１つを表す２ビットによって表される。“ゼロ”の制御値は、ゼロ度の回転を表す。“１”の制御値は、負の９０度、又は２７０度の回転を表す。“２”の制御値は、９０度の回転を表す。“３”の制御値は、１８０度の回転を表す。関数ｓａｔ＿１６は、ゼロ値をネゲートした結果生じる飽和状態を訂正し、Ｒｄｄは、４つの１６ビット半語を含むデスティネーションレジスタを表す。
【００２９】
図３を参照し、座標回転を行うシステムの第１の例示的な実施形態が示され、概して指定数字３００が付される。システム３００は、スワップ回路３０２として示される、制御値Ｃ１  ３２４に応答して第１の座標データＸ１  ３２０及び第２の座標データＹ１  ３２２を選択的にスワップするための手段、を含む。システム３００は、図３においてネゲーション（ｎｅｇａｔｉｏｎ）回路３０４として示される、第１の座標データ３２０をネゲートして第１のネゲートされた座標データを生成し及び第２の座標データ３２２をネゲートして第２のネゲートされた座標データを生成するための手段、をさらに含む。システム３００は、選択回路３０８として示される、制御値Ｃ１  ３４８に応答して第１の座標データ又は第１のネゲートされた座標データを選択的に出力し及び第２の座標データ又は第２のネゲートされた座標データを選択的に出力するための手段、も含む。飽和論理回路３０６は、ネゲーション回路３０４に結合される。
【００３０】
特定の実施形態において、システム３００は、第１の座標データ３２０及び第２の座標データ３２２を受信するように、及び第１の座標データ３２０及び第２の座標データ３２２によって表されるベクトルの回転を行うように構成される。例えば、第１の座標データ３２０は、ベクトルのＸ座標を表すことができ、及び第２の座標データ３２２は、ベクトルのＹ座標を表すことができる。制御値Ｃ１  ３２４は、ベクトルに適用されるべき回転度を表すことができる。特定の実施形態においては、制御値Ｃ１は、９０度の回転の倍数を示す。例えば、Ｃ１は、０度の回転を示す第１の値、９０度の回転を示す第２の値、１８０度の回転を示す第３の値、及び２７０度の回転を示す第４の値に設定することができる２ビットのデータ項目であることができる。回転の対称性に起因して、２７０度よりも大きい９０度の倍数、及び０度よりも小さい９０度の倍数は、ここにおいて説明される倍数の１つと同等であることが認識されるであろう。
【００３１】
特定の実施形態においては、スワップ回路３０２は、第１の座標データ３２０及び第２の座標データ３２２、及び制御値３２４を受信するように、及び第１のスワップされた出力３２６及び第２のスワップされた出力３２８を出力するように構成される。第１のスワップされた出力３２６は、制御値３２４に応答して、第１の座標データ３２０又は第２の座標データ３２２のいずれかに対応することができる。同様に、第２のスワップされた出力３２８は、制御値３２４に依存して、第１の座標データ３２０又は第２の座標データ３２２に対応することができる。第１及び第２のスワップされた出力３２６及び３２８は、それぞれ入力３４０及び３４２として選択回路３０８に提供される。第１及び第２のスワップ座標データ出力３２６及び３２８は、それぞれ入力３３０及び３３２としてネゲーション回路３０４にも提供される。
【００３２】
特定の実施形態においては、ネゲーション回路３０４は、第１の入力３３０において第１のスワップされたデータ３２６を受信し及び第１のスワップされたデータ３２６のネゲートされた値を選択回路３０８の第１のネゲートされた入力３４４に提供するように構成される。ネゲーション回路３０４は、第２の入力３３２において第２のスワップされたデータ３２８を受信し及び第２のスワップされたデータ３２８のネゲートされた値を選択回路３０８の第２のネゲートされた入力３４６に提供するように構成される。特定の実施形態においては、飽和論理回路３０６は、ネゲーション回路３０４の動作から生じたオーバーフロー状態を訂正するようにさらに構成される。例えば、“０”値がネゲートされるときには、幾つかのバイナリ数表現においては、結果的に得られる負の“０”値は不正確な結果に変換されることがある。このため、飽和論理回路３０６は、該負の飽和状態を検出及び訂正するように構成される。
【００３３】
特定の実施形態においては、選択回路３０８は、制御入力３４８において制御値Ｃ１を受信するように及び制御値Ｃ１によって示された量だけ回転された第１の座標データ３２０及び第２の座標データ３２２に対応する値を第１の座標出力Ｘｏｕｔ  ３５０及び第２の座標出力Ｙｏｕｔ  ３５２において選択的に出力するように構成される。従って、選択回路３０８は、第１のスワップされたデータ３２６を第１のスワップ座標入力３４０において及び第１のスワップされた出力３２６のネゲートされた値を第１のネゲートされた入力３４４において受信することができる。選択回路３０８は、第１のスワップ座標入力３４０及び第１のネゲートされた入力３４４のうちの１つにおいて受信された値を第１の座標出力Ｘｏｕｔ  ３５０に選択的に提供することができる。さらに、選択回路３０８は、第２のスワップ座標入力３４２及び第２のネゲートされた入力３４６を受信することができ及び第２のスワップ座標入力３４２及び第２のネゲートされた入力３４６のうちの１つにおいて受信された値を第２の座標出力Ｙｏｕｔ３５２に選択的に出力することができる。
【００３４】
第１の座標出力Ｘｏｕｔ３５０及び第２の座標出力Ｙｏｕｔ３５２は、制御値Ｃ１によって表される９０度の倍数だけ入力ベクトルが回転された後における、第１の座標データ３２０及び第２の座標データ３２２によって示される入力ベクトルの回転の結果を表す。選択回路３０８からの出力は、テーブル検索を行うことなしに、さらに乗算演算を行うことなしに生成される。代わりに、スワップ、ネゲーション、及び選択回路を用いて９０度の倍数の回転を生成するために２次元ベクトル回転に固有の対称性が利用される。従って、システム３００は、例えば図１に示されるモデム１４０において、図２に示されるプロセッサ２０２の実行ユニット２７０及び２７２のうちの１つ以上において、その他のモデム又はプロセッサにおいて、又はそれらの組み合わせにおいて用いることができるような、高速ベクトル回転のハードウェア実装を提供する。例えば、システム３００は、グラフィックス処理ユニットに含めることができる。他の例として、システム３００は、モデムアプリケーション及びグラフィックスアプリケーションを処理するために好適化されるパイプライン化されたプロセッサの実行ユニットに含めることができる。
【００３５】
一例として、システム３００は、マルチスレッド化されたプロセッサの実行ユニットにおいて実装することができる。さらに、システム３００は、パイプラインプロセッサのパイプライン実行プロセスの一部として実装することができる。例えば、スワップ回路３０２は、プロセッサのマルチプレクサ、クロスバーデバイス、その他のスイッチングデバイス又は回路のうちの１つ以上、又はそれらの組み合わせを含むことができる。ネゲーション回路３０４は、入力値をネゲートするために好適化されたプロセッサの算術論理ユニット（ＡＬＵ）、加算器、その他の回路又はデバイス、又はそれらのあらゆる組み合わせを含むことができる。選択回路３０８は、１つ以上の入力において受信された値を選択的に出力するために好適化されたプロセッサのマルチプレクサ、スイッチ、又はその他の回路又はデバイス、又はそれらのあらゆる組み合わせを含むことができる。
【００３６】
図４を参照し、高速ベクトル回転演算を生成するためのシステムが示され、概して指定数字４００が付される。システム４００は、クロスバー４０８に結合されたレジスタファイル４０２を含む。クロスバー４０８は、ベクトル加算器４１０及びマルチプレクサ４１２の両方に出力を提供するために結合される。ベクトル加算器４１０は、マルチプレクサ４１２に出力を提供する。マルチプレクサ４１２は、出力値を出力レジスタ４１４に提供するために結合される。
【００３７】
特定の実施形態においては、レジスタファイル４０２は、第１のレジスタ４０４と、第２のレジスタ４０６、とを含む。第１のレジスタ４０４は、第１の座標ｘ１  ４２２及び第２の座標ｙ１  ４２４に対応する第１のデータを含むことができる。第１のレジスタファイル４０４は、第３の座標ｘ２  ４２６及び第４の座標ｙ２  ４２８に対応する第２のデータを含むこともできる。第２のレジスタ４０６は、第１の制御値Ｃ１  ４３０及び第２の制御値Ｃ２  ４３２を格納することができる。特定の実施形態においては、第１のレジスタ４０４内の座標データ４２２乃至４２８及び第２のレジスタ４０６内の制御値４３０及び４３２は、モデム、プロセッサ、又はそれらの組み合わせにおいて受信された無線送信又はデータと関連づけられたシンボルデータに対応する。
【００３８】
クロスバー４０８は、第１の入力４３４において受信されたデータをマルチプレクサ４１２の第１の入力４４６及び第２の入力４４８のうちの１つに選択的に提供するように構成される。クロスバー４０８は、第２の入力４３６において受信されたデータをマルチプレクサ４１２の第１の入力４４６及び第２の入力４４８のうちの他方の１つに選択的に提供するようにさらに構成される。同様に、クロスバー４０８は、第３の入力４３８において受信されたデータをマルチプレクサ４１２の第３の入力４５０及び第４の入力４５２のうちの１つに選択的に提供するように構成される。クロスバー４０８は、第４の入力４４０において受信されたデータをマルチプレクサ４１２の第３の入力４５０及び第４の入力４５２のうちの他方の１つに提供するようにさらに構成れる。特定の実施形態においては、クロスバー４０８は、第１の座標データｘ１  ４２２及び第２の座標データｙ１  ４２４に対応する第１の入力４３４及び第２の入力４３６において受信されたデータ値をスワップすべきかどうかを選択的に決定する。クロスバー４０８は、第１の制御入力４４２において受信された第１の制御値Ｃ１  ４３０に基づいてｘ１及びｙ１を選択的にスワップする。クロスバー４０８は、第２の制御入力４４４において受信される第２の制御値Ｃ２  ４３２の値に基づいて第３の入力４３８及び第４の入力４４０において受信されたデータ値を選択的にスワップするようにさらに構成される。特定の実施形態においては、クロスバー４０８は、図３に示されるスワップ回路３０２と実質的に同様の方法で動作する。
【００３９】
特定の実施形態においては、ベクトル加算器４１０は、マルチプレクサ４１２の第１の入力４４６に対して及び第２の入力４４８に対して提供されたデータに対応するデータを第１の入力４５４及び第２の入力４５６において受信する。さらに、ベクトル加算器４１０は、マルチプレクサ４１２の第３の入力４５０及び第４の入力４５２において受信されたデータに対応するデータを第３の入力４５８及び第４の入力４６０においてそれぞれ受信する。ベクトル加算器４１０は、入力４５４、４５６、４５８、及び４６０の各々において受信されたデータをネゲートするように構成される。ネゲートされたデータは、第１のネゲートされた入力４６２、第２のネゲートされた入力４６４、第３のネゲートされた入力４６６、及び第４のネゲートされた入力４６８を介してマルチプレクサ４１２に提供される。
【００４０】
マルチプレクサ４１２は、第１の入力４４６及び第２の入力４４８においてクロスバー４０８によって提供されたデータｘ１ｓ及びｙ１ｓをそれぞれ受信するために、及び第３の入力４５０及び第４の入力４５２においてデータｘ２ｓ及びｙ２ｓをそれぞれ受信するために結合される。マルチプレクサ４１２は、第１のネゲートされた入力４６２及び第２のネゲートされた入力４６４においてベクトル加算器４１０からネゲートされたデータ−ｘ１ｓ及び−ｙ１ｓをそれぞれ受信するために、及び第３のネゲートされた入力４６６及び第４のネゲートされた入力４６８においてベクトル加算器４１０からネゲートされたデータ−ｘ２ｓ及び−ｙ２ｓをそれぞれ受信するためにさらに結合される。マルチプレクサ４１２は、第１の制御入力４７０において第１の制御値Ｃ１  ４３０を受信し及び第２の制御入力４７２において第２の制御値Ｃ２  ４３２を受信する。
【００４１】
マルチプレクサ４１２は、第１の制御入力４７０に基づいて第１の入力４４６又は第１のネゲートされた入力４６２から第１の出力４７４を及び第２の入力４４８又は第２のネゲートされた入力４６４から第２の出力４７６を選択的に提供するように構成される。第１の出力４７４及び第２の出力４７６は、第１及び第２の回転された座標Ｘ１ｏｕｔ  ４９０及びＹ１ｏｕｔ  ４９２を出力レジスタ４１４にそれぞれ提供するために結合される。例えば、制御値Ｃ１  ４３０が、ネゲートされた値を要求しないゼロ度回転を示す場合は、マルチプレクサ４１２は、第１の出力４７４及び第２の出力４７６にそれぞれ提供するためのネゲートされない入力４４６及び４４８を選択する。制御値Ｃ１  ４３０が、両方の座標のネゲーションを要求する１８０度回転を示す場合は、マルチプレクサ４１２は、ネゲートされた入力４６２及び４６４をベクトル加算器４１０から選択する。制御値が、９０度回転又は２７０度回転を示す場合は、マルチプレクサは、１つのネゲートされない入力４４６又は４４８及び１つのネゲートされた入力４６２又は４６４を選択することができる。
【００４２】
マルチプレクサ４１２は、第２の制御入力４７２に基づいて第３の座標入力４５０及び第３のネゲートされた入力４６６のうちの１つを第３の出力４７８に選択的に提供するように構成される。マルチプレクサ４１２は、第４の出力４８０に対する、第２の制御入力４７２に基づいて、第４の座標入力４５２又は第４のネゲートされた入力４６８を選択するようにさらに構成される。第３及び第４の出力４７８及び４８０は、第２のベクトル回転された出力データＸ２ｏｕｔ  ４９４及びＹ２ｏｕｔ  ４９６をそれぞれ提供するために出力レジスタ４１４に結合される。
【００４３】
システム４００は、特定の実施形態においては、ベクトル加算器４１０に結合される飽和論理回路４１１をさらに含む。飽和論理回路４１１は、２の補数のバイナリ表現における“ゼロ”値のネゲーションが原因となることがあるような、ベクトル加算器４１０の出力における飽和状態を検出するように、及びベクトル加算器４１０での出力のための訂正された値を提供するようにさらに構成することができる。特定の実施形態においては、飽和論理回路４１１は、１つ以上の排他的ＯＲゲートを含むことができ、及びスワップされてベクトル加算器４１０内に入るべき１つ以上のハードワイヤド値（ｈａｒｄｗｉｒｅｄ  ｖａｌｕｅ）を提供することができる。
【００４４】
特定の実施形態においては、システム４００は、プロセッサパイプラインの一部分において、例えば、インターリービングされたマルチスレッド化されたプロセッサの実行ユニットにおいて、実装することができる。例えば、クロスバー４０８は、プロセッサの実行ユニットにおいてデータを整合させるためのルーティングユニットの一部であることができ、ベクトル加算器４１０及びマルチプレクサ４１２も実行ユニット内の要素であることができる。他の特定の実施形態においては、システム４００は、無線デバイスのモデム、例えば、図１のモデム１４０、内に実装することができる。特定の実装においては、システム４００は、モデムの動作を行うためにパイプライン化されたインターリービングされたマルチスレッド化されたプロセッサの１つ以上の実行ユニットにおいて実装することができる。さらに、例示的な実施形態において、図３に示されるように、クロスバー４０８は、スワップ回路３２０の特定の実装に対応することができ、ベクトル加算器４１０は、ネゲーション回路３０４の特定の実装に対応することができ、マルチプレクサ４１２は、選択回路３０８の特定の実装として働くことができ、さらに、第１のデータ４２２及び４２４に対応する座標を有する第１のベクトル及び第２のデータ４２６及び４２８に対応する座標を有する第２のベクトルによって示されように、複数のベクトルの同時並行の回転を行うためにさらに好適化することができる。
【００４５】
図５を参照し、座標回転を行うためのシステムの第２の例示的な実施形態が示され、概して指定数字５００が付される。システム５００は、スワップ回路５０２として示される、制御値Ｃ１  ５２４に応答して第１の座標データＸ１  ５２０及び第２の座標データＹ１  ５２２を選択的にスワップするための手段、を含む。システム５００は、図５においてベクトル乗算器５０４として示される、第１の座標データ５２０をネゲートして第１のネゲートされた座標データを生成し及び第２の座標データ５２２をネゲートして第２のネゲートされた座標データを生成するための手段、をさらに含む。システム５００は、選択回路５０８として示される、制御値Ｃ１  ５４８に応答して第１の座標データ又は第１のネゲートされた座標データを選択的に出力するための及び第２の座標データ又は第２のネゲートされた座標データを選択的に出力するための手段、も含む。システム５００は、概して、ネゲーション回路３０４の代わりにベクトル乗算器５０４を用いる図３のシステム３００に対応し及び図３のシステム３００により動作する。
【００４６】
特定の実施形態においては、システム５００は、第１の座標データ５２０及び第２の座標データ５２２を受信するように、及び第１の座標データ５２０及び第２の座標データ５２２によって表されるベクトルの回転を行うように構成される。例えば、第１の座標データ５２０は、ベクトルのＸ座標を表すことができ、及び第２の座標データ５２２は、ベクトルのＹ座標を表すことができる。制御値Ｃ１  ５２４は、ベクトルに適用すべき回転度を表すことができる。
【００４７】
特定の実施形態においては、スワップ回路５０２は、第１の座標データ５２０及び第２の座標データ５２２、及び制御値５２４を受信するように、及び第１のスワップされた出力５２６及び第２のスワップされた出力５２８を出力するように構成される。第１及び第２のスワップされた座標データ出力５２６及び５２８は、それぞれ入力５４０及び５４２として選択回路５０８に提供される。第１及び第２のスワップ座標データ出力５２６及び５２８は、それぞれ入力５３０及び５３２としてベクトル乗算器５０４にも提供される。
【００４８】
特定の実施形態においては、ベクトル乗算器５０４は、第１のスワップされたデータ５２６を第１の入力５３０において受信するように及び第１のスワップされたデータ５２６のネゲートされた値を選択回路５０８の第１のネゲートされた入力５４４に提供するように構成される。ベクトル乗算器５０４は、第２のスワップされたデータ５２８を第２の入力５３２において受信するように及び第２のスワップされたデータ５２８のネゲートされた値を選択回路５０８の第２のネゲートされた入力５４６に提供するように構成される。特定の実施形態においては、ベクトル乗算器５０４は、第１の入力５３０、第２の入力５３２、又は両方において受信されたデータに−１を選択的に乗じるための制御論理を含む。
【００４９】
特定の実施形態においては、選択回路５０８は、制御値Ｃ１を制御入力５４８において受信するように及び制御値Ｃ１によって示される量だけ回転された第１の座標データ５２０及び第２の座標データ５２２に対応する値を第１の座標出力Ｘｏｕｔ５５０及び第２の座標出力Ｙｏｕｔ５５２において選択的に出力するように構成される。従って、選択回路５０８は、第１のスワップされた出力５２６を第１のスワップ座標入力５４０において及び第１のスワップされた出力５２６のネゲートされた値を第１のネゲートされた入力５４４において受信することができる。選択回路５０８は、第１のスワップ座標入力５４０及び第１のネゲートされた入力５４４のうちの１つにおいて受信された値を第１の座標出力Ｘｏｕｔ５５０に選択的に提供することができる。さらに、選択回路５０８は、第２のスワップ座標入力５４２及び第２のネゲートされた入力５４６を受信することができ及び第２のスワップ座標入力５４２及び第２のネゲートされた入力５４６のうちの１つにおいて受信された値を第２の座標出力Ｘｏｕｔ５５２に選択的に出力することができる。
【００５０】
図６を参照し、ベクトル座標回転システムの第１の例示的な実施形態のフローチャートが示され、概して指定数字６００が付される。スワップ回路６０２は、入力ベクトル（ｘ１、ｙ１）６０１を受信するために及びネゲーション回路６０４に出力を提供するために結合される。スワップ回路６０２は、出力ベクトル（ｘ１、ｙ１）又は（ｙ１、ｘ１）を生成するために制御値Ｃ１  ６２４に応答して入力ベクトル６０１の座標を選択的にスワップすることができる。
【００５１】
ネゲーション回路６０４は、制御値Ｃ１  ６２４に応答してスワップ回路６０２から受信されたデータを選択的にネゲートし及び出力ベクトル（Ｘｏｕｔ、Ｙｏｕｔ）６１０を生成する。例えば、ネゲーション回路６０４は、第１のベクトル座標及び第２のベクトル座標を受信することができ、及び制御値Ｃ１  ６２４に基づいて、第１の座標のみ、第２の座標のみ、及び両方の座標を選択的にネゲートするか又はいずれの座標も選択的にネゲートしないことができる。出力ベクトル６１０は、制御値Ｃ１  ６２４によって示される９０度の倍数だけ座標原点を中心として回転された後の入力ベクトル６０１に対応する。ネゲーション回路６０４は、制御値Ｃ１  ６２４に応答して受信されたデータを選択的にネゲートするため、システム６００は、出力選択回路、例えば図３の選択回路３０８、なしでベクトル座標回転演算を行うために動作可能である。
【００５２】
特定の実施形態においては、システム６００は、回転量が９０度又は２７０度であるときに第１及び第２の座標を選択的にスワップすることと、それに後続して、回転量が９０度である時に第１の座標を選択的にネゲートすることと、回転量が２７０度であるときに第２の座標を選択的にネゲートすることと、回転量が１８０度であるときに両座標を選択的にネゲートすること、とを含む高速ベクトル回転アルゴリズムを実装するためにプログラミングされたプロセッサを表す。スワップ回路６０２は、プロセッサ実行ユニット、ファームウェア、ハードウェア、又はそれらのいずれかの組み合わせにおいて実行されるスワップ動作である、２つ以上の入力値を選択的にスワップすること、を行うように構成されたクロスバーデバイス、マルチプレクサデバイス、他のデバイスを用いて実装することができる。ネゲーション回路６０４は、プロセッサ実行ユニット、ファームウェア、ハードウェア、又はそれらのいずれかの組み合わせにおいて実行されるネゲーション動作である、２つ以上の入力値を選択的にネゲートすること、を行うように構成されたベクトル加算器、ベクトル乗算器、他のデバイスを用いて実装することができる。
【００５３】
図７を参照し、ベクトル座標回転システムの第２の例示的な実施形態のデータフローが示され、概して指定数字７００が付される。ネゲーション回路７０４は、入力ベクトル（ｘ１、ｙ１）７０１を受信するために及びスワップ回路７０２に出力を提供するために結合される。ネゲーション回路７０４は、出力ベクトル（ｘ１、ｙ１）、（ｘ１、−ｙ１）、（−ｘ１、ｙ１）、又は（−ｘ１、−ｙ１）を生成するために制御値Ｃ１  ７２４に応答して入力ベクトル７０１の座標を選択的にネゲートすることができる。
【００５４】
スワップ回路７０２は、制御値Ｃ１  ７２４に応答してネゲーション回路７０４から受信されたデータを選択的にスワップし及び出力ベクトル（Ｘｏｕｔ、Ｙｏｕｔ）７１０を生成する。出力ベクトル７１０は、制御値Ｃ１  ７２４によって示される９０度の倍数だけ座標原点を中心として回転された後の入力ベクトル７０１に対応する。
【００５５】
特定の実施形態においては、システム７００は、第１及び第２の座標を受信することと、回転量が９０度であるときに第２の座標を選択的にネゲートすることと、回転量が１８０度である時に第１及び第２の座標を選択的にネゲートすることと、回転量が２７０度であるときに第１の座標を選択的にネゲートすることと、回転量が９０度又は２７０度であるときに両座標を選択的にスワップすること、とを含む高速ベクトル回転アルゴリズムを実装するためにプログラミングされたプロセッサを表す。スワップ回路７０２は、プロセッサ実行ユニット、ファームウェア、ハードウェア、又はそれらのいずれかの組み合わせにおいて実行されるスワップ動作である、２つ以上の入力値を選択的にスワップすること、を行うように構成されたクロスバーデバイス、マルチプレクサデバイス、他のデバイスを用いて実装することができる。ネゲーション回路７０４は、プロセッサ実行ユニット、ファームウェア、ハードウェア、又はそれらのいずれかの組み合わせにおいて実行されるネゲーション動作である、２つ以上の入力値を選択的にネゲートすること、を行うように構成されたベクトル加算器、ベクトル乗算器、他のデバイスを用いて実装することができる。
【００５６】
図８を参照し、高速回演算を行う方法の第１の例示的な実施形態が示され、概して指定数字８００が付される。方法８００は、単一の命令をプロセッサにおいて実行することを含む。特定の実施形態においては、方法は、図１乃至７に示されるシステムのうちの１つ以上において行うことができる。
【００５７】
単一の命令を実行することは、８０２において、第１の座標及び第２の座標を示す第１のデータを受信することを含む。特定の実施形態においては、第１の座標及び第２の座標は、ベクトルのＸ成分及びＹ成分を特定する。８０４に移動し、９０度の倍数の組から選択された第１の回転値を示す第１の制御値が受信される。特定の実施形態においては、９０度の倍数の組は、ゼロ度と、９０度と、１８０度と、２７０度と、を含む。
【００５８】
８０６に続き、特定の実施形態においては、単一の命令を実行することは、第１の回転値が９０度又は２７０度に対応するときに第１の座標及び第２の座標をスワップすることをさらに含む。８０８に進み、第１の回転値が９０度、１８０度、又は２７０度に対応するときに第１の座標及び第２の座標のうちの少なくとも１つがネゲートされる。
【００５９】
８１０に進み、特定の実施形態においては、第１の座標又は第２の座標をネゲートするときにオーバーフロー状態を防止するために飽和論理が適用される。８１２に移動し、出力データがデータ記憶素子に書き込まれる。例えば、データ記憶素子は、データを格納するための１つ以上のラッチ、フリップフロップデバイス、レジスタ、キャッシュ、メモリ、又はその他のいずれかのデバイス又はシステムを含むことができる。出力データは、第１の回転値だけ回転された第１のデータに対応する。例えば、第１のデータは、座標原点から第１及び第２の座標の端点まで延びるベクトルを特定することができ、出力データは、第１の回転値によって示された量だけ座標原点を中心に回転後のベクトルの端点を特定することができる。特定の実施形態においては、出力データは、乗算演算又はテーブル検索を行なうことなしに決定され、乗算演算又はテーブル検索を用いる場合よりも少ない電力及びより高速な演算を可能にする。
【００６０】
単一の回転命令は、プロセッサの単一の実行サイクルにおいて実行することができる。例えば、単一の回転命令は、単一の実行サイクルにおいてベクトル回転演算を行うために図４のシステム４００を実装する実行ユニットを含むプロセッサにおいて実行することができる。
【００６１】
特定の実施形態においては、第１の制御値は、受信された無線信号のシンボル値に対応することができる。例えば、無線信号の各シンボル値は、累積された位相からの角度オフセットを表すことができ、第１の制御値は、シンボルと関連づけられた角度オフセットを決定するために累積された位相に基づいてベクトルを調整するために要求される回転度を示すことができる。特定の実施形態においては、単一の回転命令を実行することは、無線受信機の直交復号サイクルと関係させて行うことができる。例えば、受信された無線データが同相成分（Ｉ）及び同相成分と９０度移相である直交成分（Ｑ）を有する場合は、直交成分は、同相成分による復号のために９０度の倍数だけ回転させることができる。
【００６２】
特定の実施形態においては、単一の命令は、マイクロ命令である。例えば、受信された命令を１つ以上の実行可能なマイクロ命令に変換するために好適化されるマイクロコードプロセッサにおいては、単一の命令は、マイクロ命令、すなわち、直接実行可能であり及び複数のその他の実行可能な命令に変換することができない命令、であることができる。他の実施形態においては、単一の命令は、非マイクロコードプロセッサにおいて、すなわち、命令を複数の実行可能なマイクロ命令に最初に変換することなしに受信された命令を実行するプロセッサにおいて、実行することができる。一実施形態においては、単一の命令は、マイクロコードをサポートしないパイプラインにおいて実行することができ、パイプラインは、ベクトル回転出力を、マイクロ命令に対応する一連の副演算（ｓｕｂ−ｏｐｅｒａｔｉｏｎ）を行わずに単一のパイプライン演算として決定する。
【００６３】
図９を参照し、高速回転演算を行う方法の第２の例示的な実施形態が示され、概して指定数字９００が付される。方法９００は、図７に示されるシステムのうちの１つ以上において、又は図８に示される方法８００により、又はそれらの組み合わせにより、実行することができる。
【００６４】
方法９００は、単一の命令を実行することを含み、それは、９０２において、第１の座標及び第２の座標を示す第１のデータを受信することを含む。９０４に移動し、９０度の倍数の組から選択された第１の回転値を示す第１の制御値が受信される。特定の実施形態においては、９０度の倍数の組は、ゼロ度と、９０度と、１８０度と、２７０度と、を含む。
【００６５】
特定の実施形態においては、単一の命令を実行することは、９０６において、第３の座標及び第４の座標を示す第２のデータを受信することも含む。９０８において、９０度の倍数の組から選択された第２の回転値を示す第２の制御値を受信することができる。第１の回転値だけ回転された第１のデータに対応する出力データは、第２の回転値だけ回転された第２のデータに対応する第２の出力データを決定することと同時並行して決定することができる。出力データ及び第２の出力データは、９１２において、データ記憶素子に書き込むことができる。
【００６６】
特定の実施形態においては、出力データ及び第２の出力データは、出力データ又は第２の出力データのうちのいずれかがレジスタファイルに書き込まれる前にプロセッサの単一の実行ユニットにおいて決定することができる。例えば、第２の出力データは、図２のシステム２００に関して説明されるように、出力データを決定することと同時並行して決定することができる。例示的な実施形態において、プロセッサの実行ユニットは、図４のシステム４００を含み、クロスバー４０８、ベクトル加算器４１０、及び乗算器４１２は、第１の入力データ及び第２の入力データに対して並行して動作することができ、出力データ及び第２の出力データは、実質的に同時並行して出力レジスタ４１４に書き込むことができる。
【００６７】
ここにおいて開示される実施形態と関係させて説明される様々な例示的な論理ブロック、構成、モジュール、回路、及びアルゴリズム上のステップは、電子ハードウェア、コンピュータソフトウェア、又は両方の組み合わせとして実装可能であることを当業者はさらに理解するであろう。ハードウェアとソフトウェアのこの互換性を明確に例示するため、様々な例示的コンポーネント、ブロック、構成、モジュール、回路、及びステップが、各々の機能の観点で一般的に上述されている。該機能がハードウェアとして又はソフトウェアとして実装されるかは、全体的システムに対する特定の用途上の及び設計上の制約事項に依存する。当業者は、説明されている機能を各々の特定の用途に合わせて様々な形で実装することができるが、該実装決定は、本開示の適用範囲からの逸脱を生じさせるものであるとは解釈すべきではない。  
ここにおいて開示される実施形態と関係させて説明される方法又はアルゴリズムのステップは、直接ハードウェア内において、プロセッサによって実行されるソフトウェアモジュール内において、又はこれらの２つの組み合わせ内において具現化することが可能である。ソフトウェアモジュールは、ランダムアクセスメモリ（ＲＡＭ）、フラッシュメモリ、読み取り専用メモリ（ＲＯＭ）、プログラマブル読み取り専用メモリ（ＰＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ）、レジスタ、ハードディスク、取り外し可能なディスク、コンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、又は当業において既知であるその他のあらゆる形態の記憶媒体において常駐することができる。典型的な記憶媒体は、プロセッサに結合され、このため、プロセッサは、記憶媒体から情報を読み出すこと及び記憶媒体に情報を書き込むことができる。代替においては、記憶媒体は、プロセッサと一体化させることができる。プロセッサ及び記憶媒体は、特定用途向け集積回路（ＡＳＩＣ）内に常駐することができる。ＡＳＩＣは、計算デバイス又はユーザ端末内に常駐することができる。代替においては、プロセッサ及び記憶媒体は、計算デバイス又はユーザ端末内において個別コンポーネントとして常駐することができる。
【００６８】
開示される実施形態に関する前の説明は、当業者が開示される実施形態を製造又は使用することを可能にするために提供される。これらの実施形態に対する様々な修正は、当業者にとって容易に明確になるであろう、及びここにおいて定められる一般原理は、本開示の適用範囲を逸脱せずにその他の実施形態に対しても適用することができる。以上のように、本開示は、ここにおいて示される実施形態に限定されることが意図されるものではなく、以下の請求項よって定義される原理及び斬新な特徴に一致する限りにおいて最も広範な適用範囲が認められるべきである。
【図１】
2014238847.tif 000004
【図２】
2014238847.tif 000005
【図３】
2014238847.tif 000006
【図４】
2014238847.tif 000007
【図５】
2014238847.tif 000008
【図６】
2014238847.tif 000009
【図７】
2014238847.tif 000010
【図８】
2014238847.tif 000011
【図９】
2014238847.tif 000012
【手続補正書】
【提出日】平成26年8月4日(2014.8.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
方法であって、
単一の命令をプロセッサにおいて実行することを備え、前記単一の命令を実行することは、
第１の座標及び第２の座標を示す第１のデータを受信することと、
９０度の倍数の組から選択された第１の回転値を示す第１の制御値を受信することと、
出力データをデータ記憶素子に書き込むことであって、前記出力データは、前記第１の回転値だけ回転された前記第１のデータに対応することと、を含む、方法。
【外国語明細書】
2014238847000001.pdf