同时支持软件回填与硬件回填的内存管理模块的制作方法

文档序号:6370846阅读:279来源:国知局
专利名称:同时支持软件回填与硬件回填的内存管理模块的制作方法
技术领域
本发明涉及一种微处理器体系结构设计,尤其涉及内存管理模块。
背景技术
随着信息技术的发展,计算机系统已经遍布于现实中的各个领域。为了支持多进程操作以及使每个进程保持地址空间的独立性,虚拟地址被引入到了计算机系统,每个进程都有自己的虚拟地址空间,各个进程的虚拟地址空间互相独立,虚拟地址空间的大小可以远超过物理内存的大小。虚拟地址与物理地址的映射是通过内存管理模块(MMU)完成的。虚拟地址与物理地址之间的映射是以页面为单位完成的,这也就意味着MMU只需 将虚拟地址的高位转换为对应的物理地址高位(即将虚拟地址的页面号转换为对应的物理地址的页面号),而虚拟地址的低位在MMU转换过程中是保持不变的,因为它是用于指示地址在页面内的偏移,物理地址页面号和虚拟地址的低位就组成了转换后的物理地址。一个虚拟页面号和一个物理页面号就组成了转换旁路缓冲器TLB的一个表项,而转换旁路缓冲器TLB的大小是有限制的,这也就意味着并不是所有的虚拟地址都能在TLB表中找到对应的转换表项,此时就发生了 TLB失配;相对的,如果某个虚拟地址能在TLB表中找到对应的转换表项,那么表示发生了 TLB命中。TLB失配时如何将表项回填到TLB中是MMU设计时必须认真考虑的问题。一些内存管理模块选择了软件回填的方式,通过控制寄存器组的配合,软件可以方便地回填TLB表项,它移植方便、操作灵活,不过由于需要TLB失配异常的参与,回填时间较长。还有一些内存管理模块选择了硬件回填的方式,它在回填TLB表项的过程中不需要TLB失配异常的参与,回填时间较短,但对操作系统的要求较高,移植不方便。

发明内容
为了克服现有的内存管理模块的回填方式不能兼顾回填快速性和移植方便性的不足,本发明提供了一种同时支持软件回填与硬件回填的内存管理模块,它在增加少量硬件开销的基础上,可方便的选择软件回填模式或者硬件回填模式完成TLB回填的工作,兼有回填快速性和移植方便性。为了克服上述技术问题提供的技术方案为一种同时支持软件回填与硬件回填的内存管理模块,包括转换旁路缓冲器TLB,用于存储虚拟页面到物理页面的映射表项;地址转换单元,用于根据输入到内存管理模块的虚拟地址,查询TLB中的表项,输出物理地址或者TLB失配信息;所述内存管理模块还包括控制寄存器组,包含回填模式控制寄存器、TLB操作指令寄存器、TLB表项寄存器和TLB失配寄存器;硬件回填单元,用于访问外围内存,根据TLB失配信息将外围内存中存储的映射表项读入并写到TLB中;控制单元,用于根据TLB操作指令寄存器里的信息对TLB作读和写操作;根据回填模式控制寄存器里的信息控制TLB失配时的回填方式,其中,在软件回填模式下,将虚拟页面号写入到TLB失配寄存器,接着发起一个TLB失配异常,然后通过异常服务程序响应这个异常,完成TLB表项的回填工作;在硬件回填模式下,将TLB失配的虚拟页面信息发送给硬件回填单元,同时向所述硬件回填单元发起硬件回填请求。进一步,所述回填模式控制寄存器中,当回填模式位无效,控制单元在发生TLB失配时会选择软件回填模式;当回填模式位有效,控制单元在发生TLB失配时会选择硬件回填模式。再进一步,在虚拟地址被发送到内存管理模块后,地址转换单元查询TLB里的表项,将表项里的虚拟页面号与输入到内存管理模块的虚拟地址的高位相比较,如果存在匹配的表项,那么表明TLB命中,此时将此表项里的物理页面号与虚拟地址的低位组成物理地址并输出,成功完成虚拟地址到物理地址的转换。
更进一步,如果没有匹配的表项,那么表明TLB失配,地址转换单元会将TLB失配信息传输给控制单元。所述TLB操作指令寄存器包含TLB读位和TLB写位,分别用于指示读TLB表项和写TLB表项。TLB表项寄存器用于存放一个TLB表项,每个TLB表项都包含一个虚拟页面号和一个物理页面号。TLB失配寄存器用于存放TLB失配时的虚拟页面号。本发明的技术效果为同时支持软件回填与硬件回填的内存管理模块,它在增加少量硬件开销的基础上,可方便的选择软件回填模式或者硬件回填模式完成TLB回填的工作,兼有回填快速性和移植方便性。


图I为一种同时支持软件和硬件回填的内存管理模块的整体结构图。图2为内存管理模块的控制寄存器组结构。图3为页面号和页内偏移在虚拟地址和物理地址内的关系。图4为转换旁路缓冲器TLB的一种典型结构。图5为从虚拟地址被发送给内存管理模块到输出物理地址或者发起回填请求的整个流程。图6为TLB失配异常的响应过程。图7为硬件回填单元通过一级索引得到TLB表项的过程。图8为硬件回填单元通过两级索引得到TLB表项的过程。
具体实施例方式下面结合附图对本发明作进一步描述。参照图I 图8,—种同时支持软件和硬件回填的内存管理模块,它负责将微处理CN 102929796 A书明说3/5页器内部的虚拟地址转换成物理地址。所述内存管理模块包括转换旁路缓冲器TLB、地址转换单元、控制寄存器组、控制单元和硬件回填单元五个部分。
控制寄存器组,包含回填模式控制寄存器、TLB操作指令寄存器、TLB表项寄存器和TLB失配寄存器等,它的结构如图2所不。
回填模式控制寄存器里的回填模式位被用于控制TLB失配时的回填方式。通过设置回填模式位无效,使控制单元在发生TLB失配时选择软件回填模式;通过设置回填模式位有效,使控制单元在发生TLB失配时选择硬件回填模式。
TLB操作指令寄存器是软件对内存管理单元进行设置与状态查询的编程接口,在软件辅助的TLB回填机制下,软件通过该接口实现TLB内容的回填。此寄存器里包含了 TLB 读位和TLB写位,分别用于指示读TLB表项和写TLB表项。在其他实施例中,TLB操作指令寄存器还可以包含TLB查找位、TLB使无效位等,分别用于查找TLB表项和使TLB表项无效。
TLB表项寄存器用于存放一个TLB表项,每个TLB表项都包含一个虚拟页面号和一个物理页面号,在其他实施例中,TLB表项还可以包括指示页面是否可以被缓存的位、指示与页面关联的进程标志号的位、指示页面读写权限的位等。
TLB失配寄存器用于存放TLB失配时的虚拟页面号。
在介绍虚拟地址与物理地址的转换之前,有必要介绍一下页面。虚拟地址与物理地址之间 的映射是以页面为单位完成的,这也就意味着MMU只需将虚拟地址的高位转换为对应的物理地址高位(即将虚拟地址的页面号转换为对应的物理地址的页面号),而虚拟地址的低位在MMU转换过程中是保持不变的,因为它是用于指示地址在页面内的偏移,物理地址页面号和虚拟地址的低位就组成了转换后的物理地址。对于某一个进程,虚拟页面的大小应该与物理页面的大小保持一致,例如但不限于4KB、16KB、64KB等;对于不同的进程之间,页面大小可以保持一致,也可以不一致,不同的实施例有不同的选择。
页面号和页内偏移在虚拟地址和物理地址内的关系如图3所示。地址的高位组成了页面号,地址的低位组成了页内偏移。以32位地址为例,对于4KB的页面,页面号由 [31:12]位组成,页内偏移由[11:0]位组成;对于16KB的页面,页面号由[31:14]位组成,页内偏移由[13:0]位组成;对于64KB的页面,页面号由[31:16]位组成,页内偏移由 [15:0]位组成。
转换旁路缓冲器TLB,它存储了虚拟页面到物理页面的映射表项。图4是本实施例中转换旁路缓冲器TLB的结构,它包含了 128个TLB表项,每个TLB表项都包含有效位、虚拟页面号和物理页面号,如前所述,在其他实施例中,TLB表项还可以包括指示页面是否可以被缓存的位、指示与页面关联的进程标志号的位、指示页面读写权限的位等。
在本实施例中,TLB表项是以直接相联的方式组织的。也就是说每个表项在TLB表中只可能有唯一确定的一个位置,这个位置是由虚拟页面号的高位确定的。在本实施例中, TLB表共有128个表项,那么每个表项的位置由虚拟页面号的高7位所确定。对于32位的地址,虚拟地址的[31:25]位就确定了表项在TLB表中的位置。在其他实施例中,TLB表项还可能以全相联、组相联等方式组织;而组相联又分为二路组相联、三路组相联等。
在虚拟地址被发送到内存管理模块后,地址转换单元根据虚拟地址的[31:25]位在TLB表中找到对应的表项,如果此表项有效,那么将表项里的虚拟页面号与输入到内存5管理模块的虚拟地址的高位相比较,如果它们相等,那么表示TLB命中,此时将此表项里的物理页面号与虚拟地址的低位组成物理地址并输出,成功完成虚拟地址到物理地址的转换。
如果根据虚拟地址的[31:25]位在TLB里找到的表项无效,或者表项里的虚拟页面号与输入到内存管理模块的虚拟地址的高位比较不相等,那么表明TLB失配,地址转换单元会将TLB失配信息传输给控制单元。
通过设置回填模式控制寄存器里的回填模式位无效,控制单元在发生TLB失配时会选择软件回填模式;通过设置回填模式控制寄存器里的回填模式位有效,控制单元在发生TLB失配时会选择硬件回填模式。
从虚拟地址被发送给内存管理模块到输出物理地址或者发起回填请求的整个流程如图5所不。
在软件回填模式下,控制单元将虚拟页面号写入到TLB失配寄存器,接着发起一个TLB失配异常,然后由软件通过异常服务程序响应这个异常,完成TLB表项的回填工作。
与本发明配合的软件在响应TLB失配异常时的工作方式是软件读取TLB失配寄存器里的虚拟页面号,然后从外围内存读取此虚拟页面号所在的TLB映射表项,并将其写入到TLB表项寄存器中,在软件设置了 TLB操作指令寄存器中的TLB写位后,控制单元将 TLB表项寄存器里的TLB映射表项写入到TLB中,此时TLB失配异常就响应完成了。整个 TLB失配异常的响应过程如图6所示。
如前所述,本实施例中TLB表项是以直接相联的方式组织的,因而每个要写入TLB 表的表项只可能被写入到唯一的位置,这个位置由虚拟页面的高位所确定,在本实施例中, 是虚拟地址的[31:25]位。
在软件响应了 TLB失配异常后,虚拟地址会再次被发送到内存管理模块,地址转换单元会再次查询TLB里的表项,将表项里的虚拟页面号与输入到内存管理模块的虚拟地址的高位相比较,此时必定会存在一个表项的虚拟页面号与虚拟地址的高位相等,那么表示TLB命中了,此时将此表项里的物理页面号与虚拟地址的低位组成物理地址并输出。
上述软件回填TLB表项的方法只是众多TLB回填方法中的一种,因此本发明所述内存管理模块并不限定与此软件回填方法配合才能工作,本领域的技术人员可在本发明所述内存管理模块的基础上完成其他软件回填TLB表项的方法。
在硬件回填模式下,控制单元将TLB失配的虚拟页面信息发送给硬件回填单元, 同时发起硬件回填请求,硬件回填单元根据TLB失配信息从外围内存读取TLB映射表项并将其写入到TLB中。
硬件回填单元要完成TLB表项的回填工作还需要页表入口寄存器(Page Table Entry, PTE)的配合,这个寄存器存放了内存中的一个地址,从这个地址开始的一段内存空间存放了所有的TLB表项。
硬件回填单元的一种典型实现在回填TLB表项时只需要访问一次内存,在这种实现下,所有的TLB表项根据虚拟页面号的大小顺序存放在页表入口寄存器所指地址开始的内存空间中。如图7所示,当TLB失配发生时,硬件回填单元根据页表入口寄存器和失配的虚拟页面号从内存读取对应的TLB表项,然后将其写入转换旁路缓冲器TLB,再将此TLB表项中的物理页面号和虚拟地址的低位组成物理地址经由地址转换单元输送出去。
上述硬件回填单元的设计只是众多硬件回填装置中的一种,因此本发明所述内存管理模块并不限定与此硬件回填单元配合才能工作,本领域的技术人员可在本发明所述内存管理模块的基础上完成其他硬件回填单元的设计,比如在内存中查找失配虚拟页号所在的TLB表项不是由一次内存访问完成,而是分成两次,这就需要将虚拟页面号分成两部分, 然后根据页表入口寄存器和虚拟页面号的高半部分从内存读取TLB表入口地址,再根据这个地址和虚拟页面号的低半部分从内存读取真正的TLB表项,这种通过两级索引得到TLB 表项的过程如图8所示。必须要注意的是这里是将虚拟页面号分成了两部分,而虚拟页面号本身又是虚拟地址的高位。当然从内存中读取虚拟页面号所对应的TLB表项的工作也可以由三次或者多次内存访问完成,相应的也就需要将虚拟地址分成三部分或者多部分。
在硬件回填模式下,即使地址转换单元没能在转换旁路缓冲器TLB中找到虚拟地址对应的表项,也不会有TLB失配异常发生,因为硬件回填单元会处理好TLB失配,因而从虚拟地址被输入到内存管理模块开始到内存管理模块输出物理地址结束的整个过程中,都不会有软件的参与,可以在较短的时间内完成TLB回填的工作。
通过设置回填模式控制寄存器,本发明提供了一种同时支持软件回填与硬件回填的内存管理模块,它在增加少量硬件开销的基础上,可方便的选择软件回填模式或者硬件回填模式完成TLB回填的工作。
权利要求
1.一种同时支持软件回填与硬件回填的内存管理模块,包括 转换旁路缓冲器TLB,用于存储虚拟页面到物理页面的映射表项; 地址转换单元,用于根据输入到内存管理模块的虚拟地址,查询TLB中的表项,输出物理地址或者TLB失配信息; 其特征在于所述内存管理模块还包括 控制寄存器组,包含回填模式控制寄存器、TLB操作指令寄存器、TLB表项寄存器和TLB失配寄存器; 硬件回填单元,用于访问外围内存,根据TLB失配信息将外围内存中存储的映射表项读入并写到TLB中; 控制单元,用于根据TLB操作指令寄存器里的信息对TLB作读和写操作;根据回填模式控制寄存器里的信息控制TLB失配时的回填方式,其中, 在软件回填模式下,将虚拟页面号写入到TLB失配寄存器,接着发起一个TLB失配异常,然后通过异常服务程序响应这个异常,完成TLB表项的回填工作; 在硬件回填模式下,将TLB失配的虚拟页面信息发送给硬件回填单元,同时向所述硬件回填单元发起硬件回填请求。
2.如权利要求I所述的同时支持软件回填与硬件回填的内存管理模块,其特征在于所述回填模式控制寄存器中,当回填模式位无效,控制单元在发生TLB失配时会选择软件回填模式;当回填模式位有效,控制单元在发生TLB失配时会选择硬件回填模式。
3.如权利要求I或2所述的同时支持软件回填与硬件回填的内存管理模块,其特征在于在虚拟地址被发送到内存管理模块后,地址转换单元查询TLB里的表项,将表项里的虚拟页面号与输入到内存管理模块的虚拟地址的高位相比较,如果存在匹配的表项,那么表明TLB命中,此时将此表项里的物理页面号与虚拟地址的低位组成物理地址并输出,成功完成虚拟地址到物理地址的转换。
4.如权利要求3所述的同时支持软件回填与硬件回填的内存管理模块,其特征在于如果没有匹配的表项,那么表明TLB失配,地址转换单元会将TLB失配信息传输给控制单J Li ο
5.如权利要求I或2所述的同时支持软件回填与硬件回填的内存管理模块,其特征在于所述TLB操作指令寄存器包含TLB读位和TLB写位,分别用于指示读TLB表项和写TLB表项。
6.如权利要求I或2所述的同时支持软件回填与硬件回填的内存管理模块,其特征在于所述TLB表项寄存器用于存放一个TLB表项,每个TLB表项都包含一个虚拟页面号和一个物理页面号。
7.如权利要求I或2所述的同时支持软件回填与硬件回填的内存管理模块,其特征在于所述TLB失配寄存器用于存放TLB失配时的虚拟页面号。
全文摘要
一种同时支持软件回填与硬件回填的内存管理模块,包括转换旁路缓冲器TLB,用于存储虚拟页面到物理页面的映射表项;地址转换单元,用于根据输入到内存管理模块的虚拟地址,查询TLB中的表项,输出物理地址或者TLB失配信息;控制寄存器组,包含回填模式控制寄存器、TLB操作指令寄存器、TLB表项寄存器和TLB失配寄存器;硬件回填单元,用于访问外围内存,根据TLB失配信息将外围内存中存储的映射表项读入并写到TLB中;控制单元,用于根据TLB操作指令寄存器里的信息对TLB作读和写操作;根据回填模式控制寄存器里的信息控制TLB失配时的回填方式。本发明兼有回填快速性和移植方便性。
文档编号G06F12/08GK102929796SQ201210179650
公开日2013年2月13日 申请日期2012年6月1日 优先权日2012年6月1日
发明者杨军, 莫鹏飞, 丁永林 申请人:杭州中天微系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1