TW201923575A - 運作中磁碟冗餘陣列同位計算 - Google Patents

運作中磁碟冗餘陣列同位計算 Download PDF

Info

Publication number
TW201923575A
TW201923575A TW107128343A TW107128343A TW201923575A TW 201923575 A TW201923575 A TW 201923575A TW 107128343 A TW107128343 A TW 107128343A TW 107128343 A TW107128343 A TW 107128343A TW 201923575 A TW201923575 A TW 201923575A
Authority
TW
Taiwan
Prior art keywords
data
buffer
raid
controller
semiconductor storage
Prior art date
Application number
TW107128343A
Other languages
English (en)
Other versions
TWI686694B (zh
Inventor
朱利恩 馬吉斯
Original Assignee
日商東芝記憶體股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日商東芝記憶體股份有限公司 filed Critical 日商東芝記憶體股份有限公司
Publication of TW201923575A publication Critical patent/TW201923575A/zh
Application granted granted Critical
Publication of TWI686694B publication Critical patent/TWI686694B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1064Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本發明係關於一種資料儲存裝置,其包含含有資料之一非揮發性半導體儲存陣列、與該非揮發性半導體儲存陣列通信之一控制器以及含有RAID單元之一緩衝器,該等RAID單元經由該控制器與該非揮發性半導體儲存陣列通信。該控制器經組態以自一主機裝置接收寫入請求,且將與該等寫入請求相關之第一資料累積在該等RAID單元中。該控制器亦經組態以同時將含於該等RAID單元中之該第一資料傳送至該非揮發性半導體儲存陣列,計算含於該等RAID單元中之該第一資料之同位值,每一同位值與每一寫入請求相關,且將該等同位值累積在一上下文識別符緩衝器中。該控制器經進一步組態以使上下文識別符與該等同位值相關聯,且將該等同位值及該等上下文識別符儲存在該非揮發性半導體儲存陣列中。

Description

運作中磁碟冗餘陣列同位計算
本發明係關於執行運作中同位計算以提高驅動效率之固態磁碟機及方法。
與常規磁碟驅動器相比,固態磁碟機(SSD)通常具有更快效能、更加緊湊且對振動或實體衝擊之敏感性更低。鑒於此等優勢,代替磁碟驅動器或除了磁碟驅動器之外,SSD被用於越來越多之計算裝置及其他消費產品,即使SSD之每千兆位元組儲存容量明顯高於磁碟驅動器的儲存容量。
資料以多種方式儲存在SSD中,以在讀取及寫入週期期間最佳化資料品質。獨立磁碟冗餘陣列(RAID)是資料儲存虛擬化技術之一個實例,該技術將多個SSD組件組合至單個邏輯單元中,以實現資料冗餘、效能改進或兩者。資料根據多個分佈佈局(稱為RAID位準)分佈在SSD上,其取決於所需之資料冗餘位準及所需效能。RAID位準已經編號,且當前介於RAID 0至RAID 6之範圍內,每一位準在SSD中之資料儲存之關鍵目標可靠性、可用性、效能及容量之間提供不同的平衡。RAID位準大於RAID 0可防止不可恢復之區段讀取錯誤,以及整個實體驅動器的故障。
RAID技術亦可以部署在SSD中,其中SSD控制器可以承擔RAID控制器之額外作用且跨SSD內之多個非揮發性記憶體裝置上分配資料,其方式與可跨多個SSD部署RAID之方式相同。在此狀況下,當記憶體裝置差錯率超過SSD控制器糾錯碼(ECC)之糾錯能力時,RAID防止各個記憶體裝置出現故障或防止不可恢復之記憶體裝置錯誤。
在可用之若干RAID位準中,RAID 5分佈佈局非常適合SSD,以便在讀取及寫入操作期間實現最佳資料保持。此係因為RAID 5分佈佈局併入有分佈在所有驅動器中之同位資訊。以相同方式,在SSD中部署RAID時,具有同位資訊之RAID 5資料以條帶形式寫入並跨一組記憶體裝置分佈。在NAND快閃非揮發性記憶體裝置之情況下,資料亦寫入有ECC同位資訊,該ECC同位資訊用於偵測及糾正NAND快閃讀取及寫入錯誤,且通常利用由嵌入於自SSD控制器傳輸至NAND快閃記憶體裝置之資料中之糾錯碼(ECC)生成的同位位元。在單個設備發生故障時,可使用RAID條帶之分佈式資料及同位,經由使用儲存於其餘記憶體裝置中之資料進行之布林(Boolean)運算互斥或來恢復丟失之資料,由此便於後續之讀取循環而不會丟失任何資料。SSD內亦可以採用其他RAID分佈來滿足特定要求。
當前SSD內使用之RAID資料分佈佈局採用同步資料活動,其中連續處理自主機獲得之讀取及寫入請求。此同步活動係關於讀取儲存在緩衝器中之所有資料,以便在不可恢復之錯誤之後生成同位資訊或重建構資料,此可能是耗時的並且會不必要地給SSD之記憶體控制器增加壓力。鑒於此,長期以來仍然需要由支援RAID之SSD控制器執行的最佳化資料讀取及寫入操作,此對SSD控制器之負擔較小。
本發明係關於一種資料儲存裝置,其包含含有資料之非揮發性半導體儲存陣列、與非揮發性半導體儲存陣列通信之控制器以及含有RAID單元之緩衝器,RAID單元經由控制器與非揮發性半導體儲存陣列通信。控制器經組態以自主機裝置接收寫入請求,且將與該寫入請求相關之第一資料累積在該等RAID單元中。控制器亦經組態以同時(i)將含於RAID單元中之第一資料傳送至非揮發性半導體儲存陣列,(ii)計算含於RAID單元中之第一資料的同位值,每一同位值與每一寫入請求相關,(iii)將同位值累積在上下文識別符緩衝器中,(iv)使上下文識別符與同位值相關聯,且(v)將同位值及上下文識別符儲存在非揮發性半導體儲存陣列中。
在某些實施方案中,第一資料包含經劃分成第一資料部分之第一資料頁面。在其他實施方案中,使用第一資料部分計算同位值。在一些實施方案中,上下文識別符緩衝器使用所有第一資料頁面之相同第一資料部分計算同位值。在某些實施方案中,通過執行邏輯互斥或運算,使用含於上下文識別符緩衝器中之所有第一資料頁面之相同第一資料部分來計算同位值。在其他實施方案中,控制器經進一步配置以將識別符分配至含於每一RAID單元中的第一資料。在一些實施方案中,識別符包含最終旗標、頁面位元映像及偏移位元映像中之至少一個。在某些實施方案中,每一RAID單元中之第一資料與識別符一起儲存在非揮發性半導體儲存陣列中。在其他實施方案中,緩衝器是DRAM緩衝器。在一些實施方案中,RAID單元經實施為RAID 5。
本發明亦係關於一種資料儲存裝置,其包含含有第一資料之非揮發性半導體儲存陣列、與非揮發性半導體儲存陣列通信之控制器以及含有RAID單元的緩衝器,RAID單元經由控制器與非揮發性半導體儲存陣列通信。控制器經組態以(i)自主機裝置接收儲存於非揮發性半導體儲存陣列中之第二資料之讀取請求,(ii)判定與所請求之第二資料相關聯的識別符,(iii)判定所請求之第二資料是否含有不可恢復之錯誤,(iv)若所請求之第二資料含有不可恢復之錯誤,則累積包括同位值之第一資料,該第一資料含於與重建構緩衝器中所請求之第二資料相同的識別符相關聯之非揮發性半導體儲存陣列中,(v)自所累積之第一資料及同位值重建構所請求之第二資料,且(vi)經由RAID單元將經重建構之第二資料傳送至主機裝置。
在某些實施方案中,通過對所累積之第一資料及同位值執行邏輯互斥或運算來重建構所請求之第二資料。在其他實施方案中,控制器使用查找表判定所請求之第二資料在非揮發性半導體儲存陣列中之位置。在一些實施方案中,緩衝器是DRAM緩衝器。在某些實施方案中,RAID單元經實施為RAID 5。
本發明亦係關於一種方法,其包含藉由與非揮發性半導體儲存陣列通信之控制器自主機裝置接收寫入請求。方法亦包括將與寫入請求相關之第一資料累積在含於緩衝器中之RAID單元中,緩衝器經由控制器與非揮發性半導體儲存陣列通信。另外,方法同時(i)將含於RAID單元中之第一資料傳送至非揮發性半導體儲存陣列,(ii)自含於RAID單元中之第一資料計算同位值,每一同位值與每一寫入請求相關,(iii)將同位值累積在上下文識別符緩衝器中,(iv)使上下文識別符與同位值相關聯,且(v)將同位值及上下文識別符儲存在非揮發性半導體儲存陣列中。
在某些實施方案中,第一資料包含經劃分成第一資料部分之第一資料頁面。在其他實施方案中,方法進一步包含使用第一資料部分計算同位值。在一些實施方案中,上下文識別符緩衝器使用所有第一資料頁面之相同第一資料部分計算同位值。在某些實施方案中,通過執行邏輯互斥或運算,使用含於上下文識別符緩衝器中之所有第一資料頁面之相同第一資料部分來計算同位值。在其他實施方案中,方法進一步包含將識別符分配至含於每一RAID單元中的第一資料。
本發明亦係關於一種方法,其包含通過與非揮發性半導體儲存陣列通信之控制器自主機裝置接收儲存於非揮發性半導體儲存陣列中之第二資料的讀取請求。方法亦包含判定與所請求之第二資料相關聯之識別符,且判定所請求之第二資料是否含有不可恢復之錯誤。方法進一步包含若所請求之第二資料含有不可恢復之錯誤,則累積包括同位值之第一資料,該第一資料含於與重建構緩衝器中所請求之第二資料相同的識別符相關聯之非揮發性半導體儲存陣列中。方法亦包含自所累積之第一資料及同位值重建構所請求之第二資料,且經由RAID單元將經重建構之第二資料傳送至主機裝置。
在某些實施方案中,方法進一步包含對第一資料及同位值執行邏輯互斥或運算。在其他實施方案中,控制器使用查找表判定所請求之第二資料在非揮發性半導體儲存陣列中之位置。
本發明亦係關於儲存指令之非暫時性計算機可讀媒體,該指令在由處理器執行時致使處理器執行方法,該方法包含藉由與非揮發性半導體儲存陣列通信之控制器自主機裝置接收寫入請求。方法亦包含將與寫入請求相關之第一資料累積在含於緩衝器中之RAID單元中,緩衝器經由控制器與非揮發性半導體儲存陣列通信。方法亦同時(i)將含於RAID單元中之第一資料傳送至非揮發性半導體儲存陣列,(ii)自含於RAID單元中之第一資料計算同位值,每一同位值與每一寫入請求相關,(iii)將同位值累積在上下文識別符緩衝器中,(iv)使上下文識別符與同位值相關聯,且(v)將同位值及上下文識別符儲存在非揮發性半導體儲存陣列中。
本發明亦係關於儲存指令之非暫時性計算機可讀媒體,該等指令在由處理器執行時致使處理器執行方法,該方法包含藉由與非揮發性半導體儲存陣列通信之控制器自主機裝置接收儲存於非揮發性半導體儲存陣列中的第二資料之讀取請求。方法亦包含判定與所請求之第二資料相關聯之識別符,且判定所請求之第二資料是否含有不可恢復之錯誤的步驟。方法亦包含若所請求之第二資料含有不可恢復之錯誤,則累積包括同位值之第一資料,該第一資料含於與重建構緩衝器中所請求之第二資料相同的識別符相關聯之非揮發性半導體儲存陣列中。另外,方法包含自所累積之第一資料及同位值重建構所請求之第二資料,且經由RAID單元將經重建構之第二資料傳送至主機裝置之步驟。
圖1是包含與儲存裝置120通信之至少一個主機110的計算系統100之方塊圖。主機110是計算系統,其包含處理器、記憶體及通常所已知之其他組件,且出於簡潔起見未在圖1中展示。舉例而言,主機110可以是SATA、PCI Express (PCIe)或NVM Express (NVMe™)主機。儲存裝置120提供非揮發性儲存功能性,供主機110使用。儲存裝置120是固態磁碟機(「SSD」),其是包括基於非揮發性半導體之儲存元件(例如基於NAND之快閃記憶體裝置)作為儲存媒體的非揮發性儲存裝置。儲存裝置120包括非揮發性記憶體(NVM)控制器130、DRAM緩衝器140及非揮發性(NV)半導體記憶體150。儲存裝置120亦可包括未展示之其他元件,例如用於高速緩衝儲存及緩衝的揮發性記憶體、電源供應器電路(包括用於將電力傳遞至SSD控制器130之電路、DRAM緩衝器140及NV半導體記憶體150以及用於緩衝電源供應器之電容器)、指示燈電路、溫度感測器、自舉電路、時鐘電路以及用於輔助各種功能的其他電路。
SSD控制器130包含用於自主機110接收請求(例如,讀取及寫入)之接收模組132。舉例而言,接收模組132可以是資料應答器。控制器130亦包含資料重建構器134,其耦接至互斥或模組135,用於恢復由於NV記憶體150之磁碟中之任一個的故障而丟失之資料。舉例而言,資料重建構器134可包含能夠影響邏輯計算之處理器。控制器130亦可包含上下文ID緩衝器136及重建構ID緩衝器138,以促進如將在以下段落中詳述之資料重建構。雖然資料重建構器134、互斥或模組135、上下文ID緩衝器及重建構ID緩衝器138展示為單個單元,但是應瞭解本發明之任何實施方案可包括複數個此等模組。
SSD控制器130接收及處理來自主機110之命令,以便對DRAM緩衝器140及NV半導體記憶體150執行操作。來自主機110之命令包括讀取或寫入至NV半導體記憶體內的位置之請求,及各種管理命令,例如用於查詢儲存裝置120之特徵集之命令、用於格式化NV半導體記憶體之命令、用於創建及修改各種類型之佇列的命令、用於請求各種事件之通知的命令,以及各種其他命令。NV半導體記憶體包括一或多個基於非揮發性半導體之儲存元件(例如儲存元件150、160、170、180、190)之陣列,其一些實例包括非揮發性NAND快閃記憶體、非揮發性NOR快閃記憶體、基於非揮發性DRAM之記憶體(NVDIMM)、磁阻式及電阻式隨機存取記憶體(MRAM及ReRAM)、相變記憶體(PCM)以及其他類型的記憶體。DRAM緩衝器140之部分用作RAID條帶146,其中揮發性記憶體塊141至145經分配至RAID條帶146。記憶體塊141至144用以緩衝自主機110接收之資料,而一個記憶體塊145用以儲存根據自NV記憶體擷取之資料計算出的同位值Y。DRAM緩衝器140亦包含RAID緩衝器148,其可容納各自具有記憶體塊141至145之若干RAID條帶(為清楚起見而未展示)。
圖2A說明根據本發明之實施例的將資料寫入至NV記憶體150且具有RAID保護之方法。此處自主機110接收至NV記憶體150之寫入命令。一或多個此類寫入命令包含自主機110接收的呈資料頁面D1至D4形式之資料。寫入命令可含有僅用於資料頁面之一個部分的資料,或可含有跨越若干資料頁面之資料。寫入命令亦可包含與目標NV記憶體裝置150、160、170、180、190相關的邏輯位址資訊。SSD 120之控制器130經由接收模組231接收寫入命令。接著在DRAM緩衝器140內之RAID緩衝器141至144中緩衝來自一或多個寫入命令的資料頁面D1至D4,使得資料頁面D1至D4累積於RAID條帶146中。資料D1至D4之每一頁面由針對於DRAM緩衝器140之每一磁碟的頁緩衝器緩衝。接著將資料頁面D1至D4儲存於形成RAID條帶146之DRAM單元141至144中。在將資料頁面D1至D4緩衝至DRAM 140中後,由控制器130讀取資料頁面D1至D4,以寫入至NV記憶體裝置150、160、170、180。應注意,在圖2A中,存在複數個互斥或模組232至235,及複數個上下文ID緩衝器236至239。控制器130讀取DRAM緩衝器140之RAID條帶146中之資料頁面D1至D4且將此資訊饋送至互斥或模組232至235中,如下文將解釋。
每一資料頁面D1至D4包含若干部分。在圖2A中所展示之實例中,資料頁面D1包含部分P1至P4。類似地,資料頁面D2包含部分Q1至Q4,資料頁面D3包含部分R1至R4,且資料頁面D4包含部分S1至S4。雖然圖2A中之每一頁面D1至D4包含四個部分,但是應理解,每一資料頁面可包含複數個2n 部分,其中n是整數。
當控制器130自RAID條帶146讀取資料頁面D1至D4時,將新上下文識別符C_ID分配至讀取至互斥或模組232至235中之每一個中的資訊。此C_ID對於控制器130自RAID條帶146讀取之每一資料頁面D1至D4中之每一部分是唯一的。C_ID鏈接至用於參考NV記憶體裝置150、160、170、180、190中之資料頁面D1至D4的位址。上下文識別符同位緩衝器236至239與每一互斥或模組232至235相關聯。因此,舉例而言,當D1由控制器130讀取時,將資料部分P1至P4寫入至NVM裝置150。同時,構成資料頁面D1之資料部分P1至P4被連續讀取至互斥或模組232至235中,該等互斥或模組232至235執行互斥或運算且將值輸出至對應上下文ID緩衝器236至239中。舉例而言,當D1由控制器130讀取時,P1由互斥或模組232讀取,P2由互斥或模組233讀取,P3由互斥或模組234讀取,且P4由互斥或模組235讀取。緩衝器236至239最初不含有任何資料,且因此當資料部分P1至P4由緩衝器236至239中的每一個接收時,認為此等資料部分是緩衝器236至239中之第一資料,且因此用資料部分P1至P4來初始化同位緩衝器236至239。在此實例中,資料部分P1初始化同位緩衝器236,資料部分P2初始化同位緩衝器237,資料部分P3初始化同位緩衝器238,且資料部分P4初始化同位緩衝器239。應注意資料頁面P、Q、R及S之類似資料部分由相同同位緩衝器接收,即P1、Q1、R1及S1由同位緩衝器236接收,P2、Q2、R2及S2由同位緩衝器237接收,P3、Q3、R3及S3由同位緩衝器238接收,且P4、Q4、R4及S4由同位緩衝器239接收。亦應注意,雖然P1至P4被描述為首先由緩衝器236至239接收,但是P1至P4、Q1至Q4、R1至R4及S1至S4中之任一個可首先由緩衝器236至239接收。因此,作為另一實例,資料部分Q1初始化同位緩衝器236,資料部分P1初始化同位緩衝器237,資料部分S1初始化同位緩衝器238,且資料部分P2初始化同位緩衝器239。因此,雖然必須依序讀取相同頁面內之資料部分,但是次序或讀取資料頁面不固定。
可由控制器130以任何次序及/或同時讀取資料頁面D1至D4。因此,雖然頁面D1經讀取為第一資料頁面,但是如上文所描述,其餘頁面D2至D4中之任一個可由控制器130讀取為第一資料頁面。舉例而言,可由控制器130以次序D2、D4、D1及D3讀取資料頁面。在另一實例中,可以次序D4 // D2、D3及D1讀取資料頁面。雖然讀取資料頁面D1至D4的次序不重要,但是當讀取任何一個資料頁面D1至D4時,必須各自依次讀取對應資料部分P1至P4、Q1至Q4、R1至R4及S1至S4。舉例而言,當在控制器130中讀取資料頁面D1時,必須將P1讀取至互斥或模組232中(且隨後至同位緩衝器236中),P2必須準備好至互斥或模組233中(且隨後至同位緩衝器237中),必須將P3讀取至互斥或模組234中(且隨後至同位緩衝器238中),且必須將P4讀取至互斥或模組235中(且隨後至同位緩衝器239中)。作為另一個實例,當控制器130準備好資料頁面D3時,必須將R1讀取至互斥或模組232中(且隨後至同位緩衝器236中),R2必須準備好至互斥或模組233中(且隨後至同位緩衝器237中),必須將R3讀取至互斥或模組234中(且隨後至同位緩衝器238中),且必須將R4讀取至互斥或模組235中(且隨後至同位緩衝器239中)。
在利用來自資料頁面D1之資料部分P1至P4初始化同位緩衝器236至239後,當由控制器130讀取後續資料頁面D2至D4時,利用相應同位緩衝器236至239之內容對其複合資料部分Q1至Q4、R1至R4及S1至S4進行互斥或運算。舉例而言,若在控制器130中讀取資料頁面D3,則同位緩衝器236將含有P1ÅR1,同位緩衝器237將含有P2ÅR2,同位緩衝器238將含有P3ÅR3,且同位緩衝器239將含有P4ÅR4。作為另一個實例,若在資料頁面D1及D3之後在控制器130中讀取資料頁面D2,則同位緩衝器236將含有P1ÅR1ÅQ1,同位緩衝器237將含有P2ÅR2ÅQ2,同位緩衝器238將含有P3ÅR3ÅQ3,且同位緩衝器239將含有P4ÅR4ÅQ4。應理解,若資料頁面D2僅含有部分Q1至Q2且資料頁面D3僅含有資料部分R1至R3,則同位緩衝器236將含有P1ÅR1ÅQ1,同位緩衝器237將含有P2ÅR2ÅQ2,同位緩衝器238將含有P3ÅR3,且同位緩衝器239將含有P4。
畢竟由控制器130讀取資料頁面D1至D4,對應資料部分P1至P4、Q1至Q4、R1至R4及S1至S4儲存於NV記憶體150、160、170及180中,如圖2A中所描繪。同位緩衝器236至239之內容亦儲存於NV記憶體190中。在資料頁面D1至D4各自含有資料之四個部分的狀況下,NV記憶體190之同位內容為:X1= P1ÅQ1ÅR1ÅS1、X2 = P2ÅQ2ÅR2ÅS2、X3 = P3ÅQ3ÅR3ÅS3及X4 = P4ÅQ4ÅR4ÅS4。
圖2B說明當由控制器130讀取資料時同位緩衝器236至239之狀態。在自主機110接收寫入命令之前,控制器130通過將頁面位元映像設置為「1」,將偏移位元映像設置為「0」來初始化同位緩衝器236至239。對於待寫入之資料的2n 頁面,頁面及偏移位元映像將各自為2n 位元組長。因此,對於上文所論述工作實例,利用資料之四個頁面D1、D2、D3、D4,將在「1111」處初始化頁面位元映像,且將在「0000」處初始化偏移位元映像。此展示於圖2B中之表的列250中。每當控制器130讀入待寫入至NV記憶體裝置150、160、170、180之資料時,檢查是否在「0000」處初始化偏移位元映像。若是,則控制器接著繼續以同樣將同位緩衝器236至239初始化為零。此將是圖2之列250中之情況,其中X1 = 0、X2 = 0、X3 = 0且X4 = 0。
若偏移位元映像不是零,則控制器130開始將資料傳送至NV記憶體裝置150、160、170、180,且同時利用相應同位緩衝器236至239對資料進行互斥或運算。因此當由SSD 120接收資料部分P1時,控制器將接收到之資料傳送至NV記憶體裝置150及互斥或模組232。接著利用同位緩衝器236之內容對互斥或模組232進行互斥或運算P1。如圖2B之列251中所描繪,剛初始化同位緩衝器,且因此同位緩衝器之內容將是X1=P1Å0=P1。當由同位緩衝器236首次接收資料頁面之第一部分(P1)的同位緩衝器236時,將偏移位元映像遞增至「0001」,如圖2B中之列251中所指示。因此當由同位緩衝器237首次接收資料頁面的第二部分(P2)時,如在圖2B中之列253中一樣,將偏移位元映像進一步遞增至「0011」。類似地,當由同位緩衝器238首次接收資料頁面之第三部分(P3)時,如在圖2B中之列257中一樣,將偏移位元映像進一步遞增至「0111」。最後,當由同位緩衝器239首次接收資料頁面之第四部分(P4)時,如在圖2B中之行258中一樣,將偏移位元映像進一步遞增至「1111」。
應注意由相同互斥或模組及同位緩衝器接收每一資料頁面D1、D2、D3、D4的類似部分。因此,在圖2B中,由互斥或模組232及同位緩衝器236接收P1、Q1、R1及S1,由互斥或模組233及同位緩衝器237接收P2、Q2、R2及S2,由互斥或模組234及同位緩衝器238接收P3、Q3、R3及S3,且由互斥或模組235及同位緩衝器239接收P4、Q4、R4及S4。
在已由控制器130接收資料頁面中的所有資料後,例如已接收所有D1 (P1、P2、P3及P4),在控制器內將最終旗標設置成「1」以指示所有資料已寫入至NV記憶體裝置150且同位緩衝器236至239已經更新。當此情況發生時,頁面位元映像自「1111」遞減至「1110」,如圖2B之列258中所展示。類似地,當接收所有D2 (Q1、Q2、Q3及Q4)時,將最終旗標設置成「1」且將頁面位元映像更新為「1010」以指示所有資料已寫入至NV記憶體裝置160且同位緩衝器236至239已經更新。當接收所有D3 (R1、R2、R3及R4)時,將最終旗標設置成「1」且頁面位元映像更新為「1000」以指示所有資料已寫入NV記憶體裝置160且同位緩衝器236至239已經更新。同樣,當接收所有D4 (S1、S2、S3及S4)時,將最終旗標設置成「1」且將頁面位元映像清除為「0000」以指示所有資料已寫入至NV記憶體裝置160且同位緩衝器236至239已經更新。當所有資料頁面D1、D2、D3、D4已寫入至NV記憶體裝置150、160、170及180時,同位緩衝器236至239是完整的且含有X1= P1ÅQ1ÅR1ÅS1、X2 = P2ÅQ2ÅR2ÅS2、X3 = P3ÅQ3ÅR3ÅS3及X4 = P4ÅQ4ÅR4ÅS4,如圖2B中之列266。接著將同位緩衝器236至239之內容X1、X2、X3及X4寫入至NV記憶體裝置190。
圖3A說明根據本發明之實施例的將資料自NV記憶體150讀取至主機110之程序。由主機110發佈之讀取命令由控制器130的接收模組132接收。控制器130解譯讀取命令且定位NV記憶體150中之所請求的資料。作為實例,若所請求之資料位於資料頁面D3內(即含於資料部分R1至R4中之任一個中),則控制器130將定位NV記憶體裝置150中之資料頁面D3 (經由儲存於例如控制器130中之查找表)且將資料頁面D3傳送至DRAM緩衝器140,以待返回至主機110。
然而,在某些情形下,自NV記憶體裝置150、160、170、180讀取資料可導致不可恢復之錯誤,如圖3B中所描繪。此處,控制器130自記憶體裝置150、160、170、180讀取資料,但由於NV記憶體裝置150、160、170、180之故障不能夠對資料解密,或不能夠糾正讀取資料時出現之錯誤的數目。如在圖5B中例示,在自NV記憶體裝置170擷取資料單元D3之後,控制器130判定資料D3中之錯誤的數目超出其糾錯能力且判定已發生不可恢復之錯誤。控制器130接著開始RAID恢復程序,如圖3C中所展示。
當已發生不可恢復之錯誤(例如擷取資料頁面D3時之錯誤)時,控制器130自NV記憶體裝置150、160、180及190讀取其餘資料頁面D1、D2、D4及Y,且將資料傳送至DRAM緩衝器140中之RAID條帶146。如先前所提及,可根據記憶體裝置150、160、170、180及190附接之通道的存取時序及匯流排活動以任何次序傳回資料頁面D1、D2、D4及Y。在自NV記憶體擷取第一資料頁面(例如資料頁面D1)後,控制器130識別此是由RAID條帶146存取之第一位址且使用相關聯之上下文識別符C_ID來定位用於該C_ID的重建構緩衝器。根據圖2A及圖2B,將資料D1在經傳送至DRAM緩衝器140中之RAID條帶146之前經加載至上下文識別符重建構緩衝器138中。在對資料D2及D4進行各自後續擷取時,在將相應資料傳送至DRAM緩衝器140中之RAID條帶146之前利用上下文識別符重建構緩衝器138的內容對相應資料進行互斥或運算。在自NV記憶體擷取最後一個資料頁面之後,將緩衝器138之內容(D1ÅD2ÅD4ÅP)寫入至DRAM緩衝器140中的RAID條帶146作為資料單元D3。包含資料頁面D3之DRAM緩衝器140中之RAID條帶146內的資料接著返回至主機110以滿足讀取請求。
圖4A至圖4E分解如先前所描述之恢復資料單元D3的重建構程序。當控制器130在自NV記憶體150擷取資料期間偵測到錯誤時,其嘗試糾正錯誤(例如,使用糾錯碼等等)。當糾錯是不可能的時,控制器130判定錯誤是不可恢復的且開始RAID資料恢復程序。RAID資料恢復係關於擷取RAID條帶之其餘資料頁面,即資料頁面D1、D2、D4及P。此處,在運作中執行擷取,其中資料D1、D2、D4及P到達之序列不重要。控制器讀取NV記憶體且自NV記憶體裝置180擷取資料頁面D4作為第一資料頁面,例如如圖4A中所描繪。將資料頁面D4讀取至且隨後儲存於DRAM緩衝器140中之RAID條帶146中的單元144中。資料頁面D4亦同時讀取至上下文識別符重建構緩衝器138中。資料頁面D4初始化上下文識別符重建構緩衝器138,因為其在偵測到不可恢復的錯誤之後首先被讀取至緩衝器138中。
在擷取資料D4之後,由控制器130自NV記憶體擷取資料D1。以類似方式,將資料D1讀取至DRAM緩衝器140中之RAID條帶146中的單元141中,且由於資料D1不是將擷取RAID條帶之其餘資料單元的第一資料單元,因此同時利用緩衝器138之先前內容進行互斥或運算,即利用D4對D1進行互斥或運算,且布林組合D1ÅD4替換緩衝器138之內容,如圖4B中所說明。
假設將自NV記憶體擷取之下一個資料頁面是同位資訊Y,將此資料讀取至DRAM緩衝器140中之RAID條帶146中的單元145中,且同時利用上下文識別符重建構緩衝器138之先前內容對此資料進行互斥或運算,即利用D1ÅD4對Y進行互斥或運算,且布林組合YÅD1ÅD4替換緩衝器138之內容,如圖4C中所說明。將自NV記憶體擷取之最終資料頁面是D2,其接著被讀取至DRAM緩衝器140中之RAID條帶146中的單元142中,且同時利用緩衝器之內容進行互斥或運算,即利用YÅD1ÅD4對D2進行互斥或運算,且布林組合D2ÅYÅD1ÅD4替換緩衝器138之內容,如圖4D中所說明。
在已擷取來自NV記憶體裝置150、160、170、180、190之資料之後,將上下文識別符重建構緩衝器138之內容傳送至RAID條帶146且儲存為RAID單元143中的經重建構資料頁面D3,如圖4E中所展示。此經重建構資料D3讀出至主機110以滿足讀取請求。
應理解,RAID同位計算及資料重建構之常規方法係關於控制器首先自NV記憶體讀取且在DRAM中緩衝其餘資料頁面D1、D2、D4及Y中的所有,接著讀回此等資料頁面以執行互斥或函數以利用錯誤(D3)重建構資料,在將D3資料單元RAID條帶之內容傳回至主機裝置之前節約RAID條帶中的此經重建構資料頁面。自首次自NV記憶體讀取資料頁面並保存至DRAM緩衝器,此係關於四個額外資料單元讀取(自DRAM至控制器)及一個額外資料單元寫入(自控制器至DRAM緩衝器)。此無疑會減慢向主機讀取資料之速度,並且會增加控制器上之計算壓力。本發明藉由在運作中自NV記憶體150、160、170、180、190接收資料且對該資料進行「互斥或運算」,即同時將其儲存在DRAM緩衝器中來緩解此問題,而不需要在控制器可採取重建構動作之前累積D1、D2、D4及Y。此外,使用上下文ID將NV記憶體內之位址唯一地與控制器中的獨立互斥或緩衝器相關聯能夠使得多個讀取及寫入NV記憶體操作並行進行,且來自不同讀取或寫入命令之資料單元是以任何次序交錯。
現將關於圖5A中所展示之流程圖詳述將資料寫入至NV記憶體150且具有RAID保護之方法700。此方法映射關於圖2A及圖2B所描述的寫入程序。方法700開始於步驟S710,其中控制器120檢查用於來自主機110之寫入請求的接收模組132。在接收至寫入請求之後,控制器130累積自主機110接收之資料,其可來自含於DRAM緩衝器140中之RAID條帶146中的若干單獨及不相關寫入請求,如步驟S720中所展示。所接收之資料作為RAID單元141至144之形式儲存於RAID條帶146中,如圖2A中所展示。控制器130接著檢查RAID條帶146是否是完整的,且若不是,則回至步驟S710以接收另一寫入命令(步驟S730)。可跨若干、可能不相關之寫入命令進行RAID條帶146中之資料的累積。根據步驟S740,當RAID條帶是完整的時,控制器130將上下文ID分配至資料且初始化同位緩衝器。
同位緩衝器(例如圖2A中之同位緩衝器236至239)之初始化可係關於將最終旗標設置為「0」,將頁位元映像設置為「1111」,以及將偏移位元映像設置為「0000」,如先前所描述。
在初始化之後,控制器130讀取RAID單元141至144中之資料(步驟S750)且在步驟S760中將資料傳送至NV裝置150、160、170、180。同時,將每一RAID單元141至144中之資料傳遞至互斥或模組(例如,模組232至235)及上下文ID同位緩衝器(例如,同位緩衝器236至239),如步驟S770中所展示。更新對所傳送之每一資料部分之同位,如上文關於圖2B所解釋。舉例而言,若傳遞至互斥或模組之資料是傳遞的第一資料,則互斥或函數有效地將資料及邏輯0作為輸入,其解析為資料(例如,P1Å0 = P1;或利用資料P1另外以等效方式初始化上下文ID同位緩衝器)。然而,當來自RAID條帶146中之後續RAID單元141至144之資料傳遞至互斥或模組時,接著將此同位值儲存於上下文ID同位緩衝器中,如步驟S770中所展示。通過對正傳遞至互斥或模組之資料及上下文緩衝器136之先前內容執行互斥或運算來判定此同位值。在步驟S770中,根據圖2B更新最終旗標、頁面位元映像及偏移位元映像,如先前所描述。在步驟S780中,控制器130判定是否存在更多RAID單元將自DRAM緩衝器140傳送。若存在更多RAID單元,則方法700循環回至步驟S750。若已傳送所有RAID單元,則上下文ID緩衝器136之內容作為同位資訊Y傳送至NV記憶體裝置190 (步驟S790),且方法結束。
現將關於圖5B中所展示之流程圖詳述自NV記憶體150讀取資料且具有RAID保護的方法800。方法800開始於步驟S805,其中控制器120檢查用於來自主機110之讀取請求的接收模組132。在接收讀取請求之後,控制器130查詢查找表以判定所請求之資料在NV記憶體150、160、170、180中的位置,在此之後,控制器130擷取所需資料(步驟S810)。在步驟S815中,控制器130接著判定擷取至之資料是否含有錯誤。若不含錯誤,則將資料複製至RAID條帶146 (步驟820),如圖3A中所描繪。在步驟S830中,若擷取至之資料含有錯誤,則控制器判定錯誤是否是可恢復的。若錯誤是可恢復的,則在步驟S835中控制器將糾錯碼ECC (例如漢明(Hamming)或里德-所羅門(Reed-Solomon)碼)應用至擷取至之資料以恢復資料。接著將恢復之資料傳送至RAID條帶146 (步驟S820)。然而,若所擷取之資料含有不可恢復的錯誤,則控制器130繼續以讀入與擷取至之資料相關聯之上下文識別符C_ID (步驟840)。控制器讀取與錯誤資料單元相同之資料條帶中之其餘資料。此資料被傳送至DRAM緩衝器140中之RAID條帶146 (自NV記憶體讀取資料單元並傳送至DRAM可以作為單個DMA傳送完成),且同時用於初始化上下文ID重建構緩衝器138。此可以藉由將用零對資料單元進行互斥或運算且將結果儲存在上下文ID重建構緩衝器138中來方便地執行。控制器接著自NV記憶體讀取RAID條帶中之下一資料單元(步驟S845)。將資料傳送至DRAM緩衝器140中之RAID條帶146,且同時用上下文ID重建構緩衝器138之先前內容對資料互斥或運算,且將資料儲存於上下文ID重建構緩衝器138中(步驟S850)。其餘的資料單元且另外同位資訊(含於NV記憶體裝置190中)亦傳送至DRAM緩衝器140中之RAID條帶146,且以類似方式執行互斥或運算。在傳送每一資料單元之後,控制器判定NV記憶體150中是否存在更多資料單元(步驟S855),且若存在,則方法800循環回至步驟S845。在對應於C_ID之所有資料單元及同位單元已經互斥或運算至上下文識別符重建構緩衝器138中後,上下文ID重建構緩衝器將含有經重建構資料(如圖4E中所描繪之資料單元D3),其在步驟S820中接著經複製至RAID條帶以傳送至主機110,在此之後,方法結束。
圖6描繪根據本發明之實施例的對來自至少一個主機110至113之多個同時讀取/寫入命令之處理。當讀取或寫入命令至達控制器130時,它們包括指示資料將在SSD 120內之邏輯位址空間內被讀取或寫入之位置的位址資訊。此位址資訊連同DRAM緩衝器165中緩衝之RAID條帶160至163一起被緩衝。然後,通過將上下文識別符C_ID與位址相關聯並將此等關聯儲存在上下文查找表170中以用於來自主機110至113之活動命令,使得對於將自NV記憶體180寫入或讀取之任何資料單元,用於此讀取或寫入指令之位址可用以定位所討論之資料單元之適當上下文,以此來支援多個RAID條帶上下文150至153。此允許自任何特定命令內以及跨並行進行之多個讀取或寫入命令(即以任何次序)對在運作中資料單元進行處理。
熟習此項技術者將清楚本發明之各個態樣的其他目標、優勢及實施例,且其在本描述內容及附圖之範疇內。例如但不限於,結構或功能元件可根據本發明重新佈置。類似地,根據本發明之原理可應用至即使本文中沒有具體地詳細描述但仍在本發明之範疇內的其他實例。
100‧‧‧計算系統
110‧‧‧主機
120‧‧‧儲存裝置
130‧‧‧非揮發性記憶體(NVM)控制器
132‧‧‧接收模組
134‧‧‧資料重建構器
135‧‧‧互斥或模組
136‧‧‧上下文ID緩衝器
138‧‧‧重建構ID緩衝器
140‧‧‧DRAM緩衝器
141‧‧‧揮發性記憶體塊
142‧‧‧揮發性記憶體塊
143‧‧‧揮發性記憶體塊
144‧‧‧揮發性記憶體塊
145‧‧‧揮發性記憶體塊
146‧‧‧獨立磁碟冗餘陣列(RAID)條帶
148‧‧‧獨立磁碟冗餘陣列(RAID)緩衝器
150‧‧‧非揮發性(NV)半導體記憶體/獨立磁碟冗餘陣列(RAID)條帶上下文
151‧‧‧獨立磁碟冗餘陣列(RAID)條帶上下文
152‧‧‧獨立磁碟冗餘陣列(RAID)條帶上下文
153‧‧‧獨立磁碟冗餘陣列(RAID)條帶上下文
160‧‧‧儲存元件
170‧‧‧儲存元件
180‧‧‧儲存元件
190‧‧‧儲存元件
231‧‧‧接收模組
232‧‧‧互斥或模組
233‧‧‧互斥或模組
234‧‧‧互斥或模組
235‧‧‧互斥或模組
236‧‧‧上下文ID緩衝器/上下文識別符同位緩衝器
237‧‧‧上下文ID緩衝器/上下文識別符同位緩衝器
238‧‧‧上下文ID緩衝器/上下文識別符同位緩衝器
239‧‧‧上下文ID緩衝器/上下文識別符同位緩衝器
250‧‧‧列
251‧‧‧列
253‧‧‧列
257‧‧‧列
258‧‧‧列
266‧‧‧列
700‧‧‧將資料寫入至NV記憶體且具有獨立磁碟冗餘陣列(RAID)保護之方法
800‧‧‧自NV記憶體1讀取資料且具有獨立磁碟冗餘陣列(RAID)保護的方法
820‧‧‧步驟
840‧‧‧步驟
C_ID‧‧‧新上下文識別符
D1至D4‧‧‧資料頁面
P1至P4‧‧‧部分
Q1至Q4‧‧‧部分
R1至R4‧‧‧部分
S1至S4‧‧‧部分
S710‧‧‧步驟
S720‧‧‧步驟
S730‧‧‧步驟
S740‧‧‧步驟
S750‧‧‧步驟
S760‧‧‧步驟
S770‧‧‧步驟
S780‧‧‧步驟
S790‧‧‧步驟
S805‧‧‧步驟
S810‧‧‧步驟
S815‧‧‧步驟
S820‧‧‧步驟
S830‧‧‧步驟
S835‧‧‧步驟
S845‧‧‧步驟
S850‧‧‧步驟
S855‧‧‧步驟
S860‧‧‧步驟
X1至X4‧‧‧內容
Y‧‧‧資料頁面
在結合附圖考慮以下詳細描述後,前述及其他目標及優勢將是顯而易見的,在所有附圖中相同參考標號是指相同部件,且在附圖中:
圖1展示根據本發明之一或多個實施例之固態磁碟機(SSD)的示意性圖示;
圖2A說明根據本發明之實施例的將資料自主機裝置寫入至圖1之SSD之技術;
圖2B說明根據本發明之實施例的當寫入資料時對同位緩衝器之示範性計算;
圖3A說明根據本發明之實施例的在未偵測到錯誤之情況下將資料自圖1中之SSD讀取回至主機裝置之技術;
圖3B說明根據本發明之實施例的在偵測到不可恢復之錯誤的情況下將資料自圖1中之SSD讀取回至主機裝置之技術;
圖3C說明根據本發明之實施例的在偵測到不可恢復之錯誤且控制器已開始RAID恢復程序之情況下將資料自圖1中之SSD讀取回至主機裝置之技術;
圖4A至圖4E說明根據本發明之實施例的在圖3C之讀取程序期間資料恢復之各個階段;
圖5A是根據本發明之實施例的將資料寫入至圖1之SSD之方法步驟的流程圖;
圖5B是根據本發明之實施例的自圖1之SSD非同步讀取資料之方法步驟的流程圖;以及
圖6說明根據本發明之實施例的使用多個RAID條帶上下文對多個同時讀取/寫入命令之處理。

Claims (26)

  1. 一種資料儲存裝置,其包含: 一非揮發性半導體儲存陣列; 一控制器,其與該非揮發性半導體儲存陣列通信;以及 含有RAID單元之一緩衝器,該等RAID單元經由該控制器與該非揮發性半導體儲存陣列通信; 其中該控制器經組態以: 自一主機裝置接收寫入請求, 將與該等寫入請求相關之第一資料累積在該等RAID單元中, 同時 將含於該等RAID單元中之該第一資料傳送至該非揮發性半導體儲存陣列, 計算含於該等RAID單元中之該第一資料之同位值,每一同位值與每一寫入請求相關, 將該等同位值累積在一上下文識別符緩衝器中,且 使上下文識別符與該等同位值相關聯,且 將該等同位值及該等上下文識別符儲存在該非揮發性半導體儲存陣列中。
  2. 如請求項1之資料儲存裝置,其中該第一資料包含經劃分成第一資料部分之第一資料頁面。
  3. 如請求項2之資料儲存裝置,其中使用該等第一資料部分計算該等同位值。
  4. 如請求項3之資料儲存裝置,其中該上下文識別符緩衝器使用所有該等第一資料頁面之該等相同第一資料部分計算該等同位值。
  5. 如請求項4之資料儲存裝置,其中藉由執行一邏輯互斥或運算使用含於該上下文識別符緩衝器中之所有該等第一資料頁面之該等相同第一資料部分來計算該同位值。
  6. 如請求項1之資料儲存裝置,其中該控制器經進一步組態以將一識別符分配至含於每一RAID單元中之該第一資料。
  7. 如請求項1之資料儲存裝置,其中該等識別符包含以下各者中之至少一個:一最終旗標、一頁面位元映像及一偏移位元映像。
  8. 如請求項1之資料儲存裝置,其中每一RAID單元中之該第一資料與該識別符一起儲存在該非揮發性半導體儲存陣列中。
  9. 如請求項1之資料儲存裝置,其中該緩衝器是一DRAM緩衝器。
  10. 如請求項1之資料儲存裝置,其中該等RAID單元經實施為RAID 5。
  11. 一種資料儲存裝置,其包含: 一非揮發性半導體儲存陣列,其含有第一資料; 一控制器,其與該非揮發性半導體儲存陣列通信;以及 含有RAID單元之一緩衝器,該等RAID單元經由該控制器與該非揮發性半導體儲存陣列通信; 其中該控制器經組態以: 自一主機裝置接收對儲存於該非揮發性半導體儲存陣列中之一第二資料之一讀取請求; 判定與該所請求之第二資料相關聯之一識別符; 判定該所請求之第二資料是否含有一不可恢復之錯誤; 若該所請求之第二資料含有一不可恢復之錯誤,則累積包括一同位值之第一資料,該第一資料含於與一重建構緩衝器中之該所請求之第二資料相同之識別符相關聯之該非揮發性半導體儲存陣列中; 自該所累積之第一資料及該同位值重建構該所請求之第二資料;以及 經由該等RAID單元將該經重建構之第二資料傳送至該主機裝置。
  12. 如請求項11之資料儲存裝置,其中藉由對該所累積之第一資料及該同位值執行一邏輯互斥或運算來重建構該所請求之第二資料。
  13. 如請求項11之資料儲存裝置,其中該控制器使用一查找表判定該所請求之第二資料在該非揮發性半導體儲存陣列中之位置。
  14. 如請求項11之資料儲存裝置,其中該緩衝器是一DRAM緩衝器。
  15. 如請求項11之資料儲存裝置,其中該等RAID單元經實施為RAID 5。
  16. 一種方法,其包含: 藉由與一非揮發性半導體儲存陣列通信之一控制器自一主機裝置接收一寫入請求; 將與該寫入請求相關之第一資料累積在含於一緩衝器中之RAID單元中,該緩衝器經由該控制器與該非揮發性半導體儲存陣列通信; 同時 將含於該等RAID單元中之該第一資料傳送至該非揮發性半導體儲存陣列, 自含於該等RAID單元中之該第一資料計算同位值,每一同位值與每一寫入請求相關, 將該等同位值累積在一上下文識別符緩衝器中,且 使上下文識別符與該等同位值相關聯,且 將該等同位值及該等上下文識別符儲存在該非揮發性半導體儲存陣列中。
  17. 如請求項16之方法,其中該第一資料包含經劃分成第一資料部分之第一資料頁面。
  18. 如請求項17之方法,其進一步包含: 使用該等第一資料部分計算該等同位值。
  19. 如請求項18之方法,其中該等上下文識別符緩衝器使用所有該等第一資料頁面之該等相同第一資料部分計算該等同位值。
  20. 如請求項19之方法,其中藉由執行一邏輯互斥或運算使用含於該上下文識別符緩衝器中之所有該等第一資料頁面之該等相同第一資料部分來計算該同位值。
  21. 如請求項20之方法,其進一步包含將一識別符分配至含於每一RAID單元中之該第一資料。
  22. 一種方法,其包含: 藉由與一非揮發性半導體儲存陣列通信之一控制器自一主機裝置接收對儲存於該非揮發性半導體儲存陣列中之第二資料之一讀取請求; 判定與該所請求之第二資料相關聯之一識別符; 判定該所請求之第二資料是否含有一不可恢復之錯誤; 若該所請求之第二資料含有一不可恢復之錯誤,則累積包括一同位值之第一資料,該第一資料含於與一重建構緩衝器中之該所請求之第二資料相同之識別符相關聯之該非揮發性半導體儲存陣列中; 自該所累積之第一資料及該同位值重建構該所請求之第二資料;以及 經由該等RAID單元將該經重建構之第二資料傳送至該主機裝置。
  23. 如請求項22之方法,其進一步包含: 對該第一資料及該同位值執行一邏輯互斥或運算。
  24. 如請求項22之方法,其中該控制器使用一查找表判定該所請求之第二資料在該非揮發性半導體儲存陣列中之位置。
  25. 一種儲存指令之非暫時性計算機可讀媒體,該等指令在由一處理器執行時致使該處理器執行一種方法,該方法包含: 藉由與一非揮發性半導體儲存陣列通信之一控制器自一主機裝置接收一寫入請求; 將與該寫入請求相關之第一資料累積在含於一緩衝器中之RAID單元中,該緩衝器經由該控制器與該非揮發性半導體儲存陣列通信; 同時 將含於該等RAID單元中之該第一資料傳送至該非揮發性半導體儲存陣列, 自含於該等RAID單元中之該第一資料計算同位值,每一同位值與每一寫入請求相關, 將該等同位值累積在一上下文識別符緩衝器中,且 使上下文識別符與該等同位值相關聯,且 將該等同位值及該等上下文識別符儲存在該非揮發性半導體儲存陣列中。
  26. 一種儲存指令之非暫時性計算機可讀媒體,該等指令在由一處理器執行時致使該處理器執行一種方法,該方法包含: 藉由與一非揮發性半導體儲存陣列通信之一控制器自一主機裝置接收對儲存於該非揮發性半導體儲存陣列中之第二資料之一讀取請求; 判定與該所請求之第二資料相關聯之一識別符; 判定該所請求之第二資料是否含有一不可恢復之錯誤; 若該所請求之第二資料含有一不可恢復之錯誤,則累積包括一同位值之第一資料,該第一資料含於與一重建構緩衝器中之該所請求之第二資料相同之識別符相關聯之該非揮發性半導體儲存陣列中; 自該所累積之第一資料及該同位值重建構該所請求之第二資料;以及 經由該等RAID單元將該經重建構之第二資料傳送至該主機裝置。
TW107128343A 2017-08-23 2018-08-14 資料儲存裝置、資料儲存方法及計算機可讀媒體 TWI686694B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/684,649 2017-08-23
US15/684,649 US10365967B2 (en) 2017-08-23 2017-08-23 On the fly raid parity calculation

Publications (2)

Publication Number Publication Date
TW201923575A true TW201923575A (zh) 2019-06-16
TWI686694B TWI686694B (zh) 2020-03-01

Family

ID=63517657

Family Applications (2)

Application Number Title Priority Date Filing Date
TW107128343A TWI686694B (zh) 2017-08-23 2018-08-14 資料儲存裝置、資料儲存方法及計算機可讀媒體
TW109102860A TWI777127B (zh) 2017-08-23 2018-08-14 資料儲存裝置、資料儲存方法及計算機可讀媒體

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW109102860A TWI777127B (zh) 2017-08-23 2018-08-14 資料儲存裝置、資料儲存方法及計算機可讀媒體

Country Status (4)

Country Link
US (2) US10365967B2 (zh)
EP (1) EP3495955A3 (zh)
CN (2) CN109426583B (zh)
TW (2) TWI686694B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11513891B2 (en) 2020-07-24 2022-11-29 Kioxia Corporation Systems and methods for parity-based failure protection for storage devices

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI656442B (zh) * 2017-11-30 2019-04-11 慧榮科技股份有限公司 用來於一記憶裝置中進行存取控制之方法以及記憶裝置及其控制器
KR20200122407A (ko) 2018-03-16 2020-10-27 마이크론 테크놀로지, 인크. Nand 데이터 배치 스키마
US11635894B2 (en) 2018-03-16 2023-04-25 Micron Technology, Inc. Clustered parity for NAND data placement schema
US10776200B2 (en) * 2018-06-27 2020-09-15 Intel Corporation XOR parity management on a physically addressable solid state drive
US10977115B2 (en) * 2018-10-12 2021-04-13 Micron Technology, Inc. NAND parity information techniques for systems with limited RAM
US10831407B2 (en) * 2019-01-31 2020-11-10 EMC IP Holding Company LLC Write flow offloading to raid array storage enclosure
US11204716B2 (en) 2019-01-31 2021-12-21 EMC IP Holding Company LLC Compression offloading to RAID array storage enclosure
TWI718519B (zh) * 2019-04-09 2021-02-11 喬鼎資訊股份有限公司 資料儲存系統及其管理方法
US11055188B2 (en) 2019-04-12 2021-07-06 EMC IP Holding Company LLC Offloading error processing to raid array storage enclosure
KR20210013387A (ko) 2019-07-24 2021-02-04 삼성전자주식회사 메모리 시스템
US11023313B2 (en) * 2019-09-27 2021-06-01 Dell Products L.P. Look-aside RAID controller storage-device-assisted data update system
CN112947847B (zh) * 2019-12-11 2023-12-29 伊姆西Ip控股有限责任公司 用于存储数据的方法、设备和计算机程序产品
CN113129978B (zh) * 2019-12-30 2024-01-26 美光科技公司 使用奇偶校验增加存储器存取并行性
US11520659B2 (en) 2020-01-13 2022-12-06 International Business Machines Corporation Refresh-hiding memory system staggered refresh
US11200119B2 (en) 2020-01-13 2021-12-14 International Business Machines Corporation Low latency availability in degraded redundant array of independent memory
US11157363B2 (en) * 2020-03-25 2021-10-26 Dell Products L.P. Distributed raid storage-device-assisted data rebuild system
CN111897495B (zh) * 2020-07-28 2023-07-04 深圳忆联信息系统有限公司 提高ssd写性能的实现方法、装置、计算机设备及存储介质
CN111679934B (zh) * 2020-08-13 2020-11-17 杭州阿姆科技有限公司 基于raid信息的纠错方法、计算机可读存储介质及处理器
US11847324B2 (en) * 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
CN117280315A (zh) 2021-05-27 2023-12-22 美光科技公司 存储体保护
WO2023028820A1 (en) * 2021-08-31 2023-03-09 Yangtze Memory Technologies Co., Ltd. System and apparatus for redundant array of independent disks striping against programming failures
US11934270B2 (en) 2022-06-02 2024-03-19 Micron Technology, Inc. Write command execution for data protection and recovery schemes
US11960776B2 (en) 2022-06-02 2024-04-16 Micron Technology, Inc. Data protection for stacks of memory dice
WO2024108349A1 (zh) * 2022-11-21 2024-05-30 长江存储科技有限责任公司 存储系统和存储系统的操作方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6018778A (en) 1996-05-03 2000-01-25 Netcell Corporation Disk array controller for reading/writing striped data using a single address counter for synchronously transferring data between data ports and buffer memory
US6161165A (en) 1996-11-14 2000-12-12 Emc Corporation High performance data path with XOR on the fly
US6151641A (en) 1997-09-30 2000-11-21 Lsi Logic Corporation DMA controller of a RAID storage controller with integrated XOR parity computation capability adapted to compute parity in parallel with the transfer of data segments
US6904498B2 (en) 2002-10-08 2005-06-07 Netcell Corp. Raid controller disk write mask
TWI235997B (en) 2002-12-12 2005-07-11 Via Tech Inc Examining method of array configuration for system of multiple disk arrays
US7376147B2 (en) 2003-12-18 2008-05-20 Intel Corporation Adaptor supporting different protocols
US7913148B2 (en) 2004-03-12 2011-03-22 Nvidia Corporation Disk controller methods and apparatus with improved striping, redundancy operations and interfaces
US8521955B2 (en) * 2005-09-13 2013-08-27 Lsi Corporation Aligned data storage for network attached media streaming systems
TW200723093A (en) 2005-12-14 2007-06-16 Inventec Corp Method for establishing mirror storage equipment and synchronously storing equipment update data
US7673077B2 (en) 2006-03-09 2010-03-02 Sun Microsystems, Inc. Multi-protocol iSCSI device discovery for on demand device enumeration
GB0610335D0 (en) 2006-05-24 2006-07-05 Oxford Semiconductor Ltd Redundant storage of data on an array of storage devices
US8020074B2 (en) * 2007-08-24 2011-09-13 Datadirect Networks, Inc. Method for auto-correction of errors in a RAID memory system
US8402217B2 (en) 2009-09-15 2013-03-19 Marvell International Ltd. Implementing RAID in solid state memory
KR101732030B1 (ko) 2010-12-22 2017-05-04 삼성전자주식회사 데이터 저장 장치 및 그것의 동작 방법
US9058288B2 (en) 2011-04-03 2015-06-16 Apple Inc. Redundant storage in non-volatile memory by storing redundancy information in volatile memory
US8327185B1 (en) * 2012-03-23 2012-12-04 DSSD, Inc. Method and system for multi-dimensional raid
CN103577111B (zh) * 2012-07-23 2017-05-31 上海宝存信息科技有限公司 基于非易失性存储器的动态独立冗余阵列存储系统及方法
US10528272B2 (en) * 2015-02-20 2020-01-07 International Business Machines Corporation RAID array systems and operations using mapping information

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11513891B2 (en) 2020-07-24 2022-11-29 Kioxia Corporation Systems and methods for parity-based failure protection for storage devices
TWI799915B (zh) * 2020-07-24 2023-04-21 日商鎧俠股份有限公司 用於針對儲存裝置之基於奇偶校驗的故障保護的系統、方法和非暫時性電腦可讀取媒體

Also Published As

Publication number Publication date
US20190347161A1 (en) 2019-11-14
TWI777127B (zh) 2022-09-11
EP3495955A3 (en) 2019-07-10
CN115269259A (zh) 2022-11-01
EP3495955A2 (en) 2019-06-12
US10365967B2 (en) 2019-07-30
US10922172B2 (en) 2021-02-16
TWI686694B (zh) 2020-03-01
US20190065306A1 (en) 2019-02-28
TW202018505A (zh) 2020-05-16
CN109426583B (zh) 2022-08-23
CN109426583A (zh) 2019-03-05

Similar Documents

Publication Publication Date Title
TWI686694B (zh) 資料儲存裝置、資料儲存方法及計算機可讀媒體
JP6053078B2 (ja) 物理ページ、論理ページ、およびコードワードの対応
US9304685B2 (en) Storage array system and non-transitory recording medium storing control program
TWI428737B (zh) 半導體記憶體裝置
US9058288B2 (en) Redundant storage in non-volatile memory by storing redundancy information in volatile memory
US9292228B2 (en) Selective raid protection for cache memory
US10642502B2 (en) System and method for prediction of read commands to non-sequential data
JP2014130587A (ja) 冗長アレイによる不揮発性メモリのプログラム障害回復
EP2483785A2 (en) Stripe-based memory operation
JP2014507717A (ja) より高いレベルの冗長な情報の計算
US9898365B2 (en) Global error correction
US9063869B2 (en) Method and system for storing and rebuilding data
CN102521068A (zh) 一种固态盘阵列的重建方法
US12007840B2 (en) Storage controller, operation method thereof
EP3783489B1 (en) Memory controller with high data reliability, a memory system having the same, and an operation method of the memory controller
US10725781B1 (en) System and method for chain prediction of multiple read commands
US11288183B2 (en) Operating method of memory system and host recovering data with write error
US11550658B1 (en) Storage system and method for storing logical-to-physical address table entries in a codeword in volatile memory
US9106260B2 (en) Parity data management for a memory architecture
US11487609B2 (en) Separating parity data from host data in a memory sub-system
US10719445B1 (en) System and method for scaling a historical pattern matching data structure in a memory device
US20240232009A1 (en) Systems and methods of distributed parity calculation offloading