使用循环计数实现增强循环队列的方法、装置和程序产品的制作方法

文档序号:6650444阅读:144来源:国知局
专利名称:使用循环计数实现增强循环队列的方法、装置和程序产品的制作方法
技术领域
本发明一般地涉及数据处理领域,具体涉及在计算机系统中使用循环计数来实现增强的循环队列以用于命令处理的方法、装置和计算机程序产品。
背景技术
在传统的结构中,使得一些输入项无序地被执行的循环队列将导致位于首部和尾部输入项之间的空闲并因此不能被使用的队列输入项。这意味着当在队列中实际上存在小于其容量的输入项时,循环队列全部出现。
例如,图2图解了如何使用循环队列的传统结构来将输入项排队和解除排队。在图2中,所述循环队列包括8个输入项和指示正在使用一个队列输入项的X。如图2所示,输入项被添加到队列的首部,并且以任何顺序从所述队列去除。尾部指针指示在队列中的最老的输入项。
首先,循环队列开始是空的,并且首部和尾部指针指向第一输入项。首部指针指向队列的首部,尾部指针指向在队列中的最老的输入项。
接着,在已接收到7个命令后,示出了循环队列。在已经接收到7个命令后,尾部指针指向第一输入项,首部指针指向最后的输入项。
然后,在已经以任何顺序执行了5个命令后,示出了循环队列。在已经执行了5个命令后,尾部指针指向仍然作为在队列中的最老输入项的第一输入项,并且首部指针指向最后的输入项。
接着,在已经接收到另一个命令并且将其添加到在队列中的最后输入项后示出循环队列。然后,首部指针换行(wrap)以便指向第一输入项,而尾部指针仍然指向第一输入项。在接收到所示的最后命令后,即使5个输入项没有,队列也全部出现。
可以使用避免这样的问题的链接列表来取代循环队列。但是,链接列表将比循环队列需要明显更多的硬件。
需要一种实现循环队列的有效的机制,它能够以任何顺序处理排队的命令,并且能够使用在使用传统的循环队列配置时不能获得的、空闲的队列输入项。期望提供这样的机制,它能够有效地使用循环队列,而不需要附加的硬件并且没有链接列表的复杂性。

发明内容
本发明的主要方面提供一种方法、装置和计算机程序产品,用于在诸如存储控制器之类的计算机系统中使用循环计数来实现增强的循环队列。本发明的其他重要方面提供这样的方法、装置和计算机程序产品,用于使用循环计数来实现增强的循环队列,而基本上没有副作用,并且克服了现有技术结构的许多缺陷。
简而言之,提供了一种方法、装置和计算机程序产品,用于使用循环计数来实现增强的循环队列以用于命令处理。循环队列包括多个用于存储命令的输入项。当在队列的首部向队列增加命令输入项时,采用每个被添加的命令输入项存储首部循环计数。首部指针被更新到具有每个被添加的命令输入项的队列的首部。当首部指针从最后队列输入项换行到第一队列输入项时,首部循环计数递增。尾部指针指向最老的命令输入项,并且在执行最老的命令输入项时被更新。当尾部指针推进并从最后的队列输入项换行到第一队列输入项时,尾部指针循环计数递增。
按照本发明的特征,循环计数的使用实现了无序命令的处理并能有效使用在循环队列中的所有可用输入项。


通过下面详细说明在附图中图解的本发明的优选实施例,可以更好地理解本发明以及上述和其他目的和优点,其中图1是图解按照所述优选实施例的、使用循环计数来实现增强的循环队列的计算机系统的方框示;图2图解了包括初始空队列的现有技术的循环队列结构以及如何无序地对输入项进行排队和解除排队而导致不能使用的在首部和尾部输入项之间的空闲队列输入项;图3图解了在图1的网络处理器系统中的、按照所述优选实施例的、用于使用循环计数来实现增强的循环队列的示例性队列序列;图4是在图1的计算机系统中的、按照所述优选实施例的、使用循环计数来实现增强的循环队列的示例性队列结构的替代图示,如图3所示的示例性队列序列那样,它表示出了在接收到最后4个命令后的这个队列结构;图5是图解用于在图1的计算机系统中、按照所述优选实施例来使用循环计数实现增强的循环队列的示例性步骤的流程图;以及图6是图解按照优选实施例的计算机程序产品的方框图。
具体实施例方式
现在参见附图,在图1中,示出了总体采用附图标号100指示的计算机系统,用于按照所述优选实施例使用循环计数来实现增强的循环队列。计算机系统100包括处理器102或中央处理器单元(CPU)102,它通过系统总线106藕接到存储器管理单元(MMU)108和系统存储器,所述系统存储器包括动态随机存取存储器(DRAM)110、非易失性随机存取存储器(NVRAM)112和快闪存储器114。藕接到系统总线106和MMU 108的存储控制器116的海量存储接口118将直接存取存储器件(DASD)120和CD-ROM驱动器122连接到处理器102。按照所述优选实施例,存储控制器116使用循环计数对循环队列200中的命令进行排队和解除排队。
以足够明白本发明的简单形式表示计算机系统100。所示的计算机系统100不意欲暗示结构或功能的限制。本发明可以用于各种硬件实现方式和系统以及各种其它内部硬件器件。应当明白,本发明不限于用于所示的计算机系统100,各种处理器系统都可以提供其中能有利于实现本发明的优选实施例的方法和增强的循环队列结构的计算机环境。
可以使用各种标准处理器——诸如使用由国际商业机器公司制造的PowerPC系列的处理器之一——来实现处理器102。
按照所述优选实施例的特征,按照所述优选实施例使用循环计数在循环队列200中对命令进行排队和解除排队,以便能以任何顺序执行命令,同时使得在循环队列200中的所有空闲队列输入项都可以用于存储新命令。
按照所述优选实施例的特征,当命令输入项在队列首部处被添加到队列时,采用每个命令输入项存储首部循环计数。首部指针被更新到队列的首部。当首部指针从最后的队列输入项换行到第一队列输入项时,首部循环计数递增。尾部指针指向最老的命令输入项,并且在执行最老的命令输入项时被更新。当尾部指针推进并从最后的队列输入项换行到第一队列输入项时,尾部指针循环计数递增。将具有首部循环计数值的首部指针与具有尾部循环计数值的尾部指针相比较,以识别循环队列200的完全状态,并且当首部循环指针需要前进到具有用于该首部和尾部指针的匹配循环计数的尾部循环指针时,认为所述队列完整。
现在参见图3和图4,示出了示例性队列图,用于图解按照所述优选实施例的使用循环计数的命令队列输入项处理。
图3图解了按照所述优选实施例的、在处理器系统100中的示例性初始队列结构,它总体上采用附图标号200指示。如图所示,初始队列结构200包括8个空输入项0-7,并且首部和尾部指针指向第一输入项0,首部和尾部指针具有循环计数0。首部指针指向队列的首部,并且尾部指针指向在队列中的最老的输入项。由多位值来表示循环计数。例如,所述循环计数包括用于通过循环队列200的8个循环的3位、或用于通过循环队列200的4个循环的2位。
接着,示出了在已经接收和向循环队列200添加7个命令后的循环队列200。在队列输入项0-6中所示的编号0指示队列输入项0-6在使用,并且编号0指示循环计数值。在已经接收到7个命令后,尾部指针指向用于指示最老的命令的第一输入项0,并且首部指针被更新并指向用于增加下一个命令的最后的输入项7。
然后,示出了已经执行了5个命令后的循环队列200。在已经执行了所述5个命令后,尾部指针指向第一输入项,并且首部指针指向最后的输入项。
接着,示出了在已经接收到另一个命令并且将其添加到由首部指针指向的最后输入项7后的循环队列200。然后,首部指针被更新,并且首部指针换行而指向第一输入项,并且尾部指针指向第一输入项。当首部指针从最后队列输入项换行前进到第一输入项时,首部循环计数值递增。首部循环计数值递增到1,如首部指针所示,同时尾部指针循环计数值保持为0。在接收到这个命令后,循环队列200并不像传统命令循环队列那样呈现完整。通过比较首部指针和尾部指针的计数值,剩余的5个空闲输入项1、2、3、5和6现在没有被使用。
如在图3的所示序列的底部所示,示出了在添加另外4个命令后的循环队列200。这4个命令被依序添加到剩余的5个空闲输入项的前4个1、2、3和5。首部指针(首部循环计数值1)被更新,并且指向用于添加下一个命令的单个剩余空闲输入项6。尾部指针(循环计数0)指示在队列中的最老的命令输入项1。
图4提供了一个示例性队列结构的替代表示,所述示例性队列结构总体上由参考标记400指示,用于在图3的示例性队列200的所示序列中接收最后4个命令后在计算机系统100中、按照所述优选实施例使用循环计数实现增强的循环队列。如图4所示,循环队列200被表示为具有32个输入项——或8个输入项乘以四个循环0-3——的一个大队列结构400。如图4所示,队列结构400包括用于每个循环0-3的8个输入项。如图4所示,首部指针指向用于添加下一个命令的队列的首部,尾部指针指示在队列中的最老输入项。如图4所示,该队列结构400使得队列输入项0-7可被用于唯一的循环0-3。X指示队列输入项正在被使用,而“-”指示队列输入项因为只有一个缝隙可用于所有的循环0-3而被阻止。
现在参见图5,示出了在方框500开始的示例性步骤,用于在计算机系统100中按照所述优选实施例使用循环计数来实现增强的循环队列。如在确定方框502中所示,当接收到命令时,如在确定方框504中所示,对包括首部循环计数值的首部指针与具有尾部循环计数值的尾部指针进行比较以识别循环队列200的全部状态。当首部循环指针需要推进到具有用于首部和尾部指针的匹配循环计数的尾部循环指针并且在确定方框504识别完整的队列的时候,那么,如在方框506中所示,所接收的命令则被拒绝。
当队列不是完整时,则所接收的命令被添加到队列首部输入项,并且使用在方框508中指示的命令来将首部循环计数存储在该队列输入项中。首部指针被更新来指向用于下一个命令的队列首部输入项,如在方框510中所示。如在确定方框512中所示,核查首部指针是否换行或推进通过最后的队列输入项和第一队列输入项。如在方框514中所示,当首部指针换行时,用于下一个队列首部输入项和首部指针的循环计数递增。
当在确定方框502未识别所接收的命令时,然后如确定方框516所示执行对于被执行的命令的核查。当在确定方框516识别被执行的命令时,当所执行的命令是最老的命令输入项时将尾部输入项指针推进。如在确定方框518中所示,执行核查尾部输入项指针是否换行。如在方框520所示,当尾部输入项指针换行时,尾部输入项指针的循环计数递增。然后,序列步骤返回,如在方框522中所示。
尽管已经描述的本发明是将队列输入添加到队列的首部以及尾部指针指向最老的命令输入项,但是,应当明白,按照本发明,队列输入项可以添加到队列的尾部并且首部指针指向最老的命令输入项。
现在参见图6,图解了本发明的制造产品或计算机程序产品600。计算机程序产品600包括诸如软盘的记录介质602、光可读致密盘或CD-ROM形式的高容量只读存储器、存储带、诸如数字或模拟通信链路的传输式媒体、或类似的计算机程序产品。记录介质602在介质602上存储程序装置604、606、608、610,用于执行方法,所述方法用于在图1的计算机100中实现所述优选实施例的用于命令处理的增强循环队列。
程序指令序列或由所记录的程序装置604、606、608、610限定的一个或多个相互相关的模块的逻辑组合引导计算机系统100,以实现所述优选实施例的用于命令处理的增强循环队列。
虽然已经参照在附图中所示的本发明的实施例的细节而说明了本发明,但是这些细节不意欲限制在所附的权利要求中给出的本发明的范围。
权利要求
1.一种用于实现用于命令处理的增强循环队列的方法,包括步骤提供包括用于存储命令的多个输入项的循环队列;向所述循环队列的首部输入项增加命令输入项,并且采用被添加到所述循环队列的命令输入项存储首部循环计数;更新用于指向在循环队列中的下一个首部输入项的首部指针;并且响应于首部指针从最后的队列输入项换行到第一队列输入项而使得所述首部循环计数递增;提供用于指向最老的命令输入项的尾部指针,并且在每个最老的命令输入项被执行时推进尾部指针;响应于尾部指针从最后的队列输入项换行到第一队列输入项而使得所述尾部指针的尾部循环计数递增。
2.按照权利要求1的用于实现用于命令处理的增强循环队列的方法,还包括步骤将所更新的首部指针与尾部指针相比较,以识别完整的循环队列。
3.按照权利要求1的用于实现用于命令处理的增强循环队列的方法,其中,采用命令输入项存储首部循环计数包括步骤存储多位值以表示所述首部循环计数。
4.按照权利要求1的用于实现用于命令处理的增强循环队列的方法,包括步骤执行来自循环队列的任何命令输入项。
5.一种用于实现用于命令处理的增强循环队列的装置,包括循环队列,包括用于存储命令的多个输入项;存储控制器,藕接到用于存储命令的所述循环队列;所述存储控制器在所述循环队列的首部输入项处增加命令输入项,并且采用被添加到所述循环队列增加命令输入项存储首部循环计数;所述存储控制器更新用于指向在循环队列中的下一个首部输入项的首部指针;并且响应于首部指针从最后的队列输入项换行到第一队列输入项而使得所述首部循环计数递增;所述存储控制器提供用于指向最老的命令输入项的尾部指针,并且在每个最老的命令输入项被执行时推进尾部指针;响应于尾部指针从最后的队列输入项换行到第一队列输入项而使得所述尾部指针的尾部循环计数递增。
6.按照权利要求5的用于实现用于命令处理的增强循环队列的装置,其中,所述存储控制器还将所更新的首部指针与尾部指针相比较以识别所述循环队列的完整状态。
7.按照权利要求5的用于实现用于命令处理的增强循环队列的装置,其中,所述存储控制器在每个命令输入项中存储多位值以表示所述首部循环计数。
8.按照权利要求5的用于实现用于命令处理的增强循环队列的装置,其中,所述存储控制器执行来自所述循环队列的任何命令输入项的命令。
9.一种计算机程序产品,用于在计算机系统中实现用于命令处理的增强循环队列,所述计算机程序产品包括存储在计算机可读介质上的多个计算机可执行指令,其中,所述指令在被计算机系统执行时使得计算机系统执行步骤提供包括用于存储命令的多个输入项的循环队列;在所述循环队列的首部输入项处增加命令输入项,并且采用被添加到所述循环队列增加命令输入项存储首部循环计数;更新用于指向在所述循环队列中的下一个首部输入项的首部指针;并且响应于首部指针从最后的队列输入项换行到第一队列输入项而使得所述首部循环计数递增;提供用于指向最老的命令输入项的尾部指针,并且在每个最老的命令输入项被执行时推进尾部指针;响应于尾部指针从最后的队列输入项换行到第一队列输入项而使得所述尾部循环计数递增。
10.按照权利要求9的用于实现用于命令处理的增强循环队列的计算机程序产品,包括步骤执行来自所述循环队列的任何命令输入项。
11.按照权利要求9的用于实现用于命令处理的增强循环队列的计算机程序产品,包括步骤将所更新的首部指针与尾部指针相比较以识别完整的循环队列。
12.按照权利要求9的用于实现用于命令处理的增强循环队列的计算机程序产品,其中,使用命令输入项存储首部循环计数包括步骤存储多位值以表示所述首部循环计数。
全文摘要
一种方法、装置和计算机程序产品,用于使用循环计数来实现增强的循环队列以用于命令处理。循环队列包括多个用于存储命令的输入项。当在队列的首部向队列添加命令输入项时,采用每个命令输入项存储首部循环计数。首部指针被更新到队列的首部。当首部指针从最后队列输入项换行到第一队列输入项时,首部循环计数递增。尾部指针指向最老的命令输入项,并且在执行最老的命令输入项时被更新。当尾部指针推进并从最后的队列输入项换行到第一队列输入项时,尾部指针循环计数递增。
文档编号G06F5/06GK1773449SQ20051012038
公开日2006年5月17日 申请日期2005年11月11日 优先权日2004年11月12日
发明者保罗·A·甘菲尔德, 朗尼·兰布雷赫特 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1