CN111279323A - 通过多个处理器对共享高速缓存行的并发修改 - Google Patents
通过多个处理器对共享高速缓存行的并发修改 Download PDFInfo
- Publication number
- CN111279323A CN111279323A CN201880069928.1A CN201880069928A CN111279323A CN 111279323 A CN111279323 A CN 111279323A CN 201880069928 A CN201880069928 A CN 201880069928A CN 111279323 A CN111279323 A CN 111279323A
- Authority
- CN
- China
- Prior art keywords
- cache line
- shared cache
- computer
- shared
- data
- 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
Links
- 230000004048 modification Effects 0.000 title claims abstract description 17
- 238000012986 modification Methods 0.000 title claims abstract description 17
- 230000015654 memory Effects 0.000 claims description 51
- 238000012545 processing Methods 0.000 claims description 49
- 238000000034 method Methods 0.000 claims description 46
- 238000004590 computer program Methods 0.000 claims description 12
- 230000000903 blocking effect Effects 0.000 claims description 7
- 238000004891 communication Methods 0.000 claims description 3
- 230000001360 synchronised effect Effects 0.000 claims description 3
- 230000001427 coherent effect Effects 0.000 abstract description 23
- 230000006870 function Effects 0.000 description 23
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 230000003287 optical effect Effects 0.000 description 6
- 238000007726 management method Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 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
- 238000007405 data analysis Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
Images
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
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0828—Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
-
- 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/0817—Cache consistency protocols using directory methods
-
- 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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
Abstract
由计算环境的多个处理器并发修改共享高速缓存行。至少基于接收一个或多个架构指令(由于非相干存储而提取指令)来执行并发修改,该指令允许多个处理器并发更新共享高速缓存行而不获得锁或具有数据的独占所有权。
Description
背景技术
一般而言,一个或多个方面涉及计算环境内的处理,并且具体地涉及促进这样的处理。
计算环境内的处理包括访问包括主存储器和存储器高速缓存的存储器以读取或存储数据。这样的数据的更新在包括具有对要被更新的数据的访问的多个处理器的计算环境中是复杂的。在此类多处理器计算环境中,计算机硬件具有原子更新指令(例如,比较和交换(CS)指令)是常见的,所述原子更新指令在已提取一个字段的当前值之后尝试将该字段更新为新值。在阻止其他处理器同时执行相同功能的同时,比较旧值与当前值。如果旧值等于当前值,那么用新值替换当前值。如果旧值不等于当前值,则不存储新值,并且经由条件代码通知用户该值未被更新并且处理循环返回以操纵当前值。
为了使比较和交换指令比较和更新字段,其将该字段带到本地处理器的私有高速缓存中并且使来自其他处理器的私有高速缓存的该字段无效。这导致地址延迟,这降低了性能。字段被更新的频率越高,劣化越多。
使这个开销最小化的一种方法是更新唯一的单个处理器相关字段,例如计数器,其移除处理器之间的冲突。由读取器或监控程序定期地请求当前值,并且基于该请求,对值进行聚合并且提供结果。这大大降低了开销。然而,这增加了复杂性,并且存在如下情况:计数器已经存在并且提供服务以聚合处理器相关值是不切实际的(如果不是不可能的话)。
因此,在本领域中需要解决上述问题。
发明内容
从第一方面来看,本发明提供了一种用于促进计算环境内的处理的计算机实现的方法,所述方法包括:从所述计算环境的多个处理器获得用于存储到共享高速缓存行的多个存储请求,所述多个存储请求为并发存储类型;以及基于所述多个存储请求,将数据并发存储到所述共享高速缓存行。
从另一方面来看,本发明提供了一种用于促进计算环境内的处理的计算机系统,该计算机系统包括:存储器;以及与所述存储器通信的至少一个处理器,其中,所述计算机系统被配置为执行一种方法,所述方法包括:从所述计算环境的多个处理器获得用于存储到共享高速缓存行的多个存储请求,所述多个存储请求为并发存储类型;以及基于所述多个存储请求,将数据并发存储到所述共享高速缓存行。
从另一方面来看,本发明提供了一种用于促进计算环境内的处理的计算机程序产品,该计算机程序产品包括计算机可读存储介质,该计算机可读存储介质可由处理电路读取并且存储用于由该处理电路执行以便执行用于执行本发明的步骤的方法的指令。
从另一方面来看,本发明提供了一种存储在计算机可读介质上并且可加载到数字计算机的内部存储器中的计算机程序,包括当所述程序在计算机上运行时用于执行本发明的步骤的软件代码部分。
通过提供用于促进计算环境内的处理的计算机程序产品,克服了现有技术的缺点并提供了附加优点。该计算机程序产品包括可由处理电路读取并存储用于执行方法的指令的计算机可读存储介质。所述方法例如包括,从计算环境的多个处理器获得用于存储到共享高速缓存行的多个存储请求。所述多个存储请求为并发存储类型。基于所述多个存储请求,将数据并发存储到所述共享高速缓存行。通过允许对共享高速缓存行的并发更新,便于处理,降低了复杂度,并且提高了性能。
在一个实施例中,与共享高速缓存行相关联的高速缓存目录状态设置为共享可修改的,其指示多个处理器的多个存储请求是可允许的。
作为示例,数据包括对保持在共享高速缓存行中的全局共享可修改结构的更新。全局共享可修改结构由多个处理器中的多个处理器使用。
在进一步方面,获得请求访问共享高速缓存行的提取请求。提取请求不同于并发存储类型。基于提取请求,对共享高速缓存行执行串行化。基于完成串行化,从共享高速缓存行读取数据。通过基于提取请求来执行序列化,而不是被定义为允许多个处理器的并发更新的请求,减少了延迟并且提高了性能。
执行串行化包括例如停止对共享高速缓存行的未完成存储,以及同步共享高速缓存行的数据。
进一步,在一个示例中,基于提取请求,共享高速缓存行的所有权状态从共享可修改状态改变到另一状态。另一状态例如是基于提取请求的独占的或只读的。
在一个示例中,获得所述多个存储请求包括接收来自多个处理器的多个由于非相干存储而提取请求。由于非相干存储而提取请求在架构上被定义以允许对共享高速缓存行的非阻挡修改。
进一步,在一个示例中,所述存储包含在不将所述数据存储在所述多个处理器的一个或多个私有高速缓存中的情况下将所述数据直接存储到所述共享高速缓存行。
本文还描述并要求保护涉及一个或多个方面的计算机实施的方法和系统。进一步,本文还描述并且可以要求保护涉及一个或多个方面的服务。
通过本文所述的技术实现了附加特征和优点。其他实施例和方面在本文中详细描述,并且被认为是所要求保护的方面的一部分。
附图说明
在说明书结束时,作为权利要求中的示例,特别指出并清楚地要求保护一个或多个方面。从结合附图进行的以下详细描述中,一个或多个方面的前述和目的、特征和优点显而易见,在附图中:
图1描绘了并入和使用本发明的一个或多个方面的计算环境的一个示例;
图2描绘了根据本发明的一个或多个方面的由图1的计算机系统所使用的存储器层级结构的进一步细节;
图3描绘了与独占(exclusive)提取操作相关联的处理的一个示例;
图4描绘了根据本发明的一个或多个方面的与由于非相干而提取操作相关联的处理的一个示例;
图5描绘了根据本发明的一个或多个方面的与由于非并发而提取操作相关联的处理的另一示例;
图6描绘了根据本发明的一个或多个方面的与处理由于非相干而提取请求相关联的进一步细节;
图7A-7B描绘了根据本发明的一个方面的促进计算环境内的处理的一个实施例;
图8A描绘了并入和使用本发明的一个或多个方面的计算环境的另一个示例;
图8B描绘了图8A的存储器的进一步细节;
图9描绘了云计算环境的一个实施例;以及
图10描绘了抽象模型层的一个示例。
具体实施方式
根据本发明的一个方面,提供了一种由计算环境的多个处理器(也称为核)并发修改共享高速缓存行的能力。多个处理器可以访问和更新数据或字段,例如计数器,而不获得锁或具有数据或字段的独占所有权。
在一个示例中,该能力包括非阻挡原子比较和交换指令,在本文中被称为由于非相干存储而提取(Fetch)(FNC)指令,其可以用于更新频繁更新但不经常读取的数据或字段,诸如计数器。该指令例如是由诸如由纽约阿蒙克市的国际商业机器公司提供的z/Architecture的架构定义的硬件指令。指令异步地递增或递减数据(例如,计数),而不必将数据带到本地、私有高速缓存中或在比较未命中时迭代,因此消除更新上的许多开销。使用由于非相干存储而提取指令,以修改意图提取共享高速缓存中的高速缓存行,且可由一或多个处理器并发修改数据,所述处理器以例如传统MESI或z/Architecture相干性规则下非相干的方式操作。
参考图1描述并入和使用本发明的一个或多个方面的计算环境的一个实施例。在一个示例中,计算环境基于z/z/Architecture的一个实施例在IBM公开案SA22-7832-10(2015年3月)“z/Architecture Principles of Operation(z/架构操作原理)”中描述。
在另一个示例中,计算环境基于IBM Power在国际商业机器公司(International Business Machines Corporation)(2015年4月9日)的“Power ISATM版本2.07B”中描述了Power架构的一个实施例。IBM、z/Architecture和Power Architecture是国际商业机器公司的商标,在全世界许多司法管辖区中注册。
如在图1中所示,计算环境100包括例如计算机系统102,计算机系统102以通用计算设备的形式示出。计算机系统102可包括但不限于经由一个或多个总线和/或其他连接110彼此耦接的一个或多个处理器、处理单元或核104(例如,中央处理单元(CPU))、存储器106(作为示例,即系统处理器、主存储器、主存储装置、中央存储装置或存储装置)、以及一个或多个输入/输出(I/O)接口108。
总线110表示若干类型的总线结构中的任何一种的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线架构中的任何一种的处理器或本地总线。作为示例而非限制,这些架构包括工业标准架构(ISA)、微通道架构(MCA)、增强型ISA(EISA)、视频电子标准协会(VESA)本地总线和外围组件互连(PCI)。
存储器106可包括例如高速缓存120,诸如共享高速缓存,该高速缓存可被耦接到处理器104的本地高速缓存122。此外,存储器106可包括一个或多个程序或应用130、操作系统132、以及一个或多个计算机可读程序指令134。计算机可读程序指令134可被配置为执行本发明的方面的实施例的功能。
计算机系统102还可以经由例如I/O接口108与一个或多个外部设备140、一个或多个网络接口142和/或一个或多个数据存储设备144通信。示例外部设备包括用户终端、磁带驱动器、指示设备、显示器等。网络接口142使计算机系统102能够与一个或多个网络通信,诸如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如,因特网),从而提供与其他计算设备或系统的通信。
数据存储设备144可存储一个或多个程序146、一个或多个计算机可读程序指令148和/或数据等。计算机可读程序指令可被配置为执行本发明的方面的实施例的功能。
计算机系统102可以包括和/或耦合到可移动/不可移动、易失性/非易失性计算机系统存储介质。例如,它可以包括和/或耦合到不可移动的、非易失性磁介质(通常称为“硬盘驱动器”)、用于从可移动的、非易失性磁盘(例如,“软盘”)读取和向其写入的磁盘驱动器、和/或用于从可移动的、非易失性光盘(诸如CD-ROM、DVD-ROM或其他光学介质)读取或向其写入的光盘驱动器。应当理解,其他硬件和/或软件组件可以与计算机系统102结合使用。示例包括但不限于:微代码、设备驱动、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动和数据档案存储系统等。
计算机系统102可以与许多其他通用或专用计算系统环境或配置一起操作。适合与计算机系统102一起使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机(PC)系统、服务器计算机系统、瘦客户端、胖客户端、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机系统、大型计算机系统、以及包括任何上述系统或设备的分布式云计算环境等。
参照图2描述关于处理器104和由处理器使用的存储器层级结构的进一步细节。在一个示例中,计算机系统102包括多个处理器或核104。在该示例中,示出了三个核,核0、1和2;然而,计算机系统可具有比本文所描述的更多或更少的核。每个核具有私有本地高速缓存122。本地高速缓存122包括例如L1高速缓存200和L2高速缓存202。其他配置也是可能的。
本地高速缓存122是由处理器104使用的存储器层级结构的一部分。存储器层级结构进一步包括可由多个处理器104访问的共享高速缓存120(例如,L3高速缓存)和主存储器106。在其他实施例中,它还可以包括其他和/或不同的高速缓存或高速缓存级。
处理器、主存储器和高速缓存存储器之间的数据传输例如由高速缓存控制器206控制。
共享高速缓存120(和一般的存储器)可在高速缓存相干性协议(诸如MESI协议)下操作。MESI协议是基于无效的高速缓存相干性协议,其支持回写高速缓存。缩写MESI中的字母表示可以用于(使用例如两个位来编码的)标记高速缓存行的四个独占状态:
修改(M):高速缓存行仅存在于当前高速缓存中,且是脏的(即,其已从主存储器中的值修改(M状态))。在允许(不再有效)主存储器状态的任何其他读取之前,高速缓存在将来的某个时间将数据写回到主存储器。回写将该行改变为共享状态(S)。
独占(E):高速缓存行仅存在于当前高速缓存中,但是是干净的(即,它匹配主存储器)。响应于读取请求,它可在任何时间被改变为共享状态。可替代地,当写入它时,它可以被改变到修改的状态。
共享(S):指示这个高速缓存行可以存储在机器的其他高速缓存中并且是干净的——它匹配主存储器。可以在任何时间丢弃该行(改变到无效状态)。
无效(I):指示该高速缓存行无效(未使用)。
参考图3描述使用MESI协议的一个示例。在图3的场景中,由三个不同的处理器或核在各种时间执行独占提取:时间T0、时间T1和时间T2,其中T0<T1<T2。独占提取是具有修改高速缓存行的内容的意图的处理器提取。在一个示例中,共享高速缓存中的全局计数器将被修改。
参见图3,在一个示例中,在时间T0处,由于核0的本地高速缓存L1、L2中的高速缓存未命中,核0对共享高速缓存120中的高速缓存行A执行独占提取300。在共享高速缓存120(L3)中存在高速缓存命中,因此核0接收共享高速缓存行的独占所有权。基于接收高速缓存行的独占所有权,核0现在可以存储到高速缓存行A中(例如,1个存储、热全局计数器)。为了执行存储,核0开始将高速缓存行A带回到核0,以便将高速缓存行A存储(即,存储值/数据)在核0的本地高速缓存(L1和/或L2)中。
在时间T1,由于核1的本地高速缓存L1、L2中的高速缓存未命中,核1对共享高速缓存120中的高速缓存行A执行独占提取302。在共享高速缓存120(L3)中存在高速缓存命中,且因此,由于MESI相干性协议,将交叉无效(XI)304请求发送到核0以请求核0放弃高速缓存行A的所有权。换句话说,核0接收交叉无效(XI)以使本地高速缓存中的与高速缓存行A有关的数据的先前副本无效。核0处于执行比较和交换的过程中,使得从共享高速缓存120引入的高速缓存行A的值与本地高速缓存(L1和/或L2)中的先前值进行比较,并且如果高速缓存行A和本地高速缓存的值不同,则高速缓存行A的值将被存储在核0的本地高速缓存中。然而,在核0的本地高速缓存中不能发生存储,因为核1现在已经将共享高速缓存120中的高速缓存行A的独占所有权从核0带走,并且因此比较和交换过程失败(即,比较和交换在完成之前被中断,因此没有存储发生)。
在时间T2,由于核2的本地高速缓存L1、L2中的高速缓存未命中,核2对共享高速缓存120中的高速缓存行A执行独占提取306。在共享高速缓存120(L3)中存在高速缓存命中,且因此,由于MESI相干性协议,将交叉无效(XI)请求308发送到核1以请求处理器放弃高速缓存行A的所有权。换句话说,核1接收交叉无效(XI)308以使本地高速缓存中的与高速缓存行A有关的数据的先前副本无效。核1处于执行比较和交换的过程中,使得从共享高速缓存120引入的高速缓存行A的值与本地高速缓存(L1和/或L2)中的先前值进行比较,并且如果高速缓存行A和本地高速缓存的值不同,则高速缓存行A的值将被存储在核1的本地高速缓存中。然而,不能在核1的本地高速缓存中发生存储,因为核2现在已经将共享高速缓存120的独占所有权从核1带走,并且因此比较和交换过程失败(即,比较和交换在完成之前被中断,因此没有存储发生)。核2继续其请求的更新。
如上文参考场景所描述,当一个处理器正更新共享高速缓存行时,阻断其他处理器(例如,经由锁和/或经由原子操作),从而提供高速缓存相干性。高速缓存相干性是存储在多个本地高速缓存中的共享资源数据的统一性以及系统内的处理器可见的高速缓存数据的一致性。
然而,根据本发明的一个或多个方面,提供新类型的高速缓存目录状态(例如,新MESI状态)和新提取类型,其使得多个核能够在没有阻挡的情况下并发修改高速缓存行的内容,并且同时确保相干性和可见数据一致性。在MESI协议的上下文中,该新目录状态被称为共享可修改或提取非相干(X),并且提取操作被称为‘由于非相干存储而提取’。当高速缓存行被置于用于存储的共享可修改或提取非相干状态时,相干性仍被提供,但可见相干性被遮掩。从处理器的角度来看,处理器可以存储到高速缓存行中,但是处理器不检查正在被更新的内容。例如,高速缓存行的值被递增/递减或相乘等,但这是在不知道该特定时间的值的情况下盲目地进行的。如果处理器想要查看数据(例如,不是由于非相干存储而提取),则在提取之前执行序列化。
如上所述,在MESI协议中,高速缓存行存在以下状态之一:修改、独占、共享或无效。通过访问高速缓存地址的独占/只读提取而进入独占和共享状态;修改状态使用独占提取,之后是处理器存储;无效具有将行拉离的芯片/高速缓存或是初始目录状态。通过每一状态转变,将对高速缓存行的修改写回到存储器以确保相干性。
通过添加可共享修改或提取非相干(X)状态,高速缓存行可被识别为存在于一个状态中,在该状态中,一个或多个核可并发存储到高速缓存行,用于例如共同操作,诸如递增/递减全局共享可修改结构(例如,共同调试计数器、其他计数器或锁)的值,以及用于其他更复杂操作。利用并发存储,通过将修改请求从私有高速缓存推送到发生对与高速缓存行相关联的数据的修改的共享高速缓存级,一个核可在另一核完成其存储之前开始存储到高速缓存行。
参看图4描述根据本发明的一个或多个方面的使用包含提取非相干操作的经更新MESI协议的情形的一个示例。展示了时刻T0、T1和T2,其中,T0<T1<T2。
在时间T0,核0对共享高速缓存120中的高速缓存行A执行由于非相干存储而提取(FNC)指令400。在该示例中,基于提取非相干请求,核0被提供对高速缓存行A的访问,并且使得核0能够向共享高速缓存级发出读取/修改/写入操作(例如,递增/递减)以用于更新目标高速缓存的内容。进一步,FNC操作设置高速缓存目录状态(共享可修改或提取非相干),使得一个或多个核随后并发存储到共享高速缓存行中。由于非相干而提取允许多个核存储到高速缓存行,同时从处理器的角度来看保持可见高速缓存行相干性和数据一致性。由于掩蔽了传统架构中的序列化惩罚,因此能够以减少的开销进行并发更新/修改。
在时间T1,核1对共享高速缓存120中的高速缓存行A执行由于非相干存储而提取指令402。由于该行具有提取非相干状态,所以核1还可更新共享高速缓存行,而不向核0发出交叉无效。如果没有发生中间的非并发存储类型的提取(例如,不是提取非相干存储的提取),那么可将来自核0和核1两者的多个存储发出到高速缓存行A。
在时间T2,核2对共享高速缓存120中的高速缓存行A执行由于非相干而提取指令404。由于该行具有提取非相干状态,因此核2还可更新共享高速缓存行,而不向核1(或核0)发出交叉无效。
在每个由于非相干而提取操作中,共享高速缓存行被更新,而不将数据带到本地、私有高速缓存中的任一个中。
参见图5描述使用由于非相干而提取操作的另一示例。在此示例中,在时间T0处,核0对共享高速缓存行A发出独占提取500。然后,在时间T1,核1针对共享高速缓存行A发出由于非相干而提取指令502。因为核0具有高速缓存行A的独占所有权,而不是共享可修改或提取非相干所有权,所以向核0发出交叉无效504,从而将所有权从独占降级为共享可修改或提取非相干所有权。由此,核0和1都能够更新共享高速缓存行A。
在时间T2,核2对共享高速缓存120中的高速缓存行A执行由于非相干而提取指令506。由于该行具有提取非相干的状态,因此核2还可更新共享高速缓存行。
在时间T3,核0确定其想要共享高速缓存行A的独占所有权。因此,核0对共享高速缓存行发出独占提取510。基于独占提取510,交叉无效512、514被分别发布给核1和2。基于独占提取,存储在共享高速缓存中被合并,并且更新的值被返回到核0。例如,采用对其他核的交叉无效来通知核它们将停止存储到高速缓存行中。所有未完成的存储将排到L3高速缓存中并且完成。在这点之后,发出独占提取的处理器可以返回高速缓存行的更新版本。
如本文所述,多个处理器具有对共享高速缓存行的并发写入访问,这消除了对交叉无效和序列化开销的需要,从而促进计算环境内的处理。这例如用于频繁写入、低读取使用情况。
参考图6描述与共享高速缓存行的并发修改有关的进一步细节。在步骤600,第一处理器或核向给定高速缓存级(例如,L3)发送目标为共享高速缓存行A的‘由于非相干存储而提取’请求。在步骤602,高速缓存级基于接收到提取请求,将目标高速缓存行的高速缓存目录状态设置为共享可修改或提取非相干。进一步,可将与高速缓存行相关联的数据返回到请求处理器,或假定初始状态无关紧要,可将提取响应返回到请求处理器,步骤604。在步骤606,处理器开始存储到高速缓存行,其中,将更新的值(或例如要递增/递减的量)发送到共享高速缓存以用于读取-修改-写入更新。更新被直接发送到共享高速缓存(例如,L3高速缓存)并且不被写入到私有高速缓存(例如,L1、L2高速缓存)。
一个或多个附加处理器随后发送‘由于非相干存储而提取’请求以获得更新公共共享高速缓存行的许可,步骤608。高速缓存级基于接收到附加提取请求而更新高速缓存目录以指示多个所有权,步骤610,并且返回与高速缓存行相关联的数据的副本或简单的提取响应,步骤612。附加核随后将存储直接发送到高速缓存行(而不存储到私有高速缓存),步骤614。存储值指示例如高速缓存级用于作为读取-修改-写入操作更新高速缓存数据内容的增量/减量偏移值。
基于接收到对高速缓存行的引用(例如,‘由于非相干存储而提取’请求以外的提取类型),步骤616,高速缓存级检测处理器正在寻找以检查与高速缓存行相关联的数据的值,并且生成对高速缓存行的一组交叉无效请求,迫使附接到高速缓存级的核停止存储到高速缓存行中,步骤618。基于从具有对高速缓存行的共享可修改或提取非并发所有权的核接收无效响应,高速缓存级基于由旨在检查与高速缓存行相关联的数据的内容的处理器发送到高速缓存级中的提取操作的类型,将目录状态更新为对请求处理器只读或独占,步骤620。由此,基于接收到除了提取非相干存储请求之外的请求,执行串行化,其中未完成的存储被停止,高速缓存内容被同步,并且结果值被返回到请求处理器。
为了促进此过程,高速缓存级可具有短RMW(读取、修改、写入)缓冲器以加快操作的处置,从而实现比给定高速缓存级处的流水线深度的两倍所考虑的更频繁的存储操作。
基于前述内容,在一个示例中,多个核可将例如高速缓存行中的同一软件计数器或不同软件计数器并发存储到同一高速缓存行,而不将计数器值带入私有高速缓存。多个处理器可并发维持对单个高速缓存行的写入访问,同时经由共享可修改或提取非并发目录状态来确保数据完整性。不使用交叉无效并且减少序列化开销。由此,可以改善计算环境内的性能。
本发明的一个或多个方面与计算机技术密不可分并且促进计算机内的处理,提高其性能。参见图7A-7B来描述涉及本发明的一个或多个方面的促进计算环境内的处理的一个实施例的进一步细节。
参见图7A,在一个实施例中,从计算环境的多个处理器获得用于存储到共享高速缓存行的多个存储请求(700)。该多个存储请求属于并发存储类型(701)。基于多个存储请求,将数据并发存储到共享高速缓存行(702)。进一步,在一个实施例中,与共享高速缓存行相关联的高速缓存目录状态设置为共享可修改的,其指示多个处理器的多个存储请求是可允许的(704)。
作为示例,数据包括对在共享高速缓存行中维护的全局共享可修改结构的更新(706)。全局共享可修改结构由多个处理器中的多个处理器使用(708)。
在进一步方面,获得请求访问共享高速缓存行的提取请求(710)。提取请求不同于并发存储类型(711)。基于提取请求,对共享高速缓存行执行串行化(712),并且基于完成串行化,从共享高速缓存行读取数据(714)。
作为一个示例,参见图7B,执行串行化包括停止对共享高速缓存行的未完成存储(720),以及同步共享高速缓存行的数据(722)。
进一步,在一个实施例中,基于提取请求,将共享高速缓存行的所有权状态从共享可修改状态改变到另一状态(724)。基于提取请求,另一状态是独占的或只读的(726)。
在一个实施例中,获得多个存储请求包括接收来自多个处理器的多个由于非并发存储而提取请求(728)。由于非并发存储而提取请求在架构上被定义以允许对共享高速缓存行的非阻挡修改(730)。
此外,在一个实施例中,存储包括将数据直接存储到共享高速缓存行而不将数据存储在多个处理器的一个或多个私有高速缓存中(732)。
其他变化和实施例是可能的。
其他类型的计算环境也可以结合并使用本发明的一个或多个方面,包括但不限于仿真环境,其示例参考图8A进行描述。在此示例中,计算环境20包括:例如,本机中央处理单元(CPU)22、存储器24,以及经由例如一个或多个总线28和/或其他连接而彼此耦接的一个或多个输入/输出设备和/或接口26。作为示例,计算环境20可包括:由纽约阿蒙克市的国际商业机器公司提供的IBM处理器或IBM Power或IBM pSeries服务器,和/或基于由国际商业机器公司、因特尔或其他公司提供的架构的其他机器。PowerPC和Power Power Series是国际商业机器公司的商标,在全世界许多司法管辖区中注册。
本机中央处理单元22包括一个或多个本机寄存器30,诸如,在环境内的处理期间使用的一个或多个通用寄存器和/或一个或多个专用寄存器。这些寄存器包括表示在任何特定时间点的环境状态的信息。
此外,本机中央处理单元22执行存储在存储器24中的指令和代码。在一个特定示例中,中央处理单元执行存储在存储器24中的仿真器代码32。该代码使得在一个架构中配置的计算环境能够仿真另一种架构。例如,仿真器代码32允许基于不同于z/架构的架构的机器(诸如,PowerPC处理器、pSeries服务器或其他服务器或处理器)仿真z/架构并执行基于z/架构开发的软件和指令。
参考图8B描述与仿真器代码32有关的进一步细节。存储在存储器24中的访客指令40包括被开发为在不同于本机CPU 22的架构的架构中执行的软件指令(例如,与机器指令相关)。例如,访客指令40可能已经被设计为在z/架构处理器上执行,但是相反地,其在可以是例如英特尔处理器的本机CPU 22上进行仿真。在一个示例中,仿真器代码32包括指令提取例程42,以从存储器24获得一个或多个访客指令40,并且可选地为所获得的指令提供本地缓冲。它还包括指令转换例程44,以确定所获得的访客指令的类型,并将访客指令转换成一个或多个对应的本机指令46。该转换包括:例如,识别将要由访客指令执行的功能,并选择执行该功能的本机指令。
另外,仿真器代码32包括仿真控制例程48以使本机指令被执行。仿真控制例程48可使本机CPU 22执行仿真一个或多个先前所获得的访客指令的本机指令的例程,并且在这种执行结束时,将控制返回到指令提取例程以仿真下一个访客指令或访客指令组的获得。本机指令46的执行可包括:将数据从存储器24加载到寄存器中;将数据从寄存器存储回存储器;或者执行如由转换例程确定的某种类型的算术或逻辑运算。
每个例程例如以软件实现,该软件存储在存储器中并由本机中央处理单元22执行。在其他示例中,一个或多个例程或操作以固件、硬件、软件或它们的一些组合实现。所仿真处理器的寄存器可使用本机CPU的寄存器30或通过使用存储器24中的位置来仿真。在实施例中,访客指令40、本机指令46和仿真器代码32可驻留在同一存储器中或可分配在不同的存储器设备中。
如本文中所使用的,固件包括例如处理器的微代码。例如,其包括用于实现更高级机器代码的硬件级指令和/或数据结构。在一个实施例中,固件可包括例如通常作为微代码传送的专有代码,其包括特定于底层硬件的可信软件或微代码,并控制对系统硬件的操作系统访问。
已获得、转换并执行的访客指令40例如是本文中描述的指令中的一个或多个指令。将具有一种架构(例如,z/架构)的指令从存储器中提取、转换并表示为一系列的具有另一种架构(例如,PowerPC、pSeries、Intel等)的本机指令46。然后可执行这些本机指令。
一个或多个方面可涉及云计算。
首先应当理解,尽管本公开包括关于云计算的详细描述,但其中记载的技术方案的实现却不限于云计算环境,而是能够结合现在已知或以后开发的任何其他类型的计算环境而实现。
云计算是一种服务交付模式,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源是能够以最小的管理成本或与服务提供者进行最少的交互就能快速部署和释放的资源,例如可以是网络、网络带宽、服务器、处理、内存、存储、应用、虚拟机和服务。这种云模式可以包括至少五个特征、至少三个服务模型和至少四个部署模型。
特征包括:
按需自助式服务:云的消费者在无需与服务提供者进行人为交互的情况下能够单方面自动地按需部署诸如服务器时间和网络存储等的计算能力。
广泛的网络接入:计算能力可以通过标准机制在网络上获取,这种标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如移动电话、膝上型电脑、个人数字助理PDA)对云的使用。
资源池:提供者的计算资源被归入资源池并通过多租户(multi-tenant)模式服务于多重消费者,其中按需将不同的实体资源和虚拟资源动态地分配和再分配。一般情况下,消费者不能控制或甚至并不知晓所提供的资源的确切位置,但可以在较高抽象程度上指定位置(例如国家、州或数据中心),因此具有位置无关性。
迅速弹性:能够迅速、有弹性地(有时是自动地)部署计算能力,以实现快速扩展,并且能迅速释放来快速缩小。在消费者看来,用于部署的可用计算能力往往显得是无限的,并能在任意时候都能获取任意数量的计算能力。
可测量的服务:云系统通过利用适于服务类型(例如存储、处理、带宽和活跃用户帐号)的某种抽象程度的计量能力,自动地控制和优化资源效用。可以监测、控制和报告资源使用情况,为服务提供者和消费者双方提供透明度。
服务模型如下:
软件即服务(SaaS):向消费者提供的能力是使用提供者在云基础架构上运行的应用。可以通过诸如网络浏览器的瘦客户机接口(例如基于网络的电子邮件)从各种客户机设备访问应用。除了有限的特定于用户的应用配置设置外,消费者既不管理也不控制包括网络、服务器、操作系统、存储、乃至单个应用能力等的底层云基础架构。
平台即服务(PaaS):向消费者提供的能力是在云基础架构上部署消费者创建或获得的应用,这些应用利用提供者支持的程序设计语言和工具创建。消费者既不管理也不控制包括网络、服务器、操作系统或存储的底层云基础架构,但对其部署的应用具有控制权,对应用托管环境配置可能也具有控制权。
基础架构即服务(IaaS):向消费者提供的能力是消费者能够在其中部署并运行包括操作系统和应用的任意软件的处理、存储、网络和其他基础计算资源。消费者既不管理也不控制底层的云基础架构,但是对操作系统、存储和其部署的应用具有控制权,对选择的网络组件(例如主机防火墙)可能具有有限的控制权。
部署模型如下:
私有云:云基础架构单独为某个组织运行。云基础架构可以由该组织或第三方管理并且可以存在于该组织内部或外部。
共同体云:云基础架构被若干组织共享并支持有共同利害关系(例如任务使命、安全要求、政策和合规考虑)的特定共同体。共同体云可以由共同体内的多个组织或第三方管理并且可以存在于该共同体内部或外部。
公共云:云基础架构向公众或大型产业群提供并由出售云服务的组织拥有。
混合云:云基础架构由两个或更多部署模型的云(私有云、共同体云或公共云)组成,这些云依然是独特的实体,但是通过使数据和应用能够移植的标准化技术或私有技术(例如用于云之间的负载平衡的云突发流量分担技术)绑定在一起。
云计算环境是面向服务的,特点集中在无状态性、低耦合性、模块性和语意的互操作性。云计算的核心是包含互连节点网络的基础架构。
现在参考图9,描绘了示意性的云计算环境50。如图所示,云计算环境50包括云的消费者使用本地计算设备可以与其通信的一个或多个计算节点10,本地计算设备例如是个人数字助理(PDA)或蜂窝电话54A、台式计算机54B、膝上型计算机54C和/或汽车计算机系统54N。节点10可以彼此通信。它们可以在一个或多个网络中物理地或虚拟地分组(未示出),例如如上所述的私有云、共同体云、公共云或混合云、或其组合。这样,云的消费者无需维护本地计算设备上的资源就能够允许云计算环境50提供基础架构即服务、平台即服务和/或软件即服务。应该理解,图9中所示的计算设备54A-N的类型仅仅是示意性的,而计算节点10和云计算环境50可以(例如,使用网络浏览器)通过任何类型的网络和/或网络可寻址连接与任何类型的计算设备通信。
现在参考图10,示出了由云计算环境50(图9)提供的一组功能抽象层。应该事先理解图10中所示的组件、层和功能仅仅是示意性的,并且本发明的实施例不限于此。如图所示,提供了以下层和相应的功能:
硬件和软件层60包括硬件和软件组件。硬件组件的示例包括主机61;基于RISC(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储设备65;网络和网络组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。
虚拟层70提供抽象层,从该抽象层可以提供以下虚拟实体的示例:虚拟服务器71;虚拟存储72;虚拟网络73(包括虚拟私有网络);虚拟应用和操作系统74;和虚拟客户端75。
在一个示例中,管理层80可以提供下面描述的功能。资源供应功能81提供用于在云计算环境内执行任务的计算资源和其他资源的动态获取。计量和定价功能82在云计算环境内对资源的使用进行成本跟踪,并且提供用于消费这些资源的帐单或发票。在一个示例中,这些资源可以包括应用软件许可。安全功能为云的消费者和任务提供身份认证,以及为数据和其他资源提供保护。用户门户功能83为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能84提供云计算资源的分配和管理,以满足所需的服务水平。服务水平协议(SLA)计划和履行功能85为根据SLA预测的对云计算资源未来需求提供预先安排和供应。
工作负载层90提供可以利用云计算环境的功能的示例。可以从该层提供的工作负载和功能的示例包括:地图绘制与导航91;软件开发和生命周期管理92;虚拟教室的教学提供93;数据分析处理94;交易处理95;和并发修改处理96。
本发明可以是任何可能的技术细节集成级别的系统、方法和/或计算机程序产品。该计算机程序产品可以包括一个计算机可读存储介质(或多个计算机可读存储介质),其上具有计算机可读程序指令,用于使处理器执行本发明的各方面。
计算机可读存储介质可以是有形设备,其可以保留和存储指令以供指令执行设备使用。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适组合。计算机可读存储介质的更具体示例的非详尽列表包括以下内容:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字通用光盘(DVD)、记忆棒、软盘、诸如在其上记录有指令的打孔卡或凹槽内凸起结构的机械编码装置、以及前述的任何合适的组合。这里使用的计算机可读存储介质不应被解释为瞬时信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆传递的光脉冲)或通过电线传输的电信号。
本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络(例如,因特网,局域网,广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括诸如Smalltalk,C++等的面向对象的编程语言,以及诸如“C”编程语言或类似编程语言的过程编程语言。计算机可读程序指令可以完全在用户的计算机上执行、部分地在用户计算机上执行、作为独立的软件包执行、部分地在用户计算机上并且部分地在远程计算机上执行、或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者,可以连接到外部计算机(例如,利用互联网服务提供商来通过互联网连接)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来个性化定制电子电路,该电子电路执行计算机可读程序指令,以便执行本发明的各方面。
本文参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图来描述本发明的各方面。将理解,流程图图示和/或框图中的每个框以及流程图图示和/或框图中的框的组合可以由计算机可读程序指令实现。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器来生产出机器,以使得通过计算机的处理器或其他可编程数据处理装置执行的指令创建用于实现流程图和/或一个框图块或多个框图块中所指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,这些计算机可读程序指令可以使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,以使得具有存储在其中的指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或一个框图块或多个框图块中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机,其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,这样在计算机、其他可编程装置或其他设备上执行的指令实现在流程图和/或一个框图块或多个框图块中指定的功能/动作。
附图中的流程图和框图示出根据本发明的各种实施例的系统,方法和计算机程序产品的可能实施方式的体系结构,功能和操作。在这方面,流程图或框图中的每个框可以表示模块、程序段或指令的一部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方式中,框中所标注的功能可以不按图中所示的顺序发生。例如,连续示出的两个框实际上可以基本上并行地执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还应注意,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可以由执行特定功能或动作,或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
除了上述之外,可以由提供客户环境管理的服务提供商提供、给予、部署、管理、服务一个或多个方面。例如,服务提供商可以创建、维护、支持计算机代码和/或为一个或多个客户执行一个或多个方面的计算机基础设施。作为回报,服务提供商可以例如根据订阅和/或费用协议从客户接收付款。附加地或替代地,服务提供商可以从向一个或多个第三方销售广告内容来接收付款。
在一方面中,可以部署应用以执行一个或多个实施例。作为一个示例,应用的部署包括提供可操作以执行一个或多个实施例的计算机基础结构。
作为另一方面,可以部署计算基础设施,包括将计算机可读代码集成到计算系统中,其中与计算系统结合的代码能够执行一个或多个实施例。
作为又一方面,可以提供一种用于集成计算基础设施的过程,包括将计算机可读代码集成到计算机系统中。该计算机系统包括计算机可读介质,其中该计算机介质包括一个或多个实施例。与计算机系统结合的代码能够执行一个或多个实施例。
尽管以上描述了各种实施例,但这些仅是示例。例如,具有其他架构的计算环境可用于合并和使用一个或多个实施例。此外,可以使用不同的指令或操作。多个变化是可能的。
此外,其他类型的计算环境可以受益并被使用。作为示例,适用于存储和/或执行程序代码的数据处理系统是可用的,其包括直接或通过系统总线间接耦接到存储器元件的至少两个处理器。存储器元件包括例如在程序代码的实际执行期间使用的本地存储器、大容量存储和高速缓存存储器,该高速缓存存储器提供至少一些程序代码的临时存储,以便减少执行期间必须从大容量存储重新提取代码的次数。
输入/输出或I/O设备(包括但不限于键盘、显示器、指示设备、DASD、磁带,CD、DVD、拇指驱动器和其他存储介质等)可以直接耦接到系统或通过介入I/O控制器而耦接到系统。网络适配器还可以耦接到系统,以使数据处理系统能够通过介入私有或公共网络而耦接到其他数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡只是可用类型的网络适配器中的一小部分。
本文使用的术语仅出于描述特定实施例的目的,并不意图限制本发明。如这里所使用的,单数形式“一”,“一个”和“该”旨在也包括复数形式,除非上下文另有明确说明。将进一步理解,当在本说明书中使用时,术语“包括”和/或“包含”指定所述特征、整数、步骤、操作、元素和/或组件的存在,但不排除存在或者添加一个或多个其他特征、整数、步骤、操作、元素、组件和/或它们的组合。
以下权利要求中的所有装置或步骤加功能元件的相应结构、材料、动作和等同物(如果有的话)旨在包括如所具体要求保护的用于结合其他要求保护的元件来执行功能的任何结构、材料或动作。已经出于说明和描述的目的给出了对一个或多个实施例的描述,但是并不旨在穷举或限制于所公开的形式。许多修改和变化对于本领域普通技术人员来说是显而易见的。选择和描述实施例是为了最好地解释各个方面和实际应用,并且使本领域普通技术人员能够理解具有各种修改的各种实施例适合于预期的特定用途。
Claims (27)
1.一种用于促进计算环境内的处理的计算机实现的方法,所述方法包括:
从所述计算环境的多个处理器获得用于存储到共享高速缓存行的多个存储请求,所述多个存储请求为并发存储类型;以及
基于所述多个存储请求,将数据并发存储到所述共享高速缓存行。
2.根据权利要求1所述的方法,其中该方法还包括将与所述共享高速缓存行相关联的高速缓存目录状态设置为共享可修改,其指示多个处理器的多个存储请求是可允许的。
3.根据在前权利要求中任一项所述的方法,其中所述数据包括对在所述共享高速缓存行中维护的全局共享可修改结构的更新。
4.根据权利要求3所述的方法,其中所述全局共享可修改结构由所述多个处理器中的多个处理器使用。
5.根据在前权利要求中任一项所述的方法,其中该方法进一步包括:
获得请求访问所述共享高速缓存行的提取请求,所述提取请求不同于所述并发存储类型;
基于所述提取请求对所述共享高速缓存行执行串行化;以及
基于完成所述串行化,从所述共享高速缓存行读取所述数据。
6.根据权利要求5所述的方法,其中,执行序列化包括:
停止对所述共享高速缓存行的未完成存储;以及
同步所述共享高速缓存行的数据。
7.根据权利要求5或6之一所述的方法,其中该方法进一步包括基于所述提取请求,将所述共享高速缓存行的所有权状态从共享可修改改变到另一状态。
8.根据权利要求7所述的方法,其中,基于所述提取请求,所述另一状态是独占的或只读的。
9.根据在前权利要求中任一项所述的方法,其中,获得所述多个存储请求包括:
从所述多个处理器接收多个由于非并发存储而提取请求,所述多个由于非并发存储而提取请求在架构上被定义以允许对所述共享高速缓存行的非阻挡修改。
10.根据在前权利要求中任一项所述的方法,其中所述存储包括将所述数据直接存储到所述共享高速缓存行,而不将所述数据存储在所述多个处理器的一个或多个私有高速缓存中。
11.一种用于促进计算环境内的处理的计算机系统,所述计算机系统包括:
存储器;以及
至少一个处理器,与所述存储器通信,其中,所述计算机系统被配置为执行一种方法,所述方法包括:
从所述计算环境的多个处理器获得用于存储到共享高速缓存行的多个存储请求,所述多个存储请求为并发存储类型;以及
基于所述多个存储请求,将数据并发存储到所述共享高速缓存行。
12.根据权利要求11所述的系统,其中该方法还包括将与所述共享高速缓存行相关联的高速缓存目录状态设置为共享可修改,其指示多个处理器的多个存储请求是可允许的。
13.根据权利要求11或12之一所述的系统,其中所述数据包括对在所述共享高速缓存行中维护的全局共享可修改结构的更新。
14.根据权利要求13所述的系统,其中所述全局共享可修改结构由所述多个处理器中的多个处理器使用。
15.根据权利要求11至14中任一项所述的系统,其中该方法进一步包括:
获得请求访问所述共享高速缓存行的提取请求,所述提取请求不同于所述并发存储类型;
基于所述提取请求对所述共享高速缓存行执行串行化;以及
基于完成所述串行化,从所述共享高速缓存行读取所述数据。
16.根据权利要求15所述的系统,其中,执行序列化包括:
停止对所述共享高速缓存行的未完成存储;以及
同步所述共享高速缓存行的数据。
17.根据权利要求15或16之一所述的系统,其中该方法进一步包括基于所述提取请求,将所述共享高速缓存行的所有权状态从共享可修改改变到另一状态。
18.根据权利要求17所述的系统,其中,基于所述提取请求,所述另一状态是独占的或只读的。
19.根据权利要求11至18中任一项所述的系统,其中,获得所述多个存储请求包括:
从所述多个处理器接收多个由于非并发存储而提取请求,所述多个由于非并发存储而提取请求在架构上被定义以允许对所述共享高速缓存行的非阻挡修改。
20.根据权利要求11至19中任一项所述的计算机系统,其中所述存储包括将所述数据直接存储到所述共享高速缓存行,而不将所述数据存储在所述多个处理器的一个或多个私有高速缓存中。
21.一种用于促进计算环境内的处理的计算机程序产品,所述计算机程序产品包括:
计算机可读存储介质,该计算机可读存储介质可由处理电路读取并且存储用于由该处理电路执行以执行根据权利要求1至10中任一项所述的方法。
22.一种存储在计算机可读介质上并且可加载到数字计算机的内部存储器中的计算机程序,所述计算机程序包括软件代码部分,当所述程序在计算机上运行时,所述软件代码部分用于执行权利要求1至10中任一项所述的方法。
23.一种用于促进计算环境内的处理的计算机实现的方法,所述计算机实现的方法包括:
从所述计算环境的多个处理器获得用于存储到共享高速缓存行的多个存储请求,所述多个存储请求为并发存储类型;以及
基于所述多个存储请求,将数据并发存储到所述共享高速缓存行。
24.根据权利要求16所述的计算机实现的方法,进一步包括将与所述共享高速缓存行相关联的高速缓存目录状态设置为共享可修改,其指示多个处理器的多个存储请求是可允许的。
25.根据权利要求16所述的计算机实现的方法,进一步包括:
获得请求访问所述共享高速缓存行的提取请求,所述提取请求不同于所述并发存储类型;
基于所述提取请求对所述共享高速缓存行执行串行化;以及
基于完成所述串行化,从所述共享高速缓存行读取所述数据。
26.根据权利要求16所述的计算机实施的方法,其中,获得所述多个存储请求包括从所述多个处理器接收个由于非并发存储而提取请求,所述多个由于非并发存储而提取请求在架构上被定义以允许对所述共享高速缓存行的非阻挡修改。
27.根据权利要求16所述的计算机实现的方法,其中所述存储包括将所述数据直接存储到所述共享高速缓存行,而不将所述数据存储在所述多个处理器的一个或多个私有高速缓存中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/809,049 | 2017-11-10 | ||
US15/809,049 US10769068B2 (en) | 2017-11-10 | 2017-11-10 | Concurrent modification of shared cache line by multiple processors |
PCT/IB2018/058761 WO2019092622A1 (en) | 2017-11-10 | 2018-11-08 | Concurrent modification of shared cache line by multiple processors |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111279323A true CN111279323A (zh) | 2020-06-12 |
CN111279323B CN111279323B (zh) | 2023-10-31 |
Family
ID=66433437
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880069928.1A Active CN111279323B (zh) | 2017-11-10 | 2018-11-08 | 通过多个处理器对共享高速缓存行的并发修改 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10769068B2 (zh) |
JP (1) | JP7083446B2 (zh) |
CN (1) | CN111279323B (zh) |
DE (1) | DE112018004636B4 (zh) |
GB (1) | GB2581753B (zh) |
WO (1) | WO2019092622A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11200054B2 (en) * | 2018-06-26 | 2021-12-14 | Intel Corporation | Atomic-copy-XOR instruction for replacing data in a first cacheline with data from a second cacheline |
US10893120B2 (en) * | 2018-09-19 | 2021-01-12 | International Business Machines Corporation | Data caching and data-aware placement to accelerate machine learning applications |
US11989128B1 (en) * | 2022-12-15 | 2024-05-21 | International Business Machines Corporation | Invalidity protection for shared cache lines |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1263312A (zh) * | 1999-02-10 | 2000-08-16 | 国际商业机器公司 | 具有共享干预支持的非均匀存储器访问数据处理系统 |
CN1609823A (zh) * | 2003-10-23 | 2005-04-27 | 英特尔公司 | 用于维持共享高速缓存一致性的方法和设备 |
US20110185125A1 (en) * | 2010-01-27 | 2011-07-28 | Prashant Jain | Resource sharing to reduce implementation costs in a multicore processor |
US20110225372A1 (en) * | 2009-04-27 | 2011-09-15 | Lsi Corporation | Concurrent, coherent cache access for multiple threads in a multi-core, multi-thread network processor |
CN104508645A (zh) * | 2012-07-31 | 2015-04-08 | 惠普发展公司,有限责任合伙企业 | 用于使用多个子锁来控制对具有读取器-写入器锁的共享数据结构的访问的系统和方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4136386A (en) | 1977-10-06 | 1979-01-23 | International Business Machines Corporation | Backing store access coordination in a multi-processor system |
US5291442A (en) * | 1990-10-31 | 1994-03-01 | International Business Machines Corporation | Method and apparatus for dynamic cache line sectoring in multiprocessor systems |
US5715428A (en) | 1994-02-28 | 1998-02-03 | Intel Corporation | Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system |
US6314491B1 (en) | 1999-03-01 | 2001-11-06 | International Business Machines Corporation | Peer-to-peer cache moves in a multiprocessor data processing system |
US6928525B1 (en) | 2000-04-28 | 2005-08-09 | Hewlett-Packard Development Company, L.P. | Per cache line semaphore for cache access arbitration |
US6748498B2 (en) | 2000-06-10 | 2004-06-08 | Hewlett-Packard Development Company, L.P. | Scalable multiprocessor system and cache coherence method implementing store-conditional memory transactions while an associated directory entry is encoded as a coarse bit vector |
US6516393B1 (en) * | 2000-09-29 | 2003-02-04 | International Business Machines Corporation | Dynamic serialization of memory access in a multi-processor system |
US6571322B2 (en) | 2000-12-28 | 2003-05-27 | International Business Machines Corporation | Multiprocessor computer system with sectored cache line mechanism for cache intervention |
JP4208895B2 (ja) | 2006-05-30 | 2009-01-14 | 株式会社東芝 | キャッシュメモリ装置および処理方法 |
US8738860B1 (en) | 2010-10-25 | 2014-05-27 | Tilera Corporation | Computing in parallel processing environments |
US10203881B2 (en) * | 2011-12-19 | 2019-02-12 | Apple Inc. | Optimized execution of interleaved write operations in solid state drives |
US9417910B2 (en) | 2012-12-20 | 2016-08-16 | Oracle International Corporation | System and method for implementing shared probabilistic counters storing update probability values |
US9092345B2 (en) | 2013-08-08 | 2015-07-28 | Arm Limited | Data processing systems |
US10146690B2 (en) * | 2016-06-13 | 2018-12-04 | Intel Corporation | Synchronization logic for memory requests |
-
2017
- 2017-11-10 US US15/809,049 patent/US10769068B2/en active Active
-
2018
- 2018-11-08 WO PCT/IB2018/058761 patent/WO2019092622A1/en active Application Filing
- 2018-11-08 GB GB2008687.2A patent/GB2581753B/en active Active
- 2018-11-08 JP JP2020523774A patent/JP7083446B2/ja active Active
- 2018-11-08 DE DE112018004636.2T patent/DE112018004636B4/de active Active
- 2018-11-08 CN CN201880069928.1A patent/CN111279323B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1263312A (zh) * | 1999-02-10 | 2000-08-16 | 国际商业机器公司 | 具有共享干预支持的非均匀存储器访问数据处理系统 |
CN1609823A (zh) * | 2003-10-23 | 2005-04-27 | 英特尔公司 | 用于维持共享高速缓存一致性的方法和设备 |
US20110225372A1 (en) * | 2009-04-27 | 2011-09-15 | Lsi Corporation | Concurrent, coherent cache access for multiple threads in a multi-core, multi-thread network processor |
US20110185125A1 (en) * | 2010-01-27 | 2011-07-28 | Prashant Jain | Resource sharing to reduce implementation costs in a multicore processor |
CN104508645A (zh) * | 2012-07-31 | 2015-04-08 | 惠普发展公司,有限责任合伙企业 | 用于使用多个子锁来控制对具有读取器-写入器锁的共享数据结构的访问的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
US20190146916A1 (en) | 2019-05-16 |
DE112018004636B4 (de) | 2021-12-30 |
CN111279323B (zh) | 2023-10-31 |
JP2021502629A (ja) | 2021-01-28 |
JP7083446B2 (ja) | 2022-06-13 |
GB2581753A (en) | 2020-08-26 |
DE112018004636T5 (de) | 2020-07-16 |
GB202008687D0 (en) | 2020-07-22 |
GB2581753B (en) | 2021-01-06 |
US10769068B2 (en) | 2020-09-08 |
WO2019092622A1 (en) | 2019-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10572385B2 (en) | Granting exclusive cache access using locality cache coherency state | |
US11003452B2 (en) | Effectiveness and prioritization of prefetches | |
KR102313021B1 (ko) | 전용 캐시에서 캐시 라인의 배타적 홀드를 연장하기 위한 퍼실리티 | |
EP3682333B1 (en) | Controlling a rate of prefetching based on bus bandwidth | |
CN111279323B (zh) | 通过多个处理器对共享高速缓存行的并发修改 | |
AU2020426828B2 (en) | Reserving one or more security modules for secure guest | |
US10795824B2 (en) | Speculative data return concurrent to an exclusive invalidate request | |
WO2022127453A1 (en) | In-line data packet transformations | |
EP3568754B1 (en) | Temporarily suppressing processing of a restrained storage operand request | |
US10572387B2 (en) | Hardware control of CPU hold of a cache line in private cache where cache invalidate bit is reset upon expiration of timer | |
US11880350B2 (en) | Identifying resource lock ownership across a clustered computing environment | |
US10831479B2 (en) | Instruction to move data in a right-to-left direction | |
US11074194B2 (en) | Managing direct memory access | |
US11151267B2 (en) | Move data and set storage key based on key function control |
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 |