[发明专利]指令缓冲与对齐缓冲装置及其操作方法有效
申请号: | 201510603387.4 | 申请日: | 2015-09-21 |
公开(公告)号: | CN105094752B | 公开(公告)日: | 2018-09-11 |
发明(设计)人: | 王琪;张志伟;丁光新;薛晓军;史明霞;侯化成;郭旭龙 | 申请(专利权)人: | 中国科学院自动化研究所 |
主分类号: | G06F9/38 | 分类号: | G06F9/38;G06F12/02 |
代理公司: | 中科专利商标代理有限责任公司 11021 | 代理人: | 吕雁葭 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 指令 缓冲 对齐 装置 及其 操作方法 | ||
1.一种指令缓冲与对齐缓冲装置,包括:
指令缓冲区IB,包括2n个指令行IB[0]~IB[2n-1],每行包括2m个单元;
对齐缓冲区AB,包括2个指令行AB[0]和AB[1],每行包括2m个单元;
第一指令包输入选择开关组,用于控制指令包是否输入到AB[0]或AB[1];
第二指令包输入选择开关组,用于控制指令包是否输入到IB[0]或IB[2n-1]及其之间的指令行;
多个2选1多路选择器,分别用于选择写入AB[0],AB[1],IB[0]-IB[2n-1]之间指令行的数据来源;以及
两个多选1执行包选择拼接器和一个2选1执行包选择拼接器,用于拼接AB中读出的指令单元以生成执行包,
其中:
n、m是正整数;
每个单元的宽度为处理器支持的最小指令宽度;以及
从指令存储器返回的指令包被优先写入AB中,在AB存满指令之后,写入IB中。
2.根据权利要求1所述的装置,其中:
AB和IB内部的写入顺序为按照指令行的编号由低向高写入;以及
写入的位置由写指针控制。
3.根据权利要求1所述的装置,其中:
除了编号最高的IB指令行外,其余的IB指令行和AB指令行的写入数据来源均来自于指令存储器返回的指令包或来自于高一级的缓冲行;以及
最高编号的IB指令行IB[2n-1]来源于指令存储器返回的指令包。
4.根据权利要求1所述的装置,其中生成执行包包括:
当执行包不跨指令包时,根据AB的读指针指向的行内位置,通过第一多选1执行包选择拼接器读取AB[0]中相应的指令单元的内容,由2选1执行包选择拼接器选择AB[0]读出的内容作为执行包输出到译码单元;以及
当执行包跨越指令包时,再通过第二多选1执行包选择拼接器读取AB[1]的指令行中相应的指令单元,然后由2选1执行包选择拼接器对AB[0]和AB[1]中读出的指令单元进行拼接,组合成执行包。
5.一种用于操作根据以上任一权利要求所述的装置的方法,包括:
步骤601:处理器初始化时或缓冲区分支事件清空时,将IB和AB均清空,将读写指针均设置为0,进入步骤602;
步骤602:等待指令包从指令存储器中返回,进入步骤603;
步骤603:从指令存储器中返回指令包,进入步骤604;
步骤604:检查AB是否写满,若是,则进入步骤605,否则进入步骤606;
步骤605:将返回指令包写入IB写指针指向的IB指令行,并发送请求控制IB的写指针累加,然后返回步骤602,继续等待新的指令包返回;
步骤606:判断AB[0]是否为空,若是,则进入步骤607,否则进入步骤608;
步骤607:将返回的指令包写入AB[0],并发送请求控制AB的写指针累加,然后返回步骤602继续等待新的指令包返回;以及
步骤608:将返回指令包写入AB[1],并产生AB满标志,然后返回步骤602继续等待新的指令包返回。
6.一种用于操作根据权利要求1-4中任一项所述的装置的方法,包括:
步骤701:处理器初始化时或缓冲区分支事件清空时,将IB和AB均清空,将读写指针均设置为0,进入步骤702;
步骤702:等待指令包写入对齐缓冲AB中,进入步骤703;
步骤703:检查AB的状态:若AB[1]和AB[0]都写入了指令包,则进入步骤704;若AB[1]中还未写入指令包,AB[0]中写入了指令包,则进入步骤705;若AB[1]、AB[0]都还未写入指令包,则进入步骤706;
步骤704:首先根据AB读指针位置从AB[0]指令行中开始进行指令单元的读取,若执行包需要跨包,还需要从AB[1]中读取指令单元;若无需跨包,将AB[0]中读出的指令单元当做执行包发送到译码单元,若需要跨包,则将AB[0]和AB[1]中读出的指令单元拼接后,形成执行包发送到译码单元;在执行包读取的同时,还需根据执行包的长度修改AB读指针,然后进入步骤707;
步骤707:判断读出的执行包是否跨越两个指令包,若是进入步骤708,否则返回步骤703,继续检查AB的状态;
步骤708:产生AB[0]读完的标志信号,由其控制IB和AB中内容的更新,然后返回步骤703继续检查AB的状态;
步骤705:首先根据AB读指针的位置对AB[0]中的指令单元进行预读取,根据指令集编码的特点和读出的指令内容,然后进入步骤709;
步骤709:判断读取的执行包是否需要跨越指令包,若是,则进入步骤706,否则进入步骤710;
步骤706:AB中的已经写入的指令包的内容不能完全包含当前需要读取的执行包,需要停止执行包的读取,等待剩余执行包内容写入AB中,同时保持AB的读指针不变,并返回步骤703继续检查AB的状态;以及
步骤710:将读出的执行包发送到译码单元,并且根据执行包长度修改AB读指针,并返回步骤703继续检查AB的状态。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院自动化研究所,未经中国科学院自动化研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510603387.4/1.html,转载请声明来源钻瓜专利网。