(57)【要約】  データ処理装置におけるベクトル・インタリーブ技法が装置、命令、装置を動作させる方法、及びシミュレータの実装形態を含んで開示される。ベクトル・インタリーブ命令は、第１のソース・レジスタ、第２のソース・レジスタ、及びデスティネーション・レジスタを指定する。入力データ項目の第１のセットは第１のソース・レジスタから取り出され、入力データ項目の第２のセットは第２のソース・レジスタから取り出される。データ処理演算は、入力データ項目の第１及び第２のセットから得られる選択された入力データ項目対に対して実施され、結果データ項目のセットを生成し、結果データ・ベクトルとしてデスティネーション・レジスタ内に格納される。第１のソース・レジスタ依存結果データ項目はデスティネーション・データ・ベクトル内の交互する位置の第１のセットに格納され、第２のソース・レジスタ依存結果データ項目はデスティネーション・データ・ベクトル内の交互する位置の第２のセットに格納される。
2020527797.tif 000002
【特許請求の範囲】
【請求項１】
命令をデコードするための命令デコーダ回路と、
入力データ・ベクトル内の個々の位置に複数の入力データ項目を含む前記入力データ・ベクトルへの前記命令によって指定されるベクトル処理演算を選択的に適用するためのデータ処理回路と
を備え、
前記命令デコーダ回路は、第１のソース・レジスタ、第２のソース・レジスタ、及びデスティネーション・レジスタを指定するベクトル・インタリーブ命令に応答して、
前記第１のソース・レジスタからの入力データ項目の第１のセットを取り出すことと、
前記第２のソース・レジスタからの入力データ項目の第２のセットを取り出すことと、
前記入力データ項目の第１及び第２のセットから得られる少なくとも選択された入力データ項目対に対してデータ処理演算を実施して結果データ項目のセットを生成することと、
前記結果データ項目のセットを結果データ・ベクトルとして前記デスティネーション・レジスタに格納することであって、第１のソース・レジスタ内容依存性を有する第１のソース・レジスタ依存結果データ項目は前記デスティネーション・データ・ベクトル内の交互する位置の第１のセット内に格納され、第２のソース・レジスタ内容依存性を有する第２のソース・レジスタ依存結果データ項目は前記デスティネーション・データ・ベクトル内の交互する位置の第２のセット内に格納される、格納することと
を行うためのベクトル・インタリーブ処理を実行するよう前記データ処理回路を制御するための制御信号を生成する、装置。
【請求項２】
前記入力データ項目の第１及び第２のセットから得られる前記選択された入力データ項目対は、
前記第１のソース・レジスタ内の入力データ項目の隣接対から形成される入力データ項目対の第１のセット、及び
前記第２のソース・レジスタ内の入力データ項目の隣接対から形成される入力データ項目対の第２のセット
を含む、請求項１に記載の装置。
【請求項３】
前記デスティネーション・データ・ベクトル内の前記交互する位置の第１のセットは前記デスティネーション・データ・ベクトル内の前記交互する位置の第２のセットと交互になる、請求項２に記載の装置。
【請求項４】
前記交互する位置の第１のセットは前記デスティネーション・データ・ベクトル内の位置の偶数番号セットであり、前記交互する位置の第２のセットは前記デスティネーション・データ・ベクトル内の位置の奇数番号セットである、請求項３に記載の装置。
【請求項５】
前記交互する位置の第１のセットは前記デスティネーション・データ・ベクトル内の位置の奇数番号セットであり、前記交互する位置の第２のセットは前記デスティネーション・データ・ベクトル内の位置の偶数番号セットである、請求項３に記載の装置。
【請求項６】
前記入力データ項目の第１及び第２のセットから得られる前記選択された入力データ項目対は、前記第２のソース・レジスタ内の交互する入力データ項目と対にされる、前記第１のソース・レジスタ内の交互する入力データ項目から形成される対角の入力データ項目対を含む、請求項１に記載の装置。
【請求項７】
前記第１のソース・レジスタ依存結果データ項目及び前記第２のソース・レジスタ依存結果データ項目は結果データ項目の同一のセットであり、前記交互する位置の第１のセット及び前記交互する位置の第２のセットは前記デスティネーション・データ・ベクトル内の交互する位置の同一のセットである、請求項６に記載の装置。
【請求項８】
前記交互する位置の第１のセット及び前記交互する位置の第２のセットは、先行するデータ項目のセットが前記デスティネーション・データ・ベクトル内に留まる位置のさらなるセットと交互になり、前記先行するデータ項目のセットは、前記データ処理回路が前記ベクトル・インタリーブ処理を開始する前に前記デスティネーション・データ・ベクトル内の前記位置のさらなるセットに存在する、請求項６又は７に記載の装置。
【請求項９】
前記位置の第１のセットは前記デスティネーション・データ・ベクトル内の位置の偶数番号セットであり、前記位置のさらなるセットは前記デスティネーション・データ・ベクトル内の位置の奇数番号セットである、請求項８に記載の装置。
【請求項１０】
前記位置の第１のセットは前記デスティネーション・データ・ベクトル内の位置の奇数番号セットであり、前記位置のさらなるセットは前記デスティネーション・データ・ベクトル内の位置の偶数番号セットである、請求項８に記載の装置。
【請求項１１】
前記第１のソース・レジスタ内の前記交互する入力データ項目は前記第１のソース・レジスタ内の位置の偶数番号セットから取り出され、前記第２のソース・レジスタ内の前記交互する入力データ項目は前記第２のソース・レジスタ内の位置の奇数番号セットから取り出される、請求項６から１０までのいずれかに記載の装置。
【請求項１２】
前記第１のソース・レジスタ内の前記交互する入力データ項目は前記第１のソース・レジスタ内の位置の奇数番号セットから取り出され、前記第２のソース・レジスタ内の前記交互する入力データ項目は前記第２のソース・レジスタ内の位置の偶数番号セットから取り出される、請求項６から１０までのいずれかに記載の装置。
【請求項１３】
前記データ処理演算は算術演算、論理演算、又はシフト演算である、請求項１から１２までのいずれかに記載の装置。
【請求項１４】
前記ベクトル・インタリーブ命令で指定される前記デスティネーション・レジスタは前記第１のソース・レジスタ及び前記第２のソース・レジスタのうちの１つである、請求項１から１３までのいずれかに記載の装置。
【請求項１５】
前記ベクトル・インタリーブ命令は前記入力データ・ベクトル内の前記個々の位置に対応する述語ビットを含む述語値をさらに指定し、且つ前記データ処理回路は前記述語値内の設定解除された述語ビットにさらに応答して前記入力データ項目の第１のセットの入力データ項目及び前記設定解除された述語ビットに対応する前記ベクトル・インタリーブ処理内の前記入力データ項目の第２のセットの関与を抑制する、請求項１から１４までのいずれかに記載の装置。
【請求項１６】
前記ベクトル・インタリーブ命令は前記入力データ項目の第１のセットの第１のデータ項目サイズ、前記入力データ項目の第２のセットの第２のデータ項目サイズ、及び前記結果データ項目のセットの結果データ項目サイズをさらに指定する、請求項１から１５までのいずれかに記載の装置。
【請求項１７】
前記入力データ項目の第２のセットの前記第１のデータ項目サイズ及び前記第２のデータ項目サイズは、前記結果データ項目のセットの前記結果データ項目サイズよりも小さい、請求項１６に記載の装置。
【請求項１８】
前記入力データ項目の第２のセットの前記第１のデータ項目サイズ及び前記第２のデータ項目サイズは、前記結果データ項目のセットの前記結果データ項目サイズよりも大きい、請求項１６に記載の装置。
【請求項１９】
データ処理装置を動作させる方法であって、
命令をデコードするステップと、
入力データ・ベクトル内の個々の位置に複数の入力データ項目を含む前記入力データ・ベクトルへの前記命令によって指定されるベクトル処理演算を選択的に適用するステップと、
前記装置の第１のソース・レジスタ、第２のソース・レジスタ、及びデスティネーション・レジスタを指定するベクトル・インタリーブ命令に応答して、
前記第１のソース・レジスタからの入力データ項目の第１のセットを取り出すことと、
前記第２のソース・レジスタからの入力データ項目の第２のセットを取り出すことと、
前記入力データ項目の第１及び第２のセットから得られる少なくとも選択された入力データ項目対に対してデータ処理演算を実施して結果データ項目のセットを生成することと、
前記結果データ項目のセットを結果データ・ベクトルとして前記デスティネーション・レジスタに格納することであって、第１のソース・レジスタ内容依存性を有する第１のソース・レジスタ依存結果データ項目は前記デスティネーション・データ・ベクトル内の交互する位置の第１のセット内に格納され、第２のソース・レジスタ内容依存性を有する第２のソース・レジスタ依存結果データ項目は前記デスティネーション・データ・ベクトル内の交互する位置の第２のセット内に格納される、格納することと
を含むベクトル・インタリーブ処理を実行するよう前記装置のデータ処理回路を制御するための制御信号を生成するステップと
を含む、方法。
【請求項２０】
装置であって、
命令をデコードする手段と、
入力データ・ベクトル内の個々の位置に複数の入力データ項目を含む前記入力データ・ベクトルへの前記命令によって指定されるベクトル処理演算を選択的に適用する手段と、
前記装置の第１のソース・レジスタ、第２のソース・レジスタ、及びデスティネーション・レジスタを指定するベクトル・インタリーブ命令に応答して、
前記第１のソース・レジスタからの入力データ項目の第１のセットを取り出すための手段と、
前記第２のソース・レジスタからの入力データ項目の第２のセットを取り出すための手段と、
前記入力データ項目の第１及び第２のセットから得られる少なくとも選択された入力データ項目対に対してデータ処理演算を実施して結果データ項目のセットを生成するための手段と、
前記結果データ項目のセットを結果データ・ベクトルとして前記デスティネーション・レジスタに格納するための手段であって、第１のソース・レジスタ内容依存性を有する第１のソース・レジスタ依存結果データ項目は前記デスティネーション・データ・ベクトル内の交互する位置の第１のセット内に格納され、第２のソース・レジスタ内容依存性を有する第２のソース・レジスタ依存結果データ項目は前記デスティネーション・データ・ベクトル内の交互する位置の第２のセット内に格納される、格納するための手段と
を含むベクトル・インタリーブ処理を実行するよう前記装置のデータ処理回路を制御するための制御信号を生成する手段と
を含む、装置。
【請求項２１】
命令実行環境を提供するためのホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、
命令をデコードするための命令デコード・プログラム・ロジックと、
入力データ・ベクトル構造体内の個々の位置に複数の入力データ項目を含む前記入力データ・ベクトル構造体への前記命令によって指定されるベクトル処理演算を選択的に適用するためのデータ処理プログラム・ロジックと
を含み、
前記命令デコード・プログラム・ロジックは、第１のソース・データ構造体、第２のソース・データ構造体、及びデスティネーション・データ構造体を指定するベクトル・インタリーブ命令に応答して、
前記第１のソース・データ構造体からの入力データ項目の第１のセットを取り出すことと、
前記第２のソース・データ構造体からの入力データ項目の第２のセットを取り出すことと、
前記入力データ項目の第１及び第２のセットから得られる少なくとも選択された入力データ項目対に対してデータ処理演算を実施して結果データ項目のセットを生成することと、
前記結果データ項目のセットを結果データ・ベクトル構造体として前記デスティネーション・データ構造体に格納することであって、第１のソース・データ構造体内容依存性を有する第１のソース・データ構造体依存結果データ項目は前記デスティネーション・データ・ベクトル構造体内の交互する位置の第１のセット内に格納され、第２のソース・データ構造体内容依存性を有する第２のソース・データ構造体依存結果データ項目は前記デスティネーション・データ・ベクトル構造体内の交互する位置の第２のセット内に格納される、格納することと
を行うためのベクトル・インタリーブ処理を実行するよう前記データ処理プログラム・ロジックを制御するための制御信号を生成する、コンピュータ・プログラム。
【請求項２２】
請求項２４に記載の前記コンピュータ・プログラムを非一時的に記憶するコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示はデータ処理装置に関する。より詳細には、データ処理装置が実行することができるベクトル処理演算に関する。
【背景技術】
【０００２】
入力データ項目のセットに対してデータ処理演算を実施するデータ処理装置において、入力データ項目を、ベクトルの幅にわたるデータ項目の群が同一のデータ処理に並列にかけられる、ベクトル化されたやり方で処理することができれば、例えばこれらが次から次へと処理されるシーケンシャルな処理手法を取る場合に比べて、より高い処理効率及びスループットが得られる。それにもかかわらず、データ処理をソース・レジスタからの入力データ項目に適用し、その結果をデスティネーション・レジスタに格納するベクトル化された手法は、過度な複雑性  を伴わずに実用的なデータ処理装置が提供される場合、実施することのできるデータ処理の種類、及びこれらのデータ処理演算のオペランドを形成する入力データ項目の組合せに一定の限定を課すことがあり、ベクトル化された手法の有利性を価値のないものする可能性がある。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ｒｏｂｅｒｔ  Ｂｅｄｉｃｈｅｋ、「Ｓｏｍｅ  Ｅｆｆｉｃｉｅｎｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｉｍｕｌａｔｉｏｎ  Ｔｅｃｈｎｉｑｕｅｓ」、１９９０年冬季ＵＳＥＮＩＸ  Ｃｏｎｆｅｒｅｎｃｅ、５３〜６３頁
【発明の概要】
【課題を解決するための手段】
【０００４】
一実例の実施例において、命令をデコードするための命令デコーダ回路と、入力データ・ベクトル内の個々の位置に複数の入力データ項目を含む入力データ・ベクトルへの命令によって指定されるベクトル処理演算を選択的に適用するためのデータ処理回路とを備える装置があり、命令デコーダ回路は、第１のソース・レジスタ、第２のソース・レジスタ、及びデスティネーション・レジスタを指定するベクトル・インタリーブ命令に応答して、第１のソース・レジスタからの入力データ項目の第１のセットを取り出すことと、第２のソース・レジスタからの入力データ項目の第２のセットを取り出すことと、入力データ項目の第１及び第２のセットから得られる少なくとも選択された入力データ項目対（つい（または「ペア」））に対してデータ処理演算を実施して結果データ項目のセットを生成することと、結果データ項目のセットを結果データ・ベクトルとしてデスティネーション・レジスタに格納することであって、第１のソース・レジスタ内容依存性を有する第１のソース・レジスタ依存結果データ項目はデスティネーション・データ・ベクトル内の交互する位置の第１のセット内に格納され、第２のソース・レジスタ内容依存性を有する第２のソース・レジスタ依存結果データ項目はデスティネーション・データ・ベクトル内の交互する位置の第２のセット内に格納される、格納することとを行うためのベクトル・インタリーブ処理を実行するようデータ処理回路を制御するための制御信号を生成する。
【０００５】
別の実例の実施例において、データ処理装置を動作させる方法があり、方法は、命令をデコードするステップと、入力データ・ベクトル内の個々の位置に複数の入力データ項目を含む入力データ・ベクトルへの命令によって指定されるベクトル処理演算を選択的に適用するステップと、装置の第１のソース・レジスタ、第２のソース・レジスタ、及びデスティネーション・レジスタを指定するベクトル・インタリーブ命令に応答して、第１のソース・レジスタからの入力データ項目の第１のセットを取り出すことと、第２のソース・レジスタからの入力データ項目の第２のセットを取り出すことと、入力データ項目の第１及び第２のセットから得られる少なくとも選択された入力データ項目対に対してデータ処理演算を実施して結果データ項目のセットを生成することと、結果データ項目のセットを結果データ・ベクトルとしてデスティネーション・レジスタに格納することであって、第１のソース・レジスタ内容依存性を有する第１のソース・レジスタ依存結果データ項目はデスティネーション・データ・ベクトル内の交互する位置の第１のセット内に格納され、第２のソース・レジスタ内容依存性を有する第２のソース・レジスタ依存結果データ項目はデスティネーション・データ・ベクトル内の交互する位置の第２のセット内に格納される、格納することとを含むベクトル・インタリーブ処理を実行するよう装置のデータ処理回路を制御するための制御信号を生成するステップとを含む。
【０００６】
別の実例の実施例において、装置があり、装置は、命令をデコードする手段と、入力データ・ベクトル内の個々の位置に複数の入力データ項目を含む入力データ・ベクトルへの命令によって指定されるベクトル処理演算を選択的に適用する手段と、装置の第１のソース・レジスタ、第２のソース・レジスタ、及びデスティネーション・レジスタを指定するベクトル・インタリーブ命令に応答して、第１のソース・レジスタからの入力データ項目の第１のセットを取り出すための手段と、第２のソース・レジスタからの入力データ項目の第２のセットを取り出すための手段と、入力データ項目の第１及び第２のセットから得られる少なくとも選択された入力データ項目対に対してデータ処理演算を実施して結果データ項目のセットを生成するための手段と、結果データ項目のセットを結果データ・ベクトルとしてデスティネーション・レジスタに格納するための手段であって、第１のソース・レジスタ内容依存性を有する第１のソース・レジスタ依存結果データ項目はデスティネーション・データ・ベクトル内の交互する位置の第１のセット内に格納され、第２のソース・レジスタ内容依存性を有する第２のソース・レジスタ依存結果データ項目はデスティネーション・データ・ベクトル内の交互する位置の第２のセット内に格納される、格納するための手段とを含むベクトル・インタリーブ処理を実行するよう装置のデータ処理回路を制御するための制御信号を生成する手段とを含む。
【０００７】
別の実例の実施例において、命令実行環境を提供するためのホスト・データ処理装置を制御するためのコンピュータ・プログラムがあり、コンピュータ・プログラムは、命令をデコードするための命令デコード・プログラム・ロジックと、入力データ・ベクトル構造体内の個々の位置に複数の入力データ項目を含む入力データ・ベクトル構造体への命令によって指定されるベクトル処理演算を選択的に適用するためのデータ処理プログラム・ロジックとを含み、命令デコード・プログラム・ロジックは、第１のソース・データ構造体、第２のソース・データ構造体、及びデスティネーション・データ構造体を指定するベクトル・インタリーブ命令に応答して、第１のソース・データ構造体からの入力データ項目の第１のセットを取り出すことと、第２のソース・データ構造体からの入力データ項目の第２のセットを取り出すことと、入力データ項目の第１及び第２のセットから得られる少なくとも選択された入力データ項目対に対してデータ処理演算を実施して結果データ項目のセットを生成することと、結果データ項目のセットを結果データ・ベクトル構造体としてデスティネーション・データ構造体に格納することであって、第１のソース・データ構造体内容依存性を有する第１のソース・データ構造体依存結果データ項目はデスティネーション・データ・ベクトル構造体内の交互する位置の第１のセット内に格納され、第２のソース・データ構造体内容依存性を有する第２のソース・データ構造体依存結果データ項目はデスティネーション・データ・ベクトル構造体内の交互する位置の第２のセット内に格納される、格納することとを行うためのベクトル・インタリーブ処理を実行するようデータ処理プログラム・ロジックを制御するための制御信号を生成する。
【０００８】
別の実例の実施例において、上で言及したコンピュータ・プログラムを非一時的に記憶するコンピュータ可読記憶媒体がある。
【０００９】
本技法は、その実施例を参照して添付の図面に図示されるように、単に実例としてさらに説明される。
【図面の簡単な説明】
【００１０】
【図１】本技法の様々な実例を具現化し得るデータ処理装置を概略的に示す図である。
【図２Ａ】２つのソース・レジスタのそれぞれから得られる要素対に対してデータ処理を実施し、これらをインタリーブされるやり方でデスティネーション・レジスタに書き込むためのデータ処理回路を概略的に示す図である。
【図２Ｂ】図２Ａの実例におけるレジスタの要素について、実例の内容を示す図である。
【図３Ａ】第１及び第２のソース・レジスタから得られるデータ要素対に対してデータ処理演算を実施し、それぞれのソース・レジスタからの結果をインタリーブされるやり方でデスティネーション・レジスタに書き込むためのデータ処理回路であり、デスティネーション・レジスタに書き込まれる要素のデータ・サイズを指定することができるデータ処理回路を概略的に示す図である。
【図３Ｂ】図３Ａの実例における要素の実例の内容を示す図である。
【図４Ａ】ソース・レジスタの１つがやはりデスティネーション・レジスタを与える実例におけるデータ処理回路を概略的に示す図である。
【図４Ｂ】図４Ａの実例における実例の内容を示す図である。
【図５Ａ】命令が選択的に一定の処理を有効化／無効化するために使用される述語値を指定する一実例におけるデータ処理回路及びレジスタを示す図である。
【図５Ｂ】図５Ａの実例におけるレジスタの要素の実例の内容、及び対応する述語値を与える図である。
【図６】データ処理演算にかけられる入力データ項目の対が、第１及び第２のソース・レジスタの対角線上で隣接する要素から得られる一実例におけるデータ処理回路を概略的に示す図である。
【図７】本技法のいくつかの命令が使用される、実例の多項式乗算のデータ処理コンテキストにおいて使用されるいくつかの定義を示す図である。
【図８】図７の多項式乗算の実例のレジスタ内容を、この多項式乗算を実行するために本技法によって与えられる命令の実例のシーケンスと併せてステップごとに示す図である。
【図９】一実施例の方法における、一連のステップを示す図である。
【図１０】一実施例の方法で取られる一連のステップを示す図である。
【図１１】一実施例において、シミュレータ実装形態を提供するシステムのコンポーネントを概略的に示す図である。
【発明を実施するための形態】
【００１１】
少なくともいくつかの実施例は装置を提供し、装置は、命令をデコードするための命令デコーダ回路と、入力データ・ベクトル内の個々の位置に複数の入力データ項目を含む入力データ・ベクトルへの命令によって指定されるベクトル処理演算を選択的に適用するためのデータ処理回路とを備え、命令デコーダ回路は、第１のソース・レジスタ、第２のソース・レジスタ、及びデスティネーション・レジスタを指定するベクトル・インタリーブ命令に応答して、第１のソース・レジスタからの入力データ項目の第１のセットを取り出すことと、第２のソース・レジスタからの入力データ項目の第２のセットを取り出すことと、入力データ項目の第１及び第２のセットから得られる少なくとも選択された入力データ項目対に対してデータ処理演算を実施して結果データ項目のセットを生成することと、結果データ項目のセットを結果データ・ベクトルとしてデスティネーション・レジスタに格納することであって、第１のソース・レジスタ内容依存性を有する第１のソース・レジスタ依存結果データ項目はデスティネーション・データ・ベクトル内の交互する位置の第１のセット内に格納され、第２のソース・レジスタ内容依存性を有する第２のソース・レジスタ依存結果データ項目はデスティネーション・データ・ベクトル内の交互する位置の第２のセット内に格納される、格納することとを行うためのベクトル・インタリーブ処理を実行するようデータ処理回路を制御するための制御信号を生成する。
【００１２】
本技法は、処理される入力データ項目及び生成される結果データ項目が同じ場所に配置されるベクトル処理手法において、処理の効率性及び必須のハードウェアの複雑性の低減を得ることを実現する。例えば、処理レーン（内部では独立したデータ処理が行われる）が十分定義され十分制約される実装形態において、そのような同じ場所での配置が達成される。換言すると、これは、データ処理演算の必要とされるオペランドをまとめるための、及び得られるデータ項目をデスティネーション・レジスタ内で必要とされる位置に移送するための、必要とされるハードウェアの複雑性が限定されることを意味している。このコンテキストにおいて、本技法はベクトル・インタリーブ命令を提供することが有用であることを見出しており、ベクトル・インタリーブ命令は一方で選択された入力データ項目対が第１及び第２のソース・レジスタから取り出される入力データ項目の第１及び第２のセットから得られるようにし、また他方では、第１のソース・レジスタ依存結果データ項目がデスティネーション・レジスタ内の交互する位置に格納され、且つ第２のソース・レジスタ依存結果データ項目がやはりデスティネーション・レジスタ内の交互する位置に格納されるべく、結果データ項目がそれらのソース・レジスタ依存性に応じてデスティネーション・レジスタに格納されるようにする。この構成により、定義され、順に結果データ項目が書き込まれるデスティネーション・レジスタ内の交互する位置にある入力データ項目の特定の対において、有用な程度の柔軟性が可能となる。実際、本技法は、データ処理演算がコアである対を超えて１つ又は複数の追加的なオペランドを有することができる点において、入力データ項目の厳密な対に限定されない。それにもかかわらず、この手法は、設けられ得るハードウェアをサポートすることにおいて過剰な複雑性を避けて、上で言及したベクトル化されたデータ処理に関与する関連する要素の同じ場所への配置をさらに提供するが、さらなる関連付けられるデータ処理演算が（例えば、内容を並べ替える、又はシャッフルするために）必要とされない有用なデータ処理が実行されることをなお可能にする。実装されるベクトル化されたデータ処理の有用な効率性及びスループットはこのようにサポートされる。
【００１３】
上で言及したように、選択されるデータ項目対は様々な有用な方法で定義することができるが、いくつかの実施例において、入力データ項目の第１及び第２のセットから得られる選択された入力データ項目対は、第１のソース・レジスタ内の入力データ項目の隣接対から形成される入力データ項目対の第１のセット、及び第２のソース・レジスタ内の入力データ項目の隣接対から形成される入力データ項目対の第２のセットを含む。したがって、隣接要素（入力データ項目）の対は第１及び第２のソース・レジスタの両方から得られ、これはデータ処理のこれらの入力データ項目オペランドが有用に同じ場所に配置されていることを意味しているが、さらにはそれらから生成された結果データ項目がデスティネーション・レジスタ内の他の項目でインタリーブされる場合、実行されているベクトル化されたデータ処理の効率性及びスループットをさらにサポートして、デスティネーション・レジスタの利用を（完全に「パック」されるという点において）最大にする。
【００１４】
このデスティネーション・レジスタの完全な利用を確実にする１つの方法は、第１のソース・レジスタ内容から導いた結果データ項目を、第２のソース・レジスタ内容から導いた結果データ項目でインタリーブすることであり、したがって、いくつかの実施例において、デスティネーション・データ・ベクトル内の交互する位置の第１のセットはデスティネーション・データ・ベクトル内の交互する位置の第２のセットと交互になる。いくつかの実施例において、交互する位置の第１のセットはデスティネーション・データ・ベクトル内の位置の偶数番号セットであり、交互する位置の第２のセットはデスティネーション・データ・ベクトル内の位置の奇数番号セットである。代替的に、他の実施例において、交互する位置の第１のセットはデスティネーション・データ・ベクトル内の位置の奇数番号セットであり、交互する位置の第２のセットはデスティネーション・データ・ベクトル内の位置の偶数番号セットである。
【００１５】
しかしながら、他の実施例において選択される入力データ対は様々に定義することができ、いくつかの実施例において、入力データ項目の第１及び第２のセットから得られる選択された入力データ項目対は、第２のソース・レジスタ内の交互する入力データ項目と対にされる、第１のソース・レジスタ内の交互する入力データ項目から形成される対角の入力データ項目対を含む。換言すると、そのような実施例において、入力データ項目対は、対のうち１つの入力データ項目は第１のソース・レジスタから由来し、一方で対のうち他方の入力データ項目は第２のソース・レジスタから由来しているという点において、第１及び第２のソース・レジスタにまたがっている。さらには、この対は、第１のソース・レジスタから得られる入力データ項目がそのソース・レジスタ内で第２のソース・レジスタから得られる入力データ項目に対してずれた位置にあり、このずれは１つのデータ項目位置であるという意味で「対角」的である。したがって、第１のソース・レジスタからの交互する入力データ項目は、隣接するデータ項目場所から得られる第２のソース・レジスタにおける交互する入力データ項目と対にされる。様々なデータ処理のコンテキストは、この「対角の入力データ項目対」手法から利益を得ることができるが、そのいくつかの実例について以下でより明らかとなろう。
【００１６】
したがって、すべての結果データ項目が第１のソース・レジスタ及び第２のソース・レジスタの両方に依存しているいくつかの実施例において、第１のソース・レジスタ依存結果データ項目及び第２のソース・レジスタ依存結果データ項目によって定義されるセットは同一であり、したがっていくつかの実施例において、第１のソース・レジスタ依存結果データ項目及び第２のソース・レジスタ依存結果データ項目は結果データ項目の同一のセットであり、交互する位置の第１のセット及び交互する位置の第２のセットはデスティネーション・データ・ベクトル内の交互する位置の同一のセットである。ひいては、結果データ項目が格納されるデスティネーション・データ・ベクトル内の位置の観点から、このような実施例において、したがってこれは上で言及した交互する位置の第１のセット及び交互する位置の第２のセットはデスティネーション・データ・ベクトル内の交互する位置と同一のセットであることを意味している。
【００１７】
したがって、このような実施例において、これは交互する位置のさらなるセット（すなわち結果データ項目が格納されない位置）が他のデータ項目でポピュレートするために利用可能であることを意味している。これらは、実施される特定のベクトル化されたデータ処理の利益が何であるかによって様々な方法で選択することができるが、いくつかの実施例において、交互する位置の第１のセット及び交互する位置の第２のセットは、先行するデータ項目のセットがデスティネーション・データ・ベクトル内に留まる位置のさらなるセットと交互になり、この場合先行するデータ項目のセットは、データ処理回路がベクトル・インタリーブ処理を開始する前にデスティネーション・データ・ベクトル内の位置のさらなるセットに存在する。換言すると、ベクトル・インタリーブ処理によって変更されない（修正されないままである）、デスティネーション・データ・ベクトル内に先行するデータ項目のセットがある。
【００１８】
要求に応じて、デスティネーション・データ・ベクトル内の位置の第１及び第２のセットは、いくつかの実施例において、位置の第１のセットはデスティネーション・データ・ベクトル内の位置の偶数番号セットであり、位置のさらなるセットは、デスティネーション・データ・ベクトル内の位置の奇数番号セットであるように選ぶことができることが認識されよう。代替的に、他の実施例において、位置の第１のセットはデスティネーション・データ・ベクトル内の位置の奇数番号セットであり、位置のさらなるセットはデスティネーション・データ・ベクトル内の位置の偶数番号セットである。
【００１９】
同様に、第１及び第２のソース・レジスタから取り出される交互する入力データ項目はそれらに関連付けられる等価な選択を有し、したがって、いくつかの実施例において、第１のソース・レジスタ内の交互する入力データ項目は第１のソース・レジスタ内の位置の偶数番号セットから取り出され、第２のソース・レジスタ内の交互する入力データ項目は第２のソース・レジスタ内の位置の奇数番号セットから取り出されることがやはり認識されよう。代替的に、他の実施例において、第１のソース・レジスタ内の交互する入力データ項目は第１のソース・レジスタ内の位置の奇数番号セットから取り出され、第２のソース・レジスタ内の交互する入力データ項目は第２のソース・レジスタ内の位置の偶数番号セットから取り出される。
【００２０】
入力データ項目に対して実施される特定のデータ処理演算は様々な形態を取ることができるが、様々な実施例において、データ処理演算は算術演算、論理演算、又はシフト演算である。ベクトル化されたデータ処理のベクトル化される「レーン」の制約を尊重して実行するよう適切に構成される、あらゆるそのような演算を選ぶことができる。
【００２１】
いくつかの実施例において、ベクトル・インタリーブ命令で指定されるデスティネーション・レジスタは第１及び第２のソース・レジスタとは別個のレジスタであるが、いくつかの実施例において、ベクトル・インタリーブ命令で指定されるデスティネーション・レジスタは第１のソース・レジスタ及び第２のソース・レジスタのうちの１つである。これにより、そのソース・レジスタのデータ項目のうち少なくともいくつかが、このレジスタへの結果データ項目のセットの格納によって上書きされる、少なくとも部分的に「相殺的な」手法を取ることができる。
【００２２】
本技法は、いくつかの実施例においてベクトル・インタリーブ命令が入力データ・ベクトル内の個々の位置に対応する述語ビットを含む述語値をさらに指定し、且つデータ処理回路が述語値内の設定解除された述語ビットにさらに応答して入力データ項目の第１のセットの入力データ項目及び設定解除された述語ビットに対応するベクトル・インタリーブ処理内の入力データ項目の第２のセットの関与を抑制するという点において、ベクトル・インタリーブ命令に応答して実行されるベクトル化されたデータ処理に対する設定可能性の態様をさらに提供する。したがって、さらなる具体的な制御を、述語値のうちある述語ビットを設定する又は設定解除する効率的なメカニズムによって、処理にこのように適用することができる。この述語値はベクトル・インタリーブ命令においていくつかの方法で、インタリーブ命令それ自身内の即値として、又は記憶場所、例えばその中で述語値が見つかるようなさらなるレジスタを示すベクトル・インタリーブ命令によってのいずれかで、指定することができる。
【００２３】
本技法にとって別の程度の柔軟性は、ベクトル・インタリーブ命令が入力データ項目の第１のセットの第１のデータ項目サイズ、入力データ項目の第２のセットの第２のデータ項目サイズ、及び結果データ項目のセットの結果データ項目サイズをさらに指定する実施例に与えられる。この手法は、第１及び第２のソース・レジスタから取り出された具体的な入力データ項目を制御すること、並びにデスティネーション・レジスタに格納される結果データ項目の具体的なフォーマットを制御することを可能にするために全体的に有用であるだけではなく、これらのレーンを適切に尊重するデータ・サイズを指定することによって処理をベクトル化されたレーン内で維持しようとするコンテキストにおいて特定の適用可能性を見出すことができる。
【００２４】
これは、例えば結果データ項目をナローにすることを含むことができるが、逆に結果データ項目を（入力データ項目に対して）拡大させることを含むこともあり、したがって、例えば精度を損ねない「キャリー無し」乗算を実行できるようにしており、すなわち計算におけるすべての情報を保存しており、これはあるコンテキスト、例えば暗号技術において重要であり得る。
【００２５】
それによって、いくつかの実施例において、入力データ項目の第２のセットの第１のデータ項目サイズ及び第２のデータ項目サイズは、結果データ項目のセットの結果データ項目サイズよりも小さい。代替的に、他の実施例において、入力データ項目の第２のセットの第１のデータ項目サイズ及び第２のデータ項目サイズは、結果データ項目のセットの結果データ項目サイズよりも大きい。
【００２６】
少なくともいくつかの実施例は、データ処理装置を動作させる方法を提供し、方法は、命令をデコードするステップと、入力データ・ベクトル内の個々の位置に複数の入力データ項目を含む入力データ・ベクトルへの命令によって指定されるベクトル処理演算を選択的に適用するステップと、装置の第１のソース・レジスタ、第２のソース・レジスタ、及びデスティネーション・レジスタを指定するベクトル・インタリーブ命令に応答して、第１のソース・レジスタからの入力データ項目の第１のセットを取り出すことと、第２のソース・レジスタからの入力データ項目の第２のセットを取り出すことと、入力データ項目の第１及び第２のセットから得られる少なくとも選択された入力データ項目対に対してデータ処理演算を実施して結果データ項目のセットを生成することと、結果データ項目のセットを結果データ・ベクトルとしてデスティネーション・レジスタに格納することであって、第１のソース・レジスタ内容依存性を有する第１のソース・レジスタ依存結果データ項目はデスティネーション・データ・ベクトル内の交互する位置の第１のセット内に格納され、第２のソース・レジスタ内容依存性を有する第２のソース・レジスタ依存結果データ項目はデスティネーション・データ・ベクトル内の交互する位置の第２のセット内に格納される、格納することとを含むベクトル・インタリーブ処理を実行するよう装置のデータ処理回路を制御するための制御信号を生成するステップとを含む。
【００２７】
少なくともいくつかの実施例は、装置を提供し、装置は、命令をデコードする手段と、入力データ・ベクトル内の個々の位置に複数の入力データ項目を含む入力データ・ベクトルへの命令によって指定されるベクトル処理演算を選択的に適用する手段と、装置の第１のソース・レジスタ、第２のソース・レジスタ、及びデスティネーション・レジスタを指定するベクトル・インタリーブ命令に応答して、第１のソース・レジスタからの入力データ項目の第１のセットを取り出すための手段と、第２のソース・レジスタからの入力データ項目の第２のセットを取り出すための手段と、入力データ項目の第１及び第２のセットから得られる少なくとも選択された入力データ項目対に対してデータ処理演算を実施して結果データ項目のセットを生成するための手段と、結果データ項目のセットを結果データ・ベクトルとしてデスティネーション・レジスタに格納するための手段であって、第１のソース・レジスタ内容依存性を有する第１のソース・レジスタ依存結果データ項目はデスティネーション・データ・ベクトル内の交互する位置の第１のセット内に格納され、第２のソース・レジスタ内容依存性を有する第２のソース・レジスタ依存結果データ項目はデスティネーション・データ・ベクトル内の交互する位置の第２のセット内に格納される、格納するための手段とを含むベクトル・インタリーブ処理を実行するよう装置のデータ処理回路を制御するための制御信号を生成する手段とを含む。
【００２８】
少なくともいくつかの実施例は、命令実行環境を提供するためのホスト・データ処理装置を制御するためのコンピュータ・プログラムを提供し、コンピュータ・プログラムは、命令をデコードするための命令デコード・プログラム・ロジックと、入力データ・ベクトル構造体内の個々の位置に複数の入力データ項目を含む入力データ・ベクトル構造体への命令によって指定されるベクトル処理演算を選択的に適用するためのデータ処理プログラム・ロジックとを含み、命令デコード・プログラム・ロジックは、第１のソース・データ構造体、第２のソース・データ構造体、及びデスティネーション・データ構造体を指定するベクトル・インタリーブ命令に応答して、第１のソース・データ構造体からの入力データ項目の第１のセットを取り出すことと、第２のソース・データ構造体からの入力データ項目の第２のセットを取り出すことと、入力データ項目の第１及び第２のセットから得られる少なくとも選択された入力データ項目対に対してデータ処理演算を実施して結果データ項目のセットを生成することと、結果データ項目のセットを結果データ・ベクトル構造体としてデスティネーション・データ構造体に格納することであって、第１のソース・データ構造体内容依存性を有する第１のソース・データ構造体依存結果データ項目はデスティネーション・データ・ベクトル構造体内の交互する位置の第１のセット内に格納され、第２のソース・データ構造体内容依存性を有する第２のソース・データ構造体依存結果データ項目はデスティネーション・データ・ベクトル構造体内の交互する位置の第２のセット内に格納される、格納することとを行うためのベクトル・インタリーブ処理を実行するようデータ処理プログラム・ロジックを制御するための制御信号を生成する。
【００２９】
少なくともいくつかの実施例は、上で言及したコンピュータ・プログラムを非一時的に記憶するコンピュータ可読記憶媒体を提供する。
【００３０】
いくつかの特定の実施例を次に図面を参照して説明する。
【００３１】
図１は本技法の様々な実例を具現化し得るデータ処理装置１０を概略的に図示している。装置は、それが実行する一連の命令に応答してデータ項目に対してデータ処理演算を実施するデータ処理回路１２を備える。これらの命令は、データ処理装置がアクセス権を有するメモリ１４から取り出され、当業者に馴染みのあるやり方でこの目的のためにフェッチ回路１６が設けられる。さらには、フェッチ回路１６によって取り出された命令は命令デコーダ回路１８を通過し、命令デコーダ回路１８は、処理回路１２並びにレジスタ２０のセット、及びロード／ストア・ユニット２２の、設定及び動作の様々な態様を制御するように構成される制御信号を生成する。一般的に、データ処理回路１２はパイプライン様式に構成することができるが、その詳細は本技法に関連性がない。当業者であれば図１が表す全体的な構成には馴染みがあるが、そのさらなる詳細な説明は、単に簡略化のためここでは省略する。図１から分かるように、レジスタ２０はそれぞれ複数のデータ要素についての記憶装置を備え、それによって処理回路はデータ処理演算を指定されたレジスタ内の指定されたデータ要素に適用することができるか、又はデータ処理演算を指定されたレジスタ内の指定されたデータ要素の群（「ベクトル」）に適用することができる。特に、図示されるデータ処理装置はベクトル化されたデータ処理演算のパフォーマンスに関連しており、特にベクトル・インタリーブ命令の実行にとって、レジスタ２０に保持されるデータ要素の観点から、そのさらなる説明をいくつかの具体的な実施例を参照して以下でより詳細に与える。命令の実行においてデータ処理回路１２によって必要とされるデータ値、及びそれらのデータ処理命令の結果として生成されるデータ値は、ロード／ストア・ユニット２２によって、メモリ１４に書き込まれ、メモリ１４から読み出される。図１のメモリ１４は一般的に、本技法の命令を記憶することができるコンピュータ可読記憶媒体の実例として、典型的には処理回路がその後に実行する所定の命令のシーケンスの一部（「プログラム」）として、見なされ得ることにも留意されたい。しかしながら処理回路は、ＲＡＭ内の、ＲＯＭ内の、ネットワーク・インターフェースを介して、などの、様々な異なるソースからそのようなプログラムにアクセスすることができる。本開示は、処理回路１２が実行することができる様々な新規な命令を説明しており、これらの命令の実行などをサポートするために以下の図面はこれらの命令の性質、データ処理回路における変形例のさらなる説明を与える。
【００３２】
図２Ａは、一実施例における、レジスタ及びデータ処理回路を概略的に図示している。この実例では、ソース・レジスタ３０（ソース０）及びソース・レジスタ３２（ソース１）並びにデスティネーション・レジスタ３４が示されている。この３つのレジスタのセットは、図示される処理を実行させる（コンポーネント間の適当な接続を可能にすることによって）ベクトル・インタリーブ命令で指定される。示されるように、入力データ要素の対が第１及び第２のソース・レジスタ内の隣接位置から取り出され、これらは個々の「演算」（ＯＰ：Ｏｐｅｒａｔｉｏｎ）回路３６、３８、４０、及び４２内でそれぞれに対して実行されるデータ処理演算へのオペランドを与えている。データ処理回路のこれらの項目によって実行される特定の演算は、様々な形態を取ることができるが、図２Ａで示される処理に対応する３つのレジスタの個々の位置においてデータ項目の実例の内容によって図２Ｂで示されるように、この実例では演算は排他的ＯＲである。しかしながら、他の実例では演算はあらゆる種類の算術演算（例えば、加算、乗算など）、論理演算（例えば、ＡＮＤ、ＯＲなど）、又はシフト演算（左又は右、またあらゆる適切な数のビット位置による）であり得る。データ演算回路からデスティネーション・レジスタ３４へ向かう結果データ経路によって示されるように、この処理によって生成される結果データ項目は、入力データ対の由来元であるソース・レジスタに依存してデスティネーション・レジスタ内の交互する位置に格納される。したがって、示される実例では、ソース・レジスタ３０からの結果データ項目は、奇数番号の位置１及び３に格納され、一方でソース・レジスタ３２から得られる結果データ項目は偶数番号の位置０及び２に格納される。これは、これらの奇数及び偶数の位置が反転するべく様々に設定されるベクトル・インタリーブ命令に応じて、様々に与えられ得ることを理解されたい。最後に、図２Ａ及び図２Ｂのレジスタのそれぞれは、データ入力値の２つの対がそれぞれのソース・レジスタから得られ、４つの結果データ項目がデスティネーション・レジスタに書き込まれることを示すよう図示されるが、図面の左手方面に向かう線の延長がこのベクトル化されたデータ処理のコンテキストにおいては、図示される処理のさらなる繰り返しが、提供される装置のベクトル処理能力の幅にわたって与えられ得ることを図示することに留意されたい。
【００３３】
図３Ａは、図２Ａ及び図２Ｂで示された実施例に類似する実施例におけるデータ処理回路及びレジスタを概略的に図示している。第１のソース・レジスタ４０及び第２のソース・レジスタ４２（ソース・レジスタ０及び１）並びにデスティネーション・レジスタ４４が示されている。必要とされるデータ処理演算（「ＯＰ」）４６、４８、５０、及び５２を実行するためのデータ処理回路がやはり示されている。この実例では図３Ｂで与えられる実例の内容によって図示されるように、演算は乗算である。先のように、この演算は、必要とされるあらゆる選ばれた算術、論理、又はシフト演算であることができる。図３Ａと図２Ａとの違いは、図３Ａはそれぞれのソース・レジスタから取り出されるそれぞれのデータ項目のサイズが、デスティネーション・レジスタ内に格納されたそれぞれ得られる結果データ値のサイズの半分である「拡大」演算の実施を図示していることである。ここでは入力データ項目がダブル（ｄ）であり、且つ結果データ項目がクワッド（ｑ）である実例を与える。これはバイナリ型浮動小数点形式であるため、ダブルの入力データ項目はそれぞれ６４ビット値、一方クワッド値はそれぞれ１２８ビット値である。これにより、この実例の演算が乗算である場合、図３Ｂの実例の内容をやはり参照して、示されている実例のデータ処理を実行することができ、したがって、この手法により拡大する、情報を損ねないキャリー無しの乗算を実行することが可能となる。また図３Ａの具体的な実例において、ダブルはソース・レジスタ内のそれぞれ１２８ビットのデータ項目の下位半分から得られ、これはこのデータ処理をトリガするベクトル・インタリーブ命令において指定可能であることにやはり留意されたい。データ項目の上位半分を得ることができる逆の実例もやはり与えることができる。一実例において、命令はこれをサポートするために２つの形式、「Ｔ」形式（上位半分の内容を使用させる）、及び「Ｂ」形式（下位半分の内容を使用させる）で提供される。事実、本技法は、データ項目のサイズをそのようなフォーマット、例えば、８ビットのバイト、１６ビットのハーフ、３２ビットのシングル、６４ビットのダブル、及び１２８ビットのクワッド、の広い範囲にわたって指定可能である、ベクトル・インタリーブ命令を提供する。そのようなソース・レジスタの能力及びデータ処理回路の向上として、さらなる拡張がもちろん可能である。図３Ａ及び図３Ｂの実例が拡大するデータ処理演算を与える場合、逆の機能もまた提供され、適切なデータ処理演算についてより狭い結果データ項目がより幅のあるソース・レジスタ入力データ項目から生成されることにやはり留意されたい。
【００３４】
図４Ａは、第１のソース・レジスタ６０及びデスティネーション・レジスタでもある第２のソース・レジスタ６２の、２つのレジスタのみが使用される別の実例を示している。換言すると、演算回路６４、６６、６８、及び７０のデータ処理によって生成される結果データ値は、ソース・レジスタ６２に格納し戻される。それによって、この実例は、第２のソース・レジスタ６２の内容が、結果データ項目がそれを上書きしてしまうと失われる点において「相殺的」であると言うことができる。このセット・アップについての実例の内容を図４Ｂに与えるが、ソース０の内容を示し、またデータ処理の前後両方のソース１の内容を示している。この実例において、データ処理はＸＯＲ演算であるが、上述の他の実例におけるように、これは必要とされるあらゆる種類の算術、論理、又はシフト演算であることができる。
【００３５】
図５Ａはさらなる実例の実施例を概略的に図示している。この実例ではソース・レジスタ８０、及び８２並びにデスティネーション・レジスタ８４が示されている。加えて、この実例では述語値８６もやはり示されている。この述語値は命令内で即値として指定することができるか、又はデータ処理装置内でのその記憶場所、例えば別のレジスタによって指定することができる。述語値のビット位置とデータ処理のレーンとの間に対応関係がある点において、データ処理に対する述語値の効果を図５Ａに見ることができる。したがって、述語値の２つのビットが設定（１）され、且つ２つのビットが設定解除（０）される場合、これはデータ処理回路項目８８、９０、９２、９４、９６、９８、１００及び１０２によって実施される処理を適宜効果的に切り替える。具体的には、示される実例では、項目９０、９４、９８及び１０２によってはどの処理も実施されず、一方８８、９２、９６及び１００は図２Ａ、図３Ａ、及び図４Ａを参照して上述したように演算を行う。図５Ａで示される実例では、図５Ｂで図示されるように、処理はＸＯＲ演算であるが、先のようにあらゆる算術、論理、又はシフト演算を同様に実施することができる。したがって、実際、デスティネーション・レジスタの内容は、アクティブなデータ処理回路（ＯＰユニット）から結果データ項目を受信するそれらの位置において修正されるだけであり、図５Ａにおいてはデスティネーション・レジスタ内の修正されない位置はハッチングされている。図５Ｂはデータ処理の前後両方のデスティネーション・レジスタの内容を示しており、ある位置の内容が変化しないことを実証している。
【００３６】
図６は、入力データ項目の対に対して異なる手法が取られる、さらなる実例の構成を概略的に図示している。ソース・レジスタ１１０、及び１１２並びにデスティネーション・レジスタ１１４が示されている。この実例において、対は２つのソース・レジスタにまたがっており、すなわち１つの入力オペランド・データ項目は第１のソース・レジスタから得られ、一方別の入力オペランド・データ項目は他のソース・レジスタから得られる。したがって、図６の実例では、データ項目Ａ０及びＡ２は第１のソース・レジスタから得られ、第２のソース・レジスタからのデータ項目Ｂ１及びＢ３と個々に対にされる。これらはデータ処理回路１１４及び１１６へ入力を与え、記されているようにＸＯＲ演算を実施するものと分かる（以前の実例のように、この演算は様々に定義することができる）。データ処理回路のこれらの２つの項目によって生成される結果データ項目は、デスティネーション・レジスタ１１４内で、実行されるデータ処理によって変更されないままであるデスティネーション・レジスタ１１４内の位置の第２のセットでインタリーブされる、２つの位置に格納される。図６の実例に関して、第１のソース・レジスタからの入力データ項目を与える偶数番号位置の選択と、第２のソース・レジスタ内の入力データ項目を与える奇数番号位置とは反転することができる、すなわち奇数番号項目が第１のソース・レジスタから由来し、偶数番号項目が第２のソース・レジスタから由来することを理解されたい。同様に、結果データ項目を書き込む偶数番号位置の選択は、代わりにデスティネーション・レジスタ内の変更されないデータ項目を有する奇数番号位置のセットになるように選択されてもよく、この時もちろん偶数番号位置を占有している。所与の命令内の適切なフラグによって、又はそれぞれのバージョン用に別個に定義される命令によってのいずれかで、すべてのこれらの並べ替えをサポートする命令を提供することができる。
【００３７】
次に、図７及び図８は、多項式乗算のコンテキストにおいて使用される本技法の一実例の実施例を図示して説明している。ここで、本技法は特に排他的ＯＲ演算を指定するベクトル・インタリーブ命令を提供し、さらにはこの排他的ＯＲ演算は図８の実例でＥＯＲＢＴ及びＥＯＲＴＢと称される２つのフォーマットで提供され、ここで最後の２文字「Ｂ」及び「Ｔ」は「ｂｏｔｔｏｍ」及び「ｔｏｐ」を指しており、要するに所与のデータ項目の下位半分及び上位半分であり、以下でより詳細に説明されるようなこれらが扱われるべきやり方を示している。これらの特定の命令は（ガロア域において）多項式乗算を加速するために有益である。さらに、この実例はキャリー無しの乗算の１つである。したがって、図７で示されるいくつかの定義で始まり、以下の通りになるようカラツバ手法が取られる：
｛Ｘ１，Ｘ０｝＊｛Ｙ１，Ｙ０｝＝Ｈ＿１２８｛Ｐ１，Ｐ０＾Ｐ１＾Ｑ１＾Ｒ１｝，
Ｌ＿１２８｛Ｑ１＾Ｐ０＾Ｑ０＾Ｒ０，Ｑ０｝
ここで：
｛Ｐ１，Ｐ０｝＝Ｘ１＊Ｙ１
｛Ｑ１，Ｑ０｝＝Ｘ０＊Ｙ０
｛Ｒ１，Ｒ０｝＝（Ｘ０＾Ｘ１）＊（Ｙ０＾Ｙ１）
さらに、ベクトルｚＸ及びｚＹを定義する：
ｚＸ＝｛．．．．．Ｘ１，Ｘ０｝  ａｎｄ  ｚＹ＝｛．．．．．Ｙ１，Ｙ０｝
【００３８】
次の命令シーケンス（上で言及したＥＯＲＴＢ及びＥＯＲＢＴ命令を使用して）を使用して、次いで必要な計算を実行することができる。
ＰＭＵＬＬＢ  ｚ１．ｑ，ｚＹ．ｄ，ｚＸ．ｄ  ／／ｚ１＝｛．．．．．Ｑ１，Ｑ０｝
ＰＭＵＬＬＴ  ｚ２．ｑ，ｚＹ．ｄ，ｚＸ．ｄ  ／／ｚ２＝｛．．．．．Ｐ１，Ｐ０｝
ＥＯＲＢＴ  ｚＸ．ｑ，ｚＸ．ｄ，ｚＸ．ｄ
ＥＯＲＢＴ  ｚＹ．ｑ，ｚＹ．ｄ，ｚＹ．ｄ
ＰＭＵＬＬＢ  ｚ３．ｑ，ｚＸ．ｄ，ｚＹ．ｄ  ／／ｚ３＝｛．．．．．Ｒ１，Ｒ０｝
ＥＯＲ  ｚ３．ｄ，ｚ３．ｄ，ｚ２．ｄ
ＥＯＲ  ｚ３．ｄ，ｚ３．ｄ，ｚ１．ｄ        ／／ｚ３＝｛．．．．．Ｐ１＾Ｑ１＾Ｒ１，Ｐ０＾Ｑ０＾Ｒ０｝
ＥＯＲＴＢ  ｚ１．ｑ，ｚ１．ｄ，ｚ３．ｄ
ＥＯＲＢＴ  ｚ２．ｑ，ｚ２．ｄ，ｚ３．ｄ
【００３９】
したがって、それぞれ１２８ビット幅の乗算の２５６ビットの結果は、レジスタｚ１とｚ２との間で分割され、ｚ１は下位１２８ビットを含み、ｚ２は上位１２８ビットを含むことに留意されたい。これは、例えば最小ベクトル長が１２８ビットである実装形態において効率的に機能し、したがって、この実例の命令（コード）のシーケンスはそのようなシステム内のあらゆる所与のベクトル長で機能することができる。図８はレジスタｚＸ、ｚＹ、ｚ１、ｚ２及びｚ３の、これらの命令が実行されてこれらの個々の下位１２８ビット（最終的にレジスタｚ１に入る）及び上位１２８ビット（最終的にレジスタｚ２に入る）を生成する際の、個々のデータ項目の内容を示す。
【００４０】
図９は、装置により本技法のベクトル・インタリーブ命令に遭遇する場合の、一実施例の方法で取られるステップのシーケンスを示す。フローは、ステップ２００から始まると考えることができるが、ここで命令デコーダ回路によって受信された命令のシーケンス内の次の命令がデコードされる。次いでステップ２０２で、これがベクトル・インタリーブ命令かどうか判断される。ベクトル・インタリーブ命令でない場合、フローはステップ２０４に進み、この他の種類の命令が適当に処理される（本明細書は他のタイプの命令は考慮しない）。しかしながら、ステップ２０２でこれがベクトル・インタリーブ命令であると分かると、フローはステップ２０６に進み、ここで入力データ項目が第１のソース・レジスタから取り出され、ステップ２０８で入力データ項目が第２のソース・レジスタから取り出される。先行する図面の説明を読んでいるため、ステップ２０６及び２０８は順序良く実行される必要がなく、実際に典型的には並列に実行され、図９では単純化のためにこれを順次的な様式で図示するだけであることが理解されよう。ステップ２１０において、このベクトル・インタリーブ命令によって定義されるデータ処理演算を、ベクトル・インタリーブ命令によって定義されるような入力データ項目の対を使用して実行され、ステップ２１２において、遭遇する特定のタイプのベクトル・インタリーブ命令に適当なように結果データ項目がデスティネーション・レジスタ内の交互する位置に格納される。次にフローは、ステップ２００に戻る。
【００４１】
図１０は別の実施例の方法で取られるステップのシーケンスを示しており、異なるタイプのベクトル・インタリーブ命令に遭遇し得る実施例のさらなる詳細を与える。フローはステップ２２０から始まり、命令デコーダ回路によって受信されたうちの次の命令がデコードされる。これがベクトル・インタリーブ命令ではないと分かると（ステップ２２２）、フローはステップ２２４を介して進み、この他のタイプの命令が適当に処理される（やはり、これは本開示が考慮するところではない）。これがベクトル・インタリーブ命令である場合、フローはステップ２２４に進み、これがベクトル・インタリーブ命令の「対方向(pairwise)」、又は「対角(diagonal)」のスタイルかどうか判断される。これが対方向のベクトル・インタリーブ命令である場合、フローはステップ２２６に進み、データ項目の対の第１のセットが第１のソース・レジスタから取り出され、データ項目の対の第２のセットが第２のソース・レジスタから取り出される（命令で指定される通り）。ステップ２２８において、これらの対は命令によって指定される必要とされる処理演算にかけられる。ステップ２３０において、データ項目の第１の対の結果はデスティネーション・レジスタ内の奇数位置に格納され、一方でデータ項目の対の第２のセットからの結果はデスティネーション・レジスタ内の偶数位置に格納される。ステップ２３０のカッコ内で示すように、この奇数と偶数の選択は反転することができる（例えば、対方向命令の２つの変数によって）。次にフローは、ステップ２２０に戻る。ステップ２２４に戻って考えると、代わりにこれが対角のベクトル・インタリーブ命令である場合、フローはステップ２２４からステップ２３２に進み、第１及び第２のソース・レジスタ内の対角線上で隣接する位置からの入力データ項目の対が取り出され、ステップ２３４においてこれらはベクトル・インタリーブ命令によって定義されるデータ処理演算にかけられる。次いでステップ２３６においてデータ処理演算の結果はデスティネーション・レジスタ内の奇数位置に格納され、偶数位置を修正されないままとする（変更無し）。図１０のステップ２３６においてカッコ付きの語句「偶数」及び「奇数」は、この奇数と偶数の選択は反転することができる（例えば、対角命令の２つの変数によって）ことを示している。次にフローは、ステップ２２０に戻る。
【００４２】
図１１は使用され得るシミュレータの実装形態を図示している。先に説明された実施例は考慮される技法をサポートする特定の処理ハードウェアを動作させるための装置及び方法の点で本発明を実装している一方、本明細書で説明される実施例にしたがっており、コンピュータ・プログラムの使用を通じて実装される命令実行環境を提供することも可能である。そのようなコンピュータ・プログラムは、それらがハードウェア・アーキテクチャのソフトウェアベースの実装形態を提供する限りにおいて、しばしばシミュレータと称される。シミュレータ・コンピュータ・プログラムの種類としては、エミュレータ、仮想マシン、モデル、及びダイナミック・バイナリ変換器を含むバイナリ変換器が挙げられる。典型的には、シミュレータ実装形態は、任意選択でホスト・オペレーティングシステム７２０を実行させ、シミュレータ・プログラム７１０をサポートする、ホスト・プロセッサ７３０上で実行することができる。いくつかの構成において、ハードウェアと提供される命令実行環境との間に複数のシミュレーションのレイヤ、及び／又は同一のホスト・プロセッサ上に設けられる複数の別個の命令実行環境があってもよい。歴史的には、適度な速度で実行するシミュレータ実装形態を提供するためにパワーのあるプロセッサが要求されてきたが、そのような手法は一定の状況下で正当化されてもよく、例えば互換性又は再使用目的のために別のプロセッサにとってネイティブなコードを実行する所望がある場合などである。例えば、シミュレータ実装形態は、ホスト・プロセッサ・ハードウェアによってサポートされていない追加的な機能性を伴う命令実行環境を提供すること、又は典型的には異なるハードウェア・アーキテクチャに関連付けられる命令実行環境を提供することができる。シミュレーションの概略はＲｏｂｅｒｔ  Ｂｅｄｉｃｈｅｋ、「Ｓｏｍｅ  Ｅｆｆｉｃｉｅｎｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｉｍｕｌａｔｉｏｎ  Ｔｅｃｈｎｉｑｕｅｓ」、１９９０年冬季ＵＳＥＮＩＸ  Ｃｏｎｆｅｒｅｎｃｅ、５３〜６３頁に示されている。
【００４３】
ある程度、その実施例は特定のハードウェア構築物又は特徴を参照して以前に説明されており、シミュレートされる実施例においては、等価な機能性が適切なソフトウェア構築物又は特徴によって提供され得る。例えば、特定の回路がコンピュータ・プログラム・ロジックとしてシミュレートされる実施例に実装されてもよい。同様に、レジスタ又はキャッシュなどのメモリ・ハードウェアが、ソフトウェア・データ構造体としてシミュレートされた実施例に実装されてもよい。以前に説明された実施例において参照されるハードウェア要素の１つ又は複数がホスト・ハードウェアに存在する構成（例えば、ホスト・プロセッサ７３０）において、いくつかのシミュレートされる実施例は適切であればホスト・ハードウェアを利用することができる。
【００４４】
シミュレータ・プログラム７１０はコンピュータ可読記憶媒体（非一時的媒体であってもよい）に記憶することができ、ターゲット・コード７００（アプリケーション、オペレーティング・システム、及びハイパーバイザを含み得る）にプログラム・インターフェース（命令実行環境）を提供するが、ターゲット・コード７００はシミュレータ・プログラム７１０によってモデリングされるハードウェア・アーキテクチャのアプリケーション・プログラム・インターフェースと同一のものである。したがって、上述のベクトル・インタリーブ命令を含むターゲット・コード７００のプログラム命令は、命令実行環境内からシミュレータ・プログラム７１０を使用して実行することができ、それによって、上で議論した装置２のハードウェア特徴を実際には有していないホスト・コンピュータ７３０がこれらの特徴をエミュレートすることができる。
【００４５】
簡単で全体的な概要としては、データ処理装置におけるベクトル・インタリーブ技法が装置、命令、装置を動作させる方法、及び仮想マシン実装形態を含んで開示される。ベクトル・インタリーブ命令は、第１のソース・レジスタ、第２のソース・レジスタ、及びデスティネーション・レジスタを指定する。入力データ項目の第１のセットは第１のソース・レジスタから取り出され、入力データ項目の第２のセットは第２のソース・レジスタから取り出される。データ処理演算は、入力データ項目の第１及び第２のセットから得られる選択された入力データ項目対に対して実施され、結果データ項目のセットを生成し、結果データ・ベクトルとしてデスティネーション・レジスタ内に格納される。第１のソース・レジスタ依存結果データ項目はデスティネーション・データ・ベクトル内の交互する位置の第１のセットに格納され、第２のソース・レジスタ依存結果データ項目はデスティネーション・データ・ベクトル内の交互する位置の第２のセットに格納される。
【００４６】
本出願において、語句「するように構成される」は、装置の要素が定義される動作を実行することができる構成を有することを意味するために使用される。この文脈において、「構成」はハードウェア又はソフトウェアの内部接続の、配置又はやり方を意味する。例えば、装置は定義される動作を提供する専用のハードウェアを有してもよく、又はプロセッサ若しくは他の処理デバイスは機能を実施するためにプログラムされてもよい。「するように構成される」は、定義される動作を提供するために装置要素がいかなるやり方でも変更される必要があることを含意するものではない。
【００４７】
図示的な実施例を本明細書において添付の図面を参照して詳細に説明してきたが、本発明はこれらの正確な実施例に限定されず、当業者により添付の特許請求の範囲によって定義されるような本発明の範囲及び趣旨を逸脱することなく、その様々な変形、付加、及び修正がそこになされ得ることを理解されたい。例えば、本発明の範囲を逸脱することなく、従属請求項の特徴と独立請求項の特徴との様々な組合せが可能である。
【図１】
2020527797.tif 000003
【図２Ａ】
2020527797.tif 000004
【図２Ｂ】
2020527797.tif 000005
【図３Ａ】
2020527797.tif 000006
【図３Ｂ】
2020527797.tif 000007
【図４Ａ】
2020527797.tif 000008
【図４Ｂ】
2020527797.tif 000009
【図５】
2020527797.tif 000010
【図６】
2020527797.tif 000011
【図７】
2020527797.tif 000012
【図８】
2020527797.tif 000013
【図９】
2020527797.tif 000014
【図１０】
2020527797.tif 000015
【図１１】
2020527797.tif 000016
【国際調査報告】
2020527797.tif 000017
2020527797.tif 000018
2020527797.tif 000019
2020527797.tif 000020