CN1613056A - 相关性链处理器 - Google Patents
相关性链处理器 Download PDFInfo
- Publication number
- CN1613056A CN1613056A CNA028267842A CN02826784A CN1613056A CN 1613056 A CN1613056 A CN 1613056A CN A028267842 A CNA028267842 A CN A028267842A CN 02826784 A CN02826784 A CN 02826784A CN 1613056 A CN1613056 A CN 1613056A
- Authority
- CN
- China
- Prior art keywords
- descriptor
- instruction
- correlativity
- trace
- storage area
- 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
- 238000000034 method Methods 0.000 claims abstract description 24
- 238000012545 processing Methods 0.000 claims description 4
- 238000004458 analytical method Methods 0.000 claims description 2
- 239000000284 extract Substances 0.000 claims 2
- 230000008569 process Effects 0.000 abstract description 4
- 238000009826 distribution Methods 0.000 description 7
- 230000006399 behavior Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 3
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000005056 compaction 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
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000010248 power generation Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000002618 waking effect Effects 0.000 description 1
- 230000003442 weekly 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
-
- 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/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- 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/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种用于处理器微体系结构的装置和方法,其快速而有效地大步通过程序段而不取得所有所涉及的指令。所述微体系结构以程序顺序来处理踪迹序列的描述符,从而定位并分发相关性链的描述符,所述描述符用于按数据流顺序来取得并执行相关性链的指令。
Description
技术领域
本发明涉及微处理领域,更具体地说,本发明涉及用于执行分组在相关性链(dependency chain)中的微处理器指令的装置和方法。
背景技术
大多数当前的处理器都属于称为超标量处理器的处理器类别。这一类别还可划分成RISC(精简指令集计算机)或CISC(复杂指令集计算机)处理器。这些处理器包括多个内部处理单元,同时具有将多个指令分发(dispatch)到这些处理单元的电路。超标量处理器以程序顺序取得一系列指令。在这一体系结构中,每个指令都是单个操作。超标量处理器的分发电路允许使用也称为流水线的指令队列来在单个处理器周期中执行多个指令。
这一体系结构还包括在流水线中搜索能够同时执行的指令的电路。扩宽流水线使得每个周期可以执行更多的指令。然而,不是任何给定的指令序列都能利用这一能力。指令并非彼此独立,而是彼此相关的。这些相互关系使得一些指令在其他指令被执行前不能执行,因而妨碍了对处理器同时执行多个指令这一能力的充分使用。
超长指令字(VLIW)处理器构成了另一类处理器,其中每个指令允许执行多个操作。来自一个指令的每个操作都对应于一个内部处理单元。VLIW处理器比超标量处理器要简单,因为将操作分发到多个执行单元是在指令级完成的。由于单个VLIW指令可以指定多个操作,因此VLIW处理器能够减少程序所需指令数量。然而,为了使VLIW处理器可维持可与超标量处理器相比较的每个指令的平均周期数,VLIW指令所指定的操作必须彼此不相关。否则,VLIW指令就类似于串行的多操作CISC指令,每个指令的周期数也相应地增长。VLIW处理器的指令集或长度通常相当大,采用了许多位来编码多个操作。
VLIW处理器依赖于软件来将表示程序的操作的集合组合(pack)成指令。为此,软件使用了称为压缩(compaction)的技术。将操作紧密地压缩成指令提高了性能和编码效率。在压缩期间,在不能使用其他操作的指令中使用了空(null)操作。压缩成为了乱序发射(out-of-oder issue)的限制形式,因为操作被按照许多不同的顺序置入指令中。为了压缩指令,软件必须能够检测不相关操作,而这会限制处理器体系结构、应用程序或者同时限制二者。
超标量和VLIW处理器都利用了称为指令级并行度(ILP)的概念。ILP体系结构允许在单个指令周期内并行地计算最低级的机器操作,例如存储器装载、存储、整数加法和浮点乘法。ILP体系结构包含了多个功能单元和/或流水线化的功能单元,但具有单个程序计数器,并工作在单个指令流上。对于ILP体系结构,有效的硬件利用要求所述单个指令流以如下的顺序来执行,以使得只要有可能,就可以同时执行多个低级操作。两种类型的高性能微处理器都专注于利用ILP以及由此而产生的指令组的不相关的空间表示。流水线化的以及超标量的处理器在发射指令以用于执行之前,使用硬件来检验指令相对于以前的悬空指令(in-flight instruction)的独立性。这些处理器可在搜索ILP期间乱序执行指令。相关指令(dependent instruction)不会阻塞后续的独立指令的执行。另一方面,在VLIW处理器中,依赖于编译器来识别独立操作组,并行地执行一组操作以及按照程序顺序执行不同操作组。
踪迹处理器(trace processor)是第三类处理器,其利用了称为踪迹的短动态指令序列。踪迹处理器在第一次访问一个踪迹时记录所检测到的该踪迹内的指令相关性,并且在以后访问该踪迹时复用这一信息而非重新计算该相关性,因而比之于超标量处理器有了改进。可以动态地重新调度一个踪迹,以优化该踪迹内的ILP。然而,在一个踪迹内只是利用了有限的ILP,为了利用更多的ILP,就需要并行执行多个踪迹。踪迹之间可能具有更多的相关性关系,从而需要踪迹间通信并使得产生了踪迹间的串行化。
大多数现有的超标量技术都难以进一步扩展以获得更多的ILP。ILP的小幅增长可能需要过度的硬件复杂度。仍然存在大量的“远程ILP”(far flung ILP)需要来利用。因此,需要开发复杂度有效(complexityefficient)的微体系结构实现来利用这种远程ILP。
附图说明
阅读下述详细说明并参考附图后,本发明的其他优点将变得很清楚,其中:
图1示出了相关性链处理器;
图2示出了踪迹描述符和DC(相关性链)描述符;
图3示出了一个示例性踪迹;
图4示出了表示为相关性链图的图3的踪迹;
图5示出了虚拟发射窗口和实际物理窗口;
图6示出了在相关性链处理器中处理数据的步骤的流程图;并且
图7示出了相关性链处理器系统。
具体实施方式
下面将参考特定的配置来描述示例性实施例。本领域内的技术人员将会认识到可以作出各种改变和修正,但仍处于所附权利要求的范围之内。另外,未详细示出公知的元件、设备、组件、电路和处理步骤等等以免模糊本发明。
本发明涉及将一个程序重新投射(recast)成相关性链。相关性链以及与其相关的信息记录在存储设备中。本发明在相关性链中处理这种所记录的信息。
根据最大踪迹大小以及控制流边界来将动态程序流划分成踪迹,从而形成所述相关性链信息。然后,沿着数据流边界将每个踪迹进一步划分成完全独立的相关性链。本领域内的技术人员将会认识到,也可以使用帧或其他任何类型的动态指令序列来取代踪迹,从而实现本发明。
相关性链被定义为踪迹数据流图的全连接元素。如果一个指令在一个相关性链中有生产者指令或消费者指令,则将该指令分配到该相关性链。生产者指令生成当前指令所依赖的结果或副产品。消费者指令依赖于当前指令的结果或副产品。相关性链中的指令在踪迹中可以是非连续的。当一个生产者具有多个消费者时,相关性链可包含fork,而当一个消费者具有多个生产者时,相关性链可包含join。注意,在此情形下的相关性链因此实际上意味着相关性图。然而,用词语“链”来替换术语“图”(graph)可以更好地表达数据结构使用的焦点,并且这也是本领域内常用的术语。
图3使用可从MIPS技术公司获得的MIPSTM处理器的指令集,示出了一个踪迹样本用于作为示例。图4示出了图3的踪迹,将其表示为构成性相关性链。相关性链图中的每个圆圈等价于来自该踪迹的一个指令。这样,图4中的相关性链1中标记为I00的圆圈对应于图3中的指令I00,这是一个存储字(store word)操作。没有后续的指令依赖于指令I00,因为寄存器3的内容没有受到影响,也没有任何后续指令需要被指向为指令I00的目的地的存储器位置的内容。
图4中的相关性链2表现出指令I10、I05和I09都依赖于指令I01。指令I10将整数4加到寄存器R6的内容上,然而这一加法的结果依赖于发生在指令I01中的加法。指令I05依赖于I01,因为它将寄存器R6指向的存储器位置的内容装载到寄存器R5中,而寄存器R6曾经被指令I01改变过。类似地,指令I09寻求将寄存器R3的内容存储到寄存器R6所指向的存储器位置,因此它依赖于指令I01的结果。
所述相关性链是按照在存储器或者诸如图1中的相关性链指令存储单元10之类的专用缓存中的相关性顺序而展开的。称为“描述符”的信息包被生成来用于相关性链和踪迹。图2示出了相关性链和踪迹描述符格式。相关性链描述符101包含相关性链105在相关性链指令存储单元10中的地址而非实际指令的地址,因此足以表示整个相关性链。相关性链描述符101还可包含与相关性链的内在数据(live-in)103和外在数据(live-out)有关的信息。内在数据是相关性链或踪迹作为一个整体执行时所依赖的数据。外在数据是被相关性链所改变、并且其他相关性链可能对其有依赖的数据。图2所示的踪迹描述符102表示一个踪迹。踪迹描述符保存相关性链描述符以及整个踪迹的总体内在数据106和外在数据108信息。踪迹描述符102存储在专用缓存或存储器,例如图1所示的踪迹描述符存储单元10中。在另一个实施例中,踪迹描述符同时存储在专用缓存和通用存储器设备中。
相关性链可以在运行时由硬件或运行时软件微代码或其组合来透明而有效地构建。编译器也可以通过利用性能分析数据(profile data)或静态流控制推测来构建相关性链。相关性链一般会跨越多个基础块,并且可跨越多个踪迹甚至多个帧。它们可以存储在用于编译器构建的相关性链的用户可寻址存储器中,或者存储在用户程序员不可直接访问的程序地址基的保留部分中。这一存储器的物理实现可以被优化以用于取得相关性链。可能的优化包括多区段化(multi-banking)、多阵列化(multi-arraying)或专用的相关性链缓存结构。
图1示出了本发明的一个实施例,其中相关性链处理器由控制流引擎(CFE)2和数据流引擎(DFE)7构成,所述两个引擎以生产者消费者的方式协作来执行程序。控制流引擎2以推测式控制流顺序从踪迹描述符存储单元读取踪迹描述符并进行处理。踪迹描述符的推测式取得是由踪迹取得单元3执行的。除了集合性踪迹信息之外,每个踪迹描述符102还都包含用于该踪迹的构成性相关性链的相关性链描述符101。DC(相关性链)分发单元4对踪迹描述符进行处理之后,控制流引擎2将构成性相关性链描述符101推入到相关性链发射窗口6中。数据流引擎7然后消费来自相关性链发射窗口6的相关性链描述符101,将它们分发到可用的执行簇8以用于执行,在每个执行簇8内,从相关性链指令存储单元中取得所分配的相关性链的指令并执行。
控制流引擎2负责良序执行语义。在全局重命名图5中查找存储在每个踪迹描述符102中的踪迹内在数据寄存器名称,并将之翻译成全局重排序缓冲区9中的条目标签。全局寄存器标签记录在相关性链描述符101中。只有踪迹内在数据值被动态地重命名,而非所有的指令源。控制流引擎2还在全局重排序缓冲区9中为踪迹外在数据结果分配条目。只有踪迹外在数据在重排序缓冲区9中分配了空间,而非其他类型的指令结果。所分配的条目标签记录在相关性链描述符101中。
控制流引擎2按照程序顺序取得踪迹描述符102并处理它们。对于每个踪迹,控制流引擎2在重排序缓冲区9中分配足够的空间,重命名内在数据和外在数据值以便为其相关性链而重排序缓冲区条目,并将相关性链描述符101分发到相关性链发射窗口6以用于执行。除了只存储相关性链的外在数据而非各个指令结果之外,重排序缓冲区9与和典型的重排序缓冲区例如可从英特尔公司获得的Pentium ProTM ROB相类似。
数据流引擎7负责乱序取得并执行指令。它消费来自相关性链发射窗口6的相关性链描述符101,并将它们分配到可用的执行簇8。存储在每个相关性链描述符101中的相关性链地址105由每个簇8使用,以开始依次取得并执行该相关性链的指令。数据流引擎具有多个执行簇8,以使得可同时执行许多相关性链并获得高ILP。相关性链内的指令是按相关性排序的,脱离了程序顺序,并且所有的相关性链内的相关性都被静态地预先重命名到每个簇8局部所有的微型寄存器文件。当将相关性链分配到簇8时,相关性链内在数据源和外在数据结果都被静态地预先分配到局部寄存器,对被配置成指向全局寄存器文件标签的条目进行重映射。
每个簇内的指令都可能因为先前的指令执行或内在数据可用性而停滞。只有相关性链外在数据结果被全局广播到其他簇8和全局重排序缓冲区9。在另一个实施例中,所述簇被流水线化了,并且包含先进先出(FIFO)流缓冲区来支持指令预取。数据流引擎7同时提供了静态和动态的乱序取得与执行。每个相关性链内的指令被静态地按照数据流而预排序。不同簇8中的相关性链可以彼此独立地动态停滞或恢复。通过确保在相同踪迹的相关性链之间不存在数据相关性,可以进一步改善独立的相关性链执行。然而,相关性链可能会停滞以满足先前踪迹所产生的内在数据。
整体上说,指令取得是一个两阶段的过程。按照程序顺序取得踪迹描述符102是第一阶段。按照相关性顺序而取得相关性链的实际指令是第二阶段。这具有两个主要的益处。首先,在控制流引擎2中取得并处理踪迹描述符102可使得它在动态指令流中前进得更快,这是因为踪迹描述符102比起指令自身来占用了少得多的空间,以及因为控制流引擎2只分配踪迹的集合性资源例如全局重排序缓冲区9外在数据条目。通过踪迹描述符102以及分发相关性链描述符101而获得的领先运行可以创建一个大虚拟发射窗口,使得处理器可获得可能很远但已准备就绪执行的指令,如图5所示。控制流引擎2通过踪迹描述符102的快速前进还使得所述虚拟发射窗口在分支误预测之后可进行快速重填。
两阶段的取得系统的第二个益处在于指令是刚好及时(just in time)地分别取得以用于执行,因此不需要在大物理发射窗口的机器中所进行的典型的存储和状态跟踪。只需要跟踪当前执行的指令和外在数据结果。因此,在维护虚拟发射窗口中的指令团上只花费了最小的硬件成本。
相关性链指令的执行几乎与在传统的处理器中完全相同。如果它的输出是来自该相关性链的外在数据,则它更新合适的重排序缓冲区9条目,否则它只是更新局部寄存器。另外,指令的发射执行触发了对该相关性链的下一个指令的刚好及时的取得。相关性链发射窗口6用作为传统的指令窗口。它保存正在等待寄存器或存储器值的所有相关性链的描述符。正如超标量处理器中那样,其中指令是从指令发射窗口乱序发射到功能单元的。在相关性链处理器中,相关性链是从相关性链发射窗口6乱序发射到执行单元的。然而,相关性链发射窗口6中的每个条目都保存相关性链描述符101而非相关性链指令。当活动的相关性链写外在数据寄存器或完成存储时,通过相关性链发射窗口6广播对应的信息。
实际上,控制流引擎2维护了冯·诺伊曼机器体系结构风格的执行语义而实际上不取得指令本身,而数据流引擎像数据流机器那样脱离程序顺序地取得并执行踪迹的指令。而且,相关性链内指令结果通信(大多数的通信主要部分)被包含在每个执行簇内。只有是来自每个相关性链的外在数据的结果需要被全局广播到其他簇8和全局重排序缓冲区9。以与在帧处理器内相类似的方式来处理例外(exception)。踪迹被作为用于全局重命名图5和重排序缓冲区9的检查点间隔来处理。当踪迹内发生例外时,将处理器状态恢复到踪迹检查点的起始处(踪迹边界),并按程序顺序依次重放(replay)后续指令,直到到达发生故障的指令。
在通常的环境下,控制流引擎2和数据流引擎7通过相关性链发射窗口6而具有简单的生产者消费者关系。一般地,如果一个踪迹中的所有指令都没有例外也没有误预测地执行,则整个踪迹可以通过下述操作而被提交(commit):释放它的重排序缓冲区条目,同时将它们的值拷贝到体系结构状态。然而,分支误预测和例外产生了若干特殊的情形,在这些情形下数据流引擎7可能会影响控制流引擎2。
所述体系结构状态由到每个寄存器的最近完成和待处理的分配构成,其与已知指令序列的结束相关,而与哪些指令已被发射或完成无关。这是必须被该指令序列之后的指令访问以进行正确的操作的状态。
踪迹内的分支可以被转换成控制流断言(assertion)。当分支被误预测时,它的断言将激活,使得处理器状态被恢复成踪迹检查点的起始状态。然后可以使用可用的正确的路径踪迹描述符来恢复通常的踪迹描述符取得。可以通过相关性预测来推测式地处理存储器相关性,以建立相关性链之间的相关性,其中既在相关性链形成期间进行静态预测,也进行动态预测。“存储到装载”(store to load)存储器相关性误预测需要重放受影响的相关性链,并抑制了内部“存储到装载”的前进,以确保被误预测的装载能获得正确的数据。然后,可以全部或部分地重放后续的踪迹。其他数据相关的误推测以及多种精妙的控制独立性技术也可以类似地处理。
通过存储器相关性推测表,可以如在传统的处理器中那样处理存储器相关性。如果一个相关性链被预测为依赖于先前分发的相关性链,则它可被合适的贴上标签并被分发到相关性链发射窗口6。该标签使得它可以监视阻塞池广播(block pool broadcast)以完成它的祖先相关性链。
在相关性链处理器中,与超标量处理器相比,减小了寄存器重命名带宽,因为只需要在全局重命名图5中动态查找踪迹内在数据。而且消除了分发组内部的相关性检查,因为这些成为了静态建立的相关性链内部的相关性。相关性链处理器中的调度大大简化了,因为只有活动的相关性链的头部中的少量指令可适于唤醒(wake up)和选择(select)。调度变得微不足道,因为每个簇都可能会唤醒并选择单个指令,排除了平方复杂度。同时,通过将指令组织在新的相关性链中并在独立地停滞的簇中执行这些指令,保持了动态乱序调度器的灵活性。另外,对于给定的前端带宽,通过精简的描述符而前进,而非取得指令,这可以使得在分支误预测之后更快地重填虚拟发射窗口。
通过仅对踪迹外在数据结果进行全局广播并且通过使用相关性链来用于簇8分配,减少了全局结果通信。确保了来自相同踪迹的同时执行的多个相关性链之间不需要进行通信。
在重命名寄存器5和重排序缓冲区9中只分配外在数据条目,而且,对描述符几乎一直使用到实际执行时,然后才只是执行刚好及时的取得和译码,通过上述操作,最小化了指令状态跟踪。利用刚好及时的取得,必须保持的指令状态量成为了发射宽度的函数,而非大得多的发射窗口的函数。实际发射窗口不需要保持和跟踪许多等待操作数的指令。
来自一个相关性链的外在数据可在重排序缓冲区9中聚集到一起,或者与来自相同踪迹描述符中的其他相关性链的外在数据交织在一起。然而,来自不同踪迹的外在数据不会交织。这使得可在分支误预测的情形下实现踪迹检查点处的体系结构状态恢复。在分配了重排序缓冲区9条目后,用外在数据寄存器的新位置来更新全局寄存器重命名图5。来自后续踪迹描述符102的相关性链使用重命名图5来获得它们的内在数据值的最新版本的标签。对旧的映射进行检查点操作,以实现分支误预测恢复。在取得踪迹描述符102后,控制流引擎2可以使用下一个踪迹描述符。根据需要,控制流引擎2的踪迹取得和处理步骤可以被流水线化。
数据流引擎7耦合到相关性链发射窗口6,从相关性链发射窗口6将就绪的相关性链发射到执行簇8。每个执行簇8都具有简单指令队列、执行单元池和局部寄存器文件。指令被取到该指令队列中,并按照满足数据流约束条件的顺序而被发射到局部执行单元。所述指令队列可以是这样的指令流缓冲区,其基于数据流约束条件,从相关性链指令存储单元10刚好及时地取得其相关性链的指令。局部寄存器文件用于处理相关性链内部的寄存器通信。
相关性链发射窗口6可被划分成非活动区和活动区。非活动区缓冲控制流引擎2,并将之与数据流引擎7解耦合。来自执行簇8的外在数据结果不需要被广播到非活动区。每个相关性链都保留在发射窗口6的活动部分,直到其所有的指令都在它所分配的簇8中执行。
相关性发射窗口6的其他实施例包括这样一种实现,其中每个被阻塞的相关性链都在相关性链发射窗口6中等待,直到它所有的内在数据都变为可用。每个被阻塞的相关性链都在相关性链发射窗口6中具有单个条目,条目宽度等于它的内在数据数量。
在这一实施例中,相关性链一旦被分配到某个执行单元,就被从发射窗口6去除。所述相关性链然后不需要监听内在数据结果,因为它们在被分配到执行簇8之前已等待接收所有必需的内在数据。其所有的内在数据都已在存储器中准备就绪并且相关性已被清除的相关性链被发射到执行簇。这一实现的优点在于只有完全准备就绪执行的相关性链才被分配到执行簇。其缺点在于在其所有的内在数据就绪之前相关性链不会开始执行。
在另一个实施例中,一旦用于第一个指令的内在数据变为可用,就将一个簇分配给相关性链。只要任何其他所需的内在数据就绪,相关性链内的指令然后就可以继续执行。相关性链执行可能会中途停滞,以等待所需要的另一个内在数据。在这一实施例中,只有已被分配到执行簇8的相关性链才位于发射窗口6的活动区中。其他相关性链保留在发射窗口6的非活动区中,因为它们不需要监听来自执行簇8的外在数据结果(这些外在数据结果可能是活动区中的相关性链的内在数据)。优点在于在可获得所有的内在数据之前可以更快地开始执行相关性链。缺点在于,由于有存储在局部寄存器文件中的局部值,中途停滞的相关性链仍然占据着执行簇8。
在上述两个实施例中,分发都被逻辑分解成两个组成部分:将相关性链分发到簇,以及将相关性链内的指令分发到该簇内的功能单元。
在本发明的另一个实施例中,一项改进使得相关性链可被链接到以前所链接的相关性链。这使得只要需要,就可以对多个相关性链构建一个更长的链。为了可实现这种多级链接,可以适当地维护一个相关性链图,以使得由一个所链接的相关性链所生成的寄存器和存储器位置可被映射回到该链的相关性链的祖先相关性链。这使得相关性链可快速定位其祖先的根。
在本发明的另一个实施例中,相关性链发射窗口6可使用一个附加的直接映射表来实现相关性链链接。该表将依赖于单个活动的相关性链而非多个相关性链的相关性链保存为一个块,并在一个活动的相关性链的相关性链ID内进行索引。当一个活动的相关性链完成时,以直接映射的方式查找链接表,以除了将相关性链结果在相关性窗口的其余部分上广播之外,还触发相关的相关性链。结果广播以及与在大窗口上的匹配相关联的成本还可以进一步减少。如果每个相关性链都具有单个存储器引用,则该表对于其存储器相关性尤其有用。而且,直接映射表可以简化被阻塞的相关性链到执行簇8的刚好及时的转移,因为它直接链接了多个相关的相关性链,而非通过中介存储单元将它们链接起来。链接的实现需要有将寄存器和存储器相关性映射回生产者相关性链的表,这些表统称为相关性链图。实现上述表的一种方式是仅在相关性链池中的相关性链条目中提供一个字段。所述字段保存相关的相关性链的相关性链描述符。
本发明的其他实施例用适于管理控制流引擎2和数据流引擎7之间的生产者消费者关系的其他数据结构(例如优先队列或堆栈)来替换所述相关性链发射窗口6。另一个实施例在控制流引擎2和数据流引擎7之间不使用任何中介结构。控制流引擎2基于数据流引擎7的消费能力来进行生成。这是由来自数据流引擎的一个控制信号实现的,该信号表示数据流引擎准备就绪接受相关性链描述符。
以刚好及时的方式从存储器取相关性链指令。每个相关性链可以由编译器依次在存储器中展开,或者,运行时相关性链构造器可以智能地放置相关性链,以最大化多区段(bank)存储器系统的优点并最小化并发相关性链之间的区段冲突。物理存储器可以用驻留在单个区段中的每个相关性链来区段化。依次取得一个相关性链的指令,因此不需要将相关性链条带化(stripe)成跨越多个区段。由于多个相关性链将会并行地执行,因此每个数据流引擎执行簇8然后使用它的相关性链ID中的一些ID来访问它的区段,以获得基地址和相关性链程序计数器。可以分配所述相关性链ID,以使得它们可以并行地从多个区段中取得。
单个存储器区段的线宽度(line width)使得可在单个并行访问中将多个相关性链指令取到执行簇。存储器区段的线宽度可被减小到一个指令字,以使得可使用有限的存储器带宽来并行地取得多个相关性链。以刚好及时的方式来取得相关性链的多个线:当指令完成时间已知时就启动后续指令的取得。
在本发明的另一个实施例中,可在每个执行簇8之前添加一个指令流缓冲区。由于一个相关性链内的指令是串行取得并执行的,因此它们可被缓存在简单的先进先出(FIFO)流缓冲区中以屏蔽可能发生的区段冲突的影响。只要相关性链内的指令执行由于对于数据缓存缺失而产生的较长的执行延迟而停止,流缓冲区填充就会领先于执行。如果所述线大于一个指令,则流缓冲区也会领先。
流缓冲区改进的另一个形式可以从其中存储了相关性链的专用相关性链缓存来填充流缓冲区。每个相关性链缓存条目线都保存一个完整的相关性链。当相关性链被发射到执行簇时,它的整个相关性链缓存线都可能被专用到一个空的流缓冲区中。在FIFO设计中,流缓冲区可以被修改成使得可在一个周期中并行地写它所有的条目,而非反复地填充。这可能会将相关性链发射限制为每周期一个,但将会消除区段冲突问题。
本发明的另一个实施例示出在图7中,其中将相关性链处理器205用于一个计算机系统中,总线200将相关性链处理器205与存储器201、存储单元202以及其他外设例如键盘203相连接。
另一个实施例将以软件(例如微代码或高级计算机语言)来实现所述相关性链处理器。所述软件实现还可用来运行相关性链处理器的仿真或模拟。软件实现可以存储在机器可读介质上。“机器可读”介质可包括可以存储或传输信息的任何介质。机器可读介质的示例包括ROM、软盘、CD-ROM、光盘、硬盘、射频(RF)链路等等。
至此已公开了若干示例性实施例,可对所公开的实施例作出修改和变动,但仍处于本发明如所附权利要求所定义的精神和范围之内。
Claims (30)
1.一种逻辑电路,包括:
控制流逻辑,用于选择踪迹描述符以用于处理,所述踪迹描述符包括至少一个相关性描述符,所述相关性描述符包括每个指令序列的相关性信息;以及
数据流逻辑,其耦合到所述控制流逻辑,以根据存储在所述相关性描述符中的所述相关性信息来执行多个指令序列。
2.如权利要求1所述的逻辑电路,还包括耦合到所述控制流逻辑和所述数据流逻辑的第一存储区域,用于存储所述相关性描述符。
3.如权利要求2所述的逻辑电路,还包括耦合到所述控制流逻辑的第二存储区域,用于存储踪迹描述符。
4.如权利要求3所述的逻辑电路,还包括耦合到所述数据流逻辑的第三存储区域,用于基于相关性信息而连续地存储指令。
5.如权利要求4所述的逻辑电路,还包括耦合到所述数据流逻辑和所述控制流逻辑的第四存储区域,用于存储外在数据。
6.如权利要求5所述的逻辑电路,还包括耦合到所述控制流逻辑的第五存储区域,用于映射内在数据和外在数据。
7.如权利要求6所述的逻辑电路,其中所述存储区域中的每一个都在至少一个存储器设备中。
8.如权利要求1所述的逻辑电路,其中所述踪迹描述符包括用于所述至少一个相关性描述符的集合性内在数据。
9.如权利要求1所述的逻辑电路,其中所述踪迹描述符包括用于所述至少一个相关性描述符的集合性外在数据。
10.一种计算机系统,包括:
至少一个存储器设备;
耦合到所述至少一个存储器设备的总线;
控制流逻辑,用于分析指令序列之间的相关性,并创建包含用于每个指令序列的相关性信息在内的相关性描述符;以及
数据流逻辑,其耦合到所述控制流逻辑,以根据存储在所述相关性描述符中的所述相关性信息来执行多个所述指令序列。
11.如权利要求10所述的计算机系统,还包括耦合到所述控制流逻辑和所述数据流逻辑的第一存储区域,用于存储所述相关性描述符。
12.如权利要求11所述的计算机系统,还包括耦合到所述控制流逻辑的第二存储区域,用于存储踪迹描述符。
13.如权利要求12所述的计算机系统,还包括耦合到所述数据流逻辑的第三存储区域,用于基于相关性信息而连续地存储指令。
14.如权利要求13所述的计算机系统,还包括耦合到所述数据流逻辑和所述控制流逻辑的第四存储区域,用于存储外在数据。
15.如权利要求14所述的计算机系统,还包括耦合到所述控制流逻辑的第五存储区域,用于映射内在数据和外在数据。
16.如权利要求15所述的计算机系统,其中所述存储区域中的每一个都在至少一个存储器设备中。
17.如权利要求10所述的计算机系统,其中所述踪迹描述符包括用于所述至少一个相关性描述符的集合性内在数据。
18.如权利要求10所述的计算机系统,其中所述踪迹描述符包括用于所述至少一个相关性描述符的集合性外在数据。
19.如权利要求10所述的计算机系统,其中所述相关性描述符包括所述相关性信息的内在数据和外在数据。
20.一种处理指令的方法,包括:
取得踪迹描述符;
从所述踪迹描述符中分离出相关性描述符,该相关性描述符包括用于一组指令的相关性信息;
取得由相关性描述符描述的所述指令组;以及
根据存储在所述相关性描述符中的相关性,执行多个指令序列。
21.如权利要求20所述的方法,还包括:
更新第一存储区域中的外在数据。
22.如权利要求21所述的方法,还包括:
将由控制流逻辑抽取的相关性描述符存储到第二存储区域中;以及
将所述描述符从所述第二存储区域读到数据流逻辑中。
23.如权利要求22所述的方法,其中,刚好及时地完成所述对指令组的取得,以用于执行。
24.如权利要求23所述的方法,其中所述指令是乱序的。
25.如权利要求24所述的方法,还包括:
使用所述第一存储区域中的数据来更新体系结构状态。
26.如权利要求25所述的方法,还包括:
使用所述第一存储区域中的数据来在误预测后恢复较早的体系结构状态。
27.如权利要求20所述的方法,其中所述选择包括预测用于处理的下一个踪迹描述符。
28.一种提供指令的机器可读介质,所述指令当被机器执行时使得所述机器执行包括下述步骤的操作:
取得踪迹描述符;
从所述踪迹描述符中分离出相关性描述符,该相关性描述符包括用于一组指令的相关性信息;
取得由相关性描述符描述的所述指令组;以及
根据存储在所述相关性描述符中的相关性,执行多个指令序列。
29.如权利要求28所述的机器可读介质,其中所述操作还包括:
更新第一存储区域中的外在数据。
30.如权利要求29所述的机器可读介质,其中所述操作还包括:
将由控制流逻辑抽取的相关性描述符存储到第二存储区域中;以及
将所述描述符从所述第二存储区域读到数据流逻辑中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/037,666 | 2002-01-03 | ||
US10/037,666 US7363467B2 (en) | 2002-01-03 | 2002-01-03 | Dependence-chain processing using trace descriptors having dependency descriptors |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1613056A true CN1613056A (zh) | 2005-05-04 |
CN1294485C CN1294485C (zh) | 2007-01-10 |
Family
ID=21895615
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB028267842A Expired - Fee Related CN1294485C (zh) | 2002-01-03 | 2002-12-27 | 相关性链处理器 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7363467B2 (zh) |
KR (1) | KR100676011B1 (zh) |
CN (1) | CN1294485C (zh) |
AU (1) | AU2002361879A1 (zh) |
TW (1) | TWI277898B (zh) |
WO (1) | WO2003058435A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100444118C (zh) * | 2007-03-19 | 2008-12-17 | 中国人民解放军国防科学技术大学 | 基于逻辑发射序号的软、硬件结合指令相关性控制方法 |
CN101925889B (zh) * | 2008-01-25 | 2012-10-10 | 微软公司 | 使用书签的流对象实例化 |
CN107368285A (zh) * | 2006-11-14 | 2017-11-21 | 英特尔公司 | 多线程架构 |
US10740126B2 (en) | 2013-03-15 | 2020-08-11 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
US11163720B2 (en) | 2006-04-12 | 2021-11-02 | Intel Corporation | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
US11204769B2 (en) | 2011-03-25 | 2021-12-21 | Intel Corporation | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US11656875B2 (en) | 2013-03-15 | 2023-05-23 | Intel Corporation | Method and system for instruction block to execution unit grouping |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7600221B1 (en) * | 2003-10-06 | 2009-10-06 | Sun Microsystems, Inc. | Methods and apparatus of an architecture supporting execution of instructions in parallel |
JP4784912B2 (ja) * | 2004-03-02 | 2011-10-05 | パナソニック株式会社 | 情報処理装置 |
EP1622009A1 (en) * | 2004-07-27 | 2006-02-01 | Texas Instruments Incorporated | JSM architecture and systems |
US20070022274A1 (en) * | 2005-06-29 | 2007-01-25 | Roni Rosner | Apparatus, system, and method of predicting and correcting critical paths |
US8543992B2 (en) * | 2005-12-17 | 2013-09-24 | Intel Corporation | Method and apparatus for partitioning programs to balance memory latency |
KR101029074B1 (ko) | 2007-01-10 | 2011-04-18 | 삼성전자주식회사 | 호스트 컨트롤러에서의 디스크립터 추적 장치 및 그 추적방법 |
US20090210669A1 (en) * | 2008-02-19 | 2009-08-20 | Luick David A | System and Method for Prioritizing Floating-Point Instructions |
US20090210672A1 (en) * | 2008-02-19 | 2009-08-20 | Luick David A | System and Method for Resolving Issue Conflicts of Load Instructions |
US7877579B2 (en) * | 2008-02-19 | 2011-01-25 | International Business Machines Corporation | System and method for prioritizing compare instructions |
US8108654B2 (en) * | 2008-02-19 | 2012-01-31 | International Business Machines Corporation | System and method for a group priority issue schema for a cascaded pipeline |
US20090210677A1 (en) * | 2008-02-19 | 2009-08-20 | Luick David A | System and Method for Optimization Within a Group Priority Issue Schema for a Cascaded Pipeline |
US20090210666A1 (en) * | 2008-02-19 | 2009-08-20 | Luick David A | System and Method for Resolving Issue Conflicts of Load Instructions |
US7865700B2 (en) * | 2008-02-19 | 2011-01-04 | International Business Machines Corporation | System and method for prioritizing store instructions |
US8095779B2 (en) * | 2008-02-19 | 2012-01-10 | International Business Machines Corporation | System and method for optimization within a group priority issue schema for a cascaded pipeline |
US7882335B2 (en) * | 2008-02-19 | 2011-02-01 | International Business Machines Corporation | System and method for the scheduling of load instructions within a group priority issue schema for a cascaded pipeline |
US7870368B2 (en) * | 2008-02-19 | 2011-01-11 | International Business Machines Corporation | System and method for prioritizing branch instructions |
US7996654B2 (en) * | 2008-02-19 | 2011-08-09 | International Business Machines Corporation | System and method for optimization within a group priority issue schema for a cascaded pipeline |
US7984270B2 (en) * | 2008-02-19 | 2011-07-19 | International Business Machines Corporation | System and method for prioritizing arithmetic instructions |
US8037366B2 (en) * | 2009-03-24 | 2011-10-11 | International Business Machines Corporation | Issuing instructions in-order in an out-of-order processor using false dependencies |
US8332536B2 (en) * | 2009-06-11 | 2012-12-11 | International Business Machines Corporation | Content protection continuity through authorized chains of components |
KR101640848B1 (ko) * | 2009-12-28 | 2016-07-29 | 삼성전자주식회사 | 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 |
US9348587B2 (en) * | 2010-07-09 | 2016-05-24 | Hyperion Core, Inc. | Providing code sections for matrix of arithmetic logic units in a processor |
WO2012037491A2 (en) | 2010-09-17 | 2012-03-22 | Soft Machines, Inc. | Single cycle multi-branch prediction including shadow cache for early far branch prediction |
CN108376097B (zh) | 2011-03-25 | 2022-04-15 | 英特尔公司 | 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段 |
TWI533129B (zh) | 2011-03-25 | 2016-05-11 | 軟體機器公司 | 使用可分割引擎實體化的虛擬核心執行指令序列程式碼區塊 |
TWI666551B (zh) | 2011-05-20 | 2019-07-21 | 美商英特爾股份有限公司 | 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行 |
EP2710480B1 (en) | 2011-05-20 | 2018-06-20 | Intel Corporation | An interconnect structure to support the execution of instruction sequences by a plurality of engines |
US9529596B2 (en) * | 2011-07-01 | 2016-12-27 | Intel Corporation | Method and apparatus for scheduling instructions in a multi-strand out of order processor with instruction synchronization bits and scoreboard bits |
WO2013077872A1 (en) * | 2011-11-22 | 2013-05-30 | Soft Machines, Inc. | A microprocessor accelerated code optimizer and dependency reordering method |
IN2014CN03678A (zh) | 2011-11-22 | 2015-09-25 | Soft Machines Inc | |
CN104040491B (zh) * | 2011-11-22 | 2018-06-12 | 英特尔公司 | 微处理器加速的代码优化器 |
GB2503438A (en) * | 2012-06-26 | 2014-01-01 | Ibm | Method and system for pipelining out of order instructions by combining short latency instructions to match long latency instructions |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
WO2014142704A1 (en) | 2013-03-15 | 2014-09-18 | Intel Corporation | Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
WO2014151018A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for executing multithreaded instructions grouped onto blocks |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
CN106030519A (zh) * | 2014-03-27 | 2016-10-12 | 英特尔公司 | 用于从多个股分派指令的处理器逻辑和方法 |
US9977619B2 (en) | 2015-11-06 | 2018-05-22 | Vivante Corporation | Transfer descriptor for memory access commands |
US10303481B2 (en) | 2015-12-02 | 2019-05-28 | International Business Machines Corporation | Performance-aware instruction scheduling |
US11036514B1 (en) | 2016-08-23 | 2021-06-15 | Apple Inc. | Scheduler entries storing dependency index(es) for index-based wakeup |
EP3543846B1 (en) * | 2016-12-12 | 2022-09-21 | Huawei Technologies Co., Ltd. | Computer system and memory access technology |
US10474552B2 (en) | 2017-05-18 | 2019-11-12 | Nxp Usa, Inc. | Hardware and software debug using data dependency tracing |
US10684861B2 (en) * | 2017-09-25 | 2020-06-16 | International Business Machines Corporation | Enhanced performance-aware instruction scheduling |
US10936321B2 (en) * | 2019-02-01 | 2021-03-02 | International Business Machines Corporation | Instruction chaining |
US11163581B2 (en) * | 2019-10-21 | 2021-11-02 | Arm Limited | Online instruction tagging |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2263565B (en) * | 1992-01-23 | 1995-08-30 | Intel Corp | Microprocessor with apparatus for parallel execution of instructions |
US5699537A (en) * | 1995-12-22 | 1997-12-16 | Intel Corporation | Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions |
US5732255A (en) * | 1996-04-29 | 1998-03-24 | Atmel Corporation | Signal processing system with ROM storing instructions encoded for reducing power consumpton during reads and method for encoding such instructions |
US6044222A (en) * | 1997-06-23 | 2000-03-28 | International Business Machines Corporation | System, method, and program product for loop instruction scheduling hardware lookahead |
US6018798A (en) * | 1997-12-18 | 2000-01-25 | Advanced Micro Devices, Inc. | Floating point unit using a central window for storing instructions capable of executing multiple instructions in a single clock cycle |
US6260189B1 (en) * | 1998-09-14 | 2001-07-10 | Lucent Technologies Inc. | Compiler-controlled dynamic instruction dispatch in pipelined processors |
US6351844B1 (en) * | 1998-11-05 | 2002-02-26 | Hewlett-Packard Company | Method for selecting active code traces for translation in a caching dynamic translator |
US6247097B1 (en) * | 1999-01-22 | 2001-06-12 | International Business Machines Corporation | Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions |
US6304962B1 (en) * | 1999-06-02 | 2001-10-16 | International Business Machines Corporation | Method and apparatus for prefetching superblocks in a computer processing system |
US6427204B1 (en) * | 1999-06-25 | 2002-07-30 | International Business Machines Corporation | Method for just in-time delivery of instructions in a data processing system |
KR100347865B1 (ko) * | 1999-11-15 | 2002-08-09 | 삼성전자 주식회사 | 어드레스 트레이스를 이용한 분기 예측 방법 |
US6708267B1 (en) * | 2000-02-04 | 2004-03-16 | International Business Machines Corporation | System and method in a pipelined processor for generating a single cycle pipeline stall |
US7051193B2 (en) * | 2001-03-28 | 2006-05-23 | Intel Corporation | Register rotation prediction and precomputation |
US20020144101A1 (en) * | 2001-03-30 | 2002-10-03 | Hong Wang | Caching DAG traces |
-
2002
- 2002-01-03 US US10/037,666 patent/US7363467B2/en not_active Expired - Fee Related
- 2002-12-27 AU AU2002361879A patent/AU2002361879A1/en not_active Abandoned
- 2002-12-27 KR KR1020047010518A patent/KR100676011B1/ko not_active IP Right Cessation
- 2002-12-27 CN CNB028267842A patent/CN1294485C/zh not_active Expired - Fee Related
- 2002-12-27 WO PCT/US2002/041551 patent/WO2003058435A1/en not_active Application Discontinuation
-
2003
- 2003-01-02 TW TW092100018A patent/TWI277898B/zh not_active IP Right Cessation
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11163720B2 (en) | 2006-04-12 | 2021-11-02 | Intel Corporation | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
CN107368285A (zh) * | 2006-11-14 | 2017-11-21 | 英特尔公司 | 多线程架构 |
CN107368285B (zh) * | 2006-11-14 | 2020-10-09 | 英特尔公司 | 多线程架构 |
CN100444118C (zh) * | 2007-03-19 | 2008-12-17 | 中国人民解放军国防科学技术大学 | 基于逻辑发射序号的软、硬件结合指令相关性控制方法 |
CN101925889B (zh) * | 2008-01-25 | 2012-10-10 | 微软公司 | 使用书签的流对象实例化 |
US11204769B2 (en) | 2011-03-25 | 2021-12-21 | Intel Corporation | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US10740126B2 (en) | 2013-03-15 | 2020-08-11 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
US11656875B2 (en) | 2013-03-15 | 2023-05-23 | Intel Corporation | Method and system for instruction block to execution unit grouping |
Also Published As
Publication number | Publication date |
---|---|
US7363467B2 (en) | 2008-04-22 |
KR100676011B1 (ko) | 2007-01-29 |
TWI277898B (en) | 2007-04-01 |
US20030126408A1 (en) | 2003-07-03 |
TW200405199A (en) | 2004-04-01 |
AU2002361879A1 (en) | 2003-07-24 |
WO2003058435A1 (en) | 2003-07-17 |
CN1294485C (zh) | 2007-01-10 |
KR20040075050A (ko) | 2004-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1294485C (zh) | 相关性链处理器 | |
US6988183B1 (en) | Methods for increasing instruction-level parallelism in microprocessors and digital system | |
Rotenberg et al. | A trace cache microarchitecture and evaluation | |
KR101966712B1 (ko) | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트 | |
EP2783282B1 (en) | A microprocessor accelerated code optimizer and dependency reordering method | |
CN100397347C (zh) | 用于smt处理器上的cpi调度的系统和方法 | |
US7496735B2 (en) | Method and apparatus for incremental commitment to architectural state in a microprocessor | |
US9940136B2 (en) | Reuse of decoded instructions | |
US20160098279A1 (en) | Method and apparatus for segmented sequential storage | |
CN104040491A (zh) | 微处理器加速的代码优化器 | |
US9632790B2 (en) | Select logic for the instruction scheduler of a multi strand out-of-order processor based on delayed reconstructed program order | |
WO2017223006A1 (en) | Load-store queue for multiple processor cores | |
CN104040490A (zh) | 用于多引擎微处理器的加速的代码优化器 | |
CN1494677A (zh) | 数字信号处理装置 | |
EP1139215B1 (en) | Method and apparatus for releasing functional units in a multithreaded VLIW processor | |
JPH0922354A (ja) | 命令シーケンスを実行するための方法および装置 | |
CN1282024A (zh) | 具有静态转移预测支持的去耦取指令-执行引擎 | |
Sembrant et al. | Long term parking (ltp) criticality-aware resource allocation in ooo processors | |
Padmanabha et al. | DynaMOS: Dynamic schedule migration for heterogeneous cores | |
CN1224871A (zh) | 在一个处理系统中处理多条存储指令完成的方法和系统 | |
US7130990B2 (en) | Efficient instruction scheduling with lossy tracking of scheduling information | |
US20160092182A1 (en) | Methods and systems for optimizing execution of a program in a parallel processing environment | |
CN1833222A (zh) | 采用ilp和tlp的可重构处理器阵列 | |
US9817669B2 (en) | Computer processor employing explicit operations that support execution of software pipelined loops and a compiler that utilizes such operations for scheduling software pipelined loops | |
JP3799423B2 (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070110 Termination date: 20111227 |