CN112639732A - 基于超管理器的存在的计算机处理器的动态配置 - Google Patents

基于超管理器的存在的计算机处理器的动态配置 Download PDF

Info

Publication number
CN112639732A
CN112639732A CN201980055811.2A CN201980055811A CN112639732A CN 112639732 A CN112639732 A CN 112639732A CN 201980055811 A CN201980055811 A CN 201980055811A CN 112639732 A CN112639732 A CN 112639732A
Authority
CN
China
Prior art keywords
hypervisor
memory
domain
page
processor
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
CN201980055811.2A
Other languages
English (en)
Inventor
S·沃勒克
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.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN112639732A publication Critical patent/CN112639732A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

描述了与计算机处理器中的超管理器状态寄存器有关的系统、设备和方法。例如,耦合到所述计算机处理器的存储器可存储预定义的非层次域的例程的指令。所述计算机处理器可在所述计算机系统的通电过程中在所述超管理器状态寄存器中存储值。存储在所述超管理器状态寄存器中的所述值标识所述计算机系统中是否存在操作中超管理器。所述计算机处理器可基于存储在所述超管理器状态寄存器中的所述值配置其操作(例如,地址转换)。

Description

基于超管理器的存在的计算机处理器的动态配置
相关申请
本申请要求以下提交日期的权益:2019年7月23提交且名称为“基于超管理器的存在的计算机处理器的动态配置(Dynamic Configuration of a Computer Processorbased on the Presence of a Hypervisor)”的第16/520,304号美国专利申请;2018年8月30日提交且名称为“基于超管理器的存在的计算机处理器的动态配置(DynamicConfiguration of a Computer Processor based on the Presence of a Hypervisor)”的第62/725,100号临时美国专利申请;2018年8月30日提交且名称为“通过在执行域的页表条目中指定的权限的存储器存取控制(Memory Access Control through PermissionsSpecified in Page Table Entries for Execution Domains)”的第62/724,896号临时美国专利申请;2018年8月30日提交且名称为“执行域的页表条目中的安全性配置(SecurityConfigurations in Page Table Entries for Execution Domains)”的第62/724,913号临时美国专利申请;2018年8月30日提交且名称为“处理器寄存器的基于执行域的存取控制(Access Control for Processor Registers based on Execution Domains)”的第62/724,929号临时美国专利申请;2018年8月30日提交且名称为“用于正在计算机处理器中执行的指令的域寄存器(Domain Register for Instructions being Executed inComputer Processors)”的第62/724,999号临时美国专利申请;以及2018年8月30日提交且名称为“在计算机处理器中执行指令时的域交叉(Domain Crossing in ExecutingInstructions in Computer Processors)”的第62/725,030号临时美国专利申请,上述申请的全部公开内容由此以引用的方式并入本文中。
技术领域
本文中所公开的至少一些实施例大体上涉及计算机体系结构,且更确切地但不限于基于操作中超管理器的存在的计算机处理器的动态配置。
背景技术
经编程用于计算机的指令可以分层方式结构化。一个层可以为另一层提供资源和服务。例如,超管理器可以创建或提供在计算机硬件组件上实施的虚拟机。操作系统可以使用具有预定义体系结构的计算机中可用的资源来提供资源和服务。由操作系统操作的计算机资源或计算机可以是实际的计算机硬件组件,也可以是由超管理器提供的虚拟机组件。应用程序可以使用操作系统提供的服务和资源提供应用程序特定的功能。
附图说明
在附图的图中作为实例而非限制示出了实施例,在附图中,相似的参考标号指示类似的元件。
图1示出根据一些实施例的计算机处理器,其具有配置成控制计算机处理器的操作的一组寄存器。
图2示出一些实施例中的在不存在操作中超管理器的情况下的地址转换表的表基址的标识。
图3示出一些实施例中的在存在操作中超管理器的情况下的地址转换表的表基址的标识。
图4示出相应域的单独地址转换表。
图5示出在地址转换表中检索条目以转换虚拟地址的技术。
图6示出根据域寄存器控制应用于资源的安全性操作的系统。
图7示出执行域的具有安全性配置的页表条目。
图8示出具有控制安全性操作的域寄存器的计算机系统。
图9示出根据超管理器存在状态动态地配置计算机处理器的方法。
具体实施方式
本公开包含存储计算机处理器是否正在具有超管理器的情况下操作的指示的超管理器状态寄存器。超管理器或虚拟机监视器(VMM)创建并管理虚拟机。超管理器可控制基本功能,例如物理存储器和输入/输出(I/O)。计算机处理器可在具有或不具有超管理器的情况下运行。超管理器状态寄存器的内容可用于基于超管理器是否存在且正在计算机系统中操作来配置计算机处理器,以便进行有效处理。
在传统的系统中,可以向指令的不同层(例如,用户应用程序相较于操作系统)给予不同水平的特权和/或信任。通常,保护环是在计算机中构建和实施的,以保护数据和功能免受基于环层次的故障和恶意行为的影响。从最高特权(因而最受信任)到最低特权(因而最不受信任)的环静态地布置成层次。例如,层次可包含一个具有最高特权的操作系统内核环、一个装置驱动器环和一个具有最低特权的应用程序环。较低特权环中的程序或例程可以由相应的专用硬件强制控制门来限制,以存取层次中较高特权环的资源和服务。环之间的门控存取可以提高安全性。
在本公开的技术中,经编程用于计算机系统的指令或例程可以分类成一组预定义非层次的域,例如超管理器的域、操作系统的域、应用程序的域等。在不同域中使用的地址可以使用不同地址转换表转换,使得不同域的虚拟地址空间可以彼此隔离。如果超管理器存在(例如,操作和控制计算机系统中最低水平的机器体系结构),那么在受超管理器管理的不同虚拟机中使用的地址也可使用不同地址表转换;并且因此,不同虚拟机的虚拟地址空间也可彼此隔离。此外,不同运行中进程的虚拟地址空间也可任选地彼此隔离。例如,虚拟机寄存器可配置成存储其中处理器正执行指令的当前虚拟机的标识符;且处理器的存储器管理单元的地址转换功能可以根据存储在虚拟机寄存器中的标识符、存储在域寄存器中的标识符和/或存储在超管理器状态寄存器中的状态指示配置成执行地址转换,以在特定虚拟机的特定域中执行例程。
图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个)可用于存储对象ID 199,虚拟地址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)的字段。
在地址转换表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示出根据超管理器存在状态动态地配置计算机处理器169的方法。
例如,图9的方法可以在图1或8的计算机系统中执行。图9的方法可以以图2-5和7的地址转换技术和/或图6-8的安全性技术的组合方式执行。
在框301处,计算机系统的存储器109至少存储一组预定义域101、103、……、105的例程的指令。
例如,一组预定义域可包含超管理器的域、操作系统的域或应用程序的域中的至少一个或其任何组合。
在框303处,计算机系统在与存储器109耦合的处理器169中提供超管理器状态寄存器233。
在框305处,计算机系统在处理器169的通电过程中在超管理器状态寄存器233中设置值以指示计算机系统中是否存在操作中超管理器102。
在框307处,处理器169在通电过程之外阻止修改存储在超管理器状态寄存器中的值。
在框309处,处理器169基于存储在超管理器状态寄存器233中的值自定义其操作。
例如,处理器169可自定义其存储器管理单元181到存储在超管理器状态寄存器233中的值的地址转换235。当超管理器状态寄存器233指示计算机系统中存在操作中超管理器102时,处理器可在地址转换235中使用虚拟机标识符。当超管理器状态寄存器233指示计算机系统中不存在操作中超管理器时,处理器可执行地址转换235而不使用虚拟机标识符。
例如,当超管理器状态寄存器233指示计算机系统中存在操作中超管理器102时,处理器169配置成在产生将虚拟地址页映射到伪物理地址页的页表条目时捕获在执行运行于虚拟机中的操作系统104时执行的操作。响应于运行于虚拟机中的操作系统104的操作被捕获,处理器169配置成执行超管理器的例程以标识对应于虚拟机中的伪物理地址页的物理地址页。处理器169配置成修改将虚拟地址页映射到伪物理地址页的页表条目为将虚拟地址页映射到物理地址页的页表条目,使得虚拟地址页可以免去后续从虚拟机中的伪物理地址到存储器109中的物理地址的转换。
本文所公开的技术可至少适用于其中处理器与存储器分隔开且处理器经由通信总线和/或计算机网络与存储器和存储装置通信的计算机系统。此外,本文所公开的技术可适用于其中处理能力集成于内存/存储装置内的计算机系统。例如,包含典型处理器的执行单元和/或寄存器的处理电路可以在存储器媒体的集成电路和/或集成电路封装内实施以执行存储器装置内的处理。因此,如上文所论述和附图中所示的处理器(例如,101)不一定是冯·诺伊曼体系结构中的中央处理单元。处理器可以是集成于存储器内以克服冯·诺依曼瓶颈的单元,所述瓶颈因为由根据冯·诺伊曼体系结构分开配置的中央处理单元和存储器之间的数据移动的时延造成的吞吐量限制而限制了计算性能。
本公开的描述和附图是说明性的,且不应被解释为限制性的。描述了许多具体细节,以提供透彻的理解。然而,在某些实例中,为了避免模糊描述,不描述众所周知的或常规的细节。对本公开中的一个或某一实施例的引用不一定是对同一实施例的引用;并且这种引用意味着至少一个。
在前述说明书中,已经参考本公开的特定示例性实施例描述了本公开。显而易见的是,在不背离所附权利要求书所阐述的更广泛的精神和范围的情况下,可以对其进行各种修改。因此,说明书和附图应被视为说明性的而不是限制性的。

Claims (20)

1.一种计算机系统,其包括:
存储器,其配置成至少存储一组预定义域的例程的指令;以及
与所述存储器耦合的处理器,所述处理器包括超管理器状态寄存器,所述处理器配置成在所述计算机系统的通电过程中在所述超管理器状态寄存器中存储值,所述值配置成标识所述计算机系统中是否存在操作中超管理器。
2.根据权利要求1所述的计算机系统,其中所述一组预定义域包括超管理器的域、操作系统的域或应用程序的域中的至少一个,或其任何组合;并且其中所述域不具有预定义信任水平。
3.根据权利要求2所述的计算机系统,其中所述处理器进一步配置成根据存储在所述超管理器状态寄存器中的所述值自定义所述处理器中的操作。
4.根据权利要求3所述的计算机系统,其中存储在所述超管理器状态寄存器中的所述值在所述通电过程之外不可调整。
5.根据权利要求3所述的计算机系统,其中所述处理器进一步配置成根据存储在所述超管理器状态寄存器中的所述值自定义所述处理器中的地址转换操作。
6.根据权利要求5所述的计算机系统,其中所述处理器配置成当所述超管理器状态寄存器指示所述计算机系统中存在操作中超管理器时,在地址转换中使用虚拟机标识符。
7.根据权利要求6所述的计算机系统,其中所述处理器配置成当所述超管理器状态寄存器指示所述计算机系统中不存在操作中超管理器时执行地址转换而不使用虚拟机标识符。
8.根据权利要求6所述的计算机系统,其中当所述超管理器状态寄存器指示所述计算机系统中存在操作中超管理器时,所述处理器配置成在产生将虚拟地址页映射到伪物理地址页的页表条目时捕获在执行运行于虚拟机中的操作系统时执行的操作。
9.根据权利要求8所述的计算机系统,其中所述处理器配置成响应于运行于所述虚拟机中的所述操作系统的所述操作被捕获而执行所述超管理器的例程,以标识对应于所述虚拟机中的所述伪物理地址页的物理地址页。
10.根据权利要求9所述的计算机系统,其中所述处理器配置成修改将所述虚拟地址页映射到所述伪物理地址页的所述页表条目为将所述虚拟地址页映射到所述物理地址页的页表条目。
11.一种方法,其包括:
在存储器中至少存储一组预定义域的例程的指令;
在与所述存储器耦合的处理器中提供超管理器状态寄存器;
在所述处理器的通电过程中,在所述超管理器状态寄存器中设置值以指示所述计算机系统中是否存在操作中超管理器;以及
基于存储在所述超管理器状态寄存器中的所述值,自定义所述处理器中的操作。
12.根据权利要求11所述的方法,其进一步包括:
在所述通电过程之外阻止修改存储在所述超管理器状态寄存器中的所述值;
其中所述一组预定义域包括超管理器的域、操作系统的域或应用程序的域中的至少一个,或其任何组合。
13.根据权利要求12所述的方法,其中自定义所述操作包括:
根据存储在所述超管理器状态寄存器中的所述值,自定义虚拟存储器地址到物理存储器地址的转换。
14.根据权利要求13所述的方法,其中当所述超管理器状态寄存器指示所述计算机系统中存在操作中超管理器时,使用虚拟机标识符执行所述虚拟存储器地址到所述物理存储器地址的所述转换;且当所述超管理器状态寄存器指示所述计算机系统中不存在操作中超管理器时,不使用虚拟机标识符执行虚拟存储器地址到物理存储器的所述转换。
15.根据权利要求14所述的方法,其进一步包括:
当所述超管理器状态寄存器指示所述计算机系统中存在操作中超管理器时,在产生将虚拟地址页映射到伪物理地址页的页表条目时捕获在执行运行于虚拟机中的操作系统时执行的操作;
响应于运行于所述虚拟机中的所述操作系统的所述操作被捕获,执行所述超管理器的例程以标识对应于所述虚拟机中的所述伪物理地址页的物理地址页;以及
修改将所述虚拟地址页映射到所述伪物理地址页的所述页表条目为将所述虚拟地址页映射到所述物理地址页的页表条目。
16.一种计算机处理器,其包括:
至少一个执行单元,其配置成执行一组预定义域的指令;以及
超管理器状态寄存器,其配置成在所述计算机处理器的通电过程中在所述超管理器状态寄存器中存储值,所述值配置成标识所述计算机处理器在其中操作的计算机系统中是否存在操作中超管理器。
17.根据权利要求16所述的计算机处理器,其进一步配置成在所述通电过程之外阻止修改存储在所述超管理器状态寄存器中的所述值;
其中所述一组预定义域包括超管理器的域、操作系统的域或应用程序的域中的至少一个,或其任何组合。
18.根据权利要求17所述的计算机处理器,其进一步包括:
存储器管理单元,其根据存储在所述超管理器状态寄存器中的所述值配置成执行虚拟存储器地址到物理存储器地址的转换。
19.根据权利要求18所述的计算机处理器,其中所述虚拟存储器地址到所述物理存储器地址的所述转换配置成当所述超管理器状态寄存器指示所述计算机系统中存在操作中超管理器时使用虚拟机标识符;且当所述超管理器状态寄存器指示所述计算机系统中不存在操作中超管理器时不使用虚拟机标识符来配置虚拟存储器地址到物理存储器的所述转换。
20.根据权利要求19所述的计算机处理器,其进一步配置成:
当所述超管理器状态寄存器指示所述计算机系统中存在操作中超管理器时,在产生将虚拟地址页映射到伪物理地址页的页表条目时捕获在执行运行于虚拟机中的操作系统时执行的操作;
响应于运行于所述虚拟机中的所述操作系统的所述操作被捕获,执行所述超管理器的例程以标识对应于所述虚拟机中的所述伪物理地址页的物理地址页;以及
修改将所述虚拟地址页映射到所述伪物理地址页的所述页表条目为将所述虚拟地址页映射到所述物理地址页的页表条目。
CN201980055811.2A 2018-08-30 2019-08-23 基于超管理器的存在的计算机处理器的动态配置 Pending CN112639732A (zh)

Applications Claiming Priority (15)

Application Number Priority Date Filing Date Title
US201862724896P 2018-08-30 2018-08-30
US201862724913P 2018-08-30 2018-08-30
US201862724929P 2018-08-30 2018-08-30
US201862725100P 2018-08-30 2018-08-30
US201862725030P 2018-08-30 2018-08-30
US201862724999P 2018-08-30 2018-08-30
US62/724,896 2018-08-30
US62/724,999 2018-08-30
US62/724,929 2018-08-30
US62/725,030 2018-08-30
US62/724,913 2018-08-30
US62/725,100 2018-08-30
US16/520,304 2019-07-23
US16/520,304 US11500665B2 (en) 2018-08-30 2019-07-23 Dynamic configuration of a computer processor based on the presence of a hypervisor
PCT/US2019/048018 WO2020046760A1 (en) 2018-08-30 2019-08-23 Dynamic configuration of a computer processor based on the presence of a hypervisor

Publications (1)

Publication Number Publication Date
CN112639732A true CN112639732A (zh) 2021-04-09

Family

ID=69639938

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980055811.2A Pending CN112639732A (zh) 2018-08-30 2019-08-23 基于超管理器的存在的计算机处理器的动态配置

Country Status (5)

Country Link
US (2) US11500665B2 (zh)
EP (1) EP3844614A4 (zh)
KR (1) KR20210038992A (zh)
CN (1) CN112639732A (zh)
WO (1) WO2020046760A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10942863B2 (en) 2018-08-30 2021-03-09 Micron Technology, Inc. Security configurations in page table entries for execution domains using a sandbox application operation
US11481241B2 (en) 2018-08-30 2022-10-25 Micron Technology, Inc. Virtual machine register in a computer processor
US11914726B2 (en) 2018-08-30 2024-02-27 Micron Technology, Inc. Access control for processor registers based on execution domains
US10915457B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory access control through permissions specified in page table entries for execution domains
US10915465B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory configured to store predefined set of domain registers for instructions being executed in computer processors
US11182507B2 (en) 2018-08-30 2021-11-23 Micron Technology, Inc. Domain crossing in executing instructions in computer processors
US10970103B2 (en) * 2018-12-28 2021-04-06 Intel Corporation Technologies for hybrid virtualization and secure enclave policy enforcement for edge orchestration
US10802854B2 (en) * 2019-08-30 2020-10-13 Alibaba Group Holding Limited Method and apparatus for interpreting bytecode instruction stream
CN112685096A (zh) * 2020-12-24 2021-04-20 京东方科技集团股份有限公司 场景切换控制方法、装置、设备及介质

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4386399A (en) 1980-04-25 1983-05-31 Data General Corporation Data processing system
US4409655A (en) 1980-04-25 1983-10-11 Data General Corporation Hierarchial memory ring protection system using comparisons of requested and previously accessed addresses
US4821184A (en) 1981-05-22 1989-04-11 Data General Corporation Universal addressing system for a digital data processing system
US4525780A (en) 1981-05-22 1985-06-25 Data General Corporation Data processing system having a memory using object-based information and a protection scheme for determining access rights to such information
US5280614A (en) 1990-08-21 1994-01-18 International Business Machines Corporation Apparatus and method for controlling access to data using domains
US6470436B1 (en) 1998-12-01 2002-10-22 Fast-Chip, Inc. Eliminating memory fragmentation and garbage collection from the process of managing dynamically allocated memory
US6393544B1 (en) 1999-10-31 2002-05-21 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for calculating a page table index from a virtual address
US6961761B2 (en) 2001-05-17 2005-11-01 Fujitsu Limited System and method for partitioning a computer system into domains
US7370193B2 (en) 2002-04-27 2008-05-06 Tong Shao Computing system being able to quickly switch between an internal and an external networks and a method thereof
US6970990B2 (en) 2002-09-30 2005-11-29 International Business Machines Corporation Virtual mode virtual memory manager method and apparatus
KR100941104B1 (ko) 2002-11-18 2010-02-10 에이알엠 리미티드 데이터 처리 장치, 데이터 처리 방법 및 컴퓨터 프로그램을 기억한 컴퓨터 판독가능한 기억매체
US7594111B2 (en) 2002-12-19 2009-09-22 Massachusetts Institute Of Technology Secure execution of a computer program
US7409722B2 (en) 2003-05-01 2008-08-05 Sun Microsystems, Inc. Control status register access to enable domain reconfiguration
US8607299B2 (en) * 2004-04-27 2013-12-10 Microsoft Corporation Method and system for enforcing a security policy via a security virtual machine
US7886126B2 (en) 2005-01-14 2011-02-08 Intel Corporation Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
US8245270B2 (en) 2005-09-01 2012-08-14 Microsoft Corporation Resource based dynamic security authorization
JP2008077144A (ja) 2006-09-19 2008-04-03 Ricoh Co Ltd 仮想化システム、メモリ管理方法及び制御プログラム
JP4756603B2 (ja) 2006-10-10 2011-08-24 ルネサスエレクトロニクス株式会社 データプロセッサ
US20080104586A1 (en) * 2006-10-27 2008-05-01 Microsoft Corporation Allowing Virtual Machine to Discover Virtual Status Thereof
US8266238B2 (en) 2006-12-27 2012-09-11 Intel Corporation Memory mapped network access
KR101396831B1 (ko) 2007-03-30 2014-05-21 삼성전자주식회사 메모리 접근 제어 방법
GB2448149B (en) 2007-04-03 2011-05-18 Advanced Risc Mach Ltd Protected function calling
GB2448151B (en) 2007-04-03 2011-05-04 Advanced Risc Mach Ltd Memory domain based security control within data processing systems
US8051263B2 (en) 2007-05-04 2011-11-01 Atmel Corporation Configurable memory protection
US20100228943A1 (en) 2009-03-04 2010-09-09 Freescale Semiconductor, Inc. Access management technique for storage-efficient mapping between identifier domains
US8375195B2 (en) 2009-03-05 2013-02-12 Oracle America, Inc. Accessing memory locations for paged memory objects in an object-addressed memory system
US8190839B2 (en) 2009-03-11 2012-05-29 Applied Micro Circuits Corporation Using domains for physical address management in a multiprocessor system
JP5491102B2 (ja) 2009-08-27 2014-05-14 ルネサスエレクトロニクス株式会社 データプロセッサ
US8954697B2 (en) 2010-08-05 2015-02-10 Red Hat, Inc. Access to shared memory segments by multiple application processes
GB2482700A (en) 2010-08-11 2012-02-15 Advanced Risc Mach Ltd Memory access control
US8601473B1 (en) 2011-08-10 2013-12-03 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
US9256552B2 (en) 2011-11-21 2016-02-09 Cisco Technology, Inc. Selective access to executable memory
WO2013082437A1 (en) 2011-12-02 2013-06-06 Invincia, Inc. Methods and apparatus for control and detection of malicious content using a sandbox environment
US8719560B2 (en) 2011-12-13 2014-05-06 International Business Machines Corporation Virtual machine monitor bridge to bare-metal booting
WO2013174503A1 (en) 2012-05-21 2013-11-28 Eth Zurich Secure loader
US9098427B2 (en) 2012-12-17 2015-08-04 Intel Corporation Controlling access to groups of memory pages in a virtualized environment
US20140331019A1 (en) 2013-05-06 2014-11-06 Microsoft Corporation Instruction set specific execution isolation
US9208347B2 (en) 2013-11-05 2015-12-08 Bank Of America Corporation Updating roles based access
US9210183B2 (en) 2013-12-19 2015-12-08 Microsoft Technology Licensing, Llc Detecting anomalous activity from accounts of an online service
KR102209840B1 (ko) * 2014-04-22 2021-02-01 삼성전자주식회사 가상화 서비스 제공 장치 및 그 방법
US10489309B2 (en) 2014-10-21 2019-11-26 Intel Corporation Memory protection key architecture with independent user and supervisor domains
CN107533518B (zh) 2015-01-20 2020-09-18 乌尔特拉塔有限责任公司 用于容错对象存储器结构的分布式索引
US9405515B1 (en) 2015-02-04 2016-08-02 Rockwell Collins, Inc. Computing systems utilizing controlled dynamic libraries and isolated execution spaces
US9747218B2 (en) 2015-03-20 2017-08-29 Mill Computing, Inc. CPU security mechanisms employing thread-specific protection domains
US9910611B2 (en) 2015-05-29 2018-03-06 Intel Corporation Access control for memory protection key architecture
US20160381050A1 (en) 2015-06-26 2016-12-29 Intel Corporation Processors, methods, systems, and instructions to protect shadow stacks
US20170060783A1 (en) 2015-09-01 2017-03-02 Mediatek Inc. Apparatus for performing secure memory allocation control in an electronic device, and associated method
US9852084B1 (en) 2016-02-05 2017-12-26 Apple Inc. Access permissions modification
KR102529714B1 (ko) 2016-06-15 2023-05-09 인터디지탈 패튼 홀딩스, 인크 네트워크 슬라이스 발견 및 선택
GB2552966B (en) 2016-08-15 2019-12-11 Arm Ip Ltd Methods and apparatus for protecting domains of a device from unauthorised accesses
US10255202B2 (en) 2016-09-30 2019-04-09 Intel Corporation Multi-tenant encryption for storage class memory
US10884952B2 (en) 2016-09-30 2021-01-05 Intel Corporation Enforcing memory operand types using protection keys
US10346625B2 (en) 2016-10-31 2019-07-09 International Business Machines Corporation Automated mechanism to analyze elevated authority usage and capability
US11055401B2 (en) 2017-09-29 2021-07-06 Intel Corporation Technologies for untrusted code execution with processor sandbox support
GB2574270B (en) * 2018-06-01 2020-09-09 Advanced Risc Mach Ltd Speculation-restricted memory region type
US11481241B2 (en) 2018-08-30 2022-10-25 Micron Technology, Inc. Virtual machine register in a computer processor
US10915457B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory access control through permissions specified in page table entries for execution domains
US11914726B2 (en) 2018-08-30 2024-02-27 Micron Technology, Inc. Access control for processor registers based on execution domains
US10915465B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory configured to store predefined set of domain registers for instructions being executed in computer processors
US20200073822A1 (en) 2018-08-30 2020-03-05 Micron Technology, Inc. Security Configuration for Memory Address Translation from Object Specific Virtual Address Spaces to a Physical Address Space
US10942863B2 (en) 2018-08-30 2021-03-09 Micron Technology, Inc. Security configurations in page table entries for execution domains using a sandbox application operation
US11182507B2 (en) 2018-08-30 2021-11-23 Micron Technology, Inc. Domain crossing in executing instructions in computer processors

Also Published As

Publication number Publication date
US20230074273A1 (en) 2023-03-09
EP3844614A1 (en) 2021-07-07
KR20210038992A (ko) 2021-04-08
US20200073693A1 (en) 2020-03-05
WO2020046760A1 (en) 2020-03-05
EP3844614A4 (en) 2022-05-18
US11500665B2 (en) 2022-11-15

Similar Documents

Publication Publication Date Title
US11481241B2 (en) Virtual machine register in a computer processor
US11620239B2 (en) Domain register for instructions being executed in computer processors
US20220050908A1 (en) Domain Crossing in Executing Instructions in Computer Processors
US11500665B2 (en) Dynamic configuration of a computer processor based on the presence of a hypervisor
CN112639779A (zh) 用于存储器地址从对象特定虚拟地址空间转换成物理地址空间的安全性配置
KR102570757B1 (ko) 실행 도메인에 대한 페이지 테이블 엔트리에 보안 구성
US11436156B2 (en) Memory access control through permissions specified in page table entries for execution domains
CN112639736A (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