CN112860600A - 一种加速硬件页表遍历的方法及装置 - Google Patents

一种加速硬件页表遍历的方法及装置 Download PDF

Info

Publication number
CN112860600A
CN112860600A CN201911195523.5A CN201911195523A CN112860600A CN 112860600 A CN112860600 A CN 112860600A CN 201911195523 A CN201911195523 A CN 201911195523A CN 112860600 A CN112860600 A CN 112860600A
Authority
CN
China
Prior art keywords
level
cache
base address
kth
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201911195523.5A
Other languages
English (en)
Inventor
张乾龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HiSilicon Technologies Co Ltd
Original Assignee
HiSilicon Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by HiSilicon Technologies Co Ltd filed Critical HiSilicon Technologies Co Ltd
Priority to CN201911195523.5A priority Critical patent/CN112860600A/zh
Priority to PCT/CN2020/132489 priority patent/WO2021104502A1/zh
Publication of CN112860600A publication Critical patent/CN112860600A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures

Abstract

本发明实施例公开了一种加速硬件页表遍历的方法及装置。所述方法包括通过第i级第一缓存的控制单元接收访存请求,所述访存请求包括第K级基址和第K级高位地址;通过所述第i级第一缓存的控制单元,根据所述第K级基址判断所述第i级第一缓存是否存储有所述第K级基址;在判断所述第i级第一缓存存储有所述第K级基址的情况下,通过所述第i级第一缓存的控制单元,向所述第i级第一缓存的计算单元发送所述第K级基址;通过第i级第一缓存的计算单元,根据所述第K级基址和第K级偏移地址确定第(K+1)级基址。通过实施本发明实施例,加速页表遍历过程而提高虚拟地址的转换效率。

Description

一种加速硬件页表遍历的方法及装置
技术领域
本申请涉及计算机存储领域,尤其涉及一种加速硬件页表遍历的方法及装置。
背景技术
在处理器架构中,处理器核中的存储器管理单元(Memory Management Unit,MMU)负责把应用程序使用的虚拟地址(Virtual Address,VA)翻译成物理地址(PhysicalAddress,PA)。在应用分页式管理机制的情况下,从VA到PA的转换需要查询页表。由于部分页表存储于MMU中的旁路转换缓冲(Translation Lookaside Buffer,TLB),一般可以通过TLB辅助MMU完成虚拟地址的转换(例如,如果所需页表基址恰好都存储在TLB中(即命中TLB),那么就能完成VA到PA的转换);否则需要对存储的页表进行硬件页表遍历(HardwarePage Table Walk,HPTW)来获取最终的PA。
目前,在所有商用处理器的绝大部分架构中,在未命中TLB(即TLBmiss)后会触发硬件自动的页表遍历过程,然后对TLB进行重填。但是,目前HPTW是串行完成的,并且访问内存次数跟页表分级数直接相关(例如,页表共分四级则需要进行至少四次数据访问才能完成VA到PA的转换)。具体地,在某一级页表基址命中某一级缓存后,将获取的页表基址返回至核(core)中的访存单元(Load Store Unit,LSU),经过算术逻辑单元(Arithmetic andLogic Unit,ALU)计算得到下一级的页表基址。在上述页表查询过程中,需要把每一次获取的数据返回至处理器核中的LSU再处理,导致页表遍历效率低。
现有技术中,为了加速HPTW一般提供以下两种加速方案。
方案一,在MMU中额外添加cache,用于缓存HPTW过程中需要的中间级别的页表基址,如第三级至第四级页表基址。在发生TLBmiss后查询该cache;如果命中该cache则直接跳转到对应级别的页表(例如,在发生TLBmiss后查询该cache;在该cache中发现命中第三级页表,则取出该页表的基址;然后继续进行HPTW来查询剩余级别的页表)。但是,在处理器核中额外增加cache会增加生产成本;另外,由于额外的cache容量较小,无法保证全部查询的命中,难以有效提高访存效率。
方案二,在每一级cache中增加预取引擎(prefetch engine),把链表结构的数据在每一级cache中进行预取,所以不需要把访存地址取回core内的LSU进行处理。但是,需要在每一级cache中增加TLB结构(TLB结构用于将VA翻译为PA),否则无法进行数据预取。因此,采取方案二会造成开销太大。
因此,如何改善硬件页表遍历的过程,加速页表遍历而提高地址转换效率,是亟待解决的问题。
发明内容
本发明实施例提供了一种加速硬件页表遍历的方法及装置,能够改善硬件页表遍历的过程,加速页表遍历而提高地址转换效率。
第一方面,本发明实施例提供了一种加速页表遍历的装置,包括第i级第一缓存的控制单元和所述第i级第一缓存的计算单元;i=1、2、…、N,N为正整数;其中,
所述第i级第一缓存的控制单元,用于:
接收访存请求,所述访存请求包括第K级基址和第K级高位地址,K为正整数;
根据所述第K级基址判断所述第i级第一缓存是否存储有所述第K级基址;
在判断所述第i级第一缓存存储有所述第K级基址的情况下,向所述第i级第一缓存的计算单元发送所述第K级基址。
所述第i级第一缓存的计算单元,用于:
根据所述第K级基址和第K级偏移地址确定第(K+1)级基址,所述第K级偏移地址为根据所述第K级高位地址确定的。
本发明实施例,通过在第一缓存的每一级缓存中增加计算单元,使得每一级第一缓存获取基址之后,能够直接根据基址和对应的偏移计算得到下一级的基址。具体地,第i级第一缓存的控制单元接收访存请求,在判断第i级第一缓存(即本级缓存)存储有第K级基址的前提下,向本级缓存的计算单元发送访存请求中的第K级基址。本级缓存根据第K级基址和从访存请求包含的高位地址中确定的偏移地址,计算得到了第(K+1)级基址(即下一级基址)。区别于现有技术中任何一级缓存在确定第K级基址后,都需要返回该级基址到处理器核内的访存单元,然后通过处理器核内的算术逻辑单元计算得到下一级基址,再继续下一级基址的查询;本发明实施例中,无论在哪一级第一缓存确定了第K级基址后,都可以通过在本级缓存增加的计算单元,移位计算得到下一级基址,提高了基址的访问效率,实现了对硬件页表遍历过程的加速,从而最终提高了虚拟地址到物理地址的转换效率。
在一种可能的实现方式中,所述第i级第一缓存的控制单元,还用于:在判断所述第i级第一缓存未存储有所述第K级基址且i≠N的的情况下,向第(i+1)级第一缓存的控制单元发送所述访存请求。本发明实施例中,在第i级第一缓存判断自身没有存储第K级基址且存在下一级缓存的情况下,向下一级缓存(即第(i+1)级第一缓存)发送访存请求,补充了前述判断所述第i级第一缓存是否存储有所述第K级基址的另一种结果,使得本发明实施例更加完整,以免发生执行错误或者系统故障等。
在一种可能的实现方式中,所述装置还包括家节点;所述家节点与所述第i级第一缓存耦合;所述第i级第一缓存的控制单元,还用于:在判断所述第i级第一缓存未存储有所述第K级基址的情况下,向所述家节点发送所述访存请求。所述家节点用于接收所述访存请求。本发明实施例中,在增加对家节点的描述后,在判断第i级第一缓存未存储有所述第K级基址的情况下,不仅可以向第(i+1)级第一缓存发送所述访存请求,还可以同时向家节点发送所述访存请求。进一步完善在了第N级第一缓存的处理情况。向家节点发送访存请求,有利于判断全部缓存中基址存储情况。
在一种可能的实现方式中,所述家节点,还用于:在接收所述访存请求后,根据所述第K级基址判断N级第一缓存中每一级第一缓存是否存储有所述第K级基址;在判断目标第一缓存存储有所述第K级基址的情况下,向所述目标第一缓存的控制单元发送所述访存请求。本发明实施例中,家节点在接受到访存请求后,判断每一级第一缓存是否有缓存存储有需要的第K级基址。在判断目标第一缓存(某一级或者某几级缓存)存储有第K级基址后,向该级缓存发送访存请求。可以避免在某缓存存储有基址但仍然去内存中访问的情况,例如,三级缓存判断自身没有第三级页表的基址,而二级缓存存储有第三级页表基址。由于三级缓存不会返回至二级缓存进行访问,那么家节点就可以负责将请求返回至二级缓存。
在一种可能的实现方式中,所述装置还包括:与所述家节点耦合的内存控制器、与所述内存控制器耦合的内存;所述家节点包括缓冲区buffer;所述家节点,还用于:在判断所述每一级第一缓存均未存储有所述第K级基址的情况下,向所述内存控制器发送所述访存请求。所述内存控制器,用于:根据所述第K级基址,在所述内存中确定所述第K级基址;向所述家节点发送所述第K级基址。所述内存,用于存储所述第K级基址。所述buffer,用于根据所述第K级基址和所述第K级偏移地址,确定所述第(K+1)级基址。本发明实施例中,在家节点发现所有的缓存都没有存储所需基址的情况下,会向内存控制器发送该访存请求,指示处理器芯片内的内存控制器从内存中获取所需的基址。补充了前述实施例可能发生的情况,避免发生执行错误,保障在缓存均未存储所需基址的情况下还可以继续页表遍历的过程。
在一种可能的实现方式中,所述装置还包括与所述家节点耦合的第二缓存,所述第二缓存包括所述第二缓存的控制单元和所述第二缓存的计算单元;所述家节点,还用于:在接收所述访存请求后,判断所述第二缓存是否存储有所述第K级基址;在判断所述第二缓存存储有所述第K级基址的情况下,向所述第二缓存的控制单元发送所述访存请求。本发明实施例中,补充了处理器芯片有多个处理器内核(包含了第二缓存)的情况。当一个处理器内核的缓存没有存储所需基址时,可以通过家节点检查其他内核的缓存中是否有需要的基址,以继续页表的查询。
在一种可能的实现方式中,所述装置还包括与所述家节点耦合的内存控制器、与所述内存控制器耦合的内存;所述家节点包括缓冲区buffer;所述家节点,还用于:在判断所述每一级第一缓存和所述第二缓存,均未存储有所述第K级基址的情况下,向所述内存控制器发送所述访存请求。所述内存控制器,用于:根据所述第K级基址,在所述内存中确定所述第K级基址;向所述家节点发送所述第K级基址。所述内存用于存储所述第K级基址。所述buffer,用于根据所述第K级基址和所述第K级偏移地址,确定所述第(K+1)级基址。本发明实施例中,描述了在处理器芯片有多个处理器内核的情况下,通过家节点检测所有缓存均没有存储所需的基址时向内存控制器发送相应指令,以便于及时从内存中获取所需的基址,以保障无法命中缓存时还能够继续查询页表基址。
在一种可能的实现方式中,所述装置还包括与第1级第一缓存耦合的存储器管理单元,所述存储器管理单元包括第三缓存;所述第三缓存用于存储K级基址,K=1、2、…、M,M为大于1的整数;所述存储器管理单元,用于:在向所述第1级第一缓存发送访存请求之前,判断所述第三缓存是否存储有所述第1级基址;在判断所述第三缓存存储有所述第1级基址的情况下,获取所述第1级基址;在判断所述第三缓存未存储有所述第1级基址的情况下,向所述第1级第一缓存发送所述访存请求。本发明实施例中,在存储器管理单元中新增加了第三缓存(即新增cache),该新增的cache可以存储部分页表基址。当发生TLB miss后,可以在新增的cache中查找是否有完成VA到PA转换所需的全部页表基址。如果命中新增的cache的话,就可以直接获得全部的页表基址,从而不必执行页表遍历,快速得到需要的物理地址。
在一种可能的实现方式中,所述访存请求还包括所述第K级基址的基址标识,所述第K级基址的基址标识用于指示所述第K级基址的级别。本发明实施例中补充了访存请求的形式。在访存请求中可以加入特定的域或者数据段,用于缓存的控制单元或家节点识别该访存请求是对哪一级基址的查询和访问。
在一种可能的实现方式中,所述第i级第一缓存的控制单元,还用于:在确定第(M+1)级基址的情况下,向所述存储器管理单元发送所述第(M+1)级基址。所述存储器管理单元,还用于接收所述第(M+1)级基址。本发明实施例,补充了在确定最后一级基址(即第(M+1)级基址)后缓存可能的处理情况。例如,某一级缓存确定了最后一级基址,可以将该基址发送给存储器管理单元。进一步地,存储器管理单元在接到最后的页基址(即最后一级基址),加上页偏移得到物理地址。
第二方面,本发明实施例提供了一种加速页表遍历的方法,包括:通过第i级第一缓存的控制单元接收访存请求,所述访存请求包括第K级基址和第K级高位地址,K为正整数,i=1、2、...、N;通过所述第i级第一缓存的控制单元,根据所述第K级基址判断所述第i级第一缓存是否存储有所述第K级基址;在判断所述第i级第一缓存存储有所述第K级基址的情况下,通过所述第i级第一缓存的控制单元,向所述第i级第一缓存的计算单元发送所述第K级基址;通过第i级第一缓存的计算单元,根据所述第K级基址和第K级偏移地址确定第(K+1)级基址,所述第K级偏移地址为根据所述第K级高位地址确定的。
在一种可能的实现方式中,所述方法还包括:在判断所述第i级第一缓存未存储有所述第K级基址且i≠N的情况下,通过所述第i级第一缓存的控制单元,向第(i+1)级第一缓存的控制单元发送所述访存请求。
在一种可能的实现方式中,所述方法还包括:在判断所述第i级第一缓存未存储有所述第K级基址的情况下,通过所述第i级第一缓存的控制单元向家节点发送所述访存请求。
在一种可能的实现方式中,所述方法还包括:在接收所述访存请求后,通过所述家节点,根据所述第K级基址判断N级第一缓存中每一级第一缓存是否存储有所述第K级基址;在判断目标第一缓存存储有所述第K级基址的情况下,向所述目标第一缓存的控制单元发送所述访存请求。
在一种可能的实现方式中,所述方法还包括:在判断所述每一级第一缓存均未存储有所述第K级基址的情况下,通过所述家节点向内存控制器发送所述访存请求;通过所述内存控制器,根据所述第K级基址在内存中确定所述第K级基址;通过所述内存控制器向所述家节点发送所述第K级基址;根据所述第K级基址和所述第K级偏移地址,通过所述家节点的缓冲区buffer确定所述第(K+1)级基址。
在一种可能的实现方式中,所述方法还包括:在接收所述访存请求后,通过所述家节点判断第二缓存是否存储有所述第K级基址;在判断所述第二缓存存储有所述第K级基址的情况下,通过所述家节点向所述第二缓存的控制单元发送所述访存请求。
在一种可能的实现方式中,所述方法还包括:在判断所述每一级第一缓存和所述第二缓存均未存储有所述第K级基址的情况下,通过所述家节点向内存控制器发送所述访存请求;
根据所述第K级基址,通过所述内存控制器在内存中确定所述第K级基址;通过所述内存控制器向所述家节点发送所述第K级基址;根据所述第K级基址和所述第K级偏移地址,通过所述家节点的缓冲区buffer确定所述第(K+1)级基址。
在一种可能的实现方式中,所述方法还包括:在向第1级第一缓存发送访存请求之前,通过存储器管理单元判断第三缓存是否存储有所述第1级基址;在判断所述第三缓存存储有所述第1级基址的情况下,通过所述存储器管理单元获取所述第1级基址;在判断所述第三缓存未存储有所述第1级基址的情况下,通过所述存储器管理单元向所述第1级第一缓存发送所述访存请求。
在一种可能的实现方式中,所述访存请求还包括所述第K级基址的基址标识,所述第K级基址的基址标识用于指示所述第K级基址的级别。
在一种可能的实现方式中,在家节点接收所述访存请求后,可以先判断第一缓存中是否存储有第K级基址,再判断第二缓存中是否存储有第K级基址。可选地,在家节点接收所述访存请求后,同时判断第一缓存中以及第二缓存中是否存储有第K级基址。进一步可选地,在任一缓存中存储有所需的第K级基址,家节点都向其发送相应的访存请求;家节点可以接受多个缓存反馈的结果,在众多结果以最高级基址为最终的遍历结果,再继续遍历过程。或者,在多个缓存中已完成遍历的过程,可以直接通过完成遍历最后一步的缓存(即获得最后基址的缓存)向存储器管理单元反馈最后的基址。
第三方面,本发明实施例提供了一种加速页表遍历的装置,包括:N级第一缓存;所述N级第一缓存中的每一级第一缓存包括计算单元和控制单元;所述N级第一缓存存储了M级基址中一级或多级基址;N为大于0的整数,M为大于1的整数;其中,
第i级第一缓存的控制单元,用于:接收第K级访存请求,所述第K级访存请求包括第K级基址和第K级高位地址;0<K≤M,K为整数;i=1、2、...、N;根据所述第K级基址判断所述第i级第一缓存是否存储有所述第K级基址;在判断所述第i级第一缓存存储有所述第K级基址的情况下,向所述第i级第一缓存的计算单元发送所述第K级基址。
第i级第一缓存的计算单元,用于:根据所述第K级基址和第K级偏移地址确定第(K+1)级基址;所述第K级偏移地址为根据所述第K级高位地址确定的。
在一种可能的实现方式中,所述装置还包括家节点;所述家节点与第N级第一缓存耦合;所述第N级第一缓存的控制单元,还用于:在判断所述第N级第一缓存未存储有所述第K级基址的情况下,向所述家节点发送所述第K级访存请求。所述家节点用于接收所述第K级访存请求。
在一种可能的实现方式中,所述家节点,还用于:在接收所述第K级访存请求后,根据所述第K级基址判断所述每一级第一缓存是否存储有所述第K级基址;在判断第p级第一缓存存储有所述第K级基址的情况下,向所述第p级第一缓存的控制单元发送所述第K级访存请求,p=1、2、...、N且p≠i。
在一种可能的实现方式中,所述方法还包括:在向第1级第一缓存发送第1级访存请求之前,通过存储器管理单元判断第三缓存是否存储有所述第1级基址;在判断所述第三缓存存储有所述第1级基址的情况下,通过所述存储器管理单元获取所述第1级基址;在判断所述第三缓存未存储有所述第1级基址的情况下,通过所述存储器管理单元向所述第1级第一缓存发送所述第1级访存请求。
第四方面,本发明实施例提供一种终端,该终端包括处理器,处理器被配置为支持该终端执行第二方面提供的一种加速硬件页表遍历的方法中相应的功能。该终端还可以包括存储器,存储器用于与处理器耦合,其保存终端必要的程序指令和数据。该终端还可以包括通信接口,用于该终端与其它设备或通信网络通信。
第五方面,本发明实施例提供了一种芯片系统,可包括:如上述第一方面所述的加速页表遍历装置、以及耦合于所述加速页表遍历装置的辅助电路。
第六方面,本发明实施例提供了一种电子设备,可包括:如上述第一方面所述的加速页表遍历装置,以及耦合于所述加速页表遍历装置外部的分立器件。
第七方面,本发明实施例提供了一种芯片系统,所述芯片系统可以执行如上述第二方面中涉及的任意方法,使得相关功能得以实现。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1是本发明实施例提供的一种硬件页表遍历流程示意图;
图2是本发明实施例提供的一种系统架构示意图;
图3是本发明实施例提供的一种应用架构示意图;
图4是本发明实施例提供的另一种应用架构示意图;
图5是本发明实施例提供的一种加速硬件页表遍历装置的示意图;
图6是本发明实施例提供的一种具体的加速硬件页表遍历装置的示意图;
图7是本发明实施例提供的一种缓存内部结构示意图;
图8是本发明实施例提供的一种页表查询过程示意图;
图9是本发明实施例提供的一种对应图8的部分硬件的交互示意图;
图10是本发明实施例提供的一种访存请求的命令格式示意图;
图11是本发明实施例提供的另一种页表查询过程示意图;
图12是本发明实施例提供的一种对应图11的部分硬件的交互示意图;
图13是本发明实施例提供的又一种页表查询过程示意图;
图14是本发明实施例提供的一种对应图13的部分硬件的交互示意图;
图15是本发明实施例提供的再一种页表查询过程示意图;
图16是本发明实施例提供的一种对应图15的部分硬件的交互示意图;
图17是本发明实施例提供的一种加速硬件页表遍历装置的示意图;
图18是本发明实施例提供的另一种具体的加速硬件页表遍历装置的示意图;
图19是本发明实施例提供的一种多核情况下的页表查询过程示意图;
图20是本发明实施例提供的一种对应图19的部分硬件的交互示意图;
图21是本发明实施例提供的一种多核情况下加速硬件页表遍历装置的示意图;
图22是本发明实施例提供的一种加速硬件页表遍历方法的示意图;
图23是本发明实施例提供的另一种加速硬件页表遍历方法的示意图;
图24是本发明实施例提供的一种芯片的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例进行描述。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序;并且术语“第一”、“第二”、“第三”和“第四”等描述的对象也可以是相同的对象,或者彼此存在包含或者其他关系。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
在本说明书中使用的术语“部件”、“模块”、“系统”等用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件、或执行中的软件。例如,部件可以是但不限于,在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。通过图示,在计算设备上运行的应用和计算设备都可以是部件。一个或多个部件可驻留在进程和/或执行线程中,部件可位于一个计算机上和/或分布在2个或更多个计算机之间。此外,这些部件可从在上面存储有各种数据结构的各种计算机可读介质执行。部件可例如根据具有一个或多个数据分组(例如来自与本地系统、分布式系统和/或网络间的另一部件交互的二个部件的数据,例如通过信号与其它系统交互的互联网)的信号通过本地和/或远程进程来通信。
首先,对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。
(1)物理地址(Physical Address),也叫实地址(real address)、二进制地址(binary address),它是在地址总线上,以电子形式存在的,使得数据总线可以访问主存的某个特定存储单元的内存地址。地址从0开始编号,顺序地每次加1,因此存储器的物理地址空间是呈线性增长的。
(2)在分页式管理机制(即分页机制)中,虚拟地址经过变换以产生物理地址。
(3)内存(Memory),用于暂时存放处理器中的运算数据,以及与硬盘等外部存储器交换的数据。在计算机运行过程中,处理器会把需要运算的数据调到内存中进行运算,当运算完成后再将结果传送出来。动态随机存取存储器(Dynamic Random Access Memory,DRAM)的性价比很高且扩展性不错,是一般内存的最主要部分。
(4)中央处理器(Central Processing Unit,CPU),用于解释计算机指令以及处理计算机中的数据。在计算机中负责读取指令,对指令译码并执行指令。中央处理器主要包括两个部分,即控制器、运算器,其中还包括高速缓冲存储器及实现它们之间联系的数据、控制的总线。
(5)算术逻辑单元(Arithmetic&logical Unit,ALU)是处理器的核心组成部分,主要执行各种算术和逻辑运算操作,如加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、比较和传送等操作。
(6)存储器管理单元(Memory Management Unit,MMU),有时称作分页存储器管理单元(paged memory management unit,PMMU),或称存储器管理单元,是一种负责处理中央处理器(CPU)的内存访问请求的计算机硬件。它的功能包括虚拟地址到物理地址的转换(即虚拟内存管理)、内存保护、中央处理器高速缓存的控制;在较为简单的计算机体系结构中,负责总线的仲裁以及存储体切换。
(7)高速缓冲存储器(cache),简称缓存,位于CPU和主存储器DRAM之间,是一种容量较小但速度很高的存储器,通常由静态存储器(Static Random Access Memory,SRAM)组成。其中,只要保持SRAM通电,其储存的数据就可以恒常保持。SRAM一般可分为以下五大部分:存储单元阵列、行/列地址译码器、灵敏放大器、控制电路和驱动电路。具体地,cache可以保存CPU刚用过或循环使用的一部分数据,如果CPU需要再次使用该部分数据时可从cache中直接调用,加快数据取用的速度,减少了CPU的等待时间。cache一般分为一级缓存(level 1cache,L1 cache)、二级缓存(level 2cache,L2 cache)和三级缓存(level3cache,L3 cache)等等;其中,L1cache主要集成在CPU内部,L2cache集成在主板上或CPU内部,L3 cache集成在主板上或者CPU内部,在CPU内部时L3 cache为多个处理器核共享。
(8)缓冲区(buffer),是预留的一定容量的存储空间,用来缓冲输入或输出的数据。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。
(9)处理器核(core),是处理器的核心,用来完成所有的计算、接受/存储命令、处理数据等。各种处理器的核心都具有固定的逻辑结构,涉及一级缓存、二级缓存、执行单元、指令级单元和总线接口等逻辑单元的布局。
(10)转译后备缓冲器(Translation Lookaside Buffer,TLB),也被翻译为页表缓存、转址旁路缓存,或称旁路转换缓冲,为CPU的一种缓存,用于改进虚拟地址到物理地址的转译速度。当前所有的桌面型及服务器型处理器(如x86)皆使用TLB。TLB具有固定数目的空间槽,用于存放将虚拟地址映射至物理地址的标签页表条目。其搜索关键字为虚拟内存地址,其搜索结果为物理地址。如果请求的虚拟地址在TLB中存在,将给出一个非常快速的匹配结果,之后就可以使用得到的物理地址访问存储器。如果请求的虚拟地址不在TLB中,就会使用标签页表进行虚实地址转换,而标签页表的访问速度比TLB慢很多。有些系统允许标签页表被交换到次级存储器,那么虚实地址转换可能要花非常长的时间。
(11)页表是一种特殊的数据结构,放在系统空间的页表区,存放逻辑页与物理页帧的对应关系。用固定大小的页(Page)来描述逻辑地址空间,用相同大小的页框(Frame)来描述物理内存空间,由操作系统实现从逻辑页到物理页框的页面映射,同时负责对所有页的管理和进程运行的控制。
(12)内存控制器(Memory Controller),是一个用于管理与规划从内存到CPU间传输速度的总线电路控制器;它可以是一个单独的芯片或集成到相关的大型芯片里。按照一定的时序规则对内存访问进行必要控制,包括地址信号、数据信号以及各种命令信号的控制,使CPU能够根据需求使用内存的存储资源。
(13)排序点(Point of Serialization,PoS),或家节点(Home Node/OrderingPoint),也称作串行点,是用于维护多核处理器中多核之间一致性的关键点。在PoS处,可以监测所有处理器核中的cache的数据是否被修改过以及其状态,以保证cache之间的数据一致性。因此,在本申请中可以通过PoS处理HPTW可以确保不会取到旧的页表数据,保证数据的正确性。
(14)CPU流水线技术,是一种将指令分解为多步,并让不同指令的各步操作重叠,从而实现几条指令并行处理,以加速程序运行过程的技术。指令的每步有各自独立的电路来处理,每完成一步,就进到下一步,而前一步则处理后续指令。处理器的流水线结构是处理器微架构最基本的一个要素,承载并决定处理器其他微架构的细节。
(15)总线,是处理器多核连接的关键,用于核与高速缓存、内存等之间传送信息。
(16)扩展页表(Extended Page Table,EPT),由四级页映射表(page map level4table,PML4)、页目录指针表(page-directory-pointer table,PDPT)、页目录表(page-directory,PD)和页表(page table,PT)共四级页表组成。
(17)硬件页表遍历(Hardware Page Table Walk,HPTW),是硬件模块查询页表的过程。程序访问内存时所使用的虚拟地址,需要转换成物理地址才可以访问内存;在发生TLBmiss后,可以由硬件完成对页表的遍历,查找缺失的页表。例如,48位的虚拟地址经过完整的遍历最终确定对应的物理地址。请参见图1,图1是本发明实施例提供的一种硬件页表遍历流程示意图。如图1所示,页面基址寄存器中存储的是页表的物理基地址,当发生TLBmiss后,处理器核中的MMU部分提供HPTW功能,以CR3中的物理地址为第一级页表的基地址。获取该数据后再把VA中的PML4作为地址偏移[47:39]查询并获取第二级页表的基地址;拼接VA的[38:30]后继续查询,一直到获取最后物理地址结束。HPTW过程需要查询L2cache,如果页表在L2 cache中命中,上述过程可以被一定程度上加速(不用每次都要去内存取数据),否则上述HPTW过程需要进行四次访存操作才能完成。
(18)片上总线协议,提供一种特殊的机制,可将处理器集成在其它知识产权核(Intellectual Property,IP)和外设中。
(19)基地址,或物理基地址,简称基址,可以理解为数据(如页表或页)在存储器中存储的基本地址,是相对偏移量(偏移地址)的计算基准。例如,在多级页表的情况下,确定某一级页表的基址后,根据对应的偏移地址可以确定该级页表中某一个页表项为下一级页表的基址。
下面先对本发明实施例基于的一种系统架构进行描述,请参见图2,图2是本发明实施例提供的一种系统架构示意图;如图2所示,该系统架构包括了处理器芯片10、处理器内核11、总线12、内存控制器14和内存20。其中,在处理器芯片10内部包括处理器内核11、总线12和内存控制器14。处理器内核11可以包括处理器内核1、处理器内核2、….和处理器内核Q(Q为大于0的整数)。多个处理器内核以及内存控制器14,均与总线12连接。处理器芯片10通过处理器内核11处理数据(例如,在本发明实施例中,处理器内核负责将虚拟地址转换成物理地址,具体地,在只有一个处理器内核的情况下,该核可以通过与片内的其他器件完成硬件页表遍历的过程;在多个处理器内核且某个核的缓存未存储全部基址的情况下,多个核之间会进行数据交互,配合其他片内的器件完成硬件页表遍历的过程);处理器芯片10通过内存控制器14与内存20进行交互,例如读取数据或者写入数据等。总线是多个核以及其他部件(如内存控制器等)之间进行数据交互的一种通道。
基于前述的系统架构,以某一个处理器内核为例,接下来对本发明实施例所基于的其中一种应用架构进行描述。请参见图3,图3是本发明实施例提供的一种应用架构示意图;如图3所示,本发明实施例可以应用于处理器芯片10;处理器芯片10与内存20连接。处理器芯片10包括处理器内核11、总线12、家节点13和内存控制器14。本发明实施例对模块、单元或者器件之间的具体连接方式不作限定。其中,
内存20用于存储M级物理基地址(即M级基址)中每一级基址,M为大于1的整数。例如,在四级页表的情况下,内存存储第1级页表至第4级页表的基址,共4级基址。
内存控制器14用于接收家节点发送的第K级访存请求;根据所述第K级访存请求中的第K级基址的相关信息,从内存中获取对应的第K级基址,并向家节点返回第K级基址;K为大于0的整数。
家节点13用于:
接收请求(request),请求的类型可以包括HPTW请求以及其他类型的请求。
判断接收的请求(request)是否为访存请求(即HPTW请求)。
在家节点判断该请求为访存请求的前提下,识别该访存请求查询的目标页表基址的级别(例如,第K级访存请求,查询的是第K级的页表基址);可选地,通过家节点buffer(包含识别模块),识别处目标页表基址的级别。
判断N级第一缓存中哪一级缓存存储了该目标页表的基址。
在家节点判断N级第一缓存中哪一级缓存存储了该目标页表的基址后,向存储了该目标页表基址的第一缓存发送该访存请求。
在判断所述N级第一缓存每一级都没有存储所述第K级基址的情况下,向所述内存控制器发送所述第K级访存请求。可选地,家节点根据获得第K级基址计算第(K+1)级基址,进一步根据第(K+1)级基址进行查询。例如,家节点从内存中获取第3级基址,计算得到第4级基址,可以立刻在家节点PoS中继续寻找第4级基址。
处理器内核11中可以包括处理器核流水线110、运算器111、访存单元112、存储器管理单元113和第一缓存114。其中,第一缓存114可以包括N级第一缓存,如第1级第一缓存、第2级第一缓存、第3级第一缓存、…、第i级第一缓存、…和第N级第一缓存等等;i=1、2、...、N,即i的取值可以是1、2、3、…或者N,N为大于0的整数;本发明实施例对第一缓存包含的多级缓存数量不作限定。
处理器核流水线110用于并行处理运算器111、访存单元112等单元或者器件之间的指令。可以理解的是,运算器或执行单元,可以包括算术逻辑单元ALU。
访存单元112用于向存储器管理单元MMU发送应用程序提供的虚拟地址,接收MMU反馈的该虚拟地址对应的物理地址。
可选地,在不启用MMU的情况下,访存单元112可以与第一缓存交互。访存单元112可以获取第一缓存114返回的页基址,再向ALU发送页基址,由ALU进行计算处理。例如,将页基址反馈给ALU,ALU将页基址加上页偏移得到最终需要的物理地址。
存储器管理单元113用于向第1级第一缓存发送第1级访存请求,例如,在发生TLBmiss后,确定TLB缺失页表基址(在四级页表的情况下,TLB存储1-4级页表的基址或者没有存储1-4页表的基址,不存在只存储部分级别页表基址的状况)后,那么发送第1级访存请求(包括第一级页表基址和虚拟地址中的高位地址);接收所述第(M+1)级基址,即最后页表中的某一页的基址。可选地,存储器管理单元113可以包括旁路转换缓冲1130。可以理解的是,存储器管理单元113为存储单元的一部分。
第一缓存114用于存储M级页表基址中一级或者多级页表的基址。
可选地,处理器内核11可以是图3所示的一个内核,也可以包括多个内核。例如,请参见图4,图4是本发明实施例提供的另一种应用架构示意图。如图4所示,处理器内核11包括多个内核,如处理器内核1、处理器内核2、…、处理器内核Q(Q为大于1的整数)。其中,家节点13可以包括多个家节点,例如,在每个内核与总线的连接处,可以设置对应的家节点。PoS和第N级第一缓存(如L3 cache为核外的多核共享的缓存)是逻辑和功能上独立的;PoS在逻辑上可以位于处理器内部的任何位置。在处理器设计中可以把两者分开设计(即分别位于处理器中不同的物理位置);或者,为了加速两者交互,在物理结构上将两者放在一处或者紧挨。本发明实施例对PoS和L3 cache的组织结构不作限定。
具体地,在图4所示的架构中,家节点用于:
在判断所述第二缓存和所述第N级第一缓存中任一缓存存储有所述第K级基址的情况下,家节点向对应的缓存发送第K级访存请求;
在判断所述第二缓存和所述第N级第一缓存均未存储有所述第K级基址的情况下,向所述内存控制器发送第K级访存请求。
需要说明的是,家节点的其他内容(如接收访存请求、识别基址级别等等)请参见前述图1的相关描述,在此不再赘述。
处理器内核11中还可以包括第二缓存115;所述第二缓存包括(N-1)级第一缓存,如第1级第一缓存、第2级第一缓存、第3级第一缓存、…、第i级第一缓存、…和第(N-1)级第一缓存等等。可以理解的是,在多核的情况下,第一缓存包含了第N级第一缓存和所有核的第二缓存115;在单核的情况下,第一缓存包含了所有的N级第一缓存。可以理解的是,在多核的情况下,针对某一个核而言,第一缓存可以是该核内的缓存,以及与其他核共享的缓存(例如,图3所示的第N级第一缓存;可选地,共享的缓存可以为一个或者多个)的总称;第二缓存是其他核内的缓存总称。
需要说明的是,图4所示的处理器核流水线110、运算器111、访存单元112、存储器管理单元113等等与图3中一致的单元或者器件,请参见图3的相关描述以及前述的部分用语解释,在此不再赘述。
需要说明的是,本申请可以具体应用于上述所有缓存和家节点中,以加速HPTW过程。
结合图3所述应用架构,下面对本发明实施例涉及的一种加速硬件页表遍历装置进行描述。请参见图5,图5是本发明实施例提供的一种加速硬件页表遍历装置的示意图;如图5所示,主要对图1中涉及存管理单元113、第一缓存114、家节点13、内存控制器14和内存20之间的交互情况进行描述。存储器管理单元113与二级缓存1141连接;三级缓存1142与二级缓存1141连接,还通过总线12与内存控制器14连接。其中,三级缓存1142连接总线的节点可以设置有家节点13。处理器芯片10中的内存控制器14与内存20连接。本发明实施例涉及的部件或者单元的相关内容,可以请参见前述实施例的描述,在此不再赘述。
在N=2,M=4的情况下,这2级第一缓存中存储了4级基址中一级或多级基址,即第一缓存中可能只存储部分基址或者存储全部基址。请参见图6,图6是本发明实施例提供的一种具体的加速硬件页表遍历装置的示意图;如图6所示,处理器芯片包括处理器内核11和三级缓存(L3 cache,即第2级第一缓存),处理器内核11包括二级缓存(L2 cache,即第1级第一缓存)。图中L3 cache为核外的缓存,但本发明实施例对此不作限定,即L3 cache也可以是核内的缓存。需要说明的是,图6只是一种示例性的情况。对于包含了四级缓存、五级缓存、六级缓存等能够存储页表基址的多级缓存的情况,可以参考图6以及相应实施例的描述。
其中,缓存内部结构请参见图7,图7是本发明实施例提供的一种缓存内部结构示意图;如图7所示,第i级第一缓存中包括第i级第一缓存的控制单元和第i级第一缓存的计算单元。
第i级第一缓存的计算单元,用于根据第K级基址和第K级偏移地址,确定第(K+1)级基址;所述第K级偏移地址为根据虚拟地址中的第K级高位地址确定的;K为大于0且小于或等于M的整数,i=1、2、...、N。例如,根据第1级基址和第1级偏移地址(地址偏移或者偏移量),确定第2级基址;假设一共有4级页表,根据第4级基址和第4级偏移地址确定第5级基址(第5级基址就是第4级页表中某一页的物理基地址);所以,基址可以为页表或者页的物理基地址。具体地,例如,在第一级页表基址命中L2 cache的情况下,L2 cache在确定第一级页表基址的后,根据偏移地址确定第一级页表中哪一项是第二级页表基址;假设48位的虚拟地址中[47:39](即第1级高位地址)为000100000,对应的是32,在32属于第一级页表的序号范围内的前提下,cache查看第一级页表第32项,获取里面存放的是第二级页表的物理基地址,即确定第二级页表基址。具体的基址确定以及地址拼接的描述,请参见部分用语解释(19),在此不再赘述。
基于图3所示的架构和相关装置,在N=2,M=4情况下对本发明实施例可能涉及的四种页表查询流程进行描述。
请参见图8和图9,图8是本发明实施例提供的一种页表查询过程示意图;如图8所示,第K级访存请求、第K级基址以及第(K+1)级基址中的K的取值包括1、2、3、…、M。图9是本发明实施例提供的一种对应图8的部分硬件的交互示意图;假设L2 cache命中全部的四级页表基址(即4级基址的每一级都存储在L2 cache中),如图9所示,在前述图6所示的加速硬件页表遍历的装置中,其各个功能模块可以按照以下时序执行相应的操作,具体步骤如下:
步骤1(S1):二级缓存的控制单元71接收第1级访存请求(包括第1级基址和第1级高位地址)。
具体地,从MMU113接收第1级访存请求;从MMU发往二级缓存的访存请求的命令格式,请参见图10,图10是本发明实施例提供的一种访存请求的命令格式示意图;如图10所示,命令格式可以包括高位地址、请求的类型、第i级页表基址和位域。结合前述实施例,在48位虚拟地址和4级页表的例子中,对应的命令格式为{高位地址[47:12]、访存请求(即HPTW请求)、第i级页表基址和位域[1:0]}。以第1级访存请求的命令格式为例,如图9所示,[47:12]为虚拟地址中除了页偏移offset[11:0]该段低位地址以外的高位地址,包括了[47:39](即第1级高位地址)、[38:30](即第2级高位地址)、[29:21](即第3级高位地址)和[20:12](即第4级高位地址)。
可选地,根据“请求的类型”该区域的数据,判断该请求是否为访存请求。
可选地,在判断某请求为HPTW请求后,根据命令格式中的位域判断该HPTW请求是对页表查询的哪一级页表进行的查询。以{[47:12]、访存请求、第1级页表基址、00}为例,位域00用于指示该访存请求对第2级页表基址查询。
可选地,二级缓存的控制单元从MMU接收第1级访存请求;其中,第1级访存请求包含的高位地址可以为[47:12]。
可选地,在MMU触发页表遍历后,该硬件页表遍历的过程从CR3中获取起始页表的基址开始查询,直到查询该级目标页表基址结束。例如,在四级页表的前提下,TLB中只缺失包含第2级页表基址的页表项,那么当遍历过程中查询到第2级页表基址时结束。
步骤2(S2):二级缓存的控制单元71根据第1级基址,判断二级缓存有第1级基址;然后根据第1级高位地址查找到存储的第1级基址。具体地,确定第1级基址的高位,即该地址的tag;判断二级缓存中是否存储该tag,在二级缓存中存储有该tag就可以确定二级缓存中存储有第1级基址。可以理解的是,tag是基址的一部分,可以认为以基址的一部分作为判断有无存储的标识;可选地,将接收的第1级基址和存储的所有基址进行比较,判断二级缓存是否存储有相同的基址。
步骤3(S3):二级缓存的控制单元71向二级缓存的计算单元发送第1级基址和第1级高位地址。具体地,计算单元发送第1级基址和高位地址(如[47:12]);可以理解的是,高位地址包含了第1级高位地址(如[47:39])。可选地,在判断访存请求查询的是页表级别后,可以从高位地址中确定对应级别的高位地址。例如,当前的访存请求查询的是第1级页表基址,那么根据第1级页表基址的tag来判断二级缓存是否命中第1级页表基址以及在命中后查询第1级页表基址。
步骤4(S4):二级缓存的计算单元72在第1级基址上加偏移地址计算得到第2级基址。
具体地,在确定了第1级基址后,在第1级基址上拼接对应的第1级偏移地址,得到第2级基址。在第1级基址基础上,再增加第1级偏移地址确定第2级基址(该计算过程请参见前述实施例的相关描述,在此不再赘述),即在第1级页表中通过第1级偏移地址确定了第1级页表中哪一个页表项为第2级页表的基址。
步骤5(S5):在二级缓存的计算单元72得到第2级基址后,向二级缓存的控制单元71发送第2级基址。
步骤6(S6):二级缓存的控制单元71根据第2级高位地址(第2级高位地址包含在高位地址中)判断二级缓存有第2级基址;然后根据第2级基址查找到存储的第2级基址。
具体地,请参见前述步骤2的描述,在此不再赘述。
步骤7(S7):二级缓存的控制单元71向二级缓存的计算单元发送第2级基址和第2级高位地址。
具体地,请参见前述步骤3的描述,在此不再赘述。
……
步骤(L-1):二级缓存的计算单元72在第4级基址上加偏移地址计算得到第5级基址(即第四级页表中的页基址)。
具体地,当获得第4级基址后,根据第4级偏移地址确定第4级页表中的页表项,页就确定了所需物理地址对应的页基址。
步骤L(SL,以下均以步骤L/SL,表示最后的步骤):二级缓存的计算单元72向二级缓存的控制单元71反馈第5级基址。
可选地,二级缓存的控制单元71可以向MMU113反馈该页基址。进一步可选地,在获取第5级基址之后,MMU可以根据页基址和页偏移完成VA到PA的转换。
本发明实施例,通过在第一缓存的每一级缓存中增加计算单元,使得每一级第一缓存获取基址之后,能够直接根据基址和对应的偏移计算得到下一级的基址。具体地,第i级第一缓存的控制单元接收第K级访存请求,在判断第i级第一缓存(即本级缓存)存储有第K级基址的前提下,向本级缓存的计算单元发送第K级访存请求中的第K级基址。本级缓存根据第K级基址和从第K级访存请求包含的高位地址中确定的偏移地址,计算得到了第(K+1)级基址(即下一级基址)。区别于现有技术中任何一级缓存在确定第K级基址后,都需要返回该级基址到处理器核内的访存单元,然后通过处理器核内的算术逻辑单元计算得到下一级基址,再继续下一级基址的查询;本发明实施例中,无论在哪一级第一缓存确定了第K级基址后,都可以通过在本级缓存增加的计算单元,移位计算得到下一级基址,提高了基址的访问效率,实现了对硬件页表遍历过程的加速,从而最终提高了虚拟地址到物理地址的转换效率。
需要说明的是,图示的S1、S2、S3等标识对应步骤1、步骤2、步骤3等步骤,以下的实施例也采用相同的标识,后续不再说明。可以理解的是,本申请中图示标识对应部分步骤,是示例性的描述。
请参见图11和图12,图11是本发明实施例提供的另一种页表查询过程示意图;如图11所示,访存请求可以为第K级访存请求、基址可以为第K级基址;其中,K的取值包括1、2、3、…、M。图12是本发明实施例提供的一种对应图11的部分硬件的交互示意图;假设L2cache命中第1级基址(即第1级页表基址),L3 cache命中第2-4级基址;如图12所示,在前述图6所示的加速硬件页表遍历的装置中,其各个功能模块可以按照以下时序执行相应的操作,具体步骤如下:
步骤1(S1):二级缓存的控制单元71接收第1级访存请求。
步骤2(S2):二级缓存的控制单元71根据第1级基址,判断二级缓存有第1级基址;然后根据第1级基址查找到存储的第1级基址。
步骤3(S3):二级缓存的控制单元71向二级缓存的计算单元发送第1级基址和第1级高位地址。
步骤4(S4):二级缓存的计算单元72在第1级基址上加偏移地址计算得到第2级基址。
步骤5(S5):在二级缓存的计算单元72得到第2级基址后,向二级缓存的控制单元71发送第2级基址。
步骤6(S6):二级缓存的控制单元71根据第2级基址判断二级缓没有第2级基址;然后向三级缓存的控制单元81发送第2级访存请求。
具体地,在判断二级缓存(第2级第一缓存)未存储有所述第2级基址且i≠N的情况下,向三级缓存(即第3级第一缓存)发送所述第2级访存请求。在i=N的情况下,例如,在判断三级缓存未存储有第2级基址后,可以由三级缓存向家节点发送第2级访存请求。
可选地,二级缓存的控制单元71在判断二级缓没有第2级基址后,还可以同时向家节点发送第2级访存请求。可以理解的是,在本发明实施例中,家节点和三级缓存的控制单元81在接收到第2级访存请求后,执行的操作基本一致,所以在图中只描述三级缓存与二级缓存的交互关系。
步骤7(S7):三级缓存的控制单元81接收第2级访存请求,所述第2级访存请求包括第2级基址和第2级高位地址(也包含在高位地址中)。
步骤8(S8):三级缓存的控制单元81根据第2级基址,判断三级缓存有第2级基址;然后根据第2级基址查找到存储的第2级基址。
步骤9(S9):三级缓存的控制单元81向三级缓存的计算单元发送第2级基址和第2级高位地址。
步骤10(S10):三级缓存的计算单元82在第2级基址上加对应的偏移地址,计算得到第3级基址。
……
步骤L(SL):三级缓存的计算单元82向三级缓存的控制单元81反馈第5级基址。
需要说明的是,本发明实施例中各个步骤与前述实施例相似的内容不再赘述,请参见前述实施例对应步骤的描述。
请参见图13和图14,图13是本发明实施例提供的又一种页表查询过程示意图;如图13所示,访存请求可以为第K级访存请求、基址可以为第K级基址;其中,K的取值包括1、2、3、…、M。图14是本发明实施例提供的一种对应图13的部分硬件的交互示意图;假设L2cache命中第1级基址、第3级基址和第4级基址,L3 cache命中第2级基址;如图14所示,在前述图6所示的加速硬件页表遍历的装置中,其各个功能模块可以按照以下时序执行相应的操作,具体步骤如下:
步骤1(S1):二级缓存的控制单元71接收第1级访存请求。
步骤2(S2):二级缓存的控制单元71根据第1级基址,判断二级缓存有第1级基址;然后根据第1级基址查找到存储的第1级基址。
步骤3(S3):二级缓存的控制单元71向二级缓存的计算单元发送第1级基址和第1级高位地址。
步骤4(S4):二级缓存的计算单元72在第1级基址上加偏移地址计算得到第2级基址。
步骤5(S5):在二级缓存的计算单元72得到第2级基址后,向二级缓存的控制单元71发送第2级基址。
步骤6(S6):二级缓存的控制单元71根据第2级基址判断二级缓存没有第2级基址;然后向三级缓存的控制单元81发送第2级访存请求。
可选地,二级缓存的控制单元71在判断二级缓没有第2级基址后,还可以同时向家节点发送第2级访存请求。可以理解的是,在本发明实施例中,家节点和三级缓存的控制单元81在接收到第2级访存请求后,执行的操作基本一致,所以在图中只描述三级缓存与二级缓存的交互关系。
步骤7(S7):三级缓存的控制单元81接收第2级访存请求,所述第2级访存请求包括第2级基址和第2级高位地址(也包含在高位地址中)。
步骤8(S8):三级缓存的控制单元81根据第2级基址,判断三级缓存有第2级基址;然后根据第2级基址查找到存储的第2级基址。
步骤9(S9):三级缓存的控制单元81向三级缓存的计算单元发送第2级基址和第2级高位地址。
步骤10(S10):三级缓存的计算单元82在第2级基址上加对应的偏移地址,计算得到第3级基址。
步骤11(S11):在三级缓存单元82得到第3级基址后,向三级缓存的控制单元81发送第3级基址。
步骤12(S12):三级缓存的控制单元81根据第3级基址判断三级缓存没有第3级基址;然后向家节点13发送第3级访存请求。
具体地,从三级缓存的控制单元81向家节点PoS13发送访存请求,相比现有技术中的请求新增了一条命令。从缓存出来的请求,需要发送到PoS进行统一处理。为了实现本发明实施例,需要在请求命令中添加新的命令。在AMBA CHI协议命令编码中,Opcode域是命令格式,0x3B-0x3F可以为保留命令(即reserve命令),本发明实施例可以通过使用0x3B命令实现HPTW请求。可选地,在Request flit中额外添加Addr[47:12]域(用于识别原虚拟地址中的高位地址)和Level[1:0]域(指示PoS当前正在处理的是哪一级页表)。可以理解的是,在现有技术中增加了新的命令后,原来的命令长度增加了。例如,原命令长度为137,增加后命令长度是137(原命令长度)+36(即原虚拟地址中的高位地址的长度)+2(即Level[1:0]域的长度)=175。
步骤13(S13):家节点13接收第3级访存请求。
步骤14(S14):在家节点13接收第3级访存请求后,根据第3级基址判断每一级第一缓存是否存储有第3级基址。在判断二级缓存存储有第3级基址的情况下,向二级缓存发送第3级访存请求。
具体地,根据第3级基址判断所有的缓存中哪一个或者哪些缓存存储有第3级基址。其中,PoS的结构中有2列数据,第一列存储缓存行(cacheline)的Tag(即物理地址),第二列存储是cacheline在哪一级缓存的哪个缓存(如二级缓存)中。例如,第二列存储的是缓存行存储在哪一个二级缓存中,那么0001可以代表在第一个L2 cache中,1111可以代表四个L2cache都有该数据。
可选地,家节点还包括缓冲区buffer。例如,新增四个entry,四个entry与家节点的结构相同,但可以是专门用于HPTW的(即只有HPTW请求才进入上述四个entry进行处理,例如,第一级页表进入第一个entry,或者说第一个entry的两列数据只存储第1级页表的相关信息)。在家节点13接收第3级访存请求后,家节点中的buffer根据第3级基址的tag判断哪一级第一缓存存储有第3级基址。例如,家节点先根据位域(如10)判断该访存请求是对第3级基址的查询,然后判断哪一个缓存中是否存储有第3级基址(比如,判断出二级缓存中有第3级基址)。
步骤15(S15):二级缓存的控制单元71接收第3级访存请求。可选地,在二级缓存接收了第3级访存请求之后,二级缓存的控制单元71可以根据该访存请求,再次确定本级缓存中是否存储有第3级基址。
……
步骤L(SL):二级缓存的计算单元72向二级缓存的控制单元71反馈第5级基址。
可选地,二级缓存的控制单元71向MMU反馈第5级基址。
需要说明的是,本发明实施例中各个步骤与前述实施例相似的内容不再赘述,请参见前述实施例对应步骤的描述。
请参见图15和图16,图15是本发明实施例提供的再一种页表查询过程示意图;如图15所示,访存请求可以为第K级访存请求、基址可以为第K级基址;其中,K的取值包括1、2、3、…、M。图16是本发明实施例提供的一种对应图15的部分硬件的交互示意图;假设L2cache命中第1级基址和第3级基址,L3 cache命中第2级基址,而第4级基址存储在内存中;如图16所示,在前述图6所示的加速硬件页表遍历的装置中,其各个功能模块可以按照以下时序执行相应的操作,具体步骤如下:
步骤1(S1):二级缓存的控制单元71接收第1级访存请求。
步骤2(S2):二级缓存的控制单元71根据第1级基址,判断二级缓存有第1级基址;然后根据第1级基址查找到存储的第1级基址。
步骤3(S3):二级缓存的控制单元71向二级缓存的计算单元发送第1级基址和第1级高位地址。
步骤4(S4):二级缓存的计算单元72在第1级基址上加偏移地址计算得到第2级基址。
步骤5(S5):在二级缓存的计算单元72得到第2级基址后,向二级缓存的控制单元71发送第2级基址。
步骤6(S6):二级缓存的控制单元71根据第2级基址判断二级缓存没有第2级基址;然后向三级缓存的控制单元81发送第2级访存请求。
可选地,二级缓存的控制单元71在判断二级缓没有第2级基址后,还可以同时向家节点发送第2级访存请求。或者,步骤6中只向家节点发送第2级访存请求。可以理解的是,在本发明实施例中,家节点和三级缓存的控制单元81在接收到第2级访存请求后,执行的操作基本一致,所以在图中只描述三级缓存与二级缓存的交互关系。
步骤7(S7):三级缓存的控制单元81接收第2级访存请求,所述第2级访存请求包括第2级基址和第2级高位地址(也包含在高位地址中)。
步骤8(S8):三级缓存的控制单元81根据第2级基址,判断三级缓存有第2级基址;然后根据第2级基址查找到存储的第2级基址。
步骤9(S9):三级缓存的控制单元81向三级缓存的计算单元发送第2级基址和第2级高位地址。
步骤10(S10):三级缓存的计算单元82在第2级基址上加对应的偏移地址,计算得到第3级基址。
步骤11(S11):在三级缓存单元82得到第3级基址后,向三级缓存的控制单元81发送第3级基址。
步骤12(S12):三级缓存的控制单元81根据第3级基址判断三级缓存没有第3级基址;然后向家节点13发送第3级访存请求。
步骤13(S13):家节点13接收第3级访存请求。
步骤14(S14):在家节点13接收第3级访存请求后,根据第3级基址判断每一级第一缓存是否存储有第3级基址。在判断二级缓存存储有第3级基址的情况下,向二级缓存发送第3级访存请求。
可选地,家节点还包括缓冲区buffer。在家节点13接收第3级访存请求后,buffer根据第3级基址的tag判断哪一级第一缓存存储有第3级基址。例如,家节点判断二级缓存中存储有第3级基址。
步骤15(S15):二级缓存的控制单元71接收第3级访存请求。
可选地,在二级缓存接收了第3级访存请求之后,二级缓存的控制单元71可以根据该访存请求,再次确定本级缓存中是否存储有第3级基址。
步骤16(S16):二级缓存的控制单元71根据第3级基址判断二级缓存有第3级基址后,根据第3级基址查找到存储的第3级基址。
步骤17(S17):二级缓存的控制单元71向二级缓存的计算单元72发送第3级基址和第3级高位地址。
步骤18(S18):二级缓存的计算单元72在第3级基址上加偏移地址计算得到第4级基址。
步骤19(S19):在二级缓存的计算单元72得到第4级基址后,向二级缓存的控制单元71发送第4级基址。
步骤20(S20):二级缓存的控制单元71根据第4级基址,判断二级缓存没有第4级基址;然后向三级缓存的控制单元81和家节点13发送第4级访存请求。
步骤21(S21):家节点13和三级缓存的控制单元81都接收第4级访存请求。
具体地,在本发明实施例中,可选地,在三级缓存接收第4级访存后且没有存储第4级基址的情况下,判断本级缓存没有第4级基址。
步骤22(S22):在家节点13接收第4级访存请求后,判断二级缓存和三级缓存均没有存储第4级基址,向内存控制器14发送第4级访存请求。
具体地,在家节点接收第4级访存请求后,判断该请求为第4级的访存请求。向内存控制器发送请求,指示内存控制器14从内存20中获取第4级基址。可选地,家节点包括缓冲区buffer,buffer用于判断该请求是对哪一级页表进行查询,在完成判断后从当前级别查询开始往后处理。
步骤23(S23):内存控制器14接收第4级访存请求。
步骤24(S24):内存控制器根据第4级访存请求,从内存中获取第4级基址后,向家节点13发送第4级基址。具体地,内存控制器与内存之间的数据交互在此不展开描述。
步骤25(S25):家节点13根据第4级基址和第4级偏移地址,计算得到第5级基址。
可选地,家节点的buffer还可以包括buffer计算单元;buffer还用于对基址进行移位计算。进一步可选地,在家节点得到第5级基址后,向MMU发送第5级基址。
需要说明的是,本发明实施例中各个步骤与前述实施例相似的内容不再赘述,请参见前述实施例对应步骤的描述。
可以理解的是,本发明实施例涉及的页表查询流程可以包括但不限于上述提供的四种流程。例如,在存储第4级缓存、第5级缓存以及其他级别缓存的情况等等,均可以参考前述图示的描述。
基于图3所示的架构和相关装置,下面对本发明实施例涉及的一种加速硬件页表遍历装置进行描述,请参见图17,图17是本发明实施例提供的一种加速硬件页表遍历装置的示意图;如图17所示,在存储器管理单元113中增加第三缓存1131。当存储器管理单元113查询TLB发生TLBmiss之后,先查询第三缓存中是否存储有页表基址。如果命中第三缓存,并且依靠第三缓存就可以完成页表遍历的全过程,就可以不用执行前述实施例提供的方案。否则,针对TLB1130和第三缓存1131中缺失了页表基址,继续执行前述本发明实施例提供的页表遍历方案。
基于图4所示的架构,在N=2,M=4情况下对本发明实施例可能涉及的一种页表查询流程进行描述。
下面先对在N=2,M=4情况下的一种具体的加速硬件页表遍历装置进行描述。
请参见图18,图18是本发明实施例提供的另一种具体的加速硬件页表遍历装置的示意图;如图18所示,处理器芯片10包括处理器内核11,处理器内核11可以包括处理器内核1和处理器内核2。处理器内核2的第二缓存115为二级缓存(即第1级第二缓存),在本发明实施例中二级缓存只有1级,二级缓存可以就是第二缓存115。三级缓存是处理器核1和处理器核2共享的核外缓存,即第2级第一缓存。第1级第一缓存和第1级第二缓存都可以是二级缓存。处理器内核1与总线连接之处可以设置家节点13,处理器内核2与总线连接之处可以设置家节点13。家节点13可以包括多个的家节点,但多个家节点的功能一致。
请参见图19,图19是本发明实施例提供的一种多核情况下的页表查询过程示意图;如图19所示,如图19所示,访存请求可以为第K级访存请求,基址可以为第K级基址;其中,K的取值包括1、2、3、…、M。图20是本发明实施例提供的一种对应图19的部分硬件的交互示意图;假设L2 cache(即第一缓存中的二级缓存)命中第1级基址和第3级基址,L3 cache(即第一缓存中的三级缓存)命中第2级基址,而第4级基址存储在第二缓存的二级缓存中;如图20所示,在前述图18所示的加速硬件页表遍历的装置中,其各个功能模块可以按照以下时序执行相应的操作,具体步骤如下:
步骤1(S1):二级缓存的控制单元71接收第1级访存请求。
步骤2(S2):二级缓存的控制单元71根据第1级基址,判断二级缓存有第1级基址;然后根据第1级基址查找到存储的第1级基址。
步骤3(S3):二级缓存的控制单元71向二级缓存的计算单元发送第1级基址和第1级高位地址。
步骤4(S4):二级缓存的计算单元72在第1级基址上加偏移地址计算得到第2级基址。
步骤5(S5):在二级缓存的计算单元72得到第2级基址后,向二级缓存的控制单元71发送第2级基址。
步骤6(S6):二级缓存的控制单元71根据第2级基址判断二级缓存没有第2级基址;然后向三级缓存的控制单元81发送第2级访存请求。
步骤7(S7):三级缓存的控制单元81接收第2级访存请求,所述第2级访存请求包括第2级基址和第2级高位地址(也包含在高位地址中)。
步骤8(S8):三级缓存的控制单元81根据第2级基址,判断三级缓存有第2级基址;然后根据第2级基址查找到存储的第2级基址。
步骤9(S9):三级缓存的控制单元81向三级缓存的计算单元发送第2级基址和第2级高位地址。
步骤10(S10):三级缓存的计算单元82在第2级基址上加对应的偏移地址,计算得到第3级基址。
步骤11(S11):在三级缓存单元82得到第3级基址后,向三级缓存的控制单元81发送第3级基址。
步骤12(S12):三级缓存的控制单元81根据第3级基址判断三级缓存没有第3级基址;然后向家节点13发送第3级访存请求。
步骤13(S13):家节点13接收第3级访存请求。
步骤14(S14):在家节点13接收第3级访存请求后,根据第3级基址判断每一级第一缓存是否存储有第3级基址。在判断二级缓存存储有第3级基址的情况下,向二级缓存发送第3级访存请求。
步骤15(S15):二级缓存的控制单元71接收第3级访存请求。
步骤16(S16):二级缓存的控制单元71根据第3级基址判断二级缓存有第3级基址后,根据第3级基址查找到存储的第3级基址。
步骤17(S17):二级缓存的控制单元71向二级缓存的计算单元72发送第3级基址和第3级高位地址。
步骤18(S18):二级缓存的计算单元72在第3级基址上加偏移地址计算得到第4级基址。
步骤19(S19):在二级缓存的计算单元72得到第4级基址后,向二级缓存的控制单元71发送第4级基址。
步骤20(S20):二级缓存的控制单元71根据第4级基址,判断二级缓存没有第4级基址;然后向三级缓存的控制单元81和家节点13发送第4级访存请求。
步骤21(S21):家节点13接收第4级访存请求。
可选地,三级缓存的控制单元81接收第4级访存请求。
步骤22(S22):在家节点13接收第4级访存请求后,判断二级缓存和三级缓存均没有存储第4级基址而第二缓存中的二级缓存中存储有第4级基址,向第二缓存中的二级缓存115发送第4级访存请求。
步骤23(S23):第二缓存的二级缓存115接收家节点13发送的第4级访存请求。
步骤24(S24):在第二缓存的二级缓存115根据接收的第4级访存请求,确定二级缓存中存储的第4级基址后,第二缓存的二级缓存115向家节点13发送第4级基址。
步骤25(S25):家节点13根据第4级基址确定和第4级偏移地址确定第5级基址。
在多核的情况下(即处理器芯片内有第一缓存、第二缓存以及处理器芯片连接内存的情况下),假设L2 cache(即第一缓存中的二级缓存)命中第1级基址和第3级基址,L3cache(即第一缓存中的三级缓存)命中第2级基址,而第4级基址存储在内存中。前述图19和图20对应的实施例中,具体步骤如下:
步骤1(S1):二级缓存的控制单元71接收第1级访存请求。
……
步骤21(S21):家节点13接收第4级访存请求。
(步骤1-步骤21可以参考前述图19以及图20对应实施例中的步骤1-步骤21,在此不再赘述。)
步骤22(S22):在家节点13接收第4级访存请求后,判断所有二级缓存和所有一级缓存均没有存储第4级基址,向内存控制器14发送第4级访存请求。
步骤23(S23):内存控制器14接收第4级访存请求。
步骤24(S24):内存控制器根据第4级访存请求,从内存中获取第4级基址后,向家节点13发送第4级基址。具体地,内存控制器与内存之间的数据交互在此不展开描述。
步骤25(S25):家节点13根据第4级基址和第4级偏移地址,计算得到第5级基址。
可以理解的是,第二缓存中二级缓存也可以包括控制单元和计算单元,可以参考第一缓存中的描述,在此不再赘述。上述步骤可能存在的其他实现方式以及具体描述可以参考前述图15和图16对应的实施例的描述,在此不再赘述。
可以理解的是,在有多个处理器内核的情况下,基址计算节点可以发生在多核内或者家节点。例如,在处理器内核1的二级缓存计算得到第3级基址后,在三级缓存命中了第3级基址,并通过三级缓存的计算单元得到了第4级基址。但是三级缓存没有命中第4级基址,通过家节点发现在处理器内核2的二级缓存中命中第4级基址,通过家节点向处理器内核2的二级缓存发送第4级访存请求。具体的描述可以参见前述图15和图16对应的实施例的描述,在此不再赘述。
需要说明的是,本发明实施例中各个步骤以及硬件结构与前述实施例相似的内容不再赘述,请参见前述实施例对应步骤的描述。其中,前述的实施例中第i级第一缓存(例如,二级缓存、三级缓存)都是指具备存储页表基址能力的缓存,不涉及现有技术中的一级缓存(由于目前的一级缓存不存储页表基址)。但是不排除一级缓存将来可能存储页表基址的情况,那么在一级缓存能够存储页表基址的情况下,第1级第一缓存可以是一级缓存。否则,本发明实施例中的第1级第一缓存一般为二级缓存。并且,本发明实施例对缓存的数量和级别不作限定。
基于图4所示的架构和相关装置,下面对本发明实施例涉及的一种加速硬件页表遍历装置进行描述,请参见图21,图21是本发明实施例提供的一种多核情况下加速硬件页表遍历装置的示意图;如图21所示,在处理器内核1的存储器管理单元113中增加第三缓存1131。当存储器管理单元113查询TLB发生TLBmiss之后,先查询第三缓存中是否存储有需要的全部页表基址。如果命中第三缓存,并且依靠第三缓存就可以完成页表遍历的全过程,就可以不用执行前述实施例提供的方案。否则,针对TLB1130和第三缓存1131中缺失的页表基址,继续执行前述本发明实施例提供的页表遍历方案。
需要说明的是,在处理器芯片10有多个处理器内核11的情况下(如处理器内核1、处理内核2、…...、处理器内核Q等等),每个处理器内核都可以包括第三缓存。比如,图示的处理器内核1有第三缓存1131;那么处理器内核2或者处理器内核Q也都可以有第三缓存。
结合图3所述应用架构,下面对本发明实施例涉及的一种加速硬件页表遍历方法进行描述。请参见图22,图22是本发明实施例提供的一种加速硬件页表遍历方法的示意图;如图22所示,可以包括步骤S2201-步骤S2212;其中,可选的步骤可以包括步骤步骤S2205-步骤S2212。
步骤S2201:通过第i级第一缓存的控制单元接收访存请求。
具体地,所述访存请求包括第K级基址和第K级高位地址。0<K≤M,K为整数;i=1、2、...、N。在一种可能的实现方式中,所述访存请求还包括所述第K级基址的基址标识,所述基址标识用于指示所述第K级基址的级别。
步骤S2202:通过所述第i级第一缓存的控制单元,根据所述第K级基址判断所述第i级第一缓存是否存储有所述第K级基址。
步骤S2203:在判断所述第i级第一缓存存储有所述第K级基址的情况下,通过所述第i级第一缓存的控制单元,向所述第i级第一缓存的计算单元发送所述第K级基址。
步骤S2204:通过第i级第一缓存的计算单元,根据所述第K级基址和第K级偏移地址确定第(K+1)级基址。
具体地,所述第K级偏移地址为根据所述第K级高位地址确定的。
步骤S2205:在判断所述第i级第一缓存未存储有所述第K级基址且i≠N的情况下,通过所述第i级第一缓存的控制单元,向第(i+1)级第一缓存发送所述访存请求。
步骤S2206:在判断所述第i级第一缓存未存储有所述第K级基址的情况下,通过所述第i级第一缓存的控制单元向家节点发送所述访存请求。
步骤S2207:在接收所述访存请求后,通过所述家节点,根据所述第K级基址判断N级第一缓存中每一级第一缓存是否存储有所述第K级基址。
步骤S2208:在判断目标第一缓存存储有所述第K级基址的情况下,向所述目标第一缓存的控制单元发送所述访存请求。
步骤S2209:在判断所述每一级第一缓存均未存储有所述第K级基址的情况下,通过所述家节点向内存控制器发送所述访存请求。
步骤S2210:通过所述内存控制器,根据所述第K级基址在内存中确定所述第K级基址。
步骤S2211:通过所述内存控制器向所述家节点发送所述第K级基址。
步骤S2212:根据所述第K级基址和所述第K级偏移地址,通过所述家节点的缓冲区buffer确定所述第(K+1)级基址。
需要说明的是,本发明实施例中所描述的加速硬件页表遍历方法可参见上述图8-图17中所述的装置实施例中的加速硬件页表遍历装置的相关描述,此处不再赘述。
结合图4所述应用架构,下面对本发明实施例涉及的另一种加速硬件页表遍历方法进行描述。请参见图23,图23是本发明实施例提供的另一种加速硬件页表遍历方法的示意图;如图23所示,可以包括步骤S2301-步骤S2317。
步骤S2301:通过第i级第一缓存的控制单元接收访存请求。
具体地,所述访存请求包括第K级基址和第K级高位地址;0<K≤M,K为整数;i=1、2、...、N。在一种可能的实现方式中,所述访存请求还包括所述第K级基址的基址标识,所述基址标识用于指示所述第K级基址的级别。
步骤S2302:通过所述第i级第一缓存的控制单元,根据所述第K级基址判断所述第i级第一缓存是否存储有所述第K级基址。
步骤S2303:在判断所述第i级第一缓存存储有所述第K级基址的情况下,通过所述第i级第一缓存的控制单元,向所述第i级第一缓存的计算单元发送所述第K级基址。
步骤S2304:通过第i级第一缓存的计算单元,根据所述第K级基址和第K级偏移地址确定第(K+1)级基址。
具体地,所述第K级偏移地址为根据所述第K级高位地址确定的。
步骤S2305:在判断所述第i级第一缓存未存储有所述第K级基址且i≠N的情况下,通过所述第i级第一缓存的控制单元,向第(i+1)级第一缓存发送所述访存请求。
步骤S2306:在判断所述第i级第一缓存未存储有所述第K级基址的情况下,通过所述第i级第一缓存的控制单元向家节点发送所述访存请求。
步骤S2307:在接收所述访存请求后,通过所述家节点,根据所述第K级基址判断N级第一缓存中每一级第一缓存是否存储有所述第K级基址。
步骤S2308:在判断目标第一缓存存储有所述第K级基址的情况下,向所述目标第一缓存的控制单元发送所述访存请求。
步骤S2309:在接收所述访存请求后,通过所述家节点判断第二缓存是否存储有所述第K级基址。
步骤S2310:在判断所述第二缓存存储有所述第K级基址的情况下,通过所述家节点向所述第二缓存发送所述访存请求。
步骤S2311:在判断所述每一级第一缓存和所述第二缓存均未存储有所述第K级基址的情况下,通过所述家节点向内存控制器发送所述访存请求。
步骤S2312:根据所述第K级基址,通过所述内存控制器在内存中确定所述第K级基址。
步骤S2313:通过所述内存控制器向所述家节点发送所述第K级基址。
步骤S2314:根据所述第K级基址和所述第K级偏移地址,通过所述家节点的缓冲区buffer确定所述第(K+1)级基址。
步骤S2315:在向第1级第一缓存发送访存请求之前,通过所述存储器管理单元判断第三缓存是否存储有第1级基址。
步骤S2316:在判断所述第三缓存存储有所述第1级基址的情况下,通过所述存储器管理单元获取所述第1级基址。
需要说明的是,在第三缓存存储有第1级基址的前提下,第三缓存也会存储有剩余级别的基址,以供完成目标虚拟地址转换成物理地址。
步骤S2317:在判断所述第三缓存未存储有所述第1级基址的情况下,通过所述存储器管理单元向所述第1级第一缓存发送所述访存请求。
需要说明的是,本发明实施例中所描述的加速硬件页表遍历方法可参见上述图19-图21中所述的装置实施例中的加速硬件页表遍历装置的相关描述,此处不再赘述。
如图24所示,图24是本发明实施例提供的一种芯片的结构示意图。前述实施例中的加速硬件页表遍历装置可以以图24中的结构来实现,该设备包括至少一个处理器241,至少一个存储器242。此外,该设备还可以包括天线等通用部件,在此不再详述。
处理器241可以是通用中央处理器(CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制以上方案程序执行的集成电路。
存储器242可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,所述存储器242用于存储执行以上方案的应用程序代码,并由处理器241来控制执行。所述处理器241用于执行所述存储器242中存储的应用程序代码。具体如下:
通过第i级第一缓存的控制单元接收访存请求,所述访存请求包括第K级基址和第K级高位地址,K为正整数,i=1、2、...、N;通过所述第i级第一缓存的控制单元,根据所述第K级基址判断所述第i级第一缓存是否存储有所述第K级基址;在判断所述第i级第一缓存存储有所述第K级基址的情况下,通过所述第i级第一缓存的控制单元,向所述第i级第一缓存的计算单元发送所述第K级基址;通过第i级第一缓存的计算单元,根据所述第K级基址和第K级偏移地址确定第(K+1)级基址,所述第K级偏移地址为根据所述第K级高位地址确定的。
图24所示的芯片为一种加速硬件页表遍历装置时,存储器242存储的代码可执行以上图22或者图23提供的加速硬件页表遍历装置方法,比如,在判断所述第i级第一缓存未存储有所述第K级基址且i≠N的情况下,通过所述第i级第一缓存的控制单元,向第(i+1)级第一缓存的控制单元发送所述访存请求。
或者,在接收所述访存请求后,通过所述家节点,根据所述第K级基址判断N级第一缓存中每一级第一缓存是否存储有所述第K级基址;在判断目标第一缓存存储有所述第K级基址的情况下,向所述目标第一缓存的控制单元发送所述访存请求。
或者,在判断所述每一级第一缓存均未存储有所述第K级基址的情况下,通过所述家节点向内存控制器发送所述访存请求;通过所述内存控制器,根据所述第K级基址在内存中确定所述第K级基址;通过所述内存控制器向所述家节点发送所述第K级基址;根据所述第K级基址和所述第K级偏移地址,通过所述家节点的缓冲区buffer确定所述第(K+1)级基址。
需要说明的是,本发明实施例中所描述的芯片24的功能可参见上述图22-图23中的所述的方法实施例中的相关描述,此处不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可能可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以为个人计算机、服务器或者网络设备等,具体可以是计算机设备中的处理器)执行本申请各个实施例上述方法的全部或部分步骤。其中,而前述的存储介质可包括:U盘、移动硬盘、磁碟、光盘、只读存储器(Read-Only Memory,缩写:ROM)或者随机存取存储器(Random Access Memory,缩写:RAM)等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (19)

1.一种加速硬件页表遍历的装置,其特征在于,包括第i级第一缓存的控制单元和所述第i级第一缓存的计算单元;i=1、2、…、N,N为正整数;其中,
所述第i级第一缓存的控制单元,用于:
接收访存请求,所述访存请求包括第K级基址和第K级高位地址,K为正整数;
根据所述第K级基址判断所述第i级第一缓存是否存储有所述第K级基址;
在判断所述第i级第一缓存存储有所述第K级基址的情况下,向所述第i级第一缓存的计算单元发送所述第K级基址;
所述第i级第一缓存的计算单元,用于:
根据所述第K级基址和第K级偏移地址确定第(K+1)级基址,所述第K级偏移地址为根据所述第K级高位地址确定的。
2.根据权利要求1所述的装置,其特征在于,所述第i级第一缓存的控制单元,还用于:
在判断所述第i级第一缓存未存储有所述第K级基址且i≠N的的情况下,向第(i+1)级第一缓存的控制单元发送所述访存请求。
3.根据权利要求1或2所述的装置,其特征在于,所述装置还包括家节点;所述家节点与所述第i级第一缓存耦合;
所述第i级第一缓存的控制单元,还用于:
在判断所述第i级第一缓存未存储有所述第K级基址的情况下,向所述家节点发送所述访存请求;
所述家节点,用于接收所述访存请求。
4.根据权利要求3所述的装置,其特征在于,所述家节点,还用于:
在接收所述访存请求后,根据所述第K级基址判断N级第一缓存中每一级第一缓存是否存储有所述第K级基址;
在判断目标第一缓存存储有所述第K级基址的情况下,向所述目标第一缓存的控制单元发送所述访存请求。
5.根据权利要求4所述的装置,其特征在于,所述装置还包括:与所述家节点耦合的内存控制器、与所述内存控制器耦合的内存;所述家节点包括缓冲区buffer;
所述家节点,还用于:
在判断所述每一级第一缓存均未存储有所述第K级基址的情况下,向所述内存控制器发送所述访存请求;
所述内存控制器,用于:
根据所述第K级基址,在所述内存中确定所述第K级基址;
向所述家节点发送所述第K级基址;
所述内存,用于存储所述第K级基址;
所述buffer,用于根据所述第K级基址和所述第K级偏移地址,确定所述第(K+1)级基址。
6.根据权利要求4所述的装置,其特征在于,所述装置还包括与所述家节点耦合的第二缓存,所述第二缓存包括所述第二缓存的控制单元和所述第二缓存的计算单元;
所述家节点,还用于:
在接收所述访存请求后,判断所述第二缓存是否存储有所述第K级基址;
在判断所述第二缓存存储有所述第K级基址的情况下,向所述第二缓存的控制单元发送所述访存请求。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括与所述家节点耦合的内存控制器、与所述内存控制器耦合的内存;所述家节点包括缓冲区buffer;
所述家节点,还用于:
在判断所述每一级第一缓存和所述第二缓存,均未存储有所述第K级基址的情况下,向所述内存控制器发送所述访存请求;
所述内存控制器,用于:
根据所述第K级基址,在所述内存中确定所述第K级基址;
向所述家节点发送所述第K级基址;
所述内存用于存储所述第K级基址;
所述buffer,用于根据所述第K级基址和所述第K级偏移地址,确定所述第(K+1)级基址。
8.根据权利要求1-7任一项所述的装置,其特征在于,所述装置还包括与第1级第一缓存耦合的存储器管理单元,所述存储器管理单元包括第三缓存;所述第三缓存用于存储K级基址,K=1、2、…、M,M为大于1的整数;
所述存储器管理单元,用于:
在向所述第1级第一缓存发送所述访存请求之前,判断所述第三缓存是否存储有所述第1级基址;
在判断所述第三缓存存储有所述第1级基址的情况下,获取所述第1级基址;
在判断所述第三缓存未存储有所述第1级基址的情况下,向所述第1级第一缓存发送所述访存请求。
9.根据权利要求1-8任一项所述的装置,其特征在于,所述访存请求还包括所述第K级基址的基址标识,所述第K级基址的基址标识用于指示所述第K级基址的级别。
10.一种加速硬件页表遍历的方法,其特征在于,包括:
通过第i级第一缓存的控制单元接收访存请求,所述访存请求包括第K级基址和第K级高位地址,K为正整数,i=1、2、...、N;
通过所述第i级第一缓存的控制单元,根据所述第K级基址判断所述第i级第一缓存是否存储有所述第K级基址;
在判断所述第i级第一缓存存储有所述第K级基址的情况下,通过所述第i级第一缓存的控制单元,向所述第i级第一缓存的计算单元发送所述第K级基址;
通过第i级第一缓存的计算单元,根据所述第K级基址和第K级偏移地址确定第(K+1)级基址,所述第K级偏移地址为根据所述第K级高位地址确定的。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
在判断所述第i级第一缓存未存储有所述第K级基址且i≠N的情况下,通过所述第i级第一缓存的控制单元,向第(i+1)级第一缓存的控制单元发送所述访存请求。
12.根据权利要求10或11所述的方法,其特征在于,所述方法还包括:
在判断所述第i级第一缓存未存储有所述第K级基址的情况下,通过所述第i级第一缓存的控制单元向家节点发送所述访存请求。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
在接收所述访存请求后,通过所述家节点,根据所述第K级基址判断N级第一缓存中每一级第一缓存是否存储有所述第K级基址;
在判断目标第一缓存存储有所述第K级基址的情况下,向所述目标第一缓存的控制单元发送所述访存请求。
14.根据权利要求13所述的方法,其特征在于,所述方法还包括:
在判断所述每一级第一缓存均未存储有所述第K级基址的情况下,通过所述家节点向内存控制器发送所述访存请求;
通过所述内存控制器,根据所述第K级基址在内存中确定所述第K级基址;
通过所述内存控制器向所述家节点发送所述第K级基址;
根据所述第K级基址和所述第K级偏移地址,通过所述家节点的缓冲区buffer确定所述第(K+1)级基址。
15.根据权利要求13所述的方法,其特征在于,所述方法还包括:
在接收所述访存请求后,通过所述家节点判断第二缓存是否存储有所述第K级基址;
在判断所述第二缓存存储有所述第K级基址的情况下,通过所述家节点向所述第二缓存的控制单元发送所述访存请求。
16.根据权利要求15所述的方法,其特征在于,所述方法还包括:
在判断所述每一级第一缓存和所述第二缓存均未存储有所述第K级基址的情况下,通过所述家节点向内存控制器发送所述访存请求;
根据所述第K级基址,通过所述内存控制器在内存中确定所述第K级基址;
通过所述内存控制器向所述家节点发送所述第K级基址;
根据所述第K级基址和所述第K级偏移地址,通过所述家节点的缓冲区buffer确定所述第(K+1)级基址。
17.根据权利要求10-16任一项所述的方法,其特征在于,所述方法还包括:
在向第1级第一缓存发送所述访存请求之前,通过存储器管理单元判断第三缓存是否存储有所述第1级基址;
在判断所述第三缓存存储有所述第1级基址的情况下,通过所述存储器管理单元获取所述第1级基址;
在判断所述第三缓存未存储有所述第1级基址的情况下,通过所述存储器管理单元向所述第1级第一缓存发送所述访存请求。
18.根据权利要求10-17任一项所述的方法,其特征在于,所述访存请求还包括所述第K级基址的基址标识,所述第K级基址的基址标识用于指示所述第K级基址的级别。
19.一种芯片系统,其特征在于,所述芯片系统执行如权利要求10-18中任意一项所述的方法得以实现。
CN201911195523.5A 2019-11-28 2019-11-28 一种加速硬件页表遍历的方法及装置 Pending CN112860600A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201911195523.5A CN112860600A (zh) 2019-11-28 2019-11-28 一种加速硬件页表遍历的方法及装置
PCT/CN2020/132489 WO2021104502A1 (zh) 2019-11-28 2020-11-27 一种加速硬件页表遍历的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911195523.5A CN112860600A (zh) 2019-11-28 2019-11-28 一种加速硬件页表遍历的方法及装置

Publications (1)

Publication Number Publication Date
CN112860600A true CN112860600A (zh) 2021-05-28

Family

ID=75995973

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911195523.5A Pending CN112860600A (zh) 2019-11-28 2019-11-28 一种加速硬件页表遍历的方法及装置

Country Status (2)

Country Link
CN (1) CN112860600A (zh)
WO (1) WO2021104502A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113656331A (zh) * 2021-10-20 2021-11-16 北京微核芯科技有限公司 基于高低位的确定访问地址的方法和装置
CN114238176A (zh) * 2021-12-14 2022-03-25 海光信息技术股份有限公司 处理器、用于处理器的地址翻译方法、电子设备
CN114281720A (zh) * 2021-12-14 2022-04-05 海光信息技术股份有限公司 处理器、用于处理器的地址翻译方法、电子设备
WO2023122194A1 (en) * 2021-12-22 2023-06-29 SiFive, Inc. Page table entry caches with multiple tag lengths

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7334107B2 (en) * 2004-09-30 2008-02-19 Intel Corporation Caching support for direct memory access address translation
KR20120129695A (ko) * 2011-05-20 2012-11-28 삼성전자주식회사 메모리 관리 유닛, 이를 포함하는 장치들 및 이의 동작 방법
JP6636526B2 (ja) * 2015-03-27 2020-01-29 ホアウェイ・テクノロジーズ・カンパニー・リミテッド データ処理方法、メモリ管理ユニット、およびメモリ制御デバイス
US10430349B2 (en) * 2016-06-13 2019-10-01 Advanced Micro Devices, Inc. Scaled set dueling for cache replacement policies
US20180067866A1 (en) * 2016-09-08 2018-03-08 Intel Corporation Translate on virtual machine entry

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113656331A (zh) * 2021-10-20 2021-11-16 北京微核芯科技有限公司 基于高低位的确定访问地址的方法和装置
CN114238176A (zh) * 2021-12-14 2022-03-25 海光信息技术股份有限公司 处理器、用于处理器的地址翻译方法、电子设备
CN114281720A (zh) * 2021-12-14 2022-04-05 海光信息技术股份有限公司 处理器、用于处理器的地址翻译方法、电子设备
CN114281720B (zh) * 2021-12-14 2022-09-02 海光信息技术股份有限公司 处理器、用于处理器的地址翻译方法、电子设备
CN114238176B (zh) * 2021-12-14 2023-03-10 海光信息技术股份有限公司 处理器、用于处理器的地址翻译方法、电子设备
WO2023122194A1 (en) * 2021-12-22 2023-06-29 SiFive, Inc. Page table entry caches with multiple tag lengths

Also Published As

Publication number Publication date
WO2021104502A1 (zh) 2021-06-03

Similar Documents

Publication Publication Date Title
CN112860600A (zh) 一种加速硬件页表遍历的方法及装置
US11940929B2 (en) Methods and apparatus to reduce read-modify-write cycles for non-aligned writes
CN102473139B (zh) 包括用于i/o和计算卸载的多层次地址转换的i/o存储器管理单元
US8151085B2 (en) Method for address translation in virtual machines
US11474951B2 (en) Memory management unit, address translation method, and processor
US8185692B2 (en) Unified cache structure that facilitates accessing translation table entries
US20110072212A1 (en) Cache memory control apparatus and cache memory control method
CN111552654A (zh) 对页表遍历的冗余进行检测的处理器
US8862829B2 (en) Cache unit, arithmetic processing unit, and information processing unit
US11567874B2 (en) Prefetch management in a hierarchical cache system
US11620236B2 (en) Prefetch kill and revival in an instruction cache
US8468297B2 (en) Content addressable memory system
CN115509959A (zh) 处理系统、控制方法、芯片及计算机可读存储介质
CN115481054A (zh) 数据处理方法、装置及系统、系统级soc芯片及计算机设备
CN113722247B (zh) 物理内存保护单元、物理内存权限控制方法和处理器
JP2008512758A (ja) 仮想アドレス・キャッシュに格納されたデータを共用する仮想アドレス・キャッシュ及び方法
JPH0371355A (ja) キヤツシユ検索装置および検索方法
US10691604B2 (en) Minimizing cache latencies using set predictors
US20070255927A1 (en) Data access in a data processing system
CN114258533A (zh) 在基于处理器的设备中优化对页表条目的访问
US11977491B2 (en) Prefetch kill and revival in an instruction cache
US11474953B2 (en) Configuration cache for the ARM SMMUv3
JP2002312239A (ja) プロセッサ、システムオンチップ装置及びアクセス方法
US7818508B2 (en) System and method for achieving enhanced memory access capabilities
CN114090080A (zh) 指令高速缓存器、指令读取方法及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination