[发明专利]一种超标量微处理器中实现存储指令流水提交方法有效
| 申请号: | 201410685360.X | 申请日: | 2014-11-25 |
| 公开(公告)号: | CN104391680A | 公开(公告)日: | 2015-03-04 |
| 发明(设计)人: | 尹飞;胡向东;翁志强;路冬冬 | 申请(专利权)人: | 上海高性能集成电路设计中心 |
| 主分类号: | G06F9/38 | 分类号: | G06F9/38;G06F9/30 |
| 代理公司: | 上海泰能知识产权代理事务所 31233 | 代理人: | 宋缨;孙健 |
| 地址: | 200120 上海市*** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 标量 微处理器 实现 存储 指令 流水 提交 方法 | ||
技术领域
本发明涉及超标量微处理器的访存指令完成和提交逻辑,特别是涉及一种超标量微处理器中实现存储指令流水提交方法。
背景技术
当前的超标量微处理器都支持乱序发射、乱序执行、推测执行和顺序提交,如图1所示,指令流水线通常包括取指(Fetch)、译码(Decode)、寄存器重命名(Map)、发射(Issue)、执行(Execute)、提交(Retire)等几个基本的流水线站台。指令执行完成后按程序顺序进行提交是基本设计要求,因此当前的超标量微处理器都设置有一个全指令重排序缓冲(ROB),该缓冲是一个带头尾指针的循环队列,所有进入指令流水线的指令按程序顺序登记到ROB的队尾。指令执行以后,将异常或完成信息登记在各自对应的ROB条目中,登记的顺序与程序顺序无关。每个时钟周期,检查ROB队头,如果队头第一条指令发生异常,则撤销该指令对处理器状态产生的影响,并进入异常处理流程;如果队头连续的一条或多条指令执行完成并且没有发生异常,则接收指令对处理器状态产生的影响,简称指令提交。
为了描述方便,此处按程序的顺序对指令进行年龄排序,排在程序前面的指令称为年老的指令,排在程序后面的指令称为年轻的指令,所有进入指令流水线但还没有提交的指令称为飞行的指令。
ROB用于存放所有飞行指令的信息,包括取指地址和执行结果等。将指令在ROB中分配的条目号高位扩展一位后,作为指令的年龄序号(Inum号),该序号是指令在飞行期间的唯一标识,可用于指令间的年龄排序,排序方法是:两条指令的Inum号高位相同时,低位值越大的指令越年轻;高位不同时,低位值越小的指令则越年轻。
每个时钟周期里提交的指令数量会最终制约处理器单位时间内执行的指令数量(IPC),对处理器性能产生至关重要的影响。在精简指令集系统(RISC)中,指令大致可分为两类,一类是运算指令,这类指令的操作数都在处理器内部的寄存器中,其执行所花费的时钟周期是固定的;另一类是访存指令,这类指令所访问的数据可能在处理器内部不同缓存(Cache)中,也可能在外部主存中,其执行所花费的时钟周期是不固定的,有的需要几个时钟周期,有的可能需要上百个时钟周期。当访存指令到达ROB头部,但还未执行完成时,会长时间无法提交。因此,要提高指令的提交带宽,关键就是要解决访存指令的提交效率。
访存指令分为装入指令(Load)和存储指令(Store)两种,其中Load指令从一级数据Cache(DCache)或主存中读出数据并写入寄存器后,就表示执行完成可以提交。由于超标量微处理器支持乱序执行和推测执行,为保证程序执行的正确性,Store指令只能在确认是当前指令序列中最年老的指令且无异常时,才能将数据写入DCache或发向核外主存,然后才能提交。由此可见,Store指令的写DCache操作依赖于前一条指令的提交时刻,即使在命中一级数据Cache且具有可写权限的情况下,Store指令也无法与比它年老的指令一起提交,因此Store指令的提交速度非常慢。
为了控制访存指令的执行和提交,当前的超标量处理器中通常会在访存部件设置装入指令重排序缓冲(LQ)和存储指令重排序缓冲(SQ)。LQ用于存放所有飞行的Load类指令信息,包括Inum号、访存地址、目标寄存器号和执行结果等;SQ用于存放所有飞行的Store类指令信息,包括的Inum号、访存地址、存储数据和执行结果等。
发明内容
传统的访存指令提交流程如下,ROB与LQ/SQ的接口信号示意图如图2,具体操作如下:
1)对于Load指令:访存部件从Cache或主存中读出数据写入寄存器文件后,向ROB报完成,ROB收到完成信号后,按顺序提交指令,通知访存部件删除LQ中的条目;
2)对于Store指令:ROB先通知访存部件该指令为ROB头部第一条指令,允许Store指令执行,访存部件在命中DCache且获得可写权限后,启动写DCache操作,同时向ROB报完成,ROB收到完成信号后,按顺序提交指令,通知访存部件删除SQ中的条目。
本发明的发明人发现在上述流程中,Load指令的执行不依赖其它指令的状态,但LQ条目的释放依赖于本条Load指令提交的时刻。上述特性不影响Load指令的提交速度,但影响LQ条目的释放速度,在Load指令密集的情况下,可能导致指令流水线因LQ队列满而阻塞,从而影响处理器性能。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海高性能集成电路设计中心,未经上海高性能集成电路设计中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410685360.X/2.html,转载请声明来源钻瓜专利网。





