CN116521229A - 一种基于risc-v向量指令扩展的低硬件开销向量处理器架构 - Google Patents

一种基于risc-v向量指令扩展的低硬件开销向量处理器架构 Download PDF

Info

Publication number
CN116521229A
CN116521229A CN202310128069.1A CN202310128069A CN116521229A CN 116521229 A CN116521229 A CN 116521229A CN 202310128069 A CN202310128069 A CN 202310128069A CN 116521229 A CN116521229 A CN 116521229A
Authority
CN
China
Prior art keywords
vector
instruction
current
register
micro
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
CN202310128069.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.)
NANJING SAMPLE TECHNOLOGY CO LTD
Southeast University
Original Assignee
NANJING SAMPLE TECHNOLOGY CO LTD
Southeast University
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 NANJING SAMPLE TECHNOLOGY CO LTD, Southeast University filed Critical NANJING SAMPLE TECHNOLOGY CO LTD
Priority to CN202310128069.1A priority Critical patent/CN116521229A/zh
Publication of CN116521229A publication Critical patent/CN116521229A/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • 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/3802Instruction prefetching
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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向量指令扩展的低硬件开销向量处理器架构,属于电数字数据处理的技术领域。上述架构包括:向量指令队列、标量寄存器缓存、解码和派遣模块、寄存器状态表、指令状态表、记分牌发射队列、向量加法功能单元、向量乘法功能单元、向量加载/存储功能单元、向量寄存器组。其中,向量指令从标量端送入到向量指令队列,根据解码获取的不同操作类型派遣到对应的向量功能单元,然后进行执行和写回,采取的是顺序派遣、相同微指令间顺序发射的策略。记分牌和发射队列结合,针对向量指令微码化的特征,与寄存器状态表和指令状态表结合来控制指令间的动态调度。本发明在低硬件开销下,实现向量指令在向量处理器内部有序高效执行的目的。

Description

一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构
技术领域
本发明涉及RISC-V向量处理器技术,公开一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构,属于电数字数据处理的技术领域。
背景技术
RISC-V指令集起源于加州大学伯克利分校,是一个开源的指令集架构,不同于ARM和X86,其ISA可以免费使用。得益于诞生的较晚,RISC-V指令集采用了先进的理念和方法,且继承了RISC指令集的特点和优势,其设计可以借鉴诸多优秀的先例。RISC-V指令集还具有特有的模块化特点,除了基础整数指令之外,官方还颁布了M/A/F/D/C/B/P/V等模块化标准扩展指令集,可面向不同领域。官方颁布的模块化扩展指令集使得RISC-V具有出色的可扩展性和避免碎片化的优点,其向量指令扩展部分可以很好地和当下AIot时代万物互联相结合,可以满足定制化的需求,同时具备低功耗、低成本、灵活性高的优势。
目前,市面上已存在部分基于RISC-V的向量加速器,其硬件开销过大,在实现向量计算功能的同时,对存储等资源的使用带来了很大的芯片面积压力,在一些移动端的使用场景下,此类基于RISC-V的向量加速器需要在芯片面积和芯片性能之间折中。
因此,设计一款低硬件开销的RISC-V向量拓展处理器,使其能低硬件成本高效地执行向量指令,具有十分重要的意义。
发明内容
本发明的目的是为克服现有技术的不足,提供一种基于RISC-V向量指令扩展的向量处理器架构,实现向量指令在低硬件开销情况下高效执行的发明目的,解决现有RISC-V向量处理器虽能实现计算功能但硬件开销大的技术问题。
本发明为实现上述发明目的采用如下技术方案:
一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构,包括:
向量指令队列,用于存储RISC-V标量端传输过来的向量指令、每个向量指令读取标量寄存器缓存的使能信号;
标量寄存器缓存,用于缓存向量指令所用到的标量的值;
解码和派遣模块,用于对从向量指令队列读取的当前向量指令进行译码,获取当前向量指令对应的立即数、与当前向量指令对应向量功能单元信息交互的记分牌发射队列、分配给当前向量指令的向量寄存器的数量,在当前向量指令读取标量寄存器缓存的使能信号有效时读取当前向量指令所用到的标量的值,将解码后的当前向量指令、当前向量指令所用到的标量的值、当前向量指令对应的立即数、分配给当前向量指令的向量寄存器的数量派遣到与当前向量指令对应向量功能单元信息交互的记分牌发射队列中;
寄存器状态表,用于记录向量寄存器组的当前状态;
记分牌发射队列,用于根据分配给当前向量指令的向量寄存器的数量将接收的当前向量指令微码化为微指令发射队列,记录当前未发射微指令条数、微指令目的寄存器索引、微指令源寄存器索引、当前向量指令所用到的标量的值、当前向量指令对应的立即数的值、微指令源寄存器的状态,查询寄存器状态表以获取当前微指令源寄存器状态和目的寄存器状态,在满足发射条件时发射当前微指令并更新指令状态表,在当前微指令发射后更新为下一条微指令并进入下一条微指令的发射操作,在对应向量功能单元执行当前微指令写回最新值的过程中实时更新寄存器状态表中当前微指令目的寄存器的状态;
指令状态表,用于记录记分牌发射队列发射微指令的情况;
向量功能单元,与一个记分牌发射队列信息交互,在接收记分牌发射队列发射的当前微指令的同时,从向量寄存器组中读取当前微指令源寄存器的值,执行完当前微指令后写回最新的值至向量寄存器组,更新当前微指令目的寄存器的值及寄存器状态表;及,
向量寄存器组,接收记分牌发射队列发射的微指令的信息。
作为一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构的进一步优化方案,向量指令队列存储的RISC-V标量端传输过来的向量指令包括如下信息:向量指令自身的信息、向量指令的向量数据类型和执行向量长度的值。
作为一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构的进一步优化方案,与当前向量指令对应功能单元根据译码当前向量指令获得的操作类型信息确定,所述操作类型包括:向量加法操作、向量乘法操作、向量访存操作。
作为一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构的进一步优化方案,向量寄存器组的当前状态包括每个向量寄存器的当前状态,每个向量寄存器的当前状态包括:处于空闲或最新状态、处于等待向量功能单元写回最新值的状态。
作为一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构的进一步优化方案,记分牌发射队列通过数据选择器和计数器以及减法器组成的电路记录当前未发射微指令条数,数据选择器的0端与计数器的输出端连接,数据选择器的控制端接发射使能信号,数据选择器的输出端连接计数器的输入端,减法器的减数输入端连接计数器的输出端,减法器的被减数输入端接1,减法器的输出端连接数据选择器的1端。
作为一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构的进一步优化方案,记分牌发射队列通过数据选择器和目的寄存器索引计数器以及加法器组成的电路记录微指令目的寄存器索引,数据选择器的0端与目的寄存器索引计数器的输出端连接,数据选择器的控制端接发射使能信号,数据选择器的输出端连接目的寄存器索引计数器的输入端,加法器的一个输入端连接目的寄存器索引计数器的输出端,加法器的另一个输入端接索引配置值,加法器的输出端连接数据选择器的1端。
作为一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构的进一步优方案,记分牌发射队列通过数据选择器和源寄存器索引计数器以及加法器组成的电路记录微指令源寄存器索引,数据选择器的0端与源寄存器索引计数器的输出端连接,数据选择器的控制端接发射使能信号,数据选择器的输出端连接源寄存器索引计数器的输入端,加法器的一个输入端连接源寄存器索引计数器的输出端,加法器的另一个输入端接索引配置值,加法器的输出端连接数据选择器的1端。
作为一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构的进一步优化方案,向量功能单元为向量加法单元或向量乘法单元或向量访存单元;向量加法单元通过复用低位加法器实现,向量乘法单元通过复用低位乘法器实现;向量访存单元的访存地址通过向量访存地址发生器和数据选择器组成的电路生成,向量访存地址发生器输出单步地址、跨步地址、索引地址至数据选择器的输入端,数据选择器的控制端接入访存类型信号,数据选择器从单步地址、跨步地址、索引地址中选择一个地址作为向量单元的访存地址,跨步地址和索引地址通过复用相同的逻辑电路生成。
作为一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构的进一步优化方案,向量寄存器组在当前微指令源寄存器索引与上一条微指令目的寄存器索引相同时,向量功能单元在上一条微指令目的寄存器的值写回后执行当前微指令。
一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构的指令调度采用主要步骤如下所示的4级流水线的实现:
步骤1,向量指令的取值处理:标量处理器端经过取值译码将向量指令译出来,并在当前向量指令完成提交后送入到向量处理器中,由向量处理器的向量指令队列接收,读取向量指令所用到的标量的值;
步骤2,对于接收的向量指令顺序进行解码和派遣处理:从向量指令队列中读出当前向量指令及其向量数据类型和执行向量长度的值以及当前向量指令读取标量寄存器缓存的使能信号,对当前向量指令进行解码操作获取接收当前向量指令的记分牌发射队列的信息、分配给当前向量指令的向量寄存器数量的信息、当前向量指令对应的立即数,在当前向量指令读取标量寄存器缓存的使能信号有效时与标量寄存器缓存信息交互以读取当前向量指令所用到的标量的值,根据解码得到接收当前向量指令的记分牌发射队列的信息将当前向量指令以及解码获取的信息派遣至与对应向量功能单元信息交互的记分牌发射队列。
步骤3,记分牌发射队列对对应相同向量功能单元的向量指令按序进行微码化处理:将当前向量指令以及解码获取的信息派遣到与对应向量功能单元信息交互的记分牌发射队列后,根据分配给当前向量指令的向量寄存器个数的值lmul记分牌发射队列将接收的当前向量指令微码成lmul条指令,根据这个微码化特征设计发射队列,并结合寄存器状态表和指令状态表实现发射队列发射当前微指令后自动更新为下一条微码后的指令,并准备下一次条微指令的发射。在发射微指令之前需要去观察寄存器状态表、指令状态表是否空闲,从而判断其是否能成功发射,出现指令冒险则会暂停住当前指令的发射,成功发射微指令后,在对应向量功能单元执行当前微指令写回最新值的过程中实时更新微指令目的寄存器的状态。
步骤4,向量功能单元乱序执行接收到的微指令:对应的向量功能单元接收到微指令的同时,从向量寄存器组中读取当前微指令源寄存器的值,根据接收的微指令进行对应的操作,支持向量加法、向量乘法、向量访存操作,根据操作元素位数的不同以及操作周期数的不同,通过复用底层逻辑的方式实现向量加法功能单元和向量乘法功能单元,降低硬件开销。向量访存功能单元与向量寄存器组进行交互,数据位宽为128bit,配合掩码进行数据访存。
步骤5,乱序写回向量功能单元执行接收到的微指令后的最新值:当前微指令执行完成后,即写回操作结果至向量寄存器组,向量寄存器组支持写位掩码和旁路操作。完整的128bit计算结果写回时,会进行写入和读出索引的判断,从而实现forward操作。特别的访存加载时,需要配合掩码将部分元素写入向量寄存器中,部分元素写入时不支持forward传输。
本发明采用上述技术方案,具有以下有益效果:
(1)本发明提出的一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构及其指令调度的实现方式,通过记分牌记录当前寄存器的状态、当前寄存器索引等部分特性和向量发射队列紧耦合设计,结合向量指令微码化的特征,在实现向量指令的流水执行的同时也能兼顾低硬件开销,减少很多寄存器消耗。
(2)本发明提出的一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构及其指令调度的实现方式,在向量功能单元的实现方式上,采用可重构的设计,高位宽元素的计算复用低位宽元素计算的功能单元,访存复用加法器等地址生成逻辑,减少硬件的开销。
(3)本发明提出的一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构及其指令调度的实现方式,在实现向量指令间的链接时,不使用硬件开销较大的旁路网络,而是通过设计向量寄存器中的forward技术,使用较少的资源,提高向量执行效率。
附图说明
图1(a)是本发明基于RISC-V向量指令扩展的向量处理器架构的示意图,图1(b)是本发明基于RISC-V向量指令扩展的向量处理器架构调度向量指令的4级流水线的示意图。
图2是本发明实现向量访存功能单元的电路图。
图3是本发明向量寄存器组模块的示意图。
图4(a)是本发明记分牌发射队列实现记录当前未发射微指令条数功能的电路图,图4(b)是本发明记分牌发射队列实现记录微指令目的寄存器索引功能的电路图,图4(c)是本发明记分牌发射队列实现记录微指令源寄存器索引功能的电路图。
图5是本发明实现向量加法功能单元的电路图。
具体实施方式
为更加清楚地阐述本发明的发明目的、技术方案和技术效果,以下将结合附图及具体实施例,对本发明的技术方案进行详细说明。
本发明提供一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构及其指令调度的实现方式,适用于RISC-V官方标准RVV.v1.0的向量指令,可执行向量spec中的主要指令,进行向量操作的加速。
如图1(a)所示,本发明提供的一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构,包括:向量指令队列、标量寄存器缓存、解码和派遣模块、寄存器状态表、记分牌发射队列、指令状态表、向量功能单元、向量寄存器。
向量指令队列(VIQ)用于存储RISC-V标量端传输过来的向量指令、每个向量指令读取标量寄存器缓存的使能信号、每个向量指令的向量数据类型(vtype)和执行向量长度(vl)的值,完成图1(b)所示向量指令调度4级流水线中的取值操作。
1.标量寄存器缓存(RS_buffer)是为了解决标量和向量之间的读后写(WAR)数据相关性问题,用于缓存向量指令所用到的标量的值,向量指令所用到的标量的值随着解码后的向量指令一同送到向量处理器端的标量寄存器缓存中,从而解决标量寄存器数据的WAR问题。通过向量指令队列(VIQ)及标量寄存器缓存(RS_buffer)实现向量处理器与标量端的耦合,从而保证标量和向量间的指令执行的正确性。
解码和派遣模块(Decoding and Dispatch),用于对从向量指令队列读取当前向量指令进行译码并获取与当前向量指令对应功能单元信息交互的记分牌发射队列的信息、分配给当前向量指令的向量寄存器数量lmul、当前向量指令对应的立即数,在当前向量指令读取标量寄存器缓存的使能信号有效时与标量寄存器缓存信息交互以读取当前向量指令所用到的标量的值,将解码后的当前向量指令及当前向量指令所用到的标量的值、当前向量指令对应的立即数、分配给当前向量指令的向量寄存器的数量派遣到与当前向量指令对应向量功能单元信息交互的记分牌发射队列中。例如,当前向量指令的操作类型为向量加法操作,则向量加法功能单元为当前向量指令对应向量功能单元。标量寄存器缓存、解码和派遣模块完成图1(b)所示向量指令调度4级流水线中的译码&派遣操作。
寄存器状态表(RST)是记录VPU中向量寄存器组的当前状态,表示向量寄存器组中的每个向量寄存器是否为最新状态或者是在等待某个功能单元写回最新值。寄存器状态表的一个具体实施例如表1所示,表项个数和功能单元(FU)的个数相同,V0向量寄存器为等待向量加法单元写回最新的值的状态,V1向量寄存器、V2向量寄存器、V30向量寄存器、V31向量寄存器为空闲或最新状态。
表1
记分牌发射队列(Scoreboard)是记分牌和发射队列的紧耦合,用于根据分配给当前向量指令的向量寄存器的数量lmul将接收的当前向量指令微码化为包lmul条微指令的微指令发射队列,一个记分牌发射队列与一个向量功能单元信息交互微指令,记分牌记录的信息有:当前未发射微指令条数(cnt)、微指令目的寄存器索引(vd_index)、微指令源寄存器索引(vs1、vs2)、当前向量指令所用到的标量、当前向量指令对应的立即数的值以及微指令的源寄存器是否为ready状态。记分牌发射队列接收到解码和派遣模块发送的微指令后,与寄存器状态表信息交互查询微指令的源寄存器和目的寄存器的状态,在源寄存器为ready状态且目的寄存器空闲时向微指令对应向量功能单元发送当前微指令,当前微指令发送完毕后更新指令状态表中当前微指令的发射状态,在当前微指令发送完毕但对应向量功能单元未写回最新值时更新寄存器状态表中当前微指令目的寄存器的状态为等待向量功能单元写回最新值,在对应向量功能单元执行完毕当前微指令写回最新值后更新当前微指令目的寄存器的状态;当前微指令发射完毕后即更新微指令,执行查询寄存器状态表、发射微指令、更新指令状态表、更新微指令目的寄存器状态的过程,直至记分牌队列发射的微指令总数达到lmul的值。使用这个记分牌发射队列,与向量指令微码化的特征很好地结合起来,实现低硬件开销。记分牌发射队列实现记录当前未发射微指令条数功能的电路如图4(a)所示,记分牌发射队列实现记录微指令目的寄存器索引功能的电路如图4(b)所示,记分牌发射队列实现记录微指令源寄存器索引功能的电路如图4(c)所示。记分牌发射队列、寄存器状态表、指令状态表完成图1(b)所示向量指令调度4级流水线中的发射操作。
指令状态表(IST)是记录记分牌发射队列发射微指令的情况,复位值全为1,解码和派遣模块派遣一条解码后的向量指令后,记分牌发射队列对接收的向量指令进行微码化处理,所有微指令对应位置的值全置为零,记分牌发射队列每发射一条微指令,就将表中已发射微指令对应位置的值置为1。每一个记分牌发射队列都与指令状态表信息交互,图1中仅示例了一个记分牌发射队列与指令状态表的信息交互。指令状态表的一个具体实施例如表2所示,该表记录了对四条向量指令译码后的微指令的发射情况,解码和派遣模块译码后的每一条向量指令被派遣到记分牌发射队列后,记分牌发射队列根据分配给当前向量指令的向量寄存器的数量lmul对接收的当前向量指令进行微码化处理得到第一条微指令,记分牌发射队列将接收到的第一条微指令传输至对应功能单元后更新微指令,已发射微指令对应位置的值置为1,未发射微指令对应位置的值置为0,第二向量指令对应的第四微指令在第一向量指令对应的第四微指令发射完毕后发射。
表2
向量功能单元,包括向量计算中所需要的功能单元,例如RISC-V向量spec v1.0版本中的向量加法功能单元、向量乘法功能单元、向量访存功能单元,可以根据需求进行增加或减少。向量功能单元支持的元素位宽为8bit、16bit、32bit,每个功能单元的最大处理向量宽度为128bit。向量功能单元完成图1(b)所示向量指令调度4级流水线中的执行和写回操作,在记分牌发射队列向对应向量功能单元发射微指令的同时,向量功能单元同步读取向量寄存器组中微指令源寄存器的值,执行完当前微指令后写回最新的值至向量寄存器,更新当前微指令目的寄存器的值及寄存器状态表。
图2给出了本发明实现向量访存的一种具体电路实施方式,访存地址由向量访存地址生成器和数据选择器组成的电路生成,向量访存地址生成器生成单步地址、跨步地址、索引地址,数据选择器根据给定的访存类型信号选择单步地址、跨步地址、索引地址中的一个地址作为访存地址,内部缓存传递访存地址至向量访存模块,内部缓存按照访存地址对通过向量访存功能单元交互的信息进行读写操作;其中,跨步地址和索引地址可以通过复用相同逻辑电路生成。
向量寄存器组(VRF)由32个128bit寄存器组成,用于接收记分牌发射队列发射的微指令的信息。图3给出了本发明向量寄存器组的一种具体电路实施方式,第一二选一数据选择器用于根据微指令目的寄存器索引选择向量功能单元写回最新值的向量寄存器,第二个二选一数据选择器用于根据微指令源寄存器索引选择向量功能单元读取数据的向量寄存器,在上一条微指令目的寄存器索引与当前微指令源寄存器索引相同时,在向量功能单元在上一条微指令目的寄存器写回最新值后读出通过第一数据选择器写入向量寄存器组的数据,相较于传统的写后读访存方式,可以减少数据访存时间,提高向量处理器架构处理数据的效率。
如图1(b)所示,向量指令在本发明的RISC-V向量处理器架构中的执行过程为4级流水线,分为以下五个步骤。
步骤一、向量指令的取值:标量处理器进行取值、译码、执行、提交策略,当译码部分译出当前指令为向量指令时,在确认其能完成提交后,将指令送到向量处理器中,由向量处理器中的向量指令队列(VIQ)接收。在一个实例中,存在向量处理器需要用到标量端的标量寄存器缓存存储的值时,需要在标量的译码阶段将所需的标量寄存器缓存存储的值读出来,和向量指令一同送到向量处理器端,向量指令所用到的标量的值由标量寄存器缓存接收。
步骤二、向量指令的译码和派遣:从向量处理器队列中读出当前向量指令,并对当前向量指令进行解码操作,主要支持的操作为三种:向量与向量、向量与标量、向量与立即数,先根据opcode进行译码,再根据funct3译码出对应的操作功能单元的flag和向量操作类型以及分配给当前向量指令的向量寄存器个数lmul。然后根据功能单元的flag的不同可以将译码后的向量指令派遣到与对应向量功能单元信息交互的记分牌发射队列中,由于与每个向量功能单元信息交互的记分牌发射队列仅有一个表项,因此需要在与对应向量功能单元信息交互的记分牌发射队列处于空闲状态才能完成派遣。在另一个实例中,存在需要读取标量寄存器值的情形,会将从标量寄存器缓存中(rs_buffer)读所需的值后连同译码后的向量指令以及获取的信息一并送到与对应向量功能单元信息交互的记分牌发射队列中。
步骤三、向量指令的发射:根据分配给当前向量指令的向量寄存器个数lmul将译码后的向量指令微码化为lmul条微指令,微指令进入到与对应向量功能单元信息交互的记分牌发射队列中后,需要进行是否能发射到对应向量功能单元的判断,同时观察寄存器状态表和指令状态表。首先,根据微指令目的寄存器的索引值在寄存器状态表中观察目的寄存器是否为空闲状态,若为空闲状态,满足一项发射条件;接着,根据微指令源寄存器的索引值在寄存器状态表中观察两个源操作数的寄存器状态,若都为最新状态,即当前微指令涉及的寄存器都满足发射条件;然后,再去观察指令状态表,记分牌发射队列会根据当前的lmul值将每条向量指令微码成多条微指令,为了保证指令间执行的结果的正确性,需要保证每条微码后的指令,必须在前一条向量指令对应位置的微码指令发射后才可以发射当前向量指令微码后的指令,即可完成每个向量功能单元内部的微指令顺序发射,实现并行向量功能单元间微指令的乱序发射、乱序执行、乱序写回。在一个实例中,当向量指令的第一条微码指令成功发射后,当前记分牌发射队列即更新为第二条微码指令,遵循规律地在目的寄存器和源寄存器上进行变化,这样仅使用和寄存器索引的位数相同的寄存器开销即可实现微码指令的发射,减少了很大的硬件开销。
步骤四、向量指令的执行:微指令进入到对应的向量功能单元中,若是加法功能单元,采用一种复用底层8bit加法器的方式去实现16个8bit加法、8个16bit加法和4个32bit加法,如图5所示;若为乘法功能单元也是同样地复用底层8bit乘法器的方式去实现16个8bit乘法、8个16bit乘法和4个32bit乘法,不同点是乘法是操作位宽不同周期也不同;若为向量访存功能单元,支持单步传输(unit-stride)、跨步传输(strided)、索引传输(indexed)等多种访存模式,与数据cache交互,数据宽度为128bit,实现方式如图2所示,首先是由一个向量访存地址生成器(addr gen)模块,addr gen模块用于生成每次访存(load、store)的地址,unit_stride为单步连续存储,因此可以直接读取一整段的128bit数据,仅需在跨cacheline的情况下做一次额外的地址生成和存储。而跨步传输(strided)和索引传输(indexed)取得的数据为非连续数据,每次的地址是有规律地生成,因此可以复用其中的加法器实现。存储的时候数据配合对应情况生成的写位掩码wmask,可实现元素级别的存储。
步骤五、向量指令的写回:指令的写回,在执行完对应的功能后,即将最终的结果写回到向量寄存器中,如图3所示,当写回的寄存器值的索引值和当前要读的寄存器的索引值一致时,直接通过旁路进行传输,从而得到当前写回最新的值。在一个实例中,前一条微指指令执行的操作为v4=v0*v8,而下一条微指令为v12=v4*v16,那么发射第二条向量乘法微指令时,v4寄存器的值就会通过forward传递给向量乘法功能单元使用。另一个实例中,在进行向量的访存操作时,类别为跨步strided,在将元素写回向量寄存器时,需要使用wmask来写入,这时由于不是完整的向量寄存器的值,不支持用forward。
本发明公开了一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构及其指令调度的实现方式,向量指令执行采用先提交后执行的策略,送入向量处理器的向量指令队列后,经过译码和派遣模块将向量指令送至对应功能单元的记分牌发射队列中,记分牌发射队列采用结合向量指令微码化的特征进行设计,降低硬件开销的同时,实现向量指令微码后的动态调度,并根据寄存器状态表和指令状态表判断微码后的指令能否发射,微码后的指令成功发射后进入对应的向量功能单元进行执行,向量功能单元都复用逻辑从而很大程度地降低硬件开销,执行完成后就写回新的值至向量寄存器中,支持forward传输来提高指令执行效率,从而实现向量指令在低硬件开销情况下的高效执行。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的发明构思在所提技术方案基础上所做的任何改动均落入本发明保护范围之内。

Claims (10)

1.一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构,其特征在于,包括:
向量指令队列,用于存储RISC-V标量端传输过来的向量指令、每个向量指令读取标量寄存器缓存的使能信号;
标量寄存器缓存,用于缓存向量指令所用到的标量的值;
解码和派遣模块,用于对从向量指令队列读取的当前向量指令进行译码,获取当前向量指令对应的立即数、与当前向量指令对应向量功能单元信息交互的记分牌发射队列、分配给当前向量指令的向量寄存器的数量,在当前向量指令读取标量寄存器缓存的使能信号有效时读取当前向量指令所用到的标量的值,将解码后的当前向量指令、当前向量指令所用到的标量的值、当前向量指令对应的立即数、分配给当前向量指令的向量寄存器的数量派遣到与当前向量指令对应向量功能单元信息交互的记分牌发射队列中;
寄存器状态表,用于记录向量寄存器组的当前状态;
记分牌发射队列,用于根据分配给当前向量指令的向量寄存器的数量将接收的当前向量指令微码化为微指令发射队列,记录当前未发射微指令条数、微指令目的寄存器索引、微指令源寄存器索引、当前向量指令所用到的标量的值、当前向量指令对应的立即数的值、微指令源寄存器的状态,查询寄存器状态表以获取当前微指令源寄存器状态和目的寄存器状态,在满足发射条件时发射当前微指令并更新指令状态表,在当前微指令发射后更新为下一条微指令并进入下一条微指令的发射操作,在对应向量功能单元执行当前微指令写回最新值的过程中实时更新寄存器状态表中当前微指令目的寄存器的状态;
指令状态表,用于记录记分牌发射队列发射微指令的情况;
向量功能单元,与一个记分牌发射队列信息交互,在接收记分牌发射队列发射的当前微指令的同时,从向量寄存器组中读取当前微指令源寄存器的值,执行完当前微指令后写回最新的值至向量寄存器组,更新当前微指令目的寄存器的值及寄存器状态表;及,
向量寄存器组,接收记分牌发射队列发射的微指令的信息。
2.根据权利要求1所述一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构,其特征在于,所述向量指令队列存储的RISC-V标量端传输过来的向量指令包括如下信息:向量指令自身的信息、向量指令的向量数据类型和执行向量长度的值。
3.根据权利要求1所述一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构,其特征在于,所述与当前向量指令对应功能单元根据译码当前向量指令获得的操作类型信息确定,所述操作类型包括:向量加法操作、向量乘法操作、向量访存操作。
4.根据权利要求1所述一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构,其特征在于,所述向量寄存器组的当前状态包括每个向量寄存器的当前状态,每个向量寄存器的当前状态包括:处于空闲或最新状态、处于等待向量功能单元写回最新值的状态。
5.根据权利要求1所述一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构,其特征在于,所述记分牌发射队列通过数据选择器和计数器以及减法器组成的电路记录当前未发射微指令条数,所述数据选择器的0端与计数器的输出端连接,数据选择器的控制端接发射使能信号,数据选择器的输出端连接计数器的输入端,减法器的减数输入端连接计数器的输出端,减法器的被减数输入端接1,减法器的输出端连接数据选择器的1端。
6.根据权利要求1所述一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构,其特征在于,所述记分牌发射队列通过数据选择器和目的寄存器索引计数器以及加法器组成的电路记录微指令目的寄存器索引,所述数据选择器的0端与目的寄存器索引计数器的输出端连接,数据选择器的控制端接发射使能信号,数据选择器的输出端连接目的寄存器索引计数器的输入端,加法器的一个输入端连接目的寄存器索引计数器的输出端,加法器的另一个输入端接索引配置值,加法器的输出端连接数据选择器的1端。
7.根据权利要求1所述一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构,其特征在于,所述记分牌发射队列通过数据选择器和源寄存器索引计数器以及加法器组成的电路记录微指令源寄存器索引,所述数据选择器的0端与源寄存器索引计数器的输出端连接,数据选择器的控制端接发射使能信号,数据选择器的输出端连接源寄存器索引计数器的输入端,加法器的一个输入端连接源寄存器索引计数器的输出端,加法器的另一个输入端接索引配置值,加法器的输出端连接数据选择器的1端。
8.根据权利要求1所述一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构,其特征在于,所述向量功能单元为向量加法单元或向量乘法单元或向量访存单元;所述向量加法单元通过复用低位加法器实现,所述向量乘法单元通过复用低位乘法器实现;所述向量访存单元的访存地址通过向量访存地址发生器和数据选择器组成的电路生成,所述向量访存地址发生器输出单步地址、跨步地址、索引地址至数据选择器的输入端,数据选择器的控制端接入访存类型信号,数据选择器从单步地址、跨步地址、索引地址中选择一个地址作为向量单元的访存地址,所述跨步地址和索引地址通过复用相同的逻辑电路生成。
9.根据权利要求1所述一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构,其特征在于,所述向量寄存器组在当前微指令源寄存器索引与上一条微指令目的寄存器索引相同时,向量功能单元在上一条微指令目的寄存器的值写回后执行当前微指令。
10.根据权利要求1所述一种基于RISC-V向量指令扩展的低硬件开销向量处理器架构调度向量指令的方法,其特征在于,包括如下五个步骤:
步骤一,向量指令的取值处理:接收来自RISC-V标量端的向量指令,获取向量指令所用到的标量的值;
步骤二,对于接收的向量指令顺序进行解码和派遣处理:对当前向量指令进行译码,获取当前向量指令对应的立即数、与当前向量指令对应向量功能单元信息交互的记分牌发射队列、分配给当前向量指令的向量寄存器的数量,在当前向量指令读取标量寄存器缓存的使能信号有效时读取当前向量指令所用到的标量的值,将解码后的当前向量指令、当前向量指令所用到的标量的值、当前向量指令对应的立即数、分配给当前向量指令的向量寄存器的数量派遣到与当前向量指令对应向量功能单元信息交互的记分牌发射队列中;
步骤三,记分牌发射队列对对应相同向量功能单元的向量指令按序进行微码化处理:根据分配给当前向量指令的向量寄存器的数量将当前向量指令微码化为微指令发射队列,记录当前未发射微指令条数、微指令目的寄存器索引、微指令源寄存器索引、当前向量指令所用到的标量的值、当前向量指令对应的立即数的值、微指令源寄存器的状态,查询寄存器状态表以获取当前微指令源寄存器状态和目的寄存器状态,在满足发射条件时发射当前微指令并更新指令状态表,在当前微指令发射后更新为下一条微指令并进入下一条微指令的发射操作,在对应向量功能单元执行当前微指令写回最新值的过程中实时更新寄存器状态表中当前微指令目的寄存器的状态;
步骤四,向量功能单元乱序执行接收到的微指令:与当前向量指令对应的向量功能单元接收记分牌发射队列发射的当前微指令的同时,从向量寄存器组中读取当前微指令源寄存器的值,执行当前微指令;
步骤五,乱序写回向量功能单元执行接收到的微指令后的最新值:写回与当前向量指令对应功能单元执行完当前微指令后的最新值至向量寄存器组,更新当前微指令目的寄存器的值及寄存器状态表。
CN202310128069.1A 2023-02-15 2023-02-15 一种基于risc-v向量指令扩展的低硬件开销向量处理器架构 Pending CN116521229A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310128069.1A CN116521229A (zh) 2023-02-15 2023-02-15 一种基于risc-v向量指令扩展的低硬件开销向量处理器架构

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310128069.1A CN116521229A (zh) 2023-02-15 2023-02-15 一种基于risc-v向量指令扩展的低硬件开销向量处理器架构

Publications (1)

Publication Number Publication Date
CN116521229A true CN116521229A (zh) 2023-08-01

Family

ID=87398234

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310128069.1A Pending CN116521229A (zh) 2023-02-15 2023-02-15 一种基于risc-v向量指令扩展的低硬件开销向量处理器架构

Country Status (1)

Country Link
CN (1) CN116521229A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117435259A (zh) * 2023-12-20 2024-01-23 芯瞳半导体技术(山东)有限公司 Vpu的配置方法、装置、电子设备及计算机可读存储介质
CN117539469A (zh) * 2024-01-10 2024-02-09 睿思芯科(成都)科技有限公司 Risc-v的可视化向量编程方法、系统及相关设备
CN117667223A (zh) * 2024-02-01 2024-03-08 上海登临科技有限公司 一种数据冒险解决方法、计算引擎、处理器及电子设备

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117435259A (zh) * 2023-12-20 2024-01-23 芯瞳半导体技术(山东)有限公司 Vpu的配置方法、装置、电子设备及计算机可读存储介质
CN117435259B (zh) * 2023-12-20 2024-03-22 芯瞳半导体技术(山东)有限公司 Vpu的配置方法、装置、电子设备及计算机可读存储介质
CN117539469A (zh) * 2024-01-10 2024-02-09 睿思芯科(成都)科技有限公司 Risc-v的可视化向量编程方法、系统及相关设备
CN117539469B (zh) * 2024-01-10 2024-03-19 睿思芯科(成都)科技有限公司 Risc-v的可视化向量编程方法、系统及相关设备
CN117667223A (zh) * 2024-02-01 2024-03-08 上海登临科技有限公司 一种数据冒险解决方法、计算引擎、处理器及电子设备
CN117667223B (zh) * 2024-02-01 2024-04-12 上海登临科技有限公司 一种数据冒险解决方法、计算引擎、处理器及电子设备

Similar Documents

Publication Publication Date Title
CN116521229A (zh) 一种基于risc-v向量指令扩展的低硬件开销向量处理器架构
US6735682B2 (en) Apparatus and method for address calculation
US7805589B2 (en) Relative address generation
US6301653B1 (en) Processor containing data path units with forwarding paths between two data path units and a unique configuration or register blocks
CN102750133B (zh) 支持simd的32位三发射的数字信号处理器
US6532530B1 (en) Data processing system and method for performing enhanced pipelined operations on instructions for normal and specific functions
US20090300337A1 (en) Instruction set design, control and communication in programmable microprocessor cases and the like
US6148395A (en) Shared floating-point unit in a single chip multiprocessor
EP1468367A1 (en) Multithreaded processor with efficient processing for convergence device applications
US5041968A (en) Reduced instruction set computer (RISC) type microprocessor executing instruction functions indicating data location for arithmetic operations and result location
US8671266B2 (en) Staging register file for use with multi-stage execution units
US7461235B2 (en) Energy-efficient parallel data path architecture for selectively powering processing units and register files based on instruction type
WO2004053707A1 (en) Method and apparatus for aligning operands for a processor
CN113934455A (zh) 指令转换方法及装置
EP0496407A2 (en) Parallel pipelined instruction processing system for very long instruction word
JP5372307B2 (ja) データ処理装置およびその制御方法
CN113946368B (zh) 一种基于risc-v指令集的三级流水线架构、处理器及数据处理方法
CN111813446A (zh) 一种数据加载和存储指令的处理方法和处理装置
CN112559037B (zh) 一种指令执行方法、单元、装置及系统
Ren et al. Swift: A computationally-intensive dsp architecture for communication applications
Lin et al. An efficient VLIW DSP architecture for baseband processing
CN112463218A (zh) 指令发射控制方法及电路、数据处理方法及电路
WO2022141321A1 (zh) Dsp处理器及其并行计算方法
CN113703841B (zh) 一种寄存器数据读取的优化方法、装置及介质
WO2024087039A1 (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