CN104951274A - 用于控制流安全性的二进制转换机制的指令和逻辑 - Google Patents

用于控制流安全性的二进制转换机制的指令和逻辑 Download PDF

Info

Publication number
CN104951274A
CN104951274A CN201510141277.0A CN201510141277A CN104951274A CN 104951274 A CN104951274 A CN 104951274A CN 201510141277 A CN201510141277 A CN 201510141277A CN 104951274 A CN104951274 A CN 104951274A
Authority
CN
China
Prior art keywords
instruction
destination
address
source address
group
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.)
Granted
Application number
CN201510141277.0A
Other languages
English (en)
Other versions
CN104951274B (zh
Inventor
P·曼亚蒂斯
S·古普塔
N·库马
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN104951274A publication Critical patent/CN104951274A/zh
Application granted granted Critical
Publication of CN104951274B publication Critical patent/CN104951274B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1615Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using a concurrent pipeline structrure
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Abstract

处理器包括前端、执行流水线,以及二进制转换器。前端包括接收指令并向二进制转换器分派指令的逻辑。二进制转换器包括判断指令是否包括控制流指令、标识指令的源地址、标识指令的目标地址、基于源地址,判断目标地址是否是已知目的地,基于以源地址为基础的目标地址是否是已知目的地的判断,判断是否向执行流水线路由指令的逻辑。目标地址包括在执行指令时执行将间接地转移到的地址。

Description

用于控制流安全性的二进制转换机制的指令和逻辑
技术领域
本发明涉及处理逻辑、微处理器,以及相关联的指令集架构领域,当它们被处理器或其他处理逻辑执行时,执行逻辑、数学,或其他功能操作。
相关技术的描述
多处理器系统正在变得越来越多常见。多处理器系统的应用包括动态域分割直到桌面计算。为了利用多处理器系统,要被执行的代码可以被分离成多个线程,用于由各个处理实体执行。每一线程都可以彼此并行地执行。
选择加密例程可包括选择实现该例程所需的安全性和资源之间的折中。尽管某些加密例程没有其他的那样安全,但是,实现它们所需的资源可以足够小,以允许它们在诸如处理能力和存储器之类的计算资源没有例如台式计算机或较大的计算方案那么充足的各种应用中使用。实现诸如加密例程之类的例程的成本可以以门计数或门等效(gate-equivalent)计数、吞吐量、功率消耗,或生产成本来度量。用于计算应用程序中的多个加密例程包括被称为AES、Hight、Iceberg、Katan、Klein、Led、mCrypton、Piccolo、Present、Prince、Twine,以及EPCBC的那些,但是,这些例程不一定彼此兼容,一个例程也不一定可以替代另一个。
附图简述
此处所描述的本发明的各实施例是作为示例说明的,而不仅限于各个附图的图形。
图1A是根据本发明的各实施例的利用可包括执行指令的执行单元的处理器形成的示例性计算机系统的框图;
图1B示出了根据本发明的各实施例的数据处理系统;
图1C示出了用于执行文本字符串比较操作的数据处理系统的其他实施例;
图2是根据本公开的各实施例的可包括执行指令的逻辑电路的处理器的微架构的框图;
图3A是根据本发明各实施例的处理器的框图;
图3B是根据本发明的各实施例的核的示例实现的框图;
图4是根据本发明的各实施例的系统的框图;
图5是根据本发明的各实施例的第二系统的框图;
图6是根据本发明的各实施例的第三系统的框图;
图7是根据本发明的各实施例的片上系统的框图;
图8是根据本发明的各实施例的用于使用处理器电子设备的框图;
图9示出了根据本发明的各实施例的用于实现提供控制流安全性的二进制转换机制的示例系统;
图10是根据本发明的各实施例的考虑到恶意攻击执行控制流安全性的系统的示例操作的例图;
图11是根据本发明的各实施例的控制结构的示例实施例的例图;
图12A、12B、12C、12D,以及12E示出了根据本发明的各实施例的执行控制流安全性的系统的示例操作;以及
图13示出了根据本发明的各实施例的用于实现提供控制流安全性的二进制转换机制的示例方法。
具体实施方式
下列描述说明了处理器、虚拟处理器、封装、计算机系统,或其他处理设备内的或与它们相关联的控制流安全性的二进制转换机制的指令和处理逻辑。在下面的描述中,阐述了诸如处理逻辑、处理器类型、微架构条件、事件、启用机制等等之类的很多具体细节,以便提供对本发明的实施例进行全面的理解。然而,本领域技术人员可以理解,各实施例可以在没有这样的具体细节的情况下实施。另外,为避免不必要地使本发明的各实施例模糊,没有详细示出某些已知的结构,电路,等等。
虽然将处理器参考来描述下列各实施例,但是,其他实施例也适用于其他类型的集成电路和逻辑设备。可以将本发明的各实施例的类似的技术和原理应用于可以得益于较高流水线吞吐量和改善的性能的其他类型的电路或半导体器件。本发明的各实施例的原理适用于执行数据操纵的任何处理器或机器。然而,各实施例不仅限于执行512比特、256比特、128比特、64比特、32比特或16比特数据操作的处理器或机器,并可以应用其中可以执行对数据的操纵或管理的任何处理器和机器。另外,下列描述提供了示例,为便于说明,各个附图示出了各种示例。然而,这些示例不应该以限制的方式来解释,因为它们只是提供本发明的各实施例的示例,而并非提供本发明的各实施例的所有可能的实现的详细清单。
虽然下面的示例在执行单元以及逻辑电路的上下文中描述了指令处理和分布,但是本发明的其他实施例可以通过存储在机器可读、有形介质上的数据或指令来完成,这些数据或指令当由机器执行时,使机器执行根据本发明的至少一个实施例的功能。在一个实施例中,与本发明的各实施例相关联的功能是以机器可执行指令来实现的。指令可以用来使利用指令可以被编程的通用或专用的处理器来执行本发明的步骤。本发明的各实施例可以作为计算机程序产品或软件来提供,该计算机程序产品或软件可以包括在其上存储了指令的机器或计算机可读介质,指令可以被用来编程计算机(或其他电子器件)以执行根据本发明的各实施例的一个或多个操作。此外,还可以由包含用于执行步骤的固定功能逻辑的特定硬件组件,或由编程的计算机组件和固定功能硬件组件的任何组合,来执行本发明的各实施例的步骤。
用于编程逻辑以执行本发明的各实施例的指令可以存储在系统中的存储器内,诸如DRAM、缓存、闪存,或其他存储器。此外,指令还可以通过网络或通过其他计算机可读介质来分发。如此,机器可读的介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,但不仅限于,软盘、光盘、压缩光盘、只读存储器(CD-ROM),以及磁光盘、只读存储器(ROMs)、随机存取存储器(RAM)、可擦与可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、磁卡或光卡、闪存,或用于通过电的、光学的、声音或其他形式的传播信号(例如,载波、红外信号、数字信号等等)通过因特网来传输信息的有形的,机器可读的存储器。相应地,计算机可读介质可包括适于以可由机器(例如,计算机)读取的形式来存储或传输电子指令或信息的任何类型的有形机器可读介质。
设计可以经过各个阶段,从创建到模拟到制造。代表设计的数据可以以若干种方式来代表设计。首先,如可以对模拟有用的,硬件可以使用硬件描述语言或另一种功能描述语言来表示。另外,可以在设计过程的某些阶段产生带有逻辑和/或晶体管门的电路级别的模型。此外,在某些阶段,设计还可以到达表示硬件模型中的各种设备的物理布局的数据的级别。在使用某些半导体制造技术的情况下,表示硬件模型的数据可以是指定用于生产集成电路的掩膜的不同的掩膜层上各种特征的存在或不存在的数据。在设计的任何表示中,数据可以存储在任何形式的机器可读介质中。存储器或诸如盘之类的磁性或光存储器可以是存储通过光波或电波调制的或为传输信息以别的方式生成的信息的机器可读介质。当传输表示或携带代码或设计的电的载波时,就执行电信号的复制、缓冲或重新传输而言,可以制作新副本。如此,通信提供商或网络提供商可以在有形的,机器可读介质上至少临时存储诸如被编码到载波中的信息之类的制品,实现本发明的各实施例的技术。
在现代的处理器中,可以使用若干种不同的执行单元来处理和执行各种代码和指令。某些指令可能更快地完成,而其他指令可能要花费若干个时钟周期才能完成。指令的吞吐量越快,处理器的总体性能越好。如此,尽可能快地让许多指令执行是有利的。然而,可能有具有较大的复杂性并就执行时间和处理器资源而言要求更高的某些指令,诸如浮点指令、加载/存储操作、数据移动等等。
随着越来越计算机系统用于因特网、文本,以及多媒体应用中,随着时间的推移,引入了额外的处理器支持。在一个实施例中,指令集可以与一个或多个计算机架构相关联,包括数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理,以及外部输入和输出(I/O)。
在一个实施例中,指令集架构(ISA)可以通过一个或多个微架构来实现,这些微架构可包括用于实现一个或多个指令集的处理器逻辑和电路。相应地,带有不同的微架构的处理器可以共享共同的指令集的至少一部分。例如,Pentium 4处理器、CoreTM处理器,以及来自位于加州桑尼维尔的高级微设备有限公司(Advanced Micro Devices,Inc.)处理器实现x86指令集的几乎相同的版本(带有被添加到较新的版本中的某些扩展),但是,具有不同的内部设计。类似地,由诸如ARM有限公司(ARM Holdings,Ltd.)、MIPS,或它们的被许可方或采用者之类的其他处理器开发公司设计的处理器可以共享共同的指令集的至少一部分,但是可包括不同的处理器设计。例如,ISA的相同寄存器架构可以使用新的或已知的技术,以不同的微架构,以不同的方式来实现,包括专用物理寄存器,使用寄存器重命名机制(例如,寄存器别名表(RAT),重新排序缓冲器(ROB)以及退役寄存器组的使用)的一个或多个动态分配的物理寄存器。在一个实施例中,寄存器可包括一个或多个寄存器、寄存器架构、寄存器组,或可以或可以不通过软件程序员可寻址的其他寄存器组。
指令可包括一个或多个指令格式。在一个实施例中,指令格式可以指出各种字段(比特数、比特的位置)以指定,其中,要执行的操作以及将对其进行操作的操作数。在又一实施例中,某些指令格式可以进一步由指令模板(或子格式)进行定义。例如,给定指令格式的指令模板可以被定义为具有指令格式的字段的不同的子集和/或被定义为具有以不同的方式解释的给定字段。在一个实施例中,指令可以使用指令格式来表达(并且,如果定义,在该指令格式的指令模板的给定指令模板中),指定或指出操作和操作将对其起作用的操作数。
科学、金融、自动矢量化的通用,RMS(识别、挖掘以及合成),以及可视和多媒体应用程序(例如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频操纵)常常需要对大量的数据项执行相同操作。在一个实施例中,单指令多数据(SIMD)是指使处理器对多个数据项执行操作的一种指令。SIMD技术可以用于可以在逻辑上将寄存器中的比特分割为若干个固定大小的数据元素的处理器中,每一个元素都表示单独的值。例如,在一个实施例中,64比特寄存器中的比特可以被组织为包含四个单独的16比特数据元素的源操作数,每一个数据元素都表示单独的16比特值。这种类型的数据被称为“打包(packed)”数据类型或“矢量”数据类型,这种数据类型的操作数可以被称为打包数据操作数或矢量操作数。在一个实施例中,打包数据项或矢量可以是存储在单一寄存器内的打包数据元素的序列,打包数据操作数或矢量操作数可以是SIMD指令(或“打包数据指令”或“矢量指令”)的源或目的地操作数。在一个实施例中,SIMD指令指定要对两个源矢量操作数执行的单个矢量运算,以利用相同或不同数量的数据元素,以相同或不同数据元素顺序,生成相同或不同大小的目的地矢量操作数(也称为结果矢量操作数)。
诸如由具有包括x86、MMXTM、流式SIMD扩展(SSE)、SSE2、SSE3、SSE4.1以及SSE4.2指令的指令集的CoreTM处理器使用的技术之类的SIMD技术,诸如具有包括矢量浮点(VFP)和NEON指令的指令集的ARM处理器系列之类的ARM处理器,以及诸如由中国科学院计算技术研究所(ICT)开发的龙芯处理器系列之类的MIPS处理器,在应用程序性能方面实现了大大的改善(CoreTM和MMXTM是位于加利福尼亚州圣克拉拉的Intel公司的注册商标或商标。)。
在一个实施例中,目的地和源寄存器/数据可以是表示对应的数据或操作的源和目的地的类属项。在某些实施例中,它们可以通过具有不同于所描绘的那些的其他名称或功能的寄存器、存储器,或其他储存区来实现。例如,在一个实施例中,“DEST1”可以是临时存储寄存器或其他储存区,而“SRC1”和“SRC2”可以是第一和第二源存储寄存器或其他储存区等等。在其他实施例中,SRC和DEST储存区中的两个或更多可以对应于相同储存区(例如,SIMD寄存器)内的不同的数据存储元素。在一个实施例中,源寄存器中的一个也可以通过,例如,将对第一和第二源数据执行的操作的结果回写到充当目的地寄存器的两个源寄存器中的一个,来充当目的地寄存器。
图1A是根据本发明的各实施例的利用可包括执行指令的执行单元的处理器形成的示例性计算机系统的框图。根据本发明,诸如在此处所描述的实施例中,系统100可包括诸如处理器102之类的组件,以使用包括执行用于处理数据的算法的逻辑的执行单元。系统100可以是基于位于加利福尼亚州圣克拉拉市的英特尔公司所提供的XeonTMXScaleTM和/或StrongARMTM的微处理器的处理系统的代表,虽然也可以也可以其他系统(包括具有其他微处理器的PC、工程工作站、机顶盒等等)。在一个实施例中,示例系统100执行位于美国华盛顿州雷蒙德市的微软公司所提供的WINDOWSTM操作系统的一种版本,虽然也可以使用其他操作系统(例如,UNIX和Linux)、嵌入式软件和/或图形用户界面。如此,本发明的各实施例不仅限于硬件电路和软件的任何特定的组合。
各实施例不仅限于计算机系统。本发明的各实施例可以用于诸如手持式设备和嵌入式应用之类的其他设备中。手持式设备的某些示例包括蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)以及手持式PC。嵌入式应用可包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、或能够执行根据至少一个实施例的一个或多个指令的任何其他系统。
计算机系统100可包括处理器102,该处理器102可包括执行一种算法以执行根据本发明的一个实施例的至少一个指令的一个或多个执行单元108。可以在单处理器台式机或服务器系统的上下文中来描述一个实施例,但是,其他实施例可以被包括在多处理器系统中。系统100可以是“中枢”系统体系结构的示例。系统100可包括用于处理数据信号的处理器102。处理器102可包括复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集的组合的处理器或任何其他处理器设备,诸如,例如,数字信号处理器。在一个实施例中,处理器102可以耦合到可以在处理器102及系统100中的其他组件之间传输数据信号的处理器总线110。系统100的元件可以执行本领域普通技术人员所共知的常规功能。
在一个实施例中,处理器102可包括1级(L1)内部高速缓存存储器104。取决于体系结构,处理器102可以具有单个内部高速缓存或多级内部高速缓存。在另一个实施例中,高速缓存存储器可以驻留在处理器102外部。取决于特定实现以及需求,其他实施例也可以包括内部和外部缓存两者的组合。寄存器组106可以在包括整数寄存器、浮点寄存器、状态寄存器,以及指令指针寄存器的各种寄存器中存储不同类型的数据。
执行单元108(包括执行整数以及浮点运算的逻辑)也驻留在处理器102中。处理器102也可以包括用于存储某些宏指令的微代码的微代码(ucode)ROM。在一个实施例中,执行单元108可包括处理打包指令集109的逻辑。通过与执行指令的相关联的电路一起将打包指令集109包括在通用处理器102的指令集中,许多多媒体应用程序所使用的操作可以使用通用处理器102中的打包数据来执行。如此,通过使用全宽的处理器的数据总线来对打包数据执行操作,许多多媒体应用程序可以被加速并且更有效率地被执行。这可以潜在地消除跨处理器的数据总线来传输较小单位的数据以执行一个或多个操作(一次一个数据元素)的必要性。
执行单元108的各实施例也可以用于微控制器、嵌入式处理器、图形设备、DSP及其他类型的逻辑电路中。系统100可包括存储器120。存储器120可以被实现为动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或其他存储器设备。存储器120可以存储可以由处理器102执行的指令和/或通过数据信号来表示的数据。
系统逻辑芯片116可以耦合到处理器总线110和存储器120。系统逻辑芯片116可包括存储器控制器中枢(MCH)。处理器102可以通过处理器总线110与MCH 116进行通信。MCH 116可以提供到存储器120的高带宽存储器路径118,用于指令和数据存储,并用于存储图形命令、数据和纹理。MCH 116可以在处理器102、存储器120及系统100中的其他组件之间定向数据信号,并在处理器总线110、存储器120以及系统I/O 122之间桥接数据信号。在某些实施例中,系统逻辑芯片116可以提供用于耦合到图形控制器112的图形端口。MCH 116可以通过存储器接口118耦合到存储器120。图形卡112通过加速图形端口(AGP)互连114耦合到MCH 116。
系统100可以使用专有的中枢接口总线122来将MCH 116耦合到I/O控制器中枢(ICH)130。在一个实施例中,ICH 130可以通过本地I/O总线来提供到某些I/O设备的直接连接。本地I/O总线可以包括用于将外围设备连接到存储器120、芯片组以及处理器102的高速I/O总线。示例可以包括音频控制器、固件中枢(闪存BIOS)128、无线收发器126、数据存储器124、包含用户输入和键盘接口的传统I/O控制器、诸如通用串行总线(USB)之类的串行扩展端口以及网络控制器134。数据存储设备124可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备,或其他大容量存储设备。
对于系统的另一个实施例,根据一个实施例的指令可以与芯片上系统一起使用。芯片上系统的一个实施例包括处理器和存储器。一个这样的系统的存储器可以包括闪存。闪存可以与处理器及其他系统组件位于同一个晶片上。另外,诸如存储器控制器或图形控制器之类的其他逻辑块也可以位于芯片上系统之上。
图1B示出了实现本发明的各实施例的原理的数据处理系统140。那些精通本技术的普通人员将轻松地理解,在不偏离本发明的各实施例的范围的情况下,此处所描述的各实施例可以与替代的处理系统一起操作。
计算机系统140包括用于执行根据一个实施例的至少一个指令的处理核159。在一个实施例中,处理核159表示任何类型的体系结构的处理单元,包括但不限于,CISC、RISC或VLIW类型的体系结构。处理核159也可以适用于采用一种或多种处理技术的产品,并通过足够详细地在机器可读介质上被表示,可以适合于促进所述产品。
处理核159包括执行单元142、一组寄存器组145,以及解码器144。处理核159也可以包括可能对本发明的各实施例的理解不需要的额外的电路(未示出)。执行单元142可以执行由处理核159接收到的指令。除执行典型的处理器指令之外,执行单元142可以执行用于对打包数据格式执行操作的打包指令集143中的指令。打包指令集143可包括用于执行本发明的各实施例的指令及其他打包指令。执行单元142可以通过内部总线耦合到寄存器组145。寄存器组145可以表示处理核159上的用于存储信息(包括数据)的储存区。如上文所提及的,应该理解,储存区可以存储可能不关键的打包数据。执行单元142可以耦合到解码器144。解码器144可以将由处理核159接收到的指令解码为控制信号和/或微代码入口点。响应于这些控制信号和/或微代码入口点,执行单元142执行合适的操作。在一个实施例中,解码器可以解释指令的操作码,该操作码将指出应该对在指令内指出的对应的数据执行什么操作。
处理核159可以与总线141耦合,以便与各种其他系统设备进行通信,其他系统设备可包括,但不仅限于,例如,同步动态随机存取存储器(SDRAM)控件146、静态随机存取存储器(SRAM)控件147、突发闪存接口148、个人计算机存储器卡国际联合会(PCMCIA)/紧凑闪存(CF)卡控件149、液晶显示器(LCD)控件150、直接存储器访问(DMA)控制器151,以及替代的总线主控接口152。在一个实施例中,数据处理系统140也可以包括用于通过I/O总线153与各种I/O设备进行通信的I/O桥接器154。这样的I/O设备可以包括,但不仅限于,例如,通用异步接收器/发射器(UART)设备155、通用串行总线(USB)设备156、蓝牙无线UART157以及I/O扩展接口158。
数据处理系统140的一个实施例提供移动、网络和/或无线通信以及可以执行包括文本字符串比较操作的SIMD操作的处理核159。处理核159可以被编程有各种音频、视频、成像以及通信算法,包括单独的变换,诸如沃尔什-哈达马(Walsh-Hadamard)变换、快速傅里叶变换(FFT)、离散余弦变换(DCT),以及它们的相应的逆变换;压缩/解压缩技术,诸如颜色空间变换、视频编码运动估计或视频解码运动补偿;以及调制/解调(MODEM)功能,诸如脉冲编码调制(PCM)。
图1C示出了执行SIMD文本字符串比较操作的数据处理系统的其他实施例。在一个实施例中,数据处理系统160可包括主处理器166、SIMD协处理器161、高速缓存存储器167,以及输入/输出系统168。输入/输出系统168可以可任选地耦合到无线接口169。SIMD协处理器161可以执行包括根据一个实施例的指令的操作。在一个实施例中,处理核170可以适用于采用一种或多种处理技术的产品,并通过足够详细地在机器可读介质上被表示,可以适合于促进包括处理核170的数据处理系统160的全部或一部分的产品。
在一个实施例中,SIMD协处理器161包括执行单元162以及一组寄存器组164。主处理器165的一个实施例包括识别包括用于由执行单元162执行的根据一个实施例的指令的指令集163的指令的解码器165。在其他实施例中,SIMD协处理器161还包括用于解码指令集163的指令的解码器165的至少一部分。处理核170也可以包括可能对本发明的各实施例的理解不需要的额外的电路(未示出)。
在操作中,主处理器166执行控制一般类型的数据处理操作(包括与高速缓存存储器167,以及输入/输出系统168的交互)的数据处理指令的流。SIMD协处理器指令可以嵌入在数据处理指令的流内。主处理器166的解码器165将这些SIMD协处理器指令识别为应当由附连的SIMD协处理器161执行的类型。相应地,主处理器166在协处理器总线166上发出这些SIMD协处理器指令(或表示SIMD协处理器指令的控制信号)。从协处理器总线166,这些指令可以由任何附接的SIMD协处理器接收。在此情况下,SIMD协处理器161可以接受并执行发往它的任何接收到的SIMD协处理器指令。
数据可以通过无线接口169被接收,以供由SIMD协处理器指令处理。对于一个示例,可以以数字信号的形式接收语音通信,数字信号可以由SIMD协处理器指令处理,以重新生成表示语音通信的数字音频样本。对于另一个示例,可以以数字比特流的形式接收经压缩的音频和/或视频,数字比特流可以由SIMD协处理器指令处理,以重新生成数字音频样本和/或动态视频帧。在处理核170的一个实施例中,主处理器166,以及SIMD协处理器161可以被集成到单个处理核170中,该单个处理核包括执行单元162、一组寄存器组164,以及识别包括根据一个实施例的指令的指令集163的指令的解码器165。
图2是根据本公开的各实施例的可包括执行指令的逻辑电路的处理器200的微架构的框图。在某些实施例中,根据一个实施例的指令可被实现为对具有字节、字、双字、四倍字等等的大小以及诸如单精度和双精度整数和浮点数据类型之类的数据类型的数据元素进行操作。在一个实施例中,有序前端(in-order front end)201可以实现可以获取要被执行的指令并准备好指令供稍后在处理器流水线中使用的处理器200的一部分。前端201可包括若干个单元。在一个实施例中,指令预取器226从存储器中获取指令,并将指令馈送到指令解码器228,该指令解码器228进而解码或解释指令。例如,在一个实施例中,解码器将接收到的指令解码为机器可以执行的一个或多个叫做“微指令”或“微操作”(也称为微操作或uop)的操作。在其他实施例中,解码器将指令解析为可以被微架构用来执行根据一个实施例的操作的操作码和对应的数据和控制字段。在一个实施例中,轨迹高速缓存(trace cache)230可以将已解码的微操作组装为程序有序序列或uop队列234中的轨迹以供执行。当轨迹高速缓存230遇到复杂指令时,微代码ROM 232提供完成操作所需的微操作。
某些指令可以被转换为单个微操作,而其他指令需要多个微操作才能完成完全操作。在一个实施例中,如果需要四个以上的微操作才能完成指令,则解码器228可以访问微代码ROM 232来执行指令。在一个实施例中,指令可以被解码为少量的微操作,用于在指令解码器228处进行处理。在另一个实施例中,指令可以存储在微代码ROM 232内,以防需要若干个微操作才能完成该操作。轨迹缓存230引用入口点可编程逻辑阵列(PLA)来确定用于从微代码ROM 232中读取微代码序列的正确的微指令指针,以完成根据一个实施例的一个或多个指令。在微代码ROM 232完成对用于指令的微操作的排序之后,机器的前端201可以恢复从轨迹高速缓存230获取微操作。
无序执行引擎203可以准备指令以供执行。无序执行逻辑具有若干个缓冲器,以平缓和重新排序指令的流,以在它们离开流水线并被调度供执行时优化性能。分配器逻辑分配每一个微操作进行执行需要的机器缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名为寄存器组中的条目。分配器还在指令调度器(存储器调度器、快速调度器202、慢/一般浮点调度器204以及简单浮点调度器206)的前面,为两个微操作队列中的一个中的每一个微操作分配条目,一个用于存储器操作而一个用于非存储器操作。uop调度器202、204、206基于它们的依赖的输入寄存器操作数源的就绪状态以及uop完成它们的操作所需的执行资源的可用性,来确定uop何时准备执行。一个实施例的快速调度器202可以在主时钟周期的每一半调度,而其他调度器只能每个主处理器时钟周期调度一次。调度器仲裁分派端口,来调度微操作以供执行。
寄存器组208、210可以被排列在调度器202、204、206和执行块211中的执行单元212、214、216、218、220、222、224之间。寄存器组208,210中的每一个分别执行整数和浮点运算。每一个寄存器组208、210还都包括旁路网络,该旁路网络可以将还没有被写入到寄存器组中的刚刚完成的结果旁路或转发到新的依存(dependent)微操作。整数寄存器组208和浮点寄存器组210可以与其他文件进行数据交换。在一个实施例中,整数寄存器组208可以被拆分成两个单独的寄存器组,一个寄存器组用于低阶32比特的数据,第二寄存器组用于高阶32比特的数据。浮点寄存器组210可包括128比特宽的条目,因为浮点指令通常具有宽度从64到128比特的操作数。
执行块211可以包含执行单元212、214、216、218、220、222、224。执行单元212、214、216、218、220、222、224可以执行指令。执行块211可包括寄存器组208、210,这些寄存器组208,210存储微指令需要执行的整数和浮点数据操作数值。在一个实施例中,处理器200可以包括若干个执行单元:地址生成单元(AGU)212、AGU 214、快速算术逻辑单元(ALU)216、快速ALU 218、慢速ALU 220、浮点ALU 222、浮点移动单元224。在另一个实施例中,浮点执行块222、224执行浮点、MMX、SIMD以及SSE或其他操作。在再一个实施例中,浮点ALU 222包括64比特x 64比特浮点除法器,用以执行除法、平方根,以及剩余微操作。在各实施例中,可以利用浮点硬件来处理涉及浮点值的指令。在一个实施例中,ALU运算可以被传递到高速ALU执行单元216、218。高速ALU 216、218可以执行快速的操作——带有一半时钟周期的有效延迟。在一个实施例中,大多数复杂的整数操作进入慢速ALU 220,因为慢速ALU 220可包括用于长延迟类型的操作的整数执行硬件,诸如乘法器、移位器、标记逻辑以及分支(branch)处理。存储器加载/存储操作可以由AGU 212、214执行。在一个实施例中,整数ALU 216、218、220可以对64比特数据操作数执行整数操作。在其他实施例中,ALU 216、218、220可被实现为支持各种数据比特大小,包括16、32、128、256等等。类似地,浮点单元222,224可被实现为支持具有各种宽度的比特的操作数的范围。在一个实施例中,浮点单元222、224可以结合SIMD和多媒体指令,对128比特宽的打包数据操作数进行操作。
在一个实施例中,微操作调度器202,204,206在父加载(parent load)完成执行之前,分派依存操作。由于微操作可以在处理器200中投机性地调度和执行,因此处理器200也可以包括处理存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中可能会有带有临时不正确的数据而离开调度器的正在执行的依存操作。重播(replay)机制跟踪并重新执行使用不正确的数据的指令。只有依存操作可能需要被重播,而独立的操作可以被允许完成。处理器的一个实施例的调度器和重播机制也可以被设计为捕捉用于文本字符串比较操作的指令序列。
术语“寄存器”可以表示可被用作标识操作数的指令的一部分的板上的处理器存储器位置。换言之,寄存器可以是可从处理器外部可使用的那些寄存器(从编程器的角度来看)。然而,在某些实施例中,寄存器可以不仅限于特定类型的电路。相反,寄存器可以存储和提供数据并执行此处所描述的功能。此处所描述的寄存器可以通过处理器内的电路使用任意数量的不同的技术来实现,诸如专用物理寄存器、使用寄存器重命名的动态地分配的物理寄存器、专用和动态地分配的物理寄存器的组合等等。在一个实施例中,整数寄存器存储32比特整型数据。一个实施例的寄存器组还包含用于打包数据的八个多媒体SIMD寄存器。对于下面的讨论,寄存器可被理解为是被设计为保存打包数据的数据寄存器,诸如利用加利福尼亚州圣克拉拉市的英特尔公司的MMX技术实现的微处理器中的64比特宽MMXTM寄存器(在某些情况下,也简称为“mm”寄存器)。以整数和浮点形式存在的这些MMX寄存器,可以与伴随SIMD和SSE指令的打包数据元件一起操作。类似地,涉及SSE2、SSE3、SSE4或以外的(一般地称为“SSEx”)技术的128比特宽的XMM寄存器也可以保存这样的打包数据操作数。在一个实施例中,在存储打包数据和整型数据时,寄存器不需要区分两种数据类型。在一个实施例中,整数和浮点可以包含在同一个寄存器组或者不同的寄存器组中。此外,在一个实施例中,浮点和整型数据可以存储在不同的寄存器中或相同寄存器中。
图3-5可以示出适用于包括处理器300的示例性系统,而图4可以示出可包括核302中的一个或多个的示例性片上系统(SoC)。膝上型计算机、台式机、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、DSP、图形设备、视频游戏设备、机顶盒、微控制器、手机、便推式媒体播放器、手持式设备以及各种其他电子设备的已知的其他系统设计和实现也可以是合适的。一般而言,如此处所公开的包括处理器和/或其他执行逻辑的各种系统或电子设备一般可以是合适的。
图4是根据本发明的各实施例的系统400的框图。系统400可包括可以耦合到图形存储器控制器中枢(GMCH)420的一个或多个处理器410,415。在图4中利用虚线表示额外的处理器415的可任选的本质。
每一处理器410,415都可以是处理器300的某种版本。然而,应该指出的是,集成图形逻辑和集成存储器控制单元可以不存在于处理器410,415中。图4示出了GMCH 420可以耦合到存储器440,该存储器440可以是,例如,动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可以与非易失性缓存相关联。
GMCH 420可以是芯片组,或芯片组的一部分。GMCH 420可以与处理器410,415进行通信,并控制处理器410,415和存储器440之间的交互。GMCH 420也可以充当处理器410,415及系统400的其他元件之间的加速总线接口。在一个实施例中,GMCH 420通过诸如前端总线(FSB)495之类的多点(multi-drop)总线与处理器410,415进行通信。
此外,GMCH 420还可以耦合到显示器445(诸如平板显示器)。在一个实施例中,GMCH 420可以包括集成图形加速器。GMCH 420可以进一步耦合到输入/输出(I/O)控制器中枢(ICH)450,该输入/输出控制器中枢450可以被用来将各种外围设备耦合到系统400。外部图形设备460可以是与另一个外围设备470一起耦合到ICH 450的分立图形设备。
在其他实施例中,在系统400中也可以存在额外的或不同的处理器。例如,额外的处理器410,415可包括可以与处理器410相同的额外的处理器,可以是与处理器410异类的或非对称的额外的处理器,加速器(诸如,例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列,或任何其他处理器。就包括架构、微架构、热的、功率消耗特征等等的一系列优点的度量而言,在物理资源410,415之间可能会有各种差异。这些差异可能将其本身有效地表现为处理器410,415之间的不对称性和异质性。对于至少一个实施例,各种处理器410,415可以驻留在相同管芯封装中。
图5示出了根据本发明的各实施例的第二系统500的框图。如图5所示,多处理器系统500可包括点对点互连系统,并可包括通过点对点互连550耦合的第一处理器570和第二处理器580。处理器570和580中的每一个都可以是作为处理器410,615中的一个或多个的处理器300的某种版本。
尽管图5可以示出两个处理器570,580,但是,可以理解,本发明的范围不仅限于此。在其他实施例中,一个或多个额外的处理器可以存在于给定处理器中。
处理器570和580被示为分别包括集成存储器控制器单元572和582。处理器570还可包括点对点(P-P)接口576和578——作为其总线控制器单元的一部分;类似地,第二处理器580可包括P-P接口586和588。处理器570、580可以使用点对点(P-P)接口电路578、588经由P-P接口550来交换信息。如图5所示,IMC 572和582将各处理器耦合至相应的存储器,即存储器532和存储器534,这些存储器在一个实施例中可以是本地附连至相应的处理器的主存储器的部分。
处理器570、580可各自经由使用点对点接口电路576、590、594、586的各个P-P接口552、554与芯片组598交换信息。在一个实施例中,芯片组590还可以通过高性能图形接口538与高性能图形电路539交换信息。
共享缓存(未示出)可以被包括在任一处理器之内,或被包括在两个处理器外部但仍经由P-P互连与这些处理器连接,从而如果将某处理器置于低功率模式时,可将任一处理器或两个处理器的本地缓存信息存储在该共享缓存中。
芯片组590可经由接口596耦合至第一总线516。在一个实施例中,第一总线516可以是外围组件互连(PCI)总线,或诸如PCI Express总线之类的总线,或另一第三代I/O互连总线,虽然本公开的范围不仅限于此。
如图5所示,各种I/O设备514可以连同总线桥516耦合到第一总线518,总线桥将第一总线516耦合至第二总线520。在一个实施例中,第二总线520可以是低引脚数(LPC)总线。在一个实施例中,各种设备可以耦合到第二总线520,包括例如键盘和/或鼠标522、通信设备527和存储单元528(诸如磁盘驱动器或可以包括指令/代码和数据530的其他大容量存储设备)。进一步地,音频I/O 524可以耦合到第二总线520。注意,其它架构也是可能的。例如,代替图5的点对点架构,系统可以实现多点总线或其他这样的架构。
图6示出了根据本发明的各实施例的系统600的框图。图5和6中的相同元素带有相同附图标记,从图6省略了图5的某些方面,以便不至于使图6的其他方面变得模糊。
图6示出了处理器670,680可以分别包括集成存储器和I/O控制逻辑(“CL”)672和682。对于至少一个实施例,CL 672,682可包括集成存储器控制器单元,诸如上文参考图3-5所描述的那个。另外,CL 672,682还可以包括I/O控制逻辑。图6示出了不仅可以将存储器632、634耦合到CL 672,682,而且,还可以将该I/O设备614耦合到控制逻辑672,682。传统I/O设备615可以被耦合至芯片组690。
图7示出了根据本发明的各实施例的SoC 700的框图。图3中的类似的元素带有相同的参考编号。另外,虚线框还可以代表更先进的SoC的任选特征。互连单元702可以耦合到:应用处理器710,该应用处理器可包括一组一个或多个核702A-N以及共享缓存单元706;系统代理单元711;总线控制器单元716;集成存储器控制器单元714;一组或一个或多个媒体处理器720,其可包括集成图形逻辑708、用于提供静止和/或视频相机功能的图像处理器724、用于提供硬件音频加速的音频处理器726,以及用于提供视频编码和/解码加速的视频处理器728;SRAM单元730;DMA单元732;以及用于耦合至一个或多个外部显示器的显示单元740。
图8是根据本发明的各实施例的用于使用处理器810的电子设备800的框图。电子设备800可包括,例如,笔记本、超极本、计算机、塔服务器、支架服务器、刀片式服务器、膝上型计算机、台式机、平板电脑、移动设备、电话、嵌入式计算机,或任何其他合适的电子设备。
电子设备800可包括可通信地耦合到任何合适的数量或类型的组件、外围设备、模块或设备的处理器810。这样的耦合可以通过任何合适的类型的总线或接口,诸如I2C总线、系统管理总线(SMBus)、低引脚数(LPC)总线、SPI、高清晰度音频(HDA)总线、串行先进技术附接(SATA)总线、USB总线(版本1,2,3),或通用异步接收器/发射器(UART)总线,来实现。
这样的组件可包括,例如,显示器824、触摸屏825、触摸板830、近场通信(NFC)单元845、传感器中枢840、热传感器846、快速芯片组(EC)835、可信平台模块(TPM)838、BIOS/固件/闪存822、DSP 860、驱动器820(诸如固态盘(SSD)或硬盘驱动器(HDD))、无线局域网(WLAN)单元850、蓝牙单元852、无线广域网(WWAN)单元856、全球定位系统(GPS)、相机854(诸如USB 3.0相机),或在例如LPDDR3标准中实现的低功率双数据速率(LPDDR)存储器单元815。这些组件可以每一个都以任何合适的方式实现。
此外,在各实施例中,其他组件可以通过上文所讨论的组件可通信地耦合到处理器810。例如,加速度计841、环境光传感器(ALS)842、罗盘843,以及陀螺仪844可以可通信地耦合到传感器中枢840。热传感器839、风扇837、键盘846,以及触摸板830可以通信地耦合到EC 835。扬声器863、耳机864,以及麦克风865可以通信地耦合到音频单元864,该音频单元864又可以通信地耦合到DSP 860。音频单元864可包括,例如,音频编解码器和类D放大器(class D amplifier)。SIM卡857可以通信地耦合到WWAN单元856。诸如WLAN单元850和蓝牙单元852,以及WWAN单元856之类的组件可以以下一代形状因子(NGFF)来实现。
本发明的各实施例涉及用于提供控制流安全性的二进制转换机制的指令和逻辑。图9示出了根据本发明的各实施例的用于实现提供控制流安全性的二进制转换机制的示例系统900。系统900可以对任何合适的代码,目标代码,操作,或用于导致处理器执行指定的动作的类似的指令执行控制流安全性。例如,系统900可以对代码902执行控制流安全性。为了对代码902执行控制流安全性,系统900可包括例如处理器904。在一个实施例中,处理器904可以对代码902执行控制流安全性,并执行代码902。在另一个实施例中,处理器904可以对代码902执行控制流安全性,并将结果发送到另一个处理实体以供执行。虽然此处作为示例实施例描述了系统900的各种元件,但是,系统900的任何合适的部分都可以执行此处所描述的功能。
代码902可以在处理器904内或可以由另一实体向处理器904发送。此外,在到达处理器904之前,还可以以任何合适的方式处理代码902。例如,代码902可以首先被编译、解释,链接,或由编译器906以其他合适的方式处理。然后,编译器906可以向处理器904发出目标代码或其他可执行形式的代码902。
例如,系统900可以对代码902执行任何合适的类型的控制流安全性。在一个实施例中,系统900可以相对于代码902中的转移执行安全性。这样的转移可包括,例如,JMP、CALL,或RET指令。在另一个实施例中,系统900可以通过评估转移指令的目的地,执行转移安全性。在再一个实施例中,系统900可以通过评估转移指令的源,执行转移安全性。在再一个实施例中,系统900可以通过在考虑到源的情况下评估转移指令的目的地,执行转移安全性。转移可包括间接转移。由于系统900可以保护这样的间接转移的路径,保护方案可以被称为间接转移的路径保护(PPIB)。
可以使用任何合适的机制来确定——给定转移指令的源,代码904中的什么目的地被允许,给定代码904中的给定源地址处的控制流指令。在一个实施例中,可以通过编译器906、链接器、运行时基准监视器,或代码的程序员,作出这样的关联。在另一个实施例中,这样的关联可以由,例如,二进制转换器或编译器在处理器904内作出。
处理器904可以部分地通过如图1-8所示的处理器、核,或其他元件的任何合适的组合来实现。在各实施例中,处理器可包括可通信地耦合到动态二进制转换器(DBT)914和硬件扩展以支持控制流安全性的前端910。此外,处理器还可包括通信地耦合到DBT 914以接收并执行指令(当它们被转换时)的执行流水线916。前端910可以获取要被执行的指令,并准备这样的指令,以供处理器914的其他元件使用。在一个实施例中,前端910可以解析接收到的指令,并启用硬件扩展,以支持控制流安全性。执行流水线916可以以任何合适的方式,诸如以无序方式,来执行指令。执行流水线916可以将执行的指令的结果写入到存储器、寄存器,或缓存。
处理器904可包括支持控制流安全性的任何合适的数量和类型的硬件扩展。在一个实施例中,处理器904可包括启用扩展920,该启用扩展920可以被设置为指出是否打开控制流安全性。启用扩展920可以由系统900的任何合适的部分来设置。例如,启用扩展920可以由前端910基于代码902中的控制流安全性将被使用的指示来设置。在另一个示例中,DBT 912可以设置启用扩展920。启用扩展920可以被称为“PPIB启用”。在另一个实施例中,处理器904可包括用于PPIB方案的任何合适的数量和类型的模型特定的寄存器(MSR)918。MSR 918可以被称为“PPIB-MSR”。MSR 918可包括要由DBT 912使用的表的边界,如下面所说明的。
DBT 912可以转换来自代码902的指令,以便在处理器904上更有效的,更可靠的,或以别的方式改变的执行。为执行这样的操作,DBT 912可以转换代码902,保持或修改转换,并将结果传递到执行流水线916,以供执行。在一个实施例中,DBT 912可以模仿代码902的执行。DBT 912可以在某些目标条件下导致生成断点、异常,或中断。在一个实施例中,当控制流被传递到未知或危险的位置时,DBT 912可以导致断点、异常,或中断被生成。DBT 912可以存储代码902的某些部分,如同它被执行或转换那样。在对以后的代码的分析之际,DBT 912可以判断代码902的新部分是否已经被转换和执行。如果作出这样的判断,则DBT 912可以改变代码以引用这些已经转换并执行的部分。有关代码902的某些部分是否已经被转换和执行的判断可以在分支操作时作出。如此,DBT 912可以通过优化执行,提高系统900的效率。
DBT 912可包括执行控制流安全性的任何合适的数量或类型的元件。在一个实施例中,DBT 912可包括用于代码变形软件(code morphingsoftware:CMS)914的模块。CMS 914可包括,例如,用于代码的转换的模块、用于评估预先转换的代码的模块,用于判断给定转移操作是否被允许的规则,以及缓存。在一个实施例中,CMS 914可包括用于解释从代码902接收到的指令的解释器引擎922。在另一个实施例中,CMS 914可包括用于将代码902转换为用于直接硬件执行的最佳或更高效形式的转换引擎924。在再一个实施例中,CMS 914可包括确定转移规则的一个或多个PPIB控制结构(PPIBCS)926。在另一个实施例中,CMS 914可包括用于用作包括预先作出的间接分支目标的间接分支目标缓存928。
PPIBCS 922可以被包括在系统900的任何合适的存储器、缓存,或其他部分内。PPIB MSR 918可以被例如CMS 914用来确定PPIBCS 926的范围和界限。PPIBCS 926可以被系统900的任何合适的部分初始化、存储、缓存,或刷新。例如,CMS 914或前端910可以管理PPIBCS 926以及其内容。对于代码902中的给定指令,PPIBCS 926的内容可以定义向什么目的地允许作出间接分支。在接收到较新的指令,PPIBCS 926中的空间不够、或对执行的其他更改时,可以基于较新的间接指令以及它们的对应的被准许的目的地,刷新PPIBCS 926。在这样的情况下,可以从存储器或缓存中清空PPIBCS 926的现有的副本,构建新版本,并增大版本号。
在一个实施例中,在接收到指令时,CMS 912可以判断给定指令是否是诸如JMP、CALL或RET之类的分支指令。如果指令不是分支指令,则CMS 912可以将指令传递到解释器引擎922或转换引擎924,用于进一步评估,并允许指令行进到执行引擎916,以供执行。如果指令是分支指令,则CMS 912可以继续针对控制流安全性问题评估指令。
在另一个实施例中,CMS 912可以通过访问“PPIB-启用”的扩展920,来判断是否启用控制流安全性。如果控制流未被启用,则CMS 912可以将指令传递到解释器引擎922或转换引擎924,用于进一步评估,并允许指令行进到执行引擎916,以供执行。如果控制流被启用,则CMS 912可以继续针对控制流安全性问题评估指令。
在再一个实施例中,CMS 912可以基于分支指令的源,判断分支指令的目的地是否是可接受的目的地。CMS 912可以通过例如访问PPIBCS 926,来执行这样的检查。访问可以通过例如解释器引擎922或转换引擎924来作出。基于通过访问PPIBCS 926和由PPIBCS 926引用的任何其他信息的评估,CMS 912可以允许指令被执行流水线916执行。如果根据PPIBCS926,指令不被允许,则CMS 912可以阻止指令或发出处理指令的通知。CMS 912可以,例如,发出异常、中断,或其他合适的通知。
图10是根据本发明的各实施例的考虑到恶意攻击执行控制流安全性的系统900的示例操作的例图。在图10中,并在随后的图形中,在“NxNNN”符号中,可以引用存储器地址,但是,这是为方便而使用的。可以使用任何合适的体系结构以及引用存储器地址的方式。
存储器段1004可包括多个指令,这些指令在各种位置处具有以简略的十六进制表示法表示的参数。执行指针1002可以指示0x1230处的指令将接下来被执行。
0x1230处的指令可以陈述“JMP*EAX”,其中,程序将跳转到是EAX寄存器的值的地址。在正常的情况下,执行地址0x1230处的EAX寄存器可包括诸如0x1300之类的可接受目的地,该可接受目的地可以对应于执行诸如Function1(函数1)之类的给定函数的代码的开始。然而,恶意攻击可能改变EAX寄存器的值,以便执行的跳转可能会导致其他非希望的地址被执行。例如,EAX寄存器可能被损害,并被加载0x1000,0x1001,或0x1508的值。
在地址0x1000处,指令“POP EBX”可能会导致值被从堆栈中弹出,并被加载到EBX寄存器中。位于堆栈的顶部的值可能是非希望的代码段的地址,误用会损害程序的安全性。位于堆栈的顶部的值可能通过另一个指令写入——未示出。值可包括,例如,“0x1508”。执行可以行进至0x1001。
在地址0x1001处,指令“JMP*EBX”可以导致向EBX寄存器中指定的地址的JMP。如果如上文所描述的,EBX寄存器被预先加载了“0x1508”,那么,程序可以跳转到地址0x1508,以进行执行。
在地址0x1508处,驻留在其中的代码的执行可以开始。在一个示例中,代码可包括非希望的代码,诸如函数2。
因此,如果EAX寄存器的值可以被更改为0x1000,或者甚至0x1508,则程序的控制流可能被恶意软件重新定向,因为它将执行Function2。在一个实施例中,给定地址0x1230处的转移指令,CMS 914可以确定什么目的地已知对于给定源地址是可以接受的。在又一实施例中,CMS 914可以基于分支指令的使用,确定什么目的地已知是可接受的。在另一个实施例中,CMS 914可以判断诸如“*EAX”之类的实际值是否被包括在这样的已知目的地内。如果值被包括在已知目的地中,那么,指令可以被允许执行。如果值不包括在已知目的地中,那么,指令可以生成用于拒绝分支的异常、中断、错误,或其他通知机制或启动额外的调查。在图10的示例中,在0x1000,0x1001,或0x1508的地址0x1230处的“*EAX”的JMP参数可能会导致未知的目的地,因此,被阻止。0x1300的0x1230地址处的“*EAx”的JMP参数可能会导致已知的可接受的目的地,因此,被允许。
在一个实施例中,CMS 914可以访问PPIBCS 926,以判断对于给定源位置处的分支指令,分支指令是否将导致可接受的预期的位置或非预期的位置。
图11是根据本发明的各实施例的PPIBCS 1126的示例实施例的例图。此外,图11还可以示出存储器段1110。PPIBCS 1126和存储器段1110可以被实现为存储器、缓存、线性数据结构内的元件,或任何其他合适的表示。在一个实施例中,PPIBCS 1126和存储器段1110可以被包括在同一存储器、缓存、数据结构、或其他位置内。在另一个实施例中,PPIBCS 1126和存储器段1110可以被包括在不同的存储器、缓存、数据结构,或其他位置内。在图11的示例中,PPIBCS 1126和存储器段1110可以被在相同存储器、缓存内实现,或以别的方式通过共同的存储器寻址方案来寻址。PPIBCS 1126可以完全或部分地实现PPIBCS 926。此外,存储器段1110还可以部分地实现PPIBCS 926,或可以实现图9的未示出的另一个方面。虽然在图10和图11两者中可以使用相同,特定的存储器地址作为示例,但是,可以独立地彼此不参考地考虑这些示例。
PPIBCS 1126被示为通过连续的存储器位置来实现的表。在各实施例中,PPIBCS 1126可以通过相邻的存储器、散列化的存储器,或用于将其内容排列为可通过CMS 914访问的任何其他合适的方式来实现。
PPIBCS 1126可包括源地址的任何合适的指示,以及与这样的源地址相关联的安全、已知、或预期的目的地的标识。PPIBCS 1126可包括源地址的任何合适的指示,以及与这样的源地址相关联的未知、不安全的,或非预期的目的地的标识。在一个实施例中,对于对应于源地址的每一个条目,PPIBCS 1126可包括源地址的标识符1102。标识符1102可以是,例如,三十二比特宽。在又一实施例中,如果未给出源地址,则条目可以是控制流指令的任何源地址的默认条目,其中,在PPIBCS 1126内没有发现源地址。
在另一个实施例中,对于对应于源地址的每一个条目,PPIBCS 1126可包括目的地类型的标识符1104。标识符1104可以是例如一比特宽。在又一实施例中,目的地类型可以指示列表,其中,该列表将包括源地址处的控制流指令的可接受的目的地。如果没有指示列表,那么,可以对源地址处的控制流指令施加限制。
在再一个实施例中,对于对应于源地址的每一个条目,PPIBCS 1126可包括对应于所标识并且可接受的目的地的数量的列表的大小的标识符1106。标识符1106可以是,例如,十五比特宽。如果指示大小为零的列表,那么,对于源地址处的控制流指令,没有目的地将是可以接受的。
在另一个实施例中,对于对应于源地址的每一个条目,PPIBCS 1126可包括可接受的目的地的列表的位置的标识符1108。可以使用用于标识位置的任何合适的机制。在又一实施例中,标识符可以指定也通过标识符1104,1106来标识的列表的开始的从PPIBCS 1126的开始的偏移。偏移可包括有符号的偏移,其中列表从比PPIBCS的开始较早的存储器位置开始。标识符1106可以是,例如,十六比特宽。如果没有指出位置,那么,没有目的地将对源地址处的控制流指令是可以接受的。
因此,对于每一个条目,可以通过列表的位置的标识符、列表的大小,以及列表的存在的组合,来指定可接受的目的地的列表。在图11的示例中,PPIBCS 1126可以从位置0x1000开始,并每隔六十四比特或八个字节,包括一个新条目。在0x1000,可以包括默认条目。在一个实施例中,PPIBCS1126的第一元素可以被视为默认条目。可以忽略默认条目的源地址值。在一个实施例中,使用默认条目作为PPIBCS 1126的第一条目可以防止需要条目的额外比特指定存在源地址。默认条目可以指示,如果控制流指令的源未知,则它可以被允许转移到如在相同存储器内的0xF000的偏移处列出的四个不同的目的地。这些可以被称为位于地址0x0000处的范围“A”(作为来自地址0x1000处的PPIBCS 1126结构的0xF000的偏移来计算)。0x1008处的下一个PPIBCS 1126条目可以指定,关于其可接受的间接转移目的地,源地址0xF345将不受限制。在一个实施例中,这样的允许可以通过在标识符1104中被指定为“无”的目的地类型来指定。此外,还可以在标识符1106,1108中标识哑值(dummy value)或无值。在0x1010处的下一个PPIBCS 1126条目可以指定源地址0xF360具有从0xF010的偏移开始的两个可接受的目的地的列表,该0xF010的偏移,当被添加到0x1000的PPIBCS 1126的基本地址时,导致绝对地址0x0010。这些可以被称为范围“B”。0x1018处的下一个条目可以指定源地址0xF394没有可接受的目的地。在一个实施例中,对于若干个目的地,可以通过标识符1106中的零值来指定没有这样的可接受的目的地的范围。可以忽略这样的实施例中的标识符1108。在另一个实施例中,对于偏移,可以通过标识符1108中的零值来指定没有这样的可接受的目的地的范围。0x1020处的最后一个条目可以指定源地址0xF3AB具有从0xF010的偏移开始的四个可接受的目的地的列表。这些可以被称为范围“C”。
在一个实施例中,可以以相邻的顺序指定可接受的目的地的列表。在另一个实施例中,可以在散列表中指定可接受的目的地的列表。在各实施例中,可接受的目的地的列表可以彼此重叠。例如,范围“B”中的目的地也可以位于范围“C”内,指出从0x1010和0x1020处的两个PPIBCS 1126条目中指定的源地址,对于控制流逻辑,重叠目的地可以是可以接受的。
存储器段1110示出了在PPIBCS 1126中所描述的某些目的地。在一个实施例中,可以使用相邻的存储器,示出存储器段1110,但是,可以使用组织目的地的任何合适的方式。存储器段1110可包括标识符列表,每一标识符指定一个地址。地址可以是用于对来源于PPIBCS 1126中的各种源地址的操作进行分支的可接受的目的地。在一个实施例中,地址可以是三十二比特宽。
在图11的示例中,在对应于默认条目和范围“A”的PPIBCS 1126中所示出的负的偏移的地址0x0000处,可以指定目的地地址0xF400。因此,可以执行从任何地址到地址0xF400的分支操作。接下来三个元素也可以被包括在范围“A”内,因此,从任何地址分支。
此外,在对应于源地址0xF360和0xF3AB和范围“B”和“C”的PPIBCS1126中所示出的负的偏移的地址0x0010处,可以指定目的地地址0xF3AB。因此,可以执行从这些源地址到此目的地地址的分支操作。对于范围“B”和源地址0xF360,地址0x1014处的下一个条目可以类似地指示可接受的目的地。对于范围“C”和源地址0xF3AB,下三个条目可以类似地指示可接受的目的地。
可以以任何合适的方式指定PPIBCS 1126的位置。在一个实施例中,可以通过PPIB MSR 1118,指定PPIBCS 1126,供CMS 914使用。PPIB MSR1118可包括指示PPIBCS 1126的起始地址的PPIB基1120,以及指示PPIBCS 1126的结束地址的PPIB极限(limit)1122。可以通过填充PPIBCS1126的相同实体来设置PPIB MSR 1118。例如,PPIB基1120可以指定地址0x1000,PPIB极限1122可以指定地址0x1028。
在各实施例中,相同预期的或已知的目的地可以出现在多个列表中。因此,不同的源地址的可接受的目的地的列表不一定不同。
图12A、12B、12C、12D,以及12E示出了根据本发明的各实施例的系统900的示例操作。在图12A中,在(1)中,在一个实施例中,CMS 914可以从PPIB基1120和PPIB极限1122加载PPIBCS 1126的位置。存储器中的这样的位置可以从0x1000开始,并在0x1028结束。根据在处理器904处接收到的指令,如图11所示,填充PPIBCS 1126。
在(2),在一个实施例中,CMS可以截取企图的控制流分支。源自地址0xB232的控制流转移可包括指令“JMP*%EAX”,其中,EAX保持值0xF400。
在(3),在一个实施例中,CMS 914可以读取PPIBCS 1136,以判断它是否具有对应于源地址的任何条目。例如,CMS 914可以读取PPIBCS1126中对应于源地址0xB232的任何条目。PPIBCS可以在0x1000和0x1028之间。如图11所示,没有这样的源地址的条目。因此,在另一个实施例中,CMS 914可以使用在PPIBCS 1126中指定的可接受的目的地的默认列表。这样的默认列表可以对应于从地址0x0000开始并在0x0010结束的四个值。
在(4),在一个实施例中,可以读取可接受的目的地的列表,以判断指令的目标地址是否被包括在其中。例如,可以检查默认范围“A”的目的地地址0xF400。
在(5),在一个实施例中,如果在列表中找到目的地,则可以允许指令。如果在列表中未找到目的地,则可以拒绝指令,或生成中断或异常,用于额外的处理。例如,可能已经在如图11所示的列表内容中找到目的地0xF400,因此,可以允许指令。
在图12B中,可以假设已经加载PPIBCS 1126。在(1),CMS 914可以截取位于源存储器地址0xF360处的包括“%EAX”的企图的控制流分支(其中,EAX保持值0xF3AB)。在(2),CMS 914可以读取PPIBCS 1126,以判断它是否具有对应于源存储器地址0xF360的任何条目。如图11所示,在PPIBCS 1126中存在这样的源地址的一个条目,指向存储在0x0010处的范围“B”。在(3),可以读取范围“B”的可接受的目的地的列表,以判断指令的目标地址0xF3AB是否被包括在其中。在(4),可以允许指令,因为在如图11所示的范围“B”内的地址的列表中找到目标地址。
在图12C中,可以假设已经加载PPIBCS 1126。在(1),CMS 914可以截取位于源存储器地址0xF345处的包括“%EAX”的企图的控制流分支(其中,EAX保持值0xF000)。在(2),CMS 914可以读取PPIBCS 1126,以判断它是否具有对应于源存储器地址0xF345的任何条目。如图11所示,在PPIBCS 1126中存在这样的源存储器地址的一个条目,其允许任何目的地地址。因此,在(3),可以允许指令。
在图12D中,可以假设已经加载PPIBCS 1126。在(1),CMS 914可以截取位于源存储器地址0xF3AB处的包括“%EAX”的企图的控制流分支(其中,EAX保持值0xF3CC)。在(2),CMS 914可以读取PPIBCS 1126,以判断它是否具有对应于源存储器地址0xF3AB的任何条目。如图11所示,存在这样的源地址的四个条目,其中条目从0x0010开始,并对应于范围“C”。在(3),可以读取范围“C”的可接受的目的地的列表,以判断指令的目标地址0xF3CC是否被包括在其中。在(4),可以拒绝指令,因为在如图11所示的范围“C”内的地址的列表中未找到目标地址。
在图12E中,可以假设已经加载PPIBCS 1126。在(1),CMS 914可以截取位于源存储器地址0xF394处的包括“%EAX”的企图的控制流分支(其中,EAX保持值0xF4AA)。在(2),CMS 914可以读取PPIBCS 1126,以判断它是否具有对应于源存储器地址0xF394的任何条目。如图11所示,在PPIBCS 1126中存在这样的源存储器地址的一个条目,其不允许用于进行分支的任何目的地。因此,在(3),可以拒绝指令。
返回到图9,PPIBCS 926可以被组织为通过源地址索引的散列表。由PPIBCS 926引用的目的地列表可以在体系结构寄存器或缓存中组织为线性列表或散列表。在各实施例中,短的目的地列表可以被维护为线性列表,而比较长的列表可以被维护为散列表。如果比较长的目的地的列表需要额外的空间,则可以创建辅助散列表。可以在选择用于维护数据的解决方案时在线性和散列查询之间作出折衷。在一个实施例中,图11的PPIBCS 1110可以示出用于将策略传达到处理器的逻辑结构。在另一个实施例中,图9的PPIBCS 926可以示出策略的内部表示。在这样的实施例中,可能需要例如以实现PPIBCS 1126的方式进一步实现PPIBCS 926。
解释器引擎922和转换引擎924两者都可能能够执行控制流安全性。指令,当首次执行时,可以由解释器引擎922一次一个指令地解释。当解释指令时,解释器引擎922可以向间接跳转的处理程序添加查找PPIBCS926中的带有指令的源地址的条目的逻辑,并定位目的地地址,如果没有发现目的地,则抛出异常。为ValidatePPIB(证实PPIB)逻辑提供了下列逻辑或伪代码,以实施PPIB检查。如果函数返回假,那么,可以引发控制流异常。
PPIB-ENABLED可包括基于指示是否启用PPIB检查的指示器920设置的CMS 914的内部配置变量。PIBCSInternal(PIBCS内部)可以是在PPIBCS 926被安装时为其创建的内部数据结构。函数SourceHashtableLookup(源可散列化查找)可以从原始地址空间查询源地址,并且如果在PPIBCS 926或DestinationList(目的地列表)结构中未找到源,则返回NotFound(未找到)。DestinationList可以是表示对于源允许的目的地的内部数据结构,如图11所示的那些。DestinationList可以被包括在PPIBCSInternal内。DestinationList可包括叫做Linear(线性)的字段,该字段可以是TRUE,以指示目的地被安排为线性排序列表,或FALSE,以指示目的地被安排为散列表。它可包括函数LinearLookup(线性查找),该函数可以查询目的地地址,如果在目的地列表中找到该目的地,则返回TRUE,或如果在目的地列表中未找到该目的地,则返回FALSE(假)。如果Linear是FALSE,那么,LinearLookup可能具有未定义的行为。DestinationList也可以容许函数HashLookup(散列查找),该函数可以查询目的地地址,如果找到该目的地,则返回TRUE,否则返回FALSE。如果Linear是TRUE,那么,HashLookup可能具有未定义的行为。DefaultDestinationList(默认目的地列表)可以是PPIBCSInternal数据结构(其为DestinationList)的字段。它可以保持PPIBCS 926的默认条目的目的地列表,否则,可以像如上所述的其他DestinationList条目那样表现。
解释引擎922可以只用于某些指令。一旦代码902的区域被标识为合理地频繁,CMS 914就可以创建直接在基础微架构上运行的转换,并模仿代码区域的行为。CMS 914可以通过转换引擎924的使用,关于控制流安全性,考虑此行为。
对于间接跳转,转换引擎924可以设置经过转换的代码块,以查找间接分支目标缓存(IBTC)928中的这样的特定间接分支。IBTC 928可以存储目标地址到相应的经过转换的代码指令地址的已知映射。在对IBTC 928的第一访问过程中,查询可能会失败。CMS 914可以发现目标地址,并利用原始和经过转换的代码地址两者填充IBTC 928。随后,查询动作可以验证间接分支的“当前”目标匹配IBTC 928的缓存的地址中的一个,随后,跳转到相应的地址。如果查询失败,则CMS 914可以查询PPIBCS 926,并使用ValidatePPIB逻辑,执行检查。因此,经过转换的代码本身可能没有用于PPIB支持的额外的指令或逻辑,并且IBTC 928击中路径可能不会由于控制流安全性而添加额外的开销。IBTC 928中的错失可能要求ValidatePPIB逻辑或类似的。
在一个实施例中,在初始化过程中,可以向IBTC 928添加给定间接分支的初始目标集。例如,如果解释器引擎922发现给定间接分支的所有调用的单一目标,则可以预先填充IBTC 928。
在另一个实施例中,CMS 914可以在经过转换的代码中内联(inline)IBTC 928或其他缓存的比较和查找。CMS 914可以通过与相应的经过转换的地址一起存储用于进行比较的间接分支的最近目标来内联比较。在动态执行过程中,如果当时存在的目标与存储的目标相同,则执行可以跳转到经过转换的目标。若否,则可以使用间接分支错失处理程序来通过就地更新经过转换的代码,而不会改变总的代码占用空间,来修补转换。例如,可以修补代码,以内联最近看见的用于进行比较的目标和相应的经过转换的地址。可以调用ValidatePPIB的逻辑,以验证其中的任何跳转。
图13是根据本发明的各实施例的用于控制流安全性的方法1300的示例实施例的流程图。方法1300可以示出由,例如,处理器904和CMS 914执行的操作。方法1300可以从任何合适的点开始,并可以以任何合适的顺序执行。在一个实施例中,方法1300可以从1305开始。
在1305,可以接收要被执行的指令。指令可以被编译、链接、解释,或处于任何其他合适的格式,以进行分析。在1310,连同由这样的控制流指令所产生的可能转移的地址,可以标识指令内的控制流指令。可以记录控制流指令的源地址和控制流指令的被允许的目的地的地址的关联。在1315,可以创建诸如PPIBCS之类的控制结构,实现在1310确定的关联。控制结构可以以任何合适的方式实现,包括列表,数据结构,表,连续的存储器、散列化的存储器,或其他合适的格式。在1320,源和被允许的目的地之间的关系的内容可以被加载到控制结构中。如有必要,可以计算散列。可以设置用于控制流的MSR,诸如启用控制流安全性或定义控制结构的位置的寄存器。可以缓存控制结构。根据需要,元件1305,1310,1315,以及1320可以与方法1300的其余部分并行地重复。
在1325,可以判断是否已经作出更新的控制结构。如果没有,则方法1300可以行进至1335。如果有更新的控制结构可用,那么,在1330,可以清空现有的控制结构,加载新控制结构,加载并散列化条目,以及设置MSR。可以增大控制结构的版本。
在1335,可以标识要被解释、执行,或模仿的指令。在1340,可以判断指令是否包括控制流逻辑,诸如间接分支。如果是,则方法1300可以行进至1345。若否,则方法1300可以行进至1370。
在1345,可以判断是否对于处理器启用了控制流安全检查。这样的判断可以例如通过检查MSR以看看它是否被设置为启用控制流检查,来作出。如果它已经被启用,则方法1300可以行进至1350。否则,方法1300可以行进至1370。
在1350,可以判断指令的源地址是否位于控制结构中。可以指定默认条目。如果源地址不在控制结构中,并进一步,如果在控制结构中没有默认条目,那么,方法1300可以行进至1375。如果有位于控制结构中的指令的源地址,或如果有默认条目,则方法1300可以转到1355。
在1355,可以查找源地址的目的地范围。这样的查找可以在控制结构中或在由控制结构所提供的重新定向中作出。可以通过目的地的类型来指定开放的目的地范围,其中任何目的地都被允许。例如,如果类型被作为“列表”给出,则可能会有源地址的可用的目的地的有限的列表。如果类型被作为“无(none)”给出,那么,任何目的地都可以被允许。目的地范围可以通过条目的数量和此类条目的开始的偏移来指定。如果可用的条目的数量被设置为零,则对于源地址,没有目的地可以被允许。
在1360,基于这样的查询,可以判断转移源地址是否具有任何允许的目的地。若否,诸如其中条目的数量被设置为零的示例,则方法1300可以行进至1375。如果源地址具有目的地,那么,方法1300可以行进至1365。
在1365,可以判断是否在在1355确定的目的地范围内发现来自1335的分支指令的目的地。判断可以例如通过查找控制结构中的条目或查找从控制结构重新定向的条目来作出。如果指令的目的地被包括在目的地范围内,那么,指令企图将执行定向到已知的预期的地址。此外,如果目的地范围是开放的,没有限制,那么,指令可以被允许分支到该地址。相应地,方法1300可以行进至1370。如果指令的目的地不被包括在目的地范围内,那么,指令企图将执行定向到非预期的的地址。相应地,方法1300可以行进至1375。
在1375,指令可以导致错误、异常、中断或要被生成的指令潜在地执行有害代码的其他消息。可以拒绝进一步执行或阻止指令。可以采取任何合适的校正操作。
在1380,可以判断是否重复。如果是,则方法1300可以行进至1325。否则,方法1300可以结束。
方法1300可以通过任何合适的准则来启动。此外,虽然方法1300描述了特定元件的操作,但是,方法1300可以由元件的任何合适的组合或任何合适的类型的元件来执行。例如,方法1300可以通过图1-12中所示出的元件或可操作以实现方法1300的任何其他系统来实现。如此,方法1300的首选的初始化点和构成方法1300的元件的顺序可以取决于所选定的实现。在某些实施例中,可以可任选地省略,重新组织,重复,或组合某些元件。此外,方法1300还可以完全或部分地彼此并行地执行。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的各实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令,以执行本文描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统可包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表征性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。被称为“IP核”的这样的表示可以存储在有形的机器可读介质中,并提供给各种客户或生产设施,以加载到实际制造逻辑或处理器的制造机器中。
这样的机器可读的存储介质可以包括,但不限于,通过机器或设备制造或形成的制品的非瞬时的,有形的布局,包括诸如硬盘之类的存储介质,任何其他类型的盘,包括软盘、光盘、光盘只读存储器(CD-ROM)、光盘可重写(CD-RW),以及磁光盘,诸如只读存储器(ROM)之类的半导体器件,诸如动态随机存取存储器(DRAM),静态随机存取存储器(SRAM)之类的随机存取存储器(RAM),可擦除编程只读存储器(EPROM),闪存、电可擦除编程只读存储器(EEPROM),磁卡或光卡,或适于存储电子指令的任何其他类型的介质。
相应地,本发明的各实施例还包括包含指令或包含定义此处所描述的结构、电路、设备、处理器和/或系统功能的诸如硬件描述语言(HDL)之类的设计数据的非瞬时的,有形的机器可读介质。这样的实施例还可以被称为程序产品。
在某些情况下,可以使用指令转换器来将指令从源指令集转换为目标指令集。例如,指令转换器可以转换(例如,使用静态二进制转换、包括动态编译的动态二进制转换)、变形、模仿,或以别的方式将指令转换为要由核处理的一个或多个其他指令。指令转换器可以以软件、硬件、固件,或其组合来实现。指令转换器可以是on(开)处理器、off(关)处理器,或部分on和部分off处理器。
如此,公开了根据至少一个实施例的用于执行一个或多个指令的技术。尽管在各个附图中描述和示出了某些示例性实施例,但是,可以理解,这样的实施例只是说明性的,而不对本发明形成限制,这样的实施例不仅限于所示出的和所描述的特定结构和布局,因为所属领域的技术人员在研究本发明时可以想到各种其他修改方案。在诸如此技术之类的技术的领域,在增长快速并且不能轻松地预见进一步的进步的情况下,在不偏离本发明的原理或附带权利要求的范围的情况下,所公开的各实施例可以轻松地在布局和细节方面可修改,如通过实现技术进步所促进的。

Claims (25)

1.一种处理器,包括:
前端,其包括用于接收指令并向二进制转换器分派所述指令的第一逻辑;
执行流水线;以及
二进制转换器,其包括用于执行下列各项的第二逻辑:
判断所述指令是否包括控制流指令;
标识所述指令的源地址;
标识所述指令的目标地址,所述目标地址包括在执行所述指令时执行将间接地分支至的地址;
基于所述源地址,判断所述目标地址是否是已知目的地;以及
基于以所述源地址为基础的所述目标地址是否是已知目的地的所述判断,来判断是否向所述执行流水线路由所述指令。
2.如权利要求1所述的处理器,其特征在于,所述二进制转换器还包括用于执行下列各项的第三逻辑:
访问带有所述源地址的一组已知目的地的引用的控制结构;以及
判断所述目标地址是否以所述一组已知目的地来标识。
3.如权利要求1所述的处理器,其特征在于,所述二进制转换器还包括用于执行下列各项的第三逻辑:
访问没有所述源地址的已知目的地的控制结构;以及
基于没有所述源地址的已知目的地的判断,来判断不向所述执行流水线路由所述指令。
4.如权利要求1所述的处理器,其特征在于,所述二进制转换器还包括用于执行下列各项的第三逻辑:
访问带有一组给定源地址中的每一个的一组已知目的地的引用的控制结构;
基于在所述源地址的所述控制结构中没有条目的判断,访问默认的一组已知目的地;以及
基于所述目标地址是否被包括在所述默认的一组已知目的地中,判断是否向所述执行流水线路由所述指令。
5.如权利要求1所述的处理器,其特征在于,所述二进制转换器还包括用于基于所述其他指令不包括控制流指令的判断来向所述执行流水线路由另一个指令的第三逻辑。
6.如权利要求1所述的处理器,其特征在于,所述二进制转换还包括用于执行下列各项的第三逻辑:
访问带有一组给定源地址中的每一个的一组已知目的地的引用的控制结构;
判断所述目标地址不在所述源地址的所述一组已知目的地内;
基于所述目标地址不在所述源地址的所述一组已知目的地内的所述判断,来生成异常。
7.如权利要求1所述的处理器,其特征在于,所述二进制转换还包括用于执行下列各项的第三逻辑:
访问带有多个给定源地址的条目的控制结构,其中每一条目都定义:
对于给定源地址,任何已知目的地是否可用;
已知目的地的列表的大小;以及
到所述已知目的地的列表的存储器段的偏移;
基于所述偏移访问所述存储器段;以及
判断所述目标地址是否在所述已知目的地的列表内。
8.一种系统,包括:
前端,其包括用于接收指令并向二进制转换器分派所述指令的第一逻辑;
执行流水线;以及
二进制转换器,其包括用于执行下列各项的第二逻辑:
判断所述指令是否包括控制流指令;
标识所述指令的源地址;
标识所述指令的目标地址,所述目标地址包括在执行所述指令时执行将间接地分支至的地址;
基于所述源地址判断所述目标地址是否是已知目的地;以及
基于以所述源地址为基础的所述目标地址是否是已知目的地的所述判断,来判断是否向所述执行流水线路由所述指令。
9.如权利要求8所述的系统,其特征在于,所述二进制转换器还包括用于执行下列各项的第三逻辑:
访问带有所述源地址的一组已知目的地的引用的控制结构;以及
判断所述目标地址是否以所述一组已知目的地来标识。
10.如权利要求8所述的系统,其特征在于,所述二进制转换器还包括用于执行下列各项的第三逻辑:
访问没有所述源地址的已知目的地的控制结构;以及
基于没有所述源地址的已知目的地的判断,判断不向所述执行流水线路由所述指令。
11.如权利要求8所述的系统,其特征在于,所述二进制转换器还包括用于执行下列各项的第三逻辑:
访问带有一组给定源地址中的每一个的一组已知目的地的引用的控制结构;
基于在所述源地址的所述控制结构中没有条目的判断,访问默认的一组已知目的地;以及
基于所述目标地址是否被包括在所述默认的一组已知目的地中,判断是否向所述执行流水线路由所述指令。
12.如权利要求8所述的系统,其特征在于,所述二进制转换器还包括用于基于所述其他指令不包括控制流指令的判断来向所述执行流水线路由另一个指令的第三逻辑。
13.如权利要求8所述的系统,其特征在于,所述二进制转换还包括用于执行下列各项的第三逻辑:
访问带有一组给定源地址中的每一个的一组已知目的地的引用的控制结构;
判断所述目标地址不在所述源地址的所述一组已知目的地内;
基于所述目标地址不在所述源地址的所述一组已知目的地内的所述判断,来生成异常。
14.如权利要求8所述的系统,其特征在于,所述二进制转换还包括用于执行下列各项的第三逻辑:
访问带有多个给定源地址的条目的控制结构,其中每一条目都定义:
对于给定源地址,任何已知目的地是否可用;
已知目的地的列表的大小;以及
到所述已知目的地的列表的存储器段的偏移;
基于所述偏移,访问所述存储器段;以及
判断所述目标地址是否在所述已知目的地的列表内。
15.一种用于安全性的方法,包括:
接收指令;
判断所述指令是否包括控制流指令;
标识所述指令的源地址;
标识所述指令的目标地址,所述目标地址包括在执行所述指令时执行将间接地分支至的地址;
基于所述源地址,判断所述目标地址是否是已知目的地;以及
基于以所述源地址为基础的所述目标地址是否是已知目的地的所述判断,判断是否向执行流水线路由所述指令。
16.如权利要求15所述的方法,其特征在于,进一步包括:
访问带有所述源地址的一组已知目的地的引用的控制结构;以及
判断所述目标地址是否以所述一组已知目的地来标识。
17.如权利要求15所述的方法,其特征在于,进一步包括:
访问没有所述源地址的已知目的地的控制结构;以及
基于没有所述源地址的已知目的地的判断,判断不向所述执行流水线路由所述指令。
18.如权利要求15所述的方法,其特征在于,进一步包括:
访问带有一组给定源地址中的每一个的一组已知目的地的引用的控制结构;
基于在所述源地址的所述控制结构中没有条目的判断,访问默认的一组已知目的地;以及
基于所述目标地址是否被包括在所述默认的一组已知目的地中,判断是否向所述执行流水线路由所述指令。
19.如权利要求15所述的方法,其特征在于,进一步包括基于所述其他指令不包括控制流指令的判断,向所述执行流水线路由另一个指令。
20.如权利要求15所述的方法,其特征在于,进一步包括:
访问带有一组给定源地址中的每一个的一组已知目的地的引用的控制结构;
判断所述目标地址不在所述源地址的所述一组已知目的地内;
基于所述目标地址不在所述源地址的所述一组已知目的地内的所述判断,生成异常。
21.一种设备,包括:
用于接收指令并分派所述指令的装置;
用于判断所述指令是否包括控制流指令的装置;
用于标识所述指令的源地址的装置;
用于标识所述指令的目标地址的装置,所述目标地址包括在执行所述指令时执行将间接地分支至的地址;
用于基于所述源地址判断所述目标地址是否是已知目的地的装置;以及
用于基于以所述源地址为基础的所述目标地址是否是已知目的地的所述判断来判断是否向所述执行流水线路由所述指令的装置。
22.如权利要求21所述的设备,其特征在于,进一步包括:
用于访问带有所述源地址的一组已知目的地的引用的控制结构的装置;以及
用于判断所述目标地址是否以所述一组已知目的地来标识的装置。
23.如权利要求21所述的设备,其特征在于,进一步包括:
用于访问没有所述源地址的已知目的地的控制结构的装置;以及
用于基于没有所述源地址的已知目的地的判断来判断抑制所述指令执行的装置。
24.如权利要求1所述的处理器,其特征在于,进一步包括:
用于访问带有一组给定源地址中的每一个的一组已知目的地的引用的控制结构的装置;
用于判断所述目标地址不在所述源地址的所述一组已知目的地组的装置;
用于基于所述目标地址不在所述源地址的所述一组已知目的地内的所述判断来生成异常的装置。
25.如权利要求1所述的处理器,其特征在于,进一步包括:
用于访问带有多个给定源地址的条目的控制结构的装置,其中每一条目都定义:
对于给定源地址,任何已知目的地是否可用;
已知目的地的列表的大小;以及
到所述已知目的地的列表的存储器段的偏移;
用于基于所述偏移访问所述存储器段的装置;以及
用于判断所述目标地址是否在所述已知目的地的列表内的装置。
CN201510141277.0A 2014-03-27 2015-03-27 用于控制流安全性的二进制转换机制的指令和逻辑 Active CN104951274B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/228,018 US9330028B2 (en) 2014-03-27 2014-03-27 Instruction and logic for a binary translation mechanism for control-flow security
US14/228,018 2014-03-27

Publications (2)

Publication Number Publication Date
CN104951274A true CN104951274A (zh) 2015-09-30
CN104951274B CN104951274B (zh) 2018-04-06

Family

ID=54165951

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510141277.0A Active CN104951274B (zh) 2014-03-27 2015-03-27 用于控制流安全性的二进制转换机制的指令和逻辑

Country Status (3)

Country Link
US (3) US9330028B2 (zh)
CN (1) CN104951274B (zh)
TW (2) TWI590076B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108139977A (zh) * 2015-12-08 2018-06-08 上海兆芯集成电路有限公司 具有可编程预取器的处理器
CN109643346A (zh) * 2016-10-01 2019-04-16 英特尔公司 控制流完整性
CN111078293A (zh) * 2018-10-19 2020-04-28 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
CN113296833A (zh) * 2021-04-30 2021-08-24 中国科学院信息工程研究所 一种二进制文件中合法指令的识别方法及装置
CN113312082A (zh) * 2021-04-30 2021-08-27 中国科学院信息工程研究所 一种二进制文件中混合在指令中的数据的识别方法及装置
CN115225623A (zh) * 2022-07-20 2022-10-21 贵阳语玩科技有限公司 基于Unity引擎的网络图片加载方法、装置及介质

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US9122873B2 (en) 2012-09-14 2015-09-01 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US10101936B2 (en) 2014-07-28 2018-10-16 Hewlett Packard Enterprise Development Lp Memory access control
WO2016018233A1 (en) * 2014-07-28 2016-02-04 Hewlett-Packard Development Company, L.P. Memory access control
US9335982B1 (en) * 2015-04-28 2016-05-10 Microsoft Technology Licensing, Llc Processor emulation using multiple translations
US10095631B2 (en) * 2015-12-10 2018-10-09 Arm Limited System address map for hashing within a chip and between chips
US10108530B2 (en) * 2016-02-24 2018-10-23 Stmicroelectronics (Rousset) Sas Method and tool for generating a program code configured to perform control flow checking on another program code containing instructions for indirect branching
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US11093605B2 (en) * 2018-06-28 2021-08-17 Cisco Technology, Inc. Monitoring real-time processor instruction stream execution
CN112445521B (zh) * 2019-09-02 2024-03-26 中科寒武纪科技股份有限公司 数据处理方法、相关设备及计算机可读介质
US11188361B1 (en) 2020-06-26 2021-11-30 Red Hat, Inc. Cross-architecture software distribution using a virtual instruction set architecture

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100095285A1 (en) * 2008-10-14 2010-04-15 International Business Machines Corporation Array Reference Safety Analysis in the Presence of Loops with Conditional Control Flow
CN101887500A (zh) * 2010-06-10 2010-11-17 复旦大学 基于标签的程序控制流深度混淆方法
US8434073B1 (en) * 2008-11-03 2013-04-30 Symantec Corporation Systems and methods for preventing exploitation of byte sequences that violate compiler-generated alignment
WO2013101034A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Software modification for partial secure memory processing
US8510827B1 (en) * 2006-05-18 2013-08-13 Vmware, Inc. Taint tracking mechanism for computer security

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6199095B1 (en) * 1996-01-29 2001-03-06 Compaq Computer Corporation System and method for achieving object method transparency in a multi-code execution environment
US6535903B2 (en) * 1996-01-29 2003-03-18 Compaq Information Technologies Group, L.P. Method and apparatus for maintaining translated routine stack in a binary translation environment
US8074055B1 (en) * 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US8127121B2 (en) * 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6247062B1 (en) * 1999-02-01 2001-06-12 Cisco Technology, Inc. Method and apparatus for routing responses for protocol with no station address to multiple hosts
US6654875B1 (en) * 2000-05-17 2003-11-25 Unisys Corporation Dual microcode RAM address mode instruction execution using operation code RAM storing control words with alternate address indicator
US7827386B2 (en) * 2003-06-30 2010-11-02 Intel Corporation Controlling memory access devices in a data driven architecture mesh array
US9081928B2 (en) * 2009-06-02 2015-07-14 Vector Fabrics, B.V. Embedded system development
US9317288B2 (en) * 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US8880851B2 (en) * 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9336180B2 (en) * 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
WO2013095607A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Instruction execution unit that broadcasts data values at different levels of granularity
WO2013095614A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Super multiply add (super madd) instruction

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510827B1 (en) * 2006-05-18 2013-08-13 Vmware, Inc. Taint tracking mechanism for computer security
US20100095285A1 (en) * 2008-10-14 2010-04-15 International Business Machines Corporation Array Reference Safety Analysis in the Presence of Loops with Conditional Control Flow
US8434073B1 (en) * 2008-11-03 2013-04-30 Symantec Corporation Systems and methods for preventing exploitation of byte sequences that violate compiler-generated alignment
CN101887500A (zh) * 2010-06-10 2010-11-17 复旦大学 基于标签的程序控制流深度混淆方法
WO2013101034A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Software modification for partial secure memory processing

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108139977B (zh) * 2015-12-08 2021-11-23 上海兆芯集成电路有限公司 具有可编程预取器的处理器
CN108829615A (zh) * 2015-12-08 2018-11-16 上海兆芯集成电路有限公司 具有可编程预取器的处理器
CN108829615B (zh) * 2015-12-08 2020-12-15 上海兆芯集成电路有限公司 具有可编程预取器的处理器
CN108139977A (zh) * 2015-12-08 2018-06-08 上海兆芯集成电路有限公司 具有可编程预取器的处理器
CN109643346A (zh) * 2016-10-01 2019-04-16 英特尔公司 控制流完整性
CN109643346B (zh) * 2016-10-01 2024-01-02 英特尔公司 控制流完整性
CN111078293A (zh) * 2018-10-19 2020-04-28 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
CN111078293B (zh) * 2018-10-19 2021-03-16 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
CN113296833A (zh) * 2021-04-30 2021-08-24 中国科学院信息工程研究所 一种二进制文件中合法指令的识别方法及装置
CN113312082A (zh) * 2021-04-30 2021-08-27 中国科学院信息工程研究所 一种二进制文件中混合在指令中的数据的识别方法及装置
CN113296833B (zh) * 2021-04-30 2024-03-05 中国科学院信息工程研究所 一种二进制文件中合法指令的识别方法及装置
CN113312082B (zh) * 2021-04-30 2024-03-08 中国科学院信息工程研究所 一种二进制文件中混合在指令中的数据的识别方法及装置
CN115225623A (zh) * 2022-07-20 2022-10-21 贵阳语玩科技有限公司 基于Unity引擎的网络图片加载方法、装置及介质
CN115225623B (zh) * 2022-07-20 2023-08-29 贵阳语玩科技有限公司 基于Unity引擎的网络图片加载方法、装置及介质

Also Published As

Publication number Publication date
US9330028B2 (en) 2016-05-03
TWI590076B (zh) 2017-07-01
TWI556115B (zh) 2016-11-01
TW201643743A (zh) 2016-12-16
TW201600979A (zh) 2016-01-01
US9606941B2 (en) 2017-03-28
CN104951274B (zh) 2018-04-06
US20150278126A1 (en) 2015-10-01
US10048965B2 (en) 2018-08-14
US20160239438A1 (en) 2016-08-18
US20170242702A1 (en) 2017-08-24

Similar Documents

Publication Publication Date Title
CN104951274A (zh) 用于控制流安全性的二进制转换机制的指令和逻辑
CN104954356B (zh) 保护共享的互连以用于虚拟机
TWI712887B (zh) 用於記憶體位址範圍的支持可組態安全性級別的處理器、方法及電腦可讀取非暫態儲存媒體
KR102318740B1 (ko) 보호 영역에서의 메모리 초기화
TWI715704B (zh) 用於以在環移轉期間保護堆疊的處理器擴展的處理器及方法
KR101817397B1 (ko) 하나의 아키텍처의 코드 모듈이 다른 아키텍처의 라이브러리 모듈을 사용할 수 있게 하는 아키텍처 간 호환성 모듈
KR101817021B1 (ko) 보안 메모리 재파티셔닝
JP6344614B2 (ja) セキュアエンクレーブページキャッシュのための進歩したページング能力を提供するための命令および論理
US9942035B2 (en) Platform migration of secure enclaves
CN108292215B (zh) 用于加载-索引和预取-聚集操作的指令和逻辑
CN108351779B (zh) 用于安全指令执行流水线的指令和逻辑
CN108369516B (zh) 用于加载-索引和预取-分散操作的指令和逻辑
US11327755B2 (en) Fine grained control flow enforcement to mitigate malicious call/jump oriented programming
CN105224865A (zh) 用于在安全飞地页高速缓存中进行中断和恢复分页的指令和逻辑
RU2662394C2 (ru) Инструкция и логика для доступа к памяти в кластерной машине широкого исполнения
KR20170043635A (ko) 독립적인 사용자 및 관리자 도메인을 갖는 메모리 보호 키 아키텍처
US10394595B2 (en) Method to manage guest address space trusted by virtual machine monitor
US10180854B2 (en) Processor extensions to identify and avoid tracking conflicts between virtual machine monitor and guest virtual machine
CN107924442B (zh) 用于轻量级虚拟化上下文的方法和设备
EP3520010A1 (en) Supporting oversubscription of guest enclave memory pages
TW201734766A (zh) 使用處理器指令前綴的二進制轉譯支援
JP2023094536A (ja) 信頼ドメインのための入/出力拡張を実装するための回路および方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant