CN102713873A - 在从驱动器被发送到主机装置的信息中插入间隔 - Google Patents
在从驱动器被发送到主机装置的信息中插入间隔 Download PDFInfo
- Publication number
- CN102713873A CN102713873A CN2010800404611A CN201080040461A CN102713873A CN 102713873 A CN102713873 A CN 102713873A CN 2010800404611 A CN2010800404611 A CN 2010800404611A CN 201080040461 A CN201080040461 A CN 201080040461A CN 102713873 A CN102713873 A CN 102713873A
- Authority
- CN
- China
- Prior art keywords
- driver
- information
- host apparatus
- time delay
- order
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
- G06F13/126—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
Abstract
本发明提供了用于在从驱动器被发送到主机装置的信息中插入间隔的系统、方法和计算机程序产品。在操作中,在驱动器处从主机装置接收一个或多个命令。另外,将信息排队以发送到主机装置。此外,在信息中插入间隔以发送到主机装置,使得主机装置能够向驱动器发送附加命令。
Description
技术领域
本发明涉及存储器系统,并且更特别地,涉及在驱动器开始发送数据时在驱动器处从主机装置接收命令。
背景技术
在许多存储系统中,当有冲突时,在发送帧时,目标装置先于主机而具有优先级。在这些情况下,当命令排队时(例如,使用第一方直接存储器存取等),一旦目标已经发送了直接存储器存取(DMA)设置帧信息结构(FIS)以进入数据相位(data phase),则主机通常不能向目标装置发送任何命令。
如果驱动器能够很快地获取数据,则主机能够向驱动器发送等于最大队列深度的命令数。然后,驱动器可以在帧之间没有任何间断的情况下返回DMA设置、数据、DMA设置、数据等。这不允许主机发送任何更多的命令。
在这些情况下,驱动器的队列深度可以从最大队列深度振荡到零,回到最大队列深度并再次振荡到零。这可能会负面地影响性能。因此,需要解决与现有技术相关联的这些和/或其他问题。
发明内容
提供了用于在从驱动器被发送到主机装置的信息中插入间隔的系统、方法以及计算机程序产品。在操作时,在驱动器处从主机装置接收一个或多个命令。另外,将信息排队以发送至主机装置。此外,在信息中插入间隔以发送至主机装置,使得主机装置能够向驱动器发送附加命令。
附图说明
图1示出了根据一个实施方式的用于在从驱动器被发送到主机装置的信息中插入间隔的方法。
图2示出了根据一个实施方式的用于在从驱动器被发送到主机装置的信息中插入间隔的系统。
图3示出了根据另一个实施方式的用于在从驱动器被发送到主机装置的信息中插入间隔的方法。
图4示出了可以实施以上各实施方式的各种架构和/或功能的示例性系统。
具体实施方式
下文与示出了本发明的所选细节的附图一起提供了对本发明的一个或多个实施方式的详细描述。结合实施方式描述了本发明。本文中的实施方式被理解为仅是示例性的,本发明明确地不限于本文中的任一个或全部实施方式,并且本发明包括大量替换、修改和等价物。为了避免论述单调,可以将各种词标签(包括但不限于:第一、最后、某个、各个、另外、另一个、特别、选择、一些以及显著的)应用于实施方式的单独集合;如本文所使用的,这种标签明显不旨在表达数量、或任何形式的喜好或偏见,而仅为了便于区分单独的设置。所公开的处理的一些操作的顺序可以在本发明的范围内改变。在以下描述中阐述了大量具体细节来提供对本发明的透彻理解。这些细节为了实施例而提供,并且本发明可以根据权利要求来实践,而无需一些或全部的细节。为了清楚,没有详细描述在本发明的相关技术领域中已知的技术材料,以免不必要地使本发明模糊。
引言
包括该引言仅是为了便于更快地理解详细描述;任何引言的段落需要是整个主题的精简概括,并且不意味着是详尽或限制性的描述,因此,本发明不限于在引言(包括明确的实施例,如果有的话)中给出的概念。例如,以下的引言仅向某些实施方式提供了空间和组织所限制的概括信息。在以下的说明书中通篇还讨论了很多其他实施方式,包括最终引出权利要求的那些实施方式。
提供了用于在从驱动器被发送到主机装置的信息中插入间隔的系统、方法和计算机程序产品。在操作中,在驱动器处从主机装置接收一个或多个命令。另外,将信息进行排队以发送到主机装置。此外,在信息中插入间隔以发送到主机装置,使得主机装置能够向驱动器发送附加命令。
实例实施方式
结束了详细描述的引言,随后是实例实施方式的集合,至少包括一些明确地列举为“EC”(实施例组合)的实施方式,以提供根据本文中描述的概念的各种实施方式类型的额外描述,这些实施例并不意味着相互排斥、详尽或限制的,并且本发明不限于这些实例实施方式,而是包括所颁布的权利要求的范围内的所有可能的修改和变化。
EC1.一种方法,包括:
在驱动器从主机装置接收一个或多个命令;
将信息排队以发送到主机装置;以及
在信息中插入间隔以发送到主机装置,使得主机装置能够向驱动器发送附加命令。
EC2.根据EC1的方法,其中,插入间隔包括插入时间延迟。
EC3.根据EC2的方法,其中,信息包括设置信息和与一个或多个命令中的至少一个相关联的数据。
EC4.根据EC3的方法,其中,设置信息包括直接存储器存取(DMA)帧信息结构(FIS)。
EC5.根据EC3的方法,其中,设置信息包括设置装置位(setup devicebit)FIS。
EC6.根据EC3的方法,其中,在发送设置信息之前插入时间延迟。
EC7.根据EC3的方法,其中,在发送设置信息之后插入时间延迟。
EC8.根据EC2的方法,还包括在时间延迟期间在驱动器处从主机装置接收附加命令。
EC9.根据EC2的方法,其中,插入时间延迟包括在信息发送到主机装置期间插入时间延迟。
EC10.根据EC9的方法,其中,基于驱动器的当前队列深度来插入时间延迟。
EC11.根据EC9的方法,其中,基于自接收到前一命令以来的时间量来插入时间延迟。
EC12.根据EC9的方法,其中,时间延迟的时间长度基于驱动器的当前队列深度。
EC13.根据EC9的方法,其中,时间延迟的时间长度基于自驱动器接收到前一命令以来的时间量。
EC14.根据EC2的方法,其中,实时确定时间延迟的时间长度和插入时间延迟的时间点中的至少一个。
EC15.根据EC2的方法,其中,时间延迟的时间长度和插入时间延迟的时间点中的至少一个为预定值。
EC16.根据EC2的方法,其中,信息包括设置信息,设置信息包括指示时间延迟在设置信息之后的信息。
EC17.根据EC2的方法,其中,信息包括状态信息,并在发送状态信息之前插入时间延迟。
EC18.根据EC1的方法,其中,插入间隔包括插入附加信息。
EC19.根据EC1的方法,其中,在插入间隔之前向主机装置通知间隔。
EC20.根据EC1的方法,其中,驱动器包括串行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,以及
与命令中的至少一个相关联的数据。
图1示出了根据一个实施方式的用于在被从驱动器发送到主机装置的信息中插入间隔的方法100。如图所示,在驱动器处从主机装置接收一个或多个命令。参见操作102。
命令可以包括能够被从主机装置发送到驱动器的任何命令或指令。例如,在一个实施方式中,命令可以包括传输数据的命令(例如,传输请求等)。在另一实施方式中,命令可以包括访问与驱动器相关联的存储器的一部分的命令。
驱动器可以包括能够存储数据的任何驱动器。例如,在一个实施方式中,驱动器可以包括串行ATA(SATA)驱动器。在各种其他实施方式中,驱动器可以包括但不限于串行连接SCSI(SAS)驱动器、光纤通道(FC)驱动器、或通用串行总线(USB)驱动器和/或任何其他存储装置或驱动器。
此外,主机装置可以包括能够向驱动器发送命令的任何装置。例如,在不同的实施方式中,主机装置可以包括台式计算机、膝上型计算机和/或任何其他逻辑类型。另外,主机装置可以采用各种其他装置的形式,包括但不限于个人数字助理(PDA)装置、移动电话装置等。
如图1进一步所示,将信息排队以发送到主机装置。参见操作104。在一个实施方式中,信息可以在缓冲器或能够将数据排队的装置中排队。
信息可以包括任何数据或与数据相关联的信息(例如,数据类型信息、数据结构信息等)。在一个实施方式中,信息可以包括设置信息和与至少一个命令相关联的数据。例如,在驱动器处从主机装置接收的命令可以包括提取数据的命令。
然后,驱动器可以将数据和设置信息排队。在一个实施方式中,设置信息可以包括直接存储器存取(DMA)帧信息结构(FIS)。在另一实施方式中,设置信息可以包括设置装置位FIS。应当注意的是,在不同实施方式中,间隔可以基于时间或者基于命令阈值或者基于两者的组合。阈值还可以基于命令的数量和队列深度或其他参数。
此外,在信息中插入间隔以发送到主机装置,使得主机装置能够向驱动器发送附加命令。参见操作106。在本说明书的上下文中,间隔是指主机装置能够向驱动器发送命令的打断、中断、或延迟。
在不同的实施方式中,间隔可以包括时间延迟或附加信息等。例如,在一个实施方式中,插入间隔可以包括插入时间延迟。在另一实施方式中,插入间隔可以包括插入附加信息。
附加信息可以包括任何类型的信息。例如,在一个实施方式中,附加信息可以包括指示间隔的长度的信息。在另一实施方式中,附加信息可以包括销售商具体信息。在又一实施方式中,附加信息可以包括与间隔相关联的信息。
在另一实施方式中,信息可以包括设置信息,设置信息包括指示时间延迟在设置信息之后的信息。在该情况下,信息可以包括状态信息,并且时间延迟可以在发送状态信息之前或者在状态信息之后插入。
应当注意的是,可以在发送信息时的任一时间点插入间隔。例如,在间隔包括时间延迟的情况下,可以在发送设置信息之前插入时间延迟。在另一实施方式中,可以在发送设置信息之后插入时间延迟。
在这两种情况下,可以在时间延迟期间在驱动器处从主机装置接收附加命令。在一个实施方式中,插入间隔可以包括在正向主机装置发送信息的期间插入间隔。
应当注意的是,插入间隔的时间点可以基于各种参数。例如,在一个实施方式中,可以基于驱动器的当前队列深度来插入。在另一实施方式中,间隔可以基于自从接收到前一命令以来的时间量来插入。
此外,间隔的长度或大小可以基于各种参数。例如,在一个实施方式中,时间延迟的时间长度可以基于驱动器的当前队列深度。在另一实施方式中,时间延迟的时间长度可以基于自从接收到前一命令以来的时间量。
在这两种情况下,作为选择,可以实时确定时间延迟的时间长度或插入时间延迟的时间点中的至少一个。作为另一种选择,时间延迟的时间长度或插入时间延迟的时间点中的至少一个可以为预定值。在该情况下,预定值可以是在硬件或软件中设置的值。
现在将陈述关于各种可选架构和特征(通过它们可以实现上述框架)的更详细信息。应当更加注意的是,为了说明的目的而阐述了下面的信息,而不应被理解为以任何形式的限制。下面所述的任何特征可以可选地结合所描述的其他特征或者不排斥所描述的其他特征。
图2示出了根据一个实施方式的用于在从驱动器被发送到主机装置的信息中插入间隔的系统200。作为选择,本系统200可以被实施为执行图1的方法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,等)振荡到0并从0返回到最大队列深度(例如,32,等)。这可能负面地影响性能。在一些情况下,硬盘驱动器(HDD)很慢,以致于在数据中有间隔,因此不会发生该振荡。然而,对于较快的驱动器,可能发生该振荡。
因此,在一个实施方式中,在向主机装置204发出DMA设置之前,可以插入一个或多个间隔,以使主机装置204向驱动器202发送更多的命令。可以基于包括驱动器202的当前队列深度或自上一个命令开始的时间量的各种参数来插入间隔。在一个实施方式中,插入间隔的时间点可以基于驱动器202的当前队列深度、自上一个命令开始以来的时间量、或者这些或一些其他参数的组合。
此外,允许从主机装置204发送命令的间隔的长度还可以基于各种参数。例如,间隔的长度可以基于队列深度、时间或一些其他参数。在各种实施方式中,这些参数可以由主机装置204或驱动器202实时调整。作为选择,参数还可以被设置为固定值。
在一个实施方式中,驱动器202可以通过向DMA设置添加信息以指示在该DMA设置之后将有间隔,来向主机装置204发信号。作为选择,主机装置204可以通过向命令中添加信息,来对发送命令的结束发信号。应当注意的是,在一个实施方式中,还可以在发送状态之前插入间隔。这可以代替在DMA设置FIS之前插入间隔来执行,或者除了在DMA设置FIS之前插入间隔之外而另外地执行。
图3示出了根据另一实施方式的用于在从驱动器被发送到主机装置的信息中插入间隔的方法300。作为选择,本方法300可以在图1至图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可以包括多个着色器模块(shadermodule)、光栅模块等。上述模块中的每一个甚至还可以位于单个半导体平台上,以形成图形处理单元(GPU)。
在本说明书中,单个半导体平台可以指基于唯一一元半导体的集成电路或芯片。应当注意的是,“术语”单个半导体平台还可以指模拟芯片上操作并通过利用传统中央处理单元(CPU)和总线实现而做出显著改善的具有增大连接的多芯片模块。当然,各个模块还可以被单独或者根据用户需求而位于半导体平台的各种组合中。
系统400还可以包括次存储器400。次存储器400例如包括硬盘驱动器和/或可移除存储驱动器,以表示软盘驱动器、磁带驱动器、光盘驱动器等。可移除存储驱动器以公知的该方式从可移除存储器单元读取和/或向其写入。
计算机程序或计算机控制逻辑算法还可以存储在主存储器404和/或次存储器410中。当执行这些计算机程序时,这些计算机程序使系统400执行各种功能。存储器404、存储器410和/或任何其他存储器都是计算机可读媒介的可能实例。
在一个实施方式中,以上各图的架构和/或功能性可以在主机处理器401、图形处理器406、能够实现主处理器401和图形处理器406的至少一部分性能的集成电路(未示出)、芯片组(即,被设计为作为单位进行工作并且销售以用于执行相关功能等的一组集成电路)、和/或用于该问题的任何其他集成电路的背景中实现。
另外,以上各图的架构和/或功能性可以在通用计算机系统、电路板系统、专用于娱乐目的的游戏机控制系统、特定应用系统、和/或任何其他所需系统的背景中实现。例如,系统400可以采用台式计算机、膝上型计算机和/或其他类型的逻辑的形式。另外,系统400可以采用各种其他装置的形式,包括但不限于个人数字助理装置、移动电话装置、电视机等。
进一步地,尽管没有示出,但为了通信,系统400可以耦接至网络[例如,电信网络、局域网(LAN)、无线网、诸如互联网、对等网络、电缆网络等的广域网(WAN)]。
尽管以上已经描述了各种实施方式,但应当理解,其仅通过实例而不是限制的方式给出。因此,优选实施方式的宽度和范围不应当由上述实施方式的任一个限制,而是应该仅根据所附权利要求及其等价物来限定。
结论
在准备文本和附图时,仅仅为了方便,在描述中已经进行了某种选择,除非有相反指示,否则该选择在本质上不应当被理解为表达关于所述实施方式的结构或操作的附加信息。选择的实例包括:用于附图编码的名称的特殊组织或分配,以及用于实施方式的特征和元件的标识和引用的元件标识符(标注或数字指示符等)的特殊组织或分配。
词语“包括(includes or including)”具体地旨在被理解为描述开放范围的逻辑集合的抽象概念,除非其后面明确地跟随有词“在...中”,否则并不意味着表达物理包含。
尽管为了描述和理解的清楚,已经在一些细节上描述了上面的实施方式,但本发明不限于所提供的细节。存在很多本发明的实施方式,所公开的实施方式是示例性的而不是限制性的。
将理解的是,构造、排列和使用的许多变化也可能与说明书一致,并且它们都在所颁布的专利的权利要求的范围内。例如,根据每个组件块中的各个实施方式,所使用的互联和功能单位位宽、时钟速度以及技术类型都是可变的,向互连和逻辑提供的名称仅为示例性的,并不应理解为限制所描述的概念。流程图的顺序和排列以及流程图处理、动作、和功能元素根据各个实施方式是可变的。并且,除非有明确地相反阐述,所指定的值范围、所使用的最大和最小值、或其他特殊规格(诸如闪存技术类型、以及寄存器和缓冲器中的条目或级的数量)仅仅属于所描述的实施方式,并且期望追踪实施技术的改善和变化,并不应被理解为限制。
可以采用现有技术中已知的功能等效的技术来替代所描述的技术,以实施各种部件、子系统、操作、功能、例程、次例程、线内例程、程序、宏、或其部分。还应当理解,由于实施方式的功能依赖于更快的处理(促进先前在硬件中的功能迁移到软件中)和更高的集成度(促进先前在软件中的功能迁移到硬件中)的技术趋势和设计约束,实施方式的许多功能方面可选地在硬件(即,一般专用电路)或软件(即,经由一些方式的编程控制器或处理器)中实现。各个实施方式中的具体变化包括但不限于:分区差异;不同形式因素和配置;不同操作系统和其他系统软件的使用;不同接口标准、网络协议、或通信链路的使用;以及当根据特殊应用的独特功能和业务约束来实施本文中描述的构思时所预期的其他变化。
已经用细节和环境背景描述了实施方式,这远远超过所描述的实施方式的许多方面的最小实现的要求。本领域普通技术人员将认识到,一些实施方式省略了公开的部件或特征,而不会改变剩余元件之间的基本合作。因此能理解,所公开的大部分细节不是实施所述实施方式的各个方面所需要的。就剩余元件与现有技术相区分来说,省略的部件和特征并不是对这里描述的概念的限制。
设计上的所有这种变化都是对所描述的实施方式表达的教导的非实质改变。还应理解,本文所描述的实施方式对其他计算和网络应用也有广泛应用,并不限于所描述的实施方式的特殊应用或工业。因此,本发明将被理解为包括在所颁布的专利的权利要求范围内的所有可能的修改和变化。
Claims (63)
1.一种方法,包括:
在驱动器处从主机装置接收一个或多个命令;
将信息排队以发送到所述主机装置;以及
在所述信息中插入间隔以发送到所述主机装置,使得所述主机装置能够向所述驱动器发送附加命令。
2.根据权利要求1所述的方法,其中,插入所述间隔包括插入时间延迟。
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.根据权利要求1所述的方法,其中,插入所述间隔包括插入附加信息。
19.根据权利要求1所述的方法,其中,在插入所述间隔之前向所述主机装置通知所述间隔。
20.根据权利要求1所述的方法,其中,所述驱动器包括串行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,以及
与所述命令中的至少一个相关联的数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/505,333 | 2009-07-17 | ||
US12/505,333 US8140712B2 (en) | 2009-07-17 | 2009-07-17 | System, method, and computer program product for inserting a gap in information sent from a drive to a host device |
PCT/US2010/042147 WO2011008963A2 (en) | 2009-07-17 | 2010-07-15 | Inserting a gap in information sent from a drive to a host device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102713873A true CN102713873A (zh) | 2012-10-03 |
CN102713873B CN102713873B (zh) | 2016-10-19 |
Family
ID=43450212
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080040461.1A Active CN102713873B (zh) | 2009-07-17 | 2010-07-15 | 在从驱动器被发送到主机装置的信息中插入间隔 |
Country Status (7)
Country | Link |
---|---|
US (4) | US8140712B2 (zh) |
EP (1) | EP2454671A4 (zh) |
JP (1) | JP5658250B2 (zh) |
KR (1) | KR101281480B1 (zh) |
CN (1) | CN102713873B (zh) |
TW (2) | TWI467386B (zh) |
WO (1) | WO2011008963A2 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110004718A1 (en) | 2009-07-02 | 2011-01-06 | Ross John Stenfort | System, method, and computer program product for ordering a plurality of write commands associated with a storage device |
US8140712B2 (en) | 2009-07-17 | 2012-03-20 | Sandforce, Inc. | System, method, and computer program product for inserting a gap in information sent from a drive to a host device |
US8516166B2 (en) | 2009-07-20 | 2013-08-20 | Lsi Corporation | System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory |
KR102238650B1 (ko) | 2014-04-30 | 2021-04-09 | 삼성전자주식회사 | 저장 장치, 상기 저장 장치를 포함하는 컴퓨팅 시스템 및 상기 저장 장치의 동작 방법 |
US9817777B2 (en) * | 2015-03-31 | 2017-11-14 | Toshiba Memory Corporation | Multi-operating state serial ATA devices and methods of operation therefor |
US11568073B2 (en) | 2016-12-02 | 2023-01-31 | Nutanix, Inc. | Handling permissions for virtualized file servers |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050166014A1 (en) * | 2004-01-27 | 2005-07-28 | Hitachi Global Storage Technologies Netherlands, B.V. | Data transmission control method and storage device |
US20060218437A1 (en) * | 2005-03-23 | 2006-09-28 | Hitachi Global Storage Technologies Netherlands B.V. | Data storage device, and method for rewriting data in nonvolatile memory |
US20070260756A1 (en) * | 2006-01-05 | 2007-11-08 | Pao-Ching Tseng | Method for Processing Command via SATA Interface |
CN101354902A (zh) * | 2007-07-27 | 2009-01-28 | 西部数据技术公司 | 刷新区段中的区域来维持主机命令的目标吞吐量的磁盘驱动器 |
Family Cites Families (92)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03250499A (ja) | 1990-02-27 | 1991-11-08 | Nec Corp | データ記憶回路 |
GB2251324B (en) | 1990-12-31 | 1995-05-10 | Intel Corp | File structure for a non-volatile semiconductor memory |
US6230233B1 (en) | 1991-09-13 | 2001-05-08 | Sandisk Corporation | Wear leveling techniques for flash EEPROM systems |
US5485595A (en) | 1993-03-26 | 1996-01-16 | Cirrus Logic, Inc. | Flash memory mass storage architecture incorporating wear leveling technique without using cam cells |
JPH08124393A (ja) | 1994-10-20 | 1996-05-17 | Fujitsu Ltd | データ消去回数に制限のあるメモリの制御方法及びこの方法を用いた装置 |
US5568423A (en) | 1995-04-14 | 1996-10-22 | Unisys Corporation | Flash memory wear leveling system providing immediate direct access to microprocessor |
US5805809A (en) | 1995-04-26 | 1998-09-08 | Shiva Corporation | Installable performance accelerator for maintaining a local cache storing data residing on a server computer |
US5621687A (en) | 1995-05-31 | 1997-04-15 | Intel Corporation | Programmable erasure and programming time for a flash memory |
US6728851B1 (en) | 1995-07-31 | 2004-04-27 | Lexar Media, Inc. | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices |
US5835935A (en) | 1995-09-13 | 1998-11-10 | Lexar Media, Inc. | Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory |
US5956473A (en) | 1996-11-25 | 1999-09-21 | Macronix International Co., Ltd. | Method and system for managing a flash memory mass storage system |
US5963970A (en) | 1996-12-20 | 1999-10-05 | Intel Corporation | Method and apparatus for tracking erase cycles utilizing active and inactive wear bar blocks having first and second count fields |
US6085248A (en) * | 1997-02-11 | 2000-07-04 | Xaqtu Corporation | Media access control transmitter and parallel network management system |
US6000006A (en) | 1997-08-25 | 1999-12-07 | Bit Microsystems, Inc. | Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage |
JP3898305B2 (ja) | 1997-10-31 | 2007-03-28 | 富士通株式会社 | 半導体記憶装置、半導体記憶装置の制御装置及び制御方法 |
US5924120A (en) * | 1998-02-03 | 1999-07-13 | Digital Equipment Corporation | Method and apparatus for maximizing utilization of an internal processor bus in the context of external transactions running at speeds fractionally greater than internal transaction times |
DE59811962D1 (de) | 1998-09-04 | 2004-10-21 | Hyperstone Ag | Zugriffssteuerung eines speichers beschränkter löschhäufigkeit |
FR2787601A1 (fr) | 1998-12-22 | 2000-06-23 | Gemplus Card Int | Systeme de memorisation comprenant des moyens de gestion d'une memoire avec anti-usure et procede de gestion anti-usure d'une memoire |
US6301639B1 (en) * | 1999-07-26 | 2001-10-09 | International Business Machines Corporation | Method and system for ordering priority commands on a commodity disk drive |
US7628622B2 (en) | 1999-08-04 | 2009-12-08 | Super Talent Electronics, Inc. | Multi-level cell (MLC) slide flash memory |
US6405295B1 (en) | 1999-09-07 | 2002-06-11 | Oki Electric Industry, Co., Ltd. | Data storage apparatus for efficient utilization of limited cycle memory material |
JP2001100935A (ja) * | 1999-09-28 | 2001-04-13 | Internatl Business Mach Corp <Ibm> | ディスク装置およびその制御方法 |
US6928494B1 (en) * | 2000-03-29 | 2005-08-09 | Intel Corporation | Method and apparatus for timing-dependant transfers using FIFOs |
JP2004525433A (ja) | 2000-09-28 | 2004-08-19 | シーゲイト テクノロジー エルエルシー | ディスクドライブ用クリティカル事象ログ |
US6732221B2 (en) | 2001-06-01 | 2004-05-04 | M-Systems Flash Disk Pioneers Ltd | Wear leveling of static areas in flash memory |
US20030041214A1 (en) | 2001-07-27 | 2003-02-27 | Fujitsu Limited | Cache control methods and apparatus for hard disk drives |
US6948026B2 (en) | 2001-08-24 | 2005-09-20 | Micron Technology, Inc. | Erase block management |
US20030058681A1 (en) | 2001-09-27 | 2003-03-27 | Intel Corporation | Mechanism for efficient wearout counters in destructive readout memory |
US7000063B2 (en) | 2001-10-05 | 2006-02-14 | Matrix Semiconductor, Inc. | Write-many memory device and method for limiting a number of writes to the write-many memory device |
US7130933B2 (en) * | 2002-07-24 | 2006-10-31 | Intel Corporation | Method, system, and program for handling input/output commands |
US7096313B1 (en) | 2002-10-28 | 2006-08-22 | Sandisk Corporation | Tracking the least frequently erased blocks in non-volatile memory systems |
US6985992B1 (en) | 2002-10-28 | 2006-01-10 | Sandisk Corporation | Wear-leveling in non-volatile storage systems |
US7103732B1 (en) | 2002-10-28 | 2006-09-05 | Sandisk Corporation | Method and apparatus for managing an erase count block |
US6831865B2 (en) | 2002-10-28 | 2004-12-14 | Sandisk Corporation | Maintaining erase counts in non-volatile storage systems |
EP1556868B1 (en) | 2002-10-28 | 2007-09-05 | SanDisk Corporation | Automated wear leveling in non-volatile storage systems |
US6973531B1 (en) | 2002-10-28 | 2005-12-06 | Sandisk Corporation | Tracking the most frequently erased blocks in non-volatile memory systems |
US7035967B2 (en) | 2002-10-28 | 2006-04-25 | Sandisk Corporation | Maintaining an average erase count in a non-volatile storage system |
TW555100U (en) | 2002-11-27 | 2003-09-21 | Power Quotient Int Co Ltd | High speed of data transfer of solid state disk on module |
JP4550439B2 (ja) * | 2003-02-28 | 2010-09-22 | 東芝メモリシステムズ株式会社 | Ecc制御装置 |
US6925523B2 (en) | 2003-03-03 | 2005-08-02 | Agilent Technologies, Inc. | Managing monotonically increasing counter values to minimize impact on non-volatile storage |
JP4460867B2 (ja) * | 2003-09-26 | 2010-05-12 | 東芝ストレージデバイス株式会社 | インターフェース装置及びパケット転送方法 |
US7032087B1 (en) | 2003-10-28 | 2006-04-18 | Sandisk Corporation | Erase count differential table within a non-volatile memory system |
WO2005094281A2 (en) | 2004-03-25 | 2005-10-13 | Riverstone Networks, Inc. | Device-level address translation within a programmable non-volatile memory device |
JP2006164012A (ja) * | 2004-12-09 | 2006-06-22 | Hitachi Global Storage Technologies Netherlands Bv | データ記憶装置及びそのパワー・セーブ・モードの制御方法 |
US7318962B2 (en) * | 2005-01-28 | 2008-01-15 | The United States Of America As Represented By The Secretary Of The Navy | Magnetically directed self-assembly of molecular electronic junctions comprising conductively coated ferromagnetic microparticles |
US20060209684A1 (en) | 2005-03-18 | 2006-09-21 | Via Technologies, Inc. | Data rate controller, and method of control thereof |
US7620747B1 (en) | 2005-10-12 | 2009-11-17 | Nvidia Corporation | Software based native command queuing |
US7694026B2 (en) | 2006-03-31 | 2010-04-06 | Intel Corporation | Methods and arrangements to handle non-queued commands for data storage devices |
US7739470B1 (en) * | 2006-10-20 | 2010-06-15 | Emc Corporation | Limit algorithm using queue depth to control application performance |
US7747813B2 (en) | 2006-11-24 | 2010-06-29 | Sandforce, Inc. | Multi-memory device system and method for managing a lifetime thereof |
US7904764B2 (en) | 2006-11-24 | 2011-03-08 | Sandforce, Inc. | Memory lifetime gauging system, method and computer program product |
US7809900B2 (en) | 2006-11-24 | 2010-10-05 | Sandforce, Inc. | System, method, and computer program product for delaying an operation that reduces a lifetime of memory |
US7904619B2 (en) | 2006-11-24 | 2011-03-08 | Sandforce, Inc. | System, method, and computer program product for reducing memory write operations using difference information |
US8090980B2 (en) | 2006-12-08 | 2012-01-03 | Sandforce, Inc. | System, method, and computer program product for providing data redundancy in a plurality of storage devices |
US7904672B2 (en) | 2006-12-08 | 2011-03-08 | Sandforce, Inc. | System and method for providing data redundancy after reducing memory writes |
US7861139B2 (en) * | 2007-01-26 | 2010-12-28 | Micron Technology, Inc. | Programming management data for NAND memories |
JP2008226040A (ja) * | 2007-03-14 | 2008-09-25 | Hitachi Ltd | 情報処理装置及びコマンド多重度制御方法 |
JP2008250961A (ja) | 2007-03-30 | 2008-10-16 | Nec Corp | 記憶媒体の制御装置、データ記憶装置、データ記憶システム、方法、及び制御プログラム |
KR20080090021A (ko) | 2007-04-03 | 2008-10-08 | 삼성테크윈 주식회사 | 데이터 전송 속도가 다른 인터페이스들을 갖는 데이터 저장모듈 및 이의 데이터 전송방법 |
JP4400650B2 (ja) | 2007-05-23 | 2010-01-20 | セイコーエプソン株式会社 | データ転送制御装置及び電子機器 |
US20080294813A1 (en) | 2007-05-24 | 2008-11-27 | Sergey Anatolievich Gorobets | Managing Housekeeping Operations in Flash Memory |
US7631128B1 (en) * | 2007-06-28 | 2009-12-08 | Emc Corporation | Protocol controller for a data storage system |
US7840751B2 (en) * | 2007-06-29 | 2010-11-23 | Seagate Technology Llc | Command queue management of back watered requests |
TWI373772B (en) | 2007-10-04 | 2012-10-01 | Phison Electronics Corp | Wear leveling method and controller using the same |
US8209465B2 (en) * | 2007-10-30 | 2012-06-26 | Hagiwara Sys-Com Co., Ltd. | Data writing method |
US20090125645A1 (en) | 2007-11-12 | 2009-05-14 | Gemalto Inc | System and method for supporting multiple tokens having a smart card to control parameters of a flash memory device |
US7903486B2 (en) | 2007-11-19 | 2011-03-08 | Sandforce, Inc. | System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory |
US7849275B2 (en) | 2007-11-19 | 2010-12-07 | Sandforce, Inc. | System, method and a computer program product for writing data to different storage devices based on write frequency |
US9183133B2 (en) | 2007-11-28 | 2015-11-10 | Seagate Technology Llc | System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory |
WO2009072104A2 (en) | 2007-12-05 | 2009-06-11 | Densbits Technologies Ltd. | Flash memory device with physical cell value deterioration accommodation and methods useful in conjunction therewith |
US7827320B1 (en) * | 2008-03-28 | 2010-11-02 | Western Digital Technologies, Inc. | Serial ATA device implementing intra-command processing by detecting XRDY primitive while in the XRDY state |
US7970978B2 (en) | 2008-05-27 | 2011-06-28 | Initio Corporation | SSD with SATA and USB interfaces |
US20100017588A1 (en) | 2008-07-15 | 2010-01-21 | Radoslav Danilak | System, method, and computer program product for providing an extended capability to a system |
US20100017566A1 (en) | 2008-07-15 | 2010-01-21 | Radoslav Danilak | System, method, and computer program product for interfacing computing device hardware of a computing device and an operating system utilizing a virtualization layer |
US20100017807A1 (en) | 2008-07-15 | 2010-01-21 | Radoslav Danilak | System, method, and computer program product for transparent communication between a storage device and an application |
US20100017650A1 (en) | 2008-07-19 | 2010-01-21 | Nanostar Corporation, U.S.A | Non-volatile memory data storage system with reliability management |
US8140739B2 (en) | 2008-08-08 | 2012-03-20 | Imation Corp. | Flash memory based storage devices utilizing magnetoresistive random access memory (MRAM) to store files having logical block addresses stored in a write frequency file buffer table |
US20100064093A1 (en) | 2008-09-09 | 2010-03-11 | Radoslav Danilak | System, method, and computer program product for converting data in a binary representation to a non-power of two representation |
US8131921B2 (en) | 2008-09-17 | 2012-03-06 | Intel Corporation | Command suspension in response, at least in part, to detected acceleration and/or orientation change |
JP4399021B1 (ja) | 2008-10-29 | 2010-01-13 | 株式会社東芝 | ディスクアレイ制御装置および記憶装置 |
US8285970B2 (en) | 2008-11-06 | 2012-10-09 | Silicon Motion Inc. | Method for managing a memory apparatus, and associated memory apparatus thereof |
US20100146236A1 (en) | 2008-12-08 | 2010-06-10 | Radoslav Danilak | System, method, and computer program product for rendering at least a portion of data useless in immediate response to a delete command |
US8230159B2 (en) | 2009-03-27 | 2012-07-24 | Lsi Corporation | System, method, and computer program product for sending logical block address de-allocation status information |
US8090905B2 (en) | 2009-03-27 | 2012-01-03 | Sandforce, Inc. | System, method, and computer program product for converting logical block address de-allocation information in a first format to a second format |
US20100250830A1 (en) | 2009-03-27 | 2010-09-30 | Ross John Stenfort | System, method, and computer program product for hardening data stored on a solid state disk |
US8291131B2 (en) | 2009-07-06 | 2012-10-16 | Micron Technology, Inc. | Data transfer management |
US8140712B2 (en) | 2009-07-17 | 2012-03-20 | Sandforce, Inc. | System, method, and computer program product for inserting a gap in information sent from a drive to a host device |
US8516166B2 (en) | 2009-07-20 | 2013-08-20 | Lsi Corporation | System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory |
US20110022765A1 (en) | 2009-07-23 | 2011-01-27 | Ross John Stenfort | System, method, and computer program product for maintaining a direct connection between an initiator and a drive |
US20110041005A1 (en) | 2009-08-11 | 2011-02-17 | Selinger Robert D | Controller and Method for Providing Read Status and Spare Block Management Information in a Flash Memory System |
US20110041039A1 (en) | 2009-08-11 | 2011-02-17 | Eliyahou Harari | Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device |
US8108737B2 (en) | 2009-10-05 | 2012-01-31 | Sandforce, Inc. | System, method, and computer program product for sending failure information from a serial ATA (SATA) solid state drive (SSD) to a host device |
-
2009
- 2009-07-17 US US12/505,333 patent/US8140712B2/en not_active Expired - Fee Related
-
2010
- 2010-07-15 JP JP2012520784A patent/JP5658250B2/ja not_active Expired - Fee Related
- 2010-07-15 WO PCT/US2010/042147 patent/WO2011008963A2/en active Application Filing
- 2010-07-15 KR KR1020127004286A patent/KR101281480B1/ko not_active IP Right Cessation
- 2010-07-15 CN CN201080040461.1A patent/CN102713873B/zh active Active
- 2010-07-15 EP EP10800548.9A patent/EP2454671A4/en not_active Withdrawn
- 2010-07-16 TW TW103121460A patent/TWI467386B/zh not_active IP Right Cessation
- 2010-07-16 TW TW099123548A patent/TWI447586B/zh not_active IP Right Cessation
-
2012
- 2012-03-19 US US13/423,808 patent/US8423680B2/en active Active
-
2013
- 2013-04-07 US US13/858,064 patent/US8615609B2/en active Active
- 2013-12-12 US US14/104,468 patent/US9330033B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050166014A1 (en) * | 2004-01-27 | 2005-07-28 | Hitachi Global Storage Technologies Netherlands, B.V. | Data transmission control method and storage device |
US20060218437A1 (en) * | 2005-03-23 | 2006-09-28 | Hitachi Global Storage Technologies Netherlands B.V. | Data storage device, and method for rewriting data in nonvolatile memory |
US20070260756A1 (en) * | 2006-01-05 | 2007-11-08 | Pao-Ching Tseng | Method for Processing Command via SATA Interface |
CN101354902A (zh) * | 2007-07-27 | 2009-01-28 | 西部数据技术公司 | 刷新区段中的区域来维持主机命令的目标吞吐量的磁盘驱动器 |
Also Published As
Publication number | Publication date |
---|---|
JP5658250B2 (ja) | 2015-01-21 |
US20110016233A1 (en) | 2011-01-20 |
US20140173139A1 (en) | 2014-06-19 |
KR20120046259A (ko) | 2012-05-09 |
US8615609B2 (en) | 2013-12-24 |
US8140712B2 (en) | 2012-03-20 |
TWI447586B (zh) | 2014-08-01 |
US8423680B2 (en) | 2013-04-16 |
US20130019031A1 (en) | 2013-01-17 |
EP2454671A2 (en) | 2012-05-23 |
JP2012533800A (ja) | 2012-12-27 |
WO2011008963A2 (en) | 2011-01-20 |
CN102713873B (zh) | 2016-10-19 |
TW201120641A (en) | 2011-06-16 |
TWI467386B (zh) | 2015-01-01 |
US9330033B2 (en) | 2016-05-03 |
TW201437813A (zh) | 2014-10-01 |
KR101281480B1 (ko) | 2013-07-02 |
WO2011008963A3 (en) | 2011-05-12 |
EP2454671A4 (en) | 2014-06-04 |
US20130227174A1 (en) | 2013-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10628216B2 (en) | I/O request scheduling method and apparatus by adjusting queue depth associated with storage device based on hige or low priority status | |
CN102713873A (zh) | 在从驱动器被发送到主机装置的信息中插入间隔 | |
US10019200B2 (en) | Ordering a plurality of write commands associated with a storage device | |
KR102427550B1 (ko) | 재구성 가능한 멀티 포트들을 구비한 PCIe 스토리지 시스템을 위한 서비스 품질을 인식하는 입출력 관리 | |
WO2011011295A2 (en) | Reducing a rate of data transfer to at least a portion of memory | |
CN102859491A (zh) | 通过利用接收侧缩放(rss)软件为网络适配器动态添加或移除队列对的资源关联 | |
CN105302497A (zh) | 一种缓存管理方法与系统 | |
CN104461716A (zh) | 一种多核异构系统的访问方法及多核异构系统 | |
CN104503924A (zh) | 一种分层存储系统中的区域分配方法及装置 | |
CN116089477B (zh) | 分布式训练方法及系统 | |
CN116909953A (zh) | 一种多路径规划方法、装置及介质 | |
CN115904259B (zh) | 非易失性存储器标准NVMe指令的处理方法及相关装置 | |
CN115840649B (zh) | 划分容量块式虚拟资源分配方法及装置、存储介质和终端 | |
US11106361B2 (en) | Technologies for lockless, scalable, and adaptive storage quality of service | |
EP3223167B1 (en) | Storage space management method and device | |
CN117332881B (zh) | 分布式训练方法及电子设备 | |
WO2024013831A1 (ja) | タスクスケジューラ装置、計算システム、タスクスケジューリング方法およびプログラム | |
EP3992771A1 (en) | Controller for performing command scheduling, storage device including the controller, and operating method of the controller | |
CN107870733B (zh) | 一种为命名空间提供服务质量的方法 | |
KR20240053405A (ko) | 서버리스 엣지 컴퓨팅 환경에서의 동적 분할 컴퓨팅 방법 | |
CN118051299A (zh) | 一种云平台虚拟机性能调控方法、系统、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20160218 Address after: American California Applicant after: Seagate Technology LLC Address before: American California Applicant before: LSI Corporation |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |