(57)【要約】  本発明の実施形態に基づき、データ処理ユニット、これを動作させる方法、コンピュータ・プログラム・プロダクト、及び命令を開示する。本発明による一実施形態において、コンピュータプロセッサ用のデータ処理ユニットを提供する。データ処理ユニットには、コンピュータプロセッサのレジスタファイルからアクセスされる少なくとも１つのデータオペランドに対して置換演算を行うことが可能な深いレジスタ・アクセス・メカニズムが含まれる。置換演算は、（ｉ）データオペランドに対するレジスタアクセスと、（ｉｉ）オペランドに対するデータ処理動作の実行と直列に行われる。
2008535115.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータプロセッサ用のデータ処理ユニットであって、
データアクセス命令に応答して、１つ又は複数のデータオペランドにアクセスすることが可能なレジスタアクセス回路と、
前記データアクセス命令に応答して、置換演算を行うことが可能な置換回路と、
実行回路であって、使用中、置換演算が、（ｉ）レジスタアクセス、（ｉｉ）アクセスされたオペランド又は各オペランドに対するデータ処理動作の実行と直列に行われるように構成される前記回路と、が含まれるデータ処理ユニット。
【請求項２】
請求項１に記載のデータ処理ユニットであって、前記回路は、単一のベクトル・レジスタ・オペランドにアクセスし、また、前記単一のベクトル・レジスタ・オペランドに対して置換演算を行うことが可能であるデータ処理ユニット。
【請求項３】
請求項１に記載のデータ処理ユニットであって、前記回路は、複数のベクトル・レジスタ・オペランドにアクセスし、また、前記複数のベクトル・レジスタ・オペランドに対して組み合わせ置換演算を行うことが可能であるデータ処理ユニット。
【請求項４】
請求項１に記載のデータ処理ユニットであって、前記回路は、第１及び第２オペランド又はオペランドグループに対して異なる置換演算を行うことが可能であるデータ処理ユニット。
【請求項５】
請求項１に記載のデータ処理ユニットであって、単一のプログラム命令からレジスタアクセス情報及び置換情報を復号することが可能なデコーダが含まれるデータ処理ユニット。
【請求項６】
請求項５に記載のデータ処理ユニットであって、前記単一のプログラム命令からデータ処理情報を復号することが可能なデコーダが含まれるデータ処理ユニット。
【請求項７】
請求項１に記載のデータ処理ユニットであって、回路は、単一命令のデータオペランドに対して多数の連続したデータ処理動作を行うように構成可能であるデータ処理ユニット。
【請求項８】
請求項１に記載のデータ処理ユニットであって、前記置換回路は、アクセスされたオペランドが、前記実行回路に供給される前に、前記置換回路に供給されるように、前記レジスタアクセス回路と前記実行回路との間に接続可能であるデータ処理ユニット。
【請求項９】
請求項１に記載のデータ処理ユニットであって、前記実行回路は、アクセスされたオペランドが、前記実行回路を通過した後、前記置換回路に供給されるように、前記レジスタアクセス回路と前記置換回路との間に接続可能であるデータ処理ユニット。
【請求項１０】
請求項１に記載のデータ処理ユニットであって、前記置換回路及び前記実行回路は、使用中、第１置換演算が、データ処理動作の実行に先行し、第２置換演算が、データ処理動作の実行に続くように、接続可能であるデータ処理ユニット。
【請求項１１】
請求項１に記載のデータ処理ユニットであって、前記回路は、算術演算、論理演算、後続の置換演算、及びプロセッサメモリ読出し又は書き込み動作の内の１つ又は複数から選択されたデータ処理動作を行うことが可能であるデータ処理ユニット。
【請求項１２】
請求項１に記載のデータ処理ユニットであって、前記レジスタアクセス回路には、レジスタファイル読出し回路が含まれるデータ処理ユニット。
【請求項１３】
請求項１に記載のデータ処理ユニットであって、前記レジスタアクセス回路には、レジスタファイル書き込み回路が含まれるデータ処理ユニット。
【請求項１４】
請求項１に記載のデータ処理ユニットであって、前記レジスタアクセス回路には、複数のアクセス動作から選択されたアクセス動作のタイプを決定するための一組の制御入力が含まれるデータ処理ユニット。
【請求項１５】
請求項１に記載のデータ処理ユニットであって、前記置換回路には、（ｉ）列多重化装置段及び（ｉｉ）クロスバー多重化装置段の内の１つ又は複数が含まれるデータ処理ユニット。
【請求項１６】
請求項１に記載のデータ処理ユニットであって、前記置換回路には、複数の置換演算から選択された置換演算のタイプを決定する一組の制御入力が含まれるデータ処理ユニット。
【請求項１７】
請求項１に記載のデータ処理ユニットであって、前記置換回路は、ロール置換、ソート置換、シャフル置換、ブロードキャスト置換、選択置換、及び他のタイプの置換の内の１つ又は複数から選択された置換演算タイプをサポートするデータ処理ユニット。
【請求項１８】
請求項１に記載のデータ処理ユニットであって、前記実行回路は、単一命令複数データ実行が可能であるデータ処理ユニット。
【請求項１９】
請求項１に記載のデータ処理ユニットであって、前記置換回路は、第１ソースオペランド対に第１タイプの置換演算を行うことが可能であり、また、第２ソースオペランドに第２タイプの置換演算を行うことが可能であるデータ処理ユニット。
【請求項２０】
請求項１９に記載のデータ処理ユニットであって、前記第１タイプの置換演算には、ロール置換及びソート置換からなるグループからの置換が含まれるデータ処理ユニット。
【請求項２１】
請求項１９に記載のデータ処理ユニットであって、第２タイプの置換演算には、ブロードキャスト置換が含まれるデータ処理ユニット。
【請求項２２】
請求項１９に記載のデータ処理ユニットであって、前記第１ソースオペランド対の前記第１タイプの置換を行うための前記置換回路の部分は、第１及び第２の６４ビットソースオペランドを受信するように接続可能であるデータ処理ユニット。
【請求項２３】
請求項２２に記載のデータ処理ユニットであって、前記置換回路の前記部分は、２つの６４ビットソース値からの単一の６４ビット結果が含まれるロール出力を提供するように接続可能であり、前記６４ビット結果は、整数の１６ビット半フィールドだけロールされたソース値に対応するデータ処理ユニット。
【請求項２４】
請求項２２に記載のデータ処理ユニットであって、前記第１タイプの置換を行うための前記置換回路の部分は、２つの６４ビット値からの単一の６４ビット結果が含まれるソート出力を提供するように接続可能であり、前記６４ビット結果は、ソート結果の最上位又は最下位６４ビットとして選択可能であるデータ処理ユニット。
【請求項２５】
請求項１９に記載のデータ処理ユニットであって、前記第２タイプの置換を行うための前記置換回路の部分は、選択された１６ビット半ワードを６４ビット結果において複数の１６ビットレーンに渡って繰り返すブロードキャスト出力を提供するように接続可能であるデータ処理ユニット。
【請求項２６】
コンピュータプロセッサ用のデータ処理ユニットを動作させる方法であって、
コンピュータプロセッサのレジスタファイルからアクセスされる少なくとも１つのデータオペランドに対して、データアクセス命令に応答して、置換演算を行う段階であって、前記置換演算が、（ｉ）前記少なくとも１つのデータオペランドを得るためにレジスタにアクセスするステップと、（ｉｉ）前記少なくとも１つのデータオペランドに対してデータ処理動作を実行するステップと、直列に行われる前記段階が含まれる方法。
【請求項２７】
請求項２６に記載の方法であって、置換演算が、単一のベクトル・レジスタ・オペランドに対して行われる方法。
【請求項２８】
請求項２６に記載の方法であって、置換演算が、複数のベクトル・レジスタ・オペランドに対して行われる方法。
【請求項２９】
請求項２６に記載の方法であって、更に、
単一のプログラム命令に基づき、レジスタにアクセスするステップと直列に置換演算を行う段階が含まれる方法。
【請求項３０】
請求項２６に記載の方法であって、更に、
単一命令のデータオペランドに対して多数の連続データ処理動作を行う段階が含まれる方法。
【請求項３１】
請求項２６に記載の方法であって、前記置換演算を行う段階は、データ処理動作を実行するステップに先行する方法。
【請求項３２】
請求項２６に記載の方法であって、前記置換演算を行う段階は、データ処理動作を実行するステップに続く方法。
【請求項３３】
請求項２６に記載の方法であって、第１置換演算は、データ処理動作の実行に先行し、第２置換演算は、データ処理動作の実行に続く方法。
【請求項３４】
請求項２６に記載の方法であって、更に、
前記命令の演算コード部に基づき、複数の置換演算タイプから置換演算のタイプを選択する段階が含まれる方法。
【請求項３５】
請求項２６に記載の方法であって、更に、算術演算、論理演算、後続の置換演算、及びプロセッサメモリ読み出し又は書き込み動作から、実行されるデータ処理動作を選択する段階が含まれる方法。
【請求項３６】
請求項２６に記載の方法であって、更に、
複数の置換演算タイプから選択された置換演算のタイプを少なくとも部分的に決定するために一組の置換制御入力を用いる段階が含まれる方法。
【請求項３７】
請求項３６に記載の方法であって、利用可能な複数の置換演算タイプには、ロール置換、ソート置換、シャフル置換、ブロードキャスト置換、選択置換、及び他のタイプの置換演算から選択された１つ又は複数が含まれる方法。
【請求項３８】
請求項２６に記載の方法であって、更に、
データ処理命令の演算コード部に基づき、一組の置換制御入力の値を決定する段階が含まれる方法。
【請求項３９】
請求項２６に記載の方法であって、前記データ処理ユニットは、単一命令複数データ実行を行う方法。
【請求項４０】
請求項２６に記載の方法であって、前記置換及びデータ処理動作を行う段階には、高速フーリエ変換、ビタビ符号化、ターボ符号化、有限インパルス応答フィルタアルゴリズム、他の通信アルゴリズムからなるグループからのアルゴリズムの少なくとも一部を行う段階が含まれる方法。
【請求項４１】
請求項２６に記載の方法であって、第１タイプの置換演算は、第１ソースオペランド対に対して行われ、第２タイプの置換演算は、第２ソースオペランドに対して行われる方法。
【請求項４２】
請求項４１に記載の方法であって、第１タイプの置換演算を行う段階には、ロール置換及びソート置換からなるグループからの置換を行う段階が含まれる方法。
【請求項４３】
請求項４１に記載の方法であって、第２タイプの置換演算を行う段階には、ブロードキャスト置換を行う段階が含まれる方法。
【請求項４４】
請求項４１に記載の方法であって、第１及び第２タイプの置換演算の１つ又は複数を行う段階には、６４ビットデータレジスタソース引数を用いる段階が含まれる方法。
【請求項４５】
請求項４４に記載の方法であって、第１タイプの置換演算を行う段階によって、２つの６４ビットソース値から単一の６４ビット結果を形成するためのロール演算を行うことが可能であり、６４ビット結果は、整数の１６ビット要素によってロールされたソース値に対応する方法。
【請求項４６】
請求項４４に記載の方法であって、第１タイプの置換演算を行う段階によって、２つの６４ビット値から単一の６４ビット結果を形成するためのソート演算を行うことが可能であり、６４ビット結果は、最上位又は最下位６４ビットソート結果として選択可能である方法。
【請求項４７】
請求項４４に記載の方法であって、第１タイプの置換演算を行う段階には、各々整数の１６ビット要素からなる２つのベクトルをインターリーブするためのシャフル演算を行う段階が含まれる方法。
【請求項４８】
請求項４７に記載の方法であって、前記整数の１６ビット要素は、２の整数乗である方法。
【請求項４９】
請求項４４に記載の方法であって、第２タイプの置換演算を行う段階によって、６４ビット結果において複数の１６ビットレーンに渡って１６ビット半ワードを繰り返すことが可能なブロードキャスト演算を行い得る方法。
【請求項５０】
コンピュータ・プログラム・プロダクトであって、
一連の命令が含まれるプログラムコード手段が含まれ、
コンピュータ・プログラム・プロダクトは、一連の命令のデータアクセス命令の少なくとも一部によって決定された置換演算が、レジスタファイルからアクセスされる１つ又は複数のデータオペランドに対して行われるように、コンピュータ上で走るように構成され、置換演算は、（ｉ）データオペランドに対するレジスタアクセスと、（ｉｉ）データオペランドに対するデータ処理動作の実行と、直列に行われるコンピュータ・プログラム・プロダクト。
【請求項５１】
コンピュータ用のデータ処理ユニットであって、
レジスタファイルと、
データアクセス命令に基づき、前記レジスタファイルにおける少なくとも１つのデータオペランドにアクセス可能なレジスタアクセス・置換メカニズムであって、前記命令の置換演算コード部に基づき、前記アクセスされたデータオペランドを選択的に置換するように動作可能な置換回路を含む前記レジスタアクセス・置換メカニズムと、
前記レジスタアクセス・置換メカニズムと直列に配置されたデータ実行経路であって、前記命令の実行演算コード部に基づき、前記選択的に置換されたデータオペランドに対して演算を行うように動作可能な前記データ実行経路と、
が含まれるデータ処理ユニット。
【請求項５２】
請求項５１に記載のデータ処理ユニットであって、前記レジスタアクセス・置換メカニズムには、前記レジスタファイルと前記実行経路との間に接続されたデコーダレジスタファイル読み出し段が含まれるデータ処理ユニット。
【請求項５３】
請求項５２に記載のデータ処理ユニットであって、前記レジスタアクセス・置換メカニズムには、前記デコーダレジスタファイル読み出し段と前記実行経路との間に接続された少なくとも１つの多重化装置段が含まれるデータ処理ユニット。
【請求項５４】
請求項５２に記載のデータ処理ユニットであって、前記レジスタアクセス・置換メカニズムには、更に、前記デコーダレジスタファイル読み出し段と前記実行経路との間に接続された列多重化装置段が含まれるデータ処理ユニット。
【請求項５５】
請求項５２に記載のデータ処理ユニットであって、前記レジスタアクセス・置換メカニズムには、前記デコーダレジスタファイル読み出し段と前記実行経路との間に接続されたクロスバー多重化装置段が含まれるデータ処理ユニット。
【請求項５６】
請求項５２に記載のデータ処理ユニットであって、置換制御入力が、前記デコーダレジスタファイル読み出し段に供給されるデータ処理ユニット。
【請求項５７】
請求項５３に記載のデータ処理ユニットであって、置換制御入力が、前記多重化装置段に供給されるデータ処理ユニット。
【請求項５８】
請求項５４に記載のデータ処理ユニットであって、置換制御入力が、前記列多重化装置段に供給されるデータ処理ユニット。
【請求項５９】
請求項５５に記載のデータ処理ユニットであって、置換制御入力が、前記クロスバー多重化装置段に供給されるデータ処理ユニット。
【請求項６０】
請求項５１に記載のデータ処理ユニットであって、前記実行経路の出力と前記レジスタアクセス・置換メカニズムの入力との間に接続されたバイパス回路が含まれるデータ処理ユニット。
【請求項６１】
請求項５１に記載のデータ処理ユニットであって、第１及び第２レジスタアクセス・置換回路が含まれるデータ処理ユニット。
【請求項６２】
請求項６１に記載のデータ処理ユニットであって、前記第１レジスタアクセス・置換回路は、第１及び第２オペランドにアクセスするように、また、ロール、ソート、シャフルの１つ又は複数から選択された置換を行うように構成されるデータ処理ユニット。
【請求項６３】
請求項６１に記載のデータ処理ユニットであって、前記第２レジスタアクセス・置換回路は、少なくとも１つのオペランドにアクセスするように、また、ブロードキャスト置換を行うように構成されるデータ処理ユニット。
【請求項６４】
請求項６１に記載のデータ処理ユニットであって、前記第１及び第２レジスタアクセス・置換回路には、各々、
（ｉ）前記レジスタファイルと前記実行経路との間に接続されたデコーダレジスタファイル読み出し段と、
（ｉｉ）前記デコーダレジスタファイル読み出し段と前記実行経路との間に接続された少なくとも１つの多重化装置段と、の内の１つ又は複数が含まれるデータ処理ユニット。
【請求項６５】
請求項６４に記載のデータ処理ユニットであって、前記少なくとも１つの多重化装置段には、
（ｉ）前記デコーダレジスタファイル読み出し段と実行経路との間に接続された列多重化装置段と、
（ｉｉ）前記列多重化装置段と前記実行経路との間に接続されたクロスバー多重化装置段と、の内の１つ又は複数が含まれるデータ処理ユニット。
【請求項６６】
請求項５１に記載のデータ処理ユニットであって、前記実行経路には、ＳＩＭＤ回路が含まれるデータ処理ユニット。
【請求項６７】
命令であって、
（ｉ）データアクセスのタイプを定義するデータアクセス演算コード部と、
（ｉｉ）置換演算のタイプを定義する置換演算コード部と、
（ｉｉｉ）更なる演算を定義する実行演算コード部と、
少なくとも１つのデータオペランドソース指定と、が含まれる命令。
【請求項６８】
コンピュータプロセッサ用のデータ処理ユニットであって、直列接続で、レジスタアクセスユニットと、ベクトル置換回路と、少なくとも１つの実行経路と、が含まれ、本装置には、更に、単一の命令に応答して、少なくとも１つのベクトルオペランドへのアクセスを制御するように、少なくとも１つのベクトルオペランドを選択的に置換するように、また、少なくとも１つの更なる演算を実行するように動作可能な復号化ユニットが含まれるデータ処理ユニット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータプロセッサ用のデータ処理ユニットと、これを動作させる方法と、コンピュータプロセッサ用の命令集合を利用するコンピュータ・プログラム・プロダクトと、命令と、に関する。
【背景技術】
【０００２】
通常、デジタル信号処理アプリケーションコードは、一般的に、データベクトルと係数ベクトルを組み合わせることによって、ベクトルに対する算術処理を行う。よくある例は、たたみこみの処理であるが、他のベクトル処理は、同様な特性を共有する。データ及び係数ベクトルは、様々なサイズであり、かなり長いことが多く、このため、マシンがベクトル機能を文字通り実現することは、一般的に実用的ではない。その代わり、マシンが、ベクトルのより小さい部分について直接演算するのが実用的であることが分かっている。
【０００３】
１つの公知の方法では、単一命令複数データ（ＳＩＭＤ）手法は、命令に含まれる単一の演算を１つ又は複数の短いデータベクトルの各要素に適用する。ＳＩＭＤマシンのレジスタは、そのような短いデータベクトルを保持するように構成され、例えば、６４ビットレジスタは、短ベクトル又はより大きなベクトルの一部を形成する４つの１６ビットデータ要素を含み得る。ＳＩＭＤ手法は、プロセッサのサイクル当りの演算を増やすことによって、デジタル信号プロセッサ性能を向上させる効果的な方法である。
【０００４】
従って、通常、デジタル信号処理プログラムは、長ベクトル演算を行うために短ベクトルＳＩＭＤマシンを用いる。そのようにするために、プログラム構造は、往々にして、算術演算をベクトル置換演算とインターリーブする必要がある。ベクトル置換は、例えば、マシンの短ベクトルデータ経路にオペランドとして供給されるアルゴリズムの長ベクトルから要素を収集するために、又は、短ベクトル演算からの結果要素を長ベクトル結果の異なる場所に分散するために、必要なことがある。
【発明の開示】
【課題を解決するための手段】
【０００５】
本発明の一態様にり、コンピュータプロセッサ用のデータ処理ユニットを提供する。データ処理ユニットには、コンピュータプロセッサのレジスタファイルからアクセスされる少なくとも１つのデータオペランドに対して、データアクセス命令に応答して、置換演算を行うことが可能なレジスタ・アクセス・メカニズムが含まれる。置換演算は、データオペランドに対するレジスタアクセスと、データオペランドに対するデータ処理動作の実行との双方に直列に行われる。
【０００６】
好適には、データ処理ユニットは、単一のベクトル・レジスタ・オペランドに対して置換演算を行うことが可能である。また、好適には、複数のベクトル・レジスタ・オペランドに対して組み合わせ置換演算を行うことが可能である。更により好適には、前記複数のベクトル・レジスタ・オペランドに対する組み合わせ置換演算は、単一のベクトル・レジスタ・オペランドに対する置換演算と同時に行い得る。好適な一実施形態において、データ処理ユニットは、従って、第１及び第２オペランド又はオペランドグループに対して異なる置換演算を行うことが可能である。レジスタ・アクセス・メカニズムは、好適には、コンピュータプロセッサに発せられた単一のプログラム命令に基づき、レジスタアクセスと直列に置換演算を行うことが可能である。好適な一実施形態において、データ処理ユニットは、単一のデータ処理命令のデータオペランドに対して多数の連続演算を行うことが可能である。
【０００７】
開示された実施形態において、置換演算は、データ処理動作の実行に先行する。しかしながら、本発明によるデータ処理ユニットは、その代わり、データ処理動作の実行に続き置換演算を行い得ることを当業者は認識されたい。ある実施形態において、ハードウェアは、第１置換演算が、データ処理動作の実行に先行し、第２置換演算が、データ処理動作の実行に続くように定める。
【０００８】
好適には、置換演算のタイプは、データ処理命令の演算コード部に基づき、複数の置換演算タイプから選択される。実行されたデータ処理動作は、算術演算、論理演算、後続の置換演算、及びプロセッサメモリ読み出し又は書き込み動作の１つ又は複数から選択し得る。
【０００９】
開示された一実施形態において、レジスタ・アクセス・メカニズムには、レジスタファイル読み出し段及びクロスバー多重化装置段（本明細書では、「クロスバースイッチング段」とも呼ぶ）が含まれる。その場合、レジスタ・アクセス・メカニズムには、複数の置換演算タイプから選択された置換演算のタイプを決定するための一組のクロスバー制御入力が含まれる。複数の置換演算タイプには、ロール置換、ソート置換、シャフル置換、ブロードキャスト置換、選択置換、及び他のタイプの置換を含み得る。置換演算のタイプは、命令の演算コード部に基づき、複数の置換演算タイプから選択し得る。即ち、命令中の置換演算コードは、レジスタ・アクセス・メカニズムの適切な入力に一組の制御入力を供給するデコーダによって復号される。
【００１０】
ある実施形態において、実行経路には、ＳＩＭＤ（単一命令多数データ）回路が含まれる。
【００１１】
レジスタ・アクセス・メカニズムは、通常、第１ソースオペランド対に対して第１タイプの置換演算を行い、また、少なくとも１つの第２ソースオペランドに対して第２タイプの置換演算を行うことが可能である。好適な実施形態において、実行ユニットは、単一命令複数データ実行が可能である。例えば、第１タイプの置換演算には、ロール置換、ソート置換及びシャフル置換からなるグループからの置換を含んでよく、また、第２タイプの置換演算には、ブロードキャスト置換を含んでよく、第１及び第２置換演算双方の結果が、ＳＩＭＤ実行経路に供給される。
【００１２】
好適な実施形態には、特定の用途があり、この場合、データ処理ユニットは、高速フーリエ変換、ビタビ符号化、ターボ符号化、有限インパルス応答フィルタアルゴリズム、又は他の通信アルゴリズムからなるグループからのアルゴリズムの少なくとも一部を行う必要がある。
【００１３】
限定しようとするものではないが、開示された実施形態の第１及び第２タイプの置換演算には、１つ又は２つの６４ビットデータレジスタソース引数を有する演算が含まれる。例えば、第１タイプの置換演算によって、ロール演算は、２つの６４ビットソース値からの単一の６４ビット結果を形成し得る。６４ビット結果は、整数の１６ビット半フィールドだけ左にロールされたソース値に対応する。他の例において、第１タイプの置換演算によって、ソート演算は、２つの６４ビット値からの単一の６４ビット結果を形成し得る。６４ビット結果は、ソート結果の最上位又は最下位６４ビットとして選択可能である。第２タイプの置換演算によって、ブロードキャスト演算は、６４ビット結果における４つの１６ビットレーンに渡って、選択された１６ビット半ワードを繰り返すことが可能である。
【００１４】
本発明の他の態様により、コンピュータプロセッサ用のデータ処理ユニットを動作させる方法を提供する。本方法には、コンピュータプロセッサのレジスタファイルからアクセスされる複数のデータオペランドの内の少なくとも１つに対して、データアクセス命令に応答して、置換演算を行う段階が含まれる。置換演算は、（ｉ）データオペランドを得るためにレジスタにアクセスするステップと、（ｉｉ）データオペランドに対してデータ処理動作を実行するステップと、直列に行われる。
【００１５】
本発明の他の態様は、一連の命令を含むプログラムコード手段が含まれるコンピュータ・プログラム・プロダクトを提供する。この場合、コンピュータ・プログラム・プロダクトは、コンピュータ上で走るように構成され、これにより、単一のデータアクセス命令は、このデータアクセス命令の少なくとも一部によって決定されるタイプの置換演算が、アクセスされた少なくとも１つのデータオペランドに対して行われるように実行可能である。置換演算は、（ｉ）データオペランドを得るためにレジスタにアクセスするステップと、（ｉｉ）データオペランドに対してデータ処理動作を実行するステップと、直列に行われる。
【００１６】
本発明の他の態様により、直列レジスタアクセス、ベクトル置換、及び単一の命令に応答したデータ処理動作の実行を行う段階が含まれる方法を提供する。
【００１７】
本発明の他の態様により、直列接続で、レジスタアクセスユニット、ベクトル置換機能、及び少なくとも１つの実行経路が含まれるコンピュータプロセッサを提供する。本装置には、更に、単一の命令に応答して、少なくとも１つのベクトルオペランドへのアクセスを制御するように、少なくとも１つのベクトルオペランドを選択的に置換するように、また、少なくとも１つの更なる演算を実行するように動作可能な復号化ユニットが含まれる。
【００１８】
本発明の他の態様により、命令を提供する。この命令には、データアクセスのタイプを定義するデータアクセス演算コード部と、置換演算のタイプを定義する置換演算コード部と、更なる演算を定義する実行演算コード部と、少なくとも１つのデータオペランドソース指定と、が含まれる。
【００１９】
本発明の他の態様により、コンピュータ用のデータ処理ユニットを提供する。本データ処理ユニットには、レジスタファイルと、データアクセス命令に基づき、前記レジスタファイルにおける少なくとも１つのデータオペランドにアクセスすることが可能なレジスタアクセス・置換メカニズムと、が含まれる。前記レジスタアクセス・置換メカニズムには、前記命令の置換演算コード部に基づき、前記アクセスされたデータオペランドを選択的に置換するように動作可能な置換回路と、前記レジスタアクセス・置換メカニズムと直列に配置されたデータ実行経路と、が含まれる。前記データ実行経路は、前記命令の実行演算コード部に基づき、前記選択的に置換されたデータオペランドに対して演算を行うように動作可能である。
【００２０】
好適な一実施形態において、前記レジスタアクセス・置換メカニズムには、前記レジスタファイルと前記実行経路との間に接続されたデコーダレジスタファイル読み出し（及び書き込み）段が含まれる。好適には、前記レジスタアクセス・置換メカニズムには、前記デコーダレジスタファイル読み出し段と前記実行経路との間に接続された少なくとも１つの多重化装置段が含まれる。通常、前記レジスタアクセス・置換メカニズムには、更に、前記デコーダレジスタファイル読み出し段と前記実行経路との間に接続された列多重化装置段が含まれる。更により好適には、前記レジスタアクセス・置換メカニズムには、更に、前記デコーダレジスタファイル読み出し段と前記実行経路との間に接続されたクロスバー多重化装置段が含まれる。好適な実施形態において、クロスバー多重化装置段は、前記列多重化装置段と前記実行経路との間に接続される。
【００２１】
本発明の他の態様によれば、置換制御入力は、前記デコーダレジスタファイル読み出し段、前記多重化装置段、前記列多重化装置段、及び前記クロスバー多重化装置段の１つ又は複数に供給される。
【００２２】
本発明の他の態様によれば、バイパス回路が、前記実行レーンの出力と前記レジスタアクセス・置換メカニズムの入力との間に接続される。
【００２３】
特定の好適な一実施形態において、データ処理ユニットには、第１及び第２レジスタアクセス・置換メカニズムが含まれる。第１レジスタアクセス・置換メカニズムは、第１及び第２オペランドにアクセスするように、また、ロール、ソート、及びシャフルの内の１つ又は複数から選択された置換を行うように構成し得る。第２レジスタアクセス・置換メカニズムは、少なくとも１つの更なるオペランドにアクセスするように、また、ブロードキャスト置換を行うように構成し得る。
【００２４】
上記実施形態において、第１及び第２レジスタアクセス・置換メカニズムには、各々、（ｉ）前記レジスタファイルと前記実行経路との間に接続されたデコーダレジスタファイル読み出し段と、（ｉｉ）前記デコーダレジスタファイル読み出し段と前記実行経路との間に接続された少なくとも１つの多重化装置段と、の内の１つ又は複数が含まれる。好適には、多重化装置段には、（ｉ）前記デコーダレジスタファイル読み出し段と実行経路との間に接続された列多重化装置段と、（ｉｉ）前記列多重化装置段と前記実行経路との間に接続されたクロスバー多重化装置段と、の内の１つ又は複数が含まれる。
【００２５】
本発明の他の態様は、単一の命令に応答して、データオペランドにアクセスし、それらを選択的に置換することが可能であり、また、前記選択的に置換されたオペランドをＳＩＭＤ実行経路に供給することが可能なデータアクセス・置換回路を提供することである。
【００２６】
本発明の他の利点及び新規の特徴は、以下の説明に部分的に記載されており、下記内容及び添付図面を精査すると、部分的に、当業者には明らかになるであろう。あるいは、本発明の実践によって習得されるであろう。
【発明を実施するための最良の形態】
【００２７】
次に、本発明をより良く理解するために、また、如何にして本発明を実施するか示すために、一例として、添付図面を参照する。
【００２８】
本発明による一実施形態において、ＳＩＭＤプロセッサは、単一の命令によって駆動される二段データ経路を用いて、レジスタアクセス中、或るタイプのベクトル置換を算術演算と共に逐次的に行う。このタイプの演算は、本明細書では、“直列”演算と称する。プロセッサは、従って、明示的な置換命令が、ＳＩＭＤメモリアクセス、論理、及び算術命令と共にプログラムに含まれる必要性を除去又は低減する。その代わり、各命令は、ＳＩＭＤ演算及びＳＩＭＤ演算の前に適用される関連するオペランド置換（必要ならば）の双方を指定し得る。従って、プログラムサイズは、減少し、マシン性能は向上する。
【００２９】
ＳＩＭＤプロセッサが、レジスタアクセス中、算術演算と直列に置換を行う本発明による一実施形態と比べて、従来技術によるＳＩＭＤプロセッサは、明示的な置換命令が、関連する算術演算と共にプログラムに含まれる必要がある。従来技術によるＳＩＭＤプロセッサと本発明による一実施形態との間の基本的なアーキテクチャの差異は、図１及び２を参照すると分かる。図１は、従来技術によるＳＩＭＤプロセッサの基本的なアーキテクチャを示し、ここでは、レジスタファイル１０１からのデータは、並列に構成された置換ユニット１０２又は実行ユニット１０３のいずれかによって用いられる。明らかなように、置換ユニット１０２によって置換されるデータは、実行ユニット１０３によってオペランドとして引き続き用い得る前に、経路１０４でレジスタファイルにフィードバックしなければならない。これに対して、図２は、本発明による一実施形態のアーキテクチャを示し、ここでは、レジスタファイル２０１からのオペランドは、置換ユニット２０２を通過し、そして、置換されたオペランドを実行ユニット２０３に直接供給する。本発明の実施形態では、置換されたオペランドを実行ユニットに供給する前に、レジスタファイルに再度供給する必要はない。従って、図１の従来技術によるプロセッサの並列アーキテクチャ１０２乃至１０３は、図２の実施形態の直列アーキテクチャ２０２乃至２０３によって置き換えられるが、これは、以下において分かるように、図１６乃至１８のハードウェアを用いて実現し得る。本発明による一実施形態の直列アーキテクチャは、特に、マシンハードウェアの短ベクトル幅をプロセッサメモリ又はレジスタファイルの長ベクトル幅に整合させるために、頻繁なデータオペランドの置換を用いる信号処理アルゴリズムに対して多くの性能利点を有する。パイプライン化されたプロセッサでは、ＳＩＭＤ実行による置換の直列化から待ち時間が追加されるという不利益が生じることがあるが、この追加の待ち時間が、本発明の実施形態の性能利点を相殺しないように、信号処理プログラムを体系化し得る。レジスタアクセス、ベクトル置換及び実行（特にＳＩＭＤ実行）の直列化は、本明細書では、“深いレジスタアクセス”と称することがある。
【００３０】
本発明による実施形態において、直列のベクトル置換は、データ処理命令のような命令の１つ又は複数のオペランドに適用し得る。２つのソースオペランド及び１つの結果オペランドを有する命令を用いるＳＩＭＤマシンでは、或るタイプの置換を１つのソースオペランドに適用しつつ、異なるタイプの置換を他のソースオペランドに適用することは、特に有用である。
【００３１】
本発明の一実施形態に基づき、ブロードキャスト、ロール、及びソート等、３つのクラスの順次置換が、デジタル信号処理にとって特に有用なことが分かった。シャフルと呼ばれる第４クラスの置換は、（発行アルゴリズム又はそのデータの何らかの再構成による）ソートに対する他の選択肢として頻繁に用い得るが、それは、更に多様なレジスタファイルアクセス能力を必要とする点において、ソートより不利であることが分かっている。しかしながら、本発明の実施形態では、このクラスのシャフルを用いることがある。
【００３２】
第１クラスの順次置換において、本発明による一実施形態は、直列のブロードキャスト置換を提供する。この実施形態は、有限インパルス応答（ＦＩＲ）フィルタ等のたたみこみ処理を行う場合に特に有用であるが、これは、通常、単一の係数要素を長データベクトルの各要素と組み合わせる。マシンの短ベクトル（例えば、ＳＩＭＤ）レジスタを効率的に用いるために、幾つかのそのような係数要素は、各レジスタに詰め込まれる。ブロードキャスト置換の目的は、従って、短ベクトル・レジスタ・オペランドから単一の要素を抽出して、ＳＩＭＤ実行ユニットに渡される短ベクトルの全要素にそれを複製することである。
【００３３】
第２クラスの順次置換において、本発明による一実施形態は、直列のロール置換を提供する。この実施形態は、或るＦＩＲフィルタ等の“スライディング・ウィンドウ”アルゴリズムにとって特に有用である。そのようなフィルタでは、２つの長ベクトルが、要素対で組み合わせられ、そして、１つのベクトルが、１つの要素位置だけシフトされ、要素対演算が繰り返され、そして、そのベクトルは、再度シフトされ、要素対演算が、繰り返され、以下同様に行われる。従来のマシンでは、係数の数が多く、また、フィルタ処理されるデータベクトルが大きい場合、係数及びデータベクトルは、双方共、レジスタ内よりもむしろプロセッサの外部メモリに常駐しなければならない。ＳＩＭＤマシンの場合、そのような“スライディング・ウィンドウ”アルゴリズムは、通常、プロセッサが、任意のベクトル要素配列（“未配列”アクセス）の短ベクトルを、例えば、１６ビット配列の６４ビットワードをメモリからロードできることを意味する。従来のマシンでは、このことは、スライディング・ウィンドウが、短ベクトルの幅に渡って移動するにつれて、各要素が、外部メモリから複数回（例えば、１６ビット配列の６４ビットワードの場合、４回）ロードされねばならないことを意味する。外部メモリロード数が非常に多いことから、従来の手法は、従って、電力及びメモリ帯域幅の点で高価である。更に、通常、未配列アクセスが可能なメモリシステムを設計することは、更に困難で高価である。
【００３４】
これに対して、本発明による一実施形態のロール置換によって、外部メモリの繰り返され体系化された未配列アクセスは、かなり少ない回数の配列メモリアクセスによって置き換え得る。ロール置換実施形態では、短ベクトルオペランドは、レジスタファイルにおける２つの隣接する短ベクトルの連結から抽出される。従って、このタイプの置換演算では、２つの隣接するレジスタ値を読み出す必要があり、そして、置換が、実行ユニットに渡される単一の短ベクトルを抽出するために適用される。例えば、要素当り１６ビットの４要素ベクトルを各々含む２つの６４ビットレジスタ値は、図３Ａ乃至Ｃに示した変換の内の１つを用いて、共にロールして、６４ビットの単一の４要素ベクトルを形成し得る。外部メモリに繰り返しアクセスする代わりに、今度は、プロセッサは、レジスタファイルにアクセスするが、これは、通常、利用可能な帯域幅がより大きく、また、アクセス当りの電力コストがより少ない。更に、プロセッサメモリシステムは、未配列アクセスをサポートする必要がないことから、簡略化し得る。
【００３５】
第３クラスの順次置換において、本発明による一実施形態は、直列のソート及び／又はシャフル置換を提供する。シャフル置換において、２つのベクトルの要素は、インターリーブされ、他方、ソート置換では、偶数及び奇数要素は、分離（デインターリーブ）される。これらのタイプの置換は、高速フーリエ変換、ビタビ、及びターボコードアルゴリズム、及び他の通常のアルゴリズムに用いられる。一般的に、プログラマは、主に又は全体的にシャフルに優先してソートを用いるように又はその逆にアルゴリズムを形成するように選択し得る。
【００３６】
本発明の一実施形態による直列のソート置換において、長ベクトルの２つの短ベクトル部分は、２つの隣接するレジスタから読み出され、ソート演算が適用され、それらを後続のＳＩＭＤ算術演算用の１つの短ベクトルオペランドに組み合わせる。ソートされている長ベクトルの実効的な長さが何であれ、組み合わせられる２つの短ベクトル部分は、常に、隣接するレジスタに常駐するのに好都合なように構成し得る。この特性は、当然、図１４と図１２Ａ乃至１３を比較することによって分かるように、シャフルには該当しない。従って、シャフルは、一般的に、２つの非隣接レジスタ値（大きなベクトルのサイズに依存する離隔距離の範囲）の読み出しを必要とし、上述したように、ソートがシャフルより好適になる。しかしながら、シャフル及びソートを自由に混在して使用できれば、プログラマの仕事が簡素化され、これにより、本発明の幾つかの実施形態において、非隣接レジスタ対にアクセスする新たな複雑化を正当化し得る。
【００３７】
本発明の一実施形態に基づき、ソースオペランドとしてデータレジスタを用いるデータ処理命令は、深いレジスタアクセス演算として知られる直列の置換演算を用いて、レジスタが読み出された時生成される値に対して選択された置換演算を行う。好適な実施形態では、特別なアセンブリ言語シンタックスは、深いレジスタアクセスによって実施される置換やそれがどのレジスタ用いるか示すために用いられる。２つの形態の深いレジスタアクセスがあるが、実行ユニットに送られる各データオペランドに対して１つであり、第１形態は、ＤＲＡ０アクセスで示し、第２形態は、ＤＲＡ１アクセスで示す。各データレジスタソースは、多数のレーン幅要素、例えば、１６ｂの各々が６４ｂレジスタソースを含む４つのレーンが含まれる短ベクトルと見なし得る。レジスタソース及びその構成要素は、双方共、文脈に依存して、“オペランド”と呼称し得る。ＤＲＡ０アクセスにおいて、置換演算は、レジスタソースの要素のシャフル及びソートに、また、要素（レーン）幅の倍数だけの要素のロールに利用可能である。シャフル及びソートは、それぞれ、１つ又は２つのレジスタソースからのレーン幅要素のインターリーブ及びデインターリーブを意味する。ロールは、２つのレジスタソースの連結からのレーン幅要素の隣接レジスタ幅グループの選択を意味する。ＤＲＡ１アクセスにおいて、置換演算は、選択されたレーンから抜き取られた要素をレジスタオペランドの全レーンにブロードキャストするのに利用可能である
【００３８】
表１は、本発明の一実施形態に基づく、第１データレジスタソース引数用のロール及びソート置換を行うために用い得るＤＲＡ０演算の例を詳述する。表１において、値０である第１の６４ビット値用のレジスタレーンは、０、１、２、及び３で表す。ここで、レーン０は、値０の最下位ビット０乃至１５を示し、レーン１は、ビット１６乃至３１を示し、レーン２は、ビット３２乃至４７を示し、レーン３は、ビット４８乃至６３を示す。他方、値１である第２の６４ビット値用のレジスタレーンは、Ａ、Ｂ、Ｃ、及びＤで表す。ここで、レーンＡは、値１の最下位ビット０乃至１５を示し、レーンＢは、ビット１６乃至３１を示し、レーンＣは、ビット３２乃至４７を示し、レーンＤは、ビット４８乃至６３を示す。示した置換の組は、レジスタ＄ｄｉ及び＄ｄｊを利用するが、ここで、ｉ＝０・・・６３、ｊ＝（（ｉ＋１）％６４）である。表１の列は、組立シンタックス、意味、レーン、及びＤＲＡ０演算用の演算を示す。
【表１】
2008535115.tif 000003
【００３９】
図３Ａ乃至３Ｃは、本発明の一実施形態に基づく表１の置換演算を示す。図３Ａ乃至３Ｃに示すように、表１のＲｏｌｌ３ＨａＩｆ、Ｒｏｌｌ２Ｈａｌｆ、及びＲｏｌｌ１ＨａＩｆ演算は、２つの６４ビット値をとり、（それぞれ）３つ、２つ、又は１つの１６ビットフィールドだけ左側にロールされるソース値に対応する単一の６４ビット結果を形成する。用語「半分」（又は半ワード）は、慣習的に１６ビット値を意味する。表１のＳｏｒｔ４ＭＨａｌｆ及びＳｏｒｔ４ＬＨａｌｆ演算は、２つの６４ビット値を組み合わせて６４ビット結果にして、（それぞれ）最上位又は最下位６４ビット結果のいずれかを生成する。表１のソート置換は、図９Ｂでのようにグラフを用いて表し得る。
【００４０】
以下の表２は、本発明の一実施形態に基づく、第２データレジスタソース引数用のブロードキャスト置換を行うために用い得るＤＲＡ１演算の例を詳述する。表２において、値である６４ビット値用のレジスタレーンは、０、１、２、及び３で表し、ここで、レーン０は、値の最下位ビット０乃至１５を示し、レーン１は、ビット１６乃至３１を示し、レーン２は、ビット３２乃至４７を示し、レーン３は、ビット４８乃至６３を示す。示した置換の組は、レジスタ＄ｄｉを利用するが、ここで、ｉ＝０・・・６３である。表２の列は、組立シンタックス、意味、レーン、及びＤＲＡ１演算用の演算を示す。
【表２】
2008535115.tif 000004
【００４１】
図４Ａ及びＢは、本発明の一実施形態に基づく表２の置換演算を示す。図４Ａに示すように、表２のＢＣａｓｔＨａｌｆ演算は、４つの可能な１６ビット半ソース値の内の１つを選択し、結果における４つの１６ビットレーンに渡ってそれを複製する。図４Ｂに示すように、表２のＢＣａｓｔＷｏｒｄ演算は、２つの可能なワードソース値の内の１つを選択し、結果における２つの３２ビットレーンに渡ってそれを複製する。
【００４２】
表１及び２の演算を拡張して、図５Ａ乃至１１は、本発明の一実施形態に基づき行い得る直列のシャフル及びソート置換の例を示す。
【００４３】
図５Ａ乃至８は、本発明の一実施形態に基づき“直列”に行い得る１６ビット要素が６４ビットレジスタのアレイに格納されたベクトルのシャフルを示す。
【００４４】
図５Ａは、各々２つの１６ビット要素からなる２つのベクトルをインターリーブするためのシャフルを示す。図５Ｂ及び５Ｃは、各々４つの１６ビット要素からなる２つのベクトルをインターリーブするためのシャフルの他の選択肢としての表現を示す。図６Ａ及び６Ｂは、各々８つの１６ビット要素からなる２つのベクトルをインターリーブするためのシャフルの他の選択肢としての表現を示す。図７は、各々１６の１６ビット要素からなる２つのベクトルをインターリーブするためのシャフルを示す。図８は、各々３２の１６ビット要素からなる２つのベクトルをインターリーブするためのシャフルを示す。
【００４５】
図９Ａ乃至１１は、本発明の一実施形態に基づき“直列”に行い得る、１６ビット要素が６４ビットレジスタのアレイに格納されたベクトルのソートを示す。図９Ａは、各々２つの１６ビット要素からなる２つのベクトルをデインターリーブするためのソートを示す。図９Ｂ及び９Ｃは、各々４つの１６ビット要素からなる２つのベクトルをデインターリーブするための他の選択肢としてのソートの表現を示す。図１ＯＡ及び１ＯＢは、各々８つの１６ビット要素からなる２つのベクトルをデインターリーブするための他の選択肢としてのソートの表現を示す。図１１は、各々１６の１６ビット要素からなる２つのベクトルをデインターリーブするためのソートを示す。
【００４６】
図１２Ａ乃至１２Ｃ及び１３は、本発明の一実施形態に基づく、図５Ａ乃至８のシャフル演算をサポートする一組のサブレジスタ・アクセス・パターンを示す。図１２Ａは、図５Ａでのように、２つの１６ビット要素を備えたベクトルをシャフルするためのサブレジスタ・アクセス・パターンを示す。図１２Ｂは、図５Ｂ及び５Ｃでのように、４つの１６ビット要素を備えたベクトルをシャフルするためのサブレジスタ・アクセス・パターンを示す。図１２Ｃは、図６Ａ及び６Ｂでのように、８つの１６ビット要素を備えたベクトルをシャフルするためのサブレジスタ・アクセス・パターンを示す。図１３は、図７でのように、１６の１６ビット要素を備えたベクトルをシャフルするためのサブレジスタ・アクセス・パターンを示す。図１２Ａ乃至１３では、各々、各図の左半分に示した２つのレジスタにおける４つのレジスタ要素（即ち、図１２Ａの要素１２１８乃至１２２１、図１２Ｂの１２０１乃至１２０４、図１２Ｃの１２１０乃至１２１３、図１３の１３１４乃至１３１７）のいずれかへのアクセスが必要であり、又は、各図の右半分に示した２つのレジスタにおける４つのレジスタ要素（即ち、図１２Ａの要素１２２２乃至１２２５、図１２Ｂの１２０５乃至１２０８、図１２Ｃの１２２６乃至１２２９、図１３の１３３０乃至１３３３）へのアクセスが必要である。また、各図の矢印１２０９、１２３４、及び１３３５は、アレイのベースを基準にして、各サブレジスタ・アクセス・パターン用の範囲の配列を示す。
【００４７】
図１４は、本発明の一実施形態に基づく、図９Ａ乃至１１のソート演算をサポートするサブレジスタ・アクセス・パターンを示す。１つのパターンだけが、図９Ａ乃至１１のソート演算全てに必要である。４つの要素１４０１乃至１４０４又は４つの要素１４０５乃至１４０８のいずれかへのアクセスが必要である。ソースレジスタは、常に隣接することから、依存性チェックは、またがるレジスタ対（上記シャフルに必要なもの等）の場合より簡単であり、レジスタアクセスも同様である。
【００４８】
図１５は、本発明の一実施形態による直列の置換を用い得るコンピュータシステムのアーキテクチャブロック図を示す。命令フェッチユニット１５０２は、命令メモリ１５０１から命令を得て、それらを命令復号化ユニット１５０３に渡す。復号化ユニット１５０３は、オペランド又は各オペランドに関する位置情報を含む、命令の様々な構成要素を復号し、それに基づき、制御出力を提供する。命令復号化ユニット１５０３は、命令がその演算に用いる少なくとも１つのオペランドのアドレスを命令から取得し、そのアドレスは、レジスタファイル１５０４から対応するデータを得るために用いられる１５０８。また、命令復号化ユニット１５０３は、置換演算コードを命令から取得し、置換演算コードは、置換演算の性質を決定するために用いられ１５０７、この置換演算は、同じ命令によりレジスタファイル１５０４から得られたデータに対して置換ユニット１５０５によって行われる。更に、命令復号化ユニット１５０３は、実行演算コードを命令から取得し、実行演算コードは、置換ユニット１５０５を介して提供されたベクトルオペランド（１つ又は複数）の各要素に対してＳＩＭＤ実行ユニット１５０６によって行われる演算の性質を決定するために用いられる１５０９。従って、データアクセスのタイプ及び場所、アクセスされたベクトル要素に対する置換の性質、及び置換されたベクトルの要素に対して引き続き行われるＳＩＭＤ演算の性質は、単一の命令において定義される。
【００４９】
図１６は、本発明の一実施形態による直列置換を用い得る、図１５におけるレジスタファイル１５０４、置換ユニット１５０５、及び実行ユニット１５０６の組み合わせに対応するプロセッサデータ経路１６１０のブロック図を示す。本実施形態において、ソースオペランドとしてデータレジスタを用いるデータ処理命令は、レジスタが読み出された時生成される値に対して、選択された置換演算を行う深いレジスタ・アクセス・メカニズム１６４６Ａ、Ｂを用いる。
【００５０】
本例において、図１６の実施形態のプロセッサデータ経路１６１０は、実行レーン出力Ｚ０乃至Ｚ３からバイパス多重化装置１６４７を介して、深いレジスタアクセスブロック１６４６Ａ及び１６４６Ｂを通り、また、実行レーン１６２６乃至１６２９を通るループによって閉じられた経路毎に少なくとも１つの組のパイプラインレジスタが存在するように、パイプライン化される。当業者は、任意の適切なパイプライン方式を用い得ることを認識されるであろう。
【００５１】
図１６の実施形態の読み出しユニット１６３２において、３つの６４ビットの短ベクトルレジスタ値が、データレジスタファイル１６３８から読み出され、置換され、２つの６４ビットベクトルオペランド１６３９及び１６４０が、命令中の置換演算コードに基づき、上述した様々な直列の置換演算を実現する深いレジスタアクセスユニット１６４６Ａ及び１６４６Ｂによって形成される。これら２つの置換されたベクトルオペランドは、命令中の実行演算コードに基づき更に処理を行うために、４つのＳＩＭＤ実行レーン１６２６乃至１６２９にレーン毎に配信される。レーン毎結果Ｚ０乃至Ｚ３は、書き込み経路１６４１を介してレジスタファイル１６３８に書き込みのために返される単一の６４ビット結果ベクトルを共に形成し、また、オプションとして、深いレジスタアクセスユニット１６４６Ａ及び１６４６Ｂに直接バイパスされ、後続のパイプライン化された演算を即座に実行し得る。
【００５２】
本発明の一実施形態に基づき、図１６のデータ処理ユニットに対して修正を行い得ることを認識されるであろう。例えば、任意の数のＳＩＭＤ実行レーン１６２６乃至１６２９を用いてよく、これらのレーンは、任意の幅のオペランドで動作し、置換ユニットは、オペランドの一部を置換し、必ずしも全てのオペランドを置換する必要はない。また、置換は、必ずしも例示したものである必要はないが、その組み合わせ、又は、そのような置換の選択及び集まり、又は、他のタイプの置換であってもよい。また、置換演算は、実行レーン１６２６乃至１６２９の下に配置されたユニットによって行ってよい。そのような‘実行後’置換ユニットは、単独で、又は（例えば、深いレジスタ・アクセス・メカニズム１６４６による）データ実行の前に行われるこれまで説明した‘実行前’置換に加えて、用いてよい。‘実行後’置換ユニットによる置換後、オペランドは、次に、レジスタファイル１６３８に書き戻されるか、又は、多重化装置１６４７を介してバイパスされる。更に、直列の置換ユニット用の制御情報は、サイクル毎に発せられる命令に保持された情報からの代わりに、格納された‘構成’データから部分的に又は完全に導出し得る。そのような構成情報は、例えば、プログラム制御下で、プロセッサ制御レジスタにアップロードしてよく、次に、新しい構成がアップロードされるまで、又は、静的な構成情報を置き換え得る特定の命令が発せられるまで、多くのプロセッササイクルの間、置換ユニットに静的な‘擬似命令’を提供し得る。
【００５３】
図１７及び１８は、本発明の一実施形態に基づく、図１６の深いレジスタアクセス機能１６４６Ａ及び１６４６Ｂを実現するための、及び図１６のレジスタ１６３８を読み出すための代表的なハードウェアを示す。図１７は、深いレジスタアクセスを用いて、データレジスタファイル１６３８から代表的な６４ビットベクトルＳＲＣ０をフェッチするためのハードウェアを示す。他方、図１８は、深いレジスタアクセスを用いて、データレジスタファイル１６４６から代表的な６４ビットベクトルＳＲＣ１をフェッチするためのハードウェアを示す。図１７及び１８において、１７７３、１７７４におけるＩｎｄｅｘ０、１８７５、１８７６におけるＩｎｄｅｘ１は、各々、データレジスタファイル１６３８における６４ビットベクトルを指す。データレジスタファイル１６３８は、（本例では）６４のベクトルを含んでいるため、各Ｉｎｄｅｘ０及びＩｎｄｅｘ１には、図１７及び１８において、０乃至５が付番された６つのビットが含まれる。図１７及び１８のデコーダ１７７７及び１８７８は、単純な３２分の１行デコーダであり、また、３２のライン上に対で配置された６４の１６ビットワードにアクセスする。デコーダ１７７７及び１８７８は、レジスタファイル読み出し段１７７９、１８８０の一部であり、この後には、列多重化装置段１７８１、１８８２及びオペランドクロスバースイッチ段１７８３、１８８４が続き、後者は、それぞれ６４又は３２の交差配線を有する。図１７の入力１７８５は、アクセスされたデータベクトルに対してロール及びソート置換を用いる深いレジスタアクセス用のイネーブル信号を提供する。更に、クロスバー制御入力１７８７は、図１９の表に基づき、用いられる深いレジスタアクセスのタイプを決定するために適切に設定しなければならない。本発明の一実施形態に基づき、入力Ｘｂａｒ０＿ｃｔｌ３、Ｘｂａｒ０＿ｃｔｌ２、Ｘｂａｒ０＿ｃｔｌ１、及びＸｂａｒ０＿ｃｔｌ０の値並びに制御入力１７８５は、深いレジスタアクセスが、通常のアクセスであるかどうか、又は深いレジスタアクセスが、ロール又はソート置換等の置換を伴うかどうか判断する。図１８の入力１８８６は、アクセスされたデータベクトルに対してブロードキャスト置換を用いる深いレジスタアクセスのための、並びに通常のレジスタアクセス（即ち、置換のないアクセス）のためのイ
ネーブル信号を提供する。図１７及び１８の出力１７８８及び１８８９は、それぞれ６４ビットベクトルＳＲＣ０及びＳＲＣ１の４つのレーンである。これらの出力は、一般的に、置換された出力１６３９及び１６４０として図１６に表されるが、これは、各４要素ベクトルの１つの要素が如何にしてＳＩＭＤ回路にレーン毎に供給されるか示す。
【００５４】
図１７の入力は、更に、ユニット１７９６を示すが、このユニットは、単に５ビット加算器であり、モジュロ３２演算を行い、また、オーバーフローが発生した場合、折り返しが可能である。また、図１７の入力は、列多重化装置段に接続された制御入力論理段１７９９を示すが、この段は、第１の深いレジスタアクセスユニット１６４６Ａにおいて利用可能な異なるタイプの置換演算の選択をサポートする。図１７と１８との間のこれらの及び他のわずかな差異は、開示された実施形態の機能の文脈において、当業者によって容易に理解されるであろう。
【００５５】
本発明の一実施形態に基づき、用いられる深いレジスタアクセスのタイプを制御するために、図１７及び１８のハードウェアによって用いられる入力の値、例えば、図１９のＸｂａｒ０入力の値、又は図１７及び１８の多重化装置を制御するための他の入力は、命令の所定の場所におけるコードの値によって決定し得る。即ち、命令パケットの所定のビット場所における指定されたビットを用いて、命令に用いられる深いレジスタアクセスのタイプを決定し得る。従って、例えば、図１５の実施形態の命令復号化ユニット１５０３は、命令の特定のフィールドにある置換演算コード又は他の命令情報と組み合わせて符号化された置換演算コードの値を用いて、図１７又は１８のクロスバーにおける多重化装置選択を制御し得る。指定されたビットの値は、復号して、可能性としてプロセッサに記憶された他の構成情報と組み合わせて、図１９のＸｂａｒ０入力の値を求め、これによって、どの深いレジスタアクセスの形態が、その命令によって用いられるか、例えば、適用されるソート、ロール、ブロードキャスト、又はシャフルのタイプを決定し得る。例えば、図２０は、本発明の一実施形態に基づき用い得る一般的な命令フォーマットを示すが、他の命令フォーマットを用いてもよいことを認識されるであろう。命令２００１には、実行演算のタイプ（例えば、ロード、記憶、ＳＩＭＤ加算、ＳＩＭＤ乗算等）を指定するビットを含むフィールド２００２と、適用される置換のタイプ（例えば、ソート、ロール、ブロードキャスト等）を指定するビットを含むフィールド２００３と、レジスタファイルにおけるソースオペランド及び結果の場所を指定するフィールド２００４と、が含まれる。
【００５６】
このように、図１６乃至１９の実施形態は、図２の実施形態に示したものと同様に、レジスタファイル、置換ユニット、及び実行ユニット間の連続直列接続の用途を示すことが理解できる。特に、図１６乃至１８を参照すると、図２のレジスタファイル２０１に対応する図１６のデータレジスタファイル読み出し１６３８は、図２の置換ユニット２０２に共に対応して、深いレジスタ・アクセス・メカニズム１６４６Ａ及び１６４６Ｂと直列に置かれ、これらは、また、図２の実行ユニット２０３に共に対応して、ＳＩＭＤ実行レーン１６２６乃至１６２９と直列である。上記内容は、最良のモードであると見なされるもの、また、適宜本発明を実施する他のモードについて述べられたが、本発明は、好適な実施形態の本説明に開示された特定の装置構成又は方法ステップに限定すべきでないことを当業者は認識されたい。また、本発明は、広範囲の用途を有すること、及び本実施形態は、本発明による概念から逸脱することなく広い範囲の修正を認めることを当業者は認識されたい。
【図面の簡単な説明】
【００５７】
【図１】置換ユニットを含む従来技術によるマシンの基本的なアーキテクチャを示す図である。
【図２】本発明の一実施形態による直列置換レジスタアクセスの基本的なアーキテクチャを示す図である。
【図３Ａ】本発明の一実施形態に基づく、‘直列’に行い得る所謂‘ロール’又は‘スライディング・ウィンドウ’置換を行うために用い得る代表的な動作を示す図である。
【図３Ｂ】本発明の一実施形態に基づく、‘直列’に行い得る所謂‘ロール’又は‘スライディング・ウィンドウ’置換を行うために用い得る代表的な動作を示す図である。
【図３Ｃ】本発明の一実施形態に基づく、‘直列’に行い得る所謂‘ロール’又は‘スライディング・ウィンドウ’置換を行うために用い得る代表的な動作を示す図である。
【図４Ａ】本発明の一実施形態に基づく、‘直列’にブロードキャスト置換を行うために用い得る代表的な動作を示す図である。
【図４Ｂ】本発明の一実施形態に基づく、‘直列’にブロードキャスト置換を行うために用い得る代表的な動作を示す図である。
【図５Ａ】本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘シャフル’又は‘インターリーブ’動作を示す図である。
【図５Ｂ】本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘シャフル’又は‘インターリーブ’動作を示す図である。
【図５Ｃ】本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘シャフル’又は‘インターリーブ’動作を示す図である。
【図６Ａ】本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘シャフル’又は‘インターリーブ’動作を示す図である。
【図６Ｂ】本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘シャフル’又は‘インターリーブ’動作を示す図である。
【図７】本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘シャフル’又は‘インターリーブ’動作を示す図である。
【図８】本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘シャフル’又は‘インターリーブ’動作を示す図である。
【図９Ａ】本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘ソート’又は‘デインターリーブ’動作を示す図である。
【図９Ｂ】本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘ソート’又は‘デインターリーブ’動作を示す図である。
【図９Ｃ】本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘ソート’又は‘デインターリーブ’動作を示す図である。
【図１０Ａ】本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘ソート’又は‘デインターリーブ’動作を示す図である。
【図１０Ｂ】本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘ソート’又は‘デインターリーブ’動作を示す図である。
【図１１】本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘ソート’又は‘デインターリーブ’動作を示す図である。
【図１２Ａ】本発明の一実施形態に基づく、図５Ａ乃至８のシャフル演算をサポートする一組のサブレジスタ・アクセス・パターンを示す図である。
【図１２Ｂ】本発明の一実施形態に基づく、図５Ａ乃至８のシャフル演算をサポートする一組のサブレジスタ・アクセス・パターンを示す図である。
【図１２Ｃ】本発明の一実施形態に基づく、図５Ａ乃至８のシャフル演算をサポートする一組のサブレジスタ・アクセス・パターンを示す図である。
【図１３】本発明の一実施形態に基づく、図５Ａ乃至８のシャフル演算をサポートする一組のサブレジスタ・アクセス・パターンを示す図である。
【図１４】本発明の一実施形態に基づく、図９Ａ乃至１１のソート演算及び他の同様なものをサポートするサブレジスタ・アクセス・パターンを示す図である。
【図１５】本発明の一実施形態による、直列の置換を用い得るコンピュータシステムを示すアーキテクチャブロック図である。
【図１６】本発明の一実施形態による直列の置換が可能なプロセッサデータ経路を示すブロック図である。
【図１７】本発明の一実施形態に基づく、図１６のレジスタアクセス機能を実現するための代表的なハードウェアを示す図である。
【図１８】本発明の一実施形態に基づく、図１６のレジスタアクセス機能を実現するための代表的なハードウェアを示す図である。
【図１９】本発明の一実施形態に基づく、様々なタイプの置換を達成するための図１７における可能な多重化装置制御入力を示す表である。
【図２０】本発明の一実施形態に基づき用い得る一般的な命令フォーマットを示す図である。
【符号の説明】
【００５８】
２０１      レジスタファイル
２０２      置換ユニット
２０３      実行ユニット
【図１】
2008535115.tif 000005
【図２】
2008535115.tif 000006
【図３Ａ】
2008535115.tif 000007
【図３Ｂ】
2008535115.tif 000008
【図３Ｃ】
2008535115.tif 000009
【図４Ａ】
2008535115.tif 000010
【図４Ｂ】
2008535115.tif 000011
【図５Ａ】
2008535115.tif 000012
【図５Ｂ】
2008535115.tif 000013
【図５Ｃ】
2008535115.tif 000014
【図６Ａ】
2008535115.tif 000015
【図６Ｂ】
2008535115.tif 000016
【図７】
2008535115.tif 000017
【図８】
2008535115.tif 000018
【図９Ａ】
2008535115.tif 000019
【図９Ｂ】
2008535115.tif 000020
【図９Ｃ】
2008535115.tif 000021
【図１０Ａ】
2008535115.tif 000022
【図１０Ｂ】
2008535115.tif 000023
【図１１】
2008535115.tif 000024
【図１２Ａ】
2008535115.tif 000025
【図１２Ｂ】
2008535115.tif 000026
【図１２Ｃ】
2008535115.tif 000027
【図１３】
2008535115.tif 000028
【図１４】
2008535115.tif 000029
【図１５】
2008535115.tif 000030
【図１６】
2008535115.tif 000031
【図１７】
2008535115.tif 000032
【図１８】
2008535115.tif 000033
【図１９】
2008535115.tif 000034
【図２０】
2008535115.tif 000035
【国際調査報告】
2008535115.tif 000036
2008535115.tif 000037