在计算机处理器中执行指令时的域交叉
文献发布时间:2023-06-19 10:25:58
本申请要求以下的提交日期的权益:2018年7月23日提交且名称为“在计算机处理器中执行指令时的域交叉(Domain Crossing in Executing Instructions in ComputerProcessors)”的第16/520,299号美国专利申请;2018年8月30日提交且名称为“在计算机处理器中执行指令时的域交叉(Domain Crossing in Executing Instructions inComputer Processors)”的第62/725,030号临时美国专利申请;2018年8月30日提交且名称为“通过在执行域的页表条目中指定的权限的存储器存取控制(Memory Access Controlthrough Permissions Specified in Page Table Entries for Execution Domains)”的第62/724,896号临时美国专利申请;2018年8月30日提交且名称为“执行域的页表条目中的安全性配置(Security Configurations in Page Table Entries for ExecutionDomains)”的第62/724,913号临时美国专利申请;2018年8月30日提交且名称为“处理器寄存器的基于执行域的存取控制(Access Control for Processor Registers based onExecution Domains)”的第62/724,929号临时美国专利申请;及2018年8月30日提交且名称为“用于正在计算机处理器中执行的指令的域寄存器(Domain Register forInstructions being Executed in Computer Processors)”的第62/724,999号临时美国专利申请,所述申请的全部公开内容由此以引用的方式并入本文中。
技术领域
本文中所公开的至少一些实施例大体上涉及计算机体系结构,且更确切地但不限于保护在计算机处理器中执行指令时的域交叉的安全。
背景技术
经编程用于计算机的指令可以分层方式结构化。一个层可以为另一层提供资源和服务。例如,超管理器可以创建或提供在计算机硬件组件上实施的虚拟机。操作系统可以使用具有预定义体系结构的计算机中可用的资源来提供资源和服务。由操作系统操作的计算机资源或计算机可以是实际的计算机硬件组件,也可以是由超管理器提供的虚拟机组件。应用程序可以使用操作系统提供的服务和资源提供应用程序特定的功能。
附图说明
在附图的图中作为实例而非限制示出了实施例,在附图中,相似的参考标号指示类似的元件。
图1示出根据一些实施例的使用域存取表存取不同域中的例程的指令的执行。
图2示出旨在存取域中的例程的域存取表的使用。
图3示出根据一些实施例的具有域寄存器的计算机处理器。
图4示出根据域寄存器控制应用于资源的安全性操作的系统。
图5示出执行域的具有安全性配置的页表条目。
图6示出具有控制安全性操作的域寄存器的计算机系统。
图7示出在计算机处理器中执行指令时执行域交叉的方法。
具体实施方式
本公开包含保护用于跨不同的非层次域执行例程的调用的安全的技术。
在传统的系统中,可以向指令的不同层(例如,用户应用程序相较于操作系统)给予不同水平的特权和/或信任。通常,保护环是在计算机中构建和实施的,以保护数据和功能免受基于环层次的故障和恶意行为的影响。从最高特权(因而最受信任)到最低特权(因而最不受信任)的环静态地布置成层次。例如,层次可包含一个具有最高特权的操作系统内核环、一个装置驱动器环和一个具有最低特权的应用程序环。较低特权环中的程序或例程可以由相应的专用硬件强制控制门来限制,以存取层次中较高特权环的资源和服务。环之间的门控存取可以提高安全性。
在本公开的技术中,经编程用于计算机系统的指令或例程可以分类成一组预定义非层次的域,例如超管理器的域、操作系统的域、应用程序的域等。一或多个域存取表可用于指定允许进行调用以在不同于当前域的域中执行例程的入口点。每个域存取表可以与相应域相关联。一组寄存器可用于标识域的域存取表的基址。域寄存器可以在处理器中配置成存储当前正在处理器中执行的指令的当前域的标识符或指示符。在经由域存取表成功处理调用以执行例程之后,域寄存器的内容更新成显示用于处理所述调用的域存取表的域。当被调用例程的执行跨域返回到调用例程时,返回可以按照类似于调用的方式来处理。因此,可以防止发生任意和/或未授权的域交叉。
图1示出根据一些实施例的使用域存取表217、……、227在不同域(例如,101、……、105)中存取例程的指令193的执行。
经编程用于计算机系统的例程可以分类到各种预定义的非层次域(例如,101、……、105)中。执行域的实例包含超管理器的域、操作系统的域、应用程序的域等。超管理器或虚拟机监视器(VMM)创建并管理虚拟机。超管理器可控制基本功能,例如物理存储器和输入/输出。
域中当前正在计算机处理器中执行的例程191的指令193可请求转变成另一域中的例程。因为图1的指令193请求从源域转变到目的地域,所以指令193配置成标识目的地域的域标识符197,以及特定于所述交易的操作195。例如,操作195可以是调用目的地域中的例程或从先前调用返回到目的地域中的例程。指令193中的域标识符197显式地标识目的地域(例如,101、……或105);且在指令193中提供的条目索引199指定对应目的地域(例如,101、……或105)的域存取表(例如,217、……或227)中的入口点。在一些实施方案中,域标识符197可以在寄存器(或堆栈)中指定,所述寄存器配置成存储目的地域的标识符197以执行需要执行控制转变(例如,调用被调用例程,或返回到调用例程)的指令(例如,193)。
在图1中,每个域(例如,101、……或105)具有对应的标识对应域存取表(例如,217、……或229)的基址或存储器位置的寄存器(例如,219、……或229)。计算机系统加载有有效域存取表(例如,217、……或229)的内容。
例如,当域标识符197是域A101时,其相关联寄存器219用于定位域存取表A 217。域存取表A 217存储可用于验证域A 101的条目索引199的可用条目数目211。例如,处理器可验证在指令193中提供的条目索引199,此条目索引对照由可用条目数目211限定的有效索引范围进行验证。如果考虑到域存取表217的条目数目211,条目索引199是有效的,那么条目索引199可用于在域存取表A 217中查找条目(例如,213、……或215)。从域存取表A217查找到的条目(例如,213、……或215)可用于安全地将执行控制从例程191的指令193的源域传递到通过在指令193中提供的域标识符197标识的目的地域101。
类似地,当域标识符197是域C 105时,其相关联寄存器229可用于定位对应的域存取表C 227,此域存取表专门配置用于域C 105。域存取表C 227的条目数目221用于检查在指令193中提供的条目索引199的有效性;且如果条目索引199有效,那么在域存取表C 227中查找条目(例如,223、……或225),以将执行控制从含有指令193的例程191的源域传递到目的地域105。
在一些实施方案中,将执行控制从一个域101传递到另一域(例如,105)只通过预定义域存取表(例如,217、……、227)来准许。禁止任意域交叉。因此,提高了计算机系统的安全性。
在一些实施方案中,域存取表217、……、227的条目(例如,213、……215;223、……、225)可任选地包含用于授权从源域到由相应条目(例如,213、……、215;223、……、225)表示的相应入口点的转变的权限数据。
例如,域A 105的条目X 223可具有允许从指令193的域转变到通过条目X 223标识的域105中的入口点的权限数据;且相同域A 105的条目Z 225可具有拒绝从相同指令193的相同域转变到通过条目Z 225标识的相同目的地域105中的入口点的不同权限数据。
在一些实施方案中,条目(例如,213、……、215;223、……、225)可任选地包含用于从各种源域转变到由条目(例如,213、……、215;223、……、225)表示的相应入口点的安全性选项数据。
例如,目的地域105的条目X 223可具有需要沙盒化来从指令193的源域转变到由域105中的条目X 223限定的入口点的安全性选项数据;且目的地域105中不同入口点的条目Z 225可具有不使用沙盒化来从指令193的相同源域转变到由相同目的地域105中的条目Z 225限定的入口点的不同安全性选项数据。
在一些实施方案中,条目(例如,213、……、215;223、……、225)可提供虚拟存储器地址,以用于存取是域101、……、105的入口点的例程。权限数据和安全性选项数据可以在页表条目中指定以将虚拟存储器地址转换成物理地址,如下文进一步论述。
图1示出为不同域(例如,101、……、105)使用单独的域存取表217、……、227的实例。替代地,条目(例如,213、……、215;223、……、225)可以在组合域存取表中组合,其中表的条目含有标识通过条目(例如,213、……、215;223、……、225)标识的例程的域的信息。例如,条目(例如,213、……、215;223、……、225)可以是用于定位相应例程的存储器地址;且域的标识符可以编码或嵌入于存储器地址内。在一些实施方案中,处理器配置成拒绝不是使用图1所示的指令(例如,193)的形式进行的域交叉。
在一个实施方案中,每个域101、……或105具有单独的存储器区域,所述存储器区域配置成存储相应域101、……或105的寄存器的值。此类用于在执行临时转变到另一域时存储特定于域(例如,101)的寄存器的值的单独存储器区域可被相应域(例如,101)存取,但不可被其它域(例如,105)存取。因为其它域(例如,101)无法存取给定域(例如,105)的寄存器值区,所以给定域(例如,105)的寄存器状态被隔离,且被保护不受其它域(例如,101)中的执行影响。例如,用于特定域(例如,101)的域特定寄存器的存储器区域可存储正在处理器中执行的指令的程序计数器(PC)的值、用于指令执行的堆栈的堆栈指针(SP)的值、堆栈的帧指针(FP)的值、用于堆栈的变量参数指针(AP)的值和/或处理器状态字(PSW)的值,等等。所述特定域(例如,101)可具有与其它域(例如,105)的堆栈分隔开的单独堆栈;且其它域不可存取所述特定域(例如,101)的堆栈。当在域(例如,101)中运行的调用例程使用域调用指令191调用以执行另一域(例如,105)中的被调用例程时,用于调用域(例如,101)的寄存器(例如,PC、SP、FP、AP、PSW)的值在存储器中存储于调用域(例如,101)的寄存器值区中。在从调用域(例如,101)转变执行之前,处理器可在调用域(例如,101)的寄存器值区中存储寄存器(例如,PC、SP、FP、AP、PSW)的当前值;且在将执行转变到被调用域(例如,105)之后,处理器可初始化被调用域(例如,105)的寄存器值区。例如,被调用域(例如,105)的程序计数器(PC)可以初始化成具有从被调用域(例如,105)的域存取表227的条目(例如,223、……或225)获得的值,这允许处理器开始处理被调用域105中的被调用例程。当域返回指令191指定要返回到的目的地域(例如,101)时,处理器可在目的地域(例如,101)的寄存器值区中检索寄存器值以供返回,并使用检索到的值初始化相应寄存器(例如,PC、SP、FP、AP、PSW)。如果在目的地域(例如,101)的堆栈中存在有效返回块,那么可以执行到在目的地域(例如,101)的堆栈中为返回标识的对应返回点的返回。
替代地和/或组合地,每个域101、……或105可具有单独的一组此类寄存器(例如,PC、SP、FP、AP、PSW),它们可用作相应域101、……或105的寄存器值区。
图2示出旨在存取域101中的例程135、……、136的域存取表217的使用。
在图2中,条目223、……、225中的每一个标识域105中相应例程135、……或136的位置。例如,在相应例程(例如,135、……或136)开始时,位置可以标识为指令(例如,132、……或134)的存储器地址。例如,每个条目223、……或225可以是对应例程135、……、136的存储器地址;且计算机系统的处理器可使用从域存取表227查找到的存储器地址,将执行控制传递到使用图1的指令193而被调用的例程。
任选地,计算机处理器的域寄存器可用于存储当前正在计算机处理器中执行的例程(例如,191)的域标识符。例如,在执行引起域交叉的指令193后,域寄存器的内容可以在指令193被成功处理(例如,使用域存取表227)以运行目标例程(例如,135、……或136)之后更新成存储指令193的域标识符197。域寄存器的内容可控制处理器的各种安全性操作。
例如,当指令的执行引起对存取使用虚拟存储器地址标识的存储器位置的请求时,虚拟存储器地址可以使用一或多个页表转换成物理存储器地址。域寄存器的内容可用于在页表条目中选择用于在当前域中进行的存储器存取的权限位。选定权限位可控制对存取通过虚拟存储器地址标识的存储器单元的请求的处理。
例如,当调用执行具有虚拟存储器地址的例程时,域寄存器的内容可用于在页表条目中选择用于将虚拟存储器地址转换成物理存储器地址的安全位。选择安全位用于在为通过域寄存器标识的当前域提供服务时执行例程。选定安全位控制在被调用例程和调用例程之间分开资源和/或数据的安全性操作。
例如,当指令的执行产生对存取特权寄存器的请求时,域寄存器的内容可用于在例如权限寄存器中选择权限位以供当前域存取特权寄存器。权限位可控制对存取特权寄存器的请求的接受或拒绝。
图3示出根据一些实施例的具有域寄存器117的计算机处理器169。
图3的计算机处理器169耦合到存储器109,所述存储器存储各种预定义的非层次域101、103、……、105的例程,例如超管理器102的域101、操作系统104的域103、应用程序106的域105。物理存储器109可用于存储经编程用于计算机系统的各种例程的数据和指令。
例如,超管理器102的例程可以分类在域A 101中;操作系统104的例程可以分类在另一域B 103中;且应用程序106的例程可以分类在另一域C 105中。超管理器或虚拟机监控器(VMM)创建并管理虚拟机。超管理器可控制基本功能,例如物理存储器和输入/输出(I/O)。
一般来说,例程可包含存储于存储器109中的预编程指令集。例程还可具有存储于存储器109中的输入数据、输出数据和/或临时数据。例程可激活或调用用于服务和/或资源的另一例程。调用例程和被调用例程可以在相同或不同的域(例如,101、103、……、105)中。
图3的处理器169具有执行单元(例如,185),例如算术逻辑单元。处理器169可包含内部高速缓存187作为存储器109的一部分的代理。处理器169具有寄存器183,用于保存用于执行的指令、作为指令的运算元的数据和/或指令执行的结果。
域寄存器117是处理器169的寄存器183中的一个。域寄存器117存储正在处理器169中执行的一组指令(例如,例程)的当前域的标识符或指示符。域寄存器117的内容控制处理器189中的安全性操作,如下文进一步论述。
在一个实施方案中,当具有处理器169的计算机系统初始通电(自举)时,处理器169配置成自动执行超管理器102或操作系统104的例程(若未使用超管理器)。这是自举过程的一部分。因此,域寄存器117初始设置为指示超管理器102的域101或操作系统104的域103。随后,执行控制可使用标识目的地域的指令(例如,图1所示的193)从一个域移动到另一域;且域寄存器117的内容可以根据此类指令(例如,图1所示的193)的处理进行更新。
替代地或组合地,当前运行的例程的域可以基于存储器地址、例程的所存储属性等来标识。
例如,在计算机处理器169中的域寄存器117中指定当前域123的一些技术可见于2018年8月30日提交且名称为“用于正在计算机处理器中执行的指令的域寄存器(DomainRegister for Instructions being Executed in Computer Processors)”的第62/724,999号美国专利申请,此申请的全部公开内容由此以引用的方式并入本文中。
在一些实例中,当前域123可以根据用于加载例程191的指令193以供执行的存储器地址标识。
例如,存储器地址对于处理器169具有预定宽度(例如,预定数目个位)。存储器地址可包含表示对象ID的部分和在表示由对象ID表示的对象内的偏移的部分。例如,例程191可以是定位在地址处的对象;且地址的对象ID可用于标识指令193和/或例程191的某些特性;且当前域123可根据所述特性确定。
例如,具有预定值(例如,0)的静态对象ID可用于表示操作系统104的内核对象。因此,在存储器地址中指定的静态对象ID可用于标识用于例程191的执行的当前域123。加载用于执行的指令的计算机处理器的存储器地址中的静态对象ID的一些细节和实例可见于2018年7月6日提交且名称为“基于对象的存储器存取中的静态标识(StaticIdentifications in Object-based Memory Access)”的第16/028,840号美国专利申请,此申请的全部公开内容由此以引用的方式并入本文中。
在一些实例中,存储器地址的对象ID可包含表示对象类型的部分。例如,具有值0到3的对象类型可用于标识操作系统的内核对象。例如,具有值4到5的对象类型可用于指定偏移是具有不同宽度的地址(例如,包含在具有128位的存储器地址内的64位地址或32位地址)。例如,具有值6到7的对象类型可用于指定对象ID的预定部分将解译为本地对象或分割全局地址空间(PGAS)中的对象的标识符。例如,具有值32的对象类型可用于指定对象ID的其余部分将解译为在服务器(例如,197)中限定的对象的标识符。例如,对象名称服务器可存储指示由对象ID表示的对象的名称、对象的存取控制参数和/或对象的其它属性的数据。
例如,用于加载例程191以供执行的存储器地址的对象ID 199可具有存储在对象名称服务器中的属性。属性可用于确定或推断从存储器地址加载的例程的当前域123。
在一些实例中,例程191具有与例程191相关联地存储(例如,在存储器109中、在用于确定指令193的物理地址的页表条目中、在用于进行调用以执行例程的条目表中)的属性。当加载例程191以供执行时,例程191的属性用于确定用于执行例程191的当前域123。
图4示出根据域寄存器117控制应用于资源(例如,131)的安全性操作的系统。
在图4中,基于在域寄存器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中正执行例程191时,域寄存器117使安全性控制119选择与匹配当前域123的域(例如,101、103、……或105)预先相关联的设置(例如,111、113、……或115)。选定设置(例如,111、113、……或115)供安全性控制119用于自定义资源131的安全性操作。
例如,当处理器169中的例程191的指令193的执行请求对存储器区137的存储器存取时,使其预先相关联域(例如,101、103、……、105)与当前域123匹配的选定设置(例如,111、113、……或115)供安全性控制119用于确定存储器存取是否被准许。
例如,存储器109中的不同区(例如,137)可以配置有不同的安全性配置(例如,107);并且每个安全性配置(例如,107)可包含用于不同域101、103、……、105的不同权限(例如,111、113、……、115)。例如,安全性配置107可以在用于虚拟存储器地址的逻辑到物理地址转换的页表条目中指定,使得存储器区的结构可对应于存储器页结构,如下文结合图5进一步论述。
例如,物理存储器109可以划分成多个区;每个区(例如,137)可以是用于存储器管理的物理存储器109的页或物理存储器109的一组页。
例如,典型的存储器区137可具有指定用于所述一组预定义域101、103、……、105的相应安全性配置107。安全性配置107显式地标识每个域101、103、……、105的权限(例如,111、113、……、115)。因此,存取存储器区137的例程的特权不取决于域102、103、……、105的层次。
在一个实例中,当在当前域123中执行的例程191使存储器存取存储器区137以进行指令读取、写入或执行时,域寄存器117使安全性控制119检查在对应于当前域123的设置111、113、……或115中指定的权限。是否针对特定操作类型(例如,读取、写入、执行)通过在当前域123中执行例程191的指令193来阻止(或拒绝)存取存储器区137可基于根据存储器区137的当前域123且针对所述操作类型选定的相应权限位来确定。用于对存储器区137的存储器存取的权限的一些细节和实例可见于2018年8月30日提交且名称为“通过在执行域的页表条目中指定的权限的存储器存取控制(Memory Access Control throughPermissions Specified in Page Table Entries for Execution Domains)”的第62/724,896号美国专利申请,此申请的全部公开内容由此以引用的方式并入本文中。
一般来说,相同域(例如,103)的不同例程可配置成在不同存储器区中,且因此配置成对于相同域(例如,103)具有不同权限和安全性设置。
此外,例程可配置成存储其数据在不同存储器区(例如,137)中的不同部分,且因此配置成具有从相同域(例如,101、103、……或105)存取的不同权限。
在另一实例中,当在当前域123中执行的例程191调用存储于存储器区137中的被调用例程135以供执行时,域寄存器117使安全性控制119检查在对应于当前域123的设置111、113、……或115中指定的权限。是否部署安全措施以保护调用例程191的资源不受被调用例程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和调用例程191不受彼此影响)。因此,基于在域寄存器117中标识的当前域123及配置成用于相应域101、103、……、105的显式设置(例如,111、113、……、115),沙盒化操作可以选择性地应用于执行存储于存储器区137中的被调用例程135,而不用依赖于域102、103、……、105的预定义层次。
例如,当前域123中的调用例程191可调用被调用例程135。是否针对执行存储于存储器区137中的被调用例程135的调用激活沙盒化操作可基于为匹配存储器区137的当前域123的相应域(例如,101、103、……或105)指定的沙盒设置(例如,111、113、……或115)来确定。因此,沙盒化操作可以独立于被调用例程135的域和当前调用域123之间的相对层次来激活。
例如,存储于存储器区137中的例程的沙盒设置107可以在用于虚拟存储器地址的逻辑到物理地址转换的页表条目中指定,使得存储器区的结构可对应于存储器页结构,如下文结合图5进一步论述。
在另一实例中,当在当前域123中执行的例程191请求存取特权寄存器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号美国专利申请,此申请的全部公开内容由此以引用的方式并入本文中。
因为图4的安全性控制系统不依赖于预定义域信任层次(即为非层次的),所以它可以提供比常规保护环更好的灵活性和更精细的控制粒度。
图5示出执行域(例如,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。
在图5中,页表条目153不仅指定页或区137的基址157,而且还为页或存储器区137指定安全性配置107,例如将数据读取到对应于基址157的存储器区137中的权限、用于将数据写入到存储器区137中的权限、用于执行存储于存储器区137中的指令的权限、用于调用存储于存储器区137中的例程的沙盒化要求。安全性配置107可具有分别用于图3和4中所示的预定义非层次域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的内容都可以图5中所示的方式配置成为不同域101、103、……、105提供安全性配置107,以便存取对应于基址157的页/存储器区137和/或存储于存储器区137中的例程。
在图5中,页或区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中的例程191到存储在区137中的被调用例程135的当前调用以使用沙盒化操作保护调用例程191和被调用例程135不受彼此影响(例如,通过在堆栈使用中使用影子堆栈来分开调用程序和被调用程序)。当对应于域寄存器117中的当前域123的沙盒设置位(例如,111、113、……或115)设置为具有第二值(例如,0或1)时,实施从当前域123中的例程191到存储于存储器区123中的被调用例程135的调用,而不使用沙盒化操作将调用程序和被调用程序彼此隔离(例如,不使用影子堆栈)。
任选地,安全性配置(例如,107)是在底层页表151中指定而不是在较高层页表(目录)中指定的。
图6示出具有控制安全性操作的域寄存器117的计算机系统。
例如,图6的计算机系统可任选地具有存储用于通过图3和4中所示的预定义域101、103、……、105中的例程存取由图5的页表条目153标识的存储器区的安全性配置107的页表(例如,151)。此外,图6的计算机系统可任选地具有图1和2的域存取表217、……、227,以促进和保护域交叉。
例如,图6的计算机系统可具有存储用于存取图3和4中所示的预定义域101、103、……、105的特权寄存器133的安全性配置107的一或多个权限寄存器。
处理器169的域寄存器117存储当前域123的标识符。域寄存器117的内容选择安全性配置107中对应于当前域123的一组可应用设置。
图6的计算机系统具有经由一或多个总线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中检索的数据。
在图6中,主机系统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(例如,如图5中所示)将在执行中使用的虚拟存储器地址(例如,141)转换成存储器组件(例如,171、……、173)的物理存储器地址(例如,159)。
如图3中所示,超管理器102、操作系统104和应用程序106的例程的执行可以组织成多个域101、103、……、105。对于执行域101、103、……、105中的每一个和通过页表条目153标识的存储器区137,页表条目153标识用于在预定义操作类型(例如,读取、写入、执行等)中存取区137的安全性配置位的设置(例如,111、113、……、115)。对应安全性配置(例如,107)的配置位控制相应执行域(例如,101)中的对应类型的存储器存取和/或控制用于隔离调用例程(例如,191)和被调用例程(例如,135)的沙盒化操作。
特权寄存器133的安全性配置107可以存储在单独的权限寄存器中。权限寄存器中的每一个与域(例如,101、103、……、105)预先相关联。权限寄存器存储用于从对应域(例如,101、103、……或105)存取特权寄存器133的权限位。权限寄存器中的不同权限位可以针对不同特权寄存器(例如,133)配置。在一些实例中,特权寄存器133可针对不同存取类型(例如,读取、写入、执行)具有权限寄存器中的多个权限位。
替代地,特权寄存器133的权限位可以在相同权限寄存器中指定。此外,不同特权寄存器(例如,133)的权限位可以存储在相同权限寄存器的不同部分中。
图7示出在计算机处理器169中执行指令时执行域交叉的方法。
例如,图7的方法可以在图6的计算机系统中使用图1和2的域存取表217、……、227、图5的指定用于图3和4中所示的执行域101、103、……、105的图4的安全性配置107的页表151来执行。
在框301处,计算机处理器169接收调用以执行例程(例如,191)的指令193。
例如,如图1中所示的指令193可指定例程(例如,191)的域105的标识符197和用于在与域105相关联的域存取表227中查找条目的条目索引199。
在框303处,计算机处理器169从指令中提取例程191的域105的标识符197及条目索引199。
在框305处,计算机处理器169使用通过与域105的标识符197预先相关联的寄存器229标识的域存取表227来处理调用。
在框307处,计算机处理器169检查域存取表227的条目索引199的有效性。
例如,条目索引199在域存取表227的使用存储在域存取表227中或与其一起存储的条目数目221的有效索引的上限和/或下限外部。
在框309处,如果条目索引199有效,那么计算机处理器169使用条目索引199在域存取表227中检索条目(例如,223)。
在框311处,计算机处理器169验证经由通过条目索引199标识的入口点进入域105的权限。
例如,不同源域(例如,指令193的域)的权限可以存储为条目223的部分。替代地,条目223可包含例程191的虚拟存储器地址141;且例程191的权限和/或其它安全性选项数据可以在用于将虚拟存储器地址141转换成物理存储器地址159以加载例程193的页表条目153中存储为安全性配置107的部分。
在框313处,计算机处理器169转变到域105中的例程193。
例如,在转变到执行例程193期间,计算机处理器169可通过存储目的地域105的域标识符197以标识当前域123来更新域寄存器117。在域寄存器117中指定的当前域123控制指定匹配当前域123的相应域(例如,101、103、……或105)的安全性配置107的设置(例如,111、113、……或115)的选择;且选定设置(例如,111、113、……或115)用于在例程193的执行期间控制安全性操作。
本文所公开的技术可至少适用于其中处理器与存储器分隔开且处理器经由通信总线和/或计算机网络与存储器和存储装置通信的计算机系统。此外,本文所公开的技术可适用于其中处理能力集成于内存/存储装置内的计算机系统。例如,包含典型处理器的执行单元和/或寄存器的处理电路可以在存储器媒体的集成电路和/或集成电路封装内实施以执行存储器装置内的处理。因此,如上文所论述和附图中所示的处理器(例如,101)不一定是冯·诺伊曼体系结构中的中央处理单元。处理器可以是集成于存储器内以克服冯·诺依曼瓶颈的单元,所述瓶颈因为由根据冯·诺伊曼体系结构分开配置的中央处理单元和存储器之间的数据移动的时延造成的吞吐量限制而限制了计算性能。
本公开的描述和附图是说明性的,且不应被解释为限制性的。描述了许多具体细节,以提供透彻的理解。然而,在某些实例中,为了避免模糊描述,不描述众所周知的或常规的细节。对本公开中的一个或某一实施例的引用不一定是对同一实施例的引用;并且这种引用意味着至少一个。
在前述说明书中,已经参考本公开的特定示例性实施例描述了本公开。显而易见的是,在不背离所附权利要求书所阐述的更广泛的精神和范围的情况下,可以对其进行各种修改。因此,说明书和附图应被视为说明性的而不是限制性的。
- 在计算机处理器中执行指令时的域交叉
- 用于正在计算机处理器中执行的指令的域寄存器