发明内容
有鉴于此,本公开的一个目的是提高不同操作域的进程间通信的效率,降低处理器计算资源和总线带宽的浪费。
第一方面,本公开实施例提供一种存储管理装置,所述存储管理装置位于操作域中,不同所述操作域之间共享物理内存,但对除物理内存外的硬件设备进行独占式访问,包括:
第一级存储管理单元,用于根据与指定的虚拟地址匹配的第一级页表缓存表项,将所述指定的虚拟地址转译到相应的虚拟物理地址,所述第一级页表缓存表项中存储所述操作域中进程经常访问的虚拟地址到虚拟物理地址的映射关系;
第二级存储管理单元,用于根据与所述指定的虚拟物理地址匹配的第二级页表缓存表项,将所述指定的虚拟物理地址转译为物理地址,从而实现所述虚拟地址到所述物理地址的转译,所述第二级页表缓存表项中存储所述操作域中进程经常访问的虚拟地址对应的虚拟物理地址与物理地址之间的映射关系。
可选地,所述第一级存储管理单元包括:
转译后备缓冲器,用于缓存所述操作域中进程经常访问的第一级页表缓存表项;
第一地址转换单元,用于在所述转译后备缓冲器中存储的第一级页表缓存表项命中所述指定的虚拟地址时,根据所述第一级页表缓存表项将所述指定的虚拟地址转译为相应的虚拟物理地址。
可选地,所述第一级存储管理单元还包括:
第一控制单元,与所述第一地址转换单元耦接,用于在所述转译后备缓冲器中缓存的第一级页表缓存表项未命中所述指定的虚拟地址时,从第一级页表中获取匹配的待回填表项,并将所述待回填表项写入所述转译后备缓冲器。
可选地,所述第二级存储管理单元包括:
至少一个组转译后备缓冲器,所述至少一个组转译后备缓冲器与所述操作域中的至少一个硬件设备组相对应,所述硬件设备组共用一组地址域,所述组转译后备缓冲器用于缓存对应的所述硬件设备组经常访问的第二级页表缓存表项;
第二地址转换单元,用于在所述组转译后备缓冲器中存储的第二级页表缓存表项命中所述指定的虚拟物理地址时,根据所述第二级页表缓存表项将所述指定的虚拟物理地址转译为相应的物理地址。
可选地,所述第二级存储管理单元还包括:
操作域转译后备缓冲器,与所述操作域相对应,所述操作域转译后备缓冲器用于缓存所述操作域经常访问的第二级页表缓存表项;
第二控制单元,与所述第二地址转换单元耦接,用于在所述组转译后备缓冲器中缓存的第二级页表缓存表项未命中所述指定的虚拟物理地址时,从所述操作域转译后备缓冲器中获取匹配的待回填表项,并将所述待回填表项写入对应的所述组转译后备缓冲器。
可选地,所述第二控制单元还用于在所述操作域转译后备缓冲器中存储的第二级页表缓存表项未命中所述指定的虚拟物理地址时,从第二级页表中获取匹配的待回填表项,并将所述待回填表项写入所述操作域转译后备缓冲器和/或对应的所述组转译后备缓冲器。
第二方面,本公开实施例提供一种处理器,包括:
高速缓冲存储器;
如上所述的存储管理装置。
第三方面,本公开实施例提供一种计算装置,包括:
如上所述的处理器;以及
存储器,与所述处理器耦接,用于存储第一级页表和第二级页表。
第四方面,本公开实施例提供一种片上系统,包括:
如上所述的处理器;以及
存储器,与所述处理器耦接,用于存储第一级页表和第二级页表。
第五方面,本公开实施例提供一种存储管理方法,包括:
提供第一级存储管理单元,根据与指定的虚拟地址匹配的第一级页表缓存表项,将所述指定的虚拟地址转译到相应的虚拟物理地址,所述第一级页表缓存表项中存储所述操作域中进程经常访问的虚拟地址到虚拟物理地址的映射关系;
提供第二级存储管理单元,用于根据与所述指定的虚拟物理地址匹配的第二级页表缓存表项,将所述指定的虚拟物理地址转译为物理地址,从而实现所述虚拟地址到所述物理地址的转译,所述第二级页表缓存表项中存储所述操作域中进程经常访问的虚拟地址对应的虚拟物理地址与物理地址之间的映射关系;
其中,所述第一级存储管理单元和所述第二级存储管理单元位于所述操作域中,不同所述操作域之间共享物理内存,但对除物理内存外的硬件设备进行独占式访问。
第六方面,本公开实施例提供一种通信方法,所述通信方法应用于不同操作域之间,所述操作域之间共享物理内存,但对除物理内存外的硬件设备进行独占式访问,所述操作域包括如上所述的存储管理装置,包括:
利用所述存储管理装置,根据与所述操作域中的进程指定的虚拟地址匹配的第一级页表缓存表项,将所述指定的虚拟地址转译到相应的虚拟物理地址;
更新所述操作域的第二级页表缓存表项中存储的与所述指定的虚拟物理地址相对应的物理地址为其他操作域中进程所指定的虚拟地址所对应的物理地址;
利用所述存储管理装置,根据与所述指定的虚拟物理地址匹配的第二级页表缓存表项,将所述指定的虚拟物理地址转译为更新的物理地址,从而实现所述虚拟地址到所述更新的物理地址的转译。
可选地,所述操作域包括第一操作域和第二操作域,所述第一操作域的进程指定第一虚拟地址,所述第一操作域的第二级页表缓存表项中存储所述第一虚拟地址对应的第一虚拟物理地址与第一物理地址之间的对应关系,所述第二操作域的进程指定第二虚拟地址,所述第二操作域的第二级页表缓存表项中存储所述第二虚拟地址对应的第二虚拟物理地址与第二物理地址之间的对应关系,
所述更新所述操作域的第二级页表缓存表项中存储的与所述指定的虚拟物理地址相对应的物理地址为其他操作域中进程所指定的虚拟地址所对应的物理地址包括:
将所述第一操作域的第二级页表缓存表项中存储的所述第一物理地址与所述第二操作域的第二级页表缓存表项中存储的所述第二物理地址进行交换。
本公开实施例中,位于不同操作域的存储管理装置包括第一级存储管理单元和第二级存储管理单元,第一级页表缓存表项中存储操作域中进程经常访问的虚拟地址到虚拟物理地址的映射关系,第二级页表缓存表项中存储操作域中进程经常访问的虚拟地址对应的虚拟物理地址与物理地址之间的映射关系,这样,第一级存储管理单元可以根据与指定的虚拟地址匹配的第一级页表缓存表项,将指定的虚拟地址转译到相应的虚拟物理地址,第二级存储管理单元空间可以根据与指定的虚拟物理地址匹配的第二级页表缓存表项,将指定的虚拟物理地址转译为物理地址,从而通过两级地址转译实现虚拟地址到物理地址的转译,这样,在计算机系统的操作域之间共享物理内存但对除物理内存外的硬件设备进行独占式访问的情况下,在不同操作域的进程之间通信(例如数据交换)时,可以通过修改(例如交换)第二级页表缓存表项中存储的与指定的虚拟地址相对应的虚拟物理地址所对应的物理地址,从而将指定的虚拟物理地址转译为更新的物理地址,从而以零拷贝的方式实现不同操作域之间的进程通信,提高了不同操作域的进程间的通信效率,减少了大量处理器计算资源和总线带宽。
具体实施方式
以下基于实施例对本公开进行描述,但是本公开并不仅仅限于这些实施例。在下文对本公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本公开。为了避免混淆本公开的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
在本文中使用以下术语。
计算装置:具有计算或处理能力的设备,它可以体现为终端的形式,如物联网设备、移动终端、桌上电脑、膝上电脑等,也可以体现为服务器或服务器组成集群。在本公开应用的数据中心的环境下,计算装置是数据中心中的服务器。计算装置可以装载一个或多个操作域,例如,装载主机操作域、或除主机操作域外还装载至少一个客户机操作域。每个操作域独立运行在物理硬件之上,为运行在该操作域的对应的应用程序和操作系统提供运行环境。每个操作域中包括至少一个处理器,不同操作域之间共享物理内存,位于不同操作域的处理器对除物理内存外的硬件设备进行独占式访问。
处理器:是一台计算装置的运算核心和控制核心,其功能主要是执行计算机指令以及处理计算机软件中的数据。
存储器:位于计算机装置内,用于存储信息的物理结构。按照用途的不同,存储器可以分为主存储器(也可称为内部存储器,或简称为内存/主存)和辅助存储器(也可称为外部存储器,或简称为辅存/外存)。主存用于存储由数据信号表示的指令信息和/或数据信息,例如用于存放处理器提供的数据,也可用于实现处理器与外存之间的信息交换。外存提供的信息需要被调入主存中才能被处理器访问,因此本文提到的存储器一般是指主存,本文提到的存储设备一般是指外存。
物理地址(Physical Address,简称为PA):地址总线上的地址。处理器或外部设备(例如,输入/输出设备)可以向地址总线提供物理地址以访问主存。物理地址也可称为实际地址、真实地址或绝对地址。
虚拟地址:运行在处理器或外部设备(例如,输入/输出设备)的软件或程序所使用的抽象地址。虚拟地址空间可以大于物理地址空间,虚拟地址可以被映射至对应的物理地址。例如,运行在处理器的软件或程序所使用的抽象地址为第一虚拟地址,运行在外部设备(例如,输入/输出设备)的软件或程序所使用的抽象地址为第二虚拟地址。
虚拟物理地址:运行在操作域的软件或程序所使用的抽象地址,是利用第一级存储管理单元对虚拟地址进行第一级地址转译后得到的抽象地址。利用第二级存储管理单元对虚拟物理地址进行第二级地址转译后可以得到虚拟地址对应的物理地址。
分页(paging)管理机制:将虚拟地址空间划分为多个部分,每部分作为一个虚拟页面,并将物理地址空间划分为多个部分,每部分作为一个物理页面。物理页面也称为物理地址块或物理地址页框(page frame)。将虚拟物理地址空间划分为多个部分,每部分作为一个虚拟物理页面。
第一级页表:用于指定第一虚拟页面和虚拟物理页面之间的对应关系,通常被存储在主存中。第一级页表中包括多个表项,每个表项分别用于指定第一虚拟页面到虚拟物理页面的映射关系以及一些管理标志,从而可以用于将第一虚拟页面中的第一虚拟地址转译为相应的虚拟物理地址。第一级页表可以是一级页表,也可以多级页表,例如,二级页表,包括第一页目录表和第一页表。第一页目录表又称为第一外层页表或第一顶层页表,用于指定第一虚拟页面和第一页表之间的对应关系。第一页目录表中包括多个表项,每个表项分别用于指定第一虚拟页面到第一页表的映射关系以及一些管理标志,从而可以用于将第一虚拟页面中的第一虚拟地址转译为相应的第一页表号。第一页表用于指定第一页表的第一页表号和虚拟物理页面之间的对应关系。第一页表中包括多个表项,每个表项分别用于指定第一页表的第一页表号到虚拟物理页面的映射关系以及一些管理标志,从而可以用于将第一页表的第一页表号转译为相应虚拟物理页面中的虚拟物理地址。
第二级页表:用于指定虚拟物理页面和物理页面之间的对应关系,通常被存储在主存中。第二级页表中包括多个表项,每个表项分别用于指定虚拟物理页面到物理页面的映射关系以及一些管理标志,从而可以用于将虚拟物理页面中的虚拟物理地址转译为相应的物理地址。第二级页表可以是一级页表,也可以是多级页表,例如,二级页表,包括第二页目录表和第二页表。第二页目录表又称为第二外层页表或第二顶层页表,用于指定虚拟物理页面和第二页表之间的对应关系,通常被存储在主存中。第二页目录表中包括多个表项,每个表项分别用于指定虚拟物理页面到第二页表的映射关系以及一些管理标志,从而可以用于将虚拟物理页面中的虚拟物理地址转译为相应的第二页表号。第二页表用于指定第二页表的第二页表号和物理页面之间的对应关系,通常被存储在主存中。第二页表中包括多个表项,每个表项分别用于指定第二页表的第二页表号到物理页面的映射关系以及一些管理标志,从而可以用于将第二页表的第二页表号转译为相应物理页面中的物理地址。
第一级页表缓存表项:第一级页表中的一些可能常用的表项可以被缓存在转译后备缓冲器中,以便于在地址转译过程中被调用,从而加快地址转译过程。为了与第一级页表中的表项作区分,后文将存储于转译后备缓冲器中的表项简称为第一级页表缓存表项。
第二级页表缓存表项:第二级页表中的一些可能常用的表项可以被缓存在转译后备缓冲器中,以便于在地址转译过程中被调用,从而加快地址转译过程。为了与第二级页表中的表项作区分,后文将存储于转译后备缓冲器中的表项简称为第二级页表缓存表项。
本公开的应用环境
本公开实施例提出了一种存储管理方案。整个存储管理方案相对较为通用,可以用于共享物理内存但除物理内存外其他物理硬件隔离的各种硬件设备,例如,用于数据中心、用于AI(人工智能)加速单元,用于GPU(图形处理单元),用于能执行深度学习模型的IOT(物联网)设备,嵌入式设备等。存储管理方案与执行该方案的计算装置最终部署在的硬件无关。但为了示例性描述,下文中将主要以数据中心为应用场景进行描述。本领域技术人员应当理解,本公开实施例还可以适用于其它的应用场景。
数据中心
数据中心是全球协作的特定设备网络,用来在互联网网络基础设施上传递、加速、展示、计算、存储数据信息。在今后的发展中,数据中心也将会成为企业竞争的资产。随着数据中心应用的广泛化,人工智能等越来越多地应用到数据中心。而神经网络作为人工智能的重要技术,已经大量应用到数据中心大数据分析运算中。
在传统的大型数据中心,网络结构通常如图1所示,即互连网络模型(hierarchical inter-networking model)。这个模型包含了以下部分:
服务器140:各服务器140是数据中心的处理和存储实体,数据中心中大量数据的处理和存储都是由这些服务器140完成的。
接入交换机130:接入交换机130是用来让服务器140接入到数据中心中的交换机。一台接入交换机130接入多台服务器140。接入交换机130通常位于机架顶部,所以它们也被称为机顶(Top of Rack)交换机,它们物理连接服务器。
汇聚交换机120:每台汇聚交换机120连接多台接入交换机130,同时提供其他的服务,例如防火墙,入侵检测,网络分析等。
核心交换机110:核心交换机110为进出数据中心的包提供高速的转发,为汇聚交换机120提供连接性。整个数据中心的网络分为L3层路由网络和L2层路由网络,核心交换机110为通常为整个数据中心的网络提供一个弹性的L3层路由网络。
通常情况下,汇聚交换机120是L2和L3层路由网络的分界点,汇聚交换机120以下的是L2网络,以上是L3网络。每组汇聚交换机管理一个传送点(POD,Point Of Delivery),每个POD内都是独立的VLAN网络。服务器在POD内迁移不必修改IP地址和默认网关,因为一个POD对应一个L2广播域。
汇聚交换机120和接入交换机130之间通常使用生成树协议(STP,Spanning TreeProtocol)。STP使得对于一个VLAN网络只有一个汇聚层交换机120可用,其他的汇聚交换机120在出现故障时才被使用(上图中的虚线)。也就是说,在汇聚交换机120的层面,做不到水平扩展,因为就算加入多个汇聚交换机120,仍然只有一个在工作。
计算装置
由于服务器140才是数据中心真实的处理设备,图2示出了本公开一个实施例的服务器140(计算装置141或片上系统142)的内部结构图。计算装置141可以包括多个处理器22。作为一种示例,如图2所示,计算装置141可以包括处理器0、处理器1、处理器2和处理器3,但应当理解,处理器22的数量不应以此为限。
如图2所示,计算装置141还可以包括存储器29。计算装置141中的存储器29可以是主存储器(简称为主存或内存),用于存储由数据信号表示的指令信息和/或数据信息,例如存放处理器22提供的数据(例如为运算结果),也可以用于实现处理器22与外部存储设备27(或称为辅助存储器或外部存储器)之间的数据交换。
在一些情形下,处理器22可能需要访问存储器29,以获取存储器29中的数据或对存储器29中的数据进行修改。由于存储器29的访问速度较慢,为了缓解处理器22与存储器29之间的速度差距,计算装置141还包括与总线21耦合的高速缓冲存储器28,高速缓冲存储器28用于对存储器29中的一些可能会被反复调用的程序数据或者报文数据等数据进行缓存。高速缓冲存储器28例如由静态随机存储器(Static Random Access Memory,简称为SRAM)等类型的存储装置实现。高速缓冲存储器28可以为多级结构,例如具有一级缓存(L1Cache)、二级缓存(L2 Cache)和三级缓存(L3 Cache)的三级缓存结构,也可以是三级以上的缓存结构或其他类型缓存结构。在一些实施例中,高速缓冲存储器28的一部分(例如一级缓存,或一级缓存和二级缓存)可以集成在处理器22内部或与处理器22集成于同一片上系统中。
存储器29和高速缓冲存储器28之间的信息交互通常按块来组织。在一些实施例中,高速缓冲存储器28和存储器29可以按照相同的空间尺寸被划分成数据块,数据块可以作为高速缓冲存储器28和存储器29之间的数据交换的最小单位(包括预设长度的一个或多个数据)。为了表述简洁清晰,下面将高速缓冲存储器28中的各个数据块简称为缓存块(可以称为cacheline或高速缓存线),且不同的缓存块具有不同的缓存块地址;将存储器29中的各个数据块简称为内存块,且不同的内存块具有不同的内存块地址。缓存块地址例如包括用于定位数据块的物理地址标签。
由于受到空间和资源的限制,高速缓冲存储器28无法对存储器29中的全部内容都进行缓存,即高速缓冲存储器28的存储容量通常小于存储器29,高速缓冲存储器28提供的各个缓存块地址无法对应存储器29提供的全部内存块地址。处理器22在需要访问内存时,首先经总线21访问高速缓冲存储器28,以判断所要访问的内容是否已被存储于高速缓冲存储器28中,如果是,则高速缓冲存储器28命中,此时处理器22直接从高速缓冲存储器28中调用所要访问的内容;如果处理器22需要访问的内容不在高速缓冲存储器28中,则处理器22需要经总线21访问存储器29,以在存储器29中查找相应的信息。因为高速缓冲存储器28的存取速率非常快,因此当高速缓冲存储器28命中时,处理器22的效率可以显著提高,进而也使整个计算装置141的性能和效率得以提升。
如图上所示,处理器22、高速缓冲存储器28和存储器29封装在片上系统(SoC)201中。设计人员可以对SoC架构进行配置从而使得计算装置141中的各个元件之间的通信是安全的。
此外,计算装置141还可以包括存储设备27、显示设备(未示出)、音频设备(未示出)、输入/输出设备25等硬件设备。输入/输出设备25例如可以为文字、音频和视频的输入/输出设备。作为一种示例,图2示出了输入/输出设备0、输入/输出设备1、输入/输出设备2和输入/输出设备3,但应理解,输入/输出设备的数量不应以此为限。存储设备例如是通过相应接口与总线21耦合的硬盘、光盘以及闪存等用于信息存取的设备。显示设备例如经相应的显卡与总线21耦合,用于根据总线21提供的显示信号进行显示。计算装置141通常还包括通信设备(未示出),因此可以通过各种方式与网络或其他设备通信。通信设备例如可以包括一种或多种通信模块,作为示例,通信设备可以包括适用于特定的无线通信协议的无线通信模块。例如,通信设备可以包括WLAN模块,用于实现符合电气和电子工程师协会(IEEE)制定的802.11标准的Wi-FiTM通信;通信设备也可以包括WWAN模块,用于实现符合蜂窝或其他无线广域协议的无线广域通信;通信设备还可以包括蓝牙模块等采用其它协议的通信模块,或其它自定义类型的通信模块;通信设备也可以是用于串行传输数据的端口。
在本例中,计算装置141还可以包括各种软件,图上示出了主机操作系统202、客户机操作系统203、安全监视器(Secure Monitor)204、应用程序205、加载器206和操作域监视器207。这些软件可以固化在存储器29中,也可以存储在外部存储器27中。通常情况,操作域监视器207、加载器206、主机操作系统202和安全监视器204固化在存储器29中,客户机操作系统203和应用程序205可以存储在外部存储器27中。
在一些实施例中,如图2所示,在底层硬件(即片上系统201)之上设置有操作域监视器207,操作域监视器207可以以用户程序的形态运行在物理硬件上。在操作域监视器207之上可以装载一个或多个操作域26,例如,主机操作域0、客户机操作域1和客户机操作域2。每个操作域26独立运行在物理硬件之上,为对应的应用程序和操作系统提供运行环境。每个操作域26中包括至少一个处理器22,不同操作域26之间共享物理内存,位于不同操作域26的处理器22对除物理内存外的硬件设备进行独占式访问。作为一种示例,如图2所示,主机操作域0的处理器0对输入/输出设备0进行独占式访问,客户机操作域1的处理器1对输入/输出设备1进行独占式访问,客户机操作域2的处理器2和处理器3对输入/输出设备2和输入/输出设备3进行独占式访问。操作域监视器207是支撑计算装置141的核心,能够为不同操作域26提供物理内存管理和调度,在操作域26启动(即位于该操作域26的处理器22启动)时,为该操作域26分配物理内存空间,当操作域26退出运行(即位于该操作域26的处理器22退出运行)时,释放该操作域26的物理内存空间,从而使得不同操作域26可以分时共享物理内存。在一些实施例中,如图2所示,在计算装置141上电或重启后,整个计算装置141均处于主机操作域0,主机操作域0享有整个内存空间。当客户机操作域1和/或客户机操作域2启动时,可以创建命令,以指示归入操作域26的处理器22、以及除物理内存外的硬件设备,还指示分配给操作域26的物理内存空间,然后基于安全监视器204可以将操作域26对于除物理内存外的硬件设备的独占式访问的权限数据写入存储器29,基于操作域监视器207可以为操作域26分配第一级存储管理单元(图中未示出)和第二级存储管理单元23,以及在第一级存储管理单元和第二级存储管理单元23的寄存器中写入地址转译数据。当客户机操作域1或客户机操作域2退出运行时,可以基于安全监视器204清空存储器29中对应的权限数据,基于操作域监视器207回收对应的第一级存储管理单元和第二级存储管理单元23。另外,操作域监视器207甚至可以模拟实现某些硬件功能。
在一些实施例中,主机操作系统202和客户机操作系统203工作在不同的操作域26,主机操作系统202位于主机操作域,客户机操作系统203位于客户机操作域,主机操作系统202对客户机操作系统203进行管理,主要负责客户机操作系统203的启动和注销等。主机操作系统202不参与客户机操作系统203对物理资源的访问、通信等。主机操作系统202和客户机操作系统203之间共享地址总线、数据总线以及控制总线等系统总线。主机操作系统202和客户机操作系统203之间以及不同客户机操作系统203之间的通信由内部通信机制(例如,Virtio,其是一种半虚拟化的设备抽象接口规范)实现。
在一些情况下,加载器206和主机操作系统202也可以合二为一。对于这些软件,可以配置加载器206用于核实并将各种软件加载到高速缓冲存储器28中。加载器206自身可以是用安全方式进行加载的软件。可以将片上系统201配置为在系统上电或重置后立即或很快从存储器29检索得到加载器206,然后可以基于配置信息确定将哪些软件进行加载,进而根据对于这些软件的核实结果将相应软件加载到高速缓冲存储器28中,例如基于软件来源、指纹、证书等决定是否加载某个软件。一部分应用程序205可以独立于主机操作系统202,并由加载器206加载,另一部分应用程序205可以依赖于主机操作系统202,由主机操作系统202加载并控制其运行。例如安全监视器204可以作为不依赖于主机操作系统202独立存在的应用程序。应用程序205可以包括且不限于用于控制或响应外部设备(例如,生物识别传感器、打印机、麦克风、扬声器、流阀、或其他I/O部件、传感器、致动器、或设备)的程序、用于各种I/O任务的程序、安全性程序、证实程序、各种计算模块、通信程序、通信支持协议、或其他程序、或其组合。
在一种实施方式中,主机操作系统202可以根据系统环境决定何时加载以及执行安全监视器204。在另一种实施方式中,在系统上电初始化阶段,加载器206根据配置信息加载并执行安全监视器204。安全监视器204可以根据应用程序配置表在存储器29写入权限数据。应用程序配置表可以包括每个应用程序所用到的除物理内存外的硬件设备信息,还包括对于除物理内存外的硬件设备的独占式访问需求。该应用程序配置表可以根据应用程序的编译信息制作并存储在特定位置(例如存储器29中)。权限数据包括各个操作域26对除物理内存外的硬件设备的独占式访问的权限。在一些实施例中,客户机操作域1和/或客户机操作域2启动时,主机操作系统202根据权限数据为客户机操作域1和/或客户机操作域2分配独占使用的硬件设备。
在一些实施例中,计算装置141还包括第一级存储管理单元(Memory ManagementUnit,MMU)(图中未示出)。第一级存储管理单元可位于不同操作域26的处理器22内,也可位于不同操作域26的处理器22外,第一级存储管理单元用于实现第一虚拟地址到相应的虚拟物理地址的转译。在一些实施例中,计算装置141还包括第二级存储管理单元23,第二级存储管理单元23可位于不同操作域26的处理器22外,也可位于不同操作域26的处理器22内。作为一种示例,如图2所示,第二级存储管理单元0位于主机操作域0的处理器22外,第二级存储管理单元1位于客户机操作域1的处理器22外,第二级存储管理单元2位于客户机操作域2的处理器22外。第二级存储管理单元23用于实现虚拟物理地址到相应物理地址的转译。由于利用第二级存储管理单元23和第一级存储管理单元实现两级地址转译的过程将在下文中详述,故不再赘述。
在一些实施例中,计算装置141还可以包括输入/输出存储管理单元24,输入/输出存储管理单元24与处理器22、高速缓冲存储器28和存储器29一起封装在片上系统(SoC)201中。
输入/输出存储管理单元24用于实现第二虚拟地址到物理地址的转译。第二虚拟地址空间中各个第二虚拟页面与物理地址空间中各个物理页面之间的映射关系可以存储为主存中的页表,该页表一般包括很多表项,每个表项用于提供一个第二虚拟页面与相应的物理页面之间的映射关系,从而与该表项匹配的第二虚拟页面中的第二虚拟地址可以根据该表项被转译为相应的物理地址。在一些实施例中,应用程序205等主体在运行过程中可能会触发其所运行的输入/输出设备25发送内存访问请求,相应的,输入/输出存储管理单元24根据内存访问请求的第二虚拟地址转译得到对应的物理地址,访问物理地址,以从物理内存中读取或写入数据。
当然,不同的计算机系统根据主板、操作系统和指令集架构的不同,其结构也可能有所变化。
处理器
图3是本公开一个实施例的处理器22的示意性框图。
在一些实施例中,每个处理器22可以包括用于处理指令的一个或多个处理器核228,指令的处理和执行是可以被用户(例如通过应用程序)和/或系统平台控制的。在一些实施例中,每个处理器核可以用于处理特定的指令集。在一些实施例中,指令集可以支持复杂指令集计算(Complex Instruction Set Computing,CISC)、精简指令集计算(ReducedInstruction Set Computing,RISC)或基于超长指令字(Very Long Instruction Word,VLIW)的计算。不同的处理器核228可以各自处理不同的指令集。在一些实施例中,处理器核228还可以包括其他处理模块,例如数字信号处理器(Digital Signal Processor,DSP)等。作为一种示例,图2中示出了处理器核1至m,m是非0的自然数。
在一些实施例中,如图2所示,处理器22可以包括高速缓冲存储器28,且根据不同架构,处理器22中的高速缓冲存储器28可以是位于各个处理器核228之内和/或之外的单个或多级的内部高速缓冲存储器28(如图2示出的3级高速缓冲存储器L1至L3),也可以包括面向指令的指令高速缓存和面向数据的数据高速缓存。在一些实施例中,处理器22中的各个部件可以共享至少一部分的高速缓冲存储器28,如图2所示,处理器核1至m例如共用第三级高速缓冲存储器L3。处理器22还可以包括外部高速缓存(未示出),其他高速缓存结构也可以作为处理器22的外部高速缓存。
在一些实施例中,如图2所示,处理器22可以包括寄存器堆227(Register File),寄存器堆227可以包括用于存储不同类型的数据和/或指令的多个寄存器,这些寄存器可以是不同类型的。例如,寄存器堆227可以包括:整数寄存器、浮点寄存器、状态寄存器、指令寄存器和指针寄存器等。寄存器堆227中的寄存器可以选用通用寄存器来实现,也可以根据处理器22的实际需求采用特定的设计。
在一些实施例中,处理器22可以包括第一级存储管理单元222。第一级存储管理单元222中存储了多个第一级页表缓存表项,用于实现第一虚拟页面中的第一虚拟地址到相应的虚拟物理地址的转译。每个处理器核228中可以设置一个或多个第一级存储管理单元222,不同处理器核228中的第一级存储管理单元222也可以与位于其他处理器或处理器核中的第一级存储管理单元222实现同步,使得每个处理器或处理器核可以共享统一的虚拟存储系统。
在一些实施例中,内部互连结构用于将第一级存储管理单元222经由片上系统的内部总线与其他处理器核交互,或直接与片上系统内的其他模块相连以实现信号交换。
第一级存储管理单元222可以与处理器22中用于预取指令的指令预取单元224和/或用于加载/存储数据的加载存储单元(Load/Store Unit,LSU)225进行通信。
指令预取单元224使用预取指令的第一虚拟地址访问第一级存储管理单元222,用以转译预取指令的第一虚拟地址相应的虚拟物理地址,且第一级存储管理单元222使用虚拟物理地址访问第二级存储管理单元23,用以转译物理地址,指令预取单元224根据第二级存储管理单元23转译生成的物理地址,在物理地址空间中进行寻址以获得相应的指令。处理器核228中的执行单元可以接收指令预取单元224获取的指令,并对该指令进行处理(例如解码),使得该指令能够被执行。
加载存储单元225是一种面向访存指令(加载指令或存储指令)的指令执行单元。加载存储单元225可以用于根据加载指令获取高速缓冲存储器28和/或存储器29中的数据信息,并将该数据信息加载到处理器22内相应的寄存器中;加载存储单元225也可以根据存储指令将相应寄存器中的数据信息存储到高速缓冲存储器28和/或存储器29中。寄存器例如包括:寄存器堆227中的地址寄存器、步进寄存器以及地址掩码寄存器等。加载存储单元225根据访存指令的第一虚拟地址访问第一级存储管理单元222,用以转译访存指令的第一虚拟地址相应的虚拟物理地址,第一级存储管理单元222使用虚拟物理地址访问第二级存储管理单元23,用以转译物理地址,加载存储单元225接收第二级存储管理单元23转译生成的访存指令的物理地址,使得加载存储单元225能够根据该物理地址在物理地址空间中存取相应的数据。
需要说明的是,上文以及图2仅仅用于对系统中的处理器之一进行示例性的描述,而不用于限制处理器22的具体实现方式。处理器22还可以包括其它组成部分,例如数据处理单元等;上文描述的处理器22中的各个部分也可以在实际应用中适当被省略。
存储管理单元
存储管理单元在一些情况下也可以被称为内存管理单元,可以是由硬件和/或软件实现的存储管理装置。
为了更好地管理各个进程所独占的地址空间,计算装置141可以对一些进程分配独立的虚拟地址空间,并提供虚拟地址到物理地址的映射关系,以将虚拟地址空间映射或解映射到物理地址空间。由于数据在计算装置141中的传输通常是以页面为单位进行的,因此计算机系统和/或计算机系统上运行的操作系统通常以页面为单位管理物理地址空间和虚拟地址空间,虚拟地址空间可以大于物理地址空间,即虚拟地址空间中的一个虚拟页面可以被映射到物理地址空间中的一个物理页面,也可以被映射到交换文件中,也可能没有映射内容。
基于上述分页管理机制,第一虚拟地址空间中各个第一虚拟页面与各个虚拟物理页面之间的映射关系可以存储为主存中的第一级页表。第一级页表一般包括很多表项(Entry),每个表项用于提供一个第一虚拟页面与相应的虚拟物理页面之间的映射关系,从而与该表项匹配的第一虚拟页面中的第一虚拟地址可以根据该表项被转译为相应的虚拟物理地址。虚拟物理页面与物理地址空间中各个物理页面之间的映射关系可以存储为主存中的第二级页表。第二级页表一般包括很多表项,每个表项用于提供一个虚拟物理页面与相应的物理页面之间的映射关系,从而与该表项匹配的虚拟物理地址可以根据该表项被转译为相应的物理地址。由此,经过第一级页表和第二级页表的两级转译过程,第一虚拟页面中的第一虚拟地址被转译为相应的物理页面的物理地址。
对于某一个进程,每个第一虚拟页面对应的虚拟地址范围(可称为虚拟页面的页面尺寸)应当与相应的虚拟物理页面和物理页面的页面尺寸一致,例如但不限于4kB(千字节)、8kB、16kB、64kB等。需要补充的是,对于不同的进程,相应的第一虚拟页面的页面尺寸可以保持一致,也可以不一致;同样的,对于不同的进程,相应的虚拟物理页面和物理页面的页面尺寸可以保持一致,也可以不一致,不同的实施例有不同的选择。
为了减少存储管理单元对内存的访问次数、加快地址的转译过程,本公开实施例的第一级存储管理单元222和第二级存储管理单元23中可以设置有至少一个转译后备缓冲器TLB(也称为快表、旁路转换缓冲器、页表缓冲器等)。
图4示出了本公开一个实施例的第一级存储管理单元的示意性框图。如图4所示,第一级存储管理单元222包括:地址转换单元41、控制单元42和转译后备缓冲器TLB43。在一些实施例中,转译后备缓冲器TLB43用于将可能被操作域中进程经常访问的第一级页表中的表项从内存复制到转译后备缓冲器TLB43中,并存储为第一级页表缓存表项,以对常用的第一虚拟页面与虚拟物理页面之间的映射关系进行高速缓存。转译后备缓冲器TLB43可以是指令TLB和/或数据TLB,也可以是多级TLB。地址转换单元41用于根据虚拟地址转译请求在转译后备缓冲器TLB43中查找相应的第一级页表缓存表项,并根据该第一级页表缓存表项将指定的第一虚拟地址转译为虚拟物理地址;当地址转换单元41没有在转译后备缓冲器TLB43中查找到与待转译的第一虚拟地址匹配的第一级页表缓存表项时,可以向控制单元42传输失配信息,控制单元42根据该失配信息从第一级页表中获取匹配的待回填表项,并将该待回填表项写入转译后备缓冲器TLB43中,使得转译后备缓冲器TLB43能够命中;随后,地址转换单元41可以根据匹配的第一级页表缓存表项将待转译的第一虚拟地址转换为虚拟物理地址。只有当转译后备缓冲器TLB43中无法查询到与指定的第一虚拟地址匹配的第一级页表缓存表项时,第一级存储管理单元222才会访问内存中的第一级页表以获得相应的表项;当转译后备缓冲器TLB43中存在与指定的第一虚拟地址匹配的第一级页表缓存表项时,第一级存储管理单元222无需访问第一级页表即可完成第一虚拟地址到虚拟物理地址的转译。因此,减少了第一级存储管理单元222访问内存的次数,从而节省了地址转译所需的时间,提高了处理器性能。
需要说明的是,上文以及图4仅仅用于对第一级存储管理单元之一进行示例性的描述,而不用于限制第一级存储管理单元的具体实现方式。
图5示出了本公开一个实施例的第二级存储管理单元的示意性框图。如图5所示,第二级存储管理单元23包括地址转换单元51、控制单元52、至少一个组转译后备缓冲器GTLB53和操作域转译后备缓冲器jTLB54。作为一种示例,图5中示出了GTLB1至GTLBn,n为正整数。
在一些实施例中,操作域26独占式访问的除物理内存外的硬件设备可以分为至少一个硬件设备组(例如,操作域26中的硬件设备组与处理器22对应),每个硬件设备组共用一组地址域,组转译后备缓冲器GTLB53用于翻译一个硬件设备组的虚拟物理地址。作为一种示例,操作域26独占式访问的除物理内存外的硬件设备可以分为n个硬件设备组(即,硬件设备组1至n),n个硬件设备组与n个组转译后备缓冲器GTLB53相对应。在一些实施例中,组转译后备缓冲器GTLB53用于将可能被对应的硬件设备组访问的第二级页表中的表项从内存复制到组转译后备缓冲器GTLB53中,并存储为第二级页表缓存表项,以对对应的硬件设备组常用的虚拟物理页面与物理页面之间的映射关系进行高速缓存。在一些实施例中,操作域转译后备缓冲器jTLB54用于将可能被操作域26访问的第二级页表中的表项从内存复制到操作域转译后备缓冲器jTLB54中,并存储为第二级页表缓存表项,以对操作域26常用的虚拟物理页面与物理页面之间的映射关系进行高速缓存。在一些实施例中,在每个操作域26的第二级存储管理单元23中,至少一个组转译后备缓冲器GTLB53中缓存的第二级页表缓存表项均缓存在操作域转译后备缓冲器jTLB54中,与至少一个组转译后备缓冲器GTLB53中缓存的第二级页表缓存表项相比,操作域转译后备缓冲器jTLB54中缓存更多的第二级页表缓存表项。组转译后备缓冲器GTLB53和操作域转译后备缓冲器jTLB54可以是指令TLB和/或数据TLB,也可以是多级TLB。
在一些实施例中,地址转换单元51用于根据硬件设备组对应的虚拟物理地址转译请求在对应的组转译后备缓冲器GTLB53中查找相应的第二级页表缓存表项,并根据该第二级页表缓存表项将指定的虚拟物理地址转译为物理页面;例如,地址转换单元51根据硬件设备组2对应的虚拟物理地址转译请求在组转译后备缓冲器GTLB2中查找相应的第二级页表缓存表项,并根据该第二级页表缓存表项将指定的虚拟物理地址2转译为物理页面。当地址转换单元51没有在组转译后备缓冲器GTLB53中查找到与待转译的虚拟物理地址匹配的第二级页表缓存表项时,可以向控制单元52传输第一失配信息,控制单元52根据该第一失配信息从操作域转译后备缓冲器jTLB54中获取匹配的待回填表项,并将该待回填表项写入组转译后备缓冲器GTLB53中,使得组转译后备缓冲器GTLB53能够命中;随后,地址转换单元51可以根据匹配的第二页表缓存表项将待转译的虚拟物理地址转换为物理地址。当控制单元52根据该第一失配信息没有从操作域转译后备缓冲器jTLB54中获取到匹配的待回填表项时,地址转换单元51可以向控制单元52传输第二失配信息,控制单元52根据该第二失配信息从第二级页表中获取匹配的待回填表项,并将该待回填表项写入操作域转译后备缓冲器jTLB54和/或组转译后备缓冲器GTLB53中,使得组转译后备缓冲器GTLB53能够命中;随后,地址转换单元51可以根据匹配的第二级页表缓存表项将待转译的虚拟物理地址转换为物理地址。
只有当组转译后备缓冲器GTLB53中无法查询到与指定的虚拟物理地址匹配的第二级页表缓存表项时,第二级存储管理单元23才会访问操作域转译后备缓冲器jTLB54中的第二级页表缓存表项以获得相应的表项;当组转译后备缓冲器GTLB53中存在与指定的虚拟物理地址匹配的第二级页表缓存表项时,第二级存储管理单元23无需访问操作域转译后备缓冲器jTLB54即可完成虚拟物理地址到物理地址的转译。与操作域转译后备缓冲器jTLB54相比,组转译后备缓冲器GTLB53存储较少的第二级页表缓存表项,组转译后备缓冲器GTLB53命中,则可以明显减少需要与指定的虚拟物理地址进行匹配比较的第二级页表缓存表项的数量,从而减少地址转译过程中查找第二级页表缓存表项所需要的时间,使得处理器的效率、频率和性能可以被提升、降低了地址转译过程产生的功耗。
只有当操作域转译后备缓冲器jTLB54中无法查询到与指定的虚拟物理地址匹配的第二级页表缓存表项时,第二级存储管理单元23才会访问内存中的第二级页表以获得相应的表项;当操作域转译后备缓冲器jTLB54中存在与指定的虚拟物理地址匹配的第二级页表缓存表项时,第二级存储管理单元23无需访问第二级页表即可完成虚拟物理地址到物理地址的转译。因此,减少了第二级存储管理单元23访问内存的次数,从而节省了地址转译所需的时间,提高了处理器性能。
在一些实施例中,当第二级存储管理单元23中的组转译后备缓冲器GTLB53均未命中且操作域转译后备缓冲器jTLB54命中时,控制单元52还可以根据组转译后备缓冲器GTLB53中各个第二级页表缓存表项被使用的频率选择被替换的一个缓存表项,例如采用LRU(Least Recently Used,最近最少使用)算法替换最近最久未使用的组转译后备缓冲器GTLB53中的一个第二级页表缓存表项,使用命中的操作域转译后备缓冲器jTLB54中的缓存表项替换选定的缓存表项。
在一些实施例中,当第二级存储管理单元23中的组转译后备缓冲器GTLB53均未命中且操作域转译后备缓冲器jTLB54也未命中时,控制单元52还可以分别根据操作域转译后备缓冲器jTLB54中各个第二级页表缓存表项被使用的频率选择被替换的一个缓存表项,例如采用LRU(Least Recently Used,最近最少使用)算法替换最近最久未使用的操作域转译后备缓冲器jTLB54中的一个缓存表项,使用第二页表中的命中的缓存表项替换选定的缓存表项。
在一些实施例中,当第二级存储管理单元23中的组转译后备缓冲器GTLB53和操作域转译后备缓冲器jTLB54均未命中且内存中存储的第二级页表也未命中时,控制单元52可以通知主机操作系统202发生页面访问错误。主机操作系统202可以调用相应的系统操作函数,判断待转译的第一虚拟地址是否是有效地址。如果是有效地址,则将该第一虚拟地址的虚拟页面对应的物理页面读入内存中,并在第一级页表中写入该第一虚拟地址的虚拟页面与虚拟物理页面的映射关系,在第二级页表中写入该虚拟物理页面与物理页面的映射关系,使得处理器22可以从发生页面访问错误的位置重新开始运行。如果是无效地址,则主机操作系统202终止此次页面访问。在一些实施例中,当将该第一虚拟地址的虚拟页面对应的物理页面读入内存中时,如果内存中没有空闲的物理页面,则主机操作系统202调用相应的系统操作函数,选择替换最近最久未使用的内存中的一个物理页面,使用该第一虚拟地址的虚拟页面对应的物理页面替换选定的物理页面。如果被替换出的物理页面没有被修改过,则删除该物理页面;如果被替换出的物理页面被修改过,则将该物理页面写回辅存。
需要说明的是,在一些实施例中,上文以及图5所示的器件结构也适用于本公开实施例的第一级存储管理单元222和I/O存储管理单元24。
本实施例将以全关联(Full Associative)方式为例描述第一虚拟地址与缓存表项(第一级页表缓存表项和第二级页表缓存表项)的映射方式。然而本发明实施例不限于此,在一些其他的实施例中,第一虚拟地址与缓存表项的映射方式还可以为:直接映射方式、分组关联(Set Associative)方式或其他映射方式。
图6示出了采用第一级存储管理单元和第二级存储管理单元实现地址转译的原理示意图。在一些实施例中,第一级页表和第二级页表均为二级页表,指定的第一虚拟地址可以通过与之匹配的第一页目录缓存表项被转译为相应的第一页表的第一页表号,而该第一页表号可以通过与之匹配的第一页表缓存表项被转译为相应的虚拟物理地址。指定的虚拟物理地址可以通过与之匹配的第二页目录缓存表项被转译为相应的第二页表的第二页表号,而该第二页表号可以通过与之匹配的第二页表缓存表项被转译为相应的物理地址。在一些实施例中,如图6所示,第一页目录缓存表项的数据结构可以包括:页目录标签1、页表始地址1以及辅助信息等。第一页表缓存表项的数据结构可以包括:页表号1、物理页面标签1以及辅助信息等。第二页目录缓存表项的数据结构可以包括:页目录标签2、页表始地址2以及辅助信息等。第二页表缓存表项的数据结构可以包括:页表号2、物理页面标签2以及辅助信息等。在一些实施例中,辅助信息包括缓存表项映射的页面的尺寸标记位、指示各个缓存表项的状态的有效位、指示使用频率的引用标记位、脏位(dirty)等。
在一些实施例中,页目录标签1用于判断第一页目录缓存表项是否与待转译的第一虚拟地址匹配。页目录号1可以用于识别第一虚拟页面,因此可以将第一页目录缓存表项的页目录标签1与该缓存表项映射的第一虚拟页面的页目录号1设置为一致的二进制码。页表始地址1用于识别内存中用于存储对应第一页表的起始地址。页表始地址1与页偏移量1合成为第一页目录缓存表项映射的第一虚拟页面的页表标签1。页表标签1用于判断第一页表缓存表项是否与待转译的第一虚拟地址匹配。页表号1可以用于识别第一虚拟页面,因此可以将第一页表缓存表项的页表号1与第一页目录缓存表项映射的第一虚拟页面的页表标签1设置为一致的二进制码。物理页面号1用于识别虚拟物理页面,物理页面标签1用于判断第一页表缓存表项是否与虚拟物理地址匹配,因此第一页表缓存表项的物理页面标签1与虚拟物理页面的物理页面号1可以设置为一致的二进制码。当待转译的第一虚拟地址的页目录号1与第一页目录缓存表项的页目录标签1一致,且第一页目录缓存表项的页表始地址1与页偏移量1合成的页表标签1与第一页表缓存表项的页表号1一致,且第一页表缓存表项的物理页面标签1与虚拟物理地址的物理页面号1一致时,说明第一页目录缓存表项和第一页表缓存表项均被命中。在这种情形下,由于第一虚拟地址与其映射的虚拟物理地址具有相同的页内偏移量1,因此可以将被命中的第一页表缓存表项提供的物理页面标签1与待转译的第一虚拟地址的页内偏移量1合成为待转译的第一虚拟地址所映射的虚拟物理地址,以完成第一级地址转译。
在一些实施例中,对第一级地址转译过程中得到的虚拟物理地址进行地址重新划分后,虚拟物理地址的数据结构可以包括页目录号2、页偏移量2和页内偏移量2。在一些实施例中,页目录标签2用于判断第二页目录缓存表项是否与待转译的虚拟物理地址匹配。页目录号2可以用于识别虚拟物理页面,因此可以将第二页目录缓存表项的页目录标签2与该缓存表项映射的虚拟物理页面的页目录号2设置为一致的二进制码。页表始地址2用于识别内存中用于存储对应第二页表的起始地址。页表始地址2与页偏移量2合成为第二页目录缓存表项映射的虚拟物理页面的页表标签2。页表标签2用于判断第二页表缓存表项是否与待转译的虚拟物理地址匹配。页表号2可以用于识别虚拟物理页面,因此可以将第二页表缓存表项的页表号2与第二页目录缓存表项映射的虚拟物理页面的页表标签2设置为一致的二进制码。物理页面号2用于识别物理页面,物理页面标签2用于判断第二页表缓存表项是否与物理地址匹配,因此第二页表缓存表项的物理页面标签2与物理页面的物理页面号2可以设置为一致的二进制码。当待转译的虚拟物理地址的页目录号2与第二页目录缓存表项的页目录标签2一致,且第二页目录缓存表项的页表始地址2与页偏移量2合成的页表标签2与第二页表缓存表项的页表号2一致,且第二页表缓存表项的物理页面标签2与物理地址的物理页面号2一致时,说明第二页目录缓存表项和第二页表缓存表项均被命中;在这种情形下,由于虚拟物理地址与其映射的物理地址具有相同的页内偏移量2,因此可以将被命中的第二页表缓存表项提供的物理页面标签2与待转译的虚拟物理地址的页内偏移量2合成为待转译的虚拟物理地址所映射的物理地址,以完成第二级地址转译,至此地址转译完成。
需要说明的是,虽然在上文以及图6的描述中,页目录缓存表项的页目录标签、页表始地址以及辅助信息、以及页表缓存表项的页表号、物理页面标签以及辅助信息是按照高位至低位的顺序排列的,然而本公开实施例不限于此。每个缓存表项的数据结构可以按照不同的顺序排列。虚拟地址包含的页目录号、页偏移量和页内偏移量,中间物理地址包括的页目录号、页偏移量、页内偏移量,物理地址包括的物理页面号和页内偏移量的高低位置设置和划分方式可以不同。
本公开实施例的存储管理方法
根据本公开的一个实施例,提供了一种存储管理方法。该方法可以由操作域监视器207执行。如图7所示,根据本公开一个实施例的存储管理方法包括:步骤S710、提供第一级存储管理单元,根据与指定的虚拟地址匹配的第一级页表缓存表项,将所述指定的虚拟地址转译到相应的虚拟物理地址,所述第一级页表缓存表项中存储操作域中进程经常访问的虚拟地址到虚拟物理地址的映射关系;步骤S720、提供第二级存储管理单元,用于根据与所述指定的虚拟物理地址匹配的第二级页表缓存表项,将所述指定的虚拟物理地址转译为物理地址,从而实现所述虚拟地址到所述物理地址的转译,所述第二级页表缓存表项中存储所述操作域中进程经常访问的虚拟地址对应的虚拟物理地址与物理地址之间的映射关系;其中,所述第一级存储管理单元和所述第二级存储管理单元位于所述操作域中,不同所述操作域之间共享物理内存,但对除物理内存外的硬件设备进行独占式访问。
由于利用上述存储管理装置通过两级地址转译实现虚拟地址到物理地址的转译过程已经在上述装置实施例中详述,故这里就不再赘述。
本公开实施例的通信方法
根据本公开的一个实施例,提供了一种通信方法。该方法可以由操作域监视器207执行。如图8所示,根据本公开一个实施例的通信方法包括:步骤S810、利用所述存储管理装置,根据与所述操作域中的进程指定的虚拟地址匹配的第一级页表缓存表项,将所述指定的虚拟地址转译到相应的虚拟物理地址;步骤S820、更新所述操作域的第二级页表缓存表项中存储的与所述指定的虚拟物理地址相对应的物理地址为其他操作域中进程所指定的虚拟地址所对应的物理地址;步骤S830、利用所述存储管理装置,根据与所述指定的虚拟物理地址匹配的第二级页表缓存表项,将所述指定的虚拟物理地址转译为更新的物理地址,从而实现所述虚拟地址到所述更新的物理地址的转译。
由于利用上述存储管理装置将指定的虚拟地址转译为对应的虚拟物理地址以完成第一级地址转译,以及将指定的虚拟物理地址转译为对应的物理地址以完成第二级地址转译的过程已经在上述装置实施例中详述,故这里就不再赘述。下面对步骤S820进行详细描述。
步骤S820、更新所述操作域的第二级页表缓存表项中存储的与所述指定的虚拟物理地址相对应的物理地址为其他操作域中进程所指定的虚拟地址所对应的物理地址。
由上文可知,对于每个操作域来说,操作域的第二级页表缓存表项中存储进程指定的虚拟地址对应的虚拟物理地址与物理地址之间的对应关系。在一些实施例中,计算装置包括第一操作域和第二操作域,第一操作域的进程指定虚拟地址1,第一操作域的第二级页表缓存表项中存储虚拟地址1对应的虚拟物理地址1与物理地址1之间的对应关系,第二操作域的进程指定虚拟地址2,第二操作域的第二级页表缓存表项中存储虚拟地址2对应的虚拟物理地址2与物理地址2之间的对应关系。在一些实施例中,在更新操作域1的第二级页表缓存表项中存储的与指定的虚拟物理地址1相对应的物理地址1为其他操作域(例如操作域2)中进程所指定的虚拟地址所对应的物理地址的情况下,可以利用第二级存储管理单元,根据与操作域1中的进程指定的虚拟物理地址1匹配的第二级页表缓存表项,将指定的虚拟物理地址1转译到更改后的物理地址(例如物理地址2),这样便将操作域1中进程指定的虚拟地址1经过两级翻译后转译为其他操作域中的物理地址,实现了操作域1与其他操作域之间的进程通信。在一些实施例中,可以将操作域1的第二级页表缓存表项中存储的物理地址1与操作域2的第二级页表缓存表项中存储的物理地址2进行交换,这样便将操作域1中进程指定的虚拟地址1经过两级翻译后转译为操作域2中的物理地址2,将操作域2中进程指定的虚拟地址2经过两级翻译后转译为操作域1中的物理地址1,实现了操作域1与操作域2之间的数据交换,这样,以零拷贝的方式实现了操作域1与操作域2之间的进程通信。
本公开实施例的商业价值
本公开实施例提供的计算装置中,在不同操作域的进程之间通信(例如数据交换)时,可以通过修改(例如交换)第二级页表的表项中存储的虚拟物理页面对应的物理页面,从而修改操作域中进程经常访问的虚拟地址所对应的物理页面,从而以零拷贝的方式实现不同操作域的进程之间通信,这样,提高了计算装置的不同操作域的进程间通信的效率,减少了大量处理器计算资源和总线带宽。在此场景下,通过降低处理器计算资源和总线带宽,从而降低计算装置的不同操作域的进程间的通信成本,进而降低整个数据中心的运行成本。本公开实施例使整个数据中心的运行成本降低,因而具备了良好的商业价值和经济价值。
本领域的技术人员能够理解,本公开可以实现为系统、方法和计算机程序产品。因此,本公开可以具体实现为以下形式,即完全的硬件、完全的软件(包括固件、驻留软件、微代码),还可以实现为软件和硬件结合的形式。此外,在一些实施例中,本公开还可以实现为一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如但不限于为电、磁、光、电磁、红外线或半导体的系统、装置或器件,或其他任意以上的组合。计算机可读存储介质的更具体的例子包括:具体一个或多个导线的电连接,便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器、磁存储器或者上述任意合适的组合。在本文中,计算机可读的存储介质可以是任意包含或存储程序的有形介质,该程序可以被处理单元、装置或者器件使用,或者与其结合使用。
计算机可读信号介质可以包括在基带中或者作为截波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或者其他任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质之外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令系统、装置或器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,以及上述任意合适的组合。
可以以一种或者多种程序设计语言或者组合来编写用于执行本公开实施例的计算机程序代码。所述程序设计语言包括面向对象的程序设计语言,例如JAVA、C++,还可以包括常规的过程式程序设计语言,例如C。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(LAn)或广域网(WAn)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
以上所述仅为本公开的优选实施例,并不用于限制本公开,对于本领域技术人员而言,本公开可以有各种改动和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。