(57)【要約】【課題】  行列データを処理するためのプロセッサおよび方法を提供することにある。【解決手段】  プロセッサは、Ｌ個のデータ・エレメントからなる行列をひとまとめにして保管するように適合されたＭ個の独立ベクトル・レジスタ・ファイルを含む。各データ・エレメントはＢ個のバイナリ・ビットを有する。行列はＮ個の行とＭ個の列とを有し、Ｌ＝Ｎ＊Ｍである。各列はＫ個のサブカラムを有する。Ｎ＞２、Ｍ＞２、Ｋ＞１、Ｂ＞１である。各行および各サブカラムはアドレス可能である。プロセッサはＬ個のデータ・エレメントを二重に保管しない。行列は、各アレイがその行列の１つの行またはサブカラムになるような複数アレイのセットを含む。プロセッサは複数アレイのセットのうちの第１のアレイについて操作を実行する命令を実行することができ、その操作が第１のアレイのデータ・エレメントに関する選択性によって実行されるようになっている。【選択図】  図１
2005149492.tif 000002
【特許請求の範囲】
【請求項１】
Ｍ個の独立ベクトル・レジスタ・ファイルを有するプロセッサであって、前記Ｍ個のベクトル・レジスタ・ファイルがＬ個のデータ・エレメントからなる行列をひとまとめにして保管するように適合され、各データ・エレメントがＢ個のバイナリ・ビットを有し、前記行列がＮ個の行とＭ個の列とを有し、前記Ｌ＝Ｎ＊Ｍであり、各列がＫ個のサブカラムを有し、前記Ｎ＞２であり、前記Ｍ＞２であり、前記Ｋ＞１であり、前記Ｂ＞１であり、前記Ｎ個の行の各行がアドレス可能であり、前記Ｋ個のサブカラムの各サブカラムがアドレス可能であり、前記プロセッサが前記Ｌ個のデータ・エレメントを二重に保管しないように適合されるプロセッサ。
【請求項２】
前記プロセッサがＭ個のアドレス・レジスタをさらに有し、前記Ｍ個のアドレス・レジスタの各アドレス・レジスタが前記Ｍ個のベクトル・レジスタ・ファイルのうちの対応する１つに関連付けられ、前記Ｍ個のベクトル・レジスタ・ファイルのそれぞれがＮ個のレジスタからなるアレイを含み、前記Ｍ個のベクトル・レジスタ・ファイルのＮ＊Ｍ個のレジスタのそれぞれが前記Ｌ個のデータ・エレメントのうちの１つのデータ・エレメントを保管するように適合され、各ベクトル・レジスタ・ファイルが、前記ベクトル・レジスタ・ファイルの前記Ｎ個のレジスタのうちの１つを指し示すように適合されたその関連アドレス・レジスタにより独立してアドレス可能である、請求項１に記載のプロセッサ。
【請求項３】
各サブカラムの前記データ・エレメントが異なるベクトル・レジスタ・ファイルに保管されるように適合され、各行の前記データ・エレメントが異なるベクトル・レジスタ・ファイルに保管されるように適合される、請求項２に記載のプロセッサ。
【請求項４】
各サブカラムの前記データ・エレメントが前記異なるベクトル・レジスタ・ファイルの異なる相対レジスタ位置に保管されるように適合され、各行の前記データ・エレメントが前記異なるベクトル・レジスタ・ファイルの同じ相対レジスタ位置に保管されるように適合される、請求項３に記載のプロセッサ。
【請求項５】
前記プロセッサが前記Ｍ個のベクトル・レジスタ・ファイルにそれぞれ結合されたＭ個のマルチプレクサをさらに有し、前記行列が前記Ｍ個のベクトル・レジスタ・ファイルに保管される場合に、
前記Ｍ個のマルチプレクサが、行読取りマッピング・アルゴリズムにより前記行列の１つの行の前記データ・エレメントを前記Ｍ個のベクトル・レジスタ・ファイルから前記行列の前記行にマッピングすることにより、前記行列の前記行を読み取るためのコマンドに応答するように適合され、
前記Ｍ個のマルチプレクサが、サブカラム読取りマッピング・アルゴリズムにより前記行列の１つのサブカラムの前記データ・エレメントを前記Ｍ個のベクトル・レジスタ・ファイルから前記行列の前記サブカラムに読み取ることにより、前記行列の前記サブカラムを読み取るためのコマンドに応答するように適合される、
請求項３に記載のプロセッサ。
【請求項６】
前記プロセッサが前記Ｍ個のベクトル・レジスタ・ファイルにそれぞれ結合されたＭ個のマルチプレクサをさらに有し、
前記Ｍ個のマルチプレクサが、行書込みマッピング・アルゴリズムにより前記行列の１つの行の前記データ・エレメントを前記Ｍ個のベクトル・レジスタ・ファイルにマッピングすることにより、前記行列の前記行を書き込むためのコマンドに応答するように適合され、
前記Ｍ個のマルチプレクサが、サブカラム書込みマッピング・アルゴリズムにより前記行列の１つのサブカラムの前記データ・エレメントを前記Ｍ個のベクトル・レジスタ・ファイルにマッピングすることにより、前記行列の前記サブカラムを書き込むためのコマンドに応答するように適合される、
請求項３に記載のプロセッサ。
【請求項７】
前記プロセッサが前記Ｍ個のベクトル・レジスタ・ファイルにそれぞれ結合されたＭ個のマルチプレクサをさらに有し、前記Ｍ個のマルチプレクサのそれぞれが異なる値を有するようになっている、請求項２に記載のプロセッサ。
【請求項８】
Ｌ個のデータ・エレメントからなる前記行列が前記Ｍ個のベクトル・レジスタ・ファイルに保管される、請求項１に記載のプロセッサ。
【請求項９】
プロセッサを用意するステップと、
前記プロセッサ内にＭ個の独立ベクトル・レジスタ・ファイルを用意するステップであって、前記Ｍ個のベクトル・レジスタ・ファイルがＬ個のデータ・エレメントからなる行列をひとまとめにして保管し、各データ・エレメントがＢ個のバイナリ・ビットを有し、前記行列がＮ個の行とＭ個の列とを有し、前記Ｌ＝Ｎ＊Ｍであり、各列がＫ個のサブカラムを有し、前記Ｎ＞２であり、前記Ｍ＞２であり、前記Ｋ＞１であり、前記Ｂ＞１であり、前記Ｎ個の行の各行がアドレス可能であり、前記Ｋ個のサブカラムの各サブカラムがアドレス可能であり、前記プロセッサが前記Ｌ個のデータ・エレメントを二重に保管しないステップと、
を有する、行列データを処理するための方法。
【請求項１０】
前記方法が前記プロセッサ内にＭ個のアドレス・レジスタを用意するステップをさらに有し、前記Ｍ個のアドレス・レジスタの各アドレス・レジスタが前記Ｍ個のベクトル・レジスタ・ファイルのうちの対応する１つに関連付けられ、前記Ｍ個のベクトル・レジスタ・ファイルのそれぞれがＮ個のレジスタからなるアレイを含み、前記Ｍ個のベクトル・レジスタ・ファイルのＮ＊Ｍ個のレジスタのそれぞれが前記Ｌ個のデータ・エレメントのうちの１つのデータ・エレメントを保管し、各ベクトル・レジスタ・ファイルが、前記ベクトル・レジスタ・ファイルの前記Ｎ個のレジスタのうちの１つを指し示すように適合されたその関連アドレス・レジスタにより独立してアドレス可能である、請求項９に記載の方法。
【請求項１１】
各サブカラムの前記データ・エレメントが異なるベクトル・レジスタ・ファイルに保管され、各行の前記データ・エレメントが異なるベクトル・レジスタ・ファイルに保管される、請求項１０に記載の方法。
【請求項１２】
各サブカラムの前記データ・エレメントが前記異なるベクトル・レジスタ・ファイルの異なる相対レジスタ位置に保管され、各行の前記データ・エレメントが前記異なるベクトル・レジスタ・ファイルの同じ相対レジスタ位置に保管される、請求項１１に記載の方法。
【請求項１３】
前記方法が前記Ｍ個のベクトル・レジスタ・ファイルにそれぞれ結合されたＭ個のマルチプレクサを用意するステップをさらに有し、前記行列が前記Ｍ個のベクトル・レジスタ・ファイルに保管される場合に、
前記Ｍ個のマルチプレクサが、行読取りマッピング・アルゴリズムにより前記行列の１つの行の前記データ・エレメントを前記Ｍ個のベクトル・レジスタ・ファイルから前記行列の前記行にマッピングすることにより、前記行列の前記行を読み取るためのコマンドに応答するように適合され、
前記Ｍ個のマルチプレクサが、サブカラム読取りマッピング・アルゴリズムにより前記行列の１つのサブカラムの前記データ・エレメントを前記Ｍ個のベクトル・レジスタ・ファイルから前記行列の前記サブカラムに読み取ることにより、前記行列の前記サブカラムを読み取るためのコマンドに応答するように適合される、
請求項１１に記載の方法。
【請求項１４】
前記方法が前記Ｍ個のベクトル・レジスタ・ファイルにそれぞれ結合されたＭ個のマルチプレクサを用意するステップをさらに有し、
前記Ｍ個のマルチプレクサが、行書込みマッピング・アルゴリズムにより前記行列の１つの行の前記データ・エレメントを前記Ｍ個のベクトル・レジスタ・ファイルにマッピングすることにより、前記行列の前記行を書き込むためのコマンドに応答するように適合され、
前記Ｍ個のマルチプレクサが、サブカラム書込みマッピング・アルゴリズムにより前記行列の１つのサブカラムの前記データ・エレメントを前記Ｍ個のベクトル・レジスタ・ファイルにマッピングすることにより、前記行列の前記サブカラムを書き込むためのコマンドに応答するように適合される、
請求項１１に記載の方法。
【請求項１５】
前記方法が前記Ｍ個のベクトル・レジスタ・ファイルにそれぞれ結合されたＭ個のマルチプレクサを用意するステップをさらに有し、前記Ｍ個のマルチプレクサのそれぞれが異なる値を有するようになっている、請求項１０に記載の方法。
【請求項１６】
前記Ｎ個の行のうちの１つの行をアドレッシングするステップをさらに有する、請求項９に記載の方法。
【請求項１７】
前記Ｋ＊Ｍ個のサブカラムのうちの１つのサブカラムをアドレッシングするステップをさらに有する、請求項９に記載の方法。
【請求項１８】
Ｍ個の独立ベクトル・レジスタ・ファイルを有するプロセッサであって、前記Ｍ個のベクトル・レジスタ・ファイルがＬ個のデータ・エレメントからなる行列をひとまとめにして保管するように適合され、各データ・エレメントがＢ個のバイナリ・ビットを有し、前記行列がＮ個の行とＭ個の列とを有し、前記Ｌ＝Ｎ＊Ｍであり、各列がＫ個のサブカラムを有し、前記Ｎ＞２であり、前記Ｍ＞２であり、前記Ｋ＞１であり、前記Ｂ＞１であり、前記Ｎ個の行の各行がアドレス可能であり、前記Ｋ個のサブカラムの各サブカラムがアドレス可能であり、前記行列が、各アレイが前記行列の１つの行またはサブカラムになるような複数アレイのセットを含み、前記プロセッサが、前記複数アレイのセットのうちの第１のアレイについて操作を実行する命令を実行するように適合され、前記操作が、前記第１のアレイの前記データ・エレメントに関する選択性によって実行されるプロセッサ。
【請求項１９】
前記プロセッサが前記Ｍ個のベクトル・レジスタ・ファイルにそれぞれ結合されたＭ個のマルチプレクサをさらに有し、前記Ｍ個のマルチプレクサに関連する値が前記選択性を制御する、請求項１８に記載のプロセッサ。
【請求項２０】
前記プロセッサがＭ個のアドレス・レジスタをさらに有し、前記Ｍ個のアドレス・レジスタの各アドレス・レジスタが前記Ｍ個のベクトル・レジスタ・ファイルのうちの対応する１つに関連付けられ、前記Ｍ個のベクトル・レジスタ・ファイルのそれぞれがＮ個のレジスタからなるアレイを含み、前記Ｍ個のベクトル・レジスタ・ファイルのＮ＊Ｍ個のレジスタのそれぞれが前記Ｌ個のデータ・エレメントのうちの１つのデータ・エレメントを保管するように適合され、各ベクトル・レジスタ・ファイルが、前記ベクトル・レジスタ・ファイルの前記Ｎ個のレジスタのうちの１つを指し示すように適合されたその関連アドレス・レジスタにより独立してアドレス可能である、請求項１８に記載のプロセッサ。
【請求項２１】
前記命令が前記複数アレイのセットのうちの前記第１のアレイの少なくとも１つのデータ・エレメントを前記複数アレイのセットのうちの第２のアレイにコピーするように適合され、前記命令が前記第１のアレイの正確なコピーを前記第２のアレイに挿入しない、請求項１８に記載のプロセッサ。
【請求項２２】
前記命令が前記第１のアレイ内で前記第１のアレイの前記データ・エレメントを再配置するように適合される、請求項１８に記載のプロセッサ。
【請求項２３】
前記プロセッサが前記Ｌ個のデータ・エレメントを二重に保管しないように適合される、請求項１８に記載のプロセッサ。
【請求項２４】
Ｌ個のデータ・エレメントからなる前記行列が前記Ｍ個のベクトル・レジスタ・ファイルに保管される、請求項１８に記載のプロセッサ。
【請求項２５】
プロセッサを用意するステップと、
前記プロセッサ内にＭ個の独立ベクトル・レジスタ・ファイルを用意するステップであって、前記Ｍ個のベクトル・レジスタ・ファイルがＬ個のデータ・エレメントからなる行列をひとまとめにして保管し、各データ・エレメントがＢ個のバイナリ・ビットを有し、前記行列がＮ個の行とＭ個の列とを有し、前記Ｌ＝Ｎ＊Ｍであり、各列がＫ個のサブカラムを有し、前記Ｎ＞２であり、前記Ｍ＞２であり、前記Ｋ＞１であり、前記Ｂ＞１であり、前記Ｎ個の行の各行がアドレス可能であり、前記Ｋ個のサブカラムの各サブカラムがアドレス可能であり、前記行列が、各アレイが前記行列の１つの行またはサブカラムになるような複数アレイのセットを含むステップと、
前記プロセッサによって命令を実行するステップであって、前記命令が前記複数アレイのセットのうちの第１のアレイについて操作を実行し、前記操作が、前記第１のアレイの前記データ・エレメントに関する選択性によって実行されるステップと、
を有する、行列データを処理するための方法。
【請求項２６】
前記Ｍ個のベクトル・レジスタ・ファイルにそれぞれ結合されたＭ個のマルチプレクサを用意するステップをさらに有し、前記Ｍ個のマルチプレクサに関連する値が前記選択性を制御する、請求項２５に記載の方法。
【請求項２７】
前記方法が前記プロセッサ内にＭ個のアドレス・レジスタを用意するステップをさらに有し、前記Ｍ個のアドレス・レジスタの各アドレス・レジスタが前記Ｍ個のベクトル・レジスタ・ファイルのうちの対応する１つに関連付けられ、前記Ｍ個のベクトル・レジスタ・ファイルのそれぞれがＮ個のレジスタからなるアレイを含み、前記Ｍ個のベクトル・レジスタ・ファイルのＮ＊Ｍ個のレジスタのそれぞれが前記Ｌ個のデータ・エレメントのうちの１つのデータ・エレメントを保管し、各ベクトル・レジスタ・ファイルが、前記ベクトル・レジスタ・ファイルの前記Ｎ個のレジスタのうちの１つを指し示すように適合されたその関連アドレス・レジスタにより独立してアドレス可能である、請求項２５に記載の方法。
【請求項２８】
操作を実行する前記ステップが、前記複数アレイのセットのうちの前記第１のアレイの少なくとも１つのデータ・エレメントを前記複数アレイのセットのうちの第２のアレイにコピーすることを含み、前記コピーが前記第１のアレイの正確なコピーを前記第２のアレイに挿入しない、請求項２５に記載の方法。
【請求項２９】
操作を実行する前記ステップが、前記第１のアレイ内で前記第１のアレイの前記データ・エレメントを再配置することを含む、請求項２５に記載の方法。
【請求項３０】
前記プロセッサが前記Ｌ個のデータ・エレメントを二重に保管しない、請求項２５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ内の複数のベクトル・レジスタ・ファイル（vector register file）に保管された行列（matrix）の行（row）とサブカラム（subcolumn）の両方を論理的にアドレッシングすることに関する。
【背景技術】
【０００２】
単一命令多重データ（SingleInstruction Multiple Data：ＳＩＭＤ）ベクトル処理環境は、ベクトルおよび行列数学に関連する操作に使用することができる。このような数学処理は、グラフィックスおよびディジタル・ビデオなどの様々なマルチメディア・アプリケーションに関連する可能性がある。ＳＩＭＤベクトル処理に関連する現在の問題は、ベクトル・データをフレキシブルに処理する必要性から発生している。ベクトル・データは、標準のＳＩＭＤ計算で操作するときに、現在、複数エレメントからなる単一（水平）ベクトルとして処理されている。したがって、行列の行は、従来通り、水平にアクセスすることができる。しかし、エンティティとして行列の列（column）にアクセスすることが必要になる場合が多く、これは、現在の技術で達成するには問題のあることである。たとえば、その行列の列にアクセスするためにその行列の転置行列（transpose）を生成することは一般的であり、これは、多数の移動／コピー命令を必要とするという問題を有し、必要なレジスタの数も増加する（すなわち、少なくとも２倍にする）。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
したがって、ＳＩＭＤベクトル処理で使用される行列の行および列をアドレッシングするための効率の良いプロセッサおよび方法が必要である。
【課題を解決するための手段】
【０００４】
本発明は、Ｍ個の独立ベクトル・レジスタ・ファイルを有するプロセッサであって、前記Ｍ個のベクトル・レジスタ・ファイルがＬ個のデータ・エレメント（data element）からなる行列をひとまとめにして保管するように適合され、各データ・エレメントがＢ個のバイナリ・ビット（binary bit）を有し、前記行列がＮ個の行とＭ個の列とを有し、前記Ｌ＝Ｎ＊Ｍであり、各列がＫ個のサブカラムを有し、前記Ｎ＞２であり、前記Ｍ＞２であり、前記Ｋ＞１であり、前記Ｂ＞１であり、前記Ｎ個の行の各行がアドレス可能であり、前記Ｋ個のサブカラムの各サブカラムがアドレス可能であり、前記プロセッサが前記Ｌ個のデータ・エレメントを二重に保管しないように適合されるプロセッサを提供するものである。
【０００５】
本発明は、
プロセッサを用意するステップと、
前記プロセッサ内にＭ個の独立ベクトル・レジスタ・ファイルを用意するステップであって、前記Ｍ個のベクトル・レジスタ・ファイルがＬ個のデータ・エレメントからなる行列をひとまとめにして保管し、各データ・エレメントがＢ個のバイナリ・ビットを有し、前記行列がＮ個の行とＭ個の列とを有し、前記Ｌ＝Ｎ＊Ｍであり、各列がＫ個のサブカラムを有し、前記Ｎ＞２であり、前記Ｍ＞２であり、前記Ｋ＞１であり、前記Ｂ＞１であり、前記Ｎ個の行の各行がアドレス可能であり、前記Ｋ個のサブカラムの各サブカラムがアドレス可能であり、前記プロセッサが前記Ｌ個のデータ・エレメントを二重に保管しないステップと、
を有する、行列データ（matrix data）を処理するための方法を提供するものである。
【０００６】
本発明は、Ｍ個の独立ベクトル・レジスタ・ファイルを有するプロセッサであって、前記Ｍ個のベクトル・レジスタ・ファイルがＬ個のデータ・エレメントからなる行列をひとまとめにして保管するように適合され、各データ・エレメントがＢ個のバイナリ・ビットを有し、前記行列がＮ個の行とＭ個の列とを有し、前記Ｌ＝Ｎ＊Ｍであり、各列がＫ個のサブカラムを有し、前記Ｎ＞２であり、前記Ｍ＞２であり、前記Ｋ＞１であり、前記Ｂ＞１であり、前記Ｎ個の行の各行がアドレス可能であり、前記Ｋ個のサブカラムの各サブカラムがアドレス可能であり、前記行列が、各アレイが前記行列の１つの行またはサブカラムになるような複数アレイのセットを含み、前記プロセッサが、前記複数アレイのセットのうちの第１のアレイについて操作を実行する命令を実行するように適合され、前記操作が、前記第１のアレイの前記データ・エレメントに関する選択性によって実行されるプロセッサを提供するものである。
【０００７】
本発明は、
プロセッサを用意するステップと、
前記プロセッサ内にＭ個の独立ベクトル・レジスタ・ファイルを用意するステップであって、前記Ｍ個のベクトル・レジスタ・ファイルがＬ個のデータ・エレメントからなる行列をひとまとめにして保管し、各データ・エレメントがＢ個のバイナリ・ビットを有し、前記行列がＮ個の行とＭ個の列とを有し、前記Ｌ＝Ｎ＊Ｍであり、各列がＫ個のサブカラムを有し、前記Ｎ＞２であり、前記Ｍ＞２であり、前記Ｋ＞１であり、前記Ｂ＞１であり、前記Ｎ個の行の各行がアドレス可能であり、前記Ｋ個のサブカラムの各サブカラムがアドレス可能であり、前記行列が、各アレイが前記行列の１つの行またはサブカラムになるような複数アレイのセットを含むステップと、
前記プロセッサによって命令を実行するステップであって、前記命令が前記複数アレイのセットのうちの第１のアレイについて操作を実行し、前記操作が、前記第１のアレイの前記データ・エレメントに関する選択性によって実行されるステップと、
を有する、行列データを処理するための方法を提供するものである。
【０００８】
本発明は、ＳＩＭＤベクトル処理で使用される行列の行および列をアドレッシングするための効率の良いプロセッサおよび方法を有利に提供するものである。
【発明を実施するための最良の形態】
【０００９】
図１は、本発明の諸実施形態により、複数データ・エレメントからなる行列１０のレイアウトを示している。行列１０は、１２８個の行（行０、１、・・・、１２７として示す）と４個の列（列０、１、２、３として示す）とを有する。行０、１、・・・、１２７はそれぞれレジスタＲ０、Ｒ１、・・・、Ｒ１２７（すなわち、レジスタＲｎ、ｎ＝０、１、・・・、１２７）としてアドレッシングされる。列はそれぞれ以下のようにサブカラムに分割される。
列０はサブカラム１２８、１３２、・・・、２５２に分割され、
列１はサブカラム１２９、１３３、・・・、２５３に分割され、
列２はサブカラム１３０、１３４、・・・、２５４に分割され、
列３はサブカラム１３１、１３５、・・・、２５５に分割される。
サブカラム１２８、１２９、・・・、２５５はそれぞれレジスタＲ１２８、Ｒ１２９、・・・、Ｒ２５５（すなわち、レジスタＲｎ、ｎ＝１２８、１２９、・・・、２５５）としてアドレッシングされる。
【００１０】
図１は、行列１０のデータ・エレメントも示している。各データ・エレメントはＢ個のバイナリ・ビット（たとえば、Ｂ＝３２）を含む。行列１０のデータ・エレメントはＲｎ［ｍ］という形式を有し、ｎは行インデックス（row index）（ｎ＝０、１、・・・、１２７）であり、ｍは列インデックス（column index）（ｍ＝０、１、２、３）である。たとえば、Ｒ５［２］は行列１０の行５、列２のデータ・エレメントを示している。図１に示す通り、
レジスタＲ０は行０（すなわち、データ・エレメントＲ０［０］、Ｒ０［１］、Ｒ０［２］、Ｒ０［３］）を含み、
レジスタＲ１は行１（すなわち、データ・エレメントＲ１［０］、Ｒ１［１］、Ｒ１［２］、Ｒ１［３］）を含み、
：
レジスタＲ１２７は行１２７（すなわち、データ・エレメントＲ１２７［０］、Ｒ１２７［１］、Ｒ１２７［２］、Ｒ１２７［３］）を含み、
レジスタＲ１２８はサブカラム０（すなわち、データ・エレメントＲ０［０］、Ｒ１［０］、Ｒ２［０］、Ｒ３［０］）を含み、
レジスタＲ１２９はサブカラム１（すなわち、データ・エレメントＲ０［１］、Ｒ１［１］、Ｒ２［１］、Ｒ３［１］）を含み、
：
レジスタＲ２５５はサブカラム１２８（すなわち、データ・エレメントＲ０［１２８］、Ｒ１［１２８］、Ｒ２［１２８］、Ｒ３［１２８］）を含む。
【００１１】
図１の行列１０のデータを移動し再編成するための命令はプロセッサによって処理され、そのプロセッサは、ベクトル・レジスタ・ファイルと、ベクトル・レジスタ・ファイルにアクセスするためのアドレス・レジスタと、マルチプレクサとを含む。したがって、図２は、本発明の諸実施形態により、ベクトル・レジスタ・ファイル（Ｖ０、Ｖ１、Ｖ２、Ｖ３）と、アドレス・レジスタ（Ａ０、Ａ１、Ａ２、Ａ３）と、４：１マルチプレクサ（ｍ０、ｍ１、ｍ２、ｍ３）とを有するプロセッサ１５を示している。図２のベクトル・レジスタ・ファイルは、ベクトル・レジスタ・ファイルから図１の行列１０の行またはサブカラムを読み取るためにアドレス・レジスタおよびマルチプレクサに併せて使用される。それぞれのベクトル・レジスタ・ファイルは１２８個のレジスタを含む。前記ベクトル・レジスタ・ファイルの数（４）は図１の行列１０の列の数（４）に等しい。ベクトル・レジスタ・ファイルＶｊ（ｊ＝０、１、２、３）は、ｉ＝０、１、・・・、１２７の場合にレジスタＹｉ［ｊ］（すなわち、Ｙ０［ｊ］、Ｙ１［ｊ］、・・・、Ｙ１２７［ｊ］）を含む。たとえば、ベクトル・レジスタ・ファイルＶ３（すなわち、ｊ＝３）はレジスタＹ０［３］、Ｙ１［３］、・・・、Ｙ１２７［３］を含む。それぞれのベクトル・レジスタ・ファイルＶ０、Ｖ１、Ｖ２、Ｖ３（およびその中の１２８個のレジスタ）はそれぞれアドレス・レジスタＡ０、Ａ１、Ａ２、Ａ３を介して独立してアドレス可能である。一般に、Ａｊがｉ（ｉ＝０、１、・・・、１２７）を含む場合、アドレス・レジスタＡｊ（ｊ＝０、１、２、３）はベクトル・レジスタ・ファイルＶｊのレジスタＹｉ［ｊ］をアドレッシングする。たとえば、アドレス・レジスタＡ２が整数４を含む場合、アドレス・レジスタＡ２はベクトル・レジスタ・ファイルＶ２のレジスタＹ４［２］をアドレッシングする。
【００１２】
図１の行列１０のデータ・エレメントＲｎ［ｍ］は、図２に示す通り、ベクトル・レジスタ・ファイルＶ０、Ｖ１、Ｖ２、Ｖ３内に保管され分散される。図２におけるベクトル・レジスタ・ファイルＶ０、Ｖ１、Ｖ２、Ｖ３のレジスタ内のデータ・アレイ・エレメントＲｎ［ｍ］の分散は、図３に併せて以下に説明する通り、ベクトル読取り操作（vector-read operation）のために図１の列１０の行とサブカラムの両方のアドレッシングを容易にする。図２により、図１の行列１０は以下の２つの規則によりベクトル・レジスタ・ファイルＶ０、Ｖ１、Ｖ２、Ｖ３に保管されることは留意されることである。
【００１３】
第１の規則は、行列１０の行をベクトル・レジスタ・ファイルに保管することに関するものである。第１の規則は以下の通りである。すなわち、データ・エレメントＲｎ［ｍ］がレジスタＹｎ［ｊ］に保管される場合、データ・エレメントＲｎ［ｍ１］はレジスタＹｎ［ｊ１］に保管され、ｊ１＝（ｊ＋１）ｍｏｄ４（すなわち、ｊ＝０、１、２、３がそれぞれｊ１＝１、２、３、０にマッピングされる）であり、ｍ１＝（ｍ＋１）ｍｏｄ４（すなわち、ｍ＝０、１、２、３がそれぞれｍ１＝１、２、３、０にマッピングされる）である。演算子「ｍｏｄ」は以下のように定義されるモジュラス演算子（modulus operator）である。Ｉ１およびＩ２が正整数である場合、Ｉ１ｍｏｄＩ２は、Ｉ１をＩ２で割ったときの剰余である。第１の規則の一例として、レジスタＲ０に関連する行のデータ・エレメントＲ０［０］、Ｒ０［１］、Ｒ０［２］、Ｒ０［３］はそれぞれレジスタＹ０［０］、Ｙ０［１］、Ｙ０［２］、Ｙ０［３］に保管され、レジスタＲ１に関連する行のデータ・エレメントＲ１［０］、Ｒ１［１］、Ｒ１［２］、Ｒ１［３］はそれぞれレジスタＹ１［１］、Ｙ１［２］、Ｙ１［３］、Ｙ１［０］に保管される。第１の規則の結果として、行ｎのそれぞれのデータ・エレメントＲｎ［０］、Ｒｎ［１］、Ｒｎ［２］、Ｒｎ［３］は異なるベクトル・レジスタ・ファイルに保管されるが、それぞれのベクトル・レジスタ・ファイル内の同じ相対レジスタ位置（relative register location）（すなわち、レジスタＹｉ［ｊ］の場合にｉ＝ｎ）に保管される。したがって、レジスタＲｎに関連する行のデータ・エレメントＲｎ［０］、Ｒｎ［１］、Ｒｎ［２］、Ｒｎ［３］は、図２のレジスタＹｎ［０］、Ｙｎ［１］、Ｙｎ［２］、Ｙｎ［３］にその順序変更されたシーケンス（permuted sequence）として保管される。
【００１４】
第２の規則は、行列１０のサブカラムをベクトル・レジスタ・ファイルに保管することに関するものであり、すなわち、データ・エレメントＲｎ［ｍ］がレジスタＹｎ［ｊ］に保管される場合、データ・エレメントＲ（ｎ＋１）［ｍ］はレジスタＹ（ｎ＋１）［ｊ１］に保管され、ｊ１＝（ｊ＋１）ｍｏｄ４である。第２の規則の一例として、レジスタＲ１２９によって指し示されるサブカラムのデータ・エレメントＲ０［１］、Ｒ１［１］、Ｒ２［１］、Ｒ３［１］はそれぞれレジスタＹ０［１］、Ｙ１［２］、Ｙ２［３］、Ｙ３［０］に保管される。前記第２の規則の結果として、行ｎのそれぞれのデータ・エレメントＲｎ［０］、Ｒｎ［１］、Ｒｎ［２］、Ｒｎ［３］は異なるベクトル・レジスタ・ファイルに保管され、それぞれのベクトル・レジスタ・ファイル内の異なる相対ベクトル・レジスタ位置（レジスタＹｉ［ｊ］の場合にインデックスｉによって特徴付けられる）に保管される。したがって、各サブカラムのデータ・エレメントは、ベクトル・レジスタ・ファイルＶ０、Ｖ１、Ｖ２、Ｖ３のレジスタに破断対角線状に保管される。
【００１５】
図２のマルチプレクサｍ０、ｍ１、ｍ２、ｍ３は、ベクトル・レジスタ・ファイルＶ０、Ｖ１、Ｖ２、Ｖ３とマルチプレクサｍ０、ｍ１、ｍ２、ｍ３との論理相互接続１７に併せてベクトル・レジスタ・ファイルＶ０、Ｖ１、Ｖ２、Ｖ３から読み取られたデータ・エレメントを順次、順序付ける。論理相互接続１７は、次に述べる通り、図３に示す読取り論理テーブル（read-logic table）２０に記述されている。
【００１６】
図３は、本発明の諸実施形態により、図２のマルチプレクサｍ０、ｍ１、ｍ２、ｍ３を使用しながら、ベクトル・レジスタ・ファイルＶ０、Ｖ１、Ｖ２、Ｖ３から図１の行列１０の行およびサブカラムを読み取るための読取り論理テーブル２０を示している。図３の読取り論理テーブル２０の列２１は図１のレジスタＲ０、Ｒ１、・・・、Ｒ２５５をリストしている。読取り論理テーブル２０の列２２〜２５はアドレス・レジスタＡ０、Ａ１、Ａ２、Ａ３の値をリストしている。読取り論理テーブル２０の列２６〜２９はマルチプレクサｍ０、ｍ１、ｍ２、ｍ３の値をリストしている。前記マルチプレクサ（ｍ０、ｍ１、ｍ２、ｍ３）のそれぞれは２つのバイナリ・スイッチ（binary switch）のセットであり、各スイッチは「オン」または「オフ」であり、それぞれバイナリ・ビット１または０によって表される。したがって、マルチプレクサの「値」は、それぞれ２つのスイッチのオン／オフ状況を表す２つのバイナリ・ビットの複合値（composite value）（０、１、２、または３）になる。
【００１７】
読み取るべき行列１０の各行は、０＜ｎ＜１２７という範囲内のレジスタＲｎを選択するインデックスｎによって識別される。読み取るべき行列１０の各サブカラムは、１２８＜ｎ＜２５５という範囲内のレジスタＲｎを選択するインデックスｎによって識別される。読み取るべき各行またはサブカラムのデータ・エレメントはベクトル・レジスタ・ファイルＶ０、Ｖ１、Ｖ２、Ｖ３のレジスタＹｉ［ｊ］からアクセスされ、前記レジスタはそれぞれアドレス・レジスタＡ０、Ａ１、Ａ２、Ａ３によって指し示される。アドレス・レジスタＡ０、Ａ１、Ａ２、Ａ３によって指し示されるレジスタからこのようにアクセスされたデータ・エレメントは、以下のようにマルチプレクサｍ０、ｍ１、ｍ２、ｍ３の値に応じて順次、順序付けられる。マルチプレクサ値は、ベクトル・レジスタ・ファイル（Ｖ０、Ｖ１、Ｖ２、またはＶ３）を選択するインデックスｊである。次に、選択されたベクトル・レジスタ・ファイルに関連するアドレス・レジスタの内容はデータ・エレメントを選択する。Ｙｉ［ｊ］はベクトル・レジスタ・ファイルＶｊのレジスタｉを示すことを想起されたい。読み取るべき行またはサブカラムがレジスタＲｎによって識別される場合、データ・エレメントは、Ｙ（ａ０）［ｍ０］、Ｙ（ａ１）［ｍ１］、Ｙ（ａ２）［ｍ２］、Ｙ（ａ３）［ｍ３］という順序でレジスタＹｉ［ｊ］からアクセスされ、ａ０、ａ１、ａ２、ａ３はそれぞれＡ（ｍ０）、Ａ（ｍ１）、Ａ（ｍ２）、Ａ（ｍ３）の内容を示す。たとえば、Ａ０＝２、Ａ１＝３、Ａ２＝０、Ａ３＝１およびｍ０＝３、ｍ１＝２、ｍ２＝１、ｍ３＝０である場合、
ａ０＝１（すなわち、Ａ（ｍ０）またはＡ３の内容）であり、
ａ１＝０（すなわち、Ａ（ｍ１）またはＡ２の内容）であり、
ａ２＝３（すなわち、Ａ（ｍ２）またはＡ１の内容）であり、
ａ３＝２（すなわち、Ａ（ｍ３）またはＡ０の内容）である。
【００１８】
行の読取りの一例として、読み取るべき行がレジスタＲ２に関連付けられていると想定する（図１を参照）。次に、図３のＲ２行から、Ａ０＝２、Ａ１＝２、Ａ２＝２、Ａ３＝２およびｍ０＝２、ｍ１＝３、ｍ２＝０、ｍ３＝１とする。データ・エレメントは、それぞれｍ０、ｍ１、ｍ２、ｍ３の値によって示す通り、Ｙ（ａ０）［２］、Ｙ（ａ１）［３］、Ｙ（ａ２）［０］、Ｙ（ａ３）［１］という順序でレジスタＲｉ［ｊ］からアクセスされる。Ａ０、Ａ１、Ａ２、Ａ３およびｍ０、ｍ１、ｍ２、ｍ３の値を使用すると、ａ０＝２、ａ１＝２、ａ２＝２、ａ３＝２ということになる。したがって、データ・エレメントは、Ｙ２［２］、Ｙ２［３］、Ｙ２［０］、Ｙ２［１］という順序でレジスタＲｉ［ｊ］からアクセスされる。したがって、Ｙｉ［ｊ］の内容について図２を参照すると、データ・エレメントはＲ２［０］、Ｒ２［１］、Ｒ２［２］、Ｒ２［３］という順序でアクセスされ、これは、図１から検証可能な通り、レジスタＲ２に関連する行のデータ・エレメントの正しい順序付けである。
【００１９】
サブカラムの読取りの一例として、読み取るべきサブカラムがレジスタＲ１２９に関連付けられていると想定する（図１を参照）。次に、図３のＲ１２９行から、Ａ０＝３、Ａ１＝０、Ａ２＝１、Ａ３＝２およびｍ０＝１、ｍ１＝２、ｍ２＝３、ｍ３＝０とする。したがって、データ・エレメントは、それぞれｍ０、ｍ１、ｍ２、ｍ３の値によって示す通り、Ｙ（ａ０）［１］、Ｙ（ａ１）［２］、Ｙ（ａ２）［３］、Ｙ（ａ３）［０］という順序でレジスタＹ［ｊ］からアクセスされる。Ａ０、Ａ１、Ａ２、Ａ３およびｍ０、ｍ１、ｍ２、ｍ３の値を使用すると、ａ０＝０、ａ１＝１、ａ２＝２、ａ３＝３ということになる。したがって、データ・エレメントは、Ｙ０［１］、Ｙ１［２］、Ｙ２［３］、Ｙ３［０］という順序でレジスタＲｉ［ｊ］からアクセスされる。したがって、Ｙｉ［ｊ］の内容について図２を参照すると、データ・エレメントはＲ０［１］、Ｒ１［１］、Ｒ２［１］、Ｒ３［１］という順序でアクセスされ、これは、図１から検証可能な通り、レジスタＲ１２９に関連するサブカラムのデータ・エレメントの正しい順序付けである。
【００２０】
上記の例は、マルチプレクサｍ０、ｍ１、ｍ２、ｍ３が、図１の行列１０の行またはサブカラムを正しく読み取るようにアクセスしたデータ・エレメントを順次、順序付けるために、ベクトル・レジスタ・ファイルのレジスタにデータ・エレメントを保管することに関して以下の一般規則が遵守されることを示している。各サブカラムのデータ・エレメントは異なるベクトル・レジスタ・ファイルに保管されるが、これは、各サブカラムごとに、その中のいずれの２つのデータ・エレメントも同じベクトル・レジスタ・ファイルに保管されないことを意味する。同様に、各行のデータ・エレメントは異なるベクトル・レジスタ・ファイルに保管されるが、これは、各行ごとに、その中のいずれの２つのデータ・エレメントも同じベクトル・レジスタ・ファイルに保管されないことを意味する。図２はベクトル・レジスタ・ファイルＶ０、Ｖ１、Ｖ２、Ｖ３のレジスタＹｉ［ｊ］内のデータ・アレイ・エレメントＲｎ［ｍ］の特定の分散を示しているが、上記の一般規則が遵守されるようなデータ・アレイ・エレメントＲｎ［ｍ］の他の分散も本発明の範囲内である。行またはサブカラムの読取りに関する読取り論理テーブル（たとえば、図３を参照）は、レジスタＹｉ［ｊ］内のデータ・アレイ・エレメントＲｎ［ｍ］の特定の分散に固有のものである。
【００２１】
したがって、マルチプレクサｍ０、ｍ１、ｍ２、ｍ３は、図３の読取り論理テーブル２０によって例示された通り、行読取り（read-row）（または列読取り（read-column））マッピング・アルゴリズムにより行列の１つの行（またはサブカラム）のデータ・エレメントをベクトル・レジスタ・ファイルＶ０、Ｖ１、Ｖ２、Ｖ３からその行（またはサブカラム）にマッピングすることにより、行列の行（またはサブカラム）を読み取るためのコマンドに応答するように適合される。その中に数値を有する読取り論理テーブル２０を使用する代わりに、別法として、ブール論理ステートメントの使用により、行読取り（または列読取り）マッピング・アルゴリズムを実現できるであろう。
【００２２】
上記の図２は、図３の読取り論理テーブル２０によりレジスタＹｉ［ｊ］から図１の行列１０の行またはサブカラムを読み取ることに関するものである。次に記載する通り、図４は、図５の書込み論理テーブル（write-logic table）４０によりレジスタＹｉ［ｊ］に図１の行列１０の行またはサブカラムを書き込むことに関するものである。
【００２３】
図４は、本発明の諸実施形態により、ベクトル・レジスタ・ファイル（Ｖ０、Ｖ１、Ｖ２、Ｖ３）と、アドレス・レジスタ（Ａ０、Ａ１、Ａ２、Ａ３）と、４：１マルチプレクサ（ｍ０、ｍ１、ｍ２、ｍ３）とを有するプロセッサ１５を示している。図４のベクトル・レジスタ・ファイルは、ベクトル・レジスタ・ファイルＶ０、Ｖ１、Ｖ２、Ｖ３に図１の行列１０の行またはサブカラムを書き込むためにアドレス・レジスタおよびマルチプレクサに併せて使用される。ベクトル・レジスタ・ファイル（Ｖ０、Ｖ１、Ｖ２、Ｖ３）と、アドレス・レジスタ（Ａ０、Ａ１、Ａ２、Ａ３）と、ベクトル・レジスタ・ファイルのレジスタＹｉ［ｊ］内の図１の行列１０のデータ・エレメントＲｎ［ｍ］の分散は、上記の図２と同じものである。図４におけるベクトル・レジスタ・ファイルＶ０、Ｖ１、Ｖ２、Ｖ３のレジスタ内のデータ・アレイ・エレメントＲｎ［ｍ］の分散は、図５に併せて以下に説明する通り、ベクトル書込み操作（vector-write operation）のために図１の行列１０の行とサブカラムの両方のアドレッシングを容易にする。
【００２４】
図４のマルチプレクサｍ０、ｍ１、ｍ２、ｍ３は、ベクトル・レジスタ・ファイルＶ０、Ｖ１、Ｖ２、Ｖ３とマルチプレクサｍ０、ｍ１、ｍ２、ｍ３との論理相互接続１８に併せてベクトル・レジスタ・ファイルＶ０、Ｖ１、Ｖ２、Ｖ３に書き込むべきデータ・エレメントを順次、順序付ける。論理相互接続１８は、次に述べる通り、図５に示す書込み論理テーブル４０に記述されている。
【００２５】
図５は、本発明の諸実施形態により、図２のマルチプレクサｍ０、ｍ１、ｍ２、ｍ３を使用しながら、ベクトル・レジスタ・ファイルＶ０、Ｖ１、Ｖ２、Ｖ３に図１の行列１０の行およびサブカラムを書き込むための書込み論理テーブル４０を示している。図５の書込み論理テーブル４０の列４１は図１のレジスタＲ０、Ｒ１、・・・、Ｒ２５５をリストしている。書込み論理テーブル４０の列４２〜４５はアドレス・レジスタＡ０、Ａ１、Ａ２、Ａ３の値をリストしている。書込み論理テーブル４０の列４６〜４９はマルチプレクサｍ０、ｍ１、ｍ２、ｍ３の値をリストしている。書き込むべき行列１０の各行は、０＜ｎ＜１２７という範囲内のレジスタＲｎを選択するインデックスｎによって識別される。書き込むべき行列１０の各サブカラムは、１２８＜ｎ＜２５５という範囲内のレジスタＲｎを選択するインデックスｎによって識別される。
【００２６】
レジスタＲｎ（ｎ＝０、１、・・・、２５５）によって選択された通り、書き込むべき各行またはサブカラムのデータ・エレメントは、以下の規則により、ベクトル・レジスタ・ファイルＶ０、Ｖ１、Ｖ２、Ｖ３のレジスタＹｉ［ｊ］に分散される。Ｙｉ［ｊ］はベクトル・レジスタ・ファイルＶｊのレジスタｉを示すことを想起されたい。レジスタＲｎ（図１で識別された通り）に関連する順次順序付けされたデータ・エレメントは、Ｒｎ［０］、Ｒｎ［１］、Ｒｎ［２］、Ｒｎ［３］として示されるものとする。この規則は、データ・エレメントＲｎ［０］、Ｒｎ［１］、Ｒｎ［２］、Ｒｎ［３］がそれぞれベクトル・レジスタ・ファイルＶ（ｊ０）、Ｖ（ｊ１）、Ｖ（ｊ２）、Ｖ（ｊ３）に書き込まれ、マルチプレクサｍ（ｊ０）、ｍ（ｊ１）、ｍ（ｊ２）、ｍ（ｊ３）がそれぞれ０、１、２、３を含むというものである。一例として、ｍ０＝１、ｍ１＝２、ｍ２＝３、ｍ３＝０である場合、Ｒｎ［０］、Ｒｎ［１］、Ｒｎ［２］、Ｒｎ［３］はそれぞれベクトル・レジスタ・ファイルＶ３、Ｖ０、Ｖ１、Ｖ２に書き込まれ、ｍ３＝０、ｍ０＝１、ｍ１＝２、ｍ２＝３を反映する。アドレス・レジスタＡ０、Ａ１、Ａ２、Ａ３はそれぞれ、そこにデータ・エレメントが書き込まれるベクトル・レジスタ・ファイルＶ０、Ｖ１、Ｖ２、Ｖ３内のレジスタ番号を含む。したがって、上記の例では、アドレス・レジスタＡ３が値３４を含む場合、データ・エレメントＲｎ［０］はベクトル・レジスタ・ファイルＶ３のレジスタ３４に書き込まれる。
【００２７】
行の書込みの一例として、書き込むべき行がレジスタＲ２に関連付けられていると想定する（図１を参照）。図１のＲ２行から、Ｒ２に関連するデータ・エレメントのシーケンスはＲ２［０］、Ｒ２［１］、Ｒ２［２］、Ｒ２［３］である。図４のＲ２行から、Ａ０＝２、Ａ１＝２、Ａ２＝２、Ａ３＝２およびｍ０＝２、ｍ１＝３、ｍ２＝０、ｍ３＝１とする。したがって、上記の規則により、レジスタＲ２に関連するデータ・エレメントのシーケンスＲ２［０］、Ｒ２［１］、Ｒ２［２］、Ｒ２［３］は、ｍ２＝０、ｍ３＝１、ｍ０＝２、ｍ１＝３を反映するものとして、ベクトル・レジスタ・ファイルＶ２、Ｖ３、Ｖ０、Ｖ１に分散される。したがって、Ａ２＝２は図４と一致しているので、データ・エレメントＲ２［０］はレジスタ位置２のベクトル・レジスタ・ファイルＶ２（すなわち、Ｙ２［２］）に書き込まれる。Ａ３＝２は図４と一致しているので、データ・エレメントＲ２［１］はレジスタ位置２のベクトル・レジスタ・ファイルＶ３（すなわち、Ｙ２［３］）に書き込まれる。Ａ０＝２は図４と一致しているので、データ・エレメントＲ２［２］はレジスタ位置２のベクトル・レジスタ・ファイルＶ０（すなわち、Ｙ２［０］）に書き込まれる。Ａ１＝２は図４と一致しているので、データ・エレメントＲ２［３］はレジスタ位置２のベクトル・レジスタ・ファイルＶ１（すなわち、Ｙ２［１］）に書き込まれる。
【００２８】
サブカラムの書込みの一例として、書き込むべきサブカラムがレジスタＲ１２９に関連付けられていると想定する（図１を参照）。図１のＲ１２９サブカラムから、Ｒ１２９に関連するデータ・エレメントのシーケンスはＲ０［１］、Ｒ１［１］、Ｒ２［１］、Ｒ３［１］である。図４のＲ１２９行から、Ａ０＝３、Ａ１＝０、Ａ２＝１、Ａ３＝２およびｍ０＝３、ｍ１＝０、ｍ２＝１、ｍ３＝２とする。したがって、上記の規則により、レジスタＲ１２９に関連するデータ・エレメントのシーケンスＲ０［１］、Ｒ１［１］、Ｒ２［１］、Ｒ３［１］は、ｍ１＝０、ｍ２＝１、ｍ３＝２、ｍ０＝３を反映するものとして、ベクトル・レジスタ・ファイルＶ１、Ｖ２、Ｖ３、Ｖ０に分散される。したがって、Ａ１＝０は図４と一致しているので、データ・エレメントＲ０［１］はレジスタ位置０のベクトル・レジスタ・ファイルＶ１（すなわち、Ｙ０［１］）に書き込まれる。Ａ２＝１は図４と一致しているので、データ・エレメントＲ１［１］はレジスタ位置１のベクトル・レジスタ・ファイルＶ２（すなわち、Ｙ１［２］）に書き込まれる。Ａ３＝２は図４と一致しているので、データ・エレメントＲ２［１］はレジスタ位置２のベクトル・レジスタ・ファイルＶ３（すなわち、Ｙ２［３］）に書き込まれる。Ａ０＝３は図４と一致しているので、データ・エレメントＲ３［１］はレジスタ位置３のベクトル・レジスタ・ファイルＶ０（すなわち、Ｙ３［０］）に書き込まれる。
【００２９】
したがって、マルチプレクサｍ０、ｍ１、ｍ２、ｍ３は、図５の書込み論理テーブル４０によって例示された通り、行書込み（write-row）（または列書込み（write-column））マッピング・アルゴリズムにより行列の１つの行（またはサブカラム）のデータ・エレメントをベクトル・レジスタ・ファイルＶ０、Ｖ１、Ｖ２、Ｖ３にマッピングすることにより、行列の行（またはサブカラム）を書き込むためのコマンドに応答するように適合される。その中に数値を有する書込み論理テーブル４０を使用する代わりに、別法として、ブール論理ステートメントの使用により、行書込み（または列書込み）マッピング・アルゴリズムを実現できるであろう。
【００３０】
図１〜５に記載された諸実施形態は、１２８個の行と４個の列を有し、各列が３２個のサブカラムに分割され、各サブカラムに４個のデータ・エレメントが入っている行列について記載しているが、本発明の範囲は一般にＮ個の行とＭ個の列を有する行列を含み、Ｌ＝Ｎ＊Ｍになるようにその行列が合計Ｌ個のデータ・エレメントを含むようになっている。Ｎ個の行の各行はアドレス可能であり、Ｋ個のサブカラムの各サブカラムはアドレス可能である。各データ・エレメントはＢ個のバイナリ・ビットを有する。このパラメータＮ、Ｍ、Ｋ、Ｂは、Ｎ＞２、Ｍ＞２、Ｋ＞１、Ｂ＞１という制約を受ける可能性がある。図１〜５に図示した例の場合、Ｎ＝１２８、Ｍ＝４５、Ｋ＝３２、Ｂ＝３２である。
【００３１】
図１〜５に図示した例は、Ｎ、Ｍ、Ｋを伴う以下の関係を例示している。すなわち、Ｋ＊Ｍ＝Ｎ、ＮｍｏｄＫ＝０、ＮｍｏｄＭ＝０、Ｐが少なくとも２という正整数になるようなＮ＝２P、Ｑが少なくとも２という正整数になるようなＭ＝２Qであり、各列の各サブカラムはＮ個の行のうちのＭ個の行を含み、各サブカラムのバイナリ・ビットの総数と各行のバイナリ・ビットの総数は一定数のバイナリ・ビット（図１〜５の場合は１２８ビット）に等しい。
【００３２】
Ｎ、Ｍ、Ｋを伴う上記の関係は単に例証となるものにすぎず、制限的なものではない。以下の代替の非制限的関係は本発明の範囲内に含まれるものである。第１の代替関係は、所与の列のサブカラムが同じ（すなわち、一定）数のデータ・エレメントを有していないことである。第２の代替関係は、各サブカラムのバイナリ・ビットの総数が各行のバイナリ・ビットの総数に等しくないことである。第３の代替関係は、少なくとも２個の列がＫという異なる数のサブカラムを有することである。第４の代替関係は、ＮｍｏｄＫ≠０であることである。第５の代替関係は、Ｐが少なくとも２という正整数になるようなＮ＝２Pを満足するＰの値がまったくないことである。第６の代替関係は、Ｑが少なくとも２という正整数になるようなＭ＝２Qを満足するＱの値がまったくないことである。
【００３３】
また、本発明の範囲は、各データ・エレメントのＢ個のバイナリ・ビットが、浮動小数点数、整数、ビット・ストリング、または文字ストリングを表すように構成される実施形態も含む。
【００３４】
追加として、本発明は、複数のベクトル・レジスタ・ファイルを有するプロセッサを含む。複数のベクトル・レジスタ・ファイルは、Ｌ個のデータ・エレメントからなる行列をひとまとめにして保管するように適合される。図１〜５に併せて上記で説明した通り、プロセッサ内のアドレス・レジスタおよびマルチプレクサと組み合わせてベクトル・レジスタ・ファイルを使用することにより、行列の行およびサブカラムがそれぞれ個別にアドレス可能であるので、Ｌ個のデータ・エレメントはプロセッサ内に二重に保管する必要がないことに留意されたい。
【００３５】
図１〜５に併せて上記で例示した本発明の諸実施形態では、各サブカラムのデータ・エレメントは異なるベクトル・レジスタ・ファイルに保管されるように適合され、各行のデータ・エレメントは異なるベクトル・レジスタ・ファイルに保管されるように適合される。加えて、各サブカラムのデータ・エレメントは異なるベクトル・レジスタ・ファイルの異なる相対レジスタ位置に保管されるように適合され、各行のデータ・エレメントは異なるベクトル・レジスタ・ファイルの同じ相対レジスタ位置に保管されるように適合される。
【００３６】
図１には、Ｎ個の行が水平に向けられ、Ｍ個の列が垂直に向けられた行列１０が示されているが、本発明の範囲は、Ｎ個の行が垂直に向けられ、Ｍ個の列が水平に向けられた諸実施形態も含む。
【００３７】
図６〜８は、本発明の諸実施形態により、図１の行列１０の行またはサブカラムのデータ・エレメントに関する選択性によって操作を実行するために図２または図４のマルチプレクサを使用する命令を示している。
【００３８】
図６は、レジスタＲＡに関連するアレイＲ（ＲＡ）のデータ・エレメントがレジスタＤＥＳＴに関連するアレイＲ（ＤＥＳＴ）内のデータ・エレメント位置にコピーされる命令を示している。ａａ、ｂｂ、ｃｃ、ｄｄという２ビット・ワードはそれぞれ、図２または図４のマルチプレクサｍ０、ｍ１、ｍ２、ｍ３の値に対応する。アレイＲ（ＲＡ）はその中にデータ・エレメントＲ（ＲＡ）［０］、Ｒ（ＲＡ）［１］、Ｒ（ＲＡ）［２］、Ｒ（ＲＡ）［３］を有するものとする。アレイＲ（ＤＥＳＴ）はその中にデータ・エレメントＲ（ＤＥＳＴ）［０］、Ｒ（ＤＥＳＴ）［１］、Ｒ（ＤＥＳＴ）［２］、Ｒ（ＤＥＳＴ）［３］を有するものとする。図６の操作は、Ｒ（ＲＡ）［ａａ］、Ｒ（ＲＡ）［ｂｂ］、Ｒ（ＲＡ）［ｃｃ］、Ｒ（ＲＡ）［ｄｄ］をそれぞれＲ（ＤＥＳＴ）［０］、Ｒ（ＤＥＳＴ）［１］、Ｒ（ＤＥＳＴ）［２］、Ｒ（ＤＥＳＴ）［３］にコピーするものである。したがって、マルチプレクサ値ｍ０、ｍ１、ｍ２、ｍ３は、アレイＲ（ＲＡ）のエレメントに関する選択性によって、アレイＲ（ＲＡ）からアレイＲ（ＤＥＳＴ）へのデータの移動を制御する。例証のため、以下の３つの例を考慮する。
【００３９】
図６が示す命令に関する第１の例では、ａａ＝０、ｂｂ＝１、ｃｃ＝２、ｄｄ＝３であると設定する。これは、Ｒ（ＲＡ）［０］、Ｒ（ＲＡ）［１］、Ｒ（ＲＡ）［２］、Ｒ（ＲＡ）［３］というエレメントがそれぞれＲ（ＤＥＳＴ）［０］、Ｒ（ＤＥＳＴ）［１］、Ｒ（ＤＥＳＴ）［２］、Ｒ（ＤＥＳＴ）［３］にコピーされる、従来のアレイコピー操作である。
【００４０】
図６が示す命令に関する第２の例では、ａａ＝０、ｂｂ＝０、ｃｃ＝０、ｄｄ＝０であると設定するが、その結果、Ｒ（ＤＥＳＴ）［０］、Ｒ（ＤＥＳＴ）［１］、Ｒ（ＤＥＳＴ）［２］、Ｒ（ＤＥＳＴ）［３］のそれぞれにＲ（ＲＡ）［０］がコピーされる。この機能は、「スプラット（splat）」操作と呼ばれる場合も多く、スカラーベクトル演算（scalar-vector operation）をサポートするものである。
【００４１】
図６が示す命令に関する第３の例では、ａａ＝３、ｂｂ＝２、ｃｃ＝１、ｄｄ＝０であると設定するが、その結果、Ｒ（ＲＡ）［３］、Ｒ（ＲＡ）［２］、Ｒ（ＲＡ）［１］、Ｒ（ＲＡ）［０］がそれぞれＲ（ＤＥＳＴ）［０］、Ｒ（ＤＥＳＴ）［１］、Ｒ（ＤＥＳＴ）［２］、Ｒ（ＤＥＳＴ）［３］にコピーされる。したがって、Ｒ（ＲＡ）は、Ｒ（ＲＡ）のデータ・エレメントの順序の逆転によりＲ（ＤＥＳＴ）にコピーされる。
【００４２】
上記の例は単に例証となるものにすぎない。ａａ、ｂｂ、ｃｃ、ｄｄの順列は２５６（すなわち、４4）通りあるので、図６の操作は２５６通りの操作変形を含む。加えて、ＲＤＥＳＴ≠ＲＡもＲＤＥＳＴ＝ＲＡもどちらも可能である。したがって、ＲＤＥＳＴ＝ＲＡの場合は、２５６通りの順列のいずれでも、Ｒ（ＲＡ）のデータ・エレメントの内部再配置を容易にする。これらの操作のいずれでも、マルチプレクサｍ０、ｍ１、ｍ２、ｍ３の使用が必要である。図１〜５に併せて上記で説明した通り、図１の行列１０の行およびサブカラムのアドレッシングを実現するために、マルチプレクサｍ０、ｍ１、ｍ２、ｍ３が存在しなければならないので、これらの操作のいずれも本質的に自由であることに留意されたい。
【００４３】
図７は、レジスタＲＡに関連するアレイＲ（ＲＡ）の選択されたエレメントのマスキングにより、アレイＲ（ＲＡ）のデータ・エレメントがレジスタＤＥＳＴに関連するアレイＲ（ＤＥＳＴ）内のデータ・エレメント位置にコピーされる命令を示している。すなわち、Ｒ（ＲＡ）のＱ個のエレメントはＲ（ＤＥＳＴ）に対してマスクされ（すなわち、コピーされず）、Ｒ（ＲＡ）の残りの４−Ｑ個のエレメントはＲ（ＤＥＳＴ）にコピーされ、０＜Ｑ＜４である。Ｂ０、Ｂ１、Ｂ２、Ｂ３はこの操作が必要とするマスク・ビットを示すものとする。ｍ＝０、１、２、３の場合にＢｍ＝１／０であれば、Ｒ（ＲＡ）［ｍ］はＲ（ＤＥＳＴ）［ｍ］にコピーされる／コピーされない。これは通常、読取り−変更−書込み（read-modify-write）シーケンスによって実施されるであろうが、この場合、個別ベクトル・レジスタ・ファイルＶ０、Ｖ１、Ｖ２、Ｖ３の使用により容易になる。
【００４４】
図８は、レジスタＲＡに関連するアレイＲ（ＲＡ）の単一データ・エレメントが（関数ｆにより）レジスタＲＢに関連するアレイＲ（ＲＢ）と機能的に組み合わされる命令を示している。この関数の結果はレジスタＤＥＳＴに関連するアレイＲ（ＤＥＳＴ）に保管され、Ｒ（ＲＡ）［ａａ］のエレメントは関数ｆを実行するために使用される。ａａという２ビット・ワードは、４個のマルチプレクサすべてがその単一データ・エレメントを選択するように読取りマルチプレクサｍ０、ｍ１、ｍ２、ｍ３（図２）を設定することにより、レジスタＲＡに関連するアレイＲ（ＲＡ）の単一データ・エレメントを選択する。たとえば、関数ｆが「加算」を示す場合、以下のＳＵＭベクトル（ＳＵＭ［０］、ＳＵＭ［１］、ＳＵＭ［２］、ＳＵＭ［３］というコンポーネントを有する）が形成され、Ｒ（ＤＥＳＴ）に保管されることになるであろう。
ＳＵＭ［０］＝Ｒ（ＲＡ）［ａａ］＋Ｒ（ＲＢ）［０］
ＳＵＭ［１］＝Ｒ（ＲＡ）［ａａ］＋Ｒ（ＲＢ）［１］
ＳＵＭ［２］＝Ｒ（ＲＡ）［ａａ］＋Ｒ（ＲＢ）［２］
ＳＵＭ［３］＝Ｒ（ＲＡ）［ａａ］＋Ｒ（ＲＢ）［３］
この場合も、読取りマルチプレクサｍ０、ｍ１、ｍ２、ｍ３がすでに存在するので、この操作は本質的に自由である。
【００４５】
図６〜８に図示した操作に加え、図１の行列１０のアレイ（すなわち、行またはサブカラム）のデータ・エレメントに関する選択性によって実行可能な他の多くの操作が存在する。前記選択性は、図２または図４のマルチプレクサｍ０、ｍ１、ｍ２、ｍ３によって制御される。
【００４６】
図９は、本発明の諸実施形態により、ベクトル処理で使用される行列の行およびサブカラムをアドレッシングし、行列の１つのアレイのデータ・エレメントに関する選択性によってそのアレイについて操作を実行する命令を実行するためのプロセッサ９１を有するコンピュータ・システム９０を示している。コンピュータ・システム９０は、プロセッサ９１と、プロセッサ９１に結合された入力装置９２と、プロセッサ９１に結合された出力装置９３と、それぞれプロセッサ９１に結合されたメモリ・デバイス９４および９５とを有する。プロセッサ９１は、図２および図４のプロセッサ１５を有することができる。入力装置９２は、とりわけ、キーボード、マウスなどにすることができる。出力装置９３は、とりわけ、プリンタ、プロッタ、コンピュータ画面、磁気テープ、取外し可能ハード・ディスク、フレキシブル・ディスクなどにすることができる。メモリ・デバイス９４および９５は、とりわけ、ハード・ディスク、フレキシブル・ディスク、磁気テープ、コンパクト・ディスク（ＣＤ）またはディジタル・ビデオ・ディスク（ＤＶＤ）などの光学記憶装置、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、読取り専用メモリ（ＲＯＭ）などにすることができる。メモリ・デバイス９５はコンピュータ・コード９７を含む。コンピュータ・コード９７は、ベクトル処理で行列の行およびサブカラムを使用し、行列の１つのアレイのデータ・エレメントに関する選択性によってそのアレイについて操作を実行する命令を実行するためのアルゴリズムを含む。プロセッサ９１はコンピュータ・コード９７を実行する。メモリ・デバイス９４は入力データ９６を含む。入力データ９６は、コンピュータ・コード９７が必要とする入力を含む。出力装置９３はコンピュータ・コード９７からの出力を表示する。メモリ・デバイス９４および９５の一方または両方（あるいは図９に示されていない１つまたは複数の追加メモリ・デバイス）は、そこに実施されたコンピュータ可読プログラム・コードを有するかまたはそこに保管された他のデータを有するかあるいはその両方を有するコンピュータ使用可能媒体（あるいはコンピュータ可読媒体またはプログラム記憶装置）として使用することができ、そのコンピュータ可読プログラム・コードはコンピュータ・コード９７を有する。一般に、コンピュータ・システム９０のコンピュータ・プログラム記録媒体（または、別法として、製品）は、前記コンピュータ使用可能媒体（または前記プログラム記憶装置）を有することができる。
【００４７】
図９は、ハードウェアとソフトウェアの特定の一構成としてコンピュータ・システム９０を示しているが、当業者には既知のものであると考えられるどのようなハードウェアとソフトウェアの構成も、図９の特定のコンピュータ・システム９０に併せて上記の目的のために使用することができる。たとえば、メモリ・デバイス９４および９５は、複数の個別メモリ・デバイスではなく、単一メモリ・デバイスの複数部分にすることができる。
【００４８】
本発明の諸実施形態は例証のために本明細書に記載されているが、多くの修正および変更は当業者にとって明白なものになるであろう。したがって、特許請求の範囲は、本発明の真の精神および範囲内に含まれるものとして、このような修正および変更をすべて包含するものである。
【図面の簡単な説明】
【００４９】
【図１】本発明の諸実施形態により、複数データ・エレメントからなる行列のレイアウトを示す図である。
【図２】本発明の諸実施形態により、図１の行列のデータ・エレメントを保管するための物理的レイアウトと、図１の行列にデータ・エレメントを読み取るためのマルチプレクサを示す図である。
【図３】本発明の諸実施形態により、図２の物理的レイアウトから図１の行列の行およびサブカラムにデータ・エレメントを読み取るための読取り論理テーブルを示す図である。
【図４】本発明の諸実施形態により、図１の行列のデータ・エレメントを保管するための図２の物理的レイアウトと、図１の行列のデータ・エレメントを物理的レイアウトに書き込むためのマルチプレクサを示す図である。
【図５】本発明の諸実施形態により、図１の行列の行およびサブカラムから図４の物理的レイアウトにデータ・エレメントを書き込むための書込み論理テーブルを示す図である。
【図６】本発明の諸実施形態により、図１の行列の行またはサブカラムのデータ・エレメントに関する選択性によって操作を実行するために図２または図４のマルチプレクサを使用する命令を示す図である。
【図７】本発明の諸実施形態により、図１の行列の行またはサブカラムのデータ・エレメントに関する選択性によって操作を実行するために図２または図４のマルチプレクサを使用する命令を示す図である。
【図８】本発明の諸実施形態により、図１の行列の行またはサブカラムのデータ・エレメントに関する選択性によって操作を実行するために図２または図４のマルチプレクサを使用する命令を示す図である。
【図９】本発明の諸実施形態により、ベクトル処理で使用される行列の行およびサブカラムをアドレッシングするためのプロセッサを有するコンピュータ・システムを示す図である。
【符号の説明】
【００５０】
９０  コンピュータ・システム
９１  プロセッサ
９２  入力装置
９３  出力装置
９４、９５  メモリ・デバイス
９６  入力データ
９７  コンピュータ・コード
【図１】
2005149492.tif 000003
【図２】
2005149492.tif 000004
【図３】
2005149492.tif 000005
【図４】
2005149492.tif 000006
【図５】
2005149492.tif 000007
【図６】
2005149492.tif 000008
【図７】
2005149492.tif 000009
【図８】
2005149492.tif 000010
【図９】
2005149492.tif 000011