详细描述
发明人理解对于多处理器计算机中的某些中断,诸如告知分配给设备的输入/输出(I/O)操作完成的那些中断,处理该中断的效率可随处理器变化。此外,每一个处理器执行操作的效率可以是基于邻近度的。因此,在本发明的各实施例中,可出于定义中断消息的目的基于邻近度来对处理器分组。基于邻近度的分组可包括具有与该分组中的其他处理器的接近物理邻近度和/或具有便于在分组的处理器之间进行高效通信的邻近度的处理器。
例如,在I/O操作之后执行的完成处理中,发起I/O操作的处理器能够更高效地访问完成该处理所必需的信息或指令。这种情况可能由于发起操作的处理器可具有存储在该处理器可优先访问的本地高速缓存或其他存储器位置中的在完成I/O操作或后续相关处理时使用的信息或指令而出现。结果,该处理器能够比其他处理器更高效地执行完成该操作的处理或相关处理。
对于执行相同操作的另一处理器,在发起I/O操作的处理器向执行完成处理的处理器提供信息时,可能存在与处理器间通信相关联的效率损失。该效率损失对于在与发起中断的处理器相同的处理器组中的其他处理器而言可能较少,因为对于基于邻近度的各组中的处理器的处理器间通信可以比不同组中的处理器之间的处理期间通信更高效。此外,该效率损失可基于各组之间的邻近度。作为一示例,被物理地实现为同一半导体芯片中的核的处理器可以使用片上电路来通信,这很有可能比芯片间通信电路更快。因此,单个半导体芯片上的核可形成基于邻近度的处理器组。同样,安装在同一印刷电路板(PCB)上的芯片中的处理器可以比不同PCB上的跨总线通信的处理器更高效地通信。
基于邻近度的效率差异并非限于物理处理器的现象。在具有虚拟处理器的系统中,主存在同一物理处理器上的虚拟处理器可以比主存在不同物理处理器上的虚拟处理器更高效地执行处理期间交互。因此,多处理器计算机系统中的处理器可形成组,并且某些组中的处理器可以比其他组中的处理器更高效地执行特定操作。
发明人理解基于邻近度的分组可用于提高基于总线消息来告知中断的计算机中的效率,如发生在通过PCI总线根据MSI-X协议来操作的计算机中。这一系统中的发出中断的每一个设备都可具有有限数量的可用消息并因此在可被中断确定为目标的处理器数量方面受限。结果,设备可能不具有可用于将用于执行中断所触发的处理的最高效的处理器确定为目标的消息。然而,通过为设备适当地定义消息,可以增加设备将具有将与最高效处理器的接近邻近度内的处理器确定为目标的消息的可能性。
在以此方式定义消息的情况下,在完成操作后,设备可使用将高效处理器确定为目标的消息来向处理器发出中断。如果最高效的处理器不在为设备定义的消息的目标处理器中,则可将来自与最高效处理器相同的组或者在与包含最高效处理器的组的接近邻近度内的组中的另一处理器选为目标处理器。因此,通过为设备适当地定义供使用的消息,减少了每一中断的平均处理。
发明人理解将消息均匀地分布在基于邻近度的处理器组中的处理器上还可有助于通过避免使任何特定处理器过载来提高计算效率。例如,如果多个设备连接到计算机,则不利的(低效的)消息分配可导致各消息同时将同一处理器确定为目标。本发明减少了不平衡队列将在任一个处理器处累积的可能性。即使不平衡还没严重到导致大型队列的程度,处理器的恒定中断也可阻止其执行其他功能。因此,在某些实施例中,消息定义还可将处理负载均匀地分布在每一组中且整个计算机系统中的所有处理器上。但是在其他系统中,可通过将中断集中在一个或几个处理器中来提高效率,并且可构造将消息集中在一个或几个处理器上的实施例。
图1描绘了其中可使用本发明的各实施例的计算机系统100。系统100包括多个物理和虚拟处理器。在图1的示例中,示出了处理器1221,...,1224,1241,...,1244和1261,...,1264。每一个处理器都可以在一个或多个半导体芯片上实现,且每一个半导体芯片都支持一个或多个处理器。系统100被示为具有半导体芯片1201、1202和1203。为简明起见示出了十二个处理器和三个半导体芯片,但处理器和半导体芯片的数量在本发明中不受限制并且可以使用任何合适的数量。
可以如本领域中所已知的那样实现每一个半导体芯片。在图1的示例中,半导体芯片1201和1202是四核半导体芯片,且每一个核都可用作处理器。半导体芯片1203是单核芯片。这些半导体芯片可以从诸如英特尔公司等来源购得。
图1示出每一个处理器不必对应于单独的物理电路。这些处理器中的一个或多个可以是虚拟处理器。在图1的示例中,处理器1261...1263被实现为虚拟处理器。虚拟处理器1261...1263可以使用在计算机100的操作系统中执行的已知虚拟化软件来实现。然而,在本发明的各实施例中,半导体芯片和物理或虚拟处理器可以按任何合适的方式实现或者可从任何合适的来源获得。
芯片1201和1202安装在印刷电路板(PCB)1101上,而芯片1203安装在PCB 1102上。尽管示出了两个PCB,但PCB的数量不是本发明的限制并且可使用任何合适的数量。
不同PCB上或计算机系统100的不同部分上的组件可通过一个或多个总线来通信。处理器可通过一个总线通信,而I/O设备可通过另一总线通信。在图1的示例中,为简明起见只示出了单个总线。在这一实施例中,芯片1201上的处理器可以使用总线130来与芯片1203上的处理器通信。总线130可以是如本领域内已知的标准化总线。例如,总线130可以是PCI总线。然而,总线130的构造和协议对于本发明并非关键并且可以在本发明的各实施例中使用任何合适的一个或多个总线。
在操作中,处理器可执行诸如应用程序软件或操作系统软件等基于计算机100的所需功能来执行功能的软件。某些功能可涉及单独在处理器中执行的操作。其他功能可涉及分配给设备1401...1403的操作。图1中的处理器可以通过总线130与设备1401、1402、1403进行通信,包括将操作分配给设备1401...1403。
作为与一个或多个处理器进行通信的结果,每一个设备都可处理分配给它的操作。在本发明的各实施例中,设备可执行I/O操作或任何其他合适类型的操作。这些设备可包括硬盘、声音和视频捕捉卡、网络卡、或任何其他合适的设备。为简明起见在系统100中示出了三个设备,但设备的数量不是本发明的限制并且可使用任何合适的数量。
有时,设备可发出中断以便由处理器来服务。这些中断可包括对处理器执行完成处理器的请求。在所示实施例中,设备使用总线消息来向处理器告知中断。每一个设备都具有用于向目标处理器发送中断的固定数量的可用消息。例如,设备1401具有三个消息1421、1422、1423,这三个消息可将计算机系统100中的任意三个处理器确定为目标。在本发明的各实施例中,这些消息可根据用于传送这些消息的总线的合适协议来格式化。例如,PCI设备可利用根据MSI-X协议来操作的消息。尽管图1分别将设备1401、1402和1403限于三个、两个和三个消息,但对设备可用的消息数量不是本发明的限制并且可使用任何适当的数量。
在操作中,消息1421...1423、1441、1442、1461...1463中的每一个都可由在一个或多个处理器上执行的操作系统软件来定义。然而,根据本发明的各实施例,消息可以按任何合适的方式来定义。在所示示例中,定址每一个消息以便将计算机系统100中的物理或虚拟处理器中的中断处理程序确定为目标。还格式化消息以便向该中断处理程序指示该消息所表示的中断告知特定设备已完成分配到的操作。
已定义的消息可用作包括将操作1401...1403分配给设备的操作计算机系统100的过程的一部分。例如,图2是示出现有技术多处理器计算机系统100中的输入/输出(I/O)操作的发起和完成的框图。该I/O操作过程200包括子过程210,该子过程包括处理器所采取的初始动作。即,在框212,处理器从正在执行的应用程序或其他软件接收对I/O操作的请求。在框214,该处理器将I/O操作分配给特定设备,并且然后在框216,返回到执行其他任务。
同时,在框220设备执行分配给它的I/O操作。在框230,设备通过使用消息来生成中断来通知计算机I/O操作已完成。所发送的消息可选自为该设备预定义的一组消息,诸如消息1421...1423、1441、1442、1461...1463。接收处理器(不一定是在框210发起该操作的同一处理器)然后在框240处理该中断,由此完成I/O操作。这一完成处理可以是如本领域内所已知的那样。然而,在本发明的各实施例中,可以执行任何合适的完成处理。
发明人理解可通过适当地定义用于告知分配到的操作已完成的消息来提高将操作分配给设备的效率。某些处理器可以比其他处理器更高效地为某些中断服务,并且通过定义消息以增加高效处理器是预定义消息的目标的可能性,可提高总效率。处理器之间的执行完成处理的效率变化的一个原因是在同一芯片中实现的处理器可使用片上电路来通信,该片上电路很有可能比可用于在同一PCB上的不同芯片上的处理器之间进行通信的芯片间电路更快。相反,通过连接PCB的总线的处理器间通信很有可能比同一PCB或同一芯片上的处理器之间的通信更慢。因为完成处理可能需要处理器之间的通信,所以执行处理器间通信的效率可以影响执行完成处理的总效率。
例如,如果发起处理器和完成处理器是同一个处理器或者至少彼此在接近物理邻近度内以使得处理器间通信是高效的,则可提高执行I/O操作的效率。发起操作的同一处理器可以有利地访问完成该操作所需的信息和指令。结果,该处理器可以比其他处理器更高效地执行完成处理。或者,如果相同的发起处理器对于完成不可用,则分组在发起处理器的接近物理邻近度内的处理器可以是比位于该分组之外的处理器更高效的选择。
在本发明的各实施例中,处理器可被设计成特定的基于邻近度的组的一部分以使得所有处理器都具有与它们的组中的其他处理器的接近物理邻近度,和/或具有便于在分组的处理器之间进行高效通信的邻近度。各组可包括不同的处理器集合或者可重叠并由此产生包含相同的一个或多个处理器的多个组。然后可以在建立供诸如设备1401...1403等设备用来在告知关于分配到的操作的完成处理的中断时使用的消息时使用已定义的处理器组。每一个设备的消息集的目标处理器可以按增加可高效地执行完成处理的处理器是为该设备定义的消息的目标的可能性的方式来定义。
在如图1所示的系统中,例如,本发明的一实施例可指定位于单个半导体芯片1201、1202或1203上的那些处理器形成基于邻近度的处理器组。芯片1201和1202位于印刷电路板(PCB)1101上,而芯片1203位于PCB 1102上。因为安装在同一PCB上的芯片中的处理器很有可能比不同PCB上的通过总线通信的处理器更高效地通信,所以本发明的一实施例可将PCB 1101上的处理器描述为在第一组中,而在PCB 1102上的那些处理器在第二组中。或者,一个半导体芯片中的核的彼此同它们与单独半导体芯片中的核相比在更接近的邻近度内。在图1的示例中,核1221...1224可被认为形成第一组。半导体芯片1202中的核1241...1244可被认为是第二组。半导体芯片1203中的物理和虚拟处理器可被认为是第三基于邻近度的组。此外,不存在阻止在本发明的单个实现中使用诸如以上给出的多个邻近组定义。
为了促进由于利用这些基于邻近度的处理器分组而引发的效率提升,图3所示的本发明的一示例实施例使用定义中断消息并将其分配给设备以增加设备将具有可将高效处理器确定为目标的可用消息的可能性的过程。例如,在图1中,设备1401具有三个消息1421、1422、1423,这三个消息可将计算机系统100中的任意三个处理器确定为目标。在现有技术系统中,可能将这些消息的目标确定为单个处理器或者同一芯片上的各个处理器。相反,图3中的实施例所示的过程将确保将这些消息均匀地分布在基于邻近度的处理器组上,且每一个消息都将不同芯片上的处理器确定为目标。
作为一特定示例,设备1401能够存储的这三个消息1421...1423中的每一个都可将通过使用不同的半导体芯片1201...1203来创建的各个基于邻近度的组中的不同组中的处理器确定为目标。作为一特定示例,消息1421可将核1221确定为目标,消息1422可将核1241确定为目标,而消息1423可将虚拟处理器1261确定为目标。
可供设备1403使用的三个消息1461、1462、1463中的每一个都同样可将存在于计算机系统100(图1)中的三个基于邻近度的组中的每一组中的处理器确定为目标。设备1403中的消息可将被设备1401中的消息确定为目标的相同的三个处理器确定为目标。然而,发明人理解,如果消息目标分布在所有处理器上以使得没有处理器被频繁地中断而导致该处理器不高效地执行其他操作,则也可提高计算机系统100的操作效率。因此,在某些实施例中,为设备1403创建的消息1461...1463将与为设备1401创建的消息1421...1423不同的处理器确定为目标可以是合乎需要的。例如,消息1421可将核1221确定为目标,而消息1461可将核1223确定为目标。消息1422可将核1241确定为目标,而消息1462可将核1242确定为目标。同样,消息1423可将虚拟处理器1261确定为目标,而消息1463可将虚拟处理器1263确定为目标。这种将消息分布在处理器上的模式可以在为所有设备分配消息时使用。例如,设备1402的消息1441可将核1222确定为目标,而消息1442可将虚拟处理器1262确定为目标。以此方式,为任一个设备定义的消息可以分布在基于邻近度的组上,并且为所有设备共同定义的消息可以分布在系统100中的处理器上。在其他实施例中,对于将给定的基于邻近度的组中的处理器确定为目标的所有设备而言,使其消息去往同一处理器或该组中的总处理器集的子集可以更高效。
图3示出了本发明的某些实施例中的可以实现这一分布的过程。图3的过程可由计算机的操作系统或任何其他合适的组件来执行。该过程可以在计算机开始操作时或在操作期间检测到设备时执行。具体而言,过程300可开始于框310,在那里计算机系统100发现什么设备连接到它。
框316处的处理建立系统中的基于邻近度的处理器分组的最大数量N以及组i中的处理器的最大数量Mi,其中i属于集合{1,2...N}。处理器组可基于其上执行过程300的计算机系统100的体系结构来定义。可以使用任何合适的邻近度定义来定义组。例如,在图1的实施例中,处理器基于其上实现这些处理器的特定半导体芯片来被分成各个组。在其他实施例中,组可基于其中物理地实现处理器的特定PCB来定义。在其他情况下,可使用处理器间通信所需的时间的度量来定义相同的基于邻近度的组中的处理器。在其他实施例中,可使用这些因素的组合来定义组,或者组可以嵌套以形成分层结构。例如,表示物理芯片的插槽可具有多个核,这些核中的每一个都可进而具有多个虚拟处理器。这些处理器可以在任一层分组或嵌套。虽然图3的实施例只在各组的单个层上操作,但其他实施例可迭代通过该分层结构的每一层以选择要分配的消息目标。不管组是如何定义的,框316处的处理确定组数以及每一组中的处理器的数量。
图3的过程被示为是迭代过程。该过程在将为其定义消息的每一个设备上迭代并且在将为每一个设备定义的每一个消息上迭代。在所示实施例中,在各迭代之间维护状态信息。在图3的示例中,在计数器中维护状态信息,但可使用任何合适的机制来维护状态信息。因此,过程300的开始部分涉及初始化维护状态信息的计数器。在框320,初始化计数器变量n和P1...N。变量n表示正在考虑的当前组并且其值范围可以在0到N-1。变量Pi表示组i中的正在考虑的当前处理器,其中i属于集合{1,2...N-1}而Pi的值的范围从0到Mi-1。因此,根据该实施例,n和Pi都被初始化为值0,这指示将首先考虑第一组和该组中的第一处理器。各组以及这些组中的处理器可以按任何合适的方式排序并且不是本发明的限制。
在框330,在第一次执行时,考虑第一设备,并且在框340,在第一次执行时,考虑将要分配给该设备的第一消息。在框350,在第一次执行时,将该第一消息定义为将第一组中的第一处理器确定为目标,如计数器变量n和Pi的当前状态所表示的。
为了将消息均匀地分布在各组和各组中的处理器上,框360和370递增计数器变量以使得接下来考虑下一组和该组中的第一处理器。框360和370处的递增计数器使用模算术来完成。模算术使得计数器在达到其最大值时回绕。例如,在框360,计数器Pn跟踪组n中的最近分配的处理器。计数器Pn不应等于或超过指示组n中的处理器的数量的值Mn。因此,如果框360处的递增操作将使得Pn等于值Mn,则Pn的值回到0。同样,框370处的处理作为模递增来执行。在框370处递增的值n表示正在处理的当前组。在所示实施例中,因为存在N组,所以n的值不应等于或超过N。当n的值递增为等于N时,该值回绕并且n被设为0。
如果第一设备还有需要分配给它的消息,则该过程从判定框380分叉到框340,在那里标识下一消息。该消息随后被定义为将该第二组和该组中的第一处理器确定为目标。
为第一设备的消息分配目标的过程将以此方式迭代地继续。对于将要为该第一设备创建的每一个新消息,该过程将在组间移动,在来自最后一组的处理器被指定为消息目标时返回到第一组。在每一组中,目标处理器将轮转并且将在已分配最后一个处理器时返回到组中的第一处理器。
该过程可继续直到已经为该第一设备定义了足够的消息。对于每一个剩余设备,然后从框330重复该过程(框390)。处理可以在任何合适的时刻循环返回到框330。例如,过程300可以继续循环返回到框330直到已经处理了在计算机启动时检测到的所有设备。如果在某一稍后时刻检测到新设备,则过程300可以继续框330处的处理。通过在框330处继续,该过程可以在不在框320处重新初始化计数器的情况下继续。以此方式,将消息分布在各处理器组上的迭代过程甚至对于在初始启动之后发现的设备也可继续。这一能力例如可用于配置有“即插即用”体系结构的计算机。即插即用体系结构可允许计算机检测到新添加的设备。然而,不管设备是如何发现的,过程300都可用于高效地将目标分配给每一个设备所使用的消息。
作为图3的实施例的一特定示例,过程300中的每一组中的处理器可适用于图1的计算机系统100。在这样做时,芯片1201、1202、1203可构成感兴趣的N=3组。消息1421、1422和1423可被定义为分别将处理器1221、1241和1261确定为目标。消息1441和1442可被定义为分别将处理器1222和1242确定为目标。并且,消息1461、1462和1463将被定义为分别将处理器1262、1223和1243确定为目标。以此方式,实现了这些消息在各组以及这些组中的处理器上的平衡分布。
一旦已经定义了消息,这些消息就可用作计算机中的正在进行的处理的一部分。图4示出了可使用已定义的消息的过程的一个实施例。即,根据本发明的各实施例,过程400展示处理器可以在为设备分配操作时向该设备建议消息。具体而言,在框410,处理器选择为请求服务的设备。这一请求可以是从正在执行的应用程序或其他软件接收到的任何合适的请求(诸如对I/O操作的请求)。
然而,不管请求是如何发起的,响应该请求的处理器可标识执行在完成该请求时使用的操作的设备。作为一示例,处理来自盘驱动器的信息请求的处理器可标识盘驱动器需要执行读操作以使得该处理器能够完成该请求。在该示例中,在框410处选择的设备可以是盘驱动器。
不管该设备是如何为框410处所标识的请求服务的,该过程继续至框420。处理器确定什么中断消息对所选设备可用(框420)。处理器标识为预期完成中断服务的高效处理器(框430)。这一高效处理器可以按任何合适的方式来标识并且可以取决于将要由该设备执行的操作的特性。例如,基于在框410处接收到的请求的特性,处理器可确定它将利用因对该请求的完成处理而变得可用的数据。在这种情况下,该处理器可将其自身选为最高效的处理器。在其他情况下,处理器可标识作为完成处理的结果,数据将被传递至不同的处理器。在这种情况下,将接收该数据的处理器可被标识为执行完成处理的最高效的处理器。然而,用于标识最高效的处理器的特定准则不是本发明的限制。
如果对设备可用的中断消息的列表(如在框420中所确定的)包括将所标识的高效处理器确定为目标的中断消息,则该过程从判定框440分叉到框460。在框460,向设备发送当在完成所请求的操作后发送其服务完成中断时使用将所标识的处理器确定为目标的消息的建议。关于设备应使用哪一个消息来告知它已完成分配到的操作的建议对于本发明并非关键。所建议的消息可以作为将操作分配给设备的一部分或者以任何其他合适的方式来发送。
另一方面,如果高效处理器未被在框420中标识的可用消息中的任一个确定为目标,则该过程从判定框440分叉到框450。在框450可标识下一最接近的处理器。下一最接近的处理器能够以任何合适的方式来标识。在所示实施例中,使用具有与该分组中的其他处理器的接近物理邻近度和/或具有便于在分组的处理器之间进行高效通信的邻近度的处理器的基于邻近度的分组来标识处理器的相对接近度。
不管在框450处如何标识下一最接近的处理器,该过程循环返回至判定框440。在判定框440,再次检查所标识的处理器是否是要处理操作的设备的消息的目标。如果所标识的处理器不是消息的目标,则该过程再次循环返回至框450,在那里标识下一最接近的处理器。该过程可以按此方式继续直至标识到作为对要执行操作的设备可用的消息的目标的处理器。一旦发现消息具有匹配的目标处理器,则将该消息选为处理器将建议所选设备应当用来发送其服务完成中断的消息(框460)。
发明人理解,由于确保在基于邻近度的处理器组上取得平衡并且进一步在各组中的处理器上取得平衡的消息分布的对消息的初始定义和到设备的分配(诸如图3所示的实施例),与现有技术相比,过程400很有可能提高将操作分配给设备的效率。
至此描述了本发明的至少一个实施例的若干方面,可以理解,本领域的技术人员可容易地想到各种更改、修改和改进。
这样的更改、修改和改进旨在是本发明的一部分,且旨在处于本发明的精神和范围内。因此,上述描述和附图仅用作示例。
可以用多种方式中的任一种来实现本发明的上述实施例。例如,可使用硬件、软件或其组合来实现各实施例。当使用软件实现时,该软件代码可在无论是在单个计算机中提供的还是在多个计算机之间分布的任何合适的处理器或处理器集合上执行。
此外,应当理解,计算机可以用多种形式中的任一种来具体化,如机架式计算机、台式计算机、膝上型计算机、或平板计算机。另外,计算机可以具体化在通常不被认为是计算机但具有合适的处理能力的设备中,包括个人数字助理(PDA)、智能电话、或任何其他合适的便携式或固定电子设备。
同样,计算机可以具有一个或多个输入和输出设备。这些设备主要可被用来呈现用户界面。可被用来提供用户界面的输出设备的示例包括用于可视地呈现输出的打印机或显示屏和用于可听地呈现输出的扬声器或其他声音生成设备。可被用于用户界面的输入设备的示例包括键盘和诸如鼠标、触摸板和数字化输入板等定点设备。作为另一示例,计算机可以通过语音识别或以其他可听格式来接收输入信息。
这些计算机可以通过任何合适形式的一个或多个网络来互连,包括作为局域网或广域网,如企业网络或因特网。这些网络可以基于任何合适的技术并可以根据任何合适的协议来操作,并且可以包括无线网络、有线网络或光纤网络。
而且,此处略述的各种方法或过程可被编码为可在采用各种操作系统或平台中任何一种的一个或多个处理器上执行的软件。此外,这样的软件可使用多种合适的程序设计语言和/或程序设计或脚本工具中的任何一种来编写,而且它们还可被编译为可执行机器语言代码或在框架或虚拟机上执行的中间代码。
就此,本发明可被具体化为用一个或多个程序编码的一个或多个计算机可读介质(例如,计算机存储器、一个或多个软盘、紧致盘、光盘、磁带、闪存、现场可编程门阵列或其他半导体器件中的电路配置、或其他有形计算机存储介质),当这些程序在一个或多个计算机或其他处理器上执行时,它们执行实现本发明的上述各个实施例的方法。这一个或多个计算机可读介质可以是便携的,使得其上存储的一个或多个程序可被加载到一个或多个不同的计算机或其他处理器上以便实现本发明上述的各个方面。
此处以一般的意义使用术语“程序”或“软件”来指可被用来对计算机或其他处理器编程以实现本发明上述的各个方面的任何类型的计算机代码或计算机可执行指令集。另外,应当理解,根据本实施例的一个方面,当被执行时实现本发明的方法的一个或多个计算机程序不必驻留在单个计算机或处理器上,而是可以按模块化的方式分布在多个不同的计算机或处理器之间以实现本发明的各方面。
计算机可执行指令可以具有可由一个或多个计算机或其他设备执行的各种形式,诸如程序模块。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,在各实施例中,程序模块的功能可以视需要组合或分散。
而且,数据结构能以任何合适的形式存储在计算机可读介质上。为简化说明,数据结构可被示为具有通过该数据结构中的位置而相关的字段。这些关系同样可以通过对各字段的存储分配传达各字段之间的关系的计算机可读介质中的位置来得到。然而,可以使用任何合适的机制来在数据结构的各字段中的信息之间建立关系,包括通过使用指针、标签、或在数据元素之间建立关系的其他机制。
本发明的各个方面可单独、组合或以未在前述实施例中具体讨论的各种安排来使用,从而并不将其应用限于前述描述中所述或附图中所示的组件的细节和安排。例如,可使用任何方式将一个实施例中描述的各方面与其他实施例中描述的各方面组合。
同样,本发明可被具体化为方法,其示例已经提供。作为该方法的一部分所执行的动作可以按任何合适的方式来排序。因此,可以构建各个实施例,其中各动作以与所示的次序所不同的次序执行,不同的次序可包括同时执行某些动作,即使这些动作在各说明性实施例中被示为顺序动作。
在权利要求书中使用诸如“第一”、“第二”、“第三”等序数词来修饰权利要求元素本身并不意味着一个权利要求元素较之另一个权利要求元素的优先级、先后次序或顺序、或者方法的各动作执行的时间顺序,而仅用作将具有某一名字的一个权利要求元素与(若不是使用序数词则)具有同一名字的另一元素区分开的标签以区分各权利要求元素。
同样,此处所使用的短语和术语是出于描述的目的而不应被认为是限制。此处对“包括”、“包含”、或“具有”、“含有”、“涉及”及其变型的使用旨在包括其后所列的项目及其等效物以及其他项目。