对二进制转换的自修改代码以及交叉修改代码的处理的制作方法

文档序号:8491688阅读:500来源:国知局
对二进制转换的自修改代码以及交叉修改代码的处理的制作方法
【技术领域】
[0001] 发明领域是对二进制转换的自修改代码以及交叉修改代码的处理。
[0002] 背景
[0003] 可以设计处理器核,以执行以特定编码语言编写的代码。为了让程序由一个特定 核执行,程序代码可能需要从与该特定核不兼容的第一编码语言转换到与该特定核兼容的 第二编码语言,被称为二进制转换。
[0004] 自修改代码(SMC)是指在执行过程中被修改的代码,例如,在执行时SMC的一个或 多个指令修改SMC的其他指令。交叉修改代码(XMC)是指可在第一处理器核执行的,并且 当执行时导致对可在第二处理器核上执行的第二代码的修改的第一代码。SMC或XMC可以 在执行之前被部分转换或完全转换。与在前进到下一指令之前转换并执行每一指令相比, 在执行之前转换多个指令可能会在转换的代码中带来异常。转换的代码中的异常会导致输 出中的错误。
[0005] 附图简述
[0006] 图1是根据本发明的一个实施例的包括多个处理器核的处理器的框图。
[0007] 图2包括包括根据本发明的各实施例的存储代码的存储器的一部分的框图。
[0008] 图3是根据本发明的一个实施例的转换指示符代理(XTBA)的框图。
[0009] 图4是根据本发明一实施例的与处理器相关联的缓存存储器的框图。
[0010] 图5是根据本发明的一个实施例的处理自修改代码(SMC)的方法的流程图。
[0011] 图6是根据本发明的一个实施例的处理交叉修改代码(XMC)的方法的流程图。
[0012] 图7是根据本发明的一个实施例的处理器核的框图。
[0013] 图8是根据本发明的实施例的处理器的框图。
[0014] 图9是根据本发明的另一实施例的多域处理器的框图。
[0015] 图10是包括多个核的处理器的实施例的框图。
[0016] 图11是根据本发明的实施例的系统的框图。
【具体实施方式】
[0017] 在各实施例中,提供了用于执行包括SMC或XMC的经转换代码的方法和设备。在 一个实施例中,处理器包括执行经转换的第一指令的核,所述经转换的第一指令是从存储 在存储器的一个页面中的第一指令转换的。核还包括转换指示代理(XTBA),例如,存储第一 转换指示符的专用的缓存存储器,所述第一转换指示符指出在第一指令的转换完成之后页 面的内容是否被修改。
[0018] 现在参照图1,其中示出了根据本发明一实施例的包括多个核的处理器100的框 图。在一个实施例中,处理器100可包括核102、120、130以及140。核102可包括用于执行 指令的执行单元104,该指令可以存储在缓存存储器或可以被从系统存储器160(例如,动 态随机存取存储器(DRAM))中检索;用于存储一个或多个转换指示符的XTBA 106;-级数 据缓存0$)1〇8;二级(中间)数据缓存(MLC)llO;以及三级(末级)数据缓存(LLC)112。 核120、130以及140中的每一个都可以具有对应的XTBA以及对应的一级缓存、二级缓存以 及三级缓存。
[0019]每一核102、120、130、140都可以耦合到物理图谱缓存(physical map cache PM$) 150,该物理图谱缓存150存储多个转换指示符。PM$150可包括从转换指示符的物理图 谱(PhysMap) 170复制的条目的一部分,PhysMap 170中的每一转换指示符都与存储器160 中的多个页面180中的对应的页面相关联。例如,与页面A相关联的并且存储在PhysMap 170中的转换指示符可以指出存储在页面A中的第一指令是否已经被转换为第一经转换的 指令,例如,从第一编码语言到第二编码语言。第一经转换的指令可以被存储在系统存储器 160的另一页面中。
[0020] 在操作中,XTBA 106可以存储对应于页面A并且与第一经转换的指令相关联的 第一转换指示符。可基于,例如,第一经转换的指令的标记信息,从,例如,PM$150,或从 PhysMap 170,检索到第一转换指示符。在一个示例中,XTBA 106中的第一转换指示符可能 具有值1,并且指出已经发生第一指令的转换。
[0021] 如果在第一指令转换到第一经转换的指令之后页面A被修改,则转换指示符的值 可以从1更新到〇,以指出在转换第一指令之后页面A已经被修改。如果在转换之后页面A 被修改,则经转换的第一指令可以被视为陈旧的,例如,第一经转换的指令被视为它不再是 有效指令。尽管有可能出现这样的情况:当页面A被修改时第一指令没有改变,但是,在此 实施例中,转换指示符图的粒度是每个页面一个转换指示符。因此,对页面A的修改被视为 第一指令已经被修改。响应于第一经转换的指令被标识为陈旧,核可以中止第一经转换的 指令的执行。
[0022] 在第一经转换的指令的执行过程中,XTBA106被配置成监测与页面A相关联的并 且存储在PhysMap170中的转换指示符的值。如果PhysMap170中的第一转换指示符由于 例如在经转换的第一指令的执行开始至执行完成("提交")之间的任何时间向页面A内的 一个地址的STORE指令的执行,从值1更新到值0,则可以中止第一经转换的指令的执行。
[0023] XTBA106可以在物理上被标记,以允许监听对PhysMap170的更新。对PhysMap 170的更新会导致向系统100中的所有XTBA生成监听。所生成的监听会发生作用,以警告 XTBA中的每一个,第一经转换的指令陈旧,且第一经转换的指令的执行将在执行第一经转 换的指令的每一核中停止。
[0024] 核102中的数据缓存108、110以及112中的每一个的每一缓存线都将存储数据 (对于核120,130以及140中的数据缓存,类似),例如,从存储器160的一个或多个页面检 索到的操作数。在一个实施例中,每一缓存线都可包括被添加到缓存线的标记部分的转换 指示符,分别被描绘成缓存存储器108,110以及112中的每一个中的添加的列114,116以 及118。可以从PhysMap 170或从PM$150复制缓存线内的转换指示符。给定缓存线的转换 指示符可以与存储器160中的从其中加载缓存线中的数据的特定页面相关联。
[0025] 在操作中,可以从存储器160的页面A中检索操作数,并可以将其存储在核102内 的缓存存储器108的第一缓存线中。由于源页面A包括已经被转换的代码而页面A随后没 有被改变,因此,与页面A相关联的转换指示符具有表示转换的值(例如,值1)。如果要由 核102执行的经转换的指令包括要对第一缓存线中的操作数执行的STORE,则该缓存线中 的转换指示符值向核102指出STORE的执行将导致冲突,例如,经转换的指令的源页面的修 改。因此,可能会生成错误,执行控制可以转移到停止STORE执行的处理程序。可以使来源 于存储在页面A中的代码的所有经转换的指令作废。在通过处理程序对操作数执行STORE 之后,可以重新转换或以别的方式处理随后的程序指令。
[0026] 现在参考图2,所示是根据本发明的各实施例的存储代码和数据的存储器的存储 器部分的两个实施例的框图。存储器部分可以被包括在图1的系统存储器160中。
[0027] 在一个实施例中,存储器部分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与指令的转换相关联,而值〇与没有转换相关联。其他实施例可以使用 不同的值来指出指令的转换或无转换。
[0028] 在操作中,线220中的经转换的指令A1可包括要对操作数执行的STORE指令(例 如,微操作(uop)),例如,将寄存器内容存储到页面A 214中的地址。由于STORE指令的执 行将改变页面A 214的内容,因此,执行STORE的核可以在STORE的执行之前,基于与操作 数相关联的转换指示符,生成错误,并且执行控制可以转移到更新经转换的指令A1或使其 无效的处理程序。即,由于缓存线的标记部分的转换指示符可以向核指出,页面A内的代码 已经被转换,执行STORE将改变经转换的指令的源页面。错误可以触发PhysMap 170中的 与代码页面A 214相关联的转换指示符的更新(例如,通过向PhysMap 170的WRITE),例 如,从值1更新为值〇,以指出经转换的指令A1陈旧,并且,在执行STORE之后,将发生重新 转换。
[0029] 在另一个实施例中,存储器部分230包括数据页面C和D 232、代码页面A 234和 代码页面B 236、经转换的代码行238和240,以及转换指示符物理图谱PhysMap 236。线 238和240
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1