(57)【要約】  処理回路と、１つまたは複数のレジスタと、制御回路とを備える装置および方法が提供される。この制御回路は、結合マグニチュード検出算術命令に応答して、少なくとも１つのデータエレメント上で算術演算を実行するように、さらに、マグニチュード検出演算を実行するように、処理回路を制御するように構成される。マグニチュード検出演算は、算術演算のマグニチュードの最上位ビットのポジションが、少なくとも１つのデータエレメントのデータエレメント幅を超えるかどうかにかかわらず、最上位ビットのポジションを表示するマグニチュード表示結果を計算する。
2011501310.tif 000002
【特許請求の範囲】
【請求項１】
データを処理するための装置であって、前記装置が、
データ処理演算を実行するための処理回路と、
データを保存するための１つまたは複数のレジスタと、
前記データ処理演算を実行するように前記処理回路を制御するための制御回路と、
を備え、
前記制御回路が、結合マグニチュード検出算術命令に応答して、前記１つまたは複数のレジスタに保存されかつ前記結合マグニチュード検出算術命令によって特定される少なくとも１つのデータエレメント上で、算術演算を実行するように、またマグニチュード検出演算を実行するように前記処理回路を制御するように構成され、
前記マグニチュード検出演算が、前記算術演算の結果のマグニチュードの最上位ビットのポジションが前記少なくとも１つのデータエレメントのデータエレメント幅を超えるかどうかにかかわらず、前記最上位ビットのポジションを表示するマグニチュード表示結果を計算することを特徴とする装置。
【請求項２】
前記処理回路が、複数のＳＩＭＤレーンのそれぞれについて、前記算術演算を独立して実行するように構成されるＳＩＭＤ処理回路であり、前記結合マグニチュード検出算術命令が、前記算術演算をその上で独立して実行して、それぞれ対応する複数の結果データエレメントを含むＳＩＭＤ結果ベクトルを発生させる複数のデータエレメントを含む少なくとも１つのＳＩＭＤ入力ベクトルを示すことを特徴とする請求項１に記載の装置。
【請求項３】
前記マグニチュード表示結果が、前記ＳＩＭＤ結果ベクトルのそれぞれ対応する複数の結果データエレメントに対応する複数のマグニチュードのうち最大マグニチュードの最上位ビットを表示することを特徴とする請求項２に記載の装置。
【請求項４】
前記マグニチュード表示結果が、前記複数のＳＩＭＤレーンにそれぞれ対応する複数のマグニチュード表示結果値を有するＳＩＭＤ結果ベクトルを含むことを特徴とする請求項２に記載の装置。
【請求項５】
前記１つまたは複数のレジスタが、ＳＩＭＤレジスタバンクおよびスカラーレジスタバンクを備えることを特徴とする請求項２に記載の装置。
【請求項６】
前記制御回路が、前記ＳＩＭＤ算術演算の前記結果を前記ＳＩＭＤレジスタバンクに保存するように、前記処理回路を制御することを特徴とする請求項５に記載の装置。
【請求項７】
前記制御回路が、前記マグニチュード表示結果を汎用レジスタに保存するように、前記処理回路を制御することを特徴とする請求項１から請求項６のいずれか１項に記載の装置。
【請求項８】
前記汎用レジスタが、ＳＩＭＤレジスタおよびスカラーレジスタのうち１つであることを特徴とする、請求項２に従属する場合の請求項７に記載の装置。
【請求項９】
前記マグニチュード表示結果が、専用レジスタに保存されることを特徴とする請求項１から請求項８のいずれか１項に記載の装置。
【請求項１０】
前記算術演算が、符号付きでない算術演算であることを特徴とする請求項１から請求項９のいずれか１項に記載の装置。
【請求項１１】
前記算術演算が、符号付き算術演算であることを特徴とする請求項１から請求項１０のいずれか１項に記載の装置。
【請求項１２】
前記制御回路が、前記結合マグニチュード検出算術命令に応答して、前記結合マグニチュード検出演算命令によって特定されるスケーリングパラメータに応じて前記算術演算を実行する前に、前記少なくとも１つのデータエレメントをスケーリングするように、スケーリング計算を実行することを特徴とする請求項１から請求項１１のいずれか１項に記載の装置。
【請求項１３】
前記制御回路が、前記結合マグニチュード検出算術命令に応答して、前記スケーリング計算の出力から前記マグニチュード表示結果を計算することを特徴とする請求項１２に記載の装置。
【請求項１４】
前記結合マグニチュード検出算術命令が、ブロック浮動小数点命令であることを特徴とする請求項１から請求項１３のいずれか１項に記載の装置。
【請求項１５】
前記算術演算が、ｍｏｖｅ  ａｄｄ、ｓｕｂｔｒａｃｔ、ｍｕｌｔｉｐｌｙおよびｍｕｌｔｉｐｌｙ−ａｃｃｕｍｕｌａｔｅ演算のうち少なくとも１つであることを特徴とする請求項１から請求項１４のいずれか１項に記載の装置。
【請求項１６】
前記制御回路が、前記結合マグニチュード検出算術命令に応答して、前記マグニチュード表示結果を計算するために、前記ＳＩＭＤ算術演算の前記結果の前記複数のデータエレメントのうち少なくとも２つの上で、少なくとも１つの論理演算を実行するように、前記処理回路を制御し、前記少なくとも１つの論理演算は、論理ＯＲ演算と機能的に同等であることを特徴とする請求項２に記載の装置。
【請求項１７】
前記制御回路が、前記結合マグニチュード検出算術命令に応答して、前記少なくとも２つのデータエレメントのビットのサブセット上で、前記少なくとも１つの論理演算を実行するように、前記処理回路を制御することを特徴とする請求項１６に記載の装置。
【請求項１８】
前記ビットのサブセットが、前記少なくとも２つのデータエレメントのそれぞれ対応するものの１つまたは複数の最上位ビットに対応することを特徴とする請求項１７に記載の装置。
【請求項１９】
前記制御回路が、前記結合マグニチュード検出算術命令に応答して、前記少なくとも１つの論理演算を実行する前に、負の値を有する前記ＳＩＭＤ算術演算の前記結果の前記複数のデータエレメントのうち１つまたは複数を検出し、かつ前記負の値を反転させるように、前記処理回路を制御することを特徴とする、請求項１１に従属する場合の請求項１６に記載の装置。
【請求項２０】
前記制御回路が、前記結合マグニチュード検出算術命令に応答して、前記少なくとも１つの論理演算を実行する前に、負の値を有する前記ＳＩＭＤ算術演算の前記結果の前記複数のデータエレメントのうち１つまたは複数を検出し、かつ前記負の値を無効にするように、前記処理回路を制御することを特徴とする請求項１６に記載の装置。
【請求項２１】
前記制御回路が、前記結合マグニチュード検出算術命令に応答して、前記結合マグニチュード検出演算命令によって特定されるオペランドに応じて前記マグニチュード表示結果を計算するように、前記処理回路制御することを特徴とする請求項１から請求項２０のいずれか１項に記載の装置。
【請求項２２】
前記少なくとも１つの論理演算が前記オペランドに依存することを特徴とする請求項２１に記載の装置。
【請求項２３】
前記処理回路が、前記最上位非ゼロビットが、Ｃｏｕｎｔ  Ｌｅａｄｉｎｇ  Ｚｅｒｏｓ命令およびＣｏｕｎｔ  Ｌｅａｄｉｎｇ  Ｓｉｇｎ命令のうち１つを実行することによって、前記マグニチュード表示結果から導き出せるように、前記マグニチュード表示結果を計算することを特徴とする請求項１から請求項２２のいずれか１項に記載の装置。
【請求項２４】
制御回路が、前記マグニチュード表示結果を前記１つまたは複数のレジスタのマグニチュード表示レジスタに保存するように、前記処理回路を制御することを特徴とする請求項１から請求項２３のいずれか１項に記載の装置。
【請求項２５】
前記マグニチュード表示レジスタが、前記結合マグニチュード検出演算命令のパラメータによって特定されることを特徴とする請求項２４に記載の装置。
【請求項２６】
前記マグニチュード表示レジスタが、汎用レジスタであることを特徴とする請求項２４に記載の装置。
【請求項２７】
前記汎用レジスタが、ＳＩＭＤレジスタおよびスカラーレジスタのうち１つであることを特徴とする請求項２６に記載の装置。
【請求項２８】
前記結合マグニチュード検出算術命令が、命令のループ内に提供され、それにより前記マグニチュード表示結果が、前記ループのそれぞれの反復について計算されることを特徴とする請求項１から請求項２７のいずれか１項に記載の装置。
【請求項２９】
前記制御回路が、前記結合マグニチュード検出算術命令に応答して、前記マグニチュード表示レジスタ内に、前記ループのそれぞれの反復に関する前記マグニチュード表示結果を累積することを特徴とする請求項２８に記載の装置。
【請求項３０】
データ処理演算を処理するための処理回路と、データを保存するための１つまたは複数のレジスタと、前記データ処理演算を実行するように前記処理回路を制御するための制御回路と、を有するデータ処理装置によってデータを処理するための方法であって、前記方法が、
結合マグニチュード検出算術命令に応答して、前記１つまたは複数のレジスタに保存され、かつ前記結合マグニチュード検出算術命令によって特定される少なくとも１つのデータエレメント上で、算術演算を実行するように前記処理回路を制御するステップと、
マグニチュード検出演算を実行するステップと、
を含み、
前記マグニチュード検出演算は、前記算術演算の結果のマグニチュードの最上位ビットのポジションが、前記少なくとも１つのデータエレメントのデータエレメント幅を超えるかどうかにかかわらず、前記最上位ビットのポジションを表示するマグニチュード表示結果を計算することを特徴とする方法。
【請求項３１】
データ処理装置上で実行されると、前記データ処理装置を請求項３０に記載の方法にしたがって動作させるように動作可能なコンピュータプログラムを備えるコンピュータプログラム製品であって、前記コンピュータプログラムが、少なくとも１つの結合マグニチュード検出演算命令を含むことを特徴とするコンピュータプログラム製品。
【請求項３２】
データを処理するための装置のエミュレートする仮想マシンであって、前記装置が、
データ処理演算を実行するための処理回路と、
データを保存するための１つまたは複数のレジスタと、
前記データ処理演算を実行するように前記処理回路を制御するための制御回路と、
を備え、
前記制御回路が、結合マグニチュード検出算術命令に応答して、前記１つまたは複数のレジスタに保存されかつ前記結合マグニチュード検出算術命令によって特定される少なくとも１つのデータエレメント上で、算術演算を実行するように、またマグニチュード検出演算を実行するように前記処理回路を制御するように構成され、
前記マグニチュード検出演算が、前記算術演算の結果のマグニチュードの最上位ビットのポジションが前記少なくとも１つのデータエレメントのデータエレメント幅を超えるかどうかにかかわらず、前記最上位ビットのポジションを表示するマグニチュード表示結果を計算することを特徴とする仮想マシン。
【請求項３３】
添付の図面を参照して、実質的に前述されたようなデータ処理装置。
【請求項３４】
添付の図面を参照して、実質的に前述されたようなデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、算術演算のためにマグニチュード検出を実行するための装置および方法に関する。
【背景技術】
【０００２】
多くのデータ処理アプリケーションにおいて、算術演算を実行し、算術結果のスケーリングを実行することが要求される。スケーリングを実行するための１つの技法は、ブロック浮動小数点技法である。ブロック浮動小数点算術において、データエレメントのブロックは、自身のべき指数を有する各データエレメントではなく、単一のべき指数を割り当てられる。したがって、べき指数は、典型的には、最大マグニチュードを有するブロックのデータエレメントによって規定される。ブロック浮動小数点技法は、標準的な浮動小数点算術に対して、一連の計算における精度を維持するために必要とされるビットの数を少なくする。ブロック浮動小数点計算は、典型的には、ソフトウェア内で実行され、データ値のマグニチュードにおける変化を含み得る計算の各ステージに続く完全なデータセットのスケーリングを必要とする。データスケーリングを維持してオーバーフローを防止するために必要とされる追加の命令は、処理サイクルおよび消費電力の両方の点において、処理性能を減少させる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
したがって、データスケーリングおよびデータ上で実行されるべき算術演算の両方が必要とされるブロック浮動小数点計算などの計算の効率を改善することが必要とされる。
【課題を解決するための手段】
【０００４】
第１の態様によると、本発明は、データを処理するための装置を提供し、前記装置は、
データ処理演算を実行するための処理回路と、
データを保存するための１つまたは複数のレジスタと、
前記データ処理演算を実行するように前記処理回路を制御するための制御回路と、を備え、
前記制御回路が、結合マグニチュード検出算術命令に応答して、前記１つまたは複数のレジスタに保存されかつ前記結合マグニチュード検出算術命令によって特定される少なくとも１つのデータエレメント上で、算術演算を実行するように、またマグニチュード検出演算を実行するように前記処理回路を制御するように構成され、前記マグニチュード検出演算が、前記算術演算の結果のマグニチュードの最上位ビットのポジションが前記少なくとも１つのデータエレメントのデータエレメント幅を超えるかどうかにかかわらず、前記最上位ビットのポジションを表示するマグニチュード表示結果を計算する。
【０００５】
本発明により、少なくとも１つのデータエレメント上で算術演算を実行するとともに、マグニチュード検出演算を実行して、算術演算の最上位ビットのポジションがデータエレメントのデータエレメント幅を超えるかどうかにかかわらず、最上位ビットのポジションを表示する単一の命令を提供することによって、算術演算とデータスケーリングの両方を実行するアルゴリズムに関するプログラムコード密度を減少させることができることが分かる。算術結果を計算するとともに、算術結果の最上位ビットのポジションを容易に計算できるようにする専用の命令を提供することは、別個にマグニチュード検出および算術演算を提供する既知のシステムに比べて、より効果的に共通のデータ操作を実行できることを意味する。このように高められた効果は、以前より知られているシステムと相対的に同じ機能について、実行される命令が減少し、スループットが向上し、消費電力が減少した結果として得られるものである。
【０００６】
本発明の技法による結合マグニチュード検出算術命令を、スカラー処理回路のみを備えるデータ処理装置で実装することができる。一実施形態において、処理回路は、複数のＳＩＭＤレーンのそれぞれについて、算術演算を独立して実行するように構成されるＳＩＭＤ処理回路であり、結合マグニチュード検出算術命令は、算術演算をその上で独立して実行して、それぞれ対応する複数の結果データエレメントを含むＳＩＭＤ結果ベクトルを発生させる複数のデータエレメントを含む少なくとも１つのＳＩＭＤ入力ベクトルを示す。これにより、複数のマグニチュード表示結果を、実質的に同時に計算されるべきＳＩＭＤ結果ベクトルのそれぞれ対応する複数の結果データエレメントに対応させることができるので、効率を改善することができる。
【０００７】
マグニチュード表示結果は、ＳＩＭＤ結果ベクトル内の複数のデータエレメントのいずれか１つの最上位ビットを示し得るが、一実施形態では、マグニチュード表示結果は、ＳＩＭＤ結果ベクトルのそれぞれ対応する複数のデータエレメントに対応する、複数のマグニチュードのうち最も大きなマグニチュードの最上位ビットを表示する。その効果として、データセットのスケーリングを可能にする情報を提供する。
【０００８】
様々な異なる形態でマグニチュード表示結果を提供することができるが、一実施形態では、マグニチュード表示結果は、複数のＳＩＭＤレーンにそれぞれ対応する複数のマグニチュード表示結果値を有するＳＩＭＤ結果ベクトルを含む。
【０００９】
結合マグニチュード検出算術命令に応答するデータ処理装置の１つまたは複数のレジスタは、単一のレジスタバンクを備え得る。しかしながら一実施形態では、その１つまたは複数のレジスタは、ＳＩＭＤレジスタバンクおよびスカラーレジスタバンクを含む。これにより、スカラーレジスタ内にマグニチュード表示結果を保存できるので、ＳＩＭＤシステム内に命令を効率的に実装することが可能になる。
【００１０】
一実施形態では、制御回路は、ＳＩＭＤレジスタバンクにＳＩＭＤ算術演算の結果を保存するように、処理回路を制御する。
【００１１】
任意の形態のメモリまたは専用レジスタに、マグニチュード表示結果を保存できることを理解されたい。しかしながら一実施形態では、制御回路は、汎用レジスタにマグニチュード表示結果を保存するように、処理回路を制御する。一実施形態では、汎用レジスタはＳＩＭＤレジスタであり、別の実施形態では、汎用レジスタはスカラーレジスタである。さらなる代替実施形態では、マグニチュード表示結果は、専用レジスタに保存される。
【００１２】
算術演算は、任意の様々な算術演算とし得るが、一実施形態では、算術演算は符号付きでない算術演算であり、別の実施形態では、算術演算は符号付き算術演算である。
【００１３】
スケーリング計算を実行しながら、算術演算を実行することを理解されたい。しかしながら一実施形態では、制御回路は、結合マグニチュード検出算術命令に応答して、結合マグニチュード検出算術命令によって特定されたスケーリングパラメータに応じて算術演算を実行する前に、少なくとも１つのデータエレメントをスケーリングするように、スケーリング計算を実行する。これは、典型的には算術演算が実行された後に、スケーリング演算が実行される既知の浮動小数点算術とは異なる。
【００１４】
算術演算のスケーリングされていない結果に基づいて、マグニチュード表示結果を計算することができ、次いでいくつかのその他のスキームを使用して、スケーリングが有するであろう既知の効果にしたがって、計算結果を修正することができることを理解されたい。一実施形態では、制御回路は、結合マグニチュード検出算術命令に応答して、スケーリング計算の出力からマグニチュード表示結果を計算する。
【００１５】
結合マグニチュード検出算術命令は任意のタイプの命令とすることができるが、一実施形態では、結合マグニチュード検出算術命令は、ブロック浮動小数点命令である。結合された命令を提供することにより、データスケーリングを維持するために追加の命令を必要とする既知のブロック浮動小数点技法を用いて、重大な性能問題（処理サイクルおよび電力の両方）が軽減される。
【００１６】
算術演算は、多くの異なる算術演算のいずれか１つとすることができるが、ある特定の実施形態では、算術演算は、ｍｏｖｅ  ａｄｄ、ｓｕｂｔｒａｃｔ、ｍｕｌｔｉｐｌｙおよびｍｕｌｔｉｐｌｙ−ａｃｃｕｍｕｌａｔｅ演算のうち少なくとも１つであることを理解されたい
【００１７】
多くの方法のうちいずれか１つで、マグニチュード表示結果の計算を実行できることを理解されたい。一実施形態では、制御回路は、結合マグニチュード検出算術命令に応答して、マグニチュード表示結果を計算するために、ＳＩＭＤ算術演算の結果の複数のデータエレメントのうち少なくとも２つの上で、少なくとも１つの論理演算を実行するように、処理回路を制御し、少なくとも１つの論理演算は、論理ＯＲ演算と機能的に同等である。論理ＯＲ演算と機能的に同等である少なくとも１つの論理演算を用いるマグニチュード表示結果の計算は、実施するのが簡単かつ安価であり、ＡＬＵの複雑性を少しだけ高めて効率を高めることを含む。
【００１８】
算術結果の完全なデータエレメントまたは結果ベクトル上で、少なくとも１つの論理演算を実行できるが、一実施形態では、制御回路は、結合マグニチュード検出算術命令に応答して、少なくとも２つのデータエレメントにおけるビットのサブセット上で、少なくとも１つの論理演算を実行するように、処理回路を制御する。これにより、より小さなボリュームのデータを処理することによって、より効率的に最上位ビットのポジションを決定できるようになる。そのような一実施形態では、ビットのサブセットは、少なくとも２つのデータエレメントのうちそれぞれ対応するデータエレメントの１つまたは複数の最上位ビットに対応する。
【００１９】
一実施形態では、制御回路は、結合マグニチュード検出算術命令に応答して、少なくとも１つの論理演算を実行する前に、負の値を有するＳＩＭＤ算術演算の結果の複数のデータエレメントのうち１つまたは複数を検出し、かつ前記負の値を反転させるように、処理回路を制御する。
【００２０】
別の実施形態では、負の値を反転させるのではなく、制御回路は、結合マグニチュード検出算術命令に応答して、少なくとも１つの論理演算を実行する前に、負の値を有するＳＩＭＤ算術演算の結果の複数のデータエレメントのうち１つまたは複数を検出し、かつ負の値を否定するように、処理回路を制御する。これにより、符号付きデータ値についてもスケーリングするために、決定されるべき最上位ビットのポジションに関する結果を正確にすることができるようになる。このようなデータ値の否定および反転は、実施を簡単にする。
【００２１】
一実施形態では、制御回路は、結合マグニチュード検出算術命令に応答して、結合マグニチュード検出演算命令によって特定されるオペランドに応じてマグニチュード表示結果を計算するように、処理回路を制御する。このような一実施形態では、少なくとも１つの論理演算は、オペランドに依存する。これにより、たとえばオペランドが、少なくとも１つの論理演算について、１つまたは複数のレジスタ内の共通ソースおよびデスティネーションを特定することができるので、マグニチュード検出演算を実行する際に、自由度が増す。また、問題を、結果データ値のそれぞれのグループに関するマグニチュード計算のサブセットに分解できるようにすることによって、大きなループに関する最上位ビットのポジションの計算を結合させる、より効率的な方法が提供される。
【００２２】
マグニチュード表示結果は、最上位の非ゼロビットのポジションを導き出すための多くの異なる方法のいずれか１つで、後処理し得ることを理解されたい。しかしながら一実施形態では、処理回路は、最上位非ゼロビットが、Ｃｏｕｎｔ  Ｌｅａｄｉｎｇ  Ｚｅｒｏｓ命令およびＣｏｕｎｔ  Ｌｅａｄｉｎｇ  Ｓｉｇｎ命令のうち１つを実行することによって、マグニチュード表示結果から導き出され得るように、マグニチュード表示結果を計算する。これらの既存の命令を使用すると、本発明の技法の実施が容易になる。
【００２３】
マグニチュード表示結果は、多くの異なる方法のいずれか１つで保存し得ることを理解されたい。しかしながら一実施形態では、制御回路は、１つまたはレジスタのマグニチュード表示レジスタ内にマグニチュード表示結果を保存するように、処理回路を制御する。
【００２４】
このような一実施形態では、マグニチュード表示レジスタは、結合マグニチュード検出算術命令のパラメータによって特定される。これは、実施に便利であり、適当なレジスタを特定するにあたり自由度を与える。
【００２５】
一実施形態において、マグニチュード表示レジスタは、汎用レジスタである。このようないくつかの実施形態では、汎用レジスタは、ＳＩＭＤレジスタおよびスカラーレジスタの１つである。
【００２６】
算術結果のマグニチュードの表示が必要とされるプログラムコードのいずれの場所にも、結合マグニチュード検出算術命令を含み得るが、一実施形態では、結合マグニチュード検出算術命令は、マグニチュード表示結果がループの反復毎に計算されるように、命令のループ内に提供される。算術命令を実行し、さらに算術結果の最上位ビットポジションを表示するために単一の命令を提供する効果は、そのような演算をプログラムコードのループ内で反復して実行する傾向にある場合に、特に明らかである。
【００２７】
一実施形態では、制御回路は、結合マグニチュード検出算術命令に応答して、マグニチュード表示レジスタ内に、ループのそれぞれの反復に関するマグニチュード表示結果を累積する。これにより、複数の結果値に関する最上位ビットポジションの計算を、より管理しやすいサブ計算に分解する自由度が提供される。
【００２８】
第２の態様によると、本発明は、データ処理演算を実行するための処理回路、データを保存するための１つまたは複数のレジスタ、および前記データ処理演算を実行するように前記処理回路を制御するための制御回路を有するデータ処理装置を用いて、データを処理するための方法を提供し、前記方法が、結合マグニチュード検出演算命令に応答して、
前記１つまたは複数のレジスタに保存されかつ前記結合マグニチュード検出演算命令によって特定される少なくとも１つのデータエレメント上で、算術演算を実行するように、前記処理回路を制御するステップと、
マグニチュード検出演算を実行するステップであって、前記マグニチュード検出演算が、前記算術演算の結果のマグニチュードの最上位ビットのポジションが、前記少なくとも１つのデータエレメントのデータエレメント幅を超えるかどうかにかかわらず、前記最上位ビットのポジションを表示するマグニチュード表示結果を計算するステップと、を含む。
【００２９】
第３の態様によると、本発明は、データを処理するための装置のエミュレートする仮想マシンを提供し、前記装置が、
データ処理演算を実行するための処理回路と、
データを保存するための１つまたは複数のレジスタと、
前記データ処理演算を実行するように前記処理回路を制御するための制御回路と、を備え、
前記制御回路が、結合マグニチュード検出算術命令に応答して、前記１つまたは複数のレジスタに保存されかつ前記結合マグニチュード検出算術命令によって特定される少なくとも１つのデータエレメント上で、算術演算を実行するように、またマグニチュード検出演算を実行するように前記処理回路を制御するように構成され、前記マグニチュード検出演算が、前記算術演算の結果のマグニチュードの最上位ビットのポジションが前記少なくとも１つのデータエレメントのデータエレメント幅を超えるかどうかにかかわらず、前記最上位ビットのポジションを表示するマグニチュード表示結果を計算する。
【００３０】
本発明の諸実施形態を、添付の図面を参照して、単に例としてのみ、以下に記載する。
【図面の簡単な説明】
【００３１】
【図１】高速フーリエ変換の計算中に実行されるデータ操作を示す「蝶形図」を概略的に示す図である。
【図２】既知のブロック浮動小数点アルゴリズムが、どのように高速フーリエ変換計算を実行するかを概略的に示すフローチャートである。
【図３】本発明の実施形態によるブロック浮動小数点アルゴリズムを概略的に示すフローチャートである。
【図４】本発明の代替実施形態によるブロック浮動小数点アルゴリズムを概略的に示すフローチャートである。
【図５】本発明の技法による結合マグニチュード検出算術命令を実施するためのデータエンジンを概略的に示す図である。
【図６】図５の最大マスク回路をより詳細に示す概略図である。
【図７Ａ】本発明の技法による結合マグニチュード検出算術命令の実行のための、回路および関連付けられたデータフローの２つの異なるセットを概略的に示す図である。
【図７Ｂ】本発明の技法による結合マグニチュード検出算術命令の実行のための、回路および関連付けられたデータフローの２つの異なるセットを概略的に示す図である。
【図８】図５のデータエンジンの仮想マシン実装を概略的に示す図である。
【発明を実施するための形態】
【００３２】
フーリエ変換は、関数を周波数成分の連続するスペクトルに分解する数学演算である。
【００３３】
離散フーリエ変換は、離散時間信号に対応するフーリエ変換であり、サンプル信号に含まれる周波数を分析して、偏微分方程式を解き、かつ、コンボリューションなどのその他の演算を実行するために、信号処理アプリケーションで広く利用される。高速フーリエ変換（ＦＦＴ）アルゴリズムを使用して、離散フーリエ変換を計算する。
【００３４】
離散フーリエ変換は、以下の数式で記載することができる。
【００３５】
【数１】
2011501310.tif 000003
【００３６】
変換計算は、所与のＮ個の入力データ値がシーケンスｘ（ｎ）（多くの場合、複素数であることも想定される）に対応し、ＷＮ＝ｅ-ｊ２π／Ｎ（回転因子）の場合、複素数のシーケンスＸ（ｋ）を計算することを含む。
【００３７】
【数２】
2011501310.tif 000004
【００３８】
Ｘ（ｋ）を偶数番号のサンプルおよび奇数番号のサンプルに分けること（デシメーションと呼ばれるプロセス）により、以下の数式が得られる。
【００３９】
【数３】
2011501310.tif 000005
【００４０】
【数４】
2011501310.tif 000006
【００４１】
これらの数式は、離散フーリエ変換を計算するための周波数間引きＦＦＴアルゴリズムを形成する。周波数間引きＦＦＴを介するこのＮポイントＤＦＴの計算は、Ｎｌｏｇ２Ｎ回の複素加算および（Ｎ／２）ｌｏｇ２Ｎ回の複素乗算を必要とする。
【００４２】
離散フーリエ変換に含まれる合計を直接評価するためには、数式は、全部でＮ個のデータサンプルに関するＮ２回の数学演算に対するオーダをとるが、ＦＦＴアルゴリズムにより、同じ結果を、ＮＬｏｇＮ回の演算のオーダのみで計算できるようになる。この単純化は、任意のコンポジットサイズＮ＝Ｎ１．Ｎ２の離散フーリエ変換をサイズＮ１およびＮ２の複数のより小さなＤＦＴならびに「回転因子」として知られる１の複素根のＮ倍のオーダを機能的に分解することによって達成される。ｒａｄｉｘ−２  ＦＦＴアルゴリズムは、離散フーリエ変換を、各ステップでサイズＮ／２の２つのピースに分ける。
【００４３】
図１は、高速フーリエ変換の計算中に実行されるデータ操作を示す「蝶形図」を概略的に示す。
【００４４】
図１の蝶形図によって表される基本的な計算は、ＦＦＴ計算中に、多数回繰り返される。蝶形図には、２つの複素入力値ａおよびｂが示される。入力値ａは、実コンポーネントｒ０および虚コンポーネントｉ０を有し、一方入力値ｂは、実コンポーネントｒ１および虚コンポーネントｉ１を有する。図の右側の点は、ＦＦＴ計算の１ラウンドの出力に対応する。具体的には、出力値Ａは、入力値ａおよび入力値ｂの複素和を表す。出力値Ａの実数部は、入力値ａおよび入力値ｂのそれぞれの実コンポーネントの和、すなわちｒ０＋ｒ１によって求められ、一方虚数部は、ａおよびｂの虚数部の和、すなわちｉ０＋ｉ１によって求められる。また、出力値Ｂは、入力値ａおよび入力値ｂに依存して計算されるが、このとき、複素差分演算ａ−ｂおよび「回転因子」Ｗとして知られる複素係数の乗算に対応する。したがって、出力値Ｂは、（ａ−ｂ）＊Ｗによって求められ、単一の複素積を含む。蝶形図の矢印を有する線は、データフローを表し、したがって、出力データ値ＡおよびＢと入力データ値ａおよびｂとの間の依存性が示される。出力ＡおよびＢは、２つのサブ変換の出力に対応する。
【００４５】
ＦＦＴ計算は、複数の計算のループを含み、その各ループは、複数の蝶形図の計算を含む。したがって、図１の出力値ＡおよびＢは、入力値として、バタフライ計算の後続のラウンドに供給される。しかしながら、たとえば、バタフライ計算の次のラウンドを実行する前に、ベクトル上でデインターリーブ（本明細書では、「アンジップ」オペレーションとも定義される）を実行することにより、計算の以前のラウンドからの結果ベクトルが、典型的には、バタフライ計算の後続のラウンド（計算の内側ループ）同士の間に再配置される。
【００４６】
蝶形図の計算を含む内側ループの各反復は、データエレメントのビット幅を広げ得ることが、図１のデータフローからわかる。このことは、入力データエレメントａおよびｂを考慮すること、ならびに、出力値Ａが、複素数の実数部および虚数部のそれぞれに関する加法演算を含むことに留意することによって理解できる。したがって、出力値Ａは、加法演算からのキャリービットに起因して、１ビットだけ大きくなることができる。同様に、出力値Ｂは、複素値ｃ＝ａ−ｂ＝ｃｒ＋ｉｃｉと複素回転因子Ｗ＝ｗｒ＋ｉｗｉとの間の複素乗算を含むが、ここで、ｃｒ、ｗｒはｃおよびＷの実コンポーネントであり、ｃｉ、ｗｉはｃおよびＷの虚コンポーネントである。複素乗算ｃ＊Ｔ＝（ｃｒ．ｗｒ＋ｉｃｉ．ｗｒ＋ｉｗｉ．ｃｒ−ｃｉ．ｗｉ）は、２つの加法演算を含むので、その結果、出力値を、入力データエレメントｂのビット幅に対して２ビットずつ大きくすることができる。
【００４７】
したがって、加法演算および乗法演算により、データビット幅は、バタフライ演算が計算されるアルゴリズムの反復回数に比例して大きくなる。一般的には、反復回数は、入力データポイントの数の対数（基底２）に依存する。したがって、ＦＦＴ計算は、典型的には、処理されるエレメントの数に比例して、動的範囲を増加させることを理解されたい。同様の考察が、ビタビアルゴリズムおよびターボ復号アルゴリズムなどのその他の様々な信号処理アルゴリズに当てはまり、本発明の技法は、異なるアルゴリズムの範囲に当てはまるが、ＦＦＴアルゴリズムのみを例として示す。
【００４８】
このような計算の大きな動的範囲に対処するために、ブロック浮動小数点算術計算を実行することができる。ブロック浮動小数点算術において、データのブロックは、独自のべき指数を有するデータエレメントのそれぞれではなく単一のべき指数が割り当てられる。したがって、べき指数は、典型的には、最大マグニチュードを有するブロックのデータエレメントによって決定される。ブロック浮動小数点算術の使用により、複素浮動小数点乗算器および浮動小数点加算器の必要がなくなる。その代わり、複素数値整数対は、データのブロックのその他の複素数値整数対の間で典型的には共有される単一のスケールファクタで表される。ＦＦＴの各段階の後で、最大マグニチュード出力値が検出され、所与の反復の結果をスケーリングして、計算の精度が向上される。べき指数は、スケーリングを実行するために使用される左シフトまたは右シフトの回数を記録する。固定小数点からブロック浮動小数点表現への変換は、典型的には、プログラマーによってソフトウェア内で明示的に実行される。
【００４９】
図２は、既知のブロック浮動小数点アルゴリズムが、どのように計算を実行するかを概略的に示すフローチャートである。この具体的な例において、計算は高速フーリエ変換計算であるが、その他の様々なタイプの計算を同様に実行し得ることを理解されたい。
【００５０】
このプロセスは、最大マグニチュードを有する入力データエレメントに対応する値「ｄｍａｘ」について、入力データのブロックを検索する段階２１０から始まる。次に、段階２２０において、ｄｍａｘの値に依存して、スケーリングシフト値が決定される。次いで、プロセスは、段階２３０に進み、ｊ＝１の場合、ＦＦＴ外側ループに関する指数であるｊの値を１の値にイニシャライズし、その後、逐次ループにインクリメントされる。
【００５１】
次に、段階２４０において、ＦＦＴ内側ループ指数ｉを、第１の反復でイニシャライズし、続いてインクリメントする。この内側ループは、全ての入力データエレメント上でバタフライ演算の１つの完全なラウンドを実行するステップに対応する。内側ループ計算の第１段階は、所定のスケーリングシフト値により入力データエレメントの全てをスケーリングするステップを含む段階２５０である。なお、スケーリングシフト値は、第１の反復に関する段階２２０において決定されるが、その後、段階２９０、すなわち各ＦＦＴ内側ループの最後において決定される。段階２５０における入力データのスケーリングに続いて、各データエレメントは、同じべき指数値および同じデータエレメント幅を共有する。段階２６０は、図１に示される蝶形図のような複数の蝶形図の計算を含むＦＦＴ内側ループ計算の主要部に対応する。ＦＦＴバタフライが計算されると、プロセスは段階２７０に進み、新たな最大マグニチュード「ｄｍａｘ」について、中間結果データ（図１の出力ＡおよびＢに対応する）を検索する。含まれる算術演算に起因して、バタフライ演算の各ラウンドは、入力データ値に対する結果データ値のビット幅の増加を含む可能性があることに留意されたい。したがって、ｄｍａｘの値は、１つの反復から次の反復まで変化する傾向がある。なお、内側ループの反復毎にｄｍａｘが更新されて、更新された最大値ｄｍａｘ’を発生する。
【００５２】
ｄｍａｘの値が段階２７０で更新されると、プロセスは段階２８０に進み、ＦＦＴ内側ループが完了したか否かが判断される。内側ループが完了していない場合、次いで、プロセスは段階２４０に戻り、指数ｉがインクリメントされ、ＦＦＴ内側ループの次の反復が実行される。一方、段階２８０で内側ループが実際に完了していることが決定されると、次いでプロセスは段階２９０に進み、現在の値ｄｍａｘ’を使用して後続のＦＦＴ外側ループで使用するために新たなスケーリングシフト値を計算する。このスケーリングシフト値は、段階２５０で、ＦＦＴ内側ループ計算の次のラウンドを実行する前に、全ての入力データに適用される。
【００５３】
スケーリングシフト値が段階２９０で計算された後に、プロセスは段階２９２に進み、ＦＦＴ外側ループが完了したか否かが判断される。外側ループが完了していない場合、次いでプロセスは段階２３０に戻り、カウンタｊがインクリメントされ、ＦＦＴ内側ループ内のバタフライ計算の次のラウンドの前に、データの再構成が実行される。一方、段階２９２で、外側ループが実際に完了していることが判断される場合、次いでプロセスは段階２９４に進み、計算の各段階において実行されるデータのスケーリングの効果を考慮に入れるために、データノーマライゼーションを実行する。しかしながら、ノーマライゼーション段階２９４は任意選択である。最終的には、段階２９６において、ＦＦＴ計算の結果がメモリ内に保存される。
【００５４】
図３は、本発明の実施形態によるブロック浮動小数点アルゴリズムを概略的に示すフローチャートである。
【００５５】
既知の技法に関連する図２のフローチャートと図３のフローチャートとを比較すると、図３の段階３１０、３２０、３３０、３４０、３５０、３８０、３９０、３９２、３９４および３９６は、図２の既知の技術における段階２１０、２２０、２３０、２４０、２５０、２８０、２９０、２９２、２９４および２９６にそれぞれ直接対応することがわかる。しかしながら、図３の実施形態と図２の既知の技法との１つの重要な相違は、図２の段階２６０、２７０で別個に実行される（ｉ）内側ループＦＦＴ計算を実行するステップと、（ｉｉ）中間結果データをｄｍａｘ’について検索するステップとを、図３では結合させて、図３の単一の段階３６０で実行するようにする点である。
【００５６】
上述のステップ（ｉ）とステップ（ｉｉ）との結合は、所要の１つまたは複数の算術演算を実行するとともに、その１つまたは複数の算術演算の結果に関連付けられたマグニチュード情報を提供する単一のプログラム命令を提供することによって可能となる。ＦＦＴ計算の場合、算術演算は、図１（すなわち、複素加法演算、複素減法演算、複素乗法演算）に示されるような演算である。図３のステップ３６０に示される算術演算のステップをｄｍａｘ’決定と結合させることにより、ＦＦＴアルゴリズムのより効果的な実施形態が提供され、ｄｍａｘ’はＦＦＴ内側ループのバタフライ評価の一部として計算される。図２では、ＦＦＴバタフライが計算された後に、ｄｍａｘ’を（異なるプログラム命令を使用して）別個に求めなければならない。
【００５７】
図３のフローチャートの段階３９０におけるｄｍａｘ’からのスケーリングシフト値の計算は、ＣＬＳ（カウントリーディングサイン）またはＣＬＺ（カウントリーディングゼロ）命令を使用して実行される。ＣＬＺ命令は、レジスタ値の第１のバイナリビットの前に多くのバイナリビットを戻す。ＣＬＳ命令は、ＣＬＳのオペランドを含むデータタイプの最上位ビットに関するノンサインエクステンションビットのポジションを戻す。
【００５８】
たとえば、
ＭＳＢ＿Ｐｏｓｉｔｉｏｎ＝ＣＬＳ（ｄｍａｘ’）
【００５９】
たとえばコンテナが１６ビットで、ｄｍａｘ’が十進法の＋４０９６に対応する０００１＿００００＿００００＿００００（２進法）である場合、ＣＬＳは、値３を戻す。符号付き整数を考慮すると、たとえばｄｍａｘ’が十進法の−２０４８に対応する１１１１＿１０００＿００００＿００００（２進法）である場合、次いで、ＣＬＳは値５を戻す。スケーリングシフト値は、以下のように計算される。
Ｓｈｉｆｔ＿Ｖａｌｕｅ＝Ｔａｒｇｅｔ＿ＭＳＢ−ＭＳＢ＿Ｐｏｓｉｔｉｏｎ
ただし、ターゲットＭＳＢのポジションは、最も大きなスケーリングされたデータのＭＳＢがあるべき場所である。このターゲットＭＳＢは、オーバーフローが起こり得ないように選択される。次いで、シフトが正であれば、データは右にシフトされ、一方シフトが負であれば、データは右にシフトされる。
【００６０】
段階３９０における計算の結果は、段階３５０に適用される。代替的な諸実施形態は、算術演算（この具体的な例における段階３６０）の結果を使用し、次いで、異なるスキームを使用して、スケーリングにより結果にもたらされるであろう既知の効果にしたがって、算術演算の結果を修正する。なお、代替的な構成では、スケーリングをＦＦＴ内側ループ計算の後に実行するように、段階３５０および３６０を交換することができる。計算結果が負の値である場合には、次いで結合されたＭＳＢ結果がＯＲ＿ＭＳＢ＝Ｃｕｒｒｅｎｔ＿ＯＲ＿ＭＳＢ｜（Ｒｅｓｕｌｔ＜０？〜Ｒｅｓｕｌｔ：Ｒｅｓｕｌｔ）となるように、最上位ビットがその計算結果の反転した形から求められる。
【００６１】
図４は、本発明の代替実施形態によるブロック浮動小数点アルゴリズムを概略的に示すフローチャートである。
【００６２】
上述したように、図３の実施形態は、図２の段階２６０と段階２７０とを結合して図３における単一の段階３６０にすることによって、図２の既知の技法と区別される。図４の実施形態は、図２のプロセスの３つの別々の段階、すなわち段階２５０、２６０および２７０を結合して単一の段階４５０にし、それにより（ｉ）全ての入力データをＦＦＴ内側ループの所与の反復に対してスケーリングし、（ｉｉ）ＦＦＴ内側ループバタフライ計算を実行し、かつ（ｉｉｉ）中間結果をｄｍａｘ’について検索する単一のプログラム命令が提供される、
【００６３】
ステップ４５０は、入力データのスケーリングの前に、計算中に起こり得る可能性のあるオーバーフローを考慮に入れるように適合される。図２の既知のブロック浮動小数点アルゴリズムの演算２５０、２６０および２７０をこのように融合させることにより、（図２および図３に関して）計算の各ラウンド毎に入力データのスケーリングを実行するために必要とされる追加の命令の必要性を取り除くことによって、また、（図２に関して）算術演算に続いてｄｍａｘ’を計算するための別個の命令の必要性を取り除くことによって、処理サイクルの回数を減らすことおよびＦＦＴ計算行うために必要とされる電力を減らすことにより、性能優位性が提供される。
【００６４】
図５は、本発明の技法にしたがって結合マグニチュード検出算術命令を実施するためのデータエンジンを概略的に示す。この装置は、コントローラ５１０と、算術演算装置５２２、ＳＩＭＤシフト装置５２４および最大値マスク５２６を備えるＳＩＭＤ  ＡＬＵ５２０と、ＳＩＭＤベクトルレジスタ５３０と、スカラーレジスタバンク５４０と、を有するデータエンジン５００を備える。
【００６５】
図５の実施形態では、結合マグニチュード検出算術命令は、ＳＩＭＤ命令である。ＳＩＭＤ処理は、算術であるべき、そうでなければ実質的に同時に複数のデータエレメント上で同じ演算を実行するステップを含む。ＳＩＭＤ処理は、いわゆる「パックベクトル」を使用し、このパックベクトルは、複数のベーシックデータエレメントを含むデータ構造である。算術演算などのＳＩＭＤ命令に対する引数としてＳＩＭＤパックベクトルを使用することができ、ＳＩＭＤ命令によって特定された算術演算は、実質的に同時に、ＳＩＭＤベクトル内の複数のデータエレメントのそれぞれで独立して実行される。ＳＩＭＤオペランドに対応するパックベクトルは、ベクトルレジスタ５３０内に保存される。ＳＩＭＤ  ＡＬＵ５２０は、ＳＩＭＤベクトル上で算術演算を実行し、マグニチュード検出もまた実行する。
【００６６】
本発明の技法による結合マグニチュード検出算術命令の一例は、「Ｖｒｅｓ」命令である（図５参照）。
ｖＲｅｓ＝ｖａｄｄ＿ｂｆ＿ｓ１６（ｖＡ，ｖＢ，ｓＭａｓｋ）
【００６７】
このｖＲｅｓ命令は、２つのＳＩＭＤベクトル入力オペランドＶａおよびＶｂをとり、各パックベクトルは、３２個の１６ビットデータエレメントを備える。さらなる入力パラメータ「ｓＭａｓｋ」は、スカラーレジスタバンク５４０内のスカラーレジスタに対応する１６ビットスカラー値を特定する。この具体的な例では、算術演算は加法演算「ｖａｄｄ」である。したがって、パックベクトルｖＡおよびｖＢの３２個のデータエレメントに対応して、３２回の独立した加算が行われる。
【００６８】
次に、図５のデータエンジンによってｖＲｅｓ命令をどのように実施するかについて考察する。コントローラ５１０は、ｖＲｅｓ命令に応答して、ＳＩＭＤ処理回路５２０およびスカラーレジスタバンク５４０に制御信号を送信して、（この加法演算およびマグニチュード検出演算における）その命令によって特定されるデータ操作を実行する。
【００６９】
コントローラ５１０は、図５に示されるｖａｄｄ「ｐｒｉｍｉｔｉｖｅ」（または「ｉｎｔｒｉｎｓｉｃ」）に対応する命令に応答して、ＳＩＭＤベクトルｖＡおよびｖＢに対応する成分データエレメントを（まだ存在していない場合には）ＳＩＭＤベクトルレジスタ５３０にロードする。ＳＩＭＤ  ｖＡ、ｖＢは、ベクトルレジスタ５３０から読み出され、ＳＩＭＤ加法演算を実行する算術演算装置５２０に直接供給される。ＳＩＭＤ算術演算の結果は、算術演算装置５２２によって出力され、ＳＩＭＤシフト装置５２４に供給される。ＳＩＭＤシフト装置５２４は、適切なスケーリングシフト値にしたがって各データサンプルをシフトさせることによって、データのスケーリングを実行する。スケーリングシフト値は、図３の実施形態のフローチャートにおける段階３２０（第１の反復）または段階３９０で計算される。代替的には、スケーリングシフト値は、図３の実施形態のフローチャートにおける段階４２０（第１の反復）または段階４９０で計算される。右シフトは、２による除算に対応する。上述したように、各ＦＦＴ内側ループの反復に続いて、加算からの少なくとも１つのキャリービットが存在する傾向があり、それにより、ＳＩＭＤシフト装置５２４は、データの少なくとも１つの右シフトを実行して、スケーリングが実行される。
【００７０】
ＳＩＭＤシフト装置５２４によって出力されたスケーリング結果は、ＭＳＢマスクの更新された値がスケリーリング結果に応じて計算されるＳＩＭＤ  ＡＬＵ５２０内で、最大マスク回路５２６への入力として供給される。最大マスク計算は、図６を参照して、以下に詳しく説明する。図５の実施形態では、ｖＲｅｓ命令の実行中にスケーリングが行われるが、代替的な諸実施形態では、データがベクトルレジスタバンク５３０内のメモリに書き込まれる、またはそのメモリから読み出されるにしたがって、データスケーリングが行われる。
【００７１】
現在のＦＦＴ内側ループに関するＭＳＢマスクの更新された値は、経路５２７を介して、ＦＦＴ内側ループの次の反復で使用するために、スカラーレジスタに保存するためのスカラーレジスタバンク５４０へ供給される。ｖＲｅｓ命令の入力パラメータｓＭａｓｋは、スカラーレジスタを特定し、そのスカラーレジスタから、ＦＦＴ内側ループ反復の初めに、最大マスク回路５２６が、ＭＳＢマスクの現在の値を読み出し、反復の終わりにＭＳＢマスクの更新された値が、ｓＭａｓｋレジスタに書き込まれる。
【００７２】
図５の代替実施形態では、本発明の技法によるｖＲｅｓ命令は、さらなる入力オペランドを有し、このさらなる入力オペランドは、算術演算の結果に適用されるべきシフトを特定するスカラー値である。スカラーシフト値は、符号付きの値である。正のシフト値は右シフトを示し、負の符号付きの値は左シフトを示す。データスケーリングは、命令の実行中に行われる。この代替実施形態では、命令は、以下のフォーマットを有する。
【００７３】
＜ａｒｉｔｈｍｅｔｉｃ  ｏｐ＞＿ｂｆ  ＳＩＭＤ  ｄｅｓｔｉｎａｔｉｏｎ，ＳＩＭＤ  ｏｐｅｒａｎｄ＿１，ＳＩＭＤ  ｏｐｅｒａｎｄ＿２，ｓｃａｌａｒ  ｍａｇ，ｓｃａｌａｒ  ｓｈｉｆｔ
【００７４】
ただし、＿ｂｆは、命令をブロック浮動小数点タイプでとして特定する。＜ａｒｉｔｈｍｅｔｉｃ  ｏｐ＞を加えたり、減じたりすることができる。ＳＩＭＤは、ｏｐｅｒａｎｄ＿１、ｏｐｅｒａｎｄ＿２およびｄｅｓｔｉｎａｔｉｏｎがＳＩＭＤレジスタであることを示す。値「ｍａｇ」および「ｓｈｉｆｔ」は、ともにスカラー値である。値「ｍａｇ」は、最上位ビットを求めるために使用されるＯＲｉｎｇ演算のための共通ソースおよび．宛先レジスタを特定する。値「ｓｈｉｆｔ」は、算術演算の結果に適用されるべきシフトを特定する符号付きの値である。なお、代替的な諸実施形態では、スカラーシフトフィールドは、命令から省かれ、データスケーリングを命令と結合させる代わりに、データがメモリに書き込まれるまたはメモリから読み出されるにしたがい、データスケーリングが実行されることに留意されたい。図２のステップ２５０のスケーリングを実施するために実行されるシフトは、ロード演算、たとえばＲｅｇ＝ｖｌｏａｄ（ａｄｄｒｅｓｓ，ｓｃａｌａｒ  ｓｈｉｆｔ）と関連付けることができる。
【００７５】
ＳＩＭＤ  ＡＬＵ５２０の算術演算装置５２２は、スケーリング演算の前にｖＲｅｓ命令の算術演算によって発生された追加のキャリーが可能になるように適合された回路を備える。
【００７６】
ＳＩＭＤ  ＡＬＵ５２０の最大マスク回路５２６は、ＦＦＴ計算の内側ループの複数のプログラム命令のそれぞれによって戻される最上位ビットのポジションを結合するように動作可能である。したがって、複数の最上位ビット値は結合され、スカラーレジスタバンク５４０のスカラーレジスタｓＭａｓｋは、最も高い最上位ビットのポジションに対応する値を維持する。したがって、内側ＦＦＴループ反復のそれぞれの終わりに、所与の反復全体に関する最上位ビットが、スカラーレジスタから読み出され、後続の反復においてスケーリングデータについて使用される。
【００７７】
図５の実施形態では、最上位ビットのポジションは、スカラーレジスタバンク５４０のスカラーレジスタｓＭａｓｋ内に保存される。しかしながら、代替実施形態では、レジスタは、データ処理装置内の汎用レジスタのうちの１つである。このような代替実施形態では、結合マグニチュード検出算術命令は、汎用レジスタバンク内のソースレジスタとデスティネーションレジスタの両方を特定して、計算のラウンドに対する、最も高い最上位ビットのポジションの値を維持する演算が実行される。
【００７８】
図６は、図５の最大マスク回路５２６をより詳細に示す概略図である。この最大マスク回路は複数のＳＩＭＤレーン６００を備え、各ＳＩＭＤレーンが１６ビットデータエレメント６１０、６１２、６１４を備える。この具体的な実施形態では、全部で３２個のＳＩＭＤレーンが存在する。しかしながら、明確に図示するために、実際には、これらのレーンのうち３つのレーン６１０、６１２および６１４のみが、示されている。３２個の１６ビットデータエレメント６００は、ＳＩＭＤ結果ベクトルのエントリに対応する。ＸＯＲゲート６２４のセットは、ＳＩＭＤレーン３１およびデータエレメント６１４に関連付けられ、ＸＯＲゲート６２２のセットは、ＳＩＭＤレーン１およびデータエレメント６１２に関連付けられ、ＸＯＲゲート６２０のセットは、ＳＩＭＤレーン０に関連付けられる。ＯＲゲート６３０のセットは、ビット１４に対応するＯＲゲート６３２を示す１６ビットデータエレメントのビット１１から１４のそれぞれについて、１つのゲートを備える。ＯＲゲート６３０のセットは、３２個のデータエレメントＳＩＭＤ結果ベクトルに保存される１６ビット結果値のマグニチュード全体に関する最上位ビットのポジションを表示する。
【００７９】
各１６ビットデータエレメント６１０、６１２、６１４は、ビット１５が符号ビットである符号付きデータ値である。負数が絶対値の２の補数によって表され、その数の２の補数を計算することによって、数が正数から負数に、または負数から正数に変換される「２の補数」表現で、データ値が保存される。２進数の２の補数を見つけるために、各ビットは反転され、値１はその反転された値に加算される（ビットオーバーフローは、無視される）。負数の２の補数は、対応する正の値である。たとえば、１０進法の値５の８ビット符号付き２進法表現００００１０１を考慮されたい。最上位ビットが０なので、このパターンは、非負数を表す。２の補数表現でこの正数値を−５に変換するためには、各ビットを反転させて、値１１１１０１０を求め、次いで反転させた値に１を加えて、１１１１１０１１を求める。最上位ビットは１であり、それにより表された値が負（この場合は−５）となる。
【００８０】
図６の構成において、ビット１５が最上位ビットであり、したがって符号ビットでもある。ＭＳＢマスクを計算する第１の段階は、３２個のＳＩＭＤレーンそれぞれで１６ビット値をチェックして、負か正かを判断するステップを含む。符号ビットが負の値を示すＳＩＭＤレーンのそれぞれについて、１６ビットデータエレメントが反転される。ＸＯＲゲート６２０、６２２、６２４は、反転を実行する。最上位ビットが０である（正の値に対応する）データエレメントは、反転されない。
【００８１】
図６に示すように、ＯＲゲート６３０を使用して、論理ＯＲ演算（またはそれと同等の関数）が実行される。具体的には、関数ＯＲ演算が、３２個のＳＩＭＤレーンのそれぞれについて、各データエレメントのビット１４上で実行される。これは、ＯＲゲート６３２によって実行される。したがって、データエレメントのいずれかが、ビットポジション１４に非ゼロビットを有する場合、ＯＲゲートは、出力値１を有することになる。しかしながら、ＳＩＭＤレーンの全てが、空ビット１４を有する場合、ＯＲゲートの出力は０になり、最上位ビットはその他の１４ビットポジション［０、１、２・・・、１３］のうち１つとなることが示される。
【００８２】
ＯＲゲート６３２は、３２個のＳＩＭＤレーンに対応する３２個のデータエレメントのビットポジション１４に対応する３２ビット全ての論理ＯＲを表す。同等の関数ＯＲゲートをデータエレメントの１５個の符号付きでないビットのそれぞれに関して提供し得るが、この具体的な実施形態では、４つの最上位ビットのポジション、すなわちビット［１１、１２、１３、１４］のみについて、ＯＲゲート６３０が提供される。
【００８３】
計算の所与のラウンドが、何個のキャリービットを発生しやすいかについて、プログラマーが事前に決定できるという事実に起因して、最上位ビットを正確に決定するためには、最上位ビットのサブセットのみを考慮する必要がある。たとえば、図１の蝶形図では、（複素乗算からの）最大２つのキャリービットを、計算の各ラウンドから発生できることが明らかである。このことが分かると、最上位ビットを見つけることができる最大および最小範囲を、プログラマーが前もって決定できるようになる。図６の例では、計算の前のラウンドにおいて、ＭＳＢポジションは、ビットポジション１２となるように決定されたことがわかる。その結果、計算の後続のラウンドに関するＭＳＢポジションを、ビットポジション１１、１２、１３および１４のみから決定できる。ＸＯＲゲート６２０、６２２、６２４の使用は、完全な２の補数計算に良好な近似値を提供し、実装するのが（たとえば論理ゲートについて）さらに速く安価になる。近似値は、最下位ビットのほとんどが破棄されるにつれて、近似値は一層近くなる。
【００８４】
この具体的な構成では、スケーリングシフトが実行された（図３のフローチャートの段階３５０における、または図４のフローチャートの段階４５０におけるスケーリング）後に、最上位ビット決定がＳＩＭＤ結果ベクトル上で実行される。しかしながら、代替的な構成では、スケーリングシフトの前に、最上位ビット決定が実行される。
【００８５】
図７Ａおよび図７Ｂは、本発明の技法による結合マグニチュード検出算術命令の実行のための回路の２つの異なるセットおよび関連付けられたデータフローを概略的に示す。具体的には、図７Ａは、１つの命令を概略的に示し、最大値マスクがその命令の引数として特定される。それとは対照的に、図７Ｂは、本発明の技法による命令のいわゆる「モーダル実装形態」を概略的に示し、その命令が実行される際（命令がマスクを特定する入力引数を有さない場合）には、所定のマスクレジスタが使用される。
【００８６】
図７Ａの構成は、レジスタバンク７１０と、ＡＬＵ７２０と、ＭＳＢマスク発生器７３０を備える。図７の回路に対応する命令７００は、算術演算フィールド７０２、デスティネーションレジスタフィールド７０４、２つのオペランドフィールド（ｏｐ  Ａおよびｏｐ  Ｂ）７０５ならびに最上位ビットマスクを保存するためのレジスタを特定する「ｏｐ  Ｍａｓｋ」フィールド７０６の合計５つのフィールドを有する。ＡＬＵ７２０は、命令の実行中に、オペランドｏｐ  Ａおよびｏｐ  Ｂをレジスタ７１０から取り出す。１つまたは複数の算術演算が、コントローラ５１０からの制御信号に応答してＡＬＵによって実行されると（図５参照）、ＭＳＢマスク発生器７３０は、パックＳＩＭＤ結果ベクトルの複数のデータエレメントに関する最上位ビットのポジションを決定するために結果ベクトルを分析し、レジスタ７１０に保存された「ｏｐマスク」値を更新する。
【００８７】
図７Ｂの構成では、命令は、（図７Ａの命令の５つのフィールドではなく）４つのフィールドを有する。この４つのフィールドは、算術オペレータフィールド７５２、デスティネーションレジスタを特定するフィールド７５４ならびに２つのオペランドフィールド（ｏｐ  Ａおよびｏｐ  Ｂ）７５６、７５８を含む。この構成は、命令が、最上位ビットマスクを保存するために使用されるべきレジスタを特定するフィールドを有さない点で、図７Ａの構成と異なる。その代わり、命令が実行されるとすぐに所定のマスクレジスタ７４０を使用して、最上位ビットのポジションを表示する現在の値が維持される。次の反復に関するスケーリング値を決定するために、計算の各ラウンドの終わりに、たとえば、ＦＦＴ計算の各内側ループの終わりに、この値をマスクレジスタから読み出すことができる。
【００８８】
マスクレジスタ７４０は、最上位ビットのポジション情報を累積する「モーダル」レジスタである。計算のブロックが始まる前に、マスクレジスタは、たとえば０にイニシャライズされる。計算のループの第１の反復については、マスク計算回路７６０が、実行される命令のそれぞれに関するマスク（すなわちＭＳＢポジション）を計算し、マスクレジスタ７４０内に現在の値を保存する。後続の反復については、レジスタが最も高いＭＳＢポジションを維持するように、所与の反復に関して決定されるＭＳＢポジションが、マスクレジスタ７４０内に保存された現在のＭＳＢポジションと結合される。次いで、マスクレジスタ７４０は、到達している最も高い値のＭＳＢを決定するために、計算のブロックの終わりに読み出される。
【００８９】
本発明の技法による結合マグニチュード検出算術命令を使用するプログラムコードを、以下に引用する。プログラムコードは、ブロック浮動小数点基数２ＦＦＴアルゴリズムである。
【００９０】
jj=LTOuter;
FFT_LT_OUTER:
for(j=LTOuter;j>0;j--){
vRDTmp = vuzp_m_s16(t_r0,t_r0, 0);
vIDTmp = vuzp_m_s16(t_i0,t_i0, 0);
t_r0 = vRDTmp.a[0];
t_i0 = vIDTmp.a[0];
jj--;
ii=0;
sMaskR0=(s16)0;
sMaskR1=(s16)0;
sMaskI0=(s16)0;
sMaskI1=(s16)0;
FFT_LT_INNER:
for(i=0;i<Inner;i++){
AddLY0  = ii+ii+Ping;
AddLY1  = ii+ii+Ping+1;
AddSY0  = ii+Pong;
AddSY1  = ii+Pong+Points_2;
ii++;
r0    = vqrshl_n_s16(vRMem[AddLY0],sShift); // Load Data from Vector memory
r1    = vqrshl_n_s16(vRMem[AddLY1],sShift); 
i0    = vqrshl_n_s16(vIMem[AddLY0],sShift);
i1    = vqrshl_n_s16(vIMem[AddLY1],sShift);
tmpr  = vpqsub_m_bf_s16(r0,r1,jj,&sMaskR0);     //Butterflies
rr0   = vpqadd_m_bf_s16(r0,r1,jj,&sMaskR1);
tmpi  = vpqsub_m_bf_s16(i0,i1,jj,&sMaskI0);
ii0   = vpqadd_m_bf_s16(i0,i1,jj,&sMaskI1);
tmpqr0 =  vqdmull_s16(       tmpr,t_r0); //Multiply by twiddle values
rr1    = vqrdmlsh_s16(tmpqr0,tmpi,t_i0);
tmpqi0 =  vqdmull_s16(       tmpi,t_r0);
ii1    = vqrdmlah_s16(tmpqi0,tmpr,t_i0);
vRMem[AddSY0] = rr0;           //save data where it came from
vIMem[AddSY0] = ii0;
vRMem[AddSY1] = rr1;
vIMem[AddSY1] = ii1;
}
Ping ^= Pong;                   //swap ping and pong
Pong ^= Ping;
Ping ^= Pong;
sMaskR0 |= sMaskR1;             //combine all the mask values
sMaskI0 |= sMaskI1;
sMask    = sMaskR0 | sMaskR1;
sInScale = clz_s16(sMask);          // find MSBit
sShift   = sInScale-LEADING_ZEROS ; // new shift value
sExp     = sExp + sShift;           // update exponent running total
}
【００９１】
図１の蝶形図は、ＦＦＴ内側ループ内で計算される。図１の蝶形図の表現を、上記プログラムコードの変数と相関させることができる。具体的には、バタフライ演算への入力は（ｒ０，ｉ０）、（ｒ１，ｉ１）であり、出力は、（ｒｒ０，ｉｉ０）、（ｒｒ１，ｉｉ１）である。たとえば、以下の結合マグニチュード検出算術命令を使用して、入力ａ＝（ｒ０，ｉ０）およびｂ＝（ｒ１，ｉ１）から、出力Ａ＝（ｒｒ０，ｉｉ０）が計算される。
【００９２】
ｒｒ０＝ｖｐｑａｄｄ＿ｍ＿ｂｆ＿ｓ１６（ｒ０，ｒ１，ｊｊ，＆ｓＭａｓｋＲ１）；
ｉｉ０＝ｖｐｑａｄｄ＿ｍ＿ｂｆ＿ｓ１６（ｉ０，ｉ１，ｊｊ，＆ｓＭａｓｋＩ１）；
【００９３】
「ｖｐｑａｄｄ」命令は、加法演算およびマグニチュード検出演算を含み、一方「ｖｐｑｓｕｂ」命令は、減算演算およびマグニチュード検出演算を含む。命令入力引数「ｓＭａｓｋＲ１」は、結果ベクトルの実コンポーネントに関するＭＳＢマスクであり、一方、「ｓＭａｓｋＩ１」は、結果ベクトルの虚コンポーネントに関するＭＳＢマスクである。プログラムコードの上記セクションの終わり（ＦＦＴ内側ループの外側であるがＦＦＴ外側ループの内側）に、マスクを結合させる。ＣＬＺ命令を使用して、各ＦＦＴ内側ループの終わりに、最上位ビットの位置が決定される。
【００９４】
上述の技法は、上述の命令を含むネイティブ命令のシーケンスを実行するハードウェアによって実行されるが、代替的な諸実施形態では、かかる命令を、仮想マシン環境で実行できることを理解されたい。この仮想マシン環境では、命令が仮想マシンに対してネイティブであるが、その仮想マシンは、異なるネイティブ命令のセットを有するハードウェア上で動作するソフトウェアによって実施される。仮想マシン環境は、完全な命令セットの実行をエミュレートする完全な仮想マシン環境を提供することができるが、部分的でもよい。たとえば、本発明の技法の命令を含むいくつかの命令のみが、ハードウェアによってトラップされ、部分的な仮想マシンによってエミュレートされる。
【００９５】
より具体的には、上述の結合マグニチュード検出演算命令を、完全なまたは部分的な仮想マシンに対してネイティブな命令として実行することができ、この仮想マシンは、結合して動作して上述の処理回路を提供する設置される下層のハードウェアプラットフォームとともに動作する。
【００９６】
図８は、図５のデータエンジン５００の仮想マシン実装を概略的に示す。この構成は、データエンジン５００の動作をエミュレートするように配置された仮想マシン８００を備える。仮想マシン８００（たとえば、ＡＲＭプロセッサまたはデータエンジンをエミュレートする）は、実行をエミュレートする本発明の技法による結合マグニチュード検出演算命令を含むマシンコード（たとえば、ＡＲＭマシンコード）を受信するように構成される。仮想マシン８００がその上で動作する汎用プロセッサが、十分に高性能である場合、次いで、物理的な全体の処理スループットを達成することができ、本開示の技術による結合マグニチュード検出演算命令を含む既存のコードベースを実行できる利点は、このように汎用プロセッサの使用を正当化することができる。
【００９７】
本明細書には、具体的な実施形態を記載したが、本発明は、それらに限定されないこと、ならびに、多くの修正形態および付加形態が本発明の範囲内で実施し得ることを理解されたい。たとえば、本発明の範囲から逸脱することなく、以下の従属項のフィーチャと、独立項のフィーチャの様々な組合せを成し得る。
【符号の説明】
【００９８】
５００      データエンジン
５１０      コントローラ
５２２      算術演算装置
５２４      ＳＩＭＤシフト措置
５２６      最大マスク回路
５３０      ベクトルレジスタ
５４０      スカラーレジスタバンク
【図１】
2011501310.tif 000007
【図２】
2011501310.tif 000008
【図３】
2011501310.tif 000009
【図４】
2011501310.tif 000010
【図５】
2011501310.tif 000011
【図６】
2011501310.tif 000012
【図７Ａ】
2011501310.tif 000013
【図７Ｂ】
2011501310.tif 000014
【図８】
2011501310.tif 000015
【手続補正書】
【提出日】平成21年8月24日(2009.8.24)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００６６
【補正方法】変更
【補正の内容】
【００６６】
本発明の技法による結合マグニチュード検出算術命令の一例は、「ｖＲｅｓ」命令である（図５参照）。
ｖＲｅｓ＝ｖａｄｄ＿ｂｆ＿ｓ１６（ｖＡ，ｖＢ，ｓＭａｓｋ）
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００６９
【補正方法】変更
【補正の内容】
【００６９】
コントローラ５１０は、図５に示されるｖａｄｄ「ｐｒｉｍｉｔｉｖｅ」（または「ｉｎｔｒｉｎｓｉｃ」）に対応する命令に応答して、ＳＩＭＤベクトルｖＡおよびｖＢに対応する成分データエレメントを（まだ存在していない場合には）ＳＩＭＤベクトルレジスタ５３０にロードする。ＳＩＭＤ  ｖＡ、ｖＢは、ベクトルレジスタ５３０から読み出され、ＳＩＭＤ加法演算を実行する算術演算装置５２０に直接供給される。ＳＩＭＤ算術演算の結果は、算術演算装置５２２によって出力され、ＳＩＭＤシフト装置５２４に供給される。ＳＩＭＤシフト装置５２４は、適切なスケーリングシフト値にしたがって各データサンプルをシフトさせることによって、データのスケーリングを実行する。スケーリングシフト値は、図３の実施形態のフローチャートにおける段階３２０（第１の反復）または段階３９０で計算される。代替的には、スケーリングシフト値は、図４の実施形態のフローチャートにおける段階４２０（第１の反復）または段階４９０で計算される。右シフトは、２による除算に対応する。上述したように、各ＦＦＴ内側ループの反復に続いて、加算からの少なくとも１つのキャリービットが存在する傾向があり、それにより、ＳＩＭＤシフト装置５２４は、データの少なくとも１つの右シフトを実行して、スケーリングが実行される。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００７９
【補正方法】変更
【補正の内容】
【００７９】
各１６ビットデータエレメント６１０、６１２、６１４は、ビット１５が符号ビットである符号付きデータ値である。負数が絶対値の２の補数によって表され、その数の２の補数を計算することによって、数が正数から負数に、または負数から正数に変換される「２の補数」表現で、データ値が保存される。２進数の２の補数を見つけるために、各ビットは反転され、値１はその反転された値に加算される（ビットオーバーフローは、無視される）。負数の２の補数は、対応する正の値である。たとえば、１０進法の値５の８ビット符号付き２進法表現０００００１０１を考慮されたい。最上位ビットが０なので、このパターンは、非負数を表す。２の補数表現でこの正数値を−５に変換するためには、各ビットを反転させて、値１１１１１０１０を求め、次いで反転させた値に１を加えて、１１１１１０１１を求める。最上位ビットは１であり、それにより表された値が負（この場合は−５）となる。
【手続補正４】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データを処理するための装置であって、前記装置が、
データ処理演算を実行するための処理回路と、
データを保存するための１つまたは複数のレジスタと、
前記データ処理演算を実行するように前記処理回路を制御するための制御回路と、
を備え、
前記制御回路が、結合マグニチュード検出算術命令に応答して、前記１つまたは複数のレジスタに保存されかつ前記結合マグニチュード検出算術命令によって特定される少なくとも１つのデータエレメント上で、算術演算を実行するように、またマグニチュード検出演算を実行するように前記処理回路を制御するように構成され、
前記マグニチュード検出演算が、前記算術演算の結果のマグニチュードの最上位ビットのポジションが前記少なくとも１つのデータエレメントのデータエレメント幅を超えるかどうかにかかわらず、前記最上位ビットのポジションを表示するマグニチュード表示結果を計算し、
前記処理回路が、複数のＳＩＭＤレーンのそれぞれについて、前記算術演算を独立して実行するように構成されるＳＩＭＤ処理回路であり、前記結合マグニチュード検出算術命令が、前記算術演算をその上で独立して実行して、それぞれ対応する複数の結果データエレメントを含むＳＩＭＤ結果ベクトルを発生させる複数のデータエレメントを含む少なくとも１つのＳＩＭＤ入力ベクトルを示し、
前記マグニチュード表示結果が、前記ＳＩＭＤ結果ベクトルのそれぞれ対応する複数の結果データエレメントに対応する複数のマグニチュードのうち最大マグニチュードの最上位ビットを表示することを特徴とする装置。
【請求項２】
前記マグニチュード表示演算は、前記複数のＳＩＭＤレーンにそれぞれ対応する複数の結果値を有するＳＩＭＤ結果ベクトルを作り出し、前記マグニチュード表示結果が、前記ＳＩＭＤ結果ベクトルに基づいて決定されることを特徴とする請求項１に記載される装置。
【請求項３】
前記１つまたは複数のレジスタが、ＳＩＭＤレジスタバンクおよびスカラーレジスタバンクを備えることを特徴とする請求項１に記載される装置。
【請求項４】
前記制御回路が、前記ＳＩＭＤ算術演算の前記結果を前記ＳＩＭＤレジスタバンクに保存するように、前記処理回路を制御することを特徴とする請求項３に記載される装置。
【請求項５】
前記制御回路が、前記マグニチュード表示結果を汎用レジスタに保存するように、前記処理回路を制御することを特徴とする請求項１から請求項４のいずれか１項に記載される装置。
【請求項６】
前記汎用レジスタが、ＳＩＭＤレジスタおよびスカラーレジスタのうち１つであることを特徴とする請求項５に記載される装置。
【請求項７】
前記マグニチュード表示結果が、専用レジスタに保存されることを特徴とする請求項１から請求項６のいずれか１項に記載される装置。
【請求項８】
前記算術演算が、符号付きでない算術演算であることを特徴とする請求項１から請求項７のいずれか１項に記載される装置。
【請求項９】
前記算術演算が、符号付き算術演算であることを特徴とする請求項１から請求項８のいずれか１項に記載される装置。
【請求項１０】
前記制御回路が、前記結合マグニチュード検出算術命令に応答して、前記結合マグニチュード検出演算命令によって特定されるスケーリングパラメータに応じて前記算術演算を実行する前に、前記少なくとも１つのデータエレメントをスケーリングするように、スケーリング計算を実行することを特徴とする請求項１から請求項９のいずれか１項に記載される装置。
【請求項１１】
前記制御回路が、前記結合マグニチュード検出算術命令に応答して、前記スケーリング計算の出力から前記マグニチュード表示結果を計算することを特徴とする請求項１０に記載の装置。
【請求項１２】
前記結合マグニチュード検出算術命令が、ブロック浮動小数点命令であることを特徴とする請求項１から請求項１１のいずれか１項に記載される装置。
【請求項１３】
前記算術演算が、ｍｏｖｅ  ａｄｄ、ｓｕｂｔｒａｃｔ、ｍｕｌｔｉｐｌｙおよびｍｕｌｔｉｐｌｙ−ａｃｃｕｍｕｌａｔｅ演算のうち少なくとも１つであることを特徴とする請求項１から請求項１２のいずれか１項に記載される装置。
【請求項１４】
前記制御回路が、前記結合マグニチュード検出算術命令に応答して、前記結合マグニチュード検出演算命令によって特定されるオペランドに応じて前記マグニチュード表示結果を計算するように、前記処理回路制御することを特徴とする請求項１から請求項１３のいずれか１項に記載される装置。
【請求項１５】
前記処理回路が、前記最上位ビットが、Ｃｏｕｎｔ  Ｌｅａｄｉｎｇ  Ｚｅｒｏｓ命令およびＣｏｕｎｔ  Ｌｅａｄｉｎｇ  Ｓｉｇｎ命令のうち１つを実行することによって、前記マグニチュード表示結果から導き出せるように、前記マグニチュード表示結果を計算することを特徴とする請求項１から請求項１４のいずれか１項に記載される装置。
【請求項１６】
制御回路が、前記マグニチュード表示結果を前記１つまたは複数のレジスタのマグニチュード表示レジスタに保存するように、前記処理回路を制御することを特徴とする請求項１から請求項１５のいずれか１項に記載される装置。
【請求項１７】
前記マグニチュード表示レジスタが、前記結合マグニチュード検出演算命令のパラメータによって特定されることを特徴とする請求項１６に記載される装置。
【請求項１８】
前記マグニチュード表示レジスタが、汎用レジスタであることを特徴とする請求項１６に記載される装置。
【請求項１９】
前記汎用レジスタが、ＳＩＭＤレジスタおよびスカラーレジスタのうち１つであることを特徴とする請求項１８に記載される装置。
【請求項２０】
前記結合マグニチュード検出算術命令が、命令のループ内に提供され、それにより前記マグニチュード表示結果が、前記ループのそれぞれの反復について計算されることを特徴とする請求項１から請求項１９のいずれか１項に記載される装置。
【請求項２１】
前記制御回路が、前記結合マグニチュード検出算術命令に応答して、前記マグニチュード表示レジスタ内に、前記ループのそれぞれの反復に関する前記マグニチュード表示結果を累積することを特徴とする請求項２０に記載される装置。
【請求項２２】
データを処理するための装置であって、前記装置が、
データ処理演算を処理するための処理回路と、
データを保存するための１つまたは複数のレジスタと、
前記データ処理演算を実行するように、前記処理回路を制御するための制御回路と、を備え、
前記制御回路が、結合マグニチュード検出算術命令に応答して、前記１つまたは複数のレジスタに保存され、かつ前記結合マグニチュード検出算術命令によって特定される少なくとも１つのデータエレメント上で、算術演算を実行するように、またマグニチュード検出演算を実行するように前記処理回路を制御するように構成され、前記マグニチュード検出演算が、前記算術演算の結果のマグニチュードの最上位ビットのポジションが、前記少なくとも１つのデータエレメントのデータエレメント幅を超えるかどうかにかかわらず、前記最上位ビットのポジションを表示するマグニチュード表示結果を計算し、
前記処理回路が、複数のＳＩＭＤレーンのそれぞれについて、前記算術演算を独立して実行するように構成されるＳＩＭＤ処理回路であり、前記結合マグニチュード検出算術命令が、前記算術演算をその上で独立して実行して、それぞれ対応する複数の結果データエレメントを含むＳＩＭＤ結果ベクトルを発生させる複数のデータエレメントを含む少なくとも１つのＳＩＭＤ入力ベクトルを示し、
前記制御回路が、前記結合マグニチュード検出算術命令に応答して、前記マグニチュード表示結果を計算するために、前記ＳＩＭＤ算術演算の前記結果の前記複数のデータエレメントのうち少なくとも２つの上で、少なくとも１つの論理演算を実行するように、前記処理回路を制御し、前記少なくとも１つの論理演算は、論理ＯＲ演算と機能的に同等であることを特徴とする装置。
【請求項２３】
前記制御回路が、前記結合マグニチュード検出算術命令に応答して、前記少なくとも２つのデータエレメントのビットのサブセット上で、前記少なくとも１つの論理演算を実行するように、前記処理回路を制御することを特徴とする請求項２２に記載される装置。
【請求項２４】
前記ビットのサブセットが、前記少なくとも２つのデータエレメントのそれぞれ対応するものの１つまたは複数の最上位ビットに対応することを特徴とする請求項２３に記載される装置。
【請求項２５】
前記制御回路が、前記結合マグニチュード検出算術命令に対応して、前記結合マグニチュード検出演算命令によって特定されるスケーリングパラメータに応じて前記算術演算を実行する前に、前記少なくとも１つのデータエレメントをスケーリングするように、スケーリング計算を実行し、
前記制御回路が、前記結合マグニチュード検出算術命令に応答して、前記スケーリング計算の出力から、前記マグニチュード表示結果を計算し、
前記制御回路が、前記結合マグニチュード検出算術命令に応答して、前記少なくとも１つの論理演算を実行する前に、負の値を有する前記ＳＩＭＤ算術演算の前記結果の前記複数のデータエレメントのうち１つまたは複数を検出し、かつ前記負の値を反転させるように、前記処理回路を制御することを特徴とする請求項２２に記載される装置。
【請求項２６】
前記制御回路が、前記結合マグニチュード検出算術命令に応答して、前記結合マグニチュード検出演算命令によって特定されるスケーリングパラメータに応じて前記算術演算を実行する前に、前記少なくとも１つのデータエレメントをスケーリングするように、スケーリング計算を実行し、
前記制御回路が、前記結合マグニチュード検出算術命令に応答して、前記スケーリング計算の出力から前記マグニチュード表示結果を計算し、
前記制御回路が、前記結合マグニチュード検出算術命令に応答して、前記少なくとも１つの論理演算を実行する前に、負の値を有する前記ＳＩＭＤ算術演算の前記結果の前記複数のデータエレメントのうち１つまたは複数を検出し、かつ前記負の値を無効にするように、前記処理回路を制御することを特徴とする請求項２２に記載される装置。
【請求項２７】
前記制御回路が、前記結合マグニチュード検出算術命令に応答して、前記結合マグニチュード検出演算命令によって特定されるオペランドに応じて前記マグニチュード表示結果を計算するように、前記処理回路を制御し、
前記少なくとも１つの論理演算が前記オペランドに依存することを特徴とする請求項２２に記載される装置。
【請求項２８】
データ処理演算を実行するための処理回路、データを保存するための１つまたは複数のレジスタ、および前記データ処理演算を実行するように前記処理回路を制御するための制御回路を有するデータ処理装置を用いて、データを処理するための方法であって、前記方法が、結合マグニチュード検出演算命令に応答して、
前記１つまたは複数のレジスタに保存されかつ前記結合マグニチュード検出演算命令によって特定される少なくとも１つのデータエレメント上で、算術演算を実行するように、前記処理回路を制御するステップと、
マグニチュード検出演算を実行するステップと、
を含み、
前記マグニチュード検出演算は、前記算術演算の結果のマグニチュードの最上位ビットのポジションが、前記少なくとも１つのデータエレメントのデータエレメント幅を超えるかどうかにかかわらず、前記最上位ビットのポジションを表示するマグニチュード表示結果を計算し、
前記算術演算が、複数のＳＩＭＤレーンのそれぞれについて実行され、前記結合マグニチュード検出算術命令が、前記算術演算をその上で独立して実行して、それぞれ対応する複数の結果データエレメントを含むＳＩＭＤ結果ベクトルを発生させる複数のデータエレメントを含む少なくとも１つのＳＩＭＤ入力ベクトルを示し、
前記マグニチュード表示結果が、前記ＳＩＭＤ結果ベクトルのそれぞれ対応する複数のデータエレメントに対応する複数のマグニチュードのうち最大マグニチュードの最上位ビットを表示することを特徴とする方法。
【請求項２９】
データ処理装置上で実行されると、前記データ処理装置を請求項２８に記載される方法にしたがって動作させるように動作可能なコンピュータプログラムを備えるコンピュータプログラム製品であって、前記コンピュータプログラムが、少なくとも１つの結合マグニチュード検出演算命令を含むことを特徴とするコンピュータプログラム製品。
【請求項３０】
データを処理するための装置のエミュレートする仮想マシンであって、前記装置が、
データ処理演算を実行するための処理回路と、
データを保存するための１つまたは複数のレジスタと、
前記データ処理演算を実行するように前記処理回路を制御するための制御回路と、
を備え、
前記制御回路が、結合マグニチュード検出算術命令に応答して、前記１つまたは複数のレジスタに保存されかつ前記結合マグニチュード検出算術命令によって特定される少なくとも１つのデータエレメント上で、算術演算を実行するように、またマグニチュード検出演算を実行するように前記処理回路を制御するように構成され、
前記マグニチュード検出演算が、前記算術演算の結果のマグニチュードの最上位ビットのポジションが前記少なくとも１つのデータエレメントのデータエレメント幅を超えるかどうかにかかわらず、前記最上位ビットのポジションを表示するマグニチュード表示結果を計算し、
前記処理回路が、複数のＳＩＭＤレーンのそれぞれについて、前記算術演算を独立して実行するように構成されるＳＩＭＤ処理回路であり、前記結合マグニチュード検出算術命令が、前記算術演算をその上で独立して実行して、それぞれ対応する複数の結果データエレメントを含むＳＩＭＤ結果ベクトルを発生させる複数のデータエレメントを含む少なくとも１つのＳＩＭＤ入力ベクトルを示し、
前記マグニチュード表示結果が、前記ＳＩＭＤ結果ベクトルのそれぞれ対応する複数のデータエレメントに対応する複数のマグニチュードのうち最大マグニチュードの最上位ビットを表示することを特徴とする仮想マシン。
【請求項３１】
添付の図面を参照して、実質的に前述されたようなデータ処理装置。
【請求項３２】
添付の図面を参照して、実質的に前述されたようなデータ処理方法。
【国際調査報告】
2011501310.tif 000016
2011501310.tif 000017
2011501310.tif 000018