CN107580697B - 用于验证正确的代码执行上下文的检查指令 - Google Patents
用于验证正确的代码执行上下文的检查指令 Download PDFInfo
- Publication number
- CN107580697B CN107580697B CN201680026545.7A CN201680026545A CN107580697B CN 107580697 B CN107580697 B CN 107580697B CN 201680026545 A CN201680026545 A CN 201680026545A CN 107580697 B CN107580697 B CN 107580697B
- Authority
- CN
- China
- Prior art keywords
- data processing
- processor state
- instruction
- processing apparatus
- runtime
- 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.)
- Active
Links
- 238000012545 processing Methods 0.000 claims abstract description 230
- 230000004044 response Effects 0.000 claims description 28
- 238000004590 computer program Methods 0.000 claims description 24
- 238000000034 method Methods 0.000 claims description 18
- 238000003672 processing method Methods 0.000 abstract description 4
- 238000005516 engineering process Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001960 triggered effect Effects 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30079—Pipeline control instructions, e.g. multicycle NOP
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/004—Error avoidance
-
- 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/52—Monitoring 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
-
- 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
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
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)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本公开提供了一种数据处理装置和数据处理方法,其使用处理器状态检查指令来确定数据处理装置当前是否正在处理器状态中进行操作,处理器状态由至少一个运行时处理器状态配置值定义,运行时处理器状态配置值与由处理器状态检查指令定义的处理器状态检查值相匹配。根据与处理器状态检查值相匹配的所需的运行时处理器状态配置值,处理器状态检查指令被视为无效指令。在至少一个运行时处理器状态配置值与处理器状态检查值不匹配时,生成异常。因此提供了数据处理装置的改进的安全性。
Description
技术领域
本公开涉及一种数据处理装置。更具体地,涉及检查在数据处理装置上执行程序代码的上下文是否正确。
背景技术
数据处理装置可以在多于一种的状态或模式下进行操作,其对数据处理装置进行其数据处理操作的方式具有各种影响,并且具体地可以定义当前允许访问存储在数据处理装置中的哪些数据。例如,可以在数据处理装置的处理器和存储器之间***存储器管理单元(MMU),以监督对存储器的访问。MMU的配置可以是,使得处理器在较低特权模式或非安全状态中进行操作时,不允许访问已经被定义为仅在特权模式或安全状态中进行操作时处理器可访问的存储器的区域。这可以例如,通过MMU访问存储在存储器中的页表来完成,页表的项定义存储器的哪些区域对于哪些模式或状态而言是可访问的。提供这样的技术之前已被视为足以确保在数据处理装置的操作期间遵守存储在存储器中的数据项目的所需安全性。
发明内容
在一个示例性实施例中,存在一种数据处理装置,包括:数据处理电路,用于响应于一序列的数据处理指令来执行数据处理操作,其中数据处理电路响应于存储在数据处理装置中的至少一个运行时处理器状态配置值,以在由至少一个运行时处理器状态配置值定义的处理器状态中执行数据处理操作,其中数据处理电路响应于处理器状态检查指令以根据与由处理器状态检查指令定义的处理器状态检查值相匹配的至少一个运行时处理器状态配置值来建立无操作条件,并且在建立无操作条件时将处理器状态检查指令视为无效指令,并且在未建立无操作条件时生成非法指令异常,其中响应于所述非法指令异常,防止进一步执行所述序列的数据处理指令。
在另一个示例性实施例中,存在一种计算机程序产品,其中以非暂态方式存储有计算机程序,计算机程序在计算设备上执行时使得计算设备作为上述示例实施例的数据处理装置进行操作。
在另一个示例性实施例中,存在一种计算机程序产品,其中以非暂态方式存储有计算机程序,计算机程序包括如根据上述示例实施例定义的至少一个处理器状态检查指令。
在另一个示例性实施例中,存在一种动态代码生成器,其能够生成用于根据上述示例实施例的数据处理装置的数据处理指令,其中数据处理指令包括处理器状态检查指令。
在另一个示例性实施例中,存在一种由在数据处理装置上执行的计算机程序提供的虚拟机,所述虚拟机提供与上述示例实施例的装置相对应的指令执行环境。
在另一个示例性实施例中,存在一种数据处理设备,其包括:用于响应于一序列的数据处理指令来执行数据处理操作的装置,其中数据处理操作是在由存储在数据处理装置中的至少一个运行时处理器状态配置值定义的处理器状态中执行的;用于根据与由处理器状态检查指令定义的处理器状态检查值相匹配的运行时处理器状态配置值来建立无操作条件的装置;用于在建立无操作条件时将处理器状态检查指令视为无效指令的装置;以及用于在未建立无操作条件时生成非法指令异常的装置,其中响应于所述非法指令异常,防止了进一步执行所述序列的数据处理指令。
在另一个示例性实施例中,存在一种数据处理方法,其包括:响应于一序列的数据处理指令来执行数据处理操作,其中数据处理操作是在由至少一个运行时处理器状态配置值定义的处理器状态中执行的;响应于处理器状态检查指令,根据与由处理器状态检查指令定义的处理器状态检查值相匹配的至少一个运行时处理器状态配置值来建立无操作条件;在建立无操作条件时将处理器状态检查指令视为无效指令;以及在未建立无操作条件时生成非法指令异常,其中响应于所述非法指令异常,防止了进一步执行所述序列的数据处理指令。
在另一个示例性实施例中,存在一种计算机程序产品,其中以非暂态方式存储有计算机程序,计算机程序在计算设备上执行时使得计算设备执行上述示例实施例的方法。
附图说明
仅通过示例方式,将参考附图中示出的实施例来进一步描述本技术,其中:
图1示意性地示出了一个实施例中的数据处理装置;
图2A示意性地示出了一个实施例中的数据处理装置中的执行电路和寄存器的配置;
图2B示意性地示出了一个实施例的数据处理装置中所支持的特权级别和/或异常级别;
图2C示意性地示出了一个实施例中的***在处理器核心和存储器之间的存储器管理单元;
图3A示出了一个实施例中的两个示例处理器状态检查指令;
图3B示出了一个实施例中的其中数据处理电路对图3A的第一处理器状态检查指令进行响应的方式的伪码表示;
图4A示出了一个实施例中的处理器状态检查指令;
图4B示意性地示出了一个实施例中的执行电路在执行图4A的处理器状态检查指令时参考权限查找表;
图4C示出了一个实施例中的两个处理器状态特定检查指令;
图5示出了在一个实施例的方法中执行的一系列步骤;
图6示意性地示出了用于提供或支持一些实施例的通用计算设备;以及
图7示意性地示出了根据一个实施例的虚拟机环境。
具体实施方式
至少一些实施例提供了一种数据处理装置,包括:数据处理电路,用于响应于一序列的数据处理指令来执行数据处理操作,其中数据处理电路响应于存储在数据处理装置中的至少一个运行时处理器状态配置值,以在由至少一个运行时处理器状态配置值定义的处理器状态中执行数据处理操作,其中数据处理电路响应于处理器状态检查指令以根据与由处理器状态检查指令定义的处理器状态检查值相匹配的至少一个运行时处理器状态配置值来建立无操作条件,并且在建立无操作条件时将处理器状态检查指令视为无效指令,并且在未建立无操作条件时生成非法指令异常,其中响应于所述非法指令异常,防止进一步执行所述序列的数据处理指令。
本技术认识到,尽管可以提供数据处理装置,其配置旨在确保数据处理装置的数据处理电路不能访问特定的存储器区域,除非其在被允许这么做的定义状态中进行操作,但仍然可能出现不能完全保证关于数据处理操作的可靠安全性的情况(无论是由于程序代码中的无意错误还是有意的恶意攻击)。例如,本技术认识到,错误或攻击可能导致敏感代码(例如,不应被暴露的私有算法(即,应维护其安全性))的“超出上下文”的使用。替代地,可能出现其中可能在敏感上下文中发送代码的不当使用的情况(无论其是由于错误还是攻击导致的),例如,来自内核上下文的纯用户代码。本技术认识到,虽然对例如由存储器管理单元处理的存储器保护属性进行了正确配置,但是这种情况仍可能产生安全隐患和漏洞。
为了解决这个问题,本技术提供了数据处理装置能够解释和执行的定义组的数据处理指令中的处理器状态检查指令。该处理器状态检查指令使得数据处理电路(例如,处理器核心或更具体地为执行流水线)将由处理器状态检查指令定义的处理器状态检查值与当前(运行时)处理器状态进行比较,具体地通过与存储在数据处理装置中的运行时处理器状态配置值进行比较。因此,数据处理装置的程序员能够适当地为其中应执行指令的所需上下文设置由处理器状态检查指令定义的处理器状态检查值。换句话说,该处理器状态检查指令能够由数据处理装置的程序员***至特定序列的数据处理指令中的一个或多个位置,以使得当执行该序列的数据处理指令时,数据处理电路将执行检查(响应于处理器状态检查指令),以确保数据处理装置当前正在适于(即,被允许)执行该序列的数据处理指令的状态中进行操作。如果通过了该检查,则数据处理电路将处理器状态检查指令视为无操作(NOP)指令,并且执行继续进行,且没有任何副作用。然而,如果检查失败,则数据处理电路通过生成异常来进行响应,该异常能够适当地被定义以确保不可能进一步地执行该序列的数据处理指令。因此,提供处理器状态检查指令确保了***程序员具有进一步的机制(对于已知的正确配置存储器保护属性的技术),以确保能够检查(每当程序员想要将该处理器状态检查指令***代码中)当前的上下文(模式或状态) 适用于正在被执行的数据处理操作。
由运行时处理器状态配置值定义的且通过使用处理器状态检查指令检查的处理器状态的性质可以采用各种形式。在一些实施例中,由至少一个运行时处理器状态配置值定义的处理器状态包括在数据处理装置能够执行数据处理操作的多个异常级别中的一个异常级别上的操作。这些多个异常级别(在一些上下文中其可以被称为“特权级别”或“环”))可以例如包括四个异常级别,每一个均具有增加的特权级别以及相关于较低异常级别的对数据处理装置中的数据的允许的可访问性。在一些实施例中,由至少一个运行时处理器状态配置值定义的处理器状态包括数据处理装置能够执行数据处理操作的多个安全状态中的一个安全状态。例如,数据处理装置可以被配置为在“安全”模式或“非安全”模式中进行操作,其中存储在数据处理装置中的某些数据或保持在装置中的特定序列的程序代码可能仅当数据处理装置当前在其“安全”模式中时才能进行访问或执行。
在一些实施例中,由至少一个运行时处理器状态配置值定义的处理器状态包括数据处理装置能够执行数据处理操作的多个调试状态中的一个调试状态。可以为数据处理装置提供在调试状态中进行操作的能力,以便在数据处理装置响应于一序列的数据处理指令进行其数据处理操作的同时允许程序员具有对数据处理装置的内部操作的更好的可见性。然而,通过本技术认识到该额外的可见性(其通过调试状态中的操作被提供给程序员,且其可以例如包括使得数据处理装置“单步执行(single step)”数据处理指令的能力)可能仅适合在某些上下文中提供,且例如,不能在要提供对数据项目或序列的程序指令的更大保护的上下文中提供。
在一些实施例中,由至少一个运行时处理器状态配置值定义的处理器状态包括数据处理装置能够执行数据处理操作的多个特权模式中的一个特权模式。类似地,数据处理装置可以被布置成能够在多于一个的特权模式中进行操作,其中应仅当数据处理装置在“特权”模式中且不在“非特权”模式中进行操作时才能进行对某些数据项目的访问或执行特定序列的程序代码,且本技术支持执行这种限制。
上述运行时处理器状态配置值的示例可以个别地定义处理器模式或状态,但在一些实施例中,数据处理电路响应于存储在数据处理装置中的多个运行时处理器状态配置值以在由多个运行时处理器状态配置值定义的各个处理器状态中执行数据处理操作,且其中数据处理电路响应于处理器状态检查指令以要求多个运行时处理器状态配置值中的每一个与由处理器状态检查指令定义的多个处理器状态检查值中的相应处理器状态检查值相匹配以建立无操作条件。在这种实施例中,处理器状态检查指令能够定义多个运行时处理器状态配置值中的每一个必须匹配的值,以便建立无操作条件。换句话说,一个处理器状态检查指令可以为几个不同的处理器状态配置值中的每一个定义所需的值。
替代地,可以提供多种类型的处理器状态检查指令,例如,一种类型的处理器状态检查指令针对一种类型的运行时处理器状态配置值,且在这种实施例中,数据处理电路响应于存储在数据处理装置中的多个运行时处理器状态配置值以在由多个运行时处理器状态配置值定义的各个处理器状态中执行数据处理操作,且其中数据处理电路响应于多种类型的处理器状态检查指令中的每一个以要求多个运行时处理器状态配置值中的相应运行时处理器状态配置值与由处理器状态检查指令定义的相应处理器状态检查值相匹配以建立无操作条件。
在一些实施例中,处理器状态检查指令为给定类型的处理器状态定义处理器状态检查值的特定值,其必须是匹配的以便建立无操作条件。然而,在一些实施例中,处理器状态检查指令为一种类型的处理器状态定义多个处理器状态检查值,且其中数据处理电路响应于处理器状态检查指令以要求为一种类型的处理器状态定义的多个处理器状态检查值中的至少一个与存储在数据处理装置中用于一种类型的处理器状态的相应运行时处理器状态配置值相匹配以建立无操作条件。换句话说,处理器状态检查指令能够为运行时处理器状态配置值定义多于一个的可接受值,以建立无操作条件。例如,在为数据处理装置的操作定义几个操作级别(例如,异常级别或特权级别)的上述示例中,处理器状态检查指令能够定义这些级别中的一个以上(例如,最上面的两个)为可接受的状态,其中数据处理装置可以进行操作且因此允许建立无操作条件。
运行时处理器状态配置值可以存储在数据处理装置中的各种位置或格式中,但在一些实施例中,数据处理装置包括状态寄存器,用于存储运行时处理器状态配置值。
处理器状态检查指令可以按各种方式定义相应的处理器状态检查值。在一些实施例中,处理器状态检查值被包括在处理器状态检查指令中。换句话说,相应的处理器状态检查值随后被定义为在处理器状态指令本身中给出的标志或立即值。
在一些实施例中,数据处理装置还包括检查值存储器,用于存储相应的处理器状态检查值,并且处理器状态检查指令使得数据处理电路参考检查值存储器。该检查值存储器可以例如在数据处理装置中采用查找表的形式,处理器状态检查指令为数据处理装置提供索引,以使得可以检索相应的所需处理器状态检查值以进行比较。
当建立无操作条件时,将处理器状态检查指令视为无效指令的方式能够采取许多形式。在一些实施例中,其包括允许处理器状态检查指令继续通过数据处理电路的执行流水线而不影响数据处理操作的结果。因此,对于外部观察者而言,在执行的该序列的指令中的处理器状态检查指令的存在将不会在数据处理结果方面产生可察觉的影响,尽管处理器状态检查指令通过执行流水线当然会消耗资源。在一些实施例中,将处理器状态检查指令视为无效指令包括将处理器状态检查指令视为无操作指令。因此,处理器状态检查指令可以在第一时机被丢弃。
至少一些实施例提供了一种计算机程序产品,其中以非暂态方式存储有计算机程序,计算机程序在计算设备上执行时使得计算设备作为上面所讨论的实施例中任一个的数据处理装置进行操作。
至少一些实施例提供了一种计算机程序产品,其中以非暂态方式存储有计算机程序,计算机程序包括上面参考上面所讨论的实施例所讨论的至少一个处理器状态检查指令。
至少一些实施例提供了一种动态代码生成器,其能够生成用于上述实施例中的任一个的数据处理装置的数据处理指令,其中数据处理指令包括采用上面提到的其形式中的任一种的处理器状态检查指令。例如,该动态代码生成器可以采用即时(JIT)引擎的形式。
至少一些实施例提供了一种由在数据处理装置上执行的计算机程序提供的虚拟机,该虚拟机提供与上述实施例中任一个的装置相对应的指令执行环境。
至少一些实施例提供了一种数据处理设备,其包括:用于响应于一序列的数据处理指令来执行数据处理操作的装置,其中数据处理操作是在由存储在数据处理装置中的至少一个运行时处理器状态配置值定义的处理器状态中执行的;用于根据与由处理器状态检查指令定义的处理器状态检查值相匹配的运行时处理器状态配置值来建立无操作条件的装置;用于在建立无操作条件时将处理器状态检查指令视为无效指令的装置;以及用于在未建立无操作条件时生成非法指令异常的装置,其中响应于所述非法指令异常,防止进一步执行所述序列的数据处理指令。
至少一些实施例提供了一种数据处理方法,其包括:响应于一序列的数据处理指令来执行数据处理操作,其中数据处理操作是在由至少一个运行时处理器状态配置值定义的处理器状态中执行的;响应于处理器状态检查指令,根据与由处理器状态检查指令定义的处理器状态检查值相匹配的至少一个运行时处理器状态配置值来建立无操作条件;在建立无操作条件时将处理器状态检查指令视为无效指令;以及在未建立无操作条件时生成非法指令异常,其中响应于所述非法指令异常,防止进一步执行所述序列的数据处理指令。
至少一些实施例提供了一种计算机程序产品,其中以非暂态方式存储有计算机程序,计算机程序在计算设备上执行时使得计算设备执行上述实施例的方法。
现在参考附图描述一些特定实施例。
图1示意性地示出了一个实施例中的数据处理装置。数据处理装置10 包括执行流水线12和相关联的寄存器14。通过指令获取单元16获取要由执行流水线12执行的数据处理指令,所述指令获取单元基于要被发布至执行流水线12的每个指令将各种控制信号传输至执行流水线12和寄存器 14,以使得发生所需的数据处理。指令获取单元16从存储器20检索要执行的该序列的数据处理指令,且数据处理装置10还包括本地缓存18,其中临时存储最近访问的指令和数据的副本。数据处理装置的这种一般布置是本领域的普通技术人员将熟悉的一种,为了简洁起见,这里省略了关于其的进一步详细的描述。然而,根据本技术,数据处理装置10被配置为响应于“处理器状态检查指令”,程序员能够使用该处理器状态检查指令以确保其中在数据处理装置上执行的程序代码是正确的。这将在下面更详细地进行描述。要注意的是,图1还示意性地示出了另一个数据处理装置 21,其在运行包括即时(JIT)动态代码生成器22的软件,该即时(JIT) 动态代码生成器22能够生成并存储一序列的数据处理指令以由存储器20 中的数据处理装置10执行,且这些数据处理指令可以包括处理器状态检查指令中的至少一个。
如图1中所示,可以由执行流水线12以各种方式使用数据处理装置 10的寄存器14,以支持由数据处理指令指示的数据处理操作。然而,与本技术相关的其的一个特定方面是使用特定寄存器来保持一个或多个值,所述值定义用于处理器核心(即,执行流水线或电路)的运行时处理器状态。这在图2A中示意性地示出。在该图中,示出了这种类型的状态寄存器中的四个,其中每一个均保持运行时处理器状态配置值,即用于异常级别23、安全状态24、调试状态26和特权模式28的寄存器。应注意的是,为了提供一系列示例,图2A中示出了所有这四个寄存器,但是为了定义运行时处理器状态,不需要存在所有四个这样的寄存器,且其他实施例可能仅具有这些寄存器中的一个或多个。实际上,其可能是例如,不需要同时具有异常级别寄存器23和特权模式寄存器28的情况,这是因为在一些实施例中,异常级别和特权级别基本上是相同的。例如,在ARM架构的上下文中,32位ARM是根据特权级别进行定义的,而64位ARM则是根据异常级别进行定义的。图2A还示出在执行电路12内保持的调试使能值 30,其是根据在调试状态寄存器26中设置的值来进行配置的。
图2B示意性地示出了在由执行电路12提供的虚拟机环境的上下文中的异常级别/特权模式的一个示例使用。图2B示出了在该虚拟化操作环境内操作的客户操作***34和应用32。对该客户操作***以及其执行的应用的总体控制是由管理程序进行维持的,其进一步维持对更广泛的虚拟化操作环境的总体控制并指定特定的虚拟机(即,客户操作***和其运行的应用)能够在***中看到的以及与其进行交互的内容。图2B进一步示意性地示出所示的***的不同组件在不同的“异常级别”(EL0_3)或“特权级别”(PL0_2)上进行操作的事实,这些不同的级别定义了给定的组件所具有的对***上的其他组件的控制和可见性的级别。因此,支持特权层次结构,其中应用32在该层次结构的最低级别上进行操作,客户操作***34在该层次结构的下一级上进行操作,且管理程序36在更高级别上进行操作。还要注意的是,在图2B中,示出了该特权层次结构的另外的更高级别,即安全监控器38,其在***中所支持的最高特权级别上 (“Secure_PL1”/EL3)进行操作,以便维持对***至“安全世界”和“非安全世界”的细分的严格控制,以在可以处理安全敏感数据的可信的应用/操作***和未对其提供这种信任的其他应用/操作***之间提供可靠的安全划分。
参考上述“安全世界”和“非安全世界”,图2C示意性地示出了在一个实施例中实施对存储器的定义的安全区域和非安全区域的访问的一种方式。这里,处理器核心40通过发出存储器访问请求来寻求对存储器42 的内容的访问。该存储器访问请求由存储器管理单元(MMU)44接收,该存储器管理单元(MMU)44监督这种存储器访问请求,并且具体地确保仅当其在适当的上下文(即,其中将发出存储器访问请求的相关组件被定义为“安全的”的一种上下文)中进行操作时才向处理器核心40提供对存储器46的安全区域的访问。可以例如更自由地提供对存储器48的非安全区域的访问,以使得在安全世界或非安全世界中进行操作的组件可以访问这样的数据。MMU 44根据相应的页表项的属性来确定是否允许给定的存储器访问请求继续进行至存储器42。MMU 44本地存储多个页表项 50以便加速该过程,但是这些页表项50最初是按本领域的普通技术人员将熟悉的方式适当从存储器中的全页表获取的。
图3A示出在一个实施例中的两个示例处理器状态检查指令 (“MODE_ASSERT”))。能够看出的是,指令的第一个示例定义了涉及异常级别、安全状态和调试状态的字段。指令的这些字段中的每一个能够被设置为具有指示将MODE_ASSERT指令视为无效指令所需的相应的运行时处理器状态配置值的值。在图1的数据处理装置10的一个实施例中,允许MODE_ASSERT指令通过执行流水线12进行,但源于指令获取单元(电路)16的控制信号防止了该指令影响数据处理操作的结果,例如,通过限制指令能对寄存器14的内容所产生的影响来进行。在图1的数据处理装置10的另一个实施例中,源于指令获取单元16的控制信号使得该指令MODE_ASSERT指令被视为无操作(NOP)指令,且因此立即被丢弃。再次要注意的是(类似于关于图2A所作的评论),可能存在执行这些指令的数据处理装置的实施例,该装置仅具有异常级别和特权模式运行时处理器状态配置值中的一个或另一个,且相应地第二个示例图3A的 MODE_ASSERT指令定义了涉及特权级别、安全状态和设计状态的字段。数据处理装置的配置使得对于任一示例指令而言,如果在每组字段中的 MODE_ASSERT指令中定义的至少一个值与当前定义运行时处理器状态配置的相应值(例如,如存储在图1和2A的示例中的相应寄存器14中的) 相匹配,则将MODE_ASSERT指令视为无效的(例如,作为NOP指令)。否则,生成非法指令异常。
图3B示出了用于实施数据处理装置对示例MODE_ASSERT指令的响应的示例伪代码。要注意的是,在图3B的示例中,不存在对“特权模式”值的依赖性,仅存在对“异常级别”值的依赖性,这是因为在这个示例中的数据处理装置被布置成具有异常级别而非特权级别。能够看出,为指令中的异常级别、安全状态和调试状态中的每一个设置的标志中的至少一个必须与要遵循的无操作响应的每一个的当前(运行时)级别或状态相匹配。否则,生成非法指令异常。返回参考图2B,要注意的是,由于特权层次结构的***级别定义(根据异常/特权级别和安全性),MODE_ASSERT 指令的字段值的一些组合将始终是无效的,即:PL2和Secure;EL2和 Secure;以及EL3和Non-Secure。
虽然MODE_ASSERT指令可以包括定义(一个或多个)运行时处理器状态配置值的立即值,其将允许将MODE_ASSERT指令视为NOP指令,但是图4A中所示的示例MODE_ASSERT指令被构造成使得提供至一个或多个权限查找表中的两个索引,且因此MODE_ASSERT指令被配置成使得数据处理装置参考权限查找表以确定相关的运行时处理器状态配置值。在图4A的示例中,为了实现对要触发的MODE_ASSERT指令的NOP响应,需要匹配异常级别和安全状态。图4B示意性地示出了示例数据处理装置60,其具有用于执行MODE_ASSERT指令(例如,在图4A中所示指令)的配置。执行指令的执行电路62使用每个索引来参考权限查找表 64,该权限查找表返回相关的处理器状态检查值(用于相应的运行时处理器状态配置值的允许值)。
图3A和4A中所示的示例MODE_ASSERT指令为多于一种类型的运行时处理器状态配置值(例如,在图4A的示例中为用于异常级别和安全状态)定义允许的运行时处理器状态配置值。图4C示出两个另外的示例 MODE_ASSERT指令,其中的每一个被布置成特定于运行时处理器状态配置,这是因为每一个仅为一种类型的值定义允许的运行时处理器状态配置值,即在图4C的第一个示例中的异常级别以及在图4C的第二个示例中的安全状态。因此,如果在该指令中设置的值标志中的至少一个与相应的运行时处理器状态配置值相匹配,将把图4C中所示的示例指令中的每一个视为NOP指令,否则将生成非法指令异常。
图5示出在一个实施例的方法中采取的一系列步骤。该流程能够被视为在步骤70开始,在该步骤中,指令是从存储器获取的并被发布至执行流水线。此后,在步骤72,检查每个指令并确定是否已遇到了 MODE_ASSERT指令。当这不是真的时,流程返回到步骤70,并且数据处理装置继续从存储器获取指令并将其发布到其执行流水线。当遇到 MODE_ASSERT指令时,流程继续前进到步骤74,在步骤74中,确定数据处理装置(处理器)操作所在的当前异常级别是否与MODE_ASSERT 指令中的至少一个异常级别(EL)标志相匹配。如果是,流程则继续前进到步骤76,其中确定当前安全状态是否与在MODE_ASSERT指令中定义的至少一个安全标志相匹配。如果是,流程则继续前进到步骤78,其中该指令被视为NOP指令,并且流程返回到步骤70。然而,如果在步骤74或步骤76中确定产生否定结果,流程则继续前进到步骤80,其中生成非法指令异常。因此,将理解的是,在本示例方法的上下文中讨论的 MODE_ASSERT指令是定义一个或多个允许的异常级别和一个或多个允许的安全状态,但例如不定义对调试状态或特权级别的约束(如在图3A中所示的通用MODE—ASSERT指令的示例中)的指令。
图6示意性地示出了可以用于实施上述技术的类型的通用计算设备 100。通用计算设备100包括经总线122连接在一起的中央处理单元102、随机存取存储器104和只读存储器106。其还包括网络接口卡108、硬盘驱动器110、显示驱动器112和监控器114,以及具有键盘118和鼠标120 的用户输入/输出电路116,所有这些部件经公共总线122连接。在操作中,中央处理单元102将执行计算机程序指令,该计算机程序指令可以例如存储在随机存取存储器104和/或只读存储器106中。程序指令可以额外地从硬盘驱动器110进行检索或经网络接口卡108进行动态下载。所执行的处理的结果可以经连接的显示驱动器112和监控器114被显示给用户。用于控制通用计算设备100的操作的用户输入可以经连接的用户输入输出电路 116从键盘118或鼠标120进行接收。将理解的是,计算机程序可以用各种不同的计算机语言进行编写。计算机程序可以被本地存储在记录介质上或者被动态地下载到通用计算设备100。根据本技术,通用计算设备100 具有一种配置,以使得其响应于如上面所讨论的一种或多种类型的处理器状态检查指令。通用计算设备100还能够具有允许其提供指令执行环境 (即,虚拟机)的配置,例如,上面参考图2B所示的配置。通用计算设备100的架构可能显著变化,且图6 仅仅是一个示例。
图7示出了可以使用的这种虚拟机实施方案。虽然上述实施例通常是在用于操作支持有关技术的特定处理硬件的装置和方法方面实施本技术的,但也可以提供硬件设备的所谓虚拟机的实施方案。这些虚拟机实施方案在通常运行支持虚拟机程序510的主机操作***520的主机处理器530上运行的。这可能需要提供更强大的处理器以便支持以合理速度执行的虚拟机实施方案,但是这种方式在某些情况下可能是合理的,例如,当出于兼容性或重新使用的原因而需要运行另一个处理器的原生代码。虚拟机程序 510向应用程序500提供应用程序接口,该应用程序接口与将由真实硬件提供的应用程序接口相同,该真实硬件为通过虚拟机程序510建模的设备。因此,包括上述处理器状态检查指令的一个或多个示例的程序指令可以使用虚拟机程序510从应用程序500内进行执行以对其与虚拟机硬件的交互进行建模。
在下面的示例配置中还描述了本技术的一些示例:
示例1)一种数据处理装置,其包括:数据处理电路,用于响应于数据处理指令来执行数据处理操作,其中数据处理电路响应于存储在数据处理装置中的至少一个运行时处理器状态配置值,以在由至少一个运行时处理器状态配置值定义的处理器状态中执行数据处理操作,其中数据处理电路响应于处理器状态检查指令以根据与由处理器状态检查指令定义的处理器状态检查值相匹配的至少一个运行时处理器状态配置值来建立无操作条件,并且在建立无操作条件时将处理器状态检查指令视为无效指令,并且在未建立无操作条件时生成异常。
示例2)一种数据处理设备,其包括:用于响应于数据处理指令来执行数据处理操作的装置,其中数据处理操作是在由存储在数据处理装置中的至少一个运行时处理器状态配置值定义的处理器状态中执行的;用于根据与由处理器状态检查指令定义的处理器状态检查值相匹配的运行时处理器状态配置值来建立无操作条件的装置;用于在建立无操作条件时将处理器状态检查指令视为无效指令的装置;以及用于在未建立无操作条件时生成异常的装置。
示例3)一种数据处理方法,其包括:响应于数据处理指令来执行数据处理操作,其中数据处理操作是在由至少一个运行时处理器状态配置值定义的处理器状态中执行的;响应于处理器状态检查指令,根据与由处理器状态检查指令定义的处理器状态检查值相匹配的至少一个运行时处理器状态配置值来建立无操作条件;当建立无操作条件时将处理器状态检查指令视为无效指令;以及当未建立无操作条件时生成异常。
在本申请中,词语“被配置成......”或“被布置成......”用于表示装置的元件具有能够执行定义的操作的配置。在这种上下文中,“配置”表示硬件或软件的布置或互连方式。例如,装置可以具有提供定义的操作的专用硬件或可以进行编程以执行功能的处理器或其他处理设备。“被配置成”或“被布置成......”并不意味着装置元件需要以任何方式进行改变以提供定义的操作。
虽然本文已参考附图详细描述了说明性实施例,但要理解的是本发明不限于那些精确的实施例,且本领域的技术人员能够在不脱离如所附权利要求定义的本发明的范围和精神的情况下在本文中实现各种改变、添加和修改。例如,在不脱离本发明的范围的情况下,从属权利要求的特征可以与独立权利要求的特征进行各种组合。
Claims (16)
1.一种数据处理装置,包括:
数据处理电路,用于响应于一序列的数据处理指令来执行数据处理操作,其中所述数据处理电路响应于存储在所述数据处理装置中的至少一个运行时处理器状态配置值,以在由所述至少一个运行时处理器状态配置值定义的处理器状态中执行所述数据处理操作,
其中所述数据处理电路响应于所述一序列的数据处理指令中的处理器状态检查指令,来执行检查以确定由所述至少一个运行时处理器状态配置值定义的所述处理器状态是否是用于执行所述一序列的数据处理指令的允许的处理器状态,所述处理器状态检查指令指定处理器状态检查值,
其中所述检查包括:
根据与由所述处理器状态检查指令定义的所述处理器状态检查值相匹配的所述至少一个运行时处理器状态配置值来建立无操作条件,
在建立所述无操作条件时将所述处理器状态检查指令视为无效指令,以及
在未建立所述无操作条件时生成非法指令异常,其中响应于所述非法指令异常,防止进一步执行所述序列的数据处理指令。
2.根据权利要求1所述的数据处理装置,其中,由所述至少一个运行时处理器状态配置值定义的所述处理器状态包括在所述数据处理装置能够执行所述数据处理操作的多个异常级别中的一个异常级别上的操作。
3.根据权利要求1或权利要求2所述的数据处理装置,其中,由所述至少一个运行时处理器状态配置值定义的所述处理器状态包括所述数据处理装置能够执行所述数据处理操作的多个安全状态中的一个安全状态。
4.根据权利要求1或权利要求2所述的数据处理装置,其中,由所述至少一个运行时处理器状态配置值定义的所述处理器状态包括所述数据处理装置能够执行所述数据处理操作的多个调试状态中的一个调试状态。
5.根据权利要求1或权利要求2所述的数据处理装置,其中,由所述至少一个运行时处理器状态配置值定义的所述处理器状态包括所述数据处理装置能够执行所述数据处理操作的多个特权模式中的一个特权模式。
6.根据权利要求1或权利要求2所述的数据处理装置,其中,所述数据处理电路响应于存储在所述数据处理装置中的多个运行时处理器状态配置值,以在由所述多个运行时处理器状态配置值定义的各个处理器状态中执行所述数据处理操作,
并且其中所述数据处理电路响应于所述处理器状态检查指令以要求所述多个运行时处理器状态配置值中的每个运行时处理器状态配置值与由所述处理器状态检查指令定义的多个处理器状态检查值中的相应处理器状态检查值相匹配以建立所述无操作条件。
7.根据权利要求1或权利要求2所述的数据处理装置,其中,所述数据处理电路响应于存储在所述数据处理装置中的多个运行时处理器状态配置值,以在由所述多个运行时处理器状态配置值定义的各个处理器状态中执行所述数据处理操作,
并且其中所述数据处理电路响应于多种类型的处理器状态检查指令中的每种类型的处理器状态检查指令以要求所述多个运行时处理器状态配置值中的相应运行时处理器状态配置值与由所述处理器状态检查指令定义的相应处理器状态检查值相匹配以建立所述无操作条件。
8.根据权利要求1或权利要求2所述的数据处理装置,其中,所述处理器状态检查指令针对一种类型的处理器状态定义多个处理器状态检查值,
并且其中所述数据处理电路响应于所述处理器状态检查指令以要求针对一种类型的处理器状态定义的所述多个处理器状态检查值中的至少一个处理器状态检查值与存储在所述数据处理装置中针对所述一种类型的处理器状态的所述运行时处理器状态配置值相匹配以建立所述无操作条件。
9.根据权利要求1或权利要求2所述的数据处理装置,其中,所述数据处理装置包括状态寄存器,用于存储所述运行时处理器状态配置值。
10.根据权利要求1或权利要求2所述的数据处理装置,其中,将所述处理器状态检查指令视为无效指令包括,允许所述处理器状态检查指令继续通过所述数据处理电路的执行流水线而不影响所述数据处理操作的结果。
11.根据权利要求1或权利要求2所述的数据处理装置,其中,将所述处理器状态检查指令视为无效指令包括,将所述处理器状态检查指令视为无操作指令。
12.一种非暂态计算机可读存储介质,存储有计算机程序,所述计算机程序在计算设备上执行时使得所述计算设备作为任何前述权利要求所述的数据处理装置进行操作。
13.一种由在数据处理装置上执行的计算机程序提供的虚拟机,所述虚拟机提供到应用程序的应用程序接口,所述应用程序接口与权利要求1或2所述的装置所提供的应用程序接口相同。
14.一种数据处理设备,包括:
用于响应于一序列的数据处理指令来执行数据处理操作的装置,其中所述数据处理操作是在由存储在所述数据处理设备 中的至少一个运行时处理器状态配置值定义的处理器状态中执行的;
用于响应于所述一序列的数据处理指令中的处理器状态检查指令来执行检查以确定由所述至少一个运行时处理器状态配置值定义的所述处理器状态是否是用于执行所述一序列的数据处理指令的允许的处理器状态的装置;
其中所述处理器状态检查指令指定处理器状态检查值,并且所述检查包括:
根据与由处理器状态检查指令定义的所述处理器状态检查值相匹配的所述运行时处理器状态配置值来建立无操作条件;
在建立所述无操作条件时将所述处理器状态检查指令视为无效指令的装置;以及
在未建立所述无操作条件时生成非法指令异常,其中响应于所述非法指令异常,防止进一步执行所述序列的数据处理指令。
15.一种数据处理方法,其包括:
响应于一序列的数据处理指令来执行数据处理操作,其中所述数据处理操作是在由至少一个运行时处理器状态配置值定义的处理器状态中执行的;
响应于所述一序列的数据处理指令中的处理器状态检查指令,来执行检查以确定由所述至少一个运行时处理器状态配置值定义的所述处理器状态是否是用于执行所述一序列的数据处理指令的允许的处理器状态,所述处理器状态检查指令指定处理器状态检查值,
其中所述检查包括:
根据与由所述处理器状态检查指令定义的所述处理器状态检查值相匹配的所述至少一个运行时处理器状态配置值来建立无操作条件;
在建立所述无操作条件时将所述处理器状态检查指令视为无效指令;以及
在未建立所述无操作条件时生成非法指令异常,其中响应于所述非法指令异常,防止进一步执行所述序列的数据处理指令。
16.一种非暂态计算机可读存储介质,存储有计算机程序,所述计算机程序在计算设备上执行时使得所述计算设备执行根据权利要求15所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1507795.1A GB2538091B (en) | 2015-05-07 | 2015-05-07 | Verifying correct code execution context |
GB1507795.1 | 2015-05-07 | ||
PCT/GB2016/051023 WO2016177992A1 (en) | 2015-05-07 | 2016-04-12 | Check instruction for verifying correct code execution context |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107580697A CN107580697A (zh) | 2018-01-12 |
CN107580697B true CN107580697B (zh) | 2021-11-30 |
Family
ID=53489240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680026545.7A Active CN107580697B (zh) | 2015-05-07 | 2016-04-12 | 用于验证正确的代码执行上下文的检查指令 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10942739B2 (zh) |
KR (1) | KR102600220B1 (zh) |
CN (1) | CN107580697B (zh) |
GB (1) | GB2538091B (zh) |
WO (1) | WO2016177992A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220206818A1 (en) * | 2020-12-26 | 2022-06-30 | Intel Corporation | Hardening execution hardware against speculation vulnerabilities |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1476559A (zh) * | 2000-11-27 | 2004-02-18 | Arm | 用于保存返回状态的数据处理设备和方法 |
CN1690971A (zh) * | 2004-04-27 | 2005-11-02 | 松下电器产业株式会社 | 中断控制装置 |
CN1711524A (zh) * | 2002-11-18 | 2005-12-21 | Arm有限公司 | 在安全模式和非安全模式间切换的处理器 |
CN1711526A (zh) * | 2002-11-18 | 2005-12-21 | Arm有限公司 | 安全处理***内的异常类型 |
CN1936847A (zh) * | 2005-09-19 | 2007-03-28 | 英特尔公司 | 上下文状态管理技术 |
CN103733204A (zh) * | 2011-07-18 | 2014-04-16 | 惠普发展公司,有限责任合伙企业 | 处理器中的状态之间的转移 |
CN103999036A (zh) * | 2011-12-16 | 2014-08-20 | 英特尔公司 | 在支持事务的计算机体系结构中使用异常进行代码专业化的方法和*** |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5537560A (en) * | 1994-03-01 | 1996-07-16 | Intel Corporation | Method and apparatus for conditionally generating a microinstruction that selects one of two values based upon control states of a microprocessor |
US6516395B1 (en) * | 1997-11-20 | 2003-02-04 | Advanced Micro Devices, Inc. | System and method for controlling access to a privilege-partitioned address space with a fixed set of attributes |
US6513110B1 (en) * | 1999-12-15 | 2003-01-28 | Transmeta Corporation | Check instruction and method |
US7680999B1 (en) * | 2000-02-08 | 2010-03-16 | Hewlett-Packard Development Company, L.P. | Privilege promotion based on check of previous privilege level |
US6895460B2 (en) * | 2002-07-19 | 2005-05-17 | Hewlett-Packard Development Company, L.P. | Synchronization of asynchronous emulated interrupts |
JP4761533B2 (ja) * | 2005-12-13 | 2011-08-31 | キヤノン株式会社 | 情報処理装置及びワークフロー生成方法とプログラム |
US20080034350A1 (en) * | 2006-04-05 | 2008-02-07 | Conti Gregory R | System and Method for Checking the Integrity of Computer Program Code |
US7962729B2 (en) * | 2009-01-05 | 2011-06-14 | International Business Machines Corporation | Dynamic runtime range checking of different types on a register using upper and lower bound value registers for the register |
GB2482701C (en) * | 2010-08-11 | 2018-12-26 | Advanced Risc Mach Ltd | Illegal mode change handling |
GB2483906C (en) * | 2010-09-24 | 2019-10-09 | Advanced Risc Mach Ltd | Selection of debug instruction set for debugging of a data processing apparatus |
US20140289502A1 (en) * | 2013-03-19 | 2014-09-25 | Apple Inc. | Enhanced vector true/false predicate-generating instructions |
US9417941B2 (en) * | 2014-05-21 | 2016-08-16 | Freescale Semiconductor, Inc. | Processing device and method of executing an instruction sequence |
US9563557B2 (en) * | 2014-12-23 | 2017-02-07 | Intel Corporation | Instruction and logic for flush-on-fail operation |
-
2015
- 2015-05-07 GB GB1507795.1A patent/GB2538091B/en active Active
-
2016
- 2016-04-12 WO PCT/GB2016/051023 patent/WO2016177992A1/en active Application Filing
- 2016-04-12 US US15/571,952 patent/US10942739B2/en active Active
- 2016-04-12 KR KR1020177034502A patent/KR102600220B1/ko active IP Right Grant
- 2016-04-12 CN CN201680026545.7A patent/CN107580697B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1476559A (zh) * | 2000-11-27 | 2004-02-18 | Arm | 用于保存返回状态的数据处理设备和方法 |
CN1711524A (zh) * | 2002-11-18 | 2005-12-21 | Arm有限公司 | 在安全模式和非安全模式间切换的处理器 |
CN1711526A (zh) * | 2002-11-18 | 2005-12-21 | Arm有限公司 | 安全处理***内的异常类型 |
CN1690971A (zh) * | 2004-04-27 | 2005-11-02 | 松下电器产业株式会社 | 中断控制装置 |
CN1936847A (zh) * | 2005-09-19 | 2007-03-28 | 英特尔公司 | 上下文状态管理技术 |
CN103733204A (zh) * | 2011-07-18 | 2014-04-16 | 惠普发展公司,有限责任合伙企业 | 处理器中的状态之间的转移 |
CN103999036A (zh) * | 2011-12-16 | 2014-08-20 | 英特尔公司 | 在支持事务的计算机体系结构中使用异常进行代码专业化的方法和*** |
Also Published As
Publication number | Publication date |
---|---|
CN107580697A (zh) | 2018-01-12 |
US10942739B2 (en) | 2021-03-09 |
KR20180004192A (ko) | 2018-01-10 |
WO2016177992A1 (en) | 2016-11-10 |
GB201507795D0 (en) | 2015-06-17 |
GB2538091B (en) | 2018-03-14 |
GB2538091A (en) | 2016-11-09 |
KR102600220B1 (ko) | 2023-11-09 |
US20180143831A1 (en) | 2018-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102189296B1 (ko) | 가상 머신 보안 어플리케이션을 위한 이벤트 필터링 | |
US8301856B2 (en) | Restricting memory areas for an instruction read in dependence upon a hardware mode and a security flag | |
US9672354B2 (en) | Systems and methods for exposing a result of a current processor instruction upon exiting a virtual machine | |
US9454676B2 (en) | Technologies for preventing hook-skipping attacks using processor virtualization features | |
US20160210069A1 (en) | Systems and Methods For Overriding Memory Access Permissions In A Virtual Machine | |
US8151264B2 (en) | Injecting virtualization events in a layered virtualization architecture | |
US10140448B2 (en) | Systems and methods of asynchronous analysis of event notifications for computer security applications | |
CN109359487A (zh) | 一种基于硬件隔离的可扩展安全影子存储及标签管理方法 | |
US10311252B2 (en) | Technologies for protecting dynamically generated managed code with protection domains | |
JP7432586B2 (ja) | スタック・ポインタを検証すること | |
US20160048458A1 (en) | Computer Security Systems and Methods Using Hardware-Accelerated Access To Guest Memory From Below The Operating System | |
KR20130098303A (ko) | 정렬 제어 | |
US10248785B2 (en) | Application memory protection using a host page table switching virtual machine function | |
JP2023038361A (ja) | 命令セット内の変更を制御する装置及び方法 | |
US11409531B2 (en) | Processor having multiple operating modes | |
CN107580697B (zh) | 用于验证正确的代码执行上下文的检查指令 | |
EP3408749B1 (en) | Memory address translation management | |
KR20230101826A (ko) | 캐퍼빌리티들을 사용하여 메모리에 대한 액세스를 제약하기 위한 기술 | |
WO2024028565A1 (en) | No-operation-compatible instruction | |
Elwell | Securing systems with non-inclusive memory permissions |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |