对商品盘驱动器上的命令进行优先级排序的方法和系统的制作方法

文档序号:6472095阅读:124来源:国知局
专利名称:对商品盘驱动器上的命令进行优先级排序的方法和系统的制作方法
技术领域
本发明涉及对磁驱动器上的命令进行排序,更具体地说,涉及根据命令的优先级和盘驱动器的可用性来确定是否向该盘驱动器发出该命令。


图1是计算机系统100的方块图。它的主要部件是主机110、盘控制器115和盘驱动器125。盘驱动器125可以是市场上的现用(off-the-shelf)部件,有时称作商品盘驱动器,它遵从小型计算机系统接口(SCSI)协议。
主计算机110对存储在盘驱动器125上的数据进行操作。当主计算机110希望读数据时,它向盘控制器115发出一个标识该数据的读命令。按顺序,盘控制器115向盘驱动器125发出一个读命令。当盘驱动器125执行这个读命令时,它把数据发送给盘控制器115,盘控制器115把数据传送给主计算机110。对于主计算机110希望写数据的情况,它向盘控制器115发送一个写命令,并发送相关联的数据。然后,盘控制器115向盘驱动器125发出一个写命令。当盘驱动器125准备好执行写命令时,它通知盘控制器115,盘控制器115向盘驱动器125发送相关联的数据。
盘控制器115包括一个处理器117和相关的存储器118,用于执行和与主机110及盘驱动器125交换信息有关的过程。它还包括一个控制器命令队列120,其中含有尚待向盘驱动器125发出的命令。
盘驱动器125也包括以处理器(未画出)和相关存储器128形式存在的某些本机智能部件,它包括盘驱动器命令队列130。盘驱动器命令队列包含已发送给盘驱动器125但尚未被盘驱动器125执行的那些命令。
像计算机系统100那样的系统的性能经常利用响应时间和吞吐量来评价。响应时间,有时也称作等待时间(latency),是一命令被发出的时刻和它被执行的时刻之间的时间间隔。短的响应时间比长的响应时间更可取。吞吐量是在指定时间段内由一系统处理的命令总数。较大的吞吐量比较小的吞吐量更可取。
盘控制器115和盘驱动器125每个包括若干特性,以求减小响应时间和增大吞吐量。这些特性包括给予命令以优先级并对控制器命令队列120和盘控制器命令队列130上的命令进行组织。
盘控制器115给将发送到盘驱动器125的命令赋予一个优先级。最重要的命令被赋予最高优先级。有三个优先级与本讨论相关,它们是立即级(demand stage)、前置级(prestage)和分离级(destage)。
立即级优先级是最高优先级。它与主计算机110希望读数据的命令相关联。一般而言,当主计算机向盘控制器115发出读命令时,主计算机110对该数据有立即的需要。因此,当盘控制器115收到来自主计算机110的读命令时,它给该读命令赋予立即级优先级。
前置级优先级是次最高优先级。它被赋予由盘控制器115发起的读命令,而不是由主计算机110发起的读命令。盘控制器115评估从主计算机110收到的命令的近期历史,并试图预测主计算机将发出的下一个命令。例如,当主计算机已发出了读两个相邻数据块的读命令的情况下,盘控制器115可以预测来自主计算机110的下一个命令将是读第三个相邻数据块的读命令。在预期这一命令时,盘控制器115向盘驱动器125发出一个读这第三相邻数据块的命令。在预期一个来自主计算机110的读命令时由盘控制器做出的这样一个读命令被赋予前置级优先级。
分离级优先级低于前置级优先级。盘控制器115赋予写命令分离级优先级,它希望以此命令向盘驱动器125写数据。当主计算机110向一存储装置写数据时,通常它已结束了对数据的处理,至少对短时间是如此。主计算机110把数据传送到盘控制器115,然后转向其他任务。主计算机110不等待盘控制器115把数据实际写入盘驱动器125,所以不急于让盘驱动器125立即执行写命令。
盘控制器115按优先级顺序组织控制器命令队列120中的命令。就是说,具有最高优先级的命令放在控制器命令队列120的前面,而具有最低优先级的命令放在控制器命令队列120的末尾。具有相同优先级的命令按照它们已在队列中的时间量排序。就是说,命令按照优先级和年龄排序。在控制器命令队列120前面的命令是盘控制器115希望发给盘驱动器125的下一个命令。对控制器命令队列120中命令的这种组织是要使最高优先级的命令的响应时间达到极小。
盘控制器115能把命令从前置级优先级提升到立即级优先级。当这样的一个命令被提升为立即级时,该命令被放到立即级优先级的其他命令当中,并进一步按命令的年龄排序。当一命令被提升时,如果必要的话,盘控制器115将对控制器命令队列120重新排序。请注意,分离级优先级的命令没有资格提升。
盘控制器115还利用一个老化(aging)算法,它在一个预先确定的时间段之后使控制器命令队列120中的所有命令的优选级进级。更具体地说,在已经过了一个预先确定的时间之后,在控制器命令队列120中的所有命令都被进级到一个较高的优先级。老化算法是要防止新命令有较高优先级的情况下一个低优先级命令处于饥饿状态,即不被服务的状态。请注意,老化算法应用于所有命令,不管其优先级如何,但它不对命令队列120重新排序。
盘驱动器125把尚待执行的命令保持在盘驱动器命令队列120中。盘驱动器125能以两种方式中的任何一种操作,即“按顺序”方式和重新排序方式。在按顺序方式期间,盘驱动器125把命令放到盘驱动器命令队列130中,并按它们从盘控制器115接收的顺序来执行这些。在重新排序方式,盘驱动器125改变盘驱动器命令队列130中命令的顺序,以使执行相继命令之间的寻道时间和转动延时最小,从而改进吞吐量。
在重新排队顺序,随着盘驱动器命令队列130中命令数的增加,盘驱动器125变得更有效,因为当选择下一个要执行的命令时,它可有更多的命令从中去选择。所以吞吐量增大了。然而,随着盘驱动器命令队列130中命令数的增加。,对于给定命令的可能最大等待时间也增大了。还有,请注意,盘驱动器125不知道盘控制器115所用的优先级,结果,在重新排序方式下,它可能在一高优先级命令之前执行一个或多个低优先级命令。
另一个特性,称作队列头选项(Head of Queue Option),允许盘控制器115坚持把一个特定的命令放到盘驱动器命令队列130的头部。当盘控制器115发出一个命令并指定队列头选项时,这一指定防止盘驱动器125对盘驱动器命令队列130重新排序,而且所指定的指令将是由盘驱动器125执行的下一个指令。这一特性使所指定的命令等待时间最小,但牺牲了盘驱动器的效率和增大了盘驱动器命令队列130中其他命令的等待时间。
当几个相继命令以队列头选项方式发出,而且发出速度快于盘驱动器125能执行这些命令的速度时,问题便发生了。以队列头选项按顺序C1、C2、C3发出的3个命令将按C3、C2、C1的顺序执行。最老的命令C1将是最后执行的命令,不管它的优先级如何。还有,因为队列头选项,盘驱动器不能对命令重新排序以改进吞吐量。结果,在这种情况中,队列头选项不利地影响了命令C1的响应时间和计算机系统100的总吞吐量。
一个理想的系统将使响应时间最小而使吞吐量最大。下列专例代表了用于对付这一挑战的一些先有技术。
美国专利4,425,615号提供了具有带多盘命令队列的高速缓存/盘子系统的层次存储器系统。它描述的一个盘子系统包括多个盘驱动器,那里为每个盘驱动器提供一个命令队列。对每个命令队列赋予一个优先级值和一个序列号,从而当对应于该队列的盘驱动器变为空闲时,队列最高优先级的命令号被执行。
美国专利5,548,795号提供了在命令队列重新排序过程中确定命令执行依赖性的方法。这一发明描述的方法用于计算最小等待时间、在盘驱动器命令队列中保持依赖性信息和使用这一信息约束以时间上和计算上有效的方式对命令重新排序。
美国专利5,469,560号提供了在自动存储器库中对待决读请求赋予优先级。它描述了一种信息处理系统,该系统具有一种优先级化的方法从一自动存储器库中的盘中读取对象,以使等待时间最小。
美国专利5,729,718号提供一个系统用于确定引导时间延迟作为头切换、寻道和转动延迟的函数并利用嵌入的盘驱动器控制器进行命令队列记录。它描述一个系统用于记录由盘驱动器收到的命令。对于队列中的命令,相对于一个现正执行的命令计算出引导时间延迟。具有最小引导时间延迟的命令被选出并提升到队列前面,在那里它将在这现正执行的命令之后被执行。
美国专利5,848,226号提供了数字印刷系统中通过缓冲存储器进行的优先级化数据传送。在一盘驱动器内的一个控制装置给软件实体的命令输出赋予优先级值并执行具有最高优先级的命令。
用于减小响应时间或增大吞吐量的先有技术通常指向这样一些方法,它们积极地对命令重新赋予优先级或对队列重新排序,以改善系统效率。通常,响应时间的改善伴有对吞吐量的损害,反之亦然。还有,这些技术往往是复杂的,而且不一定与商品盘驱动器相容。
因此,本发明的一个目的是提供一种盘控制器和方法用于确定是否向盘驱动器发出一个命令,它使高优先级命令的响应时间达到极小而又使所有命令的吞吐量达到极大。
本发明的另一目的是提供这样的盘控制器和方法,它与商品盘驱动器的操作相容。
在一个包括一盘控制器和一盘驱动器的计算机系统中,盘控制器通过考虑一命令伴有的优先级和盘驱动器的可用性二者来确定是否向盘驱动器发出一个命令。
在最佳实施例中,盘控制器保持一个待完成命令计数,即这些命令已向盘驱动器发出但尚未被盘驱动器执行。当考虑是否向盘驱动器发出一个命令时,盘控制器首先确定该命令的优先级。如果该命令优先级是最高优先级,则只有当待完成命令计数小于8时才发出该命令。如果该命令优先级不是最高级,则只有当待完成命令计数小于2时才发出该命令。
通过在考虑高优先级命令时使用第一阈值值,即8个待完成命令,而在考虑较低优先级命令时使用第二阈值值,即2个待完成命令,盘控制器能容易地适应这样的需要,即对高优先级命令使其响应时间最小而又不会不利地影响盘驱动器对所有命令的吞吐量。
图1是根据先有技术的计算机系统方块图;图2是特别适应于实现本发明的计算机系统方块图;以及图3是根据本发明用于确定是否向盘驱动器发出命令的过程的流程图。
图2是计算机系统200的方块图。其主要部件是主计算机210、盘控制器215和盘驱动器225。这些部件的操作以及它们彼此的关系与上文图1的内容中所描述的类似。
盘驱动器225可以是市场上的现用部件,有时称作商品盘驱动器,它遵从小型计算机系统接口(SCSI)协议。然而,本发明不限于SCSI协议,而是能应用于根据执行命令效率对命令重新排序的任何盘驱动器。
盘驱动器225包括一个处理器(未画出)和相关的存储器228,它包括一个盘驱动器命令队列230。盘驱动器命令队列230包含已发送给盘驱动器225但尚未被盘驱动器225执行的那些命令。盘驱动器225能对盘驱动器命令队列230中的命令重新排序。
盘控制器215包括处理器216和相关的存储器217,用于执行和与主计算机210及盘驱动器225交换信息有关的过程。控制器命令队列220包含尚待向盘驱动器225发出的命令。盘控制器215还保持一个盘可用性值218,它指出盘驱动器225的可用性。盘可用性值218可以是任何定量指示值,它代表盘驱动器225的可用性,例如执行待完成命令的估计时间或待完成命令个数。命令发出过程219确定是否向盘驱动器225发出一个命令。
在最佳实施例中,盘可用性值218是一个待完成命令计数(OCC),即已向盘驱动器225发出但尚未被盘驱动器225执行的命令计数。换言之,盘可用性值218指出盘驱动器命令队列230中的命令数。当盘控制器215向盘驱动器225发出一个命令时,它使盘可用性值218中的待完成命令计数增1。当盘驱动器225执行一个命令时,盘控制器215使盘可用性值218中的待完成命令计数减1。
盘控制器215把一优先级赋予它将发送给盘驱动器225的每个命令。如前面在图1的内容中讨论的那样,立即级是最高优先级。在该最佳实施例中,一个命令的优先级可以是在立即级,或可在一较低优先级。较低优先级彼此不再区分。就是说,一个命令优先级或者是在立即级,或者不在立即级。然而,在一般情况下,本发明能操作于任何数量的优先级。
当考虑是否向盘驱动器225发出一个命令时,命令发出过程219首先确定该命令的优先级。如果该命令的优先级是处于立即处,则只有当待完成命令计数小于8时才发送该命令。如果该命令的优先级不是处在立即级,则只有当待完成命令计数小于2时才发送该命令。
当计算机系统足够忙以至积累了8个立即级命令时,当8个较低优先级命令已因老化而被提升到立即级时,或当这两种情况的组合时,这一算法允许多达8个命令被排队到盘驱动命令队列230中。如果计算机系统200在轻工作负担情况下操作,则一立即级命令将待待到不落后于2个以上先前发出的命令。这一方案给予立即级命令以优先的处置,从而使它们的响应时间达到极小值,而它又允许对盘驱动器命令队列230中的命令重新排序,从而使吞吐量达到极大。
图3是命令发出过程219的流程图。当盘控制器必须决定是否向盘驱动器225发出一个命令时,命令发出过程219便被调用。这将发生在从主计算机110收到一个新命令时,先前发出的一个命令已被盘驱动器125完成时,或一个命令已被提升为较高优先级时,所考虑的命令是在控制器命令队列220前面的命令。
如前面提到的那样,盘可用性218指出盘驱动器225的一种可用性,而在该最佳实施例中它保持一个待完成命令计数。如图3所示,命令发出过程219对待完成命令计数(OCC)305进行评估。
在步骤310,该过程以确定所考虑的命令是否为立即级优先级开始。如果该优先级是处在立即级,则过程前进到步骤315。如果优先级不是处在立即级,则过程前进到325。请注意,在这一实施例中,立即级是一个阈值优先级,不需要考虑优先级大于立即级的情况。因为立即级是最高可能优先级。然而,在一般情况中,阈值优先级不需要是最高优先级,于是该过程将确定该命令优先级是否大于或等于该阈值优先级。
在步骤315,该过程确定待完成命令计数305是否小于第一阈值计数8。换言之,它确定盘驱动器命令队列230包含的待完成命令数是否少于8。如果待完成命令计数小于8,则过程前进到步骤320。如果待完成命令计数不小于8,则过程前进到步骤335。
在步骤320,该过程向盘驱动器225发出所考虑的命令。然后,过程前进到步骤335。
在步骤325,该过程确定待完成命令计数305是否小于第二阈值计数2。换言之,它确定盘驱动器命令队列230包含的待完成命令数是否少于2。如果待完成命令计数小于2,则过程前进到步骤330。如果待完成命令计数不小于2,则过程前进到步骤335。
在步骤330,该过程向盘驱动器225发出所考虑的命令。然后,过程前进到步骤335。
在步骤335,该过程终止。
请注意,命令发出过程220并不使用先前讨论过的队列头选项。盘驱动器225能工作在重新排序方式并对盘驱动器命令队列230中的命令重新排序。这允许盘驱动器230使其吞吐量最优化,使其达到在重新排序方式下所能达到的程度。
尽管本发明这里所需执行的过程被指明为已经加载到盘控制器215的存储器217中,但它们可能被配置在一存储器介质上,如图2中所示数据存储器250,使其后加载到存储器217中。
应该理解,上面的描述只是对本发明的说明。本领域技术人员可以设计出各种变体或修改而不离开本发明。例如,该过程不一定必须限于两个优先级或两个盘可用性阈值。多优先级和多阈值能被考虑。其次,盘控制器不需要是图2中盘控制器215所代表的独立部件,而是可以嵌入到另一装置中,如主计算机210中。再有,本发明不限于只有一个盘驱动器的计算机系统。在具有多个盘驱动器的系统中,盘控制器215为这多个盘驱动器的每一个维持一个控制器命令队列220和一个盘可用性218。因此,本发明想要包括落入所附权利要求范围内的所有这些替换、修正和变化。
权利要求
1.确定是否从盘控制器向盘驱动器发出命令的方法,所述盘控制器保持一个盘可用性值定量地代表所述盘驱动器的可用性,所述命令伴有一个优先级,所述盘控制器完成如下步骤(A)确定所述优先级是否大于或等于一个阈值优先级;(B)当步骤A确定所述优先级是大于或等于所述阈值优选级时,确定所述盘可用性值是否小于第一阈值值;(C)当步骤A确定所述优先不是大于或等于所述阈值优先级时,确定所述盘可用性值是否小于第二阈值值;(D)当或者步骤B确定所述盘可用性值小于所述第一阈值值时,或者步骤C确定所述盘可用性值小于所述第二阈值值时,向所述盘驱动器发出所述命令。
2.权利要求1中叙述的方法,其中所述盘驱动器包括一个盘队列,该盘队列包含已向所述盘驱动器发出但尚未被所述盘驱动器执行的待完成命令。
3.权利要求2中叙述的方法,其中所述盘驱动器能对所述盘队列中的所述待完成命令重新排序。
4.权利要求1中叙述的方法,其中所述盘可用性值是已向所述盘驱动器发出但尚未被所述盘驱动器执行的那些待完成命令的计数。
5.权利要求4中叙述的方法,其中当所述命令被发给所述盘驱动器时所述待完成命令计数增1,而当所述命令被所述盘驱动器执行时该计数减1。
6.权利要求1中叙述的方法,其中所述优先级是多个优先级之一。
7.权利要求1中叙述的方法,其中所述控制器包括一个含有未发出命令的队列。
8.确定是否向盘驱动器发出命令的盘控制器,所述命令伴有一个优先级,所述盘控制器包含(A)盘可用性指示器,用于保持一个盘可用性值,该值定量地代表所述盘驱动器的可用性;(B)第一比较器,用于确定所述优先级是否大于或等于一阈值优先级;(C)第二比较器,用于当所述第一比较器确定所述优先级是大于或等于所述阈值优先级时确定所述盘可用性值是否小于第一阈值值;(D)第三比较器,用于当所述第一比较器确定所述优先级不是大于或等于所述阈值优先级时确定所述盘可用性值是否小于第二阈值值;以及(E)命令发出器,用于当或者所述第二比较器确定所述盘可用性值小于所述第一阈值值,或者所述第三比较器确定所述盘可用性值小于所述第二阈值值时,向所述盘驱动器发出所述命令。
9.权利要求8中叙述的盘控制器,其中所述盘驱动器包括一个盘队列,该队列中含有已向所述盘驱动器发出但尚未被所述盘驱动器执行的命令。
10.权利要求9中叙述的盘控制器,其中所述盘驱动器能对所述盘队列中的所述待完成命令重新排序。
11.权利要求8中叙述的盘控制器,其中所述盘可用性值是已向所述盘驱动器发出但尚未被所述盘驱动器执行的那些待完成命令的计数。
12.权利要求11中叙述的盘控制器,其中当所述命令被发给所述盘驱动器时所述盘可用性指示器使所述待完成命令计数增1,而当所述命令被所述盘驱动器执行时该计数器减1。
13.权利要求8中叙述的盘控制器,其中所述优先级是多个优先级之一。
14.权利要求8中叙述的盘控制器,还包含一个含有未发出命令的队列。
15.一个存储器介质,它存储盘控制器所用的程序,该盘控制器确定是否向盘驱动器发出命令,所述盘控制器保持一个盘可用性值,该值定量地代表所述盘驱动器的可用性,所述命令伴有一个优先级,所述存储器介质包含(A)控制所述盘控制器的手段,用于确定所述优先级是否大于或等于阈值优先级;(B)控制所述盘控制器的手段,用于在手段A确定所述优先级是大于或等于所述阈值优先级时确定所述盘可用性值是否小于第一阈值值;(C)控制所述盘控制器的手段,用于在手段A确定所述优先级不是大于或等于所述阈值优先级时确定所述盘可用性值是否小于第二阈值值;以及(D)控制所述盘控制器的手段,用于当或者手段B确定所述盘可用性值小于所述第一阈值值,或者手段C确定所述盘可用性值小于所述第二阈值值时,向所述盘驱动器发出所述命令。
16.权利要求15中叙述的存储器介质,其中所述盘驱动器包括一盘队列,该队列包含已向所述盘驱动器发出但尚未被所述盘驱动器执行的那些待完成命令。
17.权利要求16中叙述的存储器介质,其中所述盘驱动器能对所述盘队列中的待完成命令重新排序。
18.权利要求15中叙述的存储器介质,其中所述盘可用性值是已向所述盘驱动器发出但尚未被所述盘驱动器执行的那些待完成命令的计数。
19.权利要求18中叙述的存储器介质,还包含控制所述盘控制器的手段,用于当所述命令被发出给所述盘驱动器时使所述待完成命令计数增1,当所述命令被所述盘驱动器执行时使所述待完成命令计数减1。
20.权利要求15中叙述的存储器介质,其中所述优先级是多个优先级之一。
21.权利要求15中叙述的存储器介质,其中所述盘控制器包括一个含有未发出命令的队列。
全文摘要
在一个包括盘控制器和盘驱动器的计算机系统中,盘控制器通过考虑命令伴有的优先级和盘控制器的可用性二者来确定是否向盘驱动器发出一个命令。
文档编号G06F3/06GK1282030SQ0012018
公开日2001年1月31日 申请日期2000年7月20日 优先权日1999年7月26日
发明者理查德·C·克里文格, 肯特·D·普劳西 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1