CN101283331B - 用于执行已重新排序的程序指令的方法和装置 - Google Patents
用于执行已重新排序的程序指令的方法和装置 Download PDFInfo
- Publication number
- CN101283331B CN101283331B CN2006800374978A CN200680037497A CN101283331B CN 101283331 B CN101283331 B CN 101283331B CN 2006800374978 A CN2006800374978 A CN 2006800374978A CN 200680037497 A CN200680037497 A CN 200680037497A CN 101283331 B CN101283331 B CN 101283331B
- Authority
- CN
- China
- Prior art keywords
- value
- address
- written
- memory address
- table entries
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 238000003860 storage Methods 0.000 claims description 87
- 230000008707 rearrangement Effects 0.000 claims description 4
- 238000012545 processing Methods 0.000 claims description 3
- 230000001960 triggered effect Effects 0.000 claims description 3
- 238000012432 intermediate storage Methods 0.000 claims 2
- 238000011084 recovery Methods 0.000 abstract description 5
- 230000008569 process Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000007689 inspection Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 239000006249 magnetic particle Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- HYIMSNHJOBLJNT-UHFFFAOYSA-N nifedipine Chemical compound COC(=O)C1=C(C)NC(C)=C(C(=O)OC)C1C1=CC=CC=C1[N+]([O-])=O HYIMSNHJOBLJNT-UHFFFAOYSA-N 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000003716 rejuvenation Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
Images
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Retry When Errors Occur (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明揭示用于实施已重新排序计算机指令的系统和方法。计算机处理器从第一存储器地址中载入第一值,并将所述第一值和所述第二值两者记录在表格或队列中。所述处理器将第二值存储到相同的存储器地址,并驱逐先前的表格条目或将所述第二值添加到先前的表格条目。在随后检测已驱逐的表格条目或不一致的第二值时,所述处理器产生异常,所述异常触发恢复对所述第一值的推测性使用。
Description
技术领域
本发明所揭示实施例大体来说涉及计算,且更特定来说涉及在处理器中实施先行预取操作。
背景技术
计算机程序是在执行时可导致计算机以预定的方式运转的指令列表。一般来说,程序可含有变量列表及告知所述计算机如何处理所述变量的语句列表。程序设计员可以用人类容易理解的“高级”编程语言来编写计算机程序。这种形式的程序称作“源代码”。然而,为了在计算机上执行程序,必须将源代码转变为机器语言,所述机器语言是可由所述计算机使用的“低级”语言。
这个转换过程的第一步通常由称作编译程序的实用程序来实施,所述编译程序将源代码解释为更接近机器语言的形式。编译程序可具有除这种解释功能之外的额外功能。例如,编译程序可查看源代码且对其中的某些指令重新排序以及实施其它优化。所述编译程序将源代码转变为称作“目标代码”的形式。有时所述目标代码和机器语言相同,有时在准备由计算机执行之前其需要进行进一步处理。
编译程序可实施的一种优化是,对计算机程序中的指令进行重新排序来比简单转化已产生的程序设计员的源代码版本更有效地操作。
例如,程序可处理变量。变量通常位于存储器中且必须在其可供使用之前存取。在处理器中,存储器的这种存取占用有限量的时间。如果在程序准备使用变量时还没有从存储器中获得所述变量,则将变量传送到存储器中时可能会遇到延迟。
计算机指令的两个常见类型为载入指令(“载入”)和存储指令(“存储”)。“载入”可存取存储器以提取由程序需要的数据。“存储”通常认为是次要的,因为其只将最终数据存储到存储器,例如随后程序不需要的最终计算结果。因此,可通过将“载入”提前到“存储”之前来改善程序效率。
遗憾的是,这个技术会导致称作“载入/存储混叠”的重大问题。当“存储”将数据写入到与“载入”从其中读取的存储器地址相同的存储器地址时,将会发生“载入”/“存储”混叠。图1图解说明这种情况的实例。处理器寄存器100可含有来自正在执行的计算机程序的一连串指令。程序设计员可能在紧接“使用”指令(“使用”)104之前已经将“载入”102A包含在源代码中。所述“使用”104可以是利用由“载入”102A所检索的数据来进行的计算。如上文解释,编译程序可通过将“载入”102A提 升得高于“使用”104上方程序设计员最初在源代码中放置其的地方(由箭头106所指示)在运行时间改善整体程序效率。一个原因是,存取计算机存储器的过程有时是缓慢的,且如果“载入”102A和“使用”104彼此太接近,则当所述计算机遇到“使用”104时,其可能需要等待“载入”102A检索实施“使用”104所需的数据。如果编译程序可将“载入”102A更早地放置在(例如)位置102B处,则计算机将更有可能在遇到“使用”104时就已经得到了检索到的数据。因此,通过将“载入”提升到“使用”指令上方,编译程序可减少等待时间并提高程序效率。
然而,如果将“载入”102提升到“使用”104上方过远,则其可能会被提升到中间“存储”110上方,如箭头108所指示。如果中间“存储”110恰巧将新数据写入到由“载入”102存取的相同存储器地址,则发生“载入”/“存储”混叠。在操作中,“载入”102C将从指定的存储器地址中读取数据(例如值“0”),然后中间“存储”110将把新数据(例如值“1”)保存到那个相同存储器地址。当遇到“使用”104时,其将接收到“0”而不是“1”,因为“0”是由“载入”102C读取的值。然而,程序设计员可能原打算让“使用”104接收值“1”,这也是他为什么在编写源代码时就已将中间“存储”110(其存储值“1”)放置在“载入”102A和“使用”104之前的原因。因而,通过将“载入”102A移动到高于中间“存储”110的任何位置,编译程序可导致“使用”104接收不正确的数据。因此,虽然将“载入”提升到“存储”上方通常可以是有益的,但是多数编译程序受限于中间“存储”。这会带来高性能微处理器及并行编译程序中的重大性能问题。
一种用于处理这个问题的方法称作“数据推测”。数据推测采用称作“先行载入”(“LD.A”)和“检查先行载入”(“CHK.A”)的专用指令。先行载入是一种如下的“载入”:当从存储器地址中检索数据时,将那个存储器地址插入称作“先行载入地址表”(“ALAT”)的表格中。然后由其它程序指令推测性地使用已载入的数据。同时,所有的“存储”在将数据存储到存储器地址时均将所述地址与先行载入地址表中所登记的地址进行比较。从先行载入地址表中驱逐任何匹配条目(别名)。当随后的检查先行载入检测到已经从先行载入地址表中驱逐值时,其可产生异常。
异常是指导致程序或微处理器分支到不同的例程的状态,且通常指示错误状态。在这种情况下,当检测到先行载入地址表驱逐时所产生的异常触发对先前由先行载入所检索的数据的推测性使用的恢复。那个数据证明是不正确的数据(由混叠导致),所以在所述由异常触发的恢复过程中必须调整其使用。这种恢复需要大量的工作和处理时间,且大大地妨碍了性能。因此,异常的产生是不合需要的,且过量的异常首先会显著地抵销编译程序在对指令重新排序时所实现的任何增益。
发明内容
在本发明的一个方面中,执行已重新排序的程序指令的方法包含:从第一存储器 地址中载入第一值;将所述第一存储器地址记录在经配置以记录存储器地址与值之间的关联的表格中;将所述第一值记录在所述表格中以使所述第一值与所述第一存储器地址相关联;将第二值存储到第二存储器地址;及确定所述第一和第二存储器地址是相同的。
在本发明的另一方面中,一种计算机可读媒体具体化可由计算机执行以实施用于执行已重新排序程序指令的方法的指令程序,所述方法包含:从第一存储器地址载入第一值;将所述第一存储器地址记录在经配置以记录存储器地址与值之间的关联的表格中;将所述第一值记录在所述表格中,以使所述第一值与所述第一存储器地址相关联;将第二值存储到第二存储器地址;及确定所述第一和第二存储器地址是相同的。
在本发明的另一方面中,计算机系统包含:存储器,其经配置以将数据存储在由不同地址表示的多个位置中;及处理器,其耦合到所述存储器且经配置以从所述存储器地址的第一个地址中载入第一值,将所述第一存储器地址记录在经配置以记录存储器地址与值之间的关联的表格中;将所述第一值记录在所述表格中以使所述第一值与所述第一存储器地址相关联,将第二值存储到所述存储器地址的第二个地址,及确定所述第一和第二存储器地址是相同的。
在本发明的再一个方面中,一种计算机系统包含:用于存储数据的装置;及用于以下的装置:从第一存储器地址中载入第一值;将所述第一存储器地址记录在经配置以记录存储器地址与值之间的关联的表格中;将所述第一值记录在所述表格中以使所述第一值与所述第一存储器地址相关联;将第二值存储到第二存储器地址;及确定所述第一和第二存储器地址是相同的。
附图说明
图1图解说明“载入”/“存储”混叠的实例;
图2图解说明无线通信系统;
图3是图解说明电话系统的各组件的方块图;
图4图解说明包含对已存储值进行检查的过程的实例;
图5是图解说明用于确定在中间“存储”之后是否应该产生异常的逻辑顺序的流程图;
图6图解说明包含对已存储值进行检查的替代过程的实例;且
图7是图解说明用于确定在中间“存储”之后是否应该产生异常的替代逻辑顺序的流程图。
具体实施方式
图2图解说明其中可采用本文中描述的各种实施例的无线通信系统。所属技术领域的技术人员应认识到,各种实施例并不限于通信系统中的使用,其还可替代地具有 许多其它的实际应用,且所述无线通信系统仅用作说明性实例。无线通信系统200可包含订户台202,订户台202通过在反向链路上将数据传输到基站206来与地面数据网络204通信。基站206可接收数据并将其通过基站控制器(“BSC”)208路由到地面网络204。相反,可将到订户台202的通信从地面网络204经由BSC 208路由到基站206并在正向链路上将所述通信从基站206传输到订户单元202。所属技术领域的技术人员应了解,可在基站206与一个或多个订户台202(其它订户台未图示)之间发生正向链路传输。类似地,可在一个订户台202与一个或多个基站206(其它的基站未图示)之间发生反向链路传输。
图3是图解说明其中可使用本发明教示的电话系统的一部分的各种组件的方块图。计算机系统300可包括处理器302、存储器304及其它电路306。计算机系统300可以是包含(例如)服务器、客户机、个人计算机、基站或订户台的任何类型的计算机系统。所属技术领域的技术人员应了解,本文中的教示适用于包含耦合到存储器的处理器的许多其它类型的计算机系统。处理器302可包括(例如)EPIC微处理器。所述微处理器可以是(例如)INTEL ITANIUM微处理器。所属技术领域的技术人员应了解,本文中的教示同样可适用于其它处理器,所述处理器能够与编译程序结合来对指令重新排序并将“载入”提前到中间“存储”以上。处理器302可包括用于提前计算机程序中的指令的寄存器或与所述寄存器通信。处理器302可与存储器304通信以按照计算机程序指令的引导检索和存储数据。处理器302可经配置以允许编译程序根据本文中的教示重新排序计算机程序中的计算指令。
如上所述,数据推测是利用专用先行载入和检查先行载入指令来减轻与“载入”/“存储”混叠相关联的问题的方法。因为每当“存储”存取已经记录在先行载入地址表中的存储器地址时数据推测都驱逐先行载入地址表中的条目,所以检查先行载入指令将引起大量的异常。除了在出现异常之后恢复推测性数据使用的效率损失外,这个方法的不可预测性也是由于在产生异常时所需要的例程分支和随后的同步化。因此,根据本文中的教示,并不是在每一次“存储”存取已经记录在先行载入地址表中的存储器地址时都将先行载入地址表条目删除。
当执行计算机程序时,往往将某些值一贯地或至少经常地存储到特定地址。换句话说,即使单独地且独立地执行“存储”,也可由所述“存储”的不同实例将某个值经常地存储到相同的特定地址。当第一“存储”将第一值写入到某个地址,且然后第二“存储”将第二值写入到那个相同的地址时,如果所述第一和第二值是相等的,则不必产生异常来恢复所述第一值的推测性使用。如果中间“存储”用相同的数据来改写数据,则任何先前使用原始数据的指令都不需要校正,因为甚至在所述中间“存储”之前所述数据的值是正确的。
根据这些教示,先行载入地址表可经配置以存储存储器地址和已存储值两者。同样,除了将“存储”地址与先行载入地址表中所记录的地址进行比较之外,还可修改检查先行载入例程来将已存储值与先行载入地址表中所记录的值进行比较。处理器可 经配置以只在满足以下两个条件时驱逐先行载入地址表中的条目:“存储”地址与先行载入地址表中所记录的地址相匹配,且已存储值与先行载入地址表中所记录的与已记录地址相关联的值不相等。通过针对这种情况进行检查,本文中所揭示的处理器配置可消除不必要的异常并改善整体程序效率。如果“存储”地址与先行载入地址表中所记录的地址相匹配,而已存储值与先行载入地址表中所记录的与已记录地址相关联的值相同,则先行载入地址表条目可保留在先行载入地址表中以使后来不会由搜索并发现未驱逐的先行载入地址表条目的检查先行载入产生异常。
图4图解说明包含对已存储值进行检查的过程的实例。当执行计算机处理器的寄存器400中的程序时,根据本文中描述的过程来实施所述寄存器中的程序指令。当实施某些指令时,可存取“先行载入地址及值表格”(“ALAVT”)402。可将“先行载入地址及值表格”402存储在(例如)可由所述处理器存取的存储器中,或可维持在所述处理器本身中。随着程序操作的继续进行,可遇到先行载入(LD.A)指令404。如图4中所图解说明,这可表示为LD.A[B],Y,其指示处理器将实施从存储器地址“B”中载入值“Y”的指令。与载入这个值结合或在所述载入发生之前或之后,处理器还可存取“先行载入地址及值表格”402并将与值“Y”相关联的地址“B”记录在条目406处。
接下来,处理器可遇到额外指令,其中包含ST[B],X指令408。根据这个指令,处理器可将值“X”存储到存储器地址“B”。处理器还可存取“先行载入地址及值表格”402以确定是否先前已从刚刚写入到的地址“B”中载入。在检查“先行载入地址及值表格”402时,处理器将遇到先前将地址“B”记录在其中的条目406。然后处理器可询问新存储的值“X”是否等于先前所载入的值“Y”。如果相等,则处理器可继续进行正常的程序执行。然而,如果已确定“X”和“Y”不相等,则处理器可如驱逐410所指示来驱逐条目406。通过从“先行载入地址及值表格”402中驱逐这个条目,处理器正在提供以下指示:由于中间“存储”408,可能已经不正确地使用了先前从地址“B”中载入的值“Y”。因此,当处理器遇到CHK.A[B]指令414时,其将针对具有地址“B”的条目来检查“先行载入地址及值表格”402。然而,由于那个条目已被驱逐,因此所述处理器将不会遇到这种条目,如416处所指示。检测不到地址“B”可导致处理器产生异常,从而触发恢复由“载入”404载入的值“Y”的先前使用,由于中间“存储”408,所述值“Y”可能会是不正确的。
图5图解说明包含对已存储值进行检查的替代过程的实例。在方块500处,可在计算机处理器的寄存器中将“先行载入”提前。指令LD.A[A,X]命令处理器从存储器地址“A”中载入值“X”。当值“X”已经载入时,则处理器可向“先行载入地址及值表格”存取与已载入值“X”相关联的地址“A”的记录,如方块502处所指示。随后处理器可在方块504处遇到“存储”。指令ST[B,Y]指令处理器将值“Y”存储到存储器地址“B”。在决策方块506处,处理器可与所述“存储”结合来询问“存储”存储器地址“B”是否与先前在方块500处存取的“载入”存储器地址“A”相同。如 果不相同,则处理器可继续进行正常的程序执行,如方块508处所指示。然而,如果所述地址匹配,则处理器可在决策方块510处检查先前从所述地址载入的值(方块500处的值“X”)是否与刚刚存储的值(方块504处的值“Y”)相等。如果所述值相等,则处理器可继续进行正常的程序操作,如方块512处所指示。然而,如果所述值不相等,则处理器可遵循不同的例程。
如果在决策方块510处检查的值不相等,则在方块514处,处理器可驱逐“先行载入地址及值表格”中使存储器地址“A”与值“X”相关联的记录。随后,当处理器在方块516遇到“先行载入”指令时,处理器可存取“先行载入地址及值表格”并搜索具有已记录存储器地址“A”的条目。因为这个条目在方块514处被驱逐,所以处理器不会在“先行载入地址及值表格”中定位到“A”条目,这将会导致在方块518处产生异常。所述异常可触发处理器分支到不同的例程或指令集以恢复在将值“X”从存储定位“A”中载入之后可能已由不同的指令使用的那个值“X”的任何先前使用,。这在方块520处有所指示。在所述恢复之后,处理器可再一次回到正常的程序操作。
图6是图解说明用于确定中间“存储”之后是否应该产生异常的逻辑顺序的流程图。可与存取存储器中的“先行载入地址及值表格”602结合来实施处理器的寄存器600中的指令。最初,“先行载入”指令604-LD.A[B],Y可命令处理器从存储器地址“B”中载入值“Y”。处理器可通过创建使地址“B”和当前值“Y”相关联的条目606来将这个“载入”记录在“先行载入地址及值表格”602中。随后,“存储”608-ST[B],X可命令处理器将值“X”存储到存储器地址“B”。处理器可通过用新存储的当前值“X”代替“Y”及将“Y”移动到先前值位置来将这个动作记录在“先行载入地址及值表格”602中。这在条目610处有所指示。然后,另一“存储”612可命令处理器将值“Y”存储到存储器地址“B”。这将导致“Y”成为当前值且“X”成为先前值,如条目614处所指示。
需要来自存储器位置“B”的数据的随后“使用”指令616将使用由“载入”指令604所载入的先前已载入值“Y”。虽然存在中间“存储”608和612,但是因为存储在地址“B”处的数据的当前值是已经载入的相同值“Y”,所以处理器可拒绝产生异常。这可由先行检查指令618-CHK.A[B]来确定,CHK.A[B]命令处理器将地址“B”定位在“先行载入地址及值表格”602中。可将所述地址连同其相关联当前值“Y”一起定位在条目620处。处理器可将当前值“Y”与先前由“载入”604所载入的同样为“Y”的值进行比较,并确定它们是相等的。所属技术领域的技术人员应了解,如果所比较的值不相等,则处理器可产生异常以触发恢复由中间指令(例如“使用”指令616)对值“Y”的推测性使用。
图7是图解说明用于确定在中间“存储”之后是否应该产生异常的替代逻辑顺序的流程图。将新存储的值添加到“先行载入地址及值表格”条目,而不是将其值不与中间“存储”匹配的“先行载入地址及值表格”条目清空。确定值是否匹配可最终和“先行载入”指令一起发生。这个程序适用于每个地址包含一个以上值条目的“先行 载入地址及值表格”。虽然这个实例涉及其中每个地址具有两个值条目的“先行载入地址及值表格”(例如图6中的“先行载入地址及值表格”602),但本文中的教示可适用于每个地址具有任何数量值条目的“先行载入地址及值表格”。
在方块700处,“先行载入”LD.A[A,X]可命令计算机处理器从存储器地址“A”中载入值“X”。在方块702可通过将与地址“A”相关联的值“X”记录在“先行载入地址及值表格”中来将记录所述“载入”。然后可在方块704实施“存储”。指令ST[B,Y]可导致处理器将值“Y”存储到存储器地址“B”。在决策方块706处,处理器可检查存储器地址“A”是否和存储器地址“B”相同。如果不相同,则在方块707处,处理器可继续进行程序操作。然而,如果所述地址相同,则在方块708处,所述处理器可添加先前的“先行载入地址及值表格”条目。处理器可将先前载入的值“X”移动到“先行载入地址及值表格”条目的“先前值”位置中,并将新存储的值“Y”记录到“先行载入地址及值表格”条目的“当前值”位置,这两个值均与“先行载入地址及值表格”条目中的存储器地址“A”相关联。
在方块710处,“先行载入”指令CHK.A[A]可命令处理器针对记录存储器地址“A”的条目来检查“先行载入地址及值表格”。在本实例中,将由处理器在方块712处定位条目″A,Y,X,″,其中“X”是先前值且“Y”是当前值。在决策方块714处,处理器可检验当前值“Y”是否与在方块700处所载入的先前值“X”相等。如果相等,则在方块716处,处理器可继续进行程序操作,因为先前值“X”的任何中间使用都会不受新载入的且相等的值“Y”影响。然而,如果确定所述值不同,则在方块718处,处理器可产生异常。在方块720处,所述异常可触发处理器恢复对值“X”的先前使用中,值“X”随后变为“Y”,从而导致先前使用不正确。
因此,揭示一种用于对计算指令进行重新排序的新颖的且经改善的方法和设备。所属技术领域中的技术人员应了解,在整个上述说明中可能提到的数据、指令、命令、信息、信号、位、符号及码片可有利地表示为电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合。所属技术领域中的技术人员应进一步了解,结合本文所揭示实施例描述的各种说明性逻辑块、模块、电路及算法步骤可实施为电子硬件、计算机软件或二者的组合。已经根据其功能大体地描述了各种说明性组件、块、模块、电路及步骤。所述功能实施为硬件还是软件取决于特定的应用及施加在整个系统上的设计限制。所属技术领域的技术人员应认识到,在这些情况下硬件和软件的可交换性,及如何针对每一特定应用最好地实施所述功能。作为实例,可借助数字信号处理器(“DSP”)、专用集成电路(“ASIC”)、现场可编程门阵列(“FPGA”)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件(例如,寄存器及FIFO)、执行一组固件指令的处理器、任何常规的可编程软件模块及处理器或经设计以实施本文所述功能的其任何组合来实施或执行结合本文所揭示实施例来描述的各种说明性逻辑块、模块、电路及算法步骤。所述处理器可有利地为微处理器,但是另一选择为,所述处理器可以是任何常规的处理器、控制器、微控制器、可编程逻辑装置、逻辑元 件阵列或状态机。所述软件模块可驻留在RAM存储器、闪速存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬磁盘、可装卸磁盘、CD-ROM、或此项技术中已知的任何其它形式的存储媒体中。实例性处理器有利地耦合到所述存储媒体,以从所述存储媒体中读取信息并将信息写入到所述存储媒体中。另一选择为,所述存储媒体可以是处理器的组成部分。处理器和存储媒体可驻留在ASIC中。所述ASIC可驻留在电话或其它用户终端中。另一选择为,处理器及存储媒体可驻留在电话或其它用户终端中。处理器可实施为DSP与微处理器的组合,或实施为与DSP核心结合的两个微处理器。
因此已显示并描述了本发明的说明性实施例。然而,所属技术领域中的技术人员应明了,可在不脱离本发明精神或范畴的情况下对本文中所揭示的实施例做出大量改变。因此,仅根据随附权利要求书来限制本发明。
Claims (12)
1.一种执行已重新排序程序指令的方法,所述方法包括:
从第一存储器地址载入第一值;
将所述第一存储器地址记录在表格的第一表格条目的地址部分,所述表格经配置以记录存储器地址与值之间的关联,所述表格包括一个或多个表格条目,其中每一所述表格条目包括对应的地址部分、对应的第一值部分、以及对应的第二值部分,其中所述对应的第二值部分与所述对应的第一值部分及所述对应的地址部分相关联;
将所述第一值记录在所述第一表格条目的所述第一值部分;
在记录所述第一值之后,将第二值存储到第二存储器地址;
确定所述第一存储器地址和所述第二存储器地址是相同的;及
将先前所记录的第一值移至所述第一表格条目的所述第二值部分,并将随后所存储的第二值记录在所述第一表格条目的所述第一值部分。
2.如权利要求1所述的方法,其中确定所述第一存储器地址和所述第二存储器地址是相同的包括将所述第二存储器地址与记录在所述第一表格条目中的所述第一存储器地址进行比较。
3.如权利要求1所述的方法,其进一步包括:确定所述第一值和所述第二值是相等的;及在不产生异常的情况下继续进行随后的程序指令。
4.如权利要求1所述的方法,其进一步包括:确定所述第一值和所述第二值是不同的。
5.如权利要求4所述的方法,其进一步包括:产生异常,其中确定所述第一值和所述第二值是不同的是通过将记录在所述第一表格条目的所述第一值与记录在所述第一表格条目中的所述第二值进行比较而实现的。
6.如权利要求5所述的方法,其进一步包括:在产生异常之前,执行使用所述第一值的第一指令。
7.如权利要求6所述的方法,其中所述异常触发恢复对所述第一值的先前使用。
8.如权利要求1所述的方法,其中,所述将先前所记录的第一值移至所述第一表格条目的所述第二值部分并将随后所存储的第二值记录在所述第一表格条目的所述第一值部分的步骤在所述第一表格条目的所述第一值部分使用所述随后所存储的第二值替代了所述先前所记录的第一值。
9.一种执行已重新排序程序指令的方法,其包括:
配置存储器以将数据存储在多个位置中,每一位置具有对应的存储器地址;将载入指令提前到中间存储指令以上;
从第一存储器地址载入第一值;
将所述第一存储器地址记录在表格的第一表格条目的地址部分,其中,所述表格存储在所述存储器中,所述表格包括包含所述第一表格条目的一个或多个表格条目,其中每一所述表格条目包括对应的地址部分、对应的第一值部分、以及对应的第二值部分,其中所述对应的第一值部分及所述对应的第二值部分与所述对应的地址部分相关联;
将所述第一值记录在所述第一表格条目的所述第一值部分;
在记录所述第一值之后,将第二值存储到第二存储器地址;
确定所述第一存储器地址和所述第二存储器地址是相同的;
将先前所记录的第一值移至所述第一表格条目的所述第二值部分,并将随后所存储的第二值记录在所述第一表格条目的所述第一值部分;及
当通过比较所述第一值和所述第二值确定出所述第一值与所述第二值不同时,产生异常。
10.一种执行已重新排序程序指令的方法,其包括:
从第一存储器地址载入第一值;
将第一存储器地址记录在表格的第一条目中,其中所述表格具有多个条目,每一条目包括对应的地址部分、对应的当前值部分、对应的先前值部分,每一条目用于存储与一存储器地址相关联的两个值;
将所述第一值记录在所述第一条目的所述当前值部分;
在记录所述第一值之后,将第二值存储到第二存储器地址;
确定所述第一存储器地址和所述第二存储器地址是相同的;
将先前所记录的第一值移至所述第一条目的所述先前值部分;及
将随后所存储的第二值记录在所述第一条目的所述当前值部分。
11.如权利要求10所述的方法,还包括:
将处理指令重新排序,以将载入指令提前到中间存储指令以上。
12.如权利要求10所述的方法,还包括:
结合编译程序来对待执行的指令进行重新排序。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/202,770 US7613906B2 (en) | 2005-08-12 | 2005-08-12 | Advanced load value check enhancement |
US11/202,770 | 2005-08-12 | ||
PCT/US2006/031297 WO2007021887A2 (en) | 2005-08-12 | 2006-08-09 | Advanced load value check enhancement |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310141701.2A Division CN103336682B (zh) | 2005-08-12 | 2006-08-09 | 对先行载入值检查的增强 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101283331A CN101283331A (zh) | 2008-10-08 |
CN101283331B true CN101283331B (zh) | 2013-05-29 |
Family
ID=37564037
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800374978A Expired - Fee Related CN101283331B (zh) | 2005-08-12 | 2006-08-09 | 用于执行已重新排序的程序指令的方法和装置 |
CN201310141701.2A Expired - Fee Related CN103336682B (zh) | 2005-08-12 | 2006-08-09 | 对先行载入值检查的增强 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310141701.2A Expired - Fee Related CN103336682B (zh) | 2005-08-12 | 2006-08-09 | 对先行载入值检查的增强 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7613906B2 (zh) |
EP (1) | EP1922612B1 (zh) |
KR (1) | KR101049344B1 (zh) |
CN (2) | CN101283331B (zh) |
IL (1) | IL189451A0 (zh) |
MX (1) | MX2008001997A (zh) |
WO (1) | WO2007021887A2 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7937565B2 (en) * | 2007-02-21 | 2011-05-03 | Hewlett-Packard Development Company, L.P. | Method and system for data speculation on multicore systems |
US11098139B2 (en) | 2018-02-28 | 2021-08-24 | Chevron Phillips Chemical Company Lp | Advanced quality control tools for manufacturing bimodal and multimodal polyethylene resins |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000026771A1 (en) * | 1998-10-30 | 2000-05-11 | Intel Corporation | A computer product, method, and apparatus for detecting conflicting stores on speculatively boosted load operations |
US6728867B1 (en) * | 1999-05-21 | 2004-04-27 | Intel Corporation | Method for comparing returned first load data at memory address regardless of conflicting with first load and any instruction executed between first load and check-point |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2786574B2 (ja) * | 1992-05-06 | 1998-08-13 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置 |
US5467473A (en) * | 1993-01-08 | 1995-11-14 | International Business Machines Corporation | Out of order instruction load and store comparison |
US5682493A (en) * | 1993-10-21 | 1997-10-28 | Sun Microsystems, Inc. | Scoreboard table for a counterflow pipeline processor with instruction packages and result packages |
US6463579B1 (en) * | 1999-02-17 | 2002-10-08 | Intel Corporation | System and method for generating recovery code |
US6408379B1 (en) * | 1999-06-10 | 2002-06-18 | Advanced Micro Devices, Inc. | Apparatus and method for executing floating-point store instructions in a microprocessor |
US6658559B1 (en) * | 1999-12-31 | 2003-12-02 | Intel Corporation | Method and apparatus for advancing load operations |
US6681317B1 (en) * | 2000-09-29 | 2004-01-20 | Intel Corporation | Method and apparatus to provide advanced load ordering |
US7062638B2 (en) * | 2000-12-29 | 2006-06-13 | Intel Corporation | Prediction of issued silent store operations for allowing subsequently issued loads to bypass unexecuted silent stores and confirming the bypass upon execution of the stores |
CN1142485C (zh) * | 2001-11-28 | 2004-03-17 | 中国人民解放军国防科学技术大学 | 流水线控制相关延迟消除方法 |
US20050055516A1 (en) * | 2003-09-10 | 2005-03-10 | Menon Vijay S. | Method and apparatus for hardware data speculation to support memory optimizations |
-
2005
- 2005-08-12 US US11/202,770 patent/US7613906B2/en not_active Expired - Fee Related
-
2006
- 2006-08-09 WO PCT/US2006/031297 patent/WO2007021887A2/en active Application Filing
- 2006-08-09 CN CN2006800374978A patent/CN101283331B/zh not_active Expired - Fee Related
- 2006-08-09 CN CN201310141701.2A patent/CN103336682B/zh not_active Expired - Fee Related
- 2006-08-09 MX MX2008001997A patent/MX2008001997A/es active IP Right Grant
- 2006-08-09 KR KR1020087006023A patent/KR101049344B1/ko not_active IP Right Cessation
- 2006-08-09 EP EP06801207.9A patent/EP1922612B1/en not_active Not-in-force
-
2008
- 2008-02-11 IL IL189451A patent/IL189451A0/en unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000026771A1 (en) * | 1998-10-30 | 2000-05-11 | Intel Corporation | A computer product, method, and apparatus for detecting conflicting stores on speculatively boosted load operations |
US6728867B1 (en) * | 1999-05-21 | 2004-04-27 | Intel Corporation | Method for comparing returned first load data at memory address regardless of conflicting with first load and any instruction executed between first load and check-point |
Also Published As
Publication number | Publication date |
---|---|
US7613906B2 (en) | 2009-11-03 |
EP1922612B1 (en) | 2014-04-23 |
EP1922612A2 (en) | 2008-05-21 |
CN101283331A (zh) | 2008-10-08 |
MX2008001997A (es) | 2008-04-16 |
WO2007021887A3 (en) | 2007-05-18 |
IL189451A0 (en) | 2008-08-07 |
US20070035550A1 (en) | 2007-02-15 |
CN103336682B (zh) | 2016-07-06 |
CN103336682A (zh) | 2013-10-02 |
KR20080041251A (ko) | 2008-05-09 |
WO2007021887A2 (en) | 2007-02-22 |
KR101049344B1 (ko) | 2011-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10552163B2 (en) | Method and apparatus for efficient scheduling for asymmetrical execution units | |
CN108874692B (zh) | 空间存储器流传输置信机制 | |
US6708288B1 (en) | Compiler-based checkpointing for support of error recovery | |
CN100440175C (zh) | 用于提供有效多字加载原子性的设备和方法 | |
CN103314356B (zh) | 处理设备、追踪单元、诊断设备及其方法 | |
US7406489B2 (en) | Apparatus, system and method for persistently storing data in a data synchronization process | |
CN106682193B (zh) | 基于缓存的数据持久化存储方法及装置 | |
WO2014004706A1 (en) | Qualifying software branch-target hints with hardware-based predictions | |
CN100416496C (zh) | 更新指令错误状态寄存器 | |
US10289419B2 (en) | Method and apparatus for sorting elements in hardware structures | |
CN101310255A (zh) | 硬件辅助的装置配置检测 | |
US9720819B2 (en) | Concurrent, moving, garbage collector | |
CN109783509A (zh) | Sql脚本生成方法及装置 | |
CN112667600A (zh) | 一种redis与MySQL结合的库存解决方法 | |
CN101283331B (zh) | 用于执行已重新排序的程序指令的方法和装置 | |
US7958083B2 (en) | Interacting methods of data summarization | |
CN101533370B (zh) | 一种内存异常访问定位方法及装置 | |
CN108509013B (zh) | 一种处理指令的方法及装置 | |
CN114217806A (zh) | 基于cache写暗示机制的编译优化方法 | |
CN115756319A (zh) | 一种基于大数据的ssd数据读重试效率提升方法及系统 | |
CN113220471A (zh) | 一种数据处理方法、装置、计算设备及存储介质 | |
CN117519592A (zh) | 基于ssd的全盘重建优化方法、装置、设备及存储介质 | |
CN114420192A (zh) | DRAMLess SSD NAND编程出错的优化方法、装置及介质 | |
MXPA98002291A (en) | Apparatus for detection based on region of interference between reordered memory operations in a process |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130529 Termination date: 20210809 |