专利名称:读/写硬盘时处理数据错误和重试的方法
技术领域:
本发明的一个或多个实施方案一般涉及在硬盘上读/写数据时,处理读/写数据错误和重试的方法。
背景技术:
根据现有的在硬盘上读/写数据时处理读/写数据错误和的方法,例如要求写入数据,到一百(100)个连续的扇区(0到99)的写入操作,通常按如下步骤进行操作。当到达了一硬盘轨道的0扇区,数据处理伺服控制器将根据本领域中一般专业人员所熟知的方法中的任一种使数据开始写入。如果根据本领域中一般专业人员所熟知的方法中的任一种而写入数据错误被发现(这些写错误可能是由于以下任何一种情况,诸如,但并不仅限于(a)外部的震动或者振动导致读/写头偏离了轨道中心,(b)发现不正确的伺服扇区数据及(c)其他),该数据处理伺服控制器将根据本领域中一般专业人员所熟知的方法中的任一种立刻停止写操作,以避免不正确地写入数据和/或者避免可能影响记录在临近数据轨道上的数据。在发现数据错误时,一些数据扇区或许已经写入数据,而一些扇区还未写入数据。在这种情况下,根据以前的方法,硬盘将继续旋转,一旦写入数据错误被发现的扇区再次处于写入状态,数据处理伺服控制器将重新开始数据写入操作(这被称为重试)。当写入数据错误再次发生时,这种程序将重复进行。最后,根据本领域中以前的方法,若不是整个100个扇区被成功的写入,则是执行预定数量的重写操作。类似的程序也应用于读取数据。
不难看出,上文所述的传统方法既低效又耗时。
综上所述,需要提供一种能克服上述方法中一个或者多个已知问题的方法。
发明内容
本发明的一个或者多个实施方案满足了本领域上述一个或者多个已知的需求。更为确切的说,本发明的一个实施方案为在硬盘轨道的多个扇区上写入数据的方法,该方法包括(a)发送一个在轨道的第一个扇区上写入数据的信号;(b)接收写入数据错误;(c)当跳过预设数量的扇区后,发送一个在该轨道的另外一个扇区上写入数据的信号;(d)等待第一个扇区重新就位;以及(e)如果在该轨道上重试写入数据的次数尚未超过预定次数,发送一个在第一扇区上重试写入数据的信号。
图1所示为本写入数据发明的一个或者多个实施方案的流程图。
图2所示为本读取数据发明的一个或者多个实施方案的流程图。
图3所示为使用在发明背景中描述的现有方法与使用本发明一个实施方案的方法的一组在一百(100)个扇区上写入数据的连续重试模拟,其中硬盘每次旋转中,一个轨道之中的6个随机数据扇区被检测出有数据错误;并且图4所示为使用在发明背景中描述的现有的方法与使用本发明一个实施方案的方法的另一组在一百(100)个扇区上写入数据的连续重试模拟,其中硬盘每次旋转中,一个轨道之中的6个随机数据扇区被指出有数据错误。
具体实施例方式
根据本发明的一个或者多个实施方案,例如需要在硬盘轨道的一百(100)个扇区(0到99)上写入数据的写入操作,将如以下所述来进行。一旦根据本领域中一般专业人员所熟知的方法中的任一种而到达硬盘驱动器的硬盘上轨道的扇区0时,数据处理伺服控制器将根据本领域中一般专业人员所熟知的方法中的任一种使数据开始写入。如果根据本领域中一般专业人员所熟知的方法中的任一种,写入数据错误被发现(例如,当数据被写入时或者写入之后),数据处理伺服控制器将根据本领域中一般专业人员所熟知的方法中的任一种方法立刻使写入操作停止,但这仅仅是对于那些被检测到发生写入数据错误的扇区。而根据本发明的一个或者多个实施方案,数据处理伺服控制器在发现写入数据错误的扇区之后,跳过预定数量的扇区,然后使写入操作开始。例如,当预定的数量为0时,将在接下来的扇区中立即开始写入。此外,预定的数量可以是1,2或者更多。接下来,由于硬盘继续旋转,根据本发明的一个或者多个实施方案,数据处理伺服控制器使数据写入操作开始于先前旋转中由于发现了写数据错误而没有写入的扇区(这被称为重试)。这些操作将被持续执行,直至所有100个扇区被成功的写入,或者直至预定数量的重试被执行为止。根据本发明的一个或者多个实施方案,根据本领域中一般专业人员所熟知的方法中的任一种,数据处理伺服控制器将标注所有已写入的扇区,并且标注由于发生写入数据错误而没有写入的扇区。
图1图示了本写入数据发明的一个或者多个实施方案的流程图。如框990所示,数据处理伺服控制器设定(a)“重试的次数”(NRETRY)等于0,(b)“在轨道中待写的第一个数据扇区”(FSW),(c)“在轨道中待写入的扇区数量”(NUMS),(d)“下一个待写入的扇区”(NEXTS)等于FSW,和(e)SEC(0)到SEC(NUMS-1)=K1(其中,K1的值表示未写入的扇区,K2的值表示已写入的扇区)。然后控制转到判断框1000。
判断框1000判断“重试的数量(NRETRY)是否超过了预定的最大值(RETRYMAX)”。如果超过,控制转移到框1010以报告写入错误,否则,控制转到判断框1020。
判断框1020判断“下一个待写入的扇区”(NEXTS)是否已到达。如果已到达,控制转到框1030,否则,进行等待。
框1030发出在一扇区(即NEXTS)进行写入操作的命令。之后控制转到判断框1040。
判断框1040判断是否有写入错误发生。如果有,控制转移到框1110,否则,控制转到1050。
框1050将待写入的扇区的数量减1(NUMS=NUMS-1)并设定SEC(NEXTS)=K2。然后控制转到判断框1060。
判断框1060判断是否有更多的数据要写入(NUMS>0?)。如果有,控制转到框1070,否则退出。
在框图1070,通过在SEC()中搜寻在NEXTS之后而且等於K1的下一个待写入扇区(来回搜寻SEC()),以设定NEXTSnew。然后控制转到框1080。
判断框1080判断是否需要作多一个硬盘旋转才能写入更多的数据,即是否NEXTSnew<NEXTS。如果是,控制调用框1110,否则控制转到框图1090。
框图1090重新设定NEXTS,即NEXTS=NEXTSnew。然后控制转到判断框1020。
框1100将重试的次数增加1(NRETRY=NRETRY+1)并重新设定NEXTS(即NEXTS=NEXTSnew)。然后控制转到判断框1000。
框1110将NEXTS加上一个预定的数目(NSKIP)。然后控制转向框1070。
本领域的一般技术人员将会认可,即本发明的一个或者多个实施方案或可用于硬盘的读取数据操作。在读取数据操作的情况下,数据处理伺服控制器使数据由所有应读取的扇区读到数据缓存中。在读取数据时,将对读取数据错误进行检测,以便数据处理伺服控制器判断哪一些扇区中发生了数据读取错误。然后,根据本发明的一个或者多个实施方案,在硬盘的后续旋转中,数据处理伺服控制器使产生数据读取错误的扇区进行重读(这称为重试)。这种操作将重复执行,直至所有扇区被成功地读取,或者是已执行了所预定重试次数。根据本发明的一个或者多个实施方案、根据本领域中一般专业人员所熟知的方法中的任一种,数据处理伺服控制器将标注所有已成功读出的扇区,并且标注发生数据读取错误的扇区。
图2所示为本读取数据发明的一个或者多个实施方案的流程图。如框1990所示,数据处理伺服控制器设定(a)“重试的数目”(NRETRY)等于0,(b)“一轨道中第一个待读取数据的扇区”(FSR),(c)“该轨道中待读取的扇区数目”(NUMS),和(d)SEC(0)到SEC(NUMS-1)=K1(其中,K1的值表示未读取的扇区,K2的值表示已读取的扇区)。然后控制转到判断框2000。
判断框图2000判断“第一个待读取的扇区”(FSR)是否以到达。如果以到达,控制转到框2010,否则,进行等待。
框2010发出读取NUMS扇区的命令。然后控制转到框2020。
框2020接收数据读取错误信号,为每个接收到数据读取错误的扇区设定SEC()=K1,设定NUMDEFAULT等于接收到的错误数量,设定NUMS=NUMDEFAULT。控制然后转到判断框2030。
判断框2030判断NUMS=0是否成立。如果成立,退出,否则,控制将转到框2040。
框2040将重试的次数增加1(NRETRY=NRETRY+1)。然后控制转到判断框2050。
判断框2050判断“重试的数量(NRETRY)是否超过了预定的最大值(RETRYMAX)”。如果超过,控制转到框2060以报告读取错误,否则,控制转到框2070。
框2070通过搜索SEC()中的K1,以决定代表(一集合中第一个待读取的扇区,接收到读取数据错误的连续扇区数)的值对(FSRi,NSECi)的集合,其中,该种集合的数量为NUMGroup。将SEC()中的K1设回到K2。然后控制转到框2080。
框2080设定NUMDEFAULT=0,并在硬盘旋转所余下的部分中,循环读过这些集合。对每一个集合执行以下所述。判断FSRi是否已经到达。如果是,发出读NSECi扇区的命令,否则等待。接收任何的数据读取错误信号,为每个接收到数据读取错误信号的扇区设SEC()=K1,并将NUMDEFAULT的值加1。最后,设定NUMS=NUMDEFAUL。然后控制转到判断框2030。
不难想象,上述一个或者多个提出的实施方案中,有一些类型的写/读数据错误,在再次试图写入/读取前,需要数据处理伺服控制器等待以跳过预定数量的扇区(比如等到硬盘旋转了一整圈)。
图3和图4所示为一组在一百(100)个扇区上写入数据的连续重试模拟,其中硬盘每次旋转中,一个轨道之中的6个随机数据扇区被指出有写入数据错误。图3图4所示的数据为硬盘驱动器被放置在特定类型的振动下产生的一般错误数据,或者显示其他错误数据的情况,例如但并不限于,非重复脱离轨道(“NRRO”)。图3所示为一系列的在一百(100)个扇区上写入数据的连续重试模拟,其中硬盘每次旋转中,一个轨道之中的6个随机数据扇区被指出有数据错误。图3的100部分是使用在发明背景中所描述的现有方法所产生的结果,图3的200部分对应为本发明的一个实施方案所产生的结果。如图3的100部分所示,110部分的首行(对应于硬盘的一次旋转),扇区1,27,28,13,99和52产生了写入数据错误。接着,如120部分的首行所示(其中,0表示扇区被写入,1表示扇区没有被写入),在第一次硬盘旋转中,只有扇区1被写入数据。然后,110部分的第二行中(对应于硬盘的一次旋转),扇区6,8,51,62,73和99发生了写入数据错误。接下来,如120部分的第二行所示,在第二次硬盘旋转中,扇区1-5被写入。持续这种操作,不难看出,图3的100部分说明在100个扇区中写入信息时,使用现有的方法需要十(10)次硬盘旋转。
如图3的200部分所示,210部分的首行中,扇区1,27,28,13,99和52产生了写入数据错误。接着,在220部分的首行,在第一次硬盘旋转中,扇区0,2-12,14-26,29-51和53-98被写入数据。然后,220部分的第二行中,扇区6,8,51,62,73和99发生了写入数据错误。接下来,如220部分的第二行所示,在第二次硬盘旋转中,扇区1,13,27-28和52被写入。持续这种操作,不难看出,图3的200部分说明使用本发明的一个实施方案在100个扇区中写入信息时,需要三(3)次硬盘旋转。
图4所示为另一组在一百(100)个扇区上写入数据的连续重试模拟,其中硬盘每次旋转中,一个轨道之中的6个随机数据扇区被指出有数据错误。图4的300部分是使用在发明背景中描述的现有方法所产生的结果,图4的400部分是使用本发明的一个实施方案所产生的结果。由图4中不难得到,使用现有的方法在100个扇区中写入信息需要硬盘旋转(3)次,而使用本发明的一个实施方案在100个扇区中写入信息只需要硬盘旋转(2)次。
尽管包含于本发明的宗旨的各种实施方案在此给予了详细的描述和说明,本领域中的技术人员将容易设计出仍然包含于这些宗旨的其他各种实施方案。
权利要求
1.一种在硬盘轨道的多个扇区上写入数据的方法,该方法包括发送一个在该轨道的第一个扇区上写入数据的信号;接收至少一个数据写入错误;当跳过预设数目的扇区后,发送一个在轨道的另外一个扇区上写入数据的信号;等待第一个扇区重新就位;并且如果在轨道上写入数据的重试数目尚未超过预定的次数时,发送一个在第一扇区重试写入数据的信号。
2.一种在硬盘轨道的多个扇区上读取数据的方法,该方法包括发送一个从该轨道的第一个扇区上开始读取数据的信号;接收一个或者多个数据读取错误;等待第一个扇区重新就位;并且如果数据写入的重试数目尚未超过预定的次数,发送一个从该轨道先前不能读取的扇区重试读取数据的信号。
3.权利要求1中所述方法,其中所预定要跳过的扇区数为0。
4.权利要求1中所述方法,其中所预定要跳过的扇区数为1,2或者更多。
全文摘要
本发明的一个实施方案为在硬盘轨道的多个扇区上写入数据的方法,该方法包括(a)发送一个在轨道的第一个扇区上写入数据的信号;(b)接收写入数据默认值(default);(c)当跳过预设数目的扇区后,发送一个在轨道的另外一个扇区上写入数据的信号;(d)等待第一个扇区重新就位;并(e)如果在轨道上写入数据的重试数目尚未超过预定的次数时,发送一个在第一扇区重试写入数据的信号。
文档编号G11B20/18GK1607599SQ200410046220
公开日2005年4月20日 申请日期2004年5月31日 优先权日2003年10月16日
发明者戴维·M·德鲁因 申请人:南方汇通微硬盘科技有限公司