发明内容
有鉴于此,本发明实施例提供一种物理内存保护单元、物理内存权限控制方法和处理器,以解决以上问题。
为了达到这个目的,第一方面,本公开实施例提供一种物理内存保护单元,包括:
多个寄存器,用于存储一条或多条权限表项,所述一条或多条权限表项用于表示一个或多个地址范围的访问权限,且所述多个地址范围并不重合;
控制单元,用于根据接收到的物理地址和页面尺寸判断所述物理地址所在的物理页是否仅命中所述一个或多个地址范围中的第一地址范围,如果是,则输出所述第一地址范围对应的访问权限和不跨区的指示。
可选地,所述多个寄存器包括:
配置寄存器,用于存储多个配置项,以指示所述一条或多条权限表项的访问权限;
地址寄存器,用于存储多个地址项,以指示所述一条或多条权限表项的地址范围。
可选地,每个所述配置项与一个所述地址项对应,每个所述配置项包含用于表征是否具有读、写和执行的权限的二进制码,每个所述地址项包含用于表征所述地址范围的开始地址和偏移量的二进制码。
可选地,每个所述配置项与相邻的两个所述地址项对应,每个所述配置项包含用于表征是否具有读、写和执行的权限的二进制码,相邻的两个所述地址项分别包含表征所述地址范围的开始地址和结束地址的二进制码。
可选地,所述控制单元适用于:
判断所述物理地址与每个所述地址范围是否在同一个物理页内;
如果所述物理地址与相应的所述地址范围在同一个物理页内,则判断所述页面尺寸是否小于或者等于相应的所述地址范围的大小,如果是,则将相应的所述地址范围的访问权限作为所述第一地址范围的访问权限返回并返回不跨区的指示。
可选地,所述判断所述物理地址与每个所述地址范围是否在同一个物理页内包括:
将所述物理地址和每个所述地址范围的高位N个二进制码进行比较,以确定所述物理地址与每个所述地址范围是否在同一个物理页内,所述N根据所述页面尺寸和所述物理地址的二进制位数决定。
可选地,每个所述配置项还包括表征地址控制模式的二进制码。
第二方面,本公开实施例提供一种处理器,包括:
上述的物理内存保护单元;
内存管理单元,包括转译后备缓冲器,用于向所述物理内存保护单元发送所述物理地址和所述页面尺寸,并在接收到不跨区的指示时,将接收到的访问权限存储到所述后备缓存区的相应物理页的缓存表项中。
可选地,所述内存管理单元还用于:
在接收到跨区的指示后,重复执行以下操作:向所述物理内存保护单元发送所述物理地址以及新的页面尺寸,其中,每次发送的新的页面尺寸比之前发送的页面尺寸更小,直到从所述物理内存保护单元获取对应的访问权限和不跨区的指示。
可选地,还包括:
指令预取单元,用于向所述内存管理单元发送预取指令;
加载存储单元,用于向所述内存管理单元发送加载/存储数据指令,
其中,所述内存管理单元将所述预取指令或所述加载/存储数据指令中的虚拟地址转译为所述物理地址,并据此向所述物理内存保护单元发送所述物理地址和所述页面尺寸,以获取对应的访问权限,并基于对应的访问权限决定执行所述预取指令或所述加载/存储数据指令。
第三方面,本公开实施例提供一种处理器,包括:
上述的物理内存保护单元;
指令预取单元,用于向所述物理内存保护单元发送预取指令,所述预取指令指示所述物理地址和所述页面尺寸;
加载存储单元,用于向所述物理内存保护单元发送加载/存储数据指令,所述加载/存储数据指令指示所述物理地址和所述页面尺寸;
其中,所述物理内存保护单元基于其控制单元得到的访问权限决定是否将所述预取指令或所述加载/存储数据指令发送给与所述处理器耦接的存储器。
第四方面,本公开实施例提供一种电子装置,包括:
上述的处理器;以及
存储器,与所述处理器耦接。
第五方面,本公开实施例提供一种物理内存权限控制方法,包括:
存储一条或多条权限表项,所述一条或多条权限表项用于表示一个或多个地址范围的访问权限,且所述多个地址范围并不重合;
基于要访问的物理地址和页面尺寸判断所述物理地址所在的物理页是否仅命中所述一个或多个地址范围中的第一地址范围,如果是,则输出所述第一地址范围对应的访问权限和不跨区的指示。
可选地,所述多个权限表项采用多个寄存器存储,所述多个寄存器包括:
多个配置寄存器,用于存储多个配置项,以指示所述一条或多条权限表项的访问权限;
多个地址寄存器,用于存储多个地址项,以指示所述一条或多条权限表项的地址范围。
可选地,所述判断所述物理地址所在的物理页是否仅命中所述一个或多个地址范围中的第一地址范围,如果是,则输出所述第一地址范围对应的访问权限和不跨区的指示包括:
判断所述物理地址与每个所述地址范围是否在同一个物理页内;
如果所述物理地址与相应的所述地址范围在同一个物理页内,则判断所述页面尺寸是否小于或者等于所述地址范围的大小,如果是,则将相应的所述地址范围的访问权限作为所述第一地址范围的访问权限输出并输出不跨区的指示。
在本公开实施例中,将物理地址和页面尺寸提供给物理内存保护单元,物理内存保护单元根据对物理地址是否与相应权限表项在同一个物理页中以及页面尺寸是否小于或者等于该权限表项所表征的地址范围的判断,来确定物理地址所在的物理页是否跨区,并在未跨区的情况下得到访问权限。
由于在系统中,属于未跨区的情况占据大多数情况,因此本实施例和传统方案相比,大多数情况下只需要访问一次物理内存保护单元就可以获得物理地址所在的物理页的访问权限(传统方案一般至少需要两次访问),即使有少数情况需要多次访问物理内存保护单元来得到访问权限,但由于这部分情况的占比非常小,因此总体上,本实施例将比传统方案的执行效率更高。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
在本文中使用以下术语。
电子装置:通用嵌入式系统、台式机、服务器或其他具备信息处理能力的系统。
存储器:位于电子装置内,用于存储信息的物理结构。按照用途的不同,存储器可以分为主存储器(也可称为内部存储器,或简称为内存/主存)和辅助存储器(也可称为外部存储器,或简称为辅存/外存)。主存用于存储由数据信号表示的指令信息和/或数据信息,例如用于存放处理器提供的数据,也可用于实现处理器与外存之间的信息交换。外存提供的信息需要被调入主存中才能被处理器访问,因此本文提到的存储器一般是指主存,本文提到的存储设备一般是指外存。
物理地址(Physical Address,简称为PA):地址总线上的地址。处理器或其他硬件可以向地址总线提供物理地址以访问主存。
虚拟地址:软件或程序所使用的抽象地址。虚拟地址空间可以大于物理地址空间,虚拟地址可以被映射至对应的物理地址。
分页(paging)管理机制:将虚拟地址空间划分为多个部分,每部分作为一个虚拟页面,并将物理地址空间划分为多个部分,每部分作为一个物理页面。物理页面也称为物理地址块或物理地址页框(page frame)。
根页表:用于指定虚拟页面和物理页面之间的对应关系,通常被存储在主存中。根页表中包括多个表项,每个表项分别用于指定虚拟页面到物理页面的映射关系以及一些管理标志,从而可以用于将虚拟页面中的虚拟地址转译为相应物理页面中的物理地址。
缓存表项:根页表中的一些可能常用的表项可以被缓存在转译后备缓冲器中,以便于在地址转译过程中被调用,从而加快地址转译过程。为了与根页表中的表项作区分,后文将存储于TLB中的表项简称为缓存表项。
权限表项:物理内存保护单元(Physical Memory Protection Unit)预存储的若干条权限表项记录,每条权限表项指定特定地址范围的访问权限。用户在超级用户权限配置这些权限表项,或者,在产品出厂之前,将这些表项通过硬编码刻录到系统中。
所谓跨区是指:例如物理地址0x20000111,页面尺寸为4K(从高到低的二进制码,前20位表示页号,后面的12位表示偏移量),由此可确定该物理地址对应的页面的地址范围为[0x20000000,0x20000fff],如果在这个地址范围内,任意地址A命中物理内存保护单元102中的权限表项A1,任意地址B命中物理内存保护单元102中的权限表项B1,A1不等于B1,则即为该物理地址跨区。因此,所谓物理地址跨区是指物理地址对应的物理页面的地址范围至少命中两条或以上的权限表项。然后继续说明如何根据物理页面和页面尺寸判断对应的物理页面的地址范围是否是否跨区。步骤可如下所示:判断物理地址所在的物理页面是与权限表项的地址范围在同一个物理页面中,如果是,则继续判断页面尺寸是否小于权限表项的地址范围,如果是,则说明没有跨区,如果否,则说明可能跨区。
本申请实施例可以应用于互联网和物联网(Internet of Things,简称IoT)等系统中,例如5G移动互联网系统、自动驾驶系统、人脸识别、等等。但应当领会,本发明实施例不限于此,还可以应用在任何需要物理内存保护的场景中。
系统概述
图1示出本发明实施例的电子装置的示意图框图。图1中示出的电子装置1000旨在示出一个或多个电子装置的至少部分组件,在本发明的其他实施例中,可以省略图1示出的部分组件或以不同的架构实现各组件之间的连接,也可以包括图1中未示出的一些硬件和/或软件模块,图1中示出的两个或两个以上的组件也可以在软件体系和/或硬件体系上被合成为一个组件。
在一些实施例中,电子装置1000可以应用于移动设备、手持式设备或嵌入式设备中,例如应用于采用5G技术的智能手机或自动驾驶车辆的处理平台中。电子装置1000还可以应用于物联网设备、可穿戴设备(诸如智能手表、智能眼镜等设备)、人脸识别设备,也可以是电视、机顶盒等设备。
如图1所示,电子装置1000可以包括一个或多个处理器1100。例如,电子装置1000可以是包含至少一个处理器的终端系统、包含多个处理器的工作站系统或包含大量处理器或处理器核的服务器系统。电子装置1000中的一个或多个处理器1100可以是分别独立封装的芯片,也可以是集成于片上系统(System of Chip,SoC)中的集成电路。处理器1100可以是中央处理器、图形处理器和物理处理器等。
如图1所示,电子装置1000还包括总线1200,处理器1100可以与一个或多个总线1200耦合。总线1200用于在处理器1100与电子装置1000中的其他部件之间传输信号,例如传输地址、数据或控制信号等。总线1200可以是处理器总线,例如为直接媒体接口(DirectMedia Interface,DMI)总线,然而本发明实施例的接口总线1200不限于采用DMI总线作为接口总线,还可以包括一个或多个互连总线,例如:基于外设部件互连标准(PeripheralComponent Interconnect,PCI)的总线、存储器总线或其他类型的总线。
在一些实施例中,如图1所示,电子装置1000还包括存储器1300。存储器1300作为电子装置的主存,可以是动态随机存取存储器(Dynamic Random Access Memory,DRAM)、静态随机存取存储器(Static Random-Access Memory,SRAM)或其他具有存储能力的模块。在一些实施例中,存储器1300可以用于存储数据信息和指令信息,以供一个或多个处理器1100在执行应用程序或进程时使用。除此之外,电子装置1000还可以包括一个或多个存储设备1800,作为辅助存储器提供额外的存储空间。
电子装置1000也可以经由总线1200耦合到显示设备1400,例如阴极射线管(CRT)、液晶显示器(LCD)或有机发光二极管(OLED)阵列,以显示用户需要了解的信息。
在一些实施例中,电子装置1000可以包括输入设备1500,例如为键盘、鼠标、触控面板等设备,用于将用户操作对应的信息经总线1200传送给相应的处理器1100。电子装置1000还可以包括采集设备1700,可以耦合到总线1200以传送有关图像/声音等可被采集的信息相关的指令和数据。采集设备1700例如为麦克风和/或用于采集图像的摄像机或照相机等设备。输入设备1500和采集设备1700提供的数据可以被存储在存储设备1300的相应存储区域,输入设备1500和采集设备1700提供的指令可以被相应的处理器1100执行。
电子装置1000可以进一步包括网络接口1700,以使系统可以访问网络,网络例如为局域网(LAN)、广域网(WAN)、城域网(MAN)、个人区域网络(PAN)、蓝牙、云网络、移动网络(例如长期演进Long Term Evolution,LTE)网络、3G网络、4G网络或5G网络等)、内联网、因特网等。网络接口1700可以包括具有至少一个天线的无线网络接口和/或经由网络电缆通信的有线网络接口,网络电缆可以是以太网电缆、同轴电缆、光纤电缆、串行电缆或并行电缆。
网络接口1700例如可以根据IEEE 802.11b和/或802.11g标准提供对LAN的访问,也可以根据蓝牙标准提供对个人局域网络的访问,也可以支持其他无线网络接口和/或协议,包括现有的通信标准和未来的通信标准。网络接口1700还可以利用时分多址(TDMI)协议、全球移动通信系统(GSM)协议、码分多址(CDMA)协议和/或其他类型的无线通信协议等。
需要说明的是,上文以及图1仅仅用于对电子装置1000进行示例性的描述,而不用于限制电子装置1000的具体实现方式。电子装置1000还可以包括其它组成部分,例如数据处理单元等;上文描述的电子装置1000中的各个部分也可以在实际应用中适当被省略。
处理器
图2是本发明一实施例提供的处理器的示意性框图。
在一些实施例中,每个处理器1100可以包括用于处理指令的一个或多个处理器核101,指令的处理和执行是可以被用户(例如通过应用程序)和/或系统平台控制的。在一些实施例中,每个处理器核可以用于处理特定的指令集。在一些实施例中,指令集可以支持复杂指令集计算(Complex Instruction Set Computing,CISC)、精简指令集计算(ReducedInstruction Set Computing,RISC)或基于超长指令字(Very Long Instruction Word,VLIW)的计算。不同的处理器核101可以各自处理不同的指令集。在一些实施例中,处理器核101还可以包括其他处理模块,例如数字信号处理器(Digital Signal Processor,DSP)等。作为一种示例,图2中示出了处理器核1至m,m是非0的自然数。
在一些实施例中,如图2所示,处理器1100可以包括高速缓存器,且根据不同架构,处理器1100中的高速缓存器可以是位于各个处理器核101之内和/或之外的单个或多级的内部高速缓存器(如图2示出的3级高速缓存器L1至L3),也可以包括面向指令的指令高速缓存和面向数据的数据高速缓存。在一些实施例中,处理器1100中的各个部件可以共享至少一部分的高速缓存器,如图2所示,处理器核1至m例如共用第三级高速缓存器L3。处理器1100还可以包括外部高速缓存(未示出),其他高速缓存结构也可以作为处理器1100的外部高速缓存。
在一些实施例中,如图2所示,处理器1100可以包括寄存器堆104(RegisterFile),寄存器堆104可以包括用于存储不同类型的数据和/或指令的多个寄存器,这些寄存器可以是不同类型的。例如,寄存器堆104可以包括:整数寄存器、浮点寄存器、状态寄存器、指令寄存器和指针寄存器等。寄存器堆104中的寄存器可以选用通用寄存器来实现,也可以根据处理器1100的实际需求采用特定的设计。
处理器1100可以包括内存管理单元(Memory Management Unit,MMU)105。内存管理单元105中存储了多个缓存表项,用于实现虚拟地址到物理地址的转译。每个处理器核101中可以设置一个或多个内存管理单元105,不同处理器核101中的内存管理单元105也可以与位于其他处理器或处理器核中的内存管理单元105实现同步,使得每个处理器或处理器核可以共享统一的虚拟存储系统。
在一些实施例中,内部互连结构用于将内存管理单元105经由片上系统的内部总线与其他处理器核交互,或直接与片上系统内的其他模块相连以实现信号交换。
内存管理单元105可以与处理器1100中用于预取指令的指令预取单元106和/或用于加载/存储数据的加载存储单元(Load/Store Unit,LSU)107进行通信。
指令预取单元106使用预取指令的虚拟地址访问内存管理单元105,用以转译预取指令的物理地址,且指令预取单元106根据内存管理单元105转译生成的物理地址在物理地址空间中进行寻址以获得相应的指令。处理器核101中的执行单元可以接收指令预取单元106获取的指令,并对该指令进行处理(例如解码),使得该指令能够被执行。
加载存储单元107是一种面向访存指令(加载指令或存储指令)的指令执行单元。加载存储单元107可以用于根据加载指令获取高速缓存器和/或存储器1300中的数据信息,并将该数据信息加载到处理器1100内相应的寄存器中;加载存储单元107也可以根据存储指令将相应寄存器中的数据信息存储到高速缓存器和/或存储器1300中。寄存器例如包括:寄存器堆104中的地址寄存器、步进寄存器以及地址掩码寄存器等。加载存储单元107根据访存指令的虚拟地址访问内存管理单元105,内存管理单元105向加载存储单元107提供转译后获得的访存指令的物理地址,使得加载存储单元107能够根据该物理地址在物理地址空间中存取相应的数据。
在一些实施例中,处理器1100包括物理内存保护单元102。物理内存保护单元102与内存管理单元105进行交互。物理内存保护单元102会存储有若干条权限表项,每条权限表项指定特定地址范围的访问权限(不同的权限表项可指定不同大小的地址范围)。内存管理单元105从指令预取单元106接收预取指令,从加载存储单元(Load/Store Unit,LSU)107接收加载/存储数据指令,并对指令中的虚拟地址转译为物理地址,并据此向物理内存保护单元102获取该物理地址所在的物理页权限,并将得到物理页的访问权限存储到内存管理单元105的缓存表项中,以便于后续接收到的部分预取指令或加载/存储数据指令可从缓存表项中得到对应的访问权限而无需访问物理内存保护单元102。
图3是本发明另一实施例提供的处理器的示意性框图。图3所示的处理器与图2所示的处理器不同之处在于,图3中没有包含内存管理单元105。也就是说,物理内存保护单元102可以与处理器1100中用于预取指令的指令预取单元106和/或用于加载/存储数据的加载存储单元(Load/Store Unit,LSU)107直接通信。同样,物理内存保护单元102会存储有若干条权限表项,每条权限表项指定特定地址范围的访问权限(不同的权限表项可指定不同大小的地址范围)。
指令预取单元106或加载存储单元107向物理内存保护单元102发送预取指令和加载/存储数据指令。物理内存保护单元102根据其存储的权限表项和预取指令和加载/存储数据指令中的物理地址,判断处理器核101是否对该物理地址指定的物理页具有相应的访问权限,如果有,则允许访问相应的物理页,即将相应指令发送给存储器1300,否则不允许访问。
需要说明的是,上文以及图2和图3仅仅用于对系统中的处理器进行示例性的描述,而不用于限制处理器的具体实现方式。处理器还可以包括其它组成部分,例如数据处理单元等;上文描述的处理器1100中的各个部分也可以在实际应用中适当被省略。
地址转译和TLB中的缓存表项
为了更好地管理各个进程所独占的地址空间,电子装置1000可以对一些进程分配独立的虚拟地址空间,并提供虚拟地址到物理地址的映射关系,以将虚拟地址空间映射或解映射到物理地址空间。由于数据在电子装置1000中的传输通常是以页面为单位进行的,因此电子装置和/或电子装置上运行的操作系统通常以页面为单位管理物理地址空间和虚拟地址空间,虚拟地址空间可以大于物理地址空间,即虚拟地址空间中的一个虚拟页面可以被映射到物理地址空间中的一个物理页面,也可以被映射到交换文件中,也可能没有映射内容。
基于上述分页管理机制,虚拟地址空间中各个虚拟页面与物理地址空间中各个物理页面之间的映射关系可以存储为主存中的根页表。根页表一般包括很多表项(Entry),每个表项用于提供一个虚拟页面与相应的物理页面之间的映射关系,从而与该表项匹配的虚拟页面中的虚拟地址可以根据该表项被转译为相应的物理地址。
对于某一个进程,每个虚拟页面对应的虚拟地址范围(可称为虚拟页面的页面尺寸)应当与相应的物理页面的页面尺寸一致,例如但不限于4kB(千字节)、8kB、16kB、64kB等。需要补充的是,对于不同的进程,相应的虚拟页面的页面尺寸可以保持一致,也可以不一致;同样的,对于不同的进程,相应的物理页面的页面尺寸可以保持一致,也可以不一致,不同的实施例有不同的选择。
为了减少内存管理单元105对内存的访问次数、加快地址的转译过程,如图2所示,本公开实施例的内存管理单元105中设置有转译后备缓冲器TLB(也称为快表、旁路转换缓冲器、页表缓冲器等),用于将常用的被访问的表项从内存复制到TLB中,并存储为缓存表项,以对常用的虚拟页面与物理页面之间的映射关系进行高速缓存。只有当TLB中无法查询到与转译请求指定的虚拟地址匹配的缓存表项时,内存管理单元105才会访问内存中的根页表以获得相应的表项;当TLB中存在与转译请求指定的虚拟地址匹配的缓存表项时,内存管理单元105无需访问根页表即可完成地址转译。因此,TLB能够减少内存管理单元访问内存的次数,节省了地址转译所需的时间,提高了处理器性能。
图4示出了实现地址转译的原理示意图。以32位地址(可以指虚拟地址或物理地址)为例,物理地址包括两个部分:物理页面号PFN和页面偏移量PO,虚拟地址包括两个部分:虚拟页面号VPN和页面偏移量PO。物理页面号PFN和虚拟页面号VPN是第12-31位,都是用于指示页号,而页面偏移量PO和页面偏移量PO是第0-11位,用于指示页内地址(即根据页号对应的页内的偏移量)。一个页号实际上对应一个物理块号,12-31位说明有2^20(1Mb)个相对应的物理块号;页内地址是物理块里面的偏移量。假如一个物理块(页面)的大小为4kb,如果只有页号,那么每次读取的只是一个4kb的块,4kb包含的信息有很多啊,不可能直接拿来用,需要再具体一些,所以就有了页内地址,也就是用来存储某一个信息在一个页面里面的地址。由0-11位(2^12)构成的存储空间刚好可以指一个大小为4KB页面的每一个字节(存储容量的基本单位)。此外,由于虚拟地址和物理地址之间的映射可以是页面与页面之间的映射,且虚拟页面与其映射的物理页面的页面尺寸一致,因此虚拟地址与其映射的物理地址具有相同的页内偏移量,因此图4在示例中,物理地址的页面偏移量和虚拟地址的页面偏移量采用同一标记PO表示。
然而需要说明的是,本发明实施例不限于此,虚拟页面或物理页面可以具有其他页面尺寸(例如64kB、32kB等),虚拟地址或物理地址可以为其他格式(例如64位、128位等),且在一些其他的实施例中,虚拟地址(或物理地址)包含的页面号和页内偏移量的高低位置设置和划分方式可以不同。
下面基于图4示例说明地址转译过程。TLB中存储的各个缓存表项的数据结构可以包括:虚拟地址标签Vtag、物理地址标签Ptag以及辅助信息等。
虚拟地址标签Vtag用于判断缓存表项是否与待转译的虚拟地址匹配。基于上面的分析可知,虚拟页面号可以用于识别虚拟页面,因此可以将缓存表项的虚拟地址标签Vtag与该缓存表项映射的虚拟页面的虚拟页面号VPN设置为一致的二进制码,该缓存表项的物理地址标签Ptag与该缓存表项映射的物理页面的物理页面号PFN可以设置为一致的二进制码。
当待转译的虚拟地址的虚拟页面号VPN与该缓存表项的虚拟地址标签Vtag一致时,说明该缓存表项被命中;这种情况下,由于虚拟地址与其映射的物理地址具有相同的页内偏移量PO,因此可以将被命中的缓存表项提供的物理地址标签Ptag(用于替换虚拟地址的虚拟页面号)与待转译的虚拟地址的页内偏移量PO合成为待转译的虚拟地址所映射的物理地址,以完成转译。
对于每个缓存表项来说,其映射的虚拟页面的页面尺寸等于其映射的物理页面的页面尺寸,因此本文将该缓存表项映射的虚拟页面的页面尺寸和物理页面的页面尺寸统称为该缓存表项映射的页面尺寸或页面大小。
为了指示每个缓存表项映射的页面尺寸的大小,缓存表项的辅助信息可以包括尺寸标记位S,尺寸标记位S可以是一位或多位的二进制码。在一些实施例中,每个缓存表项可以映射4kB(2^12)或8kB(2^13)的页面,则可将映射至4kB页面尺寸的缓存表项的尺寸标记位设置为0,将映射至8kB页面尺寸的缓存表项的尺寸标记位设置为1;当某一缓存表项映射的页面尺寸由4kB的页面扩展至8kB时,尺寸标记位可以由0更新为1。需要说明的是,同一个TLB中的各个缓存表项可以分别映射多种页面尺寸,例如第一条缓存表项映射的页面尺寸为4kB,第二条缓存表项映射的页面尺寸为8kB,因此系统设计时,需要根据需求设计缓存表项的尺寸标记位S的位数。
在接收到转译请求之后,可以将待转译的虚拟地址的虚拟页面号VPN与各个缓存表项的虚拟地址标签Vtag进行比较,以查找匹配的缓存表项。尺寸标记位S可以用于指示虚拟地址标签的有效位数(即查找过程中用于与虚拟地址进行比较的位数)。例如,缓存表项E1映射4kB的虚拟页面VP1_4k,假设该缓存表项E1的尺寸标识位S1是0,则说明其包含的虚拟地址标签Vtag1的位数是20,这20位可与待转译的虚拟地址的20位虚拟页面号进行比较,以判断是否匹配。
各个缓存表项的辅助信息可以包括有效位,用于指示各个缓存表项的状态。在一些场景中,例如在执行进程切换或根页表更新的操作之后,缓存表项提供的转译关系可能不再适用于当前的情形,此时相应的缓存表项的有效位可以指示失效状态(例如为无效电平或0),说明该缓存表项无法被用于当前的地址转译过程,可以被替换或覆盖。当缓存表项的有效位指示有效状态(例如为有效电平或1)时,说明该缓存表项可以用于指示该缓存表项是否能够被用于当前的转译过程。在一些实施例中,当多级TLB中仍存在可用于存储缓存表项的空闲存储空间时,该空闲存储空间也可等效为失效状态的缓存表项,其有效位指示失效状态,用于指示该空闲存储空间可用于写入新的缓存表项。
在一些实施例中,内存管理单元105从物理内存保护单元102获取页面的访问权限,并将页面的访问权限存储到内存管理单元105的缓存表项中。因此,缓存表项的辅助信息还可以包括页面的访问权限。
在一些实施例中,缓存表项的辅助信息还可以包括脏位(dirty),用于指示内存中的某个地址空间是否已被修改。脏位也可以是一位或多位的二进制码。
在一些实施例中,缓存表项的辅助信息还可以包括其它指示位,例如用于指示与页面关联的进程标志号以及页面地址属性等。
需要说明的是,虽然在上文的描述中,每个缓存表项的虚拟地址标签、物理地址标签以及辅助信息是按照高位至低位的顺序排列的,然而本发明实施例不限于此。每个缓存表项的虚拟地址标签、物理地址标签以及尺寸标标识、有效位等辅助信息可以按照不同的顺序排列,例如尺寸标记位可以位于缓存表项的最高位以方便识别缓存表项对应的页面尺寸。
图5示出了本公开实施例提供的物理内存保护单元102的示意图。在图4已经说明物理内存保护单元102能够根据TLB中的缓存表项获得待转译的虚拟地址对应的物理地址。而在图3所示的电子装置,在数据传输中使用的访问地址是物理地址,因此不涉及虚拟地址到物理地址的转译操作。但无论何种电子装置,物理内存保护单元102得到的权限请求都包括物理地址和页面尺寸。这里,页面尺寸包括但不限于4kB(千字节)、8kB、16kB、64kB等,但应理解,在一个系统中,不同进程发送给物理内存保护单元的页面尺寸可能不同。
物理内存保护单元102存储有若干条权限表项,所述权限表项表征特定地址范围的访问权限。应理解,权限表项的格式设计有多种形式。例如,可设计一条权限表项包括一起始地址、一结束地址以及一访问权限,即指明从该起始地址到该结束地址之间的地址范围具有该访问权限。再例如,可设计一条权限表项包括一起始地址、一偏移量以及一访问权限,即指明该起始地址到(起始地址+偏移量)之间的地址范围具有该访问权限。
在一些实施例中,如图6所示,物理内存保护单元102设置配置寄存器regcfg和地址寄存器regaddr。配置寄存器regcfg存储的配置项pmpcfg用于指示访问权限以及一些辅助信息,地址寄存器regaddr存储的地址项pmpaddr用于指示地址范围。配置寄存器和地址寄存器可以有多个,但一比一对应设置,一个配置寄存器和一个地址寄存器组成一条权限表项。
下面以RISC-V的PMP为例介绍权限表项。在RISC-V的PMP中,如图上所示,配置项pmpcfg为8比特,地址项pmpaddr为32比特。pmpcfg中的项目R、W、X分别对应读、写、执行权限,为1时有该权限,0时无权限,pmpcfg中的项目A表征地址控制模式,用于指示控制地址范围的方式,A=0表示未启用状态,不匹配任何地址,A不等于零的时候,又分为三种情况:TOR、NA4和NAPOT,其中NA4可以看作时NAPOT的一种特殊情况。以当pmpcfg.A为NAPOT时,从pmpaddr内的地址的低位开始寻找连续1的个数,若pmpaddr值为yyyy...yyy0(y表征16进制字符),即连续1的个数为0,则该条权限表项所控制的地址空间为从yyyy...yyy0开始的8个字节,若pmpaddr值为yyyy...yy01,即连续1的个数为1,则该条权限表项所控制的地址空间为从yyyy...yy00开始的16个字节,若pmpaddr值为y...y01...1,设连续1的个数为n,则该条权限表项所控制的地址空间为从y...y00...0开始的2(n+3)个字节。这种控制地址范围的方式叫做自然对其2指数地址范围(Naturally Aligned Power-of-2regions,NAPOT)。也就是说,NAPOT采用一个基地址加上一个偏移地址的方式来表项权限表项的地址范围。
另一种当pmpcfg.A为TOR,该条权限表项控制的地址范围由前一个地址项pmpaddri-1和当前地址项pmpaddri共同决定:
pmpaddri-1≤y<pmpaddri (公式1)
特别地,若第0个地址表项A字段为TOR,其所控制的地址空间的下界被认为是0,即匹配所有满足如下条件的地址:0≤y<pmpaddr0(公式2)。需要说明的是,虽然上述以RISC-V设计为例说明了PMP中权限表项的设计,然而本发明实施例不限于此。就目前而言,不同指令集架构有不同设计,而且当未来出现更多指令集架构时,也会出现相应更新的关于PMP中的权限表项的设计。
物理内存保护单元102包括控制单元,用于根据输入的页面尺寸和物理地址判断物理页面所在的物理页是否跨区,如果不跨区,则该物理地址查询得到的权限即为该物理地址所在的物理页的权限,如果跨区,则需要重新请求权限。
如果电子装置中包含内存管理单元105,物理内存保护单元102会将是否跨区的指示和权限返回给内存管理单元105。如果不跨区,内存管理单元105将权限存储到TLB的相应缓存表项中并将相应的预取指令或加载/存储数据指令发送给高速缓存器L3或存储器1300执行,如果跨区,内存管理单元105可通知预取指令或加载/存储数据指令重新发送预取指令或加载/存储数据指令,以便于重新发送权限指令,或者由内存管理单元105向物理内存保护单元102重新发送权限请求,重新发送的权限请求依旧包括一个物理地址和一个页面尺寸,该物理地址和之前发送的权限请求中的物理地址相同,但该页面尺寸比之前发送的权限请求中的页面尺寸更小,例如,如果之前发送的权限请求中的页面尺寸为4k,则再次发送的权限请求中的页面尺寸可定为2k,以此类推,直到最终通过这种方式找到合适的页面尺寸,并得到相应的物理页的权限,同样最终得到的权限会存储到TLB的缓存表项中。不同进程使用的页面尺寸可能不同物理地址的页面尺寸为包括但不限于4kB(千字节)、8kB、16kB、64kB等,但是不同进程的物理地址的页面尺寸可能不同。
如果电子装置中不包含内存管理单元105,则由物理内存保护单元102决定是否将相应的预取指令或加载/存储数据指令发送给高速缓存器L3或存储器1300并据此执行,如果跨区,物理内存保护单元102不会将相应的预取指令或加载/存储数据指令发送给高速缓存器L3或存储器1300,并通知指令预取单元106或加载存储单元107。
依旧以RISC-V的PMP为例如何判断物理页面是否跨区。在NAPOT模式下,在一个基地址的基础上加上一个偏移量offset来表示地址范围,则根据编程模型定义,基地址一定是根据offset对齐的,比如offset为2M,则基地址也一定是2M对齐的,因此对于NAPOT模式而言,只需要一条权限表项的偏移量offset大于或者等于输入的页面尺寸,同时权限表项的基地址和输入的物理地址处于同一个4K页面内(地址高位相同),则一定不会跨区,否则如果一条权限表项的偏移量offset小于输入的页面尺寸,同时权限表项的基地址和输入的物理地址处于同一个4K页面内(地址高位相同),则一定跨区。
在TOR模式下,前一个权限表项的地址项为起始地址,当前权限表项的地址项为结束地址,因为如果当前权限表项为4K为非对齐,同时地址项与输入的物理地址处于同一个4K页面内(地址高位相同),则一定跨区,反之如果每个地址项都是TOR模式,且每个地址项4K对齐,则一定不会跨区。
图7示出了本公开实施例提供的物理内存保护单元所实施的权限判断的流程图,包括步骤S701至S706。
步骤S701为接收权限请求,该权限请求可直接来自指令预取单元106或加载存储单元107,例如该权限请求即为指令预取单元106的预取指令,或加载存储单元107的加载/存储数据指令,也可以是指令预取单元106或加载存储单元107先向物理内存保护单元发送权限请求,再发送预取指令或加载/存储数据指令。权限请求包括物理地址和页面尺寸。
步骤S702是将物理地址与各个权限表项进行比较。权限表项用于表征特定地址范围的访问权限,但是不同系统中,权限表项的格式设计不同。因此在作比较时,需要根据具体格式确定比较方法。
步骤S703是根据比较结果判断物理地址与命中的权限表项表示的地址范围是否在同一个物理页中。可选地,根据页面尺寸确定物理地址的高位N个二进制码(例如,页面尺寸为4K,即表示采用32位表征物理地址,则物理地址的前20位为高位二进制码,则N为20),然后判断该二进制码是否与地址范围的高位二进制码相同(依据前例,即将前20位的二进制码进行比较),如果是,则认为两者为同一个物理页,如果否,则说明不会在同一个物理页内,跳转到步骤S706。
步骤S704是判断页面尺寸是否小于或者等于相应权限表项所表征的地址范围的大小。如果是,执行步骤S705,如果否,则执行步骤S706。
步骤S705是从相应的权限表项中获取访问权限,并将访问权限和不会跨区的指示返回。
步骤S706是返回跨区的指示。
在传统方案中,由于物理内存保护单元交互的内存管理单元(Memory ManagementUnit)或其他功能单元采用开始地址和结束地址访问物理内存保护单元,以得到对应地址范围的访问权限。这种方式需要使用起始地址和结束地址访问两次物理内存保护单元,并需要比较结果综合判断起始地址和结束地址之间的地址范围的访问权限。
在本公开实施例中,将物理地址和页面尺寸提供给物理内存保护单元,物理内存保护单元根据对物理地址是否与命中的权限表项在同一个物理页中以及页面尺寸是否小于或者等于相应的权限表项所表征的地址范围的判断,来确定物理地址所在的物理页是否跨区,并在未跨区的情况下得到访问权限,由于在系统中,未跨区的情况占据大多数情况,因此本实施例和传统方案相比,大多数情况下只需要访问一次物理内存保护单元就可以获得物理地址所在的物理页的访问权限(传统方案一般至少需要两次访问),即使有少数情况需要多次访问物理内存保护单元来得到访问权限,但由于这部分情况的占比非常小,因此总体上,本实施例将比传统方案的效率更高。
在一些实施例中,权限表项包括一起始地址、一结束地址以及一访问权限。在另一些实施例中,权限表项包括一起始地址、一偏移量以及一访问权限。
在一些实施例中,权限表项包括配置项和地址项,配置项采用配置寄存器存储,地址项采用地址寄存器存储。配置项不仅指示对相应的地址范围所具有的读取执行等权限,也指定地址控制模式。
在一些实施例中,每个所述配置项与一个地址项对应,每个配置项包含用于表征是否具有读、写和执行的权限的二进制码,每个地址项包含用于表征地址范围的开始地址和偏移量的二进制码。
在一些实施例中,每个配置项与相邻的两个地址项对应,每个配置项包含用于表征是否具有读、写和执行的权限的二进制码,相邻的两个地址项分别包含表征地址范围的开始地址和结束地址的二进制码。
本申请还公开了一种包括存储上述计算机可执行指令的计算机可读存储介质,所述计算机可执行指令在被处理器执行时使得处理器执行本文所述的各实施例的方法。
此外,本申请还公开了一种电子装置,该电子装置包括用于实现本文所述的各实施例的方法的装置。
需要领会,以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本说明书的实施例存在许多变型。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
应该理解,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于装置和系统实施例中描述的方法,所以描述的比较简单,相关之处参见其他实施例的部分说明即可。
应该理解,上述对本说明书特定实施例进行了描述。其它实施例在权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
应该理解,本文用单数形式描述或者在附图中仅显示一个的元件并不代表将该元件的数量限于一个。此外,本文中被描述或示出为分开的模块或元件可被组合为单个模块或元件,且本文中被描述或示出为单个的模块或元件可被拆分为多个模块或元件。
还应理解,本文采用的术语和表述方式只是用于描述,本说明书的一个或多个实施例并不应局限于这些术语和表述。使用这些术语和表述并不意味着排除任何示意和描述(或其中部分)的等效特征,应认识到可能存在的各种修改也应包含在权利要求范围内。其他修改、变化和替换也可能存在。相应的,权利要求应视为覆盖所有这些等效物。