CN117707623A - 一种risc-v矩阵指令的寄存器重命名方法和装置 - Google Patents

一种risc-v矩阵指令的寄存器重命名方法和装置 Download PDF

Info

Publication number
CN117707623A
CN117707623A CN202211097032.9A CN202211097032A CN117707623A CN 117707623 A CN117707623 A CN 117707623A CN 202211097032 A CN202211097032 A CN 202211097032A CN 117707623 A CN117707623 A CN 117707623A
Authority
CN
China
Prior art keywords
register
physical register
slice
bit
physical
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
Application number
CN202211097032.9A
Other languages
English (en)
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.)
Beijing Simm Computing Technology Co ltd
Original Assignee
Beijing Simm Computing Technology Co 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 Beijing Simm Computing Technology Co ltd filed Critical Beijing Simm Computing Technology Co ltd
Priority to CN202211097032.9A priority Critical patent/CN117707623A/zh
Publication of CN117707623A publication Critical patent/CN117707623A/zh
Pending legal-status Critical Current

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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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

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

本发明实施例公开了一种RISC‑V矩阵指令的寄存器重命名方法和装置。本发明实施例获取物理寄存器的忙表,忙表中包括所述物理寄存器的方向位和切片向量位;方向位表示所述物理寄存器当前切片操作的方向,切片向量位表示所述物理寄存器的所述多个切片的就绪状态;响应于矩阵指令的源逻辑寄存器为二维寄存器,确定源逻辑寄存器对应的第一物理寄存器;在忙表中获取所述第一物理寄存器的方向位和切片向量位;响应于所述矩阵指令对所述第一物理寄存器的切片操作的方向与所述第一物理寄存器的方向位相同,将所述第一物理寄存器的切片向量位分发到发射队列。通过上述方法,可以减小矩阵指令的发射延迟和执行周期,提高了每周期执行指令数IPC性能。

Description

一种RISC-V矩阵指令的寄存器重命名方法和装置
技术领域
本发明涉及计算机技术领域,具体涉及一种RISC-V矩阵指令的寄存器重命名方法和装置。
背景技术
第五代精简指令集计算机RISC-V(Reduced Instruction Set Computer-V)结合了x86和ARM指令集的优点,RISC-V中指令简单、指令条数少、代码小并且功耗低,因此,RISC-V的使用范围越来越广泛,在上述前提下,CPU的流水线设计会影响RISC-V的处理效率。
现有技术中,一个程序的不同指令之间存在很多的数据相关性,数据相关性是和寄存器直接相关的,在现代乱序超标量通用处理器中通常采用硬件管理的寄存器重命名技术来消除这种数据相关性。在使用统一的物理寄存器文件进行寄存器重命名的方案中,每个物理寄存器对应的忙表(Busy Table)只有1位,该1位中的信息用于表示整个物理寄存器中的数据是否就绪。而为满足人工智能应用对矩阵运算高算力的需求,各主流指令集架构先后添加了矩阵指令扩展,这些新增的矩阵指令扩展中引入了矩阵寄存器(即二维寄存器),所述矩阵寄存器与通用寄存器相比,所述矩阵寄存器包含行和列两个维度,矩阵寄存器支持指令在行和列两个方向以切片的方式执行读取和写入操作。但是由于每个物理寄存器对应的Busy Table只有1位状态位来表示整个寄存器是否就绪,因此,矩阵寄存器只能作为整体使用,无法体现矩阵寄存器的各个切片的就绪状态,可能导致矩阵指令等待发射的时间变长,增加了矩阵指令的发射延迟和执行周期,进而影响处理器性能。
综上所述,如何减小矩阵指令的发射延迟和执行周期,提高每周期执行指令数IPC性能,是目前需要解决的问题。
发明内容
有鉴于此,本发明实施例提供了一种RISC-V矩阵指令的寄存器重命名方法和装置,可以减小矩阵指令的发射延迟和执行周期,提高了每周期执行指令数IPC性能。
第一方面,本发明实施例提供了一种RISC-V矩阵指令的寄存器重命名方法,该方法包括:
获取物理寄存器的忙表,所述忙表中包括所述物理寄存器的方向位和切片向量位,其中,所述物理寄存器为包括多个切片的二维寄存器;所述方向位表示所述物理寄存器当前切片操作的方向,所述切片向量位表示所述物理寄存器的所述多个切片的就绪状态;
响应于矩阵指令的源逻辑寄存器为二维寄存器,确定所述源逻辑寄存器对应的第一物理寄存器;在所述忙表中获取所述第一物理寄存器的方向位和切片向量位;响应于所述矩阵指令对所述第一物理寄存器的切片操作的方向与所述第一物理寄存器的方向位相同,将所述第一物理寄存器的切片向量位分发到发射队列,其中,所述发射队列中包括所述矩阵指令的至少一个微码,每个微码携带与所述微码对应的所述切片向量位中一位;
响应于矩阵指令的目的逻辑寄存器为二维寄存器,确定空闲的第二物理寄存器分配给所述目的逻辑寄存器;根据所述矩阵指令变更所述忙表中所述第二物理寄存器的方向位和切片向量位。
可选的,在将所述第一物理寄存器的切片向量位分发到发射队列之后,该方法还包括:
响应于所述第一物理寄存器的切片向量位中任一位表示的对应切片为已就绪状态,在所述发射队列中发射所述切片向量位中任一位对应的微码。
可选的,该方法还包括:
响应于所述矩阵指令对所述第一物理寄存器的切片操作的方向与所述第一物理寄存器的方向位不同,将所述第一物理寄存器的切片向量位全部变更为未就绪状态;
将变更后的所述第一物理寄存器的切片向量位分发到所述发射队列。
可选的,该方法还包括:
获取矩阵指令;
按照切片的粒度对所述矩阵指令进行拆分,得到至少一个微码;其中,所述微码用于操作所述物理寄存器中的一个切片。
可选的,所述确定所述源逻辑寄存器对应的第一物理寄存器,包括:
获取重命名映射表;其中,所述重命名映射表中包括逻辑寄存器和物理寄存器之间的映射关系;
在所述重命名映射表中查找所述源逻辑寄存器对应的第一物理寄存器。
可选的,所述重命名映射表中包括所述物理寄存器的编号;
所述确定所述源逻辑寄存器对应的第一物理寄存器,包括:
在所述重命名映射表中查找所述源逻辑寄存器对应的第一物理寄存器的编号;根据所述编号在所述忙表中获取所述第一物理寄存器的方向位和切片向量位。
可选的,所述确定空闲的第二物理寄存器分配给所述目的逻辑寄存器,包括:
获取寄存器空闲列表;
在寄存器空闲列表中选择空闲的第二物理寄存器分配给所述目的逻辑寄存器,并变更所述寄存器空闲列表中所述第二物理寄存器的空闲状态。
可选的,该方法还包括:
在写回阶段,将忙表中所述微码对应的第二物理寄存器的向量切片位的对应位设置为已就绪状态;
响应于所述微码对应的第二物理寄存器的向量切片位的对应位设置为已就绪状态,在所述发射队列中发射所述微码。
第二方面,本发明实施例提供了一种矩阵指令处理装置,该装置包括:
获取单元,用于获取物理寄存器的忙表,所述忙表中包括所述物理寄存器的方向位和切片向量位,其中,所述物理寄存器为包括多个切片的二维寄存器;所述方向位表示所述物理寄存器当前切片操作的方向,所述切片向量位表示所述物理寄存器的所述多个切片的就绪状态;
确定单元,响应于矩阵指令的源逻辑寄存器为二维寄存器,用于确定所述源逻辑寄存器对应的第一物理寄存器;在所述忙表中获取所述第一物理寄存器的方向位和切片向量位;响应于所述矩阵指令对所述第一物理寄存器的切片操作的方向与所述第一物理寄存器的方向位相同,将所述第一物理寄存器的切片向量位分发到发射队列,其中,所述发射队列中包括所述矩阵指令的至少一个微码,每个微码携带与所述微码对应的所述切片向量位中一位;
所述确定单元还用于,响应于矩阵指令的目的逻辑寄存器为二维寄存器,确定空闲的第二物理寄存器分配给所述目的逻辑寄存器;根据所述矩阵指令变更所述忙表中所述第二物理寄存器的方向位和切片向量位。
可选的,该装置还包括:发射单元,响应于所述第一物理寄存器的切片向量位中任一位表示的对应切片为已就绪状态,用于在所述发射队列中发射所述切片向量位中任一位对应的微码。
可选的,该装置还包括处理单元,响应于所述矩阵指令对所述第一物理寄存器的切片操作的方向与所述第一物理寄存器的方向位不同,用于将所述第一物理寄存器的切片向量位全部变更为未就绪状态;所述处理单元还用于,将变更后的所述第一物理寄存器的切片向量位分发到所述发射队列。
可选的,所述获取单元还用于:
获取矩阵指令;
所述处理单元还用于:按照切片的粒度对所述矩阵指令进行拆分,得到至少一个微码;其中,所述微码用于操作所述物理寄存器中的一个切片。
可选的,所述获取单元具体用于:
获取重命名映射表;其中,所述重命名映射表中包括逻辑寄存器和物理寄存器之间的映射关系;
在所述重命名映射表中查找所述源逻辑寄存器对应的第一物理寄存器。
可选的,所述重命名映射表中包括所述物理寄存器的编号;所述获取单元具体用于:
在所述重命名映射表中查找所述源逻辑寄存器对应的第一物理寄存器的编号;根据所述编号在所述忙表中获取所述第一物理寄存器的方向位和切片向量位。
可选的,所述获取单元具体用于:获取寄存器空闲列表;
在寄存器空闲列表中选择空闲的第二物理寄存器分配给所述目的逻辑寄存器,并变更所述寄存器空闲列表中所述第二物理寄存器的空闲状态。
可选的,所述处理单元还用于:在写回阶段,将忙表中所述微码对应的第二物理寄存器的向量切片位的对应位设置为已就绪状态;
所述发射单元还用于:响应于所述微码对应的第二物理寄存器的向量切片位的对应位设置为已就绪状态,在所述发射队列中发射所述微码。
第三方面,本发明实施例提供了一种计算机程序指令,所述计算机程序指令在被处理器执行时实现如第一方面或第一方面任一种可能中任一项所述的方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存
储计算机程序指令,所述计算机程序指令在被处理器执行时实现如第一方面或第一方面任一种可能中任一项所述的方法。
第五方面,本发明实施例提供了一种芯片,包括存储器和处理核,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理核执行以实现如第一方面或第一方面任一种可能中任一项所述的方法。
第六方面,本发明实施例提供了一种板卡,所述板卡上包括所述第五方面的芯片。
第七方面,本发明实施例提供了一种服务器,所述服务器上包括所述第六方面的板卡。
本发明实施例通过获取物理寄存器的忙表,所述忙表中包括所述物理寄存器的方向位和切片向量位,其中,所述物理寄存器为包括多个切片的二维寄存器;所述方向位表示所述物理寄存器当前切片操作的方向,所述切片向量位表示所述物理寄存器的所述多个切片的就绪状态;响应于矩阵指令的源逻辑寄存器为二维寄存器,确定所述源逻辑寄存器对应的第一物理寄存器;在所述忙表中获取所述第一物理寄存器的方向位和切片向量位;响应于所述矩阵指令对所述第一物理寄存器的切片操作的方向与所述第一物理寄存器的方向位相同,将所述第一物理寄存器的切片向量位分发到发射队列,其中,所述发射队列中包括所述矩阵指令的至少一个微码,每个微码携带与所述微码对应的所述切片向量位中一位;响应于矩阵指令的目的逻辑寄存器为二维寄存器,确定空闲的第二物理寄存器分配给所述目的逻辑寄存器;根据所述矩阵指令变更所述忙表中所述第二物理寄存器的方向位和切片向量位。通过上述方法,可以减小矩阵指令的发射延迟和执行周期,提高了每周期执行指令数IPC性能。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1是现有技术中一种微码示意图;
图2是现有技术中一种忙表示意图;
图3是现有技术中一种发射队列示意图;
图4是本发明实施例的一种RISC-V矩阵指令的寄存器重命名方法流程图;
图5是本发明实施例的一种忙表示意图;
图6是本发明实施例的另一种RISC-V矩阵指令的寄存器重命名方法流程图;
图7是本发明实施例的再一种RISC-V矩阵指令的寄存器重命名方法流程图;
图8是本发明实施例的又一种RISC-V矩阵指令的寄存器重命名方法流程图;
图9是本发明实施例的又一种RISC-V矩阵指令的寄存器重命名装置示意图。
具体实施方式
以下基于实施例对本发明公开进行描述,但是本发明公开并不仅仅限于这些实施例。在下文对本发明公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明公开。为了避免混淆本发明公开的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
除非上下文明确要求,否则整个申请文件中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本发明公开的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明公开的描述中,除非另有说明,“多个”的含义是两个或两个以上。
现有技术中,一个程序的不同指令之间存在很多的数据相关性,数据相关性是和寄存器直接相关的,包括反相关(WAR)、输出相关(WAW)和真相关(RAW)三种。其中,反相关和输出相关是与寄存器名字有关的。
具体的,所述反相关WAR的具体示例如下:
add R3,R4,R2
load R2,(R1)
上述add指令读取寄存器R4和寄存器R2中的值,然后将读取的值相加后把结果写入寄存器R3;load指令从寄存器加载数据写入寄存器R2(存储器地址来自于寄存器R1);上述load指令的目的寄存器R2与add指令的源寄存器R2相同,如果load指令在add指令之前执行,会导致指令运算结果错误,因此add指令和load指令存在数据依赖关系,load指令必须等待add指令完成后才能执行。
所述输出相关WAW的具体示例如下:
sub R1,R2,R3
add R1,R4,R5
上述sub指令读取寄存器R2和寄存器R3中的值,然后将读取的值相减后把结果写入寄存器R1;add指令读取寄存器R4和寄存器R5中的值,然后将读取的值相加后把结果写入寄存器R1;上述add指令的目的寄存器R1与sub指令的目的寄存器R1相同,上述sub指令和上述add指令如果乱序执行,若add指令可能在sub指令之前执行,导致寄存器R1最终结果错误,发生了数据冲突。
在现代乱序超标量通用处理器中,通常采用硬件管理的寄存器重命名技术来消除上述两种相关性,例如,上述输出相关的具体示例中,经过重命名之后的指令序列变为如下的形式:
sub R1,R2,R3
add R6,R4,R5
由此可知,经过重命名之后上述sub指令和上述add指令之间的WAW相关消除了,通过上述重命名的方式也可以解决WAR相关。
在现有的使用统一的物理寄存器文件进行寄存器重命名的方案中,处理器中实际存在的寄存器(物理寄存器)个数要多于指令集中定义的通用寄存器(逻辑寄存器)个数,处理器在重命名阶段可将指令集中的逻辑寄存器映射到物理寄存器,以解决反相关和输出相关的问题。以及,在使用统一的物理寄存器文件进行寄存器重命名的方案中,通过重命名映射表(Mapping Table)记录逻辑寄存器与物理寄存器之间的映射关系,通过寄存器空闲列表(Register Free List)记录物理寄存器是否处于空闲状态,通过忙表(Busy Table)记录物理寄存器中的数据是否就绪,而且现有的物理寄存器对应的忙表(Busy Table)每一项只有1位,该1位中的信息用于表示整个物理寄存器中的数据是否就绪。
为满足人工智能应用对矩阵运算高算力的需求,各主流指令集架构先后添加了矩阵指令扩展,这些新增的矩阵指令扩展中引入了矩阵寄存器(即二维寄存器),与通用寄存器相比,所述矩阵寄存器包含行和列两个维度,矩阵寄存器支持指令在行和列两个方向以切片的方式执行读取和写入操作。但是由于每个物理寄存器对应的Busy Table只有1位状态位来表示整个寄存器是否就绪,因此,矩阵寄存器只能作为整体使用,无法体现矩阵寄存器的各个切片的就绪状态,可能导致矩阵指令等待发射的时间变长,增加了矩阵指令的发射延迟和执行周期,进而影响处理器性能。
例如,矩阵指令A1按照行方向将数据写入矩阵寄存器t0中的第1行和第2行,矩阵指令B1按照行方向读取矩阵寄存器t0中的第5行的数据,现有Busy Table只有1位状态位,则在矩阵指令A1执行过程中,Busy Table中矩阵寄存器t0的状态位为1(表示该矩阵寄存器t0中的数据未就绪),此时,虽然矩阵指令B1在矩阵寄存器t0中的数据已经就绪,但是仍不能发射去执行,直到Busy Table中矩阵寄存器t0的状态位为0(表示该矩阵寄存器t0中的数据已就绪)后才可以发射。因此,需要等待整个寄存器就绪后其他指令才可发射并执行,增加了矩阵指令的发射延迟和指令执行周期。
综上所述,如何减小矩阵指令的发射延迟和执行周期,提高每周期执行指令数IPC性能,是目前需要解决的问题。
本发明实施例中,为了解决上述问题,提出了一种RISC-V矩阵指令的寄存器重命名方法,具体如图4所示,图4是本发明实施例的一种RISC-V矩阵指令的寄存器重命名方法流程图,具体包括:
步骤400、获取物理寄存器的忙表,所述忙表中包括所述物理寄存器的方向位和切片向量位,其中,所述物理寄存器为包括多个切片的二维寄存器;所述方向位表示所述物理寄存器当前切片操作的方向,所述切片向量位表示所述物理寄存器的所述多个切片的就绪状态。
在本实施例中,物理寄存器为二维寄存器,获取的所述忙表包括多个二维寄存器的状态信息,进一步,通过忙表中二维寄存器的方向位可确定当前是在对该二维寄存器进行行操作或是列操作,通过忙表中二维寄存器的切片向量位可确定该二维寄存器的每个切片是否就绪。其中,二维寄存器的切片可以由二维寄存器的一行或多行组成,也可以由二维寄存器的一列或多列组成。
在一种可能的实现方式中,所述方向位为1位。在本实施例中,二维寄存器的操作方向包括行和列两个方向,例如可通过将方向位置0、1来分别表示,即当方向位置0时,表示物理寄存器当前切片操作的方向为行方向,当方向位置1时,表示物理寄存器当前切片操作的方向为列方向。此处仅为示例性说明,方向位的数值表示可根据实际情况确定,本发明实施例对其不做限定。
所述物理寄存器的切片向量位的位宽取二维寄存器在行和列两个方向的切片数量的最大值,例如,假设二维寄存器在行方向的切片数据为4,且该二维寄存器在列方向的切片数据为6,则物理寄存器的切片向量位宽为6,该物理寄存器的切片向量位在表示行切片时,只有低4位是有效的。如果物理寄存器在行方向和列方向的切片数据相同,则该物理寄存器的切片向量位在表示行切片和列切片的状态时,其位宽可保持不变。以及,切片向量位中的每一位记录对应切片的就绪状态,例如0表示该切片中的数据已经就绪;1表示该切片在等待指令写回执行结果,数据尚不可用。此处仅为示例性说明,切片向量位的数值表示可根据实际情况确定,本发明实施例对其不做限定。
在一种可能的实现方式中,所述忙表还包括二维寄存器的标识,便于在忙表中查找对应的信息,该标识可以为名称或者编号等。
示例性的,如图5所示,假设某一个二维寄存器的编号为1,所述忙表中包括所述编号为1的二维寄存器的的方向位为1,表示所述编号为1的二维寄存器按照列方向进行切片操作;假设该二维寄存器在列方向包括4个切片,在所述图5中,所述切片位向量为1100,表示所述编号为1的二维寄存器在列方向的切片1和切片2中的数据已就绪,在列方向切片3和切片4中的数据未就绪。因此,由图5可知,编号为1的二维寄存器的在列方向的切片1和切片2为已就绪状态,在列方向的切片3和切片4为未就绪状态。
步骤401、响应于矩阵指令的源逻辑寄存器为二维寄存器,确定所述源逻辑寄存器对应的第一物理寄存器;在所述忙表中获取所述第一物理寄存器的方向位和切片向量位;响应于所述矩阵指令对所述第一物理寄存器的切片操作的方向与所述第一物理寄存器的方向位相同,将所述第一物理寄存器的切片向量位分发到发射队列,其中,所述发射队列中包括所述矩阵指令的至少一个微码,每个微码携带与所述微码对应的所述切片向量位中一位。物理寄存器的切片向量位中的每一位对应一个切片,以及矩阵指令每个微码对应一个要操作的切片,因此将第一物理寄存器的切片向量位分发到发射队列后,矩阵指令的每个微码携带有切片向量位的对应位,使得微码通过携带的该对应位确定该微码要操作的切片的就绪状态。以及,发射队列用于保存待执行的指令或指令的微码。
矩阵指令可按照行和列两个方向对二维寄存器的一个或多个切片进行操作。在本实施例中,如果矩阵指令对二维寄存器的多个切片进行操作,可按照切片的粒度将一条矩阵指令拆分为多个微码(Micro-Op),每一个微码对应一个切片的操作。
由于忙表中记录了二维寄存器中各个切片的就绪状态,因此可根据各个切片的就绪状态发射对应的微码,而无需等待矩阵指令对应的所有切片处于就绪状态时,才发射该矩阵指令,进而有效减少了矩阵指令的发射延迟。
在一种可能的实现方式中,在译码阶段,可得到矩阵指令的指令相关信息,该指令相关信息包括:指令对二维寄存器操作的方向,源逻辑寄存器、目的逻辑寄存器等信息。
在一种可能的实现方式中,所述确定所述源逻辑寄存器对应的第一物理寄存器,包括:获取重命名映射表;其中,所述重命名映射表中包括逻辑寄存器和物理寄存器之间的映射关系;在所述重命名映射表中查找所述源逻辑寄存器对应的第一物理寄存器。
在一种可能的实现方式中,所述重命名映射表中包括所述物理寄存器的编号;所述确定所述源逻辑寄存器对应的第一物理寄存器,包括:在所述重命名映射表中查找所述源逻辑寄存器对应的第一物理寄存器的编号;根据所述编号在所述忙表中获取所述第一物理寄存器的方向位和切片向量位。
举例说明,假设所述重命名映射表(Mapping Table)如下表1所示:
假设,所述源逻辑寄存器为t2,根据所述重命名映射表确定对应的第一物理寄存器的编号为2,根据所述编号2查找如图5所示的忙表,确定所述编号2对应的方向位和切片向量位。
在一种可能的实现方式中,所述发射队列中包括所述矩阵指令的至少一个微码,每个微码携带与所述微码对应的所述切片向量位中一位。例如,所述发射队列中包括所述矩阵指令的4个微码,所述切片向量位为1100,则所述第一个微码携带所述切片向量位中从后向前方向的第一个0,所述第二个微码携带所述切片向量位中从后向前方向的第二个0,所述第三个微码携带所述切片向量位中从后向前方向的第一个1,所述第四个微码携带所述切片向量位中从后向前方向的第二个1。
在一种可能的实现方式中,该方法还包括:响应于所述矩阵指令对所述第一物理寄存器的切片操作的方向与所述第一物理寄存器的方向位不同,将所述第一物理寄存器的切片向量位全部变更为未就绪状态;将变更后的所述第一物理寄存器的切片向量位分发到所述矩阵指令的发射队列。如果矩阵指令对物理寄存器的操作方向与物理寄存器当前切片操作的方向不同,会导致切片交叉的情况,因此必须等待当前操作都完成之后,即矩阵指令对应的所有切片都就绪后,才能发射该矩阵指令。通过该方式,可避免指令之间由于切片交叉导致的数据依赖的问题。
举例说明,假设切片向量位中1表示切片为未就绪状态,0表示切片为已就绪状态,若所述矩阵指令对所述第一物理寄存器的切片操作的方向为行,但所述第一物理寄存器的方向位为1(所述1表示寄存器当前切片操作的方向为列),即所述矩阵指令对所述第一物理寄存器的切片操作的方向与所述第一物理寄存器的方向位不同,若原来所述第一物理寄存器的切片向量位为0001,则更新后的所述第一物理寄存器的切片向量位为1111,并将变更后的所述第一物理寄存器的切片向量位1111分发到所述矩阵指令的发射队列,即每个微码分发一个其对应的切片向量位1。
步骤402、响应于矩阵指令的目的逻辑寄存器为二维寄存器,确定空闲的第二物理寄存器分配给所述目的逻辑寄存器;根据所述矩阵指令变更所述忙表中所述第二物理寄存器的方向位和切片向量位。
在一种可能的实现方式中,所述确定空闲的第二物理寄存器分配给所述目的逻辑寄存器,包括:获取寄存器空闲列表;在寄存器空闲列表中选择空闲的第二物理寄存器分配给所述目的逻辑寄存器,并变更所述寄存器空闲列表中所述第二物理寄存器的空闲状态。
所述寄存器空闲列表(Register Free List)用于记录物理寄存器是否处于空闲状态,假设所述寄存器空闲列表如下表2所示:
表2
物理寄存器 状态指示
1 空闲
2 空闲
3 占用
4 空闲
上表2中,物理寄存器1、物理寄存器2和物理寄存器4为空闲状态,在寄存器空闲列表中选择空闲的第二物理寄存器分配给所述目的逻辑寄存器,假设,选择物理寄存器1作为第二物理寄存器分配给所述目的逻辑寄存器,将所述物理寄存器1的状态指示更新为占用,更新后的寄存器空闲列表具体如下表3所示:
表3
物理寄存器 状态指示
1 占用
2 空闲
3 占用
4 空闲
所述忙表(Busy Table)用于记录物理寄存器中的数据是否就绪。在一种可能实现的方式中,如果当前物理寄存器1、物理寄存器2和物理寄存器4为空闲状态,只有物理寄存器3为占用状态,则忙表中只有物理寄存器3的就绪信息,忙表如下表4所示:
表4
在其他一种可能实现的方式中,忙表中也可以将空闲的物理寄存器1、物理寄存器2和物理寄存器4的方向位和切片位向量置空。
进一步,如果在将物理寄存器1作为第二物理寄存器分配给矩阵指令的目的逻辑寄存器后,将寄存器空闲列表中物理寄存器的状态指示变更,以及,根据矩阵指令对物理寄存器1(即第二物理寄存器)的操作切片和操作方向,变更所述忙表中物理寄存器1的方向位和切片向量位。例如,矩阵指令对物理寄存器1的操作方向为列方向(假设1表示寄存器操作的方向为列),物理寄存器1在列方向的切片数据为6,以及矩阵指令对物理寄存器1的列切片1和列切片2进行操作,则将物理寄存器1作为第二物理寄存器分配给所述目的逻辑寄存器后,变更后的忙表如下表5所示:
表5
物理寄存器标识 方向位 切片位向量
3 0 1100
1 1 000011
在一种可能的实现方式中,所述步骤401或402之后,还包括如下步骤,具体如图6所示,图6是本发明实施例的另一种RISC-V矩阵指令的寄存器重命名方法流程图,具体包括:
步骤403、响应于所述第一物理寄存器的切片向量位中任一位表示的对应切片为已就绪状态,在所述发射队列中发射所述切片向量位中任一位对应的微码。
假设,矩阵指令A的译码为:mop_h t1,t0,其中,所述m表示矩阵指令,op表示操作码,h表示对二维寄存器的操作方向,t1表示目的逻辑寄存器,t0表示源逻辑寄存器,且该t0为二维寄存器;如果该矩阵指令A对t0的4个切片进行操作,则将矩阵指令A被拆分为4个微码Micro-Ops,分别作用于t0的4个切片h_slice0至h_slice3,Micro-Ops包括:
mop_h t1_h_slice0,t0_h_slice0;
mop_h t1_h_slice1,t0_h_slice1;
mop_h t1_h_slice2,t0_h_slice2;
mop_h t1_h_slice3,t0_h_slice3。
Busy Table中0表示已就绪状态,1表示未就绪状态,由于t0有4个切片,BusyTable中t0的切片位向量为1000,表示切片h_slice0至h_slice2当前都已经就绪,但h_slice3未准备就绪,则在所述发射队列中发射h_slice0到h_slice2对应的微码,h_slice3对应的微码mop_h t1_h_slice3,t0_h_slice3暂时不发射。
在一种可能的实现方式中,所述步骤400之前,还包括如下步骤,具体如图7所示,图7是本发明实施例的另一种RISC-V矩阵指令的寄存器重命名方法流程图,具体包括:
步骤404、获取矩阵指令。
具体的,所述矩阵指令为二维矩阵指令。
步骤405、按照切片的粒度对所述矩阵指令进行拆分,得到至少一个微码;其中,所述微码用于操作所述物理寄存器中的一个切片。
例如,假设所述矩阵指令对二维寄存器的4个切片进行操作,将矩阵指令进行拆分可以得到4个微码,每个微码用于操作所述物理寄存器中的一个切片,所述物理寄存器一共被分为4个切片,此处仅为示例性说明,具体拆分为多少个微码根据实际情况确定,本发明实施例对其不做限定。
本发明实施例中,由于Busy Table中包括方向位和向量切片位,可以区分矩阵寄存器中各个切片的就绪状态,将一个矩阵指令拆分为多个微码后,每个微码在其操作的切片就绪后即可发射并执行,无需等待整个寄存器就绪才发射执行该矩阵指令,从而减少了矩阵指令的发射延迟和指令执行周期,提升了处理器执行矩阵指令的性能表现。
在一种可能的实现方式中,所述步骤403之后,还包括如下步骤,具体如图8所示,图8是本发明实施例的另一种RISC-V矩阵指令的寄存器重命名方法流程图,具体包括:
步骤406、在写回阶段,将忙表中所述微码对应的第二物理寄存器的向量切片位的对应位设置为已就绪状态。
在写回阶段,表示该微码已经执行完成,则该微码对应的寄存器的切片中数据已经执行完成,则该切片即可为已就绪。通过步骤406,可实时更新每个寄存器中的每个切片的就绪状态,以及时发射其他指令或其他指令的微码。
例如,将忙表中微码mop_h t1_h_slice3,t0_h_slice3对应的第二物理寄存器的向量切片位的对应位由未就绪状态设置为已就绪状态,即将h_slice3对应的1修改为0。
步骤407、响应于所述微码对应的第二物理寄存器的向量切片位的对应位设置为已就绪状态,在所述发射队列中发射所述微码。
具体的,由于所述微码对应的第二物理寄存器的向量切片位的对应位设置为已就绪状态,即将原来的“busy”状态变为“ready”状态,然后在所述发射队列中发射所述微码。
图9是本发明实施例的RISC-V矩阵指令的寄存器重命名装置示意图。如图9所示,本实施例的装置包括获取单元901和确定单元902;
其中,所述获取单元901,用于获取物理寄存器的忙表,所述忙表中包括所述物理寄存器的方向位和切片向量位,其中,所述物理寄存器为包括多个切片的二维寄存器;所述方向位表示所述物理寄存器当前切片操作的方向,所述切片向量位表示所述物理寄存器的所述多个切片的就绪状态;所述确定单元902,响应于矩阵指令的源逻辑寄存器为二维寄存器,用于确定所述源逻辑寄存器对应的第一物理寄存器;在所述忙表中获取所述第一物理寄存器的方向位和切片向量位;响应于所述矩阵指令对所述第一物理寄存器的切片操作的方向与所述第一物理寄存器的方向位相同,将所述第一物理寄存器的切片向量位分发到发射队列,其中,所述发射队列中包括所述矩阵指令的至少一个微码,每个微码携带与所述微码对应的所述切片向量位中一位;所述确定单元1702还用于,响应于矩阵指令的目的逻辑寄存器为二维寄存器,确定空闲的第二物理寄存器分配给所述目的逻辑寄存器;根据所述矩阵指令变更所述忙表中所述第二物理寄存器的方向位和切片向量位。
进一步的,该装置还包括:发射单元,响应于所述第一物理寄存器的切片向量位中任一位表示的对应切片为已就绪状态,用于在所述发射队列中发射所述切片向量位中任一位对应的微码。
进一步的,该装置还包括处理单元,响应于所述矩阵指令对所述第一物理寄存器的切片操作的方向与所述第一物理寄存器的方向位不同,用于将所述第一物理寄存器的切片向量位全部变更为未就绪状态;所述处理单元还用于,将变更后的所述第一物理寄存器的切片向量位分发到所述发射队列。
进一步的,所述获取单元还用于:
获取矩阵指令;
所述处理单元还用于:按照切片的粒度对所述矩阵指令进行拆分,得到至少一个微码;其中,所述微码用于操作所述物理寄存器中的一个切片。
进一步的,所述获取单元具体用于:
获取重命名映射表;其中,所述重命名映射表中包括逻辑寄存器和物理寄存器之间的映射关系;
在所述重命名映射表中查找所述源逻辑寄存器对应的第一物理寄存器。
进一步的,所述重命名映射表中包括所述物理寄存器的编号;所述获取单元具体用于:
在所述重命名映射表中查找所述源逻辑寄存器对应的第一物理寄存器的编号;根据所述编号在所述忙表中获取所述第一物理寄存器的方向位和切片向量位。
进一步的,所述获取单元具体用于:获取寄存器空闲列表;
在寄存器空闲列表中选择空闲的第二物理寄存器分配给所述目的逻辑寄存器,并变更所述寄存器空闲列表中所述第二物理寄存器的空闲状态。
进一步的,所述处理单元还用于:在写回阶段,将忙表中所述微码对应的第二物理寄存器的向量切片位的对应位设置为已就绪状态;
所述发射单元还用于:响应于所述微码对应的第二物理寄存器的向量切片位的对应位设置为已就绪状态,在所述发射队列中发射所述微码。
本发明实施例中,还提供了一种计算机程序指令,所述计算机程序指令在被处理器执行时实现上述实施例中任一项所述的方法。
本发明实施例中,还提供了一种计算机可读存储介质,其上存储计算机程序指令,所述计算机程序指令在被处理器执行时实现上述实施例中任一项所述的方法。
本发明实施例提供了一种芯片,包括存储器和处理核,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理核执行以实现上述实施例中任一项所述的方法。
本发明实施例提供了一种板卡,所述板卡上包括所述芯片。
本发明实施例提供了一种服务器,所述服务器上包括所述板卡。
如本领域技术人员将意识到的,本发明实施例的各个方面可以被实现为系统、方法或计算机程序产品。因此,本发明实施例的各个方面可以采取如下形式:完全硬件实施方式、完全软件实施方式(包括固件、常驻软件、微代码等)或者在本文中通常可以都称为“电路”、“模块”或“系统”的将软件方面与硬件方面相结合的实施方式。此外,本发明实施例的各个方面可以采取如下形式:在一个或多个计算机可读介质中实现的计算机程序产品,计算机可读介质具有在其上实现的计算机可读程序代码。
可以利用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是如(但不限于)电子的、磁的、光学的、电磁的、红外的或半导体系统、设备或装置,或者前述的任意适当的组合。计算机可读存储介质的更具体的示例(非穷尽列举)将包括以下各项:具有一根或多根电线的电气连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪速存储器)、光纤、便携式光盘只读存储器(CD-ROM)、光存储装置、磁存储装置或前述的任意适当的组合。在本发明实施例的上下文中,计算机可读存储介质可以为能够包含或存储由指令执行系统、设备或装置使用的程序或结合指令执行系统、设备或装置使用的程序的任意有形介质。
计算机可读信号介质可以包括传播的数据信号,所述传播的数据信号具有在其中如在基带中或作为载波的一部分实现的计算机可读程序代码。这样的传播的信号可以采用多种形式中的任何形式,包括但不限于:电磁的、光学的或其任何适当的组合。计算机可读信号介质可以是以下任意计算机可读介质:不是计算机可读存储介质,并且可以对由指令执行系统、设备或装置使用的或结合指令执行系统、设备或装置使用的程序进行通信、传播或传输。
可以使用包括但不限于无线、有线、光纤电缆、RF等或前述的任意适当组合的任意合适的介质来传送实现在计算机可读介质上的程序代码。
用于执行针对本发明实施例各方面的操作的计算机程序代码可以以一种或多种编程语言的任意组合来编写,所述编程语言包括:面向对象的编程语言如Java、Smalltalk、C++等;以及常规过程编程语言如“C”编程语言或类似的编程语言。程序代码可以作为独立软件包完全地在用户计算机上、部分地在用户计算机上执行;部分地在用户计算机上且部分地在远程计算机上执行;或者完全地在远程计算机或服务器上执行。在后一种情况下,可以将远程计算机通过包括局域网(LAN)或广域网(WAN)的任意类型的网络连接至用户计算机,或者可以与外部计算机进行连接(例如通过使用因特网服务供应商的因特网)。
上述根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图图例和/或框图描述了本发明实施例的各个方面。将要理解的是,流程图图例和/或框图的每个块以及流程图图例和/或框图中的块的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供至通用计算机、专用计算机或其它可编程数据处理设备的处理器,以产生机器,使得(经由计算机或其它可编程数据处理设备的处理器执行的)指令创建用于实现流程图和/或框图块或块中指定的功能/动作的装置。
还可以将这些计算机程序指令存储在可以指导计算机、其它可编程数据处理设备或其它装置以特定方式运行的计算机可读介质中,使得在计算机可读介质中存储的指令产生包括实现在流程图和/或框图块或块中指定的功能/动作的指令的制品。
计算机程序指令还可以被加载至计算机、其它可编程数据处理设备或其它装置上,以使在计算机、其它可编程设备或其它装置上执行一系列可操作步骤来产生计算机实现的过程,使得在计算机或其它可编程设备上执行的指令提供用于实现在流程图和/或框图块或块中指定的功能/动作的过程。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种RISC-V矩阵指令的寄存器重命名方法,其特征在于,该方法包括:
获取物理寄存器的忙表,所述忙表中包括所述物理寄存器的方向位和切片向量位,其中,所述物理寄存器为包括多个切片的二维寄存器;所述方向位表示所述物理寄存器当前切片操作的方向,所述切片向量位表示所述物理寄存器的所述多个切片的就绪状态;
响应于矩阵指令的源逻辑寄存器为二维寄存器,确定所述源逻辑寄存器对应的第一物理寄存器;在所述忙表中获取所述第一物理寄存器的方向位和切片向量位;响应于所述矩阵指令对所述第一物理寄存器的切片操作的方向与所述第一物理寄存器的方向位相同,将所述第一物理寄存器的切片向量位分发到发射队列,其中,所述发射队列中包括所述矩阵指令的至少一个微码,每个微码携带与所述微码对应的所述切片向量位中一位;
响应于矩阵指令的目的逻辑寄存器为二维寄存器,确定空闲的第二物理寄存器分配给所述目的逻辑寄存器;根据所述矩阵指令变更所述忙表中所述第二物理寄存器的方向位和切片向量位。
2.如权利要求1所述的方法,其特征在于,在将所述第一物理寄存器的切片向量位分发到发射队列之后,该方法还包括:
响应于所述第一物理寄存器的切片向量位中任一位表示的对应切片为已就绪状态,在所述发射队列中发射所述切片向量位中任一位对应的微码。
3.如权利要求1或2所述的方法,其特征在于,该方法还包括:
响应于所述矩阵指令对所述第一物理寄存器的切片操作的方向与所述第一物理寄存器的方向位不同,将所述第一物理寄存器的切片向量位全部变更为未就绪状态;
将变更后的所述第一物理寄存器的切片向量位分发到所述发射队列。
4.如权利要求1-3任一项所述的方法,其特征在于,该方法还包括:
获取矩阵指令;
按照切片的粒度对所述矩阵指令进行拆分,得到至少一个微码;其中,所述微码用于操作所述物理寄存器中的一个切片。
5.如权利要求1-4任一项所述的方法,其特征在于,所述确定所述源逻辑寄存器对应的第一物理寄存器,包括:
获取重命名映射表;其中,所述重命名映射表中包括逻辑寄存器和物理寄存器之间的映射关系;
在所述重命名映射表中查找所述源逻辑寄存器对应的第一物理寄存器。
6.如权利要求5所述的方法,其特征在于,所述重命名映射表中包括所述物理寄存器的编号;
所述确定所述源逻辑寄存器对应的第一物理寄存器,包括:
在所述重命名映射表中查找所述源逻辑寄存器对应的第一物理寄存器的编号;根据所述编号在所述忙表中获取所述第一物理寄存器的方向位和切片向量位。
7.如权利要求1-6任一项所述的方法,其特征在于,所述确定空闲的第二物理寄存器分配给所述目的逻辑寄存器,包括:
获取寄存器空闲列表;
在寄存器空闲列表中选择空闲的第二物理寄存器分配给所述目的逻辑寄存器,并变更所述寄存器空闲列表中所述第二物理寄存器的空闲状态。
8.如权利要求1-7任一项所述的方法,其特征在于,该方法还包括:
在写回阶段,将忙表中所述微码对应的第二物理寄存器的向量切片位的对应位设置为已就绪状态;
响应于所述微码对应的第二物理寄存器的向量切片位的对应位设置为已就绪状态,在所述发射队列中发射所述微码。
9.一种矩阵指令处理装置,其特征在于,该装置包括:
获取单元,用于获取物理寄存器的忙表,所述忙表中包括所述物理寄存器的方向位和切片向量位,其中,所述物理寄存器为包括多个切片的二维寄存器;所述方向位表示所述物理寄存器当前切片操作的方向,所述切片向量位表示所述物理寄存器的所述多个切片的就绪状态;
确定单元,响应于矩阵指令的源逻辑寄存器为二维寄存器,用于确定所述源逻辑寄存器对应的第一物理寄存器;在所述忙表中获取所述第一物理寄存器的方向位和切片向量位;响应于所述矩阵指令对所述第一物理寄存器的切片操作的方向与所述第一物理寄存器的方向位相同,将所述第一物理寄存器的切片向量位分发到发射队列,其中,所述发射队列中包括所述矩阵指令的至少一个微码,每个微码携带与所述微码对应的所述切片向量位中一位;
所述确定单元还用于,响应于矩阵指令的目的逻辑寄存器为二维寄存器,确定空闲的第二物理寄存器分配给所述目的逻辑寄存器;根据所述矩阵指令变更所述忙表中所述第二物理寄存器的方向位和切片向量位。
10.一种计算机程序指令,其特征在于,所述计算机程序指令在被处理器执行时实现如权利要求1-8中任一项所述的方法。
CN202211097032.9A 2022-09-08 2022-09-08 一种risc-v矩阵指令的寄存器重命名方法和装置 Pending CN117707623A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211097032.9A CN117707623A (zh) 2022-09-08 2022-09-08 一种risc-v矩阵指令的寄存器重命名方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211097032.9A CN117707623A (zh) 2022-09-08 2022-09-08 一种risc-v矩阵指令的寄存器重命名方法和装置

Publications (1)

Publication Number Publication Date
CN117707623A true CN117707623A (zh) 2024-03-15

Family

ID=90161206

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211097032.9A Pending CN117707623A (zh) 2022-09-08 2022-09-08 一种risc-v矩阵指令的寄存器重命名方法和装置

Country Status (1)

Country Link
CN (1) CN117707623A (zh)

Similar Documents

Publication Publication Date Title
US10877766B2 (en) Embedded scheduling of hardware resources for hardware acceleration
US10564978B2 (en) Operation of a multi-slice processor with an expanded merge fetching queue
US9940133B2 (en) Operation of a multi-slice processor implementing simultaneous two-target loads and stores
JP7088897B2 (ja) データアクセス方法、データアクセス装置、機器及び記憶媒体
US9529651B2 (en) Apparatus and method for executing agent
US10289419B2 (en) Method and apparatus for sorting elements in hardware structures
US20080140691A1 (en) Method, Device and Computer Program Product for Optimizing File Placement in a Storage System
US11868780B2 (en) Central processor-coprocessor synchronization
CN116880908B (zh) 一种指令处理方法、装置、电子设备及可读存储介质
CN105164637A (zh) 对管线化的软件的动态优化
US20140095814A1 (en) Memory Renaming Mechanism in Microarchitecture
CN114968373A (zh) 指令分派方法、装置、电子设备及计算机可读存储介质
CN104216681A (zh) 一种cpu指令处理方法和处理器
CN118295710A (zh) 多端口发射的空间回收方法、装置、设备和介质
CN114489475A (zh) 分布式存储系统及其数据存储方法
CN116257350B (zh) 一种针对risc-v矢量寄存器的重命名分组装置
CN114756287B (zh) 一种重排序缓冲区的数据处理方法、装置及存储介质
CN117707623A (zh) 一种risc-v矩阵指令的寄存器重命名方法和装置
CN116991480A (zh) 指令处理方法、装置、电路、发射器、芯片、介质及产品
CN109683959B (zh) 处理器的指令执行方法及其处理器
US10379776B2 (en) Operation interlocking in an address-sliced cache system
JP6473023B2 (ja) 性能評価モジュール及びこれを組み込んだ半導体集積回路
US9047092B2 (en) Resource management within a load store unit
US20230068640A1 (en) Dependency skipping execution with auto-finish for a microprocessor
CN117667200A (zh) 一种risc-v矩阵运算指令的依赖检测方法和装置

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