CN108292268A - 用于分布式一致性存储器的系统、方法和设备 - Google Patents

用于分布式一致性存储器的系统、方法和设备 Download PDF

Info

Publication number
CN108292268A
CN108292268A CN201680069648.1A CN201680069648A CN108292268A CN 108292268 A CN108292268 A CN 108292268A CN 201680069648 A CN201680069648 A CN 201680069648A CN 108292268 A CN108292268 A CN 108292268A
Authority
CN
China
Prior art keywords
core
instruction
equipment
memory
processor
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
CN201680069648.1A
Other languages
English (en)
Other versions
CN108292268B (zh
Inventor
F.圭姆伯纳特
N.兰加纳坦
K.库马尔
R.K.拉马努詹
R.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 CN108292268A publication Critical patent/CN108292268A/zh
Application granted granted Critical
Publication of CN108292268B publication Critical patent/CN108292268B/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/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
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/314In storage network, e.g. network attached cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

用于分布式一致性存储器的系统、方法和设备。在一些实施例中,该设备包括:至少一个监测电路,用于监测对地址空间的存储器访问;至少一个监测表,用于存储地址空间的标识符;以及至少一个硬件核,用于运行指令以能够实现监测电路。

Description

用于分布式一致性存储器的系统、方法和设备
技术领域
本发明的领域一般涉及计算机处理器架构,以及更特定地涉及在被运行时引起具体结果的指令。
背景技术
对指令集架构(ISA)的扩展提供用于软件的接口以与事务存储器(TM)支持配合工作。基本目标是通过提供硬件方案来加速多线程工作负荷,所述硬件方案使这些工作负荷经过锁省略来运行某一组操作。TM的商业示例是硬件锁省略(HLE)和受限事务存储器(RTM)。
HLE扩展添加两个新指令前缀、XACQUIRE和XRELEASE。基本概念在于,线程运行XACQUIRE、指令加XRELEASE的任意流。在逻辑上,这个段能够被看作是“lock();Instructions();unlock()”。即使一个线程可正运行这个段,其他线程也将这个段看作是空闲的。在由处理器检测到违反(表示其他线程进入临界段)的情况下,进行中事务被中止,并且线程从XACQUIRE重新开始指令流。在没有检测到违反的情况下运行XRELEASE之后提交所有指令。
TSX是一种用于改进软件系统(其密集地线程化访问较小但频繁共享的地址和代码流)的良好的基于硬件的解决方案。然而,这个机制被应用在一致域(即,经过UPI连接的多套接字系统)内。随着数据集的量增加,诸如数据库的事务软件需要能够通过高速互连(诸如结构)来在若干共享存储器系统上操作。可存在经由互连所连接的这些系统的若干个10s,并且它们将跨越不同的一致域(域能是单个系统或者一组系统)。
附图说明
在附图的图中通过举例而不是限制的方式来示出本发明,其中相似参考标号指示类似元件,并且其中:
图1示出支持远程监测的系统的一实施例;
图2示出标签目录的一实施例;
图3示出smonitor的使用的示范实施例;
图4示出用于操控远程监测违反的两个实施例;
图5示出接收侧上的smonitor的使用的示范实施例;
图6示出接收侧的srelease的使用的示范实施例;
图7示出使用smonitor和srelease的初始化和终止化流程的一示例;
图8示出用于由不请求监测器的核(非始发核)来操控冲突的方法的一实施例;
图9示出操控冲突的一示例。在这个示例中,建立(smonitor)已经发生;
图10示出事务存储器监测器的使用的示范实施例;
图11示出用于扩展对事务的监测的方法的一实施例
图12示出用于在接收器节点代理的事务监测的方法的一实施例;
图13示出对于事务的监测的扩展的一示例;
图14示出用于由处理核来处理监测指令的方法的一实施例;
图15是按照本发明的一个实施例的寄存器架构的框图;
图16A是示出按照本发明的实施例、示范有序管线和示范寄存器重命名、乱序发出/运行管线的框图。
图16B是示出按照本发明的实施例、包括在处理器中的有序架构核和示范寄存器重命名、无序发出/运行架构核的框图;
图17A-B示出更特定的示范有序核架构的框图,该核是芯片中的若干逻辑块(包括相同类型和/或不同类型的其他核)中的一个;
图18是按照本发明的实施例、可具有多于一个核、可具有集成存储器控制器并且可具有集成图形的框图;
图19-22是示范计算机架构的框图;以及
图23是按照本发明的实施例、对照用于将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用相的框图。
具体实施方式
在以下描述中,阐明了许多特定细节。然而要理解,本发明的实施例可在没有这些特定细节的情况下被实践。在其他实例中,没有详细示出公知的电路、结构和技术,以便不影响本描述的理解。
说明书中对“一个实施例”、“一实施例”、“示例实施例”等的引用指示所描述的实施例可包括具体特征、结构或特性,但每一个实施例可不一定包括该具体特征、结构或特性。此外,这类词语不一定指的是相同实施例。另外,在结合一实施例来描述具体特征、结构或特性时,认为的是,无论是否明确描述,结合其他实施例来影响此类特征、结构或特性是在本领域的技术人员的知识范围之内的。
本文详述硬件及其用于实现远程地址访问监测的使用的方法的实施例。图1示出支持远程监测的系统的一实施例。典型套接字101包括多个处理器核105、管芯上互连硬件113和结构接口111。远程监测可在节点中内套接字到套接字(经过一致管芯上互连113)或者使用结构交换机和结构接口111在节点之间进行。照此,取决于监测请求正针对的地址空间,请求可转到相同节点的本地存储器,它们可转到管芯上互连113以将请求路由到相同一致域中的其他处理器,或者它们可通过主结构接口(HFI)111来转到处理器(其处于一致域之外)。一个系统能够由所有一致域通过结构互连被连接的一个或多个一致域来组成。例如,高性能计算或数据中心由能够使用结构相互通信的N个集群或服务器来组成。使用结构,每个一致域能够向其他一致域暴露一些地址区域。然而,不同的一致域之间的访问不是一致的。在大多数实例中,结构允许不同的一致域之间的存储器范围的映射地址。
节点通常还具有高速缓存代理器和/或归属代理器115。高速缓存代理器是节点中的一致性代理器,其处理来自相同节点内的核的存储器请求。归属代理器(HA)是节点集群,其负责处理来自高速缓存代理器的存储器请求,并且充当存储器地址空间的部分的归属(一个管芯能够具有多个归属,其具有分布式地址空间映射)。在这个图示中,存在每套接字一个归属代理器115,然而,在一些实施例中,存在每节点一个归属代理器。另外,在一些实施例中,归属代理器的功能性被包括在高速缓存代理器中,并且被称作高速缓存归属代理器(CHA),如被示为109的。遍及本描述,CHA通常被用于便于描述。
高速缓存代理器(例如CHA 109)是可启动到一致存储器中的事务并且可在其自己的高速缓存结构中保留副本的实体。高速缓存代理通过它可按照高速缓存一致协议中定义的行为来收和发(sink and source)的消息被定义。高速缓存代理器还能够向其他高速缓存代理器提供一致存储器内容的副本。归属代理器(例如CHA 109或归属代理器115)是服务一致事务(包括在必要时与高速缓存代理器握手)的实体。归属代理器监督一致存储器的一部分。归属代理负责管理不同高速缓存代理器之间可能发生的冲突。它提供如给定事务的流所要求的适当数据和所有权响应。
另外,归属代理器包括分布式目录,其具有对于存储器地址的以下状态:干净(这是唯一副本,例如被刚回写的线)、任意(节点内的任何远程套接字可具有副本)和无效(本地套接字的高速缓存具有副本)。附加状态(远程)指示远程节点已请求了副本并且在对于该线的请求从结构始发时可已经更新和可被更新。
对添加监测方案的一个逻辑位置是节点内部的归属代理器,并且在一些实施例中,就是那样。然而,当分布式方案映射HA中的地址空间(节点控制器、哈希方案、半球、象限方案等)时,这可在设计、区域和验证方面增加过多复杂度。照此,在一些实施例中,此监测信息作为监测表(MT)103被保持:1)在对节点的代理中,其将来自其他节点的任何存储器事务隧道传递给归属节点(结构接口111),2)节点105内部的核,以及3)独特代理器,其能够无需经过代理(管芯上互连113)而访问本地存储器,以标识访问。此表由监测器电路(未示出)使用,监测器电路跟踪存储器/高速缓存访问,将那些访问与表进行比较,并警告始发核关于所请求的任何访问。
在一些实施例中,分布式存储器监测方案允许核在归属节点注册,以监测感兴趣地址范围。监测方案允许发现给定线(其由系统中的其他高速缓存代理器所访问)何时落入所指定地址范围内;相应地,它更新对于给定范围的共享方的有效比特。请求对于地址范围的跟踪的核使用标签目录结构107来表示集群中的套接字,其有权访问特定的地址范围,并且由核用于跟踪/监测地址范围。
此目录在两个方面是不完美的标签目录。首先,给定整个系统能够具有极大地址空间,不同地址能够匹配在相同标签条目中(以下进行说明)。其次,共享方的远程跟踪信息中的每个比特(例如比特掩码或布隆过滤器)对应于系统中的一组高速缓存代理器。与每核的标签目录关联的过滤硬件对集合中的测试包体执行布隆或另一过滤。
图2示出标签目录的一实施例。标签目录201中的条目包括用于跟踪大小粒度203、地址哈希205、跟踪粒度207和远程共享方信息209的字段。
跟踪大小203和跟踪粒度207能够通过mcoherent调用来提供(如以上详述的)。照此,目录中的行的数量能够使用页级或者超大页级跟踪代替高速缓存线跟踪来减少。
作为简化示例,假定8个节点(每个2个套接字)的假设集群,并且考虑各节点仅具有4MB的存储器(每64B有65K线)。现在在查找目录中存在65K个行条目,各对应于节点中的线。在这种情形中,16比特的比特掩码准确地跟踪已经从这个节点请求了存储器的套接字。然而,实际上,系统具有要大许多的存储器,并且对于查找目录的空间要求能够很快会变得不能实行。由于这个原因,目录是不完美的。
节点209的布隆过滤或节点编或者子集代替比特掩码以减少目录的空间复杂度。
为了提供可缩放性,在一些实施例中,高速缓存线地址205使用哈希函数H()来哈希到目录中的行上,要注意,行的数量少于高速缓存线的数量。H()的良好选择能够导致更少冲突,例如,使用高速缓存线地址的低阶比特确保哈希函数的良好分布。要注意,具有冲突并不是意味着正确性的任何损失;它仅指示潜在误报(false positive):由于两个高速缓存线映射到目录中的相同行,所以我们将最终探查对于两个高速缓存线的“远程节点”的并集。
通过良好哈希函数的选择,以及分布式目录比特的使用(只在对于高速缓存线的分布式目录比特比方说是“远程”时才需要参考标签目录),误报的概率变小。同时,要求探查的节点的数量显著减少。如先前提及的,通过改变哈希的粒度并且基于由应用所指定的提示使用布隆过滤器跟踪代替比特掩码,进一步折衷是可能的。
软件具有基于与srelease(本文详述)的使用来重置与查找目录中的存储器区域对应的条目的能力,并且这确保目录的误报的数量没有随时间推移而单调增大(因为基于布隆过滤器的方式随着过滤器变得完全被装载时变得不太有效(记住它仅确定地告知某物是否不存在)并且这减少搜索空间)。另外,在一致性需要被增强时的点,软件能够参考目录结构,并且显式发出远程探查、回写或作废命令。
每个代理和核能够含有固定数量的监测器,并且各监测器含有地址范围和请求监测器的原始归属。如果监测器中不存在空闲条目,则那个监测请求失败。如果正被请求的地址范围与另一个监测实体重叠,则请求也将失败。在失败的情况下,失败响应被发送回给始发方结构,并且它被传递给软件栈。最后,软件在失败的情况下被通知,并且它需要采取对应动作。用于将失败传播到软件栈的不同方式能够是从核对软件栈发出回调。
为了允许监测由给定核正监测的给定地址范围,在一些实施例中,由处理器核支持用于监测器初始化(smonitor)和监测器释放(srelease)的指令和消息。这些指令提供新接口,其允许软件线程指定给定指令集绑定到对某个存储器范围的特定类型的访问。由所指定模式中的任何其他线程(在一致域之中或之外)所执行的对这个地址空间的任何访问将被自动通知给软件栈。从这点来看,软件栈是负责采取特定动作(例如,重新开始被监测对象的副本)的那个。
smonitor和srelease指令的一实施例为:
SMONITOR 基地址,粒度,模式,大小
SRELEASE
SMONITOR的语义如下:线程提供基地址、需要被监测的地址空间的粒度、监测模式和大小。粒度能够是例如高速缓存线、存储器线、KB、MB或GB(例如编码为0、1、2、3、4)。大小指定需要被监测的粒度空间的倍数。模式指定哪种类型的违反是正被监测的、读(R)或写(W)(例如,W模式将暗示线程将在地址区域采用写操作被访问时被通知)。以下示例示出将事务中的指令绑定到与[300000, 300000+4MB]对应的地址空间的方式,但仅在写模式中(对于此示例,假定节点A中的核X正运行这个指令):SMONITOR 300000, 3, W, 4。SMONITOR的运行促使SMONITOR消息从启动(始发)核被发送给其本地高速缓存代理器,以传播到远程核等,以建立监测(例如,监测器表)。在一些实施例中,还设置对于运行核的监测表(例如,当监测表中的信息跨节点中的核、代理等被复制时)。
SRELEASE的运行停止监测器,并且移除关联的监测器表。
图3示出smonitor的使用的示范实施例。在301,第一节点中的第一核(始发核)运行smonitor指令。例如,在图1中,核0 105运行smonitor指令。
在303,此运行促使监测请求(smonitor消息)从第一核被发送给其对应高速缓存代理器。此请求包括来自指令的信息(基地址、粒度、大小和模式)。高速缓存代理器管理基线地址,以建立所请求监测器。此高速缓存代理器根据实现与归属代理器分开。例如,在图1中,核105向CHA 109(组合高速缓存和归属代理器)发送请求。换言之,核警告高速缓存代理器关于它想要监测的地址(AS)[基地址对基地址+粒度*大小]和监测的类型(写/读)。
在305,在一些实施例中,高速缓存代理器标识负责管理请求的本地域归属代理器。例如,负责基地址的归属代理器。要注意,所标识的归属代理器可如以上详述的被组合在与高速缓存代理相同的实体(CHA)中。
在307,所标识的归属代理器标识系统中的什么节点是对于核(线程)想要监测的地址空间(它能够是本地一致域)的归属。
一旦对于地址区域的归属被标识,在309,向代理(在图1的图示中是结构111或管芯上互连113)发送请求,以建立归属节点中的监测器。换言之,在309,监测消息代理连接(smonitor消息)从所标识的归属代理被发送给远程节点(其是地址空间的归属)。要注意,节点能够属于不同的一致域并且使用结构,或者它可处于相同一致域内。在那种情况下,代理将是管芯上互连。
在311,来自代理连接的与监测器的注册的成功或失败有关的响应由始发核接收。哪些事物可引起失败的示例包括但不限于重叠地址空间、无空闲监测器空间和硬件故障。如果监测器是成功的,则更新对于核的标签目录。另外,在大多数实施例中,关于被配置的一个或多个监测器的确认,监测表跨套接字中的全部代理被更新。
在注册之后,在一些实施例中,在313,接收关于对被监测地址空间的事务的违反的通知。例如,远程监测器处理对被监测地址的写。这可由核或代理来接收。图4示出用于操控远程监测违反的两个实施例。在401,由核接收违反通知。在403,这促使核生成用户中断。
备选地,在405,由核接收违反通知。在409,这促使核通知软件栈。在任一种情况下,软件栈负责采取恰当动作以解决失败。
在成功的情况下(其中所有不同的操作被运行而没有违反请求核),在313,监测器释放(撤消注册)从第一核被发送给监测代理。例如,核运行srelease指令以释放监测器,并且一旦运行释放指令,核向远程代理(在此示例中,套接字B的HFI)通知释放。代理将释放通知传播到核和对于这个监测器的实际归属。
图5示出接收侧上的smonitor的使用的示范实施例。在501,接收节点的代理接收用于开启监测器的请求。换言之,在远程节点(其是地址空间的归属)接收监测消息代理连接(smonitor消息)。要注意,节点能够属于不同的一致域并且使用结构,或者它可处于相同一致域内。在那种情况下,代理将是管芯上互连。
在503,此请求被发送给核和代理。
在505,与请求有关的来自核和代理的确认由接收代理(例如结构)接收。例如,监测器是否成功建立。这些确认通常包括响应方的标识符。
这些确认由代理处理到单个确认中,其在507被发送给始发核。对始发核的确认包括监测正在哪里发生的标识符。
图6示出接收侧上的srelease的使用的示范实施例。在601,接收节点的代理接收用于释放监测器的请求。换言之,在远程节点(在309,其是地址空间的归属)接收监测消息代理连接(srelease消息)。要注意,节点能够属于不同的一致域并且使用结构,或者它可处于相同一致域内。在那种情况下,代理将是管芯上互连。
在603,此请求被发送给核和代理,诸如管芯上互连。
在605,与请求有关的来自核和代理的确认由接收代理(例如结构)接收。这些确认通常包括响应方的标识符。
这些确认由代理处理到单个确认中,其在607被发送给始发核。对始发核的确认包括监测正在哪里发生的标识符。
图7示出使用smonitor和srelease的初始化和终止化流程的示例。启动核701解码和运行smonitor指令。例如,核701上的线程运行smonitor指令。此指令提供基地址、要监测空间的粒度(例如存储器线、KB、MB或GB)、大小和模式。
节点A中的核701向管理基线地址的本地高速缓存代理器(CHA:CA+HA)发送请求,以便建立监测器。核701通知CHA关于它想要监测地址空间(AS),其中AS=[@基地址对基地址+粒度*大小]。
CHA 703标识所指定存储器区域被映射到什么归属(诸如套接字)。在一些实施例中,如果区域属于若干归属,则中止指令。CHA 703标识本地一致域中的什么归属代理器负责管理请求的地址(基地址)。归属代理器(CHA 703)标识系统中的什么节点(套接字)是对于线程想要监测的地址空间(它能够是本地一致域)的归属。
CHA 703发送监测消息代理连接结构707以发送给充当对于AS的归属的远程节点。在目标侧上,代理生成多播消息,其针对包括对套接字的代理,套接字诸如节点717中的任何管芯上互连代理器、和节点中的任何结构互连代理器709以及归属套接字中的全部核711和715。
全部目标目的地采用确认消息来响应与监测器的注册有关的成功或失败。通常,响应将由接收监测请求的归属节点中的代理(在这个示例中是结构709)来折叠(collapse)。在失败的情况下,它将通知传播到请求方,并且将取消对归属节点内部的其余对等体的注册。
假如任何代理代理器或核标识对地址空间违反所请求监测的AS的事务,则它们将向核701发送通知它关于违反的违反消息。核701将违反传播到用户空间。
在不存在问题或者已存在被检测的违反时,核701将在sreease指令被解码和运行时发送撤消注册消息,来警告代理关于核不再需要在AS上的监测。一旦运行释放指令,核向远程代理(结构709)通知释放。代理709将释放通知传播到核和对于此监测器的实际归属。要注意,核701知道代理标识符,因为先前详述的注册过程中接收的确认的原因。
如在以上暗示的,可存在由监测器检测到冲突的时间。例如,在初始化(在图3的第一部分详述为smonitor的操控)之后,始发核可发出要在远程节点中被操控的远程读或写操作到以始发核的名义正被监测的地址空间内。这将不会引起冲突。然而,当不同实体(例如另一个核)向监测器空间发出写操作时,则冲突已经发生。进行此检测的实体是促使访问发生的实体。此实体检查监测器表的其副本(例如使用其监测器电路)以查看访问的存储器地址是否与监测器关联。进行冲突访问的实体向始发核发送访问的通知。通知可以是基于结构或互连的,这取决于实体的配置。始发核然后如先前详述来操控违反。要注意,监测期间的所有指令通常随着它们被运行而被提交。
图8示出用于由不请求监测器的核(非始发核)来操控冲突的方法的一实施例。在801,非始发核写或读(访问)存储器或高速缓存地址。
在803,如下确定被做出:访问是对被监测地址并且属于正被监测访问的类型。例如,对被监测地址空间中的地址的写(访问类型)的确定被做出。当然,对未被监测地址的访问或者对正被监测的地址但是不属于正被监测的类型的访问不引起冲突。
在805,非始发核向请求监测器的核发送违反通知。此通知可经过结构或互连接口,取决于核是如何被布置的。
图9示出操控冲突的示例。在此示例中,建立(smonitor)已经发生。另外,若干远程读(RdCur和MemRd)已经发生,并且数据在没有任何冲突的情况下返回(Data_Cmp)。但是,核915对被监测空间进行写,这是违反。核915然后经过其结构接口909向始发核901发送通知。代理909将通知传播到始发核901以供它进行操控。在通知之后,通常不需要监测器,并且始发核触发监测器的释放(mrelease)。
以上的远程监测论述还可适用于事务存储器(TM)/硬件锁省略(HLE)。如以上详述的,在HLE中,基本概念在于,线程运行指令以描绘事务的开始(例如XBEGIN或XACQUIRE),运行事务的任意指令流,并且然后在事务结束时(例如在结束诸如XRELEASE或XEND之类的事务的运行时)提交事务的指令。在逻辑上,这个段能够被看作是“lock();Instructions();unlock()”。即使一个线程可正运行这个段,其他线程也将这个段看作是空闲的。由处理器检测违反(意思是其他线程进入临界段),进行中事务被中止,并且线程从开始描绘指令重新开始指令流。在释放指令没有检测到违反的情况下被运行之后提交所有指令。HLE是用于改进软件系统(其密集地线程化访问较小但频繁共享的地址和代码流)的良好的基于硬件的解决方案。在这个机制在带有增大的数据集的量的一致域(例如经过管芯上互连所连接的多套接字系统)中被应用时,诸如数据库的事务软件将需要能够通过高速互连(诸如,结构)来在若干共享的存储器系统上操作。可存在经由互连所连接的数十个这些系统,并且它们将跨越不同的一致域(域能是单个系统或者一组系统)。
通过基于由应用所指定的条件来将操作的运行绑定在所指定地址范围上,HLE功能性可扩展到通过高速互连所连接的共享存储器系统。所指定地址范围能够是一致域本地的或者映射到远程地址空间。
HLE能够通过使应用指定存储器区域来被扩展;假如相同或远程一致域中的任何其他硬件线程访问这个存储器区域使得存在数据冲突,则应用将被通知关于违反已经发生以及在哪个准确的存储器位置发生。检测对存储器的特定范围的访问何时在指令集之间发生能够通过在系统的恰当位置注册监测器来进行。存储器监测能够跨数据中心中的所有服务器平台(其能够经由一致协议或者经由结构互连来连接)发生。例如,服务器A中的一个线程想要从服务器B复制对象。在这种情况下,没有使用锁定方案。然而,对象在复制的中间已被系统中的任何其他线程修改的情况下,服务器A中的线程将被通知。在接收通知时要采取的动作留给应用软件。另外,所有或没有提交的传统事务存储器运行被使用。事务内部的存储器指令全被提交或者在违反的情况下它们中没有一个被提交。
存在这个HLE扩展中能发生的三种基本情形。首先,地址空间由所指定模式中的其他代理器来访问。那将暗示事务已经被违反。其次,没有进行访问。那将暗示已经成功运行xmonitor。最后,任何其他类型的失败发生。例如,远程节点失败或者超时发生。在错误时,与smonitor的注册失败相似,始发核将触发用户中断以通知所发生错误。在这一点上,软件栈负责采取恰当动作以解决失败。
与非HLE方式不同,由任何其他线程(一致域之中或之外)执行的对地址空间的任何访问将重新开始指令流。所提出特征将是先前所论述内容的扩展。
按照一实施例,HLE中的监测经过两个指令来提供。
SXACQUIRE 基地址,粒度,模式,大小
SXRELEASE
SXACQUIRE的语义如下:线程提供基地址、需要被监测的地址空间的粒度、监测模式和大小。粒度能够是例如存储器线、KB、MB或GB(例如编码为0、1、2、3、4)。大小指定需要被监测的粒度空间的倍数。模式指定哪种类型的违反是正被监测的、读(R)或写(W)(例如:W模式将暗示线程将在地址区域采用写操作被访问时被通知)。以下示例示出将事务中的指令绑定到与[300000, 300000+4MB]对应的地址空间的方式,但仅在写模式中(对于此示例,假定节点A中的核X正运行这个指令):SXACQUIRE 300000, 3, W, 4。SXACQUIRE的运行促使SXACQUIRE消息从启动(始发)核发送给其本地高速缓存代理器,以传播到远程核等,以建立监测(例如监测器表)和事务的缓冲存储。在一些实施例中,还设置对于运行核的监测表(例如,当监测表中的信息跨节点中的核、代理等被复制时)。
SXRELEASE的运行停止监测器,移除关联的监测器表,并且提交事务的缓冲指令。
事务中的指令集将成功进行,除非数据中心(系统的套接字的任一个中,与一致域无关)中的另一个线程访问所指定的区域并且引起数据冲突。为了实现所提出的事务语义,由请求的节点针对被监测的地址范围中的存储器所发出的所有写存储器操作暂时被分配在中间缓冲器中。如果标识违反,则清除此缓冲器。否则,中间缓冲器将在SXRELEASE时被转储到存储器。按照一实施例,中间缓冲器被放置在与远程节点关联的存储器控制器中。在其他实施例中,中间缓冲器是接收存储的接口(结构或互连)的一部分。
图10示出事务存储器监测器的使用的示范实施例。在1001,第一节点中的第一核(始发核)解码和运行SXACQUIRE指令。例如,在图1中,核0 105运行SXACQUIRE指令。
在1003,此运行促使监测请求(SXACQUIRE消息)从第一核被发送给其对应高速缓存代理器。此请求包括来自指令的信息(地址、粒度、大小和模式)。高速缓存代理器管理基线地址,以建立所请求监测器。此高速缓存代理器根据实现与归属代理器分开。例如,在图1中,核105向CHA 109(组合高速缓存和归属代理器)发送请求。换言之,核警告高速缓存代理器关于它对于事务想要监测的地址(AS)([@基地址对基地址+粒度*大小])和监测的类型(写/读)。
在1005,在一些实施例中,高速缓存代理器标识负责管理请求的本地域归属代理器。例如,负责基地址的归属代理器。要注意,所标识的归属代理器可如以上详述的被组合在与高速缓存代理相同的实体(CHA)中。
在1007,所标识的归属代理器标识系统中的什么节点(套接字)是对于核(线程)想要监测的地址空间(它能够是本地一致域)的归属。
一旦对于地址区域的归属被标识,在1009,向代理(在图1的图示中为结构111或管芯上互连113)发送请求,以建立归属节点中的监测器。换言之,在1009,监测消息代理连接(SXACQUIRE消息)从所标识的归属代理被发送给远程节点(其是地址空间的归属)。要注意,节点能够属于不同的一致域并且使用结构,或者它可处于相同一致域内。在那种情况下,代理将是管芯上互连。
在1011,来自代理连接的与监测器的注册的成功或失败有关的响应由始发核接收。。哪些事物可引起失败的示例包括但不限于重叠地址空间、无空闲监测器空间和硬件故障。如果监测器是成功的,则更新对于核的标签目录。另外,在大多数实施例中,关于被配置的一个或多个监测器的确认,监测表跨套接字中的全部代理被更新。
图11示出用于扩展对事务的监测的方法的一实施例。假定在以下详述动作的任一个之前,一个或多个监测器已经开启(例如通过SXACQUIRE指令运行)。
在1101,来自核的存储请求被发送给高速缓存代理器、归属代理器或高度缓存归属代理器。例如,CHA 109接收来自核0 105的存储请求。在1103,存储请求然后从高速缓存代理器、归属代理器或高速缓存归属代理器被转发到与核(例如结构111或管芯上互连113)相同的节点中的代理。
在1105,该代理然后将存储请求发送给与核不同的节点或套接字中的代理。例如,存储请求经由结构接口111被发送给不同节点。1101-1105对事务的每个存储请求被重复。这些存储请求的每个请求由接收节点来缓冲,直到事务完成。
在1106,是否存在任何事务违反(例如对被监测地址空间内的写)的确定被做出。换言之,事务成功完成如果不是的话,则缓冲的存储被转储清除且不被提交,并且在1113,运行状态被回退到SXACQUIRE。
如果事务中不存在问题(没有对被监测地址空间的访问),则在1107,核运行SXRELEASE,并且在1109将释放请求发送给与核相同的节点内的代理。
在1111,此释放从代理发送给远程节点中的代理,以促使所有缓冲的存储被提交。
图12示出用于在接收器节点代理的事务监测的方法的一实施例。在1201,从核(其请求事务监测)所接收的每个存储被缓冲。
当存在监测器违反时,在接收违反通知时,在1203转储清除事务的所有存储缓冲器并且转发通知。
当不存在违反并且事务成功完成时,在1205,接收释放请求(SXRELEASE)并且将所有缓冲器存储提交到存储器内。还重置监测器。
对于事务的监测的扩展的示例在图13中被示出。
图14示出用于由处理核来处理监测指令的方法的一实施例。例如,监测器指令可以是先前详述的SMONITOR或SXACQUIRE指令。
在1401,取指令。例如,从指令高速缓存或另一存储器结构中取指令。指令包括如上所述的对于基地址、粒度、大小和模式的操作数。
在1403,所取的指令由解码电路来解码。
在1405,根据需要检索与指令的操作数关联的数据。例如,寄存器对于其数据被访问。
在1407,解码指令由运行电路(功能单元)运行,以促使一个或多个监测器被开启(若可能的话)。
以上详述的实施例可在若干不同架构和系统中被实现。以下详述的是用于实现以上所述的内容的示范架构和系统。
示范性寄存器架构
图15是根据本发明的一个实施例的寄存器架构1500的框图。在所示出的实施例中,存在512比特宽的32个向量寄存器1510;这些寄存器被引用为zmm0直到zmm31。较低的16个zmm寄存器的较低阶256比特被覆盖在寄存器ymm0-16上。较低的16个zmm寄存器的较低阶128比特(ymm寄存器的较低阶128比特)被覆盖在寄存器xmm0-15上。
换言之,向量长度字段QAB59B在最大长度与一个或多个其他较短长度之间进行选择,其中每个这种较短长度是前面长度的一半长度;以及没有向量长度字段QAB59B的指令模板在最大向量长度上操作。另外,在一个实施例中,特定向量友好指令格式QAC00的B类指令模板在打包或标量单/双精度浮点数据和打包或标量整数数据上操作。标量操作是在zmm/ymm/xmm寄存器中的最低阶数据元素位置上执行的操作;高阶数据元素位置保持为与它们在指令之前原本的情况相同或者根据本实施例归零。
写掩码寄存器1515-在所示出的实施例中,存在8个写掩码寄存器(k0直到k7),每个的大小是64比特。在备选实施例中,写掩码寄存器1515的大小是16比特。如之前所描述的,在本发明的一个实施例中,向量掩码寄存器k0不能作为写掩码被使用;在将通常指示k0的编码被用于写掩码时,它选择0xFFFF的硬连线写掩码,对于那个指令有效地禁用写掩码。
通用寄存器1525-在所示出的实施例中,存在连同现存x86寻址模式被用于寻址存储器操作数的十六个64比特通用寄存器。这些寄存器通过名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、和R8直到R15来引用。
标量浮点栈寄存器堆(x87栈)1545,在其上MMX打包整数平面寄存器堆(flatregister file)1550被混叠-在所示出的实施例中,x87栈是用于使用x87指令集扩展在32/64/80比特浮点数据上执行标量浮点操作的八元素栈;而MMX寄存器被用于在64比特打包整数数据上执行操作,还被用于为在MMX和XMM寄存器之间所执行的一些操作来保存操作数。
本发明的备选实施例可使用更宽或更窄的寄存器。另外,本发明的备选实施例可使用更多、更少、或不同寄存器堆和寄存器。
示范性核架构、处理器、和计算机架构
处理器核可以不同方式、为了不同目的、以及在不同处理器中被实现。例如,此类核的实现可包括:1)打算用于通用计算的通用有序核;2)打算用于通用计算的高性能通用乱序核;3)打算主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)包括打算用于通用计算的一个或多个通用有序核和/或打算用于通用计算的一个或多个通用乱序核的CPU;以及2)包括打算主要用于图形和/或科学(吞吐量)的一个或多个专用核的协同处理器。此类不同处理器导致不同计算机系统架构,其可包括:1)在与所述CPU单独的芯片上的协同处理器;2)在与CPU相同的打包中单独管芯上的协同处理器;3)在与CPU相同的管芯上的协同处理器(在该情况中,此类协同处理器有时被称为专用逻辑,诸如集成的图形和/或科学(吞吐量)逻辑,或被称为专用核);以及4)在可在相同管芯上包括所描述的CPU(有时被称为应用核或应用处理器)、以上所描述的协同处理器、和附加功能性的片上系统。示范性核架构接下来被描述,继之以示范性处理器和计算机架构的描述。
示范性核架构
有序与乱序核框图
图16A是框图,其示出根据本发明的实施例的示范性有序管线和示范性寄存器重命名、乱序发布/运行管线两者。图16B是框图,其示出根据本发明的实施例的要被包括在处理器中的有序架构核的示范性实施例和示范性寄存器重命名、乱序发布/运行架构核两者。图16A-B中的实线框示出有序管线和有序核,而虚线框的可选附加示出寄存器重命名、乱序发布/运行管线和核。给定有序方面是乱序方面的子集,乱序方面将被描述。
在图16A中,处理器管线1600包括取阶段1602、长度解码阶段1604、解码阶段1606、分配阶段1608、重命名阶段1610、调度(还已知为分派或发布)阶段1612、寄存器读/存储器读阶段1614、运行阶段1616、写回/存储器写阶段1618、异常处置阶段1622、和提交阶段1624。
图16B示出处理器核1690,其包括耦合到运行引擎单元1650的前端单元1630,并且两者被耦合到存储器单元1670。核1690可以是简化指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或备选核类型。如仍有的另一个选项,核1690可以是专用核,诸如例如网络或通信核、压缩引擎、协同处理器核、通用计算图形处理单元(GPGPU)核、图形核等等。
前端单元1630包括耦合到指令高速缓存单元1634的分支预测单元1632,所述指令高速缓存单元1634被耦合到指令翻译旁视(lookaside)缓冲器(TLB)1636,其被耦合到指令取单元1638,所述指令取单元1638被耦合到解码单元1640。解码单元1640(或解码器)可解码指令,并生成为输出一个或多个微操作、微代码条目点、微指令、其它指令、或其它控制信号,其被解码自、或其以其它方式反映、或被推导自原始指令。使用各种不同机制,解码单元1640可被实现。适合的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)、等等。在一个实施例中,核1690包括存储用于某些宏指令的微代码的微代码ROM或其它介质(例如,在解码单元1640中或以别的方式在前端单元1630内)。解码单元1640被耦合到运行引擎单元1650中的重命名/分配器单元1652。
运行引擎单元1650包括耦合到撤销单元1654和一个或多个调度器单元1656的集合的重命名/分配器单元1652。调度器单元1656表示任何数量的不同调度器,包括保留站、中央指令窗口、等等。调度器单元1656被耦合到物理寄存器堆单元1658。物理寄存器堆单元1658中的每个表示一个或多个物理寄存器堆,其不同物理寄存器堆存储一个或多个不同数据类型,诸如标量整数、标量浮点、打包的整数、打包的浮点、向量整数、向量浮点、状态(例如,是要被运行的下一个指令的地址的指令指针)、等等。在一个实施例中,物理寄存器堆单元1658包括向量寄存器单元、写掩码寄存器单元、和标量寄存器单元。这些寄存器单元可提供架构上的向量寄存器、向量掩码寄存器、和通用寄存器。物理寄存器堆单元1658通过撤销单元1654来重叠以示出其中寄存器重命名和乱序运行可被实现的各种方式(例如,使用重排序缓冲器和撤销寄存器堆;使用未来堆、历史缓冲器、和撤销寄存器堆;使用寄存器映射和寄存器的池;等等)。撤销单元1654和物理寄存器堆单元1658被耦合到运行集群1660。运行集群1660包括一个或多个运行单元1662的集合和一个或多个存储器访问单元1664的集合。运行单元1662可执行各种操作(例如,移位、加法、减法、乘法)以及在各种类型的数据(例如,标量浮点、打包的整数、打包的浮点、向量整数、向量浮点)上执行。虽然一些实施例可包括专用于特定功能或功能的集合的多个运行单元,其它实施例可包括都执行所有功能的多个运行单元或仅一个运行单元。调度器单元1656、物理寄存器堆单元1658、和运行集群1660被示出为可能是复数的,因为某些实施例对于某些类型的数据/操作来创建单独管线(例如,标量整数管线、标量浮点/打包的整数/打包的浮点/向量整数/向量浮点管线、和/或存储器访问管线,其各自具有它们自己的调度器单元、物理寄存器堆单元、和/或运行集群—并且在单独的存储器访问管线的情况中,其中此管线的仅运行集群具有存储器访问单元1664的某些实施例被实现)。还应被理解的是,在单独管线被使用之处,这些管线的一个或多个管线可以是乱序发布/运行,并且剩余的是有序。
存储器访问单元1664的集合被耦合到存储器单元1670,存储器单元1670包括耦合到数据高速缓存单元1674的数据TLB单元1672,数据高速缓存单元1674耦合到等级2(L2)高速缓存单元1676。在一个示范性实施例中,存储器访问单元1664可包括加载单元、存储地址单元、和存储数据单元,其的每个被耦合到存储器单元1670中的数据TLB单元1672。指令高速缓存单元1634被进一步耦合到存储器单元1670中的等级2(L2)高速缓存单元1676。L2高速缓存单元1676被耦合到一个或多个其它等级的高速缓存并最终到主存储器。
通过示例的方式,示范性寄存器重命名、乱序发布/运行核架构可实现如下管线1600:1)指令取1238执行取及长度解码阶段1602和1604;2)解码单元1640执行解码阶段1606;3)重命名/分配器单元1652执行分配阶段1608和重命名阶段1610;4)调度器单元1656执行调度阶段1612;5)物理寄存器堆单元1658和存储器单元1670执行寄存器读/存储器读阶段1614;运行集群1660执行运行阶段1616;6)存储器单元1670和物理寄存器堆单元1658执行写回/存储器写阶段1618;7)各种单元可在异常处置阶段1622中被涉及;以及8)撤销单元1654和物理寄存器堆单元1658执行提交阶段1624。
核1690可支持一个或多个指令集(例如,x86指令集(具有已随较新版本被添加的一些扩展);MIPS Technologies of Sunnyvale,CA的MIPS指令集;ARM Holdings ofSunnyvale,CA的ARM指令集(具有诸如NEON的可选附加扩展)),包括本文中所描述的指令。在一个实施例中,核1690包括用于支持打包数据指令集扩展(例如,AVX1、AVX2)的逻辑,因此允许由许多多媒体应用来使用的操作使用打包的数据来执行。
应被理解的是,核可支持多线程(运行操作或线程的两个或更多并行集合),并可以多种方式来如此做,所述多种方式包括时间分段的多线程、同时多线程(在单个物理核为线程的每个提供逻辑核的情况中,那个物理核正进行同时多线程),或其组合(例如,诸如在Intel®超线程技术中的时间分段的取和解码以及其后的同时多线程)。
虽然寄存器重命名在乱序运行的上下文中被描述,但应理解的是,寄存器重命名可被用在有序架构中。虽然处理器的所示出实施例还包括单独的指令和数据高速缓存单元1634/1674以及共享的L2高速缓存单元1676,但备选实施例可具有用于指令和数据两者的单个内部高速缓存,诸如例如,等级1(L1)内部高速缓存、或多个等级的内部高速缓存。在一些实施例中,系统可包括内部高速缓存及外部于核和/或处理器的外部高速缓存的组合。备选地,所有高速缓存可外部于核和/或处理器。
特定示范性有序核架构
图17A-B示出核将是芯片中若干逻辑块之一(包括相同类型和/或不同类型的其它核)的更特定示范性有序核架构的框图。逻辑块通过高带宽互连网络(例如,环网络)取决于应用而通信于一些固定的功能逻辑、存储器I/O接口、和其它必要I/O逻辑。
图17A是根据本发明的实施例的单个处理器核连同到管芯上互连网络1702的它的连接并连同等级2(L2)高速缓存1704的它的本地子集的框图。在一个实施例中,指令解码器1700支持具有打包的数据指令集扩展的x86指令集。L1高速缓存1706允许低等待时间访问以将存储器高速缓存到标量和向量单元中。虽然在一个实施例中(为简化设计),标量单元1708和向量单元1710使用单独的寄存器集合(相应地,是标量寄存器1712和向量寄存器1714),并且在它们之间所转移的数据被写到存储器并然后从等级1(L1)高速缓存1706读回,但本发明的备选实施例可使用不同手段(例如,使用单个寄存器集合或包括允许数据在所述两个寄存器堆之间被转移而不被写和读回的通信路径)。
L2高速缓存1704的本地子集是全局L2高速缓存的部分,所述全局L2高速缓存被划分成单独的本地子集,每处理器核一个。每个处理器核具有到L2高速缓存1704的它自己的本地子集的直接访问路径。由处理器核所读的数据被存储在其L2高速缓存子集1704中并能被快速地访问,并行于其它处理器核访问它们自己的本地L2高速缓存子集。由处理器核所写的数据被存储在其自己的L2高速缓存子集1704中并且如果必要则从其它子集中被冲刷。环网络确保共享的数据的一致性。环网络是双向的以允许诸如处理器核、L2高速缓存、和其它逻辑块的代理在芯片内互相通信。每个环数据-路径每方向是1012比特宽。
图17B是根据本发明的实施例的图17A中的处理器核的部分的扩展的视图。图17B包括L1高速缓存1704的L1数据高速缓存1706A部分,以及关于向量单元1710和向量寄存器1714的更多细节。具体地,向量单元1710是16-宽向量处理单元(VPU)(见16-宽ALU 1728),其运行整数、单精度浮动、和双精度浮动指令的一个或多个。VPU支持在存储器输入上通过打乱单元1720来打乱寄存器输入、通过数值转换单元1722A-B来进行数值转换、以及通过复制单元1724来进行复制。写掩码寄存器1726允许预测结果的向量写。
具有集成的存储器控制器和图形的处理器
图18是根据本发明的实施例的可具有多于一个核、可具有集成存储器控制器、并可具有集成图形的处理器1800的框图。图18中的实线框示出具有单个核1802A、系统代理1810、一个或多个总线控制器单元1816的集合的处理器1800,而虚线框的可选附加示出具有多个核1802A-N、系统代理单元1810中的一个或多个集成存储器控制器单元1814的集合、和专用逻辑1808的备选处理器1800。
因此,处理器1800的不同实现可包括:1)CPU,具有是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核)的专用逻辑1808、以及是一个或多个通用核(例如,通用有序核、通用乱序核、所述两个核的组合)的核1802A-N;2)具有是打算主要用于图形和/或科学(吞吐量)的大量的专用核的核1802A-N的协同处理器;以及3)具有是大量的通用有序核的核1802A-N的协同处理器。因此,处理器1800可以是通用处理器、协同处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量许多集成核(MIC)协同处理器(包括30或更多核)、嵌入式处理器等等。处理器可被实现在一个或多个芯片上。使用多个处理技术的任何处理技术(诸如例如,BiCMOS、CMOS、或NMOS),处理器1800可被实现在一个或多个衬底上和/或是其部分。
存储器层级包括核内高速缓存的一个或多个等级、共享的高速缓存单元1806的集合或一个或多个、和耦合到集成存储器控制器单元1814的集合的外部存储器(未示出)。共享的高速缓存单元1806的集合可包括一个或多个中等级高速缓存,诸如等级2(L2)、等级3(L3)、等级4(L4)、或其它等级的高速缓存、最后等级高速缓存(LLC)、和/或其组合。虽然在一个实施例中,基于环的互连单元1812将集成图形逻辑1808、共享的高速缓存单元1806的集合、以及系统代理单元1810/集成存储器控制器单元1814互连,但备选实施例可使用用于互连此类单元的任何数量的公知技术。在一个实施例中,一个或多个高速缓存单元1806和核1802-A-N之间的一致性被维持。
在一些实施例中,核1802A-N的一个或多个核有多线程的能力。系统代理1810包括协调和操作核1802A-N的那些组件。系统代理单元1810可包括例如功率控制单元(PCU)和显示器单元。PCU可以是或包括为调节集成图形逻辑1808和核1802A-N的功率状态所需要的逻辑和组件。显示器单元用于驱动一个或多个外部连接的显示器。
核1802A-N可关于架构指令集是同质或异质的;那就是说,核1802A-N的两个或更多核可有运行相同指令集的能力,而其它的核可有运行不同指令集或那个指令集的仅子集的能力。
示范性计算机架构
图19-22是示范性计算机架构的框图。在对于膝上型计算机、桌上型计算机、手持型PC、个人数字助理、工程工作站、服务器、网络装置、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持装置、以及各种其它电子装置的领域中已知的其它系统设计和配置也是适合的。一般来说,能够合并如本文中所公开的处理器和/或其它运行逻辑的极多种的系统或电子装置一般是适合的。
现在参考图19,所示出的是根据本发明的一个实施例的系统1900的框图。系统1900可包括被耦合到控制器中枢1920的一个或多个处理器1910、1915。在一个实施例中,控制器中枢1920包括图形存储器控制器中枢(GMCH)1990和输入/输出中枢(IOH)1950(其可在单独的芯片上);GMCH 1990包括存储器1940和协同处理器1945被耦合到的存储器和图形控制器;IOH 1950将输入/输出(I/O)装置1960耦合到GMCH 1990。备选地,存储器和图形控制器之一或两者被集成在处理器(如本文中所描述的)内,存储器1940和协同处理器1945被直接耦合到处理器1910、和具有IOH 1950的单个芯片中的控制器中枢1920。
附加处理器1915的可选性质在图19中用断线来指代。每个处理器1910、1915可包括本文中所描述的处理核中的一个或多个,并可以是处理器1800的某版本。
存储器1940可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)、或所述两个存储器的组合。对于至少一个实施例,控制器中枢1920经由诸如前侧总线(FSB)的多点总线、诸如快速路径互连(QPI)的点对点接口、或类似连接1995来与处理器1910、1915通信。
在一个实施例中,协同处理器1945是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。在一个实施例中,控制器中枢1920可包括集成图形加速器。
物理资源1910、1915之间关于包括架构上、微架构上、热、功率耗用特性、和诸如此类的指标的规格的谱能存在多种不同。
在一个实施例中,处理器1910运行控制一般类型的数据处理操作的指令。指令内所嵌入的可以是协同处理器指令。处理器1910将这些协同处理器指令标识为是应由附连的协同处理器1945来运行的类型。因此,处理器1910在协同处理器总线或其它互连上将这些协同处理器指令(或表示协同处理器指令的控制信号)发布到协同处理器1945。协同处理器1945接受并运行所接收的协同处理器指令。
现在参考图20,所示出的是根据本发明的实施例的第一更特定示范性系统2000的框图。如图20中所示出的,多处理器系统2000是点对点互连系统,并包括经由点对点互连2050所耦合的第一处理器2070和第二处理器2080。处理器2070和2080中的每个可以是处理器1800的某版本。在本发明的一个实施例中,处理器2070和2080相应是处理器1910和1915,而协同处理器2038是协同处理器1945。在另一个实施例中,处理器2070和2080相应是处理器1910、协同处理器1945。
处理器2070和2080被示出相应包括集成存储器控制器(IMC)单元2072和2082。处理器2070还包括作为它的总线控制器单元的部分的点对点(P-P)接口2076和2078;类似地,第二处理器2080包括P-P接口2086和2088。使用P-P接口电路2078、2088,处理器2070、2080可经由点对点(P-P)接口2050来互换信息。如图20中所示出的,IMC 2072和2082将处理器耦合到相应存储器(就是存储器2032和存储器2034),其可以是本地附连到相应处理器的主存储器的部分。
使用点对点接口电路2076、2094、2086、2098,处理器2070、2080可各自经由各个P-P接口2052、2054与芯片集2090互换信息。芯片集2090可以可选地经由高性能接口2039与协同处理器2038互换信息。在一个实施例中,协同处理器2038是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等
共享的高速缓存(未示出)可被包括在任一处理器中或在两个处理器之外,又经由P-P互连与处理器连接,使得如果处理器被置于低功率模式中,则任一或两个处理器的本地高速缓存信息可被存储在共享的高速缓存中。
芯片集2090可经由接口2096来耦合到第一总线2016。在一个实施例中,第一总线2016可以是外围组件互连(PCI)总线、或诸如PCI高速总线或另一个第三代I/O互连总线的总线,尽管本发明的范围未被如此限制。
如图20中所示出的,各种I/O装置2014可连同总线桥2018被耦合到第一总线2016,总线桥2018将第一总线2016耦合到第二总线2020。在一个实施例中,诸如协同处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列、或任何其它处理器的一个或多个附加处理器2015被耦合到第一总线2016。在一个实施例中,第二总线2020可以是低管脚计数(LPC)总线。各种装置可被耦合到第二总线2020,包括例如键盘和/或鼠标2022、通信装置2027和诸如硬盘驱动器或其它大容量存储装置的存储单元2028,其可包括指令/代码和数据2030(在一个实施例中)。进一步地,音频I/O2024可被耦合到第二总线2020。注意,其它架构是可能的。例如,替代图20的点对点架构,系统可实现多点总线或其它此类架构。
现在参考图21,所示出的是根据本发明的实施例的第二更特定示范性系统2100的框图。图20和21中的相似元件标有相似附图标记,并且图20的某些方面已从图21中被省略以便避免模糊图21的其它方面。
图21示出了处理器2070、2080可相应包括集成存储器以及I/O控制逻辑(“CL”)2072和2082。因此,CL 2072、2082包括集成存储器控制器单元并包括I/O控制逻辑。图21示出了不仅存储器2032、2034被耦合到CL 2072、2082,而且I/O装置2114也被耦合到控制逻辑2072、2082。遗留I/O装置2115被耦合到芯片集2090。
现在参考图22,所示出的是根据本发明的实施例的SoC 2200的框图。图18中的类似元件标有相似附图标记。同样,虚线框在更高级的SoC上是可选特征。在图22中,互连单元2202被耦合到:应用处理器2210,其包括一个或多个核202A-N的集合和共享的高速缓存单元1806;系统代理单元1810;总线控制器单元1816;集成存储器控制器单元1814;协同处理器2220的集合或一个或多个,其可包括集成图形逻辑、图像处理器、音频处理器、以及视频处理器;静态随机存取存储器(SRAM)单元2230;直接存储器访问(DMA)单元2232;以及用于耦合到一个或多个外部显示器的显示器单元2240。在一个实施例中,协同处理器2220包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等等。
本文中所公开的机制的实施例可被实现在硬件、软件、固件、或此类实现手段的组合中。本发明的实施例可被实现为在可编程系统上运行的程序代码或计算机程序,所述可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置、和至少一个输出装置。
诸如图20中所示出的代码2030的程序代码可被应用于输入指令以执行本文中所描述的功能并生成输出信息。输出信息可以已知方式被应用于一个或多个输出装置。为了此应用的目的,处理系统包括具有处理器(诸如例如:数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)、或微处理器)的任何系统。
程序代码可被实现在高等级过程的或面向对象的编程语言中以与处理系统通信。如果期望的话,则程序代码可还被实现在汇编或机器语言中。事实上,本文中所描述的机制不限于对任何具体编程语言的范围中。在任何情况中,语言可以是编译或解释的语言。
至少一个实施例的一个或多个方面可由存储在机器可读介质上的代表性指令来实现,所述代表性指令表示处理器内的各种逻辑,其当由机器来读时促使该机器制作用于执行本文中所描述的技术的逻辑。此类表示(已知为“IP核”)可被存储在有形的、机器可读介质上并被供应给各种客户或制造设施以加载到实际做出逻辑或处理器的制作机器。
此类机器可读存储介质可包括由机器或装置所制造或形成的物品(article)的非暂态、有形的布置而没有限制,包括存储介质(诸如硬盘、包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)、和磁光盘的任何其它类型的盘)、半导体装置(诸如只读存储器(ROM),诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)的随机存取存储器(RAM),可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)、磁或光卡、或适合于存储电子指令的任何其它类型的介质)。
因此,本发明的实施例还包括非暂态、有形的机器可读介质,所述介质含有指令或含有设计数据,诸如硬件描述语言(HDL),其定义本文中所描述的结构、电路、设备、处理器和/或系统特征。此类实施例可还被称为程序产品。
仿真(包括二进制翻译、代码变形等)
在一些情况中,指令转换器可被用于将指令从源指令集转换成目标指令集。例如,指令转换器可翻译(例如,使用静态二进制翻译、包括动态编译的动态二进制翻译)、变形、仿真、或以其它方式将指令转换成要由核来处理的一个或多个其它指令。指令转换器被实现在软件、硬件、固件、或其组合中。指令转换器可在处理器上、离开处理器、或部分在处理器上而部分离开处理器。
图23是框图,其对照根据本发明的实施例的使用软件指令转换器以将源指令集中的二进制指令转换成目标指令集中的二进制指令。在所示出的实施例中,指令转换器是软件指令转换器,尽管备选地指令转换器可被实现在软件、固件、硬件、或其各种组合中。图23示出使用x86编译器2304,用高级语言2302的程序可被编译以生成x86二进制代码2306,其可由具有至少一个x86指令集核的处理器2316来原始运行。具有至少一个x86指令集核的处理器2316表示能如具有至少一个x86指令集核的Intel处理器一样大体上执行相同功能的任何处理器,这通过兼容地运行或以其它方式处理(1)Intel x86指令集核的指令集的实质部分,或(2)针对于在具有至少一个x86指令集核的Intel处理器上运行的应用或其它软件的对象代码版本,以便取得大体上与具有至少一个x86指令集核的Intel处理器相同的结果。x86编译器2304表示可操作以生成x86二进制代码2306(例如,对象代码)的编译器,x86二进制代码2306能通过或不通过附加联接处理而在具有至少一个x86指令集核的处理器2316上被运行。类似地,图23示出了使用备选指令集编译器2308,用高级语言2302的程序可被编译以生成备选指令集二进制代码2310,其可由不具有至少一个x86指令集核的处理器2314(例如,具有运行MIPS Technologies of Sunnyvale,CA的MIPS指令集和/或运行ARMHoldings of Sunnyvale,CA的ARM指令集的核的处理器)来原始运行。指令转换器2312被用于将x86二进制代码2306转换成可由不具有x86指令集核的处理器2314来原始运行的代码。此被转换的代码不可能与备选指令集二进制代码2310相同,因为能够这样做的指令转换器难以做出;然而,被转换的代码将完成一般操作并由来自备选指令集的指令构成。因此,指令转换器2312表示软件、固件、硬件、或其组合,其通过仿真、模拟或任何其它过程而允许不具有x86指令集处理器或核的处理器或另一电子装置运行x86二进制代码2306。

Claims (25)

1.一种设备,包括:
至少一个监测电路,用于监测对地址空间的存储器访问;
至少一个监测表,用于存储所述地址空间的标识符;
至少一个硬件核,用于运行指令以能够实现所述监测电路。
2.如权利要求1所述的设备,其中,所述指令包括基地址、存储器大小粒度、跟踪粒度、模式以及作为所述粒度的倍数的所述地址空间的大小。
3.如权利要求2所述的设备,其中,所述存储器大小粒度是至少高速缓存线、页、大页或超大页其中之一。
4.如权利要求23所述的设备,其中,所述跟踪粒度根据节点组的数量。
5.如权利要求1-4中的任一项所述的设备,其中,所述远程节点指示是有权访问所述地址空间的节点的位掩码。
6.如权利要求2所述的设备,其中,所述模式是读和写其中之一。
7. 如权利要求1-6中的任一项所述的设备,进一步包括:
高速缓存代理器电路,用于处理来自多个硬件核心的至少一个的存储器请求;以及
归属代理器电路,用于处理来自所述高速缓存代理器的存储器请求并且作为对于所述设备的存储器空间的部分的归属。
8.如权利要求1-7中的任一项所述的设备,进一步包括:
缓冲器,用于存储远程存储请求,所述远程存储请求是由所述指令的运行所启动的事务的一部分。
9.一种方法,包括,
在核中运行指令,以促使:
向第一代理连接发送用于监测对地址空间的访问的监测器请求,
向第二代理连接发送所述监测器请求,以用于作为多播消息由所述第二代理连接广播向所述第二代理连接的套接字中的所有核,以启动监测器,
从所述第二代理连接接收指示所述监测器请求的成功或失败的确认。
10.如权利要求9所述的方法,其中,所述第一和第二代理连接物理上在不同的节点上并且通过结构接口进行通信。
11.如权利要求9所述的方法,其中,所述第一和第二代理连接物理上在不同的套接字上并且通过套接字接口进行通信。
12.如权利要求9-11中的任一项所述的方法,进一步包括:
将所述监测器撤消注册。
13.如权利要求9-12中的任一项所述的方法,进一步包括:
所述第二代理连接向其节点中的任何互连代理器发送消息。
14.如权利要求9-13中的任一项所述的方法,进一步包括:
更新标签目录以跟踪对所述地址空间的访问。
15.如权利要求14所述的方法,进一步包括:
接收对所述地址空间的访问的指示;
更新所述标签目录以指示对所述地址空间的访问。
16.如权利要求9-15中的任一项所述的方法,进一步包括:
缓冲监测期间的事务的所有存储。
17.如权利要求16所述的方法,还包括:
在所述事务成功完成时提交所述事务的所有被缓冲的所有存储。
18.一种设备,包括:
至少一个监测部件,用于监测对地址空间的存储器存取;
至少一个监测表部件,用于存储所述地址空间的标识符;
至少一个硬件核心,用于运行指令以能够实现监测电路。
19.如权利要求18所述的设备,其中,所述指令包括基地址、存储器大小粒度、跟踪粒度、模式以及作为所述粒度的倍数的所述地址空间的大小。
20.如权利要求19所述的设备,其中,所述存储器大小粒度是至少高速缓存线、页、大页或超大页其中之一。
21.如权利要求19所述的设备,其中,所述跟踪粒度根据节点组的数量。
22.如权利要求18-21中的任一项所述的设备,其中,所述远程节点指示是有权访问所述地址空间的节点的位掩码。
23.如权利要求22所述的设备,其中,所述模式是读和写其中之一。
24. 如权利要求18-23中的任一项所述的设备,进一步包括:
高速缓存代理器部件,用于处理来自多个硬件核心的至少一个的存储器请求;以及
归属代理器部件,用于处理来自所述高速缓存代理器的存储器请求并且作为对于所述设备的存储器空间的组成部分的归属。
25.如权利要求18-24中的任一项所述的设备,进一步包括:
缓冲器,用于存储远程存储请求,所述远程存储请求是由所述指令的运行所启动的事务的一部分。
CN201680069648.1A 2015-12-29 2016-12-29 用于分布式一致性存储器的系统、方法和设备 Active CN108292268B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/983052 2015-12-29
US14/983,052 US11163682B2 (en) 2015-12-29 2015-12-29 Systems, methods, and apparatuses for distributed consistency memory
PCT/US2016/069063 WO2017117318A1 (en) 2015-12-29 2016-12-29 Systems, methods, and apparatuses for distributed consistency memory

Publications (2)

Publication Number Publication Date
CN108292268A true CN108292268A (zh) 2018-07-17
CN108292268B CN108292268B (zh) 2024-03-22

Family

ID=59086366

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680069648.1A Active CN108292268B (zh) 2015-12-29 2016-12-29 用于分布式一致性存储器的系统、方法和设备

Country Status (5)

Country Link
US (1) US11163682B2 (zh)
EP (1) EP3398071B1 (zh)
CN (1) CN108292268B (zh)
TW (1) TWI731906B (zh)
WO (1) WO2017117318A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10547680B2 (en) 2015-12-29 2020-01-28 Intel Corporation Systems, methods, and apparatuses for range protection
US10095622B2 (en) 2015-12-29 2018-10-09 Intel Corporation System, method, and apparatuses for remote monitoring
US10776125B2 (en) * 2018-12-05 2020-09-15 Apple Inc. Coprocessor memory ordering table

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1957331A (zh) * 2004-05-26 2007-05-02 英特尔公司 网络应用内的自动高速缓存生成
CN101042680A (zh) * 2006-03-23 2007-09-26 国际商业机器公司 更新无效一致状态的方法、数据处理系统和高速缓存系统
CN101236529A (zh) * 2006-12-27 2008-08-06 英特尔公司 用于设备访问分区系统中的存储器的访客地址至主机地址转换
US20110047543A1 (en) * 2009-08-21 2011-02-24 Preet Mohinder System and Method for Providing Address Protection in a Virtual Environment
US20130311758A1 (en) * 2012-03-30 2013-11-21 Paul Caprioli Hardware profiling mechanism to enable page level automatic binary translation
US20140379997A1 (en) * 2013-06-19 2014-12-25 International Business Machines Corporation Coherent attached processor proxy having hybrid directory
CN104937539A (zh) * 2012-11-28 2015-09-23 英特尔公司 用于提供推入缓冲器复制和存储功能的指令和逻辑

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6961806B1 (en) 2001-12-10 2005-11-01 Vmware, Inc. System and method for detecting access to shared structures and for maintaining coherence of derived structures in virtualized multiprocessor systems
US7310709B1 (en) 2005-04-06 2007-12-18 Sun Microsystems, Inc. Method and apparatus for primary cache tag error handling
US7516277B2 (en) 2005-04-28 2009-04-07 Sap Ag Cache monitoring using shared memory
US8789028B2 (en) 2006-06-30 2014-07-22 International Business Machines Corporation Memory access monitoring
US8347064B1 (en) * 2006-09-19 2013-01-01 Nvidia Corporation Memory access techniques in an aperture mapped memory space
US7613882B1 (en) 2007-01-29 2009-11-03 3 Leaf Systems Fast invalidation for cache coherency in distributed shared memory system
US7844779B2 (en) 2007-12-13 2010-11-30 International Business Machines Corporation Method and system for intelligent and dynamic cache replacement management based on efficient use of cache for individual processor core
US8171223B2 (en) 2008-12-03 2012-05-01 Intel Corporation Method and system to increase concurrency and control replication in a multi-core cache hierarchy
US8627017B2 (en) 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
EP2204740A1 (en) 2008-12-31 2010-07-07 ST-Ericsson SA (ST-Ericsson Ltd) Memory management process and apparatus for the same
US8812796B2 (en) 2009-06-26 2014-08-19 Microsoft Corporation Private memory regions and coherence optimizations
EP2449472A1 (en) 2009-07-03 2012-05-09 Jantsch, Axel A programmable controller
US8392657B2 (en) 2009-10-09 2013-03-05 Intel Corporation Monitoring cache usage in a distributed shared cache
US8769211B2 (en) 2009-12-22 2014-07-01 Intel Corporation Monitoring thread synchronization in a distributed cache
US8838430B1 (en) 2011-08-26 2014-09-16 Cadence Design Systems, Inc. Detection of memory access violation in simulations
US8812786B2 (en) * 2011-10-18 2014-08-19 Advanced Micro Devices, Inc. Dual-granularity state tracking for directory-based cache coherence
US20130124805A1 (en) * 2011-11-10 2013-05-16 Advanced Micro Devices, Inc. Apparatus and method for servicing latency-sensitive memory requests
US9208110B2 (en) * 2011-11-29 2015-12-08 Intel Corporation Raw memory transaction support
GB2499699A (en) 2011-12-14 2013-08-28 Wolfson Ltd Digital data transmission involving the position of and duration of data pulses within transfer periods
JP2013196167A (ja) 2012-03-16 2013-09-30 Toshiba Corp 情報処理装置
US9304923B2 (en) 2013-03-12 2016-04-05 Arm Limited Data coherency management
US10705961B2 (en) 2013-09-27 2020-07-07 Intel Corporation Scalably mechanism to implement an instruction that monitors for writes to an address
US9740617B2 (en) 2014-12-23 2017-08-22 Intel Corporation Hardware apparatuses and methods to control cache line coherence
US10095622B2 (en) 2015-12-29 2018-10-09 Intel Corporation System, method, and apparatuses for remote monitoring

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1957331A (zh) * 2004-05-26 2007-05-02 英特尔公司 网络应用内的自动高速缓存生成
CN101042680A (zh) * 2006-03-23 2007-09-26 国际商业机器公司 更新无效一致状态的方法、数据处理系统和高速缓存系统
CN101236529A (zh) * 2006-12-27 2008-08-06 英特尔公司 用于设备访问分区系统中的存储器的访客地址至主机地址转换
US20110047543A1 (en) * 2009-08-21 2011-02-24 Preet Mohinder System and Method for Providing Address Protection in a Virtual Environment
US20130311758A1 (en) * 2012-03-30 2013-11-21 Paul Caprioli Hardware profiling mechanism to enable page level automatic binary translation
CN104937539A (zh) * 2012-11-28 2015-09-23 英特尔公司 用于提供推入缓冲器复制和存储功能的指令和逻辑
US20140379997A1 (en) * 2013-06-19 2014-12-25 International Business Machines Corporation Coherent attached processor proxy having hybrid directory

Also Published As

Publication number Publication date
EP3398071A4 (en) 2019-12-11
US11163682B2 (en) 2021-11-02
TW201732580A (zh) 2017-09-16
EP3398071B1 (en) 2024-05-08
US20170185517A1 (en) 2017-06-29
TWI731906B (zh) 2021-07-01
EP3398071A1 (en) 2018-11-07
WO2017117318A1 (en) 2017-07-06
CN108292268B (zh) 2024-03-22

Similar Documents

Publication Publication Date Title
US11048634B2 (en) Efficient work unit processing in a multicore system
US10089229B2 (en) Cache allocation with code and data prioritization
CN104954356B (zh) 保护共享的互连以用于虚拟机
US9740617B2 (en) Hardware apparatuses and methods to control cache line coherence
US10547680B2 (en) Systems, methods, and apparatuses for range protection
US9524219B2 (en) Atomic transactions to non-volatile memory
TWI748970B (zh) 用於遠端監視的設備
US9934146B2 (en) Hardware apparatuses and methods to control cache line coherency
US9727475B2 (en) Method and apparatus for distributed snoop filtering
CN104813278B (zh) 对二进制转换的自修改代码以及交叉修改代码的处理
CN108351830A (zh) 用于存储器损坏检测的硬件装置和方法
US10042761B2 (en) Read and write sets for transactions of a multithreaded computing environment
CN107111576A (zh) 发布的中断架构
US20180189180A1 (en) Optimized caching agent with integrated directory cache
US20190220424A1 (en) Device, system and method to access a shared memory with field-programmable gate array circuitry
CN108292268A (zh) 用于分布式一致性存储器的系统、方法和设备
CN108027726A (zh) 用于在远程处理器上实施原子动作的硬件机制
US11321146B2 (en) Executing an atomic primitive in a multi-core processor system
US11681567B2 (en) Method and processor system for executing a TELT instruction to access a data item during execution of an atomic primitive

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