一種在多個物理上不同的非易失性存儲設備中存儲多個數據塊的方法,每個非易失性存儲設備被獨立地寫入或從中讀取,其中,每個數據塊是能夠從非易失性存儲設備中讀取或向該設備寫入的最小數據量。該方法包括根據多個數據塊生成一個或多個錯誤校驗數據塊;并且在多個不同的物理非易失性存儲設備中存儲所述數據的多個塊和一個或多個錯誤校驗數據塊,其中數據塊在不同的物理存儲設備中。
【技術實現步驟摘要】
【國外來華專利技術】
本專利技術涉及一種用于冗余并高效地存儲多個數據塊的方法,特別在數據塊是隨機的情況下,在多個獨立的可讀/寫非易失性存儲設備中,所述設備把數據塊作為可以從該存儲設備中讀取或向該設備寫入的最小數據量。所述方法存儲多個數據塊以及一個或多個與所述多個數據塊相關聯的錯誤校驗數據塊,其中每個數據塊存儲于單獨的非易失性存儲設備中,其中建立對塊的存儲進行鏈接(link)的關聯映射(map)。本專利技術還涉及一種執行前述方法的存儲控制器和具有執行該方法的存儲控制器的存儲系統。
技術介紹
每次存儲或讀取諸如一頁數據的數據塊的非易失性存儲設備是本領域所熟知的。例如,典型地,在每次讀/寫操作中,NAND存儲設備可以在設備中存儲諸如4千字節的一頁數據。每次存儲或讀取數據塊的其他類型的非易失性存儲設備,包括所謂的托管NAND(managed NAND)存儲設備,諸如可向 Santa Clara California 的 Greenliant Systems,Inc.購買的NANDrive存儲設備。在諸如NANDrive存儲設備的托管NAND存儲設備中,控制器對原始(或非托管的)NAND存儲設備進行控制,以使得諸如SATA (串行ATA)的標準接口可用于與NANDrive存儲設備對接。如本文使用的,術語“NAND存儲設備”指的是原始和托管NAND存儲設備二者。在NAND存儲設備中,非易失性存儲設備只能以每次多個數據塊的方式被寫入或從中讀取。由于它們每次 讀回數據塊的能力,NAND存儲設備對存儲大量數據是有用的。在現有技術中,因為NAND存儲設備容易出現錯誤,所以數據連同錯誤校驗比特一起被存入NAND存儲設備中。因而,從多個數據比特生成的一種已知的錯誤校驗比特是奇偶校驗比特。其他類型的錯誤比特包括里德所羅門錯誤比特和其他已知的類型。數據比特和從數據比特所生成的錯誤比特被提供給多個NAND存儲設備。一種存儲數據比特塊的現有技術的方法是將數據塊分成多個相等的數據子塊,其中提供到物理上不同的NAND存儲設備的每個數據子塊彼此不同。該關聯的錯誤比特(用于多個數據子塊)被提供到另一個物理上不同的NAND存儲設備。因而,所有的數據比特和錯誤比特塊都被提供到物理上不同的NAND存儲設備。被提供到每個不同的NAND存儲設備的數據子塊能以兩種方式之一被存儲。首先,當在NAND存儲設備的緩沖器中接收到數據子塊時,該數據子塊被存儲在NAND存儲單元塊中以用于存儲。這是浪費的,因為該存儲塊只包含子塊數據量。可替換地,數據子塊能被保存在緩沖器中直到接收到另一個子塊(來自不同的數據塊),以此類推,直到在緩沖器中接收到等于一個塊的數據量時,在該情況下緩沖器中的整個數據塊(包括來自不同數據塊的多個子塊)可以存儲在一個存儲塊中。這種替代方法也不是最優的,因為數據被保存在緩沖器中,并且由于緩沖器通常是易失性存儲器,因此存在電源故障導致數據丟失的可能性。在讀回時,一旦從一個NAND存儲設備讀出了存儲塊,必須對從該存儲塊中讀取的數據進行解析以恢復所選擇的數據子塊。從物理上不同的NAND存儲設備讀出與選擇的塊相關聯的多個數據子塊(與相關聯的錯誤比特一起)。把來自所有數據塊的數據與來自錯誤塊的數據相比較以確定是否出現了錯誤。為了這種方法正確地操作,在現有技術中,數據塊被分成多個子塊,然后帶有錯誤比特塊,降低了存儲和讀取的數據的大小,這反過來降低了讀寫效率。例如,如果數據塊為4千字節,并且被存儲在8個NAND設備中。每個數據子塊為0.5千字節并且被存儲在NAND設備的每一塊中。當讀出時,如果需要8個數據塊或32千字節,則八(8)個NAND設備中的每一個必須被讀取8次。來自八(8)個NAND設備的每一個中的每個子塊(0.5千字節)的數據量必須組合成一個4千字節的塊。然而,讀取NAND設備所需的時間量歸因于建立命令操作所需的時間、讀取非易失性存儲單元陣列所需的時間和來自每個NAND設備的0.5千字節的實際傳送時間。建立命令操作的時間量和讀取陣列所需的時間量幾乎相同,不考慮要傳送的數據量。由于NAND設備的塊大小是增大的,使用把數據塊分為子塊并且把子塊存儲到NAND設備的塊的現有技術方法在讀取操作期間需要更多的時間。參見圖1,示出了現有技術的存儲系統10的示意性框圖以及其在存儲多個數據塊中出現的問題。圖1示出了具有“邏輯地址1”、“邏輯地址2”、“邏輯地址3”等邏輯地址的八(8)個數據塊。存儲系統10還具有八個NAND存儲設備20 (a_h),分別示為“設備I”、“設備2”、“設備3”和“設備8”,以及用于存儲奇偶校驗比特的第九NAND存儲設備20i。存儲控制器(未示出)控制設備20 (a-h)的操作,以及數據塊到各個設備20 (a-h)的定向,生成奇偶校驗比特并且將奇偶校驗比特存入設備20i。在現有技術中,當接收到數據塊時,諸如具有邏輯地址I的數據塊,存儲控制器將數據塊分為八個子塊,并且將每個子塊存入不同的NAND設備20 (a-h)中。從而,如圖1所示,具有邏輯地址I并且具有物理地址A的塊被分為八(8)個子塊,其中每個子塊存儲于不同的存儲設備20 (a-h)中。存儲控制器根據來自邏輯地址I的八個數據子塊生成奇偶校驗比特子塊,并且將奇偶校驗比特子塊存入設備9 20i。來自具有邏輯地址I的數據塊的所有八(8)個數據子塊(包括奇偶校驗比特子塊則是九個)都被存儲于具有物理地址A的NAND設備的塊中,雖然具有物理地址A的塊全都在不同的存儲器NAND設備20 (a-1)中,但是具有相同的物理地址。以相同的方式來存儲具有邏輯地址2的第二數據塊。數據塊被分為八(8)個子塊,但是都具有物理地址B,并且被存儲于NAND設備20 (a-h)中,其中與八(8)個數據子塊相關聯的奇偶校驗比特被存儲于NAND設備20 ( i )中。在讀出時,假定希望讀取具有邏輯地址3的邏輯地址的塊,那么存儲控制器使每個NAND存儲設備20 (a-h)從非易失性存儲單元中在與邏輯地址3相關聯的物理地址C讀取數據塊并且進入在每個NAND存儲設備20 (a-h)內的各自的緩沖器。其后,根據讀取的八個數據子塊來對具有邏輯地址3的邏輯地址的數據塊進行組合,并且將該數據與來自設備20i的奇偶校驗比特進行比較,來確定是否存在任何錯誤。此外,如果設備(a-h)中的任何一個檢測到錯誤,則從NAND存儲設備20i中讀取與具有邏輯地址3的數據塊相關聯的奇偶校驗比特塊,并且將其存入該設備的緩沖器。然后校正錯誤,并且寫回到有錯誤的NAND存儲設備,并且從存儲系統10提供校正后的數據。如果不存在錯誤,則從存儲系統10提供來自具有邏輯地址3的邏輯地址的塊的未校正的數據。如前所討論, 這些數據塊的存儲的問題是當NAND設備20提高了數據傳送速度并且降低了存儲讀取延遲時,讀取開銷使存儲系統的性能急劇下降。這導致讀取大量小數據塊的增大的時間和開銷。用以上作為示例,如果希望從存儲系統10中讀取具有邏輯地址(1-8)的八(8)個數據塊,然后由上述討論可以看出,每個NAND設備20 (x)必須被讀取8次(即使我們假定所有八(8)個存儲設備20 (a-h)-包括用于存儲奇偶校驗比特的NAND存儲設備20 (i))可以被同時讀取。八(8)個小塊讀取操作的每一本文檔來自技高網...
【技術保護點】
【技術特征摘要】
【國外來華專利技術】...
【專利技術屬性】
技術研發人員:S阿亞,
申請(專利權)人:格林萊恩特有限責任公司,
類型:
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。