專利名稱:通過動態重新映射來適應數據存儲介質上介質缺陷的增長的制作方法
技術領域:
本發明涉及如硬盤驅動器,光驅動器,以及類似的數據存儲設備。尤其是,它涉及到這些存儲設備中對缺陷的檢測,糾正和報告。
背景技術:
諸如硬盤驅動器,磁帶驅動器,及類似的典型數據存儲設備利用了磁性的存儲介質,可以從這種介質中讀出數據和/或向它寫入數據。典型的磁性存儲介質包括可磁化的材料層,它可以進行有選擇的磁化,并產生磁性轉換(transition)以表示已存儲的信息。技術的革新不斷的減少了在存儲介質上表示每一比特信息所需的面積,這樣就允許在存儲介質上存儲更多的信息量。例如,硬盤驅動器可以由一個或者多個磁盤構成,其中每個磁盤被劃分成若干個同心的磁道,并且每個磁道劃分為扇區的極座標陣列(polar array of sectors)。存儲密度的增加既降低了現代硬盤驅動器中所使用的磁盤上磁道的間距(pitch),又降低了其扇區的大小,其結果使存儲容量不斷增大。
但是,當存儲密度增加時,數據存儲設備對介質缺陷的敏感度也會增加。特別地,對于磁盤以及其他的磁性存儲介質,磁性層的不完整性可以反映(render)在不能使用的存儲介質上的特定區域存儲信息。這樣的介質缺陷的大小范圍可以從非常小,例如,僅僅影響包含很少磁道的幾個扇區,到相對較大的區域范圍,例如,影響包含很多的磁道的許多扇區。此外,隨著存儲密度的增加,給定大小的介質缺陷將會相反地影響成比例的較大數量的扇區和磁道。
不考慮堅持適當的制造技術,在特定的每個制造的磁盤中至少存在一些介質缺陷。通常,這些介質缺陷是由于磁盤驅動器的電子元件,通過從由驅動器識別為可使用的存儲區域中未損壞的去除“損壞的(defective)”扇區獲得的。在很多的磁盤驅動器的設計中,在磁盤驅動器制造過程中要執行表面分析測試(SAT),例如,在磁盤初始低級格式化時。在SAT的過程中,磁盤中已損壞的扇區被識別出來,然后將其存儲在表格中,并重新映射到位于磁盤上未損壞區域內可用的替代扇區,或者“空閑”扇區。接著,只要驅動器試圖訪問該已損壞的扇區,就可以訪問到已經被映射到該損壞扇區上的空閑區域上。
相似的,在某些磁盤驅動器的標準操作過程中,可能會檢測到其他的缺陷,例如,在不成功的讀操作中檢測到的軟性錯誤(softerror)。在這種例子中,可以用與在SAT過程中執行的重新映射相似的操作在由驅動器識別為可用的存儲區域中清除最新檢測到缺陷。
然而,已經發現,由于諸如熱力學和機械應力及其他介質損害機制等多種因素,某些介質缺陷的大小會隨著時間的增加而有所增加。這樣,介質缺陷有時可能會影響那些與已經識別為損壞的扇區相鄰的、但是在SAT過程中原本被識別為未損壞的扇區。在未損壞扇區所占空間上的介質缺陷增長所造成的一個結果就是存儲在該扇區內的信息的丟失。
通常,為了適應介質缺陷的增長,在被識別為損壞的扇區附近的多個扇區,它們通常被稱為“填充”扇區,可以在SAT過程中和/或隨后的重新映射新的缺陷的時候被標志為不可用,這樣就在每個介質缺陷的周圍建立一個緩沖區。從驅動器電子學的觀點上來看,就是把填充扇區作為損壞的扇區來處理,這樣,每個介質缺陷的周圍的緩沖區域就不能夠用來存儲信息。
使用填充扇區的方法在提供了適應介質缺陷增長的能力的同時,也在存儲容量和可靠度之間形成了不希望的折衷。增大每個介質缺陷周圍的緩沖器區域的大小,就可以適應相對更多的缺陷增長,也就增加了可靠度,但是這樣做的代價是降低了磁盤上可用的面積。同樣的,在每個介質缺陷的周圍選擇最小的填充扇區數量就增大了存儲容量,但是很有可能發生介質缺陷超過它設定的緩沖器區域的情況,這樣就導致了數據丟失。
因此,在本領域中非常需要對在磁盤或者其他數據存儲介質上處理介質缺陷增長方法進行改進,并且特別地,也需要經過改進的方法可以更好地調節存儲容量和可靠性之間的平衡。
發明內容
本發明解決了這些問題以及其他和現有技術相關的問題,它提供了映射數據存儲介質上缺陷的設備、程序產品及方法,其中分析了在該介質上被預先識別(previously-identified)的一個或者多個缺陷,以檢測這些缺陷隨著時間的增長,這樣任何檢測到的預先識別的缺陷增長就可以通過將缺陷附近其他的表面區域動態重新映射到一個或者多個位于存儲介質其他位置上的替換區域上,以進行適應。這樣,當這些缺陷隨著時間增長的時候,預先存在(pre-existing)的缺陷周圍確定為緩沖區的區域得到了有效的保持,這樣可以保證適當的保護以免數據丟失,否則如果試圖在該區域存儲器儲信息就會造成數據丟失。
例如,在和本發明一致的一個實施例中,在磁盤驅動器的用戶初始化操作之后可能會訪問由硬盤驅動器使用的缺陷圖(defectmap),來識別一個或者多個填充扇區,這些扇區已經重新映射到磁盤上與已識別為介質缺陷相關的空閑扇區上。然后可以掃描這樣的填充扇區,來檢測它們本身是否已經損壞,這樣就可以指示介質缺陷是否實際上已經隨著時間增長了。對于任何這樣檢測到的已損壞的填充扇區,應該對缺陷圖進行更新來標識那些已損壞的填充扇區,并且重新映射一個或多個與這些填充扇區相鄰的附加扇區,并在缺陷圖中創建另外的填充扇區。
這些以及其他成為本發明的特征的優點和特點將在附在后面的權利要求中詳細說明,并且形成了本發明的另一個部分。但是,為了更好地理解本發明,理解本發明的優點,以及通過使用它而達到的目標,應該參考附圖進行說明,它詳細說明了本發明的示例性實施例。
圖1是數據存儲設備的框圖,它包含了與本發明相一致的動態重新映射。
圖2是幾種數據結構的框圖,它們被應用在圖1中的數據存儲設備的動態重新映射中。
圖3A和3B是圖1所示的數據存儲設備中動態重新映射的一個應用程序的流程圖。
圖4是參考圖3A和3B所示的重新映射處理器程序的流程圖。
圖5A到5D是磁盤表面上示范性的介質缺陷的框圖,以及這些缺陷增長和應用圖3A和3B的動態重新映射程序實現的容錯的框圖。
具體實施例方式
在下文中討論的實施例應用了動態重新映射來適應已超出為這種缺陷建立的原始緩沖區的介質缺陷的增長,例如,數據存儲設備中數據存儲介質在操作過程中由于可能遭受的熱力學或者機械的應力,或者其他介質的損害機制造成的缺陷的增長。
在與本發明相一致的一些實施例中,可以提供空閑時間重新映射的特性來周期性地檢查存在的缺陷,并確定在缺陷周圍建立的緩沖區域(典型地用填充扇區實現)沒有被損害(compromised)。例如,在空閑的時間里,與本發明相一致的一個實施例可以掃描已識別的填充扇區來標識任何不能再讀取的這樣的扇區。通常,在填充扇區中不能修復的數據就表示這個相鄰的介質缺陷已經增長,因此為了阻止缺陷的進一步增長,這樣的實施例可以執行另外的重分配程序,以在已擴大的缺陷周圍建立一個更大的緩沖區或者填充區域,否則如果缺陷增大到可用的區域內將會導致數據的丟失。
在不同的實施例中,原始的缺陷可以在SAT過程中檢測到,或者可以稍后檢測到,例如在已經初始化的數據存儲設備的操作使用之后。但是如果不考慮這些缺陷的來源,應該應用相似的動態重新映射過程來標記這些缺陷的增長。
與本發明相一致的實施例典型地執行動態重新映射程序,通過試圖在數據存儲介質上檢測預先識別的缺陷增長,然后作為檢測到這樣的增長的響應,將一個或多個和缺陷相關區域相鄰的區域重新映射來實現,在此把它稱作“缺陷區域”。典型地這種重新映射發生在將相鄰區域重新映射到一個或多個替代區域的過程中,典型的這種替代區域是在所述的動態重新映射過程之前由缺陷區域重新映射的其他替代區域之外的區域。
在下文討論的一個示范性的實施例中,例如,諸如硬盤驅動器的數據存儲設備可能包含一個或者多個磁盤,該磁盤的表面在邏輯上排列成扇區陣列,并進一步排列成多個同心圓的磁道或柱面。典型地,缺陷區域既包含數據無法修復的損壞扇區,還包含本身并沒有損壞的填充扇區,但是它在損壞扇區的周圍提供了緩沖區域,來適應由預先存在的缺陷增長造成的數據的丟失。典型地,作為SAT或者隨后的測試的結果,在缺陷區域內的損壞扇區和填充扇區將被重新映射到位于磁盤其他位置的可用的空閑扇區上(例如通過內聯(inline)或者外部(offsite)重分配),這樣試圖訪問這樣的扇區的結果就是將該訪問轉移到對應的空閑扇區上。
由于在這里描述的實施例是基于固定的硬盤驅動器的,所以它使用包含磁性層的磁盤,可以理解本發明可以應用到其他的環境中,在這種環境下應用的存儲介質也可能遭受介質缺陷的影響,例如,多種可去除的或者固定的磁性或者光介質。因此,本發明并不限于在此討論的特定的環境。
正如在下文中將要變得更加明顯的,通過重新分配在缺陷區域附近的額外的填充扇區來增大緩沖區域的算法可以根據不同的情況而改變。例如,希望根據觀察到的增長的類型來設計算法。有方向性的填充將填充扇區的增加僅限制在檢測到的增長方向上,這樣的算法也許適合諸如介質的裂開的缺陷,而這樣的缺陷決定了缺陷將沿著特定的方向增長。另一方面,圓周填充算法試圖在增長的缺陷周圍保持統一的緩沖器,這種算法在整個缺陷區域周圍設置額外的重分配的時候比較理想,例如,標記(address)嵌入的顆粒或者介質的凹點(pit)。但是,由于這兩種的算法可以單獨使用,在某些實施例中,根據檢測到的介質缺陷的特性動態選擇不同的算法是理想的。
通過應用在這里描述的動態重新映射方法,數據存儲設備可以進行激活前(pro-active)測量來減小由增長的缺陷造成的數據丟失。此外,可以在檢測到的介質缺陷區域的周圍應用典型的更小以及更加具有侵蝕性(aggressive)的緩沖區域來使從數據存儲介質的可用空間中去除的空間量最小化,這樣就最大化了存儲的容量。
在與本發明相一致的一些實施例中,在動態重新映射中應用的不同的參數和特性可以由制造者或者用戶配置。這些參數中的一些可以包含,例如(1)在空閑時間內將缺陷增長檢測開啟或者關閉的能力,(2)在執行額外的填充程序之前讀取填充扇區所允許的數據恢復的步驟數,(3)在預測故障分析(PFA)操作被觸發之前可以發生的重新分配的總數,(4)所使用的填充算法(例如,方向性填充或者圓周填充),及(5)確定對特定缺陷可以增加的額外填充的次數的能力。
通過下文描述的實施例,其他的變化和修改將變得更加明顯。
現在來看附圖,其中相同的附圖標記在多個附圖中標注了相同的部分,圖1顯示了具有示范性的硬盤驅動器10,它應用了與本發明相一致的動態重新映射。驅動器10整體上包含一個或多個磁盤12,一個致動臂14,它包含一個或多個數據記錄轉換器(transducer)16(也被稱作記錄頭或者讀/寫頭),一個音圈電機18,一個驅動控制器或者控制電路20。
控制電路20例如可以包括,諸如微處理器或者微控制器22的處理器,它用來管理整個驅動器的操作。由處理器執行的固件(firmware)或者微碼(microcode)程序代碼存儲在一個ROM 24或者其他形式的非易失性存儲器中,和/或存儲在磁盤12的保留區域上,其處理器的工作存儲器由RAM 26表示。另外,控制電路20典型地包含其他的電子電路,它受到處理器22管理的控制,來向磁盤12存儲數據或者從磁盤12重新獲取數據。電子電路典型地包含多種功能,這些功能可以由讀/寫電路28,伺服(servo)電路30,接口電路32和格式化(formatter)電路34表示。
典型地磁盤12為了進行頭(head)定位而被劃分成一組徑向間隔的磁道,其中每個磁道沿著圓周被劃分成多個數據扇區。扇區之間彼此可以是相同大小或者不同大小。如果磁盤驅動器具有多個磁盤和/或多個讀/寫頭,那么在所有磁盤表面上的這一組磁道就具有相同的半徑,被稱作“柱面”。
讀/寫電路28從讀/寫頭16接收到信號,并傳遞伺服信息到伺服電路30,然后將數據信號傳送到格式化電路34。伺服電路30用伺服信息產生驅動信號,它驅動語音線圈電機18來定位讀/寫頭16。接口電路32通過接口與主機系統(沒有顯示)進行通信,將數據和命令信息傳送給它。接口電路32也和格式化電路34通信。處理器22也需要和電路28-34中的每個電路通信,根據需要管理整個驅動器的操作。
在驅動器10的操作中,接口電路32典型地從主機系統接收到一個讀或寫數據扇區的請求。格式化電路34從接口電路32接收到邏輯塊地址形式的所請求的數據扇區列表,并將這些地址轉化為柱面、頭和扇區號,這些參數通過本領域所熟知的方法可以唯一標識所期望得到的數據扇區的位置。頭和柱面的信息將被傳遞給伺服電路30,伺服電路響應該信息并把讀/寫頭16定位在適當的柱面上適合的數據扇區上。如果提供給伺服電路30的柱面號和讀/寫頭16目前位置所對應的磁道號不一致,伺服電路30首先執行查詢操作,以將讀/寫頭定位在適合的柱面上。
一旦伺服電路30將讀/寫頭16定位在適當的柱面上,期望得到的數據扇區就通過讀取其ID字段來定位。可選地,在使用了無頭結構的磁盤驅動器中,正如在本領域所熟知的那樣,伺服電路30為了定位和識別期望得到的數據扇區,開始執行扇區計算。一旦定位完成,就再次應用本領域熟知的通用的方法,執行適當的讀或者寫操作。
與本發明相一致的動態重新映射典型地應用在驅動控制器20內部,并且典型地使用由處理器22執行的程序代碼。但是,應該理解在動態重新映射中執行的不同的操作可能被用在不同范圍(extent)里,如硬件、軟件或者二者結合的范圍。因此,本發明并不僅限于這里描述地的特定程序代碼應用。
通常,從軟件的角度來講,實現本發明不同實施例所使用的任何功能而執行的任何程序作為微代碼的一部分或者作為較高級別程序來實現,諸如操作系統,應用程序,組件,程序,對象,模塊或者指令序列,甚至是其子集(subset),在這里稱作“計算機程序代碼”,或者簡稱“程序代碼”。程序代碼典型地包含一個或者多個指令,它們在不同的時間存放在不同的存儲器位置以及計算機或可編程電子設備的存儲設備中,并且,當設備中的一個或者多個處理器讀取程序代碼并執行的時候,設備將執行那些必須執行的步驟或者組件,體現本發明不同的方面。另外,當本發明已經描述或者如下面將要描述的全功能磁盤驅動器中的那樣,本領域技術人員將會理解,本發明不同的實施例可以具有不同形式的程序產品,并且本發明的應用也是一樣的,而不用考慮使用特殊類型的信號承載介質來實際進行分配。信號承載介質的例子包括但是不限于可記錄類型的介質,如易失性(volatile)和非易失性(non-volatile)存儲器設備,軟盤和其他可移動的磁盤,硬盤驅動器,磁帶,光盤(例如CD-ROM,DVD等),其他類型中,以及傳輸類型介質,如數字和模擬的通信鏈路。
此外,從硬件的角度上來講,對于這些在硬件中已經實現或者將要在硬件中實現的功能,這些功能可以被看成是在組合了一個或者多個集成電路設備的電路系統中實現,以及通過另外的支持電子元件來實現的。另外,如在本領域中所熟知的那樣,典型的集成電路設備的設計和制造也要應用一個或多個計算機數據文件,在這里稱其為硬件定義程序,它定義了設備上電路系統的布線圖(layout)。該程序通常由設計工具生成,并且在隨后的制造過程中用它來制作布線模掩膜(mask),它定義了敷設到半導體晶片上的電路排列。典型地,該程序具有預先給定的形式,并且使用硬件描述語言(HDL)如VHDL,Verilog,EDIF等等。當本發明已經描述并在以后的應用在全功能集成電路設備內容中描述的電路系統中那樣,電子設備將應用相同的設備,本領域技術人員將會理解本發明所述的電路系統也可以作為多種形式的程序產品銷售,并且本發明應用也是一樣的,而不考慮使用特殊類型信號承載介質來實際上實現分配(distribution)。
現在來描述圖2,為了實現本發明的動態重新映射,典型地需要某種類型的缺陷圖,來保存與磁盤上已存在的缺陷相關的信息,以及與這些缺陷相關聯的扇區是怎樣重新映射到位于磁盤其他位置上的空閑扇區上的信息。
總體上來看,為了實現本發明的動態重新映射,最好擴展保存在常規缺陷圖中的信息,以允許實際損壞的扇區可以從任何在已識別的缺陷區域周圍為了形成緩沖區而創建的填充扇區中分別識別出來。然后,隨著缺陷增長及填充扇區變成已損壞的,這樣的填充扇區將被更新并標識為已損壞,例如,通過將這種填充扇區從填充扇區列表移動到損壞的扇區列表中。
硬盤驅動器的缺陷圖通常使用的數據結構典型的包含兩個不同的邏輯列表。一個制造缺陷列表(PLIST),它典型地包含在驅動器的制造過程中映射為缺陷的地址,還包含一個生長缺陷列表(GLIST),它典型地包含不和任何PLIST條目相關,但是在通常驅動器的操作過程中變為損壞的區域的地址。PLIST和GLIST由圖2顯示的缺陷圖中的40和42分別表示。
為了在下文中所要描述的實施例中實現動態重新映射,應用了兩個新的附加列表,一個被稱作制造填充列表(PPLIST)44及增長填充列表(GPLIST)46。在這個實施例中,GPLIST和PPLIST不僅僅存儲位置信息,并且明確地表示出或者暗示出它與特定缺陷位置后向關聯,這些缺陷來自GLIST或者來自PLIST。最好是應用另一個被稱作已損壞的填充列表(DPLIST)48,它定義了在PPLIST或者GPLIST中變為已損壞的填充扇區。可以理解,在與本發明相一致的缺陷圖中可以使用多種替代的數據結構。例如,在某些實施例中可以不使用DPLIST。或者,并不由于缺陷是在SAT過程中還是在操作使用中檢測出來的而區別對待缺陷及填充。另外,對于每一個列表可以使用多種不同的數據結構。
圖3A,圖3B和圖4接下來顯示了本發明的示范性的動態重新映射程序50,它可以由圖1中的控制電路20執行。另外,為了更進一步顯示這一程序的操作,圖5A-5D顯示了磁盤驅動器表面示范性的缺陷,它也將結合圖3A,圖3B和圖4中的示范性動態重新映射程序來尋址。
為了實現這一示范的程序,假設用戶需要選擇多個配置選項,包括(1)開啟或者關閉增長檢測的能力;(2)在讀PPLIST地址的時候所允許的數據恢復的步驟數;(3)在讀GPLIST地址的時候所允許的數據恢復的步驟數;(4)在PFA試驗之前允許加入DPLIST條目的總數;(5)在PFA試驗之前允許加入與特定PLIST和GLIST缺陷地址相關的DPLIST條目的總數;(6)在缺陷周圍使用的填充算法(例如方向性填充或者圓周填充)。
現在簡要說明圖5A,假設一個簡單的情況,即一個制造缺陷區域包含3個相鄰的扇區。在制造的過程中,這些缺陷扇區被加入到缺陷圖中,并且使用制造算法來將這些缺陷扇區以及與之相鄰的填充扇區映射到未損壞的空閑扇區上。但是,和常規的SAT算法不同的是,已損壞的扇區和填充扇區通常存儲在不同的列表中,例如,PLIST用來存放已損壞的扇區,而PPLIST用來存放填充扇區。在這一例子中,扇區由柱面號/頭號/扇區號識別。因此,在圖5A中可以看到,在SAT之后,檢測到三個已損壞的扇區,標識為29053/0/338,29054/0/338,29055/0/338(假設頭號為0),并加入PLIST,然后應用SAT算法進行重新映射。此外,例如,在29052/0/339到29056/0/339,29052/0/337到29056/0/337,29051/0/338到29052/0/338及29056/0/338到29057/0/338的填充扇區也被加入到PPLIST,并通過SAT算法重新映射。該示范性的驅動器缺陷圖在SAT之后的狀態在下面的表格1中顯示表1制造之后的缺陷圖
現在假設用戶使用如下設置配置驅動器(1)啟動缺陷增長的檢測功能;(2)在制造填充扇區中允許一次數據恢復步驟;(3)對于增長填充扇區不允許數據恢復步驟;(4)在PFA問題試驗后最大允許三個填充扇區變為損壞的;(5)在PFA問題試驗之后對于特定的缺陷最多可以填充兩次;及(6)填充算法選擇方向性填充。
現在來看圖3A和圖3B,它們顯示了本發明的動態重新映射程序50。首先,如塊(block)52所示,可以假設驅動器以本領域熟知的方法執行典型的標準文件操作。周期性的,程序50在塊54位置檢查驅動器是否處于空閑狀態,例如,沒有掛起的讀或寫操作,并且沒有發生其他高優先級的功能。如果不是,控制將返回到塊52。但是,無論什么時候驅動器進入空閑狀態,塊54將會跳轉到塊56來檢查所配置的設置確定是否使能了缺陷增長的檢查。
如果沒有,控制將返回塊52;否則控制將進入塊58來確定先前是否存在任何缺陷的增長,例如,通過觀察DPL1ST中是否包含任何條目,這些條目會指示填充扇區以前在動態重新映射的過程中被確定為已損壞的。在初始狀態下,DPLIST沒有列出任何的扇區,所以塊58將控制傳遞給塊60,來初始化一個循環以檢測PPLIST中的每個填充扇區,保證所有已知的填充扇區在所允許的數據恢復步驟數內都是可讀的(在這種情況下1)。特別地,塊60設置一個指向PPLIST的指針,它特別指向最后被檢查的扇區,這樣下一次驅動器進入空閑狀態的時候,缺陷增長檢查可以在它離開的地方繼續檢查,直到整個列表都檢查完畢(有可能在檢查最后一個扇區的時候被較高優先級的驅動器操作預先占用,這個高優先級的操作將驅動器帶出空閑狀態,例如,讀或者寫操作請求)。如果驅動器在完成PPLIST全部的檢查后仍然保持空閑狀態,檢查就從列表的開頭重新開始。
一旦指針被初始化,在塊62讀取當前的填充扇區。然后由塊64確定讀操作是否在允許的恢復步驟內成功。如果成功,控制將進入塊66來確定是否所有PPLIST的填充扇區都已經檢查,如果沒有,控制將進入塊68增加指針值,讓它指向PPLIST中下一個填充扇區。否則將返回到塊52來執行正常文件操作。
現在返回到塊64,如果對填充扇區的讀操作不成功,塊64將調用重新映射處理器程序70來重新映射現在已損壞的填充扇區,這一方法將在下文中詳細描述。然后控制將進入塊66檢查PPLIST中其他的填充扇區。
圖4詳細地顯示了重新映射處理器程序70。程序70開始于塊72,它將在DPLIST中加入新的損壞的扇區。接下來,通過使用已選擇的填充算法(例如,方向性填充或者圓周填充),將與新損壞的扇區相鄰的扇區重新映射到空閑扇區上,并把它們加入到GPLIST(塊74)。在接下來,在塊76確定與當前缺陷扇區相關聯的增長填充扇區的數目(例如,與特定缺陷相關聯的GPLIST扇區的數目)。
如果填充扇區增長的數目沒有超過配置的門限,塊78將控制傳遞至塊80來確定填充扇區增長的總數(例如,GPLIST中扇區的總數)。否則,塊78將控制傳遞給塊82以通知系統,例如,使用預測故障分析(PFA)結果或者通知,然后終止程序70。
現在返回到塊80,一旦確定了填充扇區增長的總數,塊84就確定這個總數是否超過了配置的門限,如果沒有,終止程序70。否則,控制進入塊86,建立一個PFA結果或者通知,并在這之后終止程序。
現在來看圖5B,為了實現本例,假設在填充扇區檢查的過程中,填充扇區中的一個(29056/0/338)要求5個恢復步驟才能讀出。由于在本例中,步驟計數超過了配置的門限1,過程流程執行了與程序70相關的操作。得到的結果就是,該填充扇區將被加入到DPLIST中,然后根據所選擇的填充算法(例如,通過如圖5B所示的方向性填充)在其預計的缺陷增長的方向上,相鄰的可用扇區被當作新的填充扇區加入,并且為它重新指配空閑扇區。另外,加入新的填充扇區到GPLIST中。
另外,假設在用戶讀操作過程中,定位了軟錯誤(soft error)的地址,并且該錯誤地址被重新指配到空閑的扇區區域。這將被看作增長的缺陷,所以將會建立一個GLIST條目,以及任何相關聯的填充(例如,通過如圖5B所示的圓周填充)。在GLIST扇區周圍的填充扇區將典型地在GPLIST中標識,由于其相關的缺陷在制造的過程中并不存在。因此增長的缺陷典型地被看成是損壞的填充扇區,只是與他相關的缺陷并不是原始就有的。表2顯示了在加入新的填充扇區后的缺陷圖的狀態
表2在已損壞的填充扇區事件和缺陷增長之后的缺陷圖
如上面所述的程序70中,在加入新的填充扇區之后,將會檢測預測故障分析(PFA)的觸發器。每個DPLIST條目表示了一個缺陷增長的步驟,所以需要檢查DPLIST中條目的總數是否超過了配置的門限值。如果對于驅動器允許增長的總數,以及特定缺陷的增長沒有達到配置的門限值,不會觸發PFA結果。
現在回到圖3A,一旦建立了一個GPLIST條目,它指示了增長的缺陷的地址,下次執行塊58的時候,控制將會進入塊88(圖3B)。在這一方面,理想的是GPLIST的優先級要高于PPLIST,因為GPLIST的條目指示了此前該缺陷地址已經增長的歷史。
塊88初始化一個兩個步驟的過程,用來掃描已增長的缺陷區域。首先,使用沒有復位的指針遍歷GPLIST,這樣就可以繼續由于用戶的操作或者高優先級的功能而中斷的操作。但是,塊88最初將指針設置成為指向GPLIST的開始。然后塊90執行檢查,以保證已損壞并加入到DPLIST中的GPLIST扇區沒有被檢查到。
如果一個GPLIST中的扇區不在DPLIST中,控制進入到塊92,對扇區執行一個讀操作。然后由塊94確定在允許的恢復步驟數內讀操作是否成功。塊94中使用和塊64中相同的門限,或者使用不同的門限。在本例中,配置在讀失敗之前不允許數據恢復步驟。如果讀失敗發生了,塊94將調用程序70來重新映射壞的扇區。否則,控制將進入到塊96來確定是否所有的GPLIST條目都檢查過了。
如果不是所有的條目都檢查過了,控制進入塊98增加指針使之指向GPLIST中的下一個扇區。然后控制返回到塊90。而且,現在返回到塊90,如果GPLIST中的一個扇區也在DPLIST中,控制將會直接進入塊96。
一旦GPLIST中所有的扇區都經過了檢查,控制將進入塊100,循環檢查DPLIST的條目,檢查所有和相同的原始缺陷相關的PPLIST條目,就像對待每個這樣的DPLIST條目(需要說明的是,對于GLIST缺陷,將不會存在相關聯的PPLIST條目)。特殊的,塊100復位了指向PPLIST的指針,從PPLIST中的第一個扇區開始,該扇區連接到DPLIST中的一個條目。然后塊101執行了一個檢查來保證該扇區不是已經存在于DPLIST中。如果該扇區并沒有已經存在于DPLIST中,控制進入塊102執行對該扇區的讀操作,及塊104決定讀操作在允許的恢復步驟數內是否成功(例如,由于正在讀取的是PPLIST條目,所以使用和塊64相同的門限)。如果讀取失敗,調用重新映射處理器程序70,及控制進入塊106。否則,塊104將控制直接傳遞到塊106。
塊106確定是否PPLIST中在增長的缺陷地址附近的所有扇區都經過了檢查(例如,連接到DPLIST條目)。如果沒有,控制進入塊108增加指針值,使之指向下一個連接到DPLIST條目的PPLIST扇區,然后返回到塊101處理下一個扇區。否則,塊106將控制傳送給塊60(圖3A)繼續檢查PPLIST。另外,現在返回到塊101,如果DPLIST中已經存在一個扇區,控制直接進入塊106。由于在塊88-108執行的檢查查找了所有PPLIST中與特定缺陷相關的填充,最好是為由塊62-68定義的循環分別保留指向PPLIST的指針。
繼續前面的例子,假設讀/寫操作在圖5B所示的事件以后被初始化。也假設實際上,在隨后的空閑周期中,另外一個填充扇區(例如29057/0/338)被檢測為已損壞的。其結果就是要在DPLIST中加入新的條目,并重新分配另外一個填充扇區(例如29059/0/338),這樣就要在GPLIST中加入另外一個填充扇區。這些扇區的重新分配在圖5C中顯示。此外,作為結果的缺陷圖在下面的表3中顯示表3額外的填充已損壞
還需要說明的是,在執行和重新分配額外的填充扇區相關的程序70的時候,也需要檢查PFA的門限。應用前面提到的例子的設置,發現相同的缺陷具有兩個增長的事件,這是試驗(trip)門限,隨后應該給系統或者用戶報告一個PFA通知或者結果。得到的結果就是,用戶放棄對驅動器的繼續操作,并將所有的數據從該驅動器復制到新的驅動器上。否則,然而,用戶將會忽略最初的PFA警告而繼續執行。
在后者的情況下,假設驅動器在執行完一些操作之后再次進入空閑狀態,并且在塊90-98(圖3B)的循環中遍歷GPLIST的時候,另外一個填充扇區變為已損壞的(例如,29058/0/338),碰巧的是該填充扇區也在GPLIST中標識。前面描述的加入新的填充扇區的操作還會發生,但是,即使缺陷的總數現在已經超過了所配置的門限值3,將會報告與之相比更加重要的PFA事件,該事件為一個單獨的缺陷已經增長超過了兩次。另外,如果另外一個填充扇區,例如,在GLIST條目的周圍(例如,填充29059/0/332)變為已損壞,它將會因為增長步驟的總數太大而觸發PFA。在本例中,配置的門限設置成3,并且4個缺陷被加入到DPLIST中。這些額外的錯誤的存在及重新映射在圖5D中顯示。
在這兩種情況下GPLIST中變為已損壞的條目被放置到DPLIST中,但是在GPLIST中仍然將其保留,正如DPLIST在原理上是計算機制。這就是為什么在試圖檢查一個條目,確保該條目不是對應一個已知的缺陷之前,應該最好檢查每個GPLIST條目。
關于缺陷圖,最好將每個PLIST,PPLIST,GLIST和GPLIST列表在存儲桶(bucket)中,隔離以將所有的填充扇區關聯到它們所填充的缺陷扇區上。這可以通過多種不同的方法實現,但是為了實現本實施例,一種方法就是給每個缺陷或者相關的缺陷組分配一個存儲在列表中的缺陷號,在列表中還存儲著它的位置。通過這種方法,PPLIST和GPLIST條目將參考它們所填充的缺陷桶號。這將啟動對相關填充扇區的檢查,就像在相關的圖3B中對塊104-108的循環中所描述的那樣。
由于在此提供的簡單的例子在缺陷圖中不包含多個制造缺陷,為了清楚而省略了存儲桶號。典型的三個PLIST條目應該與一個缺陷存儲桶相關聯,并且GLIST缺陷扇區將是獨立的缺陷存儲桶。為了顯示的目的,在表4中,所有與GLIST條目相關聯的填充扇區都用“*”符號標出。將表格分割僅僅是因為要清楚地關聯表4GPLIST中變為已損壞的額外的填充扇區
正如前面所述的,可以應用多種替代的數據結構來表現缺陷圖中不同的扇區。另外,用于檢測已損壞的填充扇區的方法也可以替代使用。同樣的,本發明并不限于圖3A,圖3B和圖4所顯示的特定的動態重新映射程序。
其他改進對于本領域的普通技術人員來講是非常明顯的。因此本發明就在后面附加的權利要求中說明。
權利要求
1.一種用于操作具有缺陷圖的類型的硬盤驅動器的方法,該缺陷圖標識該硬盤驅動器的磁盤上的至少一個缺陷,并且將至少一個與該缺陷相關聯的已損壞的扇區、以及在其附近的至少一個無缺陷的填充扇區重新映射到位于磁盤其他位置的空閑扇區上,在該硬盤驅動器的初始化操作之后,該方法包括(a)訪問所述缺陷圖以標識所述填充扇區;(b)掃描所述填充扇區并檢測有缺陷的填充扇區,其中檢測到有缺陷的填充扇區表明磁盤上的缺陷隨著時間而增長;并且(c)作為檢測到有缺陷的填充扇區的響應,更新缺陷圖,以標識所述填充扇區作為有缺陷的填充扇區,并將位于有缺陷的填充扇區附近的附加的扇區重新映射到磁盤上附加的空閑扇區,從而在缺陷圖中創建一個附加的填充扇區。
2.一種用于映射在數據存儲介質上的缺陷的方法,該方法包括(a)檢測數據存儲介質上預先標識的缺陷的增長,其中預先標識的缺陷和已經映射到第一替代區域的缺陷區域相關聯;并且(b)將至少一個與缺陷區域相鄰的區域重新映射到第二替代區域,以適應預先標識的缺陷的增長。
3.如權利要求2的方法,其中所述缺陷區域包括至少一個有缺陷的扇區以及至少一個位于有缺陷的扇區附近的填充扇區,并且其中檢測預先標識的缺陷增長包括掃描填充扇區是以便發現缺陷。
4.如權利要求3的方法,其中重新映射至少一個與缺陷區域相鄰的區域包括作為在填充扇區中檢測到缺陷的響應,重新分配至少一個與填充扇區相鄰的扇區。
5.如權利要求3的方法,其中所述有缺陷的扇區在缺陷扇區列表中被標識,并且填充扇區在填充扇區列表中被標識,該方法進一步包含在缺陷圖中指示已損壞的填充扇區,作為檢測預先標識的缺陷增長的響應。
6.如權利要求5的方法,其中將至少一個與缺陷區域相鄰的區域重新映射包括在缺陷圖中加入至少一個與填充扇區相鄰的扇區。
7.如權利要求6的方法,其中在缺陷圖中加入至少一個與填充扇區相鄰的扇區包括在增長的填充扇區列表中存儲至少一個扇區,并且其中指示該填充扇區是有缺陷的扇區包括在有缺陷的填充列表中指示該填充扇區是有缺陷的。
8.如權利要求3的方法,其中重新映射至少一個與缺陷區域相鄰的區域包括重新分配基本上沿著相對于填充扇區增長的方向設置的至少一個扇區。
9.如權利要求3的方法,其中重新映射至少一個與缺陷區域相鄰的區域包括重新分配圍繞所述缺陷區域周邊設置的多個扇區。
10.如權利要求3的方法,其中第一個和第二個替代區域中的每一個替代區域包含至少一個空閑扇區。
11.如權利要求2的方法,其中在包括數據存儲介質的數據存儲設備的制造過程中分配缺陷區域,并且其中檢測預先標識的缺陷增長以及重新映射至少一個區域將在數據存儲設備的操作使用之后執行。
12.如權利要求2的方法,其中檢測預先標識的缺陷增長以及重新映射至少一個區域在包括數據存儲介質的數據存儲設備的操作使用之后的空閑時間內執行。
13.如權利要求2的方法,進一步包括啟動預測故障分析操作,以作為檢測到的預先標識的缺陷增長超過預先定義的門限的響應。
14.如權利要求13的方法,其中預先確定的門限至少與檢測到的多個有缺陷的填充扇區的數量以及為該缺陷區域添加至少一個填充扇區的次數中之一相關。
15.如權利要求2的方法,其中數據存儲介質包括硬盤驅動器中的磁盤構成。
16.一種設備,包括(a)數據存儲介質;及(b)耦合到數據存儲介質的控制電路,被配置用來檢測數據存儲介質上預先標識的缺陷的增長,其中預先標識的缺陷和已經映射到第一替代區域的缺陷區域相關,進一步配置所述控制電路,以便將至少一個與缺陷區域相鄰的區域重新映射到第二替代區域,以適應預先標識缺陷的增長。
17.如權利要求16的設備,其中所述缺陷區域包括至少一個有缺陷的扇區以及至少一個位于有缺陷的扇區附近的填充扇區,并且其中通過掃描填充扇區以便發現缺陷,配置控制電路以檢測預先標識缺陷的增長,。
18.如權利要求17的設備,其中響應檢測填充扇區中的缺陷通過重新分配至少一個與填充扇區相鄰的扇區來配置控制電路,以重新映射至少一個與缺陷區域相鄰的區域。
19.如權利要求17的設備,其中有缺陷的扇區在缺陷扇區列表中被標識,并且填充扇區在填充扇區列表中被標識,并且進一步配置控制電路,以在缺陷圖中指示填充扇區是有缺陷的,作為檢測到以前標識的缺陷增長的響應。
20.如權利要求19的設備,其中配置控制電路以重新映射至少一個與缺陷區域相鄰的區域,這通過在缺陷圖中加入至少一個與填充扇區相鄰的扇區來完成。
21.如權利要求17的設備,其中配置控制電路以重新映射至少一個與缺陷區域相鄰的區域,這通過重新分配基本上沿著相對于填充扇區增長的方向設置的至少一個扇區來完成。
22.如權利要求17的設備,其中配置控制電路以重新映射至少一個與缺陷區域相鄰的區域,這通過重新分配在缺陷區域周圍的周邊上設置的多個扇區來完成。
23.如權利要求17的設備,其中第一個和第二個替代區域中的每一個替代區域包含至少一個空閑扇區。
24.如權利要求16的設備,其中在包括數據存儲介質的數據存儲設備的制造過程中分配所述缺陷區域,并且其中配置控制電路,用于檢測預先標識的缺陷增長以及在數據存儲設備的操作使用之后重新映射至少一個區域。
25.如權利要求16的設備,其中配置控制電路,用于檢測預先標識的缺陷增長,以及在包括數據存儲介質的數據存儲設備的操作使用之后的空閑時間重新映射至少一個區域。
26.如權利要求16的設備,進一步配置控制電路,用于響應檢測超過預先定義的門限的預先標識的缺陷增長,啟動預測故障分析操作。
27.如權利要求16的設備,其中所述數據存儲介質包括硬盤驅動器中的一個磁盤。
28.一種程序產品,包含(a)程序代碼,被配置用于檢測數據存儲設備中的數據存儲介質上預先標識的缺陷的增長,其中預先標識的缺陷和已經映射到第一替代區域的缺陷區域相關,進一步配置所述程序代碼用來將至少一個與缺陷區域相鄰的區域重新映射到第二替代區域,以適應預先標識的缺陷的增長;以及(b)用于承載所述程序代碼的信號承載介質。
29.如權利要求28的程序產品,其中所述信號承載介質包括至少傳輸介質和可記錄的介質中的至少一個。
全文摘要
映射數據存儲介質上缺陷的設備、程序產品和方法,分析存儲介質上一個或者多個預先標識的缺陷,以發現這些缺陷隨時間的增長,這樣對于任何檢測到的預先標識的缺陷的增長,可以通過將缺陷附近的其他表面區域動態重新映射到一個或者多個位于存儲介質其他位置的替代區域來進行適應。這樣,任何在預先存在的缺陷周圍定義的緩沖區域在那些缺陷隨時間增長的時候可以得到有效的保持,這樣給數據丟失提供了適當的保護,否則試圖在已被相鄰的缺陷增長影響的存儲器區域內放信息將會導致數據的丟失。
文檔編號G11B20/10GK1503264SQ20031011833
公開日2004年6月9日 申請日期2003年11月21日 優先權日2002年11月21日
發明者戴維·L·史密斯, 唐納德·E·沃斯伯格, 道格拉斯·M·齊歇爾, E 沃斯伯格, 戴維 L 史密斯, 斯 M 齊歇爾 申請人:日立環球儲存科技荷蘭有限公司