数据传输控制方法和存储装置的制作方法

文档序号:6513885阅读:156来源:国知局
专利名称:数据传输控制方法和存储装置的制作方法
技术领域
本发明涉及数据传输控制方法和存储装置,特别是涉及对命令完成通知的定时控制。
背景技术
已经知道,利用包括光盘和磁带的各种介质的装置作为信息记录和再现装置。尤其是,硬盘驱动器在计算机中作为存储装置广泛流行,以至于在今天的计算机中它们是必不可少的存储装置之一。而且,它们的应用不限于计算机,随着运动图像记录/再现设备、汽车导航系统、数字摄像机的可拆装的存储器等的出现,由于优良的特性其应用越来越广泛。
用于硬盘驱动器的每个磁盘具有同心地形成的多个磁道,并且每个磁道划分成多个扇区。在每个扇区,存储有扇区地址信息和用户数据。无论是数据写入扇区还是从扇区读取数据都能根据扇区地址信息由访问所希望扇区的磁头进行。通过数据读取操作从磁盘读出的信号在传输到主机之前由信号处理电路进行波形整形、解码处理和其他规定的信号处理。同样,从主机传输来的数据由信号处理电路进行规定的信号处理并且然后写入磁盘。
对于在主机和硬盘驱动器之间的数据传输,通常使用诸如SCSI接口或ATA接口这样的接口协议。具体说,由于接口能力的改进和成本低,许多计算机使用ATA接口。ATA接口也被存储装置广泛地使用,包括诸如光盘存储装置的其他类型的存储装置。但是,由于记录介质在记录密度方面的不断发展,已经出现对更高性能的需求。为了提高数据传输速率,对ATA接口的需求增强。因此,已经提出用串行传送ATA接口代替现有的并行传输协议。
“串行ATA工作组”已经研发出串行ATA规约。在已经发布的“串行ATA II串行ATA 1.0规约的扩展”中,已经采用现行的并行ATA未包括的一些技术。其中之一是称之为NCQ(本机命令队列)的命令队列的技术。NCQ使硬盘驱动器自身能够在内部确定要被执行的排队命令的次序。这能够有效地减少由于硬盘驱动器的内部机械运行引起的等待时间。
一种以NCQ为特征的技术涉及命令完成通知的发布。每个排队命令的状态由主机的SActive寄存器管理。排队命令的状态可以通过清除SActive寄存器的相应的位从“未完成”改变为“完成”。清除SActive寄存器的位由来自硬盘驱动器的数据帧实现。这种数据帧称之为“设置装置位FIS”。每个命令完成通知可以在任何定时传输。例如,硬盘驱动器可以或者相应于多个命令而连续地传输“设置装置位FIS”给主机,或者用单个的“设置装置位FIS”通知主机两个命令已经完成。
除NCQ之外,与命令完成通知的控制相关的技术的例子在日本专利公开第2001-312373号中进行了公开。在这种技术中,控制发布命令完成信号的定时以便防止扇区缓冲器中的数据被新接收的命令盖写。当存在较早接收的未完成的写命令时,如果新接收一个写命令,那么检查表明未完成命令的LBAs的位置关系的命中(hit)状态,以重新排列数据写入该记录介质的次序,并且然后根据该重新排列的次序,写入数据被记录在该介质中。这时,如果在扇区缓冲器中的空闲空间不大于预定大小,并且命中状态是NOHIT,则新接收的命令具有优先权开始在介质上进行记录而不发布命令完成信号。

发明内容
但是在日本专利公开第2001-312373号中,是从防止数据在扇区缓冲器中被盖写的角度来控制传输命令完成通知的定时候,因此不能获得合适的性能改善,这是因为它没有考虑包括查找时间和旋转等待时间的介质访问以及命令的重新安排。本发明的目的是通过控制命令完成通知的发布提高存储装置的性能。
根据本发明的一方面,提供一种用于控制主机和存储装置之间的数据传输的数据传输控制方法,包括如下步骤获得排队的第一命令;获得用于所述第一命令的第一数据的地址信息;在所述主机和所述存储装置之间传输所述第一数据;获得排队的第二命令;获得用于所述第二命令的第二数据的地址信息;根据所述第一数据和第二数据的地址信息,确定是否在将关于所述第一命令的完成通知从所述存储装置传输到所述主机之前,在所述主机和所述存储装置之间传输所述第二数据;根据在所述确定步骤中作出的决定,在所述主机和所述存储装置之间传输所述第二数据;以及在所述第一命令的处理完成之后,在传输了所述第二数据之后,向主机传输关于所述第一命令的所述完成通知。由于,根据关于所述第一和第二数据的地址信息来确定是否在传输所述第二数据之前或之后传输关于所述第一命令的完成通知,因此能够提高存储装置的性能。
优选,如果用于所述第一数据的地址和用于所述第二数据的地址之间的差小于预定值,则所述确定步骤确定在传输关于所述第一命令的所述完成通知之前传输所述第二数据。
优选,所述第一命令和所述第二命令分别对旋转的介质进行介质访问;并且根据关于所述第一数据和第二数据的所述地址信息,如果在对所述第一数据的介质访问之后无需旋转等待就能够进行对所述第二数据的介质访问,则所述确定步骤确定在传输关于所述第一命令的所述完成通知之前传输所述第二数据。
如果所述第一和第二命令分别是对介质写入数据的写命令,则本发明特别有用。还优选,所述第一命令和所述第二命令分别是对旋转的介质写入数据的命令;所述第二命令排队在所述第一命令之后;并且根据关于所述第一数据和第二数据的所述地址信息,如果在将所述第一数据写入介质之后,无需旋转等待就能够将所述第二数据写入介质,则所述确定步骤确定在传输关于所述第一命令的所述完成通知之前传输所述第二数据。
优选,所述第一命令和所述第二命令分别是对旋转的介质写入数据的命令;所述第二命令排队在所述第一命令之后;并且如果用于所述第二数据的地址邻近用于所述第一数据的地址,则所述确定步骤确定在传输关于所述第一命令的所述完成通知之前传输所述第二数据。
根据第二方面,提供一种用于控制主机和存储装置之间的数据传输的数据传输控制方法,包括如下步骤获得排队的第一命令;执行所述第一命令;获得有关排队命令的信息;以及根据用于执行所述第一命令的时间和用于重新安排所述排队命令的时间,确定传输关于所述第一命令的命令完成通知的定时。
优选,用于执行所述第一命令的所述时间根据用于所述第一命令的数据的扇区长度来估算。还优选,用于执行所述第一命令的所述时间根据用于所述第一命令的数据的介质访问时间来估算。还优选,用于重新安排所述排队命令的所述时间根据所述排队命令的总数来估算。还优选,如果用于所述第一命令的数据的所述扇区长度不大于预定值,并且所述排队命令的所述数目不小于预定值,则关于所述第一命令的所述命令完成通知被延迟。
优选,如果用于所述第一命令的数据的所述介质访问时间不大于预定值,并且所述排队命令的所述数目不小于预定值,则关于所述第一命令的所述命令完成通知被延迟。关于所述第一命令的所述命令完成通知在对所述排队命令的重新安排完成之后被传输。
根据本发明的第三方面,提供一种用于控制主机和存储装置之间的数据传输的数据传输控制方法,包括如下步骤从命令队列中获得要对介质进行访问的命令;执行所述所述命令;以及如果用于执行所述命令的时间不小于预定值,则将待传输的命令完成通知传输给主机。这能够减少待传输命令完成通知的数目并发布新接收的命令。
根据本发明的第四方面,提供一种存储装置,包括命令队列,其中存储了从主机传输的多个命令;命令次序确定部分,其确定按顺序执行存储在所述命令队列中的第一命令和第二命令;数据传输控制部分,其根据关于所述第一命令的第一数据的地址信息和关于所述第二命令的第二数据的地址信息,确定是否延迟传输关于所述第一命令的完成通知给主机的定时,直到所述第二数据被传输给主机或从主机传输;以及数据传输部分,其在所述数据传输控制部分的控制下,将所述第一数据传输给主机或从所述主机传输,并且在所述第一命令的处理被完成和所述第二数据被传输之后,传输关于所述第一命令的所述完成通知。由于根据关于所述第一和第二数据的地址信息来确定是否在传输所述第二数据之前或之后传输关于所述第一命令的完成通知,因此能够提高存储装置的性能。
优选,该存储装置还包括存储数据的旋转介质,其中所述第一和第二命令分别是将数据写入所述介质的命令;以及如果用于所述第一数据的地址和用于所述第二数据的地址之间的差小于预定值,则所述数据传输控制部分确定延迟传输关于所述第一命令的所述完成通知给主机的定时,直到所述第二数据从所述主机传输。
还优选,该存储装置还包括存储数据的旋转介质,其中所述第一和第二命令分别是对所述介质写入数据的命令;以及如果用于所述第二数据的地址邻近用于所述第一数据地址,则所述数据传输控制部分确定延迟传输关于所述第一命令的所述完成通知给主机的定时,直到所述第二数据从所述主机传输。
根据本发明的第五方面,提供一种存储装置,包括旋转介质,其上存储数据;命令队列,其存储从主机传输的多个命令;命令次序确定部分,其确定存储在所述命令队列中的要执行的命令的次序;数据传输控制部分,其根据由所述命令次序确定部分所确定的用于访问介质的执行命令的数据长度并且根据存储在所述命令队列中的命令的数目,确定将关于所述执行命令的命令完成通知传输给主机的定时;以及数据传输部分,其响应来自所述数据传输控制部分的请求将所述命令完成通知传输给主机。由于传输关于所述执行命令的命令完成通知的定时是根据用于所述执行命令的数据长度和存储在命令队列中的命令数目确定的,因此命令的重新安排能够适当的进行。
根据本发明的第六方面,提供一种存储装置,包括旋转介质,其上存储数据;命令队列,其存储从主机传输的多个命令;命令次序确定部分,其确定存储在所述命令队列中的要执行的命令的次序;数据传输控制部分,其根据由所述命令次序确定部分所确定的用于访问介质的执行命令的数据长度,并根据存储在所述命令队列中的命令数目,确定将关于所述执行命令的命令完成通知传输给主机的定时;以及数据传输部分,其响应来自所述数据传输控制部分的请求将所述命令完成通知传输给主机。由于传输关于所述执行命令的命令完成通知的定时是根据用于所述执行命令的访问时间和存储在命令队列中的命令数目确定的,因此命令的重新安排能够适当的进行。
根据本发明通过控制命令完成通知的发布能够提高存储装置的性能。


图1是根据实施例示出硬盘驱动器总体结构的框图;图2是作为优选实施例示出控制主机—装置数据传输的主机—装置接口的逻辑结构的框图;
图3示出该实施例的命令数据格式的例子;图4示出该实施例的设置的帧数据格式的例子;图5示出该实施例的命令完成通知数据格式的例子;图6是流程图,示出在该实施例中数据传输如何被控制以处理写命令;图7是流程图,示出在该实施例中数据传输如何被控制以处理读命令;图8是顺序示意图,示出在该实施例中当两个排队的命令连续被处理时如何进行主机—装置数据传输;图9是流程图,示出在该实施例中当两个排队的命令被连续处理时如何进行主机—装置数据传输;图10是流程图,示出如果命令的数据扇区长度小并且排队的命令总数较大时,在该实施例中如何控制定时以发布命令完成通知;图11是流程图,示出如果命令的介质访问时间较小并且排队的命令总数较大时,在该实施例中如何控制定时以发布命令完成通知。
具体实施例方式
下面将描述本发明的实施例。下面描述本发明如何应用并且本发明不限于下面引用的实施例。为了简单起见,在下面的说明书和附图中的适当地方进行省略和简化。本领域的普通技术人员在本发明的范围内很容易对实施例的要素进行修改、添加和选择。还应当注意,同样的附图标记用于所有的附图中共有的相同要素,并且为了简单起见,重复的描述在适当的地方被省去。
图1是示出在本实施例中的数据处理系统100的总体结构的框图。该数据处理系统100包括主机110和硬盘驱动器120。主机110可以是进行数据传输的计算机、数字摄像机等;硬盘驱动器120是存储从该主机110传输的数据的存储装置。该硬盘驱动器120包括在其支架中作为介质例子的一个或多个磁盘121;具有分别与磁盘的记录表面相关的磁头的磁头组组件123;和控制这些部件以便对磁盘121写入数据并从该磁盘读出数据的控制器124。
从主机110传输的主机用户数据被进行必要的处理并且在发送到磁头组组件123之前由控制器124转换成写信号。根据所获得的写信号,磁头122将数据写入该磁盘的记录表面。另一方面,由磁头122从磁盘121取出的读信号被转换成数字信号并在传输给主机之前由控制器124进行必要的处理。
磁盘121是非易失性记录介质,具有磁化的磁层以记录数据。当硬盘驱动器120运行时,磁盘121以规定的恒速被驱动绕主轴电机125的主轴旋转。当硬盘驱动器120不运行时,磁盘121保持静止。多个磁道作为数据存储分区同心地形成在磁盘121的表面上,并且每个磁道环形地划分成多个环形扇区。
伺服数据记录区形成在磁盘121的表面上。通常,磁盘121具有多个径向形成的伺服数据记录区。在每个扇区中形成伺服数据记录区和用户数据记录区。伺服数据由磁头122取出,使得能够获得关于磁头122位置的信息。伺服数据包括提供磁道号信息的磁道数据;提供扇区号信息的扇区数据;和脉冲模式(burst pattern)。
磁头组组件123安装在支架中以便能够沿着磁盘121的表面可枢转地移动,磁头组组件123由音圈电机(VCM)126驱动。具有浮动块和磁性薄膜元件的每个磁头122设置在磁头组组件123的末端。当磁头组组件123枢转地移动时,磁头122在磁盘121的表面之上沿径向移动,这使得磁头122能够访问所希望的磁道。
磁头组组件123对于每个磁盘121具有两个磁头122,并且两个磁头121分别与磁盘121的顶面和底面相关。当不进行数据的写/读操作时,磁头122通常是或者保存于位于磁盘121外面的斜坡结构(图中未示出),或者保存在CSS(接触起停)系统内部的CSS区。磁头122对磁盘121写入数据或从该磁盘121读取伺服数据和用户数据。
如图1所示,控制器124具有读/写通道127、硬盘控制器(HDC)128、微处理器单元(MPU)129、存储器130、伺服控制器133和电机驱动单元134。电机驱动单元134包括音圈电机驱动器(VCM驱动器)135和主轴电机驱动器(SPM驱动器)136。
读/写通道127对从主机110获得的数据进行写操作。在写操作中,从硬盘控制器128供给的写数据由读/写通道127进行代码-调制。如此被代码-调制的写数据然后转换成写信号(电流信号)以便该写信号供给到磁头122。磁头122根据所获得的信号通过使电流流过线圈将数据写入磁盘121。此外,当数据提供给主机110时,进行读操作。在读操作中,数据从磁头122供给的读信号中拾取并由读/写通道127进行解码处理,进行解码处理后取出的数据供给到硬盘控制器128。
根据加载到存储器130的微代码的操作,MPU129不仅执行对硬盘驱动器120的包括磁头122的定位控制、接口控制和缺陷管理的总体控制,还执行与数据处理相关的必要的处理。当起动硬盘驱动器120时,在MPU129上操作的微代码以及为了控制和数据处理所需要的数据从磁盘121或ROM(图中未示出)载入到存储器130。
由读/写通道127读出的数字数据除了来自主机的用户数据之外还包括伺服数据。伺服控制器133从读/写通道127获得的读出数据中取出伺服数据。该伺服数据具有磁道数据、扇区数据和脉冲模式。该取出的伺服数据从伺服控制器133传输给MPU129。
根据微代码,MPU129利用伺服数据进行磁头122定位控制处理。来自MPU129的控制数据输出给VCM驱动器135。VCM驱动器135根据控制信号向VCM126提供驱动电流。此外,MPU129根据微代码对电机驱动单元134中的寄存器设置SPM控制数据,以便控制主轴电机125的旋转。SPM驱动器136根据设置的SPM控制数据执行主轴电机125的旋转控制。
HDC 128具有与主机110接口的能力。硬盘控制器128接收来自主机110的用户数据和读、写以及其他命令。接收的用户数据传输给读/写通道127。此外,从读/写通道127所获得的来自磁盘的读出数据,或用于数据传输的控制数据由HDC 128传输给主机110。还有,HDC128执行包括代码生成处理的其他处理以用于对用户数据进行错误校验和错误修正。
控制数据和用户数据在HDC 128和主机110之间的传输由硬盘控制器128和运行在MPU129上的微代码控制。具体说,在这个实施例中硬盘驱动器120具有用于来自主机的某些命令的命令排队装置。在硬盘控制器128中用于执行的命令的排序以及用于主机—装置传输的控制数据和用户数据的排序是被控制和管理的,其目的是提高硬盘驱动器120的性能。
下面描述命令排队和在硬盘驱动器120主机110之间的主机—装置数据传输的控制。这个实施例的主机—装置接口使硬盘驱动器120能够内部控制某些操作的执行次序,以便提高硬盘驱动器120的性能。具体说,在这个实施例的主机—装置数据通信中,从硬盘驱动器120向主机110传输命令完成通知的定时被有效地控制,以便提高性能。本实施例的数据传输控制如果使用于支持NCQ(本机命令排队)的SATII规约,则能够提高驱动器的性能。虽然在这个实施例的下面的说明中参考NCQ,但是本发明的范围不限于NCQ。
图2是框图,示出在这个实施例的主机—装置接口中控制主机—装置数据传输的逻辑结构。HDC 128包括主机接口211、驱动器接口212和存储器管理器213。在MPU上运行的微代码使MPU129能够起主机接口管理器221、命令执行管理器222、队列管理器223和驱动器管理器224的作用。存储器130可以临时存储命令和数据,以便起命令队列231和数据缓冲器232的作用。
主机接口211通过执行与主机110的实际数据传输处理,起数据传输部分的作用。驱动器接口212进行与磁盘121(介质的一个例子)(或读写通道127)的实际数据输入输出处理。存储器管理器213通过控制存储器130的数据存储,对硬盘控制器128中的其他功能块和存储器130之间的命令和用户数据进行中间处理。
主机接口管理器221起到管理主机接口211的数据传输控制部分的功能,主机接口管理器221与主机接口211交换某些通知和指令。此外,主机接口管理器221还起到硬盘控制器128和运行于MPU129中的其他功能块之间的接口的作用。主机接口管理器221,根据从其他功能块获得的通知、请求和其他数据,控制在主机接口211和主机110之间待被传输的数据的次序。具体说,主机接口管理器221控制向主机110发布命令完成通知的定时,以有助于提高性能。
队列管理器223执行在命令序列231中排队的命令的重新安排。该队列管理器223起命令次序确定部分的作用,以适当地确定命令执行次序,其目的是使性能最佳化。根据队列管理器223确定的次序,命令执行管理器222控制命令执行。驱动器管理器224控制驱动器接口212以便控制驱动器接口212和磁盘121之间的数据写和数据读。驱动器管理器224按照来自命令执行管理器222的请求控制驱动器接口212。
下面提供在这个实施例中如何进行命令排队操作的基本描述。应当注意,从主机110传输的命令除了包括将要排队的命令之外还可以包括那些将不排队的命令。例如,对于SATII规约,不仅NCQ协议,还有DMA(直接存储器访问)协议、PIO(程控I/O)协议和其他协议能够同时被支持。通过参考,例如附在命令上的标识符,能够确定该命令是否将排队。下面描述将排队的命令和其所涉及的数据传输。在下面的描述中,读命令和写命令作为将排队的命令出现。
图3示出该实施例中的命令数据格式的例子。图中的数据格式可以应用于读或写命令。在这个实施例中,将要排队的命令包括标记字段。将要排队的每个命令通过与该命令相关的标记而被识别。可以用标记识别的未完成的命令数目由排队深度确定。对于NCQ,32个命令由用0到31表示的标记分别识别。
在图3中,“起始扇区”表示被要求传输的数据的开始扇区。“扇区号”从起始扇区数起。扇区标识通过,例如LBA(逻辑块寻址)成为可能。也给命令以“命令ID”以识别该命令,这里为读命令或写命令。除此之外,命令还可以包括其他控制数据,例如用于超高速缓冲器控制的数据。对于NCQ,“排队的读FPDMA(第一组DMA)”或“排队的写FPDMA”对应于这里被引用作为例子的命令。
从主机110传输的读或写命令被主机接口211接收并通过存储器管理器213存储在命令队列231中,主机接口211通知主机接口管理器221该命令已经进入。一旦从主机接口211收到该通知,主机接口管理器221请求主机接口211清除“忙”。在接收命令之后,如果主机接口211准备接收新命令,在传输用户数据之前清除“忙”。
进一步,主机接口管理器221请求队列管理器223重新安排命令执行次序。在命令序列231中,多个未完成的命令可以排队。队列管理器223通过确定在命令序列231中的待完成的命令的执行次序而重新安排命令序列,以便这些命令从性能的观点看以最佳次序执行。具体说,确定命令执行次序,以便使包括寻道等待时间和旋转等待时间的磁头的介质访问时间最少。
当进行重新安排时,队列管理器223根据考虑了各种参数的规定的算法确定执行次序。例如,参考了很多参数,例如寻道长度、访问起始位置和超高速缓存状态。这列没有详细描述用于确定命令执行次序的重新安排算法,因为这些算法是广为人知的。
命令执行管理器222根据队列管理器223确定的次序管理命令的执行。如上所述,在这个实施例中主机—装置用户数据传输可以由硬盘驱动器120内部控制,传向主机110的数据和来自主机110的数据可以由硬盘驱动器120以定时进行优化,以便减少内部运行等待时间。
与单个的命令分别相关的数据可以以任意次序传输。除了这个能力之外,优选地,根据处理效率将与命令相关的数据划分为数据部分并以任意次序传输这些数据部分。进一步更优选地,命令的部分数据传输可以插入另一个命令的部分数据之间。对于NCQ,该传输协议是被支持的。在NCQ中,如果能够进行“非零缓冲区位移”,也就是,可以设置位移以表示数据部分,并且“保证的按次序发送”是被禁止的,即不连续的传输是允许的,数据部分可以以前面提到的方式传输。假定,在下面的描述中该条件被满足。
为了使硬盘驱动器120能够控制用户数据传输,用于数据传输的设置帧(setup frame)由硬盘驱动器120发布给主机110。图4示出该实施例中的设置帧数据格式的例子。用于NCQ的“DMA设置FIS(帧信息结构)”是设置帧的一个例子。该设置帧包括规定读或写的字段、将被传输的数据所沿的传输方向。标记字段表示数据将被传输的排队而未完成的命令。如上所述,例如32个命令分别用由0到31表示的标记来识别。
为了能够进行命令的部分数据传输,偏移字段表示用于该部分数据传输的偏移。用于NCQ的“非零缓冲偏移”是这种偏移字段的例子。传输数据字节字段表示将被传输的数据字节的数目。与该偏移相结合,这种字段使命令的部分数据传输成为可能。除了它们之外,设置帧可以包括控制数据字段,它带有帧类型型信息、控制数据传输信息等。
当用户数据传输完成之后,命令完成通知从硬盘驱动器120传输给主机110。在这个实施例中,命令完成通知是在主机接口管理器221的控制之下传输的。命令的命令完成通知并不总是在该命令完成之后立即传输的,硬盘驱动器120可以在适当的定时输出命令完成通知,以便提高性能。例如,用于多个命令的命令完成通知可以在所有的这些命令完成之后顺序地传输。优选地,一个命令完成通知可以通知多个命令已经被成功完成。这能够减少主机110被中断的次数。
图5示出用于命令完成通知的数据格式。除了带有帧类型信息等的控制数据字段之外,每个命令完成通知还包括命令状态字段。命令状态字段表示由其标志识别的每个命令的状态。优选地,命令状态字段由与能够排队的命令一样多的位组成,也就是说,如果32个命令能够排队,那么命令状态字段具有32位数据。每个位表示与相应的标志相关的命令的状态。
例如,如果某个位被设置,这表示与对应于该位的标志相关的命令被成功地完成。如上所述也可以由一个命令完成通知通知主机110多个命令已被成功完成。通过设置命令状态字段的多个位,可以在分别完成多个命令时通知主机110。另一方面,通过清除位,可以通知与相应的标记相关的命令尚未完成。对于NCQ,“设置设备位FIN”是命令完成通知的例子,而“SActive”是命令状态字段的例子。
首先,参考图6,下面对如何进行写命令处理进行基本的描述。在下面的描述中假定写超高速缓冲存储器是被禁止的。如果从队列管理器223获得写命令(S601),命令执行管理器222请求主机接口管理器221从主机110开始数据传输。按照预定的算法,主机接口管理器221确定将要进行的相关于主机110的数据(包括诸如命令完成通知控制数据和用户数据)传输的次序(S602)。在这个例子中,响应该请求,主机接口管理器221请求主机接口211开始写数据传输。响应该请求,主机接口211发布设置帧(S603)。
响应于请求,主机110传输写数据(S604)。该传输的写数据通过主机接口211和存储器管理器213存储在存储器130中。当从主机接口211接收到数据传输完成通知时,主机接口管理器221通知命令执行管理器222该传输完成。命令执行管理器222请求驱动器管理器224写数据。在驱动器管理器224的管理下,驱动器接口212将经存储器管理器213从存储器130获得的写数据输出给磁盘121(S605)。
如果写高速缓冲存储器如所假定的被禁止,那么命令完成通知在数据写入磁盘121完成时被发布。由HDC 128经命令执行管理器222通知写数据已经写入磁盘121,主机接口管理器221确定是否传输命令完成通知(S606)。传输命令完成通知的定时从内部运行的效率的观点由考虑到其它命令或命令完成通知来确定。如果主机接口管理器221确定传输该命令完成通知,那么它请求主机接口211传输表示该完成的命令的标志的命令完成通知。主机接口211将带有状态字段中设置的相应位的命令完成通知传输给主机110(S607)。
同时,下面将参考图7对如何进行读处理进行基本描述。命令执行管理器222请求驱动器管理器224从磁盘121读取数据。在驱动器管理器224的控制下,从磁盘121读取的数据通过驱动器接口212和存储器管理器213存储在存储器130中(S701)。还有,驱动器管理器224将读取数据传输请求传给主机接口管理器221。
响应来自命令执行管理器222的请求,主机接口管理器221请求主机接口211开始向主机110传输数据。响应该请求,主机接口211发布设置帧(S702)。主机接口211经存储器管理器213获得存储在存储器130中的读取数据并将该读取数据传输给主机110(S703)。当传输处理完成时,主机接口211通知主机接口管理器221读取数据已经传输。
主机接口管理器221通过考虑其它命令或命令完成通知来确定传输命令完成通知的定时(S704)。例如,根据性能,通知或者可以在完成读取处理时,或者可以在稍后的定时传送。为了传输通知,主机接口管理器221请求主机接口211传输命令完成通知。主机接口211将带有状态字段中设置的相应位的命令完成通知传输给主机110(S705)。
下面描述控制发布命令完成通知的定时的一些优选方式。如上所述,向主机传输命令完成通知由主机接口管理器221管理。一种优选方式是当命令队列231中的两个排队的写命令被连续处理时,控制发布命令完成通知的定时。如果用于该两个命令的相应数据之间的地址差不大于预定值,则主机接口管理器221延迟第一个写命令的命令完成通知的传输。换句话说,如果相应的地址相互邻近或靠近,那么进行对磁盘的相应访问而无需相应访问之间的转动延误。在这种情况下,主机接口管理器221延迟第一个写命令的命令完成通知的传输。
在用于一个写命令的写数据从主机110传输之后,另一个写命令的写数据被传输而没有任何命令完成通知的传输。通过较早传输下一个写数据以便连续地传输这两个写数据,能够避免由于旋转延迟而引起性能变差。应当注意,虽然在下面的描述中假定是两个写命令,但是同样的过程也适用于三个或更多个写命令并且可以减少等待时间。
下面参考图8和图9对该过程进行具体描述。图8是在主机110和硬盘驱动器120之间的数据传输的顺序示意图。图9是其流程图。在命令队列231中,由标志X识别的写命令(X)和由标志Y识别的写命令(Y)排队。此外,如上面所假定的,写高速缓冲存储器被禁止。响应来自队列管理器223的请求,命令执行管理器222请求主机接口管理器221传输写命令(X)的写数据(S901)。
在主机接口管理器221的控制下,主机接口211将用于写数据传输的设置帧(X)传输给主机110(S902)。响应该设置帧(X),主机110将写数据(X)传输给硬盘驱动器120(S903)。该写数据(X)经HDC 128被存储在数据缓冲器232中。该写数据(X)开始传输之后或前面的对磁盘的访问完成时,开始对磁盘寻道并将该写数据(X)写入磁盘(S904)。如上面所提到的,用于写数据(X)的写操作在驱动器管理器224的管理下由驱动器接口212执行,该驱动器管理器224已经收到来自命令执行管理器222的请求。
在写数据(X)被传输或写入时,命令执行管理器222请求主机接口管理器221传输用于写命令(Y)的写数据(S905)。主机接口管理器221参考所获得的关于写数据(X)和写数据(Y)的地址信息,并根据该地址信息,确定要执行的写数据(Y)的传输以及写数据(X)的命令完成通知(X)的传输的次序(S906)。如果写数据(Y)的地址邻近或靠近写数据(X)的地址,就有可能通过延迟命令完成通知(X)来提高性能。在这种情况下,优选地,确定写数据(Y)的传输在命令完成通知(X)传输之前执行。具体说,如果不需要等待旋转就能够对磁盘进行写入,则写数据(Y)的传输将提早执行。如果满足这个条件,则命令完成通知(X)将较早传输。
如果较早执行写数据(Y)的传输,则在主机接口管理器221的控制下,主机接口211传输设置帧(Y)给主机110以便传输写数据(Y)(S907)。响应设置帧(Y),主机110将写数据(Y)传输给硬盘驱动器120(S908)。写数据(Y)经HDC 128被存储在数据缓冲器232中。
在写数据(Y)被完全写入之后,其完成通知经命令执行管理器222从HDC 128发送给主机接口管理器221。主机接口管理器221确定传输关于写数据(X)和写数据(Y)的命令完成通知。通过传输其中设置了命令状态字段中的相应位的单个命令完成通知,主机接口211在写数据(X)和写数据(Y)被完全写入时通知主机110(S909)。作为选择,也可以连续地或者以分隔开的的定时将两个命令完成通知(X)和(Y)传输给主机110。应当注意,迄今为止所描述的命令完成通知控制并不仅限于数据写入处理。
下面描述对命令完成通知的发布定时进行控制的另一种优选方式。在这种方式中,命令完成通知的发布定时被延迟,例如,为了保证重新安排排队命令所需的时间。具体说,可以根据命令执行时间和重新安排时间之间的关系通过延迟命令完成通知来保证合适的用于重新安排的时间。延迟发布命令完成通知的定时这种方式使得能够合适地重新安排命令执行次序。
如果用于一个命令的读或写数据的扇区长度小,那么会出现不能保证重新安排所需时间的可能性。如果扇区长度(数据长度)小,那么可用于重新安排命令执行次序的时间短。由于这个原因,如果排队命令的数目大于一定数,则用于执行合适的安排的时间得不到保证。以这种方式,主机接口管理器221根据存储在队列中的命令的总数和用于执行命令的数据长度控制发布命令完成通知的定时。
当对磁盘完成了用于一个读取命令的读取数据传输操作或当完成了用于一个写入命令的数据写入操作时,主机接口管理器221能够将命令完成通知传输给主机110。在请求主机接口211传输命令完成通知之前,主机接口管理器221根据执行命令的扇区长度和在命令队列231中排队的命令的总数判断是否传输已完成命令的命令完成通知。
如果不需要重新安排操作(S1001),则主机接口管理器221确定传输命令完成通知并请求将其传输至主机接口211(S1002)。优选地,如果多个命令完成通知待传输,则发布覆盖所有该多个命令的一个命令完成通知。在下面的描述中也一样。如果需要重新安排操作(S1001),则主机接口管理器221从队列管理器223获得关于排队命令的总数的信息。此外,主机接口管理器221从队列管理器223获得关于用于执行命令的数据的扇区长度的信息。关于它们的信息在适当的定时获得。主机接口管理器221将命令总数与扇区长度进行比较。
主机接口管理器221判断重新安排排队命令总数所需要的时间是否能够由用来处理执行命令数据的时间来保证。优选地,如果用于执行命令的数据长度不大于预定长度,并且排队的命令总数不大于预定的数目,则主机接口管理器221确定延迟命令完成通知的传输(S1003)。这种临界长度和总数根据每个命令/处理类型预先确定。
如果不满足上述条件,即,扇区长度大于预定长度或命令的总数小于预定的数目,则主机接口管理器221判断,重新安排排队命令的时间能够被保证并且确定传输命令完成通知给主机而不延迟(S1004)。如果满足上述条件,并且主机接口管理器221判断重新安排所需的时间不能被保证,则主机接口管理器221确定在稍晚的定时传输命令完成通知而不立即传输它(S1005)。
当重新安排完成时,队列管理器223通知主机接口管理器221重新安排已经完成(S1006)。响应该通知,主机接口管理器221确定发布该被延迟的命令完成通知并请求主机接口211传输该命令完成通知(S1007)。应当注意,在重新安排完成之后主机接口管理器221也能够再一次延迟命令完成通知的发布。
换句话说,如果命令执行时间由于扇区长度大而足够长,优选地,待传输的命令完成通知,如果有的话,一定要在此定时被返回到主机110。如果命令执行时间比重新安排时间长,则就要传输待传输的命令完成通知。例如,如果扇区长度不小于预定长度,并且排队的命令总数不大于预定数目,就可以确定传输待传输的命令完成通知。由于同时可用的标记数字的数目受限,将命令完成通知返回到主机110使得主机110能够发布新的命令。增加排队的命令的数目使硬盘驱动器120能够进行更合适的命令重新安排。
在迄今描述的方式中,是否延迟命令完成通知要根据扇区长度和排队命令的总数之间的关系来确定。在另一优选方式中,是否延迟命令完成通知要根据用于执行命令的介质访问时间和排队命令的总数之间的关系来确定。如果一个命令的读取或写入数据所需的包括寻道时间和旋转等待时间的介质访问时间较短,则可用于重新安排命令的时间也较短。在这种情况下,如果排队命令的总数不是太小,则用于进行适当重新安排的时间可能得不到保证。因此,主机接口管理器221根据存储在队列中的命令的信息和用于执行命令的介质访问时间控制发布命令完成通知的定时。
类似于上述方式,命令完成通知变得很容易被传输到主机。然后,在请求主机接口211传输命令完成通知之前,主机接口管理器221根据用于执行命令的介质访问时间和在命令队列231中排队的命令总数判断是否传输命令完成通知。
如果对于排队的命令不需要重新安排操作(S1101),则主机接口管理器221确定传输命令完成通知并请求将其传输到主机接口211(S1102)。如果需要重新安排操作(S1101),则主机接口管理器221从队列管理器223获得关于排队命令总数的信息。此外,主机接口管理器221还从队列管理器223获得关于用于执行命令的介质访问时间的信息。关于它们的信息在适当的定时获得。主机接口管理器221将命令的总数与介质访问时间进行比较。
主机接口管理器221判断重新安排排队命令总数所花的时间是否能由用于执行命令的介质访问时间所保证。优选地,如果用于执行命令的介质访问时间不大于预定时间并且排队命令的总数不小于预定的数目,则主机接口管理器221确定延迟命令完成通知的传输,这种临界时间和总数根据每个命令/处理类型来预先确定。
如果不满足上述条件,即,介质访问时间大于预定时间长度或命令的总数小于预定的数目,则主机接口管理器221判断,重新安排排队命令的所花的时间能够被保证并且确定传输命令完成通知给主机101而不延迟(S1104)。如果满足上述条件,并且主机接口管理器221判断用于重新安排所需的时间不能被保证,则主机接口管理器221确定在稍晚的定时传输命令完成通知而不是立即传输它(S1105)。当重新安排完成时,队列管理器223通知主机接口管理器221已经完成。
随后的处理与前面提到的方式相同。还是在这种方式中,优选地,如果命令执行时间由于介质访问时间长而足够长,那么待传输的命令完成通知,如果有的话,一定要在此定时被返回到主机110。如果命令执行时间比重新安排时间长,则就要传输待传输的命令完成通知。例如,如果介质访问时间不小于预定时间,并且排队的命令总数不大于预定数目,就可以确定传输该待传输的命令完成通知。
应当注意,本发明不限于串行传输或串行ATA协议。此外,用于每种处理的逻辑结构不限于迄今所所描述的存储装置实施例中相应的一种。存储装置实施例的功能结构或逻辑结构可以由本领域的普通技术人员有效地改进。还应当注意,虽然在这个实施例中磁头122是能够进行读写操作的读写磁头,本发明也可以应用于仅仅重现的装置。此外,虽然本发明特别适用于磁盘驱动装置,但是,它也可以用于其他类型的驱动记录介质的存储装置,例如光盘存储装置。
权利要求
1.一种用于控制主机和存储装置之间的数据传输的数据传输控制方法,包括如下步骤获得排队的第一命令;获得用于所述第一命令的第一数据的地址信息;在所述主机和所述存储装置之间传输所述第一数据;获得排队的第二命令;获得用于所述第二命令的第二数据的地址信息;根据所述第一数据和第二数据的地址信息,确定是否在将关于所述第一命令的完成通知从所述存储装置传输到所述主机之前,在所述主机和所述存储装置之间传输所述第二数据;根据在所述确定步骤中作出的决定,在所述主机和所述存储装置之间传输所述第二数据;以及在所述第一命令的处理完成之后,在传输了所述第二数据之后,向主机传输关于所述第一命令的所述完成通知。
2.根据权利要求1的数据传输控制方法,其中如果用于所述第一数据的地址和用于所述第二数据的地址之间的差小于预定值,则所述确定步骤确定在传输关于所述第一命令的所述完成通知之前传输所述第二数据。
3.根据权利要求1的数据传输控制方法,其中所述第一命令和所述第二命令分别对旋转的介质进行介质访问;并且根据关于所述第一数据和第二数据的所述地址信息,如果在对所述第一数据的介质访问之后无需旋转等待就能够进行对所述第二数据的介质访问,则所述确定步骤确定在传输关于所述第一命令的所述完成通知之前传输所述第二数据。
4.根据权利要求1的数据传输控制方法,其中,所述第一命令和所述第二命令分别是对介质写入数据的写命令。
5.根据权利要求1的数据传输控制方法,其中所述第一命令和所述第二命令分别是对旋转的介质写入数据的命令;所述第二命令排队在所述第一命令之后;并且根据关于所述第一数据和第二数据的所述地址信息,如果在将所述第一数据写入介质之后,无需旋转等待就能够将所述第二数据写入介质,则所述确定步骤确定在传输关于所述第一命令的所述完成通知之前传输所述第二数据。
6.根据权利要求1的数据传输控制方法,其中所述第一命令和所述第二命令分别是对旋转的介质写入数据的命令;所述第二命令排队在所述第一命令之后;并且如果用于所述第二数据的地址邻近用于所述第一数据的地址,则所述确定步骤确定在传输关于所述第一命令的所述完成通知之前传输所述第二数据。
7.一种用于控制主机和存储装置之间的数据传输的数据传输控制方法,包括如下步骤获得排队的第一命令;执行所述第一命令;获得有关排队命令的信息;以及根据用于执行所述第一命令的时间和用于重新安排所述排队命令的时间,确定传输关于所述第一命令的命令完成通知的定时。
8.根据权利要求7的数据传输控制方法,其中用于执行所述第一命令的所述时间根据用于所述第一命令的数据的扇区长度来估算。
9.根据权利要求7的数据传输控制方法,其中用于执行所述第一命令的所述时间根据用于所述第一命令的数据的介质访问时间来估算。
10.根据权利要求7的数据传输控制方法,其中用于重新安排所述排队命令的所述时间根据所述排队命令的总数来估算。
11.根据权利要求7的数据传输控制方法,其中如果用于所述第一命令的数据的所述扇区长度不大于预定值,并且所述排队命令的所述数目不小于预定值,则关于所述第一命令的所述命令完成通知被延迟。
12.根据权利要求7的数据传输控制方法,其中如果用于所述第一命令的数据的所述介质访问时间不大于预定值,并且所述排队命令的所述数目不小于预定值,则关于所述第一命令的所述命令完成通知被延迟。
13.根据权利要求7的数据传输控制方法,其中关于所述第一命令的所述命令完成通知在对所述排队命令的重新安排完成之后被传输。
14.一种用于控制主机和存储装置之间的数据传输的数据传输控制方法,包括如下步骤从命令队列中获得要对介质进行访问的命令;执行所述所述命令;以及如果用于执行所述命令的时间不小于预定值,则将待传输的命令完成通知传输给主机。
15.一种存储装置,包括命令队列,其中存储了从主机传输的多个命令;命令次序确定部分,其确定按顺序执行存储在所述命令队列中的第一命令和第二命令;数据传输控制部分,其根据关于所述第一命令的第一数据的地址信息和关于所述第二命令的第二数据的地址信息,确定是否延迟传输关于所述第一命令的完成通知给主机的定时,直到所述第二数据被传输给主机或从主机传输;以及数据传输部分,其在所述数据传输控制部分的控制下,将所述第一数据传输给主机或从所述主机传输,并且在所述第一命令的处理被完成和所述第二数据被传输之后,传输关于所述第一命令的所述完成通知。
16.根据权利要求15的存储装置,还包括存储数据的旋转介质,其中所述第一和第二命令分别是将数据写入所述介质的命令;以及如果用于所述第一数据的地址和用于所述第二数据的地址之间的差小于预定值,则所述数据传输控制部分确定延迟传输关于所述第一命令的所述完成通知给主机的定时,直到所述第二数据从所述主机传输。
17.根据权利要求15的存储装置,还包括存储数据的旋转介质,其中所述第一和第二命令分别是对所述介质写入数据的命令;以及如果用于所述第二数据的地址邻近用于所述第一数据地址,则所述数据传输控制部分确定延迟传输关于所述第一命令的所述完成通知给主机的定时,直到所述第二数据从所述主机传输。
18.一种存储装置,包括旋转介质,其上存储数据;命令队列,其存储从主机传输的多个命令;命令次序确定部分,其确定存储在所述命令队列中的要执行的命令的次序;数据传输控制部分,其根据由所述命令次序确定部分所确定的用于访问介质的执行命令的数据长度并且根据存储在所述命令队列中的命令的数目,确定将关于所述执行命令的命令完成通知传输给主机的定时;以及数据传输部分,其响应来自所述数据传输控制部分的请求将所述命令完成通知传输给主机。
19.根据权利要求18的存储装置,其中在执行了对存储在所述命令队列中的命令的重新安排之后,所述数据传输部分传输所述命令完成通知给主机。
20.一种存储装置,包括旋转介质,其上存储数据;命令队列,其存储从主机传输的多个命令;命令次序确定部分,其确定存储在所述命令队列中的要执行的命令的次序;数据传输控制部分,其根据由所述命令次序确定部分所确定的用于访问介质的执行命令的数据长度,并根据存储在所述命令队列中的命令数目,确定将关于所述执行命令的命令完成通知传输给主机的定时;以及数据传输部分,其响应来自所述数据传输控制部分的请求将所述命令完成通知传输给主机。
全文摘要
通过控制通知命令完成的定时来提高HDD的性能。向主机(110)传输命令完成通知由主机接口管理器(211)管理。如果分别用于两个排队命令的两个数据写入地址相互接近或邻近,即,可以访问磁盘上的这两个地址而无需旋转等待时间,则主机接口管理器(211)延迟关于第一写命令(X)的命令完成通知(X)的传输。两个命令完成通知(X)和(Y)在用于下一个命令的写数据(Y)被传输并且其对介质的写入完成之后进行。
文档编号G06F3/06GK1648843SQ20051000588
公开日2005年8月3日 申请日期2005年1月27日 优先权日2004年1月27日
发明者小林宽美, 金丸淳, 斋藤高裕 申请人:日立环球储存科技荷兰有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1