CN112148106A - 用于处理器的混合预留站的***、装置和方法 - Google Patents
用于处理器的混合预留站的***、装置和方法 Download PDFInfo
- Publication number
- CN112148106A CN112148106A CN202010221521.5A CN202010221521A CN112148106A CN 112148106 A CN112148106 A CN 112148106A CN 202010221521 A CN202010221521 A CN 202010221521A CN 112148106 A CN112148106 A CN 112148106A
- Authority
- CN
- China
- Prior art keywords
- instruction
- entry
- lane
- instructions
- lanes
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 230000001934 delay Effects 0.000 claims abstract description 7
- 230000015654 memory Effects 0.000 claims description 77
- 239000000872 buffer Substances 0.000 claims description 48
- 238000003860 storage Methods 0.000 claims description 18
- 238000012545 processing Methods 0.000 claims description 17
- 238000009826 distribution Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 10
- 230000001419 dependent effect Effects 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 26
- 229910003460 diamond Inorganic materials 0.000 description 12
- 239000010432 diamond Substances 0.000 description 12
- 238000007667 floating Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program 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
- 239000004744 fabric Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000002618 waking 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/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
- 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
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3243—Power saving in microcontroller unit
-
- 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
-
- 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/3818—Decoding for concurrent 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 or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- 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
-
- 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/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
Abstract
本公开涉及用于处理器的混合预留站的***、装置和方法。在一个实施方式中,处理器的预留站包括:多个第一通道,所述多个第一通道具有多个条目以存储具有有序依赖性的指令的信息;可变延迟追踪表,所述可变延迟追踪表包括第二多个条目以存储具有可变延迟的指令的信息;以及调度器电路,所述调度器电路用于访问所述多个第一通道的头部条目以从所述多个第一通道中的至少一个第一通道的所述头部条目调度至少一个指令,以用于在至少一个执行单元上执行。描述并要求保护其他实施方式。
Description
技术领域
本公开涉及用于处理器的混合预留站的***、装置和方法。
背景技术
现代的处理器包括有序和乱序处理器。有序处理器具有非常高的功率效率,但是指令级并行性较低,因此执行吞吐量较低。乱序(out-of-order,OOO)架构通过允许乱序执行独立指令来提高执行吞吐量。然而,由于调度以及其他任务的复杂性,OOO架构更加耗电。
发明内容
根据本公开的一方面,提供了一种用于调度指令的装置,包括:多个第一通道,所述多个第一通道中的每个第一通道具有多个条目以存储具有有序依赖性的指令的信息;可变延迟追踪表,所述可变延迟追踪表包括第二多个条目以存储具有可变延迟的指令的信息;以及调度器电路,所述调度器电路用于访问所述多个第一通道的头部条目以从所述多个第一通道中的至少一个第一通道的所述头部条目调度至少一个指令,以用于在至少一个执行单元上执行。
根据本公开的一方面,提供了一种用于在处理器的预留站中处理指令的方法,所述方法包括:在处理器的预留站中接收指令,所述预留站包括多个有序通道和至少一个乱序通道;执行所述多个有序通道的子集的尾部条目的内容可寻址存储器搜索,以选择所述子集中具有下述物理寄存器目的地标识符的通道:所述物理寄存器目的地标识符与所述指令的源寄存器的物理寄存器源标识符匹配;以及为所述指令分配所选择的通道中的条目,并且将所述多个有序通道中的另一通道的通道标识符存储在所述条目中,所述另一通道针对所述指令的另一源寄存器存储生产者指令。
根据本公开的一方面,提供了一种包括计算机可读指令的计算机可读存储介质,所述计算机可读指令在被执行时实现如上所述的方法。
根据本公开的一方面,提供了一种用于调度处理器中的指令的***,包括:处理器,包括:获取电路,所述获取电路用于获取指令;解码器电路,所述解码器电路用于解码所述指令;寄存器别名表,所述寄存器别名表包括第一多个条目,每个条目用于存储逻辑寄存器与物理寄存器之间的关联、以及具有与所述物理寄存器对应的目的地操作数的生产者指令在预留站中的存储位置的缓冲区标识符和索引;耦合至所述寄存器别名表的所述预留站,所述预留站包括:多个有序缓冲区,所述多个有序缓冲区中的每个有序缓冲区具有第二多个条目以存储具有有序依赖性的指令的信息;至少一个乱序缓冲区,所述乱序缓冲区具有第三多个条目以存储相对于具有所述有序依赖性的所述指令可乱序执行的指令的信息;分配电路,所述分配电路用于:响应于第一指令的源操作数的物理源标识符与所述多个有序缓冲区中的第一有序缓冲区的尾部指令的目的地操作数的物理目的地标识符之间的匹配,将所述第一指令分配到所述第一有序缓冲区中;以及调度器电路,所述调度器电路用于:当所述第一指令存储在所述第一有序缓冲区的头部条目中时,访问所述多个有序缓冲区的所述头部条目以选择所述第一指令以用于执行;以及第一执行单元,所述第一执行单元用于执行所调度的所述第一指令;以及耦合至所述处理器的动态随机存取存储器。
根据本公开的一方面,提供了一种用于调度指令的装置,包括:多个第一通道,所述多个第一通道中的每个第一通道具有多个条目装置以用于存储具有有序依赖性的指令的信息;可变延迟追踪装置,所述可变延迟追踪装置包括第二多个条目装置以用于存储具有可变延迟的指令的信息;以及调度器装置,所述调度器装置用于访问所述多个第一通道的头部条目装置,以从所述多个第一通道中的至少一个第一通道的所述头部条目装置调度至少一个指令,以用于在至少一个执行装置上执行。
附图说明
图1A是示出了根据本发明实施方式的实施例性有序流水线和实施例性寄存器重命名、乱序发布/执行流水线的框图。
图1B是示出了根据本发明实施方式的要包括在处理器中的有序架构内核的实施例性实施方式和实施例性寄存器重命名、乱序发布/执行架构内核的框图。
图2A-2B示出了根据本发明实施方式的更具体的实施例性有序内核架构的框图。
图3是根据本发明实施方式的处理器的框图,该处理器可以具有一个以上的内核,可以具有集成存储器控制器,并且可以具有集成图形。
图4是根据本发明的一个实施方式的***的框图。
图5是根据本发明实施方式的第一更具体的实施例性***的框图。
图6是根据本发明实施方式的第二更具体的实施例性***的框图。
图7是根据本发明实施方式的SoC的框图。
图8是根据本发明实施方式的对比使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。
图9是根据本发明实施方式的预留站的框图。
图10A和10B是根据本发明实施方式的方法的流程图。
图11是根据本发明的另一实施方式的方法的流程图。
具体实施方式
在各个实施方式中,处理器包括由混合结构形成的预留站,以使得能够有序和乱序地调度指令。要理解的是,如本文所使用的,“预留站”是处理器中的硬件结构的集合,其用于维护关于解码的指令的信息并且在准备就绪时将这样的指令调度到处理器的多个功能单元中的一个功能单元。通过实施方式,可以在降低功耗的同时提高调度效率。在实施方式中,根据实施方式的混合预留站可以包括多个有序队列,本文称为通道。每个这样的通道可以包括多个条目,每个条目用于存储与指令(此时,在处理器流水线中,其可以是解码的微指令(uop)的形式)相关联的信息和元数据,包括指令的一个或多个源操作数(在本文中也称为源寄存器)的通道标识信息。这样的消费者指令可以取决于一个或多个生产者指令,该生产者指令生成结果到与该消费者指令的源操作数相对应的目的地操作数(在本文中也称为目的地寄存器)。
在实施方式中,混合预留站架构可以进一步包括一个或多个乱序结构。更具体地,在实施方式中,在预留站内提供了可变延迟追踪表(VLTT),以存储与具有可变执行延迟的指令(诸如加载指令或划分指令)相关联的信息。另外,可以提供另一乱序结构(在本文中称为接收通道(sink lane))以存储与不具有目的地寄存器的指令(例如,到存储器的存储和其他此类指令)相关联的信息。
通过在预留站内提供混合结构,可以更有效地执行将指令分配到混合预留站中的分配操作。之所以如此,是因为在做出分配决策时可以考虑减少数目的结构,从而允许更高的效率和降低的功耗。除了本文的混合预留站以外,还可以以更高的效率进行调度操作以调度被认为准备好执行给定功能单元的指令。之所以如此,是因为在做出调度决策时可以考虑更少数目的指令,从而再次降低了功耗并提高了效率。
在各个实施方式中,与类似性能水平的常规预留站相比,混合预留站可以实现明显更低的功耗。在实施方式中,分配电路可以配置为使依赖指令转向到生产者指令的通道。另外,该转向确定可以包括分配时的准备就绪启发,以使得能够基于未准备就绪的源进行转向,并且如果所有源都准备就绪,则使指令转向新的/空的通道。通过这种布置,与考虑所有条目的常规预留站相比,仅通道的顶部条目参与调度决策,从而降低了功耗和复杂性。通道内的唤醒是隐式的,因为当uop到达通道的头部时,通道内(in-lane)的生产者将已经分派。如果uop具有跨通道或负载依赖性,则可以使用基于唤醒的解决方案执行点对点检查。要理解的是,可以通过为指令设置通道的条目的准备就绪指示符来实现指令的唤醒。与复杂的、时序关键的、耗电的乱序预留站相比,根据实施方式使用有序通道,可以实现相同的性能。
图1A是示出了根据本发明实施方式的实施例性有序流水线和实施例性寄存器重命名、乱序发布/执行流水线的框图。图1B是示出了根据本发明实施方式的要包括在处理器中的有序架构内核的实施例性实施方式和实施例性寄存器重命名、乱序发布/执行架构内核的框图。图1A-1B中的实线框示出了有序流水线和有序内核,而虚线框的可选添加示出了寄存器重命名、乱序发布/执行流水线和内核。假定有序方面是乱序方面的子集,将描述乱序方面。
在图1A中,处理器流水线100包括获取级102、长度解码级104、解码级106、分配级108、重命名级110、调度(也称为分派或发布)级112、寄存器读取/存储器读取级114、执行级116、回写/存储器写入级118、异常处理级122和提交级124。
图1B示出了处理器内核190,其包括耦合到执行引擎单元150的前端单元130,并且两者都耦合到存储器单元170。内核190可以是精简指令集计算(RISC)内核、复杂指令集计算(CISC)内核、超长指令字(VLIW)内核或者混合或替代内核类型。作为又一选项,内核190可以是专用内核,例如,网络或通信内核、压缩引擎、协处理器内核、通用计算图形处理单元(GPGPU)内核、图形内核等。
前端单元130包括分支预测单元132,分支预测单元132耦合到指令缓存单元134,指令缓存单元134耦合到指令翻译后备缓冲区(TLB)136,TLB 136耦合到指令获取单元138,指令获取单元138耦合到解码单元140。解码单元140(或解码器)可以解码指令,并生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号(其是从原始指令解码得到的,或者以其他方式反映原始指令或源自原始指令)作为输出。可以使用各种不同的机制来实现解码单元140。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施方式中,内核190包括微代码ROM或其他存储用于某些宏指令的微代码的介质(例如,在解码单元140中或在前端单元130中)。解码单元140耦合到执行引擎单元150中的重命名/分配器单元152。
执行引擎单元150包括耦合到引退单元154的重命名/分配器单元152和一个或多个调度器单元156的集合。调度器单元156表示任何数量的不同调度器,包括预留站、中央指令窗等。调度器单元156耦合到物理寄存器文件单元158。根据本文的实施方式,调度器单元156可以包括预留站电路***,该预留站电路***包括预留站(RS)通道157。如上文和本文进一步简要描述的,RS通道157可实现为包括多个有序缓冲区或通道以及一个或多个乱序队列的混合预留站,以提高调度效率。每个物理寄存器文件单元158表示一个或多个物理寄存器文件,其中不同的物理寄存器文件存储一种或多种不同的数据类型,诸如标量整数、标量浮点、压缩整数、压缩浮点、向量整数、向量浮点、状态(例如,是要执行的下一条指令的地址的指令指针)等。在一个实施方式中,物理寄存器文件单元158包括向量寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。物理寄存器文件单元158被引退单元154重叠,以示出可以实现寄存器重命名和乱序执行的各种方式(例如,使用重新排序缓冲区和引退寄存器文件;使用将来的文件、历史缓冲区和引退寄存器文件;使用寄存器图和寄存器池;等等)。引退单元154和物理寄存器文件单元158耦合到执行集群160。执行集群160包括一个或多个执行单元162的集合和一个或多个存储器访问单元164的集合。执行单元162可以对各种类型的数据(例如,标量浮点、压缩整数、压缩浮点、向量整数、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施方式可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施方式可以仅包括一个执行单元或全部执行所有功能的多个执行单元。调度器单元156、物理寄存器文件单元158和执行集群160被示为可能是复数的,因为某些实施方式为某些类型的数据/操作创建了单独的流水线(例如,标量整数流水线、标量浮点/压缩整数/压缩浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,它们各自具有自己的调度器单元、物理寄存器文件单元和/或执行集群-并且,在单独的存储器访问流水线的情况下,实施仅该流水线的执行集群具有存储器访问单元(164)的某些实施方式)。还应该理解,在使用单独的流水线的情况下,这些流水线中的一个或多个可能是乱序发布/执行,而其余是有序的。
存储器访问单元164的集合耦合到存储器单元170,存储器单元170包括耦合到数据缓存单元174的数据TLB单元172,数据缓存单元174耦合到二级(L2)缓存单元176。在一个实施例性实施方式中,存储器访问单元164可以包括加载单元、存储地址单元和存储数据单元,它们中的每一个都耦合到存储器单元170中的数据TLB单元172。指令缓存单元134还耦合到存储器单元170中的二级(L2)缓存单元176。L2缓存单元176耦合到一个或多个其他级别的缓存并且最终耦合到主存储器。
举例来说,实施例性寄存器重命名、乱序发布/执行内核架构可以如下实现流水线100:1)指令获取138执行获取和长度解码级102和104;2)解码单元140执行解码级106;3)重命名/分配器单元152执行分配级108和重命名级110;4)调度器单元156执行调度级112;5)物理寄存器文件单元158和存储器单元170执行寄存器读取/存储器读取级114;执行集群160进行执行级116;6)存储器单元170和物理寄存器文件单元158执行回写/存储器写入级118;7)异常处理级122中可能涉及各种单元;8)引退单元154和物理寄存器文件单元158执行提交级124。
内核190可以支持一个或多个指令集(例如x86指令集(具有某些扩展,这些扩展已经添加了较新的版本);加利福尼亚州森尼韦尔市的MIPS Technologies的MIPS指令集;加利福尼亚州森尼韦尔市的ARM Holdings的ARM指令集(具有可选的附加扩展,诸如NEON)),包括本文描述的指令。在一个实施方式中,内核190包括支持压缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,从而允许使用压缩数据来执行许多多媒体应用所使用的操作。
应该理解,内核可以支持多线程(执行两个或多个并行的操作或线程集),并且可以以多种方式来做到这一点,这些方式包括时间片式多线程、同时多线程(其中,单个物理内核为物理内核是同时多线程的每个线程提供逻辑内核)、或它们的组合(例如,时间片式获取和解码以及此后的同时多线程,诸如在Hyperthreading技术中)。
虽然在乱序执行的上下文中描述了寄存器重命名,但是应该理解,寄存器重命名可以在有序架构中使用。虽然处理器的所示实施方式还包括单独的指令和数据缓存单元134/174以及共享的L2缓存单元176,但是替代实施方式可以具有同时用于指令和数据的单个内部缓存,例如,一级1(L1)内部缓存,或多个级别的内部缓存。在一些实施方式中,***可以包括内部缓存和在内核和/或处理器外部的外部缓存的组合。替代地,所有缓存可以在内核和/或处理器外部。
图2A-B示出了更具体的实施例性有序内核架构的框图,该内核将是芯片中的多个逻辑块(包括相同类型和/或不同类型的其他内核)之一。根据应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定功能逻辑、存储器I/O接口和其他必要的I/O逻辑进行通信。
图2A是根据本发明实施方式的单个处理器内核、以及其与片上互连网络202和其二级(L2)缓存204的本地子集的连接的框图。在一个实施方式中,指令解码器200支持具有压缩数据指令集扩展的x86指令集。L1缓存器206允许低延迟访问以将存储器缓存到标量和向量单元中。虽然在一个实施方式中(为了简化设计),标量单元208和向量单元210使用分开的寄存器组(分别是标量寄存器212和向量寄存器214),并且在它们之间传输的数据被写入存储器,然后从一级(L1)缓存206读回,但本发明的替代实施方式可以使用不同的方法(例如,使用单个寄存器组或包括允许数据在两个寄存器文件之间传输而无需写入和读回的通信路径)。
L2缓存204的本地子集是全局L2缓存的一部分,全局L2缓存被划分为单独的本地子集,每个处理器内核有一个本地子集。每个处理器内核具有到它自己的L2缓存204的本地子集的直接访问路径。处理器内核读取的数据存储在其L2缓存子集204中,并且可以与访问其自己的本地L2缓存子集的其他处理器内核并行地快速访问。处理器内核写入的数据存储在其自己的L2缓存子集204中,并在必要时从其他子集中清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器内核、L2缓存和其他逻辑块之类的代理在芯片内相互通信。在一些实施方式中,每个环形数据路径在每个方向上为1024位宽。
图2B是根据本发明实施方式的图2A中的处理器内核的一部分的放大图。图2B包括L1缓存204的L1数据缓存206A部分、以及有关向量单元210和向量寄存器214的更多详细信息。具体来说,向量单元210是6位宽向量处理单元(VPU)(请参见16位宽的ALU 228),其执行整数、单精度浮点和双精度浮点指令中的一个或多个。VPU支持在存储器输入上使用调配单元220来调配寄存器输入、使用数字转换单元222A-B来进行数字转换、以及使用复制单元224来进行复制。
图3是根据本发明实施方式的处理器300的框图,该处理器300可以具有一个以上的内核,可以具有集成存储器控制器,并且可以具有集成图形。图3中的实线框示出了具有单个内核302A、***代理310、一个或多个总线控制器单元316的集合的处理器300,而虚线框的可选添加示出了具有多个内核302A-N、***代理单元310中的一个或多个集成存储器控制器单元314的集合、和专用逻辑308的替代处理器600。
因此,处理器300的不同实现可以包括:1)CPU,其中专用逻辑308是集成图形和/或科学(吞吐量)逻辑(可以包括一个或多个内核),并且内核302A-N是一个或多个通用内核(例如,通用有序内核、通用乱序内核、两者的组合);2)协处理器,其中内核302A-N是大量主要用于图形和/或科学(吞吐量)的专用内核;3)协处理器,其中内核302A-N是大量的通用有序内核。因此,处理器300可以是通用处理器、协处理器或专用处理器,例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量集成众核(MIC)协处理器(包括30个或更多内核)、嵌入式处理器等。处理器可以在一个或多个芯片上实现。处理器300可以是一个或多个基板的一部分和/或使用多种处理技术(例如BiCMOS、CMOS或NMOS)中的任何一种实现在一个或多个基板上。
存储器层次结构包括内核304A-N内的一个或多个级别的缓存、一个或多个共享缓存单元306的集合、以及耦合到集成存储器控制器单元314的集合的外部存储器(未示出)。共享缓存单元306的集合可以包括一个或多个中间级别缓存(诸如二级(L2)、三级(L3)、四级(L4)或其他级别的缓存)、终级缓存(LLC)、和/或其组合。虽然在一个实施方式中,基于环的互连单元312将专用逻辑308、共享缓存单元306的集合、以及***代理单元310/集成存储器控制器单元314互连,但是替代实施方式可以使用任何数量的已知技术来互连这类单元。在一个实施方式中,在一个或多个缓存单元306与内核302A-N之间维持一致性。
在一些实施方式中,一个或多个内核302A-N能够进行多线程。***代理310包括协调和操作内核302A-N的那些组件。***代理单元310可以包括例如功率控制单元(PCU)和显示单元。PCU可以是或可以包括调节内核302A-N和专用逻辑308的功率状态所需的逻辑和组件。
就架构指令集而言,内核302A-N可以是同质的或异质的;也就是说,两个或多个内核302A-N可能能够执行相同的指令集,而其他的内核仅能够执行该指令集的子集或不同的指令集。
图4-7是实施例性计算机架构的框图。本领域已知的用于笔记本电脑、台式机、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、手机、便携式媒体播放器、手持式设备以及各种其他电子设备的其他***设计和配置也适用。通常,能够结合本文公开的处理器和/或其他执行逻辑的各种各样的***或电子设备通常是合适的。
现在参考图4,示出了根据本发明的一个实施方式的***400的框图。***400可以包括一个或多个处理器410、415,它们耦合到控制器集线器420。在一个实施方式中,控制器集线器420包括图形存储器控制器集线器(GMCH)490和输入/输出集线器(IOH)450(其可以在单独的芯片上);GMCH 490包括存储器和图形控制器,存储器440和协处理器445耦合到该存储器和图形控制器;IOH 450将输入/输出(I/O)设备460耦合到GMCH 490。替代地,存储器和图形控制器之一或两者都集成在处理器中(如本文所述),存储器440和协处理器445直接耦合到处理器410,并且控制器集线器420在具有IOH 450的单个芯片中。
在图4中用断线表示了附加处理器415的可选性质。每个处理器410、415可以包括本文描述的一个或多个处理内核,并且可以是处理器300的某些版本。
存储器440可以是,例如,动态随机存取存储器(DRAM)、相变存储器(PCM)或两者的组合。对于至少一个实施方式,控制器集线器420经由多点总线(诸如前端总线(FSB)、点对点接口或类似的连接495)与处理器410、415通信。
在一个实施方式中,协处理器445是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施方式中,控制器集线器420可包括集成图形加速器。
就包括架构特性、微架构特性、热特性、功耗特性等的一系列指标度量而言,物理资源410、415之间可以有多种差异。
在一个实施方式中,处理器410执行控制一般类型的数据处理操作的指令。嵌入在指令中的可以是协处理器指令。处理器410将这些协处理器指令识别为应由附接的协处理器445执行的类型。因此,处理器410在协处理器总线或其他互连上向协处理器445发布这些协处理器指令(或表示协处理器指令的控制信号)。协处理器445接受并执行所接收的协处理器指令。
现在参考图5,示出了根据本发明的实施方式的第一更具体的实施例性***500的框图。如图5所示,多处理器***500是点对点互连***,并且包括经由点对点互连550耦合的第一处理器570和第二处理器580。处理器570和580中的每个都可以是处理器300的某些版本。在本发明的一个实施方式中,处理器570和580分别是处理器410和415,而协处理器538是协处理器445。在另一实施方式中,处理器570和580分别是处理器410和协处理器445。
处理器570和580被分别示为包括集成存储器控制器(IMC)单元572和582。处理器570还包括作为其总线控制器单元的一部分的点对点(P-P)接口576和578;类似地,第二处理器580包括P-P接口586和588。处理器570、580可以使用P-P接口电路578、588经由点对点(P-P)接口550交换信息。如图5所示,IMC 572和582将处理器耦合到相应的存储器,即存储器532和存储器534,它们可以是本地附接到相应处理器的主存储器的一部分。
处理器570、580可以各自使用点对点接口电路576、594、586、598经由单独的P-P接口552、554与芯片集590交换信息。芯片集590可以可选地经由高性能接口592与协处理器538交换信息。在一个实施方式中,协处理器538是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享缓存(未示出)可以被包括在任一处理器中或在两个处理器之外,但是还通过P-P互连与处理器连接,使得如果处理器被置于低功耗模式,则可以将一个或两个处理器的本地缓存信息存储在共享缓存中。
芯片集590可以经由接口596耦合到第一总线516。在一个实施方式中,第一总线516可以是***组件互连(PCI)总线,或者诸如PCI Express总线或另一I/O互连总线之类的总线,但是本发明的范围不限于此。
如图5所示,各种I/O设备514可以与将第一总线516耦合到第二总线520的总线桥518一起耦合到第一总线516。在一个实施方式中,一个或多个附加处理器515,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器,耦合到第一总线516。在一个实施方式中,第二总线520可以是低引脚数(LPC)总线。各种设备可以耦合到第二总线520,包括例如,键盘和/或鼠标522、通信设备527、以及诸如磁盘驱动或其他大容量存储设备之类的存储单元528,存储单元528可以包括指令/代码和数据530。此外,音频I/O 524可以耦合到第二总线516。注意,其他架构也是可能的。例如,代替图5的点对点架构,***可以实现多点分支总线或其他此类架构。
现在参考图6,示出了根据本发明的实施方式的第二更具体的实施例性***600的框图。图5和图6中相同的元件有相同的附图标记,并且图5的某些方面已经从图6中省略,以避免使图6的其他方面模糊不清。
图6示出了处理器570、580可以分别包括集成存储器和I/O控制逻辑(“CL”)672和682。因此,CL 672、682包括集成存储器控制器单元,并包括I/O控制逻辑。图6示出了不仅存储器532、534耦合到CL 572、582,而且I/O设备614也耦合到控制逻辑572、582。传统I/O设备615耦合到芯片集590。
现在参考图7,示出了根据本发明的一个实施方式的SoC 700的框图。图3中的相似元件有相同的附图标记。此外,虚线框是更高级SoC上的可选特征。在图7中,互连单元702耦合到:应用处理器710,其包括一个或多个内核302A-N的集合、缓存单元304A-N和共享缓存单元306;***代理单元310;总线控制器单元316;集成存储器控制器单元314;一个或多个协处理器720的集合,其可以包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元730;直接存储器访问(DMA)单元732;以及显示单元740,其用于耦合到一个或多个外部显示器。在一个实施方式中,协处理器720包括专用处理器,例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
本文公开的机制的实施方式可以以硬件、软件、固件或这类实现方法的组合来实现。本发明的实施方式可以被实现为在可编程***上执行的计算机程序或程序代码,该可编程***包括至少一个处理器、存储***(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
程序代码,诸如图5中所示的代码530,可以被应用于输入指令以执行本文描述的功能并生成输出信息。可以按照已知的方式将输出信息应用于一个或多个输出设备。出于本申请的目的,处理***包括具有处理器(例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器)的任何***。
可以用高级程序语言或面向对象的编程语言来实现程序代码,以与处理***进行通信。如果需要,程序代码也可以用汇编语言或机器语言来实现。实际上,本文描述的机制的范围不限于任何特定的编程语言。在任何情况下,语言可以是编译语言或解释语言。
至少一个实施方式的一个或多个方面可以通过存储在机器可读介质上的表示处理器内的各种逻辑的表示指令来实现,当机器读取指令时,指令使机器制造逻辑以执行本文所述的技术。可以将这种表示形式(称为“IP核”)存储在有形的机器可读介质上,并提供给各种消费者或制造设施,以加载到实际制造逻辑或处理器的制造机器中。
这样的机器可读存储介质可以包括但不限于由机器或设备制造或形成的物品的非暂时性有形排列,包括存储介质(诸如硬盘、任何其他类型的盘,包括软盘、光盘、光盘只读存储器(CD-ROM)、可擦写光盘(CD-RW)和磁光盘)、半导体设备(诸如只读存储器(ROM)、随机存取存储器(RAM),诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、可擦可编程只读存储器(EPROM)、闪存、电可擦可编程只读存储器(EEPROM)、相变存储器(PCM)、磁卡或光卡)、或适合存储电子指令的任何其他类型的介质。
因此,本发明的实施方式还包括非暂时性有形机器可读介质,其包含指令或包含设计数据,诸如硬件描述语言(HDL),其定义了本文所述的结构、电路、装置、处理器和/或***特征。这样的实施方式也可以被称为程序产品。
在某些情况下,指令转换器可以用于将来自源指令集的指令转换为目标指令集。例如,指令转换器可将指令翻译(例如,使用静态二进制翻译、包括动态编译的动态二进制翻译)、变形、仿真或以其他方式转换为将由内核处理的一个或多个其他指令。指令转换器可以用软件、硬件、固件或其组合来实现。指令转换器可以在处理器上、在处理器外、或部分在处理器上而部分在处理器外。
图8是根据本发明实施方式的对比使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。在示出的实施方式中,指令转换器是软件指令转换器,尽管替代地,指令转换器可以用软件、固件、硬件或其各种组合来实现。图8示出了可以使用第一编译器804来编译高级语言802的程序以生成可以由具有至少一个第一指令集内核的处理器816本地执行的第一二进制代码(例如,x86)806。在一些实施方式中,具有至少一个第一指令集内核的处理器816表示任何处理器,该任何处理器可以通过兼容地执行或以其他方式处理下述项来执行与具有至少一个x86指令集内核的Intel处理器基本相同的功能,以便实现与具有至少一个x86指令集内核的处理器基本相同的结果:(1)Intel x86指令集内核的指令集的大部分,或(2)旨在在具有至少一个x86指令集内核的Intel处理器上运行的应用或其他软件的目标代码版本。第一编译器804表示可用于生成第一指令集的二进制代码806(例如,目标代码)的编译器,该二进制代码可以在具有或不具有附加链接处理的情况下在具有至少一个第一指令集内核的处理器816上执行。类似地,图8示出了可以使用替代指令集编译器808来编译高级语言802的程序,以生成可以由不具有至少一个第一指令集内核的处理器814(例如,具有执行加利福尼亚州森尼韦尔市的MIPSTechnologies的MIPS指令集和/或执行加利福尼亚州森尼韦尔市的ARM Holdings的ARM指令集的内核的处理器)本地执行的替代指令集二进制代码810。指令转换器812用于将第一二进制代码806转换为可由不具有第一指令集内核的处理器814本地执行的代码。该转换后的代码不可能与替代指令集二进制代码810相同,因为具有这种能力的指令转换器很难制造;但是,转换后的代码将完成常规操作,并由替代指令集中的指令组成。因此,指令转换器812表示软件、固件、硬件或其组合,其通过仿真、模拟或任何其他过程,允许处理器或不具有第一指令集处理器或内核的其他电子设备执行第一二进制代码806。
用于加速数据并行工作负载的指令集架构(ISA)扩展要求以机器表示形式编码的显式向量字长。本发明的一个实施方式利用标量微线程指令处理架构扩展了现有的ISA(例如,诸如x86 ISA)。具体来说,数据并行单程序多数据(SPMD)微架构可用于提供超出现有指令限制的可扩展执行数据路径大小,从而在降低能耗的情况下实现更高的指令执行吞吐量。
现在参考图9,示出了根据本发明的一个实施方式的预留站的框图。预留站900可以在许多不同类型的处理器(包括OOO处理器和具有有序处理电路和OOO处理电路的混合的处理器)中实现。如图所示,预留站900(其可以是处理器的主调度器电路)接收解码的指令(例如,以解码的uop的形式),将它们分配到预留站900的结构中,然后在它们的源操作数准备就绪时,调度这些指令,以用于在处理器的各种功能单元之一中执行。
参照图9,可以在分配电路910中接收传入指令。在实施方式中,分配电路910可以将指令和关联的信息分配到预留站900的不同存储结构中的给定存储结构中。更具体地,如图所示,预留站900包括多个有序队列920,在本文中也称为通道。在所示的实施方式中,可以存在N个通道920,每个通道可以被实现为先进先出(FIFO)缓冲区、队列或其他存储结构以存储一个或多个指令的信息。在实施方式中,可以存在N个FIFO通道920,每个通道具有M个条目以存储M个指令和相关联的指令信息。尽管本发明的范围不限于此,但是在实施方式中,N可以在4与64之间,并且M可以在4与16之间。
如图所示,每个通道920包括多个条目,包括从头部条目一直到尾部条目,其中,头部条目存储最老分配的指令,而尾部条目存储最新分配的指令。另外,每个通道920可以包括对应的内容可寻址存储器(CAM)结构925或与之相关联,在该结构925中存储了尾部uop的物理寄存器目的地(Pdst)标识符,可以在本文所述的分配过程中使用该结构925。在实施方式中,通道920中的每个条目包括用于执行的指令信息(例如,操作码、物理寄存器源/目的地ID、重排序缓冲区ID(ROBID))以及用于唤醒的任何其他信息。条目还可以包括每个源的DepOnLoad有限状态机(FSM)(如下所述),以追踪通过执行流水线的负载。另外,条目可具有生产者通道ID和用于唤醒的条目ID。注意,可以为每个源提供这些标识符,包括用于相同通道中的源和跨通道源。每个条目还可以包括每个源的准备就绪指示符,例如,准备就绪位,当设置有准备就绪位时,由于已经调度了对应的源,因此准备就绪指示符将指令标识为相对于该源已准备好执行。同样,每个通道可以存储每个其他通道的头部指针,以比较跨通道生产者。每个通道可以在通道头部处进一步维护暂停(stall)计数器,这可以维护调度历史。在一个实施方式中,该历史可以包括从该通道调度最后一条指令以来的周期数。该历史可以进一步包括哪些周期具有调度的指令的历史。例如,如果在可以从物理寄存器文件中读取值之前有3个旁路周期,则此计数器可以追踪是否在过去的这3个周期中的每个周期中调度了指令。这样,消费者可以确定自调度倒数第二个指令或倒数第三个指令以来的周期数。这样的暂停信息可用于如下所述的准备就绪计算和旁路计算。
除了有序队列920之外,预留站900还包括可变延迟追踪表(VLTT)930,其被实现为乱序结构。在本文的实施方式中,可变延迟追踪表930可以包括多个条目,每个条目用于存储诸如加载指令、划分指令之类的可变延迟指令的信息。在实施方式中,可变延迟追踪表930的每个条目可以包括给定的可变长度指令的指令信息和分别与通道920之一相对应的多个通道字段。每个这样的通道字段可以存储与对应通道内将条目的可变延迟指令的目的地用作源的第一个消费者指令对应的索引值(例如,条目ID),以唤醒从属对象。在实施方式中,VLTT条目可以保持与有序通道中的条目相同的指令信息,但是对于唤醒,它们仅具有物理源和DepOnLoad FSM。
仍然参考图9,预留站900还包括接收通道940。在本文的实施方式中,接收通道940可以包括多个条目,每个条目用于存储与不具有目的地操作数的指令相关联的指令信息。这样,由于这些指令终止依赖链,因此可以将存储和分支指令(例如)放置在该通道中。在不同的实施方式中,接收通道940可以被实现为有序结构或乱序结构。
分配电路910可以使寄存器的消费者指令转向到在其尾部条目中存储该寄存器的生产者指令的通道。这样,每条指令都对其前面的指令具有写后读(RAW)依赖性,并且只有头部处的指令才可能准备就绪。如果没有此限制,通道的FIFO排序将会使头部后面准备就绪但无法调度的指令出现延迟。
在实施方式中,寄存器别名表(RAT)(图9中未示出)存储物理寄存器ID与逻辑寄存器之间的关联,在分配和重命名过程中会查找该关联。除了该映射信息之外,RAT在每个条目中还包括存储有物理寄存器ID的生产者指令的生产者通道的通道ID。每个RAT条目还可以包括追踪信息,即关于生产者被存储在生产者通道内何处的索引值。对于指令的每个逻辑寄存器源,通道ID从RAT中读取,并用于检查尾部CAM,以在生产者通道中查找生产者条目。然后,在分配时,将生产者通道/条目ID(例如,索引值)写入选定通道的分配条目中。
如上所述,每个通道920在CAM条目925中存储其尾部条目(即,通道中存储的最后一条指令)的物理寄存器目的地(Pdst)标识符。重命名后,指令具有其源的物理源寄存器(Psrc)标识符及其生产者通道ID。为了选择要分配到的通道,分配电路910对照存储源的生产者的生产者通道的通道尾部Pdsts(存储在CAM条目中)来检查指令的Psrcs,以查找合格的部分满通道。如果没有找到,则分配电路910将指令分配给新的通道。分配电路910进一步搜索每个源的生产通道,以查找生产者的条目,并将该条目的索引存储在所分配条目的索引字段中。这样,与在每个预留站条目中搜索生产者的矩阵调度器相比,可以实现大大减少设置功率。
注意,如果指令依赖于VLTT 930中的条目,并且是其通道中依赖于该条目的第一条指令,则分配电路910进一步将该分配的条目的索引写入与生产者指令的VLTT条目的已分配通道关联的通道字段中。通过这种安排,VLTT仅追踪每个通道中的第一个消费者,因此后续指令不会更新VLTT条目。
预留站900还包括调度器电路950,其在每个周期中可以调度一个或多个指令以在一个给定的功能单元960中执行。功能单元960可以包括算术逻辑单元、加载和存储单元等。
仍然参考图9,调度器电路950可以在每个周期中选择通道920的头部条目中存在的一个或多个指令和/或可变延迟追踪表930和接收通道940中存在的一个或多个指令以用于执行。在实施方式中,调度器电路950利用RAW依赖性来实现与完全OOO调度器相似的性能,同时对小得多的指令子集进行调度决策。在调度给定指令时,注意,可以更新预留站900中的结构内存储的各种信息以使得能够识别准备好执行的附加指令。要理解的是,虽然在图9的实施方式中以这种高级别示出,但许多变化和替代是可能的。
在操作中,当指令具有RAW依赖性(例如,对给定通道中的指令有依赖性)时,分配电路910可以根据本文所述的技术将给定指令分配到有序队列920之一中。进而,可以由分配电路910相应地将可以乱序执行的指令(包括可变延迟指令和不具有目的地操作数的指令)分配到可变延迟追踪表930和接收通道940之一中。
现在参考图10A和10B,示出了根据本发明实施方式的方法的流程图。如图10A和10B所示,方法1000是根据实施方式的用于将指令分配到混合预留站的给定结构中的方法。这样,方法1000可以由硬件电路***、固件、微代码和/或其组合来执行。在特定实施方式中,方法1000可以由预留站的控制电路(诸如分配电路)执行,该控制电路可以执行固件和/或微代码以执行该方法。注意,由于可以在处理器内部硬件结构中执行实施方式,因此本文的技术对于用户级代码可以保持透明,这不会理解到这种实施方式的结构。
如图所示,方法1000开始于在预留站中接收指令(框1005)。例如,可以在预留站的分配电路中接收uop。解码形式的此uop可以进一步标识指令的源和目的地。接下来,确定指令是否具有目的地操作数(菱形1010)。如果否,则控制转到框1015,在框1015中,可以将指令分配给接收通道。要理解的是,该接收通道是乱序结构,其可以包括多个条目,每个条目用于存储与可以乱序执行的指令相关联的信息。仍然参考图10A,如果传入指令实际上确实具有目的地,则控制转到菱形1020以确定该指令是否是可变延迟指令,诸如加载指令。如果是,则控制转到框1025,在框1025中,可以将指令分配到可变延迟追踪表的条目中。
相反,如果指令是诸如各种算术指令之类的固定延迟指令,则控制转到菱形1030以确定指令的源标识符是否命中生产者通道的CAM。对于指令的每个逻辑寄存器源,从RAT读取的通道ID用于检查尾部CAM,以在生产者通道中查找生产者条目。因此,菱形1030处的操作可以确定传入指令的源标识符是否与生产者通道的尾部条目的目的地寄存器的物理寄存器标识符匹配。如果匹配,则控制转到菱形1035,以确定生产者通道是否已满。如果未满,则控制转到框1040,在框1040中,可以将指令分配给该生产者通道中的条目。更具体地,可以在该指令的生产者指令之后立即将该指令分配到条目中,使得有序调度是隐式的。该分配可以将与传入指令相关联的各种信息存储到该通道的所标识的条目中。这样的信息可以包括指令信息和生产者通道/条目ID。在实施方式中,通道内源被立即标记为“准备就绪”。对于通道内源,距通道内生产者条目的距离可用于旁路计算。
如果多个源具有CAM命中,则在滤除满足准备就绪启发的源和具有满生产者通道的源之后,可以使用任何策略来标识合适的通道用于存储传入指令。例如,可以选择具有最少指令的通道,或者在其他情况下,可以使用指令中的第一个源或最近分配的源来选择通道。
仍然参考图10A,相反,如果没有CAM命中或生产者通道已满,则控制转到菱形1050,在菱形1050中,确定是否找到新的通道。可以在具有未存储任何有效指令的可用通道的地方找到这种通道。如果找到了这样的新通道,则控制转到框1060,在框1060中,可以将指令分配给该新通道中的条目。否则,可以例如通过将暂停信号发回给馈送分配/重命名流水线的指令队列来暂停将传入指令分配到预留站中(框1055)。在这种情况下,尽管队列可以继续用指令填充,但是将暂停从指令队列进行的读取。
方法1000在图10B中继续。这里更具体地,在将指令分配到条目中之后,还可以确定该指令是否依赖于可变长度追踪表的条目中的指令(菱形1070)。如果不依赖,则完成分配。否则,如果确定指令依赖于可变延迟指令,则控制转到菱形1080以确定这是否是通道中依赖于可变延迟追踪表的该条目的第一个指令。如果是,则可以将存储有传入指令的通道条目的索引写入与该分配的通道相关联的可变延迟追踪表的条目的通道字段中(框1090)。这样,当调度生产者可变延迟指令以将从属指令标识为准备好执行时,可以使用该通道索引。要理解的是,虽然在图10A和10B的实施方式中以这种高级别示出,但许多变化和替代是可能的。
由于对通道进行排序,因此来自通道内生产者的指令唤醒是隐式的。当指令处于通道的预定条目处时,检查来自跨通道生产者的唤醒。在实施方式中,该预定条目是通道中的头部减1位置(HOL-1)。可以通过将存储的生产者索引与生产者通道的头部指针进行比较来执行跨通道检查。如果头部指针已移过生产者指令,则生产者指令已调度。仅当指令的源准备就绪时,指令才会移动到通道中的头部位置。注意,条目的准备就绪位用于帮助确定指令何时移至通道的头部。在实施方式中,调度逻辑所考虑的实际“通道的头部”与头部指针所指向的条目分开地进行分级,使得调度循环不必从通道读取准备就绪信息。
当指令调度时,通道将其头部指针的前进广播到所有其他通道的头部减1条目。如果头部指针回绕,则通道将此信息广播到所有条目,而不仅仅是头部减1条目,使得依赖于该通道的任何源都可以标记为准备就绪。
当VLTT指令调度时,通过设置准备就绪位,它仅唤醒每个通道中的第一个消费者,并且后面的消费者知道当他们到达通道的头部时就假定其VLTT源准备就绪。如上所述,仅每个通道的头部条目参与调度。在一个实施方式中,可以使用年龄排序矩阵针对每个周期为每个分派端口选择一条指令。该年龄排序矩阵可以被实现为(NxM)x(NxM)年龄矩阵。或者,在替代实施方式中,可以使用N x N ROBID比较。
现在参考图11,示出了根据本发明的另一实施方式的方法的流程图。更具体地,图11的方法1100是根据实施方式的用于使用混合预留站调度指令以供执行的方法。这样,方法1100可以由硬件电路***、固件、微代码和/或其组合来执行。在特定实施方式中,方法1100可以由预留站的控制电路(诸如调度器电路)执行,该控制电路可以执行固件和/或微代码以执行该方法。
如图所示,方法1100开始于将通道的预定条目的生产者索引与生产者通道的头部指针进行比较(框1110)。更具体地,该预定条目是通道头部减1(HOL-1)条目,即紧接在通道的头部条目之后的条目,其是在头部条目中的指令之后要调度的下一条指令。并且,注意,头部条目中的指令在放入头部条目之前已准备好执行。
基于该比较,可以在菱形1120处确定生产者通道的头部指针是否超过预定条目(HOL-1条目)的生产者索引。如果没超过,则存储在预定条目中的该指令尚未准备好执行。当确定生产者通道的头部指针超过了指针索引时,这意味着生产者指令已经被调度,因此,存储在预定条目中的该指令可能准备好进行调度。因此,在框1130中,该条目可以被移动到通道的头部。注意,该操作可以通过更新头部指针来实现。更具体地,从HOL-1到HOL的移动是通过读入调度电路中的分级逻辑来进行的。然后,当指令实际调度时,更新头部指针,并且,如果下一个条目的所有准备就绪位都已设置,则将其读入分级逻辑。
接下来,确定是否调度通道条目的该头部以用于执行(菱形1140)。当调度器电路标识通道条目的该头部以调度到给定执行单元时,可以做出这种确定。如果要调度,则控制转到框1150,在框1150中,可以更新通道的头部指针以指向下一指令。通过该更新,可以进一步确定通道的头部指针是否回绕(菱形1160)。如果没回绕,则控制转到框1170,在框1170中,通道可以将头部指针的推进消息广播到其他通道的预定条目,以允许这类通道适当地更新准备就绪指示符。相反,如果确定通道的头部指针实际上回绕了,则控制转到框1180,在框1180中,通道可以将头部指针的推进消息广播到其他通道的所有条目。要理解的是,虽然在图11的实施方式中以这种高级别示出,但许多变化和替代是可能的。
可以根据在相同通道和跨通道中的生产者位置的知识,加上通道头部暂停计数器,来计算旁路信息,该通道头部暂停计数器追踪自调度生产者以来的周期。替代地,依赖于VLTT中的指令的源可以结合该指令之后的暂停信息来追踪该通道中的第一个从属指令的旁路信息。这种追踪不需要进行高功耗的分派时旁路比较。
注意,在实施方式中,每个通道条目的每个源可以包括负载依赖性有限状态机(DepOnLoad FSM)。当负载从VLTT调度时,它唤醒每个通道中的第一个消费者,并且同时初始化DepOnLoad FSM。DepOnLoad信息在唤醒时转发给间接从属对象。当负载将取消信号发送到预留站时,每个从属通道将其头部指针设置回第一个消费者,并且此类通道中的条目基于其DepOnLoad信息重置其准备就绪指示。在唤醒过程中发送DepOnLoad而不是在分派过程中稍后发送,消除了对单独的负载矩阵的需求,从而减少了面积、功耗和复杂性。
在分支误预测上,可以从调度器清除比分支年轻的任何指令。每个通道通过将分支的ROBID与条目进行比较,从其尾部清除一些条目。如果清除了这些消费者,则VLTT也会使用ROBID或通道条目ID信息清除其第一消费者ID。可以按照与寄存器映射类似的方式来恢复RAT中追踪最后一个写入者的通道的信息。
以下示例涉及另外的实施方式。
在一个示例中,一种装置包括:多个第一通道,每个第一通道具有多个条目以存储具有有序依赖性的指令的信息;可变延迟追踪表,所述可变延迟追踪表包括第二多个条目以存储具有可变延迟的指令的信息;以及调度器电路,所述调度器电路用于访问所述多个第一通道的头部条目以从所述多个第一通道中的至少一个第一通道的所述头部条目调度至少一个指令,以用于在至少一个执行单元上执行。
在示例中,所述多个第一通道中的每个第一通道还包括内容可寻址存储器以存储该通道的尾部指令的目的地操作数的物理目的地标识符。
在示例中,该装置还包括分配电路,所述分配电路用于将传入指令分配到所述多个第一通道中的下述通道中:所述通道的所述尾部指令的所述目的地操作数的所述物理目的地标识符与所述传入指令的源操作数的物理源标识符对应。
在示例中,所述分配电路用于基于将所述传入指令的所述源操作数的所述物理源标识符与所述多个第一通道的子集的内容可寻址存储器进行比较来选择所述通道,所述多个第一通道的所述子集具有存储所述传入指令的源操作数的生产者指令的条目。
在示例中,在分配时,所述分配电路用于存储所述传入指令的信息,所述信息包括所述传入指令的第二源操作数的第二物理源标识符以及所述多个第一通道中存储所述第二源操作数的生产者指令的通道的通道标识符。
在示例中,所述分配电路还用于:基于自所述传入指令的另一源操作数被分配到所述多个第一通道中的另一通道中以来的周期数,将所述传入指令分配到所述多个第一通道中的所述通道中。
在示例中,所述第二多个条目中的每个条目包括多个通道字段,以存储所述多个第一通道中的对应通道中存储的可变延迟指令的第一消费者指令的索引。
在示例中,所述调度器电路用于:基于将所述多个第一通道中的第一通道的预定条目的生产者索引与所述多个第一通道中具有下述条目的通道的头部指针进行比较,来设置所述预定条目的准备就绪指示符:所述条目针对所述预定条目中存储的指令存储了生产者指令。
在示例中,该装置还包括接收通道,所述接收通道用于存储不具有目的地操作数的指令的信息。
在示例中,所述调度器电路用于:至少部分地基于与针对所述至少一个指令的生产者指令相关联的暂停计数器,来计算所述至少一个指令的旁路信息。
在另一示例中,一种方法包括:在处理器的预留站中接收指令,所述预留站包括多个有序通道和至少一个乱序通道;执行所述多个有序通道的子集的尾部条目的内容可寻址存储器搜索,以选择所述子集中具有下述物理寄存器目的地标识符的通道:所述物理寄存器目的地标识符与所述指令的源寄存器的物理寄存器源标识符匹配;以及为所述指令分配所选择的通道中的条目,并且将所述多个有序通道中的另一通道的通道标识符存储在所述条目中,所述另一通道针对所述指令的另一源寄存器存储生产者指令。
在示例中,所述方法还包括:响应于确定所选择的通道是满的,为所述指令分配一不同通道中的条目,并且将所选择的通道的第二通道标识符存储在所述不同通道的所述条目中以标识跨通道依赖性。
在示例中,所述方法还包括:响应于确定所选择的通道是满的并且所述多个有序通道中没有可用的通道,暂停将指令分配到所述预留站中。
在示例中,该方法还包括:在所述预留站中接收第二指令,该第二指令包括可变延迟指令;以及为所述第二指令分配所述预留站的第一乱序通道中的条目,并且将所述多个有序通道中的下述通道的通道标识符存储在所述条目中:该通道针对所述第二指令的源寄存器存储生产者指令,所述第一乱序通道包括可变延迟追踪表。
在示例中,该方法还包括:响应于确定所述指令依赖于所述第二指令,将所述通道中的所述指令的条目的索引写入所述第一乱序通道的条目的通道字段中。
在示例中,该方法还包括:调度所述第二指令以用于在第一执行单元中执行;以及响应于调度所述第二指令,将准备就绪指示符写入所述通道的条目并且初始化所述条目的负载依赖型状态机。
在示例中,该方法还包括:在所述预留站中接收第三指令,该第三指令不具有目的地;以及为所述第三指令分配所述预留站的第二乱序通道中的条目,该第二乱序通道包括接收通道。
在另一示例中,包括指令的计算机可读介质用于执行任何一个上述示例的方法。
在另一示例中,包括数据的计算机可读介质由至少一个机器使用,以制造至少一个集成电路来执行任何一个上述示例的方法。
在另一示例中,一种装置包括用于执行任何一个上述示例的方法的部件。
在另一示例中,一种***包括处理器和耦合至该处理器的动态随机存取存储器。处理器可以包括:获取电路,该获取电路用于获取指令;解码器电路,该解码器电路用于解码所述指令;寄存器别名表,该寄存器别名表包括第一多个条目,每个条目用于存储逻辑寄存器与物理寄存器之间的关联、以及具有与所述物理寄存器对应的目的地操作数的生产者指令在预留站中的存储位置的缓冲区标识符和索引;以及耦合至所述寄存器别名表的所述预留站。进而,预留站包括:多个有序缓冲区,每个有序缓冲区具有第二多个条目以存储具有有序依赖性的指令的信息;至少一个乱序缓冲区,该乱序缓冲区具有第三多个条目以存储相对于具有所述有序依赖性的所述指令可乱序执行的指令的信息;分配电路,该分配电路用于:响应于第一指令的源操作数的物理源标识符与所述多个有序缓冲区中的第一有序缓冲区的尾部指令的目的地操作数的物理目的地标识符之间的匹配,将所述第一指令分配到所述第一有序缓冲区中;以及调度器电路,该调度器电路用于:当所述第一指令存储在所述第一有序缓冲区的头部条目中时,访问所述多个有序缓冲区的所述头部条目以选择所述第一指令以用于执行。处理器还可以包括第一执行单元,该第一执行单元用于执行所调度的所述第一指令。
在示例中,所述分配电路用于:基于将所述第一指令的所述源操作数的所述物理源标识符与所述多个有序缓冲区的子集的内容可寻址存储器进行比较,来选择所述第一指令,以用于分配到所述第一有序缓冲区中,所述多个有序缓冲区的所述子集具有存储所述第一指令的源操作数的生产者指令的条目。
在示例中,所述分配电路用于:使用针对所述第一指令的源操作数从所述寄存器别名表获得的缓冲区标识符,来标识所述多个有序缓冲区中存储所述第一指令的所述源操作数的生产者指令的缓冲区。
要理解的是,上述示例的各种组合都是可能的。
注意,术语“电路”和“电路***”在本文中可互换使用。如本文所使用的,这些术语和术语“逻辑”用于单独地或以任何组合来指代模拟电路***、数字电路***、硬接线电路***、可编程电路***、处理器电路***、微控制器电路***、硬件逻辑电路***、状态机电路***和/或任何其他类型的物理硬件组件。实施方式可以用在许多不同类型的***中。例如,在一个实施方式中,可以将通信设备布置成执行本文描述的各种方法和技术。当然,本发明的范围不限于通信设备,相反,其他实施方式可以针对用于处理指令的其他类型的装置、或包括指令的一种或多种机器可读介质,指令响应于被在计算机设备上执行而使该设备执行本文所述的一种或多种方法和技术。
实施方式可以用代码实现,并且可以存储在其上存储有指令的非暂时性存储介质上,该指令可用于对***进行编程以执行指令。实施方式还可以以数据来实现并且可以被存储在非暂时性存储介质上,该非暂时性存储介质如果被至少一个机器使用,则使该至少一个机器制造至少一个集成电路来执行一个或多个操作。另外的实施方式可以在计算机可读存储介质中实现,该计算机可读存储介质包括信息,该信息在被制造成SoC或其他处理器时将配置SoC或其他处理器来执行一个或多个操作。存储介质可以包括但不限于:包括软盘、光盘、固态驱动器(SSD)、光盘只读存储器(CD-ROM)、可擦写光盘(CD-RW)和磁光盘在内的任何其他类型的盘,诸如只读存储器(ROM)、随机存取存储器(RAM)(例如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、可擦可编程只读存储器(EPROM)、闪存、电可擦可编程只读存储器(EEPROM)、磁卡或光卡)之类的半导体设备,或适合存储电子指令的任何其他类型的介质。
尽管已经针对有限数量的实施方式描述了本发明,但是本领域技术人员将理解由此做出的许多修改和变化。所附权利要求旨在涵盖落入本发明的真实精神和范围内的所有这样的修改和变化。
Claims (26)
1.一种用于调度指令的装置,包括:
多个第一通道,所述多个第一通道中的每个第一通道具有多个条目以存储具有有序依赖性的指令的信息;
可变延迟追踪表,所述可变延迟追踪表包括第二多个条目以存储具有可变延迟的指令的信息;以及
调度器电路,所述调度器电路用于访问所述多个第一通道的头部条目以从所述多个第一通道中的至少一个第一通道的所述头部条目调度至少一个指令,以用于在至少一个执行单元上执行。
2.根据权利要求1所述的装置,其中,所述多个第一通道中的每个第一通道还包括内容可寻址存储器以存储该通道的尾部指令的目的地操作数的物理目的地标识符。
3.根据权利要求2所述的装置,还包括分配电路,所述分配电路用于将传入指令分配到所述多个第一通道中的下述通道中:所述通道的所述尾部指令的所述目的地操作数的所述物理目的地标识符与所述传入指令的源操作数的物理源标识符对应。
4.根据权利要求3所述的装置,其中,所述分配电路用于:基于将所述传入指令的所述源操作数的所述物理源标识符与所述多个第一通道的子集的内容可寻址存储器进行比较来选择所述通道,所述多个第一通道的所述子集具有存储所述传入指令的源操作数的生产者指令的条目。
5.根据权利要求4所述的装置,其中,在分配时,所述分配电路用于存储所述传入指令的信息,所述信息包括所述传入指令的第二源操作数的第二物理源标识符以及所述多个第一通道中存储所述第二源操作数的生产者指令的通道的通道标识符。
6.根据权利要求3所述的装置,其中,所述分配电路还用于:基于自所述传入指令的另一源操作数被分配到所述多个第一通道中的另一通道中以来的周期数,将所述传入指令分配到所述多个第一通道中的所述通道中。
7.根据权利要求1所述的装置,其中,所述第二多个条目中的每个条目包括多个通道字段,以存储所述多个第一通道中的对应通道中存储的可变延迟指令的第一消费者指令的索引。
8.根据权利要求1所述的装置,其中,所述调度器电路用于:基于将所述多个第一通道中的第一通道的预定条目的生产者索引与所述多个第一通道中具有下述条目的通道的头部指针进行比较,来设置所述预定条目的准备就绪指示符:所述条目针对所述预定条目中存储的指令存储了生产者指令。
9.根据权利要求1所述的装置,还包括接收通道,所述接收通道用于存储不具有目的地操作数的指令的信息。
10.根据权利要求1所述的装置,其中,所述调度器电路用于:至少部分地基于与针对所述至少一个指令的生产者指令相关联的暂停计数器,来计算所述至少一个指令的旁路信息。
11.一种用于在处理器的预留站中处理指令的方法,所述方法包括:
在处理器的预留站中接收指令,所述预留站包括多个有序通道和至少一个乱序通道;
执行所述多个有序通道的子集的尾部条目的内容可寻址存储器搜索,以选择所述子集中具有下述物理寄存器目的地标识符的通道:所述物理寄存器目的地标识符与所述指令的源寄存器的物理寄存器源标识符匹配;以及
为所述指令分配所选择的通道中的条目,并且将所述多个有序通道中的另一通道的通道标识符存储在所述条目中,所述另一通道针对所述指令的另一源寄存器存储生产者指令。
12.根据权利要求11所述的方法,还包括:响应于确定所选择的通道是满的,为所述指令分配一不同通道中的条目,并且将所选择的通道的第二通道标识符存储在所述不同通道的所述条目中以标识跨通道依赖性。
13.根据权利要求11所述的方法,还包括:响应于确定所选择的通道是满的并且所述多个有序通道中没有可用的通道,暂停将指令分配到所述预留站中。
14.根据权利要求11所述的方法,还包括:
在所述预留站中接收第二指令,所述第二指令包括可变延迟指令;以及
为所述第二指令分配所述预留站的第一乱序通道中的条目,并且将所述多个有序通道中的下述通道的通道标识符存储在所述条目中:该通道针对所述第二指令的源寄存器存储生产者指令,所述第一乱序通道包括可变延迟追踪表。
15.根据权利要求14所述的方法,还包括:响应于确定所述指令依赖于所述第二指令,将所述通道中的所述指令的条目的索引写入所述第一乱序通道的条目的通道字段中。
16.根据权利要求15所述的方法,还包括:
调度所述第二指令以用于在第一执行单元中执行;以及
响应于调度所述第二指令,将准备就绪指示符写入所述通道的条目并且初始化所述条目的负载依赖型状态机。
17.根据权利要求14所述的方法,还包括:
在所述预留站中接收第三指令,所述第三指令不具有目的地;以及
为所述第三指令分配所述预留站的第二乱序通道中的条目,所述第二乱序通道包括接收通道。
18.一种包括计算机可读指令的计算机可读存储介质,所述计算机可读指令在被执行时实现如权利要求11至17中任一项所述的方法。
19.一种用于调度处理器中的指令的***,包括:
处理器,包括:
获取电路,所述获取电路用于获取指令;
解码器电路,所述解码器电路用于解码所述指令;
寄存器别名表,所述寄存器别名表包括第一多个条目,每个条目用于存储逻辑寄存器与物理寄存器之间的关联、以及具有与所述物理寄存器对应的目的地操作数的生产者指令在预留站中的存储位置的缓冲区标识符和索引;
耦合至所述寄存器别名表的所述预留站,所述预留站包括:
多个有序缓冲区,所述多个有序缓冲区中的每个有序缓冲区具有第二多个条目以存储具有有序依赖性的指令的信息;
至少一个乱序缓冲区,所述乱序缓冲区具有第三多个条目以存储相对于具有所述有序依赖性的所述指令可乱序执行的指令的信息;
分配电路,所述分配电路用于:响应于第一指令的源操作数的物理源标识符与所述多个有序缓冲区中的第一有序缓冲区的尾部指令的目的地操作数的物理目的地标识符之间的匹配,将所述第一指令分配到所述第一有序缓冲区中;以及
调度器电路,所述调度器电路用于:当所述第一指令存储在所述第一有序缓冲区的头部条目中时,访问所述多个有序缓冲区的所述头部条目以选择所述第一指令以用于执行;以及
第一执行单元,所述第一执行单元用于执行所调度的所述第一指令;以及
耦合至所述处理器的动态随机存取存储器。
20.根据权利要求19所述的***,其中,所述分配电路用于:基于将所述第一指令的所述源操作数的所述物理源标识符与所述多个有序缓冲区的子集的内容可寻址存储器进行比较,来选择所述第一指令,以用于分配到所述第一有序缓冲区中,所述多个有序缓冲区的所述子集具有存储所述第一指令的源操作数的生产者指令的条目。
21.根据权利要求19所述的***,其中,所述分配电路用于:使用针对所述第一指令的源操作数从所述寄存器别名表获得的缓冲区标识符,来标识所述多个有序缓冲区中存储所述第一指令的所述源操作数的生产者指令的缓冲区。
22.一种用于调度指令的装置,包括:
多个第一通道,所述多个第一通道中的每个第一通道具有多个条目装置以用于存储具有有序依赖性的指令的信息;
可变延迟追踪装置,所述可变延迟追踪装置包括第二多个条目装置以用于存储具有可变延迟的指令的信息;以及
调度器装置,所述调度器装置用于访问所述多个第一通道的头部条目装置,以从所述多个第一通道中的至少一个第一通道的所述头部条目装置调度至少一个指令,以用于在至少一个执行装置上执行。
23.根据权利要求22所述的装置,其中,所述多个第一通道中的每个第一通道还包括内容可寻址存储器装置,以用于存储该通道的尾部指令的目的地操作数的物理目的地标识符。
24.根据权利要求23所述的装置,还包括分配装置,所述分配装置用于将传入指令分配到所述多个第一通道中的下述通道中:所述通道的所述尾部指令的所述目的地操作数的所述物理目的地标识符与所述传入指令的源操作数的物理源标识符对应。
25.根据权利要求24所述的装置,其中,所述分配装置用于:基于将所述传入指令的所述源操作数的所述物理源标识符与所述多个第一通道的子集的内容可寻址存储器装置进行比较来选择所述通道,所述多个第一通道的所述子集具有存储所述传入指令的源操作数的生产者指令的条目装置。
26.根据权利要求25所述的装置,其中,在分配时,所述分配装置用于存储所述传入指令的信息,所述信息包括所述传入指令的第二源操作数的第二物理源标识符以及所述多个第一通道中存储所述第二源操作数的生产者指令的通道的通道标识符。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/452,955 US11126438B2 (en) | 2019-06-26 | 2019-06-26 | System, apparatus and method for a hybrid reservation station for a processor |
US16/452,955 | 2019-06-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112148106A true CN112148106A (zh) | 2020-12-29 |
Family
ID=69846286
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010221521.5A Pending CN112148106A (zh) | 2019-06-26 | 2020-03-26 | 用于处理器的混合预留站的***、装置和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11126438B2 (zh) |
EP (1) | EP3757772A1 (zh) |
CN (1) | CN112148106A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11210098B2 (en) * | 2013-07-15 | 2021-12-28 | Texas Instruments Incorporated | Variable latency instructions |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5778245A (en) * | 1994-03-01 | 1998-07-07 | Intel Corporation | Method and apparatus for dynamic allocation of multiple buffers in a processor |
US5951670A (en) * | 1996-09-06 | 1999-09-14 | Intel Corporation | Segment register renaming in an out of order processor |
US6163839A (en) * | 1998-09-30 | 2000-12-19 | Intel Corporation | Non-stalling circular counterflow pipeline processor with reorder buffer |
US20060090061A1 (en) | 2004-09-30 | 2006-04-27 | Haitham Akkary | Continual flow processor pipeline |
US20150277925A1 (en) | 2014-04-01 | 2015-10-01 | The Regents Of The University Of Michigan | Data processing apparatus and method for executing a stream of instructions out of order with respect to original program order |
GB2563582B (en) | 2017-06-16 | 2020-01-01 | Imagination Tech Ltd | Methods and systems for inter-pipeline data hazard avoidance |
-
2019
- 2019-06-26 US US16/452,955 patent/US11126438B2/en active Active
-
2020
- 2020-03-19 EP EP20164130.5A patent/EP3757772A1/en active Pending
- 2020-03-26 CN CN202010221521.5A patent/CN112148106A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11126438B2 (en) | 2021-09-21 |
US20200409710A1 (en) | 2020-12-31 |
EP3757772A1 (en) | 2020-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108351830B (zh) | 用于存储器损坏检测的硬件装置和方法 | |
JP6143872B2 (ja) | 装置、方法、およびシステム | |
JP5372929B2 (ja) | 階層マイクロコードストアを有するマルチコアプロセッサ | |
US11243775B2 (en) | System, apparatus and method for program order queue (POQ) to manage data dependencies in processor having multiple instruction queues | |
CN108885586B (zh) | 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、***和指令 | |
US20170286114A1 (en) | Processors, methods, and systems to allocate load and store buffers based on instruction type | |
US10095623B2 (en) | Hardware apparatuses and methods to control access to a multiple bank data cache | |
KR101806279B1 (ko) | 명령어 순서 강제 명령어들의 쌍들, 프로세서들, 방법들, 및 시스템들 | |
CN111752616A (zh) | 用于符号存储地址生成的***、装置和方法 | |
US20220206793A1 (en) | Methods, systems, and apparatuses for a scalable reservation station implementing a single unified speculation state propagation and execution wakeup matrix circuit in a processor | |
US11531562B2 (en) | Systems, methods, and apparatuses for resource monitoring | |
US10067762B2 (en) | Apparatuses, methods, and systems for memory disambiguation | |
US11182298B2 (en) | System, apparatus and method for dynamic profiling in a processor | |
US10877765B2 (en) | Apparatuses and methods to assign a logical thread to a physical thread | |
KR20160113677A (ko) | 다수의 스트랜드들로부터 명령어들을 디스패칭하기 위한 프로세서 로직 및 방법 | |
US10437590B2 (en) | Inter-cluster communication of live-in register values | |
US9418024B2 (en) | Apparatus and method for efficient handling of critical chunks | |
EP3716057A1 (en) | Method and apparatus for a multi-level reservation station with instruction recirculation | |
US20180165200A1 (en) | System, apparatus and method for dynamic profiling in a processor | |
EP3757772A1 (en) | System, apparatus and method for a hybrid reservation station for a processor | |
US20240037036A1 (en) | Scheduling merged store operations in compliance with store ordering rules | |
EP4202664B1 (en) | System, apparatus and method for throttling fusion of micro-operations in a processor | |
US20210200538A1 (en) | Dual write micro-op queue | |
US20160378497A1 (en) | Systems, Methods, and Apparatuses for Thread Selection and Reservation Station Binding | |
CN115858022A (zh) | 集群化解码管线的可缩放切换点控制电路*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |