IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

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

特表2024-524588ベクトル合成命令のための処理装置、方法及びコンピュータプログラム
<>
  • 特表-ベクトル合成命令のための処理装置、方法及びコンピュータプログラム 図1
  • 特表-ベクトル合成命令のための処理装置、方法及びコンピュータプログラム 図2
  • 特表-ベクトル合成命令のための処理装置、方法及びコンピュータプログラム 図3
  • 特表-ベクトル合成命令のための処理装置、方法及びコンピュータプログラム 図4A
  • 特表-ベクトル合成命令のための処理装置、方法及びコンピュータプログラム 図4B
  • 特表-ベクトル合成命令のための処理装置、方法及びコンピュータプログラム 図5
  • 特表-ベクトル合成命令のための処理装置、方法及びコンピュータプログラム 図6
  • 特表-ベクトル合成命令のための処理装置、方法及びコンピュータプログラム 図7
  • 特表-ベクトル合成命令のための処理装置、方法及びコンピュータプログラム 図8
  • 特表-ベクトル合成命令のための処理装置、方法及びコンピュータプログラム 図9
  • 特表-ベクトル合成命令のための処理装置、方法及びコンピュータプログラム 図10
  • 特表-ベクトル合成命令のための処理装置、方法及びコンピュータプログラム 図11A
  • 特表-ベクトル合成命令のための処理装置、方法及びコンピュータプログラム 図11B
  • 特表-ベクトル合成命令のための処理装置、方法及びコンピュータプログラム 図12
  • 特表-ベクトル合成命令のための処理装置、方法及びコンピュータプログラム 図13
  • 特表-ベクトル合成命令のための処理装置、方法及びコンピュータプログラム 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-05
(54)【発明の名称】ベクトル合成命令のための処理装置、方法及びコンピュータプログラム
(51)【国際特許分類】
   G06F 17/16 20060101AFI20240628BHJP
【FI】
G06F17/16 D
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024500529
(86)(22)【出願日】2022-06-22
(85)【翻訳文提出日】2024-02-08
(86)【国際出願番号】 GB2022051584
(87)【国際公開番号】W WO2023002145
(87)【国際公開日】2023-01-26
(31)【優先権主張番号】2110506.9
(32)【優先日】2021-07-21
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】マンセル、デビッド ヘナ
(72)【発明者】
【氏名】ビスコンディ、エリック
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056BB32
5B056BB71
5B056FF01
5B056FF02
5B056FF10
(57)【要約】
処理装置、方法及びコンピュータプログラムが提供される。装置は、命令を復号する復号回路と、命令によって指定されたベクトル処理演算を適用する処理回路とを備える。復号回路は、複数のデータ要素位置にソースデータ要素をそれぞれ含む複数のソースベクトルレジスタ、1つ以上の更なるソースベクトルレジスタ、及び1つ以上の宛先レジスタを指定するベクトル合成命令に応答して、処理回路に、各データ要素位置について、各ソースベクトルレジスタのデータ要素位置から第1のソースデータ要素を抽出し、1つ以上の更なるソースベクトルレジスタから第2のソースデータ要素を抽出し、第1のソースデータ要素及び第2のソースデータ要素の各要素を合成することによって結果データ要素を生成し、結果データ要素を1つ以上の宛先レジスタのデータ要素位置に記憶するようにさせるために構成される。
【特許請求の範囲】
【請求項1】
処理装置であって、
命令を復号する復号回路と、
前記命令によって指定されたベクトル処理演算を、複数の入力データ項目を含む入力データベクトルに、前記入力データベクトル内のそれぞれの位置で選択的に適用する処理回路とを備え、
前記復号回路が、複数のデータ要素位置にソースデータ要素をそれぞれ含む複数のソースベクトルレジスタ、1つ以上の更なるソースベクトルレジスタ、及び1つ以上の宛先レジスタを指定するベクトル合成命令に応答して、前記処理回路に、前記複数のデータ要素位置の各データ要素位置について、
各ソースベクトルレジスタの前記データ要素位置から第1のソースデータ要素を抽出し、
前記1つ以上の更なるソースベクトルレジスタから第2のソースデータ要素を抽出し、
結果データ要素であって、結果データ要素が前記第1のソースデータ要素及び前記第2のソースデータ要素の各要素を合成することによって計算される、結果データ要素を生成するために合成演算を実行し、
前記結果データ要素を前記1つ以上の宛先レジスタの前記データ要素位置に記憶するようにさせる制御信号を生成するために構成される、処理装置。
【請求項2】
前記合成演算が、
中間データ要素を生成するソース合成演算であって、各中間データ要素が、前記第1のソースデータ要素のうちの対応する第1のソースデータ要素を前記第2のソースデータ要素と合成することによって生成される、ソース合成演算と、
前記中間データ要素を合成して前記結果データ要素を生成する中間合成演算とを含む、請求項1に記載の処理装置。
【請求項3】
前記ソース合成演算が乗算演算であり、
前記第1のソースデータ要素のうちの前記対応する第1のソースデータ要素を前記第2のソースデータ要素と合成することが、前記中間データ要素を生成するために、前記対応する第1のソースデータ要素と前記第2のソースデータ要素のうちの対応する第2のソースデータ要素とを乗算することを含む、
請求項2に記載の処理装置。
【請求項4】
前記ソース合成演算が、
前記第2のソースデータ要素から1つ以上の第1のスケーリング値を抽出することと、
前記第2のソースデータ要素から1つ以上の第2のスケーリング値を抽出することと、
前記1つ以上の第1のスケーリング値のうちの対応する第1のスケーリング値を前記第1のソースデータ要素のうちの対応する第1のソースデータ要素に加算して前記対応する中間スケーリングされた要素を生成する加算演算、及び前記対応する第1のソースデータ要素から前記対応する第1のスケーリング値を減算して前記対応する中間スケーリングされた要素を生成する減算演算のうちの1つを実行することと、
前記中間データ要素のうちの対応する中間データ要素を生成するために、前記対応する中間スケーリングされた要素の各々に、前記1つ以上の第2のスケーリング値の対応する第2のスケーリング値を乗算することとを含む、スケーリング演算である、請求項2に記載の処理装置。
【請求項5】
前記中間合成演算が、累積演算であり、
前記中間データ要素を合成して前記結果データ要素を生成することが、前記中間データ要素を累積することを含む、
請求項2~4のいずれか一項に記載の処理装置。
【請求項6】
前記中間データ要素が第1の中間データ要素であり、前記中間合成演算が、
前記第1の中間データ要素を合成して第2の中間データ要素を生成する第1の中間合成演算と、
前記第2の中間データ要素を、前記1つ以上の宛先レジスタの前記データ要素位置から抽出された宛先データ要素と合成する第2の中間合成演算とを含む、請求項2~4のいずれか一項に記載の処理装置。
【請求項7】
前記第1の中間合成演算が累積演算であり、
前記第2の中間データ要素を生成するために前記第1の中間データ要素を合成することが、前記第1の中間要素を累算することを含む、
請求項6に記載の処理装置。
【請求項8】
前記第2の中間合成演算が累積演算であり、
前記第2の中間データ要素を前記宛先データ要素と合成することが、前記第2の中間データ要素を前記宛先データ要素と累算することを含む、
請求項6又は7に記載の処理装置。
【請求項9】
各データ要素位置について、前記ソース合成演算の少なくともサブセットが、前記中間合成演算と並列に実行される、請求項2~8のいずれか一項に記載の処理装置。
【請求項10】
前記合成演算が、前記結果データ要素として、前記第1のソースデータ要素及び前記第2のソースデータ要素のドット積を生成するためのドット積演算を含む、請求項1に記載の処理装置。
【請求項11】
各結果データ要素の結果データ要素サイズが、各ソースデータ要素のソースデータ要素サイズに等しい、請求項1~10のいずれか一項に記載の処理装置。
【請求項12】
各結果データ要素の結果データ要素サイズが、各ソースデータ要素のソースデータ要素サイズよりも大きい、請求項1~10のいずれか一項に記載の処理装置。
【請求項13】
前記ソースデータ要素サイズが8ビットであり、前記結果データ要素サイズが32ビットであるか、又は
前記ソースデータ要素サイズが16ビットであり、前記結果データ要素サイズが64ビットである、
かのいずれかである、請求項12に記載の処理装置。
【請求項14】
前記1つ以上の宛先レジスタのうちの宛先レジスタの数が、前記結果データ要素サイズと前記ソースデータ要素サイズとの比に基づいて決定される、請求項11~13のいずれか一項に記載の処理装置。
【請求項15】
前記1つ以上の宛先レジスタが、前記宛先レジスタの数に等しい数の行と、各宛先レジスタ内のデータ要素の数に等しい数の列とを含む結果アレイを形成するように配置され、
結果データ要素が、行優先順序で前記結果アレイに配置される、
請求項14に記載の処理装置。
【請求項16】
前記1つ以上の宛先レジスタが、前記宛先レジスタの数に等しい数の行と、各宛先レジスタ内のデータ要素の数に等しい数の列とを含む結果アレイを形成するように配置され、
結果データ要素が、列優先順序で前記結果アレイに配置される、
請求項14に記載の処理装置。
【請求項17】
前記ベクトル合成命令が、前記1つ以上の更なるソースベクトルレジスタ内の前記第2のソースデータ要素の場所を指定する、請求項1~16のいずれか一項に記載の処理装置。
【請求項18】
前記複数のソースベクトルレジスタが、2つのソースベクトルレジスタを含み、前記1つ以上の更なるソースベクトルレジスタが各々、2つのソースデータ要素を含む、請求項1~17のいずれか一項に記載の処理装置。
【請求項19】
前記複数のソースベクトルレジスタが、4つのソースベクトルレジスタを含み、前記1つ以上の更なるソースベクトルレジスタがそれぞれ4つのソースデータ要素を含む、請求項1~17のいずれか一項に記載の処理装置。
【請求項20】
各データベクトルの各要素が、
符号付き整数値と、
符号なし整数値とのうちの1つを含む、請求項1~19のいずれか一項に記載の処理装置。
【請求項21】
前記1つ以上の更なるベクトルレジスタの各要素が、
符号付き整数値と、
符号なし整数値とのうちの1つを含む、請求項1~20のいずれか一項に記載の処理装置。
【請求項22】
前記処理回路が、各データ要素位置について前記結果データ要素を並列に生成するように構成される、請求項1~21のいずれか一項に記載の処理装置。
【請求項23】
前記1つ以上の更なるソースベクトルレジスタから抽出された第2のソースデータ要素の数が、前記複数のソースレジスタ内のソースレジスタの数に等しい、請求項1~22のいずれか一項に記載の処理装置。
【請求項24】
前記1つ以上の宛先レジスタが、1つ以上のタイルレジスタの1つ以上の水平又は垂直タイルスライスであり、前記1つ以上のタイルレジスタの各々が、データ要素の垂直及び水平にアドレス可能な2次元アレイを含む、請求項1~23のいずれか一項に記載の処理装置。
【請求項25】
前記1つ以上の更なるソースベクトルレジスタが、前記複数のソースベクトルレジスタと同じ数のベクトルレジスタを含み、
前記1つ以上の更なるソースベクトルレジスタから前記第2のソースデータ要素を抽出することが、各更なるソースベクトルレジスタの前記データ要素位置から前記第2のソースデータ要素を抽出することを含む、
請求項1~24のいずれか一項に記載の処理装置。
【請求項26】
前記1つ以上の更なるソースベクトルレジスタから前記第2のソースデータ要素を抽出することが、各データ要素位置についてソースデータ要素の同じセットを抽出することを含む、請求項1~24のいずれか一項に記載の処理装置。
【請求項27】
前記1つ以上の更なるソースベクトルレジスタが、単一の更なるソースベクトルレジスタを含む、請求項26に記載の処理装置。
【請求項28】
命令を復号する復号回路と、前記命令によって指定されたベクトル処理演算を、複数の入力データ項目を含む入力データベクトルに前記入力データベクトル内のそれぞれの位置で選択的に適用する処理回路とを備える処理装置を動作させるための方法であって、
前記復号回路を使用して、複数のデータ要素位置にソースデータ要素をそれぞれ含む複数のソースベクトルレジスタ、1つ以上の更なるソースベクトルレジスタ、及び1つ以上の宛先レジスタを指定するベクトル合成命令に応答して、前記処理回路に、前記複数のデータ要素位置の各データ要素位置について、
各ソースベクトルレジスタの前記データ要素位置から第1のソースデータ要素を抽出する工程と、
前記1つ以上の更なるソースベクトルレジスタから第2のソースデータ要素を抽出する工程と、
結果データ要素を生成するために合成演算を実行する工程であって、前記結果データ要素が、前記第1のソースデータ要素及び前記第2のソースデータ要素の各要素を合成することによって計算される、工程と、
前記結果データ要素を前記1つ以上の宛先レジスタの前記データ要素位置に記憶する工程とを実行させる制御信号を生成することを含む、方法。
【請求項29】
命令実行環境を提供するようにホスト処理装置を制御するコンピュータプログラムであって、
命令を復号する復号論理と、
前記命令によって指定されたベクトル処理演算を、複数の入力データ項目を含む入力データベクトルに、前記入力データベクトル内のそれぞれの位置において選択的に適用する処理論理とを備え、
前記復号論理が、複数のデータ要素位置にソースデータ要素をそれぞれ含む複数のソースベクトルレジスタ、1つ以上の更なるソースベクトルレジスタ、及び1つ以上の宛先レジスタを指定するベクトル合成命令に応答して、前記処理論理に、前記複数のデータ要素位置の各データ要素位置について、
各ソースベクトルレジスタの前記データ要素位置から第1のソースデータ要素を抽出し、
前記1つ以上の更なるソースベクトルレジスタから第2のソースデータ要素を抽出し、
結果データ要素であって、結果データ要素が前記第1のソースデータ要素及び前記第2のソースデータ要素の各要素を合成することによって計算される、結果データ要素を生成するために合成演算を実行し、
前記結果データ要素を前記1つ以上の宛先レジスタの前記データ要素位置に記憶するようにさせる制御信号を生成するために構成される、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
処理装置は、ベクトル処理演算を実行する処理回路を備えることができる。そのような演算は、1つ以上の命令の効率的な処理を可能にするように設計された処理回路を用いたベクトルレジスタの要素に対する演算を伴い得る。
【0002】
いくつかの例示的な構成によれば、命令を復号する復号回路と、命令によって指定されたベクトル処理演算を、入力データベクトル内のそれぞれの位置に複数の入力データ項目を含む入力データベクトルに選択的に適用する処理回路とを備える処理装置が提供され、復号回路は、複数のデータ要素位置にソースデータ要素をそれぞれ含む複数のソースベクトルレジスタ、1つ以上の更なるソースベクトルレジスタ、及び1つ以上の宛先レジスタを指定するベクトル合成命令に応答して、処理回路に、複数のデータ要素位置の各データ要素位置について、各ソースベクトルレジスタのデータ要素位置から第1のソースデータ要素を抽出し、1つ以上の更なるソースベクトルレジスタから第2のソースデータ要素を抽出し、結果データ要素を生成するために合成演算を実行するようにさせる制御信号を生成するように構成され、結果データ要素は、第1のソースデータ要素及び第2のソースデータ要素の各要素を合成することによって計算され、結果データ要素を1つ以上の宛先レジスタのデータ要素位置に記憶する。
【0003】
他の例示的な構成によれば、命令を復号する復号回路と、入力データベクトル内のそれぞれの位置に複数の入力データ項目を含む入力データベクトルに、命令によって指定されたベクトル処理演算を選択的に適用する処理回路とを備える処理装置を動作させる方法が提供され、方法は、復号回路を使用して、複数のデータ要素位置にソースデータ要素をそれぞれ含む複数のソースベクトルレジスタ、1つ以上の更なるソースベクトルレジスタ、及び1つ以上の宛先レジスタを指定するベクトル合成命令に応答して、処理回路に、複数のデータ要素位置の各データ要素位置について、各ソースベクトルレジスタのデータ要素位置から第1のソースデータ要素を抽出する工程と、1つ以上の更なるソースベクトルレジスタから第2のソースデータ要素を抽出する工程と、結果データ要素を生成するために合成演算を実行する工程であって、結果データ要素は、第1のソースデータ要素及び第2のソースデータ要素の各要素を合成することによって計算される、工程と、結果データ要素を1つ以上の宛先レジスタのデータ要素位置に記憶する工程とを実行させる制御信号を生成することを含む。
【0004】
他の例示的な構成によれば、命令実行環境を提供するようにホスト処理装置を制御するためのコンピュータプログラムが提供され、このコンピュータプログラムは、命令を復号する復号論理と、命令によって指定されたベクトル処理演算を、入力データベクトル内のそれぞれの位置に複数の入力データ項目を含む入力データベクトルに選択的に適用する処理論理とを備え、復号論理は、複数のデータ要素位置にソースデータ要素をそれぞれ含む複数のソースベクトルレジスタ、1つ以上の更なるソースベクトルレジスタ、及び1つ以上の宛先レジスタを指定するベクトル合成命令に応答して、処理論理に、複数のデータ要素位置の各データ要素位置について、各ソースベクトルレジスタのデータ要素位置から第1のソースデータ要素を抽出し、1つ以上の更なるソースベクトルレジスタから第2のソースデータ要素を抽出し、結果データ要素を生成するために合成演算を実行するようにさせる制御信号を生成するように構成され、結果データ要素は、第1のソースデータ要素及び第2のソースデータ要素の各要素を合成することによって計算され、結果データ要素を1つ以上の宛先レジスタのデータ要素位置に記憶する。
【図面の簡単な説明】
【0005】
添付図面に示されるそれらの実施形態を参照して、あくまで一例として本技法を更に説明する。
図1】本技法の様々な構成による、処理装置を概略的に示す。
図2】本技法の様々な構成による処理回路の更なる詳細を概略的に示す。
図3】本技法の様々な構成による処理回路の更なる詳細を概略的に示す。
図4A】本技法の様々な構成による、ベクトル合成命令を実行するために使用される処理装置の更なる詳細を概略的に示す。
図4B】本技法の様々な構成による、ベクトル合成命令を実行するために使用される処理装置の更なる詳細を概略的に示す。
図5】本技法の様々な構成によるベクトルレジスタ及びタイルレジスタの詳細を概略的に示す。
図6】本技法の様々な構成による処理回路の更なる詳細を概略的に示す。
図7】本技法の様々な構成による処理回路の更なる詳細を概略的に示す。
図8】本技法の様々な構成による処理回路の更なる詳細を概略的に示す。
図9】本技法の様々な構成による処理回路の更なる詳細を概略的に示す。
図10】本技法の様々な構成による処理回路の更なる詳細を概略的に示す。
図11A】本技法の様々な構成による処理回路の更なる詳細を概略的に示す。
図11B】本技法の様々な構成による処理回路の更なる詳細を概略的に示す。
図12】本技法の様々な構成による処理回路の更なる詳細を概略的に示す。
図13】本技法の様々な構成による、処理装置によって実行される一連の工程を概略的に示す。
図14】本技法の様々な構成による処理装置のシミュレータ実装を概略的に示す。
【0006】
いくつかの例示的な構成は、命令を復号する復号回路と、命令によって指定されたベクトル処理演算を、入力データベクトル内のそれぞれの位置に複数の入力データ項目を含む入力データベクトルに選択的に適用する処理回路とを備える処理装置を提供する。復号回路は、それぞれが複数のデータ要素位置にソースデータ要素を含む複数のソースベクトルレジスタ、1つ以上の更なるソースベクトルレジスタ、及び1つ以上の宛先レジスタを指定するベクトル合成命令に応答して、制御信号を生成するように構成される。処理装置は、処理回路に、複数のデータ要素位置の各データ要素位置について、各ソースベクトルレジスタのデータ要素位置から第1のソースデータ要素を抽出し、1つ以上の更なるソースベクトルレジスタから第2のソースデータ要素を抽出し、結果データ要素を生成するために合成演算を実行するようにさせる制御信号を生成するように構成され、結果データ要素は、第1のソースデータ要素及び第2のソースデータ要素の各要素を合成することによって計算され、結果データ要素を1つ以上の宛先レジスタのデータ要素位置に記憶する。
【0007】
処理装置は、入力データベクトルに対してデータ処理演算を実行する処理回路を備えることができる。入力データベクトルは、データベクトル内の異なる位置に複数のデータ要素を有する。いくつかの処理装置は、算術演算又は論理演算を実行して、入力データベクトルからの要素を合成し、結果データベクトルに記憶するための結果データ要素を生成するように構成される。本発明者らは、特定のタイプの計算中に特定の演算を繰り返し実行することが望まれることが多いことを認識した。これらの演算は、一般的な処理回路を使用して実行される多数の既存の命令を実行することによって、例えば、一度に1つのソース要素に対して動作することによって提供することができるが、この手法は、性能に著しい影響を及ぼす可能性がある。したがって、単一のベクトル合成命令に応答するように調整された特定の回路を有する処理回路を提供することによって、特に効率的な処理装置を提供することができる。
【0008】
このため、本構成はベクトル合成命令に応答するように構成されている。ベクトル合成命令は、処理回路と対話するプログラマに利用可能な命令の完全なセットを提供する命令セットアーキテクチャの一部である。命令セットアーキテクチャの命令は、命令に応答するように処理回路を制御するために、命令セットアーキテクチャの命令を解釈するように機能する復号回路によって復号される。各ベクトル合成命令は、複数(すなわち、2つ以上)のソースベクトルレジスタを指定する。複数のソースベクトルレジスタの各々は、複数のデータ要素位置に記憶された複数のデータ要素から構成される。異なるサイズのデータ要素は、特定の構成に従って提供されてもよく、特定の構成に基づいて柔軟に調整されてもよい。いくつかの例示的な構成では、ベクトルレジスタは、例えば、8ビットサイズの64個のデータ要素、16ビットサイズの32個のデータ要素、32ビットサイズの16個のデータ要素、64ビットサイズの8個のデータ要素、128ビットサイズの4個のデータ要素、又は256ビットサイズの2個のデータ要素として構成され得る512ビットベクトルレジスタである。他の例示的な構成では、ベクトルレジスタは、例えば、16ビットサイズの16個のデータ要素、8ビットサイズの32個のデータ要素、32ビットサイズの8個のデータ要素、又は64ビットサイズの4個のデータ要素として構成され得る256ビットベクトルレジスタである。これらのサイズは例としてのみ提供され、他のベクトルレジスタサイズが本明細書で説明される構成に組み込まれ得ることが、当業者には容易に明らかになるであろう。ベクトル合成命令はまた、1つ以上の更なるソースベクトルレジスタを指定し、1つ以上の更なるソースベクトルレジスタは、複数のソースベクトルレジスタに加えて指定される。1つ以上の更なるソースベクトルレジスタはそれぞれ、更なる複数のデータ要素位置における更なる複数のデータ要素から構成される。ベクトル合成命令はまた、複数の宛先データ要素位置における複数の宛先データ要素から構成される1つ以上の宛先レジスタを指定する。1つ以上の更なるソースベクトルレジスタの各々及び1つ以上の宛先レジスタの各々は、複数のソースレジスタと同じサイズの同じ数のデータ要素を有するように構成され得る。代替的に、1つ以上の更なるソースベクトルレジスタ及び/又は1つ以上の宛先レジスタは、複数のソースレジスタに対して異なるサイズの異なる数のデータ要素を保持するように構成され得る。
【0009】
復号回路は、ベクトル合成命令に応答して、処理回路に、複数のデータ要素位置の各データ要素位置について一連の工程を実行させる。例えば、各ソースレジスタがN個のデータ要素を保持する場合、復号回路は、処理回路に、データ要素位置0、1、2、...、N-2、N-1に対する工程を実行させる。工程は逐次的に提示されるが、これは説明目的のためだけであり、任意の以下の工程は、指定された順序とは異なる順序で実行されてもよく、又は複数の工程が並列に実行されてもよい。復号回路は、処理回路に第1のソースデータ要素のセットを抽出させる。第1のソースデータ要素の各々は、各ソースベクトルレジスタのデータ要素位置から抽出される。復号回路はまた、処理回路に、1つ以上の更なるソースベクトルレジスタからソースデータ要素の第2のセットを抽出させる。第1のソースデータ要素の要素は、各データ要素が複数のソースベクトルレジスタのうちの異なる1つの同じデータ要素位置から抽出されるように抽出される。第2のソースデータ要素の各データ要素は、1つ以上の更なるソースベクトルレジスタから抽出される。しかしながら、第2のソースデータ要素が抽出される更なるソースベクトルレジスタ内の位置は、そのように限定されず、実装された構成に基づいて柔軟に決定され得る。復号回路はまた、結果データ要素を生成するために合成演算を実行するように処理回路を制御するように構成される。結果データ要素は、結果データ要素が第1のソースデータ要素及び第2のソースデータ要素の各データ要素に依存するように、第1のソースデータ要素及び第2のソースデータ要素からの要素を合成することによって計算される。このようにして、各結果データ要素は、複数のソースベクトルレジスタの各々から抽出されたデータ要素と、1つ以上の更なるソースベクトルレジスタから抽出されたデータ要素とに依存する。復号回路はまた、結果データ要素を1つ以上の宛先レジスタのデータ処理要素位置に記憶するように処理回路を制御する。このようにして、生成される結果データ要素の数は、複数のソースベクトルレジスタの各々における要素の数に等しい。
【0010】
合成演算は限定されず、合成演算の様々な構成が以下で説明される。いくつかの例示的な構成では、合成演算は、中間データ要素を生成するソース合成演算であって、各中間データ要素が、第1のソースデータ要素のうちの対応する第1のソースデータ要素を第2のソースデータ要素と合成することによって生成される、ソース合成演算と、中間データ要素を合成して結果データ要素を生成する中間合成演算とを含む。ソース合成演算及び中間合成演算という用語は、実行される合成演算を区別するために(例えば、実行される数学演算又は論理演算を区別するために)使用される。これらの演算は、回路の同じ機能ブロックによって並列に実行されてもよく、又は互いに対して順次動作する回路の順次ブロックによって実行されてもよいことが当業者によって理解されよう。ソース合成演算は、中間データ要素を生成するために、第1のソースデータ要素の各対応する第1のソースデータ要素を第2のソースデータ要素と合成する。したがって、各中間データ要素は、対応する第1のソースデータ要素及び第2のソースデータ要素の1つ以上の要素に依存する。合成演算は、第2のソースデータ要素の各第2のソースデータ要素、又は第2のソースデータ要素のサブセットのみを使用することができる。結果として、中間データ要素の数は、第1のソースデータ要素の数と同じである。合成演算はまた、中間データ要素の各々を一緒に合成することによって結果データ要素を生成する中間合成演算を含む。したがって、中間合成演算によって単一の結果データ要素が生成される(ただし、これは、複数のソースベクトルレジスタ内の複数のデータ要素位置の各データ要素位置に対して順次又は並列に繰り返される)。
【0011】
いくつかの構成では、ソース合成演算は乗算演算であり、第1のソースデータ要素のうちの対応する第1のソースデータ要素を第2のソースデータ要素と合成することは、中間データ要素を生成するために、対応する第1のソースデータ要素と第2のソースデータ要素のうちの対応する第2のソースデータ要素とを乗算することを含む。したがって、中間データ要素は、1つ以上の更なるソースベクトルレジスタの要素によって乗算された複数のソースベクトルの各々の同じ位置から受け取った要素を含む。これらの構成において、中間データ要素内の要素は、以下の式によって表すことができる。
【0012】
【数1】
すなわちIj,i=Sj,ix Fj,iであり、ここで、I-j,iは複数のソースベクトルレジスタの各々のj番目の位置から抽出されたデータ要素に対応する中間データ要素のi番目の要素であり、Sj,iは、複数のソースベクトルのi番目のソースベクトルのj番目の要素であり、Fj,iは、複数のソースベクトルのj番目のデータ要素位置から抽出された第1のソースデータ要素を含む合成演算について抽出された第2のソースデータ要素のi番目の要素である。いくつかの構成では、データ要素Fj,iは、jの全ての値について同じデータ要素である。代替構成では、要素Fj,iは、jの値ごとに1つ以上の更なるソースベクトルレジスタの異なる部分から抽出された異なるデータ要素である。そのような構成では、1つ以上の更なるソースベクトルレジスタは、ベクトル合成命令に応答して複数のソースベクトルレジスタのうちの1つによって各々乗算されるべきデータ要素のセットを含む。
【0013】
いくつかの代替構成では、ソース合成演算は、第2のソースデータ要素から1つ以上の第1のスケーリング値を抽出することと、第2のソースデータ要素から1つ以上の第2のスケーリング値を抽出することと、1つ以上の第1のスケーリング値のうちの対応する第1のスケーリング値を第1のソースデータ要素のうちの対応する第1のソースデータ要素に加算して対応する中間スケーリングされた要素を生成する加算演算、及び対応する第1のソースデータ要素から対応する第1のスケーリング値を減算して対応する中間スケーリングされた要素を生成する減算演算のうちの1つを実行することと、中間データ要素のうちの対応する中間データ要素を生成するために、対応する中間スケーリングされた要素の各々に、1つ以上の第2のスケーリングの対応する第2のスケーリング値を乗算することとを含むスケーリング演算である。したがって、中間データ要素は、第2のソースデータ要素に記憶された(及び1つ以上の更なるソースベクトルレジスタから抽出された)情報に基づく、(第1の複数のソースベクトルレジスタから抽出された)第1のソースデータ要素のスケーリングに対応する。これらの代替構成では、中間データ要素内の要素は、以下の式によって表すことができる。
【0014】
【数2】
すなわち、Ii,j=(Sj,i±F1)F2であり、ここで、F1及びF2は、それぞれ、第2のソースデータ要素から抽出された1つ以上の第1のスケーリング値及び第2のソースデータ要素からの1つ以上の第2のスケーリング値である。複数のソースベクトルのうちのi番目のソースベクトルのj番目の要素に対応する第1のソースデータ値Si,jは、対応する第1のスケーリング値(すなわち、i番目のソースベクトルレジスタから抽出された第1のソースデータ要素に使用される第1のスケーリング値)の加算又は減算を通して修正され、次いで、対応する第2のスケーリング値(すなわち、i番目のソースベクトルレジスタから抽出された第1のソースデータ要素に使用される第2のスケーリング値)によって乗算される。したがって、中間データ要素は、第2のソースデータ要素のスケーリングされたバージョンに対応する。そのような構成は、データ要素が複数のソースレジスタに圧縮された形態で記憶されることを可能にするために使用することができ、合成命令は、更なる演算(この場合、中間合成演算)が適用される前に、最初にデータ要素を解凍するために使用することができる。いくつかの構成では、1つ以上の第1のスケーリング値は、複数のソースベクトルレジスタの各々に対応する単一の第1のスケーリング値とすることができ、第2のスケーリング値は、複数のソースベクトルレジスタの各々に対応する単一の第2のスケーリング値とすることができる。このような構成では、中間データ要素は、以下の式を使用して表すことができる。
【0015】
【数3】
すなわち、Ii,j=(Sj,i±F1)F2であり、ここで、F1及びF2は、それぞれ、単一の第1のスケーリング値及び単一の第2のスケーリング値である。
【0016】
中間合成演算は、多様に定義することができ、いくつかの構成では、式(1)に記載のソース合成演算と合成することができ、又は他の構成では、式(2)又は式(3)に記載のソース合成演算と合成することができる。いくつかの例示的な構成では、中間合成演算は累積演算であり、中間データ要素を合成して結果データ要素を生成することは、中間データ要素を累算することを含む。したがって、中間合成演算は、複数のソースベクトルレジスタの複数のデータ要素位置の各データ要素位置について、中間データ要素の全てを受け取り、それらを累算して単一の結果データ要素を生成する。数学的には、累積演算は次のように表すことができる。
【0017】
【数4】
すなわちR=全てのiについての和(Ij,i)であり、ここで、Rは、1つ以上の宛先ベクトルレジスタのj番目の要素であり、Ij,iは、式(1)~(3)のいずれかによって記述されるような、複数のソースベクトルレジスタの各々のj番目の位置から抽出されたデータ要素に対応する中間データ要素のi番目の要素である。Ij,iが式(1)に従って記述される場合、合成演算は、第1のソースデータ要素の各々が第2のソースデータ要素でドット化される一連のドット積演算を含むことを認識されたい。したがって、ベクトル合成演算は、ベクトルの第1のセットの各々が複数のソースベクトルレジスタの同じ位置からのデータ要素を含む、ベクトルの第1のセットと、1つ以上の更なるソースベクトルレジスタに含まれる第2のベクトルとの間の複数ドット積演算として機能する。したがって、ベクトル合成命令は、複数の入力ベクトルレジスタの各々が行列の列の要素を含み、1つ以上の更なるソースベクトルレジスタがベクトルの要素を含む行列-ベクトル乗算演算を実行するために使用され得る。
【0018】
いくつかの例示的な構成では、中間データ要素は第1の中間データ要素であり、中間合成演算は、第1の中間データ要素を合成して第2の中間データ要素を生成する第1の中間合成演算と、第2の中間データ要素を1つ以上の宛先レジスタのデータ要素位置から抽出された宛先データ要素と合成する第2の中間合成演算とを含む。このようにして、宛先レジスタは、複数のソースベクトルレジスタ及び1つ以上の更なるソースベクトルレジスタと合成されるべきデータ要素の更なるセットを記憶するために使用され得る。これにより、ベクトル合成命令に応答するときの処理装置の柔軟性が向上する。
【0019】
第1の中間合成演算及び第2の中間合成演算は、多様に定義することができる。いくつかの例示的な構成では、第1の中間合成演算は累積演算であり、第2の中間データ要素を生成するために第1の中間データ要素を合成することは、第1の中間要素を累算することを含む。このような構成では、第2の中間データ要素は次のように表すことができる。
【0020】
【数5】
すなわちI2=全てのiについての和(Ij,i)であり、ここで、I2は、複数のソースベクトルレジスタの各々のj番目の位置から抽出されたデータ要素に対応する第2の中間データ要素の要素であり、Ij,iは、式(1)~(3)のいずれかによって記述されるような、複数のソースベクトルレジスタの各々のj番目の位置から抽出されたデータ要素に対応する中間データ要素のi番目の要素である。
【0021】
第2の中間合成演算は、多様に定義することができる。いくつかの例示的な構成では、第2の中間合成演算は、第2の中間データ要素の値をマスクするマスキング演算、又は第2の中間データ要素をスケーリングする乗算演算若しくはスケーリング演算のうちの1つである。いくつかの構成では、第2の中間合成演算は累積演算であり、第2の中間データ要素を宛先データ要素と合成することは、第2の中間データ要素を宛先データ要素と累算することを含む。そのような構成では、結果データ要素は次のように表すことができる。
【0022】
【数6】
すなわちR=Rj+全てのiにわたるSUM(I2j,i)であり、ここで、用語R=R+Xは、値Rが、Rの既存の値とXを累算することによって生成されることを意味すると解釈されることに留意されたい。このようにして、ベクトル合成命令は、式(1)に示されるように、I2j,iがIj,iに基づいて定義されると、一連の累積ドット積演算又は累積行列-ベクトル積演算を実行するために提供され得る。
【0023】
合成演算が第1の合成演算及び第2の合成演算として分割される構成の場合、第1の処理演算及び第2の処理演算は、順次又は並列に実行され得る。いくつかの構成では、各データ要素位置について、第1の合成演算の少なくともサブセットが、第2の合成演算と並列に実行される。第1の合成演算のサブセットは、各第1の合成演算の一部が第2の合成演算の一部と並列に実行されるように、各演算のサブセットを指すことができる。代替的に又は追加的に、処理回路は、第1の合成演算のサブセットが、完全な第2の合成演算と並列に実行される完全な合成演算のサブセットを含むように配置されてもよい。例えば、第1の合成演算が乗算演算であり、第2の合成演算が累積演算である構成では、第1の合成演算及び第2の合成演算は、第1の合成演算の乗算演算を第2の合成演算の合成演算と並列に実行するために、1つ以上の融合型乗算累積回路を使用して実装され得る。このようにして、合成演算は、コンパクトで効率的な方法で回路に実装することができる。
【0024】
いくつかの構成では、合成演算は、結果データ要素として、第1のソースデータ要素と第2のソースデータ要素とのドット積を生成するためのドット積演算を含む。そのような構成では、ドット積演算は、任意のドット積回路を使用して実装することができる。いくつかの例示的な構成では、ドット積演算は、上述したように第1の合成演算及び第2の合成演算に分割することができるが、他の構成では、ドット積演算は、ドット積演算の乗算及び加算工程に必要な全ての回路を組み込む単一の機能回路によって実行することができる。
【0025】
1つ以上の宛先レジスタの結果データ要素は、多様に定義されてよく、いくつかの構成では、1つ以上の宛先レジスタ全体に分散される。いくつかの構成では、結果データ要素のサイズは、ベクトル合成命令において指定される。いくつかの例示的な構成では、各結果データ要素の結果データ要素サイズは、各ソースデータ要素のソースデータ要素サイズに等しい。そのような構成では、1つ以上の宛先レジスタは、複数のソースベクトルレジスタの各々と同じサイズ(ビット数及びデータ要素の数)である単一の宛先レジスタである。いくつかの構成では、各結果データ要素の結果データ要素サイズは、各ソースデータ要素のソースデータ要素サイズよりも大きい。そのような構成では、ベクトル合成命令は、データ要素に関連付けられたビットの数を広げるための拡張命令であり、結果データ要素は、複数の宛先レジスタにわたって拡散される。
【0026】
例えば、いくつかの構成では、ソースデータ要素サイズは8ビットのうちの1つであり、結果データ要素サイズは32ビットであり、ソースデータ要素サイズは16ビットであり、結果データ要素サイズは64ビットである。いくつかの構成では、1つ以上の宛先レジスタのうちのいくつかの宛先レジスタは、結果データ要素サイズとソースデータ要素サイズとの比に基づいて決定される。結果及びソースデータ要素サイズの前述のセットの各々において、結果データ要素サイズは、ソースデータ要素サイズの4倍の大きさであり、したがって、1つ以上の宛先レジスタは、4つの宛先レジスタを含む。このようにして、精度を失うことなく合成演算を実行できるようにするために、1つ以上の宛先レジスタに十分な数のビットを提供することが可能である。
【0027】
宛先レジスタ内の結果要素の分布は、多様に定義することができる。いくつかの例示的な構成では、1つ以上の宛先レジスタは、宛先レジスタの数に等しい行の数と、各宛先レジスタ内のデータ要素の数に等しい列の数とを含む結果アレイを形成するように配置され、結果データ要素は、行優先順序で結果アレイ内に配置される。このようにして、結果要素は、ソースレジスタに現れる順序と同じ順序になるように、1つ以上の宛先レジスタに配置することができる。いくつかの代替構成では、1つ以上の宛先レジスタは、宛先レジスタの数に等しい行の数と、各宛先レジスタ内のデータ要素の数に等しい列の数とを含む結果アレイを形成するように配置され、結果データ要素は、列優先順序で結果アレイ内に配置される。このように1つ以上の宛先レジスタ内に結果データ要素を配置することによって、結果データ要素は、宛先レジスタ内の、ソースデータ要素が抽出される場所により近い位置に記憶され、したがって、よりコンパクトな設計を実現することができる。
【0028】
いくつかの例示的な構成では、処理回路は、1つ以上の更なるソースベクトルレジスタ内のデータ要素の全てを使用する。しかしながら、いくつかの構成では、1つ以上の更なるソースベクトルレジスタのデータ要素のサブセットのみが使用される。ソース要素の選択は、データ処理装置にハードコード化することができる。しかしながら、いくつかの構成では、ベクトル合成命令は、1つ以上の更なるソースベクトルレジスタ内の第2のソースデータ要素の場所を指定する。これは、改善された柔軟性を提供し、同じ更なるソースベクトルレジスタが複数のベクトル合成演算のために使用されることを可能にすることができる。いくつかの構成では、1つ以上の更なるソースベクトルレジスタ内で指定された場所は、1つ以上の更なるソースベクトルレジスタ内の特定の場所に対応する。代替的に、場所は、1つ以上の更なるソースベクトルレジスタの複数のサブセクションの各々内の相対場所を指す。これは、1つ以上の更なるソースベクトルレジスタの異なる部分が各演算のために使用され、場所が演算の現在のインスタンスのために読み取られる場所に対して指定される、反復ベクトル合成演算を実行するための特に効率的な装置を提供する。いくつかの例示的な構成では、複数のソースベクトルレジスタ、1つ以上の更なるソースベクトルレジスタ、及び1つ以上の宛先レジスタの各々は、チャンクに分割され得る。例えば、レジスタ(1つ以上の更なるソースベクトルレジスタ、複数のソースベクトルレジスタ、及び宛先レジスタを含む)の各々は、4つの128ビットチャンクに分割することができ、ベクトル合成命令において指定された場所は、複数のソースベクトルレジスタの各々の128ビットチャンクに関して(例えば、識別された1つ以上のデータ要素の複製によって)使用されるべき、128ビットチャンクの各々内から第2のソースデータ要素として抽出されるべき1つ以上のデータ要素を識別する。例えば、要素が8ビットであり、4つの連続データ要素が(チャンク当たり合計16個の8ビット要素のうち)各128ビットチャンクから抽出される場合、選択され得る各チャンク内に4つの位置がある。この場合、相対場所は、各128ビットチャンク内の(例えば)第3の相対場所に設定することができる。この場合、データ要素8~11(すなわち、第1の128ビットチャンクの第3の位置内から)が選択され、複数のソースベクトルレジスタ内のデータ要素の第1の128ビットチャンクに関連付けられた合成演算に適用され(例えば、1つ以上の更なるソースベクトルレジスタから抽出されたデータ要素8~11を4回複製することによって、又は同じ抽出されたデータ要素を繰り返し使用することによって)、次いで、第1の128ビットチャンクに関連付けられた合成演算からの結果データ要素は、1つ以上の宛先レジスタの第1の128ビットチャンクに記憶される。データ要素24~27(すなわち、第2の128ビットチャンクの第3の位置内から)が選択され、複数のソースベクトルレジスタ内のデータ要素の第2の128ビットチャンクに関連付けられた合成演算に適用され(例えば、1つ以上の更なるソースベクトルレジスタから抽出されたデータ要素24~27を4回複製することによって、又は同じ抽出されたデータ要素を繰り返し使用することによって)、次いで、第2の128ビットチャンクに関連付けられた合成演算からの結果データ要素は、1つ以上の宛先レジスタの第2の128ビットチャンクに記憶される。データ要素40~43が選択され、複数のソースベクトルレジスタ内のデータ要素の第3の128ビットチャンクに関連付けられた合成演算に適用され(例えば、1つ以上の更なるソースベクトルレジスタから抽出されたデータ要素40~43を4回複製することによって、又は同じデータ要素を繰り返し使用することによって)、次いで、第3の128ビットチャンクに関連付けられた合成演算からの結果データ要素は、1つ以上の宛先レジスタの第3の128ビットチャンクに記憶される。データ要素56~59が選択され、複数のソースベクトルレジスタ内のデータ要素の第4の128ビットチャンクに関連付けられた合成演算に適用され(例えば、1つ以上の更なるソースベクトルレジスタから抽出されたデータ要素56~59を4回複製することによって、又は同じデータ要素を繰り返し使用することによって)、次いで、第4の128ビットチャンクに関連付けられた合成演算からの結果データ要素は、1つ以上の宛先レジスタの第4の128ビットチャンクに記憶される。128ビットサイズが例として使用され、任意のチャンクサイズ(1つ以上の更なるソースベクトルレジスタのうちの1つのサイズよりも小さい、同じ、又は大きい)が使用され得ることが、当業者には容易に明らかになるであろう。
【0029】
1つ以上の更なるソースベクトルレジスタ内で使用されるソースベクトルレジスタの数及びソースデータ要素の数は、前述の構成のいずれかに従って多様に定義され得るが、いくつかの例示的な構成では、複数のソースベクトルレジスタは2つのソースベクトルレジスタを含み、1つ以上の更なるソースベクトルレジスタはそれぞれ2つのソースデータ要素を含む。他の例示的な構成では、複数のソースベクトルレジスタは、4つのソースベクトルレジスタを含み、1つ以上の更なるソースベクトルレジスタはそれぞれ、4つのソースデータ要素を含む。
【0030】
各要素の数値フォーマットは多様に定義することができ、いくつかの例示的な構成では、各データベクトルの各要素は、符号付き整数値、及び符号なし整数値のうちの1つを含む。更に、いくつかの例示的な構成では、更なるベクトルレジスタの各要素は、符号付き整数値及び符号なし整数値のうちの1つを含む。したがって、異なる構成は、複数のソースベクトルレジスタの各データベクトルの任意の組み合わせ及び更なるベクトルレジスタを提供する。したがって、いくつかの構成では、各データベクトルの各要素は符号付き整数値であり、更なるベクトルレジスタの各要素は符号付き整数値であり、他の構成では、各データベクトルの各要素は符号付き整数値であり、更なるベクトルレジスタの各要素は符号なし整数値であり、他の構成では、各データベクトルの各要素は符号なし整数値であり、更なるベクトルレジスタの各要素は符号付き整数値であり、他の例示的な構成では、各データベクトルの各要素は符号なし整数値であり、更なるベクトルレジスタの各データ要素は符号なし整数値である。
【0031】
いくつかの例示的な構成では、処理回路は、各要素位置に対する各結果データを順に生成するように配置され、その結果、回路フットプリントが低減される。他の例示的な構成では、処理回路は、各データ要素位置について結果データ要素を並列に生成するように構成される。結果データ要素を並列に生成することにより、ベクトル合成命令の演算がより速くなり、スケーラビリティが改善される。
【0032】
説明したように、第2のソースデータ要素の数は、多様に定義することができ、ベクトル合成命令の一部として指定することができる。しかしながら、いくつかの構成では、1つ以上の更なるソースベクトルレジスタから抽出される第2のソースデータ要素の数は、複数のソースレジスタ内のソースレジスタの数に等しい。このオプションは、ドット積演算又は行列-ベクトル積計算を実行するときに特に有用である。
【0033】
いくつかの構成では、宛先レジスタはベクトルレジスタである。しかしながら、いくつかの構成では、1つ以上の宛先レジスタは、1つ以上のタイルレジスタの1つ以上の水平又は垂直タイルスライスであり、1つ以上のタイルレジスタの各々は、データ要素の垂直及び水平にアドレス可能な2次元アレイを含む。概念的には、タイルレジスタはベクトルレジスタに対するものであり、ベクトルレジスタはスカラレジスタに対するものである。タイルレジスタは、スカラデータ要素の2次元アレイを提供し、行列-ベクトル計算又は行列-行列計算に特に効率的である。各タイルレジスタは、その全体において、又はタイルレジスタの垂直若しくは水平スライス(それぞれ、列又は行に対応する)に関してアドレス指定することができる。タイルレジスタを記憶先として提供することによって、後続の算術又は論理処理演算は、結果データ要素を再順序付け又は再配置するための更なる演算を必要とせずに、結果データ要素に基づくことができる。むしろ、適切な行又は列(水平又は垂直タイルスライス)をタイルレジスタから選択することができる。
【0034】
第2のソースデータ要素が1つ以上の更なるソースベクトルレジスタから抽出される方法は、多様に定義され得る。いくつかの構成では、1つ以上の更なるソースベクトルレジスタは、複数のソースベクトルレジスタと同じ数のベクトルレジスタを含み、1つ以上の更なるソースベクトルレジスタから第2のソースデータ要素を抽出することは、各更なるソースベクトルレジスタのデータ要素位置から第2のソースデータ要素を抽出することを含む。そのような構成では、1つ以上の更なるソースベクトルレジスタは、複数のソースベクトルレジスタと同じ方法で扱われる。したがって、各データ要素位置について、第1のソースデータ要素は、複数のソースベクトルレジスタの各々について1つの要素を含み、要素は、複数のソースベクトルレジスタの各々の同じ位置から抽出される。同様に、各データ要素位置について、第2のソースデータ要素は、1つ以上のソースベクトルレジスタの各々について1つの要素を含み、1つ以上の更なるソースベクトルレジスタの各々から抽出された要素は、1つ以上の更なるソースベクトルレジスタの同じ位置から抽出されている。
【0035】
いくつかの代替構成では、1つ以上の更なるソースベクトルレジスタから第2のソースデータ要素を抽出することは、各データ要素位置についてソースデータ要素の同じセットを抽出することを含む。そのような構成では、1つ以上の更なるソースベクトルレジスタから第2のソースデータ要素を抽出する工程を繰り返し実行する必要がない場合がある。むしろ、複数のデータ要素位置の各データ要素位置における合成演算のために使用される抽出は、1回実行することができる。そのような構成では、1つ以上の更なるソースベクトルレジスタの数は、多様に定義され得る。いくつかの構成では、複数の更なるソースベクトルレジスタが定義され得る。他の構成では、1つ以上の更なるソースベクトルレジスタは、単一の更なるソースベクトルレジスタを含む。このアプローチは、より少ないベクトルレジスタを含むよりコンパクトな実装を可能にする。
【0036】
ここで、添付の図面を参照して、特定の例示的な構成を説明する。
【0037】
図1は、本技法の様々な例を具体化できる処理装置10を概略的に示す。装置はデータ処理回路12を備え、この回路は、この回路が実行する一連の命令に応答してデータ項目にデータ処理演算を行う。命令は、データ処理装置がアクセスするメモリ14から取り出され、この目的のために、当業者にはよく知られた様式でフェッチ回路16が提供される。更に、フェッチ回路16によって取り出された命令は命令復号回路18(又は復号回路とも称する)に渡され、命令復号回路18は、処理回路12並びにレジスタのセット20及びロード/ストアユニット22の構成及び演算の様々な側面を制御するように配置された制御信号を生成する。一般に、データ処理回路12はパイプライン方式で配置されてもよいが、その詳細は本技法に関連しない。図1が表す一般的な構成は当業者にはよく知られており、更に詳細な説明は、単に簡潔性の理由から免じられる。図1を見て分かるように、レジスタ20はそれぞれ、複数のデータ要素のための記憶装置を備え、処理回路が指定のレジスタ内の指定のデータ要素にデータ処理演算を適用することができ、又は、指定のレジスタ内の指定のデータ要素グループ(「ベクトル」)にデータ処理演算を適用することができるようになっている。特に、図示されたデータ処理装置は、ベクトル化されたデータ処理演算の性能に関し、特に、レジスタ20に保持されたデータ要素に関する複素数処理命令の実行に関し、その更なる説明は、いくつかの特定の実施形態を参照して以下により詳細に続く。命令の実行においてデータ処理回路12が必要とするデータ値、及び、データ処理命令の結果として生成されたデータ値は、ロード/ストアユニット22によってメモリ14に書き込まれ、メモリ14から読み出される。また、一般に、図1のメモリ14は、典型的には、処理回路が次に実行する一連の所定命令(「プログラム」)の一部として本技法の命令が記憶され得る、コンピュータ可読記憶媒体の例として見ることができることに留意されたい。ただし、処理回路は、RAM内、ROM内、ネットワークインタフェース経由等、様々な異なるソースからの、そのようなプログラムにアクセスしてもよい。本開示は、処理回路12が実行することができる様々な新規の命令を説明し、以下の図は、これらの命令の性質、これらの命令の実行をサポートするためのデータ処理回路の変形例等の更なる説明を提供する。
【0038】
図2は、いくつかの例示的な構成による図1の処理回路30の更なる詳細を概略的に示す。特に、処理回路30は、複数のソースベクトルレジスタ、すなわち、ソースベクトルレジスタA32及びソースベクトルレジスタB34を備える。処理回路30はまた、更なるソースベクトルレジスタ36を備える(いくつかの構成では、更なるソースベクトルレジスタは、1つ以上の更なるソースベクトルレジスタであり得る)。処理回路30は、復号回路によって生成された制御信号によって制御されて、合成演算40(A)、40(B)、40(C)、40(D)を実行し、結果データ要素を生成して1つ以上の宛先レジスタに記憶する。合成演算40(A)、40(B)、40(C)、40(D)はそれぞれ、ソースベクトルレジスタA32及びソースベクトルレジスタB34のデータ要素位置のうちの1つにおけるデータ要素に対して実行される。更に、各合成演算40(A)、40(B)、40(C)、40(D)は、更なるソースベクトルレジスタ36の要素に基づく。特に、合成演算40(A)は、入力として、ソースベクトルレジスタA32からの要素32(A)と、ソースベクトルレジスタB34からの要素34(A)と、更なるソースベクトルレジスタ36からの要素36(C)及び36(D)とを受け取る。これらの要素は、結果データ要素を生成するために、合成演算40(A)によって合成される。合成演算40(B)は、入力として、ソースベクトルレジスタA32からの要素32(B)と、ソースベクトルレジスタB34からの要素34(B)と、更なるソースベクトルレジスタ36からの要素36(C)及び36(D)とを受け取る。これらの要素は、結果データ要素を生成するために、合成演算40(B)によって合成される。合成演算40(C)は、入力として、ソースベクトルレジスタA32からの要素32(C)と、ソースベクトルレジスタB34からの要素34(C)と、更なるソースベクトルレジスタ36からの要素36(C)及び36(D)とを受け取る。これらの要素は、結果データ要素を生成するために合成演算40(C)によって合成される。合成演算40(D)は、入力として、ソースベクトルレジスタA32からの要素32(D)と、ソースベクトルレジスタB34からの要素34(D)と、更なるソースベクトルレジスタ36からの要素36(C)及び36(D)とを受け取る。これらの要素は、結果データ要素を生成するために合成演算40(D)によって合成される。
【0039】
図3は、合成演算40がソース合成演算44、46及び中間合成演算42を含むいくつかの例示的な構成による処理回路48の詳細を概略的に示す。ソース合成演算44、46はそれぞれ、ソースベクトルレジスタA32又はソースベクトルレジスタB34の対応する要素を、更なるソースレジスタ36の要素と合成する。図示された例において、ソース合成演算44、46は、入力として、更なるソースレジスタ36の2つの要素を受け取る。しかしながら、これは説明のためだけのものであり、ソース合成演算44、46はそれぞれ、更なるソースレジスタから要素の任意の同じ又は異なるサブセットを受け取ることができることが当業者には理解されよう。ソース合成演算は、ソースベクトルレジスタA32、ソースベクトルレジスタB34、及び更なるソースベクトルレジスタ36から抽出されたデータ要素を合成して、中間データ要素を生成する。中間データ要素は中間合成演算42に供給され、中間合成演算42の各々は、1つ以上の宛先レジスタに記憶される結果データ要素を生成する。
【0040】
処理回路48は、ソースベクトルレジスタA32及びソースベクトルレジスタB34の各々における各要素位置について、ソース合成演算44及び46と中間合成演算42とを含む合成演算を実行する。特に、要素位置がソースベクトルレジスタA32内のデータ要素32(A)及びソースベクトルレジスタB34内のデータ要素34(A)に対応する最下位位置である場合、ソース合成演算44(A)は、ソースベクトルレジスタA32のデータ要素32(A)を、更なるソースベクトルレジスタ36からのデータ要素36(C)及び36(D)と合成する。同様に、ソース合成演算46(A)は、ソースベクトルレジスタB34のデータ要素34(A)を、更なるソースベクトルレジスタ36からのデータ要素36(D)及び36(C)と合成する。ソース合成演算44(A)及び46(A)の出力は中間データ要素を生成し、中間データ要素は中間合成演算42(A)に供給されて、1つ以上の宛先レジスタに記憶される結果データ要素を生成する。
【0041】
同様に、要素位置が、ソースベクトルレジスタA32内のデータ要素32(B)及びソースベクトルレジスタB34内のデータ要素34(B)に対応する2番目に下位の位置であるとき、ソース合成演算44(B)は、ソースベクトルレジスタA32のデータ要素32(B)を、更なるソースベクトルレジスタ36からのデータ要素36(C)及び36(D)と合成する。同様に、ソース合成演算46(B)は、ソースベクトルレジスタB34のデータ要素34(B)を、更なるソースベクトルレジスタ36からのデータ要素36(D)及び36(C)と合成する。ソース合成演算44(B)及び46(B)の出力は中間データ要素を生成し、中間データ要素は中間合成演算42(B)に供給されて、1つ以上の宛先レジスタに記憶される結果データ要素を生成する。
【0042】
同様に、要素位置が、ソースベクトルレジスタA32内のデータ要素32(C)及びソースベクトルレジスタB34内のデータ要素34(C)に対応する2番目に上位の位置であるとき、ソース合成演算44(C)は、ソースベクトルレジスタA32のデータ要素32(C)を、更なるソースベクトルレジスタ36からのデータ要素36(C)及び36(D)と合成する。同様に、ソース合成演算46(C)は、ソースベクトルレジスタB34のデータ要素34(C)を、更なるソースベクトルレジスタ36からのデータ要素36(D)及び36(C)と合成する。ソース合成演算44(C)及び46(C)の出力は中間データ要素を生成し、中間データ要素は中間合成演算42(C)に供給されて、1つ以上の宛先レジスタに記憶される結果データ要素を生成する。
【0043】
同様に、要素位置がソースベクトルレジスタA32内のデータ要素32(D)及びソースベクトルレジスタB34内のデータ要素34(D)に対応する最上位位置である場合、ソース合成演算44(D)は、ソースベクトルレジスタA32のデータ要素32(D)を、更なるソースベクトルレジスタ36からのデータ要素36(C)及び36(D)と合成する。同様に、ソース合成演算46(D)は、ソースベクトルレジスタB34のデータ要素34(D)を、更なるソースベクトルレジスタ36からのデータ要素36(D)及び36(C)と合成する。ソース合成演算44(D)及び46(D)の出力は中間データ要素を生成し、中間データ要素は中間合成演算42(D)に供給されて、1つ以上の宛先レジスタに記憶される結果データ要素を生成する。
【0044】
上述の合成演算は、ソースベクトルレジスタA32及びソースベクトルレジスタB内の最下位位置、2番目の最下位位置、2番目の最上位位置、及び最上位位置の各々について別個の合成ユニットによって実行される。しかしながら、合成回路ブロックの単一のセット(例えば、ソース合成要素44(A)及び46(A)並びに単一の中間合成演算42(A))を提供することができ、その入力は、例えば、一連のデマルチプレクサを通して供給することができ、中間合成演算44(A)の出力は、1つ以上の宛先レジスタの各結果要素位置に多重化され得ることが、当業者によって理解されるであろう。
【0045】
図4Aは、本技法の様々な構成による、ベクトル合成命令に応答して一連のドット積演算を実行するように構成された処理装置50の使用を概略的に示す。処理装置50は、命令を復号し、制御信号を処理回路54に提供する復号回路56を備える。処理装置50は、データベクトルを記憶するために使用される一連のレジスタ52を更に備える。図示された構成において、データ処理装置50は、行列-ベクトル乗算に対応する一連のドット積演算を実行するために使用される。特に、データ処理装置50は、行列58にベクトル60を乗算した結果を計算するために使用される。数学的には、この演算は、行列58の各行とベクトル60とのドット積を計算するために一連のドット積を実行することによって実行される。
【0046】
行列58は、行列58の第1の列がソースベクトルレジスタA62に記憶され、行列58の第2の列がソースベクトルレジスタB64に記憶されるように、ソースベクトルレジスタA62及びソースベクトルレジスタB64を含む複数のソースベクトルレジスタに記憶される。ベクトル60は、単一の更なるソースベクトルレジスタ66に記憶される。図示された実施形態において、ベクトル60の2つの要素は、更なるソースベクトルレジスタ66の2つの最下位要素として記憶される。しかしながら、これは説明のためだけのものであり、更なるソースベクトルレジスタ内の任意の位置が交換可能に使用され得る(及び任意選択でベクトル合成命令において指定され得る)ことが当業者によって理解されるであろう。ソースベクトルレジスタA62及びソースベクトルレジスタB64を含む複数のソースベクトルレジスタ、並びに更なるソースベクトルレジスタは、データ処理装置50のレジスタ記憶装置にレジスタ52として記憶されるレジスタである。
【0047】
記憶されたベクトルレジスタ52を有するデータ処理装置50は、ベクトル合成命令に応答する。ベクトル合成命令は、復号回路56によって受信され、処理回路54に、ソースベクトルレジスタの各データ要素位置について一連の演算を実行させる。この場合、処理回路は、4つのソースベクトルレジスタ位置の各々に対して1つずつ、4つの一連の演算を(任意選択で並列に)実行する。図示された実施形態では、合成演算は、ドット積命令、或いは、ソース合成演算としての乗算演算、及び結果データ要素を生成するための中間合成演算としての累積演算を含む。結果データ要素は、(例えば、ベクトル合成命令において定義されるように)ソースベクトル要素の2倍の幅であり、したがって、結果データ要素のための十分な記憶空間を提供するために2つの宛先ベクトルレジスタを必要とする。この場合、宛先ベクトルレジスタは、結果データ要素68(A)、68(B)を含む結果ベクトルレジスタA68と、結果データ要素70(A)及び70(B)を含む結果ベクトルレジスタB70とを含む。
【0048】
復号回路56は、処理回路54を制御して、ソースベクトルレジスタA62及びソースベクトルレジスタBからそれぞれ第1のソースデータ要素A1,1及びA1,2を抽出し、更なるソースベクトルレジスタ66から第2のソースデータ要素b及びbを抽出することによって結果データ要素68(B)を生成する。復号回路56は更に、計算A1,1+A1,2の値が記憶される結果データ要素68(B)を生成するためにドット積演算を実行することによって、第1のソースデータ要素と第2のソースデータ要素とを合成するように処理回路54を制御する。したがって、このデータ要素は、行列58にベクトル60を乗算することによって得られる結果行列72の第1の値を含む。
【0049】
復号回路56は、ソースベクトルレジスタA62及びソースベクトルレジスタB64の対応する位置から要素を抽出するために同じ一連の演算を実行することによって結果データ要素68(A)、70(B)、及び70(A)を生成するように処理回路54を制御する。これらの演算は、各ソースベクトルレジスタ位置に対して並列に又は順次に実行され得る。特に、ソースベクトルレジスタA62及びソースベクトルレジスタBからそれぞれ第1のソースデータ要素A2,1及びA2,2を抽出し、第1のソース要素と以前に抽出された第2のソース要素とのドット積を実行することによって、処理回路は、A2,1+A2,2の値を有する結果ベクトルレジスタA68に記憶された結果データ要素68(A)を生成することができる。ソースベクトルレジスタA62及びソースベクトルレジスタBからそれぞれ第1のソースデータ要素A3,1及びA3,2を抽出し、第1のソース要素と以前に抽出された第2のソース要素とのドット積を実行することによって、処理回路は、A3,1+A3,2の値を有する結果ベクトルレジスタB70に記憶された結果データ要素70(B)を生成することができる。ソースベクトルレジスタA62及びソースベクトルレジスタBからそれぞれ第1のソースデータ要素A4,1及びA4,2を抽出し、第1のソース要素と以前に抽出された第2のソース要素とのドット積を実行することによって、処理回路は、A4,1+A4,2の値を有する結果ベクトルレジスタA70に記憶された結果データ要素70(A)を生成することができる。
【0050】
図4Bは、1つ以上の更なるソースベクトルレジスタが2つの更なるソースベクトルレジスタを含む構成を概略的に示す。図示された構成の各々について、1つ以上の更なるソースベクトルレジスタがベクトル合成命令において指定され得ることが、当業者によって理解されよう。図示された構成では、データ処理装置50は、2つの行列からの要素を合成することに対応する一連のコーミング演算を実行するために使用される。特に、データ処理装置50は、行列58に行列600を乗算した結果を計算するために使用される。数学的には、この演算は、行列58の各行と行列600の各行とのドット積を計算するために一連のドット積を実行することによって実行される。
【0051】
行列58は、行列58の第1の列がソースベクトルレジスタA62に記憶され、行列58の第2の列がソースベクトルレジスタB64に記憶されるように、ソースベクトルレジスタA62及びソースベクトルレジスタB64を含む複数のソースベクトルレジスタに記憶される。行列600は、行列600の第1の列が更なるソースベクトルレジスタA660に記憶され、行列600の第2の列が更なるソースベクトルレジスタB670に記憶されるように、複数の更なるソースベクトルレジスタに記憶される。ソースベクトルレジスタA62及びソースベクトルレジスタB64を含む複数のソースベクトルレジスタ、並びに更なるソースベクトルレジスタA660及び更なるソースベクトルレジスタB670を含む複数の更なるソースベクトルレジスタは、データ処理装置50のレジスタ記憶装置にレジスタ52として記憶される。
【0052】
記憶されたベクトルレジスタ52を有するデータ処理装置50は、ベクトル合成命令に応答する。ベクトル合成命令は、復号回路56によって受信され、処理回路54に、ソースベクトルレジスタの各データ要素位置について一連の演算を実行させる。この場合、処理回路は、4つのソースベクトルレジスタ位置の各々に対して1つずつ、4つの一連の演算を(任意選択で並列に)実行する。図示された実施形態では、合成演算は、ドット積命令、或いは、ソース合成演算としての乗算演算、及び結果データ要素を生成するための中間合成演算としての累積演算を含む。結果データ要素は、(例えば、ベクトル合成命令において定義されるように)ソースベクトル要素の2倍の幅であり、したがって、結果データ要素のための十分な記憶空間を提供するために2つの宛先ベクトルレジスタを必要とする。この場合、宛先ベクトルレジスタは、結果データ要素68(A)、68(B)を含む結果ベクトルレジスタA68と、結果データ要素70(A)及び70(B)を含む結果ベクトルレジスタB70とを含む。
【0053】
復号回路56は、ソースベクトルレジスタA62及びソースベクトルレジスタBからそれぞれ第1のソースデータ要素A1,1及びA1,2を抽出し、更なるソースベクトルレジスタA660及び更なるソースベクトルレジスタB670からそれぞれ第2のソースデータ要素B1,1及びB1,2を抽出することによって結果データ要素68(B)を生成するように処理回路54を制御する。復号回路56は更に、計算A1,11,1+A1,21,2の値が記憶される結果データ要素68(B)を生成するためにドット積演算を実行することによって、第1のソースデータ要素と第2のソースデータ要素とを合成するように処理回路54を制御する。したがって、このデータ要素は、行列58にベクトル60を乗算することによって得られる結果行列72の第1の値を含む。
【0054】
復号回路56は、処理回路54を制御して、ソースベクトルレジスタA62、ソースベクトルレジスタB64、更なるソースベクトルレジスタA660、及び更なるソースベクトルレジスタB670の対応する位置から要素を抽出するために同じ一連の演算を実行することによって結果データ要素68(A)、70(B)、及び70(A)を生成する。これらの演算は、各ソースベクトルレジスタ位置に対して並列に又は順次に実行され得る。特に、ソースベクトルレジスタA62及びソースベクトルレジスタBからそれぞれ第1のソースデータ要素A2,1及びA2,2を抽出し、第1のソース要素と、更なるソースベクトルレジスタA660及び更なるソースベクトルレジスタB670から抽出された第2のソース要素B2,1及びB2,2とのドット積を実行することによって、処理回路は、A2,12,1+A2,22,2の値を有する結果ベクトルレジスタA68に記憶された結果データ要素68(A)を生成することができる。ソースベクトルレジスタA62及びソースベクトルレジスタBからそれぞれ第1のソースデータ要素A3,1及びA3,2を抽出し、第1のソース要素と、更なるソースベクトルレジスタA660及び更なるソースベクトルレジスタB670から抽出された第2のソース要素B3,1及びB3,2とのドット積を実行することによって、処理回路は、A3,13,1+A3,23,2の値を有する結果ベクトルレジスタB70に記憶された結果データ要素70(B)を生成することができる。ソースベクトルレジスタA62及びソースベクトルレジスタBからそれぞれ第1のソースデータ要素A4,1及びA4,2を抽出し、第1のソース要素と、更なるソースベクトルレジスタA660及び更なるソースベクトルレジスタB670から抽出された第2のソース要素B4,1及びB4,2とのドット積を実行することによって、処理回路は、A4,14,1+A4,24,2の値を有する結果ベクトルレジスタB70に記憶された結果データ要素70(A)を生成することができる。
【0055】
図5は、様々な例示的構成によるデータ処理装置80のために提供されるレジスタの更なる詳細を概略的に示す。処理装置80は、上述した復号回路92及び処理回路90に加えて、ベクトルレジスタ記憶装置82及びタイルレジスタ記憶装置86を備える。ベクトルレジスタ記憶装置82は、N個のベクトルレジスタ84(1)、84(2)、...、84(N)を備える。タイルレジスタ記憶装置86は、タイルレジスタ88(1)、...、88(M)を備える。提供されるベクトル及びタイルレジスタの数は、構成に応じて変化し得る。各ベクトルレジスタは複数の要素を含み、ベクトルレジスタベース又はベクトル要素ベースでアドレス指定することができる。タイルレジスタ88は、要素の2次元アレイとして配置される。各タイルレジスタは、タイルベースで、要素ベースで、又はタイルレジスタの行(水平スライス)若しくは列(垂直スライス)に関してアドレス指定され得る。
【0056】
図6は、本技法の様々な例示的な構成による処理回路の演算を概略的に示す。図示の構成では、合成演算は、乗算演算96、98である第1の合成演算と、加算演算100である第2の合成演算とを含む。処理回路は、ベクトル合成命令に応答して、ソースベクトルレジスタA90及びソースベクトルレジスタB92を含む複数のソースベクトルレジスタと、更なるソースベクトルレジスタ94とを合成する。処理回路は、ソースベクトルレジスタ90、92の各々と同じサイズの同じ数の要素を含む結果ベクトルレジスタA102に結果要素を出力するように構成される。演算において、処理回路は、ソースベクトルレジスタA90の要素を更なるソースベクトルレジスタ94の要素bと合成するために乗算演算98を実行し、ソースベクトルレジスタB92の要素を更なるソースベクトルレジスタ94の要素bと合成するために乗算演算96を実行する。乗算演算の対応するセットの結果は、累積演算100を介して合成されて、結果ベクトルレジスタA102に記憶される結果データ要素を生成する。
【0057】
図6の処理回路は、それぞれが結果データ要素のうちの1つに関連付けられた(参照番号の末尾の括弧内に含まれる文字によって識別される)4セットのコーミング演算を実行する回路を提供する。最上位(最左)結果データ要素は、乗算演算96(D)及び98(D)、並びに乗算演算96(D)及び98(D)の出力を合成するための累積演算100(D)を使用して、更なるソースベクトルレジスタ94の対応する要素と合成されたソースベクトルレジスタA90及びソースベクトルレジスタB92の最上位要素から生成される。同様に、結果ベクトルレジスタ102の2番目に上位の要素は、乗算演算96(C)及び98(C)、並びに乗算演算96(C)及び98(C)の出力を合成するための累積演算100(C)を使用して、更なるソースベクトルレジスタ94の対応する要素と合成されたソースベクトルレジスタA90及びソースベクトルレジスタB92の2番目に上位の要素から生成される。同様に、結果ベクトルレジスタ102の2番目に下位の要素は、乗算演算96(B)及び98(B)、並びに乗算演算96(B)及び98(B)の出力を合成するための累積演算100(B)を使用して、更なるソースベクトルレジスタ94の対応する要素と合成されたソースベクトルレジスタA90及びソースベクトルレジスタB92の2番目に下位の要素から生成される。最後に、最下位(右端)結果データ要素は、乗算演算96(A)及び98(A)、並びに乗算演算96(A)及び98(A)の出力を合成するための累積演算100(A)を使用して、更なるソースベクトルレジスタ94の対応する要素と合成されたソースベクトルレジスタA90及びソースベクトルレジスタB92の最下位要素から生成される。
【0058】
図7は、様々な例示的な構成による処理回路によって実行される演算の詳細を概略的に示す。図7の処理回路は、図6に関連して説明したものと同一のソース合成演算を含む。図6の中間合成演算は、図6の中間合成演算100と同一である第1の中間合成演算100を含む。加えて、図7の処理回路は、図示された実施形態では累積演算である第2の中間合成演算104が設けられている。第2の中間合成演算は、第1の中間合成演算100からの出力を、宛先ベクトルレジスタ102内に既に存在するデータ要素の値と合成する。結果ベクトルレジスタ102の結果データ要素はそれぞれ、ソースベクトルレジスタ90、92のデータ要素と同じサイズである。
【0059】
図7の処理回路は、結果データ要素のうちの1つにそれぞれ関連付けられた4セットのコーミング演算を実行する回路を提供する。最下位結果データ要素は、乗算演算96(D)及び98(D)、並びに乗算演算96(D)及び98(D)の出力を合成するための累積演算100(D)、並びに累積演算100(D)の出力及び結果ベクトルレジスタ102内の既存の値を累算する累積演算104(D)を使用して、更なるソースベクトルレジスタ94の対応する要素と合成されたソースベクトルレジスタA90及びソースベクトルレジスタB92の最下位要素から生成される。同様に、結果ベクトルレジスタ102の2番目に下位の要素は、乗算演算96(C)及び98(C)、並びに乗算演算96(C)及び98(C)の出力を合成するための累積演算100(C)、並びに累積演算100(C)の出力及び結果ベクトルレジスタ102内の既存の値を累算する累積演算104(C)を使用して、更なるソースベクトルレジスタ94の対応する要素と合成されたソースベクトルレジスタA90及びソースベクトルレジスタB92の2番目に下位の要素から生成される。同様に、結果ベクトルレジスタ102の2番目に上位の要素は、乗算演算96(B)及び98(B)、並びに乗算演算96(B)及び98(B)の出力を合成するための累積演算100(B)、並びに累積演算100(B)の出力及び結果ベクトルレジスタ102内の既存の値を累算する累積演算104(B)を使用して、更なるソースベクトルレジスタ94の対応する要素と合成されたソースベクトルレジスタA90及びソースベクトルレジスタB92の2番目に上位の要素から生成される。最後に、最上位結果データ要素は、乗算演算96(A)及び98(A)、並びに乗算演算96(A)及び98(A)の出力を合成するための累積演算100(A)、並びに累積演算100(A)の出力及び結果ベクトルレジスタ102内の既存の値を累算する累積演算104(A)を使用して、更なるソースベクトルレジスタ94の対応する要素と合成されたソースベクトルレジスタA90及びソースベクトルレジスタB92の最上位要素から生成される。累積演算100及び104、並びに乗算演算96及び98は、累積演算100及び104、並びに乗算演算96及び98の各々を参照して説明されるような累算及び乗算の工程を実行する、別個の別々の論理ブロック又は単一の合成された回路として提供することができる。更に、スイッチ(デマルチプレクサ)を使用して選択されたソースベクトルレジスタA及びソースベクトルレジスタBからのオペランドと、スイッチ(マルチプレクサ)を使用して宛先レジスタ内の対応する位置に供給される結果データ要素とを用いて上述の工程を順次実行するために、例えば乗算回路96(A)及び98(A)並びに累算ユニット100(A)及び104(A)など、累積回路及び乗算回路の単一の完全なセットを設けることができる。
【0060】
図8は、様々な例示的な構成による、処理回路によって実行される演算の詳細を概略的に示す。図8の処理回路は、図6に関連して説明したように、ソース合成演算及び中間合成演算を含む。中間合成演算は、図7に関連して説明した第2の中間合成演算を同様に含むことができる。処理回路は、入力ソースレジスタ90、92のデータ要素の2倍の幅の結果データ要素を生成するように構成される。結果データ要素は、宛先レジスタA106及び宛先レジスタB108に記憶される。宛先レジスタA106及び宛先レジスタB108は、宛先レジスタの数に等しい行の数と、各宛先レジスタ内のデータ要素の数に等しい列の数とを含む結果アレイを形成するように配置される。更に、処理回路は、結果アレイ内の結果データ要素を行優先順序で配置するように構成される。特に、ソースレジスタB92の要素A1,2及びA2,2並びにソースレジスタA90の要素A1,1及びA2,1に関連付けられた結果データ要素は、宛先レジスタA106に記憶される。同様に、ソースレジスタB92の要素A3,2及びA4,2並びにソースレジスタA90の要素A3,1及びA4,1に関連付けられた結果データ要素は、宛先レジスタB108に記憶される。
【0061】
図9は、様々な例示的な構成による、処理回路によって実行される演算の詳細を概略的に示す。図9の処理回路は、図6及び図8に関連して説明したものと同一のソース合成演算及び中間合成演算を含む。処理回路は、入力ソースレジスタ90、92のデータ要素の2倍の幅の結果データ要素を生成するように構成される。結果データ要素は、宛先レジスタA106及び宛先レジスタB108に記憶される。宛先レジスタA106及び宛先レジスタB108は、宛先レジスタの数に等しい行の数と、各宛先レジスタ内のデータ要素の数に等しい列の数とを含む結果アレイを形成するように配置される。更に、処理回路は、結果アレイ内の結果データ要素を列優先順序で配置するように構成される。特に、ソースレジスタB92の要素A1,2及びA3,2並びにソースレジスタA90の要素A1,1及びA-3,1に関連付けられた結果データ要素は、宛先レジスタA106に記憶される。同様に、ソースレジスタB92の要素A2,2及びA4,2並びにソースレジスタA90の要素A2,1及びA4,1に関連付けられた結果データ要素は、宛先レジスタB108に記憶される。
【0062】
図10は、様々な例示的な構成による、処理回路によって実行される演算の詳細を概略的に示す。図10の処理回路は、図6図8及び図9に関連して説明したソース合成演算及び中間合成演算と機能的に等価であるソース合成演算及び中間合成演算を含む。いくつかの構成では、図10の中間合成演算はまた、図7に関して説明された第2の中間合成演算を組み込むように修正され得ることに留意されたい。図10の処理回路は、ソース合成演算の少なくともサブセットが中間合成演算と並列に実行されるという点で、前述の実施形態とは異なる。特に、ソース合成演算は乗算演算であり、中間合成演算は累積演算である。ソースベクトルレジスタB92に関連付けられたソース合成演算96は、2つの入力、すなわちソースベクトルレジスタB92からの1つの入力と、更なるソースベクトルレジスタ94からの1つの入力とを受け取る乗算演算として実行される。ソースベクトルレジスタA90に関連付けられたソース合成演算及び中間合成演算は、それぞれ、融合型乗算累算(FMA)ユニット110によって並列に実行される。各融合型乗算累算ユニット110は、乗算112を実行する回路と、累積114を実行する回路とを備える。融合型乗算累算ユニット110(A)は、ソース合成演算96(A)及びソースベクトルA90から入力を受け取り、結果データ要素を宛先レジスタA106に出力する。融合型乗算累算ユニット110(B)は、ソース合成演算96(B)及びソースベクトルA90から入力を受け取り、結果データ要素を宛先レジスタA106に出力する。融合型乗算累算ユニット110(C)は、ソース合成演算96(C)及びソースベクトルA90から入力を受け取り、結果データ要素を宛先レジスタB108に出力する。融合型乗算累算ユニット110(D)は、ソース合成演算96(D)及びソースベクトルA90から入力を受け取り、結果データ要素を宛先レジスタB108に出力する。図示した実施形態では、結果要素は、図8に関連して説明したように、行優先順序で出力される。しかしながら、データ要素は、任意のサイズの結果データ要素を記憶するように構成することもできる宛先レジスタ106、108に列優先順序で出力することができ、中間合成演算は、結果を宛先レジスタ106、108に累積する第2の中間合成演算を含むこともできることが当業者には理解されよう。
【0063】
図11A及び図11Bは、スケーリング演算が実行される本技法による処理装置の詳細を概略的に示す。図11Aは、スケーリング値の単一のセットが命令において指定される場合を概略的に示し、図11Bは、スケーリング値の1つのセットが各入力ベクトルレジスタに対して提供される場合を概略的に示す。
【0064】
図11Aは、本技法の様々な構成による、処理回路によって実行される演算の詳細を概略的に示す。図示の実施形態では、処理回路は、ソース合成演算及び中間合成演算を含み、ソース合成演算は、加算/減算演算116、118及び乗算演算120、122を含むスケーリング演算である。演算は、複数のソースベクトルレジスタ、すなわち、ソースベクトルレジスタA90及びソースベクトルレジスタB92内の各データ要素位置に対して実行される。演算の各セット(参照番号の末尾の括弧内の同じ文字によって識別される)は、複数のソースベクトルレジスタの各々の位置から第1のソースデータ要素を抽出し、更なるソースベクトルレジスタ94から第2のソースデータ要素を抽出することを含む。演算は、更なるソースベクトルレジスタ94から抽出された第2のソースデータ要素から第1のスケーリング値(この場合b)を抽出することを含む。第1のスケーリング値は、第1のソースデータ要素のうちの1つとともに加算/減算ユニット116、118に入力される。各第1のソースデータ要素は、加算/減算ユニット116、118による第1のスケーリング値の加算/減算を通じてスケーリングされる。演算は、第2のソースデータ要素(この場合、b)から第2のスケーリング値を抽出することを更に含む。加算/減算演算116、118の結果は、乗算ユニット120、122に供給され、加算/減算演算の結果に第2のスケーリング値を乗算して中間データ要素を生成する。中間データ要素は、乗算ユニット120、122の出力を合成するために中間合成演算を実行する合成ユニット124に供給される。実行される中間合成演算は、本明細書で説明される演算のいずれかであり得る。例えば、中間合成演算は、乗算、累積演算、又は別の数学的若しくは論理的演算であり得る。累積演算124からの出力は、宛先レジスタ106、108に記憶される。
【0065】
ソースベクトルレジスタA90の最下位位置からの要素A4,2は、加算/減算ユニット116(D)を使用して第1のスケーリング値bと合成されて、中間スケーリングされた要素を生成する。中間スケーリングされた要素は、乗算ユニット120(D)を使用して第2のスケーリング値bと合成されて、中間データ要素を生成する。同様に、ソースベクトルレジスタB92の最下位位置からの要素A4,1は、加算/減算ユニット118(D)を使用して第1のスケーリング値bと合成されて、中間スケーリングされた要素を生成する。中間スケーリングされた要素は、乗算ユニット122(D)を使用して第2のスケーリング値bと合成されて、中間データ要素を生成する。乗算ユニット120(D)及び乗算ユニット122(D)によって出力された中間データ要素は、合成演算124(D)を通じて合成されて、宛先レジスタB108に記憶された結果データ要素
【0066】
【数7】
を生成し、ここで、
【0067】
【数8】
は、任意の合成演算を示すために使用される。
【0068】
ソースベクトルレジスタA90の最下位位置からの要素A3,2は、加算/減算ユニット116(C)を使用して第1のスケーリング値bと合成されて、中間スケーリングされた要素を生成する。中間スケーリングされた要素は、乗算ユニット120(C)を使用して第2のスケーリング値bと合成されて、中間データ要素を生成する。同様に、ソースベクトルレジスタB92の最下位位置からの要素A3,1は、加算/減算ユニット118(C)を使用して第1のスケーリング値bと合成されて、中間スケーリングされた要素を生成する。中間スケーリングされた要素は、乗算ユニット122(C)を使用して第2のスケーリング値bと合成されて、中間データ要素を生成する。乗算ユニット120(C)及び乗算ユニット122(C)によって出力された中間データ要素は、合成演算124(C)を通じて合成されて、宛先レジスタB108に記憶される結果データ要素
【0069】
【数9】
を生成する。
【0070】
ソースベクトルレジスタA90の最下位位置からの要素A2,2は、加算/減算ユニット116(B)を使用して第1のスケーリング値bと合成されて、中間スケーリングされた要素を生成する。中間スケーリングされた要素は、乗算ユニット120(B)を使用して第2のスケーリング値bと合成されて、中間データ要素を生成する。同様に、ソースベクトルレジスタB92の最下位位置からの要素A2,1は、加算/減算ユニット118(B)を使用して第1のスケーリング値bと合成されて、中間スケーリングされた要素を生成する。中間スケーリングされた要素は、乗算ユニット122(B)を使用して第2のスケーリング値bと合成されて、中間データ要素を生成する。乗算ユニット120(B)及び乗算ユニット122(B)によって出力された中間データ要素は、合成演算124(B)を通じて合成されて、宛先レジスタA108に記憶される結果データ要素
【0071】
【数10】
を生成する。
【0072】
ソースベクトルレジスタA90の最下位位置からの要素A1,2は、加算/減算ユニット116(A)を使用して第1のスケーリング値bと合成されて、中間スケーリングされた要素を生成する。中間スケーリングされた要素は、乗算ユニット120(A)を使用して第2のスケーリング値bと合成されて、中間データ要素を生成する。同様に、ソースベクトルレジスタB92の最下位位置からの要素A1,1は、加算/減算ユニット118(A)を使用して第1のスケーリング値bと合成されて、中間スケーリングされた要素を生成する。中間スケーリングされた要素は、乗算ユニット122(A)を使用して第2のスケーリング値bと合成されて、中間データ要素を生成する。乗算ユニット120(A)及び乗算ユニット122(A)によって出力された中間データ要素は、合成演算124(A)を通じて合成されて、宛先レジスタA108に記憶される結果データ要素
【0073】
【数11】
を生成する。
【0074】
図11Aに示される構成では、ソースベクトルレジスタA90及びソースベクトルレジスタBの各々は、同じ第1のスケーリング値及び同じ第2のスケーリング値によってスケーリングされる。図11Bに示される代替構成では、ソースベクトルレジスタA90は、対応する第1のスケーリング値b及び対応する第2のスケーリング値bによってスケーリングされ、ソースベクトルレジスタB92は、対応する第1のスケーリング値b及び対応する第2のスケーリング値bによってスケーリングされる。スケーリング値b1,、b、及びbはそれぞれ、更なるソースベクトルレジスタ94に記憶される。代替構成では、第1のスケーリング値b及びbは、1つの更なるソースベクトルレジスタに記憶することができ、第2のスケーリング値b及びbは、異なる更なるソースベクトルレジスタに記憶することができる。他の構成では、4つのスケーリング値の各々を別個のソースベクトルレジスタに記憶することができる。図11Bに示す回路の演算は、図11Aに関連して説明した回路と同様である。
【0075】
図11Bでは、ソースベクトルレジスタA90の最下位位置からの要素A4,2は、加算/減算ユニット116(D)を使用して対応する第1のスケーリング値bと合成されて、中間スケーリングされた要素を生成する。中間スケーリングされた要素は、乗算ユニット120(D)を使用して対応する第2のスケーリング値bと合成されて、中間データ要素を生成する。同様に、ソースベクトルレジスタB92の最下位位置からの要素A4,1は、加算/減算ユニット118(D)を使用して対応する第1のスケーリング値bと合成されて、中間スケーリングされた要素を生成する。中間スケーリングされた要素は、乗算ユニット122(D)を使用して対応する第2のスケーリング値bと合成されて、中間データ要素を生成する。乗算ユニット120(D)及び乗算ユニット122(D)によって出力された中間データ要素は、合成演算124(D)を通じて合成されて、宛先レジスタB108に記憶される結果データ要素
【0076】
【数12】
を生成し、ここで、
【0077】
【数13】
は、任意の合成演算を示すために使用される。
【0078】
ソースベクトルレジスタA90の最下位位置からの要素A3,2は、加算/減算ユニット116(C)を使用して対応する第1のスケーリング値bと合成されて、中間スケーリングされた要素を生成する。中間スケーリングされた要素は、乗算ユニット120(C)を使用して対応する第2のスケーリング値bと合成されて、中間データ要素を生成する。同様に、ソースベクトルレジスタB92の最下位位置からの要素A3,1は、加算/減算ユニット118(C)を使用して対応する第1のスケーリング値bと合成されて、中間スケーリングされた要素を生成する。中間スケーリングされた要素は、乗算ユニット122(C)を使用して対応する第2のスケーリング値bと合成されて、中間データ要素を生成する。乗算ユニット120(C)及び乗算ユニット122(C)によって出力された中間データ要素は、合成演算124(C)を通じて合成されて、宛先レジスタB108に記憶される結果データ要素
【0079】
【数14】
を生成する。
【0080】
ソースベクトルレジスタA90の最下位位置からの要素A2,2は、加算/減算ユニット116(B)を使用して対応する第1のスケーリング値bと合成されて、中間スケーリングされた要素を生成する。中間スケーリングされた要素は、乗算ユニット120(B)を使用して対応する第2のスケーリング値bと合成されて、中間データ要素を生成する。同様に、ソースベクトルレジスタB92の最下位位置からの要素A2,1は、加算/減算ユニット118(B)を使用して対応する第1のスケーリング値bと合成されて、中間スケーリングされた要素を生成する。中間スケーリングされた要素は、乗算ユニット122(B)を使用して対応する第2のスケーリング値bと合成されて、中間データ要素を生成する。乗算ユニット120(B)及び乗算ユニット122(B)によって出力された中間データ要素は、合成演算124(B)を通じて合成されて、宛先レジスタA108に記憶される結果データ要素
【0081】
【数15】
を生成する。
【0082】
ソースベクトルレジスタA90の最下位位置からの要素A1,2は、加算/減算ユニット116(A)を使用して対応する第1のスケーリング値bと合成されて、中間スケーリングされた要素を生成する。中間スケーリングされた要素は、乗算ユニット120(A)を使用して対応する第2のスケーリング値bと合成されて、中間データ要素を生成する。同様に、ソースベクトルレジスタB92の最下位位置からの要素A1,1は、加算/減算ユニット118(A)を使用して対応する第1のスケーリング値bと合成されて、中間スケーリングされた要素を生成する。中間スケーリングされた要素は、乗算ユニット122(A)を使用して対応する第2のスケーリング値bと合成されて、中間データ要素を生成する。乗算ユニット120(A)及び乗算ユニット122(A)によって出力された中間データ要素は、合成演算124(A)を通じて合成されて、宛先レジスタA108に記憶される結果データ要素
【0083】
【数16】
を生成する。
【0084】
図12は、本技法の様々な構成による、処理回路によって実行される演算の更なる詳細を概略的に示す。図12のベクトル合成演算は、複数のソースベクトルレジスタ130及び更なるソースベクトルレジスタ132からのデータ要素を合成する。各ソースベクトルレジスタ130は、合成回路136を使用して更なるソースレジスタ132の異なる要素と合成される。この場合、合成演算は乗算演算であり、中間データ要素134をもたらす。ソースベクトルレジスタA130(A)は、合成回路136(A)を使用して更なるソースベクトルレジスタ132の最上位(最左)要素によって乗算されて、中間データ要素134(A)を生成する。ソースベクトルレジスタB130(B)は、合成回路136(B)を使用して更なるソースベクトルレジスタ132の2番目に上位の要素によって乗算されて、中間データ要素134(B)を生成する。ソースベクトルレジスタC130(C)は、合成回路136(C)を使用して、更なるソースベクトルレジスタ132の2番目に下位の要素によって乗算されて、中間データ要素134(C)を生成する。ソースベクトルレジスタD130(D)は、合成回路136(D)を使用して更なるソースベクトルレジスタ132の最下位(右端)要素によって乗算されて、中間データ要素134(D)を生成する。中間データ要素は、複数のソースベクトルレジスタの要素と同じ幅の要素であってもよく、又はソースデータ要素よりも広くてもよい。
【0085】
中間データ要素134は、中間合成回路140を使用して合成される。図示の実施形態では、合成演算は累積演算である。中間合成回路140(A)は、中間データ要素134の各セットの最上位要素を合成して、結果データ要素142(A)を生成する。中間合成回路140(B)は、中間データ要素134の各セットの2番目に上位の要素を合成して、結果データ要素142(B)を生成する。中間合成回路140(C)は、中間データ要素134の各セットの2番目に下位の要素を合成して、結果データ要素142(C)を生成する。中間合成回路140(D)は、中間データ要素の各セットの最下位要素を合成して、結果データ要素142(D)を生成する。このようにして生成された結果データ要素は、ソースベクトルレジスタ130及び更なるソースベクトルレジスタ132内の同じ要素位置の要素から形成されるベクトル間で実行される一連のドット積演算に対応する。結果データ要素は、ベクトルレジスタのアレイ又は1つ以上のタイルレジスタの水平又は垂直スライスのアレイであり得る結果アレイ142に記憶される。
【0086】
図13は、一連の命令に応答して処理装置によって実行される一連の工程を概略的に示す。フローは工程S100から始まり、ここで次の命令が復号回路によって受信される。次に、フローは工程S102に進み、受信された命令が、複数のソースベクトルレジスタ、1つ以上の更なるソースベクトルレジスタ、及び1つ以上の宛先レジスタを指定するベクトル合成命令であるかどうかが判定される。命令がベクトル合成命令でないと判定された場合、次の命令を待つためにフローが工程S100に戻る前に、命令は、特定の命令及びそれが属する命令セットアーキテクチャの要件に基づいて復号回路によって発行される。工程S102において、命令がベクトル合成命令であると判定された場合、フローは工程S104に進み、ソースベクトルの各位置iについて、一連の工程が(任意選択で並列に)実行される。フローは(各位置iについて)工程S106に進み、複数のソースベクトルレジスタのそれぞれの位置iから第1のソースデータ要素が抽出される。次いで、フローは工程S108に進み、第2のソースデータ要素が1つ以上の更なるソースベクトルレジスタから抽出される。次に、フローは工程S110に進み、合成演算が実行されて結果データ要素が生成される。合成演算は、第1のソースデータ要素及び第2のソースデータ要素の各データ要素を合成することを含む。次に、フローは工程S112に進み、結果データ要素が1つ以上の宛先ベクトルレジスタの位置iに記憶される。次に、方法は工程S100に戻り、次の命令を待つ。
【0087】
図14は、使用され得るシミュレータ実施態様を示す。上記の実施形態は、当該技法をサポートする特定の処理ハードウェアを動作させる装置及び方法の点において本発明を実装しているが、コンピュータプログラムの使用によって実装される本明細書に記載の実施形態による命令実行環境を提供することも可能である。このようなコンピュータプログラムは、コンピュータプログラムがハードウェアアーキテクチャのソフトウェアベースの実装形態を提供する限り、シミュレータと称されることがよくある。様々なシミュレータコンピュータプログラムは、エミュレータ、仮想マシン、モデル、及び動的バイナリトランスレータを含むバイナリトランスレータを含む。典型的には、シミュレータ実装は、ホストハードウェア515で実行することができ、ホストハードウェア515は、任意選択的に、ホストオペレーティングシステム(ホストOS)510を実行し、ホストオペレーティングシステム510は、シミュレータプログラム505をサポートする。いくつかの配置では、ハードウェアと提供されている命令実行環境との間に複数のレイヤのシミュレーションがあってもよく、及び/又は、同じホストプロセッサ上に提供されている複数の異なる命令実行環境があってもよい。歴史的に、強力なプロセッサが、合理的な速度で実行されるシミュレータ実装形態を提供するのに必要とされてきたが、このようなアプローチは、互換性又は再使用の理由から別のプロセッサにネイティブなコードを実行することが望まれるようなときなど一定の状況では、正当化され得る。例えば、シミュレータ実装形態は、ホストプロセッサハードウェアによってサポートされていない追加の機能性を有する命令実行環境を提供し得るか、又は典型的には異なるハードウェアアーキテクチャに関連付けられた命令実行環境を提供し得る。シミュレーションの概要は、「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、1990年冬USENIX Conference、53~63頁に記載されている。
【0088】
これまで特定のハードウェア構成又は機能を参照して実施形態を説明してきたが、その点で同等の機能が、シミュレーションされた実施形態では適切なソフトウェア構成又は機能によって提供されてもよい。例えば、特定の回路構成は、シミュレーションされた実施形態で、コンピュータプログラムロジックとして実装されてもよい。同様に、レジスタ又はキャッシュなどのメモリハードウェアは、シミュレーションされた実施形態で、ソフトウェアのデータ構造として実装されてもよい。前述の実施形態で参照されているハードウェア要素のうちの1つ以上がホストハードウェア(例えば、ホストプロセッサ730)に存在する配置では、いくつかのシミュレーションされた実施形態は、好適な場合、ホストハードウェアを使用し得る。
【0089】
シミュレータプログラム505は、コンピュータ可読記憶媒体(非一時的媒体であってもよい)に記憶されてもよく、シミュレータプログラム505によってモデル化されているハードウェアアーキテクチャのアプリケーションプログラムインタフェースと同じプログラムインタフェース(命令実行環境)をターゲットコード500に提供する。シミュレータプログラム505は、命令を復号する復号論理520と、命令によって指定されたベクトル処理演算を、入力データベクトル内のそれぞれの位置に複数の入力データ項目を含む入力データベクトルに選択的に適用する処理論理530とを備える。復号論理520は、複数のデータ要素位置内のソースデータ要素をそれぞれ含む複数のソースベクトルレジスタ、1つ以上の更なるソースベクトルレジスタ、及び1つ以上の宛先レジスタを指定するベクトル合成命令に応答して、処理論理530に、複数のデータ要素位置の各データ要素位置について各ソースベクトルレジスタのデータ要素位置から第1のソースデータ要素を抽出し、1つ以上の更なるソースベクトルレジスタから第2のソースデータ要素を抽出し、結果データ要素を生成するために合成演算を実行するようにさせる制御信号を生成するように構成され、結果データ要素は、第1のソースデータ要素及び第2のソースデータ要素の各要素を合成することによって計算され、結果データ要素を1つ以上の宛先レジスタのデータ要素位置に記憶する。したがって、前述の複素数処理命令を含む、ターゲットコード500のプログラム命令は、シミュレータプログラム505を使用する命令実行環境内から実行されてもよく、その結果、上述の装置のハードウェア特性を実際には有していないホストハードウェア515が、これらの特性をエミュレーションできる。
【0090】
要約すると、処理装置、方法及びコンピュータプログラムが提供される。装置は、命令を復号する復号回路と、命令によって指定されたベクトル処理演算を適用する処理回路とを備える。復号回路は、複数のデータ要素位置にソースデータ要素をそれぞれ含む複数のソースベクトルレジスタ、1つ以上の更なるソースベクトルレジスタ、及び1つ以上の宛先レジスタを指定するベクトル合成命令に応答して、処理回路に、各データ要素位置について、各ソースベクトルレジスタのデータ要素位置から第1のソースデータ要素を抽出し、1つ以上の更なるソースベクトルレジスタから第2のソースデータ要素を抽出し、第1のソースデータ要素及び第2のソースデータ要素の各要素を合成することによって結果データ要素を生成し、結果データ要素を1つ以上の宛先レジスタのデータ要素位置に記憶するようにさせるために構成される。
【0091】
本出願において、「~ように構成された(configured to...)」という用語は、装置の要素が、定義された動作を実施することが可能である構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェア又はソフトウェアの配設又は相互接続の方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有し得るか、又はプロセッサ若しくは他の処理デバイスが、機能を実行するようにプログラムされ得る。「ように構成された」は、装置要素が、定義された動作を提供するために何らかの変更がなされる必要があることを意味しない。
【0092】
本明細書では例示的な実施形態について添付の図面を参照して詳細に説明してきたが、理解されるように、本発明はそれらと寸分違わない実施形態に制限されるのではなく、また、添付の特許請求の範囲に定める本発明の範囲及び精神から逸脱することなく、当業者によって様々な変更、追加、及び修正を行うことができる。例えば、従属請求項の特徴の様々な組み合わせは、本発明の範囲から逸脱することなく、独立請求項の特徴でなされ得る。
図1
図2
図3
図4A
図4B
図5
図6
図7
図8
図9
図10
図11A
図11B
図12
図13
図14
【国際調査報告】