CN109952566A - 用于处理器架构的装置和方法 - Google Patents

用于处理器架构的装置和方法 Download PDF

Info

Publication number
CN109952566A
CN109952566A CN201680090755.2A CN201680090755A CN109952566A CN 109952566 A CN109952566 A CN 109952566A CN 201680090755 A CN201680090755 A CN 201680090755A CN 109952566 A CN109952566 A CN 109952566A
Authority
CN
China
Prior art keywords
cache
instruction
processor
microoperation
thread
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
CN201680090755.2A
Other languages
English (en)
Inventor
J·W·布兰德特
R·S·查普尔
J·考博尔
E·T·格罗科斯基
S·H·冈瑟
B·M·盖伊
T·R·赫夫
C·J·休斯
E·乌尔德-阿迈德-瓦尔
R·辛格豪尔
S·Y·索托德
B·L·托尔
L·拉波波特
D·帕普沃斯
J·D·艾伦
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 CN109952566A publication Critical patent/CN109952566A/zh
Pending legal-status Critical Current

Links

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
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • 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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • 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/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明公开了一种处理器架构的实施例。在实施例中,处理器包括解码器、执行单元、一致性高速缓存和互连。所述解码器用于对用于将高速缓存行归零的指令进行解码。所述执行单元用于发布用于发起高速缓存行大小的零写入的写入命令。所述一致性高速缓存用于接收所述写入命令、用于判定所述高速缓存行中是否存在命中以及所命中高速缓存行的高速缓存一致性协议状态是经修改状态还是排他状态、用于将高速缓存行配置成指示全零、并且用于向所述互连发布所述写入命令。所述互连用于响应于接收到所述写入命令而向必须对其判定是否存在命中的多个其他一致性高速缓存中的每一个发布监听。

Description

用于处理器架构的装置和方法
技术领域
本发明的领域总体上涉及计算机,并且更具体地涉及处理器架构。
背景技术
处理器包括许多共同执行指令和处理信息的互连电路和结构。这些电路和结构以及它们提供的特征可以以许多不同配置和组合包括在处理器中。
附图说明
本发明是通过示例说明的,而不仅局限于各个附图的图示,在附图中,相同的附图标记表示类似的元件,并且在附图中:
图1A是框图,展示了根据本发明的实施例的示例性有序流水线和示例性寄存器重命名、乱序发布/执行流水线;
图1B是框图,展示了根据本发明的实施例的待包括在处理器中的有序架构核和示例性寄存器重命名、乱序发布/执行架构核的示例性实施例;
图2A和图2B展示了更具体的示例性核架构的框图,所述核将是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其他核);
图2A是根据本发明的实施例的单个处理器核连同其与管芯上互连网络202的连接,以及其2级(L2)高速缓存的本地子集204的框图;
图2B是根据本发明的实施例的图2A中的处理器核的一部分的展开图;
图3是根据本发明的实施例的可以包括在处理器中的说明性乱序发布/执行处理器核的框图;
图4是根据本发明的实施例的可以包括在如图3的处理器核等处理器核和/或处理器中的说明性取出单元的框图;
图5是根据本发明的实施例的可以包括在如图3的处理器核等处理器核和/或处理器中的说明性解码单元的框图;
图6是根据本发明的实施例的可以包括在如图3的处理器核等处理器核和/或处理器中的说明性整数执行单元的框图;
图7是根据本发明的实施例的可以包括在如图3的处理器核等处理器核和/或处理器中的说明性浮点(FP)执行单元的框图;
图8是根据本发明的实施例的可以包括在如图3的处理器核等处理器核和/或处理器中的说明性加载/存储单元的框图;
图9是根据本发明的实施例的处理器中支持同时多线程(SMT)的如图3的处理器核等说明性乱序发布/执行处理器核的框图;
图10是框图,展示了根据一些实施例的可以包括在处理器中的SMT静态分区特征;
图11是流程图,展示了根据一些实施例的用于可以由处理器执行的SMT静态分区特征的方法;
图12是框图,展示了根据一些实施例的可以包括在处理器中的资源分配器;
图13是框图,展示了根据实施例的可以包括在处理器1300中的算法SMT特征;
图14是流程图,展示了根据实施例的用于可以由处理器执行的算法SMT特征的方法;
图15是框图,展示了根据实施例的可以包括在处理器中的算法SMT特征;
图16示出了根据示例性实施例的实施分支预测器优先级算法的框图;
图17是框图,展示了根据实施例的可以包括在处理器中的用于SMT线程切换特征的仲裁电路;
图18是框图,展示了根据实施例的可以包括在处理器中的死锁避免硬件1800;
图19是图示,示出了根据一些实施例的使用一对128位μop将256位加载到256位寄存器堆;
图20是图示,展示了根据一些实施例的使用一对128位μop将256位加载到256位寄存器堆的过程;
图21是图示,示出了根据一些实施例的使用128位μop存储来自256位寄存器堆的256位。
图22是图示,展示了根据一些实施例的用于使用一对128位μop存储来自256位寄存器堆的256位的过程
图23是框图,展示了根据一些实施例的用于允许使用128位微操作进行256位算术运算的特征;
图24是框图,展示了根据一些实施例的使用临时存储区域来存储部分结果的跨通道操作;
图25是框图,展示了根据实施例的可以包括在处理器中的微操作高速缓存特征;
图26是流程图,展示了根据实施例的用于可以由处理器执行的微操作高速缓存特征的方法;
图27是框图,展示了根据实施例的可以包括在处理器中的微操作高速缓存特征;
图28是框图,展示了根据实施例的可以包括在处理器中的微操作高速缓存特征;
图29是框图,展示了根据实施例的涉及寄存器别名表(RAT)的寄存器重命名和依赖性跟踪方案;
图30是框图,展示了根据实施例的扩展成包括零惯用语、符号扩展、和零扩展的RAT;
图31是框图,展示了根据实施例的在寄存器重命名期间读取经扩展RAT位并使用读取寄存器的微操作将其沿流水线向下传递;
图32是框图,展示了根据实施例的可以包括在处理器中的虚拟寄存器重命名特征;
图33是流程图,展示了根据实施例的用于可以由处理器执行的虚拟寄存器重命名特征的方法;
图34是框图,展示了根据本发明的实施例的可以在支持融合乘法-加法(FMA)分裂/融合特征的处理器核中实施的发布/执行流水线;
图35是流程图,展示了根据本发明的实施例的用于可以由处理器执行的FMA分裂/融合的方法;
图36是根据本发明的实施例的可以具有多于一个核、可以具有集成存储器控制器、并且可以具有集成图形的处理器的框图;
图37是根据本发明的实施例的可以包括在处理器中的说明性中央处理器单元(CPU)复合体的框图;
图38是根据本发明的实施例的可以包括在处理器中的说明性高速缓存层级结构的框图;
图39是框图,展示了存储器层级结构,在所述存储器层级结构中可以根据本实施例实施高速缓存行归零指令;
图40是框图,展示了根据实施例的处理器中实施高速缓存行归零指令的高速缓存;
图41是流程图,展示了本发明的在使用监听之前首先尝试写入发布代理的高速缓存的实施例;
图42是流程图,展示了本发明的依赖一致性高速缓存的监听的实施例;
图43是流程图,展示了本发明的使用写入-更新监听来实施监听过程的实施例;
图44是流程图,展示了本发明的使用写入-无效监听来实施监听过程的实施例。
图45是流程图,展示了本发明的使用无效和回写的监听来实施监听过程的实施例;
图46是流程图,展示了本发明的使用监听来实施监听过程的实施例,所述监听写出命中但不将数据发送回第一代理并且不导致从下游存储器读取数据的任何高速缓存行;
图47是图示,展示了根据一些实施例的可以包括在处理器中页合并特征;
图48是流程图,展示了根据一些实施例的用于将页表条目合并到单个有效页中的方法;
图49至图52是示例性计算机架构的框图;
图49示出了根据本发明一个实施例的系统的框图;
图50是根据本发明的实施例的第一更具体示例性系统的框图;
图51是根据本发明的实施例的第二更具体示例性系统的框图;
图52是根据本发明的实施例的芯片上系统(SoC)的框图;
图53A至图53B是框图,展示了根据本发明的实施例的通用向量友好指令格式及其指令模板;
图53A是框图,展示了根据本发明的实施例的通用向量友好指令格式及其A类指令模板;
图53B是框图,展示了根据本发明的实施例的通用向量友好指令格式及其B类指令模板;
图54A是框图,展示了根据本发明的实施例的示例性特定向量友好指令格式;
图54B是框图,展示了根据本发明的一个实施例的构成完整操作码字段的特定向量友好指令格式的字段;
图54C是框图,展示了根据本发明一个实施例的构成寄存器索引字段的特定向量友好指令格式的字段;
图54D是框图,展示了根据本发明的一个实施例的构成增强操作字段的特定向量友好指令格式的字段;
图55是根据本发明的一个实施例的寄存器架构的框图;并且
图56是框图,对照了根据本发明的实施例的对用于将源指令集中的二进制指令转换为目标指令集中的二进制指令的软件指令转换器的使用。
图57至图66是系统中本发明的实施例的展示。
具体实施方式
在以下描述中,阐述了各种具体细节。然而,应理解本发明的实施例可以在没有这些具体细节的情况下实践。在其他情况下,未详细示出公知的电路、结构和技术,以避免模糊对本说明书的理解。
在说明书中提到“一个实施例”、“实施例”、“示例实施例”等表明所描述的实施例可以包括特定特征、结构、或特性,但每一个实施例可能不一定包括所述特定特征、结构、或特性。另外,此类短语不一定指代同一实施例。进一步地,当结合实施例描述特定特征、结构或特性时,认为在本领域技术人员学识范围内,不论是否有明确描述,可以与其他实施例结合实施这样的特征、结构或特性。
如计算机等用于处理信息的装置可以包括一个或多个处理器核。每个处理器核可以包括各种电路系统、硬件、结构、以及其他特征,其中每个处理器核单独或任何数量组合在一起可以被称为特征。特征可以以各种方式实施和/或安排、采用各种技术、并且涉及执行各种方法以尝试以各种组合实现性能、功耗、和/或其他特性的期望水平(例如,提高性能、降低功耗并实施功率节省特征,以及提高公平性、最低性能保证、吞吐量、每时钟指令(IPC)、每单位时间指令、服务质量、时间和/或存储器效率,仅列出一些适用的标准)。本发明的实施例可以包括本说明书中描述的特征中的一个或多个特征。附图和本说明书的描述中提供了可以体现本发明的架构和系统的一些示例。
可以体现本发明的处理器核可以以不同的方式、出于不同目的、以及在不同的处理器中实施。例如,这种核的实施方式可以包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通用乱序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实施方式可以包括:1)中央处理单元(CPU),包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用乱序核;以及2)协处理器,包括旨在主要用于图形和/或科学(吞吐量)计算的一个或多个专用核。这种不同处理器导致不同计算机系统架构,所述计算机系统架构可以包括:1)位于与CPU分开的芯片上的协处理器;2)位于与CPU相同的封装体中的分开管芯上的协处理器;3)在与CPU相同的管芯上的协处理器(在这种情况下,这种协处理器有时被称为专用逻辑,比如,集成图形和/或科学(吞吐量)逻辑或专用核);以及4)芯片上系统(SoC),所述系统可以包括在相同管芯上的所描述的CPU(有时称为(多个)应用核或(多个)应用处理器)、上述协处理器以及附加功能。
接下来描述示例性核架构,然后描述示例性处理器和计算机架构。每个处理器可以包括一个或多个核,其中每个核和/或核的组合可以被架构和设计成在不同时间执行一个或多个线程、进程或其他指令序列。核架构和设计技术可以根据被称为同步(或对称)多线程(SMT)的一类方法中的任何方法或任何其他方法提供和/或支持多线程的并发执行。因此,可以体现本发明的、包括如以下示例描述的那些的处理器核可以包括被架构和设计成支持SMT的各种新颖特征和/或以各种新颖方式被修改成支持SMT的各种已知特征,如可以在以下描述的。为了描述简洁,本说明书中术语SMT的含义可以包括SMT与用于多线程的任何其他方法(例如,时间分片)的组合。
如以上所提及的和以下更详细的解释的,出于各种原因,本公开的实施例可能是期望的,包括例如提高性能、降低功耗和实施功率节省特征、以及提高公平性、最低性能保证、吞吐量、每时钟指令(IPC)、每单位时间指令、服务质量、时间和/或存储器效率、仅列出一些适用的标准。以上所列出和本文所描述的期望标准是示例性的;如本文所解释的,出于以上所列出的原因中的任何原因,单独地或组合地,本公开可能是期望的,并且出于以上未具体列举的附加原因,本公开可能是进一步期望的。
进一步地,如以上所提及的和以下更详细的解释的,本公开的实施例可以应用于任何类型的处理器或处理元件,包括通用处理器、用于服务器环境的服务器处理器或处理元件、协处理器(例如,安全协处理器)高吞吐量MIC处理器、GPGPU的、加速器(如例如,图形加速器或数字信号处理(DSP)单元、密码加速器、固定功能加速器、机器学习加速器、联网加速器、或计算机视觉加速器)、现场可编程门阵列、或任何其他处理器或处理设备。所述一个或多个处理器可以被实施在一个或多个芯片上。所述一个或多个处理器3600可以是一个或多个衬底的一部分和/或可以使用如例如BiCMOS、CMOS或NMOS等多种加工技术中的任何技术在一个或多个衬底上实施。以上所列出和本文所描述的处理器和处理设备是示例性的;如本文所解释的,本公开适用于任何处理器或处理设备。
进一步地,如以上所提及的和以下更详细的解释的,本公开的实施例可以使用各种各样的指令集和指令集架构应用于处理器或处理元件,包括例如x86指令集(任选地包括已经添加有较新版本的扩展);加利福尼亚州桑尼维尔MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集(具有如NEON等可选的附加扩展);IBM的“功率”指令集或任何其他指令集,包括RISC和CISC指令集。以上所列出和本文描述的指令集和指令集架构是示例性的;如本文所解释的,本公开适用于任何指令集或指令集架构。
示例性核架构
有序和乱序核框图
图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)核、图形核等。例如,如以上所解释的,核190可以是集合的任何成员,所述集合包含:通用处理器、用于服务器环境的服务器处理器或处理元件、协处理器(例如,安全协处理器)高吞吐量MIC处理器、GPGPU的、加速器(如例如,图形加速器或数字信号处理(DSP)单元、密码加速器、固定功能加速器、机器学习加速器、联网加速器、或计算机视觉加速器)、现场可编程门阵列、或任何其他处理器或处理设备。
前端单元130包括耦合至微操作高速缓存133和指令高速缓存单元134的分支预测单元132,所述指令高速缓存单元耦合至指令转换后备缓冲器(TLB)136,所述指令转换后备缓冲器耦合至指令取出单元138、所述指令取出单元耦合至解码单元140。解码单元140(或解码器)可以解码指令,并生成一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出,这些输出是从原始指令中解码出、或以其他方式反映原始指令、或是从原始指令衍生出的。微操作、微代码进入点、微指令等可以至少存储在微操作高速缓存133中。可以使用各种不同机制实施解码单元140。适合机制的示例包括但不限于:查询表、硬件实施方式、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核190包括存储用于某些宏指令的微代码(例如,存储在解码单元140中或以其他方式存储在前端单元130内)的微代码ROM或其他介质。微操作高速缓存133和解码单元140耦合至执行引擎单元150中的重命名/分配器单元152。在各个实施例中,如133等微操作高速缓存还可以或代替地被称为op高速缓存、u-op高速缓存、uop高速缓存或μop高速缓存;并且微操作可以被称作micro-op、u-op、uop、以及μop。
执行引擎单元150包括耦合至引退单元154的重命名/分配器单元152以及一组一个或多个调度器单元156。(多个)调度器单元156表示任何数量的不同调度器,包括保留站、中央指令窗等。(多个)调度器单元156耦合至(多个)物理寄存器堆单元158。(多个)物理寄存器堆单元158中的每一个表示一个或多个物理寄存器堆,这些物理寄存器堆中的不同的物理寄存器堆存储一种或多种不同的数据类型,如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,状态(例如,作为要执行的下一条指令的地址的指令指针)等等。在一个实施例中,(多个)物理寄存器堆单元158包括向量寄存器单元、写入掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。(多个)物理寄存器堆单元158与引退单元154重叠以说明可实施寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来堆、(多个)历史缓冲器和(多个)引退寄存器堆;使用寄存器映射和寄存器池;等)。引退单元154和(多个)物理寄存器堆单元158耦合至(多个)执行集群160。(多个)执行集群160包括一组一个或多个执行单元162和一组一个或多个存储器访问单元164。执行单元162可以执行各种操作(例如,移位、加法、减法、乘法),以及对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整型、向量浮点)执行。虽然一些实施例可以包括专用于具体功能或功能集合的多个执行单元,但是其他实施例可以只包括一个执行单元或包括全都执行全部功能的多个执行单元。(多个)调度器单元156、(多个)物理寄存器堆单元158、以及(多个)执行集群160被示出为可能是复数的,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,所述流水线各自具有其本身的调度器单元、(多个)物理寄存器堆单元、和/或执行集群,并且在分开的存储器访问流水线的情况下,实施了其中只有此流水线的执行集群具有(多个)存储器访问单元164的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一者或多者可以是乱序发布/执行流水线,并且其余的是有序流水线。
所述一组存储器访问单元164耦合至存储器单元170,所述存储器单元包括耦合至数据高速缓存单元174的数据TLB单元172,所述数据高速缓存单元耦合至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等可选的附加扩展)、IBM的“功率”指令集、或包括RISC指令集和CISC指令集)的任何其他指令集,包括本文所描述的(多个)指令。在一个实施例中,核190包括用于支持紧缩数据指令集扩展(例如,AVX、AVX2、AVX-512)的逻辑,从而允许使用紧缩数据来执行许多多媒体应用所使用的操作。
应当理解,核可以支持多线程化(执行并行的两组或更多组操作或线程),并且可以以各种方式来完成所述多线程化,所述各种方式包括时分多线程化、SMT(其中,单个物理核为物理核正同步多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后比如超线程化技术中的SMT)。
虽然在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。虽然处理器的所示实施例还包括分开的指令和数据高速缓存单元134/174和共享L2高速缓存单元176,但替代实施例可以具有用于指令和数据两者的单个内部高速缓存,例如1级(L1)内部高速缓存、或多级内部高速缓存。在一些实施例中,所述系统可以包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。可替代地,所有(多个)高速缓存都可以在核和/或处理器的外部。
具体的示例性核架构
图2A和图2B展示了更具体的示例性核架构的框图,所述核将是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其他核)。根据应用,逻辑块通过具有某些固定功能逻辑、存储器I/O接口和其他必要I/O逻辑的高带宽互连网络(例如,环形网络)进行通信。
图2A是根据本发明的实施例的单个处理器核连同其与管芯上互连网络202的连接,以及其2级(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高速缓存和其他逻辑块等代理在芯片内彼此通信。每个环形数据路径每个方向的宽度为1012位。
图2B是根据本发明的实施例的图2A中的处理器核的一部分的展开图。图2B包括L1高速缓存204的L1数据高速缓存206A部分,以及关于向量单元210和向量寄存器214的更多细节。具体地,向量单元210是16位宽向量处理单元(VPU)(参见16位宽ALU 228),所述向量处理单元执行整数、单精度浮点和双精度浮点指令中的一者或多者。VPU支持用混合单元220对寄存器输入进行混合、用数值转换单元222A和222B进行数值转换、以及用复制单元224对存储器输入进行复制。写入掩码寄存器226允许预测结果向量写入。
具体的示例性乱序核架构
图3是根据本发明的实施例的可以包括在处理器中的说明性乱序发布/执行处理器核的框图。在图3中,处理器核300包括前端单元310、整数单元320、FP单元330、加载-存储单元340、和2级(L2)高速缓存单元350。出于说明性目的提供图3,并且因此示出了根据本发明的实施例的根据可能的许多方法之一安排和命名的各种单元。任何一个或多个实施例可以以一种或多种方式来展示。图3中所示出的每个单元可以包括可以包括在实施例的其他表示中的其他单元中的电路系统和/或结构。例如,前端单元310可以另外地或可替代地被展示和描述为包括如图4中的取出单元400等取出单元、以及如图5中的解码单元500等解码单元;整数单元320、FP单元330和加载-存储单元340中的任何一个或所有可以另外地或可替代地被单独地或共同地展示和描述为一个或多个执行单元;等。此外,核300内的各种单元可以以各种方式耦合;因此,为了方便起见,不同附图可以示出不同较大单元内的单元;例如,特定单元可以在第一附图中的第一较大单元内和第二附图中的第二较大单元内示出。
在图3中,前端单元310包括分支预测单元311、微操作高速缓存(op高速缓存)单元312、指令高速缓存(i高速缓存)单元313、解码单元314、以及微操作(微操作)队列单元315。分支预测单元311包括如分支目标缓冲器(BTB)等分支预测电路系统,以减少平均分支延迟,并且耦合至op高速缓存单元312和i高速缓存单元313。op高速缓存单元312包括op高速缓存,在所述op高速缓存中用于高速缓存与指令相关联的微操作。i高速缓存313单元包括i高速缓存,在实施例中,所述i高速缓存可以是64K四路i高速缓存,在所述四路i高速缓存中用于高速缓存指令。i高速缓存313单元耦合至解码单元314以提供要被解码的高速缓存指令。解码单元314包括如指令解码器等用于解码指令的解码电路系统。在实施例中,前端单元310可以取出并且解码单元314可以解码多达每时钟周期四个指令。Op高速缓存单元312和解码单元314各自耦合至微操作队列单元315,以提供用于将微操作加载到微操作队列单元315中的两条路径。微操作队列单元315包括微操作队列,在实施例中,所述微操作队列可以将每周期六个微操作分派给一个或多个执行单元。
同样在图3中,整数单元320包括整数重命名单元321;整数调度器单元322A、322B、322C、322D、322E和322F(统称为整数调度器单元322);整数物理寄存器堆323;算数逻辑单元(ALU)324A、324B、324C和324D(统称为ALU 324);以及地址生成单元(AGU)325A和325B(统称为AGU 325)。整数重命名单元321耦合至微操作队列单元315,以接收待由ALU 324和/或AGU 325中的一个或多个全部或部分地执行的一个或多个微操作。整数重命名单元321包括寄存器重命名电路系统并且还耦合至整数调度器单元322,所述整数调度器单元进而耦合至整数物理寄存器堆323,以提供整数寄存器重命名。整数调度器单元322包括用于调度待由ALU 324和/或AGU 325中的一个或多个全部或部分地执行的微操作的调度电路系统。整数物理寄存器堆323包括物理整数寄存器的堆,在实施例中,所述堆可以包括168个物理整数寄存器。ALU 324和AGU 325中的每一个耦合至物理寄存器堆323以接收将在微操作的执行中用作输入的值和/或提供作为微操作的执行的输出的值。
同样在图3中,FP单元330包括FP重命名单元331、FP调度器单元332、FP寄存器堆333、FP乘法器334A和FP乘法器334B(统称为FP乘法器334)、以及FP加法器335A和335B(统称为FP加法器335)。FP重命名单元331耦合至微操作队列单元315,以接收待由FP乘法器334和/或FP加法器335全部或部分地执行的一个或多个微操作。FP重命名单元331包括寄存器重命名电路系统,并且还耦合至FP调度器单元332,所述FP调度器单元进而耦合至FP寄存器堆333,以提供FP寄存器重命名。FP调度器单元332包括用于调度待由FP乘法器334和/或FP加法器335中的一个或多个全部或部分地执行的微操作的调度电路系统。FP乘法器334和FP加法器335中的每一个耦合至FP寄存器堆333以接收将在微操作的执行中用作输入的值和/或提供作为微操作的执行的输出的值。
同样在图3中,加载-存储单元340包括加载-存储队列单元341和数据高速缓存(d高速缓存)单元342。加载-存储队列单元341可以包括任何数量的加载和/或存储队列,在实施例中所述加载和/或存储队列为每个时钟周期提供两个加载和一个存储,并耦合至AGU325以接收用于加载和/或存储操作的存储器地址。D高速缓存单元342包括d高速缓存,在实施例中所述d高速缓存可以是32K、八路1级(L1)d高速缓存,用于高速缓存数据,所述d高速缓存耦合至整数物理寄存器堆323、FP寄存器堆333和加载-存储队列单元341以接收和提供由微操作生成并且待在微操作的执行中使用的数据。
同样在图3中,L2高速缓存单元350包括L2高速缓存,在实施例中所述L2高速缓存可以是512K、八路高速缓存,用于高速缓存指令和数据。
图4是根据本发明的实施例的可以包括在如图3的核300等处理器核和/或处理器中的说明性取出单元的框图。在图4中,取出单元400包括下一程序计数(PC)单元410、转换后备缓冲器(TLB)单元420、散列感知器单元430、BTB返回堆栈间接目标阵列(ITA)单元440、物理请求队列单元450、微标签单元460和i高速缓存单元470。
图5是根据本发明的实施例的可以包括在如图3的核300等处理器核和/或处理器中的说明性解码单元的框图。在图5中,解码单元500包括指令字节缓冲器单元510、挑选单元520、解码单元530、op高速缓存单元540、微操作队列单元550、微代码只读存储器(ROM)单元560、堆栈引擎存储器堆(memfile)单元570和分派单元580。
图6是根据本发明的实施例的可以包括在如图3的核300等处理器核和/或处理器中的说明性整数执行单元的框图。在图6中,整数执行单元600包括映射单元610;引退队列单元620;算数逻辑队列(ALQ)单元630A、630B、630C和630D(统称为ALQ 630);地址生成队列(AGQ)单元640A和640B(统称为AGQ 640);物理寄存器堆单元650,转发多路复用器(mux)单元660;ALU 670A、670B、670C和670D(统称为ALU 670);AGU 680A和AGU 680B(统称为AGU680);以及加载-存储单元690。
图7是根据本发明的实施例的可以包括在如图3的核300等处理器核或处理器中的说明性FP执行单元的框图。在图7中,FP执行单元700包括不可调度微操作队列单元710、可调度微操作队列单元720、引退队列单元730、FP转换单元740、FP物理寄存器堆750、转发mux单元760、FP乘法器770A和770B(统称为FP乘法器770)和FP加法器780A和780B(统称为FP加法器780)。
图8是根据本发明的实施例的可以包括在如图3的核300等处理器核或处理器中的说明性加载/存储单元的框图。在图8中,加载/存储单元800包括加载队列单元810、加载流水线挑选单元811A和811B(统称为加载挑选单元811)、TLB单元812A和812B(统称为TLB单元812)、数据流水线单元813A和813B(统称为数据流水线单元813)、存储队列单元820、预取出单元821、存储流水线挑选单元822)、存储流水线单元823、存储提交单元824、L1/L2TLB和数据高速缓存标签阵列830、L1数据高速缓存840、存储器地址缓冲器850、以及写合并缓冲器860。
图9是根据本发明的实施例的处理器中支持SMT的如图3的核300等说明性乱序发布/执行处理器核的框图。在图9中,处理器核900包括前端单元910、整数单元920、FP单元930、加载-存储单元940、L2高速缓存单元950和和引退单元960。前端单元910包括分支预测单元911、op高速缓存单元912、i高速缓存单元913、解码单元914、微操作队列单元915和指令TLB单元916。整数单元920包括整数重命名单元921、整数调度器单元922、整数物理寄存器堆923、ALU 924和AGU 925。FP单元930包括FP重命名单元931、FP调度器单元932、FP寄存器堆933、FP乘法器934A和934B(统称为FP乘法器934)、以及FP加法器935A和935B(统称为FP加法器935)。加载-存储单元940包括加载队列单元941A和存储队列单元941B(统称为加载-存储队列单元941)、数据高速缓存(d高速缓存)单元942和TLB单元943。引退单元960包括引退队列。
SMT特征
根据本发明的实施例的处理器核可以包括支持SMT的各种特征。使用以下的非限制性示例单独地描述了多个这样的特征,但是实施例可以包括这些特征的任何组合。
资源的静态分区
根据一些示例性实施例,处理器核可以支持SMT静态分区特征。可以将线程分配给在同时多线程流水线中静态共享的可用资源。在一些实施例中,可以使用如基于模式化的算法等技术将线程分配给可用资源以提高性能和效率。在一些实施例中,此特征可以通过在线程之间为静态共享资源提供更高效的资源共享来改进计算机系统。所述特征还可以使用由于SMT静态分区而另外一直未使用的可用资源。
例如,流水线中的资源可以在两个线程之间静态共享,例如50%-50%,以向两个线程都提供相同的资源。在一些实施例中,可以例如基于工作负荷模式将不同百分比的可用资源分配给每个线程。例如,如果一个线程停止的时间比另一个线程长,并且存在另一个线程可用的空条目,则可以将所述可用条目分配给已停止线程,而不是在静态共享资源中将它们保持为空。
在一些实施例中,多于一个线程可能具有类似的模式。在这种情况下,在线程之间存在束缚的情况下,可以使用优先级方案来分配资源。例如,可以通过随机选择、选择较低编号的线程、选择较高编号的线程、和/或选择交替的线程来执行束缚打破(tie-breaking)。
图10是框图,展示了根据一些实施例的可以包括在处理器中的SMT静态分区特征。根据示例性实施例,SMT静态分区特征可以包括模式检测块1001。可以将第一资源和第二资源静态地分配给线程T0和T1。查找模式基表可以确定线程T1具有长停止时间。然后,模式检测块可以基于模式输入调整静态分配的资源。例如,静态分配给T1的第二资源可以分配给T0。
在一些实施例中,动态分区可以应用于如指令转换后备缓冲器(ITLB)等其他静态分区资源。
图11是流程图,展示了根据一些实施例的用于可以由处理器执行的SMT静态分区特征的方法。在一些实施例中,如框CQB01中所展示的,所述方法可以包括检测如线程停止等用于流水线中的静态共享资源的模式。如框CQB02中所展示的,所述方法可以进一步包括调整共享(例如,50-50共享)。所述方法调整可以例如基于停止的长度或一些其他类似的事件。
实施例可以包括处理器,所述处理器被配置成检测用于第一静态分区资源和第二静态分区资源中的至少一者的模式;并调整第一静态分区资源和第二静态分区资源中的至少一者的分配。
在一些实施例中,以下一项或多项适用。流水线的第一静态分区资源和第二静态分区资源可以是同时多线程流水线的资源。可以在第一线程与第二线程之间分配第一静态分区资源和第二静态分区资源。处理器可以进一步被配置成基于基于模式的算法来分配第一资源和第二资源。处理器可以进一步被配置成基于一个或多个工作负荷模式来分配第一资源和第二资源中的至少一者。处理器可以进一步被配置成基于判定第一线程和第二线程中的至少一者是否比另一线程停止更长的时间段来分配第一资源和第二资源中的至少一者。处理器可以进一步被配置成基于判定是否存在与可用的第一资源和第二资源中的至少一者相关联的空条目来分配第一资源和第二资源中的至少一者,并且将第一线程和第二线程中的至少一者分配给可用的第一资源和第二资源中的至少一者。处理器可以进一步被配置成基于优先级方案分配第一资源和第二资源中的至少一者。处理器可以进一步被配置成基于查找模式基表来判定是否已经发生停止。第一静态分区资源和第二静态分区资源可以是指令转换后备缓冲器(ITLB)的资源。
实施例可以包括一种方法,所述方法包括检测用于第一静态分区资源和第二静态分区资源的模式中的至少一者;以及调整第一静态分区资源和第二静态分区资源中的至少一者的分配。
在一些实施例中,以下一项或多项适用。第一静态分区资源和第二静态分区资源可以是同时多线程流水线的资源。可以在第一线程与第二线程之间分配第一静态分区资源和第二静态分区资源。所述方法可以进一步包括基于基于模式的算法来分配第一资源和第二资源。所述方法可以进一步包括基于一个或多个工作负荷模式来分配第一资源和第二资源中的至少一者。所述方法可以进一步包括基于判定第一线程和第二线程中的至少一者是否比另一线程停止更长的时间段来分配第一资源和第二资源中的至少一者。所述方法可以进一步包括基于判定是否存在与可用的第一资源和第二资源中的至少一者相关联的空条目来分配第一资源和第二资源中的至少一者,以及将第一线程和第二线程中的至少一者分配给可用的第一资源和第二资源中的至少一者。所述方法可以进一步包括基于优先级方案分配第一资源和第二资源的至少一者。所述方法可以进一步包括基于查找模式基表来判定是否已经发生停止。第一静态分区资源和第二静态分区资源可以是指令转换后备缓冲器(ITLB)的资源。
实施例可以包括存储至少一个指令的非暂态机器可读介质,所述指令在由处理器执行时使处理器执行一种方法,所述方法包括检测用于第一静态分区资源和第二静态分区资源的模式中的至少一者;以及调整第一静态分区资源和第二静态分区资源中的至少一者的分配。
在一些实施例中,以下一项或多项适用。第一静态分区资源和第二静态分区资源可以是同时多线程流水线的资源。可以在第一线程与第二线程之间分配第一静态分区资源和第二静态分区资源。所述方法可以进一步包括基于基于模式的算法来分配第一资源和第二资源。所述方法可以进一步包括基于一个或多个工作负荷模式来分配第一资源和第二资源中的至少一者。所述方法可以进一步包括基于判定第一线程和第二线程中的至少一者是否比另一线程停止更长的时间段来分配第一资源和第二资源中的至少一者。所述方法可以进一步包括基于判定是否存在与可用的第一资源和第二资源中的至少一者相关联的空条目来分配第一资源和第二资源中的至少一者,以及将第一线程和第二线程中的至少一者分配给可用的第一资源和第二资源中的至少一者。所述方法可以进一步包括基于优先级方案分配第一资源和第二资源的至少一者。所述方法可以进一步包括基于查找模式基表来判定是否已经发生停止。第一静态分区资源和第二静态分区资源可以是指令转换后备缓冲器(ITLB)的资源。
实施例可以包括一种系统,所述系统包括存储器和处理器的系统,所述处理器被配置成检测用于第一静态分区资源和第二静态分区资源中的至少一者的模式;并调整第一静态分区资源和第二静态分区资源中的至少一者的分配。
在一些实施例中,以下一项或多项适用。第一静态分区资源和第二静态分区资源可以是同时多线程流水线的资源。可以在第一线程与第二线程之间分配第一静态分区资源和第二静态分区资源。处理器可以进一步被配置成基于基于模式的算法来分配第一资源和第二资源。处理器可以进一步被配置成基于一个或多个工作负荷模式来分配第一资源和第二资源中的至少一者。处理器可以进一步被配置成基于判定第一线程和第二线程中的至少一者是否比另一线程停止更长的时间段来分配第一资源和第二资源中的至少一者。处理器可以进一步被配置成基于判定是否存在与可用的第一资源和第二资源中的至少一者相关联的空条目来分配第一资源和第二资源中的至少一者,并且将第一线程和第二线程中的至少一者分配给可用的第一资源和第二资源中的至少一者。处理器可以进一步被配置成基于优先级方案分配第一资源和第二资源中的至少一者。处理器可以进一步被配置成基于查找模式基表来判定是否已经发生停止。第一静态分区资源和第二静态分区资源可以是指令转换后备缓冲器(ITLB)的资源。
资源的竞争共享
根据本发明的实施例,处理器核可以支持具有竞争资源共享的SMT。核中的电路、结构或其他资源可以由多个线程基于线程竞争优先级的策略共享。在图9的实施例中,以下资源中的每一者可以基于竞争策略在线程之间或线程当中共享:分支预测单元911、op高速缓存单元912、i高速缓存单元913、解码单元914、指令TLB单元916、整数重命名单元921、整数调度器单元922、整数物理寄存器堆923、ALU 924、AGU 925、FP重命名单元931、FP调度器单元932、FP寄存器堆933、FP乘法器934A和934B、FP加法器935A和935B、加载队列单元941A、d高速缓存单元942和TLB单元943。
如整数重命名单元921中的缓冲器、整数调度器单元922、FP重命名单元931、FP调度器单元932、或加载队列单元941A等这些资源中的一些可以具有可以单独分配给线程的条目、子单元、或其他部分。为方便起见,这种类型的资源可以被称作可分割资源,并且这种类型的分配可以被称作部分分配。其他的,如ALU 924中的每个单独ALU、AGU 925中的每个单独AGU、FP乘法器934A、FP乘法器934B、FP加法器935A或FP加法器935B,只可以为特定的时钟周期、完成操作的连续时钟周期集或其他时间段或操作持续时间进行完全分配。为方便起见,这种类型的资源可以被称作不可分割资源,并且这种类型的分配可以被称作完全分配。
图12是框图,展示了根据本发明的实施例的可以包括在处理器中的资源分配器1200。资源分配器1200可以包括用于将核电路、结构、单元、或资源、或其任何部分分配给特定线程的电路系统、结构和/或硬件。在实施例中,资源分配器1200可以被实施成分配单个资源和/或多个资源。在任一情况下,处理器或处理器核可以包括资源分配器1200的一个或多个实施例的多个实例,每个实例用于分配任何一个或多个资源,每个实例包括图12中所示出的框中的任何一个或多个框,并且每个实例实施任何一种或多种资源分配策略或资源分配策略的组合。
资源分配器1200可以包括跟踪器电路1210、策略电路1220、决策电路1230和分配器电路1240。跟踪器电路可以包括性能历史电路1212、使用情况历史电路1214和线程状态电路1216中的一个或多个。策略电路1220可以包括功率策略电路1222、公平性策略电路1224、性能保证策略电路1226和吞吐量策略电路1228中的一个或多个。实施例可以根据要分配的资源的类型和数量以及期望的策略以各种方式包括、组合和/或实施这些电路中的每一个。
性能历史电路1212可以包括用于以一种或多种方式监测、跟踪、记录和/或报告线程性能的电路系统、结构和/或硬件。在实施例中,性能历史电路1212可以包括每个线程一个或多个硬件计数器1212A,以对每个线程的一个或多个性能度量进行计数,如每一些时间或持续时间的度量引退的指令。例如,时间或持续时间的度量可以是时钟周期的窗口,其中窗口的大小(例如,由字母‘N’表示)可以是固定的(例如,硬接线的),可配置的(例如,通过硬件或固件)和/或可编程的(例如,通过软件)。在实施例中,N可以是1024。
性能历史电路1212还可以包括一个或多个硬件比较器1212B,所述硬件比较器用于将线程的如由计数器1212A测量的性能与一个或多个其他线程进行比较。例如,在N个时钟周期的每个窗口结束时,硬件比较器1212B可以将窗口期间由第一线程引退的指令的数量与由第二线程引退的指令的数量进行比较,并且可以针对下一个窗口重置计数器1212A。如以下所描述的,在所述下一个窗口期间,来自先前窗口的比较结果可以由策略电路1220和/或决策电路1230使用。在实施例中,所述比较结果可以是线程的排序(例如,哪个线程引退了更多指令),所述比较结果可以是比率(例如,计算或近似计算由第一线程引退的指令数与由第二线程引退的指令数的比率),和/或任何其他测量结果和计算结果。
实施例可以包括每个线程多于一个计数器。例如,每个线程可以提供两个单独的计数器:用于跟踪被标识为“高能耗”的指令(例如,其执行通常比其他指令消耗更多的功率)的第一计数器和用于对其他(即,非高能耗)指令进行计数的第二计数器。例如,AVX-512FMA指令(如以下所定义的)可以被标识为高能耗并且使用单独的计数器进行跟踪(可能与其他高能耗指令一起)。
使用情况历史电路1214可以包括用于由线程监测、跟踪、记录和/或报告资源的使用情况的电路系统、结构和/或硬件。在实施例中,使用情况历史电路1214可以包括用于对每个线程的资源使用情况进行计数的一个或多个硬件计数器1214A,以及用于比较线程之间的资源使用情况的一个或多个硬件比较器1214B。如以下描述的,来自计数器1214A和/或比较器1214B的一个或多个结果可以由策略电路1220和/或决策电路1230使用。
例如,对于如缓冲器等可分割资源,计数器可以对线程所占用的条目数进行计数。待用于进一步计算和/或分配决策的计数可以是当前计数、直接在任何时间点报告或使用、和/或可以是在窗口(例如,如以上所描述的大小为N的窗口)内求平均的平均计数。对于不可分割的资源,待用于进一步计算和/或分配决策的计数可以是平均时间的或加权时间的计数(例如,线程在时间窗口内使用资源的次数,其中计数在每个时间窗口结束时重置,或计数在每个时间窗口结束时右移(除以二的幂))。基于这些计数中的任何计数的结果可以是计数本身、计数的每线程排序、和/或计数的线程与线程的比率。
线程状态电路1216可以包括用于监测、跟踪、记录和/或报告线程状态的电路系统、结构和/或硬件。例如,线程状态电路1216可以报告线程当前是否如由于长等待时间L2/L3或其他高速缓存未命中等被停止。
由跟踪器电路1210报告的历史信息和当前信息可以根据由策略电路1220指定的策略用于资源分配计算和决策。这些策略可以包括具有任何优先级、采用任何组合的任何类型的策略,包括考虑功耗、公平性、最低性能保证和吞吐量。
功率策略电路1222可以包括用于实施一个或多个功率策略和/或基于一个或多个策略优先选择或选择线程的电路系统、结构和/或硬件。这些政策可以包括具有任何优先级、采用任何组合的任何类型的功率政策。例如,可以优先选择或选择使用较少高能耗指令的线程或进展较慢的线程。
公平性策略电路1224可以包括用于实施一个或多个公平性策略和/或基于一个或多个策略优先选择或选择线程的电路系统、结构和/或硬件。例如,可以优先选择或选择具有较低近期性能、较低可分割资源占用情况、和/或较低不可分割资源近期使用情况的线程。
性能保证策略电路1226可以包括用于实施一个或多个最低性能保证策略和/或基于一个或多个策略优先选择或选择线程的电路系统、结构和/或硬件。例如,可以基于性能保证策略来优先选择或选择取得进展的低于某个最小阈值的线程。
吞吐量策略电路1228可以包括用于实施一个或多个吞吐量策略和/或基于一个或多个策略优先选择或选择线程的电路系统、结构和/或硬件。例如,可以优先选择或选择比其他线程取得相对更多或更快进展的线程。
功率策略电路1222、公平性策略电路1224、性能保证策略电路1226、吞吐量策略电路1228、和/或任何其他策略电路中的任何一个或全部可以包括单独的存储位置或寄存器,在所述存储位置或寄存器中存储用于实现、修改(例如,加强或削弱策略或一项或多项标准或由策略使用的度量的重要性)、或以其他方式动态影响政策的信息和/或标准。实施例还可以或代替地包括用于此信息的中央或共享存储位置或寄存器。单独或组存储位置中的任何一个或多个被表示为策略寄存器1220A。在实施例中,任何这样的存储位置或寄存器可以是可配置的(例如,通过硬件或固件)或可编程的(例如,通过软件)。
决策电路1230可以包括用于接收来自跟踪器电路1210的信息、结果、和/或信号以及来自策略电路1220的信息、标准、和/或信号以便使用、加权、优先化、过滤、比较、组合、覆盖或以其他方式处理以生成可以导致选择向其分配资源的线程的信息和/或关于所述决策的一个或多个指示或信号的电路系统、结构和/或硬件。例如,在包括吞吐量策略和最低性能保证的实施例中,吞吐量策略可以优先选择第一线程,但是决策电路1230可以覆盖所述优选并选择第二线程以帮助满足第二线程的最低性能保证。在实施例中,资源分配器1200可以包括决策电路1230的一个或多个实施例的多个实例,每个实例用于任何资源或资源组,并且每个实例实施任何一个或多个资源分配策略或资源分配策略的组合,并且每个实例实施任何一种或多种方法或以下所描述的方法的组合,其中每个实例可以被配置成或编程成根据任何方法或方法的组合来选择线程(例如,每个可以为从策略电路1220中的每个单独的策略电路接收到的信息分配不同的权重)。
在包括不可分割资源的实施例中,决策电路1230可以确定哪个线程具有不可分割资源的动态完全分配的优先级。在包括可分割资源的实施例中,决策电路1230可以确定哪个线程具有可分割资源和/或可分割资源的一部分的部分动态分配的优先级,和/或有多少(例如,有多少缓冲器条目)可分割资源要分配给线程。
在实施例中,决策电路1230可以生成或提供一个或多个信息、决策结果、指示符和/或信号,例如通过将其存储在可由分配器电路1240访问的一个或多个存储位置中和/或将其直接发送至分配器电路1240,所述信息、决策结果、指示符和/或信号可以标识具有高于任何数量的其他线程的优先级的单个线程或者可以指定两个或更多个线程的优先级排序。
分配器电路1240可以包括电路系统、结构和/或硬件,其用于从决策电路1230接收信息、决策结果、指示符和/或信号以便例如通过响应来自决策电路1230的表明第一线程具有高于第二线程的优先级的决策来作用于、完成和/或实施资源分配决策,从而发送一个或多个信号以指示将资源(例如,资源1250)全部或部分地分配给所述线程。为此,分配器电路1240可以将一个或多个信号(例如,“去”信号1240C)发送至允许特定线程使用不可分割的资源或者使用可分割资源的一个或多个部分的分派或其他电路。
在实施例中,分配器电路1240还可以接收使用资源一个或多个请求(例如,请求1240A和1240B)。请求可以是来自线程、来自资源和/或来自与线程或资源相关联的任何类型的分派电路的信号和/或任何其他类型的指示。在实施例中,分配器电路1240可以例如使用来自决策电路1230的信息、决策结果、指示符和/或信号在线程请求之间或当中进行选择或仲裁,以确定要被分配资源的线程。
在实施例中,分配器电路1240可以包括用于受制于或基于附加信息或约束来作用于来自决策电路1230的分配决策的电路系统、结构和/或硬件。例如,分配器电路1240可以包括一组固定的、可配置的、或可编程的存储位置或寄存器1242,其中每个线程具有一个寄存器,其指示有多少可分割资源的部分(例如,有多少缓冲器的条目)专用于每个线程,每个线程一个的用于跟踪每一部分中有多少当前由每个线程使用的一组计数器1244,以及每个线程一个的用于检查线程是否正在使用其完全分配的一组比较器1246。分配器电路1240可以使用来自比较器1246的结果以接受或拒绝来自决策电路1230的分配决策。代替地或可替代地,实施例可以包括用于可分割资源的每一部分的指示符的存储(例如,缓冲器中的每个条目的位或字段),以指示允许哪个线程(或哪些线程)使用所述资源的所述部分,并且分配器电路1240可以使用所存储的指示符以接受或拒绝来自决策电路1230的分配决定。
本发明的实施例可以包括一种处理器,所述处理器包括资源分配器和包括跟踪器电路、策略电路、决策电路和分配器电路的资源。跟踪器电路可以用于跟踪资源的性能历史、资源的使用情况历史和线程状态中的至少一者,策略电路可以用于提供用于实施资源分配策略的策略信息。决策电路可以用于基于跟踪器电路的输出和策略信息来选择线程。分配器电路可以用于使用决策电路的输出将资源分配给线程。
资源的算法竞争共享
根据一些示例性实施例,处理器核可以支持算法SMT特征。在一些实施例中,此特征解决了对在流水线中竞争共享的可用资源的线程分配问题。在一些实施例中,使用优先级算法解决了这个问题。在一些实施例中,流水线中的分支预测器块可以竞争地共享,并且可以使用优先级算法来进行高效的条目分配。在一些实施例中,优先级算法可以在硬件和/或软件中实施。在一些实施例中,可以使用两个或更多个线程来执行线程分配。在一些实施例中,线程分配可以将最高效的线程分配给流水线中的可用资源,以实现最高每时钟指令(IPC)和/或流水线吞吐量。在一些实施例中,此特征可以提供用于优先化对可用资源的线程分配的最佳已知算法。随着线程数量的增加和/或线程之间的上下文切换的增加,所述特征可以通过高效地分配资源来提供进一步的益处。
图13是框图,展示了根据实施例的可以包括在处理器1300中的算法SMT特征。优先级算法硬件可以例如包括基于动态行为的管理。优先级硬件可以包括事件检测块1301、性能计数器标记块1302、死锁预防块1303和指令类型/种类块1304中的至少一者。事件检测块1301可以例如检测一个或多个事件,如核、清除频率(例如,JE清除和CR清除)、BR的频率、中断以及高速缓存未命中。性能计数器标记块1302可以例如对以下一项或多项进行计数:指令引退、代码未命中、L2/L3未命中。死锁预防块1303可以预防死锁状态。指令类型/种类块1304可以例如允许浮点指令引退。在一些实施例中,可以在软件和/或固件中实施上述一个或多个。另外地,在一些实施例中,软件可以允许操作系统(OS)和/或虚拟机管理器(VMM)设置优先级。
在一些实施例中,优先级算法可以具有如机器学习等学习能力。学习能力可以提供更智能的线程选择,并且可以基于例如正在收集的历史数据和/或模式进行自适应。
在一些实施例中,可能存在多于一个具有类似事件的线程。在一些实施例中,在线程之间存在束缚的情况下,可以使用优先级方案。例如,可以通过随机选择、选择较低编号的线程、选择较高编号的线程、和/或选择交替的线程来执行束缚打破(tie-breaking)。
图14是流程图,展示了根据实施例的用于可以由处理器执行的算法SMT特征的方法。如在1401中所展示的,所述方法可以包括判定流水线中的竞争共享的资源是否可用。如在1402中所展示的,所述方法可以进一步包括对线程进行优先级排序。例如,如果存在多于一个事件,则可以对线程进行优先化。如在1403中所展示的,所述方法可以进一步包括挑选最高优先级事件或标记。例如,可以基于分配算法来选择最高优先级事件或标记。如在1404中所展示的,所述方法可以进一步包括将资源分配给线程。例如,可以基于优先级算法将资源分配给最期望线程。
图15是框图,展示了根据实施例的可以包括在处理器中的算法SMT特征。图15示出了基于算法优先级块将例如线程T0等线程分配给竞争共享的资源。例如,所述特征可以例如根据图14中的框1401确定竞争共享的资源1501是可用的。算法优先级块1502可以在存在多于一个事件,例如事件Evt1和事件Evt2时,例如根据图14中的框1402进行优先化。算法优先级块1502还可以例如根据图14中的框1403基于分配算法挑选最高优先级事件或标记。算法优先级块1502还可以基于优先级算法将资源例如1501分配给最大禁用线程,例如T0。
在一些实施例中,优先级算法可以包括整数重命名算法和/或浮点重命名算法。优先级算法可以包括基于如核、清除和中断等事件的基于事件的确定。优先级算法可以包括性能计数器,其可以对如指令引退和代码未命中等发生进行计数。优先级算法可以包括使用死锁预防来限制物理寄存器,和/或确定高速缓存未命中。优先级算法可以包括确定指令类型和种类。优先级算法可以包括分配寄存器,所述分配寄存器例如为浮点字线分配更多的浮点寄存器。优先级算法可以包括通过软件管理优先级。例如,优先级算法可以允许操作系统和/或虚拟机管理器提供优先级。优先级算法可以包括例如基于动态行为的硬件管理优先级。
在一些实施例中,优先级算法可以包括分支预测器算法。在一些实施例中,分支预测器算法可以基于以下一项或多项来控制分支目标缓冲器(BTB)的动作:清除频率(例如,JE清除和CR清除)、分支频率(例如,全部、采用、未采用)、分支以外的性质(例如,指令引退、L2/L3未命中)。优先级算法可以包括通过软件管理优先级。例如,优先级算法可以允许操作系统和/或虚拟机管理器提供优先级。优先级算法可以包括例如基于动态行为的硬件管理优先级。图16示出了根据示例性实施例的实施分支预测器优先级算法的框图。分区逻辑1602可以接收如清除频率(例如,JE清除和CR清除)、分支频率(例如,全部、采用、未采用)、分支以外的性质(例如,指令引退、L2/L3未命中)等输入1603。分区逻辑1602可以基于输入1603分配分支目标缓冲器(BTB)1601的条目。
实施例可以包括被配置成标识可用的竞争共享的资源的处理器;至少部分地基于优先级算法选择线程;并且将所选线程分配给可用的竞争共享的资源。
在一些实施例中,以下一项或多项适用。在一些实施例中,处理器可以进一步被配置成竞争地共享分支预测并使用优先级算法进行条目分配。在一些实施例中,处理器可以进一步被配置成基于优先级算法分配第二线程。在一些实施例中,处理器可以进一步被配置成将最高效的线程分配给流水线中的可用资源,以增加每时钟指令(IPC)和流水线吞吐量中的至少一者。在一些实施例中,处理器可以进一步被配置成提供用于优先化对可用资源的线程分配的最佳已知算法。在一些实施例中,处理器可以进一步被配置成当检测到两个或更多个事件时进行优先化。在一些实施例中,处理器可以进一步被配置成基于分配算法来选择最高优先级事件和标记中的至少一者。
在一些实施例中,处理器可以包括事件检测块、性能计数器标记块、死锁预防块和指令类型/种类块。在一些实施例中,事件检测块可以检测核、清除频率、BR频率、中断和高速缓存未命中的至少一者。在一些实施例中,性能计数器标记块可以对指令引退、代码未命中、和L2/L3未命中的至少一者进行计数。在一些实施例中,死锁预防块可以预防死锁状态。在一些实施例中,指令类型/种类块可以允许浮点指令引退。在一些实施例中,处理器可以进一步被配置成允许操作系统(OS)和虚拟机管理器(VMM)中的至少一者设置优先级。在一些实施例中,优先级算法可以具有至少一种学习能力。在一些实施例中,至少一种学习能力可以基于历史数据和工作负荷模式中的至少一者进行自适应。
在一些实施例中,优先级算法可以包括整数重命名算法和浮点重命名算法中的至少一者。优先级算法可以包括基于事件的确定。基于事件的确定可以包括核、清除和中断中的一项或多项。优先级算法可以包括性能计数器。性能计数器可以对发生进行计数。发生可以是指令引退和代码未命中的一项或多项。优先级算法可以包括限制物理寄存器、使用死锁预防以及确定高速缓存未命中中的一项或多项。优先级算法可以包括确定指令类型和种类。优先级算法可以包括分配寄存器。分配寄存器可以包括为浮点字线分配更多的浮点寄存器。优先级算法可以包括通过软件管理优先级。优先级算法可以允许操作系统和虚拟机管理器中的一项或多项提供优先级。优先级算法可以包括硬件管理的优先级。硬件管理的优先级可以基于动态行为。
在一些实施例中,优先级算法可以包括分支预测器算法。在一些实施例中,分支预测器算法可以至少部分地基于以下一项或多项来控制分支目标缓冲器(BTB)的动作:清除频率、分支频率、分支以外的性质。清除可以包括JE清除和CR清除中的一项或多项。分支频率可以包括全部、采用、未采用中的一项或多项。分支以外的性质可以包括指令引退、L2/L3未命中的一项或多项。优先级算法可以包括通过软件管理优先级。优先级算法可以允许操作系统和虚拟机管理器中的一项或多项提供优先级。优先级算法可以包括硬件管理的优先级。硬件管理的优先级可以至少部分地基于动态行为。优先级算法可以包括使用分区逻辑来接收输入。输入可以包括清除频率、分支频率、分支以外的性质中的一项或多项。分区逻辑可以基于输入分配分支目标缓冲器(BTB)的条目。
实施例可以包括一种方法,所述方法包括:标识可用的竞争共享的资源;至少部分地基于优先级算法选择线程;以及将所选线程分配给可用的竞争共享的资源。
在一些实施例中,以下一项或多项适用。在一些实施例中,所述方法可以进一步包括竞争地共享分支预测以及使用优先级算法进行条目分配。在一些实施例中,所述方法可以进一步包括基于优先级算法分配第二线程。在一些实施例中,所述方法可以进一步包括将最高效的线程分配给流水线中的可用资源,以增加每时钟指令(IPC)和流水线吞吐量中的至少一者。在一些实施例中,所述方法可以进一步包括提供用于优先化对可用资源的线程分配的最佳已知算法。在一些实施例中,所述方法可以进一步包括当检测到两个或更多个事件时进行优先化。在一些实施例中,所述方法可以进一步包括基于分配算法来选择最高优先级事件和标记中的至少一者。
在一些实施例中,所述方法可以进一步包括事件检测块、性能计数器标记块、死锁预防块和指令类型/种类块。在一些实施例中,所述方法可以进一步包括使用事件检测块来检测核、清除频率、BR频率、中断和高速缓存未命中的至少一者。在一些实施例中,所述方法可以进一步包括使用性能计数器标记块来对指令引退、代码未命中和L2/L3未命中的至少一者进行计数。在一些实施例中,所述方法可以进一步包括使用死锁预防块来预防死锁状态。在一些实施例中,所述方法可以进一步包括使用指令类型/种类块来允许浮点指令引退。在一些实施例中,所述方法可以进一步包括允许操作系统(OS)和虚拟机管理器(VMM)中的至少一者设置优先级。在一些实施例中,优先级算法可以具有至少一种学习能力。在一些实施例中,至少一种学习能力可以基于历史数据和工作负荷模式中的至少一者进行自适应。
在一些实施例中,优先级算法可以包括整数重命名算法和浮点重命名算法中的至少一者。优先级算法可以包括基于事件的确定。基于事件的确定可以包括核、清除和中断中的一项或多项。优先级算法可以包括性能计数器。性能计数器可以对发生进行计数。发生可以是指令引退和代码未命中的一项或多项。优先级算法可以包括限制物理寄存器、使用死锁预防以及确定高速缓存未命中中的一项或多项。优先级算法可以包括确定指令类型和种类。优先级算法可以包括分配寄存器。分配寄存器可以包括为浮点字线分配更多的浮点寄存器。优先级算法可以包括通过软件管理优先级。优先级算法可以允许操作系统和虚拟机管理器中的一项或多项提供优先级。优先级算法可以包括硬件管理的优先级。硬件管理的优先级可以基于动态行为。
在一些实施例中,优先级算法可以包括分支预测器算法。在一些实施例中,分支预测器算法可以至少部分地基于以下一项或多项来控制分支目标缓冲器(BTB)的动作:清除频率、分支频率、分支以外的性质。清除可以包括JE清除。分支频率可以包括全部、采用、未采用中的一项或多项。分支以外的性质可以包括指令引退、L2/L3未命中的一项或多项。优先级算法可以包括通过软件管理优先级。优先级算法可以允许操作系统和虚拟机管理器中的一项或多项提供优先级。优先级算法可以包括硬件管理的优先级。硬件管理的优先级可以至少部分地基于动态行为。优先级算法可以包括使用分区逻辑来接收输入。输入可以包括清除频率、分支频率、分支以外的性质中的一项或多项。分区逻辑可以基于输入分配分支目标缓冲器(BTB)的条目。
实施例可以包括存储至少一个指令的非暂态机器可读介质,所述指令在由处理器执行时使处理器执行一种方法,所述方法包括:标识可用的竞争共享的资源;至少部分地基于优先级算法选择线程;以及将所选线程分配给可用的竞争共享的资源。
在一些实施例中,以下一项或多项适用。在一些实施例中,所述方法可以进一步包括竞争地共享分支预测以及使用优先级算法进行条目分配。在一些实施例中,所述方法可以进一步包括基于优先级算法分配第二线程。在一些实施例中,所述方法可以进一步包括将最高效的线程分配给流水线中的可用资源,以增加每时钟指令(IPC)和流水线吞吐量中的至少一者。在一些实施例中,所述方法可以进一步包括提供用于优先化对可用资源的线程分配的最佳已知算法。在一些实施例中,所述方法可以进一步包括当检测到两个或更多个事件时进行优先化。在一些实施例中,所述方法可以进一步包括基于分配算法来选择最高优先级事件和标记中的至少一者。
在一些实施例中,所述方法可以进一步包括事件检测块、性能计数器标记块、死锁预防块和指令类型/种类块。在一些实施例中,所述方法可以进一步包括使用事件检测块来检测核、清除频率、BR频率、中断和高速缓存未命中的至少一者。在一些实施例中,所述方法可以进一步包括使用性能计数器标记块来对指令引退、代码未命中和L2/L3未命中的至少一者进行计数。在一些实施例中,所述方法可以进一步包括使用死锁预防块来预防死锁状态。在一些实施例中,所述方法可以进一步包括使用指令类型/种类块来允许浮点指令引退。在一些实施例中,所述方法可以进一步包括允许操作系统(OS)和虚拟机管理器(VMM)中的至少一者设置优先级。在一些实施例中,优先级算法可以具有至少一种学习能力。在一些实施例中,至少一种学习能力可以基于历史数据和工作负荷模式中的至少一者进行自适应。
在一些实施例中,优先级算法可以包括整数重命名算法和浮点重命名算法中的至少一者。优先级算法可以包括基于事件的确定。基于事件的确定可以包括核、清除和中断中的一项或多项。优先级算法可以包括性能计数器。性能计数器可以对发生进行计数。发生可以是指令引退和代码未命中的一项或多项。优先级算法可以包括限制物理寄存器、使用死锁预防以及确定高速缓存未命中中的一项或多项。优先级算法可以包括确定指令类型和种类。优先级算法可以包括分配寄存器。分配寄存器可以包括为浮点字线分配更多的浮点寄存器。优先级算法可以包括通过软件管理优先级。优先级算法可以允许操作系统和虚拟机管理器中的一项或多项提供优先级。优先级算法可以包括硬件管理的优先级。硬件管理的优先级可以基于动态行为。
在一些实施例中,优先级算法可以包括分支预测器算法。在一些实施例中,分支预测器算法可以至少部分地基于以下一项或多项来控制分支目标缓冲器(BTB)的动作:清除频率、分支频率、分支以外的性质。清除可以包括JE清除和CR清除中的一项或多项。分支频率可以包括全部、采用、未采用中的一项或多项。分支以外的性质可以包括指令引退、L2/L3未命中的一项或多项。优先级算法可以包括通过软件管理优先级。优先级算法可以允许操作系统和虚拟机管理器中的一项或多项提供优先级。优先级算法可以包括硬件管理的优先级。硬件管理的优先级可以至少部分地基于动态行为。优先级算法可以包括使用分区逻辑来接收输入。输入可以包括清除频率、分支频率、分支以外的性质中的一项或多项。分区逻辑可以基于输入分配分支目标缓冲器(BTB)的条目。
实施例可以包括一种系统,所述系统包括存储器和处理器,所述处理器被配置成标识可用的竞争共享的资源;至少部分地基于优先级算法选择线程;并且将所选线程分配给可用的竞争共享的资源。
在一些实施例中,优先级算法可以包括整数重命名算法和浮点重命名算法中的至少一者。优先级算法可以包括基于事件的确定。基于事件的确定可以包括核、清除和中断中的一项或多项。优先级算法可以包括性能计数器。性能计数器可以对发生进行计数。发生可以是指令引退和代码未命中的一项或多项。优先级算法可以包括限制物理寄存器、使用死锁预防以及确定高速缓存未命中中的一项或多项。优先级算法可以包括确定指令类型和种类。优先级算法可以包括分配寄存器。分配寄存器可以包括为浮点字线分配更多的浮点寄存器。优先级算法可以包括通过软件管理优先级。优先级算法可以允许操作系统和虚拟机管理器中的一项或多项提供优先级。优先级算法可以包括硬件管理的优先级。硬件管理的优先级可以基于动态行为。
在一些实施例中,优先级算法可以包括分支预测器算法。在一些实施例中,分支预测器算法可以至少部分地基于以下一项或多项来控制分支目标缓冲器(BTB)的动作:清除频率、分支频率、分支以外的性质。清除可以包括JE清除和CR清除中的一项或多项。分支频率可以包括全部、采用、未采用中的一项或多项。分支以外的性质可以包括指令引退、L2/L3未命中的一项或多项。优先级算法可以包括通过软件管理优先级。优先级算法可以允许操作系统和虚拟机管理器中的一项或多项提供优先级。优先级算法可以包括硬件管理的优先级。硬件管理的优先级可以至少部分地基于动态行为。优先级算法可以包括使用分区逻辑来接收输入。输入可以包括清除频率、分支频率、分支以外的性质中的一项或多项。分区逻辑可以基于输入分配分支目标缓冲器(BTB)的条目。
在一些实施例中,以下一项或多项适用。在一些实施例中,处理器可以进一步被配置成竞争地共享分支预测并使用优先级算法进行条目分配。在一些实施例中,处理器可以进一步被配置成基于优先级算法分配第二线程。在一些实施例中,处理器可以进一步被配置成将最高效的线程分配给流水线中的可用资源,以增加每时钟指令(IPC)和流水线吞吐量中的至少一者。在一些实施例中,处理器可以进一步被配置成提供用于优先化对可用资源的线程分配的最佳已知算法。在一些实施例中,处理器可以进一步被配置成当检测到两个或更多个事件时进行优先化。在一些实施例中,处理器可以进一步被配置成基于分配算法来选择最高优先级事件和标记中的至少一者。
在一些实施例中,处理器可以包括事件检测块、性能计数器标记块、死锁预防块和指令类型/种类块。在一些实施例中,事件检测块可以检测核、清除频率、BR频率、中断和高速缓存未命中的至少一者。在一些实施例中,性能计数器标记块可以对指令引退、代码未命中、和L2/L3未命中的至少一者进行计数。在一些实施例中,死锁预防块可以预防死锁状态。在一些实施例中,指令类型/种类块可以允许浮点指令引退。在一些实施例中,处理器可以进一步被配置成允许操作系统(OS)和虚拟机管理器(VMM)中的至少一者设置优先级。在一些实施例中,优先级算法可以具有至少一种学习能力。在一些实施例中,至少一种学习能力可以基于历史数据和工作负荷模式中的至少一者进行自适应。
在一些实施例中,优先级算法可以包括整数重命名算法和浮点重命名算法中的至少一者。优先级算法可以包括基于事件的确定。基于事件的确定可以包括核、清除和中断中的一项或多项。优先级算法可以包括性能计数器。性能计数器可以对发生进行计数。发生可以是指令引退和代码未命中的一项或多项。优先级算法可以包括限制物理寄存器、使用死锁预防以及确定高速缓存未命中中的一项或多项。优先级算法可以包括确定指令类型和种类。优先级算法可以包括分配寄存器。分配寄存器可以包括为浮点字线分配更多的浮点寄存器。优先级算法可以包括通过软件管理优先级。优先级算法可以允许操作系统和虚拟机管理器中的一项或多项提供优先级。优先级算法可以包括硬件管理的优先级。硬件管理的优先级可以基于动态行为。
在一些实施例中,优先级算法可以包括分支预测器算法。在一些实施例中,分支预测器算法可以至少部分地基于以下一项或多项来控制分支目标缓冲器(BTB)的动作:清除频率、分支频率、分支以外的性质。清除可以包括JE清除和CR清除中的一项或多项。分支频率可以包括全部、采用、未采用中的一项或多项。分支以外的性质可以包括指令引退、L2/L3未命中的一项或多项。优先级算法可以包括通过软件管理优先级。优先级算法可以允许操作系统和虚拟机管理器中的一项或多项提供优先级。优先级算法可以包括硬件管理的优先级。硬件管理的优先级可以至少部分地基于动态行为。优先级算法可以包括使用分区逻辑来接收输入。输入可以包括清除频率、分支频率、分支以外的性质中的一项或多项。分区逻辑可以基于输入分配分支目标缓冲器(BTB)的条目。
线程切换
根据本发明的实施例,处理器核可以支持SMT线程切换特征。在使用共享资源实施SMT的处理器核中,SMT可能涉及选择在处理器发布/执行流水线中的各个级处要选取两个或更多个线程中的哪一个。可能期望本发明的包括SMT线程切换特征的实施例来提供受性能、公平性和其他因素(例如,提高性能、降低功耗和实施功率节省特征、以及提高公平性、最低性能保证、吞吐量、每时钟指令(IPC)、每单位时间指令、服务质量、时间和/或存储器效率、仅列出一些适用标准)之间的优先级影响的这种选择。例如,在处理器核900的发布/执行流水线中,可以使用仲裁来选择分支预测器911将在其上开始预测的线程、在i-TLB 916中查找预测的线程、在i高速缓存913中查找i-TLB转换的线程、在解码器914中解码来自i高速缓存913的字节的线程、从op高速缓存912读取的线程、从微操作队列915读取的线程等。
图17是框图,展示了根据本发明的实施例的可以包括在处理器中的用于SMT线程切换特征的仲裁电路1700。仲裁电路1700可以包括用于选择在处理器发布/执行流水线中的各个级中的任何级处要选取两个或更多个线程中的哪一个线程进行推进的电路系统、结构和/或硬件。处理器或处理器核可以包括仲裁电路1700的一个或多个实施例的多个实例,每个实例用于任何一个或多个流水线级或资源,每个实例包括图17中所示出的块中的任何一个或多个块,并且每个实例用于实施任何一种或多种方法或以下所描述的方法的组合。此外,仲裁电路1700的任何实例的全部或部分可以被包括在、集成在或并入处理器或处理器核的其他电路系统、结构和/或硬件中,如资源分配、调度或共享电路系统。
仲裁电路1700可以包括简单循环电路1710、高吞吐量循环电路1720、动态循环电路1730、和软件可控的循环电路1740、以及实施任何其他循环或其他(多个)方案所期望的任何其他电路系统。
简单循环电路1710可以包括用于执行简单循环方案以选择线程的电路系统、结构和/或硬件。例如,所述简单循环电路可以实施选取不断地在选择之间交替进行的方案;即,线程0,然后线程1,然后线程0,然后线程1等等;或者线程0,线程1,线程2,线程0,线程1,线程2等等;等。
高吞吐量循环电路1720可以包括用于执行经修改循环方案以基于对优先化吞吐量而不是其他可能因素(如公平性)的期望来选择线程的电路系统、结构和/或硬件。例如,所述高吞吐量循环电路可以实施简单循环方案(例如,如以上所描述的),只要每个线程在线程切换点处具有可用工作,否则,其可以选择具有可用工作的线程。在具有多于两个可从中选择的线程的实施例中,所述高吞吐量循环电路可以从简单循环方案中丢弃任何没有可用工作的线程。
动态循环电路1730可以包括用于执行动态可修改循环方案以基于线程的动态行为选择线程的电路系统、结构和/或硬件。动态循环电路1730可以包括和/或使用性能计数器、其他硬件计数器、或其他结构(其中任何一项表示为1732)以提供决策所依据的信息(例如,启发法)。优先选择线程的线程选择所基于的比率或其他标准以及要使用动态行为度量的指示,可以是固定的(例如,硬接线的)、可配置的(例如,通过硬件或固件)、或可编程的(例如,通过软件)。例如,第一线程可以按与第二线程2:1的比率(例如,线程0,线程0,线程1,线程0,线程0,线程1等)被优先选择或选择。确定一个线程比另一个线程优先选择的因素或标准的示例是:误预测率、每周期指令、高速缓存未命中率等。)
软件可控的循环电路1740可以包括用于执行经修改循环方案以基于由软件(例如,和操作系统或虚拟机监测器)提供的优先级来选择线程的电路系统、结构和/或硬件,所述优先级可以比以其他方式可用于软件具有更多关于期望系统行为的信息。可以在仲裁电路1700内或可以由所述仲裁电路访问的可编程存储位置或寄存器1742中提供指示、以及优先选择的比率和/或关于使用哪种方案或如何实施方案的任何其他信息(例如,是否以及如何将软件可控的循环与动态和/或可修改循环相结合)。
在实施例中,方法的组合是可能的。例如,软件可以提供(例如,使用针对软件可控循环的电路系统和/或技术)关于优先选择哪个线程的提示,并且硬件(例如,动态循环的电路系统或技术)可以基于线程行为和/或启发法确定优先选择所述线程所依据的比率。
本发明的实施例可以包括一种处理器,所述处理器包括仲裁电路。仲裁电路可以包括第一循环电路和第二循环电路。第一循环电路可以用于实施简单循环线程切换方案。第二循环电路可以用于实施动态修改的循环线程切换方案。
死锁避免
根据本发明的实施例,处理器核可以支持SMT死锁避免特征。在一些情况下,资源共享可能导致线程由于缺少一个或多个资源而进展缓慢,由于无法推进(例如,引退指令)而没有进展和/或任何其他死锁类型情况。因此,用户体验可能包括显著地较慢的性能或错误、故障、或崩溃。可能期望本发明的包括死锁避免特征的实施例来减少死锁类型情况并改善用户体验。这些实施例的其他益处可以包括,例如,提高性能、降低功耗和实施功率节省特征、以及提高公平性、最低性能保证、吞吐量、每时钟指令(IPC)、每单位时间指令、服务质量、时间和/或存储器效率、仅列出一些适用的标准。
图18是框图,展示了根据本发明的实施例的可以包括在处理器中的死锁避免硬件1800。死锁避免硬件1800可以包括用于影响核电路、结构、单元和资源及其部分的分配和使用情况以减少死锁类型情况的发生的电路系统、结构和/或硬件。在实施例中,死锁避免硬件1800可以被实施成避免涉及单个资源和/或多个资源的死锁。在任何一种情况下,处理器或处理器核可以包括死锁避免硬件1800的一个或多个实施例的多个实例,每个实例用于任何一个或多个资源,每个实例包括图18中所示出的块中的任何一个或多个块,并且每个实例用于实施任何一种或多种方法或以下所描述的方法的组合。此外,死锁避免硬件1800的任何实例的全部或部分可以被包括在、集成在或并入处理器或处理器核的其他电路系统、结构和/或硬件中,如资源分配、调度或共享电路系统。
死锁避免硬件1800可以包括分配器电路1810,所述分配器电路可以包括用于将资源分配给线程的电路系统、结构和/或硬件。分配器电路1810的实施例的实施例或实例可以表示或对应于图12中的分配器电路1240的实施例或实施例的实例。
死锁避免硬件1800、分配器电路CGA10和/或处理器或处理器核的任何其他部分可以包括用于动态禁用、阻止或以其他方式防止分配器电路CGA10将资源或可分割资源的一部分分配给任何一个或多个特定线程的电路系统、结构和/或硬件。例如,在包括如以上所描述的那些、用于在线程请求之间或当中选择或仲裁的任何类型的循环方案的实施例中,阻止特定线程使用资源可以通过临时从循环方案中丢弃所述线程来实施。实施例可以包括AND门,其具有作为一个输入的线程请求信号(例如,1240A、1240B)和线程阻塞信号的补充(例如,由电路系统基于如以下所描述的资源使用情况计数器1820或任何其他信息、状态或信号生成),使得AND门的输出可以指示线程是要被分配资源还是被视为要为其分配资源的候选线程。
死锁避免硬件1800还可以包括资源使用情况计数器1820。在实施例中,资源使用情况计数器1820可以是每线程硬件计数器,其用于对特定线程正在占用或使用的可分割资源(例如,缓冲器、队列、调度器,保留站)的部分(例如,条目)的数量进行计数。对于特定资源,特定线程的资源使用情况计数器1820的实例可以响应于分配器电路1810向所述线程分配条目而增加,响应于所述条目被解除分配或移除而减小,并且响应于资源被转储清除而被清除。可以动态地禁用或阻止(例如,如以上所描述的)分配器电路1810以免响应于线程的计数达到或超过阈值而向所述线程分配条目。
可以选择阈值小于资源中的条目总数,以防止任何单个线程同时使用所有条目,这可能导致死锁类型情况。还可以基于其他因素或标准来选择或调整所述阈值,包括与接近死锁类型情况的容忍度和/或对吞吐量或性能的其他度量或因素进行优先化的期望相关的因素或标准。阈值可以是固定的(例如,硬接线的)、可配置的(例如,通过硬件或固件)、或可编程的(例如,通过软件)。
在实施例中,可分割资源可以针对特定的线程和线程组进行逻辑分区。例如,在具有N个条目组的可分割资源中,N1条目的子集(其中N1小于N)可以被保留仅供第一线程使用,N2条目的子集(其中N2小于N)可以被保留仅一秒,并且可以将N-(N1+N2)条目的剩余子集分配给任一线程。在实施例中,这种方法可以由分配器电路1810的一个或多个实例强制执行。
在加载的完成取决于从高速缓存读出数据的实施例中,每个高速缓存条目可以包括用于指示条目被包括来自所述条目的加载的线程锁定的位。可以防止使用所述指示符位组代替条目,直到结合加载完成清除位或线程经历流水线转储清除事件(例如,错误预测的分支)。在实施例中,这种方法可以由分配器电路1810的一个或多个实例强制执行。
在实施例中,资源使用情况计数器1820可以是每线程硬件计数器,其用于对时钟周期的数量进行计数,所述时钟周期是对于特定线程的引退队列中的最旧条目而言,所述线程(停止线程)一直等待以便相应地分派给不可分割资源的时钟周期(所述条件涉及引退队列,因为所述线程需要分派槽和回写槽)。响应于停止线程的计数达到或超过阈值,分配器电路1810可以被动态地禁用或阻止(例如,如以上所描述的)以便不将来自不同线程的操作分配给不可分割资源的调度器。可替代地,对于给定数量的时钟周期,可以禁用或阻止向不可分割资源分派任何操作。
这些方法可以通过使用如执行单元等可以执行消耗一系列时钟周期的不同操作的不可分割资源来防止死锁类型情况。例如,其可以允许可以在单个周期中完成的操作使用可能以其他方式一直忙于完成一系列多周期操作的资源。
阈值可以是固定的(例如,硬接线的)、可配置的(例如,通过硬件或固件)、或可编程的(例如,通过软件)。可以基于各种因素或标准来选择和/或动态地调整包括与吞吐量相关的因素或标准以及与公平性相关的因素或标准。例如,如果公平性是优先的,则阈值可以逐渐降低以便更积极地允许每个线程取得进展;如果吞吐量是优先的,则其可以被逐渐增加以便更积极地允许正在取得进展的线程继续而不中断。
本发明的实施例可以包括一种处理器,所述处理器包括死锁避免硬件和资源。死锁避免硬件可以包括分配器电路和资源使用情况计数器。分配器电路可以基于来自资源使用情况计数器的输出来判定是否将资源分配给线程。
数据路径特征
根据本发明的实施例的处理器核可以包括用于支持具有比ISA提供的数据路径窄的数据路径的指令集架构(ISA)的各种特征。使用以下的非限制性示例单独地描述了多个这样的特征,但是实施例可以包括这些特征的任何组合。
处理器核可以通过将操作分成对较小操作数进行操作的多个微操作(μop)(例如,对内部128位的值进行操作的多个μop)来支持允许对较大大小的操作数进行这些操作的特征(例如,对内部256位的操作数进行加载/存储/算术运算)。出于各种原因,这种特征可能是期望的:例如,处理器可以支持涉及较大操作数大小的指令集架构,但可以使用基于较小操作数大小的微架构。另外地或可替代地,处理器可以支持涉及较大操作数大小的指令集架构,并且具有包括这种较大大小的寄存器的寄存器堆,但是可以包括可能仅处置较小组块中的数据的执行单元。另外地或可替代地,处理器可以具有较大大小的寄存器堆、执行单元、和加载/存储端口,但为了例如功率节省或调度的目的,可能需要使用较小大小的操作数执行μop。包括以下所描述特征的处理器的其他潜在益处包括但不限于,提高性能、降低功耗和实施功率节省特征、以及提高公平性、最低性能保证、吞吐量、每时钟指令(IPC)、每单位时间指令、服务质量、时间和/或存储器效率、仅列出一些适用的标准。
256位到128位数据路径加载和存储
根据本发明的实施例,处理器核可以支持允许使用128位微操作(μop)进行256位加载和存储的特征。在一些实施例中,处理器可以支持256位指令集架构,但可以使用包括128位寄存器堆的128位微架构。在一些实施例中,处理器可以具有256位指令集架构和256位寄存器堆,但可以包括可能仅处置128位组块中的数据的加载和/或存储端口。
图19是图示,示出了根据一些实施例的使用一对128位μop将256位加载到256位寄存器堆。存储器1901包括如存储在存储器位置1902中的值等一系列256位值。第一μop 1903检索存储在存储器位置1902中的值的下半部分,并且第二μop 1904检索存储在存储器位置1902中的值的上半部分。存储在存储器位置1902中的值的两半被混合在一起(1905),并且混合操作的结果被放置在256位寄存器堆1906中。
图20是流程图,表示根据一些实施例的以上参考图19所描述的过程。在对指令进行解码的过程期间(2001),如果检测到256位加载,则生成包括第一加载μop、第二加载μop和混合μop的3个μop(框2002)。μop被调度以被执行,并且对于每个μop,处理器可以等待直到要加载/混合的数据准备就绪(2003)。当执行第一加μop作时,处理器可以检索存储在存储器位置1902中的值的下半部分,如框2004中所示出的。当执行第二加载μop时,处理器可以检索存储在存储器位置1902中的值的上半部分,如框2004中所示出的。当执行混合μop时,将存储在存储器位置1902中的两个检索到的值的一半合并并放置在256位寄存器堆中,如框2004中所示出的。最后,经解码指令在完成后引退,如框2005中所示出的。
在一些实施例中,可以使用128位μop将值从256位寄存器堆存储到存储器中。图21是图示,展示了此过程。256位寄存器堆2101包括如寄存器2102等256位宽的寄存器。第一存储μop 2103检索存储在寄存器2102中的值的下半部分并将其存储在存储器位置2104的下半部分中。第二存储μop 2105检索存储在寄存器2102中的值的上半部分并将其存储在存储器位置2104的上半部分中。
图22是流程图,表示根据一些实施例的以上参考图21所描述的过程。在对指令进行解码的过程期间(2201),如果检测到256位存储,则生成包括第一存储μop、第二存储μop的2个μop(框2202)。μop被调度以被执行,并且对于每个微操作,处理器可以等待直到要存储的数据准备就绪(2203)。当执行第一存储μop时,如框2204中所示出的,处理器可以检索存储在寄存器2102中的值的下半部分,并将其写入存储器位置2104的下半部分。当执行第二存储μop时,如框2204中所示出的,处理器可以检索存储在寄存器2102中的值的上半部分,并将其写入存储器位置2104的上半部分。最后,经解码指令在完成后引退,如框2205中所示出的。
在一些实施例中,256位加载指令可以通过执行两个μop将256位值加载到两个128位寄存器中,第一μop用于将256位值的下半部分加载到第一128位寄存器中,并且第二μop用于将256位值的上半部分加载到第二128位寄存器中。
在一些实施例中,使用作为“双泵”的单个μop来完成加载——即,执行两次,一次用于加载来自存储器的值的下半部分,并且第二次用于加载来自存储器的值的上半部分。在一些实施例中,使用作为“双泵”的单个μop完成存储——即执行一次以将寄存器的下半部分存储到存储器,并且一次用于将寄存器的上半部分存储到存储器。在一些实施例中,可以根据向量调度算法来调度用于实施256位加载和/或存储的μop。在一些实施例中,可以使用组调度技术来调度加载和/或存储中涉及的多个μop,以便在单独的执行单元上执行。
以上所描述的加载/存储特征不限于使用任何特定大小的存储器、加载端口或寄存器堆来执行加载和/或存储。例如,以上所描述的技术可以用于使用一次操作256位的底层硬件执行512位加载和/或存储]
256位到128位数据路径通道内执行
根据本发明的实施例,处理器核可以支持允许使用128位微操作(μop)进行的256位算术运算。在一些实施例中,处理器可以支持256位指令集架构,但可以使用包括128位寄存器堆的128位微架构。在其他实施例中,处理器可以具有256位指令集架构和256位寄存器堆,但可以包括可以处置128位组块中的数据的执行单元。在一些实施例中,处理器可以具有256位寄存器堆、执行单元和加载/存储端口,但是出于例如功率节省或调度目的,可能期望使用多个128位μop来实施256位算术操作。
图23展示了根据一些实施例的此过程。通过将256位指令2301分成2个128位μop2302和2303来对其进行解码,然后将其独立地调度以在一个或多个128位执行单元2304、2305上执行。根据图23中所示出的实施例,第一128位μop 2302可以使用提供给256位算术指令的256位操作数的下半部分来执行指令,并且然后处理器可以将结果存储在256位目的寄存器的下半部分中。第二128位μop 2303可以使用提供给256位算术指令的256位操作数的上半部分来执行指令,并且然后处理器可以将结果存储在256位目的寄存器的上半部分中。
根据一些实施例,将256位指令分区为一对128位μop使得结果的下半部分仅基于256位指令的操作数的下半部分,并且结果的上半部分仅基于256位指令的操作数的上半部分(即,“通道内”操作)。在这些通道内场景中,两个128位μop可以彼此独立地调度,因为256位指令的结果可以表示为两个独立的128位μop的两个独立结果。
在一些实施例中,128位μop中的每一个表示相同的指令(例如,ADD指令),并且可以使用作为“双泵”的单个128位微操作来实施256位指令——即执行两次,一次用于计算结果的下半部分,并且一次用于计算结果的上半部分。在一些实施例中,256位指令可以被“分割”成两个不同的微操作,所述两个不同的μop被独立地调度并在一个或多个执行单元上执行。在一些实施例中,256位指令可以同时使用两个执行单元来执行,每个执行单元执行128位μop(此过程在本领域有时被称为“组调度”)。
以上所描述的通道内执行特征不限于使用任何特定大小的存储器值、加载端口、执行单元或寄存器堆来执行指令。例如,以上所描述的技术可以用于使用一次操作256位的底层硬件执行512位操作,或使用一次操作512位的底层硬件执行1024位操作。
256位到128位数据路径跨通道执行
在一些实施例中,要执行的256位指令无法被分区为两个完全独立的128位μop,因为结果的下半部分取决于存储在操作数的上半部分的值,和/或结果的上半部分取决于存储在操作数的下半部分的值(即,“跨通道”操作)。
可以使用临时存储区域来实施跨通道操作以存储部分结果,所述部分结果然后被组合成最终结果并存储在目的寄存器中。图24展示了根据本特征的一些实施例的此过程。通过将跨通道256位指令QJA01分割成2个128位μop QJA02和QJA03来对其进行解码,所述128位μop然后被独立地调度以在一个或多个128位执行单元QJA06、QJA07上执行。临时存储区域QJA04用于存储由μop QJA02和QJA03产生的部分结果。这些临时结果由第三μop QJA05用来产生最终结果。
在一些实施例中,128位μop QJA02和QJA03中的每一个表示相同的指令,并且可以使用作为“双泵”的单个128位μop来实施——即,执行两次,一次用于计算存储在临时存储区域QJA04中第一部分结果,并且一次用于计算存储在临时存储区域QJA04中第二部分结果。在一些实施例中,所述256位指令可以被“分割”成两个不同的μop,所述μop被独立地调度并在一个或多个执行单元上执行,所述μop的部分结果存储在临时存储区域中。在一些实施例中,256位指令可以同时使用两个执行单元来执行,每个执行单元执行128位μop(此过程在本领域有时被称为“组调度”)。在一些实施例中,可以使用具有256位能力的“特殊”执行单元来执行256位μop,从而消除对临时存储区域(例如,临时存储区域QJA04)的需要。
以上所描述的跨通道执行特征不限于使用任何特定大小的存储器值、加载端口、执行单元或寄存器堆来执行指令。例如,以上所描述的技术可以用于使用一次操作256位的底层硬件执行512位操作,或使用一次操作512位的底层硬件执行1024位操作。
附加的独立和可组合特征
根据本发明的实施例的处理器核可以包括用于支持提高的性能和/或降低的功耗的各种附加特征。使用以下的非限制性示例单独地描述了多个这样的特征,但是实施例可以包括这些特征的任何组合。
微操作高速缓存
根据实施例,处理器核可以支持微操作高速缓存特征。根据一些实施例,微操作高速缓存特征可以包括分配、替换策略和不同的结构类型(例如,物理的、虚拟的等)。微操作高速缓存特征中的智能分配可以检测指令的类型,如循环流或具有微代码定序器(MS)流的复杂指令,而不是简单指令,并进行相应分配。微操作高速缓存特征还可以包括添加牺牲高速缓存以用于未来潜在的重用和/或用于确定每个高速缓存行有多少微操作用于分配。在一些实施例中,微操作高速缓存可以用于将经解码指令(微操作)保存在微操作缓冲器中,以便稍后对经解码指令进行重用。在一些实施例中,使用微操作缓冲器可以通过避免指令高速缓存查找和解码级的多个(例如,至少两个)周期来缩短流水线。其还可以通过使用已经可用的微操作并在微操作缓冲器中解码来节省功率。在一些实施例中,可能存在多于一个具有类似事件的线程(例如,微操作类型、微操作解码难度、微操作使用模式),并且在线程之间存在连接的情况下可以使用优先级方案以将资源分配给微操作高速缓存。在一些实施例中,微操作高速缓存特征可以为微操作高速缓存提供智能分配、替换策略和/或配置,以实现流水线中的最高IPC和/或指令吞吐量。
图25是框图,展示了根据实施例的可以包括在处理器中的微操作高速缓存特征。微操作高速缓存特征可以包括以下一项或多项:指令解码器2501、智能分配和替换块2502、以及微操作高速缓存2503。智能分配和替换块2502可以从指令解码器2501接收指令。指令解码器2501还可以被省略,并且智能分配和替换块2502可以接收已经解码的指令。智能分配和替换块2502可以在算法上确定要分配的指令的类型,如复杂指令(例如,具有MS流)、循环流。智能分配和替换块2502可以确定在微操作高速缓存KQA03中的何处分配指令并且可以在所确定的位置中分配指令。在一些实施例中,智能分配和替换块2502可以例如基于以下一项或多项在算法上确定要分配的指令的类型:指令的历史使用模式、使用频率、解码难度和解码时间。智能分配和替换块可以例如基于以下参数中的一个或多个来确定在微操作高速缓存中何处存储指令:最近最少使用的指令信息、指令的历史使用模式、使用频率、解码难度、指令是否是循环的一部分以及是否存储来自循环的其他指令、以及存储在微操作高速缓存中的指令的解码时间。例如,这些参数可以存储在智能分配和替换块中、微操作高速缓存中和/或其他地方中(例如,在单独的表中)。
图26是流程图,展示了根据实施例的用于可以由处理器执行的微操作高速缓存特征的方法。所述方法可以包括如框2601中所示出的接收指令。如框2602中所示出的,所述方法可以进一步包括在算法上确定要分配的指令的类型,如复杂指令、循环流等。如框2603中所示出的,所述方法可以进一步包括确定在微操作高速缓存中何处分配指令。如框2604中所示出的,所述方法可以进一步包括在微操作高速缓存的所确定的位置中分配指令。
图27是框图,展示了根据实施例的可以包括在处理器中的微操作高速缓存特征。所述微操作高速缓存特征可以包括分支预测单元(BPU)2701、指令高速缓存标签2702、微操作标签2703、指令高速缓存2704、微操作高速缓存2705、解码器2706和微操作队列2707中的一项或多项。BPU2701可以执行分支预测(例如,用于判定是否执行有条件的操作)。如图27的左侧所展示的,指令高速缓存标签2702可以例如从BPU 2701接收指令标签并确定与指令标签相关联的指令。指令可以从指令高速缓存2704检索并且由解码器2706解码。微操作队列2707然后可以从解码器2706接收经解码指令。如图28右侧所展示的,微操作标签2703可以从BPU 2701接收指令标签并且确定相关联的微操作标签。然后可以检查微操作高速缓存2705以判定与微操作标签相关联的微操作是否存储在微操作高速缓存2705中并且从微操作高速缓存2705检索微操作。微操作可以被解码并存储在微操作高速缓存2705中,例如如以上结合图25和图26所描述的。微操作高速缓存特征可以是物理的和/或虚拟的。微操作高速缓存特征可以包括缩短流水线。例如,如图27中所展示的,在微操作已经预先地被解码并存储在微操作高速缓存中的情况下,右侧的流水线比左侧的流水线短,因为当微操作已经存储在微操作高速缓存中时,可能不需要执行解码操作。微操作高速缓存特征可以包括微操作高速缓存2705内的下一行预测。微操作高速缓存特征可以将MS流存储在微操作高速缓存2705中。微操作高速缓存特征可以使用替换策略来确定要在高速缓存中存储哪些微操作以及用新的微操作替换哪些微操作。微操作高速缓存特征可以确定要分配到微操作高速缓存2705中的指令的类型,例如,循环流和/或复杂指令。微操作高速缓存特征可以优先化微操作。微操作高速缓存特征可以包括牺牲高速缓存(未示出)。牺牲高速缓存可以存储如难以解码的指令等用于潜在重用的指令。
图28是框图,展示了根据实施例的可以包括在处理器中的微操作高速缓存特征。微操作高速缓存特征可以包括物理微操作高速缓存2801和虚拟微操作高速缓存2802中的一项或多项。物理微操作高速缓存2801可以例如使用物理地址空间将微操作存储在物理存储器中。虚拟微操作高速缓存可以例如使用虚拟地址空间将微操作存储在虚拟存储器中。物理微操作高速缓存2801和/或所述虚拟微操作高速缓存2802可以被转储清除,例如,基于上下文和/或模式开关。物理微操作高速缓存2801和/或所述虚拟微操作高速缓存2802可以被竞争地共享。
实施例可以包括一种处理器,所述处理器被配置成在算法上确定要分配给微操作高速缓存的指令的类型;确定将所确定类型的指令分配给微操作高速缓存的位置;并且将所述指令分配到所确定位置。
在一些实施例中,以下一项或多项适用。在一些实施例中,所述处理器进一步被配置成使智能分配和替换块从指令解码器接收指令。在一些实施例中,所确定指令类型是复杂指令和循环流中的至少一者。在一些实施例中,所述处理器可以包括分支预测单元(BPU)、指令高速缓存标签、微操作标签、指令高速缓存、微操作高速缓存和解码器、以及微操作队列中的一项或多项。在一些实施例中,微操作高速缓存可以包括下一行预测。在一些实施例中,所述处理器被配置成将MS流存储在微操作高速缓存中。在一些实施例中,所述处理器被配置成优先化微操作。在一些实施例中,所述处理器包括牺牲高速缓存。在一些实施例中,微操作高速缓存包括物理微操作高速缓存和虚拟微操作高速缓存中的至少一者。在一些实施例中,物理微操作高速缓存和虚拟微操作高速缓存中的所述至少一者可以被竞争地共享。在一些实施例中,确定分配给微操作高速缓存的指令的类型可以至少部分地基于以下一项或多项:历史使用模式、使用频率、解码难度和解码时间。在一些实施例中,确定将所确定类型的指令分配给微操作高速缓存的位置可以基于以下一项或多项:最近最少使用的指令信息、指令的历史使用模式、使用频率、解码难度、循环状态信息、以及存储在微操作高速缓存中的指令的解码时间。
实施例可以包括一种方法,所述方法包括在算法上确定要分配给微操作高速缓存的指令类型;确定将所确定类型的指令分配给微操作高速缓存的位置;以及将所述指令分配到所确定位置。
在一些实施例中,以下一项或多项适用。在一些实施例中,所述方法可以进一步包括使智能分配和替换块从指令解码器接收指令。在一些实施例中,所确定指令类型是复杂指令和循环流中的至少一者。在一些实施例中,所述方法可以进一步包括使用分支预测单元(BPU)、指令高速缓存标签、微操作标签、指令高速缓存、微操作高速缓存和解码器、以及微操作队列中的一项或多项。在一些实施例中,微操作高速缓存可以包括下一行预测。在一些实施例中,所述方法可以进一步包括将MS流存储在微操作高速缓存中。在一些实施例中,所述方法可以进一步包括优先化微操作。在一些实施例中,所述方法可以进一步包括使用牺牲高速缓存。在一些实施例中,使用微操作高速缓存包括使用物理微操作高速缓存和虚拟微操作高速缓存中的至少一者。在一些实施例中,所述方法可以进一步包括竞争地共享物理微操作高速缓存和虚拟微操作高速缓存中的至少一者。在一些实施例中,确定分配给微操作高速缓存的指令的类型可以至少部分地基于以下一项或多项:历史使用模式、使用频率、解码难度和解码时间。在一些实施例中,确定将所确定类型的指令分配给微操作高速缓存的位置可以基于以下一项或多项:最近最少使用的指令信息、指令的历史使用模式、使用频率、解码难度、循环状态信息、以及存储在微操作高速缓存中的指令的解码时间。
实施例可以包括一种存储至少一个指令的非暂态机器可读介质,所述指令在由处理器执行时使处理器执行一种方法,所述方法包括在算法上确定分配给微操作高速缓存的指令的类型;确定将所确定类型的指令分配给微操作高速缓存的位置;以及将所述指令分配到所确定位置。
在一些实施例中,以下一项或多项适用。在一些实施例中,所述方法可以进一步包括使智能分配和替换块从指令解码器接收指令。在一些实施例中,所确定指令类型是复杂指令和循环流中的至少一者。在一些实施例中,所述方法可以进一步包括使用分支预测单元(BPU)、指令高速缓存标签、微操作标签、指令高速缓存、微操作高速缓存和解码器、以及微操作队列中的一项或多项。在一些实施例中,微操作高速缓存可以包括下一行预测。在一些实施例中,所述方法可以进一步包括将MS流存储在微操作高速缓存中。在一些实施例中,所述方法可以进一步包括优先化微操作。在一些实施例中,所述方法可以进一步包括使用牺牲高速缓存。在一些实施例中,使用微操作高速缓存包括使用物理微操作高速缓存和虚拟微操作高速缓存中的至少一者。在一些实施例中,所述方法可以进一步包括竞争地共享物理微操作高速缓存和虚拟微操作高速缓存中的至少一者。在一些实施例中,确定分配给微操作高速缓存的指令的类型可以至少部分地基于以下一项或多项:历史使用模式、使用频率、解码难度和解码时间。在一些实施例中,确定将所确定类型的指令分配给微操作高速缓存的位置可以基于以下一项或多项:最近最少使用的指令信息、指令的历史使用模式、使用频率、解码难度、循环状态信息、以及存储在微操作高速缓存中的指令的解码时间。
实施例可以包括一种系统,所述系统包括存储器和处理器的系统,所述处理器被配置成在算法上确定要分配给微操作高速缓存的指令的类型;确定将所确定类型的指令分配给微操作高速缓存的位置;并且将所述指令分配到所确定位置。
在一些实施例中,以下一项或多项适用。在一些实施例中,所述处理器进一步被配置成使智能分配和替换块从指令解码器接收指令。在一些实施例中,所确定指令类型是复杂指令和循环流中的至少一者。在一些实施例中,所述处理器可以包括分支预测单元(BPU)、指令高速缓存标签、微操作标签、指令高速缓存、微操作高速缓存和解码器、以及微操作队列中的一项或多项。在一些实施例中,微操作高速缓存可以包括下一行预测。在一些实施例中,所述处理器被配置成将MS流存储在微操作高速缓存中。在一些实施例中,所述处理器被配置成优先化微操作。在一些实施例中,所述处理器包括牺牲高速缓存。在一些实施例中,微操作高速缓存包括物理微操作高速缓存和虚拟微操作高速缓存中的至少一者。在一些实施例中,物理微操作高速缓存和虚拟微操作高速缓存中的所述至少一者可以被竞争地共享。在一些实施例中,确定分配给微操作高速缓存的指令的类型可以至少部分地基于以下一项或多项:历史使用模式、使用频率、解码难度和解码时间。在一些实施例中,确定将所确定类型的指令分配给微操作高速缓存的位置可以基于以下一项或多项:最近最少使用的指令信息、指令的历史使用模式、使用频率、解码难度、循环状态信息、以及存储在微操作高速缓存中的指令的解码时间。
移动消除
根据本发明的实施例,处理器核可以支持移动消除特征。对于许多处理器,执行移动指令通常涉及将值从一个寄存器移动到另一个寄存器,或将立即数移动到寄存器。由于这种移动指令的频率,如果移动指令被高效处理,则处理器性能可能会提高。
大多数指令对若干源操作数进行操作并生成结果。它们明确地命名或通过间接命名从中读取或写入值的源和目的位置。名称可以是逻辑(架构)寄存器或存储器中的位置。
通常,处理器可用的物理寄存器的数量超过逻辑寄存器的数量,使得可以使用寄存器重命名来提高性能。具体地,对于乱序处理器,寄存器重命名允许在其原始程序顺序之外指令执行。因此,对于许多乱序处理器,将移动指令重命名,使得将原始移动指令中命名的逻辑寄存器重命名为物理寄存器。
重命名逻辑寄存器涉及将逻辑寄存器映射到物理寄存器。这些映射可以存储在寄存器别名表(RAT)中。RAT维持每个逻辑寄存器的最新映射。RAT由逻辑寄存器索引,并将映射提供给相应物理寄存器。
图29中所展示的是涉及三种结构RAT 2900、活动列表(AL)2902和空闲列表(FL)2904的寄存器重命名和依赖性跟踪方案。对于由重命名指令指定的每个逻辑寄存器,分配来自FL 2904的未使用物理寄存器,并使用此新映射更新RAT 2900。一旦当前指令窗口中的指令不再引用物理寄存器,所述物理寄存器就可以是空闲的以便再次使用(即,回收)。
基于图29中描绘的数据结构,寄存器回收的一种方法是仅当将其从RAT 110中逐出的指令,即创建到物理寄存器的新映射的指令引退时回收物理寄存器。因此,每当新映射更新RAT 2900时,被逐出的旧映射被推入AL 2902中。(AL条目与指令窗口中的每个指令相关联。)当指令引退时,AL 2902中记录旧映射的物理寄存器如果有的话被回收并被推入FL2904中。在图29中描绘了这个周期。
对于许多指令,源寄存器之一还用作目的寄存器。如果后续(按程序顺序)指令需要存储在此源寄存器中的值,则可以在后续指令之前插入寄存器移动指令,以将源寄存器中的源操作数复制到另一个逻辑位置,使得所述操作数可以由后续指令访问。
插入寄存器移动指令的另一个原因是在过程调用之前在适当的寄存器中设置参数值。
因此,寄存器移动指令的数量可能非常显著。因此,可能期望通过高效寄存器重命名和回收方案来提供寄存器移动指令的高效执行。
在图1B中,寄存器重命名功能单元被指示为重命名/分配器单元152,并且物理寄存器被指示为物理寄存器堆单元158。在图3中,寄存器重命名功能单元被指示为整数重命名单元321和FP重命名单元331,并且物理寄存器由整数物理寄存器堆323和FP寄存器堆333指示。每个逻辑寄存器具有到物理寄存器的映射,其中映射作为条目存储在RAT 2900中。RAT 2900中的条目由逻辑寄存器索引,并包含指向物理寄存器的指针。
在重命名指令期间,RAT中的当前条目提供重命名指令的(多个)源逻辑寄存器所需的映射,并且为指令的目的逻辑寄存器创建新映射。这个新映射逐出RAT中的旧映射,并且使用新映射更新RAT。
表1展示了寄存器重命名的示例。在表1中,第一列中提供了按原始程序顺序的四个指令。重命名指令被指示在第二列中。紧邻每个重命名的是RAT中指令重命名后的当前条目。最后一列提供了被指令重命名逐出的映射。为简单起见,仅考虑三个逻辑寄存器LRa、LRb和LRb。物理寄存器由PRi表示,其中i是整数。表1中的第一个条目提供了在重命名第一列出指令之前RAT的当前状态。
例如,在表1中,第一指令LRa+2→LRa(指示立即数2被添加到逻辑寄存器LRa中的值并且结果被存储在逻辑寄存器LRa中)被重命名为PR1+2→PR2,其中假设物理寄存器PR2是可用的。对于此指令,新映射LRa→PR2被创建并且旧映射LRa→PR1从RAT中逐出。
应注意,第二指令和第四指令对第一指令有真正的依赖性,并且第三指令对第二指令有真正的依赖性。然而,寄存器重命名已经移除了第二指令与第四指令之间的输出依赖性,以及第三指令和第四指令之间的反依赖性,使得第二指令、第三指令和第四指令可以乱序执行,前提是执行顺序遵循各种真正的依赖关系。
表1
重命名指令被放置在指令窗口缓冲器中。指令窗口缓冲器中的条目包含重命名指令的操作码,以及稍后将描述的其他字段。对于此实施例,指令的结果不存储在指令窗口缓冲器中,而是驻留在物理寄存器堆中。
指令窗口缓冲器允许以原始程序顺序进行指令引退。对于复杂指令集计算机(CISC)架构来说,当构成复杂指令的所有的微指令一起引退时,复杂指令被引退。指令窗口缓冲器作为循环缓冲器操作,其中第一指针指向要引退的下一指令,并且第二指针指向新解码指令的下一个可用条目。在以N为模的算法中完成指针的增加,其中N是缓冲器中可用条目的数量。当指令引退时,第一指针增加。对于精简指令集计算机(RISC)架构中的每个经解码指令,指针增加一,并且对于CISC架构指针可以增加大于一。
对于将其结果写入存储器位置的存储指令,数据高速缓存在指令引退时更新。对于将其结果写入逻辑寄存器的指令,由于没有专门用作逻辑寄存器的寄存器,因此不需要在引退时进行写入。对于这样的指令,物理寄存器堆具有物理寄存器中的引退指令的结果,当重命名指令时,目的逻辑寄存器被映射到所述物理寄存器。
调度器将指令调度到执行单元以供执行。例如,调度功能可以通过实施Tomasulo算法(或其变体)的保留站来实现。执行单元可以从数据高速缓存或物理寄存器堆中检索数据或将数据发送至数据高速缓存或物理寄存器堆,这取决于要执行的指令(或微指令)。
在本发明的其他实施例中,包含在物理寄存器堆和指令窗口缓冲器的数据结构中的信息内容可以由不同的功能单元实现。例如,重排序缓冲器可以替换指令窗口缓冲器和物理寄存器堆,使得结果被存储在重排序缓冲器中,并且另外,寄存器堆中的寄存器专用作逻辑寄存器。对于这种类型的实施例,指定对逻辑寄存器进行写入的指令的结果在指令引退时写入逻辑寄存器。
我们现在区分两种类型的移动指令:寄存器到寄存器移动以及立即数到寄存器移动。在寄存器到寄存器移动中,值从一个寄存器,源逻辑寄存器移动到另一个寄存器,目的逻辑寄存器。在立即数到寄存器移动中,立即数值被移动到逻辑寄存器。
在本发明的实施例中,通过将多于一个逻辑寄存器映射到同一物理寄存器来执行移动指令。通过将移动指令的目的逻辑寄存器映射到由移动指令的源逻辑寄存器映射的物理寄存器来执行寄存器到寄存器移动指令的执行。
可以通过访问值匹配高速缓存来执行立即数到寄存器移动指令的执行。值匹配高速缓存中的条目由值索引,其中高速缓存条目将值与存储所述值的物理寄存器相关联。值匹配高速缓存可以具有比物理寄存器的数量更少的条目。如果值匹配高速缓存中存在命中,则移动指令的目的逻辑寄存器被映射至由值匹配高速缓存指示的物理寄存器。如果不存在命中,则如在现有技术架构中那样执行移动执行,并且更新值匹配高速缓存。
物理寄存器堆本身可以用作值匹配高速缓存的功能,这样就不需要值匹配高速缓存。在这种情况下,寄存器堆将需要额外的端口来执行并行标签匹配,其中标签是存储在物理寄存器中的值。
如以上所讨论的,寄存器到寄存器移动指令和立即数到寄存器移动指令(假设对于后一种类型的移动,值匹配高速缓存中存在命中)通过创建多个映射来执行,在所述多个映射中多于一个逻辑寄存器被映射到同一物理寄存器。有效地,这样的移动指令在它们不再由执行单元执行的意义上被“消除”。相反,移动消除在重命名级期间执行。这些指令保留在准备引退的指令缓冲器窗口中。由于依赖于此类移动指令的指令直接依赖于实际发生器,因此依赖关系图被折叠(依赖关系被重新定向)。还可能减少对物理寄存器的需求,并且可能减少对寄存器堆的写入。
惯用语消除机制类似地会影响指令操作,而不会将它们沿传统乱序流水线向下传递。惯用语是被编码以实现特定效果的通用指令的实例,通常以比显式指令更优化的方式进行。移动惯用语包括被构造用于将源寄存器的内容放置在目的寄存器中而没有其他效果的任何指令,例如R1=ADD R0,#0。类似地零惯用语(zero idiom)是被编码成将寄存器设置为零的通用指令,如R0=XOR R0,R0。无操作(NOP)是被定义为对架构状态没有影响的指令,包括显式NOP操作码和NOP惯用语,如R0=ADD R0,#0。
本发明的实施例可能期望通过保留微操作重命名/分配带宽、提高性能、降低功耗和实施节能特征、以及提高公平性、最低性能保证、吞吐量、每时钟指令(IPC)、每单位时间指令、服务质量、时间和/或存储器效率、以及将移动消除的覆盖范围扩展到更多指令类型来提高现存的移动消除技术和惯用语消除技术。
在实施例中,可以将对指令流的运行中移动消除和惯用语消除操作的结果高速缓存到经解码微操作高速缓存中,如微操作高速缓存133或312。因此,可以避免重新发现必要条件并避免重复从流水线中消除原始指令的操作。
经消除指令可以用存储在微操作高速缓存中的实现与经消除指令相同的效果的元数据来替换。当写入微操作高速缓存时,移动消除或惯用语消除的结果被转换为元数据,使得微操作可以从微操作高速缓存中移除,并且因此从经递送微操作流中优化。由于运行中指令消除机制已经完成了标识机会的工作,因此可以修改微操作高速缓存构建以扫描和移除受影响的微操作。元数据包括执行重命名操作所需要的信息加相关的架构信息,如事件边界的存在和性能监测计数器的效果。例如,元数据可以指示有多少指令被消除,和/或对于CISC架构,针对每个指令消除了多少微操作,和/或宏指令结束发生在指令消除之后。元数据可以在经消除微操作之前和/或之后存储在微操作的条目中的字段中。
在实施例中,移动消除可以扩展为包括零扩展和符号扩展操作。例如,R0=MOV.ZER1可以被移动消除,即使这不是简单的移动。
在实施例中,RAT 3000可以如图30中所示出的扩展成包括零惯用语、符号扩展和零扩展。用以下三位扩展RAT:Z,当设置时,忽略RAT条目的其余部分,并且将逻辑寄存器视为零;SE,当设置时,逻辑寄存器的值是存储在条目中的物理寄存器堆标识符(PRF ID)的符号扩展版本;以及ZE,当设置时,逻辑寄存器的值是存储在条目中的PRF ID的零扩展版本。
然后,如图31中所示出的,可以在寄存器重命名期间读取Z位、SE位和ZE位,并使用读取寄存器的微操作沿流水线向下传递。所述位在ALU 3120的操作之前被解释以创建正确的结果。在图31中,左源路径从概念上讲被增强以包括多路复用器3110对Z位、SE位和ZE位的解释。基于这些位,来自旁路网络或物理寄存器堆的源未经修改的使用、被替换为零、在符号扩展后使用、或在零扩展后使用。
本发明的实施例可以包括一种处理器,所述处理器包括微操作高速缓存,所述微操作高速缓存包括多个条目位置。至少一个条目位置可以包括第一字段和第二字段。第一字段可以用于存储第一微操作。第二字段可以用于存储元数据以指示从要从指令流解码的微操作流中消除第二微操作,其中第二微操作由移动指令的解码产生。
本发明的实施例可以包括一个处理器,所述处理器包括寄存器别名表,所述寄存器别名表包括多个条目。至少一个条目可以包括存储零指示符、符号扩展指示符和零扩展指示符之一的字段。零指示符用于指示源操作数将被替换为零。符号扩展指示符用于指示在符号扩展后使用源操作数。零扩展指示符用于指示在零扩展后使用源操作数。
虚拟寄存器重命名
根据实施例,处理器核可以支持虚拟寄存器重命名。在一些实施例中,256位操作数ymmi可以存储在128位寄存器堆中。256位操作数的上半部分可以作为128位操作数ymmihigh存储在128位寄存器堆中。通过虚拟地重命名256位操作数的下半部分,256位操作数的下半部分可以作为128位操作数xmmi(ymmilow)存储在128位寄存器堆中。在一些实施例中,此特征有利地允许通过重命名指令的一半来在较小的物理寄存器上实施更宽的ISA。在一些实施例中,使用较小的物理寄存器通过提供更大的灵活性、功率节省、和更好的性能来改进计算机系统,因为例如可以单独访问指令的部分。在一些实施例中,可以使用其他大小的指令和寄存器(例如,具有256位寄存器的512位操作数)。在一些实施例中,操作数可以分成较小片,例如,三等分、四等分、八等分、十六等分。例如,虚拟寄存器重命名特征可以例如用于将512位操作数保持为要存储在64位寄存器堆中的八个部分。
图32是框图,展示了根据实施例的可以包括在处理器中的虚拟寄存器重命名特征。虚拟寄存器重命名特征可以包括如256位操作数ymmi等操作数3201。虚拟寄存器重命名特征可以进一步包括128位寄存器堆3201。256位操作数ymmi 3201可以存储在128位寄存器堆3202中。256位操作数3201的上半部分可以作为128位操作数ymmihigh存储在128位寄存器堆3202中。通过虚拟地重命名256位操作数的下半部分,256位操作数3201的下半部分可以作为128位操作数xmmi(ymmilow)存储在128位寄存器堆3202中。
图33是流程图,展示了根据实施例的用于可以由处理器执行的虚拟寄存器重命名特征的方法。如3301中所示出的,所述方法包括将操作数的下半部分存储在寄存器堆中。如3302中所示出的,所述方法进一步包括虚拟地重命名操作数的上半部分。所述方法进一步包括将操作数的虚拟地重命名的上半部分存储在寄存器堆中。在进一步实施例中,其他修改是可能的。例如,代替或除了虚拟地重命名的上半部分之外,操作数的下半部分可以被虚拟地重命名。另外,可以以不同的顺序执行操作。例如,存储非虚拟地重命名的一半可以在虚拟重命名和/或存储虚拟地重命名的一半之前或之后执行。另外,虚拟地重命名的一半可以被虚拟地重命名并且然后被存储或反之亦然。
实施例可以包括一种处理器,所述处理器被配置成将操作数的第一半存储在寄存器堆中;虚拟地重命名操作数的第二半;并且将操作数的虚拟地重命名的第二半存储在寄存器堆中。在一些实施例中,以下一项或多项适用。操作数可以是256位操作数。寄存器堆可以是128位寄存器堆。
实施例可以包括一种方法,所述方法包括将操作数的第一半存储在寄存器堆中;虚拟地重命名操作数的第二半;将操作数的虚拟地重命名的第二半存储在寄存器堆中。在一些实施例中,以下一项或多项适用。操作数可以是256位操作数。寄存器堆可以是128位寄存器堆。
实施例可以包括存储至少一个指令的非暂态机器可读介质,所述指令在由处理器执行时使处理器执行一种方法,所述方法包括将操作数的第一半存储在寄存器堆中;虚拟地重命名操作数的第二半;将操作数的虚拟地重命名的第二半存储在寄存器堆中。在一些实施例中,以下一项或多项适用。操作数可以是256位操作数。寄存器堆可以是128位寄存器堆。
实施例可以包括一种系统,所述系统包括存储器和处理器,所述处理器被配置成将操作数的第一半存储在寄存器堆中;虚拟地重命名操作数的第二半;并且将操作数的虚拟地重命名的第二半存储在寄存器堆中。在一些实施例中,以下一项或多项适用。操作数可以是256位操作数。寄存器堆可以是128位寄存器堆。
FMA分裂和融合
根据本发明的实施例,处理器核可以支持乘法-加法指令和操作的分裂和融合。在各个实施例中,处理器核可以支持具有对FP值进行操作的任何一个或多个加法、乘法、融合乘法-加法(FMAD)和/或融合乘法-累加(FMAC)指令(其中FMAD和/或FMAC可以被称为FMA)的指令集。此类核可以包括用于响应于这些指令而执行FP加法、乘法和/或FMA操作的加法器电路、乘法器电路和/或FMA电路中的任何一个或多个。可以提供单独的指令和/或电路系统以对整数值(例如,FMAC)和FP值(例如,FMAD)进行操作,并且可以参考一个或另一个(整数或FP)对实施例进行描述;然而,本发明的各个实施例可以包括任一者或两者。
本发明的实施例提供了在指令发布/执行流水线中的各个级之间和/或内将FMA指令/操作转换成加法和乘法指令/操作对(分裂)和/或将加法和乘法指令/操作对转换成FMA指令/操作(融合)。此特征通常可以被称为FMA分裂/融合或动态FMA分裂/融合。
出于多种原因,可能期望本发明的包括FMA分裂/融合的实施例,包括:提供在具有加法器电路和乘法器电路但没有FMA电路的核中执行FMA指令和/或执行FMA操作的能力;提供使用FMA操作来执行乘法指令和加法指令的能力以通过一个或多个核心资源增加吞吐量;提供将FMA指令或操作动态分成乘法操作和加法操作的能力以减少回路中的关键路径并且增加每个周期的指令;以及提供在逐级的基础上优化能够进行FMA的流水线以实现性能、复杂性和功率的期望组合(例如,提高性能、降低功耗和实施节能特征、以及提高公平性、最低性能保证、吞吐量、每时钟指令(IPC)、每单位时间指令、服务质量、时间和/或存储器效率,仅列出一些适用标准)。
图34是框图,示出了根据本发明实施例的可以在支持FMA分裂/融合特征的处理器核中实施的发布/执行流水线3400。在图34中,流水线3400包括指令取出级3401、指令解码级3402、重命名/分配级3403、调度级3404、执行级3405和引退/提交级3406。流水线3400是出于说明性目的而提供的并且在本发明的各个实施例中可以以各种方式实施和/或修改。因此,对流水线3400的以下描述可以参照在本说明书中所描述的其他图中示出的各个框。
例如,指令取出级3401可以包括使用指令取出电路(例如,138、400)来识别(例如,使用下一PC寄存器410)要取出的指令或要取出的指令的存储器位置并且从i高速缓存(例如,134、313、470、913)或其他存储器位置中取出指令;指令解码级3402可以包括使用指令解码电路(例如,140、314、500、914)来解码(例如,使用解码器530)指令;重命名/分配级3403可以包括使用重命名/分配器电路(例如,152、331、931)来重命名寄存器操作数和/或分配用于寄存器重命名的存储位置和/或标签;调度级3404可以包括使用调度器电路(例如,156、332、932)来调度与指令相关联的操作和/或微操作(例如,来自解码器140、314、530或614或微操作高速缓存133、312、540或912)以供执行;执行级3405可以包括使用执行电路(例如,162、334、335、770、780、934、935)来执行与指令相关联的操作和/或微操作(例如,来自解码器140、314、530或614或微操作高速缓存133、312、540或912);并且引退/提交级3406可以包括使用引退电路(例如,154、730、960)来引退指令和/或将其结果提交给物理寄存器堆(例如,158、333、750、933)或存储器。在各个实施例中,图34中所示出的每个级可以表示一个或多个级和/或时钟周期。
图34还示出了融合路径3410和分裂路径3420,每条路径表示通过流水线3400的路径的实施例。融合路径3410可以包括用于处理、执行(perform)和/或执行(execute)作为融合指令、操作和/或微操作的FMA指令、操作和/或微操作的电路、结构和/或硬件,如下文使用说明性实施例所描述的。分裂路径3420可以包括用于处理、执行(perform)和/或执行(execute)作为单独指令、操作和/或微操作的乘法和加法指令、操作和/或微操作的电路、结构和/或硬件,如下文使用说明性实施例所描述的。此外,分裂路径3420可以包括用于处理、执行(perform)和/或执行(execute)作为乘法和加法指令、操作和/或微操作的FMA指令、操作和/或微操作的电路、结构和/或硬件;并且融合路径3410可以包括用于处理、执行(perform)和/或执行(execute)作为融合指令、操作和/或微操作的乘法和加法指令、操作和/或微操作的电路、结构和/或硬件。
因此,图34概念性地展示了可以用于处理、执行(perform)和/或执行(execute)融合和/或单独的乘法和加法指令、操作和微操作的一组核心资源。各个实施例可以包括这些资源的各种子集以支持各种能力,如下面将进一步描述的。而且,实施方式可以包括图34中未示出的各种附加资源,所述附加资源可以被提供和/或配置成实践本发明的各个实施例。
图34还示出了FMA分裂/融合控制器3430,所述控制器可以表示用于生成控制信号的可编程、可配置或硬接线的控制器或控制结构,包括一个或多个控制电路和/或软件可编程或硬件配置寄存器,所述控制信号用于引导指令、操作、微操作、操作数、值和/或其他数据流过融合路径3410和/或分裂路径3420或在其之间流动。这些控制信号可以提供给通过管线3400的包括融合路径3410和分裂路径3420中的资源的组合的一条或多条路径。这些控制信号可以提供用于通过以下操作实现动态FMA分裂/融合:使FMA指令、操作和/或微操作响应于第一条件而被作为融合指令、操作和/或微操作并且响应于第二条件而被作为单独的乘法和加法指令、操作和/或微操作进行处理、执行(performed)和/或执行(executed)和/或使单独的乘法和加法指令、操作和/或微操作响应于第三条件而被作为融合指令、操作和/或微操作并且响应于第四条件而被作为单独的乘法和加法指令、操作和/或微操作进行处理、执行(performed)和/或执行(executed)。
例如,融合路径3410中的硬件可以取出FMA指令,并且控制器3430可以生成用于将指令路由到分裂路径3420中的用于将指令解码为两个单独的微操作,即乘法微操作和加法微操作的硬件的一个或多个控制信号。虽然在图34中被示出为独立框,但在各个实施例中,控制器3430可以集成或包括在处理器核中的另一控制结构内或可以被完全省略(例如,在下文对其示例进行了描述的核仅提供一条可能路径的实施例中)。
在图34中,融合路径3410包括取出器3411、解码器3412、重命名器3413、调度器3414、融合乘法-加法器3415以及重排序缓冲器/引退队列(ROB/RQ)3416;并且分裂路径3420包括取出器3421、解码器3422、重命名器3423、调度器3424、乘法器3425A和加法器3425B以及重排序缓冲器/引退队列(ROB/RQ)3426。
取出器3411可以包括用于取出FMA指令(例如,AVX(如下定义)指令,如VFMADD132PS、VFMADD213PS、VFMADD231PS、VFMADD132PD、VFMADD213PD、VFMADD231PD、VFMADD132SS、VFMADD213SS、VFMADD231SS、VFMADD132SD、VFMADD213SD、VFMADD231SD、VFMSUB132PS、VFMSUB213PS、VFMSUB231PS、VFMSUB132PD、VFMSUB213PD、VFMSUB231PD、VFMSUB132SS、VFMSUB213SS、VFMSUB231SS、VFMSUB132SD、VFMSUB213SD、VFMSUB231SD、VFNMADD132PS、VFNMADD213PS、VFNMADD231PS、VFNMADD132PD、VFNMADD213PD、VFNMADD231PD、VFNMADD132SS、VFNMADD213SS、VFNMADD231SS、VFNMADD132SD、VFNMADD213SD、VFNMADD231SD、VFNMSUB132PS、VFNMSUB213PS、VFNMSUB231PS、VFNMSUB132PD、VFNMSUB213PD、VFNMSUB231PD、VFNMSUB132SS、VFNMSUB213SS、VFNMSUB231SS、VFNMSUB132SD、VFNMSUB213SD、VFNMSUB231SD、VFMADDSUB132PS、VFMADDSUB213PS、VFMADDSUB231PS、VFMADDSUB132PD、VFMADDSUB213PD、VFMADDSUB231PD、VFMSUBADD132PS、VFMSUBADD213PS、VFMSUBADD231PS、VFMSUBADD132PD、VFMSUBADD213PD或VFMSUBADD231PD)的电路系统和/或结构。
由取出器3411取出的FMA指令可以具有三个操作数。例如,VFMADD231PS指令可以具有第一操作数(xmm1或ymm1)、第二操作数(xmm2或ymm2)和第三操作数(xmm3或ymm3),其中,下文描述了可以由这些操作数指定的xmm和ymm寄存器。这些寄存器可以保存标量或紧缩值,并且为了方便地描述实施例,字母‘d’可以用于指源/目的寄存器或由xmm1操作数指定的寄存器的一部分和/或存储或将存储在此寄存器或此寄存器的一部分中的值;字母‘a’可以用于指源寄存器或由xmm2操作数指定的寄存器的一部分和/或存储或将存储在此寄存器或此寄存器的一部分中的值;并且字母‘b’可以用于指源寄存器或由xmm3操作数指定的寄存器的一部分和/或存储或将存储在此寄存器或此寄存器的一部分中的值。因此,响应于VFMADD231PS指令而将执行的操作的概念表示为d=a*b+d,其中,a、b和d也可以被称为操作数。此外,虽然此描述将操作数称为寄存器,但实施例可以将存储器位置而不是寄存器位置用于任何或所有操作数。
取出器3421可以包括用于取出各自具有两个操作数的乘法指令(例如,如MULPS、MULPD、MULSS或MULSD等SSE(流式单指令多数据扩展)指令)和加法指令(例如,如ADDPS、ADDPD、ADDSS或ADDSD等SSE指令)的电路系统、结构和/或硬件。例如,MULPS指令可以具有第一操作数(xmm1)和第二操作数(xmm2),并且ADDPS指令可以具有第一操作数(xmm1)和第二操作数(xmm2),其中,通常,MULPS xmm1、MULPS xmm2、ADDPS xmm1和ADDPS xmm2操作数的每一个可以是不同的寄存器。然而,在本发明的实施例中,当确定ADDPS指令取决于MULPS指令时(即,MULPS结果是ADDPS的输入),取出器3421可以将MULPS指令与ADDPS指令配对。例如,在‘a’作为MULPSxmm1操作数并且‘b’作为MULPS xmm2操作数的情况下,相应的乘法操作a=a*b,并且如果a接下来被用作ADDPS xmm2操作数,且“d”被用为ADDPS xmm1操作数,则相应的加法操作是d=d+a,并且取出器3421可以将MULPS指令和ADDPS指令配对。在实施例中,可以响应于来自控制器3430的控制信号而执行配对和/或判定是否满足配对条件。
取出器3411可以如箭头3432A所示耦合或连接至解码器3412和/或如箭头3432B所示耦合和/或连接至解码器3422。取出器3421可以如箭头3432C所表示耦合或连接至解码器3412和/或如箭头3432D所示耦合和/或连接至解码器3422。在各个实施例中,耦合或连接和/或解码器操作可以是静态的(例如,硬接线的)或动态的(例如,取决于来自3430的控制信号)。
解码器3412可以包括用于将从取出器3411接收到的FMA指令解码成具有三个操作数(例如,d、a和b)的FMA微操作的电路系统、结构和/或硬件。替代地或另外地,解码器3412可以包括用于将从取出器3421接收到的经配对乘法和加法指令解码为具有三个操作数(例如,d、a和b)的FMA微操作的电路系统、结构和/或硬件。
解码器3422可以包括用于将从取出器3411接收到的FMA指令解码为具有两个操作数的乘法微操作和具有两个操作数的加法微操作的电路系统、结构和/或硬件。替代地或另外地,解码器3422可以包括用于将来自取出器3421的经配对乘法和加法指令解码成具有两个操作数的乘法微操作和具有两个操作数的加法微操作的电路系统、结构和/或硬件。例如,乘法微操作可以表示为t=a*b,并且加法微操作可以表示为d=d+t,其中,可以引入新的操作数‘t’以充当乘法操作的目的地和加法操作的源。
解码器3412可以如箭头3433A所示耦合或连接至重命名器3413和/或如箭头3433B所示耦合或连接至重命名器3423。解码器3422可以如箭头3433C所示耦合或连接至重命名器3413和/或如箭头3433D所示耦合或连接至重命名器3423。在各个实施例中,耦合或连接和/或重命名器操作可以是静态的(例如,硬接线的)或动态的(例如,取决于来自3430的控制信号)。
重命名器3413和/或3423可以包括如重排序缓冲器等用于重命名寄存器操作数和/或分配寄存器重命名的存储位置和/或标签,例如容纳乱序处理的电路系统、结构和/或硬件。在实施例中,为了消除寄存器冲突(例如,对于a、b、t和/或d),重命名器3413可以重命名FMA操作的操作数(例如,重命名为a'、b'和/或d');和/或重命名器3423可以重命名乘法操作的操作数(例如,重命名为a'和/或b')和加法操作的操作数(例如,重命名为t'和/或d')。
重命名器3413可以如箭头3434A所示耦合或连接至调度器3414和/或如箭头3434B所示耦合或连接至调度器3424。重命名器3423可以如箭头3434C所示耦合或连接至调度器3414和/或如箭头3434D所示耦合或连接至调度器3424。在各个实施例中,耦合或连接和/或调度器操作可以是静态的(例如,硬接线的)或动态的(例如,取决于来自3430的控制信号)。
调度器3414和/或3424可以包括如保留站等用于调度操作和/或微操作以供执行的电路系统、结构和/或硬件。在实施例中,调度器3414可以在FP执行电路的保留站中调度将对操作数a、b和d执行的FMA操作,和/或调度器3424可以在FP执行电路的保留站中调度将对操作数a和b执行的乘法操作和将对操作数t和d执行的加法操作。
调度器3414可以如箭头3435A所示耦合或连接至融合乘法/加法器3415和/或如箭头3435B所示耦合或连接至乘法器3425A或者乘法器3425A和加法器3425B两者。调度器3424可以如箭头3434C所示耦合或连接至融合乘法/加法器3415和/或如箭头3434D所示耦合或连接至乘法器3425A或者乘法器3425A和加法器3425B两者。在各个实施例中,耦合或连接和/或调度器操作可以是静态的(例如,硬接线的)或动态的(例如,取决于来自3430的控制信号)。
融合乘法/加法器3415、乘法器3425A和加法器3425B可以分别包括用于执行融合乘法-加法操作、乘法操作和加法操作的电路系统、结构和/或硬件。在实施例中,乘法器3425A可以耦合至保留站以接收用于乘法操作的两个输入(例如,a和b)并且可以耦合至加法器3425B用于提供其输出(例如,t),所述输出将用作用于加法操作的两个输入(例如,t和d)之一。在此实施例中,可以通过将未四舍五入的乘法结果发送到加法器来获得专用的融合乘法-加法器的精度(例如,根据IEEE标准754)。在另一个实施例中,乘法器3425A可以耦合至保留站以接收生成输出(例如,t)的乘法操作的两个输入(例如,a和b),并且加法器3425A可以耦合至保留站以接收用于加法操作的两个输入(例如,t和d)。在此实施例中,可以通过增大中间结果(例如,t)的内部存储位置的宽度或通过使用微代码辅助或陷阱来提供特殊处置从而获得专用的融合乘法-加法器的精度。
融合乘法-加法器3415可以如箭头3436A所示耦合或连接至ROB/RQ 3416和/或如箭头3436B所示耦合或连接至ROB/RQ 3426。加法器3425B可以如箭头3436C所示耦合或连接至ROB/RQ 3416和/或加法器3425B或者乘法器3425A和加法器3425B两者可以如箭头3436D所示耦合或连接至ROB/RQ 3426。在各个实施例中,耦合或连接和/或调度器操作可以是静态的(例如,硬接线的)或动态的(例如,取决于来自3430的控制信号)。
ROB/RQ 3416和/或ROB/RQ 3426可以包括如重排序缓冲器和/或引退队列等用于引退指令和/或提交结果的电路系统、结构和/或硬件。在实施例中,ROB/RQ 3416可以引退FMA指令并且提交其结果(例如,xmm1)。在实施例中,ROB/RQ 3426可以引退乘法指令和加法指令并且提交其结果(例如,分别为MULPS xmm1、ADDPS xmm1)。在实施例中,只要不期望(例如,根据指令集架构预期)单独的乘法操作的结果,ROB/RQ 3416就可以提交已经通过融合单独的乘法和单独的加法指令来创建的FMA操作的结果。在实施例中,ROB/RQ 3426可以提交已经通过分裂FMA指令来创建的加法操作的结果,作为FMA指令的结果。在根据本发明的实施例的处理器核中,加法指令的结果将与相应FMA指令的结果相同。
如图34所示,实施例可以提供在发布/执行流水线的各个级处进行FMA分裂或融合。在实施例中,解码级3402处的分裂可以规定在不具有专用的融合乘法-加法器的核中执行融合乘法-加法指令。在实施例中,解码级3402、重命名/分配级3403、调度级3404、执行级3405和/或引退级3406处的融合可以通过硬件资源提供更大的吞吐量(一个指令/操作/微操作,而不是两个指令/操作/微操作)。在实施例中,重命名/分配级3403处的分裂可以通过将操作数的数量限制为两个而不是三个来提供降低的重命名硬件复杂性。在实施例中,重命名/分配级3403和/或调度级3404处的融合可以提供在重命名、重排序和/或调度存储中使用更少的条目以允许更深的乱序执行窗口和/或发现更高的指令级并行性。在实施例中,在调度级3404处的分裂可以通过将乱序唤醒源的数量限制为每条目两个而不是三个以提供降低的硬件复杂性。在实施例中,在调度级3404和/或执行级3405处的分裂可以通过允许在不同的时间执行FMA操作的单独部分以将关键路径限制为最慢部分的路径而不是这两个部分的总和来提供减少的等待时间。在实施例中,在执行级3405处的融合可以通过使用专用的融合乘法-加法器来提供增强的性能、增加的精度和/或减少的功率。
图35是流程图,展示了根据实施例的用于可以由处理器执行的FMA分裂/融合的方法。在图35的方法3500的框3510中,指令取出电路(例如,138、400)可以从i高速缓存(例如,134、313、470、913)或其他存储器位置取出指令。例如,指令可以是如VFMADD231PS等具有第一操作数(‘d’)、第二操作数(‘a’)和第三操作数(‘b’)的FMA指令的实例,处理器通过执行FMA操作(例如,d=a*b+d)来响应所述FMA指令。
在框3520中,被硬接线、配置或编程用于执行FMA指令的分裂的指令解码电路或解码器(例如,140、314、500、914)可以将指令解码成多个不同微操作、乘法微操作和加法微操作。解码器可以从FMA指令和/或从另一个微操作中选择特定操作数,将所述操作数中的一个或多个分配给不同微操作中的一个或多个,和/或创建用于不同微操作中的一个或多个的新操作数。例如,解码器可以选择FMA指令的‘a’和‘b’操作数作为用于乘法微操作的源操作数并且创建‘t’操作数作为用于乘法微操作的目的操作数,处理器通过执行乘法操作t=a*b来响应所述乘法微操作;并且解码器可以选择FMA指令的‘d’操作数和乘法微操作的‘t’操作数作为用于加法微操作的源操作数并且选择FMA指令的‘d’操作数作为用于加法微操作的目的操作数,处理器通过执行加法操作t=a*b来响应所述加法微操作。
在框3530中,寄存器重命名电路(例如,152、331、931)可以对操作数中的任何操作数进行重命名,为寄存器重命名分配存储位置和/或标签(例如,在重排序缓冲器中),和/或实施将乘法微操作的输出(例如,‘t’)作为输入分配给加法微操作。
在框3540中,调度器电路(例如,156、332、932)可以例如在FP单元的保留站中调度不同微操作以供执行。在实施例中,从指令的同一实例解码的多个不同微操作(例如,从FMA指令解码的乘法微操作和加法微操作)可以在保留站中被调度用于以特定顺序分派(例如,加法微操作可以被调度用于仅在分派和/或完成乘法微操作之后进行分派)。
在框3550中,执行电路(例如,162、334、770、934)可以执行不同微操作之一。例如,FP乘法器334A、334B、770A、770B、934A或934B可以执行乘法微操作。
在框3552中,执行电路(例如,162、335、780、935)可以执行不同微操作中的其他微操作。例如,FP加法器335A、335B、780A、780B、935A或935B可以执行加法微操作。
在框3560中,引退电路(例如,154、730、960)可以引退指令和/或将其结果提交给物理寄存器堆(例如,158、333、750、933)或存储器。在实施例中,框3560可以包括仅引退从指令解码的不同微操作之一。例如,FMA指令可以通过从重排序缓冲器中引退相应加法微操作和提交其结果(例如,d)而被引退和/或提交其结果。
本发明的实施例可以包括处理器,所述处理器包括以流水线安排的多个电路。所述多个电路可以包括用于将融合乘法-加法指令解码成至少两个不同微操作的解码器。所述多个电路还可以包括用于对所述两个不同微操作中的第一个进行操作的乘法器和用于对所述两个不同微操作中的第二个进行操作的加法器。
特定处理器架构
图36是根据本发明的实施例的可以具有多于一个核的、可以具有集成存储器控制器的、以及可以具有集成图形的处理器3600的框图。图36中的实线框展示了具有单个核3602A、系统代理3610、一组一个或多个总线控制器单元3616的处理器3600,而虚线框的可选添加展示了具有多个核3602A至3602N、系统代理单元3610中的一组一个或多个集成存储器控制器单元3614以及专用逻辑3608的替代处理器3600。
因此,处理器3600的不同实施方式可以包括:1)CPU,其中专用逻辑3608是集成图形和/或科学(吞吐量)逻辑(其可以包括一个或多个核),并且核3602A至3602N是一个或多个通用核(例如,通用有序核、通用乱序核、两者的组合);2)协处理器,其中核3602A至3602N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中,核3602A至3602N是大量通用有序核。因此,处理器3600可以是通用处理器、用于服务器环境的服务器处理器或处理元件、协处理器(例如,安全协处理器)高吞吐量MIC处理器、GPGPU的、加速器(如例如,图形加速器或数字信号处理(DSP)单元、密码加速器、固定功能加速器、机器学习加速器、联网加速器、或计算机视觉加速器)、现场可编程门阵列、或任何其他处理器或处理设备。处理器可以在一个或多个芯片上实施。处理器3600可以是一个或多个衬底的一部分和/或可以使用如例如BiCMOS、CMOS或NMOS等多种加工技术中的任何一种技术在一个或多个衬底上被实施。
存储器层级结构包括核内的一个或多个级的高速缓存,一组或一个或多个共享高速缓存单元3606、以及外部存储器(未示出),所述外部存储器耦合至所述一组集成存储器控制器单元3614。所述一组共享高速缓存单元3606可以包括一个或多个中级高速缓存,如2级(L2)、3级(L3)、4级(L4)、或其他级的高速缓存、末级高速缓存(LLC)、和/或其组合。虽然在一个实施例中,基于环的互连单元3612将集成图形逻辑3608(集成图形逻辑3608是专用逻辑的示例并且在本文中也被称为专用逻辑)、所述一组共享高速缓存单元3606、以及系统代理单元3610/(多个)集成存储器控制器单元3614互连,但替代实施例可以使用任何数量的用于互连这样的单元的已知技术。在一个实施例中,在一个或多个高速缓存单元3606与核3602A至3602N之间维持一致性。
在一些实施例中,核3602A至3602N中的一个或多个核能够进行多线程化。系统代理3610包括协调和操作核3602A至3602N的那些组件。系统代理单元3610可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括用于调节核3602A至3602N和集成图形逻辑3608的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
就架构指令集而言,核3602A至3602N可以是同构或异构的;也就是说,核3602A至3602N中的两个或更多个核可能能够执行相同指令集,而其他核可能能够仅执行所述指令集的子集或执行不同指令集。
图37是根据本发明的实施例的可以包括在处理器中的说明性中央处理器单元(CPU)复合体的框图。在实施例中,L3高速缓存是在四核模块(被称为CPU复合体或CCX)上被分开的8MB 16路高速缓存,每核提供L3高速缓存的2MB“切片”。然而,CCX中的L3高速缓存切片被实施以使得L3高速缓存是共享高速缓存。多个CCX可以包括在单个处理器中(例如,两个CCX形成16MB L3高速缓存)。每个CCX上的8MB高速缓存是不同的,因此其充当每四核模块的末级高速缓存,其中适当的高速缓存钩入其他L3高速缓存中以判定是否需要数据(L3高速缓存设计中涉及的协议允许每个核访问每个其他核的L3高速缓存)。因此,这些L1、L2和L3高速缓存是一致性高速缓存,其中CCX内和CCX之间的L3高速缓存切片通过高速缓存一致性互连(也被称为高速缓存一致性结构)连接。
图38是根据本发明的实施例的可以包括在处理器中的说明性高速缓存层级结构的框图。在图38中,高速缓存层级结构3800包括L1i高速缓存3810A和L1d高速缓存3810B(统称为L1高速缓存3810)、L2指令和日期高速缓存3820、以及3级(L3)指令和数据高速缓存3830。在实施例中,L1高速缓存3810和L2高速缓存3820都是私有/本地回写高速缓存,而L3高速缓存3830是牺牲高速缓存。在实施例中,L1i高速缓存3810A是64KB 4路高速缓存,L1d高速缓存3810B是32KB 8路高速缓存,L2高速缓存3820是512KB 8路高速缓存,并且3级(L3)高速缓存3830是8MB 16路高速缓存。
存储器组织特征
根据本发明的实施例的处理器核、处理器和系统可以包括与存储器的组织和使用有关的各种特征。使用以下的非限制性示例单独地描述了多个这样的特征,但是实施例可以包括这些特征的任何组合。
高速缓存行归零
一些实施例包括一种指令,所述指令的执行引起在存储器地址处进行高速缓存行大小的零写入。这种指令可以被称为高速缓存行归零指令、CLZERO指令、CLZEROING指令、高速缓存行初始化指令、CLINIT指令等。在一个实施例中,高速缓存行归零指令是由如核190和/或核5300等核执行的宏指令。具体地,解码器140和/或解码器5314将被实施成将这种宏指令解码成一个或多个相对低级的指令或控制信号(例如,一个或多个微指令、微操作(微操作(micro-op))、微代码入口点、经解码指令或控制信号),所述指令或控制信号使(多个)存储器访问单元164和/或(多个)地址生成单元325/加载-存储单元340分别执行操作。
高速缓存行归零指令具有作为用于使高速缓存行归零的更快速且更确定的方式的优点,因为其不需要使用请求所有权(RFO)操作或者至少不需要数据退回或返回。RFO操作是高速缓存一致性协议中的操作,所述操作结合读取和无效广播(具有写入到所述存储器地址的读取操作),并且因此使所有其他一致性高速缓存将这种高速缓存行的状态设置为高速缓存一致性协议状态“无效”。例如,RFO操作通常由尝试写入处于MESI协议的共享(S)或无效(I)状态的高速缓存行的处理器发布。MESI协议使用高速缓存一致性协议状态“经修改”、“排他”、“共享”和“无效”。相比而言,高速缓存行归零指令的实施方式不需要行被读取和返回到发布代理,因为其使数据归零;实际上,在一些实施例中,发布代理不需要具有对数据的所有权。
不同实施例可以实施高速缓存行归零指令以便以不同方式指示存储器地址。例如,高速缓存行归零指令可以被实施成明确地(例如,经由立即数、一个或多个字段)、间接地(例如,通过指定存储地址信息的一个或多个寄存器)和/或隐含地(例如,一个或多个指定寄存器)指示地址信息。存储器地址信息可以是存储器地址或与其他信息(例如,来自段寄存器的信息等)结合使用以生成存储器地址的信息。尽管在一些实施例中,存储器地址在高速缓存行边界上对齐,但是替代实施例还可以支持存储器地址在高速缓存行边界之间并且被视作指示那些边界之间的高速缓存行。地址信息可以表示绝对存储器地址信息或相对存储器地址信息,所述信息可以指示相对于基本存储器地址的存储器位置或其他存储器位置。另外,可以任选地使用不同间接存储器寻址模式。作为一个特定示例,指令可以隐含地指示用于存储相对存储器地址信息的寄存器(例如,通用寄存器),所述相对存储器地址信息可以与存储在另一个隐式寄存器(例如,代码、数据或扩展段寄存器)中的附加存储器地址信息结合以生成用于标识存储器地址的最终存储器地址。这只是一个示例。其他形式的地址信息也是可能的。
不同实施例可以实施不同大小的高速缓存行(例如,32字节、64字节)和/或给定实施例可以实施多于一个高速缓存行大小。例如,实施例可以支持高速缓存行归零指令,所述高速缓存行归零指令:1)被实施用于特定高速缓存行大小(并且因此其不需要指定高速缓存行大小);2)被实施成使用当前高速缓存大小,其中不同类型的核具有不同高速缓存行大小(例如,当前高速缓存大小可以经由寄存器中的值指示);或3)被实施成具有用于指示高速缓存行大小的字段。在一些实施例中,指令允许对大小参数的指示,所述大小参数指示一个或多个高速缓存行(即,多个高速缓存行大小)。在一些实施例中,另外地或可替代地存在允许指示大小参数的ZERO指令,所述大小参数不与高速缓存行大小关联(例如,仅指示字节的数量),因为这使得软件不能意识到高速缓存行大小(如果大小不是多个高速缓存行大小(例如,按字节指定并且字节的数量是112,即使高速缓存行大小为64字节),则实施例可以对整个高速缓存行进行归零或者仅向所述最后行中的剩余数据发布RFO)。
在一些实施例中,高速缓存行归零指令是原子性的。因此,或者具有零的整个高速缓存行将以其整体被存储,或者没有任何高速缓存行、而不仅仅是一部分被存储(即,完成原子性保证)。原子性还可以保证由高速缓存行归零指令写入的零将不与由其他存储装置存储的数据交织。原子性可以关于其他访问,从而使得任何这种访问将观察以其整体存储的数据中的所有数据或者不观察所存储的数据中的任何数据而不仅仅是一部分。原子性还可以关于断电、系统崩溃、重新引导或其他这种事件,从而使得即使在面对这种事件时,所有零被存储,或者没有零、而不仅仅是一部分被存储。存在这种原子性操作的各种可能用途。这种用途的一个示例是在数据库中原子地更新一条数据。这种用途的另一个示例是在多处理环境中原子地更新一条共享数据。这种用途的又另一个示例是将数据原子地存储到某个位置以便代替锁、信号量,更新共享变量,同步,协调等。这种原子性存储操作的仍其他用途是预期的并且将是本领域技术人员显而易见的,并且具有本公开的益处。
图39是框图,展示了存储器层级结构,在所述存储器层级结构中可以根据本发明的实施例实施高速缓存行归零指令。所展示的存储器层级结构可以结合各种处理器核、核集群、CCX、处理器、计算机架构等来实施。通过特定实施例,高速缓存归零指令的实施方式将参照图39的存储器层级结构结合图3、图8、图38和图37的核/CCX来描述。这是出于说明性目的,并且高速缓存归零指令可以在不同存储器层级结构和/或结合不同核、核集群等实施。
图39展示了一致性代理3900和一致性代理3901,以及由“...”表示的其他一致性代理的可能性和使用虚线框的一致性代理3902。图39中的存储器层级结构包括一致性高速缓存3904A、互连3920和下游存储器3930。不同实施例可以将不同数量的高速缓存和高速缓存级实施为一致性高速缓存3904A的一部分。一致性代理和一致性高速缓存是高速缓存一致性域的部分,在所述高速缓存一致性域中,使用高速缓存一致性协议(例如,使用高速缓存一致性协议状态“经修改”、“排他”、“共享”和“无效”的MESI协议;添加高速缓存一致性协议状态“转发”的MESIF协议;添加高速缓存一致性协议状态“拥有”的MOESI协议;以及其他这种高速缓存一致性协议)维持高速缓存一致性。
一致性代理3900通过处于高速缓存层级结构的连续较低级的一个或多个高速缓存耦合至互连3920。高速缓存层级结构包括:处于高速缓存层级结构的最高级并且耦合至一致性代理3900的高速缓存;处于高速缓存层级结构的最低级并且耦合至互连3920的高速缓存(例如,L3高速缓存3915)(并且因此,此高速缓存被称为最低级高速缓存或末级高速缓存(LLC));以及零个或多个处于高速缓存层级结构的(多个)中级、耦合至处于高级的高速缓存之一和处于低级的高速缓存之一的高速缓存(例如,L2高速缓存3910)(例如,图39展示了耦合至L1高速缓存3905的一致性代理3900,所述L1高速缓存耦合至L2高速缓存3910,所述L2高速缓存耦合至L3高速缓存3915,所述L3高速缓存耦合至互连3920)。
一致性代理3901还通过一个或多个级的高速缓存耦合至互连。图39展示了耦合至可选的L1高速缓存3906的一致性代理3901,所述可选的L1高速缓存耦合至可选的L2高速缓存3911,所述可选的L2高速缓存耦合至L3高速缓存3915。另外,图3902还展示了可选的一致性代理3902可以直接耦合至互连3920(即,不需要任何一致性高速缓存)。
除了或代替包括通过连续级的高速缓存耦合至互连3920的一致性代理的连接,某些实施例实施其他连接以允许直接或更直接的通信(例如,将一致性代理3900直接耦合至互连3920,将一致性代理3900直接耦合至L2高速缓存3910,将L1高速缓存3905直接耦合至互连3920,和/或将L2高速缓存3910直接耦合至互连3920,如虚线3935、3936、3937和3938分别展示的)。
互连3920耦合至下游存储器3930(例如,通过一组一个或多个存储器控制器(未示出))。下游存储器3930处于存储器层级结构的比一致性高速缓存3904更低的级,并且可以包括一种或多种类型的存储器和/或存储器层级结构(例如,易失性存储器和/或非易失性存储器、主存储器、存储器映射输入/输出(MMIO)、(多个)存储器侧高速缓存、二级存储器(2LM)、DRAM、闪存、相变存储器、3D Xpointtm)。
互连3920(也被称为高速缓存一致性互连、结构、互连、非核的一部分、互连网络、(多个)互连单元)包括监听控制器3925,所述监听控制器用于向一致性高速缓存3904发布监听并且从其接收任何响应。监听控制器3925包括用于发布监听的监听发生器3926,以及在一些实施例中用于接收任何响应的监听响应器3927。另外,监听控制器3925在某些实施例中包括写入发生器3929(用于有效地生成高速缓存行大小的全零写入)和/或写入转换器QOS28(用于将响应于监听而接收的数据的高速缓存行有效地转换为全零)。另外,尽管在一个实施例中,互连3920被展示为位于L3高速缓存3915与下游存储器3930之间,但是替代性实施例可以在另一个位置(例如,L2高速缓存与L3高速缓存之间,具有从互连3920(例如,如归属代理)到下游存储器3930的一组或一个或多个存储器控制器或者在L3高速缓存3915与下游存储器3930之间的一组或一个或多个存储器控制器)实施互连3920。互连3920(例如,作为监听控制器3925的一部分)可以包括其他项目,如监听过滤器(未示出)。
不同实施例可以用不同数量的一致性代理来实施,如通用核(也被称为中央处理单元(CPU))。例如,在一些实施例中,一致性代理3900是核,一致性代理391是核,存在作为核的零个或多个附加一致性代理,并且存在作为其他类型的代理的零个或多个附加一致性代理(例如,通用处理器、用于在服务器环境中使用的服务器处理器或处理元件、协处理器(例如,安全协处理器)高吞吐量MIC处理器、GPGPU的、加速器(如例如,图形加速器或数字信号处理(DSP)单元、密码加速器、固定功能加速器、机器学习加速器、联网加速器或计算机视觉加速器)、现场可编程门阵列、或任何其他类型的处理器或处理设备,仅举几个例子)。
在一些实施例中,一致性代理和一致性高速缓存3904如图38和图37中那样实施。例如,在CCX中,存在4个一致性代理,所述一致性代理是核、每核私有/本地L1高速缓存、每核私有/本地L2高速缓存以及共享L3高速缓存;并且可以存在一起耦合在单个处理器中的多个CCX。L1和L2高速缓存是回写高速缓存,L2高速缓存是包含型高速缓存,并且L3高速缓存是牺牲高速缓存。另外,L3高速缓存3915在模块(CCX)内的多个一致性代理之间(例如,在4个核内每核2MB,总共8MB)并且任选地在一个或多个这种模块之间(例如,两个CCX,每个8MB,形成16MB L3高速缓存)被分成切片。图39用一致性代理3900的L3高速缓存切片3916和一致性代理3901的L3高速缓存切片3917展示了这一点。互连3920可以例如表示:1)仅CCX内的互连;2)CCX内和CCX之间的互连;3)不同CCX内的单独互连,以及CCX之间的(多个)互连。不同实施例可以有区别地实施互连3920,包括环、多个环、点到点链接、(多个)共享总线等中的一个或多个。在实施归属代理和高速缓存代理的实施例中,互连3920被认为包括高速缓存代理。
图39中的一致性代理中的一个或多个或所有可以被实施成执行高速缓存行归零指令(参见被标识为一致性代理3900、3901和3902中的任何的可能高速缓存行归零指令发布代理3903)。目前执行高速缓存行归零指令的一致性代理是“发布代理”、“发布一致性代理”或“第一代理”,并且其高速缓存被称为发布代理的Lx高速缓存(其中,x可以是1、2或3;并且其中,L3高速缓存用切片实施,所述切片是发布代理的L3高速缓存切片)。在以下讨论中,这将是一致性代理3900。目前没有执行高速缓存行归零指令的一致性代理被称为“一致性但非发布代理”、“非发布代理”、“非发布一致性代理”或“第二代理”(如以上所讨论的,可能存在多个第二代理,但是为了简单起见以下将讨论一个),并且其高速缓存被称为第二代理的Lx高速缓存(其中,x可以是1、2或3;并且其中,L3高速缓存用切片实施,所述切片是第二代理的L3高速缓存切片)。在以下讨论中,这将是一致性代理391。
图40是框图,展示了根据本发明的实施例的处理器中实施高速缓存行归零指令的高速缓存。图40包括Lx高速缓存4050,其中,x指示高速缓存层级结构中的级(例如,1、2、3)。Lx高速缓存4050包括高速缓存控制器4051,所述高速缓存控制器用于控制高速缓存的操作,包括检测命中/未命中、引起对高速缓存行的写入/读取、接收监听(并且因此,在一些实施例中,高速缓存控制器4051包括监听接口,并且在一些实施例中,监听控制器4043)等。高速缓存控制器包括具有条目4060(其包括有时被称为“标签状态”的条目)的标签阵列4055,并且Lx高速缓存4050包括具有相应高速缓存行4070的数据阵列4056。条目4060中的每一个包括用于存储标签的标签字段4061,所述标签用于判定给定地址命中还是未命中高速缓存行4070中的相应高速缓存行中的数据。另外,条目4060中的每一个包括用于存储存储在高速缓存行4070中的相应高速缓存行中的数据的属性的一组一个或多个属性字段4062(有时被称为“标签状态”)。(多个)属性字段4062包括高速缓存一致性协议状态字段4065,其用于存储指示存储在高速缓存行4070中的相应高速缓存行中的数据的当前高速缓存一致性协议状态的数据。(多个)属性字段4062可以任选地包括其他字段,如零行(zero-line)字段4066、污染(poison)字段4067、纠错码字段(未示出)。尽管图40展示了在标签阵列中的(多个)属性字段4062,但是替代性实施例可以在单独状态阵列(未示出)中实施这些字段。在一个实施例中,给定高速缓存行可以具有污染字段4067中的多个污染指示(例如,一个针对64字节高速缓存行的两个32字节组块)。尽管图40展示了单独污染字段4067,但是替代性实施例可以将污染指示编码到另一个字段(例如,纠错码(ECC)字段或高速缓存一致性协议状态字段)。
响应于高速缓存中的命中(例如,基于标签字段4061中的标签),高速缓存控制器4051包括用于响应于针对命中的高速缓存一致性协议状态字段4056中的高速缓存一致性协议状态(例如,与标签匹配的标签字段4061相对应的高速缓存一致性协议状态字段4056)的电路系统(例如,高速缓存一致性协议状态电路系统或其他电路系统);所述响应在实施例之间不同并且基于各种因素(例如,高速缓存查找是否响应于写入命令、读取命令、监听(以及可能地监听类型)而发起)。例如,在一些实施例中,响应用于判定高速缓存一致性协议状态是否是被授予响应于写入命令和/或某些类型的监听而修改高速缓存行(例如,“经修改”或“排他”状态)的高速缓存权力的状态,如以下更详细讨论的。在一些实施例中,高速缓存控制器4051包括:1)命中-未命中电路系统(未示出),用于判定是否响应于命令(例如,写入命令、读取命令、监听命令)而在高速缓存中存在命中或未命中;2)监听控制器4043,耦合至监听接口(未示出)以接收监听并发射对监听的响应消息;以及3)高速缓存行读取电路系统(未示出)和高速缓存行写入电路系统(未示出)。
尽管一些实施例被实施成通过用零覆写高速缓存行中的数据来将高速缓存行配置成指示全零(第一技术),但是替代性实施例可以使用其他技术来将高速缓存行配置成指示全零(以下描述的第二-第四技术是示例)。这种其他技术可以出于各种原因被实施,如高速缓存行的大小通常大于核内的一些总线/结构(例如,中间缓冲器,如加载队列810、存储队列820,写合并缓冲器(WCB)860)的宽度和/或用零覆写高速缓存行中的数据消耗功率并增加高速缓存的复杂性。
第二技术用于使高速缓存的高速缓存行当前驻留的路中的所述高速缓存行无效,并且将具有零的高速缓存行写入高速缓存的不同路中。
第三和第四技术涉及改变标签状态而不是数据阵列4056中的数据,并且这些可以用于高速缓存级中的一个或多个中和/或互连中。第三技术用于实施高速缓存行中的每一个的字段(被称为零行字段4066)(例如,在(多个)属性字段4062中),并且此字段中的值(其可能是一位)指示:1)高速缓存行应当被视作具有存储在所述高速缓存行中的数据的值;还是2)高速缓存行应当被视作全零(无论存储在所述高速缓存行中的实际数据如何)。在这种实施例中,对所述高速缓存行的读取(包括逐出)将使零行字段4066的值传递至支持这种零行字段的另一个结构或者将数据转换为零。数据还将在其被一致性代理之一(例如,一致性代理3900)用于读取之前被转换。尽管在一些这种实施例中,数据还在被写入下游存储器QO30之前被转换,但是替代性实施例还实施下游存储器3930或由存储器控制器管理的替代存储器结构中的零行字段。
第四技术像第三技术那样实施(多个)属性字段中的现有属性字段中的新编码(例如,高速缓存一致性协议状态字段或纠错码(ECC)校验子字段中的新编码),而不是实施单独字段。
某些实施例可以实施高速缓存以将所述高速缓存行的高速缓存一致性协议状态修改为“经修改”或“拥有”作为将高速缓存行配置成指示全零的一部分(或者在使用高速缓存一致性状态字段中的新编码来指示零行的情况下,则到零行状态)并且使任何(多个)污染指示被忽略(数据不再被污染)或清除。因此,高速缓存行归零指令的另一个优点是:其可以用于一致地清除被污染的行。
关于此点,用于强迫高速缓存行为零的机制可以仅在某些高速缓存级(例如,L1高速缓存、L2高速缓存和L3高速缓存的子集,如仅在L1高速缓存中且不在L2或L3高速缓存中)中实施,并且缺乏这种机制的给定高速缓存级可以被实施成通过将高速缓存行发送给具有所述机制的不同高速缓存级来将所述高速缓存行配置成指示全零(例如,较高高速缓存级(例如,L1高速缓存)被实施成通过将数据逐出到可以进行归零的较低高速缓存级(例如,L2高速缓存)来将高速缓存行配置成指示全零;较低高速缓存级(例如,L2高速缓存)被实施成通过将高速缓存行转发到可以进行归零的较高级高速缓存(例如,L1高速缓存)来将所述高速缓存行配置成指示全零)。如以下更详细描述的,不同实施例可以响应于写入和/或监听而实施对高速缓存行的归零。在响应于写入和监听两者而实施对高速缓存行的归零的实施例中,给定高速缓存级可以被实施成仅响应于写入或监听之一(但不是两者)而进行归零,并且可以将数据推进/逐出或转发到可以响应于写入和监听中的另一个而进行归零的较低或较高级高速缓存。
无论在高速缓存中实施的用于将高速缓存行配置成指示全零的技术(参见上文)如何,触发高速缓存来将高速缓存行配置成指示全零可以是响应于由发布代理本身或由发布代理响应于从互连发送的消息而将消息从互连发送至高速缓存之一而进行的。
在发布代理(其本身或响应于来自互连的消息)触发高速缓存来将高速缓存行配置成指示全零的情况下,不同实施例可以使用不同技术,包括用于在高速缓存行比发布代理的本机支持的数据宽度(例如,32位、64位、128位、256位、512位、1024位)更宽(例如,32字节、64字节)的情况下实施原子的高速缓存行归零指令的技术。在不同实施例中,本机支持的数据宽度可以以不同方式显示其本身。在一些实施例中,本机支持的数据宽度可以按位表示最宽组寄存器的宽度和/或待由指令操作的(多个)操作数的宽度。在一些实施例中,本机支持的数据宽度可以表示算术和/或逻辑执行单元的宽度(例如,当所述宽度与由指令指示的操作数具有相同宽度从而使得操作数的多个部分被依次泵送(pumped)通过所述宽度(双泵送或更多)时)。在一些实施例中,本机支持的数据宽度可以表示总线(例如,加载管线)的宽度。可以被原子地存储的数据的量可以受发布代理的一个或多个内部结构(例如,总线、中间缓冲器)的宽度限制。
因此,在发布代理(本身或响应于来自互连的消息)进行触发(高速缓存来将高速缓存行配置成指示全零)的一些实施例中,发布代理:1)实施其他结构中的零行字段,所述其他结构如中间缓冲器中的一个或多个(例如,存储队列820和写合并缓冲器(WCB)860);或2)实施新命令(例如,微操作、控制信号、微指令),所述新命令不承载具有零的高速缓存行但是指示高速缓存行大小的零写入,所述写入可以穿过中间缓冲器(例如,存储队列820和写合并缓冲器(WCB)860)。如此,当高速缓存行大小比发布代理的本机支持的数据宽度更宽(例如,32字节、64字节)时,具有零的高速缓存行可以在这些较窄结构中表示。当零行(如由零行字段或新命令/微操作指示的)被发送至存储器层级结构中较低的并且不支持零行字段或新命令的结构时,执行对具有零的行的转换(例如,当零行被发送至数据高速缓存840(其可以执行以上技术中的另一种)、从写合并缓冲器8600发送、由L3高速缓存发送至互连、或由互连(例如,经由存储器控制器)发送至下游存储器时,可以执行对具有零的行的转换)。
作为另一个示例,在发布代理(本身或响应于来自互连的消息)进行触发(高速缓存来将高速缓存行配置成指示全零)的一些实施例中,发布代理将具有零的较小组块依次写入(例如,一次16字节、一次32字节)中间缓冲器(例如,存储队列820、写合并缓冲器(WCB)860、单独分级缓冲器(staging buffer)(未示出))中,所述中间缓冲器不响应于监听(或者在组块被写入时不响应于监听)并且响应于已经写入足够的组块以等于高速缓存行的大小(并且不会更早)使得组块被同时写入,所述中间缓冲器被逐出;由此,原子地实施高速缓存行归零指令。
不同实施例可以用不同排序(例如,弱排序、强排序、比弱排序更弱的排序、比强排序更强的排序)实施高速缓存行归零指令。在弱排序的高速缓存行归零指令的情况下,实施例可以实施指令使得其自动逐出。
高速缓存行归零指令可以被实施使得其在所述指令引退之前将不将高速缓存行配置成指示全零。在这种实施例中,存在用于确保高速缓存行零指令已经完成并且高速缓存行被配置成针对所有读取指示全零的机制(例如,栅栏指令、锁指令、架构上序列化指令、进行较晚存储(youngerstore being GO)(强排序)、进行较晚加载(younger load beingGO)(比强排序更严格))。
高速缓存行归零指令可以被视作出于页表行走(包括虚拟化表(例如,扩展页表(EPT)(在所述扩展页表中,A和D位将被更新)、阴影页表)目的的存储并且将在不可写入时出现错误。
图41是流程图,展示了本发明的在使用监听之前首先尝试写入发布代理的高速缓存的实施例。如以上所讨论的,第一代理3900用于解码和执行指令,所述指令的执行用于引起在存储器地址处进行高速缓存行大小的零写入(框4110)。响应于解码和执行指令,第一代理用于向耦合至第一代理的一致性高速缓存之一(例如,L1高速缓存3905)发布用于发起在存储器地址处进行高速缓存行大小的零写入的写入命令(在这种情况下,第一代理也被称为发布代理)(框4112)。在一些实施例中,第一代理包括用于解码指令的解码单元(例如,解码器140、解码器314),所述指令的执行用于引起在存储器地址处进行高速缓存行大小的零写入。第一代理还包括执行单元(例如,(多个)存储器访问单元164、加载-存储单元340),所述执行单元响应于解码单元而发布用于发起存储器地址处进行高速缓存行大小的零写入的命令。
当向其发布命令的高速缓存(例如L1高速缓存3905)的高速缓存行存在命中(框4114)并且所述高速缓存行的高速缓存一致性协议状态是授予高速缓存在不向其他高速缓存广播的情况下修改高速缓存行的权利的状态(例如,“经修改”或“排他”)(框4116)时,则所述高速缓存用于将高速缓存行配置成指示全零并抑制监听(框4118)。不同实施例可以实施高速缓存来将高速缓存行配置成指示全零,如之前在标题为“用于将高速缓存行配置成指示全零的技术”的部分中描述的。在一些实施例中,如果向其发布命令的高速缓存(例如,L1高速缓存3905)的高速缓存行存在命中(框4114),则对于一个或多个其他高速缓存一致性协议状态(例如,“拥有”、“转发”或“共享”中的一个或多个),高速缓存行仍然被归零。对于完成此动作的任何状态,控制传递至框4119;对于未完成此动作的任何状态,控制传递至框4120。因此,在对于非“经修改”、“排他”和“无效”的任何状态控制传递至框4119的实施例中,则框4120未被实施;反之亦然。然而,可以根据状态实施控制传递至框4119或4120的实施例。在框4119中,所述高速缓存用于将高速缓存行配置成指示全零;从框4119开始,控制传递至框4122(本文稍后更详细描述的),在所述框中,高速缓存用于向互连发布写入命令(根据实施例,向下一高速缓存级或向互连发布监听(例如,写入-更新监听(也被称为写入-零监听或写入和零监听)、写入-无效监听(也被称为即使经修改也无效监听)、或指示无效和回写的监听(也被称为回写和无效监听))。可能的是,传递至下一高速缓存级或互连的写入命令将指示具有除了“经修改”或“排他”之外的状态的行被配置成指示全零。此经修改写入命令的一个用途是使得如果“共享”行被配置成全零且其状态改变为“经修改”或“拥有”,则将不发出写入-更新监听。在这种情况下,互连可以发布不同监听类型(例如,写入-无效监听或回写和无效监听)。在框4120中,高速缓存用于将所述高速缓存行的高速缓存一致性协议状态改变为“无效”,并且控制传递至框4122。如果存在高速缓存未命中(框4114),则控制传递至框4122。
通过关于转发或拥有状态的特定示例,当发布代理的高速缓存具有处于转发或拥有状态的高速缓存行时,所述高速缓存行可以在处于共享状态的其他高速缓存中。如此,如果高速缓存行在框4119中归零,则监听可以被发送以使处于共享状态的那些其他高速缓存行无效或者将处于共享状态的那些其他高速缓存行配置成指示全零。可替代地,可以使处于转发或拥有状态的高速缓存行无效(或者清除逐出和无效)(框4120),并且可以创建经修改和归零或者拥有和归零的新行。被归零的所述新行可以插入(填充到)与被发现处于转发或拥有状态的高速缓存行相同的高速缓存中(例如,在所述高速缓存的不同组或路中),或者其可以插入不同高速缓存中(例如,如果发现L2高速缓存或L3高速缓存中的高速缓存行处于转发或拥有状态,则可以使高速缓存行无效,并且可以在L1高速缓存中创建经修改和归零或拥有和归零的新行)。
在框4122中,高速缓存用于向互连发布写入命令。此写入命令可以直接发布给互连3920,或者可以发送至第一代理的一个或多个较低级高速缓存。通过示例的方式:1)在一些实施例中,写入命令被直接发布给互连(即,跳过高速缓存层级结构的较低级的任何高速缓存——例如,从L1高速缓存3905直接到互连3920,跳过任何较低级高速缓存(例如,L2高速缓存OQA10、L3高速缓存OQA15)——在这种情况下,写入命令用于第一代理的数据L1高速缓存,而监听(接下来描述的)用于第一代理的指令L1高速缓存、L2高速缓存和L3高速缓存(更具体地,L3高速缓存切片3916,如果实施的话)以及第二代理的高速缓存);2)在一些实施例中,写入命令被发布给L2高速缓存3910,所述L2高速缓存重复上文,并且如果其不将高速缓存行配置成指示全零,则将写入命令直接发布给互连3920——在这种情况下,写入命令用于第一代理的L1高速缓存和L2高速缓存,而监听(接下来描述的)用于第一代理的L3高速缓存(更具体地,L3高速缓存切片3916,如果实施的话)和第二代理的高速缓存;3)在一些实施例中,写入命令被发布给L2高速缓存3910,所述L2高速缓存重复上文,并且如果其不将高速缓存行配置成指示全零,则将写入命令发布给L3高速缓存3915(更具体地,L3高速缓存切片3916,如果实施的话),并且如果其不将高速缓存行配置成指示全零,则将写入命令发布给互连3920——在这种情况下,写入命令用于第一代理的高速缓存,而监听(接下来描述的)用于第二代理的高速缓存。在某些实施例中,向其发布写入命令的(多个)高速缓存包括高速缓存控制器,所述高速缓存控制器被实施成响应于以上讨论的写入命令而判定是否存在高速缓存命中,将高速缓存行配置成指示全零(不同实施例可以实施高速缓存来将高速缓存行配置成指示全零,如之前在标题为“用于将高速缓存行配置成指示全零的技术”的部分中描述的),并且在高速缓存未命中时向互连发布写入命令。在一个特定示例中,响应于高速缓存行命中,在(发布代理的)经修改、排他和/或拥有的L2高速缓存3910,L2高速缓存被实施成通过将任务转发给L1高速缓存而将高速缓存行配置成指示全零。
互连3920的监听控制器3925响应于写入命令被实施成发起监听过程(框4190)以定位可能正存储高速缓存行的任何高速缓存。为了实施监听过程4190,监听控制器3925被实施(例如,经由监听发生器3926)用于向一致性高速缓存中可能正存储高速缓存行的那些高速缓存发布监听(框4126)(换言之,一致性高速缓存中必须对其判定是否存在命中的那些高速缓存)。在一些实施例中,可能正存储高速缓存行的一致性高速缓存是一致性高速缓存中进行以下各项的那些:1)之前未向其发布写入命令的高速缓存;以及2)在实施互连3920中的监听过滤器(未示出)的实施例中,监听过滤器指示的、可能包含行的高速缓存(即,针对所述高速缓存,监听过滤器不抑制监听)。这可以包括将第二代理3901耦合至互连3920的一个或多个级的高速缓存(例如,L1高速缓存3906、L2高速缓存3911、L3高速缓存3915);以及以下高速缓存(例如,L2高速缓存3910、L3高速缓存3915)中的任何高速缓存:将第一代理3900(发布代理)耦合至互连3920的高速缓存,不接收写入命令的高速缓存(即,被跳过的高速缓存),以及在实施互连3920中的监听过滤器(未示出)的实施例中,监听过滤器指示的、可能包含行的高速缓存(即,监听过滤器不抑制监听)。在将监听发布给将第一代理耦合至互连的高速缓存中的一个或多个高速缓存的实施例中,每个这种监听也可以被称为向后监听(back snoop)。作为监听过程4190的一部分,不同实施例可以被实施成根据情况发布不同类型的监听,或者仅发布一种类型的监听。存在可以使用的各种可能的监听类型(例如,写入-更新监听(也被称为写入-零监听或写入和零监听)、写入-无效监听(也被称为即使经修改也无效监听)、指示无效和回写的监听(也被称为回写和无效监听)、写出命中的任何高速缓存行但是不将数据发送回第一代理并且不导致从下游存储器读取数据的监听、现有技术监听(例如,RFO)),如本文稍后更详细讨论的。具体地,当使用写入-更新监听时,作为监听过程4190的一部分,监听控制器3925也被实施成判定高速缓存行大小的写入是否由高速缓存之一响应于写入-更新监听之一而执行(如虚线框4128所示);如果是,则过程完成(框4130);否则,控制传递至框4132。框4128被虚线化,因为当监听过程4190使用其他类型的监听时,不使用所述框。
写入命令和监听操作以处置在高速缓存中的一个或多个中存在包含待归零的数据的高速缓存行的情况。高速缓存行大小的零写入可能已经由高速缓存之一响应于写入命令而执行(如上所述),或者在发布写入-更新监听的实施例中,由高速缓存之一响应于写入-更新监听之一而执行,如以下更详细描述的。如果高速缓存行大小的零写入尚未由高速缓存中的任何高速缓存执行,则在框4132中,互连3920(例如,经由监听控制器3925的写入发生器3929)或第一代理(发布代理)响应于来自互连3920的消息使一致性高速缓存(例如,L1高速缓存3905、L2高速缓存3910、L3高速缓存3915)中的一个或多个中的高速缓存行被配置成指示全零(不同实施例可以实施高速缓存来将高速缓存行配置成指示全零,如之前在标题为“用于将高速缓存行配置成指示全零的技术”的部分中描述的)或者引起在存储器地址处对下游存储器进行高速缓存行大小的零写入。如以上所指示的并且如以下更详细的,在某些实施例中,监听控制器3925包括响应于此动作的监听响应器3927(以及任选的写入转换器3928和写入发生器3929)。在某些实施例中,第一代理(例如,通过执行单元(例如,(多个)存储器访问单元164、加载-存储单元340)或其他硬件结构)在此动作中执行其滚动(roll)(如果有的话)。在替代性实施例中,互连3920指导存储器控制器引起对下游存储器的零写入。
如以上在标题为“触发高速缓存将高速缓存行配置成指示全零”的部分中描述的,不同实施例可以有区别地实施发布代理以使得触发高速缓存将高速缓存行配置成指示全零(例如,为了确保高速缓存行比发布代理的本机支持的数据宽度更宽(例如,32字节、64字节)的原子性,实施其他结构(例如,中间缓冲器)中的零行字段,实施可以通过中间缓冲器的新命令(其不承载具有零的高速缓存行但是指示高速缓存行大小的零写入),或者实施将具有零的较小组块依次写入(例如,一次16字节、一次32字节)中间缓冲器(例如,存储队列8200、写合并缓冲器(WCB)8600、单独分级缓冲器(未示出)),所述中间缓冲器不响应于监听(或者在组块被写入时不响应于监听)并且响应于已经写入足够的组块以等于高速缓存行的大小(并且不会更早)使得组块被同时写入,所述中间缓冲器被逐出)。
图42是流程图,展示了本发明的依赖于一致性高速缓存(所述高速缓存不首先尝试对发布代理的高速缓存进行写入)的监听的实施例。如以上所讨论的,第一代理3900解码和执行指令,所述指令的执行引起在存储器地址处进行高速缓存行大小的零写入(框4210)。响应于解码和执行指令,第一代理用于向互连3920发布用于发起在存储器地址处进行高速缓存行大小的零写入的命令(在这种情况下,第一代理也被称为发布代理)(框4212)。在一些实施例中,第一代理包括用于解码指令的解码单元(例如,解码器140、解码器314),所述指令的执行用于引起在存储器地址处进行高速缓存行大小的零写入。第一代理还包括执行单元(例如,(多个)存储器访问单元164、加载-存储单元340),所述执行单元响应于解码单元而发布用于发起存储器地址处进行高速缓存行大小的零写入的命令。
将来自第一代理/发布代理3900的命令发布给互连3920(框4212),并且互连3920响应于命令被实施成发起监听过程(框4290)以定位可能正存储高速缓存行的任何高速缓存。为了实施监听过程4290,互连3920(例如,经由监听控制器3925)被实施(例如,经由监听发生器3926)用于向一致性高速缓存中可能正存储高速缓存行的那些发布监听(框4226)(换言之,一致性高速缓存中必须对其判定是否存在命中的那些高速缓存)。在一些实施例中,可能正存储高速缓存行的一致性高速缓存是一致性高速缓存中进行以下各项的那些:1)不实施互连3920中的监听过滤器(未示出)的实施例中的一致性高速缓存(例如,L1高速缓存3905、L2高速缓存3910、L1高速缓存3906、L2高速缓存3911、L3高速缓存3915)中的任何高速缓存;或者2)在不实施这种监听过滤器的实施例中,一致性高速缓存中互连3920中的监听过滤器(未示出)指示的、可能包含行的那些高速缓存(即,监听过滤器不抑制监听)。在将监听发布给将第一代理耦合至互连的高速缓存中的一个或多个高速缓存的实施例中,每个这种监听也可以被称为向后监听。如前所述,作为监听过程4290的一部分,不同实施例可以根据情况发布不同类型的监听,或者仅发布一种类型的监听。存在可以使用的各种可能的监听类型(例如,写入-更新监听(也被称为写入-零监听或写入和零监听)、写入-无效监听(也被称为即使经修改也无效监听)、指示无效和回写的监听(也被称为回写和无效监听)、写出命中的任何高速缓存行但是不将数据发送回第一代理并且不导致从下游存储器读取数据的监听、现有技术监听(例如,RFO),如本文稍后更详细讨论的。具体地,当使用写入-更新监听时,作为监听过程4290的一部分,监听控制器3925也被实施用于判定高速缓存行大小的写入是否由高速缓存之一响应于写入-更新监听之一而执行(如虚线框4228所示);如果是,则过程完成(框4230);否则,控制传递至框4232。框4228被虚线化,因为当监听过程4290使用其他类型的监听时,不使用所述框。
在替代性实施例中,用第一代理代替框4212,所述第一代理被实施成向一致性高速缓存中可能正存储高速缓存行的那些高速缓存发布监听命令(在这种情况下,框4226不存在,并且在使用写入-更新监听的实施例中流程传递至框4228,或者其他情况下传递至框4232)。
监听操作以处置在高速缓存中的一个或多个中存在包含待归零的数据的高速缓存行的情况。在发布写入-更新监听的实施例中,高速缓存行大小的零写入可能已经由高速缓存中的一个或多个执行。如果高速缓存行大小的零写入尚未由高速缓存中的任何高速缓存执行,则在框4232中,第一代理本身、互连3920(例如,经由写入发生器3929)或第一代理响应于来自互连3920的消息使高速缓存(例如,L1高速缓存3905、L2高速缓存3910、L3高速缓存3915)中的一个或多个中的高速缓存行被配置成指示全零(不同实施例可以实施高速缓存来将高速缓存行配置成指示全零,如之前在标题为“用于将高速缓存行配置成指示全零的技术”的部分中描述的)或者引起在地址处对下游存储器进行高速缓存行大小的零写入。如以上所指示的并且如以下更详细的,在某些实施例中,监听控制器3925包括用于在此动作中执行其滚动(如果有的话)的监听响应器3927(以及任选的写入转换器3928和写入发生器3929)。在某些实施例中,第一代理(例如,通过执行单元(例如,(多个)存储器访问单元164、加载-存储单元340)或其他硬件结构)在此动作中执行其滚动(如果有的话)。在替代性实施例中,互连3920指导存储器控制器引起对下游存储器的零写入。
如以上在标题为“触发高速缓存将高速缓存行配置成指示全零”的部分中描述的,不同实施例可以有区别地实施发布代理以使得触发高速缓存将高速缓存行配置成指示全零(例如,为了确保高速缓存行比发布代理的本机支持的数据宽度更宽(例如,32字节、64字节)的原子性,实施其他结构(例如,中间缓冲器)中的零行字段,实施可以通过中间缓冲器的新命令(其不承载具有零的高速缓存行但是指示高速缓存行大小的零写入),或者实施将具有零的较小组块依次写入(例如,一次16字节、一次32字节)中间缓冲器(例如,存储队列8200、写合并缓冲器(WCB)8600、单独分级缓冲器(未示出)),所述中间缓冲器不响应于监听(或者在组块被写入时不响应于监听)并且响应于已经写入足够的组块以等于高速缓存行的大小(并且不会更早)使得组块被同时写入,所述中间缓冲器被逐出)。
如前所述,作为监听过程4190或监听过程4290的一部分,不同实施例可以根据情况发布不同类型的监听,或者仅发布一种类型的监听。存在可以使用的各种可能的监听类型(例如,写入-更新监听(也被称为写入-零监听或写入和零监听)、写入-无效监听、指示无效和回写的监听(也被称为即使经修改也无效监听)、写出命中的任何高速缓存行但是不将数据发送回第一代理并且不导致从下游存储器读取数据的监听、现有技术监听(例如,RFO))。如之前指示的,这些不同类型的监听中的任一监听可以结合以上关于图41和图42讨论的实施例中的任何实施例使用。现在将描述关于不同类型的监听的更多细节。
写入-更新监听:图43是流程图,展示了本发明的使用写入-更新监听(也被称为写入-零监听或写入和零监听)来实施监听过程4190或4290的实施例。在图41和图42的上下文中,流程分别从框4124或框4212传递至框4326,所述框使用写入-更新监听执行框4126或框4226。互连3920(例如,经由监听控制器3925的监听发生器3926)被实施成向一致性高速缓存中可能正存储高速缓存行的那些高速缓存发布写入-更新监听(框4326)(换言之,一致性高速缓存中必须对其判定是否存在命中的那些高速缓存)。当向其发布写入-更新监听的高速缓存(例如,第一代理的L1高速缓存、L2高速缓存和/或L3高速缓存切片,以及第二代理的L1高速缓存、L2高速缓存和L3高速缓存切片)的高速缓存行存在命中时(框4340),则所述高速缓存用于:1)如果命中高速缓存行的高速缓存一致性协议状态为“经修改”(并且在一些实施例中,“转发”、“排他”、“拥有”和/或“共享”中的一个或多个)(框4342),则将高速缓存行配置成指示全零(框4344)(不同实施例可以实施高速缓存来将高速缓存行配置成指示全零,如之前在标题为“用于将高速缓存行配置成指示全零的技术”的部分中描述的)并且向互连3920发布指示归零的响应消息(在支持对处于共享状态的命中高速缓存行进行归零的一些实施例中,响应消息还区分高速缓存行的状态——如经修改和零或者拥有和零与共享和零(后者指示原始状态是“共享”并且高速缓存已经将高速缓存行配置成指示全零并且其状态仍然是“共享”);在支持对共享状态的高速缓存行进行归零的替代性实施例中,当原始状态为“共享”并且高速缓存已经将高速缓存行配置成指示全零并且其状态仍然是“共享”时,发送指示未归零的响应消息(如框4350中))(4346);以及2)否则,将所述高速缓存行的高速缓存一致性协议状态配置成“无效”(框4328)并且向互连发布指示未归零的响应消息(框4350)。当向其发布写入-更新监听的高速缓存的高速缓存行不存在命中时(框4340),则高速缓存向互连发布指示未归零的响应消息(框4350)。因此,在一些实施例中,一致性高速缓存可以被实施使得命中经修改、拥有、排他和转发状态中的任何状态的高速缓存行的写入命令或写入和零监听将使高速缓存将高速缓存行配置成归零(并且将其状态变成经修改(经修改和归零)或拥有(拥有和归零))。在替代性实施例中,这种高速缓存可以仅针对经修改、拥有、排他和转发状态的子集这样做;在这种情况下,这将使处于经修改、拥有、排他或转发状态并且未变成经修改和归零或拥有和归零的任何命中高速缓存行响应于写入和零监听而变成无效状态。如此,在一些实施例中,一致性高速缓存的所有或子集可以被实施成针对经修改、排他、拥有或转发状态的所有或子集使高速缓存行响应于在所述高速缓存中命中的写入命令或写入和更新(即,写入和零)监听而被归零(并且其状态变成经修改(经修改和归零)或拥有(拥有和归零))。支持对处于共享状态的命中高速缓存行进行归零并使其保持共享状态的实施例将仅在其他高速缓存中命中的任何经修改、排他、拥有或转发行变成拥有和归零或无效而不是变成经修改和归零时这样做。在某些实施例中,被实施成响应写入-更新监听的高速缓存包括高速缓存控制器4051(例如,经由监听控制器4053),所述高速缓存控制器用于响应于以写入-更新命令而判定是否存在高速缓存命中,将命中的高速缓存行配置成指示全零(不同实施例可以实施高速缓存来将高速缓存行配置成指示全零,如之前在标题为“用于将高速缓存行配置成指示全零的技术”的部分中描述的),并且向互连3920发布响应消息。
在发布写入-更新监听之后,互连3920(例如,经由监听控制器3925的监听响应器3927)被实施成跟踪对相应响应消息的接收(框4352)(例如,在一个实施例中,监听发生器3926向监听响应器3927指示信息以供其跟踪对相应响应消息的接收)。控制从框4352传递至框4128或框4228,取决于图41还是图42的实施例正被实施。高速缓存行大小的零写入可能已经由高速缓存之一响应于写入-更新监听之一而执行(然而,在实施对“共享”状态的高速缓存行的归零并且没有响应消息反映处于拥有和零或经修改和零的高速缓存行之一的实施例中,则高速缓存行的零写入不被认为已经由高速缓存之一响应于写入-更新监听之一而执行)。如果高速缓存行大小的零写入尚未由高速缓存中的任何高速缓存执行(框4128和框4228)(所有响应消息指示未归零;或者在实施对“共享”状态的高速缓存行的归零并且没有响应消息反映处于拥有和零或经修改和零的高速缓存行之一的实施例中),则执行框4132或框4232——即,互连3920(例如,经由监听控制器QO25的写入发生器3929)或第一代理(例如,通过执行单元(例如,(多个)存储器访问单元164、加载-存储单元340)或其他硬件结构)响应于来自互连3920的消息使高速缓存(例如,L1高速缓存、L2高速缓存、L3高速缓存)之一中的高速缓存行被配置成指示全零(不同实施例可以实施高速缓存来将高速缓存行配置成指示全零,如之前在标题为“用于将高速缓存行配置成指示全零的技术”的部分中描述的)或引起在地址处对下游存储器进行高速缓存行大小的零写入。
如上文所展示的,与使用RFO操作相反,使用写入-更新监听的优点是:其不需要行被读取并返回至发布代理并且不需要将数据的所有权给发布代理(当满足4340和4342的条件时,写入-更新监听使另一个一致性代理的高速缓存中的高速缓存行被归零)。因此,使用写入-更新监听的实施例的优点是,其可以直接更新另一个代理(例如,第二代理/非发布代理)的本地高速缓存。例如,这允许相对快速的通信——如更新另一个代理对其进行自旋的变量。
如之前所指示的,写入-更新监听可以结合图41和图42的实施例使用。通过示例的方式,将描述实施来自图41的实施例之一中的写入-更新监听的一个特定实施例。在此特定实施例中,发布代理3900首先尝试写入发布代理3900的L1高速缓存3905;并且如果需要监听,则如上所述互连3920向一致性高速缓存中可能正存储高速缓存行的那些高速缓存发布写入-更新监听。因此,L1高速缓存被实施成如上所述响应于写入命令;L1高速缓存、L2高速缓存和L3高速缓存(更具体地,L3高速缓存切片,如果实施的话)被实施成如上所述响应于写入-更新监听;互连3920被实施成如上所述响应于写入命令而发布写入-更新监听(例如,经由监听控制器3925的监听发生器3926)并且响应于响应消息(例如,经由监听控制器3925的监听响应器3927);并且互连3920(例如,经由监听控制器QO25的写入发生器3929)或第一代理(例如,通过执行单元(例如,(多个)存储器访问单元164、加载-存储单元340)或其他硬件结构)响应于来自互连的消息被实施成使高速缓存(例如,第一代理的L1高速缓存3905、L2高速缓存3910或L3高速缓存3915(更具体地,L3高速缓存切片3916,如果实施的话))之一中的高速缓存行被配置成指示全零(不同实施例可以实施高速缓存来将高速缓存行配置成指示全零,如之前在标题为“用于将高速缓存行配置成指示全零的技术”的部分中描述的)或者引起在存储器地址处对下游存储器进行高速缓存行大小的零写入。
写入-无效监听:图44是流程图,展示了本发明的使用写入-无效监听(也被称为“即使经修改也无效监听”)来实施监听过程4190或4290的实施例。在图41和图42的上下文中,流程分别从框4124或框4212传递至框4426,所述框使用写入-无效监听执行框4126或框4226。互连3920(例如,经由监听控制器3925的监听发生器3926)被实施成向一致性高速缓存中可能正存储高速缓存行的那些高速缓存发布写入-无效监听(框4426)(换言之,一致性高速缓存中必须对其判定是否存在命中的那些高速缓存)。当向其发布写入-无效监听的高速缓存(例如,第一代理的L1高速缓存、L2高速缓存和/或L3高速缓存切片,以及第二代理的L1高速缓存、L2高速缓存和L3高速缓存切片)的高速缓存行存在命中时(框4440),则所述高速缓存用于使高速缓存一致性协议状态指示“无效”(即使当前状态是“经修改”)(框4448);高速缓存不需要将高速缓存行配置成指示全零(不同实施例可以实施高速缓存来将高速缓存行配置成指示全零,如之前在标题为“用于将高速缓存行配置成指示全零的技术”的部分中描述的)或者在无效在固定时间内完成时向互连发布响应消息(如果无效没有在固定时间内完成,则一个实施例使被监听高速缓存发送指示监听完成的响应消息)。当向其发布写入-无效监听的高速缓存的高速缓存行不存在命中时(4440),则所述高速缓存在一个实施例中不进行任何动作(框4430)。
另外,在图41和图42的上下文中,流程分别从框4124或框4212传递至框4132或框4232(当使用写入-无效监听时,不实施框4128和框4228)。在框4132或框4232中,第一代理(例如,通过执行单元(例如,(多个)存储器访问单元164、加载-存储单元340)或其他硬件结构)本身、互连3920(例如,经由监听控制器QO25的写入发生器3929)或第一代理(例如,通过执行单元(例如,(多个)存储器访问单元164、加载-存储单元340)或其他硬件结构)响应于来自互连的消息使高速缓存(例如,第一代理的L1高速缓存3905、L2高速缓存3910或L3高速缓存3915(更具体地,L3高速缓存切片3916,如果实施的话))之一中的高速缓存行被配置成指示全零(不同实施例可以实施高速缓存来将高速缓存行配置成指示全零,如之前在标题为“用于将高速缓存行配置成指示全零的技术”的部分中描述的)或者引起在地址处对下游存储器进行高速缓存行大小的零写入。
如上文所展示的,与使用RFO操作相反,使用写入-无效监听的优点是:其不需要高速缓存行被读取或返回至发布代理,因为发布代理将对数据进行归零。
如之前所指示的,写入-无效监听可以结合图41和图42的实施例使用。通过示例的方式,将描述实施来自图41的实施例之一中的写入-无效监听的一个特定实施例。在此特定实施例中,发布代理3900首先尝试写入发布代理3900的L1高速缓存3905;并且如果需要监听,则如上所述互连3920向一致性高速缓存中可能正存储高速缓存行的那些高速缓存发布写入-无效监听。因此,L1高速缓存被实施成如上所述响应于写入命令;L1高速缓存、L2高速缓存和L3高速缓存(更具体地,L3高速缓存切片,如果实施的话)被实施成如上所述响应于写入-无效监听;互连3920被实施成响应于写入命令而发布写入-无效监听;并且第一代理(例如,通过执行单元(例如,(多个)存储器访问单元164、加载-存储单元340)或其他硬件结构)本身、互连3920(例如,经由监听控制器QO25的写入发生器3929)或第一代理(例如,通过执行单元(例如,(多个)存储器访问单元164、加载-存储单元340)或其他硬件结构)响应于来自互连的消息被实施成使高速缓存(例如,第一代理的L1高速缓存3905、L2高速缓存3910或L3高速缓存3915(更具体地,L3高速缓存切片3916,如果实施的话))之一中的高速缓存行被配置成指示全零(不同实施例可以实施高速缓存来将高速缓存行配置成指示全零,如之前在标题为“用于将高速缓存行配置成指示全零的技术”的部分中描述的)或者引起在存储器地址处对下游存储器进行高速缓存行大小的零写入。
无效和回写监听:图45是流程图,展示了本发明的使用无效和回写监听(也被称为“回写和无效监听”)来实施监听过程4190或4290的实施例。在图41和图42的上下文中,流程分别从框4124或框4212传递至框4526,所述框使用回写和无效监听(无效和回写监听)执行框4126或框4226。互连3920(例如,经由监听控制器3925的监听发生器3926)被实施成向一致性高速缓存中可能正存储高速缓存行的那些高速缓存发布回写和无效监听(框4526)(换言之,一致性高速缓存中必须对其判定是否存在命中的那些高速缓存)。当向其发布这种监听的高速缓存(例如,第一代理的L1高速缓存、L2高速缓存和/或L3高速缓存切片,以及第二代理的L1高速缓存、L2高速缓存和L3高速缓存切片)的高速缓存行存在命中时(框4540),则所述高速缓存用于:1)如果高速缓存行的高速缓存一致性协议状态为“经修改”(框4542)(以及在一些实施例中,“清除-逐出”),则将高速缓存行回写至互连3920(框4544);并且无论如何2)使高速缓存行的高速缓存一致性协议状态指示“无效”(框4548)(高速缓存不需要将高速缓存行配置成指示全零)。当向其发布监听的高速缓存的高速缓存行不存在命中时(框4540),则所述高速缓存在一个实施例中不进行任何动作(控制传递至框4552)。在某些实施例中,被实施成响应于这种监听的高速缓存包括高速缓存控制器4051,所述高速缓存控制器用于响应于这种监听判定是否存在高速缓存命中,将经修改高速缓存行(例如,命中并且具有高速缓存一致性协议状态“经修改”的那些高速缓存行)回写至互连3920,并且将高速缓存行的高速缓存一致性协议状态修改为“无效”。
在发布监听之后,互连3920(例如,经由监听控制器3925的监听响应器3927)被实施成跟踪对任何相应响应消息的接收(框4552)(例如,在一个实施例中,监听发生器3926向监听响应器3927指示信息以供其跟踪对任何相应响应消息的接收)。如果响应消息是随着数据(即,来自经修改高速缓存行的数据)接收的(框4560),则互连3920任选地被实施成(例如,经由监听控制器3925的写入转换器3928)将数据有效地转换为零(框4562)。否则,互连3920任选地被实施成(例如,经由监听控制器3925的写入发生器3929)有效地创建零行(框4564)。控制从框4562和框4564传递至框4132或框4232(当使用无效和回写监听时,不实施框4128和框4228),取决于实施图41还是图42的实施例。在框4132或框4232中,第一代理(例如,通过执行单元(例如,(多个)存储器访问单元164、加载-存储单元340)或其他硬件结构)本身、互连3920(例如,监听控制器QO25)或第一代理(例如,通过执行单元(例如,(多个)存储器访问单元164、加载-存储单元340)或其他硬件结构)响应于来自互连3920的消息使高速缓存(例如,L1高速缓存、L2高速缓存、L3高速缓存)之一中的高速缓存行被配置成指示全零(不同实施例可以实施高速缓存来将高速缓存行配置成指示全零,如之前在标题为“用于将高速缓存行配置成指示全零的技术”的部分中描述的)或者引起在地址处对下游存储器进行高速缓存行大小的零写入。在一个实施例中,不实施框4560和框4562,并且总是执行框4564。在另一个实施例中,不执行框4562,将回写数据发送至第一代理,并且第一代理使数据归零。在另一个实施例中,不执行框4560、框4562和框4564,并且第一代理使数据归零。
如上文所展示的,与使用RFO操作相反,使用无效和回写监听的优点是:其不需要高速缓存行被读取或返回至发布代理,因为发布代理将对数据进行归零。
如之前描述的,上文响应于第一代理发布用于发起在高速缓存行边界上对齐的地址处进行高速缓存行大小的零写入的命令(例如,框4112或框4212)。如之前描述的,此命令可以采用写入命令的形式(例如,框4112或框4212)。在其他实施例中,此命令可以是读取命令(例如,框4212);在这种情况下,通过以下操作使高速缓存(例如,L1高速缓存、L2高速缓存、L3高速缓存)之一中的高速缓存行被配置成指示全零:1)互连3920(例如,监听控制器3925)被实施成响应于来自第一代理的写入命令,所述写入命令具有对第一代理指示零行的响应(所述行将使其高速缓存一致性协议状态被设置为经修改或排他);以及2)第一代理被实施成将其读取命令的结果放入高速缓存中(使高速缓存(例如,L1高速缓存3905)将高速缓存行配置成指示全零(不同实施例可以实施高速缓存来将高速缓存行配置成指示全零,如之前在标题为“用于将高速缓存行配置成指示全零的技术”的部分中描述的),但不放入第一代理的架构寄存器堆中。
如之前所指示的,指示无效和回写的监听可以结合图41和图42的实施例使用。通过示例的方式,将描述实施来自图41的实施例之一中的这种监听的一个特定实施例。在此特定实施例中,发布代理3900首先尝试写入发布代理3900的L1高速缓存3905;并且如果需要监听,则如上所述互连3920向一致性高速缓存中可能正存储高速缓存行的那些高速缓存发布监听。因此,L1高速缓存被实施成如上所述响应于写入命令;L1高速缓存、L2高速缓存和L3高速缓存(更具体地,L3高速缓存切片,如果实施的话)被实施成如上所述响应于监听;互连3920被实施成响应于写入命令而发布监听,任选地被实施成响应于监听而有效地转换成使任何接收数据归零(例如,经由监听控制器3925的写入转换器3928),并且任选地被实施成响应于监听而在没有接收到数据时有效地创建零行(例如,监听控制器3925的写入发生器3929;并且第一代理(例如,通过执行单元(例如,(多个)存储器访问单元164、加载-存储单元340)或其他硬件结构)本身、互连3920(例如,经由监听控制器QO25)或第一代理(例如,通过执行单元(例如,(多个)存储器访问单元164、加载-存储单元340)或其他硬件结构)响应于来自互连的消息被实施成使高速缓存(例如,第一代理的L1高速缓存3905、L2高速缓存3910或L3高速缓存3915(更具体地,L3高速缓存切片3916,如果实施的话))之一中的高速缓存行被配置成指示全零(不同实施例可以实施高速缓存来将高速缓存行配置成指示全零,如之前在标题为“用于将高速缓存行配置成指示全零的技术”的部分中描述的)或者引起在存储器地址处对下游存储器进行高速缓存行大小的零写入。
写出命中但未将数据发送回第一代理并且不导致从下游存储器读取数据的任何 高速缓存行的监听,或者正常地写出行的现有技术监听(RFO):图46是流程图,展示了本发明的使用监听来实施监听过程4190或4290的实施例,所述监听写出命中但不将数据发送回第一代理并且不导致从下游存储器读取数据的任何高速缓存行(或者正常地写出行的现有技术监听——例如,RFO操作)。在图41和图42的上下文中,流程分别从框4124或框4212传递至框4526,所述框使用这种监听执行框4126或框4226。互连3920(例如,经由监听控制器3925的监听发生器3926)被实施成向一致性高速缓存中可能正存储高速缓存行的那些高速缓存发布这种监听(框4626)(换言之,一致性高速缓存中必须对其判定是否存在命中的那些高速缓存)。当向其发布这种监听的高速缓存(例如,第一代理的L1高速缓存、L2高速缓存和/或L3高速缓存切片,以及第二代理的L1高速缓存、L2高速缓存和L3高速缓存切片)的高速缓存行存在命中时(框4640),则所述高速缓存用于响应于监听(4644)。在一些实施例中,当现有技术高速缓存将根据所实施的高速缓存一致性协议正常地响应时,高速缓存被实施成响应于这种监听。尽管在一些实施例中,使用新型监听,但是在其他实施例中使用现有技术监听(例如,RFO操作)——在这种情况下,将高速缓存行归零指令合并到现有处理器设计中不需要修改高速缓存或者需要很小的修改(参见以上标题为“触发高速缓存来将高速缓存行配置成指示全零”的部分)。当向其发布监听的高速缓存的高速缓存行不存在命中时(4640),则所述高速缓存在一个实施例中不进行任何动作(控制传递至框4652)。
在发布监听之后,互连3920(例如,经由监听控制器3925的监听响应器3927)被实施成跟踪对任何相应响应消息的接收(例如,在一个实施例中,监听发生器3926向监听响应器3927指示信息以供其跟踪对任何相应响应消息的接收)。如果响应消息是随着数据(例如,来自经修改高速缓存行的数据)接收的(框4660),则互连3920(例如,经由监听控制器3925的监听响应器3927)被实施成不将数据发送至发布代理或发布代理的高速缓存中的任何高速缓存(框4662)。如果响应消息不随着数据接收(4660),则互连3920(例如,经由监听控制器3925的监听响应器3927)被实施成不从下游存储器读取数据,因为其不需要(框4664)。
控制从框4662和框4664传递至框4132或框4232(当使用这种监听时,不实施框4128和框4228),取决于实施图41还是图42的实施例。在框4132或框4232中,第一代理(例如,通过执行单元(例如,(多个)存储器访问单元164、加载-存储单元340)本身(仅框4232)、互连3920(例如,监听控制器QO25)或第一代理(例如,通过执行单元(例如,(多个)存储器访问单元164、加载-存储单元340)或其他硬件结构)响应于来自互连3920的消息使高速缓存(例如,L1高速缓存、L2高速缓存、L3高速缓存)之一中的高速缓存行被配置成指示全零(不同实施例可以实施高速缓存来将高速缓存行配置成指示全零,如之前在标题为“用于将高速缓存行配置成指示全零的技术”的部分中描述的)或者引起在地址处对下游存储器进行高速缓存行大小的零写入。在不实施框4662(数据被发送回第一代理)和/或不实施框4664(下游存储器被访问并且数据返回至第一代理)的实施例中,则第一代理使数据归零。
如以上所描述的,即使使用RFO操作,所展示的实施例的优点是:其与支持RFO操作的现有高速缓存设计一起工作,不需要或只需要一点修改。
如之前所指示的,三种类型的监听可以结合图41和图42的实施例使用。通过示例的方式,将描述实施来自图42的实施例之一中的这种监听的一个特定实施例。在此特定实施例中,发布代理3900用于向互连3920直接发布用于发起在存储器地址处进行高速缓存行大小的零写入的命令(跳过发布代理/第一代理的高速缓存),互连3920(例如,经由监听控制器3925的监听发生器3926)如上所述向一致性高速缓存中可能正存储高速缓存行的那些高速缓存发布监听;如果响应消息是随着数据(例如,来自经修改高速缓存行的数据)接收的,则互连3920(例如,经由监听控制器3925的监听响应器3927)被任选地实施成不将数据发送至发布代理或发布代理的任何高速缓存;如果响应消息不随着数据接收,则互连3920(例如,经由监听控制器3925的监听响应器3927)被任选地实施成不从下游存储器读取数据,因为其不需要;并且发布代理(第一代理)本身或第一代理响应于来自互连的消息使高速缓存(例如,L1高速缓存、L2高速缓存、L3高速缓存)之一中的高速缓存行被配置成指示全零(不同实施例可以实施高速缓存来将高速缓存行配置成指示全零,如之前在标题为“用于将高速缓存行配置成指示全零的技术”的部分中描述的)或者引起在地址处对下游存储器进行高速缓存行大小的零写入。因此,在某些实施例中,L1高速缓存、L2高速缓存和L3高速缓存(更具体地,L3高速缓存切片,如果实施的话)被实施成如上所述响应于监听;互连3920被实施成如上所述响应于命令而发布监听(例如,经由监听控制器3925的监听发生器3926)并且响应于来自高速缓存的响应数据(例如,经由监听控制器3925的监听响应器3927);发布代理被实施成向互连3920直接发送用于发起在存储器地址处进行高速缓存行大小的零写入的命令;并且发布代理(第一代理)本身或第一代理响应于来自互连的消息使高速缓存(例如,L1高速缓存、L2高速缓存、L3高速缓存)之一中的高速缓存行被配置成指示全零(不同实施例可以实施高速缓存来将高速缓存行配置成指示全零,如之前在标题为“用于将高速缓存行配置成指示全零的技术”的部分中描述的)或者引起在地址处对下游存储器进行高速缓存行大小的零写入。在一个特定实施例中,发布代理(第一代理)本身使高速缓存(例如,L1高速缓存、L2高速缓存、L3高速缓存)之一中的高速缓存行被配置成指示全零。
如先前所描述的,互连3920可以例如表示:1)仅CCX内的互连;2)CCX内和CCX之间的互连;3)不同CCX内的单独互连,以及CCX之间的(多个)互连。如本文所讨论的,系统可以用以上处理器(每个包括一个或多个CCX)中的一个或多个来实施(参见以下标题为“示例性计算机架构”的部分)。这种系统可以包括一个或多个插座(被称为CPU插座或CPU槽),所述插座各自包括一个或多个提供机械和电连接的机械部件。在具有多个插座的系统(例如,服务器)中,插座通过一组一个或多个互连(也称为插座到插座互连)连接。不同实施例可以以不同的方式实施所述一组插座到插座连接,包括环、多个环、点到点链接(例如,如快速路径互连(QPI)、超路径互连(UPI)、超传输(HP)等点到点链接)、(多个)共享总线等。这组插座到插座互连可以被视为互连3920的一部分或根据实施例视为单独的。在一些实施例中,实施这组互连以支持以上关于互连3920所讨论的相同通信(写入命令、监听、响应消息等);其中,当通过插座到插座互连发送时,这些通信中的每一个可以具有相同或不同格式。在其他实施例中,当发送插座到插座时,这些通信(例如,监听类型和/或响应消息中的一个或多个)中的一个或多个被转换。例如,一些实施例可以在单个插座中的(多个)处理器内使用写入更新监听,但是当将其发送至另一个插座时将这样的监听转换为写入无效或回写和无效监听。这些实施例的优点在于是否生成新的归零高速缓存行的决定仅在插座内(因此,不需要来自其他插座的“归零”或“未归零”指示)。
本发明的一个实施例可以包括一种处理器,所述处理器包括第一一致性代理、第二一致性代理和互连。所述第一代理通过所述第一代理的高速缓存耦合至所述互连。所述第二代理通过所述第二代理的高速缓存耦合至所述互连。所述第一代理用于解码和执行指令,所述指令的执行用于引起在存储器地址处进行高速缓存行大小的零写入。所述第一代理用于向第一代理的高速缓存发布用于发起在存储器地址处进行高速缓存行大小的零写入的写入命令。当响应于接收所述写入命令而存在高速缓存行的命中并且所述高速缓存行的高速缓存一致性协议状态是经修改状态或排他状态时,所述第一代理的所述高速缓存用于将所述高速缓存行配置成指示全零。当响应于接收所述写入命令而存在高速缓存未命中时,所述第一代理的所述高速缓存向互连发布所述写入命令。响应于接收所述写入命令,所述互连向所述第二代理的所述高速缓存发布监听。所述互连用于或所述第一代理响应于来自所述互连的消息用于在所述写入命令和所述监听未使所述高速缓存行大小的零写入被执行时使所述第一代理的所述高速缓存中的高速缓存行被配置成指示全零。
另外,以下可以应用:在一些实施例中,当响应于接收所述写入命令而存在高速缓存行的命中并且所述高速缓存行的高速缓存一致性协议状态不是所述经修改状态或所述排他状态时,所述第一代理的所述高速缓存使所述高速缓存行的高速缓存一致性协议状态为无效状态并且向所述互连发布所述写入命令。
本发明的另一个实施例可以包括一种处理器,所述处理器包括用于解码用于使高速缓存行归零的指令的解码器。所述处理器还包括执行单元,所述执行单元耦合至所述解码器并且用于响应于对所述指令的所述解码而发布用于发起在存储器地址处进行高速缓存行大小的零写入的写入命令。所述处理器还包括耦合至执行单元的一致性高速缓存,所述一致性高速缓存用于接收所述写入命令、用于响应于所述写入命令而判定在一致性高速缓存中是否存在命中、用于判定所命中高速缓存行的高速缓存一致性协议状态是经修改状态还是排他状态、用于在高速缓存一致性协议状态是经修改状态或排他状态时将高速缓存行配置成指示全零并且用于响应于接收所述写入命令、在存在未命中时向互连发布所述写入命令。所述互连响应于接收到所述写入命令而向必须针对其判定是否存在命中的多个其他一致性高速缓存中的每一个发布监听。所述互连用于或所述执行单元响应来自所述互连的消息用于在所述写入命令和所述监听不使所述高速缓存行零写入被执行时使所述一致性高速缓存之一中的高速缓存行被配置成指示全零。
另外,以下可以应用:在一些实施例中,所述一致性高速缓存还用于使所述高速缓存行的高速缓存一致性协议状态为无效状态并且在所述所命中高速缓存行的所述高速缓存一致性协议状态不是所述经修改状态或所述排他状态时向所述互连发布所述写入命令。在一些实施例中,所述解码器和所述执行单元是第一核的一部分,并且所述多个一致性高速缓存包括第二核的一致性高速缓存。
本发明的另一个实施例可以包括一种处理器,所述处理器包括第一核,所述第一核用于响应于高速缓存行归零指令的执行而发布写入命令。所述第一核还包括被耦合以进行以下操作的1级(L1)高速缓存:接收所述写入命令;响应于所述写入命令而判定所述高速缓存中存在命中还是未命中;以及响应于所述命中而判定所命中的高速缓存行的高速缓存一致性协议状态是否是授予所述高速缓存在不向其他高速缓存广播的情况下修改所述高速缓存行的权利的状态。所述L1高速缓存用于在所命中的高速缓存行的高速缓存一致性协议状态是授予所述高速缓存在不向其他高速缓存广播的情况下修改所述高速缓存行的权利的状态时响应于所述命中而将所述高速缓存行配置成指示全零。所述L1高速缓存用于响应于所述未命中而向所述互连发布所述写入命令。所述互连耦合至所述第一核并且响应于所述写入命令而用于向多个其他高速缓存中必须针对其确定是否存在命中的高速缓存发布监听。所述第一核用于、所述互连用于或所述第一核响应来自所述互连的消息用于在所述写入命令和所述监听不使所述高速缓存行零写入被执行时使所述高速缓存中的高速缓存行或所述多个其他高速缓存之一被配置成指示全零。
另外,以下可以应用:在一些实施例中,所述L1高速缓存还可以使所述高速缓存一致性协议状态无效并且当所命中高速缓存行的所述高速缓存一致性协议状态不是授予所述高速缓存在不向其他高速缓存广播的情况下修改所述高速缓存行的权利的状态时向所述互连发布所述写入命令。在一些实施例中,响应于所述监听,所述多个其他高速缓存中的每一个还可以被实施成判定在所述其他高速缓存中存在命中还是未命中并且响应于所述命中而判定在所述其他高速缓存中命中的高速缓存行的高速缓存一致性协议状态是否是授予所述高速缓存在不向其他高速缓存广播的情况下修改所述高速缓存行的权利的状态。所述多个其他高速缓存中的每一个用于:将所述高速缓存中的高速缓存行配置成指示全零并且在所述高速缓存中命中的所述高速缓存行的高速缓存一致性协议状态是授予所述高速缓存在不向其他高速缓存广播的情况下修改在所述高速缓存中命中的所述高速缓存行的权利的状态时、响应于所述命中而发布指示归零的响应消息;并且在所述高速缓存中命中的所述高速缓存行的所述高速缓存一致性协议状态不是授予所述高速缓存修改在所述高速缓存中命中的所述高速缓存行的权利的状态时、响应于所述未命中或响应于所述命中而发布指示未归零的响应消息。所述互连用于确定跟踪所述响应消息的接收以判定所述监听是否使所述多个其他高速缓存之一被配置成指示全零。
本发明的另一个实施例可以包括一种处理器,所述处理器包括第一一致性代理、第二一致性代理和互连。所述第一代理通过所述第一代理的高速缓存耦合至所述互连。所述第二代理通过所述第二代理的高速缓存耦合至所述互连。所述第一代理用于解码和执行指令,所述指令的执行用于引起在存储器地址处进行高速缓存行大小的零写入。所述第一代理用于向所述互连发布命令。所述互连用于响应于接收所述命令而向所述第一代理的所述高速缓存和所述第二代理的所述高速缓存发布监听。所述第一代理用于、所述互连用于或所述第一代理响应于来自所述互连的消息用于在所述监听不使所述高速缓存行零写入被执行时使所述第一代理的所述高速缓存中的高速缓存行被配置成指示全零。
本发明的另一个实施例可以包括一种处理器,所述处理器包括用于解码用于使高速缓存行归零的指令的解码器。所述处理器还包括执行单元,所述执行单元耦合至所述解码器以响应于对所述指令的所述解码而发布命令。所述互连响应于接收到所述命令而向必须针对其判定是否存在命中的多个一致性高速缓存中的每一个发布监听。所述执行单元本身用于、所述互连用于或所述执行单元响应于来自所述互连的消息用于在所述监听不使所述高速缓存行零写入被执行时使耦合至所述执行单元的所述多个一致性高速缓存之一中的高速缓存行被配置成指示全零。
本发明的另一个实施例可以包括一种处理器,所述处理器包括第一核,所述第一核用于响应于高速缓存行归零指令的执行而发布命令。所述处理器还包括互连,所述互连耦合至共享的3级(L3)高速缓存、所述第一核的2级(L2)高速缓存以及所述第一核的1级(L1)高速缓存,所述互连用于响应于所述命令而向多个一致性高速缓存中必须针对其确定是否存在命中的一致性高速缓存发布监听。在一些实施例中,所述多个一致性高速缓存包括所述第一核的所述L1高速缓存、所述第一核的所述L2高速缓存、所述L3高速缓存、第二核的L1高速缓存以及所述第二核的L2。所述第一核本身用于、所述互连用于或所述第一核响应于来自所述互连的消息用于使耦合至所述第一核的所述多个一致性高速缓存之一中的高速缓存行被配置成指示全零。
PTE合并
根据一些示例性实施例,处理器核可以支持页表合并特征,从而允许多个较小的存储器页合并成单个有效的较大存储器页。在一些实施例中,例如,八个4KB存储器页可以合并为单个32KB存储器页。在其他实施例中,16个4KB存储器页可以合并成单个64KB存储器页。
当前计算机架构允许各种大小的虚拟存储器页。例如,x86架构可以允许4KB、2MB以及1GB的页。实施这种架构的处理器可以为这些页大小的每一个提供转换后备缓冲器(TLB),从而提供虚拟地址至物理地址的映射。当试图将虚拟地址转换为物理地址时,处理器可以搜索适用TLB中的每一个以判定他们中的任何一个是否包含与虚拟地址相对应的条目。如果找到条目(即,“TLB命中”),则从找到所述条目的TLB中检索所述条目,并且进行从虚拟地址至物理地址的转换。
如果在处理器上存在的TLB中的任何一个中没有找到对应于虚拟地址的条目(即,“TLB未命中”),则处理器可以尝试在页表中定位与虚拟地址相对应的条目。如果找到条目(即,“页表命中”),则从页表中检索条目并将其插入适当的TLB中。然后,可以重试从虚拟地址至物理地址的转换,从而产生TLB命中。
如果在页表中没有找到对应于虚拟地址的条目(即,“页表未命中”),则这可以指示存储器中当前不存在与所提供的虚拟地址相对应的物理地址。在这种情况下,处理器可以使与虚拟地址相对应的页从其他存储设备(例如,磁盘)加载到特定物理地址处的存储器中,并且可以将从所提供的虚拟地址至此物理地址的映射插入到页表中。转换所提供的虚拟地址的后续尝试将引起页表命中,这将使相应条目添加至适当的TLB。
一些当前处理器架构的困难是在可允许的页大小方面缺乏粒度。例如,如以上所解释的,一些处理器架构允许4KB、2MB和1GB的页,从而在页大小之间提供相对“粗”的范围。
根据一些实施例,这种困难可以通过合并多个较小的页,从而产生例如大于4KB但小于2MB的中间页大小来解决。在一些实施例中,这可以通过适时地合并例如八个4KB页以在某些条件下创建单个有效的32KB页来实现。在一些实施例中,这八个4KB页必须与32KB地址边界对齐。
在一些实施例中,这八个4KB页在(a)虚拟地址空间;以及(b)物理地址空间中的一者或两者中必须是连续的。例如,一些实施例可能要求虚拟地址VA和物理地址PA的位12至14彼此相等。也就是说,在一些实施例中,只有在对于较小页中的每一个来说,VA[14:12]==PA[14:12]时,较小页才被合并成较大页。
在一些实施例中,只有在较小页中的每一个具有相同的权限位时,较小页才被合并成较大页。在一些实施例中,当较小页合并成较大页时,操作系统可以将与较小页中的每一个相对应的已访问位/脏位组合成单个值,通过例如对所有较小页的已访问位/脏位执行逻辑OR操作。在一些实施例中,当较小页合并成较大页时,操作系统可以仅设置适当的4KB页脏位/已访问位,从而跟踪较大页的已经被访问和/或脏的部分。
图47是图示,展示了根据一些实施例的可以包括在处理器中的页合并特征。框4700表示包含八个条目4701至4708的页表的一部分,每个条目对应于大小为4KB的页。如图47所示出的,这八个条目4701至4708具有连续的地址,其中,这八个地址的位12至14取连续值000、001、010、011、100、101、110和111。根据一些实施例,如图47所示出的,这八个4KB页可以组合成有效的32KB页4709。
在一些实施例中,有效的32KB页4709可以通过在每个页表条目(PTE)中包括附加位来表示,从而指示应该将这八个4KB页视为有效的32KB页。在一些实施例中,有效的32KB页4709可以由对应于页表条目4701至4708的页目录条目中的附加位来表示,从而指示应该将八个4KB页视为有效的32KB页。在一些实施例中,每次访问这八个4KB页之一时,这八个4KB页的连续对齐地址可以由硬件检测并被视为有效的32KB页。
可以使用各种方法来实现检测多个较小页是否满足合并成有效较大页的标准。例如,图48是流程图,展示了用于将页表条目合并成单个有效页的方法。在所有TLB中发生TLB未命中(例如,所有4KB TLB、32KB TLB、2MB TLB和1GB TLB)时,如框4801所示出的,处理器可以根据页目录的层级结构来遍历页表(例如,使用x86页表定义),如框4802所示出的。在确定适当的页表条目的位置后,处理器然后可以检索包含多个页表条目的高速缓存行(框4803)。例如,在一些实施例中,处理器可以检索高速缓存行中的八个页表条目。
在检索高速缓存行中的多个页表条目时,处理器可以测试页表条目是否对应于满足合并要求的页,如4804所示出的。例如,处理器可以测试页的地址在虚拟存储器和/或物理存储器中是否连续。在一些实施例中,处理器可以进一步测试页的权限位的值是否相同。在一些实施例中,处理器可以判定页的地址是否与32KB边界对齐。
如果高速缓存行中的多个页表条目满足合并为单个所组合页(例如,有效的32KB页)的标准,则可以将对应于所组合页的条目放置在适当的TLB(例如,32KB TLB)中,并且使高速缓存行中的组合成单个条目的条目无效,如框4805所示出的。如果所述多个页表条目不满足合并成单个所组合页的标准,则通常可以通过在TLB中分配对应于较小(例如,4KB)TLB的条目继续虚拟地址至物理地址转换,如框4806所示出的。
在一些实施例中,处理器可以基于相关TLB的内容来判定是否合并多个较小页。例如,在4KB TLB未命中之后,处理器可以检测相应的4KB页是否可以与TLB中存在的附加条目(例如,对应于4KB页的七个其他TLB条目)合并。如果对应于所提供的地址的条目可以与其他条目组合以创建有效的较大页(例如,有效的32KB页),则使要组合的现有TLB条目无效,并且在适当的TLB中(例如,在对应于32KB页的TLB中)创建对应于有效较大页的条目。在一些实施例中,不使用对应于所组合的有效页大小的单独TLB,并且反而将与组合页的虚拟地址至物理地址转换有关的信息存储在对应于较小页大小的TLB(例如,4KB页TLB)中。在一些实施例中,可以使用为此目的保留的附加位将此信息编码在对应于较小页大小的TLB中。
在一些实施例中,上述特征可以与针对页合并而优化的算法来分配页的操作系统结合使用,如以上所描述的。现有操作系统具有被设计用于分配例如4KB、2MB和/或1GB页的算法。可以与一些实施例结合使用的操作系统可以使用被设计用于分配组合页(例如,32KB的有效页)的附加算法。
以上所描述的页合并特征不限于组合特定数量的特定大小的页,而是可以用于合并各种数量的各种大小的页。例如,一些实施例可以合并16个4KB页,从而形成64KB的有效组合页。一些实施例可以另外支持多种大小的有效组合页(例如,32KB和64KB的组合页)。在一些实施例中,多种大小的页(例如,4KB和32KB的页)可以组合成单个有效页(例如,有效的64KB页)。
示例性计算机架构
图49至图52是示例性计算机架构的框图。本领域中已知用于膝上型计算机、台式计算机、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、通用处理器、用于服务器环境的服务器处理器或处理元件、协处理器(例如,安全协处理器)高吞吐量MIC处理器、GPGPU的、加速器(如例如,图形加速器、密码加速器、固定功能加速器、机器学习加速器、联网加速器或计算机视觉加速器)、现场可编程门阵列或任何其他处理器或处理设备、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式设备和各种其他电子设备的其他系统设计和配置也是适合的。一般来说,能够并入如本文所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备通常是适合的。
现在参考图49,示出的是根据本发明的一个实施例的系统4900的框图。系统4900可以包括耦合至控制器中枢4920的一个或多个处理器4910、4915。在一个实施例中,控制器中枢4920包括图形存储器控制器中枢(GMCH)4990和输入/输出中枢(IOH)4950(其可以处于单独的芯片上);GMCH 4990包括存储器和图形控制器,存储器4940和协处理器4945耦合至所述存储器和所述图形控制器;IOH 4950将输入/输出(I/O)设备4960耦合至GMCH 4990。替代性地,存储器和图形控制器中的一个或两个被集成在处理器内(如本文所描述的),存储器4940和协处理器4945直接耦合至处理器4910以及单个芯片中具有IOH 4950的控制器中枢4920。
图49中用虚线表示附加处理器4915的可选性质。每个处理器4910、4915可以包括本文中所描述的处理核中的一个或多个并且可以是处理器3600的某个版本。
存储器4940可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或两者的组合。对于至少一个实施例,控制器中枢4920经由如前侧总线(FSB)等多点总线、如快速路径互连(QPI)等点对点接口或类似的连接4995与(多个)处理器4910、4915通信。
在一个实施例中,协处理器4945是专用处理器(包括,例如,通用处理器、用于服务器环境的服务器处理器或处理元件、如安全协处理器等协处理器、高吞吐量MIC处理器、GPGPU的、加速器如例如图形加速器或数字信号加速器(DSP)单元、密码加速器、固定功能加速器、机器学习加速器、联网加速器或计算机视觉加速器)、现场可编程门阵列、或任何其他处理器或处理设备)。在一个实施例中,控制器中枢4920可以包括集成图形加速器。
就包括架构、微架构、热学、功耗特性等的一系列指标度量而言,在物理资源4910、4915之间可以存在各种差异。
在一个实施例中,处理器4910执行控制一般类型的数据处理操作的指令。协处理器指令可以被嵌入在指令中。处理器4910将这些协处理器指令识别为属于应由附接的协处理器4945执行的类型。因此,处理器4910将协处理器总线或其他互连上的这些协处理器指令(或表示协处理器指令的控制信号)发布至协处理器4945。(多个)协处理器4945接受并执行接收到的协处理器指令。
现在参考图50,示出了根据本发明的实施例的第一更具体的示例性系统5000的框图。如图50所示出的,多处理器系统5000是点对点互连系统,并且包括经由点对点互连5050耦合的第一处理器5070和第二处理器5080。处理器5070和处理器5080各自可以是处理器3600的某个版本。在本发明的一个实施例中,处理器5070和处理器5080分别是处理器4910和处理器4915,而协处理器5038是协处理器4945。在另一个实施例中,处理器5070和处理器5080分别是处理器4910、协处理器4945。
处理器5070和处理器5080被示出为分别包括集成存储器控制器(IMC)单元5072和5082。处理器5070还包括作为其总线控制器单元的一部分的点对点(P-P)接口5076和5078;类似地,第二处理器5080包括P-P接口5086和5088。处理器5070、5080可使用点对点(P-P)电路5078、5088经由P-P接口5050来交换信息。如图50所示出的,IMC 5072和IMC 5082将处理器耦合至对应存储器,即存储器5032和存储器5034,所述存储器可以是主存储器的本地附接到对应处理器的部分。
处理器5070、5080可以各自使用点对点接口电路5076、5094、5086、5098经由单独的P-P接口5052、5054来与芯片组5090交换信息。可选地,芯片组5090可以经由高性能接口5092来与协处理器5038交换信息。在一个实施例中,协处理器5038是如例如高吞吐量MIC处理器、网络或通信处理器、压缩机引擎、图形处理器、GPGPU、嵌入式处理器等专用处理器。
共享高速缓存(未示出)可以包括在任一处理器中或者在两个处理器外部但经由P-P互连与所述处理器相连接,使得如果处理器被置于低功率模式下,则任一或两个处理器的本地高速缓存信息可以被存储在所述共享高速缓存中。
芯片组5090可以经由接口5096耦合至第一总线5016。在一个实施例中,第一总线5016可以是外围组件互连(PCI)总线,或如PCI高速总线或另一种第三代I/O互连总线等总线,但是本发明的范围不限于此。
如图50所示,不同I/O设备5014可以连同总线桥5018耦合至第一总线5016,所述总线桥可以将第一总线5016耦合至第二总线5020。在一个实施例中,如通用处理器、用于服务器环境的服务器处理器或处理元件、协处理器(例如,安全协处理器)高吞吐量MIC处理器、GPGPU的、加速器(如例如,图形加速器或数字信号处理(DSP)单元、密码加速器、固定功能加速器、机器学习加速器、联网加速器或计算机视觉加速器)、现场可编程门阵列或任何其他处理器或处理设备等一个或多个附加处理器5015被耦合至第一总线5016。在一个实施例中,第二总线5020可以是低引脚数(LPC)总线。在一个实施例中,各种设备可以耦合至第二总线5020,所述设备包括例如键盘和/或鼠标5022、通信设备5027以及如磁盘驱动器或者其他大容量存储设备等存储单元5028,在一个实施例中,所述存储单元可以包括指令/代码数据5030。进一步地,音频I/O 5024可以耦合至第二总线5020。应注意的是,其他架构是可能的。例如,替代图50的点对点体系结构,系统可以实施多点分支总线或其他这样的架构。
现在参考图51,示出了根据本发明的实施例的第二更具体的示例性系统5100的框图。图50和图51中的相似元件具有相似的参考号,并且已经从图51中省略了图50的某些方面以避免使图51的其他方面模糊。
图51展示了处理器5070、5080可以分别包括集成存储器和I/O控制逻辑(“CL”)5072和5082。因此,CL 5072、5082包括集成存储器控制器单元并且包括I/O控制逻辑。图51展示了不仅存储器5032、5034被耦合至CL 5072、5082,而且I/O设备5114也被耦合至控制逻辑5072、5082。传统I/O设备5115耦合至芯片组5090。
现在参考图52,示出的是根据本发明的实施例的SoC 5200的框图。图36中的类似的元件具有相似的参考号。而且,虚线框是关于更先进的SoC的可选特征。在图52中,(多个)互连单元5202耦合至:应用处理器5210,所述应用处理器包括一组一个或多个包括高速缓存单元3604A至3604N的核3602A至3602N以及和(多个)共享高速缓存单元3606;系统代理单元3610;(多个)总线控制器单元3616;(多个)集成存储器控制器单元3614;一组一个或多个协处理器5220,所述协处理器可以包括集成图形逻辑、图像处理器、音频处理器、以及视频处理器、通用处理器、用于服务器环境的服务器处理器或处理元件、安全协处理器、高吞吐量MIC处理器、GPGPU的、加速器(如例如,图形加速器或数字信号处理(DSP)单元、密码加速器、固定功能加速器、机器学习加速器、联网加速器或计算机视觉加速器)、现场可编程门阵列、或任何其他处理器或处理设备;静态随机存取存储器(SRAM)单元5230;直接存储器存取(DMA)单元5232;以及用于耦合至一个或多个外部显示器显示的单元5240。在一个实施例中,(多个)协处理器5220是专用处理器,如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
本文公开的机制的实施例可以以硬件、软件、固件或这些实施途径的组合来实施。本发明的实施例可以被实施为在包括至少一个处理器的可编程系统上执行的计算机程序或程序代码,所述至少一个处理器包括例如通用处理器、用于服务器环境的服务器处理器或处理元件、协处理器(例如,安全协处理器)、高吞吐量MIC处理器、GPGPU的、加速器(如例如,图形加速器或数字信号处理(DSP)单元、密码加速器、固定功能加速器、机器学习加速器、联网加速器或计算机视觉加速器)、现场可编程门阵列、或任何其他处理器或处理设备、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
如图50所展示的代码5030等程序代码可以被应用于输入指令以执行本文所描述的功能并且生成输出信息。所述输出信息可以以已知的方式应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,如例如:数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以以高级程序或面向对象的编程语言来实施以便与处理系统通信。如果需要,程序代码还可以以汇编或机器语言实施。事实上,本文描述的机制的范围不限于任何特定的编程语言。在任何情况下,所述语言可以是编译或解释语言。
可由机器可读介质上所存储的表示性指令来实施至少一个实施例的一个或多个方面,所述指令代表处理器内的各种逻辑,当被机器读取时所述指令使所述机器制作用于执行本文中所描述的技术的逻辑。这种表示(被称为“IP核”)可以被存储在有形机器可读介质上并提供给各顾客或制造设施以加载到实际制作所述逻辑或处理器的制作机器中。
这种机器可读存储介质可以包括但不限于:由机器或设备制造或形成的物品的非瞬态有形安排,包括如硬盘等存储介质;任何其他类型的盘,包括软盘、光盘、致密盘只读存储器(CD-ROM)、可重写致密盘(CD-RW)和磁光盘;半导体设备,如只读存储器(ROM);随机存取存储器(RAM),如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM);可擦除可编程只读存储器(EPROM);闪存存储器;电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或者适合于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括包含指令或包含设计数据(如硬件描述语言(HDL))的非暂态有形机器可读介质,所述非暂态有形机器可读介质限定本文描述的结构、电路、设备、处理器和/或系统特征。这种实施例也可以被称为程序产品。
由根据本发明实施例的处理器核执行的指令可以体现在“通用向量友好指令格式”中,以下详细描述。在其他实施例中,未利用这种格式,并且使用了另一指令格式,然而,以下对写入掩码寄存器、各种数据变换(混合、广播等)、寻址等的描述总体上适用于对以上(多个)指令的实施例的描述。另外,以下详细描述了示例性系统、架构、以及流水线。指令可以在这些系统、架构、以及流水线上执行,但是不限于所详述的这些系统、架构、以及流水线。
指令集
指令集可包括一种或多种指令格式。给定的指令格式可定义各种字段(例如,位的数量、位的位置)以指定将要执行的操作(例如,操作码)以及将对其执行该操作的(多个)操作数和/或(多个)其他数据字段(例如,掩码),等等。通过指令模板(或子格式)的定义来进一步分解一些指令格式。例如,可将给定指令格式的指令模板定义为具有该指令格式的字段(所包括的字段通常按照相同顺序,但是至少一些字段具有不同的位的位置,因为较少的字段被包括)的不同子集,和/或定义为具有以不同方式进行解释的给定字段。由此,ISA的每一条指令使用给定的指令格式(并且如果经定义,则按照该指令格式的指令模板中的给定的一个指令模板)来表达,并包括用于指定操作和操作数的字段。例如,示例性ADD(加法)指令具有特定的操作码和指令格式,该特定的指令格式包括用于指定该操作码的操作码字段和用于选择操作数(源1/目的地以及源2)的操作数字段;并且该ADD指令在指令流中出现将使得在操作数字段中具有选择特定操作数的特定的内容。已经推出和/或发布了被称为高级向量扩展(AVX、AVX2和AVX-512)和利用向量扩展(VEX)编码方案的SIMD扩展集(参见例如2014年9月的64和IA-32架构软件开发者手册;2014年10月的高级向量扩展编程参考;以及2016年10月的架构指令集扩展编程参考)。
示例性指令格式
本文中所描述的(多条)指令的实施例能以不同的格式体现。另外,在下文中详述示例性系统、架构和流水线。(多条)指令的实施例可在此类系统、架构和流水线上执行,但是不限于详述的那些系统、架构和流水线。
通用向量友好指令格式
向量友好指令格式是适于向量指令(例如,存在专用于向量操作的特定字段)的指令格式。尽管描述了其中通过向量友好指令格式支持向量和标量操作两者的实施例,但是替代实施例仅使用通过向量友好指令格式的向量操作。
图53A-图53B是图示根据本发明的实施例的通用向量友好指令格式及其指令模板的框图。图53A是图示根据本发明的实施例的通用向量友好指令格式及其A类指令模板的框图;而图53B是图示根据本发明的实施例的通用向量友好指令格式及其B类指令模板的框图。具体地,针对通用向量友好指令格式5300定义A类和B类指令模板,这两者都包括无存储器访问5305的指令模板和存储器访问5320的指令模板。在向量友好指令格式的上下文中的术语“通用”是指不束缚于任何特定指令集的指令格式。
尽管将描述其中向量友好指令格式支持以下情况的本发明的实施例:64字节向量操作数长度(或尺寸)与32位(4字节)或64位(8字节)数据元素宽度(或尺寸)(并且由此,64字节向量由16个双字尺寸的元素组成,或者替代地由8个四字尺寸的元素组成);64字节向量操作数长度(或尺寸)与16位(2字节)或8位(1字节)数据元素宽度(或尺寸);32字节向量操作数长度(或尺寸)与32位(4字节)、64位(8字节)、16位(2字节)或8位(1字节)数据元素宽度(或尺寸);以及16字节向量操作数长度(或尺寸)与32位(4字节)、64位(8字节)、16位(2字节)、或8位(1字节)数据元素宽度(或尺寸);但是替代实施例可支持更大、更小和/或不同的向量操作数尺寸(例如,256字节向量操作数)与更大、更小或不同的数据元素宽度(例如,128位(16字节)数据元素宽度)。
图53A中的A类指令模板包括:1)在无存储器访问5305的指令模板内,示出无存储器访问的完全舍入控制型操作5310的指令模板、以及无存储器访问的数据变换型操作5315的指令模板;以及2)在存储器访问5320的指令模板内,示出存储器访问的时效性5325的指令模板和存储器访问的非时效性5330的指令模板。图53B中的B类指令模板包括:1)在无存储器访问5305的指令模板内,示出无存储器访问的写掩码控制的部分舍入控制型操作5312的指令模板以及无存储器访问的写掩码控制的vsize型操作5317的指令模板;以及2)在存储器访问5320的指令模板内,示出存储器访问的写掩码控制5327的指令模板。
通用向量友好指令格式5300包括以下列出的按照在图53A-53B中图示的顺序的如下字段。
格式字段5340——该字段中的特定值(指令格式标识符值)唯一地标识向量友好指令格式,并且由此标识指令在指令流中以向量友好指令格式出现。由此,该字段对于仅具有通用向量友好指令格式的指令集是不需要的,在这个意义上该字段是任选的。
基础操作字段5342——其内容区分不同的基础操作。
寄存器索引字段5344——其内容直接或者通过地址生成来指定源或目的地操作数在寄存器中或者在存储器中的位置。这些字段包括足够数量的位以从PxQ(例如,32x512、16x128、32x1024、64x1024)寄存器堆中选择N个寄存器。尽管在一个实施例中N可多达三个源寄存器和一个目的地寄存器,但是替代实施例可支持更多或更少的源和目的地寄存器(例如,可支持多达两个源,其中这些源中的一个源还用作目的地;可支持多达三个源,其中这些源中的一个源还用作目的地;可支持多达两个源和一个目的地)。
修饰符(modifier)字段5346——其内容将指定存储器访问的以通用向量指令格式出现的指令与不指定存储器访问的以通用向量指令格式出现的指令区分开;即在无存储器访问5305的指令模板与存储器访问5320的指令模板之间进行区分。存储器访问操作读取和/或写入到存储器层次(在一些情况下,使用寄存器中的值来指定源和/或目的地地址),而非存储器访问操作不这样(例如,源和目的地是寄存器)。尽管在一个实施例中,该字段还在三种不同的方式之间选择以执行存储器地址计算,但是替代实施例可支持更多、更少或不同的方式来执行存储器地址计算。
扩充操作字段5350——其内容区分除基础操作以外还要执行各种不同操作中的哪一个操作。该字段是针对上下文的。在本发明的一个实施例中,该字段被分成类字段5368、α字段5352和β字段5354。扩充操作字段5350允许在单条指令而非2条、3条或4条指令中执行多组共同的操作。
比例字段5360——其内容允许用于存储器地址生成(例如,用于使用(2比例*索引+基址)的地址生成)的索引字段的内容的按比例缩放。
位移字段5362A——其内容用作存储器地址生成的一部分(例如,用于使用(2比例*索引+基址+位移)的地址生成)。
位移因数字段5362B(注意,位移字段5362A直接在位移因数字段5362B上的并置指示使用一个或另一个)——其内容用作地址生成的一部分;它指定将按比例缩放存储器访问的尺寸(N)的位移因数——其中N是存储器访问中的字节数量(例如,用于使用(2比例*索引+基址+按比例缩放的位移)的地址生成)。忽略冗余的低阶位,并且因此将位移因数字段的内容乘以存储器操作数总尺寸(N)以生成将在计算有效地址中使用的最终位移。N的值由处理器硬件在运行时基于完整操作码字段5374(稍后在本文中描述)和数据操纵字段5354C确定。位移字段5362A和位移因数字段5362B不用于无存储器访问5305的指令模板和/或不同的实施例可实现这两者中的仅一个或不实现这两者中的任一个,在这个意义上,位移字段5362A和位移因数字段5362B是任选的。
数据元素宽度字段5364——其内容区分将使用多个数据元素宽度中的哪一个(在一些实施例中用于所有指令;在其他实施例中只用于指令中的一些指令)。如果支持仅一个数据元素宽度和/或使用操作码的某一方面来支持数据元素宽度,则该字段是不需要的,在这个意义上,该字段是任选的。
写掩码字段5370——其内容逐数据元素位置地控制目的地向量操作数中的数据元素位置是否反映基础操作和扩充操作的结果。A类指令模板支持合并-写掩码,而B类指令模板支持合并-写掩码和归零-写掩码两者。当合并时,向量掩码允许在执行(由基础操作和扩充操作指定的)任何操作期间保护目的地中的任何元素集免于更新;在另一实施例中,保持其中对应掩码位具有0的目的地的每一元素的旧值。相反,当归零时,向量掩码允许在执行(由基础操作和扩充操作指定的)任何操作期间使目的地中的任何元素集归零;在一个实施例中,目的地的元素在对应掩码位具有0值时被设为0。该功能的子集是控制正被执行的操作的向量长度的能力(即,从第一个到最后一个正被修改的元素的跨度),然而,被修改的元素不一定要是连续的。由此,写掩码字段5370允许部分向量操作,这包括加载、存储、算术、逻辑等。尽管描述了其中写掩码字段5370的内容选择了多个写掩码寄存器中的包含要使用的写掩码的一个写掩码寄存器(并且由此,写掩码字段5370的内容间接地标识要执行的掩码)的本发明的实施例,但是替代实施例替代地或附加地允许掩码写字段5370的内容直接指定要执行的掩码。
立即数字段5372——其内容允许对立即数的指定。该字段在实现不支持立即数的通用向量友好格式中不存在且在不使用立即数的指令中不存在,在这个意义上,该字段是任选的。
类字段5368——其内容在不同类的指令之间进行区分。参考图53A-图53B,该字段的内容在A类和B类指令之间进行选择。在图53A-图53B中,圆角方形用于指示特定的值存在于字段中(例如,在图53A-图53B中分别用于类字段5368的A类5368A和B类5368B)。
A类指令模板
在A类非存储器访问5305的指令模板的情况下,α字段5352被解释为其内容区分要执行不同扩充操作类型中的哪一种(例如,针对无存储器访问的舍入型操作5310和无存储器访问的数据变换型操作5315的指令模板分别指定舍入5352A.1和数据变换5352A.2)的RS字段5352A,而β字段5354区分要执行所指定类型的操作中的哪一种。在无存储器访问5305的指令模板中,比例字段5360、位移字段5362A和位移比例字段5362B不存在。
无存储器访问的指令模板——完全舍入控制型操作
在无存储器访问的完全舍入控制型操作5310的指令模板中,β字段5354被解释为其(多个)内容提供静态舍入的舍入控制字段5354A。尽管在本发明的所述实施例中舍入控制字段5354A包括抑制所有浮点异常(SAE)字段5356和舍入操作控制字段5358,但是替代实施例可支持这两个概念,可将这两个概念编码为同一字段,或仅具有这些概念/字段中的一个或另一个(例如,可仅具有舍入操作控制字段5358)。
SAE字段5356——其内容区分是否禁用异常事件报告;当SAE字段5356的内容指示启用抑制时,给定的指令不报告任何种类的浮点异常标志,并且不唤起任何浮点异常处置程序。
舍入操作控制字段5358——其内容区分要执行一组舍入操作中的哪一个(例如,向上舍入、向下舍入、向零舍入以及就近舍入)。由此,舍入操作控制字段5358允许逐指令地改变舍入模式。在其中处理器包括用于指定舍入模式的控制寄存器的本发明的一个实施例中,舍入操作控制字段5350的内容覆盖(override)该寄存器值。
无存储器访问的指令模板-数据变换型操作
在无存储器访问的数据变换型操作5315的指令模板中,β字段5354被解释为数据变换字段5354B,其内容区分要执行多个数据变换中的哪一个(例如,无数据变换、混合、广播)。
在A类存储器访问5320的指令模板的情况下,α字段5352被解释为驱逐提示字段5352B,其内容区分要使用驱逐提示中的哪一个(在图53A中,对于存储器访问时效性5325的指令模板和存储器访问非时效性5330的指令模板分别指定时效性的5352B.1和非时效性的5352B.2),而β字段5354被解释为数据操纵字段5354C,其内容区分要执行多个数据操纵操作(也称为基元(primitive))中的哪一个(例如,无操纵、广播、源的向上转换以及目的地的向下转换)。存储器访问5320的指令模板包括比例字段5360,并任选地包括位移字段5362A或位移比例字段5362B。
向量存储器指令使用转换支持来执行来自存储器的向量加载以及向存储器的向量存储。如同寻常的向量指令,向量存储器指令以数据元素式的方式从/向存储器传输数据,其中实际被传输的元素由被选为写掩码的向量掩码的内容规定。
存储器访问的指令模板——时效性的
时效性的数据是可能足够快地被重新使用以从高速缓存操作受益的数据。然而,这是提示,并且不同的处理器能以不同的方式实现它,包括完全忽略该提示。
存储器访问的指令模板——非时效性的
非时效性的数据是不太可能足够快地被重新使用以从第一级高速缓存中的高速缓存操作受益且应当被给予驱逐优先级的数据。然而,这是提示,并且不同的处理器能以不同的方式实现它,包括完全忽略该提示。
B类指令模板
在B类指令模板的情况下,α字段5352被解释为写掩码控制(Z)字段5352C,其内容区分由写掩码字段5370控制的写掩码应当是合并还是归零。
在B类非存储器访问5305的指令模板的情况下,β字段5354的一部分被解释为RL字段5357A,其内容区分要执行不同扩充操作类型中的哪一种(例如,针对无存储器访问的写掩码控制部分舍入控制类型操作5312的指令模板和无存储器访问的写掩码控制VSIZE型操作5317的指令模板分别指定舍入5357A.1和向量长度(VSIZE)5357A.2),而β字段5354的其余部分区分要执行所指定类型的操作中的哪一种。在无存储器访问5305的指令模板中,比例字段5360、位移字段5362A和位移比例字段5362B不存在。
在无存储器访问的写掩码控制部分舍入控制型操作5310的指令模板中,β字段5354的其余部分被解释为舍入操作字段5359A,并且禁用异常事件报告(给定的指令不报告任何种类的浮点异常标志,并且不唤起任何浮点异常处置程序)。
舍入操作控制字段5359A——正如舍入操作控制字段5358,其内容区分要执行一组舍入操作中的哪一个(例如,向上舍入、向下舍入、向零舍入以及就近舍入)。由此,舍入操作控制字段5359A允许逐指令地改变舍入模式。在其中处理器包括用于指定舍入模式的控制寄存器的本发明的一个实施例中,舍入操作控制字段5350的内容覆盖该寄存器值。
在无存储器访问的写掩码控制VSIZE型操作5317的指令模板中,β字段5354的其余部分被解释为向量长度字段5359B,其内容区分要执行多个数据向量长度中的哪一个(例如,128字节、256字节或512字节)。
在B类存储器访问5320的指令模板的情况下,β字段5354的一部分被解释为广播字段5357B,其内容区分是否要执行广播型数据操纵操作,而β字段5354的其余部分被解释为向量长度字段5359B。存储器访问5320的指令模板包括比例字段5360,并任选地包括位移字段5362A或位移比例字段5362B。
针对通用向量友好指令格式5300,示出完整操作码字段5374包括格式字段5340、基础操作字段5342和数据元素宽度字段5364。尽管示出了其中完整操作码字段5374包括所有这些字段的一个实施例,但是在不支持所有这些字段的实施例中,完整操作码字段5374包括少于所有的这些字段。完整操作码字段5374提供操作代码(操作码)。
扩充操作字段5350、数据元素宽度字段5364和写掩码字段5370允许逐指令地以通用向量友好指令格式指定这些特征。
写掩码字段和数据元素宽度字段的组合创建各种类型的指令,因为这些指令允许基于不同的数据元素宽度应用该掩码。
在A类和B类内出现的各种指令模板在不同的情形下是有益的。在本发明的一些实施例中,不同处理器或处理器内的不同核可支持仅A类、仅B类、或者可支持这两类。举例而言,旨在用于通用计算的高性能通用乱序核可仅支持B类,旨在主要用于图形和/或科学(吞吐量)计算的核可仅支持A类,并且旨在用于通用计算和图形和/或科学(吞吐量)计算两者的核可支持A类和B类两者(当然,具有来自这两类的模板和指令的一些混合、但是并非来自这两类的所有模板和指令的核在本发明的范围内)。同样,单个处理器可包括多个核,这多个核全部都支持相同的类,或者其中不同的核支持不同的类。举例而言,在具有单独的图形核和通用核的处理器中,图形核中的旨在主要用于图形和/或科学计算的一个核可仅支持A类,而通用核中的一个或多个可以是具有旨在用于通用计算的仅支持B类的乱序执行和寄存器重命名的高性能通用核。不具有单独的图形核的另一处理器可包括既支持A类又支持B类的一个或多个通用有序或乱序核。当然,在本发明的不同实施例中,来自一类的特征也可在其他类中实现。将使以高级语言编写的程序成为(例如,及时编译或静态编译)各种不同的可执行形式,这些可执行形式包括:1)仅具有由用于执行的目标处理器支持的(多个)类的指令的形式;或者2)具有替代例程并具有控制流代码的形式,该替代例程使用所有类的指令的不同组合来编写,该控制流代码选择这些例程以基于由当前正在执行代码的处理器支持的指令来执行。
示例性专用向量友好指令格式
图54A是图示根据本发明的实施例的示例性专用向量友好指令格式的框图。图54A示出专用向量友好指令格式5400,其指定各字段的位置、尺寸、解释和次序、以及那些字段中的一些字段的值,在这个意义上,该专用向量友好指令格式5400是专用的。专用向量友好指令格式5400可用于扩展x86指令集,并且由此字段中的一些字段与如在现有的x86指令集及其扩展(例如,AVX)中所使用的那些字段类似或相同。该格式保持与具有扩展的现有x86指令集的前缀编码字段、实操作码字节字段、MOD R/M字段、SIB字段、位移字段和立即数字段一致。图示来自图53的字段,来自图54A的字段映射到来自图53的字段。
应当理解,虽然出于说明的目的在通用向量友好指令格式5300的上下文中参考专用向量友好指令格式5400描述了本发明的实施例,但是本发明不限于专用向量友好指令格式5400,除非另有声明。例如,通用向量友好指令格式5300构想了各种字段的各种可能的尺寸,而专用向量友好指令格式5400示出为具有特定尺寸的字段。作为具体示例,尽管在专用向量友好指令格式5400中数据元素宽度字段5364被图示为一位字段,但是本发明不限于此(即,通用向量友好指令格式5300构想数据元素宽度字段5364的其他尺寸)。
通用向量友好指令格式5300包括以下列出的按照图54A中图示的顺序的如下字段。
EVEX前缀(字节0-3)5402——以四字节形式进行编码。
格式字段5340(EVEX字节0,位[7:0])——第一字节(EVEX字节0)是格式字段5340,并且它包含0x62(在本发明的一个实施例中,为用于区分向量友好指令格式的唯一值)。
第二-第四字节(EVEX字节1-3)包括提供专用能力的多个位字段。
REX字段5405(EVEX字节1,位[7-5])——由EVEX.R位字段(EVEX字节1,位[7]–R)、EVEX.X位字段(EVEX字节1,位[6]–X)以及(5357BEX字节1,位[5]–B)组成。EVEX.R、EVEX.X和EVEX.B位字段提供与对应的VEX位字段相同的功能,并且使用1补码的形式进行编码,即ZMM0被编码为1111B,ZMM15被编码为0000B。这些指令的其他字段对如在本领域中已知的寄存器索引的较低三个位(rrr、xxx和bbb)进行编码,由此可通过对EVEX.R、EVEX.X和EVEX.B相加来形成Rrrr、Xxxx和Bbbb。
REX’字段5310——这是REX’字段5310的第一部分,并且是用于对扩展的32个寄存器集合的较高16个或较低16个寄存器进行编码的EVEX.R’位字段(EVEX字节1,位[4]–R’)。在本发明的一个实施例中,该位与以下指示的其他位一起以位反转的格式存储以(在公知x86的32位模式下)与BOUND指令进行区分,该BOUND指令的实操作码字节是62,但是在MODR/M字段(在下文中描述)中不接受MOD字段中的值11;本发明的替代实施例不以反转的格式存储该指示的位以及以下其他指示的位。值1用于对较低16个寄存器进行编码。换句话说,通过组合EVEX.R’、EVEX.R以及来自其他字段的其他RRR来形成R’Rrrr。
操作码映射字段5415(EVEX字节1,位[3:0]–mmmm)——其内容对隐含的前导操作码字节(0F、0F 38或0F 3)进行编码。
数据元素宽度字段5364(EVEX字节2,位[7]–W)——由记号EVEX.W表示。EVEX.W用于定义数据类型(32位数据元素或64位数据元素)的粒度(尺寸)。
EVEX.vvvv 5420(EVEX字节2,位[6:3]-vvvv)——EVEX.vvvv的作用可包括如下:1)EVEX.vvvv对以反转(1补码)形式指定的第一源寄存器操作数进行编码,并且对具有两个或更多个源操作数的指令有效;2)EVEX.vvvv对针对特定向量位移以1补码的形式指定的目的地寄存器操作数进行编码;或者3)EVEX.vvvv不对任何操作数进行编码,该字段被预留,并且应当包含1111b。由此,EVEX.vvvv字段5420对以反转(1补码)的形式存储的第一源寄存器指定符的4个低阶位进行编码。取决于该指令,额外不同的EVEX位字段用于将指定符尺寸扩展到32个寄存器。
EVEX.U 5368类字段(EVEX字节2,位[2]-U)——如果EVEX.U=0,则它指示A类或EVEX.U0;如果EVEX.U=1,则它指示B类或EVEX.U1。
前缀编码字段5425(EVEX字节2,位[1:0]-pp)——提供了用于基础操作字段的附加位。除了对以EVEX前缀格式的传统SSE指令提供支持以外,这也具有压缩SIMD前缀的益处(EVEX前缀仅需要2位,而不是需要字节来表达SIMD前缀)。在一个实施例中,为了支持使用以传统格式和以EVEX前缀格式两者的SIMD前缀(66H、F2H、F3H)的传统SSE指令,将这些传统SIMD前缀编码成SIMD前缀编码字段;并且在运行时在被提供给解码器的PLA之前被扩展成传统SIMD前缀(因此,在无需修改的情况下,PLA既可执行传统格式的这些传统指令又可执行EVEX格式的这些传统指令)。虽然较新的指令可将EVEX前缀编码字段的内容直接用作操作码扩展,但是为了一致性,特定实施例以类似的方式扩展,但允许由这些传统SIMD前缀指定的不同含义。替代实施例可重新设计PLA以支持2位SIMD前缀编码,并且由此不需要扩展。
α字段5352(EVEX字节3,位[7]–EH,也称为EVEX.EH、EVEX.rs、EVEX.RL、EVEX.写掩码控制、以及EVEX.N;也以α图示)——如先前所述,该字段是针对上下文的。
β字段5354(EVEX字节3,位[6:4]-SSS,也称为EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB,还以βββ图示)——如前所述,此字段是针对上下文的。
REX’字段5310——这是REX’字段的其余部分,并且是可用于对扩展的32个寄存器集合的较高16个或较低16个寄存器进行编码的EVEX.V’位字段(EVEX字节3,位[3]–V’)。该位以位反转的格式存储。值1用于对较低16个寄存器进行编码。换句话说,通过组合EVEX.V’、EVEX.vvvv来形成V’VVVV。
写掩码字段5370(EVEX字节3,位[2:0]-kkk)——其内容指定写掩码寄存器中的寄存器的索引,如先前所述。在本发明的一个实施例中,特定值EVEX.kkk=000具有暗示没有写掩码用于特定指令的特殊行为(这能以各种方式实现,包括使用硬连线到所有对象的写掩码或绕过掩码硬件的硬件来实现)。
实操作码字段5430(字节4)还被称为操作码字节。操作码的一部分在该字段中被指定。
MOD R/M字段5440(字节5)包括MOD字段5442、Reg字段5444和R/M字段5446。如先前所述的,MOD字段5442的内容将存储器访问操作和非存储器访问操作区分开。Reg字段5444的作用可被归结为两种情形:对目的地寄存器操作数或源寄存器操作数进行编码;或者被视为操作码扩展,并且不用于对任何指令操作数进行编码。R/M字段5446的作用可包括如下:对引用存储器地址的指令操作数进行编码;或者对目的地寄存器操作数或源寄存器操作数进行编码。
比例、索引、基址(SIB)字节(字节6)——如先前所述的,比例字段5350的内容用于存储器地址生成。SIB.xxx 5454和SIB.bbb 5456——先前已经针对寄存器索引Xxxx和Bbbb提及了这些字段的内容。
位移字段5362A(字节7-10)——当MOD字段5442包含10时,字节7-10是位移字段5362A,并且它与传统32位位移(disp32)一样地工作,并且以字节粒度工作。
位移因数字段5362B(字节7)——当MOD字段5442包含01时,字节7是位移因数字段5362B。该字段的位置与以字节粒度工作的传统x86指令集8位位移(disp8)的位置相同。由于disp8是符号扩展的,因此它仅能在-128和127字节偏移之间寻址;在64字节高速缓存行的方面,disp8使用可被设为仅四个真正有用的值-128、-64、0和64的8位;由于常常需要更大的范围,所以使用disp32;然而,disp32需要4个字节。与disp8和disp32对比,位移因数字段5362B是disp8的重新解释;当使用位移因数字段5362B时,通过将位移因数字段的内容乘以存储器操作数访问的尺寸(N)来确定实际位移。该类型的位移被称为disp8*N。这减小了平均指令长度(单个字节用于位移,但具有大得多的范围)。此类经压缩的位移基于有效位移是存储器访问的粒度的倍数的假设,并且由此地址偏移的冗余低阶位不需要被编码。换句话说,位移因数字段5362B替代传统x86指令集8位位移。由此,位移因数字段5362B以与x86指令集8位位移相同的方式被编码(因此,在ModRM/SIB编码规则中没有变化),唯一的不同在于,将disp8超载至disp8*N。换句话说,在编码规则或编码长度方面没有变化,而仅在有硬件对位移值的解释方面有变化(这需要将位移按比例缩放存储器操作数的尺寸以获得字节式地址偏移)。立即数字段5372如先前所述地操作。
完整操作码字段
图54B是图示根据本发明的一个实施例的构成完整操作码字段5374的具有专用向量友好指令格式5400的字段的框图。具体地,完整操作码字段5374包括格式字段5340、基础操作字段5342和数据元素宽度(W)字段5364。基础操作字段5342包括前缀编码字段5425、操作码映射字段5415和实操作码字段5430。
寄存器索引字段
图54C是图示根据本发明的一个实施例的构成寄存器索引字段5344的具有专用向量友好指令格式5400的字段的框图。具体地,寄存器索引字段5344包括REX字段5405、REX’字段5410、MODR/M.reg字段5444、MODR/M.r/m字段5446、VVVV字段5420、xxx字段5454和bbb字段5456。
扩充操作字段
图54D是图示根据本发明的一个实施例的构成扩充操作字段5350的具有专用向量友好指令格式5400的字段的框图。当类(U)字段5368包含0时,它表明EVEX.U0(A类5368A);当它包含1时,它表明EVEX.U1(B类5368B)。当U=0且MOD字段5442包含11(表明无存储器访问操作)时,α字段5352(EVEX字节3,位[7]–EH)被解释为rs字段5352A。当rs字段5352A包含1(舍入5352A.1)时,β字段5354(EVEX字节3,位[6:4]–SSS)被解释为舍入控制字段5354A。舍入控制字段5354A包括一位SAE字段5356和两位舍入操作字段5358。当rs字段5352A包含0(数据变换5352A.2)时,β字段5354(EVEX字节3,位[6:4]–SSS)被解释为三位数据变换字段5354B。当U=0且MOD字段5442包含00、01或10(表明存储器访问操作)时,α字段5352(EVEX字节3,位[7]–EH)被解释为驱逐提示(EH)字段5352B,并且β字段5354(EVEX字节3,位[6:4]–SSS)被解释为三位数据操纵字段5354C。
当U=1时,α字段5352(EVEX字节3,位[7]–EH)被解释为写掩码控制(Z)字段5352C。当U=1且MOD字段5442包含11(表明无存储器访问操作)时,β字段5354的一部分(EVEX字节3,位[4]–S0)被解释为RL字段5357A;当它包含1(舍入5357A.1)时,β字段5354的其余部分(EVEX字节3,位[6-5]–S2-1)被解释为舍入操作字段5359A,而当RL字段5357A包含0(VSIZE5357.A2)时,β字段5354的其余部分(EVEX字节3,位[6-5]-S2-1)被解释为向量长度字段5359B(EVEX字节3,位[6-5]–L1-0)。当U=1且MOD字段5442包含00、01或10(表明存储器访问操作)时,β字段5354(EVEX字节3,位[6:4]–SSS)被解释为向量长度字段5359B(EVEX字节3,位[6-5]–L1-0)和广播字段5357B(EVEX字节3,位[4]–B)。
示例性寄存器架构
图55是根据本发明的一个实施例的寄存器架构5500的框图。在所图示的实施例中,有32个512位宽的向量寄存器5510;这些寄存器被引用为zmm0到zmm31(zmm寄存器集合)。代替zmm寄存器集合,其他实施例可以包括一组256位宽的十六个向量寄存器;这些寄存器被引用为ymm0到ymm15(ymm寄存器集合)。代替zmm寄存器集合或ymm寄存器集合,其他实施例可以包括一组128位宽的十六个向量寄存器;这些寄存器被引用为xmm0到xmm15(xmm寄存器集合)。在图55中,较低的16个zmm寄存器的较低阶256个位覆盖(overlay)在寄存器ymm0-15上,并且较低的16个zmm寄存器的较低阶128个位(ymm寄存器的较低阶128个位)覆盖在寄存器xmm0-15上。
专用向量友好指令格式5400对这些被覆盖的寄存器堆操作,如在以下表格中所图示。
换句话说,向量长度字段5359B在最大长度与一个或多个其他较短长度之间进行选择,其中每一个此类较短长度是前一长度的一半,并且不具有向量长度字段5359B的指令模板在最大向量长度上操作。此外,在一个实施例中,专用向量友好指令格式5400的B类指令模板对紧缩或标量单/双精度浮点数据以及紧缩或标量整数数据操作。标量操作是对zmm/ymm/xmm寄存器中的最低阶数据元素位置执行的操作;取决于实施例,较高阶数据元素位置要么保持与在指令之前相同,要么归零。
写掩码寄存器5515——在所图示的实施例中,存在8个写掩码寄存器(k0至k7),每一写掩码寄存器的尺寸是64位。在替代实施例中,写掩码寄存器5515的尺寸是16位。在一个实施例中,向量掩码寄存器k0无法用作写掩码;当将正常指示k0的编码用作写掩码时,它选择硬连线的写掩码0xFFFF,从而有效地禁止写掩码用于那条指令。
通用寄存器5525——在所示出的实施例中,有十六个64位通用寄存器,这些寄存器与现有的x86寻址模式一起使用以对存储器操作数寻址。这些寄存器通过名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8到R15来引用。
标量浮点栈寄存器堆(x87栈)5545,在其上面重叠了MMX紧缩整数平坦寄存器堆5550——在所图示的实施例中,x87栈是用于使用x87指令集扩展来对32/64/80位浮点数据执行标量浮点操作的八元素栈;而使用MMX寄存器来对64位紧缩整数数据执行操作,以及为在MMX与XMM寄存器之间执行的一些操作保存操作数。
本发明的替代实施例可以使用更宽的或更窄的寄存器。另外,本发明的替代实施例可以使用更多、更少或不同的寄存器堆和寄存器。
仿真(包括二进制变换、代码变形等)
在一些情况下,指令转换器可用于将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成要由核处理的一条或多条其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图56是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图56示出可使用x86编译器5604来编译高级语言5602形式的程序,以生成可由具有至少一个x86指令集核的处理器5616原生执行的x86二进制代码5606。具有至少一个x86指令集核的处理器5616表示通过兼容地执行或以其他方式处理以下各项来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核的指令集的实质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器5604表示可操作用于生成x86二进制代码5606(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器5616上执行。类似地,图56示出可以使用替代的指令集编译器5608来编译高级语言5602形式的程序,以生成可以由不具有至少一个x86指令集核的处理器5614(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代的指令集二进制代码5610。指令转换器5612用于将x86二进制代码5606转换成可以由不具有x86指令集核的处理器5614原生执行的代码。该转换后的代码不大可能与替代的指令集二进制代码5610相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。因此,指令转换器5612通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码5606的软件、固件、硬件或其组合。
图57展示了根据各个实施例的数据中心5700的概念性概览,所述数据中心总体上可以表示可以在其中/对其实施本文描述的一种或多种技术的数据中心或其他类型的计算网络。如图57中所示出的,数据中心5700总体上可以包含多个机架,所述多个机架中的每一个可以容纳包括对应的一组物理资源的计算设备。在图57中描绘的具体非限制性示例中,数据中心5700包含四个机架5702A至5702D,所述机架容纳包括对应的多组物理资源(PCR)5705A至5705D的计算设备。根据此示例,数据中心5700的集中的一组物理资源5706包括分布在机架5702A至5702D中的各组物理资源5705A至5705D。物理资源5706可以包括多种类型的资源,如例如处理器、协处理器、加速器、现场可编程门阵列(FPGA)、存储器和存储设备。实施例不局限于这些示例。
说明性数据中心5700在许多方面与典型的数据中心不同。例如,在说明性实施例中,如CPU、存储器和其他部件等部件置于其上的电路板(“滑车(sled)”)被设计成提高热性能。具体地,在说明性实施例中,滑车比典型的板更浅。换言之,在从前面到后面的区域中,滑车更短,冷却风扇定位在此处。这减小了空气必须穿过板上的部件的路径的长度。进一步地,相比于典型的电路板,滑车上的部件被间隔开的距离更远,并且所述部件被安排成减少或消除遮蔽(shadowing)(即,一个部件处于另一个部件的气流路径中)。在说明性实施例中,如处理器等处理部件定位在滑车的顶侧,而如DIMM等近程存储器定位在滑车的底侧。由于这种设计提供了增强的气流,所以相比典型的系统,所述部件可以以更高的频率和更高的功率电平进行操作,由此提高性能。另外,滑车被配置成与每个机架5702A、5702B、5702C、5702D中的电力和数据通信电缆盲目配合,从而增强其被快速移除、升级、重新安装和/或替换的能力。类似地,如处理器、加速器、存储器和数据存储设备等定位在滑车上的单独部件被配置成由于其彼此间的间隔增加而易于升级。在说明性实施例中,所述部件另外包括用于证明其真实性的硬件证明特征。
另外,在说明性实施例中,数据中心5700利用支持包括以太网和全向路径(Omni-Path)在内的多个其他网络架构的单网络架构(“结构”)。在说明性实施例中,滑车经由光纤耦合至交换机,相比于典型的双绞线电缆(例如,5类、5e类、6类等),所述光纤提供更高的带宽和更低的等待时间。由于高带宽、低等待时间的互连和网络架构,所以在使用时,数据中心5700可以汇集如存储器、加速器(例如,图形加速器、FPGA、ASIC等)和数据存储驱动器等物理上分离的资源并且根据需要向其提供计算资源(例如,处理器),从而使计算资源能够访问所汇集资源,就好像所述计算资源是本地资源一样。说明性数据中心5700另外接收各种资源的使用情况信息,基于过去的资源使用情况预测不同类型的工作负荷的资源使用情况,并且基于这种信息动态地重新分配所述资源。
数据中心5700的机架5702A、5702B、5702C、5702D可以包括促进各种类型的维护任务的自动化的物理设计特征。例如,数据中心5700可以使用被设计成是机器人访问的并且被设计成接受和容纳机器人可操纵资源滑车的机架来实施。另外,在说明性实施例中,相比于对于电源来说典型的情况,机架5702A、5702B、5702C、5702D包括接收更大电压的集成电源。增大的电压使电源能够向每个滑车上的部件提供额外的电力,从而使所述部件能够以高于典型频率的频率进行操作。图58展示了数据中心5700的机架202的示例性逻辑配置。如图58中所示出的,机架5802总体上可以容纳多个滑车,所述多个滑车中的每一个可以包括对应的一组物理资源。在图58中描绘的具体非限制性示例中,机架5802容纳包括对应的多组物理资源5805-1至5805-4的滑车5804-1至5804-4,所述对应的多组物理资源中的每组物理资源构成机架5802中包括的集中的一组物理资源5806的一部分。关于图1,如果机架5802表示例如机架102A,则物理资源5806可以对应于机架102A中包括的物理资源105A。在此示例的上下文中,物理资源105A因此可以由所述对应的多组物理资源构成,包括机架5802的滑车5804-1至5804-4中包括的物理存储资源5805-1、物理加速器资源5805-2、物理存储器资源5804-3和物理计算资源5805-5。实施例并不局限于此示例。每个滑车可以包含由所述各种类型的物理资源(例如,计算、存储器、加速器、存储)中的每种类型的物理资源构成的集合。通过具有包括分离资源的机器人可访问且机器人可操纵滑车,每种类型的资源可以彼此独立地且以其自身的经优化刷新率升级。
图59展示了根据各个实施例的数据中心5900的示例,所述数据中心总体上可以表示可以在其中/对其实施本文描述的一种或多种技术的数据中心。在图59中描绘的具体非限制性示例中,数据中心5900包括机架5902-1至5902-32。在各个实施例中,数据中心5900的机架可以以限定和/或容纳各种访问路径的方式安排。例如,如图59中示出的,数据中心5900的机架可以以限定和/或容纳访问路径5911A、5911B、5911C和5911D的方式安排。在一些实施例中,存在这种访问路径总体上可以使如机器人维护设备等自动维护设备物理地访问在数据中心5900的各个机架中容纳的计算设备并且执行自动维护任务(例如,替换故障滑车、升级滑车)。在各个实施例中,访问路径5911A、5911B、5911C和5911D的尺寸、机架5902-1至5902-32的尺寸和/或数据中心5900的物理布局的一个或多个其他方面可以被选择为促进这种自动操作。在此上下文中,实施例不受限制。
图60展示了根据各个实施例的数据中心6000的示例,所述数据中心总体上可以表示可以在其中/对其实施本文描述的一种或多种技术的数据中心。如图60中示出的,数据中心6000可以以光学结构6012为特征。光学结构6012总体上可以包括光学信令介质(如光缆)和光学切换基础设施的组合,数据中心6000中的任何特定滑车可以经由所述组合向数据中心6000中的其他滑车中的每一个发送信号(以及从其处接收信号)。光学结构6012向任何给定滑车提供的信令连接可以包括到同一机架中的其他滑车和其他机架中的滑车的连接。在图60中描绘的具体非限制性示例中,数据中心6000包括四个机架6002A至6002D。机架6002A至6002D容纳对应的多对滑车6004A-1和6004A-2、6004B-1和6004B-2、6004C-1和6004C-2以及6004D-1和6004D-2。因此,在此示例中,数据中心6000包括总共八个滑车。经由光学结构6012,每个这种滑车可以拥有与数据中心6000中的这七个其他滑车中的每一个的信令连接。例如,经由光学结构6012,机架6002A中的滑车6004A-1可以拥有与机架6002A中的滑车6004A-2以及分布于数据中心6000的其他机架6002B、6002C和6002D中的这六个其他滑车6004B-1、6004B-2、6004C-1、6004C-2、6004D-1和6004D-2的信令连接。实施例并不局限于此示例。
图5展示了连接方案500的概览,所述连接方案可以表示在一些实施例中可以在如图57、图59和图60的示例数据中心5700、5900和6000中的任何数据中心等数据中心的各个滑车中建立的链路层连接。连接方案6100可以使用以双模光学切换基础设施6114为特征的光学结构来实施。双模光学切换基础设施6114总体上可以包括能够根据多种链路层协议经由同一统一的一组光学信令介质来接收通信并且适当地切换这种通信的切换基础设施。在各个实施例中,双模光学切换基础设施6114可以使用一个或多个双模光学交换机6115来实施。在各个实施例中,双模光学交换机6115总体上可以包括高基交换机。在一些实施例中,双模光学交换机6115可以包括多层交换机,如四层交换机。在各个实施例中,双模光学交换机6115可以以集成硅光子设备为特征,相比于常规切换设备,所述硅光子设备使所述交换机能够以显著减少的等待时间切换通信。在一些实施例中,双模光学交换机6115可以构成叶-脊架构中的叶交换机6130,所述叶-脊架构另外包括一个或多个双模光学脊交换机6120。
在各个实施例中,双模光学交换机可以能够经由光学结构的光学信令介质接收承载互联网协议(IP分组)的以太网协议通信和根据第二高性能计算(HPC)链路层协议(例如,因特尔的全向路径架构(Omni-PathArchitecture)、无限带宽(Infiniband))的通信两者。如图61A中反映的,关于拥有到光学结构的光学信令连接的任何具体的一对滑车6104A和6104B,连接方案6100因此可以提供对经由以太网链路和HPC链路两者实现的链路层连接的支持。因此,单个高带宽、低等待时间的交换机结构可以支持以太网通信和HPC通信两者。实施例并不局限于此示例。
图61B展示了根据一些实施例的机架架构600的总体概览,所述机架架构可以表示图57至图60中描绘的机架中的任何具体机架的架构。如图61B中反映的,机架架构600总体上可以以可以滑车插入其中的多个滑车空间为特征,所述多个滑车空间中的每一个可以经由机架访问区域601被机器人访问。在图61B中描绘的具体非限制性示例中,机架架构6100以五个滑车空间6103-1至6103-5为特征。滑车空间6103-1至6103-5以对应的多用途连接器模块(MPCM)6116-1至6116-5为特征。图61C是图61B的机架架构6100的一部分的详细图示。如图61C中示出的,当滑车插入到滑车空间6103-1至6103-5中的任何给定滑车空间时,相应MPCM(例如,MPCM 6116-3)可以与所插入滑车的配对MPCM 6120耦合。这种耦合可以向所插入滑车提供到所述滑车容纳于其中的机架的信令基础设施和电力基础设施两者的连接。
将由机架架构6100容纳的滑车的类型可以包括以扩展能力为特征的一种或多种类型的滑车。图62展示了可以表示这种类型的滑车的滑车6204的示例。如图62中示出的,滑车6204可以包括一组物理资源6205以及MPCM 6216,所述MPCM被设计成当滑车6204插入到如图61A的滑车空间603-1至603-5中的任何滑车空间等滑车空间中时与配对MPCM耦合。滑车6204还可以以扩展连接器6217为特征。扩展连接器6217总体上可以包括能够接受一种或多种类型的如扩展滑车6218等扩展模块的插座、槽或其他类型的连接元件。通过与扩展滑车6218上的配对连接器耦合,扩展连接器6217可以向物理资源6205提供对处于扩展滑车6218上的补充计算资源6205B的访问。在此上下文中,实施例不受限制。
图63展示了机架架构800的示例,所述机架架构可以表示可以被实施以便提供对如图62的滑车6204等以扩展能力为特征的滑车的支撑的机架架构。在图63中描绘的具体非限制性示例中,机架架构6300包括以对应的MPCM 6316-1至6316-7为特征的七个滑车空间6303-1至6303-7。滑车空间6303-1至6303-7包括对应的主要区域6303-1A至6303-7A和对应的扩展区域6303-1B至6303-7B。关于每个这种滑车空间,当相应MPCM与所插入滑车的配对MPCM耦合时,主要区域总体上可以构成滑车空间的物理地容纳所插入滑车的区域。在所插入滑车配置有如图62的扩展滑车6218等扩展模块的情况下,扩展区域总体上可以构成滑车空间的可以物理上容纳这种模块的区域。
图64展示了根据一些实施例的机架902的示例,所述机架可以表示根据图8的机架架构800实施的机架。在图64中描绘的具体非限制性示例中,机架6402以包括对应的主要区域6403-1A至6403-7A和对应的扩展区域6403-1B至6403-7B的七个滑车空间6403-1至6403-7为特征。在各个实施例中,机架6402中的温度控制可以使用空气冷却系统来实施。例如,如图64中反映的,机架6402可以以多个风扇6419为特征,所述多个风扇被总体上安排成在各个滑车空间6403-1至6403-7内提供空气冷却。在一些实施例中,滑车空间的高度大于常规的“1U”服务器高度。在这种实施例中,相比于常规机架配置中使用的风扇,风扇6419总体上可以包括相对较慢的大直径冷却风扇。相对于以较高速度运行的较小直径冷却风扇,以较低速度运行较大直径的冷却风扇可以增加风扇寿命,同时仍提供相同的冷却量。滑车在物理上比常规机架尺寸更浅。进一步地,部件被安排在每个滑车上以减少热遮蔽(即,未被串联地安排在气流方向上)。因此,较宽、较浅的滑车实现设备性能的增加,因为设备可以由于改善的冷却(即,没有热遮蔽、设备之间存在更多空间、存在更多用于较大散热器的空间等)而在较高的热度范围(例如,250W)下操作。
MPCM 6416-1至6416-7可以被配置成使所插入滑车可获得来源于对应电源模块6420-1至6420-7的电力,所述电源模块中的每一个可以从外部电源6421汲取电力。在各个实施例中,外部电源6421可以向机架6402提供交流(AC)电力,并且电源模块6420-1至6420-7可以被配置成将这种AC电力转换成直流(DC)电力以向所插入滑车供应。在一些实施例中,例如,电源模块6420-1至6420-7可以被配置成将277伏AC电力转换成12伏DC电力以经由对应的MPCM 6416-1至6416-7提供至所插入滑车。实施例并不局限于此示例。
MPCM 6416-1至6416-7还可以被安排成向所插入滑车提供到双模光学切换基础设施6414的光学信令连接,所述双模光学切换基础设施可以与图5的双模光学切换基础设施514相同或类似。在各个实施例中,包含于MPCM 6416-1至6416-7中的光学连接器可以被设计成与包含于所插入滑车的MPCM中的配对光学连接器耦合以经由对应长度的光缆6422-1至6422-7向这种滑车提供到双模光学切换基础设施6414的光学信令连接。在一些实施例中,每个这种长度的光缆可以从其相应的MPCM延伸到机架6402的滑车空间外部的光学互连线束(loom)6423。在各个实施例中,光学互连线束6423可以被安排成穿过机架6402的支撑柱或其他类型的承重元件。在此上下文中,实施例不受限制。因为所插入滑车经由MPCM连接到光学切换基础设施,所以可以节省手动配置机架电缆以容纳新插入滑车通常耗费的资源。
图65展示了根据一些实施例的滑车6504的示例,所述滑车可以表示被设计成与图64的机架6402结合使用的滑车。滑车6504可以以MPCM 6516为特征,所述MPCM包括光学连接器6516A和电源连接器6516B并且被设计成结合MPCM 6516插入到滑车空间中而与所述滑车空间的配对MPCM耦合。将MPCM 6516与这种配对MPCM耦合可以使电源连接器6516与包括在配对MPCM中的电源连接器耦合。这总体上可以使滑车6504的物理资源6505能够经由电源连接器6516和将电源连接器6516导电耦合至物理资源6505的电力传输介质6524从外部电源获得电力。
滑车6504还可以包括双模光学网络接口电路系统6526。双模光学网络接口电路系统6526总体上可以包括能够根据图64的双模光学切换基础设施6414支持的多个链路层协议中的每一个、通过光学信令介质进行通信的电路系统。在一些实施例中,双模光学网络接口电路系统6526可以能够进行以太网协议通信和根据第二高性能协议的通信。在各个实施例中,双模光学网络接口电路系统6526可以包括一个或多个光学收发器模块6527,所述光学收发器模块中的每一个可以能够通过一个或多个光学信道中的每一个发射和接收光学信号。在此上下文中,实施例不受限制。
将MPCM 6516与给定机架中的滑车空间的配对MPCM耦合可以使光学连接器6516A与配对MPCM中包括的光学连接器耦合。这总体上可以经由一组光学信道6525中的每一个建立滑车的光缆与双模光学网络接口电路系统6526之间的光学连接。双模光学网络接口电路系统6526可以经由电信令介质6528与滑车6504的物理资源6505通信。除了滑车的尺寸以及将部件安排在滑车上以提供改进的冷却并实现相对较高热度范围(例如,250W)下的操作之外,如上文参照图64所描述的,在一些实施例中,滑车可以包括用于促进空气冷却的一个或多个额外特征,如被安排成耗散物理资源6505产生的热量的热管和/或散热器。值得注意的是,尽管图65中描绘的示例滑车6504不以扩展连接器为特征,但是以滑车6504的设计元件为特征的任何给定滑车也可以以根据一些实施例的扩展连接器为特征。在此上下文中,实施例不受限制。
图66展示了根据各个实施例的数据中心6600的示例,所述数据中心总体上可以表示可以在其中/对其实施本文描述的一种或多种技术的数据中心。如图66中反映的,可以实施物理基础设施管理框架6650A以促进对数据中心6600的物理基础设施6600A的管理。在各个实施例中,物理基础设施管理框架6650A的一个功能可以是管理数据中心6600内的自动维护功能,如使用机器人维护设备来维修物理基础设施6600A内的计算设备。在一些实施例中,物理基础设施6600A可以以高级遥测系统为特征,所述高级遥测系统执行足够鲁棒的遥测报告以支持物理基础设施6600A的自动管理。在各个实施例中,这种高级遥测系统提供的遥测信息可以支持如故障预测/预防能力和容量规划能力等特征。在一些实施例中,物理基础设施管理框架6650A还可以被配置成使用硬件证明技术来管理对物理基础设施部件的认证。例如,机器人可以在安装之前通过对从与待安装的每个部件相关联的射频识别(RFID)标签处收集的信息进行分析来验证部件的真实性。在此上下文中,实施例不受限制。
如图66中所示出的,数据中心6600的物理基础设施6600A可以包括光学结构6612,所述光学结构可以包括双模光学切换基础设施6614。光学结构6612和双模光学切换基础设施6614可以分别与图4的光学结构412和图5的双模光学切换基础设施514相同或类似并且可以在数据中心6600的滑车之间提供高带宽、低等待时间的多协议连接。如上文所讨论的,参照图1,在各个实施例中,这种连接的可用性可以实现对如加速器、存储器和存储设备等资源的分离和动态汇集。在一些实施例中,例如,在数据中心6600的物理基础设施6600A中可以包括一个或多个所汇集加速器滑车6630,所述一个或多个所汇集加速器滑车中的每一个可以包括可以经由光学结构6612和双模光学切换基础设施6614全局获得且被其他滑车访问的由如例如协处理器和/或FPGA等加速器资源构成的集合。
在另一个示例中,在各个实施例中,在数据中心6600的物理基础设施6600A中可以包括一个或多个所汇集存储滑车6632,所述一个或多个所汇集存储滑车中的每一个可以包括可以经由光学结构6612和双模光学切换基础设施6614全局获得且被其他滑车访问的由存储资源构成的集合。在一些实施例中,这种所汇集存储滑车6632可以包括多个由如固态驱动器(SSD)等固态存储设备构成的集合。在各个实施例中,在数据中心6600的物理基础设施6600A中可以包括一个或多个高性能处理滑车6634。在一些实施例中,高性能处理滑车6634可以包括多个由高性能处理器构成的集合以及增强空气冷却以产生高达250W或更多的更高热度范围的冷却特征。在各个实施例中,任何给定高性能处理滑车6634可以以扩展连接器6617为特征,所述扩展连接器可以接受远程存储器扩展滑车,使得对所述高性能处理滑车6634来说局部可用的远程存储器与所述滑车上包括的处理器和近程存储器分离。在一些实施例中,这种高性能处理滑车6634可以使用包括低等待时间的SSD存储设备的扩展滑车被配置有远程存储器。光学基础设施允许一个滑车上的计算资源利用在定位于同一机架或数据中心中的任何其他机架上的滑车上分离的远程加速器/FPGA、存储器和/或SSD资源。远程资源可以在上文参照图61描述的脊-叶网络架构中被定位成相距一个交换机或两个交换机的距离。在此上下文中,实施例不受限制。
在各个实施例中,可以将一个或多个抽象层应用于物理基础设施6600A的物理资源以便定义如软件定义基础设施6600B等虚拟基础设施。在一些实施例中,可以分配软件定义基础设施6600B的虚拟计算资源6636以支持对云服务6640的提供。在各个实施例中,可以对由虚拟计算资源6636构成的特定集合进行分组以便以SDI服务6638的形式向云服务6640提供。云服务6640的示例可以包括但不限于软件即服务(SaaS)服务6642、平台即服务(PaaS)服务6644以及基础设施即服务(IaaS)服务6646。
在一些实施例中,对软件定义基础设施6600B的管理可以使用虚拟基础设施管理框架6650B来执行。在各个实施例中,虚拟基础设施管理框架6650B可以被设计成结合对向云服务6640分配虚拟计算资源6636和/或SDI服务6638进行管理来实施工作负荷指纹识别技术和/或机器学习技术。在一些实施例中,虚拟基础设施管理框架6650B可以结合执行这种资源分配而使用/查询遥测数据。在各个实施例中,可以实施应用/服务管理框架6650C以便向云服务6640提供QoS管理能力。在此上下文中,实施例不受限制。
可能已经参照其他附图的示例性实施例对流程图中的操作进行了描述。然而,应当理解的是,流程图的操作可以由与参照其他附图讨论的实施例不同的本发明实施例执行,并且参照其他附图讨论的本发明实施例可以执行与参照流程图讨论的操作不同的操作。另外,虽然附图中的流程图示出了由本发明的某些实施例执行的操作的特定顺序,但是应当理解的是,这种顺序是示例性的(例如,替代实施例可以按不同的顺序执行操作、组合某些操作、重叠某些操作等)。
可以使用软件、固件和/或硬件的不同组合来实施本发明的实施例的一个或多个部分。可以使用电子设备来实施实施例,所述电子设备使用如机器可读存储介质(例如,磁盘、光盘、只读存储器(ROM)、闪存设备、相变存储器)和机器可读传输介质(也被称为载体)(例如,电传播信号、光传播信号、无线电传播信号、声传播信号或其他形式的传播信号,如载波、红外信号)等机器可读介质(也被称为计算机可读介质)来存储和传输(内部地和/或使用其他电子装置、通过网络)代码(所述代码由软件指令构成并且有时被称为计算机程序代码或计算机程序)和/或数据。因此,电子设备(例如,计算机)可以包括硬件和软件,如一组一个或多个处理器,所述一组一个或多个处理器耦合至用于存储代码以供在所述一组处理器上执行和/或用于存储数据的一个或多个机器可读存储介质。例如,电子设备可以包括包含代码的非易失性存储器,因为非易失性存储器可以保持代码/数据,甚至是在电子装置关闭时(在电力被移除时)也是如此,并且当电子设备打开时,代码的待由所述一个或多个处理器执行的那个部分通常从较慢非易失性存储器复制到所述电子设备的易失性存储器(例如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))中。典型的电子设备还包括用于建立与其他电子设备的网络连接(使用传播信号来发射和/或接收代码和/或数据)的一组或一个或多个物理网络接口。
虽然已经就多个实施例描述了本发明,但本领域中的技术人员将认识到,本发明 不限于所描述的实施例,可以在所附权利要求的精神和范围内通过修改和更改来实践。因 此,本说明书将被视为说明性的而非限制性的。

Claims (4)

1.一种处理器,包括:
解码器,用于对用于将高速缓存行归零的指令进行解码;
执行单元,耦合至所述解码器并且用于响应于对所述指令的所述解码而发布用于发起在存储器地址处进行高速缓存行大小的零写入的写入命令;
一致性高速缓存,耦合至所述执行单元,用于接收所述写入命令,用于响应于所述写入命令而判定在所述一致性高速缓存中是否存在命中,用于判定所命中高速缓存行的高速缓存一致性协议状态是经修改状态还是排他状态,用于在所述高速缓存一致性协议状态是所述经修改状态或所述排他状态时将高速缓存行配置为指示全零,并且用于响应于接收所述写入命令、在存在未命中时向互连发布所述写入命令;
所述互连,用于响应于接收到所述写入命令而向必须对其判定是否存在命中的多个其他一致性高速缓存中的每一个发布监听,其中,所述互连用于或所述执行单元响应于来自所述互连的消息用于在所述写入命令和所述监听未使所述高速缓存行大小的零写入被执行时使所述一致性高速缓存之一中的高速缓存行被配置成指示全零。
2.如权利要求1所述的处理器,其特征在于,所述一致性高速缓存还用于使所述高速缓存行的高速缓存一致性协议状态为无效状态并且在所述所命中高速缓存行的所述高速缓存一致性协议状态不是所述经修改状态或所述排他状态时向所述互连发布所述写入命令。
3.如权利要求1所述的处理器,其特征在于,所述解码器和所述执行单元是第一核的一部分,并且其中,所述多个一致性高速缓存包括第二核的一致性高速缓存。
4.一种处理器,包括:
解码器,用于对用于将高速缓存行归零的指令进行解码;
执行单元,耦合至所述解码器,用于响应于对所述指令的所述解码而发布命令;
互连,用于响应于接收到所述命令而向必须对其判定是否存在命中的多个一致性高速缓存中的每一个发布监听,其中,所述执行单元本身用于、所述互连用于或所述执行单元响应于来自所述互连的消息用于在所述监听未使所述高速缓存行零写入被执行时使耦合至所述执行单元的所述多个一致性高速缓存之一中的高速缓存行被配置成指示全零。
CN201680090755.2A 2016-12-12 2016-12-12 用于处理器架构的装置和方法 Pending CN109952566A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2016/066242 WO2018111228A1 (en) 2016-12-12 2016-12-12 Apparatuses and methods for a processor architecture

Publications (1)

Publication Number Publication Date
CN109952566A true CN109952566A (zh) 2019-06-28

Family

ID=62559007

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680090755.2A Pending CN109952566A (zh) 2016-12-12 2016-12-12 用于处理器架构的装置和方法

Country Status (10)

Country Link
EP (2) EP3889787B1 (zh)
JP (1) JP7095208B2 (zh)
KR (1) KR20190086669A (zh)
CN (1) CN109952566A (zh)
BR (1) BR112019009566A2 (zh)
DE (1) DE112016007516T5 (zh)
ES (1) ES2895266T3 (zh)
PL (1) PL3552108T3 (zh)
TW (2) TWI751222B (zh)
WO (1) WO2018111228A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113626205A (zh) * 2021-09-03 2021-11-09 海光信息技术股份有限公司 处理器、物理寄存器管理方法及电子装置
CN115858420A (zh) * 2023-02-23 2023-03-28 芯砺智能科技(上海)有限公司 用于支持多处理器架构的系统缓存架构和芯片

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180150256A1 (en) 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
US10929139B2 (en) 2018-09-27 2021-02-23 Qualcomm Incorporated Providing predictive instruction dispatch throttling to prevent resource overflows in out-of-order processor (OOP)-based devices
CN110032407B (zh) * 2019-03-08 2020-12-22 创新先进技术有限公司 提升cpu并行性能的方法及装置和电子设备
US11210100B2 (en) 2019-01-08 2021-12-28 Apple Inc. Coprocessor operation bundling
GB2581140A (en) 2019-01-31 2020-08-12 Ernst & Young Gmbh System and method of obtaining audit evidence
US10983797B2 (en) 2019-05-28 2021-04-20 International Business Machines Corporation Program instruction scheduling
TWI748513B (zh) * 2020-06-12 2021-12-01 鴻海精密工業股份有限公司 資料處理方法、系統、電子裝置及存儲介質
US11314657B1 (en) * 2020-12-02 2022-04-26 Centaur Technology, Inc. Tablewalk takeover
TWI779923B (zh) * 2021-11-11 2022-10-01 南亞科技股份有限公司 圖案驗證系統及其操作方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5551001A (en) * 1994-06-29 1996-08-27 Exponential Technology, Inc. Master-slave cache system for instruction and data cache memories
CN1231443A (zh) * 1998-02-17 1999-10-13 国际商业机器公司 垂直高速缓冲的伪精确i-高速缓存的包括性
JP2000235558A (ja) * 1999-02-16 2000-08-29 Hitachi Ltd 主記憶共有型マルチプロセッサシステム及びその共有領域設定方法
US6178461B1 (en) * 1998-12-08 2001-01-23 Lucent Technologies Inc. Cache-based compaction technique for internet browsing using similar objects in client cache as reference objects
US20070226427A1 (en) * 2006-03-23 2007-09-27 Guthrie Guy L Data processing system, cache system and method for updating an invalid coherency state in response to snooping an operation
CN101127008A (zh) * 2006-08-18 2008-02-20 国际商业机器公司 用于预测性选择预取操作的范围的数据处理系统和方法
US7454577B2 (en) * 2005-02-10 2008-11-18 International Business Machines Corporation Data processing system and method for efficient communication utilizing an Tn and Ten coherency states
CN101944012A (zh) * 2009-08-07 2011-01-12 威盛电子股份有限公司 指令处理方法以及其所适用的超纯量管线微处理器

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03231345A (ja) * 1990-02-06 1991-10-15 Fujitsu Ltd キャッシュ装置
GB2260429B (en) * 1991-10-11 1995-05-24 Intel Corp Versatile cache memory
US5809548A (en) * 1996-08-30 1998-09-15 International Business Machines Corporation System and method for zeroing pages with cache line invalidate instructions in an LRU system having data cache with time tags
US6374330B1 (en) * 1997-04-14 2002-04-16 International Business Machines Corporation Cache-coherency protocol with upstream undefined state
CN1230721A (zh) * 1998-02-17 1999-10-06 国际商业机器公司 具有指令和数据的悬停(h)状态的高速缓存相关协议
KR100373849B1 (ko) * 2000-03-13 2003-02-26 삼성전자주식회사 어소시어티브 캐시 메모리
US6745297B2 (en) * 2000-10-06 2004-06-01 Broadcom Corporation Cache coherent protocol in which exclusive and modified data is transferred to requesting agent from snooping agent
US7290094B2 (en) 2005-05-17 2007-10-30 International Business Machines Corporation Processor, data processing system, and method for initializing a memory block to an initialization value without a cache first obtaining a data valid copy
US7707361B2 (en) * 2005-11-17 2010-04-27 Apple Inc. Data cache block zero implementation
US7475196B2 (en) 2006-03-23 2009-01-06 International Business Machines Corporation Processor, data processing system, and method for initializing a memory block in a data processing system having multiple coherency domains
US9424190B2 (en) * 2011-08-19 2016-08-23 Freescale Semiconductor, Inc. Data processing system operable in single and multi-thread modes and having multiple caches and method of operation
US9684603B2 (en) * 2015-01-22 2017-06-20 Empire Technology Development Llc Memory initialization using cache state
WO2016141817A1 (zh) * 2015-03-06 2016-09-15 华为技术有限公司 数据备份装置及方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5551001A (en) * 1994-06-29 1996-08-27 Exponential Technology, Inc. Master-slave cache system for instruction and data cache memories
CN1231443A (zh) * 1998-02-17 1999-10-13 国际商业机器公司 垂直高速缓冲的伪精确i-高速缓存的包括性
US6178461B1 (en) * 1998-12-08 2001-01-23 Lucent Technologies Inc. Cache-based compaction technique for internet browsing using similar objects in client cache as reference objects
JP2000235558A (ja) * 1999-02-16 2000-08-29 Hitachi Ltd 主記憶共有型マルチプロセッサシステム及びその共有領域設定方法
US7454577B2 (en) * 2005-02-10 2008-11-18 International Business Machines Corporation Data processing system and method for efficient communication utilizing an Tn and Ten coherency states
US20070226427A1 (en) * 2006-03-23 2007-09-27 Guthrie Guy L Data processing system, cache system and method for updating an invalid coherency state in response to snooping an operation
CN101127008A (zh) * 2006-08-18 2008-02-20 国际商业机器公司 用于预测性选择预取操作的范围的数据处理系统和方法
CN101944012A (zh) * 2009-08-07 2011-01-12 威盛电子股份有限公司 指令处理方法以及其所适用的超纯量管线微处理器

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
H. TEZUKA等: "Pin-down cache: a virtual memory management technique for zero-copy communication", 《PROCEEDINGS OF THE FIRST MERGED INTERNATIONAL PARALLEL PROCESSING SYMPOSIUM AND SYMPOSIUM ON PARALLEL AND DISTRIBUTED PROCESSING》 *
H. TEZUKA等: "Pin-down cache: a virtual memory management technique for zero-copy communication", 《PROCEEDINGS OF THE FIRST MERGED INTERNATIONAL PARALLEL PROCESSING SYMPOSIUM AND SYMPOSIUM ON PARALLEL AND DISTRIBUTED PROCESSING》, 6 August 2002 (2002-08-06) *
林伟;叶笑春;宋风龙;张浩;: "众核处理器中使用写掩码实现混合写回/写穿透策略", 计算机学报, no. 11, 15 November 2008 (2008-11-15) *
苏栋: "分块归零处理TURBO编译码器FPGA设计与实现", 《中国优秀硕士学位论文全文数据库》 *
苏栋: "分块归零处理TURBO编译码器FPGA设计与实现", 《中国优秀硕士学位论文全文数据库》, no. 11, 15 November 2010 (2010-11-15) *
黄涛等: "采用分区域管理的软硬件协作高能效末级高速缓存设计", 《计算机辅助设计与图形学学报》 *
黄涛等: "采用分区域管理的软硬件协作高能效末级高速缓存设计", 《计算机辅助设计与图形学学报》, no. 11, 15 November 2013 (2013-11-15) *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113626205A (zh) * 2021-09-03 2021-11-09 海光信息技术股份有限公司 处理器、物理寄存器管理方法及电子装置
CN113626205B (zh) * 2021-09-03 2023-05-12 海光信息技术股份有限公司 处理器、物理寄存器管理方法及电子装置
CN115858420A (zh) * 2023-02-23 2023-03-28 芯砺智能科技(上海)有限公司 用于支持多处理器架构的系统缓存架构和芯片

Also Published As

Publication number Publication date
EP3552108A4 (en) 2020-07-15
WO2018111228A1 (en) 2018-06-21
DE112016007516T5 (de) 2019-10-02
BR112019009566A2 (pt) 2019-08-06
TW202219748A (zh) 2022-05-16
EP3889787B1 (en) 2023-11-01
PL3552108T3 (pl) 2022-01-03
EP3552108A1 (en) 2019-10-16
JP7095208B2 (ja) 2022-07-05
TW201823971A (zh) 2018-07-01
TWI751222B (zh) 2022-01-01
KR20190086669A (ko) 2019-07-23
JP2020513605A (ja) 2020-05-14
EP3889787A1 (en) 2021-10-06
EP3552108B1 (en) 2021-08-18
ES2895266T3 (es) 2022-02-18

Similar Documents

Publication Publication Date Title
US20220237123A1 (en) Apparatuses and methods for a processor architecture
CN109952566A (zh) 用于处理器架构的装置和方法
CN104838355B (zh) 用于在多线程计算机系统中提供高性能和公平的机制
CN109215728B (zh) 用于分布式存储器危险检测和错误恢复的存储器电路和方法
US10776110B2 (en) Apparatus and method for adaptable and efficient lane-wise tensor processing
CN109213523A (zh) 具有存储器系统性能、功率减小和原子支持特征的可配置空间加速器的处理器、方法和系统
CN104781803B (zh) 用于架构不同核的线程迁移支持
CN108292215B (zh) 用于加载-索引和预取-聚集操作的指令和逻辑
CN109597646A (zh) 具有可配置空间加速器的处理器、方法和系统
CN109478139A (zh) 用于共享存储器中的访问同步的装置、方法和系统
CN109213522A (zh) 远程原子操作指令
CN107077321A (zh) 用于执行融合的单个周期递增‑比较‑跳转的指令和逻辑
CN105164650A (zh) 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置
CN105279016A (zh) 线程暂停处理器、方法、系统及指令
CN104995599A (zh) 使用硬件与软件组合的路径概况分析
CN108351786A (zh) 在指令集架构中对数据进行排序并且合并经排序数据
CN108885586A (zh) 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令
CN109992559A (zh) 多插槽系统中的远程原子操作
CN109791493A (zh) 用于乱序集群化解码中的负载平衡的系统和方法
CN108228234A (zh) 用于聚集-更新-分散操作的加速器
CN108431770A (zh) 用于加速集合运算的硬件内容关联数据结构
CN110321160A (zh) 用于推测性有条件移动操作的装置和方法
CN108205447A (zh) 使用早期和后期地址以及循环计数寄存器来跟踪架构状态的流引擎
CN1226699A (zh) 高性能的推测性字符串/多重操作
JP2018500659A (ja) 高速ベクトルによる動的なメモリ競合検出

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