CN116414454A - 基于risc-v指令集的向量指令处理方法、装置和可读存储介质 - Google Patents

基于risc-v指令集的向量指令处理方法、装置和可读存储介质 Download PDF

Info

Publication number
CN116414454A
CN116414454A CN202111666875.1A CN202111666875A CN116414454A CN 116414454 A CN116414454 A CN 116414454A CN 202111666875 A CN202111666875 A CN 202111666875A CN 116414454 A CN116414454 A CN 116414454A
Authority
CN
China
Prior art keywords
instruction
configuration
vector
file entry
instructions
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
CN202111666875.1A
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 CN202111666875.1A priority Critical patent/CN116414454A/zh
Publication of CN116414454A publication Critical patent/CN116414454A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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指令集的向量指令处理方法、装置和可读存储介质。本发明实施例执行配置指令,获取配置指令的配置参数;根据标签索引将获取的配置参数更新至配置指令对应的文件条目中,同时将文件条目中的目的寄存器设置为准备状态,配置指令的目的寄存储器被设置为所述配置指令对应的向量指令的第一源寄存器;响应于所述第一源寄存器与所述向量指令的其他源寄存器都为准备状态,根据所述向量指令中携带的标签索引获取到所述文件条目中的配置参数;执行所述向量指令。通过上述方法,可以保证在向量指令乱序执行的情况下,根据标签索引准确的获取其对应的配置指令的配置参数Vtype和Vl,保证向量处理器处理向量指令时处理结果的准确性。

Description

基于RISC-V指令集的向量指令处理方法、装置和可读存储 介质
技术领域
本发明涉及计算机技术领域,具体涉及一种基于RISC-V指令集的向量指令处理方法、装置和可读存储介质。
背景技术
第五代精简指令集计算机RISC-V(Reduced Instruction Set Computer-FIVE)结合了x86和ARM指令集的优点,RISC-V中指令简单、指令条数少、代码小并且功耗低,因此,RISC-V的使用范围越来越广泛。
RISC-V包括现有基本指令集和扩展指令集,其中,所述基本指令集包括RV32I,RV32E,RV64I和RV128I,所述扩展指令集包括M,A,F,D,C和V扩展;所述V扩展即向量扩展指令集(RISC-V Vector);所述RISC-V通过Vector处理器实现,所述向量扩展指令集中包括配置(Vset)指令和向量(Vector)指令,其中,所述Vset指令为所述Vector指令配置执行时需要的Vtype和Vl两个参数,每一条Vector指令的执行必须依赖与其对应的Vset指令的配置结果。
现有技术中,Vector指令是顺序执行的,即只有Vector指令确定必须提交的时候才能执行,但是在顺序执行时,必须等到前一条Vector指令执行完成后才能执行下一条Vector指令,对于不依赖前面Vector指令的执行结果的Vector指令来说,也需要长时间的进行等待,影响Vector处理器的性能,因此,可以将不依赖前面Vector指令的执行结果的Vector指令提前执行,提升Vector处理器的性能。但是当Vector指令乱序执行的时候,其对应的Vset指令有可能也乱序执行了,此时在Vset指令之后的Vector指令的得到的配置参数Vtype和Vl有可能是错误的,是其他Vset指令的配置参数。
综上所述,如何保证在Vector指令乱序执行的情况下,准确的获取其对应的Vset指令的配置参数Vtype和Vl,是目前需要解决的问题。
发明内容
有鉴于此,本发明实施例提供了一种基于RISC-V指令集的向量指令处理方法、装置和可读存储介质,可以保证在Vector指令乱序执行的情况下,准确的获取其对应的Vset指令的配置参数Vtype和Vl,保证Vector处理器处理结果的准确性。
第一方面,本发明实施例提供了一种基于RISC-V指令集的向量指令处理方法,该方法包括:
执行配置指令,获取所述配置指令的配置参数,其中,所述配置指令中携带标签索引;根据所述标签索引将获取的所述配置参数更新至所述配置指令对应的文件条目中,同时将所述文件条目中的目的寄存器设置为准备状态,其中,所述配置指令的目的寄存储器被设置为所述配置指令对应的向量指令的第一源寄存器;响应于所述第一源寄存器与所述向量指令的其他源寄存器都为准备状态,根据所述向量指令中携带的标签索引获取到所述文件条目中的配置参数,其中,所述向量指令中携带的标签索引与所述配置指令中携带的标签索引相同;执行所述向量指令。
可选的,所述文件条目中还包括有效性指示,在根据所述标签索引将获取的所述配置参数更新至所述配置指令对应的文件条目中之后,该方法还包括:
将所述文件条目中的有效性指示标记为有效,其中,所述有效性指示用于表示所述文件条目中的配置参数是否有效。
可选的,该方法还包括:
获取指令数据;
在译码阶段,响应于所述指令数据为所述配置指令,在配置缓存中为所述配置指令分配对应的文件条目,并生成标签索引;
将所述标签索引添加到所述配置指令。
可选的,该方法还包括:
将所述配置指令的目的寄存器写入所述文件条目中,并将所述文件条目中的有效性指示标记为无效。
可选的,该方法还包括:
将所述配置指令对应的所述文件条目写入配置缓存的尾部。
可选的,该方法还包括:
在译码阶段,响应于所述指令数据为所述向量指令,从所述配置缓存的尾部获取所述文件条目;
响应于所述文件条目中的有效性指示标记为无效,将所述文件条目中的第一源寄存器添加到所述向量指令的源寄存器列表中;
将所述文件条目中的标签索引添加到所述向量指令中。
可选的,该方法还包括:
将译码阶段后的所述向量指令和所述配置指令进行重命名;
完成所述重命名后将所述向量指令和所述配置指令写入重排序缓存ROB中,并根据不同的指令类型将所述向量指令和所述配置指令分发到不同的指令槽中。
可选的,该方法还包括:
响应于任一配置指令移动到所述重排序缓存ROB的头部时,在配置缓存中将所述任一配置指令之前的配置指令所对应的文件条目删除。
可选的,该方法还包括:
响应于接收到清空指令,确定所述清空指令中对应的清空点;
将所述配置缓存中所述清空点之前的文件条目删除。
可选的,所述配置参数包括向量数据类型寄存器和向量元素长度。
可选的,该方法还包括:
响应于执行所述向量指令之前,根据所述向量指令中携带的标签索引查找所述配置指令对应的文件条目;
响应于所述文件条目中有效性指示标记为有效,获取所述文件条目中的配置参数;
根据所述配置参数执行所述向量指令。
第二方面,本发明实施例提供了一种基于RISC-V指令集的向量指令处理装置,该装置包括:
第一执行单元,用于执行配置指令,获取所述配置指令的配置参数,其中,所述配置指令中携带标签索引;
设置单元,用于根据所述标签索引将获取的所述配置参数更新至所述配置指令对应的文件条目中,同时将所述文件条目中的目的寄存器设置为准备状态,其中,所述配置指令的目的寄存储器被设置为所述配置指令对应的向量指令的第一源寄存器;
处理单元,响应于所述第一源寄存器与所述向量指令的其他源寄存器都为准备状态,用于根据所述向量指令中携带的标签索引获取到所述文件条目中的配置参数,其中,所述向量指令中携带的标签索引与所述配置指令中携带的标签索引相同;
第二执行单元,用于执行所述向量指令。
可选的,所述文件条目中还包括有效性指示,在根据所述标签索引将获取的所述配置参数更新至所述配置指令对应的文件条目中之后,所述处理单元还用于:
将所述文件条目中的有效性指示标记为有效,其中,所述有效性指示用于表示所述文件条目中的配置参数是否有效。
可选的,该装置还包括:
获取单元,用于获取指令数据;
所述处理单元还用于,在译码阶段,响应于所述指令数据为所述配置指令,在配置缓存中为所述配置指令分配对应的文件条目,并生成标签索引;
所述处理单元还用于,将所述标签索引添加到所述配置指令。
可选的,所述处理单元还用于:
将所述配置指令的目的寄存器写入所述文件条目中,并将所述文件条目中的有效性指示标记为无效。
可选的,该装置还包括:
写入单元,用于将所述配置指令对应的所述文件条目写入配置缓存的尾部。
可选的,所述获取单元还用于:
在译码阶段,响应于所述指令数据为所述向量指令,从所述配置缓存的尾部获取所述文件条目;
所述处理单元还用于:响应于所述文件条目中的有效性指示标记为无效,将所述文件条目中的第一源寄存器添加到所述向量指令的源寄存器列表中。
可选的,所述处理单元还用于:
将所述文件条目中的标签索引添加到所述向量指令中。
可选的,该装置还包括:
重命名单元,用于将译码阶段后的所述向量指令和所述配置指令进行重命名;
所述处理单元还用于,完成所述重命名后将所述向量指令和所述配置指令写入重排序缓存ROB中,并根据不同的指令类型将所述向量指令和所述配置指令分发到不同的指令槽中。
可选的,该装置还包括:
删除单元,响应于任一配置指令移动到所述重排序缓存ROB的头部时,用于在配置缓存中将所述任一配置指令之前的配置指令所对应的文件条目删除。
可选的,所述接收单元还用于:
响应于接收到清空指令,确定所述清空指令中对应的清空点;
所述删除单元还用于:将所述配置缓存中所述清空点之前的文件条目删除。
可选的,所述配置参数包括向量数据类型寄存器和向量元素长度。
可选的,该装置还包括:
查找单元,响应于执行所述向量指令之前,用于根据所述向量指令中携带的标签索引查找所述配置指令对应的文件条目;
所述获取单元还用于,响应于所述文件条目中有效性指示标记为有效,获取所述文件条目中的配置参数;
所述第二执行单元还用于,根据所述配置参数执行所述向量指令。
第三方面,本发明实施例提供了一种计算机程序指令,所述计算机程序指令在被处理器执行时实现如第一方面或第一方面任一种可能中任一项所述的方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存
储计算机程序指令,所述计算机程序指令在被处理器执行时实现如第一方面或第一方面任一种可能中任一项所述的方法。
第五方面,本发明实施例提供了一种芯片,包括存储器和处理核,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理核执行以实现如第一方面或第一方面任一种可能中任一项所述的方法。
第六方面,本发明实施例提供了一种板卡,所述板卡上包括所述第五方面的芯片。
第七方面,本发明实施例提供了一种服务器,所述服务器上包括所述第六方面的板卡。
本发明实施例通过执行配置指令,获取所述配置指令的配置参数,其中,所述配置指令中携带标签索引;根据所述标签索引将获取的所述配置参数更新至所述配置指令对应的文件条目中,同时将所述文件条目中的目的寄存器设置为准备状态,其中,所述配置指令的目的寄存储器被设置为所述配置指令对应的向量指令的第一源寄存器;响应于所述第一源寄存器与所述向量指令的其他源寄存器都为准备状态,根据所述向量指令中携带的标签索引获取到所述文件条目中的配置参数,其中,所述向量指令中携带的标签索引与所述配置指令中携带的标签索引相同;执行所述向量指令。通过上述方法,可以保证在向量指令乱序执行的情况下,根据标签索引准确的获取其对应的配置Vset指令的配置参数Vtype和Vl,保证向量处理器处理向量指令时处理结果的准确性。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1是本发明实施例的一种基于RISC-V指令集的向量指令处理方法流程图;
图2是本发明实施例的一种配置信息结构示意图;
图3是本发明实施例中一种向量指令对应的寄存器列表示意图;
图4是本发明实施例的另一种基于RISC-V指令集的向量指令处理方法流程图;
图5是本发明实施例的再一种基于RISC-V指令集的向量指令处理方法流程图;
图6是本发明实施例的一种配置指令和向量指令的处理流程示意图;
图7是本发明实施例的一种基于RISC-V指令集的向量指令处理方法流程图;
图8是本发明实施例的一种基于RISC-V指令集的向量指令处理装置示意图。
具体实施方式
以下基于实施例对本发明公开进行描述,但是本发明公开并不仅仅限于这些实施例。在下文对本发明公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明公开。为了避免混淆本发明公开的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
除非上下文明确要求,否则整个申请文件中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本发明公开的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明公开的描述中,除非另有说明,“多个”的含义是两个或两个以上。
现有技术中,RISC-V(Reduced Instruction Set Computer-FIVE)包括现有基本指令集和扩展指令集,其中,所述基本指令集包括RV32I,RV32E,RV64I和RV128I,所述扩展指令集包括M,A,F,D,C和V扩展;以V扩展为例,所述V扩展即向量扩展指令集(RISC-VVector),所述RISC-V通过Vector处理器实现,所述向量扩展指令集中包括Vset指令和Vector指令,其中,所述Vset指令为所述Vector指令配置执行时需要的Vtype和Vl两个参数,其中,每一条Vector指令的执行必须依赖与其对应的Vset指令的配置结果,由于指令是顺序执行的,即每一条Vector指令的执行必须依赖离其最近的一条Vset指令,Vset指令执行完成后,把执行结果Vtype和Vl写入了寄存器,Vector指令在执行的时候直接读取寄存器就能得到正确的配置参数Vtype和Vl;并且,由于Vector指令是顺序执行的,即只有Vector指令确定必须提交的时候才能执行,也就是说,Vector指令只有位于重排序缓存(ReorderBuffer,ROB)头部时,才能将该Vector指令发送到Vector处理器执行。因此,在顺序执行时,必须等到前一条Vector指令执行完成后才能执行下一条Vector指令,对于不依赖前面Vector指令的执行结果的Vector指令来说,也需要长时间的进行等待,影响Vector处理器的性能,因此,可以将不依赖前面Vector指令的执行结果的Vector指令提前执行,提升Vector处理器的性能。但是当Vector指令乱序执行的时候,其对应的配置Vset指令有可能也乱序执行了,此时在配置Vset指令之后的Vector指令的得到的配置参数Vtype和Vl有可能是错误的,是其他配置Vset指令的配置参数,而Vector指令的执行必须依赖于与其对应的Vset指令,因此,如何保证在Vector指令乱序执行的情况下,准确的获取其对应的Vset指令的配置参数Vtype和Vl,是目前需要解决的问题。
本发明实施例中,为了解决上述问题,提出了一种基于RISC-V指令集的向量指令处理方法,具体如图1所示,图1是本发明实施例的一种基于RISC-V指令集的向量指令处理方法流程图,具体包括:
步骤S100、执行配置指令,获取所述配置指令的配置参数,其中,所述配置指令中携带标签索引。
具体的,所述配置参数为向量数据类型寄存器(vector data type register,Vtype)和向量元素长度(vector length,Vl),其中,所述Vtype用于解释向量寄存器文件内容的默认类型。
本发明实施例中,所述标签索引(tag)为译码阶段为所述配置指令生成的唯一索引;并且在译码阶段每个配置指令都会在配置缓存中分配到对应的文件条目,其中,所述文件条目包括的配置信息如图2所述,具体为标签索引tag、目的寄存器rd、Vtype、Vl以及有效性指示valid,其中,所述valid用于表示所述配置参数是否有效,若所述有效性指示标记为有效表明所述配置指令已执行,所述文件条目中的Vtype和Vl已更新,进一步,表明该配置指令对应的Vector指令可获取到有效的Vtype和Vl。
在一种可能的实现方式中,由于在译码阶段,将所述标签索引添加到所述配置指令,因此,在执行配置指令时,根据所述标签索引可以查找到配置缓存中对应的文件条目。
在一种可能的实现方式中,所述配置指令可以为vsetvli、vsetvl、或者vsetivli,本发明实施例中可以选择vsetvli为例。
步骤S101、根据所述标签索引将获取的所述配置参数更新至所述配置指令对应的文件条目中,同时将所述文件条目中的目的寄存器设置为准备状态,其中,所述配置指令的目的寄存储器被设置为所述配置指令对应的向量指令的第一源寄存器。
具体的,根据所述标签索引tag查找到配置缓存中对应的文件条目后,将根据配置指令生成的配置参数Vtype和Vl更新到所述文件条目中相应的位置。在一种可能的实现方式中,将所述文件条目中的有效性指示标记为有效,假设,所述有效性指示用false或ture表示,有效时可以表示为ture,无效时可以表示为false。
并且,配置参数更新后,将目的寄存器rd设置为准备ready状态。
由于已将配置指令的目的寄存器rd添加到其对应向量指令的源寄存器列表,文件条目中的目的寄存器设置为准备状态,表明所述第一源寄存器为准备状态。例如,向量指令A原本有3个源寄存器,在译码阶段,可将该向量指令A对应的配置指令B的目的寄存器添加至该向量指令的源寄存器列表,即添加至列表作为第4个源寄存器(不覆盖原来已经有的源寄存器)。当该配置指令B的目的寄存器的状态为准备状态时,向量指令A的第4个源寄存器的状态也为准备状态。
在一种可能的实现方式中,所述第一源寄存器为向量指令对应的多个寄存器之一,假设,所述向量指令对应的寄存器列表中包括4个寄存器,如图3所示,包括目的寄存器rd1、第二源寄存器rs1和第三源寄存器rs2和第一源寄存器rs3,其中,所述配置指令的目的寄存储器为所述配置指令对应的向量指令中的第一源寄存器,当配置指令的目的寄存器rd设置为准备ready状态时,即第一源寄存器rs3为准备ready状态,具体的,设置所述准备ready状态也称为唤醒(Wake Up)机制。
步骤S102、响应于所述第一源寄存器与所述向量指令的其他源寄存器都为准备状态,根据所述向量指令中携带的标签索引获取到所述文件条目中的配置参数,其中,所述向量指令中携带的标签索引与所述配置指令中携带的标签索引相同。
具体的,当所述向量指令对应的全部寄存器都为准备状态时,说明所述向量指令已经做好了执行的准备,在执行向量指令时需要获取配置参数,因此,要根据所述向量指令中携带的标签索引在配置缓存中查找对应的文件条目中有效性为ture的配置参数。
步骤S103、执行所述向量指令。
具体的,所述向量指令在执行时候需要从配置参数Vtype中解析出寄存器分组Lmul和元素位宽Sew;从配置参数Vl中确定了Vector指令更新的元素个数。
本发明实施例中,可以保证在向量指令乱序执行的情况下,根据标签索引准确的获取其对应的配置Vset指令的配置参数Vtype和Vl,保证向量处理器处理向量指令时处理结果的准确性,不会受到乱序执行的影响。
在一种可能的实现方式中,在步骤S100之前,该方法还包括其他步骤,具体如图4所示,图4是本发明实施例的一种基于RISC-V指令集的向量指令处理方法流程图,具体包括:
步骤S104、获取指令数据。
在一种可能的实现方式中,从指令缓存中获取指令数据,其中,所示指令数据可以为配置指令,也可以为向量指令,本发明实施例对其不做限定。
步骤S105、在译码阶段,响应于所述指令数据为所述配置指令,在配置缓存中为所述配置指令分配对应的文件条目,并生成标签索引。
具体的,将生成的唯一的所述标签索引写入所述文件条目中,同时,将所述配置指令的目的寄存器写入所述文件条目中,并且将所述目的寄存器设置为未执行状态,并将所述文件条目中的有效性指示标记为无效,此时,文件条目中的配置参数Vtype和Vl的位置为空。
步骤S106、将所述标签索引添加到所述配置指令。
在一种可能的实现方式中,将所述标签索引添加到所述配置指令的目的在于执行所述配置指令后,可以根据所述标签索引将生成的配置参数更新到对应的文件条目中。
在一种可能的实现方式中,在步骤S106之后,该方法还包括其他步骤,具体如图5所示,图5是本发明实施例的一种基于RISC-V指令集的向量指令处理方法流程图,具体包括:
步骤S107、将所述配置指令对应的所述文件条目写入配置缓存的尾部。
具体的,所述配置缓存中包括多个文件条目,每个配置指令的文件条目按译码的顺序依次写入所述配置缓存。
步骤S108、在译码阶段,响应于所述指令数据为所述向量指令,从所述配置缓存的尾部获取所述文件条目。
具体的,从所述配置缓存的尾部获取所述文件条目可以保证向量指令获取到的文件条目是离自身最近的一条配置指令对应的配置信息。其中,离向量指令最近的一条配置指令就是这条向量指令归属的配置指令,所以尾部的配置指令的文件条目离当前译码的向量指令最近,该尾部的文件条目中的信息即为当前译码的向量指令所要添加的信息。
步骤S109、响应于所述文件条目中的有效性指示标记为无效,将所述文件条目中的第一源寄存器添加到所述向量指令的源寄存器列表中。通过将所述文件条目中的第一源寄存器添加到所述向量指令的源寄存器列表中,实现了配置指令的目的寄存储器被设置为所述配置指令对应的向量指令的第一源寄存器。
具体的,所述文件条目中的有效性指示标记为无效,说明所述文件条目对应的配置指令还未执行。
在一种可能的实现方式中,若所述文件条目中的有效性指示标记为有效,说明所述文件条目对应的配置指令已执行,则无需将所述文件条目中的第一源寄存器添加到所述向量指令的源寄存器列表中。
步骤S110、将所述文件条目中的标签索引添加到所述向量指令中。
在一种可能的实现方式中,将所述文件条目中的标签索引添加到所述向量指令中的目的在于执行所述向量指令时,可以根据标签索引查找到对应的文件条目中的配置参数,使执行所述向量指令时,不会使用到错的配置参数,保障了向量处理器处理向量指令时的准确性。
在一种可能的实现方式中,译码阶段后,该方法还包括:将译码阶段后的所述向量指令和所述配置指令进行重命名;完成所述重命名后将所述向量指令和所述配置指令写入重排序缓存ROB中,并根据不同的指令类型将所述向量指令和所述配置指令分发到不同的指令槽中。
可选的,所述重命名后将所述向量指令和所述配置指令写入重排序缓存ROB中时的写入顺序,只是为了对所述向量指令和所述配置指令进行记录,并不影响执行的顺序,也不代表执行的顺序。
可选地,根据不同的指令类型将所述向量指令和所述配置指令分发到不同的指令槽中,例如,配置指令vsetvli、向量指令1和向量指令2分发到不同的指令槽中,待所述配置指令vsetvli、向量指令1和向量指令2分别对应的寄存器都为准备状态后,就可以发送到执行单元进行执行,若向量指令1和向量指令2没有依赖关系,两个向量指令也可以同时执行,本发明实施例对其不做限定。
在一种可能的实现方式中,该方法还包括:响应于任一配置指令移动到所述重排序缓存ROB的头部时,在配置缓存中将所述任一配置指令之前的配置指令所对应的文件条目删除。
具体的,将已完成的文件条目删除可以清除配置缓存中无用的缓存占用。
在一种可能的实现方式中,该方法还包括:响应于接收到清空指令,确定所述清空指令中对应的清空点;将所述配置缓存中所述清空点之前的文件条目删除。
在一种可能的实现方式中,该方法还包括:响应于执行所述向量指令之前,根据所述向量指令中携带的标签索引查找所述配置指令对应的文件条目;响应于所述文件条目中有效性指示标记为有效,获取所述文件条目中的配置参数;根据所述配置参数执行所述向量指令。
本发明实施例中,所述配置指令和所述向量指令可以视作在同一条流水线(Pipeline)上进行处理,经过的环节包括获取阶段(Fetch Stage)、译码阶段(DecodeStage)、重命名阶段(Rename Stage)、调度阶段(Dispatch Stage)、分发阶段(IssueStage)、执行阶段(Execute stage)、回写阶段(Write back Stage)和提交阶段(CommitStage),其中,所述获取阶段、译码阶段、重命名阶段和提交阶段是按照顺序执行了,其他阶段可以乱序执行,本发明实施例中,我们主要关注译码阶段、分发阶段、执行阶段和提交阶段,具体如图6所示。
在所述图6中,在译码阶段需要对配置指令Vestvil、向量指令Vector1和向量指令Vector2进行译码,下面结合处理步骤对图6进行详细说明,具体的处理步骤流程图如图7所示,具体如下:
步骤S700、获取指令数据。
步骤S701、在译码阶段,响应于所述指令数据为配置指令,在配置缓存中为所述配置指令分配对应的文件条目,并生成标签索引,同时,将所述文件条目中的目的寄存器设置为未执行状态。
具体的,在译码阶段,配置指令Vestvil对应目的寄存器rd、寄存器rs、以及vtypei(每个向量元素的位宽大小);向量指令Vector1对应目的寄存器rd1、第一源寄存器rs3、第二源寄存器rs1和第三源寄存器rs2;向量指令Vector2对应目的寄存器rd1、第一源寄存器rs3、第二源寄存器rs1和第三源寄存器rs2;本发明实施例中,向量指令Vector1和向量指令Vector2对应的寄存器列表可以相同也可以不同,本发明实施例对其不做限定。
如图6所述,配置指令Vestvil对应目的寄存器rd与向量指令Vector1、Vector2对应的第一源寄存器rs3的状态相同。
步骤S702、将所述配置指令对应的所述文件条目写入配置缓存的尾部,同时,将所述标签索引添加到所述配置指令。
具体的,所述配置缓存包括文件条目包括配置信息config1、配置信息config2,将配置指令Vestvil生成的配置信息config3写入配置缓存的尾部。
本发明实施例中,每个配置信息中包括标签索引tag、目的寄存器rd、Vtype、Vl以及有效性指示valid。
步骤S703、响应于所述指令数据为所述向量指令,从所述配置缓存的尾部获取所述文件条目的配置信息。
步骤S704、响应于所述文件条目中的有效性指示标记为无效,将所述文件条目中的第一源寄存器添加到所述向量指令的源寄存器列表中。
步骤S705、将所述标签索引添加到所述向量指令。
步骤S706、将译码阶段后的所述向量指令和所述配置指令进行重命名。
步骤S707、完成所述重命名后将所述向量指令和所述配置指令写入重排序缓存ROB中。
步骤S708、根据不同的指令类型将所述向量指令和所述配置指令分发到不同的指令槽中。
具体的,配置指令Vestvil、向量指令Vector1和向量指令Vector2分别分发到不同的指令槽中。
步骤S709、执行配置指令,获取所述配置指令的配置参数。
步骤S710、根据所述标签索引将所述配置指令对应的文件条目中的配置参数进行更新,同时将所述文件条目中的目的寄存器设置为准备状态。
具体的,将所述配置指令完成后,会触发唤醒机制唤醒第一源寄存器。
步骤S711、将所述第一源寄存器设置为准备状态。
步骤S712、响应于所述第一源寄存器与所述向量指令的其他源寄存器都为准备状态,根据所述向量指令中携带的标签索引获取到所述配置参数。
步骤S713、执行所述向量指令。
步骤S714、响应于任一配置指令移动到所述重排序缓存ROB的头部时,在配置缓存中将所述任一配置指令之前的配置指令所对应的文件条目删除。
具体的,重排序缓存ROB中按照顺序包括多个向量指令和配置指令,假设配置缓存中config1对应Vest1,当重排序缓存ROB的头部为Vest2时,说明Vest1已完成,因此,删除配置缓存中的config1。
在一种可能的实现方式中,在译码阶段可以选择不将配置指令的目的寄存器添加到向量指令的源寄存器列表中,只需要将配置指令的标签索引写入到其对应的向量指令中携带即可;当配置指令执行后,利用所述标签索引将生成的配置参数vtype和vl更新到所述配置指令对应的文件条目中,且将所述配置指令对应的文件条目中的有效性指示标记为有效;在分发阶段主动检测向量指令是否可以发射,具体的,根据向量指令中的标签索引获取配置缓存中配置指令对应的配置信息,检测到配置指令对应的有效性指示为有效,则发送所述向量指令至执行单元,然后从配置缓存中获取配置参数,然后执行所述向量指令;若检测到配置指令对应的有效性指示为有效为无效,则阻塞所述向量指令的发射,继续重新检测。
上述实施例与图7所表示的具体实施例的区别在于,图7中是通过唤醒机制唤醒向量指令的执行,不需要分发阶段主动检测向量指令是否可以执行,是两种不同的处理方式,本发明实施例对其不做限定。
图8是本发明实施例的一种基于RISC-V指令集的向量指令处理装置示意图。如图8所示,本实施例的装置包括第一执行单元801、设置单元802、处理单元803和第二执行单元804。
其中,所述第一执行单元801,用于执行配置指令,获取所述配置指令的配置参数,其中,所述配置指令中携带标签索引;所述设置单元802,用于根据所述标签索引将获取的所述配置参数更新至所述配置指令对应的文件条目中,同时将所述文件条目中的目的寄存器设置为准备状态,其中,所述配置指令的目的寄存储器被设置为所述配置指令对应的向量指令的第一源寄存器;所述处理单元803,响应于所述第一源寄存器与所述向量指令的其他源寄存器都为准备状态,用于根据所述向量指令中携带的标签索引获取到所述文件条目中的配置参数,其中,所述向量指令中携带的标签索引与所述配置指令中携带的标签索引相同;所述第二执行单元804,用于执行所述向量指令。
可选的,所述文件条目中还包括有效性指示,在根据所述标签索引将获取的所述配置参数更新至所述配置指令对应的文件条目中之后,该方法还包括:
将所述文件条目中的有效性指示标记为有效,其中,所述有效性指示用于表示所述文件条目中的配置参数是否有效。
可选的,该装置还包括:
获取单元,用于获取指令数据;
所述处理单元还用于,在译码阶段,响应于所述指令数据为所述配置指令,在配置缓存中为所述配置指令分配对应的文件条目,并生成标签索引;
所述处理单元还用于,将所述标签索引添加到所述配置指令。
可选的,所述处理单元还用于:
将所述配置指令的目的寄存器写入所述文件条目中,并将所述文件条目中的有效性指示标记为无效。
可选的,该装置还包括:
写入单元,用于将所述配置指令对应的所述文件条目写入配置缓存的尾部。
可选的,所述获取单元还用于:
在译码阶段,响应于所述指令数据为所述向量指令,从所述配置缓存的尾部获取所述文件条目;
所述处理单元还用于:响应于所述文件条目中的有效性指示标记为无效,将所述文件条目中的第一源寄存器添加到所述向量指令的源寄存器列表中;
将所述文件条目中的标签索引添加到所述向量指令中。
可选的,该装置还包括:
重命名单元,用于将译码阶段后的所述向量指令和所述配置指令进行重命名;
所述处理单元还用于,完成所述重命名后将所述向量指令和所述配置指令写入重排序缓存ROB中,并根据不同的指令类型将所述向量指令和所述配置指令分发到不同的指令槽中。
可选的,该装置还包括:
删除单元,响应于任一配置指令移动到所述重排序缓存ROB的头部时,用于在配置缓存中将所述任一配置指令之前的配置指令所对应的文件条目删除。
可选的,所述接收单元还用于:
响应于接收到清空指令,确定所述清空指令中对应的清空点;
所述删除单元还用于:将所述配置缓存中所述清空点之前的文件条目删除。
可选的,所述配置参数包括向量数据类型寄存器和向量元素长度。
可选的,该装置还包括:
查找单元,响应于执行所述向量指令之前,用于根据所述向量指令中携带的标签索引查找所述配置指令对应的文件条目;
所述获取单元还用于,响应于所述文件条目中有效性指示标记为有效,获取所述文件条目中的配置参数;
所述第二执行单元还用于,根据所述配置参数执行所述向量指令。
本发明实施例中,还提供了一计算机程序指令,所述计算机程序指令在被处理器执行时实现上述实施例中任一项所述的方法。
本发明实施例中,还提供了一种计算机可读存储介质,其上存储计算机程序指令,所述计算机程序指令在被处理器执行时实现上述实施例中任一项所述的方法。
本发明实施例提供了一种芯片,包括存储器和处理核,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理核执行以实现上述实施例中任一项所述的方法。
本发明实施例提供了一种板卡,所述板卡上包括所述芯片。
本发明实施例提供了一种服务器,所述服务器上包括所述板卡。
如本领域技术人员将意识到的,本发明实施例的各个方面可以被实现为系统、方法或计算机程序产品。因此,本发明实施例的各个方面可以采取如下形式:完全硬件实施方式、完全软件实施方式(包括固件、常驻软件、微代码等)或者在本文中通常可以都称为“电路”、“模块”或“系统”的将软件方面与硬件方面相结合的实施方式。此外,本发明实施例的各个方面可以采取如下形式:在一个或多个计算机可读介质中实现的计算机程序产品,计算机可读介质具有在其上实现的计算机可读程序代码。
可以利用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是如(但不限于)电子的、磁的、光学的、电磁的、红外的或半导体系统、设备或装置,或者前述的任意适当的组合。计算机可读存储介质的更具体的示例(非穷尽列举)将包括以下各项:具有一根或多根电线的电气连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪速存储器)、光纤、便携式光盘只读存储器(CD-ROM)、光存储装置、磁存储装置或前述的任意适当的组合。在本发明实施例的上下文中,计算机可读存储介质可以为能够包含或存储由指令执行系统、设备或装置使用的程序或结合指令执行系统、设备或装置使用的程序的任意有形介质。
计算机可读信号介质可以包括传播的数据信号,所述传播的数据信号具有在其中如在基带中或作为载波的一部分实现的计算机可读程序代码。这样的传播的信号可以采用多种形式中的任何形式,包括但不限于:电磁的、光学的或其任何适当的组合。计算机可读信号介质可以是以下任意计算机可读介质:不是计算机可读存储介质,并且可以对由指令执行系统、设备或装置使用的或结合指令执行系统、设备或装置使用的程序进行通信、传播或传输。
可以使用包括但不限于无线、有线、光纤电缆、RF等或前述的任意适当组合的任意合适的介质来传送实现在计算机可读介质上的程序代码。
用于执行针对本发明实施例各方面的操作的计算机程序代码可以以一种或多种编程语言的任意组合来编写,所述编程语言包括:面向对象的编程语言如Java、Smalltalk、C++等;以及常规过程编程语言如“C”编程语言或类似的编程语言。程序代码可以作为独立软件包完全地在用户计算机上、部分地在用户计算机上执行;部分地在用户计算机上且部分地在远程计算机上执行;或者完全地在远程计算机或服务器上执行。在后一种情况下,可以将远程计算机通过包括局域网(LAN)或广域网(WAN)的任意类型的网络连接至用户计算机,或者可以与外部计算机进行连接(例如通过使用因特网服务供应商的因特网)。
上述根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图图例和/或框图描述了本发明实施例的各个方面。将要理解的是,流程图图例和/或框图的每个块以及流程图图例和/或框图中的块的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供至通用计算机、专用计算机或其它可编程数据处理设备的处理器,以产生机器,使得(经由计算机或其它可编程数据处理设备的处理器执行的)指令创建用于实现流程图和/或框图块或块中指定的功能/动作的装置。
还可以将这些计算机程序指令存储在可以指导计算机、其它可编程数据处理设备或其它装置以特定方式运行的计算机可读介质中,使得在计算机可读介质中存储的指令产生包括实现在流程图和/或框图块或块中指定的功能/动作的指令的制品。
计算机程序指令还可以被加载至计算机、其它可编程数据处理设备或其它装置上,以使在计算机、其它可编程设备或其它装置上执行一系列可操作步骤来产生计算机实现的过程,使得在计算机或其它可编程设备上执行的指令提供用于实现在流程图和/或框图块或块中指定的功能/动作的过程。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于RISC-V指令集的向量指令处理方法,其特征在于,该方法包括:
执行配置指令,获取所述配置指令的配置参数,其中,所述配置指令中携带标签索引;
根据所述标签索引将获取的所述配置参数更新至所述配置指令对应的文件条目中,同时将所述文件条目中的目的寄存器设置为准备状态,其中,所述配置指令的目的寄存储器被设置为所述配置指令对应的向量指令的第一源寄存器;
响应于所述第一源寄存器与所述向量指令的其他源寄存器都为准备状态,根据所述向量指令中携带的标签索引获取到所述文件条目中的配置参数,其中,所述向量指令中携带的标签索引与所述配置指令中携带的标签索引相同;
执行所述向量指令。
2.如权利要求1所述的方法,其特征在于,所述文件条目中还包括有效性指示,在根据所述标签索引将获取的所述配置参数更新至所述配置指令对应的文件条目中之后,该方法还包括:
将所述文件条目中的有效性指示标记为有效,其中,所述有效性指示用于表示所述文件条目中的配置参数是否有效。
3.如权利要求1所述的方法,其特征在于,该方法还包括:
获取指令数据;
在译码阶段,响应于所述指令数据为所述配置指令,在配置缓存中为所述配置指令分配对应的文件条目,并生成标签索引;
将所述标签索引添加到所述配置指令。
4.如权利要求3所述的方法,其特征在于,该方法还包括:
将所述配置指令的目的寄存器写入所述文件条目中,并将所述文件条目中的有效性指示标记为无效。
5.如权利要求4所述的方法,其特征在于,该方法还包括:
将所述配置指令对应的所述文件条目写入配置缓存的尾部。
6.如权利要求5所述的方法,其特征在于,该方法还包括:
在译码阶段,响应于所述指令数据为所述向量指令,从所述配置缓存的尾部获取所述文件条目;
响应于所述文件条目中的有效性指示标记为无效,将所述文件条目中的第一源寄存器添加到所述向量指令的源寄存器列表中;
将所述文件条目中的标签索引添加到所述向量指令中。
7.如权利要求3所述的方法,其特征在于,该方法还包括:
将译码阶段后的所述向量指令和所述配置指令进行重命名;
完成所述重命名后将所述向量指令和所述配置指令写入重排序缓存ROB中,并根据不同的指令类型将所述向量指令和所述配置指令分发到不同的指令槽中。
8.一种基于RISC-V指令集的向量指令处理装置,其特征在于,该装置包括:
第一执行单元,用于执行配置指令,获取所述配置指令的配置参数,其中,所述配置指令中携带标签索引;
设置单元,用于根据所述标签索引将获取的所述配置参数更新至所述配置指令对应的文件条目中,同时将所述文件条目中的目的寄存器设置为准备状态,其中,所述配置指令的目的寄存储器被设置为所述配置指令对应的向量指令的第一源寄存器;
处理单元,响应于所述第一源寄存器与所述向量指令的其他源寄存器都为准备状态,用于根据所述向量指令中携带的标签索引获取到所述文件条目中的配置参数,其中,所述向量指令中携带的标签索引与所述配置指令中携带的标签索引相同;
第二执行单元,用于执行所述向量指令。
9.一种计算机程序指令,其特征在于,所述计算机程序指令在被处理器执行时实现如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其上存储计算机程序指令,其特征在于,所述计算机程序指令在被处理器执行时实现如权利要求1-7中任一项所述的方法。
CN202111666875.1A 2021-12-30 2021-12-30 基于risc-v指令集的向量指令处理方法、装置和可读存储介质 Pending CN116414454A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111666875.1A CN116414454A (zh) 2021-12-30 2021-12-30 基于risc-v指令集的向量指令处理方法、装置和可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111666875.1A CN116414454A (zh) 2021-12-30 2021-12-30 基于risc-v指令集的向量指令处理方法、装置和可读存储介质

Publications (1)

Publication Number Publication Date
CN116414454A true CN116414454A (zh) 2023-07-11

Family

ID=87056777

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111666875.1A Pending CN116414454A (zh) 2021-12-30 2021-12-30 基于risc-v指令集的向量指令处理方法、装置和可读存储介质

Country Status (1)

Country Link
CN (1) CN116414454A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117539469A (zh) * 2024-01-10 2024-02-09 睿思芯科(成都)科技有限公司 Risc-v的可视化向量编程方法、系统及相关设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117539469A (zh) * 2024-01-10 2024-02-09 睿思芯科(成都)科技有限公司 Risc-v的可视化向量编程方法、系统及相关设备
CN117539469B (zh) * 2024-01-10 2024-03-19 睿思芯科(成都)科技有限公司 Risc-v的可视化向量编程方法、系统及相关设备

Similar Documents

Publication Publication Date Title
US20200233909A1 (en) System, method and computer program product for data transfer management
US8135942B2 (en) System and method for double-issue instructions using a dependency matrix and a side issue queue
US7174428B2 (en) Method and system for transforming memory location references in instructions
US10114701B2 (en) Space efficient cascading point in time copying
US8239661B2 (en) System and method for double-issue instructions using a dependency matrix
US10831481B2 (en) Handling unaligned load operations in a multi-slice computer processor
JP4890869B2 (ja) 同じアイテムを表すデータ構造間で生データを転送するメカニズム
CN111208933A (zh) 数据访问的方法、装置、设备和存储介质
CN104205820A (zh) 用于加载保留和存储条件序列的解码时间指令优化
CN116414454A (zh) 基于risc-v指令集的向量指令处理方法、装置和可读存储介质
CN112039975A (zh) 一种报文字段的处理方法、装置、设备及存储介质
EP2972791B1 (en) Method and apparatus for forwarding literal generated data to dependent instructions more efficiently using a constant cache
US9965344B2 (en) Method and apparatus for transmitting data in a robot operating system
US20140095814A1 (en) Memory Renaming Mechanism in Microarchitecture
US9229724B2 (en) Serializing wrapping trace buffer via a compare-and-swap instruction
US10318294B2 (en) Operation of a multi-slice processor implementing dependency accumulation instruction sequencing
CN110008236B (zh) 一种数据分布式自增编码方法、系统、设备及介质
US11243774B2 (en) Dynamic selection of OSC hazard avoidance mechanism
US6959377B2 (en) Method and system for managing registers
US11687337B2 (en) Processor overriding of a false load-hit-store detection
CN111061927A (zh) 数据处理方法、装置及电子设备
US11113055B2 (en) Store instruction to store instruction dependency
CN117453290A (zh) 一种基于riscv-v指令集在乱序核中的执行方法和装置
US7206906B1 (en) Physical address mapping framework
CN115454693B (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