用于进程切换的旁路转换缓冲器(tlb)及在其中地址匹配的方法

文档序号:6366408阅读:260来源:国知局
专利名称:用于进程切换的旁路转换缓冲器(tlb)及在其中地址匹配的方法
技术领域
本发明属于计算机存储领域,尤其是有标记阵列和数据阵列的TLB及在此种TLB中地址匹配的方法。
背景技术
现代的微处理器系统大都使用虚拟地址(VA)寻址,使用虚拟地址技术可以创建比实际物理地址(PA)大的多的寻址空间。大多数使用虚拟存储器的系统都使用一种称为 分页(paging)机制。虚拟地址空间划分成称为页(page)的单位,而相应的物理地址空间也被进行划分。而在使用了虚拟存储器的情况下,虚拟地址不是被直接送到内存地址总线上,而是送到内存管理单元(MMU),把虚拟地址映射为物理地址。包含有虚拟地址到实际物理地址映射关系的信息通常被放在一个被称作页表的数据结构中。页表通常是放在系统主存储器中,因此对页表的访问带来了大量的主存储器的访问开销。为了减少对主存储器的访问次数,许多处理器系统使用一个叫旁路转换缓冲器(TLB)的高速缓存,TLB存储了处理器最近访问内存的虚拟地址和物理地址。在进行虚拟地址到物理地址转换时,内存管理单元首先搜索TLB,如果请求的虚拟地址到物理地址的映射关系缓存在TLB中,发生TLB命中(TLB Hit),则直接取出其物理地址,如果没有,发生TLB缺失(TLB Miss),再访问主存储器中的页表,并更新TLB。如何避免TLB频繁出现TLB Miss和提高TLB查找操作时的速度是TLB设计时两个重要的考虑因素。避免TLB频繁出现TLB Miss要求页表在TLB中缓存时要均匀地分布,这样就减少了 TLB替换的可能性,从而减少了 TLB Miss的几率。为了追求TLB最均匀分布,有些TLB设计采用全相联(Full Associative)结构,TLB中每一条目都可以缓存任意一条虚拟页映射信息。但是这样在TLB查找操作时需要大量的时间,因为要遍历TLB的每一个条目和虚拟地址相关信息比较。为了减少TLB时间,有些设计又采用了可寻址存储器(CAM)设计,这样又极大增加了设计的复杂性和硬件开销。如今多进程已经逐渐成为系统应用的主流,在多进程应用场景中,每个进程都有独立的虚拟地址空间。同时现代处理器往往支持多种尺寸的页,如4KB,16KB, 64KB, IMB, 256MB, IGB等。因此在多进程,多种页尺寸下,在TLB中缓存页表时,均匀分布性问题必须要充分考虑,否则会频繁的发生TLB替换从而导致TLBMiss,导致系统性能下降特别是进程切换时间变长。

发明内容
考虑到上述TLB设计中的问题,本发明提供了一种用于快速进程切换的TLB设计方法,非常适合于追求硬件成本和进程切换速度的应用。根据本发明的第一方面提供一种用于进程切换的旁路转换缓冲器(TLB),所述的TLB存储包括标记阵列(Tag Array)和数据阵列(Data Array)每一个虚拟页映射信息都缓存在地址相同的Tag Array和Data Array的一个条目中。
进一步地,在所述的用于进程切换的旁路转换缓冲器(TLB)中,所述的标记阵列条目存储包括虚拟页号(VPN)、有效位(V)、页尺寸(PSize)、进程号(PID)。所述的数据阵列(Data Array)条目存储包括物理页号(PPN)和页属性(PAttr)。进一步地,所述的TLB还包括与哈希(Hash)变换电路连接的搜索优先级寄存器和与标记阵列(Tag Array)相连接的比较逻辑电路。根据本发明的另一方面一种采用快速进程切换的旁路转换缓冲器进行有效地址匹配的方法,其中所述有效地址包括虚拟地址页偏移量和物理地址页号,所述的TLB存储包括(Tag Array)和数据阵列(Data Array)每一 个虚拟页映射信息都缓存在地址相同的Tag Array 和 Data Array 的一个条目中。包括以下步骤I.通过处理器内部特殊寄存器总线对搜索优先级寄存器进行配置根据进程设定搜索页面尺寸的优先级。2.哈希(Hash)变换电路根据虚拟地址页号和进程号进行散列变换。3.采用比较逻辑将内存管理单元输入的虚拟地址页号和进程号和当前使用的搜索优先级寄存器的页尺寸与标记阵列输出的条目信息进行比较。进一步地,所述的比较逻辑用于比较虚拟地址页号和标记阵列输出的条目信息是否相等的比较包括以下比较内容(I)虚拟地址页号和标记阵列输出的条目信息的VPN是否相等。(2)进程号与标记阵列输出的条目信息的PID是否相等。(3)当前遍历的页尺寸与标记阵列输出的条目信息的Psize。本发明将不同进程,不同尺寸页在TLB中缓存时分布的均匀性得到了充分的考虑,显著降低了 TLB替换的可能性,从而显著降低了发生TLB Miss的可能性,可以快速的进行进程切换。搜索优先级寄存器的设计更加提高了进程切换时进行TLB查找操作的速度。本发明设计简单,硬件成本低。


图I是本发明所提供的一种快速进程切换的旁路转换器的结构示意2是一种搜索优先级寄存器的结构示意3是根据一个实施例的有效地址匹配的方法的流程示意图
具体实施例方式下面结合附图来说明本发明的具体实施方式
。如前所述根据本发明的第一方面提供一种用于进程切换的旁路转换缓冲器(TLB),所述的TLB存储包括标记阵列(TagArray)和数据阵列(Data Array)和TLB条目寻址电路每一个虚拟页映射信息都缓存在地址相同的Tag Array和Data Array的一个条目中。对标记阵列A8写操作的输入数据来自内存管理单元,包括有效位(V)A17,页面尺寸(Psize)A2,虚拟地址页号(VPN)A3,进程号(PID)A4。对数据阵列A9写操作的输入数据来自内存管理单元,包括物理页号和页属性Al。当系统切换进程以前,需要通过处理器内部特殊寄存器总线A16进行配置的搜索优先级寄存器,按照进程虚拟地址页尺寸的特征通过处理器内部特殊寄存器总线A16更新搜索优先级寄存A7,符合本发明要求的一个设计实例如图2所示,该实例应用于支持4种页尺寸的场景。在该实例中,这4种页尺寸为4KB,64KB,1MB和16MB。该实例有8bit,每2bit表示一个优先级,如图2所示。优先级按照从高到低为优先级1B1,优先级2B2,优先级2B3,优先级2B4。每个优先级所设置的页尺寸编码为B5。所示哈希(Hash)变换电路A6主要用于进行TLB匹配操作和TLB更新或替换操作时,根据虚拟地址页号A3和进程号A4进行TLB条目地址的定位,即将虚拟地址页号A3和进程号A4作为哈希变换电路A6的输入部分进行散列变换操作。哈希电路根据搜索优先级寄存器提供的最先优先级页面尺寸选择相应的散列变换公式,将内存管理单元输入的虚拟地址页号A3和进程号A4按照变换公式运算,得到TLB标记阵列AS和数据阵列A9条目地址。标记阵列AS根据所得到的输出条目信息AlO到比较逻辑All。比较逻辑All用内存管理单元输入的虚拟地址页号A3和进程号A4,当前使用的搜索优先级寄存器A7的页尺寸同标记阵列AS输出的条目信息AlO相比较,如果该条目有效并且比较通过,则产生TLB命中(Hit)A14,数据阵列A9按照和步骤S6中标记阵列AS相同的地址输出条目信息A18,虚拟地址页号A3对应的物理地址页号(PPN)A19产生。新进程的物理地址由内存管理单元输入的虚拟地址页偏移量A5和步骤S8数据阵列A9的输出的条目信息A18的物理地址页号(PPN) A19拼接得到。这样系统能够迅速寻找到新进程的物理地址。如果在比较逻辑在前者所述的比较过程中,条目信息不能够有效通过,则按照下一优先级B2的进程虚拟地址页尺寸的特征更新搜索优先级寄存A7,哈希(Hash)变换电路根据新设定的搜索优先级寄存器的页尺寸类型重新选择相应的散列变换公式,重新将内存管理单元输入的虚拟地址页号和进程号按照变换公式计算,新的TLB标记阵列和数据阵列条目地址,并按照先前所述的步骤进入比较逻辑与内存管理单元输入的虚拟地址页号A3和进程号A4,当前使用的搜索优先级寄存器A7的页尺寸,如果TLB命中,则按照先前所述的方法得出新进程的物理地址,如果仍然发生TLB缺失,则继续执行从处理器内部特殊寄存器总线A16配置搜索优先级寄存器开始的步骤,直至发生TLB命中。数据阵列A9按照和步骤S6中标记阵列AS相同的地址输出条目信息A18,虚拟地址页号A3对应的物理地址页号(PPN)A19产生。新进程的物理地址由内存管理单元输入的虚拟地址页偏移量A5和步骤S8数据阵列A9的输出的条目信息A18的物理地址页号(PPN) A19拼接得到。如果当前已经使用了所有的搜索优先级寄存器A7的页尺寸选择变换公式,而且仍没有发生TLB Hit A14,则系统会从主存中的页表中获得地址转换信息,并更新TLB。内存管理单元向哈希(Hash)变换电路A6输入从主存页表中获得的页尺寸A2,哈希(Hash)变换电路A6根据页尺寸A2选择变换公式。哈希(Hash)变换电路A6根据内存管理单元输入的虚拟地址页号A3和进程号A4进行散列化运算,得到条目地址。内存管理单元从主存中页表处获得的页尺寸A2,虚拟地址页号A3,进程号A4写入从哈希(Hash)变换电路A6获得的标记阵列AS条目地址单元,同时内存管理单元将有效位A17写入标记阵列AS的该条目地址单元。内存管理单元从主存中页表处获得的包括物理页号和页属性Al写入数据阵列A9相同的条目地址单元。哈希电路中不同页尺寸下的有不同的变换公式,页尺寸信息在TLB查找操作时来自搜索优先寄存器A7,在TLB更新或替换操作时来自内存管理单元的页尺寸数据输入A2。在采用如图2所示的搜素优先级寄存器设计实例和如图I所示的标记阵 列A8和数据阵列A9的包含256个条目的设计实例,在处理器虚拟地址长度为32比特的系统中,符合本发明要求的能够变换公式如下页尺寸为64KB虚拟地址页号(VPN)=虚拟地址(VA) [31:12]TLB 条目地址[7:0] = PID[7:0] ~VA[31:24] ~ {VA[23:20], 4,b0} ~VA[19:12]
页尺寸为64KB 虚拟地址页号(VPN)=虚拟地址(VA) [31:16]TLB 条目地址[7:0] = PID [7:0] ~VA[31:24] ~VA[23:16]页尺寸为IMB 虚拟地址页号(VPN)=虚拟地址(VA) [31:20]TLB 条目地址[7:0] = PID [7:0]~ {VA[31:28],4,bO}~VA[27:20]页尺寸为16MB :虚拟地址页号(VPN)=虚拟地址(VA) [31:24]TLB 条目地址[7:0] = PID [7:0]~VA[31:24]。搜索优先级寄存器A7可以通过处理器内部特殊寄存器总线A16进行配置,如图2所示,该搜索优先级寄存器应用于支持4种页尺寸的场景。这4种页尺寸为4KB,64KB,IMB和16MB。该实例有8bit,每2bit表示一个优先级,优先级按照从高到低为优先级1B1,优先级2B2,优先级2B3,优先级2B4。每个优先级所设置的页尺寸编码B5如图2所示。如果搜索优先级寄存器配置为8’b00011011,则表示在TLB中进行虚拟页映射信息查找时,先按照虚拟地址页尺寸为4KB进行查找,如果没有发生TLB命中,则按照页尺寸为64KB进行查找,如果没有发生TLB命中,则按照页尺寸为IMB进行查找,如果没有发生命中,则按照页尺寸为16MB进行查找。基于上述的TLB结构,内存管理单元(MMU)对TLB的操作运行如图3所示的流程示意图。并按照以下步骤运行步骤SI :系统当前运行进程I步骤S2 :系统在准备切换到进程2之前,需要配置如图I所示的搜索优先级寄存器A7,按照进程2虚拟地址页尺寸的特征通过处理器内部特殊寄存器总线A16更新搜索优先级寄存A7,将进程2中最常见的页尺寸设为最高优先级。步骤S3 :系统切换到进程2。需要对进程2的取址地址执行从虚拟地址到物理地址的转换。步骤S4 :内存管理单元将查询TLB,确定寻址页映射信息是否缓存在TLB中。如图I所示,内存管理单元将进程2的虚拟地址页号A3和进程号A4输入到哈希(Hash)变换电路A6。步骤S5 :如图I所示的哈希(Hash)变换电路A6根据搜索优先级寄存器A7的优先级IBl中的页尺寸类型来选择相应的散列变换公式,将内存管理单元输入的虚拟地址页号A3和进程号A4按照变换公式运算,得到TLB标记阵列AS和数据阵列A9条目地址。步骤S6 :如图I所示的标记阵列AS根据步骤S5得到的条目地址,输出条目信息AlO到比较逻辑All。比较逻辑All用内存管理单元输入的虚拟地址页号A3和进程号A4,当前使用的搜索优先级寄存器A7的页尺寸同标记阵列AS输出的条目信息AlO相比较,如果该条目有效并且比较通过,则产生TLB Hit A14,转至步骤S8。
步骤S7 :如果按照搜索优先级寄存器A7优先级IBl中的页尺寸选择变换公式后得到的条目地址,标记阵列AS输出的条目信息没有在比较逻辑All中通过,转至步骤S5,并且在S5中使用搜索优先级寄存器A7优先级2B2的页尺寸来选择变换公式。以此类推,如果当前已经使用了搜索优先级寄存器A7优先级3B3的页尺寸选择变换公式,而且仍没有发生TLB HUA14,则对搜索优先级寄存器A7的内容已经遍历完成,产生TLB Miss A14,转至步骤S9步骤S8 :如图I所示的数据阵列A9按照和步骤S6中标记阵列AS相同的地址输出条目信息A18,虚拟地址页号A3对应的物理地址页号(PPN)A19产生,转至步骤S10。步骤S9 :如图I所示的比较逻辑All产生了 TLB Miss A15,系统会从主存中的页表中获得地址转换信息,并更新TLB。内存管理单元向哈希(Hash)变换电路A6输入从主存页表中获得的页尺寸A2,哈希(Hash)变换电路A6跟你讲页尺寸A2选择变换公式。哈希(Hash)变换电路A6根据内存管理单元输入的虚拟地址页号A3和进程号A4进行散列化运算,得到条目地址。内存管理单元从主存中页表处获得的页尺寸A2,虚拟地址页号A3,进程号A4写入从哈希(Hash)变换电路A6获得的标记阵列AS条目地址单元,同时内存管理单 元将有效位A17写入标记阵列AS的该条目地址单元。内存管理单元从主存中页表处获得的包括物理页号和页属性Al写入数据阵列A9相同的条目地址单元。步骤SlO :如果步骤S6产生了 TLB Hit A14,则进程2物理地址由内存管理单元输入的虚拟地址页偏移量A5和步骤S8数据阵列A9的输出的条目信息A18的物理地址页号(PPN)A19拼接得到。如果步骤S7产生了 TLBMiss A15,则进2物理地址由系统读取主存中页表后得到,通常是通过从页表中获得的物理页号(PPN)和虚拟地址页偏移量拼接而成。步骤Sll :系统运行进程2虽然以上对本发明一种用于进程切换的旁路转换缓冲器(TLB)以及在此TLB中进行地址匹配的方法进行了详细说明,但本发明并不限定于此。本领域普通技术人员能够在说明书的教导之下对本发明进行多种变换、替换和修改而不偏离本发明的精神和范围使其适用于其他情况,所有这样的变化、替换、修改仍然落入本发明的保护范围之内。
权利要求
1.一种用于进程切换的旁路转换缓冲器(TLB),其特征在于所述的TLB存储包括标记阵列(Tag Array)和数据阵列(Data Array),每一个虚拟页映射信息都缓存在地址相同的Tag Array 和 Data Array 的一个条目中。
2.根据权利要求I所述的用于进程切换的旁路转换缓冲器(TLB),其特征在于所述的标记阵列条目存储包括虚拟页号(VPN)、有效位(V)、页尺寸(PSize)、进程号(PID)。所述的数据阵列(Data Array)条目存储包括物理页号(PPN)和页属性(PAttr)。
3.根据权利要求I所述的用于切换的旁路转换缓冲器(TLB),其特征在于所述的TLB还包括与标记阵列(Tag Array)相连接的哈希(Hash)变换电路。
4.根据权利要求3所述的用于切换的旁路转换缓冲器(TLB),其特征在于所述的TLB还包括与哈希(Hash)变换电路连接的搜索优先级寄存器和与标记阵列(Tag Array)相连接的比较逻辑电路。
5.一种采用快速进程切换的旁路转换缓冲器进行有效地址匹配的方法,其中所述有效地址包括虚拟地址页偏移量和物理地址页号,所述的TLB存储包括(Tag Array)和数据阵列(Data Array)每一个虚拟页映射信息都缓存在地址相同的Tag Array和Data Array的一个条目中。
包括以下步骤 (1)通过处理器内部特殊寄存器总线对搜索优先级寄存器进行配置根据进程设定搜索页面尺寸的优先级。
(2)哈希(Hash)变换电路根据虚拟地址页号和进程号进行散列变换。
(3)采用比较逻辑将内存管理单元输入的虚拟地址页号和进程号和当前使用的搜索优先级寄存器的页尺寸与标记阵列输出的条目信息进行比较。
(4)比较通过,则将物理地址拼接逻辑与数据阵列的输出的条目信息A18的物理地址页号拼接,得出物理地址。
6.根据权利要求5所述的方法,其中所述的比较逻辑用于比较虚拟地址页号和标记阵列输出的条目信息虚拟地址页号(VPN)是否相等包括以下比较内容 (1)虚拟地址页号和标记阵列输出的条目信息的VPN是否相等。
(2)进程号与标记阵列输出的条目信息的当前进程的工D号(PID)是否相等。
(3)当前遍历的页尺寸与标记阵列输出的条目信息的页尺寸(Psize)。
(4)标记阵列输出的条目信息的有效位。
全文摘要
本发明涉及用于快速进程切换的旁路转换缓冲器(TLB)及在其中进行地址匹配的的方法。所述的TLB存储包括标记阵列和数据阵列,每一个虚拟页映射信息都缓存在地址相同的标记阵列和数据阵列的一个条目中。还提供了在所述TLB中进行地址匹配的方法。主要步骤包括通过处理器内部特殊寄存器总线根据进程对搜索优先级寄存器进行配置,设定搜索页面尺寸的优先级。哈希变换电路根据虚拟地址页号和进程号进行散列变换。采用比较逻辑将内存管理单元输入的虚拟地址页号和进程号和当前使用的搜索优先级寄存器的页尺寸与标记阵列输出的条目信息进行比较。虚拟地址页偏移量和物理地址页号通过物理地址拼接逻辑进行拼接得出物理地址,得出物理地址。
文档编号G06F12/08GK102662860SQ20121006869
公开日2012年9月12日 申请日期2012年3月15日 优先权日2012年3月15日
发明者李楠, 王忠海, 肖佐楠, 郑茳 申请人:天津国芯科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1