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

文档序号:8491688阅读:来源:国知局
可以分别存储经转换的指令A1和B1,它们可能是分别从代码页面A 234和页面 B 236中的交叉修改代码(XMC)转换的。PhysMap 236将存储存储器230的页面的转换指示 符值,包括代码页面A 234和B 236的转换指示符值,其中每个都带有指出页面234和236 中的代码已经被转换的相关联的转换指示符。数据页面232中每一个都具有相关联的转换 指示符值〇,以指出没有转换数据页面232的内容。
[0030] 在操作中,第一核(核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 指令的操作数的缓存线中的缓存线转换指示符。
[0031] 对PhysMap 236的更新可以导致向系统中的所有XTBA生成监听,包括向正在执行 经转换的指令B1的核1中的XTBA。由于经转换的指令B1正在被执行,因此,核1的XTBA 可以存储与代码页面B相关联的转换指示符值。核1的XTBA中的转换指示符值从第一值 更新到第二值可以向核1指出,经转换的指令B1陈旧,导致经转换的指令B1的执行中止。 [0032] 在另一个实施例中(未示出),输入/输出(I/O)单元可以通过直接存储器访问 (DMA)修改代码页面A 234。对代码页面A的修改会触发向PhysMap 236的WRITE,以更新 与页面A 234相关联的指出页面A中的代码在页面A中的指令的转换之后已经被修改的相 关联的转换指示符值。相关联的转换指示符的已更新的值可以向系统的所有XTBA生成监 听,导致与经转换的指令A1的执行相关联的一个或多个错误。因此,在执行经转换的指令 A1的每一个核中,可以中止经转换的指令A1的执行。
[0033] 现在参考图3,所示是描绘了根据本发明的一个实施例的转换指示符代理 (XTBA) 300的框图。XTBA 300可包括多个存储比特,包括存储比特302。每一个存储比特 都被配置成存储与当前正在执行的指令或最近已执行的指令相关联的转换指示符值,每一 个转换指示符值还与存储器的从其转换了当前正在执行的指令的对应的页面相关联。XTBA 300的存储比特可以从,例如,诸如图1的PM$150之类的转换指示符缓存加载,或可以从诸 如图1的PhysMap 170之类的与存储器的页面相关联的转换指示符的物理图谱加载。
[0034] 在一个实施例中,XTBA 300可以发生作用,以监测执行中的经转换的指令的状态。 例如,在经转换的指令A1的执行开始时,XTBA 300中的与页面A(包含对应的末经转换的 指令)相关联的转换指示符指出,经转换的指令A1有效。XTBA 300可以监测与页面A相关 联的并存储在PhysMap中的转换指示符的值。如果与页面A相关联的转换指示符的值在经 转换的指令A1的执行过程中变化,则经转换的指令A1的执行可以被中止,并可以被发送到 处理程序以完成执行。
[0035] 另外,处理程序还可以向系统的所有其他XTBA生成监听,诸如向图1的处理器100 中的其他XTBA中的每一个。向系统中的其他XTBA中的每一个的监听可以导致对应于现在 陈旧的经转换的指令的相应的转换指示符的更新。监听可以导致中止其他核中的经转换的 指令的执行,每一个核都可以向相应的处理程序发送经转换的指令以完成执行。
[0036] 现在参考图4,所示是描绘了与诸如图1的处理器110之类的处理器相关联的一组 数据缓存400的框图。该组数据缓存400包括一级数据缓存410、二级数据缓存420以及三 级数据缓存430。
[0037] 每一个数据缓存都可包括多个缓存线。每一个缓存线都可包括数据存储部分,诸 如数据存储部分412、422以及432,每一个都存储操作数以及诸如标记部分414,424以及 434之类的标记部分。每一个标记部分都可包括对应的存储的转换指示符,诸如转换指示符 416,426以及436。标记部分中的每一个转换指示符都可以对应于存储器中的从其中复制 了操作数并且操作数被置于数据存储部分的源页面的转换指示符。
[0038] 在一个实施例中,STORE指令将在其转换指示符具有指出STORE被指向包含已经 被转换的代码的源页面的值的缓存线的操作数上执行。因此,STORE指令的执行将修改源 页面的内容。执行STORE指令的处理器可以通过读取缓存线中的转换指示符值,来检测冲 突,并可以复位转换指示符,向处理程序发送STORE指令以解决即将发生的冲突。如此,存 储在缓存线中的转换指示符可以充当冲突的指示符,例如,包含已经被转换的指令的源代 码页面的修改。
[0039] 对与STORE指令相关联的即将发生的冲突的检测可以导致PhysMap中的对应的转 换指示符从第一值更新到第二值的生成。对PhysMap的更新可以导致向系统的所有XTBA 的监听的生成。每一监听都更新正在执行经转换的指令的核的XTBA中的经转换的指令的 相关联的转换指示符,以指出经过经转换的指令陈旧。监听还可以导致对与源代码页面相 关联的缓存线(例如,其内容是从源代码页面加载的缓存线)的转换指示符值的更新。
[0040] 例如,在一个实施例中,在第一经转换的指令在处理器上的执行开始时,处理器的 XTBA将监测源代码页面的转换指示符。在有指出对源代码页面的修改的转换指示符被更新 的指示时,更新XTBA条目,导致停止现在陈旧的对应的指令的执行的错误。另外,可以响应 于更新的转换指示符的指示,向每一个缓存生成监听,这会导致对从源页面加载了其存储 的数据的缓存线中的每一个转换指示符的更新。特定缓存线中的已更新的转换指示符值可 以指出,第一经转换的指令将不在该特定缓存线上执行,而是将被转移到处理程序以完成 执行。
[0041] 现在参考图5,所示是用于对从自修改代码的执行产生的冲突作出响应的方法 500。在一个实施例中,方法500可以由诸如图1的处理器102之类的核来执行。
[0042] 从框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结束。
[0043] 图5的方法可以通过硬件、软件、固件,或其组合来执行。可以理解,虽然在图5的 实施例中以高级别示出的,但是,本发明的范围在不受限制。
[0044] 现在参考图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),还更新缓存线转换指示符值。
[0045] 前进到框614,对PhysMap的更新生成对系统中的所有XTBA的监听。移向框616, 核1中的XTBA接收监听命中,该监听命中在核1中生成错误。转到框618,核1响应于相关 联的XTBA中的对应的更新的转换指示符值,中止经转换的指令B1的执行。在方框620中, 该方法结束。
[0046] 图6的方法可以通过硬件、软件、固件,或其组合来执行。可以理解,虽然在图6的 实施例中以高级别示出的,但是,本发明的范围在不受限制。
[0047] 各实施例可以在许多不同的系统中实现。例如,实施例可在诸如多核处理器之类 的处理器中实现。现在参照图7,所示是根据本发明一个实施例的处理器核的框图。如图 7所示,核700可以是多核处理器中的一个核,并且被示为多级流水线化的无序处理器。在 图7中利用相对简化的视图示出处理器核700,以示出与根据本发明的实施例的数据错误 纠正结合使用的多个特征。
[0048] 如图7所示,核
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1