(57)【要約】装置が、１組のベクトルレジスタおよび１つまたは複数の制御レジスタと、処理回路とを含む。処理回路はスプライス命令を含む命令シーケンスを実行し、スライス命令は少なくとも１つのベクトルレジスタおよび少なくとも１つの制御レジスタを特定する。第１のベクトルレジスタは、データ要素からなる第１のベクトルを格納し、制御レジスタは、データ要素の第１のベクトル内で連続したデータ要素位置を占める１つまたは複数のデータ要素を特定する。処理回路はスプライス命令を実行するとき、制御レジスタ内の制御データによって特定される各データ要素を第１のベクトルから抽出し、そのデータ要素を、結果ベクトル内の連続するデータ要素位置に、結果ベクトルの第１の端を先頭として出力し、残りの結果ベクトルデータ要素に第２のベクトルからのデータ要素を出力する。
2018521426.tif 000002
【特許請求の範囲】
【請求項１】
１組のベクトルレジスタと、
１つまたは複数の制御レジスタと、
少なくとも第１のベクトルレジスタおよび少なくとも１つの制御レジスタを特定するスプライス命令を実行する処理回路であって、前記第１のベクトルレジスタが、データ要素からなる、あるベクトル長をもつ第１のベクトルを格納し、前記少なくとも１つの制御レジスタが、データ要素からなる前記第１のベクトル内の連続したデータ要素位置を占める１つまたは複数のデータ要素を前記ベクトル長とは無関係に特定する制御データを格納する、処理回路とを含む装置であって、
前記処理回路が、前記スプライス命令の実行に応答して、前記少なくとも１つの制御レジスタ内の前記制御データによって特定される各データ要素を前記第１のベクトルから抽出し、抽出された前記データ要素を、データ要素からなる結果ベクトル内に出力し、前記結果ベクトルが第２のベクトルからのデータ要素もさらに含む、
装置。
【請求項２】
前記処理回路が、抽出された前記データ要素を前記結果ベクトルの連続したデータ要素位置の中に前記結果ベクトルの第１の端を先頭として出力するように設計される、請求項１に記載の装置。
【請求項３】
前記スプライス命令がさらに、データ要素からなる第２のベクトルを格納する第２のベクトルレジスタを特定し、前記処理回路が前記スプライス命令の実行に応答して、前記結果ベクトルの、抽出された前記データ要素に占められていないデータ要素位置のそれぞれに、データ要素からなる前記第２のベクトルからデータ要素を入れる、請求項１または２に記載の装置。
【請求項４】
前記処理回路が、データ要素からなる前記第２のベクトルの第１の端を先頭として、前記結果ベクトルに連続的なデータ要素を入れるように設計される、請求項３に記載の装置。
【請求項５】
前記１つまたは複数の制御レジスタが、データ要素からなるベクトルの中の各データ要素位置に対する述語データを格納するために使用される述語レジスタを少なくとも１つ含み、
前記スプライス命令で特定される前記少なくとも１つの制御レジスタが前記少なくとも１つの述語レジスタのうち１つを含み、前記処理回路が、前記スプライス命令の実行に応答して、前記第１のベクトルから抽出すべき各データ要素を前記述語データから判断する、
請求項１から４のいずれかに記載の装置。
【請求項６】
前記述語データが、データ要素からなる前記第１のベクトルから前記１つまたは複数の抽出すべきデータ要素を判断するために使用される位置と長さの情報を提供する、請求項５に記載の装置。
【請求項７】
前記述語データが第１の抽出データ要素位置および最後の抽出データ要素位置を特定し、前記処理回路が前記第１の抽出データ要素位置と前記最後の抽出データ要素位置の間のデータ要素のシーケンスを前記抽出すべきデータ要素と判断する、請求項６に記載の装置。
【請求項８】
前記１つまたは複数の制御レジスタが、データ値を格納するための１つまたは複数のスカラーレジスタを含み、
前記スプライス命令で特定される前記少なくとも１つの制御レジスタが少なくとも１つのスカラーレジスタを含み、
前記処理回路が前記スプライス命令の実行に応答して前記第１のベクトルから抽出すべき各データ要素を判断するときに、前記特定された各スカラーレジスタ内のデータを使用する、
請求項１から７のいずれかに記載の装置。
【請求項９】
前記スプライス命令が第１および第２のスカラーレジスタを特定し、そこに格納されたデータ値が、データ要素からなる前記第１のベクトルから抽出すべき前記１つまたは複数のデータ要素を判断するために使用される位置と長さの情報を提供する、請求項８に記載の装置。
【請求項１０】
前記第１および第２のスカラーレジスタに格納された前記データ値が第１の抽出データ要素位置および最後の抽出データ要素位置を特定し、前記処理回路が前記第１の抽出データ要素位置と前記最後の抽出データ要素位置の間のデータ要素のシーケンスを前記抽出すべきデータ要素と判断する、請求項９に記載の装置。
【請求項１１】
前記スプライス命令で特定される前記少なくとも１つの制御レジスタが、前記少なくとも１つの述語レジスタのうち１つおよび前記スカラーレジスタのうち１つを含み、データ要素からなる前記第１のベクトルから抽出すべき前記１つまたは複数のデータ要素を判断するために、前記特定されたスカラーレジスタ内の前記データ値が前記特定された述語レジスタ内の前記述語データと組み合わせて使用される、請求項５に従属するときの請求項８に記載の装置。
【請求項１２】
前記第１のベクトルレジスタと前記第２のベクトルレジスタが同じベクトルレジスタである、請求項３に従属するときの請求項４から１１のいずれかに記載の装置。
【請求項１３】
前記第１のベクトルレジスタが、データ要素からなるベクトル内の各データ位置に述語データを格納するために使用される述語レジスタである、請求項１から１２のいずれかに記載の装置。
【請求項１４】
各データ要素が単一ビットを含む、請求項１３に記載の装置。
【請求項１５】
前記処理回路が前記スプライス命令を複数回の繰り返しのそれぞれで行うように設計され、各繰り返しで、前記スプライス命令によって特定される前記少なくとも１つの制御レジスタ内の制御データが、データ要素からなる前記第１のベクトルから抽出すべき、前の繰り返しの間に抽出するために特定された前記１つまたは複数のデータ要素とは異なる１つまたは複数のデータ要素を特定する、請求項１から１４のいずれかに記載の装置。
【請求項１６】
前記処理回路がベクトル再配列回路を含む、請求項１から１５のいずれかに記載の装置。
【請求項１７】
前記ベクトル再配列回路が、
データ要素からなる前記第１のベクトルに第１のシフト演算を行う第１のシフト回路およびデータ要素からなる前記第２のベクトルに第２のシフト演算を行う第２のシフト回路と、
前記第１および第２のシフト回路によるベクトル出力から前記結果ベクトルを生成する結合回路と、
データ要素からなる前記第１のベクトルから抽出すべき前記１つまたは複数のデータ要素を判断するために、前記少なくとも１つの制御レジスタ内の前記制御データを分析し、前記分析に依存して前記第１および第２のシフト回路の動作を制御する制御信号を発行する分析回路とを含む、
請求項３に従属するときの請求項１６に記載の装置。
【請求項１８】
前記ベクトル再配列回路が、
前記第１のシフト回路の出力した前記ベクトルに第１のマスク演算を行って第１のマスク済みベクトルを作成するための第１のマスク回路と、
前記第２のシフト回路の出力した前記ベクトルに第２のマスク演算を行って第２のマスク済みベクトルを作成するための第２のマスク回路とをさらに含み、
前記結合回路が前記第１および第２のマスク済みベクトルを結合させることにより前記結果ベクトルを生成する、請求項１７に記載の装置。
【請求項１９】
前記ベクトル再配列回路が、
データ要素からなる前記第１のベクトルおよびデータ要素からなる前記第２のベクトルから前記結果ベクトルを生成するプログラム可能なクロスバー回路と、
データ要素からなる前記第１のベクトルから抽出すべき前記１つまたは複数のデータ要素を判断するために前記少なくとも１つの制御レジスタを分析し、前記分析に依存して前記プログラム可能なクロスバー回路の動作を制御する制御信号を発行する分析回路とを備える、
請求項３に従属するときの請求項１６に記載の装置。
【請求項２０】
１組のベクトルレジスタと１つまたは複数の制御レジスタとを有する装置内でスプライス命令を実行する方法であって、
少なくとも第１のベクトルレジスタおよび少なくとも１つの制御レジスタを特定するスプライス命令を実行することを含み、前記第１のベクトルレジスタが、データ要素からなる、あるベクトル長をもつ第１のベクトルを格納し、前記少なくとも１つの制御レジスタが、データ要素からなる前記第１のベクトル内の連続したデータ要素位置を占める１つまたは複数のデータ要素を前記ベクトル長とは無関係に特定する制御データを格納し、
前記スプライス命令を実行することが、
前記少なくとも１つの制御レジスタ内の前記制御データによって特定される各データ要素を前記第１のベクトルから抽出することと、
抽出された前記データ要素を、データ要素からなる前記結果ベクトル内に出力することを含み、前記結果ベクトルが第２のベクトルからのデータ要素もさらに含む、方法。
【請求項２１】
１組のベクトルレジスタ手段と、
１つまたは複数の制御レジスタ手段と、
少なくとも第１のベクトルレジスタ手段および少なくとも１つの制御レジスタ手段を特定するスプライス命令を実行する処理手段であって、前記第１のベクトルレジスタ手段が、データ要素からなる、あるベクトル長をもつ第１のベクトルを格納し、前記少なくとも１つの制御レジスタ手段が、データ要素からなる前記第１のベクトル内の連続したデータ要素位置を占める１つまたは複数のデータ要素を前記ベクトル長とは無関係に特定する制御データを格納する、処理手段とを含む装置であって、
前記処理手段が、前記スプライス命令の実行に応答して、前記少なくとも１つの制御レジスタ手段内の前記制御データによって特定される各データ要素を前記第１のベクトルから抽出し、抽出された前記データ要素を、データ要素からなる結果ベクトル内に出力するためのものであり、前記結果ベクトルが第２のベクトルからのデータ要素もさらに含む、
装置。
【請求項２２】
非一時的コンピュータ可読記憶媒体に格納されたコンピュータプログラムであって、データ処理装置によって実行されると、請求項１に記載の装置に対応する命令実行環境を提供する仮想マシンを提供する、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技法はスプライス（splice）演算を行うための装置および方法に関する。
【背景技術】
【０００２】
現代のデータ処理システムでは、第１のベクトル内の一定数の連続したデータ要素を抽出してから、抽出したデータ要素を第２のベクトルからのデータ要素と共に結果ベクトル内に出力するように、スプライス演算を実行できると有用である。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
そのようなスプライス演算を行う効率的で柔軟な方法を提供することが望ましいと考えられる。
【課題を解決するための手段】
【０００４】
第１の構成例ではある装置が提供され、その装置は、１組のベクトルレジスタと、１つまたは複数の制御レジスタと、少なくとも第１のベクトルレジスタおよび少なくとも１つの制御レジスタを特定するスプライス命令を含む命令のシーケンスを実行する処理回路とを備えており、第１のベクトルレジスタは、データ要素からなる、あるベクトル長をもつ第１のベクトルを格納し、少なくとも１つの制御レジスタは、データ要素からなる第１のベクトル内の連続したデータ要素位置を占める１つまたは複数のデータ要素をベクトル長とは無関係に特定する制御データを格納し、処理回路はスプライス命令の実行に応答して、少なくとも１つの制御レジスタ内の制御データによって特定される各データ要素を第１のベクトルから抽出し、抽出したデータ要素を、データ要素からなる結果ベクトル内に出力し、結果ベクトルは第２のベクトルからのデータ要素もさらに含む。
【０００５】
別の構成例では、１組のベクトルレジスタと１つまたは複数の制御レジスタとを有する装置内でスプライス命令を実行する方法が提供され、この方法は、少なくとも第１のベクトルレジスタおよび少なくとも１つの制御レジスタを特定するスプライス命令を実行することを含み、第１のベクトルレジスタは、データ要素からなる、あるベクトル長をもつ第１のベクトルを格納し、少なくとも１つの制御レジスタは、データ要素からなる第１のベクトル内の連続したデータ要素位置を占める１つまたは複数のデータ要素をベクトル長とは無関係に特定する制御データを格納し、前記スプライス命令を実行することは、少なくとも１つの制御レジスタ内の制御データによって特定される各データ要素を第１のベクトルから抽出することと、抽出したデータ要素を、データ要素からなる結果ベクトル内に出力することとを含み、結果ベクトルは第２のベクトルからのデータ要素もさらに含む。
【０００６】
さらに別の構成ではある装置が提供され、その装置は、１組のベクトルレジスタ手段と、１つまたは複数の制御レジスタ手段と、少なくとも第１のベクトルレジスタ手段および少なくとも１つの制御レジスタ手段を特定するスプライス命令を含む命令のシーケンスを実行するための処理手段とを備えており、第１のベクトルレジスタ手段は、データ要素からなる、あるベクトル長をもつ第１のベクトルを格納するためのもので、少なくとも１つの制御レジスタ手段は、データ要素からなる第１のベクトル内の連続したデータ要素位置を占める１つまたは複数のデータ要素をベクトル長とは無関係に特定する制御データを格納するためのもので、処理手段は、スプライス命令の実行に応答して、少なくとも１つの制御レジスタ手段内の制御データによって特定される各データ要素を第１のベクトルから抽出し、抽出したデータ要素を、データ要素からなる結果ベクトル内に出力するためのものであり、結果ベクトルは第２のベクトルからのデータ要素もさらに含む。
【０００７】
代替構成例では、非一時的コンピュータ可読記憶媒体に格納されたコンピュータプログラムが提供され、そのプログラムはデータ処理装置によって実行されると、前述した第１の構成例の装置に対応する命令実行環境を提供する仮想マシンを提供する。
【０００８】
本技法について、添付図面に示される実施形態を参照しながら、単なる例として、さらに詳細に説明する。
【図面の簡単な説明】
【０００９】
【図１】一実施形態による装置のブロック図である。
【図２】実施形態の例によって、スプライス命令により行われる演算を概略的に示す。
【図３】実施形態の例によって、スプライス命令により行われる演算を概略的に示す。
【図４】実施形態の例によって、スプライス命令により行われる演算を概略的に示す。
【図５】一実施形態による、図１のベクトル再配列ユニットを示す図である。
【図６】一実施形態による、図２に概要を示した演算を図５のベクトル再配列ユニットをどのように使用して行うかを示す図である。
【図７】代替実施形態による、図１のベクトル再配列ユニットを示す線図である。
【図８】一実施形態による、スライディングウィンドウ演算を行うために、スプライス命令のシーケンスをどのように実行してもよいかを概略的に示す図である。
【図９Ａ】一実施形態による、データ要素からなる第１のベクトルから抽出すべき連続したデータ要素位置を占めるデータ要素をベクトル長とは無関係に特定するためにスプライス命令によって指定されてもよい制御レジスタの配置の例を示す図である。
【図９Ｂ】一実施形態による、データ要素からなる第１のベクトルから抽出すべき連続したデータ要素位置を占めるデータ要素をベクトル長とは無関係に特定するためにスプライス命令によって指定されてもよい制御レジスタの配置の例を示す図である。
【図９Ｃ】一実施形態による、データ要素からなる第１のベクトルから抽出すべき連続したデータ要素位置を占めるデータ要素をベクトル長とは無関係に特定するためにスプライス命令によって指定されてもよい制御レジスタの配置の例を示す図である。
【図９Ｄ】一実施形態による、データ要素からなる第１のベクトルから抽出すべき連続したデータ要素位置を占めるデータ要素をベクトル長とは無関係に特定するためにスプライス命令によって指定されてもよい制御レジスタの配置の例を示す図である。
【図１０】一実施形態で使用されてもよい仮想マシン実装を示す図である。
【発明を実施するための形態】
【００１０】
実施形態について添付図面を参照しながら考察する前に、実施形態の説明を下記に記載する。
【００１１】
一実施形態では、ある装置が提供され、その装置は１組のベクトルレジスタおよび１つまたは複数の制御レジスタをもつ。装置内の処理回路が命令のシーケンスを実行するように設計され、そのシーケンスはスプライス命令を含み、スプライス命令は、少なくとも第１のベクトルレジスタおよび少なくとも１つの制御レジスタを特定する。第１のベクトルレジスタは、データ要素からなる、あるベクトル長をもつ第１のベクトルを格納し、少なくとも１つの制御レジスタは、データ要素からなる第１のベクトル内の連続したデータ要素位置を占める１つまたは複数のデータ要素をベクトル長とは無関係に特定する制御データを格納する。スプライス命令を実行するとき、処理回路は、少なくとも１つの制御レジスタ内の制御データによって特定される各データ要素を第１のベクトルから抽出してから、抽出したデータ要素を、データ要素からなる結果ベクトル内に出力し、結果ベクトルは、第２のベクトルから抽出したデータ要素もまた含む。第２のベクトルは事前に定められていてもよいし、または、スプライス命令によって指定されてもよい。
【００１２】
本明細書では、「有効データ要素」という語句を、第１のベクトルから抽出すべきデータ要素として制御データによって特定されるデータ要素を示すためにも使用する。
【００１３】
少なくとも１つの制御レジスタ内の制御データはベクトル長を参照せずに有効データを特定するので、これにより、第１のベクトル内の有効データ要素をどのように選択するかについて、高い柔軟性が得られる。具体的には、スプライス命令によって定められるスプライス演算を行うときに、第１のベクトル内で連続したデータ要素位置を占める有効データ要素のどのようなシーケンスを選択してもよい。
【００１４】
そのような手法により、ベクトル長についての知識に頼ることなく有効データ要素の境界を指定することができる。その結果、さまざまな異なる装置の間で、そのような装置の１つが演算対象とするベクトルの長さが、別の装置の演算対象であるベクトルとは長さが異なる場合であっても、スプライス命令を使用することができる。その結果、前述した実施形態のスプライス命令がベクトル長に依存しないこと、また、したがって、プログラマがそのようなスプライス命令を使用して、第１のベクトルの一部と第２のベクトルの一部をベクトル長に依存しない方法でスプライス接合できることが分かる。
【００１５】
一実施形態ではデータ要素のサイズは明示されていなくてもよい。ただし、代替実施形態では、そのような情報をスプライス命令内に符号化することができ、よって、純粋に例として、データ要素のサイズを８、１６、３２、または６４ビットと特定してもよい。
【００１６】
一実施形態では、処理回路は、抽出したデータ要素を結果ベクトルの連続したデータ要素位置の中に結果ベクトルの第１の端を先頭として出力するように設計される。そのような設計では、その次に、第２のベクトルからのデータ要素が、第１のベクトルから抽出されたデータ要素に占められていない残りのデータ要素位置に入る。
【００１７】
一実施形態では、スプライス命令はさらに、データ要素からなる第２のベクトルを格納する第２のベクトルレジスタを特定する。次に処理回路がスプライス命令の実行に応答して、結果ベクトルの、抽出されたデータ要素に占められていないデータ要素位置のそれぞれに、データ要素からなる第２のベクトルからデータ要素を入れる。
【００１８】
結果ベクトルに入れるために第２のベクトルから選ばれるデータ要素は、さまざまな様式で選択されてもよい。ただし、一実施形態では、処理回路は、データ要素からなる第２のベクトルの第１の端を先頭として、結果ベクトルに連続的なデータ要素を入れるように設計される。
【００１９】
１つまたは複数の制御レジスタはさまざまな形をとることができるが、一実施形態では少なくとも１つの述語レジスタを含み、各述語レジスタを使用して、データ要素からなるベクトルの中の各データ要素位置に対する述語データを格納する。よって、述語レジスタ内の述語データはブーリアン(Boolean)（すなわち真／偽）条件からなるベクトルを指定し、関連する、データ要素からなるベクトルの中の各データ要素が、それらのブーリアン条件のうち１つに関連する。一実施形態では述語データ内の述語条件の項目数とその述語データによって制御される関連ベクトル内のデータ要素の数の間に１対１の関係があってもよいが、これは必須ではなく、代替実施形態では、述語データの単一の項目が提供する条件が、複数のデータ要素に適用されてもよい。さらに、一実施形態では述語データ内の各述語項目は単一ビットの形をとるが、各述語項目がただ１つのビットによって指定されるべきであるという要件はない。
【００２０】
制御レジスタのうちに少なくとも１つの述語レジスタが含まれるような実施形態では、スプライス命令で特定される少なくとも１つの制御レジスタは、そのような述語レジスタを１つ含み、処理回路は、スプライス命令の実行に応答して、第１のベクトルから抽出すべき各データ要素を述語データから判断してもよい。
【００２１】
そのような述語レジスタを使用することにより、ただ１つのレジスタを使用して個々の有効データ要素を指定することが可能である。よって、これにより、有効データ要素を特定するための符号化が格別に効率化される。また、多くの場合、システム内に備わる述語レジスタの数がスカラーレジスタ（有効要素を特定する制御データを指定するための代替手段として使用することもできる）よりも少なくなり、述語レジスタを特定するために必要な命令内のビットの数が少なくなるので、命令内の符号化効率がさらに改善される。加えて、述語データの性質に起因して、特定される有効データ要素がベクトルの端にまたがることは決してなく、よって、「ｏｕｔ  ｏｆ  ｒａｎｇｅ  ｉｎｄｅｘ」などの条件をチェックする必要が自動的に回避される。
【００２２】
述語データはさまざまな様式に設計することができるが、一実施形態では、データ要素からなる第１のベクトルから抽出すべきデータ要素を判断するために使用される、位置と長さの情報を提供する。述語データを使用すると有効データを柔軟に指定できるので、有効データ要素の先頭位置をベクトルレジスタ内のどのデータ要素位置としても特定することができ、さらに、有効データ要素の数はベクトル内の任意の所望の数であることができる。
【００２３】
本明細書において、スプライス命令を実行するときに特定される有効データ要素のシーケンスをスプライスセグメントと呼ぶ。スプライス命令によって指定される述語を使用してスプライス演算を制御することにより、ベクトル長に依存しないコードの中で、スプライスセグメントがベクトルの端に決してまたがらないようにしながらスプライス命令を使用することができる。
【００２４】
述語データによって位置と長さの情報を指定できる方法は、多数存在する。一実施形態では、述語データは第１の抽出データ要素位置および最後の抽出データ要素位置を特定し、処理回路は第１の抽出データ要素位置と最後の抽出データ要素位置の間のデータ要素のシーケンスを、抽出すべきデータ要素と判断する。述語データ内の各述語項目が単一ビットである実施形態の例を考えると、第１の抽出データ要素位置は、第１の値（例えば論理１値）にセットされた第１の述語ビットによって特定されてもよく、最後の抽出データ要素位置は、第１の値にセットされた最後の述語ビットによって特定されてもよい。間にある述語ビットの値はどれも無視される。
【００２５】
一実施形態では、スプライス命令の実行中に有効データ要素を特定するために必要な制御データは述語レジスタを参照して指定されてもよいが、代替実施形態では、異なる制御レジスタが使用されてもよい。具体的には、一実施形態では、１つまたは複数の制御レジスタは、データ値を格納するための１つまたは複数のスカラーレジスタを含んでもよい。そのような実施形態では、スプライス命令で特定される少なくとも１つの制御レジスタは少なくとも１つのスカラーレジスタを含み、処理回路はスプライス命令の実行に応答して第１のベクトルから抽出すべき各データ要素を判断するときに、特定された各スカラーレジスタ内のデータを使用する。
【００２６】
そのようなスカラーレジスタを使用して必要な制御データを提供する方法は、多数存在する。一実施形態では、スプライス命令は第１と第２のスカラーレジスタを特定し、そこに格納されたデータ値が、データ要素からなる第１のベクトルから抽出すべき１つまたは複数のデータ要素を判断するために使用される位置と長さの情報を提供する。
【００２７】
例えば、一実施形態では、第１と第２のスカラーレジスタに格納されたデータ値は第１の抽出データ要素位置と最後の抽出データ要素位置を特定し、処理回路は第１の抽出データ要素位置と最後の抽出データ要素位置の間のデータ要素のシーケンスを、抽出すべきデータ要素と判断する。代替実施形態では、スカラーレジスタのうち１つを使用して先頭位置を特定してもよく、他方のスカラーレジスタが、その位置を先頭とする有効データ要素に含まれるべきデータ要素の数を特定するスカラー値を提供してもよい。
【００２８】
さらに別の実施形態では、スプライス命令で特定される少なくとも１つの制御レジスタが述語レジスタとスカラーレジスタの両方を含んでもよく、データ要素からなる第１のベクトルから抽出すべき１つまたは複数のデータ要素を判断するために、特定されたスカラーレジスタ内のデータ値を、特定された述語レジスタ内の述語データと組み合わせて使用してもよい。例えば、スカラーレジスタと述語レジスタのどちらかを使用して先頭位置を特定し、次に他方のレジスタを使用して、末尾位置を示すか、または特定した開始位置を先頭として含ませる有効データの数を示す長さ情報を提供してもよい。
【００２９】
スプライス命令が第１のベクトルレジスタと第２のベクトルレジスタの両方を指定する複数の実施形態において、一実施形態では、第１のベクトルレジスタと第２のベクトルレジスタが同一のベクトルレジスタであるように指定することが可能である。そのような手法によって、スプライス命令を使って回転演算を行い、ベクトル内のデータ要素の出現順序を変更することが可能である。
【００３０】
一実施形態では、スプライス命令によって指定される第１のベクトルレジスタは（実際は、指定される場合には第２のベクトルレジスタも）、それ自体が、データ要素からなるベクトルの中に置かれた各データ要素に対する述語データを格納するために使用される、述語レジスタであってもよい。したがって、そのようなスプライス命令はデータ要素からなるベクトルオペランドに演算を行うためだけではなく、述語ベクトルに演算を行うために使用されてもよく、その場合、指定された制御レジスタ（それ自体が述語レジスタであってもよい）によって特定される制御データが、指定された述語ベクトル内の述語データの項目に関して行うべきスプライス演算を特定する。スプライス命令によって特定される第１のベクトルレジスタ自体が述語レジスタであるような一実施形態では、第１のベクトルレジスタ内の各データ要素は単一ビットを含んでもよく、その単一ビットは述語データの１つの項目を表す。
【００３１】
１つのユースケース例では、処理回路は複数回の繰り返しのそれぞれでスプライス命令を行うように設計されてもよく、各繰り返しで、スプライス命令によって特定される少なくとも１つの制御レジスタ内の制御データはデータ要素からなる第１のベクトルから抽出すべき１つまたは複数のデータ要素を特定し、そのデータ要素は、前の繰り返しの間に抽出するために特定された１つまたは複数のデータ要素とは異なる。そのような手法によって、一連のスプライス命令を使用して、指定されたベクトルオペランドでのスライディングウィンドウ演算を効率的に実施することが可能である。
【００３２】
スプライス命令を実行するために使用される処理回路はさまざまな形をとってもよいが、一実施形態では、ベクトル再配列回路を含む。
【００３３】
ベクトル再配列回路はさまざまな形をとることができるが、一実施形態では、データ要素からなる第１のベクトルに第１のシフト演算を行う第１のシフト回路と、データ要素からなる第２のベクトルに第２のシフト演算を行う第２のシフト回路と、第１および第２のシフト回路によるベクトル出力から結果ベクトルを生成する結合回路とを備える。加えて、データ要素からなる第１のベクトルから抽出すべき１つまたは複数のデータ要素を判断するために分析回路を使用して少なくとも１つの制御レジスタ内の制御データが分析され、その分析に依存して第１および第２のシフト回路の動作を制御する制御信号が発行される。よって、結合回路によって後に結合される修正済みのベクトルを作り出すために第１および第２のベクトルに適切なシフト演算を行うように、第１および第２のシフト回路の動作を、指定された制御レジスタによって提供される制御データに依存して制御することができる。一実施形態では、第１のベクトルに行われるシフトは、第２のベクトルに行われるシフトと逆方向になる。
【００３４】
結合回路はさまざまな形をとることができるが、一実施形態では、与えられた２つの入力ベクトルに論理ＯＲ演算を行うように設計され、これらのベクトルは第１および第２のシフト回路の出力から導出される。
【００３５】
一実施形態では、ベクトル再配列回路は、第１のシフト回路の出力したベクトルに第１のマスク演算を行って第１のマスク済みベクトルを作成するための第１のマスク回路と、第２のシフト回路の出力したベクトルに第２のマスク演算を行って第２のマスク済みベクトルを作成するための第２のマスク回路とを含み、結合回路は第１および第２のマスク済みベクトルを結合させることにより結果ベクトルを生成するように設計される。
【００３６】
よって、一実施形態ではスプライス命令によって定められるスプライス演算を実施するために必要な演算を、シフト演算およびＯＲ演算を（任意選択で、必要に応じ、追加のマスク演算と共に）使用して容易に行うことができ、シフト演算を並列に行うことができるということが分かる。
【００３７】
ただし、ベクトル再配列回路は必ずしもそのように構築されなくてもよく、実際には、ベクトル再配列回路のためにさまざまな他の構成が提供されてもよい。一設計例では、ベクトル再配列回路は、データ要素からなる第１のベクトルおよびデータ要素からなる第２のベクトルから結果ベクトルを生成するプログラム可能なクロスバー回路と、データ要素からなる第１のベクトルから抽出すべき１つまたは複数のデータ要素を判断するために少なくとも１つの制御レジスタを分析し、分析結果に依存してプログラム可能なクロスバー回路の動作を制御する制御信号を発行する分析回路とを備えてもよい。したがって、そのような実施形態では、第１のベクトルからの特定された有効データ要素と第２のベクトルからの必要な数のデータ要素との、必要なスプライスを行うように、クロスバー回路を必要に応じて分析回路の制御下で構成することができる。いくつかの実施形態では、装置内に他の目的のためにすでに備わっているクロスバー回路を再利用できることもある。
【００３８】
ここで、特定の実施形態について図面を参照しながら説明する。
【００３９】
図１は、本明細書に記載される実施形態の技法が使用されてもよいシステムのブロック線図である。図１に示される例では、システムはパイプライン型プロセッサの形をとる。命令キャッシュ１５（通常、レベル２キャッシュ５０などの１つまたは複数の別のレベルのキャッシュを介してメモリ５５に結合されている）からフェッチ回路１０によって命令がフェッチされ、そこから、復号回路２０へ命令が渡される。復号回路２０は、パイプライン型プロセッサ内部の下流の実行リソースを制御して各命令に必要な演算を行わせるために、その命令を復号して適切な制御信号を生成する。復号された命令を形成する制御信号が発行段回路２５に渡され、パイプライン型プロセッサ内の１つまたは複数の実行パイプライン３０、３５、４０、８０に対して発行される。
【００４０】
発行段回路２５は、演算に必要なデータ値を格納できるレジスタ群６０にアクセスすることができる。具体的には、ベクトルレジスタ群６５にベクトル演算のソースオペランドが格納されてもよく、スカラーレジスタ群７５にスカラー演算のソースオペランドが格納されてもよい。加えて、一定のベクトル演算を行うときに処理されるベクトルオペランドのデータ要素についての制御情報として使用するために、述語レジスタ群７０に１つまたは複数の述語が格納されてもよい。さらに、後に図９Ａから９Ｄを参照しながら例として考察するように、一定のベクトル演算を行っている間に使用するためのそのような制御情報を導出するために使用されるデータ値を格納するために、スカラーレジスタのうち１つまたは複数が使用されてもよい。
【００４１】
ソースオペランドおよび、関連する制御情報があれば、その制御情報を、経路４７を介して発行段回路へ送り、復号された各命令を実施するために行うべき演算を特定する制御信号と共に、適切な実行ユニットにディスパッチすることができる。図１に示されるさまざまな実行ユニット３０、３５、４０、８０は、ベクトルオペランドに演算を行うためのベクトル処理ユニットと仮定されるが、その装置によってサポートされるいずれかのスカラー演算の取り扱いが所望される場合には、別の実行ユニット（図示せず）を提供することができる。
【００４２】
さまざまなベクトル演算を考慮して、算術演算は、必要なソースオペランド（および、述語などの制御情報があれば、その制御情報）と共に、それらのソースオペランドに算術論理演算を行えるようにするために、例えば算術論理演算ユニット（ＡＬＵ）３０に転送され、結果値は通常、デスティネーションオペランドとして出力され、ベクトルレジスタバンク６５の指定されたレジスタに格納される。
【００４３】
ＡＬＵ３０に加えて、例えば、復号された浮動小数点演算に応答して浮動小数点演算を行うための浮動小数点ユニット（ＦＰＵ）および、ベクトルオペランドに一定の再配列演算を行うためのベクトル再配列ユニット８０などの、他の実行ユニット３５が提供されてもよい。さらに、メモリ５５からデータ値を（データキャッシュ４５および、レベル２キャッシュ５０などの介在する別のレベルのキャッシュがあれば、それらのキャッシュを介して）レジスタセット６０内の指定されたレジスタへロードする目的でロード演算を行うため、および、それらのレジスタからメモリ５５へデータ値を戻してストアする目的でストア演算を行うために、ロード／ストアユニット（ＬＳＵ）４０が使用される。
【００４４】
図１に示されるシステムは、命令のシーケンスがプログラム順に実行されるインオーダーの処理システムであってもよいし、あるいは、パフォーマンスの向上を追求する目的で、さまざまな命令が実行される順序を並べ替えることが許可されるアウトオブオーダーのシステムであってもよい。当業者には理解されるように、アウトオブオーダーのシステムでは、例えば、命令によって指定されるアーキテクチャ上のレジスタをレジスタバンク４５内の物理レジスタのプールの中の物理レジスタにマッピングするレジスタリネーミング回路（物理レジスタのプールは通常、アーキテクチャ上のレジスタの数より大きい）などの追加構造（図１には明示的には示されない）が提供され、それにより、一定の危険を排除することが可能になり、アウトオブオーダー処理のさらなる利用が促進される。加えて、アウトオフオーダー実行を追跡するため、および、さまざまな命令の実行の結果を元のプログラム順序で送り出すために、通常、リオーダバッファが提供される。
【００４５】
記載される実施形態では、図１の回路はベクトルレジスタ群６５に格納されたベクトルオペランドにベクトル演算を実行するように設計され、ベクトルオペランドは複数のデータ要素を含む。そのようなベクトルオペランドに行われる一定のベクトル演算（算術演算など）について、必要な演算が、ベクトルオペランドの中のさまざまなデータ要素に並列に（または反復して）施されてもよい。特定のベクトル演算についてベクトル内のどのデータ要素が有効データ要素であるのか、したがって、どのデータ要素に演算を適用すべきかを特定するために、述語情報が使用されてもよい。
【００４６】
一実施形態では、図１の回路によって実行される命令のシーケンスは、少なくとも１つのスプライス命令を含んでもよい。各スプライス命令は、ベクトルレジスタバンク６５内の少なくとも第１のベクトルレジスタおよび少なくとも１つの制御レジスタを特定する。制御レジスタは、述語レジスタ群７０のうちの１つの形をとってもよく、あるいは、後に考察するように、スカラーレジスタ群７５のうちの１つもしくは複数によって、または述語レジスタとスカラーレジスタの組み合わせによって指定されてもよい。そのようなスプライス命令が復号回路２０によって復号されると、そのスプライス命令に必要なスプライス演算を実施するために、続いて発行段回路２５が適切な制御信号をベクトル再配列ユニット８０に対して発行して、必要な演算が行われるようにする。具体的には、その少なくとも１つの制御レジスタによって指定される制御データを使用して、そのスプライス命令によって指定される、データ要素からなる第１のベクトル内で、連続したデータ要素位置を占める１つまたは複数の有効データ要素が特定される。制御データは、その制御データがベクトル長とは無関係に有効データ要素を特定するように、したがって、ベクトル長を参照することなくそれらの有効データ要素を特定できるように編成される。第１のベクトル内の有効データ要素を特定し終えると、次にベクトル再配列ユニットがそれらの有効データを第１のベクトルから抽出して結果ベクトル内に出力し、結果ベクトル内の残りのデータ要素位置が第２のベクトルからのデータ要素で埋められる。第２のベクトルは事前に定められていてもよいし、または、スプライス命令によって指定されてもよい。
【００４７】
図２は、スプライス命令および、その結果行われる演算の一例を示す。具体的には、スプライス命令はベクトルレジスタバンク６５の中から２つのベクトルソースレジスタ１００、１０５を指定し、さらに述語レジスタ群７０の中から述語レジスタ１１０を指定する。この述語レジスタはＰｓｐレジスタと称され、その述語レジスタの内容がスプライス制御データを含むことを表す。図２に、述語データの一例を示す。具体的には、この実施形態では、述語データの中で最初と最後に出現する論理１値を使用して、スプライスセグメント１１５が特定される。一実施形態では、その２つの論理１値の間に介在する述語値は重要ではなく、論理１または論理０のどちらであることもできる。
【００４８】
よって、最初と最後の論理１値が関連する第１のソースベクトル１００内の最初と最後の有効データ要素位置を特定すると考えることができる。よって、この例では、データ要素位置を右から数えると、図２の述語レジスタ１１０内の特定の述語例は、第１と第２の有効データ要素のデータ要素位置としてデータ要素位置２と４を特定する。したがって、ベクトル再配列ユニットは第１のベクトル１００の位置２、３、４からデータ要素を抽出し、それを、指定されたデスティネーションベクトルレジスタ１２０内の所定の位置に出力する。この実施形態では、抽出された値を使用して、デスティネーションベクトル１２０の最下位データ要素位置を先頭としてデータ要素位置１２５が占められるが、代替の実施形態では、例えばデスティネーションベクトル内の最上位の一定数の桁のビット位置などの、別の位置を占めることもできることが理解される。次に、デスティネーションレジスタ１２０内の残りのデータ要素位置１３０が、ベクトル再配列ユニットによって、第２のソースベクトルレジスタのデータ要素位置０を先頭として、第２のソースベクトルレジスタからのデータ要素で埋められる。図２に示したように、ベクトル再配列ユニット８０からの出力結果ベクトル１２０の形は、”ｍｌｋｊｉｅｄｃ”となる。
【００４９】
図２を見れば分かるように、有効データ要素を特定するために必要な位置と長さの情報はベクトル長とは無関係に指定されるので、ベクトル長を知らなくても述語から判断することができる。スプライスはソースベクトルレジスタのどの位置からでも、どのような長さでも行うことができ、特に、ベクトルの片方の端に揃える必要はない。
【００５０】
一実施形態では、ベクトル長（すなわち、各ベクトル内のデータ要素の数）およびデータ要素のサイズは明示されていなくてもよい。ただし、別の実施形態では、そのような情報を命令の中に符号化することができる。例えば、データ要素サイズ（例えば、８、１６、３２、または６４ビット）を特定する情報を命令の符号化に含ませることもでき、後に、命令で参照されるベクトルレジスタのサイズと指定されたデータ要素サイズからベクトル長が判断される。
【００５１】
さらに、図２の例では、述語レジスタとソースベクトルレジスタの要素数は同じなので、ｏｕｔ  ｏｆ  ｒａｎｇｅ  ｉｎｄｅｘ条件の境界事例は自動的に処理され、よって、この命令は、この形ではｏｕｔ  ｏｆ  ｒａｎｇｅ  ｉｎｄｅｘ例外を引き起こさない。
【００５２】
さらに、そのようなスプライス命令を汎用ライブラリコードで使用することができる。その理由は、アクセス可能なベクトル長に基づいて、または、プログラマもしくはアルゴリズムからの要求に応じて動的に述語を組み立てることができるからである。述語をそのように指定してスプライス命令を使用すると、指定された述語レジスタ内の述語データによって２つの部分の位置と長さを制御しながら、異なるベクトルレジスタのそれぞれ一部分をベクトル長に依存しない様式で連結することができる。
【００５３】
図２の例では第１と第２のソースベクトルはベクトルレジスタ群６５内に保持されている、データ要素からなるベクトルを含むが、代替の実施形態では、第１と第２のベクトルレジスタは実際には、図３に概略的に示されるように、述語レジスタセット７０内の述語を指定してもよい。この例では、ソースベクトルレジスタはそれぞれ、２つのソース述語レジスタ１４０、１４５によって示される、述語項目からなるベクトルを表す。前述した例と同様に、次にスプライス述語レジスタ１５０が述語を提供し、これを使用して、第１のソースレジスタ１４０内の有効データ要素を特定するスプライスセグメント１５５が特定される。その結果、特定された有効データ要素（この例では、各データ要素は単一ビットの値である）がデスティネーション述語レジスタ１６０の部分１６５に出力され、残りの部分１７０は、第２のソースレジスタのデータ要素位置０を先頭として、第２のソースレジスタ１４５からのデータ要素で埋められる。
【００５４】
さらに、図４に示されるように、同じレジスタ１７５を第１のベクトルレジスタと第２のベクトルレジスタの両方として指定することにより、スプライス命令を使用して回転を行うことができる。この例では、スプライス述語１８０は、ソースレジスタ１７５内の一定数の最上位データ要素位置を含むスプライスセグメントを特定する。よって、これらのデータ要素が結果レジスタ１８５の最下位データ要素位置に移され、残りのデータ要素位置は、最下位データ要素を先頭として、ソースレジスタの内容によって埋められる。
【００５５】
スプライス命令の実行中に前述したスプライス演算を行うために使用されるベクトル再配列ユニット８０は、さまざまな形をとることができる。一設計例が図５に示され、この例では、ベクトル再配列ユニットは、ベクトルソースレジスタ２００、２０５のうち１つにそれぞれが関連する２つのシフト／回転回路ブロック２１５、２２０と、関連するマスク回路２２５、２３０と、２つのマスク回路からの出力を結合させる結合回路２３５とを含み、この例では、結合回路は論理ＯＲ回路２３５の形をとる。ＯＲ回路２３５からの出力は、デスティネーションレジスタ２４５に格納される。ベクトル再配列ユニット８０は、スプライス述語レジスタ２１０によって指定される述語データを受け取る述語分析回路２４０をさらに含む。具体的には、述語データを解析してスプライスセグメントが特定され、これを使用してシフト／回転回路２２０のための適切な制御信号が作成される。具体的には、スプライスセグメントによって特定される有効データ要素をある数のデータ要素位置に最下位データ要素位置を先頭として移動させるために十分な右シフトを、シフト／回転回路２２０に行わせる。逆に、シフト／回転回路２１５は、第２のソースレジスタ内の一定数の最下位データ要素を結果ベクトルの残りのデータ要素位置に移動させるために十分な左シフトを行うように設計される。
【００５６】
述語分析回路２４０はさらに、２つのマスク回路２２５、２３０に対する制御信号を作成して、２つのシフト／回転回路２５０、２２０からの出力内の不要なデータ要素が確実に所定の値にセットされるようにする。例えば図５に示される、結合回路がＯＲ回路２３５の形をとる例では、不要なデータ要素はすべてゼロにセットされる。次にＯＲ回路はマスク回路の出力に論理ＯＲ演算を行い、結果ベクトルレジスタ２４５に格納される結果ベクトルを生成する。
【００５７】
図６は、先に図２を参照しながら考察した演算を図５の回路を使用して行う様子を示す。具体的には、述語分析回路２４０が、シフト／回転回路２２０にデータ要素位置２つ分の右シフトを行わせる。このシフトの数はスプライス述語レジスタ２１０によって指定される述語内の上位のゼロの数に基づいて判断される。逆に、シフト／回転回路２１５は３つ分の左シフトを行い、このシフトの数は述語内のスプライスセグメントの長さに基づいて判断される両方のシフト／回転回路２１５、２２０の出力が図６に示されている。文字ｘは、そのデータ要素位置のデータ要素がドントケア状態であることを示す。具体的には、これらのデータ要素の値が何であるかに関わらず、これらのデータ要素値は関連するマスク回路２２５、２３０によってマスキングされる。
【００５８】
述語分析回路２４０はマスク回路２３０に、マスクの右側３ビットがセットされるように制御信号を送り、それにより、それ以外のデータ要素が０値にセットされて、このマスク回路からデータ要素ｅｄｃが出力される。図６のマスク回路の出力に示されたゼロ値は単一のビット値ではなく、各ゼロは対応するデータ要素がオールゼロの値であることを示し、通常、対応するデータ要素は単一ビットではないということに留意すべきである。例えば、一実施形態では、ベクトル内の各データ要素の長さは１バイトである。マスク回路２３０に与えられる制御信号は、述語分析回路２４０によって述語レジスタ２１０の述語データから判断されるスプライスセグメントのサイズによって判断され、この例ではスプライスセグメントの長さはデータ要素３つ分である。
【００５９】
マスク回路２３０のためのマスク制御信号を生成し終えると、述語分析回路は、マスク回路２２５により実施されるマスクがマスク回路２３０により施されるマスクの逆になるように、マスク回路２２５のために適切な制御信号を生成する。その結果、マスク回路２２５からの出力は、図６に示すとおりになる。次にＯＲ回路２３５が２つの入力ベクトルに論理ＯＲ演算を行って、図６のデスティネーションレジスタ２４５の中に示される出力ベクトルｍｌｋｊｉｅｄｃを作成する。
【００６０】
上記の説明から、必要なベクトル再配列回路をシフト、マスク、およびＯＲの回路ブロックを使用して効率的に構築することができ、シフト演算を並列に（実際にはマスク演算であることができる）行えることが理解される。ただし、ベクトル再配列ユニットは、これ以外の多くの代替の形をとることができる。図７に特定の一例が示され、この例ではベクトル再配列ユニット８０は、クロスバー２６０とも呼ばれるプログラム可能な回路網を含み、この回路網の動作は述語レジスタ２１０により与えられる述語データの分析に基づき述語分析回路２７０によって制御される。次に述語分析回路２７０は、述語データにより特定されるスプライスセグメントの特定結果に基づいて、結果ベクトルレジスタ２４５に格納される結果ベクトル内の必要な出力データ要素位置にソースレジスタ２００、２０５の両方から適切なデータ要素が提供されるように、プログラム可能なクロスバーを構成することができる。
【００６１】
図８は、先に説明したスプライス命令を使用してスライディングウィンドウ演算を実施する様子を示し、具体的には、繰り返しごとに異なる述語データを使用してスプライス命令を実行することによってそれを実施する。まず、２つのソースレジスタ３００、３０５にソースベクトルをロードする。この例では、各ソースベクトルは８つのデータ要素を含む。この例では、ソースレジスタから一度に３つのデータ要素を抽出したいと仮定する。最初の繰り返しで、すべて１にセットされたスプライス述語でスプライス命令が実行され、その結果、ソースレジスタ３００の内容がデスティネーションレジスタ３１０内に格納される。その後に続く繰り返しは、レジスタ３１０の最下位の３つのデータ要素位置を占める３つのデータ要素に行うことができ、それ以外のデータ要素は無視される。
【００６２】
次の繰り返しでは述語１１１１１０００でスプライス命令が行われ、その結果、デスティネーションレジスタ３１５には図８に示されるデータ要素が入る。具体的には、最下位の３つのデータ要素位置にはデータ要素ｆｅｄが入っており、したがって、それらのデータ要素を、レジスタ３１５のそれ以外のデータ要素を無視して、後続の演算に供することができる。
【００６３】
３回目の繰り返しでは、スプライス述語１１００００００でスプライス命令が行われる。これにより、第１のソースレジスタ３００からはデータ要素ｇとｈだけが抽出され、デスティネーションレジスタ３２０内のそれ以外のデータ要素は、第２のソースレジスタ３０５から提供される。現在、デスティネーションレジスタ３２０内の下位３つのデータ要素位置にはデータ要素ｉｈｇが含まれており、後続の演算では、レジスタ３２０内の別の内容を無視して、これらの要素に演算を行うことができる。したがって、そのようにスプライス命令を使用すると、スライディングウィンドウ型の演算を行うために特に効率的な実装が得られ、このケースではウィンドウは３つのデータ要素からなるブロックを特定する。
【００６４】
図８に示される３回目の繰り返しの後、スライディングウィンドウ演算を続行する必要があれば、２つのソースレジスタ３００、３０５の内容を更新しなければならない。具体的には、一例では、第２のソースレジスタ３０５の元の内容を第１のソースレジスタ３００に移動させて、別のベクトルデータを第２のソースレジスタにロードする。次の繰り返しでは、スプライス命令をスプライス述語１１１１１１１０で行うことができ、それにより、結果ベクトルの最下位の３つのデータ要素位置はデータ要素ｌｋｊによって占められる。
【００６５】
上記の例では、スプライス命令に必要なスプライス制御情報は、図９に述語レジスタ３５０に関連して示される例のとおりに、単一の述語レジスタによって指定される。図９Ａの例では、述語は図２を参照しながら考察したものと同じ形をとると仮定される。ただし、代替実施例では、スプライス命令は必要な制御情報を多数の異なる様式で指定することができる。例えば、図９Ｂに示されるように、必要なスプライス制御情報を２つのスカラーレジスタ３５５、３６０の内容を使用して指定することが可能なこともある。図９Ｂに示される例では各スカラーレジスタがスカラー値を格納しており、第１のスカラーレジスタは先頭のデータ要素位置を指定し、第２のスカラーレジスタは末尾のデータ要素位置を特定する。図９Ａの例に合わせれば、第１のスカラーレジスタはデータ要素位置２を特定し、第２のスカラーレジスタはデータ要素位置４を特定する。代替実施形態では第２のスカラーレジスタは末尾位置ではなく長さを指定するように設計されてもよいことが理解される。
【００６６】
図９Ｃに示されるように、代替実施形態では、述語レジスタとソースレジスタの組み合わせを使用して必要なスプライス制御情報を指定してもよい。図９Ｃに示される例ではソースレジスタ３６５が先頭のデータ要素位置を特定し、この例ではその位置はデータ要素位置２である。スプライス述語レジスタ３７０は、末尾のデータ位置（図９Ｃに示されるように、この例では４）を特定してもよいし、あるいは、長さ（この例では３）を指定することもできる。述語レジスタ３７０が長さを特定するように設計し、スカラーレジスタ３６５が先頭位置を特定するように設計すると、図８のスライディングウィンドウ設計などのいくつかの実施形態では有用な場合がある。具体的には、スプライス命令の各回の繰り返しで、長さは毎回３なので、述語レジスタの内容を更新する必要がなくなり、代わりに、新しい先頭のデータ要素位置を特定するために、各回の繰り返しでスカラーレジスタのみを更新することもできる。
【００６７】
図９Ｄはさらに別の代替例を示し、ここではスカラーレジスタ３７５が長さ（この例では３）を定め、述語レジスタ３８０が先頭の要素位置（この例では２）を特定する。
【００６８】
図９Ｂから９Ｄのいずれかの制御レジスタの形を使用する場合は、図５から７の分析回路２４０、２７０はもはや述語分析を行わず（または単に行うだけ）、必要な制御データを提供するスカラーレジスタがあれば、その分析を行うことが理解される。
【００６９】
上記の実施形態から、上に説明したスプライス命令を実行するように装置を設計することにより、スプライス命令を行うときに、指定された制御データがベクトル長を参照することなく有効データを特定し、連続するデータ要素位置を占める任意の有効データのシーケンスを選択できるので、第１のベクトル内で有効データをどのように選択するかについて高い柔軟性が得られることが分かる。ベクトル長を知っていることに依存することなく有効データ要素の境界を指定することができるので、その結果、それぞれの装置が同じ長さのベクトルを演算対象とするかどうか、または装置のいくつかが一定の他の装置が演算対象とするベクトルとは長さの異なるベクトルを演算対象とするかどうかに関わらず、さまざまな異なる装置でスプライス命令を使用することができる。したがって、結果のスプライス演算をベクトル長に依存しない様式で行うことができるので、そのようなスプライス命令を汎用ライブラリコードで容易に使用できるようになる。上に説明したスプライス命令は、例えば、フィルタ、文字列処理、疎配列の処理などのスライディングウィンドウ演算を使用するアルゴリズムなどの、多くの状況で有用である。また、スプライス命令は、命令セット内にベクトル要素の回転／シフト命令を明示的にもつ必要に取って代わる。
【００７０】
図１０は、使用されてもよい仮想マシン実装を示す。前述した実施形態は本発明を、関連技法をサポートする特定の処理ハードウェアを動作させるための装置および方法の観点から実装するが、ハードウェアデバイスのいわゆる仮想マシン（virtual machine）実装を提供することも可能である。これらの仮想マシン実装は、仮想マシンプログラム４０５をサポートするホストオペレーティングシステム４１０を実行するホストプロセッサ４１５上で実行する。通常、合理的な速度で実行する仮想マシン実装を提供するには大型で強力なプロセッサが必要だが、そのような手法は、互換性または再利用の理由から別のプロセッサ用のネイティブのコードを実行させるための要望がある場合などの、特定の状況では正当化されてもよい。仮想マシンプログラム４０５はアプリケーションプログラム４００にアプリケーションプログラムインタフェースを提供し、それは、仮想マシンプログラム４０５によってモデル化される実際のハードウェアデバイスによって提供されるアプリケーションプログラムインタフェースと同じものである。よって、プログラム命令は、前述したスプライス命令を含め、仮想マシンプログラム４０５を使用して仮想マシンハードウェアとのインタラクションをモデリングするアプリケーションプログラム４００の中から実行されてもよい。
【００７１】
本出願において、「〜ように構成される」という表記は、装置の要素が、定められた動作を行うことが可能な構成を有することを意味するために使用される。この文脈において、「構成」は、ハードウェアまたはソフトウェアの相互接続の配置または様式を意味する。例えば、装置が定められた動作を提供する専用のハードウェアを有してもよいし、または、プロセッサもしくは他の処理デバイスがその機能を行うようにプログラムされてもよい。「〜ように構成される」とは、定められた動作を提供するために、その装置の要素を変更する必要が一切ないことを暗に示す。
【００７２】
本明細書では本発明の説明的な実施形態について、添付の図面を参照しながら詳しく説明してきたが、本発明がそれらの厳密な実施形態に制限されず、当業者によって、添付の特許請求の範囲によって定められる本発明の範囲および趣旨を逸脱することなく、さまざまな変更、追加、修正がそこに加えられてもよいことが理解される。例えば、本発明の範囲を逸脱することなく、従属請求項の特徴のさまざまな組み合わせが独立請求項の特徴と共に作成されることもできる。
【図１】
2018521426.tif 000003
【図２】
2018521426.tif 000004
【図３】
2018521426.tif 000005
【図４】
2018521426.tif 000006
【図５】
2018521426.tif 000007
【図６】
2018521426.tif 000008
【図７】
2018521426.tif 000009
【図８】
2018521426.tif 000010
【図９Ａ】
2018521426.tif 000011
【図９Ｂ】
2018521426.tif 000012
【図９Ｃ】
2018521426.tif 000013
【図９Ｄ】
2018521426.tif 000014
【図１０】
2018521426.tif 000015
【国際調査報告】
2018521426.tif 000016
2018521426.tif 000017
2018521426.tif 000018
2018521426.tif 000019