CN112579168A - 指令执行单元、处理器以及信号处理方法 - Google Patents
指令执行单元、处理器以及信号处理方法 Download PDFInfo
- Publication number
- CN112579168A CN112579168A CN202011557140.0A CN202011557140A CN112579168A CN 112579168 A CN112579168 A CN 112579168A CN 202011557140 A CN202011557140 A CN 202011557140A CN 112579168 A CN112579168 A CN 112579168A
- Authority
- CN
- China
- Prior art keywords
- execution unit
- bits
- instruction
- register file
- physical register
- 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.)
- Granted
Links
Images
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/30098—Register arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本公开提供一种指令执行单元、处理器以及信号处理方法,该方法包括:获取第一指令;根据第一指令,从不同于物理寄存器堆的数据源中读取源操作数,基于源操作数进行处理得到N位的目标数据,并通过第一执行部件的物理寄存器堆写端口将N位的目标数据写入物理寄存器堆的包括N位的区段中。该信号处理方法能够避免较高位宽的物理寄存器堆发生跨物理寄存器的问题,从而能够解决时序紧张的问题。
Description
技术领域
本公开的实施例涉及一种指令执行单元、处理器以及信号处理方法。
背景技术
处理器(例如中央处理器CPU)是电子计算机的主要设备之一,也是电脑中的核心配件,其主要功能是解释计算机指令以及处理计算机软件中的数据。处理器是计算机中负责读取指令,对指令译码并执行指令的核心部件。处理器的功效主要为处理指令、执行操作、控制时间、处理数据。
算术逻辑单元(ALU,Arithmetic Logic Unit)是处理器的一种执行部件,也称运算器,用于执行加、减、乘、除、与、或、非等指令的逻辑部件。ALU是所有中央处理器的核心组成部分。计算机运行时,运算器的操作和操作种类由控制器决定。运算器处理的数据来自存储器或寄存器;处理后的结果数据根据目标操作数的类型,写回存储器,或暂时寄存在寄存器中。运算器接受控制器的命令而进行动作,即运算器所进行的全部操作都是由控制器发出的控制信号来指挥的所以它是执行部件。在各种微架构中,不同的执行部件(用来进行特定逻辑运算的逻辑部件,例如根据执行目的可分为ALU与AGU等)拾取各自就绪的微指令,以进行处理。如何科学地设计高性能处理器的微架构,是提高处理器性能的重要内容。
发明内容
本公开的实施例提供了一种指令执行单元、处理器以及信号处理方法,通过从不同于物理寄存器堆的数据源中读取源操作数,并将经过指令处理后得到的目标数据写入物理寄存器堆中,可以避免较高位宽的物理寄存器堆发生跨物理寄存器的问题,解决时序紧张的问题。
本公开至少一实施例提供了一种信号处理方法,包括:
获取第一指令;
根据所述第一指令,从不同于物理寄存器堆的数据源中读取源操作数,基于所述源操作数进行处理得到N位的目标数据,并通过第一执行部件的物理寄存器堆写端口将所述N位的目标数据写入所述物理寄存器堆的包括N位的区段。
例如,在本公开至少一实施例提供的一种信号处理方法中,读取的所述源操作数为单个源操作数。
例如,在本公开至少一实施例提供的一种信号处理方法中,所述物理寄存器堆的位宽为256位,N为8的倍数。
例如,在本公开至少一实施例提供的一种信号处理方法中,所述源操作数为N位,基于所述N位的源操作数进行处理得到多个所述N位的目标数据,每个所述N位的目标数据与所述N位的源操作数相同,并通过所述第一执行部件的物理寄存器堆写端口将多个所述N位的目标数据分别写入所述物理寄存器堆不同的多个包括N位的区段中。
例如,在本公开至少一实施例提供的一种信号处理方法中,所述物理寄存器堆不同的多个包括N位的区段分别位于物理寄存器堆前一半中和后一半中。
例如,在本公开至少一实施例提供的一种信号处理方法中,所述第一指令包括广播指令,所述广播指令用于将读取的所述N位的源操作数复制成M份得到M个所述N位的目标数据并进行广播,以将M个所述N位的目标数据写入所述物理寄存器堆不同的M个包括N位的区段中,M乘以N位等于所述物理寄存器堆的位宽。
例如,在本公开至少一实施例提供的一种信号处理方法中,所述M为2或4或8。
例如,在本公开至少一实施例提供的一种信号处理方法中,不同于所述物理寄存器堆的数据源包括:一级数据缓存、二级数据缓存、三级数据缓存、四级数据缓存、内存、定点执行模块中的一种或多种。
例如,在本公开至少一实施例提供的一种信号处理方法中,还包括:
响应于通过所述第一执行部件的物理寄存器堆写端口将所述N位的目标数据写入所述物理寄存器堆的包括N位的区段中,利用第二执行部件的物理寄存器堆读端口读取所述第一指令要求获取的所述源操作数,基于所述源操作数进行处理得到所述N位的目标数据,并通过所述第二执行部件的物理寄存器堆写端口将经过所述第二执行部件处理得到的所述N位的目标数据写入所述物理寄存器堆的包括N位的区段中。
本公开至少一实施例提供了一种指令执行单元,包括第一执行部件,其中,所述第一执行部件被配置为:
获取第一指令;
根据所述第一指令,从不同于物理寄存器堆的数据源中读取源操作数,基于所述源操作数进行处理得到所述N位的目标数据,并将所述N位的目标数据写入所述物理寄存器堆的包括N位的区段中。
例如,在本公开至少一实施例提供的一种指令执行单元中,所述第一执行部件包括:
第一执行单元,被配置为基于所述源操作数进行处理以得到所述N位的目标数据;
物理寄存器堆写端口,被配置为将所述N位的目标数据写入所述物理寄存器堆的包括N位的所述区段中。
例如,在本公开至少一实施例提供的一种指令执行单元中,读取的所述源操作数为单个源操作数。
例如,在本公开至少一实施例提供的一种指令执行单元中,所述源操作数为N位,所述第一执行部件基于所述N位的源操作数进行处理得到多个所述N位的目标数据,每个所述N位的目标数据与所述N位的源操作数相同,多个所述N位的目标数据通过所述第一执行部件的物理寄存器堆写端口被分别写入所述物理寄存器堆不同的多个包括N位的区段中。
例如,在本公开至少一实施例提供的一种指令执行单元中,所述第一指令包括广播指令,所述广播指令用于将读取的所述N位的源操作数复制成M份得到M个所述N位的目标数据并进行广播,以将M个所述N位的目标数据写入所述物理寄存器堆不同的M个包括N位的区段中,M乘以N位等于所述物理寄存器堆的位宽。
例如,在本公开至少一实施例提供的一种指令执行单元中,所述第一执行部件不具有物理寄存器堆读端口。
例如,在本公开至少一实施例提供的一种指令执行单元中,所述第一执行部件为定点执行模块中的定点执行部件或浮点执行模块中的浮点执行部件。
例如,在本公开至少一实施例提供的一种指令执行单元中,所述第一执行部件包括读操作执行部件,所述读操作执行部件被配置为从不同于所述物理寄存器堆的数据源中读取单个所述源操作数,所述读操作执行部件基于单个所述源操作数进行处理得到所述N位的目标数据。
例如,在本公开至少一实施例提供的一种指令执行单元中,还包括第二执行部件,其中,所述第二执行部件被配置为:
获取所述第一指令;
根据所述第一指令,从所述物理寄存器堆读取所述源操作数,基于所述源操作数进行处理得到N位的目标数据,并将经过所述第二执行部件处理得到的所述N位的目标数据写入所述物理寄存器堆的包括N位的区段中。
例如,在本公开至少一实施例提供的一种指令执行单元中,所述第二执行部件包括:
物理寄存器堆读端口,被配置为从所述物理寄存器堆读取所述源操作数;
第二执行单元,被配置为基于所述源操作数进行处理以得到所述N位的目标数据,所述第二执行单元与所述第一执行单元相同;
物理寄存器堆写端口,被配置为将经过所述第二执行单元处理得到的所述N位的目标数据写入所述物理寄存器堆的包括N位的所述区段中。
本公开至少一实施例提供了一种处理器,包括第一执行部件和物理寄存器堆,其中,所述第一执行部件被配置为:
获取第一指令;
根据所述第一指令,从不同于所述物理寄存器堆的数据源中读取源操作数,基于所述源操作数进行处理得到N位的目标数据,并将所述N位的目标数据写入所述物理寄存器堆的包括N位的区段中。
例如,在本公开至少一实施例提供的一种处理器中,所述物理寄存器堆的位宽为256位,N为8的倍数。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一种处理器的核心微架构的示意图;
图2为本公开一些实施例提供的一种基于处理器的核心微架构的信号处理方法的流程示意图;以及
图3为本公开一些实施例提供的一种处理器核心的微架构的示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另有定义,本公开实施例使用的所有术语(包括技术和科学术语)具有与本公开所属领域的普通技术人员共同理解的相同含义。还应当理解,诸如在通常字典里定义的那些术语应当被解释为具有与它们在相关技术的上下文中的含义相一致的含义,而不应用理想化或极度形式化的意义来解释,除非本公开实施例明确地这样定义。
本公开实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。同样,“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。本公开实施例中使用了流程图用来说明根据本公开实施例的方法的步骤。应当理解的是,前面或后面的步骤不一定按照顺序来精确的进行。相反,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步。
高性能处理器(例如现代主流X86高性能处理器)的核心微架构可以包括但不限于Intel X86 SunnyCove,AMD X86 Zen的微架构。DGEMM kernel是高性能计算领域最常见的程序之一,例如,在DGEMM kernel的256bitX86核心代码中涉及vbroadcastsd指令。
图1所示为一种处理器的核心微架构的示意图。图1所示的处理器的核心微架构考虑了一个简化的执行模型(其中定点运算被略去)。
如图1所示,取指/译码/分发单元负责从指令缓存中取出指令并进行译码然后发送到调度队列,例如ALU调度队列或AGU调度队列,调度队列挑选出源操作数都已准备好的指令发送到执行部件(即处理器中用来进行特定运算的部件),例如根据执行目的可分为ALU(Arithmetic Logic Unit,算术逻辑单元,如用于执行加、减、乘、除、与、或、非等指令的逻辑部件)与AGU(Address GenerationUnit,虚拟地址计算单元)等,比如图1所示的Pipe0、Pipe1、Pipe2、Pipe3)中去执行。
值得注意的是,如果不做特别说明,执行部件就代指流水执行部件(Pipe),其中,Pipe是指流水线运算单元,可将运算任务分解为多个子任务并在流水线的各级中顺序执行,一个多级流水线可支持多个不同任务的不同运算阶段在同一节拍中同步运行。
通过ALU调度队列或AGU调度队列发射出的指令从物理寄存器堆(PRF,PhysicalRegisterFile,下文的物理寄存器堆可以缩写为PRF)中读出所需要的寄存器源操作数(下文可简称为源操作数),然后由对应的执行部件进行处理,并根据目标操作数类型,将处理结果写回PRF或访存单元(LSU,Load Store Unit),其中,PRF用来存放指令的源操作数和目标操作数(例如下文所说的写入PRF区段中的目标数据),通常具有多个读写端口以支持多个ALU和AGU并发执行,访存单元是用来执行访存操作(读/写)的逻辑部件。例如,对于待处理的加法指令(也可称之为待执行的加法指令),执行部件进行的处理是指做加法运算,该加法运算需要两个加数进行求和,则这两个加数是执行部件所需的两个源操作数,求和之后得到的一个和值对应上述执行结果,即目标数据。例如,图1所示的每个执行部件分别具有两个读PRF的端口。
如图1所示,对于高性能处理器(如AMD X86 Zen),例如乘加指令(FMA)在执行部件1和执行部件3中进行处理,乘加指令需要3个源操作数;又例如,vbroadcastsd指令在执行部件2和执行部件4中进行处理,其中,vbroadcastsd指令是一种广播指令,用于将获取的源操作数广播四份并写入PRF中。
发明人发现,例如,对于PRF具有256bit(或者更高)的位宽(例如浮点位宽),vbroadcastsd指令需要从PRF读端口的低64bit(该低64bit属于低128bit)读取的源操作数广播4份再写入PRF中,此时会涉及到PRF的高128bit和低128bit的数据交换,产生跨物理寄存器堆的问题,并且物理寄存器堆面积太大,跨128bit交换数据使得数据交换的线延迟太大,导致时序(timing)非常紧张。又例如,对于PRF具有256bit(或者更高)的位宽(例如浮点位宽),某一指令需要从PRF读端口的低64bit读取源操作数,若将读取的源操作数发送到与PRF对应的执行部件的高128bit的话,此时也会发生跨物理寄存器堆的问题,从而导致时序非常紧张。目前,还未有文献记载如何解决高性能处理器的跨物理寄存器堆的问题。
本公开至少一实施例提供了一种信号处理方法,包括:
获取第一指令;
根据第一指令,从不同于PRF的数据源中读取源操作数,基于源操作数进行处理得到N位的目标数据,并通过第一执行部件的PRF写端口将N位的目标数据写入PRF的包括N位的区段中。
本公开至少一实施例还提供了一种指令执行单元,包括第一执行部件,其中,第一执行部件被配置为:获取第一指令;根据第一指令,从不同于PRF的数据源中读取源操作数,基于源操作数进行处理得到N位的目标数据,并将N位的目标数据写入PRF的包括N位的区段中。本公开至少一实施例中的第一执行部件包括:第一执行单元,被配置为基于源操作数进行处理以得到N位的目标数据;PRF写端口,被配置为将N位的目标数据写入PRF的包括N位的区段中。
上述实施例的信号处理方法或指令执行单元,通过从不同于PRF的数据源中读取源操作数,将经过指令处理后得到的目标数据写入PRF中,这样可以避免具有较高位宽的PRF发生跨物理寄存器堆的问题(例如较高位宽的PRF的高低位进行数据交换时导致跨物理寄存器堆的问题),尤其是在物理寄存器堆面积较大的时候,用以解决时序紧张的问题,使得处理器每周期执行指令数(IPC)提升。
本公开至少一实施例还提供了一种包括第一执行部件的处理器。
图2为本公开一些实施例提供的一种基于处理器的核心微架构的信号处理方法的流程示意图。图3为本公开一些实施例提供的一种处理器核心的微架构的示意图。
如图2所示,该信号处理方法包括步骤S1至步骤S2。
S1、获取第一指令;
S2、根据第一指令,从不同于PRF的数据源中读取源操作数,基于该源操作数进行处理得到N位的目标数据,并通过第一执行部件的PRF写端口将N位的目标数据写入PRF的包括N位的区段中。
例如,在一些示例中,处理器包括取指单元、译码单元以及分发单元。
例如,如图2和图3结合所示,在步骤S1之前,取指单元负责从指令缓存中取出指令,并交给译码单元进行译码,译码单元将译码后的指令发送给分发单元。另外,对于步骤S1,分发单元将该译码后的指令分发到调度队列,以提供至执行部件,例如,第一执行部件(如图3所示的第一执行部件101或第一执行部件102)获取第一指令。
首先,对于步骤S1,例如,在一些示例中,第一指令要求获取源操作数并将N位的目标数据写入PRF的包括N位的区段中。例如,第一指令要求获取单个源操作数,示例地,第一指令包括广播指令(broadcast指令),例如,broadcast指令包括vbroadcastsd、vbroadcastss与vbroadcastf128等指令。
vbroadcastf128指令用于将读取的源操作数复制成2份得到2个目标数据并进行广播,以将2个目标数据写入PRF中,每个目标数据与读取的源操作数相同。
vbroadcastsd指令用于将读取的源操作数复制成4份得到4个目标数据并进行广播,以将4个目标数据写入PRF中,每个目标数据与读取的源操作数相同。
vbroadcastss指令用于将读取的源操作数复制成8份得到8个目标数据并进行广播,以将8个目标数据写入PRF中,每个目标数据与读取的源操作数相同。
再者,对于步骤S2,例如,在一些示例中,不同于PRF的数据源包括:一级数据缓存、二级数据缓存、三级数据缓存、四级数据缓存、内存中的一种或多种。由于第一执行部件是从同于PRF的数据源获取源操作数,则第一执行部件可以不具有PRF读端口,并且该第一执行部件从该不同于PRF的数据源中读取源操作数。
由此可知,第一执行部件没有PRF读端口,则不存在说需要跨越大面积的物理寄存器堆来传输数据,即避免了数据在PRF内部远距离的搬运,不会产生明显的线延迟的问题,并且留给第一执行部件的时序非常充裕,也就不会导致时序紧张。
例如,在一些示例中,第一执行部件(如图3所示的第一执行部件101或第一执行部件102)为浮点执行模块中的浮点执行部件,其中,图3所示的处理器核心的微架构可以认为是省略了定点执行模块的示意图,例如,图3所示的执部件是浮点执行部件。
又例如,在一些示例中,第一执行部件为定点执行模块中的定点执行部件,本公开对此不作限制。值得注意的是,下面的文字描述和附图所示主要是对应省略了定点执行模块的处理器核心的微架构,但是本公开对此不作限制,即本文各实施例的技术方案同样适用于核心微架构的定点执行模块,为表述清楚、简洁,本公开在此不做赘述。
例如,在一些示例中,当第一执行部件为浮点执行模块中的浮点执行部件时,则该不同于PRF的数据源还可以是定点执行模块。
例如,在一些示例中,第一执行部件需要处理的第一指令是DGEMM的broadcast指令时,信号处理方法具体如下:
获取broadcast指令,然后从不同于PRF的数据源中读取单个源操作数,读取的该单个源操作数是N位(N为正整数,例如64bit)的源操作数,根据broadcast指令进行处理得到M个N位的目标数据,每个N位的目标数据与读取的N位的单个源操作数相同,并将M个N位的目标数据通过第一执行部件的PRF写端口写入PRF不同的M个包括N位的区段中,其中,M为大于等于2的整数,M乘以N位等于PRF的位宽。
例如,在一些示例中,M为2或4或8。当broadcast指令为vbroadcastf128指令时,M为2。当broadcast指令为vbroadcastsd指令时,M为4。当broadcast指令为vbroadcastss指令时,M为8。需要说明的是,本公开实施例的broadcast指令不仅限于此,还可以是其他任何用于将读取的源操作数复制成多份得到多个目标数据并进行广播以将多个目标数据写入PRF的broadcast指令,本公开不再赘述。
例如,在一些示例中,PRF的位宽为256位。值得说明的是,本公开的信号处理方法不仅限适用于256bit的位宽(例如浮点位宽或定点位宽)的PRF,其仅仅是示例性的,而不是对本公开的限制,即本公开还可以适用于其他小于256bit的位宽的PRF,例如64bit的位宽的PRF,具体可视实际情况而定,例如可以根据实际的工艺水平进行确定,本公开在此不作限制,在此也不再赘述。另外,需要注意的是,对于256bit的位宽(甚至更高的位宽)的PRF而言,这时候的物理寄存器堆的面积比较大,则跨物理寄存器堆的问题也比较容易发生,那么本公开这实施例对解决其时序紧张问题的效果也就非常显著。
例如,在一些示例中,N为8的倍数,例如在处理器中数据一般是以一个字节为单位进行读写的,但是本公开对此不作限制,此处不再赘述。
例如,在一些示例中,PRF不同的多个包括N位的区段分别位于PRF前一半中和后一半中。示例地,目标数据在写入PRF时,需要根据目标数据的位数N对地应写入到PRF包括的N位的区段中,例如,对于第一指令为vbroadcastsd指令的情况,vbroadcastsd指令用于将读取的N位的源操作数复制成4份得到4个N位的目标数据并进行广播,以将4个目标数据写入PRF中,如图3所示。若读取的源操作数是64bit的数据[63:0],则复制后的四个64bit的目标数据被分别放到具有256bit的位宽的PRF中四个具有64位的区段中,例如[255:192],[191:128],[127:64],[63:0],其中,[127:64]和[63:0]属于PRF的低128位,[255:192]和[191:128]属于PRF的高128位,则该低128位和高128位分别对应上述的位于PRF前一半中和后一半中,应当理解的是,此仅仅为示例性的,而非对本公开的限制。
例如,在一些示例中,第一执行部件(例如图3所示的第一执行部件101或第二执行部件102)包括读操作执行部件(loadpipe),该读操作执行部件用于从不同于PRF的数据源中读取单个源操作数,其中,读操作执行部件基于读取的单个源操作数并根据所获取的第一指令(例如broadcast指令)进行处理得到对应的N位的目标数据。
例如,在图3示例中,处理器的核心微架构的指令执行单元包括不具有PRF读端口的第一执行部件(例如第一执行部件101或102)以及具有PRF读端口的第二执行部件(例如第二执行部件201、202、203、204),其中,第二执行部件201、202、203、204分别具有两个PRF读端口。需要说明的是,对于图3的所示的第二执行部件201、202、203、204分别具有两个读PRF的端口,其仅仅为示例性的,而不是对本公开的限制。
例如,图3示例中的第一执行部件(例如第一执行部件101或102)可以是图1所示的处理器的核心微架构中原本所存在的不具有PRF读端口的执行部件,例如是读操作执行部件(loadpipe),该读操作执行部件(loadpipe)是用于从例如内存或缓存接收读数据的硬件装置,主流的X86处理器一般都具有,其将读数据进行相应处理后再送到浮点执行模块的数据结果总线。若是为了让读操作执行部件101能够获取区别于读指令的第一指令(例如第一指令为vbroadcastsd指令)并根据该vbroadcastsd指令进行处理,则需要在读操作执行部件(loadpipe)中增设一个可以根据vbroadcastsd指令进行处理的执行单元(即vbroadcastsd执行单元,记为第一执行单元),当读操作执行部件从不同于PRF的数据源中获取一个64bit的源操作数时,由读操作执行部件中的第一执行单元将该64bit的源操作数复制成四份,即得到四个64bit的目标数据并写入PRF中四个64bit的区段中,其中,每个64bit的目标数据与64bit的源操作数相同。
例如,将图3与图1进行相比,图3所示的第二执行部件202和第四执行部件204可以分别对应图1中的执行部件2和执行部件4,第二执行部件202(或第四执行部件204)是原本包括了用于处理vbroadcastsd指令的执行单元的执行部件,但是由于vbroadcastsd指令需要从PRF读端口的低64bit(该低64bit属于低128bit)读取的源操作数广播4份再写入PRF中,此时涉及到PRF的高128bit和低128bit的数据交换,从而产生跨物理寄存器堆的问题。为了避免跨物理寄存器堆的问题,通过图3所示的第一执行部件101(已增设可根据vbroadcastsd指令进行处理的执行单元)来处理该vbroadcastsd指令,以避免时序非常紧张的问题,其中,第一执行部件101的执行单元和第二执行部件202中的执行单元是一致的,均能实现vbroadcastsd指令的执行。
发明人还发现:例如图1中的执行部件1~执行部件4各自具有两个PRF读端口,若乘加指令(FMA)在执行部件1(或执行部件3)中进行执行,乘加指令需要有3个源操作数,则执行部件1或执行部件3分别需要占用相邻的执行部件2的1个PRF读端口,这样可能会导致执行部件2的指令(例如原本需要两个源操作数的指令)因PRF读端口被占用而导致没法正常从调度队列发射出去执行。
例如,在图3示例中,对于待执行的第一指令,例如vbroadcastsd指令,一方面,若通过第一执行部件101进行获取并执行该vbroadcastsd指令以将读取的源操作数广播4份再写入PRF中,那么即使第二执行部件202的PRF读端口被占用了,也不会影响原本需要执行的vbroadcastsd指令的正常调度执行,从而避免了类似于乘加指令(FMA)抢占其他执行部件的PRF读端口而导致其他执行部件的指令无法发射执行的问题。另一方面,在同一节拍中,若通过第一执行部件101实现了第一条vbroadcastsd指令的处理,此时还可以根据实际情况的需要,让第二执行部件202去执行另一条vbroadcastsd指令,从而实现在同一节拍中能够多执行一条vbroadcastsd指令,一定程度地能够增加整体执行带宽。
由此可知,例如,在一些示例中,基于处理器的核心微架构的信号处理方法还包括:响应于通过第一执行部件(例如图3的第一执行部件101或第一执行部件102)的PRF写端口将N位的目标数据写入PRF的包括N位的区段中,利用第二执行部件(例如图3的第二执行部件202或第四执行部件204)的PRF读端口读取第一指令(例如vbroadcastsd指令)要求获取的源操作数,根据第一指令进行处理得到N位的目标数据(例如四个64bit的目标数据),并通过第二执行部件的PRF写端口将N位的目标数据写入PRF的包括N位的区段中。
值得注意的是,本公开上述实施例的第一指令不仅限于包括vbroadcastf128、vbroadcastsd、vbroadcastss指令在内的broadcast指令,还可以是其他任何需要单个源操作数的指令,例如开平方指令(sqrt指令),本公开对此不作限制,并且在此不做穷举和赘述。另外,还需要注意的是,本公开的第一指令还不仅于单个源操作数的指令,还可以根据合理的执行单元对应地用于需要其他数目的源操作数的指令,只要其源操作数来源于不同于PRF的数据源即可,本公开对此不作限制,具体可以根据处理器的实际情况进行自由调整,本公开在此不再赘述。
此外,还值得说明的是,本公开上述实施例中用于处理第一指令的第一执行单元(例如是需要单个源操作数的broadcast执行单元)可以增设到任何的浮点执行部件或定点执行部件内,而不仅限于上述的读操作执行部件(load pipe,其可以表示上述不同于PRF的数据源和浮点执行模块之间的接口),例如第一执行部件还可以是Int2Fp Pipe(Int2FpPipe表示定点执行模块与浮点执行模块之间的交互接口),本公开对此不作限制,具体可以根据实际情况进行自由调整,本公开在此不再赘述。
据前所述,本公开至少一个实施例的信号处理方法,在不明显增加硬件成本(例如仅为每个第一执行部件增加一个第一执行单元)的前提下,可以实现如下:可以避免在运行DGEMM时因256bit的位宽的物理寄存器堆的高低128bit进行数据交换而导致时序紧张的问题;还可以减少运行DGEMM时的PRF读端口冲突,避免因执行部件的PRF读端口被其他执行部件占用而导致相应指令没法正常从调度队列发射出去执行的问题,最终使得X86处理器IPC提升(例如可以提升约46.8%)。
本文主要是以X86高性能处理器的核心微架构的简化示意图为例进行说明的,当然还可以适用于其他任何形式的处理器,本公开实施例对此不作限制,在此也不做赘述。
例如,在一些示例中,当第一执行部件是Int2Fp Pipe的时候,若在该Int2Fp Pipe中增设用于处理CVT指令的执行单元时,也能实现上文所述的技术效果,本公开在此不再赘述,其中,CVT指令表示定点数与浮点数之间进行相互转换的指令。对于一般常见的基准测试(benchmark),若碰到Int2Fp Pipe的数据传输,说明定点执行模块发送了一个数据给浮点执行模块,后续往往还要获取一个CVT指令,以将定点数转换成浮点数后再进行运算,若按照上文所述要将用于处理CVT指令的执行单元增设到Int2Fp Pipe中,使得原本后续所需的CVT指令不再需要。示例地,CVT指令也是需要单个源操作数,并且该单个源操作数可以来自于定点执行模块,也可以来自于其他的不同于PRF的数据源(例如一级数据缓存、二级数据缓存、三级数据缓存、四级数据缓存、内存中任意一种),例如,当CVT指令的源操作数来自于一级数据缓存、二级数据缓存、三级数据缓存、四级数据缓存、内存中任意一种的时候,因此,可以将用于处理CVT指令的执行单元增设到读操作执行部件(loadpipe),能够实现的效果和上述broadcast指令应用于读操作执行部件(loadpipe)达到的技术效果基本一致。
例如,在一些示例中,当第一执行部件(例如读操作执行部件)获取的第一指令是开平方指令(sqrt指令)的时候,该开平方指令需要的单个源操作数来自上述的不同于PRF的数据源,若在该读操作执行部件中增设用于处理开平方指的执行单元时,也能够实现上文所述的技术效果,本公开在此不再赘述。需要说明的是,由于对于常见的基准测试(benchmark),开平方指令远没有broadcast指令这么频繁,所以,在实际工程中,将用于处理broadcast指令的执行单元增设到第一执行部件(例如loadpipe)能够带来的性能提升,比将用于处理开平方指令的执行单元增设到第一执行部件(例如loadpipe)能够带来的性能提升要明显的多。
需要说明的是,在本公开的实施例中,指令执行单元的技术方案和技术效果可以参考上文中关于信号处理方法的描述,本公开此处不再赘述。
本公开至少一实施例还提供了一种处理器,包括指令执行单元,该指令执行单元包括第一执行部件,第一执行部件被配置为:
获取第一指令;
根据第一指令,从不同于PRF的数据源中读取源操作数,基于源操作数进行处理得到N位的目标数据,并将N位的目标数据写入PRF的包括N位的区段中。
需要说明的是,在本公开的实施例中,处理器包括的指令执行单元以及第一执行部件可以参考上文有关内容,处理器的技术效果可以参考上文中关于信号处理方法的描述,此处不再赘述。
本公开以上实施例中的各个模块可被分别配置为执行特定功能的软件、硬件、固件或上述项的任意组合。例如,这些模块可对应于专用的集成电路,也可对应于纯粹的软件代码,还可对应于软件与硬件相结合的模块。
需要说明的是,尽管以上在描述指令执行单元时将其划分为用于分别执行相应处理的模块,然而,本领域技术人员清楚的是,各模块执行的处理也可以在指令执行单元不进行任何具体模块划分或者各模块之间并无明确划界的情况下执行。
有以下几点需要说明:
(1)本公开实施例附图只涉及到本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (21)
1.一种信号处理方法,包括:
获取第一指令;
根据所述第一指令,从不同于物理寄存器堆的数据源中读取源操作数,基于所述源操作数进行处理得到N位的目标数据,并通过第一执行部件的物理寄存器堆写端口将所述N位的目标数据写入所述物理寄存器堆的包括N位的区段中。
2.如权利要求1所述的信号处理方法,其中,
读取的所述源操作数为单个源操作数。
3.如权利要求1所述的信号处理方法,其中,
所述物理寄存器堆的位宽为256位,N为8的倍数。
4.如权利要求1~3任一所述的信号处理方法,其中,所述源操作数为N位,
基于所述N位的源操作数进行处理得到多个所述N位的目标数据,每个所述N位的目标数据与所述N位的源操作数相同,并通过所述第一执行部件的物理寄存器堆写端口将多个所述N位的目标数据分别写入所述物理寄存器堆不同的多个包括N位的区段中。
5.如权利要求4所述的信号处理方法,其中,
所述物理寄存器堆不同的多个包括N位的区段分别位于物理寄存器堆前一半中和后一半中。
6.如权利要求4所述的信号处理方法,其中,所述第一指令包括广播指令,
所述广播指令用于将读取的所述N位的源操作数复制成M份得到M个所述N位的目标数据并进行广播,以将M个所述N位的目标数据写入所述物理寄存器堆不同的M个包括N位的区段中,M乘以N位等于所述物理寄存器堆的位宽。
7.如权利要求6所述的信号处理方法,其中,
所述M为2或4或8。
8.如权利要求1所述的信号处理方法,其中,
不同于所述物理寄存器堆的数据源包括:一级数据缓存、二级数据缓存、三级数据缓存、四级数据缓存、内存、定点执行模块中的一种或多种。
9.如权利要求1~3,5~8任一所述的信号处理方法,还包括:
响应于通过所述第一执行部件的物理寄存器堆写端口将所述N位的目标数据写入所述物理寄存器堆的包括N位的区段中,利用第二执行部件的物理寄存器堆读端口读取所述第一指令要求获取的所述源操作数,基于所述源操作数进行处理得到所述N位的目标数据,并通过所述第二执行部件的物理寄存器堆写端口将经过所述第二执行部件处理得到的所述N位的目标数据写入所述物理寄存器堆的包括N位的区段中。
10.一种指令执行单元,包括第一执行部件,其中,所述第一执行部件被配置为:
获取第一指令;
根据所述第一指令,从不同于物理寄存器堆的数据源中读取源操作数,基于所述源操作数进行处理得到N位的目标数据,并将所述N位的目标数据写入所述物理寄存器堆的包括N位的区段中。
11.如权利要求10所述的指令执行单元,其中,所述第一执行部件包括:
第一执行单元,被配置为基于所述源操作数进行处理以得到所述N位的目标数据;
物理寄存器堆写端口,被配置为将所述N位的目标数据写入所述物理寄存器堆的包括N位的所述区段中。
12.如权利要求10所述的指令执行单元,其中,
读取的所述源操作数为单个源操作数。
13.如权利要求11所述的指令执行单元,其中,
所述源操作数为N位,所述第一执行部件基于所述N位的源操作数进行处理得到多个所述N位的目标数据,每个所述N位的目标数据与所述N位的源操作数相同,
多个所述N位的目标数据通过所述第一执行部件的物理寄存器堆写端口被分别写入所述物理寄存器堆不同的多个包括N位的区段中。
14.如权利要求13所述的指令执行单元,其中,
所述第一指令包括广播指令,所述广播指令用于将读取的所述N位的源操作数复制成M份得到M个所述N位的目标数据并进行广播,以将M个所述N位的目标数据写入所述物理寄存器堆不同的M个包括N位的区段中,M乘以N位等于所述物理寄存器堆的位宽。
15.如权利要求10~14任一所述的指令执行单元,其中,
所述第一执行部件不具有物理寄存器堆读端口。
16.如权利要求15所述的指令执行单元,其中,
所述第一执行部件为定点执行模块中的定点执行部件或浮点执行模块中的浮点执行部件。
17.如权利要求15所述的指令执行单元,其中,所述第一执行部件包括读操作执行部件,
所述读操作执行部件被配置为从不同于所述物理寄存器堆的数据源中读取单个所述源操作数,所述读操作执行部件基于单个所述源操作数进行处理得到所述N位的目标数据。
18.如权利要求10~14,16~17任一所述的指令执行单元,还包括第二执行部件,其中,所述第二执行部件被配置为:
获取所述第一指令;
根据所述第一指令,从所述物理寄存器堆读取所述源操作数,基于所述源操作数进行处理得到N位的目标数据,并将经过所述第二执行部件处理得到的所述N位的目标数据写入所述物理寄存器堆的包括N位的区段中。
19.如权利要求18所述的指令执行单元,其中,所述第二执行部件包括:
物理寄存器堆读端口,被配置为从所述物理寄存器堆读取所述源操作数;
第二执行单元,被配置为基于所述源操作数进行处理以得到所述N位的目标数据,所述第二执行单元与所述第一执行单元相同;
物理寄存器堆写端口,被配置为将经过所述第二执行单元处理得到的所述N位的目标数据写入所述物理寄存器堆的包括N位的所述区段中。
20.一种处理器,包括第一执行部件和物理寄存器堆,其中,所述第一执行部件被配置为:
获取第一指令;
根据所述第一指令,从不同于所述物理寄存器堆的数据源中读取源操作数,基于所述源操作数进行处理得到N位的目标数据,并将所述N位的目标数据写入所述物理寄存器堆的包括N位的区段中。
21.如权利要求20所述的处理器,其中,
所述物理寄存器堆的位宽为256位,N为8的倍数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011557140.0A CN112579168B (zh) | 2020-12-25 | 2020-12-25 | 指令执行单元、处理器以及信号处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011557140.0A CN112579168B (zh) | 2020-12-25 | 2020-12-25 | 指令执行单元、处理器以及信号处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112579168A true CN112579168A (zh) | 2021-03-30 |
CN112579168B CN112579168B (zh) | 2022-12-09 |
Family
ID=75139593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011557140.0A Active CN112579168B (zh) | 2020-12-25 | 2020-12-25 | 指令执行单元、处理器以及信号处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112579168B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130326192A1 (en) * | 2011-12-22 | 2013-12-05 | Elmoustapha Ould-Ahmed-Vall | Broadcast operation on mask register |
WO2014051752A1 (en) * | 2012-09-28 | 2014-04-03 | Intel Corporation | Systems, apparatuses, and methods for performing conflict detection and broadcasting contents of a register to data element positions of another register |
US20160179548A1 (en) * | 2014-12-22 | 2016-06-23 | Intel Corporation | Instruction and logic to perform an inverse centrifuge operation |
CN108268279A (zh) * | 2016-12-30 | 2018-07-10 | 英特尔公司 | 用于广播算术操作的系统、装置和方法 |
WO2019005115A1 (en) * | 2017-06-30 | 2019-01-03 | Intel Corporation | APPARATUS AND METHOD FOR MULTIPLICATION AND CUMULATION OF COMPLEX VALUES |
CN112099851A (zh) * | 2020-09-07 | 2020-12-18 | 海光信息技术股份有限公司 | 指令执行方法、装置、处理器及电子设备 |
-
2020
- 2020-12-25 CN CN202011557140.0A patent/CN112579168B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130326192A1 (en) * | 2011-12-22 | 2013-12-05 | Elmoustapha Ould-Ahmed-Vall | Broadcast operation on mask register |
WO2014051752A1 (en) * | 2012-09-28 | 2014-04-03 | Intel Corporation | Systems, apparatuses, and methods for performing conflict detection and broadcasting contents of a register to data element positions of another register |
US20160179548A1 (en) * | 2014-12-22 | 2016-06-23 | Intel Corporation | Instruction and logic to perform an inverse centrifuge operation |
CN108268279A (zh) * | 2016-12-30 | 2018-07-10 | 英特尔公司 | 用于广播算术操作的系统、装置和方法 |
WO2019005115A1 (en) * | 2017-06-30 | 2019-01-03 | Intel Corporation | APPARATUS AND METHOD FOR MULTIPLICATION AND CUMULATION OF COMPLEX VALUES |
CN112099851A (zh) * | 2020-09-07 | 2020-12-18 | 海光信息技术股份有限公司 | 指令执行方法、装置、处理器及电子设备 |
Non-Patent Citations (1)
Title |
---|
赵雨来等: "一种基于活跃周期的低端口数低能耗寄存器堆设计", 《计算机学报》 * |
Also Published As
Publication number | Publication date |
---|---|
CN112579168B (zh) | 2022-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6456867B2 (ja) | 密結合ヘテロジニアスコンピューティングのためのハードウェアプロセッサ及び方法 | |
CN109062608B (zh) | 用于独立数据上递归计算的向量化的读和写掩码更新指令 | |
TWI470543B (zh) | 用於多精度算術之單一指令多重資料(simd)整數乘法累加指令 | |
CN107077321B (zh) | 用于执行融合的单个周期递增-比较-跳转的指令和逻辑 | |
KR100571322B1 (ko) | 파이프라인식 프로세서에서의 예외 취급 방법, 장치 및시스템 | |
JP6373425B2 (ja) | 複数のビットを左にシフトし、複数の1を複数の下位ビットにプルインするための命令 | |
US20120060016A1 (en) | Vector Loads from Scattered Memory Locations | |
RU2628156C2 (ru) | Системы и способы отслеживания флага в операциях устранения перемещения | |
TW202209103A (zh) | 可中斷及可重啟矩陣乘法指令、處理器、方法和系統 | |
US20040139299A1 (en) | Operand forwarding in a superscalar processor | |
GB2553783A (en) | Vector multiply-add instruction | |
JPH09311786A (ja) | データ処理装置 | |
CN107533460B (zh) | 紧缩有限冲激响应(fir)滤波处理器、方法、系统和指令 | |
TWI502490B (zh) | 用以處理加法指令之方法、及用以執行加法指令之裝置與系統 | |
CN108319559B (zh) | 用于控制矢量内存存取的数据处理装置及方法 | |
CN114816523A (zh) | 打包数据对齐加计算指令、处理器、方法和系统 | |
EP3767462A1 (en) | Detecting a dynamic control flow re-convergence point for conditional branches in hardware | |
JP5326314B2 (ja) | プロセサおよび情報処理装置 | |
US20220035635A1 (en) | Processor with multiple execution pipelines | |
JPH0673105B2 (ja) | 命令パイプライン方式のマイクロプロセッサ | |
US20100115232A1 (en) | Large integer support in vector operations | |
CN112579168B (zh) | 指令执行单元、处理器以及信号处理方法 | |
EP1220092A2 (en) | System and method for executing variable latency load operations in a data processor | |
EP1220088A2 (en) | Circuit and method for supporting misaligned accesses in the presence of speculative load instructions | |
US8966230B2 (en) | Dynamic selection of execution stage |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20221114 Address after: 610216 building 4, No. 171, hele'er street, Chengdu hi tech Zone, China (Sichuan) pilot Free Trade Zone, Chengdu, Sichuan Applicant after: CHENGDU HAIGUANG MICROELECTRONICS TECHNOLOGY Co.,Ltd. Address before: 300392 North 2-204 industrial incubation-3-8, 18 Haitai West Road, Huayuan Industrial Zone, Tianjin Applicant before: Haiguang Information Technology Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |