减少具有扩展MESI协议的多处理器系统的互连流量的制作方法

文档序号:12071787阅读:147来源:国知局
减少具有扩展MESI协议的多处理器系统的互连流量的制作方法与工艺

本公开的实施例总地涉及管理一个或多个处理器的高速缓存,更具体地涉及减少使用扩展MESI协议的多处理器系统的互连结构系统上的流量。



背景技术:

处理器可以包括一个或多个处理核、高速缓存以及用于管理导向主存储器的读操作和写操作的高速缓存控制器。该高速缓存控制器是与处理核和主存储器耦合以管理高速缓存上的操作的电路逻辑。高速缓存可以包括不同类型的高速缓存。例如,处理核可以包括专用于处理核的L1高速缓存。多核处理器可以包括由多个核共享的L2高速缓存。此外,处理器的全部核可以共享共同的L3高速缓存。在一些实现方式中,片上最后一级高速缓存(LLC)可以由片上系统(SoC)上的多个处理器共享。每个高速缓存可以包括存储主存储器内所存储的数据的本地副本和主存储器中所存储的数据的地址的一个或多个高速缓存线。处理器的高速缓存控制器可以根据高速缓存相干协议来管理L1-L3高速缓存以确保其副本存储在多个高速缓存中的共享数据的一致性。

附图说明

从下面给出的详细说明以及从本公开的各个实施例的附图中将更全面地理解本公开内容。然而,附图不应视为将本公开限制到具体的实施例,而是仅为了说明和理解。

图1示出了根据本公开的实施例的包括处理核的处理设备。

图2示出了根据本公开的实施例的高速缓存的高速缓存线。

图3是根据本公开的实施例的扩展MESI协议的状态图。

图4A是根据本公开的实施例的将高速缓存线的标记分配给共享状态之一的方法的框图。

图4B是根据本公开的实施例的基于高速缓存线中所存储的标记而广播高速缓存无效请求的方法的框图。

图5A是示出了可使用本公开的一个实施例的包括异构核的处理器的微架构的框图。

图5B是示出了根据本公开的至少一个实施例实现的有序流水线和寄存器重命名阶段、无序发布/执行流水线的框图。

图6示出了根据本公开的一个实施例的包含逻辑的处理器的微架构的框图。

图7是示出可使用本公开的实施例的系统的框图。

图8是本公开的实施例可操作于其中的系统的框图。

图9是本公开的实施例可操作于其中的系统的框图。

图10是根据本公开的实施例的片上系统(SoC)的框图。

图11是根据本公开的SoC设计的实施例的框图。

图12示出了计算机系统的一个实施例的框图。

具体实施方式

MESI协议是一种高速缓存相干协议。在MESI协议下,高速缓存控制器可以利用“修改”、“独占”、“共享”或“无效”状态中的一个来标记高速缓存线。修改(M)状态指示高速缓存控制器确定存储在高速缓存线中的副本已经从存储在主存储器中的数据修改。要求在允许主存储器状态(不再有效)的任何其它读之前在未来的某时间高速缓存将数据写回到主存储器。从高速缓存写回到主存储器导致高速缓存控制器将高速缓存线的状态变成独占(E)状态。独占(E)状态指示,高速缓存控制器确定高速缓存线匹配存储在主存储器中的数据且未由其它高速缓存共享。高速缓存控制器可以响应于源自另一处理核或另一处理器的对主存储器的读请求而将高速缓存线的状态变成共享状态。可替代地,当高速缓存线的内容被重写时,高速缓存控制器可以将高速缓存线的状态变成修改状态。共享(S)状态指示,高速缓存控制器确定高速缓存线也存储在另一高速缓存中(例如,在由另一处理核或另一处理器读之后)。无效(I)状态指示,高速缓存控制器确定高速缓存线无效(或未使用)。

随着半导体技术的发展,越来越多的核已经集成到处理器中。利用多个核,处理设备可以包括多个处理器,每个处理器可以包括处理核的多个核集群,并且每个集群可以包括多个处理核。然而,MESI协议同等地处理具有单处理核的处理器和具有多个核集群和多个处理核的多个处理器。例如,MESI协议的共享(S)状态指示,数据副本分布在不同的处理器上。在写入对应于高速缓存线的主存储器位置的情形下,高速缓存控制器需要将高速缓存无效请求消息广播到全部的处理器及其核以请求将其它高速缓存中的高速缓存线的副本的状态从共享(S)状态变成无效(I)状态。高速缓存无效请求可以在互连结构系统上传输,多个处理器与该互连结构系统耦合。当处理器和其中的处理核的数量高时,无效请求的广播会导致互连结构系统上的大的流量。

本公开的实施例可以包括处理设备,该处理设备包括一个或多个处理器,每个处理器包括一个或多个处理核和由一个或多个高速缓存控制器利用高速缓存相干协议管理的高速缓存,高速缓存的状态考虑到处理核的不同级别的集聚。

在一个实施例中,该协议可以根据哪个核共享数据而支持不同类型的共享状态。在一个实施例中,扩展MESI的共享状态可以包括集群共享(CS)、处理器共享(PS)和全局共享(GS)状态这三种共享状态,而不是MESI协议的单一共享(S)状态。高速缓存线的集群共享(CS)状态指示存储在高速缓存线中的数据可以具有存储在由处理核所属的核集群构成的不同处理核的高速缓存中的副本,但是在核集群之外的任何高速缓存中没有副本。在一个实施例中,处理核的核集群由处理器的制造商规定。高速缓存线的处理器共享(PS)状态指示存储在高速缓存线中的数据的副本可以具有存储在处理器中的多于一个集群的处理核中的高速缓存中的副本,而在处理器之外没有副本。全局共享(GS)状态指示,存储在高速缓存线中的数据可以具有全局地位于全部处理器中的高速缓存和处理设备内的处理核内的副本。

在扩展MESI协议下,高速缓存控制器可以基于高速缓存线是处于集群共享(CS)状态、处理器共享(PS)状态还是全局共享(GS)状态而将高速缓存消息(例如,高速缓存无效请求)广播到处理核的目标组,从而减少互连结构系统上由总是全局地广播高速缓存消息而导致的流量。

图1示出了根据本公开的实施例的包括处理核的片上系统(SoC)100。SoC 100可以包括一个或多个处理器102A-102B,以及主存储器104。每个处理器102A,102B还可以包括一个或多个处理核。如图1所示,处理器102A可以包括处理核110A-110D,并且处理器102B可以包括处理核110E-110H。每个处理核110A-110H可以包括专用于对应的处理核的相应的L1高速缓存112A-112H。在一个实施例中,处理核可以由处理器102A,102B的制造商(或由SoC 100的用户)集聚成核集群。核集群可以包括在地理上彼此接近的一组集群。在一个实施例中,核集群可以是享有核集群中的核所共享的专用资源的处理器的设计单元。例如,核集群的核可以共享专用L2高速缓存。如图1所示,在处理器102A中,处理核110A,110B可以构成核集群108A,并且处理核110C,110D可以构成核集群108B。类似地,处理核110E-100H可以分别构成处理器102B中的核集群108C,108D。

在一个实施例中,多个处理核可以共享L2高速缓存。例如,如图1所示,集群108A-108D中的处理核可以分别共享L2高速缓存114A-114D。另外,处理器102A,102B可共享L3高速缓存(未示出)。

处理核110A-110D、核集群108A-108D以及处理器102A-102B以及不同级别的高速缓存112A-112H,114A-114D可以通过互连结构系统在SoC100内互连。互连结构系统可以在处理核、核集群和处理器之间传输指令和数据。

在一个实施例中,互连结构系统可以包括在核、核集群和处理器之间连接的不同类型的互连。在一个实施例中,如图1所示,核集群108A的处理核110A-110B可以通过核间互连116A连接;核集群108B的处理核110C-110D可以通过核间互连116B连接;核集群108C的处理核110E-110F可以通过核间互连116C连接;以及核集群108D的处理核110G-110H可由核间互连116D连接。核间通信,包括在处理集群内的处理核之间的数据通信和指令/控制消息,可以经由核间互连116A-116D来传输。

处理器上的核集群可以与集群间互连结构来连接。在一个实施例中,如图1所示,处理器102A的核集群108A和核集群108B可以与集群间互连118A连接,并且核集群108C和核集群108D可以与集群间互连118B连接。因此,包括同一处理器上的第一核集群中的第一处理核和第二核集群中的第二处理核之间的数据通信和指令/控制消息的通信可以经由集群间互连118A,118B来传输。例如,处理核110A可以经由集群间互连118A与处理核110C通信。核间互连116A-116D和集群间互连118A-118B是片上互连结构。然而,核间互连116A-116D是集群模块上的互连。相比而言,集群间互连118A-118B在集群模块之间(或者脱离集群模块)。

处理器间互连结构106可以连接处理器102A,102B和主存储器104,用于处理核110A-110H与主存储器104之间的通信以及用于位于两个单独的处理器上的两个处理核之间的通信。例如,处理核110A可以经由处理器间互连106从主存储器读数据或者写数据到主存储器。而且,处理器102A的处理核110A可以经由处理器间互连106与处理器102B的处理核110E通信。在一个实施例中,处理器间互连106可以是片外互连。

在一个实施例中,每个处理器102A,102B还可以包括与处理核110A-110H和主存储器104耦合的相应的高速缓存控制器116A,116B。高速缓存控制器116A,116B是控制处理核110A-110H、高速缓存112A-112H、114A-114D和主存储器104之间的接口的电路逻辑。在一个实现方式中,高速缓存控制器120A,120B可以代表处理器上的高速缓存来监视互连结构系统的对于主存储器104发生的任何写和/或读操作或者SoC 100中的高速缓存中的高速缓存线的任何状况变化。如图1所示,高速缓存控制器120A可以监视高速缓存112A-112D以及高速缓存114A-114B的互连结构系统(包括核间互连116A-116D,核间互连118A-118B和处理器间互连106),并且高速缓存控制器120B可以监视高速缓存112E-112H和高速缓存114C-114D的互连结构系统。

不同级别的高速缓存(例如,L1-L3)用于存储存储在主存储器104中的数据的本地副本以减少对存储在主存储器中的数据的访问时间。每个高速缓存可以包括用于存储存储在主存储器中的一条数据的一个或多个高速缓存线。图2示出了示范性的高速缓存线200,其包括标签部202、数据部204和标记部206。SoC 100中的每个高速缓存可以包括作为示范性的高速缓存线200的多个高速缓存线。数据段204可以存储存储于主存储器中的对应数据的副本。标签段202可以存储在此存储了数据204的主存储器的地址。标签206段可以根据某高速缓存相干协议而存储高速缓存线的状态指示符以确保对高速缓存线200和主存储器中的对应数据的访问是一致且正确的。

为了减少访问时间,当处理核需要从主存储器的地址读时,处理核可以首先检查包括处理核的处理器中的高速缓存或者另一处理器的高速缓存以判定在高速缓存中是否存在副本。如果存在存储于一个或多个高速缓存中的副本,则处理核读取一个或多个高速缓存中的副本,而不是从主存储器104读取,因为从主存储器取回通常较慢。当处理核需要将数据写入主存储器中的地址时,处理核可能需要检查是否存在存储于高速缓存的高速缓存线中的数据的一个或多个副本。如果存在存储于一个或多个高速缓存线中的副本,则处理核可能需要使高速缓存控制器改变一个或多个高速缓存线的状态(例如,变成无效状态)和/或更新存储在高速缓存线中的数据。

因为存储在主存储器104中的数据可能具有存储在一个或多个处理器中的不同高速缓存的不同高速缓存线处的多个副本,所以在高速缓存和主存储器104之间的数据一致性需要根据高速缓存相干协议来维持。这可以通过一个或多个高速缓存控制器在互连系统结构上窥探来实现。窥探是高速缓存控制器监视主存储器的地址线的对高速缓存具有本地副本的存储器位置的访问(读或写)的过程。如图1所示,高速缓存控制器120A,120B可以代表高速缓存110A-110H,114A-114D来监视主存储器104的地址线处的活动以检测是否存在任何读或写操作并且根据高速缓存相干协议来设定对应的高速缓存线的状态。

高速缓存相干协议是MESI协议,其包括“修改”、“独占”、“共享”和“无效”状态,这些状态可用于标记高速缓存线。在MESI协议下,高速缓存线的共享(S)状态指示存储在高速缓存线中的数据由另一高速缓存共享(或者在另一高速缓存中具有副本),但是并不告知共享高速缓存是否来自同一核集群,或者来自同一处理器,或者来自其它处理器。例如,如果高速缓存112A中的高速缓存线具有共享(S)状态,因为存储在高速缓存线中的数据的副本也存储在高速缓存112B中,所以当处理核110A写入对应于存储在高速缓存112A中的高速缓存线的主存储器的位置时,包括高速缓存无效请求的窥探消息需要发送到SoC 100上的全部高速缓存(及其高速缓存控制器)以通知全部高速缓存如果它们有副本就将它们的副本都无效化。这是因为,处理核110A不知道哪个高速缓存是共享高速缓存,并且因此,处理核110A不得不经由处理器间互连106来通知全部的高速缓存,但是,实际上,处理核110A仅需要经由核间互连116A来通知高速缓存112B。因此,由于非区别性的共享(S)状态而在处理器间互联106上产生了不必要的流量。

本公开的实施例可以包括处理器,该处理器包括高速缓存控制器,高速缓存控制器根据扩展MESI协议来管理处理器的高速缓存。扩展MESI协议可以将共享状态划分成两个或更多个具体的共享状态以标识存储在高速缓存线中的数据如何被共享。在一个实施例中,扩展MESI协议可以包括高速缓存线的“集群共享”(CS)状态,表明存储在高速缓存线中的数据由同一核集群内的另一高速缓存共享,而不是核集群之外的。例如,如果存储在高速缓存112A中的高速缓存线中的数据被标记为CS状态,则存储在该高速缓存线中的数据可由核集群108A内的高速缓存112B,114A共享,而不是核集群108A之外的。

在一个实施例中,扩展MESI协议还可以包括高速缓存线的“处理器共享”(PS)状态,表明存储在该高速缓存线中的数据可由同一处理器内的另一核集群中的另一高速缓存共享,而不是处理器之外的。例如,如果存储在高速缓存112A中的高速缓存线中的数据被标记为PS状态,则存储在高速缓存线中的数据可在高速缓存112C,112D,116B,112B或114A中共享,而不是在处理器102A之外的。

在一个实施例中,扩展MESI协议还可以包括高速缓存线的“全局共享”(GS)状态,表明存储在该高速缓存线中的数据可由SoC 100中的任何高速缓存共享,包括另一处理器中的高速缓存。例如,如果存储在高速缓存112A的高速缓存线中的数据被标记为GS状态,则数据可由任意高速缓存中的高速缓存线来共享。

除了CS、PS和GS状态之外,在一个实施例中,扩展MESI协议还可以包括“修改”(M)、“独占”(E)和“无效”(I)状态。类似于MESI协议,M状态表明存储在高速缓存线中的数据已经从主存储器104中所存储的副本修改,并且因此,需要在未来的时间写回主存储器。E状态指示,存储在高速缓存线中的数据未被其它高速缓存共享,且与主存储器104一致。I状态指示存储在高速缓存线中的数据是无效的,因为存储在主存储器中的对应的数据已经被重写。

因为将共享状态分类成集群共享、处理器共享和全局共享,高速缓存控制器120A,120B可以基于共享状态而将一些高速缓存管理请求(例如,高速缓存无效请求)发送到选定的互连,而不是总是全局地广播。这可以减少互连结构系统上的窥探流量。在一个实施例中,如果高速缓存线被标记为CS状态,响应于接收到将主存储器104中所存储的数据重写到对应于高速缓存线的地址处的指令,高速缓存控制器可以经由核间互连将高速缓存无效请求广播到核集群内的高速缓存。例如,如果高速缓存112A中的高速缓存线被标记为CS状态且高速缓存控制器120A检测到核110A在主存储器104中对应于高速缓存线的位置处的写操作,则高速缓存控制器120可以经由核间互连114A将高速缓存无效请求发送到高速缓存112B,114A。这样,在集群108A内限制了窥探流量。

在一个实施例中,如果高速缓存112A中的高速缓存线被标记为PS状态且高速缓存控制器120A检测到核110A在主存储器104中对应于存储于高速缓存线中的地址的位置处的写操作,则高速缓存控制器120可以经由集群间互连118A将高速缓存无效请求发送到处理器102A内的高速缓存112B-112D,114A-114B。这样,在处理器102A内限制了窥探流量。

高速缓存命中会导致高速缓存线将其状态变成扩展MESI状态之一。高速缓存命中是来自主存储器中对应于高速缓存线的位置处的另一高速缓存的读探头。在将数据提供给请求者之前,高速缓存控制器可以根据高速缓存线的当前状态和高速缓存命中的请求者的位置而将高速缓存线的状态设定成CS、PS或GS状态中的一个。请求者的身份可以是读探头的部分。

图3是说明扩展MESI协议的不同状态之间的过渡的状态图。在一个实施例中,如果高速缓存线的当前状态是“独占”(E),则高速缓存控制器可以响应于高速缓存控制器检测到高速缓存命中且标识出在同一核集群内的另一高速缓存是高速缓存命中的发起者而将状态变成“集群共享”(CS),或者响应于高速缓存控制器检测到高速缓存命中且标识出在核集群外但是在同一处理器内的另一高速缓存是高速缓存命中的发起者而将状态变成“处理器共享”(PS),或者响应于高速缓存控制器检测到高速缓存命中且标识出在另一处理器内的高速缓存是高速缓存命中的发起者而将状态变成“全局共享”(GS)。

在一个实施例中,如果高速缓存线的当前状态是CS,则高速缓存控制器可以响应于检测到来自核集群之外但是在同一处理器内的另一高速缓存的高速缓存命中而将状态变成PS,或者响应于来自另一处理器的高速缓存命中而将状态变成GS。

在一个实施例中,如果高速缓存线的当前状态是PS,则高速缓存控制器可以响应于来自另一处理器的高速缓存命中而将状态变成GS。然而,来自同一高速缓存集群内的另一个高速缓存的高速缓存命中不改变高速缓存线的状态。

在一个实施例中,如果高速缓存线是CS、PS或GS状态之一,则响应于检测到高速缓存内的写命中(即,写入一个其内容尚未发送到存储器的高速缓存),高速缓存控制器可以首先对于集群内、处理器内的全部高速缓存或全局地广播高速缓存无效请求以请求高速缓存线中所存储的数据的副本的无效。此后,高速缓存控制器可允许处理核写入高速缓存线,并且将高速缓存线的标记变成“修改”(M)。因为高速缓存无效请求的广播选择性地针对高速缓存集群、处理器中的高速缓存或针对全局,所以可以减少互连结构系统上的窥探流量。

在一个实施例中,如果高速缓存线响应于检测到将存储在高速缓存线中的副本无效的高速缓存无效请求而处于CS、PS或GS状态之一,则高速缓存控制器可以将高速缓存线的标记从CS、PS或GS变成“无效”(I)。

图4A是根据本公开的实施例的将高速缓存线的标记分配给共享状态之一的方法的框图。方法400可通过处理逻辑来执行,该处理逻辑可以包括硬件(例如,电路系统、专用逻辑、可编程逻辑、微码等)、软件(例如,运行于SoC、通用计算机系统或专用机器上的指令)、固件或其组合。在一个实施例中,方法400可以部分地通过如图1所示的高速缓存控制器120A-120B的处理逻辑来执行。

为说明的简化,方法400被描绘且描述为一系列动作。然而,根据本公开的动作可以按多种顺序发生和/或同时发生,以及与其它未在此呈现和描述的其它动作一起发生。此外,根据本公开主题,不是所有图示的动作可能被执行来实现方法400。另外,本领域技术人员将理解且意识到,方法400可以可替代地经由状态图或事件而表示为一系列互相关联的状态。

参考图4A,在402处,操作开始。在404处,处理器的高速缓存控制器可以针对读存储在处理器中的核的高速缓存线中的数据的请求来监视处理设备的互连结构系统。如果高速缓存线包含所请求的数据,则高速缓存控制器检测到高速缓存命中并且可能需要将数据提供给请求者以避免从存储器中取回数据。可以响应于处理器或另一处理器的第二核读主存储器的尝试而生成该请求。并非是从主存储器取回数据,第二核(经由另一高速缓存控制器或同一高速缓存控制器)可以首先将读探头发送到SoC中的高速缓存以搜索本地高速缓存中所存储的数据的副本。

响应于检测到请求,在406处,高速缓存控制器可以确定读的请求来自何处。在一个实施例中,高速缓存控制器基于接收自互连结构系统的窥探(读探头)来确定请求的请求者的身份。窥探可以包括请求处理器的标识和请求处理器内的请求核的标识。

响应于读请求来自接收高速缓存的同一核集群内的请求核的判定,在412处,高速缓存控制器可以将高速缓存线的标记段中所存储的标记从“独占”设定成“集群共享”。响应于读请求来自同一处理器内的另一核集群内的核的判定,在410处,高速缓存控制器可以将存储在高速缓存线的标记段内的标记从“独占”或“集群共享”设定成“处理器共享”。响应于读请求来自另一处理器中的核的判定,在408处,高速缓存控制器可以将存储在高速缓存线的标记段中的标记从“独占”、“集群共享”或“处理器共享”设定成“全局共享”。

在将高速缓存线的标记段设定成“集群共享”、“处理器共享”或“全局共享”中的一个之后,在414处,高速缓存控制器可以将存储在高速缓存线中的数据传输给请求者以存储在请求者的高速缓存中。高速缓存控制器可以在用于“集群共享”的核间互连、在用于“处理器共享”的集群间互连以及在用于“全局共享”的处理器间互连上传输数据。

图4B是根据本公开的实施例的基于存储在高速缓存线中的标记来广播高速缓存无效请求的方法的框图。方法420可以通过可以包含硬件(例如,电路系统、专用逻辑、可编程逻辑、微码等)、软件(例如运行于处理设备、通用计算机系统或专用机器上的指令)、固件或其组合的处理逻辑来执行。在一个实施例中,方法400可以部分地通过如图1所示的高速缓存控制器120A-120B的处理逻辑来执行。

为说明简化,方法400被描绘且描述为一系列动作。然而,根据本公开的动作可以按各种顺序发生和/或同时发生,以及与其它未在此呈现和描述的动作一起发生。此外,根据本公开主题,不是所有图示的动作可能被执行来实现方法400。另外,本领域技术人员将理解且意识到,方法420可以可替代地经由状态图或事件而表示为一系列互相关联的状态。

参考图4B,在422处,操作开始。在424处,处理器内的核的高速缓存的高速缓存控制器可以接收重写高速缓存线中所存储的数据的副本的请求。写操作会在高速缓存线中所存储的数据与主存储器所存储的数据之间创建差异。在426处,高速缓存控制器可以确定高速缓存线的标记段中所存储的标记。如果标记指示“独占”或“修改”,则高速缓存线中所存储的数据不具有其它高速缓存中所存储的副本。然而,如果标记指示共享状态之一,则高速缓存控制器可能需要基于标记段的标记将高速缓存无效请求送出到那些共享高速缓存。

响应于标记段的标记是“集群共享”的判定,在432处,高速缓存控制器可以在核间互连上将高速缓存无效请求发送到核集群内的全部高速缓存。响应于标记段的标记是“处理器共享”的判定,在428处,高速缓存控制器可以在集群间互连上将高速缓存无效请求发送到处理器内的全部的高速缓存。响应于标记段的标记是“全局共享”的判定,在430处,高速缓存控制器可以将高速缓存无效请求发送到高速缓存所在的SoC中的全部高速缓存。这样,高速缓存无效请求根据共享状态而针对具体的域,从而减少了窥探流量。在发送高速缓存无效请求之后,在434处,高速缓存控制器可以将高速缓存线的标记段的标记设定成“修改”。

在一个实施例中,高速缓存相干协议可以包括除了“修改”、“独占”、“集群共享”、“处理器共享”、“全局共享”和“无效”状态之外的附加状态。根据本公开的一个实施例,高速缓存相干协议可以包括附加的“转发”(F)状态,指示被标记有“转发”状态的一个高速缓存线负责将数据转发给数据的请求者。这样,请求者仅接收来自标记有“转发”的一个高速缓存线的一个副本,而不是接收来自保持数据的不同高速缓存线的同一数据的多个副本。在一个实施例中,“转发”状态可以拆分成“集群转发”(CF)、“处理器转发”(PF)、或“全局转发”(GF),使得高速缓存控制器可以基于请求者是否在核集群内,在处理器内,或者来自另一处理器而判定是否转发数据。这样,高速缓存控制器可使用最高效的高速缓存来转发数据。

根据本公开的另一实施例,高速缓存相干协议可以包括附加的“拥有”状态,指示高速缓存是多个高速缓存中的具有高速缓存线的副本的一个高速缓存,但是具有对该高速缓存线做出改变的独占权力。具有“拥有”状态的高速缓存可能需要将改变广播到共享高速缓存线的所有其它高速缓存。在一个实施例中,“拥有”状态还可以拆分成“集群拥有”(CO)、“处理器拥有”(PO)或“全局拥有”(GO),使得高速缓存控制器根据高速缓存线是“集群拥有”、“处理器拥有”或是“全局拥有”而将改变广播到核集群中的高速缓存线、处理器中或者全局地广播。

图5A是示出了根据本公开的一个实施例实现包括异构核的处理设备的处理器500的微架构的框图。具体地,处理器500描绘了根据本公开的至少一个实施例的处理器中所要包含的有序架构核和寄存器重命名逻辑、无序发布/执行逻辑。

处理器500包括与执行引擎单元550耦合的前端单元530,并且两者与存储器单元570耦合。处理器500可以包括精减指令集计算(RISC)核、复杂指令集计算(CISC)核、极长指令字(VLIW)核或混合或可替代的核类型。作为又一选择,处理器500可以包括专用核,诸如例如网络或通信核、压缩引擎、图形核等。在一个实施例中,处理器500可以是多核处理器或者可以是多处理器系统的部分。

前端单元500包括与指令高速缓存单元534耦合的分支预测单元532,指令高速缓存单元534与指令转换后备缓冲器(TLB)536耦合,TLB 536与取指令单元538耦合,取指令单元538与译码单元540耦合。译码单元540(还称为译码器)可以对指令译码,并且生成从原始指令译码的、或者以其它方式从原始指令反映的或者从原始指令得到的一个或多个微操作、微码输入点、微指令、其它指令或其它控制信号作为输出。译码器540可以利用各种不同的机制来实现。适合的机制的示例包括但不限于,查找表、硬件实现方式、可编程逻辑阵列(PLA)、微码只读存储器(ROM)等。指令高速缓存单元534进一步与存储器单元570耦合。译码单元540与执行引擎单元550中的重命名/分配器单元552耦合。

执行引擎单元550包括与引退单元554耦合的重命名/分配器单元552以及一组一个或多个调度器单元556。调度器单元556表示任意数量的不同的调度器,包括预留站(RS)、中央指令窗等。调度器单元556与物理寄存器文件单元558耦合。每个物理寄存器文件单元558表示一个或多个物理寄存器文件,其中不同的物理寄存器文件存储一个或多个不同的数据类型,例如标量整数、标量浮点数、压缩整数、压缩浮点数、向量整数、向量浮点数等,存储状态(例如,作为待执行的下一指令的地址的指令指针),等等。物理寄存器文件单元558由引退单元554覆盖以说明可以实现寄存器重命名和无序执行的各种方式(例如,使用重排序缓冲器和引退寄存器文件,使用未来文件,历史缓冲器以及引退寄存器文件;使用寄存器地图和寄存器池;等等)。

在一个实现方式中,处理器500可以与关于图2所描述的处理器202相同。

一般地,架构的寄存器从处理器外或者从编程者的视角是可见的。寄存器不限于任何已知的特定类型的电路。各种不同类型的寄存器是适合的,只要它们能够存储和提供本文所描述的数据即可。适合的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用物理寄存器和动态分配的物理寄存器的组合,等等。引退单元554和物理寄存器文件单元558与执行集群560耦合。执行集群560包括一组一个或多个执行单元562和一组一个或多个存储器访问单元564。执行单元562可以实施各种操作(例如,移位、加、减、乘)且操作于各种类型的数据(例如,标量浮点数、压缩整数、压缩浮点数、向量整数、向量浮点数)。

虽然一些实施例可以包括专用于特定的功能或功能组的多个执行单元,但是其它实施例可以仅包括一个执行单元或者均执行全部功能的多个执行单元。调度器单元556、物理寄存器文件单元558和执行集群560显示为可能有多个,因为一些实施例产生了用于某些类型的数据/操作的单独的流水线(例如,标量整数流水线、标量浮点数/压缩整数/压缩浮点数/向量整数/向量浮点数流水线和/或存储器访问流水线,每个具有它们自己的调度器单元、物理寄存器文件单元、和/或执行集群,并且在单独的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有存储器访问单元564的一些实施例)。还应当理解,在使用单独的流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行,其余是有序的。

一组存储器访问单元564与存储器单元570耦合,存储器单元570可以包括数据预取器580、数据TLB单元572、数据高速缓存单元(DCU)574和级2(L2)高速缓存单元576,仅列举了几个示例。在一些实施例中,DCU 574还称为第一级数据高速缓存(L1高速缓存)。DCU 574可以处置多个未解决的高速缓存丢失以及继续服务进入的存储和负荷。DCU 574还支持维护高速缓存相干性。数据TLB单元572是用于通过映射虚拟和物理地址空间来改善虚拟地址转换速度的高速缓存。在一个示范性的实施例中,存储器访问单元564可以包括负荷单元、存储地址单元和存储数据单元,其中每个与存储器单元570中的数据TLB单元572耦合。L2高速缓存单元576可以与一个或多个其它级的高速缓存耦合且最终与主存储器耦合。

在一个实施例中,数据预取器580通过自动预测程序将要消费哪些数据来推测地加载/预取数据到DCU 574。预取可以是指在数据实际上被处理器需要之前将存储器层级的一个存储器位置(例如,较低级的高速缓存或存储器)中所存储的数据转移到更靠近(例如,产生较低的访问延迟)处理器的较高级的存储器位置。更具体地,预取可以是指在处理器发布对所返回的具体数据的需求之前将数据从较低级高速缓存/存储器中的一个早前取回到数据高速缓存和/或预取缓冲器。

处理器500可以支持一个或多个指令集(例如,x86指令集(具有已经添加了较新版本的一些扩展);加利福尼亚的森尼韦尔的MIPS Technologies的MIPS指令集;加利福尼亚的森尼韦尔的ARM Holdings的ARM指令集(具有可选的附加扩展,如NEON)。

应当理解的是,核可以支持多线程(执行两个或更多个并行组的操作或线程),并且可以通过多种方式来这样做,包括时间切片多线程、同时多线程(其中单个物理核为物理核同时多线程的各个线程提供了逻辑核)、或其组合(例如,时间切片取得以及译码以及此后的同时多线程,例如在Hyperthreading技术中)。

虽然寄存器重命名是在无序执行的上下文中描述的,但是应当理解,寄存器重命名可以在有序架构中使用。虽然处理器的图示的实施例还包括单独的指令和数据高速缓存单元以及共享L2高速缓存单元,但是可替代的实施例可以具有用于指令和数据的单个内部高速缓存,诸如例如级别1(L1)内部高速缓存,或者多级的内部高速缓存。在一些实施例中,该系统可以包括内部高速缓存和在核和/或处理器之外的外部高速缓存的组合。可替代地,全部的高速缓存可以在核和/或处理器之外。

图5B是示出了根据本公开的一些实施例由图5A的处理设备500实现的有序流水线和寄存器重命名阶段、无序发布/执行流水线的框图。图5B中的实线框示出有序流水线,而虚线框示出了寄存器重命名、无序发布/执行流水线。在图5B中,处理器流水线500包括取阶段502、长度译码阶段504、译码阶段506、分配阶段508、重命名阶段510、调度(还称为调遣或发布)阶段512、寄存器读/存储器读阶段514、执行阶段516、写回/存储器写阶段518、异常处理阶段522和提交阶段524。在一些实施例中,阶段502-524的排序可以不同于所示的且不限于图5B中所示的具体的排序。

图6示出了根据本公开的一个实施例的包括混合核的处理器600的微架构的框图。在一些实施例中,根据一个实施例的指令可以实现以操作于具有字节、字、双字、四字等的大小的数据元素以及诸如单精度整数和双精度整数和浮点数数据类型的数据类型。在一个实施例中,有序前端601是处理器600的取待执行指令且准备指令随后在处理器流水线中使用的部分。

前端601可以包括多个单元。在一个实施例中,指令预取器626从存储器取指令且将指令馈送到指令译码器628,指令译码器628进而对指令译码或解释指令。例如,在一个实施例中,译码器将接收到的指令译码成机器能够执行的称为“微指令”或“微操作”(还称为micro op或uop)的一个或多个操作。在其它实施例中,译码器将指令解析成微架构使用来实施根据一个实施例的操作的操作码和对应的数据和控制字段。在一个实施例中,踪迹高速缓存630取得译码后的uop且将它们汇编成uop队列634中的程序有序序列或踪迹以便执行。当踪迹高速缓存630遇到复杂指令时,微码ROM 632提供完成操作所需的uop。

一些指令转换成单一micro-op,而其它需要多个micro-op来完成全部操作。在一个实施例中,如果需要多于四个micro-op来完成指令,则译码器628访问微码ROM 632来完成指令。对于一个实施例,指令可以译码成少量的micro op,用于在指令译码器628中处理。在另一实施例中,如果需要多个micro-op来完成操作,则指令可以存储在微码ROM 632内。踪迹高速缓存630参考输入点可编程逻辑阵列(PLA)来确定用于从微码ROM 632中读微码序列以完成根据一个实施例的一个或多个指令的正确的微指令指针。在微码ROM 632结束对指令的定序micro-op之后,机器的前端601恢复从踪迹高速缓存630取micro-op。

指令在无序执行引擎603中被准备以便执行。无序执行逻辑具有多个缓冲器来平滑化且重排序指令流以便随着指令流顺着流水线前进且被调度以执行而优化性能。分配器逻辑分配每个uop为了执行而所需的机器缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名到寄存器文件中的条目上。分配器还分配用于两个uop队列中的一个中的每个uop的条目,一个用于存储器操作,一个用于非存储器操作,在指令调度器之前:存储器调度器、快速调度器602、慢速/普通浮点调度器604以及简单浮点数调度器606。uop调度器602、604、606基于它们相关的输入寄存器操作数源的就绪程度和uop完成它们的操作所需的执行资源的可用性来判定uop何时准备执行。一个实施例的快速调度器602能够在主时钟周期的每半个上调度,而其它调度器在每个主处理器时钟周期内仅能调度一次。调度器裁定调遣端口以调度用于执行的uop。

寄存器文件608,610位于调度器602、604、606与执行块611中的执行单元612、614、616、618、620、622、624之间。存在单独的寄存器文件608,610,分别用于整数操作和浮点数操作。一个实施例的每个寄存器文件608,610还包括旁通网络,其能够绕过或者仅转发尚未写入寄存器文件的完成的结果到新的相关uop。整数寄存器文件608和浮点数寄存器文件610还能够将数据与其它进行通信。对于一个实施例,整数寄存器文件608被拆分成两个单独的寄存器文件,一个寄存器文件用于低阶32位数据,第二寄存器文件用于高阶32位数据。一个实施例的浮点数寄存器文件610具有128位宽的条目,因为浮点数指令通常具有宽度从64位到128位的操作数。

执行块611包含执行单元612、614、616、618、620、622、624,在执行单元中指令被实际地执行。该段包含了寄存器文件608,610,其中存储有微指令需要执行的整数和浮点数数据操作数值。一个实施例的处理器600由如下多个执行单元构成:地址生成单元(AGU)612、AGU 614、快速ALU 616、快速ALU 618、慢速ALU 620、浮点ALU 622、浮点移动单元624。对于一个实施例,浮点执行块622、624执行浮点数、MMX、SIMD和SSE,或其它操作。一个实施例的浮点数ALU 622包括64位乘64位浮点数除法器来执行除法、平方根以及余数micro-op。对于本公开的实施例,涉及到浮点数值的指令可以利用浮点数硬件来处理。

在一个实施例中,ALU操作进入高速ALU执行单元616、618。一个实施例的快速ALU 616,618能够利用半个时钟周期的有效延迟来执行快速操作。对于一个实施例,最复杂的整数操作进入慢速ALU 620,因为慢速ALU 620包括用于长延迟类型的操作(例如乘法器、移位、标记逻辑和分支处理)的整数执行硬件。存储器负荷/存储操作由AGU 612,614来执行。对于一个实施例,整数ALU 616,618,620是在对64位数据操作数执行整数操作的上下文中描述的。在可替代的实施例中,能够实现ALU 616,618,620来支持各种数据位,包括16,32,128,256等。类似地,浮点数单元622,624可被实现以支持具有各种宽度的位的一系列操作数。对于一个实施例,浮点数单元622,624能够联合SIMD和多媒体指令而操作于128位宽的压缩数据操作数上。

在一个实施例中,在父负荷已经结束执行之前,uop调度器602,604,606调遣相关的操作。由于uop在处理器600中被推测地调度和执行,所以处理器600还包括处理存储器丢失的逻辑。如果数据负荷丢失在数据高速缓存中,则在流水线中存在为调度器留有临时不正确数据的、处于飞行中的相关操作。重放机制跟踪且重新执行使用不正确数据的指令。仅相关操作需要被重复,并且允许完成独立的操作。处理器的一个实施例的调度器和重放机制还设计成捕获用于文本串比较操作的指令序列。

处理器600还包括根据本公开的实施例实现用于存储器区别的存储地址预测的逻辑。在一个实施例中,处理器600的执行块611可以包括用于实现用于存储器区别的存储地址预测的存储地址预测器(未示出)。

术语“寄存器”可以是指被用作指令的部分以标识操作数的板上处理器存储位置。换言之,寄存器可以是那些能从处理器外(从编程者的视角)使用的那些寄存器。然而,实施例的寄存器不应在含义上限于特定类型的电路。相反,实施例的寄存器能够存储和提供数据,以及执行本文所述的功能。本文所述的寄存器能够通过处理器内的电路系统利用任意多个不同的技术来实现,所述技术例如为专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合,等等。在一个实施例中,整数寄存器存储三十二位整数数据。一个实施例的寄存器文件还包含用于压缩数据的八个多媒体SIMD寄存器。

对于下面的论述,寄存器应理解为设计成保存压缩数据的数据寄存器,例如利用来自加利福尼亚的圣塔克拉拉的英特尔公司的MMX技术实现的微处理器中的64位宽的MMXTM寄存器(在一些实例中也称为‘mm’寄存器)。这些以整数和浮点数形式可用的MMX寄存器能够利用伴随SIMD和SSE指令的压缩数据元素来操作。类似地,与SSE2,SSE3,SSE4或超越(通称为“SSEx”)技术有关的128位宽的XMM寄存器还能够用于保存这些压缩数据操作数。在一个实施例中,在存储压缩数据和整数数据时,寄存器无需区分两种数据类型。在一个实施例中,整数和浮点数要么包含在同一寄存器文件中要么包含在不同的寄存器文件中。此外,在一个实施例中,浮点数和整数数据可以存储在不同的寄存器或相同的寄存器中。

现在参考图7,示出了说明可使用本公开的实施例的系统700的框图。如图7所示,微处理器系统700是点对点互连系统,并且包括经由点对点互连750耦合的第一处理器770和第二处理器780。虽然显示仅有两个处理器770,780,但是应当理解,本公开的实施例的范围不限于此。在其它实施例中,在给定的处理器中可以存在一个或多个附加的处理器。在一个实施例中,多处理器系统700可以实现本文所述的混合核。

处理器770和780显示为分别包括集成的存储器控制器单元772和782。处理器770还包括点对点(P-P)接口776和778作为其总线控制器单元的部分;类似地,第二处理器780包括P-P接口786和788。处理器770,780可以利用P-P接口电路778,788经由点对点(P-P)接口750来交换信息。如图7所示,IMC 772和782将处理器与相应的存储器耦合,即存储器732和存储器734,存储器732和存储器734可以是本地地附接到相应的处理器的主存储器的部分。

处理器770,780可以各自利用点对点接口电路776,794,786,798经由单个的P-P接口752,754与芯片组790交换信息。芯片组790还可以经由高性能图形接口739与高性能图形电路738来交换信息。

共享高速缓存(未示出)可以包含在处理器中或者在两个处理器之外,而仍经由P-P互连与处理器连接,使得如果处理器被置于低功率模式则任意一个或两个处理器的本地高速缓存信息可以存储在共享高速缓存中。

芯片组790可以经由接口796与第一总线716耦合。在一个实施例中,第一总线716可以是外围组件互连(PCI)总线或者诸如PCI Express总线或另一第三代I/O互连总线的总线,但是本公开的范围不限于此。

如图7所示,各种I/O设备714可以连同总线桥718一起与第一总线716耦合,总线桥718将第一总线716与第二总线720耦合。在一个实施例中,第二总线720可以是低引脚计数(LPC)总线。在一个实施例中,各种设备可以与第二总线720耦合,包括例如键盘和/或鼠标722、通信设备727和存储单元728,诸如可包括指令/代码和数据730的磁盘驱动器或其它大容量存储设备。此外,音频I/O 724可以与第二总线720耦合。注意,其它架构是可能的。例如,不是图7的点对点架构,系统可以实现多分支总线或其它这样的架构。

现在参考图8,示出了系统800的框图,本公开的一个实施例可操作于该系统中。系统800可以包括一个或多个处理器810,815,这些处理器与图形存储器控制器中心(GMCH)820耦合。在图8中利用折线标示出附加的处理器815的可选性质。在一个实施例中,处理器810,815根据本公开的实施例实现混合核。

每个处理器810,815可以是如上文所述的电路、集成电路、处理器和/或硅集成电路的某个版本。然而,应当注意,集成图形逻辑和集成存储器控制器单元不可能存在于处理器810,815中。图8说明了GMCH 820可以与存储器840耦合,存储器840可以是例如动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可以与非易失性高速缓存相关联。

GMCH 820可以是芯片组或芯片组的部分。GMCH 820可以与处理器810,815通信且控制处理器810,815与存储器840之间的交互。GMCH 820还可以充当处理器810,815与系统800的其它元件之间的加速总线接口。对于至少一个实施例,GMCH 820经由多分支总线如前侧总线(FSB)895来与处理器810,815通信。

此外,GMCH 820与显示器845(例如,平板或触摸屏显示器)耦合。GMCH 820可以包括集成图形加速器。GMCH 820进一步与输入/输出(I/O)控制器中心(ICH)850耦合,其可以用于将各个外围设备与系统800耦合。在图8的实施例中例如示出了与ICH 850耦合的外部图形设备860,其可以是分立的图形设备,还示出了另一外围设备870。

可替代地,在系统800中还可以存在附加的或不同的处理器。例如,附加的处理器815可以包括与处理器810相同的附加的处理器、与处理器810异构或不对称的附加处理器、加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器。从包括架构的、微架构的、热的、功耗特性等的优点的度量谱方面看在处理器810,815之间存在多种差别。这些差别可以有效地将其自身显现为处理器810,815之间的不对称性和异构性。对于至少一个实施例,各个处理器810,815可以位于相同的芯片封装中。

现在参考图9,示出了本公开实施例可操作于其中的系统900的框图。图9示出了处理器970,980。在一个实施例中,处理器970,980可以实现上述的混合核。处理器970,980可以分别包括集成存储器和I/O控制逻辑(“CL”)972和982且能够分别经由点对点(P-P)接口978和988之间的点对点互连950彼此相互通信。处理器970,980各自通过如图所示的相应的P-P接口976至994和986至998经由点对点互连952和954与芯片组990通信。对于至少一个实施例,CL 972,982可以包括集成存储器控制器单元。CL 972,982可以包括I/O控制逻辑。如所描绘的,与CL 972,982和I/O设备914耦合的存储器932,934也与控制逻辑972,982耦合。旧有I/O设备915经由接口996与芯片组990耦合。

实施例可以多种不同的系统类型来实现。图10是根据本公开的实施例的SoC 1000的框图。虚线框是更先进的SoC上的可选特征。在图10中,互连单元1012与如下耦合:应用处理器1020,其包括一组一个或多个核1002A-N以及共享高速缓存单元1006;系统代理单元1010;总线控制器单元1016;集成存储器控制器单元1014;一组或一个或多个媒体处理器1018,其可以包括集成图形逻辑1008,用于提供静像和/或视频照相机功能的图像处理器1024,用于提供硬件音频加速的音频处理器1026,以及用于提供视频编码/译码加速的视频处理器1028;静态随机存取存储器(SRAM)单元1030;直接存储器访问(DMA)单元1032;以及用于与一个或多个外部显示器耦合的显示单元1040。在一个实施例中,存储器模块可以包含在集成存储器控制单元1014中。在另一实施例中,存储器模块可以包含在可用于访问和/或控制存储器的SoC 1000的一个或多个其它组件中。应用处理器1020可以包括用于实现在本文的实施例中所描述的混合核的存储地址预测器。

存储器层级包括在核、一组或一个或多个共享高速缓存单元1006和与一组集成存储器控制器单元1014耦合的外部存储器(未示出)内的一级或多级高速缓存。一组共享高速缓存单元1006可以包括一个或多个中级高速缓存,例如级2(L2)、级3(L3)、级4(L4)或其它级的高速缓存、最后级的高速缓存(LLC)和/或其组合。

在一些实施例中,核1002A-N中的一个或多个能够多线程。系统代理1010包括协调和操作核1002A-N的那些组件。系统代理单元1010可以包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括调节核1002A-N的功率状态所需的逻辑和组件以及集成图形逻辑1008。显示单元用于驱动一个或多个外部连接的显示器。

核1002A-N从架构和/或指令集方面看可以是同构的或异构的。例如,核1002A-N中的一些可以是有序的,而其它是无序的。作为另一示例,核1002A-N中的两个或更多个核能够执行相同的指令集,而其它核仅能够执行该指令集的子集或不同的指令集。

应用处理器1020可以是通用处理器,例如可以从加利福尼亚的圣塔克拉拉的IntelTM公司得到的CoreTM i3、i5、i7,2Duo和Quad,XeonTM、ItaniumTM、AtomTM或QuarkTM处理器。可替代地,应用处理器1020可以来自另一公司,例如ARM HoldingsTM有限公司,MIPSTM等。应用处理器1020可以是专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等。应用处理器1020可以实现在一个或多个芯片上。应用处理器1020可以是一个或多个衬底的部分和/或可以使用诸如例如BiCMOS、CMOS或NMOS的多种工艺技术中的任一种实现在一个或多个衬底上。

图11是根据本公开的片上系统(SoC)设计的实施例的框图。作为具体的示例性的示例,SoC 1100包含在用户设备(UE)中。在一个实施例中,UE是指任何由终端用户通信所使用的设备,例如手持式电话、智能手机、平板设备、超薄笔记本、带宽带适配器的笔记本或任何其它类似的通信设备。通常,UE连接到基站或节点,基站或节点可能本质上对应于GSM网络中的移动站(MS)。

此处,SOC 1100包括2个核,即1106和1107。核1106和1107可以符合指令集架构,例如基于Architecture CoreTM的处理器、Advanced Micro Devices公司(AMD)的处理器、基于MIPS的处理器、基于ARM的处理器设计、或其客户以及它们的持证者或采纳者。核1106和1107与高速缓存控制器1108耦合,高速缓存控制器1108与总线接口单元1109和L2高速缓存1110相关联以与系统1100的其它部分通信。互连1110包括片上互连,诸如IOSF、AMBA或上述其它互连,它们可能实现所描述的公开的一个或多个方面。在一个实施例中,核1106,1107可以实现如本文的实施例中所描述的混合核。

互连1110提供到其它组件的通信通道,诸如与SIM卡接合的用户身份模块(SIM)1130,保存引导代码以便由核1106和1107执行以初始化和引导SoC 1100的引导ROM 1135,与外部存储器(例如,DRAM 1160)接合的SDRAM控制器1140,与非易失性存储器(例如,闪存1165)接合的闪存控制器1145,与外围设备接合的外围控制器1150(例如,串行外围设备接口),显示和接收输入(例如,触摸使能输入)的视频编码译码器1120和视频接口1125、执行图形相关计算的GPU 1115等。这些接口中的任意接口可以并入本文所述的公开的方面。另外,系统1100示出了用于通信的外围设备,诸如蓝牙模块1170,3G调制解调器1175,GPS 1180和Wi-Fi 1185。

图12示出了呈计算机系统1200的示例形式的机器的图解表示,在该机器内可以执行用于使机器实施本文所述的方法中的任意一个或多个的一组指令。在可替代的实施例中,机器可以在LAN、内联网、外联网或因特网中与其它机器连接(例如,联网)。该机器可以操作于客户端-服务器网络环境中的服务器或客户端设备的容量中,或者作为对等(或分布式)网络环境中的对等机器。该机器可以是个人计算机(PC)、平板式PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web工具、服务器、网络路由器、交换机或桥接器、或任何能够执行规定该机器所要采取的动作的一组指令(顺序的或其它的)的机器。此外,虽然仅示出了单个机器,但是术语“机器”还应当被认为包含单独地或联合地执行一组(或多组)指令来实施本文所述的任意一个或多个方法的机器的任意集合。

计算机系统1200包括处理设备1202、主存储器1204(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)(诸如同步DRAM(SDRAM)或DRAM(RDRAM)等)、静态存储器1206(例如,闪存、静态随机存取存储器(SRAM)等)、以及数据存储设备1218,它们经由总线1230彼此通信。

处理设备1202表示一个或多个通用处理设备,诸如微处理器、中央处理单元等。更特别地,处理设备可以是复杂指令集计算(CISC)微处理器、精减指令集计算机(RISC)微处理器、极长指令字(VLIW)微处理器或实现其它指令集的处理器、或实现指令集的组合的处理器。处理设备1202还可以是一个或多个专用处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。在一个实施例中,处理设备1202可以包括一个或多个处理核。处理设备1202被配置成执行用于实施本文所述的操作和步骤的处理逻辑1226。在一个实施例中,处理设备1202与上文利用本公开的实施例所描述的结合图1所描述的处理器架构100相同。

计算机系统1200还可以包括与网络1220通信耦合的网络接口设备1208。计算机系统1200还可以包括视频显示单元1210(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母输入设备1212(例如,键盘)、光标控制设备1214(例如,鼠标)以及信号生成设备1216(例如,扬声器)。此外,计算机系统1200可以包括图形处理单元1222、视频处理单元1228和音频处理单元1232。

数据存储设备1218可以包括机器可访问存储介质1224,其中存储有实现本文所述的功能的任意一个或多个方法的软件1226,例如实现用于如上所述的存储器区分的存储地址预测的功能的任意一个或多个方法。在通过计算机系统1200执行期间,软件1226还可以完全地或者至少部分地位于主存储器1204内作为指令1226和/或位于处理设备1202内作为处理逻辑1226;主存储器1204和处理设备1202也构成机器可访问存储介质。

机器可读存储介质1224还可以用于存储实现根据本公开的实施例所描述的用于混合核的存储地址预测的指令1226。虽然在示例性实施例中机器可访问存储介质1128显示为单一介质,术语“机器可访问存储介质”应当被认为包含存储一组或多组指令的单个介质或多个介质(例如,集中式的或分布式的数据库,和/或相关联的高速缓存和服务器)。术语“机器可访问存储介质”还应当被认为包括能够存储一组指令、对一组指令编码或承载一组指令以便由机器执行且使机器实施本公开的任意一个或多个方法的任何介质。术语“机器可访问存储介质”因此应当被认为包含但不限于固态存储器以及光介质和磁介质。

下面的示例涉及进一步的实施例。示例1是一种处理器,包括:第一核,该第一核包括高速缓存,该高速缓存包括高速缓存线;第二核,该第二核包括第二高速缓存;以及高速缓存控制器,其将存储在第一高速缓存的高速缓存线的标记段中的标记设定成如下状态之一:响应于存储在所述第一高速缓存线中的数据由所述第二高速缓存共享而设定成处理器共享(PS)状态,或者响应于存储在所述第一高速缓存线中的数据由第二处理器的第三高速缓存共享而设定成全局共享(GS)状态。

在示例2中,示例1的主题可以任选地提供,所述第一核在第一核集群内,所述第二核在第二核集群内。

在示例3中,示例2的主题可以任选地提供,所述高速缓存控制器响应于判定出存储在所述高速缓存线中的数据由第三核的第四高速缓存共享而将所述标记设定成集群共享(CS)状态,并且其中所述第一核和所述第三核都在所述处理器的所述第一核集群内,并且其中存储在所述高速缓存线中的数据不被所述第二核或不被所述第二处理器共享。

在示例4中,示例1至3中任一示例的主题可以任选地提供,所述高速缓存控制器将所述标记设定成如下状态:响应于存储在所述高速缓存线中的数据是从存储在存储器中的数据的副本修改的而将所述标记设定成修改(M)状态,响应于判定出存储在所述高速缓存线中的数据未被另一高速缓存共享而将所述标记设定成独占(E)状态,或者响应于存储在高速缓存线中的数据是无效的而将所述标记设定成无效状态(I)。

在示例5中,示例1至3中任一示例的主题可以任选地提供,所述高速缓存线还包括存储所述数据的数据段和存储存储器的地址的标签段,在所述存储器的地址处存储有所述数据的对应副本。

在示例6中,示例4的主题可以任选地提供,所述高速缓存控制器:响应于针对存储在所述第一高速缓存的高速缓存线中的数据而检测到来自所述第三核的高速缓存命中,将所述高速缓存线的标记从独占状态设定成集群共享状态;响应于在所述处理器的第二核集群中检测到来自第四核的高速缓存命中,将所述高速缓存线的标记从所述独占状态或所述集群共享状态中的一个设定成所述处理器共享状态;以及响应于检测到来自所述第二处理器的高速缓存命中,将所述高速缓存线的标记从所述独占状态、所述集群共享状态或所述处理器共享状态中的一个设定成所述全局共享状态。

在示例7中,示例4的主题可以任选地提供,所述高速缓存控制器:响应于在存储在所述高速缓存线中的数据上检测到写命中,确定所述标记是哪个状态。

在示例8中,示例7的主题可以任选地提供,所述高速缓存控制器进一步:响应于判定出所述标记指示所述集群共享状态,将高速缓存无效请求发送到所述第一核集群的一个或多个高速缓存。

在示例9中,示例8的主题可以任选地提供,所述高速缓存无效请求仅发送到所述第一核集群内的一个或多个高速缓存,并且其中所述高速缓存控制器将所述高速缓存无效请求在所述处理器的核间互连上发送。

在示例10中,示例9的主题可以任选地提供,所述高速缓存控制器:响应于判定所述标记指示所述处理器共享状态,将高速缓存无效请求发送到所述处理器的一个或多个高速缓存。

在示例11中,示例10的主题可以任选地提供,所述高速缓存无效请求仅发送到所述处理器内的高速缓存,并且其中所述高速缓存控制器将所述高速缓存无效请求在所述处理器的集群间互连上发送。

在示例12中,示例7的主题可以任选地提供,所述高速缓存控制器:响应于判定所述标记指示所述全局共享状态,将高速缓存无效请求发送到所述处理器和所述第二处理器中的一个或多个高速缓存。

在示例13中,示例12的主题可以任选地提供,所述高速缓存控制器将所述高速缓存无效请求在耦合在所述第一处理器与所述第二处理器之间的处理器间互连上发送。

示例14是一种片上系统(SoC),包括:存储器;以及第一处理器。该第一处理器包括:第一核集群,其包括第一核和第二核,所述第一核包括第一高速缓存,所述第二核包括第二高速缓存;以及高速缓存控制器,其将存储在所述第一高速缓存的高速缓存线的标记段中的标记设定成如下状态之一:响应于存储在所述高速缓存线中的数据由所述第二高速缓存共享而设定成集群共享(CS)状态,或响应于存储在所述高速缓存线中的数据由所述SoC的第二处理器的第三高速缓存共享而设定成全局共享(GS)状态。

在示例15中,示例14的主题可以任选地提供,所述高速缓存控制器响应于存储在所述高速缓存线中的数据由所述第一处理器的第二核集群中的第四高速缓存共享而将所述高速缓存线的标记设定成处理器共享(PS)状态,并且其中所述数据不被所述第二处理器共享。

在示例16中,示例14和15中的任一示例的主题可以任选地提供,所述高速缓存线还包括存储数据的数据段和存储所述存储器的地址的标签段,在所述存储器的地址处存储有所述数据的副本。

示例17包括一种方法,包括:通过高速缓存控制器接收读存储在驻存于第一处理器的第一核集群中的第一核的第一高速缓存的高速缓存线中的数据项的请求;响应于判定所述请求的请求者与所述第一核集群相关联且存储在标记段中的标记对所述第一高速缓存是独占状态,将存储在所述高速缓存线的标记段中的标记设定成集群共享;以及响应于判定所述请求者与所述第一处理器的第二核集群相关联且存储在所述标记段中的状态是所述独占状态或所述集群共享状态中的一个,将存储在所述高速缓存线的所述标记段中的标记设定成处理器共享状态。

在示例18中,示例17的主题可以进一步包括:响应于判定所述请求者在第二处理器中,将存储在所述高速缓存线的所述标记段中的标记设定成全局共享状态。

在示例19中,示例17和18中的任一示例的主题可以进一步包括:将来自第一高速缓存的数据发送到所述请求者。

在示例20中,示例17和18中的任一示例的主题可以进一步包括:接收将数据项写入所述高速缓存线的请求;判定存储在所述高速缓存线的所述标记段中的标记;响应于判定所述标记是所述集群共享状态,则将高速缓存无效请求发送到所述第一核集群的一个或多个高速缓存且抑制将所述高速缓存无效请求发送到所述第一核集群之外;以及响应于判定所述标记是所述处理器共享状态,将所述高速缓存无效请求发送到所述第一处理器的一个或多个高速缓存,但是抑制将所述高速缓存无效请求发送到所述第一处理器之外的高速缓存。

示例21包括一种装置,包括:用于执行示例17至18中的任一项所述的方法的单元。

示例22包括一种机器可读非暂态介质,其中存储有程序代码,当被执行时,所述程序代码实施操作。所述操作包括:通过高速缓存控制器接收读存储在驻存于第一处理器的第一核集群中的第一核的第一高速缓存的高速缓存线中的数据项的请求;响应于判定所述请求的请求者与所述第一核集群相关联且存储在标记段中的标记对所述第一高速缓存是独占状态,将存储在所述高速缓存线的标记段中的标记设定成集群共享;以及响应于判定所述请求者与所述第一处理器的第二核集群相关联且存储在所述标记段中的状态是所述独占状态或所述集群共享状态中的一个,将存储在所述高速缓存线的所述标记段中的标记设定成处理器共享状态。

在示例23中,示例22的主题可任选地提供,所述操作包括:响应于判定所述请求者在第二处理器中,将存储在所述高速缓存线的标记段中的标记设定成全局共享状态。

在示例24中,示例22和23中的任一示例的主题可以任选地提供,所述操作包括:将来自第一高速缓存的数据发送到所述请求者。

在示例24中,示例22和23中的任一示例的主题可以任选地提供,所述操作包括:接收将数据项写入所述高速缓存线的请求;判定存储在所述高速缓存线的所述标记段中的标记;响应于判定所述标记是所述集群共享状态,则将高速缓存无效请求发送到所述第一核集群的一个或多个高速缓存且抑制将所述高速缓存无效请求发送到所述第一核集群之外;以及响应于判定所述标记是所述处理器共享状态,将所述高速缓存无效请求发送到所述第一处理器的一个或多个高速缓存,但是抑制将所述高速缓存无效请求发送到所述第一处理器之外的高速缓存。

虽然已经结合有限数量的实施例描述了本公开,本领域技术人员将从中意识到若干的修改例和变型例。目的在于,随附的权利要求涵盖落入本公开的真正的主旨和范围内的所有这样的修改例和变型例。

设计可以经历多个阶段,从创建到仿真到制造。表示设计的数据可以多种方式来表示设计。首先,如仿真中有用,硬件可利用硬件描述语言或另一功能描述语言来表示。另外,可以在设计过程的一些阶段中产生具有逻辑和/或晶体管栅的电路级模型。此外,大部分设计在某阶段达到表示硬件模型中各设备的物理放置的数据级。在使用常规的半导体制作技术的情况下,表示硬件模型的数据可以是规定在用于生产集成电路的掩模上不同的掩模层上的各特征的存在或不存在的数据。在设计的任何表示中,数据可以机器可读介质的任意形式来存储。例如磁盘的存储器或磁或光存储可以是存储经由光或电波传输的信息的机器可读介质,所述光或电波经调制或以其它方式生成而传输该信息。当指示或承载代码或设计的电载波被传输时,在执行电信号的复制、缓冲或重新传输的程度上,做出新的副本。因此,通信提供商或网络提供商可以至少暂时地将诸如编码到载波中的信息的、具体体现本公开的实施例的技术的物品存储在有形的机器可读介质上。

本文所使用的模块是指硬件、软件和/或固件的任意组合。作为示例,模块包括硬件,例如微控制器,其与非暂态介质相关联以存储适于由微控制器执行的代码。因此,在一个实施例中提到模块是指硬件,其具体地被配置成识别和/或执行待保存于非暂态介质上的代码。此外,在另一实施例中,模块的使用是指包含代码的非暂态介质,该代码具体地适于由微控制器执行以实施预定操作。并且,能够推导出,在又一实施例中,术语模块(在该示例中)可以是指微控制器和非暂态介质的组合。通常,被图示为分离的模块边界通常变化且可能重叠。例如,第一模块和第二模块可以共用硬件、软件、固件或其组合,而可能保持某些独立的硬件、软件、或固件。在一个实施例中,术语逻辑的使用包括硬件,例如晶体管、寄存器、或其它硬件,例如可编程逻辑器件。

措辞‘被配置成’的使用在一个实施例中是指排列、放在一起、制造、供销售、进口和/或设计实施指定的或确定的任务的装置、硬件、逻辑或元件。在该示例中,没有操作的装置或其元件仍‘被配置成’实施指定的任务,如果其被设计、耦合和/或互连以实施所述指定的任务。作为纯说明性的示例,逻辑门可以在操作期间提供0或1。但是,‘被配置成’提供启用信号给时钟的逻辑门不包括可提供1或0的每一个可能的逻辑门。相反,逻辑门是以操作期间输出1或0而启用时钟的某种方式耦合的逻辑门。还要注意,术语‘被配置成’的使用不需要操作,而是集中于装置、硬件和/或元件的潜在状态,其中在该潜在状态下,装置、硬件和/或元件设计成当所述装置、硬件和/或元件正在操作时实施特定的任务。

此外,在一个实施例中,措辞‘以’、‘能够/以’和或‘能操作来’的使用是指一些装置、逻辑、硬件和/或元件以使能按规定方式使用装置、逻辑、硬件和/或元件的方式进行设计。注意,如上文所述,以、能够或能操作来的使用在一个实施例中是指装置、逻辑、硬件和/或元件的潜在状态,其中装置、逻辑、硬件和/或元件没有操作,但是以使得能够按规定方式使用装置的方式进行设计。

如本文所使用的值包含了数量、状态、逻辑状态或二进制逻辑状态的任何已知的表示。通常,逻辑电平、逻辑值或逻辑上的值的使用还称为1和0,这简单地表示了二进制逻辑状态。例如,1是指高逻辑电平,0是指低逻辑电平。在一个实施例中,存储单元,例如晶体管或闪存单元,能够保存单逻辑值或多个逻辑值。然而,已经使用了计算机系统中值的其它表示。例如,十进制数字十还可以表示为二进制值910和十六进制字母A。因此,值包含了能够被保存在计算机系统中的信息的任意表示。

而且,状态可由值或值的部分来表示。作为示例,诸如逻辑一的第一值可以表示缺省或初始状态,而诸如逻辑零的第二值可以表示非缺省状态。另外,术语复位和置位在一个实施例中分别是指缺省和更新的值或状态。例如,缺省值可能包含高逻辑值,即,复位,而更新的值可能包含低逻辑值,即,置位。注意,值的任意组合可用来表示任意数量的状态。

上文阐述的方法、硬件、软件、固件或代码的实施例可经由存储在能够由处理元件执行的机器可访问、机器可读、计算机可访问或计算机可读介质上的指令或代码来实现。非暂态性的机器可访问/可读介质包括以诸如计算机或电子系统的机器能读的形式提供(即,存储和/或发送)信息的任意机制。例如,非暂态性的机器可访问介质包括随机存取存储器(RAM),例如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪速存储器设备;电存储设备;光存储设备;声学存储设备;其它形式的用来保存接收自暂态性的(或传播的)信号(例如,载波、红外信号、数字信号)的信息的存储设备;等等,它们区别于可接收来自它们的信息的非暂态性的介质。

用于对逻辑编程以实施本公开的实施例的指令可以存储在系统中的存储器内,例如DRAM、高速缓存、闪速存储器或其它存储。此外,指令可以经由网络分布或者通过其它计算机可读介质来分布。因此,机器可读介质可以包括用于存储或传输呈机器(例如,计算机)能读的形式的信息的任意机制,但不限于,软盘、光盘、压缩盘只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器或在因特网上经由电、光、声或其它形式的传播信号(例如,载波、红外信号、数字信号等)进行信息传输时所使用的有形的机器可读存储设备。因此,计算机可读介质包括适合于存储或传输机器(例如,计算机)能读的形式的电子指令或信息的任何类型的有形机器可读介质。

在本说明书通篇提到“一个实施例”或“实施例”意指与该实施例相结合所描述的特定的特征、结构或特性包含在本公开的至少一个实施例中。因此,在本说明书中各处出现措辞“在一个实施例”或“在实施例中”不一定都是指同一实施例。此外,该特定的特征、结构或特性可以任何适合的方式结合在一个或多个实施例中。

在上述说明书中,已经参考具体的示范性的实施例给出了详细说明。然而,显然可以对其进行各种修改和改动而不偏离如随附的权利要求中所阐明的公开的更宽泛的主旨和范围。说明书和附图因此应在说明性的含义而不是限制的含义上考量。此外,实施例和其它示范性的语言的上述使用不一定是指同一实施例或同一示例,而是可以是指不同的且有区别的实施例,以及可能相同的实施例。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1