(57)【要約】  データ処理システム（２）は、複数のベクトルオペランド要素を含むベクトルオペランドに対して行われるベクトル処理演算をサポートする。データ処理システムは、要素サイズが混在したベクトル算術命令をデコードして、第１のビットサイズＡの第１のソースオペランド要素ａｉの第１のベクトルと、第２のビットサイズＢの第２のソースオペランド要素ｂｊの第２のベクトルに対して算術演算を行うように処理回路１８を制御する制御信号１６を生成する命令デコーダ（１４）を有するプロセッサ（４）４を含む。第２のビットサイズＢは、第１のビットサイズＡより大きい。
2018521423.tif 000002
【特許請求の範囲】
【請求項１】
処理演算を行うための処理回路と、
プログラム命令をデコードして、前記処理演算を行うように前記処理回路を制御するための制御信号を生成するデコーダ回路とを備える、データを処理するための装置であって、
前記デコーダ回路が、要素サイズが混在した少なくとも１つのベクトル算術命令に応答して、第１のビットサイズの第１のソースオペランド要素の第１のベクトルと、前記第１のビットサイズより大きい第２のビットサイズの第２のソースオペランド要素の第２のベクトルに対して算術処理演算を行うように前記処理回路を制御するための制御信号を生成する、データを処理するための装置。
【請求項２】
前記第１のベクトルは、Ｎ個の第１のソースオペランド要素を有し、前記第２のベクトルは、Ｍ個の第２のソースオペランド要素を有し、ＮとＭは、正の整数値であり、ＮはＭより大きく、前記第２のソースオペランド要素のうちの少なくとも１つは、それぞれの他の入力オペラントとしての複数の異なる第１のソースオペランド要素と共に行われる前記算術処理演算に対する入力オペランドとして機能する、請求項１に記載の装置。
【請求項３】
Ｎは、Ｘ＊Ｍであり、この場合Ｘは、１より大きい整数であり、各々の前記第２のソースオペランド要素は、前記第１のソースオペランド要素のＸのそれぞれ別個のサブセットに対して行われる前記算術演算に対する入力オペランドとして機能する、請求項２に記載の装置。
【請求項４】
前記第２のビットサイズは、前記第１のビットサイズのＸ倍である、請求項３に記載の装置。
【請求項５】
第１のソースオペランド要素は、前記それぞれ別個のサブセットが、前記シーケンスの順序でＸ個の隣接する第１のソースオペランドを含むように、特定のシーケンス順序を有する、請求項３および４のいずれか一項に記載の装置。
【請求項６】
前記要素サイズが混在した少なくとも１つのベクトル算術命令は、デスティネーションオペランド要素のベクトルを有し、所与のデスティネーションオペランド要素内の所与の位置的有意性のビット値は、対応する第１のソースオペランド要素と、対応する第２のソースオペランド要素のうちの少なくとも一方の内の異なる位置的有意性の１つまたは複数のビット値に依存している、請求項１から５のいずれか一項に記載の装置。
【請求項７】
前記第１のソースオペランド要素は二進数の値であり、前記第２のソースオペランド要素は二進数の値であり、前記デスティネーションオペランド要素はデスティネーションオペランドの二進数の値である、請求項６に記載の装置。
【請求項８】
デスティネーションオペランド要素の前記ベクトルは、前記第１のビットサイズと等しいデスティネーションビットサイズを有する、請求項６および７のいずれか一項に記載の装置。
【請求項９】
前記要素サイズが混在した少なくとも１つのベクトル算術命令は、要素サイズが混在したベクトルシフト命令を含み、前記算術処理演算は、対応する第２のソースオペランド要素によって指定されたシフト量だけ前記第１のソースオペランド要素をシフトするシフト演算である、請求項１から８のいずれか一項に記載の装置。
【請求項１０】
前記要素サイズが混在した少なくとも１つのベクトル算術命令は、要素サイズが混在したベクトル除算命令を含み、前記算術処理演算は、対応する第２のソースオペランド要素によって指定された除数によって前記第１のソースオペランド要素を割る除算演算である、請求項１から９のいずれか一項に記載の装置。
【請求項１１】
前記要素サイズが混在した少なくとも１つのベクトル算術命令は、要素サイズが混在したベクトル比較命令を含み、前記算術処理演算は、前記第１のソースオペランド要素を対応する第２のソースオペランド要素と比較する比較演算である、請求項１から１０のいずれか一項に記載の装置。
【請求項１２】
前記要素サイズが混在したベクトル算術命令は、前記第１のベクトルと前記第２のベクトルのそれぞれの要素間の比較の結果を示すデスティネーションオペランド要素のベクトルを有する、請求項１１に記載の装置。
【請求項１３】
前記第１のビットサイズは、要素サイズが混在した少なくとも１つのベクトル算術命令の中の要素サイズフィールドに依存している、請求項１から１２のいずれか一項に記載の装置。
【請求項１４】
前記第１のビットサイズは、８ビット、１６ビットおよび３２ビットのうちの１つとして選択される、請求項１３に記載の装置。
【請求項１５】
前記第２のビットサイズは固定される、請求項１から１４のいずれか一項に記載の装置。
【請求項１６】
前記第２のビットサイズは６４ビットである、請求項１から１５のいずれか一項に記載の装置。
【請求項１７】
処理演算を行うための処理手段と、
プログラム命令をデコードして、前記処理演算を行うように前記処理回路を制御するための制御信号を生成するデコーダ手段とを備える、データを処理するための装置であって、
前記デコーダ手段が、要素サイズが混在した少なくとも１つのベクトル算術命令に応答して、第１のビットサイズの第１のソースオペランド要素の第１のベクトルと、前記第１のビットサイズより大きい第２のビットサイズの第２のソースオペランド要素の第２のベクトルに対して算術処理演算を行うように前記処理手段を制御するための制御信号を生成する、データを処理するための装置。
【請求項１８】
要素サイズが混在した少なくとも１つのベクトル算術命令をデコードして、第１のビットサイズの第１のソースオペランド要素の第１のベクトルと、前記第１のビットサイズより大きい第２のビットサイズの第２のソースオペランド要素の第２のベクトルに対して算術処理演算を行うように処理回路を制御するための制御信号を生成するステップを含む、データを処理する方法。
【請求項１９】
請求項１から１６のいずれか一項においてクレーム主張される装置に対応する仮想マシン実行環境を実現するようにコンピュータを制御するために非一時的記憶媒体に記憶されるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ処理システムの分野に関する。より詳細には、本開示は、ベクトル算術命令をサポートするデータ処理システムに関する。
【背景技術】
【０００２】
それぞれの入力オペランドとして機能する複数のベクトル要素によってベクトル算術命令をサポートするデータ処理システムを設けることは知られている。ベクトル算術命令は２つのそのようなベクトル入力オペランドを利用し、２つのベクトルオペランド内のそれぞれ対のベクトル要素に対する命令によって特定される算術演算を行うことができる。ベクトル処理は、並列計算を容易にする。
【発明の概要】
【課題を解決するための手段】
【０００３】
本開示の少なくとも一部の実施形態は、
処理演算を行うための処理回路と、プログラム命令をデコードして、前記処理演算を行うように前記処理回路を制御するための制御信号を生成するデコーダ回路とを備える、データを処理するための装置であって、
前記デコーダ回路が、要素サイズが混在した少なくとも１つのベクトル算術命令に応答して、第１のビットサイズの第１のソースオペランド要素の第１のベクトルと、前記第１のビットサイズより大きい第２のビットサイズの第２のソースオペランド要素の第２のベクトルに対して算術処理演算を行うように前記処理回路を制御するための制御信号を生成する装置を提供する。
【０００４】
本開示の少なくとも一部の実施形態は、
処理演算を行うための処理手段と、プログラム命令をデコードして、前記処理演算を行うように前記処理回路を制御するための制御信号を生成するデコーダ手段とを備えるデータを処理するための装置であって、
前記デコーダ手段が、要素サイズが混在した少なくとも１つのベクトル算術命令に応答して、第１のビットサイズの第１のソースオペランド要素の第１のベクトルと、前記第１のビットサイズより大きい第２のビットサイズの第２のソースオペランド要素の第２のベクトルに対して算術処理演算を行うように前記処理手段を制御するための制御信号を生成する装置を提供する。
【０００５】
本開示の少なくとも一部の実施形態は、
要素サイズが混在した少なくとも１つのベクトル算術命令をデコードして、第１のビットサイズの第１のソースオペランド要素の第１のベクトルと、前記第１のビットサイズより大きい第２のビットサイズの第２のソースオペランド要素の第２のベクトルに対して算術処理演算を行うように処理回路を制御するための制御信号を生成するステップを含む、データを処理する方法を提供する。
【０００６】
単なる一例として、添付の図面を参照して以下に実施形態を記載する。
【図面の簡単な説明】
【０００７】
【図１】ベクトル算術命令をサポートするデータ処理システムを概略的に例示する図である。
【図２】要素サイズが混在したベクトル算術命令の作用およびシンタクスを概略的に例示する図である。
【図３】いかにして算術命令のデスティネーションオペランドにおける所与のビットが異なるビット位置から取得された入力オペランドビットに依存するかを概略的に例示する図である。
【図４】要素サイズが混在したベクトル算術命令の利用を概略的に例示するフロー図である。
【図５】仮想マシンの実装を概略的に例示する図である。
【発明を実施するための形態】
【０００８】
図１は、メモリ６に結合されたプロセッサ４を備えるデータ処理システム２を概略的に例示している。メモリ６は、プロセッサ４によって実行されるべきデータ処理演算を特定する操作されたプログラム命令１０に対するデータ値８を記憶する。プログラム命令１０は、命令フェッチユニット１２によってフェッチされ、デコーダ回路１４に渡される。デコーダ回路１４は、デコードされた命令によって特定される処理演算を実行するようにプロセッサ４内の処理回路１８、２０、２２、２４を制御するように機能する制御信号１６を生成する。
【０００９】
プロセッサ４は、ベクトル演算とスカラー演算の両方をサポートする。ベクトルレジスタファイル２２内に格納されたベクトルオペランドに対して作用するベクトル処理回路１８は、ベクトル処理演算を行うように機能する。スカラーレジスタファイル２４内に格納されたスカラーオペランド値に対して作用するスカラー処理回路２０は、スカラー処理演算を行うように機能する。ベクトル処理演算は、多様な異なる形態を採ることができることを理解されたい。例えばＳＩＭＤ（単一命令多重データ）処理演算は、ベクトル処理演算の１つの形態である。より具体的には、ベクトル処理演算は、一緒に１つのベクトルオペランドを形成した複数のベクトル要素に対して行われる。
【００１０】
従来式の整数算術命令におけるソースオペランドと、デスティネーションオペランドのベクトル要素は合致する。例えば２５６ビット長のベクトルオペランドは、各々が１６ビット長の１６個のベクトル要素で形成されてよい。個々のベクトル要素に対して行われる処理演算は典型的には、少なくとも一部が並行して行われるが、これは常にそうである必要はない。スカラー処理演算は、単一の値を有する入力オペランドによって行われ、例えば６４ビットのスカラー処理演算が、２つの６４ビットのスカラー入力オペランドに対して行われ、６４ビットのスカラー出力オペランドを生成することができる。
【００１１】
ベクトル処理回路１８は、要素サイズが混在したベクトル算術命令がフェッチされ、デコードされ実行される際、デコーダ回路１４によって生成される制御信号１６の制御の下で実行される要素サイズが混在した少なくとも１つのベクトル算術命令をサポートするように本開示に従って形成される。
【００１２】
図２は、要素サイズが混在したベクトル算術命令の作用とシンタクスを概略的に例示する図である。要素サイズが混在したベクトル算術命令は、第１のソースオペランド要素ａｉの第１のベクトルに対して、例えば論理シフト、除算または比較などの算術処理演算を行う。この例では、１６個の第１のソースオペランド要素ａ０〜ａ１５が存在している。このような第１のソースオペランド要素ａｉの各々は、Ａのビットサイズを有する。この例では、１６個の第１のソースオペランド要素ａｉは、４つの別個のサブセットａ０〜ａ３、ａ４〜ａ７、ａ８〜ａ１１およびａ１２〜ａ１５になるように構成される。要素サイズが混在したベクトル算術命令は、第２のソースオペランド要素ｂｉの第２のベクトルを有する。この例では、第２のソースオペランド要素の第２のベクトルは、４つの第２のソースオペランド要素で形成され、すなわち各々がビットサイズＢの第２のソースオペランド要素ｂ０〜ｂ３で形成される。
【００１３】
この一例の実施形態では、１６個の第１のソースオペランド要素と、４つの第２のソースオペランド要素が存在するが、より具体的には、Ｎ個の第１のソースオペランド要素と、Ｍ個の第２のソースオペランド要素があってよい。第２のソースオペランド要素は、第１のソースオペランド要素のビットサイズＡより大きなビットサイズＢを有する。この例では、第２のソースオペランド要素より４倍多い第１のソースオペランド要素が存在しており、ビットサイズＢの第２のソースオペランド要素と、ビットサイズＡの第１のソースオペランド要素の比は４：１である。これは、第１のソースオペランド要素の数Ｎと、第２のソースオペランド要素Ｍの比と同じである。
【００１４】
この一例の実施形態では、第１のソースオペランド要素の別個のサブセットの各々は、第２のオペランド入力である第２のソースオペランド要素のうちのそれぞれ１つと共に算術処理演算を受ける。より詳細には第１のソースオペランド要素ａ１〜ａ３は、その算術処理演算に対する第２の入力である第２のソースオペランド要素ｂ０と共に算術処理演算を受ける。例えば第１のソースオペランド要素ａ０〜ａ３の各々は別々に、第２のソースオペランド要素ｂ０によって指定されたシフト量だけ論理右シフトを受ける場合がある。結果として生じる出力オペランドは、第１のソースオペランド要素と同じビットサイズＡを有する。他の例の算術処理演算が、要素サイズの混在したベクトル算術命令に関して行われる場合もあり、例えば第１のソースオペランド要素ａｉを対応する第２のソースオペランド要素ｂｊで割る、または第１のソースオペランド要素ａｉが、対応する第２のソースオペランド要素ｂｊとの比較（減算）を受ける場合もある。
【００１５】
要素サイズが混在したベクトル算術命令の一例のシンタクスが、図２の底部に例示されている。例えば論理シフト、除算または比較などの算術処理演算は、ＬＳＲ、ＤＩＶまたはＤＭＰなどの簡略記号によって指定される。命令はその後、第１のソースオペランド要素に関する要素サイズを指定する、すなわちこれらがバイトＢであるか、ハーフワードＨであるか、ワードＷであるか、またはダブルワードＤであるかを指定する。６４ビットダブルワードＤの場合、５１２ビットのベクトルオペランドは、８つのそのようなダブルワードを含むことになる。そのような場合の第２のソースオペランド要素は、例えばダブルワードの第１のソースオペランド要素のうちの２つが、１２８ビットの第２のソースオペランド要素の各々に対応づけられた１２８ビットのベクトル要素であってよい。多くの他の異なる全体のベクトルサイズおよびベクトル要素サイズが、実装形態および特定の命令セットまたは行われる処理の要件に応じて利用される場合があることを理解されたい。
【００１６】
要素サイズが混在したベクトル算術命令のシンタクスは、その要素のビットサイズＡと共にデスティネーションベクトルレジスタＺＤを指定することによって継続する。この後に、その要素のビットサイズＡと共に第１のソースオペランドのベクトルレジスタ、すなわちＺｓ１を指定することが続く。最後に、その要素のビットサイズＢと共に第２のソースオペランドのベクトルレジスタＺＳ２が指定される。これは、２つの入力オペランドと、１つの出力オペランドを有する要素サイズが混在したベクトル算術命令の一例である。比較命令の場合、ＺＳ１内の各々の要素をＺＳ２内のより幅の広い要素と比較（減算）した結果に相当する「ｔｒｕｅ」または「ｆａｌｓｅ」の結果を含む、プレディケートレジスタＰＤに書き込まれた結果によって２つの入力オペランドが特定されてよい。
【００１７】
要素サイズが混在したベクトルシフト命令ＬＳＲの場合、処理演算は、第１のソースオペランド要素を、対応する第２のソースオペランド要素によって指定されたシフト量だけシフトするシフト演算である。要素サイズが混在したベクトル算術命令が除算命令であるの場合、算術処理演算は、対応する第２のソースオペランド要素によって指定される除数によって第１のソースオペランド要素を割る除算演算である。要素サイズが混在したベクトル算術命令が比較命令である場合、算術処理演算は、第１のソースオペランド要素を対応する第２のソースオペランド要素と比較する比較演算である。
【００１８】
第１のソースオペランド要素の要素ビットサイズは、上記に述べたように、第１のソースオペランド要素が８ビットのサイズ、１６ビットのサイズ、３２ビットのサイズまたは６４ビットのサイズを有するかを特定する要素サイズフィールド「ｘ」によって特定される。第２のソースオペランド要素は、一部の例の実施形態では、要素サイズが混在した命令の中の特定のフィールドによって特定されたビットサイズを有する。しかしながら例えば図２に例示されるものなど他の例の実施形態では、第２のソースオペランド要素は、例えば６４ビットまたは１２８ビットなどの固定されたサイズを有する場合もある。第１のソースオペランド要素は、第２のソース要素よりビットサイズが小さい。第２のソースオペランド要素が６４のビットサイズを有する場合、このとき第１のソースオペランド要素は、８、１６または３２のビットサイズを有することになる。
【００１９】
図３は、デスティネーションオペランド要素内のビット値２６が、対応する第１のオペランド要素２８と、第２のソースオペランド要素３０のうちの少なくとも一方における異なるビット有意性（significance）の１つまたは複数のビット値に応じて設定されるようにどのようにして算術命令が作用するかを概略的に例示している。第２のソースオペランド要素Ｂｊによって指定された右シフト量による第１のソースオペランド要素の右シフトの場合、デスティネーションオペランドＤｉにおけるそれぞれのビット位置２６は、適用される右シフト量を指定する第２のソースオペランド要素３０内の全てのビット３１と共に、第１のソースオペランド要素２８内のより高次の有意性を有する対応するビット２９に依存している。
【００２０】
本開示は、要素サイズが混在したベクトル算術命令がサポートされるシステムを教示している。これは、この分野における通常の技術的偏見に対抗するものである。通常、算術命令に関する全てのソースオペランドは全て、共通の要素サイズを有する。本開示は、特定の状況において、要素サイズが混在したベクトル算術命令を提供することは、そのような命令が、プロセッサ４によってサポートされデコーダ回路１４によってデコードされた命令セット内で消費する命令ビットスペースを揃えるという利点を提供することを認識している。プログラムループの複数の演算を並行して行い、そのプログラムループがスカラー値オペランドを有する場合、要素サイズが混在したベクトル算術命令を利用して、ループのそれぞれの演算に関して第１のソースオペランド要素と同一のビットサイズを共有していないそのスカラーオペランドのコピーを記憶することができる。実際のレベルでは、要素サイズが混在したベクトル算術命令の提供は、各々のループの繰り返しの際、スカラーレジスタファイル２４からベクトル処理回路１８にスカラーオペランドをコピーする必要性を回避する場合があり、これは、ベクトル処理回路１８が、それがより直接的に結合されるベクトルレジスタファイル２２にアクセスするのと比べて比較的ゆっくりとしたプロセスであり得る。よって例えば、本開示によって提供される要素サイズが混在したベクトル算術命令の１つの使用法は、第１のソースベクトル要素よりも有意なビットを含むスカラーオペランド値を、スカラーレジスタファイル２４から、第２のベクトルオペランド内のより幅の広い第２のソースオペランド要素の各々にコピーすることである。スカラーオペランドがコピーされたより幅の広い第２のソースオペランド要素を利用して、第２のベクトルをその後、複数の第１のソースベクトルオペランド要素に対して作用する要素サイズが混在したベクトル算術命令に対するベクトルオペランド入力の１つとして使用することができる。
【００２１】
図４は、上記のタイプの演算の一例を概略的に例示するフロー図である。ステップ３２において、スカラーレジスタＸｉからの６４ビット値が、ベクトルオペランドＺｓ２の全てのベクトルレジスタ要素に直接コピーされる。ステップ３４は次いで、この６４ビットがコピーされたベクトルレジスタ要素から、第２のベクトルの全ての他のベクトルレジスタ要素にわたって、この６４ビットの複製を作製する。ステップ３６において、実行されるべき処理ループに入る。ステップ３８は、要素サイズが混在したベクトル算術命令を第１の入力ベクトルＺｓ１と、第２の入力ベクトルＺｓ２に対して実行して出力ベクトルＺＤを生成する。この段階で、スカラーレジスタの複数のコピーが、第２のベクトルの適切な要素内に存在しており、従って処理が進むにつれてスカラーレジスタファイル２４からベクトルレジスタファイル２２に移動させる必要はない。ステップ４０において、実行されていたロープから出る。
【００２２】
上記は、要素サイズが混在したベクトル算術命令の単なる一例の使用であることを理解されたい。図２の例では、第１のソースオペランド要素ａｉと、第２のソースオペランド要素ｂｊの間に多対１の関係が生じており、すなわち別個のサブセット構成が存在しており、これにより第１のソースオペランド要素の各々の別個のサブセットは、単一の対応付けられた第２のソースオペランド要素を有する。一部の実施形態では、第１のソースオペランド要素と、対応する第２のソースオペランド要素の分離を設ける必要がないことを理解されたい。上記の例は、シフト演算、除算演算および比較演算の形式で算術処理演算を考察している。他の形式の算術演算もサポートされ得ることを理解されたい。算術演算によって作用されるオペランドは、二進数の値であってよく、この場合、第１のソースオペランド要素が二進数の値を含み、第２のソースオペランド要素が２進数の値を含み、デスティネーションオペランド要素は、デスティネーションオペランドの二進数の値を含むように、各々のビットは、異なる位置的有意性を有する。この方法において処理演算は、独立したビット単位の演算が異なる位置にある他のビットから独立して行われるのではなく(例えばＯＲ、ＸＯＲまたはＡＮＤ)、全体として二進数の値に対して行われる。
【００２３】
図５は、使用され得る仮想マシンの実装を例示している。先に記載した実施形態は、関連する技術をサポートする特定の処理ハードウェアを作動させるための装置および方法の点で本発明を履行するが、いわゆるハードウェアデバイスの仮想マシン実装を設けることも可能である。仮想マシン実装は、仮想マシンプログラム５１０をサポートするホストオペレーティングシステム５２０を起動中のホストプロセッサ５３０上で起動する。典型的には、適度な速度で動作する仮想マシン実装を実現するには大型の強力なプロセッサが必要とされ、そのような手法は、例えば互換性または再利用の理由のための別のプロセッサに固有のコードを実行するという要望がある場合など特定の状況において正当化され得る。仮想マシンプログラム５１０は、仮想マシンプログラム５１０によってモデル化されるデバイスであるリアルハードウェアによって提供されるアプリケーションプログラムインターフェースと同一である、アプリケーションプログラム５００に対するアプリケーションプログラムインターフェースを提供する。よって、上記に記載したメモリアクセスの制御を含めたプログラム命令が、仮想マシンプログラム５１０を利用してアプリケーションプログラム５００において実行されて、仮想マシンハードウェアとのその対話をモデル化することができる。
【００２４】
本発明の例示の実施形態を添付の図面を参照して本明細書に詳細に記載してきたが、本発明は、そのような正確な実施形態に限定されるものではなく、添付の特許請求の範囲によって定義される本発明の精神および範囲から逸脱することなく、種々の変更、追加および修正を当業者によって行うことができることを理解されたい。例えば従属クレームの特徴の種々の組み合わせは、本発明の範囲から逸脱することなく、独立クレームの特徴と共に形成される場合がある。
【図１】
2018521423.tif 000003
【図２】
2018521423.tif 000004
【図３】
2018521423.tif 000005
【図４】
2018521423.tif 000006
【図５】
2018521423.tif 000007
【国際調査報告】
2018521423.tif 000008
2018521423.tif 000009