在从驱动器被发送到主机装置的信息中插入间隔的制作方法

文档序号:6350393阅读:189来源:国知局
专利名称:在从驱动器被发送到主机装置的信息中插入间隔的制作方法
技术领域
本发明涉及存储器系统,并且更特别地,涉及在驱动器开始发送数据时在驱动器处从主机装置接收命令。
背景技术
在许多存储系统中,当有冲突时,在发送帧时,目标装置先于主机而具有优先级。在这些情况下,当命令排队时(例如,使用第一方直接存储器存取等),一旦目标已经发送了直接存储器存取(DMA)设置帧信息结构(FIS)以进入数据相位(data phase),则主机通常不能向目标装置发送任何命令。
如果驱动器能够很快地获取数据,则主机能够向驱动器发送等于最大队列深度的命令数。然后,驱动器可以在帧之间没有任何间断的情况下返回DMA设置、数据、DMA设置、数据等。这不允许主机发送任何更多的命令。在这些情况下,驱动器的队列深度可以从最大队列深度振荡到零,回到最大队列深度并再次振荡到零。这可能会负面地影响性能。因此,需要解决与现有技术相关联的这些和/或其他问题。

发明内容
提供了用于在从驱动器被发送到主机装置的信息中插入间隔的系统、方法以及计算机程序产品。在操作时,在驱动器处从主机装置接收一个或多个命令。另外,将信息排队以发送至主机装置。此外,在信息中插入间隔以发送至主机装置,使得主机装置能够向驱动器发送附加命令。


图I示出了根据一个实施方式的用于在从驱动器被发送到主机装置的信息中插入间隔的方法。图2示出了根据一个实施方式的用于在从驱动器被发送到主机装置的信息中插入间隔的系统。图3示出了根据另一个实施方式的用于在从驱动器被发送到主机装置的信息中插入间隔的方法。图4示出了可以实施以上各实施方式的各种架构和/或功能的示例性系统。
具体实施例方式下文与示出了本发明的所选细节的附图一起提供了对本发明的一个或多个实施方式的详细描述。结合实施方式描述了本发明。本文中的实施方式被理解为仅是示例性的,本发明明确地不限于本文中的任一个或全部实施方式,并且本发明包括大量替换、修改和等价物。为了避免论述单调,可以将各种词标签(包括但不限于第一、最后、某个、各个、另夕卜、另一个、特别、选择、一些以及显著的)应用于实施方式的单独集合;如本文所使用的,这种标签明显不旨在表达数量、或任何形式的喜好或偏见,而仅为了便于区分单独的设置。所公开的处理的一些操作的顺序可以在本发明的范围内改变。在以下描述中阐述了大量具体细节来提供对本发明的透彻理解。这些细节为了实施例而提供,并且本发明可以根据权利要求来实践,而无需一些或全部的细节。为了清楚,没有详细描述在本发明的相关技术领域中已知的技术材料,以免不必要地使本发明模糊。引言包括该引言仅是为了便于更快地理解详细描述;任何弓I言的段落需要是整个主题的精简概括,并且不意味着是详尽或限制性的描述,因此,本发明不限于在引言(包括明确的实施例,如果有的话)中给出的概念。例如,以下的引言仅向某些实施方式提供了空间和组织所限制的概括信息。在以下的说明书中通篇还 讨论了很多其他实施方式,包括最终引出权利要求的那些实施方式。提供了用于在从驱动器被发送到主机装置的信息中插入间隔的系统、方法和计算机程序产品。在操作中,在驱动器处从主机装置接收一个或多个命令。另外,将信息进行排队以发送到主机装置。此外,在信息中插入间隔以发送到主机装置,使得主机装置能够向驱动器发送附加命令。实例实施方式结束了详细描述的引言,随后是实例实施方式的集合,至少包括一些明确地列举为“EC” (实施例组合)的实施方式,以提供根据本文中描述的概念的各种实施方式类型的额外描述,这些实施例并不意味着相互排斥、详尽或限制的,并且本发明不限于这些实例实施方式,而是包括所颁布的权利要求的范围内的所有可能的修改和变化。ECl. —种方法,包括在驱动器从主机装置接收一个或多个命令;将信息排队以发送到主机装置;以及在信息中插入间隔以发送到主机装置,使得主机装置能够向驱动器发送附加命令。EC2.根据ECl的方法,其中,插入间隔包括插入时间延迟。EC3.根据EC2的方法,其中,信息包括设置信息和与一个或多个命令中的至少一个相关联的数据。EC4.根据EC3的方法,其中,设置信息包括直接存储器存取(DMA)帧信息结构(FIS)。EC5.根据EC3的方法,其中,设置信息包括设置装置位(setup device bit)FIS。EC6.根据EC3的方法,其中,在发送设置信息之前插入时间延迟。EC7.根据EC3的方法,其中,在发送设置信息之后插入时间延迟。EC8.根据EC2的方法,还包括在时间延迟期间在驱动器处从主机装置接收附加命令。EC9.根据EC2的方法,其中,插入时间延迟包括在信息发送到主机装置期间插入时间延迟。EC10.根据EC9的方法,其中,基于驱动器的当前队列深度来插入时间延迟。
ECll.根据EC9的方法,其中,基于自接收到前一命令以来的时间量来插入时间延迟。EC12.根据EC9的方法,其中,时间延迟的时间长度基于驱动器的当前队列深度。EC13.根据EC9的方法,其中,时间延迟的时间长度基于自驱动器接收到前一命令以来的时间量。EC14.根据EC2的方法,其中,实时确定时间延迟的时间长度和插入时间延迟的时间点中的至少一个。EC15.根据EC2的方法,其中,时间延迟的时间长度和插入时间延迟的时间点中的 至少一个为预定值。EC16.根据EC2的方法,其中,信息包括设置信息,设置信息包括指示时间延迟在设置信息之后的信息。EC17.根据EC2的方法,其中,信息包括状态信息,并在发送状态信息之前插入时间延迟。EC18.根据ECl的方法,其中,插入间隔包括插入附加信息。EC19.根据ECl的方法,其中,在插入间隔之前向主机装置通知间隔。EC20.根据ECl的方法,其中,驱动器包括串行ATA (SATA)驱动器。EC21. 一种嵌入在计算机可读介质上的计算机程序产品,包括用于在驱动器处从主机装置接收一个或多个命令的计算机代码;用于将信息排队以发送到主机装置的计算机代码;以及用于在发送到主机装置的信息中插入间隔使得主机装置能够向驱动器发送附加命令的计算机代码。EC22. —种设备,包括用于从主机装置接收一个或多个命令的驱动器;用于将信息排队以发送到主机装置的缓冲器;以及用于在信息中插入间隔以发送到主机装置使得主机装置能够向驱动器发送附加命令的控制器。E23. 一种系统,包括被使得能够从主机装置接收命令的驱动器,主机装置被使得能够利用使驱动器阻止主机发送附加命令的存储协议而与驱动器通信,驱动器包括控制器,以及缓冲器;以及其中当存在冲突时,驱动器先于主机装置而具有优先级,缓冲器被使得能够将信息排队以发送到主机装置,以及控制器被使得能够在信息中插入间隔,使主机装置能够向驱动器发送附加命令。EC24.根据EC23的系统,其中,控制器进一步被使得能够在驱动器已经开始至少部分地经由向主机装置发送设置信息而向主机装置发送信息之后插入间隔,以使主机装置能够向驱动器发送附加命令。EC25.根据EC24的系统,其中,设置信息包括直接存储器存取(DMA)设置。
EC26.根据EC23的系统,其中,装置包括下列项中的一个或多个串行ATA (SATA)驱动器,串行连接SCSI (SAS)驱动器,光纤通道(FC)驱动器,以及通用串行总线(USB)驱动器。EC27.根据EC23的系统,其中,命令包括下列项中的一个或多个传输请求,
传输数据的命令,访问与驱动器相关联的存储器的一部分的命令,以及提取数据的命令。EC28.根据EC23的系统,其中,信息包括下列项中的一个或多个数据信息,数据结构信息,直接存储器存取(DMA)帧信息结构(FIS),设置装置位FIS,以及与命令中的至少一个相关联的数据。EC29.根据EC 23的系统,其中,间隔包括下列项中的一个或多个打断,中断,以及延迟。EC30.根据EC23的系统,其中,间隔包括下列项中的一个或多个时间延迟,附加信息,间隔的长度,销售商具体信息,以及与间隔相关联的信息。EC31.根据EC23的系统,其中,控制器进一步被使得能够至少部分地基于驱动器的当前命令队列长度来插入间隔。EC32.根据EC23的系统,其中,控制器进一步被使得能够至少部分地基于自接收到前一命令以来的时间来插入间隔。EC33.根据EC23的系统,其中,间隔包括时间延迟,并且控制器被使得能够实时确定时间延迟的长度。EC34.根据EC23的系统,其中,间隔包括时间延迟,并且控制器被使得能够实时确定插入时间延迟的时间点。EC35. 一种方法,包括在驱动器处从主机装置接收一个或多个命令,主机装置被使得能够利用使驱动器阻止主机装置发送附加命令的存储协议而与驱动器通信;将信息排队以发送到主机装置,发送至少部分地经由到主机装置的设置信息;确定是否插入时间延迟;以及
基于确定,有条件地插入时间延迟,以使主机装置能够向驱动器发送附加命令。EC36.根据EC35的方法,其中,设置信息包括直接存储器存取(DMA)设置。EC37.根据EC35的方法,还包括检查与驱动器相关联的缓冲器,以确定是否存在有效排队命令,并且如果存在,则执行该确定。EC38.根据EC35的方法,其中,驱动器包括下列项中的一个或多个串行ATA (SATA)驱动器,串行连接SCSI (SAS)驱动器,
光纤通道(FC)驱动器,以及通用串行总线(USB)驱动器。EC39.根据EC35的方法,其中,命令包括下列项中的一个或多个传输请求,传输数据的命令,访问与驱动器相关联的存储器的一部分的命令,以及提取数据的命令。EC40.根据EC35的方法,其中,信息包括下列项中的一个或多个数据信息,数据结构信息,直接存储器存取(DMA)帧信息结构(FIS),设置装置位FIS,以及与命令中的至少一个相关联的数据。EC41.根据EC35的方法,其中,该确定至少部分地基于驱动器的当前命令队列深度。EC42.根据EC35的方法,其中,该确定至少部分地基于自接收到前一命令以来的时间。EC43.根据EC35的方法,还包括实时确定时间延迟的长度。EC44.根据EC35的方法,还包括实时确定插入时间延迟的时间点。EC45. 一种系统,包括用于在驱动器处从主机装置接收一个或多个命令的装置,主机装置被使得能够利用使驱动器阻止主机装置发送附加命令的存储协议而与驱动器通信;用于将信息排队以发送到主机装置的装置,该发送至少部分地经由到主机装置的设置信息;用于确定是否插入时间延迟的装置;以及用于基于用于确定的装置而有条件地插入时间延迟以使主机装置能够向驱动器发送附加命令的装置。EC46.根据EC45的系统,其中,设置信息包括直接存储器存取(DMA)设置。EC47.根据EC45的系统,还包括用于检查与驱动器相关联的缓冲器以确定当前是否存在有效排队命令的装置;并且其中,用于确定的装置有条件地基于用于检查的装置的结果。EC48.根据EC45的系统,其中,驱动器包括下列项中的一个或多个
串行ATA (SATA)驱动器,串行连接SCSI (SAS)驱动器,光纤通道(FC)驱动器,以及通用串行总线(USB)驱动器。EC49.根据EC45的系统,其中,命令包括下列项中的一个或多个传输请求,传输数据的命令,
访问与驱动器相关联的存储器的一部分的命令,以及提取数据的命令。EC50.根据EC45的系统,其中,信息包括下列项中的一个或多个数据信息,数据结构信息,直接存储器存取(DMA)帧信息结构(FIS),设置装置位FIS,以及与命令中的至少一个相关联的数据。EC51.根据EC45的系统,其中,用于确定的装置至少部分地基于驱动器的当前命令队列深度来运行。EC52.根据EC45的系统,其中,用于确定的装置至少部分地基于自接收到前一命令以来的时间来运行。EC53.根据EC45的系统,还包括用于实时确定时间延迟的长度的装置。EC54.根据EC45的系统,还包括用于实时确定插入时间延迟的时间点的装置。EC55. 一种具有存储在其中的一组指令的有形计算机可读介质,当由计算机执行一组指令时,该有形计算机可读介质使计算机执行包括下列项的功能在驱动器处从主机装置接收一个或多个命令,主机装置被使得能够利用使驱动器阻止主机装置发送附加命令的存储协议而与驱动器通信;将信息排队以发送到主机装置,发送至少部分地基于到主机装置的设置信息;以及有条件地插入时间延迟,以使主机装置能够向驱动器发送附加命令。EC56.根据EC55的有形计算机可读介质,其中,有条件地插入至少部分地基于确定是否插入时间延迟。EC57.根据EC56的有形计算机可读介质,其中,该确定至少部分地基于驱动器的当前命令队列深度。EC58.根据EC56的有形计算机可读介质,其中,该确定至少部分地基于自接收到上一命令以来的时间。EC59.根据EC55的有形计算机可读介质,其中,该功能还包括实时确定时间延迟的长度。EC60.根据EC55的有形计算机可读介质,其中,该功能还包括实时确定插入时间延迟的时间点。EC61.根据EC55的有形计算机可读介质,其中,驱动器进一步包括下列项中的一个或多个串行ATA (SATA)驱动器,串行连接SCSI (SAS)驱动器,光纤通道(FC)驱动器,以及通用串行总线(USB)驱动器。EC62.根据EC55的有形计算机可读介质,其中,命令包括下列项中的一个或多个传输请求,
传输数据的命令,访问与驱动器相关联的存储器的一部分的命令,以及提取数据的命令。EC63.根据EC55的有形计算机可读介质,其中,信息包括下列项中的一个或多个数据信息,数据结构信息,直接存储器存取(DMA)帧信息结构(FIS),设置装置位FIS,以及与命令中的至少一个相关联的数据。图I示出了根据一个实施方式的用于在被从驱动器发送到主机装置的信息中插入间隔的方法100。如图所示,在驱动器处从主机装置接收一个或多个命令。参见操作102。命令可以包括能够被从主机装置发送到驱动器的任何命令或指令。例如,在一个实施方式中,命令可以包括传输数据的命令(例如,传输请求等)。在另一实施方式中,命令可以包括访问与驱动器相关联的存储器的一部分的命令。驱动器可以包括能够存储数据的任何驱动器。例如,在一个实施方式中,驱动器可以包括串行ATA(SATA)驱动器。在各种其他实施方式中,驱动器可以包括但不限于串行连接SCSI (SAS)驱动器、光纤通道(FC)驱动器、或通用串行总线(USB)驱动器和/或任何其他存储装置或驱动器。此外,主机装置可以包括能够向驱动器发送命令的任何装置。例如,在不同的实施方式中,主机装置可以包括台式计算机、膝上型计算机和/或任何其他逻辑类型。另外,主机装置可以采用各种其他装置的形式,包括但不限于个人数字助理(PDA)装置、移动电话
目.-rf* ο如图I进一步所示,将信息排队以发送到主机装置。参见操作104。在一个实施方式中,信息可以在缓冲器或能够将数据排队的装置中排队。信息可以包括任何数据或与数据相关联的信息(例如,数据类型信息、数据结构信息等)。在一个实施方式中,信息可以包括设置信息和与至少一个命令相关联的数据。例如,在驱动器处从主机装置接收的命令可以包括提取数据的命令。然后,驱动器可以将数据和设置信息排队。在一个实施方式中,设置信息可以包括直接存储器存取(DMA)帧信息结构(FIS)。在另一实施方式中,设置信息可以包括设置装置位FIS。应当注意的是,在不同实施方式中,间隔可以基于时间或者基于命令阈值或者基于两者的组合。阈值还可以基于命令的数量和队列深度或其他参数。此外,在信息中插入间隔以发送到主机装置,使得主机装置能够向驱动器发送附加命令。参见操作106。在本说明书的上下文中,间隔是指主机装置能够向驱动器发送命令的打断、中断、或延迟。在不同的实施方式中,间隔可以包括时间延迟或附加信息等。例如,在一个实施方式中,插入间隔可以包括插入时间延迟。在另一实施方式中,插入间隔可以包括插入附加信
肩、O附加信息可以包括任何类型的信息。例如,在一个实施方式中,附加信息可以包括指示间隔的长度的信息。在另一实施方式中,附加信息可以包括销售商具体信息。在又一实施方式中,附加信息可以包括与间隔相关联的信息。在另一实施方式中,信息可以包括设置信息,设置信息包括指示时间延迟在设置信息之后的信息。在该情况下,信息可以包括状态信息,并且时间延迟可以在发送状态信息之前或者在状态信息之后插入。 应当注意的是,可以在发送信息时的任一时间点插入间隔。例如,在间隔包括时间延迟的情况下,可以在发送设置信息之前插入时间延迟。在另一实施方式中,可以在发送设置信息之后插入时间延迟。在这两种情况下,可以在时间延迟期间在驱动器处从主机装置接收附加命令。在一个实施方式中,插入间隔可以包括在正向主机装置发送信息的期间插入间隔。应当注意的是,插入间隔的时间点可以基于各种参数。例如,在一个实施方式中,可以基于驱动器的当前队列深度来插入。在另一实施方式中,间隔可以基于自从接收到前一命令以来的时间量来插入。此外,间隔的长度或大小可以基于各种参数。例如,在一个实施方式中,时间延迟的时间长度可以基于驱动器的当前队列深度。在另一实施方式中,时间延迟的时间长度可以基于自从接收到前一命令以来的时间量。在这两种情况下,作为选择,可以实时确定时间延迟的时间长度或插入时间延迟的时间点中的至少一个。作为另一种选择,时间延迟的时间长度或插入时间延迟的时间点中的至少一个可以为预定值。在该情况下,预定值可以是在硬件或软件中设置的值。现在将陈述关于各种可选架构和特征(通过它们可以实现上述框架)的更详细信息。应当更加注意的是,为了说明的目的而阐述了下面的信息,而不应被理解为以任何形式的限制。下面所述的任何特征可以可选地结合所描述的其他特征或者不排斥所描述的其他特征。图2示出了根据一个实施方式的用于在从驱动器被发送到主机装置的信息中插入间隔的系统200。作为选择,本系统200可以被实施为执行图I的方法100。然而,当然,系统200可以在任何所需的环境中实施。应当注意的是,在本说明书中可以应用上述定义。如图所示,系统200包括用于从主机装置204接收一个或多个命令的驱动器202。此外,系统200包括用于将信息排队以发送到主机装置204的缓冲器206。另外,系统200包括控制器208,用于在信息中插入间隔以发送到主机装置204,使得主机装置204能够在驱动器202已经开始向主机装置204发送信息之后向驱动器202发送附加命令。应当注意的是,驱动器202可以包括诸如SATA驱动器、SAS驱动器、FC驱动器和/或任何其他存储装置或驱动器的各种类型的驱动器。通过在信息中插入间隔,可以配置非常快地提取数据的驱动器,使得当驱动器已经开始发送数据时,其不从最大队列深度振荡到零。
例如,在SATA中,当有冲突时,在发送帧时,目标通常先于主机而具有优先级。另夕卜,通常在SATA中,当将命令排队时(例如,使用第一方直接存储器存取等),一旦目标已经发送了 DMA设置FIS以进入数据相位,则主机不能向目标发送任何命令。如果驱动器真的能够很快地提取数据,则主机能够向驱动器发送等于最大队列深度(例如,32,等)的命令数。通常,驱动器可以然后返回DMA设置、数据、DMA设置、数据等,同时在各帧之间没有间隔。这不允许主机发送任何更多的命令。驱动器的队列深度将从最大队列深度(例如,32,等)振荡到O并从O返回到最大队列深度(例如,32,等)。这可能负面地影响性能。在一些情况下,硬盘驱动器(HDD)很慢,以致于在数据中有间隔,因此不会发生该振荡。然而,对于较快的驱动器,可能发生该振荡。
因此,在一个实施方式中,在向主机装置204发出DMA设置之前,可以插入一个或多个间隔,以使主机装置204向驱动器202发送更多的命令。可以基于包括驱动器202的当前队列深度或自上一个命令开始的时间量的各种参数来插入间隔。在一个实施方式中,插入间隔的时间点可以基于驱动器202的当前队列深度、自上一个命令开始以来的时间量、或者这些或一些其他参数的组合。此外,允许从主机装置204发送命令的间隔的长度还可以基于各种参数。例如,间隔的长度可以基于队列深度、时间或一些其他参数。在各种实施方式中,这些参数可以由主机装置204或驱动器202实时调整。作为选择,参数还可以被设置为固定值。在一个实施方式中,驱动器202可以通过向DMA设置添加信息以指示在该DMA设置之后将有间隔,来向主机装置204发信号。作为选择,主机装置204可以通过向命令中添加信息,来对发送命令的结束发信号。应当注意的是,在一个实施方式中,还可以在发送状态之前插入间隔。这可以代替在DMA设置FIS之前插入间隔来执行,或者除了在DMA设置FIS之前插入间隔之外而另外地执行。图3示出了根据另一实施方式的用于在从驱动器被发送到主机装置的信息中插入间隔的方法300。作为选择,本方法300可以在图I至图2的功能和架构的背景中实施。然而,当然,方法300可以在任何所需的环境中执行。再次,上述定义可以应用于本说明书。如图所示,确定是否存在有效排队命令。参见操作302。在该情况下,有效排队命令可以是与驱动器相关联的缓冲器中的有效排队命令。如果存在有效排队命令,则确定是否插入时间延迟。参见操作304。在一个实施方式中,定时器可以用于插入时间延迟。如果确定插入时间延迟,则插入时间延迟。参见操作306。然后确定系统是否准备好了数据传输。参见操作308。如果系统准备好了数据传输,则发送DMA设置FIS。参见操作310。一旦发送了DMA设置FIS,则完成了数据传输。参见操作312。应当注意的是,DMA设置可以仅仅是用于与命令相关联的一条数据。一旦该条数据已经完成了传输,则可以插入间隔。因此,然后,再次确定是否插入时间延迟。参见操作314。如果确定插入时间延迟,则插入时间延迟。参见操作316。如进一步所示的,确定是否发送设置装置位FIS。参见操作318。如果确定发送设置装置位FIS,则发送设置装置位FIS。参见操作320。
以此方式,即使在驱动器已经开始发送数据时,主机装置也能够向驱动器发送命令。应当注意的是,尽管没有在图3中示出,但可以在时间延迟期间向主机装置发送信息。例如,可以插入关于时间延迟的持续时间的信息或者销售商具体信息。图4是示出了其中可以实施上述各实施方式的各种架构和/或功能的示例性系统400。如图所示,系统400被设置为包括连接至通信总线402的至少一个主机处理器401。系统400还包括主存储器404。控制逻辑(软件)和数据被存储在随机存取存储器(RAM)形式的主存储器404中。系统400还包括图形处理器406和显示器408 (即,计算机显示器)。在一个实施方式中,图形处理器406可以包括多个着色器模块(shader module)、光栅模块等。上述模块中的每一个甚至还可以位于单个半导体平台上 ,以形成图形处理单元(GPU)。 在本说明书中,单个半导体平台可以指基于唯--元半导体的集成电路或芯片。
应当注意的是,“术语”单个半导体平台还可以指模拟芯片上操作并通过利用传统中央处理单元(CPU)和总线实现而做出显著改善的具有增大连接的多芯片模块。当然,各个模块还可以被单独或者根据用户需求而位于半导体平台的各种组合中。系统400还可以包括次存储器400。次存储器400例如包括硬盘驱动器和/或可移除存储驱动器,以表示软盘驱动器、磁带驱动器、光盘驱动器等。可移除存储驱动器以公知的该方式从可移除存储器单元读取和/或向其写入。计算机程序或计算机控制逻辑算法还可以存储在主存储器404和/或次存储器410中。当执行这些计算机程序时,这些计算机程序使系统400执行各种功能。存储器404、存储器410和/或任何其他存储器都是计算机可读媒介的可能实例。在一个实施方式中,以上各图的架构和/或功能性可以在主机处理器401、图形处理器406、能够实现主处理器401和图形处理器406的至少一部分性能的集成电路(未示出)、芯片组(即,被设计为作为单位进行工作并且销售以用于执行相关功能等的一组集成电路)、和/或用于该问题的任何其他集成电路的背景中实现。另外,以上各图的架构和/或功能性可以在通用计算机系统、电路板系统、专用于娱乐目的的游戏机控制系统、特定应用系统、和/或任何其他所需系统的背景中实现。例如,系统400可以采用台式计算机、膝上型计算机和/或其他类型的逻辑的形式。另外,系统400可以采用各种其他装置的形式,包括但不限于个人数字助理装置、移动电话装置、电视机等。进一步地,尽管没有示出,但为了通信,系统400可以耦接至网络[例如,电信网络、局域网(LAN)、无线网、诸如互联网、对等网络、电缆网络等的广域网(WAN)]。尽管以上已经描述了各种实施方式,但应当理解,其仅通过实例而不是限制的方式给出。因此,优选实施方式的宽度和范围不应当由上述实施方式的任一个限制,而是应该仅根据所附权利要求及其等价物来限定。结论在准备文本和附图时,仅仅为了方便,在描述中已经进行了某种选择,除非有相反指示,否则该选择在本质上不应当被理解为表达关于所述实施方式的结构或操作的附加信息。选择的实例包括用于附图编码的名称的特殊组织或分配,以及用于实施方式的特征和元件的标识和引用的元件标识符(标注或数字指示符等)的特殊组织或分配。
词语“包括(includes or including) ”具体地旨在被理解为描述开放范围的逻辑集合的抽象概念,除非其后面明确地跟随有词“在.· ·中”,否则并不意味着表达物理包含。尽管为了描述和理解的清楚,已经在一些细节上描述了上面的实施方式,但本发明不限于所提供的细节。存在很多本发明的实施方式,所公开的实施方式是示例性的而不是限制性的。将理解的是,构造、排列和使用的许多变化也可能与说明书一致,并且它们都在所颁布的专利的权利要求的范围内。例如,根据每个组件块中的各个实施方式,所使用的互联和功能单位位宽、时钟速度以及技术类型都是可变的,向互连和逻辑提供的名称仅为示例性的,并不应理解为限制所描述的概念。流程图的顺序和排列以及流程图处理、动作、和功能元素根据各个实施方式是可变的。并且,除非有明 确地相反阐述,所指定的值范围、所使用的最大和最小值、或其他特殊规格(诸如闪存技术类型、以及寄存器和缓冲器中的条目或级的数量)仅仅属于所描述的实施方式,并且期望追踪实施技术的改善和变化,并不应被理解为限制。可以采用现有技术中已知的功能等效的技术来替代所描述的技术,以实施各种部件、子系统、操作、功能、例程、次例程、线内例程、程序、宏、或其部分。还应当理解,由于实施方式的功能依赖于更快的处理(促进先前在硬件中的功能迁移到软件中)和更高的集成度(促进先前在软件中的功能迁移到硬件中)的技术趋势和设计约束,实施方式的许多功能方面可选地在硬件(即,一般专用电路)或软件(即,经由一些方式的编程控制器或处理器)中实现。各个实施方式中的具体变化包括但不限于分区差异;不同形式因素和配置;不同操作系统和其他系统软件的使用;不同接口标准、网络协议、或通信链路的使用;以及当根据特殊应用的独特功能和业务约束来实施本文中描述的构思时所预期的其他变化。已经用细节和环境背景描述了实施方式,这远远超过所描述的实施方式的许多方面的最小实现的要求。本领域普通技术人员将认识到,一些实施方式省略了公开的部件或特征,而不会改变剩余元件之间的基本合作。因此能理解,所公开的大部分细节不是实施所述实施方式的各个方面所需要的。就剩余元件与现有技术相区分来说,省略的部件和特征并不是对这里描述的概念的限制。设计上的所有这种变化都是对所描述的实施方式表达的教导的非实质改变。还应理解,本文所描述的实施方式对其他计算和网络应用也有广泛应用,并不限于所描述的实施方式的特殊应用或工业。因此,本发明将被理解为包括在所颁布的专利的权利要求范围内的所有可能的修改和变化。
权利要求
1.一种方法,包括 在驱动器处从主机装置接收一个或多个命令; 将信息排队以发送到所述主机装置;以及 在所述信息中插入间隔以发送到所述主机装置,使得所述主机装置能够向所述驱动器发送附加命令。
2.根据权利要求I所述的方法,其中,插入所述间隔包括插入时间延迟。
3.根据权利要求2所述的方法,其中,所述信息包括设置信息和与所述一个或多个命令中的至少一个相关联的数据。
4.根据权利要求3所述的方法,其中,所述设置信息包括直接存储器存取(DMA)帧信息结构(FIS)。
5.根据权利要求3所述的方法,其中,所述设置信息包括设置装置位FIS。
6.根据权利要求3所述的方法,其中,在发送所述设置信息之前插入所述时间延迟。
7.根据权利要求3所述的方法,其中,在发送所述设置信息之后插入所述时间延迟。
8.根据权利要求2所述的方法,还包括在所述时间延迟期间在所述驱动器处从所述主机装置接收所述附加命令。
9.根据权利要求2所述的方法,其中,插入所述时间延迟包括在所述信息正被发送到所述主机装置期间插入所述时间延迟。
10.根据权利要求9所述的方法,其中,基于所述驱动器的当前队列深度来插入所述时间延迟。
11.根据权利要求9所述的方法,其中,基于自接收到前一命令以来的时间量来插入所述时间延迟。
12.根据权利要求9所述的方法,其中,所述时间延迟的时间长度是基于所述驱动器的当前队列深度的。
13.根据权利要求9所述的方法,其中,所述时间延迟的时间长度基于自由所述驱动器接收到前一命令以来的时间量。
14.根据权利要求2所述的方法,其中,实时确定所述时间延迟的时间长度和插入所述时间延迟的时间点中的至少一个。
15.根据权利要求2所述的方法,其中,所述时间延迟的时间长度和插入所述时间延迟的时间点中的至少一个为预定值。
16.根据权利要求2所述的方法,其中,所述信息包括设置信息,所述设置信息包括指示所述时间延迟在所述设置信息之后的信息。
17.根据权利要求2所述的方法,其中,所述信息包括状态信息,并在发送所述状态信息之前插入所述时间延迟。
18.根据权利要求I所述的方法,其中,插入所述间隔包括插入附加信息。
19.根据权利要求I所述的方法,其中,在插入所述间隔之前向所述主机装置通知所述间隔。
20.根据权利要求I所述的方法,其中,所述驱动器包括串行ATA(SATA)驱动器。
21.—种嵌入在计算机可读介质上的计算机程序产品,包括 用于在驱动器处从主机装置接收一个或多个命令的计算机代码;用于将信息排队以发送到所述主机装置的计算机代码;以及 用于在所述信息中插入间隔以发送到所述主机装置、使得所述主机装置能够向所述驱动器发送附加命令的计算机代码。
22.—种设备,包括 用于从主机装置接收一个或多个命令的驱动器; 用于将信息排队以发送到所述主机装置的缓冲器;以及 用于在信息中插入间隔以发送到所述主机装置使得所述主机装置能够向所述驱动器发送附加命令的控制器。
23.—种系统,包括 被使得能够从主机装置接收命令的驱动器,所述主机装置被使得能够通过利用使所述驱动器阻止所述主机发送附加命令的存储协议而与所述驱动器通信,所述驱动器包括 控制器;以及 缓冲器;以及 其中 当存在冲突时,所述驱动器先于所述主机装置而具有优先级, 所述缓冲器被使得能够将信息排队以发送到所述主机装置,以及所述控制器被使得能够在所述信息中插入间隔,使所述主机装置能够向所述驱动器发送附加命令。
24.根据权利要求23所述的系统,其中,所述控制器进一步被使得能够在所述驱动器已经开始至少部分地经由向所述主机装置发送设置信息而向所述主机装置发送信息之后插入间隔,以使所述主机装置能够向所述驱动器发送附加命令。
25.根据权利要求24所述的系统,其中,所述设置信息包括直接存储器存取(DMA)设置。
26.根据权利要求23所述的系统,其中,所述驱动器包括下列项中的一个或多个 串行ATA(SATA)驱动器, 串行连接SCSI (SAS)驱动器, 光纤通道(FC)驱动器,以及 通用串行总线(USB)驱动器。
27.根据权利要求23所述的系统,其中,所述命令包括下列项中的一个或多个 传输请求, 传输数据的命令, 访问与所述驱动器相关联的存储器的一部分的命令,以及提取数据的命令。
28.根据权利要求23所述的系统,其中,所述信息包括下列项中的一个或多个 数据信息, 数据结构信息, 直接存储器存取(DMA)帧信息结构(FIS), 设置装置位FIS,以及 与所述命令中的至少一个相关联的数据。
29.根据权利要求23所述的系统,其中,所述间隔包括下列项中的一个或多个打断, 中断,以及 延迟。
30.根据权利要求23所述的系统,其中,所述间隔包括下列项中的一个或多个 时间延迟, 附加信息, 所述间隔的长度, 销售商具体信息,以及 与所述间隔相关联的信息。
31.根据权利要求23所述的系统,其中,所述控制器进一步被使得能够至少部分地基于所述驱动器的当前命令队列深度来插入所述间隔。
32.根据权利要求23所述的系统,其中,所述控制器进一步被使得能够至少部分地基于自接收到前一命令以来的时间来插入所述间隔。
33.根据权利要求23所述的系统,其中,所述间隔包括时间延迟,并且所述控制器被使得能够实时确定所述时间延迟的长度。
34.根据权利要求23所述的系统,其中,所述间隔包括时间延迟,并且所述控制器被使得能够实时确定插入所述时间延迟的时间点。
35.一种方法,包括 在驱动器处从主机装置接收一个或多个命令,所述主机装置被使得能够通过利用使所述驱动器阻止所述主机装置发送附加命令的存储协议而与所述驱动器通信; 将信息排队以发送到所述主机装置,所述发送至少部分地经由到所述主机装置的设置信息; 确定是否插入时间延迟;以及 基于所述确定,有条件地插入所述时间延迟,以使所述主机装置能够向所述驱动器发送附加命令。
36.根据权利要求35所述的方法,其中,所述设置信息包括直接存储器存取(DMA)设置。
37.根据权利要求35所述的方法,还包括检查与所述驱动器相关联的缓冲器,以确定是否存在有效排队命令,并且如果存在,则执行所述确定。
38.根据权利要求35所述的方法,其中,所述驱动器包括下列项中的一个或多个 串行ATA(SATA)驱动器, 串行连接SCSI (SAS)驱动器, 光纤通道(FC)驱动器,以及 通用串行总线(USB)驱动器。
39.根据权利要求35所述的方法,其中,所述命令包括下列项中的一个或多个 传输请求, 传输数据的命令, 访问与所述驱动器相关联的存储器的一部分的命令,以及 提取数据的命令。
40.根据权利要求35所述的方法,其中,所述信息包括下列项中的一个或多个 数据信息, 数据结构信息, 直接存储器存取(DMA)帧信息结构(FIS), 设置装置位FIS,以及 与所述命令中的至少一个相关联的数据。
41.根据权利要求35所述的方法,其中,所述确定至少部分地基于所述驱动器的当前命令队列深度。
42.根据权利要求35所述的方法,其中,所述确定至少部分地基于自接收到前一命令以来的时间。
43.根据权利要求35所述的方法,还包括实时确定所述时间延迟的长度。
44.根据权利要求35所述的方法,还包括实时确定插入所述时间延迟的时间点。
45.一种系统,包括 用于在驱动器处从主机装置接收一个或多个命令的装置,所述主机装置被使得能够利用使所述驱动器阻止所述主机装置发送附加命令的存储协议而与所述驱动器通信; 用于将信息排队以发送到所述主机装置的装置,所述发送至少部分地经由到所述主机装置的设置信息; 用于确定是否插入时间延迟的装置;以及 用于基于所述用于确定的装置而有条件地插入所述时间延迟以使所述主机装置能够向所述驱动器发送附加命令的装置。
46.根据权利要求45所述的系统,其中,所述设置信息包括直接存储器存取(DMA)设置。
47.根据权利要求45所述的系统,还包括用于检查与所述驱动器相关联的缓冲器以确定当前是否存在有效排队命令的装置;并且其中,所述用于确定的装置有条件地基于所述用于检查的装置的结果。
48.根据权利要求45所述的系统,其中,所述驱动器包括下列项中的一个或多个 串行ATA(SATA)驱动器, 串行连接SCSI (SAS)驱动器, 光纤通道(FC)驱动器,以及 通用串行总线(USB)驱动器。
49.根据权利要求45所述的系统,其中,所述命令包括下列项中的一个或多个 传输请求, 传输数据的命令, 访问与所述驱动器相关联的存储器的一部分的命令,以及 提取数据的命令。
50.根据权利要求45所述的系统,其中,所述信息包括下列项中的一个或多个 数据信息, 数据结构信息, 直接存储器存取(DMA)帧信息结构(FIS),设置装置位FIS,以及 与所述命令中的至少一个相关联的数据。
51.根据权利要求45所述的系统,其中,所述用于确定的装置至少部分地基于所述驱动器的当前命令队列深度来运行。
52.根据权利要求45所述的系统,其中,所述用于确定的装置至少部分地基于自接收到前一命令以来的时间来运行。
53.根据权利要求45所述的系统,还包括用于实时确定所述时间延迟的长度的装置。
54.根据权利要求45所述的系统,还包括用于实时确定插入所述时间延迟的时间点的 装置。
55.一种具有存储在其中的一组指令的有形计算机可读介质,当由计算机执行所述一种指令时,所述有形计算机可读介质使所述计算机执行包括下列项的功能 在驱动器处从主机装置接收一个或多个命令,所述主机装置被使得能够利用使所述驱动器阻止所述主机装置发送附加命令的存储协议而与所述驱动器通信; 将信息排队以发送到所述主机装置,所述发送至少部分地基于到所述主机装置的设置/[目息;以及 有条件地插入时间延迟,以使所述主机装置能够向所述驱动器发送所述附加命令。
56.根据权利要求55所述的有形计算机可读介质,其中,所述有条件地插入至少部分地基于确定是否插入所述时间延迟。
57.根据权利要求56所述的有形计算机可读介质,其中,所述确定至少部分地基于所述驱动器的当前命令队列深度。
58.根据权利要求56所述的有形计算机可读介质,其中,所述确定至少部分地基于自接收到上一命令以来的时间。
59.根据权利要求55所述的有形计算机可读介质,其中,所述功能还包括实时确定所述时间延迟的长度。
60.根据权利要求55所述的有形计算机可读介质,其中,所述功能还包括实时确定插入所述时间延迟的时间点。
61.根据权利要求55所述的有形计算机可读介质,其中,所述驱动器进一步包括下列项中的一个或多个 串行ATA(SATA)驱动器, 串行连接SCSI (SAS)驱动器, 光纤通道(FC)驱动器,以及 通用串行总线(USB)驱动器。
62.根据权利要求55所述的有形计算机可读介质,其中,所述命令包括下列项中的一个或多个 传输请求, 传输数据的命令, 访问与所述驱动器相关联的存储器的一部分的命令,以及 提取数据的命令。
63.根据权利要求55所述的有形计算机可读介质,其中,所述信息包括下列项中的一个或多个 数据信息, 数据结构信息, 直接存储器存取(DMA)帧信息结构(FIS), 设置装置位FIS,以及 与所述命令中的至少一个相关联的数据。
全文摘要
本发明提供了用于在从驱动器被发送到主机装置的信息中插入间隔的系统、方法和计算机程序产品。在操作中,在驱动器处从主机装置接收一个或多个命令。另外,将信息排队以发送到主机装置。此外,在信息中插入间隔以发送到主机装置,使得主机装置能够向驱动器发送附加命令。
文档编号G06F13/38GK102713873SQ201080040461
公开日2012年10月3日 申请日期2010年7月15日 优先权日2009年7月17日
发明者罗斯·斯藤福特 申请人:Lsi 公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1