【技术实现步骤摘要】
调度乱序队列和判断队列取消项的方法和装置
本专利技术涉及乱序处理器
,特别涉及一种调度乱序队列和判断队列取消项的方法和装置。
技术介绍
乱序处理器的指令到了乱序队列中,就不会按照程序中指定的顺序在处理器中流动,只要满足执行的条件,后面的指令可以越过前面的指令先执行,以提高指令的执行速度。在乱序处理器的乱序队列调度上,当乱序队列中有多条指令准备好,一般优先选择程序上最早的指令执行,即采用oldest-first策略进行调度仲裁,因此需要判断指令的先后顺序。这是考虑到越是旧的指令,和它存在相关的指令也就越多,因此优先执行最旧的指令,能够有效地提高处理器执行指令的并行度,而且最旧的指令还占据着处理器中的硬件资源,包括其他的乱序队列、重定序缓存、写缓冲区(StoreBuffer)等部件,越早地执行这些旧的指令,就可以越早地释放这些硬件资源,供后面的指令使用。乱序处理器中的乱序队列包括发射队列、各级缓存的访问队列、缓存访问失效队列,一致性请求队列等。当乱序处理器因为转移预测错、访存相关等引起的重新执行,或因为例外引发的异常等发生取消等情况时,需要判断在流水线中还没有提交的指令中有哪些指令是处于转移预测错的指令、访存相关引起重新执行的指令或例外引发异常的指令的后面,属于需要同引发取消的指令一起被取消的指令,在流水线各个阶段来取消这些指令,让这些指令重新执行,或回滚到流水线的特定阶段再开始执行。要识别出乱序队列中哪些指令是最旧的,就需要知道这些指令的年龄信息,年龄信息表示指令进入流水线的先后顺序。在普 ...
【技术保护点】
1.一种调度乱序队列和判断队列取消项的方法,其特征在于,包括以下步骤:/n在重定序缓存或转移重定序缓存地址前面增加最高位;/n用重定序缓存或转移重定序缓存的读指针增加的最高位,异或两个需要比较的重定序缓存或转移重定序缓存地址增加的最高位,将异或后得到的地址作为两条指令的年龄信息进行大小比较,以判断得到指令年龄的新老。/n
【技术特征摘要】
1.一种调度乱序队列和判断队列取消项的方法,其特征在于,包括以下步骤:
在重定序缓存或转移重定序缓存地址前面增加最高位;
用重定序缓存或转移重定序缓存的读指针增加的最高位,异或两个需要比较的重定序缓存或转移重定序缓存地址增加的最高位,将异或后得到的地址作为两条指令的年龄信息进行大小比较,以判断得到指令年龄的新老。
2.根据权利要求1所述的方法,其特征在于,还包括:
在调度乱序队列时,选择队列中有效且年龄最老的指令进行执行。
3.根据权利要求1所述的方法,其特征在于,还包括:
在判断队列取消项时,选择队列中引起取消的指令及比引起取消的指令的年龄新的指令进行取消。
4.根据权利要求1所述的方法,其特征在于,所述重定序缓存或转移重定序缓存的读取由读指针控制,其中,当队列非空时,所述读指针指向下一次将要读取的第一项,所述重定序缓存或转移重定序缓存是有序的先进先出队列,且所述读指针指向的项是重定序缓存或转移重定序缓存中年龄最老的项,所述年龄最老的项为年龄最老的指令对应的项;当队列空时,读指针和写指针指向同一个空项,读指针和写指针增加的最高位的值相同。
5.根据权利要求1所述的方法,其特征在于,所述重定序缓存或转移重定序缓存的写入由写指针控制,每条指令在所述重定序缓存或转移重定序缓存中的位置由所述写指针分配,其中,在队列未全满时,所述写指针指向下一次将要写入的第一个空项;在队列满时,写指针和读指针指向同一项,写指针和读指针增加的最高位的值相反。
6.根据权利要求1所述的方法,其特征在于,所述重定序缓存或转移重定序缓存的写指针和读指针在复位状态时均指向复位项,当新指令写入到重定序缓存或转移重定序缓存中时,所述写指针指向下一个将要写入的项,当指令退出后,所述读指针指向下一个将要读出的项。
7.根据权利要求6所述的方法,其特征在于,所述复位项是指复位时写指针和读指针指向的同一项,复位项为队列的任一项,在复位时读指针和写指针增加的地址最高位相同。
8.根据权利要求6所述的方法,其特征在于,所述读指针指向的下一个将要读出的项或写指针指向的下一个将要写入的项,按地址增加的方向或按地址减小的方向进行指向。
9.根据权利要求8所述的方法,其特征在于,当重定序缓存或转移重定序缓存的队列项数不是2的幂次,且读指针和写指针按照地址增加的方向指向下一项时,包括:
当写指针或读指针低位到达队列的第一预设项数时,写指针或读指针指向的下一项低位从0开始编码,其中,所述第一预设项数由最大项数确定;
当写指针或读指针低位到达队列的第一预设项数时,写指针或读指针增加的最高位的值翻转。
10.根据权利要求8所述的方法,其特征在于,当重定序缓存或转移重定序缓存的队列项数不是2的幂次,且读指针和写指针按照地址增加的方向指向下一项时,包括:
当写指针或读指针低位到达队列的第一预设项数时,写指针或读指针指向的下一项继续编码,直到到达2的幂次项再低位从0重新编码;
当写指针或读指针低位到达第二预设项数时,写指针或读指针增加的最高位翻转,其中,所述第二预设项数由2的幂次确定。
11.根据权利要求8所述的方法,其特征在于,当重定序缓存或转移重定序缓存的队列项数不是2的幂次,且读指针和写指针按照地址减小的方向指向下一项时,包括:
当写指针或读指针低位减小到0时,写指针或读指针指向的下一项低位从队列的第一预设项数开始编码;
当写指针或读指针低位减小到0时,写指针或读指针增加的最高位的值翻转。
12.根据权利要求8所述的方法,其特征在于,当重定序缓存或转移重定序缓存的队列项数不是2的幂次,且读指针和写指针按照地址减小的方向指向下一项时,包括:
当写指针或读指针低位减小到0时,写指针或读指针指向的下一项低位从最接近队列项数且比队列项数大的第二预设项数重新进行编码;
当写指针或读指针低位减小到0时,写指针或读指针增加的最高位翻转。
13.根据权利要求8所述的方法,其特征在于,当所述读指针和写指针按地址增加的方向指向下一项时,地址...
【专利技术属性】
技术研发人员:郇丹丹,
申请(专利权)人:北京微核芯科技有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。