当前位置: 首页 > 专利查询>ARM有限公司专利>正文

在多指令集系统中对未处理操作的处理技术方案

技术编号:2869980 阅读:187 留言:0更新日期:2012-04-11 18:40
诸如Java字节码之类的第一指令集的程序指令的未处理操作被检测。不调用直接处理那个未处理操作的机制,相反,使用来自诸如ARM指令之类的第二指令集的一条或多条指令来仿真遭受所述未处理操作的那条指令。如果第二指令集的这些指令也遭受到未处理操作,则在所述第二指令集中的、用于处理所述未处理操作的机制可以被调用来修补那个操作。这一方法很好地适用于处理如下的可变长度指令的未处理操作,所述可变长度指令由具有本机固定指令集的处理器核心来加以解释。特别是,采用这种方式,可以分方便地处理预取中止和未处理浮点运算。(*该技术在2022年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及数据处理系统领域。更具体而言,本专利技术涉及在支持多指令集的系统中对未处理操作的处理。提供支持多指令集的数据处理系统是众所周知的。这种系统的一个例子是由英格兰剑桥ARM有限公司所生产的支持Thumb指令的处理器。这些启用Thumb指令的处理器支持32位ARM指令和16位Thumb指令的执行。在数据处理系统中,程序指令不能够直接被所述数据处理系统处理的情况会时常发生。相应地,提供处理这种未处理操作的机制也是众所周知的。这种情形的例子是预取指令中止。众所周知的是,当在虚拟存储器系统中预取指令时,指令的加载可能会跨过页面边界,并且中止也会由于新的页面还没有被正确地映射到所述虚拟存储器系统中而发生。然后,就可以完成正确的映射并且重新发出指令预取。这种情形的另一个例子是执行浮点指令。众所周知的是,在浮点运算执行期间,所述数据处理系统不能直接处理的情形有可能会发生。这对于与IEEE 754规范相兼容的浮点系统而言尤其如此。这种情形的例子是除以零的运算、涉及NaN的任何操作、涉及无穷大的任一操作或者涉及反向规格化数的某些操作。问题出现的原因在于当添加一个新指令集时,人们需要花费相当大的精力和相当可观的开发来确保用于所有可能发生的中止的合适中止机制是适当的。当未处理的浮点运算发生时,一个特别的问题会发生。许多系统依靠检查指令流来确定还没有被处理过的浮点运算。使用新指令集,这些系统不得不被重写以便迎合所述新指令集。此外,当所述新指令集能够为新指令集的单条指令生成多个浮点运算时,问题也会出现。在这一情况下,让所述系统通过检查指令流来确定哪个浮点运算还没有被处理过也许是不可能的,因为单条指令可以引起不止一个未处理的浮点运算。另一个问题出现在所述未处理浮点运算是不精确之时,也就是说,在执行生成浮点运算的指令之时,所述未处理浮点运算没有被检测,而相反在以后的某个时候被检测。这种情形发生的原因是由于许多浮点系统的并行性质。所述数据处理系统在碰到指定浮点运算的指令时,给浮点子系统发出浮点运算。一旦所述浮点运算已经被发送给所述浮点子系统,则所述主数据处理系统继续执行在指令流中的其他指令。在所述浮点子系统检测未处理浮点运算并且将未处理操作状态发信号通知给所述主数据处理系统之前,许多指令都可以被执行。在这一情况下,未处理浮点运算的原因都无法通过检查指令流来加以确定。众所周知的是,在像上述的情况下,包含了用于标识未处理浮点运算的寄存器的浮点系统,例如是由英格兰剑桥ARM有限公司所生产的向量浮点系统。在许多系统中,让浮点子系统在任意点将未处理操作发信号通知主数据处理系统是不可能的,未处理操作仅仅在主数据处理系统与浮点子系统执行握手的、已经定义好的点才可以被发信号通知给主数据处理系统。典型地,这些握手仅仅发生在执行指定浮点运算的指令之时。在这一情况下,未处理浮点运算不能够被发信号通知给主数据处理系统,直到主数据处理系统执行指定浮点运算的另一条指令时为止。引入那种可以结合不精确的未处理浮点运算执行每指令多个浮点运算的新指令集,导致很困难的问题或者使系统不可能来处理未处理浮点运算。所述系统无法确定哪条指令引发过未处理浮点运算,并且它还无法确定一旦所述未处理浮点运算已经被处理了,指令流中的执行应该从哪里继续。从一方面来看,本专利技术提供了如下装置,所述装置用于在来自第一指令集和一个或者多个其他指令集的程序指令的控制之下来处理数据,所述装置包括未处理操作检测器,可操作地来检测所述第一指令集的程序指令的未处理操作;和未处理操作处理器,可操作地来在检测所述未处理操作时,触发使用所述一个或多个其他指令集中的至少一个指令集的一条或者多条指令来仿真所述第一指令集的所述指令。本专利技术认为上述问题可以通过如下安排而得到相当大的减少,即,安排所述系统来识别第一指令集中的未处理操作,而不必设法来修补所述情形并且重新执行所涉及到的第一指令集指令。取而代之,引起过所述未处理操作的第一指令集(新指令集)的指令被采用所述一个或多个其他指令集(例如,第二指令集)的一条或者多条指令加以仿真。根据发生了的未处理操作的类型,可能的情况是在仿真时,所述未处理操作将不会重新发生。可替换地,如果在使用所述一个或多个其他指令集的指令进行仿真时,未处理操作又发生了,则处理所述一个或多个其他指令集的这种未处理操作的现有机制可以被用来克服未处理操作。所述未处理操作处理器可以发出指令以便清除数据处理系统的未处理操作状态。一些数据处理系统包括一个或者多个标志,所述标志用于记录数据处理系统是否处在未处理操作状态之中。在仿真所述第一指令集的所述指令之前,这种标志可能需要未处理操作处理器来清除。所述标志是否需要被清除取决于未处理操作的类型以及是否存在与那种未处理操作类型相关联的标志。尽管本专利技术是属于通用型的,但是本专利技术却特别好地适用于如下系统,在所述系统中,第一指令集是可变长度指令集,所述一个或多个其他指令集则是固定长度指令集。这种组合是这样的其中在固定指令集中不可能的新类型的未处理操作在可变长度指令集中却是可能的,并且其中,在当未处理操作自身结合可变长度第一指令集发生时,为处理在所述一个或多个其他指令集中的那些未处理操作而开发的机制并不是很容易地就适合于来处理所述未处理操作。本专利技术在其中具有极强优势的特定情形是处理可变长度指令的提取中止。在这种情形下,可变长度指令可以跨越不止一个指令字,并且对于引起过所述未处理操作的那个指令字的提取,它也许能并不清除。这样就会在正确地处理所述未处理操作中引发困难。本技术还特别好地适用于包含浮点系统或者子系统的系统,在所述系统中,第一指令集的单条指令可以生成多个浮点运算,或者发信号通知未处理浮点运算是不精确的。本专利技术在其中具有极强优势的特定情形是在如下系统中,在所述系统中,结合不精确地发信号通知未处理浮点运算,第一指令集的单条指令可以生成多个浮点运算。在这种情形下,让所述系统确定第一指令集的哪一条指令引发过未处理浮点运算也许是不可能的。本专利技术通过触发使用所述一个或多个其他指令集的一条或多条指令来仿真第一指令集的如下指令来克服这一情形,所述指令在未处理浮点运算已被触发之时正在被执行。第一指令集中的、未处理浮点运算被触发之时正在被执行的指令可能是、也可能不是引发所述未处理浮点运算的那条指令。不管第一指令集中的、未处理浮点运算被触发之时正在被执行的指令是否引发过未处理浮点运算,对第一指令集中的、未处理浮点运算被触发之时正在被执行的指令的仿真,将能够使用于处理所述一个或多个其他指令集的这种未处理操作的现有机制被利用来克服所述未处理操作。在使用所述一个或多个其他指令集的指令对第一指令集的所述指令进行仿真之前,如果存在一个未处理浮点运算标志,则所述未处理浮点运算处理器可能需要将其清除。如果第一指令集中的、未处理浮点运算被触发之时正在被执行的指令是引发未处理浮点运算的那条指令,则在那条指令被仿真之时,相同的未处理浮点运算将再次发生,并且用于处理所述一个或多个其他指令集的这种未处理操作的现有机制将被用来克服所述未处理操作。如果因为数据处理系统采用了不精确的未处理浮点运算检测,所以第一指令集中的、未处理浮点运算被触发之时正在被执行的指令不是引发未处理浮点运算的那条指令本文档来自技高网...

【技术保护点】
用于在第一指令集和一个或多他指令集的程序指令的控制下处理数据的装置,所述装置包括:(i)未处理操作检测器,可操作地来检测所述第一指令集程序指令的未处理操作;和(ii)未处理操作处理器,可操作地来在检测所述未处理操作时,触发使 用所述一个或多个其他指令集中的至少一个指令集的一条或多条指令来仿真所述第一指令集的所述指令。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:EC内维尔AC罗斯
申请(专利权)人:ARM有限公司
类型:发明
国别省市:GB[英国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利