[发明专利]基于指令队列的程序循环代码动态检测及执行方法有效
申请号: | 201210493778.1 | 申请日: | 2012-11-28 |
公开(公告)号: | CN102968293A | 公开(公告)日: | 2013-03-13 |
发明(设计)人: | 张承义;高军;孙彩霞;艾飞虎;郭维;孙曜;王永文;窦强;倪晓强;隋兵才;陈微;赵天磊;王蕾;黄立波 | 申请(专利权)人: | 中国人民解放军国防科学技术大学 |
主分类号: | G06F9/30 | 分类号: | G06F9/30 |
代理公司: | 湖南兆弘专利事务所 43008 | 代理人: | 赵洪;谭武艺 |
地址: | 410073 湖南省长沙市砚瓦池正*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 指令 队列 程序 循环 代码 动态 检测 执行 方法 | ||
1.一种基于指令队列的程序循环代码动态检测及执行方法,其特征在于实施步骤如下:
1)从指令缓存中取指并保存到指令队列中,将指令队列中保存的指令发射到功能部件执行,当执行指令为分支指令且执行结果为跳转时获取跳转方向以及跳转目标距离,如果跳转方向为向后跳转且跳转目标距离在指令队列的长度以内,则预测当前执行的分支指令与跳转目标地址之间的代码为程序循环代码,并进入下一步;
2)从指令缓存中取出程序循环代码对应的指令并填充在指令队列中;
3)将指令缓存旁路,直接从指令队列中取出指令并发射到功能部件执行,在程序循环代码的所有指令执行完毕后恢复指令缓存的工作状态。
2.根据权利要求1所述的基于指令队列的程序循环代码动态检测及执行方法,其特征在于,所述步骤2)的详细步骤如下:
2.1)预先在指令队列中增加循环头指针,预先在分支处理部件增加循环检测标志寄存器、循环执行标识寄存器和循环代码头指令程序计数器寄存器,在预测当前执行的分支指令与跳转目标地址之间的代码为程序循环代码后将循环头指针指向为指令队列当前写指针的位置、将循环检测标志寄存器赋值为1、将循环执行标识寄存器赋值为0、将循环代码头指令程序计数器寄存器赋值为当前分支指令的跳转目标程序计数器值;
2.2)从指令缓存中取出程序循环代码对应的指令并存储在指令队列中写指针所指向的位置并顺序递增写指针的值,当写指针的下一个位置为循环头指针时暂停取指;同时在读指针指向的指令如果满足分派条件则分派到功能部件执行,保持循环头指针不变并顺序递增读指针直至读指针的下一个位置为循环头指针,此时循环检测标志寄存器赋值为0,继续递增写指针,跳转步骤1)继续取指执行;当执行指令为分支指令且执行结果为跳转时判断跳转指令的跳转方向,如果为向前跳转则清空指令队列和流水线中的指令,将循环检测标志寄存器赋值为0,根据程序计数器中当前的分支指令跳转目标程序计数器值继续从指令缓存中取指,跳转步骤1)继续执行,流水线重新回到正常执行状态,否则跳转执行下一步;
2.3)将分支指令跳转目标程序计数器值和循环代码头指令程序计数器寄存器值进行比较,如果分支指令跳转目标程序计数器值大于循环代码头指令程序计数器寄存器值,则判定存在嵌套循环且内层循环代码已在指令队列中,清空已发射流水线中的指令,然后根据分支指令跳转目标程序计数器值和循环代码头指令程序计数器寄存器值的差值回退读指针,重新分派指令执行;如果分支指令跳转目标程序计数器值小于循环代码头指令程序计数器寄存器值,则清空指令队列和流水线中的指令,将循环检测标志寄存器赋值为0,根据程序计数器中当前的分支指令跳转目标程序计数器值继续从指令缓存中取指,跳转步骤1)继续执行,流水线重新回到正常执行状态;如果分支指令跳转目标程序计数器值等于循环代码头指令程序计数器寄存器值则判定完成了循环代码的填充,清空已发射流水线中的指令,将指令队列的读指针赋值为循环头指针、将循环检测标志寄存器赋值为0、将循环执行标识寄存器赋值为1,进入后续的将指令缓存旁路操作。
3.根据权利要求2所述的基于指令队列的程序循环代码动态检测及执行方法,其特征在于,所述步骤3)的详细执行步骤如下:
3.1)将指令缓存旁路,从指令队列中取指并发射到功能部件执行,同时将读指针逐步递增,当执行指令为分支指令且执行结果为跳转时判断跳转指令的跳转方向,如果为向前跳转则跳转执行步骤3.3),否则跳转执行步骤3.2);如果直到指令队列读写指针相等,也没有发生指令流的跳转则跳转执行步骤3.3);
3.2)将分支指令跳转目标程序计数器值和循环代码头指令程序计数器寄存器值进行比较,如果分支指令跳转目标程序计数器值等于循环代码头指令程序计数器寄存器值则清空流水线中的指令、将指令队列的读指针赋值为循环头指针,则继续下一个循环的执行;如果分支指令跳转目标程序计数器值大于循环代码头指令程序计数器寄存器值清空流水线中的指令,则清空流水线中的指令,根据分支指令程序跳转目标计数器值和循环代码头指令程序计数器寄存器的差值回退读指针,重新分派指令执行;如果分支指令跳转目标程序计数器值小于循环代码头指令程序计数器寄存器值则跳转执行步骤3.3);
3.3)退出指令缓存旁路,清空指令队列和流水线中的指令,将循环检测标志寄存器赋值为0,将循环执行标识寄存器赋值为0,根据程序计数器中当前的分支指令跳转目标程序计数器值继续从指令缓存中取指,跳转步骤1)继续执行,流水线重新回到正常执行状态。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科学技术大学,未经中国人民解放军国防科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210493778.1/1.html,转载请声明来源钻瓜专利网。
- 上一篇:轴瓦输送压座装置
- 下一篇:带清扫器的可升降移动带式输送机