CN100487674C - 利用镜像锁定高速缓存传播数据的方法和处理器节点 - Google Patents
利用镜像锁定高速缓存传播数据的方法和处理器节点 Download PDFInfo
- Publication number
- CN100487674C CN100487674C CNB2006101465590A CN200610146559A CN100487674C CN 100487674 C CN100487674 C CN 100487674C CN B2006101465590 A CNB2006101465590 A CN B2006101465590A CN 200610146559 A CN200610146559 A CN 200610146559A CN 100487674 C CN100487674 C CN 100487674C
- Authority
- CN
- China
- Prior art keywords
- processor
- lock
- mirror image
- caches
- 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.)
- Expired - Fee Related
Links
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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1666—Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2097—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
-
- 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
- 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/38—Concurrent instruction execution, e.g. pipeline, look ahead
-
- 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
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
-
- 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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
Abstract
公开了一种用于使用镜像锁定高速缓存来传播数据的方法、处理节点和计算机可读介质。本方法包括在多处理系统中将与第一处理节点关联的第一镜像锁定高速缓存连接到总线,该总线可通信地连接到与第二处理节点关联的至少第二镜像锁定高速缓存。本方法进一步包括由第一镜像锁定高速缓存从处理节点接收数据。接着,自动地对数据进行镜像,使得第一和第二镜像锁定高速缓存是彼此的镜像副本。
Description
技术领域
本发明一般地涉及信息处理系统的领域,并且更特别地涉及信息处理系统中的高速缓冲存储器(cache memory)。
背景技术
当前的许多计算环境利用了多个处理器。例如,对称多处理(“SMP”)环境是当前普遍使用的一种计算环境。SMP环境包括连接到共享主存储器的两个或多个处理器。就处理器全都利用了公共的指令集和通信协议、具有类似的硬件体系结构并且一般都配备有类似的存储器层级结构而言,所有的处理器一般来说是相同的。
这些处理器通常包含少量的专用存储器,称为高速缓存(cache)。高速缓存用于提高操作的速度。在具有高速缓存的处理器中,随着信息被从主存储器调用和使用,还将该信息连同其地址一起存储在一小部分特别快的存储器中,通常是在静态随机存取存储器(SRAM)中。当发出每一条新的读和写命令时,系统查找快速SRAM(高速缓存)以确定信息是否存在。对期望地址和高速缓冲存储器中的地址进行比较。如果高速缓冲存储器中的地址与查找到的地址匹配,则存在一个命中(hit)(即,在高速缓存中可获得该信息)。接着在高速缓存中访问该信息,从而不需要访问主存储器。因此,可以以快得多的速度处理指令。如果在高速缓存中不能获得该信息,则从主存储器复制新的数据并将其存储在高速缓存中以供未来使用。
有时对高速缓存的关键部分进行锁定以便保护数据。对关键部分的锁定是操作系统、中间件和终端用户应用中普遍的和性能关键的操作。锁通常是赋予诸如处理器、进程、程序、程序线程之类的一个实体对数据结构或对代码序列的访问权限的软件约定。一旦锁定实体拥有或具有锁,其它的实体就不能访问该锁。用于锁定的标准机制涉及使用共享的变量,对这些共享变量的访问是由支持体系结构的原子指令(atomic instruction)所保护的。需要可以从SMP中的所有处理器对共享的变量进行有效的访问。如上所述,每个处理器通常具有它自己的高速缓存。多个处理器可能潜在地试图同时对同一个锁进行访问,结果导致锁的潜在的“热点”。
这些锁称为全局锁,原因是每个处理器具有获得这些锁的均等机会,这些锁与通常仅被单一处理器访问的局部锁相对。这样的热点导致包含锁定字(lock word)的高速缓存线以很低的效率频繁地在处理器高速缓存之间迁移。这种迁移降低了锁定操作的效率。一旦一个进程(在处理器上运行)获得锁,就必须使所有权对于SMP上的其它处理器来说是可见的,这通常是通过同步指令来完成的。广播或同步指令通常是十分昂贵的并且不能随着SMP的规模有效地调整规模。
因此,需要克服上述现有技术中的问题。
发明内容
简单地说,根据本发明,公开了一种用于使用镜像锁定高速缓存(mirrored lock cache)来传播数据的方法、处理节点和计算机可读介质。该方法包括在多处理系统中将与第一处理节点关联的第一镜像锁定高速缓存连接到总线,该总线可通信地连接到与第二处理节点关联的至少第二镜像锁定高速缓存。该方法进一步包括由第一镜像锁定高速缓存从处理节点接收数据。接着,自动地对数据进行镜像,使得第一和第二镜像锁定高速缓存是彼此的镜像副本。
在本发明的另一个实施例中,公开了一种处理节点。该处理节点包括至少一个镜像锁定高速缓存和一个通信总线。该通信总线用于在多处理系统的至少一个节点中将至少一个镜像锁定高速缓存可通信地连接到至少一个其它的镜像锁定高速缓存。每个镜像锁定高速缓存自动地对驻留的数据进行镜像,使得每个镜像锁定高速缓存是彼此的镜像副本。
附图说明
附图用于进一步说明根据本发明的各种实施例并用于解释根据本发明的各种原理和优点,在附图中,贯穿不同视图,相同的参考标号表示相同的或功能上类似的元件,并且附图连同以下详细描述一起包括在本说明书中并形成本说明书的一部分。
图1是根据本发明的实施例的高度并行分布的多处理器计算环境的框图;
图2是根据本发明的图1的多处理器计算环境中的每个处理节点的示例性组件层级结构的框图;
图3是示出根据本发明的如图1中所示的处理器的更为简化的版本的框图;
图4是示出根据本发明的使用小型镜像锁定高速缓存来复制数据的示例性处理的操作流程图;
图5是示出根据本发明的防止数据既被映射到小型镜像锁定高速缓存又被映射到传统高速缓存的示例性处理的操作流程图;
图6是示出根据本发明从SMLC(小型镜像锁定高速缓存)的角度通过利用时戳来避免竞争情况的处理的操作流程图;
图7是示出根据本发明从发出请求的处理器的角度通过利用时戳来避免竞争情况的另一个处理的操作流程图。
具体实施方式
正如本领域的技术人员可以知道的,本发明可以以硬件或软件或者以硬件和软件的组合来实现。然而,在一个实施例中,本发明以软件来实现。根据结合优选实施例而公开的本发明的原理,所述系统和方法可在单一的计算机系统中实现,该单一的计算机系统具有用于执行所描述或所要求保护的各个功能或步骤的分离的元件或装置,或具有对所公开或所要求保护的任意功能或步骤的性能进行组合的一个或多个元件或装置,或可配置在通过本领域技术人员可以知道的任意合适的装置进行互连的分布式计算机系统中。
根据结合优选实施例而公开的本发明的原理,本发明和本发明的原理不限于任何特定类型的计算机系统,而是可以结合任意通用计算机而使用,正如本领域技术人员可以知道的,这些计算机被配置成执行所描述的功能和所描述的方法步骤。如上所述,正如本领域技术人员可以知道的,这种计算机的操作可根据包含在介质上的用于操作或控制计算机的计算机程序来执行。正如本领域技术人员可以知道的,可用于容纳或包含计算机程序产品的计算机介质可以是诸如嵌入式存储器之类的计算机的固定装置或可以位于诸如磁盘之类的可移动介质上。
本发明不限于任何特定的计算机程序、逻辑、语言或指令,而是可以利用本领域技术人员可以知道的任意合适的程序、逻辑、语言或指令来实现。在不限制所公开的本发明的原理的情况下,任意这种计算系统可特别地包括至少一种计算机可读介质,该介质使得计算机可以从计算机可读介质读取数据、指令、消息、消息分组以及其它计算机可读信息。计算机可读介质可包括非易失性存储器,诸如ROM(只读存储器)、闪存、软盘、磁盘驱动存储器、CD-ROM(压缩光盘-只读存储器)以及其它永久性存储器。另外,计算机可读介质可包括例如易失性存储器,诸如RAM(随机存取存储器)、缓冲器、高速缓冲存储器和网络电路。
此外,计算机可读介质可包括处于瞬态介质中的计算机可读信息,该瞬态介质诸如网络链路和/或网络接口,包括使得计算机可以读取这种计算机可读信息的有线网络或无线网络。根据实施例,本发明通过提供用于存储器复制操作的更有效的机制而克服了现有技术的问题。本发明使得处理器可以在存储器复制操作期间持续地执行后续指令,从而避免了不必要的处理器停机时间。
示例性的多计算机系统
如图1中所示,根据本发明的实施例,示出了示例性的分布式计算环境100。在一个实施例中,分布式计算环境是SMP计算环境。分布式计算环境100包括通过多个网络适配器106、108互相连接的多个节点102、104。每个节点102、104是独立的计算机,该计算机具有其自己的操作系统映像110、112,以及位于系统存储总线126、128上的通道控制器114、116,存储器118、120和处理器122、124,并且系统输入/输出总线130、132对I/O(输入/输出)适配器134、136和网络适配器106、108进行连接。尽管在每一个处理节点102、104中仅示出了一个处理器122、124,但每一个处理节点可具有多个处理器。各网络适配器通过网络交换机138链接在一起。所有的或一些处理节点102、104可包括不同类型的计算机和/或基于不同技术的操作系统110、112。所有的这些变型被认为是所要求保护的发明的一部分。
多计算机系统中处理器的示例性组件层级结构
图2是示出根据本发明的图1的分布式计算环境100的多个处理节点102、104的扩展视图200的框图。在一个实施例中,一个或多个应用程序APP1 202、APP2 206、APP3 208在每个处理节点102、204和104的相应处理器122、230和124上运行。在另一个实施例中,应用程序APP1 202、APP2 206、APP3 208是分布式的并且在相应的处理节点102、204、104内或在处理节点102、204和104之间的多个处理器上运行。应用程序接口(“API”)可用于对应用202、206、208与应用202、206、208当前所驻留的网络交换机上的其它处理节点进行接口连接。
每个处理节点102、204和104包括例如在每个相应的处理器122、230、124上运行的操作系统110、210、112。操作系统110、210、104提供了应用APP1 202、APP2 206、APP3 208在其上运行的软件平台等。每个处理节点102、204、104还包括固件212、214、216,这些固件提供关于相应的处理器122、230、124如何与其它的硬件组件进行通信的指令。每个处理节点102、204、104的硬件218、220、222包括至少一个小型镜像锁定高速缓存224、226、228和处理器122、230、124。每个小型镜像锁定高速缓存224、226、228是彼此的镜像副本。下面将对小型镜像锁定高速缓存(“SMLC”)224、226、228进行更为详细的讨论。诸如一级高速缓存232、234、236之类的传统高速缓存同样包括在每个处理节点102、204和104的固件218、220和222内。
示例性的小型镜像锁定高速缓存
图3是示出根据本发明的实施例的包括小型镜像锁定高速缓存224的图1中的处理器122的更为简化的视图的框图。图3示出了处理器核心302,其包括通用寄存器(“GPR”)304,一级高速缓存306,以及存储器管理单元308,其中存储器管理单元308包括转换后备缓冲器(“TLB,)。GPR 304例如存储由定点单元(fixed-point unit)和加载-存储单元(load-store unit)访问和产生的定点值和整数值。MMU/TLB 308包括用于处理由处理器122所请求的存储器访问的各种组件。例如,MMU 308的TLB组件包括页表(同样包括在MMU308中)的一部分以便将虚拟地址转换为实际地址。MMU/TLB 308还包括用于存储器保护和高速缓存控制的组件。处理器122还包括诸如存储器复制指令之类的操作码310。
二级高速缓存312和三级高速缓存314连接到处理器核心302。存储控制器316同样连接到处理核心122。
处理器122还包括至少一个小型镜像锁定高速缓存224。小型镜像锁定高速缓存与L1 306、L2 312和L3 314分离并且是彼此的镜像副本。换句话说,在任意给定的时间点上,在同一个处理器上或在多处理器计算环境中的不同处理器之间的小型镜像锁定高速缓存将具有相同的数据。例如,处理器对它的SMLC的写入将自动地传播到SMP计算环境中的其它SMLC。小型镜像锁定高速缓存可以是由本地处理节点(进程ID(标识符))使用的主局部锁定高速缓存,而在另一个实施例中是全局锁定高速缓存,即任意处理器获得小型镜像锁定高速缓存内的锁机会是均等的。全局锁高速缓存是高度竞争性的高速缓存。
在一个实施例中,SMLC的宽度小至4/8个字节以便保持整个锁定结构。如果数据大于该锁所能容纳的大小,该数据将被置于存储器118中。与传统的数据高速缓存相比,SMLC的宽度更小并且包括更少的条目。处理器122的硬件218通过处理器122内的小型镜像锁定缓冲器和多处理器计算环境中的其它处理器204、104之间的连接(未示出)来提供镜像能力。
SMLC 224包括高速缓存条目1 324到高速缓存条目N 326。在一个实施例中,高速缓存条目的数目足以容纳工作集。在一个实施例中,工作集是在给定的时间集上运行系统所需的锁的数目。工作集大小的增加或减少依赖于当前的系统环境,例如哪些进程当前正在运行。在一个实施例中,如果工作集的大小大于SMLC 224所能接受的大小,则使用传统的高速缓存。并且因此高速缓存条目的数目是处理节点中的处理器数目的函数。每个高速缓存条目都包括有标记或可用性比特(availability bit)以便标识该锁是否可用。例如,高速缓存条目1/锁1 324的可用性比特328被设置成1,标志着该锁当前是不可用的。高速缓存条目2/锁2 332的可用性比特330被设置成0,标志着该锁是可用的。当处理器试图获得特定的锁时,该处理器查看可用性比特以确定该锁是否可用。
SMLC 224绕过了传统的锁定层级结构。在MMU 308中的页表(未示出)内包括映射比特(mapping bit)以表明特定的条目将要保存在SMLC 224中。应用202、OS(操作系统)110和/或中间件向系统提交指令以表明具体的锁需要被置于SMLC 224中(如果能够获得空间)。该处理对于终端用户来说是透明的。对既要在SMLC 224中又要在诸如高速缓存L1 306、L2 312、L3 314之类的传统高速缓存中使用的特定锁定字的混淆是不允许的。允许映射到SMLC 224或传统高速缓存,但不允许同时映射到这两者。在一个实施例中,处理节点102将SMLC 224视为特殊的边带高速缓存。换句话说,高速缓存L2 312或L3 314不对SMLC2 23进行备份。SMLC 224中的值仅反映在存储器118中,而不反映在高速缓存L2 312或L3 314中。
在一个实施例中,SMLC管理机制(未示出)在OS 110或硬件218中实现。例如,当请求在SMLC 224中进行新的分配并且没有足够的空间时,实现基于最近最少使用(LRU)的机制以便将锁从SMLC224移到传统的高速缓存。在一个替代性的实施例中,OS 110包括关于如何将SMLC 224锁定高速缓存分配给各应用202、OS 110本身和中间件的各种策略。这些策略可根据处理节点102中存在的OS110、应用202和中间件的类型来订制。
在一个实施例中,通过自动地更新锁定字,避免了针对SMLC 224的竞争情况。例如,在SMP环境中,SMP环境中的所有处理器都需要能够对共享变量进行访问。多个处理器可能在相同的时间访问相同的锁从而导致锁的“热点”。例如,每个处理器可能尝试将锁定比特设置成零并且在确信它们已经获得该锁的情况下对该锁进行写入。通过自动地更新锁定字,当处理器获得锁时,则告知其它的处理器该锁是不可用的。当处理器释放锁时,则自动地更新锁定字,从而通知其它的处理器该锁是可用的。在一个实施例中,锁定字通过使用“测试和设置”(test and set)以及“重新设置”(reset)操作而自动地更新。
在另一个实施例中,通过利用时戳来避免竞争情况。例如,当处理器请求访问锁时,时戳也随同请求被发送或包括在该请求中。与最早的时戳关联的处理器ID被存储在该锁中。当处理器试图访问该锁时,它对处理器ID和它自己的ID进行检查,并且如果它们匹配的话,则处理器能够获得该锁。如果ID不匹配,则处理器无法获得该锁。
针对“全部清除”(clear all)和“全部设置”(set all)的锁操作,建立连接以通过单一比特来发送这些信号以便节省高速缓存互连带宽。换句话说,不是向SMLC中所有的高速缓存发送整个锁定字,而是仅将一个比特(设置/清除)随同锁定字的地址一起发送。在一个实施例中,SMLC 224被严格地排序,即对要存储到SMLC 224的内容进行排序,从而避免竞争情况。另外,对要存储到SMLC 224的内容进行排序还使SMLC逻辑保持简单和非常有效。应该注意到,SMLC 224不限于被严格地排序。
应用202、OS 110和中间件可使用SMLC 224中不限数目的锁。类似于传统的锁,保存在SMLC 224中的最活跃的锁定字用于快速地获得和释放。由于上述不允许在SMLC 224和传统高速缓存之间产生混淆的限制,所以余下的锁定字被保存在诸如L1 306、L2 312和L3 314之类的传统高速缓存中或保存在存储器118中。
小型镜像锁定高速缓存还确保进程之间的同步能够有效地进行。例如,在SMP计算环境中,并行的应用可具有在同一个处理节点的各处理器上运行的若干任务(进程)。典型地,进程(或并行作业的任务)被映射到处理节点的处理器上。不是所有的进程都会在相同的时间完成并且在继续进行前必须被同步。这些任务通常要执行栅障同步(barrier synchronization)操作以便线程可以被同步。进程通过共享的存储器或通过采用通常很慢的原子操作来交换消息。当在系统中使用SMLC 224时,无论何时将值写入高速缓存条目中,数据都会被自动地镜像到其它的高速缓存。因此,处理器并非必须检查SMLC高速缓存224中的每个条目以确定进程是否已经完成。
小型镜像锁定高速缓存还允许在处理器之间有效地发送控制消息。例如,控制消息是用于对所有处理器上的TOD(Time of Day)时钟进行同步的消息,如上面所讨论的栅障同步消息等。在一个实施例中,将短消息用作控制消息,例如用来确定较长的消息是否被正确地处理。例如,在一个实施例中,短消息被用于从逻辑上控制其它内容,例如较长的消息的状态诸如是“消息已发送”、“消息中存在错误”等。当与控制消息进行交互时,SMLC 224将包括消息而不是锁。例如,从条目1 324到条目N 326将包括控制消息。SMLC224还可充当各种同步寄存器。例如,多处理器系统中的每个处理器在SMLC 224中具有分配的物理位置。每个处理器进行读取以便确定每个其它的处理器是否进行到序列中某个步骤,例如步骤5。在这个例子中,在处理器能够持续到达步骤6之前,每个处理器必须进行到步骤5。当每个处理器完成步骤5时,SMLC 224将该信息镜像到每个其它的处理器,由此确保了处理器之间的有效同步。因为SMLC 224离处理器核心302更近,所以使用SMLC 224来通知每个处理器何时其它处理器已经完成步骤序列中的一项步骤比通过共享存储器来交换消息更快。
本发明的一个优势在于每个处理器并非必须检查存储器118以确定是否存在表明进程已完成的通知,相反,可使用SMLC 224来传送表明运行于其它处理器上的进程已完成的短消息。例如,处理器A通过SMLC 224向处理器B发送短消息。处理器A向与它关联的锁中写入全比特(full bit)并且当处理器B读取了锁中的数据时,处理器B清除该比特。当处理器A确定该比特被设置成零时,它继续对该锁进行写入。因为SMLC 224离处理器核心302更近,所以使用SMLC 224来传送短消息而不是使每个处理器检查存储器会更快。
在另一个实施例中,适配器还利用SMLC 224来向处理器发送控制消息,从而避免了通常的高速缓存丢失延迟。例如,为了使在处理器上执行的进程意识到DMA(直接存储器存取)操作已经发生,进程通常必须在读取因DMA操作而改变的存储器位置前使它们的高速缓存条目无效(对于不与高速缓存一致的DMA操作)。这就导致对通过DMA操作(其是用于通过并行和分布式的系统的大多数消息的典型方法)到来的数据进行处理时的效率很低。来自高性能网络适配器的DMA操作能够识别直接反映在SMLC 224中的某些更新。对于性能关键的延迟操作,该硬件有助于使由该进程对新到来的数据进行检测的任务更有效率。
利用小型镜像锁定高速缓存来对数据进行镜像的示例性处理
图4是示出获得小型镜像锁定高速缓存和向其它小型镜像锁定高速缓存传播其数据的处理的操作流程图。图4的操作流程图开始于步骤402并直接进行到步骤404。在步骤404,处理器122确定它想获得的锁是否是SMLC锁。如果这种确定的结果是否定的,则在步骤406,使用传统的锁处理步骤对该锁进行处理。接着控制流程在步骤408退出。如果这种确定的结果是肯定的,则在步骤410,处理器122确定SMLC锁是否可用。换句话说,处理器122确定另一个处理器当前是否获得了该锁。当锁可用时,则该锁是自动一致的。例如,为了在SMP计算环境中获得有效的运行结果,维护一致的存储器层级结构是重要的。SMLC 224向所有的处理器提供了存储器内容的单一视图。处理器122例如通过检查可用性比特328、330来确定该锁是可用还是不可用。如果这种确定的结果是否定的,则处理器122继续检查该锁是否可用。如果这种确定的结果是肯定的,则在步骤412,处理器122对SMLC 224进行写入(这将可用性标记变为不可用)。例如,处理器122向所获得的锁写入数据。
在步骤416,处理器122在所获得的锁中读取受保护的数据,在步骤418,则利用受保护的数据进行工作。一旦处理器122完成对数据的读取和写入,则在步骤420,该处理器122将可用性标记328、330设置成可用。例如,处理器执行“重新设置”操作,该操作将可用性标记328、330变为可用。接着控制流程在步骤422退出。
防止传统高速缓存和SMLC之间的混淆的示例性处理
图5是示出防止诸如L1 306、L2 312和L3 314之类的传统高速缓存与SMLC 224之间的混淆的示例性处理的操作流程图。在一个实施例中,图5的示例性处理由OS 110执行。图5的操作流程图开始于步骤502并直接进行到步骤405。在步骤504,OS 110确定锁定字是否被映射到小型镜像锁定高速缓存224。如果这种确定的结果是否定的,则在步骤506,OS 110确定锁定字是否被映射到传统的高速缓存。如果这种确定结果是肯定的,则在步骤508,OS 110防止锁定字也被映射到SMLC 224。接着控制流程在步骤510退出。如果这种确定的结果是否定的,则在步骤512,OS 110允许该锁定字被映射到SMLC 224或传统的高速缓存,但不允许该锁定字同时被映射到这两者。接着控制流程在步骤514退出。如果步骤504的结果是肯定的,则在步骤516,OS 110防止该锁定字也被映射到传统的高速缓存。接着控制流程在步骤518退出。
利用时戳来避免竞争情况的示例性处理
图6是示出从SMLC 224的角度通过利用时戳来避免竞争情况的处理的操作流程图。图6的操作流程图开始于步骤602并直接进行到步骤604。在步骤604,SMLC 224接收关于获得锁的请求。在步骤606,SMLC 224确定与该请求关联的时戳是否是与对该特定的锁的请求关联的最早的时戳。如果这种确定的结果是否定的,则在步骤608,不准许发出请求的处理器访问该锁。接着控制流程在步骤610退出。如果这种确定的结果是肯定的,则在步骤612,与发出请求的处理器关联的处理器ID被写入所请求的锁。这就使得所请求的处理器并且仅该所请求的处理器获得该锁。接着控制流程在步骤614退出。
利用时戳来避免竞争情况的另一个示例性处理
图7是示出从发出请求的处理器的角度通过利用时戳来避免竞争情况的另一个处理的操作流程图。图7的操作流程图开始于步骤702并直接进行到步骤704。在步骤704,处理器122请求获得SMLC224中的锁。在步骤706,处理器122基于与最早的时戳关联的处理器来读取已写入到所请求的锁中的处理器ID。在步骤708,处理器122确定写入到锁中的处理器ID是否与它的处理器ID相匹配。如果这种确定的结果是否定的,则在步骤710,不准许处理器122访问该锁。接着控制流程在步骤712退出。如果这种确定的结果是肯定的,则在步骤714,处理器122获得该锁。接着控制流程在步骤716退出。
非限制性例子
因为本发明的实施例提供了对数据有效锁定,所以这些实施例是有利的。本发明的另一个优势在于小型镜像锁定高速缓存是彼此的镜像副本。这就使得一个小型镜像锁定高速缓存的数据可以本地地驻留于另一个小型镜像锁定高速缓存处。需要访问另一个位置处的数据的处理并非必须从另一个位置查找该数据或获得该数据。
本发明可以以硬件、软件或硬件和软件的组合来实现。根据本发明的优选实施例的系统可在一个计算机系统中以集中的方式实现,或以分布式方式实现,在该分布式方式中,不同的元件分布在若干互联的计算机系统之间。任意类型的计算机系统或适于执行这里所描述的方法的其它设备都是适合的。硬件和软件的典型组合可以是带有计算机程序的通用计算机系统,当被加载和执行时,该计算机程序控制该计算机系统使其执行这里所描述的方法。
一般地,无论是作为操作系统的一部分还是作为具体的应用、组件、程序、模块、对象或指令序列而实现,所执行的用以实现本发明的实施例的例行程序在这里都可称为“程序”。计算机程序通常包括多个指令,这些指令被本地计算机转换为机器可读格式并从而转换为可执行的指令。另外,程序包括本地地驻留于程序中或在存储器或存储设备中可得到的变量和数据结构。此外,可基于这里所描述的各种程序在本发明的具体实施例中所实现的应用来标识这些程序。然而,应当意识到,所遵循的任意特定程序命名法仅仅是出于方便而使用,所以本发明不应限于仅在由这样的命名法所标识和/或暗示的任意具体应用中使用。
尽管已经公开了本发明的具体实施例,但本领域的技术人员将理解,在不偏离本发明的精神和范围的情况下,可对这些具体的实施例进行改变。因此,本发明的范围不限于这些具体的实施例,并且所附权利要求书力图涵盖本发明范围内的任意和所有这些应用、修改和实施例。
Claims (14)
1.一种多处理系统中的处理器节点,包括:
至少一个镜像锁定高速缓存;
通信总线,用于在多处理系统的至少一个节点中将至少一个镜像锁定高速缓存可通信地连接到该多处理系统的每个其他节点中的至少一个其它的镜像锁定高速缓存,其中每个镜像锁定高速缓存自动地对驻留的数据进行镜像,使得每个镜像锁定高速缓存是彼此的镜像副本。
2.根据权利要求1所述的处理器节点,其中所述镜像锁定高速缓存包括一组锁,所述锁包括:
可用性标记,用于表明与所述可用性标记关联的锁的可用性。
3.根据权利要求1所述的处理器节点,其中所述数据是同步控制消息。
4.根据权利要求3所述的处理器节点,其中所述控制消息是栅障同步消息和时刻消息中的一个。
5.根据权利要求1所述的处理器节点,进一步包括:
用于防止驻留于所述镜像锁定高速缓存中的数据被映射到非镜像锁定高速缓存内的装置。
6.根据权利要求2所述的处理器节点,其中所述一组锁中的每个锁包括与授权访问所述锁的处理器关联的处理器ID。
7.根据权利要求6所述的处理器节点,其中基于与在其它处理器之前请求访问所述锁的处理器ID关联的处理器而将所述处理器ID写入到所述锁中,来自处理器的请求的优先权由包括在每个所述请求中的时戳确定。
8.一种在镜像锁定高速缓存上向其它镜像锁定高速缓存传播数据的方法,所述方法包括:
在多处理系统中将与第一处理节点关联的第一镜像锁定高速缓存连接到总线,所述总线可通信地连接到与第二处理节点关联的至少第二镜像锁定高速缓存;
由所述第一镜像锁定高速缓存接收来自处理节点的数据;以及
自动地对所述数据进行镜像,使得所述第一和第二镜像锁定高速缓存是彼此的镜像副本。
9.根据权利要求8所述的方法,进一步包括:
设置可用性标记,以便表明驻留于与所述可用性标记关联的所述第一镜像锁定高速缓存中的锁的可用性。
10.根据权利要求8所述的方法,进一步包括:
防止驻留于所述第一镜像锁定高速缓存中的所述数据被映射到非镜像锁定高速缓存中。
11.根据权利要求8所述的方法,进一步包括:
接收来自处理器的用以获得驻留于所述第一镜像锁定高速缓存中的锁的请求,所述请求包括时戳和与所述处理器关联的处理器ID;
确定所述时戳是否先于与来自其它处理器的其它请求关联的其它时戳;以及
响应于先于与来自其它处理器的其它请求关联的其它时戳的所述时戳,将所述处理器ID写入到所述锁中。
12.根据权利要求11所述的方法,进一步包括:
仅在与所述处理器关联的所述处理器ID与写入到所述锁中的所述处理器ID匹配时才准许所述处理器访问所述锁。
13.根据权利要求8所述的方法,其中所述数据是同步控制消息。
14.根据权利要求13所述的方法,其中所述控制消息是栅障同步消息和时刻消息中的一个。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/315,465 US7523260B2 (en) | 2005-12-22 | 2005-12-22 | Propagating data using mirrored lock caches |
US11/315,465 | 2005-12-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1987828A CN1987828A (zh) | 2007-06-27 |
CN100487674C true CN100487674C (zh) | 2009-05-13 |
Family
ID=38184630
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101465590A Expired - Fee Related CN100487674C (zh) | 2005-12-22 | 2006-11-15 | 利用镜像锁定高速缓存传播数据的方法和处理器节点 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7523260B2 (zh) |
KR (1) | KR100861691B1 (zh) |
CN (1) | CN100487674C (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7844862B1 (en) * | 2006-03-23 | 2010-11-30 | Azul Systems, Inc. | Detecting software race conditions |
US7761434B2 (en) * | 2007-11-19 | 2010-07-20 | Red Hat, Inc. | Multiversion concurrency control in in-memory tree-based data structures |
US8255909B2 (en) * | 2009-01-28 | 2012-08-28 | International Business Machines Corporation | Synchronizing access to resources in a hybrid computing environment |
US9170864B2 (en) | 2009-01-29 | 2015-10-27 | International Business Machines Corporation | Data processing in a hybrid computing environment |
US8447918B2 (en) * | 2009-04-08 | 2013-05-21 | Google Inc. | Garbage collection for failure prediction and repartitioning |
US9417905B2 (en) | 2010-02-03 | 2016-08-16 | International Business Machines Corporation | Terminating an accelerator application program in a hybrid computing environment |
US10133676B2 (en) * | 2010-07-28 | 2018-11-20 | Rambus Inc. | Cache memory that supports tagless addressing |
US9280396B2 (en) * | 2012-11-01 | 2016-03-08 | Netapp, Inc. | Lock state synchronization for non-disruptive persistent operation |
US9542414B1 (en) * | 2013-01-11 | 2017-01-10 | Netapp, Inc. | Lock state reconstruction for non-disruptive persistent operation |
US9037799B2 (en) * | 2013-02-11 | 2015-05-19 | Avago Technologies General Ip (Singapore) Pte Ltd | Rebuild of redundant secondary storage cache |
US10146788B1 (en) * | 2014-10-10 | 2018-12-04 | Google Llc | Combined mirroring and caching network file system |
US10671565B2 (en) | 2015-04-24 | 2020-06-02 | Quest Software Inc. | Partitioning target data to improve data replication performance |
US9658794B2 (en) * | 2015-05-08 | 2017-05-23 | Sonicwall Inc. | Two stage memory allocation using a cache |
US10339064B2 (en) * | 2017-03-29 | 2019-07-02 | International Business Machines Corporation | Hot cache line arbitration |
US10929199B2 (en) * | 2018-07-02 | 2021-02-23 | International Business Machines Corporation | Memory lock serialization |
CN111124993B (zh) * | 2018-10-31 | 2023-09-01 | 伊姆西Ip控股有限责任公司 | 减小i/o处理时缓存数据镜像时延的方法、设备和程序产品 |
CN112130904A (zh) * | 2020-09-22 | 2020-12-25 | 黑芝麻智能科技(上海)有限公司 | 处理系统、处理器间通信方法、以及共享资源管理方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0362366B1 (en) | 1988-04-01 | 1995-09-13 | Digital Equipment Corporation | Instruction cache flush-on-rei control |
US5142676A (en) * | 1988-12-28 | 1992-08-25 | Gte Laboratories Incorporated | Separate content addressable memories for storing locked segment addresses and locking processor identifications for controlling access to shared memory |
US5353425A (en) | 1992-04-29 | 1994-10-04 | Sun Microsystems, Inc. | Methods and apparatus for implementing a pseudo-LRU cache memory replacement scheme with a locking feature |
US5678020A (en) * | 1994-01-04 | 1997-10-14 | Intel Corporation | Memory subsystem wherein a single processor chip controls multiple cache memory chips |
US5832534A (en) * | 1994-01-04 | 1998-11-03 | Intel Corporation | Method and apparatus for maintaining cache coherency using a single controller for multiple cache memories |
JP2776759B2 (ja) * | 1995-04-14 | 1998-07-16 | 甲府日本電気株式会社 | ロックリクエスト制御装置 |
US6202125B1 (en) * | 1996-11-25 | 2001-03-13 | Intel Corporation | Processor-cache protocol using simple commands to implement a range of cache configurations |
US6047358A (en) | 1997-10-31 | 2000-04-04 | Philips Electronics North America Corporation | Computer system, cache memory and process for cache entry replacement with selective locking of elements in different ways and groups |
US6230230B1 (en) * | 1998-12-03 | 2001-05-08 | Sun Microsystems, Inc. | Elimination of traps and atomics in thread synchronization |
KR20010011204A (ko) * | 1999-07-26 | 2001-02-15 | 윤종용 | 캐쉬미러링을 통한 레이드 장애극복 방법 및 장치 |
US6516384B1 (en) | 1999-12-30 | 2003-02-04 | Intel Corporation | Method and apparatus to perform a round robin and locking cache replacement scheme |
US6615340B1 (en) * | 2000-03-22 | 2003-09-02 | Wilmot, Ii Richard Byron | Extended operand management indicator structure and method |
US6760272B2 (en) * | 2000-12-07 | 2004-07-06 | International Business Machines Corporation | Method and system for supporting multiple cache configurations |
US6839816B2 (en) * | 2002-02-26 | 2005-01-04 | International Business Machines Corporation | Shared cache line update mechanism |
-
2005
- 2005-12-22 US US11/315,465 patent/US7523260B2/en not_active Expired - Fee Related
-
2006
- 2006-11-15 CN CNB2006101465590A patent/CN100487674C/zh not_active Expired - Fee Related
- 2006-11-29 KR KR1020060118823A patent/KR100861691B1/ko not_active IP Right Cessation
Non-Patent Citations (5)
Title |
---|
An Overview of Reflective Memory System. Milan Jovanovic,Veljko Milutinovic.IEEE. 1999 |
An Overview of Reflective Memory System. Milan Jovanovic,Veljko Milutinovic.IEEE. 1999 * |
An Overview of Reflective Memory Systems. Milan Jovanovic,Veljko Milutinovic.IEEE. 1999 |
An Overview of Reflective Memory Systems. Milan Jovanovic,Veljko Milutinovic.IEEE. 1999 * |
Computer Organization & Design:the Hardware/Software Interface,2nd Edtion. John L. Hennessy,David A.Patterson,717-726,机械工业出版社. 1999 |
Also Published As
Publication number | Publication date |
---|---|
CN1987828A (zh) | 2007-06-27 |
US20070150665A1 (en) | 2007-06-28 |
KR20070066865A (ko) | 2007-06-27 |
US7523260B2 (en) | 2009-04-21 |
KR100861691B1 (ko) | 2008-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100487674C (zh) | 利用镜像锁定高速缓存传播数据的方法和处理器节点 | |
TWI397813B (zh) | 用於虛擬化交易式記憶體的總體溢位之裝置、方法與系統 | |
US10613792B2 (en) | Efficient enforcement of barriers with respect to memory move sequences | |
CN103294616B (zh) | 信息处理设备和控制方法 | |
US10152322B2 (en) | Memory move instruction sequence including a stream of copy-type and paste-type instructions | |
US20180321853A1 (en) | Speculatively performing memory move requests with respect to a barrier | |
US10140052B2 (en) | Memory access in a data processing system utilizing copy and paste instructions | |
US7069394B2 (en) | Dynamic data routing mechanism for a high speed memory cloner | |
US6996693B2 (en) | High speed memory cloning facility via a source/destination switching mechanism | |
US6892283B2 (en) | High speed memory cloner with extended cache coherency protocols and responses | |
US10346164B2 (en) | Memory move instruction sequence targeting an accelerator switchboard | |
US6647468B1 (en) | Method and system for optimizing translation buffer recovery after a miss operation within a multi-processor environment | |
US6898677B2 (en) | Dynamic software accessibility to a microprocessor system with a high speed memory cloner | |
US10126952B2 (en) | Memory move instruction sequence targeting a memory-mapped device | |
US10331373B2 (en) | Migration of memory move instruction sequences between hardware threads | |
US6986013B2 (en) | Imprecise cache line protection mechanism during a memory clone operation | |
US7502917B2 (en) | High speed memory cloning facility via a lockless multiprocessor mechanism | |
US7921250B2 (en) | Method to switch the lock-bits combination used to lock a page table entry upon receiving system reset exceptions | |
US9996298B2 (en) | Memory move instruction sequence enabling software control | |
US6986011B2 (en) | High speed memory cloner within a data processing system | |
US6915390B2 (en) | High speed memory cloning facility via a coherently done mechanism | |
US6928524B2 (en) | Data processing system with naked cache line write operations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090513 Termination date: 20151115 |
|
CF01 | Termination of patent right due to non-payment of annual fee |