CN109661656B - 用于利用条件所有权请求的智能存储操作的方法和装置 - Google Patents
用于利用条件所有权请求的智能存储操作的方法和装置 Download PDFInfo
- Publication number
- CN109661656B CN109661656B CN201680089060.2A CN201680089060A CN109661656B CN 109661656 B CN109661656 B CN 109661656B CN 201680089060 A CN201680089060 A CN 201680089060A CN 109661656 B CN109661656 B CN 109661656B
- Authority
- CN
- China
- Prior art keywords
- local
- value
- cache
- new value
- target
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000003860 storage Methods 0.000 title abstract description 20
- 230000004044 response Effects 0.000 claims abstract description 51
- 230000015654 memory Effects 0.000 claims description 109
- 238000012545 processing Methods 0.000 claims description 25
- 239000003795 chemical substances by application Substances 0.000 description 68
- 238000010586 diagram Methods 0.000 description 28
- 238000007667 floating Methods 0.000 description 9
- 238000012986 modification Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000001427 coherent effect Effects 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 238000013519 translation Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 239000004744 fabric Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache 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)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
利用条件所有权请求实现智能存储操作的方法和装置。一个方面包括在多核心处理器中实现的方法,该方法包括:响应于用新值修改目标高速缓存行(CL)的指令的执行,从请求者接收针对所有权的条件读(CondRFO),CondRFO标识目标CL和新值;从本地高速缓存确定与目标CL对应的本地CL;从本地CL确定本地值;将本地值与新值进行比较;当本地值与新值相同时,将本地CL的一致性状态设置成(S)共享;当本地值与新值不同时,将本地CL的一致性状态设置成(I)无效;以及向请求者发送响应和本地CL的副本。其他实施例包括被配置成执行该方法的动作的装置。
Description
技术领域
本发明的实施例涉及计算机架构领域,并且具体地涉及数据传送。
背景技术
在软件应用中,代码一再地对相同的存储器位置做出重复更新并不罕见。时常,要写到存储器位置中的值与已存储在该位置处的现有值相同。在这些情况下,利用相同值更新存储器位置是冗余且不必要的。通常这不是严重的问题,并且大多数程序员由于方便或缺乏对性能的关注而仅使用以下代码语法来存储或更新存储器中的值:
var = val
然而,在其中存储器中的空间局部性低且相同或附近数据的线程之间的共享比率高的实例(诸如常常是利用控制块的情况)中,对存储器的不必要更新可导致显著的性能降级,并且因此应当在可能时避免。
在具有用于每个核心的单独高速缓冲存储器的共享存储器多核心处理器系统中,同一高速缓存行的许多副本可以同时存在。例如,高速缓存行的一副本可以驻留在主存储器,而另一副本被缓存在核心中的一个或多个的本地高速缓冲存储器中。当改变高速缓存行的一个副本时,还必须改变或无效同一高速缓存行的其他副本,以便维持不同副本之间的一致性。为了防止在多个核心试图对同一高速缓存行做出重叠改变时发生的冲突,期望修改高速缓存行的核心必须首先拥有它想要修改的高速缓存行。通常,为了建立高速缓存行的所有权,第一核心通过其缓存代理向其他核心广播针对所有权的读或针对所有权的请求消息,以使其他核心中的该高速缓存行的所有副本无效。然后,在其本地高速缓存中拥有该高速缓存行副本的第二核心将在接收到消息时使其副本无效。稍后,如果第二核心希望从其本地高速缓存访问该高速缓存行的副本,则将导致高速缓存未命中,因为其副本不再有效。然后,根据所期望的访问的类型,第二核心将需要发布读、针对所有权的读或针对所有权的请求消息,以获取该高速缓存行的有效副本。第二核心发出的消息可以继而使该高速缓存行的其他副本无效,并且当另一核心在将来试图访问无效的高速缓存行时引起类似的本地高速缓存未命中。即使这样的获取是不必要的,诸如例如当要被写到高速缓存行中的值与已经存储的值相同时,也发生由于写请求而引起的特定高速缓存行的该全局无效。为了减少这些种类的情况的发生,更高级的程序员在向存储器位置进行存储或更新时倾向于使用以下语法:
if ( var<>val ) var = val
这确保了存储或更新操作以及跟随的相关联的针对所有权的读或针对所有权的请求消息仅发生在该存储器位置中的值实际上与将要被写的值不同时。
虽然在许多情况下有用,但该方法伴随它自己的一组缺点一起发生。例如,它需要额外的代码,所述额外的代码在大量存储的情况下可能导致代码大小中的显著增加。而且,添加的检查使控制流程复杂化,并且可能限制编译器应用代码优化(诸如向量化、循环不变代码移动等)的能力。此外,断言(predicate)条件引入了许多分支并且倾向于污染分支预测表,更不必说在不正确的预测的情况下的高执行和恢复成本。
发明内容
按照本发明的第一方面,一种在多核心处理器中实现的方法,所述方法包括:响应于用新值修改目标高速缓存行CL的指令的执行,从请求者接收针对所有权的条件读CondRFO,CondRFO标识目标CL和新值;从本地高速缓存确定与目标CL对应的本地CL;从本地CL确定本地值;将本地值与新值进行比较;当本地值与新值相同时,将本地CL的一致性状态设置成共享;当本地值与新值不同时,将本地CL的一致性状态设置成无效;以及向请求者发送响应,其中响应包括本地CL的副本。
按照本发明的第二方面,一种在多核心处理器中实现的方法,所述方法包括:解码条件存储指令;执行经解码的条件存储指令以用新值修改目标高速缓存行CL;确定本地高速缓存是否包含与目标CL对应的有效本地CL;以及响应于确定本地高速缓存不包含有效本地CL,将针对所有权的条件读CondRFO发送到多核心处理器中的一个或多个远程核心,其中CondRFO标识目标CL和新值。
按照本发明的第三方面,一种处理装置,包括:通过互连而通信地耦合的多个硬件处理器核心,每个硬件处理器核心要包括相应的本地高速缓存,其中所述多个硬件处理器核心中的第一处理器核心要包括高速缓存代理电路,所述高速缓存代理逻辑电路要:响应于所述多个硬件处理器核心中的第二处理器核心执行用新值修改目标高速缓存行CL的指令,从第二处理器核心接收针对所有权的条件读CondRFO,CondRFO标识目标CL和新值;从第一处理器核心的本地高速缓存确定与目标CL对应的本地CL;从本地CL确定本地值;将本地值与新值进行比较;当本地值与新值相同时,将本地CL的一致性状态设置成共享;当本地值与新值不同时,将本地CL的一致性状态设置成无效;以及向第二处理器核心发送响应,其中响应包括本地CL的副本。
按照本发明的第四方面,一种处理装置,包括:通过互连而通信地耦合的多个硬件处理器核心,每个硬件处理器核心要包括相应的本地高速缓存,其中所述多个硬件处理器核心中的第一处理器核心要包括:解码器电路,用来解码条件存储指令;执行电路,用来执行经解码的条件存储指令以用新值修改目标高速缓存行CL;高速缓存代理电路,用来:确定本地高速缓存是否包含与目标CL对应的有效本地CL;以及响应于确定本地高速缓存不包含有效本地CL,将向所述多个硬件处理器核心中的一个或多个其他核心发送针对所有权的条件读CondRFO,其中CondRFO标识目标CL和新值。
附图说明
因为参考以下详细描述,在结合附图理解时,本发明的前述方面和许多伴随的优点变得更好理解,所以其将变得更容易领会,其中除非另外指定,否则相似的参考数字贯穿各种视图指代相似的部分:
图1是例示主机平台的示例性配置的示意图;
图2是例示图1中所示的平台采用的存储器一致性架构的抽象视图的示意图;
图3是例示在传统方法下使用针对所有权的读和请求操作的组合的典型存储器读/写访问序列的消息流程图;
图4是例示在传统方法下使用将读和无效广播组合的针对所有权的读操作的典型存储器读/写访问序列的消息流程图;
图5是例示根据本发明的实施例的利用针对所有权的条件读(conditional read)操作的存储器读/写访问序列的消息流程图,其中所存储的值与要被写的值相同;
图6是例示根据本发明的实施例的利用针对所有权的条件读操作的存储器读/写访问序列的另一消息流程图,其中所存储的值不同于要被写的值;
图7是例示用于处置用来修改高速缓存行的请求的方法的实施例的流程图;
图8是例示根据本发明的实施例的用于处置针对所有权的条件读(CondRFO)请求的方法的流程图;
图9A是例示根据本发明的实施例的示例性有序流水线和示例性寄存器重命名、无序发布/执行流水线两者的框图;
图9B是例示根据本发明的实施例的要包括在处理器中的有序架构核心的示例性实施例和示例性寄存器重命名、无序发布/执行架构核心两者的框图;
图10是根据本发明的实施例的单核心处理器和具有集成存储器控制器和图形的多核心处理器的框图;
图11例示了依照本发明的一个实施例的系统的框图;
图12例示了依照本发明的实施例的第二系统的框图;
图13例示了依照本发明的实施例的第三系统的框图;
图14例示了依照本发明的实施例的片上系统(SoC)的框图;以及
图15例示了根据本发明的实施例的对比将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用的框图。
具体实施方式
本文中描述了实现用于利用条件所有权请求的智能存储操作的方法和装置的实施例。在以下描述中,阐述了许多具体细节以提供对本发明的实施例的透彻理解。然而,相关领域技术人员将认识到,可以在没有具体细节中的一个或多个的情况下或者利用其他方法、组件、材料等实践本发明。在其他实例中,未详细示出或描述公知的结构、材料或操作以避免模糊本发明的各方面。
贯穿本说明书对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,短语“在一个实施例中”或“在实施例中”贯穿本说明书在各种地方中的出现不一定都指代同一实施例。此外,所述特定特征、结构或特性可以以任何合适的方式组合在一个或多个实施例中。
为清楚起见,本文中的各图中的单独组件也可以通过其在各图中的标签而不是通过特定参考数字来指代。此外,指代(与特定组件相对的)特定类型的组件的参考数字可以用后跟意味着“典型”的“(typ)”的参考数字来示出。将理解,这些组件的配置将是可能存在但为简单和清楚起见未在所绘各图中示出的类似组件或者没有用单独的参考数字标记的另外类似的组件的典型特征。相反,不要将“(typ)”解释为意味着组件、元件等通常用于其被公开的功能、实现、目的等。
本发明的各方面在缓存级别处提供了新的硬件支持,以确保只有在高速缓存行的一部分与特定值不同时才发布针对高速缓存行所有权的请求。本发明的另一方面提出了新指令,例如标量指令和向量指令,用来基于新硬件支持来访问条件存储的能力。根据实施例,向现有高速缓存一致性协议添加扩展以用于执行条件存储方案。通过将对不必要的存储的检查卸载到硬件,本文中描述的发明减少了不必要的针对所有权的读和针对所有权的请求消息以及核心高速缓存之间的数据移动以改进性能,而不向编程器添加开销。它还通过不向代码显式添加条件断言来保持代码的简单。这避免了对代码大小的增加以及对用于使编译器分析和执行代码优化(诸如向量化和循环不变代码移动)的能力的潜在损害两者。通过消除在每个存储之前对条件断言的需要,本发明也不污染或依靠分支预测机制。在一个方面,保持对现有存储指令的使用,因为每个存储变成了条件存储。根据实施例,针对所有权的条件读操作替换针对所有权的传统读操作并且被针对每个存储指令发布。在另一实施例中,新指令被暴露给软件栈以指定使用针对所有权的条件读操作而不是针对所有权的传统读操作或针对所有权的请求操作。以下例示了这些新指令的示例性实施例:
CondScalarStore @Line,New Value,Offset
CondVectorStore @Line,New Value,Offset
这些新指令中的每个都包括三个操作数。@Line操作数对应于要存储新值的高速缓存行(即目标高速缓存行)的存储器地址。New Value操作数对应于要存储到目标高速缓存行中的值。Offset操作数提供到目标高速缓存行中的偏移,用于定位与新值进行比较的值。如下面将描述的,只有当存储器地址+偏移值与新值不同时,这些新指令才将产生针对目标高速缓存行@Line的所有权的请求。关于CondVectorStore指令,三个操作数(即,@Line,New Value和Offset)是每个包含多个高速缓存行地址的向量寄存器、新值和作为向量化数据元素的偏移。例如,@Line操作数可以是包括8个64位高速缓存行地址的512位向量寄存器。New Value操作数可以是256位向量寄存器,其包括要被存储到由@Line操作数标识的8个高速缓存行中的8个32位值。Offset操作数可以是包括8个8位偏移的64位向量寄存器。CondVectorStore使得能实现利用单个指令的多个值到一个或多个高速缓存行中的条件存储。
图1示出了根据实施例的主机平台的示例性配置。平台硬件102包括经由互连112耦合到存储器接口106、末级高速缓存(LLC)108和输入/输出(I/O)接口110的中央处理单元(CPU)104。LLC可以可选地被称为3级(L3)高速缓存。在一些实施例中,前述组件的全部或一部分可以集成在片上系统(SoC)上。存储器接口106被配置成促进对系统存储器113的访问,系统存储器113通常将与SoC分离。
CPU 104包括包含M个处理器核心114的核心部分,每个处理器核心114包括本地1级(L1)和2级(L2)高速缓存116。可选地,L2高速缓存可以被称为“中级高速缓存”(MLC)。L1、L2和LLC高速缓存中的每个与一个或多个相应的高速缓存代理(未示出)相关联。如例示的,每个处理器核心114具有到互连112的相应连接118,并且独立于其他处理器核心操作。
为简单起见,互连112被示出为表示单个互连结构的单个双端箭头;然而,实际上,互连112例示了处理器或SoC内的一个或多个互连结构,并且可以包括互连段或域的层次结构,其采用单独的协议,并且包括用于在互连段/域之间对接的适用桥。例如,存储器和处理器核心所连接到的互连层次结构的部分可以包括采用第一协议的一致(coherent)存储器域,而层次结构中的较低级别处的互连将一般用于I/O访问并且采用非一致域。处理器或SoC上的互连结构可以包括任何现有的互连结构,诸如总线以及单或多路串行点对点、环形或网状互连结构。
I/O接口110例示了由平台硬件102提供的各种I/O接口。一般地,I/O接口110可以实现为分立组件(诸如ICH(I/O控制器中枢)等),或者它可以在SoC上实现。此外,I/O接口110还可以实现为I/O层次结构,诸如快速外围组件互连(PCIeTM)I/O层次结构。I/O接口110还促进各种I/O资源和设备与其他平台组件之间的通信。这些包括网络接口控制器(NIC)120,其被配置成促进对网络122的访问,以及各种其他I/O设备,其包括固件存储124、磁盘/SSD控制器126和磁盘驱动器128。更一般地,磁盘驱动器128代表各种类型的非易失性存储设备,其包括基于磁和光的存储设备,以及固态存储设备,诸如固态驱动器(SSD)或闪存。
CPU 104的多个核心114用于执行各种软件组件130,诸如模块和应用,其存储在诸如由磁盘驱动器128描绘的一个或多个非易失性存储设备中。可选地,软件组件130中的全部或者一部分可以存储在经由网络122访问的一个或多个存储设备(未示出)上。
在启动或运行时操作期间,各种软件组件130和固件132被加载到系统存储器113中并被作为包括执行线程等的进程在核心114上执行。取决于特定处理器或SoC架构,给定的“物理”核心可以实现为一个或多个逻辑核心,其中进程被分配给各种逻辑核心。例如,在Intel®超线程™架构下,每个物理内核都实现为两个逻辑内核。在用于平台硬件102的典型系统引导下,将在系统存储器113中加载和配置固件132,然后启动主机操作系统(OS)。
图2示出了图1的实施例所采用的存储器一致性架构的抽象视图。在诸如许多Intel®处理器所采用的该架构和类似架构下,L1和L2高速缓存是一致存储器域的一部分,在其下存储器一致性由处理器核心200中的一致性机构来管理。每个核心104包括L1指令(IL1)高速缓存116I和L1数据高速缓存(DL1)116D以及L2高速缓存118。这些高速缓存中的每个与组成一致性机构的一部分的相应高速缓存代理(未示出)相关联。L2高速缓存118被描绘为非包含性的,意味着它们不包括L1指令和数据高速缓存中的任何高速缓存行的副本用于其相应核心。作为选项,L2可以包括L1,或者可以部分地包括L1。此外,L3(也称为LLC)可以不包括L2。作为又一选项,L1和L2可以由占用高速缓存层次结构中的单个级别的高速缓存所替换。
LLC被认为是“非核心”202的一部分,其中通过一致性代理来扩展存储器一致性,导致附加的开销和处理器周期。如所示,非核心202包括耦合到外部存储器113的存储器控制器106和全局队列204。全局队列204还耦合到L3高速缓存108和QuickPathInterconnect®(QPI)接口206。可选地,接口206可以包括Keiser技术接口(KTI)。L3高速缓存108(其在该架构中起LLC的作用)是包含性的,意味着它包括L1和L2高速缓存中的每个高速缓存行的副本。如公知的,随着远离核心,高速缓存级别的大小增加。然而,随着高速缓存大小增加,访问高速缓存中的高速缓存行时招致的等待时间也增加。L1高速缓存是最小的(例如,32-64千字节(KB)),其中L2高速缓存稍大(例如,256-640KB),并且LLC比典型的L2高速缓存大一个数量级左右(例如,8-16MB)。尽管如此,与系统存储器的大小相比,这些高速缓存的大小显得矮小,系统存储器通常大约为千兆字节。一般地,存储器层次结构中的给定级别处的高速缓存行的大小跨存储器层次结构是一致的,并且为了简单和历史引用,系统存储器中的存储器行也称为高速缓存行,即使它们实际上不在高速缓存中。还要注意,全局队列204的相当非常小,因为它被设计成仅暂时缓冲在各种高速缓存、存储器控制器106和QPI接口206之间传送的高速缓存行。
图3例示了使用针对所有权的读和请求操作的组合的典型存储器读/写访问序列。在图3中,消息流程图300在多核心处理器平台上实现,所述多核心处理器平台包括请求者核心302,其包括请求者的L1高速缓存304;响应者核心308,其包括响应者的L1高速缓存310;以及L3高速缓存(例如,LLC)306。这些组件中的每个都具有相应的代理,如代理302A、304A、306A、308A和310A所描画的。值得注意的是,图3中未示出L2高速缓存,因为在该示例中,L1和L2高速缓存是非包含性的,并且高速缓存行的副本在L1高速缓存中。而且,从图3中省略了关于L3高速缓存内的高速缓存行的细节,以避免模糊基础讨论。相同的省略也适用于图4-6中例示的存储器访问序列。
在初始状态,图3中的高速缓存行312(即,目标高速缓存行)被缓存在响应者的L1高速缓存310中并被标记为(M)修改或(E)独占。事实上存储在响应者的L1高速缓存中的高速缓存行被表示为312Resp。请求者核心302期望读高速缓存行312。为了获得高速缓存行312的副本,请求者核心的代理302A向用于请求者的L1高速缓存304的代理304A发送的读请求314。由于请求者的L1高速缓存不包含高速缓存行312的副本,其导致L1未命中,并且代理304A将读请求316转发到用于L3高速缓存306的代理306A。响应于接收到读请求316,代理306A访问其窥探过滤器并检测到响应者的L1高速缓存310具有期望的目标高速缓存行312。因此,代理306A向用于响应者的L1高速缓存310的代理310A发送窥探请求320。响应于接收到窥探请求320,代理310A将其高速缓存行312Resp的副本设置成(S)共享状态并向代理306A发送包含高速缓存行312的副本的窥探响应324。代理306A继而将响应326中的高速缓存行312转发回到用于请求者的L1高速缓存的代理304A。代理304A将高速缓存行312Req缓存在请求者的L1高速缓存中以由请求者核心302读。
此后,请求者核心302希望经由写330修改其高速缓存行312Req的副本。然而,为了写到高速缓存行312Req,请求者核心302必须首先通过使存在于其他核心中的高速缓存行312的所有其他副本无效来建立高速缓存行312的所有权。为此,用于请求者的L1高速缓存的代理304A向用于L3高速缓存306的代理306A发送针对所有权的请求消息332。响应于接收到针对所有权的请求消息332并确定其窥探过滤器中的命中334,代理306A向响应者的L1高速缓存代理310A发送无效消息336。在接收到无效消息336时,代理310A将其高速缓存行312Resp的副本标记为(I)无效,并且向用于L3高速缓存306的代理306A返回响应340。代理306A继而向用于请求者的L1高速缓存304的代理304A返回完成消息342。在接收到指示请求者核心是高速缓存行312的单独所有者的完成消息时,其高速缓存行312Req的副本被标记为(E)独占。然后将数据写到高速缓存行312Req(如写 346所描画的),并将高速缓存行312Req标记为(M)修改。然后,代理304A向请求者核心的代理302A返回完成消息(未示出),表示写操作的结束。
图4例示了利用将读和无效广播组合的针对所有权的读操作的存储器读/写访问序列。消息流程图400在与图3的消息流程图300的多核心处理器平台类似的多核心处理器平台上实现。为了简化讨论,相同的记号将用于请求者核心、响应者核心、L3高速缓存及其相应代理。
在初始状态,高速缓存行412(即,目标高速缓存行)被缓存在响应者的L1高速缓存410中并被标记为(M)修改或(E)独占。事实上存储在响应者的L1高速缓存中的高速缓存行被表示为412Resp。请求者核心302希望向不在请求者的L1高速缓存304中的高速缓存行412执行写414。为了获得高速缓存行412的副本以及同时建立所有权,用于请求者的L1高速缓存304的代理304A向用于L3高速缓存306的代理306A发送针对所有权的读消息416。响应于接收到读请求316,代理306A访问其窥探过滤器并检测到响应者的L1高速缓存310具有期望的目标高速缓存行412。因此,代理306A向用于响应者的L1高速缓存310的代理310A发送窥探/无效请求420。响应于接收到窥探/无效请求420,代理310A将其高速缓存行412Resp的副本设置成(I)无效状态并且向代理306A发送具有被标记为(E)独占的高速缓存行412的副本的窥探响应424。代理306A继而将响应426中的高速缓存行412转发回到用于请求者的L1高速缓存的代理304A。代理304A将高速缓存行412Req缓存在请求者的L1高速缓存中。然后将数据写到高速缓存行412Req(如写 430所描画的),并将高速缓存行412Req标记为(M)修改。然后,代理304A向请求者核心的代理302A返回表示写操作的结束的完成消息432。
如图3和4所例示的,通过针对所有权的读或针对所有权的请求操作而使响应者的L1高速缓存中的目标高速缓存行的副本无效,不管无效是否合理。如上面讨论的,如果要写到目标高速缓存行中的值不与已经存储在该高速缓存行处的值不同,则这样的写请求的执行不仅是冗余且不必要的,而且倾向于引起其他核心中的高速缓存行无效,其可能潜在地导致所有权请求和窥探消息的不合期望的乒乓追踪。图5和6例示了利用针对所有权的条件读操作的本发明的实施例,其通过仅在将要做出对高速缓存行的实际修改时使高速缓存行无效来防止不必要的高速缓存行无效。图5例示了当要写到高速缓存行中的值与当前存储的值相同时的存储器消息流。在该情况下,针对所有权的条件读表现得像不对高速缓存行做出无效的普通读操作。在初始状态,高速缓存行512(即,目标高速缓存行)被缓存在响应者的L1高速缓存310中并被标记为(M)修改或(E)独占。事实上存储在响应者的L1高速缓存中的高速缓存行被表示为512Resp。请求者核心302想要将值写504到高速缓存行512。这次,代替单独的针对所有权的读和请求消息或者单个针对所有权的读消息,用于请求者的L1高速缓存304的代理304A向代理306A发送针对所有权的条件读(CondRFO)消息516连同要写到目标高速缓存行中的值。响应于接收到CondRFO消息3R16,代理306A访问其窥探过滤器并检测到响应者的L1高速缓存310具有期望的目标高速缓存行512。然后,代理306A将CondRFO消息连同值520转发给用于响应者的L1高速缓存310的代理310A。在接收到CondRFO消息420时,代理310A将其高速缓存行512Resp中的当前值(即,本地值)与要被写的值进行比较522,并发现这两个值是相同的。此检查的该结果指示向该高速缓存行的写是不必要的,并且不应当执行。因此,代理310A将不需要使其高速缓存行512Resp无效。相反,代理310A将高速缓存行512Resp设置成(S)共享状态,并将包含高速缓存行512的副本的响应524发送到代理306A。代理306A继而将在响应526中被标记(S)共享的高速缓存行512转发回到用于请求者的L1高速缓存的代理304A。代理304A将高速缓存行512Req缓存在请求者的L1高速缓存中以用于将来由请求者核心302读。然后,代理304A向请求者核心的代理302A返回表示写操作的结束的完成消息528。
图6例示了与图5的存储器消息流类似的存储器消息流。然而,这次,要被写的值不同于当前存储的值。用于响应者的L1高速缓存310的代理310A在确定要写到目标高速缓存行612Resp中的值不同于已经存储在那里的当前值(即,本地值)时,使高速缓存行612Resp无效。然后,代理310A向代理306A发送包含被标记(E)独占的高速缓存行512的副本的响应624。代理306A继而将响应626中的高速缓存行512转发回到用于请求者的L1高速缓存的代理304A。代理304A将高速缓存行612Req缓存在请求者的L1高速缓存中。然后将该值写到高速缓存行612Req(如写630所描画的),并将高速缓存行612Req标记为(M)修改。然后,代理304A向请求者核心的代理302A返回表示写操作的结束的完成消息632。
图7是例示用于处置用来修改高速缓存行的请求的方法的实施例的流程图。该方法适用于具有一致共享存储器的多核心和多处理器系统。虽然图7集中在该方法在多核心处理器中的应用上,但基础概念适用于其他共享存储器系统。在一个实施例中,该方法在多核心处理器的每个核心中实现,并且例如由核心的高速缓存代理执行。该方法在框700处开始。在框702处,接收用新值修改目标高速缓存行(CL)的请求。在一个实施例中,响应于存储指令的执行而生成所接收的请求,所述存储指令诸如是上面描述的新存储指令(例如,CondScalarStore和CondVectorStore)中的一个。根据实施例,CondVectorStore的执行生成多个请求,其中每个请求对应于由该指令的操作数标识的向量寄存器的数据元素位置。每个请求都标识目标高速缓存行和要写到目标高速缓存行中的新值。在一些实施例中,该请求还包括用于指定高速缓存行内的位置的高速缓存行偏移。在框704处,确定本地高速缓存是否包含对应于由所接收的请求标识的目标高速缓存行的本地高速缓存行。根据实施例,该确定涉及核心的高速缓存代理检查其缓存表以看是否存在与所接收的请求中包含的存储器地址匹配的高速缓存行条目。如果缓存表中不存在这样的高速缓存行条目(即,高速缓存未命中),则将针对所有权的条件读(CondRFO)消息发送或发布到多核心处理器系统中的一个或多个其他核心。根据实施例,CondRFO消息包括从所接收的请求获得的信息,诸如标识目标高速缓存行的信息,以及要存储的新值和高速缓存行偏移。在框720处,从所述一个或多个其他核心中的一个接收对CondRFO的响应。在一个实施例中,所接收的响应包括与CondRFO中的目标高速缓存行对应的高速缓存行的副本。高速缓存行的该副本被存储到本地高速缓存中,并且该方法继续到框704。
在框704处,如果确定本地高速缓存包含与所接收的请求中的目标高速缓存行对应的高速缓存行的副本,则该方法前进到框706并且确定高速缓存行副本的一致性状态。在一个实施例中,一致性状态是高速缓存或存储器一致性协议中的状态中的一个,诸如MESI协议的(M)修改、(E)独占、(S)共享、(I)无效状态。在框708处,确定与目标高速缓存行对应的高速缓存行的副本是否有效。根据实施例,这意味着高速缓存行副本的一致性状态未被标记(I)无效。换言之,高速缓存行的一致性状态是否被标记为如下有效状态中的一个:(M)修改、(E)独占或(S)共享。如果高速缓存行的副本有效,则在框710处从副本确定本地值。另一方面,如果高速缓存行的副本不处于有效状态中的一个中,则在框718处向多核心处理器系统中的一个或多个其他核心发送CondRFO。在框720处,核心接收针对CondRFO返回的响应。响应将包括被标记为(E)独占的高速缓存行的有效副本。然后将该接收的高速缓存行保存到本地高速缓存,并且该方法继续到框710。
在框710处,从本地高速缓存中的高速缓存行的有效副本确定本地值。根据实施例,通过将高速缓存行偏移应用于高速缓存行副本以标识高速缓存行内的位置来获得本地值。然后从所标识的位置读或提取值。在框712处,将所获得的本地值与来自所接收的请求的新值进行比较。如果所述值匹配,指示对目标高速缓存行的更新将是冗余且不必要的,则该过程在框724处结束。然而,如果本地值与新值不匹配,则需要向目标高速缓存行的写。在框714处,确定核心是否具有要修改的目标高速缓存行的所有权。根据实施例,这意味着确定高速缓存行副本的一致性状态是(E)独占还是(M)修改。如果核心不具有目标高速缓存行的所有权,使得高速缓存行副本处于(S)共享状态中,则在框722处,向一个或多个其他核心发送针对所有权的请求消息。在另一实施例中,代替常规的针对所有权的请求消息,可以发布上面描述的CondRFO消息。在框723处,接收到确认核心对高速缓存行的所有权的响应。一旦根据在框723处接收的确认或者基于在框714处做出的确定建立了对目标高速缓存行的所有权,高速缓存代理就在由高速缓存行偏移标识的位置处将新值存储在高速缓存行中,如由框714所例示的。然后,该过程在框724处结束。
如在处理器的高速缓存代理中实现的,图7中描述的方法的示例性实施例包括高速缓存代理响应于用新值修改目标高速缓存行的指令的执行而从请求者接收针对所有权的条件读请求。针对所有权的条件读请求标识目标高速缓存行和新值。然后,高速缓存代理从其本地高速缓存确定对应于目标高速缓存行的本地高速缓存行。接下来,高速缓存代理从本地高速缓存行确定本地值,并将本地值与新值进行比较。基于比较的结果,高速缓存代理在本地值与新值相同时将本地高速缓存行的一致性状态设置成(S)共享状态,或者在该值与新值不同时将本地高速缓存行的一致性状态设置成(I)无效。此外,高速缓存代理还将包括本地高速缓存行的副本的响应发送回到请求者。根据实施例,当本地值与新值相同时,将被发送回到请求的本地高速缓存行的副本的一致性状态设置成(S)共享,并且当本地值与新值不同时,将所述一致性状态设置成(E)独占。在实施例中,针对所有权的条件读请求包括用来标识目标高速缓存行的存储器地址和用于确定本地高速缓存中的本地值的高速缓存行偏移。为了从本地高速缓存行确定本地值,首先基于高速缓存行偏移赖标识本地高速缓存行中的位置,并且然后从所标识的位置读值。
图8是例示用于处置针对所有权的条件读(CondRFO)请求的方法的一个实施例的流程图。与图7中例示的方法一样,该方法适用于具有一致共享存储器的多核心和多处理器系统。虽然图8的方法集中在该方法在多核心处理器中的应用,但是基础概念适用于其他共享存储器系统。该方法在多核心处理器的每个核心中实现,并且例如由核心的高速缓存代理执行。该方法从框800开始。在框802处,多核心处理器系统中的核心或该核心的高速缓存代理从另一核心接收针对所有权的条件读(CondRFO)消息。CondRFO消息标识目标高速缓存行和新值。目标高速缓存行通常由存储器地址标识。在一些实施例中,CondRFO消息还包括高速缓存行偏移。参考框804,响应于接收到CondRFO,核心的高速缓存代理从对应于目标高速缓存行的本地高速缓存行确定本地值。根据实施例,该确定涉及核心的高速缓存代理检查其缓存表以看是否存在与来自CondRFO的目标高速缓存行匹配的高速缓存行条目。如果是这样,则将CondRFO中指定的偏移应用于本地高速缓存行以标识本地高速缓存行内的位置。然后从所标识的位置提取或读本地值。在框806处,在本地值和由CondRFO供应的新值之间做出比较。如果所述值匹配,则在框808处将本地高速缓存行的一致性状态设置成(S)共享。在框810处,生成包含本地高速缓存行的副本的响应消息。本地高速缓存行副本的一致性状态被设置成(S)共享。在框816处,将响应消息连同本地高速缓存行副本发送到CondRFO消息的发送者。另一方面,如果在框806处返回,本地值和新值之间的比较揭示所述值不相同,指示高速缓存行修改是必要的,则在框812处将本地高速缓存行的一致性状态设置成(I)无效。在框814处,生成包含本地高速缓存行的副本的响应消息。将本地高速缓存行副本的一致性状态设置成(E)独占。在框816处,将响应消息连同本地高速缓存行副本发送到CondRFO消息的发送者。该过程在框818处结束。
如在多核处理器中实现的,图8中描述的方法的示例性实施例包括解码条件存储指令的解码器电路,随后是执行经解码的条件存储指令以用新值修改目标高速缓存行的执行电路。处理器的高速缓存代理确定其本地高速缓存是否包含对应于目标高速缓存行的有效本地高速缓存行。响应于确定本地高速缓存不包含对应于目标高速缓存行的有效本地高速缓存行,高速缓存代理将针对所有权的条件读请求发送到处理器中的一个或多个其他核心。针对所有权的条件读请求标识目标高速缓存行和新值。根据实施例,响应于确定本地高速缓存确实包含对应于目标高速缓存行的有效本地高速缓存行,高速缓存代理然后从有效本地高速缓存行确定本地值并将本地值与新值进行比较。如果本地值与新值不同,则高速缓存代理接下来确定有效本地高速缓存行的一致性状态。在实施例中,有效本地高速缓存行的一致性状态可以是(M)修改、(E)独占或(S)共享中的一个。基于所确定的一致性状态,如果所确定的一致性状态是(S)共享,则高速缓存代理将新值写到有效本地高速缓存行,或者如果所确定的一致性状态不是(S)共享,则高速缓存代理将针对所有权的请求发送到多核心处理器的一个或多个其他核心。根据实施例,针对所有权的条件读请求包括用来标识目标高速缓存行的存储器地址和高速缓存行偏移。高速缓存行偏移用于标识多核心处理器的另核心上的远程CL中的远程值。要将所标识的远程值与新值进行比较。
图9A是例示根据本发明的实施例的示例性有序流水线和示例性寄存器重命名、无序发布/执行流水线两者的框图。图9B是例示根据本发明的实施例的要被包括在处理器中的有序架构核心的示例性实施例和示例性寄存器重命名、无序发布/执行架构核心两者的框图。图9A-B中的实线框例示了有序流水线和有序核心,而虚线框的可选附加例示了寄存器重命名、无序发布/执行流水线和核心。考虑到有序方面是无序方面的子集,将描述无序方面。
在图9A中,处理器流水线900包括取出阶段902、长度解码阶段904、解码阶段906、分配阶段908、重命名阶段910、调度(也称为分派或发布)阶段912、寄存器读/存储器读阶段914、执行阶段916、写回/存储器写阶段918、异常处置阶段922以及提交阶段924。
图9B示出处理器核心990,其包括被耦合到执行引擎硬件950的前端硬件930,并且两者都被耦合到存储器硬件970。核心990可以是精简指令集计算(RISC)核心、复杂指令集计算(CISC)核心、超长指令字(VLIW)核心、或者混合或替代核心类型。作为又一选项,核心990可以是专用核心,诸如例如网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(GPGPU)核心、图形核心等。
前端硬件930包括分支预测硬件932,所述分支预测硬件932被耦合到指令高速缓存硬件934,所述指令高速缓存硬件934被耦合到指令翻译后援缓冲器(TLB)936,所述指令翻译后援缓冲器(TLB)936被耦合到指令取出硬件938,所述指令取出硬件938被耦合到解码硬件940。解码硬件940(或解码器)可以解码指令,并且生成作为输出的一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号,其解码自原始指令、或以其他方式反映原始指令、或导出自原始指令。可以使用各种不同的机制来实现解码硬件940。合适机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核心990包括微代码ROM或存储针对某些宏指令的微代码的其他介质(例如,在解码硬件940中或否则在前端硬件930内)。解码硬件940被耦合到执行引擎硬件950中的重命名/分配器硬件952。
执行引擎硬件950包括重命名/分配器硬件952,其被耦合到引退硬件954和一组一个或多个调度器硬件956。调度器硬件956表示任何数目的不同调度器,包括保留站、中央指令窗口等。调度器硬件956被耦合到(一个或多个)物理寄存器文件硬件958。(一个或多个)物理寄存器文件硬件958中的每个表示一个或多个物理寄存器文件,其中的不同物理寄存器文件存储一个或多个不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,(一个或多个)物理寄存器文件硬件958包括向量寄存器硬件、写掩码寄存器硬件和标量寄存器硬件。这些寄存器硬件可以提供架构向量寄存器、向量掩码寄存器以及通用寄存器。(一个或多个)物理寄存器文件硬件958被引退硬件954重叠以说明可以(例如,使用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器文件;使用(一个或多个)将来文件、(一个或多个)历史缓冲器以及(一个或多个)引退寄存器文件;使用寄存器映射和寄存器池;等)实现寄存器重命名和无序执行的各种方式。引退硬件954和(一个或多个)物理寄存器文件硬件958被耦合到(一个或多个)执行集群960。(一个或多个)执行集群960包括一组一个或多个执行硬件962以及一组一个或多个存储器访问硬件964。执行硬件962可以实行各种操作(例如,移位、加法、减法、乘法)并且对各种数据类型(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)实行各种操作。虽然一些实施例可以包括专用于特定功能或功能集的多个执行硬件,但是其他实施例可以包括仅一个执行硬件或全部实行所有功能的多个执行硬件。调度器硬件956、(一个或多个)物理寄存器文件硬件958以及(一个或多个)执行集群960被示为可能是复数个,因为某些实施例针对某些数据/操作类型创建单独的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,其每个具有它们自己的调度器硬件、(一个或多个)物理寄存器文件硬件和/或执行集群——并且在单独的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有存储器访问硬件964的某些实施例)。还应理解的是,在使用单独的流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行的而其余是有序的。
该组存储器访问硬件964被耦合到存储器硬件970,所述存储器硬件970包括数据TLB硬件972,所述数据TLB硬件972被耦合到数据高速缓存硬件974,所述数据高速缓存硬件974被耦合到2级(L2)高速缓存硬件976。在一个示例性实施例中,存储器访问硬件964可以包括加载硬件、存储地址硬件和存储数据硬件,它们中的每个都被耦合到存储器硬件970中的数据TLB硬件972。指令高速缓存硬件934也被耦合到存储器硬件970中的2级(L2)高速缓存硬件976。L2高速缓存硬件976被耦合到一个或多个其他级别的高速缓存并最终耦合到主存储器。
作为示例,示例性寄存器重命名、无序发布/执行核心架构可以如下实现流水线900:1)指令取出938实行取出和长度解码阶段902和904;2)解码硬件940实行解码阶段906;3)重命名/分配器硬件952实行分配阶段908和重命名阶段910;4)调度器硬件956实行调度阶段912;5)(一个或多个)物理寄存器文件硬件958和存储器硬件970实行寄存器读/存储器读阶段914;执行集群960实行执行阶段916;6)存储器硬件970和(一个或多个)物理寄存器文件硬件958实行写回/存储器写阶段918;7)在异常处置阶段922中可能涉及各种硬件;以及8)引退硬件954和(一个或多个)物理寄存器文件硬件958实行提交阶段924。
核心990可以支持一个或多个指令集(例如,x86指令集(具有与较新的版本添加在一起的一些扩展);加利福尼亚州森尼韦尔的MIPS科技公司的MIPS指令集;加利福尼亚州森尼韦尔的ARM控股公司的ARM指令集(具有诸如NEON之类的可选附加扩展)),其包括本文中描述的(一个或多个)指令。在一个实施例中,核心990包括用来支持打包数据指令集扩展(例如,下面描述的AVX1、AVX2,和/或某个形式的通用向量友好指令格式(U=0和/或U=1))的逻辑,从而允许使用打包数据来实行由许多多媒体应用使用的操作。
应理解的是,核心可以支持多线程(执行两组或更多组并行的操作或线程),并且可以以多种方式来这样做,所述多种方式包括时间切片多线程、同时多线程(其中单个物理核心为物理核心正同时进行多线程的线程中的每个提供逻辑核心)或者其组合(例如,时间切片取出和解码以及其后的同时多线程,诸如在Intel®超线程技术中的那样)。
虽然在无序执行的情境中描述了寄存器重命名,但是应理解的是,寄存器重命名可以用在有序架构中。虽然处理器的例示实施例还包括单独的指令和数据高速缓存硬件934/974以及共享的L2高速缓存硬件976,但是替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如1级(L1)内部高速缓存或多级内部高速缓存。在一些实施例中,系统可以包括内部高速缓存和在核心和/或处理器外部的外部高速缓存的组合。替代地,所有高速缓存都可以在核心和/或处理器外部。
图10是根据本发明的实施例的可以具有不止一个核心、可以具有集成存储器控制器并且可以具有集成图形的处理器1000的框图。图10中的实线框例示了具有单个核心1002A、系统代理1010、一组一个或多个总线控制器硬件1016的处理器1000,而虚线框的可选附加例示了具有多个核心1002A-N、系统代理硬件1010中的一组一个或多个集成存储器控制器硬件1014以及专用逻辑1008的替代处理器1000。
因此,处理器1000的不同实现可以包括:1)具有专用逻辑1008以及核心1002A-N的CPU,所述专用逻辑1008是集成图形和/或科学(吞吐量)逻辑(其可以包括一个或多个核心),所述核心1002A-N是一个或多个通用核心(例如,通用有序核心、通用无序核心、这两个的组合);2)具有核心1002A-N的协处理器,所述核心1002A-N是主要意图用于图形和/或科学(吞吐量)的大量专用核心;以及3)具有核心1002A-N的协处理器,所述核心1002A-N是大量通用有序核心。因此,处理器1000可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量众集成核心(MIC)协处理器(包括30个或更多个核心)、嵌入式处理器等。可以在一个或多个芯片上实现处理器。处理器1000可以是一个或多个基板的一部分,和/或可以被使用多个工艺技术(诸如例如BiCMOS、CMOS或NMOS)中的任何工艺技术在一个或多个基板上实现。
存储器层次结构包括核心内的一个或多个级别的高速缓存、一组一个或多个共享高速缓存硬件1006以及被耦合到该组集成存储器控制器硬件1014的外部存储器(未示出)。该组共享高速缓存硬件1006可以包括一个或多个中级高速缓存(诸如2级(L2)、3级(L3)、4级(L4)或其他级别的高速缓存)、末级高速缓存(LLC)和/或其组合。虽然在一个实施例中基于环的互连硬件1012将集成图形逻辑1008、该组共享高速缓存硬件1006和系统代理硬件1010/集成存储器控制器硬件1014互连,但是替代实施例可以使用任何数目的公知技术用于互连这样的硬件。在一个实施例中,在一个或多个高速缓存硬件1006和核心1002A-N之间维持一致性。
在一些实施例中,核心1002A-N中的一个或多个能够进行多线程。系统代理1010包括协调和操作核心1002A-N的那些组件。系统代理硬件1010可以包括例如功率控制单元(PCU)和显示硬件。PCU可以是或者包括调节核心1002A-N和集成图形逻辑1008的功率状态所需的逻辑和组件。显示硬件用于驱动一个或多个外部连接的显示器。
就架构指令集而言,核心1002A-N可以是同构的或异构的;即,核心1002A-N中的两个或更多个可以能够执行相同的指令集,而其他核心可以能够执行该指令集的仅子集或者不同的指令集。在一个实施例中,核心1002A-N是异构的并且包括下面描述的“小”核心和“大”核心两者。
图11-14是示例性计算机架构的框图。针对膝上型计算机、台式机、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式设备以及各种其他电子设备的本领域中已知的其他系统设计和配置也是合适的。一般地,能够合并如本文中公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般是合适的。
现在参考图11,示出了依照本发明的一个实施例的系统1100的框图。系统1100可以包括一个或多个处理器1110、1115,其被耦合到控制器中枢1120。在一个实施例中,控制器中枢1120包括图形存储器控制器中枢(GMCH)1190以及输入/输出中枢(IOH)1150(其可以在单独的芯片上);GMCH 1190包括存储器1140和协处理器1145所耦合到的存储器控制器和图形控制器;IOH 1150将输入/输出(I/O)设备1160耦合到GMCH 1190。替代地,存储器控制器和图形控制器中的一个或两者被集成在(如本文中描述的)处理器内,存储器1140和协处理器1145被直接耦合到处理器1110和在具有IOH 1150的单个芯片中的控制器中枢1120。
在图11中用虚线表示附加处理器1115的可选性质。每个处理器1110、1115可以包括本文中描述的处理核心中的一个或多个并且可以是处理器1000的某个版本。
存储器1140可以例如是动态随机存取存储器(DRAM)、相变存储器(PCM)或这两个的组合。针对至少一个实施例,控制器中枢1120经由多点总线(诸如前侧总线(FSB))、点对点接口或者类似连接1195与(一个或多个)处理器1110、1115通信。
在一个实施例中,协处理器1145是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器中枢1120可以包括集成图形加速器。
就包括架构、微架构、热、功率消耗特性等的指标的量度范围而言,在物理资源1110、1115之间可能存在多种差异。
在一个实施例中,处理器1110执行控制一般类型的数据处理操作的指令。嵌入在指令内的可以是协处理器指令。处理器1110将这些协处理器指令识别为具有应由附连的协处理器1145来执行的类型。因此,处理器1110在协处理器总线或其他互连上将这些协处理器指令(或表示协处理器指令的控制信号)发给协处理器1145。(一个或多个)协处理器1145接受并执行接收到的协处理器指令。
现在参考图12,示出了依照本发明的实施例的第一较具体的示例性系统1200的框图。如图12中所示,多处理器系统1200是点对点互连系统,并且包括经由点对点互连1250所耦合的第一处理器1270和第二处理器1280。处理器1270和1280中的每个可以是处理器1000的某个版本。在本发明的一个实施例中,处理器1270和1280分别是处理器1110和1115,而协处理器1238是协处理器1145。在另一实施例中,处理器1270和1280分别是处理器1110和协处理器1145。
处理器1270和1280被示出分别包括集成存储器控制器(IMC)硬件1272和1282。处理器1270还包括点对点(P-P)接口1276和1278,作为其总线控制器硬件的一部分;类似地,第二处理器1280包括P-P接口1286和1288。处理器1270、1280可以使用P-P接口电路1278、1288经由点对点(P-P)接口1250交换信息。如图12中所示,IMC 1272和1282将处理器耦合到相应的存储器,即存储器1232和存储器1234,它们可以是本地附连到相应处理器的主存储器的部分。
处理器1270、1280可以每个使用点对点接口电路1276、1294、1286、1298经由单独的P-P接口1252、1254与芯片组1290交换信息。芯片组1290可以可选地经由高性能接口1239与协处理器1238交换信息。在一个实施例中,协处理器1238是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享高速缓存(未示出)可以被包括在任一处理器中或者在两个处理器外部,但经由P-P互连与处理器连接,使得如果处理器被置于低功率模式中则任一或两个处理器的本地高速缓存信息可以被存储在共享高速缓存中。
芯片组1290可以经由接口1296耦合到第一总线1216。在一个实施例中,第一总线1216可以是外围组件互连(PCI)总线,或者诸如PCI Express总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不被如此限制。
如图12中所示,各种I/O设备1214连同总线桥1218可以被耦合到第一总线1216,所述总线桥1218将第一总线1216耦合到第二总线1220。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如图形加速器或数字信号处理(DSP)硬件)、现场可编程门阵列或任何其他处理器之类的一个或多个附加处理器1215被耦合到第一总线1216。在一个实施例中,第二总线1220可以是低引脚计数(LPC)总线。各种设备可以被耦合到第二总线1220,包括例如键盘和/或鼠标1222、通信设备1227以及诸如盘驱动器或其他大容量存储设备之类的存储硬件1228,其在一个实施例中可以包括指令/代码和数据1230。此外,音频I/O 1224可以被耦合到第二总线1220。注意,其他架构是可能的。例如,代替图12的点对点架构,系统可以实现多点总线或其他这样的架构。
现在参考图13,示出了依照本发明的实施例的第二较具体的示例性系统1300的框图。图12和13中的相似元件具有相似的参考数字,并且已经从图13中省略了图12的某些方面以便避免使图13的其他方面模糊。
图13例示了处理器1270、1280可以分别包括集成存储器和I/O控制逻辑(“CL”)1272和1282。因此,CL 1272、1282包括集成存储器控制器硬件并且包括I/O控制逻辑。图13例示了不仅存储器1232、1234被耦合到CL 1272、1282,而且I/O设备1314也被耦合到控制逻辑1272、1282。传统I/O设备1315被耦合到芯片组1290。
现在参考图14,示出了依照本发明的实施例的SoC 1400的框图。图10中的类似元件具有相似的参考数字。而且,虚线框是更高级的SoC上的可选特征。在图14中,互连硬件1402被耦合到:应用处理器1410,其包括一组一个或多个核心1002A-N和共享高速缓存硬件1006;系统代理硬件1010;总线控制器硬件1016;集成存储器控制器硬件1014;一组一个或多个协处理器1420,其可以包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)硬件1430;直接存储器访问(DMA)硬件1432;以及用于耦合到一个或多个外部显示器的显示硬件1440。在一个实施例中,(一个或多个)协处理器1420包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
可以以硬件、软件、固件或这样的实现方法的组合来实现本文中公开的机制的实施例。本发明的实施例可以被实现为计算机程序或程序代码,其在包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备的可编程系统上执行。
可以应用诸如图12中例示的代码1230之类的程序代码来输入指令以实行本文中描述的功能并生成输出信息。可以以已知方式将输出信息应用于一个或多个输出设备。出于本申请的目的,处理系统包括具有处理器的任何系统,所述处理器诸如例如是数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
可以以高级过程编程语言或面向对象编程语言来实现所述程序代码以与处理系统通信。也可以以汇编语言或机器语言来实现所述程序代码,如果期望的话。事实上,本文中描述的机制在范围上不限于任何特定的编程语言。在任何情况下,语言可以是编译语言或解释语言。
可以通过存储在机器可读介质上的表示处理器内的各种逻辑的代表性指令来实现至少一个实施例的一个或多个方面,所述指令在被机器读时使该机器制作用来实行本文中描述的技术的逻辑。称为“IP核心”的这样的表示可以被存储在有形的机器可读介质上并被供应给各种消费者或制造设施来加载到实际上制造逻辑或处理器的制作机器中。
这样的机器可读存储介质可以不限制地包括由机器或设备制造或形成的非暂时性有形物品布置,其包括存储介质,诸如硬盘、任何其他类型的盘(包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写设备(CD-RW)以及磁光盘)、半导体设备(诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM))、磁卡或光卡、或者适于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括包含指令或包含设计数据(诸如硬件描述语言(HDL))的非暂时性有形机器可读介质,所述设计数据定义本文中描述的结构、电路、装置、处理器和/或系统特征。这样的实施例也可以称为程序产品。
在一些情况下,可以使用指令转换器来将指令从源指令集转换到目标指令集。例如,指令转换器可以(例如,使用静态二进制翻译、包括动态编译的动态二进制翻译)将指令翻译、使指令变形、对指令仿真或以其他方式将指令转换成要由核心处理的一个或多个其他指令。可以以软件、硬件、固件或其组合来实现指令转换器。指令转换器可以在处理器上、处理器外、或者部分在处理器上并且部分在处理器外。
图15是根据本发明的实施例的对比将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用的框图。在例示实施例中,指令转换器是软件指令转换器,但是替代地,可以以软件、固件、硬件或其各种组合来实现指令转换器。图15示出了可以使用x86编译器1504来编译采用高级语言1502的程序以生成x86二进制代码1506,所述x86二进制代码1506可以由具有至少一个x86指令集核心的处理器1516本机地执行。具有至少一个x86指令集核心的处理器1516表示可以通过如下来实行与具有至少一个x86指令集核心的Intel处理器基本相同的功能的任何处理器:兼容地执行或以其他方式处理(1)Intel x86指令集核心的指令集的很大一部分或(2)被作为目标的要在具有至少一个x86指令集核心的Intel处理器上运行的应用或其他软件的目标代码版本,以便实现与具有至少一个x86指令集核心的Intel处理器基本相同的结果。x86编译器1504表示可用于生成x86二进制代码1506(例如,目标代码)的编译器,所述x86二进制代码1506可以被在具有或不具有附加链接处理的情况下在具有至少一个x86指令集核心的处理器1516上执行。类似地,图15示出了可以使用替代指令集编译器1508来编译采用高级语言1502的程序以生成替代指令集二进制代码1510,所述替代指令集二进制代码1510可以由不具有至少一个x86指令集核心的处理器1514(例如,具有执行加利福尼亚州森尼韦尔的MIPS科技公司的MIPS指令集和/或执行加利福尼亚州森尼韦尔的ARM控股公司的ARM指令集的核心的处理器)本机地执行。指令转换器1512用于将x86二进制代码1506转换成可由不具有x86指令集核心的处理器1514本机地执行的代码。该经转换的代码不太可能与替代指令集二进制代码1510相同,因为能够做到这一点的指令转换器难以制造;然而,经转换的代码将完成一般操作,并由来自替代指令集的指令组成。因此,指令转换器1512表示软件、固件、硬件或它们的组合,其通过仿真、模拟或任何其他过程而允许不具有x86指令集处理器或核心的处理器或其他电子设备执行x86二进制代码1506。
尽管已经参考特定实现描述了一些实施例,但是根据一些实施例,其他实现也是可能的。另外,不需要以例示和描述的特定方式来布置附图中例示和/或本文中描述的元件或其他特征的布置和/或顺序。根据一些实施例,许多其他布置是可能的。
在图中示出的每个系统中,在一些情况下,元件可以每个具有相同的参考号码或不同的参考号码,以暗示所表示的元件可以是不同的和/或类似的。然而,元件可能足够灵活以具有不同的实现并且与本文中示出或描述的系统中的一些或全部一起工作。图中示出的各种元件可以相同或不同。将哪一个称为第一元件和将哪一个称为第二元件是任意的。
在说明书和权利要求书中,可以使用术语“耦合”和“连接”连同它们的派生词。应当理解,这些术语并不旨在作为彼此的同义词。而是,在特定实施例中,“连接”可用于指示两个或更多个元件彼此直接物理或电接触。“耦合”可以意味着两个或更多个元件直接物理或电接触。然而,“耦合”还可以意味着两个或更多个元件彼此不直接接触,但还仍然彼此协作或交互。
实施例是本发明的实现或示例。说明书中对“实施例”、“一个实施例”、“一些实施例”或“其他实施例”的引用意味着结合实施例描述的特定特征、结构或特性被包括在本发明的至少一些实施例、但不一定所有实施例中。各种出现“实施例”、“一个实施例”或“一些实施例”不一定都指代相同的实施例。
并非本文中描述和例示的所有组件、特征、结构、特性等都需要被包括在一个或多个特定实施例中。如果例如说明书陈述了组件、特征、结构或特性“可”、“可能”、“可以”或“能够”被包括,则不要求包括该特定组件、特征、结构或特性。如果说明书或权利要求书提到“一”或“一个”元件,则那并不意味着仅存在一个元件。如果说明书或权利要求书提到“附加”元件,则那并不排除存在不止一个附加元件。
本发明的所例示的实施例的以上描述(包括摘要中描述的事物)并非旨在是详尽的或将本发明限于所公开的精确形式。虽然出于说明性目的在本文中描述了本发明的特定实施例和示例,但是如相关领域技术人员将认识到的,在本发明的范围内各种等同修改是可能的。根据以上详细描述,可以对本发明做出这些修改。以下权利要求中使用的术语不应被解释为将本发明限于说明书和附图中公开的特定实施例。而是,本发明的范围要完全由以下权利要求确定,所述权利要求要被依照权利要求解释的既定原则来解释。
Claims (26)
1.一种在多核心处理器中实现的方法,所述方法包括:
响应于用新值修改目标高速缓存行CL的指令的执行,从请求者接收针对所有权的条件读CondRFO,CondRFO标识目标CL和新值;
从本地高速缓存确定与目标CL对应的本地CL;
从本地CL确定本地值;
将本地值与新值进行比较;
当本地值与新值相同时,将本地CL的一致性状态设置成S共享;
当本地值与新值不同时,将本地CL的一致性状态设置成I无效;以及
向请求者发送响应,其中响应包括本地CL的副本。
2.根据权利要求1所述的方法,还包括:
当本地值与新值相同时,将发送给请求者的本地CL的副本的一致性状态设置成S共享;以及
当本地值与新值不同时,将发送给请求者的本地CL的副本的一致性状态设置成E独占。
3.根据权利要求1所述的方法,其中CondRFO包括用来标识目标CL的存储器地址。
4.根据权利要求1所述的方法,其中CondRFO包括要用于确定本地CL中的本地值的CL偏移。
5.根据权利要求4所述的方法,其中从本地CL确定本地值包括:
基于CL偏移来标识本地CL中的位置;以及
从所标识的位置读值。
6.一种在多核心处理器中实现的方法,所述方法包括:
解码条件存储指令;
执行经解码的条件存储指令以用新值修改目标高速缓存行CL;
确定本地高速缓存是否包含与目标CL对应的有效本地CL;以及
响应于确定本地高速缓存不包含有效本地CL,将针对所有权的条件读CondRFO发送到多核心处理器中的一个或多个远程核心,其中CondRFO标识目标CL和新值。
7.根据权利要求6所述的方法,其中有效本地CL包括M修改、E独占或S共享的一致性状态。
8.根据权利要求6所述的方法,其中响应于确定本地高速缓存包含与目标CL对应的有效本地CL,还包括:
从有效本地CL确定本地值;
将本地值与新值进行比较;
响应于确定本地值与新值不同,确定有效本地CL的一致性状态;以及
当所确定的一致性状态为S共享时,将新值写到有效本地CL。
9.根据权利要求8所述的方法,其中响应于确定有效本地CL的一致性状态不是S共享,还包括:
向多核心处理器中的一个或多个核心发送针对所有权的请求。
10.根据权利要求6所述的方法,其中CondRFO包括标识目标CL的存储器地址。
11.根据权利要求6所述的方法,其中CondRFO包括CL偏移,所述CL偏移用于标识所述一个或多个远程核心中的一个上的远程CL中的远程值,要将远程值与新值进行比较。
12.一种处理装置,包括:
通过互连而通信地耦合的多个硬件处理器核心,每个硬件处理器核心要包括相应的本地高速缓存,其中所述多个硬件处理器核心中的第一处理器核心要包括高速缓存代理电路,所述高速缓存代理逻辑电路要:
响应于所述多个硬件处理器核心中的第二处理器核心执行用新值修改目标高速缓存行CL的指令,从第二处理器核心接收针对所有权的条件读CondRFO,CondRFO标识目标CL和新值;
从第一处理器核心的本地高速缓存确定与目标CL对应的本地CL;
从本地CL确定本地值;
将本地值与新值进行比较;
当本地值与新值相同时,将本地CL的一致性状态设置成S共享;
当本地值与新值不同时,将本地CL的一致性状态设置成I无效;以及
向第二处理器核心发送响应,其中响应包括本地CL的副本。
13.根据权利要求12所述的处理装置,其中高速缓存代理电路要:
在本地值与新值相同时,将发送给第二处理器核心的本地CL的副本的一致性状态设置成S共享;以及
在本地值与新值不同时,将发送给第二处理器核心的本地CL的副本的一致性状态设置成E独占。
14.根据权利要求12所述的处理装置,其中CondRFO包括用来标识目标CL的存储器地址。
15.根据权利要求12所述的处理装置,其中CondRFO包括要用于确定本地CL中的本地值的CL偏移。
16.根据权利要求15所述的处理装置,其中从本地CL确定本地值包括:
基于CL偏移来标识本地CL中的位置;以及
从所标识的位置读值。
17.根据权利要求12所述的处理装置,其中本地高速缓存是2级L2高速缓存。
18.根据权利要求12所述的处理装置,其中本地高速缓存是中级高速缓存MLC。
19.一种处理装置,包括:
通过互连而通信地耦合的多个硬件处理器核心,每个硬件处理器核心要包括相应的本地高速缓存,其中所述多个硬件处理器核心中的第一处理器核心要包括:
解码器电路,用来解码条件存储指令;
执行电路,用来执行经解码的条件存储指令以用新值修改目标高速缓存行CL;
高速缓存代理电路,用来:
确定本地高速缓存是否包含与目标CL对应的有效本地CL;以及
响应于确定本地高速缓存不包含有效本地CL,将向所述多个硬件处理器核心中的一个或多个其他核心发送针对所有权的条件读CondRFO,其中CondRFO标识目标CL和新值。
20.根据权利要求19所述的处理装置,其中有效本地CL包括M修改、E独占或S共享的一致性状态。
21.根据权利要求19所述的处理装置,其中响应于确定本地高速缓存包含与目标CL对应的有效本地CL,高速缓存代理电路要:
从有效本地CL确定本地值;
将本地值与新值进行比较;
响应于确定本地值与新值不同,确定有效本地CL的一致性状态;以及
当所确定的一致性状态为S共享时,将新值写到有效本地CL。
22.根据权利要求21所述的处理装置,其中响应于确定有效本地CL的一致性状态不是(S)共享,高速缓存代理电路要:
向所述多个硬件处理器核心中的所述一个或多个其他核心发送针对所有权的请求。
23.根据权利要求19所述的处理装置,其中CondRFO包括标识目标CL的存储器地址。
24.根据权利要求19所述的处理装置,其中CondRFO包括CL偏移,所述CL偏移用于标识所述多个硬件处理器核心中的所述一个或多个其他核心上的远程CL中的远程值,要将远程值与新值进行比较。
25.一种其上存储有代码的机器可读介质,当所述代码被执行时促使所述机器执行根据权利要求1-5中任一项所述的方法。
26.一种其上存储有代码的机器可读介质,当所述代码被执行时促使所述机器执行根据权利要求6-11中任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/EP2016/001627 WO2018059655A1 (en) | 2016-09-30 | 2016-09-30 | Method and apparatus for smart store operations with conditional ownership requests |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109661656A CN109661656A (zh) | 2019-04-19 |
CN109661656B true CN109661656B (zh) | 2023-10-03 |
Family
ID=57121180
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680089060.2A Active CN109661656B (zh) | 2016-09-30 | 2016-09-30 | 用于利用条件所有权请求的智能存储操作的方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11016893B2 (zh) |
CN (1) | CN109661656B (zh) |
WO (1) | WO2018059655A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10606755B2 (en) * | 2017-06-30 | 2020-03-31 | Intel Corporation | Method and system for performing data movement operations with read snapshot and in place write update |
CN113168400B (zh) * | 2018-12-26 | 2025-02-28 | 华为技术有限公司 | 一种数据读取方法、装置及多核处理器 |
US11321146B2 (en) | 2019-05-09 | 2022-05-03 | International Business Machines Corporation | Executing an atomic primitive in a multi-core processor system |
US11681567B2 (en) | 2019-05-09 | 2023-06-20 | International Business Machines Corporation | Method and processor system for executing a TELT instruction to access a data item during execution of an atomic primitive |
US11809899B2 (en) * | 2019-06-28 | 2023-11-07 | Intel Corporation | Methods and apparatus for accelerating virtual machine migration |
US10802967B1 (en) * | 2019-06-28 | 2020-10-13 | Intel Corporation | Partial write management in a multi-tiled compute engine |
US10896135B1 (en) * | 2019-09-03 | 2021-01-19 | Microsoft Technology Licensing, Llc | Facilitating page table entry (PTE) maintenance in processor-based devices |
WO2021142612A1 (zh) * | 2020-01-14 | 2021-07-22 | 华为技术有限公司 | 安全隔离方法、装置以及计算机系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102103484A (zh) * | 2009-12-18 | 2011-06-22 | 英特尔公司 | 用于启用处理器等待状态的指令 |
CN104937539A (zh) * | 2012-11-28 | 2015-09-23 | 英特尔公司 | 用于提供推入缓冲器复制和存储功能的指令和逻辑 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5404483A (en) * | 1990-06-29 | 1995-04-04 | Digital Equipment Corporation | Processor and method for delaying the processing of cache coherency transactions during outstanding cache fills |
JP3269967B2 (ja) * | 1996-04-24 | 2002-04-02 | 株式会社日立製作所 | キャッシュコヒーレンシ制御方法、および、これを用いたマルチプロセッサシステム |
US6098156A (en) | 1997-07-22 | 2000-08-01 | International Business Machines Corporation | Method and system for rapid line ownership transfer for multiprocessor updates |
JP3897218B2 (ja) * | 1999-10-08 | 2007-03-22 | 富士通株式会社 | キャッシュ装置及び制御方法 |
US6615320B2 (en) * | 2001-02-12 | 2003-09-02 | International Business Machines Corporation | Store collapsing mechanism for SMP computer system |
US7620954B2 (en) | 2001-08-08 | 2009-11-17 | Hewlett-Packard Development Company, L.P. | Mechanism for handling load lock/store conditional primitives in directory-based distributed shared memory multiprocessors |
US6658539B2 (en) * | 2001-10-16 | 2003-12-02 | International Business Machines Corporation | Super-coherent data mechanisms for shared caches in a multiprocessing system |
EP1363188B1 (en) * | 2002-05-15 | 2007-08-29 | Broadcom Corporation | Load-linked/store conditional mechanism in a cc-numa (cache-coherent nonuniform memory access) system |
US6813694B2 (en) * | 2002-08-08 | 2004-11-02 | International Business Machines Corporation | Local invalidation buses for a highly scalable shared cache memory hierarchy |
US6990559B2 (en) * | 2002-10-03 | 2006-01-24 | Hewlett-Packard Development Company, L.P. | Mechanism for resolving ambiguous invalidates in a computer system |
US7017031B2 (en) * | 2002-10-10 | 2006-03-21 | International Business Machines Corporation | Method, apparatus and system for managing released promotion bits |
US6898687B2 (en) * | 2002-12-13 | 2005-05-24 | Sun Microsystems, Inc. | System and method for synchronizing access to shared resources |
US7496713B1 (en) * | 2004-07-21 | 2009-02-24 | Sun Microsystems, Inc. | Method and apparatus for maintaining cache coherency in a memory system with shared only cache memories |
JP4803983B2 (ja) * | 2004-09-14 | 2011-10-26 | パナソニック株式会社 | 演算処理装置 |
US7434007B2 (en) * | 2005-03-29 | 2008-10-07 | Arm Limited | Management of cache memories in a data processing apparatus |
US7437520B2 (en) * | 2005-07-11 | 2008-10-14 | International Business Machines Corporation | Adaptive snoop-and-forward mechanisms for multiprocessor systems |
US7480771B2 (en) | 2005-08-17 | 2009-01-20 | Sun Microsystems, Inc. | Conditional synchronization mechanisms allowing multiple store operations to become visible while a flagged memory location is owned and remains unchanged |
US7853752B1 (en) * | 2006-09-29 | 2010-12-14 | Tilera Corporation | Caching in multicore and multiprocessor architectures |
US20080320236A1 (en) * | 2007-06-25 | 2008-12-25 | Makoto Ueda | System having cache snoop interface independent of system bus interface |
US7966453B2 (en) | 2007-12-12 | 2011-06-21 | International Business Machines Corporation | Method and apparatus for active software disown of cache line's exlusive rights |
US8375170B2 (en) * | 2010-02-12 | 2013-02-12 | Arm Limited | Apparatus and method for handling data in a cache |
US8935485B2 (en) * | 2011-08-08 | 2015-01-13 | Arm Limited | Snoop filter and non-inclusive shared cache memory |
US9727475B2 (en) * | 2014-09-26 | 2017-08-08 | Intel Corporation | Method and apparatus for distributed snoop filtering |
-
2016
- 2016-09-30 WO PCT/EP2016/001627 patent/WO2018059655A1/en active Application Filing
- 2016-09-30 US US16/329,595 patent/US11016893B2/en active Active
- 2016-09-30 CN CN201680089060.2A patent/CN109661656B/zh active Active
-
2021
- 2021-05-24 US US17/328,366 patent/US11550721B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102103484A (zh) * | 2009-12-18 | 2011-06-22 | 英特尔公司 | 用于启用处理器等待状态的指令 |
CN104937539A (zh) * | 2012-11-28 | 2015-09-23 | 英特尔公司 | 用于提供推入缓冲器复制和存储功能的指令和逻辑 |
Non-Patent Citations (2)
Title |
---|
Matthias B. Stuart等."Analytical derivation of traffic patterns in cache-coherent shared-memory systems".《Microprocessors and Microsystems》.2011,第35卷(第7期),第632-642页. * |
彭林等."事务存储系统".《计算机研究与发展》.2009,第46卷(第8期),第1386-1398页. * |
Also Published As
Publication number | Publication date |
---|---|
US20190220407A1 (en) | 2019-07-18 |
US20210279175A1 (en) | 2021-09-09 |
US11550721B2 (en) | 2023-01-10 |
CN109661656A (zh) | 2019-04-19 |
WO2018059655A1 (en) | 2018-04-05 |
US11016893B2 (en) | 2021-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109661656B (zh) | 用于利用条件所有权请求的智能存储操作的方法和装置 | |
US11816036B2 (en) | Method and system for performing data movement operations with read snapshot and in place write update | |
US9940238B2 (en) | Changing cache ownership in clustered multiprocessor | |
US9471494B2 (en) | Method and apparatus for cache line write back operation | |
CN108885586B (zh) | 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令 | |
EP3547146B1 (en) | System, method, and apparatus for detecting repetitive data accesses and automatically loading data into local cache | |
US9361233B2 (en) | Method and apparatus for shared line unified cache | |
CN108268385B (zh) | 具有集成目录高速缓存的优化的高速缓存代理 | |
US10102124B2 (en) | High bandwidth full-block write commands | |
US10564972B1 (en) | Apparatus and method for efficiently reclaiming demoted cache lines | |
US20170286301A1 (en) | Method, system, and apparatus for a coherency task list to minimize cache snooping between cpu and fpga | |
US9146871B2 (en) | Retrieval of previously accessed data in a multi-core processor | |
CN111353156A (zh) | 可缩放多密钥总存储器加密引擎 | |
US11669454B2 (en) | Hybrid directory and snoopy-based coherency to reduce directory update overhead in two-level memory | |
US9201792B2 (en) | Short circuit of probes in a chain | |
US20190205061A1 (en) | Processor, method, and system for reducing latency in accessing remote registers | |
US20190196968A1 (en) | Supporting adaptive shared cache management | |
US20180121353A1 (en) | System, method, and apparatus for reducing redundant writes to memory by early detection and roi-based throttling | |
US9436605B2 (en) | Cache coherency apparatus and method minimizing memory writeback operations | |
US9195465B2 (en) | Cache coherency and processor consistency |
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 |