CN105808210B - 共享资源的访问方法和装置 - Google Patents
共享资源的访问方法和装置 Download PDFInfo
- Publication number
- CN105808210B CN105808210B CN201410851467.7A CN201410851467A CN105808210B CN 105808210 B CN105808210 B CN 105808210B CN 201410851467 A CN201410851467 A CN 201410851467A CN 105808210 B CN105808210 B CN 105808210B
- Authority
- CN
- China
- Prior art keywords
- locked
- journey
- kernel
- acquisition
- level
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Multi Processors (AREA)
Abstract
本发明提供一种共享资源的访问方法和装置,该方法包括:第一内核通过运行针对第一节点区域的获取层次锁进程获取代表所述第一节点区域去竞争运行获取常规锁进程的资格;所述第一节点区域包括所述第一内核和至少一个非所述第一内核;在每一个所述节点区域中,针对所述节点区域的获取层次锁进程在任意时刻都是限制运行该获取层次锁进程的内核数量的;当所述第一内核获取到所述竞争运行获取常规锁进程的资格后,所述第一内核通过运行获取常规锁进程来与其他节点区域中具有所述资格的内核竞争访问共享资源的权限;通过本发明提供的共享资源的访问方法和装置,提高内核竞争共享资源的成功概率,避免了活锁现象发生。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种共享资源的访问方法和装置。
背景技术
在当今的计算机系统中,多核处理器内的多个内核可实现资源共享,但为了保护共享资源,需防止共享资源的并发访问,避免出现访问的共享资源的不一致的问题。
现有技术中,为了防止共享资源的并发访问,需对共享资源实行加锁机制,具体的,临界区是访问和操作共享资源的代码段,多核处理器内的在任意一个内核执行临界区的代码段时,该临界区的代码端需原子地执行,且在执行结束前不可被打断,举例来说,临界区的代码段包括10条指令,任意一个内核在执行临界区的代码段时,对该临界区的代码段进行加锁,则其他内核不可执行该临界区的代码段,直至临界区的代码段被一个内核执行完成之后,其他内核才可执行临界区的代码段,也就是说,临界区的代码段中的10条指令结合起来,作为一个整体的、不可分割的指令。
但随着多核处理器的内核数量的不断增加,则多个内核争抢加锁,会加剧共享资源的竞争冲突,容易引起活锁,导致全部的内核均加锁失败。
发明内容
本发明提供一种共享资源的访问方法和装置,用于提高内核竞争共享资源的成功概率,避免了活锁现象发生,利于提高处理器的运行性能。
第一方面,本发明提供一种共享资源的访问方法,适用于多核处理器,该访问方法包括:
第一内核通过运行针对第一节点区域的获取层次锁进程获取代表所述第一节点区域去竞争运行获取常规锁进程的资格;所述第一节点区域包括所述第一内核和至少一个非所述第一内核;在每一个所述节点区域中,针对所述节点区域的获取层次锁进程在任意时刻都是限制运行该获取层次锁进程的内核数量的;
当所述第一内核获取到所述竞争运行获取常规锁进程的资格后,所述第一内核通过运行获取常规锁进程来与其他节点区域中具有所述资格的内核竞争访问共享资源的权限。
第二方面,本发明提供一种共享资源的访问装置,所述访问装置为多核处理器中的第一内核,包括:
第一运行模块,用于通过运行针对第一节点区域的获取层次锁进程获取代表所述第一节点区域去竞争运行获取常规锁进程的资格;所述第一节点区域包括所述第一内核和至少一个非所述第一内核;在每一个所述节点区域中,针对所述节点区域的获取层次锁进程在任意时刻都是限制运行该获取层次锁进程的内核数量的;
第二运行模块,用于当所述第一内核获取到所述竞争运行获取常规锁进程的资格后,所述第一内核通过运行获取常规锁进程来与其他节点区域中具有所述资格的内核竞争访问共享资源的权限。
本发明提供的共享资源的访问方法和装置,通过设置获取层次锁进程,在各个内核竞争访问共享资源时,使得参与竞争运行获取常规锁进程的内核的数量减少,提高了内核竞争共享资源的成功概率,避免了活锁现象发生,利于提高处理器的运行性能。
附图说明
图1为本发明共享资源的访问方法实施例一的流程图;
图2为本发明共享资源的访问方法实施例一中节点区域的示意图;
图3为本发明共享资源的访问方法实施例二的流程图;
图4为本发明共享资源的访问装置实施例一的结构示意图;
图5为本发明共享资源的访问装置实施例二的结构示意图。
具体实施方式
图1为本发明共享资源的访问方法实施例一的流程图。如图1所示,本实施例的执行主体为共享资源的访问装置,该共享资源的访问装置可以采用软件和/或硬件的形式实现,在实际应用中,该共享资源的访问装置可看做是多核处理器中的一个内核,具体的,本实施例包括:
S101、第一内核通过运行针对第一节点区域的获取层次锁进程获取代表所述第一节点区域去竞争运行获取常规锁进程的资格。
针对第一节点区域的获取层次锁进程是为了让某一内核获取到竞争运行获取常规锁进程的资格而设置的。如果某一内核成功运行完成该获取层次锁进程,便可以获取到竞争运行获取常规锁进程的资格,通过这种在一个区域选出一个代表内核去竞争执行获取常规锁进程的资格的方式来减少竞争想要运行获取常规锁进程的内核的数量,进而减少出现活锁现象。本实施例中以第一内核代表上述的某一区域内的一个内核为例进行描述,则该第一内核所在的区域即为第一节点区域。
上述第一节点区域包括第一内核和至少一个非第一内核;具体的,多核处理器通常包括至少两个内核(本实施例以及下述实施例中提到的多核,即多个内核,是指至少两个内核),当各个内核在运行程序(进程或线程等)时,若程序中的一条指令指示内核访问共享资源,则内核需要运行获取层次锁进程,才可进一步去竞争运行获取常规锁进程而获取访问共享资源的权限;也就是说需要运行获取层次锁进程的任意一个内核都可作为上述第一内核,从而第一内核所在的节点区域即为第一节点区域;
举例来说,图2为本发明共享资源的访问方法实施例一中节点区域的示意图。如图2所示,当前设备设置有多核处理器,具体以8个内核进行示例,各个内核之间可进行通信,多核处理器中的各个内核按照节点逻辑划分原则被划分到了多个节点区域中,具体的,一种可选的按照节点逻辑划分原则为:技术人员提前根据各个内核的访存延迟情况,将访存延迟相等或相近的内核划分在同一个节点区域中;图2中以4个节点区域作示意,每个节点区域中包括4个内核;为了便于描述,本实施例以内核P0的角度进行说明,则在P0访问共享资源的过程中,该P0作为第一内核,则P0所在的节点区域为第一节点区域,而第一节点区域内的其他内核,如P1、P2和P3均为非第一内核;而且,在每一个所述节点区域中,针对所述节点区域的获取层次锁进程在任意时刻都是限制运行该获取层次锁进程的内核数量的。
S102、当所述第一内核获取到所述竞争运行获取常规锁进程的资格后,所述第一内核通过运行常规锁进程来与其他节点区域的具有所述资格的内核竞争访问共享资源的权限。
具体来说,在本实施例中,只有第一内核将获取层次锁进程成功运行完成后,才可运行常规锁进程;也就是说,第一内核将获取层次锁进程成功运行完成后,获得了代表第一节点区域去竞争运行获取常规锁进程的资格,才可运行常规锁进程,并与其他节点区域,即除上述第一节点区域以外的节点区域中具有所述资格的内核竞争访问共享资源的权限;
举例来说,获取层次锁进程包括了三条指令,且获取层次锁进程在任意时刻限制的运行该获取层次锁进程的内核数量为1,在当前时刻P0在运行获取层次锁进程中的三条指令的任意一条时,若P2开始运行获取层次锁进程的第一条指令,则P0和P2都会运行失败,不能完成所述获取层次锁进程,因此,若P0完成了获取层次锁进程的运行,则说明P0在运行获取层次锁进程中的三条指令的过程中,其他内核没有开始运行获取层次锁进程,即在第一节点区域中,P0相较于其他内核,先一步竞争到运行常规锁进程的资格便开始与其他节点区域中具有运行常规锁进程的资格的内核竞争常规锁进程,以竞争访问共享资源的权限。
在同一个时刻,一个节点区域中仅有一个内核获取到代表该节点区域去竞争运行获取常规锁进程的资格,则在一定时间内竞争运行获取常规锁进程的内核仅为其他节点区域中获取了上述资格的内核,从而避免出现在同一个时刻较多的内核均竞争运行获取常规锁进程,导致出现活锁现象。例如,以两个节点区域进行说明,在T1时刻,P0成功过运行完获取层次锁进程,具有竞争运行获取常规锁进程的资格,开始运行获取常规锁进程,而P1、P2和P3没有成功运行完获取层次锁进程,故不具有竞争运行获取常规锁进程的资格,同样的,在T2时刻(T2时刻与T1时刻相同,或者位于T1时刻之后,但在P1~P3中任意内核获取到代表所述第一节点区域去竞争运行获取常规锁进程的资格的时刻之前),P4成功运行完成获取层次锁进程,具备竞争运行获取常规锁进程的资格,开始运行获取常规锁进程,而P5~P7未成功运行完成获取层次锁进程,不可参与运行获取常规锁进程,则在一定时间内(至少为T1时刻至P1~P3中任意内核获取到代表所述第一节点区域去竞争运行获取常规锁进程的资格的时刻之前),仅有P4和P0竞争运行获取常规锁进程;当P0将获取常规锁进程成功运行完成,则P0实现对共享资源的加锁,此时P0可独占共享资源,而P4不可访问共享资源;且在P0访问共享资源结束前,其他内核均不可访问共享资源。
上述获取常规锁进程与获取层次锁进程类似,所述获取常规锁进程在任意时刻都是限制运行该常规锁进程的内核数量的,也就是说获取常规锁进程在任意时刻是仅允许多个内核中的任意一个内核运行的;可以理解的,P0在运行获取常规锁进程的过程中,若其他内核也运行获取常规锁进程,则P0和其他内核均不能完成获取常规锁的运行,只能重新开始竞争运行,例如P0在运行过程中,任意一个内核也访问该获取常规锁进程,则P0需重新开始运行获取常规锁进程,可以想到的,若上述各个节点区域中的每个内核均并发访问共享资源时,由于竞争运行获取常规锁的内核太多,则在P0重新运行获取常规锁进程的过程中,其他内核也参与运行获取常规锁进程的概率较高,导致P0和其他竞争的内核之间出现活锁现象,即不停的返回重新运行获取常规锁进程,均不能成功访问共享资源,导致处理器运行停滞;但本实施例通过上述获取层次锁进程,将同一个节点区域内各个内核参与运行获取常规锁进程的时间间隔增长,从而使得在一定时间内参与竞争运行获取常规锁进程的内核数目较少,提高了内核对共享资源加锁成功的概率,避免活锁现象发生。
本实施例中,在各个内核竞争访问共享资源时,通过设置获取层次锁进程,使得各个内核参与运行获取常规锁的时间间隔增长,从而在一定时间内竞争运行获取常规锁的内核的数量减少,提高了内核竞争共享资源的成功概率,避免了活锁现象发生,利于提高处理器的运行性能。
图3为本发明共享资源的访问方法实施例二的流程图。如图3所示,本实施例是在图1所示的实施例的基础上做出进一步的描述,具体的,本实施例包括:
S201、第一内核获取该第一内核的核标号。
S202、第一内核根据第一内核的核标号和节点逻辑划分原则,确定该第一内核归属的第一节点区域的节点标号。
本实施例中,技术人员已预先对设备或系统所包含的各个内核进行分区,并建立了上述节点逻辑划分原则,例如技术人员根据实验数据等信息,将访存延迟相同或相近的多个内核分为一个节点区域,但各个内核并不知道其所在的节点区域,因此,当前需要访问共享资源的第一内核通过S201和S202确定第一内核归属的第一节点区域的节点标号。
S203、第一内核根据第一节点区域的节点标号和逻辑划分原则,确定所述第一节点区域对应的层次锁的锁标识。
本实施例较优的,为了进一步限制竞争运行获取常规锁进程的内核的数量,避免一个内核在竞争运行获取常规锁进程的过程中,该节点所在的节点区域内的其他内核完成获取层次锁进程后,也参与竞争运行获取常规锁进程,故给各个节点区域设置了对应的层次锁的锁标识;只要一个节点区域内的一个内核将获取层次锁进程成功运行完成后(也可以说该内核获得了层次锁),便可通过节点区域对应的层次锁的锁标识,对获取层次锁进程进行加锁,使节点区域内的其他内核暂不运行获取层次锁进程,进一步将同一个节点内各个内核运行竞争运行获取常规锁进程的时间间隔增长,从而在一个节点区域中的一个内核去运行获取常规锁进程的时刻起,至该内核将获取常规锁进程成功运行完成的时刻,与该内核竞争运行获取常规锁进程的内核数量至多为多核处理器中节点区域的数量减去1,进一步提高内核竞争共享资源的成功概率,避免了活锁现象发生。
具体的,在各个内核按照节点逻辑划分原则被划分到了多个节点区域中的同时,上述节点逻辑划分原则还规定了各个节点区域对应的层次锁的锁标识,只有内核将获取层次锁进程成功运行完成,相当于内核通过将获取层次锁进程运行完成获得了层次锁,具有对层次锁的锁标识进行赋值的权限,进而可通过对层次锁的锁标识进行赋值,以对获取层次锁进程进行加锁,故本实施例中,第一内核需根据第一节点区域的节点标号,确定对应的层次锁的锁标识。
S204、第一内核获取第一节点区域对应的层次锁的锁标识的状态。
S205、第一内核判断第一节点区域对应的层次锁的锁标识是否为释放状态;若是执行S206;若否,返回S204。
举例来说,作为第一内核的P0在当前时刻需要访问共享资源,但在第一节点区域中,P2或P3等内核已早于P0获得了第一节点区域的节点标号对应的层次锁,即将层次锁的锁标识为锁定状态,此时P0不能获取第一节点区域对应的层次锁,只有返回执行S204,等待层次锁的锁标识为释放状态,才可竞争运行获取层次锁进程,以获取代表第一节点区域去竞争运行获取常规锁进程的资格;具体的,其中锁定状态可以通过将层次锁的锁标识的赋值置为1表示,则释放状态可以通过将层次锁的锁标识的赋值置为0表示。
S206、第一内核由获取层次锁进程的第一条指令开始,依次运行所述获取层次锁进程中各个指令。
由于在每一个所述节点区域中,所述获取层次锁进程在任意时刻是仅允许任意一个内核运行的,因此当P0运行了获取层次锁进程的任意一条指令时,若有第一节点区域中的其他内核也运行了该获取层次锁进程,则第一内核不会成功将获取层次锁进程运行完成。
S207、第一内核判断是否成功运行完成所述获取层次锁进程;若是,执行S208;若否,返回执行S204。
基于不同的进程(或计算机语言)设计,可选的,若内核不能运行至进程的最后一条指令,则表示内核为将该进程成功运行完成;或者内核将进程的最后一条指令运行完成后获得了一个返回值,根据该返回值确定是否将进程成功运行完成;可以理解的,还可以根据其他方式判断是否将进程成功运行完成。
本实施例提供一种可选的判断方法,所述第一内核运行所述获取层次锁进程,获得所述获取层次锁进程的返回值;当所述获取层次锁进程的返回值为用于表示运行完成的值,则所述第一内核确定所述针对第一节点区域的获取层次锁进程成功运行完成,继续执行S208;当所述获取层次锁进程的返回值为用于表示获取层次锁进程运行未完成的值,则所述第一内核确定所述针对第一节点区域的获取层次锁进程运行失败,则返回S204。
更具体的,由第一内核执行S206开始,即所述第一内核由所述获取层次锁进程的第一条指令开始,依次运行该获取层次锁进程中的各个指令;当所述第一内核运行该获取层次锁进程中的任意一个指令时,若所述第一节点区域中的非第一内核运行该获取层次锁进程中的任意一个指令,则所述第一内核执行该获取层次锁进程的最后一条指令后,获得的所述获取层次锁进程的返回值为用于表示获取层次锁进程运行未完成的值;若无所述第一节点区域中的所述非第一内核运行该获取层次锁进程中的任意一个指令,则所述第一内核执行该获取层次锁进程的最后一条指令后,获得的所述获取层次锁进程的返回值为用于表示运行完成的值。
当第一内核未成功运行完成所述获取层次锁进程,则第一内核需重新由获取层次锁进程的第一条指令开始,依次运行所述获取层次锁进程中各个指令,直至第一内核成功运行完成所述获取层次锁进程。
S208、第一内核将第一节点区域对应的层次锁的锁标识的值置为用于表示锁定状态的值。
第一内核将获取层次锁进程成功运行完成,获得了第一节点区域对应的层次锁的锁标识赋值的权限(也可以理解为获得了第一节点区域对应的层次锁),通过将第一节点区域对应的层次锁的锁标识的值置为用于表示锁定状态的值,实现对获取层次锁进程加锁,以使第一节点区域中的非第一内核不运行获取层次锁进程,从而在第一内核开始运行获取常规锁进程的时刻起,至第一内核成功运行完成获取常规锁进程的时刻,第一节点区域中的非第一内核不会与第一内核竞争运行获取常规锁进程。
S209、第一内核获取常规锁的锁标识的状态。
S210、第一内核判断常规锁的锁标识的状态是否为释放状态;若是执行S211;若否执行S209。
若常规锁的锁标识的状态为锁定状态,则说明归属其他节点区域的内核已完成了获取常规锁进程,对共享资源进行加锁,即归属其他节点区域的内核已将常规锁的锁标识的值置为用于表示锁定状态(例如将常规锁的锁标识的赋值为1)的值,此时第一内核是不能运行获取常规锁进程,需返回S209,等待常规锁的锁标识的状态为释放状态(例如常规锁的锁标识的赋值为0)。
S211、第一内核由获取常规锁进程的第一条指令开始,依次运行所述获取常规锁进程中各个指令。
上述获取常规锁进程在任意时刻是仅允许至少两个内核中的任意一个内核运行的;且至少两个内核中的各个内核分别归属各个不同的节点区域,也就是说,此时第一内核与来自其他非第一节点区域的各个内核竞争,例如作为第一内核的P0与第二节点区域的P5、第三节点区域的P11、第四节点区域的P14竞争运行获取常规锁进程。
S212、第一内核判断是否成功运行完成获取常规锁进程;若是执行S213;若否返回S209。
可选的,与运行获取层次锁进程的过程类似,所述第一内核运行所述获取常规锁进程,获得所述获取常规锁进程的返回值;当所述获取常规锁进程的返回值为用于表示运行完成的值,则所述第一内核确定所述获取常规锁进程成功运行完成;
更具体的,由第一内核执行S211开始,即所述第一内核由所述获取常规锁进程的第一条指令开始,依次运行该获取常规锁进程中的各个指令;当所述第一内核运行该获取常规锁进程中的任意一个指令时,若所述非第一节点区域中的内核运行该获取常规锁进程中的任意一个指令,则所述第一内核执行该获取常规锁进程的最后一条指令后,获得的所述获取常规锁进程的返回值为用于表示运行未完成的值;若无所述非第一节点区域中的内核运行该获取常规锁进程中的任意一个指令,则所述第一内核执行该获取常规锁进程的最后一条指令后,获得的所述获取常规锁进程的返回值为用于表示运行完成的值。
举例来说,作为第一内核的P0在运行获取常规锁进程中的任意一条指令时,若有来自其他节点区域的P6、P10也参与运行获取常规锁进程,则P0、P6和P10都运行获取常规锁进程失败,P0返回S209。
S213、第一内核将常规锁的锁标识的值置为用于表示锁定状态的值,并访问共享资源。
通过S213,使归属各个非第一节点区域的内核不竞争访问所述共享资源(也即不竞争运行获取常规锁进程),即第一内核对共享资源加锁。
需要补充的是,在所述第一内核成功运行完成获取常规锁进程之后,第一内核还将所述第一节点区域所对应的层次锁的锁标识的值置为用于表示释放状态的值。
进一步的,当第一内核对共享资源访问完成后,则第一内核将常规锁的锁标识的值置为用于表示释放状态的值。
另外为了防止第一内核在运行获取层次锁进程或获取常规锁进程时不被其他因素干扰,第一内核在执行S201之前已关闭本地中断,直至S213执行完毕,则开启本地中断。
本实施例中,在各个内核竞争访问共享资源时,通过设置获取层次锁进程,使得各个内核参与运行获取常规锁的时间间隔增长,从而在一定时间内竞争运行获取常规锁的内核的数量减少,而且更优的,在一个节点区域内的一个内核成功运行完成获取层次锁进程后,通过将层次锁的锁标识置为锁定状态,使得节点区域内的其他内核不运行获取层次锁进程,从而在一个节点区域中的一个内核去运行获取常规锁进程的时刻起,至该内核将获取常规锁进程成功运行完成的时刻,与该内核竞争运行获取常规锁进程的内核数量至多为多核处理器中节点区域的数量减去1,进一步提高内核竞争共享资源的成功概率,避免了活锁现象发生,利于提高处理器的运行性能。
需补充说明的是,在实际应用中,图1~图3所示的多核处理中的多个内核可位于同一个芯片上,还可分别位于至少两个不同的芯片内,例如图2所示的多个处理器包括了两个CPU,每个CPU均包括8个内核,则在多核处理器工作时,各个芯片间建立了互联网络,若出现了活锁现象,则会加剧芯片间互联网络的通信延迟;但通过前述各个方法实施例,可有效避免了活锁现象发生,使得芯片间互联网络的通信及时有效。
图4为本发明共享资源的访问装置实施例一的结构示意图。如图4所示,所述共享资源的访问装置为多核处理器中的第一内核,包括:
第一运行模块10,用于通过运行针对第一节点区域的获取层次锁进程获取代表所述第一节点区域去竞争运行获取常规锁进程的资格;所述第一节点区域包括所述第一内核和至少一个非所述第一内核;在每一个所述节点区域中,针对所述节点区域的获取层次锁进程在任意时刻都是限制运行该获取层次锁进程的内核数量的;
第二运行模块20,用于当所述第一内核获取到所述竞争运行获取常规锁进程的资格后,所述第一内核通过运行获取常规锁进程来与其他节点区域中具有所述资格的内核竞争访问共享资源的权限。
本实施例中,在各个内核竞争访问共享资源时,通过设置获取层次锁进程,使得各个内核参与运行获取常规锁的时间间隔增长,从而在一定时间内竞争运行获取常规锁的内核的数量减少,提高了内核竞争共享资源的成功概率,避免了活锁现象发生,利于提高处理器的运行性能。
图5为本发明共享资源的访问装置实施例二的结构示意图。如图5所示,本实施例是在图4所示的实施例的基础上,做出进一步的描述,所述访问装置还包括:
获取模块30,获取第一内核的核标号;
确定模块40,用于根据所述第一内核的核标号和节点逻辑划分原则,确定该第一内核归属的第一节点区域的节点标号;
所述确定模块40还用于根据所述第一节点区域的节点标号节点逻辑划分原则,确定所述第一节点区域对应的层次锁的锁标识。
进一步的,所述访问装置还包括:设定模块50,用于将所述第一节点区域对应的层次锁的锁标识的值置为用于表示锁定状态的值,以使所述第一节点区域中的非第一内核不运行所述获取层次锁进程;
所述设定模块50还用于在所述第二运行模块成功运行完成获取常规锁进程之后,将所述第一节点区域所对应的层次锁的锁标识的值置为用于表示释放状态的值。
更具体的,所述第一运行模块10具体用于通过成功运行完成所述获取层次锁进程,获取到所述竞争运行获取常规锁进程的资格。
其中,所述第一运行模块10具体包括:第一运行单元101,用于运行所述获取层次锁进程,获得所述获取层次锁进程的返回值;
第一确定单元102,用于当所述获取层次锁进程的返回值为用于表示运行完成的值,则确定所述针对第一节点区域的获取层次锁进程成功运行完成,并以此(即并以成功运行完成针对第一节点区域的获取层次锁进程这件事)作为获取到所述竞争运行获取常规锁进程的资格。
所述第一运行单元101具体用于由所述获取层次锁进程的第一条指令开始,依次运行该获取层次锁进程中的各个指令;
当所述第一运行单元101运行该获取层次锁进程中的任意一个指令时,若所述第一节点区域中的非第一内核运行该获取层次锁进程中的任意一个指令,
则所述第一运行单元101执行该获取层次锁进程的最后一条指令后,获得的所述获取层次锁进程的返回值为用于表示获取层次锁进程运行未完成的值;
若无所述第一节点区域中的所述非第一内核运行该获取层次锁进程中的任意一个指令,
则所述第一运行单元101执行该获取层次锁进程的最后一条指令后,获得的所述获取层次锁进程的返回值为用于表示运行完成的值。
所述多核处理器中的各个内核按照所述节点逻辑划分原则被划分到了多个节点区域中。
本实施例中,在各个内核竞争访问共享资源时,通过设置获取层次锁进程,使得各个内核参与运行获取常规锁的时间间隔增长,从而在一定时间内竞争运行获取常规锁的内核的数量减少,而且更优的,在一个节点区域内的一个内核成功运行完成获取层次锁进程后,通过将层次锁的锁标识置为锁定状态,使得节点区域内的其他内核不运行获取层次锁进程,从而在一个节点区域中的一个内核去运行获取常规锁进程的时刻起,至该内核将获取常规锁进程成功运行完成的时刻,与该内核竞争运行获取常规锁进程的内核数量至多为多核处理器中节点区域的数量减去1,进一步提高内核竞争共享资源的成功概率,避免了活锁现象发生,利于提高处理器的运行性能。
需要说明的是,上述各个装置实施例中的各个模块用于执行前述各个方法实施例中的对应步骤,具体的实施过程及技术效果,可参见前述各个方法实施例。
另外,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的;且在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,上述各个模块及单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序进程相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (14)
1.一种共享资源的访问方法,其特征在于,适用于多核处理器,该访问方法包括:
第一内核通过运行针对第一节点区域的获取层次锁进程获取代表所述第一节点区域去竞争运行获取常规锁进程的资格;所述第一节点区域包括所述第一内核和至少一个非所述第一内核;在每一个所述第一节点区域中,针对所述第一节点区域的获取层次锁进程在任意时刻都是限制运行该获取层次锁进程的内核数量的;
当所述第一内核获取到所述竞争运行获取常规锁进程的资格后,所述第一内核通过运行获取常规锁进程来与其他节点区域中具有所述资格的内核竞争访问共享资源的权限。
2.根据权利要求1所述的访问方法,其特征在于,在第一内核通过运行针对第一节点区域的获取层次锁进程获取代表所述第一节点区域去竞争运行获取常规锁进程的资格之前,所述访问方法还包括:
所述第一内核获取该第一内核的核标号;
所述第一内核根据所述第一内核的核标号和节点逻辑划分原则,确定该第一内核归属的第一节点区域的节点标号;
根据所述第一节点区域的节点标号和节点逻辑划分原则,确定所述第一节点区域对应的层次锁的锁标识。
3.根据权利要求2所述的访问方法,其特征在于,当所述第一内核获取到所述竞争运行获取常规锁进程的资格后,所述访问方法还包括:
所述第一内核将所述第一节点区域对应的层次锁的锁标识的值置为用于表示锁定状态的值,以使所述第一节点区域中的非第一内核不运行所述获取层次锁进程;
在所述第一内核成功运行完成获取常规锁进程之后,所述访问方法还包括:
所述第一内核将所述第一节点区域所对应的层次锁的锁标识的值置为用于表示释放状态的值。
4.根据权利要求1所述的访问方法,其特征在于,所述第一内核获取到所述竞争运行获取常规锁进程的资格,具体包括:通过成功运行完成所述获取层次锁进程,所述第一内核获取到所述竞争运行获取常规锁进程的资格。
5.根据权利要求4所述的访问方法,其特征在于,所述通过成功运行完成所述获取层次锁进程,所述第一内核获取到所述竞争运行获取常规锁进程的资格,包括:
所述第一内核运行所述获取层次锁进程,获得所述获取层次锁进程的返回值;
当所述获取层次锁进程的返回值为用于表示运行完成的值,则所述第一内核确定所述针对第一节点区域的获取层次锁进程成功运行完成,并以此作为获取到所述竞争运行获取常规锁进程的资格。
6.根据权利要求5所述的访问方法,其特征在于,所述第一内核运行所述获取层次锁进程,获得所述获取层次锁进程的返回值,包括:
所述第一内核由所述获取层次锁进程的第一条指令开始,依次运行该获取层次锁进程中的各个指令;
当所述第一内核运行该获取层次锁进程中的任意一个指令时,若所述第一节点区域中的非第一内核运行该获取层次锁进程中的任意一个指令,
则所述第一内核执行该获取层次锁进程的最后一条指令后,获得的所述获取层次锁进程的返回值为用于表示获取层次锁进程运行未完成的值;
若无所述第一节点区域中的所述非第一内核运行该获取层次锁进程中的任意一个指令,
则所述第一内核执行该获取层次锁进程的最后一条指令后,获得的所述获取层次锁进程的返回值为用于表示运行完成的值。
7.根据权利要求1~6中任意一项所述的访问方法,其特征在于,所述多核处理器中的各个内核按照节点逻辑划分原则被划分到了多个节点区域中。
8.一种共享资源的访问装置,其特征在于,所述访问装置为多核处理器中的第一内核,包括:
第一运行模块,用于通过运行针对第一节点区域的获取层次锁进程获取代表所述第一节点区域去竞争运行获取常规锁进程的资格;所述第一节点区域包括所述第一内核和至少一个非所述第一内核;在每一个所述第一节点区域中,针对所述第一节点区域的获取层次锁进程在任意时刻都是限制运行该获取层次锁进程的内核数量的;
第二运行模块,用于当所述第一内核获取到所述竞争运行获取常规锁进程的资格后,所述第一内核通过运行获取常规锁进程来与其他节点区域中具有所述资格的内核竞争访问共享资源的权限。
9.根据权利要求8所述的访问装置,其特征在于,所述访问装置还包括:
获取模块,获取第一内核的核标号;
确定模块,用于根据所述第一内核的核标号和节点逻辑划分原则,确定该第一内核归属的第一节点区域的节点标号;
所述确定模块还用于根据所述第一节点区域的节点标号和节点逻辑划分原则,确定所述第一节点区域对应的层次锁的锁标识。
10.根据权利要求9所述的访问装置,其特征在于,所述访问装置还包括:
设定模块,用于将所述第一节点区域对应的层次锁的锁标识的值置为用于表示锁定状态的值,以使所述第一节点区域中的非第一内核不运行所述获取层次锁进程;
所述设定模块还用于在所述第二运行模块成功运行完成获取常规锁进程之后,将所述第一节点区域所对应的层次锁的锁标识的值置为用于表示释放状态的值。
11.根据权利要求8所述的访问装置,其特征在于,所述第一运行模块具体用于通过成功运行完成所述获取层次锁进程,获取到所述竞争运行获取常规锁进程的资格。
12.根据权利要求11所述的访问装置,其特征在于,所述第一运行模块具体包括:
第一运行单元,用于运行所述获取层次锁进程,获得所述获取层次锁进程的返回值;
第一确定单元,用于当所述获取层次锁进程的返回值为用于表示运行完成的值,则确定所述针对第一节点区域的获取层次锁进程成功运行完成,并以此作为获取到所述竞争运行获取常规锁进程的资格。
13.根据权利要求12所述的访问装置,其特征在于,所述第一运行单元具体用于由所述获取层次锁进程的第一条指令开始,依次运行该获取层次锁进程中的各个指令;
当所述第一运行单元运行该获取层次锁进程中的任意一个指令时,若所述第一节点区域中的非第一内核运行该获取层次锁进程中的任意一个指令,
则所述第一运行单元执行该获取层次锁进程的最后一条指令后,获得的所述获取层次锁进程的返回值为用于表示获取层次锁进程运行未完成的值;
若无所述第一节点区域中的所述非第一内核运行该获取层次锁进程中的任意一个指令,
则所述第一运行单元执行该获取层次锁进程的最后一条指令后,获得的所述获取层次锁进程的返回值为用于表示运行完成的值。
14.根据权利要求8~13中任意一项所述的访问装置,其特征在于,所述多核处理器中的各个内核按照节点逻辑划分原则被划分到了多个节点区域中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410851467.7A CN105808210B (zh) | 2014-12-31 | 2014-12-31 | 共享资源的访问方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410851467.7A CN105808210B (zh) | 2014-12-31 | 2014-12-31 | 共享资源的访问方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105808210A CN105808210A (zh) | 2016-07-27 |
CN105808210B true CN105808210B (zh) | 2018-07-31 |
Family
ID=56420735
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410851467.7A Active CN105808210B (zh) | 2014-12-31 | 2014-12-31 | 共享资源的访问方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105808210B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108459901B (zh) * | 2018-01-24 | 2019-04-23 | 深圳市普威技术有限公司 | 一种进程锁的处理方法、装置及系统 |
CN110032441B (zh) * | 2018-11-22 | 2023-03-28 | 创新先进技术有限公司 | 提升服务器性能的方法及装置和电子设备 |
CN113934516A (zh) * | 2020-06-29 | 2022-01-14 | 华为技术有限公司 | 一种锁管理方法、装置及设备 |
CN113836209A (zh) * | 2021-09-02 | 2021-12-24 | 深圳市道通智能汽车有限公司 | 多核处理器的共享资源访问方法、处理器及多核系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1774699A (zh) * | 2003-04-24 | 2006-05-17 | 国际商业机器公司 | 共享资源的并发访问 |
CN102566979A (zh) * | 2011-12-02 | 2012-07-11 | 华为技术有限公司 | 实现自适应锁的方法和装置以及多核处理器系统 |
CN103329102A (zh) * | 2011-01-18 | 2013-09-25 | 丰田自动车株式会社 | 多处理器系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4480427B2 (ja) * | 2004-03-12 | 2010-06-16 | パナソニック株式会社 | リソース管理装置 |
JP2007241918A (ja) * | 2006-03-13 | 2007-09-20 | Fujitsu Ltd | プロセッサ装置 |
-
2014
- 2014-12-31 CN CN201410851467.7A patent/CN105808210B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1774699A (zh) * | 2003-04-24 | 2006-05-17 | 国际商业机器公司 | 共享资源的并发访问 |
CN103329102A (zh) * | 2011-01-18 | 2013-09-25 | 丰田自动车株式会社 | 多处理器系统 |
CN102566979A (zh) * | 2011-12-02 | 2012-07-11 | 华为技术有限公司 | 实现自适应锁的方法和装置以及多核处理器系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105808210A (zh) | 2016-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2016244128B2 (en) | Processing database transactions in a distributed computing system | |
CN105808210B (zh) | 共享资源的访问方法和装置 | |
JP4698757B2 (ja) | ソフトウェアトランザクションのコミット順序および競合の管理 | |
EP3320452B1 (en) | Method and architecture for providing database access control in a network with a distributed database system | |
US9170844B2 (en) | Prioritization for conflict arbitration in transactional memory management | |
US9715450B2 (en) | Conditional data caching using transactional memory in a multiprocessor system | |
TWI733390B (zh) | 在區塊鏈中同時執行交易的方法和裝置及電腦可讀儲存媒體與計算設備 | |
US20080098180A1 (en) | Processor acquisition of ownership of access coordinator for shared resource | |
US8364909B2 (en) | Determining a conflict in accessing shared resources using a reduced number of cycles | |
US9792147B2 (en) | Transactional storage accesses supporting differing priority levels | |
CN103299281B (zh) | 防止硬件事务存储器系统非故意丢失事务数据 | |
CN106062707A (zh) | 使能混合事务存储器系统中的最大并发性 | |
WO2016145909A1 (zh) | 一种并发控制方法及装置 | |
US9830200B2 (en) | Busy lock and a passive lock for embedded load management | |
WO2009009583A1 (en) | Bufferless transactional memory with runahead execution | |
CN104750459A (zh) | 带有事务功能以及报告事务操作的日志记录电路的处理器 | |
CN102929711B (zh) | 一种软件实时事务内存的实现方法 | |
CN106716348A (zh) | 用于执行多个线程的数据处理设备中的共享资源 | |
CN110704112A (zh) | 在区块链中并发执行交易的方法和装置 | |
Negi et al. | π-TM: Pessimistic invalidation for scalable lazy hardware transactional memory | |
KR20160130781A (ko) | 트랜잭션 메모리 지원 | |
CN104216684B (zh) | 一种多核并行系统及其数据处理方法 | |
CN113421073A (zh) | 在区块链中并发执行交易的方法和装置 | |
TWI732501B (zh) | 在區塊鏈中並行執行交易的方法和裝置及電腦可讀儲存媒體與計算設備 | |
CN106843806B (zh) | 一种多核环境下基于数组结构的无等待栈操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Patentee after: Loongson Zhongke Technology Co.,Ltd. Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd. |