固态驱动器命令分组转让专利

申请号 : CN201010111351.1

文献号 : CN101799744B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 劳·恩古茵佩里·瑙斯格沃羽赫·胡

申请人 : 马维尔国际贸易有限公司

摘要 :

本发明公开了固态驱动器命令分组。描述了一种与固态驱动器命令分组相关的方法和其它实施方式。在一个实施方式中,第一命令和第二命令被分组到命令包中,其中第一命令和第二命令不共享公共通道来执行。固态驱动器被控制以在固态驱动器上执行命令包,其中执行命令包使第一命令和第二命令同时在分离的通道上执行。

权利要求 :

1.一种用于命令分组的方法,包括:

确定来自多个命令中的命令是否是高优先级命令;

至少部分基于来自所述多个命令的第一命令和第二命令不是高优先级命令将所述第一命令和所述第二命令分组到命令包中,其中所述分组产生在所述第一命令和所述第二命令之间的、指示所述第一命令和所述第二命令是所述命令包的部分的关系,并且其中所述第一命令和所述第二命令不共享公共通道来执行;以及控制固态驱动器以在所述固态驱动器上执行所述命令包,其中执行所述命令包使所述第一命令和所述第二命令同时在分离的通道上执行。

2.如权利要求1所述的方法,包括:

通过最小化用于执行命令集的命令包的数量来将命令分组到所述命令包中,其中所述第一命令和所述第二命令是命令集成员,且所述命令集是等待在所述固态驱动器上执行的一组命令,并且其中将所述第一命令和所述第二命令分组到所述命令包中是基于各自具有不同执行通道的所述第一命令和所述第二命令。

3.如权利要求1所述的方法,包括:

确定用于所述多个命令中的每个命令的优先级;以及

当确定了所述多个命令中的命令不是高优先级命令时将所述命令分组到所述命令包中。

4.如权利要求3所述的方法,还包括:

当确定了所述命令是高优先级命令时不将所述命令分组到所述命令包中。

5.如权利要求1所述的方法,包括:

当识别出与队列相关的事件时,将所述第一命令和所述第二命令分组到所述命令包中,其中队列是被配置成存储等待被执行的命令的单独的存储单元。

6.如权利要求5所述的方法,其中所述与队列相关的事件是以下事件中的至少一个:所述队列达到阈值水平、所述队列超过所述阈值水平、以及命令存在于所述队列中达到预定的阈值时间。

7.如权利要求1所述的方法,包括:

在确定命令大小不超过命令大小阈值时选择性地将命令分组到所述命令包中。

8.一种用于命令分组的装置,包括:

数据存储器,其被配置成存储第一命令和第二命令,其中所述第一命令和所述第二命令将在固态驱动器上执行,且在所述固态驱动器上执行命令将会消耗通道;

组织逻辑,其被配置成确定所述第一命令和所述第二命令的优先级以及在确定所述第一命令和所述第二命令不共享公共通道来执行时,至少部分基于所述第一命令和所述第二命令的所述优先级将所述第一命令和所述第二命令安排到命令包中;以及功能逻辑,其被配置成控制将在所述固态驱动器上执行的所述命令包,其中所述第一命令和所述第二命令将被同时执行。

9.如权利要求8所述的装置,其中所述组织逻辑和所述功能逻辑以集成电路实现并且其中组织逻辑被配置成基于各自具有不同执行通道的所述第一命令和所述第二命令将所述第一命令和所述第二命令安排到所述命令包中。

10.如权利要求8所述的装置,其中所述组织逻辑被配置成确定所述第一命令和所述第二命令是否是高优先级命令以及在所述第一命令和所述第二命令不是高优先级命令时将所述第一命令和所述第二命令分组到所述命令包中。

11.如权利要求10所述的装置,其中所述组织逻辑配置成在确定命令是高优先级命令时不将所述命令分组到所述命令包中,并使所述功能逻辑独立于所述命令包而控制将被执行的所述命令。

12.如权利要求8所述的装置,其中所述数据存储器是队列,且所述组织逻辑被配置成当识别出与队列相关的事件时将所述第一命令和所述第二命令分组到所述命令包中。

13.如权利要求12所述的装置,其中所述与队列相关的事件是以下事件中的至少一个:所述队列达到阈值水平、所述队列超过所述阈值水平、以及命令存在于所述队列中达到预定的阈值时间。

14.如权利要求8所述的装置,其中所述组织逻辑被配置成在确定命令大小超过阈值时选择性地将命令分组到所述命令包中。

15.一种用于命令分组的装置,包括:

组织逻辑,其被配置成确定用于多个命令中的每个命令的优先级以及在确定来自所述多个命令中的第一命令和第二命令不共享公共通道来执行时,至少部分基于所述第一命令和所述第二命令的所述优先级将所述第一命令和所述第二命令安排到命令包中;

管理逻辑,其被配置成产生所述第一命令和所述第二命令之间的关系,其中所述关系指示所述第一命令和所述第二命令是所述命令包的部分,其中所述管理逻辑被配置成删除所述第一命令和第三命令之间的队列关系,其中队列是被配置成储存等待被执行的命令的单独的存储单元;以及功能逻辑,其被配置成使所述命令包在固态驱动器上同时执行所述第一命令和所述第二命令。

16.如权利要求15所述的装置,其中所述组织逻辑被配置成基于最小化用于执行命令集的命令包的数量来将命令分组到所述命令包中,其中所述第一命令和所述第二命令是命令集成员,且所述命令集是等待在所述固态驱动器上执行的一组命令并且其中组织逻辑被配置成基于各自具有不同执行通道的所述第一命令和所述第二命令将所述第一命令和所述第二命令安排到所述命令包中。

17.如权利要求15所述的装置,其中所述队列关系指示所述第一命令和所述第三命令使用所述公共通道。

18.如权利要求15所述的装置,其中所述组织逻辑被配置成在将所述第一命令和所述第二命令安排到所述命令包中之前部分地准备所述第一命令和所述第二命令,其中命令准备包括对命令进行调整以在所述通道上执行。

19.如权利要求18所述的装置,其中将所述第一命令和所述第二命令安排到所述命令包中完成所述命令准备,并且其中所述组织逻辑被配置成确定用于所述第一命令和所述第二命令的执行优先级,并且其中所述组织逻辑被配置成在所述第一命令和所述第二命令是高优先级命令时不将所述第一命令和所述第二命令分组到所述命令包中。

说明书 :

固态驱动器命令分组

[0001] 相关申请的交叉引用
[0002] 本申请要求2009年2月2日提交的美国临时申请第61/149,161号的优先权,该申请通过引用被全部并入。

背景技术

[0003] 包括在背景部分中的信息并不是被承认的现有技术。固态驱动器(solid-state drive)是具有固态存储器的存储器设备。固态存储器包括很少的活动件(如果有的话)。在有很少几个或没有活动件时,固态驱动器是可靠的。
[0004] 可在固态驱动器上执行读和/或写命令。要执行的命令在执行之前被评估。在确定用在执行命令中的通道时使用该评估。接着使用选定的通道执行该命令。如果大量命令将被执行,则执行这些命令可能花费很长时间。

发明内容

[0005] 在一个实施方式中,第一命令和第二命令被分组到命令包中,其中第一命令和第二命令不共享公共通道来执行。固态驱动器被控制以在固态驱动器上执行命令包,其中执行命令包使第一命令和第二命令同时在分离的通道上执行。
[0006] 在另一实施方式中,一种装置包括被配置成存储第一命令和第二命令的数据存储器,其中第一命令和第二命令在固态驱动器上被执行,且其中在固态驱动器上执行命令将会消耗通道。组织逻辑在确定第一命令和第二命令不共享公共通道来执行时将第一命令和第二命令安排到命令包中。功能逻辑控制将在固态驱动器上执行的命令包,其中第一命令和第二命令将被同时执行。
[0007] 在另一实施方式中,一种装置包括组织逻辑,其在确定第一命令和第二命令不共享公共通道来执行时将第一命令和第二命令安排到命令包中。管理逻辑产生第一命令和第二命令之间的关系,其中该关系指示第一命令和第二命令是命令包的部分。功能逻辑使命令包在固态驱动器上同时执行第一命令和第二命令。

附图说明

[0008] 合并在说明书中并构成说明书的一部分的附图示出各种示例性系统、方法和本发明的不同方面的其它示例性实施方式。应认识到,图中的所示元件边界(例如,方框、方框组或其它形状)表示边界的一个示例。本领域技术人员应认识到,在一些示例中,一个元件可被设计为多个元件,或多个元件可被设计为一个元件。在一些示例中,被示为另一元件的内部部件的元件可被实现为外部部件,反之亦然。此外,元件可不按比例绘制。
[0009] 图1示出用于对命令分组并控制那些分组的命令如何在固态驱动器上执行的方法的一个实施方式。
[0010] 图2示出用于对命令分组、产生命令之间的关系并控制那些命令的执行的装置的一个实施方式。
[0011] 图3示出不同命令执行格式的时序图的一个实施方式。
[0012] 图4示出填充有用于在固态驱动器上执行的命令的队列的一个实施方式。
[0013] 图5示出通道以及与通道相关的存储器单元的一个实施方式。
[0014] 图6示出队列以及该队列中的命令如何与通道相关的一个实施方式。
[0015] 图7示出通道以及与那些通道相关的标记线的一个实施方式。
[0016] 图8示出队列中的命令如何链接在一起的一个实施方式。
[0017] 图9示出队列中的命令如何基于命令打包链接在一起的一个实施方式。
[0018] 图10示出在执行命令包之后的标记线的一个实施方式。
[0019] 图11示出在第二命令打包传递发生和第二命令包被执行之后的标记线的一个实施方式。

具体实施方式

[0020] 这里所述的是示例性装置和与固态设备命令分组相关的其它实施方式。下文包括这里使用的所选择的术语的定义。这些定义包括落在术语的范围内并可用于实现的部件的各种示例和/或形式。这些示例没有被规定为限制性的。术语的单数和复数形式可在定义范围内。
[0021] 对“一个实施方式”、“实施方式”、“一个示例”、“示例”等的提及指示如此描述的实施方式或示例可包括特定的特征、结构、特点、特性、元件或限制,但不是每个实施方式或示例必须包括该特定的特征、结构、特点、特性、元件或限制。此外,短语“在一个实施方式中”的重复使用不一定指同一实施方式,虽然它可以指同一实施方式。
[0022] 这里使用的“计算机可读介质”指储存指令和/或数据的存储介质。计算机可读介质可采取一些形式,包括但不限于非易失性介质和易失性介质。非易失性介质可包括例如光盘、磁盘等。易失性介质可包括例如半导体存储器、动态存储器等。计算机可读介质的一般形式可包括但不限于软盘、软性磁盘、硬盘、其它磁性介质、专用集成电路(ASIC)、可编程逻辑设备、光盘(CD)、其它光学介质、随机存取存储器(RAM)、只读存储器(ROM)、存储芯片或存储卡、存储棒,以及计算机、处理器或其它电子设备可读取的其它介质。
[0023] 这里使用的“逻辑”包括但不限于硬件、储存在存储器中的固件、储存在存储介质上或在机器上执行的固件、和/或每个的组合,以执行功能或动作和/或从另一逻辑、方法和/或系统产生功能或动作。逻辑可包括软件控制的微处理器、分立的逻辑(例如,ASIC)、模拟电路、数字电路、编程的逻辑设备、包含指令的存储器设备等。逻辑可包括一个或多个门、门的组合或其它电路部件。在描述多个逻辑的场合,将多个逻辑合并成一个物理逻辑是可能的。类似地,在描述单个逻辑的场合,将所述单个逻辑分布在多个物理逻辑之间是可能的。
[0024] 参考流程图可更好地理解示例性方法。虽然为了解释起来简单,所示方法被显示和描述为一系列块,但应认识到,这些方法并不被块的顺序限制,因为一些块可按与所示和所述不同的顺序和/或与其它块同时发生。而且,可能需要少于示出的所有块来实现示例性方法。块可被合并或分成多个部分。此外,额外的和/或可选的方法可使用额外的未示出的块。
[0025] 图1示出方法1000。方法1000与分组命令和控制那些命令如何在固态驱动器(SSD)上执行有关。
[0026] 在1010,方法1000包括将第一命令和第二命令分组到命令包中。第一命令和第二命令不共享公共通道来执行。命令可以是将在固态驱动器上执行的读命令或写命令。智能分组命令可产生执行效率。
[0027] 在1020,方法1000包括控制SSD以在SSD上执行命令包。执行命令包使第一命令和第二命令在分离的通道上同时执行。因为第一命令和第二命令同时在分离的通道上被执行,所以与被独立地执行的情况相比,这些命令被更有效地执行。
[0028] 在一个实施方式中,命令至少部分地基于管理方案被分组到命令包中。管理方案可设计成例如最小化用于执行命令集的命令包的数量。一个示例性命令集包括第一命令和第二命令。命令集是在SSD上等待执行的一组命令。
[0029] 命令可以或可以不基于命令的优先级被分组到命令包中。例如,具有高优先级的第一命令可以不被分组到命令包中,而具有低优先级的第二命令可以被分组到命令包中。
[0030] 命令还可基于与队列相关的事件的出现而被分组到命令包中。队列是被配置成存储等待被执行的命令的单独的存储单元。队列中的条件可随着时间的过去而改变。这些变化的条件可影响命令分组。这些条件包括但不限于:队列达到阈值水平、队列超过阈值水平、以及命令存在于队列中达到预定的阈值时问。本领域技术人员应认识到,阈值水平可以是用户定义的、硬编码的等等。
[0031] 命令可在确定了命令大小不超过命令大小阈值时选择性地被分组到命令包中。如果命令相对较大,则使用足够的通道,且分组不出现。本领域技术人员应认识到,命令大小阈值可为用户定义的、硬编码的等等。
[0032] 图2示出装置1200。装置1200对命令分组并控制这些命令的执行。装置1200包括数据存储器1210。数据存储器1210存储第一命令和第二命令。第一命令和第二命令将在固态驱动器1220上执行。在固态驱动器1220上执行命令消耗至少一个通道。消耗通道包括在命令的执行期间给予命令对该通道的独占访问。
[0033] 装置1200还包括组织逻辑1230。组织逻辑1230将第一命令和第二命令安排到命令包中。当确定了第一命令和第二命令不共享公共通道来执行时,发生这种安排。因为命令不共享公共通道,所以独占访问未被妨碍。因为独占访问未被妨碍,所以命令可被同时执行。
[0034] 装置1200还包括功能逻辑1240。功能逻辑1240控制将在固态驱动器1220上执行的命令包。第一命令和第二命令将被同时执行。命令可同时执行是因为给命令包命令提供了对必要通道的独占访问,且由于命令被分组在一起的方式这些必要通道彼此不竞争。
[0035] 在一个实施方式中,组织逻辑1230和功能逻辑1240以集成电路实现。集成电路可例如为ASIC、现场可编程门阵列(FPGA)等。
[0036] 发送将在SSD 1220上执行的命令的设备可通知装置1200:该命令是高优先级命令。组织逻辑1230可被配置成当确定了命令是高优先级命令时不将命令分组到命令包中。在本示例中,组织逻辑1230使功能逻辑1240独立于命令包(例如,单独地)而执行命令。
组织逻辑1230还可被配置成当确定了命令不是高优先级命令时将命令分组到命令包中。
[0037] 在一个示例中,数据存储器1210是结合附图5-10讨论的队列200。当数据存储器1210是队列200时,组织逻辑1230被配置成当识别出与队列相关的事件时将第一命令和第二命令分组到命令包中。在本示例中,与队列相关的事件是队列达到阈值水平、队列超过阈值水平、以及命令存在于队列中达到预定的阈值时间。从本公开和从这里的教导中,本领域技术人员应认识到,数据存储器1210可实现其它数据结构(例如,列表、表格)。本领域技术人员还应认识到,组织逻辑1230在识别出另一与数据结构相关的事件时对命令分组。
[0038] 在一个示例中,组织逻辑1230在确定了命令大小超过或达到阈值时将命令分组到命令包中。装置1200因此对命令智能地分组,以使命令在固态驱动器1220上有效地执行。
[0039] 在一个实施方式中,装置1200包括管理逻辑1250。管理逻辑1250产生第一命令和第二命令之间的关系(例如,图9的900)。该关系指示第一命令和第二命令是命令包的部分。该关系可充当如何组织命令包的指南。
[0040] 在一个示例中,管理逻辑1250删除第一命令和第三命令之间的队列关系。示例性的被删除的队列关系是使用公共通道的命令之间的关系。队列200是被配置成储存等待被执行的命令的单独的存储单元。
[0041] 在一个实施方式中,组织逻辑1230至少部分地根据管理方案将命令分组到命令包中。管理方案最小化用于执行命令集的命令包的数量。第一命令和第二命令是命令集成员。命令集是等待在固态驱动器1220上执行的一组命令。
[0042] 在一个示例中,组织逻辑1230部分地准备第一命令和第二命令。在将第一命令和第二命令安排到命令包中之前,执行部分准备。例如,该部分准备可包括选择将被打包在一起并执行的候选命令。如下面在示例中更详细描述的,从部分准备的时间到最终打包的时间,执行条件和/或资源可用性可能改变。如果某些条件变化,则待分组的候选命令也可变化。命令准备包括对命令进行调整以在通道上执行。例如,对命令进行调整可包括更改与命令相关的队列500中的一个或多个字段(例如,改变到下一个或最后一个命令的链接,从而改变命令的顺序/分组)。将第一命令和第二命令安排到命令包中完成了准备。由于准备完成,命令被执行。
[0043] 现在转到图3,其示出与计算机系统中的读/写命令相关的时序图。图4-11示出可由方法1000和/或装置1200处理的命令。在计算机系统中,主机设备将读和写命令发送到存储器。存储器可例如是SSD。命令由SSD执行以实现期望的功能。在一个示例中,执行写命令以将信息写到存储器单元。虽然命令可单独地执行,但是一起执行命令包中的多个命令更有效。因此,命令从主机设备被收集并保留在队列中,直到指定的事件出现。当指定的事件出现时,命令被一起智能地分组到命令包中。命令包接着沿着通道被执行,从而提高了性能。
[0044] SSD包括多个通道。通道是一种通信介质。通道用于执行命令。在一个实例中,SSD可包括16个通道。用于执行命令的通道的数量至少部分地基于命令长度。在一个示例中,如果命令为14个块长,则14个通道用于执行该命令。其余的两个通道保持闲置。
[0045] 大的命令使用很多通道,而较小的命令使用较少的通道。在一个示例中,具有一个块长度的命令使用一个通道。如果命令被单独执行,则15个通道保持闲置。使15个通道保持闲置是极大的资源浪费。为了帮助减轻资源浪费,命令被一起执行。命令被智能地分组在一起,所以一次执行较多的命令。
[0046] 图3公开了不同的命令执行格式的时序图。时序图100和110示出命令准备。时序图100示出与被单独准备和整体准备的命令相关的时序。在100中示出的命令不进行命令打包。在不进行命令打包时,大量时间被花费来准备每个命令。时序图110示出与被单独但仅仅部分地准备的命令相关的时序。部分准备比整体准备花费更少的时间。
[0047] 时序图120和130示出与命令执行相关的时序。时序图130还示出与命令打包相关的时序。时序图130是时序图110的继续。在时序图110中,命令被部分地准备。如时序图130所示,命令被打包以整体地准备。接着执行命令包。时序图120示出与在不进行命令打包而执行命令时相关的时序。时序图120是时序图100的继续。如图所示,时序图110和130示出比时序图100和120花费更少的被消耗的时间。例如在图3中,时序图100和120在命令17结束之后结束。该时间点出现得比在时序图110和130中最后一个命令(亦表示命令17)完成时更晚。命令17没有在时序图130中标出,因为它与一组命令一起被打包并执行。因此,使用命令打包使命令执行更有效。
[0048] 图4示出填充有用于在SSD上执行的命令的队列200。队列200中的命令具有五个字段。这些字段是标记、上一个、下一个、逻辑块地址(LBA)和长度。这些字段显示关于命令的信息。在一个示例中,LBA公开了命令的第一存储器单元,而上一个和下一个是对其它命令的指针。下面是用于构造队列200中的命令的伪代码:
[0049] typedef struct uQCmdEntry
[0050] mUINT_32 count;
[0051] struct uQCmdEntry*pNext;
[0052] struct uQCmdEntry*pPrevious;
[0053] mUINT_32 1ba;
[0054] mUINT_16 auDone;
[0055] mUINT_8 tagNum;
[0056] union{
[0057] mUINT_8 all;
[0058] struct{
[0059] mUINT_8 trkEnd:1;
[0060] mUINT_8 opTypeWr:1;
[0061] mUINT_8 reserved:6;
[0062] }bits;
[0063] uFlags;
[0064] }mtUQ_CMD_ENTRY
[0065] 从本公开和从这里的教导中,本领域的普通技术人员应认识到,其它代码也可用于构造队列200中的命令。
[0066] 图5示出16个通道(0-15)以及与通道(0-15)相关的存储器单元。例如,通道2与存储器单元2、18、34、50、66和82相关。
[0067] 图6示出队列200和队列200中的命令如何与通道(0-15)相关。例如,通道2与标记值为1的命令410和标记值为5的命令420相关。命令1的LBA值为50,而命令5的LBA值为82。命令1和5与通道2相关,因为通道2用于访问存储器单元50和82。通道用于访问某些存储器单元的命令。
[0068] 图7示出16个通道(0-15)以及与通道(0-15)相关的标记线。图7包括标记线500和510。标记线510包括头部520、尾部530和计数540。头部520指示与通道2相关的第一个命令。尾部530指示与通道2相关的最后一个命令。计数540指示标记线的通道的命令数量。标记线510基于命令410和命令420(图6)。命令410的标记值为1。命令
410是通道2的第一命令。头部520是1,因为通道2上的第一个命令的标记值为1。命令
420的标记值为5。命令420是通道2的最后一个命令。尾部530是5,因为通道2上的最后一个命令的标记值为5。因为通道2具有两个命令,所以标记线510的计数540是2。用于构造标记线510的示例性伪代码包括:
[0069] typedef struct{
[0070] mtUQ_CMD_ENTRY*pHead;
[0071] mtUQ_CMID_ENTRY*pTail;
[0072] mUINT_16 count;
[0073] }mtNvCmdTag;
[0074] 用于构造标记线的阵列的示例性伪代码包括:
[0075] typedef struct{
[0076] mtNvCmdTag nvCmdTagLines[16];
[0077] mUINT_32 totalBlock;
[0078] mUINT_16 numEntries;
[0079] mUINT_16 nextTag;
[0080] }mtNvCmdReqPool,
[0081] 从本公开和从这里的教导中,本领域的普通技术人员应认识到,其它代码也可用于构造标记线的阵列或单独的标记线。
[0082] 图8示出队列200中的命令如何链接在一起。通道2与命令1和5相关。队列200具有弯曲箭头。弯曲箭头将命令1和5链接在一起。弯曲箭头表示队列200中的命令*
之间的关系。队列200帮助解释命令中的指针。对于命令1,上一个指针是 n,而下一个指*
针是 5。因为命令1是为通道2列出的第一个命令,所以没有上一个指针,且示出空白的字* * *
段 n。因为命令5跟随命令1,所以下一个指针是 5。“5”指示命令5跟随命令1。命令5* *
包括上一个指针 1,和下一个指针 n,这是因为命令5跟随命令1,且没有命令跟随通道2中的命令5。
[0083] 智能打包允许一次执行多于一个的命令。命令打包出现在传递中。下面是图8中的示例性的命令打包传递。命令0与通道0相关。命令0是3个块长。因为命令0是三个块长,所以通道0、1和2被占用。通道3跟随通道2。通道3被检查,且没有命令使用通道3。因此,通道3被跳过。通道4跟随通道3。通道4与命令2相关。命令2是1个块长。
因为通道4未被使用,所以命令0和2被关联在一起,以形成命令包。遵循上面的模式,命令3、10、11和9被添加到命令包。命令9是2个块长。命令9占用通道13,所以通道13不能用于在该命令包中的命令8。命令14也被添加到命令包。在该命令包中使用十个通道。
使用十个通道比传统操作中仅使用三个通道更有效,传统操作中命令0可被单独发送。命令打包便于同时以不同的命令使用多个通道。
[0084] 图9示出队列200中的命令如何根据打包重新链接在一起。如图8所示,在队列200中,命令2与命令6链接,而如图9所示,在队列200中,命令2与命令0和命令3链接。
链接发生变化,所以关系是基于命令包而不是通道的。图8进一步示出命令包710中的命令之间的关系700。在一个实施方式中,命令打包持续到所有的命令被执行为止。在一个示例中,三个命令包被形成并被执行,以传递保持在队列200中的18个命令。相比发生18个命令执行实例,命令打包可提供更快的响应。因此,方法1000和/或装置1200执行的命令打包提高了性能。
[0085] 图10示出在执行了图8所述的命令包之后的标记线。标记线800不同于图7中的标记线500。因为命令在通道1上被执行,所以一个命令(命令4)保留。标记线800的头部和尾部都是4,因为第一个命令和最后一个命令都是命令4。因为对通道0有一个命令,所以标记线800的计数现在是1。在图8所述的命令打包传递中不执行来自通道2的命令。由于没有执行来自通道2的命令,所以标记线810与图7的标记线510相比未发生改变。
[0086] 图11示出在第二命令打包传递发生和第二命令包被执行之后的标记线。通道0不再有标记线,因为通道2上的全部命令都被执行了。在与图10中的标记线810的情况类似的情况下,通道2上的标记线910改变。在另一命令打包和命令包执行之后,不再留有命令。因此,18个命令通过执行三个命令包而被执行。
[0087] 至于术语“包括(includes)”或“包括(including)”在详细描述或权利要求中使用的程度,它被规定为包括在内的,类似于术语“包含comprising”当被用作权利要求中的过渡词时所作出的解释。
[0088] 虽然通过描述示例来示出示例性系统、方法等,且虽然示例以相当大的细节被描述,但是申请人的意图不是将所附权利要求的范围限制或以任何方式限制到这样的细节。当然,不可能为了描述这里所述的系统、方法等的目的来描述部件或方法的每个可以想到的组合。因此,本发明不限于所示和所述的特定细节、代表性装置和例证性示例。因此,本申请旨在包括落在所附权利要求的范围内的变更、修改和变化。