JP7148526B2 - データ処理装置におけるベクトルによる要素演算 - Google Patents

データ処理装置におけるベクトルによる要素演算 Download PDF

Info

Publication number
JP7148526B2
JP7148526B2 JP2019544057A JP2019544057A JP7148526B2 JP 7148526 B2 JP7148526 B2 JP 7148526B2 JP 2019544057 A JP2019544057 A JP 2019544057A JP 2019544057 A JP2019544057 A JP 2019544057A JP 7148526 B2 JP7148526 B2 JP 7148526B2
Authority
JP
Japan
Prior art keywords
data
data processing
source register
register
group
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019544057A
Other languages
English (en)
Other versions
JP2020508514A (ja
Inventor
マグクリス、グリゴリオス
ジョン スティーブンス、ナイジェル
エアペン、ジェイコブ
エヨール、ムボウ
ヘナー マンセル、デイビッド
Original Assignee
アーム・リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2020508514A publication Critical patent/JP2020508514A/ja
Application granted granted Critical
Publication of JP7148526B2 publication Critical patent/JP7148526B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45541Bare-metal, i.e. hypervisor runs directly on hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Image Processing (AREA)

Description

本開示はデータ処理に関する。詳細には本開示は、ベクトルによる要素(element by vector)演算を実施するデータ処理装置に関する。
行列乗算演算を含み得る算術演算を実施するためには、場合によってはデータ処理装置が必要である。これらの演算は、様々な文脈において適用性を見出すことができる。このような行列乗算をサポートするために実現されることが場合によっては必要である1つの機能は、単一の要素とベクトル全体を結合する演算、例えば1つのベクトルのすべての要素に別のベクトルの単一の要素を掛け合わせる演算をサポートする能力である。
しかしながらこのような機能性を提供するための既存の技法は、大きいベクトルに良好にスケーリングしていない。
本明細書において説明される少なくとも1つの実例は、データ処理装置であって、複数のレジスタを有するレジスタ記憶回路機構と、データ処理命令に応答して制御信号を生成する復号器回路機構であって、データ処理命令が複数のレジスタ中で、第1のソース・レジスタ、第2のソース・レジスタ及び指標を指定し、第1のソース・レジスタ及び第2のソース・レジスタの各々が、データ群の定義済みのサイズの少なくとも2倍の整数倍数であるサイズを有し、また、個々のデータ群が複数のデータ要素を含む、復号器回路機構と、制御信号に応答して、第1のソース・レジスタ及び第2のソース・レジスタ中の個々の前記データ群に関してデータ処理演算を実施し、それによりデータ処理演算の結果を形成するそれぞれの結果データ群を生成する処理回路機構とを備え、個々の前記データ群のためのデータ処理演算のオペランドが、指標及び第2のソース・レジスタのデータ群中の個々のデータ要素によって、第1のソース・レジスタのデータ群中で識別される被選択データ要素である、データ処理装置を提供する。
本明細書において説明される少なくとも1つの実例は、データ処理の方法であって、データ処理命令を復号し、それにより制御信号を生成するステップであって、データ処理命令が複数のレジスタ中で、第1のソース・レジスタ、第2のソース・レジスタ及び指標を指定し、第1のソース・レジスタ及び第2のソース・レジスタの各々が、データ群の定義済みのサイズの少なくとも2倍の整数倍数であるサイズを有し、また、個々のデータ群が複数のデータ要素を含む、ステップと、制御信号に応答して、第1のソース・レジスタ及び第2のソース・レジスタ中の個々の前記データ群に関してデータ処理演算を実施するステップであって、それによりデータ処理演算の結果を形成するそれぞれの結果データ群を生成する、ステップとを含み、個々の前記データ群のためのデータ処理演算のオペランドが、指標及び第2のソース・レジスタのデータ群中の個々のデータ要素によって、第1のソース・レジスタのデータ群中で識別される被選択データ要素である、データ処理の方法を提供する。
本明細書において説明される少なくとも1つの実例は、非一時的方式でプログラムを記憶するコンピュータ可読記憶媒体であって、プログラムが、少なくとも1つのデータ処理命令であって、データ処理装置によって実行されると、そのデータ処理命令に応答して制御信号を生成することであって、データ処理命令が複数のレジスタ中で、第1のソース・レジスタ、第2のソース・レジスタ及び指標を指定し、第1のソース・レジスタ及び第2のソース・レジスタの各々が、データ群の定義済みのサイズの少なくとも2倍の整数倍数であるサイズを有し、また、個々のデータ群が複数のデータ要素を含む、制御信号を生成すること、及び制御信号に応答して、第1のソース・レジスタ及び第2のソース・レジスタ中の個々の前記データ群に関してデータ処理演算を実施し、それによりデータ処理演算の結果を形成するそれぞれの結果データ群を生成することになる少なくとも1つのデータ処理命令を含み、個々の前記データ群のためのデータ処理演算のオペランドが、指標及び第2のソース・レジスタのデータ群中の個々のデータ要素によって、第1のソース・レジスタのデータ群中で識別される被選択データ要素である、コンピュータ可読記憶媒体を提供する。
本明細書において説明される少なくとも1つの実例は、データ処理装置であって、複数のレジスタにデータを記憶するための手段と、データ処理命令を復号し、それにより制御信号を生成するための手段であって、データ処理命令がデータを記憶するための手段中で、第1のソース・レジスタ、第2のソース・レジスタ及び指標を指定し、第1のソース・レジスタ及び第2のソース・レジスタの各々が、データ群の定義済みのサイズの少なくとも2倍の整数倍数であるサイズを有し、また、個々のデータ群が複数のデータ要素を含む、制御信号を生成するための手段と、制御信号に応答して、第1のソース・レジスタ及び第2のソース・レジスタ中の個々の前記データ群に関してデータ処理演算を実施し、それによりデータ処理演算の結果を形成するそれぞれの結果データ群を生成するための手段とを備え、個々の前記データ群のためのデータ処理演算のオペランドが、指標及び第2のソース・レジスタのデータ群中の個々のデータ要素によって、第1のソース・レジスタのデータ群中で識別される被選択データ要素である、データ処理装置を提供する。
本発明は、単なる実例にすぎないが、添付の図面に示されている本発明の実施例を参照してさらに説明される。
本技法の様々な実例を具体化することができるデータ処理装置を示す略図である。 一実施例におけるデータ準備命令の使用を示す略図である。 図2の実施例に対する変形態様を示す略図である。 実例データ処理命令を示す略図である。 一実施例におけるそのデータ処理命令の実行の実施態様を示す図である。 いくつかの実施例における、演算ユニットへのデータ要素の経路指定を提供することができる方法を示す略図である。 いくつかの実施例における、演算ユニットへのデータ要素の経路指定を提供することができる方法を示す略図である。 図4A及び図4Bを参照して考察されるデータ処理命令並びにそれらの実行の他の実例を示す略図である。 図4A及び図4Bを参照して考察されるデータ処理命令並びにそれらの実行の他の実例を示す略図である。 実例データ処理命令を示す略図である。 一実施例におけるそのデータ処理命令の実行の実施態様を示す図である。 一実施例の方法に従って取られるステップのシーケンスを示す図である。 一実施例によるデータ処理命令の実行を示す略図である。 このような命令の2つの実例を示す図である。 図9Bのデータ処理命令の実行の実施例におけるいくつかの変形形態を示す略図である。 一実施例における「ドット積」データ処理命令のための2つの128ビット・ソース・レジスタを有する、もっと複雑な実例を示す略図である。 図11の実施例に対する変形態様を示す図である。 図11及び図12に示されている実例に対する他の変形態様を示す図である。 一実施例の方法に従って取られるステップのシーケンスを示す図である。 いくつかの実施例によって提供されるデータ処理命令の実行を示す略図である。 対応する実例命令を示す図である。 単純な行列乗算演算の形態における図15Aの実施例の実例視覚化を示す図である。 図15Aに示されている実例のより単純な変形態様であって、第1のソース・レジスタ及び第2のソース・レジスタの各々から2つのデータ要素しか誘導されない変形態様を示す図である。 図15Aに示されている実例の別の変形態様であって、ソース・レジスタの各々からもっと多くのデータ要素が抽出される変形態様を示す図である。 実施されるいくつかの特定の乗算演算のさらに詳細を与える、データ処理命令の実行の実例実施例を示す図である。 データ処理命令の実行の実例実施例であって、2つのソース・レジスタの内容が2つの独立したレーンにデータ要素を含むものとして取り扱われる実例実施例を示す図である。 一実施例の方法に従って取られるステップのシーケンスを示す図である。 一実施例による仮想計算機実施態様を示す図である。
本明細書において説明される少なくとも1つの実例実施例は、データ処理装置であって、複数のレジスタを有するレジスタ記憶回路機構と、データ処理命令に応答して制御信号を生成する復号器回路機構であって、データ処理命令が複数のレジスタ中で、第1のソース・レジスタ、第2のソース・レジスタ及び指標を指定し、第1のソース・レジスタ及び第2のソース・レジスタの各々が、データ群の定義済みのサイズの少なくとも2倍の整数倍数であるサイズを有し、また、個々のデータ群が複数のデータ要素を含む、復号器回路機構と、制御信号に応答して、第1のソース・レジスタ及び第2のソース・レジスタ中の個々の前記データ群に関してデータ処理演算を実施し、それによりデータ処理演算の結果を形成するそれぞれの結果データ群を生成する処理回路機構とを備え、個々の前記データ群のためのデータ処理演算のオペランドが、指標及び第2のソース・レジスタのデータ群中の個々のデータ要素によって、第1のソース・レジスタのデータ群中で識別される被選択データ要素である、データ処理装置を提供する。
したがって提供される命令は、第2のソース・レジスタ中の対応するデータ群からの被選択要素を使用して、第1のソース・レジスタ中の個々のデータ群のベクトル要素に対するデータ処理演算を実施させる。即時指標値を使用して、第1のソース・レジスタ中の個々の要素群の内側(即ちすべての群中の同じ要素位置)のデータ要素が選択される。言い換えると、命令は、要素の群の内側のベクトルによる要素演算を実施させ、また、ベクトル中の個々の群にわたって厳密に同じ演算(要素選択を含む)が複製される。この技法は容易にスケーリングが可能であるため、これは、とりわけレジスタ幅(即ちベクトル長)の成長に応じて、このようなベクトルによる要素演算の実施態様のための有効な機構を提供する。さらに、このようなグループ化されたベクトルによる要素命令は、一般に、処理されたデータ要素の選択及び複製は、実際にマイクロ演算実施態様が可能であるサイズに制限されるように定義され得る「データ群」レベルで定義され、且つ、実現されるため、等価法線ベクトル演算と比較して余計な待ち時間なしに、データ処理装置における単一のこのようなマイクロ演算として実現されることが期待され得ることに留意されたい。
データ処理装置は、このデータ処理命令の実行をサポートするために、詳細には指標によって第1のソース・レジスタのデータ群中で識別される被選択データ要素が操作され、且つ、第2のソース・レジスタのデータ群中の個々のデータ要素に適用される方法などの様々な方法で構成することができる。いくつかの実施例では、処理回路機構は、制御信号に応答して被選択データ要素の複数の例を複数のデータ演算回路に供給するデータ要素操作回路機構を備えており、個々のデータ演算回路は、制御信号に応答して、第1のソース・レジスタ及び第2のソース・レジスタ中のそれぞれのデータ群に関してデータ処理演算を実施する。
データ処理命令によって使用されるソース・レジスタは自由に指定することができ、また、本技法は、ソース・レジスタ中のデータ値が一致しなければならない制約をフォーマットに強制することはないが、本技法は、それにもかかわらず、予めソース・レジスタの内容に特定のフォーマットを取らせることにより、データ処理命令の実行が強化され得ることを確認した。したがっていくつかの実施例では、復号器回路機構は、記憶場所及びターゲット・レジスタを指定するデータ準備命令に応答して他の制御信号を生成し、また、処理回路機構は、該他の制御信号に応答して、定義済みのサイズを有する主体データ群項目を記憶場所から検索し、また、主体データ群項目の複製によってターゲット・レジスタを充填する。言い換えると、本技法は、別の命令、即ち指定された主体データ群項目を検索し、また、それをターゲット・レジスタの幅全体にわたって複製するようになされたデータ準備命令を提供する。ターゲット・レジスタは第1のソース・レジスタであってもよい。したがって第1のソース・レジスタの内容は、指標によって第1のソース・レジスタのデータ群中で識別される被選択データ要素が、後続するデータ処理命令の実行に先立って、第1のソース・レジスタのデータ群全体にわたるその位置で既に複製されているよう、データ準備命令によって予めセット・アップすることができる。
第1のソース・レジスタ及び第2のソース・レジスタの各々とデータ群の定義済みのサイズの間のサイズ比を定義している整数倍数(その定義済みのサイズの少なくとも2倍)は、様々に定義することができ、また、データ処理装置中で保持することができるが、いくつかの実施例では、レジスタ記憶回路機構は、整数倍数の指示を記憶するための制御レジスタを備えている。
さらに、本技法は、専用制御命令を提供してこの整数倍数の修正を許容することも可能であり、また、いくつかの実施例では、復号器回路機構は、制御命令に応答して、整数倍数の指示をデータ処理装置のための定義済みの最大値まで修正する。
データ処理演算の結果は様々な方法で使用することができるが、いくつかの実施例では、データ処理命令は、複数のレジスタ中の結果レジスタをさらに指定し、また、処理回路機構は、制御信号にさらに応答して、データ処理演算の結果を結果レジスタに適用する。処理回路機構は、制御信号に応答して、データ処理演算の結果を結果レジスタに記憶することができる。別法としては、処理回路機構は、制御信号に応答して、データ処理演算の結果を第2のソース・レジスタに適用することも可能である。言い換えると、第2のソース・レジスタは累算レジスタを提供することができる。
データ処理演算は、第1のソース・レジスタ及び第2のソース・レジスタの内容のみ(及び即時指標値)をそのオペランドとして取ることができるが、これらのオペランドに限定されることはなく、また、いくつかの実施例では、データ処理命令は、複数のレジスタ中の少なくとも1つの他のソース・レジスタをさらに指定し、処理回路機構は、制御信号に応答して、該少なくとも1つの他のソース・レジスタ中の個々の前記データ群にさらに関してデータ処理演算を実施し、それによりデータ処理演算の結果を形成するそれぞれの結果データ群を生成し、また、個々の前記データ群のためのデータ処理演算のオペランドは、上記少なくとも1つの他のソース・レジスタのデータ群中の個々のデータ要素をさらに含む。
この他のソース・レジスタは、データ処理演算における様々な役割を果たすことができる。いくつかの実施例では、処理回路機構は、制御信号に応答して、データ処理演算の結果を上記少なくとも1つの他のソース・レジスタ中の先行する内容と累算する。
データ処理演算は算術演算であってもよく、例えばデータ処理演算は乗算演算であってもよい。データ処理演算は、少なくとも第1のデータ要素及び第2のデータ要素を第1のソース・レジスタ及び第2のソース・レジスタの各々から抽出すること、少なくとも第1のデータ要素の対及び第2のデータ要素の対を互いに掛け合わせる乗算演算を実施すること、及び乗算演算の結果を合計することを含むドット積演算であってもよい。
いくつかの実施例では、乗算演算は、第1のデータ要素の対、第2のデータ要素の対、第3のデータ要素の対及び第4のデータ要素の対を互いに掛け合わせることを含む。
いくつかの実施例では、データ処理命令は、複数のレジスタ中の累算レジスタをさらに指定し、また、データ処理演算は、累算器レジスタから累算器値をロードすること、乗算演算の結果と累算器値を合計すること、及び合計した結果を累算器レジスタに記憶することをさらに含むドット積及び累算演算である。
いくつかの実施例では、データ処理演算は乗算-累算演算である。
いくつかの実施例では、第1のソース・レジスタ及び第2のソース・レジスタ中の個々の前記データ群中のデータ要素は、複素数を表すデータ値の対であり、また、データ処理演算は複素数の乗算-累算である。言い換えると、「複素対」(2つの個別のデータ値によって表される)は、説明されているベクトルによる要素演算が同じく複素数に適用され得るよう、本技法によってデータ要素として取り扱うことができる。したがって複素値に作用するデータ処理演算(例えば複素数の乗算累算)の対象となる複素要素を識別するために、対応する専用の命令を同じく提供することができる。
いくつかの実施例では、データ処理命令は回転パラメータをさらに指定し、処理回路機構は、回転パラメータに応答して、データ処理演算の対象になるデータ値及びそれらの符号の被選択順列を使用して複素数の乗算-累算を実施する。これは、データ処理命令によって実施することができる様々な複素数演算に柔軟性を付与し、また、例えば符号のない主体複素対データ値の提供を可能にし、さらに、複素対データ値の符号の回転順列毎にプログラマに直接利用可能である。
いくつかの実施例では、データ処理演算は論理演算である。
本明細書において説明される少なくとも1つの実例実施例は、データ処理の方法であって、データ処理命令を復号し、それにより制御信号を生成するステップであって、データ処理命令が複数のレジスタ中で、第1のソース・レジスタ、第2のソース・レジスタ及び指標を指定し、第1のソース・レジスタ及び第2のソース・レジスタの各々が、データ群の定義済みのサイズの少なくとも2倍の整数倍数であるサイズを有し、また、個々のデータ群が複数のデータ要素を含む、ステップと、制御信号に応答して、第1のソース・レジスタ及び第2のソース・レジスタ中の個々の前記データ群に関してデータ処理演算を実施するステップであって、それによりデータ処理演算の結果を形成するそれぞれの結果データ群を生成する、ステップとを含み、個々の前記データ群のためのデータ処理演算のオペランドが、指標及び第2のソース・レジスタのデータ群中の個々のデータ要素によって、第1のソース・レジスタのデータ群中で識別される被選択データ要素である、データ処理の方法を提供する。
本明細書において説明される少なくとも1つの実例実施例は、非一時的方式でプログラムを記憶するコンピュータ可読記憶媒体であって、プログラムが、少なくとも1つのデータ処理命令であって、データ処理装置によって実行されると、該データ処理命令に応答して制御信号を生成することであって、データ処理命令が複数のレジスタ中で、第1のソース・レジスタ、第2のソース・レジスタ及び指標を指定し、第1のソース・レジスタ及び第2のソース・レジスタの各々が、データ群の定義済みのサイズの少なくとも2倍の整数倍数であるサイズを有し、また、個々のデータ群が複数のデータ要素を含む、制御信号を生成すること、及び制御信号に応答して、第1のソース・レジスタ及び第2のソース・レジスタ中の個々の前記データ群に関してデータ処理演算を実施し、それによりデータ処理演算の結果を形成するそれぞれの結果データ群を生成することになる少なくとも1つのデータ処理命令を含み、個々の前記データ群のためのデータ処理演算のオペランドが、指標及び第2のソース・レジスタのデータ群中の個々のデータ要素によって、第1のソース・レジスタのデータ群中で識別される被選択データ要素である、コンピュータ可読記憶媒体を提供する。
本明細書において説明される少なくとも1つの実例実施例は、データ処理装置であって、複数のレジスタにデータを記憶するための手段と、データ処理命令を復号し、それにより制御信号を生成するための手段であって、データ処理命令がデータを記憶するための手段中で、第1のソース・レジスタ、第2のソース・レジスタ及び指標を指定し、第1のソース・レジスタ及び第2のソース・レジスタの各々が、データ群の定義済みのサイズの少なくとも2倍の整数倍数であるサイズを有し、個々のデータ群が複数のデータ要素を含む、制御信号を生成するための手段と、制御信号に応答して、第1のソース・レジスタ及び第2のソース・レジスタ中の個々の前記データ群に関してデータ処理演算を実施し、それによりデータ処理演算の結果を形成するそれぞれの結果データ群を生成するための手段とを備え、個々の前記データ群のためのデータ処理演算のオペランドが、指標及び第2のソース・レジスタのデータ群中の個々のデータ要素によって、第1のソース・レジスタのデータ群中で識別される被選択データ要素である、データ処理装置を提供する。
本明細書において説明される少なくとも1つの実例実施例は、データ処理装置上で実行するコンピュータ・プログラムによって提供される仮想計算機を提供し、前記仮想計算機は、上で言及したデータ処理装置のうちの1つに対応する命令実行環境を提供する。
次に、いくつかの特定の実施例について、図を参照して説明する。
図1は、本技法の様々な実例を具体化することができるデータ処理装置を略図で示したものである。データ処理装置は処理回路機構12を備えており、処理回路機構12は、処理回路機構12が実行する一連の命令に応答して、データ項目に対するデータ処理演算を実施する。これらの命令は、データ処理装置がアクセスを有しているメモリ14から、当業者に周知の方法で検索され、この目的のためにフェッチ回路機構16が提供されている。フェッチ回路機構16によって検索された他の命令は復号回路機構18に引き渡され、復号回路機構18は、処理回路機構12の構成及び動作の様々な態様を制御するようになされる制御信号を生成する。一組のレジスタ20及びロード/ストア・ユニット22が同じく示されている。図1が表している一般的な構成は当業者には周知であり、そのさらに詳細な説明は、単に簡潔にするだけの目的で省略されている。図1に示されている実施例におけるレジスタ20は、整数倍数24サイズ及びデータ群25サイズのうちの一方又は両方のための記憶装置を備えることができ、その使用については、いくつかの特定の実施例を参照して以下でより詳細に説明される。命令を実行するために処理回路機構12によって要求されるデータ、及びこれらのデータ処理命令の結果として生成されるデータ値は、ロード/ストア・ユニット22によってメモリ14に書き込まれ、また、メモリ14から読み出される。通常、図1におけるメモリ14は、本技法の命令を記憶することができるコンピュータ可読記憶媒体の実例と見なすことができ、典型的には命令の定義済みのシーケンスの一部(「プログラム」)と見なすことができ、処理回路機構は、次にそのプログラムを実行することに同じく留意されたい。しかしながら処理回路機構は、RAM、ROM、ネットワーク・インタフェースを介した、等々などの様々な異なるソースからこのようなプログラムにアクセスすることができる。本開示は、処理回路機構12が実行することができる様々な新規な命令を記述しており、また、以下の図は、これらの命令の実行をサポートする、等々のために、これらの命令の性質、データ処理回路機構における変形形態のさらなる説明を提供している。
図2は、データ準備命令32の使用を略図で示したものである。データ準備命令32は、演算コード部分34(それをデータ準備命令として定義する)、レジスタ指定子36及び記憶場所指定子38を含む。この実施例のデータ処理装置がこの命令を実行すると、データ群40が識別されて、メモリ30(指定された記憶場所によって参照され、また、例えば定義されたデータ群サイズに応じて複数のアドレスにわたって展開する)に記憶されることになり、また、(この図解されている実施例では)2つのデータ要素b0及びb1(図には42及び44のラベルが振られている)を含む。さらに、この命令を実行することにより、このデータ群40が指定されたレジスタ中にコピーされ、また、さらに、それぞれデータ要素b0及びb1で構築されているデータ群46、48、50及び52を反復することによって図2に示されているように、そのレジスタの幅全体にわたって複製されることになる。
図3は、図2の実施例に対する変形態様を略図で示したものであり、このようなデータ準備命令によって異なるサイズのデータ群をコピーし、複製することができることを立証している。図3の図解されている実例では、命令60は同じ構造を有しており、即ち演算コード62、レジスタ指定子64及び指定された記憶場所66を含んでいる。命令60を実行することにより、記憶場所66がアクセスされ、また、データ群68がその記憶場所に記憶され(即ち、例えばその記憶場所から始まって、所定の数のデータ要素にわたって展開される)、データ要素c0、c1、c2及びc3(図には70、72、74及び76のラベルが振られている)を含むことになる。このデータ群68は、ターゲット・レジスタの幅全体にわたってコピーされ、複製され、また、このデータ群78、80、82及び84のコピーを反復することによって示されている。図1に戻ると、データ群サイズは、レジスタ20中の専用記憶場所25に保持されている値によって予め定義することができることに留意されたい。最後に、図2及び図3の実例は、何らかの特定のデータ群幅又は複製の倍数に限定されないことを認識されたい。しかしながら当代の文脈に有用な1つの実例のみを考察するためには、複製は128ビットの幅全体にわたって生じ得る。英国のCambridgeのARM(登録商標)社によって提供されるScalable Vector Extensions(SVE)の文脈では、この幅はSVEベクトル・グラニュール・サイズに対応している。ARM(登録商標)社によって同じく提供されるASMID命令の文脈では、これはASIMDレジスタのサイズに対応している。したがって本技法によれば、2つの64ビットデータ要素、4つの32ビットデータ要素、8つの16ビットデータ要素又は16個の8ビットデータ要素の群タイプのローディング及び複製が可能である。
図4Aは実例データ処理命令を略図で示したものであり、また、図4Bは、一実施例におけるそのデータ処理命令の実行の実施態様を示したものである。このデータ処理命令は、演算コード102、第1のレジスタ指定子104、第2のレジスタ指定子106、指標指定子108、及び任意選択の変形態様として結果レジスタ指定子110を含む。図4Bは、この命令を実行することにより、レジスタA及びレジスタB中のデータ群がアクセスされることになることを図解したものであり、レジスタAにおける個々のデータ群中のすべてのデータ要素、即ちこの実例では第1のデータ群112中のデータ要素a0及びa1、並びに第2のデータ群114中のデータ要素a2及びa3がアクセスされ、一方、レジスタBでは、データ群116及び118の各々における被選択データ要素即ちデータ要素b1のみがアクセスされる。したがってアクセスされたこれらのデータ要素は、図4Bに演算ユニット120、122、124及び126によって表されている処理回路機構の演算回路機構に引き渡され、演算回路機構は、レジスタBから獲得されたデータ要素及びレジスタAから獲得されたデータ群に関してデータ処理演算を適用する。上で言及したように、命令100は結果レジスタを指定することができ(識別子110によって)、また、これらの演算の結果は、結果レジスタ128のそれぞれのデータ要素に書き込まれる。実際には、いくつかの実施例では、結果レジスタ128及びレジスタAは、例えばそのレジスタの内容に関して乗算-累算演算を実施することができる1つの同じレジスタであってもよい(図4にダッシュ矢印によって概略的に示されているように)。図4Bに示されているレジスタは、実例命令によってアクセスされる部分を越えた潜在的展開(両側に)として故意に図解されていることに同じく留意されたい。これは、いくつかの実施態様(上で言及したScalable Vector Extensions(SVE)などの)では、ベクトル・サイズを指定することができないことに対応している。例えばSVE実例における2つの64ビット・データ要素(b0及びb1)の群に対する命令の演算を描写しているものとして図4Bを捕らえると、行先のためのベクトル・サイズは、128ビットから最大2048ビット(128ビットの増分で)までのいずれであってもよい。
図4Bに示されている実例は、レジスタBの内容から使用される被選択(被反復)データ要素の特定の実例を与えたものであるが、一般的には、レジスタB中の任意のデータ要素を演算ユニット120~126のうちの任意のユニットのための入力として使用するための能力を有する多目的フレキシブル・データ処理装置が提供されることが明らかに好ましいことを認識されたい。図5A及び図5Bは、これを達成することができる2つの方法を略図で示したものである。図5Aは、一組の演算ユニット140、142、144及び146(例えば融解(fused)乗算-加算ユニットであってもよい)に接続された、例えばレジスタ中のそれぞれのデータ要素を記憶することができる一組の記憶構成要素130、132、134及び136を示したものである。記憶ユニット130~136と関数ユニット140~146の間の接続は、図5Aには、直接接続と、マルチプレクサ148が介在する接続の両方が示されている。したがってこの構成によれば、個々の記憶ユニット130~136のうちの任意の記憶ユニットの内容を、個々のそれぞれの関数ユニットへの第1の入力として、関数ユニット140~146のうちの任意の関数ユニットに提供することができ、また、記憶ユニット130~136の内容を関数ユニット140~146の第2の入力としてそれぞれ提供することができる。関数ユニット140~146によって実施された処理の結果は記憶ユニット150~156に転送され、記憶ユニット150~156は、例えばそれぞれのデータ要素をレジスタ中に記憶することができる。マルチプレクサ148及び関数ユニット140~146の各々は、上で言及した入力の柔軟性のある選択を可能にするために、図解されている制御信号によって制御される。
図5Bは、図5Aの構成に対する代替構成を略図で示したものであり、記憶ユニット160、162、164及び166の各々は、それぞれの制御信号によって個々に制御される関数ユニット170、172、174及び176の各々に直接接続されており、また、関数ユニット170、172、174及び176の結果は、それぞれの記憶ユニット180、182、184及び186に引き渡される。図5Bによって得られる手法は、図5Bの実例のマルチプレクサ148を使用する必要性を回避し、また、マルチプレクサ148の使用に関連する遅延を回避するが、より複雑な配線の代価が必要である。したがって図5A及び図5Bの実例は、いずれも、とりわけ関連するデータ要素の数が成長する場合に、入力記憶ユニット、演算ユニット及び出力記憶ユニットの、完全に柔軟性があり、且つ、構成可能なセットの実現を模索する際に生じ得る複雑性を例証している。例えば図5Aの実例を取り上げ、また、入力記憶ユニットの数を2倍にし、演算ユニット及び出力記憶ユニットをそれぞれ8つにすると、8倍の入力マルチプレクサが必要になることになる。一方、図5Bの手法を取ったこのような8幅実施態様は、個々の入力記憶ユニットから個々の演算ユニットまで8つの経路を必要とすることになり、即ち合計64個の経路が必要であり、さらには個々の演算ユニットは、8つの異なる入力を受け取り、且つ、それらの間を選択することができなければならない。したがってレジスタ幅全体にわたるデータ部分(例えばデータ群)を再使用する本技法の実施例によって取られている手法は、必要な制御ユニットへの入力の多様性及び複雑性に制限を課すことができることが理解されよう。しかしながら、さらに、上で言及したSVE/ASIMD文脈では、図4Aのグループ化されたベクトルによる要素命令は、選択及び複製がSVEベクトル・グラニュール内に留まり、また、ASIMDは、これを128ビット内で実施する機構を既に有している(例えば「FMLA(要素による)」命令を使用して)ため、等価法線ベクトル演算と比較すると、余計な待ち時間がない単一のマイクロ演算として実現可能であることが期待され得ることに留意されたい。したがって図4Aに示されている命令は、法線ベクトル演算が後続する一連の個別の複写(DUP)命令よりも有効であることが期待され得る。
図6A及び図6Bは、図4A及び図4Bを参照して考察された実例のためのデータ処理命令の2つの他の実例を略図で示したものである。図6Aの実例では、命令200は、演算コード202、第1のレジスタ指定子204、第2のレジスタ指定子206、即時指標値208及び結果レジスタ指定子210を含む。図6Aの下の部分は、この命令200の実行を略図で示したものであり、レジスタBの反復副部分(データ群)内の被指定データ要素(指標1)が選択され、また、レジスタAのそれぞれのデータ群によって表されたベクトルがこのデータ要素に掛け合わされ、それにより結果レジスタの内容を含むそれぞれの結果データ群が生成される。図6Aでは、それぞれのデータ要素とデータ群の間で実施される演算は、上記の実例は、これが乗算であるものとして与えられているが、他の演算も可能であり、企図されていることを示す包括的演算記号
Figure 0007148526000001

によって示されている。
本技法は、1つのベクトルのみを指定するこのようなデータ処理命令に限定されず、図6Bは、ある実例を示したものであり、演算コード222、第1のレジスタ指定子224、第2のレジスタ指定子226、第3のレジスタ指定子228及び指標指定子230を含むデータ処理命令220が提供される。図6Bの下の部分は、図6Aに示されている下の部分と同様の方法で、第1のレジスタ(B)中の被選択データ要素(b1)がレジスタA及びCから獲得されたデータ群(ベクトル)と結合され、また、結果値が生成される様子を示したものである。単に変形態様を例証する目的にすぎないため、図6Bの実例における結果レジスタは命令220の中では指定されず、どちらかと言えばデフォルト(所定の)結果レジスタがこの目的のために一時的に使用されている。さらに、構成要素の組合せは、この場合も包括的演算子記号
Figure 0007148526000002

によって図6Bに示されているが、この場合も、この演算は、実行される特定の命令に応じて様々な形態を取ることができ、また、これは実際に乗算演算であってもよいが、任意の他のタイプの算術演算(加算、減算、等々)であってもよく、或いは論理演算(ADD、XOR、等々)であってもよいことを認識されたい。
図7Aは、別の実例データ処理命令を略図で示したものであり、また、図7Bは、一実施例におけるそのデータ処理命令の実行の実施態様を示したものである。このデータ処理命令は、複素数のためのベクトルによる要素演算をサポートするために提供され、ここではFCMLA(融解複素乗算-累算:fused complex multiply-accumulate)命令と呼ばれている。図7Aに示されているように、実例FCMLA命令220は、演算コード222、回転指定子224、第1のレジスタ(A)指定子226、第2のレジスタ(B)指定子228、指標指定子230及び累算レジスタ指定子232を含む。図7Bは、この命令を実行することにより、レジスタA及びレジスタB中のデータ群がアクセスされ、この命令の中のデータ群が多数の複素要素を定義することを例証している。複素要素は要素の対によって表される(図7Bのラベル「複素対」を参照されたい)。図7Bの実例では、レジスタBの複素対は(b3、b2)及び(b1、b0)であり、また、複素対(b3、b2)が選択されている。レジスタAの複素対は、(a7、a6)、(a5、a4)、(a3、a2)及び(a1、a0)である。レジスタA及びBから選択された複素対(レジスタAからのすべての複素対及び指標230によって識別されたレジスタBのデータ群からの被選択複素対)は、複素融解乗算-累算(CFMA:complex fused multiply-accumulate)ユニット234、236、238、240に引き渡され、レジスタAからの個々の複素対は、それぞれCFMAユニットの各々への1つの入力を形成し、一方、レジスタB中の1つのデータ群からの被選択複素対は、CFMAユニット234及び236への別の入力を形成し、また、レジスタB中の次のデータ群からの他の被選択複素対は、CFMAユニット238及び240への別の入力を形成する。複素融解乗算-累算演算のそれぞれの結果は、指定された累算レジスタ中のそれぞれの複素対として累算され、累算された結果は、それぞれ、それぞれのCFMAユニットの各々への第3の入力を形成する。回転パラメータ224(任意選択で命令の中で指定される)は、演算を以下のように変更する2ビット制御値である(第1の対のみを示しており、(c1、c0)は演算前の累算器値である)。
Figure 0007148526000003
図8は、一実施例の方法に従って取られるステップのシーケンスを示したものである。フローは、データ・ローディング(準備)命令が復号されるステップ250で開始され、また、ステップ260で対応する制御信号が生成される。次にステップ270で、これらの制御信号によって、指定されたデータ群がメモリの命令指定場所からロードされ(例えばこの実例のための図2及び図3を参照されたい)、また、制御レジスタは指定されたサイズを有する。次にステップ280で、制御信号によってさらに、ロードされたデータ群が指定されたターゲット・レジスタ(データ・ローディング(準備)命令の中で指定される)のベクトル幅全体にわたって複製される。次にデータ・ローディング命令の実行が完了する。フローはステップ290へ進行し、ベクトルによる要素データ処理命令が復号される。次にステップ300で対応する制御信号が生成され、また、引き続いてステップ310で、命令の中で指定された第1のレジスタにおける個々のデータ群中の指標付き要素と、命令の中で指定された第2のレジスタの個々のデータ群中の個々のデータ要素との間で、ベクトルによる要素命令によって指定された演算が次に実施される。
図9Aは、本技法による異なるデータ処理命令の実行を略図で示したものである。図9Bは、このような命令の2つの実例を示したものであり、第1の320は、演算コード322、第1のレジスタ指定子324、第2のレジスタ指定子326及び(任意選択の)出力レジスタ指定子328を含む。図9Bに示されている第2の実例データ処理命令330は、演算コード332、出力レジスタ指定子334及び累算器レジスタ指定子336を含む。これらは図9Aを参照して説明される。データ処理命令によって指定された第1のソース・レジスタ及び第2のソース・レジスタが図9Aの一番上に示されており、レーンにグループ化されたデータ要素部分にそれぞれ細分されている。データ処理装置(即ち復号器回路機構によって生成される制御信号の制御下にある処理回路機構)は、データ処理命令に応答して、第1のソース・レジスタ及び第2のソース・レジスタの各々から一組のデータ要素を検索する。図9Aに示されている実例では、一組の4つのデータ要素が第1のソース・レジスタ及び第2のソース・レジスタの個々のレーンから検索される。これらは、乗算演算を実施するようになされる演算ユニット340、342、344及び346で対にされる。これらの乗算演算の結果は、加算ユニット348で合計され、最後に、このようにして生成された結果値が出力レジスタの対応するレーンに書き込まれる。言い換えると、「ドット積」演算が実施される。図9Aにおけるレーンのラベル付けは、4つの乗算ユニット340~346及び加算ユニット348は、データ処理装置の処理回路機構の中に提供された一組のこのようなユニットのみを表したものであることを例証したものであり、したがってこれらは、データ処理装置がレジスタ毎に処理することができるレーンの各々と一致するまで反復される。個々のレジスタにおけるレーンの数は、図9Aには故意に限定的にならないように図解されており、レーンの数は、データ要素の相対幅、個々のレーンにおけるデータ要素の数及び利用可能なレジスタ幅に応じて自由に定義することができることに対応している。したがって命令は、累算器幅における同じ幅演算と同じように挙動することが分かる(例えば32ビット幅レーンにおける8ビット値(即ち整数)の実例では、命令は、32ビット整数演算と同じように挙動する)。しかしながら個々のレーン内では、32×32乗算が実施される代わりに、32ビット・ソース・レーンは、4つの全く異なる8ビット値で構築されていると見なされ、ドット積演算がこれらの2つの「ミニ-ベクトル」全体にわたって実施される。次に、結果が累算器値から対応する32ビット・レーン中に累算される。図は、単一の32ビット・レーン内の演算を明示的に描写したものにすぎないことは認識されよう。128ビット・ベクトル長の一実例を取ると、命令は、32個の演算(16個の乗算及び16個の加算)を有効に実施することになり、これは、匹敵する当代の命令よりも3~4倍稠密である。英国のCambridgeのARM(登録商標)社によって提供されるScalable Vector Extensions(SVE)などのより長いベクトルを許容するアーキテクチャ中に実現されると、これらのより長いベクトルは、それに応じて有効演算計数を増やすことになる。さらに、32ビット・レーン幅の特定の実例が示されているが、多くの異なる幅の組合せ(入力及び出力の両方における)も可能であり、例えば16ビット×16ビット->64ビット、又は16ビット×16ビット->32ビットであることを認識されたい。「要素による」形態(例えば単一の32ビット・レーンがオペランドのうちの1に対して複製される)も同じく提案される。図9Aで出力レジスタを第2のレジスタに結合しているダッシュ矢印は、第2のレジスタは実際には出力レジスタであってもよく、このレジスタの内容に関して累算演算を実施することができることを概略的に表したものである。図9Bの考察に戻ると、ここでは2つの全く異なる命令が図解されていることに留意されたい。通常、図解されている第1の命令は、図9Aに図解されている演算のすべてを実施させることができるが、図9Bに図解されている第1の命令が乗算及び加算演算のみを実施させ、また、結果を出力レジスタにもたらし、且つ、結果を累算器レジスタに適用する後続する累算演算を、図解されている、とりわけそのタスクを目的とした第2の命令によって実施することができる実施例も同じく提供される。
図10は、図9Bに示されているデータ処理命令の実行の実施例におけるいくつかの変形形態を略図で示したものである。ここでは、単に例証を明確にするためだけの理由で、2つのソース・レジスタ350及び352の各々の中でアクセスされるデータ要素の数が2つに低減されている。したがって2つの乗算ユニット354及び356のみが提供されており(レーン毎に)、また、1つの加算ユニット358が提供されている(レーン毎に)。実行される特定のデータ処理命令に応じて、「ドット積」演算の結果を指定された出力レジスタ360に書き込むことができ(指定されている場合)、或いは別法としては累算レジスタ362に書き込むことも可能である(そのように指定されている場合)。累算レジスタが定義されている後者の場合、この累算レジスタの内容は、進行中の累算を実施することができるよう、加算ユニット358への追加入力として捕らえることができる。
図11は、2つの128ビット・レジスタ380及び382が上で言及した「ドット積」データ処理演算命令のうちの1つのためのソース・レジスタである、より複雑な実例を略図で示したものである。これらのソース・レジスタ380及び382の各々は、4つの独立したレーン(レーン0~3)によって取り扱われ、また、これらのレーンのそれぞれの内容は、2つのソース・レジスタからの同じレーンのそれぞれの内容が隣接する記憶バッファにもたらされるよう、一時記憶バッファ384~398の中に取得される。個々の記憶バッファ内では、次に内容データ要素(この実例ではそれぞれ4つのデータ要素)がレーン400、402、404及び406の各々に提供されている一組の4つの乗算ユニットにそれぞれの入力を提供する。これらの乗算ユニットの出力は、次に、それぞれの加算ユニット408、410、412及び414に供給され、また、これらの加算ユニットの各々の出力は、累算レジスタ416のそれぞれの対応するレーンの中に引き渡される。累算レジスタ416のそれぞれのレーンは、加算ユニット(累算器)408~414の中に第2のタイプの入力を提供する。図12は、図11の基本構成と同じ基本構成を示したものであり、実際、同じ副構成要素は同じ参照数表示を使用して表されており、ここでは繰り返して説明されない。図12と図11の相違は、128ビット・レジスタ380(ソース・レジスタ)の4つのレーンの各々の内容は使用されるが、第2の128ビット・ソース・レジスタ382からは第1のレーン内容のみが使用され、また、この内容が一時記憶ユニット386、390、394及び398の各々に複写されることである。(唯一の)レーンとして選択される、この実例ではソース・レジスタ382からの内容を提供するこのレーンは命令によって指定される。この実例例証のために選択されたこの特定のレーン(レーン0)に関連する有意性は存在せず、ソース・レジスタ382の任意の他のレーンを同じように指定することも可能であることは認識されよう。選択されるレーンの指定は、例えば図4Aの実例命令に示されているように、命令の中に指標値を設定することによって実施される。
図11及び図12に示されている実例に対する他の変形態様は図13に示されている。この場合も、ここでは同じ参照数表示が与えられた同じ副構成要素が再び使用されており、簡潔にするために繰り返して説明されない。図11及び図12の実例に対する図13に示されている相違は、ソース・レジスタ380及び382の各々の4つのレーンは、それら自体が2つのデータ群(本明細書においては「チャンク」とも呼ばれ、図にはチャンク0及びチャンク1のラベルが振られている)の中で取り扱われていることである。これは、レジスタ380の内容が処理される方法には影響せず、その4つのレーンの内容は、上で説明したように一時記憶ユニット384、388、392及び396に転送される。しかしながら単一のレーン内容の抽出及び複写は、図12の実例で紹介したように、ここでは、レジスタ382のレーン0の内容が複製されて、一時記憶バッファ394及び398に転送され、一方、チャンク1中のレーン2の内容が複写されて、一時記憶バッファ386及び390の中に転送されるよう、データ群毎を基本として(「チャンク毎」を基本として)実施される。図13に示されている演算は、より包括的に例証されている図4Bの特定の実例と見なすことができ、図4Bの「演算」は、ここでは、説明されたドット積演算を含む4つの処理ユニット120~126によって実施されていることに留意されたい。この場合も、この例証実例において選択された特定のレーン(個々のチャンクの「第1の」レーンとしてレーン2及び0)に関連する有意性は存在せず、これらのレーンは、例えば図4Aの実例命令に示されているように、命令の中に指標値を設定することによって指定されている。最後に、図13に図解されているデータ処理命令の実行に先立って、ソース・レジスタの内容を適切に準備するために、図2及び図3に示されているような、また、上で考察したようなデータ準備命令などのデータ準備命令を有効に実行することができることに留意されたい。
図14は、データ処理命令を実行して、図9A~図13を参照して上で考察したドット積演算などのドット積演算を実施する際に、一実施例の方法に従って取られるステップのシーケンスを示したものである。フローは、命令が復号されるステップ430で開始され、また、ステップ440で対応する制御信号が生成される。次にステップ450で、複数のデータ要素が命令の中で指定された第1のソース・レジスタ及び第2のソース・レジスタからレーン毎を基本として抽出され、また、ステップ460で、ドット積演算の第1の対を実施するために、第1のソース・レジスタ及び第2のソース・レジスタからのデータ要素のそれぞれの対が個々のレーンの中で互いに掛け合わされる。次にステップ470で、この場合もレーン毎を基本としてそれぞれの乗算演算の結果が1つに加算され、また、同じく命令の中で指定された入力累算器レジスタから検索された累算器値に加えられる(この実例では)。
図15Aは、いくつかの実施例によって提供されるデータ処理命令の実行を略図で示したものである。図15Bは、対応する実例命令を示したものである。この実例命令500は、演算コード502、第1のソース・レジスタ指定子504、第2のソース・レジスタ指定子506及び一組の累算レジスタ指定子508を含む。図15Aの実例の中で実現されている第1のソース・レジスタ510及び第2のソース・レジスタ512は、図の一番上に示されており、データ処理命令が実行されると、それに応答してこれらのソース・レジスタからデータ要素が抽出される。すべて(4つ)のデータ要素が第1のソース・レジスタ510から個別に抽出され、一方、第2のソース・レジスタ512のすべての内容を構築している4つのデータ要素はブロックとして抽出される。第2のソース・レジスタ512の内容は、4つの演算ユニットの各々、即ち融解乗算-加算(FMA:fused multiply-add)ユニット514、516、518及び520に引き渡される。第1のソース・レジスタ510から抽出された4つのデータ要素の各々は、FMAユニット514~520のうちのそれぞれのFMAユニットに引き渡される。FMAユニット514及び520の各々は、図解されているようにそれぞれの制御信号によって制御される。したがって図15Aの実例におけるデータ処理命令を実行することにより、データ処理回路機構(4つのFMAユニットによって表されている)は、4つの要素によるベクトル乗算/累算演算を同時に実施することになる。本技法は4つの多様性に限定されず、これは、このような当代の処理装置で典型的に利用することができるロード:計算比に対して良好に一致することが分かっていることに留意されたい。FMAユニットの出力は、命令の中で指定された一組の累算レジスタのうちのそれぞれのレジスタに適用される(図15Bの項目508を参照されたい)。さらに、これらの4つの累算レジスタ522、524、526及び528の内容は、累算がこれらのレジスタの各々の内容に対して実施されるよう、FMAユニット514~520の各々への別の入力を形成する。
図16は、単純な行列乗算実例を表す、図15Aの実例の実例視覚化を示したものであり、主体行列A及び主体行列Bが互いに掛け合わされて結果行列Cを生成する。このための準備において、行列Aの列(陰が施されている)はレジスタv0の中にロードされ、また、行列Bの行(陰が施されている)はレジスタv2の中にロードされている。結果行列Cのための累算器はレジスタv4~v7の中に記憶されている。行列Aからロードされた値が列として描写されているが、行列は、個々のソース・アレイからの隣接するベクトル・ロードを実施することができるよう、容易に置換され、及び/又は交互配置されることに留意されたい。この文脈では、行列乗算はO(n)演算であり、したがって処理のための行列データを準備する補助タスクはO(n)演算であり、したがって十分に大きいnに対しては無視し得る負担であることに留意されたい。示されている実例に対応する命令は、FMA4 v4-v7、v2、v0[0-3]として表すことが可能である。ここではFMA4はこの命令のラベル(又は等価的に演算コード)を表しており、一方、v4-v7は一組の累算レジスタであり、v2は、全内容が取得されるソース・レジスタであり、一方、v0は、一組のデータ要素(指標付き0~3)が取得されるソース・レジスタである。この命令を実行すると、4つの演算が実施される。
v4 +=v2*v0[0]
v5 +=v2*v0[1]
v6 +=v2*v0[2]及び
v7 +=v2*v0[3]
図17は、図15Aに示されている実例のより単純なバージョンを表したものであり、この実例では2つのデータ要素のみが第1のソース・レジスタ540及び第2のソース・レジスタ542の各々から誘導されている。レジスタ542から抽出された両方のデータ要素は、FMAユニット544及び546の各々に引き渡され、一方、レジスタ540からの第1のデータ要素はFMAユニット544に引き渡され、また、第2のデータ要素はFMAユニット546に引き渡される。累算レジスタ548及び550の内容は、それぞれのFMAユニットの各々への他の入力を提供し、また、累算結果は、個々のそれぞれの累算レジスタに適用される。それとは対照的に、図18は、もっと多くのデータ要素がソース・レジスタの各々から抽出される実例を図解したものであり、これら(この実例では8つ)は、ソース・レジスタ560及び562の各々から抽出される。レジスタ562の全内容はFMAユニット564~578の各々に提供され、一方、レジスタ560からの選択されたそれぞれのデータ要素は、他の入力として提供される。乗算-加算演算の結果は、それぞれの累算レジスタ580~594の中で累算される。
図19は、一実例において実施されるいくつかの特定の乗算演算のさらに詳細を与える実例を示したものである。ここでは2つのソース・レジスタv0及びv2は、2つの全く異なるデータ群の中でそれぞれ取り扱われている。レジスタv0の2つのデータ群は、被選択データ要素が全体にわたって複製されるレジスタの部分を同じく表しており、図19の実例ではこれは個々の部分の「第1の」データ要素、即ちそれぞれ要素[0]及び[4]である。被選択データ要素は、指標によって命令の中で指定することができる。したがって図19に示されているデータ演算の第1のステップで、レジスタv0のこれらの2つのデータ群のデータ要素が図に示されているように個々の部分の幅全体にわたって複製される。次にこれらは4つの乗算器600、602、604及び606への入力を提供し、一方、他の入力はレジスタv2の内容によって提供される。次にv2のそれぞれのデータ要素とv0のそれぞれのデータ要素との乗算が実施され、また、結果がターゲット・レジスタv4~v7に適用され、個々の累算レジスタのデータ群毎にラベルが振られた特定の計算によって示されているように、これらの4つの累算レジスタ中への2つのデータ群への再分割が維持される。図19に図解されているデータ処理命令の実行に先立って、ソース・レジスタの内容を適切に準備するために、図2及び図3に示されているような、また、上で考察したようなデータ準備命令などのデータ準備命令を有効に実行することができることに留意されたい。
図20は、2つのソース・レジスタ620及び622の内容が2つの独立したレーン(レーン0及びレーン1)にデータ要素を含むものとして取り扱われる実例を示したものである。個々のレーン内では、2つの副部分が画定され、また、内容のこの「レーン化」は、計算全体を通して、即ちFMAユニット624、626、628及び630を通して維持され、また、最後に累算レジスタ632及び634の中にもたらされる。
図21は、図15Aから図20の実例に関して説明したデータ処理命令などのデータ処理命令を処理する際に、一実施例の方法に従って取られるステップのシーケンスを示したものである。フローは、データ処理命令が復号されるステップ650で開始され、また、ステップ652で対応する制御信号が生成される。次にステップ654で、N個のデータ要素がデータ処理命令の中で指定された第1のソース・レジスタから抽出され、一方、ステップ656で、N個のデータ要素がデータ処理命令の中で指定された第2のソース・レジスタの内容によって乗算される。次にステップ658で、これらの乗算演算のN個の結果値がデータ処理命令の中で指定されたN個のそれぞれの累算レジスタの内容に適用される。以上の説明に鑑みて、図21に関して説明した命令の実行、また、同様に図14に関して説明した命令の実行に先立って、ソース・レジスタの内容を適切に準備するために、図2及び図3に示されているような、また、上で考察したようなデータ準備命令などのデータ準備命令を有効に実行することができることは認識されよう。
図22は、使用することができる仮想計算機実施態様を図解したものである。上で説明した実施例は、関連する技法をサポートする特定の処理ハードウェアを動作させるための装置及び方法によって一般に本技法を実現しているが、いわゆるハードウェア・デバイスの仮想計算機実施態様を提供することも同じく可能である。これらの仮想計算機実施態様は、典型的には仮想計算機プログラム710をサポートするホスト・オペレーティング・システム720を走らせるホスト・プロセッサ730上で走る。これには、合理的な速度で実行する仮想計算機実施態様をサポートするために、場合によってはより強力なプロセッサを提供する必要があるが、このような手法は、互換性又は再使用の理由で別のプロセッサに固有のコードを走らせることが望ましい場合などの特定の状況において正当化され得る。仮想計算機プログラム710は、アプリケーション・プログラム700にアプリケーション・プログラム・インタフェースを提供し、アプリケーション・プログラム・インタフェースは、仮想計算機プログラム710によってモデル化されるデバイスである現実ハードウェアによって提供されることになるアプリケーション・プログラム・インタフェースと同じアプリケーション・プログラム・インタフェースである。したがって上で考察したプロセッサ状態チェック命令の1つ又は複数の実例を含むプログラム命令は、仮想計算機プログラム710を使用してアプリケーション・プログラム700内から実行することができ、それにより仮想計算機ハードウェアとのそれらの相互作用をモデル化することができる。
簡潔に総合的に要約すると、データ処理装置、データ処理装置を動作させる方法、非一時的コンピュータ可読記憶媒体及び命令が提供される。命令は、第1のソース・レジスタ、第2のソース・レジスタ及び指標を指定する。命令に応答して制御信号が生成され、それにより処理回路機構は、第1のソース・レジスタ及び第2のソース・レジスタ中の個々のデータ群に関してデータ処理演算を実施し、それによりデータ処理演算の結果を形成するそれぞれの結果データ群を生成する。第1のソース・レジスタ及び第2のソース・レジスタの各々は、データ群の定義済みのサイズの少なくとも2倍の整数倍数であるサイズを有しており、また、個々のデータ群は複数のデータ要素を含む。個々のデータ群のためのデータ処理演算のオペランドは、指標及び第2のソース・レジスタのデータ群中の個々のデータ要素によって、第1のソース・レジスタのデータ群中で識別される被選択データ要素である。ベクトルによる要素演算のための技法は、レジスタ幅の成長に応じて容易にスケーリングが可能である。
本出願においては、「…するように構成された」或いは「するようになされた」という語は、装置の要素が定義された演算を実施するための構成能力を有していることを意味するべく使用されている。この文脈においては、「構成」は、ハードウェア又はソフトウェアの相互接続の配置又は方法を意味している。例えば装置は、定義された演算を提供する専用ハードウェアを有することができ、或いはプロセッサ又は他の処理デバイスは、関数を実施するようにプログラムすることができる。「するように構成された」又は「するようになされた」は、定義された演算を提供するために何らかの方法で装置要素を変更する必要があることをほのめかしているわけではない。
以上、例証実施例について、本明細書において添付の図面を参照して詳細に説明したが、本発明はこれらの厳密な実施例に限定されないこと、また、当業者には、添付の特許請求の範囲で定義されている本発明の範囲を逸脱することなく、様々な変更、追加及び修正を加えることができることを理解されたい。例えば本発明の範囲を逸脱することなく、従属請求項の特徴と独立請求項の特徴との様々な組合せを実施することができる。

Claims (24)

  1. データ処理装置であって、
    複数のレジスタを有するレジスタ記憶回路機構と、
    データ処理命令に応答して制御信号を生成する復号器回路機構であって、前記データ処理命令が複数のレジスタ中で、第1のソース・レジスタ、第2のソース・レジスタ及び指標を指定し、前記第1のソース・レジスタ及び前記第2のソース・レジスタの各々が、データ群の定義済みのサイズの少なくとも2倍の整数倍数であるサイズを有し、また、個々のデータ群が複数のデータ要素を含む、前記復号器回路機構と、
    前記制御信号に応答して、前記第1のソース・レジスタ及び前記第2のソース・レジスタ中の個々の前記データ群に関してデータ処理演算を実施し、それにより前記データ処理演算の結果を形成するそれぞれの結果データ群を生成する処理回路機構であって、個々の前記データ群に対する前記データ処理演算のオペランドが、前記第1のソース・レジスタの前記データ群中の指標で識別される被選択データ要素と、前記第2のソース・レジスタの前記データ群中の個々のデータ要素である、前記処理回路機構と、
    を備え
    前記第1のソース・レジスタの前記データ群の各々は、主体データ群項目の複製である、データ処理装置。
  2. 前記処理回路機構が、前記制御信号に応答して前記被選択データ要素の複数の例を複数のデータ演算回路に供給するデータ要素操作回路機構を備え、個々のデータ演算回路が、前記制御信号に応答して、前記第1のソース・レジスタ及び前記第2のソース・レジスタ中のそれぞれのデータ群に関して前記データ処理演算を実施する、請求項1に記載のデータ処理装置。
  3. 前記復号器回路機構が、データ準備命令に応答して他の制御信号を生成し、前記データ準備命令が記憶場所及びターゲット・レジスタを指定し、
    前記処理回路機構が、前記他の制御信号に応答して、前記定義済みのサイズを有する前記主体データ群項目を前記記憶場所から検索し、また、前記主体データ群項目の複製によって前記ターゲット・レジスタを充填する、
    請求項1又は請求項2に記載のデータ処理装置。
  4. 前記ターゲット・レジスタが前記第1のソース・レジスタである、請求項3に記載のデータ処理装置。
  5. 前記レジスタ記憶回路機構が、前記整数倍数の前記指標による指示を記憶するための制御レジスタを備える、請求項1から4までのいずれかに記載のデータ処理装置。
  6. 前記復号器回路機構が、制御命令に応答して、前記整数倍数の前記指標による前記指示を前記データ処理装置のための定義済みの最大値まで修正する、請求項5に記載のデータ処理装置。
  7. 前記データ処理命令が前記複数のレジスタ中の結果レジスタをさらに指定し、
    前記処理回路機構が、前記制御信号にさらに応答して、前記データ処理演算の前記結果を前記結果レジスタに適用する、
    請求項1から6までのいずれかに記載のデータ処理装置。
  8. 前記処理回路機構が、前記制御信号に応答して、前記データ処理演算の前記結果を前記結果レジスタに記憶する、請求項7に記載のデータ処理装置。
  9. 前記処理回路機構が、前記制御信号に応答して、前記データ処理演算の前記結果を前記第2のソース・レジスタに適用する、請求項1から6までのいずれかに記載のデータ処理装置。
  10. 前記データ処理命令が前記複数のレジスタ中の少なくとも1つの他のソース・レジスタをさらに指定し、
    前記処理回路機構が、前記制御信号に応答して、前記少なくとも1つの他のソース・レジスタ中の個々の前記データ群にさらに関して前記データ処理演算を実施し、それにより前記データ処理演算の前記結果を形成する前記それぞれの結果データ群を生成し、
    個々の前記データ群のための前記データ処理演算のオペランドが、前記少なくとも1つの他のソース・レジスタの前記データ群中の個々のデータ要素をさらに含む、
    請求項1から9までのいずれかに記載のデータ処理装置。
  11. 前記処理回路機構が、前記制御信号に応答して、前記データ処理演算の前記結果を前記少なくとも1つの他のソース・レジスタ中の先行する内容と累算する、請求項10に記載のデータ処理装置。
  12. 前記データ処理演算が算術演算である、請求項1から11までのいずれかに記載のデータ処理装置。
  13. 前記データ処理演算が乗算演算である、請求項12に記載のデータ処理装置。
  14. データ処理演算が、
    少なくとも第1のデータ要素及び第2のデータ要素を前記第1のソース・レジスタ及び前記第2のソース・レジスタの各々から抽出することと、
    少なくとも第1のデータ要素の対及び第2のデータ要素の対を互いに掛け合わせる乗算演算を実施することと、
    前記乗算演算の結果を合計することと
    を含むドット積演算である、請求項12に記載のデータ処理装置。
  15. 前記乗算演算が、第1のデータ要素の対、第2のデータ要素の対、第3のデータ要素の対及び第4のデータ要素の対を互いに掛け合わせることを含む、請求項14に記載のデータ処理装置。
  16. 前記データ処理命令が、前記複数のレジスタ中の累算レジスタをさらに指定し、また、前記データ処理演算が、
    前記累算レジスタから累算器値をロードすることと、
    前記乗算演算の前記結果と前記累算器値を合計することと、
    前記合計した結果を前記累算レジスタに記憶することと
    をさらに含むドット積及び累算演算である、請求項14又は請求項15に記載のデータ処理装置。
  17. 前記データ処理演算が乗算-累算演算である、請求項12に記載のデータ処理装置。
  18. 前記第1のソース・レジスタ及び前記第2のソース・レジスタ中の個々の前記データ群中の前記データ要素が複素数を表すデータ値の対であり、また、前記データ処理演算が複素数の乗算-累算である、請求項17に記載のデータ処理装置。
  19. 前記データ処理命令が回転パラメータをさらに指定し、前記処理回路機構が、前記回転パラメータに応答して、前記データ処理演算の対象になる前記データ値及びそれらの符号の被選択順列を使用して複素数の前記乗算-累算を実施する、請求項18に記載のデータ処理装置。
  20. 前記データ処理演算が論理演算である、請求項1から11までのいずれかに記載のデータ処理装置。
  21. データ処理の方法であって、
    データ処理命令を復号することにより制御信号を生成するステップであって、前記データ処理命令が複数のレジスタ中で、第1のソース・レジスタ、第2のソース・レジスタ及び指標を指定し、前記第1のソース・レジスタ及び前記第2のソース・レジスタの各々が、データ群の定義済みのサイズの少なくとも2倍の整数倍数であるサイズを有し、更に、個々のデータ群が複数のデータ要素を含む、前記制御信号を生成するステップと、
    前記制御信号に応答して、前記第1のソース・レジスタ及び前記第2のソース・レジスタ中の個々の前記データ群に関してデータ処理演算を実施するステップであって、それにより前記データ処理演算の結果を形成するそれぞれの結果データ群を生成するステップであって、個々の前記データ群に対する前記データ処理演算のオペランドが、前記第1のソース・レジスタの前記データ群中の指標で識別される被選択データ要素と、前記第2のソース・レジスタの前記データ群中の個々のデータ要素である、前記結果データ群を生成するステップと、
    を含み、
    前記第1のソース・レジスタの前記データ群の各々は、主体データ群項目の複製である、データ処理の方法。
  22. 非一時的方式でプログラムを記憶するコンピュータ可読記憶媒体であって、前記プログラムが、少なくとも1つのデータ処理命令であって、
    前記データ処理命令に応答して制御信号を生成することであって、前記データ処理命令が複数のレジスタ中で、第1のソース・レジスタ、第2のソース・レジスタ及び指標を指定し、前記第1のソース・レジスタ及び前記第2のソース・レジスタの各々が、データ群の定義済みのサイズの少なくとも2倍の整数倍数であるサイズを有し、個々のデータ群が複数のデータ要素を含む、前記制御信号を生成することと、
    前記制御信号に応答して、前記第1のソース・レジスタ及び前記第2のソース・レジスタ中の個々の前記データ群に関してデータ処理演算を実施することであって、それにより前記データ処理演算の結果を形成するそれぞれの結果データ群を生成することになる少なくとも1つのデータ処理命令を含み、個々の前記データ群に対する前記データ処理演算のオペランドが、前記第1のソース・レジスタの前記データ群中の指標で識別される被選択データ要素と、前記第2のソース・レジスタの前記データ群中の個々のデータ要素である、前記データ処理演算を実施することとが、データ処理装置によって実行され
    前記第1のソース・レジスタの前記データ群の各々は、主体データ群項目の複製である、コンピュータ可読記憶媒体。
  23. データ処理装置であって、
    複数のレジスタにデータを記憶するための手段と、
    データ処理命令を復号し、それにより制御信号を生成するための手段であって、前記データ処理命令がデータを記憶するための手段中で、第1のソース・レジスタ、第2のソース・レジスタ及び指標を指定し、前記第1のソース・レジスタ及び前記第2のソース・レジスタの各々が、データ群の定義済みのサイズの少なくとも2倍の整数倍数であるサイズを有し、また、個々のデータ群が複数のデータ要素を含む、前記制御信号を生成するための手段と、
    前記制御信号に応答して、前記第1のソース・レジスタ及び前記第2のソース・レジスタ中の個々の前記データ群に関してデータ処理演算を実施し、それにより前記データ処理演算の結果を形成するそれぞれの結果データ群を生成するための手段であって、個々の前記データ群に対する前記データ処理演算のオペランドが、前記第1のソース・レジスタの前記データ群中で識別される被選択データ要素と、前記第2のソース・レジスタの前記データ群中の個々のデータ要素である、前記結果データ群を生成するための手段と、
    を備え
    前記第1のソース・レジスタの前記データ群の各々は、主体データ群項目の複製である、データ処理装置。
  24. データ処理装置上で実行するコンピュータ・プログラムによって提供される仮想計算機であって、請求項1から20までのいずれか一項又は23に記載の前記データ処理装置に対応する命令実行環境を提供する仮想計算機。
JP2019544057A 2017-02-23 2018-02-02 データ処理装置におけるベクトルによる要素演算 Active JP7148526B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GR20170100081 2017-02-23
GR20170100081 2017-02-23
PCT/GB2018/050311 WO2018154273A1 (en) 2017-02-23 2018-02-02 Element by vector operations in a data processing apparatus

Publications (2)

Publication Number Publication Date
JP2020508514A JP2020508514A (ja) 2020-03-19
JP7148526B2 true JP7148526B2 (ja) 2022-10-05

Family

ID=61188842

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019544057A Active JP7148526B2 (ja) 2017-02-23 2018-02-02 データ処理装置におけるベクトルによる要素演算

Country Status (8)

Country Link
US (1) US11327752B2 (ja)
EP (1) EP3586228B1 (ja)
JP (1) JP7148526B2 (ja)
KR (1) KR102584031B1 (ja)
CN (1) CN110312993B (ja)
IL (1) IL267998B2 (ja)
TW (1) TWI780116B (ja)
WO (1) WO2018154273A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10963256B2 (en) 2018-09-28 2021-03-30 Intel Corporation Systems and methods for performing instructions to transform matrices into row-interleaved format
CN111198670B (zh) 2018-11-20 2021-01-29 华为技术有限公司 执行矩阵乘法运算的方法、电路及soc
US20210334072A1 (en) * 2020-04-22 2021-10-28 Facebook, Inc. Mapping convolution to connected processing elements using distributed pipelined separable convolution operations
US11263291B2 (en) * 2020-06-26 2022-03-01 Intel Corporation Systems and methods for combining low-mantissa units to achieve and exceed FP64 emulation of matrix multiplication
US11972230B2 (en) 2020-06-27 2024-04-30 Intel Corporation Matrix transpose and multiply

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030097391A1 (en) 2001-11-21 2003-05-22 Ashley Saulsbury Methods and apparatus for performing parallel integer multiply accumulate operations
US20050125631A1 (en) 2003-12-09 2005-06-09 Arm Limited Data element size control within parallel lanes of processing
JP2005174292A (ja) 2003-12-09 2005-06-30 Arm Ltd データシフト操作
JP2008077663A (ja) 2006-09-20 2008-04-03 Intel Corp ドット積演算を行うための命令および論理
JP2015158940A (ja) 2011-04-01 2015-09-03 インテル コーポレイション ベクトルフレンドリ命令フォーマット及びその実行
JP2016507831A (ja) 2013-01-23 2016-03-10 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation Vectorgaloisfieldmultiplysumandaccumulate命令を処理するためのコンピュータ・システム、コンピュータ・プログラム及び方法
US20160179523A1 (en) 2014-12-23 2016-06-23 Intel Corporation Apparatus and method for vector broadcast and xorand logical instruction

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0589159A (ja) * 1992-01-10 1993-04-09 Hitachi Ltd データ処理システム
GB2409059B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2409062C (en) * 2003-12-09 2007-12-11 Advanced Risc Mach Ltd Aliasing data processing registers
GB2409066B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2458665B (en) * 2008-03-26 2012-03-07 Advanced Risc Mach Ltd Polynomial data processing operation
GB2464292A (en) * 2008-10-08 2010-04-14 Advanced Risc Mach Ltd SIMD processor circuit for performing iterative SIMD multiply-accumulate operations
GB2474901B (en) * 2009-10-30 2015-01-07 Advanced Risc Mach Ltd Apparatus and method for performing multiply-accumulate operations
EP2584460A1 (en) * 2011-10-20 2013-04-24 ST-Ericsson SA Vector processing system comprising a replicating subsystem and method
US10055225B2 (en) * 2011-12-23 2018-08-21 Intel Corporation Multi-register scatter instruction
WO2013095618A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Instruction execution that broadcasts and masks data values at different levels of granularity
US9336000B2 (en) * 2011-12-23 2016-05-10 Intel Corporation Instruction execution unit that broadcasts data values at different levels of granularity
EP3001307B1 (en) * 2014-09-25 2019-11-13 Intel Corporation Bit shuffle processors, methods, systems, and instructions
EP3001306A1 (en) * 2014-09-25 2016-03-30 Intel Corporation Bit group interleave processors, methods, systems, and instructions
US10001995B2 (en) * 2015-06-02 2018-06-19 Intel Corporation Packed data alignment plus compute instructions, processors, methods, and systems
US10503502B2 (en) * 2015-09-25 2019-12-10 Intel Corporation Data element rearrangement, processors, methods, systems, and instructions
US11216720B2 (en) * 2015-10-08 2022-01-04 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit that manages power consumption based on memory accesses per period
US11029949B2 (en) * 2015-10-08 2021-06-08 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit
US10585848B2 (en) * 2015-10-08 2020-03-10 Via Alliance Semiconductor Co., Ltd. Processor with hybrid coprocessor/execution unit neural network unit
US10565494B2 (en) * 2016-12-31 2020-02-18 Via Alliance Semiconductor Co., Ltd. Neural network unit with segmentable array width rotator
JP7253492B2 (ja) * 2017-02-23 2023-04-06 アーム・リミテッド データ処理装置における乗累算
GB2560159B (en) * 2017-02-23 2019-12-25 Advanced Risc Mach Ltd Widening arithmetic in a data processing apparatus

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030097391A1 (en) 2001-11-21 2003-05-22 Ashley Saulsbury Methods and apparatus for performing parallel integer multiply accumulate operations
US20050125631A1 (en) 2003-12-09 2005-06-09 Arm Limited Data element size control within parallel lanes of processing
JP2005174292A (ja) 2003-12-09 2005-06-30 Arm Ltd データシフト操作
JP2008077663A (ja) 2006-09-20 2008-04-03 Intel Corp ドット積演算を行うための命令および論理
JP2015158940A (ja) 2011-04-01 2015-09-03 インテル コーポレイション ベクトルフレンドリ命令フォーマット及びその実行
JP2016507831A (ja) 2013-01-23 2016-03-10 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation Vectorgaloisfieldmultiplysumandaccumulate命令を処理するためのコンピュータ・システム、コンピュータ・プログラム及び方法
US20160179523A1 (en) 2014-12-23 2016-06-23 Intel Corporation Apparatus and method for vector broadcast and xorand logical instruction

Also Published As

Publication number Publication date
TWI780116B (zh) 2022-10-11
KR20190119075A (ko) 2019-10-21
EP3586228B1 (en) 2023-03-29
IL267998B2 (en) 2023-12-01
EP3586228A1 (en) 2020-01-01
TW201832071A (zh) 2018-09-01
CN110312993B (zh) 2024-04-19
CN110312993A (zh) 2019-10-08
IL267998B1 (en) 2023-08-01
JP2020508514A (ja) 2020-03-19
US20190377573A1 (en) 2019-12-12
KR102584031B1 (ko) 2023-10-04
IL267998A (en) 2019-09-26
WO2018154273A1 (en) 2018-08-30
US11327752B2 (en) 2022-05-10

Similar Documents

Publication Publication Date Title
JP7454377B2 (ja) データ処理装置における拡大算術計算
JP7148526B2 (ja) データ処理装置におけるベクトルによる要素演算
JP7253492B2 (ja) データ処理装置における乗累算
KR20200019942A (ko) 레지스터-기반 매트릭스 승산
TWI773783B (zh) 用於基於暫存器的複數處理的設備、方法、積體電路、電腦程式及電腦可讀取儲存媒體
JP7186212B2 (ja) データ処理装置におけるベクトル・インタリーブ
CN110300956B (zh) 数据处理装置中的乘-累加
TW202305588A (zh) 用於向量組合指令之處理設備、方法、及電腦程式
GR20170200090U (el) Λειτουργιες στοιχειου κατα διανυσμα σε μια διαταξη επεξεργασιας δεδομενων

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210126

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220411

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220830

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220922

R150 Certificate of patent or registration of utility model

Ref document number: 7148526

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150