CN104951697B - 来自过程指令的返回-目标限制性返回、处理器、方法及系统 - Google Patents
来自过程指令的返回-目标限制性返回、处理器、方法及系统 Download PDFInfo
- Publication number
- CN104951697B CN104951697B CN201510091513.2A CN201510091513A CN104951697B CN 104951697 B CN104951697 B CN 104951697B CN 201510091513 A CN201510091513 A CN 201510091513A CN 104951697 B CN104951697 B CN 104951697B
- Authority
- CN
- China
- Prior art keywords
- return
- rtr
- instruction
- target
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 126
- 230000008569 process Effects 0.000 title claims abstract description 69
- 230000004044 response Effects 0.000 claims abstract description 21
- 238000004458 analytical method Methods 0.000 claims description 54
- 238000003860 storage Methods 0.000 claims description 34
- 238000012546 transfer Methods 0.000 claims description 25
- 230000000295 complement effect Effects 0.000 claims description 14
- 230000008878 coupling Effects 0.000 claims description 12
- 238000010168 coupling process Methods 0.000 claims description 12
- 238000005859 coupling reaction Methods 0.000 claims description 12
- 230000008859 change Effects 0.000 claims description 5
- 230000015654 memory Effects 0.000 description 85
- 238000010586 diagram Methods 0.000 description 36
- 238000009826 distribution Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 19
- 238000012545 processing Methods 0.000 description 14
- 230000003068 static effect Effects 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 13
- 210000004027 cell Anatomy 0.000 description 11
- 238000004891 communication Methods 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 7
- 210000004940 nucleus Anatomy 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 6
- FARHYDJOXLCMRP-UHFFFAOYSA-N 2-[4-[2-(2,3-dihydro-1H-inden-2-ylamino)pyrimidin-5-yl]-1-[2-oxo-2-(2,4,6,7-tetrahydrotriazolo[4,5-c]pyridin-5-yl)ethyl]pyrazol-3-yl]oxyacetic acid Chemical compound C1C(CC2=CC=CC=C12)NC1=NC=C(C=N1)C=1C(=NN(C=1)CC(N1CC2=C(CC1)NN=N2)=O)OCC(=O)O FARHYDJOXLCMRP-UHFFFAOYSA-N 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 230000002159 abnormal effect Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000026676 system process Effects 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 210000003127 knee Anatomy 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 238000013442 quality metrics Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 241000894007 species Species 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Classifications
-
- 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
- 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
-
- 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
- G06F21/54—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 by adding security routines or objects to programs
-
- 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/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- 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/30105—Register structure
-
- 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/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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
-
- 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/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
-
- 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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
- G06F9/4486—Formation of subprogram jump address
-
- 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/567—Computer malware detection or handling, e.g. anti-virus arrangements using dedicated hardware
-
- 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/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
- Executing Machine-Instructions (AREA)
Abstract
处理器包括解码来自过程(RTR返回)指令的返回目标限制性的返回的解码单元。返回目标限制单元响应于RTR返回指令以判断是否限制由RTR返回指令作出向对应于RTR返回指令的返回地址处的指令的控制流程转移的企图。判断基于返回地址处的指令的类型与RTR返回指令的兼容性,并基于RTR返回指令的第一返回目标限制性的信息(RTR信息)的与返回地址处的指令的第二RTR信息的兼容性。控制流程转移单元响应于RTR返回指令,当返回目标限制单元确定不限制该企图时,将控制流程转移到返回地址处的指令。
Description
背景技术
技术领域
本文所述的各实施例一般涉及处理器。尤其地,本文所述的各实施例一般涉及执行返回指令的处理器。
背景信息
面向返回的编程(ROP)是攻击者可以用来获得对计算机系统或其他电子设备的控制的计算机安全性利用技术。在ROP中,攻击者可以获得对栈的控制,以便劫持程序控制流。
对调用栈的控制常常通过缓冲器溢出利用或攻击来实现。在缓冲器溢出中,在将数据存储到存储器中之前不充分执行边界检查的函数可能接受比能够适当地存储的数据更多的数据。例如,攻击者可能向网页浏览器发送比网页浏览器能够适当地存储的数据更多的数据。如果数据正在被存储在栈上,则某些数据可能超出分配给该函数的变量的存储空间并盖写返回地址。返回地址是由调用过程指令存储在栈上的地址,该地址旨在用于在被调过程完成之后将控制流程重新定向回正在调用的函数。然而,在缓冲器溢出攻击或利用中,返回地址可能被不同的返回地址盖写。这可能会使攻击者将控制流程转向不同的返回地址,从不同的返回地址开始执行代码,并执行潜在地不希望的和/或恶意的动作。
在ROP攻击中,攻击者可能将所谓的“小工具(gadgets)”的序列链接在一起。每一小工具都可能表示一组一个或几个指令,接下来是来自过程指令的返回。攻击者可能扫描或检查代码的各种可执行的存储器区域,以便定位或标识所希望的小工具。代码的这样的可执行的存储器区域的示例包括,例如,应用、共享的用户级别库、驱动程序、系统级别代码以及系统级别库。作为示例,攻击者可能扫描对应于来自过程(RET)指令的返回的操作码0xC3,如64和IA-32架构软件开发人员手册(卷2,指令集引用,A-Z,指令编号325383-041US,2011年12月)所描述。在标识每一操作码之后,攻击者可能查看一下,前面的指令是否可用作小工具。作为示例,攻击者可标识弹出栈指令,接下来是返回指令,作为第一小工具,寄存器到寄存器移动指令,接下来是返回指令,作为第二小工具,依次类推。在某些情况下,攻击者可能能够标识足够多的小工具,以构成所谓的图灵完整的小工具目录,该目录可以允许攻击者执行各种或潜在地几乎任何所需的恶意动作。
图1是示例三个小工具链100的框图。链包括第一小工具101,该第一小工具101包括弹(pop)eax指令102和来自过程(RET)指令的第一返回103。第一小工具链接到第二小工具104。第二小工具包括弹(pop)ecx指令105和来自过程指令的第二返回106。第一和第二小工具将数据从栈弹出到eax和ecx寄存器中。第二小工具链接到第三小工具107。第三小工具包括mov[ecx],eax指令108和来自过程指令的第三返回109。第三小工具将寄存器eax中的值存储到由寄存器ecx指出的存储器位置。小工具可能位于潜在地不同类型的代码110中,诸如应用、库、驱动程序、操作系统等等。这只是小工具链的一个简单说明性示例。
一个粗略但是说明性的类比是将ROP的小工具视为在某种程度上类似于从不同的杂志或报纸剪裁出单个字母并用于拼写勒索赎金信。正如单个字母被从不同的杂志或报纸中剪掉并串联地排列,以清楚写出勒索赎金信,潜在地在不同的代码块中标识的单个小工具(例如,每一小工具都包括一个或几个指令,接下来是返回),并链接在一起,以创建带有不同的功能的新的代码。小工具的图灵完整功能在某种程度上可能类似于具有清楚写出任何所需的消息所需的全部字母A到Z,根据类比,它们可以被用来实现几乎任何功能。
最初,缓冲器溢出攻击可以被用来劫持栈上的返回地址,并由此劫持控制流程。第一小工具的第一指令的地址可能存储在栈上,以使控制流程转向第一小工具。并非返回到调用过程(利用调用过程指令),控制流程可以转移到第一小工具的第一指令。接下来,链中的第二小工具的第一指令的返回地址可能被存储在栈上。第一小工具的返回指令可能使控制流程转向第二小工具。如此,一系列小工具的返回地址可能按顺序存储在栈上,并通过链接的小工具的返回指令跳转。通过按特定顺序将小工具链接在一起,攻击者可能能够从预先存在的代码创建新的程序功能。攻击者可能潜在地将此用于不希望的或有害的目的,诸如窃取机密信息,干扰或攻击其他应用,发送电子邮件,发送文本消息,张贴推特,利用内核漏洞,等等。
附图说明
可通过参考以下描述以及用于示出实施例的附图最佳地理解本发明。在附图中:
图1是示例三个小工具链的框图。
图2是处理器的实施例的框图。
图3是可操作以执行来自过程指令的返回-目标限制性的返回的实施例的处理器的实施例的框图。
图4是示出了来自过程指令和返回目标指令的返回-目标限制性的返回的操作的实施例的框图。
图5是执行来自过程指令的返回目标限制性的返回的实施例的方法的实施例的方框流程图。
图6是分别存储了第一类型的代码和第二不同类型的代码(具有指出不同的可准许或允许的RTR信息的RTR返回指令)的机器可读的存储介质的实施例的框图。
图7是分析代码的方法的第一实施例的方框流程图。
图8是分析代码的方法的第二实施例的方框流程图。
图9A是示出了有序流水线的实施例和寄存器重命名无序发布/执行流水线的的实施例的框图。
图9B是示出了处理器核的实施例的框图,包括耦合到执行引擎单元的前端单元,两者都耦合到存储器单元。
图10A是连接到片上互联网络且具有第二级(L2)缓存的本地子集的单一处理器核的实施例方框图。
图10B是图10A的处理器核的一部分的展开图的实施例的框图。
图11是处理器的一个实施例的框图,该处理器可具有一个以上的核,可具有集成的存储器控制器,且可具有集成的图形。
图12是计算机架构的第一实施例的框图;
图13是计算机架构的第二实施例的框图;
图14是计算机架构的第三实施例的框图;
图15是片上系统架构的实施例的框图。
图16是根据本发明的各实施例的使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
本文中公开的是来自过程指令和返回目标指令的返回-目标限制性的返回,用于执行该指令的处理器,在处理或执行该指令时处理器执行的方法,以及合并一个或多个处理器以处理或执行该指令的系统。在以下描述中,阐述多个特定细节(例如,特定指令操作、返回-目标限制性的信息的类型、处理器配置、微架构细节、操作序列等)。然而,在没有这些具体细节的情况下,也可实践实施例。在其他实例中,未详细示出公知电路、结构和技术,以避免混淆对本描述的理解。
图2是处理器210的实施例的框图。处理器具有指令集212。指令集包括处理器的本机指令。指令集中的指令表示提供给处理器以供执行的宏指令、汇编语言指令或机器级指令,其与从指令集的指令解码的微指令、微操作或指令或控制信号相反。
如图所示,在某些实施例中,指令集可以包括来自过程的返回-目标限制性返回RTR返回指令214。在某些实施例中,RTR返回指令可以具有、可以指出返回-目标限制性的(RTR)信息216,或可以以别的方式与返回-目标限制性的(RTR)信息216相关联。如进一步所示出的,在某些实施例中,指令集可以包括返回目标指令218。在某些实施例中,返回目标指令218可以具有、可以指出返回-目标限制性的(RTR)信息220,或可以以别的方式与返回-目标限制性的(RTR)信息220相关联。在某些实施例中,RTR返回指令和返回目标指令可以表示旨在一起使用的一对指令,以有条件地约束或限制尝试的返回控制流程转移(例如,基于RTR信息)。
处理器还包括返回目标限制单元222。返回目标限制单元可以以硬件、固件、软件或其组合(例如,潜在地与某种固件和/或软件相结合的硬件)来实现。在某些实施例中,RTR返回指令可操作用于导致返回目标限制单元和/或处理器相对于RTR返回指令被允许将控制流程返回到哪些返回目标(例如,哪些指令)是限制性的。在某些实施例中,RTR返回指令可操作用于导致这样的限制使用和/或基于返回目标地址处的指令的类型。例如,在某些实施例中,如果返回目标地址处的指令与返回目标指令218是相同类型(例如,具有相同操作码),则向返回目标地址处的的指令的企图的返回控制流程转移可以被允许,否则,被限制或阻止。返回目标指令218可以表示主要被设计为或打算充当对于RTR返回指令的允许的或合法的返回目标的标记的指令的类型。在某些实施例中,RTR返回指令可操作用于导致这样的限制使用和/或基于RTR返回指令的RTR信息216和返回目标指令的RTR信息220。例如,在某些实施例中,如果两组RTR信息216,220相等、匹配或以别的方式兼容,则向返回目标处的指令的企图的返回控制流程转移可以被允许。在一个特定示例实施例中,每一组RTR信息都可以包括值(例如,整数值),两个值必须相等以便兼容。如果两组RTR信息不兼容,那么,可以限制或阻止企图的返回控制流程转移。在某些实施例中,可以通过指令的立即数(immediate)来提供RTR信息,虽然本发明的范围不受限制。
有利地,RTR返回指令214和返回目标指令218可以帮助有条件地限制,或提供对返回控制流程转移的更大的控制。作为一个潜在的优点,这可以帮助防止面向返回的编程(ROP)攻击,或至少使启动它们变得难得多。一方面,ROP攻击一般需要依赖于重复地执行向各种链接的小工具的第一指令的返回控制流程转移的能力(例如,它们需要能够将这些小工具的第一指令的目标地址放置在栈上)。然而,在某些实施例中,如果企图的返回控制流程转移将指向与特定返回目标指令218不同类型(例如,不同的操作码)的指令(例如,弹出指令、mov指令等等),那么,处理器可以限制或防止返回控制流程转移。这单独地可能倾向于使得攻击者能够发现通过意外事件存在的有用的小工具难得多,因为,除发现一个或多个有用的指令接下来是返回指令之外,一个或多个有用的指令还需要前面有返回目标指令218。这单独地可能使得攻击者能够向最初不打算返回到的指令返回更难。此外,在某些实施例中,如果企图的返回控制流程转移将指向带有不匹配的或以别的方式不兼容的RTR信息的指令,那么,还可以限制或防止这样的返回控制流程转移。这还可以使得攻击者能够向最初不打算返回到的指令返回更难,因为返回目标指令218将需要具有匹配的或兼容的RTR信息。
图3是可操作以执行来自过程的返回-目标限制性返回RTR返回指令314的实施例的处理器310的实施例的框图。在一些实施例中,处理器可以是通用处理器(例如,在台式、膝上型或其它计算机中使用的类型的通用微处理器)。替换地,处理器可以是专用处理器。合适的专用处理器的示例包括,但不仅限于,网络处理器、通信处理器、密码处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)以及控制器(例如,微控制器)。处理器可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器中的任何一种,其各种混合型,或其他类型的处理器,或具有这样的不同的处理器(例如,在不同的核中)的组合。
在操作过程中,处理器可以接收RTR返回指令314的实施例。例如,可从指令获取单元、指令队列等接收RTR返回指令。RTR返回指令可表示宏指令、汇编语言指令、机器代码指令、或处理器的指令集的指令或控制信号。在某些实施例中,RTR返回指令可以具有,可以指出,或可以以别的方式与返回-目标限制性的(RTR)信息相关联。在某些实施例中,RTR信息可以包括与RTR返回指令相关联的一个或多个值。在某些实施例中,RTR信息可以包括RTR返回指令的立即数中的值。RTR信息可以与指令相关联的可能的方式的其他示例包括,但不仅限于,RTR信息处于指令的后缀中,在指令之后的一个或多个字节中,在由指令指出的寄存器中提供,等等。
再次参考图3,处理器包括解码单元或解码器330。解码单元可以接收和解码相对较高级别的RTR返回指令。解码单元可以输出一个或多个微指令、微操作、微代码入口点、解码的指令或控制信号,或反映、表示相对较高级别的RTR返回指令和/或从相对较高级别的RTR返回指令导出的其他相对较低级别的指令或控制信号。一个或多个较低级指令或控制信号可通过一个或多个较低级(例如,电路级或硬件级)操作来实现较高级指令。在某些实施例中,解码单元可以包括接收指令的一个或多个输入结构(例如,端口、互连、接口)、与输入结构耦合以识别和解码指令的指令识别和解码逻辑,以及与指令识别和解码逻辑耦合以输出一个或多个对应的较低级别的指令或控制信号的一个或多个输出结构(例如,端口、互连、接口)。解码单元可以使用各种不同的机制来实现,包括但不限于,微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)和本领域已知的用于实现解码单元的其他机制。
在某些实施例中,并非RTR返回指令314被直接提供到解码单元330,可以可任选地使用指令仿真器、转换器、变形器、解释器,或其他指令转换模块(未示出)。各种类型的指令转换模块在本领域中是已知的,并且可在软件、硬件、固件、或者其组合中实现。在某些实施例中,指令转换模块可以位于处理器外面,诸如,例如,在单独的管芯上和/或在存储器中(例如,作为静态、动态,运行时仿真模块)。作为示例,指令转换模块可以接收RTR返回指令314(可以是第一指令集的),并可以仿真,转换、变形、解释,或以别的方式将RTR返回指令转换为一个或多个对应的或导出的中间指令或控制信号(可以是不同的第二指令集的)。可以将第二指令集的一个或多个中间指令或控制信号提供到解码单元,该解码单元可以将它们解码为可以由处理器的本机硬件或逻辑执行的一个或多个较低级别的指令或控制信号。
再次参考图3,存储器350与处理器310耦合。虽然在所示实施例中示出了存储器,但是,其他实施例涉及不与这样的存储器耦合的单独的处理器(例如,不部署在一个系统中)。在操作过程中,存储器可以存储栈352。栈可以表示可操作以存储数据的栈类型的数据结构。栈的一个常见的用途是跟踪每一被调过程(例如,每一活跃的子例程)在它完成执行之后应该将控制返回到的返回地址或点。如图所示,栈可以存储对应于RTR返回指令314的返回地址354。作为示例,利用RTR返回指令调用了过程的对应的调用过程指令,可以将返回地址354存储到以前的栈。RTR返回指令可以企图从栈弹出或以别的方式检索返回地址354,并将控制转移到返回地址。存储器还可以存储具有由栈上的返回地址354指出的相关联的返回地址358的代码356。代码具有指令,在所示示例中,为位于返回地址358的返回目标指令318。
再次参考图3,返回目标限制单元322与解码单元330耦合,并在使用过程中,在部署中,将与存储器350耦合,或以别的方式与存储器350进行通信。处理器和/或返回目标限制单元响应于RTR返回指令314和/或作为其结果(例如,响应于从其中的一个或多个指令或控制信号)可操作,以便相对于RTR返回指令314被允许将控制流程返回到哪些特定返回目标(例如,指令)是限制性的。在某些实施例中,返回目标限制单元322可以响应于RTR返回指令314可操作,以基于返回目标指令的类型和/或返回目标指令的其他非操作码信息与RTR返回指令兼容,判断是否要限制向位于返回地址358处的RTR返回指令314的返回目标指令(例如,在所示示例中,返回目标指令318)的控制流程转移。
在某些实施例中,返回目标限制单元322可以包括与解码单元耦合,并且(在使用中,在部署中)要与存储器350耦合,或以别的方式与存储器350进行通信的第一判断单元332。第一判断单元可以响应于RTR返回指令314,判断返回地址358处的指令(例如,返回目标指令318)是否是与RTR返回指令314兼容的类型。如图所示,返回地址358处的指令的类型321的指示(例如,指令是或不是返回目标指令318的操作码或指示)可以被提供给返回目标限制单元322。在某些实施例中,只有返回目标指令318可以是与RTR返回指令314兼容的类型(例如,具有操作码),而其他类型的指令(例如,指令集的不同的操作码)可能不兼容。可另选地,几种不同类型的指令(例如,几个不同的操作码),常常不超过大约五种不同类型的指令,可能可任选地与RTR指令兼容,而一般而言更大数量的不同类型(例如,指令集的更大数量的不同的剩余操作码)可能不兼容。
在某些实施例中,指令318的这样的兼容的类型可能表示计划或设计成只用于或主要用于与RTR返回指令314相结合的指令的专用的返回目标标志类型,以标记对于RTR返回指令的潜在地合法的或允许的返回目标位置。一般而言,返回目标指令318可能没有算术、逻辑,存储器访问,或其他功能,虽然如果需要,对于特定实现,它们能够。在某些实施例中,返回目标指令318可以是这样的类型,除了检查它们的类型并提供它们的RTR信息以外,可以作为空操作(NOP)执行。在某些实施例中,这样的兼容的指令的存在可能是向位置返回的必要条件,但不是充分条件。如果这样的兼容的指令不位于返回地址358处,那么,返回目标限制单元322和/或处理器可以限制或不允许向返回地址358的企图的返回。例如,返回目标限制单元和/或处理器可以发出异常360,诸如,例如,控制保护错误。
在某些实施例中,返回目标限制单元322可以包括与解码单元耦合,并且(在使用中,在部署中)要与存储器350耦合,或以别的方式与存储器350进行通信的第二判断单元334。第二判断单元可以响应于RTR返回指令314,判断返回地址358处的指令(例如,返回目标指令318)的(由其指出的,或以别的方式与其相关联的)RTR信息是否与RTR返回指令314的(由其指出的,或以别的方式与其相关联的)RTR信息兼容。如图所示,返回地址358处的指令的RTR信息320可以被提供给返回目标限制单元322,RTR返回指令的RTR信息316可以被提供给返回目标限制单元322。
在不同的实施例中,两组RTR信息可能以不同的方式兼容。例如,在某些实施例中,两组RTR信息当且仅当它们相等或以别的方式匹配时兼容。例如,每一组RTR信息都可能潜在地包括一个值,并且,两个值当且仅当它们相等时可能兼容或匹配。可另选地,两组RTR信息可以以特定实现所需的其他方式匹配或兼容。例如,两组RTR信息可以通过函数(例如,散列函数、校验和函数、逻辑AND、OR、NOT、XOR,或其他逻辑运算或函数等等),彼此匹配和/或兼容。在某些实施例中,如果两组RTR信息不兼容,那么,返回目标限制单元322和/或处理器可以限制或不允许向返回地址358的企图的返回。例如,返回目标限制单元322和/或处理器可以发出异常360,诸如,例如,控制保护错误。
在其他实施例中,可以将来自指令的RTR信息与其他信息组合,虽然这不是必需的。这样的其他信息的示例包括,但不仅限于,处理器标识类型信息(例如,来自处理器标识寄存器)、设备特定的信息(例如,型号或序列号)、平台特定的信息、操作系统特许信息,加密密钥的一部分(例如,第一字节)或全部等等。例如,可以将来自指令的立即数附加到这样的信息,与其散列、XOR,或以别的方式与其相结合。这可以帮助增强安全性,因为黑客通常不能轻松地知道这样的信息。如果比较的一侧(例如,返回)将立即数与这样的额外的信息组合,而另一侧(例如,返回目标)只使用立即数,那么,将对于特定设备自定义软件(例如,设备特定的信息)。消费者可以从知道这样的信息的可信赖的来源获取软件。一个设备的软件可能不能在另一设备上运行。
如果返回地址处的指令的类型是兼容的,并且如果两组RTR信息是兼容的,那么,返回目标限制单元和/或处理器可以确定不限制和/或允许向返回地址358处的企图的返回目标的控制流程转移。例如,返回目标限制单元322可以向控制流程转移单元338提供允许信号336。除控制流程转移随由返回目标限制单元的判断或授权(例如,允许信号336)而定之外,控制流程转移单元基本上可以是常规的。例如,控制流程转移单元可以包括跳转执行单元,或适合于实现来自过程控制转移操作的返回的其他类型的单元或逻辑。代表性地,控制流程转移单元可以在指令指针寄存器340中存储返回地址358,作为返回地址342。在可任选地使用分段的存储器(不是必需的)的各实施例中,如果返回地址处的指令位于不同的段中(例如,在段之间的控制转移的情况下),控制流程转移单元可以将返回目标指令318的段346存储在段选择器寄存器344中。
为进一步说明某些概念,考虑一对RTR返回和返回目标指令的详细示例实施例。RTR返回指令的一个特定实施例是具有在指令的立即数(例如,2比特、4比特、8比特或16比特立即数)中所提供的常数K(例如,整数)的RETK指令。一般而言,常数的可能的值的数量越大,对恶意攻击的保护越大。作为示例,8比特立即数能够提供从0到255的值。返回目标指令的一个特定实施例是在立即数中具有常数K的ENDRETK指令。ENDRETK指令标记结束返回点或潜在地RETK指令的可允许的返回目标。使两个指令的立即数具有相同大小是方便的,虽然这不是必需的,只要值可以相等。为了使控制流程转移被返回目标限制单元322和/或处理器允许,可能需要发现企图的返回目标地址处的ENDRETK指令的存在以及两个指令中的两个常数K的相等性。例如,RET17指令可以只被允许返回到ENDRET17指令,但不允许返回到ENDRET16指令或任何其他非ENDRET17指令。同样,RET232指令可以只被允许返回到ENDRET232指令,但不允许返回到ENDRET17指令或任何其他非ENDRET232指令。如果RET232指令试图返回到弹出栈指令、加法指令、ENDRET231指令,或ENDRET232指令之外的任何其他指令,那么,可以限制或防止企图的返回,并可以引发异常(例如,控制保护错误)。应该理解,这只是一个说明性示例,本发明的范围不仅限于此特定示例。
返回目标限制单元322和/或处理器可以包括特定逻辑(例如,晶体管、集成电路,或潜在地与固件(例如,存储在非易失性存储器中的指令)和/或软件(例如,存储在存储器中的较高级别的指令)相结合的其他硬件),该逻辑可操作,以执行RTR返回指令和/或响应于和/或作为RTR返回指令的结果,判断是否限制向返回目标的返回。
有利地,RTR返回指令和返回目标指令可以帮助有条件地限制,或提供对返回控制流程转移的更大的控制。作为一个潜在的优点,这可以帮助防止面向返回的编程(ROP)攻击,或至少使启动它们变得难得多。一方面,ROP攻击一般需要依赖于重复地执行向各种链接的小工具的第一指令的返回控制流程转移的能力。然而,在某些实施例中,如果企图的返回控制流程转移将指向与特定返回目标指令318不同类型(例如,不同的操作码)的指令,那么,可以限制或防止这样的返回控制流程转移。此外,在某些实施例中,如果企图的返回控制流程转移将指向带有不匹配的或以别的方式不兼容的RTR信息的指令,那么,可以限制或防止这样的返回控制流程转移。总的说来,这可以倾向于使得攻击者企图向最初未计划返回到的位置返回更难。使用特定返回目标指令,以及兼容的RTR信息组,可以帮助固定代码中的允许的返回路径,以便任意地返回到攻击者所希望的返回目标一般而言不大可能。当创建程序时,返回目标指令的位置以及兼容的RTR信息对指出全部计划的返回目标。一般不能轻松地发现不同的返回目标,因为返回目标指令常常将不会存在于所希望的位置和/或将不会具有兼容的RTR信息。这可以倾向于使通过意外事件存在的小工具的数量很少。
图4是示出了返回目标限制单元422的实施例对RTR返回指令414的实施例和返回目标指令418的实施例的使用的框图。调用过程495具有指出目标地址499和返回地址458的调用过程指令496。目标地址499是针对正在返回的过程498中的第一指令401的。如在(1)所示,调用过程指令导致处理器将初始目标地址存储在指令指针寄存器440中,并将正在返回的过程498的初始段存储到段选择器寄存器中。返回地址454还可以存储在对应于返回地址458的栈452上。然后,控制流程跳转或转移到正在返回的过程498。如在(2)所示,可以执行目标地址499处的第一指令401,然后,可以执行导致RTR返回指令414的一个或多个其他指令。当执行RTR返回指令414时,返回目标限制单元422可以接收RTR返回指令的RTR信息416,以及由RTR返回指令指出的栈452上的返回地址454处的暗示的返回目标指令418的RTR信息420。返回目标指令的类型421的标志还可以被提供到返回目标限制单元422。作为(3),返回目标限制单元可以判断是否允许或限制向返回目标指令418的企图的控制流程转移,如本文其它位置所描述的。如果判断是不限制,那么,如在(4A)所示,它可以将返回地址454存储到指令指针寄存器440中,并可以将调用过程的段456存储在段选择器寄存器444中(在段之间的转移的情况下)。如果判断是限制,那么,如在(4B)所示,它可以引发异常460。然后,可以跳转或转移到返回目标指令418。如在(5)所示,返回目标指令可以潜在地作为NOP执行,然后,继续执行后续指令497。
图5是执行来自过程(RTR返回)指令的返回目标限制性的返回的实施例的方法570的实施例的方框流程图。在各实施例中,方法可以由处理器、指令处理设备或其他数字逻辑设备来执行。在一些实施例中,图5的操作和/或方法可由图2-3中的任何一个的处理器执行和/或在图2-3中的任何一个的处理器中执行。本文中所描述的用于图2-3中的任何一个的处理器的组件、特征、以及具体的任选细节还任选地应用于图5的操作和/或方法。替换地,图5的操作和/或方法可由类似的或完全不同的处理器或装置执行,和/或在类似的或完全不同的处理器或装置内执行。此外,图2-3中的任何一个的处理器可以执行与图5的那些相同、类似,或不同的操作和/或方法。
该方法包括在框571接收RTR返回指令。在各个方面,该指令可在处理器、指令处理装置或者其一部分(例如,指令获取单元、解码单元、总线接口单元等)处接收。在各个方面,该指令可从管芯外的源(例如,从存储器、互连等)或者从管芯上的源(例如,从指令缓存、指令队列等)接收。在某些实施例中,来自过程指令的返回目标限制性的返回可以具有,可以指出,或可以以别的方式对应于RTR信息或与RTR信息相关联。
在框572,可以作出返回地址处的指令的类型与RTR返回指令兼容的判断。如果类型被确定为兼容(即,在框572,判断是“是”),则方法可以前进到框573。在某些实施例中,为了发现类型是兼容的,返回地址处的指令应该是返回目标指令,如本文的其它位置所描述的。
在框573,可以作出由RTR返回指令指出的第一RTR信息是否与由返回地址处的指令指出的第二RTR信息兼容的判断。可以如本文的其它位置所描述的那样作出此判断。如果RTR信息的组被确定为兼容(即,在框573,判断是“是”),则方法可以前进到框574。
在框574,方法可以允许由RTR返回指令作出向对应于RTR返回指令的返回地址处的指令的控制流程转移的企图。相反,如果任一类型被判断为不兼容(即,在框572中,判断是“否”),或如果RTR信息的组被判断不兼容(即,在框573,判断是“否”),那么,方法可以前进到框575。在框575,方法可以限制由RTR返回指令作出向对应于RTR返回指令的返回地址处的指令的控制流程转移的企图。
此处所公开的RTR返回指令和/或RTR信息的另一潜在的优点是,它们可以帮助促进和/或改善对代码的遭受攻击(例如,ROP攻击)的风险的分析或检查。常常在代码被允许使用之前通过分析来检查、审查并验证代码。例如,这常常对于数字分发平台发生。作为一个示例,应用商店(App Store)是针对iOS上的移动应用的数字分发平台,该平台允许用户浏览并下载利用苹果的iOS软件开发工具包(SDK)开发的应用。另一示例是Mac App Store,其具有针对Mac计算机设计的供下载的应用。应用发布者可以向这样的数字分发平台提交应用,以供销售或从数字分发平台或商店下载。通常,作为该过程的一部分,在应用被允许购买或下载之前,可以检查、审查并验证应用。
在这样的检查过程中执行的分析的一种常见的类型是静态分析(例如,静态二进制评估技术)。然而,这些技术的一个缺点是,它们常常不完全适合于检测ROP类型的攻击。在文章“Jekyll on iOS:When Benign Apps Become Evil”(2013年8月第22届USENIX安全讨论会)中提供了有关此主题的进一步的背景讨论。一个顾虑是,攻击者可能编写被设计为执行攻击而在静态分析过程中潜在地逃避检测的恶意应用。例如,攻击者可能创建具有难以通过静态分析检测到的的隐藏的小工具的表面上正常的代码(例如,应用)。作为一个特定示例,应用开发人员可能编写要通过App Store分发的表面上正常的视频游戏,但是,在应用中包括了ROP攻击的隐藏的小工具。攻击者可能向App Store或其他数字分发平台提交视频游戏或其他应用供审查和验证。可以执行静态分析,包括根据应用的计划的流程,跟踪调用和返回路径。然而,静态分析可能不能设想或预期只在运行时过程中根据攻击者运行时命令遵循的不同的恶意返回路径。回想一下,在ROP攻击中,通过动态地通过将返回地址放在栈上,对控制流程转移进行控制,在运行时确定返回路径。结果,隐藏的小工具可能能够在静态分析过程中逃避检测。应用可能通过应用检查和审查过程,并可能被置于App商店上供购买和/或下载。当视频游戏或其他应用安装在智能电话、平板计算机或其他计算机系统上时,攻击者可能启动攻击。攻击者可能引入恶意控制流程,并按特定顺序组装小工具以执行恶意操作。
有利地,此处所公开的RTR返回指令和/或RTR信息可以帮助促进和/或改善对代码的分析,以发现恶意的意图和/或隐藏的小工具。一方面,RTR返回和返回目标指令的对和/或兼容的RTR信息的对可能使可能的控制流程返回路径更静态或固定。在运行时,可以限制控制流程返回路径去攻击者选择的任何地方,而宁可说是可能仅限于与这些指令对和兼容的RTR信息对一致的或兼容的控制流程返回路径。返回目标指令的位置以及兼容的RTR信息组指出全部可能的/准许的返回目标。可以跳转到也具有带有兼容的RTR信息的兼容的返回目标指令的多个不同的可能的返回位置(例如,通过意外事件等等),虽然应该更加容易预期或预见这些不同的返回路径,并且它们在数目上一般应该较少。这可能使得通过分析(例如,静态分析技术)跟踪可能的返回路径更为容易,这可以帮助检测恶意代码。这还可以帮助应用开发人员制作能够执行ROP攻击或其他恶意攻击同时能够在分析过程中逃避检测的应用难得多。
图6是分别存储或以别的方式提供第一类型的代码682和不同的第二类型的代码684(具有指出允许用于第一类型的代码但不允许用于第二类型的代码的RTR信息的RTR返回指令683、指出允许用于第二类型的代码但不允许用于第一类型的代码的RTR信息的RTR返回指令685)的机器可读取的介质680(例如,机器可读的存储介质)的实施例的框图。在某些实施例中,第一类型的代码可以是用户级别的代码和/或无特权级别的代码,而第二类型的代码可以是系统级别的代码和/或有特权级别的代码。在其他实施例中,可以使用其他不同类型的代码,诸如,例如,库代码与非库代码,设备驱动程序代码与非驱动程序代码、操作系统代码与非操作系统代码,用户级别的代码与非用户级别的代码,或其各种组合。
第一类型的代码具有指出指出用于第一类型的代码但不允许用于第二类型的代码的RTR信息的RTR返回指令683。在某些实施例中,对于第一类型的代码(例如,用户级别的代码)允许的RTR信息可能对于多个其他类型的代码(例如,操作系统代码,设备驱动程序代码等等)不被允许。类似地,不同的第二类型的代码具有指出允许用于第二类型的代码但不允许用于第一类型的代码的RTR信息的RTR返回指令685。在某些实施例中,对于第二类型的代码(例如,操作系统代码)允许的RTR信息可能对于多个其他类型的代码(例如,用户级别的代码,设备驱动程序代码等等)不被允许。
在某些实施例中,不同的允许的RTR信息可以用于不同级别的特权或安全性。例如,第一类型的代码682(例如,用户级别和/或无特权级别的代码)的指出允许用于第一类型的代码但不允许用于第二类型的代码的RTR信息的RTR返回指令683的RTR信息可以仅限于一组可允许或准许的值,这些值相对于第二类型的代码684(例如,系统级别和/或有特权级别的代码)的指出允许用于第二类型的代码但不允许用于第一类型的代码的RTR信息的RTR返回指令685的RTR信息的可允许或准许的值是互相排斥的。例如,不相重叠的值的范围可以用于这两种不同类型的代码。作为一个特定说明性示例,整数值0-127可以可任选地用于第一类型的代码682的RTR信息,而整数值128-255可以可任选地用于第二类型的代码684的RTR信息。
另外,如果需要的话,两个以上(例如,三个、四个、五个或更多)不同类型的代码可以可任选地具有允许的RTR信息的不同的互相排斥的组(例如,整数范围)。例如,在一个特定示例实施例中,可以可任选地使用RTR指令的允许的RTR信息的六个不同的互相排斥组(例如,整数范围)。例如,第一范围的整数值可以用于用户应用的RTR指令,不同的第二范围的值可以用于用户库的RTR指令,不同的第三范围的值可以用于系统应用的RTR指令,不同的第四范围的值可以用于系统库的RTR指令,不同的第五范围的值可以用于设备驱动程序的RTR指令,以及不同第六范围的值可以用于操作系统内核的RTR指令。应当理解这只是一个说明性示例,而不是必需的。
注意,在此实施例中,允许的RTR信息被指定到RTR返回指令(和/或针对RTR返回指令管理),而不是返回目标指令。作为示例,用户级别应用可能不被允许包含带有对于用户级别应用不允许的RTR信息(例如,值)(例如,为操作系统预留的)的RTR返回指令。然而,用户级别的代码可以被允许具有带有与为操作系统预留的RTR信息相等,匹配,或互补的RTR信息(例如,值)的返回目标指令(例如,ENDRETK指令)。如此,用户级别应用可以调用操作系统过程,该操作系统过程具有带有为操作系统预留的RTR信息的RTR返回指令,返回可以被允许回到具有带有互补的RTR信息的返回目标指令的用户级别的应用。
图7是分析代码的方法786的实施例的流程框图。可以使用代码分析来判断代码是否满足管理对于RTR返回指令的什么RTR信息是可允许的策略或规则。在某些实施例中,该方法可以由代码分析系统来执行。例如,在某些实施例中,代码分析系统可以是执行分析以验证应用开发人员具有根据规则或策略分配的RTR信息的应用商店(例如,App Store)或其他数字分发平台的模块。作为另一个示例,代码分析系统可以包括一个或多个操作系统、虚拟机模块,或其他有特权级别的软件模块。在再一个示例中,诸如微代码和/或硬件之类的处理器的逻辑可以执行该方法。
该方法包括在框787接收第一类型的代码。例如,代码接收模块可以接收代码。该方法包括,在框788,判断第一类型的代码的RTR返回指令是否只指出允许用于第一类型的代码,但不允许用于一个或多个其他类型的代码的RTR信息。代码的类型可以是前面所提及的那些中的任何一种。这可以包括使用前面所提及的RTR信息的互相排斥的组或范围中的任何一种。如果判断是“否”,则方法前进到框789,在那里,RTR信息被判断不满足策略或规则。否则,如果判断是“是”,则方法前进到框790,在那里,RTR信息被确定为满足策略或规则。作为一个示例,响应于框789,数字分发平台模块可以决定不验证代码,除非RTR信息被修改以满足规则或策略。作为另一个示例,响应于框789,操作系统模块可以确定不允许代码运行。
图8是分析代码的方法891的另一实施例的方框流程图。在某些实施例中,该方法可以由代码分析系统来执行。例如,在某些实施例中,代码分析系统可以是应用商店(例如,App Store)或其他数字分发平台的模块。作为另一个示例,代码分析系统可以包括一个或多个有特权级别的软件模块。
该方法包括,在框892,接收代码。例如,代码接收模块可以接收代码。该方法可任选地包括在框893,接收指出RTR返回和返回目标指令的预期的互补对的元数据。在某些实施例中,代码分析系统可以要求标识具有匹配的或兼容的RTR信息的RTR返回和返回目标指令的预期的互补对。例如,当应用或代码被提交供考虑和检查和/或在被批准之前,应用商店(例如,App Store)或其他数字分发平台的代码分析系统可能要求这样的标识。应用开发人员可能需要与应用或代码一起提交指出RTR返回和返回目标指令的这些预期的互补对的元数据。作为另一个示例,在应用调用时,一个或多个有特权级别软件模块可能要求这样的元数据或标识。这样的信息也可以被用来改善分析,以发现潜在的攻击。
该方法包括,在框894,改变至少一对预期的互补的RTR返回和返回目标指令的RTR信息,而允许RTR信息保持互补。在某些实施例中,代码分析系统或模块可以使用指示或元数据来向预期的兼容的RTR返回和返回目标指令的对中的至少一对、有选择地向某些,大部分,或全部分配新的或不同的RTR信息(例如,值)。例如,可以更改RTR返回指令和其标识的返回目标指令的RTR信息,以便它们保持兼容,但是具有与之前不同的RTR信息。作为示例,RET17/ENDRET17对可以被更改为RET233/ENDRET233对。
在不同的实施例中,这可以按不同的方式来完成。一方面,系统或模块可以检查在全部RTR信息的组之间有足够级别的相异性或熵(例如,RTR信息的不同的对与相同对的比率至少满足阈值)。作为一个极端示例,如果代码对于所有RTR返回和返回目标指令对使用相同RTR信息,那么,可以缩小检查RTR信息兼容性的值。如果系统或模块检测到有太多的带有相同RTR信息的兼容的指令的预期的对(例如,高于阈值),则可以确定更改某些RTR信息,以减少处理器将允许的不同的可能的返回目标控制转移的数量。元数据可以用于此用途。此可以帮助删除某些隐藏的小工具。这可以由数字分发平台、操作系统模块等等的系统或模块来完成。
在另一方面,可以可任选地更改预期的兼容的指令对中的某些、大多数或全部的RTR信息(例如,伪随机地、根据替换算法,等等),不管是否检查相异性。这可以帮助混合或搅乱对于不同的对的RTR信息,可以帮助防止具有相同兼容的RTR信息的隐藏的小工具。例如,在一个特定实施例中,有特权级别的软件模块(例如,操作系统模块、虚拟机监视器模块,等等)可以在应用或代码被调用或加载时,向指出的或预期的指令对中的某些,大多数,或全部分配新的或不同的RTR信息。在另一特定实施例中,在代码下载时(例如,当正在下载应用时),模块(例如,数字分发平台或操作系统的)可以向指出的或预期的指令对中的某些,大多数,或全部分配新的或不同的RTR信息。
对RTR信息施加附加约束的其他方式也是可以的。例如,在某些实施例中,模块(例如,数字分发平台或有特权的软件模块的)可以施加规定RTR信息的不同的组或唯一组将用于不同的RTR返回指令中的每一个以便是可准许或可允许的策略或规则。例如,可以要求每一RTR返回指令具有不同的值(例如,不同的整数或常数)。RTR信息量(例如,比特的数量)可以足以提供所有这些不同的值。RTR信息的特定量取决于特定实现。
在某些实施例中,此处所公开的RTR返回指令和返回目标指令可以被给予在旧式代码中未定义的和/或是非法的新的不同的操作码。换言之,在RTR返回和返回目标指令被引入到指令集中之前,这些操作码可以不存在于处理器的指令集中。
在其他实施例中,此处所公开的RTR返回指令和/或返回目标指令可以被给予与旧式指令的那些和/或为旧式指令集定义的那些相同的操作码。这可以允许这些指令在旧式硬件上运行。在一个实施例中,返回目标指令(例如,RETK指令)可以被编码,如此,RTR信息(例如,K)是来自过程指令(例如,RET指令)的现有的返回的立即数或后缀。例如,在Intel架构中,来自过程指令的一个近返回是单字节指令C3。可以将RTR信息(例如,K)附加到C3指令的末尾,以便指令将能够在旧式硬件上运行,因为旧硬件会将C3解释为来自过程指令的旧式返回,并忽略随后的RTR信息(例如,K)。旧式硬件可以将RTR信息(例如,K)视为可以被忽略或至少不需要使用的后缀。相比之下,在新的硬件上,RTR信息(例如,K)可以被处理器视为提供用于调节控制流程转移的RTR信息的立即数。现在转向返回目标指令,在一个实施例中,返回目标指令(例如,ENDRETK指令)可以被编码为旧式指令集中的空操作(NOP)的合法的或定义的实例。如此,旧式硬件可能能够处理返回目标指令(例如,ENDRETK指令),因为它只被视为NOP。相比之下,在新的硬件上,返回目标指令(例如,ENDRETK指令)可以被用来提供RTR信息,如本文其它位置所描述的。
在其他实施例中,旧式指令的操作码可以可任选地被赋予新的用途。例如,这可以对于通常不用于现代环境中的和/或处于被弃用的过程中的旧式指令来进行。作为一个示例,Intel架构中的RETn指令(例如,具有C2或CA操作码)可以可任选地被赋予新的用途。RETn指令具有用于指定从栈中弹出的字节的数量(例如,imm16字节)的16比特立即数(imm16)。当前,RETn指令不被广泛地使用,并在被弃用的过程中,主要因为当前让数据在寄存器中,而并非将它推到栈中,然后从栈中弹出它更常见。处理器可以具有第一或旧式模式,在该模式下,RETn指令可以按常规方式解释或实现,其中16比特立即数用于指出要从栈中弹出的字节的数量。处理器还可以具有第二或新模式,在该模式下,RETn指令可以利用提供RTR信息(例如,K值)的16比特立即数来解释或实现。
在某些实施例中,借助于来自系统软件的某些帮助,此处所公开的具有新颖的返回目标指令的新的调用过程可能能够调用旧式过程(例如,旧式共享的函数库的过程),并仍能够利用此处所公开的返回目标限制。例如,可以有来自旧式过程中的过程指令(例如,带有C3操作码的旧式RET指令)的旧式返回,来自过程指令的旧式返回之后的多个比特或一个或多个字节可以被用作或解释为RTR信息(例如,K值)。通常,在旧式返回指令(例如,C3RET指令)之后将有多个比特或一个或多个字节存在。例如,可以按块(例如,4KB的)分配存储器。返回指令可以在这些块内的某处。通常,在返回指令之后将有某些字节,除非返回指令正巧是块的最后一个字节,并且不分配下一块。例如,如果应用在地址0x50000处分配4KB,在地址0x51000分配另一4KB,并且返回指令处于地址50FFF处,那么,下一字节处于0x5100,并且此下一字节可以被用作RTR信息。相反,如果返回指令处于0x51FFF,并且0x52000处的存储器的块未分配,那么,将不会有RTR信息的额外字节。即,在某些实施例中,在旧式过程(例如,库)中在来自过程指令的旧式返回之后多个比特或一个或多个字节可以被用作RTR信息。新的调用过程可以具有带有互补的RTR信息的新颖的返回目标指令。
系统软件(在控制保护错误时被调用)可以处理某些情况。例如,系统软件还可以处理旧式返回指令出现在代码空间的末尾处以及将存在于RET之后的虚拟地址空间的字节不被映射到物理存储器的情况。系统软件还可以处理库具有内部返回的情况,是旧式库正在丢失内部返回目标指令,诸如,例如,通过查询白名单或使用其他逻辑。在某些实施例中,系统软件(例如,操作系统)可以具有认识到旧过程正在被调用的策略,并可以允许此处所公开的限制性的控制中的某些被忽略。
示例性核架构、处理器和计算机架构
处理器核可以用出于不同目的的不同方式在不同的处理器中实现。例如,这样的核的实现可以包括:1)旨在用于通用计算的通用有序核;2)预期用于通用计算的高性能通用无序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用无序核的CPU;以及2)包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核的协处理器。这样的不同处理器导致不同的计算机系统架构,其可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,这样的协处理器有时被称为诸如集成图形和/或科学(吞吐量)逻辑等专用逻辑,或被称为专用核);以及4)可以将所描述的CPU(有时被称为应用核或应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上的芯片上系统。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
示例性核架构
有序和无序核框图
图9A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的无序发布/执行流水线的框图。图9B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架构核的框图。图9A-B中的实线框示出有序流水线和有序核,而任选增加的虚线框示出寄存器重命名的无序发布/执行流水线和核。给定有序方面是无序方面的子集的情况下,将描述无序方面。
在图9A中,处理器流水线900包括获取级902、长度解码级904、解码级906、分配级909、重命名级910、调度(也被称为指派或发布)级912、寄存器读取/存储器读取级914、执行级916、写回/存储器写入级919、异常处理级922、提交级924。
图9B示出了包括耦合到执行引擎单元950的前端单元930的处理器核990,且执行引擎单元和前端单元两者都耦合到存储器单元970。核990可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为又一选项,核990可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理器单元(GPGPU)核、或图形核等等。
前端单元930包括耦合到指令缓存单元934的分支预测单元932,该指令缓存单元耦合到指令转换后备缓冲器(TLB)936,该指令转换后备缓冲器耦合到指令获取单元939,指令获取单元耦合到解码单元940。解码单元940(或解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元940可使用各种不同的机制来实现。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核990包括(例如,在解码单元940中或否则在前端单元930内的)用于存储某些宏指令的微代码的微代码ROM或其他介质。解码单元940耦合到执行引擎单元950中的重命名/分配单元952。
执行引擎单元950包括重命名/分配器单元952,该重命名/分配器单元耦合至引退单元954和一个或多个调度器单元956的集合。调度器单元956表示任何数目的不同调度器,包括预留站、中央指令窗等。调度器单元956耦合到物理寄存器组单元959。每个物理寄存器组单元959表示一个或多个物理寄存器组,其中不同的物理寄存器组存储一种或多种不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩浮点、矢量整数、矢量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器组单元959包括矢量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构矢量寄存器、矢量掩码寄存器、和通用寄存器。物理寄存器组单元959与引退单元954重叠以示出可以用来实现寄存器重命名和无序执行的各种方式(例如,使用重新排序缓冲器和引退寄存器组;使用将来的文件、历史缓冲器和引退寄存器组;使用寄存器映射和寄存器池等等)。引退单元954和物理寄存器组单元959耦合到执行群集960。执行群集960包括一个或多个执行单元962的集合和一个或多个存储器访问单元964的集合。执行单元962可以对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、矢量整型、矢量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但其他实施例可包括全部执行所有功能的仅一个执行单元或多个执行单元。调度器单元956、物理寄存器组单元959和执行群集960被示为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整型流水线、标量浮点/打包整型/打包浮点/矢量整型/矢量浮点流水线,和/或各自具有其自己的调度器单元、物理寄存器组单元和/或执行群集的存储器访问流水线——以及在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行群集具有存储器访问单元964的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以为无序发布/执行,并且其余流水线可以为有序发布/执行。
存储器访问单元964的集合耦合到存储器单元970,该存储器单元包括耦合到数据缓存单元974的数据TLB单元972,其中数据缓存单元耦合到二级(L2)缓存单元976。在一个示例性实施例中,存储器访问单元964可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元970中的数据TLB单元972。指令缓存单元934还耦合到存储器单元970中的二级(L2)缓存单元976。L2缓存单元976耦合到一个或多个其他级的缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的、无序发布/执行核架构可以如下实现流水线900:1)指令获取939执行获取和长度解码级902和904;2)解码单元940执行解码级906;3)重命名/分配器单元952执行分配级909和重命名级910;4)调度器单元956执行调度级912;5)物理寄存器组单元959和存储器单元970执行寄存器读取/存储器读取级914;执行群集960执行执行级916;6)存储器单元970和物理寄存器组单元959执行写回/存储器写入级919;7)各单元可牵涉到异常处理级922;以及8)引退单元954和物理寄存器组单元959执行提交级924。
核990可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼州桑尼维尔市的ARM控股的ARM指令集(具有诸如NEON等可选附加扩展)),其中包括本文中描述的各指令。在一个实施例中,核990包括支持打包数据指令集合扩展(例如,AVX1、AVX2)的逻辑,由此允许被许多多媒体应用使用的操作将使用打包数据来执行。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程化(其中单个物理核为物理核正在同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分获取和解码以及此后诸如用超线程化技术来同步多线程化)。
尽管在无序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所示出的处理器的实施例还包括分开的指令和数据缓存单元934/974以及共享L2缓存单元976,但替代实施例可以具有用于指令和数据两者的单个内部缓存,诸如例如一级(L1)内部缓存或多个级别的内部缓存。在一些实施例中,该系统可包括内部缓存和在核和/或处理器外部的外部缓存的组合。或者,所有缓存都可以在核和/或处理器的外部。
具体的示例性有序核架构
图10A-B示出了更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其他核)。根据应用,这些逻辑块通过高带宽的互连网络(例如,环形网络)与一些固定的功能逻辑、存储器I/O接口和其它必要的I/O逻辑通信。
图10A是根据本发明的各实施例的单个处理器核以及它与管芯上互连网络1002的连接及其二级(L2)缓存的本地子集1004的框图。在一个实施例中,指令解码器1000支持具有紧缩数据指令集扩展的x86指令集。L1缓存1006允许对进入标量和矢量单元中的缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元1008和矢量单元1010使用分开的寄存器集合(分别为标量寄存器1012和矢量寄存器1014),并且在这些寄存器之间转移的数据被写入到存储器并随后从一级(L1)缓存1006读回,但是本发明的替代实施例可以使用不同的方法(例如使用单个寄存器集合或包括允许数据在这两个寄存器组之间传输而无需被写入和读回的通信路径)。
L2缓存的本地子集1004是全局L2缓存的一部分,该全局L2缓存被划分成多个分开的本地子集,即每个处理器核一个本地子集。每个处理器核具有到其自己的L2缓存的本地子集1004的直接访问路径。被处理器核读出的数据被存储在其L2缓存的本地子集1004中,并且可以与其他处理器核访问其自己的本地L2缓存子集并行地被快速访问。被处理器核写入的数据被存储在其自己的L2缓存的本地子集1004中,并在必要的情况下从其它子集清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2缓存和其它逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012位宽。
图10B是根据本发明的实施例的图10A中的处理器核的一部分的展开图。图10B包括L1缓存的L1数据缓存1006A,以及关于矢量单元1010和矢量寄存器1014的更多细节。具体地说,矢量单元1010是16宽矢量处理单元(VPU)(见16宽ALU 1028),该单元执行整型、单精度浮点以及双精度浮点指令中的一个或多个。该VPU通过混合单元1020支持对寄存器输入的混合、通过数值转换单元1022A-B支持数值转换、并通过复制单元1024支持对存储器输入的复制。写掩码寄存器1026允许断言所得的矢量写入。
具有集成存储器控制器和图形器件的处理器
图11是根据本发明的各实施例可能具有一个以上核、可能具有集成存储器控制器、以及可能具有集成图形器件的处理器1100的框图。图11的实线框示出了处理器1100,处理器1100具有单个核1102A、系统代理1110、一组一个或多个总线控制器单元1116,而可选附加的虚线框示出了替代的处理器1100,具有多个核1102A-N、系统代理单元1110中的一组一个或多个集成存储器控制器单元1114以及专用逻辑1108。
因此,处理器1100的不同实现可包括:1)CPU,其中专用逻辑1108是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1102A-N是一个或多个通用核(例如,通用的有序核、通用的无序核、这两者的组合);2)协处理器,其中核1102A-N是旨在主要用于图形和/或科学(吞吐量)的多个专用核;以及3)协处理器,其中核1102A-N是多个通用有序核。因此,处理器1100可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、或嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器1100可以是一个或多个衬底的一部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS等的多个加工技术中的任何一个技术将该处理器实现在一个或多个衬底上。
存储器层次结构包括在各核内的一个或多个级别的缓存、一个或多个共享缓存单元1106的集合、以及耦合至集成存储器控制器单元1114的集合的外部存储器(未示出)。该共享缓存单元1106的集合可以包括一个或多个中间级缓存,诸如二级(L2)、三级(L3)、四级(L4)或其他级别的缓存、末级缓存(LLC)、和/或其组合。尽管在一个实施例中,基于环的互连单元1112将专用逻辑1108、共享缓存单元1106的集合以及系统代理单元1110/集成存储器控制器单元1114互连,但替代实施例可使用任何数量的公知技术来将这些单元互连。在一个实施例中,可以维护一个或多个缓存单元1104A-N和核1102A-N之间的一致性(coherency)。
在一些实施例中,核1102A-N中的一个或多个核能够多线程化。系统代理1110包括协调和操作核1102A-N的那些组件。系统代理单元1110可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括用于调整核1102A-N和专用逻辑1108的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1102A-N在架构指令集方面可以是同构的或异构的;即,这些核1102A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
示例性计算机架构
图12-15是示例性计算机架构的框图。本领域已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含本文中所公开的处理器和/或其它执行逻辑的多个系统和电子设备一般都是合适的。
现在参见图12,所示为根据本发明的一个实施例的系统1200的框图。系统1200可以包括一个或多个处理器1210、1215,这些处理器耦合到控制器中枢1220。在一个实施例中,控制器中枢1220包括图形存储器控制器中枢(GMCH)1290和输入/输出中枢(IOH)1250(其可以在分开的芯片上);GMCH 1290包括存储器和图形控制器,存储器1240和协处理器1245耦合到该存储器和图形控制器;IOH 1250将输入/输出(I/O)设备1260耦合到GMCH1290。或者,存储器和图形控制器中的一个或两者可以被集成在处理器内(如本文中所描述的),存储器1240和协处理器1245直接耦合到处理器1210以及控制器中枢1220,控制器中枢1220与IOH 1250处于单个芯片中。
附加处理器1215的任选性质用虚线表示在图12中。每一处理器1210、1215可包括本文中描述的处理核中的一个或多个,并且可以是处理器1100的某一版本。
存储器1240可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢1220经由诸如前端总线(FSB)之类的多点总线(multi-drop bus)、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接1295与处理器1210、1215进行通信。
在一个实施例中,协处理器1245是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。在一个实施例中,控制器中枢1220可以包括集成图形加速器。
在处理器1210、1215之间可以存在包括架构、微架构、热、和功耗特征等的一系列品质度量方面的各种差异。
在一个实施例中,处理器1210执行控制一般类型的数据处理操作的指令。协处理器指令可嵌入在这些指令中。处理器1210将这些协处理器指令识别为应当由附连的协处理器1245执行的类型。因此,处理器1210在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1245。协处理器1245接受并执行所接收的协处理器指令。
现在参考图13,所示为根据本发明的一实施例的更具体的第一示例性系统1300的框图。如图13所示,多处理器系统1300是点对点互连系统,且包括经由点对点互连1350耦合的第一处理器1370和第二处理器1380。处理器1370和1380中的每一个都可以是处理器1100的某一版本。在本发明的一个实施例中,处理器1370和1380分别是处理器1210和1215,而协处理器1338是协处理器1245。在另一实施例中,处理器1370和1380分别是处理器1210和协处理器1245。
处理器1370和1380被示为分别包括集成存储器控制器(IMC)单元1372和1382。处理器1370还包括作为其总线控制器单元的一部分的点对点(P-P)接口1376和1378;类似地,第二处理器1380包括点对点接口1386和1388。处理器1370、1380可以使用点对点(P-P)接口电路1378、1388经由P-P接口1350来交换信息。如图13所示,IMC 1372和1382将各处理器耦合至相应的存储器,即存储器1332和存储器1334,这些存储器可以是本地附连至相应的处理器的主存储器的部分。
处理器1370、1380可各自经由使用点对点接口电路1376、1394、1386、1398的各个P-P接口1352、1354与芯片组1390交换信息。芯片组1390可以可选地经由高性能接口1339与协处理器1338交换信息。在一个实施例中,协处理器1338是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。
共享缓存(未示出)可以被包括在任一处理器之内,或被包括在两个处理器外部但仍经由P-P互连与这些处理器连接,从而如果将某处理器置于低功率模式时,可将任一处理器或两个处理器的本地缓存信息存储在该共享缓存中。
芯片组1390可经由接口1396耦合至第一总线1316。在一个实施例中,第一总线1316可以是外围组件互连(PCI)总线,或诸如PCI Express总线或其它第三代I/O互连总线之类的总线,但本发明的范围并不受此限制。
如图13所示,各种I/O设备1314可以连同总线桥1318耦合到第一总线1316,总线桥将第一总线1316耦合至第二总线1320。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的处理器、加速器(诸如例如图形加速器或数字信号处理器(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器1315被耦合到第一总线1316。在一个实施例中,第二总线1320可以是低引脚计数(LPC)总线。各种设备可以被耦合至第二总线1320,在一个实施例中这些设备包括例如键盘/鼠标1322、通信设备1327以及诸如可包括指令/代码和数据1330的盘驱动器或其它大容量存储设备的存储单元1328。此外,音频I/O1324可以被耦合至第二总线1320。注意,其它架构是可能的。例如,代替图13的点对点架构,系统可实现多分支总线或者其他此类架构。
现在参考图14,所示为根据本发明的实施例的更具体的第二示例性系统1400的框图。图13和14中的类似元件使用类似附图标记,且在图13中省略了图13的某些方面以避免混淆图14的其它方面。
图14示出处理器1370、1380可分别包括集成存储器和I/O控制逻辑(“CL”)1372和1382。因此,CL 1372、1382包括集成存储器控制器单元并包括I/O控制逻辑。图14示出:不仅存储器1332、1334耦合至CL 1372、1382,I/O设备1414也耦合至控制逻辑1372、1382。传统I/O设备1415被耦合至芯片组1390。
现在参考图15,所示为根据本发明的一实施例的SoC 1500的框图。图11中的类似元件具有相似的附图标记。另外,虚线框是更先进的SoC的可选特征。在图15中,互连单元1502耦合至:应用处理器1510,该应用处理器包括一个或多个核1102A-N的集合以及共享缓存单元1106;系统代理单元1110;总线控制器单元1116;集成存储器控制器单元1114;一组或一个或多个协处理器1520,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1530;直接存储器存取(DMA)单元1532;以及用于耦合至一个或多个外部显示器的显示单元1540。在一个实施例中,协处理器1520包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如图13中示出的代码和数据1330中包含的代码)应用于输入指令,以执行本文描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,指令表示处理器中的各种逻辑,指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。被称为“IP核”的这些表示可以被存储在有形的机器可读介质上,并被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
这样的机器可读存储介质可以包括但不限于通过机器或设备制造或形成的物品的非瞬态的有形安排,其包括存储介质,诸如:硬盘;任何其它类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
因此,本发明的各实施例还包括非瞬态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
仿真(包括二进制变换、代码变形等)
在一些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图16是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图16示出可以使用x86编译器1604来编译利用高级语言1602的程序,以生成可以由具有至少一个x86指令集核的处理器1616原生执行的x86二进制代码1606。具有至少一个x86指令集核的处理器1616表示任何处理器,这些处理器能通过兼容地执行或以其他方式处理以下内容来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它程序的目标代码版本,以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86编译器1604表示用于生成x86二进制代码1606(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器1616上执行。类似地,图16示出可以使用替代的指令集编译器1608来编译利用高级语言1602的程序,以生成可以由不具有至少一个x86指令集核的处理器1614(例如具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代指令集二进制代码1610。指令转换器1612被用来将x86二进制代码1606转换成可以由不具有x86指令集核的处理器1614原生执行的代码。该转换后的代码不大可能与替代性指令集二进制代码1610相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替代指令集的指令构成。因此,指令转换器1612通过仿真、模拟或任何其它过程来表示允许不具有x86指令集处理器或核的处理器或其它电子设备执行x86二进制代码1606的软件、固件、硬件或其组合。
针对此处所描述的任一装置所描述的组件、特征、以及细节还可任选地用于本文中所描述的可由这种装置和/或使用这种装置执行的任一方法中。此处所描述的处理器中的任何一个都可以被包括在此处所公开的计算机系统或其他系统中的任何一个中。在某些实施例中,指令可以具有此处所公开的指令格式的特征或细节,虽然这不是必需的。
在该描述和权利要求中,使用了术语“耦合”和/或“连接”、及其派生词。这些术语不旨在互为同义词。相反,在具体实施例中,“连接的”用于指示两个或更多元件彼此直接物理或电接触。“耦合”可表示两个或更多个元件彼此直接物理和/或电气接触。然而,“耦合的”也可表示两个或更多个元件并未彼此直接接触,但是仍然彼此协作、彼此作用。例如,返回目标限制单元可以通过一个或多个中间组件与解码单元耦合。在附图中,箭头用于示出连接和耦合。
术语“和/或”可能已被使用。如本文中所使用的,术语“和/或”意指一个或其他或两者(例如,A和/或B意指A或B或者A和B两者)。
在以上描述中,为了提供对实施例的透彻理解阐述了具体的细节。然而,在没有这些具体细节中的部分的情况下,可实践其他实施例。本发明的范围不是由所提供的具体示例确定,而是仅由所附权利要求确定。在其它实例中,以方框图形式而非以细节地示出了公知的电路、结构、设备和操作以避免使说明书的理解变得晦涩。在认为适宜之处,附图标记或附图标记的结尾部分在诸附图当中被重复以指示可选地具有类似特性或相同特征的对应或类似的要素,除非以其他方式来指定或显而易见。
已描述了各种操作和方法。已经以流程图方式以相对基础的方式对一些方法进行了描述,但这些操作可选择地被添加至这些方法和/或从这些方法中移去。另外,尽管流程图示出根据各实施例的操作的特定顺序,但该特定顺序是示例性的。替换实施例可以以不同方式执行这些操作、组合某些操作、交错某些操作等。
特定操作可由硬件组件执行,或者可以机器可执行或电路可执行指令体现,这些操作可用于使得和/或者导致机器、电路、或硬件组件(例如,处理器、处理器的一部分、电路等)通过执行操作的指令来编程。这些操作还可任选地由硬件和软件的组合执行。处理器、机器、电路、或硬件可包括可操作用于执行和/或处理指令且响应于该指令存储结果的专用或特定电路或者其他逻辑(例如,可能与固件和/或软件组合的硬件)。
某些实施例包括制品(例如,计算机程序产品),所述制品包括机器可读介质。该介质可包括以机器可读的形式提供(例如,存储)信息的机制。机器可读介质可提供指令或指令顺序或者在其上存储了指令或者令顺序,该指令如果由机器执行和/或在由机器执行时可操作用于使机器执行和/或导致机器执行本文中所公开的一种或多种操作、方法、或技术。机器可读介质可存储或以别的方式提供本文中所公开的指令的一个或多个实施例。
在某些实施例中,机器可读介质可包括有形的和/或无形的机器可读存储介质。例如,有形的和/或无形的机器可读存储介质可包括软盘、光存储介质、光盘、光学数据存储设备、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存、相变化存储器、相变化数据存储材料、非易失性存储器、非易失性数据存储设备、非瞬时存储器、或非瞬时数据存储设备等。非瞬态机器可读存储介质不由瞬态传播的信号组成。
合适机器的示例包括但不限于,通用处理器、专用处理器、指令处理装置、数字逻辑电路、集成电路等。合适的机器的其他示例包括其中包括处理器、指令处理装置、数字逻辑电路或集成电路的计算设备和其他电子设备。这样的计算设备和电子设备的示例包括但不限于台式机、膝上型计算机、笔记本电脑、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络设备(例如,路由器和交换机)、移动网络设备(MID)、媒体播放器、智能电视、迷你桌上型设备、机顶盒和视频游戏控制器。
例如,贯穿本说明书对“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施例”的引用指示特定特征可被包括在本发明的实践中,但是不一定需要这样。类似地,在该描述中,出于流线型化本公开和辅助对各个发明性方面的理解的目的,各种特征有时被一起归组在单一实施例、附图、及其描述中。然而,该公开方法不应被解释成反映本发明需要比每项权利要求中所明确记载的更多特征的意图。相反,如所附权利要求反映的,发明性方面在于少于单一公开的实施例的所有特征。因此,所附权利要求因此被明确纳入该说明书中,每一项权利要求独自作为本发明单独的实施例。
示例实施例
以下示例关于进一步的实施例。这些示例中的细节可以在一个或多个实施例的任何地方被使用。
示例1是包括解码来自过程(RTR返回)指令的返回目标限制性的返回的解码单元的处理器。处理器还包括与解码单元耦合的返回目标限制单元,并响应于RTR返回指令,判断是否限制由RTR返回指令作出向对应于RTR返回指令的返回地址处的指令的控制流程转移的企图。判断基于返回地址处的指令的类型与RTR返回指令的兼容性,并基于RTR返回指令的第一返回目标限制性的信息(RTR信息)的与返回地址处的指令的第二RTR信息的兼容性。处理器还包括与返回目标限制单元和解码单元耦合的控制流程转移单元,控制流程转移单元响应于RTR返回指令,当返回目标限制单元确定不限制企图时,将控制流程转移到返回地址处的指令。
示例2包括示例1的处理器,其中,当对应于所述第一RTR信息的第一值匹配对应于所述第二RTR信息的第二值时,所述返回目标限制单元将确定不限制所述企图,当所述第一值不匹配所述第二值时,将确定限制所述企图。
示例3包括示例2的处理器,其中,当所述第一值等于所述第二值时,所述返回目标限制单元将确定不限制所述企图,当所述第一值不等于所述第二值时,将确定限制所述企图。
示例4包括示例1的处理器,其中,当所述返回地址处的所述指令的操作码不是对应于与所述RTR返回指令兼容的类型的全部指令的一组不超过五个操作码中的一个时,所述返回目标限制单元将确定限制所述企图。指令将用于标记RTR返回指令的潜在地允许的返回目标。
示例5包括示例1的处理器,其中,所述RTR返回指令具有提供所述第一RTR信息的立即数,并且其中,所述返回地址处的所述指令具有提供所述第二RTR信息的立即数。
示例6包括示例1到5中的任何一个的处理器,其中,当所述返回目标限制单元确定不限制所述企图时,所述处理器将执行所述返回地址处的所述指令作为空操作。
示例7包括示例1到5中的任何一个的处理器,其中,当所述返回目标限制单元确定限制所述企图时,所述返回目标限制单元将导致异常、错误以及中断中的一个。
示例8包括示例1的处理器,其中,所述解码单元将解码将具有与来自存在于所述RTR返回指令之前的指令集中的过程指令的旧式返回相同的立即数和操作码的所述RTR返回指令。来自过程指令的旧式返回最初导致由所述立即数指出的若干个字节从栈弹出。处理器将使用第一RTR信息的立即数。
示例9包括示例1的处理器,其中,所述解码单元将解码将具有与来自存在于所述RTR返回指令之前的指令集中的过程指令的旧式返回相同的立即数和操作码的所述RTR返回指令。处理器可任选地具有其中所述立即数将对应于所述第一RTR信息的第一模式和所述立即数将被忽略的第二模式。
示例10是包括接收来自过程(RTR返回)指令的返回目标限制性的返回的处理器中的方法。响应于所述RTR返回指令,限制由所述RTR返回指令作出向对应于所述RTR返回指令的返回地址处的指令的控制流程转移的企图。限制基于返回地址处的指令的类型不与RTR返回指令兼容的判断,以及由RTR返回指令指出的第一返回目标限制性的信息(RTR信息)不与由返回地址处的指令指出的第二RTR信息兼容的判断中的至少一项。
示例11包括示例10的方法,其中,所述限制基于所述RTR返回指令的所述RTR信息不等于所述返回地址处的所述指令的RTR信息的判断。
示例12包括示例10的方法,其中,所述限制基于所述返回地址处的所述指令的操作码不是对应于与所述RTR返回指令兼容的类型的全部指令的一组不超过五个操作码中的一个的判断。
示例13包括示例10的方法,其中,接收包括接收具有提供所述第一RTR信息的立即数的所述RTR返回指令。
示例14是包括接收第一类型的代码的代码接收模块的代码分析系统。代码分析模块与所述代码接收模块与耦合,以判断来自所述第一类型的所述代码中的过程(RTR返回)指令的全部返回目标限制性的返回是否只指出允许用于所述第一类型,但不允许一种或多种不同类型的代码的返回目标限制性的信息(RTR信息)。
示例15包括示例14的代码分析系统,其中,所述第一类型包括无特权的代码,所述一种或多种不同类型的代码包括有特权的代码。
示例16包括示例14的代码分析系统,其中,第一类型包括用户级别应用,一种或多种不同类型的代码包括用户级别库代码、设备驱动程序代码、系统级别库代码以及操作系统代码。
示例17包括示例14的代码分析系统,其中,所述代码分析模块将判断所述第一类型的所述代码中的全部RTR返回指令是否只指出第一范围内的RTR信息的值,其中,所述第一范围将与对应于所述一种或多种不同类型的代码的一个或多个其他范围互相排斥。
示例18包括示例14到17中的任何一个的代码分析系统,其中,代码分析模块包括数字分发平台的模块和操作系统模块。
示例19包括示例14到17中的任何一个的代码分析系统,其中,代码分析模块包括操作系统模块。
示例20是包括接收代码的代码接收模块的代码分析系统。系统还包括与所述代码接收模块耦合的代码分析模块,所述代码分析模块,对于至少一对互补的来自过程(RTR返回)和返回目标指令的返回目标限制性的返回,改变返回目标限制性的信息(RTR信息)。这是在使该对所述互补的RTR返回和返回目标指令的所述RTR信息保持互补时进行的。
示例21包括示例20的代码分析系统,其中,代码接收模块进一步接收指出所述代码中的多对互补的RTR返回和返回目标指令的元数据。代码分析模块将改变每一对互补的RTR返回和返回目标指令的RTR信息,同时使每一对互补的RTR返回和返回目标指令的RTR信息保持互补。
示例22包括示例20到21中的任何一个的代码分析系统,其中,代码分析模块包括操作系统模块。
示例23包括示例20到21中的任何一个的代码分析系统,其中,代码分析模块包括数字分发平台的模块。
示例24是处理指令的系统,该系统包括互连和与该互连耦合的处理器。该处理器将接收来自过程(RTR返回)指令的返回目标限制性的返回。处理器,响应于所述RTR返回指令,基于所述返回地址处的所述指令的类型与所述RTR返回指令不兼容和所述RTR返回指令的第一返回目标限制性的信息(RTR信息)与所述返回地址处的所述指令不兼容中的一项,确定限制由所述RTR返回指令作出向对应于所述RTR返回指令的返回地址处的指令的控制流程转移的企图。该系统还包括与所述互连耦合的动态随机存取存储器(DRAM)。
示例25包括示例24的系统,其中,处理器将基于RTR返回指令的立即数的值不等于所述返回地址处的所述指令的立即数的值,确定限制所述企图。处理器,响应于确定限制企图,可以导致错误和异常中的一个。
示例26是一种包括非瞬态机器可读存储介质的制品。非瞬态机器可读存储介质存储指令。指令,在由机器执行时,将导致机器执行下列各项操作:包括检查来自第一类型的代码中的过程(RTR返回)指令的所有返回目标限制性的返回的返回目标限制性的信息(RTR信息)。还判断第一类型的代码中的RTR返回指令是否只指出允许用于第一类型的代码但不允许用于一种或多种不同类型的代码的RTR信息。
示例27包括示例26的制品,其中,指令将导致机器判断第一类型的代码中的RTR指令是否只指出允许用于第一类型的代码,但不允许用于一种或多种不同类型的代码的第一范围内的值。
示例28是可操作以执行示例10-13中的任何一个的方法的处理器或其他设备。
示例29是一种包括用于执行示例10-13中的任一个的方法的装置的处理器或其他设备。
示例30是包括用于执行示例10-13中的任何一个的方法的模块、单元、逻辑、电路、装置,或其任何组合的处理器或其他设备。
示例31是包括机器可读取的介质(可任选地是非瞬时的机器可读的存储介质)的制品,所述存储介质可任选地存储或以别的方式提供指令,所述指令,在由处理器、计算机系统,或其他机器执行时,可操作,以导致机器执行示例10-13中的任何一个的方法。
示例32是一种计算机系统或其他电子设备,包括互连;与互连耦合的处理器;以及从动态随机存取存储器(DRAM)、图形芯片、无线通信芯片、相变存储器,以及视频摄像机中选择的与互连耦合的至少一个组件,计算机系统或其他电子设备可操作,以执行示例10-13中的任何一个的方法。
示例33是可操作以执行如此处所描述的一个或多个操作或任何方法的处理器或其他设备。
示例34是包括用于执行如此处所描述的一个或多个操作或任何方法的装置的处理器或其他设备。
示例35是用于执行如此处所描述的指令中的任何一个的处理器或其他设备。
示例36是包括用于执行如此处所描述的指令中的任何一个的装置的处理器或其他设备。
Claims (26)
1.一种处理器,包括:
解码单元,用于解码来自过程RTR返回指令的返回目标限制性的返回;
返回目标限制单元,所述返回目标限制单元与所述解码单元耦合,并响应于所述RTR返回指令,基于返回地址处的指令的类型与所述RTR返回指令的兼容性,并基于所述RTR返回指令的第一返回目标限制性的信息第一RTR信息的与所述返回地址处的所述指令的第二RTR信息的兼容性,判断是否限制由所述RTR返回指令作出向对应于所述RTR返回指令的所述返回地址处的指令的控制流程转移的企图;
控制流程转移单元,所述控制流程转移单元与所述返回目标限制单元和所述解码单元耦合,所述控制流程转移单元响应于所述RTR返回指令,当所述返回目标限制单元确定不限制所述企图时,将控制流程转移到所述返回地址处的所述指令。
2.如权利要求1所述的处理器,其特征在于,当对应于所述第一RTR信息的第一值匹配对应于所述第二RTR信息的第二值时,所述返回目标限制单元将确定不限制所述企图,当所述第一值不匹配所述第二值时,将确定限制所述企图。
3.如权利要求2所述的处理器,其特征在于,当所述第一值等于所述第二值时,所述返回目标限制单元将确定不限制所述企图,当所述第一值不等于所述第二值时,将确定限制所述企图。
4.如权利要求1所述的处理器,其特征在于,当所述返回地址处的所述指令的操作码不是对应于与所述RTR返回指令兼容的类型的全部指令的一组不超过五个操作码中的一个时,所述返回目标限制单元将确定限制所述企图,所述指令用于标记所述RTR返回指令的潜在地允许的返回目标。
5.如权利要求1所述的处理器,其特征在于,所述RTR返回指令具有提供所述第一RTR信息的立即数,并且其中所述返回地址处的所述指令具有提供所述第二RTR信息的立即数。
6.如权利要求1到5中任一权利要求所述的处理器,其特征在于,当所述返回目标限制单元确定不限制所述企图时,所述处理器将执行所述返回地址处的所述指令作为空操作。
7.如权利要求1到5中任一权利要求所述的处理器,其特征在于,当所述返回目标限制单元确定限制所述企图时,所述返回目标限制单元将导致异常、错误以及中断中的一个。
8.如权利要求1所述的处理器,其特征在于,所述解码单元将解码将具有与来自存在于所述RTR返回指令之前的指令集中的过程指令的旧式返回相同的立即数和操作码的所述RTR返回指令,其中来自过程指令的所述旧式返回最初导致由所述立即数指出的若干个字节从栈弹出,其中所述处理器将使用所述第一RTR信息的所述立即数。
9.如权利要求1所述的处理器,其特征在于,所述解码单元将解码将具有与来自存在于所述RTR返回指令之前的指令集中的过程指令的旧式返回相同的立即数和操作码的所述RTR返回指令,其中所述处理器具有其中所述立即数对应于所述第一RTR信息的第一模式和所述立即数将被忽略的第二模式。
10.一种在处理器中的方法,包括:
接收来自过程RTR返回指令的返回目标限制性的返回;以及
响应于所述RTR返回指令,基于下列各项中的至少一项,限制由所述RTR返回指令作出向对应于所述RTR返回指令的返回地址处的指令的控制流程转移的企图:
判断所述返回地址处的所述指令的类型不与所述RTR返回指令兼容;以及
判断由所述RTR返回指令指出的第一返回目标限制性的信息第一RTR信息不与由所述返回地址处的所述指令指出的第二RTR信息兼容。
11.如权利要求10所述的方法,其特征在于,所述限制基于所述RTR返回指令的RTR信息不等于所述返回地址处的所述指令的RTR信息的判断。
12.如权利要求10所述的方法,其特征在于,所述限制基于所述返回地址处的所述指令的操作码不是对应于与所述RTR返回指令兼容的类型的全部指令的一组不超过五个操作码中的一个的判断。
13.如权利要求10所述的方法,其特征在于,接收包括接收具有提供所述第一RTR信息的立即数的所述RTR返回指令。
14.一种处理指令的系统,包括:
互连;
与所述互连耦合的处理器,所述处理器接收来自过程RTR返回指令的返回目标限制性的返回,所述处理器,响应于所述RTR返回指令,基于返回地址处的所述指令的类型与所述RTR返回指令不兼容和所述RTR返回指令的第一返回目标限制性的信息第一RTR信息与所述返回地址处的所述指令不兼容中的一项,确定限制由所述RTR返回指令作出向对应于所述RTR返回指令的所述返回地址处的指令的控制流程转移的企图;以及
与所述互连耦合的动态随机存取存储器DRAM。
15.如权利要求14所述的系统,其特征在于,所述处理器将基于所述RTR返回指令的立即数的值不等于所述返回地址处的所述指令的立即数的值,确定限制所述企图,其中响应于确定限制所述企图的所述处理器将导致错误和异常中的一项。
16.一种代码分析系统,包括:
代码接收模块,用于接收第一类型的代码;
代码分析模块,所述代码分析模块与所述代码接收模块耦合,以判断来自所述第一类型的所述代码中的过程RTR返回指令的全部返回目标限制性的返回是否只指出允许用于所述第一类型的返回目标限制性的信息RTR信息但不允许一种或多种不同类型的代码的返回目标限制性的信息RTR信息。
17.如权利要求16所述的代码分析系统,其特征在于,所述第一类型包括无特权的代码,所述一种或多种不同类型的代码包括有特权的代码。
18.如权利要求16所述的代码分析系统,其特征在于,所述第一类型包括用户级别的应用,所述一种或多种不同类型的代码包括多个用户级别的库代码、设备驱动程序代码、系统级别的库代码以及操作系统代码。
19.如权利要求16所述的代码分析系统,其特征在于,所述代码分析模块将判断所述第一类型的所述代码中的全部RTR返回指令是否只指出第一范围内的RTR信息的值,其中所述第一范围将与对应于所述一种或多种不同类型的代码的一个或多个其他范围互相排斥。
20.一种代码分析系统,包括:
代码接收模块,用于接收代码;
与所述代码接收模块耦合的代码分析模块,所述代码分析模块,对于至少一对互补的来自过程RTR返回和返回目标指令的返回目标限制性的返回,改变返回目标限制性的信息RTR信息,同时使该对所述互补的RTR返回和返回目标指令的所述RTR信息保持互补。
21.如权利要求20所述的代码分析系统,其特征在于,所述代码接收模块进一步接收指出所述代码中的多对互补的RTR返回和返回目标指令的元数据,其中所述代码分析模块将更改每一对互补的RTR返回和返回目标指令的RTR信息,同时使每一对互补的RTR返回和返回目标指令的所述RTR信息保持互补。
22.一种处理器,包括:
用于接收来自过程RTR返回指令的返回目标限制性的返回的装置;以及
用于响应于所述RTR返回指令,基于下列各项中的至少一项,限制由所述RTR返回指令作出向对应于所述RTR返回指令的返回地址处的指令的控制流程转移的企图的装置:
判断所述返回地址处的所述指令的类型不与所述RTR返回指令兼容;以及
判断由所述RTR返回指令指出的第一返回目标限制性的信息第一RTR信息不与由所述返回地址处的所述指令指出的第二RTR信息兼容。
23.如权利要求22所述的处理器,其特征在于,用于限制的所述装置包括用于基于所述RTR返回指令的RTR信息不等于所述返回地址处的所述指令的RTR信息的判断进行限制的装置。
24.如权利要求22所述的处理器,其特征在于,用于限制的所述装置包括用于基于所述返回地址处的所述指令的操作码不是对应于与所述RTR返回指令兼容的类型的全部指令的一组不超过五个操作码中的一个的判断进行限制的装置。
25.如权利要求22所述的处理器,其特征在于,所述用于接收的装置包括用于接收具有提供所述第一RTR信息的立即数的所述RTR返回指令的装置。
26.一种非瞬态机器可读存储介质,存储有指令,如果由机器执行所述指令可操作来使得所述机器执行如权利要求10到13中任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/229,822 US9703948B2 (en) | 2014-03-28 | 2014-03-28 | Return-target restrictive return from procedure instructions, processors, methods, and systems |
US14/229,822 | 2014-03-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104951697A CN104951697A (zh) | 2015-09-30 |
CN104951697B true CN104951697B (zh) | 2018-07-03 |
Family
ID=52630844
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510091513.2A Active CN104951697B (zh) | 2014-03-28 | 2015-02-28 | 来自过程指令的返回-目标限制性返回、处理器、方法及系统 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9703948B2 (zh) |
JP (1) | JP5961288B2 (zh) |
KR (1) | KR101691719B1 (zh) |
CN (1) | CN104951697B (zh) |
DE (1) | DE102015002124A1 (zh) |
GB (1) | GB2524618B (zh) |
TW (1) | TWI590096B (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101882255B1 (ko) | 2014-07-25 | 2018-07-26 | 소프트 머신즈, 인크. | 변환 룩 어사이드 버퍼를 사용한 명령어 집합의 애그노스틱 런타임 아키텍처 구현 |
US9733909B2 (en) | 2014-07-25 | 2017-08-15 | Intel Corporation | System converter that implements a reordering process through JIT (just in time) optimization that ensures loads do not dispatch ahead of other loads that are to the same address |
US10353680B2 (en) * | 2014-07-25 | 2019-07-16 | Intel Corporation | System converter that implements a run ahead run time guest instruction conversion/decoding process and a prefetching process where guest code is pre-fetched from the target of guest branches in an instruction sequence |
US11281481B2 (en) | 2014-07-25 | 2022-03-22 | Intel Corporation | Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture |
US9904780B2 (en) * | 2014-07-31 | 2018-02-27 | Nec Corporation | Transparent detection and extraction of return-oriented-programming attacks |
WO2016041592A1 (en) * | 2014-09-17 | 2016-03-24 | Irdeto B.V. | Generating and executing protected items of software |
US9501637B2 (en) * | 2014-09-26 | 2016-11-22 | Intel Corporation | Hardware shadow stack support for legacy guests |
JP6435834B2 (ja) * | 2014-12-12 | 2018-12-12 | 富士通株式会社 | 命令実行制御装置、命令実行制御方法 |
US20160381050A1 (en) | 2015-06-26 | 2016-12-29 | Intel Corporation | Processors, methods, systems, and instructions to protect shadow stacks |
US9767292B2 (en) | 2015-10-11 | 2017-09-19 | Unexploitable Holdings Llc | Systems and methods to identify security exploits by generating a type based self-assembling indirect control flow graph |
US10437998B2 (en) * | 2015-10-26 | 2019-10-08 | Mcafee, Llc | Hardware heuristic-driven binary translation-based execution analysis for return-oriented programming malware detection |
US10394556B2 (en) | 2015-12-20 | 2019-08-27 | Intel Corporation | Hardware apparatuses and methods to switch shadow stack pointers |
US10430580B2 (en) | 2016-02-04 | 2019-10-01 | Intel Corporation | Processor extensions to protect stacks during ring transitions |
CN105825086B (zh) * | 2016-03-16 | 2018-07-24 | 西北大学 | 一种基于攻击树的rop防护方法 |
RU2634172C1 (ru) * | 2016-06-02 | 2017-10-24 | Акционерное общество "Лаборатория Касперского" | Способ передачи управления между адресными пространствами |
US9948185B2 (en) * | 2016-06-10 | 2018-04-17 | Dialog Semiconductor (Uk) Limited | Fast-transient switching converter with type III compensation |
US10423792B2 (en) * | 2016-09-23 | 2019-09-24 | Red Hat, Inc. | Identifying exploitable code sequences |
US10395033B2 (en) * | 2016-09-30 | 2019-08-27 | Intel Corporation | System, apparatus and method for performing on-demand binary analysis for detecting code reuse attacks |
CN112506568A (zh) | 2016-12-31 | 2021-03-16 | 英特尔公司 | 用于异构计算的系统、方法和装置 |
US10607003B2 (en) | 2017-06-29 | 2020-03-31 | International Business Machines Corporation | Mitigation of code reuse attacks by restricted indirect branch instruction |
US11093605B2 (en) * | 2018-06-28 | 2021-08-17 | Cisco Technology, Inc. | Monitoring real-time processor instruction stream execution |
KR20210145738A (ko) * | 2019-03-05 | 2021-12-02 | 씨2에이-에스이씨, 엘티디. | 반환 지향형 프로그래밍 보호 |
CN110378117B (zh) * | 2019-06-21 | 2022-12-30 | 华为技术有限公司 | 控制流完整性检测方法、装置及系统 |
IT202100002642A1 (it) | 2021-02-05 | 2022-08-05 | Sk Hynix Inc | Metodo implementato da un microcontrollore per gestire una istruzione nop e microcontrollore corrispondente |
US12111913B2 (en) * | 2021-09-26 | 2024-10-08 | Ceremorphic, Inc. | Core processor and redundant branch processor with control flow attack detection |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1397875A (zh) * | 2001-05-04 | 2003-02-19 | 智慧第一公司 | 双调用/返回堆栈分支预测系统 |
CN1560734A (zh) * | 2004-03-09 | 2005-01-05 | 中国人民解放军国防科学技术大学 | 双栈返回地址预测器设计方法 |
CN101727312A (zh) * | 2009-01-22 | 2010-06-09 | 杭州中天微系统有限公司 | 一种支持自动纠错功能的返回地址栈实现方法 |
CN101819522A (zh) * | 2009-03-04 | 2010-09-01 | 威盛电子股份有限公司 | 微处理器以及相关指令解析的方法 |
US8141163B2 (en) * | 2007-07-31 | 2012-03-20 | Vmware, Inc. | Malicious code detection |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09198258A (ja) | 1996-01-19 | 1997-07-31 | Nec Corp | タスクスタックオーバーフロー検出回路 |
GB9825102D0 (en) * | 1998-11-16 | 1999-01-13 | Insignia Solutions Plc | Computer system |
JP3552627B2 (ja) | 2000-02-04 | 2004-08-11 | インターナショナル・ビジネス・マシーンズ・コーポレーション | スタック保護システム、コンピュータシステム、コンパイラ、スタック保護方法および記憶媒体 |
KR20030088892A (ko) | 2001-02-06 | 2003-11-20 | 애더란트 테크놀로지스 비.브이. | 인터럽트를 핸들링하기 위한 방법 및 장치 |
KR100505106B1 (ko) | 2002-05-29 | 2005-07-29 | 삼성전자주식회사 | 강화된 보안 기능을 갖춘 스마트 카드 |
US7603704B2 (en) * | 2002-12-19 | 2009-10-13 | Massachusetts Institute Of Technology | Secure execution of a computer program using a code cache |
EP1662379A4 (en) | 2003-09-04 | 2008-12-03 | Science Park Corp | FALSE COORDINATE PROCEDURE AND PREVENTION PROGRAM |
US20050138263A1 (en) * | 2003-12-23 | 2005-06-23 | Mckeen Francis X. | Method and apparatus to retain system control when a buffer overflow attack occurs |
US20050154859A1 (en) * | 2004-01-14 | 2005-07-14 | Arm Limited | Branch prediction in a data processing apparatus |
US7552477B1 (en) * | 2005-02-23 | 2009-06-23 | Symantec Corporation | Detecting return-to-LIBC buffer overflows via dynamic disassembly of offsets |
US8341383B2 (en) | 2007-11-02 | 2012-12-25 | Qualcomm Incorporated | Method and a system for accelerating procedure return sequences |
JP2009230479A (ja) | 2008-03-24 | 2009-10-08 | Toshiba Microelectronics Corp | マイクロプロセッサ |
US8689201B2 (en) | 2010-01-27 | 2014-04-01 | Telcordia Technologies, Inc. | Automated diversity using return oriented programming |
CA2704863A1 (en) | 2010-06-10 | 2010-08-16 | Ibm Canada Limited - Ibm Canada Limitee | Injection attack mitigation using context sensitive encoding of injected input |
US20120151184A1 (en) | 2010-12-10 | 2012-06-14 | Daniel Shawcross Wilkerson | Hard object: constraining control flow and providing lightweight kernel crossings |
US8997218B2 (en) | 2010-12-22 | 2015-03-31 | F-Secure Corporation | Detecting a return-oriented programming exploit |
US8776223B2 (en) * | 2012-01-16 | 2014-07-08 | Qualcomm Incorporated | Dynamic execution prevention to inhibit return-oriented programming |
US9122792B2 (en) * | 2013-05-17 | 2015-09-01 | International Business Machines Corporation | Step over operation for machine code function calls |
-
2014
- 2014-03-28 US US14/229,822 patent/US9703948B2/en active Active
-
2015
- 2015-01-15 JP JP2015005715A patent/JP5961288B2/ja not_active Expired - Fee Related
- 2015-01-20 GB GB1500925.1A patent/GB2524618B/en active Active
- 2015-02-13 TW TW104105065A patent/TWI590096B/zh not_active IP Right Cessation
- 2015-02-19 DE DE102015002124.9A patent/DE102015002124A1/de active Pending
- 2015-02-25 KR KR1020150026812A patent/KR101691719B1/ko active IP Right Grant
- 2015-02-28 CN CN201510091513.2A patent/CN104951697B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1397875A (zh) * | 2001-05-04 | 2003-02-19 | 智慧第一公司 | 双调用/返回堆栈分支预测系统 |
CN1560734A (zh) * | 2004-03-09 | 2005-01-05 | 中国人民解放军国防科学技术大学 | 双栈返回地址预测器设计方法 |
US8141163B2 (en) * | 2007-07-31 | 2012-03-20 | Vmware, Inc. | Malicious code detection |
CN101727312A (zh) * | 2009-01-22 | 2010-06-09 | 杭州中天微系统有限公司 | 一种支持自动纠错功能的返回地址栈实现方法 |
CN101819522A (zh) * | 2009-03-04 | 2010-09-01 | 威盛电子股份有限公司 | 微处理器以及相关指令解析的方法 |
Also Published As
Publication number | Publication date |
---|---|
GB201500925D0 (en) | 2015-03-04 |
GB2524618A (en) | 2015-09-30 |
JP2015191658A (ja) | 2015-11-02 |
GB2524618B (en) | 2017-04-05 |
US20150278516A1 (en) | 2015-10-01 |
US9703948B2 (en) | 2017-07-11 |
DE102015002124A1 (de) | 2015-10-01 |
KR101691719B1 (ko) | 2016-12-30 |
CN104951697A (zh) | 2015-09-30 |
JP5961288B2 (ja) | 2016-08-02 |
TWI590096B (zh) | 2017-07-01 |
KR20150112773A (ko) | 2015-10-07 |
TW201602827A (zh) | 2016-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104951697B (zh) | 来自过程指令的返回-目标限制性返回、处理器、方法及系统 | |
CN104951274B (zh) | 用于控制流安全性的二进制转换机制的指令和逻辑 | |
TWI796031B (zh) | 用於以在環移轉期間保護堆疊的處理器擴展的設備 | |
CN104954356B (zh) | 保护共享的互连以用于虚拟机 | |
CN105184113B (zh) | 用于实现安全视频输出路径的硬件辅助虚拟化 | |
US11327755B2 (en) | Fine grained control flow enforcement to mitigate malicious call/jump oriented programming | |
CN105264513B (zh) | 用于过程返回地址验证的系统和方法 | |
CN104951296B (zh) | 允许一种架构的代码模块使用另一种架构的库模块的架构间兼容模块 | |
CN104050012B (zh) | 指令模拟处理器、方法和系统 | |
CN106716361B (zh) | 用于运行时例程冗余跟踪的编译器高速缓存 | |
CN104049948B (zh) | 指令仿真处理器、方法和系统 | |
CN104969199B (zh) | 实施黑名单分页结构指示值的处理器、方法,以及系统 | |
CN107667372A (zh) | 用于保护影子栈的处理器、方法、系统和指令 | |
CN107851170A (zh) | 支持用于存储器地址范围的可配置安全级别 | |
CN108351830A (zh) | 用于存储器损坏检测的硬件装置和方法 | |
CN108351779A (zh) | 用于安全指令执行流水线的指令和逻辑 | |
CN106716434A (zh) | 具有独立的用户域与管理程序域的存储器保护密钥架构 | |
CN106687972A (zh) | 针对有效gadget控制转移的攻击保护 | |
CN109690552A (zh) | 用于判定是否将受保护容器页的加密副本加载到受保护容器存储器中的处理器、方法、系统和指令 | |
CN108369509A (zh) | 用于基于通道的跨步分散操作的指令和逻辑 | |
CN106708753A (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
CN108369516A (zh) | 用于加载-索引和预取-分散操作的指令和逻辑 | |
TW202246973A (zh) | 硬體處理器及處理器 | |
CN106575284A (zh) | 用于内核模块的多核存储器数据记录器 | |
CN109690546A (zh) | 支持对客户机飞地存储器页的超额订阅 |
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 |