《大话处理器》连载——微架构(18) 指令的顺序提交
2011-08-24 23:01
323 查看
在指令的执行过程中,通常会有中断和异常产生,例如在下面这个例子中,
中断例子
XOR指令执行完后,来了一个中断,中断处理一般都是将处理器的ISA寄存器压栈,执行中断服务程序,然后再退回来执行中断后面的指令。精确中断(Precise Interrupt)要求中断前的指令都执行,中断后的指令都没有执行,而在乱序执行内核中,MOV、INC指令有可能提前到XOR前面执行,那么怎么来实现精确中断呢?
解决方法就是:在指令乱序执行之后,再加一个步骤:指令顺序提交(In-order commit)。乱序执行后,指令的结果虽然出来了,但是这个结果并没有立即提交到ISA寄存器中,而是先缓存起来,只有当前指令前面的指令提交后,这条指令才能提交。
指令的顺序提交也能解决投机执行出错的问题。如下图所示:
投机执行的示意图
分支预测单元预测到JNZ跳转到XOR处执行,乱序执行让XOR指令在ADD前面执行,不过天有不测风云,处理器执行到JNZ时,发现分支预测单元预测错了,实际上应该执行的是MOV这个分支,使用顺序提交策略,JNZ后面指令的结果都没有提交,可以直接抛弃,重新开始执行MOV这条路径即可。
为了实现指令的顺序提交,处理器内部使用了一个Buffer,叫做重排序缓冲区(ROB,Re-order Buffer),多数的学术文章都叫这个名字,龙芯把这个buffer叫做Reorder Queue,简称ROQ(总要有所区别嘛)。
每条完成寄存器重命名的指令都要送到ROB中,ROB中的指令按照初始顺序存放,指令经乱序执行后,只是修改了处理器内部的物理寄存器,并没有修改处理器的ISA寄存器(汇编指令能看到的寄存器),指令在提交时,按照ROB中的顺序,顺序的修改处理器的ISA寄存器。
中断例子
XOR指令执行完后,来了一个中断,中断处理一般都是将处理器的ISA寄存器压栈,执行中断服务程序,然后再退回来执行中断后面的指令。精确中断(Precise Interrupt)要求中断前的指令都执行,中断后的指令都没有执行,而在乱序执行内核中,MOV、INC指令有可能提前到XOR前面执行,那么怎么来实现精确中断呢?
解决方法就是:在指令乱序执行之后,再加一个步骤:指令顺序提交(In-order commit)。乱序执行后,指令的结果虽然出来了,但是这个结果并没有立即提交到ISA寄存器中,而是先缓存起来,只有当前指令前面的指令提交后,这条指令才能提交。
指令的顺序提交也能解决投机执行出错的问题。如下图所示:
投机执行的示意图
分支预测单元预测到JNZ跳转到XOR处执行,乱序执行让XOR指令在ADD前面执行,不过天有不测风云,处理器执行到JNZ时,发现分支预测单元预测错了,实际上应该执行的是MOV这个分支,使用顺序提交策略,JNZ后面指令的结果都没有提交,可以直接抛弃,重新开始执行MOV这条路径即可。
为了实现指令的顺序提交,处理器内部使用了一个Buffer,叫做重排序缓冲区(ROB,Re-order Buffer),多数的学术文章都叫这个名字,龙芯把这个buffer叫做Reorder Queue,简称ROQ(总要有所区别嘛)。
每条完成寄存器重命名的指令都要送到ROB中,ROB中的指令按照初始顺序存放,指令经乱序执行后,只是修改了处理器内部的物理寄存器,并没有修改处理器的ISA寄存器(汇编指令能看到的寄存器),指令在提交时,按照ROB中的顺序,顺序的修改处理器的ISA寄存器。
相关文章推荐
- 《大话处理器》连载——微架构(3) 从子弹射击到指令执行
- 《大话处理器》连载——微架构(17) 指令调度
- 《大话处理器》连载——微架构(11) 从顺序执行到乱序执行——因时制宜
- 《大话处理器》连载——微架构(21) 指令并行的“绿营”和“蓝营”
- 《大话处理器》连载——微架构(4) 史上最经典的5级流水线
- 《大话处理器》连载——微架构(12) 指令的相关
- 《大话处理器》连载——微架构(5) DSP更深的流水线
- 《大话处理器》连载——微架构(8) 流水线上的冒险——控制冒险
- 《大话处理器》连载——微架构(7) 流水线上的冒险——数据冒险
- 【JavaWeb-18】ActionContext存取数据、ValueStack存取值、EL新查找顺序、iterator、OGNL投影、其他标签、UI主题、防重复提交
- 私有云架构连载 - 第三部分 私有云的一些概念
- 汇编学习(18)跳转指令
- 步步深入:MySQL架构总览->查询执行流程->SQL解析顺序
- 连载《一个程序猿的生命周期》-18.离职前与领导的交流
- 【连载】关系型数据库是如何工作的?(18) - 查询管理器之动态编程
- Nginx 配置指令的执行顺序
- 《云计算架构技术与实践》连载(3):2.1 云计算的总体架构
- Nginx location指令匹配顺序规则
- 《云计算架构技术与实践》连载(13)2.3 云计算核心架构竞争力衡量维度
- Nginx 配置指令的执行顺序(十一)