CN110168510A - 用于延长私有高速缓存中的高速缓存行的独占持有的设施 - Google Patents
用于延长私有高速缓存中的高速缓存行的独占持有的设施 Download PDFInfo
- Publication number
- CN110168510A CN110168510A CN201880006436.8A CN201880006436A CN110168510A CN 110168510 A CN110168510 A CN 110168510A CN 201880006436 A CN201880006436 A CN 201880006436A CN 110168510 A CN110168510 A CN 110168510A
- Authority
- CN
- China
- Prior art keywords
- storage
- cache line
- operation number
- exclusively
- storage operation
- 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
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/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating 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
-
- 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
- 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/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- 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
-
- 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
-
- 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/60—Details of cache memory
- G06F2212/6042—Allocation of cache space to multiple users or processors
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)
- Multi Processors (AREA)
- Advance Control (AREA)
Abstract
提供一种计算环境设施以延长在处理存储操作数请求后在私有(或本地)高速缓存中的高速缓存行的独占持有。该设施包括确定对由该计算环境的多个处理单元共享的存储位置的存储操作数请求是否被指定为持有。此外,进行私有高速缓存中用于处理该存储操作数请求的对应的高速缓存行的状态是否被独占地拥有的确定。基于确定该存储操作数请求被指定为持有,以及私有高速缓存中用于处理该存储操作数请求的对应的高速缓存行的状态被独占地拥有,在完成该存储操作数请求的处理后,继续独占地持有该私有高速缓存中的该对应的高速缓存行。该继续持有可包括启动计数器以促进在期望的设定间隔内的继续持有。
Description
技术领域
一般而言,一个或多个方面涉及计算环境内的处理,尤其涉及改进这种处理。
背景技术
在多处理计算环境中,诸如中央处理单元(CPU)或内核的多个处理单元被连接以共享对共同存储(诸如,共同主存储位置)的访问。跨该配置的存储阶层(hierarchy)可包括每个处理单元私有或本地的各种高速缓存层级、在若干处理单元间共享的各种高速缓存层级及主存储。当处理单元将更新存储位置时,存储行由存储阶层转移至处理单元,且该行在对执行更新的处理单元私有的高速缓存层级内被独占地持有。当存储行由处理单元独占地持有时,不准许其它处理单元更新或读取该存储行,直至该行被释放并且不再由该处理单元独占地持有为止。
在若干计算机进程共享对主存储区域的访问的情况下,可使用旗语(或锁)控制对该存储区域的访问。旗语通常为主存储中的字或双字,并且旗语内容规定当前准许该配置内的哪个处理单元访问对应的存储区域。当在处理单元上执行的进程需要访问存储区域时,该进程更新旗语以指示共享区域在使用中,完成访问共享区域的任务,并且接着再次更新旗语以指示共享区域不再在使用中。
发明内容
在一个或多个方面中,通过提供用于促进计算环境中的处理的计算机程序产品来克服现有技术的某些缺点及提供额外优点。该计算机程序产品包括存储介质,其可由处理单元读取并且存储用于由处理单元执行以用于执行方法的指令。例如,该方法包括确定对由计算环境的多个处理单元共享的存储位置的存储操作数请求是否被指定为持有。此外,该方法包括确定私有高速缓存中用于处理该存储操作数请求的对应的高速缓存行的状态是否由该处理单元独占地拥有。基于确定存储操作数请求被指定为持有,以及私有高速缓存中用于处理该存储操作数请求的对应的高速缓存行的状态被独占地拥有,该方法进一步包括在完成该存储操作数请求的处理后,继续独占地持有私有高速缓存中的对应的高速缓存行。继续持有包括启动计数器以促进在期望的间隔内的继续持有。
有利地,计算机环境处理通过以下操作来增强:提供用于程序的设施(或能力)以发信号通知处理单元对应于由该计算环境的多个处理单元共享的存储位置的特定存储操作数请求或访问被指定为持有。基于将特定存储操作数请求识别为持有,以及基于确定私有高速缓存中用于处理该存储操作数请求的对应的高速缓存行的状态被独占地拥有,接着处理单元在完成存储操作数请求的处理后继续在期望的间隔内独占地持有私有高速缓存中的对应的高速缓存行。因此,出于在整个计算环境中独占地持有高速缓存行的目的,该处理单元可在比常规长的持续时间内脱离标准存储器管理协议,从而增大在释放高速缓存行前完成正在处理单元中执行的进程的机率。这有利地减少了包含旗语(或锁)的高速缓存行潜在地徒劳遍历(traverse)该计算环境的次数,从而增加整体系统性能。
在一个或多个实施方式中,启动该计数器可包括:启动用于在完成存储操作数请求的处理后继续独占地持有私有高速缓存中的对应的高速缓存行的设定间隔,以及在该计数器达到设定间隔后,中断独占地持有私有高速缓存中的对应的高速缓存行。在一个或多个实施例中,设定间隔的长度取决于该存储操作数请求的访问类型,其中,该访问类型可为提取型、存储型或更新型访问中的一者。在特定实施例中,针对存储型及更新型访问的设定间隔的长度可比针对提取型访问的设定间隔的长度更大。
在一个或多个实施方式中,该设定间隔可来自包括基于时间的间隔以及基于循环的间隔的组。另外,在一个或多个实施例中,该方法可包括:确定该存储操作数请求的访问类型,以及基于确定该访问类型为提取型访问,基于该计数器达到该设定间隔,中断独占地持有私有高速缓存中的该对应的高速缓存行。
在某些实施例中,该方法可进一步包括确定该存储操作数请求的访问类型,以及基于该访问类型为存储型或更新型,该方法可包括确定针对对应的高速缓存行,后续存储操作数请求是否被指定为释放。基于后续存储操作数请求被指定为释放,该方法可包括中断独占地持有私有高速缓存中的该对应的高速缓存行。另外,启动该计数器可包括启动用于在完成该存储操作数请求的处理后继续独占持有私有高速缓存中的该对应的高速缓存行的设定间隔。此外,在计数器达到设定间隔或者接收到针对该对应的高速缓存行的指定释放的后续存储操作数请求中的较早者发生后,中断持有该对应的高速缓存行。
在一个或多个实施方式中,在完成存储操作数请求的处理后继续独占地持有私有高速缓存中的对应的高速缓存行期间,将拒绝来自计算环境的系统控制的针对私有高速缓存中的对应的高速缓存行的任何高速缓存无效命令。
在另一方面中,提供一种用于促进计算环境内的处理的计算机系统。该计算机系统包括存储器,以及与存储器通信地耦接的处理单元,其中,该计算机系统被配置为执行方法。例如,该方法包括确定对由计算环境的多个处理单元共享的存储位置的存储操作数请求是否被指定为持有。此外,该方法包括确定私有高速缓存中用于处理该存储操作数请求的对应的高速缓存行的状态是否由该处理单元独占地拥有。基于确定存储操作数请求被指定为持有,以及私有高速缓存中用于处理该存储操作数请求的对应的高速缓存行的状态被独占地拥有,该方法进一步包括在完成该存储操作数请求的处理后,继续独占地持有私有高速缓存中的对应的高速缓存行。继续持有包括启动计数器以促进在期望的间隔内的继续持有。
在再一方面中,提供一种促进计算环境内的处理的计算机实现的方法。例如,该计算机实现的方法包括由处理单元确定对由计算环境的多个处理单元共享的存储位置的存储操作数请求是否被指定为持有。此外,该方法包括确定私有高速缓存中用于处理该存储操作数请求的对应的高速缓存行的状态是否由该处理单元独占地拥有。基于确定存储操作数请求被指定为持有,以及私有高速缓存中用于处理该存储操作数请求的对应的高速缓存行的状态被独占地拥有,该方法进一步包括在完成该存储操作数请求的处理后,继续独占地持有私有高速缓存中的对应的高速缓存行。继续持有包括启动计数器以促进在期望的间隔内的继续持有。
通过本文中所描述的技术实现额外特征及优点。本文中详细描述其它实施例及方面,并且将其视为所要求保护的方面的一部分。
附图说明
在本说明书的结论处的权利要求中,一个或多个方面作为示例被特别指出并清楚地要求保护。通过以下结合附图的详细描述,一个或多个方面的前述内容和目的、特征及优点是显而易见的,在附图中:
图1描绘了结合和使用本发明的一个或多个方面的计算环境的一个示例;
图2描绘了结合和使用本发明的一个或多个方面的计算环境的再一示例;
图3描绘了结合和使用本发明的一个或多个方面的多处理单元环境的一个示例;
图4描绘了根据本发明的一个或多个方面的存储操作数请求有关的处理的一个实施例;
图5A和图5B描绘了根据本发明的一个或多个实施例的存储操作数请求有关的处理的更详细的示例;
图6A说明了根据本发明的一个或多个方面有用的指令格式的一个实施例;
图6B说明了根据本发明的一个或多个方面的诸如图6A中描绘的指令格式的访问意图控制字段的一个实施例;
图7说明了根据本发明的一个或多个方面的可用于使用诸如图6A和图6B中描绘的指令来控制处理行为的流程图的实施例;
图8A和图8B描绘了根据本发明的一个或多个方面的存储操作数请求有关的处理的再一示例;
图9A描绘了结合和使用本发明的一个或多个方面的计算环境的另一示例;
图9B描绘了图9A中的存储器的进一步的细节;
图10描绘了云计算环境的一个实施例;以及
图11描绘了抽象模型层的一个示例。
具体实施方式
如所指出,旨在增强单个处理单元性能(诸如,管线化、超标量、无序执行及分支预测)的处理单元特征可导致推测性(speculative)存储器请求。对私有存储位置的推测性请求可以是有利的,但对共同存储位置的过度推测性请求可对旗语(或锁)处理不利。
用于旗语控制共同共享存储位置的处理单元间的竞争随着以下而增大:推测性存储器请求的数量由计算环境(或计算配置)中的处理单元来增加,计算环境中的处理单元的数量增加,或潜在地基于存储器子系统拓朴等。随着处理单元间的竞争增大,每个单个处理单元变得日益更难成功地获得及持有包含特定共享存储器位置的存储行。因此,整体系统性能可降级。
例如,当多个处理单元尝试更新对应于旗语的存储位置时,系统控制可向计算环境中的所有处理单元广播高速缓存无效命令,包括当前持有该存储行的处理单元,该存储行可在独占式状态中包含该旗语。标准存储器管理协议可能造成当前执行拥有锁的进程的处理单元在该进程可完成所有任务之前以及在该进程可更新该锁以指示共享区域不再在使用中之前,释放该行的独占式所有权。在此情况下,处理单元将需要稍后再次独占地检索该行以便结束进程。鉴于此,包含旗语的高速缓存行可频繁地遍历计算环境,而不利于任一单个进程。
根据本发明的一个或多个方面,提供一种用于程序的设施,其发信号通知处理单元特定存储操作数访问对应于包含旗语(或锁)的共同存储位置,并且将具有延长的持有。当发信号通知时,出于在整个计算环境中独占地持有高速缓存行的目的,该处理单元可在比常规长的持续时间内脱离标准存储器管理协议,从而增大在释放高速缓存行前完成正在处理单元上执行的进程的机率。结果,包含旗语的高速缓存行徒劳遍历计算环境的次数减少,从而增加系统性能。
参考图1描述结合和使用本发明的一个或多个方面的计算环境的一个实施例。在一个示例中,计算环境可基于由纽约阿蒙克市的国际商业机器公司提供的z/体系结构。在2015年3月的IBM公开号为SA22-7832-10的“z/Architecture Principles of Operation(z/体系结构的工作原理)”中描述了z/体系结构的一个实施例,其在此以全文引用的方式并入本文中。Z/ARCHITECTURE是美国纽约阿蒙克市的国际商业机器公司的注册商标。
在另一示例中,计算环境可基于由纽约阿蒙克市的国际商业机器公司提供的Power体系结构。在2015年4月9日的国际商业机器公司的“Power ISATMVersion 2.07B(Power ISA TM版本2.07B)”中描述了Power体系结构的一个实施例,其在此以全文引用的方式并入本文中。POWER ARCHITECTURE为美国纽约阿蒙克市的国际商业机器公司的注册商标。
计算环境还可以基于其它体系结构,包括但不限于英特尔x86体系结构。也存在其它例子。
如图1所示,计算环境100包括例如节点10,该节点具有例如计算机系统/服务器12,该计算机系统/服务器与众多其它通用或专用计算系统环境或配置一起操作。可适于与计算机系统/服务器12一起操作的众所周知的计算系统、环境和/或配置的示例包括但不限于:个人计算机(PC)系统、服务器计算机系统、瘦客户机、厚客户机、手持型或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费型电子产品、网络PC、小型计算机系统、大型计算机系统及包括以上系统或设备中的任一者的分布式云计算环境等。
可在由计算机系统执行的计算机系统可执行指令(诸如,程序模块)的一般情境下描述计算机系统/服务器12。通常,程序模块可包括执行特定任务或实现特定抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机系统/服务器12可在多个计算环境中实践,包括但不限于通过通信网络链接的远程处理设备执行任务的分布式云计算环境。在分布式云计算环境中,程序模块可位于包括存储器存储设备的本地和远程计算机系统存储介质两者中。
如图1所示,计算机系统/服务器12以通用计算设备的形式示出。计算机系统/服务器12的组件可以包括但不限于一个或多个处理器或处理单元16,系统存储器28,以及将包括系统存储器28的各种系统组件耦接到处理器16的总线18。
总线18表示几种类型的总线结构中的任何一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及处理器或使用多种总线体系结构中的任何总线体系结构的局域总线。作为示例而非限制,这样的体系结构包括工业标准体系结构(ISA)总线,微通道体系结构(MCA)总线,增强型ISA(EISA)总线,视频电子标准协会(VESA)局域总线和外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是能够被计算机系统/服务器12访问的任意可获得的介质,它包括易失性和非易失性介质,可移动和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为示例,存储系统34可以用于读写不可移动的、非易失性磁介质(未示出并且通常称为“硬盘驱动器”)。尽管未示出,但是可以提供用于对可移动非易失性磁盘(例如,“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(诸如CD-ROM,DVD-ROM或其它光学介质)读写的光盘驱动器。在这种情况下,每个驱动器可以通过一个或多个数据介质接口连接到总线18。如下面将进一步描绘和描述的,存储器28可以包括至少一个程序产品,该程序产品具有一组(例如,至少一个)程序模块,这些程序模块被配置为执行本发明的实施例的功能。
以示例说明而非限制,具有一组(至少一个)程序模块42的程序/实用工具40以及操作系统17、一个或多个应用程序、其它程序模块和程序数据可存储在存储器28中。操作系统、一个或多个应用程序、其它程序模块和程序数据中的每一个或它们的某种组合可包括网络环境的实现。程序模块42可通常执行如本文所描述的本发明的一个或多个实施例的功能和/或方法。
计算机系统/服务器12还可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信;还可与一个或多个使得用户能够与计算机系统/服务器12交互的设备通信;和/或与使得计算机系统/服务器12能够与一个或多个其它计算设备进行通信的任何设备(例如,网卡,调制解调器等)通信。这种通信可以通过输入/输出(I/O)接口22进行。此外,计算机系统/服务器12还可以通过网络适配器20与一个或多个网络(例如局域网(LAN),广域网(WAN),和/或公共网络(例如,因特网))通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它组件通信。应该理解,尽管未示出,但是其它硬件和/或软件组件可以与计算机系统/服务器12结合使用。示例包括但不限于:微代码,设备驱动器,冗余处理单元,外部磁盘驱动阵列,RAID系统,磁带驱动器和数据备份存储系统等。
作为示例,处理单元16可包括用于执行指令的多个功能组件。这些功能组件可包括:例如,用于提取要执行的指令的指令提取组件;用于解码所提取的指令的指令解码单元;用于执行解码指令的指令执行组件;在需要的情况下,访问用于指令执行的存储器的存储器访问组件;以及提供执行指令的结果的写回组件。根据本发明的一个方面,如以下进一步描述的,这些组件中的一个或多个可用于:如果对应于存储操作数请求的高速缓存行被识别为持有,则实现从典型存储器管理协议的脱离,以及如果对应于存储操作数请求的高速缓存行被识别为释放,则恢复典型存储器管理协议。
在一个实施例中,处理单元16还包括由该功能组件中的一个或多个使用的一个或多个寄存器。
参考图2描述了结合和使用本发明的一个或多个方面的计算环境的另一示例。在一个示例中,计算环境可再次基于上文提及的由纽约阿蒙克市的国际商业机器公司提供的z/体系结构。在另一示例中,计算环境可基于上文提及的由纽约阿蒙克市的国际商业机器公司提供的Power体系结构。计算环境还可基于其它体系结构,包括但不限于因特尔64和IA-32体系结构。还存在其它示例。
参考图2,在一个示例中,计算环境200包括耦接到一个或多个较高层级高速缓存205的至少一个处理单元(PU),诸如,中央处理单元(CPU)。中央处理单元16包括例如一个或多个执行单元201以请求和消耗(consume)数据。执行单元201耦接到加载/存储单元(LSU)202,该加载/存储单元(LSU)202包括加载/存储队列(LSQ)203。加载/存储单元202发出检索预取的数据或使该数据从存储器子系统或较高层级高速缓存提取的存储器访问操作(加载和存储)。LSU 202可经由(例如)转换(translation)机构(诸如,转换后援缓冲器(TLB)或有效至实际地址转换表(ERAT))耦接到本地(或私有)高速缓存204。
处理单元16耦接到存储器阶层并与其通信,该存储器阶层包括例如:本地(或私有)高速缓存204,其可包括L1数据高速缓存;一个或多个较高层级高速缓存205,其可包括单个层二(L2)高速缓存或多个其它按顺序编号的较高层级,例如,L3、L4;存储器215;以及相关联的存储器控制器210,其控制对存储器215的访问。本地高速缓存204充当用于被预取的数据(和/或数据流)的预取缓冲器。本地高速缓存204具有对应的加载未命中队列(LMQ),高速缓存利用其保存关于进行中的预取请求的信息。
另外,在一个实施例中,本地高速缓存204可具有相关联的高速缓存目录,其可被实现为高速缓存的部分或维持与高速缓存分开。高速缓存目录可包括针对本地高速缓存中的每个高速缓存行的标签。该标签提供关于高速缓存行的信息,包括:高速缓存行中的数据的实际或绝对地址的至少一部分,以及状态信息,诸如,该数据是独占式地持有还是共享等;数据的使用,诸如,其最近使用、最近不太使用,或处于最近使用与最近不太使用之间等;和/或其它状态信息。该标签还可包括关于高速缓存行中的数据的额外信息。每个高速缓存层级可具有相关联的高速缓存目录,或为其自身目录,或为共享目录。
除了示例存储器阶层之外,计算环境200还可包括从处理单元16的角度看来形成存储器阶层的一部分的额外存储设备。该存储设备可为一个或多个电子存储介质,诸如,软盘、硬盘驱动器、CD-ROM或DVD。CPU 102通过各种机制(作为示例,包括经由总线和/或直接信道)与存储器阶层内的以上设备中的每一个进行通信。
总线可表示几种类型的总线结构中的任何一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及处理器或使用多种总线体系结构中的任何总线体系结构的局域总线。以示例说明而非限制,这样的体系结构包括行业标准体系结构(ISA)总线、视频电子标准协会(VESA)局域总线和外围组件互连(PCI)总线。
在另一实施例中,本文中公开的处理可在多处理器环境中使用,诸如,以下参考图3描述的环境。在一个示例中,多处理器环境300包括多个内核302a……302n。每个内核包括至少一个硬件线程或处理单元304a、304n,其包括本地(或私有)高速缓存,诸如,L1高速缓存306a、306n。每个内核302a、302n耦接到零或更多个较高层级私有高速缓存(例如,L2高速缓存)。另外,多处理器环境300包括零或更多个共享高速缓存310,诸如,L3和/或L4高速缓存,其在内核之间共享,并且更特别地,在处理单元之间共享。还可存在其它拓朴。
多处理器环境(或处理单元的子集)中的每个处理单元还可包括将要用于查询高速缓存(如果可用,包括共享高速缓存中的一个或多个)中的一个或多个的查询功能,以获得高速缓存驻留状态和/或选定数据的其它信息。
如所指出,根据本发明的一个或多个方面,本文中提供一种用于增强计算环境内的处理的设施。如图4中所示,该设施可包括确定对由计算环境的多个处理单元共享的存储位置的存储操作数请求是否被指定为持有400的能力。此外,该设施可包括确定私有高速缓存中用于处理存储操作数请求的对应的高速缓存行的状态是否被独占地拥有410。基于确定该存储操作数请求被指定为持有,以及私有高速缓存中用于处理存储操作数请求的对应的高速缓存行的状态被独占地拥有,该设施包括在完成存储操作数请求的处理后,继续独占地持有私有高速缓存中的对应的高速缓存行。该继续持有可包括启动计数器以促进在期望的间隔内的该继续持有。
在一个或多个实施方式中,启动该计数器可包括:启动用于在完成存储操作数请求的处理后继续独占地持有该私有高速缓存中的对应的高速缓存行的设定间隔,以及在达到设定间隔后,中断独占地持有私有高速缓存中的对应的高速缓存行。在一个或多个实施例中,设定间隔的长度可取决于存储操作数请求的访问类型。例如,访问类型可为提取型、存储型或更新型访问。在某些实施例中,针对存储型访问或更新型访问的设定间隔的长度可比针对提取型访问的设定间隔的长度更大。通过示例,设定间隔可为基于时间的间隔或基于循环的间隔,在计数器降序计数(或升序计数)至设定计数间隔后,可释放对应的高速缓存行的继续持有。
在一个或多个实施方式中,该设施可包括确定存储操作数请求的访问类型,以及基于确定该访问类型为提取型访问,可基于计数器达到设定计数间隔,释放私有高速缓存中的对应的高速缓存行的独占持有。
在一个或多个实施例中,该设施可确定存储操作数请求的访问类型,以及基于该访问类型为存储型或更新型,进一步确定针对对应的高速缓存行,后续操作数请求是否被指定为释放。基于后续存储操作数请求被指定为释放,中断对私有高速缓存中的对应的高速缓存行的独占持有。此外,启动该计数器可包括:启动用于在完成存储操作数请求的处理后继续独占地持有私有高速缓存中的对应的高速缓存行的设定间隔,以及在后续存储操作数请求被指定为释放或者计数器达到设定计数间隔中的最早者后,中断持有对应的高速缓存行。
在一个或多个实施例中,在完成存储操作数请求的处理后继续独占地持有私有高速缓存中的对应的高速缓存行期间,拒绝针对私有高速缓存中的对应的高速缓存行的任何高速缓存无效命令(例如,来自计算环境的系统控制)。
图5A和图5B描绘根据本发明的一个或多个方面的过程流程的更详细的实施例。首先参考图5A,处理单元可提取指令500,并解码该指令以确定例如操作数有关的信号、执行单元(LSU、FXU等)、“持有”指定、“释放”指定等505。如所指出,提供持有指定和释放指定的能力可在指令集架构(ISA)中实现,它的一个示例在以下参考图6A至图7描述。
将指令排入队列以用于执行510,并且处理单元确定该指令是否准备发出515。如果为“否”,则指令保留在队列中510。否则,向执行单元发出指令。在此示例中,假定该指令包括存储操作数请求或访问并且被发出到加载存储单元(LSU)501(图5B)以用于处理。
参考图5B,LSU 501确定存储操作数地址530,并向整个存储阶层(包括处理单元的私有高速缓存,诸如,L1高速缓存)请求存储操作数访问535。
在描绘的实施方式中,LSU 501确定该存储操作数请求是否被指定为为持有540。如果为“否”,则在处理存储操作数请求中使用标准存储器管理协议595。如果为“是”,则LSU501确定存储访问的类型545。在描绘的示例中,关注的存储访问的类型可涉及提取型访问,或可替代地,与存储操作数请求相关联的存储型访问或更新型访问。
假定存在提取型访问,则处理确定在请求完成处理后私有高速缓存行的状态550。该状态为只读(RO)或独占式(EX)。如果为只读,则LSU501继续标准存储器管理协议595。然而,如果私有高速缓存中的对应的高速缓存行被保持为独占式(EX),则启动计数器以促进在期望的(或设定)间隔内对高速缓存行的持有。特别地,在一个或多个实施方式中,定时器可开始计时周期T1 555。注意,在一个或多个其它实施例中,可使用基于循环的间隔,而非基于时间的间隔。
LSU 501确定时间周期T1是否已期满560,如果为“否”,则例如通过拒绝来自系统控制(SC)的与特定私有高速缓存行相关联的任何高速缓存无效(XI)命令565,继续独占地持有私有高速缓存中的对应的高速缓存行。一旦计时周期或间隔已期满,则处理返回到标准存储器管理协议595。注意,在延长的持有间隔期间,存储操作数请求的处理可能已完成,但请求与其相关联的指令的处理可能尚未完成,因此,所公开的设施向程序提供比本来将传统地执行更长地继续持有高速缓存行的选项。通过特定示例,在指令为加载和测试指令的情况下,如下文所论述,此处理可以是有利的。
返回到查询545,在存储访问的类型为存储型或更新型访问的情况下,然后处理确定在请求完成处理后私有高速缓存行的状态570。如果为只读(RO),则处理返回到标准存储器协议595。如果为独占式(EX),则启动计数器以促进在期望的间隔内继续独占地持有私有高速缓存中的对应的高速缓存行。在基于时间的间隔的示例中,这可涉及开始T2计时周期或间隔575。注意,在一个或多个实施例中,计时周期T2可显著大于计时周期T1。还应注意,在一个或多个其它实施例中,可使用基于循环的间隔,而非基于时间的间隔。
LSU 501接下来确定计时周期T2是否已期满580,如果为“是”,则返回到标准存储器管理协议595,释放对应的高速缓存行的持有。如果计时周期T2尚未期满,则处理确定针对对应的(例如,L1)高速缓存行,指定释放的后续存储操作数请求是否已完成585。如果为“是”,则处理返回到标准存储器管理协议595。如果为“否”,则LSU 501拒绝来自系统控制的与特定私有(例如,L1)高速缓存行相关联的任何高速缓存无效(XI)命令590,并返回确定计时周期T2是否已期满580。
根据本发明的一个或多个实施例可使用的指令格式的一个实施例在以下参考图6A至图7描述。在图6A中,所描绘的指令格式被认为是下一个指令访问意图(NIAI)指令。该指令格式可包括操作码字段601,其指示这是下一个指令访问意图指令。另外,可提供保留字段602,其在一个或多个实施例中可包含零。该指令格式还可包括字段或操作数,诸如,访问意图控制字段603(I1),及另一访问意图控制字段604(I2)。
对于这种指令格式,术语主要访问操作数指的是指令的最低编号的存储操作数。类似地,术语次要访问操作数指的是指令的下一个最低编号的存储操作数。这些术语不具有与术语第一操作数和第二操作数相同的意义,即使可存在某种相关性。
受到I1 603和I2 604字段中的控制,向CPU发信号通知针对下一个顺序指令的主要访问和次要访问操作数中的任一者或两者的未来访问意图。下一个顺序指令可以是在NIAI指令后检索和执行的指令。I1 603字段可包含向CPU发信号通知针对下一个顺序指令的主要访问操作数的访问意图的码。I2 604字段可包含向CPU发信号通知针对下一个顺序指令的次要访问操作数的访问意图的码。当下一个顺序指令仅具有单个存储操作数时,可省略I2 604字段。
指令格式的一个实施例可包括单个访问意图字段。指令格式的另一实施例可包括两个访问意图字段。指令格式的另一实施例可包括多个访问意图字段。指令格式的再一实施例可包括包含指定后续接下来顺序指令的数量的值的字段或操作数。访问意图控制字段I1 603和I2 604可具有诸如图6B中描绘的格式610,其中I1 603和I2 604字段的位的设定数量包含无符号整数,其用作向CPU发信号通知针对下一个顺序指令的对应的操作数的访问意图的码。
根据本发明的一个或多个方面,可提供用于例如下一个指令访问意图指令的新访问意图码以允许程序和处理单元在与操作数参考的存储位置相关联的高速缓存行被独占地获得的情况下经由存储阶层延长持有该高速缓存行。与典型或传统存储操作数协议比较,该持有可为任一延长的间隔,诸如,期望的时间周期。以此方式,使用共享存储资源的程序具备在潜在地失去对计算环境中的另一处理单元的共享存储资源的控制前获得针对进一步进展的额外时间的能力,其中多个处理单元共享存储区域。另外,如果访问意图控制字段包含不同设定值(指示释放),则处理单元可终止延长的时间周期,其中在整个存储阶层中独占地持有该高速缓存行(即,其中延长的时间周期由先前的指令对启动,该先前的指令对包括具有被指定为持有的码的下一个指令访问意图)。在这种情况下,意图为放弃(relinquish)共享存储资源的控制以供其它处理单元利用。仅通过特定示例,用于持有值的访问意图控制字段可为例如值8,其中下一个顺序指令的对应的操作数参考针对多处理环境中的共同存储区域。另外,用于释放值的访问意图控制字段可为例如值7,其中下一个顺序指令的对应的操作数参考针对多处理环境中的共同存储区域。
如所指出,通过使用控制字段中的持有和释放值,有可能减轻存储子系统中的不必要的操作。指定为“持有”的访问意图控制字段可用于提取型、存储型或更新型的操作数参考。作为使用访问意图持有值的结果可独占地持有高速缓存行的延长间隔对于存储型和更新型操作数可比对于提取型操作数显著更长。当程序使用具有对应的存储型或更新型操作数的访问意图值“持有”(向处理单元发信号通知持有特定高速缓存行)且高速缓存行被成功地更新时,该程序可稍后通过使用指定访问意图“释放”值(具有参考同一特定高速缓存行的对应的存储型或更新型操作数)的后续下一个指令访问意图指令来明确地终止独占地持有。
在程序使用具有对应的提取型操作数的访问意图持有值的情况下,如本文中所解释的,向处理单元发信号通知独占地持有该特定高速缓存行,该处理单元确定何时终止该持有,而不用来自程序的任何进一步指示。
当程序使用具有有条件地更新该存储位置的对应的操作数参考的访问意图持有值并且限定存储更新的条件不满足时,在延长的时间周期内,在整个存储阶层中,处理单元不独占地持有对应的高速缓存行。比较和调换指令为有条件地更新存储位置的存储操作数参考的示例。注意,对应于访问意图释放值的操作数应为存储型或更新型操作数。另外,访问意图持有或释放值可采用主要访问操作数来使用,如由I1字段指定。
以下描述当使用旗语辅助(或锁辅助)时使用具有访问意图持有和释放值的下一个指令访问意图指令的特定示例。有利地,使用这些访问意图值减小了具有针对共享存储区域的多处理配置的多个CPU间的竞争。
在以上材料中,提供采用在下一个指令访问意图(NIAI)指令中使用访问意图持有和释放值来扩增包括锁定及解锁功能的程序的示例。该示例演示程序内可使用下一个指令访问意图指令的位置,并解释益处。以上示例包括若干假定。
例如,符号地址LOCKADDR为包含锁字的用于资源的标头(header)的存储位置。当锁为零时,锁和资源可用。该锁为非零时,锁和资源不可用,其中LOCKADDR为由多个CPU频繁地参考的存储位置。
另外,通用寄存器5包含用作锁值的非零值(诸如,CPU ID)。
注意,在以上示例中的NIAI指令的使用使得:避免对在CPU的本地高速缓存层级外部的存储阶层推测性查询LT指令的操作数参考,从而消除在整个存储子系统中的不必要查询;在锁可用的情况下,如果独占地获得,则由CPU的本地高速缓存足够长时间地独占地持有对应于LT指令的操作数参考的该高速缓存行,以设定锁。注意,由于NIAI持有对应于提取型操作数参考,因此不需要后续NIAI释放。
关于与比较和调换指令相关联的NIAI指令的使用,注意:在对应的高速缓存行尚未独占地获得的情况下,避免了对在CPU的本地高速缓存层级外部的存储阶层推测性查询CS指令的操作数参考,从而消除在整个存储子系统中的不必要查询;目标为在相对长的延长时间周期内在CPU的本地高速缓存中独占地持有该高速缓存行(对应于CS的指令的操作数参考),以便在标注为LOCKACQUIRED与LOCKRELEASE的程序之间执行多个指令;当CS指令的所得条件码为0时,更新存储位置LOCKADDR,并且CPU尝试在延长的时间周期内独占地持有对应于LOCKADDR的高速缓存行,并且预期该程序将使用对应于LOCKADDR的后续NIAI释放来终止高速缓存行的延长持有;以及,当CS指令的所得条件码为1时,不修改在位置LOCKADDR处的存储的内容,CPU不在延长的时间周期内持有对应于LOCKADDR的高速缓存行,并且不需要对应于LOCKADDR的后续NIAI释放。
关于与MVHI指令相关联的NIAI指令的使用,注意:在对应的高速缓存行不再独占地持有的情况下,避免了对在CPU的本地高速缓存外部的存储阶层推测性查询MVHI指令的操作数参考,从而消除在整个存储子系统中的不必要查询;以及终止CPU尝试独占地持有对应于LOCKADDR的高速缓存行的延长的时间周期。
注意,如果仅添加少数指令,并且所添加的指令中没有指令遇到CPU高速缓存未命中,则可将一个或多个指令添加到在第一BRNZ指令与LOCKAVAIL程序标记之间的程序,而不损害使用与LT指令相关联的NIAI指令的预期益处。
另外,在一个或多个特定实施例中,一旦CPU针对对应的存储型或更新型操作数允准(honor)持有高速缓存行的请求,则直至初始请求结束后,才可允准针对对应的存储型或更新型操作数的后续NIAI持有请求。然而,CPU可允准针对对应的提取型操作数持有高速缓存行的请求。在一个或多个实施例中,在任何给定时间,处理单元或CPU可正允准针对对应的操作数(诸如,对应的提取型操作数)持有高速缓存行的多个请求。对于有条件地更新操作数位置的对应的存储型或更新型操作数,如果不更新高速缓存行,则不需要允准持有该高速缓存行的请求。更新包括存储的值与初始值相同的情况。比较和调换指令为有条件地更新存储位置的存储操作数参考的示例。
在具有对应的提取型操作数的NIAI持有后,不需要针对同一高速缓存行的后续NIAI释放。作为针对同一高速缓存行尝试NIAI释放的结果,将不终止由具有对应的提取型操作数的NIAI持有所产生的持有高速缓存行的延长的时间周期。另外,在具有有条件地更新操作数位置的对应的存储型或更新型操作数的NIAI持有后而高速缓存行未更新的情况下,不必要求针对同一高速缓存行的后续NIAI释放。
参考图7描述根据实施例的流程图的一个实施例。如图所示,在一个或多个实施方式中,CPU获得指示访问意图的访问意图指令700。访问意图可与下一个顺序指令的操作数相关联。访问意图还可指示由在下一个顺序指令后的指令使用该操作数。CPU接着执行访问意图指令710。在一个实施例中,处理单元可通过将访问意图内部存储(例如)于内部存储器或内部控制寄存器中来记住该访问意图。CPU获得下一个顺序指令720。执行该下一个顺序指令,并且作为执行的部分,基于访问意图指令的访问意图控制处理单元行为730。
在一个或多个实施例中,所控制的处理单元行为在本文中被描述为在存储操作数请求被指定为持有,并且私有高速缓存中用于处理存储操作数请求的对应的高速缓存行由处理单元独占地拥有的情况下,在完成存储操作数请求的处理后选择性地继续独占地持有私有高速缓存中的对应的高速缓存行。如所指出,该继续持有可包括启动计数器以促进在期望的间隔内的持有。另外,基于访问类型为存储型或更新型,可针对对应的高速缓存行,将后续存储操作数请求指定为释放,以便中断独占地持有私有高速缓存中的对应的高速缓存行。如上所指出,在一个或多个实施中,可利用访问意图指令的控制字段中的一个或多个中的指定的访问意图码来实现将存储操作数请求识别为“持有”或“释放”。
换句话说,当成功地处理被指定为持有的存储操作数时,本文中描述的设施的主要结果是处理单元拒绝来自系统控制的与由处理单元独占地持有的特定高速缓存行相关联的高速缓存无效命令。拒绝这些命令的副产物为,由处理单元在整个存储阶层中独占地持有对应的高速缓存行的时间比典型协议将准许的时间长。当延长的持有间隔期满时,处理单元仍然持有该高速缓存行,但在设定间隔期满后,处理单元恢复典型存储阶层协议。在这种情况下,在接收到来自系统控制的高速缓存无效(XI)命令后,处理单元将从高速缓存释放该行,且在允准该高速缓存无效后,处理单元将不再持有该高速缓存行。
参考图8A和图8B,根据本发明的一个或多个方面,促进在计算环境内的处理(800)包括:确定对由计算环境的多个处理单元共享的共同存储位置的存储操作数请求是否被指定为持有;确定私有高速缓存中用于处理存储操作数请求的对应的高速缓存行的状态是否由处理单元独占地拥有;以及基于确定存储操作数请求被指定为持有,以及私有高速缓存中用于处理存储操作数请求的对应的高速缓存行的状态被独占地拥有,在完成存储操作数请求的处理后,继续独占地持有私有高速缓存中的对应的高速缓存行。继续持有包括启动计数器以促进在期望的间隔内的继续持有。
在一个或多个实施方式中,启动计数器可包括:启动用于在完成存储操作数请求的处理后继续独占地持有私有高速缓存中的对应的高速缓存行的设定间隔,以及在该计数器达到设定间隔后,中断独占地持有私有高速缓存中的对应的高速缓存行(805)。在一个或多个实施例中,设定间隔的长度可取决于该存储操作数请求的访问类型,其中该访问类型可为提取型、存储型或更新型访问(810)。在某些实施例中,针对存储型及更新型访问的设定间隔的长度可比针对提取型访问的设定间隔的长度更大(815)。另外,该间隔可为基于时间的间隔或基于循环的间隔(820)。
在一个或多个实施例中,处理可包括确定存储操作数请求的访问类型,以及基于确定该访问类型为提取型访问,基于计数器达到设定间隔,中断独占地持有私有高速缓存中的对应的高速缓存行(825)。
在一个或多个实施例中,该处理包括:确定存储操作数请求的访问类型,以及基于该访问类型为存储型或更新型访问,确定针对对应的高速缓存行,后续存储操作数请求是否被指定为释放,以及基于该后续存储操作数请求被指定为释放,中断独占地持有私有高速缓存中的对应的高速缓存行(830)。在一个或多个实施例中,该启动可包括:启动用于在完成存储操作数请求的处理后继续独占地持有私有高速缓存中的对应的高速缓存行的设定间隔,以及在计数器达到设定间隔或者接收到针对对应的高速缓存行的指定释放的后续存储操作数请求中的较早者发生后,中断独占地持有该对应的高速缓存行(835)。
在完成存储操作数请求的处理后继续独占地持有私有高速缓存中的对应的高速缓存行期间,拒绝针对私有高速缓存中的对应的高速缓存行的任何高速缓存无效命令(840)。
参考图9A描述结合和使用一个或多个方面的计算环境的另一实施例。在此示例中,计算环境900包括:例如,本机中央处理单元(CPU)902、存储器904,以及经由例如一个或多个总线908和/或其它连接而彼此耦接的一个或多个输入/输出设备和/或接口906。作为示例,计算环境900可包括:由纽约阿蒙克市的国际商业机器公司提供的PowerPC处理器或pSeries服务器;由加利福尼亚州帕洛阿尔托的惠普公司提供的配备英特尔安腾II处理器的HP Superdome;和/或基于由国际商业机器公司、惠普公司、因特尔公司、甲骨文公司或其它公司提供的体系结构的其它机器。
本机中央处理单元902包括一个或多个本机寄存器910,诸如,在环境内的处理期间使用的一个或多个通用寄存器和/或一个或多个专用寄存器。这些寄存器包括表示在任何特定时间点的环境状态的信息。
此外,本机中央处理单元902执行存储在存储器904中的指令和代码。在一个特定示例中,中央处理单元执行存储在存储器904中的仿真器代码912。该代码使得在一个体系结构中配置的计算环境能够仿真另一种体系结构。例如,仿真器代码912允许基于不同于z/体系结构的体系结构的机器(诸如,PowerPC处理器、pSeries服务器、HP Superdome服务器或其它)仿真z/体系结构并执行基于z/体系结构开发的软件和指令。
参考图9B描述与仿真器代码912有关的进一步细节。共同地参考图9A和图9B,存储在存储器904中的访客指令950包括被开发为在不同于本机CPU 902的体系结构的体系结构中执行的软件指令(例如,与机器指令相关)。例如,访客指令950可能已经被设计为在z/体系结构处理器上执行,但是相反地,其在可以是例如英特尔安腾II处理器的本机CPU 902上进行仿真。在一个示例中,仿真器代码912包括指令提取例程952,以从存储器904获得一个或多个访客指令950,并且可选地为所获得的指令提供本地缓冲。它还包括指令转换例程954,以确定所获得的访客指令的类型,并将访客指令转换成一个或多个对应的本机指令956。该转换包括:例如,识别将要由访客指令执行的功能,并选择执行该功能的本机指令。
另外,仿真器代码912包括仿真控制例程960以使本机指令被执行。仿真控制例程960可使本机CPU 902执行仿真一个或多个先前所获得的访客指令的本机指令的例程,并且在这种执行结束时,将控制返回到指令提取例程以仿真下一个访客指令或访客指令组的获得。本机指令956的执行可包括:将数据从存储器904加载到寄存器中;将数据从寄存器存储回存储器;或者执行如由转换例程确定的某种类型的算术或逻辑运算。
每个例程例如以软件实现,该软件存储在存储器中并由本机中央处理单元902执行。在其它示例中,一个或多个例程或操作以固件、硬件、软件或它们的一些组合实现。所仿真处理器的寄存器可使用本机CPU的寄存器910或通过使用存储器904中的位置来仿真。在实施例中,访客指令950、本机指令956和仿真器代码912可驻留在同一存储器中或可分配在不同的存储器设备中。
如本文中所使用的,固件包括例如处理器的微代码、毫代码(millicode)和/或宏代码。例如,该术语包括用于实现更高级机器代码的硬件级指令和/或数据结构。在一个实施例中,固件可包括例如通常作为微代码传送的专有代码,其包括特定于底层硬件的可信软件或微代码,并控制对系统硬件的操作系统访问。
已获得、转换并执行的访客指令950例如是本文中描述的指令中的一个或多个指令。将具有一种体系结构(例如,z/体系结构)的指令从存储器中提取、转换并表示为一系列的具有另一种体系结构(例如,PowerPC、pSeries、Intel等)的本机指令956。然后可执行这些本机指令。
尽管提供了各种示例,但在不脱离所要求保护的方面的精神的情况下,可以进行变化。例如,在其它实施例中,在由指令使用的寄存器和/或字段中包括的值可以在其它位置,例如存储器位置等。多个其它变体是可能的。
一个或多个方面可涉及云计算。
事先应理解,尽管本公开包括关于云计算的详细描述,但本文中所述的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其它类型的计算环境来实现。
云计算是服务交付的模型,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源能够以最小的管理成本或与服务提供商进行最少的交互来快速部署和释放。可配置计算资源例如是:网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务。这种云模型可以包括至少五个特征,至少三个服务模型和至少四个部署模型。
特征如下:
按需自助式服务:云的消费者在无需与服务提供商进行人为交互的情况下,能够单方面自动地按需部署计算能力,诸如服务器时间和网络存储。
广泛的网络接入:计算能力通过网络获得,并通过标准机制访问,该标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如,移动电话,膝上型电脑和PDA)的使用。
资源池:提供商的计算资源被归入资源池,以使用多租户模式为多个消费者提供服务,其中根据需求动态分配和重新分配不同的实体资源和虚拟资源。通常消费者不能控制或者并不知晓所提供的资源的确切位置,但是可能能够在更高抽象级别(例如,国家,州或数据中心)指定位置,因此具有位置无关性。
迅速弹性:可以迅速、有弹性地(有时是自动地)部署计算能力,以快速扩展,并且能迅速释放来快速缩小。对于消费者来说,用于部署的可用计算能力通常显得是无限的,并能在任意时候都能获取任意数量的计算能力。
可测量的服务:云系统通过利用适于服务类型(例如,存储,处理,带宽和活跃用户帐户)的某种抽象级别的计量能力来自动控制和优化资源使用。可以监视,控制和报告资源使用,从而为所使用的服务的提供者和消费者提供透明度。
服务模型如下:
软件即服务(SaaS):提供给消费者的能力是使用提供商在云基础架构上运行的应用。可以通过诸如网络浏览器(例如,基于网络的电子邮件)的瘦客户机接口从各种客户机设备访问应用。消费者既不管理也不控制底层云基础架构,包括网络、服务器、操作系统、存储、甚至单个应用能力,可能的例外是有限的特定于用户的应用配置设置。
平台即服务(PaaS):提供给消费者的能力是在云基础架构上部署消费者创建或获得的应用,这些应用利用由提供商支持的编程语言和工具创建。消费者既不管理也不控制底层云基础架构,包括网络、服务器、操作系统或存储,但可以控制已部署的应用以及可能的应用托管环境配置。
基础架构即服务(IaaS):提供给消费者的能力是部署处理、存储、网络和其它基础计算资源,其中消费者能够部署和运行任意软件,该软件可以包括操作系统和应用。消费者既不管理也不控制底层云基础设施,而是具有对操作系统,存储,部署的应用的控制,以及具有可能的对选择的网络组件(例如,主机防火墙)的有限控制。
部署模型如下:
私有云:云基础架构单独为组织运行。它可以由组织或第三方管理,可以存在于该组织内部或外部。
共同体云:云基础架构由多个组织共享,并支持具有共同利害关系(例如,任务使命,安全要求,策略和合规考虑)的特定共同体。它可能由组织或第三方管理,并且可能存在于该共同体内部或外部。
公共云:云基础架构向公众或大型产业群提供,并由销售云服务的组织所有。
混合云:云基础架构由两个或多个云(私有云,共同体云或公共云)组成,这些云仍然是独特的实体,但通过使数据和应用能够移植的标准化或私有技术(例如,用于云之间的负载平衡的云突发流量分担技术)绑定在一起。
云计算环境是面向服务的,特点集中在无状态,低耦合性,模块性和语意的互操作性。云计算的核心是包含互连节点网络的基础设施。一个这样的节点是图1中所描绘的节点10。
计算节点10仅是合适的云计算节点的一个示例,并且不旨在对本文描述的本发明的实施例的使用范围或功能提出任何限制。无论如何,云计算节点10能够实现和/或执行上文阐述的任何功能。
现在参考图10,描绘了示意性的云计算环境50。如图所示,云计算环境50包括云的消费者使用本地计算设备可以与其通信的一个或多个计算节点10,本地计算设备例如是个人数字助理(PDA)或蜂窝电话54A,台式计算机54B,膝上型计算机54C和/或汽车计算机系统54N。节点10可以彼此通信。它们可以在一个或多个网络中物理地或虚拟地分组(未示出),例如如上所述的私有云,共同体云,公共云或混合云,或其组合。这样,云的消费者无需维护本地计算设备上的资源就能够允许云计算环境50提供基础架构即服务、平台即服务和/或软件即服务。应该理解,图7中所示的计算设备54A-N的类型仅仅是示意性的,而计算节点10和云计算环境50可以(例如,使用网络浏览器)通过任何类型的网络和/或网络可寻址连接与任何类型的计算设备通信。
现在参考图11,示出了由云计算环境50(图10)提供的一组功能抽象层。应该事先理解图11中所示的组件、层和功能仅仅是示意性的,并且本发明的实施例不限于此。如图所示,提供了以下层和相应的功能:
硬件和软件层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 (25)
1.一种用于促进计算环境内的处理的计算机程序产品,所述计算机程序产品包括:
计算机可读存储介质,其可由处理单元读取并且存储用于由所述处理单元执行以用于执行方法的指令,所述方法包括:
确定对由计算环境的多个处理单元共享的存储位置的存储操作数请求是否被指定为持有;
确定私有高速缓存中用于处理所述存储操作数请求的对应的高速缓存行的状态是否由所述处理单元独占地拥有;以及
基于确定所述存储操作数请求被指定为持有,以及私有高速缓存中用于处理所述存储操作数请求的所述对应的高速缓存行的所述状态被独占地拥有,在完成所述存储操作数请求的处理后,继续独占地持有私有高速缓存中的所述对应的高速缓存行,所述继续持有包括启动计数器以促进在期望的间隔内的所述继续持有。
2.如权利要求1所述的计算机程序产品,其中,所述启动包括:启动用于在完成所述存储操作数请求的处理后继续独占地持有私有高速缓存中的所述对应的高速缓存行的设定间隔,以及在所述计数器达到所述设定间隔后,中断所述独占地持有私有高速缓存中的所述对应的高速缓存行。
3.如权利要求2所述的计算机程序产品,其中,所述设定间隔的长度取决于所述存储操作数请求的访问类型,所述访问类型来自包括提取型、存储型及更新型的组。
4.如权利要求3所述的计算机程序产品,其中,针对所述存储型及所述更新型的设定计数间隔的长度比针对所述提取型的所述设定计数间隔的长度更大。
5.如权利要求2所述的计算机程序产品,其中,所述设定间隔来自包括基于时间的间隔以及基于循环的间隔的组。
6.如权利要求2所述的计算机程序产品,进一步包括:确定所述存储操作数请求的访问类型,以及基于确定所述访问类型为提取型访问,基于所述计数器达到所述设定间隔,中断所述独占地持有私有高速缓存中的所述对应的高速缓存行。
7.如权利要求1所述的计算机程序产品,进一步包括:确定所述存储操作数请求的访问类型,以及基于所述访问类型为存储型或更新型,确定针对所述对应的高速缓存行,后续存储操作数请求是否被指定为释放,以及基于所述后续存储操作数请求被指定为释放,中断所述独占地持有私有高速缓存中的所述对应的高速缓存行。
8.如权利要求7所述的计算机程序产品,其中,所述启动包括:启动用于在完成所述存储操作数请求的处理后继续独占地持有私有高速缓存中的所述对应的高速缓存行的设定间隔,以及在所述计数器达到所述设定间隔或者接收到针对所述对应的高速缓存行的指定释放的所述后续存储操作数请求中的较早者发生后,中断所述独占地持有所述对应的高速缓存行。
9.如权利要求1所述的计算机程序产品,其中,在完成所述存储操作数请求的处理后所述继续独占地持有私有高速缓存中的所述对应的高速缓存行期间,拒绝针对私有高速缓存中的所述对应的高速缓存行的高速缓存无效命令。
10.一种用于促进计算环境内的处理的计算机系统,所述计算机系统包括:
存储器;以及
处理单元,其与所述存储器通信地耦接,其中,所述计算机系统被配置为执行方法,所述方法包括:
确定对由计算环境的多个处理单元共享的存储位置的存储操作数请求是否被指定为持有;
确定私有高速缓存中用于处理所述存储操作数请求的对应的高速缓存行的状态是否由所述处理单元独占地拥有;以及
基于确定所述存储操作数请求被指定为持有,以及私有高速缓存中用于处理所述存储操作数请求的所述对应的高速缓存行的所述状态被独占地拥有,在完成所述存储操作数请求的处理后,继续独占地持有私有高速缓存中的所述对应的高速缓存行,所述继续持有包括启动计数器以促进在期望的间隔内的所述继续持有。
11.如权利要求10所述的计算机系统,其中,所述启动包括:启动用于在完成所述存储操作数请求的处理后继续独占地持有私有高速缓存中的所述对应的高速缓存行的设定间隔,以及在所述计数器达到所述设定间隔后,中断所述独占地持有私有高速缓存中的所述对应的高速缓存行。
12.如权利要求11所述的计算机系统,其中,所述设定间隔的长度取决于所述存储操作数请求的访问类型,所述访问类型来自包括提取型、存储型及更新型的组。
13.如权利要求12所述的计算机系统,其中,针对所述存储型及所述更新型的所述设定间隔的长度比针对所述提取型的所述设定间隔的长度更大。
14.如权利要求11所述的计算机系统,其中,所述设定间隔来自包括基于时间的间隔以及基于循环的间隔的组。
15.如权利要求11所述的计算机系统,进一步包括:确定所述存储操作数请求的访问类型,以及基于确定所述访问类型为提取型访问,基于所述计数器达到所述设定间隔,中断所述独占地持有私有高速缓存中的所述对应的高速缓存行。
16.如权利要求10所述的计算机系统,进一步包括:确定所述存储操作数请求的访问类型,以及基于所述访问类型为存储型或更新型,确定针对所述对应的高速缓存行,后续存储操作数请求是否被指定为释放,以及基于所述后续存储操作数请求被指定为释放,中断所述独占地持有私有高速缓存中的所述对应的高速缓存行。
17.如权利要求16所述的计算机系统,其中,所述启动包括:启动用于在独占地完成所述存储操作数请求的处理后继续持有私有高速缓存中的所述对应的高速缓存行的设定间隔,以及在所述计数器达到所述设定间隔或者接收到针对所述对应的高速缓存行的指定释放的所述后续存储操作数请求中的较早者发生后,中断所述独占地持有所述对应的高速缓存行。
18.如权利要求10所述的计算机系统,其中,在完成所述存储操作数请求的处理后所述继续独占地持有私有高速缓存中的所述对应的高速缓存行期间,拒绝针对私有高速缓存中的所述对应的高速缓存行的高速缓存无效命令。
19.一种用于促进计算环境内的处理的计算机实现的方法,所述计算机实现的方法包括:
由处理单元确定对由计算环境的多个处理单元共享的存储位置的存储操作数请求是否被指定为持有;
确定私有高速缓存中用于处理所述存储操作数请求的对应的高速缓存行的状态是否由所述处理单元独占地拥有;以及
基于确定所述存储操作数请求被指定为持有,以及私有高速缓存中用于处理所述存储操作数请求的所述对应的高速缓存行的所述状态被独占地拥有,在完成所述存储操作数请求的处理后,继续独占地持有私有高速缓存中的所述对应的高速缓存行,所述继续持有包括启动计数器以促进在期望的间隔内的所述继续持有。
20.如权利要求19所述的计算机实现的方法,其中,所述启动包括:启动用于在完成所述存储操作数请求的处理后继续独占地持有私有高速缓存中的所述对应的高速缓存行的设定间隔,以及在所述计数器达到所述设定间隔后,中断所述独占地持有私有高速缓存中的所述对应的高速缓存行。
21.如权利要求20所述的计算机实现的方法,其中,所述设定间隔的长度取决于所述存储操作数请求的访问类型,所述访问类型来自包括提取型、存储型及更新型的组。
22.如权利要求21所述的计算机实现的方法,其中,针对所述存储型及所述更新型的所述设定间隔的长度比针对所述提取型的所述设定间隔的长度更大。
23.如权利要求20所述的计算机实现的方法,进一步包括:确定所述存储操作数请求的访问类型,以及基于确定所述访问类型为提取型访问,基于所述计数器达到所述设定间隔,中断所述独占地持有私有高速缓存中的所述对应的高速缓存行。
24.如权利要求19所述的计算机实现的方法,进一步包括:确定所述存储操作数请求的访问类型,以及基于所述访问类型为存储型或更新型,确定针对所述对应的高速缓存行,后续存储操作数请求是否被指定为释放,以及基于所述后续存储操作数请求被指定为释放,中断所述独占地持有私有高速缓存中的所述对应的高速缓存行。
25.如权利要求24所述的计算机实现的方法,其中,所述启动包括:启动用于在完成所述存储操作数请求的处理后继续独占地持有私有高速缓存中的所述对应的高速缓存行的设定间隔,以及在所述计数器达到所述设定间隔或者接收到针对所述对应的高速缓存行的指定释放的所述后续存储操作数请求中的较早者发生后,中断所述独占地持有所述对应的高速缓存行。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/404,247 US10621090B2 (en) | 2017-01-12 | 2017-01-12 | Facility for extending exclusive hold of a cache line in private cache |
US15/404,247 | 2017-01-12 | ||
PCT/EP2018/050112 WO2018130440A1 (en) | 2017-01-12 | 2018-01-03 | Facility for extending exclusive hold of a cache line in private cache |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110168510A true CN110168510A (zh) | 2019-08-23 |
CN110168510B CN110168510B (zh) | 2023-05-26 |
Family
ID=60953858
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880006436.8A Active CN110168510B (zh) | 2017-01-12 | 2018-01-03 | 用于延长私有高速缓存中的高速缓存行的独占持有的设施 |
Country Status (13)
Country | Link |
---|---|
US (1) | US10621090B2 (zh) |
EP (1) | EP3568769B1 (zh) |
JP (1) | JP7064268B2 (zh) |
KR (1) | KR102313021B1 (zh) |
CN (1) | CN110168510B (zh) |
AU (1) | AU2018208419B2 (zh) |
CA (1) | CA3037433A1 (zh) |
IL (1) | IL265556B (zh) |
MX (1) | MX2019012410A (zh) |
RU (1) | RU2730440C1 (zh) |
TW (1) | TWI659305B (zh) |
WO (1) | WO2018130440A1 (zh) |
ZA (1) | ZA201904863B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10521351B2 (en) | 2017-01-12 | 2019-12-31 | International Business Machines Corporation | Temporarily suppressing processing of a restrained storage operand request |
US10572387B2 (en) | 2018-01-11 | 2020-02-25 | International Business Machines Corporation | Hardware control of CPU hold of a cache line in private cache where cache invalidate bit is reset upon expiration of timer |
US11216315B2 (en) * | 2018-02-21 | 2022-01-04 | Rubrik, Inc. | Distributed semaphore with a different keys to reduce contention for dynamic reservation of disk space |
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 |
US11947456B2 (en) * | 2021-09-30 | 2024-04-02 | Advanced Micro Devices, Inc. | Weak cache line invalidation requests for speculatively executing instructions |
TWI796943B (zh) * | 2022-01-27 | 2023-03-21 | 凌群電腦股份有限公司 | 利用緩存鏡射資料實現高效運算之處理系統 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5175829A (en) * | 1988-10-25 | 1992-12-29 | Hewlett-Packard Company | Method and apparatus for bus lock during atomic computer operations |
CN101189590A (zh) * | 2005-03-29 | 2008-05-28 | 国际商业机器公司 | 使用流寄存器过滤监听请求的方法和装置 |
CN101504628A (zh) * | 2007-11-28 | 2009-08-12 | 国际商业机器公司 | 用于干预共享高速缓存线的方法和系统 |
US20110093422A1 (en) * | 2009-10-20 | 2011-04-21 | Oracle International Corporation | Time-based conflict resolution |
US20140310480A1 (en) * | 2013-04-12 | 2014-10-16 | Arm Limited | Data processing apparatus and method for performing load-exclusive and store-exclusive operations |
CN104246726A (zh) * | 2012-04-18 | 2014-12-24 | 高通股份有限公司 | 用于维持高速缓存一致性的只写无数据状态 |
CN104937539A (zh) * | 2012-11-28 | 2015-09-23 | 英特尔公司 | 用于提供推入缓冲器复制和存储功能的指令和逻辑 |
CN105164651A (zh) * | 2013-03-15 | 2015-12-16 | 英特尔公司 | 在管理的运行时间环境域中的高速缓存管理 |
US20150378900A1 (en) * | 2014-06-27 | 2015-12-31 | International Business Machines Corporation | Co-processor memory accesses in a transactional memory |
CN105579978A (zh) * | 2013-10-31 | 2016-05-11 | 英特尔公司 | 用于动态控制高速缓存存储器的寻址模式的方法、设备和系统 |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4225921A (en) * | 1978-10-02 | 1980-09-30 | Honeywell Information Systems Inc. | Transfer control technique between two units included in a data processing system |
US5623632A (en) * | 1995-05-17 | 1997-04-22 | International Business Machines Corporation | System and method for improving multilevel cache performance in a multiprocessing system |
US5761712A (en) * | 1995-06-07 | 1998-06-02 | Advanced Micro Devices | Data memory unit and method for storing data into a lockable cache in one clock cycle by previewing the tag array |
US5963974A (en) | 1997-04-14 | 1999-10-05 | International Business Machines Corporation | Cache intervention from a cache line exclusively holding an unmodified value |
US6728866B1 (en) | 2000-08-31 | 2004-04-27 | International Business Machines Corporation | Partitioned issue queue and allocation strategy |
JP3729087B2 (ja) | 2001-05-23 | 2005-12-21 | 日本電気株式会社 | マルチプロセッサシステム、データ依存投機実行制御装置およびその方法 |
US6801986B2 (en) * | 2001-08-20 | 2004-10-05 | Hewlett-Packard Development Company, L.P. | Livelock prevention by delaying surrender of ownership upon intervening ownership request during load locked / store conditional atomic memory operation |
JP3970705B2 (ja) | 2002-07-05 | 2007-09-05 | 富士通株式会社 | アドレス変換装置、アドレス変換方法および2階層アドレス変換装置 |
US8892821B2 (en) | 2003-12-10 | 2014-11-18 | International Business Machines Corporation | Method and system for thread-based memory speculation in a memory subsystem of a data processing system |
US7606998B2 (en) | 2004-09-10 | 2009-10-20 | Cavium Networks, Inc. | Store instruction ordering for multi-core processor |
CN100414518C (zh) | 2004-11-24 | 2008-08-27 | 中国科学院计算技术研究所 | 改进的虚拟地址变换方法及其装置 |
US20070271450A1 (en) | 2006-05-17 | 2007-11-22 | Doshi Kshitij A | Method and system for enhanced thread synchronization and coordination |
US8190859B2 (en) * | 2006-11-13 | 2012-05-29 | Intel Corporation | Critical section detection and prediction mechanism for hardware lock elision |
US8321637B2 (en) | 2007-05-14 | 2012-11-27 | International Business Machines Corporation | Computing system with optimized support for transactional memory |
US7849290B2 (en) | 2007-07-09 | 2010-12-07 | Oracle America, Inc. | Store queue architecture for a processor that supports speculative execution |
US7975130B2 (en) | 2008-02-20 | 2011-07-05 | International Business Machines Corporation | Method and system for early instruction text based operand store compare reject avoidance |
US8032709B2 (en) | 2008-02-22 | 2011-10-04 | International Business Machines Corporation | System, method and computer program product for handling shared cache lines in a multi-processor environment |
US20090254712A1 (en) * | 2008-04-02 | 2009-10-08 | Naveen Cherukuri | Adaptive cache organization for chip multiprocessors |
US20100058034A1 (en) | 2008-08-29 | 2010-03-04 | International Business Machines Corporation | Creating register dependencies to model hazardous memory dependencies |
US20100205609A1 (en) | 2009-02-11 | 2010-08-12 | Sun Microsystems, Inc. | Using time stamps to facilitate load reordering |
US8850166B2 (en) | 2010-02-18 | 2014-09-30 | International Business Machines Corporation | Load pair disjoint facility and instruction therefore |
US8601240B2 (en) | 2010-05-04 | 2013-12-03 | Oracle International Corporation | Selectively defering load instructions after encountering a store instruction with an unknown destination address during speculative execution |
US8516200B2 (en) | 2010-09-07 | 2013-08-20 | International Business Machines Corporation | Avoiding cross-interrogates in a streaming data optimized L1 cache |
US8549504B2 (en) | 2010-09-25 | 2013-10-01 | Intel Corporation | Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region |
US8683129B2 (en) | 2010-10-21 | 2014-03-25 | Oracle International Corporation | Using speculative cache requests to reduce cache miss delays |
JP2013246496A (ja) | 2012-05-23 | 2013-12-09 | Renesas Electronics Corp | 半導体装置 |
US10656945B2 (en) | 2012-06-15 | 2020-05-19 | International Business Machines Corporation | Next instruction access intent instruction for indicating usage of a storage operand by one or more instructions subsequent to a next sequential instruction |
GB2509830B (en) | 2013-02-11 | 2014-12-24 | Imagination Tech Ltd | Speculative load issue |
US9606806B2 (en) | 2013-06-25 | 2017-03-28 | Advanced Micro Devices, Inc. | Dependence-based replay suppression |
US10802987B2 (en) | 2013-10-15 | 2020-10-13 | Mill Computing, Inc. | Computer processor employing cache memory storing backless cache lines |
CN103714288B (zh) | 2013-12-26 | 2016-05-25 | 华中科技大学 | 一种数据流跟踪方法 |
US9411644B2 (en) | 2014-03-07 | 2016-08-09 | Cavium, Inc. | Method and system for work scheduling in a multi-chip system |
US9817693B2 (en) | 2014-03-14 | 2017-11-14 | International Business Machines Corporation | Coherence protocol augmentation to indicate transaction status |
US9501284B2 (en) | 2014-09-30 | 2016-11-22 | Apple Inc. | Mechanism for allowing speculative execution of loads beyond a wait for event instruction |
US9569265B2 (en) * | 2014-10-07 | 2017-02-14 | Check Point Software Technologies Ltd. | Optimization of data locks for improved write lock performance and CPU cache usage in multi core architectures |
US20160328237A1 (en) | 2015-05-07 | 2016-11-10 | Via Alliance Semiconductor Co., Ltd. | System and method to reduce load-store collision penalty in speculative out of order engine |
US10185564B2 (en) | 2016-04-28 | 2019-01-22 | Oracle International Corporation | Method for managing software threads dependent on condition variables |
-
2017
- 2017-01-12 US US15/404,247 patent/US10621090B2/en active Active
-
2018
- 2018-01-03 CN CN201880006436.8A patent/CN110168510B/zh active Active
- 2018-01-03 WO PCT/EP2018/050112 patent/WO2018130440A1/en unknown
- 2018-01-03 AU AU2018208419A patent/AU2018208419B2/en active Active
- 2018-01-03 RU RU2019102961A patent/RU2730440C1/ru active
- 2018-01-03 KR KR1020197016488A patent/KR102313021B1/ko active IP Right Grant
- 2018-01-03 CA CA3037433A patent/CA3037433A1/en active Pending
- 2018-01-03 MX MX2019012410A patent/MX2019012410A/es unknown
- 2018-01-03 JP JP2019532021A patent/JP7064268B2/ja active Active
- 2018-01-03 EP EP18700177.1A patent/EP3568769B1/en active Active
- 2018-01-09 TW TW107100734A patent/TWI659305B/zh active
-
2019
- 2019-03-22 IL IL265556A patent/IL265556B/en active IP Right Grant
- 2019-07-24 ZA ZA2019/04863A patent/ZA201904863B/en unknown
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5175829A (en) * | 1988-10-25 | 1992-12-29 | Hewlett-Packard Company | Method and apparatus for bus lock during atomic computer operations |
CN101189590A (zh) * | 2005-03-29 | 2008-05-28 | 国际商业机器公司 | 使用流寄存器过滤监听请求的方法和装置 |
CN101504628A (zh) * | 2007-11-28 | 2009-08-12 | 国际商业机器公司 | 用于干预共享高速缓存线的方法和系统 |
US20110093422A1 (en) * | 2009-10-20 | 2011-04-21 | Oracle International Corporation | Time-based conflict resolution |
CN104246726A (zh) * | 2012-04-18 | 2014-12-24 | 高通股份有限公司 | 用于维持高速缓存一致性的只写无数据状态 |
CN104937539A (zh) * | 2012-11-28 | 2015-09-23 | 英特尔公司 | 用于提供推入缓冲器复制和存储功能的指令和逻辑 |
CN105164651A (zh) * | 2013-03-15 | 2015-12-16 | 英特尔公司 | 在管理的运行时间环境域中的高速缓存管理 |
US20140310480A1 (en) * | 2013-04-12 | 2014-10-16 | Arm Limited | Data processing apparatus and method for performing load-exclusive and store-exclusive operations |
CN105579978A (zh) * | 2013-10-31 | 2016-05-11 | 英特尔公司 | 用于动态控制高速缓存存储器的寻址模式的方法、设备和系统 |
US20150378900A1 (en) * | 2014-06-27 | 2015-12-31 | International Business Machines Corporation | Co-processor memory accesses in a transactional memory |
Also Published As
Publication number | Publication date |
---|---|
KR102313021B1 (ko) | 2021-10-14 |
ZA201904863B (en) | 2022-04-28 |
JP7064268B2 (ja) | 2022-05-10 |
MX2019012410A (es) | 2022-04-18 |
CN110168510B (zh) | 2023-05-26 |
WO2018130440A1 (en) | 2018-07-19 |
TW201830251A (zh) | 2018-08-16 |
EP3568769B1 (en) | 2023-02-22 |
US10621090B2 (en) | 2020-04-14 |
AU2018208419B2 (en) | 2020-10-01 |
KR20190088996A (ko) | 2019-07-29 |
JP2020514856A (ja) | 2020-05-21 |
TWI659305B (zh) | 2019-05-11 |
IL265556A (en) | 2019-05-30 |
CA3037433A1 (en) | 2018-07-19 |
IL265556B (en) | 2021-02-28 |
AU2018208419A1 (en) | 2019-06-13 |
RU2730440C1 (ru) | 2020-08-21 |
EP3568769A1 (en) | 2019-11-20 |
US20180196751A1 (en) | 2018-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110168510A (zh) | 用于延长私有高速缓存中的高速缓存行的独占持有的设施 | |
US10572385B2 (en) | Granting exclusive cache access using locality cache coherency state | |
US11048635B2 (en) | Controlling a rate of prefetching based on bus bandwidth | |
US11366759B2 (en) | Temporarily suppressing processing of a restrained storage operand request | |
CN111279323B (zh) | 通过多个处理器对共享高速缓存行的并发修改 | |
US10572387B2 (en) | Hardware control of CPU hold of a cache line in private cache where cache invalidate bit is reset upon expiration of timer |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40006834 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |