CN108228484A - 针对处理器中的高速缓存利用的无效读取 - Google Patents

针对处理器中的高速缓存利用的无效读取 Download PDF

Info

Publication number
CN108228484A
CN108228484A CN201711317356.8A CN201711317356A CN108228484A CN 108228484 A CN108228484 A CN 108228484A CN 201711317356 A CN201711317356 A CN 201711317356A CN 108228484 A CN108228484 A CN 108228484A
Authority
CN
China
Prior art keywords
processor
cache
invalid
read requests
equipment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201711317356.8A
Other languages
English (en)
Other versions
CN108228484B (zh
Inventor
S.埃迪里舒里亚
G.埃迪里舒里亚
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 CN108228484A publication Critical patent/CN108228484A/zh
Application granted granted Critical
Publication of CN108228484B publication Critical patent/CN108228484B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0877Cache access modes
    • G06F12/0882Page mode
    • 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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Power Sources (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明涉及针对处理器中的高速缓存利用的无效读取。在实施例中,用于将高速缓存条目无效的处理器包括:至少一个处理单元;处理器高速缓存;以及直接高速缓存单元。所述直接高速缓存单元用以从第一设备接收针对所述处理器高速缓存中的第一高速缓存条目中的数据的直接读取请求;确定所述直接读取请求是否是无效读取请求;响应于所述直接读取请求是无效读取请求的确定:在不访问主存储器的情况下,将第一高速缓存条目中的数据从处理器高速缓存直接发送到第一设备;以及将处理器高速缓存中的第一高速缓存条目无效。还描述且要求保护其他实施例。

Description

针对处理器中的高速缓存利用的无效读取
背景技术
实施例涉及计算机处理器,以及更特别地涉及计算机处理器中的高速缓存利用。
发明内容
计算设备可以包括中央处理器和主存储器(例如,处理器外部的随机存取存储器)。处理器可以从主存储器读取数据和指令,并且可以将执行结果写入到主存储器。一些处理器可以包括内部高速缓存存储器。高速缓存存储器可以储存数据块的拷贝,所述数据块也被储存在主存储器中并且可能在不远的将来被处理器所需要。
附图说明
图1是根据本发明的实施例的***的一部分的框图。
图2是根据本发明的实施例的处理器的框图。
图3是根据本发明的另一个实施例的多域处理器的框图。
图4是包括多个核的处理器的实施例。
图5是根据本发明的一个实施例的处理器核的微架构的框图。
图6是根据另一个实施例的处理器核的微架构的框图。
图7是根据又一个实施例的处理器核的微架构的框图。
图8是根据另外又一个实施例的处理器核的微架构的框图。
图9是根据本发明的另一个实施例的处理器的框图。
图10是根据本发明的实施例的代表性SoC的框图。
图11是根据本发明的实施例的另一个示例SoC的框图。
图12是实施例可以与其一起使用的示例***的框图。
图13是实施例可以与其一起使用的另一个示例***的框图。
图14是代表性计算机***的框图。
图15是根据本发明的实施例的***的框图。
图16是图示了根据实施例的被用来制造用以实行操作的集成电路的IP核开发***的框图。
图17是根据一个或多个实施例的示例***的示图。
图18是根据一个或多个实施例的示例处理器的示图。
图19是根据一个或多个实施例的示例操作。
图20是根据一个或多个实施例的示例序列。
图21是根据一个或多个实施例的示例序列。
图22是根据一个或多个实施例的示例读取操作。
具体实施方式
尽管参考具体的集成电路(诸如在计算平台或处理器中)描述了下述实施例,但是其他实施例也可应用到其他类型的集成电路和逻辑设备。本文中所描述的实施例的类似技术和教导可以被应用到其他类型的电路或半导体设备。例如,所公开的实施例不限于任何特定类型的计算机***。即,公开的实施例可以被用在许多不同***类型中,范围从服务器计算机(例如,塔式服务器、机架服务器、刀锋服务器、微服务器等)、通信***、储存***、任何配置的台式计算机、膝上型计算机、笔记本计算机以及平板计算机(包括2:1平板设备、平板手机等),并且还可以被用在其他设备(诸如手持式设备、片上***(SoC)以及嵌入式应用)中。手持式设备的一些示例包括蜂窝电话,诸如智能电话、互联网协议设备、数字相机、个人数字助理(PDA)以及手持式PC。嵌入式应用可以典型地包括微控制器、数字信号处理器(DSP)、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机、可穿戴设备或可以实行下文所教导的功能和操作的任何其他***。尤其如此,可以在具有标准语音功能性的移动终端(诸如移动电话、智能电话和平板手机)中和/或在没有标准无线语音功能通信能力的非移动终端(诸如许多可穿戴设备、平板设备、笔记本计算机、台式计算机、微服务器、服务器等)中实行实施例。此外,本文中所描述的装置、方法和***不限于物理计算设备,而还可以涉及软件实现方式。
现在参照图1,示出的是根据本发明的实施例的***的一部分的框图。如图1中示出的,***100可以包括各种部件,包括处理器110,其如所示出的那样是多核处理器。处理器110可以经由外部稳压器160而被耦合到电源150,其可以实行第一电压转换来向处理器110提供主稳压Vreg
如看到的,处理器110可以是包括多个核120a-120n的单管芯处理器。此外,每个核可以与集成稳压器(IVR)125a-125n相关联,所述集成稳压器接收主稳压并且生成要向与IVR相关联的处理器的一个或多个代理提供的操作电压。相应地,可以提供IVR实现方式来允许对电压以及因此对每个单独核的功率和性能的细粒度控制。如此,每个核可以在独立的电压和频率下进行操作,使得能够实现很大的灵活性并且提供广阔机会以便将功率消耗与性能进行平衡。在一些实施例中,多个IVR的使用使得能够实现将部件分组到单独的功率平面中,使得功率由IVR来调节并供应到仅分组中的那些部件。在功率管理期间,当处理器被放置到某个低功率态中时,一个IVR的给定功率平面可以被掉电或断电,而另一个IVR的另一个功率平面保持活动或者被完全供电。类似地,核120可以包括独立时钟生成电路或者与独立时钟生成电路(诸如一个或多个锁相环(PLL))相关联,以独立地控制每个核120的操作频率。
仍参照图1,附加的部件可以存在于处理器内,包括输入/输出接口(IF)132、另一个接口134以及集成存储器控制器(IMC)136。如看到的,这些部件中的每个可以由另一个集成稳压器125x来供电。在一个实施例中,接口132可以使得能够实现针对英特尔®快速路径互连(QPI)互连的操作,该英特尔®快速路径互连(QPI)互连在包括多个层的高速缓存一致性协议中提供点对点(PtP)链路,所述多个层包括物理层、链路层和协议层。进而,接口134可以经由***部件互连快速(PCIeTM)协议进行通信。
还示出的是功率控制单元(PCU)138,其可以包括电路,所述电路包括硬件、软件和/或固件来实行关于处理器110的功率管理操作。如看到的,PCU 138经由数字接口162向外部稳压器160提供控制信息来使稳压器生成适当的稳压。PCU 138还经由另一个数字接口163向IVR 125提供控制信息来控制生成的操作电压(或者使对应的IVR在低电压模式中被禁用)。在各种实施例中,PCU 138可以包括各种功率管理逻辑单元来实行基于硬件的功率管理。这样的功率管理可以完全是处理器控制的(例如,通过各种处理器硬件,并且其可以由工作量和/或功率、热或其他处理器约束来触发)和/或功率管理可以响应于外部源(例如平台或功率管理源或***软件)而被实行。
在图1中,PCU 138被图示为被呈现为处理器的单独逻辑。在其他情况下,PCU逻辑138可以在给定的一个或多个核120上执行。在一些情况下,PCU 138可以被实现为被配置成执行其自己的专用功率管理代码的微控制器(专用的或通用的)或者其他控制逻辑,所述专用功率管理代码有时被称为P码。在又一实施例中,要由PCU 138实行的功率管理操作可以在处理器外部实现,诸如通过处理器外部的单独的功率管理集成电路(PMIC)或其他部件来实现。在又一实施例中,要由PCU 138实行的功率管理操作可以被实现在BIOS或其他***软件内。
实施例可以特别适合于多核处理器,其中多个核中的每个可以在独立的电压和频率点处进行操作。如本文中所使用的,术语“域”被用于意指在相同电压和频率点处进行操作的硬件和/或逻辑的集合。此外,多核处理器可以进一步包括其他非核处理引擎,诸如固定功能单元、图形引擎等。这样的处理器可以包括独立域而不是核,诸如与图形引擎相关联的一个或多个域(本文中被称为图形域)以及与非核电路相关联的一个或多个域(在本文中被称为非核或***代理)。虽然多域处理器的许多实现方式可以在单个半导体管芯上形成,但是其他实现方式也可以通过多芯片封装来实现,其中不同的域可以存在于单个封装的不同半导体管芯上。
虽然为了便于说明而未示出,但理解的是,附加部件可以存在于诸如非核逻辑之类的处理器110以及诸如内部存储器(例如,一个或多个级别的高速缓存存储器层级结构等)之类的其他部件内。此外,虽然利用集成稳压器在图1的实现方式中示出,但是实施例并不如此受限。例如,可以从外部稳压器160或稳压的一个或多个附加外部源向片上源提供其他稳压。
注意的是,本文中所描述的功率管理技术可独立于并且补充于基于操作***(OS)的功率管理(OSPM)机制。根据一个示例OSPM技术,处理器可以在各种性能状态或水平(所谓的P状态,即从P0到PN)下进行操作。通常,P1性能状态可以对应于可以被OS请求的最高保证性能状态。除了该P1状态之外,OS可以进一步请求更高的性能状态,即P0状态。该P0状态可以因此是机会型的、超频的或加速模式状态,其中当功率和/或热预算可用时,处理器硬件可以配置处理器或至少其部分来在比保证频率更高的频率下进行操作。在许多实现方式中,处理器可以包括在P1保证最大频率以上的多个所谓的窗口频率(bin frequency),超过特定处理器的最大峰值频率,如在制造期间融合到处理器中或以其他方式写入处理器中那样。此外,根据一个OSPM机制,处理器可以在各种功率状态或水平下进行操作。关于功率状态,OSPM机制可以指定不同的功率消耗状态,通常被称为C状态,C0、C1到Cn状态。当核为活动时,其在C0状态下运行,并且当核为空闲时,其可以被放置在核低功率状态中,该状态也被称为核非零C状态(例如,C1-C6状态),其中每个C状态处于较低功率消耗水平(使得C6是比C1更深的低功率状态,等等)。
理解的是,可以单独地或与不同实施例组合来使用许多不同类型的功率管理技术。作为代表性示例,功率控制器可以控制要由一些形式的动态电压频率缩放(DVFS)进行功率管理的处理器,在该动态电压频率缩放中一个或多个核或其他处理器逻辑的操作频率和/或操作电压可以被动态地控制以在某些情形中减少功率消耗。在示例中,可以使用从英特尔公司(圣克拉拉,加州)可得的增强型Intel SpeedStepTM技术来实行DVFS,以在最低功率消耗水平下提供最优性能。在另一个示例中,可以使用Intel TurboBoostTM技术来实行DVFS,以使得一个或多个核或其他计算引擎能够基于状况(例如,工作量和可用性)在比保证操作频率更高的频率下进行操作。
可以在某些示例中使用的另一个功率管理技术是不同计算引擎之间的工作量的动态交换。例如,处理器可以包括在不同功率消耗水平下进行操作的非对称核或其他处理引擎,使得在受功率约束的情形中,一个或多个工作量可以被动态地交换以在较低功率的核或其他计算引擎上执行。另一个示例性功率管理技术是硬件占空比(HDC),其可以使核和/或其他计算引擎根据占空比而被定期地启用和禁用,使得一个或多个核可以在占空比的非活动时段期间被变为非活动的并且在占空比的活动时段期间被变为活动的。
当在操作环境中存在约束时,还可以使用功率管理技术。例如,当遇到功率和/或热约束时,可以通过降低操作频率和/或电压来降低功率。其他功率管理技术包括对指令执行率进行节流或对指令调度进行限制。更进一步的,可能的是,使给定指令集架构的指令包括关于功率管理操作的明示或暗示的指示。尽管利用这些特定的示例进行描述,要理解的是许多其他功率管理技术也可以被用在特定的实施例中。
实施例可以实现于针对包括服务器处理器、台式计算机处理器、移动处理器等的各种市场的处理器中。现在参照图2,示出的是根据本发明的实施例的处理器的框图。如在图2中示出的,处理器200可以是包括多个核210a-210n的多核处理器。在一个实施例中,每个这样的核可以具有独立的功率域并且可以被配置成基于工作量进入和退出活动状态和/或最大性能状态。一个或多个核210可以与其他核是异构的,例如,具有不同微架构、指令集架构、流水线深度、功率和性能能力。各种核可以经由互连215耦合到包括各种部件的***代理或非核220。如看到的,非核220可以包括可以是末级高速缓存的共享高速缓存230。此外,非核可以包括集成存储器控制器240来例如经由存储器总线与***存储器(在图2中未示出)进行通信。非核220还包括各种接口250和功率控制单元255,其可以包括用以实行本文中所描述的功率管理技术的逻辑。
此外,通过接口250a-250n,可以构成与诸如***设备、大容量储存设备等等的各种片外部件的连接。虽然在图2的实施例中利用这种特定实现方式进行示出,但是本发明的范围不限于这一点。
现在参考图3,示出的是根据本发明的另一个实施例的多域处理器的框图。如在图3的实施例中示出的,处理器300包括多个域。具体地,核域310可以包括多个核310a-310n,图形域320可以包括一个或多个图形引擎以及可以进一步存在***代理域350。在一些实施例中,***代理域350可以在与核域相比独立的频率下执行并且可以总是保持上电以处理功率控制事件和功率管理,以使得域310和320可以被控制成动态地进入和退出高功率状态和低功率状态。域310和320中的每个可以在不同电压和/或功率下进行操作。注意的是,虽然仅利用三个域示出,要理解的是本发明的范围不限于这一点并且附加的域可以存在于其他实施例中。例如,多个核域可以各自被呈现为包括至少一个核。
通常,除了各种执行单元和附加的处理元件之外,每个核310可以进一步包括低级别高速缓存。进而,各种核可以彼此耦合并且耦合到由末级高速缓存(LLC)340a-340n的多个单元所形成的共享高速缓存存储器。在各种实施例中,LLC 340可以在核和图形引擎以及各种媒体处理电路当中共享。如看到的,环形互连330因此将核耦合在一起,并且在核、图形域320和***代理电路350之间提供互连。在一个实施例中,互连330可以是核域的部分。然而在其他实施例中,环形互连可以具有其自己的域。
如进一步看到的,***代理域350可以包括显示控制器352,其可以提供对相关联显示器的控制以及与其的接口。如进一步看到的,***代理域350可以包括功率控制单元355,其可以包括用以实行本文中所描述的功率管理技术的逻辑。
如在图3中进一步看到的,处理器300可以进一步包括集成存储器控制器(IMC)370,其可以向***存储器提供接口,***存储器诸如是动态随机存取存储器(DRAM)。可以存在多个接口380a-380n来使得能够实现处理器和其他电路之间的互连。例如,在一个实施例中可以提供至少一个直接媒体接口(DMI)接口以及一个或多个PCIeTM接口。更进一步的,为了在其他代理(诸如附加的处理器)或其他电路之间提供通信,还可以提供一个或多个QPI接口。虽然在图3的实施例中以这种高级别示出,但是要理解的是本发明的范围不限于这一点。
参照图4,图示了包括多个核的处理器的实施例。处理器400包括任何处理器或处理设备,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持式处理器、应用处理器、协处理器、片上***(SoC)或用以执行代码的其他设备。在一个实施例中,处理器400包括至少两个核——核401和402,其可以包括非对称核或对称核(图示的实施例)。然而,处理器400可以包括可以是对称的或非对称的任何数量的处理元件。
在一个实施例中,处理元件指代用以支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或任何其他元件,其能够为处理器保持状态(诸如执行状态或架构状态)。换言之,在一个实施例中,处理元件指代能够独立地与代码相关联的任何硬件,诸如软件线程、操作***、应用或其他代码。物理处理器通常指代集成电路,其潜在地包括任意数量的其他处理元件,诸如核或硬件线程。
核通常指代位于集成电路上能够维持独立架构状态的逻辑,其中每个独立维持的架构状态与至少一些专用执行资源相关联。与核形成对比,硬件线程通常指代位于集成电路上能够维持独立架构状态的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。如可以看到的,当某些资源是共享的而其他资源专用于架构状态时,核和硬件线程的命名法之间的界线重叠。还经常的是,核和硬件线程***作***视为各个逻辑处理器,其中操作***能够在每个逻辑处理器上单独地调度操作。
如在图4中图示的,物理处理器400包括两个核,核401和402。在此,核401和402被视为对称核,即,具有相同配置、功能单元和/或逻辑的核。在另一个实施例中,核401包括无序处理器核,而核402包括有序处理器核。然而,可以从任何类型的核中单独地选择核401和402,所述任何类型的核诸如是原生核、软件管理核、适配为执行原生指令集架构(ISA)的核、适配为执行转译ISA的核、协同设计的核或其他已知核。仍进一步讨论的,下文进一步详细描述核401中图示的功能性单元,同时核402中的单元以类似的方式进行操作。
如所描绘的,核401包括两个硬件线程401a和401b,其还可以被称为硬件线程槽401a和401b。因此,在一个实施例中,软件实体(诸如操作***)潜在地将处理器400视为四个单独的处理器,即,能够同时执行四个软件线程的四个逻辑处理器或处理元件。如上文暗示的,第一线程与架构状态寄存器401a相关联,第二线程与架构状态寄存器401b相关联,第三线程可以与架构状态寄存器402a相关联以及第四线程可以与架构状态寄存器402b相关联。在此,架构状态寄存器(401a、401b、402a以及402b)中的每一个可以被称为处理元件、线程槽或线程单元,如上文所描述的。如图示的,在架构状态寄存器401b中复制架构状态寄存器401a,所以各个架构状态/上下文能够被存储以用于逻辑处理器401a和逻辑处理器401b。在核401中,其他更小的资源(诸如分配器和重命名器块430中的指令指针和重命名逻辑)也可以被复制以用于线程401a和401b。一些资源(诸如在重排序器/引退单元435中的重排序器缓冲器、支路目标缓冲器以及指令转译后备缓冲器(BTB和I-TLB)420、加载/存储缓冲器以及队列)可以通过划分而被共享。其他资源(诸如通用内部寄存器、(一个或多个)页表基址寄存器、低级别数据高速缓存以及数据TLB 450,(一个或多个)执行单元440以及无序单元435的部分)被潜在地充分共享。
处理器400通常包括其他资源,其可以被完全共享、通过划分共享、或者由处理元件专用/专用于处理元件。在图4中,图示了利用处理器的说明性逻辑单元/资源的纯示例性处理器的实施例。注意的是,处理器可以包括或省略这些功能单元中的任意,以及可以包括未被描绘的任何其他已知功能单元、逻辑或固件。如图示的,核401包括简化的、代表性的无序(OOO)处理器核。但是可以在不同实施例中利用有序处理器。OOO核包括用以预测要被执行/采用的支路的支路目标缓冲器420以及用以储存针对指令的地址转译条目的指令转译缓冲器(I-TLB)420。
核401进一步包括耦合到取指单元以对所取指的元素进行解码的解码模块425。在一个实施例中,取指逻辑包括分别与线程槽401a、401b相关联的各个定序器。通常,核401与第一ISA相关联,所述第一ISA定义/指定在处理器400上可执行的指令。通常,作为第一ISA的部分的机器代码指令包括指令的一部分(被称为操作码),其参考/指定要被实行的指令或操作。解码逻辑425包括电路,所述电路将这些指令从它们的操作码中识别出来并且在流水线中传递被解码的指令以用于如由第一ISA所定义的那样进行处理。例如,在一个实施例中,解码器425包括设计/适配为识别特定指令(诸如事务指令)的逻辑。作为由解码器425进行识别的结果,架构或核401采取特定的、预定义的动作来实行与适当指令相关联的任务。重要的是注意到,本文中所描述的任何任务、块、操作和方法可以响应于单个或多个指令而实行;其中的一些可以是新的或旧的指令。
在一个示例中,分配器和重命名器块430包括用以保留资源(诸如用以储存指令处理结果的寄存器文件)的分配器。然而,线程401a和401b潜在地能够无序执行,其中分配器和重命名器块430还保留其他资源(诸如重排序器缓冲器)来跟踪指令结果。单元430还可以包括用以将程序/指令参考寄存器重命名为处理器400内部的其他寄存器的寄存器重命名器。重排序器/引退单元435包括诸如上文所提到的重排序器缓冲器、加载缓冲器以及存储缓冲器之类的部件来支持无序执行和之后的被无序执行的指令的有序引退。
在一个实施例中,调度器和(一个或多个)执行单元块440包括用以在执行单元上调度指令/操作的调度器单元。例如,在具有可用浮点执行单元的执行单元的端口上对浮点指令进行调度。还包括与执行单元相关联的寄存器文件来储存信息指令处理结果。示例性执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、储存执行单元以及其他已知的执行单元。
较低级别数据高速缓存和数据转译后备缓冲器(D-TLB)450被耦合到(一个或多个)执行单元440。数据高速缓存要储存在元件上最近使用/操作的数据(诸如数据操作数),其被潜在地保持在存储器一致性状态中。D-TLB要储存最近的虚拟/线性到物理地址转译。作为具体的示例,处理器可以包括用以将物理存储器分解成多个虚拟页面的页表结构。
在此,核401和402共享对更高级别的或更远离的(further-out)高速缓存410的访问,该高速缓存410要高速缓存最近取指的元素。注意的是,更高级别或更远离指代增加或者变得更远离(一个或多个)执行单元的高速缓存级别。在一个实施例中,更高级别的高速缓存410是末级数据高速缓存——处理器400上的存储器层级结构中的末级——诸如二级或三级数据高速缓存。然而,更高级别的高速缓存410并不如此受限,因为它可以与指令高速缓存相关联或者包括指令高速缓存。跟踪高速缓存(指令高速缓存的类型)替代地可以在解码器425之后被耦合来储存最近解码的跟踪。
在所描绘的配置中,处理器400还包括总线接口模块405和功率控制模块460,其可以根据本发明的实施例实行功率管理。在该情形中,总线接口405要与处理器400外部的设备(诸如***存储器和其他部件)进行通信。
存储器控制器470可以与诸如一个或许多存储器之类的其他设备对接。在一个示例中,总线接口405包括具有用于与存储器对接的存储器控制器和用于与图形处理器对接的图形控制器的环形互连。在SoC环境中,甚至更多的诸如网络接口、协处理器、存储器、图像处理器和任何其他已知的计算机设备/接口之类的设备可以被集成在单个管芯或集成电路上以提供具有高功能性和低功率消耗的小形状因数。
现在参照图5,示出的是根据本发明的一个实施例的处理器核的微架构的框图。如在图5中示出的,处理器核500可以是多阶段流水线化的无序处理器。核500可以基于所接收到的操作电压在各种电压下进行操作,该操作电压可以从集成稳压器或外部稳压器接收。
如在图5中看到的,核500包括前端单元510,其可以被用于对要被执行的指令进行取指并且使它们准备好以供之后在处理器流水线中使用。例如,前端单元510可以包括取指单元501、指令高速缓存503和指令解码器505。在一些实现方式中,前端单元510可以进一步包括跟踪高速缓存,与微代码储存设备以及微操作储存设备一起。取指单元501可以例如从存储器或指令高速缓存503对宏指令进行取指并且将它们馈送到指令解码器505来将它们解码成基元(即,用于由处理器执行的微操作)。
在前端单元510和执行单元520之间耦合的是可以被用来接收微指令并且使它们准备好以用于执行的无序(OOO)引擎515。更具体地,OOO引擎515可以包括各种缓冲器来将微指令流重排序并且分配对于执行所需要的各种资源,以及在诸如寄存器文件530和扩展寄存器文件535之类的各种寄存器文件内向储存位置上提供逻辑寄存器的重命名。寄存器文件530可以包括针对整数和浮点操作的单独的寄存器文件。出于配置、控制和附加操作的目的,还可以存在机器特定寄存器(MSRs)538的集合并且其对于在核500内(以及核外)的各种逻辑是可访问的。
可以在执行单元520中存在各种资源,包括例如各种整数、浮点以及单指令多数据(SIMD)逻辑单元,除了别的具体硬件以外。例如,这样的执行单元可以包括一个或多个算术逻辑单元(ALI)522和一个或多个向量执行单元524,除了别的执行单元以外。
可以将来自执行单元的结果提供给引退逻辑,即记录器缓冲器(ROB)540。更具体地,ROB 504可以包括各种阵列和逻辑来接收与被执行的指令相关联的信息。该信息然后被ROB 540检查以确定是否指令可以被有效地引退以及结果数据致力于处理器的架构状态,或者阻止指令适当引退的一个或多个例外是否出现。当然,ROB 540可以处置与引退相关联的其他操作。
如在图5中示出的,ROB 540被耦合到高速缓存550,其在一个实施例中可以是低级别高速缓存(例如,L1高速缓存),尽管本发明的范围不限于这一点。而且,执行单元520可以被直接耦合到高速缓存550。根据高速缓存550,数据通信可以利用更高级别的高速缓存、***存储器等等来发生。虽然在图5的实施例中利用该高级别示出,要理解本发明的范围不限于这一点。例如,虽然图5的实现方式是关于诸如具有英特尔®x86指令集架构(ISA)的无序机器,但是本发明的范围不限于这一点。即,其他实施例可以被实施在有序处理器、精简指令集计算(RISC)处理器(诸如基于ARM的处理器)或者可以经由仿真引擎和相关联的逻辑电路对不同ISA的指令和操作进行仿真的另一种类型ISA的处理器。
现在参照图6,示出的是根据另一个实施例的处理器核的微架构的框图。在图6的实施例中,核600可以是不同微架构的低功率核,诸如具有被设计为降低功率消耗的相对有限的流水线深度的基于英特尔®AtomTM的处理器。如看到的,核600包括被耦合来向指令解码器615提供指令的指令高速缓存610。分支预测器605可以被耦合到指令高速缓存610。注意的是,指令高速缓存610可以进一步被耦合到高速缓存存储器的另一级别,诸如L2高速缓存(在图6中为了便于说明而未示出)。进而,指令解码器615向发布队列(IQ)620提供经解码的指令以用于储存并且传递到给定执行流水线。微码ROM 618被耦合到指令解码器615。
浮点流水线630包括浮点(FP)寄存器文件632,其可以包括多个给定比特宽度(诸如128、256或512比特)的架构寄存器。流水线630包括浮点调度器634来调度用于在流水线的多个执行单元中的一个上执行的指令。在示出的实施例中,这样的执行单元包括ALU635、混洗(shuffle)单元636以及浮点加法器638。进而,在这些执行单元中生成的结果可以往回提供给寄存器文件632的寄存器和/或缓冲器。当然理解的是,虽然利用这几个示例执行单元来示出,但是可以在另一个实施例中存在附加的或不同的浮点执行单元。
还可以提供整数流水线640。在示出的实施例中,流水线640包括整数(INT)寄存器文件642,其可以包括多个给定比特宽度(诸如128或256比特)的架构寄存器。流水线640包括整数执行(IE)调度器644,其用以调度用于在流水线的多个执行单元中的一个上执行的指令。在示出的实施例中,这样的执行单元包括ALU 645、移位器单元646以及跳转执行单元(JEU)648。进而,在这些执行单元中生成的结果可以往回提供给寄存器文件642的缓冲器和/或寄存器。当然理解的是,虽然利用这几个示例执行单元来示出,但是可以在另一个实施例中存在附加的或不同的整数执行单元。
存储器执行(ME)调度器650可以调度用于在也耦合到TLB 654的地址生成单元(AGU)652中执行的存储器操作。如看到的,这些结构可以耦合到数据高速缓存660,其可以是进而耦合到高速缓存存储器层级结构的附加级别(包括L2高速缓存存储器)的L0和/或L1数据高速缓存。
为了针对无序执行提供支持,可以除了重排序缓冲器680之外提供分配器/重命名器670,其被配置成将无序执行的指令重排序以用于有序引退。虽然在图6的图示中利用该特定流水线架构来示出,但是要理解的是许多变化和替换方式也是可能的。
注意的是,在具有非对称核(诸如根据图5和6的微架构)的处理器中,工作量可以出于功率管理原因而在核之间被动态地交换,因为尽管具有不同流水线设计和深度,这些核可以具有相同的或相关的ISA。这样的动态核交换可以以对用户应用(以及也可能是内核)透明的方式来实行。
参照图7,示出的是根据又一个实施例的处理器核的微架构的框图。如在图7中图示的,核700可以包括多阶段的有序流水线来以非常低的功率消耗水平执行。作为一个这样的示例,处理器700可以具有根据从ARM控股有限公司(森尼维耳市,加州)可得的ARMCortex A53设计的微架构。在实现方式中,可以提供被配置成执行32比特代码和64比特代码的8阶段流水线。核700包括被配置成对指令进行取指并且将其提供给解码单元715的取指单元710,该解码单元715可以对指令进行解码,所述指令例如是诸如ARMv8 ISA之类的给定ISA的宏指令。进一步注意的是,队列730可以耦合到解码单元715来储存经解码的指令。经解码的指令被提供给发布逻辑725,其中经解码的指令可以被发布到多个执行单元中的给定一个。
进一步参考图7,发布逻辑725可以向多个执行单元中的一个发布指令。在示出的实施例中,这些执行单元包括整数单元735、乘法单元740、浮点/向量单元750、双重发布单元760以及加载/存储单元770。这些不同执行单元的结果可以被提供给写回(WB)单元780。要理解的是,虽然为了便于说明而示出单个写回单元,但是在一些实现方式中单独的写回单元可以与每个执行单元相关联。此外,要理解的是虽然在图7中示出的单元和逻辑中的每个都在高级别下表示,但是特定的实施例可以包括更多或不同的结构。使用如图7中的具有流水线的一个或多个核所设计的处理器可以在许多不同终端产品中实现,从移动设备延伸到服务器***。
参照图8,示出的是根据另外又一个实施例的处理器核的微架构的框图。如在图8中示出的,核800可以包括多阶段多发布无序流水线来在非常高的性能水平(其可以在比图7的核700更高的功率消耗水平下发生)下执行。作为一个这样的示例,处理器800可以具有根据ARM Cortex A57设计的微架构。在实现方式中,可以提供被配置成执行32比特和64比特代码两者的15(或更多)阶段流水线。此外,流水线可以提供3(或更大)宽和3(或更大)发布操作。核800包括被配置成对指令进行取指并且将其提供给被耦合到高速缓存820的解码器/重命名器/分配器单元815的取指单元810。单元815可以对指令(例如ARMv8指令集架构的宏指令)进行解码,对指令内的寄存器参考进行重命名,以及将指令(最终地)分配给所选的执行单元。经解码的指令可以被储存在队列825中。注意的是,虽然为了便于说明而在图8中示出单个队列结构,但是要理解的是,可以针对多种不同类型的执行单元中的每个来提供单独的队列。
在图8中还示出的是发布逻辑830,根据该发布逻辑830可以将储存在队列825中的经解码的指令发布到所选的执行单元。在特定的实施例中,还可以针对发布逻辑830耦合到的多种不同类型的执行单元中的每个,利用单独的发布逻辑来实现发布逻辑830。
经解码的指令可以被发布到多个执行单元中的给定一个。在示出的实施例中,这些执行单元包括一个或多个整数单元835、乘法单元840、浮点/向量单元850、分支单元860以及加载/存储单元870。在实施例中,浮点/向量单元850可以被配置成处置128或256比特的向量数据或SIMD。更进一步的,浮点/向量执行单元850可以实行IEEE-754双精度浮点操作。这些不同执行单元的结果可以被提供给写回单元880。注意的是,在一些实现方式中,单独的写回单元可以与执行单元中的每个相关联。此外,要理解的是,虽然在图8中示出的单元和逻辑中的每个都在高级别下表示,但是特定的实现方式可以包括更多或不同的结构。
注意的是,在具有非对称核(诸如根据图7和8的微架构)的处理器中,可以出于功率管理原因而动态地交换工作量,因为尽管具有不同的流水线设计和深度,这些核可以具有相同或相关的ISA。这样的动态核交换可以以对用户应用(以及还可能是内核)透明的方式来实行。
使用如在图5-8中的任意一个或多个中的具有流水线的一个或多个核所设计的处理器可以被实现在许多不同终端产品中,从移动设备延伸到服务器***。现在参照图9,示出的是根据本发明的另一个实施例的处理器的框图。在图9的实施例中,处理器900可以是包括多个域的SoC,所述多个域中的每个可以被控制为在独立的操作电压和操作频率下操作。作为具体的说明性示例,处理器900可以是基于英特尔®架构CoreTM的处理器,诸如i3、i5、i7或从英特尔公司可得的另一种这样的处理器。然而,其他低功率处理器(诸如以下可得:超微半导体公司(AMD,森尼维耳市,加州)、来自ARM控股有限公司或其被许可方的基于ARM的设计或者来自MIPS技术公司(森尼维耳市,加州)或其许可方或采购方的基于MIPS的设计)可以替代地存在于其他实施例中,诸如苹果A7处理器、高通骁龙处理器或德州仪器OMAP处理器。这样的SoC可以被用在低功率***中,诸如智能电话、平板计算机、平板手机计算机、超极本TM计算机或其他便携式计算设备,其可以结合具有基于异构***架构的处理器设计的异构***架构。
在图9中示出的高级别视图中,处理器900包括多个核单元910a-910n。每个核单元可以包括一个或多个处理器核、一个或多个高速缓存存储器以及其他电路。每个核单元910可以支持一个或多个指令集(例如,x86指令集(具有已经添加有较新版本的一些扩展));MIPS指令集;ARM指令集(具有诸如NEON的可选附加扩展)或者其他指令集或其组合。注意的是,核单元中的一些可以是异构资源(例如,具有不同设计)。此外,每个这样的核可以被耦合到高速缓存存储器(未示出),其在实施例中可以是共享二级(L2)高速缓存存储器。非易失性储存设备930可以被用来储存各种程序和其他数据。例如,该储存设备可以被用来储存至少部分微代码、启动信息(诸如BIOS)、其他***软件等等。
每个核单元910还可以包括诸如总线接口单元之类的接口来使得能够实现与处理器的附加电路的互连。在实施例中,每个核单元910耦合到一致性构造,所述一致性构造可以充当主高速缓存一致性管芯上互连,其进而耦合到存储器控制器935。进而,存储器控制器935控制与诸如DRAM之类的存储器(在图9中为了便于说明而未示出)的通信。
除了核单元之外,在处理器内存在附加的处理引擎,包括至少一个图形单元920,其可以包括一个或多个图形处理单元(GPU)来实行图形处理以及可能地在图形处理器上执行通用操作(所谓的GPGPU操作)。此外,可以存在至少一个图像信号处理器925。信号处理器925可以被配置成处理从一个或多个捕获设备(在SoC内部或片外的)接收到的传入图像数据。
还可以存在其他加速器。在图9的图示中,视频编码器950可以实行编码操作,包括针对视频信息进行编码和解码,例如,提供针对高清晰度视频内容的硬件加速支持。可以进一步提供显示控制器955来加速显示操作,包括提供针对***的内部和外部显示器的支持。此外,可以存在安全处理器945来执行诸如安全启动操作、各种加密操作等等的安全操作。
每个单元可以具有其经由功率管理器940控制的功率消耗,功率管理器940可以包括控制逻辑来实行本文中所描述的各种功率管理技术。
在一些实施例中,SoC 900可以进一步包括非一致性构造,其被耦合到各种***设备可以耦合于的一致性构造。一个或多个接口960a-960d使得能够实现与一个或多个片外设备的通信。这样的通信可以经由各种通信协议(诸如PCIeTM、GPIO、USB、I2C、UART、MIPI、SDIO、DDR、SPI、HDMI),除了别的类型的通信协议之外。虽然在图9的实施例中在该高级别下示出,要理解的是本发明的范围不限于这一点。
现在参照图10,示出的是代表性SoC的框图。在示出的实施例中,SoC 1000可以是被配置用于低功率操作的多核SoC,所述低功率操作要被优化以用于结合到智能电话或诸如平板计算机或其他便携式计算设备之类的其他低功率设备中。作为示例,SoC 1000可以使用非对称或不同类型的核(诸如更高功率核和/或低功率核(例如,无序核和有序核)的组合)来实现。在不同的实施例中,这些核可以基于英特尔®架构TM核设计或基于ARM架构设计。在又一个实施例中,可以在给定的SoC中实现英特尔核和ARM核的混合体。
如在图10中看到的,SoC 1000包括具有多个第一核1012a-1012d的第一核域1010。在示例中,这些核可以是低功率核,诸如有序核。在一个实施例中,这些第一核可以被实现为ARM Cortex A53核。进而,这些核耦合到核域1010的高速缓存存储器1015。此外,SoC1000包括第二核域1020。在图10的图示中,第二核域1020具有许多第二核1022a-1022d。在示例中,这些核可以是比第一核1012更高功率消耗的核。在实施例中,第二核可以是无序核,其可以被实现为ARM Cortex A57核。进而,这些核耦合到核域1020的高速缓存存储器1025。注意的是,虽然在图10中示出的示例在每个域中包括4个核,但是要理解的是,在其他示例中,在给定域中可以存在更多或更少的核。
进一步参考图10,还提供了图形域1030,其可以包括被配置成独立地执行图形工作量(例如由核域1010和1020的一个或多个核所提供)的一个或多个图形处理单元(GPU)。作为示例,GPU域1030除了提供图形和显示渲染操作之外,还可以被用来提供针对各种屏幕大小的显示支持。
如看到的,各种域耦合到一致性互连1040,其在实施例中可以是进而耦合到集成存储器控制器1050的高速缓存一致性互连构造。在一些示例中,一致性互连1040可以包括共享的高速缓存存储器,诸如L3高速缓存。在实施例中,存储器控制器1050可以是用以提供与片外存储器通信的多个通道(诸如DRAM的多个通道(在图10中出于简化说明而未示出))的直接存储器控制器。
在不同示例中,核域的数量可以变化。例如,针对适合于结合到移动计算设备中的低功率SoC,可以存在诸如在图10中示出的有限数量的核域。更进一步的,在这样的低功率SoC中,包括更高功率核的核域1020可以具有更少数量的这样的核。例如,在一个实现方式中,可以提供两个核1022来使得能够实现在降低的功率消耗水平下的操作。此外,不同核域也可以被耦合到中断控制器来使得能够实现不同域之间的工作量的动态交换。
还又一些实施例中,可以存在更大数量的核域以及附加的可选IP逻辑,其中SoC可以被缩放到更高性能(以及功率)水平以用于结合到诸如台式计算机、服务器、高性能计算***、基站等的其他计算设备中。作为一个这样的示例,可以提供均具有给定数量的无序核的4个核域。更进一步的,除了可选GPU支持(其作为示例可以采用GPGPU的形式)之外,还可以提供一个或多个加速器,其用以提供针对特定功能(例如,网络服务、网络处理、交换等)的优化硬件支持。此外,可以存在输入/输出接口来将这些加速器耦合到片外部件。
现在参照图11,示出的是另一个示例SoC的框图。在图11的实施例中,SoC 1100可以包括各种电路来使得能够实现针对多媒体应用、通信和其他功能的高性能。照此,SoC1100适合于结合到各种各样的便携式和其他设备(诸如智能电话、平板计算机、智能TV等等)中。在所示出的示例中,SoC 1100包括中央处理器(CPU)域1110。在实施例中,多个单独的处理器核可以存在于CPU域1110中。作为一个示例,CPU域1110可以是具有4个多线程核的四核处理器。这样的处理器可以是同构的或异构的处理器,例如,低功率处理器核和高功率处理器核的混合体。
进而,提供GPU域1120来在一个或多个GPU中实行高级图形处理,以处置图形以及计算API。DSP单元1130可以提供一个或多个低功率DSP以用于在除了可以在执行多媒体指令期间发生的高级计算之外处置低功率多媒体应用,诸如音乐回放、音频/视频等等。进而,通信单元1140可以包括各种部件来经由各种无线协议(诸如蜂窝通信(包括3G/4G LTE)、无线局域网协议(诸如蓝牙TM、IEEE 802.11等等))来提供连接性。
更进一步的,多媒体处理器1150可以被用来实行高清晰度视频和音频内容的捕获和回放,包括用户手势的处理。传感器单元1160可以包括多个传感器和/或传感器控制器,其用以对接到在给定平台中存在的各种片外传感器。可以提供具有一个或多个单独ISP的图像信号处理器1170来关于从平台的一个或多个相机(包括静物相机和摄像机)所捕获的内容实行图像处理。
显示处理器1180可以提供针对与给定像素密度的高清晰度显示器的连接的支持,包括无线地传送用于在这样的显示器上回放的内容的能力。更进一步的,位置单元1190可以包括具有针对多个GPS卫星群的支持的GPS接收器,以提供使用如这样的GPS接收器所获得的应用高度精确的定位信息。要理解的是,虽然在图11的示例中利用这种特定的部件集合来示出,但是许多变化和替换方式是可能的。
现在参照图12,示出的是实施例可以与其一起使用的示例***的框图。如看到的,***1200可以是智能电话或其他无线通信器。基带处理器1205被配置成关于要从***传输或要由***接收的通信信号来实行各种信号处理。进而,基带处理器1205被耦合到应用处理器1210,其可以是***的主CPU,以执行除了诸如许多公知社交媒体和多媒体应用之类的用户应用之外的OS和其他***软件。应用处理器1210可以进一步被配置成实行针对设备的各种其他计算操作。
进而,应用处理器1210可以耦合到用户接口/显示器1220,例如,触摸屏显示器。此外,应用处理器1210可以耦合到存储器***,其包括非易失性存储器(即闪存1230)和***存储器(即动态随机存取存储器(DRAM)1235)。如进一步看到的,应用处理器1210进一步耦合到捕获设备1240,诸如可以记录视频和/或静态图像的一个或多个图像捕获设备。
仍参照图12,包括订户身份模块以及可能包括安全储存设备和加密处理器的通用集成电路卡(UICC)1240也被耦合到应用处理器1210。***1200可以进一步包括安全处理器1250,其可以耦合到应用处理器1210。多个传感器1225可以耦合到应用处理器1210来使得能够实现各种感测信息(诸如加速度计信息和其他环境信息)的输入。音频输出设备1295可以提供接口来输出声音,例如以语音通信、播放或流传输的音频数据等等的形式。
如进一步图示的,提供经由近场通信(NFC)天线1265在NFC近场中传送的NFC非接触式接口1260。虽然在图12中示出单独的天线,但是要理解的是在一些实现方式中,可以提供一个天线或不同的天线集合来使得能够实现各种无线功能性。
功率管理集成电路(PMIC)1215耦合到应用处理器1210来实行平台级功率管理。为此,PMIC 1215可以向应用处理器1210发布功率管理请求以如所期望的那样进入某些低功率状态。此外,基于平台约束,PMIC 1215还控制***1200的其他部件的功率水平。
为了使通信能够被传输和接收,各种电路可以被耦合在基带处理器1205和天线1290之间。具体地,可以存在射频(RF)收发器1270和无线局域网(WLAN)收发器1275。通常,RF收发器1270可以被用来根据诸如3G或4G无线通信协议之类的给定无线通信协议(诸如按照码分多址(CDMA)、全球移动通信***(GSM)、长期演进(LTE)或其他协议)来接收和传输无线数据和呼叫。此外,可以存在GPS传感器1280。还可以提供诸如接收或传输无线电信号(例如,AM/FM)和其他信号的其他无线通信。此外,经由WLAN收发器1275,还可以实现本地无线通信。
现在参照图13,示出的是实施例可以与其一起使用的另一个示例***的框图。在图13的图示中,***1300可以是移动低功率***,诸如平板计算机、2:1平板设备、平板手机或其他可转换的或独立的平板***。如图示的,存在SoC 1310并且其可以被配置成操作为用于设备的应用处理器。
各种设备可以耦合到SoC 1310。在示出的图示中,存储器子***包括被耦合到SoC1310的DRAM 1345和闪存1340。此外,触摸板1320被耦合到SoC 1310来经由触摸(包括在触摸板1320的显示器上提供虚拟键盘)提供显示能力和用户输入。为了提供有线网络连接性,SoC 1310耦合到以太网接口1330。***中枢1325被耦合到SoC 1310以使得能够实现与各种***设备进行对接,诸如可以通过各种端口或其他连接器中的任意来耦合到***1300。
除了SoC 1310内的内部功率管理电路和功能性之外,PMIC 1380被耦合到SoC1310来提供基于平台的功率管理,例如基于***是否经由AC适配器1395通过电池1390或AC电源进行供电。除了这种基于功率源的功率管理外,PMIC 1380可以进一步基于环境和使用状况来实行平台功率管理活动。更进一步的,PMIC 1380可以将控制和状态信息传送到SoC1310以在SoC 1310内引起各种功率管理动作。
仍参照图13,为了提供无线能力,WLAN单元1350被耦合到SoC 1310并且进而被耦合到天线1355。在各种实施例中,WLAN单元1350可以根据一个或多个无线协议来提供通信。
如进一步图示的,多个传感器1360可以耦合到SoC 1310。这些传感器可以包括各种加速度计传感器、环境传感器和其他传感器,包括用户手势传感器。最终,音频编解码器1365被耦合到SoC 1310以提供与音频输出设备1370的接口。当然要理解的是,虽然在图13中利用这种特定实现方式来示出,但是许多变化和替换方案也是可能的。
现在参照图14,示出的是诸如笔记本计算机、超极本TM或其他小形状因数***的代表性计算机***的框图。在一个实施例中,处理器1410包括微处理器、多核处理器、多线程处理器、超低电压处理器、嵌入式处理器或其他已知处理元件。在图示的实现方式中,处理器1410充当主处理单元和中央中枢以用于与***1400的各种部件中的许多部件进行通信,并且可以包括如在本文中所描述的功率管理电路。作为一个示例,处理器1410被实现为SoC。
在一个实施例中,处理器1410与***存储器1415通信。如说明性示例,***存储器1415经由多个存储器设备或模块来实现,以提供给定量的***存储器。
为了提供诸如数据、应用、一个或多个操作***等信息的持久储存设备,大容量储存设备1420也可以耦合到处理器1410。在各种实施例中,为了使得能够实现更薄和更轻的***设计以及为了改善***响应性,该大容量储存设备可以经由SSD来实现或者大容量储存设备可以主要通过使用具有较小量的SSD储存设备的硬盘驱动器(HDD)充当SSD高速缓存来实现,以使得能够实现在掉电事件期间对上下文状态和其他这样的信息的非易失性储存,使得快速上电可以在***活动的再次启动时发生。还在图14中示出的,闪存设备1422可以被耦合到处理器1410(例如,经由串行***接口(SPI))。该闪存设备可以提供对***软件(包括基本输入/输出软件(BIOS))以及***的其他固件的非易失性储存。
可以在***1400内存在各种输入/输出(I/O)设备。在图14的实施例中具体示出的是显示器1424,其可以是进一步提供触摸屏1425的高清晰度LCD或LED面板。在一个实施例中,显示器1424可以经由显示器互连而被耦合到处理器1410,所述显示器互连可以被实现为高性能图形互连。触摸屏1425可以经由另一个互连而被耦合到处理器1410,所述另一个互连在一个实施例中可以是I2C互连。如在图14中进一步示出的,除了触摸屏1425之外,通过触摸方式的用户输入还可以经由触摸板1430而发生,所述触摸板1430可以被配置在机箱内并且还可以被耦合到与触摸屏1425相同的I2C互连。
出于感知运算以及其他目的,可以在***内存在各种传感器并且各种传感器可以以不同方式被耦合到处理器1410。某些惯性传感器和环境传感器可以通过传感器中枢1440(例如,经由I2C互连)而耦合到处理器1410。在图14中示出的实施例中,这些传感器可以包括加速度计1441、环境光传感器(ALS)1442、罗盘1443和陀螺仪1444。其他环境传感器可以包括一个或多个热传感器1446,其在一些实施例中经由***管理总线(SMBus)总线耦合到处理器1410。
还在图14中看到的,各种***设备可以经由低引脚数(LPC)互连而耦合到处理器1410。在示出的实施例中,各种部件可以通过嵌入式控制器1435来耦合。这样的部件可以包括键盘1436(例如,经由PS2接口耦合的)、风扇1437以及热传感器1439。在一些实施例中,触摸板1430还可以经由PS2接口耦合到EC 1435。此外,安全处理器(诸如信任平台模块(TPM)1438)还可以经由该LPC互连耦合到处理器1410。
***1400可以以各种方式(包括无线地)与外部设备进行通信。在图14中示出的实施例中,存在各种无线模块,其中的每个可以对应于被配置用于特定无线通信协议的无线电设备。用于在诸如近场的短程中进行无线通信的一种方式可以是经由NFC单元1445,所述NFC单元1445在一个实施例中经由SMBus与处理器1410进行通信。要注意的是,经由该NFC单元1445,彼此非常接近的设备可以进行通信。
如在图14中进一步看到的,附加的无线单元可以包括其他短程无线引擎,包括WLAN单元1450和蓝牙TM单元1452。使用WLAN单元1450,可以实现Wi-FiTM通信,而经由蓝牙TM单元1452,可以发生短程蓝牙TM通信。这些单元可以经由给定的链路与处理器1410进行通信。
此外,无线广域通信(例如,根据蜂窝协议或其他无线广域协议)可以经由WWAN单元1456来发生,该WWAN单元1456进而可以耦合到订户身份模块(SIM)1457。此外,为了使得能够实现对位置信息的接收和使用,还可以存在GPS模块1455。注意的是,在图14中示出的实施例中,WWAN单元1456以及集成的捕获设备(诸如相机模块1454)可以经由给定的链路进行通信。
为了提供音频输入和输出,音频处理器可以经由数字信号处理器(DSP)1460来实现,该数字信号处理器(DSP)1460可以经由高清晰度音频(HDA)链路而耦合到处理器1410。类似地,DSP 1460可以与集成编码器/解码器(CODEC)和放大器1462进行通信,所述放大器1462进而可以耦合到可以在机箱内实现的输出扬声器1463。类似地,放大器和CODEC 1462可以被耦合来接收来自麦克风1465的音频输入,所述麦克风1465在一个实施例中可以经由双阵列麦克风(例如数字麦克风阵列)来实现以提供高质量音频输入来使得能够实现***内各种操作的语音激活控制。还注意的是,可以从放大器/CODEC 1462向耳机插孔1464提供音频输入。虽然在图14的实施例中利用这些特定部件来示出,但是要理解的是本发明的范围不限于这一点。
可以按许多不同***类型来实现实施例。现在参照图15,示出的是根据本发明的实施例的***的框图。如在图15中示出的,多处理器***1500是点对点互连***,并且包括经由点对点互连1550而耦合的第一处理器1570和第二处理器1580。如在图15中示出的,处理器1570和1580中的每个可以是多核处理器,包括第一和第二处理器核(即,处理器核1574a和1574b以及处理器核1584a和1584b),尽管潜在地可以在处理器中存在更多的核。每个处理器可以包括PCU或其他功率管理逻辑来实行如在本文中所描述的基于处理器的功率管理。
仍参照图15,第一处理器1570进一步包括存储器控制器中枢(MCH)1572和点对点(P-P)接口1576和1578。类似地,第二处理器1580包括MCH 1582和P-P接口1586和1588。如在图15中示出的,MCH 1572和1582将处理器耦合到相应的存储器(即,存储器1532和存储器1534),其可以是被本地附接到相应的处理器的***存储器(例如,DRAM)的部分。第一处理器1570和第二处理器1580可以分别经由P-P互连1562和1564而被耦合到芯片集1590。如在图15中示出的,芯片集1590包括P-P接口1594和1598。
此外,芯片集1590包括接口1592来通过P-P互连1539将芯片集1590与高性能图形引擎1538耦合。进而,芯片集1590可以经由接口1596而被耦合到第一总线1516。如在图15中示出的,各种输入/输出(I/O)设备1514可以与总线桥1518一起耦合到第一总线1516,所述总线桥1518将第一总线1516耦合到第二总线1520。在一个实施例中,各种设备可以被耦合到第二总线1520,例如包括键盘/鼠标1522、通信设备1526和数据储存单元1528(诸如可以包括代码1530的磁盘驱动器或其他大容量储存设备)。进一步的,音频I/O 1524可以被耦合到第二总线1520。实施例可以被结合到包括诸如智能蜂窝电话、平板计算机、上网本计算机、超极本TM等等的移动设备的其他类型的***中。
至少一个实施例的一个或多个方面可以通过储存在机器可读介质上的代表性代码来实现,所述机器可读介质表示和/或定义诸如处理器之类的集成电路内的逻辑。例如,机器可读介质可以包括表示处理器内的各种逻辑的指令。当被机器读取时,指令可以使机器制造逻辑来实行本文中所描述的技术。这样的表示(称为“IP核”)是用于集成电路的可再使用的逻辑单元,其可以在有形的、机器可读的介质上被储存为描述集成电路结构的硬件模型。硬件模型可以被提供给各种客户或制造设施,其在制造集成电路的制造机器上加载硬件模型。集成电路可以被制造为使得电路实行与本文中所描述的任何实施例相关联地描述的操作。
图16是图示了根据实施例的可以被用来制造集成电路以实行操作的IP核开发***1600的框图。IP核开发***1600可以被用来生成可以被结合到更大设计中或被用来构建整个集成电路(例如,SoC集成电路)的模块化的、可再用的设计。设计设施1630可以以高级编程语言(例如,C/C++)生成IP核设计的软件模拟1610。软件模拟1610可以被用来设计、测试和验证IP核的行为。寄存器传输级(RTL)设计可以然后根据模拟模型而被创建或合成。RTL设计1615是集成电路的行为的抽象化,其对硬件寄存器之间的数字信号流进行建模,包括使用建模数字信号而实行的相关联的逻辑。除了RTL设计1615之外,还可以创建、设计或合成逻辑级或晶体管级下的更低级别的设计。因此,初始设计和模拟的特定细节可以变化。
RTL设计1615或等价方式可以通过设计设施而被进一步合成为硬件模型1620,其可以是以硬件描述语言(HDL),或者物理设计数据的一些其他表示。HDL可以被进一步模拟或测试来验证IP核设计。IP核设计可以被储存以用于使用非易失性存储器1640(例如,硬盘、闪存或任何非易失性储存介质)递送到第三方制造设施。替换地,IP核设计可以通过有线连接1650或无线连接1660来传输(例如,经由互联网)。制造设施1665然后可以制造至少部分地基于IP核设计的集成电路。制造的集成电路可以被配置成根据本文中所描述的至少一个实施例来实行操作。
现在参考图17,示出的是根据一个或多个实施例的***1700的框图。如在图17中所示出的,***1700可以包括服务器1710、源设备1730以及目标设备1740。在一个或多个实施例中,***1700可以是联网的计算机***的全部或一部分。例如,源设备1730可以是计算机或服务器,以及目标设备1740可以是储存阵列。进一步的,服务器1710可以是储存服务器,其处置来自源设备1730的向/从目标设备1740读取和/或写入数据的请求。在另一个实施例中,源设备1730可以是储存阵列,以及目标设备1740可以是计算机。
在一些实施例中,服务器1710可以包括处理器1720和主存储器1727。处理器1720可以包括直接高速缓存逻辑1722和处理器高速缓存1725。在一个或多个实施例中,处理器1720可以是硬件处理设备(例如,中央处理单元(CPU)、片上***(SoC)等)。主存储器1727可以是任何类型的***存储器(例如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等)。
现在参照图18,示出的是处理器1720的示例实施例。如在图18的示例中示出的,处理器1720可以是任何数量的处理核1810A-1810N、直接高速缓存逻辑1722以及处理器高速缓存1725。在一些实施例中,处理器1720可以包括附加的部件(未示出)、诸如图形处理单元(GPU)、数字信号处理器(DSP)、加密/解密处理器、知识产权(IP)块、网络接口模块、无线电接口模块、功率调节电路等。处理器高速缓存1725可以是嵌入在处理器1720中的任何高速缓存存储器(例如,1级高速缓存、2级高速缓存、3级高速缓存、末级高速缓存等)。处理器高速缓存1725可以被组织在高速缓存条目(例如,高速缓存线、高速缓存块等)中。在一些实施例中,直接高速缓存逻辑1722可以使用电路、微架构等来实现。
再一次参考图17,在一些实施例中,直接高速缓存逻辑1722可以使处理器高速缓存1725能够直接与远程设备传送数据。例如,源设备1730可以在不向主存储器1727发送数据的情况下直接向处理器高速缓存1725写入数据。进一步的,目标设备1740可以在不访问主存储器1727的情况下直接向处理器高速缓存1725读取数据。在一些实施例中,直接高速缓存逻辑1722可以允许数据经由处理器高速缓存1725从源设备1730流到目标设备1740,由此避免向/从主存储器1727发送数据。因此,一些实施例可以减少与向/从主存储器1727的数据传输相关联的负荷。
在一个或多个实施例中,可以响应于直接写入请求而实行将数据直接传输到处理器高速缓存1725。如本文中所使用的,术语“直接写入请求”指代用以在不向/从主存储器发送数据的情况下直接将数据写入到处理器高速缓存的指令或命令。例如,直接写入请求可以是来自源设备1730的推送命令,以将数据写入到处理器高速缓存1725的高速缓存条目。在另一个示例中,直接写入请求可以是来自服务器1710的拉取命令,以接收处理器高速缓存1725的高速缓存条目中的数据。
在一些实施例中,服务器1710可以在不访问主存储器1727的情况下直接在处理器高速缓存1725的高速缓存条目上实行一些操作。例如,高速缓存条目上的这样的操作可以包括加指纹、压缩/解压缩、加密/解密等。在一些实施例中,这样的操作可以使高速缓存条目被标记或指定为处于被修改的状态中。
在一个或多个实施例中,可以响应于直接读取请求来实行将数据直接从处理器高速缓存1725进行传输。如在本文中所使用的,术语“直接读取请求”指代用以在不向/从主存储器发送数据的情况下对被储存在处理器高速缓存中的数据进行直接传输的指令或命令。例如,直接读取请求可以是来自目标设备1740的拉取命令,以读取处理器高速缓存1725的高速缓存条目。在另一个示例中,直接读取请求可以是来自服务器1710的推送命令,以向目标设备1740发送处理器高速缓存1725的高速缓存条目。在一些实施例中,直接读取请求可以读取处于被修改的状态中的高速缓存条目。进一步的,在一些实施例中,直接读取/写入请求可以使用数据直接输入/输出(DDIO)技术来实行。在一个或多个实施例中,直接写入请求以及直接读取请求可以结合使用以在不访问主存储器1727的情况下经由处理器高速缓存1725将来自源设备1730(例如,储存阵列)的数据元素传输到目标设备1740(例如,计算机)。
在一个或多个实施例中,无效读取请求可以是将所请求的高速缓存条目进行无效的直接读取请求。例如,无效读取请求可以直接读取来自处理器高速缓存1725的所请求的高速缓存条目,并且可以使所请求的高速缓存条目在处理器高速缓存1725中被无效。照此,所请求的高速缓存条目可以紧接在读取操作完成之后返回到可用高速缓存条目库。进一步的,当完成无效读取请求时,所请求的高速缓存条目没有被写入到主存储器1727。因此,一些实施例可以提供对处理器高速缓存1725的改善利用,和/或可以降低去往/来自主存储器1727的带宽的消耗。
在一个或多个实施例中,直接高速缓存逻辑1722可以确定直接读取请求是否是无效读取请求。在一些实施例中,直接高速缓存逻辑1722可以识别针对无效读取请求所保留的专用命令。例如,专用命令可以具有诸如“从高速缓存Y无效读取X(InvalidateRead Xfrom cache Y)”之类的形式。
进一步的,在其他实施例中,直接高速缓存逻辑1722可以识别包括指示无效读取请求的修饰符属性或参数的标准命令。例如,标准命令可以具有诸如“从高速缓存Y(Inval=Y)读取X”的形式,其中“Inval”是用以指示“读取”命令是无效读取请求的属性。在一些实施例中,指示无效读取请求的参数或属性可以被包括在标准命令的报头中、包括在标准命令的控制字段中等等。例如,在标准***部件互连快速(“PCIe”)读取命令的情况下,可以通过当前未使用格式编码、通过PCIe事务层数据包(TLP)报头中的保留位等等来指示无效读取。
在一些实施例中,直接高速缓存逻辑1722可以针对相关联的直接读取请求是无效读取请求的指示来检查寄存器或存储器地址。例如,参照图19,示出的是根据一些实施例的示例操作1900。如示出的,处理器1920可以包括寄存器1922、处理器高速缓存1925、直接高速缓存单元1950。直接高速缓存单元1950可以一般对应于直接高速缓存逻辑1722(在图17中示出)的全部或一部分。
在该示例中,寄存器1922可以唯一地与目标设备1940相关联,并且可以储存指示来自目标设备1940的读取请求是否是无效读取请求的设置。例如,寄存器1922可以用位值“0”来填充以指示读取请求不是无效读取请求,以及可以用位值“1”来填充以指示读取请求是无效读取请求。
如在图19的示例中示出的,在发送读取请求之前,目标设备1940可以发送写入命令1921来用指示来自目标设备1940的读取请求是无效读取请求的值(例如,“1”)填充寄存器1922。随后,目标设备1940可以向直接高速缓存单元1950发送直接读取命令1926以请求处理器高速缓存1925中的数据。直接高速缓存单元1950可以访问寄存器1922,并且可以因此确定来自目标设备1940的读取请求是无效读取请求。因此,直接高速缓存单元1950可以向处理器高速缓存1925发送无效读取请求1927。响应于无效读取请求1927,所请求的数据1928可以被发送到目标设备1940,并且储存所请求数据的高速缓存条目可以被无效。
现在参照图20,示出的是根据一个或多个实施例的序列2000。在一些实施例中,序列2000的全部或一部分可以在***1700的一个或多个部件中实现,所述部件诸如是直接高速缓存逻辑1722和/或处理器高速缓存1725(在图17中示出的),和/或处理器1920(在图19中示出的)。序列2000可以在硬件、软件和/或固件中实现。在硬件实施例中,其可以被实现为电路和/或微架构。进一步的,在固件和/或软件实施例中,其可以通过储存在非临时性机器可读介质(诸如光学、半导体或磁性储存设备)中的计算机执行指令来实现。机器可读介质可以储存数据,所述数据如果被至少一个机器使用,则使所述至少一个机器制造至少一个集成电路来实行方法。为了说明起见,序列2000中所涉及到的动作可以参考示出了根据一个或多个实施例的示例的图17-19在下文进行描述。然而,本文中所讨论的各种实施例的范围不限于这一点。
在块2010处,可以从目标设备接收针对处理器高速缓存中的第一高速缓存条目中的数据的直接读取请求。例如,参照图17,可以从目标设备1740接收用以读取处理器高速缓存1725的高速缓存条目的直接读取请求。
在块2020处,可以做出关于所接收到的直接读取请求是否是无效读取请求的确定。例如,参照图17,直接高速缓存逻辑1722可以确定来自目标设备1740的直接读取请求是否是无效读取请求。在一些实施例中,该确定可以涉及识别针对无效读取请求的专用命令。进一步的,在其他实施例中,该确定可以涉及识别具有指示无效读取请求的属性的标准命令。此外,在其他实施例中,该确定可以涉及针对所接收的直接读取请求是无效读取请求的指示来检查寄存器或存储器地址。
如果在块2020处确定了所接收到的直接读取请求不是无效读取请求,则在框2030处,可以在不将第一高速缓存条目无效的情况下将第一高速缓存条目中的数据直接从处理器高速缓存提供给目标设备。例如,参照图17,可以在未在处理器高速缓存1725中被无效的情况下将请求高速缓存条目中的数据发送到目标设备1740。在一些实施例中,高速缓存条目可以保持在其在被发送到目标设备1740之前具有的相同的状态中(例如,被修改的状态),并且可以被传送到主存储器1727。在块2020之后,序列2000结束。
然而,如果在块2020处确定了所接收到的直接读取请求是无效读取请求,则在块2040处,可以将第一高速缓存条目中的数据从处理器高速缓存直接提供给目标设备。进一步的,在块2050处,第一高速缓存条目可以被无效。例如,参照图17,请求高速缓存条目可以被发送到目标设备1740,并且可以在处理器高速缓存1725中被无效。在一些实施例中,被无效的高速缓存条目不被传送到主存储器1727。进一步的,高速缓存条目立即变为可用于其他用途。因此,一些实施例可以降低存储器带宽并且改善高速缓存利用。在块2050之后,序列2000结束。
现在参照图21,示出的是根据一个或多个实施例的序列2100。在一些实施例中,序列2100的全部或一部分可以在***1700的一个或多个部件中实现,所述部件诸如是直接高速缓存逻辑1722和/或处理器高速缓存1725(在图17中示出),和/或处理器1920(在图19中示出)。序列2100可以在硬件、软件和/或固件中实现。在硬件实施例中,其可以被实现为电路和/或微架构。进一步的,在固件和/或软件实施例中,其可以通过储存在非临时性机器可读介质(诸如光学、半导体或磁性储存设备)中的计算机执行指令来实现。机器可读介质可以储存数据,所述数据如果由至少一个机器使用,则使所述至少一个机器制造至少一个集成电路来实行方法。为了说明起见,在序列2100中涉及到的动作可以参考示出根据一个或多个实施例的示例的图17-19在下文中进行描述。然而,本文中所描述的各种实施例的范围不限于这一点。
在块2110处,可以从目标设备接收针对数据的读取请求。例如,参照图17,服务器1710可以从目标设备1740接收针对数据的读取请求。在一些实施例中,所接收到的读取请求可以是直接读取请求。进一步的,在一些实施例中,所接收到的读取请求可以是无效读取请求。
在块2120处,可以做出关于所请求的数据是否被包括在高速缓存中的确定。例如,参照图17,直接高速缓存逻辑1722可以确定所请求的数据是否被包括在处理器高速缓存1725中。如果在块2120处确定所请求的数据未被包括在高速缓存中,则在块2125处,可以从存储器直接提供所请求的数据。例如,参照图17,所请求的数据可以从主存储器1727读取,并且可以被发送到目标设备1740。在块2125之后,序列2100结束。
然而,如果在块2120处确定所请求的数据被包括在高速缓存中,则在块2130处,可以做出关于读取请求是否是无效读取请求的确定。例如,参照图17,直接高速缓存逻辑1722可以确定来自目标设备1740的读取请求是否是无效读取请求。
如果在块2130处确定所接收到的读取请求不是无效读取请求,则在块2140处,可以在未在高速缓存中被无效的情况下提供所请求的数据。例如,参照图17,可以在不在处理器高速缓存1725中被无效的情况下将所请求的数据发送到目标设备1740。在块2140之后,序列2100结束。
然而,如果在块2130处确定所接收到的读取请求是无效读取请求,则在块2150处,可以从高速缓存提供所请求的数据。进一步的,在块2155处,所请求的数据可以在高速缓存中被无效。例如,参照图17,请求数据可以从处理器高速缓存1725发送到目标设备1740,并且可以在处理器高速缓存1725中被无效。在块2155之后,序列2100结束。
现在参照图22,示出的是根据一个或多个实施例的示例读取操作2200。在一些实施例中,读取操作2200的全部或一部分可以在***1700的一个或多个部件中实现,所述部件诸如是直接高速缓存逻辑1722和/或处理器高速缓存1725(在图17中示出的),和/或处理器1920(在图19中示出的)。在一些实施例中,读取操作2200可以使用诸如***部件互连快速(“PCIe”)之类的接口标准来实现。然而,本文中所讨论的各种实施例的范围不限于这一点。
如在图22中示出的,接口端口(例如,PCIe端口)可以将无效读取信号2210发送到输出/输入(I/O)***。作为响应,I/O***可以向高速缓存***发送无效读取信号2220。如示出的,在接收到无效读取信号2220之前,所请求的高速缓存条目可以已经被标记为处于“被修改”的状态中。响应于无效读取信号2220,高速缓存***可以将所请求的数据2230发送到I/O***,并且高速缓存条目被标记为处于“被无效”的状态中。照此,高速缓存条目然后可以可用于储存其他数据。I/O***可以向接口端口2240发送包括所请求的数据的响应。
注意的是,在图1-22中示出的示例为了说明起见而被提供,并且不意图限制任何实施例。还注意的是,虽然实施例可能为了简洁性起见而以简化的形式示出,但是实施例可以包括处理器、核和/或附加部件(例如,总线、储存介质、连接器、功率部件、缓冲器、接口等)的任何数量和/或布置。特别地,所预料到的是,一些实施例除了所示出的那些外还可以包括任何数量的部件,并且示出部件的不同布置可以在某些实现方式中出现。进一步的,所预料到的是,在图1-22中示出的示例中的细节可以被用在一个或多个实施例中的任何地方。例如,上文关于图17-22所讨论的部件和/或功能可以被实现在上文关于图1-16所讨论的任何***和/或部件中。
以下条款和/或示例涉及其他实施例。
在一个示例中,一种用于将高速缓存条目无效的处理器包括:至少一个处理单元;处理器高速缓存;以及直接高速缓存单元。所述直接高速缓存单元用以从第一设备接收针对所述处理器高速缓存中的第一高速缓存条目中的数据的直接读取请求;确定所述直接读取请求是否是无效读取请求;响应于所述直接读取请求是无效读取请求的确定:在不访问主存储器的情况下将所述第一高速缓存条目中的数据从所述处理器高速缓存直接发送到所述第一设备;以及将所述处理器高速缓存中的第一高速缓存条目无效。
在示例中,所述直接高速缓存单元进一步用以从所述第一设备接收针对所述处理器高速缓存中的第二高速缓存条目中的数据的第二直接读取请求;以及响应于所述第二直接读取请求不是无效读取请求的确定,在不将所述第二高速缓存条目无效的情况下将所述第二高速缓存条目中的数据从所述处理器高速缓存直接发送到所述第一设备。
在示例中,所述直接高速缓存单元进一步用以在接收到所述直接读取请求之前从第二设备接收直接写入请求来将第一高速缓存条目写入到所述处理器高速缓存。在示例中,所述直接高速缓存单元进一步用以响应于所述直接写入请求,在不访问所述主存储器的情况下将所述第一高速缓存条目直接写入到所述处理器高速缓存。在示例中,所述第一设备是计算机;所述第二设备是储存阵列;所述处理器和所述主存储器被包括在连接到所述计算机和所述储存阵列的服务器中;以及所述直接写入请求和所述直接读取请求用以在不访问服务器的主存储器的情况下将所述第一高速缓存条目中的数据从所述计算机和所述储存阵列进行传送。
在示例中,所述直接高速缓存单元进一步用以基于针对指示无效读取请求的值对处理器的寄存器进行的检查来确定所述直接读取请求是否是无效读取请求。
在示例中,所述直接高速缓存单元进一步用以基于对用于无效读取请求的专用命令进行的识别来确定所述直接读取请求是否是无效读取请求。
在示例中,在不被写入所述主存储器的情况下将经无效的第一高速缓存条目从所述处理器高速缓存逐出。
在一个示例中,一种用于将高速缓存条目无效的方法包括:从第一设备接收针对处理器高速缓存中的第一高速缓存条目中的数据的直接读取请求;确定所述直接读取请求是否是无效读取请求;响应于所述直接读取请求是无效读取请求的确定:在不访问主存储器的情况下,将所述第一高速缓存条目中的数据从所述处理器高速缓存直接发送到所述第一设备;将所述处理器高速缓存中的第一高速缓存条目无效。
在示例中,所述方法进一步包括:在接收到所述直接读取请求之前,从第二设备接收直接写入请求来将第一高速缓存条目写入到所述处理器高速缓存。
在示例中,所述方法进一步包括:从所述第一设备接收针对所述处理器高速缓存中的第二高速缓存条目中的数据的第二直接读取请求;以及响应于所述第二直接读取请求不是无效读取请求的确定,在不将第二高速缓存条目无效的情况下,将所述第二高速缓存条目中的数据从所述处理器高速缓存直接发送到所述第一设备。
在示例中,所述方法进一步包括:在不涉及所述主存储器的情况下,将经无效的第一高速缓存条目从所述处理器高速缓存逐出。
在示例中,确定所述直接读取请求是否是无效读取请求包括识别指示无效读取请求的标准命令的属性。
在示例中,确定所述直接读取请求是否是无效读取请求包括针对指示无效读取请求的值来检查所述处理器的寄存器,其中所述寄存器唯一地与所述第一设备相关联。
在一个示例中,一种机器可读介质具有储存于其上的数据,所述数据如果由至少一个机器使用,则使所述至少一个机器制造至少一个集成电路来实行根据以上示例中的任一个的方法。
在一个示例中,一种用于处理指令的装置被配置成实行以上示例中的任一个的方法。
在一个示例中,一种用于将高速缓存条目无效的***包括:***存储器;以及被耦合到所述***存储器的处理器。所述处理器包括处理器高速缓存和直接高速缓存单元。所述直接高速缓存单元用以从第一设备接收针对所述处理器高速缓存中的第一高速缓存条目中的数据的第一读取请求;确定所述第一读取请求是否是无效读取请求;响应于所述第一读取请求是无效读取请求的确定:在不访问所述***存储器的情况下将所述第一高速缓存条目中的数据从所述处理器高速缓存发送到所述第一设备;以及将所述处理器高速缓存中的第一高速缓存条目无效。
在示例中,直接高速缓存单元进一步用以:从所述第一设备接收针对所述处理器高速缓存中的第二高速缓存条目中的数据的第二读取请求,其中所述第二读取请求是直接读取请求;以及响应于所述第二读取请求不是无效读取请求的确定,在不将所述第二高速缓存条目无效的情况下,将所述第二高速缓存条目中的数据从所述处理器高速缓存直接发送到所述第一设备。
在示例中,所述直接高速缓存单元进一步用以在接收到所述直接读取请求之前从第二设备接收直接写入请求来将所述第一高速缓存条目写入到所述处理器高速缓存。
在示例中,所述直接高速缓存单元进一步用以响应于所述直接写入请求,在不访问所述***存储器的情况下将所述第一高速缓存条目直接写入到所述处理器高速缓存。
在示例中,所述直接高速缓存单元进一步用以基于指示无效读取请求的寄存器值来确定所述第一读取请求是否是无效读取请求。
在示例中,所述处理器高速缓存用以在不写入到所述***存储器的情况下将经无效的第一高速缓存条目逐出。
在一个示例中,一种具有储存于其上的指令的非临时性机器可读介质,所述指令如果由机器实行则使所述机器实行方法。所述方法包括:从第一设备接收针对处理器高速缓存中的第一高速缓存条目中的数据的直接读取请求;确定所述直接读取请求是否是无效读取请求;响应于所述直接读取请求是无效读取请求的确定:在不访问主存储器的情况下,将所述第一高速缓存条目中的数据从所述处理器高速缓存直接发送到所述第一设备;以及将所述处理器高速缓存中的第一高速缓存条目无效。
在示例中,所述方法进一步包括:在接收到所述直接读取请求之前,从第二设备接收直接写入请求来将所述第一高速缓存条目写入到所述处理器高速缓存。
在示例中,所述方法进一步包括:从所述第一设备接收针对所述处理器高速缓存中的第二高速缓存条目中的数据的第二直接读取请求;并且响应于所述第二直接读取请求不是无效读取请求的确定,在不将所述第二高速缓存条目无效的情况下将所述第二高速缓存条目中的数据从所述处理器高速缓存直接发送到所述第一设备。
在示例中,所述方法进一步包括:在不涉及所述主存储器的情况下,将经无效的第一高速缓存条目从所述处理器高速缓存逐出。
在示例中,确定所述直接读取请求是否是无效读取请求包括:识别指示无效读取请求的标准命令的属性。
在示例中,确定所述直接读取请求是否是无效读取请求包括:针对指示无效读取请求的值来检查所述处理器的寄存器,其中所述寄存器唯一地与所述第一设备相关联。
在示例中,在接收到所述直接读取请求之前,将所述第一高速缓存条目中的数据标记为处于被修改的状态中。
实施例可以以代码来实现并且可以被储存在具有储存于其上的指令的非临时性储存介质上,所述指令可以被用来对***编程以实行指令。实施例还可以以数据来实现并且可以被储存在非临时性储存介质上,所述非临时性储存介质如果由至少一个机器使用,则使所述至少一个机器制造至少一个集成电路以实行一个或多个操作。所述储存介质可以包括但不限于任何类型的磁盘(包括软盘、光盘、固态驱动器(SSD)、紧凑盘只读存储器(CD-ROM)、可重写紧凑盘(CD-RW)以及磁光盘)、半导体设备(诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、可擦除可编程只读存储器(EPROM))、闪速存储器、电可擦除可编程只读存储器(EEPROM))、磁卡或光卡或者适合于储存电子指令的任何其他类型的介质。
预料到的是,上述示例的各种组合是可能的。实施例可以被用于许多不同类型的***中。例如,在一个实施例中,通信设备可以被布置成实行本文中所描述的各种方法和技术。当然,本发明的范围不限于通信设备,而是其他实施例可以涉及用于处理指令的其他类型的装置,或者包括指令的一个或多个机器可读介质,所述指令响应于在计算设备上被执行而使所述设备实施本文中所描述的方法和技术中的一种或多种。
遍及本说明书对“一个实施例”或“实施例”的引用意指结合所述实施例所描述的特定特征、结构或特性被包括在本发明内所涵盖的至少一个实现方式中。因此,用语“一个实施例”或“在实施例中”的出现不一定指代相同的实施例。此外,特定的特征、结构或特性可以以其他适合的形式而不是所说明的特定实施例来制定,并且所有这样的形式可以涵盖在本发明的权利要求内。如本文中所使用的,“响应于”指代直接因果关系。
虽然已经关于有限数量的实施例对本发明进行了描述,但本领域技术人员将理解由其而产生的许多修改和变化。意图的是,所附权利要求覆盖落入本发明的真实精神和范围内的所有这样的修改和变化。

Claims (22)

1.一种用于将高速缓存条目无效的处理器,其包括:
至少一个处理单元;
处理器高速缓存;以及
直接高速缓存单元,其用以:
从第一设备接收针对所述处理器高速缓存中的第一高速缓存条目中的数据的直接读取请求;
确定所述直接读取请求是否是无效读取请求;
响应于所述直接读取请求是无效读取请求的确定:
在不访问主存储器的情况下将所述第一高速缓存条目中的数据从所述处理器高速缓存直接发送到所述第一设备;
将所述处理器高速缓存中的第一高速缓存条目无效。
2.根据权利要求1所述的处理器,所述直接高速缓存单元进一步用以:
从所述第一设备接收针对所述处理器高速缓存中的第二高速缓存条目中的数据的第二直接读取请求;以及
响应于所述第二直接读取请求不是无效读取请求的确定,在不将所述第二高速缓存条目无效的情况下将所述第二高速缓存条目中的数据从所述处理器高速缓存直接发送到所述第一设备。
3.根据权利要求1所述的处理器,所述直接高速缓存单元进一步用以在接收到所述直接读取请求之前:
从第二设备接收直接写入请求来将所述第一高速缓存条目写入到所述处理器高速缓存。
4.根据权利要求3所述的处理器,所述直接高速缓存单元进一步用以:
响应于所述直接写入请求,在不访问所述主存储器的情况下将所述第一高速缓存条目直接写入到所述处理器高速缓存。
5.根据权利要求3所述的处理器,其中:
所述第一设备是计算机;
所述第二设备是储存阵列;
所述处理器和所述主存储器被包括在连接到所述计算机和所述储存阵列的服务器中;以及
所述直接写入请求和所述直接读取请求用以在不访问所述服务器的主存储器的情况下将所述第一高速缓存条目中的数据从所述计算机和所述储存阵列进行传送。
6.根据权利要求1所述的处理器,所述直接高速缓存单元进一步用以:
基于针对指示无效读取请求的值对所述处理器的寄存器进行的检查来确定所述直接读取请求是否是无效读取请求。
7.根据权利要求1所述的处理器,所述直接高速缓存单元进一步用以:
基于针对无效读取请求对专用命令进行的识别来确定所述直接读取请求是否是无效读取请求。
8.根据权利要求1所述的处理器,其中在不被写入到所述主存储器的情况下将经无效的第一高速缓存条目从所述处理器高速缓存逐出。
9.一种用于将高速缓存条目无效的方法,包括:
从第一设备接收针对处理器高速缓存中的第一高速缓存条目中的数据的直接读取请求;
确定所述直接读取请求是否是无效读取请求;
响应于所述直接读取请求是无效读取请求的确定:
在不访问主存储器的情况下,将所述第一高速缓存条目中的数据从所述处理器高速缓存直接发送到所述第一设备;以及
将所述处理器高速缓存中的第一高速缓存条目无效。
10.根据权利要求9所述的方法,进一步包括,在接收到所述直接读取请求之前:
从第二设备接收直接写入请求来将所述第一高速缓存条目写入到所述处理器高速缓存。
11.根据权利要求9所述的方法,进一步包括:
从所述第一设备接收针对所述处理器高速缓存中的第二高速缓存条目中的数据的第二直接读取请求;以及
响应于所述第二直接读取请求不是无效读取请求的确定,在不将所述第二高速缓存条目无效的情况下,将所述第二高速缓存条目中的数据从所述处理器高速缓存直接发送到所述第一设备。
12.根据权利要求9所述方法,进一步包括:
在不涉及所述主存储器的情况下,将经无效的第一高速缓存条目从所述处理器高速缓存逐出。
13.根据权利要求9所述的方法,其中确定所述直接读取请求是否是无效读取请求包括:识别指示无效读取请求的标准命令的属性。
14.根据权利要求9所述的方法,其中确定所述直接读取请求是否是无效读取请求包括:针对指示无效读取请求的值来检查所述处理器的寄存器,其中所述寄存器唯一地与所述第一设备相关联。
15.一种具有储存于其上的数据的机器可读介质,所述数据如果被至少一个机器使用,则使所述至少一个机器制造至少一个集成电路来实行根据权利要求9到14中的任一项所述的方法。
16.一种用于处理指令的装置,其被配置成实行权利要求9到14中的任一项所述的方法。
17.一种用于将高速缓存条目无效的***,其包括:
***存储器;以及
处理器,其被耦合到所述***存储器,所述处理器包括处理器高速缓存和直接高速缓存单元,所述直接高速缓存单元用以:
从第一设备接收针对所述处理器高速缓存中的第一高速缓存条目中的数据的第一读取请求;
确定所述第一读取请求是否是无效读取请求;
响应于所述第一读取请求是无效读取请求的确定:
在不访问所述***存储器的情况下,将所述第一高速缓存条目中的数据从所述处理器高速缓存发送到所述第一设备;以及
将所述处理器高速缓存中的第一高速缓存条目无效。
18.根据权利要求17所述的***,所述直接高速缓存单元进一步用以:
从所述第一设备接收针对所述处理器高速缓存中的第二高速缓存条目中的数据的第二读取请求,其中所述第二读取请求是直接读取请求;以及
响应于所述第二读取请求不是无效读取请求的确定,在不将所述第二高速缓存条目无效的情况下,将所述第二高速缓存条目中的数据从所述处理器高速缓存直接发送到所述第一设备。
19.根据权利要求17所述的***,所述直接高速缓存单元进一步用以在接收到所述直接读取请求之前:
从第二设备接收直接写入请求来将所述第一高速缓存条目写入到所述处理器高速缓存。
20.根据权利要求17所述的***,所述直接高速缓存单元进一步用以:
响应于所述直接写入请求,在不访问所述***存储器的情况下将所述第一高速缓存条目直接写入到所述处理器高速缓存。
21.根据权利要求17所述的***,所述直接高速缓存单元进一步用以:
基于指示无效读取请求的寄存器值来确定所述第一读取请求是否是无效读取请求。
22.根据权利要求17所述的***,其中所述处理器高速缓存用以在不写入到所述***存储器的情况下将经无效的第一高速缓存条目逐出。
CN201711317356.8A 2016-12-12 2017-12-12 针对处理器中的高速缓存利用的无效读取 Active CN108228484B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/375,582 US10235302B2 (en) 2016-12-12 2016-12-12 Invalidating reads for cache utilization in processors
US15/375582 2016-12-12

Publications (2)

Publication Number Publication Date
CN108228484A true CN108228484A (zh) 2018-06-29
CN108228484B CN108228484B (zh) 2023-04-18

Family

ID=62489423

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711317356.8A Active CN108228484B (zh) 2016-12-12 2017-12-12 针对处理器中的高速缓存利用的无效读取

Country Status (2)

Country Link
US (1) US10235302B2 (zh)
CN (1) CN108228484B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220358069A1 (en) * 2021-05-07 2022-11-10 Chronos Tech Llc ADVANCED CENTRALIZED CHRONOS NoC

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030066012A1 (en) * 1999-10-01 2003-04-03 Quach Nhon Toai Cache memory and system with partial error detection and correction of MESI protocol
US20040128451A1 (en) * 2002-12-31 2004-07-01 Intel Corporation Power/performance optimized caches using memory write prevention through write snarfing
US6857051B2 (en) * 1998-12-23 2005-02-15 Intel Corporation Method and apparatus for maintaining cache coherence in a computer system
CN1685321A (zh) * 2002-09-30 2005-10-19 先进微装置公司 在具有高速缓存的数据处理***内减少耗用时间的方法与装置
US20090037661A1 (en) * 2007-08-04 2009-02-05 Applied Micro Circuits Corporation Cache mechanism for managing transient data
CN103119568A (zh) * 2010-08-20 2013-05-22 英特尔公司 利用目录信息扩展高速缓存一致性监听广播协议
US20140173221A1 (en) * 2012-12-14 2014-06-19 Ahmad Samih Cache management
CN104106061A (zh) * 2012-02-08 2014-10-15 国际商业机器公司 在偏好加载的***中存在加载竞争的情况下用于存储的前进机制
CN104937539A (zh) * 2012-11-28 2015-09-23 英特尔公司 用于提供推入缓冲器复制和存储功能的指令和逻辑

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7757046B2 (en) * 2002-09-30 2010-07-13 Intel Corporation Method and apparatus for optimizing line writes in cache coherent systems
US7290093B2 (en) * 2003-01-07 2007-10-30 Intel Corporation Cache memory to support a processor's power mode of operation

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6857051B2 (en) * 1998-12-23 2005-02-15 Intel Corporation Method and apparatus for maintaining cache coherence in a computer system
US20030066012A1 (en) * 1999-10-01 2003-04-03 Quach Nhon Toai Cache memory and system with partial error detection and correction of MESI protocol
CN1685321A (zh) * 2002-09-30 2005-10-19 先进微装置公司 在具有高速缓存的数据处理***内减少耗用时间的方法与装置
US20040128451A1 (en) * 2002-12-31 2004-07-01 Intel Corporation Power/performance optimized caches using memory write prevention through write snarfing
US20090037661A1 (en) * 2007-08-04 2009-02-05 Applied Micro Circuits Corporation Cache mechanism for managing transient data
CN103119568A (zh) * 2010-08-20 2013-05-22 英特尔公司 利用目录信息扩展高速缓存一致性监听广播协议
CN104106061A (zh) * 2012-02-08 2014-10-15 国际商业机器公司 在偏好加载的***中存在加载竞争的情况下用于存储的前进机制
CN104937539A (zh) * 2012-11-28 2015-09-23 英特尔公司 用于提供推入缓冲器复制和存储功能的指令和逻辑
US20140173221A1 (en) * 2012-12-14 2014-06-19 Ahmad Samih Cache management

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
GEORGES DUPRET ET AL.: ""A Model to Estimate Intrinsic Document Relevance from the Clickthrough Logs of a Web Search Engine"", 《ACM》 *
张轮凯 等: ""一种针对片上众核结构共享末级缓存的改进的LFU替换算法"", 《计算机应用与软件》 *

Also Published As

Publication number Publication date
CN108228484B (zh) 2023-04-18
US10235302B2 (en) 2019-03-19
US20180165222A1 (en) 2018-06-14

Similar Documents

Publication Publication Date Title
CN107250946A (zh) 执行对平台装置的动态功率控制
CN114489306B (zh) 遮蔽处理器的核的功率状态
CN106489108A (zh) 控制***存储器的温度
CN106537285A (zh) 处理器温度的平衡控制
US11481013B2 (en) Multi-level loops for computer processor control
TWI697228B (zh) 用於密碼雜湊運算之硬體加速器
CN108885483A (zh) 确定多管芯处理器中的热余量
CN109564526A (zh) 使用封装和线程提示信息的组合来控制处理器的性能状态
CN107003971A (zh) 用于高性能互连中的嵌入式流通道的方法、装置、***
CN107077175A (zh) 提供针对多芯片封装的热参数报告的装置和方法
US10719326B2 (en) Communicating via a mailbox interface of a processor
CN107567614B (zh) 用于对根据关键度被分组的指令的缕程的执行的多核处理器
CN108369495A (zh) 用于浮点操作的硬件消除监视器
CN110321166A (zh) 处理器中的基于一致性操作的分支预测
CN108241507A (zh) 管理压缩加速器中的状态数据
CN109791427B (zh) 使用滑动平均值的处理器电压控制
CN109661637A (zh) 用于可变功率轨的补偿控制
EP3314431A1 (en) Adaptive hardware acceleration based on runtime power efficiency determinations
CN109564460A (zh) 在处理器中提供用于降级控制信息的接口
CN108694154B (zh) 用于选择数据元素的硬件加速器
US11921564B2 (en) Saving and restoring configuration and status information with reduced latency
CN109104184A (zh) 验证用于可重配置设备的图像
CN108228484A (zh) 针对处理器中的高速缓存利用的无效读取
CN109478086B (zh) 至少部分地基于平台电容来控制处理器的电流消耗
JP7495422B2 (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
GR01 Patent grant
GR01 Patent grant