实现多入多出队列的方法和设备技术

技术编号:9596599 阅读:131 留言:0更新日期:2014-01-23 02:08
本发明专利技术公开了一种实现多入多出队列的方法和设备,属于计算机应用软件技术领域,一种实现多入多出队列的方法,包括以下步骤:S1.将队列的存储空间进行分组,N个表项分为一组,N个表项中,第一个表项存储这一组表项中有效的表项数目,有效值是0到(N-1),其余(N-1)个表项存储生产者的数据,其中N为大于等于1的整数。本发明专利技术的有益效果如下:提高了单位生产和消费者问题的效率。最大限度的降低了多核环境下自旋锁这一性能瓶颈对队列操作的影响,提高了多核环境下的队列性能,进而提高了整个多核系统的性能。

【技术实现步骤摘要】
多核系统中实现多入多出队列的方法和设备
本专利技术涉及计算机应用软件
,尤其涉及一种实现多入多出队列的方法和设备。
技术介绍
在系统软件中,通常使用队列作为不同模块间共享数据的媒介。因此,队列通常是被多个软件模式使用的,不同的软件模块在使用队列时都需要进行互斥,以保证队列的完整性。随着多核技术的发展,多核系统中的核间通信通常也采用队列技术,因为队列技术比较简单高效,但是随着多核系统中核数目的增多,队列的访问者也随之增加,核与核之间都需要互斥的访问队列,但是多核系统中类似自旋锁之类的互斥手段会随着竞争的增加,效率会下降的非常快,最终导致队列的效率变得非常低。传统的队列技术,如图1所示,会使用一个队列头指针和队列尾指针,头指针用于入队操作,尾指针用于出队操作,在入队操作时,判断头指针加1后是否和尾指针相等,如果相等,表明队列已满,不能入队,如果不相等,表明队列未满,可以入队,入队后,头指针加1。出队操作判断尾指针和头指针是否相等,如果相等,表明队列为空,不能出队,如果不相等,表明队列有表项,可以出队,出队后,将尾指针加1。队列在多核环境下使用时,由于存在多个核同时操作队列,需要在入队操作和出队操作时添加锁进行互斥。传统队列技术的实现存在以下问题:为了在多核间互斥,所有操作都是锁起来的。在多核系统中,由于竞争带来的自旋锁消耗会使自旋锁效率严重降低,特别是随着众核(通常指含有8个以上CPU)的普及,核的数目增加后,这种效率成指数级下降。队列技术是核间进行通信的首要选择,但是传统的队列技术由于需要自旋锁作为保护手段,在多核环境下使用时,性能并不高,迫切需要设计一种新的队列,在多核环境下保持高性能。要提高队列的性能,重点提高的是自旋锁的性能,而提高自旋锁的性能,重点在于减小自旋锁的冲突概率,以及自旋锁保护的范围。在经典的生产者消费者环境中,如图2所示,生产者向队列中添加表项,消费者从队列取出表项。生产者完成一个操作分为两个部分,一个是完成生成流程(pt1),另一个是完成添加队列的流程(pt2)。多个生产者在pt2的过程中需要互斥的访问队列,这个操作会发生竞争队列的情况。消费者同理,也分为两个流程,一个是从队列中取表项(ct1),另一个是使用该表项(ct2)。多个消费者会在ct1的时间段中互斥的访问队列。对于需要被多个模块访问的队列,被共享访问,就意味着竞争是必然存在的,而当今的计算机架构,多核间的随着竞争者的增加性能会急剧下降,大量的时间会消耗在获取自旋锁上,这个问题是计算机体系架构决定的,无法改变。因此,为了提高在多核环境下队列的性能,需要一种新的队列,减小竞争带来的额外开销。
技术实现思路
本专利技术的目的在于改善多核环境下计算机性能低下的现状而提出的多核系统中多入多出队列的实现方法和设备。为了实现以上专利技术目的,本专利技术采取的技术方案如下:一种多核系统中实现多入多出队列的方法,包括以下步骤:S1.将队列的存储空间进行分组,N个表项分为一组,N个表项中,第一个表项存储这一组表项中有效的表项数目,有效值是0到(N-1),其余(N-1)个表项存储生产者的数据,其中N为大于等于1的整数;S2.生产者和消费者操作队列的基本单位是一组N个表项,当生产者有M个表项要加入时,队列也是分配一组N个表项,其中M小于等于(N-1);入队时,一次性将M个表项填入队列,最后再将M填入到第一个表项中,表示表项填入完成;S3.出队时,一次性从队列中出队一组N个表项,首选从第一个表项中查看有效的表项个数,在完成有效表项出队之后,将队列中的第一个表项清零,表示出队完成。进一步的,入队时通过以下公式判断队列满:头指针+N=尾指针;如果相等,表明队列已满,不能入队,如果不相等,表明队列未满,可以入队,入队后,头指针加N。进一步的,出队时通过以下公式判断队列空:尾指针=头指针;如果相等,表明队列为空,不能出队,如果不相等,表明队列有表项,可以出队,出队后,将尾指针加N。进一步的,出队和入队时还需要通过每组表项中的表项个数判断能否出队或者入队。进一步的,入队时,需要判断下一组表项的表项个数是否为0,为0即可入队。进一步的,出队时,需要判断下一组表项的表项个数是否不为0,不为0即可出队。进一步的,所述的S2中,生产者和消费者最多一次性进行(N-1)次生产和消费操作,然后批量入队数据和批量出队数据。为了解决上述问题,本专利技术还提出了一种多核系统中实现多入多出队列的设备,队列的存储空间至少包括一个分组,其中,N个表项为一组,N个表项中的第一个表项用于存储这一组表项中有效的表项数目,有效值是0到(N-1),其余(N-1)个表项用于存储生产者的数据,其中N为大于等于1的整数。进一步的,队列存储空间包括四个分组,每组有四个表项。进一步的,所述的四个表项中第一个表项用于存储这一组表项中有效的表项数目3,其余3个表项用于存储生产者的数据。本专利技术的有益效果:本专利技术首先将队列进行分组改造,同时将第一个表项用于存储分组有效数量以支持批量操作的需要,然后修改传统队列的入队和出队操作,将自旋锁的保护仅仅限于头部和尾部指针的移动,实现了自旋锁保护的范围和操作的表项完全无关;最后生产者消费者的流程在支持批量操作的队列环境下,可以实现批量生产和批量消费,达到延长生产和消费时间,减小同时竞争队列的几率,提高了队列的性能,最终提高了单位生产和消费者问题的效率,最大限度的降低了多核环境下自旋锁这一性能瓶颈对队列操作的影响,提高了多核环境下的队列性能,进而提高了整个多核系统的性能。附图说明图1为传统队列存储空间结构示意图;图2为生产者消费者环境中传统队列出队入队示意图;图3为本专利技术的队列存储空间结构示意图;图4为本专利技术具体实施例1的队列出队入队示意图;图5为本专利技术具体实施例2的队列出队入队示意图。具体实施方式为使本专利技术的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本专利技术做进一步详细说明。一种多核系统中实现多入多出队列的方法,包括以下步骤:S1.将队列的存储空间进行分组,N个表项分为一组,N个表项中,第一个表项存储这一组表项中有效的表项数目,有效值是0到(N-1),其余表项用于存储生产者的数据,其中N为大于等于1的整数。S2.生产者和消费者操作队列的基本单位是一组N个表项,其中(N-1)用于保存生产者的数据。即使生产者只有M(M小于等于(N-1))个表项要加入,队列也是分配一组N个表项。因此,生产者在生产阶段最多可以连续进行(N-1)次生产操作,产生多个表项,时间为M*pt1。入队时,一次性将M个表项填入队列,最后再将M填入到第一个表项中(第一个表项表示有效的表项个数),以此表示表项填入完成。S3.出队者一次性从队列中出队一组N个表项,首选从第一个表项中查看有效的表项个数,在完成有效表项出队之后,将队列中的第一个表项清零,表示出队完成。相对于传统队列使用自旋锁保护整个操作过程,本专利技术中,自旋锁只保护头(head)指针和尾(tail)指针的移动过程,对于表项的写入和读取不进行保护,而head和tail指针不是操作一个表项移动一次,而是一次性移动N个位置,只有一次操作,因此操作者持有自旋锁的时间和操作的表项个数无关,自旋锁保护的范围大大减小。当有多个入本文档来自技高网
...
实现多入多出队列的方法和设备

【技术保护点】
一种实现多入多出队列的方法,其特征在于,包括以下步骤:S1.将队列的存储空间进行分组,N个表项分为一组,N个表项中,第一个表项存储这一组表项中有效的表项数目,有效值是0到(N?1),其余(N?1)个表项存储生产者的数据,其中N为大于等于1的整数;S2.生产者和消费者操作队列的基本单位是一组N个表项,当生产者有M个表项要加入时,队列也是分配一组N个表项,其中M小于等于(N?1);入队时,一次性将M个表项填入队列,最后再将M填入到第一个表项中,表示表项填入完成;S3.出队时,一次性从队列中出队一组N个表项,首选从第一个表项中查看有效的表项个数,在完成有效表项出队之后,将队列中的第一个表项清零,表示出队完成。

【技术特征摘要】
1.一种多核系统实现多入多出队列的方法,其特征在于,包括以下步骤:S1.将队列的存储空间进行分组,N个表项分为一组,N个表项中,第一个表项存储这一组表项中有效的表项数目,有效值是0到(N-1),其余(N-1)个表项存储生产者的数据,其中N为大于等于1的整数;S2.生产者和消费者操作队列的基本单位是一组N个表项,当生产者有M个表项要加入时,队列也是分配一组N个表项,其中M小于等于(N-1);入队时,一次性将M个表项填入队列,最后再将M填入到第一个表项中,表示表项填入完成;S3.出队时,一次性从队列中出队一组N个表项,首选从第一个表项中查看有效的表项个数,在完成有效表项出队之后,将队列中的第一个表项清零,表示出队完成。2.根据权利要求1所述的方法,其特征在于,入队时通过以下公式判断队列满:头指针+N=尾指针;如果相等,表明队列已满,不能入队,如果不相等,表明队列未满,可以入队,入队后,头指针加N。3.根据权利要求1或2所述的方法,其特征在于,出队时通过以下公式判断队列空:尾指针=头指针;如果相等,表明队列为空,不能出队,如果不相等,表明队列有表项,可以出队,出队后,将尾指针加N。4.根据权利要求3所述的方法,其特征在于,...

【专利技术属性】
技术研发人员:曾健
申请(专利权)人:迈普通信技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1