适用于RISC-V的多级可扩展TLB结构

文档序号:33458080发布日期:2023-03-15 02:58阅读:55来源:国知局
适用于risc-v的多级可扩展tlb结构
技术领域
:1.本发明涉及计算机
技术领域
:,具体涉及一种适用于risc-v的多级可扩展tlb结构及其地址转换方法。
背景技术
::2.内存是冯·诺依曼体系结构计算机中非常重要硬件资源,能否高效地管理物理内存,对计算机系统的整体性能有着巨大影响。现代具备内存管理功能的cpu(centralprocessingunit)都实现了页式内存管理机制,能按照固定大小的内存页有效地管理物理内存。页式内存管理机制使用一种称为页表的数据结构来管理物理内存,页表通常拥有多级,这导致每次取指令和访存都需要多次访问物理内存,效率较低。3.为了解决页表带来的多次访存问题,现代cpu通常采用内存管理单元(memorymanagementunit,mmu)和转译后备缓冲器(translationlookasidebuffer,tlb)来快速完成虚拟地址到物理地址的映射,tlb通过利用程序的时间局部性原理、空间局部性原理,将常用的页表缓存在tlb中,能够有效地减少访存次数,提高计算机系统的整体性能。4.risc-v是一个基于精简指令集(risc)原则的开源指令集架构(isa),risc-v架构在supervisort特权级别对内存采用页式管理机制,其中,rv32支持bare、sv32,rv64支持bare、sv39、sv48等多种模式的页表模式。然而,现有的risc-v规范并没有定义tlb结构,在使用时难以满足不同性能要求的计算场景。技术实现要素:5.为解决上述现有技术中存在的部分或全部技术问题,本发明提供一种适用于risc-v的多级可扩展tlb结构及其地址转换方法。6.本发明的技术方案如下:7.第一方面,提供了一种适用于risc-v的多级可扩展tlb结构,包括:8.多级tlb,所述多级tlb包括一级tlb、以及可供选择使用的二级至n级tlb,所述tlb用于存储虚拟地址到物理地址的页表项、以及用于将虚拟地址转换为实际的物理地址,其中,n为预设值;9.stlbctrl寄存器,用于提供对tlb的管理功能;10.可供选择使用的stlblv寄存器、stlbidx寄存器、stlb0寄存器、stlb1寄存器和stlb2寄存器,所述stlblv寄存器用于在管理tlb时指出tlb的层级数,所述stlbidx寄存器用于在管理tlb时指出处于某个层级中tlb的索引,所述stlb0寄存器用于在管理tlb时给出虚拟页号,所述stlb1寄存器用于在管理tlb时给出物理页号和访问控制信息,所述stlb2寄存器用于在管理tlb时给出tlb的地址空间id。11.在一些可能的实现方式中,所述stlbctrl寄存器设定finv、linv、inv、r和w功能域,基于设定的多个功能域进行tlb的管理。12.在一些可能的实现方式中,所述tlb的管理机制设置为:13.当往所述stlbctrl寄存器的finv域写1,或者执行扩展指令tlbfinv时,所有层级的所有tlb表项失效。14.在一些可能的实现方式中,所述tlb的管理机制还设置为:15.当往所述stlbctrl寄存器的linv域写1,或执行扩展指令tlblinv时,由所述stlblv寄存器指定的层级的所有tlb表项失效。16.在一些可能的实现方式中,所述tlb的管理机制还设置为:17.当往所述stlbctrl寄存器的inv域写1,或执行扩展指令tlbinv时,由所述stlblv寄存器指定的层级中所述stlbidx寄存器指定的tlb表项失效。18.在一些可能的实现方式中,所述tlb的管理机制还设置为:19.当往所述stlbctrl寄存器的r域写1,或执行扩展指令tlbre时,由所述stlblv寄存器指定的层级中所述stlbidx寄存器指定的tlb表项的信息读到所述stlb0寄存器、所述stlb1寄存器和/或所述stlb2寄存器中。20.在一些可能的实现方式中,所述tlb的管理机制还设置为:21.当往所述stlbctrl寄存器的w域写1,或执行扩展指令tlbwe时,使用所述stlb0寄存器、所述stlb1寄存器和/或所述stlb2寄存器中的信息生成所述stlblv寄存器指定的层级中所述stlbidx寄存器指定的tlb表项。22.第二方面,提供了一种用于上述的适用于risc-v的多级可扩展tlb结构的地址转换方法,当存在实现的i级tlb时,i≤n,所述方法包括以下步骤:23.步骤s1,使用一级tlb中的地址映射信息将当前使用的虚拟地址转换为物理地址,若能够成功转换,则使用转换得到的物理地址访问物理内存,否则,在i≥2时进行步骤s2,在i=1时进行步骤s5;24.步骤s2,使用二级tlb中的地址映射信息将当前使用的虚拟地址转换为物理地址,若能够成功转换,则将相应的地址转换信息缓存到一级tlb,并使用转换得到的物理地址访问物理内存,否则,在i≥3时进行步骤s3,在i=2时进行步骤s5;25.步骤s3,使用下一级tlb中的地址映射信息将当前使用的虚拟地址转换为物理地址,若能够成功转换,则将相应的地址转换信息依次缓存到上一级tlb至一级tlb,并使用转换得到的物理地址访问物理内存,否则,进行步骤s4;26.步骤s4,以当前下一级tlb为基准,重新进行步骤s3,直至当前下一级tlb为i级tlb后,进行步骤s5;27.步骤s5,查找页表,使用页表中的地址映射信息将当前使用的虚拟地址转换为物理地址,若能够成功转换,则将相应的地址转换信息依次缓存到i级tlb至一级tlb,并使用转换得到的物理地址访问物理内存,否则,进行步骤s6;28.步骤s6,抛出缺页异常,由操作系统进行处理。29.在一些可能的实现方式中,所述方法还包括:30.若出现tlb多次命中,则抛出tlb多次命中异常,由操作系统进行处理。31.本发明技术方案的主要优点如下:32.本发明的适用于risc-v的多级可扩展tlb结构及其地址转换方法通过设置可扩展的多级tlb,并增加寄存器提供软件管理多级tlb的机制,以及提供可选选择的通过扩展指令实现软件管理多级tlb的机制,能够让面向不同性能要求的计算场景的risc-v处理器实preservevalues,readsignorevalues)和tlblev区域,tlblev域用来指定tlb的层级。52.其中,stlblv寄存器在rv32和rv64中均为32-bit。53.参考图3,本发明一实施例中,stlbidx寄存器定义有wpri(reservedwritespreservevalues,readsignorevalues)和tlbnum区域,tlbnum域用来指定tlb在层级中的编号。54.其中,stlbidx寄存器在rv32和rv64中均为32-bit。55.参考图4,本发明一实施例中,stlb0寄存器定义有vpn(virtualpagenumber,虚拟页号)、reserved和pslev区域,pslev域表示对应虚拟页面的大小。56.其中,stlb0寄存器在rv32中为32-bit,在rv64中为64-bit。57.参考图5,本发明一实施例中,stlb1寄存器定义有rpn、rsw、d、a、g、u、x、w、r和v区域。v代表有效位,如果该位为0,则该页表项无效,其他域的值无意义;rpn用于指定物理页号,rsw用于保留给监管软件(supervior)使用;a为accessed域,当页面被访问过,会设置a域;d为dirty域,当页面被写过时,会设置d域;x、w、r分别表示该页面的可执行、可写、可读权限;u域代表用户态程序是否能访问该页面;g域代表该页面是一个全局的,即该页面存在于所有地址空间。58.其中,stlb1寄存器在rv32中为32-bit,在rv64中为64-bit。59.参考图6,本发明一实施例中,stlb2寄存器定义有wpri(reservedwritespreservevalues,readsignorevalues)和asid(addressspaceid,地址空间id)区域。60.其中,stlb2寄存器在rv32中为32-bit,在rv64中为64-bit。61.进一步地,本发明一实施例中,基于上述定义的各个寄存器的格式,通过stlbctrl寄存器、stlblv寄存器、stlbidx寄存器、stlb0寄存器、stlb1寄存器和stlb2寄存器管理tlb的管理机制设置为:62.当往stlbctrl寄存器的finv域写1,或者执行扩展指令tlbfinv时,所有层级的所有tlb表项(tlbentry)失效;63.当往stlbctrl寄存器的linv域写1,或执行扩展指令tlblinv时,由stlblv寄存器指定的层级的所有tlb表项(tlbentry)失效;64.当往stlbctrl寄存器的inv域写1,或执行扩展指令tlbinv时,由stlblv寄存器指定的层级中stlbidx寄存器指定的tlb表项(tlbentry)失效;65.当往stlbctrl寄存器的r域写1,或执行扩展指令tlbre时,由stlblv寄存器指定的层级中stlbidx寄存器指定的tlb表项(tlbentry)的信息读到stlb0寄存器、stlb1寄存器和/或stlb2寄存器中;66.当往stlbctrl寄存器的w域写1,或执行扩展指令tlbwe时,使用stlb0寄存器、stlb1寄存器和/或stlb2寄存器中的信息生成stlblv寄存器指定的层级中stlbidx寄存器指定的tlb表项(tlbentry)。67.参考图7,本发明一实施例还提供了一种用于上述的适用于risc-v的多级可扩展tlb结构的地址转换方法,当存在实现的i级tlb时,i≤n,该方法包括以下步骤:68.步骤s1,使用一级tlb(l1tlb)中的地址映射信息将当前使用的虚拟地址转换为物理地址,若能够成功转换,则使用转换得到的物理地址访问物理内存,否则,在i≥2时进行步骤s2,在i=1时进行步骤s5;69.步骤s2,使用二级tlb(l2tlb)中的地址映射信息将当前使用的虚拟地址转换为物理地址,若能够成功转换,则将相应的地址转换信息缓存到一级tlb,并使用转换得到的物理地址访问物理内存,否则,在i≥3时进行步骤s3,在i=2时进行步骤s5;70.步骤s3,使用下一级tlb中的地址映射信息将当前使用的虚拟地址转换为物理地址,若能够成功转换,则将相应的地址转换信息依次缓存到上一级tlb至一级tlb,并使用转换得到的物理地址访问物理内存,否则,进行步骤s4;71.步骤s4,以当前下一级tlb为基准,重新进行步骤s3,直至当前下一级tlb为i级tlb后,进行步骤s5;72.步骤s5,查找页表,使用页表中的地址映射信息将当前使用的虚拟地址转换为物理地址,若能够成功转换,则将相应的地址转换信息依次缓存到i级tlb至一级tlb,并使用转换得到的物理地址访问物理内存,否则,进行步骤s6;73.步骤s6,抛出缺页异常(pagefault异常),由操作系统进行处理。74.具体地,当处理器需要访存或取指令时,内存管理单元(memorymanagementunit,mmu)获取对应的虚拟地址,基于获取的虚拟地址,利用上述的地址转换方法将虚拟地址转换为物理地址。75.本发明一实施例中,当tlb结构包含实现的多级tlb时,最后一级tlb为页表的缓存,上一级tlb为下一级tlb的缓存。若没有实现多级tlb,则一级tlb为页表的缓存。76.由于硬件电路存在不稳定因素或软件故障导致多级tlb机制出现异常,需要扩充一类tlb相关的异常类型来处理相关的异常,例如,tlbentryecc异常时,硬件需要产生tlberrorexception,或一个虚拟地址能够匹配上多个tlbentry时,硬件需要产生tlbmultiplehitexception。77.进一步地,本发明一实施例中,该地址转换方法还包括:若出现tlb多次命中(tlbmultiple-hit异常),则抛出tlb多次命中异常,由操作系统进行处理。78.risc-v实现了多种页表的模式,rv32下为sv32,rv64则定义了sv39、sv48,rv64还预留了sv57,sv64在未来版本扩展。79.进一步地,以下举例说明本发明一实施例提供的多级可扩展tlb结构在不同页表模式下的匹配过程:80.参考图8-9,由satp寄存器的mode域指出当前硬件所采用的页表模式,不同页表模式下,页表的地址转换算法不同,tlb的匹配方式也不一样。81.以rv32的sv32为例,将虚拟地址、物理地址和pagetableentry做了如图8所示的划分,在sv32定义的地址转换算法中,参考volumeⅱ:risc-vprivilegedarchitectures第70页,定义了levels变量为2。在转换算法结束时,levels为1时,说明需要映射的是4mb的页;levels为0时,说明需要映射的是4kb的页。sv32地址转换算法最后得到的levels的值,将成为tlb中的tlb0[pslev]的值。[0082]根据上述分析,在sv32页表模式下,tlb匹配成功的条件为:[0083]当pslev=0时,[0084]如果va[31:12]=vpn[32:12]&&asid=satp[asid][0085]成立时,说明tlb匹配成功。[0086]当pslev=1时,[0087]如果va[31:22]=vpn[32:22]&&asid=satp[asid][0088]成立时,说明tlb匹配成功。[0089]对于risc-v定义的其他页表模式,如rv64支持的sv39、sv48,也模块化地支持上述类似的tlb匹配算法。[0090]本发明一实施例提供的适用于risc-v的多级可扩展tlb结构及其地址转换方法通过设置可扩展的多级tlb,并增加寄存器提供软件管理多级tlb的机制,以及提供可选选择的通过扩展指令实现软件管理多级tlb的机制,能够让面向不同性能要求的计算场景的risc-v处理器实现合适的多级tlb结构,以满足不同性能要求的计算场景的使用需求。[0091]需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。此外,本文中“前”、“后”、“左”、“右”、“上”、“下”均以附图中表示的放置状态为参照。[0092]最后应说明的是:以上实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1