特許第6971220号(P6971220)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アーム・リミテッドの特許一覧

特許6971220スプライス演算を行うための装置および方法
<>
  • 特許6971220-スプライス演算を行うための装置および方法 図000002
  • 特許6971220-スプライス演算を行うための装置および方法 図000003
  • 特許6971220-スプライス演算を行うための装置および方法 図000004
  • 特許6971220-スプライス演算を行うための装置および方法 図000005
  • 特許6971220-スプライス演算を行うための装置および方法 図000006
  • 特許6971220-スプライス演算を行うための装置および方法 図000007
  • 特許6971220-スプライス演算を行うための装置および方法 図000008
  • 特許6971220-スプライス演算を行うための装置および方法 図000009
  • 特許6971220-スプライス演算を行うための装置および方法 図000010
  • 特許6971220-スプライス演算を行うための装置および方法 図000011
  • 特許6971220-スプライス演算を行うための装置および方法 図000012
  • 特許6971220-スプライス演算を行うための装置および方法 図000013
  • 特許6971220-スプライス演算を行うための装置および方法 図000014
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6971220
(24)【登録日】2021年11月4日
(45)【発行日】2021年11月24日
(54)【発明の名称】スプライス演算を行うための装置および方法
(51)【国際特許分類】
   G06F 9/315 20060101AFI20211111BHJP
   G06F 9/345 20060101ALI20211111BHJP
   G06F 9/38 20060101ALI20211111BHJP
【FI】
   G06F9/315 S
   G06F9/345 S
   G06F9/315 M
   G06F9/38 310G
【請求項の数】21
【全頁数】20
(21)【出願番号】特願2018-503761(P2018-503761)
(86)(22)【出願日】2016年6月15日
(65)【公表番号】特表2018-521426(P2018-521426A)
(43)【公表日】2018年8月2日
(86)【国際出願番号】GB2016051772
(87)【国際公開番号】WO2017021677
(87)【国際公開日】20170209
【審査請求日】2019年6月7日
(31)【優先権主張番号】1513497.6
(32)【優先日】2015年7月31日
(33)【優先権主張国】GB
(73)【特許権者】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】特許業務法人浅村特許事務所
(72)【発明者】
【氏名】スティーブンス、ナイジェル ジョン
(72)【発明者】
【氏名】エアペン、ジェイコブ
(72)【発明者】
【氏名】エヨール、ムボウ
【審査官】 三坂 敏夫
(56)【参考文献】
【文献】 特表2005−508043(JP,A)
【文献】 米国特許出願公開第2004/0098556(US,A1)
【文献】 特表2007−528545(JP,A)
【文献】 国際公開第2005/088441(WO,A1)
【文献】 国際公開第2014/031129(WO,A1)
【文献】 米国特許出願公開第2014/0281372(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/30 −9/42
(57)【特許請求の範囲】
【請求項1】
1組のベクトルレジスタと、
1つまたは複数の制御レジスタと、
少なくとも第1のベクトルレジスタおよび少なくとも1つの制御レジスタを特定するスプライス命令を実行する処理回路であって、前記第1のベクトルレジスタが、データ要素からなる、あるベクトル長をもつ第1のベクトルを格納し、前記少なくとも1つの制御レジスタが、データ要素からなる前記第1のベクトル内の連続したデータ要素位置を占める1つまたは複数のデータ要素を前記ベクトル長とは無関係に特定する制御データを格納する、処理回路とを含む装置であって、
前記制御データは、データ要素の前記第1のベクトルから抽出するために、前記第1のベクトルレジスタ内の所定のデータ要素の位置を特定する位置データと、データ要素の数を特定するための前記位置データとは異なる長さデータと、を含み、
前記処理回路が、前記スプライス命令の実行に応答して、前記少なくとも1つの制御レジスタ内の前記制御データによって特定される各データ要素を前記第1のベクトルから抽出し、抽出された前記データ要素を、データ要素からなる結果ベクトルレジスタ内に出力し、前記結果ベクトルレジスタが第2のベクトルからのデータ要素もさらに含み、
前記処理回路が、前記抽出がされた前記データ要素を前記結果ベクトルレジスタの連続したデータ要素位置内の中に前記結果ベクトルレジスタの第1の端を先頭として出力するように構成されている、装置。
【請求項2】
前記スプライス命令がさらに、データ要素からなる第2のベクトルを格納する第2のベクトルレジスタを特定し、前記処理回路が前記スプライス命令の実行に応答して、前記結果ベクトルレジスタの、抽出された前記データ要素に占められていないデータ要素位置のそれぞれに、データ要素からなる前記第2のベクトルからデータ要素を入れる、請求項1に記載の装置。
【請求項3】
前記処理回路が、データ要素からなる前記第2のベクトルの第1の端を先頭として、前記結果ベクトルレジスタに連続的なデータ要素を入れるように設計される、請求項2に記載の装置。
【請求項4】
前記1つまたは複数の制御レジスタが、データ要素からなるベクトルの中の各データ要素位置に対する述語データを格納するために使用される述語レジスタを少なくとも1つ含み、
前記スプライス命令で特定される前記少なくとも1つの制御レジスタが前記少なくとも1つの述語レジスタのうち1つを含み、前記処理回路が、前記スプライス命令の実行に応答して、前記第1のベクトルから抽出すべき各データ要素を前記述語データから判断する、
請求項から3のいずれかに記載の装置。
【請求項5】
前記述語データが、データ要素からなる前記第1のベクトルから前記1つまたは複数の抽出すべきデータ要素を判断するために使用される位置と長さの情報を提供する、請求項4に記載の装置。
【請求項6】
前記述語データが第1の抽出データ要素位置および最後の抽出データ要素位置を特定し、前記処理回路が前記第1の抽出データ要素位置と前記最後の抽出データ要素位置の間のデータ要素のシーケンスを前記抽出すべきデータ要素と判断する、請求項5に記載の装置。
【請求項7】
前記1つまたは複数の制御レジスタが、データ値を格納するための1つまたは複数のスカラーレジスタを含み、
前記スプライス命令で特定される前記少なくとも1つの制御レジスタが少なくとも1つのスカラーレジスタを含み、
前記処理回路が前記スプライス命令の実行に応答して前記第1のベクトルから抽出すべき各データ要素を判断するときに、前記特定された各スカラーレジスタ内のデータを使用する、
請求項から6のいずれかに記載の装置。
【請求項8】
前記スプライス命令が第1および第2のスカラーレジスタを特定し、そこに格納されたデータ値が、データ要素からなる前記第1のベクトルから抽出すべき前記1つまたは複数のデータ要素を判断するために使用される位置と長さの情報を提供する、請求項7に記載の装置。
【請求項9】
前記第1および第2のスカラーレジスタに格納された前記データ値が第1の抽出データ要素位置および最後の抽出データ要素位置を特定し、前記処理回路が前記第1の抽出データ要素位置と前記最後の抽出データ要素位置の間のデータ要素のシーケンスを前記抽出すべきデータ要素と判断する、請求項8に記載の装置。
【請求項10】
前記スプライス命令で特定される前記少なくとも1つの制御レジスタが、前記少なくとも1つの述語レジスタのうち1つおよび前記スカラーレジスタのうち1つを含み、データ要素からなる前記第1のベクトルから抽出すべき前記1つまたは複数のデータ要素を判断するために、前記特定されたスカラーレジスタ内の前記データ値が前記特定された述語レジスタ内の前記述語データと組み合わせて使用される、請求項7に記載の装置。
【請求項11】
前記第1のベクトルレジスタと前記第2のベクトルレジスタが同じベクトルレジスタである、請求項2から10のうちのいずれかの請求項、に記載の装置。
【請求項12】
前記第1のベクトルレジスタが、データ要素からなるベクトル内の各データ位置に述語データを格納するために使用される述語レジスタである、請求項1から11のいずれかに記載の装置。
【請求項13】
各データ要素が単一ビットを含む、請求項12に記載の装置。
【請求項14】
前記処理回路が前記スプライス命令を複数回の繰り返しのそれぞれで行うように設計され、各繰り返しで、前記スプライス命令によって特定される前記少なくとも1つの制御レジスタ内の制御データが、データ要素からなる前記第1のベクトルから抽出すべき、前の繰り返しの間に抽出するために特定された前記1つまたは複数のデータ要素とは異なる1つまたは複数のデータ要素を特定する、請求項1から13のいずれかに記載の装置。
【請求項15】
前記処理回路がベクトル再配列回路を含む、請求項から11のいずれかに記載の装置。
【請求項16】
前記ベクトル再配列回路が、
データ要素の前記第1のベクトルの要素を第1の数のデータ要素位置だけ移動する第1のシフト演算を行う第1のシフト回路およびデータ要素の前記第2のベクトルの要素を第2の数のデータ要素位置だけ移動する第2のシフト演算を行う第2のシフト回路と、
前記第1および第2のシフト回路によるベクトル出力を結合させることにより前記結果ベクトルレジスタを生成する結合回路と、
データ要素からなる前記第1のベクトルから抽出すべき前記1つまたは複数のデータ要素を判断するために、前記少なくとも1つの制御レジスタ内の前記制御データを分析し、前記分析に依存して前記第1および第2のシフト回路の動作を制御する制御信号を発行する分析回路とを含む、
求項15に記載の装置。
【請求項17】
前記ベクトル再配列回路が、
前記第1のシフト回路の出力した前記ベクトル出力に第1のマスク演算を行って第1のマスク済みベクトルを作成するための第1のマスク回路と、
前記第2のシフト回路の出力した前記ベクトル出力に第2のマスク演算を行って第2のマスク済みベクトルを作成するための第2のマスク回路とをさらに含み、
前記結合回路が前記第1および第2のマスク済みベクトルを結合させることにより前記結果ベクトルレジスタを生成する、請求項16に記載の装置。
【請求項18】
前記ベクトル再配列回路が、
データ要素からなる前記第1のベクトルおよびデータ要素からなる前記第2のベクトルから前記結果ベクトルレジスタを生成するプログラム可能なクロスバー回路と、
データ要素からなる前記第1のベクトルから抽出すべき前記1つまたは複数のデータ要素を判断するために前記少なくとも1つの制御レジスタを分析し、前記分析に依存して前記プログラム可能なクロスバー回路の動作を制御する制御信号を発行する分析回路とを備える、
求項15に記載の装置。
【請求項19】
1組のベクトルレジスタと1つまたは複数の制御レジスタとを有する装置内でスプライス命令を実行する方法であって、
少なくとも第1のベクトルレジスタおよび少なくとも1つの制御レジスタを特定するスプライス命令を実行することを含み、前記第1のベクトルレジスタが、データ要素からなる、あるベクトル長をもつ第1のベクトルを格納し、前記少なくとも1つの制御レジスタが、データ要素からなる前記第1のベクトル内の連続したデータ要素位置を占める1つまたは複数のデータ要素を前記ベクトル長とは無関係に特定する制御データを格納し、
前記制御データは、データ要素の前記第1のベクトルから抽出するために、前記第1のベクトルレジスタ内の所定のデータ要素の位置を特定する位置データと、データ要素の数を特定するための前記位置データとは異なる長さデータと、を含み、
前記スプライス命令を実行することが、
前記少なくとも1つの制御レジスタ内の前記制御データによって特定される各データ要素を前記第1のベクトルから抽出することと、
抽出された前記データ要素を、データ要素からなる結果ベクトルレジスタ内に出力することを含み、前記結果ベクトルレジスタが第2のベクトルからのデータ要素もさらに含み、
前記抽出された前記データ要素の前記出力は、前記結果ベクトルレジスタの連続したデータ要素位置の中に前記結果ベクトルレジスタの第1の端を先頭として出力するものである、方法。
【請求項20】
1組のベクトルレジスタ手段と、
1つまたは複数の制御レジスタ手段と、
少なくとも第1のベクトルレジスタ手段および少なくとも1つの制御レジスタ手段を特定するスプライス命令を実行する処理手段であって、前記第1のベクトルレジスタ手段が、データ要素からなる、あるベクトル長をもつ第1のベクトルを格納し、前記少なくとも1つの制御レジスタ手段が、データ要素からなる前記第1のベクトル内の連続したデータ要素位置を占める1つまたは複数のデータ要素を前記ベクトル長とは無関係に特定する制御データを格納する、処理手段とを含む装置であって、
前記制御データは、データ要素の前記第1のベクトルから抽出するために、前記第1のベクトルレジスタ内の所定のデータ要素の位置を特定する位置データと、データ要素の数を特定するための前記位置データとは異なる長さデータと、を含み、
前記処理手段が、前記スプライス命令の実行に応答して、前記少なくとも1つの制御レジスタ手段内の前記制御データによって特定される各データ要素を前記第1のベクトルから抽出し、抽出された前記データ要素を、データ要素からなる結果ベクトルレジスタ手段内に出力するためのものであり、前記結果ベクトルレジスタ手段が第2のベクトルからのデータ要素もさらに含み、
前記処理手段が、前記抽出がされた前記データ要素を前記結果ベクトルレジスタ手段の連続したデータ要素位置の中に前記結果ベクトルレジスタ手段の第1の端を先頭として出力するように構成されている、装置。
【請求項21】
非一時的コンピュータ可読記憶媒体に格納されたコンピュータプログラムであって、データ処理装置によって実行されると、請求項1に記載の装置に対応する命令実行環境を提供する仮想マシンを提供する、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本技法はスプライス(splice)演算を行うための装置および方法に関する。
【背景技術】
【0002】
現代のデータ処理システムでは、第1のベクトル内の一定数の連続したデータ要素を抽出してから、抽出したデータ要素を第2のベクトルからのデータ要素と共に結果ベクトル内に出力するように、スプライス演算を実行できると有用である。
【発明の概要】
【発明が解決しようとする課題】
【0003】
そのようなスプライス演算を行う効率的で柔軟な方法を提供することが望ましいと考えられる。
【課題を解決するための手段】
【0004】
第1の構成例ではある装置が提供され、その装置は、1組のベクトルレジスタと、1つまたは複数の制御レジスタと、少なくとも第1のベクトルレジスタおよび少なくとも1つの制御レジスタを特定するスプライス命令を含む命令のシーケンスを実行する処理回路とを備えており、第1のベクトルレジスタは、データ要素からなる、あるベクトル長をもつ第1のベクトルを格納し、少なくとも1つの制御レジスタは、データ要素からなる第1のベクトル内の連続したデータ要素位置を占める1つまたは複数のデータ要素をベクトル長とは無関係に特定する制御データを格納し、処理回路はスプライス命令の実行に応答して、少なくとも1つの制御レジスタ内の制御データによって特定される各データ要素を第1のベクトルから抽出し、抽出したデータ要素を、データ要素からなる結果ベクトル内に出力し、結果ベクトルは第2のベクトルからのデータ要素もさらに含む。
【0005】
別の構成例では、1組のベクトルレジスタと1つまたは複数の制御レジスタとを有する装置内でスプライス命令を実行する方法が提供され、この方法は、少なくとも第1のベクトルレジスタおよび少なくとも1つの制御レジスタを特定するスプライス命令を実行することを含み、第1のベクトルレジスタは、データ要素からなる、あるベクトル長をもつ第1のベクトルを格納し、少なくとも1つの制御レジスタは、データ要素からなる第1のベクトル内の連続したデータ要素位置を占める1つまたは複数のデータ要素をベクトル長とは無関係に特定する制御データを格納し、前記スプライス命令を実行することは、少なくとも1つの制御レジスタ内の制御データによって特定される各データ要素を第1のベクトルから抽出することと、抽出したデータ要素を、データ要素からなる結果ベクトル内に出力することとを含み、結果ベクトルは第2のベクトルからのデータ要素もさらに含む。
【0006】
さらに別の構成ではある装置が提供され、その装置は、1組のベクトルレジスタ手段と、1つまたは複数の制御レジスタ手段と、少なくとも第1のベクトルレジスタ手段および少なくとも1つの制御レジスタ手段を特定するスプライス命令を含む命令のシーケンスを実行するための処理手段とを備えており、第1のベクトルレジスタ手段は、データ要素からなる、あるベクトル長をもつ第1のベクトルを格納するためのもので、少なくとも1つの制御レジスタ手段は、データ要素からなる第1のベクトル内の連続したデータ要素位置を占める1つまたは複数のデータ要素をベクトル長とは無関係に特定する制御データを格納するためのもので、処理手段は、スプライス命令の実行に応答して、少なくとも1つの制御レジスタ手段内の制御データによって特定される各データ要素を第1のベクトルから抽出し、抽出したデータ要素を、データ要素からなる結果ベクトル内に出力するためのものであり、結果ベクトルは第2のベクトルからのデータ要素もさらに含む。
【0007】
代替構成例では、非一時的コンピュータ可読記憶媒体に格納されたコンピュータプログラムが提供され、そのプログラムはデータ処理装置によって実行されると、前述した第1の構成例の装置に対応する命令実行環境を提供する仮想マシンを提供する。
【0008】
本技法について、添付図面に示される実施形態を参照しながら、単なる例として、さらに詳細に説明する。
【図面の簡単な説明】
【0009】
図1】一実施形態による装置のブロック図である。
図2】実施形態の例によって、スプライス命令により行われる演算を概略的に示す。
図3】実施形態の例によって、スプライス命令により行われる演算を概略的に示す。
図4】実施形態の例によって、スプライス命令により行われる演算を概略的に示す。
図5】一実施形態による、図1のベクトル再配列ユニットを示す図である。
図6】一実施形態による、図2に概要を示した演算を図5のベクトル再配列ユニットをどのように使用して行うかを示す図である。
図7】代替実施形態による、図1のベクトル再配列ユニットを示す線図である。
図8】一実施形態による、スライディングウィンドウ演算を行うために、スプライス命令のシーケンスをどのように実行してもよいかを概略的に示す図である。
図9A】一実施形態による、データ要素からなる第1のベクトルから抽出すべき連続したデータ要素位置を占めるデータ要素をベクトル長とは無関係に特定するためにスプライス命令によって指定されてもよい制御レジスタの配置の例を示す図である。
図9B】一実施形態による、データ要素からなる第1のベクトルから抽出すべき連続したデータ要素位置を占めるデータ要素をベクトル長とは無関係に特定するためにスプライス命令によって指定されてもよい制御レジスタの配置の例を示す図である。
図9C】一実施形態による、データ要素からなる第1のベクトルから抽出すべき連続したデータ要素位置を占めるデータ要素をベクトル長とは無関係に特定するためにスプライス命令によって指定されてもよい制御レジスタの配置の例を示す図である。
図9D】一実施形態による、データ要素からなる第1のベクトルから抽出すべき連続したデータ要素位置を占めるデータ要素をベクトル長とは無関係に特定するためにスプライス命令によって指定されてもよい制御レジスタの配置の例を示す図である。
図10】一実施形態で使用されてもよい仮想マシン実装を示す図である。
【発明を実施するための形態】
【0010】
実施形態について添付図面を参照しながら考察する前に、実施形態の説明を下記に記載する。
【0011】
一実施形態では、ある装置が提供され、その装置は1組のベクトルレジスタおよび1つまたは複数の制御レジスタをもつ。装置内の処理回路が命令のシーケンスを実行するように設計され、そのシーケンスはスプライス命令を含み、スプライス命令は、少なくとも第1のベクトルレジスタおよび少なくとも1つの制御レジスタを特定する。第1のベクトルレジスタは、データ要素からなる、あるベクトル長をもつ第1のベクトルを格納し、少なくとも1つの制御レジスタは、データ要素からなる第1のベクトル内の連続したデータ要素位置を占める1つまたは複数のデータ要素をベクトル長とは無関係に特定する制御データを格納する。スプライス命令を実行するとき、処理回路は、少なくとも1つの制御レジスタ内の制御データによって特定される各データ要素を第1のベクトルから抽出してから、抽出したデータ要素を、データ要素からなる結果ベクトル内に出力し、結果ベクトルは、第2のベクトルから抽出したデータ要素もまた含む。第2のベクトルは事前に定められていてもよいし、または、スプライス命令によって指定されてもよい。
【0012】
本明細書では、「有効データ要素」という語句を、第1のベクトルから抽出すべきデータ要素として制御データによって特定されるデータ要素を示すためにも使用する。
【0013】
少なくとも1つの制御レジスタ内の制御データはベクトル長を参照せずに有効データを特定するので、これにより、第1のベクトル内の有効データ要素をどのように選択するかについて、高い柔軟性が得られる。具体的には、スプライス命令によって定められるスプライス演算を行うときに、第1のベクトル内で連続したデータ要素位置を占める有効データ要素のどのようなシーケンスを選択してもよい。
【0014】
そのような手法により、ベクトル長についての知識に頼ることなく有効データ要素の境界を指定することができる。その結果、さまざまな異なる装置の間で、そのような装置の1つが演算対象とするベクトルの長さが、別の装置の演算対象であるベクトルとは長さが異なる場合であっても、スプライス命令を使用することができる。その結果、前述した実施形態のスプライス命令がベクトル長に依存しないこと、また、したがって、プログラマがそのようなスプライス命令を使用して、第1のベクトルの一部と第2のベクトルの一部をベクトル長に依存しない方法でスプライス接合できることが分かる。
【0015】
一実施形態ではデータ要素のサイズは明示されていなくてもよい。ただし、代替実施形態では、そのような情報をスプライス命令内に符号化することができ、よって、純粋に例として、データ要素のサイズを8、16、32、または64ビットと特定してもよい。
【0016】
一実施形態では、処理回路は、抽出したデータ要素を結果ベクトルの連続したデータ要素位置の中に結果ベクトルの第1の端を先頭として出力するように設計される。そのような設計では、その次に、第2のベクトルからのデータ要素が、第1のベクトルから抽出されたデータ要素に占められていない残りのデータ要素位置に入る。
【0017】
一実施形態では、スプライス命令はさらに、データ要素からなる第2のベクトルを格納する第2のベクトルレジスタを特定する。次に処理回路がスプライス命令の実行に応答して、結果ベクトルの、抽出されたデータ要素に占められていないデータ要素位置のそれぞれに、データ要素からなる第2のベクトルからデータ要素を入れる。
【0018】
結果ベクトルに入れるために第2のベクトルから選ばれるデータ要素は、さまざまな様式で選択されてもよい。ただし、一実施形態では、処理回路は、データ要素からなる第2のベクトルの第1の端を先頭として、結果ベクトルに連続的なデータ要素を入れるように設計される。
【0019】
1つまたは複数の制御レジスタはさまざまな形をとることができるが、一実施形態では少なくとも1つの述語レジスタを含み、各述語レジスタを使用して、データ要素からなるベクトルの中の各データ要素位置に対する述語データを格納する。よって、述語レジスタ内の述語データはブーリアン(Boolean)(すなわち真/偽)条件からなるベクトルを指定し、関連する、データ要素からなるベクトルの中の各データ要素が、それらのブーリアン条件のうち1つに関連する。一実施形態では述語データ内の述語条件の項目数とその述語データによって制御される関連ベクトル内のデータ要素の数の間に1対1の関係があってもよいが、これは必須ではなく、代替実施形態では、述語データの単一の項目が提供する条件が、複数のデータ要素に適用されてもよい。さらに、一実施形態では述語データ内の各述語項目は単一ビットの形をとるが、各述語項目がただ1つのビットによって指定されるべきであるという要件はない。
【0020】
制御レジスタのうちに少なくとも1つの述語レジスタが含まれるような実施形態では、スプライス命令で特定される少なくとも1つの制御レジスタは、そのような述語レジスタを1つ含み、処理回路は、スプライス命令の実行に応答して、第1のベクトルから抽出すべき各データ要素を述語データから判断してもよい。
【0021】
そのような述語レジスタを使用することにより、ただ1つのレジスタを使用して個々の有効データ要素を指定することが可能である。よって、これにより、有効データ要素を特定するための符号化が格別に効率化される。また、多くの場合、システム内に備わる述語レジスタの数がスカラーレジスタ(有効要素を特定する制御データを指定するための代替手段として使用することもできる)よりも少なくなり、述語レジスタを特定するために必要な命令内のビットの数が少なくなるので、命令内の符号化効率がさらに改善される。加えて、述語データの性質に起因して、特定される有効データ要素がベクトルの端にまたがることは決してなく、よって、「out of range index」などの条件をチェックする必要が自動的に回避される。
【0022】
述語データはさまざまな様式に設計することができるが、一実施形態では、データ要素からなる第1のベクトルから抽出すべきデータ要素を判断するために使用される、位置と長さの情報を提供する。述語データを使用すると有効データを柔軟に指定できるので、有効データ要素の先頭位置をベクトルレジスタ内のどのデータ要素位置としても特定することができ、さらに、有効データ要素の数はベクトル内の任意の所望の数であることができる。
【0023】
本明細書において、スプライス命令を実行するときに特定される有効データ要素のシーケンスをスプライスセグメントと呼ぶ。スプライス命令によって指定される述語を使用してスプライス演算を制御することにより、ベクトル長に依存しないコードの中で、スプライスセグメントがベクトルの端に決してまたがらないようにしながらスプライス命令を使用することができる。
【0024】
述語データによって位置と長さの情報を指定できる方法は、多数存在する。一実施形態では、述語データは第1の抽出データ要素位置および最後の抽出データ要素位置を特定し、処理回路は第1の抽出データ要素位置と最後の抽出データ要素位置の間のデータ要素のシーケンスを、抽出すべきデータ要素と判断する。述語データ内の各述語項目が単一ビットである実施形態の例を考えると、第1の抽出データ要素位置は、第1の値(例えば論理1値)にセットされた第1の述語ビットによって特定されてもよく、最後の抽出データ要素位置は、第1の値にセットされた最後の述語ビットによって特定されてもよい。間にある述語ビットの値はどれも無視される。
【0025】
一実施形態では、スプライス命令の実行中に有効データ要素を特定するために必要な制御データは述語レジスタを参照して指定されてもよいが、代替実施形態では、異なる制御レジスタが使用されてもよい。具体的には、一実施形態では、1つまたは複数の制御レジスタは、データ値を格納するための1つまたは複数のスカラーレジスタを含んでもよい。そのような実施形態では、スプライス命令で特定される少なくとも1つの制御レジスタは少なくとも1つのスカラーレジスタを含み、処理回路はスプライス命令の実行に応答して第1のベクトルから抽出すべき各データ要素を判断するときに、特定された各スカラーレジスタ内のデータを使用する。
【0026】
そのようなスカラーレジスタを使用して必要な制御データを提供する方法は、多数存在する。一実施形態では、スプライス命令は第1と第2のスカラーレジスタを特定し、そこに格納されたデータ値が、データ要素からなる第1のベクトルから抽出すべき1つまたは複数のデータ要素を判断するために使用される位置と長さの情報を提供する。
【0027】
例えば、一実施形態では、第1と第2のスカラーレジスタに格納されたデータ値は第1の抽出データ要素位置と最後の抽出データ要素位置を特定し、処理回路は第1の抽出データ要素位置と最後の抽出データ要素位置の間のデータ要素のシーケンスを、抽出すべきデータ要素と判断する。代替実施形態では、スカラーレジスタのうち1つを使用して先頭位置を特定してもよく、他方のスカラーレジスタが、その位置を先頭とする有効データ要素に含まれるべきデータ要素の数を特定するスカラー値を提供してもよい。
【0028】
さらに別の実施形態では、スプライス命令で特定される少なくとも1つの制御レジスタが述語レジスタとスカラーレジスタの両方を含んでもよく、データ要素からなる第1のベクトルから抽出すべき1つまたは複数のデータ要素を判断するために、特定されたスカラーレジスタ内のデータ値を、特定された述語レジスタ内の述語データと組み合わせて使用してもよい。例えば、スカラーレジスタと述語レジスタのどちらかを使用して先頭位置を特定し、次に他方のレジスタを使用して、末尾位置を示すか、または特定した開始位置を先頭として含ませる有効データの数を示す長さ情報を提供してもよい。
【0029】
スプライス命令が第1のベクトルレジスタと第2のベクトルレジスタの両方を指定する複数の実施形態において、一実施形態では、第1のベクトルレジスタと第2のベクトルレジスタが同一のベクトルレジスタであるように指定することが可能である。そのような手法によって、スプライス命令を使って回転演算を行い、ベクトル内のデータ要素の出現順序を変更することが可能である。
【0030】
一実施形態では、スプライス命令によって指定される第1のベクトルレジスタは(実際は、指定される場合には第2のベクトルレジスタも)、それ自体が、データ要素からなるベクトルの中に置かれた各データ要素に対する述語データを格納するために使用される、述語レジスタであってもよい。したがって、そのようなスプライス命令はデータ要素からなるベクトルオペランドに演算を行うためだけではなく、述語ベクトルに演算を行うために使用されてもよく、その場合、指定された制御レジスタ(それ自体が述語レジスタであってもよい)によって特定される制御データが、指定された述語ベクトル内の述語データの項目に関して行うべきスプライス演算を特定する。スプライス命令によって特定される第1のベクトルレジスタ自体が述語レジスタであるような一実施形態では、第1のベクトルレジスタ内の各データ要素は単一ビットを含んでもよく、その単一ビットは述語データの1つの項目を表す。
【0031】
1つのユースケース例では、処理回路は複数回の繰り返しのそれぞれでスプライス命令を行うように設計されてもよく、各繰り返しで、スプライス命令によって特定される少なくとも1つの制御レジスタ内の制御データはデータ要素からなる第1のベクトルから抽出すべき1つまたは複数のデータ要素を特定し、そのデータ要素は、前の繰り返しの間に抽出するために特定された1つまたは複数のデータ要素とは異なる。そのような手法によって、一連のスプライス命令を使用して、指定されたベクトルオペランドでのスライディングウィンドウ演算を効率的に実施することが可能である。
【0032】
スプライス命令を実行するために使用される処理回路はさまざまな形をとってもよいが、一実施形態では、ベクトル再配列回路を含む。
【0033】
ベクトル再配列回路はさまざまな形をとることができるが、一実施形態では、データ要素からなる第1のベクトルに第1のシフト演算を行う第1のシフト回路と、データ要素からなる第2のベクトルに第2のシフト演算を行う第2のシフト回路と、第1および第2のシフト回路によるベクトル出力から結果ベクトルを生成する結合回路とを備える。加えて、データ要素からなる第1のベクトルから抽出すべき1つまたは複数のデータ要素を判断するために分析回路を使用して少なくとも1つの制御レジスタ内の制御データが分析され、その分析に依存して第1および第2のシフト回路の動作を制御する制御信号が発行される。よって、結合回路によって後に結合される修正済みのベクトルを作り出すために第1および第2のベクトルに適切なシフト演算を行うように、第1および第2のシフト回路の動作を、指定された制御レジスタによって提供される制御データに依存して制御することができる。一実施形態では、第1のベクトルに行われるシフトは、第2のベクトルに行われるシフトと逆方向になる。
【0034】
結合回路はさまざまな形をとることができるが、一実施形態では、与えられた2つの入力ベクトルに論理OR演算を行うように設計され、これらのベクトルは第1および第2のシフト回路の出力から導出される。
【0035】
一実施形態では、ベクトル再配列回路は、第1のシフト回路の出力したベクトルに第1のマスク演算を行って第1のマスク済みベクトルを作成するための第1のマスク回路と、第2のシフト回路の出力したベクトルに第2のマスク演算を行って第2のマスク済みベクトルを作成するための第2のマスク回路とを含み、結合回路は第1および第2のマスク済みベクトルを結合させることにより結果ベクトルを生成するように設計される。
【0036】
よって、一実施形態ではスプライス命令によって定められるスプライス演算を実施するために必要な演算を、シフト演算およびOR演算を(任意選択で、必要に応じ、追加のマスク演算と共に)使用して容易に行うことができ、シフト演算を並列に行うことができるということが分かる。
【0037】
ただし、ベクトル再配列回路は必ずしもそのように構築されなくてもよく、実際には、ベクトル再配列回路のためにさまざまな他の構成が提供されてもよい。一設計例では、ベクトル再配列回路は、データ要素からなる第1のベクトルおよびデータ要素からなる第2のベクトルから結果ベクトルを生成するプログラム可能なクロスバー回路と、データ要素からなる第1のベクトルから抽出すべき1つまたは複数のデータ要素を判断するために少なくとも1つの制御レジスタを分析し、分析結果に依存してプログラム可能なクロスバー回路の動作を制御する制御信号を発行する分析回路とを備えてもよい。したがって、そのような実施形態では、第1のベクトルからの特定された有効データ要素と第2のベクトルからの必要な数のデータ要素との、必要なスプライスを行うように、クロスバー回路を必要に応じて分析回路の制御下で構成することができる。いくつかの実施形態では、装置内に他の目的のためにすでに備わっているクロスバー回路を再利用できることもある。
【0038】
ここで、特定の実施形態について図面を参照しながら説明する。
【0039】
図1は、本明細書に記載される実施形態の技法が使用されてもよいシステムのブロック線図である。図1に示される例では、システムはパイプライン型プロセッサの形をとる。命令キャッシュ15(通常、レベル2キャッシュ50などの1つまたは複数の別のレベルのキャッシュを介してメモリ55に結合されている)からフェッチ回路10によって命令がフェッチされ、そこから、復号回路20へ命令が渡される。復号回路20は、パイプライン型プロセッサ内部の下流の実行リソースを制御して各命令に必要な演算を行わせるために、その命令を復号して適切な制御信号を生成する。復号された命令を形成する制御信号が発行段回路25に渡され、パイプライン型プロセッサ内の1つまたは複数の実行パイプライン30、35、40、80に対して発行される。
【0040】
発行段回路25は、演算に必要なデータ値を格納できるレジスタ群60にアクセスすることができる。具体的には、ベクトルレジスタ群65にベクトル演算のソースオペランドが格納されてもよく、スカラーレジスタ群75にスカラー演算のソースオペランドが格納されてもよい。加えて、一定のベクトル演算を行うときに処理されるベクトルオペランドのデータ要素についての制御情報として使用するために、述語レジスタ群70に1つまたは複数の述語が格納されてもよい。さらに、後に図9Aから9Dを参照しながら例として考察するように、一定のベクトル演算を行っている間に使用するためのそのような制御情報を導出するために使用されるデータ値を格納するために、スカラーレジスタのうち1つまたは複数が使用されてもよい。
【0041】
ソースオペランドおよび、関連する制御情報があれば、その制御情報を、経路47を介して発行段回路へ送り、復号された各命令を実施するために行うべき演算を特定する制御信号と共に、適切な実行ユニットにディスパッチすることができる。図1に示されるさまざまな実行ユニット30、35、40、80は、ベクトルオペランドに演算を行うためのベクトル処理ユニットと仮定されるが、その装置によってサポートされるいずれかのスカラー演算の取り扱いが所望される場合には、別の実行ユニット(図示せず)を提供することができる。
【0042】
さまざまなベクトル演算を考慮して、算術演算は、必要なソースオペランド(および、述語などの制御情報があれば、その制御情報)と共に、それらのソースオペランドに算術論理演算を行えるようにするために、例えば算術論理演算ユニット(ALU)30に転送され、結果値は通常、デスティネーションオペランドとして出力され、ベクトルレジスタバンク65の指定されたレジスタに格納される。
【0043】
ALU30に加えて、例えば、復号された浮動小数点演算に応答して浮動小数点演算を行うための浮動小数点ユニット(FPU)および、ベクトルオペランドに一定の再配列演算を行うためのベクトル再配列ユニット80などの、他の実行ユニット35が提供されてもよい。さらに、メモリ55からデータ値を(データキャッシュ45および、レベル2キャッシュ50などの介在する別のレベルのキャッシュがあれば、それらのキャッシュを介して)レジスタセット60内の指定されたレジスタへロードする目的でロード演算を行うため、および、それらのレジスタからメモリ55へデータ値を戻してストアする目的でストア演算を行うために、ロード/ストアユニット(LSU)40が使用される。
【0044】
図1に示されるシステムは、命令のシーケンスがプログラム順に実行されるインオーダーの処理システムであってもよいし、あるいは、パフォーマンスの向上を追求する目的で、さまざまな命令が実行される順序を並べ替えることが許可されるアウトオブオーダーのシステムであってもよい。当業者には理解されるように、アウトオブオーダーのシステムでは、例えば、命令によって指定されるアーキテクチャ上のレジスタをレジスタバンク45内の物理レジスタのプールの中の物理レジスタにマッピングするレジスタリネーミング回路(物理レジスタのプールは通常、アーキテクチャ上のレジスタの数より大きい)などの追加構造(図1には明示的には示されない)が提供され、それにより、一定の危険を排除することが可能になり、アウトオブオーダー処理のさらなる利用が促進される。加えて、アウトオフオーダー実行を追跡するため、および、さまざまな命令の実行の結果を元のプログラム順序で送り出すために、通常、リオーダバッファが提供される。
【0045】
記載される実施形態では、図1の回路はベクトルレジスタ群65に格納されたベクトルオペランドにベクトル演算を実行するように設計され、ベクトルオペランドは複数のデータ要素を含む。そのようなベクトルオペランドに行われる一定のベクトル演算(算術演算など)について、必要な演算が、ベクトルオペランドの中のさまざまなデータ要素に並列に(または反復して)施されてもよい。特定のベクトル演算についてベクトル内のどのデータ要素が有効データ要素であるのか、したがって、どのデータ要素に演算を適用すべきかを特定するために、述語情報が使用されてもよい。
【0046】
一実施形態では、図1の回路によって実行される命令のシーケンスは、少なくとも1つのスプライス命令を含んでもよい。各スプライス命令は、ベクトルレジスタバンク65内の少なくとも第1のベクトルレジスタおよび少なくとも1つの制御レジスタを特定する。制御レジスタは、述語レジスタ群70のうちの1つの形をとってもよく、あるいは、後に考察するように、スカラーレジスタ群75のうちの1つもしくは複数によって、または述語レジスタとスカラーレジスタの組み合わせによって指定されてもよい。そのようなスプライス命令が復号回路20によって復号されると、そのスプライス命令に必要なスプライス演算を実施するために、続いて発行段回路25が適切な制御信号をベクトル再配列ユニット80に対して発行して、必要な演算が行われるようにする。具体的には、その少なくとも1つの制御レジスタによって指定される制御データを使用して、そのスプライス命令によって指定される、データ要素からなる第1のベクトル内で、連続したデータ要素位置を占める1つまたは複数の有効データ要素が特定される。制御データは、その制御データがベクトル長とは無関係に有効データ要素を特定するように、したがって、ベクトル長を参照することなくそれらの有効データ要素を特定できるように編成される。第1のベクトル内の有効データ要素を特定し終えると、次にベクトル再配列ユニットがそれらの有効データを第1のベクトルから抽出して結果ベクトル内に出力し、結果ベクトル内の残りのデータ要素位置が第2のベクトルからのデータ要素で埋められる。第2のベクトルは事前に定められていてもよいし、または、スプライス命令によって指定されてもよい。
【0047】
図2は、スプライス命令および、その結果行われる演算の一例を示す。具体的には、スプライス命令はベクトルレジスタバンク65の中から2つのベクトルソースレジスタ100、105を指定し、さらに述語レジスタ群70の中から述語レジスタ110を指定する。この述語レジスタはPspレジスタと称され、その述語レジスタの内容がスプライス制御データを含むことを表す。図2に、述語データの一例を示す。具体的には、この実施形態では、述語データの中で最初と最後に出現する論理1値を使用して、スプライスセグメント115が特定される。一実施形態では、その2つの論理1値の間に介在する述語値は重要ではなく、論理1または論理0のどちらであることもできる。
【0048】
よって、最初と最後の論理1値が関連する第1のソースベクトル100内の最初と最後の有効データ要素位置を特定すると考えることができる。よって、この例では、データ要素位置を右から数えると、図2の述語レジスタ110内の特定の述語例は、第1と第2の有効データ要素のデータ要素位置としてデータ要素位置2と4を特定する。したがって、ベクトル再配列ユニットは第1のベクトル100の位置2、3、4からデータ要素を抽出し、それを、指定されたデスティネーションベクトルレジスタ120内の所定の位置に出力する。この実施形態では、抽出された値を使用して、デスティネーションベクトル120の最下位データ要素位置を先頭としてデータ要素位置125が占められるが、代替の実施形態では、例えばデスティネーションベクトル内の最上位の一定数の桁のビット位置などの、別の位置を占めることもできることが理解される。次に、デスティネーションレジスタ120内の残りのデータ要素位置130が、ベクトル再配列ユニットによって、第2のソースベクトルレジスタのデータ要素位置0を先頭として、第2のソースベクトルレジスタからのデータ要素で埋められる。図2に示したように、ベクトル再配列ユニット80からの出力結果ベクトル120の形は、”mlkjiedc”となる。
【0049】
図2を見れば分かるように、有効データ要素を特定するために必要な位置と長さの情報はベクトル長とは無関係に指定されるので、ベクトル長を知らなくても述語から判断することができる。スプライスはソースベクトルレジスタのどの位置からでも、どのような長さでも行うことができ、特に、ベクトルの片方の端に揃える必要はない。
【0050】
一実施形態では、ベクトル長(すなわち、各ベクトル内のデータ要素の数)およびデータ要素のサイズは明示されていなくてもよい。ただし、別の実施形態では、そのような情報を命令の中に符号化することができる。例えば、データ要素サイズ(例えば、8、16、32、または64ビット)を特定する情報を命令の符号化に含ませることもでき、後に、命令で参照されるベクトルレジスタのサイズと指定されたデータ要素サイズからベクトル長が判断される。
【0051】
さらに、図2の例では、述語レジスタとソースベクトルレジスタの要素数は同じなので、out of range index条件の境界事例は自動的に処理され、よって、この命令は、この形ではout of range index例外を引き起こさない。
【0052】
さらに、そのようなスプライス命令を汎用ライブラリコードで使用することができる。その理由は、アクセス可能なベクトル長に基づいて、または、プログラマもしくはアルゴリズムからの要求に応じて動的に述語を組み立てることができるからである。述語をそのように指定してスプライス命令を使用すると、指定された述語レジスタ内の述語データによって2つの部分の位置と長さを制御しながら、異なるベクトルレジスタのそれぞれ一部分をベクトル長に依存しない様式で連結することができる。
【0053】
図2の例では第1と第2のソースベクトルはベクトルレジスタ群65内に保持されている、データ要素からなるベクトルを含むが、代替の実施形態では、第1と第2のベクトルレジスタは実際には、図3に概略的に示されるように、述語レジスタセット70内の述語を指定してもよい。この例では、ソースベクトルレジスタはそれぞれ、2つのソース述語レジスタ140、145によって示される、述語項目からなるベクトルを表す。前述した例と同様に、次にスプライス述語レジスタ150が述語を提供し、これを使用して、第1のソースレジスタ140内の有効データ要素を特定するスプライスセグメント155が特定される。その結果、特定された有効データ要素(この例では、各データ要素は単一ビットの値である)がデスティネーション述語レジスタ160の部分165に出力され、残りの部分170は、第2のソースレジスタのデータ要素位置0を先頭として、第2のソースレジスタ145からのデータ要素で埋められる。
【0054】
さらに、図4に示されるように、同じレジスタ175を第1のベクトルレジスタと第2のベクトルレジスタの両方として指定することにより、スプライス命令を使用して回転を行うことができる。この例では、スプライス述語180は、ソースレジスタ175内の一定数の最上位データ要素位置を含むスプライスセグメントを特定する。よって、これらのデータ要素が結果レジスタ185の最下位データ要素位置に移され、残りのデータ要素位置は、最下位データ要素を先頭として、ソースレジスタの内容によって埋められる。
【0055】
スプライス命令の実行中に前述したスプライス演算を行うために使用されるベクトル再配列ユニット80は、さまざまな形をとることができる。一設計例が図5に示され、この例では、ベクトル再配列ユニットは、ベクトルソースレジスタ200、205のうち1つにそれぞれが関連する2つのシフト/回転回路ブロック215、220と、関連するマスク回路225、230と、2つのマスク回路からの出力を結合させる結合回路235とを含み、この例では、結合回路は論理OR回路235の形をとる。OR回路235からの出力は、デスティネーションレジスタ245に格納される。ベクトル再配列ユニット80は、スプライス述語レジスタ210によって指定される述語データを受け取る述語分析回路240をさらに含む。具体的には、述語データを解析してスプライスセグメントが特定され、これを使用してシフト/回転回路220のための適切な制御信号が作成される。具体的には、スプライスセグメントによって特定される有効データ要素をある数のデータ要素位置に最下位データ要素位置を先頭として移動させるために十分な右シフトを、シフト/回転回路220に行わせる。逆に、シフト/回転回路215は、第2のソースレジスタ内の一定数の最下位データ要素を結果ベクトルの残りのデータ要素位置に移動させるために十分な左シフトを行うように設計される。
【0056】
述語分析回路240はさらに、2つのマスク回路225、230に対する制御信号を作成して、2つのシフト/回転回路250、220からの出力内の不要なデータ要素が確実に所定の値にセットされるようにする。例えば図5に示される、結合回路がOR回路235の形をとる例では、不要なデータ要素はすべてゼロにセットされる。次にOR回路はマスク回路の出力に論理OR演算を行い、結果ベクトルレジスタ245に格納される結果ベクトルを生成する。
【0057】
図6は、先に図2を参照しながら考察した演算を図5の回路を使用して行う様子を示す。具体的には、述語分析回路240が、シフト/回転回路220にデータ要素位置2つ分の右シフトを行わせる。このシフトの数はスプライス述語レジスタ210によって指定される述語内の上位のゼロの数に基づいて判断される。逆に、シフト/回転回路215は3つ分の左シフトを行い、このシフトの数は述語内のスプライスセグメントの長さに基づいて判断される両方のシフト/回転回路215、220の出力が図6に示されている。文字xは、そのデータ要素位置のデータ要素がドントケア状態であることを示す。具体的には、これらのデータ要素の値が何であるかに関わらず、これらのデータ要素値は関連するマスク回路225、230によってマスキングされる。
【0058】
述語分析回路240はマスク回路230に、マスクの右側3ビットがセットされるように制御信号を送り、それにより、それ以外のデータ要素が0値にセットされて、このマスク回路からデータ要素edcが出力される。図6のマスク回路の出力に示されたゼロ値は単一のビット値ではなく、各ゼロは対応するデータ要素がオールゼロの値であることを示し、通常、対応するデータ要素は単一ビットではないということに留意すべきである。例えば、一実施形態では、ベクトル内の各データ要素の長さは1バイトである。マスク回路230に与えられる制御信号は、述語分析回路240によって述語レジスタ210の述語データから判断されるスプライスセグメントのサイズによって判断され、この例ではスプライスセグメントの長さはデータ要素3つ分である。
【0059】
マスク回路230のためのマスク制御信号を生成し終えると、述語分析回路は、マスク回路225により実施されるマスクがマスク回路230により施されるマスクの逆になるように、マスク回路225のために適切な制御信号を生成する。その結果、マスク回路225からの出力は、図6に示すとおりになる。次にOR回路235が2つの入力ベクトルに論理OR演算を行って、図6のデスティネーションレジスタ245の中に示される出力ベクトルmlkjiedcを作成する。
【0060】
上記の説明から、必要なベクトル再配列回路をシフト、マスク、およびORの回路ブロックを使用して効率的に構築することができ、シフト演算を並列に(実際にはマスク演算であることができる)行えることが理解される。ただし、ベクトル再配列ユニットは、これ以外の多くの代替の形をとることができる。図7に特定の一例が示され、この例ではベクトル再配列ユニット80は、クロスバー260とも呼ばれるプログラム可能な回路網を含み、この回路網の動作は述語レジスタ210により与えられる述語データの分析に基づき述語分析回路270によって制御される。次に述語分析回路270は、述語データにより特定されるスプライスセグメントの特定結果に基づいて、結果ベクトルレジスタ245に格納される結果ベクトル内の必要な出力データ要素位置にソースレジスタ200、205の両方から適切なデータ要素が提供されるように、プログラム可能なクロスバーを構成することができる。
【0061】
図8は、先に説明したスプライス命令を使用してスライディングウィンドウ演算を実施する様子を示し、具体的には、繰り返しごとに異なる述語データを使用してスプライス命令を実行することによってそれを実施する。まず、2つのソースレジスタ300、305にソースベクトルをロードする。この例では、各ソースベクトルは8つのデータ要素を含む。この例では、ソースレジスタから一度に3つのデータ要素を抽出したいと仮定する。最初の繰り返しで、すべて1にセットされたスプライス述語でスプライス命令が実行され、その結果、ソースレジスタ300の内容がデスティネーションレジスタ310内に格納される。その後に続く繰り返しは、レジスタ310の最下位の3つのデータ要素位置を占める3つのデータ要素に行うことができ、それ以外のデータ要素は無視される。
【0062】
次の繰り返しでは述語11111000でスプライス命令が行われ、その結果、デスティネーションレジスタ315には図8に示されるデータ要素が入る。具体的には、最下位の3つのデータ要素位置にはデータ要素fedが入っており、したがって、それらのデータ要素を、レジスタ315のそれ以外のデータ要素を無視して、後続の演算に供することができる。
【0063】
3回目の繰り返しでは、スプライス述語11000000でスプライス命令が行われる。これにより、第1のソースレジスタ300からはデータ要素gとhだけが抽出され、デスティネーションレジスタ320内のそれ以外のデータ要素は、第2のソースレジスタ305から提供される。現在、デスティネーションレジスタ320内の下位3つのデータ要素位置にはデータ要素ihgが含まれており、後続の演算では、レジスタ320内の別の内容を無視して、これらの要素に演算を行うことができる。したがって、そのようにスプライス命令を使用すると、スライディングウィンドウ型の演算を行うために特に効率的な実装が得られ、このケースではウィンドウは3つのデータ要素からなるブロックを特定する。
【0064】
図8に示される3回目の繰り返しの後、スライディングウィンドウ演算を続行する必要があれば、2つのソースレジスタ300、305の内容を更新しなければならない。具体的には、一例では、第2のソースレジスタ305の元の内容を第1のソースレジスタ300に移動させて、別のベクトルデータを第2のソースレジスタにロードする。次の繰り返しでは、スプライス命令をスプライス述語11111110で行うことができ、それにより、結果ベクトルの最下位の3つのデータ要素位置はデータ要素lkjによって占められる。
【0065】
上記の例では、スプライス命令に必要なスプライス制御情報は、図9に述語レジスタ350に関連して示される例のとおりに、単一の述語レジスタによって指定される。図9Aの例では、述語は図2を参照しながら考察したものと同じ形をとると仮定される。ただし、代替実施例では、スプライス命令は必要な制御情報を多数の異なる様式で指定することができる。例えば、図9Bに示されるように、必要なスプライス制御情報を2つのスカラーレジスタ355、360の内容を使用して指定することが可能なこともある。図9Bに示される例では各スカラーレジスタがスカラー値を格納しており、第1のスカラーレジスタは先頭のデータ要素位置を指定し、第2のスカラーレジスタは末尾のデータ要素位置を特定する。図9Aの例に合わせれば、第1のスカラーレジスタはデータ要素位置2を特定し、第2のスカラーレジスタはデータ要素位置4を特定する。代替実施形態では第2のスカラーレジスタは末尾位置ではなく長さを指定するように設計されてもよいことが理解される。
【0066】
図9Cに示されるように、代替実施形態では、述語レジスタとソースレジスタの組み合わせを使用して必要なスプライス制御情報を指定してもよい。図9Cに示される例ではソースレジスタ365が先頭のデータ要素位置を特定し、この例ではその位置はデータ要素位置2である。スプライス述語レジスタ370は、末尾のデータ位置(図9Cに示されるように、この例では4)を特定してもよいし、あるいは、長さ(この例では3)を指定することもできる。述語レジスタ370が長さを特定するように設計し、スカラーレジスタ365が先頭位置を特定するように設計すると、図8のスライディングウィンドウ設計などのいくつかの実施形態では有用な場合がある。具体的には、スプライス命令の各回の繰り返しで、長さは毎回3なので、述語レジスタの内容を更新する必要がなくなり、代わりに、新しい先頭のデータ要素位置を特定するために、各回の繰り返しでスカラーレジスタのみを更新することもできる。
【0067】
図9Dはさらに別の代替例を示し、ここではスカラーレジスタ375が長さ(この例では3)を定め、述語レジスタ380が先頭の要素位置(この例では2)を特定する。
【0068】
図9Bから9Dのいずれかの制御レジスタの形を使用する場合は、図5から7の分析回路240、270はもはや述語分析を行わず(または単に行うだけ)、必要な制御データを提供するスカラーレジスタがあれば、その分析を行うことが理解される。
【0069】
上記の実施形態から、上に説明したスプライス命令を実行するように装置を設計することにより、スプライス命令を行うときに、指定された制御データがベクトル長を参照することなく有効データを特定し、連続するデータ要素位置を占める任意の有効データのシーケンスを選択できるので、第1のベクトル内で有効データをどのように選択するかについて高い柔軟性が得られることが分かる。ベクトル長を知っていることに依存することなく有効データ要素の境界を指定することができるので、その結果、それぞれの装置が同じ長さのベクトルを演算対象とするかどうか、または装置のいくつかが一定の他の装置が演算対象とするベクトルとは長さの異なるベクトルを演算対象とするかどうかに関わらず、さまざまな異なる装置でスプライス命令を使用することができる。したがって、結果のスプライス演算をベクトル長に依存しない様式で行うことができるので、そのようなスプライス命令を汎用ライブラリコードで容易に使用できるようになる。上に説明したスプライス命令は、例えば、フィルタ、文字列処理、疎配列の処理などのスライディングウィンドウ演算を使用するアルゴリズムなどの、多くの状況で有用である。また、スプライス命令は、命令セット内にベクトル要素の回転/シフト命令を明示的にもつ必要に取って代わる。
【0070】
図10は、使用されてもよい仮想マシン実装を示す。前述した実施形態は本発明を、関連技法をサポートする特定の処理ハードウェアを動作させるための装置および方法の観点から実装するが、ハードウェアデバイスのいわゆる仮想マシン(virtual machine)実装を提供することも可能である。これらの仮想マシン実装は、仮想マシンプログラム405をサポートするホストオペレーティングシステム410を実行するホストプロセッサ415上で実行する。通常、合理的な速度で実行する仮想マシン実装を提供するには大型で強力なプロセッサが必要だが、そのような手法は、互換性または再利用の理由から別のプロセッサ用のネイティブのコードを実行させるための要望がある場合などの、特定の状況では正当化されてもよい。仮想マシンプログラム405はアプリケーションプログラム400にアプリケーションプログラムインタフェースを提供し、それは、仮想マシンプログラム405によってモデル化される実際のハードウェアデバイスによって提供されるアプリケーションプログラムインタフェースと同じものである。よって、プログラム命令は、前述したスプライス命令を含め、仮想マシンプログラム405を使用して仮想マシンハードウェアとのインタラクションをモデリングするアプリケーションプログラム400の中から実行されてもよい。
【0071】
本出願において、「〜ように構成される」という表記は、装置の要素が、定められた動作を行うことが可能な構成を有することを意味するために使用される。この文脈において、「構成」は、ハードウェアまたはソフトウェアの相互接続の配置または様式を意味する。例えば、装置が定められた動作を提供する専用のハードウェアを有してもよいし、または、プロセッサもしくは他の処理デバイスがその機能を行うようにプログラムされてもよい。「〜ように構成される」とは、定められた動作を提供するために、その装置の要素を変更する必要が一切ないことを暗に示す。
【0072】
本明細書では本発明の説明的な実施形態について、添付の図面を参照しながら詳しく説明してきたが、本発明がそれらの厳密な実施形態に制限されず、当業者によって、添付の特許請求の範囲によって定められる本発明の範囲および趣旨を逸脱することなく、さまざまな変更、追加、修正がそこに加えられてもよいことが理解される。例えば、本発明の範囲を逸脱することなく、従属請求項の特徴のさまざまな組み合わせが独立請求項の特徴と共に作成されることもできる。
図1
図2
図3
図4
図5
図6
図7
図8
図9A
図9B
図9C
図9D
図10