掌桥专利:专业的专利平台
掌桥专利
首页

用于存储器地址从对象特定虚拟地址空间转换成物理地址空间的安全性配置

文献发布时间:2023-06-19 10:32:14


用于存储器地址从对象特定虚拟地址空间转换成物理地址空间的安全性配置

本申请要求以下提交日期的权益:2019年7月23提交且名称为“用于存储器地址从对象特定虚拟地址空间转换成物理地址空间的安全性配置(Security Configuration forMemory Address Translation from Object Specific Virtual Address Spaces to aPhysical Address Space)”的第16/520,311号美国专利申请;2018年9月21日提交且名称为“用于存储器地址从对象特定虚拟地址空间转换成物理地址空间的安全性配置(Security Configuration for Memory Address Translation from Object SpecificVirtual Address Spaces to a Physical Address Space)”的第62/734,896号临时美国专利申请;2018年8月30日提交且名称为“从对象特定虚拟地址空间到物理地址空间的存储器地址转换(Memory Address Translation from Object Specific Virtual AddressSpaces to a Physical Address Space)”的第62/725,092号临时美国专利申请;2018年8月30日提交且名称为“通过在执行域的页表条目中指定的权限的存储器存取控制(MemoryAccess Control through Permissions Specified in Page Table Entries forExecution Domains)”的第62/724,896号临时美国专利申请;2018年8月30日提交且名称为“执行域的页表条目中的安全性配置(Security Configurations in Page Table Entriesfor Execution Domains)”的第62/724,913号临时美国专利申请;2018年8月30日提交且名称为“处理器寄存器的基于执行域的存取控制(Access Control for ProcessorRegisters based on Execution Domains)”的第62/724,929号临时美国专利申请;2018年8月30日提交且名称为“用于正在计算机处理器中执行的指令的域寄存器(DomainRegister for Instructions being Executed in Computer Processors)”的第62/724,999号临时美国专利申请;以及2018年8月30日提交且名称为“在计算机处理器中执行指令时的域交叉(Domain Crossing in Executing Instructions in Computer Processors)”的第62/725,030号临时美国专利申请,上述申请的全部公开内容由此以引用的方式并入本文中。

技术领域

本文中所公开的至少一些实施例大体上涉及计算机体系结构,且更确切地但不限于从对象特定虚拟存储器地址到物理存储器地址的存储器地址转换。

背景技术

经编程用于计算机的指令可以分层方式结构化。一个层可以为另一层提供资源和服务。例如,超管理器可以创建或提供在计算机硬件组件上实施的虚拟机。操作系统可以使用具有预定义体系结构的计算机中可用的资源来提供资源和服务。由操作系统操作的计算机资源或计算机可以是实际的计算机硬件组件,也可以是由超管理器提供的虚拟机组件。应用程序可以使用操作系统提供的服务和资源提供应用程序特定的功能。

附图说明

在附图的图中作为实例而非限制示出了实施例,在附图中,相似的参考标号指示类似的元件。

图1示出根据一些实施例的计算机处理器,其具有配置成控制计算机处理器的操作的一组寄存器。

图2示出一些实施例中的在不存在操作中超管理器的情况下的地址转换表的表基址的标识。

图3示出一些实施例中的在存在操作中超管理器的情况下的地址转换表的表基址的标识。

图4示出相应域的单独地址转换表。

图5示出在地址转换表中检索条目以转换虚拟地址的技术。

图6示出根据域寄存器控制应用于资源的安全性操作的系统。

图7示出执行域的具有安全性配置的页表条目。

图8示出具有控制安全性操作的域寄存器的计算机系统。

图9示出转换对象特定虚拟存储器地址的方法。

图10示出标识用于存取通过虚拟地址标识的存储器位置的安全性配置的系统。

图11示出使用虚拟地址进行的存储器存取的安全性参数。

图12示出响应于使用虚拟地址进行的存储器存取请求而执行安全性操作的方法。

具体实施方式

本公开包含配置成将对象特定虚拟地址转换成物理地址的计算机处理器和/或存储器管理单元(MMU)。例如,可以针对指令执行的不同域(例如,超管理器、操作系统、应用程序)、针对不同虚拟机、针对同一程序的不同运行/执行进程和/或针对不同对象创建不同虚拟存储器空间。计算机处理器可具有标识当前虚拟机的虚拟机寄存器和/或具有标识当前执行域的域寄存器。存储器管理单元(MMU)可组合(例如,经由散列、编索引和/或复用)与虚拟存储器空间的标识有关的信息以定位页表或页目录。此类信息的实例包含虚拟机标识符、域标识符、处理器标识符、在虚拟存储器地址中提供的对象标识符、由对象标识符表示的对象内的偏移的一部分等。页表或页目录可用于将虚拟存储器地址转换成物理存储器地址。例如,可以直接使用虚拟存储器地址的部分作为一系列页表或页目录中的索引,其中这一系列中的下一页表或页目录由使用索引在当前表或页目录中检索到的条目标识。替代地或组合地,虚拟存储器地址的至少一部分可以进行散列以产生在表中检索条目的索引,其中所述条目标识下一页表或页目录,或提供一组物理地址的基址,或直接提供物理地址。

在传统的系统中,可以向指令的不同层(例如,用户应用程序相较于操作系统)给予不同水平的特权和/或信任。通常,保护环是在计算机中构建和实施的,以保护数据和功能免受基于环层次的故障和恶意行为的影响。从最高特权(因而最受信任)到最低特权(因而最不受信任)的环静态地布置成层次。例如,层次可包含一个具有最高特权的操作系统内核环、一个装置驱动器环和一个具有最低特权的应用程序环。较低特权环中的程序或例程可以由相应的专用硬件强制控制门来限制,以存取层次中较高特权环的资源和服务。环之间的门控存取可以提高安全性。

在本公开的技术中,经编程用于计算机系统的指令或例程可以分类成一组预定义非层次的域,例如超管理器的域、操作系统的域、应用程序的域等。在不同域中使用的地址可以使用不同地址转换表转换,使得不同域的虚拟地址空间可以彼此隔离。如果超管理器存在(例如,操作和控制计算机系统中最低水平的机器体系结构),那么在受超管理器管理的不同虚拟机中使用的地址也可使用不同地址表转换;并且因此,不同虚拟机的虚拟地址空间也可彼此隔离。此外,不同运行中进程的虚拟地址空间也可任选地彼此隔离。例如,虚拟机寄存器可配置成存储其中处理器正执行指令的当前虚拟机的标识符;且处理器的存储器管理单元的地址转换功能可以根据存储在虚拟机寄存器中的标识符、存储在域寄存器中的标识符和/或存储在超管理器状态寄存器中的状态指示配置成执行地址转换,以在特定虚拟机的特定域中执行例程。

图1示出根据一些实施例的计算机处理器169,其具有配置成控制计算机处理器169的操作的一组寄存器183。所述一组寄存器183可至少包含域寄存器117、虚拟机寄存器231和/或超管理器状态寄存器223。

域寄存器117配置成存储正在处理器169中执行的指令的当前域的标识符或指示。

例如,图1的计算机处理器169可以耦合到物理存储器109。物理存储器109可以存储经编程用于计算机系统的各种例程的数据和指令。例程可以分类成各种预定义的非层次域101、103、……、105,例如超管理器102的域101、操作系统104的域103、应用程序106的域105。

例如,超管理器102的例程可以分类在域A 101中;操作系统104的例程可以分类在另一域B 103中;且应用程序106的例程可以分类在另一域C 105中。超管理器或虚拟机监控器(VMM)创建并管理虚拟机。超管理器可控制基本功能,例如物理存储器和输入/输出(I/O)。

计算机处理器169可任选地与操作中超管理器102一起或者不与其一起使用。当没有超管理器102在图1的计算机系统中操作或存在时,操作系统104可控制整个计算机系统。当有超管理器102在图1的计算机系统中操作或存在时,超管理器102可提供一或多个虚拟机;每个虚拟机可运行其操作系统104的实例;且在虚拟机中运行的操作系统104可以控制超管理器102提供的虚拟机的资源,而不是未提供给虚拟机的资源。因此,当超管理器102在计算机系统中存在或操作时,托管于计算机系统上的虚拟机中的操作系统可能无法控制计算机系统的一部分,此部分在没有超管理器102存在或操作时将受操作系统控制。例如,当超管理器102向虚拟机提供存储器109的一部分时,在虚拟机中运行的操作系统104可经由伪物理存储器地址存取存储器109的所述部分,其中操作系统104可将伪物理存储器地址视为实际映射到存储器109中由超管理器102分配给虚拟机的部分的物理存储器地址。

例如,图1的计算机系统可以在其中计算机系统不具有操作中/运行中超管理器102的模式下通电或自举。在这种模式下,操作系统104直接控制硬件资源(例如,处理器169和存储器109)。替代地,图1的计算机系统可以在其中计算机系统具有操作中/运行中超管理器102的模式下启动;超管理器102可创建并管理一或多个虚拟机;且每个虚拟机可运行操作系统104的副本,其中操作系统104可控制超管理器102为相应虚拟机提供的硬件资源。

在一些实例中,处理器189与具有超管理器102的存储器109耦合;且计算机系统可任选地利用或不利用操作中超管理器102自举操作。在其它实例中,处理器189可任选地耦合到不具有超管理器102的存储器,且因此不可运行超管理器102。

超管理器状态寄存器233配置成存储超管理器102是否存在于计算机系统中的指示符。例如,超管理器状态寄存器233可在通电期间具有指示无超管理器102的初始化值。如果在自举过程期间加载超管理器102用于执行,那么超管理器状态寄存器233设置为指示存在操作中超管理器102。超管理器状态寄存器233的内容允许处理器189基于超管理器102是否存在而自定义其操作,例如存储器管理单元(MMU)181的地址转换235。

例如,当超管理器状态寄存器233指示不存在超管理器102时,在计算机系统中运行的操作系统104不依赖于超管理器102管理资源和/或服务。超管理器102的域101不可应用于处理器169中的指令执行;且操作系统104能够完全存取资源,例如整个物理存储器109。

但是,当超管理器状态寄存器233指示存在超管理器102时,在虚拟机中运行的操作系统104限于超管理器102为虚拟机提供的资源和/或服务。因此,超管理器102的域101关系到处理器169中的指令执行。例如,在操作系统104的例程中执行的某些操作可触发超管理器102中的对应操作。

一般来说,即使由域寄存器117指示的当前执行域不同于超管理器102的域101,超管理器102也可能存在。例如,处理器169可执行域105中的应用程序106,并依赖于操作系统104存取存储器109;且超管理器102可在存取存储器109时将操作系统104限于超管理器102提供到其中操作系统104正运行的虚拟机的部分。因此,域105中的应用程序106的执行可偏移到操作系统104的域103中的执行和/或超管理器102的域101中的执行。

一般来说,超管理器状态寄存器223的内容指示超管理器102是否存在,它是域103、……、105是否正在超管理器102或虚拟机的约束内操作的指示。

当存在超管理器102时,虚拟机寄存器231可存储其中处理器169当前正在域(例如,101、103、……或105)中运行例程的当前虚拟机的标识符。例如,当处理器169正在操作系统104的域103中执行例程时,虚拟机寄存器231存储其中例程正在处理器169中执行的虚拟机的标识符。例如,当处理器169正在应用程序106的域105中执行例程时,虚拟机寄存器231存储其中应用程序正运行的虚拟机的标识符。

在一些实施方案中,虚拟机寄存器231和超管理器状态寄存器233可以组合。例如,当虚拟机寄存器231具有预定值(例如,零)时,虚拟机寄存器231指示无超管理器存在于计算机系统中;并且当虚拟机寄存器231具有不同于预定值的值时,虚拟机寄存器231的内容唯一地标识其中处理器169当前正执行指令的虚拟机。

在一些实施方案中,虚拟机寄存器231和超管理器状态寄存器233是单独的寄存器,和/或针对不同域(例如,101、103、……、105)具有不同的存取特权。例如,超管理器状态寄存器233在自举过程中若没有重启计算机系统则不可改变。例如,超管理器状态寄存器233可以由超管理器102的域101存取,但不可被操作系统的域103和/或应用程序的域105存取;并且虚拟机寄存器231可以由超管理器102的域101和操作系统104的域103两者存取。

图1的处理器169包含实施地址转换235的功能的存储器管理单元(MMU)181。处理器169可基于超管理器状态寄存器233的内容来配置地址转换235。

例如,当超管理器状态寄存器233具有指示不存在超管理器102的第一值(例如,0)时,处理器169配置地址转换235以不使用虚拟机寄存器231运行。当超管理器状态寄存器233具有指示存在超管理器102的第二值(例如,1)时,处理器169配置地址转换235以使用虚拟机寄存器231运行,使得地址转换特定于虚拟机。

图1的处理器169具有执行单元(例如,185),例如算术逻辑单元。处理器169可包含内部高速缓存187作为存储器109的一部分的代理。除了域寄存器117、虚拟机寄存器231和超管理器状态寄存器233之外,处理器169可具有其它寄存器183以保存用于执行的指令、作为指令的运算元的数据和/或指令执行的结果。

一般来说,例程可包含存储于存储器109中的预编程指令集。例程还可具有存储于存储器109中的输入数据、输出数据和/或临时数据。例程可激活或调用用于服务和/或资源的另一例程。调用例程和被调用例程可以在相同或不同的域(例如,101、103、……、105)中。

任选地,域寄存器117的内容可控制处理器189中的安全性操作,如下文进一步论述。

在一个实施方案中,当具有处理器169的计算机系统初始通电(自举)时,处理器169配置成自动执行超管理器102或操作系统104的例程(如果未使用超管理器),作为自举过程的部分。因此,域寄存器117初始设置为指示超管理器102的域101或操作系统104的域103。随后,执行控制可使用标识目的地域的指令从一个域移动到另一域;并且域寄存器117的内容可以根据此类指令的处理进行更新。域交叉的一些实例和细节可见于2018年8月30日提交且名称为“在计算机处理器中执行指令时的域交叉(Domain Crossing inExecuting Instructions in Computer Processors)”的第62/725,030号美国专利申请,此申请的全部公开内容由此以引用的方式并入本文中。

替代地或组合地,当前运行的例程的域可以基于存储器地址、例程的所存储属性等来标识。例如,指定计算机处理器169中域寄存器117中的当前域123的一些技术可见于2018年8月30日提交且名称为“用于正在计算机处理器中执行的指令的域寄存器(DomainRegister for Instructions being Executed in Computer Processors)”的第62/724,999号美国专利申请,此申请的全部公开内容由此以引用的方式并入本文中。

在一些实例中,当前域可以根据用于加载例程的指令以供执行的存储器地址标识。

例如,对于处理器169,虚拟存储器地址(例如,图5中所示的195)可具有预定宽度(例如,预定数目个位)。存储器地址可包含表示对象ID(例如,图5中所示的199)的部分和表示在由对象ID(例如,199)表示的对象内的偏移(例如,图5中所示的196)的部分。例如,例程可以是位于所述地址的对象;并且所述地址的对象ID可用于标识指令和/或例程的某些特性;并且当前域可根据所述特性确定。

例如,具有预定值(例如,0)的静态对象ID可用于表示操作系统104的内核对象。因此,在存储器地址中指定的静态对象ID可用于标识用于例程执行的当前域。加载用于执行的指令的计算机处理器的存储器地址中的静态对象ID的一些细节和实例可见于2018年7月6日提交且名称为“基于对象的存储器存取中的静态标识(Static Identifications inObject-based Memory Access)”的第16/028,840号美国专利申请,此申请的全部公开内容由此以引用的方式并入本文中。

在一些实例中,存储器地址和/或存储器地址的对象ID(例如,199)可包含表示对象类型(例如,图5中所示的198)的部分。例如,具有值0到3的对象类型198可用于标识操作系统的内核对象。例如,具有值4到5的对象类型198可用于指定偏移是具有不同宽度的地址(例如,包含在具有128位的存储器地址内的64位地址或32位地址)。例如,具有值6到7的对象类型198可用于指定对象ID的预定部分将解译为本地对象或分割全局地址空间(PGAS)中的对象的标识符。例如,具有值32的对象类型198可用于指定对象ID的其余部分将解译为在服务器(例如,197)中定义的对象的标识符。例如,对象名称服务器可存储指示由对象ID表示的对象的名称、对象的存取控制参数和/或对象的其它属性的数据。

例如,用于加载用于执行的例程的存储器地址的对象ID 199可具有存储在对象名称服务器中的属性;并且所述属性可用于确定或推断从存储器地址加载的例程的当前域。

在一些实例中,将在处理器169中执行的例程可具有与例程相关联地存储(例如,在存储器109中、在用于确定指令的物理地址的页表条目中、在用于进行调用以执行例程的条目表中)的属性。当加载例程用于执行时,例程的属性用于确定用于例程执行的当前域。

在一个实施例中,当超管理器状态寄存器233指示不存在超管理器时,处理器169配置存储器管理单元(MMU)181以根据图2标识地址转换表的表基址。但是,当超管理器状态寄存器233指示存在超管理器102时,处理器169配置存储器管理单元(MMU)181以根据图3标识地址转换表的表基址。图5示出在地址转换表中检索条目以将虚拟地址转换成物理地址的技术。

图2示出一些实施例中的在不存在操作中超管理器的情况下的地址转换表的表基址249的标识。

在图2中,为不同域101、103、……、105分别配置单独的表基址寄存器241、243、……、245。

处理器169的域寄存器117存储其中处理器169当前正执行指令的当前域的标识符。域寄存器117耦合到复用器247,以选择作为在地址转换中使用的地址转换表的表基址249。表基址249标识将用于执行存储器管理单元(MMU)181中的地址转换235的地址转换表的存储器位置(例如,如下文结合图5和/或图7所论述)。

图2示出具有多个表基址寄存器241、243、……、245的处理器的实例。

替代地或组合地,每个域101、103、……或105可具有单独的存储器区域,所述存储器区域配置成存储用于相应域101、103、……或105中的指令执行的域特定寄存器的值。

例如,每个域101、103、……或105可具有单独的存储器区域,所述存储器区域存储在执行临时转变到另一域中(例如经由在另一域中执行例程的域调用指令)之前在最后执行的指令的执行期间使用的寄存器的域特定值。此类单独的用于存储特定于特定域(例如,101)的寄存器的值的存储器区域可存取用于相应域(例如,101)中的指令执行,但不可存取用于其它域(例如,105)中的指令执行。因为其它域(例如,101)无法存取给定域(例如,105)的寄存器值区,所以给定域(例如,105)的寄存器状态被隔离且被保护不受其它域(例如,101)中的执行影响。

例如,用于特定域(例如,101)的寄存器的域特定值的存储器区域可存储正在处理器中执行的指令的程序计数器(PC)的值、用于指令执行的堆栈的堆栈指针(SP)的值、堆栈的帧指针(FP)的值、堆栈的变量参数指针(AP)的值和/或处理器状态字(PSW)的值等。特定域(例如,101)的基于表的寄存器的值还可保存在特定域(例如,101)的寄存器值区中。在此实施方案中,不必为域101、103、……、105分别配置单独的寄存器241、243、……、245。可以使用单个寄存器存储当前域(例如,101、103、……、105)的表基址,如由域寄存器117所指示;并且当执行进入新的域时,寄存器可以使用先前存储在新域的寄存器值区中的表基址进行更新。替代地,域寄存器117的内容可用作表基址的表中的索引,用于查找地址转换表的基址249。

在一个实施例中,当域101特定地配置用于超管理器102时,如由超管理器状态寄存器233所指示的不存在超管理器允许处理器169跳过超管理器102的域101的表基址寄存器;并且超管理器102的域101变得与处理器169的后续操作无关(例如,直到超管理器状态寄存器233在后续通电/自举过程期间改变为止)。

图3示出一些实施例中的在存在操作中超管理器102的情况下的地址转换表的表基址249的标识。

在图3中,通过复用器247选择中间基址248作为表基址寄存器241、243、……、245的输出。中间基址248进一步与虚拟机寄存器231的内容组合以产生地址转换表的表基址249。

一般来说,对于每个执行域101、103、……、105和托管在图1的计算机系统中的每个虚拟机,可以针对通过操作系统104指派的虚拟地址到物理地址的转换创建单独的地址转换表。当计算机系统中存在操作中超管理器102时,在虚拟机中运行的操作系统104使用伪物理地址,因为操作系统104分配虚拟存储器地址的伪地址的方式如同伪地址就是物理地址一般,原因是操作系统104无法分辨超管理器102从物理机器提供的虚拟机。超管理器102可将由在虚拟机中运行的操作系统104分配的伪物理地址转换成计算机系统(例如,在图1示出)中的存储器109的物理地址。

优选地,超管理器102在创建映射虚拟存储器地址页和物理地址页的页表条目时执行转换。因为在虚拟机中运行的操作系统104在伪物理地址上操作,所以由操作系统指定的页表条目将虚拟存储器地址页映射到伪物理地址页。超管理器102可将伪物理地址页转换成指派给虚拟机的物理地址页,使得页表条目可随后用于将虚拟地址直接转换成指派给虚拟机的物理地址。经超管理器102修改的此类页表条目可在存在操作中超管理器102的情况下,通过在使用虚拟地址时不再需要单独将虚拟机中的伪物理地址转换成物理存储器109的物理地址来提高存储器存取性能。

例如,当操作系统104执行创建页表条目以将虚拟存储器页映射到伪物理存储器页的指令时,所述指令可被捕获,以使超管理器102将伪物理存储器页转换成物理存储器页并修改页表条目以将虚拟存储器页映射到经转换物理存储器页。随后,可以使用页表条目将虚拟存储器页直接转换成物理存储器页。

虚拟机寄存器231的内容可以经由表与基址248组合以查找特定于通过虚拟机寄存器231标识的虚拟机的基址249。替代地,虚拟机寄存器231的内容可用作散列函数(例如,图5中所示的121)的输入的部分,以为基址248处的表编索引,从而检索地址转换表249中虚拟机特定的条目,如下文结合图5进一步论述。

例如,对于特定域(例如,103),处理器169可存储托管在计算机系统中的虚拟机的表基址的表。域(例如,103)的表基址寄存器(例如,243)可存储虚拟机的表基址的表的基址248。虚拟机寄存器231的内容可用作基址248处的表的索引以查找指定用于域(例如,103)和通过虚拟机寄存器231标识的虚拟机的地址转换表的基址249。

图3示出具有多个表基址寄存器241、243、……、245的处理器的实例。

替代地或组合地,每个域101、103、……或105可具有单独的存储器区域,所述存储器区域配置成存储用于相应域101、103、……或105中的指令执行的寄存器的域特定值,如上文结合图2所论述。表基址寄存器241、243、……、245的值可以存储在相应域(例如,101、103、……、105)的寄存器值区中。在此实施方案中,不必为域101、103、……、105分别配置单独的寄存器241、243、……、245。可以使用单个寄存器存储在相应域(例如,101、103、……、105)的寄存器值区中检索到的基址248。在一些实施方案中,基址248进一步与虚拟机寄存器231的内容组合,以获得地址转换表的基址249并更新寄存器以保存基址249用于地址转换235。替代地,使用单独的寄存器存储地址转换表的中间基址248和基址249,以免在虚拟机寄存器231的内容改变时,需要从相应域(例如,101、103、……、105)的寄存器值区重新加载基址248。域101、103、……、105的寄存器值区将在内部高速缓存187中高速缓存,以促进处理器169响应于域寄存器117和/或虚拟机寄存器231的改变进行有效状态改变。替代地,域寄存器117的内容和虚拟机寄存器231的内容可以组合为表基址的表的索引,以查找地址转换表的基址249。

图4示出相应域101、……、105的单独地址转换表217、……、227。

在图4中,域寄存器117可存储图1的处理器169中的指令执行的当前域的标识符。例如,域寄存器117的内容可标识域A 101或域C 105。

域101、……、105中的每一个具有对应的标识相应地址转换表217、……、227的存储器位置的表基址219、……、229。

例如,当超管理器状态寄存器233指示计算机系统中不存在操作中超管理器102时,可以从相应域101、……、105的寄存器值区加载和/或在相应寄存器241、……、245中检索表基址219、……、229,如上文结合图2所论述。

当超管理器状态寄存器233指示计算机系统中存在操作中超管理器102时,可以按照类似于上文结合图3所论述的方式的方式从相应域101、……、105的寄存器值区为通过虚拟机寄存器231标识的特定虚拟机加载和/或使用在相应寄存器241、……、245中检索到的表基址为所述特定虚拟机查找表基址219、……、229。

替代地,当超管理器状态寄存器233指示计算机系统中存在操作中超管理器102时,可以从相应域101、……、105的寄存器值区加载表基址219、……、229;并且虚拟机寄存器231的内容可用于产生表基址219、……、229处的地址转换表217、……、227的索引。

在图4中,每个地址转换表217、……或227存储相应表217、……或227具有的条目数目/计数211、……或221。数目/计数211、……或221允许处理器169检查在地址转换表217、……或227上使用的索引是否在由数目/计数211、……或221限定的有效界限内。

在虚拟地址到物理地址的转换期间,从虚拟地址和/或为虚拟地址产生索引以检索促进虚拟地址到物理地址的转换的条目。图5示出地址转换235中索引的产生的实例。

图5示出在地址转换表217中检索条目250以转换虚拟地址195的技术。

虚拟地址195可包含对象ID 199、对象类型198和偏移196。例如,虚拟地址195可具有128位的宽度;虚拟地址195的数个位(例如,59个或58个)可用于存储对象ID199,虚拟地址195的另一数目个位(例如,5个或6个)可用于存储对象类型198,且虚拟地址的剩余位(例如,64个)可用于存储相对于具有类型198和ID 199的对象的偏移196。例如,虚拟地址195可以是存储于存储器109中的地址,如域(例如,105)中的例程的程序员或用户所配置、编程和/或看到。

在图5中,对对象ID 199应用散列121以产生索引125。索引125的位数少于对象ID199,并因此减小了地址转换表217的大小,从而方便在表217中查找条目(例如,213、……、215)。但是,当多个项散列成同一索引时,可能会发生散列冲突。编链是一种解决散列冲突的技术。由冲突产生的索引可用于检索密钥值对的列表/链。散列成所述索引的每个项可配置为列表中对应密钥值对中的密钥;并且对所述项的查找结果可以配置为对应密钥值对中的值。为了检索散列成同一索引的项中的一个的查找结果,可以搜索经由所述索引标识的密钥值对的列表/链,找到其中密钥与所述项匹配的密钥值对。匹配的密钥值对的值提供查找结果。当索引125不存在散列冲突时,地址转换表217中索引125处的条目(例如,213、……或215)可以作为所得条目250进行检索。当索引125存在散列冲突时,地址转换表217中索引125处的条目(例如,213、……或215)标识冲突链260。冲突链260具有示出散列121成同一索引125的对象ID(例如,261、263)的条目(例如,262、264……)的列表/链。可以搜索冲突链260,以在散列121之前定位指定用于与对象ID 199匹配的对象ID(例如,261或263)的条目(例如,262或264)。经定位条目(例如,262或264)示出为所得条目250。

一般来说,散列121可应用于对象ID 199、任选地对象类型198、偏移的一部分、虚拟机寄存器231的内容和/或其它信息(例如在处理器169中运行的当前进程的处理器ID和/或域寄存器117的内容)的组合。在一些实例中,域寄存器117的内容和/或虚拟机寄存器231的内容可以附加/添加到散列121的结果中以产生索引125。

使用索引125在地址转换表217中查找到的典型条目250可具有用于地址转换235中的后续操作的字段。例如,有效字段251可具有指示条目250对于地址转换是否有效的值;类型字段253可具有指示将使用条目执行的转换的类型的值;页大小字段255可具有指示用于确定页表条目的存储器页大小的值;地址字段257;等等。例如,条目250可进一步包含标识页表结构的字段和/或指定用于存取对应于条目250的存储器区的安全性配置(例如,图6中所示的107)的字段。替代地,条目250可进一步包含标识表的字段;并且偏移196的散列或偏移196的一部分可用作表中的索引,以检索标识页表结构的条目(例如,图7中所示的页表151或通向页表151的页目录),或物理地址159的区137的基址157,或对应于虚拟地址195的物理地址159。

在地址转换表217的条目250中提供的地址257可以是页表或页目录的存储器地址。偏移196的至少一部分可用作页表或页目录中的虚拟页码和索引,用于查找下一页表或页目录。查找下一页表或页目录的过程可以重复,直到使用偏移196中的最后一个虚拟页码查找到的条目用于定位页表条目(例如,图7中所示的153)为止。在页表条目153中标识的物理存储器页的基址157可以与偏移196的其余部分组合(例如,如图7中所示的偏移147)以产生物理地址(例如,图7中所示的159)。

任选地,散列121可应用于整个虚拟地址195,使得使用索引125查找到的地址257是物理地址。在此实施方案中,条目250可以被视为页表条目,并且可包含存储器地址的安全性配置(例如,图6中所示的107)。但是,此实施方案可能需要较大的地址转换表217。

替代地,散列121可应用于对象ID 199、任选地对象类型198和偏移196的一部分的组合;并且使用索引125查找到的地址257是物理地址页的基址(例如,图7中所示的157)。偏移196的其余部分可以与基址(例如,如图7中所示)组合以产生物理地址(例如,159)。在此实施方案中,地址转换表217可以被视为页表(例如,图7中所示的151);地址195的用于从散列121产生索引125的部分可以被视为条目ID(例如,图7中所示的145)或虚拟页码(VPN);并且条目250可以被视为页表条目(例如,图7中所示的153),且可任选地包含存储器地址的安全性配置(例如,107)。

替代地,散列121可应用于对象ID 199、任选地对象类型198和偏移196的一部分的组合;并且使用索引125查找到的条目250中的地址257是页表(例如,图7中所示的153)的物理地址。因为条目250标识页表(例如,153),所以地址195的用于从散列121产生索引125的部分可以被视为表ID(例如,图7中所示的143)。偏移196的一部分可用作页表(例如,153)中的条目ID 145或虚拟页码(VPN),以查找含有存储器页或存储器区137的基址157的页表条目(例如,153);并且偏移196的其余部分可以与基址157组合以产生物理地址159。

替代地,散列121可应用于对象ID 199、任选地对象类型198和偏移196的一部分的组合;并且使用索引125查找到的条目250中的地址257是页目录的地址。偏移196可具有用于一或多个页目录或页表的一或多个虚拟页码。偏移196中的虚拟页码(VPN)用于为页目录编索引,以查找后续页目录或页表的基址。偏移196中的最后一个虚拟页码(VPN)用于为页表(例如,153)编索引,以检索含有存储器区137的基址157的页表条目153。在此实施方案中,地址195的前置部分(包含在最后一个虚拟页码(VPN)之前的虚拟页码(VPN))可以被视为表ID 143。

在一些实例中,当对不同对象ID进行散列以产生相同索引125时,可以使用冲突链260来标识与对象ID中的每一个相关联的唯一地址。在此情形下,地址257可用于标识存储从中可以定位用于对象ID 199的地址转换的唯一条目(例如,262或264)的冲突链260的表、列表或链。从冲突链260查找到的唯一条目(例如,262或264)可具有类似于直接从地址转换表217查找到而不具有冲突的条目250的结构。

在一些实施方案中,在图1所示的计算机系统中运行的不同进程可具有不同的虚拟地址空间,并且因此在地址转换表217中具有不同条目。在此情形下,进程ID可以与用于散列121的地址195的一部分组合以产生索引125。任选地,对象ID 199包含或指示进程ID。

在一些实施方案中,不同虚拟机使用从地址转换表217查找到的不同页表或页目录。因此,虚拟机寄存器231的内容可以与对象ID 199和/或虚拟地址195的另一部分组合,以通过散列121的函数产生索引125。

计算机处理器169的域寄存器117可用于存储当前正在计算机处理器169中执行的例程的域标识符。例如,在执行造成域交叉的指令后,域寄存器117的内容可以在指令成功处理之后更新成存储在指令中指定的域标识符。域寄存器的内容可控制处理器169的各种安全性操作。

例如,当指令的执行引起对存取使用虚拟存储器地址标识的存储器位置的请求时,虚拟存储器地址可以使用一或多个页表转换成物理存储器地址。域寄存器的内容可用于在页表条目中选择用于在当前域中进行的存储器存取的权限位。选定权限位可控制对存取通过虚拟存储器地址标识的存储器单元的请求的处理。

例如,当调用执行具有虚拟存储器地址的例程时,域寄存器的内容可用于在页表条目中选择用于将虚拟存储器地址转换成物理存储器地址的安全位。选择安全位用于在为通过域寄存器标识的当前域提供服务时执行例程。选定安全位控制在被调用例程和调用例程之间分开资源和/或数据的安全性操作。

例如,当指令的执行产生对存取特权寄存器的请求时,域寄存器的内容可用于在例如权限寄存器中选择权限位以供当前域存取特权寄存器。权限位可控制对存取特权寄存器的请求的接受或拒绝。

图6示出根据域寄存器117控制应用于资源(例如,131)的安全性操作的系统。

在图6中,基于在域寄存器117中指定的当前域123及具有分别为预定义域101、103、……、105单独指定的设置111、113、……、115的安全性配置107来实施安全性控制119。安全性控制119应用于资源131,所述资源可以是特权寄存器133、被调用例程135、存储器区137等。

安全性配置107可具有分别用于域101、103、……、105的设置111、113、……、115,而不用依赖于域101、103、……、105当中的静态信任层次。

当处理器169中正执行例程时,域寄存器117使安全性控制119选择与匹配当前域123的域(例如,101、103、……或105)预先相关联的设置(例如,111、113、……或115)。选定设置(例如,111、113、……或115)供安全性控制119用于自定义资源131的安全性操作。

例如,当处理器169中的例程的指令的执行请求对存储器区137的存储器存取时,使其预先相关联域(例如,101、103、……、105)与当前域123匹配的选定设置(例如,111、113、……或115)供安全性控制119用于确定存储器存取是否被准许。

例如,存储器109中的不同区(例如,137)可以配置有不同的安全性配置(例如,107);并且每个安全性配置(例如,107)可包含用于不同域101、103、……、105的不同权限(例如,111、113、……、115)。例如,安全性配置107可以在用于虚拟存储器地址的逻辑到物理地址转换的页表条目中指定,使得存储器区的结构可对应于存储器页结构,如下文结合图7进一步论述。

例如,物理存储器109可以划分成多个区;每个区(例如,137)可以是用于存储器管理的物理存储器109的页或物理存储器109的一组页。

例如,典型的存储器区137可具有指定用于所述一组预定义域101、103、……、105的相应安全性配置107。安全性配置107显式地标识每个域101、103、……、105的权限(例如,111、113、……、115)。因此,存取存储器区137的例程的特权不取决于域102、103、……、105的层次。

在一个实例中,当在当前域123中执行的例程使存储器存取存储器区137以进行指令读取、写入或执行时,域寄存器117使安全性控制119检查在对应于当前域123的设置111、113、……或115中指定的权限。是否针对特定操作类型(例如,读取、写入、执行)通过在当前域123中执行例程的指令来阻止(或拒绝)存取存储器区137可基于根据存储器区137的当前域123且针对所述操作类型选定的相应权限位来确定。用于对存储器区137的存储器存取的权限的一些细节和实例可见于2018年8月30日提交且名称为“通过在执行域的页表条目中指定的权限的存储器存取控制(Memory Access Control through PermissionsSpecified in Page Table Entries for Execution Domains)”的第62/724,896号美国专利申请,此申请的全部公开内容由此以引用的方式并入本文中。

一般来说,相同域(例如,103)的不同例程可配置成在不同存储器区中,且因此配置成对于相同域(例如,103)具有不同权限和安全性设置。

此外,例程可配置成存储其数据在不同存储器区(例如,137)中的不同部分,且因此配置成具有从相同域(例如,101、103、……或105)存取的不同权限。

在另一实例中,当在当前域123中执行的例程调用存储于存储器区137中的被调用例程135以供执行时,域寄存器117使安全性控制119检查在对应于当前域123的设置111、113、……或115中指定的权限。是否部署安全措施以保护调用例程的资源不受被调用例程135影响和/或保护被调用例程135的资源不受调用例程影响可基于为当前域123和存储器区137指定的相应权限位来确定。

安全措施可包含沙盒化。沙盒化一般包含隔离一组指令的执行(例如,应用程序)与某些系统资源和/或其它指令/程序集的计算机安全措施。例如,沙盒化可以使用影子堆栈结构(shadow stack structure)来实施,其中调用例程和被调用例程配置成使用单独的堆栈和与堆栈有关的控制寄存器,调用例程可能无法存取指派给被调用例程的堆栈,且被调用例程可能无法存取指派给调用例程的堆栈。影子堆栈结构的一些细节和实例可见于2018年8月30日提交且名称为“执行域的页表条目中的安全性配置(SecurityConfigurations in Page Table Entries for Execution Domains)”的第62/724,913号美国专利申请,此申请的全部公开内容由此以引用的方式并入本文中。

例如,典型存储器区137的安全性配置107可具有为所述一组预定义域(例如,101、103、……、105)分别指定的沙盒化设置(例如,111、113、……、115)。沙盒化配置107显式地标识对执行存储在区137中的被调用例程135的调用是否需要沙盒化操作。从在不同域101、103、……、105中执行的例程调用执行相同例程135可具有不同设置111、113、……、115;并且设置111、113、……、115指定来自各个域101、103、……、105的调用是否需要沙盒化(例如,保护被调用例程135和调用例程不受彼此影响)。因此,基于在域寄存器117中标识的当前域123及配置成用于相应域101、103、……、105的显式设置(例如,111、113、……、115),沙盒化操作可以选择性地应用于执行存储于存储器区137中的被调用例程135,而不用依赖于域102、103、……、105的预定义层次。

例如,当前域123中的调用例程可调用被调用例程135。是否针对执行存储于存储器区137中的被调用例程135的调用激活沙盒化操作可基于为匹配存储器区137的当前域123的相应域(例如,101、103、……或105)指定的沙盒设置(例如,111、113、……或115)来确定。因此,沙盒化操作可以独立于被调用例程135的域和当前调用域123之间的相对层次来激活。

例如,存储于存储器区137中的例程的沙盒设置107可以在用于虚拟存储器地址的逻辑到物理地址转换的页表条目中指定,使得存储器区的结构可对应于存储器页结构,如下文结合图7进一步论述。

在另一实例中,当在当前域123中执行的例程请求存取特权寄存器133时,域寄存器117使安全性控制119检查在特权寄存器133的设置111、113、……或115中指定的权限。是准许还是阻止存取可基于为当前域123和特权寄存器133指定的相应权限位来确定。

例如,特权寄存器133可针对不同域101、103、……、105分别具有不同权限111、113、……、115。当在当前域123中执行的指令请求存取特权寄存器133时,域寄存器117使安全性控制119选择对应于当前域123的相应权限(例如,111、113、……或115)以控制存取。

寄存器133可具有分别为域101、103、……、105单独指定的显式权限111、113、……、115(例如,非层次),而不用依赖于域102、103、……、105的预定义信任层次。

在一些实例中,可以存取特权寄存器133以用于不同操作类型,例如读取、写入、执行等。特定域(例如,101、103、……或105)存取特权寄存器133的权限(例如,111、113、……或115)可针对相应操作类型(例如,读取、写入和/或执行)而具有单独的权限位。

安全性配置107可配置成允许在一个域(例如,101、103、……、105)中运行的指令存取寄存器133以用于一种操作类型(例如,读取),但不用于另一操作类型(例如,写入)。

安全性配置107可配置成允许在一个域(例如,103)中执行的指令经由域(例如,103)的一个权限设置(例如,113)存取寄存器(例如,133),但是禁止在另一域(例如,101)中运行的相同指令经由所述域(例如,101)的另一并行设置(例如,111)存取寄存器133,即使在传统的保护环中,不被允许的域(例如,101)可能具有比所允许的域(例如,103)更高的特权(且因此更受信任)。

在一个实施方案中,安全性配置107在特权寄存器133的处理器中硬接线。在另一实施方案中,安全性配置107可以在计算机系统的启动/自举过程期间经由处理器的寄存器133的固件设置。在另一实施方案中,安全性配置107可以在计算机系统的正常操作期间经由特权软件改变。

例如,特权寄存器133的安全性配置107可以在处理器169从在一个域(例如,101)中运行程序切换到在另一域(例如,103)中运行程序时改变。

例如,特权寄存器133的安全性配置107可以根据计算机系统从运行一个例程切换到另一例程时的请求改变,其中所述例程可以在相同域(例如,101)中。

例如,特权寄存器133的安全性配置107可以配置于权限寄存器中,所述权限寄存器使用存储在权限寄存器中的权限位控制对特权寄存器133的存取;并且权限寄存器的内容可以通过针对当前计算调整/自定义计算机系统的安全等级的经授权过程来进行更新。替代地,不同域101、103、……、105的权限位可以在分别对应于域101、103、……、105的单独寄存器中指定。权限寄存器的一些细节和实例可见于2018年8月30日提交且名称为“处理器寄存器的基于执行域的存取控制(Access Control for Processor Registers based onExecution Domains)”的第62/724,929号美国专利申请,此申请的全部公开内容由此以引用的方式并入本文中。

因为图6的安全性控制系统不依赖于预定义域信任层次(即为非层次的),所以它可以提供比常规保护环更好的灵活性和更精细的控制粒度。

图7示出执行域(例如,101、103、……、105)的具有安全性配置107的页表条目153。

例如,页表条目中的安全性配置107可以是存取通过页表条目153标识的存储器区137的权限和/或调用存储于通过页表条目153标识的存储器区137中的例程的沙盒化配置。

虚拟地址空间127中的典型虚拟地址141可以使用页表151转换成物理地址空间129中的对应物理地址159。一般来说,可以使用多个页表(例如,151)将虚拟地址空间127映射到物理地址空间129。

虚拟地址141可包含表ID 143、条目ID 145和偏移147。表ID 143可用于标识含有用于含通过虚拟地址141和物理地址159标识的存储器单元的页的页表条目153的页表151。条目ID 145用作页表151的索引以高效定位页表条目153。页表条目153提供物理地址159的基址157。相同存储器页中的物理地址共享相同基址157。因此,基址157标识存储器109中的区137。虚拟地址141的偏移147用作存储器109中的页或区137的对应偏移147。基址157和偏移147的组合提供对应于虚拟地址141的物理地址159。

在图7中,页表条目153不仅指定页或区137的基址157,而且还为页或存储器区137指定安全性配置107,例如将数据读取到对应于基址157的存储器区137中的权限、用于将数据写入到存储器区137中的权限、用于执行存储于存储器区137中的指令的权限、用于调用存储于存储器区137中的例程的沙盒化要求。安全性配置107可具有分别用于图1和6中所示的预定义非层次域101、103、……、105的单独设置111、113、……、115。域寄存器117中的当前域137控制将设置111、113、……、115中的哪一个用于当前存储器存取或对存储于存储器区137中的例程135的当前调用。

任选地,页表条目153可指定物理存储器页的其它属性155,例如页中的数据是否有效、页是否在主存储器中、页是否无效(例如,物理存储器页中的数据的改变尚未相对于存储器区137被刷新到长期内存/存储装置)。例如,属性155可包含指示页是在计算机的主存储器中还是在计算机的存储装置中的页错误位。如果安全性配置107的权限允许对存储器页的当前存取且页错误位指示页当前不在计算机的主存储器中,那么存储器管理单元181可将页从存储装置交换到计算机的主存储器中,以促进对通过页表条目153标识的页的存取。但是,如果安全性配置107的权限针对当前执行域拒绝对页的当前存取,那么不必评估页错误位和/或在对应于页表条目153的页中进行交换。

一般来说,表ID 143可以划分成用于定位页表151的多个字段。例如,表ID 143可包含标识顶层页表的顶部表ID和用作顶层页表的索引以检索含有页表151的标识符的页表条目(方式类似于条目ID 145为页表151编索引以标识含有基址157的页表条目153)的顶部表条目ID。

一般来说,条目ID 145可以被视为页表151中的虚拟页码;并且虚拟页码(例如,145)可在页表151中用于查找含有基址157的页表条目153。

例如,表ID 143可包含可用于标识一连串页表(例如,151)的一组虚拟页码。每个虚拟页码用作页表(或页目录)中的索引以标识含有下一层页表(或页目录)的标识或基址的页表条目(或页目录条目)。

在一些实例中,计算机中的不同运行中进程可具有不同虚拟地址空间(例如,127);并且运行中进程的进程ID可用于确定顶层页表(或页目录)。在一些实例中,虚拟地址141的一部分的散列、进程ID和/或托管在计算机系统中的虚拟机的标识可用于定位顶层页表(或页目录)。在一些实例中,散列用作查找页表条目的索引或密钥。不管页表条目153如何定位(例如,经由通过多个页表的编索引、经由散列作为索引或密钥的使用),页表条目153的内容都可以图7中所示的方式配置成为不同域101、103、……、105提供安全性配置107,以便存取对应于基址157的页/存储器区137和/或存储于存储器区137中的例程。

在图7中,页或区137的安全性配置107在底层页表151中指定,其中底层页表151中的页表条目153提供物理地址159的基址157。

替代地或组合地,较高层页表(或页目录)也可具有用于其页表条目(或页目录条目)的安全性配置。例如,标识页表151的页表条目(或页目录条目)可具有用于页表151中的所有页的安全性配置;并且因此,页表条目中的域权限数据可应用于由页表151限定的存储器区。通向页表151的所述一连串页表条目中的安全性配置的层次和底层页表条目153中的安全性配置107可以经由逻辑AND运算或逻辑OR运算组合。

例如,如果通向基址157的所述一连串页表条目(包含底层表条目153)中的所有权限位都具有允许存取的值,那么在域(例如,101、103、……、105)中运行的例程可被允许存取通过基址157标识的页。替代地,如果通向基址157的所述一连串页表条目(包含底层表条目153)中的任一权限位具有允许存取的值,那么在域(例如,101、103、……、105)中运行的例程可被允许存取通过基址157标识的页。

例如,如果通向基址157的所述一连串页表条目(包含底层表条目153)中的任一权限位具有拒绝存取的值,那么在域(例如,101、103、……、105)中运行的例程可被拒绝存取通过基址157标识的页。替代地,只有当通向基址157的所述一连串页表条目(包含底层表条目153)中的所有权限位都具有拒绝存取的值时,在域(例如,101、103、……、105)中运行的例程才可被拒绝存取通过基址157标识的页。

例如,当非底层页表条目(或页目录条目)指示存储器存取被禁止时,从虚拟地址141转换成物理地址159的操作可被中断以拒绝与虚拟地址141相关联的存储器存取。响应于所述拒绝,将使用指定用于处理所述拒绝的软件陷阱。

例如,安全性配置107可包含分别用于所述一组域101、103、……、105的一组沙盒设置位(例如,111、113、……、115)。当对应于域寄存器117中的当前域123的沙盒设置位(例如,111、113、……或115)设置为具有第一值(例如,1或0)时,实施从当前域123中的例程到存储在区137中的被调用例程135的当前调用以使用沙盒化操作保护调用例程和被调用例程135不受彼此影响(例如,通过在堆栈使用中使用影子堆栈来分开调用程序和被调用程序)。当对应于域寄存器117中的当前域123的沙盒设置位(例如,111、113、……或115)设置为具有第二值(例如,0或1)时,实施从当前域123中的例程到存储于存储器区123中的被调用例程135的调用,而不使用沙盒化操作将调用程序和被调用程序彼此隔离(例如,不使用影子堆栈)。

任选地,安全性配置(例如,107)是在底层页表151中指定而不是在较高层页表(目录)中指定的。

图8示出具有控制安全性操作的域寄存器117的计算机系统。

例如,图8的计算机系统可任选地具有存储用于通过图1和6中所示的预定义域101、103、……、105中的例程存取由图7的页表条目153标识的存储器区的安全性配置107的页表(例如,151)。此外,图8的计算机系统可任选地具有图1和2的域存取表217、……、227,以促进和保护域交叉。

例如,图8的计算机系统可具有存储用于存取图1和6中所示的预定义域101、103、……、105的特权寄存器133的安全性配置107的一或多个权限寄存器。

处理器169的域寄存器117存储当前域123的标识符。域寄存器117的内容选择安全性配置107中对应于当前域123的一组可应用设置。

图8的计算机系统具有经由一或多个总线163耦合到存储器系统161的主机系统165。存储器系统161具有存储器组件171、……、173。

例如,总线163可包含连接到一或多个存储器模块的存储器总线和/或包含连接到一或多个存储装置的外围因特网。存储器组件171、……、173中的一些可提供随机存取;并且存储器组件171、……、173中的所述一些可提供永久性存储能力。存储器组件171、……、173中的一些可能是易失性的,因为当存储器组件的电力供应临时断开连接时,存储于存储器组件中的数据将会损坏和/或擦除。存储器组件171、……、173中的一些可能是非易失性的,因为存储器组件能够在不具有电力的情况下在很长一段时间内保持其中存储的内容。

一般来说,存储器系统161还可称为存储器装置。存储器装置的实例是经由存储器总线连接到中央处理单元(CPU)的存储器模块。存储器模块的实例包含双列直插式存储器模块(DIMM)、小轮廓DIMM(SO-DIMM)、非易失性双列直插式存储器模块(NVDIMM)等。存储器装置的另一实例是经由外围互连件(例如,输入/输出总线、存储区域网络)连接到中央处理单元(CPU)的存储装置。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器和硬盘驱动器(HDD)。在一些实例中,存储器装置是提供内存功能和存储功能的混合内存/存储系统。

存储器组件171、……、173可包含不同类型的非易失性存储器组件和/或易失性存储器组件的任何组合。非易失性存储器组件的实例包含具有一或多个存储器单元阵列(例如,单层级单元(SLC)或多层级单元(MLC)(例如,三层级单元(TLC)或四层级单元(QLC)))的与非(NAND)型快闪存储器。在一些实例中,特定存储器组件可包含存储器单元的SLC部分和MLC部分。每一个存储器单元可存储供主机系统165使用的一或多个数据位(例如,数据块)。替代地或组合地,存储器组件171、……或173可包含一类易失性存储器。在一些实例中,存储器组件171、……或173可包含但不限于随机存取存储器(RAM)、只读存储器(ROM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、相变存储器(PCM)、磁随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、铁电随机存取存储器(FeTRAM)、铁电RAM(FeRAM)、导电桥RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)快闪存储器、电可擦除可编程只读存储器(EEPROM)、基于纳米线的非易失性存储器、并有忆阻器技术的存储器,和/或非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可执行原位写入操作,其中非易失性存储器单元可以在先前未擦除非易失性存储器单元的情况下进行编程。

一般来说,主机系统165可利用存储器系统161作为包含一或多个存储器组件171、……、173的物理存储器109。主机系统165可从存储器系统161加载指令以供执行、提供将存储于存储器系统161处的数据,并请求将在存储器系统161中检索的数据。

在图8中,主机系统165包含存储器管理单元(MMU)181和处理器169。处理器169具有执行单元(例如,185),例如算术逻辑单元。处理器169具有寄存器183(例如,133),以保存用于执行的指令、作为指令的运算元的数据和/或指令执行的结果。处理器169可具有内部高速缓存187作为存储器系统161的一部分的代理。

在一些实例中,主机系统165可包含在同一硅裸片上集成为中央处理单元(CPU)的多个处理核心的多个处理器(例如,169)。

经编程用于在处理器169中执行的例程可以一开始存储于存储器系统161中。例程可包含用于超管理器102、操作系统104和应用程序106的指令。一开始存储在存储器系统161中的例程可以加载到内部高速缓存187和/或寄存器183(例如,133)以供在执行单元185中执行。

例程的运行实例形成超管理器102、操作系统104和应用程序106的执行167。在一些实例中,不使用超管理器102;并且操作系统104控制硬件组件(例如,存储器系统161、外围输入/输出装置和/或网络接口卡),而不用超管理器。

超管理器102、操作系统104和/或应用程序106的执行167使用在一或多个虚拟存储器空间(例如,127)中限定的虚拟存储器地址(例如,141)存取存储器137(例如,在存储器组件171、……、173中)。可以使用至少一个页表151(例如,如图7中所示)将在执行中使用的虚拟存储器地址(例如,141)转换成存储器组件(例如,171、……、173)的物理存储器地址(例如,159)。

如图1中所示,超管理器102、操作系统104和应用程序106的例程的执行可以组织成多个域101、103、……、105。对于执行域101、103、……、105中的每一个和通过页表条目153标识的存储器区137,页表条目153标识用于在预定义操作类型(例如,读取、写入、执行等)中存取区137的安全性配置位的设置(例如,111、113、……、115)。对应安全性配置(例如,107)的配置位控制相应执行域(例如,101)中的对应类型的存储器存取和/或控制用于隔离调用例程和被调用例程(例如,135)的沙盒化操作。

特权寄存器133的安全性配置107可以存储在单独的权限寄存器中。权限寄存器中的每一个与域(例如,101、103、……、105)预先相关联。权限寄存器存储用于从对应域(例如,101、103、……或105)存取特权寄存器133的权限位。权限寄存器中的不同权限位可以针对不同特权寄存器(例如,133)配置。在一些实例中,特权寄存器133可针对不同存取类型(例如,读取、写入、执行)具有权限寄存器中的多个权限位。

替代地,特权寄存器133的权限位可以在相同权限寄存器中指定。此外,不同特权寄存器(例如,133)的权限位可以存储在相同权限寄存器的不同部分中。

图9示出转换对象特定虚拟存储器地址的方法。

例如,图9的方法可以在图1或8的计算机系统中执行。图9的方法可以以图2-5和7的地址转换技术和/或图6-8的安全性技术的组合方式执行。

在框301处,存储器109至少存储一组预定义域101、103、……、105的例程的指令。

例如,一组预定义域可包含超管理器的域、操作系统的域或应用程序的域中的至少一个或其任何组合。

在框303处,耦合到存储器109的计算机处理器169在多个虚拟机中执行例程。

在框305处,计算机处理器169在预定义域101、103、……、105当中的当前执行域123中并在所述多个虚拟机中的当前虚拟机中执行使用虚拟地址195或141的指令。

例如,当前执行域123可以通过处理器169的域寄存器117标识;并且当前虚拟机可以通过处理器169的虚拟机寄存器231标识。

如图5中所示,虚拟地址具有对象标识符199和在由对象标识符199表示的对象内的位置的偏移196。

在框307处,计算机处理器169至少对在虚拟地址195或141中提供的对象标识符199进行散列以产生索引125。

在框309处,计算机处理器169的存储器管理单元(MMU)181通过在地址转换表217中检索索引125处的条目250而将虚拟地址195或141转换成物理地址159。

例如,计算机处理器169可为不同域(例如,101、……、103)和/或为不同虚拟机存储单独的地址转换表(例如,217、……227)。域寄存器117的内容和/或虚拟机寄存器231的内容可用于选择地址转换表217。

在其它实例中,不同域(例如,101、……、103)和/或不同虚拟机可共享地址转换表217,但是使用的是地址转换表217中的不同条目。在此类实例中,域寄存器117的内容和/或虚拟机寄存器231的内容可以与对象标识符199和/或偏移196的一部分组合,并且所述组合进行散列121以产生索引125。

当索引125对应于从散列121映射的不同值的冲突时,地址转换表217中索引125处的条目250可标识冲突链以解决散列121的模糊性。

任选地,由虚拟地址(例如,195)的对象ID(例如,199)表示的对象的安全性配置107可以在从地址转换表217查找到的条目(例如,250)中指定,如图10中所示。

图10示出标识用于存取通过虚拟地址195标识的存储器位置的安全性配置107的系统。

在图10中,与通过对象ID 199标识的对象有关的安全性配置(例如,107)在地址转换表217的条目(例如,250)中指定。在地址转换表217中检索到的每个条目(例如,250)或其相关联的冲突链260表示或对应于存储通过对象ID 199标识的对象(或对象的一部分)的存储器区137。安全性配置107可具有用于存取和/或使用与对象有关的资源131的安全性设置。

例如,安全性配置107可指定在为各种存储器操作存取对象时在当前域123中运行的指令的权限,例如读取由对象ID 199表示的对象的任一部分、在由对象ID 199表示的对象的任一部分上写入、加载对象的任一部分作为用于执行的指令等。例如,安全性配置107可包含用于在使用虚拟存储器地址195加载具有对象ID 199的对象的例程以供执行时隔离调用例程和被调用例程(例如,135)的沙盒化要求。

如上文结合图5所论述,虚拟地址195可包含对象ID 199、对象类型198和偏移196。例如,虚拟地址195可具有128位的宽度;虚拟地址195的数个位(例如,59个或58个)可用于存储对象ID 199,虚拟地址195的另一数目个位(例如,5个或6个)可用于存储对象类型198,且虚拟地址的剩余位(例如,64个)可用于存储相对于具有类型198和ID199的对象的偏移196。例如,虚拟地址195可以是存储于存储器109中的地址,如域(例如,105)中的例程的程序员或用户所配置、编程和/或看到。

在图10中,对对象ID 199应用散列121以产生索引125。因为索引125的位数少于对象ID 199,所以当多个项散列成同一索引时,可能会发生散列冲突。

当索引125不存在散列冲突时,地址转换表217中索引125处的条目(例如,213、……或215)可以作为所得条目250进行检索。

当索引125存在散列冲突时,地址转换表217中索引125处的条目(例如,213、……或215)标识冲突链260。冲突链260具有示出散列121成同一索引125的对象ID(例如,261、263)的条目(例如,262、264……)的列表/链。可以搜索冲突链260,以在散列121之前定位指定用于与对象ID 199匹配的对象ID(例如,261或263)的条目(例如,262或264)。经定位条目(例如,262或264)示出为所得条目250。

使用索引125在地址转换表217中查找到的典型条目250可具有可以在地址转换235中的后续操作之前进行评估的安全性配置107。

在一个实施例中,地址转换表217特定于通过域寄存器117标识的当前域123。如图4中所示,域寄存器117可用于选择相应地址转换表(例如,217、……或227)的表基址(例如,219、……或229)作为在查找图10中所示的所得条目250的操作中使用的地址转换表217。在此类实施例中,安全性配置107具有用于当前域123的设置111、113、……或115,但不具有用于其它域的设置。

替代地,当地址转换表217不特定于特定域101、103、……、105时,安全性配置107可包含分别用于域101、103、……、105的设置111、113、……和115,如图6中所示;并且域寄存器117可用于选择性地应用对应于当前域123的设置(例如,111、113、……或115)。

一般来说,安全性配置107可任选地指定在当前域123中运行的指令是否被准许存取具有对象ID 199的对象以用于读取、写入、执行等。此外,安全性配置107可任选地指定是否需要隔离(例如,使用影子堆栈结构)在处理器169中运行的当前例程和正被当前例程调用的具有对象ID 199的对象的例程。

在一些实例中,安全性配置107可应用于当前在处理器169中运行的任何指令。在其它实例中,安全性配置107可应用于在以下中运行的任何指令:通过处理器169的域寄存器117标识的当前域123、通过虚拟机寄存器231标识的当前虚拟机、通过进程ID标识的运行中程序的当前实例、当前用户账户、含有经执行以存取虚拟地址195的指令的当前对象或其任何组合。

条目250可包含具有指示条目250是否有效的值的有效字段251。如果条目250有效且安全性配置107允许使用虚拟地址195进行的当前存取,那么处理器169可进一步评估用于地址转换的其它字段。

例如,条目250可包含或标识具有指示将使用条目执行的转换类型的值的类型字段253、具有指示用于确定页表条目的存储器页大小的值的页大小字段255,和具有用于将具有对象ID 199的对象的偏移196转换成物理地址159的页表或页目录的地址的地址字段257。页表条目153(或页目录条目)可具有用于对应于受页表条目153(或页目录条目)控制/由其表示的存储器区137的对象的一部分的类似安全性配置107。

一般来说,可应用安全性配置107可以在具有不同大小的存储器区的多个位置中指定。例如,在地址转换表217中检索到的条目250和/或冲突链260可指定可应用于由对象ID 199表示的整个对象的安全性配置107;并且含有一组物理地址(例如,159)的基址157的页表条目153可指定可应用于基址157处的所述一组物理地址(例如,159)的安全性配置107。类似地,标识页表151的页目录条目可指定可应用于由页表151限定的所述一组物理地址的安全性配置。

当可应用安全性配置107在具有不同大小的存储器区的多个位置中指定时,为存储器区中的最大一个存储器区指定的安全性配置107可替代为其它存储器区指定的安全性配置107。因此,当找到为存储器区中的最大一个存储器区指定的可应用安全性配置107时,处理器169可跳过为其它存储器区指定的安全性配置107的处理。

替代地,当可应用安全性配置107在具有不同大小的存储器区的多个位置中指定时,为存储器区中的最小一个存储器区指定的安全性配置107可替代为其它存储器区指定的安全性配置107。

替代地,当可应用安全性配置107可以在具有不同大小的存储器区的多个位置中指定时,在可应用存储器区中的任一安全性配置107中指定的存取禁止可使存取请求被拒绝。

在地址转换表217的条目250中提供的地址257可以是页表或页目录的存储器地址。偏移196的至少一部分可用作页表或页目录中的虚拟页码和索引以查找下一页表或页目录。在一些实例中,偏移196的所述部分进行散列以产生页表或页目录的索引,以便查找下一页表或页目录。查找下一页表或页目录的过程可以重复,直到使用偏移196中的最后一个虚拟页码查找到的条目用于定位页表条目(例如,图7中所示的153)为止。在页表条目153中标识的物理存储器页的基址157可以与偏移196的其余部分组合(例如,如图7中所示的偏移147)以产生物理地址(例如,图7中所示的159)。

如上文结合图5所论述,散列121可应用于对象ID 199、任选地对象类型198、偏移的一部分、虚拟机寄存器231的内容和/或其它信息(例如在处理器169中运行的当前进程的处理器ID和/或域寄存器117的内容)的组合。在一些实例中,域寄存器117的内容和/或虚拟机寄存器231的内容可以附加/添加到散列121的结果中以产生索引125。

图11示出使用虚拟地址195进行的存储器存取的安全性参数。

例如,图11所示的安全性配置107中的安全性参数可以在从地址转换表217检索到的条目和/或其相关联的在图10中示出的冲突链260中指定。

在图10中,当处理器169使用虚拟地址195存取存储器位置时,处理器169标识安全性配置107(例如,使用图10中所示的技术)。安全性配置107可具有字段界限检查331。

安全性配置107可具有标识用于对虚拟地址195的偏移196执行(322)界限检查的要求的界限检查字段331。当字段界限检查331具有预定值(例如,1)时,处理器169比较偏移196与对象长度333以确定偏移196是否在由对象长度333限定的有效偏移的边界内。例如,如果偏移196大于对象长度333,那么处理器169可拒绝存储器存取;并且响应于所述拒绝,可使用指定用于处理所述拒绝的软件陷阱。当字段界限检查331具有另一预定值(例如,0)时,处理器169可跳过对偏移196执行(323)界限检查和/或忽略对象长度333。

安全性配置107可具有标识用于施行在安全性配置107中指定的权限343、345、……、347的要求的权限检查字段341。当字段权限检查341具有预定值(例如,1)时,处理器169检查对应于经由虚拟地址195请求的存储器操作类型的权限位(例如,343、345、……或347)。例如,如果虚拟地址195用于引起存储器读取操作的指令,那么检查读取权限343。如果虚拟地址195用于引起存储器写入操作的指令,那么检查写入权限345。如果虚拟地址195用于引起存储器位置处的指令执行的指令,那么检查执行权限347。如果相应权限位禁止经由虚拟地址195请求的当前存储器存取类型,那么处理器169可拒绝存储器存取;并且响应于所述拒绝,可使用指定用于处理所述拒绝的软件陷阱。但是,当字段权限检查341具有另一预定值(例如,0)时,处理器169可继续进行虚拟地址195的地址转换(236),而不用施行权限343、345、……、347。

任选地,处理器169可包含当当前对象的指令正在处理器169中运行时存储当前对象的对象ID的对象寄存器321。例如,当虚拟地址195用于加载具有对象ID 199的对象的指令以供执行时,对象寄存器321在具有对象ID 199的对象的指令执行期间存储对象ID 199。

任选地,当虚拟地址195用于存取存储器时,安全性配置107可包含用于通过对象寄存器321标识的对象的权限(例如,343、345、……、347)以存取具有对象ID 199的对象。例如,经由条目250标识的安全性配置107可包含一组对象的权限表。根据权限表,处理器可查找为通过对象寄存器标识的对象指定的权限。权限表可使用对象ID的散列来查找为对象指定的权限,方式类似于使用散列121在地址转换表中定位条目250。

在一些实施方案中,当权限表不为给定对象指定权限时,可以为使用虚拟地址195进行存储器存取请求的对象使用默认权限(例如,343、345、……、347)。在其它实施方案中,当权限表不为给定对象指定权限时,存储器存取被拒绝。在另一实施方案中,存储器存取被允许,除非默认权限(例如,343、345、……、347)和/或权限表具有禁止存取的权限位。

任选地,安全性配置107可包含用于存储于通过虚拟地址195标识的存储器位置处的数据的加密操作的密钥335。例如,存储于所述存储器位置处的项可以呈加密或加扰形式;并且密钥335可用于对数据项进行解密或解扰。处理器169内的数据保护的一些实例和细节可见于2018年8月3日提交且名称为“计算机处理器中的数据保护(Data Protectionin Computer Processors)”的第16/054,913号美国专利申请和2018年9月18日提交且名称为“计算机处理器中的密钥管理(Key Management in Computer Processors)”的第16/134,387号美国专利申请,所述申请的全部公开内容由此以引用的方式并入本文中。

任选地,安全性配置107可包含用于具有对象ID 199的对象的沙盒设置。当沙盒设置具有预定值时,经由虚拟地址195被调用的例程将使用影子堆栈结构与调用例程隔离,其中调用例程和被调用例程使用单独的调用堆栈;否则,调用例程和被调用例程可以使用同一调用堆栈执行。影子堆栈结构的一些细节和实例可见于2018年8月30日提交且名称为“执行域的页表条目中的安全性配置(Security Configurations in Page Table Entriesfor Execution Domains)”的第62/724,913号美国专利申请,此申请的全部公开内容由此以引用的方式并入本文中。

图12示出响应于使用虚拟地址进行的存储器存取请求而执行安全性操作的方法。

例如,图12的方法可以在图1或8的计算机系统中执行。图9的方法可以以图2-5、7和9的地址转换技术和/或图6-8和10-11的安全性技术的组合方式执行。

在框351处,计算机系统(例如,如图1或8中所示)在存储器109中至少存储一组预定义域(例如,101、103、……、105)的例程的指令。域(例如,101、103、……、105)不具有预定义水平的信任和/或层次。

在框353处,计算机系统的处理器169在预定义域(例如,101、103、……、105)当中的当前执行域123中执行使用虚拟地址(例如,195或141)的指令。虚拟地址195具有对象标识符199和在由对象标识符199表示的对象内的位置的偏移196。虚拟地址195可以经编程且存储在从存储器109加载的例程中。

在框355处,处理器169标识对应于所述一组域(例如,101、103、……、105)当中的当前执行域123的表217。例如,图4中所示的技术可用于使用存储当前执行域123的标识符的域寄存器117标识表217。

在框357处,处理器169至少对在虚拟地址195中提供的对象标识符199进行散列121以产生索引125。

在框359处,处理器169使用索引125在表217中检索条目250。条目250包含或标识特定于由对象标识符199表示的对象的安全性配置107。

在框359处,处理器169基于安全性配置250保护经由执行使用虚拟地址195的指令进行的存储器存取的安全。

在一个实例中,安全性配置250标识对象长度333;并且处理器169比较偏移196与对象长度333,以确定由执行使用虚拟地址195的指令引起的存储器存取是否会被拒绝。例如,响应于确定偏移196超过通过对象长度333标识的界限,处理器可拒绝与虚拟地址195相关联的存储器存取请求。

在一些实施方案中,安全性配置250包含界限检查字段331。当界限检查字段331具有预定值(例如,1或0)时,处理器169比较偏移196与对象长度333以进行界限检查(323);否则,处理器169可跳过偏移196与对象长度333的比较。

在另一实例中,安全性配置包含用于当前执行域123的存储器存取类型的权限位(例如,343、345、……或347)。处理器169可根据权限位的值而拒绝与虚拟地址195相关联的存储器存取请求。例如,权限位(例如,343、345、……或347)可以设置成预定值(例如,1或0),以禁止所述一组域101、103、……、105当中的当前执行域123的所述存储器存取类型;并且权限位(例如,343、345、……或347)的另一值不禁止所述存储器存取类型。所述存储器存取类型的实例包含从虚拟地址读取数据、将数据写入到虚拟地址或执行存储于虚拟地址处的指令,或任何组合。

在一些实施方案中,安全性配置250包含权限检查字段341。当权限检查字段341具有预定值(例如,1或0)时,处理器169检查权限位(例如,343、345、……或347);否则,处理器169可跳过权限位(例如,343、345、……或347)的检查。

在另一实例中,安全性配置包含或标识用于存储在存储器109中虚拟存储器地址195处的项的加密操作的密钥335。例如,项可以加密或加扰形式存储;并且密钥335用于对项进行解密以供在指令的执行期间进行计算,和/或指令的执行结果根据密钥335进行加密,以存储在存储器109中虚拟存储器地址195处。

在又一实例中,安全性配置包含沙盒设置。当虚拟地址标识被调用例程中的指令调用的被调用例程的存储器位置时,处理器169可基于沙盒设置而选择性地隔离调用例程的执行与被调用例程的执行。例如,当沙盒设置具有预定值时,处理器169为调用例程和被调用例程使用单独的调用堆栈;否则,处理器169可以将相同的调用堆栈用于调用例程的执行和被调用例程的执行。

本文所公开的技术可至少适用于其中处理器与存储器分隔开且处理器经由通信总线和/或计算机网络与存储器和存储装置通信的计算机系统。此外,本文所公开的技术可适用于其中处理能力集成于内存/存储装置内的计算机系统。例如,包含典型处理器的执行单元和/或寄存器的处理电路可以在存储器媒体的集成电路和/或集成电路封装内实施以执行存储器装置内的处理。因此,如上文所论述和附图中所示的处理器(例如,101)不一定是冯·诺伊曼体系结构中的中央处理单元。处理器可以是集成于存储器内以克服冯·诺依曼瓶颈的单元,所述瓶颈因为由根据冯·诺伊曼体系结构分开配置的中央处理单元和存储器之间的数据移动的时延造成的吞吐量限制而限制了计算性能。

本公开的描述和附图是说明性的,且不应被解释为限制性的。描述了许多具体细节,以提供透彻的理解。然而,在某些实例中,为了避免模糊描述,不描述众所周知的或常规的细节。对本公开中的一个或某一实施例的引用不一定是对同一实施例的引用;并且这种引用意味着至少一个。

在前述说明书中,已经参考本公开的特定示例性实施例描述了本公开。显而易见的是,在不背离所附权利要求书所阐述的更广泛的精神和范围的情况下,可以对其进行各种修改。因此,说明书和附图应被视为说明性的而不是限制性的。

相关技术
  • 用于存储器地址从对象特定虚拟地址空间转换成物理地址空间的安全性配置
  • 用于可重新配置存储器系统的虚拟化物理地址
技术分类

06120112579741