TWI810871B - 交錯式raid編碼法 - Google Patents
交錯式raid編碼法 Download PDFInfo
- Publication number
- TWI810871B TWI810871B TW111111958A TW111111958A TWI810871B TW I810871 B TWI810871 B TW I810871B TW 111111958 A TW111111958 A TW 111111958A TW 111111958 A TW111111958 A TW 111111958A TW I810871 B TWI810871 B TW I810871B
- Authority
- TW
- Taiwan
- Prior art keywords
- check code
- calculate
- tuples
- write
- address
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 22
- 238000012795 verification Methods 0.000 description 2
Images
Landscapes
- Error Detection And Correction (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
NAND快閃記憶體所用的交錯式RAID編碼法包括初始化地址及寫次數,等一個主機寫32K位元組到該NAND快閃記憶體,同步執行二子程序。在第一子程序,判斷寫次數(從0開始)是偶數或奇數,並判斷字元線是偶數或奇數。若寫次數及字元線都是偶數或都是奇數,則用前16K位元組計算校驗碼0並用後16K元組計算校驗碼1,否則用前16K元組計算校驗碼1並用後16K元組計算校驗碼0。在第二子程序,把全部資料寫入該NAND快閃記憶體的該地址並把寫次數加1。然後,用寫次數決定下一個地址供下回合的第二子程序之用。然後,判斷寫次數是否為2n-1。若寫次數非2n-1,則回到等主機把資料寫入該NAND快閃記憶體的步驟。若寫次數是2n-1,則把前16K位元組的校驗碼0及後16K元組的校驗碼1寫到該NAND快閃記憶體的該地址。然後,把寫次數加1,用寫次數重新計算地址,並回到等主機把資料寫入該NAND快閃記憶體的步驟。
Description
本發明關於記憶體的資料的保護,尤其關於一種交錯式RAID編碼法,其控制SBLK的數量並避免字元線(“Word Line”:“WL”)短路(“short”)的問題。
為保護記憶體的資料,原只設計每頁(“Page”)的ECC(“Error-Correcting Code”),但隨著製程微縮,且結構由平面轉向立體,只用ECC不足以保護資料。最終,有人參考既有的硬碟的設計,提出RAID(“Redundant Array of Independent Disks”),也有人稱之為RAIN(“Redundant Array of Independent NAND”)。
RAID是一種保護資料的方式,用多儲存校驗碼(“Parity”)還原遺失的資料。保護的通則是(2n-1):1。但7:1的成本過高,故不常見此比例。常見的比例是15:1或31:1。這16或32塊(“Block”)被稱為RAID block(“RBLK”),可能包含數個stripe block(“SBLK”)。
如表1所示,31份有效資料,多儲存1份冗餘資料,可容許遺失32份資料中的一份資料。在表1中,”P0”代表”Plane
0”,”P1”代表”Plane 1”。
隨NAND快閃記憶體演進,現在一個晶粒(“Die”:“CE”)所囊括的空間越來越大,相同容量的記憶體所需的晶粒的量愈來愈少。為避免浪費太多使用者空間,最佳狀況是維持31:1。因此,比同時用好幾個SBLK維持31:1,這情況會導致FTL管理不易,GC增加難度。
目前,在存取NAND快閃記憶體時,為了保證存取到最大頻寬,經常會定義存取單位SBLK為CH*CE*PL,在這個存取單位下,只要以此單位做存取,就保證每次存取用這個單位能達到最大頻寬,並保證主機存取的效能。
參考圖2,以下將描述一般RAID編碼法。
在S10,初始化多個變數。在此,設CH=0,CE=0,page=0,寫次數(“write count”)=0,並把校驗碼0(“parity 0”)及校驗碼1(“parity 1”)都寫為0。然後,到S12。
在S12,等一個主機把資料寫入該NAND快閃記憶體。該NAND快閃記憶體收到32K位元組後,到S14。
在S14,分派資料。把一部分資料(前16K位元組)送到S16,把其餘資料(後16K位元組)送到S18,並把全部資料(32K位元組)送到S20。
在S16,計算校驗碼0。
在S18,計算校驗碼1。
在S20,寫全部資料到該地址ch/ce/page,單位是NVML(32K位元組),並把寫次數加1。然後,到S22。
在S22,用寫次數決定下一個地址ch/ce/page,供下回合的S20或S26所用。然後,到S24。
在S24,判斷寫次數是否2n-1(例如25-1),亦即是否第2n
筆NVML。若是,則到S26。若否,則回到S12。
在S26,把在S16與S18所算資料寫入該地址ch/ce/page。然後,到S28。
在S28,用寫次數重新計算該地址ch/ce/page,並清校驗碼0及校驗碼1,就是把校驗碼0及校驗碼1都寫為0。然後,回到S12。
然而,前述之NAND結構3D化導致若干問題,例如字元線短路。這些問題使習知的做法難順利進行。
有鑑於上述習知技藝之問題,本發明之目的是提供一種NAND快閃記憶體所用的交錯式RAID編碼法,其控制SBLK數量,並避免字元線短路的問題。
為達成上述目的,該交錯式RAID編碼法包括包括初始化地址及寫次數,等一個主機把32K位元組的資料寫入該NAND快閃記憶體,同步執行二子程序。在第一子程序,判斷寫次數是偶數或奇數,並判斷字元線是偶數或奇數。若寫次數及字元線都是偶數或都是奇數,則用前16K位元組計算校驗碼0並用後16K元組計算校驗碼1,否則用前16K元組計算校驗碼1並用後16K元組計算校驗碼0。在第二子程序,寫全部資料到該NAND快閃記憶體的該地址並把寫次數加1,用寫次數決定下一個地址供下回合的第二子程序之用,判斷寫次數是否2n-1。若寫次數非2n-1,則回到等主機把資料寫入該NAND快閃記憶體的步驟。若寫次數是2n-1,則把前16K位元組的校驗碼0及後16K元組的校驗碼1寫入該地址。然後,把寫次數加1,用寫次數重新計算該地址,並回到等該主機把資料寫入該NAND快閃記憶體的步驟。
S10:初始化變數
S12:主機寫32K位元組
S14:分派資料
S16:計算校驗碼0
S18:計算校驗碼1
S20:寫全部資料並把寫次數加1
S22:用寫次數決定下一個地址
S24:寫次數是否2n-1
S26:把校驗碼寫入該地址
S28:用寫次數重新計算該地址
S30:寫次數是否偶數
S32:字元線是否偶數
S34:字元線是否奇數
S36:用前16K元組計算校驗碼0
S38:用後16K元組計算校驗碼1
S40:用前16K元組計算校驗碼1
S42:用後16K元組計算校驗碼0
〔圖1〕是本發明的較佳實施例的交錯式RAID編碼法的流程圖。
〔圖2〕是習知的RAID編碼法。
如圖1所示,本發明的較佳實施例的交錯式RAID編碼法包括2部分。第一部分是以最佳方式(以NVML為單位)把資料寫入RAID。第二部分是解決方法一所帶來的字元線短路的問題。
在減少每一個RBLK所含SBLK的情況下,增加一群WL,並在同個SBLK內操作多於1個字元線/頁,使RAID達到較佳比例31:1。
本方法的交錯式RAID編碼法可控制SBLK數量,避免字元線短路的問題,又不須上層提供操作單一頁,並透過簡單的通用公式可在每一個NVML個別算出本次應位於哪一個RBLK的哪一頁(“pagc”)。
在S10,初始化多個變數。在此,設CH=0,CE=0,page=0,寫次數=0,並清校驗碼0及校驗碼1,就是把校驗碼0及校驗碼1都寫為0。然後,到S12。
在S12,等一個主機把32K位元組的資料寫入該NAND
快閃記憶體。然後,到S14。
在S14,分派資料。然後,分成兩路,其一到S20,其二到S30。
在S30,判斷寫次數是否偶數。若是,則到S32。若否,則到S34。
在S32,判斷字元線是否偶數。若字元線是偶數,則分為兩路,其一到S36,其二到S38。若字元線是奇數,則分為兩路,其一到S40,其二到S42。
在S34,判斷字元線是否奇數。若字元線是奇數,則分為兩路,其一到S36,其二到S38。若字元線是偶數,則分為兩路,其一到S40,其二到S42。
在S36,用前16K元組計算校驗碼0。
在S38,用後16K元組計算校驗碼1。
可同時或先後執行S36及S38。不論如何,須在S26以前執行S36及S38。
在S40,用前16K元組計算校驗碼1。
在S42,用後16K元組計算校驗碼0。
可同時或先後執行S40及S42。不論如何,須在S26以先執行S40及S42。
在S20,寫全部資料到該NAND快閃記憶體的該地址ch/ce/page,單位是NVML(32K位元組),並把寫次數(“write count”)加1。然後,到S22。
在S22,用寫次數決定下一個地址ch/ce/page,以便在下回合的S20使用。然後,到S24。
在S24,判斷寫次數是否2n-1(例如25-1=31),就是判斷是否為第2n(例如32)筆NVML。若是,則到S26。若,否則回
到S12。
在S26,把在S36與S38所算資料或在S40與S42所算資料寫入該地址ch/ce/page。然後,到S28。
在S28,用寫次數重新計算該地址ch/ce/page,並清校驗碼0及校驗碼1,就是把校驗碼0及校驗碼1都寫為0。然後,回到S12。
本發明的交錯式RAID編碼法呈現若干優點。其一,RBLK只須用等量或較少的SBLK。其二,無字元線短路的問題。其三,可用NVML(2 plane pages)為單位寫入。
以上僅為描述本發明的較佳實施方式,非用以限定本發明的範圍。本技術領域內的一般技術人員根據上述實施例所作的均等變化,以及本領域內技術人員熟知的改變,仍在本發明的範圍內。
S10:初始化變數
S12:等主機寫32K位元組
S14:分派資料
S20:寫全部資料並把寫次數加1
S22:用寫次數決定下一個地址
S24:寫次數是否2n-1
S26:把校驗碼寫入該地址
S28:用寫次數重新計算該地址
S30:寫次數是否偶數
S32:字元線是否偶數
S34:字元線是否奇數
S36:用前16K元組計算校驗碼0
S38:用後16K元組計算校驗碼1
S40:用前16K元組計算校驗碼1
S42:用後16K元組計算校驗碼0
Claims (6)
- 一種交錯式RAID編碼法,包括以下步驟:初始化一個地址(S10);初始化一個寫次數(S10);清校驗碼0及校驗碼1(S10)等一個主機把32K位元組的資料寫入該NAND快閃記憶體(S12);同步執行第一子程序(S30)及第二子程序(S20);其中該第一子程序包括以下步驟:判斷寫次數是偶數或奇數(S30);判斷字元線是偶數或奇數(S32,S34);若寫次數及字元線都是偶數或都是奇數,則用前16K位元組計算校驗碼0(S36),並用後16K元組計算校驗碼1(S38);若否,則用前16K元組計算校驗碼1(S40),並用後16K元組計算校驗碼0(S42);其中該第二子程序包括以下步驟:寫全部資料到該地址,並把寫次數加1(S20);用寫次數決定下一個地址,供下回合的第二子程序之用;判斷寫次數是否為2n-1;若寫次數非2n-1,則回到等該主機寫32K位元組到該NAND快閃記憶體的步驟(S12); 若寫次數是2n-1,則把前16K位元組的校驗碼0及後16K元組的校驗碼1寫入該地址;把寫次數加1,用寫次數重新計算該地址,並清奇偶校驗碼為0(S28);回到等該主機把資料寫入該NAND快閃記憶體的步驟(S12)。
- 如請求項1所述之之交錯式RAID編碼法,其中該第一子程序包括以下步驟:判斷寫次數是否偶數(S30);若寫次數是偶數,則判斷字元線是否偶數(S32);若字元線是偶數,則用前16K元組計算校驗碼0(S36)並用後16K元組計算校驗碼1(S38),若字元線是奇數,則用前16K元組計算校驗碼1(S40)及並用後16K元組計算校驗碼0(S42);若寫次數是奇數,則判斷字元線是否奇數;若字元線是奇數,則用前16K元組計算校驗碼0(S36)並用後16K元組計算校驗碼1(S38);若字元線是偶數,則用前16K元組計算校驗碼1(S40)並用後16K元組計算校驗碼0(S42)。
- 如請求項1所述之交錯式RAID編碼法,其中該初始化一個地址的步驟包括設CH=0,CE=0,page=0。
- 如請求項1所述之交錯式RAID編碼法,其中n是不小於4的正整數。
- 如請求項1所述之交錯式RAID編碼法,其中該第一子程序包括同步用前16K元組計算校驗碼0(S36)並用後16K元組計算校驗碼1(S38)。
- 如請求項1所述之交錯式RAID編碼法,其中該第一子程序包括同步用前16K元組計算校驗碼1(S40)並用後16K元組計算校驗碼0(S42)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111111958A TWI810871B (zh) | 2022-03-29 | 2022-03-29 | 交錯式raid編碼法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111111958A TWI810871B (zh) | 2022-03-29 | 2022-03-29 | 交錯式raid編碼法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI810871B true TWI810871B (zh) | 2023-08-01 |
TW202338607A TW202338607A (zh) | 2023-10-01 |
Family
ID=88585511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111111958A TWI810871B (zh) | 2022-03-29 | 2022-03-29 | 交錯式raid編碼法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI810871B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070245083A1 (en) * | 2006-04-04 | 2007-10-18 | Margolus Norman H | Erasure Coding Technique For Scalable And Fault Tolerant Storage System |
US9003264B1 (en) * | 2012-12-31 | 2015-04-07 | Sandisk Enterprise Ip Llc | Systems, methods, and devices for multi-dimensional flash RAID data protection |
TW202145013A (zh) * | 2015-07-02 | 2021-12-01 | 美商英特爾股份有限公司 | 高速互連符號流前向錯誤更正設備、機器可讀儲存媒體、及方法 |
US20220083657A1 (en) * | 2019-11-22 | 2022-03-17 | Pure Storage, Inc. | Independent Security Threat Detection and Remediation by Storage Systems in a Synchronous Replication Arrangement |
-
2022
- 2022-03-29 TW TW111111958A patent/TWI810871B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070245083A1 (en) * | 2006-04-04 | 2007-10-18 | Margolus Norman H | Erasure Coding Technique For Scalable And Fault Tolerant Storage System |
US9003264B1 (en) * | 2012-12-31 | 2015-04-07 | Sandisk Enterprise Ip Llc | Systems, methods, and devices for multi-dimensional flash RAID data protection |
TW202145013A (zh) * | 2015-07-02 | 2021-12-01 | 美商英特爾股份有限公司 | 高速互連符號流前向錯誤更正設備、機器可讀儲存媒體、及方法 |
US20220083657A1 (en) * | 2019-11-22 | 2022-03-17 | Pure Storage, Inc. | Independent Security Threat Detection and Remediation by Storage Systems in a Synchronous Replication Arrangement |
Also Published As
Publication number | Publication date |
---|---|
TW202338607A (zh) | 2023-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10997065B2 (en) | Memory system and operating method thereof | |
EP3607449B1 (en) | Garbage collection | |
US10140041B1 (en) | Mapped RAID (redundant array of independent disks) in a data storage system with RAID extent sub-groups that are used to perform drive extent allocation and data striping for sequential data accesses to a storage object | |
US8397023B2 (en) | System and method for handling IO to drives in a memory constrained environment | |
US10222990B2 (en) | Optimistic read operation | |
JP5823875B2 (ja) | 固体メモリフォーマッティング | |
US8463992B2 (en) | System and method for handling IO to drives in a raid system based on strip size | |
US9542101B2 (en) | System and methods for performing embedded full-stripe write operations to a data volume with data elements distributed across multiple modules | |
US20180203631A1 (en) | Storage system | |
CN111538676B (zh) | 数据储存装置及其数据存取方法 | |
JP2015510213A (ja) | 物理ページ、論理ページ、およびコードワードの対応 | |
US20160283319A1 (en) | Data storage device and encoding method thereof | |
US20090172244A1 (en) | Hierarchical secondary raid stripe mapping | |
CN112463647A (zh) | 使用散列来减小前向映射表的大小 | |
CN111857572B (zh) | Tlc固态硬盘的数据写入方法、装置、设备及存储介质 | |
CN111752852A (zh) | 数据存储装置及数据存储装置的操作方法 | |
CN114741330A (zh) | 储存装置、快闪存储器控制器及其控制方法 | |
US8533549B2 (en) | Memory system and computer system | |
TWI810871B (zh) | 交錯式raid編碼法 | |
CN114974366A (zh) | 储存装置、快闪存储器控制器及其控制方法 | |
CN113628655A (zh) | 用以存取闪存模块的方法、闪存控制器与电子装置 | |
US11934264B2 (en) | ECC parity biasing for Key-Value data storage devices | |
US10783034B2 (en) | Memory system and control method | |
CN112445422A (zh) | 存储器控制器、存储装置以及存储器控制器的操作方法 | |
CN114415968B (zh) | 存储系统及其数据写入方法 |