亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

磁盤裝置以及轉(zhuǎn)移保存管理信息的方法

文檔序號(hào):10534410閱讀:315來源:國知局
磁盤裝置以及轉(zhuǎn)移保存管理信息的方法
【專利摘要】本發(fā)明涉及磁盤裝置以及轉(zhuǎn)移保存管理信息的方法,實(shí)施方式的磁盤裝置的控制器與所述磁盤裝置的電源電壓的降低相應(yīng)地將寫數(shù)據(jù)列和第1管理信息轉(zhuǎn)移保存到非易失性存儲(chǔ)器,所述寫數(shù)據(jù)列是包含分別附加有冗余碼的未寫入盤的多個(gè)寫數(shù)據(jù)塊的寫數(shù)據(jù)列,所述第1管理信息是用于所述多個(gè)寫數(shù)據(jù)塊的除去邏輯塊地址之外的信息。在所述冗余碼中分別嵌入有所述多個(gè)寫數(shù)據(jù)塊的邏輯塊地址。
【專利說明】
磁盤裝置以及轉(zhuǎn)移保存管理信息的方法
技術(shù)領(lǐng)域
[0001]在此記載的實(shí)施方式涉及磁盤裝置以及轉(zhuǎn)移保存管理信息的方法。
【背景技術(shù)】
[0002]通常,對(duì)于磁盤裝置而言,根據(jù)來自主機(jī)裝置的寫命令,將由該寫命令指定的數(shù)據(jù)長的數(shù)據(jù)(即寫數(shù)據(jù))寫入盤。但是,有時(shí)在向該盤寫入寫數(shù)據(jù)完成之前,施加于磁盤裝置的電源電壓(更詳細(xì)而言是主電源電壓)會(huì)降低。該情況下,寫數(shù)據(jù)的一部分(更詳細(xì)而言是未寫入盤的寫數(shù)據(jù))有可能會(huì)遺失。
[0003]因此,近年來的磁盤裝置具有在主電源電壓降低了的情況下也保全寫數(shù)據(jù)的斷電保護(hù)(PLP,Power Loss Protect1n)功能。PLP功能包括在主電源電壓降低了的情況下將未寫入盤的寫數(shù)據(jù)以及用于該寫數(shù)據(jù)的管理信息(即寫數(shù)據(jù)管理信息)轉(zhuǎn)移保存到非易失性存儲(chǔ)器的功能。如此的轉(zhuǎn)移保存工作被稱為PLP轉(zhuǎn)移保存工作。該P(yáng)LP轉(zhuǎn)移保存工作在再次接通了主電源的情況下,能夠?qū)⑥D(zhuǎn)移保存在非易失性存儲(chǔ)器中的寫數(shù)據(jù)基于轉(zhuǎn)移保存在該非易失性存儲(chǔ)器中的寫數(shù)據(jù)管理信息而恢復(fù)到易失性存儲(chǔ)器中。
[0004]如此,在PLP轉(zhuǎn)移保存工作中,除了寫數(shù)據(jù)之外還將寫數(shù)據(jù)管理信息也轉(zhuǎn)移保存到非易失性存儲(chǔ)器。該寫數(shù)據(jù)管理信息的轉(zhuǎn)移保存壓縮非易失性存儲(chǔ)器的存儲(chǔ)區(qū)域。因此,要求削減應(yīng)該向非易失性存儲(chǔ)器轉(zhuǎn)移保存的寫數(shù)據(jù)管理信息的量。

【發(fā)明內(nèi)容】

[0005]本發(fā)明的實(shí)施方式提供一種能夠削減向易失性存儲(chǔ)器轉(zhuǎn)移保存的寫數(shù)據(jù)管理信息的量的磁盤裝置以及轉(zhuǎn)移保存管理信息的方法。
[0006]根據(jù)一個(gè)實(shí)施方式,磁盤裝置包括第I易失性存儲(chǔ)器、非易失性存儲(chǔ)器以及控制器。所述控制器構(gòu)成為與所述磁盤裝置的電源電壓的降低相應(yīng)地將寫數(shù)據(jù)列和第I管理信息轉(zhuǎn)移保存到所述非易失性存儲(chǔ)器,所述寫數(shù)據(jù)列是從外部傳送而存儲(chǔ)在所述第I易失性存儲(chǔ)器中、且包含分別附加有冗余碼的未寫入盤的多個(gè)寫數(shù)據(jù)塊的寫數(shù)據(jù)列,所述第I管理信息是用于所述多個(gè)寫數(shù)據(jù)塊的除去邏輯塊地址之外的信息。所述冗余碼與所述多個(gè)寫數(shù)據(jù)塊分別關(guān)聯(lián),在所述冗余碼中分別嵌入有所述多個(gè)寫數(shù)據(jù)塊的邏輯塊地址。
【附圖說明】
[0007]圖1是表示實(shí)施方式的磁盤裝置的典型結(jié)構(gòu)的框圖。
[0008]圖2是表示該實(shí)施方式中的轉(zhuǎn)移保存處理的典型順序的流程圖。
[0009]圖3的表示該實(shí)施方式中的塊循環(huán)冗余校驗(yàn)碼(BCRC)生成處理的典型順序的流程圖。
[0010]圖4是表示執(zhí)行轉(zhuǎn)移保存處理之前的緩沖存儲(chǔ)器以及CPU存儲(chǔ)器的內(nèi)容和執(zhí)行了轉(zhuǎn)移保存處理之后的閃速ROM (FROM)的內(nèi)容的例圖。
[0011]圖5是表示該實(shí)施方式中的恢復(fù)處理的典型順序的流程圖。
[0012]圖6是表示恢復(fù)處理所包含的邏輯塊地址(LBA)算出處理的典型順序的流程圖。
[0013]圖7是用于說明恢復(fù)處理的圖。
[0014]圖8是用于說明BCRC生成處理和LBA算出處理的圖。
[0015]圖9是表示在所述實(shí)施方式的變形例中執(zhí)行轉(zhuǎn)移保存處理之前的緩沖存儲(chǔ)器以及CPU存儲(chǔ)器的內(nèi)容和執(zhí)行了轉(zhuǎn)移保存處理之后的FROM的內(nèi)容的例圖。
[0016]圖10是用于說明該變形例中的恢復(fù)處理的圖。
【具體實(shí)施方式】
[0017]圖1是表示實(shí)施方式的磁盤裝置的典型結(jié)構(gòu)的框圖。磁盤裝置也被稱為硬盤驅(qū)動(dòng)器(HDD)。因此在以下的說明中將磁盤裝置標(biāo)記為HDD。圖1所示的HDD具備頭盤組件(HDA) 11、驅(qū)動(dòng)器IC12、控制器13、緩沖存儲(chǔ)器14以及閃速ROM(FROM) 15。
[0018]HDAll包括盤110。盤110例如是在其一個(gè)面具有以磁方式記錄數(shù)據(jù)的記錄面的磁記錄介質(zhì)。HDAll還包括頭、主軸馬達(dá)以及致動(dòng)器等周知的要素。但是,圖1中省略了這些要素。
[0019]驅(qū)動(dòng)器IC12按照控制器13 (更詳細(xì)而言是控制器13內(nèi)的CPU133)的控制來驅(qū)動(dòng)主軸馬達(dá)以及致動(dòng)器。驅(qū)動(dòng)器IC12例如包括備用電源120。但是,備用電源120的一部分(例如整流電路)也可以配置在驅(qū)動(dòng)器IC12的外部。
[0020]備用電源120在HDD的電源(以下,稱為主電源)的電壓即主電源電壓降低了的情況下,生成電力。即,備用電源120在主電源電壓降低了的情況下,生成為了維持HDD的必要最小限的工作所需的電力。必要最小限的工作包括PLP轉(zhuǎn)移保存工作。所生成的電力被供給到HDD內(nèi)的至少控制器13。備用電源120在該電力的生成時(shí)使用主軸馬達(dá)的反電動(dòng)勢。但是,備用電源120也可以使用由主電源電壓充電的電容器來生成電力。
[0021]控制器13例如使用將多個(gè)元件集成在單個(gè)芯片上的被稱為片上系統(tǒng)(System-on-a-Chip,SOC)的大規(guī)模集成電路(LSI)來實(shí)現(xiàn)??刂破?3包括主機(jī)接口控制器(以下,稱為HIF控制器)131、盤接口控制器(以下,稱為DIF控制器)132以及CPU133。
[0022]HIF控制器131經(jīng)由主機(jī)接口 20與主機(jī)裝置(以下,稱為主機(jī))連接。HIF控制器131接收從主機(jī)傳送的命令(寫命令、讀命令等)。HIF控制器131控制主機(jī)與緩沖存儲(chǔ)器14之間的數(shù)據(jù)傳送。
[0023]CPU133作為圖1所示的HDD的主控制器發(fā)揮功能。CPU133按照控制程序來控制HDD內(nèi)的其他要素的至少一部分。該至少一部分包括驅(qū)動(dòng)器IC12、HIF控制器131以及DIF控制器132。在本實(shí)施方式中,控制程序預(yù)先存儲(chǔ)在盤110的特定區(qū)域中。但是,控制程序也可以預(yù)先存在FR0M15中。
[0024]CPU133包括CPU存儲(chǔ)器134。CPU存儲(chǔ)器134使用靜態(tài)RAM(SRAM)或動(dòng)態(tài)RAM(DRAM)這樣的易失性存儲(chǔ)器構(gòu)成。在例如接通了 HDD的主電源的情況下,控制程序的至少一部分被從盤110裝載到CPU存儲(chǔ)器134的一部分存儲(chǔ)區(qū)域中。CPU存儲(chǔ)器134的存儲(chǔ)區(qū)域的其他一部分用于存儲(chǔ)由主機(jī)傳送到HDD的用于寫數(shù)據(jù)的管理信息(S卩,寫數(shù)據(jù)管理信息)。
[0025]緩沖存儲(chǔ)器14使用DRAM這樣的易失性存儲(chǔ)器構(gòu)成。緩沖存儲(chǔ)器14用于暫時(shí)存儲(chǔ)由主機(jī)傳送的寫數(shù)據(jù)以及從盤11讀取的讀數(shù)據(jù)。此外,寫數(shù)據(jù)管理信息、寫數(shù)據(jù)以及讀數(shù)據(jù)也可以存儲(chǔ)在一個(gè)易失性存儲(chǔ)器中。
[0026]FR0M15是可改寫的非易失性存儲(chǔ)器。在本實(shí)施方式中,在FR0M15的一部分存儲(chǔ)區(qū)域預(yù)先存儲(chǔ)有初始程序的裝入程序(IPL)。CPU133通過在例如接通了 HDD的主電源時(shí)執(zhí)行IPL,將存儲(chǔ)在盤11中的控制程序的至少一部分裝載到CPU存儲(chǔ)器134中。
[0027]FR0M15的其他一部分存儲(chǔ)區(qū)域用于在主電源電壓例如超過一定時(shí)間地低于了閾值的情況下對(duì)存儲(chǔ)在緩沖存儲(chǔ)器14中且未寫入盤110的寫數(shù)據(jù)進(jìn)行轉(zhuǎn)移保存。FR0M15的其他的另外一部分存儲(chǔ)區(qū)域用于對(duì)用于向FR0M15轉(zhuǎn)移保存的寫數(shù)據(jù)的寫數(shù)據(jù)管理信息進(jìn)行轉(zhuǎn)移保存。此外,緩沖存儲(chǔ)器14以及FR0M15也可以設(shè)置于控制器13。
[0028]在本實(shí)施方式中,CPU133在主電源電壓如上述那樣降低了的情況下例如在切斷了主電源的情況下,接受由備用電源120暫時(shí)供給的電力,在HDD中執(zhí)行必要最小限的工作。該必要最小限的工作例如除了使頭退到離開盤110的位置的工作之外,還包括PLP轉(zhuǎn)移保存工作(以下,稱為轉(zhuǎn)移保存處理)。另外,CPU133在主電源電壓修復(fù)了的情況下,例如再次接通了主電源的情況下,執(zhí)行被稱為PLP恢復(fù)工作的恢復(fù)工作(以下,稱為恢復(fù)處理)。
[0029]以下,參照?qǐng)D2?4以及圖8對(duì)本實(shí)施方式的轉(zhuǎn)移保存處理進(jìn)行說明。圖2是表示轉(zhuǎn)移保存處理的典型順序的流程圖,圖3是表示塊循環(huán)冗余校驗(yàn)碼(BCRC)生成處理的典型順序的流程圖。圖4表示執(zhí)行由箭頭400表示的轉(zhuǎn)移保存處理之前的緩沖存儲(chǔ)器14以及CPU存儲(chǔ)器134的內(nèi)容和執(zhí)行了轉(zhuǎn)移保存處理之后的FR0M15的內(nèi)容的例子。圖8是用于說明BCRC生成處理和邏輯塊地址(LBA)算出處理的圖。
[0030]現(xiàn)在,設(shè)為通過CPU133開始轉(zhuǎn)移保存處理。此時(shí)在緩沖存儲(chǔ)器14中,如圖4所示,設(shè)為存儲(chǔ)有η個(gè)寫數(shù)據(jù)列DSl、……、DSn。另外,緩沖存儲(chǔ)器14內(nèi)的寫數(shù)據(jù)列DS1、……、DSn是未寫入盤110的數(shù)據(jù)。寫數(shù)據(jù)列DSi(i = 1、……、n)包括m(i)( = NBi)個(gè)寫數(shù)據(jù)塊 BLKi1、......、BLKimU)。
[0031]寫數(shù)據(jù)列DS1、……、DSn內(nèi)的寫數(shù)據(jù)塊在緩沖存儲(chǔ)器14中的存儲(chǔ)位置,例如使用周知的高速緩存目錄(cache directory)管理表進(jìn)行管理。高速緩存目錄管理表也示出緩沖存儲(chǔ)器14內(nèi)的寫數(shù)據(jù)列DS1、……、DSn是否未寫入盤110、即是否為臟數(shù)據(jù)(dirty)。此外,高速緩存目錄管理表也可以對(duì)寫數(shù)據(jù)列DS1、……、DSn內(nèi)的寫數(shù)據(jù)塊分別示出是否為臟數(shù)據(jù)。
[0032]寫數(shù)據(jù)塊BLKil、……、BLKim⑴的地址、例如邏輯塊地址LBAil、……、LBAim(i)連續(xù)。另外,例如,設(shè)為邏輯塊地址LBA(1-l)m(1-l)與邏輯塊地址LBAil不連續(xù)。LBA(1-l)m(1-l)是寫數(shù)據(jù)列DS(1-l)內(nèi)的末尾的寫數(shù)據(jù)塊BLK(1-l)m(1-l)的邏輯塊地址。同樣,設(shè)為邏輯塊地址LBAim (i)與邏輯塊地址LBA (i+1) I不連續(xù)。LBA (i+1) I是寫數(shù)據(jù)列DS(i+l)內(nèi)的領(lǐng)頭的寫數(shù)據(jù)塊BLK(i+l)l的邏輯塊地址。
[0033]邏輯塊地址LBAil、......、LBAim(i)這樣的在本實(shí)施方式中適用的邏輯塊地址的位長(bit length)為32。該情況下,圖1所示的HDD能夠支持的最大存儲(chǔ)容量大致為2TB (Terabyte,太字節(jié))。
[0034]在本實(shí)施方式中,設(shè)為DS1、……、DSn分別是由來自主機(jī)(外部)的寫命令CMDU……、CMDn指定的寫數(shù)據(jù)列。寫命令CMDi包括邏輯塊地址LBAi和數(shù)據(jù)傳送長。邏輯塊地址LBAi表示寫數(shù)據(jù)列DSi內(nèi)的領(lǐng)頭的寫數(shù)據(jù)塊BLKil的邏輯塊地址LBAil。數(shù)據(jù)傳送長表示寫數(shù)據(jù)列DSi內(nèi)的寫數(shù)據(jù)塊的總數(shù)NBi( = m(i))。
[0035]寫數(shù)據(jù)列DSl、……、DSn由主機(jī)逐次傳送,并由HIF控制器131接收。HIF控制器131將所接收到的寫數(shù)據(jù)列DS1、……、DSn如圖4所示存儲(chǔ)于緩沖存儲(chǔ)器14。CPU133將用于緩沖存儲(chǔ)器14所存儲(chǔ)的寫數(shù)據(jù)列DS1、……、DSn的寫數(shù)據(jù)管理信息Ma存儲(chǔ)于CPU存儲(chǔ)器134。寫數(shù)據(jù)管理信息Ma包括與寫數(shù)據(jù)列DS1、……、DSn分別對(duì)應(yīng)的寫數(shù)據(jù)管理信息要素MEal、......、MEan0要素MEal、......、MEan如圖4所示,分別包括邏輯塊地址LBAl (=
ql)、......、LBAn( = qn)以及寫數(shù)據(jù)塊數(shù) NBl ( = m(l))、......、NBn( = m(n))。
[0036]在此,設(shè)為LBAx表示由第I寫命令指定的第I寫數(shù)據(jù)列的末尾的寫數(shù)據(jù)塊的邏輯塊地址,LBAy表示由第2寫命令指定的第2寫數(shù)據(jù)列的領(lǐng)頭的寫數(shù)據(jù)塊的邏輯塊地址。如果LBAy與LBAx連續(xù),則CPU133將第I以及第2寫數(shù)據(jù)列合并作為第3寫數(shù)據(jù)列。并且,CPU133將與第I以及第2寫數(shù)據(jù)列對(duì)應(yīng)的第I以及第2寫數(shù)據(jù)管理信息要素合并作為與第3寫數(shù)據(jù)列對(duì)應(yīng)的第3寫數(shù)據(jù)管理信息要素。第3寫數(shù)據(jù)管理信息要素內(nèi)的邏輯塊地址以及數(shù)據(jù)塊數(shù)分別表示第3寫數(shù)據(jù)列的領(lǐng)頭的寫數(shù)據(jù)塊的邏輯塊地址以及第3寫數(shù)據(jù)列內(nèi)的寫數(shù)據(jù)塊的總數(shù)。在上述的寫數(shù)據(jù)列DS1、……、DSn以及寫數(shù)據(jù)管理信息要素MEal、……、MEan內(nèi),也可以包括與第3寫數(shù)據(jù)列以及第3寫數(shù)據(jù)管理信息要素相當(dāng)?shù)膶憯?shù)據(jù)列以及寫數(shù)據(jù)管理信息要素。
[0037]在此,設(shè)為BLKij表示緩沖存儲(chǔ)器14所存儲(chǔ)的寫數(shù)據(jù)列DSi內(nèi)的第j個(gè)(j =
1、……、m(i))寫數(shù)據(jù)塊。在寫數(shù)據(jù)塊BLKij中附加有塊循環(huán)冗余校驗(yàn)碼BCRCij。BCRCij在寫數(shù)據(jù)塊BLKij的接收時(shí)通過由HIF控制器131進(jìn)行的BCRC生成處理而生成。
[0038]HIF控制器131按圖3的流程圖所示的順序如下所述來執(zhí)行BCRC生成處理。首先HIF控制器131將變量h設(shè)定為初始值I (S301)。在本實(shí)施方式中,寫數(shù)據(jù)塊BLKij被分割成位長為32的小塊。在本實(shí)施方式中,寫數(shù)據(jù)塊BLKij的大小為4096位。該情況下,寫數(shù)據(jù)塊BLKij被分割成128個(gè)小塊。變量h指示寫數(shù)據(jù)塊BLKij內(nèi)的128個(gè)小塊中的第h個(gè)小塊。將寫數(shù)據(jù)塊BLKij內(nèi)的數(shù)據(jù)(的項(xiàng)目)標(biāo)記為Di j,將第h個(gè)小塊內(nèi)的數(shù)據(jù)(的項(xiàng)目)標(biāo)記為D32_h。小塊(數(shù)據(jù)D32_h)的位長與在本實(shí)施方式中適用的邏輯塊地址的位長相等。
[0039]HIF控制器131在將變量h設(shè)定為初始值I時(shí)(S301),將寫數(shù)據(jù)塊BLKij的邏輯塊地址LBAij設(shè)定為32位的循環(huán)冗余校驗(yàn)碼CRC32_h-l (S302)。邏輯塊地址LBAij基于與寫數(shù)據(jù)列DSi對(duì)應(yīng)的寫數(shù)據(jù)管理信息要素MEai內(nèi)的邏輯塊地址LBAi以及變量j而通過LBAij = LBAi+j-Ι的運(yùn)算來算出。在此,邏輯塊地址LBAi與邏輯塊地址LBAil —致。在h為I的本實(shí)施方式中,CRC32_h-l = CRC32_0。也即,LBAij如圖8所示設(shè)定為CRC32_0。
[0040]接著,HIF控制器131從寫數(shù)據(jù)塊BLKij取得第h個(gè)小塊內(nèi)的數(shù)據(jù)D32_h(=D32_l) (S303)。接著,HIF控制器131通過基于D32_h以及CRC32_h_l的CRC運(yùn)算,如下所述來生成32位的循環(huán)冗余校驗(yàn)碼CRC32_h (S304)。
[0041]首先,HIF控制器131將D32_h和CRC32_h-l (更詳細(xì)而言是由二進(jìn)制數(shù)表示的D32_h和CRC32_h-l)不進(jìn)行進(jìn)位操作地相加。也即,HIF控制器131將D32_h和CRC32_h_l通過模2 (modulo 2)的運(yùn)算來相加。模2加法通過D32_h與CRC32_h_l之間的異或運(yùn)算來實(shí)現(xiàn)。將該異或運(yùn)算值標(biāo)記為X0R32_hh-l。接著,HIF控制器131將X0R32_hh_l (更詳細(xì)而言是X0R32_hh-l X 232)用作被除數(shù),通過模2的運(yùn)算將該被除數(shù)X0R32_hh_l X 232 (62位)除以例如CRC-32這樣的預(yù)先設(shè)定的除數(shù)(在此為33位的除數(shù))。然后,HIF控制器131取得該模2除法的余數(shù)(32位)作為CRC32_h。在h為I的情況下,如圖8所示,通過基于 D32_l 和 CRC32_0 ( = LBAij)的 CRC 運(yùn)算 811,生成 32 位的 CRC32_1。
[0042]接著,HIF控制器 131 判定變量 h 是否與 BS/32 ( = 4096/32 = 128) 一致(S305)。BS/32表示構(gòu)成寫數(shù)據(jù)塊BLKij的小塊的個(gè)數(shù)。也即,BS/32表示寫數(shù)據(jù)塊BLKij內(nèi)的末尾的小塊。
[0043]如果變量h與BS/32( = 128)不一致(S305的“否”),則HIF控制器131判斷為CRC運(yùn)算未到達(dá)寫數(shù)據(jù)塊BLKij內(nèi)的末尾的小塊。該情況下,HIF控制器131將變量h加一,以使變量h指示接著的寫數(shù)據(jù)塊BLKij內(nèi)的下一個(gè)小塊(S306),然后返回到S303。
[0044]在S303中,HIF控制器131從寫數(shù)據(jù)塊BLKij取得加一后的變量h所指定的小塊內(nèi)的數(shù)據(jù)D32_h。然后,HIF控制器131通過基于D32_h以及CRC32_h_l的CRC運(yùn)算來生成新的CRC32_h (S304)。在此,上次生成的CRC32_h被用作CRC32_h_l。如圖8所示,在第二次的CRC運(yùn)算812中,因?yàn)閔為2,所以基于D32_2以及CRC32_1而生成CRC32_2。
[0045]上述的S303以及S304在從h = I到h = BS/32 = 128為止反復(fù)進(jìn)行。在h =BS/32 = 128的情況下,如圖8所示,執(zhí)行與寫數(shù)據(jù)塊BLKij相關(guān)的第128次的CRC運(yùn)算813,基于D32_128以及CRC32_127而生成CRC32_128。也即,在CRC運(yùn)算813中,作為新的CRC32_h 而生成 CRC32_128 (S304)。
[0046]如此,在變量h為BS/32 ( = 128)的情況下(S305的“是”),HIF控制器131判斷為基于寫數(shù)據(jù)塊BLKij的所有的小塊內(nèi)的數(shù)據(jù)D32_l至D32_128執(zhí)行了 CRC運(yùn)算。于是,HIF控制器131將通過最后的CRC運(yùn)算而生成的CRC32_h( = CRC32_128)設(shè)定為應(yīng)該對(duì)寫數(shù)據(jù)塊BLKij (更詳細(xì)而言是寫數(shù)據(jù)塊BLKij內(nèi)的數(shù)據(jù)Dij)附加的塊循環(huán)冗余校驗(yàn)碼BCRCij (S307)。由此,BCRC生成處理結(jié)束。HIF控制器131將附加了所生成的BCRCij的BLKij作為所接收到的寫數(shù)據(jù)列DSi內(nèi)的第j個(gè)寫數(shù)據(jù)塊存儲(chǔ)于緩沖存儲(chǔ)器14。
[0047]從上述的BCRC生成處理可知,BCRCij可以說是將寫數(shù)據(jù)塊BLKij的邏輯塊地址LBAij嵌入在內(nèi)的塊循環(huán)冗余校驗(yàn)碼。包括CRC運(yùn)算811、812以及813的BS/32 ( = 128)次的CRC運(yùn)算,與基于寫數(shù)據(jù)塊BLKij內(nèi)的數(shù)據(jù)Dij (即128字節(jié)的數(shù)據(jù)Dij)和邏輯塊地址LBAij的CRC運(yùn)算810 (圖8)等效。CRC運(yùn)算810中的被除數(shù)使用Dij與LBAij之間的異或運(yùn)算的結(jié)果。
[0048]當(dāng)CPU133開始轉(zhuǎn)移保存處理時(shí),首先將塊大小BS如圖4所示轉(zhuǎn)移保存到FR0M15的預(yù)定的區(qū)域(以下,稱為寫數(shù)據(jù)管理信息區(qū)域)(S201)。塊大小BS表示由圖1所示的HDD適用的數(shù)據(jù)塊的大小、例如位長。雖然在圖4中省略,但塊大小BS存儲(chǔ)在CPU存儲(chǔ)器134中。在本實(shí)施方式中,塊大小BS能夠由主機(jī)指定,例如4096位(512字節(jié))。此外,在塊大小BS固定的情況下,不一定需要S201。
[0049]接著,CPU133對(duì)未寫入盤110的寫數(shù)據(jù)列DS1、……、DSn的個(gè)數(shù)NS進(jìn)行計(jì)數(shù)(S202)。NS通過對(duì)寫數(shù)據(jù)管理信息Ma內(nèi)的寫數(shù)據(jù)管理信息要素MEal、……、MEan的個(gè)數(shù)進(jìn)行計(jì)數(shù)而取得。CPU133將寫數(shù)據(jù)列數(shù)NS例如圖4所示轉(zhuǎn)移保存到FR0M15的寫數(shù)據(jù)管理信息區(qū)域內(nèi)的繼塊大小BS之后的位置(S203)。
[0050]接著,CPU133通過將寫數(shù)據(jù)管理信息要素MEal、……、MEan所包含的寫數(shù)據(jù)塊數(shù)NBU……、NBn相加,算出寫數(shù)據(jù)塊數(shù)NB1、……、NBn的總和(總寫數(shù)據(jù)塊數(shù))TNB (S204)。CPU133將總寫數(shù)據(jù)塊數(shù)TNB例如圖4所示轉(zhuǎn)移保存到FR0M15的寫數(shù)據(jù)管理信息區(qū)域內(nèi)的繼寫數(shù)據(jù)列數(shù)NS之后的位置(S205)。
[0051]如此,在FR0M15的寫數(shù)據(jù)管理信息區(qū)域中,轉(zhuǎn)移保存有包括塊大小BS、寫數(shù)據(jù)列數(shù)NS以及總寫數(shù)據(jù)塊數(shù)TNB的寫數(shù)據(jù)管理信息Mb。請(qǐng)注意:寫數(shù)據(jù)管理信息Mb不同于寫數(shù)據(jù)管理信息Ma,并不包括寫數(shù)據(jù)列DS1、……、DSn的領(lǐng)頭的寫數(shù)據(jù)塊BLK11、……、BLKnl
的邏輯塊地址LBAl ( = LBAlI)、......、LBAn ( = LBAnl)。也即,邏輯塊地址LBAl、......、
LBAn被從寫數(shù)據(jù)管理信息Mb中排除。由此,根據(jù)本實(shí)施方式,與以往技術(shù)相比能夠削減寫數(shù)據(jù)管理信息Mb的量,由此能夠削減對(duì)FR0M15要求的存儲(chǔ)容量。而且,在本實(shí)施方式中,寫數(shù)據(jù)管理信息Mb不同于寫數(shù)據(jù)管理信息Ma,并不包括寫數(shù)據(jù)列各自的數(shù)據(jù)塊數(shù)。由此,根據(jù)本實(shí)施方式,與以往技術(shù)相比能夠進(jìn)一步削減寫數(shù)據(jù)管理信息Mb的量。
[0052]接著,CPU133將變量i設(shè)定為初始值I (S206)。變量i表示未寫入盤110的寫數(shù)據(jù)列DSl、……、DSn中的第i個(gè)寫數(shù)據(jù)列DSi0接著CPU133將變量j設(shè)定為初始值I (S207)。變量j表示寫數(shù)據(jù)列DSi內(nèi)的寫數(shù)據(jù)塊BLKi 1、……、BLKim (i)中的第j個(gè)寫數(shù)據(jù)塊BLKij。如該例所示,在變量j為I的情況下,變量j指示寫數(shù)據(jù)列DSi內(nèi)的領(lǐng)頭的寫數(shù)據(jù)塊BLKil。
[0053]接著,CPU133從緩沖存儲(chǔ)器14讀出寫數(shù)據(jù)列DSi內(nèi)的寫數(shù)據(jù)塊BLKi j,將該寫數(shù)據(jù)塊BLKij轉(zhuǎn)移保存到FR0M15 (S208)。自此以后,向FR0M15轉(zhuǎn)移保存的寫數(shù)據(jù)塊BLKij有時(shí)標(biāo)記成 BLKij (Di j,BCRCij) ο BLKij (Di j,BCRCi j)表示寫數(shù)據(jù)塊 BLKij 除了數(shù)據(jù) Dij 之外還包含塊循環(huán)冗余校驗(yàn)碼BCRCij。如該例所示,在變量i以及j都為I的情況下,寫數(shù)據(jù)塊BLKij (Dij,BCRCij)為寫數(shù)據(jù)列DSl內(nèi)的領(lǐng)頭的寫數(shù)據(jù)塊BLKll (Dll,BCRClI)。寫數(shù)據(jù)塊BLKlI (Dll,BCRClI)被轉(zhuǎn)移保存到FR0M15的預(yù)定的區(qū)域,例如繼寫數(shù)據(jù)管理信息區(qū)域之后的區(qū)域(以下,稱為寫數(shù)據(jù)區(qū)域)的領(lǐng)頭的位置(圖4)。
[0054]接著,CPU133判定變量j是否與寫數(shù)據(jù)管理信息要素MEai所包含的寫數(shù)據(jù)塊數(shù)NBi 一致(S209) ο如果變量j (j = I)與寫數(shù)據(jù)塊數(shù)NBi不一致(S209的“否”),則CPU133判斷為轉(zhuǎn)移保存處理未到達(dá)寫數(shù)據(jù)列DSi內(nèi)的末尾的寫數(shù)據(jù)塊。該情況下,CPU133將變量j加一,以使該變量j指示寫數(shù)據(jù)列DSi內(nèi)的下一個(gè)寫數(shù)據(jù)塊(S210)。然后,CPU133針對(duì)由當(dāng)前的變量i和加一后的變量j指定的寫數(shù)據(jù)塊BLKij來執(zhí)行上述的S208。該情況下,CPU133將寫數(shù)據(jù)塊BLKij(Dij,BCRCij)以在FROMl5內(nèi)接在上次轉(zhuǎn)移保存的寫數(shù)據(jù)塊BLKi (j-1) (Di (j-1),BCRCi (j_l))之后的方式,轉(zhuǎn)移保存到該FR0M15的寫數(shù)據(jù)區(qū)域。
[0055]上述的S208在從j = I到j(luò) = NBi ( = m(i))為止反復(fù)進(jìn)行。然后,在變量j與NBi一致之后(S209的“是”),CPU133判斷為對(duì)寫數(shù)據(jù)列DSi內(nèi)的所有的寫數(shù)據(jù)塊BLKil、……、BLKim(i)執(zhí)行了轉(zhuǎn)移保存處理。該情況下,CPU133判定變量i與寫數(shù)據(jù)列數(shù)NS是否一致(S211)。如果變量i(i = I)與寫數(shù)據(jù)列數(shù)NS不一致(S211的“否”),則CPU133判斷為轉(zhuǎn)移保存處理未到達(dá)末尾的寫數(shù)據(jù)列DSn。該情況下,CPU133將變量i加一,以使該變量i指示下一個(gè)寫數(shù)據(jù)列(S212)。
[0056]接著,CPU133返回到S207,以使變量j指示加一后的變量i所指示的寫數(shù)據(jù)列DSi內(nèi)的領(lǐng)頭的寫數(shù)據(jù)塊BLKil的方式,將該變量j設(shè)定為初始值I。然后,CPU133對(duì)加一后的變量i所指示的寫數(shù)據(jù)列DSi的全部寫數(shù)據(jù)塊BLKil、……、BLKima) (m(i) = NBi)執(zhí)行上述的S208。寫數(shù)據(jù)塊BLKil、……、BLKim(i)以在FR0M15內(nèi)接在上次轉(zhuǎn)移保存的寫數(shù)據(jù)列DS(1-l)的全部寫數(shù)據(jù)塊BLK(1-l)l、……、BLK(1-l)m(1-l)之后的方式,轉(zhuǎn)移保存到該FR0M15的寫數(shù)據(jù)區(qū)域。
[0057]CPU133對(duì)寫數(shù)據(jù)列DS1、……、DSn內(nèi)的所有的寫數(shù)據(jù)塊執(zhí)行以上的工作。在此,設(shè)為對(duì)寫數(shù)據(jù)列DSn內(nèi)的末尾的數(shù)據(jù)塊BLKnm(η)執(zhí)行了 S208。該情況下,變量j ( = m(n)=NBn)以及 i ( = η = NS)分別與 NBi ( = NBn)以及 NS —致(S209 以及 S211 的“是”)。于是CPU133判斷為轉(zhuǎn)移保存處理結(jié)束。
[0058]此時(shí),在FR0M15中,如圖4所示轉(zhuǎn)移保存有寫數(shù)據(jù)列DSl、……、DSn,這些寫數(shù)據(jù)列DSU......、DSn在FROMl5中連續(xù)。FROMl5內(nèi)的寫數(shù)據(jù)列DSl包含寫數(shù)據(jù)塊BLKll (DlI,
BCRClI) ^......^BLKlm(I) (Dlm(l) ,BCRClm(I)) 0 同樣,F(xiàn)R0M15 內(nèi)的寫數(shù)據(jù)列 DSn 包含寫數(shù)據(jù)塊 BLKnl (Dnl,BCRCnl)、......、BLKnm (n) (Dnm (η),BCRCnm (η))。
[0059]接著,參照?qǐng)D5、圖6以及上述的圖8對(duì)在本實(shí)施方式中再次接通了主電源的情況下執(zhí)行的恢復(fù)處理進(jìn)行說明。圖5是表示恢復(fù)處理的典型順序的流程圖,圖6是表示恢復(fù)處理所包含的邏輯塊地址(LBA)算出處理的典型順序的流程圖。
[0060]現(xiàn)在,設(shè)為通過CPU133開始恢復(fù)處理。此時(shí),在FR0M15中,如圖4所示,轉(zhuǎn)移保存有寫數(shù)據(jù)管理信息Mb以及寫數(shù)據(jù)列DS1、……、DSn。
[0061]首先,CPU133從轉(zhuǎn)移保存在FR0M15中的寫數(shù)據(jù)管理信息Mb取得塊大小BS、寫數(shù)據(jù)列數(shù)NS以及總寫數(shù)據(jù)塊數(shù)TNB(S501、S502以及S503)。接著,CPU133將變量i以及r分別設(shè)定為初始值I以及TNB (總寫數(shù)據(jù)塊數(shù))(S504)。變量i表示轉(zhuǎn)移保存在FR0M15中的NS個(gè)(NS = η)寫數(shù)據(jù)列DSl、……、DSn中的第i個(gè)寫數(shù)據(jù)列DSi。變量r表示應(yīng)該恢復(fù)的寫數(shù)據(jù)塊的個(gè)數(shù)。但是,在本實(shí)施方式中,轉(zhuǎn)移保存在FR0M15中的寫數(shù)據(jù)管理信息Mb不包含寫數(shù)據(jù)列各自的寫數(shù)據(jù)塊數(shù)。因此,CPU133需要識(shí)別寫數(shù)據(jù)列DSi與后續(xù)的寫數(shù)據(jù)列DS (i+1)的邊界。接著,CPU133將變量j設(shè)定為初始值1(S505)。變量j指示寫數(shù)據(jù)列DSi內(nèi)的第j個(gè)寫數(shù)據(jù)塊BLKij (Di j,BCRCij) ο
[0062]接著,CPU133按圖6的流程圖所示的順序如下所述來執(zhí)行LBA算出處理(S506)。LBA算出處理包括如下的處理,該處理用于基于轉(zhuǎn)移保存在FR0M15中的寫數(shù)據(jù)塊BLKi j,算出在附加于該寫數(shù)據(jù)塊BLKij (更詳細(xì)而言是BLKij內(nèi)的數(shù)據(jù)Dij)的BCRCij中嵌入的邏輯塊地址LBAij。
[0063]首先,CPU133將變量h設(shè)定為初始值BS/32 (S601)。在BS為4096的本實(shí)施方式中,初始值BS/32為128。也即,變量h被設(shè)定為初始值128。變量h與前述的轉(zhuǎn)移保存處理同樣,指示寫數(shù)據(jù)塊BLKij內(nèi)的128個(gè)小塊中的第h個(gè)小塊。如該例所示,在h = BS/32=128的情況下,變量h指示寫數(shù)據(jù)塊BLKij內(nèi)的末尾的小塊。另外,在變量i以及j都為I的情況下,BLKij = BLK11。寫數(shù)據(jù)塊BLKll被轉(zhuǎn)移保存在FR0M15內(nèi)的寫數(shù)據(jù)區(qū)域的領(lǐng)頭的位置。
[0064]接著,CPU133從寫數(shù)據(jù)塊 BLKij ( = BLKlI)取得 BCRCij (S602)。CPU133 將所取得的 BCRCij 設(shè)定為 CRC32_h(CRC32_128) (S603)。
[0065]接著,CPU133從寫數(shù)據(jù)塊BLKij取得第h個(gè)小塊內(nèi)的數(shù)據(jù)D32_h (S604)。接著,CPU133通過基于D32_h以及CRC32_h的CRC運(yùn)算,如下所述來算出(恢復(fù))32位的循環(huán)冗余校驗(yàn)碼 CRC32_h-l (S605)。
[0066]首先,CPU133將D32_h和CRC32_h通過模2的運(yùn)算進(jìn)行相加。眾所周知,模2的加法與模2的減法等效。模2的加法(減法)通過D32_h與CRC32_h之間的異或運(yùn)算來實(shí)現(xiàn)。將該異或運(yùn)算值標(biāo)記為X0R32_hh。接著,CPU133將X0R32_hh(更詳細(xì)而言是X0R32_hh X 232)用作被除數(shù),通過模2的運(yùn)算將該被除數(shù)X0R32_h X 232 (62位)除以在BCRC生成處理的CRC運(yùn)算(S304)中使用的除數(shù)。然后,CPU133取得該模2的除法的余數(shù)(32位)作為 CRC32_h-lo
[0067]也即,CPU133使用在BCRC生成處理中通過基于D32_h以及CRC32_h_l的CRC運(yùn)算而生成的CRC32_h,通過基于D32_h以及CRC32_h的CRC運(yùn)算(S605),算出(恢復(fù))CRC32_h-1。如該例所示,在h = BS/32 = 128的情況下,如圖8所示,通過基于D32_128以及CRC32_128( = BCRCij)的 CRC 運(yùn)算 821,生成 CRC32_127。
[0068]CPU133 使 S604 以及 S605 從 h = BS/32 = 128 到 h = I 為止(SS607)在與 BCRC生成處理時(shí)相反的方向上反復(fù)進(jìn)行(S606)。由此,例如若h為2,則如圖8所示,通過基于D32_2 以及 CRC32_2 的 CRC 運(yùn)算 822,算出 CRC32_1。
[0069]然后,設(shè)為對(duì)h = I執(zhí)行了 S604以及S605。該情況下,如圖8所示,通過基于D32_h = D32_l 以及 CRC32_h = CRC32_1 的 CRC 運(yùn)算 823,算出 CRC32_h_l = CRC32_0。如此,在變量h為I的情況下(S606的“是”),CPU133將通過最后的CRC運(yùn)算而算出的CRC32_h-1 ( = CRC32_0)判斷為是在附加于寫數(shù)據(jù)塊BLKij的BCRCij中嵌入的邏輯塊地址LBAi j。因此,CPU133將通過最后的CRC運(yùn)算而算出的CRC32_h-l = CRC32_0如圖8所示設(shè)定為邏輯塊地址LBAij (S608)。由此,LBA算出處理(圖5的S506)結(jié)束,嵌入在BCRCij中的邏輯塊地址LBAij被恢復(fù)。
[0070]包括上述的CRC運(yùn)算821、822以及823的BS/32 ( = 128)次的CRC運(yùn)算,與基于寫數(shù)據(jù)塊BLKij內(nèi)的數(shù)據(jù)Dij和BCRCij的CRC運(yùn)算820 (圖8)等效。CRC運(yùn)算820中的被除數(shù)使用Dij與BCRCij之間的異或運(yùn)算的結(jié)果。
[0071]返回到圖5,當(dāng)LBA算出處理(S506)結(jié)束時(shí),CPU133判定變量j是否超過I (S507)。在變量j為I的情況下(S507的“否”),CPU133跳過下面的S508而進(jìn)入S509。在S509中,CPU133將寫數(shù)據(jù)塊BLKi j、即寫數(shù)據(jù)塊BLKij (Di j,BCRCij)恢復(fù)到緩沖存儲(chǔ)器14內(nèi)。
[0072]接著,CPU133將變量r減一(S510),然后判定減一后的變量r是否與O—致(S511)。如果減一后的變量r與O不一致(S511的“否”),則CPU133判斷為在FR0M15內(nèi)剩余r個(gè)應(yīng)該恢復(fù)的寫數(shù)據(jù)塊。
[0073]于是,CPU133將變量j加一 (S513),返回到S506。在S506中,CPU133對(duì)由當(dāng)前的變量i和加一后的變量j表示的寫數(shù)據(jù)塊BLKij執(zhí)行由圖6的流程圖所示的LBA算出處理(在此為第ΤΝΒ-r+l次的LBA算出處理)。由此,CPU133算出寫數(shù)據(jù)塊BLKij的邏輯塊地址LBAij。此時(shí)寫數(shù)據(jù)塊BLKi (j-Ι)的邏輯塊地址LBAi (j-1)已經(jīng)通過上次(第TNB_r次)的LBA算出處理而算出。
[0074]接著,CPU133再次判定變量j是否超過I (S507)。在此,變量j超過I (S507的“是”)。該情況下,CPU133基于LBAij是否與LBAi (j_l)+l —致來判定邏輯塊地址LBAij是否與邏輯塊地址LBAi (j-Ι)連續(xù)(S508)。
[0075]如果LBAij與LBAi (j-Ι)連續(xù)(S508的“是”),則CPU133判斷為寫數(shù)據(jù)塊BLKi (j-Ι)以及BLKij屬于同一寫數(shù)據(jù)列DSi。該情況下,CPU133將寫數(shù)據(jù)塊BLKi j作為寫數(shù)據(jù)列DSi內(nèi)的第j個(gè)寫數(shù)據(jù)塊而恢復(fù)到緩沖存儲(chǔ)器14內(nèi)(S509)。
[0076]與此相對(duì),如果LBAij與LBAi (j-Ι)不連續(xù)(S508的“否”),則CPU133判斷為LBAij是繼寫數(shù)據(jù)列DSi之后的寫數(shù)據(jù)列DS (i+1)內(nèi)的領(lǐng)頭的寫數(shù)據(jù)塊BLK(i+1) I的邏輯塊地址 LBA(i+1) I。因此,CPU133 將 LBAij 設(shè)定為 LBA(i+1) I (S514)。另外,CPU133 判斷為LBAi (j-Ι)是寫數(shù)據(jù)列DSi內(nèi)的末尾的寫數(shù)據(jù)塊BLKim(i)的邏輯塊地址LBAim(i)。該情況下,寫數(shù)據(jù)列DSi內(nèi)的寫數(shù)據(jù)塊的個(gè)數(shù)NBi即m(i)與j-Ι 一致。
[0077]如此,CPU133通過檢測由反復(fù)執(zhí)行的LBA算出處理算出(恢復(fù))的邏輯塊地址不連續(xù)的部位,識(shí)別寫數(shù)據(jù)列(更詳細(xì)而言是寫數(shù)據(jù)列的邊界)。即,根據(jù)本實(shí)施方式,盡管在轉(zhuǎn)移保存到FR0M15的寫數(shù)據(jù)管理信息Mb (圖4)中不包含寫數(shù)據(jù)列DSl、……、DSn各自的寫數(shù)據(jù)塊數(shù)NB1、……、NBn,也能夠識(shí)別寫數(shù)據(jù)列DS1、……、DSn。
[0078]因此,CPU133將寫數(shù)據(jù)塊BLKij作為繼寫數(shù)據(jù)列DSi之后的寫數(shù)據(jù)列DS (i+Ι)內(nèi)的領(lǐng)頭的寫數(shù)據(jù)塊BLK (i+1) I而恢復(fù)到緩沖存儲(chǔ)器14內(nèi)(S515)。接著,CPU133將變量r減一(S516),將j-Ι設(shè)定為寫數(shù)據(jù)列DSi內(nèi)的寫數(shù)據(jù)塊的個(gè)數(shù)m(i) ( = NBi) (S517),并且將變量j再次設(shè)定為初始值I (S518)。
[0079]接著,CPU133將寫數(shù)據(jù)管理信息Ma的第i個(gè)寫數(shù)據(jù)管理信息要素MEai存儲(chǔ)(恢復(fù))到CPU存儲(chǔ)器134(S519)。寫數(shù)據(jù)管理信息要素MEai包含邏輯塊地址LBAi以及寫數(shù)據(jù)塊的個(gè)數(shù)m(i) ( = NBi)。因此,寫數(shù)據(jù)管理信息要素MEai有時(shí)也標(biāo)記為MEai (LBAi,m⑴)。邏輯塊地址LBAi使用邏輯塊地址LBAi I。
[0080]接著,CPU133判定變量r是否與O —致(S520)。如果變量r與O不一致(S520的“否”),則CPU133將變量i加一 (S521),并且將變量j加一 (S513),返回到S506。該情況下,加一前的變量j通過S518而設(shè)定為初始值I。因此,變量j通過S513而加到2。
[0081]在此,設(shè)為通過S510減一后的變量r與O —致(S511的“是”)。該情況下,CPU133判斷為恢復(fù)了由總寫數(shù)據(jù)塊數(shù)TNB表示的所有的寫數(shù)據(jù)塊,在FR0M15內(nèi)沒有剩余應(yīng)該恢復(fù)的寫數(shù)據(jù)塊。另外,CPU133判斷為由當(dāng)前的變量i表示的寫數(shù)據(jù)列DSi是末尾的寫數(shù)據(jù)列,通過最近的S509恢復(fù)的寫數(shù)據(jù)塊BLKij是末尾的寫數(shù)據(jù)列內(nèi)的末尾的數(shù)據(jù)塊。然后,CPU133將j設(shè)定為寫數(shù)據(jù)列DSi內(nèi)的寫數(shù)據(jù)塊的個(gè)數(shù)m(i) ( = NBi) (S512)。
[0082]接著,CPU133將寫數(shù)據(jù)管理信息要素MEai存儲(chǔ)于CPU存儲(chǔ)器134(S519),然后判定變量r是否與O —致(S520)。如該例所示,如果變量r與O —致(S520的“是”),則CPU133判定變量i是否與寫數(shù)據(jù)列數(shù)NS —致(S522)。
[0083]如果變量i與寫數(shù)據(jù)列數(shù)NS —致(S522的“是”),則判斷為CPU133基于被恢復(fù)的邏輯塊地址的不連續(xù)部位的檢測而正確識(shí)別了寫數(shù)據(jù)列。這表示基于寫數(shù)據(jù)列數(shù)NS、總寫數(shù)據(jù)塊數(shù)TNB和寫數(shù)據(jù)列所包含的所有的寫數(shù)據(jù)塊(數(shù)據(jù)項(xiàng)目以及塊循環(huán)冗余校驗(yàn)碼)正確恢復(fù)了該寫數(shù)據(jù)塊的邏輯塊地址,因此也正?;謴?fù)了該寫數(shù)據(jù)列(所有的寫數(shù)據(jù)塊)。因此,CPU133結(jié)束恢復(fù)處理。
[0084]與此相對(duì),如果變量i與寫數(shù)據(jù)列數(shù)NS不一致(S522的“是”),則CPU133判斷為未能正確識(shí)別寫數(shù)據(jù)列。錯(cuò)誤的識(shí)別也表示未正?;謴?fù)寫數(shù)據(jù)列所包含的所有的寫數(shù)據(jù)塊的邏輯塊地址的至少一部分,因此也未正?;謴?fù)該寫數(shù)據(jù)列的至少一部分。因此,CPU133執(zhí)行錯(cuò)誤處理(S523)。錯(cuò)誤處理包括向主機(jī)通知恢復(fù)失敗。
[0085]但是,在恢復(fù)失敗的情況下,也有可能在變量r與O —致之前變量i就超過寫數(shù)據(jù)列數(shù)NS。因此,也可以在變量r與O不一致的情況下(S520的“否”),在接下來的S521之前,判定變量i是否超過寫數(shù)據(jù)列數(shù)NS。該情況下,如果變量i超過寫數(shù)據(jù)列數(shù)NS,則進(jìn)行錯(cuò)誤處理(S523),否則就進(jìn)行S521即可。如此,能夠盡快地檢測恢復(fù)失敗,能夠削減發(fā)生恢復(fù)失敗時(shí)的無用處理。
[0086]圖7是用于說明上述的恢復(fù)處理的圖。在圖7所示的例子中,首先基于轉(zhuǎn)移保存至IJFR0M15的寫數(shù)據(jù)列DSl的領(lǐng)頭的寫數(shù)據(jù)塊BLKll內(nèi)的數(shù)據(jù)Dll以及塊循環(huán)冗余校驗(yàn)碼BCRC11,進(jìn)行由箭頭701所示的LBA算出處理(圖5的S506)。由此,算出寫數(shù)據(jù)塊BLKll的邏輯塊地址LBAlI。設(shè)為邏輯塊地址LBAll的十進(jìn)制值為ql。
[0087]接著,基于DSl的第2個(gè)BLK12內(nèi)的D12以及BCRC12,進(jìn)行由箭頭702所示的LBA算出處理(圖5的S506),算出該BLK12的邏輯塊地址LBA12。設(shè)為LBA12的十進(jìn)制值為ql+lo然后,在由箭頭703所示的判定處理(圖5的S508)中,基于LBA12是否與LBA11+1一致,判定LBA12是否與LBAll連續(xù)。在此,設(shè)為判定為LBA12與LBAll連續(xù)。
[0088]以下,在執(zhí)行了同樣的處理之后,基于DSl的第m(l)個(gè)BLKlm(I)內(nèi)的Dlm(I)以及BCRClm(I),進(jìn)行由箭頭704所示的LBA算出處理(S506),算出該BLKlm(I)的邏輯塊地址LBAlm(I) ο設(shè)為LBAlm(I)的十進(jìn)制值為ql+m(l)_l。另夕卜,設(shè)為LBAlm(I)與LBAl (m⑴-1)連續(xù)。
[0089]接著,基于DS2的領(lǐng)頭的BLK21內(nèi)的D21以及BCRC21,進(jìn)行由箭頭707所示的LBA算出處理(S506),算出該BLK21的邏輯塊地址LBA21。設(shè)為LBA21的十進(jìn)制值為q2。然后,在由箭頭708所示的判定處理(S508)中,基于1^421是否與1^41111(1)+1,判定1^421是否與LBAlm(I)連續(xù)。但是,在該時(shí)刻,CPU133不識(shí)別DSl和DS2的邊界。因此實(shí)際上,CPU133將DS2的BLK21內(nèi)的D21以及BCRC21分別作為DSl的BLKl (m⑴+1)內(nèi)的Dl(m(l)+1)以及BCRCl (m(I)+1)來進(jìn)行處理。
[0090]在此,設(shè)為判定為LBA21與LBAlm(I)不連續(xù)。也即,設(shè)為判定為LBAl (m(l)+1)與LBAlm(I)不連續(xù)。該情況下,CPU133判斷為LBAlm(I)是DSl的末尾的BLKlm(I)的LBA,且LBAl (m(l)+l)為繼DSl之后的DS2的領(lǐng)頭的BLK21的LBA即LBA21。因此,CPU133將LBAl (m(l) +1)設(shè)定為LBA21 (圖5的S514)。然后,CPU133如圖7中由箭頭709以及710所示,將包含LBAll ( = ql)以及m(l)分別作為LBAl以及NBl的寫數(shù)據(jù)管理信息要素MEal恢復(fù)到CPU存儲(chǔ)器134內(nèi)(圖5的S519)。
[0091]〈變形例〉
[0092]在所述實(shí)施方式中適用的邏輯塊地址的位長為32。該情況下,HDD能夠支持的最大存儲(chǔ)容量如前所述大致為2TB。因此,為了使HDD能夠支持超過2TB的存儲(chǔ)容量,需要適用超過32位的邏輯塊地址。
[0093]以下,對(duì)于所述實(shí)施方式的變形例,以在該變形例中適用的邏輯塊地址的位長為64的情況為例,以與所述實(shí)施方式不同的部分為中心來進(jìn)行說明。首先,參照?qǐng)D9和前述的圖2及3對(duì)本變形例的轉(zhuǎn)移保存處理進(jìn)行說明。圖9表示在本變形例中執(zhí)行由箭頭900所示的轉(zhuǎn)移保存處理之前的緩沖存儲(chǔ)器14以及CPU存儲(chǔ)器134的內(nèi)容和執(zhí)行了轉(zhuǎn)移保存處理之后的FROMl5的內(nèi)容的例子。
[0094]現(xiàn)在,設(shè)為通過CPU133開始轉(zhuǎn)移保存處理。此時(shí),設(shè)為在緩沖存儲(chǔ)器14中,與所述實(shí)施方式同樣地存儲(chǔ)有寫數(shù)據(jù)列DS1、……、DSn(圖9),這些寫數(shù)據(jù)列DS1、……、DSn未寫入盤110。另一方面,在CPU存儲(chǔ)器134中,存儲(chǔ)有用于寫數(shù)據(jù)列DS1、……、DSn的寫數(shù)據(jù)管理信息Me。
[0095]寫數(shù)據(jù)管理信息Mc包括與寫數(shù)據(jù)列DS1、……、DSn對(duì)應(yīng)的寫數(shù)據(jù)管理信息要素MEcl、......、MEcn。要素MEcl、......、MEcn如圖9所示,分別包含高位邏輯塊地址ULBAl (=
pi)、......、ULBAn ( = pn),低位邏輯塊地址 LLBAl ( = ql)、......、LLBAn ( = qn)以及寫數(shù)據(jù)塊數(shù) NBl ( = m(l))、......、NBn( = m(n))。
[0096]高位邏輯塊地址ULBAi (i = 1、……、η)表示64位的邏輯塊地址LBAi的高位32位,低位邏輯塊地址LLBAi表示64位的邏輯塊地址LBAi的低位32位。也即,64位的邏輯塊地址LBAi包括ULBAi和LLBAi。同樣,64位的邏輯塊地址LBAij包括ULBAij和LLBAij。LLBAi和LLBAij分別相當(dāng)于所述實(shí)施方式中的32位的邏輯塊地址LBAi和LBAij。
[0097]如本變形例所示,在邏輯塊地址LBAij的位長為64、即超過了 32的情況下,無法在32位的BCRCij中嵌入64位的邏輯塊地址LBAij。因此在本變形例的BCRC生成處理中,HIF控制器131將64位的邏輯塊地址LBAij的低位邏輯塊地址LLBAij嵌入到32位的BCRCij中。
[0098]另外,在本變形例的轉(zhuǎn)移保存處理中,CPU133將包含寫數(shù)據(jù)管理信息要素MEcU……、MEcn中的高位邏輯塊地址ULBAl、……、ULBAn的寫數(shù)據(jù)管理信息Md轉(zhuǎn)移保存到FR0M15。如此的本變形例的轉(zhuǎn)移保存處理通過在圖2所示的流程圖中追加低位邏輯塊地址轉(zhuǎn)移保存處理來實(shí)現(xiàn)。在本變形例中CPU133例如在圖2所示的流程圖的S205與S206之間執(zhí)行低位邏輯塊地址轉(zhuǎn)移保存處理。由此,CPU133將CPU存儲(chǔ)器134所存儲(chǔ)的寫數(shù)據(jù)管理信息要素MEcl、……、MEcn中的高位邏輯塊地址ULBAl、……、ULBAn轉(zhuǎn)移保存到例如FR0M15內(nèi)的繼總數(shù)據(jù)塊數(shù)TNB之后的位置。此外,可以每當(dāng)按照?qǐng)D2所示的流程圖來操作變量i時(shí)(S206或S212),CPU133將由該變量i指示的寫數(shù)據(jù)管理信息要素MEci中的高位邏輯塊地址ULBAi轉(zhuǎn)移保存到FR0M15。
[0099]接著,參照前述的圖5以及6對(duì)本變形例的恢復(fù)處理進(jìn)行說明。本變形例的恢復(fù)處理與所述實(shí)施方式同樣,按照?qǐng)D5的流程圖所示的順序來執(zhí)行。另外,該恢復(fù)處理所包含的本變形例的LBA算出處理與所述實(shí)施方式同樣,按照?qǐng)D6的流程圖所示的順序來執(zhí)行。但是,在圖5的S508中,LBAij以及LBAi (j-Ι)需要分別替換為LLBAij以及LLBAi (j-Ι)。在此,在忽略進(jìn)位、例如LLBAij按十六進(jìn)制表達(dá)為00000000h的情況下,如果LBAi (j-Ι)為FFFFFFFFh,則 LLBAij 與 LBAi (j_l)+l —致。因此判定為 LLBAij 與 LLBAi (j-Ι)連續(xù)。另夕卜,在圖5的S514中LBA(i+1) I需要被替換為LLBA(i+1) I,在圖6的S606中LBAij需要被替換為LLBAij。
[0100]進(jìn)而,在圖6的S519中,寫數(shù)據(jù)管理信息要素MEai (LBAi,m (i)))需要被替換為寫數(shù)據(jù)管理信息要素MEci (ULBAi,LLBAi, m(i))。也即,CPU133在S519 (更詳細(xì)而言是相當(dāng)于S519的處理)中,將包括ULBA1、LLBAi以及m(i) (NBi = m(i))的寫數(shù)據(jù)管理信息要素MEci恢復(fù)到CPU存儲(chǔ)器134。在此,ULBAi從轉(zhuǎn)移保存到FR0M15的寫數(shù)據(jù)管理信息Md取得。
[0101]圖10是用于說明本變形例中的上述的恢復(fù)處理的圖。在圖10所示的例子中,首先基于寫數(shù)據(jù)列DSl的領(lǐng)頭的寫數(shù)據(jù)塊BLKll內(nèi)的數(shù)據(jù)Dll以及塊循環(huán)冗余校驗(yàn)碼BCRClI,進(jìn)行由箭頭1001所示的LBA算出處理(S506)。由此,算出寫數(shù)據(jù)塊BLKll的邏輯塊地址LBAll的低位32位LLBAlI。設(shè)為LLBAll的十進(jìn)制值為ql。
[0102]接著,基于DSl的第2個(gè)BLK12內(nèi)的D12以及BCRC12,進(jìn)行由箭頭1002所示的LBA算出處理(S506),算出該BLK12的邏輯塊地址LBA12的低位32位LLBA12。設(shè)為LLBA12的十進(jìn)制值為ql+1。
[0103]以下,在執(zhí)行了同樣的處理之后,基于DSl的第m(l)個(gè)BLKlm(I)內(nèi)的Dlm(I)以及BCRClm(I),進(jìn)行由箭頭1003所示的LBA算出處理(圖5的S506),算出該BLKlm(I)的邏輯塊地址LBAlm⑴的低位32位LLBAlm(I)。設(shè)為LLBAlm⑴的十進(jìn)制值為ql+m(l)_l。另外,設(shè)為 LLBAlm(I)與 LLBAl (m(I)-1)連續(xù)。同樣,在 LLBAlm(I)之后,算出 LLBAl (m(I)+1)。設(shè)為LLBAl (m⑴+1的十進(jìn)制值為q2。
[0104]在此,設(shè)為LLBAKm(I)+1)與 LLBAlm(1))+1 不一致,因此 CPU133 判定為LLBAKm(I)+1)與LLBAlm(I))不連續(xù)。該情況下,CPU133判斷為LLBAlm(I)是DSl的末尾的 BLKlm(I)的 LLBA,LLBAl (m(l)+l)是繼 DSl 之后的 DS2 的領(lǐng)頭的 BLK21 的 LBA 的 LLBA、即LLBA21。因此,CPU133將LLBAl(m⑴+1)設(shè)定為LLBA21。進(jìn)而,CPU133如圖10中由箭頭1004所示,將轉(zhuǎn)移保存到FR0M15中的寫數(shù)據(jù)管理信息Md內(nèi)的包含ULBAl的寫數(shù)據(jù)管理信息要素MEcl(ULBAl,LLBA1, NBl)恢復(fù)到CPU存儲(chǔ)器134內(nèi)。在寫數(shù)據(jù)管理信息要素MEcl (ULBAI, LLBA1,NBl)中,如圖10中由箭頭1005以及1006所示,包含LLBAll以及m(l)分別作為LLBAl以及NBl。
[0105]根據(jù)以上說明的至少一個(gè)實(shí)施方式,能夠削減相應(yīng)于主電源電壓的降低而轉(zhuǎn)移保存到非易失性存儲(chǔ)器中的寫數(shù)據(jù)管理信息的量。
[0106]說明了本發(fā)明的幾個(gè)實(shí)施方式,但是這些實(shí)施方式是作為例子而舉出的,沒有限定發(fā)明范圍的意圖。這些新的實(shí)施方式能夠以其他的各種各樣的方式來實(shí)施,在不脫離發(fā)明要旨的范圍內(nèi)能夠進(jìn)行各種省略、替換、變更。這些實(shí)施方式及其變形包含于發(fā)明的范圍或要旨內(nèi),并且包含于權(quán)利要求所記載的發(fā)明及其等同的范圍內(nèi)。
【主權(quán)項(xiàng)】
1.一種磁盤裝置,包括: 第I易失性存儲(chǔ)器; 非易失性存儲(chǔ)器;以及 控制器,其構(gòu)成為與所述磁盤裝置的電源電壓的降低相應(yīng)地將寫數(shù)據(jù)列和第I管理信息轉(zhuǎn)移保存到所述非易失性存儲(chǔ)器,所述寫數(shù)據(jù)列是從外部傳送而存儲(chǔ)在所述第I易失性存儲(chǔ)器中、且包含分別附加有冗余碼的未寫入盤的多個(gè)寫數(shù)據(jù)塊的寫數(shù)據(jù)列,所述第I管理信息是用于所述多個(gè)寫數(shù)據(jù)塊的除去邏輯塊地址之外的信息,所述冗余碼與所述多個(gè)寫數(shù)據(jù)塊分別關(guān)聯(lián),在所述冗余碼中分別嵌入有所述多個(gè)寫數(shù)據(jù)塊的邏輯塊地址。2.根據(jù)權(quán)利要求1所述的磁盤裝置,其中, 所述冗余碼分別基于所述多個(gè)寫數(shù)據(jù)塊內(nèi)的數(shù)據(jù)的項(xiàng)目以及所述多個(gè)寫數(shù)據(jù)塊的邏輯塊地址而生成。3.根據(jù)權(quán)利要求1所述的磁盤裝置,還包括第2易失性存儲(chǔ)器,其中, 在所述第I易失性存儲(chǔ)器中存儲(chǔ)多個(gè)寫數(shù)據(jù)列,在所述第2易失性存儲(chǔ)器中存儲(chǔ)第2管理信息,所述第2管理信息包含所述多個(gè)寫數(shù)據(jù)列內(nèi)分別領(lǐng)頭的寫數(shù)據(jù)塊的邏輯塊地址與表示所述多個(gè)寫數(shù)據(jù)列分別包含的寫數(shù)據(jù)塊的數(shù)量的第I數(shù)量的組, 所述第I管理信息包含表示所述多個(gè)寫數(shù)據(jù)列的數(shù)量的第2數(shù)量以及表示所述第I數(shù)量的總和的第3數(shù)量, 所述控制器進(jìn)一步構(gòu)成為基于所述第2管理信息中的所述組來取得所述多個(gè)寫數(shù)據(jù)列分別包含的寫數(shù)據(jù)塊的邏輯塊地址。4.根據(jù)權(quán)利要求3所述的磁盤裝置,其中, 所述控制器進(jìn)一步構(gòu)成為: 基于從轉(zhuǎn)移保存到所述非易失性存儲(chǔ)器中的所述多個(gè)寫數(shù)據(jù)列所包含的所述多個(gè)寫數(shù)據(jù)塊分別取得的所述冗余碼以及所述數(shù)據(jù)的項(xiàng)目,按所述第3數(shù)量依次恢復(fù)所述多個(gè)寫數(shù)據(jù)塊的邏輯塊地址, 將包含所述多個(gè)寫數(shù)據(jù)塊的所述多個(gè)寫數(shù)據(jù)列恢復(fù)到所述第I易失性存儲(chǔ)器內(nèi), 基于所述第I管理信息以及所述恢復(fù)后的邏輯塊地址,將所述第2管理信息恢復(fù)到所述第2易失性存儲(chǔ)器內(nèi)。5.根據(jù)權(quán)利要求4所述的磁盤裝置,其中, 所述控制器進(jìn)一步構(gòu)成為: 通過檢測所述恢復(fù)后的邏輯塊地址不連續(xù)的部位來識(shí)別所述多個(gè)寫數(shù)據(jù)列, 基于所述識(shí)別出的寫數(shù)據(jù)列的數(shù)量以及所述第2數(shù)量來判定是否恢復(fù)成功。6.根據(jù)權(quán)利要求1所述的磁盤裝置,其中, 所述冗余碼具有第I位長, 所述多個(gè)寫數(shù)據(jù)塊的邏輯塊地址各自具有第2位長,并且,所述第2位長比所述第I位長多第3位長, 所述控制器進(jìn)一步構(gòu)成為: 在所述冗余碼中分別嵌入所述多個(gè)寫數(shù)據(jù)塊的邏輯塊地址的低位邏輯塊地址,所述低位邏輯塊地址各自的位長等于所述第I位長, 在所述第I管理信息中包含所述多個(gè)寫數(shù)據(jù)塊的邏輯塊地址的高位邏輯塊地址,所述高位邏輯塊地址各自的位長等于所述第3位長。7.根據(jù)權(quán)利要求6所述的磁盤裝置,其中, 所述冗余碼分別基于所述多個(gè)寫數(shù)據(jù)塊內(nèi)的數(shù)據(jù)的項(xiàng)目以及所述多個(gè)寫數(shù)據(jù)塊的邏輯塊地址的低位邏輯塊地址而生成。8.根據(jù)權(quán)利要求7所述的磁盤裝置,還包括第2易失性存儲(chǔ)器,其中,在所述第I易失性存儲(chǔ)器中存儲(chǔ)所述多個(gè)寫數(shù)據(jù)列,在所述第2易失性存儲(chǔ)器中存儲(chǔ)第2管理信息,所述第2管理信息包含所述多個(gè)寫數(shù)據(jù)列內(nèi)分別領(lǐng)頭的寫數(shù)據(jù)塊的高位以及低位邏輯塊地址與表示所述多個(gè)寫數(shù)據(jù)列分別包含的寫數(shù)據(jù)塊的數(shù)量的第I數(shù)量的組,所述第I管理信息包含表示所述多個(gè)寫數(shù)據(jù)列的數(shù)量的第2數(shù)量、表示所述第I數(shù)量的總和的第3數(shù)量和所述領(lǐng)頭的寫數(shù)據(jù)塊的邏輯塊地址的高位邏輯塊地址, 所述控制器進(jìn)一步構(gòu)成為基于所述第2管理信息中的所述組來取得所述多個(gè)寫數(shù)據(jù)列分別包含的寫數(shù)據(jù)塊的邏輯塊地址的低位邏輯塊地址。9.根據(jù)權(quán)利要求8所述的磁盤裝置,其中, 所述控制器進(jìn)一步構(gòu)成為: 基于從存儲(chǔ)到所述非易失性存儲(chǔ)器中的所述多個(gè)寫數(shù)據(jù)列所包含的所述多個(gè)寫數(shù)據(jù)塊分別取得的所述冗余碼以及所述數(shù)據(jù)的項(xiàng)目,按所述第3數(shù)量依次恢復(fù)所述多個(gè)寫數(shù)據(jù)塊的邏輯塊地址的低位邏輯塊地址, 將包含所述多個(gè)寫數(shù)據(jù)塊的所述多個(gè)寫數(shù)據(jù)列恢復(fù)到所述第I易失性存儲(chǔ)器內(nèi), 基于所述第I管理信息以及所述恢復(fù)后的低位邏輯塊地址,將所述第2管理信息恢復(fù)到所述第2易失性存儲(chǔ)器內(nèi)。10.根據(jù)權(quán)利要求9所述的磁盤裝置,其中, 所述控制器進(jìn)一步構(gòu)成為: 通過檢測所述恢復(fù)后的低位邏輯塊地址不連續(xù)的部位來識(shí)別所述多個(gè)寫數(shù)據(jù)列, 基于所述識(shí)別出的寫數(shù)據(jù)列的數(shù)量以及所述第2數(shù)量來判定是否恢復(fù)成功。11.一種方法,是包括第I易失性存儲(chǔ)器和非易失性存儲(chǔ)器的磁盤裝置用于轉(zhuǎn)移保存管理信息的方法,所述方法包括: 與所述磁盤裝置的電源電壓的降低相應(yīng)地將寫數(shù)據(jù)列轉(zhuǎn)移保存到所述非易失性存儲(chǔ)器,所述寫數(shù)據(jù)列是從外部傳送而存儲(chǔ)在所述第I易失性存儲(chǔ)器中、且包含分別附加有冗余碼的未寫入盤的多個(gè)寫數(shù)據(jù)塊的寫數(shù)據(jù)列,所述冗余碼與所述多個(gè)寫數(shù)據(jù)塊分別關(guān)聯(lián),在所述冗余碼中分別嵌入有所述多個(gè)寫數(shù)據(jù)塊的邏輯塊地址, 與所述磁盤裝置的電源電壓的降低相應(yīng)地將用于所述多個(gè)寫數(shù)據(jù)塊的除去邏輯塊地址之外的第I管理信息轉(zhuǎn)移保存到所述非易失性存儲(chǔ)器。12.根據(jù)權(quán)利要求11所述的方法,其中, 所述冗余碼分別基于所述多個(gè)寫數(shù)據(jù)塊內(nèi)的數(shù)據(jù)的項(xiàng)目以及所述邏輯塊地址而生成。13.根據(jù)權(quán)利要求11所述的方法,其中, 所述磁盤裝置還包括第2易失性存儲(chǔ)器, 在所述第I易失性存儲(chǔ)器中存儲(chǔ)多個(gè)寫數(shù)據(jù)列,在所述第2易失性存儲(chǔ)器中存儲(chǔ)第2管理信息,所述第2管理信息包含所述多個(gè)寫數(shù)據(jù)列內(nèi)分別領(lǐng)頭的寫數(shù)據(jù)塊的邏輯塊地址與表示所述多個(gè)寫數(shù)據(jù)列分別包含的寫數(shù)據(jù)塊的數(shù)量的第I數(shù)量的組, 所述第I管理信息包含表示所述多個(gè)寫數(shù)據(jù)列的數(shù)量的第2數(shù)量以及表示所述第I數(shù)量的總和的第3數(shù)量, 所述方法還包括基于所述第2管理信息內(nèi)的所述組來取得所述多個(gè)寫數(shù)據(jù)列分別包含的寫數(shù)據(jù)塊的邏輯塊地址。14.根據(jù)權(quán)利要求13所述的方法,還包括: 基于從轉(zhuǎn)移保存到所述非易失性存儲(chǔ)器中的所述多個(gè)寫數(shù)據(jù)列所包含的所述多個(gè)寫數(shù)據(jù)塊分別取得的所述冗余碼以及所述數(shù)據(jù)的項(xiàng)目,按所述第3數(shù)量依次恢復(fù)所述多個(gè)寫數(shù)據(jù)塊的邏輯塊地址, 將包含所述多個(gè)寫數(shù)據(jù)塊的所述多個(gè)寫數(shù)據(jù)列恢復(fù)到所述第I易失性存儲(chǔ)器內(nèi), 基于所述第I管理信息以及所述恢復(fù)后的邏輯塊地址,將所述第2管理信息恢復(fù)到所述第2易失性存儲(chǔ)器內(nèi)。15.根據(jù)權(quán)利要求14所述的方法,還包括: 通過檢測所述恢復(fù)后的邏輯塊地址不連續(xù)的部位來識(shí)別所述多個(gè)寫數(shù)據(jù)列, 基于所述識(shí)別出的寫數(shù)據(jù)列的數(shù)量是否與所述第2數(shù)量一致來判定是否恢復(fù)成功。16.根據(jù)權(quán)利要求11所述的方法,其中, 所述冗余碼具有第I位長, 所述多個(gè)寫數(shù)據(jù)塊的邏輯塊地址各自具有第2位長,并且,所述第2位長比所述第I位長多第3位長, 所述方法還包括: 在所述冗余碼中分別嵌入所述多個(gè)寫數(shù)據(jù)塊的邏輯塊地址的低位邏輯塊地址,所述低位邏輯塊地址各自的位長等于所述第I位長, 在所述第I管理信息中包含所述多個(gè)寫數(shù)據(jù)塊的邏輯塊地址的高位邏輯塊地址,所述高位邏輯塊地址各自的位長等于所述第3位長。17.根據(jù)權(quán)利要求16所述的方法,其中, 所述冗余碼分別基于所述多個(gè)寫數(shù)據(jù)塊內(nèi)的數(shù)據(jù)的項(xiàng)目以及所述多個(gè)寫數(shù)據(jù)塊的邏輯塊地址的低位邏輯塊地址而生成。18.根據(jù)權(quán)利要求17所述的方法,其中, 所述磁盤裝置還包括第2易失性存儲(chǔ)器,在所述第I易失性存儲(chǔ)器中存儲(chǔ)所述多個(gè)寫數(shù)據(jù)列,在所述第2易失性存儲(chǔ)器中存儲(chǔ)第2管理信息,所述第2管理信息包含所述多個(gè)寫數(shù)據(jù)列內(nèi)分別領(lǐng)頭的寫數(shù)據(jù)塊的高位以及低位邏輯塊地址與表示所述多個(gè)寫數(shù)據(jù)列分別包含的寫數(shù)據(jù)塊的數(shù)量的第I數(shù)量的組,所述第I管理信息包含表示所述多個(gè)寫數(shù)據(jù)列的數(shù)量的第2數(shù)量、表示所述第I數(shù)量的總和的第3數(shù)量和所述領(lǐng)頭的寫數(shù)據(jù)塊的邏輯塊地址的高位邏輯塊地址, 所述方法還包括基于所述第2管理信息中的所述組來取得所述多個(gè)寫數(shù)據(jù)列分別包含的寫數(shù)據(jù)塊的邏輯塊地址的低位邏輯塊地址。19.根據(jù)權(quán)利要求18所述的方法,還包括: 基于從存儲(chǔ)到所述非易失性存儲(chǔ)器中的所述多個(gè)寫數(shù)據(jù)列所包含的所述多個(gè)寫數(shù)據(jù)塊分別取得的所述冗余碼以及所述數(shù)據(jù)的項(xiàng)目,按所述第3數(shù)量依次恢復(fù)所述多個(gè)寫數(shù)據(jù)塊的邏輯塊地址的低位邏輯塊地址, 將包含所述多個(gè)寫數(shù)據(jù)塊的所述多個(gè)寫數(shù)據(jù)列恢復(fù)到所述第I易失性存儲(chǔ)器內(nèi), 基于所述第I管理信息以及所述恢復(fù)后的低位邏輯塊地址,將所述第2管理信息恢復(fù)到所述第2易失性存儲(chǔ)器內(nèi)。20.根據(jù)權(quán)利要求19所述的方法,還包括: 通過檢測所述恢復(fù)后的低位邏輯塊地址不連續(xù)的部位來識(shí)別所述多個(gè)寫數(shù)據(jù)列, 基于所述識(shí)別出的寫數(shù)據(jù)列的數(shù)量以及所述第2數(shù)量來判定是否恢復(fù)成功。
【文檔編號(hào)】G06F3/06GK105892935SQ201510531435
【公開日】2016年8月24日
【申請(qǐng)日】2015年8月26日
【發(fā)明人】足立悟, 元木正昭, 須藤光明
【申請(qǐng)人】株式會(huì)社東芝
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1