CN116257350B - 一种针对risc-v矢量寄存器的重命名分组装置 - Google Patents
一种针对risc-v矢量寄存器的重命名分组装置 Download PDFInfo
- Publication number
- CN116257350B CN116257350B CN202211095855.8A CN202211095855A CN116257350B CN 116257350 B CN116257350 B CN 116257350B CN 202211095855 A CN202211095855 A CN 202211095855A CN 116257350 B CN116257350 B CN 116257350B
- Authority
- CN
- China
- Prior art keywords
- register file
- physical register
- instruction
- renaming
- mask
- 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.)
- Active
Links
- 239000013598 vector Substances 0.000 title claims abstract description 42
- 238000013507 mapping Methods 0.000 claims description 17
- 230000007246 mechanism Effects 0.000 description 8
- 238000000034 method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012545 processing Methods 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/394—Routing
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开了一种针对RISC‑V矢量寄存器的重命名分组装置,包括物理寄存器堆,至少分为两组,一组为基础物理寄存器堆,一组为掩码物理寄存器堆;其中掩码物理寄存器堆在指令类型为1‑bit元素结果的指令且回写目的寄存器v0时分配;其中基础物理寄存器堆在其余需要回写目的寄存器时分配。针对RISC‑V矢量扩展指令集中使用矢量寄存器v0来作为掩码操作数的指令,本发明物理寄存器堆中增加了掩码物理寄存器堆这一模块,专门用于存放1‑bit元素结果的指令的结果,并专门供需要掩码操作数的指令使用,使得掩码操作数可以从一个较小的掩码物理寄存器堆中读出,从而减少了基础物理寄存器堆的读口资源和功耗开销,并缓解了后端版图布局布线压力。
Description
技术领域
本发明涉及RISC-V处理器(CPU)乱序架构设计的寄存器重命名分组装置。
背景技术
在高性能处理器的微架构设计中,乱序(out-of-order,简称OoO)执行是一种常用的提升性能的方式,其根据数据可用性来决定指令执行的顺序,而非程序本身的指令顺序,从而减少由于指令等待数据而导致处理器停滞所带来的延迟。以下面的指令序列为例,当按序执行时,inst1需要等待inst0的结果,而inst0为除法指令,通常需要较长的执行延时,从而导致处理器停顿等待结果。而在乱序架构中,可以通过检测发现inst2~inst4的操作数不依赖于inst0或者inst1的结果,因此通过提前执行inst2~inst4来减少处理器停顿的延时。
inst0:div x2, x1, x0
inst1:sub x4, x2, x3
inst2:add x3, x5, x6
inst3:add x2, x7, x8
inst4:sub x5, x2, x3
......
然而乱序执行可能会导致处理器的运行出错,例如上述的指令序列,由于inst1无法执行而inst2~inst4提前执行了,若inst3的结果提前直接回写x2寄存器,而inst1可能会错误获取到被inst3更新的x2结果从而导致运行出错。因此在乱序架构的设计中,需要引入额外的机制来避免执行顺序改变带来的问题。
上述例子中的x0~x8,即为指令集架构(ISA)所使用的寄存器。ISA通过引入一定数量的寄存器来保存指令的操作数和结果,而处理器则负责执行ISA所定义的指令功能。不同的ISA可能有不同数量的寄存器,例如x86指令集有8/16个整型寄存器,ARM指令集有32个整型寄存器,RISC-V指令集有32个整型寄存器。这类由指令集架构决定的寄存器称为体系架构寄存器。
而处理器往往需要将体系架构寄存器映射到硬件上的物理寄存器,来实现寄存器数据的写入和读取。在简单的按序架构中,由于指令执行的顺序与程序顺序保持一致,通常只需要和体系架构寄存器相同数量的物理寄存器来做一一映射即可,每条指令根据操作数的索引从相应的物理寄存器读取对应的操作数,并且在指令完成后回写对应的目的寄存器。
而在乱序架构中,通常会通过引入寄存器重命名技术来解决乱序读取和回写寄存器的问题。处理器会引入一张重命名表,每个体系架构寄存器所对应的物理寄存器由重命名表来记录。当一条指令回写一个寄存器时,就为这个寄存器重新映射到一个空闲的物理寄存器,即这条指令的结果将回写被重新映射的物理寄存器上,而后续的指令若需要用到该指令的结果寄存器作为源操作数,则可以通过查找重命名表来获取对应的物理寄存器的信息,并读取相应的数据。
我们还是以上述的指令序列作为例子来阐述重命名表的工作机制,如图1所示,假设有x0~x15共16个体系架构寄存器,有p0~p31共32个物理寄存器。在inst0执行之前,重命名表上记录的映射关系为x0~x8分别映射到p0~p8。
inst0的操作数x0和x1对应着p0和p1,且指令回写x2,则为x2分配新的映射关系p27;
inst1看到的映射表关系发生变化,操作数x2和x3分别对应着p27和p3,且指令回写x4,则为x4分配新的映射关系p28;
inst2看到的映射表关系发生变化,操作数x5和x6分别对应着p5和p6,且指令回写x3,则为x3分配新的映射关系p29;
Inst3看到的映射表关系发生变化,操作数x7和x8分别对应着p7和p8,且指令回写x2,则为x2分配新的映射关系p30。
可以看到,通过上述的重命名机制,哪怕inst3提前发射执行并回写x2,也不会影响inst1获取正确的x2数据,因为两条不同指令的x2映射到了不同的物理寄存器表项。而inst1所对应的p2表项则可以在inst0回写且inst1读取到数据并发射后进行释放给后续的指令使用。由于一个体系架构寄存器在同一时间可能需要占用若干个物理寄存器,因此这种机制往往需要物理寄存器的数量大于体系架构寄存器的数量,否则指令也会因为无法分配到空闲的物理寄存器而被停滞,等待物理寄存器释放。具体的原理可以参考约翰•L.亨尼斯和戴维•A.帕特森著的《计算机体系结构:量化研究方法》。
除了整型寄存器以外,大部分处理器的ISA还包括浮点寄存器或者矢量寄存器,用于浮点指令和矢量指令,例如x86的AVX以及ARM的Neon指令集。类似于整型寄存器,重命名技术也适用于浮点和矢量的乱序执行。
重命名相关现有技术可以参见专利文献:CN105005463A、CN101169710A、CN102566976A、CN104049947A、CN105359089A、CN106155636A、CN108027736A、CN110647361A、CN111221575A。
本发明基于开源架构RISC-V的矢量扩展指令集。RISC-V是一个基于精简指令集(RISC)原则的开源指令集架构(ISA),2010年始于加州大学伯克利分校,现在已有大量的商业公司参与其中,包括英特尔、华为、阿里巴巴等,具体可见官网:https://riscv.org。矢量扩展指令集具体的指令集架构spec文档可以参考网址:https://github.com/riscv/riscv-v-spec/releases/tag/v1.0。
RISC-V矢量扩展指令集包括32个矢量寄存器v0~v31,其中操作数v0不仅可以作为普通的操作数vs1/vs2/vd(vs3),还可以作为唯一的掩码操作数vm用于带条件选择的指令类型。作为掩码操作数时,v0被看做是若干个1-bit的元素,每个bit指示着对应的结果元素是否有效,即是否需要回写到目的寄存器对应的元素上,具体可参见spec 5.3节。相应的,矢量扩展指令集中也包括了若干产生1-bit元素结果的指令,例如整型和浮点的比较指令(spec第11.8节以及第13.3节),mask类指令(spec第15章),以及mask类型的存储指令vlm.v和vsm.v(spec第7.4节)。而mask指令结果如果需要被作为掩码操作数给后续指令使用时,则需要写入v0寄存器,因为v0是唯一的掩码操作数。
掩码操作数的引入使得v0相比普通的矢量寄存器多了一层功能,同时额外的掩码操作数也使得每条指令需要读取的操作数变多了。矢量乱序架构的高性能设计中,若按照普通的重命名机制读写寄存器的话,每条指令需要从物理寄存器堆中读取vs1/vs2/vd(vs3)/vm共4个操作数,如图2所示,可以看到,大量的寄存器读口会造成密集的布线,不仅资源开销大,读口功耗高,更是对后端的综合优化带来较大难度。而掩码操作数vm固定为v0,并不像vs1/vs2/vd(vs3)可以是v0~v31中任意一个寄存器,但是由于重命名机制导致v0可能被存储于物理寄存器堆的任意一个表项中,因此需要像vs1/vs2/vd(vs3)一样从物理寄存器堆中选择。
发明内容
为了解决上述技术问题,本发明提供一种针对RISC-V矢量寄存器的重命名分组装置,结合指令类型和目的寄存器索引来控制v0重命名的表项,规避掩码操作数vm的庞大读口资源,解决上述vm读口带来的资源和功耗开销,以及对后端布局布线的不良影响,其采用如下技术方案:
一种针对RISC-V矢量寄存器的重命名分组装置,包括:
译码逻辑,对输入的矢量指令进行译码获得指令信息,至少包括指令类型、源操作数索引和目的寄存器索引;
重命名表,记录架构寄存器和物理寄存器堆之间的映射关系;
物理寄存器堆,至少分为两组,一组为基础物理寄存器堆,一组为掩码物理寄存器堆;其中掩码物理寄存器堆在指令类型为1-bit元素结果的指令且回写目的寄存器v0时分配;其中基础物理寄存器堆在其余需要回写目的寄存器时分配;
寄存器堆分配和释放逻辑,负责物理寄存器堆的表项分配和释放;
重命名分配控制逻辑,根据译码逻辑获得的指令信息,判断是否需要分配物理寄存器堆的表项用于存放指令结果,以及判断所需要分配的对应的物理寄存器堆;并根据寄存器堆分配和释放逻辑分配的表项,更新重命名表;
重命名分配控制逻辑根据源操作数索引访问重命名表,获取源操作数对应的物理寄存器堆索引,并传递给发射逻辑。
发射逻辑接收指令信息经过重命名表查找和更新后的源操作数索引和目的寄存器索引,访问对应的物理寄存器堆表项读取源操作数数据,并发送给执行逻辑;执行逻辑接收发射逻辑发射的指令及源操作数,并执行相应的指令操作,将结果反馈给回写及完成逻辑;回写及完成逻辑接收执行逻辑反馈的完成的指令信息和指令结果,并将指令结果回写到物理寄存器堆,同时将指令信息返回给寄存器堆分配和释放逻辑。
本发明具有以下有益技术效果:
针对RISC-V矢量扩展指令集中使用矢量寄存器v0来作为掩码操作数的指令,本发明物理寄存器堆中增加了掩码物理寄存器堆这一模块,专门用于存放1-bit元素结果的指令的结果,并专门供需要掩码操作数的指令使用,使得掩码操作数无需作为普通操作数从大量的物理寄存器堆表项中读出,而可以从一个较小的掩码物理寄存器堆中读出,从而减少了基础物理寄存器堆的读口资源和功耗开销,并缓解了后端版图布局布线压力。
附图说明
以下结合附图对本发明作进一步说明:
图1为重命名表工作机制的示意图;
图2为按照普通重命名表工作机制每条指令从物理寄存器堆读取操作数的示意图;
图3为本发明针对RISC-V矢量寄存器的重命名分组装置的示意图;
图4为本发明中重命名表映射方式的示意图。
具体实施方式
本发明具体实施方式有以下参数设定和条件设定:
本发明针对RISC-V矢量扩展指令集(vector extension)的处理器乱序发射架构进行;
本发明中使用的物理寄存器堆资源为:基础物理寄存器堆表项Nbase个(Nbase≥矢量目的寄存器个数),掩码物理寄存器堆表项Nvm个(Nvm≥1);
本发明中1-bit元素结果的指令,包括RISC-V矢量扩展指令集中:整型和浮点的比较指令(spec第11.8节以及第13.3节),mask类指令(spec第15章),mask类型的存储指令vlm.v和vsm.v(spec第7.4节),以及该指令集后续可能会增加的任何结果按1-bit mask元素排列的指令;
本发明可以同时处理m(m≥1)条指令,同时处理的指令条数并不阻碍本发明的可行性。
如图3所示,为本发明一种针对RISC-V矢量寄存器的重命名分组装置,包括:
(一)译码逻辑
对接收到的矢量指令进行译码,获得必要的关键指令信息,包括:
指令类型,是否为1-bit元素结果的指令;
矢量操作数索引,源操作数vs1/vs2/vd/vm有效信息及索引;
矢量目的寄存器索引,目的寄存器vd有效信息及索引。
(二)重命名分配控制逻辑、重命名表和物理寄存器堆
重命名表记录着架构寄存器和物理寄存器堆之间的映射关系。重命名分配控制逻辑根据指令类型和目的寄存器索引,判断是否需要分配物理寄存器堆的表项用于存放指令结果,以及分配哪种物理寄存器堆,并根据寄存器堆分配和释放逻辑分配的表项来更新重命名表;此外,重命名分配控制逻辑还将根据源操作数索引访问重命名表,获取源操作数对应的物理寄存器堆索引,并传递给发射逻辑。
重命名分配控制逻辑根据指令信息,做出如下操作:
(1)根据源操作数索引去重命名表中获取对应的物理寄存器索引,并做出相应的处理。
如图4所示为本发明中重命名表映射方式,所映射到的物理寄存器堆分为两组,一组为基础物理寄存器堆,一组为掩码物理寄存器堆;其中掩码物理寄存器堆在指令类型为1-bit元素结果的指令且回写目的寄存器v0时分配,因此掩码物理寄存器堆总是存放着目的寄存器为v0的结果,掩码物理寄存器堆为指令的掩码操作数v0提供了单独的资源;而基础物理寄存器堆在其余需要回写目的寄存器时分配。
B代表映射到基础物理寄存堆的表项,需要能区分Nbase个表项;M代表映射到掩码物理寄存器堆的表项,需要能区分Nvm个表项。其中,v0寄存器既可以映射到B,也可以映射到M,其分配由最近的一条回写v0寄存器的指令类型决定:
若为1-bit元素结果的指令,则分配且回写到M,将M_newest置高位,拉低B_newest;
若为非1-bit元素结果的指令,则分配且回写到B,将B_newest置高位,拉低M_newest。
B_newest和N_newst代表对应的物理寄存器堆中的v0值是不是最新的。
而v1~v31则仅能分配且回写到B所代表的基础物理寄存器堆。
基于源操作数索引信息和上述重命名表信息,重命名分配控制逻辑将对以下不同的情况做出不同处理:
(1.1)若源操作数vs1/vs2/vd的索引非v0,则直接读取对应的B所代表的基础物理寄存器堆索引即可,后续从基础物理寄存器堆中对应的表项中获取源操作数数据。
(1.2)若源操作数vs1/vs2/vd的索引为v0,且对应的表项B_newest拉低,即v0映射到了M所代表的掩码物理寄存器堆,表示最新的v0数据存在于掩码物理寄存器堆中。由于该类操作数并无直接的掩码物理寄存器堆读口,则需要额外拆分出一条读v0操作数并回写v0的微指令,且为回写的v0新分配一个基础物理寄存器堆表项,将v0数据从掩码物理寄存器堆搬运到v0新分配的基础物理寄存器堆表项中,后续对应的源操作数将可以从新分配到的基础物理寄存器堆表项读取到最新的v0数据。
(1.3)若指令需要掩码操作数v0且在重命名表中v0所对应的表项中查询到M_newest拉低,即v0映射到了B所代表的基础物理寄存器堆,表示最新的v0数据存在于基础物理寄存器堆中,掩码物理寄存器堆中并没有存放最新的v0数据,则需要额外拆分出一条读v0操作数并回写v0的微指令,且为回写的v0新分配一个掩码物理寄存器堆表项,将v0数据从基础物理寄存器堆搬运到v0新分配的掩码物理寄存器堆表项中,在此基础上,指令则可以从掩码物理寄存器堆表项读取到最新的v0数据作为掩码操作数。
(2)根据目的寄存器索引和指令类型决定物理寄存器堆的分配。
(2.1)若目的寄存器索引为v0且为1-bit元素结果的指令,则向寄存器堆分配和释放逻辑请求分配掩码物理寄存器堆表项,并更新重命名表中对应寄存器的映射关系和信息;若表项用尽无法分配,则等待表项被释放后分配;
(2.2)若目的寄存器索引非v0或者非1-bit元素结果的指令,则向寄存器堆分配和释放逻辑请求分配基础物理寄存器堆表项,并更新重命名表中对应寄存器的映射关系和信息;若表项用尽无法分配,则等待表项被释放后分配。
(三)发射逻辑
根据指令类型和信息完成重命名表查找和更新后,将对应的指令信息和物理寄存器堆索引发送给发射逻辑进行指令的发射,指令发射后同时读取对应的物理寄存器堆表项获取源操作数,并发送给执行逻辑。其中,vs1/vs2/vd源操作数只从基础物理寄存器堆读取数据,掩码操作数只从掩码物理寄存器堆读取数据。
(四)执行逻辑
接收发射逻辑发射的指令及源操作数,执行相应的指令操作,并将结果反馈给回写及完成逻辑。
(五)回写及完成逻辑
接收执行逻辑反馈的完成的指令信息和指令结果,并将指令结果回写到物理寄存器堆,根据指令之前分配的物理寄存器堆索引信息,判断将数据回写到基础物理寄存器堆还是掩码物理寄存器堆,同时返回指令信息给寄存器堆分配和释放逻辑。
(六)寄存器堆分配和释放逻辑
负责物理寄存器堆表项的分配和释放。接收回写及完成逻辑返回的指令信息,并判断物理寄存器堆表项是否可以释放;以及接收重命名分配控制逻辑的分配请求,并分配空闲的物理寄存器堆表项。寄存器堆分配和释放逻辑维护一张物理寄存器堆的状态表,记录着每个物理寄存器表项是否被占用、以及在哪条指令执行完成后可以被释放。根据回写及完成逻辑返回的指令信息,寄存器堆分配和释放逻辑将释放不再需要被占用的物理寄存器堆表项;以及根据重命名分配控制逻辑的分配请求,分配空闲的物理寄存器堆表项,并更新对应的状态表。
在上述的具体实施方式中,由于掩码物理寄存器堆仅供指令类型为1-bit元素结果的指令且回写目的寄存器v0时分配,因此其个数可以设置成远小于基础物理寄存器堆的数量,从而减少掩码操作数的读口逻辑资源和功耗。
此外,考虑到实际的使用情况下,掩码操作数通常是作为1-bit的元素提供给指令使用,而只有mask类的指令包括RISC-V矢量扩展指令集中整型和浮点的比较指令(spec第11.8节以及第13.3节)、mask类指令(spec第15章)、mask类型的存储指令vlm.v和vsm.v(spec第7.4节)、以及该指令集后续可能会增加的任何结果按1-bit mask元素排列的指令,能提供这种元素的大小,其他指令的结果元素均以SEW为单位,SEW只能为8/16/32等数值。因此将vm的操作数来源于基础物理寄存器堆的可能,或者说将mask类的指令结果作为普通SEW位宽的元素使用的情况都比较不符合常用的场景,因此这种数据的搬运情况概率较低,对处理器的性能影响较低。
以上仅为本发明较佳实施例,但本发明的保护范围并不局限于此。任何以本发明为基础,对本发明相应技术特征以基本相同的手段,实现基本相同的功能,达到基本相同的效果,并且本领域普通技术人员在被诉侵权行为发生时无需经过创造性劳动就能联想到的特征进行替换,皆涵盖于本发明的保护范围之中。
Claims (10)
1.一种针对RISC-V矢量寄存器的重命名分组装置,包括:
译码逻辑,对输入的矢量指令进行译码获得指令信息,所述指令信息至少包括指令类型、源操作数索引和目的寄存器索引;
重命名表,记录架构寄存器和物理寄存器堆之间的映射关系;
所述物理寄存器堆,至少分为两组,一组为基础物理寄存器堆,一组为掩码物理寄存器堆;其中掩码物理寄存器堆在指令类型为1-bit元素结果的指令且回写目的寄存器v0时分配;所述1-bit元素结果的指令包括RISC-V矢量扩展指令集中整型和浮点的比较指令、mask类指令、mask类型的存储指令vlm.v和vsm.v;其中基础物理寄存器堆在其余需要回写目的寄存器时分配;
寄存器堆分配和释放逻辑,负责所述物理寄存器堆的表项分配和释放;
重命名分配控制逻辑,根据所述译码逻辑获得的指令信息,判断是否需要分配所述物理寄存器堆的表项用于存放指令结果,以及判断所需要分配的对应的所述物理寄存器堆;并根据所述寄存器堆分配和释放逻辑分配的表项,更新所述重命名表;
所述重命名分配控制逻辑根据源操作数索引访问所述重命名表,获取源操作数对应的所述物理寄存器堆索引,并传递给发射逻辑。
2.根据权利要求1所述针对RISC-V矢量寄存器的重命名分组装置,其中,若源操作数vs1/vs2/vd索引非v0,则所述重命名分配控制逻辑直接读取对应的基础物理寄存器堆索引,后续从基础物理寄存器堆对应的表项中读取源操作数数据。
3.根据权利要求1所述针对RISC-V矢量寄存器的重命名分组装置,其中,若源操作数vs1/vs2/vd索引为v0且映射到掩码物理寄存器堆,则所述重命名分配控制逻辑额外拆分出一条读v0操作数并回写v0的微指令,且为回写的v0新分配一个基础物理寄存器堆表项,将v0数据从掩码物理寄存器堆搬运到v0新分配的基础物理寄存器堆表项中,后续从新分配的基础物理寄存器堆表项中读取源操作数数据。
4.根据权利要求1所述针对RISC-V矢量寄存器的重命名分组装置,其中,若指令需要v0作为掩码操作数且v0映射到基础物理寄存器堆,则所述重命名分配控制逻辑额外拆分出一条读v0操作数并回写v0的微指令,且为回写的v0新分配一个掩码物理寄存器堆表项,将v0数据从基础物理寄存器堆搬运到v0新分配的掩码物理寄存器堆表项中,后续从新分配的掩码物理寄存器堆表项中读取源操作数数据。
5.根据权利要求1所述针对RISC-V矢量寄存器的重命名分组装置,其中,所述重命名分配控制逻辑根据目的寄存器索引和指令类型,若目的寄存器索引为v0且为1-bit元素结果的指令,则向所述寄存器堆分配和释放逻辑请求分配掩码物理寄存器堆表项,并更新所述重命名表中对应寄存器的映射关系和信息;若表项用尽无法分配,则等待表项被释放后分配。
6.根据权利要求1所述针对RISC-V矢量寄存器的重命名分组装置,其中,所述重命名分配控制逻辑根据目的寄存器索引和指令类型,若目的寄存器索引非v0或者非1-bit元素结果的指令,则向所述寄存器堆分配和释放逻辑请求分配基础物理寄存器堆表项,并更新所述重命名表中对应寄存器的映射关系和信息;若表项用尽无法分配,则等待表项被释放后分配。
7.根据权利要求1所述的针对RISC-V矢量寄存器的重命名分组装置,其中,所述寄存器堆分配和释放逻辑维护并更新一张所述物理寄存器堆的状态表,所述状态表记录每个物理寄存器表项是否被占用、以及指令执行完成后是否可以被释放。
8.根据权利要求1至7任一所述的针对RISC-V矢量寄存器的重命名分组装置,其中,所述发射逻辑接收指令信息经过所述重命名表查找和更新后的源操作数索引和目的寄存器索引,访问对应的所述物理寄存器堆表项读取源操作数数据,并发送给执行逻辑。
9.根据权利要求8所述的针对RISC-V矢量寄存器的重命名分组装置,其中,所述执行逻辑接收所述发射逻辑发射的指令及源操作数,并执行相应的指令操作,将结果反馈给回写及完成逻辑。
10.根据权利要求9所述的针对RISC-V矢量寄存器的重命名分组装置,其中,所述回写及完成逻辑接收所述执行逻辑反馈的完成的指令信息和指令结果,并将指令结果回写到所述物理寄存器堆,同时将指令信息返回给所述寄存器堆分配和释放逻辑。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211095855.8A CN116257350B (zh) | 2022-09-06 | 2022-09-06 | 一种针对risc-v矢量寄存器的重命名分组装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211095855.8A CN116257350B (zh) | 2022-09-06 | 2022-09-06 | 一种针对risc-v矢量寄存器的重命名分组装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116257350A CN116257350A (zh) | 2023-06-13 |
CN116257350B true CN116257350B (zh) | 2023-12-08 |
Family
ID=86681510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211095855.8A Active CN116257350B (zh) | 2022-09-06 | 2022-09-06 | 一种针对risc-v矢量寄存器的重命名分组装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116257350B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104067224A (zh) * | 2011-12-23 | 2014-09-24 | 英特尔公司 | 在不同的粒度水平下对数据值进行广播和掩码的指令执行 |
CN112416432A (zh) * | 2011-12-23 | 2021-02-26 | 英特尔公司 | 用于数据类型的下转换的装置和方法 |
CN112912843A (zh) * | 2018-08-14 | 2021-06-04 | 优创半导体科技有限公司 | 具有精确中断和/或重写的向量指令 |
CN113467836A (zh) * | 2021-06-30 | 2021-10-01 | 广东赛昉科技有限公司 | 一种固定常数相关指令的重命名方法及系统 |
CN113961248A (zh) * | 2021-11-12 | 2022-01-21 | 海光信息技术股份有限公司 | 寄存器映射方法、处理器、芯片及电子设备 |
CN114579188A (zh) * | 2022-03-17 | 2022-06-03 | 成都启英泰伦科技有限公司 | 一种risc-v向量访存处理系统及处理方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013095635A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Instruction for merging mask patterns |
US9665368B2 (en) * | 2012-09-28 | 2017-05-30 | Intel Corporation | Systems, apparatuses, and methods for performing conflict detection and broadcasting contents of a register to data element positions of another register |
US11544214B2 (en) * | 2015-02-02 | 2023-01-03 | Optimum Semiconductor Technologies, Inc. | Monolithic vector processor configured to operate on variable length vectors using a vector length register |
US11188332B2 (en) * | 2019-05-10 | 2021-11-30 | International Business Machines Corporation | System and handling of register data in processors |
CN112214241B (zh) * | 2020-09-23 | 2023-11-24 | 上海赛昉科技有限公司 | 一种分布式指令执行单元的方法及系统 |
CN115964087A (zh) * | 2022-12-30 | 2023-04-14 | 成都申威科技有限责任公司 | 基于risc-v指令集的向量寄存器堆缓存系统 |
-
2022
- 2022-09-06 CN CN202211095855.8A patent/CN116257350B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104067224A (zh) * | 2011-12-23 | 2014-09-24 | 英特尔公司 | 在不同的粒度水平下对数据值进行广播和掩码的指令执行 |
CN112416432A (zh) * | 2011-12-23 | 2021-02-26 | 英特尔公司 | 用于数据类型的下转换的装置和方法 |
CN112912843A (zh) * | 2018-08-14 | 2021-06-04 | 优创半导体科技有限公司 | 具有精确中断和/或重写的向量指令 |
CN113467836A (zh) * | 2021-06-30 | 2021-10-01 | 广东赛昉科技有限公司 | 一种固定常数相关指令的重命名方法及系统 |
CN113961248A (zh) * | 2021-11-12 | 2022-01-21 | 海光信息技术股份有限公司 | 寄存器映射方法、处理器、芯片及电子设备 |
CN114579188A (zh) * | 2022-03-17 | 2022-06-03 | 成都启英泰伦科技有限公司 | 一种risc-v向量访存处理系统及处理方法 |
Non-Patent Citations (2)
Title |
---|
三级流水线RISC-V处理器设计与验证;折如义;李炳辉;姜佩贺;;电子技术应用(第05期);全文 * |
王沛东.基于RISC-V指令集的BOOM处理器优化与验证.中国优秀硕士学位论文全文数据库 (信息科技辑).2020,全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN116257350A (zh) | 2023-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6574725B1 (en) | Method and mechanism for speculatively executing threads of instructions | |
US6694426B2 (en) | Method and apparatus for staggering execution of a single packed data instruction using the same circuit | |
US7769986B2 (en) | Method and apparatus for register renaming | |
US6351804B1 (en) | Control bit vector storage for a microprocessor | |
US5155817A (en) | Microprocessor | |
US8850121B1 (en) | Outstanding load miss buffer with shared entries | |
US20120060015A1 (en) | Vector Loads with Multiple Vector Elements from a Same Cache Line in a Scattered Load Operation | |
JPS59501684A (ja) | 目的命令ストリ−ムへ殆んど実時間で插入するためのソ−スおよび目的命令ストリ−ムの外部における加速式命令写像 | |
KR102524565B1 (ko) | 로드 스토어 유닛들을 바이패싱하여 스토어 및 로드 추적 | |
CN107851017B (zh) | 用于传输多个数据结构的设备和方法 | |
US20140047218A1 (en) | Multi-stage register renaming using dependency removal | |
US6425072B1 (en) | System for implementing a register free-list by using swap bit to select first or second register tag in retire queue | |
US6266763B1 (en) | Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values | |
EP0933697A2 (en) | A method and system for handling multiple store instruction completions in a processing system | |
US6873184B1 (en) | Circular buffer using grouping for find first function | |
TW444179B (en) | A data processing system having an apparatus for exception tracking during out-of-order operation and method therefor | |
CN115437691B (zh) | 一种针对risc-v矢量与浮点寄存器的物理寄存器堆分配装置 | |
US6240507B1 (en) | Mechanism for multiple register renaming and method therefor | |
CN116257350B (zh) | 一种针对risc-v矢量寄存器的重命名分组装置 | |
US7080170B1 (en) | Circular buffer using age vectors | |
US20050010744A1 (en) | Store-to-load forwarding buffer using indexed lookup | |
US6442677B1 (en) | Apparatus and method for superforwarding load operands in a microprocessor | |
CN111767081A (zh) | 用于加速存储处理的装置、方法和系统 | |
US5765017A (en) | Method and system in a data processing system for efficient management of an indication of a status of each of multiple registers | |
JP6891596B2 (ja) | プロセッサ |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |