队列管理方法和队列管理器、队列消息的处理方法和系统的制作方法

文档序号:6612506阅读:219来源:国知局
专利名称:队列管理方法和队列管理器、队列消息的处理方法和系统的制作方法
技术领域
本发明涉及计算机技术,特别是涉及一种队列管理方法和队列管理器、 队列消息的处理方法和系统。
背景技术
在大规模并行计算机网络系统中,共享存储和消息传递是并行计算的两 个主要编程模型。通常,系统包含有多个节点,每个节点内有多个处理器
(CPU),节点内存储器为分布共享存储器结构,因此,节点内的CPU可以直 接读写本节点内的所有存储器(即共享存储)的数据;而当一个节点的CPU
要访问另一个节点的存储器时,需要通过消息传递来实现。
采用队列消息是实现一个节点的CPU向另一个节点的存储器写入数据的 一种方式,队列消息是将源存储空间上的数据发送到目的方指定的队列上, 队列是预先分配(一般是由软件配置)的一段连续的存储器的物理空间或虚 空间,队列的基本单位即用于存^:一个队列元素的存储空间称为元素空间。
通常来说,队列消息的目的方(即接收方)的队列采用的是循环队列, 接收方通过队列管理器和软件管理队列队列的基地址、队列容量、队列属 性等信息可以由软件初始化配置;在队列元素的生产(即写入数据)后通过 队列管理器修改队列尾指针;在队列元素的消费(即读取数据)后通过软件 修改队列头指针。在申请号为200610057353.0的中国发明专利申请中可以找到 有关队列及其数据存储方法的信息。
在队列消息传递时,发送方并不知道目的队列的地址,只需要知道一个 队列号,并发送包含有队列号和队列元素的队列消息;当接收方的队列管理 器接收到队列消息时,根据队列的初始化配置和发送方发送的队列号,向队
9列所在的存储器发送对应的包含有待写入的数据和待写入数据的元素空间的 地址的写请求,收到存储器返回的写结束确认后将队列尾指针加一,以指示
队列最新空闲的元素空间;进程在队列头指针的指示下消费队列,每次取走 队列的一部分队列元素后,根据消费的队列元素的数量更新队列头指针,以 指示队列中下 一个可消费的元素空间。
进程可使用中断或查询方式消费队列,无论釆用哪种方式,都要先读取 队列管理器中相应队列的头指针和尾指针,判断队列中有多少队列元素可以 消费以及队列头元素的位置(可消费的数据的首地址),然后读取相应元素 空间的队列元素。这就存在队列尾指针的更新和消息数据写入队列的元素空 间两者之间的同步问题,在队列管理中,必须保证消息数据已写入队列的元 素空间后,才能修改队列尾指针,以确保头指针和尾指针之间的队列元素可 以消费,即进程能够访问到有效的数据。
然而,在采用多处理器和分布共享存储器的并行计算机网络系统中,由 于存储器的分布特性,或者,由于要支持置无效、写更新等緩存(CACHE) 一致性协议,写结束确认的返回顺序一般和写请求的发送顺序不一致,也就 是说,写请求不是顺序执行,而是乱序执行,这样就限制了队列消息的应用, 队列管理器无法根据收到的写结束确认所包含的元素空间的地址来按序对队 列尾指针加一。
为了使队列管理器根据收到的写结束确认所包含的元素空间的地址来按 序对队列尾指针加一,就需要保证队列的写请求是顺序执行。 一种解决方法 是串行执行写请求,队列管理器要收到上一个写请求的写结束确认后,才开 始处理新的写请求,这种方法降低了队列消息的传送效率。
另一种解决方法由硬件和软件共同保证写请求的顺序执行,例如硬件确 保写请求和写结束确认在通路上按序流动(即写结束确认的返回顺序和写请
求的发送顺序一致),软件则限制队列的存储空间为不可緩存空间,确保队
10列的存储空间无緩存一致性问题。采用硬件和软件结合的方法不仅不利于编 程,也限制了硬件的实现。

发明内容
本发明解决的问题是,提供一种队列管理方法和队列管理器、队列消息 的处理方法和系统,不需要顺序执行写请求就能保证队列尾指针的更新和数 据写入队列的元素空间的同步,因而扩大了队列消息的应用范围。
为解决上述问题,本发明提供一种队列管理方法,包括下述步骤 初始设置队列指针和队列计数器,所述队列指针包括头指针、虚尾指针
和实尾指针,所述头指针和实尾指针之间的元素空间为可消费的队列空间; 发送对应于接收到的队列消息的写请求,并根据发送的写请求的数量累
加虚尾指针;
根据接收到的写结束确认更新队列计数器,并根据所述写结束确认所包 含的元素空间的地址和更新后的队列计数器更新实尾指针。
可选的,所述初始设置队列指针和队列计数器包括在系统初始状态时, 将队列指针指向队列的第 一个元素空间的位置,将队列计数器清零。
在本发明的一种实施方式中,所述队列指针还包括最大捕获尾指针,指 向已写入数据的最后一个元素空间的后一元素空间的位置;所述队列计数器 为最大捕获写结束计数器,对所述最大捕获尾指针和实尾指针之间已写入数 据的元素空间的数量进行计数。
所述根据接收到的写结束确认更新队列计数器,并根据所述写结束确认 所包含的元素空间的地址和更新后的队列计数器更新实尾指针,包括下述步 骤
根据接收到的写结束确认的数量,累加最大捕获写结束计数器的计数值; 从接收到的写结束确认中获取已写入数据的元素空间的地址; 在所述获取的元素空间的地址大于或等于最大捕获尾指针的值时,将最大捕获尾指针指向所述已写入数据的元素空间的后 一元素空间的位置;
在所述最大捕获尾指针与实尾指针的差值等于最大捕获写结束计数器的
计数值时,将实尾指针指向最大捕获尾指针所指向的位置:并将最大捕获写
结束计数器清零。
所述队列管理方法还包括在虚尾指针和实尾指针的差值大于或等于预 设的最大消息处理量时,阻塞新的队列消息直到实尾指针被更新,或者,丟 弃新的队列消息并发送队列消息的失败确认给所述新的队列消息的发送方。
在本发明的另一种实施方式中,所述队列指针还包括第一捕获尾指针和 最大捕获尾指针,所述最大捕获尾指针指向已写入数据的最后一个元素空间 的后一元素空间的位置,所述第一捕获尾指针在收到写结束确认并且实尾指 针的值等于第一捕获尾指针的值时指向对应于所述写结束确认的元素空间的 后一元素空间的位置;所述队列计数器包括对最大捕获尾指针和第一捕获尾 指针之间已写入数据的元素空间的数量进行计数的最大捕获写结束计数器和 对第一捕获尾指针和实尾指针之间已写入数据的元素空间的数量进行计数的 第一捕获写结束计数器。
所述根据所述写结束确认更新队列计数器,并根据所述写结束确认所包 含的元素空间的地址和更新后的队列计数器更新实尾指针,包括下述步骤
从接收到的写结束确认中获取已写入数据的元素空间的地址;
在实尾指针的值等于第一捕获尾指针的值时,将第一捕获尾指针、最大 捕获尾指针指向所述已写入数据的元素空间的后一元素空间的位置,并将第 一捕获写结束计数器加一;
在实尾指针的值不等于第一捕获尾指针的值并且所述获取的元素空间的 地址大于或等于第一捕获尾指针的值时,将最大捕获写结束计数器加一;
在实尾指针的值不等于第一捕获尾指针的值并且所述获取的元素空间的 地址小于第一捕获尾指针的值时,将第一捕获写结束计数器加一;
12在实尾指针的值不等于第一捕获尾指针的值并且在所述获取的元素空间 的地址大于或等于最大捕获尾指针的值时,将最大捕获尾指针指向所述已写
入数据的元素空间的后一元素空间的位置;
在第一捕获写结束计数器更新后并且第一捕获尾指针与实尾指针的差值 等于第一捕获写结束计数器的计数值时,将实尾指针指向第一捕获尾指针所 指向的位置,再将第一捕获尾指针指向最大捕获尾指针所指向的位置,将第 一捕获写结束计数器的计数值设为最大捕获写结束计数器的计数值,再将最 大捕获写结束计数器清零。
对应于上述队列管理方法,本发明还提供一种队列管理器,包括
队列指针寄存器,储存队列指针,所述队列指针包括头指针、虚尾指针 和实尾指针,所述头指针和实尾指针之间的元素空间为可消费的队列空间;
队列计数器,对已写入彩:据的元素空间的数量进行计数;
设置单元,初始设置队列指针寄存器和队列计数器;
发送单元,发送对应于接收到的队列消息的写请求,并根据发送的写请 求的数量累加虚尾指针;
更新单元,根据接收到的写结束确认更新队列计数器,并根据所述写结 束确认所包含的元素空间的地址和更新后的队列计it器更新实尾指针。
为解决上述问题,本发明还提供一种队列消息的处理方法,包括下述步

发送方向4妄收方发送访问接收方的队列存储器的队列消息;
接收方的队列管理器在接收到队列消息后,向接收方的队列存储器发送
对应于所述队列消息的写请求,并根据发送的写请求的数量累加队列管理器
的虚尾指针;
接收方的队列存储器在接收到写请求后,将写请求中的数据写入对应的 元素空间,并向所述接收方的队列管理器返回对应的写结束确认;接收方的队列管理器在接收到写结束确认后,根据所述写结束确认更新 队列管理器的队列计数器,并根据所述写结束确认所包含的元素空间的地址
和更新后的队列计数器更新队列管理器的实尾指针; 、
接收方的队列管理器根据所述写结束确认,向发送方返回对应的队列消 息的确i人。
对应于上述队列消息的处理方法,本发明还提供一种队列消息的处理系 统,包括发送方和接收方,所述接收方包括队列存储器和队列管理器,其中,
所述发送方,向接收方发送访问接收方的队列存储器的队列消息,并接 收所述接收方返回的对应的队列消息的确认;
所述队列存储器,接收所述队列管理器发送的写请求,将写请求中的数 据写入对应的元素空间,并向所述队列管理器返回对应的写结束确认;
所述队列管理器,接收所述发送方发送的队列消息、向所述队列存储器 发送对应于所述队列消息的写请求、并根据发送的写请求的数量累加虚尾指 针,接收所述队列存储器返回的写结束确认、根据所述写结束确认更新队列 计数器、并根据所述写结束确认所包含的元素空间的地址和更新后的队列计 数器更新实尾指针,根据所述写结束确认,向发送方返回对应的队列消息的 确认。
与现有技术相比,上述技术方案设置了头指针、虚尾指针、实尾指针和 队列计数器,根据接收的写结束确认更新队列计数器,并且根据写结束确认 所包含的元素空间的地址和更新后的队列计数器更新实尾指针,这样,头指 针和实尾指针之间的元素空间表示可消费的队列空间;实尾指针和虚尾指针 之间的元素空间表示不可消费的队列空间。因此,即使写结束确认的返回顺 序和存储器写请求的发送顺序不一致,也能保证队列尾指针(实尾指针)的 更新和数据写入队列的元素空间的同步,因而扩大了队列消息的应用范围。


14图1是本发明第一实施方式的队列管理方法的指针设置的流程图2是图1所示的队列管理方法的实例图3是本发明第一实施方式的队列管理器的结构示意图4是本发明第二实施方式的队列管理方法的指针设置的流程图5是图4所示的队列管理方法的实例图6是本发明第二实施方式的队列管理器的结构示意图7是本发明实施方式的队列消息的处理方法的流程图。
具体实施例方式
本发明实施方式增加了队列指针和队列计数器,并根据写结束确认更新 队列计数器,并根据所述写结束确认所包含的元素空间的地址和队列计数器 更新实尾指针,以确保头指针和实尾指针之间的元素空间为可消费的队列空 间。因此,即使写结束确认的返回顺序和写请求的发送顺序不一致,也能保 证队列尾指针的更新和数据写入队列的元素空间的同步。
本发明实施方式的队列管理方法包括下述步骤
初始设置队列指针和队列计数器,所述队列指针包括头指针、虚尾指针 和实尾指针;
发送对应于接收到的队列消息的写请求,并根据发送的写请求的数量累 加虚尾指针;
根据接收到的写结束确认更新队列计数器,并根据所述写结束确认所包 含的元素空间的地址和更新后的队列计数器更新实尾指针,所述头指针和实 尾指针之间的元素空间为可消费的队列空间。
本发明实施方式的队列管理器包括
队列指针寄存器,储存队列指针,所述队列指针包括头指针、虚尾指针 和实尾指针;
队列计数器,对已写入数据的元素空间的数量进行计数;设置单元,初始设置队列指针寄存器和队列计数器;
发送单元,发送对应于接收到的队列消息的写请求,并根据发送的写请 求的数量累加虚尾指针; _
更新单元,根据接收到的写结束确认更新队列计数器,并根据所述写结 束确认所包含的元素空间的地址和更新后的队列计数器更新实尾指针,所述 头指针和实尾指针之间的元素空间为可消费的队列空间。
下面即结合附图对本发明的实施方式做详细的说明。 第一实施方式
本实施方式的队列管理方法设置了四个队列指针和一个队列计数器,所 述队列指针包括头指针(hp, Head Pointer )、实尾指针(tp, Real Tail Pointer )、 虚尾指针(v_tp, Virtual Tail Pointer)和最大捕获尾指针(mc_tp, Maximal Capture Tail Pointer )。所述队列计数器为最大捕获写结束计数器(mc—cnt, Maximal Capture End Counter )。
所述头指针和实尾指针之间的元素空间为可消费的队列空间,头指针指 向可消费的队列头元素所在的元素空间的位置,实尾指针指向可消费的队列 尾元素所在的元素空间的后一元素空间的位置。所述虚尾指针指向最后一个 写请求的待写入数据的元素空间的后一元素空间的位置,实尾指针和虚尾指 针之间的元素空间为不可消费的队列空间,包括至少一个没有写入数据的元 素空间。初始状态时,头指针、实尾指针和虚尾指针都设置为指向队列的第 一个元素空间的位置。
所述最大捕获尾指针指向已写入数据的最后 一个元素空间的后一元素空 间的位置。初始状态时,最大捕获尾指针设置为指向队列的第一个元素空间 的位置,随着写结束确认的返回,最大捕获尾指针根据写结束确认所包含的 元素空间的地址更新。
所述最大捕获写结束计数器,对最大捕获尾指针和实尾指针之间已写入
16数据的元素空间的数量进行计数。
本实施方式的队列管理方法包括初始化流程、队列消息处理流程和指 针设置流程。
所述初始化流程包括初始配置队列,初始设置队列指针和队列计数器。 在系统初始状态时,在系统存储器空间中为队列配置数据的存储空间,完成 对队列的基地址、容量、空间属性和访问权限等属性的定义,将头指针、实 尾指针、虚尾指针和最大捕获尾指针都指向队列的第一个元素空间的位置, 将最大捕获写结束计数器清零。本实施方式中,头指针、实尾指针、虚尾指 针和最大捕获尾指针的值是相对于队列的基地址的偏移量。
在初始化流程后,可以并行执行队列消息处理流程和指针设置流程,也 可以串行执行队列消息处理流程和指针设置流程。
所述队列消息处理流程包括在接收到队列消息后,发送对应于所述队 列消息的写请求,再根据发送的写请求的数量,累加虚尾指针,即更新虚尾 指针。本实施方式中,写请求包含待写入的数据和待写入数据的元素空间的 地址,所述待写入数据的元素空间的地址是根据队列的基地址和更新前的虚 尾指针的值得到的。
所述指针设置流程如图1所示
步骤Sll,在接收到写结束确认后,根据接收到的写结束确认的数量,累 加最大捕获写结束计数器的计数值,即更新最大捕获写结束计数器。在数据 写入所述待写入数据的元素空间后,将接收到存储器返回的包含元素空间的 地址的写结束确认。
步骤S12,从接收到的写结束确认中获取已写入数据的元素空间的地址。 在接收到写结束确认后,获取写结束确认所包含的元素空间的地址,该地址 即为已写入数据的元素空间的地址。本实施方式中,写结束确认所包含的元 素空间的地址是相对于队列的基地址的偏移量。上述步骤Sll和S12的顺序并不以本实施方式所述的顺序为限,也可以 先执行步骤S12,再执行步骤Sll。
步骤S13,判断所述从接收到的写结束确认中获取的元素空间的地址是否 大于或等于最大捕获尾指针的值若是,则执行步骤S14,若否,则执行步骤 S15。
步骤S14,所述获取的元素空间的地址大于或等于最大捕获尾指针的值, 则更新最大捕获尾指针,将最大捕获尾指针的值设为所述获取的元素空间的 地址加一 ,即将最大捕获尾指针指向所述已写入数据的元素空间的后一元素 空间的位置。
步骤S15,所述获取的元素空间的地址小于最大捕获尾指针的值,则判断 最大捕获尾指针与实尾指针的差值是否等于最大捕获写结束计数器的计数 值若是,则执行步骤S16,若否,则执行步骤Sll。
步骤S16,更新实尾指针,即将实尾指针指向最大捕获尾指针所指向的位 置,并将最大捕获写结束计数器清零,继续执行步骤Sll。当步骤S15的判断 结果为最大捕获尾指针与实尾指针的差值等于最大捕获写结束计数器的计数 值时,实尾指针和最大捕获尾指针之间的元素空间已写满数据,成为可消费 的队列空间,因此,将实尾指针的值更新为最大捕获尾指针的值,最大捕获 写结束计数器清零,以重新对最大捕获尾指针和实尾指针之间已写入数据的 元素空间的数量进行计数。
当对应于写请求的写结束确认都已返回,说明已发送的写请求都处理完
成,队列消息的数据都写入了对应的元素空间,实尾指针的值等于虚尾指针 的值。
另外,在上述的指针设置流程中,可能会因为最大捕获尾指针的不断更 新而出现实尾指针和最大捕获尾指针之间的元素空间长时间无法写满数据, 实尾指针无法根据最大捕获尾指针更新,队列无法消费的情况。为了保证实
18尾指针和最大捕获尾指针之间的元素空间能够写满数据,本实施方式还设置 最大消息处理量。
因此,上述队列消息处理流程还可以包括,在接收到新的队列消息时,
判断虛尾指针和实尾指针的差值是否大于或等于预设的最大消息处理量
若虚尾指针和实尾指针的差值大于或等于预设的最大消息处理量,则阻 塞(不处理)所述新的队列消息,直到实尾指针被更新再对接收到的队列消 息进行处理;
或者,若虚尾指针和实尾指针的差值大于或等于预设的最大消息处理量, 则丟弃所述新的队列消息,并发送队列消息的失败确认给所述队列消息的发 送方,通知发送方重新发送队列消息。
若虚尾指针和实尾指针的差值小于预设的最大消息处理量,则继续对接 收到的队列消息进行处理。
下面以一个实例对本实施方式的队列管理方法进行说明,设定最大消息 处理量为8,头指针、实尾指针、虚尾指针、最大捕获尾指针、最大捕获写结 束计数器和队列的元素空间的变化如图2所示
(2-1)系统处于初始状态时,头指针hp、实尾指针tp、虚尾指针v—tp、 最大捕获尾指针mc—tp、最大捕获写结束计数器mc—cnt的初始值都为0。
(2-2)接收到来自多个远程进程的访问同一条队列的8个队列消息,将 虚尾指针v—tp的值置为8。向存储器发送8个写请求,定义为MemW0、 MemWl ... MemW7 ,分别对队列的元素空间0 7写入数据。
(2-3 )接收到对应写请求MemW3的写结束确认,更新最大捕获尾指针 mc—tp的值为4,更新最大捕获写结束计数器mc一cnt的计数值为1。
(2-4)分别接收到对应写请求MemWl、 MemW2、 MemW6的写结束确 认,更新最大捕获尾指针mc一tp的值为7,更新最大捕获写结束计数器mc一cnt 的计数值为4。
19(2-5 )接收到对应写请求MemW0的写结束确认,更新最大捕获写结束 计数器mc—cnt的计数^f直为5。
(2-6)接收到访问该队列的2个队列消息,由于虚尾指针和实尾指针的 差值等于预设的最大消息处理量,无法处理后续该队列的异步消息,因此阻 塞(不处理)这2个队列消息或向消息的发起方返回消息的失败确i人,虚尾 指针v—tp的值保持不变。
(2-7)分别接收到对应写请求MemW4、 MemW5的写结束确认,实尾 指针tp与最大捕获尾指针mc一tp之间的元素空间已写满数据,成为无缝数据 空间,更新实尾指针tp的值为7,将最大捕获写结束计数器mc—cnt清0。
对应于上述队列管理方法,本实施方式的队列管理器如图3所示,包括 队列指针寄存器30、最大捕获写结束计数器31、设置单元32、发送单元33和 更新单元(图中未标示)。
队列指针寄存器30,用于储存队列指针,所述队列指针包括头指针hp、 实尾指针tp、虚尾指针v—tp和最大捕获尾指针mc—tp。
最大捕获写结束计数器31,对最大捕获尾指针mc—tp和实尾指针tp之间已 写入数据的元素空间的数量进行计数。
设置单元32,初始配置队列,初始设置队列指针寄存器30和最大捕获写 结束计数器31。在系统初始状态时,将头指针hp、实尾指针tp、虚尾指针v—tp、 最大捕获尾指针mc—tp、最大捕获写结束计数器31设置为0。
发送单元33,发送对应于接收到的队列消息的写请求,再根据发送的写 请求的数量,累加虚尾指针。写请求包含待写入的数据和待写入数据的元素 空间的地址。
所述更新单元包括累加单元34、获取单元35、第一更新单元36和第 二更新单元37。累加单元34,根据接收到的写结束确认的数量,累加最大捕获写结束计 数器31的计数值。
获取单元35,从接收到的写结束确认中获取已写入数据的元素空间的地 址。在数据写入所述待写入数据的元素空间后,返回的写结束确认中包含所 述已写入数据的元素空间的地址。
第一更新单元36,判断所述获取单元35获取的元素空间的地址是否大于 或等于最大捕获尾指针mc—tp的值若是,则将最大捕获尾指针mc—tp指向 所述已写入数据的元素空间的后一元素空间的位置;若否,则不更新最大捕 获尾指针mc—tp。
第二更新单元37,根据第一更新单元36得到的最大捕获尾指针mc一tp, 判断最大捕获尾指针mc—tp与实尾指针tp的差值是否等于最大捕获写结束计 数器mc—cnt的计数值若是,则将实尾指针tp指向最大捕获尾指针mc—tp所 指向的位置,将最大捕获写结束计数器31清零;若否,则不更新实尾指针tp。
接着,由累加单元34、获取单元35、第一更新单元36、第二更新单元 37继续对接收到的写结束确认进行处理。
所述队列管理器还可以包括,阻止单元38,在接收到新的队列消息时, 判断虚尾指针和实尾指针的差值是否大于或等于预设的最大消息处理量
若虚尾指针和实尾指针的差值大于或等于预设的最大消息处理量,则阻 塞(不处理)所述新的队列消息,直到实尾指针被更新后,再由发送单元33 继续对接收到的队列消息进行处理;
或者,若虚尾指针和实尾指针的差值大于或等于预设的最大消息处理量, 则丢弃所述新的队列消息,并发送队列消息的失败确认给所述队列消息的发 送方;
若虛尾指针和实尾指针的差值小于预设的最大消息处理量,则由发送单 元33继续对接收到的队列消息进行处理。第二实施方式
本实施方式的队列管理方法设置了五个队列指针和二个队列计数器,所
述队列指针包括头指针、实尾指针、虚尾指针、最大捕获尾指针和第一捕 获尾指针(fc—tp, First Capture Tail Pointer )。所述队列计数器包括最大捕获 写结束计数器和第 一捕获写结束计数器。
所述头指针和实尾指针之间的元素空间为可消费的队列空间,头指针指 向可消费的队列头元素所在的元素空间的位置,实尾指针指向可消费的队列 尾元素所在的元素空间的后一元素空间的位置。所述虚尾指针指向最后一个 写请求的待写入数据的元素空间的后 一元素空间的位置,实尾指针和虚尾指 针之间的元素空间为不可消费的队列空间,包括至少一个没有写入数据的元 素空间。初始状态时,头指针、实尾指针和虚尾指针都设置为指向队列的第 一个元素空间的位置。
所述最大捕获尾指针指向已写入数据的最后一个元素空间的后一元素空 间的位置。所述第一捕获尾指针的值小于或等于最大捕获尾指针的值。初始 状态时,第 一捕获尾指针和最大捕获尾指针设置为指向队列的第 一个元素空 间的位置;在收到写结束确认并且实尾指针的值等于第一捕获尾指针的值时, 第 一捕获尾指针和最大捕获尾指针指向对应于所述写结束确认的元素空间的 后一元素空间的位置(对应于所述写结束确认的元素空间的地址即为所述写 结束确认所包含的元素空间的地址);随着后续写结束确认的返回,最大捕获 尾指针根据写结束确认所包含的元素空间的地址更新,第一捕获尾指针在实 尾指针更新后根据最大捕获尾指针更新。
最大捕获写结束计数器,对最大捕获尾指针和第一捕获尾指针之间已写 入数据的元素空间的数量进行计数;第一捕获写结束计数器,对第一捕获尾 指针和实尾指针之间已写入数据的元素空间的数量进行计数。
本实施方式的队列管理方法包括初始化流程、队列消息处理流程和指针设置流程。
所述初始化流程包括初始配置队列,初始设置队列指针和队列计数器。 在系统初始状态时,在系统存储器空间中为队列配置数据的存储空间,完成 对队列的基地址、容量、空间属性和访问权限等属性的定义,将头指针、实 尾指针、虚尾指针、第一捕获尾指针和最大捕获尾指针都指向队列的第一个 元素空间的位置,将第一捕获写结束计数器和最大捕获写结束计数器清零。 本实施方式中,头指针、实尾指针、虚尾指针、第一捕获尾指针和最大捕获 尾指针的值是相对于队列的基地址的偏移量。
在初始化流程后,可以并行执行队列消息处理流程和指针设置流程,也 可以串行执行队列消息处理流程和指针设置流程。
所述队列消息处理流程包括在接收到队列消息后,发送对应于所述队 列消息的写请求,再根据发送的写请求的数量,累加虚尾指针,即更新虚尾 指针。本实施方式中,写请求包含待写入的数据和待写入数据的元素空间的 地址,所述待写入数据的元素空间的地址是根据队列的基地址和更新前的虚 尾指针的值得到的。
所述指针^:置流程如图4所示
步骤S41,在接收到写结束确认后,从接收到的写结束确认中获取已写入 数据的元素空间的地址。在数据写入所述待写入数据的元素空间后,将接收 到存储器返回的包含元素空间的地址的写结束确认,该地址即为已写入数据 的元素空间的地址。本实施方式中,写结束确认所包含的元素空间的地址是 相对于队列基地址的偏移量。
步骤S42,判断实尾指针的值是否等于第一捕获尾指针的值若是,则执 行步骤S43;若否,则执行步骤S44。
步骤S43,将第一捕获尾指针、最大捕获尾指针的值设为所述获取的元素 空间的地址加一,即将第一捕获尾指针、最大捕获尾指针指向所述已写入数
23据的元素空间的后一元素空间的位置,接着执行步骤S47。
步骤S44,判断所述获取的元素空间的地址是否大于或等于第一捕获尾指
针的值若是,则执行步骤S45,若否,则执行步骤S47。
步骤S45,将最大捕获写结束计数器加一,判断所述获取的元素空间的地
址是否大于或等于最大捕获尾指针的值若是,则执行步骤S46,若否,则执
行步骤S41。
步骤S46,所述获取的元素空间的地址大于或等于最大捕获尾指针,更新 最大捕获尾指针,将最大捕获尾指针的值设为所述获取的元素空间的地址加 一 ,即将最大捕获尾指针指向所述已写入数据的元素空间的后一元素空间的 位置。接着执行步骤S41。
步骤S47,将第一捕获写结束计数器加一,判断第一捕获尾指针与实尾指 针的差值是否等于第一捕获写结束计数器的计数值若是,则执行步骤S48; 若否,则执行步骤S41。
步骤S48,更新实尾指针和第一捕获尾指针,即将实尾指针指向第一捕获 尾指针所指向的位置,再将第一捕获尾指针指向最大捕获尾指针所指向的位 置,并且,将第一捕获写结束计数器的计数值设为最大捕获写结束计数器的 计数值,再将最大捕获写结束计数器清零,继续执行步骤S41。当步骤S47 的判断结果为第一捕获尾指针与实尾指针的差值等于第一捕获写结束计数器 的计数值时,实尾指针和第一捕获尾指针之间的元素空间已写满数据,成为 可消费的队列空间,因此,将实尾指针的值更新为第一捕获尾指针的值,再 将第一捕获尾指针的值更新为最大捕获尾指针的值,并且,将第一捕获写计 数器的计数值更新为最大捕获写结束计数器的计数值,以对更新后的第 一捕 获尾指针和实尾指针之间已写入数据的元素空间的数量进行计数,再将最大 捕获写结束计数器清零,以重新对最大捕获尾指针和第一捕获尾指针之间已 写入数据的元素空间的数量进行计数。
24当对应于写请求的写结束确认都已返回,说明已发送的写请求都处理完 成,队列消息的数据都写入了对应的元素空间,实尾指针的值等于虛尾指针 的值。 '
与第 一实施方式相比,本实施方式增加设置了第 一捕获尾指针和第 一捕 获写结束计数器,实尾指针、第一捕获尾指针、最大捕获尾指针通过传递赋 值的方式完成对实尾指针的更新,即实尾指针根据第一捕获尾指针更新,而 第一捕获尾指针在实尾指针更新后才根据最大捕获尾指针更新,因此,不会 出现如第一实施方式所述的实尾指针无法更新,队列无法消费的情况。
下面以一个实例对本实施方式的队列管理方法进行说明,头指针、实尾 指针、虚尾指针、第一捕获尾指针、最大捕获尾指针、第一捕获写结束计数
器、最大捕获写结束计数器和队列的元素空间的变化如图5所示
(5-1)系统处于初始状态时,头指针hp、实尾指针tp、虛尾指针vjp、 第一捕获尾指针fc—tp、最大捕获尾指针mc一tp、第一捕获写结束计数器fc一cnt 和最大捕获写结束计数器mc—cnt的初始值都为0。
(5-2)接收到来自多个远程进程的访问同一条队列的8个队列消息,将 虚尾指针v—tp置为8。向存储器发送8个写请求,定义为MemW0、 MemWl ... MemW7,分别对队列存储器的元素空间0 7写入数据。
(5-3 )接收到对应写请求MemW3的写结束确认,实尾指针tp的值等于 第 一捕获尾指针fc—tp的值,更新第 一捕获尾指针fc一tp、最大捕获尾指针mc—tp 的值为4,更新第一捕获写结束计数器fc—cnt的计数值为1。
(5-4)分别接收到对应写请求MemWl、 MemW2、 MemW6的写结束确 认,更新最大捕获尾指针mc—tp的值为7,更新第一捕获写结束计数器fc一cnt 的计数值为3,更新最大捕获写结束计数器mc—cnt的计数值为1。
(5-5 )接收到对应写请求MemWO的写结束确认,更新第一捕获写结束 计数器fc—cnt的计数值为4。此时,实尾指针tp与第 一捕获尾指针fc—tp之间的元素空间已写满数据,成为无缝数据空间,更新实尾指针tp的值为4,更 新第一捕获尾指针fc—tp的值为7,更新第一捕获写结束fc—cnt计数器的计数 值为1,将最大捕获写结束计数器mc—cnt清0。
(5-6 )接收到访问该队列的2个队列消息,将虚尾指针v—tp的值置为10。 向存储器发送2个写请求,定义为MemW8、 MemW9,分别对队列存储器的 元素空间8 9写入数据。
(5-7)分别接收到对应写请求MemW4、 MemW5、 MemW9的写结束确 认,更新最大捕获尾指针的值为10,更新第一捕获写结束计数器fc一cnt的计 数值为3,更新最大捕获写结束计数器mc—cnt的计数值为1。此时,实尾指 针tp与第 一捕获尾指针fc一tp之间的元素空间已写满数据,成为无缝数据空间, 更新实尾指针tp的值为7,更新第一捕获尾指针fc—tp的值为10,更新第一捕 获写结束fc—cnt计数器的计数值为1,将最大捕获写结束计数器mc一cnt清O。
对应于上述队列管理方法,本实施方式的队列管理器如图6所示,包括 队列指针寄存器60、队列计数器61、设置单元62、发送单元63、更新单元(图 中未标示)。
队列指针寄存器60,用于储存队列指针,所述队列指针包括头指针hp、 实尾指针tp、虚尾指针v—tp、第一捕获尾指针fc一tp和最大捕获尾指针mc—tp。
队列计数器61,包括对第一捕获尾指针fc一tp和实尾指针tp之间已写入数 据的元素空间的数量进行计数的第一捕获写结束计数器fc一cnt,对最大捕获尾 指针mc—tp和第 一捕获尾指针fc—tp之间已写入数据的元素空间的数量进行计 数的最大捕获写结束计数器mc一cnt。
设置单元62,初始配置队列,初始设置队列指针寄存器60和队列计数器 61。在系统初始状态时,将头指针hp、实尾指针tp、虚尾指针v一tp、第一捕获 尾指针fc—tp、最大捕获尾指针mc—tp、第一捕获写结束计数器fc—cnt、最大捕
26获写结束计数器mc—cnt设置为0。
发送单元63,发送对应于接收到的队列消息的写请求,再根据发送的写 请求的数量,累加虛尾指针。写请求包含待写入的数据和待写入数据的元素 空间的i也址。
所述更新单元包括获取单元64、第一更新单元65、第二更新单元66、 第三更新单元67和第四更新单元68。
获取单元64,从接收到的写结束确认中获取已写入数据的元素空间的地 址。在数据写入所述待写入数据的元素空间后,返回的写结束确认中包含已 写入数据的元素空间的地址。
第一更新单元65,判断实尾指针的值是否等于第一捕获尾指针的值若 实尾指针等于第一捕获尾指针,则将第一捕获尾指针fc—tp、最大捕获尾指针 mc—tp的值设为所述获取的元素空间的地址加一,即将第一捕获尾指针fc_tp、 最大捕获尾指针mc—tp指向所述已写入数据的元素空间的后一元素空间的位 置,并将第一捕获写结束计数器fc—cnt的计数值加一,将判断结果和得到的 第 一捕获尾指针fc—tp、第 一捕获写结束计数器fc一cnt传送给第四更新单元68; 若实尾指针不等于第一捕获尾指针,则将判断结果传送给第二更新单元66。
第二更新单元66,在第一更新单元65的判断结果为实尾指针的值不等于 第一捕获尾指针的值时,判断所述获取的元素空间的地址是否大于或等于第 一捕获尾指针fc_tp的值若是,则将最大捕获写结束计数器mc—cnt的计数 值加一,将判断结果传送给第三更新单元67;若否,则将第一捕获写结束计 数器fc—cnt的计数值加一,将判断结果和得到的第一捕获写结束计数器fc—cnt 传送给第四更新单元68。
第三更新单元67,在第二更新单元66的判断结果为所述获取的元素空间 的地址大于或等于第一捕获尾指针fc一tp的值时,判断所述获取的元素空间的 地址是否大于或等于最大捕获尾指针mc一tp的值若所述获取的元素空间的地址大于或等于最大捕获尾指针mc—tp的值,则更新最大捕获尾指针mc—tp, 将最大捕获尾指针mc一tp的值设为所述获取的元素空间的地址加一,即将最 大捕获尾指针mc一tp指向所述已写入数据的元素空间的后一元素空间的位置, 接着,由获取单元64、第一更新单元65、第二更新单元66、第三更新单元 67、第四更新单元68继续对接收到的写结束确认进行处理。
第四更新单元68,在第一更新单元65的判断结果为实尾指针的值不等于 第一捕获尾指针的值、或者第二更新单元66的判断结果为所述获取的元素空 间的地址小于第一捕获尾指针fc—tp的值时(即在第一捕获写结束计数器 fc—cnt的计数值更新后),判断第一捕获尾指针fc—tp与实尾指针tp的差值是 否等于第一捕获写结束计数器fc—cnt的计数值若第一捕获尾指针fc—tp与实 尾指针tp的差值等于第一捕获写结束计数器fc—cnt的计数值,则更新实尾指 针tp和第一捕获尾指针fc一tp,即将实尾指针tp指向第一捕获尾指针fc_tp所 指向的位置,再将第一捕获尾指针fc一tp指向最大捕获尾指针mc—tp所指向的 位置,并且,将第一捕获写结束计数器fc—cnt的计数值设为最大捕获写结束 计数器mc一cnt的计数值,再将最大捕获写结束计数器mc—cnt清零,接着,由 获取单元64、第一更新单元65、第二更新单元66、第三更新单元67、第四 更新单元68继续对接收到的写结束确认进行处理。
若所述第三更新单元67的判断结果为所述获取的元素空间的地址小于最 大捕获尾指针mc—tp的值,或者所述第四更新单元68的判断结果为第 一捕获 尾指针fc—tp与实尾指针tp的差值不等于第一捕获写结束计数器fc—cnt的计数 值,则由获取单元64、第一更新单元65、第二更新单元66、第三更新单元 67、第四更新单元68继续对接收到的写结束确认进行处理。
本发明实施方式还提供一种队列消息的处理方法,如图7所示,包括下述 步骤
步骤S71,发送方71向接收方72发送访问接收方72的队列存储器721(即队列所在的存储器)的队列消息。
步骤S72,接收方72的队列管理器722在接收到队列消息后,向接收方 的队列存储器721发送对应于所述队列消息的写请求,并根据发送的写请求 的数量累加虚尾指针。
步骤S73,接收方72的队列存储器721在接收到写请求后,将写请求中 的数据写入对应的元素空间,并向所述接收方72的队列管理器722返回对应 的写结束确认。
步骤S74,接收方72的队列管理器722在接收到写结束确认后,根据所 述写结束确认更新队列管理器722的队列计数器,并根据所述写结束确认所 包含的元素空间的地址和更新后的队列计数器更新队列管理器722的实尾指 针。步骤S74可以包括图1所示的步骤Sll至S16,也可以包括图4所示的步 骤S41至S48。
步骤S75,接收方72的队列管理器722根据所述写结束确认,向发送方71 返回对应的队列消息的确认。
另外,若步骤S74包括图1所示的步骤S11至S16,则所述队列消息的处理 方法还可以包括步骤S76,接收方72的队列管理器722在虚尾指针和实尾指针 的差值大于或等于预设的最大消息处理量时,丢弃新的队列消息(不发送对 应的写请求),返回队列消息的失败确认给所述新的队列消息的发送方。此步 骤为可选的步骤,在其他实施方式中也可以是,接收方72的队列管理器722在 虚尾指针和实尾指针的差值大于或等于预设的最大消息处理量时,阻塞新的 队列消息直到实尾指针被更新,再向队列所在的存储器721发送对应的写请 求。
对应于上述队列消息的处理方法,本实施方式的队列消息的处理系统如 图7所示,包括发送方71和接收方72,所述接收方72包括队列存储器721 和队列管理器722。
29发送方71,向接收方72发送访问接收方72的队列存储器721的队列消 息,并接收所述接收方72返回的对应的队列消息的确认。
接收方72的队列存储器721,接收所述队列管理器722发送的写请求, 将写请求中的数据写入对应的元素空间,并向所述队列管理器722返回对应 的写结束确认。
所述队列管理器722,接收所述发送方71发送的队列消息、向所述队列 存储器721发送对应于所述队列消息的写请求、并根据发送的写请求的数量 累加虚尾指针,接收所述队列存储器721返回的写结束确认、根据所述写结 束确认更新队列计数器、并根据所述写结束确认所包含的元素空间的地址和 更新后的队列计数器更新实尾指针,根据所述写结束确认,向发送方71返回 对应的队列消息的确i/v。
所述的队列管理器722可以如图3所示,也可以如图6所示。
综上所述,上述技术方案设置了头指针、虚尾指针、实尾指针和队列计 数器,根据接收的写结束确认更新队列计数器,并且根据写结束确认所包含 的元素空间的地址和更新后队列计数器更新实尾指针,这样,头指针和实尾 指针之间的元素空间为可消费的队列空间;实尾指针和虚尾指针之间的元素 空间为不可消费的队列空间。因此,上述技术方案不需要按序执行存储器写 请求,也能保证队列尾指针(实尾指针)的更新和数据写入队列的元素空间 的同步,因而扩大了队列消息的应用范围。
本发明虽然以较佳实施例公开如上,但其并不是用来限定本发明,任何 本领域技术人员在不脱离本发明的精神和范围内,都可以做出可能的变动和 修改,因此本发明的保护范围应当以本发明权利要求所界定的范围为准。
权利要求
1. 一种队列管理方法,其特征在于,包括下述步骤初始设置队列指针和队列计数器,所述队列指针包括头指针、虚尾指针和实尾指针,所述头指针和实尾指针之间的元素空间为可消费的队列空间;发送对应于接收到的队列消息的写请求,并根据发送的写请求的数量累加虚尾指针;根据接收到的写结束确认更新队列计数器,并根据所述写结束确认所包含的元素空间的地址和更新后的队列计数器更新实尾指针。
2. 根据权利要求1所述的队列管理方法,其特征在于,所述初始设置队列 指针和队列计数器包括在系统初始状态时,将队列指针指向队列的第一个 元素空间的位置,将队列计数器清零。
3. 根据权利要求1所述的队列管理方法,其特征在于,所述队列指针还包 括最大捕获尾指针,指向已写入数据的最后一个元素空间的后一元素空间的 位置;所述队列计数器为最大捕获写结束计数器,对所述最大捕获尾指针和 实尾指针之间已写入数据的元素空间的数量进行计数。
4. 根据权利要求3所述的队列管理方法,其特征在于,所述根据接收到的 写结束确认更新队列计数器,并根据所述写结束确认所包含的元素空间的地 址和更新后的队列计数器更新实尾指针,包括下述步骤根据接收到的写结束确认的数量,累加最大捕获写结束计数器的计数值; 从接收到的写结束确认中获取已写入数据的元素空间的地址; 在所述获取的元素空间的地址大于或等于最大捕获尾指针的值时,将最大捕获尾指针指向已写入数据的元素空间的后 一元素空间的位置;在所述最大捕获尾指针与实尾指针的差值等于最大捕获写结束计数器的计数值时,将实尾指针指向最大捕获尾指针所指向的位置,并将最大捕获写结束计数器清零。
5. 根据权利要求4所述的队列管理方法,其特征在于,还包括在虚尾指针和实尾指针的差值大于或等于预设的最大消息处理量时,阻塞新的队列消 息直到实尾指针被更新,或者,丟弃新的队列消息并发送队列消息的失败确 认给所述新的队列消息的发送方。
6. 根据权利要求1所述的队列管理方法,其特征在于,所述队列指针还包括第 一捕获尾指针和最大捕获尾指针,所述最大捕获 尾指针指向已写入数据的最后一个元素空间的后一元素空间的位置,所述第一捕获尾指针在收到写结束确认并且实尾指针的值等于第一捕获尾指针的值 时指向对应于所述写结束确认的元素空间的后一元素空间的位置;所述队列计数器包括对最大捕获尾指针和第一捕获尾指针之间已写入数 据的元素空间的数量进行计数的最大捕获写结束计数器和对第 一捕获尾指针 和实尾指针之间已写入数据的元素空间的数量进行计数的第 一捕获写结束计 数器。
7. 根据权利要求6所述的队列管理方法,其特征在于,所述根据接收到的 写结束确认更新队列计数器,并根据所述写结束确认所包含的元素空间的地 址和更新后的队列计数器更新实尾指针,包括下述步骤从接收到的写结束确认中获取已写入数据的元素空间的地址;在实尾指针的值等于第一捕获尾指针的值时,将第一捕获尾指针、最大 捕获尾指针指向所述已写入数据的元素空间的后一元素空间的位置,并将第 一捕获写结束计数器加一;在实尾指针的值不等于第一捕获尾指针的值并且所述获取的元素空间的 地址大于或等于第一捕获尾指针的值时,将最大捕获写结束计数器加一;在实尾指针的值不等于第一捕获尾指针的值并且所述获取的元素空间的 地址小于第一捕获尾指针的值时,将第一捕获写结束计数器加一;在实尾指针的值不等于第 一捕获尾指针的值并且所述获取的元素空间的 地址大于或等于最大捕获尾指针的值时,将最大捕获尾指针指向所述已写入数据的元素空间的后一元素空间的位置;在第一捕获写结束计数器更新后并且第一捕获尾指针与实尾指针的差值 等于第一捕获写结束计数器的计数值时,将实尾指针指向第一捕获尾指针所 指向的位置,再将第一捕获尾指针指向最大捕获尾指针所指向的位置,将第 一捕获写结束计数器的计数值设为最大捕获写结束计数器的计数值,再将最 大捕获写结束计数器清零。
8. —种队列管理器,其特征在于,包括队列指针寄存器,储存队列指针,所述队列指针包括头指针、虚尾指针 和实尾指针,所述头指针和实尾指针之间的元素空间为可消费的队列空间;队列计数器,对已写入数据的元素空间的数量进行计数;设置单元,初始设置队列指针寄存器和队列计数器;发送单元,发送对应于接收到的队列消息的写请求,并根据发送的写请 求的数量累加虚尾指针;更新单元,根据接收到的写结束确认更新队列计数器,并根据所述写结 束确认所包含的元素空间的地址和更新后的队列计数器更新实尾指针。
9. 根据权利要求8所述的队列管理器,其特征在于,所述设置单元在系统 初始状态时,将队列指针指向队列的第一个元素空间的位置,将队列计数器 清零。
10. 根据权利要求8所述的队列管理器,其特征在于,所述队列指针还包括 最大捕获尾指针,指向已写入数据的最后一个元素空间的后一元素空间的位 置;所述队列计数器为最大捕获写结束计数器,对所述最大捕获尾指针和实 尾指针之间已写入数据的元素空间的数量进行计数。
11. 根据权利要求IO所述的队列管理器,其特征在于,所述更新单元包括 累加单元,根据接收到的写结束确认的数量,累加最大捕获写结束计数器的计数值;获取单元,从接收到的写结束确认中获取已写入数据的元素空间的地址; 第一更新单元,在所述获取的元素空间的地址大于或等于最大捕获尾指针的值时,将最大捕获尾指针指向所述已写入数据的元素空间的后一元素空间的位置;第二更新单元,在所述最大捕获尾指针与实尾指针的差值等于最大捕获 写结束计数器的计数值时,将实尾指针指向最大捕获尾指针所指向的位置, 并将最大捕获写结束计数器清零。
12. 根据权利要求ll所述的队列管理器,其特征在于,还包括阻止单元, 在虚尾指针和实尾指针的差值大于或等于预设的最大消息处理量时,阻塞新 的队列消息直到实尾指针被更新,或者,丟弃新的队列消息并发送队列消息 的失败确认给所述新的队列消息的发送方。
13. 根据权利要求8所述的队列管理器,其特征在于,所述队列指针还包括第一捕获尾指针和最大捕获尾指针,所述最大捕获 尾指针指向已写入数据的最后一个元素空间的后一元素空间的位置,所述第 一捕获尾指针在收到写结束确认并且实尾指针的值等于第一捕获尾指针的值 时指向对应于所述写结束确认的元素空间的后一元素空间的位置;所述队列计数器包括对最大捕获尾指针和第一捕获尾指针之间已写入数 据的元素空间的数量进行计数的最大捕获写结束计数器和对第一捕获尾指针 和实尾指针之间已写入数据的元素空间的数量进行计数的第 一捕获写结束计 数器。
14. 根据权利要求13所述的队列管理器,其特征在于,更新单元包括 获取单元,从接收到的写结束确认中获取已写入数据的元素空间的地址; 第一更新单元,在实尾指针的值等于第一捕获尾指针的值时,将第一捕获尾指针、最大捕获尾指针指向所述已写入数据的元素空间的后一元素空间 的位置,并将第一捕获写结束计数器加一;第二更新单元,在实尾指针的值不等于第一捕获尾指针的值并且所述获 取的元素空间的地址大于或等于第一捕获尾指针的值时,将最大捕获写结束 计数器加一,在实尾指针的值不等于第一捕获尾指针的值并且在所述获取的元素空间的地址小于第一捕获尾指针的值时,将第一捕获写结束计数器加一; 第三更新单元,在实尾指针的值不等于第一捕获尾指针的值并且所述获取的元素空间的地址大于或等于最大捕获尾指针的值时,将最大捕获尾指针指向所述已写入数据的元素空间的后 一元素空间的位置;第四更新单元,在第一捕获写结束计数器更新后并且第一捕获尾指针与实尾指针的差值等于第 一捕获写结束计数器的计数值时,将实尾指针指向第 一捕获尾指针所指向的位置,再将第一捕获尾指针指向最大捕获尾指针所指 向的位置,将第一捕获写结束计数器的计数值设为最大捕获写结束计数器的 计数值,再将最大捕获写结束计数器清零。
15. —种队列消息的处理方法,其特征在于,包括下述步骤 发送方向接收方发送访问接收方的队列存储器的队列消息;接收方的队列管理器在接收到队列消息后,向接收方的队列存储器发送 对应于所述队列消息的写请求,并根据发送的写请求的数量累加队列管理器 的虚尾指针;接收方的队列存储器在接收到写请求后,将写请求中的数据写入对应的 元素空间,并向所述接收方的队列管理器返回对应的写结束确认;接收方的队列管理器在接收到写结束确认后,根据所述写结束确认更新 队列管理器的队列计数器,并根据所述写结束确认所包含的元素空间的地址 和更新后的队列计数器更新队列管理器的实尾指针;接收方的队列管理器根据所述写结束确认,向发送方返回对应的队列消 息的确iL
16. 根据权利要求15所述的队列消息的处理方法,其特征在于,所述队列计数器为最大捕获写结束计数器,所述接收方的队列管理器根据所述写结束确认更新队列计数器,并根据所述写结束确认所包含的元素空间的地址和更新后的队列计数器更新实尾指针,包括下述步骤根据接收到的写结束确认的数量,累加最大捕获写结束计数器的计数值;从接收到的写结束确认中捕获已写入数据的元素空间的地址;在所述获取的元素空间的地址大于或等于最大捕获尾指针的值时,将最大捕获尾指针指向已写入数据的元素空间的后 一元素空间的位置;在所述最大捕获尾指针与实尾指针的差值等于最大捕获写结束计数器的计数值时,将实尾指针指向最大捕获尾指针所指向的位置,并将最大捕获写结束计数器清零。
17. 根据权利要求16所述的队列消息的处理方法,其特征在于,还包括所述接收方的队列管理器在虚尾指针和实尾指针的差值大于或等于预设的最大消息处理量时,阻塞新的队列消息直到实尾指针被更新;或者,丢弃新的队列消息并返回队列消息的失败确认给所述新的队列消息的发送方。
18. 根据权利要求15所述的队列消息的处理方法,其特征在于,所述队列计数器包括第 一捕获写结束计数器和最大捕获写结束计数器,所述接收方的队列管理器在接收到写结束确认后,根据所述写结束确认更新队列计数器,并根据所述写结束确认所包含的元素空间的地址和更新后的队列计数器更新实尾指针,包括下述步骤从接收到的写结束确认中获取已写入数据的元素空间的地址;在实尾指针的值等于第一捕获尾指针的值时,将第一捕获尾指针、最大捕获尾指针指向所述已写入数据的元素空间的后一元素空间的位置,并将第一捕获写结束计数器加一;在实尾指针的值不等于第一捕获尾指针的值并且所述获取的元素空间的地址大于或等于第一捕获尾指针时,将最大捕获写结束计数器加一;在实尾指针的值不等于第一捕获尾指针的值并且所述获取的元素空间的地址小于第一捕获尾指针的值时,将第一捕获写结束计数器加一;在实尾指针的值不等于第一捕获尾指针的值并且所述获取的元素空间的地址大于或等于最大捕获尾指针时,将最大捕获尾指针指向所述已写入数据的元素空间的后一元素空间的位置;在第 一捕获写结束计数器更新后并且第 一捕获尾指针与实尾指针的差值等于第 一捕获写结束计数器的计数值时,将实尾指针指向第一捕获尾指针所指向的位置,再将第一捕获尾指针指向最大捕获尾指针所指向的位置,将第一捕获写结束计数器的计数值设为最大捕获写结束计数器的计数值,再将最大捕获写结束计数器清零。
19. 一种队列消息的处理系统,其特征在于,包括发送方和接收方,所述接收方包括队列存储器和队列管理器,其中,所述发送方,向接收方发送访问接收方的队列存储器的队列消息,并接收所述接收方返回的对应的队列消息的确认;所述队列存储器,接收所述队列管理器发送的写请求,将写请求中的数据写入对应的元素空间,并向所述队列管理器返回对应的写结束确认;所述队列管理器,接收所述发送方发送的队列消息、向所述队列存储器发送对应于所述队列消息的写请求、并根据发送的写请求的数量累加虚尾指针,接收所述队列存储器返回的写结束确认、根据所述写结束确认更新队列计数器、并根据所述写结束确认所包含的元素空间的地址和更新后的队列计数器更新实尾指针,根据所述写结束确认,向发送方返回对应的队列消息的确认。
全文摘要
一种队列管理方法,包括初始设置队列指针和队列计数器,所述队列指针包括头指针、虚尾指针和实尾指针;发送对应于接收到的队列消息的写请求,并根据发送的写请求的数量累加虚尾指针;根据接收到的写结束确认更新队列计数器,并根据所述写结束确认所包含的元素空间的地址和更新后的队列计数器更新实尾指针,所述头指针和实尾指针之间的元素空间为可消费的队列空间。本发明还公开了一种队列管理器、队列消息的处理方法和系统,不需要顺序执行写请求也能保证队列尾指针的更新和数据写入队列的元素空间的同步,可适用于在大规模并行计算机系统上实现高效的基于队列消息的传送机制,扩大了队列消息的应用范围。
文档编号G06F9/46GK101470623SQ200710160669
公开日2009年7月1日 申请日期2007年12月26日 优先权日2007年12月26日
发明者卢宏生, 巍 朱, 媛 李, 汪崇学, 范正兵, 勇 许, 郑为华, 健 陈 申请人:无锡江南计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1