玄铁C910寄存器重命名

编程入门 行业动态 更新时间:2024-10-09 23:22:29

玄铁C910<a href=https://www.elefans.com/category/jswz/34/1768029.html style=寄存器重命名"/>

玄铁C910寄存器重命名

1、 寄存器重命名技术

寄存器重命名技术是解决乱序处理器中产生的数据冒险的技术。在C910这样的乱序多发射处理器中,指令经过译码后进入到乱序发射阶段,如果不做处理,乱序后不同指令间对架构寄存器中数据的处理会出现冲突,因此在乱序发射前需要保证乱序发射的指令具有表明指令间先后关系的操作。

玄铁C910中的寄存器重命名主要在两个单元中,分别为IDU和RTU。在IDU中,主要在ir流水级中,通过寄存器重命名表来完成重命名操作。

2、 寄存器重命名表(ir_rt)

玄铁C910中有33个表项来存放指令的目的寄存器对应的源寄存器的索引以及指令其他相关信息。在寄存器重命名表中,会将当周期的四条指令的相关信息写入表项中。目的寄存器号会经过二进制-独热码转换后,作为表项堆的写入索引。

寄存器重命名表在复位时会与物理寄存器建立一一对应关系。在向表项中写入指令的目的寄存器对应的物理寄存器的索引时,遵循 inst3 >2>1>0>update的优先级,这是因为后序指令比前序指令拥有更高的写入优先级。

在完成寄存器重命名后,指令要读取源寄存器和目的寄存器的数据时,读取32个逻辑寄存器表项中的数据,当后序指令的源寄存器和前序指令的目的寄存器相同时,会发生match情况,当发生match时,不需要再访问寄存器堆取数据,而是直接旁路获得数据。

玄铁C910中存在一种特殊指令,MOV指令,即零延时跳转指令,可以直接把源寄存器的数据传递给目的寄存器,其他指令和mov指令发生match情况时,可以直接把mov源寄存器的数据bypass给指令的目的寄存器。

当inst1的目的寄存器和inst0(mov)的src0相同,inst1可能会释放inst0的src0的寄存器,这时当inst2的src 和mov指令的src0数据相同时就会取不到数据,

因此需要设置bypass_over信号,跳过inst1直接bypass

源寄存器的match:

3、目的寄存器的release

dst_reg[5]表示对应的逻辑寄存器为X32,在玄铁C910中用于暂存微操作的中间数据。

需要区分开 dst_reg和rel_preg,当要进行物理寄存器释放时,需要释放rel_preg


本文章仅供学习交流,如有引用请标注出处。

更多推荐

玄铁C910寄存器重命名

本文发布于:2024-02-11 21:22:22,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1683576.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:寄存器   重命名   玄铁

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!