CN104049952A - 直接和嵌套依赖指令的调度器中重置推测源就绪的方法 - Google Patents
直接和嵌套依赖指令的调度器中重置推测源就绪的方法 Download PDFInfo
- Publication number
- CN104049952A CN104049952A CN201410087003.3A CN201410087003A CN104049952A CN 104049952 A CN104049952 A CN 104049952A CN 201410087003 A CN201410087003 A CN 201410087003A CN 104049952 A CN104049952 A CN 104049952A
- Authority
- CN
- China
- Prior art keywords
- instruction
- source
- dependence
- dependence instruction
- cancellation
- 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.)
- Granted
Links
- 230000001419 dependent effect Effects 0.000 title abstract description 38
- 238000000034 method Methods 0.000 claims abstract description 28
- 230000002618 waking effect Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 3
- 230000000052 comparative effect Effects 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
- 238000004519 manufacturing process Methods 0.000 description 1
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, look ahead
-
- 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/30181—Instruction operation extension or modification
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
-
- 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
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order 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)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
本申请公开了直接和嵌套依赖指令的调度器中重置推测源就绪的方法。在用于处理多个指令的方法和用于指令处理的设备中,当依赖指令的源的取消计时器和嵌套依赖指令的源的取消计时器期满并且推测地唤醒所述依赖指令的生产者指令被取消时,同时取消所述依赖指令和所述嵌套依赖指令。
Description
技术领域
符合示例性实施例的设备和方法涉及取消指令和重置源就绪状态,更具体地,涉及将使用取消计时器的生产者指令的直接依赖指令和嵌套依赖指令取消以及将源就绪位重置。
背景技术
现代微处理器采用了一种指令的推测(speculative)调度技术。当微处理器的调度器中的生产者指令(producer instruction)由于诸如加载未命中、故障、数据冲突等事件而被取消时,针对已被生产者指令推测地唤醒的依赖指令(dependent instruction)的“源就绪”(source ready)状态需要在用于该指令的调度器中被重置,以使得这些依赖指令能够有资格再次被拾取。依赖指令可以是直接或间接(或嵌套)指令。
在现有技术的一种方法中,当生产者指令被取消时,为了撤销或重置针对调度器中依赖指令的“源就绪”状态,被取消的生产者指令的目的标签与调度器中所有指令的源标签进行比较。如果被取消的生产者指令的目的标签和调度器中任意指令的源标签之间存在匹配,则调度器重置调度器中依赖指令的源就绪状态。
然而,由于需要对调度器中所有指令的所有源进行上述比较,所以比较量巨大,从而消耗了微处理器的时间、功率和资源。
发明内容
为了解决现有技术在生产者指令被取消时取消依赖指令并在其后重置源就绪状态的问题,本发明构思的一个或多个示例性实施例提供了一种简单、节约功耗和有时间效率的方法,其用于通过使用来自依赖指令的主生产者指令的单个取消指示来同时取消直接依赖指令和间接或嵌套依赖指令并为依赖指令的重置源就绪状态。
然而,本发明构思不限于本文所阐述的示例性实施例。对于示例性实施例所属的本领域的普通技术人员而言,通过参考下面给出的细节描述,本发明构思的各个方面将变得显而易见。
根据示例性实施例的一个方面,其提出了一种处理多个指令的方法。所述方法可以包括:由依赖指令的生产者指令推测地唤醒所述依赖指令的源;所述依赖指令推测地唤醒依赖于所述依赖指令的嵌套依赖指令的源;设置所述依赖指令的源的源就绪位以及设置所述嵌套依赖指令的源的源就绪位,以表示所述依赖指令的源和所述嵌套依赖指令的源访问就绪;基于预期针对所述生产者指令断言(assert)取消时的取消时间来设置所述依赖指令的源的取消计时器(canceltimer)以及设置所述嵌套依赖指令的源的取消计时器;以及如果(i)所述依赖指令的源的取消计时器和所述嵌套依赖指令的源的取消计时器期满并且(ii)所述生产者指令被取消,则同时取消所述依赖指令和所述嵌套依赖指令。
当所述依赖指令的源的取消计时器和所述嵌套依赖指令的源的取消计时器达到预定值时,所述依赖指令的源的取消计时器和所述嵌套依赖指令的源的取消计时器会期满。
所述预定值可以是非0值。
对所述依赖指令的源的源就绪位和所述嵌套依赖指令的源的源就绪位的重置可以表示所述依赖指令和所述嵌套依赖指令不能够被拾取,除非所述依赖指令和所述嵌套依赖指令再次被唤醒。这里,所述源就绪位可以在所述依赖指令和所述嵌套依赖指令被同时取消后被重置。
如果(i)所述依赖指令的源的取消计时器和所述嵌套依赖指令的源的计时器期满并且(ii)所述生产者指令被取消,则所述依赖指令的源的取消计时器和所述嵌套依赖指令的源的取消计时器也可以被重置。
所述嵌套依赖指令可以是在所述依赖指令被所述生产者指令推测地唤醒之后的预定时间被所述依赖指令唤醒的指令,在此情况下,所述依赖指令的源的取消计时器和所述嵌套依赖指令的源的取消计时器基于所述取消时间被设置为不同值。
所述生产者指令可以是被推测地拾取的指令。
预期针对所述生产者指令断言所述取消时的取消时间可以基于从所述依赖指令的源被所述生产者指令推测地唤醒的时间到针对所述生产者指令断言所述取消所预计的时钟周期数。
根据本发明的另一个示例性实施例的一个方面,提供了一种用于指令处理的设备。所述设备可以包括:调度器,其拾取用于调度执行的生产者指令;控制器,其被配置为:由依赖指令的生产者指令推测地唤醒所述依赖指令的源;由所述依赖指令推测地唤醒依赖于所述依赖指令的嵌套依赖指令的源;设置所述依赖指令的源的源就绪位以及设置所述嵌套依赖指令的源的源就绪位,以表示所述依赖指令的源和所述嵌套依赖指令的源访问就绪;基于预计针对所述生产者指令断言取消时的取消时间来设置所述依赖指令的源的取消计时器以及设置所述嵌套依赖指令的源的取消计时器;以及如果(i)所述依赖指令的源的取消计时器和所述嵌套依赖指令的源的取消计时器期满并且(ii)所述生产者指令被取消,则同时取消所述依赖指令和所述嵌套依赖指令。
所述控制器还可以被配置为重置所述依赖指令的源的源就绪位和所述嵌套依赖指令的源的源就绪位,以表示所述依赖指令和所述嵌套依赖指令拾取未就绪,除非所述依赖指令和所述嵌套依赖指令被再次唤醒。
所述依赖指令的源的源就绪位、所述嵌套依赖指令的源的源就绪位、所述依赖指令的源的取消计时器和所述嵌套依赖指令的源的取消计时器可以被设置为所述调度器的条目。
附图说明
通过结合附图对示例性实施例的以下描述,上述和/或其它方面将变得显而易见和更加易于理解,附图中:
图1示出根据示例性实施例的处理器架构的一部分;
图2示出根据示例性实施例的分配有生产者指令和依赖指令的调度器的条目;
图3示出根据示例性实施例的基于时钟周期设置和重置源就绪位和取消计时器的过程。
图4示出根据示例性实施例的指令流水线的示意图;和
图5示出根据示例性实施例的说明图5中的指令取消和源重置操作的流程图。
具体实施方式
本发明构思的优点和特征以及实现这些优点和特征的方法通过参考下面对示例性实施例的详细描述和附图可以被更容易地理解。然而,本发明构思可以以不同的形式被实现并且不应该被解释为限于本文所阐述的实施例。相反,提供这些实施例使得本公开将是透彻和完整的,并将向本领域的普通技术人员完全传达本发明构思,并且本发明构思将只由所附的权利限定。在附图中,为清楚起见,层和区域的厚度被放大。
除非另有定义,否则所有用在本文中的技术和科学术语具有与本发明所属的技术领域的普通技术人员通常理解相同的意义。需注意,任意和全部示例,或本文所提供的示例性术语的使用只是为了更好地阐明本发明构思而不是为了对本发明构思的范围进行限制,除非另有指定。此外,除非另有定义,否则通用字典中定义的所有术语不会被过度地解释。
图1示出根据示例性实施例的处理器架构的一部分。所述架构包括解码器101、重命名器102、调度器103和控制器104。根据示例性实施例,图1中所示的架构可以应用于包括多核处理器的各种处理器类型。为了不模糊对示例性实施例的描述,诸如读取器(fetcher)、缓存、执行单元等众所周知的架构没有在附图中示出。
图1的处理器中,存储器(未示出)中的指令被读取器(未示出)读取至解码器101。解码器101将指令解码成低电平的、详细的微操作(micro-ops)。因此,指令流被映射成微操作流。解码的微操作流被发送至重命名器102,源和/或目的在重命名器102中被重命名,并接着被发送至调度器103以调度执行。微操作通常具有两个或三个源操作数和一个或两个目的操作数。源操作数被用来指定包含源数据的寄存器,而目的操作数被用来指定微操作的操作结果被写入的寄存器。重命名器102重命名微操作中的源寄存器和/或目的寄存器。寄存器重命名是用于消除数据冲突(例如微操作乱序执行中的先读后写(write-after-read)和先写后写(write-after-write)冲突)的一种技术。调度器103按照这样的顺利来拾取微操作并调度微操作的执行,该顺序可遵循或可不遵循微操作序列的原顺序。控制器104被配置为控制调度器103的整体操作。尽管控制器104被示出为一个单独的组件,但是它可以构成为调度器103的一个元件。
图2示出根据示例性实施例的位于用于调度执行的处理器的调度器中的指令的条目。这里,调度器可以是前面参考图1所描述的调度器103。
如图2所示,根据示例性实施例,生产者指令100、生产者指令101和依赖于生产者指令100和101的依赖指令200位于调度器103中。虽然图2仅示出生产者指令100和101,但是基于依赖指令200的若干个源,依赖指令200可以依赖于其它生产者指令,因为依赖指令200的不同的源可以依赖于不同的生产者指令。根据示例性实施例,当依赖指令200位于调度器103中时,调度器103为每个依赖指令200的源分配源就绪字段15和取消计时器字段16。源就绪字段15被配置为包含源就绪位,而取消计时器字段被配置为包含取消计时器或取消计时器值。在这个实施例中,在针对依赖指令分配这两个字段时,源就绪位和取消计时器未被设置并保持在“0”。然而,如下面所说明,当生产者指令推测地唤醒依赖指令时,该源就绪位将被设置为就绪,即,设置为“1”,并且,取消计时器将被控制器104设置为预定值。
当依赖指令200被生产者指令100和101(可能还有基于依赖指令200的若干个源的其它的生产者指令,如前面所讨论)推测地唤醒并且针对依赖指令200的每个源来说源依赖性被满足时,控制器104针对调度器103中的依赖指令的每个源在源就绪字段15中设置源就绪位。例如,当生产者指令100和101推测地唤醒依赖指令200并且针对依赖指令200的每个源满足源依赖性(可以在不同时间点满足)时,控制器104将针对每个源的源就绪位设置为值“1”以表示每个源的源数据在若干个周期中将是可用的;否则,针对每个源的源就绪位的值保持在值“0”。当针对依赖指令的所有源将源就绪位设置成值“1”时,依赖指令100被认为是准备好从调度器103中被拾取以用于执行。
除设置源就绪位之外,当生产者指令100和101推测地唤醒依赖指令200并且对依赖指令200的每个源来说源依赖性被满足时,控制器104在针对依赖指令200的每个源的取消计时器字段16中设置取消计时器为预定时间值。取消计时器被控制器104用来控制依赖指令200的取消定时,并且针对被取消的依赖指令200的每个源重置源就绪位。当设置给取消计时器的预定时间值已经过并且生产者指令100从调度中被取消时,依赖指令200也被取消,并且用于依赖指令200的每个源的源就绪位和取消计时器被重置,因此依赖指令200可以在以后被再次拾取。这里,根据示例性实施例,取消计时器的预定时间可以是针对生产者指令100断言可能的取消所需的时钟周期数。
一旦针对依赖指令的源设置源就绪位,则针对依赖于生产者指令100和101的依赖指令200的每个源被设置成预定时间值的取消计时器开始计时。如果生产者指令正好在取消计时器期满时被取消,则依赖指令被取消,并且针对依赖指令的每个源的源就绪位和取消计时器被相应地重置。如果生产者指令未被取消并且被调度执行,则取消计时器不会影响依赖指令的调度。
在本示例性实施例中,所提到的用于取消依赖指令200的取消计时器被描述为针对调度器103中的依赖指令200的每个源进行设置。然而,只要取消计时器是为了取消指令的目的而被设置,就可以不针对指令的每个源设置取消计时器,相反,可以针对每个指令设置取消计时器以节约调度器103的资源。
图3示出根据示例性实施例的设置和重置源就绪位的过程。
这里,生产者指令Producer-1和依赖指令位于图1中所示的处理器的调度器103中。在该实施例中,假设依赖指令具有单个源。另外,在该实施例中,根据示例性实施例,可以基于从推测地唤醒依赖指令的时间点到针对生产者指令Producer-1而断言可能的取消所需的周期数来设置针对源的取消计时器。进一步地根据预定的取消计时器满期值来设置取消计时器,预定的取消计时器满期值使生产者指令Producer-1在取消计时器达到预定的取消计时器满期值时能够确定被断言的取消是用于其自身的取消指令。换言之,针对生产者指令的取消计时器在该生产者指令的取消计时器达到预定的取消计时器满期值时期满。因此,如果针对生产者指令Producer-1断言可能的取消所需的周期数是N-1个周期,则取消计时器可以被设为N。例如,如果断言的可能的取消所需的周期数是3个周期(即,N-1个周期),则取消计时器可以被设为4(即,N)并且预定的取消计时器满期值是“1”。因此,当取消计时器达到预定的取消计时器满期值“1”,即,N-1个周期已过并且生产者指令Producer-1被取消时,依赖指令同样被取消,并且接着针对源的源就绪位被重置。使用前面的示例,如果3个周期(即,N-1个周期)已过,并且取消计时器初始被设置为4(即,N),则达到预定的取消计时器满期值“1”。当达到预定的取消计数器满期值时,生产者指令Producer-1能够确定被断言的取消是用于其自身的取消指令。虽然在该示例性实施例中选择了预定的取消计时器满期值“1”,但是可以选择其它预定的非0的取消计时器满期值。例如,如果断言的可能的取消所需的周期数是3个周期(即,N-2个周期),则取消计时器可以被设置为5(即,N)。因此,当取消计时器在3个周期之后达到“2”时,达到预定的计时器满期值“2”,生产者指令Producer-1能够确定被断言的取消是用于其自身的取消命令。这里,值N能够是任意自然数。
参考图3,在调度器103中基于图1的处理器的时钟周期来设置和重置源就绪位和取消计时器的过程被描述如下。
在周期0,当生产者指令Producer-1和依赖指令位于调度器103中时,源就绪字段和取消计时器字段被分配给依赖指令。然而,此刻,如果生产者指令Producer-1还没有在调度器103中被拾取,则源就绪位和取消计时器在调度器103中各自的字段内未被设置,因此,它们的值保持在“0”。在该周期0期间,如果生产者指令Producer-1在调度器103中被拾取并且生产者指令Producer-1推测地唤醒依赖指令,则在该周期0的最后,源就绪位被设置,并且在源就绪位被设置的同时或紧接源就绪位被设置之前或之后,取消计时器也被设置。
在周期1,由于生产者指令Producer-1被拾取并且生产者指令Producer-1推测地唤醒依赖指令,所以针对依赖指令的源的源就绪位被设置为“1”以表示对依赖指令拾取就绪。另外,针对依赖指令的源将取消计时器设置为N并且预定的取消计时器满期值可以是“1”。如前面所讨论的,考虑到预定的取消计时器满期值,针对源所设置的取消计时器N是基于针对生产者指令Producer-1断言的可能的取消所需要的周期数。取消计时器从唤醒点开始倒计时直到其期满(当达到预定的取消计时器满期值时),即,如达到预定的取消计时器满期值“1”的取消计时器所表示的那样,N-1个周期已过。
在周期N,如果取消计时器期满(即,达到预定的取消计时器满期值)并且对生产者指令Producer-1取消发生,则依赖指令不再拾取就绪直到其再次被唤醒。因此,在周期N的最后,针对依赖指令的源的源就绪位和取消计时器被重置,例如被设置为值“0”,其表示依赖指令不再处于拾取就绪直到其再次被唤醒。
在周期N+1,由于依赖指令没有再次被唤醒,源就绪位和取消计时器保持在“0”。
本文所描述的示例性实施例只需要每个源的小的取消计时器来重置针对依赖指令的源的源就绪位。其消除了在被取消的指令以及它们的依赖指令的目的标签与调度器103中所有指令的源标签之间进行大量比较以重置源就绪位的需要。
本发明构思不仅可以用于生产者指令的直接依赖指令,还可用于以下参考图4进行描述的间接依赖指令(也被称作影子(shadow)依赖指令)。
图4示出了根据示例性实施例的包括以各自的取消计时器Cancel Timer工作的生产者指令和两个依赖指令的指令流水线的示意图。
在图4中,流水线包括生产者指令Producer A(LDR R1,[R0])、依赖于生产者指令Producer A的直接依赖指令Dependent B(ADDR2,R1,5)以及依赖于直接依赖指令Dependent B的间接依赖指令Shadow Dependent C(ADD R3,R2,10)。间接依赖指令ShadowDependent C也被称作嵌套依赖指令。因此,间接依赖指令ShadowDependent C具有对生产者指令Producer A的影子依赖性或嵌套依赖性。直接依赖指令Dependent B和间接依赖指令Shadow DependentC被描述为不直接触发取消的单周期延迟指令,而生产者指令Producer A被描述为能够在周期#5中被取消的多周期延迟指令。
在下文中,根据示例性实施例,参考图1至图3对图4中所示的指令流水线中取消依赖指令的操作和重置针对依赖指令的源就绪位的操作进行描述。图5示出根据示例性实施例的说明图5中的取消和重置操作的流程图。
在本实施例中,假设直接依赖指令Dependent B和间接依赖指令Shadow Dependent C中的每一个具有单个源并且假设预定的取消计时器值为“1”。如图5中所示,在周期#3中,生产者指令ProducerA(LDR R1,[R0])推测地唤醒直接依赖指令Dependent B(ADD R2,R1,5)以允许直接依赖指令Dependent B从前进通路(forwarding path)中获取其源数据R1(S100)。
之后,在同一周期#3中,针对直接依赖指令Dependent B设置针对源的源就绪位和取消计时器(S200)。基于从直接依赖指令Dependent B被生产者指令Producer A唤醒的点到针对生产者指令Producer A断言可能的取消发生所需的周期数来设置用于直接依赖指令Dependent B的取消计时器。在本实施例中,取消计时器被设置为对应于周期#5的“2”。紧接着针对直接依赖指令Dependent B设置源就绪位和取消计时器之后,用于直接依赖指令Dependent B的源的取消计时器开始计时。
依次地,直接依赖指令Dependent B在周期#4中唤醒间接依赖指令Shadow Dependent C(ADD R3,R2,10)以从其前进通路中获取其源数据R2(S300)。
之后,在同一周期#4中,针对间接依赖指令Shadow DependentC设置针对源的源就绪位和取消计时器(S400)。基于从间接依赖指令Shadow Dependent C被直接依赖指令Producer B唤醒的点到针对生产者指令Producer A断言可能的取消所需的周期数来设置间接依赖指令Shadow Dependent C的取消计时器。在本实施例中,取消计时器被设置为对应于周期#5的“1”。紧接着为间接依赖指令ShadowDependent C设置源就绪位和取消计时器之后,针对间接依赖指令Shadow Dependent C的源的取消计时器开始计时。
接着,在周期#5中,确定生产者指令Producer A是否被取消并且直接依赖指令Dependent B和间接依赖指令Shadow Dependent C的取消计时器是否与对应于周期#5的预定的取消计时器满期值“1”相对应(S500)。
如果确定生产者指令Producer A被取消并且取消计时器与对应于周期#5的预定值相对应,则直接依赖指令Dependent B和间接依赖指令Shadow Dependent C同时都被取消并且针对直接依赖指令Dependent B和间接依赖指令Shadow Dependent C的源的源就绪位和取消计时器被重置(S600)。然而,如果在周期#5中确定生产者指令Producer A没有被取消,则生产者指令Producer A和其依赖指令(包括直接依赖指令Dependent B和间接依赖指令ShadowDependent C)被执行(S700)。
仅仅通过观察针对各个依赖指令的取消计时器和其基础生产者指令(图4情况中的生产者指令Producer A)的取消指示器,根据前面示例性实施例的指令取消和源重置方案就可以同时应用于多个依赖指令和/或多个影子依赖指令。在前面的示例实施例中,如果针对生产者指令断言取消并且如果针对依赖指令的源的取消计时器满足预定的取消计时器值,则所有的依赖指令和嵌套依赖指令被取消并且它们的源就绪位和取消计时器实质上同时被重置。这种简单的基于取消计时器的指令取消和源就绪位重置方法消除了现有技术中用于指令标签以及它们的依赖指令标签的任意开销大的标签比较的需要。
前面的示例性实施例仅仅是示例性的而不是为了限制本发明构思的范围。例如,说明书中的源就绪位和取消计时器的示例性值能够被设置为任意数字。源就绪位和取消计时器的实际位大小(或宽度)也能够是任何数值。此外,说明书中所描述的时钟周期数能够是任何数字。另外,虽然公开的示例性实施例主要以推测指令为背景进行了描述,但是本公开的教导不限于此并且还可以应用于其他类型的指令。另外,虽然在前面的示例性实施例中假设依赖指令具有单个源,但是本发明构思能够应用于具有两个或多个源的依赖指令。这些和其它变形、修改、增加和改进会落入本发明构思的范围内。因此,本发明构思的范围不是由示例性实施例的详尽描述所限定,而是由所附加的权利要求所限定,并且该范围内的所有差别将被解释为包括在本发明构思之内。
术语“一个”、“该”和“所述”以及类似的指示语在描述本发明构思的上下文(特别是在所附权利要求的上下文)中的使用被解释为涵盖单数和复数形式两者,除非在本文中另有指明或通过上下文判断明显矛盾。术语“包含”、“具有”和“包括”被解释为开放式术语(即,意思是“包括,但是不限于”),除非另有说明。
Claims (21)
1.一种用于处理多个指令的方法,所述方法包括:
由依赖指令的生产者指令推测地唤醒所述依赖指令的源;
由所述依赖指令推测地唤醒依赖于所述依赖指令的嵌套依赖指令的源;
设置所述依赖指令的源的源就绪位以及设置所述嵌套依赖指令的源的源就绪位,以表示所述依赖指令的源和所述嵌套依赖指令的源访问就绪;
基于取消时间来设置所述依赖指令的源的取消计时器以及设置所述嵌套依赖指令的源的取消计时器,在所述取消时间处预期针对所述生产者指令断言取消,所述取消计时器在所述源就绪位被设置时开始倒计时;以及
如果(i)所述依赖指令的源的取消计时器和所述嵌套依赖指令的源的取消计时器期满并且(ii)所述生产者指令被取消,则同时取消所述依赖指令和所述嵌套依赖指令。
2.根据权利要求1所述的方法,其中当所述依赖指令的源的取消计时器和所述嵌套依赖指令的源的取消计时器达到预定值时,所述依赖指令的源的取消计时器和所述嵌套依赖指令的源的取消计时器期满。
3.根据权利要求2所述的方法,其中所述预定值是非0值。
4.根据权利要求1所述的方法,还包括:
重置所述依赖指令的源的源就绪位和所述嵌套依赖指令的源的源就绪位,以表示所述依赖指令和所述嵌套依赖指令拾取未就绪,除非所述依赖指令和所述嵌套依赖指令再次被唤醒。
5.根据权利要求4所述的方法,还包括:
重置所述依赖指令的源的取消计时器和所述嵌套依赖指令的源的取消计时器。
6.根据权利要求4所述的方法,其中在所述同时取消所述依赖指令和所述嵌套依赖指令之后执行重置。
7.根据权利要求6所述的方法,其中所述嵌套依赖指令在所述依赖指令被所述生产者指令推测地唤醒之后的预定时间被所述依赖指令唤醒,以及
其中所述依赖指令的源的取消计时器和所述嵌套依赖指令的源的取消计时器基于所述取消时间被设置为不同值。
8.根据权利要求1所述的方法,其中所述嵌套依赖指令在所述依赖指令被所述生产者指令推测地唤醒之后的预定时间被所述依赖指令唤醒,以及
其中所述依赖指令的源的取消计时器和所述嵌套依赖指令的源的取消计时器基于所述取消时间被设置为不同值。
9.根据权利要求1所述的方法,其中所述生产者指令被推测地拾取。
10.根据权利要求1所述的方法,其中基于从所述依赖指令的源被所述生产者指令推测地唤醒的时间到针对所述生产者指令断言所述取消所预期的时钟周期数来确定预期针对所述生产者指令断言所述取消时的所述取消时间。
11.一种用于指令处理的设备,所述设备包括:
调度器,其拾取用于调度执行的生产者指令;和
控制器,其被配置为:
由依赖指令的生产者指令推测地唤醒所述依赖指令的源;
由所述依赖指令推测地唤醒依赖于所述依赖指令的嵌套依赖指令的源;
设置所述依赖指令的源的源就绪位以及设置所述嵌套依赖指令的源的源就绪位,以表示所述依赖指令的源和所述嵌套依赖指令的源访问就绪;
基于取消时间来设置所述依赖指令的源的取消计时器以及设置所述嵌套依赖指令的源的取消计时器,在所述取消时间处预期针对所述生产者指令断言取消,所述取消计时器在所述源就绪位被设置时开始倒计时;以及
如果(i)所述依赖指令的源的取消计时器和所述嵌套依赖指令的源的取消计时器期满并且(ii)所述生产者指令被取消,则同时取消所述依赖指令和所述嵌套依赖指令。
12.根据权利要求11所述的设备,其中当所述依赖指令的源的取消计时器和所述嵌套依赖指令的源的取消计时器达到预定值时,所述依赖指令的源的取消计时器和所述嵌套依赖指令的源的取消计时器期满。
13.根据权利要求12所述的设备,其中所述预定值是非0值。
14.根据权利要求11所述的设备,其中所述控制器还被配置为重置所述依赖指令的源的源就绪位和所述嵌套依赖指令的源的源就绪位,以表示所述依赖指令和所述嵌套依赖指令拾取未就绪,除非所述依赖指令和所述嵌套依赖指令再次被唤醒。
15.根据权利要求14所述的设备,其中所述控制器还被配置为重置所述依赖指令的源的取消计时器和所述嵌套依赖指令的源的取消计时器。
16.根据权利要求14所述的设备,其中所述控制器被配置为在同时取消所述依赖指令和所述嵌套依赖指令之后,重置所述依赖指令的源的源就绪位和所述嵌套依赖指令的源的源就绪位。
17.根据权利要求16所述的设备,其中所述嵌套依赖指令在所述依赖指令被所述生产者指令推测地唤醒之后的预定时间被所述依赖指令唤醒,以及
其中所述依赖指令的源的取消计时器和所述嵌套依赖指令的源的取消计时器基于所述取消时间被设置为不同值。
18.根据权利要求11所述的设备,其中所述嵌套依赖指令在所述依赖指令被所述生产者指令推测地唤醒之后的预定时间被所述依赖指令唤醒,以及
其中所述控制器基于所述取消时间将所述依赖指令的源的取消计时器和所述嵌套依赖指令的源的取消计时器设置为不同值。
19.根据权利要求11所述的设备,其中所述生产者指令被推测地拾取。
20.根据权利要求11所述的设备,其中所述控制器基于从所述依赖指令被所述生产者指令推测地唤醒的时间到针对所述生产者指令断言所述取消所预期的时钟周期数来确定所述取消时间。
21.根据权利要求11所述的设备,其中所述依赖指令的源的源就绪位、所述嵌套依赖指令的源的源就绪位、所述依赖指令的源的取消计时器和所述嵌套依赖指令的源的取消计时器被设置为所述调度器的条目。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/836,392 | 2013-03-15 | ||
US13/836,392 US9424041B2 (en) | 2013-03-15 | 2013-03-15 | Efficient way to cancel speculative ‘source ready’ in scheduler for direct and nested dependent instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104049952A true CN104049952A (zh) | 2014-09-17 |
CN104049952B CN104049952B (zh) | 2018-10-16 |
Family
ID=51419119
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410087003.3A Active CN104049952B (zh) | 2013-03-15 | 2014-03-11 | 直接和嵌套依赖指令的调度器中重置推测源就绪的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9424041B2 (zh) |
JP (1) | JP6148191B2 (zh) |
KR (1) | KR101985377B1 (zh) |
CN (1) | CN104049952B (zh) |
DE (1) | DE102014103282A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124492A (zh) * | 2019-12-16 | 2020-05-08 | 海光信息技术有限公司 | 指令生成方法、装置、指令执行方法、处理器及电子设备 |
CN111399912A (zh) * | 2020-03-26 | 2020-07-10 | 超验信息科技(长沙)有限公司 | 一种面向多周期指令的指令调度方法、系统及介质 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180038793A (ko) * | 2016-10-07 | 2018-04-17 | 삼성전자주식회사 | 영상 데이터 처리 방법 및 장치 |
CN106909343B (zh) * | 2017-02-23 | 2019-01-29 | 北京中科睿芯科技有限公司 | 一种基于数据流的指令调度方法及装置 |
US20220206793A1 (en) * | 2020-12-24 | 2022-06-30 | Intel Corporation | Methods, systems, and apparatuses for a scalable reservation station implementing a single unified speculation state propagation and execution wakeup matrix circuit in a processor |
US11934834B2 (en) * | 2021-10-19 | 2024-03-19 | Ampere Computing Llc | Instruction scheduling in a processor using operation source parent tracking |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6792524B1 (en) * | 1998-08-20 | 2004-09-14 | International Business Machines Corporation | System and method cancelling a speculative branch |
US20070204135A1 (en) * | 2006-02-28 | 2007-08-30 | Mips Technologies, Inc. | Distributive scoreboard scheduling in an out-of order processor |
CN101833435A (zh) * | 2010-04-19 | 2010-09-15 | 天津大学 | 基于传输触发架构可配置处理器指令冗余消除方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5778210A (en) | 1996-01-11 | 1998-07-07 | Intel Corporation | Method and apparatus for recovering the state of a speculatively scheduled operation in a processor which cannot be executed at the speculated time |
US6065105A (en) | 1997-01-08 | 2000-05-16 | Intel Corporation | Dependency matrix |
WO2000011548A1 (en) * | 1998-08-24 | 2000-03-02 | Advanced Micro Devices, Inc. | Mechanism for load block on store address generation and universal dependency vector |
US6988185B2 (en) | 2002-01-22 | 2006-01-17 | Intel Corporation | Select-free dynamic instruction scheduling |
US7130990B2 (en) | 2002-12-31 | 2006-10-31 | Intel Corporation | Efficient instruction scheduling with lossy tracking of scheduling information |
US20070043932A1 (en) | 2005-08-22 | 2007-02-22 | Intel Corporation | Wakeup mechanisms for schedulers |
US7600103B2 (en) | 2006-06-30 | 2009-10-06 | Intel Corporation | Speculatively scheduling micro-operations after allocation |
JP4230504B2 (ja) * | 2006-11-30 | 2009-02-25 | 株式会社日立製作所 | データプロセッサ |
JP2009181163A (ja) * | 2008-01-29 | 2009-08-13 | Kyoto Univ | マイクロプロセッサならびにビット・ベクタのエンコーディング方法およびビット・ベクタの生成方法 |
US8239661B2 (en) | 2008-08-28 | 2012-08-07 | International Business Machines Corporation | System and method for double-issue instructions using a dependency matrix |
US9262171B2 (en) | 2009-06-30 | 2016-02-16 | Oracle America, Inc. | Dependency matrix for the determination of load dependencies |
US9286075B2 (en) * | 2009-09-30 | 2016-03-15 | Oracle America, Inc. | Optimal deallocation of instructions from a unified pick queue |
US9256428B2 (en) * | 2013-02-06 | 2016-02-09 | International Business Machines Corporation | Load latency speculation in an out-of-order computer processor |
-
2013
- 2013-03-15 US US13/836,392 patent/US9424041B2/en active Active
- 2013-12-20 KR KR1020130160340A patent/KR101985377B1/ko active IP Right Grant
-
2014
- 2014-03-11 CN CN201410087003.3A patent/CN104049952B/zh active Active
- 2014-03-12 DE DE102014103282.9A patent/DE102014103282A1/de active Pending
- 2014-03-14 JP JP2014051609A patent/JP6148191B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6792524B1 (en) * | 1998-08-20 | 2004-09-14 | International Business Machines Corporation | System and method cancelling a speculative branch |
US20070204135A1 (en) * | 2006-02-28 | 2007-08-30 | Mips Technologies, Inc. | Distributive scoreboard scheduling in an out-of order processor |
CN101833435A (zh) * | 2010-04-19 | 2010-09-15 | 天津大学 | 基于传输触发架构可配置处理器指令冗余消除方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124492A (zh) * | 2019-12-16 | 2020-05-08 | 海光信息技术有限公司 | 指令生成方法、装置、指令执行方法、处理器及电子设备 |
CN111399912A (zh) * | 2020-03-26 | 2020-07-10 | 超验信息科技(长沙)有限公司 | 一种面向多周期指令的指令调度方法、系统及介质 |
CN111399912B (zh) * | 2020-03-26 | 2022-11-22 | 超睿科技(长沙)有限公司 | 一种面向多周期指令的指令调度方法、系统及介质 |
Also Published As
Publication number | Publication date |
---|---|
US9424041B2 (en) | 2016-08-23 |
US20140281431A1 (en) | 2014-09-18 |
DE102014103282A1 (de) | 2014-09-18 |
JP2014182829A (ja) | 2014-09-29 |
KR20140113303A (ko) | 2014-09-24 |
KR101985377B1 (ko) | 2019-06-03 |
JP6148191B2 (ja) | 2017-06-14 |
CN104049952B (zh) | 2018-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104049952A (zh) | 直接和嵌套依赖指令的调度器中重置推测源就绪的方法 | |
US9606806B2 (en) | Dependence-based replay suppression | |
US7562243B1 (en) | System and method for reducing power requirements of microprocessors through dynamic allocation of datapath resources | |
EP2972844B1 (en) | Method and apparatus for efficient scheduling for asymmetrical execution units | |
US9489206B2 (en) | Dependent instruction suppression | |
US6557095B1 (en) | Scheduling operations using a dependency matrix | |
TWI517043B (zh) | 處理器指令發佈節流 | |
US20110265068A1 (en) | Single Thread Performance in an In-Order Multi-Threaded Processor | |
US20080028193A1 (en) | Transitive suppression of instruction replay | |
TW201331832A (zh) | 增加處理器的加速模式內駐 | |
WO2000011545A1 (en) | Scheduling operations using a dependency matrix | |
US9274829B2 (en) | Handling interrupt actions for inter-thread communication | |
US10372458B2 (en) | Method and apparatus for a self-clocked, event triggered superscalar processor | |
US8578384B2 (en) | Method and apparatus for activating system components | |
US6988185B2 (en) | Select-free dynamic instruction scheduling | |
JP6209042B2 (ja) | データ処理装置 | |
US20070043932A1 (en) | Wakeup mechanisms for schedulers | |
US20140258697A1 (en) | Apparatus and Method for Transitive Instruction Scheduling | |
US9959122B2 (en) | Single cycle instruction pipeline scheduling | |
US7904703B1 (en) | Method and apparatus for idling and waking threads by a multithread processor | |
US11055150B2 (en) | Fast thread wake-up through early lock release | |
US10514925B1 (en) | Load speculation recovery | |
TW201945929A (zh) | 用於減少在保留站台中之即時預備計算之方法、裝置及系統 | |
US20230342153A1 (en) | Microprocessor with a time counter for statically dispatching extended instructions | |
JP2016110400A (ja) | 演算処理装置および演算処理装置の制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |