提高多核***访问临界资源速度的方法和装置
技术领域
本发明涉及多核技术领域,具体涉及提高多核***访问临界资源速度的方法和装置。
背景技术
多核处理器可看作将多个通用的中央处理单元(CPU)以及一些功能部件集成到一块芯片中形成的一个***级芯片(SOC),CPU之间以及CPU与集成到芯片上的其它部件间通过高速的内部互联技术进行通信,打破了以往多CPU***中CPU之间以及CPU与***其它部件间通信的性能瓶颈,使***性能得到保证。
在多核***中,各个核之间可以并发访问临界资源(又称共享资源)。为了防止多个核同时访问临界资源中的同一个临界节点引起的数据混乱的情况,在多核***中,当一个核要访问临界资源中的临界节点时,首先要判断该临界节点是否已加锁,若已加锁,则等待;若未加锁,则先对该临界节点加锁,然后访问该临界节点。例如:当一个核要从某个临界资源中删除某个临界节点时,在检测到该临界节点未加锁后,要先对该临界节点加锁然后再进行删除操作,以避免其它核访问该待删除的临界节点从而造成数据访问错误。
可以看出:在一个核访问临界资源中的临界节点时对该临界节点进行加锁操作,虽然会避免访问错误,但是加锁操作会增加***开销,从而会降低对临界资源的访问效率。
发明内容
本发明提供一种提高多核***访问临界资源速度的方法和装置,以提高多核***访问临界资源的速度。
本发明的技术方案是这样实现的:
一种提高多核***访问临界资源速度的方法,包括:
准备要删除临界资源中的临界节点,将该临界节点从临界资源中分离出来,并在检测到满足该临界节点的删除条件时,删除该临界节点,
所述临界节点为临界资源的组成单位。
所述方法进一步包括:预先为准备删除的临界节点设定延迟删除时长,
所述将该临界节点从临界资源中分离出来的同时进一步包括:将当前时刻加上预设的该临界节点的延迟删除时长,得到该临界节点的删除时刻,
所述满足该临界节点的删除条件为:所述计算得到的删除时刻小于或等于当前***时刻。
预先为准备删除的临界节点设定延迟删除时长包括:根据多核***的临界资源所包含的数据结构类型,为属于同一类数据结构的临界节点设定相同的延迟删除时长。
所述方法进一步包括:预先设定一个保存有临界资源所包含的所有临界节点标识的临界资源记录信息,预先为属于各类数据结构的临界节点分别创建一个延迟删除队列;
所述将临界节点从临界资源中分离出来包括:将临界节点的标识从临界资源记录信息中删除,将该临界节点标识放入到该临界节点所属的数据结构类型对应的延迟删除队列中。
所述删除该临界节点包括:删除延迟删除队列中的该临界节点标识,同时根据该临界节点标识查找到对应的临界节点,将该临界节点删除。
所述临界节点的标识为临界节点的地址信息。
所述方法进一步包括:预先设定一个检测周期,并设定在每个检测周期内检测的与各延迟删除队列对应的临界节点总数;
所述检测到满足该临界节点的删除条件之后进一步包括:
判断本检测周期内检测的当前延迟删除队列对应的节点总数是否等于预设的在每个检测周期内检测的当前延迟删除队列对应的临界节点总数,若是,开始检测下一个延迟删除队列;否则,继续检测当前延迟删除队列对应的下一个临界节点。
所述方法进一步包括:预先设定一个检测周期,并设定在每个检测周期内检测的临界节点总数;
所述检测到满足该临界节点的删除条件之后进一步包括:
判断本检测周期内检测的节点总数是否等于预设的在每个检测周期内检测的临界节点总数,若是,等待下一个检测周期来临;否则,继续检测下一个临界节点。
所述方法进一步包括:预先创建一个具有固定存储空间的延迟删除队列,
所述将临界节点从临界资源中分离出来包括:将临界节点标识从临界资源记录信息中删除,将该临界节点标识放入所述延迟删除队列中;
所述满足临界节点的延迟删除条件,删除临界节点为:检测到延迟删除队列已满,则删除最先进入该队列的临界节点标识,并删除该临界节点标识对应的临界节点。
所述预先创建一个具有固定存储空间的延迟删除队列为:为属于各类数据结构的临界节点分别创建一个延迟删除队列;
所述将该临界节点标识放入所述延迟删除队列中包括:根据该临界节点所属的数据结构类型,将该临界节点标识放入该类数据结构对应的延迟删除队列中。
所述将临界节点从临界资源中分离出来之后进一步包括:
当多核***的核确定要访问临界资源的临界节点时,则直接进入该临界资源进行访问。
一种提高多核***访问临界资源速度的装置,包括:待删除节点确定模块和删除模块,其中:
待删除节点确定模块,用于在准备要删除临界节点时,将该临界节点标识记录到删除模块中;
删除模块,用于在检测到当前满足待删除节点确定模块记录在自身的临界节点标识对应的临界节点的删除条件后,根据该临界节点标识,查找到该临界节点,并删除该临界节点,
所述临界节点为临界资源的组成单位。
所述删除模块包括:删除时刻确定模块和删除确定模块,其中:
删除时刻确定模块,用于根据预先设定的延迟删除时长,确定待删除节点确定模块记录的临界节点标识对应的临界节点的删除时刻,将该临界节点标识和删除时刻记录到删除确定模块;
删除确定模块,用于在检测到删除时刻确定模块记录在自身的临界节点删除时刻小于或等于当前***时刻时,删除该删除时刻指向的临界节点。
所述删除确定模块进一步包括:延迟删除队列确定模块、延迟删除队列模块和删除指示发送模块,其中:
延迟删除队列确定模块,用于确定待删除节点确定模块记录在自身的临界节点标识对应的临界节点所属的延迟删除队列,将该临界节点标识和对应的删除时刻记录到延迟删除队列模块中对应的延迟删除队列中;
延迟删除队列模块,用于为每类数据结构创建一个延迟删除队列,根据请求,将延迟删除队列中的临界节点删除时刻发送给删除指示发送模块,根据删除指示发送模块发来的删除指示,删除该删除时刻以及对应的临界节点标识,并删除该临界节点标识对应的临界节点;
删除指示发送模块,用于在检测到从延迟删除队列模块获取的临界节点的删除时刻小于或等于***时刻时,向延迟删除队列模块发送删除指示。
所述删除确定模块进一步包括:定时器模块,用于在定时开始时,向删除指示发送模块发送用于指示开始检测的定时开始指示;
所述删除指示发送模块在收到所述开始指示后,根据最近一次记录的检测开始时的延迟删除队列标识,向延迟删除队列模块获取该延迟删除队列的第一个临界节点删除时刻。
所述删除模块进一步包括:存储空间判断模块,用于在检测到待删除节点确定模块要向删除模块记录临界节点标识时,判断删除模块的存储空间是否已满,若是,向删除模块中除存储空间判断模块外的其它部分发送删除最先保存的临界节点标识的指示信息;
所述删除模块中除存储空间判断模块外的其它部分接收到所述指示信息,则检测到当前满足待删除节点确定模块记录在删除模块的所述最先保存的临界节点标识对应的临界节点的删除条件,并执行所述根据该临界节点标识查找到该临界节点并删除该临界节点的动作。
所述删除模块包括:延迟删除队列确定模块、延迟删除队列模块和存储空间判断模块,其中:
延迟删除队列确定模块,用于确定待删除节点确定模块记录在自身的临界节点标识对应的延迟删除队列,向存储空间判断模块发送携带该延迟删除队列标识的***请求,在收到存储空间判断模块返回的确定***指示后,将该临界节点标识记录到延迟删除队列模块中对应的延迟删除队列中;
延迟删除队列模块,用于为每类数据结构创建一个延迟删除队列,将各延迟删除队列的存储空间变化信息发送给存储空间判断模块,根据存储空间判断模块发来的删除指示,删除最先进入对应延迟删除队列的临界节点标识,并删除对应的临界节点,向存储空间判断模块发送删除完毕指示;
存储空间判断模块,用于根据延迟删除队列模块发来的各延迟删除队列的存储空间变化信息,判断延迟删除队列确定模块发来的延迟删除队列标识对应的延迟删除队列的存储空间是否已满,若已满,则向延迟删除队列模块发送携带该延迟删除队列标识的删除指示,根据延迟删除队列模块返回的删除完毕指示,向延迟删除队列确定模块发送确定***指示;若未满,则直接向延迟删除队列确定模块发送确定***指示。
与现有技术相比,本发明在准备删除临界资源中的某个临界节点时,先将该节点从临界资源中分离出来,然后将该节点保留一段时长后再删除,这样既不会影响正在访问的核对该临界节点的访问,同时也不会影响其它核访问该临界节点原来所在的临界资源,从而使得核在访问临界资源时,无需判断临界资源是否加锁,也无需对临界资源加锁,提高了多核***访问临界资源的速度。
附图说明
图1为本发明实施例一提供的提高多核***中的临界资源访问速度的流程图;
图2为本发明实施例二提供的提高多核***中的临界资源访问速度的流程图;
图3为本发明实施例提供的提高多核***中的临界资源访问速度的装置组成示意图;
图4为本发明实施例一提供的提高多核***中的临界资源访问速度的装置组成示意图;
图5为本发明实施例一提供的删除确定模块的组成示意图;
图6为本发明实施例二提供的提高多核***中的临界资源访问速度的装置组成示意图。
具体实施方式
本发明的核心思想是:当准备删除临界资源中的某个临界节点时,先将该节点从临界资源中分离出来,然后将该节点保留一段时长后再删除。具体地,可以预先设定一固定保留时长,待删除的节点经过该固定保留时长后删除;也可以预先设定一固定长度的专门用于存储待删除节点标识的空间,将准备删除的节点标识都记录到该空间中,待该空间满后,将最先进入的节点标识删除,同时删除该节点,然后将当前待删除的节点标识记录到该空间中。
下面结合附图及具体实施例对本发明再作进一步详细的说明。
图1是本发明实施例一提供的提高多核***中的临界资源访问速度的流程图,如图1所示,其具体步骤如下:
步骤101:根据多核***的临界资源所包含的数据结构类型,为每类数据结构创建一个延迟删除队列,设定各类型的数据结构的延迟删除时长,设置一个定时器,并设置在每个定时时长内检测的节点总数A,并分别设置在每个定时时长内检测的各个延迟删除队列对应的节点总数B1、B2、...、Bn,n为延迟删除队列的数目。
对于属于同一类数据结构的各临界节点,其延迟删除时长通常设定为相同,因此,为了方便删除操作,可将属于同一类数据结构的各临界节点的临界节点标识按照准备删除的时刻的先后顺序,依次放在同一延迟删除队列中。
这里的A为根据经验确定的值,表示在每个定时时长内检测到的节点总数;B1、B2、...、Bn可根据A和延迟删除队列的总数以及各延迟删除队列的延迟删除时长确定,表示在每个定时时长内检测的各延迟删除队列对应的节点数目。例如:设定时时长为1秒,根据经验确定的A为500个,设当前延迟删除队列的数目为10,设延迟删除队列1的延迟删除时长为0.5秒,则可设置B1=120,延迟删除队列2的延迟删除时长为3秒,则可设置B2=30,...,即:可为延迟删除时长较小的延迟删除队列设定对应较大的检测节点数目,为延迟删除时长较大的延迟删除队列设定对应较小的检测节点数目。
步骤102:准备要删除临界资源的某个临界节点,将该临界节点的地址信息从临界资源的记录信息中删除,根据预先设置的该类数据结构的延迟删除时长计算该临界节点的删除时刻,根据该临界节点所属的数据结构类型,将该临界节点的地址信息和删除时刻记录到该类数据结构对应的延迟删除队列中。
多核***会保存一个临界资源记录信息,以记录临界资源所包含的所有临界节点的标识如:地址信息。为了使得正在访问该准备删除的临界节点的核能够继续访问该节点,不对该临界节点的地址进行更改,而只是将该节点的属性更改为非临界资源如:本步骤中通过将该节点的地址信息从临界资源的记录信息中删除来实现,这样,不会影响当前核对该节点的访问,同时其它核也无法再继续访问该节点。
临界节点的删除时刻等于准备删除该临界节点的时刻加上该临界节点的延迟删除时长得到的时刻。
步骤103:定时器定时开始,根据最近一次记录的下次检测开始的延迟删除队列标识,在对应的延迟删除队列中查找到本次检测的第一个临界节点的地址信息和删除时刻。
步骤104:判断该临界节点的删除时刻是否小于或等于当前***时刻,若是,执行步骤105;否则,执行步骤106。
步骤105:将该临界节点的地址信息和删除时刻从延迟删除队列中删除,并根据该临界节点的地址信息查找到该临界节点,删除该临界节点。
步骤106:记录本次定时器定时时长内已检测的临界节点的总数a以及本次定时器定时时长内已检测的当前延迟删除队列对应的临界节点数目b。
步骤107:判断a<A是否成立,若是,执行步骤109;否则,执行步骤108。
步骤108:根据当前已检测的最后一个延迟删除队列,记录下一次检测开始的延迟删除队列标识,转至步骤103。
步骤109:判断b<Bm是否成立,若是,执行步骤110;否则,执行步骤111。
Bm为预先设定的在每个定时时长内检测到当前延迟删除队列m对应的节点数目。
步骤110:开始检测当前队列对应的下一个临界节点的删除时刻,转至步骤104。
步骤111:开始检测下一个延迟删除队列对应的第一个临界节点的删除时刻,转至步骤104。
需要指出的是,步骤102与步骤103~111并无严格的先后之分,只要准备删除某个临界节点,就可执行步骤102;只要定时器定时开始,就可执行步骤103~111。
本发明中,当核确定要访问临界资源的一个临界节点时,无需判断该临界资源是否已加锁,也无需对临界资源进行加锁操作,直接访问该临界节点即可。
图2是本发明实施例二提供的提高多核***中的临界资源访问速度的流程图,如图2所示,其具体步骤如下:
步骤201:根据多核***的临界资源所包含的数据结构类型,为每类数据结构创建一个具有固定存储空间的延迟删除队列。
在为各类数据结构创建延迟删除队列时,可根据各类数据结构所需要的延迟删除时长,设置对应的延迟删除队列的存储空间的大小,即:若某类数据结构的延迟删除时长较长,则可将对应的延迟删除队列的存储空间设置得较大。
步骤202:准备要删除临界资源的某个临界节点,将该临界节点的地址信息从临界资源的记录信息中删除,根据该节点所属的数据结构类型,查找该临界节点对应的延迟删除队列。
步骤203:判断该延迟删除队列的存储空间是否已满,若是,执行步骤204;否则,执行步骤205。
步骤204:删除该延迟删除队列中的第一个临界节点即:最先进入该队列的临界节点的地址信息,同时根据该地址信息查找到该临界节点,删除该临界节点;并将当前准备删除的临界节点的地址信息记录到该延迟删除队列中,转至步骤206。
步骤205:直接将该当前准备删除的临界节点的地址信息记录到该延迟删除队列中。
步骤206:核确定要访问临界资源的一个临界节点,直接访问该临界节点。
图3是本发明实施例提供的提高多核***中的临界资源访问速度的装置组成示意图,如图3所示,其主要包括:待删除节点确定模块31和删除模块32,其中:
待删除节点确定模块31:用于在准备要删除临界资源的一个临界节点时,将该临界节点的地址信息记录到删除模块32中。
删除模块32:用于在检测到当前满足待删除节点确定模块31记录在自身的临界节点地址信息对应的临界节点的删除条件后,根据该临界节点的地址信息,查找到该临界节点,并删除该临界节点。
图4是本发明实施例一提供的提高多核***中的临界资源访问速度的装置组成示意图,如图4所示,该图与图3相比:
删除模块32主要包括:删除时刻确定模块321和删除确定模块322,其中,
删除时刻确定模块321:用于按照临界节点所属的数据结构类型对临界节点进行分类,为属于每类数据结构的临界节点设定一个延迟删除时长;根据自身保存的临界节点地址信息与数据结构类型标识的对应关系,确定待删除节点确定模块31记录在自身的临界节点地址信息对应的临界节点所属的数据结构类型,从而确定该临界节点对应的延迟删除时长,计算该临界节点的删除时刻,将该临界节点的地址信息和删除时刻记录在删除确定模块322中。
删除确定模块322:用于在检测到删除时刻确定模块321记录在自身的临界节点的删除时刻小于或等于***时刻时,删除该删除时刻,并删除该删除时刻对应的临界节点地址信息,并根据该临界节点地址信息查找到该临界节点,删除该临界节点。
如图5所示,删除确定模块322包括:延迟删除队列确定模块3221、延迟删除队列模块3222、定时器模块3223和删除指示发送模块3224,其中:
延迟删除队列确定模块3221:用于保存临界节点地址信息与临界节点所属的延迟删除队列标识的对应关系,确定删除时刻确定模块321记录在自身的临界节点地址信息对应的延迟删除队列,将该临界节点的地址信息和该临界节点的删除时刻记录在延迟删除队列模块3222中对应的延迟删除队列中。
延迟删除队列模块3222:用于为属于每类数据结构的临界节点创建一个延迟删除队列;在收到删除指示发送模块3224发来的携带延迟删除队列标识的获取删除时刻指示后,将对应的延迟删除队列中的第一个临界节点删除时刻发送给删除指示发送模块3224;在收到删除指示发送模块3224发来的携带延迟删除队列标识的删除指示后,将对应的延迟删除队列的第一个临界节点地址信息和删除时刻从该延迟删除队列中删除,并根据该临界节点的地址信息查找到临界节点,删除该临界节点。
定时器模块3223:用于在每次定时开始时,向删除指示发送模块3224发送定时开始指示。
删除指示发送模块3224:用于在收到定时器模块3223发来的定时开始指示后,根据最近一次记录的检测开始的延迟删除队列标识,向延迟删除队列模块3222获取该延迟删除队列的第一个临界节点删除时刻,若检测到该删除时刻小于或等于当前***时刻,则向延迟删除队列模块3222发送携带该延迟删除队列标识的删除指示,并在当前定时时长内已检测到的当前延迟删除队列对应的节点数目等于预先设定的在每个定时时长内检测的当前延迟删除队列对应的节点数目时,停止对当前延迟删除队列的检测,向延迟删除队列模块3222获取下一个延迟删除队列的第一个临界节点删除时刻,在当前定时时长内已检测到的节点总数等于预先设定的在每个定时时长内检测的节点总数时,停止检测,并记录下一次检测开始的位置标识。
图6是本发明实施例二提供的提高多核***中的临界资源访问速度的装置组成示意图,如图6所示,删除模块32主要包括:延迟删除队列确定模块421、延迟删除队列模块422和存储空间判断模块423,其中:
延迟删除队列确定模块421:用于保存临界节点地址信息与临界节点所属的延迟删除队列标识的对应关系,确定待删除节点确定模块31记录在自身的临界节点地址信息对应的延迟删除队列标识,将携带该延迟删除队列标识的***请求发送给存储空间判断模块423,在收到存储空间判断模块423发来的确定***指示后,将临界节点的地址信息记录到延迟删除队列模块422中对应的延迟删除队列中。
延迟删除队列模块422:用于为每类数据结构创建一个延迟删除队列,将各延迟删除队列的存储空间的变化信息发送给存储空间判断模块423,当收到存储空间判断模块423发来的携带延迟删除队列标识的删除指示后,删除最先进入该延迟删除队列的临界节点的地址信息,并删除对应的临界节点,然后向存储空间判断模块423发送删除完毕指示。
存储空间判断模块423:用于根据延迟删除队列模块422发来的各延迟删除队列的存储空间变化信息确定各延迟删除队列的存储空间,在收到延迟删除队列确定模块421发来的携带延迟删除队列标识的***请求后,判断该延迟删除队列的存储空间是否已满,若已满,则向延迟删除队列模块422发送携带该延迟删除队列标识的删除指示,在收到延迟删除队列模块422返回的删除完毕指示后,向延迟删除队列确定模块421发送确定***指示;若未满,则直接向延迟删除队列确定模块421发送确定***指示。
以上所述仅为本发明的过程及方法实施例,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。