CN113127936A - 具有对保护环之间的特权资源和异常的可配置分配的处理器 - Google Patents
具有对保护环之间的特权资源和异常的可配置分配的处理器 Download PDFInfo
- Publication number
- CN113127936A CN113127936A CN202011596401.XA CN202011596401A CN113127936A CN 113127936 A CN113127936 A CN 113127936A CN 202011596401 A CN202011596401 A CN 202011596401A CN 113127936 A CN113127936 A CN 113127936A
- Authority
- CN
- China
- Prior art keywords
- ring
- processor
- exception
- register
- privileged
- 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
Links
- 230000002159 abnormal effect Effects 0.000 claims abstract description 7
- 238000013519 translation Methods 0.000 claims description 22
- 230000001960 triggered effect Effects 0.000 claims description 22
- 238000000034 method Methods 0.000 claims description 12
- 238000012545 processing Methods 0.000 claims description 12
- 230000014616 translation Effects 0.000 description 16
- 239000010410 layer Substances 0.000 description 15
- 230000006870 function Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 208000011580 syndromic disease Diseases 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008672 reprogramming Effects 0.000 description 2
- 101000806846 Homo sapiens DNA-(apurinic or apyrimidinic site) endonuclease Proteins 0.000 description 1
- 101000835083 Homo sapiens Tissue factor pathway inhibitor 2 Proteins 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 102100026134 Tissue factor pathway inhibitor 2 Human genes 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 230000001012 protector Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/74—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/481—Exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2113—Multi-level security, e.g. mandatory access control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及一种处理器,其具有多个保护环(PL)并包括保护环管理系统(BCU),其中,异常或特权资源到保护环的归属由可编程表(REO)来定义。
Description
技术领域
本发明涉及处理器的保护环或特权(privilege)级别,其允许软件的不同层安全地交互。
背景技术
处理器通常被设计为提供多个执行特权级别,也称为保护环。这两个术语在下面可以互换使用。
在现有技术中,基于假定的特权将执行资源和硬件配置寄存器分配给保护环。应用程序代码在特权最低的环中运行,并且无法访问诸如配置存储器管理单元(MMU),输入/输出接口,时钟等的功能。监督器(supervisor)代码(例如,操作系统)在更高特权的环中运行,但无法访问多个虚拟操作系统共有的功能,例如配置中断控制器。诸如虚拟机监视程序的管理程序代码在特权再更高的环中运行,但无法访问硬件引导或低级调试器配置设置。
图1A至1C示出了针对将在具有四个特权级别PL0至PL3的同一处理器上实现的不同软件栈的保护环分配的示例,特权级别PL0为最高。特权级别PL0到PL3也称为环0到3。这样的组织例如在x86体系结构处理器中使用。
图1A显示了在操作系统上运行的应用程序的一般情况。应用程序(USER)在特权最低的环3中运行,而操作系统(OS)可被分配给紧接在下面的环2。在这种情况下,在其余环未被使用的情况下,操作系统也可被分配给环1和环0中的一个。实际上,在x86处理器上,历史上从未完全使用过所有四个环-应用程序代码在环3中运行,而操作系统(Linux、Windows、macOS)在环0中运行。在不同环中运行软件层通常涉及重新编译代码。
图1B说明了虚拟系统的上下文。在这种情况下,管理程序(主机)系统在例如在环1中的操作系统(访客)下运行。在x86处理器中,历来将环0分配给操作系统,因此必须创建“-1”环以运行管理程序,例如在https://en.wikipedia.org/wiki/Protection_ring中所记录的。
图1C说明了虚拟系统中低级调试器的上下文。调试器在环0的管理程序下运行。
图2是说明环之间(例如,在环3中运行的应用程序APP与在环2中运行的操作系统OS之间)的过渡的时序图。通常在异常EXC被触发时,启动向更低(更高特权)环的过渡。术语“异常”包括中断、硬件陷阱和系统调用。中断和陷阱通常由硬件触发,而系统调用是由运行程序自身执行的指令。
当异常EXC被触发时,运行程序APP被重新路由到由在环2中运行的操作系统提供的处理机。在处理机完成时,它通过执行被指定为RFE(“从异常返回”)的指令返回到原始程序。
异常处理基于处理器状态寄存器PS,该处理器状态寄存器PS包含多个控制位字段,包括当前执行环和要屏蔽的异常。当异常被触发时,处理器在一个硬件和原子操作中将程序计数器PC和寄存器PS的内容保存在称为SPC(“所保存的程序计数器”)和SPS(“所保存的处理器状态”)的位置,以及通过设置PS寄存器中的相应字段来屏蔽后续中断。异常处理机接管并通常从保存来自执行上下文的附加信息开始,该操作不应被中断,以免上下文丢失。
处理机随着RFE指令的执行而结束。响应于RFE指令,处理器以硬件和原子方式从SPC和SPS位置的备份中恢复PC和PS寄存器的原始值,此后,当异常被触发时,程序APP从其到达的点恢复。
通常,通过构造将每个异常分配给比可能发生异常的等级更低(特权更高)的特定环,为简单起见,通常是紧接着的等级更低的环。结果是在某些情况下会导致权衡和性能下降的严格体系结构。
发明内容
通常提供一种具有多个保护环并包括保护环管理系统的处理器,在该系统中,异常或特权资源到保护环的归属由可编程表定义。
该表可在启动处理器时通过软件进行编程。
环管理系统可被配置为通过将异常的处理转移到针对该异常而编程的环来对异常做出响应。
保护环管理系统可被配置为:当访问来自比针对特权资源而编程的环更低特权的保护环的特权资源时,触发特权陷阱;以及通过将异常的处理转移到针对特权资源而编程的环来响应特权陷阱。
处理器可包括:可在处理器执行程序期间在事件发生时触发异常的硬件单元;标识被应用于当前被执行的程序的当前保护环的处理器状态寄存器;体现可编程表的可编程所有权寄存器;对于每个保护环,相应的定义了保护环和对应权限的处理器状态备份寄存器;以及异常处理机电路,其被配置为:当异常被触发时,用随异常生成的标识符来索引所有权寄存器,以指定对应的保护环;将处理器状态寄存器的内容与由所有权寄存器指定的状态备份寄存器的内容进行交换;以及将当前程序转移到异常处理机,由此处理机在由处理器状态寄存器的新内容所定义的保护环中执行。
处理器可包括:标识由处理器当前执行的指令的地址的程序计数器;对于每个保护环,程序计数器的相应的备份寄存器;对于每个保护环,标识对应保护环的异常处理机的地址的相应的异常向量。异常处理电路可被配置为:当异常被触发时,将程序计数器的内容保存在由所有权寄存器指定的程序计数器备份寄存器中;以及将由所有权寄存器指定的异常向量所提供的地址写入程序计数器。
处理器可包括系统-寄存器-写入指令,该指令由处理器实施以将当前环的等级与指令的传达相对等级的参数之和写入由该指令标识的所有权寄存器。
异常可包括水平中断,所有权寄存器被编程为将水平中断归属到与中断被触发时运行的程序相同的保护环。
还提供了一种用于在处理器中管理保护环的方法,该方法包括以下步骤:对所有权表进行编程,以将异常或特权资源归属到保护环;当处理器触发信号发送在比针对特权资源编程的环更低特权的环中的异常或对特权资源的访问的事件时,由运行在被分配给异常或特权资源的保护环中的处理机处理事件;以及在所有权表中找到被分配给异常或特权资源的保护环。
该方法可包括通过在启动处理器时执行的软件对所有权表进行编程的步骤。
该方法可包括以下步骤:根据保护器状态寄存器中定义的权限在保护环中执行当前程序;对于每个保护环,在相应的处理器状态备份寄存器中定义保护环和对应的权限;当事件被触发时,将处理器状态寄存器的内容与所有权表所标识的状态备份寄存器的内容进行交换。
该方法可包括以下步骤:在第一环中运行主机管理程序;在比第一环更低特权的第二环中运行访客操作系统,其中,访客操作系统被设计为管理转换表,用于将虚拟地址转换为物理地址;在比第二环更低特权的第三环中运行用户程序,其中,用户程序被设计为使用被应用于转换表的虚拟地址;将虚拟地址分配失败异常归属到第二环,该虚拟地址分配失败异常在转换表没有针对由用户程序所应用的虚拟地址的条目时被触发;将转换表作为特权资源归属到第一环,由此,更低特权的环对转换表的写访问尝试触发特权陷阱;配置由管理程序在第一环执行的特权陷阱处理机,以更新转换表。
附图说明
实施例将在下面关于附图的描述中被公开,其中:
·前面描述的图1A至1C示出了一组保护环中的不同程序组织;
·前面描述的图2是说明异常的一般处理的时序图;
·图3示出了用作本发明基础的示例性处理器的体系结构;
·图4示出了本发明可依靠的系统寄存器组的示例;
·图5A和5B分别示出了在异常发生和从异常返回时如何使用图4中的寄存器;
·图6A和6B分别说明了在常规处理器和具有可编程环分配的处理器中对所谓的“水平”中断的处理;以及
·图7说明了在虚拟系统中处理存储器访问错误的示例。
具体实施方式
如前所述,在具有保护环的常规处理器体系结构中,每个异常通过设计被分配给特定环。这通常强加(impose)在不同的环中的软件层的严格组织。例如,如果应提供图1C中所示类型的最终组织,其中每个环包含特定软件层,则当不是所有层都被需要时(如图1A所示),似乎实际使用的层仍保留在分配给他们的环中,其中,留有空白。实际上,将这些软件层转移到其他环会引入对如程序所看到的硬件平台的修改,并且通常需要重新编译这些程序。参考x86体系结构的示例,历史上应用程序代码和操作系统分别“锁定”在环3和0中,这使得很难在未提供的更高特权的环中插入管理程序代码。
在本公开的其余部分中,术语“异常”用于指定可能导致处理器被重定向的事件,例如:中断、硬件陷阱、系统调用。术语“资源”指可以由程序操纵的硬件元素:特定指令、特定寄存器、寄存器中的字段、集成到内核中的硬件组件(例如时钟)或其组合。
本公开提出了一种处理器结构,该处理器结构允许在不需要代码重新编译的情况下在任意环中执行软件层。为此,可使得异常和某些资源(称为特权资源)到环的分配是可编程的。例如,在执行不同的所提供的软件层之前的处理器引导阶段中,每个异常或特权资源例如根据预编程表的内容被分配给可用的环中的一个,实际上是一个或多个处理器的专用寄存器。
图3示出了示例处理器内核的体系结构,其作为异常到环的可编程分配的基础,例如Kalray Coolidge处理器的内核。内核具有7级深度流水线,包括指令预取级PF,指令解码级ID,寄存器读取级RR和四个指令执行级E1至E4。
PF级实质上包括缓冲器PFB,其用于存储从指令高速缓存ICACHE提供的预加载指令。ID级包括指令解码单元DEC,该指令解码单元DEC控制形成RR级的寄存器文件RF。寄存器文件RF管理通用寄存器GPR,在此示例中为64个64位寄存器r0至r63。根据所解码的指令,所选择的寄存器以读取或写入模式连接到形成执行级E1至E4的多个并行处理单元中的一个。这些处理单元可包括访问数据高速缓存DCACHE的加载/存储单元(LSU),浮点单元(FPU)以及多个算术和逻辑单元ALU(在这种情况下为两个)。
实际上,由于内核具有VLIW(“超大型指令字”)体系结构,因此解码单元DEC处理可包含将要同时执行的多个指令的数据包-内核在此最多可同时执行5条指令,在执行级的每个处理单元上有一个指令,以及在如下所述的单元BCU中有一个指令。
因此,内核还包括分支和所连接的比较单元BCU以处理来自解码器DEC的输入的专用指令。这个被设计成支持异常处理的BCU包括一组系统功能寄存器SFR,其包括程序计数器PC以及处理器状态寄存器PS,该程序计数器PC被配置为包含当前执行的指令的地址(或VLIW数据包的第一指令的地址),除其它外,处理器状态寄存器PS还定义了当前指令在其中执行的环、相关联的许可、以及屏蔽的异常。还提供了位置SPC和SPS,以用于保存程序计数器和处理器状态寄存器。
BCU连接到各种其他单元,以生成异常,例如,硬件陷阱或系统调用。特别地,指令解码器DEC捕获是特定指令的系统调用,而各种单元或资源可返回硬件陷阱,这些陷阱通常可被称为“未经授权的操作”(访问不存在或受保护的地址,访问受保护的资源,溢出等)。
最后,内核包括各种外围单元,包括:基于外部事件产生对BCU的中断的中断控制器ITC、与转换后备缓冲器TLB相关联的存储器管理单元MMU、输入/输出接口IF、性能监视器PM、高速缓存存储器、以及也可生成异常的其它单元。
到目前为止所描述的图3的体系结构及其操作是已知的,并且下面将不再详细描述,除了那些对理解本发明有用的元素。
图4示出了用于实现环对异常的可编程分配的系统寄存器组的示例。这些寄存器可包括并补充BCU的系统功能寄存器SFR,并且可经由专用于BCU的用于操纵这些寄存器的指令来被访问。
如上所述,SFR寄存器组包括程序计数器PC、处理器状态寄存器PS、以及用于保存程序计数器的位置SPC和用于保存处理器状态寄存器的位置SPS。实际上,SPC和SPS位置各自包含分别专用于个体保护环PL(i)的多个寄存器SPC_PL(i)和SPS_PL(i)。
SFR寄存器组还包括:异常向量EV、异常校验子寄存器ES、和异常地址寄存器EA,其中,针对每种类型,每个环PL(i)一个。异常向量EV定义针对每个环的可在对应环中发生的不同类型异常的异常处理机的地址。每个异常校验子ES包含在对应环中发生异常时存储的数据,从而允许异常处理机识别异常的性质并调整处理。类似地,每个异常地址寄存器EA包含对应环中在异常起源处的存储器地址,从而允许处理机管理存储器访问陷阱。寄存器EV、ES和EA的功能是已知的,因此将不再详细描述。
一组寄存器SFR补充有一组寄存器,该组寄存器中的每个寄存器一般被称为REO(“资源和异常所有权”),它们一起配置为将系统中的每个异常或特权资源分配给给定的保护环。所有权寄存器REO可由系统开发人员根据他/她的软件堆栈的特定需求进行编程。实际上,REO寄存器的内容(与其他SFR寄存器的内容一样)可在处理器固件中定义,每次处理器启动时都会加载该固件。为了节省硬件,可在REO寄存器中将可配置的资源和异常分组在一起,然后由异常处理机来实现区分。
此外,可通过专用于BCU的特定指令(包括REO寄存器)随时操纵SFR寄存器。因此,在系统启动后,什么都不能阻止对REO寄存器进行编程。例如,固件可被设计为在给定的环中加载操作系统,然后将该环留给操作系统以用于对异常和资源所有权进行编程,但要记住,操作系统将也无法向比其更高特权的环分配资源或异常,也无法向其自身分配被分配有比其自身的特权级别更高的资源或异常。
REO寄存器组可包括:
SYO:通用系统调用所有权寄存器;
ITO:中断所有权寄存器;
HTO:硬件陷阱所有权寄存器;
DO:用于调试的资源和异常的所有权(断点、变量监视等);
MO:(“各种各样的所有权”)特定硬件资源(看门狗、性能监视器、MMU、SFR寄存器等)的所有权;以及
PSO:在处理器状态寄存器PS中或在对应的备份寄存器SPS中存在的位的所有权。
因此,这六个寄存器用于以编程方式将异常和特权资源分配给环。
因此,可以将特权硬件资源以编程方式分配给环,以便仅允许对指定的环或更高特权的环进行对这种资源的任何访问。特权硬件资源可包括特定的执行单元,由此,相应指令的执行也被视为对硬件资源的访问。
然后,BCU被配置为:如果在非授权环中使用了这种特权资源,则触发“特权”陷阱。这种特权陷阱(尽管是处理器规范中传统陷阱的一部分)不可归属到单个环或特权级别。因此,没有为他们分配将全局地指示其分配的REO寄存器字段。这种硬件陷阱的处理将是在对应的REO寄存器字段中针对特权资源设置的环的责任。
在示例处理器中,每个REO寄存器(构造为64位)最多可包含32个2位字段,其中这些字段在寄存器中的位置对应于处理器规范定义的异常或资源标识符,并且每个字段中的两位标识一个环。32个可能的异常或特权资源中的每一个被分配有四个环中的一个。不必一一对应-字段可用于组织资源或异常的协调集。以这种方式配置的六个REO寄存器广泛覆盖了通用处理器中所有所需的异常和资源。
图5A和5B示出了当异常被触发以及从异常返回时如何使用图4的寄存器。在这些图中的每一个中描述的操作都是在硬件中执行的。
在图5A中,异常E被触发,其中E表示中断IT、系统调用SY、硬件陷阱HT、或调试异常D中的一种异常。硬件可被设计为生成指示对异常的处理的信息,这里是元组<REO,n>,其中REO标识以下六个寄存器中的一个:HTO、SYO、ITO、DO、PSO、MO;并且“n”是寄存器中的索引。
对于特权陷阱异常E(由对资源的未授权访问触发),可将硬件设计为生成元组<MO|PSO,n>,其标识作为访问的目标的资源(例如,MO寄存器中定义的未授权指令,PSO寄存器中定义的未授权字段)。
对于中断异常E,可将硬件设计为生成元组<ITO,s>,其中“s”是中断号。
对于系统调用异常E,可将硬件设计为生成元组<SYO,div(m,1024)>,其中“m”是调用号,从而可将1024个调用号的范围与SYO寄存器的每个字段相关联。
对于硬件陷阱异常E(例如“页面错误”),硬件可生成元组<HTO,12>。在图5A中,异常的元组<REO,n>标识要使用的REO寄存器,并将索引n应用于该寄存器。这查询寄存器中位置n的字段,其提供标识分配给异常的保护环的值i。
REO寄存器所提供的等级i选择处理器状态备份寄存器SPS_PL(i)、程序计数器备份寄存器SPC_PL(i)和分配给等级i的异常向量EV_PL(i)。
同时,交换PS和SPS_PL(i)寄存器的内容,将程序计数器PC的值写入SPC_PL(i)寄存器,并将由异常向量EV_PL(i)提供的地址写入程序计数器PC中。
校正子和异常地址寄存器ES、EA用表征异常的值来更新。
在随后的时钟周期,处理器执行新程序计数器值PC标识的指令,该指令是异常处理机的第一个指令。考虑到处理器状态寄存器PS中定义的其他参数(许可、被屏蔽的中断等),该处理机在由该寄存器中的新值定义的环中运行。
实际上,异常向量EV_PL(i)包含单个地址,这可能在效率方面不适用于所有异常类型,因为不同的异常类型需要不同的处理。因此,如图所示,取决于异常E的类型,EV寄存器的输出地址可能会受到偏移量D的影响,这样执行被重定向到合适的处理机。
在实践中,SPS_PL(i)寄存器的内容未完全写入PS寄存器。实际上,SPS_PL(i)寄存器包含对环i的处理机的最后一次执行的结尾处的值,这些值可能已从所需的初始值更改。因此,系统可强制将某些初始值写入PS寄存器中,例如由REO寄存器提供的中断屏蔽和环等级。
如所指示,E与<REO,n>的关系可在硬件中进行接线。例如,在常规处理器中,每次执行时,由硬件扫描MMU配置指令,以验证运行程序是否在与监督器特权相关联的环中运行,当前环由处理器状态寄存器PS中的专用字段标识。换句话说,通常将PS寄存器中的专用字段与固定值进行比较,并在比较失败时触发特权陷阱。在此处所述类型的处理器中,硬件被连线以将PS寄存器中的专用字段与MO寄存器中专用字段(即位置k处的字段)的可编程内容比较,而不是与固定值比较。然后,当比较失败时,硬件将通过生成元组<MO,k>来触发特权陷阱。
在图5B中,异常处理机执行旨在恢复被中断程序的从异常返回RFE。可从PS寄存器读取的当前环i的等级选择备用寄存器SPS_PL(i)和SPC_PL(i)。
同时,PS和SPS_PL(i)寄存器的内容被交换,并且程序计数器PC接收SPC_PL(i)寄存器的内容,这恢复了被中断程序的上下文。
在下一个时钟周期,被中断的程序从其停止处恢复。
根据一个实施例,REO寄存器的写指令被设计为与相对环等级(即,0到+3之间的增量)一起使用,BCU单元将该相对环等级添加到当前环等级以获得将要写入REO寄存器的绝对等级。该功能在图4中通过由BCU单元接收的寄存器写入指令“SET_REO”来说明,该指令传达作为参数的相对环等级,该参数被施加到加法器10,加法器10还接收处理器状态寄存器PS的PL字段中包含的当前环等级。其和生成将要写入目标REO寄存器的绝对等级。
采用这种配置,处理器固件可在任意环中引导给定软件堆栈中特权最高的软件层,并允许该第一软件层对其他层自身的环进行编程,而不必知道它在哪个环中。然后可将软件堆栈放置在可用环堆栈中的任何位置,而不必重新编译不同的层。
例如,当平台被提供有针对给定软件堆栈的低级别调试层(环0)时(例如图1C中的示例),以及当之后希望在特权最高的环上将该软件堆栈投入生产时(即,将图1B中的层向下移动一级),该功能可能很有用。
在常规处理器上,删除调试层将导致图1B中所示的配置,在环0处有一个空白。这将保留环2和3的二进制文件,但是环1中的管理程序仍必须重新编译以处理由调试器处理的异常。然后,将整个堆栈向下移动将涉及重新编译所有层。
采用所提出的实施例,不需要重新编译。在图1C的情况下,固件被配置为在环0中引导调试器。调试器对它处理的异常(相对等级+0)编程,并启动管理程序,该管理程序可使用相对等级+0到+2(由BCU单元转换为绝对等级1到3)对它所处理的异常以及由上层处理的异常编程。或者,管理程序可将要由操作系统和应用程序处理的异常的编程委托给操作系统-操作系统将使用由BCU单元转换为绝对等级2和3的相对等级+0和+1。
通过删除调试层,可将固件配置为这次在环0中引导管理程序。管理程序将以完全相同的方式操作,以采用相对等级+0到+2(这次由BCU单元转换成绝对等级0到2)对异常分配进行编程。
使用相对等级来指定环意味着采用护栏(guardrail)来处理上溢和下溢。实际上,软件堆栈可能会在太高的环中意外启动,其中,堆栈的最后一层位于最后一环上方。
这种情况可通过由BCU触发的专用“环溢出”硬件陷阱来捕获,该陷阱可通过系统重置来处理。
但是,这种上溢陷阱也可被转移以模拟附加环的存在。然后,例如,通过保存与未使用的环(可能是低级环)相关联的SFR寄存器的内容、将这些寄存器分配给新环、以及重新编程他们以匹配新环的特权,由设置所请求的新环的例程来处理陷阱。这种操作模式使得可以设想具有多于4个环的软件堆栈,并可以将物理实现的环用作缓存。
重新编程对环的异常、资源和指令的归属的可能性打开了许多其他的观点,这里仅举几个示例。
例如,处理器(诸如图3中的处理器)通常包括多个性能监视器PM,例如四个。在常规体系结构中,可能会将它们(以固定的方式)分配给操作系统环,并且应用程序将通过系统调用来访问它们,这会引入延迟。取决于开发人员所针对的软件堆栈,以不同方式分配性能监视器可能会有好处。例如,单层软件堆栈(例如实时系统)最好在环0中执行,在该环中它可直接访问四个性能监视器。在两层堆栈(操作系统和应用程序代码)中,在两个对应环之间分配性能监视器可能会有好处,以便应用程序代码可直接访问专用于它的一组监视器。
在带有管理程序的软件堆栈中,人们可能希望为三个所涉及的环中的每个环分配一个性能监视器。
所公开的系统通过对MO寄存器(各种各样的异常)中的对应字段相应地编程来接受所有这些场景。通过执行由BCU管理的指令,可以经由SFR寄存器中的专用字段执行对特定资源(例如性能监视器)的访问。然后,MO寄存器可将给定环归属到SFR寄存器的专用字段。因此,如果当前环具有所需的权限,则BCU指令正常执行,从而提供对资源的直接访问。否则,BCU单元触发对MO寄存器中指定的环的陷阱。该机制授权对给定编程环的直接资源访问。
图6A和图6B分别示出了在常规处理器中以及在具有对环的异常的可编程归属的处理器中的所谓的“水平”中断的处理。
“水平”中断是指可以在与被中断程序所运行的环相同的环中被处理的中断。它们可能是由外围设备产生的中断,其可由应用程序代码直接访问而不影响系统完整性。水平中断的实现的示例是对来自应用程序可访问的命令队列的数据进行抢占式和异步管理。图6A是说明以常规方式处理这种中断的时间图。在常规处理器中,中断通过构造总是指向更高特权的环。因此,当在环3中运行的应用程序代码APP接收到中断IT时,执行被转移到环2(例如,操作系统OS),以由中断处理机ITH(OS)在此处进行处理。
中断处理机ITH(OS)确定中断的性质并执行特殊的从异常返回RFE1,该REF1准备程序计数器PC和PS寄存器以执行环3中的中断处理机ITH(USER)(通常是针对该目的的专用处理),而不是使程序APP恢复。
运行中断处理机ITH(USER)的进程处理中断,并以对操作系统的系统调用SYSCALL结尾,以恢复中断发生时由操作系统保存的程序APP的上下文。
最后,操作系统通过执行从异常返回RFE2来恢复上下文,该RFE2恢复被中断的程序。
取决于系统,与中断相关的用户回调功能的实现可能会有所不同,但通常需要在用户世界和操作系统世界之间进行多次往返。
图6B示出了由具有可编程环分配的处理器处理的相同情况。在此,通过对ITO寄存器编程,可以通过给定编号n来识别的所讨论的水平中断被分配给与期望被中断的程序相同的环,即在该示例中为3。
因此,当中断IT(n)发生时,系统根据图5A的机制操作以执行环3中断处理机,并根据图5B的机制恢复被中断程序的执行。这避免了环之间无用的往返,具有显着减少延迟的好处。
图7示出了具有可编程环分配的处理器的另一种应用,其允许在没有专用虚拟硬件的虚拟化配置中相对有效地使用存储器。
操作系统通常为其应用程序提供虚拟地址空间,该空间使用存储器管理器MMU转换为物理地址(此处应注意,“虚拟”地址的概念独立于虚拟系统的上下文中的“虚拟”机器的概念)。应用程序代码使用操作系统维护的称为页表的转换表直接访问MMU,以进行存储器中的常规读写操作。页表中最常用的条目通常缓存在MMU中,即在所谓的TLB(转换后备缓冲器)中。只要应用程序代码所使用的虚拟地址在页表中具有转换,则操作系统会干预。当页表中缺少转换时,无映射陷阱将被触发,并被定向到操作系统以更新页表。
当操作系统是在由虚拟机管理程序或监视器(“主机”)管理的虚拟机中运行的“访客”系统时,地址转换呈现复杂性。分配给虚拟地址的物理地址是“访客”或中间物理地址,它们是没有意义的,因为它们是管理程序针对访客操作系统创建的一种幻觉。它们将被进一步转换为物理主机或机器地址,以便被利用。有多种可用于处理这些转换的硬件扩展,例如SLAT(“第二级别地址转换”),目前的处理器体系结构在这些扩展上并未提供特定的优势。然而,这种硬件扩展在硅表面积上是昂贵的。
然而,在地址转换的软件管理的上下文中,本体系结构可提供优化。
管理程序通常被配置为维护用于将虚拟地址直接转换为物理主机地址的辅助表,通常被称为“影子表”。此功能将在下面使用。
还配置系统,以使虚拟机可以不受明显限制地访问MMU,但是可以通过对MO寄存器的专用字段进行编程,将MMU写指令分配给环1(管理程序)。
图7是说明如何处理在此配置中发生的无映射陷阱的示例的时序图。
在其正常执行期间,在虚拟机上(例如,在环3中)运行的应用程序APP使用MMU(或TLB)执行存储器访问。TLB基于辅助转换表通过管理程序的隐秘干预,将应用程序所使用的虚拟地址直接转换为物理主机地址。
然后,虚拟机的性能与真实机器的性能相同。
当所使用的虚拟地址没有转换时,MMU触发无映射陷阱,该陷阱通常定向到运行访客操作系统的环2。
然后,操作系统以常规方式做出反应以尝试更新MMU。由于MMU写指令已被分配给环1,因此该主动(initiative)会导致对管理程序环的特权陷阱。然后,管理程序将接管以“纠正”操作系统发起的更新。为此,管理程序使用辅助表并将操作系统使用的物理访客地址替换为物理主机地址,并通过执行从异常返回RFE1切换到访客操作系统。访客操作系统“认定”它已更新MMU,并通过执行从异常返回RFE2而切换到应用程序。
该结构还具有以下功能:虚拟机中运行的软件堆栈可运行,而无需在真实机器上重新编译。换句话说,如果虚拟机在系统中是单独的,则可删除管理程序层,以仅保留环2和3的层。为此,将MMU写指令重新分配给环2就足够了。
Claims (12)
1.一种处理器,具有多个保护环并包括保护环管理系统,其中,异常或特权资源到保护环的归属由可编程表定义。
2.根据权利要求1所述的处理器,其中,在启动所述处理器时,所述表是由软件可编程的。
3.根据权利要求1所述的处理器,其中,所述环管理系统被配置为通过将异常的处理转移到所述可编程表中针对所述异常而编程的环来对所述异常做出响应。
4.根据权利要求1所述的处理器,其中,所述保护环管理系统被配置为:
·当访问来自比所述可编程表中针对所述特权资源而编程的环更低特权的保护环的特权资源时,触发特权陷阱;以及
·通过将所述异常的处理转移到所述可编程表中针对所述特权资源而编程的所述环来响应所述特权陷阱。
5.根据权利要求1所述的处理器,包括:
·能够在所述处理器执行程序期间在事件发生时触发异常的硬件单元;
·处理器状态寄存器,其标识被应用于当前被执行的程序的当前保护环;
·体现所述可编程表的可编程所有权寄存器;
·对于每个保护环,相应的定义所述保护环和对应权限的处理器状态备份寄存器;以及
·异常处理机电路,其被配置为在异常被触发时:
-用随所述异常生成的标识符来索引所述所有权寄存器,以指定对应的保护环;
-将所述处理器状态寄存器的内容与由所述所有权寄存器指定的状态备份寄存器的内容进行交换;以及
-将当前程序转移到异常处理机,由此所述处理机在由所述处理器状态寄存器的新内容所定义的保护环中执行。
6.根据权利要求5所述的处理器,包括:
·程序计数器,其标识由所述处理器当前执行的指令的地址;
·对于每个保护环,所述程序计数器的相应的备份寄存器;
·对于每个保护环,标识对应保护环的所述异常处理机的地址的相应的异常向量;
其中,异常处理电路还被配置为:当异常被触发时:
·将所述程序计数器的内容保存在由所述所有权寄存器指定的程序计数器备份寄存器中;以及
·将由所述所有权寄存器指定的异常向量所提供的地址写入所述程序计数器。
7.根据权利要求5所述的处理器,包括系统-寄存器-写入指令,所述指令由所述处理器实施以将当前环的等级与所述指令的传达相对等级的参数之和写入由所述指令标识的所有权寄存器。
8.根据权利要求5所述的处理器,其中,所述异常包括水平中断,所述所有权寄存器被编程为将所述水平中断归属到与在所述中断被触发时运行的程序相同的保护环。
9.一种用于在处理器中管理保护环的方法,包括以下步骤:
·对所有权表进行编程,以将异常或特权资源归属到保护环;
·当所述处理器触发信号发送在比针对特权资源编程的环更低特权的环中的异常或对所述特权资源的访问的事件时,由运行在被分配给所述异常或特权资源的保护环中的处理机处理所述事件;以及
·在所述所有权表中找到被分配给所述异常或特权资源的保护环。
10.根据权利要求9所述的方法,包括通过在启动所述处理器时执行的软件对所述所有权表进行编程的步骤。
11.根据权利要求9所述的方法,包括以下步骤:
·根据处理器状态寄存器中定义的权限在保护环中执行当前程序;
·对于每个保护环,在相应的处理器状态备份寄存器中定义保护环和对应的权限;以及
·在事件被触发时,将所述处理器状态寄存器的内容与由所述所有权表所标识的状态备份寄存器的内容进行交换。
12.根据权利要求9所述的方法,包括以下步骤:
·在第一环中运行主机管理程序;
·在比第一环更低特权的第二环中运行访客操作系统,其中,所述访客操作系统被设计为管理用于将虚拟地址转换为物理地址的转换表;
·在比所述第二环更低特权的第三环中运行用户程序,其中,所述用户程序被设计为使用被应用于所述转换表的虚拟地址;
·在所述所有权表中,将虚拟地址分配失败异常归属到所述第二环,所述虚拟地址分配失败异常在所述转换表没有针对由所述用户程序所应用的虚拟地址的条目时被触发;
·在所述所有权表中,将所述转换表作为特权资源归属到所述第一环,由此,更低特权的环对所述转换表的写访问尝试触发特权陷阱;以及
·配置由所述管理程序在所述第一环中执行的特权陷阱处理机,以更新所述转换表。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1915755A FR3105855B1 (fr) | 2019-12-31 | 2019-12-31 | Processeur à distribution configurable des ressources privilégiées et exceptions aux anneaux de protection |
FR1915755 | 2019-12-31 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113127936A true CN113127936A (zh) | 2021-07-16 |
Family
ID=70614017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011596401.XA Pending CN113127936A (zh) | 2019-12-31 | 2020-12-29 | 具有对保护环之间的特权资源和异常的可配置分配的处理器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11995218B2 (zh) |
EP (1) | EP3846029A1 (zh) |
CN (1) | CN113127936A (zh) |
FR (1) | FR3105855B1 (zh) |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5303378A (en) * | 1991-05-21 | 1994-04-12 | Compaq Computer Corporation | Reentrant protected mode kernel using virtual 8086 mode interrupt service routines |
US6202145B1 (en) * | 1998-12-14 | 2001-03-13 | International Business Machines Corporation | System and method for eliminating a ring transition while executing in protected mode |
US6678825B1 (en) * | 2000-03-31 | 2004-01-13 | Intel Corporation | Controlling access to multiple isolated memories in an isolated execution environment |
US7085705B2 (en) * | 2000-12-21 | 2006-08-01 | Microsoft Corporation | System and method for the logical substitution of processor control in an emulated computing environment |
US20050076186A1 (en) * | 2003-10-03 | 2005-04-07 | Microsoft Corporation | Systems and methods for improving the x86 architecture for processor virtualization, and software systems and methods for utilizing the improvements |
EP1669864B1 (en) * | 2004-12-03 | 2010-06-02 | STMicroelectronics Srl | A process for managing virtual machines in a physical processing machine, corresponding processor system and computer program product therefor |
US9183391B2 (en) * | 2013-03-13 | 2015-11-10 | Intel Corporation | Managing device driver cross ring accesses |
US9330035B2 (en) * | 2013-05-23 | 2016-05-03 | Arm Limited | Method and apparatus for interrupt handling |
US10552638B2 (en) * | 2015-05-13 | 2020-02-04 | Intel Corporation | Integrity protection of a mandatory access control policy in an operating system using virtual machine extension root operations |
US20160381050A1 (en) * | 2015-06-26 | 2016-12-29 | Intel Corporation | Processors, methods, systems, and instructions to protect shadow stacks |
US10430580B2 (en) * | 2016-02-04 | 2019-10-01 | Intel Corporation | Processor extensions to protect stacks during ring transitions |
US10067784B2 (en) * | 2016-06-16 | 2018-09-04 | Vmware, Inc. | Hypervisor backdoor interface |
US10579520B2 (en) * | 2017-11-30 | 2020-03-03 | Webroot Inc. | Multi-ring shared, traversable, and dynamic advanced database |
-
2019
- 2019-12-31 FR FR1915755A patent/FR3105855B1/fr active Active
-
2020
- 2020-12-08 EP EP20212471.5A patent/EP3846029A1/fr active Pending
- 2020-12-29 CN CN202011596401.XA patent/CN113127936A/zh active Pending
- 2020-12-31 US US17/139,662 patent/US11995218B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11995218B2 (en) | 2024-05-28 |
EP3846029A1 (fr) | 2021-07-07 |
US20210200904A1 (en) | 2021-07-01 |
FR3105855B1 (fr) | 2022-01-07 |
FR3105855A1 (fr) | 2021-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Hedayati et al. | Hodor:{Intra-Process} isolation for {High-Throughput} data plane libraries | |
RU2374675C2 (ru) | Системы и способы использования синтезированных команд в виртуальной машине | |
US9129106B2 (en) | Systems and methods for secure in-VM monitoring | |
US9244712B2 (en) | Virtualizing performance counters | |
Agesen et al. | The evolution of an x86 virtual machine monitor | |
JP6284130B2 (ja) | ローカル・クリア制御 | |
US20040205755A1 (en) | Operating systems | |
US20100205603A1 (en) | Scheduling and dispatching tasks in an emulated operating system | |
US20050091652A1 (en) | Processor-architecture for facilitating a virtual machine monitor | |
JP2015228227A (ja) | ページング可能ゲストをサポートするコンピューティング環境のストレージの管理を容易にするためのコンピュータ可読プログラム・コード・ロジック、方法、およびシステム | |
RU2666249C2 (ru) | Диспетчеризация множественных потоков в компьютере | |
CN111356989A (zh) | 保护存储器内配置状态寄存器 | |
CN111344689A (zh) | 配置状态寄存器的批量存储和加载操作 | |
TWI470434B (zh) | 在電腦系統中執行之方法,電腦系統,處理器 | |
CN111344687A (zh) | 基于存储器的配置状态寄存器 | |
CN111344789A (zh) | 基于功能亲和度分组的配置状态寄存器 | |
EP3649550A1 (en) | An apparatus and method for controlling execution of instructions | |
CN111344676A (zh) | 通过改变存储器指针的上下文切换 | |
EP4302183A1 (en) | Flexible return and event delivery | |
US20060184713A1 (en) | Method for operating a virtual machine computer system running guest operating systems on a central processing means virtualized by a host system having register stack engine functionality | |
US6895583B1 (en) | Task control block for a computing environment | |
US10162663B2 (en) | Computer and hypervisor-based resource scheduling method | |
US11995218B2 (en) | Processor with a configurable distribution of privileged resources and exceptions between protection rings | |
Zabaljáuregui | Hardware assisted virtualization intel virtualization technology | |
CN113474754A (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 |