CN104813278A - 对二进制转换的自修改代码以及交叉修改代码的处理 - Google Patents
对二进制转换的自修改代码以及交叉修改代码的处理 Download PDFInfo
- Publication number
- CN104813278A CN104813278A CN201280077331.4A CN201280077331A CN104813278A CN 104813278 A CN104813278 A CN 104813278A CN 201280077331 A CN201280077331 A CN 201280077331A CN 104813278 A CN104813278 A CN 104813278A
- Authority
- CN
- China
- Prior art keywords
- conversion
- instruction
- page
- processor
- indicator
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/45525—Optimisation or modification within the same instruction set architecture, e.g. HP Dynamo
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
处理器核包括执行第一经转换的指令的处理器,所述第一经转换的指令是从存储在存储器的第一页面中的第一指令转换的。处理器还包括存储从存储器中的物理图谱(PhysMap)中读取的第一转换指示符的转换指示符代理(XTBA)。在一个实施例中,第一转换指示符将指出在转换第一指令之后是否修改第一页面。描述并要求保护其他实施例。
Description
技术领域
发明领域是对二进制转换的自修改代码以及交叉修改代码的处理。
背景
可以设计处理器核,以执行以特定编码语言编写的代码。为了让程序由一个特定核执行,程序代码可能需要从与该特定核不兼容的第一编码语言转换到与该特定核兼容的第二编码语言,被称为二进制转换。
自修改代码(SMC)是指在执行过程中被修改的代码,例如,在执行时SMC的一个或多个指令修改SMC的其他指令。交叉修改代码(XMC)是指可在第一处理器核执行的,并且当执行时导致对可在第二处理器核上执行的第二代码的修改的第一代码。SMC或XMC可以在执行之前被部分转换或完全转换。与在前进到下一指令之前转换并执行每一指令相比,在执行之前转换多个指令可能会在转换的代码中带来异常。转换的代码中的异常会导致输出中的错误。
附图简述
图1是根据本发明的一个实施例的包括多个处理器核的处理器的框图。
图2包括包括根据本发明的各实施例的存储代码的存储器的一部分的框图。
图3是根据本发明的一个实施例的转换指示符代理(XTBA)的框图。
图4是根据本发明一实施例的与处理器相关联的缓存存储器的框图。
图5是根据本发明的一个实施例的处理自修改代码(SMC)的方法的流程图。
图6是根据本发明的一个实施例的处理交叉修改代码(XMC)的方法的流程图。
图7是根据本发明的一个实施例的处理器核的框图。
图8是根据本发明的实施例的处理器的框图。
图9是根据本发明的另一实施例的多域处理器的框图。
图10是包括多个核的处理器的实施例的框图。
图11是根据本发明的实施例的系统的框图。
具体实施方式
在各实施例中,提供了用于执行包括SMC或XMC的经转换代码的方法和设备。在一个实施例中,处理器包括执行经转换的第一指令的核,所述经转换的第一指令是从存储在存储器的一个页面中的第一指令转换的。核还包括转换指示代理(XTBA),例如,存储第一转换指示符的专用的缓存存储器,所述第一转换指示符指出在第一指令的转换完成之后页面的内容是否被修改。
现在参照图1,其中示出了根据本发明一实施例的包括多个核的处理器100的框图。在一个实施例中,处理器100可包括核102、120、130以及140。核102可包括用于执行指令的执行单元104,该指令可以存储在缓存存储器或可以被从系统存储器160(例如,动态随机存取存储器(DRAM))中检索;用于存储一个或多个转换指示符的XTBA 106;一级数据缓存(D$)108;二级(中间)数据缓存(MLC)110;以及三级(末级)数据缓存(LLC)112。核120、130以及140中的每一个都可以具有对应的XTBA以及对应的一级缓存、二级缓存以及三级缓存。
每一核102、120、130、140都可以耦合到物理图谱缓存(physical mapcache PM$)150,该物理图谱缓存150存储多个转换指示符。PM$150可包括从转换指示符的物理图谱(PhysMap)170复制的条目的一部分,PhysMap 170中的每一转换指示符都与存储器160中的多个页面180中的对应的页面相关联。例如,与页面A相关联的并且存储在PhysMap 170中的转换指示符可以指出存储在页面A中的第一指令是否已经被转换为第一经转换的指令,例如,从第一编码语言到第二编码语言。第一经转换的指令可以被存储在系统存储器160的另一页面中。
在操作中,XTBA 106可以存储对应于页面A并且与第一经转换的指令相关联的第一转换指示符。可基于,例如,第一经转换的指令的标记信息,从,例如,PM$150,或从PhysMap 170,检索到第一转换指示符。在一个示例中,XTBA 106中的第一转换指示符可能具有值1,并且指出已经发生第一指令的转换。
如果在第一指令转换到第一经转换的指令之后页面A被修改,则转换指示符的值可以从1更新到0,以指出在转换第一指令之后页面A已经被修改。如果在转换之后页面A被修改,则经转换的第一指令可以被视为陈旧的,例如,第一经转换的指令被视为它不再是有效指令。尽管有可能出现这样的情况:当页面A被修改时第一指令没有改变,但是,在此实施例中,转换指示符图的粒度是每个页面一个转换指示符。因此,对页面A的修改被视为第一指令已经被修改。响应于第一经转换的指令被标识为陈旧,核可以中止第一经转换的指令的执行。
在第一经转换的指令的执行过程中,XTBA 106被配置成监测与页面A相关联的并且存储在PhysMap 170中的转换指示符的值。如果PhysMap 170中的第一转换指示符由于例如在经转换的第一指令的执行开始至执行完成(“提交”)之间的任何时间向页面A内的一个地址的STORE指令的执行,从值1更新到值0,则可以中止第一经转换的指令的执行。
XTBA 106可以在物理上被标记,以允许监听对PhysMap 170的更新。对PhysMap 170的更新会导致向系统100中的所有XTBA生成监听。所生成的监听会发生作用,以警告XTBA中的每一个,第一经转换的指令陈旧,且第一经转换的指令的执行将在执行第一经转换的指令的每一核中停止。
核102中的数据缓存108、110以及112中的每一个的每一缓存线都将存储数据(对于核120,130以及140中的数据缓存,类似),例如,从存储器160的一个或多个页面检索到的操作数。在一个实施例中,每一缓存线都可包括被添加到缓存线的标记部分的转换指示符,分别被描绘成缓存存储器108,110以及112中的每一个中的添加的列114,116以及118。可以从PhysMap 170或从PM$150复制缓存线内的转换指示符。给定缓存线的转换指示符可以与存储器160中的从其中加载缓存线中的数据的特定页面相关联。
在操作中,可以从存储器160的页面A中检索操作数,并可以将其存储在核102内的缓存存储器108的第一缓存线中。由于源页面A包括已经被转换的代码而页面A随后没有被改变,因此,与页面A相关联的转换指示符具有表示转换的值(例如,值1)。如果要由核102执行的经转换的指令包括要对第一缓存线中的操作数执行的STORE,则该缓存线中的转换指示符值向核102指出STORE的执行将导致冲突,例如,经转换的指令的源页面的修改。因此,可能会生成错误,执行控制可以转移到停止STORE执行的处理程序。可以使来源于存储在页面A中的代码的所有经转换的指令作废。在通过处理程序对操作数执行STORE之后,可以重新转换或以别的方式处理随后的程序指令。
现在参考图2,所示是根据本发明的各实施例的存储代码和数据的存储器的存储器部分的两个实施例的框图。存储器部分可以被包括在图1的系统存储器160中。
在一个实施例中,存储器部分210包括数据页面C和D 212、代码页面A 214、代码页面B 216、存储经转换的指令A1的线220、存储经转换的指令B1的线222,以及转换指示符物理图谱(PhysMap)226。页面A 214可包括第一自修改代码(SMC),该SMC被转换为包括经转换的指令A1的转换的代码,并存储在线220中。页面B 216可包括第二SMC,它可以被转换为经转换的指令B1并存储在线222中。PhysMap 226将存储包括数据页面C和D 212以及代码页面A 214和B 216的页面的转换指示符值。数据页面212中每一个都具有指出没有发生数据页面212的内容的转换的转换指示符值,而代码页面214和216中每一个都具有指出页面214和216中的指令已经被转换的对应的转换指示符值。在一个示例中,转换指示符值1与指令的转换相关联,而值0与没有转换相关联。其他实施例可以使用不同的值来指出指令的转换或无转换。
在操作中,线220中的经转换的指令A1可包括要对操作数执行的STORE指令(例如,微操作(μop)),例如,将寄存器内容存储到页面A 214中的地址。由于STORE指令的执行将改变页面A 214的内容,因此,执行STORE的核可以在STORE的执行之前,基于与操作数相关联的转换指示符,生成错误,并且执行控制可以转移到更新经转换的指令A1或使其无效的处理程序。即,由于缓存线的标记部分的转换指示符可以向核指出,页面A内的代码已经被转换,执行STORE将改变经转换的指令的源页面。错误可以触发PhysMap 170中的与代码页面A 214相关联的转换指示符的更新(例如,通过向PhysMap 170的WRITE),例如,从值1更新为值0,以指出经转换的指令A1陈旧,并且,在执行STORE之后,将发生重新转换。
在另一个实施例中,存储器部分230包括数据页面C和D 232、代码页面A 234和代码页面B 236、经转换的代码行238和240,以及转换指示符物理图谱PhysMap 236。线238和240可以分别存储经转换的指令A1和B1,它们可能是分别从代码页面A 234和页面B 236中的交叉修改代码(XMC)转换的。PhysMap 236将存储存储器230的页面的转换指示符值,包括代码页面A 234和B 236的转换指示符值,其中每个都带有指出页面234和236中的代码已经被转换的相关联的转换指示符。数据页面232中每一个都具有相关联的转换指示符值0,以指出没有转换数据页面232的内容。
在操作中,第一核(核0)可以执行经转换的指令A1,第二核(核1)可以执行经转换的指令B1。经转换的指令A1可包括向代码页面B 236的STORE指令,在由核0执行时,该STORE指令将修改代码页面B 236的内容。在经转换的指令A1的执行过程中,核0可以基于与代码页面B 236相关联的T值1(指出存储在代码页面B中的代码已经被转换)检测到冲突,该冲突可能会导致核0生成错误。控制可以转移到处理程序,以更新PhysMap 236(例如,通过WRITE的执行),更新与页面B相关联的转换指示符,以及更新包含STORE指令的操作数的缓存线中的缓存线转换指示符。
对PhysMap 236的更新可以导致向系统中的所有XTBA生成监听,包括向正在执行经转换的指令B1的核1中的XTBA。由于经转换的指令B1正在被执行,因此,核1的XTBA可以存储与代码页面B相关联的转换指示符值。核1的XTBA中的转换指示符值从第一值更新到第二值可以向核1指出,经转换的指令B1陈旧,导致经转换的指令B1的执行中止。
在另一个实施例中(未示出),输入/输出(I/O)单元可以通过直接存储器访问(DMA)修改代码页面A 234。对代码页面A的修改会触发向PhysMap 236的WRITE,以更新与页面A 234相关联的指出页面A中的代码在页面A中的指令的转换之后已经被修改的相关联的转换指示符值。相关联的转换指示符的已更新的值可以向系统的所有XTBA生成监听,导致与经转换的指令A1的执行相关联的一个或多个错误。因此,在执行经转换的指令A1的每一个核中,可以中止经转换的指令A1的执行。
现在参考图3,所示是描绘了根据本发明的一个实施例的转换指示符代理(XTBA)300的框图。XTBA 300可包括多个存储比特,包括存储比特302。每一个存储比特都被配置成存储与当前正在执行的指令或最近已执行的指令相关联的转换指示符值,每一个转换指示符值还与存储器的从其转换了当前正在执行的指令的对应的页面相关联。XTBA 300的存储比特可以从,例如,诸如图1的PM$150之类的转换指示符缓存加载,或可以从诸如图1的PhysMap 170之类的与存储器的页面相关联的转换指示符的物理图谱加载。
在一个实施例中,XTBA 300可以发生作用,以监测执行中的经转换的指令的状态。例如,在经转换的指令A1的执行开始时,XTBA 300中的与页面A(包含对应的末经转换的指令)相关联的转换指示符指出,经转换的指令A1有效。XTBA 300可以监测与页面A相关联的并存储在PhysMap中的转换指示符的值。如果与页面A相关联的转换指示符的值在经转换的指令A1的执行过程中变化,则经转换的指令A1的执行可以被中止,并可以被发送到处理程序以完成执行。
另外,处理程序还可以向系统的所有其他XTBA生成监听,诸如向图1的处理器100中的其他XTBA中的每一个。向系统中的其他XTBA中的每一个的监听可以导致对应于现在陈旧的经转换的指令的相应的转换指示符的更新。监听可以导致中止其他核中的经转换的指令的执行,每一个核都可以向相应的处理程序发送经转换的指令以完成执行。
现在参考图4,所示是描绘了与诸如图1的处理器110之类的处理器相关联的一组数据缓存400的框图。该组数据缓存400包括一级数据缓存410、二级数据缓存420以及三级数据缓存430。
每一个数据缓存都可包括多个缓存线。每一个缓存线都可包括数据存储部分,诸如数据存储部分412、422以及432,每一个都存储操作数以及诸如标记部分414,424以及434之类的标记部分。每一个标记部分都可包括对应的存储的转换指示符,诸如转换指示符416,426以及436。标记部分中的每一个转换指示符都可以对应于存储器中的从其中复制了操作数并且操作数被置于数据存储部分的源页面的转换指示符。
在一个实施例中,STORE指令将在其转换指示符具有指出STORE被指向包含已经被转换的代码的源页面的值的缓存线的操作数上执行。因此,STORE指令的执行将修改源页面的内容。执行STORE指令的处理器可以通过读取缓存线中的转换指示符值,来检测冲突,并可以复位转换指示符,向处理程序发送STORE指令以解决即将发生的冲突。如此,存储在缓存线中的转换指示符可以充当冲突的指示符,例如,包含已经被转换的指令的源代码页面的修改。
对与STORE指令相关联的即将发生的冲突的检测可以导致PhysMap中的对应的转换指示符从第一值更新到第二值的生成。对PhysMap的更新可以导致向系统的所有XTBA的监听的生成。每一监听都更新正在执行经转换的指令的核的XTBA中的经转换的指令的相关联的转换指示符,以指出经过经转换的指令陈旧。监听还可以导致对与源代码页面相关联的缓存线(例如,其内容是从源代码页面加载的缓存线)的转换指示符值的更新。
例如,在一个实施例中,在第一经转换的指令在处理器上的执行开始时,处理器的XTBA将监测源代码页面的转换指示符。在有指出对源代码页面的修改的转换指示符被更新的指示时,更新XTBA条目,导致停止现在陈旧的对应的指令的执行的错误。另外,可以响应于更新的转换指示符的指示,向每一个缓存生成监听,这会导致对从源页面加载了其存储的数据的缓存线中的每一个转换指示符的更新。特定缓存线中的已更新的转换指示符值可以指出,第一经转换的指令将不在该特定缓存线上执行,而是将被转移到处理程序以完成执行。
现在参考图5,所示是用于对从自修改代码的执行产生的冲突作出响应的方法500。在一个实施例中,方法500可以由诸如图1的处理器102之类的核来执行。
从框510开始,存储在存储器的页面A中的代码,例如,通过二进制转换,从第一编码语言转换为第二编码语言。继续框520,核0执行经转换的指令A1,包括向页面A的STORE。移向框530,核0从转换指示符值中检测冲突,该转换指示符值指出在页面A的指令的转换(例如,通过执行向页面A的STORE)之后修改存储在页面A中的数据的意图。继续到框535,核0响应于检测到冲突,生成错误。转到框540,核0将控制转移到处理程序,该处理程序更新对应的转换指示符的物理图谱(例如,PhysMap),并执行与核0相关联的缓存线中的转换指示符的缓存线更新。继续到框550,对PhysMap的更新通过核0的XTBA来检测,导致向系统中的每一XTBA生成监听,该监听更新对应于当前正在执行的经转换的指令的每一XTBA中的存储的转换指示符值。经转换的指令的更新的值指出,当前正在执行的指令陈旧。还更新包含从与其他核相关联的缓存存储器的页面A复制的操作数的缓存线条目的转换指示符值。在方框560中,方法500结束。
图5的方法可以通过硬件、软件、固件,或其组合来执行。可以理解,虽然在图5的实施例中以高级别示出的,但是,本发明的范围在不受限制。
现在参考图6,所示是用于对从交叉修改代码的执行产生的冲突作出响应的方法600。从框602开始,存储在诸如DRAM之类的存储器的页面A中的代码被转换(二进制转换)为代码A1。转换可以通过诸如图1所示出的系统之类的系统中的核来实现,或可以通过单独的二进制转换处理器来转换。继续到框604,存储在存储器的页面B中的代码被转换为代码B1。前进到框606,核0开始经转换的指令A1的执行,包括向存储器的页面B的STORE。移向框608,核0从转换指示符值,检测由于将数据存储到包括已经被转换的代码的页面B的企图而导致的冲突。转到框610,核0响应于检测到冲突,生成错误。继续到框612,核0将控制转移到处理程序,该处理程序更新转换指示符的物理图谱(例如,图1的PhysMap 170),还更新缓存线转换指示符值。
前进到框614,对PhysMap的更新生成对系统中的所有XTBA的监听。移向框616,核1中的XTBA接收监听命中,该监听命中在核1中生成错误。转到框618,核1响应于相关联的XTBA中的对应的更新的转换指示符值,中止经转换的指令B1的执行。在方框620中,该方法结束。
图6的方法可以通过硬件、软件、固件,或其组合来执行。可以理解,虽然在图6的实施例中以高级别示出的,但是,本发明的范围在不受限制。
各实施例可以在许多不同的系统中实现。例如,实施例可在诸如多核处理器之类的处理器中实现。现在参照图7,所示是根据本发明一个实施例的处理器核的框图。如图7所示,核700可以是多核处理器中的一个核,并且被示为多级流水线化的无序处理器。在图7中利用相对简化的视图示出处理器核700,以示出与根据本发明的实施例的数据错误纠正结合使用的多个特征。
如图7所示,核700包括前端单元710,前端单元710可用于取得将被执行的指令并将这些指令准备好以供以后在处理器中使用。例如,前端单元710可包括获取单元701、指令缓存703和指令解码器705。在某些实现中,前端单元710可进一步包括跟踪缓存、微码存储以及微操作存储。获取单元701可(例如,从存储器或指令缓存703)获取宏指令并将它们馈送至指令解码器705以将它们解码为原语,即用于通过处理器执行的微操作。
无序(OOO)引擎715耦合在前端单元710与执行单元720之间,无序引擎715可用于接收微指令并将它们准备好以供执行。更具体地,OOO引擎715可包括多个缓冲器,用于对微指令流重新排序并分配执行所需的各种资源,以及例如通过使用该引擎的重命名逻辑来提供逻辑寄存器到各个寄存器组(诸如寄存器组730和扩展寄存器组735)内的存储位置上的重命名。寄存器组730可包括用于整数和浮点操作的单独的寄存器组。扩展寄存器组735可提供向量尺寸单元的存储,例如,每寄存器256或512位。
在执行单元720中可存在多种资源,包括例如多种整数、浮点和单指令多数据(SIMD)逻辑单元等其它专门硬件。例如,此类执行单元可包括一个或多个算术逻辑单元(ALU)722。当然,还可存在诸如乘法累加单元之类的其他执行单元等等。
在某些实施例中,执行单元720中的一个或多个可包括缓存转换指示符值的XTBA 724,如此处所描述的。执行单元720中的每一个都可包括一个或多个数据缓存(未示出),这些数据缓存可以存储多个条目,每一条目都可包括元数据,该元数据可包括转换指示符,如此处所描述的。
执行单元720的结果可以被提供给引退逻辑,该引退逻辑可以实现在处理器的存储器子系统760内。例如包括执行单元和前端逻辑的各个处理器结构可以耦合到存储器子系统760。该存储器子系统可提供处理器结构与存储器层次的其他部分(例如芯片上或芯片外的缓存和系统存储器)之间的接口。如所看见那样,各子系统具有各个组件,包括存储器排序缓冲器(MOB)740。更具体地,MOB 740可包括各种阵列和逻辑以接收与被执行的指令相关联的信息。然后,通过MOB 740检查该信息以确定指令是否可以有效引退并且结果数据是否被提交至处理器的架构状态,或阻止指令的正常引退的一个或多个异常是否发生。当然,MOB 740可处理与引退相关联的其他操作。
如图7所示,MOB 740耦合至缓存750,在一个实施例中,该缓存750可以是低级缓存(例如L1缓存)。存储器子系统760还可包括集成存储器控制器770以提供与系统存储器(在图7中为了说明方便而未示出)的通信。存储器子系统760还可包括存储器执行单元(MEU)775,该存储器执行单元775处理各种操作,以发起存储器请求并且处理数据从存储器的返回。进一步,虽然未示出,但应理解MEU 775中可存在诸如缓冲器、调度器等等其他结构。
从存储器子系统760,可发生与更高级缓存、系统存储器等等的数据通信。虽然在图7的实施例中用高级框图示出,但应理解本发明的范围不限于此方面。例如,虽然图7的实现方式是参照无序机、比如所谓的x86指令集架构(ISA)的无序机的,但本发明的范围在此方面不受限制。即,其他实施例可在以下处理器中实现:有序处理器;诸如基于ARM的处理器之类的精简指令集计算(RISC)处理器;或具有另一类型ISA的处理器,该另一类型的ISA可经由仿真引擎和相关联的逻辑电路来仿真不同ISA的指令和操作。
即,在其他实施例中,处理器架构可包括仿真特征,使得处理器可执行称为源ISA的第一ISA的指令,其中该架构是根据第二ISA的,该第二ISA被称为目标ISA。一般而言,包括OS和应用程序的软件被编译至源ISA,而硬件实现针对给定硬件实现方式而特别设计的具有特殊性能和/或能源效率特征的目标ISA。
现在参照图8,其中示出了根据本发明一实施例的处理器的框图。如图8所示,处理器800可以是多核处理器,包括在核域810中的多个核810a-810n。核810a-810n中的一个或多个可包括XTBA(未示出),如此处所描述的,以及数据缓存,其中,每一缓存线都可包括元数据,该元数据可包括转换指示符,如此处所描述的。如在图8中进一步示出的那样,一个或多个图形处理单元(GPU)8120-812n可以存在于图形域812中。这些独立图形引擎中的每一个都还可以被配置成在独立电压和/或频率下操作,或可以作为单个域来一起控制它们。这些各个计算元件可经由互连815耦合到系统代理或非核部分820,非核部分820包括各个组件。如所见那样,非核820可包括共享的缓存830,它可以是最末级缓存。共享缓存830可包括多个条目,每一缓存条目都可包括元数据,该元数据可包括与存储在缓存条目中的数据相关联的转换指示符,如此处所描述的,以及数据缓存。缓存中的一个或多个都可以存储多个条目,每一条目都可包括元数据,该元数据可包括转换指示符,如此处所描述的。非核还可以包括物理图谱缓存(PM$),如此处所描述的。
进一步参见图8,处理器800可经由例如存储器总线与系统存储器860通信。另外,通过接口850可对诸如外围设备、海量存储器等多种芯片外组件作出连接。虽然在图8的实施例中示出具有该特定实现,但本发明的范围不限于此方面。
现在参照图9,其中示出了根据本发明另一实施例的多域处理器的框图。如图9的实施例所示,处理器900包括多个域。具体而言,核域910可包括多个核9100–910n,图形域920可包括一个或多个图形引擎,还可以进一步存在系统代理域950。在各实施例中,系统代理域950可在所有时间保持加电以应对功率控制事件和功率管理,以使这些域910和920可被控制以动态地进入和退出低功率状态。
注意,尽管仅示出了三个域,然而要理解本发明的范围不限于这个方面并且其它实施例中可存在附加的域。例如,可存在多核域,其每一个包括至少一个核。
一般而言,核910中的一个或多个还可以包括对应的XTBA,如此处所描述的,以及除各种执行单元和附加的处理元件之外,还包括低级别缓存。低级别缓存可包括多个条目,每一缓存条目都可包括转换指示符,如此处所描述的。进而,各核可彼此耦合并耦合至由末级缓存(LLC)9400–940n的多个单元形成的共享缓存存储器。在各实施例中,LLC 940可在核和图形引擎以及多种媒体处理电路之中共享。可以看出,环形互连930因此将各个核耦合在一起,并且提供各个核、图形域920和系统代理电路系统950之间的互连。
在图9的实施例中,系统代理域950可以包括显示控制器952,其可以提供对相关联的显示器的控制和接口。可进一步看出,系统代理域950可以包括功率控制单元955。系统代理域950还可以包括物理图谱缓存(PM$)956,用于存储转换指示符值的一部分,转换指示符值存储在系统存储器内的转换指示符值的物理图谱(PhysMap)中。
如图9中进一步所见的,处理器900可进一步包括集成的存储器控制器(IMC)970,它可向例如DRAM之类的系统存储器提供接口。可存在多个接口9800–980n以允许处理器和其它电路之间的互连。例如,在一个实施例中,可提供至少一个直接媒体接口(DMI)接口以及一个或多个高速外设组件互连(PCI ExpressTM(PCIeTM))接口。再进一步,为了提供诸如附加处理器或其它电路的其它代理之间的通信,根据快速通道互连(QPI)协议的一个或多个接口也可被提供。尽管在图9的实施例以这样高级别地表示,然而要理解本发明的范围不限于此方面。
参考图10,示出了包括多个核的处理器的实施例。处理器1000包括任何处理器或处理器件,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持式处理器、应用处理器、协同处理器、片上系统(SOC)、或用于执行代码的其它器件。在一个实施例中,处理器1000包括至少两个核——核1001和1002,它们可包括非对称核或对称核(所示实施例)。然而,处理器1000可包括可以是对称的或非对称的任何数量的处理元件。
在一个实施例中,处理元件指的是用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、进程单元、上下文、上下文单元、逻辑处理器、硬件线程、核、和/或能保持处理器的诸如执行状态或架构状态之类的状态的任何其它元件。换言之,在一个实施例中,处理元件指的是能够与诸如软件线程、操作系统、应用、或其它代码之类的代码独立地相关联的任何硬件。物理处理器通常指的是集成电路,其可能包括任意数量的诸如核或硬件线程之类的其它处理元件。
核通常指的是位于集成电路上的能够维持独立架构状态的逻辑,其中每个独立维持的架构状态与至少某些专用执行资源相关联。与核相反,硬件线程通常指的是位于集成电路上的能维持独立架构状态的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。可以看出,当某些资源是共享的而其它资源是架构状态专用时,硬件线程与核的术语之间的界线交叠。核和硬件线程常常被操作系统视为单个逻辑处理器,其中,操作系统能够各个地在每一个逻辑处理器上调度操作。
如图10所示的物理处理器1000包括两个核——核1001和1002。在此,核1001和1002被视为对称核,即这些核具有相同的配置、功能单元和/或逻辑。在另一个实施例中,核1001包括无序处理器核,而核1002包括有序处理器核。然而,核1001和1002可从任何类型的核中单独地选择,诸如原生核、受软件管理的核、适于执行原生指令集架构(ISA)的核、适于执行转换ISA的核、协同设计的核或其它已知核。不过,为进一步讨论,以下将进一步详细描述在核1001中示出的功能单元,因为核1002中的单元以类似方式操作。
如所描绘的,核1001包括两个硬件线程1001a以及1001b,它们也可以被称为硬件线程槽1001a以及1001b。因此,在一个实施例中,诸如操作系统之类的软件实体潜在地将处理器1000视为四个独立的处理器,即能够并发地执行四个软件线程的四个逻辑处理器或处理元件。如上所述,第一线程与架构状态寄存器1001a相关联,第二线程与架构状态寄存器1001b相关联,第三线程可与架构状态寄存器1002a相关联,并且第四线程可与架构状态寄存器1002b相关联。在此,架构状态寄存器(1001a、1001b、1002a和1002b)中的每一个可被称为处理元件、线程槽或线程单元,如上所述。如上所述,架构状态寄存器1001a被复制在架构状态寄存器1001b中,因此能够为逻辑处理器1001a和逻辑处理器1001b存储各个架构状态/上下文。在核1001中,也可复制用于线程1001a和1001b的其它较小资源,诸如指令指针以及分配器和重命名块1030中的重命名逻辑。诸如重排序器/引退单元1035中的重排序缓冲器、ILTB 1020、载入/存储缓冲器、以及队列之类的一些资源可通过分区来共享。诸如通用内部寄存器、页表基本寄存器、低级数据缓存和数据TLB 1015、执行单元1040、以及无序单元1035的部分之类的其它资源潜在地被完全共享。
处理器1000通常包括其它资源,这些其它资源可被完全共享、通过分区共享、或由处理元件专用/专用于处理元件。在图10中,示出了具有处理器的说明性的逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可包括或省略这些功能单元中的任一个,并包括未描绘出的任何其它已知的功能单元、逻辑或固件。例如,每一核都可包括如此处所描述的XTBA。如图所示,核1001包括简化的、代表性的无序(OOO)处理器核。但是,在不同实施例中可利用有序处理器。OOO核包括用于预测要被执行/进行的分支的分支目标缓冲器1020以及用于存储指令的地址转换条目的指令转换缓冲器(I-TLB)1020。
核1001进一步包括耦合至取出单元1020以用于解码所取出的元素的解码模块1025。在一个实施例中,取出逻辑包括分别与线程槽1001a、1001b相关联的各个序列发生器。通常,核1001与第一ISA相关联,该第一ISA定义/指定能在处理器1000上执行的指令。作为第一ISA的一部分的机器代码指令常常包括引用/指定要被执行的指令或操作的指令的一部分(被称为操作码)。解码逻辑1025包括由这些指令的操作码来识别这些指令并在流水线上传递所解码的指令以进行如第一ISA所定义的处理的电路。例如,在一个实施例中,解码器1025包括被设计成或适于识别诸如事务性指令之类的特定指令的逻辑。作为解码器1025识别的结果,架构或核1001采取特定的、预定的动作以执行与适当指令相关联的任务。重要的是应注意,本申请中描述的任务、块、操作和方法中的任一个可响应于单个或多个指令来执行;它们中的一些可以是新的或旧的指令。
在一个示例中,分配器和重命名器块1030包括用于预留资源的分配器,诸如用于存储指令处理结果的寄存器组。然而,线程1001a和1001b潜在地能够进行无序执行,其中分配器和重命名器块1030还保留其它资源(诸如用于跟踪指令结果的重排序缓冲器)。单元1030还可包括寄存器重命名器,用于将程序/指令引用寄存器重命名为处理器1000内部的其它寄存器。重排序/引退单元1035包括诸如上述的重排序缓冲器、加载缓冲器和存储缓冲器之类的组件,以支持无序执行的指令的无序执行和稍后的有序引退。
在一个实施例中,调度器和执行单元块1040包括调度器单元,用于在执行单元上调度指令/操作。例如,在具有可用的浮点执行单元的执行单元的端口上调度浮点指令。还包括与执行单元相关联的寄存器组,用于存储信息指令处理结果。示例性的执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元以及其它已知的执行单元。
较低级的数据缓存和数据转换缓冲器(D-TLB)1051耦合至执行单元1040,1041。数据缓存用于存储最近使用/操作的元素(诸如数据操作数),这些元素在存储器一致性状态下潜在地被保持。D-TLB 1051用于存储最近的虚拟/线性至物理地址转换。作为特定示例,处理器可包括页表结构,用于将物理存储器分解成多个虚拟页。每一数据缓存都可以存储多个条目,每一条目都可包括元数据,该元数据可包括转换指示符,如此处所描述的。
在此,核1001和1002共享对较高级或进一步远离的缓存1010的访问,较高级或进一步远离的缓存用于缓存最近取出的元素。每一进一步远离缓存1010缓存都可以存储多个条目,每一条目都可包括元数据,该元数据可包括转换指示符,如此处所描述的。注意,较高级或进一步指的是缓存级增加或进一步远离执行单元。在一个实施例中,较高级缓存1010是最后级数据缓存——处理器1000上的存储器层次中的最后级缓存,诸如第二或第三级数据缓存。然而,较高级缓存1010不限于此,因为它可与指令缓存相关联或包括指令缓存。替代地,跟踪缓存——一种类型的指令缓存——可耦合在解码器1025之后,用于存储最近解码的跟踪。
在所描绘的配置中,处理器1000还包括总线接口模块1005。历史上,控制器1070被包括在处理器1000外部的计算系统中。在该场景中,总线接口1005与处理器1000外部的设备通信,处理器1000外部的设备诸如系统存储器1075、芯片组(通常包括存储器控制器中枢以连接到存储器1075以及I/O控制器中枢以连接到外围设备)、存储器控制器中枢、如此处所描述的物理图谱缓存(PM$)、北桥、或其它集成电路。并且在该场景中,总线1005可包括任何已知的互连,诸如多点总线、点对点互连、串行互连、并行总线、一致性(例如缓存一致性)总线、分层协议架构、差分总线以及GTL总线。
存储器1075可专属于处理器1000或与系统中的其它器件共享。存储器1075的类型的常见示例包括DRAM、SRAM、非易失性存储器(NV存储器)以及其它已知的存储设备。注意,器件1080可包括耦合到存储器控制器中枢的图形加速器、处理器或卡,耦合到I/O控制器中枢的数据存储,无线收发器,闪存器件,音频控制器,网络控制器,或其它已知器件。
然而,注意,在所描绘的实施例中,控制器1070被示为处理器1000的一部分。最近,随着更多的逻辑和器件被集成在单个管芯上(如SOC),这些器件中的每一个可被合并在处理器1000上。例如,在一个实施例中,存储器控制器中枢1070与处理器1000处于同一封装和/或管芯上。在此,核的一部分(核上部分,on-core portion)包括与诸如存储器1075和/或图形器件1080之类的其它器件进行接口的一个或多个控制器1070。包括用于与此类器件进行接口的控制器和互连的该配置通常被称为核上(或非核(un-core)配置)。作为示例,总线接口1005包括环形互连,环形互连具有用于与存储器1075进行接口的存储器控制器以及用于与图形处理器1080进行接口的图形控制器。然而,在SOC环境中,诸如网络接口、协同处理器、存储器1075、图形处理器1080以及任何其它已知计算机器件/接口之类的甚至更多的器件可被集成到单个管芯或集成电路上,以提供具有高功能性和低功耗的小外形规格。
各实施例可以以许多不同的系统类型来实现。现在参照图11,其中示出了根据本发明一实施例的系统的框图。如图11所示,多处理器系统1100是点对点互连系统,并包括通过点对点互连1150而耦合的第一处理器1170和第二处理器1180。如图11所示,处理器1170和1180中的每一个都可以是多核处理器,包括第一和第二处理器核(即,处理器核1174a和1174b,处理器核1184a和1184b),虽然潜在地更多核可以存在于处理器中。处理器中的一个或多个可包括XTBA,如此处所描述的,以及相应的缓存。缓存中的一个或多个都可以存储多个条目,每一条目都可包括元数据,该元数据可包括转换指示符,如此处所描述的。
仍参考图11,第一处理器1170还包括存储器控制器中枢(MCH)1172和点对点(P-P)接口1176和1178。类似地,第二处理器1180包括MCH 1182和P-P接口1186和1188。如图11所示,MCH 1172和1182将处理器耦合到相应的存储器,即,存储器1132和存储器1134,它们可以是本地连接到相应的处理器的系统存储器(例如,DRAM)的一部分。第一处理器1170和第二处理器1180可分别经由P-P互连1152和1154耦合至芯片组1190。如图11中所示,芯片组1190包括P-P接口1194和1198。每一处理器都可以访问物理图谱缓存(PM$)(未示出),如此处所描述的。
此外,芯片组1190包括用于通过P-P互连1139将芯片组1190与高性能图形引擎1138进行耦合的接口1192。芯片组1190又可以通过接口1196耦合到第一总线1116。如图11所示,各种输入/输出(I/O)设备1114以及总线桥1118可以耦合到第一总线1116,总线桥1118将第一总线1116耦合到第二总线1120。在一个实施例中,各种设备可耦合到第二总线1120,包括例如键盘/鼠标1122、通信设备1126以及数据存储单元1128,如可包括代码1130的盘驱动器或其他大容量存储设备。进一步地,音频I/O 1124可以耦合到第二总线1120。各实施例可以被包括到其他类型的系统中,包括诸如智能蜂窝电话、UltrabookTM、平板电脑、上网本等等之类的移动设备。
实施例可以代码的形式实现,而且可存储在其上存储有可用于对系统编程以执行这些指令的非临时存储介质上。存储介质可包括但不限于:包括软盘、光盘、固态驱动器(SSD)、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)以及磁光盘的任何类型的磁盘;诸如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦写可编程只读存储器(EPROM)、闪存、电可擦写可编程只读存储器(EEPROM)之类的半导体器件;磁卡或光卡,或适合于存储电子指令的任何其他类型的介质。
各实施例可以用于许多不同类型的系统中。例如,在一个实施例中,通信设备可以被配置为执行此处所描述的各种方法和技术。当然,本发明的范围不仅限于通信设备,相反,其他实施例可以涉及其他类型的用于处理指令的设备,包括指令的一个或多个机器可读的介质,所述指令,响应于在计算设备上执行,导致设备执行此处所描述的方法和技术中的一个或多个。
尽管是参考数量有限的实施例来描述本发明的,但是,那些精通本技术的人将从其中理解很多修改和变体。所附权利要求旨在覆盖落入本发明的真实精神和范围中的所有这些修改和变化。
Claims (24)
1.一种处理器,包括:
执行第一经转换的指令的处理器核,所述第一经转换的指令是从存储在存储器的第一页面中的第一指令转换的;以及
转换指示符代理(XTBA),用于存储从物理图谱(PhysMap)中读取的第一转换指示符,并指出在所述第一指令转换之后是否已经修改所述存储器的所述第一页面。
2.如权利要求1所述的处理器,其特征在于,存储在所述XTBA中的所述第一转换指示符将响应于所述第一页面被修改的指示,被更新。
3.如权利要求2所述的处理器,其特征在于,响应于当所述第一经转换的指令正在被执行时所述第一转换指示符被更新,所述处理器将中止所述第一经转换的指令的执行。
4.如权利要求2所述的处理器,其特征在于,处理器将响应于所述PhysMap中的所述第一转换指示符的更新,更新所述XTBA。
5.如权利要求1所述的处理器,其特征在于,所述处理器将在从所述第一经转换的指令的执行开始直到所述第一经转换的指令的提交阶段的监测时间中,监测存储在所述PhysMap中的所述第一转换指示符。
6.如权利要求1所述的处理器,其特征在于,所述XTBA包括所述处理器可访问的转换指示符缓存,所述转换指示符缓存存储在所述PhysMap中的一个或多个转换指示符,所述XTBA中的每一转换指示符都与正在被执行的对应的指令或已经被执行的对应的指令相关联。
7.如权利要求6所述的处理器,其特征在于,所述XTBA在物理上被标记,以允许基于对所述PhysMap的更新的监听。
8.如权利要求7所述的处理器,其特征在于,所述处理器核将响应于通过监听接收到的指示,更新存储在所述XTBA中的所述第一转换指示符,所述更新指出所述第一页面的内容在所述第一指令被转换之后已经被修改。
9.如权利要求1所述的处理器,其特征在于,所述XTBA将存储多个转换指示符,每一转换指示符都指出在存储在所述对应的页面中的对应的指令被转换之后所述存储器的对应的页面是否被修改。
10.如权利要求1所述的处理器,其特征在于,在转换所述第一指令时,所述第一转换指示符被设置为第一值,在转换所述第一指令之后修改所述第一页面时,所述第一转换指示符被设置为第二值。
11.如权利要求1所述的处理器,其特征在于,响应于来自所述转换指示符的指出在转换所述第一指令之后所述第一页面被修改的指示,所述处理器被中断完成所述经转换的第一指令的执行。
12.如权利要求1所述的处理器,进一步包括耦合到所述处理器的缓存,其中所述缓存包括多个缓存线,且至少一个缓存线将存储从所述第一页面加载的操作数以及与所述第一页面相关联的对应的转换指示符。
13.如权利要求12所述的处理器,其特征在于,所述至少一个缓存线内的所述转换指示符是响应于所述PhysMap内的对应的转换指示符的变化而可更新的。
14.一种处理器,包括:
处理器核;以及
耦合到所述处理器核的缓存存储器,所述缓存存储器包括一个或多个条目,每一条目都包括:
存储从存储器的第一页面加载的操作数的数据存储器字段,其中所述第一页面包括已经被转换为第一经转换的指令的第一指令;以及
转换字段,所述转换字段存储与所述第一页面相关联的第一转换指示符,以指出在所述第一指令转换之后所述第一是否被修改。
15.如权利要求14所述的处理器,其特征在于,缓存存储器将响应于向所述第一页面的写入,接收对所述第一转换指示符的更新。
16.如权利要求15所述的处理器,其特征在于,所述更新的第一转换指示符将导致所述处理器核响应于检测到要对所述条目的所述操作数执行的存储命令,生成错误。
17.如权利要求15所述的处理器,其特征在于,所述更新的第一转换指示符将导致所述处理器核使所述第一经转换的指令无效。
18.一种系统,包括:
包括存储多个转换指示符的物理图谱(PhysMap)的系统存储器,每一转换指示符都对应于所述系统存储器的页面,每一转换指示符都指出所述对应的页面中的相应的指令是否被转换;
处理器,包括执行从第一指令转换的第一经转换的指令的处理器核,以及物理图谱缓存,所述物理图谱缓存存储被存储在所述系统存储器的所述PhysMap中的所述转换指示符的子集,其中响应于在转换所述第一指令之后向所述第一页面的写入命令的执行,所述物理图谱缓存中的第一转换指示符的值从第一值更新到第二值,所述处理器核将生成与所述第一经转换的指令的执行相关联的错误。
19.如权利要求18所述的系统,其特征在于,所述处理器核将执行控制转移到使所述第一经转换的指令无效的处理程序。
20.如权利要求18所述的系统,其特征在于,所述处理器核将响应于在转换所述第一指令之后向所述第一页面的所述写入命令的所述执行,将所述PhysMap中的所述第一转换指示符的所述值从所述第一值更新到所述第二值,并将所述PhysMap中的所述第一转换指示符的所述已更新的值存储在所述物理图谱缓存中。
21.一种方法,包括:
由第一核执行转换的第一代码,所述转换的第一代码是从存储在第一页面中的第一代码转换的,其中所述转换的第一代码包括指向存储第二代码的第二页面的存储指令;
由第二核执行经转换的第二代码,所述经转换的第二代码包括在所述经转换的第一代码的执行之前从所述第二页面中的所述第二代码转换的经转换的第二指令;以及
响应于所述第一核执行向所述第二页面的存储指令,通过读取与所述第二页面相关联的转换指示符的值,检测冲突。
22.如权利要求21所述的方法,进一步包括生成与所述经转换的第二代码的执行相关联的错误。
23.如权利要求21所述的方法,进一步包括响应于检测到所述冲突,生成监听,所述监听更新所述第二核的转换指示符代理(XTBA),其中所述更新的XTBA将指出所述经转换的第二指令陈旧。
24.如权利要求23所述的方法,进一步包括响应于检测到所述XTBA的所述更新,将执行控制转移到使所述第二经转换的指令无效的处理程序。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2012/071880 WO2014105030A1 (en) | 2012-12-27 | 2012-12-27 | Handling of binary translated self modifying code and cross modifying code |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104813278A true CN104813278A (zh) | 2015-07-29 |
CN104813278B CN104813278B (zh) | 2019-01-01 |
Family
ID=51018889
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280077331.4A Expired - Fee Related CN104813278B (zh) | 2012-12-27 | 2012-12-27 | 对二进制转换的自修改代码以及交叉修改代码的处理 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9116729B2 (zh) |
KR (2) | KR101744081B1 (zh) |
CN (1) | CN104813278B (zh) |
WO (1) | WO2014105030A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106933539A (zh) * | 2016-04-20 | 2017-07-07 | 上海兆芯集成电路有限公司 | 侦测自修正程序码的处理器与方法 |
CN109683959A (zh) * | 2018-12-24 | 2019-04-26 | 安谋科技(中国)有限公司 | 处理器的指令执行方法及其处理器 |
CN111045958A (zh) * | 2018-10-11 | 2020-04-21 | 展讯通信(上海)有限公司 | 加速引擎及处理器 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8959493B2 (en) * | 2011-06-27 | 2015-02-17 | International Business Machines Corporation | Using range validation in assembly language programming |
EP3049921A4 (en) * | 2013-09-26 | 2017-05-17 | Intel Corporation | Methods and apparatus to validate translated guest code in a dynamic binary translator |
US9367477B2 (en) | 2014-09-24 | 2016-06-14 | Intel Corporation | Instruction and logic for support of code modification in translation lookaside buffers |
US10635465B2 (en) | 2015-03-28 | 2020-04-28 | Intel Corporation | Apparatuses and methods to prevent execution of a modified instruction |
US10437315B2 (en) | 2017-06-22 | 2019-10-08 | Intel Corporation | System, apparatus and method for dynamically controlling error protection features of a processor |
US10606591B2 (en) | 2017-10-06 | 2020-03-31 | International Business Machines Corporation | Handling effective address synonyms in a load-store unit that operates without address translation |
US10417002B2 (en) | 2017-10-06 | 2019-09-17 | International Business Machines Corporation | Hazard detection of out-of-order execution of load and store instructions in processors without using real addresses |
US11175924B2 (en) | 2017-10-06 | 2021-11-16 | International Business Machines Corporation | Load-store unit with partitioned reorder queues with single cam port |
US10394558B2 (en) | 2017-10-06 | 2019-08-27 | International Business Machines Corporation | Executing load-store operations without address translation hardware per load-store unit port |
KR102111886B1 (ko) * | 2019-08-12 | 2020-05-15 | 한국과학기술원 | Arm 아키텍쳐 상의 동적 프로그램 수정 탐지 기술 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040015675A1 (en) * | 1999-12-20 | 2004-01-22 | Alan Kyker | SMC detection and reverse translation in a translation lookaside buffer |
US6704925B1 (en) * | 1998-09-10 | 2004-03-09 | Vmware, Inc. | Dynamic binary translator with a system and method for updating and maintaining coherency of a translation cache |
US7203944B1 (en) * | 2003-07-09 | 2007-04-10 | Veritas Operating Corporation | Migrating virtual machines among computer systems to balance load caused by virtual machines |
CN102087609A (zh) * | 2011-02-23 | 2011-06-08 | 中国人民解放军国防科学技术大学 | 多处理器平台下的动态二进制翻译方法 |
US20120117355A1 (en) * | 2010-11-10 | 2012-05-10 | International Business Machines Corporation | Memory Management for a Dynamic Binary Translator |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6199152B1 (en) | 1996-08-22 | 2001-03-06 | Transmeta Corporation | Translated memory protection apparatus for an advanced microprocessor |
US6363336B1 (en) | 1999-10-13 | 2002-03-26 | Transmeta Corporation | Fine grain translation discrimination |
US6748584B1 (en) * | 1999-12-29 | 2004-06-08 | Veritas Operating Corporation | Method for determining the degree to which changed code has been exercised |
US6594821B1 (en) | 2000-03-30 | 2003-07-15 | Transmeta Corporation | Translation consistency checking for modified target instructions by comparing to original copy |
US20030093775A1 (en) * | 2001-11-14 | 2003-05-15 | Ronald Hilton | Processing of self-modifying code under emulation |
US7107580B2 (en) * | 2003-01-07 | 2006-09-12 | Intel Corporation | Binary translation of self-modifying code |
WO2006045029A1 (en) * | 2004-10-19 | 2006-04-27 | Platform Solutions, Inc. | Processing of self-modifying code in multi-address-space and multi-processor systems |
US7774746B2 (en) | 2006-04-19 | 2010-08-10 | Apple, Inc. | Generating a format translator |
GB0813833D0 (en) * | 2008-07-29 | 2008-09-03 | Transitive Ltd | Apparatus and method for handling page protection faults in a computing system |
US8356166B2 (en) * | 2009-06-26 | 2013-01-15 | Microsoft Corporation | Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers |
US20120023307A1 (en) * | 2010-07-23 | 2012-01-26 | Robert Paul Morris | Methods, systems, and computer program products for excluding an addressable entity from a translation of source code |
-
2012
- 2012-12-27 US US13/997,694 patent/US9116729B2/en not_active Expired - Fee Related
- 2012-12-27 CN CN201280077331.4A patent/CN104813278B/zh not_active Expired - Fee Related
- 2012-12-27 KR KR1020157011970A patent/KR101744081B1/ko active IP Right Grant
- 2012-12-27 KR KR1020177014865A patent/KR20170066681A/ko not_active Application Discontinuation
- 2012-12-27 WO PCT/US2012/071880 patent/WO2014105030A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6704925B1 (en) * | 1998-09-10 | 2004-03-09 | Vmware, Inc. | Dynamic binary translator with a system and method for updating and maintaining coherency of a translation cache |
US20040015675A1 (en) * | 1999-12-20 | 2004-01-22 | Alan Kyker | SMC detection and reverse translation in a translation lookaside buffer |
US7203944B1 (en) * | 2003-07-09 | 2007-04-10 | Veritas Operating Corporation | Migrating virtual machines among computer systems to balance load caused by virtual machines |
US20120117355A1 (en) * | 2010-11-10 | 2012-05-10 | International Business Machines Corporation | Memory Management for a Dynamic Binary Translator |
CN102087609A (zh) * | 2011-02-23 | 2011-06-08 | 中国人民解放军国防科学技术大学 | 多处理器平台下的动态二进制翻译方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106933539A (zh) * | 2016-04-20 | 2017-07-07 | 上海兆芯集成电路有限公司 | 侦测自修正程序码的处理器与方法 |
CN111045958A (zh) * | 2018-10-11 | 2020-04-21 | 展讯通信(上海)有限公司 | 加速引擎及处理器 |
CN111045958B (zh) * | 2018-10-11 | 2022-09-16 | 展讯通信(上海)有限公司 | 加速引擎及处理器 |
CN109683959A (zh) * | 2018-12-24 | 2019-04-26 | 安谋科技(中国)有限公司 | 处理器的指令执行方法及其处理器 |
CN109683959B (zh) * | 2018-12-24 | 2020-12-01 | 安谋科技(中国)有限公司 | 处理器的指令执行方法及其处理器 |
Also Published As
Publication number | Publication date |
---|---|
US20140189659A1 (en) | 2014-07-03 |
KR20170066681A (ko) | 2017-06-14 |
WO2014105030A1 (en) | 2014-07-03 |
KR20150067327A (ko) | 2015-06-17 |
KR101744081B1 (ko) | 2017-06-07 |
CN104813278B (zh) | 2019-01-01 |
US9116729B2 (en) | 2015-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104813278A (zh) | 对二进制转换的自修改代码以及交叉修改代码的处理 | |
KR102496402B1 (ko) | 사용자-레벨 포크 및 조인 프로세서, 방법, 시스템, 및 명령어 | |
KR101817397B1 (ko) | 하나의 아키텍처의 코드 모듈이 다른 아키텍처의 라이브러리 모듈을 사용할 수 있게 하는 아키텍처 간 호환성 모듈 | |
CN104503830B (zh) | 用于引导异构系统并呈现对称核视图的方法 | |
CN109375949B (zh) | 一种具有多个核的处理器 | |
CN104583959B (zh) | 处理访问请求的处理器和系统以及执行访问请求的方法 | |
US9524219B2 (en) | Atomic transactions to non-volatile memory | |
CN104603761B (zh) | 对于页漏失处理程序的并行控制 | |
CN108351830A (zh) | 用于存储器损坏检测的硬件装置和方法 | |
CN104756090A (zh) | 提供扩展的缓存替换状态信息 | |
CN105453030B (zh) | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 | |
JP2017532643A (ja) | 永続ストアフェンスプロセッサ、方法、システム、及び命令 | |
US20150134932A1 (en) | Structure access processors, methods, systems, and instructions | |
CN109313607A (zh) | 用于利用所指示的检查位值来检查位的位检查处理器、方法、系统和指令 | |
KR102298403B1 (ko) | 제어 전송 인스트럭션으로의 리턴 | |
EP3716046A1 (en) | Technology for providing memory atomicity with low overhead | |
US9904586B2 (en) | Interfacing with block-based storage in a processor | |
US20230018828A1 (en) | Device, method and system to provide thread scheduling hints to a software process | |
US20170185413A1 (en) | Processing devices to perform a conjugate permute instruction | |
US20230418750A1 (en) | Hierarchical core valid tracker for cache coherency | |
US20240104022A1 (en) | Multi-level cache data tracking and isolation | |
US20200019405A1 (en) | Multiple Level History Buffer for Transaction Memory Support |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190101 Termination date: 20191227 |
|
CF01 | Termination of patent right due to non-payment of annual fee |