一种多核系统的仲裁方法及多核系统的利记博彩app
【技术领域】
[0001]本发明涉及计算机技术领域,尤其涉及一种多核系统的仲裁方法及多核系统。
【背景技术】
[0002]随着电子技术的发展,如今市面上许多计算机系统都具有多个运算核心。这些运算核心通过总线共享计算机系统的内存,为了避免多个运算核心同时访问共享内存中的同一块数据而造成冲突,通常运算核心在访问共享内存之前,会向仲裁器请求锁定总线,取得总线的独占权限。在该运算核心锁定总线的期间内,其他运算核心无法执行总线操作,即使这段时间内锁定总线的运算核心并没有访问共享内存,其他运算核心也无法通过总线访问共享内存。
[0003]以上方法虽然能很好地避免由于多个运算核心同时访问共享内存而造成的冲突问题,但是也会导致其他运算核心对共享内存的访问无法及时得到响应,降低整个计算机系统的并发性能。
【发明内容】
[0004]本发明实施例提供了一种多核系统的仲裁方法及多核系统,可提高共享内存在被占用时的吞吐量以及多核系统的并发性能。
[0005]本发明实施例第一方面提供了一种多核系统的仲裁方法,所述多核系统包括至少两个运算核心,所述至少两个运算核心通过总线连接所述多核系统的共享内存;所述方法可包括:
[0006]将所述共享内存划分为至少两片共享区域;
[0007]接收一个运算核心发送的第一访问请求,其中所述第一访问请求中携带第一访问地址;
[0008]查询所述至少两片共享区域的锁定记录,若所述锁定记录中所述第一访问地址对应的第一共享区域的占用状态是未锁定状态,而且所述第一访问请求为锁定请求,则把所述第一共享区域锁定为仅能被所述一个运算核心非只读访问。
[0009]结合第一方面,在第一种可行的实施方式中,所述锁定所述第一共享区域之后,所述方法还包括:
[0010]接收另一个运算核心发送的第二访问请求,其中所述第二访问请求中携带第二访问地址,且所述第二访问请求不是只读请求;
[0011]若所述第二访问地址对应的第二共享区域的占用状态是未锁定状态,则允许所述另一个运算核心访问所述第二访问地址。
[0012]结合第一方面,在第二种可行的实施方式中,所述接收一个运算核心发送的第一访问请求之前,所述方法还包括:
[0013]记录所述至少两片共享区域中至少一片共享区域的占用状态,其中所述占用状态包括锁定状态或未锁定状态;
[0014]所述把所述第一共享区域锁定为仅能被所述一个运算核心非只读访问之后,所述方法还包括:
[0015]更新所述第一共享区域的占用状态为锁定状态,并将锁定所述第一共享区域的运算核心的标识更新为所述一个运算核心的标识。
[0016]结合第一方面的第二种可行的实施方式,在第三种可行的实施方式中,所述记录所述至少两片共享区域中至少一片共享区域的占用状态之后,所述方法还包括:
[0017]若所述至少一片共享区域的占用状态是锁定状态,记录锁定所述至少一片共享区域的至少一个运算核心的标识;
[0018]所述查询所述至少两片共享区域的锁定记录之后,所述方法还包括:
[0019]若所述锁定记录中所述第一共享区域的占用状态是锁定状态,则判断锁定所述第一共享区域的运算核心的标识与所述一个运算核心的标识是否相同;
[0020]若锁定所述第一共享区域的运算核心的标识与所述一个运算核心的标识相同,则允许所述一个运算核心访问所述第一访问地址。
[0021]结合第一方面,在第四种可行的实施方式中,所述查询所述至少两片共享区域的锁定记录之后,所述方法还包括:
[0022]判断是否记录有所述第一共享区域的占用状态;
[0023]若未记录有所述第一共享区域的占用状态,则判断所述第一访问请求是否为锁定请求;
[0024]若所述第一访问请求不是锁定请求,则在所述第一访问请求为只读请求时允许所述一个运算核心访问所述第一访问地址;
[0025]若所述第一访问请求是锁定请求,则拒绝所述第一访问请求。
[0026]结合第一方面,在第五种可行的实施方式中,所述接收一个运算核心发送的第一访问请求之后,所述方法还包括:
[0027]判断所述第一访问请求是否为解锁请求,若是,则解锁所述第一共享区域,并更新所述第一共享区域的占用状态为未锁定状态。
[0028]结合第一方面,在第六种可行的实施方式中,所述接收一个运算核心发送的第一访问请求之后,所述方法还包括:
[0029]根据所述第一访问地址以及每片共享区域对应的地址范围,确定所述第一访问地址对应的第一共享区域。
[0030]本发明实施例第二方面提供了一种多核系统,所述多核系统包括仲裁器以及至少两个运算核心,所述至少两个运算核心通过总线连接所述多核系统的共享内存;所述仲裁器用于:
[0031]将所述共享内存划分为至少两片共享区域;
[0032]接收一个运算核心发送的第一访问请求,其中所述第一访问请求中携带第一访问地址;以及,
[0033]查询所述至少两片共享区域的锁定记录,在所述锁定记录中所述第一访问地址对应的共享区域的占用状态是未锁定状态,而且所述第一访问请求为锁定请求时,把所述第一共享区域锁定为仅能被所述一个运算核心非只读访问。
[0034]结合第二方面,在第一种可行的实施方式中,所述仲裁器还用于:
[0035]接收另一个运算核心发送的第二访问请求,其中所述第二访问请求中携带第二访问地址,且所述第二访问请求不是只读请求;以及,
[0036]在所述第二访问地址对应的第二共享区域的占用状态是未锁定状态时,允许所述另一个运算核心访问所述第二访问地址。
[0037]结合第二方面,在第二种可行的实施方式中,所述仲裁器还用于:
[0038]在接收所述一个运算核心发送的第一访问请求之前,记录所述至少两片共享区域中至少一片共享区域的占用状态,其中所述占用状态包括锁定状态或未锁定状态;以及,
[0039]在把所述第一共享区域锁定为仅能被所述一个运算核心非只读访问之后,更新所述第一共享区域的占用状态为锁定状态,并将锁定所述第一共享区域的运算核心的标识更新为所述一个运算核心的标识。
[0040]结合第二方面的第一种可行的实施方式,在第三种可行的实施方式中,所述仲裁器还用于:
[0041]在记录所述至少两片共享区域中至少一片共享区域的占用状态之后,若所述至少一片共享区域的占用状态是锁定状态,记录锁定所述至少一片共享区域的至少一个运算核心的标识;
[0042]在查询所述至少两片共享区域的锁定记录之后,若所述锁定记录中所述第一共享区域的占用状态是锁定状态,则判断锁定所述第一共享区域的运算核心的标识与所述一个运算核心的标识是否相同;以及,
[0043]若锁定所述第一共享区域的运算核心的标识与所述一个运算核心的标识相同,则允许所述一个运算核心访问所述第一访问地址。
[0044]结合第二方面,在第四种可行的实施方式中,所述仲裁器还用于:
[0045]在查询所述至少两片共享区域的锁定记录之后,判断是否记录有所述第一共享区域的占用状态;
[0046]若未记录有所述第一共享区域的占用状态,则判断所述第一访问请求是否为锁定请求;
[0047]若所述第一访问请求不是锁定请求,则在所述第一访问请求为只读请求时允许所述一个运算核心访问所述第一访问地址;以及
[0048]若所述第一访问请求是锁定请求,则拒绝所述第一访问请求。
[0049]结合第二方面,在第五种可行的实施方式中,所述仲裁器还用于:
[0050]在接收所述一个运算核心发送的第一访问请求之后,判断所述第一访问请求是否为解锁请求;若是,则解锁所述第一共享区域,并更新所述第一共享区域的占用状态为未锁定状态。
[0051]结合第二方面,在第六种可行的实施方式中,所述仲裁器还用于:
[0052]在接收所述一个运算核心发送的第一访问请求之后,根据所述第一访问地址以及每片共享区域对应的地址范围,确定所述第一访问地址对应的第一共享区域。
[0053]本发明实施例中,将共享区域划分为至少两片共享区域,接收一个运算核心发送的第一访问请求,并查询所述至少两片共享区域的锁定记录,当第一访问请求为锁定请求且锁定记录中第一访问请求携带的第一访问地址对应的第一共享区域处于未锁定状态时,可以锁定第一共享区域以使所述第一共享区域仅能被所述一个运算核心进行非只读访问,而无需独占整个总线。采用此方法,当其他运算核心请求访问共享内存时,只要其他运算核心请求访问的地址与锁定的第一共享区域不冲突,仍然可以允许其他运算核心同时访问共孚内存,从而可以提尚共孚内存在被占用时的吞吐量以及多核系统的并发性能。
【附图说明】
[0054]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图