CN111752617A - 用于poq的系统、设备和方法以管理具有多个指令队列的处理器中的数据依赖关系 - Google Patents
用于poq的系统、设备和方法以管理具有多个指令队列的处理器中的数据依赖关系 Download PDFInfo
- Publication number
- CN111752617A CN111752617A CN202010119351.XA CN202010119351A CN111752617A CN 111752617 A CN111752617 A CN 111752617A CN 202010119351 A CN202010119351 A CN 202010119351A CN 111752617 A CN111752617 A CN 111752617A
- Authority
- CN
- China
- Prior art keywords
- instruction
- queue
- register
- instructions
- program order
- 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 description 53
- 230000015654 memory Effects 0.000 claims description 90
- 230000004044 response Effects 0.000 claims description 12
- 238000003860 storage Methods 0.000 claims description 11
- 238000010586 diagram Methods 0.000 description 29
- 238000012545 processing Methods 0.000 description 17
- 238000007667 floating Methods 0.000 description 13
- 239000000306 component Substances 0.000 description 11
- 238000004891 communication Methods 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 230000014616 translation Effects 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000013461 design 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
- 230000008859 change Effects 0.000 description 3
- 230000001427 coherent effect Effects 0.000 description 3
- 229910003460 diamond Inorganic materials 0.000 description 3
- 239000010432 diamond Substances 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000013442 quality metrics Methods 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
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/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/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/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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/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/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 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/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/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
Abstract
在一个实施例中,一种设备包括:多个寄存器;第一指令队列,该第一指令队列用于存储第一多个指令;第二指令队列,该第二指令队列用于存储第二多个指令;程序顺序队列,该程序顺序队列具有多个部分,每个部分与多个寄存器中的一个寄存器相关联,多个部分中的每一个部分具有多个条目,该多个条目用于存储指令的状态,该状态包括由指令对寄存器的使用和用于指令的源指令队列的编码;以及分派器,该分派器用于至少部分地基于存储在程序顺序队列中的信息来分派来自第一指令队列的第一多个指令和来自第二指令队列的第二多个指令以供执行,以管理第一多个指令和第二多个指令之间的指令依赖关系。描述并要求保护其他实施例。
Description
技术领域
实施例涉及处理处理器中的数据依赖关系。
背景技术
有序处理器具有非常高的功率效率,但是受制于低指令层级的并行性并且因此执行吞吐量低。相反,乱序(OOO)处理器架构通过允许独立指令乱序执行来改善执行吞吐量。OOO架构由于其复杂性是显著地更耗电的,例如,由于管理指令依赖关系、寄存器重命名支持、以及广播指令完成逻辑以解除阻止从属指令的分派等。通常,处理器形成有有序架构或乱序架构。
附图说明
图1A是图示根据本发明的实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线的框图。
图1B是图示根据本发明的实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图。
图2A-2B图示根据本发明的实施例的更具体的示例性有序核架构的框图。
图3是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器的框图。
图4是根据本发明的一个实施例的系统的框图。
图5是根据本发明的实施例的第一更具体的示例性系统的框图。
图6是根据本发明的实施例的第二更具体的示例性系统的框图。
图7是根据本发明的实施例的SoC的框图。
图8是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
图9是图示根据本发明的实施例的数据并行集群(DPC)的一个示例的框图。
图10A-10C是根据本发明的实施例的以各种方式集成在计算机系统中的数据并行集群的框图。
图11图示根据本发明的实施例的微线程状态的一个示例。
图12是根据本发明的实施例的并置为更大的缩放单元的多个数据并行集群的框图。
图13A-13C是根据本发明的实施例的处理器架构的高级视图。
图14是根据本发明的实施例的方法的流程图。
图15是根据本发明的另一实施例的方法的流程图。
图16是根据本发明的又一实施例的方法的流程图。
具体实施方式
在各个实施例中,在处理器中提供了用于在具有多个有序指令队列的处理器流水线中的执行期间保持从属指令的程序顺序的技术。更特别地,实施例可以用于在具有单程序多数据(SPMD)架构的处理器中使用。在特定实现方式中,提供了一种处理器架构,该处理器架构包括:各个前端电路,该各个前端电路被配置成用于对单独的指令进行操作;以及多个执行通道,该多个执行通道包括执行单元,执行单元中的每一个执行单元被配置成用于在每通道的基础上针对这些指令执行操作。在实施例中,前端调度器在单程序多数据模型中跨执行通道共同分派同一指令。
该处理器架构被提供有多个有序队列,这些有序队列可以分派指令以供并行执行。例如,SPMD处理器可以包括多个指令队列,其中存储器指令被存储在第一指令队列中,并且基于算术的指令(在本文中称为ALU指令)被存储在第二指令队列中。指令从这些指令队列中的每一个指令队列被有序地分派到并行执行流水线。然而,仅在指令是独立的情况下才可以进行此分派。否则,指令分派必须保留由程序顺序驱动的经分派的指令之间的依赖关系。存在三种类型的依赖关系要处理:正在考虑的指令的操作数之间的写入后写入(WAW)、写入后读取(RAW)和读取后写入(WAR)依赖关系。WAW与WAR依赖关系不是真正的数据依赖关系,而是由于给定架构中可以存在的有限数量的寄存器而存在的。
为了克服该有限的寄存器的问题,在典型的OOO架构中使用称为寄存器重命名的技术,其中对于指令的每个目的地寄存器,在寄存器重命名表中分配一行,其中该行的行ID用作新的目的地操作数ID。因此,只要寄存器重命名表未满,指令将不会具有相同的寄存器目的地,从而避免了WAW和WAR依赖关系。然而,此类寄存器重命名逻辑通常是功率密集的。对于RAW(也称为数据流依赖关系),指令队列中的指令的每个操作数都与表示该操作数是否已就绪(完成执行并指向正确的数据)的位相关联。当指令的执行完成时,目的地寄存器ID被广播到所有队列。对于每个指令队列中的任何指令中的每个操作数,典型的OOO架构都包括将被广播的寄存器ID与其自己的寄存器ID进行比较的逻辑,并且当其匹配时,该逻辑切换完成位。这种比较逻辑也通常是功率密集的。
在实施例中,可以在不使用寄存器重命名或耗电的比较逻辑的情况下管理多个指令队列中的不同指令队列中的指令之间的指令依赖关系。特别地,包括M个指令队列的流水线可以包括数据结构,本文中称为程序顺序队列(POQ),该POQ包括N个队列,其中N是架构寄存器的数量。每个POQ与给定的架构寄存器相关联,并且可以包括多个条目,每个条目用于存储具有元素位宽为log(2*M)位的状态信息。每个POQ的深度(即,条目的数量)会影响运行中(in-flight)指令的数量,并且可以针对给定的实现方式进行调整以获得最佳性能。POQ数据结构的布置取决于架构寄存器的数量(N)和独立指令队列的数量(M)。注意在本文中,术语“操作”和“指令”可互换使用。此外,尽管在多个指令队列的上下文中描述了用于处理指令排序的特定技术,但是应理解,在至少某些架构中,用户级指令可被解码为一个或多个微指令(微操作),该一个或多个微指令(微操作)是在执行单元中实际执行并依次存储在本文的指令队列中(并且其信息存储在POQ中)的机器级指令,或更多个微指令(微操作),该更多个微指令(微操作)是在执行单元中实际执行并依次存储在本文的指令队列中(并且其信息存储在POQ中)的机器级指令。由此,POQ依赖关系信息基于微操作表示,它也是用于分派的表示。为了易于概括,术语“操作”、“指令”和“微操作”可互换使用。
如本文所述,使用POQ可以有利地使得能够同时处理所有三种依赖关系(WAR、RAW和WAW)。并且,通过利用存在于POQ中的信息,紧急指令分派可以从多个指令队列中进行,同时保留原始的程序顺序,从而产生比有序架构更高的性能,并且产生比具有用于处理依赖关系分析技术的逻辑的乱序处理器更高的功率效率。由此,根据实施例的SPMD处理器架构可以是有序和乱序处理器的混合。如将在本文中所描述,乱序性能可以在没有寄存器重命名的情况下和/或在没有基于内容可寻址存储器(CAM)的调度器的情况下获得。并且可以跨从多个指令队列发布的指令强制执行数据依赖关系。通过从多个有序指令队列实现紧急指令分派的实施例,可以利用与有序架构相当的功耗来实现改善的性能(例如,以增加的指令每周期的形式)。
图1A是图示根据本发明的实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线的框图。图1B是图示根据本发明的实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图。图1A至图1B中的实线框图示有序流水线和有序核,而任选增加的虚线框图示寄存器重命名的、乱序发布/执行流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图1A中,处理器流水线100包括取出级102、长度解码级104、解码级106、分配级108、重命名级110、调度(也被称为分派或发布)级112、寄存器读取/存储器读取级114、执行级116、写回/存储器写入级118、异常处置级122和提交级124。
图1B示出处理器核190,该处理器核190包括前端单元130,该前端单元130耦合到执行引擎单元150,并且前端单元130和执行引擎单元150两者都耦合到存储器单元170。核190可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代的核类型。作为又一选项,核190可以是专用核,诸如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核,等等。
前端单元130包括分支预测单元132,该分支预测单元132耦合到指令高速缓存单元134,该指令高速缓存单元134耦合到指令转换后备缓冲器(TLB)136,该指令转换后备缓冲器136耦合到指令取出单元138,该指令取出单元138耦合到解码单元140。解码单元140(或解码器)可对指令进行解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元140可使用各种不同的机制来实现。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核190包括用于存储某些宏指令的微代码的微代码ROM或其他介质(例如,在解码单元140中或以其他方式在前端单元130内)。解码单元140耦合到执行引擎单元150中的重命名/分配器单元152。
执行引擎单元150包括重命名/分配器单元152,该重命名/分配器单元152耦合到引退单元154和一个或多个调度器单元的集合156。(多个)调度器单元156表示任何数量的不同调度器,包括预留站、中央指令窗等。(多个)调度器单元156耦合到(多个)物理寄存器堆单元158。(多个)物理寄存器堆单元158中的每一个物理寄存器堆单元表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一条指令的地址的指令指针)等等。在一个实施例中,(多个)物理寄存器堆单元158包括向量寄存器单元和标量寄存器单元。这些寄存器单元可提供架构向量寄存器、向量掩码寄存器和通用寄存器。(多个)物理寄存器堆单元158由引退单元154重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器以及(多个)引退寄存器堆;使用寄存器映射和寄存器池;等等)。引退单元154和(多个)物理寄存器堆单元158耦合到(多个)执行集群160。(多个)执行集群160包括一个或多个执行单元的集合162和一个或多个存储器访问单元的集合164。执行单元162可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可仅包括一个执行单元或全都执行所有功能的多个执行单元。(多个)调度器单元156、(多个)物理寄存器堆单元158和(多个)执行集群160示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、(多个)物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(多个)存储器访问单元164的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序的。
存储器访问单元的集合164耦合到存储器单元170,该存储器单元170包括数据TLB单元172,该数据TLB单元172耦合到数据高速缓存单元174,该数据高速缓存单元174耦合到第2级(L2)高速缓存单元176。在一个示例性实施例中,存储器访问单元164可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合到存储器单元170中的数据TLB单元172。指令高速缓存单元134进一步耦合到存储器单元170中的第2级(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技术公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON之类的任选的附加扩展)),其中包括本文中所描述的(多条)指令。在一个实施例中,核190包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如英特尔超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述寄存器重命名,但应当理解,寄存器重命名可在有序架构中被使用。尽管所图示的处理器的实施例还包括分开的指令和数据高速缓存单元134/174以及共享的L2高速缓存单元176,但是替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如,第1级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
图2A至图2B图示更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块(包括相同类型和/或不同类型的其他核)中的一个。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定功能逻辑、存储器I/O接口和其他必要的I/O逻辑进行通信。
图2A是根据本发明的实施例的单个处理器核以及它至管芯上互连网络202的连接及其第二级(L2)高速缓存的本地子集204的框图。在一个实施例中,指令解码器200支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存206允许进入标量和向量单元中的、对高速缓存存储器的低等待时间的访问。尽管在一个实施例中(为了简化设计),标量单元208和向量单元210使用分开的寄存器集合(分别为标量寄存器212和向量寄存器214),并且在这些寄存器之间传输的数据被写入到存储器,并随后从第1级(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的框图。图3中的实线框示出具有单个核302A、系统代理310、一个或多个总线控制器单元的集合316的处理器300,而可选附加的虚线框示出具有多个核302A-N、系统代理单元310中的一个或多个集成存储器控制器单元的集合314以及专用逻辑308的替代处理器300。
因此,处理器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可包括一个或多个中间级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合,中间级别的高速缓存诸如第2级(L2)、第3级(L3)、第4级(L4)或其他级别的高速缓存。尽管在一个实施例中,基于环的互连单元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处于单个芯片中。
附加的处理器415的任选性在图4中通过虚线来表示。每一处理器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快捷总线或另一I/O互连总线之类的总线,但是本发明的范围不限于此。
如图5中所示,各种I/O设备514可连同总线桥518一起耦合到第一总线516,该总线桥518将第一总线516耦合到第二总线520。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器515耦合到第一总线516。在一个实施例中,第二总线520可以是低引脚数(LPC)总线。在一个实施例中,各种设备可耦合到第二总线520,这些设备包括例如键盘和/或鼠标522、通信设备527以及存储单元528,该存储单元528诸如可包括指令/代码和数据530的盘驱动器或者其他大容量存储设备。此外,音频I/O 524可耦合至第二总线516。注意,其他架构是可能的。例如,代替图5的点对点架构,系统可以实现多分支总线或其他此类架构。
现在参考图6,所示为根据本发明的实施例的更具体的第二示例性系统600的框图。图5和图6中的类似元件使用类似附图标记,且在图6中省略了图5的某些方面以避免使图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)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括非暂态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中所描述的结构、电路、设备、处理器和/或系统特征。此类实施例也可被称为程序产品。
在一些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成要由核来处理的一个或多个其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图8是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图8示出可使用第一编译器804来编译高级语言802的程序,以生成可由具有至少一个第一指令集核的处理器816原生执行的第一(例如,x86)二进制代码806。在一些实施例中,具有至少一个第一指令集核的处理器816表示能通过兼容地执行或以其他方式处理以下内容来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能的任何处理器:(1)英特尔x86指令集核的指令集的本质部分,或(2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以实现与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。第一编译器804表示可用于生成第一指令集的二进制代码806(例如,目标代码)的编译器,该二进制代码806可通过或不通过附加的链接处理在具有至少一个第一指令集核的处理器816上执行。类似地,图8示出可以使用替代的指令集编译器808来编译利用高级语言802的程序,以生成可以由不具有至少一个第一指令集核的处理器814(例如具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代指令集二进制代码810。指令转换器812用于将第一二进制代码806转换成可以由不具有第一指令集核的处理器814原生执行的代码。该转换后的代码不大可能与替代的指令集二进制代码810相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。由此,指令转换器812通过仿真、模拟或任何其他过程来表示允许不具有第一指令集处理器或核的处理器或其他电子设备执行第一二进制代码806的软件、固件、硬件或其组合。
用于加速数据并行工作负载的指令集架构(ISA)扩展要求以机器表示编码的显式向量字长度。本发明的一个实施例利用标量微线程化指令处理架构来扩展现有ISA(例如,诸如x86 ISA)。具体而言,可使用数据并行单程序多数据(SPMD)微架构来提供超出现有指令限制的可缩放的执行数据路径尺寸,从而利用减少的能耗实现更大的指令执行吞吐量。
当前CPU架构已使用多代子字单指令多数据(SIMD)扩展来加速数据并行操作(例如,包括x86架构中的SSE2、SSE4、AVX和AVX-512)。每个连续的世代扩展CPU的状态和指令集,从而产生传统性能上行问题并要求对旧代码的重新编译。
通过使用硬件发散栈来处置发散的控制流情况,图形处理单元(GPU)已实现SPMD架构。硬件发散栈经由如由针对现有GPU的终结器代理静态地实现的显式指令和/或控制代码来操纵。
本发明的一个实施例包括使用标量微线程抽象的SPMD数据并行执行引擎,类似于对不具有架构化发散指令或控制代码的标量处理器阵列进行编程。如下文所讨论,这些实施例尤其适于包括预先定义的应用二进制接口(ABI)的现有ISA中的实现方式。
图9图示数据并行集群(DPC)900的一个示例,该DPC 900可被集成在处理器的微架构内和/或可被用作用于执行指令/微操作的特定集合914的加速引擎。在一个实施例中,前端电路907包括群组调度器(gang scheduler)901,以调度多个标量通道(诸如,通道910)内的标量微线程的成组(ganged)的执行。数据并行集群900中的标量通道的数量可以在不影响软件的情况下变化。在所图示的实现方式中,示出了16个通道;然而,取决于实现方式,可使用任何数量的通道。在一个实施例中,可以使用32个通道。
在一个实施例中,群组调度器901将同一指令调度在多个活跃通道上。微架构掩码913(例如,从掩码寄存器读取)禁用不要求是活跃的那些通道。在一个实施例中,群组调度器901读取掩码值,以确定哪些通道对于哪些指令/微操作将是活跃的。
在一个实施例中,前端907内的指令解码队列(IDQ)905存储经解码的宏指令的微操作(uop),这些微操作按程序顺序(例如,以FIFO实现方式)被添加到IDQ。如所提到,对于操作的多个群组,可对IDQ 905进行分区。
下文描述了用于将DPC 900耦合至主机处理器的各种布置。在其中指令由主机处理器进行解码的实现方式中,DPC 900不包括用于在通道上的执行之前生成微操作的解码器。替代地,在其中由DPC从主机处理器转发宏指令或者直接从存储器读取宏指令的实现方式中,DPC的前端(例如,群组调度器901)包括解码器,以在执行之前生成随后被存储在IDQ中的微操作序列。
数据并行集群900中的每个通道耦合至IDQ 905,每个通道从IDQ905接收将并行地执行的微操作。在一个实施例中,每个通道包括分别用于存储整数和浮点操作数的整数寄存器堆(IRF)920和浮点寄存器堆(FRF)930。每个通道还包括用于执行自适应逐通道张量处理的张量算术逻辑单元(ALU)940(如下文更详细地描述)、每一微线程的标量ALU 950、以及每一微线程的独立地址生成单元960。在一个实施例中,独立AGU 960为具有聚集/分散存储器访问模式的代码提供高吞吐量地址生成。还可给每个通道分配其他独立功能单元。例如,在一个实施例中,每个通道装配有独立的跳转执行单元(JEU),该跳转执行单元允许通道发散并与微架构掩码进行交互,以提供独立线程的错觉。
所图示的架构还包括用于为这些通道中的每个通道存储数据的本地副本的共享数据高速缓存980。在一个实施例中,如果数据并行集群900被集成在具有主机处理器的芯片或系统中,则该数据并行集群900参与在由该主机处理器实现的高速缓存一致性协议中。页未命中处理程序984执行页走查(walk)操作,以将虚拟地址转换为物理(系统存储器)地址,并且数据转换后备缓冲器(DTLB)985对该虚拟到物理转换进行高速缓存。
如图10A至图10C所图示,数据并行集群900能以各种方式被集成在计算机系统中。在图10A中,DPC 900对核1001a是一体化的;在图10B中,DPC 900与多个核处于同一芯片上并由多个核共享;并且在图10C中,DPC 900与核1001a-b处于不同芯片上(但潜在地处于同一封装中)。
首先转向图10A,所图示的架构包括核区域1001以及共享或“非核”区域1010。共享区域1010包括由所有的核1001a-b或核1001a-b的子集共享的数据结构和电路。在所图示的实施例中,多个核1001a-b是能够并发执行多个指令流或线程的同时多线程核。尽管为了简单起见在图10A中仅图示两个核1001a-b,但是将会领会,核区域1001可包括任何数量的核,这些核中的每个核可包括与针对核1001a所示相同的架构。另一实施例包括异构核,这些异构核可具有不同的指令集架构和/或不同的功率和性能特性(例如,低功率核与高功率/性能核组合)。
图10A中图示的各组件能以与图1至图7中的对应组件相同的方式来实现。另外,核1001a可包括图1B中示出的核190的组件,并且可包括本文中(例如,图2A至图2B、图3等)所描述的其他处理器/核组件中的任何组件。
核1001a-b中的每个核包括用于执行指令流的同时执行的指令流水线组件,这些指令流水线组件包括从系统存储器1060或指令高速缓存1010取出指令的指令取出电路1018以及用于对指令进行解码的解码器1009。执行电路1008执行经解码的指令以执行如由指令操作数、操作码和任何立即数值所指定的底层操作。
在所图示的实施例中,解码器1009包括用于将某些指令解码为微操作以供DPC900(在该实施例中,被集成在执行电路1008内)执行的DPC指令解码电路1099。尽管在图10A中被图示为分开的框,但DPC解码电路1099和DPC 900可作为贯穿解码器1009和执行电路1008散布的功能电路进行分布。
在图10B中所图示的替代实施例中,DPC 900通过高速缓存一致性互连紧密地耦合至处理器核1001a-b(例如,其中,数据高速缓存参与在同这些核相同的高速缓存一致性存储器事务集合中)。DPC 900被配置成核的对等体,参与在与这些核相同的高速缓存一致性存储器事务集合中。在该实施例中,解码器1009对将要由DPC 900执行的指令进行解码,并且通过互连1006将得到的微操作传递至DPC 900以供执行。在另一实施例中,DPC 900包括分别用于从系统存储器1060的特定区域取出指令和对指令进行解码的其自己的取出和解码电路。在任一实现方式中,在执行这些指令之后,DPC 900可将结果存储到将要由核1001a-b访问的系统存储器1460中的区域。
图10C图示其中DPC与核1001a-b处于不同芯片上但通过高速缓存一致性接口1096耦合至这些核的另一实施例。在一个实施例中,高速缓存一致性接口1096使用基于分组的事务来确保DPC 900的数据高速缓存980与核1001a-b的高速缓存层级结构一致。
通用寄存器(GPR)1018d、向量/片寄存器的集合1018b、掩码寄存器的集合1018a(其可包括如下文所述的片掩码寄存器)、以及控制寄存器的集合1018c也在图10A至图10C中被图示出。在一个实施例中,将多个向量数据元素紧缩到每个向量寄存器中,每个向量寄存器可具有512位宽度以用于存储两个256位值、四个128位值、八个64位值、十六个32位值等等。多组向量寄存器可被组合,以形成本文中所描述的片寄存器。替代地,可使用单独的2-D片寄存器的集合。然而,本发明的基本原理不限于任何特定尺寸/类型的向量/片数据。在一个实施例中,掩码寄存器1018a包括用于对存储在向量寄存器1018b中的值执行位掩码操作的八个64位操作数掩码寄存器(例如,实现为上文所描述的掩码寄存器k0-k7)。然而,本发明的基本原理不限于任何特定的掩码寄存器尺寸/类型。一个或多个掩码寄存器的集合1018a可实现本文中所描述的片掩码寄存器。
控制寄存器1018c存储各种类型的控制位或“标志”,这些控制位或“标志”通过执行指令而用于确定处理器核1001a的当前状态。作为示例而非限制,在x86架构中,控制寄存器包括EFLAGS寄存器。
实现管芯中互连(IDI)/一致性协议的诸如IDI或存储器结构之类的互连1006将核1001a-b(以及潜在地DPC 900)通信地彼此耦合并通信地耦合至共享区域1010内的各种组件。例如,互连1006经由接口1007将核1001a耦合至第三级(L3)高速缓存1020和集成存储器控制器1030。另外,可使用互连1006将核1001a-b耦合至DPC 900。
集成存储器控制器1030提供对系统存储器1060的访问。诸如PCI快捷(PCIexpress)电路之类的一个或多个输入/输出(I/O)电路(未示出)也可被包括在共享区域1010中。
指令指针寄存器1012存储标识要取出、解码并执行的下一指令的指令指针地址。指令可从系统存储器1060和/或一个或多个共享高速缓存级别被取出或预取,这一个或多个共享高速缓存级别诸如L2高速缓存1013、共享L3高速缓存1020或L1指令高速缓存1010。此外,L1数据高速缓存1002存储从系统存储器1060加载的数据和/或从对指令和数据两者进行高速缓存的其他高速缓存级别1013、1020中的一个检取的数据。指令TLB(ITLB)1011存储用于由取出电路1018取出的指令的虚拟地址到物理地址转换,并且数据TLB(DTLB)1003存储用于由解码电路1009和执行电路1008处理的数据的虚拟到物理地址转换。
分支预测单元1021推测性地预测指令分支地址,并且分支目标缓冲器(BTB)1022用于存储分支地址和目标地址。在一个实施例中,为每次分支预测/误预测维护并更新分支历史表(未示出)或其他数据结构,并且由分支预测单元1002使用该分支历史表(未示出)或其他数据结构以作出后续分支预测。
注意,图10A至图10C不旨在提供处理器内采用的所有电路和互连的全面视图。相反,未示出与本发明的实施例不相关的组件。反过来,仅出于提供在其中可实现本发明的实施例的示例架构的目的示出一些组件。
返回到图9,处理集群900被布置为针对若干微线程对执行资源(例如,IRF 920、FRF 930、张量ALU 940、ALU 950和AGU 960)进行封装的多个通道910。多个线程共享给定通道的执行资源,以便容忍流水线和存储器等待时间。一种实现方式的每一微线程状态是现代处理器状态的子集。
图11图示微线程状态1100的一个示例,该微线程状态1100是标量x86状态的子集。微线程状态1100包括来自通用寄存器1101(例如,十六个64位寄存器)、XMM寄存器1102(例如,三十二个64位寄存器)、RFLAGS寄存器1104、指令指针寄存器1105、段选择器1106以及MXCSR寄存器1103的状态。使用标量x86的子集对于编程者是方便的,与现有x86代码是软件兼容的,并且要求对当前编译器和软件工具链的最小改变。该实施例的通道执行标量用户级指令。当然,本发明的基本原理不限于该特定布置。
在图12中所图示的一个实施例中,可将多个数据并行集群900A-D并置为被称为“DPC片”1200的更大的缩放单元。各数据并行集群900A-D可通过高速互连结构彼此耦合。DPC片1200可使用以上参考图10A至图10C中的单个DPC 900所描述的微架构实现方式中的任一种而被集成在处理器或计算机系统内(即,DPC片1200可被这些图中的DPC 900替换)。
DPC片1200包括共享高速缓存1201,并且依赖于一个或多个核的现有取出1018和解码器1009。预取器1202在预期在数据并行集群900A-D上执行的微操作时从系统存储器和/或高速缓存层级结构预取数据。虽然未图示,但共享高速缓存1201可耦合在数据并行集群900A-D之间,并且每个DPC900A-D可耦合至芯片上互连网络(例如,IDI)。
跨整个集群来共享处理器的执行资源分摊由解码器1009执行的相对复杂的解码过程。本发明的一个实施例可以使用常规处理器设计的取出1018和解码器1009资源的一小部分来支持数百个微线程执行指令。
通过使用POQ,可以在将指令分配给指令队列之前以非常简洁的形式对指令的程序顺序进行跟踪。进而,该程序顺序数据可用于从指令队列中指导指令分派和执行。在实施例中,POQ包括N个队列,每个架构寄存器一个POQ。针对M个指令队列,配置基线POQ布置以使存储在POQ中的状态是按如下方式编码的2*M个状态中的一个:“Ri”,读取事件,当寄存器用作分配给指令队列i的指令的源操作数时,读取事件可以被写入POQ条目;以及“Wi”,写入事件,当寄存器是分配给指令队列i的指令的目的地操作数时,写入事件可以被写入POQ条目。
通过利用POQ中的信息,可以在不违反由程序顺序指定的指令之间的WAR、RAW和WAW依赖关系的情况下,从多个指令队列中分派并执行指令。在实施例中,存在使得POQ的状态改变的三个事件:(1)分配,当指令被分配给M个指令队列中的一个时;(2)分派,当从指令队列中分派指令以供执行时;以及(3)完成,当指令完成执行并被写入目的地寄存器时。
在将指令分配给指令队列i之前,对于该指令的每个基于寄存器的源操作数,用于标识寄存器读取的读取状态“Ri”和从其中发布指令的指令队列被写入对应于基于寄存器的操作数的POQ中。如果指令的目的地也是寄存器,则用于标识寄存器写入的写入状态“Wi”和从其中发布指令的指令队列被写入对应于基于寄存器的操作数的POQ中。
在实施例中,可以关于要从指令队列分派的下一指令(即,该先进先出(FIFO)结构的顶部条目)作出确定。对于要从指令队列i分派的指令,在POQ中检查以下两个条件:对于指向寄存器的指令的(多个)源操作数,检查用于寄存器的相应POQ以确认它们在POQ的顶部处具有针对此指令队列的读取状态(“Ri”);并且如果该指令的目的地操作数存在并且是寄存器,则检查用于该寄存器的相应POQ,以确认其在该POQ的顶部处具有针对该指令队列的写入状态(“Wi”)。如果两个条件都成立,则指令队列可以分派指令。否则,指令停止直到满足该条件。在指令分派时,可以使对应于源操作数寄存器的POQ出队,但不使目的地寄存器POQ出队。相反,在指令完成时(当所有执行通道均已执行了指令时),使对应于目的地寄存器的POQ中的顶部条目出队。
作为实施例的操作的示例,考虑具有以下两个指令队列的处理器架构:用于基于算术的指令(例如,ALU指令(诸如ADD(加法)和MUL(乘法)指令))的第一队列和用于基于存储器的指令(例如,LOAD(加载)和STORE(存储)指令)的第二队列。利用这种架构,考虑以下程序顺序序列:
1:X3<-LOAD 0x10;
2:X1<-LOAD 0x20;
3:X2<-ADD X1,X3;
4:X3<-LOAD 0x30;
5:X1<-MUL X3,X2.
在图13A至图13C中示出了根据本发明的实施例的处理器架构的高级视图。如图13A所图示,处理器1300包括具有多个条目13120-13122的存储器指令队列1310。存储器指令队列1310是有序队列或先进先出(FIFO)缓冲器,其中顶部条目13120是要从指令队列1310中出队或分派的第一指令。类似地,算术逻辑单元(ALU)指令队列1320是有序队列或FIFO缓冲器,其中顶部条目13220是要从指令队列1320出队或分派的第一指令。
图13A进一步图示了一组POQ,即三个POQ 1330x1-1330x3(统称为POQ 1330),三个POQ中的每个POQ与给定寄存器(寄存器X1-X3)相关联。如所示,每个POQ 1330包括多个条目1332-1338,这些条目中的每一个都存储使用相应寄存器的指令的状态。在图13A的实施例中,注意POQ 1330的顶部条目,即条目1332,是要出队的第一条目,因为它对应于给定指令队列的最早的指令,因为POQ 1330也被实现为有序或FIFO缓冲器。
在图13A中,图示了指令队列1310和1320,其中针对上文所有指令1-5将条目写入指令队列1310和1320。类似地,图13A图示中的POQ 1330包括针对所有指令1-5的相应的事件状态。当所有指令已经分配到指令队列1310和1320中,但是这些指令1-5中的任何一个都没有被选择或调度以用于分派给执行通道时,该布置发生。
当将指令分配给指令队列1310和1320时,POQ 1330中的条目根据上文所述的分配过程进行更新。表示Rm/Wm用于指代分配给存储器指令队列1310的指令的寄存器,并且表示Wa/Ra用于分配给ALU指令队列1320的指令的寄存器。考虑以针对寄存器X1的POQ 1330x1中的状态序列为例:Wm、Ra、Wa。此序列按以下程序顺序捕获寄存器X1上的事件:针对存储器指令2(Wm)X1是目的地,然后针对指令3(Ra)X1是源,最后针对ALU指令5(Wa)X1是目的地。
仍然参考图13A,要从POQ 1330x1-x3出队的接下来的值是:X1=“Wm”;X2=“Wa”;和X3=“Wm”。考虑到上文针对分派操作的讨论,指令3(ALU指令ADD)不能被分派,因为它需要X1和X3。因此,在分派该指令之前,针对寄存器X1和X3的POQ 1330x1和1330x3的顶部条目1332的状态将为“Ra”(而X2 POQ 1330x2的顶部条目1332的状态将为“Wa”)。因此,指令停止直到相关POQ的顶部与寄存器的预期状态匹配为止。直观地,ADD指令不能分派,因为它依赖于尚未写入的X1和X3。
因为针对X3的POQ 1330x3的顶部条目是“Wm”,所以可以分派具有目的地为寄存器X3的(存储在指令队列1310的条目13120中的)存储器队列顶部指令LOAD。当该指令被分派时,该指令从指令队列1310中移除,但POQ 1330x3中的目的地寄存器状态尚未更新。该布置发生以便保留RAW和WAW依赖关系。一旦执行LOAD到X3指令,就可以分派下一个LOAD到X1指令,因为针对X1的POQ 1330x1中的顶部条目1332是“Wm”。
两条加载指令完成之后,可以通过弹出POQ 1330x1和1330x3的顶部条目来更新相应的POQ。这一时间点的指令队列和POQ的状态如图13B所阐述。
参见图13B,因为X3寄存器POQ 1330x3具有“Ra”的顶部条目状态值,所以存储在指令队列1310的顶部条目13120中的具有目的地寄存器X3的加载指令不能分派。直观地,对于寄存器X3,为防止发生WAR危险,不应分派此LOAD指令,因为(在指令队列1320的顶部条目13220中的)ADD指令用于根据程序顺序首先读取X3。由此,由于两个源寄存器X1、X3和一个目的地寄存器X2分别与存储在POQ 1330的顶部条目1332中的POQ状态“Ra”、“Ra”和“Wa”匹配,因此可以分派该ALU指令ADD。在分派该ADD指令之后,可以使存储在源寄存器POQ 1330x1和1330x3的顶部条目(还不是目的地)中的状态出队,从而导致图13C所示的状态。
此时,可以分派存储在指令队列1310的顶部条目13120中的具有目的地寄存器X3的LOAD指令。在此LOAD指令和前一条ADD指令均完成之后,通过从POQ 1330x2和1330x3的顶部条目中弹出目的地寄存器状态来更新相应的POQ,这将解除阻止最后一条指令分派。
尽管上文讨论解释了根据实施例的POQ的基本操作,但是可能存在某些特定情况,诸如指令的源寄存器和目的地寄存器是同一寄存器。对于上文具有两个队列的示例,为了处理这种情况,可以包括称为“RWa”的额外状态,以指示其中一个或两个源寄存器与目的地寄存器相同的这种情况。在指令分派时,该RWa状态被转换为Wa状态,并在完成时使Wa状态出队。对于上文具有两个队列的示例,为了处理这种情况,可以包括称为“RWa”的额外状态,以指示其中一个或两个源寄存器与目的地寄存器相同的这种情况。在指令分派时,该RWa状态被转换为Wa状态,并在完成时使WA状态出队。对于此类实施例,每目的地的每POQ条目可以有6个唯一状态(即,3个位),即:val Wa、Wm、Ra、Rm、WmRa、WaRm、RaWa//七个状态;val RWa=RaWa//但是这两个是相同的。除了恰好存在两个调度器(“a”和“m”)之外,这种特定的实现方式利用了由微操作解码逻辑所维持的不变量。
作为另一变体,指令的两个源寄存器相同可以通过使针对该寄存器的单个Ra/Rm入队到POQ中来处理,并且在分派时,也可以完成该Ra/Rm的单个出队。仅添加RWa而不添加RWm是特定于某些架构的优化,因为加载或存储指令将不会具有相同的源寄存器和目的地寄存器。注意,在其他实施例中,可以在POQ中定义和使用附加状态。
利用基于POQ的处理器架构,与完整的OOO处理器架构相比,可以实现显著的功率节省。特别地,由于每个微线程(uthread)在到达某个点之前会采取不同的路径通过程序,因此每个微线程的重命名状态将是不同的并且将必须分开地进行跟踪。每微线程都具有单独的重命名器将是过于昂贵的。实施例避免了需要重命名器来克服SPMD架构中的错误数据依赖关系。
现在参考图14,所示为根据本发明的实施例的方法的流程图。如图14所示,方法1400是用于在将指令分配到指令队列中时将条目插入到程序顺序队列(POQ)中的方法。由此,方法1400可以由将经解码的指令分派到指令队列中的分派器执行。在实施例中,方法1400可以由硬件电路、固件、软件、和/或其组合来执行。
如图14所图示,方法1400开始于接收用于分配到给定指令队列i中的指令(框1410)。为了本文的讨论目的,假设该指令是基于算术的指令,该指令用于被分配到ALU指令队列中。接下来,在框1420处,可以将与指令相关联的状态信息插入与针对与该指令的源操作数相关联的寄存器的POQ条目中。在具有两个不同指令队列(基于ALU的指令队列和基于存储器的指令队列)的特定实施例中,可以将状态信息编码为两个位,包括第一位和另一位,该第一位用于标识是由指令读取还是由指令写入给定寄存器,该另一位用于指示是将该指令分配给基于存储器的指令队列还是分配给基于ALU的指令队列。例如,假设在其中两个寄存器值要被加到一起的指令。在这种情况下,读取事件状态可以被入队或被插入到针对两个寄存器的相应POQ中。
进一步跟随该示例,在框1430处,可以将与指令相关联的状态信息插入与针对与该指令的目的地操作数相关联的寄存器的POQ条目中。例如,假设在其中两个寄存器值要被加在一起并存储到目的地寄存器中的上文指令。在这种情况下,写入事件状态可以被入队或被插入到针对目的地寄存器的相应POQ中。继续上文的示例,状态信息可以被编码为两个位,包括第一位和另一位,该第一位用于标识目的地寄存器要被写入,该另一位用于指示源指令队列。应理解,虽然在图14的实施例中以该高层级示出,但是许多变型和替换方案是可能的。
现在参考图15,示出的是根据本发明的另一实施例的方法的流程图。如图15所示,方法1500可以是用于至少部分地基于POQ条目中的信息从指令队列中选择和分派指令以供执行的方法,并且由此可以由将指令从指令队列分派到一个或多个执行通道的分派器或调度器执行。在实施例中,方法1500可以由硬件电路、固件、软件、和/或其组合来执行。
如所图示,方法1500开始于从给定指令队列中选择用于分派的指令(框1510)。注意,因为指令队列被实现为有序队列,所以,例如,当给定指令到达指令队列的顶部时,该操作可以由调度器电路执行。控制接下来传到菱形框1520,以确定针对任何寄存器源操作数的POQ的顶部条目是否具有与该指令队列相关联的读取事件状态。假设此状态存在,这意味着源寄存器包括根据正确的程序顺序的用于操作的适当数据值。如果不是这种情况(即,顶部条目不具有与该指令队列相关联的Ri状态),则控制传到框1540,在框1540处指令可能被停止。
仍参考图15,当确定任何寄存器源操作数的顶部条目具有与所分析的指令队列相关联的读取事件状态时,控制传递到框1530,其中,确定针对任何寄存器目的地操作数的POQ的顶部条目是否具有与该指令队列相关联的写入事件状态。假设此状态存在,这意味着目的地寄存器已准备好接收指令结果。如果不是这种情况(即,顶部条目不具有与该指令队列相关联的Wi状态),则如上文所讨论的在框1540处指令停止。
当确定针对任何寄存器源操作数的POQ的顶部条目具有与给定指令队列相关联的读取事件状态,并且针对任何寄存器目的地操作数的POQ的顶部条目具有与此指令队列相关联的写入事件状态时,该指令就准备好分派。由此,控制传到框1550,在框1550处可以分派指令以供执行。在具有SPMD架构的实施例中,可以发送该指令以供在并行执行通道中执行。另外,在框1550处,针对寄存器源操作数的POQ条目可以在此时出队。然而,注意,针对寄存器目的地操作数的任何POQ条目都保留在它们的POQ中,以防止写入后写入或读取后写入依赖关系。如本文进一步所述,这些条目可能不会被移除或出队直到指令完成。
现在参考图16,示出的是根据本发明的又一实施例的方法的流程图。在图16中,示出了用于在指令完成时处理POQ中的操作的方法1600。如所示,方法1600是用于在指令完成时更新一个或多个POQ条目的方法,并且由此可以由引退和相关的控制电路来执行。在实施例中,方法1600可以由硬件电路、固件、软件、和/或其组合来执行。
如所图示,方法1600开始于在菱形框1610处确定给定指令执行是否已经完成。在具有SPMD架构的实施例中,当所有并行执行通道已经完成指令的执行时,该确定可以是肯定的。为了跟踪该信息,在一个实施例中,跟踪器电路可以为指令保持位向量,该位向量包括用于每个执行通道的位。当每个执行通道已经完成指令时,该位向量从每个执行通道接收完成信号,使得响应于该完成信号为相应的执行通道设置位。因此,当所有位被设置时,给定指令的该位向量指示已经跨所有执行通道完成该指令。并且为了进一步标识这种情况,当位向量被完全设置时,POQ中的队列条目的顶部可以包括附加的状态位,该状态位在被设置时会标识已经跨所有执行通道完成相应的指令。因此,菱形框1610处的确定可以基于POQ的队列条目的顶部中的该完成位的设置值。当作出该确定时,控制传递到框1620,在框1620中,针对指令的任何寄存器目的地操作数的POQ条目(即队列条目的顶部)可以出队,因为指令执行结果已经完成,使得对于基于ALU的操作,结果已经写入(多个)目的地寄存器。应理解,虽然在图16的实施例中以该高层级示出,但是许多变型和替换方案是可能的。
以下示例涉及进一步的实施例。
在一个示例中,一种设备包括:多个寄存器;第一指令队列,该第一指令队列用于存储要被分派到一个或多个执行电路的第一多个指令;第二指令队列,该第二指令队列用于存储要被分派到一个或多个执行电路的第二多个指令;程序顺序队列,该程序顺序队列具有多个部分,每个部分与多个寄存器中的一个寄存器相关联,多个部分中的每一个部分包括多个条目,每个条目用于存储指令的状态,该状态包括由指令对寄存器的使用和用于指令的源指令队列的编码;以及分派器,该分派器用于至少部分地基于存储在程序顺序队列中的信息来分派来自第一指令队列的第一多个指令和来自第二指令队列的第二多个指令以供执行,以管理第一多个指令和第二多个指令之间的指令依赖关系。
在实施例中,指令依赖关系包括读取后写入依赖关系、写入后读取依赖关系和写入后写入依赖关系。
在实施例中,对于第一多个指令中的具有标识第一寄存器的第一源操作数和标识第二寄存器的目的地操作数的第一指令,程序顺序队列用于在程序顺序队列的与第一寄存器相关联的第一部分中存储读取事件状态,并在程序顺序队列的与第二寄存器相关联的第二部分中存储写入事件状态。
在实施例中,读取事件状态用于标识第一指令被存储在第一指令队列中。
在实施例中,程序顺序队列用于在将第一指令分配到第一指令队列中时存储读取事件状态和写入事件状态。
在实施例中,分派器用于:当程序顺序队列的第一部分的顶部条目包括读取事件状态并且程序顺序队列的第二部分的顶部条目包括写入事件状态时,将第一指令从第一指令队列分派到一个或多个执行电路。
在实施例中,程序顺序队列用于在第一指令完成时使程序顺序队列的第一部分的顶部条目出队。
在实施例中,分派器用于:当程序顺序队列的第一部分的顶部条目不包括读取事件状态或程序顺序队列的第二部分的顶部条目不包括写入事件状态时,停止第一指令队列中的第一指令。
在实施例中,对于第一多个指令中的具有标识第一寄存器的第一源操作数和标识第一寄存器的目的地操作数的第一指令,程序顺序队列用于在程序顺序队列的与第一寄存器相关联的第一部分中存储读取写入事件状态。
在实施例中,设备包括单程序多数据处理器,该单程序多数据处理器包括多个执行通道,每个执行通道包括一个或多个执行电路,其中多个通道中的每个通道用于执行由分派器分派的指令。
在实施例中,第一指令队列和第二指令队列包括有序队列,第一指令队列用于存储存储器指令并且第二指令队列用于存储算术指令。
在另一实施例中,方法包括:接收用于分配到处理器的第一指令队列中的第一指令,该第一指令将第一寄存器标识为第一源操作数并将第二寄存器标识为目的地操作数;使指示第一指令用于读取第一寄存器并被分配到第一指令队列中的读取事件状态入队到与第一寄存器相关联的第一程序顺序队列中;使指示第一指令用于写入第二寄存器并被分配到第一指令队列中的写入事件状态入队到与第二寄存器相关联的第二程序顺序队列中;以及基于第一程序顺序队列的至少一个条目和第二程序顺序队列的至少一个条目的内容,控制第一指令从第一指令队列向至少一个执行电路的分派。
在实施例中,该方法进一步包括:选择用于分派到至少一个执行电路的第一指令;确定第一程序顺序队列的顶部条目是否具有指示第一指令用于读取第一寄存器并被分配到第一指令队列中的读取事件状态;以及至少部分地响应于确定第一程序顺序队列的顶部条目具有指示第一指令用于读取第一寄存器并被分配到第一指令队列中的读取事件状态,将第一指令分派到至少一个执行电路。
在实施例中,该方法进一步包括:响应于将第一指令分派到至少一个执行电路,使第一程序顺序队列的顶部条目出队;以及响应于至少一个执行电路中的第一指令的完成,使第二程序顺序队列的顶部条目出队。
在实施例中,该方法进一步包括:响应于确定第一程序顺序队列的顶部条目不具有指示第一指令用于读取第一寄存器并被分配到第一指令队列中的读取事件状态,停止第一指令队列中的第一指令。
在实施例中,该方法进一步包括:确定第二程序顺序队列的顶部条目是否具有指示第一指令用于写入第二寄存器并被分配到第一指令队列中的写入事件状态;以及进一步响应于确定第二程序顺序队列的顶部条目具有指示第一指令用于写入第二寄存器并被分配到第一指令队列中的写入事件状态,将第一指令分派到至少一个执行电路。
在另一示例中,计算机可读介质包括指令,该指令用于执行如以上示例中的任一项的方法。
在进一步示例中,计算机可读介质包括数据,该数据用于由至少一个机器使用以制造至少一个集成电路来执行如以上示例中的任一项的方法。
在又进一步示例中,设备包括用于执行如以上示例中的任一项的方法的装置。
在另一个实施例中,系统包括处理器和耦合到处理器的系统存储器。该处理器包括:一个或多个执行电路,该一个或多个执行电路用于执行指令;多个寄存器;第一指令队列,该第一指令队列用于存储要被分派到一个或多个执行电路的多个存储器指令;第二指令队列,该第二指令队列用于存储要被分派到一个或多个执行电路的多个算术指令;多个程序顺序队列,每个程序顺序队列与多个寄存器中的一个寄存器相关联,其中与第一寄存器相关联的第一程序顺序队列包括多个条目,每个条目用于存储访问第一寄存器的指令的状态,并且与第二寄存器相关联的第二程序顺序队列包括多个条目,每个条目用于存储访问第二寄存器的指令的状态,状态包括由指令对寄存器的使用和用于指令的源指令队列的编码;以及分派器,该分派器用于至少部分地基于存储在第一程序顺序队列和第二程序顺序队列中的信息,将算术指令从第二指令队列分派到一个或多个执行电路以供执行,其中该算术指令用于访问第一寄存器和第二寄存器。
在实施例中,该指令的状态包括用于标识由指令对相关联的寄存器的使用以及指令的源指令队列的编码。
在实施例中,对寄存器的使用包括读取/写入使用。
在实施例中,分派器用于:当第一程序顺序队列的顶部条目包括用于指示算术指令用于读取第一寄存器的读取事件状态,并且第二程序顺序队列的顶部条目包括用于指示算术指令用于写入第二寄存器的写入事件状态时,将算术指令从第二指令队列分派到一个或多个执行电路,第一寄存器包括算术指令的源操作数,并且第二寄存器包括算术指令的目的地操作数。
应理解,以上示例的各种组合是可能的。
注意,术语“电路”和“电路系统”在本文中可互换地使用。如本文中所示用,这些术语以及术语“逻辑”用来单独地或以任何组合指代模拟电路、数字电路、硬连线电路、可编程电路、处理器电路、微控制器电路、硬件逻辑电路、状态机电路和/或任何其他类型的物理硬件组件。实施例可在许多不同类型的系统中使用。例如,在一个实施例中,可以将通信设备布置为用于执行本文中所描述的各种方法和技术。当然,本发明的范围不限于通信设备,并且相反,其他实施例可以涉及用于处理指令的其他类型的装置、或者一种或多种机器可读介质,该机器可读介质包括指令,响应于在计算设备上执行这些指令,这些指令使该设备实行本文中所描述的方法与技术中的一者或多者。
实施例可被实现在代码中,并且可被存储在非暂态存储介质上,该非暂态存储介质具有存储于其上的指令,这些指令可以被用于将系统编程为用于执行这些指令。实施例还可被实现在数据中,并且可被存储在非暂态存储介质上,该非暂态存储介质如果被至少一个机器使用则使得该至少一个机器制造至少一个集成电路以执行一个或多个操作。更进一步的实施例可以在包括信息的计算机可读存储介质中实现,所述计算机可读存储介质当被制造在SoC或其他处理器中时将SoC或其他处理器配置为执行一个或多个操作。该存储介质可包括但不限于:任何类型的盘,包括软盘、光盘、固态驱动器(SSD)、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)与静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);磁卡或光卡;或适用于存储电子指令的任何其他类型的介质。
尽管已参照有限数量的实施例描述了本发明,但是本领域技术人员将从其中领会很多修改和变型。所附权利要求旨在涵盖落入本发明的真实精神与范围的所有此类修改与变型。
Claims (25)
1.一种用于管理指令依赖关系的设备,所述设备包括:
多个寄存器;
第一指令队列,所述第一指令队列用于存储要被分派到一个或多个执行电路的第一多个指令;
第二指令队列,所述第二指令队列用于存储要被分派到所述一个或多个执行电路的第二多个指令;
程序顺序队列,所述程序顺序队列具有多个部分,每个部分与所述多个寄存器中的一者相关联,所述多个部分中的每个部分包括多个条目,每个条目用于存储指令的状态,所述状态包括由所述指令对寄存器的使用和用于所述指令的源指令队列的编码;以及
分派器,所述分派器用于至少部分地基于存储在所述程序顺序队列中的信息来分派来自所述第一指令队列的所述第一多个指令和来自所述第二指令队列的所述第二多个指令以供执行,以管理所述第一多个指令和所述第二多个指令之间的指令依赖关系。
2.如权利要求1所述的设备,其特征在于,所述指令依赖关系包括读取后写入依赖关系、写入后读取依赖关系和写入后写入依赖关系。
3.如权利要求1所述的设备,其特征在于,对于所述第一多个指令中的具有标识第一寄存器的第一源操作数和标识第二寄存器的目的地操作数的第一指令,所述程序顺序队列用于在所述程序顺序队列的与所述第一寄存器相关联的第一部分中存储读取事件状态,并在所述程序顺序队列的与所述第二寄存器相关联的第二部分中存储写入事件状态。
4.如权利要求3所述的设备,其特征在于,所述读取事件状态用于标识所述第一指令被存储在所述第一指令队列中。
5.如权利要求3所述的设备,其特征在于,所述程序顺序队列用于在将所述第一指令分配到所述第一指令队列中时存储所述读取事件状态和所述写入事件状态。
6.如权利要求3所述的设备,其特征在于,所述分派器用于:当所述程序顺序队列的所述第一部分的顶部条目包括所述读取事件状态并且所述程序顺序队列的所述第二部分的顶部条目包括所述写入事件状态时,将所述第一指令从所述第一指令队列分派到所述一个或多个执行电路。
7.如权利要求6所述的设备,其特征在于,所述程序顺序队列用于在所述第一指令完成时使所述程序顺序队列的所述第一部分的所述顶部条目出队。
8.如权利要求6所述的设备,其特征在于,所述分派器用于:当所述程序顺序队列的所述第一部分的所述顶部条目不包括所述读取事件状态或所述程序顺序队列的所述第二部分的所述顶部条目不包括所述写入事件状态时,停止所述第一指令队列中的所述第一指令。
9.如权利要求1所述的设备,其特征在于,对于所述第一多个指令中的具有标识第一寄存器的第一源操作数和标识所述第一寄存器的目的地操作数的第一指令,所述程序顺序队列用于在所述程序顺序队列的与所述第一寄存器相关联的第一部分中存储读取写入事件状态。
10.如权利要求1所述的设备,其特征在于,所述设备包括单程序多数据处理器,所述单程序多数据处理器包括多个执行通道,每个执行通道包括所述一个或多个执行电路,其中所述多个通道中的每个通道用于执行由所述分派器分派的指令。
11.如权利要求1所述的设备,其特征在于,所述第一指令队列和所述第二指令队列包括有序队列,所述第一指令队列用于存储存储器指令并且所述第二指令队列用于存储算术指令。
12.一种用于管理指令依赖关系的方法,所述方法包括:
接收用于分配到处理器的第一指令队列中的第一指令,所述第一指令将第一寄存器标识为第一源操作数,并将第二寄存器标识为目的地操作数;
使指示所述第一指令用于读取所述第一寄存器并被分配到所述第一指令队列中的读取事件状态入队到与所述第一寄存器相关联的第一程序顺序队列中;
使指示所述第一指令用于写入所述第二寄存器并被分配到所述第一指令队列中的写入事件状态入队到与所述第二寄存器相关联的第二程序顺序队列中;以及
基于所述第一程序顺序队列的至少一个条目和所述第二程序顺序队列的至少一个条目的内容,控制所述第一指令从所述第一指令队列向至少一个执行电路的分派。
13.如权利要求12所述的方法,进一步包括:
选择用于分派到至少一个执行电路的所述第一指令;
确定所述第一程序顺序队列的顶部条目是否具有指示所述第一指令用于读取所述第一寄存器并被分配到所述第一指令队列中的所述读取事件状态;以及
至少部分地响应于确定所述第一程序顺序队列的所述顶部条目具有指示所述第一指令用于读取所述第一寄存器并被分配到所述第一指令队列中的所述读取事件状态,将所述第一指令分派到所述至少一个执行电路。
14.如权利要求13所述的方法,进一步包括:
响应于将所述第一指令分派到所述至少一个执行电路,使所述第一程序顺序队列的所述顶部条目出队;以及
响应于所述至少一个执行电路中的所述第一指令的完成,使所述第二程序顺序队列的所述顶部条目出队。
15.如权利要求13所述的方法,进一步包括:响应于确定所述第一程序顺序队列的所述顶部条目不具有指示所述第一指令用于读取所述第一寄存器并被分配到所述第一指令队列中的所述读取事件状态,停止所述第一指令队列中的所述第一指令。
16.如权利要求13所述的方法,进一步包括:
确定所述第二程序顺序队列的顶部条目是否具有指示所述第一指令用于写入所述第二寄存器并被分配到所述第一指令队列中的所述写入事件状态;以及
进一步响应于确定所述第二程序顺序队列的所述顶部条目具有指示所述第一指令用于写入所述第二寄存器并被分配到所述第一指令队列中的所述写入事件状态,将所述第一指令分派到所述至少一个执行电路。
17.一种计算机可读存储介质,包括计算机可读指令,所述计算机可读指令在被执行时用于实现如权利要求12至16中任一项所述的方法。
18.一种用于管理指令依赖关系的系统,所述系统包括:
处理器,所述处理器包括:
一个或多个执行电路,所述一个或多个执行电路用于执行指令;
多个寄存器;
第一指令队列,所述第一指令队列用于存储要被分派到所述一个或多个执行电路的多个存储器指令;
第二指令队列,所述第二指令队列用于存储要被分派到所述一个或多个执行电路的多个算术指令;
多个程序顺序队列,每个程序顺序队列与所述多个寄存器中的一个寄存器相关联,其中与第一寄存器相关联的第一程序顺序队列包括多个条目,每个条目用于存储访问所述第一寄存器的指令的状态,并且与第二寄存器相关联的第二程序顺序队列包括多个条目,每个条目用于存储访问所述第二寄存器的指令的状态,所述状态包括由所述指令对寄存器的使用和用于所述指令的源指令队列的编码;以及
分派器,所述分派器用于至少部分地基于存储在所述第一程序顺序队列和所述第二程序顺序队列中的信息,将算术指令从所述第二指令队列分派到所述一个或多个执行电路以供执行,其中所述算术指令用于访问所述第一寄存器和所述第二寄存器;以及
系统存储器,所述系统存储器耦合至所述处理器。
19.如权利要求18所述的系统,其特征在于,所述指令的所述状态包括用于标识由所述指令对相关联的寄存器的使用以及所述指令的源指令队列的编码。
20.如权利要求19所述的系统,其特征在于,所述对寄存器的使用包括读取/写入使用。
21.如权利要求20所述的系统,其特征在于,所述分派器用于:当所述第一程序顺序队列的顶部条目包括用于指示所述算术指令用于读取所述第一寄存器的读取事件状态,并且所述第二程序顺序队列的顶部条目包括用于指示所述算术指令用于写入所述第二寄存器的写入事件状态时,将所述算术指令从所述第二指令队列分派到所述一个或多个执行电路,所述第一寄存器包括所述算术指令的源操作数,并且所述第二寄存器包括所述算术指令的目的地操作数。
22.一种用于管理指令依赖关系的设备,所述设备包括:
多个寄存器装置;
第一指令队列装置,所述第一指令队列装置用于存储要被分派到一个或多个执行电路的第一多个指令;
第二指令队列装置,所述第二指令队列装置用于存储要被分派到所述一个或多个执行电路的第二多个指令;
程序顺序队列装置,所述程序顺序队列装置具有多个部分,每个部分与所述多个寄存器装置中的一个寄存器装置相关联,所述多个部分中的每个部分包括多个条目,每个条目用于存储指令的状态,所述状态包括由所述指令对寄存器装置的使用和用于所述指令的源指令队列装置的编码;以及
分派器装置,所述分派器装置用于至少部分地基于存储在所述程序顺序队列装置中的信息来分派来自所述第一指令队列装置的所述第一多个指令和来自所述第二指令队列装置的所述第二多个指令以供执行,以管理所述第一多个指令和所述第二多个指令之间的指令依赖关系。
23.如权利要求22所述的设备,其特征在于,所述指令依赖关系包括读取后写入依赖关系、写入后读取依赖关系和写入后写入依赖关系。
24.如权利要求22所述的设备,其特征在于,对于所述第一多个指令中的具有标识第一寄存器装置的第一源操作数和标识第二寄存器装置的目的地操作数的第一指令,所述程序顺序队列装置用于在所述程序顺序队列装置的与所述第一寄存器装置相关联的第一部分中存储读取事件状态,并在所述程序顺序队列装置的与所述第二寄存器装置相关联的第二部分中存储写入事件状态。
25.如权利要求24所述的设备,其特征在于,所述读取事件状态用于标识所述第一指令被存储在所述第一指令队列装置中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/364,688 | 2019-03-26 | ||
US16/364,688 US11243775B2 (en) | 2019-03-26 | 2019-03-26 | System, apparatus and method for program order queue (POQ) to manage data dependencies in processor having multiple instruction queues |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111752617A true CN111752617A (zh) | 2020-10-09 |
Family
ID=69191899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010119351.XA Pending CN111752617A (zh) | 2019-03-26 | 2020-02-26 | 用于poq的系统、设备和方法以管理具有多个指令队列的处理器中的数据依赖关系 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11243775B2 (zh) |
EP (1) | EP3716056B1 (zh) |
CN (1) | CN111752617A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022121683A1 (en) * | 2020-12-11 | 2022-06-16 | International Business Machines Corporation | Identifying dependencies in control sequence for execution on hardware accelerator |
CN114780148A (zh) * | 2022-06-17 | 2022-07-22 | 飞腾信息技术有限公司 | 一种系统寄存器访问指令的执行方法、装置及电子设备 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112486638A (zh) * | 2019-09-11 | 2021-03-12 | 百度时代网络技术(北京)有限公司 | 用于执行处理任务的方法、装置、设备和存储介质 |
US11500641B2 (en) * | 2020-10-07 | 2022-11-15 | Huawei Technologies Co., Ltd. | Devices, methods, and media for efficient data dependency management for in-order issue processors |
US11500642B2 (en) | 2020-11-10 | 2022-11-15 | International Busines Machines Corporation | Assignment of microprocessor register tags at issue time |
CN112579272B (zh) * | 2020-12-07 | 2023-11-14 | 海光信息技术股份有限公司 | 微指令分发方法、装置、处理器和电子设备 |
US11709676B2 (en) | 2021-08-19 | 2023-07-25 | International Business Machines Corporation | Inferring future value for speculative branch resolution |
CN115269008B (zh) * | 2022-09-29 | 2023-02-28 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、装置、介质及电子设备 |
CN115840593A (zh) * | 2023-02-13 | 2023-03-24 | 飞腾信息技术有限公司 | 处理器中的执行部件的验证方法及装置、设备、存储介质 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5193166A (en) | 1989-04-21 | 1993-03-09 | Bell-Northern Research Ltd. | Cache-memory architecture comprising a single address tag for each cache memory |
US5471593A (en) * | 1989-12-11 | 1995-11-28 | Branigin; Michael H. | Computer processor with an efficient means of executing many instructions simultaneously |
US5717882A (en) | 1994-01-04 | 1998-02-10 | Intel Corporation | Method and apparatus for dispatching and executing a load operation to memory |
US5826052A (en) | 1994-04-29 | 1998-10-20 | Advanced Micro Devices, Inc. | Method and apparatus for concurrent access to multiple physical caches |
KR100255510B1 (ko) | 1997-05-09 | 2000-05-01 | 김영환 | 원포트램셀구조로이루어진캐시데이터램 |
US6859861B1 (en) | 1999-01-14 | 2005-02-22 | The United States Of America As Represented By The Secretary Of The Army | Space division within computer branch memories |
US7424576B2 (en) | 2001-05-02 | 2008-09-09 | Intel Corporation | Parallel cachelets |
US7904905B2 (en) * | 2003-11-14 | 2011-03-08 | Stmicroelectronics, Inc. | System and method for efficiently executing single program multiple data (SPMD) programs |
US20100161901A9 (en) | 2005-04-14 | 2010-06-24 | Arm Limited | Correction of incorrect cache accesses |
CN101292227B (zh) | 2005-10-19 | 2010-11-03 | Nxp股份有限公司 | 具有高访问存储带宽的高速缓冲存储器 |
CN102736986A (zh) | 2011-03-31 | 2012-10-17 | 国际商业机器公司 | 一种内容可寻址存储器及其检索数据的方法 |
US9760492B2 (en) | 2014-11-21 | 2017-09-12 | Mediatek Singapore Pte. Ltd. | Method for controlling access of cache through using programmable hashing address and related cache controller |
US10628320B2 (en) | 2016-06-03 | 2020-04-21 | Synopsys, Inc. | Modulization of cache structure utilizing independent tag array and data array in microprocessor |
US20180189179A1 (en) | 2016-12-30 | 2018-07-05 | Qualcomm Incorporated | Dynamic memory banks |
US11093250B2 (en) | 2018-09-29 | 2021-08-17 | Intel Corporation | Apparatus and method for gang invariant operation optimizations using dynamic evaluation |
-
2019
- 2019-03-26 US US16/364,688 patent/US11243775B2/en active Active
-
2020
- 2020-01-24 EP EP20153492.2A patent/EP3716056B1/en active Active
- 2020-02-26 CN CN202010119351.XA patent/CN111752617A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022121683A1 (en) * | 2020-12-11 | 2022-06-16 | International Business Machines Corporation | Identifying dependencies in control sequence for execution on hardware accelerator |
GB2617494A (en) * | 2020-12-11 | 2023-10-11 | Ibm | Identifying dependencies in control sequence for execution on hardware accelerator |
CN114780148A (zh) * | 2022-06-17 | 2022-07-22 | 飞腾信息技术有限公司 | 一种系统寄存器访问指令的执行方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
US11243775B2 (en) | 2022-02-08 |
EP3716056B1 (en) | 2022-12-21 |
US20200310815A1 (en) | 2020-10-01 |
EP3716056A1 (en) | 2020-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3716056B1 (en) | Apparatus and method for program order queue (poq) to manage data dependencies in processor having multiple instruction queues | |
US10235175B2 (en) | Processors, methods, and systems to relax synchronization of accesses to shared memory | |
JP5372929B2 (ja) | 階層マイクロコードストアを有するマルチコアプロセッサ | |
US10678541B2 (en) | Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions | |
US10095623B2 (en) | Hardware apparatuses and methods to control access to a multiple bank data cache | |
US11188341B2 (en) | System, apparatus and method for symbolic store address generation for data-parallel processor | |
US20210374848A1 (en) | Systems, Apparatuses, and Methods for Resource Bandwidth Enforcement | |
US10896141B2 (en) | Gather-scatter cache architecture having plurality of tag and data banks and arbiter for single program multiple data (SPMD) processor | |
EP3519949A2 (en) | System and method for load balancing in out-of-order clustered decoding | |
US20150006851A1 (en) | Instruction order enforcement pairs of instructions, processors, methods, and systems | |
EP4020189A1 (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 | |
CN114253607A (zh) | 用于由集群化解码流水线对共享微代码定序器的乱序访问的方法、系统和装置 | |
WO2018005718A1 (en) | System and method for out-of-order clustered decoding | |
EP3757772A1 (en) | System, apparatus and method for a hybrid reservation station for a processor | |
US20220100569A1 (en) | Methods, systems, and apparatuses for scalable port-binding for asymmetric execution ports and allocation widths of a processor | |
US20210200538A1 (en) | Dual write micro-op queue | |
CN115858022A (zh) | 集群化解码管线的可缩放切换点控制电路系统 | |
US20160378497A1 (en) | Systems, Methods, and Apparatuses for Thread Selection and Reservation Station Binding |
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 |