一种实现可配置risccpu中的存储器空间的方法

文档序号:6555782阅读:167来源:国知局
专利名称:一种实现可配置risc cpu中的存储器空间的方法
技术领域
本发明涉及一种配置CPU中的存储器空间的方法,更具体地说是涉及一种配置RISC CPU中的存储器的空间的方法。
背景技术
存储器是计算机系统的核心组成部分,CPU运行需要的指令与数据都是存放在存储器中,同时程序运行过程中产生的新的数据也需要写回存储器。如何能够及时准确地将CPU需要的数据与指令从存储器中读出或者写入就是存储器管理需要做的工作。
程序设计人员总是希望存储器的速度尽可能地快,以便与处理器的速度相匹配。一方面,经过几十年的发展,存储器的工艺实现技术有了突飞猛进的发展,高速、大容量、低价格的存储器以惊人的速度被生产出来。尽管如此,存储技术的发展证明单一工艺存储器件很难同时满足容量、价格、速度三方面的性能要求。事实上,容量与速度、速度与价格、容量与价格的性能要求是相互有矛盾的,很难同时满足,而且存储器速度的改进始终跟不上CPU速度的提高。另一方面,在CPU指令中存储器访问的指令占据比较大的比率。存储器本身的速度慢,再加上访问存储器的频繁,如果不采取一种好的管理方法势必影响CPU的整体性能。可以说访问存储器的时间长短已经成为影响处理器性能的主要因素,是影响处理器信息吞吐量的瓶颈。
存储器空间的管理最基本的两种方法是分页管理和虚实地址映射。分页管理就是把实际的物理地址分成几部分,每一部分称为一个页,将存储器分页后,可以先找到相应的页,再从该页中找到实际的地址,与从整个大的存储区域中寻找地址相比能节省较多的时间。
使用虚地址到物理地址的映射也是大多数存储器管理机制采用的方法。即在程序中不用考虑指令数据在存储器中的实际物理地址,可以使用自己的虚拟地址,在程序运行时通过存储器管理将此虚拟地址通过一定的算法映射成物理地址。这样便于程序的移植,节省程序员的工作量。
在实际实现中,具体分页的方法有所不同,但主要取决于存储器的容量和处理器本身的寻址能力。至于虚拟地址到物理地址的映射机制也主要使用一个页面寄存器,里面存放了实际物理地址的高几位地址,然后将虚拟地址作为物理地址的低位,这样便组成一个完整的物理地址。这样做无论在算法和电路上都比较简单,也能获得一定的效果。
采用以上两种方法存储器的访问速度虽然会有所提高,但是效果不是很明显。因为存储器进行分页管理后,每次查找也比较麻烦;其次,每条指令还是需要实际去访问存储器。提高MMU速度的关键是尽量降低存储器的访问时间和次数。在地址转换过程中,MMU把CPU发出的64b有效地址转换成40b虚拟地址,然后再转换成32b物理地址。有效地址空间分为段(256M)或块(128k~256M),段内再进一步细分为4kB的页。对于每个块或页,由操作系统产生地址描述符(GVD项);在块或页被访问时,MMU利用这些描述符产生物理地址,保护信息及其他控制信息作为输出。
TLB是地址转换器。由32个数据单元组成,每个数据单元分别映射一对奇偶页,页的大小有4K,16K,64K,256K,1M,4M,或16M不等,例如当页设置为4K,且系统为64位时,取送64位虚拟地址的12至39位,依次访问TLB的每个数据单元,当检测一致时,读出20位作为基址,再加上12位偏移地址,翻译出实际地址。TLB的虚拟地址既包括指令又包括数据,可分为联合地址转换器(JTLB)和指令地址转换器(ITLB)两种,指令和数据的响应速度,也能直接影响存储器的访问速度。

发明内容
本发明是针对当指令码流比较密集时,存储器中指令地址转换器(ITLB)向联合地址转换器(JTLB)发出更新请求,从而降低访问存储器速度的问题,公开了一种配置存储器空间的方法。
一种实现可配置RISC CPU中的存储器空间的方法,该方法包括配置存储器中联合地址转换器(JTLB)和指令地址转换器(ITLB)的空间结构,在联合地址转换器中提供N个存储空间单元,由软件分配给指令地址转换器;根据指令码流的密集程度,采取不同的存储器空间结构存放指令及数据,其中指令地址转换器通过软件配置为2+2n个单元的存储器空间,联合地址转换器通过软件配置为32-n个单元的存储器空间。
上述方法中大写字母N为0~3的整数,小写字母n为0~N的整数,这种可配置结构中联合地址转换器(JTLB)和指令地址转换器(ITLB)的存储空间配置最多有n+1种分配结构。
使用本发明所述方法该处理器不需要另外增加额外的存储器空间,可根据指令码流的密集程度,采取不同的存储器空间结构,减少指令地址转换器出现TLB Miss的异常,以及向联合地址转换器请求更新的次数,从而提高了存储器的访问速度,实现了联合地址转换器和指令地址转换器的空间动态分配。该方法包括如下的具体步骤步骤1传统的联合地址转换器有32个单元的存储空间,指令地址转换器有2个单元的存储空间,在这种结构基础上,将联合地址转换器的N个存储单元在硬件上设计成可选择的,即可以作为指令地址转换器使用,也可以作为联合地址转换器使用;步骤2在步骤1将联合地址转换器的N个存储单元在硬件上设计成可选择的后,根据软件所编写的指令的密集程度,由软件分配联合地址转换器的n个存储单元给指令地址转换器,则指令地址转换器增加2n个存储单元,存放的指令增加,处理器发出的指令的虚拟地址会送到此2+2n个单元中寻找相同的指令;步骤3当指令地址转换器中检测到相同的指令时,进行虚拟地址到物理地址的转换;若没有检测到时,则出现TLB Miss的异常,指令地址转换器会自动请求到联合地址转换器检测,由于此时指令地址转换器的空间增加,则出现TLBmiss的几率减少,指令地址转换器向联合地址转换器请求的次数也会相应减少,提高了ITLB的命中率。
上述步骤中所述的由软件分配联合地址转换器的存储单元,其特征在于软件通过调整数据选择器MUX1,MUX2及MUX3的控制字,来选择合适的联合地址转换器的存储单元的配置方式。
上述步骤中所述的当指令地址转换器中检测到相同的指令时,进行虚拟地址到物理地址的转换,虚拟地址由三部分组成,高位是地址空间标志符,以及虚拟的页码,低位是偏移地址。虚拟地址到物理地址的转换,其方法是虚拟地址的高位和TLB相应单元中的地址空间标志符和虚拟页码作比较,如果是匹配的,则该单元中的页帧数作为实际物理地址的高位,而低位直接是虚拟地址的低位偏移地址,从而构成所要的物理地址。具体的映射方法还有很多种,这里不一一举例。
本发明的意义在于采用分立的指令/数据存储器管理方式,根据指令码流的复杂程度,选择不同的存储器空间配置,使指令地址转换器里检测到指令的命中率更高,减少存储器访问时间,从而提高了微处理器的性能。显然,如果不考虑硬件的因素,缓存越大越好,但硬件是不能不考虑的,本发明公开的方法的优点是在不增加硬件的基础上提高了存储器的访问速度,从而提高了微处理器的性能。


现在将结合附图更详细的描述本发明所述的方法图1是TLB地址转换的流程图;图2是虚拟地址到物理地址的一种转换方法示意图;图3是传统的存储器管理中JTLB和ITLB的配置方法示意图;图4-1及图4-2是本发明所涉及的存储器管理中JTLB和ITLB的几种配置方式示意图;图5是以N=3为例说明可配置的JTLB和ITLB的硬件结构。
具体实施例方式
本发明所描述的方法是根据指令码流的密集程度来选择存储器空间的配置方式。如果当前的指令码流比较密集,则分配给指令地址转换器多一些的存储空间;如果当前的指令码流比较稀疏,而相应存取数据的码流比较密集时,则分配给指令地址转换器相对少一些的空间,从而使联合地址转换器的空间大一些。
附图1是微处理器的存储器管理中TLB的地址转换的流程图。从输入端进入的是得到的指令或者数据的虚拟地址,先检测该地址是否为有效的地址,若检测的结果是合法有效的地址,则进行下面的操作;若检测的结果是不合法的地址,则出现地址错误的异常,进入相应的异常处理单元。检测结果合法后,下面的操作是进一步判断判断是否是映射的地址,若是映射的地址,则接着进入下面的判断单元;若不是映射的地址,则进一步判断是否是非缓存的,若是非缓存的,就要访问主存储器;若不是非缓存的,即是缓存的,就要访问缓存单元。回到前面是映射的地址时,下面进一步的判断是,判断VPN(虚拟的页码数)是否相匹配,若是相匹配的,同样进入下面的判断;若虚拟的页码不相匹配,则需进一步判断地址是否是32位的(这里的32位是根据存储器的位数来选择的,若是64位的,则需判断地址是否为64位的),如果判断的结果是肯定的,就会出现TLB Miss的异常,调入相应的异常处理程序;如果判断的结果是否定的,同样会出现异常,但异常的类型不同,是XTLB Miss,也要调入相应的异常处理单元。在回到上面判断虚拟的页码数相匹配时,再接着判断是否为全局的,如果是全局的,则处理器就会在TLB查找时忽略地址空间标志符的判断,进入下面的判断;如果不是全局的,处理器不能忽略地址空间标志符的判断,若判断的结果是标志符不匹配,则同样会进入地址位数的判断,从而会进行上面同样的操作,判断出现哪种异常,调入相应的异常处理程序。若地址空间标志符是匹配的,则与全局判断肯定时一样,进一步判断是否有效,如果无效则出现TLB无效的异常,再次进入异常处理单元;如果有效,再判断dirty位是否置1,即是否可以写入,如果不能写,就会出现异常,如果可以写,接着判断是否是非缓存的,缓存中没有的话,就访问主存储器;缓存中有的话,就直接访问缓存。不管访问主存储器,还是访问缓存器,都能得到输出,即物理地址。
其中虚拟地址到物理地址的转换,有多种方法,这里只选择一种说明,附图2从大体上简单介绍了虚拟地址到物理地址的转换方法,虚拟地址由三部分组成,高位是地址空间标志符,以及虚拟的页码,低位是偏移地址。虚拟地址的高位会和TLB相应单元中的地址空间标志符和虚拟页码比较,如果是匹配的,则该单元中的页帧数作为实际物理地址的高位,而低位直接是虚拟地址的低位偏移地址,从而构成所要的物理地址。
本发明所述方法主要是TLB寄存器的空间分配,附图3描述的是传统的JTLB和ITLB的配置方法,其中JTLB是软件可访问的,既包括地址,又包括数据,而ITLB是只包括指令的,且软件不可访问,它按照最近使用的运算法则来存放少数指令在缓存中。当读取到指令的虚拟地址时,按照前附面图1的步骤判断后,看是否在ITLB中存在与所取指令相匹配的指令,若有,则计算其实际地址输出;若没有相匹配的,则指令转换器自动向联合转换器请求,如果联合转换器有相匹配的,则输出给指令转换器刷新;若联合转换器也没有,则发生异常,异常处理会促使软件从存储器中的页表取得相应指令重写入联合地址转换器,再由联合地址转换器输出给指令转换器,指令地址转换器再按照一定的规则生成物理地址输出。从上面的流程很容易看出,若指令地址转换器的命中率高的话,就不需要经常请求联合地址转换器,提高了存储器的访问速率,从而提高了微处理器的性能。
同样,读取到指令的虚拟地址后,在指令地址转换器中寻找相匹配的指令,这里的指令地址转换器的配置有几种情况,本实例取N=3,即JTLB最多可分配三个单元给ITLB,则JTLB和ITLB的空间分配最多有四种方式,见附图4-1和附图4-2,一种是同传统的配置相同的,联合地址转换器有32个单元,每个单元有奇偶两页,而指令地址转换器只有两个单元,每个单元也只有一页;一种是联合地址转换器配置31个单元,通过软件将第32个单元分配给指令地址转换器,这样指令地址转换器就有4个单元;第三种配置方式是联合地址转换器只有30个单元,通过软件将其他两个单元配置给指令地址转换器,则指令地址转换器就有6个单元。第四种配置方式是联合地址转换器只有29个单元,通过软件将其他两个单元配置给指令地址转换器,则指令地址转换器就有8个单元。软件调整的方法如附图5所示,软件通过调整数据选择器MUX1,MUX2及MUX3的控制字,来选择合适的配置。以MUX3为例,若MUX3选择输入为ITLB,则JTLB中第32个单元的奇偶两个寄存器就分配给ITLB,即作为指令地址转换器使用。从而实现了软件可配置的存储器空间。软件根据指令码流是否密集,选择相应的配置,如果指令码流很密集,则采取第四种或第三种配置方式,这样指令缓存器中存放的指令较多,指令被命中的机会就大,向联合地址转换器请求的次数会减少,存储器访问速率就高了;如果指令码流的密集度较低,而数据读取的比较频繁,则联合地址转换器配置的空间就大一些,即采取第一种配置,于是指令和数据的命中率都能得到保证,存储器访问的速率也能得到保证;当指令码流和数据码流的密集度都相当,且都不是很密集时,则采取第二种配置方式,以保证指令地址转换器和联合地址转换器的命中率即指令和数据的命中率。之后是与上面同样的操作,若命中则不用访问存储器空间,直接转换成物理地址后输出,若没有命中则发生异常,请求刷新。显然,如果不考虑硬件的因素,缓存越大越好,但硬件是不能不考虑的,本发明的优点是在不增加硬件的基础上提高了存储器的访问速度,从而提高了微处理器的性能。
权利要求
1.一种实现可配置RISC CPU中的存储器空间的方法,该方法包括如下的步骤配置存储器中联合地址转换器(JTLB)和指令地址转换器(ITLB)的空间结构,在联合地址转换器中提供N个存储空间单元,由软件分配给指令地址转换器;根据指令码流的密集程度,采取不同的存储器空间结构存放指令及数据,其中指令地址转换器通过软件配置为2+2n个单元的存储器空间,联合地址转换器通过软件配置为32-n个单元的存储器空间。
2.根据权利要求1中所述的一种实现可配置RISC CPU中的存储器空间的方法,其特征在于该方法包括如下的具体步骤步骤1传统的联合地址转换器有32个单元的存储空间,指令地址转换器有2个单元的存储空间,在这种结构基础上,将联合地址转换器的N个存储单元在硬件上设计成可选择的,即可以作为指令地址转换器使用,也可以作为联合地址转换器使用;步骤2在步骤1将联合地址转换器的N个存储单元在硬件上设计成可选择的后,根据软件所编写的指令的密集程度,由软件分配联合地址转换器的n个存储单元给指令地址转换器,则指令地址转换器增加2n个存储单元,存放的指令增加,处理器发出的指令的虚拟地址会送到此2+2n个单元中寻找相同的指令;步骤3当指令地址转换器中检测到相同的指令时,进行虚拟地址到物理地址的转换;若没有检测到时,则出现TLB Miss的异常,指令地址转换器会自动请求到联合地址转换器检测,由于此时指令地址转换器的空间增加,则出现TLBmiss的几率减少,指令地址转换器向联合地址转换器请求的次数也会相应减少,提高了ITLB的命中率。
3.根据权利要求2所述方法步骤2中所述的由软件分配联合地址转换器n个存储单元给指令地址转换器,其特征在于该软件通过调整数据选择器MUX1,MUX2及MUX3的控制字,来选择合适的联合地址转换器的存储单元的配置方式。
4.根据权利要求2所述方法步骤3中所述的当指令地址转换器中检测到相同的指令时,进行虚拟地址到物理地址的转换,其特征在于其转换方法是虚拟地址的高位和TLB相应单元中的地址空间标志符和虚拟页码作比较,如果是匹配的,则该单元中的页帧数作为实际物理地址的高位,而低位直接是虚拟地址的低位偏移地址,从而构成所要的物理地址。
5.根据权利要求1或2中所述的一种实现可配置RISC CPU中的存储器空间的方法,其特征在于所述方法中的大写字母N为0~3的整数,小写字母n为0~N的整数。
6.根据权利要求1所述的配置存储器中联合地址转换器(JTLB)和指令地址转换器(ITLB)的空间结构,其特征在该配置结构中联合地址转换器(JTLB)和指令地址转换器(ITLB)的存储空间配置最多有n+1种分配结构。
全文摘要
本发明针对当指令码流比较密集时,存储器中指令地址转换器(ITLB)向联合地址转换器(JTLB)发出更新请求,从而降低访问存储器速度的问题,公开了一种配置存储器空间的方法。该方法通过配置联合地址转换器(JTLB)和指令地址转换器(ITLB)所占的空间比例,在不增加硬件的情况下,可灵活增加ITLB的存储空间,减小指令请求响应的时间,从而加快了存储器访问的速度,提高了CPU的性能。
文档编号G06F12/10GK101067801SQ20061003346
公开日2007年11月7日 申请日期2006年1月26日 优先权日2006年1月26日
发明者常军锋, 刘俊秀, 王雅君, 阿拉德尔图, 王一利, 徐卫国, 周显文, 石岭, 刘云 申请人:深圳艾科创新微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1