CN110312993B - 数据处理装置中的向量逐元素操作 - Google Patents

数据处理装置中的向量逐元素操作 Download PDF

Info

Publication number
CN110312993B
CN110312993B CN201880012011.8A CN201880012011A CN110312993B CN 110312993 B CN110312993 B CN 110312993B CN 201880012011 A CN201880012011 A CN 201880012011A CN 110312993 B CN110312993 B CN 110312993B
Authority
CN
China
Prior art keywords
data
data processing
register
source register
source
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
CN201880012011.8A
Other languages
English (en)
Other versions
CN110312993A (zh
Inventor
格里戈里奥斯·马格克里斯
奈杰尔·约翰·斯蒂芬斯
雅各·埃本
姆布·埃约勒
大卫·汉纳·曼塞尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
ARM Ltd
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 ARM Ltd filed Critical ARM Ltd
Publication of CN110312993A publication Critical patent/CN110312993A/zh
Application granted granted Critical
Publication of CN110312993B publication Critical patent/CN110312993B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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)
  • Image Processing (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

提供了一种数据处理装置、一种操作数据处理装置的方法、一种非暂态计算机可读存储介质、以及一种指令。该指令指定第一源寄存器、第二源寄存器、以及索引。响应于该指令而生成控制信号,引发处理电路针对第一源寄存器和第二源寄存器中的每个数据群组执行数据处理操作,以生成相应的结果数据群组,从而形成数据处理操作的结果。第一源寄存器和第二源寄存器中的每一者具有尺寸,该尺寸是数据群组的预先定义尺寸的至少两倍的正整数倍数,并且每个数据群组包括多个数据元素。针对每个数据群组的数据处理操作的操作数为在第一源寄存器的数据群组中通过索引来标识的选择的数据元素及第二源寄存器的数据群组中的每个数据元素。用于向量逐元素操作的技术,在寄存器宽度成长时为易扩展的。

Description

数据处理装置中的向量逐元素操作
技术领域
本公开关于数据处理。具体地,本公开关于执行向量逐元素(element-by-vector)操作的数据处理装置。
背景技术
可需要数据处理装置来执行算数操作,这些操作可包含矩阵乘法操作。这些操作可在多种情境中找到应用。可需要实现以支持这样的矩阵乘法的一个功能为:支持将单一元素与整体向量结合的操作的能力,例如,将一个向量的所有元素乘以另一向量的单个元素。然而,提供该功能的现有技术不能很好的扩展至大型向量。
发明内容
本文描述的至少一个示例提供一种数据处理装置,包括:寄存器存储电路,该寄存器存储电路具有多个寄存器;解码器电路,该解码器电路响应于数据处理指令而生成控制信号,该数据处理指令在该多个寄存器中指定:第一源寄存器、第二源寄存器、以及索引;其中该第一源寄存器和该第二源寄存器中的每一者具有尺寸,该尺寸是数据群组的预先定义尺寸的至少两倍的正整数倍数,并且每个数据群组包括多个数据元素;以及处理电路,该处理电路响应于该控制信号而针对该第一源寄存器和该第二源寄存器中的每个该数据群组执行数据处理操作,以生成相应的结果数据群组,从而形成该数据处理操作的结果;其中,针对每个所述数据群组的该数据处理操作的操作数为在该第一源寄存器的数据群组中通过该索引来标识的选择的数据元素及该第二源寄存器的数据群组中的每个数据元素。
本文描述的至少一个示例提供一种数据处理方法,包括:解码数据处理指令以生成控制信号,该数据处理指令在多个寄存器中指定:第一源寄存器、第二源寄存器、以及索引;其中,该第一源寄存器和该第二源寄存器中的每一者具有尺寸,该尺寸是数据群组的预先定义尺寸的至少两倍的正整数倍数,并且每个数据群组包括多个数据元素;并且响应于该控制信号,针对该第一源寄存器和该第二源寄存器中的每个所述数据群组执行数据处理操作,以生成相应的结果数据群组,从而形成该数据处理操作的结果;其中,针对每个该数据群组的该数据处理操作的操作数为在该第一源寄存器的该数据群组中通过该索引来标识的选择的数据元素及该第二源寄存器的该数据群组中的每个数据元素。
本文描述的至少一个示例提供一种计算机可读存储介质,该计算机可读存储介质以非暂态方式存储包括至少一个数据处理指令的程序,至少一个数据处理指令在由数据处理装置执行时,引发:响应于该数据处理指令,生成控制信号,该数据处理指令在多个寄存器中指定:第一源寄存器、第二源寄存器、以及索引;其中,该第一源寄存器和该第二源寄存器中的每一者具有尺寸,该尺寸是数据群组的预先定义尺寸的至少两倍的正整数倍数,并且每个数据群组包括多个数据元素;并且响应于该控制信号,针对该第一源寄存器和该第二源寄存器中的每个所述数据群组执行数据处理操作,以生成相应的结果数据群组,从而形成该数据处理操作的结果;其中,针对每个所述数据群组的该数据处理操作的操作数为在该第一源寄存器的该数据群组中通过该索引来标识的选择的数据元素及该第二源寄存器的该数据群组中的每个数据元素。
本文描述的至少一个示例提供一种数据处理装置,包括:用于在多个寄存器中存储数据的装置;用于解码数据处理指令以生成控制信号的装置,该数据处理指令在用于存储数据的装置中指定:第一源寄存器、第二源寄存器、以及索引;其中,该第一源寄存器和该第二源寄存器中的每一者具有尺寸,该尺寸是数据群组的预先定义尺寸的至少两倍的正整数倍数,并且每个数据群组包括多个数据元素;以及用于响应于该控制信号而针对该第一源寄存器和该第二源寄存器中的每个所述数据群组执行数据处理操作的装置,以生成相应的结果数据群组,从而形成该数据处理操作的结果;其中,针对每个所述数据群组的该数据处理操作的操作数为在该第一源寄存器的该数据群组中通过该索引来标识的选择的数据元素及该第二源寄存器的该数据群组中的每个数据元素。
附图说明
进一步仅通过示例,参考如附图中所示的本发明的实施例来描述本发明,其中:
图1示意地图示了可体现本技术的各种示例的数据处理装置;
图2示意地图示了一个实施例中数据预备指令的使用;
图3示意地图示了图2的实施例的变体;
图4A示意地图示了示例数据处理指令,并且图4B展示了一个实施例中执行该数据处理指令的实现;
图5A和图5B示意地图示了两个方式,其中可在一些实施例中提供数据元素至操作单元的绕线;
图6A和图6B示意地图示了参考图4A和图4B及其执行所论述的数据处理指令的两个进一步示例;
图7A示意地图示了示例数据处理指令,且图7B展示一个实施例中执行该数据处理指令的实现;
图8展示根据一个实施例的方法所采用的一系列步骤;
图9A示意地图示了根据一个实施例的数据处理指令的执行,且图9B展示这样的指令的两个示例;
图10示意地图示了图9B的数据处理指令的执行的实施例中的一些变体;
图11示意地图示了一个实施例中使用两个128位的源寄存器以用于“点积(dotproduct)”数据处理指令的更复杂示例;
图12展示图11的实施例的变体;
图13展示图11和图12中所展示的示例的进一步变体;
图14展示根据一个实施例的方法所采用的一系列步骤;
图15A示意地图示了一些实施例所提供的数据处理指令的执行,并且图15B展示对应的示例指令;
图16以简单矩阵乘法操作的形式来展示图15A的实施例的示例可视化;
图17展示图15A中所展示的示例的更简单变体,其中仅两个数据元素是从第一和第二源寄存器中的每一者获得的;
图18展示图15A中所展示的示例的另一变体,其中从这些源寄存器中的每一者提取更多数据元素;
图19展示数据处理指令的执行的示例实施例,给出执行的一些特定乘法操作的更多细节;
图20展示数据处理指令的执行的示例实施例,其中将两个源寄存器的内容处置为包含两个独立通道(lanes)中的数据元素;
图21展示根据一个实施例的方法所采用的一系列步骤;以及
图22展示根据一个实施例的虚拟机实现。
具体实施方式
本文描述的至少一个示例实施例提供一种数据处理装置,包括:寄存器存储电路,该寄存器存储电路具有多个寄存器;解码器电路,该解码器电路响应于数据处理指令而生成控制信号,该数据处理指令在该多个寄存器中指定:第一源寄存器、第二源寄存器、以及索引;其中该第一源寄存器和该第二源寄存器中的每一者具有尺寸,该尺寸是数据群组的预先定义尺寸的至少两倍的正整数倍数,并且每个数据群组包括多个数据元素;以及处理电路,该处理电路响应于该控制信号而针对该第一源寄存器和该第二源寄存器中的每个该数据群组执行数据处理操作,以生成相应的结果数据群组,从而形成该数据处理操作的结果;其中,针对每个该数据群组的该数据处理操作的操作数为在该第一源寄存器的该数据群组中通过该索引来标识的选择的数据元素及该第二源寄存器的该数据群组中的每个数据元素。
所提供的指令因而引发第一源寄存器中的每个数据群组的向量元素与第二源寄存器中的对应数据群组的选择的元素的数据处理操作的执行。使用实时的索引值以选择第一源寄存器中每个元素群组内部的数据元素(亦即,所有群组中相同的元素位置)。换句话说,该指令引发元素的群组内部的向量逐元素操作的执行,且跨向量中每个群组复制完全相同的操作(包含元素选择)。此提供用于实现该向量逐元素操作的有效机制,特别在寄存器宽度(亦即,向量长度)成长时,因为技术明显为可扩展的。此外,应注意该群组的向量逐元素操作一般可被预期为可在数据处理装置中实现为单个微操作(micro-operation)的,而相较于等效正常向量操作而言无须额外的延迟,因为所处理的数据元素的选择与复制是在“数据群组”层级上定义与实现的,而确实可定义成限制为用于该微操作实现可能的尺寸。
可以多种方式布置数据处理装置以支持此数据处理指令的执行,例如特定方式中,操控在第一源寄存器的数据群组中通过索引标识的选择的数据元素,且应用至第二源寄存器的数据群组中的每个数据元素。在一些实施例中,处理电路包括响应于控制信号而供应所选择数据元素的多个实例至多个数据操作电路的数据元素操控电路,其中,每个数据操作电路响应于控制信号而针对第一源寄存器和第二源寄存器中的相应的数据群组执行数据处理操作。
在可自由指定数据处理指令所使用的源寄存器的同时,且本技术不强加限制于源寄存器中的数据值必须配合的格式,本技术因而鉴别出:可通过使源寄存器的内容事先采用特定格式来增强数据处理指令的执行。据此,在一些实施例中,解码器电路响应于数据预备指令而生成其他控制信号,数据预备指令指定存储器位置和目标寄存器,并且其中,处理电路响应于其他控制信号而从存储器位置取回具有预先定义尺寸的受试数据群组项目,并且通过该受试数据群组项目的复制来填满目标寄存器。换句话说,本技术提供另一指令,数据预备指令,布置以取回指定的受试数据群组项目且跨目标寄存器的宽度复制该受试数据群组项目。目标寄存器可为第一源寄存器。因此,可通过数据预备指令事先设定第一源寄存器的内容,使得在后续数据处理指令执行之前,已经将第一源寄存器的数据群组中通过索引标识的选择的数据元素复制于跨第一源寄存器的数据群组的位置处。
正整数倍数,定义了第一源寄存器和第二源寄存器中的每一者与数据群组的预先定义尺寸之间的尺寸比例(至少为预先定义尺寸的两倍),可多样地定义且保持于数据处理装置中,但在一些实施例中,寄存器存储电路包括控制寄存器以存储正整数倍数的指示。
进一步地,本技术提供专用的控制指令,可提供该指令以允许此正整数倍数的修改,且在一些实施例中,解码器电路响应于控制指令而将正整数倍数的指示修改上至用于该数据处理装置的预先定义最大值。
可以多种方式使用数据处理操作的结果,但在一些实施例中,数据处理指令进一步在多个寄存器中指定结果寄存器,且处理电路进一步响应于控制信号而将数据处理操作的结果应用至结果寄存器。处理电路可响应于控制信号而存储数据处理操作的结果于结果寄存器中。替代地,处理电路可响应于控制信号而将数据处理操作的结果应用至第二源寄存器。换句话说,第二源寄存器可提供累加寄存器。
数据处理操作仅可将第一源寄存器和第二源寄存器的内容(以及实时索引值)采用为该操作的操作数,但不限于这些操作数,在一些实施例中,数据处理指令进一步指定多个寄存器中的至少一个其他源寄存器,其中处理电路响应于控制信号而进一步限定该至少一个其他源寄存器中的每个数据群组执行数据处理操作,以生成相应的结果数据群组,从而形成数据处理操作的结果,且其中,针对每个数据群组的数据处理操作的操作数进一步包括该至少一个其他源寄存器的数据群组中的每个数据元素。
此其他源寄存器可扮演数据处理操作中的多种角色。在一些实施例中,处理电路响应于控制信号而累加数据处理操作的结果与该至少一个其他源寄存器中的先前内容。
数据处理操作可为算数操作,例如该数据处理操作可为乘法操作。数据处理操作可为点积操作,包括:从第一源寄存器和第二源寄存器中的每一者提取至少第一数据元素和第二数据元素;执行将至少第一数据元素对和第二数据元素对相乘的乘法操作;并且将这些乘法操作的结果加总。
在一些实施例中,乘法操作包括第一数据元素对、第二数据元素对、第三数据元素对和第四数据元素对的相乘。
在一些实施例中,数据处理指令进一步指定多个寄存器中的一累加寄存器,且该数据处理操作为点积及累加操作,进一步包括:从该累加寄存器加载累加器值;将乘法操作的结果与该累加器值加总;并且存储加总的结果至累加寄存器。
在一些实施例中,数据处理操作为乘法累加(multiply-accumulate)操作。
在一些实施例中,第一源寄存器和第二源寄存器中的每个数据群组中的数据元素为表示复数(complex number)的一对数据值,且数据处理操作为复数的乘法累加。换句话说,“复数对”(由两个单独数据值表示)可视为本技术的数据元素,使得所描述的向量逐元素操作亦可应用至复数。因此亦可提供专用对应指令以便标识欲经受作用于复数值的数据处理操作的复数元素(例如,复数的乘法累加)。
在一些实施例中,数据处理指令进一步指定旋转参数,其中,处理电路响应于旋转参数而使用经受数据处理操作的数据值以及这些数据值的正负号的选择的排序来执行复数的乘法累加。此导致对复数操作的多样的弹性,可借助于数据处理指令来执行这些操作,例如允许提供受试复数对数据值而无正负号,但允许针对这些复数对数据值的正负号的每个旋转排序直接被程序员取得。
在一些实施例中,数据处理操作为逻辑操作。
本文描述的至少一个示例实施例提供一种数据处理方法,包括:解码数据处理指令以生成控制信号,该数据处理指令在多个寄存器中指定:第一源寄存器、第二源寄存器、以及索引,其中第一源寄存器和第二源寄存器中的每一者具有尺寸,该尺寸是数据群组的预先定义尺寸的至少两倍的正整数倍数,并且每个数据群组包括多个数据元素;并且响应于这些控制信号,针对第一源寄存器和第二源寄存器中的每个数据群组执行数据处理操作,以生成相应的结果数据群组,从而形成数据处理操作的结果,其中,针对每个数据群组的数据处理操作的操作数为在第一源寄存器的数据群组中通过索引来标识的选择的数据元素和第二源寄存器的数据群组中的每个数据元素。
本文描述的至少一个示例实施例提供一种计算机可读存储介质,以一非暂态方式存储于程序中,包括至少一个数据处理指令,在通过数据处理装置执行时,引发:响应于数据处理指令而生成控制信号,数据处理指令在多个寄存器中指定:第一源寄存器、第二源寄存器、以及索引,其中第一源寄存器和第二源寄存器中的每一者具有尺寸,该尺寸是数据群组的预先定义尺寸的至少两倍的正整数倍数,并且每个数据群组包括多个数据元素;并且响应于这些控制信号,针对第一源寄存器和第二源寄存器中的每个数据群组执行数据处理操作,以生成相应的结果数据群组,从而形成数据处理操作的结果,其中,针对每个数据群组的数据处理操作的操作数为在第一源寄存器的数据群组中通过索引来标识的选择的数据元素及第二源寄存器的数据群组中的每个数据元素。
本文描述的至少一个示例实施例提供一种数据处理装置,包括:用于在多个寄存器中存储数据的装置;用于解码数据处理指令以生成控制信号的装置,该数据处理指令在用于存储数据的该装置中指定:第一源寄存器、第二源寄存器、以及索引,其中第一源寄存器和第二源寄存器中的每一者具有尺寸,该尺寸是数据群组的预先定义尺寸的至少两倍的正整数倍数,并且每个数据群组包括多个数据元素;以及用于响应于该控制信号而针对第一源寄存器和第二源寄存器中的每个数据群组执行数据处理操作的装置,以生成相应的结果数据群组,从而形成数据处理操作的结果,其中,针对每个数据群组的数据处理操作的操作数为在第一源寄存器的数据群组中通过索引来标识的选择的数据元素和第二源寄存器的数据群组中的每个数据元素。
本文描述的至少一个示例实施例提供一种虚拟机,由在数据处理装置上执行计算机程序来提供该虚拟机,该虚拟机提供对应于一个上述数据处理装置的指令执行环境。
现在参考附图来描述一些特定实施例。
图1示意地图示了数据处理装置,可运用本技术的多种示例。数据处理装置包括处理电路12,处理电路12响应于处理电路12执行的一系列指令在数据项上执行数据处理操作。从存储器14取回这些指令(数据处理装置访问存储器14),以本领域普通技术人员所孰悉的方式,针对此目的提供提取电路16。提取电路16所取回的进一步指令被传送至解码电路18,解码电路18生成控制信号,这些控制信号被布置为控制配置的各个方面和处理电路12的操作。亦展示了一组寄存器20和加载/存储单元22。本领域普通技术人员熟悉图1表示的一般配置,且仅针对简短目的兹免除图1的进一步细节描述。在图1中所图示的实施例中,寄存器20可包括针对正整数倍数24及数据群组25尺寸的其中一者或两者的存储,参考一些特定实施例而在下方更详细描述其使用。借助于加载/存储单元22,这些指令的执行中处理电路12所需要的数据和这些数据处理指令结果所生成的数据值被写入存储器14并从存储器14读取。亦注意一般而言,图1中的存储器14可被视为计算机可读存储介质的示例,本技术的指令可存储于其上,典型为处理电路接着执行的预先定义的一系列指令的一部分(“程序”)。然而,处理电路可从多种不同来源(例如在RAM中、在ROM中)经由网络接口等来访问该程序。本公开描述处理电路12可执行的多种新颖指令,且所附附图提供这些指令的本质的进一步说明、数据处理电路中的变体,以便支持这些指令的执行等。
图2示意地图示了数据预备指令32的使用。数据预备指令32包括运算码部分34(将运算码部分34定义为数据预备指令)、寄存器区分符36、以及存储器位置区分符38。由此实施例的数据处理装置来执行此指令,引发数据群组40的标识,数据群组40存储于存储器30中(由指定存储器位置参照,例如延伸多于一个地址,取决于所定义的数据群组尺寸)且包括(在此图示的实施例中)两个数据元素b0和b1(在附图中标为42和44)。进一步地,该指令的执行引发该数据群组40被拷贝入指定的寄存器且更被跨该寄存器的宽度复制,如图2中所展示的重复数据群组46、48、50和52,每一者皆由数据元素b0和b1构成。
图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的示例不限于任何特定数据群组宽度或复制倍数。然而,为了论述在当代情境中有用的仅仅一个示例,可对128位的宽度进行复制。在由UK的Limited of Cambridge所提供的可扩展性向量延伸(Scalable Vector Extensions,SVE)的情境中,此宽度对应至SVE向量粒子(granule)尺寸。在由/>Limited亦提供的ASMID指令的情境中,此宽度对应至ASIMD寄存器的尺寸。据此,本技术实现加载与复制以下群组类型:两个64位数据元素、四个32位数据元素、八个16位数据元素、或十六个8位数据元素。
图4A示意地图示了示例数据处理指令,且图4B展示一个实施例中执行该数据处理指令的实现。此数据处理指令包括运算码102、第一寄存器区分符104、第二寄存器区分符106、索引区分符108、以及作为可选变体的结果寄存器区分符110。图4B图示了该指令的执行引发寄存器A和寄存器B中的数据群组被访问,其中寄存器A中的每个数据群组中的所有数据元素(亦即,此示例中的第一数据群组112中的数据元素a0和a1及第二数据群组114中的数据元素a2和a3)被访问,同时寄存器B中在每个数据群组116和118中仅访问选择的数据元素(亦即,数据元素b1)。因此,访问的这些数据元素被传送至处理电路的操作电路,在图4B中由操作单元120、122、124和126表示,相关于从寄存器B取得的数据元素和从寄存器A取得的数据群组来应用数据处理操作。如上述,指令100可指定结果寄存器(借助标识符110)且这些操作的结果被写入结果寄存器128的相应数据元素。事实上,在一些实施例中,结果寄存器128和寄存器A可为一个且相同的寄存器,允许例如执行相关于该寄存器的内容的乘法累加操作(如示意地借助虚线箭头展示于图4中)。亦注意图4B中所展示的寄存器意图图示为可能(在两侧上)延伸超出示例指令所访问的部分。此对应至以下事实:在一些实现中(例如上述可扩展性向量延伸(SVE)),可不指定向量尺寸。例如,将图4B视为描绘针对在SVE示例中如两个64位的数据元素(b0和b1)的指令操作,则用于目的地的向量尺寸可为自128位上至2048位的任何尺寸(增量为128位)。
应理解在图4B中所展示的示例给予从寄存器B的内容使用选择(重复)的数据元素的特定示例的同时,一般而言显然提供多目的、弹性数据处理装置更可取,而具有将寄存器B中的任何数据元素使用为任何操作单元120至126的输入的能力。图5A和图5B示意地图示两个方式,其中可达到上述需求。图5A展示一组存储部件130、132、134和136,可例如在寄存器中存储相应数据元素,连接至一组操作单元140、142、144和146(可例如为熔接的乘加单元)。在图5A中展示存储单元130至136及功能单元140至146之间的连接为直接的及经由复用器148中介的。据此,此配置提供任何单独存储单元130至136的内容可提供至任何功能单元140至146作为第一输入至每个相应功能单元,且存储单元130至136的内容可相应地提供作为功能单元140至146的第二输入。由功能单元140至146所执行的处理结果被传输至存储单元150至156,可例如在寄存器中存储相应数据元素。通过图示的控制信号来控制复用器148和每个功能单元140至146,以便允许上述弹性的输入选择。
图5B示意地图示图5A的替代配置,其中每一存储单元160、162、164和166直接连接至每个功能单元170、172、174和176,每一者由相应的控制信号控制,且其结果被传送至相应的存储单元180、182、184和186。图5B所采用的方法避免了相关联于使用图5B示例的复用器148所需的延迟,但付出更复杂绕线所需的代价。因此,图5A和图5B的示例皆图示:在寻求实现完全弹性和可配置的一组输入存储单元、操作单元、以及输出存储单元时复杂度可上升,特别是当相关的数据元素的数量成长时。例如,采用图5A的示例且将输入存储单元、操作单元、以及输出存储单元的数量加倍至每一者八个,将导致针对八倍输入复用器的需求。另一方面,采用图5B的方法的该八倍大实现将需要从每个输入存储单元至每个操作单元的八个路径,亦即,共64个路径,以及每一操作单元需要能够接收八个不同输入并在该八个输入间选择。因此,应理解本技术的实施例所采用的方法跨寄存器宽度重新使用数据部分(例如,数据群组)而实现将限制施加于输入到所需控制单元的复用度和复杂度。此外,应注意在上述SVE/ASIMD情境中,可预期图4A的群组的向量逐元素指令可实现为单个微操作,而无须相较于等效正常向量操作的额外延迟,因为选择并复制保存于SVE向量粒子内且ASIMD已具有在128位内进行此操作的机制(例如,使用“FMLA(逐元素)”指令)。因此,可预期图4A中所展示的指令比正常向量操作之后的分开复制指令(DUP)序列更有效率。
图6A和图6B示意地图示参考图4A和图4B所论述的示例的数据处理指令的两个进一步示例。在图6A的示例中,指令200包括运算码202、第一寄存器区分符204、第二寄存器区分符206、中间索引值208、以及结果寄存器区分符210。图6A的下方部分示意地图示了此指令200的执行,其中选择了寄存器B的重复子部分(数据群组)内所指定的数据元素(索引1),且此数据元素被乘上寄存器A的相应数据群组所表示的向量,以生成相应的结果数据群组以填充结果寄存器的内容。在图6A中,相应的数据元素与数据群组之间所执行的操作由一般操作符号来展示,指示尽管上方示例给定此符号为乘法,其他操作为可能的且被预计到。
本技术不限于该数据处理指令仅指定一个向量,且图6B展示了示例,在该示例中,提供了包括运算码222、第一寄存器区分符224、第二寄存器区分符226、第三寄存器区分符228、以及索引区分符230的数据处理指令220。图6B的下方部分以相似于图6A中所展示方式来展示第一寄存器(B)中选择的数据元素(b1)如何与从寄存器A和C取得的数据群组(向量)组合和如何生成结果值。仅为了图示变体的目的,不在指令220中指定图6B的示例中的结果寄存器,但为此目的暂时使用默认的(预先决定的)结果寄存器。此外,在再次借助一般运算符符号来在图6B中展示部件组合的同时,应再次理解此操作可采用多种形式,取决于所执行的特定指令,同时此可确实为乘法操作,亦可为任何其他类型的算术操作(加法、减法等)或亦可为逻辑操作(ADD、XOR等)。
图7A示意地图示了另一示例数据处理指令,且图7B展示一个实施例中执行该数据处理指令的实现。提供该数据处理指令以支持针对复数的向量逐元素操作,且此处称为熔接复数乘法累加(FCMLA)指令。如图7A中所展示,示例的FCMLA指令220包括运算码222、旋转区分符242、第一寄存器(A)区分符224、第二寄存器(B)区分符226、索引区分符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的复数对和来自寄存器B的数据群组由索引230所标识的选择的复数对)被传送至复数熔接乘法累加(CFMA)单元234、236、238、240,其中来自寄存器A的每一复数对相应地形成至每个CFMA单元的输入,同时来自寄存器B中的一个数据群组的选择的复数对形成另一输入至CFMA单元234和236且来自寄存器B中的下一数据群组的其他选择的复数对形成另一输入至CFMA单元238和240。复数熔接乘法累加操作的相应结果累加如同指定的累加寄存器中的相应复数对,而依序每一者形成第三输入至每个相应CFMA单元。旋转参数242(可选地在指令中指定)为2位控制值,改变操作如下(仅展示第一对,其中(c1,c0)为操作前的累加器值):
图8展示根据一个实施例的方法所采用的一系列步骤。流程始于步骤250,其中将数据加载(预备)指令解码且在步骤260生成对应控制信号。接着,控制信号在步骤270引发指定的数据群组从存储器的指令指定位置加载(见例如图2和图3的此类示例)且具有控制寄存器指定尺寸。接着,控制信号进一步在步骤280引发跨指定目标寄存器(在数据加载(预备)指令中指定)的向量宽度复制加载的数据群组。接着,完成数据加载指令的执行。流程进行至步骤290,其中将向量逐元素数据处理指令解码。接着,在步骤300生成对应控制信号,且后续在步骤310接着执行该指令中指定的第一寄存器中的每个数据群组中的经索引元素及该指令中指定的第二寄存器的每个数据群组中的每个数据元素之间的向量逐元素指令所指定的操作。
图9A示意地图示根据本技术的不同数据处理指令的执行。图9B展示该指令的两个示例,第一320包括运算码322、第一寄存器区分符324、第二寄存器区分符326、以及(可选地)输出寄存器区分符328。展示于图9B中的第二示例数据处理指令330包括运算码332、输出寄存器区分符334、以及累加器寄存器区分符336。参考图9A说明这些示例。由数据处理指令所指定的第一和第二源寄存器展示于图9A顶部,每一者被子分割成数据元素部分,经群组成通道(lanes)。响应于数据处理指令,数据处理装置(亦即,处于由解码器电路所生成控制信号的控制下的处理电路)从第一源寄存器和第二源寄存器中的每一者取回一组数据元素。在图9A中所展示的示例中,从第一和第二源寄存器的每一信道取回一组四个数据元素。这些数据元素在操作单元340、342、344和346汇集配对,被布置为执行乘法操作。这些乘法操作的结果汇集于加总单元348且最终因而生成的结果值被写入输出寄存器的对应信道。换句话说,实现了“点积”操作。图9A中信道的标示图示了以下事实:四个乘法单元340至346和加总单元348仅表示数据处理装置处理电路中所提供的一组这样的单元,且对应地重复这些单元以匹配数据处理装置可针对每一寄存器掌控的每个通道。每一寄存器中的信道数量意图非明确地图示于图9A中,而对应于以下事实:可自由定义通道的数量,取决于数据元素的相对宽度、每个通道中的数据元素的数量、以及可取得的寄存器宽度。因此,可见该指令的行为相似于累加器宽度的相同宽度的操作(例如,在32位宽的信道中的8位值(如正整数)的示例中,该指令的行为相似于32位正整数的操作)。然而,每个通道内,替代了执行32x32乘法,考虑以四个分开的8位值来建立32位来源信道,且跨这两个“最小向量”执行点积操作。接着将结果从累加器值累加进入对应的32位信道。应理解附图仅明确描绘单个32位信道内的操作。以128位的向量长度为例,指令有效地执行32个操作(16个乘法和16个加法),而比可比较的当代指令密集3至4倍。若实现成架构而允许更长的向量,例如UK的Limited of Cambridge所提供的可扩展性向量延伸(SVE),这些更长的向量据此增加有效操作计数。进一步应理解:在展示32位信道宽度的特定示例的同时,许多不同宽度组合(输入和输出两者)为可能的,例如,16位x16位->64位或16位x16位->32位。亦提出“逐元素”形式(如针对操作数的其中一者复制单一32位信道)。图9A中接合输出寄存器至第二寄存器的虚线箭头示意地表示以下事实:第二寄存器事实上可为输出寄存器,而允许执行相关本文寄存器的内容的累加操作。回到图9B的考虑,注意到此处图示了两个分开的指令。一般而言,第一图示指令可引发实现图9A中所图示的所有操作,但亦提供以下实施例:其中图9B中的第一图示指令仅引发实现乘法和加总操作,且可通过第二图示指令来实现采用输出寄存器中的结果且应用该结果至累加器寄存器的后续累加操作(第二图示指令特别以此工作为目的)。
图10示意地图示图9B中所展示的数据处理指令的执行的实施例中的一些变体。此处,仅为了清晰图示,将两个源寄存器350和352中的每一者中所访问的数据元素的数量减低至两个。对此,仅提供两个乘法单元354和356(针对每个通道)和一个加总单元358(针对每个通道)。取决于执行的特定数据处理指令,“点积”操作的结果可写入指定输出寄存器360(若指定)或可替代地写入累加寄存器362(若如此指定)。在后者定义累加寄存器的情况中,可采用此累加寄存器的内容为至加总单元358的额外输入,使得可实现不断的累加。
图11示意地图示了更复杂的示例,其中两个128位的寄存器380和382为用于上述“点积”数据处理操作指令的其中一者的源寄存器。这些源寄存器380和382中的每一者被处置成四个独立信道(信道0至3),且取得这些通道的相应内容进入暂时存储缓冲器384至398,使得来自该两个源寄存器的相同信道的相应内容被带入相邻的存储缓冲器。在每一存储缓冲器内,内容数据元素(在此示例中,每一存储缓冲器中有四个数据元素)接着提供相应输入至针对每个通道提供的一组四个乘法单元400、402、404和406。接着馈送这些乘法单元的输出进入相应加总单元408、410、412和414,且这些加总单元中的每一者的输出被传送进入累加寄存器416的相应的对应信道。累加寄存器416的相应信道提供进入加总单元(累加器)408至414的第二类型的输入。图12展示图11的相同基本配置,且实际上相同的子部件以相同参考数字来表示而此处不再赘述。图12和图11之间的差异在于:在使用128位的寄存器380(源寄存器)的四个信道中的每一者的内容的同时,仅使用第二128位的源寄存器382的第一信道内容,且此内容被复制至暂时存储单元386、390、394和398中的每一者。此信道由该指令指定,在此示例中,该信道被选择为(唯一)通道以提供来自源寄存器382的内容。应理解并不存在与此特定信道(信道0)的显著关联,选择此特定信道以用本文示例图示,且一样可指定源寄存器382的任何其他通道。通过指令中索引值的设定来执行选择的信道的规格,例如图4A示例指令中所展示。
图13展示图11和图12中所展示的示例上的进一步变体。此处再次重新使用相同子部件,给定相同参考数字,且为了简短不再赘述。图13中所展示相关于图11和图12的示例的差异在于:源寄存器380和382中的每一者的四个通道本身被处置成两个数据群组(本文亦称为“组集(chunks)”,在附图中标示为组集0和组集1)。此不会影响寄存器380的内容的掌控、寄存器380的四个信道的内容被传输至暂时存储单元384、388、392和396的方式,一如既往。然而,此处在数据群组上基于数据群组(基于“逐组集”)来执行图12的示例所导入的单一通道内容的提取与复制,使得寄存器382的信道0的内容被复制和传输至暂时存储缓冲器394和398,同时组集1中的通道2的内容被复制和传输进入暂时存储缓冲器386和390。注意可考虑将图13中所展示的操作作为图4B所更一般图示的特定示例,其中附图中由四个处理单元120至126所实现的“操作”本文包括所述的点积操作。再次,应理解并不存在与此图示的示例中所选择的特定信道的显著关联(信道2和0,作为每一组集的“第一”信道),这些信道由指令中的索引值的设定来指定,例如图4A示例指令中所展示。最终,注意图13中所图示的数据处理指令的执行可有效地处于数据预备指令的执行之前,如图2和图3中所展示以及上方论述,以便适于预备源寄存器的内容。
图14展示根据一个实施例的方法所采用的一系列步骤,这些步骤为在执行数据处理指令时执行如上方所论述参考图9A至图13的点积操作。流程始于步骤430,其中将指令解码且在步骤440生成对应控制信号。接着,在步骤450,基于逐信道从该指令中所指定的第一源寄存器和第二源寄存器提取多个数据元素,在步骤460,将来自第一和第二源寄存器的相应数据元素对在每个通道中相乘,以便执行点积操作的第一部分。接着,在步骤470,将相应乘法器操作的结果相加(再次,基于逐通道)且加(在此示例中)至累加器值,该累加器值已从该指令中亦指定的输入累加器寄存器取回。
图15A示意地图示一些实施例所提供的数据处理指令的执行。图15B展示对应的示例指令。该示例指令500包括运算码502、第一源寄存器区分符504、第二源寄存器区分符506、以及一组累加寄存器区分符508。在图15A的示例中实现了第一和第二源寄存器510和512(展示于该附图顶部),以响应于数据处理指令的执行而使数据元素从这些寄存器中被提取。从第一源寄存器510单独地提取所有(四个)数据元素,同时将构成第二源寄存器512的全部内容的四个数据元素提取为区块。第二源寄存器512的内容被传送至四个操作单元中的每一者,亦即熔接乘加(FMA)单元514、516、518和520。从第一源寄存器510提取的四个数据元素中的每一者被传送至FMA单元514至520中相应的一者。由相应控制信号来控制FMA单元514和520中的每一者,如所图示。据此,图15A的示例中的数据处理指令的执行引发数据处理电路(由四个FMA单元来表示)来同时执行四个向量逐元素乘法/累加操作。应注意本技术不限于四个重数,但此已知为针对加载的好的匹配:典型地在该当代处理装置中可得的计算比例。FMA单元的输出应用至指令中所指定的累加寄存器组的相应寄存器(见图15B中的项目508)。此外,该四个累加寄存器522、524、526和528的内容形成对每一FMA单元514至520中的每一者的另一输入,使得在这些寄存器中的每一者的内容上实现累加。
图16展示图15A的示例的示例可视化,表示简单矩阵乘法示例,其中受试矩阵A与受试矩阵B相乘以生成结果矩阵C。在针对此的预备中,矩阵A的一行(阴影)被加载寄存器v0且矩阵B的一列(阴影)被加载寄存器v2。用于结果矩阵C的累加器被存储于寄存器v4至v7。注意尽管将从矩阵A加载的值描绘为一行,该矩阵明显可转置和/或交错,使得可执行来自每一来源数组的连续向量加载。注意在此情境中,矩阵乘法为O(n3)操作,因此预备矩阵数据以用于处理的辅助工作为O(n2)操作,因此对足够大的n而言为微不足道的负担。对应至所展示示例的指令可表示为FMA4 v4至v7、v2、v0[0-3]。此处FMA4表示此指令的标示(或等效为运算码),同时v4至v7为累加寄存器组,v2为全部内容所采自的源寄存器,同时v0为一组数据元素(索引为0至3)所采自的源寄存器。接着,此指令的执行导致四个操作:
v4+=v2*v0[0],
v5+=v2*v0[1],
v6+=v2*v0[2],以及
v7+=v2*v0[3],
图17表示图15A中所展示的示例的更简单版本,其中在此示例中,仅两个数据元素是从第一和第二源寄存器540和542中的每一者获得的。从寄存器542提取的两个数据元素被传送至FMA单元544和546中的每一者,同时来自寄存器540的第一数据元素被传送至FMA单元544且第二数据元素被传送至FMA单元546。累加寄存器548和550的内容提供至相应FMA单元中的每一者的进一步输入,且累加结果应用至每个相应累加寄存器。相反地,图18图示了示例,在该示例中,从源寄存器中的每一者提取更多数据元素,使用从源寄存器560和562中的每一者所提取的那些数据元素(在此示例中为八个)。将提供至FMA单元564至578中的每一者的寄存器562的全部内容以及来自寄存器560的选择的相应数据元素提供为另一输入。乘加操作的结果累加于相应累加寄存器580至594中。
图19展示给出在一个示例中执行的一些特定乘法操作的更多细节的示例。此处,两个源寄存器v0和v2中的每一者被处置成两个分开的数据群组。寄存器v0的两个数据群组亦表示寄存器跨选择的数据元素所复制的部分,在图19的示例中,此为每一部分的“第一”数据元素,亦即,相应地为元素[0]和[4]。可借助索引在指令中指定选择的数据元素。因此,在图19中所展示的数据操作中的第一步骤中,将寄存器v0的该两个数据群组的数据元素复制跨每一部分的宽度,如所展示。此后,此提供至四个乘法器600、602、604和606的输入,同时由寄存器v2的内容来提供另一输入。接着,执行v2的相应数据元素与v0的相应数据元素的乘法,且将结果应用至目标寄存器v4至v7,其中通过针对每个累加寄存器的每个数据群组所标示的特定计算,维持子分割成两个数据群组而进入该四个累加寄存器,如所展示。注意图19中所图示的数据处理指令的执行可有用地处于数据预备指令的执行之前,如图2和图3中所展示以及上方论述,以便适于预备源寄存器的内容。
图20展示示例,在该示例中,将两个源寄存器620和622的内容处置为包含两个独立信道(信道0和信道1)中的数据元素。在每个通道内,定义出两个子部分且该内容的此“通道(laning)”在计算期间被维持,亦即,经由FMA单元624、626、628和630,最终进入累加寄存器632和634。
图21展示根据一个实施例的方法所采用的在处理数据处理指令时的一系列步骤,如相关于图15A至图20的示例所述。流程始于步骤650,其中将数据处理指令解码且在步骤652生成对应控制信号。接着,在步骤654,从该数据处理指令中所指定的第一源寄存器提取N个数据元素,同时在步骤656,将N个数据元素乘上该数据处理指令中所指定的第二源寄存器的内容。在步骤658,接着将这些乘法操作的N个结果值应用至该数据处理指令中所指定的N个相应累加寄存器的内容。应理解:按照如相关于图21所述的前述指令执行和等效的如相关于图14所述的指令执行,可有用的处于数据预备指令的执行之前,如图2和图3中所展示和上方论述,以便适于预备源寄存器的内容。
图22图示可使用的虚拟机实现。在上述实施例一般就用于操作支持有关技术的特定处理硬件的装置和方法来实现本技术的同时,亦可能提供所谓的硬件设备的虚拟机实现。这些虚拟机实现运行于主机处理器730上以支持虚拟机程序710,主机处理器730通常运行主机操作系统720。此可需要提供更强效的处理器以便支持以合理速度执行的虚拟机实现,但在某些情况下这样的方法可为有理由的,例如在想要运行原产于另一处理器的程序代码以用于兼容性或重新使用的原因时。虚拟机程序710提供应用程序编程接口至应用程序700,与真实硬件所提供的应用程序编程接口相同(该真实硬件为虚拟机程序710所模拟的设备)。因此,可在应用程序700内使用虚拟机程序710执行包含上方论述的处理器状态检查指令的一个或更多个示例的程序指令,以对它们与虚拟机硬件的交互进行模拟。
综上所述,提供了一种数据处理装置、一种操作数据处理装置的方法、一种非暂态计算机可读存储介质、以及一种指令。该指令指定第一源寄存器、第二源寄存器、以及索引。响应于该指令而生成控制信号,引发处理电路针对第一源寄存器和第二源寄存器中的每个数据群组执行数据处理操作,以生成相应的结果数据群组,从而形成数据处理操作的结果。第一源寄存器和第二源寄存器中的每一者具有尺寸,该尺寸是数据群组的预先定义尺寸的至少两倍的正整数倍数,并且每个数据群组包括多个数据元素。针对每个数据群组的数据处理操作的操作数为在第一源寄存器的数据群组中通过索引来标识的选择的数据元素和第二源寄存器的数据群组中的每个数据元素。用于向量逐元素操作的技术,在寄存器宽度成长时为易扩展的。
在本申请中,词语“被配置为……”或“被布置为”用于表示装置的元素具有能够进行所定义操作的配置。在此情境中,“配置”表示硬件或软件的互连的布置或方式。例如,装置可具有提供所定义的操作的专用硬件,或处理器或其他处理设备可被编程为执行该功能。“被配置为”或“被布置为”不暗示需要以任何方式改变装置元素以便提供所定义的操作。
尽管已在本文中参考所附附图描述了本发明的说明性实施例,应理解,本发明不限于这些精确实施例,且本领域技术人员可在其中实现各种变化、增添和修改而不偏离由所附权利要求书定义的本发明的范围与精神。例如,从属权利要求的特征可与独立权利要求的特征进行各种组合,而不脱离本发明的范围。

Claims (24)

1.一种数据处理装置,包括:
寄存器存储电路,所述寄存器存储电路具有多个寄存器;
解码器电路,所述解码器电路响应于数据处理指令而生成控制信号,所述数据处理指令在所述多个寄存器中指定:第一源寄存器、第二源寄存器、以及索引;
其中,所述第一源寄存器和所述第二源寄存器中的每一者具有尺寸,该尺寸是数据群组的预先定义尺寸的至少两倍的正整数倍数,并且每个数据群组包括多个数据元素;以及
处理电路,所述处理电路响应于所述控制信号而针对所述第一源寄存器和所述第二源寄存器中的每个所述数据群组执行数据处理操作,以生成相应的结果数据群组,从而形成所述数据处理操作的结果;
其中,针对每个所述数据群组的数据处理操作的操作数是在所述第一源寄存器的数据群组中通过所述索引来标识的选择的数据元素及所述第二源寄存器的数据群组中的每个数据元素,
其中,所述第一源寄存器的每个所述数据群组包括相同的多个数据元素。
2.如权利要求1所述的数据处理装置,其中,所述处理电路包括数据元素操控电路,所述数据元素操控电路响应于所述控制信号而将所述选择的数据元素的多个实例供应至多个数据操作电路,其中,每个数据操作电路响应于所述控制信号而针对所述第一源寄存器和所述第二源寄存器中的相应的数据群组执行所述数据处理操作。
3.如权利要求1或权利要求2所述的数据处理装置,其中,所述解码器电路响应于数据预备指令而生成其他控制信号,所述数据预备指令指定存储器位置和目标寄存器;
并且其中,所述处理电路响应于所述其他控制信号而从所述存储器位置取回具有所述预先定义尺寸的受试数据群组项目,并通过所述受试数据群组项目的复制来填满所述目标寄存器。
4.如权利要求3所述的数据处理装置,其中,所述目标寄存器为所述第一源寄存器。
5.如前述权利要求中任一项所述的数据处理装置,其中,所述寄存器存储电路包括控制寄存器,所述控制寄存器用以存储对所述正整数倍数的指示。
6.如权利要求5所述的数据处理装置,其中,所述解码器电路响应于控制指令而将对所述正整数倍数的指示修改为上至用于所述数据处理装置的预先定义最大值。
7.如前述权利要求中任一项所述的数据处理装置,其中,所述数据处理指令进一步指定所述多个寄存器中的结果寄存器;
并且所述处理电路进一步响应于所述控制信号而将所述数据处理操作的结果应用至所述结果寄存器。
8.如权利要求7所述的数据处理装置,其中,所述处理电路响应于所述控制信号而将所述数据处理操作的结果存储在所述结果寄存器中。
9.如权利要求1-6中任一项所述的数据处理装置,其中,所述处理电路响应于所述控制信号而将所述数据处理操作的结果应用至所述第二源寄存器。
10.如前述权利要求中任一项所述的数据处理装置,
其中,所述数据处理指令进一步指定所述多个寄存器中的至少一个其他源寄存器;
其中,所述处理电路响应于所述控制信号而进一步针对与所述至少一个其他源寄存器中的每个所述数据群组执行数据处理操作,以生成相应的结果数据群组,从而形成该数据处理操作的结果;并且
其中,针对每个所述数据群组的数据处理操作的操作数进一步包括所述至少一个其他源寄存器的数据群组中的每个数据元素。
11.如权利要求10所述的数据处理装置,其中,所述处理电路响应于所述控制信号而将数据处理操作的结果与所述至少一个其他源寄存器中的先前内容进行累加。
12.如权利要求1-11中任一项所述的数据处理装置,其中,所述数据处理操作为算数操作。
13.如权利要求12所述的数据处理装置,其中,所述数据处理操作为乘法操作。
14.如权利要求12所述的数据处理装置,在其从属于权利要求8时,其中,所述数据处理操作为点积操作,所述数据处理操作包括:
从所述第一源寄存器和所述第二源寄存器中的每一者提取至少第一数据元素和第二数据元素;
执行将至少第一数据元素对与第二数据元素对相乘的乘法操作;以及
将所述乘法操作的结果加总。
15.如权利要求14所述的数据处理装置,其中,所述乘法操作包括将第一数据元素对、第二数据元素对、第三数据元素对以及第四数据元素对一起相乘。
16.如权利要求14或权利要求15所述的数据处理装置,其中,所述数据处理指令进一步指定所述多个寄存器中的累加器寄存器,且所述数据处理操作为点积及累加操作,数据处理操作进一步包括:
从所述累加器寄存器加载累加器值;
将所述乘法操作的结果与所述累加器值加总;并且
存储该加总的结果至所述累加器寄存器。
17.如权利要求12所述的数据处理装置,在其从属于权利要求8时,其中,所述数据处理操作为乘法累加操作。
18.如权利要求17所述的数据处理装置,其中,所述第一源寄存器和所述第二源寄存器中的每个所述数据群组中的数据元素为表示复数的一对数据值,且所述数据处理操作为复数的乘法累加。
19.如权利要求18所述的数据处理装置,其中,所述数据处理指令进一步指定旋转参数,其中,所述处理电路响应于所述旋转参数而使用经受所述数据处理操作的数据值及这些数据值的正负号的选择的排序来执行复数的乘法累加。
20.如权利要求1-11中任一项所述的数据处理装置,其中,所述数据处理操作为逻辑操作。
21.一种数据处理方法,包括:
解码数据处理指令以生成控制信号,所述数据处理指令在多个寄存器中指定:第一源寄存器、第二源寄存器、以及索引;
其中,所述第一源寄存器和所述第二源寄存器中的每一者具有尺寸,该尺寸是数据群组的预先定义尺寸的至少两倍的正整数倍数,并且每个数据群组包括多个数据元素;并且
响应于所述控制信号,针对所述第一源寄存器和所述第二源寄存器中的每个所述数据群组执行数据处理操作,以生成相应的结果数据群组,从而形成该数据处理操作的结果;
其中,针对每个所述数据群组的数据处理操作的操作数为在所述第一源寄存器的数据群组中通过所述索引来标识的选择的数据元素及所述第二源寄存器的数据群组中的每个数据元素,
其中,所述第一源寄存器的每个所述数据群组包括相同的多个数据元素。
22.一种计算机可读存储介质,所述计算机可读存储介质以非暂态方式存储包括至少一个数据处理指令的程序,所述至少一个数据处理指令在由数据处理装置执行时,引发:
响应于所述数据处理指令,生成控制信号,所述数据处理指令在多个寄存器中指定:第一源寄存器、第二源寄存器、以及索引;
其中,所述第一源寄存器和所述第二源寄存器中的每一者具有尺寸,该尺寸是数据群组的预先定义尺寸的至少两倍的正整数倍数,并且每个数据群组包括多个数据元素;并且
响应于所述控制信号,针对所述第一源寄存器和所述第二源寄存器中的每个所述数据群组执行数据处理操作,以生成相应的结果数据群组,从而形成所述数据处理操作的结果;
其中,针对每个所述数据群组的数据处理操作的操作数为在所述第一源寄存器的数据群组中通过所述索引来标识的选择的数据元素及所述第二源寄存器的数据群组中的每个数据元素,
其中,所述第一源寄存器的每个所述数据群组包括相同的多个数据元素。
23.一种数据处理装置,包括:
用于在多个寄存器中存储数据的装置;
用于解码数据处理指令以生成控制信号的装置,所述数据处理指令在用于存储数据的装置中指定:第一源寄存器、第二源寄存器、以及索引;
其中,所述第一源寄存器和所述第二源寄存器中的每一者具有尺寸,该尺寸是数据群组的预先定义尺寸的至少两倍的正整数倍数,并且每个数据群组包括多个数据元素;以及
用于响应于所述控制信号而针对所述第一源寄存器和所述第二源寄存器中的每个所述数据群组执行数据处理操作的装置,以生成相应的结果数据群组,从而形成所述数据处理操作的结果;
其中,针对每个所述数据群组的数据处理操作的操作数为在所述第一源寄存器的数据群组中通过所述索引来标识的选择的数据元素及所述第二源寄存器的数据群组中的每个数据元素,
其中,所述第一源寄存器的每个所述数据群组包括相同的多个数据元素。
24.一种虚拟机,所述虚拟机由在数据处理装置上执行计算机程序来提供,所述虚拟机提供对应于权利要求1-20、或23中任一项所述的数据处理装置的指令执行环境。
CN201880012011.8A 2017-02-23 2018-02-02 数据处理装置中的向量逐元素操作 Active CN110312993B (zh)

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
CN110312993A CN110312993A (zh) 2019-10-08
CN110312993B true CN110312993B (zh) 2024-04-19

Family

ID=61188842

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880012011.8A Active CN110312993B (zh) 2017-02-23 2018-02-02 数据处理装置中的向量逐元素操作

Country Status (8)

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

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 (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104137059A (zh) * 2011-12-23 2014-11-05 英特尔公司 多寄存器分散指令

Family Cites Families (27)

* 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 データ処理システム
US7013321B2 (en) * 2001-11-21 2006-03-14 Sun Microsystems, Inc. Methods and apparatus for performing parallel integer multiply accumulate operations
GB2411974C (en) 2003-12-09 2009-09-23 Advanced Risc Mach Ltd Data shift operations
GB2409062C (en) * 2003-12-09 2007-12-11 Advanced Risc Mach Ltd Aliasing data processing registers
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
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
GB2409068A (en) * 2003-12-09 2005-06-15 Advanced Risc Mach Ltd Data element size control within parallel lanes of processing
US20080071851A1 (en) 2006-09-20 2008-03-20 Ronen Zohar Instruction and logic for performing a dot-product operation
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
PL3422178T3 (pl) 2011-04-01 2023-06-26 Intel Corporation Przyjazny dla wektorów format instrukcji i jego wykonanie
EP2584460A1 (en) * 2011-10-20 2013-04-24 ST-Ericsson SA Vector processing system comprising a replicating subsystem and method
US9424327B2 (en) * 2011-12-23 2016-08-23 Intel Corporation Instruction execution that broadcasts and masks data values at different levels of granularity
WO2013095607A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Instruction execution unit that broadcasts data values at different levels of granularity
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
EP3001306A1 (en) * 2014-09-25 2016-03-30 Intel Corporation Bit group interleave processors, methods, systems, and instructions
EP3001307B1 (en) * 2014-09-25 2019-11-13 Intel Corporation Bit shuffle processors, methods, systems, and instructions
US20160179523A1 (en) 2014-12-23 2016-06-23 Intel Corporation Apparatus and method for vector broadcast and xorand logical instruction
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
US11029949B2 (en) * 2015-10-08 2021-06-08 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit
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
US10509765B2 (en) * 2015-10-08 2019-12-17 Via Alliance Semiconductor Co., Ltd. Neural processing unit that selectively writes back to neural memory either activation function output or accumulator value
US10565494B2 (en) * 2016-12-31 2020-02-18 Via Alliance Semiconductor Co., Ltd. Neural network unit with segmentable array width rotator
KR102425668B1 (ko) * 2017-02-23 2022-07-28 에이알엠 리미티드 데이터 처리장치에서의 곱셈-누적
GB2560159B (en) * 2017-02-23 2019-12-25 Advanced Risc Mach Ltd Widening arithmetic in a data processing apparatus

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104137059A (zh) * 2011-12-23 2014-11-05 英特尔公司 多寄存器分散指令

Also Published As

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

Similar Documents

Publication Publication Date Title
CN110300957B (zh) 数据处理装置中的加宽算数
CN110312993B (zh) 数据处理装置中的向量逐元素操作
EP3586226B1 (en) Multiply-accumulation in a data processing apparatus
EP3655852B1 (en) Vector interleaving in a data processing apparatus
TWI773783B (zh) 用於基於暫存器的複數處理的設備、方法、積體電路、電腦程式及電腦可讀取儲存媒體
GR20170200089U (el) Πολλαπλασιασμος-συσσωρευση σε μια διαταξη επεξεργασιας δεδομενων
TW202305588A (zh) 用於向量組合指令之處理設備、方法、及電腦程式
GR20170200090U (el) Λειτουργιες στοιχειου κατα διανυσμα σε μια διαταξη επεξεργασιας δεδομενων

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant