CN117120974A - 电路和方法 - Google Patents
电路和方法 Download PDFInfo
- Publication number
- CN117120974A CN117120974A CN202280025418.0A CN202280025418A CN117120974A CN 117120974 A CN117120974 A CN 117120974A CN 202280025418 A CN202280025418 A CN 202280025418A CN 117120974 A CN117120974 A CN 117120974A
- Authority
- CN
- China
- Prior art keywords
- predicate
- circuit
- register
- processing
- registers
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 27
- 238000012545 processing Methods 0.000 claims abstract description 152
- 230000004044 response Effects 0.000 claims abstract description 20
- 239000013598 vector Substances 0.000 claims description 68
- 238000004590 computer program Methods 0.000 claims description 8
- 230000000644 propagated effect Effects 0.000 claims description 8
- 230000001902 propagating effect Effects 0.000 claims description 5
- 238000013507 mapping Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一种电路包括:一组物理寄存器;指令解码器电路,该指令解码器电路用于对处理指令进行解码,这些处理指令中的每条处理指令通过对一个或多个相应源架构寄存器中的一个或多个源数据项应用处理操作生成目的地架构寄存器中的输出多位数据项,该解码器电路被配置为检测处理指令是否定义了谓词合并操作,该谓词合并操作是将该目的地架构寄存器的主要内容的零个或更多个部分的集合作为该输出多位数据项的相应部分进行传播的处理操作,该部分的集合由谓词数据定义;寄存器分配电路,该寄存器分配电路用于将该组物理寄存器中的物理寄存器与该目的地架构寄存器和该一个或多个源架构寄存器相关联,并且当检测器电路检测到处理指令定义谓词合并操作时,该寄存器分配电路被配置为将另一物理寄存器与该处理指令相关联,以存储该目的地架构寄存器的这些主要内容的副本;谓词生成电路,该谓词生成电路生成在定义谓词合并操作的给定处理指令的执行中使用的该谓词数据;以及谓词检测器电路,该谓词检测器电路响应于由该谓词生成电路生成的该谓词数据的状态控制该另一物理寄存器与该给定处理指令的关联性。
Description
背景技术
本公开涉及电路和方法。
一些数据处理布置允许谓词处理操作,诸如所谓的谓词合并操作。该术语通常(但不是唯一地)适用于由数据处理器执行的矢量处理操作,并且涉及将目的地架构寄存器的主要内容的一组零个或多个部分或元素作为输出多位数据项的相应部分进行传播的操作,该组部分由所谓的谓词数据定义。
发明内容
在一个示例性布置中,提供了一种电路,该电路包括:
一组物理寄存器;
指令解码器电路,该指令解码器电路用于对处理指令进行解码,这些处理指令中的每条处理指令通过对一个或多个相应源架构寄存器中的一个或多个源数据项应用处理操作生成目的地架构寄存器中的输出多位数据项,该解码器电路被配置为检测处理指令是否定义了谓词合并操作,该谓词合并操作是将目的地架构寄存器的主要内容的零个或更多个部分的集合作为输出多位数据项的相应部分进行传播的处理操作,该部分的集合由谓词数据定义;
寄存器分配电路,该寄存器分配电路用于将一组物理寄存器中的物理寄存器与目的地架构寄存器和一个或多个源架构寄存器相关联,并且当检测器电路检测到处理指令定义谓词合并操作时,该寄存器分配电路被配置为将另一物理寄存器与处理指令相关联,以存储目的地架构寄存器的主要内容的副本;
谓词生成电路,该谓词生成电路生成在定义谓词合并操作的给定处理指令的执行中使用的谓词数据;以及
谓词检测器电路,该谓词检测器电路响应于由谓词生成电路生成的谓词数据的状态控制另一物理寄存器与给定处理指令的关联性。
在另一个示例性布置中,提供了一种方法,该方法包括:
对处理指令进行解码,这些处理指令中的每条处理指令通过对一个或多个相应源架构寄存器中的一个或多个源数据项应用处理操作生成目的地架构寄存器中的输出多位数据项,解码的步骤包含检测处理指令是否定义了谓词合并操作,该谓词合并操作是将目的地架构寄存器的主要内容的零个或更多个部分的集合作为输出多位数据项的相应部分进行传播的处理操作,该部分的集合由谓词数据定义;
将一组物理寄存器中的物理寄存器与目的地架构寄存器和一个或多个源架构寄存器相关联,并且当检测的步骤检测到处理指令定义谓词合并操作时,相关联的步骤被配置为将另一物理寄存器与处理指令相关联,以存储目的地架构寄存器的主要内容的副本;
生成在定义谓词合并操作的给定处理指令的执行中使用的谓词数据;以及
响应于由生成的步骤生成的谓词数据的状态控制另一物理寄存器与给定处理指令的关联性。
本技术的另外的相应方面和特征由所附权利要求限定。
附图说明
将参考如附图所示的本发明的实施方案,仅以举例的方式进一步描述本技术,其中:
图1示意性地示出了数据处理电路;
图2示意性地示出了谓词合并操作;
图3a和图3b示意性地示出了不同的矢量长度和元素大小;
图4示意性地示出了解码操作的各个方面;
图5示意性地示出了发布操作的各个方面;
图6示意性地示出了重命名列表;
图7a示意性地示出了发布操作的另外的方面;
图7b示意性地示出了另选的操作模式;
图8是示出方法的示意性流程图;以及
图9示意性地示出了模拟器示例。
具体实施方式
示例性处理电路
图1是示出处理电路的示例100的示意图。参考图1,2级高速缓存10与存储器系统(未示出)交接。1级指令高速缓存20提供处理指令的更本地化的高速缓存,并且1级数据高速缓存15提供要从存储器系统检索或存储到存储器系统的数据的更本地化的缓存。
提取电路30经由绘制的各种高速缓存从存储器系统提取程序指令并且将提取的程序指令提供给解码器电路40。解码器电路40解码提取的程序指令并且生成控制信号以控制处理单元70执行处理操作。
将解码的指令提供给维护一个或多个发布队列60的发布电路50,该一个或多个发布队列能够保持或定义等待发布到处理单元70的多个指令。作为其操作的一部分,发布/调度器电路将指令保持在发布队列中,直到至少执行指令所需的所有源操作数准备就绪的阶段,也就是说它们已经通过执行较早执行的指令而生成。用作源操作数的结果的可用性由处理单元70传送到发布/调度器电路50,例如通过示意性数据路径55。
处理单元70可以包括各种部件,为了图的清楚起见,图1中仅示出了三个部件,即处理矢量处理指令的矢量处理器72,处理标量处理指令的标量处理器74,以及与I级数据高速缓存15通信以检索源数据并存储由处理单元70生成的结果的加载/存储电路74。
响应于矢量处理器72或标量处理器74产生的结果,寄存器文件90将被写入购买回写电路80。可以读取该寄存器文件以为处理单元70提供源操作数。寄存器文件90包括一组物理矢量寄存器92和一组物理标量寄存器94。物理矢量寄存器具有矢量长度VL1。矢量长度VL1表示矢量处理器72提供的所谓处理通道的数量,每个处理通道对数据项矢量中的相应数据项应用处理操作。
架构和物理寄存器
寄存器文件90提供了所谓的物理寄存器。然而,由图1电路执行的程序代码指令指定从相关指令集架构指定的一组架构寄存器读取和写入。被称为“寄存器重命名”的过程将架构寄存器映射到物理寄存器,以便执行给定的程序代码指令。
将架构寄存器映射到物理寄存器可在例如解码器电路40执行的解码阶段进行或响应于该解码阶段进行。作为解码过程的一部分,解码器电路40检测特定解码指令定义了多少架构寄存器,并且响应于检测来分配对应数量的物理寄存器以供处理单元70在执行该指令时使用。指令本身排队等待由发布电路50发布。在指令被发布以供执行之前(以及禁止遵守发布之前),必须满足的条件中的一个条件是,所有映射的物理寄存器都必须是可用的,也就是说,当前没有在执行另一条指令时被使用。
因此,所讨论的装置提供了以下示例:执行电路70,该执行电路用于执行由指令解码器电路解码的处理指令;发布电路50,该发布电路用于向执行电路发布处理指令以供执行;其中发布电路被配置为根据与处理指令相关联的物理寄存器的可用性控制处理指令的发布。
因此,在示例性布置中,目的地架构寄存器和一个或多个源架构寄存器包含相应的架构矢量寄存器,这些架构矢量寄存器被配置为存储具有表示处理通道的数量的矢量长度的数据项矢量,每个通道将处理操作应用于数据项矢量的相应数据项;并且一组物理寄存器包含被配置为存储具有矢量长度的数据项矢量的一组物理矢量寄存器。
谓词处理操作
现在将描述所谓的谓词处理或“谓词”合并操作。该术语通常适用于由矢量处理器72执行的矢量处理操作,并且涉及将目的地架构寄存器的当前内容的一组零个或多个部分或元素作为输出多位数据项的相应部分进行传播的操作,该组部分由所谓的谓词数据定义。
使用谓词合并技术的操作类型的示例可见于使用由Arm有限公司提供的所谓的“可伸缩矢量扩展”(SVE)或SVE2架构的处理器指令集。具体示例如下:
ADD Z0.D,P0/M,Z1.D,Z2.D
这是加法运算示例,它将保持源操作数的架构寄存器Z1和Z2的活动元素相加,并将结果放入目的地寄存器Z0中。P0是指示操作数中的活动元素和非活动元素的谓词寄存器。P0后的后缀“M”指示任何非活动元素将被合并。也就是说,Z0中的任何非活动元素将保持其原始值(执行操作前的它们的主要值)。
需注意,谓词寄存器可以定义任意数量的或一组零个或更多个元素是活动的。谓词寄存器可以定义所有元素都是活动的,或者另外地定义所有元素都是非活动的。在这两种极端情况之间的任何活动元素的排列也是可能的。
还需注意,以上所示的加法运算仅是谓词合并操作的许多可能示例中的一个示例。
参考图2,示出了示例性谓词合并操作,其中一对输入或源操作数200由任意操作数210根据一组谓词230进行处理。在图2的示例中,使用了一种符号标记系统,其中以垂直有序的取向示出了各种操作数和谓词的相应元素(因此每个源操作数具有八个沿垂直方向有序排列的元素),并且在八个谓词位置的有序集中的特定位置处的为0的谓词值表示该矢量位置处的非活动通道。为1的谓词值表示活动通道。
处理谓词合并操作的一种方法如下。生成目的地矢量寄存器240的主要(操作前)内容的副本250。对百10的处理操作应用于源操作数,以为每个处理通道生成中间结果220,也就是说,中间结果独立于主要谓词230。然后根据谓词230将副本250和中间结果220写入最终目的地寄存器260。在图2中,对角线阴影用于指示来自中间结果220的写入目的地寄存器260的值。这些值对应于谓词230指示通道是活动的矢量位置处的值。写入目的地寄存器260的其他值(在被谓词指示为不活动的矢量位置处)来自目的地矢量寄存器的操作前内容的副本250。
因此,为了执行上文讨论的示例性谓词合并操作,必须建立以下四个寄存器映射:
Z0、Z1、Z2、[映射到Z0的寄存器的主要内容的副本]
示例性布置认识到,需要映射四个物理寄存器以执行本质上仅具有两个源寄存器和一个目的地寄存器的谓词合并操作可潜在地给处理操作带来不必要的延迟,特别是在谓词230的主要状态指示将不会使用目的地寄存器的操作前内容的副本250的示例性情况下。换句话说,当谓词230指示所有元素或通道都是“活动的”时,将不会从目的地寄存器的操作前内容复制任何信息,而是由每个矢量位置将传播处理操作210的结果220。因此,在下文将要讨论的示例中,无需提供第四映射寄存器来保持目的地矢量寄存器的主要内容的副本。
因此,在图2的示例中,执行电路70被配置为通过以下步骤执行定义谓词合并操作的处理指令:使用另一物理寄存器存储目的地架构寄存器240的主要内容的副本250,根据一个或多个源数据项生成输出多位数据项的所有位220以供目的地架构寄存器存储,以及随后根据谓词数据将来自目的地架构寄存器的副本的零个或更多个位作为输出多位数据项的相应部分(如图所示的对角线阴影部分260)进行传播。在示例中,对于定义谓词合并操作的处理指令,每个谓词值(元素、位等)指示目的地架构寄存器的主要内容的相应部分是否将作为输出多位数据项的相应部分被传播。
然而,在物理寄存器响应于其进行映射的给定谓词合并指令的解码阶段,谓词230的状态(将适用于该给定谓词合并指令的执行)并不一定是已知的。
因此,在本技术的一些示例中,提供了附加物理寄存器的初始映射,但随后,响应于谓词230的实际状态,响应于检测到适用的谓词数据指示目的地架构寄存器的主要内容的任何部分都不会作为输出多位数据项的相应部分传播,可以去除(例如禁用、取消或以其他方式生效)另外的物理寄存器与定义谓词合并操作的给定处理指令的关联性。
换句话说,谓词合并操作所需的附加寄存器映射是在解码阶段分配或保留的(在解码阶段,实际谓词尚未建立),但一旦实际谓词已经建立,就可以在处理的后期阶段选择性地去除该附加寄存器。该措施可潜在地改进处理指令的吞吐量,因为(在附加寄存器映射被去除的情况下)等待发布的谓语合并指令不再需要等待该附加寄存器的可用性。特别地,在这些示例中,在以下讨论的寄存器分配电路被配置为响应于谓词检测器电路检测到由谓词生成电路针对给定处理指令生成的谓词数据等于预定值而去除另一物理寄存器与定义谓词合并操作的给定处理指令的关联性。例如,预定值可以是指示目的地架构寄存器的主要内容的零个部分将作为输出多位数据项的相应部分被传播的值(换句话说,所有“活动”谓词)。
谓词和矢量长度
在上文讨论的SVE和SVE2系统中,矢量长度可以自适应地变化,例如与每个矢量元素的大小(以位为单位)的变化结合。例如,物理矢量寄存器可以各自具有(例如)128位的大小。这可以与(例如)8的矢量长度一起使用,以提供16位的元素310(图3a)。如果矢量长度设置为(例如)4,则可以使用32位元素330(图3b)。
谓词寄存器可以被布置成为最大允许数量的矢量元素中的每个存储一个谓词位(表示活动的或不活动的),该最大允许数量是等于物理矢量寄存器的大小(以位为单位)除以每个矢量元素的最小允许大小的谓词位的数量。就本示意性讨论的目的而言,假设图3a表示最大允许矢量元素数量为8,在这种情况下,谓词寄存器300的每个位位置都包含适用于这些矢量元素310中的相应一个矢量元素的谓词值。
另一方面,在图3b中,相同的物理矢量寄存器被划分为更少、但更大的矢量元素330。在此,谓词寄存器仅需要存储较少的谓词值(在本示例中为4个值),因此在该示例中,谓词寄存器320内的另选位置用于存储谓词值,其余位置(如图3b中阴影所示)被忽略或无效。当然,这仅仅是谓词寄存器可如何与不同矢量长度结合使用的一个示例。
在图3a与图3b的示例布置之间进行选择至少可以由启用SVE或SVE2的处理器的一些示例在处理指令控制下执行。在每种情况下,或者在图3a和图3b中未具体示出的其他示例性情况下,术语“矢量长度”指的是以使用中的矢量元素或处理通道的数量为单位的主要矢量长度,并且假定每个此类处理通道具有相关联的谓词值。
在图3a和图3b的示例中的任一个中(或在如上所述的其他变化中),谓词数据定义了等于矢量长度的一些谓词值,即使这涉及到在谓词寄存器中具有未使用的元素。
然而,需要注意,本技术并不依赖于SVE或SVE2系统的可伸缩方面,而是适用于能够以所述方式使用谓词合并操作的任何系统。
解码、重命名和发布过程
图4示意性地示出了解码器电路40的一些方面,其中用于数百条指令的指令解码器生成供处理单元70执行的微码。检测器410检测执行该指令需要映射的物理寄存器的数量。在一些情况下,这等于由指令指定的架构寄存器的数量,但在谓词合并操作的情况下,这等于由指令指定的架构寄存器的数量加一。该信息将传递给寄存器预留电路420,该寄存器预留电路将填充将在以下讨论的所谓的重命名列表。
参考图5,解码器40生成的微码被传送到发布电路50,以排队等待发布。发布电路与重命名列表520通信,并且如上所讨论,接收来自处理单元70的信息,这些信息直接或间接地指示物理寄存器的可用性(例如,通过指示每个寄存器的可用性或通过指示还涉及到特定物理寄存器的映射的进行中指令的完成)。在重命名列表指定的执行该指令所需的所有物理寄存器可用之前,禁止(例如阻止)发布解码指令以供执行。
图6示意性地示出了重命名列表的示例,其中相应条目由水平行表示,每个条目提供了操作标识符、指令所使用的不同源寄存器和目的地寄存器(包括在谓词合并操作的情况下使用的另外的源寄存器)所需的映射的标识符、其他操作信息和有效标志。在此,有效标志可与重命名列表中的每个寄存器映射条目相关联。如果重命名列表中的特定寄存器映射(或如图所示的列)的有效标志被设置为“有效”,则需要该映射,并且在映射的寄存器可用之前不能进行发布。如果有效标志被设置为“无效”,则不需要该条目定义的映射。
现在将参考图7a描述进一步的操作。
发布电路50包括发布控制器710,该发布控制器用于与指令队列交接,并且将排队的指令提供给处理单元70以供执行,其中仅那些具有由重命名列表定义的所有寄存器映射的指令才有资格被发送。
发布电路还提供了谓词生成器700,该谓词生成器用于生成谓词数据,以用于排队的队列的执行。
状态检测器720检测由谓词生成器700生成的谓词数据的状态。回看图3a和图3b的示例,在谓词具有一些未使用值(如图3b中所示的阴影元素)的情况下,状态检测器720所进行的检测会忽略那些未使用的值或元素。
当状态检测器720检测到谓词数据指示“全部活动”时,使得显而易见的是不需要目的地寄存器的附加副本(操作前),状态检测器会向重命名列表指示不需要作为目的地寄存器副本的附加寄存器的映射,并且与该映射相关联的有效标志被抑制,或者换句话说,被设置为“无效”。这样做的效果是去除如上所讨论的映射,并且进而避免或去除了在发布对应指令以供执行之前需要特定的映射的寄存器可用的需求。
有序处理器和乱序处理器
这些技术适用于所谓的有序处理器和乱序处理器。然而,这些技术尤其适用于乱序处理器,在这种处理器中,指令执行可依赖于物理寄存器的可用性,使得提供一个或多个物理寄存器的潜在早期可用性可与改进性能有关。
在乱序处理器的情况下,出现本文所述技术可改进性能的情况的情况可能较少发生(或没有),但这些技术对于兼容性目的可能仍然有用,并且可以在不对处理性能产生负面影响的情况下实现这些技术。
进一步的变型
通常情况下,在发布之后,处理谓语合并指令的执行的处理电路会读取执行该指令所依赖的谓语寄存器。然而,一旦状态检测器720检测到“所有活动”谓词,原则上就不需要访问谓词寄存器,而是在执行的每个相关阶段,简单地生成具有“所有活动”元素的假谓词或代理谓词。例如,这可以在指令被发布时响应于与该指令相关联的标志或其他数据来执行。
图7b示出了这种布置的示例。在此,状态检测器720'(或其其他部分,例如发布电路和/或发布队列)向处理单元提供指示“所有活动”谓词的信号740。这提供了以下示例:其中谓词检测器电路被配置为将指示由谓词生成电路生成的谓词数据的状态的信号传送到执行电路。
当接收到提供该指示的该信号时,处理单元可以忽略由谓词生成器700实际生成的谓词,而是由代理谓词生成器750生成供矢量处理器使用的一组“全部活动”谓词,并且至少在执行相关指令需要这些谓词时及时将它们供应给矢量处理器。这提供了以下示例,其中执行(或处理)电路包含响应于指示谓词数据的状态的信号而生成替代谓词数据的电路(诸如代理谓词生成器750),替代谓词数据代替由谓词生成电路生成的谓词数据供执行电路使用。
如上所述,该布置具有以下优点中的一个或两个优点:(a)在矢量处理器70使用由谓词生成器700生成的谓词之前,不一定需要谓词寄存器文件来存储这些谓词;至少在一些情况下,该措施可潜在地改进物理寄存器的可用性;和/或(b)矢量处理器70不一定需要谓词读取操作来访问这些存储的谓词;该措施至少在一些情况下可以潜在地改进功耗和/或执行速度。
例如,为了潜在地改进操作的这些方面,信号740可包含少于由谓词生成器700生成的谓词的元素(该谓词生成器通常包含等于主要矢量长度的元素或谓词数量)。例如,信号740m可包含指示谓词为“全部活动”或“非全部活动”的单个元素。类似地,信号740可以以不需要耗时和功耗的寄存器读取操作的方式简单地锁存或以其他方式传输到代理谓词生成器750,而不是存储在寄存器文件中(正如谓词那样)然后需要寄存器文件读取操作来检索。
需注意,代理谓词寄存器可以根据主要矢量长度,在谓词数据的位置集320(图3b)中填充所有“活动”位置,也可以(例如,为简化具体实施)用“1”或其他“活动”指示填充所有此类位置320(无论对于主要矢量长度是有效还是无效),使得矢量处理器将忽略任何无效位置。
在本文讨论的示例中,仅当谓词是全部活动时,才会生成和供应信号740。这提供了以下示例,其中谓词检测器电路被配置为当由谓词生成电路生成的谓词数据等于预定值时,将指示由谓词生成电路生成的谓词数据的状态的信号传送到执行电路,预定值指示目的地架构寄存器的主要内容的零个部分将作为输出多位数据项的相应部分被传播。
其他示例
本技术不仅适用于并行处理两个或更多个元素的矢量的矢量处理。这些技术也适用于其中每个矢量元素都是单独处理(例如就像它是标量操作一样)的矢量执行,也适用于有条件的标量或矢量操作,诸如根据前述或早期指令设置的条件代码或标志所定义的那些操作。纯粹为了本说明的目的,在此类情况下,这种条件代码或标志可被视为执行谓词数据的功能。
装置概述
以上讨论的装置提供了电路的示例,该电路包括:
一组物理寄存器90;
指令解码器电路40,该指令解码器电路用于对处理指令进行解码,这些处理指令中的每条处理指令通过对一个或多个相应源架构寄存器中的一个或多个源数据项应用处理操作生成目的地架构寄存器中的输出多位数据项,该解码器电路被配置为检测410处理指令是否定义了谓词合并操作,该谓词合并操作是将目的地架构寄存器的主要内容的零个或更多个部分的集合作为输出多位数据项的相应部分进行传播的处理操作,该部分的集合由谓词数据定义;
寄存器分配电路420,该寄存器分配电路用于将一组物理寄存器中的(在重命名列表730中的)物理寄存器与目的地架构寄存器和一个或多个源架构寄存器相关联,并且当检测器电路检测到处理指令定义谓词合并操作时,该寄存器分配电路被配置为将另一物理寄存器与处理指令相关联,以存储目的地架构寄存器的主要内容的副本;
谓词生成电路700,该谓词生成电路生成在定义谓词合并操作的给定处理指令的执行中使用的谓词数据;以及
谓词检测器电路720,该谓词检测器电路响应于由谓词生成电路生成的谓词数据的状态控制另一物理寄存器与给定处理指令的关联性。
方法示例
图8是示出了方法的示意性流程图,该方法包括:
对处理指令进行解码(在步骤800处),这些处理指令中的每条处理指令通过对一个或多个相应源架构寄存器中的一个或多个源数据项应用处理操作生成目的地架构寄存器中的输出多位数据项,解码的步骤包含检测处理指令是否定义了谓词合并操作,该谓词合并操作是将目的地架构寄存器的主要内容的零个或更多个部分的集合作为输出多位数据项的相应部分进行传播的处理操作,该部分的集合由谓词数据定义;
将一组物理寄存器中的物理寄存器与目的地架构寄存器和一个或多个源架构寄存器相关联(在步骤810处),并且当检测的步骤检测到处理指令定义谓词合并操作时,相关联的步骤被配置为将另一物理寄存器与处理指令相关联,以存储目的地架构寄存器的主要内容的副本;
生成(在步骤820处)在定义谓词合并操作的给定处理指令的执行中使用的所述谓词数据;以及
响应于由生成的步骤生成的谓词数据的状态控制(在步骤830处)另一物理寄存器与给定处理指令的关联性。
模拟器实施方案
图9示出了可以使用的模拟器具体实施。虽然先前所述的实施方案在用于操作支持所涉及的技术的特定处理硬件的装置和方法方面实现了本发明,但也可以提供根据本文所述的实施方案的指令执行环境,该指令执行环境是通过使用计算机程序来实现的。此类计算机程序通常被称为模拟器,在一定程度上是因为此类计算机程序提供硬件架构的基于软件的具体实施。模拟器计算机程序的种类包括仿真器、虚拟机、模型和二进制转换器,其包括动态二进制转换器。通常,模拟器具体实施可以在支持模拟器程序910的主机处理器930上运行,该主机处理器可选地运行主机操作系统920。在一些布置中,在硬件和所提供的指令执行环境和/或在同一主机处理器上提供的多个不同指令执行环境之间可存在多个模拟层。在历史上,需要强大的处理器来提供以合理速度执行的模拟器具体实施,但这种方法在特定情况下可能是合理的,诸如当出于兼容性或重复使用原因而希望运行另一个处理器本地的代码时。例如,模拟器具体实施可向指令执行环境提供主机处理器硬件不支持的附加的功能性,或者提供通常与不同硬件架构相关联的指令执行环境。模拟概述在以下文献中给出:“Some Efficient Architecture Simulation Techniques”,Robert Bedichek,Winter 1990USENIX Conference,第53-63页。
就先前已参考特定硬件构造或特征描述了实施方案而言,在模拟的实施方案中,等效功能可由合适的软件构造或特征提供。例如,特定电路系统可在模拟的实施方案中被实现为计算机程序逻辑。类似地,存储器硬件诸如寄存器或高速缓存存储器可在模拟的实施方案中被实现为软件数据结构。在先前描述的实施方案中参考的硬件元件中的一个或多个硬件元件存在于主机硬件(例如,主机处理器930)上的布置中,在合适的情况下,一些模拟的实施方案可以利用主机硬件。
模拟器程序910可以包括例如指令解码程序逻辑912、寄存器模拟程序逻辑914和地址空间映射程序逻辑916,并且可存储在计算机可读存储介质(其可以是非暂态介质)上,并且向目标代码900(其可包括应用程序、操作系统和管理程序)提供程序接口(指令执行环境),该程序接口与由模拟器程序910建模的硬件架构的应用程序接口相同。因此,可使用模拟器程序910从指令执行环境内执行目标代码900的程序指令,包括上述特征,使得实际上不具有上述装置的硬件特征的主机计算机930可仿真这些特征。
当用于模拟例如参考图8描述的操作时,图9的布置因此提供了用于控制主机数据处理装置以提供指令执行环境的计算机程序的示例,该计算机程序包括:
一组物理寄存器;
指令解码器电路,该指令解码器电路用于对处理指令进行解码,这些处理指令中的每条处理指令通过对一个或多个相应源架构寄存器中的一个或多个源数据项应用处理操作生成目的地架构寄存器中的输出多位数据项,该解码器电路被配置为检测处理指令是否定义了谓词合并操作,该谓词合并操作是将目的地架构寄存器的主要内容的零个或更多个部分的集合作为输出多位数据项的相应部分进行传播的处理操作,该部分的集合由谓词数据定义;
寄存器分配电路,该寄存器分配电路用于将一组物理寄存器中的物理寄存器与目的地架构寄存器和一个或多个源架构寄存器相关联,并且当检测器电路检测到处理指令定义谓词合并操作时,该寄存器分配电路被配置为将另一物理寄存器与处理指令相关联,以存储目的地架构寄存器的主要内容的副本;
谓词生成电路,该谓词生成电路生成在定义谓词合并操作的给定处理指令的执行中使用的谓词数据;以及
谓词检测器电路,该谓词检测器电路响应于由谓词生成电路生成的谓词数据的状态控制另一物理寄存器与给定处理指令的关联性。
常规事项
在本申请中,字词“被配置为...”用于意指装置的元件具有能够执行所限定的操作的配置。在该上下文中,“配置”意指硬件或软件的互连的布置或方式。例如,该装置可以具有提供所限定的操作的专用硬件,或者可以对处理器或其他处理设备进行编程以执行该功能。“被配置为”并不意味着装置元件需要以任何方式改变以便提供所限定的操作。
虽然本文已结合附图详细描述了本发明的示例性实施方案,但应当理解,本发明并不限于那些精确的实施方案,并且在不脱离所附权利要求书所限定的本发明的范围和实质的前提下,本领域的技术人员可在其中实现各种变化和修改。
Claims (17)
1.一种电路,包括:
一组物理寄存器;
指令解码器电路,所述指令解码器电路用于对处理指令进行解码,所述处理指令中的每条处理指令通过对一个或多个相应源架构寄存器中的一个或多个源数据项应用处理操作生成目的地架构寄存器中的输出多位数据项,所述解码器电路被配置为检测处理指令是否定义了谓词合并操作,所述谓词合并操作是将所述目的地架构寄存器的主要内容的零个或更多个部分的集合作为所述输出多位数据项的相应部分进行传播的处理操作,所述部分的集合由谓词数据定义;
寄存器分配电路,所述寄存器分配电路用于将所述一组物理寄存器中的物理寄存器与所述目的地架构寄存器和所述一个或多个源架构寄存器相关联,并且当检测器电路检测到处理指令定义谓词合并操作时,所述寄存器分配电路被配置为将另一物理寄存器与所述处理指令相关联,以存储所述目的地架构寄存器的所述主要内容的副本;
谓词生成电路,所述谓词生成电路生成在定义谓词合并操作的给定处理指令的执行中使用的所述谓词数据;以及
谓词检测器电路,所述谓词检测器电路响应于由所述谓词生成电路生成的所述谓词数据的状态控制所述另一物理寄存器与所述给定处理指令的关联性。
2.根据权利要求1所述的电路,所述电路包含:
执行电路,所述执行电路用于执行由所述指令解码器电路解码的处理指令;
发布电路,所述发布电路用于向所述执行电路发布处理指令以供执行;
其中所述发布电路被配置为根据与处理指令相关联的物理寄存器的可用性来控制所述处理指令的发布。
3.根据权利要求2所述的电路,其中所述执行电路被配置为通过以下步骤执行定义谓词合并操作的处理指令:使用所述另一物理寄存器存储所述目的地架构寄存器的所述主要内容的副本,根据所述一个或多个源数据项生成所述输出多位数据项的所有位以供所述目的地架构寄存器存储,以及随后根据所述谓词数据将来自所述目的地架构寄存器的所述副本的零个或更多个位作为所述输出多位数据项的相应部分进行传播。
4.根据权利要求2所述的电路,其中所述发布电路包含发布队列,以存储定义等待发布的多条处理指令的数据。
5.根据权利要求4所述的电路,其中所述发布电路被配置为禁止从所述发布队列发布处理指令,直到与所述处理指令相关联的所有所述物理寄存器都可用为止。
6.根据权利要求2所述的电路,其中所述谓词检测器电路被配置为将指示由所述谓词生成电路生成的所述谓词数据的状态的信号传送到所述执行电路。
7.根据权利要求6所述的电路,其中所述执行电路包含响应于指示所述谓词数据的所述状态的所述信号而生成替代谓词数据的电路,所述替代谓词数据代替由所述谓词生成电路生成的所述谓词数据供所述执行电路使用。
8.根据权利要求7所述的电路,其中所述谓词检测器电路被配置为当由所述谓词生成电路生成的所述谓词数据等于预定值时,将指示由所述谓词生成电路生成的所述谓词数据的所述状态的所述信号传送到所述执行电路,所述预定值指示所述目的地架构寄存器的所述主要内容的零个部分将作为所述输出多位数据项的相应部分被传播。
9.根据权利要求1所述的电路,其中所述寄存器分配电路被配置为响应于所述谓词检测器电路检测到由所述谓词生成电路针对给定处理指令生成的所述谓词数据等于预定值而去除所述另一物理寄存器与定义谓词合并操作的所述给定处理指令的所述关联性。
10.根据权利要求9所述的电路,其中所述预定值是指示所述目的地架构寄存器的所述主要内容的零个部分将作为所述输出多位数据项的相应部分被传播的值。
11.根据权利要求1所述的电路,其中:
所述处理指令包括矢量处理指令。
12.根据权利要求11所述的电路,其中:
所述目的地架构寄存器和所述一个或多个源架构寄存器包含相应的架构矢量寄存器,所述架构矢量寄存器被配置为存储具有表示处理通道的数量的矢量长度的数据项矢量,每个通道将所述处理操作应用于数据项矢量的相应数据项;并且
所述一组物理寄存器包含被配置为存储具有所述矢量长度的数据项矢量的一组物理矢量寄存器。
13.根据权利要求12所述的电路,其中所述谓词数据定义等于所述矢量长度的谓词值的数量。
14.根据权利要求13所述的电路,其中对于定义谓词合并操作的处理指令,每个谓词值指示所述目的地架构寄存器的所述主要内容的相应部分是否将作为所述输出多位数据项的相应部分被传播。
15.根据权利要求13所述的电路,其中所述寄存器分配电路被配置为响应于所述谓词检测器电路检测到由所述谓词生成电路生成的所述谓词数据指示所述目的地架构寄存器的所述主要内容的部分将不作为所述输出多位数据项的相应部分被传播而去除所述另一物理寄存器与定义谓词合并操作的给定处理指令的所述关联性。
16.一种方法,包括:
对处理指令进行解码,所述处理指令中的每条处理指令通过对一个或多个相应源架构寄存器中的一个或多个源数据项应用处理操作生成目的地架构寄存器中的输出多位数据项,所述解码的步骤包含检测处理指令是否定义了谓词合并操作,所述谓词合并操作是将所述目的地架构寄存器的主要内容的零个或更多个部分的集合作为所述输出多位数据项的相应部分进行传播的处理操作,所述部分的集合由谓词数据定义;
将一组物理寄存器中的物理寄存器与所述目的地架构寄存器和所述一个或多个源架构寄存器相关联,并且当所述检测的步骤检测到处理指令定义谓词合并操作时,所述相关联的步骤被配置为将另一物理寄存器与所述处理指令相关联,以存储所述目的地架构寄存器的所述主要内容的副本;
生成在定义谓词合并操作的给定处理指令的执行中使用的所述谓词数据;以及
响应于由所述生成的步骤生成的所述谓词数据的状态控制所述另一物理寄存器与所述给定处理指令的关联性。
17.一种计算机程序,所述计算机程序用于控制主机数据处理装置以提供指令执行环境,并且包括:
一组物理寄存器;
指令解码器电路,所述指令解码器电路用于对处理指令进行解码,所述处理指令中的每条处理指令通过对一个或多个相应源架构寄存器中的一个或多个源数据项应用处理操作生成目的地架构寄存器中的输出多位数据项,所述解码器电路被配置为检测处理指令是否定义了谓词合并操作,所述谓词合并操作是将所述目的地架构寄存器的主要内容的零个或更多个部分的集合作为所述输出多位数据项的相应部分进行传播的处理操作,所述部分的集合由谓词数据定义;
寄存器分配电路,所述寄存器分配电路用于将所述一组物理寄存器中的物理寄存器与所述目的地架构寄存器和所述一个或多个源架构寄存器相关联,并且当检测器电路检测到处理指令定义谓词合并操作时,所述寄存器分配电路被配置为将另一物理寄存器与所述处理指令相关联,以存储所述目的地架构寄存器的所述主要内容的副本;
谓词生成电路,所述谓词生成电路生成在定义谓词合并操作的给定处理指令的执行中使用的所述谓词数据;以及
谓词检测器电路,所述谓词检测器电路响应于由所述谓词生成电路生成的所述谓词数据的状态控制所述另一物理寄存器与所述给定处理指令的关联性。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/218,371 US11494190B2 (en) | 2021-03-31 | 2021-03-31 | Circuitry and method for controlling a generated association of a physical register with a predicated processing operation based on predicate data state |
US17/218,371 | 2021-03-31 | ||
PCT/GB2022/050704 WO2022208050A1 (en) | 2021-03-31 | 2022-03-21 | Circuitry and method |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117120974A true CN117120974A (zh) | 2023-11-24 |
Family
ID=80999670
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280025418.0A Pending CN117120974A (zh) | 2021-03-31 | 2022-03-21 | 电路和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11494190B2 (zh) |
EP (1) | EP4315039A1 (zh) |
KR (1) | KR20230162054A (zh) |
CN (1) | CN117120974A (zh) |
WO (1) | WO2022208050A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230077933A1 (en) * | 2021-09-14 | 2023-03-16 | Advanced Micro Devices, Inc. | Supporting processing-in-memory execution in a multiprocessing environment |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6314511B2 (en) * | 1997-04-03 | 2001-11-06 | University Of Washington | Mechanism for freeing registers on processors that perform dynamic out-of-order execution of instructions using renaming registers |
US7809930B2 (en) * | 2007-01-24 | 2010-10-05 | Arm Limited | Selective suppression of register renaming |
US7925868B2 (en) * | 2007-01-24 | 2011-04-12 | Arm Limited | Suppressing register renaming for conditional instructions predicted as not executed |
US9182959B2 (en) | 2008-08-15 | 2015-11-10 | Apple Inc. | Predicate count and segment count instructions for processing vectors |
US10275251B2 (en) * | 2012-10-31 | 2019-04-30 | International Business Machines Corporation | Processor for avoiding reduced performance using instruction metadata to determine not to maintain a mapping of a logical register to a physical register in a first level register file |
US9477467B2 (en) | 2013-03-30 | 2016-10-25 | Intel Corporation | Processors, methods, and systems to implement partial register accesses with masked full register accesses |
US20160179523A1 (en) * | 2014-12-23 | 2016-06-23 | Intel Corporation | Apparatus and method for vector broadcast and xorand logical instruction |
US10346170B2 (en) * | 2015-05-05 | 2019-07-09 | Intel Corporation | Performing partial register write operations in a processor |
CN107291425B (zh) * | 2017-06-23 | 2020-11-24 | 上海兆芯集成电路有限公司 | 合并解决重命名尺寸问题的部分写入结果的系统和方法 |
US10365928B2 (en) * | 2017-11-01 | 2019-07-30 | International Business Machines Corporation | Suppress unnecessary mapping for scratch register |
-
2021
- 2021-03-31 US US17/218,371 patent/US11494190B2/en active Active
-
2022
- 2022-03-21 WO PCT/GB2022/050704 patent/WO2022208050A1/en active Application Filing
- 2022-03-21 CN CN202280025418.0A patent/CN117120974A/zh active Pending
- 2022-03-21 KR KR1020237036881A patent/KR20230162054A/ko unknown
- 2022-03-21 EP EP22713996.1A patent/EP4315039A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20230162054A (ko) | 2023-11-28 |
WO2022208050A1 (en) | 2022-10-06 |
US20220318016A1 (en) | 2022-10-06 |
US11494190B2 (en) | 2022-11-08 |
EP4315039A1 (en) | 2024-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10282300B2 (en) | Accessing physical memory from a CPU or processing element in a high performance manner | |
JP3509067B2 (ja) | ストア命令転送方法およびプロセッサ | |
US9804851B2 (en) | Operand size control | |
JPH02234248A (ja) | 仮想メモリシステムをベースとするデジタルコンピュータの命令パイプライン内の予めフェッチした命令でメモリアクセス例外を処理する方法 | |
KR102524565B1 (ko) | 로드 스토어 유닛들을 바이패싱하여 스토어 및 로드 추적 | |
US20110185158A1 (en) | History and alignment based cracking for store multiple instructions for optimizing operand store compare penalties | |
US6378062B1 (en) | Method and apparatus for performing a store operation | |
EP3716055A1 (en) | System, apparatus and method for symbolic store address generation for data-parallel processor | |
US8205032B2 (en) | Virtual machine control structure identification decoder | |
US6862676B1 (en) | Superscalar processor having content addressable memory structures for determining dependencies | |
CN114610394A (zh) | 指令调度的方法、处理电路和电子设备 | |
CN117120974A (zh) | 电路和方法 | |
JP2022549493A (ja) | リタイアキューの圧縮 | |
US11042381B2 (en) | Register renaming-based techniques for block-based processors | |
CN116209979A (zh) | 矢量处理 | |
JP2856784B2 (ja) | 電子計算機 | |
KR20230129517A (ko) | 메모리 카피 크기 결정 명령어 및 데이터 전송 명령어 | |
JP2001142702A (ja) | パイプラインプロセッサにおける制御空間への高速アクセスメカニズム | |
CN114174986A (zh) | 用于推测性向量化程序代码的装置和方法 |
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 |