[发明专利]一种指令缓存系统及其取指方法有效
| 申请号: | 201110445531.8 | 申请日: | 2011-12-27 |
| 公开(公告)号: | CN102541510A | 公开(公告)日: | 2012-07-04 |
| 发明(设计)人: | 陈弟虎;粟涛;叶靖文;陈俊锐 | 申请(专利权)人: | 中山大学 |
| 主分类号: | G06F9/30 | 分类号: | G06F9/30;G06F9/38 |
| 代理公司: | 广州新诺专利商标事务所有限公司 44100 | 代理人: | 张玲春 |
| 地址: | 510275 广东*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 指令 缓存 系统 及其 方法 | ||
技术领域
本发明涉及微处理器系统中的指令缓存,尤其涉及一种新型高效指令缓存系统及其取指方法。
背景技术
众所周知,CPU的存取速度非常快,而内存的存取速度相对较慢。为解决CPU与内存之间存取速度不匹配的问题,通常会采用一个访问速度极快的小容量存储器即缓存(简称CACHE),如一级缓存,并将可能要访问的数据或指令预先存储在缓存中。当CPU需要读取一个数据时,首先以较快的速度在缓存中查找,如果找到就立即读取并送给CPU处理;如果在缓存中没找到匹配的数据,则以相对慢的速度向下一级的内存中继续查找并将数据读取送给CPU处理。尽管缓存的使用能够极大提高CPU读写数据的速度,但由于缓存的容量有限,仅能够存储内存中的少量数据。为了提高CPU访问的命中率,可采用一级缓存、二级缓存甚至三级缓存的多级缓存系统,使CPU能够逐级顺序访问多个缓存,直至查找到匹配的数据。为了进一步提高缓存的利用率,还可采用一些特定的替换算法,如最近最少使用算法,将最近最少被访问的数据淘汰出缓存。
由于CPU流水线一般都包括五个步骤,即每条指令的执行一般都经过IF(指令获取)、DE(指令译码)、EX(执行)、MEM(访问存储器)和WB(数据写回)。为了使CPU的性能得到最大程度的发挥,除了缓存之外,很多芯片内部都有预取指令和数据的功能。如MIPS早期适用于嵌入式领域的Mips4kc核就具有四字节大小的预取指令功能,它设计在取指令模块中。但该预取是针对顺序执行指令情况下而设计,如果遇上跳转或中断则一般是舍弃预取的指令。
同时,大部分CPU(包括mips4kc)向外部(例如CACHE或RAM)取指令时一般都是发出一个请求信号和相应32位的指令虚拟地址。该信号和虚拟地址被内存管理单元(简称MMU)接收。此时MMU根据指令的虚拟地址和CPU对虚拟地址空间的划分,将虚拟地址转换为相应的物理地址,就到CACHE(CACHE开启以及该地址对应的数据可在CACHE中有备份情况下)或内存RAM中获得32位的指令,然后将指令返回给CPU去执行。
在这种情况下,如果CPU执行的是顺序的四条指令,则MMU需要做四次地址转换,CACHE要匹配四次或者MMU四次经过总线向RAM获取指令。这在一定程度上增加了总线的带宽压力,也不利于降低芯片功耗。
发明内容
根据本发明的第一个方面,提供一种指令缓存系统,包括微处理器、系统控制协处理器、内存管理单元,该微处理器与系统控制协处理器、微处理器与内存管理单元、以及系统控制协处理器与内存管理单元之间分别建立连接,以进行指令的存取控制及处理,其中,内存管理单元通过总线与内存或外部存储器建立连接,微处理器中还设有零级缓存,其包括两个存储块,每个存储块中分别存储四条指令,且每个存储块设有标签值。
所述每个存储块的标签值为29位,其中,高28位为虚拟地址高位,最低位为有效位,每个存储块的容量为4字(即四条指令)。
所述新型指令缓存系统中还包括一级缓存,该一级缓存是一个四路组相联的传统缓存,其指令读写通道均为128位。
所述内存管理单元中还设有衔接零级缓存、一级缓存与内存之间逻辑控制的控制模块。
所述控制模块具有六个可转换的状态,分别是:空闲、一级缓存关闭、一级缓存命中、一级缓存未命中、一级缓存填充以及异常出错。
所述零级缓存通过内存管理单元中的控制逻辑,从一级缓存或利用总线突发传输从内存一次获取4条指令。所述零级缓存与一级缓存或内存的数据传输为每次4字。
根据本发明的第二个方面,提供一种指令缓存系统的取指方法,其中所述指令缓存系统包括零级缓存和一级缓存两个缓存存储器,该零级缓存包括两个存储块,每个存储块中分别存储四条指令,且每个存储块设有标签值,该指令缓存系统还包括内存管理单元,其可从一级缓存或通过总线向内存获取指令,该方法包括如下步骤:
(1)判定指令的虚拟地址是否与零级缓存的存储块的标签值匹配;
(2)执行所述步骤(1),若结果为是,则取出命中存储块中相应的指令,送至流水线;并判定未命中存储块中的指令是否为顺序执行的下一批指令;
(2’)执行所述步骤(1),若结果为否,则刷新零级缓存,并向内存管理单元发出请求,内存管理单元从内存或一级缓存中获得指令,并将指令填充分别至存储块中。
(3)执行所述步骤(2),若结果为是,则等待向流水线传送指令,执行步骤(1);
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中山大学,未经中山大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110445531.8/2.html,转载请声明来源钻瓜专利网。





