一种针对RISC-V矢量与浮点寄存器的物理寄存器堆分配装置制造方法及图纸

技术编号:35879438 阅读:20 留言:0更新日期:2022-12-07 11:18
本发明专利技术公开了一种针对RISC

【技术实现步骤摘要】
一种针对RISC

V矢量与浮点寄存器的物理寄存器堆分配装置


[0001]本专利技术涉及RISC

V处理器(CPU)乱序架构矢量与浮点寄存器的物理寄存器堆分配装置。

技术介绍

[0002]在高性能处理器的微架构设计中,乱序(out

of

order,简称OoO)执行是一种常用的提升性能的方式,其根据数据可用性来决定指令执行的顺序,而非程序本身的指令顺序,从而减少由于指令等待数据而导致处理器停滞所带来的延迟。以下面的指令序列为例,当按序执行时,指令1需要等待指令0的结果,而指令0为除法指令,通常需要较长的执行延时,从而导致处理器停顿等待结果。而在乱序架构中,可以通过检测发现指令2~指令4的操作数不依赖于指令0或者指令1的结果,因此通过提前执行指令2~指令4来减少处理器停顿的延时。
[0003]指令0:div x2, x1, x0指令1:sub x4, x2, x3指令2:add x3, x5, x6指令3:add x2, x7, x8指令4:sub x5, x2, x3......然而乱序执行可能会导致处理器的运行出错,例如上述的指令序列,由于指令1无法执行而指令2~指令4提前执行了,若指令3的结果提前直接回写x2寄存器,而指令1可能会错误获取到被指令3更新的x2结果从而导致运行出错。因此在乱序架构的设计中,需要引入额外的机制来避免执行顺序改变带来的问题。
[0004]上述例子中的x0~x8,即为指令集架构(ISA)所使用的寄存器。ISA通过引入一定数量的寄存器来保存指令的操作数和结果,而处理器则负责执行ISA所定义的指令功能。不同的ISA可能有不同数量的寄存器,例如x86指令集有8/16个整型寄存器,ARM指令集有32个整型寄存器,RISC

V指令集有32个整型寄存器。这类由指令集架构决定的寄存器称为体系架构寄存器。
[0005]而处理器往往需要将体系架构寄存器映射到硬件上的物理寄存器,来实现寄存器数据的写入和读取。在简单的按序架构中,由于指令执行的顺序与程序顺序保持一致,通常只需要和体系架构寄存器相同数量的物理寄存器来做一一映射即可,每条指令根据操作数的索引从相应的物理寄存器读取对应的操作数,并且在指令完成后回写对应的目的寄存器。
[0006]而在乱序架构中,通常会通过引入寄存器重命名技术来解决乱序读取和回写寄存器的问题。处理器会引入一张重命名表,每个体系架构寄存器所对应的物理寄存器由重命名表来记录。当一条指令回写一个寄存器时,就为这个寄存器重新映射到一个空闲的物理寄存器,即这条指令的结果将回写被重新映射的物理寄存器上,而后续的指令若需要用到
该指令的结果寄存器作为源操作数,则可以通过查找重命名表来获取对应的物理寄存器的信息,并读取相应的数据。
[0007]我们还是以上述的指令序列作为例子来阐述重命名表的工作机制,如图1所示,假设有x0~x15共16个体系架构寄存器,有p0~p31共32个物理寄存器。在指令0执行之前,重命名表上记录的映射关系为x0~x8分别映射到p0~p8。
[0008]指令0的操作数x0和x1对应着p0和p1,且指令回写x2,则为x2分配新的映射关系p27;指令1看到的映射表关系发生变化,操作数x2和x3分别对应着p27和p3,且指令回写x4,则为x4分配新的映射关系p28;指令2看到的映射表关系发生变化,操作数x5和x6分别对应着p5和p6,且指令回写x3,则为x3分配新的映射关系p29;指令3看到的映射表关系发生变化,操作数x7和x8分别对应着p7和p8,且指令回写x2,则为x2分配新的映射关系p30。
[0009]可以看到,通过上述的重命名机制,哪怕指令3提前发射执行并回写x2,也不会影响指令1获取正确的x2数据,因为两条不同指令的x2映射到了不同的物理寄存器表项。而指令1所对应的p2表项则可以在指令0回写且指令1读取到数据并发射后进行释放给后续的指令使用。由于一个体系架构寄存器在同一时间可能需要占用若干个物理寄存器,因此这种机制往往需要物理寄存器的数量大于体系架构寄存器的数量,否则指令也会因为无法分配到空闲的物理寄存器而被停滞,等待物理寄存器释放。具体的原理可以参考约翰

L.亨尼斯和戴维

A.帕特森著的《计算机体系结构:量化研究方法》。
[0010]除了整型寄存器以外,大部分处理器的ISA还包括浮点寄存器或者矢量寄存器,用于浮点指令和矢量指令,例如x86的AVX以及ARM的Neon指令集。类似于整型寄存器,重命名技术也适用于浮点和矢量的乱序执行。
[0011]本专利技术基于开源架构RISC

V的浮点扩展指令集和矢量扩展指令集vector extension,具体的指令集架构spec文档可以参考网址:https://github.com/RISC

V/RISC

V

isa

manual/releases/download/Ratified

IMAFDQC/RISC

V

spec

20191213.pdf;https://github.com/RISC

V/RISC

V

v

spec/releases/tag/v1.0。
[0012]浮点扩展指令集包括32个浮点寄存器f0~f31,每个寄存器的位宽为FLEN(FLEN=32/64)。矢量扩展指令集包括32个矢量寄存器v0~v31,每个寄存器的位宽为VLEN(VLEN=64/128/256...2048)。
[0013]通常来说,不同类型的体系架构寄存器都拥有各种的物理寄存器堆,例如Intel的skylake架构有180个独立的整型物理寄存器和168个矢量物理寄存器;AMD的Zen 2有180个独立的整型物理寄存器和160个浮点物理寄存器(参考https://www.hardwaretimes.com/intel

sunny

cove

vs

amd

zen
‑2‑
core

architectures

10th

gen

ice

lake

vs

ryzen

3000/);开源RISC

V架构BOOM有独立的128个整型物理寄存器和128个浮点物理寄存器堆(参考https://readthedocs.org/projects/RISC

V

boom/downloads/本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种针对RISC

V矢量与浮点寄存器的物理寄存器堆分配装置,包括:译码逻辑,对输入指令进行译码获得指令信息,至少包括指令类型、源操作数索引和目的寄存器索引;重命名表,记录架构寄存器和物理寄存器堆之间的映射关系;所述物理寄存器堆,至少分为三组,一组为浮点独享物理寄存器堆,一组为矢量独享物理寄存器堆,一组为共享物理寄存器堆;其中所述浮点独享物理寄存器堆只分配给浮点架构寄存器使用,其中所述矢量独享物理寄存器堆只分配给矢量架构寄存器使用,其中所述共享物理寄存器可以分配给浮点架构寄存器和矢量架构寄存器使用;寄存器堆分配和释放控制逻辑,负责所述物理寄存器堆的表项分配和释放;监测返回控制逻辑,监测所述共享物理寄存器堆是否有不需要被使用到的有效表项,以及监测所述浮点独享物理寄存器堆和所述矢量独享物理寄存器堆是否有空闲表项,将对应的表项数据以及搬运请求发送给重命名分配控制逻辑;所述重命名分配控制逻辑,根据所述译码逻辑获得的指令信息,判断是否需要分配所述物理寄存器堆的表项用于存放指令结果,以及判断所需要分配的对应的所述物理寄存器堆,并根据所述寄存器堆分配和释放控制逻辑分配的表项,更新所述重命名表;并且根据所述监测返回控制逻辑的反馈,确定是否需要将共享物理寄存器堆的表项数据搬运到独享物理寄存器堆表项中;所述重命名分配控制逻辑根据源操作数索引访问所述重命名表,获取源操作数对应的所述物理寄存器堆索引,并传递给发射逻辑。2.根据权利要求1所述针对RISC

V矢量与浮点寄存器的物理寄存器堆分配装置,其中,所述重命名表包括浮点重命名表和矢量重命名表,所述浮点重命名表记录浮点架构寄存器与浮点独享物理寄存器堆以及共享物理寄存器堆之间的映射关系,所述矢量重命名表记录矢量架构寄存器与矢量独享物理寄存器堆以及共享物理寄存器堆之间的映射关系。3.根据权利要求2所述针对RISC

V矢量与浮点寄存器的物理寄存器堆分配装置,其中,所述重命名分配控制逻辑确定所述物理寄存器堆分配时,若需要回写浮点寄存器,并且有空闲的所述浮点独享物理寄存器堆表项,则分配对应的表项,并更新所述浮点重命名表。4.根据权利要求2所述针对RISC

V矢量与浮点寄存器的物理寄存器堆分配装置,其中,所述重命名分配控制逻辑确定所述物理寄存器堆分配时,若需要回写矢量寄存器,并且有空闲的所述矢量独享物理寄存器堆表项,则分配对应的表项,并更新所述矢量重命名表。5.根据权利要求2所述针对RISC

V矢量与浮点寄存器的物理寄存器堆分配装置,其中,所述重命名分配控制逻辑确定所述物理寄存器堆分配时,若需要回写浮点寄存器,而没有空闲的浮点独享物理寄存器堆表项,或者需要回写矢量寄存器,而没...

【专利技术属性】
技术研发人员:罗嘉蕙
申请(专利权)人:进迭时空杭州科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1