CN111095203A - 实时寄存器值的集群间通信 - Google Patents

实时寄存器值的集群间通信 Download PDF

Info

Publication number
CN111095203A
CN111095203A CN201880055116.1A CN201880055116A CN111095203A CN 111095203 A CN111095203 A CN 111095203A CN 201880055116 A CN201880055116 A CN 201880055116A CN 111095203 A CN111095203 A CN 111095203A
Authority
CN
China
Prior art keywords
instruction
processor
entry
cache
value
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
Application number
CN201880055116.1A
Other languages
English (en)
Inventor
S·佩迪亚迪塔基
E·舒克曼
R·巴苏罗伊乔杜里
M·舍韦古尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN111095203A publication Critical patent/CN111095203A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent 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/3891Concurrent 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/282Partitioned cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

描述了用于实时寄存器值的集群间通信的装置、方法和系统的实施例。在一个实施例中,处理器包括多个执行集群。该处理器还包括高速缓冲存储器,在该高速缓冲存储器中存储将由多个执行集群的第一执行集群产生并由多个执行集群的第二执行集群消耗的值。高速缓存存储器与系统存储器层次结构和处理器的寄存器组分离。

Description

实时寄存器值的集群间通信
技术领域
发明领域一般涉及计算机体系结构。
背景技术
计算机或其他信息处理系统中的处理器可以用集群(cluster)微体系结构来实现,在集群微体系结构中,在流水线的一个或多个阶段中使用的资源被划分为单独的集群。在这样的微体系结构中,一个集群执行的指令可以取决于将由另一集群执行的另一指令产生的寄存器值。在这种情况下,前一条指令可以被称为消耗者,后一条指令可以被称为产生者,而寄存器值可以被称为实时寄存器值,因为它在处理器中被使用或存活,并影响后续操作(算术和内存)的结果。相反,无效寄存器值不会影响任何后续操作。集群之间的通信,例如从一个集群中的产生者到另一不同集群中的消耗者的实时寄存器值的通信可以称为集群间通信。
附图说明
在附图的各图中,通过示例而非限制的方式示出了本发明,其中相似的附图标记指示相似的元件,并且其中:
图1是示出具有集群的微体系结构的处理器的框图;
图2是示出根据本发明的实施例的具有集群的微体系结构和实时高速缓存的处理器的框图;
图3是示出根据本发明的实施例的用于使用实时高速缓存的方法的流程图;
图4A是示出根据本发明的实施例的示例性有序流水线和示例性寄存器重命名、无序发布/执行流水线的框图;
图4B是示出根据本发明实施例的处理器中包括的有序体系结构核心和示例性寄存器重命名、无序发布/执行体系结构核心的示例性实施例的示例性框图;
图5是根据本发明的实施例的处理器的框图,该处理器可以具有多个核心,可以具有集成的存储器控制器,并且可以具有集成的图形;
图6是根据本发明的一个实施例的系统的框图;
图7是根据本发明的实施例的第一更具体的示例性系统的框图;
图8是根据本发明的实施例的第二更具体的示例性系统的框图;和
图9是根据本发明的实施例的SoC的框图。
具体实施方式
在下面的描述中,可以阐述诸如组件和系统配置的许多具体细节,以便提供对本发明的更透彻的理解。然而,本领域的技术人员将理解,可以在没有这种具体细节的情况下实践本发明。另外,未详细示出一些众所周知的结构、电路和其他特征,以避免不必要地使本发明变得不清楚。
引用“一个实施例”、“一种实施例”、“示例实施例”、“各种实施例”等表示如此描述的本发明的实施例可以包括特定的特征、结构或特性,但是多于一个的实施例可以而且不是每个实施例都必须包括特征、结构或特性。一些实施例可以具有其他实施例所描述的某些或全部特征或没有其他实施例所描述的特征。此外,这样的短语不一定指相同的实施例。当结合实施例描述特定的特征、结构或特性时,可以认为,无论是否明确地描述,都可以在本领域技术人员的知识范围内结合其他实施例实现这种特征、结构或特性。
如本说明书和权利要求书中所使用的,除非另有说明,否则使用序数形容词“第一”、“第二”、“第三”等来描述元件仅表示一个元件的特定实例或所指的类似元件的不同实例,并不意味着暗示如此描述的元件必须在时间、空间、等级或任何其他方式上处于特定顺序。
此外,术语“位”、“标志”、“字段”、“条目”、“指示符”等可用于描述无论是以硬件还是软件来实现的寄存器、表格、数据库或其他数据结构中存储位置的任何类型或内容,但并不意味着将本发明的实施例限于任何特定类型的存储位置或任何特定存储位置内的位数或其他元素。术语“清除”可用于指示存储或以其他方式导致逻辑值0存储在存储位置中,术语“设置”可用于指示存储或以其他方式导致逻辑值1、全1或存储在存储位置中的某些其他指定值;然而,这些术语并不意味着将本发明的实施例限制为任何特定的逻辑约定,因为可以在本发明的实施例内使用任何逻辑约定。
此外,如在本发明的实施例的描述中所使用的,术语之间的“/”字符可以表示实施例可以包括第一术语和/或第二术语,或者使用、利用和/或根据第一术语和/或第二术语实现(和/或任何其他附加术语)。
本发明的实施例提供了用于实时寄存器值的集群间通信的技术。基于其他集群间通信技术的复杂性、能力和/或性能,例如寄存器的重命名,产生者值的广播和寄存器复制操作的插入,实施例的使用可能期望和/或优选地减少集群间通信的延迟。实施例的使用可以提供较小的物理寄存器文件大小和较低复杂度的寄存器重命名。
图1是示出具有集群微体系结构的处理器1 00的框图,该集群微体系结构包括前端101和执行集群102、103、104、105和106。每个执行集群102、103、104和105可以被配置为执行整数指令,执行集群106可以被配置为执行浮点和/或向量(VEX)指令。如图1所示,处理器100描绘了具有四个集群的集群微体系结构的一种可能的配置。具有任意数量的集群并且具有每个集群中的任意数量的元件的集群微体系结构的许多其他配置是可能的。根据本发明的实施例的实时高速缓存可以包括在这些不同集群微体系结构的任何一个中。
前端101包括下一指令指针(NIP)110,其耦接到分支预测单元(BPU)112,分支预测单元耦接到提取管道122和提取管道124。提取管道122包括已解码数据流缓冲器(DSB)122A和微指令翻译引擎(MITE)122B,提取管道124包括DSB 124A和MITE 124B,并且提取管道122和提取管道124都耦接到微定序器(MS)120。提取管道122也耦接到扫描单元132以用于来自提取管道122的指令的实时检测和指令块形成,并且提取管道124还耦接至扫描单元134以用于来自提取管道124的指令的实时检测和指令块形成。扫描单元122耦接到指令解码队列(IDQ)142和IDQ 143,并且扫描单元124耦接到IDQ 144和IDQ 145。
前端101可以提取、扫描和解码指令,并作为输出生成从原始指令解码的,或以其他方式反映或从原始指令衍生的一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号。可以使用各种不同的机制来实现解码。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。
IDQS 142、143、144和145被分别耦接到分配器152、153、154和155,分配器152、153、154和155的每一个可以包括寄存器别名表(RAT)和/或重排序缓冲器(ROB)。分配器152耦接到预留站(RS)/物理寄存器文件(PRF)162,分配器153耦接到RS/PRF 163和VEX RS/PRF166,分配器154耦接到RS/PRF 164和VEX RS/PRF 166,并且分配器155耦接到RS/PRF165。RS/PRF162耦接到执行栈172,RS/PRF 163耦接到执行栈173,RS/PRF 164耦接到执行栈174,RS/PRF165耦接到执行栈175,并且VEX RS/PRF 166耦接到执行栈176。每个执行栈172、173、174、175和176耦接到存储器层次结构180,存储器层次结构可以在与处理器100的同一芯片上包括1级或多级高速缓存存储器。
在处理器100中,用于实时寄存器值的集群间通信的已知方法可以包括产生集群间寄存器请求150的分配器152、153、154或155,该集群间寄存器请求通过从RS/PRF 162、163、164、165或166到另一个RS/PRF 162、163、164、165或166的集群间寄存器值160的传输来实现。根据这种方法,集群中的物理寄存器文件条目分配给不同集群中产生的实时值。
图2是示出根据本发明的实施例的具有集群微体系结构和实时高速缓存的处理器200的框图。图3是示出根据本发明的实施例的用于使用诸如图2所示的实时高速缓存的方法300的流程图。分别如下所述的图4至图9还示出了包括本发明的实施例的处理器和系统,其中处理器490、500、610、615、770、780和910以及系统600、700、800和900可以包括图1的处理器200中示出的任何或所有框和/或元件,可以根据图2和3中的描述的技术和/或方法操作该框和/或元件。
处理器200可以表示硬件组件的全部或一部分,处理器包括集成在单个基板上或封装在单个封装中的一个或多个处理器,每个处理器可以以任何组合包括多个执行线程和/或多个执行核心。表示为处理器200或在处理器200中表示的每个处理器可以是任何类型的处理器,包括通用微处理器(例如,
Figure BDA0002391180370000051
酷睿TM处理器家族中的处理器或
Figure BDA0002391180370000052
Figure BDA0002391180370000053
公司或另一家公司的其他处理器家族中的处理器)、专用处理器或微控制器、或可以实现本发明实施例的信息处理系统中任何其他设备或组件。处理器200和/或处理器200内的任何核心可以被构造和设计为根据任何指令集体系结构进行操作。
在图2中,处理器200具有包括前端201和执行集群202、203、204、205和206的集群微体系结构。如图2所示,处理器200描绘了的集群微体系结构的一种可能配置。具有任何数量的集群并且具有每个集群内的任何数量的元件的集群微体系结构的许多其他配置是可能的。根据本发明的实施例的实时高速缓存可以包括在这些不同的集群微体系结构的任何一个中。
前端201包括NIP 210,NIP 210耦接到BPU 212,该BPU 212耦接到提取管道222和提取管道224。提取管道222包括DSB 222A和MITE 222B,提取管道224包括DSB 224A和MITE224B,提取管道222和提取管道224都耦接到MS220。提取管道222也耦接到扫描单元232,用于来自提取管道222的指令的实时检测和指令块形成,并且提取管道224也被耦接到扫描单元234,用于来自提取管道224的指令的实时检测和指令块形成。扫描单元222耦接到IDQ242和IDQ 243,扫描单元224连接到IDQ 244和IDQ 245。
前端101可以提取、扫描和解码指令,并作为输出生成从原始指令解码的,或以其他方式反映或从原始指令衍生的一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号。可以使用各种不同的机制来实现解码。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。
IDQS 242、243、244和245被分别耦接到分配器252、253、254和255,分配器252、253、254和255的每一个可以包括RAT和/或ROB。分配器252耦接到RS/PRF 262,分配器253耦接到RS/PRF 263和VEX RS/PRF 266,分配器254耦接到RS/PRF 264和VEX RS/PRF 266,并且分配器255耦接到RS/PRF265。RS/PRF262耦接到执行栈272,RS/PRF 263耦接到执行栈273,RS/PRF 264耦接到执行栈274,RS/PRF265耦接到执行栈275,并且VEX RS/PRF 266耦接到执行栈276。每个执行栈272、273、274、275和276耦接到存储器层次结构280,存储器层次结构可以在与处理器200的同一芯片上包括1级或多级高速缓存存储器。
在处理器200中,根据本发明的实施例的用于实时寄存器值的集群间通信的新方法可以包括产生由从实时高速缓存(LINC)290中读取实时值的执行堆栈272、273、273、274或275实现的集群间寄存器请求250的扫描单元222或224。
LINC 290可以是任何类型的高速缓存存储器,其提供单独的命名空间(例如,用于寄存器值的容器,该寄存器值与物理寄存器文件和/或系统存储器的各种层级不同,并且可以独立于物理寄存器文件和/或系统存储器的各种层级进行寻址和访问),在命名空间中用于存储实时寄存器值。每个LINC条目还存储一个就绪位(或其他指示符),以指示已生成实时寄存器值并将其存储在LINC 290中。可以按下文所述使用就绪位。用于实时寄存器值和就绪位的一个或多个存储结构可以物理地位于处理器的执行单元中。
每个LINC也可以包括对应的条目和/或与对应的条目相关联,在条目中存储实时标识(ID)值和用于锁定该条目的一个或多个信号量(或其他指示符)位。实时ID值可以是由产生实时寄存器值的指令块的标识符和其中存储或将要存储实时寄存器值(换句话说,即实时寄存器)的逻辑寄存器的标识符的组合形成的唯一值。用于实时寄存器值和就绪位的一个或多个存储结构可以物理地位于处理器的前端单元中:例如,锁定位可以物理地位于锁定管理器230中以提供在处理器管道的解码阶段期间锁定LINC条目。
存储在LINC 290中的实时值可以由锁定管理器230锁定以避免过早逐出(在被消耗者使用之前)。一旦知晓实时值的产生者集群(在解码和集群分配阶段之后),消耗者指令就会找到LINC条目(如果存在)并将其锁定。锁定计数器在集群间寄存器请求时递增,并在执行相应的消耗者指令时递减。当锁定位变为零时,其LINC条目将解锁,并可以根据替换策略(例如,最近使用)随意替换。作为一种优化,仅当尚未在高速缓存中分配所需的实时寄存器的LINC条目时,才发送集群间请求。如果上一条指令已经分配了实时寄存器的LINC条目,则锁定计数器会递增,但不会发送请求。由于锁定是在解码时(推测地)建立的,因此锁定计数器会响应于流水线刷新而重置。流水线刷新还会刷新LINC,以保持寄存器值的一致性。
在锁定LINC条目后,一条指令携带LINC_ID,并且指令执行被阻止,直到接收到实时值为止。当接收到实时值时,数据将写入针对该请求锁定的高速缓存条目中,并且LINC_ID用于取消阻止所有等待输入值的消耗者。每个读取该值并执行的指令都会减少其依赖的LINC条目的锁定计数器。锁定机制确保直到该条目的所有消耗者指令都已经从高速缓存中读取值之前,不会逐出有效的LINC条目。
依赖性跟踪器292跟踪指令对实时值的依赖性,并且在已经产生了它们的实时值并且在实时高速缓存中就绪时唤醒指令。依赖性跟踪器292可以用无序调度器中的额外条目来实现,以通过简单地扩展调度器矩阵来利用现有的指令解除阻止机制来跟踪对存储在LINC中的值的依赖性。因此,它不会增加用于跟踪指令依赖性的额外硬件。
图3是示出根据本发明的实施例的用于使用实时高速缓存的方法300的流程图。出于说明的目的,方法300的描述可以参考处理器200的元件;然而,然而,本发明的方法实施例不限于这些说明性的细节。
在方法300的框310中,对指令进行解码。在框312中,确定该指令的源值是实时值。在框320中,确定LINC中是否存在可用的、未锁定的条目。如果否,则方法300停留在框320中,直到一个解锁的LINC条目变为可用为止。如果是这样,则方法300在框322中继续。
在框322中,识别LINC条目。在框330中,确定所识别的LINC条目是否已经被锁定。如果是,则在框334中锁定计数器递增,并且方法300在框340中继续。如果否,则在框332中,LINC条目被锁定(例如,通过设置锁定计数器),并且发送实时请求,然后方法300在框340中继续。
框310至框334中的每个可以在处理器流水线的指令解码阶段301期间执行。
在框340中,阻止指令调度器对与LINC_ID相对应的消耗者指令的调度。在框342中,确定(例如,基于与LINC_ID相对应的就绪位)是否已经产生了源值并将其存储在与LINC_ID相对应的LINC条目中。如果否,则方法300在框342中停留直到LINC条目,直到已经产生源值并将其存储在与LINC_ID相对应的LINC条目中为止。如果是这样,则方法300在框344中继续。
在框344中,解除阻止指令调度器对与LINC_ID相对应的消耗者指令的调度。在框350中,确定指令的所有其他源值是否准备就绪。如果否,则方法300停留在框350,直到该指令的所有其他源值准备就绪。如果是这样,则方法300在框352中继续。
框340至框350中的每一个可以在处理器流水线的指令调度阶段302期间执行。
在框352中,发出指令。在方框360中,确定指令的执行是否准备好写回。如果否,则方法300停留在框360中,直到指令的执行准备好写回为止。如果是这样,则方法300在框362中继续。在框362中,锁定计数器递减,并且,如果递减锁定计数器导致锁定计数器等于零,则LINC条目将被解锁。
框352至框362中的每一个可以在处理器流水线的指令执行阶段303期间执行。
在框370中,该指令被撤消。
因此,本发明的实施例允许在流水线中更早地产生集群间寄存器请求(一旦消耗者指令已经被解码并且指令块已经被形成,使得关于产生指令的源的集群的信息被知晓,而不是在寄存器重命名和分配之后),因为该指令不需要等待逻辑到物理寄存器重命名。在一个实施例中,可以在解码之前预测实时源。
此外,由于没有在物理寄存器文件中分配集群间实时的源寄存器,因此物理寄存器文件的大小不会增加,并且没有将额外的硬件添加到重命名器以处理额外的物理寄存器。因此,可能需要根据本发明实施例的LINC,因为如果没有它,在不增加寄存器压力的情况下可能需要额外的物理寄存器来分配实时源,这使重命名器硬件复杂化,因为重命名器必须处理更多的物理寄存器。
示例性的核心体系结构、处理器和计算机体系结构
以下附图详细描述了用于实现上述实施例的示例性体系结构和系统。
处理器核心可以以不同的方式,出于不同的目的以及在不同的处理器中实现。例如,这样的核心的实现可以包括:1)旨在用于通用计算的通用有序核心;2)旨在用于通用计算的高性能通用无序核心;3)主要用于图形和/或科学(吞吐量)计算的专用核心。不同处理器的实现可以包括:1)CPU,其包括一个或多个用于通用计算的通用有序核心和/或一个或多个用于通用计算的通用无序核心;2)协处理器,包括一个或多个主要用于图形和/或科学(吞吐量)的专用核心。这样的不同处理器导致不同的计算机系统体系结构,其可以包括:1)与CPU处于独立芯片上的协处理器;2)位于与CPU相同的封装中的单独裸芯片上的协处理器;3)与CPU在同一裸芯片上的协处理器(在这种情况下,这种协处理器有时被称为专用逻辑,例如集成图形和/或科学(吞吐量)逻辑,或专用核心);以及4)芯片上的系统,该系统可以在同一裸芯片上包括所描述的CPU(有时称为应用程序核心或应用程序处理器),上述协处理器以及附加功能。接下来描述示例性核心体系结构,随后描述示例性处理器和计算机体系结构。
示例性的核心体系结构
有序和无序核心框图
图4A是示出根据本发明的实施例的示例性有序流水线和示例性寄存器重命名、无序发布/执行流水线的框图。图4B是示出了根据本发明实施例的处理器中包括的有序体系结构核心和示例性寄存器重命名、无序发布/执行体系结构核心的示例性实施例的框图。图4A-图4B中的实线框示出了有序流水线和有序核心,而可选添加的虚线框示出了寄存器重命名、无序发布/执行流水线和核心。假定有序方面是无序方面的子集,将描述无序方面。
在图4A中,处理器流水线400包括提取阶段402、长度解码阶段404、解码阶段406、分配阶段408、重命名阶段410、调度(也称为发出或发布)阶段412、寄存器读取/存储器读取阶段414、执行阶段416、写回/存储器写入阶段418、异常处理阶段422和提交阶段424。
图4B示出了处理器核心490,该处理器核心490包括耦接至执行引擎单元450的前端单元430,并且两者均耦接至存储器单元470。核心490可以是精简指令集计算(RISC)核心、复杂指令集计算(CISC)核心、超长指令字(VLIW)核心或混合或替代核心类型。作为另一种选择,核心490可以是专用核心,诸如例如网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(GPGPU)核心、图形核心等。
前端单元430包括分支预测单元432,该分支预测单元432耦接到指令高速缓存单元434,该指令高速缓存单元434耦接到指令翻译后备缓冲器(TLB)436,该指令翻译后备缓冲器436耦接到指令提取单元438,指令提取单元438耦接到解码单元440。解码单元440(或解码器)可以解码指令,并作为输出产生从原始指令解码或以其他方式反映原始指令或从原始指令衍生而来的一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号。可以使用各种不同的机制来实现解码单元440。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微码只读存储器(ROM)等。在一个实施例中,核心490包括微码ROM或为某些宏指令存储微代码的其他介质(例如,在解码单元440中或在前端单元430内)。解码单元440耦接到执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450包括耦接到退出单元454和一组一个或多个调度器单元456的重命名/分配器单元452。调度器单元456代表任何数量的不同调度器,包括保留站、中央指令窗口等。调度器单元456耦接到物理寄存器文件单元458。每个物理寄存器文件单元458代表一个或多个物理寄存器文件,不同的物理寄存器文件存储一种或多种不同的数据类型,例如标量整数、标量浮点、压缩整数、压缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一条指令的地址的指令指针)等。在一个实施例中,物理寄存器文件单元458包括向量寄存器单元、写入掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供体系结构矢量寄存器、矢量掩码寄存器和通用寄存器。物理寄存器文件单元458被退出单元454重叠,以示出可以实现寄存器重命名和无序执行的各种方式(例如,使用重新排序缓冲器和退出寄存器文件;使用将来的文件、历史缓冲区和退出寄存器文件;使用寄存器映射和寄存器池;等等)。退出单元454和物理寄存器文件单元458耦接到执行集群460。执行集群460包括一组一个或多个执行单元462和一组或更多个存储器访问单元464。执行单元462可以对各种类型的数据(例如,标量浮点、压缩整数、压缩浮点、向量整数、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或一组功能的多个执行单元,但是其他实施例可以仅包括全部执行所有功能的一个执行单元或多个执行单元。调度器单元456、物理寄存器文件单元458和执行集群460被示为可能是多个的,因为某些实施例为某些类型的数据/操作创建单独的流水线(例如,各自具有自己的调度程序单元、物理寄存器文件单元和/或执行集群的标量整数流水线、标量浮点/压缩整数/压缩浮点/向量整数/向量浮点流水线和/或存储器访问流水线-在单独的存储器访问流水线的情况下,实施仅该流水线的执行集群具有存储器访问单元464的某些实施例)。还应该理解,在使用单独的流水线的情况下,这些流水线中的一个或多个可能是无序发布/执行,而其余是有序的。
这组存储器访问单元464耦接到存储器单元470,该存储器单元470包括数据TLB单元472,该数据TLB单元472耦接到耦接到2级(L2)高速缓存单元476的数据高速缓存单元474。在示例性实施例中,存储器访问单元464可以包括加载单元、存储地址单元和存储数据单元,它们中的每一个都耦接到存储单元470中的数据TLB单元472。指令高速缓存单元434还耦接到存储器单元470中的2级(L2)高速缓存单元476。L2高速缓存单元476耦接到一个或多个其他级高速缓存,并且最终耦接到主存储器。
举例来说,示例性寄存器重命名、无序发布/执行核心体系结构可以如下实现流水线400:1)指令提取438执行提取和长度解码阶段402和404;2)解码单元440执行解码阶段406;3)重命名/分配器单元452执行分配阶段408和重命名阶段410;4)调度器单元456执行调度阶段412;5)物理寄存器文件单元458和存储器单元470执行寄存器读取/存储器读取阶段414;执行集群460实施执行阶段416;6)存储器单元470和物理寄存器文件单元458执行写回/存储器写入阶段418;7)异常处理阶段422中可能涉及各种单元;以及8)退出单元454和物理寄存器文件单元458执行提交阶段424。
核心490可以支持包括本文所述指令的一个或多个指令集(例如x86指令集(某些扩展已添加到较新版本中);加利福尼亚州桑尼维尔(Sunnyvale CA)的MIPS Technologies的MIPS指令集;加利福尼亚州桑尼维尔的ARM Holdings的ARM指令集(具有例如NEON的可选的附加扩展))。在一个实施例中,核心490包括支持压缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,从而允许使用压缩数据来执行许多多媒体应用所使用的操作。
应该理解,核心可以支持多线程(执行两个或多个并行的操作集或线程集),并且可以以多种方式执行,多种方式包括时间切片多线程、同时多线程(其中单个物理核心为该物理核心同时多线程的每个线程提供逻辑核心)或其组合(例如,诸如在
Figure BDA0002391180370000121
超线程技术中的时间切片的提取和解码以及此后的同时多线程)。
尽管在无序执行的上下文中描述了寄存器重命名,但是应当理解,寄存器重命名可以在有序体系结构中使用。尽管处理器的所示实施例还包括单独的指令和数据高速缓存单元434/474以及共享的L2高速缓存单元476,但是替代实施例可以具有用于指令和数据的单个内部高速缓存,例如1级(L1)内部缓存,或多级的内部高速缓存。在一些实施例中,系统可以包括内部高速缓存和在核心和/或处理器外部的外部高速缓存的组合。可替代地,所有高速缓存可以在核心和/或处理器的外部。
图5是根据本发明的实施例的处理器500的框图,该处理器500可以具有一个以上的核心,可以具有集成的存储器控制器,并且可以具有集成的图形。图5中的实线框示出了具有单核心502A、系统代理510、一组一个或多个总线控制器单元516的处理器500,而可选添加的虚线框示出了具有多核心502A-N、系统代理单元510中的一组一个或多个集成存储器控制器单元514和专用逻辑508的替代处理器500。
因此,处理器500的不同实现方式可以包括:1)具有专用逻辑508的CPU,该专用逻辑508是集成的图形和/或科学(吞吐量)逻辑(可以包括一个或多个核心),并且核心502A-N是一个或多个通用核心(例如,通用有序核心、通用无序核心、两者的组合);2)具有核心502A-N的协处理器,核心502A-N是大量主要用于图形和/或科学(吞吐量)的专用核心;3)具有核心502A-N的协处理器,核心502A-N是大量的通用有序核心。因此,处理器500可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量多集成核心(MIC)协处理器(包括30个或更多核心)、嵌入式处理器等。处理器可以在一个或多个芯片上实现。处理器500可以是使用多种处理技术中的任何一种(诸如BiCMOS,CMOS或NMOS)的一个或多个基板的一部分和/或可以在一个或多个该基板上实现。
存储器层次结构包括核心内的一个或多个级别的高速缓存、一组或一个或多个共享的高速缓存单元506以及耦接到该组集成存储器控制器单元514的外部存储器(未示出)。该组共享高速缓存单元506可以包括一个或多个中间级别的高速缓存,例如2级(L2)、3级(L3),4级(L4)或其他级别的高速缓存、最后级别的缓存(LLC),和/或其组合。尽管在一个实施例中,基于环的互连单元512将集成图形逻辑508(集成图形逻辑508是示例性专用逻辑,并且在本文中也称为专用逻辑)、共享高速缓存单元506的组以及系统代理单元510/集成存储器控制器单元514互连,替代实施例可以使用任何数量的众所周知的技术来互连这样的单元。在一实施例中,在一个或多个高速缓存单元506与核心502-A-N之间维持一致性。
在某些实施例中,一个或多个核心502A-N能够进行多线程。系统代理510包括协调和操作核心502A-N的那些组件。系统代理单元510可以包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括用于调节核心502A-N和集成图形逻辑508的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
就体系结构指令集而言,核心502A-N可以是同质的或异质的;也就是说,两个或更多核心502A-N可能能够执行相同的指令集,而其他的可能仅能够执行该指令集的子集或不同的指令集。
示例性的计算机体系结构
图6-9是示例性计算机体系结构的框图。本领域已知的其他系统设计和配置对于膝上型计算机、台式计算机、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、手机、便携式媒体播放器、手持式设备以及各种其他电子设备也适用。通常,能够结合本文公开的处理器和/或其他执行逻辑的各种系统或电子设备通常是适用的。
现在参考图6,示出了根据本发明的一个实施例的系统600的框图。系统600可以包括一个或多个处理器610、615,处理器610、615耦接到控制器集线器620。在一个实施例中,控制器集线器620包括图形存储器控制器集线器(GMCH)690和输入/输出集线器(IOH)650(其可能在单独的芯片上);GMCH 690包括存储器和图形控制器,存储器640和协处理器645耦接到该存储器和图形控制器;IOH 650将输入/输出(I/O)设备660耦接到GMCH690。可替代地,存储器和图形控制器中的一者或两者被集成在处理器内(如本文所述),存储器640和协处理器645被直接耦接到处理器610,以及耦接到在单个芯片中具有IOH 650的控制器集线器620。
在图6中用虚线表示附加处理器615的可选性质。每个处理器610、615可以包括本文描述的一个或多个处理核心,并且可以是处理器500的某个版本。
存储器640可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或两者的组合。对于至少一个实施例,控制器集线器620经由诸如前端总线(FSB)、点对点接口(诸如快速通道互联(QuickPath Interconnect(QPI)))的多分支总线或类似的连接695与处理器610、615通信。
在一个实施例中,协处理器645是专用处理器,诸如,例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一实施例中,控制器集线器620可包括集成图形加速器。
就包括体系结构、微体系结构、热、功耗特性等价值度量谱而言,物理资源610、615之间可以存在多种不同。
在一个实施例中,处理器610执行控制一般类型的数据处理操作的指令。嵌入在指令中的可以是协处理器指令。处理器610将这些协处理器指令识别为应由附接的协处理器645执行的类型。因此,处理器610在协处理器总线或其他互连上将这些协处理器指令(或表示协处理器指令的控制信号)发布给协处理器645。协处理器645接受并执行接收到的协处理器指令。
现在参考图7,示出了根据本发明的实施例的第一更具体的示例性系统700的框图。如图7所示,多处理器系统700是点对点互连系统,并且包括经由点对点互连750耦接的第一处理器770和第二处理器780。处理器770和780中的每个可以是处理器500的某些版本。在本发明的一个实施例中,处理器770和780分别是处理器610和615,而协处理器738是协处理器645。在另一实施例中,处理器770和780分别是处理器610和协处理器645。
示出了分别包括集成存储器控制器(IMC)单元772和782的处理器770和780。处理器770还包括点对点(P-P)接口776和778作为其总线控制器单元的一部分;类似地,第二处理器780包括P-P接口786和788。处理器770、780可以使用点对点(P-P)接口电路778、788经由P-P接口750交换信息。如图7所示,IMC 772和782将处理器耦接到相应的存储器,即存储器732和存储器734,存储器732和存储器734可以是本地附接到相应处理器的主存储器的一部分。
处理器770、780每个可以使用点对点接口电路776、794、786、798经由单独的P-P接口752、754与芯片组790交换信息。芯片组790可以可选地经由高性能接口792与协处理器738交换信息。在一个实施例中,协处理器738是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。
共享高速缓存(未示出)可以被包括在任一处理器中或在两个处理器之外,但是还经由P-P互连与处理器连接,从而如果将处理器置于低功率模式,可以将处理器中的一个或两个处理器的本地高速缓存信息存储在共享高速缓存中。
芯片组790可以经由接口796耦接到第一总线716。在一个实施例中,第一总线716可以是外围组件互连(PCI)总线,或者是诸如PCIExpress总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图7所示,各种I/O设备714与总线桥718一起耦接到第一总线716,该总线桥718将第一总线716耦接到第二总线720。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器715,耦接至第一总线716。在一个实施例中,第二总线720可以是低引脚数(LPC)总线。在一个实施例中,包括例如键盘和/或鼠标722、通信设备727和诸如磁盘驱动器或其他大容量存储设备之类的存储单元728的各种设备可以耦接到第二总线720,存储单元728可以包括指令/代码和数据730。此外,音频I/O 724可以耦接到第二总线720。应注意,其他体系结构也是可能的。例如,代替图7的点对点体系结构,系统可以实现多分支总线或其他这样的体系结构。
现在参考图8,示出了根据本发明的实施例的第二更具体的示例性系统800的框图。图7和8中的相似元件具有相似的附图标记,并且从图8中省略了图7的某些方面,以避免使图8的其他方面不清楚。
图8示出了处理器770、780可以分别包括集成存储器772和I/O控制逻辑(“CL”)782。因此,CL 772、782包括集成存储器控制器单元,并且包括I/O控制逻辑。图8示出不仅存储器732、734耦接到CL772、782,而且I/O设备814也耦接到控制逻辑772、782。传统I/O设备815耦接到芯片组790。
现在参考图9,示出了根据本发明实施例的SoC 900的框图。图5中的相似元件具有相似的附图标记。此外,虚线框是更高级SoC上的可选功能。在图9中,互连单元902耦接到应用处理器910,应用处理器910包括一组一个或多个核心502A-N和共享高速缓存单元506,核心502A-N包括高速缓存单元504A-N;互连单元902还耦接到系统代理单元510;总线控制器单元516;集成存储器控制器单元514;可以包括集成的图形逻辑、图像处理器、音频处理器和视频处理器的一组或一个或多个协处理器920;静态随机存取存储器(SRAM)单元930;直接存储器访问(DMA)单元932;和用于耦接到一个或多个外部显示器的显示单元940。在一个实施例中,协处理器920包括专用处理器,例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
本文公开的机制的实施例可以以硬件、软件、固件或这种实现方法的组合来实现。本发明的实施例可以被实现为在可编程系统上执行的计算机程序或程序代码,可编程系统包括至少一个处理器、存储器系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输入设备。
诸如图7中所示的代码730之类的程序代码可以应用于输入指令以执行本文所述的功能并生成输出信息。可以以已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器的处理器的任何系统。
可以以高级程序化或面向对象的编程语言来实现程序代码,以与处理系统进行通信。如果需要,程序代码也可以用汇编或机器语言来实现。实际上,本文描述的机制的范围不限于任何特定的编程语言。在任何情况下,语言都可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性指令来实现,该指令表示处理器内的各种逻辑,当机器读取该指令时,该指令使机器制造逻辑以执行本文所述的技术。可以将这种称为“IP核心”的表示存储在有形的机器可读介质上,并提供给各种客户或制造设施,以加载到实际制造逻辑的制造机器或处理器中。
这样的机器可读存储介质可以包括但不限于由机器或设备制造或形成的制品的非暂时性有形排列,包括诸如硬盘、包括软盘、光碟、光盘只读存储器(CD-ROM)、可擦写光盘(CD-RW)和磁光盘的任何其他类型的磁盘的存储介质、诸如只读存储器(ROM)的半导体设备、诸如动态随机存取存储器(DRAM)的随机存取存储器(RAM)、静态随机存取存储器(SRAM)、可擦可编程只读存储器(EPROM)、闪存存储器、电可擦可编程只读存储器(EEPROM)、相变存储器(PCM)、磁卡或光卡或任何其他适合存储电子指令的介质。
因此,本发明的实施例还包括非暂时性有形机器可读介质,其包含指令或包含设计数据,诸如硬件描述语言(HDL),硬件描述语言(HDL)定义了本文描述的结构、电路、装置、处理器和/或系统特征。这样的实施例也可以被称为程序产品。
在一个实施例中,处理器可以包括多个执行集群。该处理器还包括高速缓冲存储器,在该高速缓冲存储器中存储由多个执行集群的第一执行集群产生并由多个执行集群的第二执行集群消耗的值。高速缓存存储器与系统存储器层次结构和处理器的寄存器组分离。
处理器还可以包括扫描单元,以检测该值将由第一指令产生并由第二指令消耗;在高速缓冲存储器中分配一个用于存储值的条目;并将该条目的标识符分配给第二指令。该条目可以包括第一字段,在第一字段中存储将向其分配该值的寄存器的标识符。该条目还可以包括第二字段,在第二字段中存储就绪指示符以指示该值已经由第一指令产生并存储在该条目中。该条目还可以包括第三字段,在第三字段中存储指示该条目被锁定的锁定指示符。处理器还可包括锁定管理器,用于管理锁定指示符,以防止该值被第二指令消耗之前逐出该条目。扫描单元还可以检测该值将被第三指令消耗。在高速缓冲存储器中找到该条目;并将该条目的标识符分配给第三指令。锁定管理器还可以管理锁定指示符,以防止在该值被第三指令消耗之前逐出该条目。处理器还可以包括依赖性跟踪器,以阻止第二指令的调度,直到设置了就绪指示符为止。
在一个实施例中,一种方法可以包括:由处理器的扫描单元来检测第一指令产生由第二指令消耗的值;在处理器的高速缓冲存储器中分配用于存储该值的条目,该高速缓冲存储器与系统存储器层次结构和处理器的寄存器组分离;将条目的标识符分配给第二指令。
该方法还可以包括响应于将条目的标识符分配给第二指令而递增锁定计数器。该方法还可以包括:由扫描单元检测到第三指令也将消耗该值;在高速缓冲存储器中查找该条目;并将该条目的标识符分配给第三指令。该方法还可以包括响应于将条目的标识符分配给第三指令而递增锁定计数器。该方法还可包括由依赖性跟踪器阻止第二指令被调度,直到该值已经由第一指令产生并存储在条目中为止。该方法还可以包括由处理器的第一执行集群执行第一指令;将该值存储在条目中;以及在条目中设置就绪指示符。该方法还可以包括:响应于设置就绪指示符,由依赖性跟踪器解除阻止第二指令;由处理器的第二执行集群执行第二指令;以及递减锁定指示符。该方法还可以包括执行第三指令;以及递减锁定指示符。该方法还可以包括确定锁定计数器等于零;以及从高速缓存中逐出该条目。
在一个实施例中,一种设备可以包括用于执行上文任何方法的装置。在一个实施例中,机器可读的有形介质可以存储指令,当指令由机器执行时,该指令使机器执行上述任一种方法。
在一个实施例中,一种系统可以包括具有层级的层次结构的系统存储器和包括多个执行集群的处理器;在系统存储器的层级的层次结构中的第一高速缓冲存储器;其中存储由多个执行集群的第一执行集群产生并由多个执行集群的第二执行集群消耗的值的第二高速缓冲存储器,第二高速缓冲存储器与第一高速缓冲存储器以及系统存储器层次结构的所述层级的层次结构分离。
系统还可以包括与第二高速缓冲存储器分离的物理寄存器文件。

Claims (25)

1.一种处理器,包括:
多个执行集群;和
高速缓冲存储器,在所述高速缓冲存储器中存储由所述多个执行集群的第一执行集群产生并由所述多个执行集群的第二执行集群消耗的值,所述高速缓冲存储器与系统存储器层次结构和处理器的寄存器组分离。
2.根据权利要求1所述的处理器,还包括扫描单元,用于:
检测所述值将由第一指令产生并将由第二指令消耗;
在所述高速缓冲存储器中分配用于存储所述值的条目;以及
将所述条目的标识符分配给所述第二指令。
3.根据权利要求2所述的处理器,其中,所述条目包括第一字段,在所述第一字段中存储将向其分配所述值的寄存器的标识符。
4.根据权利要求3所述的处理器,其中,所述条目包括第二字段,在所述第二字段中存储就绪指示符以指示所述值已经由所述第一指令产生并存储在所述条目中。
5.根据权利要求4所述的处理器,其中,所述条目包括第三字段,在所述第三字段中存储锁定指示符以指示所述条目被锁定。
6.根据权利要求5所述的处理器,还包括锁定管理器,所述锁定管理器管理所述锁定指示符以防止在所述值被所述第二指令消耗之前逐出所述条目。
7.根据权利要求6所述的处理器,其中,所述扫描单元还用于:
检测所述值将被第三指令消耗;
在所述高速缓冲存储器中找到所述条目;以及
将所述条目的标识符分配给所述第三指令。
8.根据权利要求7所述的处理器,其中,所述锁定管理器还用于管理所述锁定指示符,以防止在所述值被所述第三指令消耗之前逐出所述条目。
9.根据权利要求8所述的处理器,还包括依赖性跟踪器,以阻止所述第二指令的调度,直到设置了所述就绪指示符为止。
10.一种方法,包括:
由处理器的扫描单元检测第一指令产生由第二指令消耗的值;
在所述处理器的高速缓冲存储器中分配用于存储所述值的条目,所述高速缓冲存储器与系统存储器层次结构和所述处理器的寄存器组分离;和
将所述条目的标识符分配给所述第二指令。
11.根据权利要求10所述的方法,还包括响应于将所述条目的标识符分配给所述第二指令而递增锁定计数器。
12.根据权利要求11所述的方法,还包括:
由扫描单元检测第三指令也消耗所述值;
在所述高速缓冲存储器中查找所述条目;和
将所述条目的标识符分配给所述第三指令。
13.根据权利要求12所述的方法,还包括响应于将所述条目的标识符分配给所述第三指令而递增所述锁定计数器。
14.根据权利要求13所述的方法,还包括由依赖性跟踪器阻止所述第二指令被调度,直到所述值已经由所述第一指令产生并存储在所述条目中为止。
15.根据权利要求14所述的方法,还包括:
由所述处理器的第一执行集群执行第一指令;
将所述值存储在所述条目中;以及
在所述条目中设置就绪指示符。
16.根据权利要求15所述的方法,还包括:
响应于设置所述就绪指示符,由依赖跟踪器解除阻止第二指令;
由所述处理器的第二执行集群执行所述第二指令;以及
递减所述锁定指示符。
17.根据权利要求16所述的方法,还包括:
执行所述第三指令;以及
递减所述锁定指示符。
18.根据权利要求17所述的方法,还包括:
确定所述锁定计数器为零;以及
从所述高速缓存中逐出所述条目。
19.一种系统,包括:
具有层级的层次结构的系统存储器,;
处理器,包括:
多个执行集群;
在所述系统存储器的层级的层次结构中的第一高速缓冲存储器;和
第二高速缓冲存储器,在所述第二高速缓冲存储器中存储由所述多个执行集群的第一执行集群产生并由所述多个执行集群的第二执行集群消耗的值,所述第二高速缓冲存储器与所述第一高速缓冲存储器和所述系统存储器的层次结构的所述层级的层次结构分离。
20.根据权利要求19所述的系统,其中,所述处理器还包括与所述第二高速缓冲存储器分离的物理寄存器文件。
21.一种处理器,包括:
多个执行集群;和
高速缓冲存储器装置,用于存储由多个执行集群的第一执行集群产生并由多个执行集群的第二执行集群消耗的值,所述高速缓冲存储器装置与系统存储器层次结构和处理器的寄存器组分离。
22.根据权利要求21所述的处理器,还包括扫描装置,用于:
检测所述值由第一指令产生并由第二指令消耗;
在用于存储所述值的所述高速缓冲存储器装置中分配条目;和
将所述条目的标识符分配给所述第二指令。
23.根据权利要求22所述的处理器,其中,所述条目包括:
第一字段,在所述第一字段中存储向所述第一字段分配所述值的寄存器的标识符;
第二字段,在所述第二字段中存储就绪指示符以指示所述值已经由所述第一指令产生并存储在所述条目中;和
第三字段,在所述第三字段中存储锁定指示符以指示所述条目被锁定。
24.根据权利要求23所述的处理器,还包括锁定装置,用于管理所述锁定指示符以防止在所述值已经被所述第二指令消耗之前逐出所述条目。
25.根据权利要求23所述的处理器,还包括依赖性跟踪装置,用于阻止所述第二指令的调度直到设置了所述就绪指示符为止。
CN201880055116.1A 2017-09-28 2018-08-28 实时寄存器值的集群间通信 Pending CN111095203A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/719,290 US10437590B2 (en) 2017-09-28 2017-09-28 Inter-cluster communication of live-in register values
US15/719,290 2017-09-28
PCT/US2018/048332 WO2019067141A1 (en) 2017-09-28 2018-08-28 INTER-CLUSTER COMMUNICATION OF LIVE REGISTER VALUES

Publications (1)

Publication Number Publication Date
CN111095203A true CN111095203A (zh) 2020-05-01

Family

ID=65806609

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880055116.1A Pending CN111095203A (zh) 2017-09-28 2018-08-28 实时寄存器值的集群间通信

Country Status (4)

Country Link
US (1) US10437590B2 (zh)
CN (1) CN111095203A (zh)
DE (1) DE112018003988T5 (zh)
WO (1) WO2019067141A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10915327B2 (en) * 2018-12-14 2021-02-09 Arm Limited Apparatus and method of dispatching instructions for execution clusters based on dependencies
US11586465B2 (en) * 2020-04-16 2023-02-21 Texas Instruments Incorporated Scalable hardware thread scheduler
US11327763B2 (en) * 2020-06-11 2022-05-10 Microsoft Technology Licensing, Llc Opportunistic consumer instruction steering based on producer instruction value prediction in a multi-cluster processor

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282585B1 (en) 1999-03-22 2001-08-28 Agere Systems Guardian Corp. Cooperative interconnection for reducing port pressure in clustered microprocessors
US6463507B1 (en) * 1999-06-25 2002-10-08 International Business Machines Corporation Layered local cache with lower level cache updating upper and lower level cache directories
GB2380825B (en) 2001-10-12 2004-07-14 Siroyan Ltd Processors and compiling methods for processors
CA2384259A1 (en) 2002-04-29 2003-10-29 Ibm Canada Limited-Ibm Canada Limitee Access concurrency for cached authorization information in relational database systems
US20070083735A1 (en) 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
US7562206B2 (en) 2005-12-30 2009-07-14 Intel Corporation Multilevel scheme for dynamically and statically predicting instruction resource utilization to generate execution cluster partitions
US7913048B2 (en) * 2006-07-26 2011-03-22 International Business Machines Corporation Data subscribe-and-publish mechanisms and methods for producer-consumer pre-fetch communications

Also Published As

Publication number Publication date
DE112018003988T5 (de) 2020-04-16
US10437590B2 (en) 2019-10-08
US20190095203A1 (en) 2019-03-28
WO2019067141A1 (en) 2019-04-04

Similar Documents

Publication Publication Date Title
US11494194B2 (en) Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US10409603B2 (en) Processors, methods, systems, and instructions to check and store indications of whether memory addresses are in persistent memory
JP5372929B2 (ja) 階層マイクロコードストアを有するマルチコアプロセッサ
CN106648843B (zh) 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置
US20080005504A1 (en) Global overflow method for virtualized transactional memory
US9361233B2 (en) Method and apparatus for shared line unified cache
US10339060B2 (en) Optimized caching agent with integrated directory cache
JP2014002735A (ja) ゼロサイクルロード
US20180365022A1 (en) Dynamic offlining and onlining of processor cores
KR20120070584A (ko) 데이터 스트림에 대한 저장 인식 프리페치
JP2012531682A (ja) Simdベクトルの同期
US10108548B2 (en) Processors and methods for cache sparing stores
US10108554B2 (en) Apparatuses, methods, and systems to share translation lookaside buffer entries
US11531562B2 (en) Systems, methods, and apparatuses for resource monitoring
CN111095203A (zh) 实时寄存器值的集群间通信
CN114253607A (zh) 用于由集群化解码流水线对共享微代码定序器的乱序访问的方法、系统和装置
US9552169B2 (en) Apparatus and method for efficient memory renaming prediction using virtual registers
CN111752889A (zh) 用于具有指令再循环的多级保留站的方法和设备
TW201730773A (zh) 用於在多個快取層級之間的共用最近最少使用(lru)策略的設備及方法
US11126438B2 (en) System, apparatus and method for a hybrid reservation station for a processor
US20240111679A1 (en) Hardware processor having multiple memory prefetchers and multiple prefetch filters
US20240037036A1 (en) Scheduling merged store operations in compliance with store ordering rules
EP4202664A1 (en) System, apparatus and method for throttling fusion of micro-operations in a processor
US20210200538A1 (en) Dual write micro-op queue
TW202213088A (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