寄存器重命名
寄存器重命名
7.1 概述
数据相关性分为WAW、WAR、RAW,只有RAW是真的相关性,其他两种相关性都是和寄存器名字相关,可通过寄存器重命名解决。
由于是寄存器个数有限导致了假相关性的存在,那么解决办法就是增加寄存器个数。如果增加指令集中的寄存器个数,那么会导致以前的程序需要重新编译。所以可以采用硬件管理的寄存器重命名,处理器中实际的寄存器个数多于指令集中定义的通用寄存器个数。
7.2 寄存器重命名方式
- 将逻辑寄存器扩展来实现寄存器重命名
- 使用统一的物理寄存器来实现寄存器重命名
- 使用ROB来实现寄存器重命名
7.3 重命名映射表
重命名映射表用来记录逻辑寄存器和物理寄存器之间的映射关系,指令在进行寄存器重命名的时候,它的源寄存器通过查找RAT而得到其对应的物理寄存器编号,而指令的目的寄存器也会对应到一个新的物理寄存器,这个映射关系写到重命名映射表中。
7.4 超标量处理器的寄存器重命名
- 从重命名寄存器中找到逻辑寄存器对应的物理寄存器
- 从空闲列表中找到一个空闲的物理寄存器,将其作为逻辑指令目的寄存器对应的物理寄存器
- 将目的逻辑寄存器和物理寄存器的映射关系写到重命名映射表中。
7.5 寄存器重命名过程的恢复
7.6 分发
对于超标量处理器来说,乱序执行才是最关键的。流水线的分发阶段就是顺序执行和乱序执行的分界点,指令经过寄存器重命名后就会进入流水线的分发阶段。
流水线的分发就是将寄存器重命名之后的指令写到发射队列和重排序缓存的过程。指令到达发射队列后,就可以按照乱序的方式执行了,通过重排序将这些指令再变回到程序中指定的顺序。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】