CN102103523A - 锁分配控制的方法和装置 - Google Patents
锁分配控制的方法和装置 Download PDFInfo
- Publication number
- CN102103523A CN102103523A CN2009102610735A CN200910261073A CN102103523A CN 102103523 A CN102103523 A CN 102103523A CN 2009102610735 A CN2009102610735 A CN 2009102610735A CN 200910261073 A CN200910261073 A CN 200910261073A CN 102103523 A CN102103523 A CN 102103523A
- Authority
- CN
- China
- Prior art keywords
- lock
- processor
- processor core
- nuclear
- dormant state
- 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.)
- Pending
Links
Images
Classifications
-
- 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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/52—Indexing scheme relating to G06F9/52
- G06F2209/522—Manager
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (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
本发明提出了一种新的锁分配控制的方法和装置。按照本发明中的技术方案,当一个处理器核获得了一把锁的情况下,其它处理器核不需要不断轮询内存以查看所需要的锁是否被释放,相反,其它处理器核将处于休眠状态,本发明将按照预定的规则选择性的唤醒(wakeup)下一个处理器核,从而将无序的锁争抢过程变为有序的锁分配过程。通过有选择性的唤醒休眠状态的处理器核,本发明可以避免大量的总线带宽占用,避免缓存缺失,并且节省了芯片的功耗。
Description
技术领域
本发明总体上涉及一种计算机系统的处理方法和装置,特别的本发明涉及一种锁分配控制的方法和装置。
背景技术
多处理器核是指在单枚芯片包含有多个处理器核,单枚芯片能够直接插入单一的处理器插槽中,但操作系统会利用所有相关的资源,将它的每个处理器核作为分立的逻辑处理器。通过在两个处理器核之间划分任务,包含多处理器核的芯片可以在特定的时钟周期内执行更多任务。多核技术能够使服务器并行处理任务,多核系统更易于扩充,并且能够在更纤巧的外形中融入更强大的处理性能,这种外形所用的功耗更低、计算功耗产生的热量更少。
为了产生更强大的计算能力,如何使多核技术能够更有效的工作,程序员们面临着巨大的挑战。长期以来基于共享内存的锁技术是程序员们通常采用的对共享内存中的共享资源进行排他性访问的重要手段。在多核系统中,比如在双核系统中有两个核A、B都要使用同一把锁,那么当核A获取锁后,在A未解锁前核B将处于阻塞状态,这时两个CPU核只有一个得到利用,另外一个CPU核处于空闲状态,这样多个核受锁竞争的影响出现串行化执行现象,从而大大降低多核的性能。
图1示出了现有技术中的进行锁分配的计算机系统示意图。在图1中N1、N2、N3为三个计算机节点(note),每个节点包括C1、C2、C3、C4四个处理器核,并且每个节点中的一个或多个处理器核共享同一本地缓存(L2 Cache),处理器核通过共享的本地缓存与总线(BUS)连系,从而在L2 Cache上保证高速缓存的一致性(cachecoherence),也就是说,当一个内存变量存在于多个缓存中时,其中任何一个的变量信息被操作从而发生了变化,其它缓存中的信息也要一起改变。如果多个节点中的多个处理器核都想获得内存中的某一把锁,那么第一个发出请求的处理器核将会第一个得到这把锁,从而开始对内存中的某段数据资源的读写操作。然而在此期间,所有的其它处理器核由于并不知道锁会在什么时间被释放,因此会不断的轮询,以查看内存中的锁何时被释放。一旦内存中的锁被释放,将会进入下一轮锁竞争。这种不断轮询的状态也被称为“繁忙等待”(busywait)。“繁忙等待”并非有效的同步机制,其会浪费大量的计算资源,并且由于处理器核不断的通过总线访问内存,其也会浪费大量的总线资源,从而对整体的处理能力带来负面影响。
发明内容
本发明提出了一种新的锁分配控制的方法和装置。按照本发明中的技术方案,当一个处理器核获得了一把锁的情况下,其它处理器核不需要不断轮询以查看所需要的锁是否被释放,相反,其它处理器核将处于休眠状态,本发明将按照预定的规则选择性的唤醒(wakeup)下一个处理器核,从而将无序的锁争抢过程变为有序的锁分配过程。通过有选择性的唤醒休眠状态的处理器核,本发明可以避免大量的总线带宽占用,并且节省了芯片的功耗。进一步,本发明通过对预定规则进行优化还可以增大从高速缓存中获得数据资源的几率,从而降低缓存缺失(Cache miss)的发生。
具体而言,本发明提供了一种用于对多个处理器核进行锁分配的方法,其中所述处理器核位于计算机节点内,并且其中第一处理器核获得了一个锁,而其它需要获得该锁的处理器核处于休眠状态,所述方法包括:接收所述第一处理器核释放该锁的信号;根据对该锁进行分配的预定规则从其它需要获得该锁的处于休眠状态的处理器核中确定应该被唤醒的第二处理器核;以及唤醒所述第二处理器核使其获得该锁。
本发明还提供了一种用于对多个处理器核进行锁分配的锁分配控制器,其中所述处理器核位于计算机节点内,并且其中第一处理器核获得了一个锁,而其它需要获得该锁的处理器核处于休眠状态,所述锁分配控制器包括:锁状态变化接收装置,用于接收所述第一处理器核释放该锁的信号;目标核确定装置,用于根据对该锁进行分配的预定规则从其它需要获得该锁的处于休眠状态的处理器核中确定应该被唤醒的第二处理器核;以及目标核唤醒装置,用于唤醒所述第二处理器核使其获得该锁。
本发明还提供了一种计算机系统,包括多个处理器核、至少一个高速缓存、以及如上所述的锁分配控制器。
上述描述大致列举了本发明的优越之处,通过结合附图与本发明最佳实施例的详细说明,本发明的这些以及其它优点将更加明显。
附图说明
本说明中所参考的附图只用于示例本发明的典型实施例,不应该认为是对本发明范围的限制。
图1示出了现有技术中的进行锁分配的计算机系统示意图。
图2示出了在单计算机节点中应用锁分配控制器的计算机系统示意图。
图3示出了单计算机节点中的锁分配控制器示意图。
图4示出了在多计算机节点中应用锁分配控制器的计算机系统示意图。
图5示出了图4中的计算机节点N1的锁分配控制器示意图。
图6示出了图4中的计算机节点N2的锁分配控制器示意图。
图7示出了锁分配控制方法流程图。
图8示出了在单计算机节点中应用锁分配控制方法的流程图。
图9示出了在多计算机节点中利用主记录应用锁分配控制方法的流程图。
图10示出了在多计算机节点中利用辅助记录应用锁分配控制方法的流程图。
具体实施方式
下列讨论中,提供大量具体的细节以帮助彻底了解本发明。然而,很显然对于本领域技术人员来说,即使没有这些具体细节,并不影响对本发明的理解。并且应该认识到,使用如下的任何具体术语仅仅是为了方便描述,因此,本发明不应当局限于只用在这样的术语所标识和/或暗示的任何特定应用中。
除非另有说明,本发明所述的功能可用硬件或软件或它们的结合来运行。然而,在一实施例中,除非另有说明,这些功能是由处理器,如计算机或电子数据处理器,按照编码,如计算机程序编码,的集成电路来执行的。
图2示出了在单计算机节点中应用锁分配控制器的计算机系统示意图。在该计算机系统中,计算机芯片(图中未示出)包括有一个计算机节点N1及总线(BUS)。N1中包含四个处理器核C1、C2、C3和C4。四个处理器核共享同一级本地缓存(L2 Cache),处理器核通过共享的本地缓存与总线通信,进而可以读/写内存(Memory)中的数据。同时,专门的硬件机制负责保证各个L2 Cache的数据一致性。本领域的普通技术人员理解,四个处理器核并不限于只能共享二级缓存,而是还可以共享三级缓存、四级缓存等,图2中所描述的仅是本发明的一个实施例,并不能构成对本发明的限制。每个处理器核可能支持一个硬件线程、也可能支持多个硬件线程。并且每个处理器核或硬件线程与一个一级缓存相连接。
本发明独特的之处在于在计算机节点N1中设置了锁分配控制器,使得处理器核对于锁的占用和释放操作,无需再通过总线访问内存进行,而是可以将锁相关的信息保存在计算机节点中。这样既减少了总线上的资源浪费,同时也减小了由于通过总线对内存进行访问的时间延迟。本领域的普通技术人员理解,处理器核通过总线对内存的访问速度要远远慢于处理器核对计算机节点内部的访问。计算机节点中不仅可以存储锁的状态信息,也可以部署相关的运算逻辑从而按照预定规则选择性的唤醒处于休眠状态的处理器核。
图3示出了单计算机节点中的锁分配控制器示意图。锁分配控制器中包括锁状态变化接收装置、锁信息存储表、目标核确定装置、目标核唤醒装置,优选地还包括一个先入先出队列(FIFO队列)。锁信息存储表中存储有每一个锁的相关信息,包括锁识别号(Lock ID)、锁状态值(Valid)、处于休眠状态的处理器核(Core in waiting)以及预定规则(Policy)。可见,本发明中的锁相关的信息不是存储在内存中,而是存储在计算机节点的锁分配控制器中,由于计算机核访问锁分配控制器所需要的时间远远短于通过总线访问内存所需要的时间,因此本发明大大减少了锁竞争(contention of lock)中的时间延迟。
锁状态变化接收装置用于从处理器核接收锁状态的变化。具体而言,按照本发明的一个实施例,比特1代表锁状态为空闲,比特0代表锁当前被占用。当锁状态为空闲时(即锁状态值为1),锁分配控制器通过锁状态变化接收装置接收到处理器核要访问某一把锁的请求,并且对锁状态值进行修改,从而使锁状态值为0,这样其它的处理器核就知道这把锁已经被占用。通过图3中的锁信息存储表中的内容可知,识别号为1的锁,当前正在被某一处理器核占用(比如正在被识别号为1000的核C1所占用),同时在FIFO队列中有两个处理器核正在处于休眠状态,等待获取锁1。FIFO队列中记录了按照时间顺序依次发出对锁1的请求信号的两个处理器核的识别号0010(核C3)与0100(核C2)。这两个处理器核在锁信息存储表中仅用4比特位(0110)就可以标识出来。当然,本领域的普通技术人员理解,也可以使用更多的比特位来标识处于休眠状态的本地处理器核,如0010和0100。进一步,锁状态变化接收装置用于接收所述C1核释放锁1的信号。按照本发明的一种实施例,锁状态变化接收装置,可以进一步修改锁信息存储表中的锁状态值,将其由0(被占用)变为1(空闲)。按照本发明的另一种实施例,如果检测到锁信息存储表中存在正在处于休眠状态的处理器核,说明存在需要获得锁1的处理器核,因此在这种情况下锁状态变化接收装置也可以不对锁状态值,而是由目标核确定装置和目标核唤醒装置唤醒处于休眠状态的某一个处理器核。
Policy中记录了对锁进行分配管理的预定规则。按照本发明的一个实施例,预定规则为先入先出规则,也就是说对于同处于休眠状态的等待某一把锁的多个处理器核,锁分配控制器将优先唤醒最先发出锁请求的处理器核。按照本发明的另一个实施例,预定规则为轮询调度规则(Round-Robin),也就是说对于同处于休眠状态的等待某一把锁的多个处理器核,锁分配控制器将按照轮询调度规则计算出Round-Robin队列,并且优先唤醒Round-Robin队列中优先级最高的处理器核。Round-Robin规则的原理是把锁轮流分配给提出锁请求的处理器核。当然,本发明并不限于这两种预定规则,而是可以应用任何预定的规则进行锁的分配。按照图3中的锁信息存储表所示,锁2正处于空闲状态,其应用的预定规则为Round-Robin规则。
目标核确定装置用于在锁状态值由0转变为1后,根据预定规则判断可以唤醒处于休眠状态中的哪个处理器核。按照图3中的实施例,当锁1被释放后,将唤醒处理器C3(识别号0010)。目标核唤醒装置用于向C3发出唤醒信号。获得锁1后,C3将首先判断是否能够在缓存(一级缓存、二级缓存或者其它级别的缓存)内找到要访问的与锁1对应的数据资源,以及如果未能找到要访问的数据资源,C3将通过总线访问内存以获得要访问的数据资源。
图4示出了在多计算机节点中应用锁分配控制器的计算机系统示意图。按照图4所示的实施例,计算机芯片包括三个计算机节点N1、N2、N3,和一个总线(BUS)。计算机节点通过总线对内存(Memory)进行访问。图4中的计算机节点的内部结构与图2中的计算机节点的内部结构大致相同,所以在此不再赘述。
在多计算机节点中应用锁分配控制器与在单计算机节点中应用锁分配控制器所不同的是,同一把锁需要在多个计算机节点中进行分配,所以需要有一种机制保证多个锁分配控制器能够就同一把锁的分配互相协调,并进一步减少节点间通信所造成的时间延迟。所述协调机制将在图5中进行更加详细的说明。
图5示出了图4中的计算机节点N1的锁分配控制器示意图。图5中的锁分配控制器与图3中的锁分配控制器的结构存在相同之处,对这些功能相同的部件,下文中仅做简要说明。
N1的锁分配控制器中包括锁状态变化接收装置、锁信息存储表、目标核确定装置、目标核唤醒装置、节点间通信装置,优选地还包括一个先入先出队列(FIFO队列)。其中锁信息存储表中存储有每一个锁的相关信息,包括锁识别号(Lock ID)、锁状态值(Valid)、是否包含主记录(Home Note)、处于休眠状态的本地处理器核(Local corein waiting),等待中的远程计算机节点(Remote note in waiting),正在占用锁的计算机节点(Current holder)以及预定规则(Policy)。
锁状态变化接收装置用于从处理器核接收锁状态的变化,包括接收锁请求或锁释放信号。为了协调各锁分配控制器中的锁信息存储表,按照本发明的一个实施例,为每把锁制定一个主记录和若干个辅助记录,并且将这些记录分别部署在不同的计算机节点的锁分配控制器中。按照图5所示,锁1的主记录部署在节点N1内,而锁1的辅助记录部署在节点N2和N3内。主记录和辅助记录都用于记录其所支持的计算机节点对锁的需求状况,并且主记录还额外的负责协调锁在不同计算机节点间的分配。
通过图5中的锁信息存储表中的内容可知,锁1当前正在被某一处理器核占用(比如正在被N1中的C1所占用),同时在FIFO队列中有两个本地处理器核正在处于休眠状态,等待获取锁1。FIFO队列中记录了按照时间顺序依次发出对锁1的请求信号的两个处理器核的识别号0010(核C3)与0100(核C2)。含有处于休眠状态的远程处理器核的远程计算机节点被记录在等待中的远程计算机节点一栏中,因此等待中的远程计算机节点一栏中记录着010表示计算机节点N2中包含有正在等待锁1的处理器核。正在占用锁的计算机节点被记录在正在占用锁的计算机节点一栏中,因此正在占用锁的计算机节点一栏中记录着100,表示N1中的处理器核正在占用锁1。按照图5中的实施例,主记录无需了解需要访问锁1的远程处理器核,因为对远程处理器核的唤醒控制完全可以由部署在远程计算机节点中的锁分配控制器完成。可见主记录用于支持对本地处理器核的锁分配,并且用于支持协调节点间的锁分配,而辅助记录仅用于支持对本地处理器核的锁分配。
按照本发明的一个实施例,利用是否包含主记录的值来判断一个锁分配控制器中是否包含主记录。主记录的分配方法有很多。基本思路可以分成两种,第一种是尽可能的让多个锁平均分配在不同的计算机节点内。如果总共有999把锁,那么则可以把这999把锁的999个主记录平均分成三份,每份333把锁,因此每个计算机节点的锁分配控制器中包含有333个主记录和666个辅助记录。关于辅助记录的内容将在后文中进行更加详细的介绍。锁分配的逻辑也可以有多种,一种比较简单的方法是对锁的ID号进行取模运算(比如进行模3运算),然后按照运算之后的尾数(比如1、2或3)对锁的主记录进行分配。按照本发明的一个实施例,处理器核可以在每次对锁分配控制器进行访问的时候,进行模3的逻辑运算,从而计算出存储有锁的主记录的计算机节点。按照本发明的另一个实施例,也可以在锁信息存储表中利用一个比特位来标识所述记录是否是主记录,在图5的例子中,用0表示所述记录是主记录,用1表示所述记录是辅助记录,这样处理器核在访问锁分配控制器时无需运行取模的运算逻辑,而是可以通过直接查表来判断主记录的位置。需要说明的是,锁的分配可以是预先进行的。也就是说可以预先确定并保存锁信息存储表中的一些基本信息,包括锁ID、锁状态值、是否包含主记录和预定规则。
第二种对主记录进行分配的方法是尽量将锁的主记录分配在经常会需要使用这把锁的处理器核所对应的锁分配控制器中,这样可以减少由于辅助记录需要与主记录同步带来的时间延迟,进一步对锁分配的性能进行优化。程序员可以根据自己的经验手动的将锁的主记录分配在经常访问的计算机节点中,同时也可以根据系统运行的反馈来判断哪把锁更经常被哪个计算机节点所访问,即通过对反馈结果进行统计,从而产生推荐的锁的主记录的分配方案。
此外,本发明还可以不存储辅助记录仅存储主记录。这样如果一个处理器核在本节点的锁分配控制器中找不到所请求的锁的主记录,则会与主记录所在的计算机节点通信以获得所请求的锁,或者被至于等待队列中。
锁信息存储表中的预定规则记录了锁分配的预定规则。Locality/FIFO/Distance表示当来自不同计算机节点的处理器核都想获得锁1时,优先唤醒本地处理器核,当本地处理器核已经全部结束对锁1的占用时,再将锁的控制权交给远程的计算机节点;并且如果由两个或两个以上的本地处理器核都想占用锁1,锁分配控制器将会按照FIFO规则优先将锁1分配给时间顺序靠前的处理器核(0010);如果有两个或两个以上的远程计算机节点(如N2和N3)都包含有处于休眠状态的处理器核等待对锁1的占用,那么锁分配控制器将锁1优先分配给与本地计算机节点(N1)物理距离最近的远程计算机节点(如N2与N1的物理距离比N3与N1的物理距离近,则在结束N1中的处理器核对锁1的占用后,由N2中的处理器核对锁1进行占用),从而进一步节省锁分配时的时间延迟,优化锁分配的性能。进一步,可以有两种实施例来实现由N2中的处理器核对锁1进行占用。按照第一种实施例,N1的锁分配控制器将通知N2的锁分配控制器,然后由N2的锁分配控制器唤醒N2中的处理器核。按照第二种实施例,N1的锁分配控制器将直接唤醒N2中的处理器核,在这种情况下N1中的锁分配控制器需要记录需要获得锁1的远程处理器核与其计算机节点。
本领域的普通技术人员理解所述预定规则还可以有各种变形,比如预定规则为Locality/FIFO/FIFO表示本地计算机节点优先于远程计算机节点,并且在本地,锁的分配将按照先入先出的顺序进行,在不同远程计算机节点间,锁的分配也将按照先入先出的顺序进行。再如,预定规则为Locality/Round-Robin/FIFO表示本地计算机节点优先于远程计算机节点,并且在本地,锁的分配将按照Round-Robin规则所获得的优先顺序进行,在不同远程计算机节点间,锁的分配也将按照先入先出的顺序进行。还如,预定规则为FIFO表示无论是本地处理器核还是远程处理器核都按照先入先出的顺序对锁进行占用,在这种情况下,FIFO队列中记录的就不仅仅是本地的处理器核的识别号,而是包括所有需要对锁进行占用的处理器核的识别号,以及这些处理器核相应的计算机节点的识别号。
目标核确定装置用于在锁状态值由0转变为1后,根据预定规则判断可以唤醒处于休眠状态中的哪个本地处理器核。按照图5中的实施例,当锁1被释放后,将依次唤醒N1中的C3、C2,当N1中没有处于休眠状态的线程时,对锁1的分配将被交由N2的锁分配控制器进行控制。目标核唤醒装置用于向处理器核发出唤醒信号,如向N1中的C3、C2发出唤醒信号。当C3和C2都完成了对锁1的占用,N1的锁分配控制器将通过节点间通信装置向N2发出通知信号以将对锁1的控制权交给N2中的锁分配控制器负责。在一种实施例中,当N2中的处理器核释放了锁1后,N1将通过节点间通信装置确认N2向N1归还了锁1的控制权,比如N1将从N2接收锁1的控制器被归还的信号,再如N1可以查询N2中的锁信息存储表确认锁1的控制权被归还。在另一种实施例中,当N2中的处理器核释放了锁1后,N2将通过N2的节点间通信装置将锁1的控制权转交给下一个需要获得锁1的处理器核所在的计算机节点(比如N3),为了保持锁分配控制器间的同步,N1将确认N2把锁1的控制权转交给下一个计算机节点。N2可以发送通知信号给N3以将锁1的控制权转交给N3。N2可以主动通知N1锁1的控制权被转交给N3,或者N1可以主动查询N2以确认锁1的控制权被转交给N3。
图6示出了图4中的计算机节点N2的锁分配控制器示意图。N1中的锁分配控制器存储着锁1的主记录,而N2中的锁分配控制器存储着锁1的辅助记录。按照本发明的一个实施例,图5与图6中的锁信息存储表结构一样。在锁1的辅助记录中,等待中的远程计算机节点的值可以忽略,因为在N2中的处理器核释放锁1后,N2将把对锁1的控制权通过节点间通信装置发送归还信号交还给N1,因为N1中包含了锁1的主记录,所以N2中无需保留等待中的远程计算机节点的值。至于锁1的辅助记录中的其它值,包括锁识别号、锁状态值、是否包含主记录、处于休眠状态的本地处理器核,正在占用锁的计算机节点以及预定规则的值与锁1的主记录的值将保持同步。
作为上述实施例的一种变形,本发明也可以不区分主记录和辅助记录,而将锁分配控制器中的主记录和辅助记录的值设置成完全一样。这样每个计算机节点在本节点内的所有处理器核都完成了对锁1的占用后,可以直接把对锁1的控制权交给另一个计算机节点,而不必与主记录所在的计算机节点进行联系。比如N1、N2、N3都需要占用锁1,而N1完成对锁1的占用后,把控制权交给了N2,N2再次完成了对锁1的占用后,直接将锁的控制权交给N3,为了保持锁分配控制器间的同步,N1将确认N2把锁1的控制权转交给下一个计算机节点。
按照图6中的实施例,锁状态值=0指示锁1正在被占用;是否包含主记录的值为1表示这条记录为辅助记录;处于休眠状态的本地处理器核的值为1100表示1000和0100这两个N2中的本地处理器核都处于休眠状态,正在等待锁1的分配;正在占用锁的计算机节点的值为100表示为占有锁1的当前的计算机节点为N1;预定规则的值中包含了与锁1相对应的进行锁分配的预定规则。
按照锁1的Locality/FIFO/Distance的预定规则,一旦N1通过节点间通信装置向N2发出节点唤醒信号,N2将根据自己的辅助记录判断应该唤醒本地的哪个处理器核。当N2中的处理器核按照先入先出的顺序完成了所有对锁1的占用,N2将通过节点间通信装置发送归还信号给N1,重新把对锁1的控制权交还给N1。这样每个计算机节点的处理器核只用与本地的锁分配控制器进行通信就可以完成对锁的占用和释放操作。
当N2中的C1(1000)释放锁1后,由N2中的C2(0100)重新占用锁1,这时所述C2上的硬件线程无需重新访问内存以读/写数据资源,而是可以首先尝试从N2的高速缓存中获得锁1对应的数据资源,如果N2的高速缓存中存储有相应的数据资源,C2就不再需要访问内存,从而节省了总线的资源,并且节省了访问数据资源所需要的时间。如果N2的高速缓存中没有存储相应的数据资源,比如高速缓存中的数据已经被更新,那么C2再访问内存以获得所需要的数据资源。
图7示出了锁分配控制方法流程图。假设第一处理器核获得了对于存储器中的一段数据资源的一个锁,而其它需要获得该锁的处理器核处于休眠状态。在步骤701,接收所述第一处理器核释放该锁的信号。在步骤703,根据对该锁进行分配的预定规则从其它需要获得该锁的处于休眠状态的处理器核中确定应该被唤醒的第二处理器核。在步骤705,唤醒所述第二处理器核使其获得该锁。
具体而言,图8示出了在单计算机节点中应用锁分配控制方法的流程图。在步骤801中,从第一处理器核接受对第一锁的请求信号。在步骤803,查询锁分配控制器,判断第一锁的主记录中的锁状态是否为空闲。如果为空闲,在步骤805,向第一处理器核发送信号,允许其占用第一锁。并且在步骤807,更新所述主记录中的信息,包括将该锁状态修改为被占用。当第一处理器核释放该第一锁后,在步骤809,接收第一处理器核的释放第一锁的信号,并且在步骤811更新所述主记录中的信息,包括更新第一锁的锁状态信息。
如果在步骤803中判断第一锁的主记录中的锁状态为被占用,则在步骤813中发送休眠信号至第一处理器核,使其进入休眠状态,而不会不断轮询第一锁的锁状态信息。并且在步骤815将第一处理器核登记在本地的FIFO队列中,以等待后续的唤醒操作。此处的FIFO队列仅仅是示意性的,还可以使用任何其它算法将休眠状态的处理器核进行排序。当第一锁被释放后,在步骤817根据预定规则选择性的唤醒该第一处理器核,并且在步骤819更新所述主记录中的信息,包括将第一处理器从主记录中处于休眠状态的处理器核的值中删除,以及将FIFO队列中的处理器核信息进行相应移位更新。
图9示出了在多计算机节点中利用主记录应用锁分配控制方法的流程图。在步骤901中,从第一处理器核接收对第一锁的请求信号。在步骤903中,查询本地的锁分配控制器,判断该锁分配控制器是否保存有所述第一锁的主记录。如果保存有主记录,则在步骤905进一步判断所述主记录中的锁状态是否为空闲。如果为空闲,则在步骤907向第一处理器核发送信号,允许其占用第一锁。并且在步骤909,更新所述主记录中的信息,包括将该锁状态修改为被占用,还包括将正在占用锁的计算机节点的值修改为第一处理器核所在的计算机节点。如果第一处理器核结束了对第一锁的占用,则在步骤911,接收第一处理器核的释放第一锁的信号。并且在步骤913更新所述主记录中的信息,包括将锁状态信息改为空闲,将正在占用锁的计算机节点中的内容进行删除。
如果在步骤905中,判断所述主记录中的第一锁的锁状态为被占用,那么发送休眠信号至第一处理器核,使其进入休眠状态。并且在步骤917将第一处理器核登记在本地的FIFO队列中,排队等待处理。当所述第一锁被释放后,在步骤919,根据预定规则选择性的唤醒第一处理器核。并且在步骤921,更新所述主记录中的信息,包括从处于休眠状态的本地处理器核中删除第一处理器核,以及将FIFO队列中的处理器核信息进行相应移位更新。
图10示出了在多计算机节点中利用辅助记录应用锁分配控制方法的流程图。在图9中的步骤903中,如果查询本地的锁分配控制器判断该锁分配控制器没有保存所述第一锁的主记录,也就是所述所分配管理器中保存的是所述第一锁的辅助记录,则在步骤1001中,进一步查询所述第一锁是否正在被本地的其它处理器核占用。这一步骤可以通过查询锁信息存储表中的正在占用锁的计算机节点中的节点是否是第一处理器核所在的节点来进行实现。如果第一锁正在被第一处理器核所在的计算机节点的其它处理器核所占用,则在步骤1003发送休眠信号至第一处理器核,以使其进入休眠状态。并且在步骤1005,将第一处理器核的标识登记在本地的FIFO队列中,以排队等待获得第一锁。如果第一锁被释放,则可以在步骤1025中,按照预定规则选择性的唤醒第一处理器核,使其占用第一锁。并且在步骤1027,更新所述辅助记录中的信息。其中更新辅助记录中的信息包括从处于休眠状态的本地处理器核中删除第一处理器核,以及将FIFO队列中的处理器核信息进行相应移位更新。
如果在步骤1001查询所述第一锁没有被第一处理器核所在的计算机节点的其它处理器核占用,则在步骤1007中判断所述主记录中的锁状态是否为空闲。本领域的普通技术人员理解,如果主记录与辅助记录保持同步,则也可以向辅助记录查询锁状态是否为空闲。总之,在第一锁的锁状态为空闲时,在步骤1009向第一处理器核发送信号,允许其占用第一锁。并且在步骤1011更新所述主记录以及辅助记录中的信息,进一步包括更新主记录以及辅助记录中的第一锁的锁状态信息以及正在占用锁的计算机节点中的信息。
当第一处理器核结束对第一锁的占用后,在步骤1013接收第一处理器核的释放第一锁的信号。并且在步骤1015更新所述主记录以及辅助记录中的信息,包括更新主记录及辅助记录中的锁状态信息以及正在占用锁的计算机节点中的信息。
如果在步骤1007中判断所述主记录中的锁状态为被占用,则在步骤1017中发送休眠信号至第一处理器核使其进入休眠状态。并且在步骤1019将第一处理器核登记在本地的FIFO队列中。
在所述第一锁被释放后,在步骤1021,根据预定规则选择性的唤醒第一处理器核,使其占用第一锁,并且在1023更新所述辅助记录或主记录中的信息,包括将正在占用锁的计算机节点更新为第一处理器核所在的计算机节点。并且更新辅助记录中的信息还进一步包括从处于休眠状态的本地处理器核中删除第一处理器核,以及将FIFO队列中的处理器核信息进行相应移位更新。
本发明的各种实施例可以提供许多优点,包括已经在发明内容中列举的,和能够从技术方案本身推导出来的。但是无论一个实施例是否取得全部优点,并且也无论这样的优点是否被认为是取得实质性提高,都不应构成对本发明的限制。同时,上文中提到的各种实施方式,仅仅是出于说明的目的,本领域的普通技术人员可以对上述实施方式做出各种修改和变更,而不偏离本发明的实质。本发明的范围完全由所附权利要求书限定。
Claims (19)
1.一种为多个处理器核进行锁分配的方法,并且其中第一处理器核获得了一个锁,而其它需要获得该锁的处理器核处于休眠状态,所述方法包括:
接收所述第一处理器核释放该锁的信号;
根据对该锁进行分配的预定规则从其它需要获得该锁的处于休眠状态的处理器核中确定应该被唤醒的第二处理器核;以及
唤醒所述第二处理器核使其获得该锁。
2.如权利要求1所述的方法,进一步包括:
为该锁建立锁信息存储表以记录该锁的识别号、该锁的状态值、至少一个需要获得该锁的处于休眠状态的处理器核的识别号、以及对该锁进行分配的预定规则。
3.如权利要求2所述的方法,进一步包括:
在所述第二处理器核获得了该锁的情况下,更新所述锁信息存储表中的信息。
4.如权利要求2所述的方法,其中所述多个处理器核包括远程处理器核与本地处理器核,并且所述对该锁进行分配的预定规则包括:
在需要获得该锁的处于休眠状态的处理器核既包括本地处理器核也包括远程处理器核的情况下,优先将该锁分配给所述本地处理器核。
5.如权利要求4所述的方法,其中对该锁进行分配的预定规则进一步包括:
在多个远程计算机节点中都包含需要获得该锁的处于休眠状态的远程处理器核的情况下,优先将该锁分配给与所述第一处理器核所在的计算机节点物理距离较近的远程计算机节点内的远程处理器核。
6.如权利要求4或5所述的方法,其中所述第二处理器核与所述第一处理器核分别处于不同的计算机节点中,并且所述方法进一步包括:
通知所述第二处理器核所在的计算机节点,以使所述第二处理器核所在的计算机节点唤醒处于休眠状态的所述第二处理器核。
7.如权利要求6所述的方法,进一步包括:
在所述第二处理器核释放该锁后,确认第二处理器核所在的计算机节点归还该锁的控制权给第一处理器核所在的计算机节点。
8.如权利要求6所述的方法,进一步包括:
在所述第二处理器核释放该锁后,确认第二处理器核所在的计算机节点将该锁的控制权转交给下一个需要被唤醒的处理器核所在的计算机节点。
9.如权利要求4-8中任意一个权利要求所述的方法,其中所述锁信息存储表中记录的至少一个需要获得该锁的处于休眠状态的处理器核的识别号为需要获得该锁的处于休眠状态的本地处理器核的识别号,并且所述锁信息存储表还进一步记录需要获得该锁的处于休眠状态的远程处理器核所在的远程计算机节点的识别号。
10.一种用于为多个处理器核进行锁分配的锁分配控制器,并且其中第一处理器核获得了一个锁,而其它需要获得该锁的处理器核处于休眠状态,所述锁分配控制器包括:
锁状态变化接收装置,用于接收所述第一处理器核释放该锁的信号;
目标核确定装置,用于根据对该锁进行分配的预定规则从其它需要获得该锁的处于休眠状态的处理器核中确定应该被唤醒的处于休眠状态的第二处理器核;以及
目标核唤醒装置,用于唤醒所述第二处理器核使其获得该锁。
11.如权利要求10所述的锁分配控制器,进一步包括:
为该锁建立的锁信息存储表,用于记录该锁的识别号、该锁的状态值、至少一个需要获得该锁的处于休眠状态的处理器核的识别号、以及对该锁进行分配的预定规则。
12.如权利要求11所述的锁分配控制器,其中所述锁信息存储表在所述第二处理器核获得了该锁的情况下被更新。
13.如权利要求11所述的锁分配控制器,其中所述多个处理器核包括远程处理器核与本地处理器核,并且所述对该锁进行分配的预定规则包括:
在需要获得该锁的处于休眠状态的处理器核既包括本地处理器核也包括远程处理器核的情况下,优先将该锁分配给所述本地处理器核。
14.如权利要求13所述的锁分配控制器,其中对该锁进行分配的预定规则进一步包括:
在多个远程计算机节点中都包含处于休眠状态的远程处理器核的情况下,优先将该锁分配给与所述第一处理器核所在的计算机节点物理距离较近的远程计算机节点内的远程处理器核。
15.如权利要求13或14所述的锁分配控制器,其中所述第二处理器核与所述第一处理器核分别处于不同的计算机节点中,并且所述锁分配控制器进一步包括:
节点间通信装置,用于通知所述第二处理器核所在的计算机节点,以使所述第二处理器核所在的计算机节点唤醒处于休眠状态的所述第二处理器核。
16.如权利要求15所述的锁分配控制器,所述节点间通信装置进一步用于在所述第二处理器核释放该锁后,确认第二处理器核所在的计算机节点归还该锁的控制权给第一处理器核所在的计算机节点。
17.如权利要求15所述的锁分配控制器,所述节点间通信装置进一步用于在所述第二处理器核释放该锁后,确认第二处理器核所在的计算机节点将该锁的控制权转交给下一个需要被唤醒的处理器核所在的计算机节点。
18.如权利要求13-17中任意一个权利要求所述的锁分配控制器,其中所述锁信息存储表中记录的至少一个需要获得该锁的处于休眠状态的处理器核的识别号为需要获得该锁的处于休眠状态的本地处理器核的识别号,并且所述锁信息存储表还进一步记录需要获得该锁的处于休眠状态的远程处理器核所在的远程计算机节点的识别号。
19.一种计算机系统,包括多个处理器核、至少一个高速缓存、以及如权利要求10-18所述的锁分配控制器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102610735A CN102103523A (zh) | 2009-12-22 | 2009-12-22 | 锁分配控制的方法和装置 |
US12/975,579 US20110161540A1 (en) | 2009-12-22 | 2010-12-22 | Hardware supported high performance lock schema |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102610735A CN102103523A (zh) | 2009-12-22 | 2009-12-22 | 锁分配控制的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102103523A true CN102103523A (zh) | 2011-06-22 |
Family
ID=44156313
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009102610735A Pending CN102103523A (zh) | 2009-12-22 | 2009-12-22 | 锁分配控制的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20110161540A1 (zh) |
CN (1) | CN102103523A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810139A (zh) * | 2014-01-24 | 2014-05-21 | 浙江众合机电股份有限公司 | 一种多处理器的数据交换方法和装置 |
CN105071973A (zh) * | 2015-08-28 | 2015-11-18 | 迈普通信技术股份有限公司 | 一种报文接收方法及网络设备 |
CN105095144A (zh) * | 2015-07-24 | 2015-11-25 | 中国人民解放军国防科学技术大学 | 基于栅栏和锁的多核Cache一致性维护的方法和装置 |
TWI550398B (zh) * | 2015-12-28 | 2016-09-21 | 英業達股份有限公司 | 邏輯cpu的實體位置判斷系統及其方法 |
CN106020979A (zh) * | 2016-05-17 | 2016-10-12 | 青岛海信移动通信技术股份有限公司 | 进程的调度方法及装置 |
CN106293930A (zh) * | 2015-06-11 | 2017-01-04 | 华为技术有限公司 | 一种信号锁分配的方法、装置和网络系统 |
CN106569897A (zh) * | 2016-11-07 | 2017-04-19 | 许继集团有限公司 | 基于协作式多任务调度机制的共享总线的轮询方法与装置 |
CN108376102A (zh) * | 2017-01-31 | 2018-08-07 | 三星电子株式会社 | 资源分配的系统、方法及非暂时性计算机可读媒体 |
CN109040266A (zh) * | 2018-08-14 | 2018-12-18 | 郑州云海信息技术有限公司 | 微服务架构中锁的管理方法和装置 |
CN109313478A (zh) * | 2016-06-18 | 2019-02-05 | 高通股份有限公司 | 出于能效在移动装置上进行的唤醒锁感知系统宽作业调度 |
CN110046126A (zh) * | 2013-08-28 | 2019-07-23 | 威盛电子股份有限公司 | 多核微处理器及其重新配置方法、计算机可读存储介质 |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101664108B1 (ko) * | 2010-04-13 | 2016-10-11 | 삼성전자주식회사 | 멀티 코어의 동기화를 효율적으로 처리하기 위한 하드웨어 가속 장치 및 방법 |
US8713262B2 (en) | 2011-09-02 | 2014-04-29 | Nvidia Corporation | Managing a spinlock indicative of exclusive access to a system resource |
US9495198B1 (en) * | 2012-08-16 | 2016-11-15 | Open Invention Network Llc | Cloud thread synchronization |
US9733991B2 (en) | 2012-09-14 | 2017-08-15 | International Business Machines Corporation | Deferred re-MRU operations to reduce lock contention |
US9547604B2 (en) | 2012-09-14 | 2017-01-17 | International Business Machines Corporation | Deferred RE-MRU operations to reduce lock contention |
US9037801B2 (en) * | 2012-09-27 | 2015-05-19 | Amadeus S.A.S. | Method and system of storing and retrieving data |
IN2015DN01332A (zh) * | 2012-09-27 | 2015-07-03 | Amadeus Sas | |
CN103455468A (zh) * | 2012-11-06 | 2013-12-18 | 深圳信息职业技术学院 | 一种多gpu运算卡及多gpu之间的数据传输方法 |
US9501332B2 (en) | 2012-12-20 | 2016-11-22 | Qualcomm Incorporated | System and method to reset a lock indication |
US9632569B2 (en) | 2014-08-05 | 2017-04-25 | Qualcomm Incorporated | Directed event signaling for multiprocessor systems |
US9710054B2 (en) * | 2015-02-28 | 2017-07-18 | Intel Corporation | Programmable power management agent |
WO2016153376A1 (en) * | 2015-03-20 | 2016-09-29 | Emc Corporation | Techniques for synchronization management |
DE102016106939B4 (de) * | 2015-04-17 | 2024-05-02 | Suunto Oy | Eingebettetes Rechengerät |
WO2017018976A1 (en) | 2015-07-24 | 2017-02-02 | Hewlett Packard Enterprise Development Lp | Lock manager |
US10623487B2 (en) * | 2017-01-11 | 2020-04-14 | International Business Machines Corporation | Moveable distributed synchronization objects |
CN109739890A (zh) * | 2018-12-29 | 2019-05-10 | 浙江口碑网络技术有限公司 | 数据处理方法、装置及设备 |
CN112148695A (zh) * | 2019-06-26 | 2020-12-29 | 华为技术有限公司 | 一种资源锁管理方法及装置 |
US11144252B2 (en) * | 2020-01-09 | 2021-10-12 | EMC IP Holding Company LLC | Optimizing write IO bandwidth and latency in an active-active clustered system based on a single storage node having ownership of a storage object |
CN112130904B (zh) * | 2020-09-22 | 2024-04-30 | 黑芝麻智能科技(上海)有限公司 | 处理系统、处理器间通信方法、以及共享资源管理方法 |
US20230115573A1 (en) * | 2021-10-08 | 2023-04-13 | Oracle International Corporation | Methods, systems, and computer program products for efficiently accessing an ordered sequence in a clustered database environment |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5339427A (en) * | 1992-03-30 | 1994-08-16 | International Business Machines Corporation | Method and apparatus for distributed locking of shared data, employing a central coupling facility |
CN1497468A (zh) * | 2002-10-10 | 2004-05-19 | �Ҵ���˾ | 利用无数据事务获得全局促进工具的方法、设备和系统 |
CN101051281A (zh) * | 2007-05-16 | 2007-10-10 | 杭州华三通信技术有限公司 | 多cpu对临界资源进行互斥访问的方法和装置 |
CN101542448A (zh) * | 2006-11-27 | 2009-09-23 | 思科技术公司 | 多处理器存储区域网中锁定管理器的轮换 |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4709326A (en) * | 1984-06-29 | 1987-11-24 | International Business Machines Corporation | General locking/synchronization facility with canonical states and mapping of processors |
JPS61233849A (ja) * | 1985-04-08 | 1986-10-18 | Hitachi Ltd | デ−タベ−ス排他制御方法 |
JPH05134886A (ja) * | 1990-11-30 | 1993-06-01 | Fujitsu Ltd | デツドロツク検出方式 |
US5263155A (en) * | 1991-02-21 | 1993-11-16 | Texas Instruments Incorporated | System for selectively registering and blocking requests initiated by optimistic and pessimistic transactions respectively for shared objects based upon associated locks |
US5423044A (en) * | 1992-06-16 | 1995-06-06 | International Business Machines Corporation | Shared, distributed lock manager for loosely coupled processing systems |
US5454108A (en) * | 1994-01-26 | 1995-09-26 | International Business Machines Corporation | Distributed lock manager using a passive, state-full control-server |
US5644768A (en) * | 1994-12-09 | 1997-07-01 | Borland International, Inc. | Systems and methods for sharing resources in a multi-user environment |
US6223204B1 (en) * | 1996-12-18 | 2001-04-24 | Sun Microsystems, Inc. | User level adaptive thread blocking |
US5790851A (en) * | 1997-04-15 | 1998-08-04 | Oracle Corporation | Method of sequencing lock call requests to an O/S to avoid spinlock contention within a multi-processor environment |
US6041384A (en) * | 1997-05-30 | 2000-03-21 | Oracle Corporation | Method for managing shared resources in a multiprocessing computer system |
US6026427A (en) * | 1997-11-21 | 2000-02-15 | Nishihara; Kazunori | Condition variable to synchronize high level communication between processing threads |
US6189007B1 (en) * | 1998-08-28 | 2001-02-13 | International Business Machines Corporation | Method and apparatus for conducting a high performance locking facility in a loosely coupled environment |
US6480918B1 (en) * | 1998-12-22 | 2002-11-12 | International Business Machines Corporation | Lingering locks with fairness control for multi-node computer systems |
US6301676B1 (en) * | 1999-01-22 | 2001-10-09 | Sun Microsystems, Inc. | Robust and recoverable interprocess locks |
US6173442B1 (en) * | 1999-02-05 | 2001-01-09 | Sun Microsystems, Inc. | Busy-wait-free synchronization |
US6751617B1 (en) * | 1999-07-12 | 2004-06-15 | Xymphonic Systems As | Method, system, and data structures for implementing nested databases |
US6473819B1 (en) * | 1999-12-17 | 2002-10-29 | International Business Machines Corporation | Scalable interruptible queue locks for shared-memory multiprocessor |
US7185192B1 (en) * | 2000-07-07 | 2007-02-27 | Emc Corporation | Methods and apparatus for controlling access to a resource |
US6792497B1 (en) * | 2000-12-12 | 2004-09-14 | Unisys Corporation | System and method for hardware assisted spinlock |
US7328263B1 (en) * | 2001-01-30 | 2008-02-05 | Cisco Technology, Inc. | Controlling access of concurrent users of computer resources in a distributed system using an improved semaphore counting approach |
US7318220B2 (en) * | 2004-03-11 | 2008-01-08 | International Business Machines Corporation | System and method for measuring latch contention |
GB2414573B (en) * | 2004-05-26 | 2007-08-08 | Advanced Risc Mach Ltd | Control of access to a shared resource in a data processing apparatus |
US20060036790A1 (en) * | 2004-08-10 | 2006-02-16 | Peterson Beth A | Method, system, and program for returning attention to a processing system requesting a lock |
US7209990B2 (en) * | 2005-04-05 | 2007-04-24 | Oracle International Corporation | Maintain fairness of resource allocation in a multi-node environment |
US7996848B1 (en) * | 2006-01-03 | 2011-08-09 | Emc Corporation | Systems and methods for suspending and resuming threads |
JP4142069B2 (ja) * | 2006-06-16 | 2008-08-27 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置およびアクセス制御方法 |
US8108865B2 (en) * | 2006-07-31 | 2012-01-31 | Hewlett-Packard Development Company, L.P. | Process replication method and system |
US7600063B2 (en) * | 2006-09-15 | 2009-10-06 | Oracle International Corporation | Techniques for improved read-write concurrency |
US7886300B1 (en) * | 2006-09-26 | 2011-02-08 | Oracle America, Inc. Formerly Known As Sun Microsystems, Inc. | Mechanism for implementing thread synchronization in a priority-correct, low-memory safe manner |
US7509448B2 (en) * | 2007-01-05 | 2009-03-24 | Isilon Systems, Inc. | Systems and methods for managing semantic locks |
CN101308461A (zh) * | 2007-05-18 | 2008-11-19 | 国际商业机器公司 | 处理器及其中处理锁事务的方法 |
JP5242560B2 (ja) * | 2007-05-30 | 2013-07-24 | パナソニック株式会社 | 暗号化装置、復号化装置、暗号化方法及び集積回路 |
US7877549B1 (en) * | 2007-06-12 | 2011-01-25 | Juniper Networks, Inc. | Enforcement of cache coherency policies using process synchronization services |
US7970814B2 (en) * | 2008-05-20 | 2011-06-28 | Raytheon Company | Method and apparatus for providing a synchronous interface for an asynchronous service |
US8271996B1 (en) * | 2008-09-29 | 2012-09-18 | Emc Corporation | Event queues |
US8346531B2 (en) * | 2008-11-05 | 2013-01-01 | Oracle America, Inc. | Handling mutex locks in a dynamic binary translation across heterogeneous computer systems |
US8368701B2 (en) * | 2008-11-06 | 2013-02-05 | Via Technologies, Inc. | Metaprocessor for GPU control and synchronization in a multiprocessor environment |
US9213586B2 (en) * | 2009-03-18 | 2015-12-15 | Sas Institute Inc. | Computer-implemented systems for resource level locking without resource level locks |
US8156275B2 (en) * | 2009-05-13 | 2012-04-10 | Apple Inc. | Power managed lock optimization |
-
2009
- 2009-12-22 CN CN2009102610735A patent/CN102103523A/zh active Pending
-
2010
- 2010-12-22 US US12/975,579 patent/US20110161540A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5339427A (en) * | 1992-03-30 | 1994-08-16 | International Business Machines Corporation | Method and apparatus for distributed locking of shared data, employing a central coupling facility |
CN1497468A (zh) * | 2002-10-10 | 2004-05-19 | �Ҵ���˾ | 利用无数据事务获得全局促进工具的方法、设备和系统 |
CN101542448A (zh) * | 2006-11-27 | 2009-09-23 | 思科技术公司 | 多处理器存储区域网中锁定管理器的轮换 |
CN101051281A (zh) * | 2007-05-16 | 2007-10-10 | 杭州华三通信技术有限公司 | 多cpu对临界资源进行互斥访问的方法和装置 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110046126A (zh) * | 2013-08-28 | 2019-07-23 | 威盛电子股份有限公司 | 多核微处理器及其重新配置方法、计算机可读存储介质 |
CN110046126B (zh) * | 2013-08-28 | 2021-05-07 | 威盛电子股份有限公司 | 多核微处理器及其重新配置方法、计算机可读存储介质 |
CN103810139A (zh) * | 2014-01-24 | 2014-05-21 | 浙江众合机电股份有限公司 | 一种多处理器的数据交换方法和装置 |
CN103810139B (zh) * | 2014-01-24 | 2017-04-26 | 浙江众合科技股份有限公司 | 一种多处理器的数据交换方法和装置 |
CN106293930A (zh) * | 2015-06-11 | 2017-01-04 | 华为技术有限公司 | 一种信号锁分配的方法、装置和网络系统 |
CN106293930B (zh) * | 2015-06-11 | 2019-08-20 | 华为技术有限公司 | 一种信号锁分配的方法、装置和网络系统 |
CN105095144A (zh) * | 2015-07-24 | 2015-11-25 | 中国人民解放军国防科学技术大学 | 基于栅栏和锁的多核Cache一致性维护的方法和装置 |
CN105071973A (zh) * | 2015-08-28 | 2015-11-18 | 迈普通信技术股份有限公司 | 一种报文接收方法及网络设备 |
CN105071973B (zh) * | 2015-08-28 | 2018-07-17 | 迈普通信技术股份有限公司 | 一种报文接收方法及网络设备 |
TWI550398B (zh) * | 2015-12-28 | 2016-09-21 | 英業達股份有限公司 | 邏輯cpu的實體位置判斷系統及其方法 |
CN106020979A (zh) * | 2016-05-17 | 2016-10-12 | 青岛海信移动通信技术股份有限公司 | 进程的调度方法及装置 |
CN106020979B (zh) * | 2016-05-17 | 2019-05-31 | 青岛海信移动通信技术股份有限公司 | 进程的调度方法及装置 |
CN109313478A (zh) * | 2016-06-18 | 2019-02-05 | 高通股份有限公司 | 出于能效在移动装置上进行的唤醒锁感知系统宽作业调度 |
CN106569897B (zh) * | 2016-11-07 | 2019-11-12 | 许继集团有限公司 | 基于协作式多任务调度机制的共享总线的轮询方法与装置 |
CN106569897A (zh) * | 2016-11-07 | 2017-04-19 | 许继集团有限公司 | 基于协作式多任务调度机制的共享总线的轮询方法与装置 |
CN108376102A (zh) * | 2017-01-31 | 2018-08-07 | 三星电子株式会社 | 资源分配的系统、方法及非暂时性计算机可读媒体 |
CN109040266A (zh) * | 2018-08-14 | 2018-12-18 | 郑州云海信息技术有限公司 | 微服务架构中锁的管理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US20110161540A1 (en) | 2011-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102103523A (zh) | 锁分配控制的方法和装置 | |
JP5037566B2 (ja) | ディレクトリ型コヒーレンシー・プロトコルでの同時アクセスの最適化 | |
CN100481014C (zh) | 用于信息处理的系统和方法 | |
JP6984022B2 (ja) | マルチノードシステムの低電力管理 | |
US7318126B2 (en) | Asynchronous symmetric multiprocessing | |
CN112527730A (zh) | 用于处理具有设备附接的存储器的远程直接存储器存取操作的系统、装置和方法 | |
JP2019535072A (ja) | 複数の購読者にメッセージを提供するためのシステム及び方法 | |
JP2000181878A (ja) | 共有メモリ型ベクトル処理システムとその制御方法及びベクトル処理の制御プログラムを格納する記憶媒体 | |
WO2007096979A1 (ja) | 情報処理装置およびデータ転送方法 | |
US8166246B2 (en) | Chaining multiple smaller store queue entries for more efficient store queue usage | |
WO2012052775A1 (en) | Data processing systems | |
WO2004095262A2 (en) | Distributed shared resource management | |
CN100530141C (zh) | 用于互连网络上高效的有序储存的方法和装置 | |
US8819305B2 (en) | Directly providing data messages to a protocol layer | |
KR101695845B1 (ko) | 캐시 일관성 유지 장치 및 방법, 이를 이용하는 멀티프로세서 장치 | |
JP7089530B2 (ja) | データ処理 | |
US20080082756A1 (en) | Mechanisms and methods of using self-reconciled data to reduce cache coherence overhead in multiprocessor systems | |
JP7346649B2 (ja) | 同期制御システムおよび同期制御方法 | |
WO2007096978A1 (ja) | スヌープ制御方法および情報処理装置 | |
CN104809078A (zh) | 基于退出退让机制的共享高速缓存硬件资源访问方法 | |
Lin et al. | A dynamic object allocation and replication algorithm for distributed systems with centralized control | |
CN117493023B (zh) | 一种持续集成的任务处理方法、系统、计算机及存储介质 | |
CN117149472B (zh) | 通信方法、装置、计算机可读存储介质以及电子设备 | |
JP2018049406A (ja) | 複数プロセッサ間のタスク連携装置 | |
US10728331B2 (en) | Techniques for dynamic cache use by an input/output device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110622 |