TWI500036B - 非揮發性儲存裝置及其控制方法 - Google Patents
非揮發性儲存裝置及其控制方法 Download PDFInfo
- Publication number
- TWI500036B TWI500036B TW098120181A TW98120181A TWI500036B TW I500036 B TWI500036 B TW I500036B TW 098120181 A TW098120181 A TW 098120181A TW 98120181 A TW98120181 A TW 98120181A TW I500036 B TWI500036 B TW I500036B
- Authority
- TW
- Taiwan
- Prior art keywords
- correction code
- data
- user data
- control unit
- code
- Prior art date
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Description
本發明涉及一種儲存裝置及其控制方法,尤其涉及一種非揮發性儲存裝置及其控制方法。
隨著半導體制程的進步,快閃記憶體的儲存密度越來越高,單位記憶細胞可儲存的位數越來越多,使得快閃記憶體晶片儲存資料的容量越來越大。然而,快閃記憶體隨著容量的加大,資料大小的管理單位也將有所不同。
習知一般快閃記憶體的單位記憶頁容量為2KB(Byte位元組)加上冗餘位元(spare area bit),如第1A圖、第1B圖所示。第1A圖中,記憶頁中包括四個512位元組的記憶區段(sector)S0、S1、S2、S3,各記憶區段中分別儲存資料D0、D1、D2、D3,而冗餘區域中為存有根據資料D0、D1、D2、D3所產生的ECC修復碼E0、E1、E2、E3。而第1B圖中,記憶頁中也是包括四個512位元組的記憶區段S0、S1、S2、S3,各記憶區段中分別儲存資料D0、D1、D2、D3,不同的是,根據資料D0、D1、D2、D3所產生的ECC修復碼E0、E1、E2、E3為分別接著紀錄在記憶區段S0、S1、S2、S3後面的位置。
在資料讀取時,如讀取D0,同時也須將E0讀取出來,以便進行資料D0的錯誤偵測與修復,以確保輸出正確的資料。同理,D1、D2、D3的輸出,亦須分別讀取E1、E2、E3來偵測及修復錯
誤位元,以確保輸出資料正確性。也就是分別利用E0、E1、E2、E3來確保D0、D1、D2、D3輸出的正確性。
大容量的快閃記憶體單位記憶頁容量為4KB加上冗餘位,如第2圖所示。每區段的大小變成1024位元組,其中為包括兩個512位元組的資料。而每1024位元組大小的區段資料為提供若干位的ECC碼作資料偵錯及修復。如第2圖,記憶區段S0的資料,包括D0及D1,利用一ECC碼E01來作保護,記憶區段S1的資料,包括D2及D3,利用一ECC碼E23來作保護。
然而,一般系統上所定義的記憶區段大小並未如大容量快閃記憶體變成1024位元組,系統上的一記憶區段仍為512位元組的大小。所以,當系統要求於大容量快閃記憶體中讀取512位元組的資料時,快閃記憶體的控制單元仍須由快閃記憶體中讀出1024位元組及其ECC碼,以檢查1024位元組的資料中是否有錯誤,若有則予以修復,藉此輸出該筆512位元組正確的資料。
如第2圖所示,當系統欲讀取資料D0時,須將S0(D0+D1)中的資料以及由D0與D1產生的ECC碼E01由快閃記憶體中讀取出來,藉此檢查D0有無錯誤資料。若有,則將錯誤位元予以修復,以輸出正確的資料D0。
由上述可發現,若系統欲讀取512位元組的D0時,為了執行ECC來確認資料的正確性,仍需讀取整個1024位元組S0的資料及其ECC碼,無法直接讀取D0的資料。由於欲輸出D0仍須讀取D1及D0和S0的ECC碼E01來執行錯誤偵測修復,將造成錯誤位元偵測修復的時間加長,影響快閃記憶體資訊處理的效能。
有鑑於此,本發明提供一種可加快資料讀取時間的非揮發性儲存裝置及其控制方法。
本發明提供一種非揮發性儲存裝置包含:快閃記憶體及控制單元,且快閃記憶體係包括記憶體陣列及資料緩衝區。控制單元包含錯誤修正單元,錯誤修正單元可根據控制單元所接收的使用者資料產生第一修正碼和第二修正碼,並由控制單元分別儲存使用者資料、第一修正碼和第二修正碼於快閃記憶體。其中,第一修正碼用於檢測使用者資料是否含有錯誤位元,第二修正碼用於檢測及修正使用者資料的錯誤位元。
本發明還提供一種非揮發性儲存裝置的控制方法,包含下列步驟:接收使用者資料,依據所接收的使用者資料,產生第一修正碼和第二修正碼,以及分別儲存使用者資料、第一修正碼和第二修正碼於非揮發性儲存裝置。其中,第一修正碼用於檢測使用者資料是否含有錯誤位元,第二修正碼用於檢測及修正使用者資料的錯誤位元。
採用本發明的非揮發性儲存裝置及其控制方法,當讀取小於快閃記憶體所定義的一個區段資料時,透過額外增加一修復碼確定資料的正確性,從而提升資料的存取速度。
有關本發明的較佳實施例及其功效,茲配合圖式說明如后。
1‧‧‧主機
3‧‧‧非揮發性儲存裝置
31‧‧‧控制單元
311‧‧‧錯誤修正單元
33‧‧‧快閃記憶體
331‧‧‧記憶陣列
333‧‧‧緩衝器
35‧‧‧連接介面
第1A圖、第1B圖:現有技術小容量記憶體儲存資料於記憶區段的示意圖。
第2圖:現有技術大容量記憶體儲存資料於記憶區段的示意圖。
第3圖:本發明具體實施模式中儲存系統的架構示意圖。
第4圖:本發明一較佳實施例儲存資料於記憶區段的示意圖。
第5圖:本發明具體實施模式中使用者資料到快閃記憶體的流程圖。
第6圖:本發明具體實施模式中從快閃記憶體讀取小資料量的流程圖。
第7圖:本發明具體實施模式中從快閃記憶體讀取大資料量的流程圖。
如第3圖所示,非揮發性儲存裝置3包含:連接介面35、控制單元31及快閃記憶體33。連接介面35用以電連接主機1。控制單元31中包含錯誤修復單元311,錯誤修復單元311可根據控制單元31所接收的資料產生第一修正碼及第二修正碼。其中,第一修正碼可為循環冗餘檢驗碼(CRC),第二修正碼可為錯誤修正碼(ECC)。快閃記憶體33包括記憶陣列331及緩衝器333。主機1傳送資料存取命令給儲存裝置3,儲存裝置3的控制單元31透過連接介面35接收命令,然後執行命令。
當控制單元31接收到資料寫入命令時,透過連接介面35由主機端接收使用者資料,而錯誤修復單元311根據使用者資料產生CRC碼及ECC碼,然後控制單元31將使用者資料、CRC碼及ECC碼傳送到快閃記憶體331上的緩衝器333,接著快閃記憶體再將緩衝器333中的資料,以如第4圖所示的資料架構,寫入記憶陣列331中。其中CRC碼為根據每512位元組資料所產生,而ECC碼為根據每1024位元組的區段資料產生,亦可更包括每512位元組資料的CRC碼來產生。
由第4圖中看到,本發明資料儲存模式為每512位元組後紀錄一CRC碼,而每1024位元組的資料提供ECC碼。例如,分別在512位元組數據D0、D1後記錄其CRC碼C0、C1,並將數據D0、D1的修復碼E01記錄在D0、C0、D1、C1之後。藉此,當系統讀
取512位元組大小的資料時,控制單元則可先檢查該512位元組資料與其CRC碼,若無發現錯誤,則可直接輸出該512位元組的資料,而無須讀取整個1024位元組兩個區段的資料與其ECC碼,再以其ECC碼檢查1024位元組資料是否含有錯誤。
而若檢查該512位元組資料的CRC碼發現資料有錯誤,則控制單元31再讀取該1024位元組的記憶區段中的另外512位元組資料及其ECC碼,作錯誤修復的動作。於修復完成後,再輸出該512位元組的正確資料。
而資料寫入及讀取的流程如第5圖、第6圖及第7圖所示。
接著參閱第4圖及第5圖,說明本發明資料寫入方法流程。非揮發性儲存裝置3接收主機1傳來的資料寫入命令,其控制單元31便準備接受主機1傳來的使用者資料Dn。控制單元31將資料Dn暫存於本身的緩衝器中(步驟S101)並根據Dn產生CRC碼Cn(步驟S103),而Cn為接著紀錄在Dn後面(步驟S105)。然後接收下一筆資料D(n+1),將D(n+1)暫存於控制單元31的緩衝器中,並紀錄在Cn後,並根據D(n+1)產生CRC碼C(n+1),再將C(n+1)接著紀錄在D(n+1)後面。
此時,判斷儲存資料是否達到產生ECC碼的條件,亦即若快閃記憶體要求X Bytes的資料需要Y Bits的ECC碼保護,則每X Bytes的資料接收後,即產生一ECC碼保護該X Bytes的使用者資料。(但是若寫入的使用者資料不足XBytes,且後面沒有位址連續的寫入資料,則可根據該筆不足X Bytes的使用者資料來產生ECC碼。)(步驟S107)。當達到產生ECC碼的條件時,控制單元可根據Dn及D(n-1)或Dn、Cn、D(n-1)及C(n-1)來產生ECC碼E(n-1,n)(或是可僅由D(n-1)與C(n-1)來產生ECC碼。)(步驟S109),並將E(n-1,n)接著紀錄在Cn後(步驟S111),以保護Dn及D(n-1)或Dn、Cn、D(n-1)及C(n-1)的資料正確性。然後控制單元31再繼續接收下筆使用者資料,並重複上述流程產生各
筆資料相對應的CRC碼及ECC碼(如第4圖所示D0、C0、D1、C1、E01、D2、C2、D3、C3、E23...)。
當主機1傳送來的資料都已接收並處理完後(步驟S113),或資料尚未接收完,但控制單元31中緩衝器的資料已達到快閃記憶體33使用者資料的單位時(步驟S123),便將處理好的使用者資料(已產生相對應的CRC及ECC碼)傳送到快閃記憶體33的緩衝器333(步驟S115或步驟S125),然後再將該些資料寫入記憶陣列331(步驟S117或步驟S127)(如第4圖所示)。若資料尚未接收完,則控制單元31繼續接收接下來的使用者資料,並進行上述處理程式,以完成資料寫入動作。
接著請參閱第4圖及第6圖,說明由非揮發性儲存裝置3中讀取資料D0,小於ECC所保護的資料大小(D0+D1或D0+C0+D1+C1)的方法。非揮發性儲存裝置3收到主機1傳來讀取資料D0的指令後,控制單元31於記憶陣列331中讀取含有資料D0的記憶頁的資料到快閃記憶體33的緩衝器333中(S201)。當然,承前述,該記憶頁的資料也包括D0的CRC碼C0及ECC碼E01(如第4圖)。接著控制單元31由快閃記憶體33的緩衝器333讀取D0及C0,並暫存於控制單元的緩衝器中(S203)。然後藉由C0檢查D0(步驟S205)是否存有錯誤位元(步驟S207),若沒有發現錯誤位元,則直接輸出D0(步驟S125),而不像現有技術(第2圖)須讀取D0、D1及E01來偵測錯誤以輸出正確的D0,有效加快了資料讀取的速度。
若是CRC檢測發現D0存有錯誤位元,此時再由快閃記憶體33的緩衝器333中讀取D1及E01至控制單元的資料緩衝器(步驟S209)(或從快閃記憶體33內緩衝器中讀取D1、C1和E01到控制單元內的緩衝器中(如果E01是透過計算D0、C0、D1和C1產生)),以執行錯誤位元的偵測及修復並判斷錯誤位元是否可修復(步驟S211)。若可修復,則執行ECC功能修復該錯誤位元(步
驟S213),且於修復後,輸出正確的數據D0(步驟S215)。否則,報告讀取錯誤(步驟S127)。
接著請參閱第4圖及第7圖,說明由非揮發性記憶裝置3中讀取資料D0+D1,等於ECC所保護的資料大小的方法。非揮發性記憶裝置3收到主機1傳來讀取資料D0+D1的指令後,控制單元31於記憶陣列331中讀取含有資料D0與D1的記憶頁資料到快閃記憶體的緩衝器333中(步驟S301)。該記憶頁的資料為包括D0、D1及E01(如第4圖)。接著控制單元31由快閃記憶體的緩衝器333讀取D0、D1及E01,並暫存於控制單元31的緩衝器中(步驟S303)。然後根據E01針對D0及D1執行錯誤偵測及修復,執行ECC功能(步驟S305),檢測判斷數據D0,D1是否含有錯誤位元(步驟S307),然後判斷資料中的錯誤位元是否可修復(步驟S309)。若可修復,則修復資料D0,D1的錯誤位元(步驟S311)並於修復後,輸出D0及D1至主機1(步驟S313);否則,報告讀取錯誤。若數據D0,D1不含錯誤位元,則直接輸出數據D0和D1(步驟S313)。
由於大容量的快閃記憶體,單位儲存密度較高,所需的ECC強度也較高。例如,每1024位元組被要求需要24位元的ECC修復能力。而若每512位元組即提供一ECC碼保護其資料的可靠度,由於不能保證錯誤位元將平均分散於兩個512位元組的區段(無法預設512位元組內僅出現12位元的錯誤,有可能發生12位元以上的錯誤),因此這樣將造成每1024位元組所需要的ECC碼位數將增加許多。
假設每512位元組提供16位元的ECC修復能力(實際上採16位元ECC仍有風險,亦即於該512位仍有可能發生16位元以上的錯誤),則每1024位元組共需提供16*13*2=416位元給ECC碼使用。這樣的情形,ECC碼將佔用冗餘空間的許多位元,甚至有可能快閃記憶體的冗餘空間不夠存放這樣大的ECC碼。而本發
明每512位元組利用一CRC碼檢查錯誤位元,則每1024位元組僅需提供4個組給CRC碼使用,再加上1024位元組所需的ECC碼共24*13+8=320位元。
綜上所述,本發明在使用每一組ECC碼保護資料區段長度大於512位元組的快閃記憶體時,可在針對讀寫較小的讀寫單位,亦即讀寫512位元組沒有發生錯誤的情形下,藉由額外增加CRC檢查碼確定資料正確性,而提升存取速度,同時確保適足的錯誤偵測與修復的能力。
惟,以上所述,僅為本發明的具體實施例的詳細說明及圖式而已,並非用以限制本發明,本發明的所有範圍應以下述的申請專利範圍第為準,任何熟悉該項技藝者在本發明的領域內,可輕易思及的變化或修飾皆可涵蓋在以下本案所界定的專利範圍。例如,以上是以快閃記憶體為例進行的說明,但本領域的普通技術人員可輕易想到的是,快閃記憶體為非揮發性記憶體的一種,事實上,本發明也可應用於其他類型的非揮發性記憶體,如EPROM(Erasable Programmable Read Only Memory,可抹除可編程唯讀記憶體)、EEPROM(Electrically Erasable Programmable Read Only Memory,電可抹除可編程唯讀記憶體)、PRAM(Phase-change Random Access Memory,相變化隨機存取記憶體)、MRAM(Magnetic Random Access Memory,磁性隨機存取記憶體)、FRAM(Ferroelectric Random Access Memory,鐵電隨機存取記憶體)等。
S101、S103、S105、S107、S109、S111、S113、S115、S117、S123、S125、S127‧‧‧步驟
Claims (10)
- 一種非揮發性儲存裝置,包含:一快閃記憶體;及一控制單元,包含一錯誤修正單元,該錯誤修正單元根據該控制單元所接收的一使用者資料而產生至少一第一修正碼和至少一第二修正碼,並由該控制單元儲存該使用者資料、該第一修正碼和該第二修正碼於該快閃記憶體;其中,該控制單元讀取該使用者資料時,使用該第一修正碼檢測該使用者資料是否含有一錯誤位元,使用該第二修正碼檢測及修正該使用者資料的該錯誤位元;其中該第一修正碼是依據每一資料大小的該使用者資料而產生,該第二修正碼是依據至少一該資料大小的該使用者資料及該使用者資料對應的該第一修正碼而產生。
- 如申請專利範圍第1項所述的非揮發性儲存裝置,其中該第一修正碼為循環冗餘檢驗碼(CRC),該第二修正碼為錯誤修正碼(ECC)。
- 如申請專利範圍第1項所述的非揮發性儲存裝置,其中該資料大小為512位元組。
- 如申請專利範圍第1項所述的非揮發性儲存裝置,其中該控制單元讀取該使用者資料時,該控制單元讀取該使用者資料及該使用者資料所對應的該第一修正碼,並使用該第一修正碼檢測該使用者資料是否含有該錯誤位元。
- 如申請專利範圍第4項所述的非揮發性儲存裝置,其中若該第一修正碼未檢測出該錯誤位元,該控制單元直接輸出該使用者資料,若該第一修正碼檢測出該錯誤位元,該控制單元使用該第二修正碼修復該錯誤位元。
- 一種存取資料的控制方法,應用於一非揮發性儲存裝置,其中該控制方法包含下列步驟:接收一使用者資料;依據所接收的每一資料大小的該使用者資料,產生一第一修正碼;依據至少一該資料大小的該使用者資料及該使用者資料對應的該第一修正碼,產生一第二修正碼;及儲存該使用者資料、該第一修正碼和該第二修正碼於該非揮發性儲存裝置;其中,該第一修正碼用於檢測該使用者資料是否含有一錯誤位元,該第二修正碼用於檢測及修正該使用者資料的該錯誤位元。
- 如申請專利範圍第6項所述的控制方法,其中該第一修正碼為循環冗餘檢驗碼(CRC),該第二修正碼為錯誤修正碼(ECC)。
- 如申請專利範圍第6項所述的控制方法,其中該資料大小為512位元組。
- 如申請專利範圍第6項所述的控制方法,更包含下列步驟:當讀取該使用者資料時,讀取該使用者資料及該使用者資料所對 應的該第一修正碼;及使用該第一修正碼檢測該使用者資料是否含有錯誤位元。
- 如申請專利範圍第9項所述的控制方法,更包含下列步驟:當該第一修正碼未檢測出該錯誤位元時,直接輸出該使用者資料;及當該第一修正碼檢測出該錯誤位元時,使用該第二修正碼修復該錯誤位元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW098120181A TWI500036B (zh) | 2009-06-17 | 2009-06-17 | 非揮發性儲存裝置及其控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW098120181A TWI500036B (zh) | 2009-06-17 | 2009-06-17 | 非揮發性儲存裝置及其控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201101317A TW201101317A (en) | 2011-01-01 |
TWI500036B true TWI500036B (zh) | 2015-09-11 |
Family
ID=44836983
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW098120181A TWI500036B (zh) | 2009-06-17 | 2009-06-17 | 非揮發性儲存裝置及其控制方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI500036B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI550615B (zh) | 2014-08-28 | 2016-09-21 | 群聯電子股份有限公司 | 資料存取方法、記憶體儲存裝置及記憶體控制電路單元 |
CN105468292B (zh) * | 2014-09-05 | 2019-04-23 | 群联电子股份有限公司 | 数据存取方法、存储器储存装置及存储器控制电路单元 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7409623B2 (en) * | 2004-11-04 | 2008-08-05 | Sigmatel, Inc. | System and method of reading non-volatile computer memory |
US20080320214A1 (en) * | 2003-12-02 | 2008-12-25 | Super Talent Electronics Inc. | Multi-Level Controller with Smart Storage Transfer Manager for Interleaving Multiple Single-Chip Flash Memory Devices |
-
2009
- 2009-06-17 TW TW098120181A patent/TWI500036B/zh active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080320214A1 (en) * | 2003-12-02 | 2008-12-25 | Super Talent Electronics Inc. | Multi-Level Controller with Smart Storage Transfer Manager for Interleaving Multiple Single-Chip Flash Memory Devices |
US7409623B2 (en) * | 2004-11-04 | 2008-08-05 | Sigmatel, Inc. | System and method of reading non-volatile computer memory |
Also Published As
Publication number | Publication date |
---|---|
TW201101317A (en) | 2011-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102487553B1 (ko) | 리페어 가능한 휘발성 메모리를 포함하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법 | |
KR101964207B1 (ko) | 데이터 메모리 디바이스 및 인터페이스 에러 검출 및 처리 논리를 갖는 제어기 | |
TWI442407B (zh) | 在固態儲存系統中之資料回復 | |
TWI527037B (zh) | 資料儲存方法、記憶體控制電路單元與記憶體儲存裝置 | |
US8402217B2 (en) | Implementing RAID in solid state memory | |
JP4734033B2 (ja) | 記憶装置 | |
KR101648531B1 (ko) | 불휘발성 메모리 시스템과 이의 동작 방법 | |
US8756398B2 (en) | Partitioning pages of an electronic memory | |
US10915394B1 (en) | Schemes for protecting data in NVM device using small storage footprint | |
CN101908376B (zh) | 非挥发性存储装置及其控制方法 | |
TWI566252B (zh) | 非揮發性記憶體裝置進行耗損管理之方法 | |
KR20100102925A (ko) | 리드 리클레임 신호를 발생하는 불휘발성 메모리 장치 및 이를 포함하는 메모리 시스템 | |
US8331151B2 (en) | Semiconductor memory including control unit responsive to erase command to determine selection of redundant memory block | |
JP2012137994A (ja) | メモリシステムおよびその制御方法 | |
US20090024787A1 (en) | Data writing method and apparatus | |
JP2010500699A (ja) | メモリデバイス内のセクタごとに許容できるビットエラー | |
CN105005450A (zh) | 数据写入方法、存储器存储装置及存储器控制电路单元 | |
TW201730892A (zh) | 邏輯性移除非揮發性記憶體儲存裝置缺陷頁之裝置及方法 | |
US8966344B2 (en) | Data protecting method, memory controller and memory storage device | |
US9754682B2 (en) | Implementing enhanced performance with read before write to phase change memory | |
JP2010079856A (ja) | 記憶装置およびメモリ制御方法 | |
TWI500036B (zh) | 非揮發性儲存裝置及其控制方法 | |
JP2006221334A (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4582078B2 (ja) | メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
US10922025B2 (en) | Nonvolatile memory bad row management |