《大话处理器》连载——微架构(15) 寄存器重命名
2011-08-21 21:56
399 查看
寄存器不能随便改名字,否则原来的数据依赖关系被打乱,会导致错误的执行结果,那么怎样才能既保留原先的数据依赖关系,又能将没有数据依赖性的指令的寄存器改名字呢?
这里介绍一种在处理器中经常实现的策略:
1. 将每条指令的目的寄存器映射到新的物理寄存器;
2. 指令的源寄存器映射为ISA寄存器最近映射到的那个物理寄存器;
3. 当本条指令完成后,该目的寄存器映射的更早的物理寄存器就可以释放了;
文字还是太抽象,看图有真相:
寄存器重名示例
在这个例子中,指令的第一个寄存器是目的寄存器,后2个是源寄存器,R1,R2,R3,R4是ISA寄存器,F1….F16是物理寄存器。
R1,R2,R3,R4一开始被映射到F1,F2,F3,F4,第1条指令的目的寄存器是R3,因此将R3重新映射到F5,图中的粗体表示对目的寄存器重新映射。第2条指令的源操作数需要访问R3,就使用R3的最新映射值——F5,这样就保证了指令2和指令1的数据相关性。
指令3和指令2有反相关,将指令3的R2映射为F7,这样指令3和指令2就没有相关性了,即使指令3在指令2前面执行,也不会影响指令2的结果。
指令4和指令3有输出相关,经过寄存器重命名后,指令4和指令3的R2分别对应不同的物理寄存器,它们之间的相关性就去除了。
同样的原理,指令4和指令5的相关性被保留。
如果按照这种方式映射下去,物理寄存器自然会被使用完。因此,需要实时的释放,已备重新分配。R4一开始映射到F4,当第2条指令执行完成后,R4的值就在F6中了,以后访问R4时,都会使用最新的F6,而不会使用F4,这样F4就可以被释放了。
在这种策略中,指令完全不需要访问ISA寄存器,只需要访问物理寄存器。
这里介绍一种在处理器中经常实现的策略:
1. 将每条指令的目的寄存器映射到新的物理寄存器;
2. 指令的源寄存器映射为ISA寄存器最近映射到的那个物理寄存器;
3. 当本条指令完成后,该目的寄存器映射的更早的物理寄存器就可以释放了;
文字还是太抽象,看图有真相:
寄存器重名示例
在这个例子中,指令的第一个寄存器是目的寄存器,后2个是源寄存器,R1,R2,R3,R4是ISA寄存器,F1….F16是物理寄存器。
R1,R2,R3,R4一开始被映射到F1,F2,F3,F4,第1条指令的目的寄存器是R3,因此将R3重新映射到F5,图中的粗体表示对目的寄存器重新映射。第2条指令的源操作数需要访问R3,就使用R3的最新映射值——F5,这样就保证了指令2和指令1的数据相关性。
指令3和指令2有反相关,将指令3的R2映射为F7,这样指令3和指令2就没有相关性了,即使指令3在指令2前面执行,也不会影响指令2的结果。
指令4和指令3有输出相关,经过寄存器重命名后,指令4和指令3的R2分别对应不同的物理寄存器,它们之间的相关性就去除了。
同样的原理,指令4和指令5的相关性被保留。
如果按照这种方式映射下去,物理寄存器自然会被使用完。因此,需要实时的释放,已备重新分配。R4一开始映射到F4,当第2条指令执行完成后,R4的值就在F6中了,以后访问R4时,都会使用最新的F6,而不会使用F4,这样F4就可以被释放了。
在这种策略中,指令完全不需要访问ISA寄存器,只需要访问物理寄存器。
相关文章推荐
- 《大话处理器》连载——微架构(6) 流水线上的冒险——免不了磕磕绊绊
- 《大话处理器》连载——微架构(13) 去数据相关和控制相关
- 《大话处理器》连载——微架构(20) 处理器并行设计——Flynn分类
- 《大话处理器》连载——微架构(22) Superscalar处理器实例——Intel P4 CPU
- 《大话处理器》连载——微架构(9) 分支预测——以古为镜,可以知兴替
- 《大话处理器》连载——微架构(1) 顺溜的2级流水线
- 《大话处理器》连载——微架构(11) 从顺序执行到乱序执行——因时制宜
- 《大话处理器》连载——微架构(14) 去伪相关——让伪军投诚
- 《大话处理器》连载——微架构(21) 指令并行的“绿营”和“蓝营”
- 《大话处理器》连载——微架构(2) 顺溜流水线的深入分析
- 《大话处理器》连载——微架构(10) 分支预测实现与条件执行
- 《大话处理器》连载——微架构(16) Buffer的作用——去耦合
- 《大话处理器》连载——微架构(19) 乱序执行总结
- 《大话处理器》连载——微架构(12) 指令的相关
- 《大话处理器》连载—PC机结构探秘(6)显示设备——脸面(1)
- 《云计算架构技术与实践》连载15:2.3.2~2.3.6 弹性伸缩、高性能、用户体验、高安全、高可靠
- ISTQB AL-TM连载系列15:测试与开发在缺陷认定上的冲突
- 无准备,不编程——计算机达人成长之路(15)连载
- 《连载 | 物联网框架ServerSuperIO教程》- 15.数据持久化接口的使用。附:3.2发布与版本更新说明。
- 《大话处理器》连载—PC机结构探秘(7)显示设备——脸面(2)