首页> 中国专利> 高级微处理器中增强调度的方法和设备

高级微处理器中增强调度的方法和设备

摘要

通过忽略对调度操作的某些常规限制条件和简单调度能尽快运行的某些指令,使调度程序产生能更快执行代码的多种设备和一种方法,如果该调度违背了某个调度限制条件,则能确定所需采用的步骤,使引起异常的每组指令正确执行。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-07-07

    专利权有效期届满 IPC(主分类):G06F13/00 授权公告日:20050518 申请日:20000612

    专利权的终止

  • 2009-12-09

    专利申请权、专利权的转移(专利权的转移) 变更前: 变更后: 登记生效日:20091106 申请日:20000612

    专利申请权、专利权的转移(专利权的转移)

  • 2005-05-18

    授权

    授权

  • 2002-08-07

    实质审查的生效

    实质审查的生效

  • 2002-06-26

    公开

    公开

说明书

技术领域

本发明涉及计算机系统,并且特别针对在改进微处理器中加速指令重新排序的方法和设备。

背景技术

近来,开发出一种新的微处理器,该处理器结合单个,速度很快的主处理器(称为“形态主机”)以及软件(称为“代码形态软件”)来执行为在速度上区别于形态主处理器的处理器设计的应用程序,该处理器达不到形态主处理器的速率,而应用程序是为它设计的(目标处理器)。形态主处理器执行代码形态软件将应用程序翻译为形态主处理器指令完成原始目标软件的目的。因为目标指令已被翻译好了,它们都经执行并存入翻译缓冲器中,在那它们不用通过进一步翻译就能被存取。虽然程序的初始翻译和执行比较慢,一旦翻译成功,就省略了许多用硬件执行程序通常所需要的步骤。

为了能高速执行为其他处理器设计的程序,形态主处理器包括许多硬件增强。这些硬件增强中的一个就是驻留在主处理器和翻译缓冲器之间的门控存储缓冲器。第二个硬件增强是一组主寄存器,它在任何目标指令序列开始翻译时,存储目标机器状态。估作目标处理器状态的目标指令序列翻译成形态主指令,并放置在等待执行的翻译缓冲器中。如果翻译的指令执行时没有发生异常,指令序列开始时的目标状态就更新为序列完成点处的目标状态。

如果在经翻译的主指令序列执行期间发生异常,处理停止,以及整个操作可能返回或转换到目标指令序列开始时存在的已知目标机器状态。这就允许在动态翻译和执行指令时迅速而又精确地处理异常,这是已有技术从没有实现的效果。

通过作为代码形态软件一部分的调度程序,使新处理器在运行时可以获得额外的速度。调度程序会对指令进行重排序和重调度,将指令从粗译产生的原始顺序翻译为能产生相同结果但允许更快执行的顺序。调度程序尝试将某些指令置于其他指令之前或将指令一起运行,以便经重调度软件的执行花费更少的时间。调度程序功能具有很多限制条件,其中最基本的就是重新经调度的程序必须仍然产生与原始程序相同的最终结果。例如在程序中存在着为了使序列产生正确结果而不允许中断执行的指令序列。为在不妨碍所产生结果的情况下,调度程序就不能干涉这样的序列。许多处理器提供了硬件互锁来确保这样的序列在实际运行时不会中断。对这样指令序列的保护需要又对没有硬件互锁的处理器例如所述的高级形态主处理器,提出特殊的限制条件。软件必须以某种方式注意到这样的序列并确保它们不被中断地运行。

控制相关性是重排序时调度程序所面临的另一个传统限制条件。控制相关性涉及转移指令;调度程序必须确保在转移发生前后指令的重排序不会引起程序的错误运行。

其他影响加载重排序的相关性是关于存储方面。例如,如果更新的数据存在一个存储器地址,并且随后用一寄存器操作进行操作,该地址的数据在发生存储时就不应该保留在寄存器中,寄存器中的数据可能失效。

所有这些限制条件使得典型的调度程序很保守地运行,并且因此产生比较慢的代码。

传统的调度程序很适合确定那些为了完成重排序而彼此相关的指令。普通的调度程序能够确定以某种方式依赖其他操作的某些操作,以及确定不以任何方式依赖于其他操作的某些操作,但它不能确定关于其他指令的任何事。这样的调度程序对待那些依赖其他操作的操作很保守,仍以它们原来顺序排列。这样的调度程序对那些完全独立于其他操作的操作就能以其期望的方式重排序它们。最终,调度程序将所有那些它不能确定是否具有相关性的操作作为依赖于其他操作的操作进行处理,并保守而又迟缓。

可设想提供能用于让高级处理器的调度程序的电路和软件,便于生成加速执行的代码。

发明内容

本发明是用多种设备和一种方法来实现的。通过忽略调度操作中的某些通常限制条件,并简单地调度某些指令尽快地运行,如果调度违反了某个调度限制条件就产生异常,并确定对产生异常的每组指令所要采用的步骤,使调度程序软件生成能够更加迅速执行的代码。

本发明的这些和其他目标和特征可以通过参照下面结合附图的详细描述来更好地理解,在几张附图中,相同的单元用相同的标识表示。

附图说明

图1是说明利用本发明的新微处理器图。

图2是用于实现如图1所示的新微处理器的硬件框图。

图3是说明如图1所示的新处理器的主要处理循环流程图。

图4是说明新处理器一部分的框图。

图5是说明新处理器另一部分的框图。

图6是说明根据本发明设计的调度程序软件操作流程图。

图7是说明用于实现本发明的电路的一个实施例框图。

具体实施方式

图1说明一种新微处理器10,该处理器结合一个比现代微处理器更简化的增强硬件处理部分(称为“形态主机”)和一个仿真软件部分(称为“代码形态软件”)。这两部分功能结合执行通常由高级微处理器中是由硬件单独完成的操作。新微处理器10比已有的微处理器更快,能运行已有许多的微处理器系列所运行的所有操作系统的全部软件

微处理器10包括一个形态主处理器11它是用来为执行不同目标处理器应用程序,而执行代码形态软件12。形态主机11包括特别适用于允许由代码形态软件12提供的加速技术更加有效使用的硬件增强。形态主处理器包括用于协助加速操作和在发生异常或错误时立刻提供目标计算机状态的硬件增强。代码形态软件包括软件,在其中将目标程序指令翻译成形态主机指令,对主指令进行调度和优化,并在必要时通过从异常返回到已知正确执行的最后点来响应异常和错误,并将访点正确目标状态替代工作状态,以便正确翻译目标代码。代码形态软件还包括用于增强处理速度的不同处理。图2的框图详细说明实现这里所讨论特性的形态主机硬件实例。

如图3中说明(图3描述了代码形态软件12的主循环操作),代码形态软件结合增强形态主机在扫描中将目标指令翻译为形态主机指令,并用一种存储器数据结构将这些主指令存入超高速缓存(称为“翻译缓冲器”)。一旦目标指令经翻译,它也能从翻译缓冲器中调用并执行,并不需要无数已有微处理器技术中所必须的步骤例如:确定执行每条目标指令需要哪条原始指令,寻址每条原始指令,获取每条原始指令,对原始指令序列进行优化,给每条原始分配资源,对原始指令重排序,并在每执行每条目标指令一次时,要执行所涉及的每个原始指令序列的每个步骤。

现有仿真技术的主要问题是在目标程序执行期间不能高效处理产生的异常。某些在运行目标应用程序时所产生的异常指向目标操作系统,并且为了正确执行异常和随后的指令,在发生任何异常时,正确的目标状态很有用。为检测由某些特定主功能替代的特定目标操作,仿真程序还可能产生其他异常。主处理器在执行由目标指令导出的主指令时,也能产生异常。所有这些异常可能在由仿真程序试图将目标指令转换成主指令期间或当主处理器执行仿真主指令时产生。指向目标操作系统的异常是特别难处理的,因为它们需要一直了解目标处理器的状态。

为了有效地从这些异常恢复,增强形态主机包括许多硬件改进。这些改进包括一个门控存储缓冲器(参照图5)。该门控存储缓冲器存储硬件“门”的“未委托”侧上的工作存储器状态变化以及这些委托存储将“漏”向主存储器的硬件门“委托”侧的正式存储器状态变化,“委托”操作是将存储器存储从门的未委托侧转移到门的委托侧。如果发生异常,“返回”操作就放弃门控存储缓冲器中的未委托存储。

硬件改进还包括大量附加处理寄存器(参照图4)。除了能够允许寄存器重命名来减少试图使用相同硬件资源的指令问题外,附加寄存器允许维持一组主或工作寄存器处理主指令和一组目标寄存器保持最初创建目标应用程序的目标处理器的正式状态。目标寄存器通过专用接口与它们的等效工作寄存器相连,这就允许委托操作能将所有工作寄存器的内容迅速转移到正式目标寄存器并允许一个称为“返回”的操作能迅速将所有正式目标寄存器的内容迅速转回到它们的等效工作寄存器。

一旦一条或一组目标指令经过翻译并且没有错误地运行,附加正式寄存器和门控存储缓冲器就允许存储器状态和目标寄存器状态一起更新。更新由代码形态软件选择在整合目标指令边界发生。如果主处理器在运行由一系列目标指令翻译产生的原始主指令时没有产生异常,那么那些指令产生的工作存储和工作寄存器状态就转移给正式存储器和正式目标寄存器。

另一方面,如果在处理非目标指令边界点的主指令时发生异常,目标寄存器中最后更新(或委托)的原始状态可能由工作寄存器中调回,而在门控存储缓冲器中的未委托存储器存储可能被丢弃。随后,如果产生的异常是目标异常,引起目标异常的目标指令可能用一个目标微处理器每次一条地进行重新翻译并以串行序列执行。因为正确执行每条目标指令都没有错误,所以目标寄存器的状态可以更新;并且存储缓冲器中的数据门控进入存储器。随后,当在运行主指令时再次发生异常,目标处理器的正确状态保留在形态主机的目标寄存器和存储器中;并且可能没有延迟地就能正确处理操作。为了今后使用,将这种校正翻译产生的每个新翻译进行高速缓存。因为某一次或少有发生事件例如页错误会引起的翻译或丢弃而贮藏。这些特性的结合由代码形态软件和形态主机组合创建的微处理器能够比最初为其编写软件的处理器更加迅速地执行指令。

除了简化翻译指令、超高速缓存翻译的指令,并且每当需要那组指令执行时就执行每个翻译之外,代码形态软件也会对不同的翻译进行重排序、优化和重调度。一种优化处理将经翻译主指令的不同序列彼此连接或执行期间会变得明显的可能转移。最终,主指令的转移指令中的主要循环参照几乎完全消除。当达到这种条件时,就消除了获取目标指令,目标指令的解码,获取补偿目标指令的原始指令,优化那些原始操作,对原始操作重排序,并在运行任何主指令之前重调度那些原始指令所需的时间。这样,使用改进微处理器运行任意组目标指令所需的工作量就大为减少。

如上面所指出的,重排序操作使用调度程序,它试图为那些看来正确存在但缺乏经验排序的指令选择更好的排列。调度程序面临的问题是它们的运行受很多约束。最基本的约束就是程序所产生的结果必须和执行原始指令序列时产生的结果相同。所有这些限制条件促使传统的调度程序运行保守,并且因而产生执行缓慢的代码。

例如,为了确保产生正确的结果,典型的调度程序依据判定原则操作选择哪些是不具相关性的指令,哪些是具有相关性的指令,以及那些是未知是否有相关性的指令。具有相关性的指令和那些未知是否有相关性的指令都作为存在相关性来处理不重排序。仅有那些已知没有相关性的指令重新排序。遵循这些准则,调度程序产生的代码执行缓慢。

另一个限制条件涉及形态主处理器的特定实施例。形态主处理器的一个实施例是一种通过消除延缓操作的特定电路来设计出运行迅速的处理器。形态主处理器的这个实施例设计并没有采用硬件锁定机制。硬件锁定机制是一种想要确保指令特定序列中的所有步骤不被中断就执行的电路。缺少锁定机制就需要调度程序能够严格运行来确保这样序列中的所有步骤是以没有经过任何重排序的最初翻译排序进行处理,以便处理器能从该序列中产生正确结果。

本发明的调度程序是代码形态软件的软件部分。不同于已有的硬件调度程序,软件调度程序在重排序指令中使用了推理技术。调度程序对于某些指令推测期望的可能最快操作,并对指令重排序来完成结果。如果推测的选择是不正确的,在形态主机所提供的硬件就产生异常。在大多数情况下,推测是正确的,所以整个结果就有更加快的操作。然而,如果推测不正确,那么异常通常引起软件使用门控存储缓冲器,并且引起目标寄存器将操作返回到推测序列的开头,其正确状态是已知的。

对照已有调度程序技术使用的判定策略,本发明的调度程序在为重排序选择指令类别中使用概率准则。改进的调度程序从一组目标指令翻译所产生的指令序列中选择出4种指令序列类别(参照图6)。这些类别包括不具有相关性的指令序列、具有已知相关性的指令序列、可能不具有相关性的指令序列和可能具有相关性的指令序列。如同已有技术,那些已知不具有相关性的指令序列可能由调度程序随意重排序;并且那些具有已知相关性的指令序列以翻译程序所提供的序列顺序处理。

然而,那些可能没有相关性的指令作为实际上并没有相关性来处理,并且以能够提供可能最快执行的方式来进行重排序。在形态主机中配置了硬件装置来检测不正确的重排序,并且如果实际上存在相关性就引起异常。为了在操作序列错误执行时引起异常,调度程序连同硬件装置确保检测出可能错误执行的每条重排序指令。这样的异常允许调度程序忽略先前引起异常的重排序,并保守或以其他某些更适合的方式处理序列。

另一方面,可能积极或保守地处理那些可能具有相关性的指令。如果积极处理,它们就作为可能不具有相关性的那些指令处理。它们以提供可能最快执行的方式进行重排序,并且使用形态主机中提供的硬件来检测,不正确重排序就引起的异常。如果保守处理,它们就以翻译器提供的序列顺序处理。通常,因为大量异常的产生会明显减缓处理速度,所以保守处理将提供更快的处理。

在本发明的一个实施例中,将如图7所示的电路加入到主处理器中。这个电路是用来存储一个存储器地址由调度程序使用特殊“加载和保护”或“存储和保护”操作进行重排序的指令来存取。只要指令进行重排序时就使用这种“加载和保护”或“存储和保护”操作,将重排序指令存取的存储器地址放置在设计作为保护寄存器使用的形态主机的多个寄存器71中的一个。在一个实施例中,提供了8个保护寄存器71。“加载和保护”或“存储和保护”指令指明了用作保护的特定保护寄存器。

虽然“存储器地址”术语在本说明书中是用来说明加载和保护以及存储指令,但这个术语也作为确定被保护存储器区域的许多可能排列的参照来使用。用存储器地址术语是说明经保护的存储区域描述符。例如,在具有字节编址的存储器系统中,本发明的一个实施例使用开始存储器地址和等于地址区域中字节数的许多位来表示那些字节中每个字节的保护情况。在另一个类似编址的实施例使用开始存储器地址和长度,而第三实施例使用单独字节地址,并对每个字节地址使用单独的比较器。

在示范操作中,指令序列包括顺序为第一存储指令STORE1,第二存储指令STORE2,以及加载指令LOAD1。调度程序以假设重排序可能不会引起不正确操作,在重排序序列中,首先放加载指令,其次是第二存储指令,而第三是第一存储指令。为做到这点,调度程序使用“加载和保护”操作来将加载数据放在一个通用寄存器72中,并且导出加载数据的存储位置地址由指令分配到保护寄存器71。因为软件调度程序知道哪些指令需要检测来确定重排序是否会引起错误,调度程序在那些可能由于重排序而受影响的后续指令(在本情况中,放加载前面的STORE1和STORE2指令)中放置标识(例如在位屏蔽中的一位)指明存有被保护存储器地址的特定保护寄存器。该标识出现的特定位置(如果陷阱功能使用8个保护寄存器,就是8位中的一位)表示该指令的执行依赖于由存储指令所放每个存储地址是否与指定保护寄存器71中持有的存储器地址重叠。

同样,调度程序使用“存储和保护”操作将STORE2指令数据存入存储器中,并将数据要存储的存储器位置的地址放置在由存储和保护指令指定的保护寄存器71中。调度程序还为可能受重排序影响的每个指令(本情况中,只有STORE1指令)的位屏蔽中放置一个标识,表示持有这个被保护存储器地址的特定保护寄存器。最终,调度程序对最后的STORE1指令使用普通的存储指令。

当指令序列执行时,主机硬件使用比较电路73来确定这3个指令中的每个指令的存储器地址是否与存入某个保护寄存器71中的存储器地址上的任意数据部分重叠,并且如果重叠就产生异常。这样,LOAD1操作(已经成为加载和保护)就将其存储写入到保护寄存器71中,但并不检查任何保护寄存器,因为它们都没由设定的标识来指定。STORE2操作(已经成为加载和保护)将其存储出位置写到另一个保护寄存器71中,并检查已被LOAD1使用的保护寄存器71,确定它们的存储器位置之间是否有重叠。最后,STORE1操作(虽然经保护寄存器标识器扩充过,但还是简单存储)对每个LOAD1和STORE2指令的保护寄存器进行检查来确定在其存储器地址和LOAD1和STORE2指令的存储器地址之间的重叠。在上述第一和第三实施例的情况下,比较允许保护精确到字节级。

任何异常会引起代码形态软件决定应答该异常所采用的步骤。通常,代码形态软件执行失败的重排序的指令序列,并且使主机恢复到指令序列开头目标处理器的状态,从而对指令序列再进行保守处理。如果地址不同(在实例中表示存储指令不存取经保护的存储器地址),重排序指令序列的执行以重排序提供的加速进行。

为了完成主处理器和调度程序之间的通讯,修改了形态主机所使用的加载和存储指令。在一个实施例中,这些指令完全由“加载和保护”以及“存储和保护”指令所替代。每个“加载和保护”以及“存储和保护”指令包括位屏蔽(例如对应于8个保护寄存器的8位),用作标志的指明从中能寻找经重排序或别名的指令存储器地址的特定保护寄存器。这些位中的每一位指定一个有用的保护寄存器,其中存储硬件要检验的存储器地址。在可能受重排序影响的后续指令执行之前,当重排序指令时,指定存储存储器地址的专用保护寄存器可能用这个位屏蔽进行检查。“加载和保护”以及“存储和保护”指令可能用于分别替代通常的加载和存储指令,因为当位屏蔽时中没有位可设置时,就不会有检查发生。在这种情况下,“加载和保护”以及“存储和保护”操作就等同于加载和存储操作。还需要注意保护寄存器和持有存储器数据的特定通用寄存器之间的能力,允许有效少量使用保护寄存器。

本发明的主处理器还包括一个称为允许保护寄存器74的附加寄存器,用来存储含有与重排序指令相关的有效存储器地址的保护寄存器位置。指示特定保护寄存器的位被设定用来指明使用由“加载和保护”或“存储和保护”指令提供的标识的保护寄存器。在一个实施例中,只要发生委托操作,就清空允许保护寄存器的位来表示经翻译和重排序的指令序列执行时,没有发生重排序异常。因为重排序仅在两个委托操作点之间发生的所有指令序列中进行,这就允许重排序操作能对每个新翻译的指令序列使用所有分配来进行重排序的保护寄存器。

新发明的附加优势在于“存储和保护”指令着眼于彼此来进行存储重排序。在本发明中,这可以通过在存储位置存储数据,而将存储位置地址放在保护寄存器中来保护。当可能受重排序影响的后续存储出现,它的位屏蔽会指明硬件应对其存储器地址进行检查的保护寄存器,确定是否将发生异常或存储重排序是否已正确完成。

在新微处理器的一个实施例中,为了消除从存储器中获取数据所需时间或在存储器中存储数据所需时间,已提供的电路配置允许在操作异常中经常使用的存储数据在执行单元寄存器中被复制(或“别名”)。例如,如果在执行一个或更多代码序列期间,存储器中的数据频繁重用,则通常每次使用数据时,就必须要从存储器中获取数据,并加载到执行单元中的寄存器中。为了减少这种频繁的存储器存取所需要的时间,数据可以改为在代码序列开始就从存储器中加载到执行单元寄存器,并且分配运行的寄存器取代代码序列继续期间的存储器空间。一旦这完成,通常包含到将从指定的存储器地址数据加载到寄存器中的操作改为简单地从寄存器-寄存器的复制操作,这种操作具有更快的速度;并且那些复制操作常常可由进一步优化而取消。

同样,在代码序列执行期间,代码序列的执行经常需要数据频繁地写入到一个存储器地址。为了减少这种频繁将数据存储到相同地址所需的时间,每次数据写入到存储器地址时,在代码序列继续期间,可将数据传送到指定运行的执行单元寄存器来取代存储器空间。一旦指定了执行单元寄存器,数据的每次变更仅需要一个简单的寄存器-寄存器传送操作,这比存储到存储器地址的处理要快很多。

别名电路的操作在美国专利申请序列号08/721,698,1996.9.26登记,名为“在高级微处理器中别名存储器数据的方法和设备”中有描述(Method andApparatus for Aliasing Memory Data in an Advanced Microprocessor),M.Wing等人,并且这项专利已经转让给本发明的受让人。

本发明用于加速重排序操作的第二实施例使用了某附加硬件,因此同样的硬件既能用于重排序,也能用于上述发明申请的存储器地址别名方式。需要注意重排序指令通常在相邻委托操作之间的间隔中发生,而执行单元寄存器中的别名存储器数据则通常会在更长的时期中仍然有效。在第二实施例中,加了第二个“持续”寄存器76,它和为重排序提供短期保护的允许保护寄存器74一起使用,允许有长期或持续的保护,它以寄存器74相同的方式使用,但仅记录那些存储器地址应维护的周期要比相邻委托操作之间的周期更长的保护寄存器。

例如,如果希望别名一个存储器地址并希望在某个较长周期(例如一个循环)将数据存储在用的主寄存器中,则将持有长期别名操作地址的保护寄存器的标识从指令中复制,允许保护寄存器74和第二持续寄存器76中。假设重排序指令序列执行时没有产生异常,因此允许发生第一委托操作,随后清除允许保护寄存器。在这种方式中,在每次委托,除去指示持有可检验重排序指令地址的保护寄存器的短期标识。在委托时清除允许保护寄存器之后,将第二持续寄存器的内容写入到允许保护寄存器中。因为指明哪个保护寄存器的长期别名用的持续寄存器中的数据已写入到允许保护寄存器中,所以委托操作就不会影响用于长期别名的保护寄存器的标识。通过在每次委托将持续寄存器的内容写入到允许保护寄存器中,保护对于后续的指令序列继续有效,并且最终,直到别名操作不再需要数据时,第二寄存器才最后被清空。

除了第二持续寄存器76外,还保留一个影子寄存器78。它也存储持续寄存器中保留的信息。在委托和返回操作期间,使用影子寄存器。当发生委托时,持续寄存器76中的数据以上述方式复制到允许保护寄存器74中。相同的数据还复制到遮蔽持续寄存器的寄存器78,因此影子寄存器含有持续寄存器在后一个可能要重排序指令序列的开始处的设定。如果在执行下一个指令序列期间发生异常,需要返回操作,那么将影子寄存器的内容复制到允许保护寄存器和持续寄存器中。在允许保护器和持续寄存器中放上在指令序列开始执行之前与这些寄存器中的同样标识,因而确保了随后较保守执行的正确状态。

本发明配置还提供了附加优势。当持续寄存器76的加入允许使用同样的硬件来既增强短期(委托之间)的重排序能力,又在执行单元寄存器中长期维护别名存储器数据,因而消除了存储器存取冗余,它也能用于消除在委托操作之间发生的其他类型的冗余。例如,在指令序列期间可能发生在同一存储器地址有两次加载。如果发生这种情况,并且没有插入存储到存储器地址,那么第二次加载可能被简单地忽略;并且由第一次存储器存取放在寄存器中的数据没有经第二次加载操作取代改变就使用。然而如果在加载之间有存储插入,就有必要来确定存储所要存入的存储器地址是否是第二次存取所要取出的地址。这样,如果在加载之间有存储插入,已有优化技术就不能消除第二次加载。

为了缩短操作过程,本发明可能用于有利方面。如果第一加载改为用存在保护寄存器中的存储器地址的“加载和保护”操作,且存储指令接收一个标识,指明要检验的特定保护寄存器,那么可消除第二次加载,而且“加载和保护”操作存储的数据据用于第二次加载。如果存储指令试图存取被保护存储器地址,则在存储存取发生之前通过比较检验保护寄存器的标识。这就会产生异常,且返回到有正确目标状态的最后委托点。随后,调度程序可能提供包括有第二次加载操作的合适指令序列,并且可能重新执行该序列。

同样,如果在两个委托操作之间的指令序列包括对同一存储器地址的两次存储,如果在两次存储之间,没有发生来自存储器地址的加载,就消除第一次存储。但是如果在间歇期间,一次加载已用到来自该存储器地址的数据,那么就能消除第一次加载。使用本发明,如果把加载指令变为“加载和保护”,就会消除对存储器地址的第一次存储。随后第二次存储把从“加载和保护”接收保护寄存器标识来检查存取的存储器地址。如果加载来自不同的地址,那么第二存储可能就正确进行。如果加载来自同一地址,那么第二次存储,尝试存取存储器就会产生异常,随后返回到最后委托点的操作。从那点开始,调度程序将重新调度指令,包括存储操作和重新执行序列。

虽然本发明是根据较佳实施例进行描述,但很明显本领域的熟练技术人员能够在不远离本发明的精神和范畴的情况下对其进行不同的修改和替换。例如,虽然本发明描述的实施例已经设计为用特定处理器系列运行,但应该了解本发明也能应用于为其他处理器结构设计的程序以及为其他程序设计的程序。因而,本发明应该根据随后的权利要求来衡量。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号