TWI472918B - 半導體儲存裝置及其控制方法 - Google Patents
半導體儲存裝置及其控制方法 Download PDFInfo
- Publication number
- TWI472918B TWI472918B TW100146709A TW100146709A TWI472918B TW I472918 B TWI472918 B TW I472918B TW 100146709 A TW100146709 A TW 100146709A TW 100146709 A TW100146709 A TW 100146709A TW I472918 B TWI472918 B TW I472918B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- error correction
- code
- semiconductor memory
- written
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1515—Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
- H03M13/2927—Decoding strategies
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3723—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using means or methods for the initialisation of the decoder
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Description
本文中所描述之實施例大體上係關於半導體儲存裝置及其控制方法。
本申請案係基於且主張來自2010年12月15日申請的日本專利申請案第2010-279074號之優先權的權利,其全部內容以引用之方式併入於本文中。
在使用非揮發性半導體記憶體儲存資訊之半導體儲存裝置中,歸因於老化,在資料中可能發生錯誤。因此,在此半導體儲存裝置中,執行錯誤校正編碼處理以使得甚至在發生資料錯誤時亦可校正錯誤。
專利文件1:日本專利特許公開申請案第2009-211209號
非專利文件1:針對廉價磁碟冗餘陣列(RAID)之案例,UC Berkeley技術報告UCB/CSD-87-391 1987
非專利文件2:用於類RAID系統中之容錯的里德-所羅門編碼教程,Tennessee大學電腦科學系的James S. Plank的技術報告CS-96-332
非專利文件3:D. Patterson、G. Gibson及R. Katz的「A Case for Redundant Arrays of Inexpensive Disks (RAID)」,1988年6月的1988 ACM SIGMOD論文集第109頁至第116頁。
大體上,根據一實施例,半導體儲存裝置包括一非揮發性半導體記憶體、暫時儲存待寫入至該非揮發性半導體記
憶體之寫入資料的一暫時儲存緩衝器。該半導體儲存器包括一編碼處理單元,其將一錯誤校正碼之編碼目標資料分割成兩個或兩個以上經分割之資料,且將藉由執行基於儲存於該暫時儲存緩衝器中之該經分割之資料的一錯誤校正編碼處理而獲取的一錯誤校正碼作為一中間碼寫入至該暫時儲存緩衝器。
當使用一錯誤校正碼校正錯誤時,不僅校正能力而且藉由該校正能力判定之冗餘碼(錯誤校正碼)之量為決定將執行哪一錯誤校正編碼處理的重要因素。特定而言,在儲存器之領域,冗餘資訊之量為最重要之因素,此係因為該量之增加直接導致成本之增加。
大體上,在通常使用之錯誤校正碼(諸如,BCH碼)中,若一半導體記憶體中之冗餘碼及資料之總量為固定的,則有可能藉由增加一錯誤校正單元(藉由增加資料及碼之長度)來增加錯誤校正能力,此係因為即使錯誤以一偏差方式發生,校正錯誤之可能性仍增加。相反地,若該錯誤校正能力為固定的,則因為冗餘碼之量可藉由增加一錯誤校正單元而減小,所以存在在防止半導體記憶體之成本增加之同時維持該錯誤校正能力的可能性。
另一方面,為了處理發生於區塊單元或記憶體晶片中之故障,基於經記錄以便散佈於複數個區塊或複數個記憶體晶片之上的資料來計算一錯誤校正碼可為有效的。當將一NAND記憶體用作一非揮發性半導體記憶體時,按頁之次
序將資料寫入至該NAND記憶體。在此狀況中,若基於經記錄以便散佈於複數個區塊或複數個記憶體晶片之上的資料來計算具有大碼長度之一錯誤校正碼,則可存在具有非寫入區域之大量區塊或其類似者。因此,問題在於半導體記憶體之使用效率降低。
將在下文參考隨附圖式詳細解釋半導體儲存裝置及其控制方法的例示性實施例。本發明不限於以下實施例。
圖1為展示根據第一實施例之半導體儲存裝置100之組態實例的方塊圖。本實施例之半導體儲存裝置(固態磁碟:SSD)100包括以非揮發性方式儲存資料之半導體記憶體。在本實施例中,雖然描述了半導體儲存裝置100為SSD之實例,但本實施例之應用不限於SSD。舉例而言,本實施例可應用於包括以非揮發性方式儲存資料之半導體記憶體及控制器之輔助儲存裝置(諸如,記憶體卡)。
可藉由硬體及軟體中之任一者或其組合來實施每一實施例中之每一功能區塊。因此,將在下文自其功能之觀點來描述每一功能區塊以便清楚地展示區塊可為硬體及軟體中之一者或兩者。此功能實施為硬體或是軟體取決於實際實施例或強加於整個系統上的設計限制。雖然熟習此項技術者可針對每一實際實施例藉由各種方法來實施此等功能,但本發明之範疇包括實施方案之判定。
半導體儲存裝置100經由主機介面3連接至主機裝置(諸如,個人電腦),且充當主機裝置之外部儲存裝置。半導
體儲存裝置100包括控制器(控制單元)1、錯誤檢查及校正(ECC)編碼器/解碼器2、主機介面3、暫時儲存緩衝器4、NAND介面(NAND I/F)5及NAND記憶體6。
主機介面3包括(例如)進階附接技術(ATA)標準之通信介面,且根據控制器1之控制來控制半導體儲存裝置100與主機裝置之間的通信。主機介面3接收自主機裝置傳輸之命令,且當命令請求指定邏輯位址(邏輯區塊定址:LBA)之資料之寫入時將命令(寫入命令)發送至控制器1。此外,當自主機裝置接收請求讀取儲存於NAND記憶體6中之資料的命令時,主機介面3將命令(讀取命令)發送至控制器1。
控制器1執行各種控制,諸如半導體儲存裝置1與主機裝置之間的資料傳送之控制、寫入至NAND記憶體6之資料之控制、及自NAND記憶體6讀取之資料之控制。控制器1包括碼管理單元11,其控制至/自NAND記憶體6之資料之寫入及讀取,且管理錯誤校正碼與寫入至NAND記憶體6之資料之間的對應;及編碼控制單元12,其控制對寫入至NAND記憶體6之資料的錯誤校正編碼處理及對自NAND記憶體6讀取之資料的解碼處理。控制器1管理作為由主機裝置指定之邏輯位址的邏輯位址(LBA)、NAND記憶體6上之儲存位置以及對應於寫入至NAND記憶體6之資料的錯誤校正碼之在NAND記憶體6上的儲存位置之間的對應關係及其類似者。
暫時儲存緩衝器4包括資料區域41及ECC區域42。資料區域41用於暫時儲存將藉由控制器1傳送之資料。ECC區
域42儲存由ECC編碼器/解碼器2產生之錯誤校正碼。暫時儲存緩衝器4經組態為揮發性記憶體,諸如動態隨機存取記憶體(DRAM)或靜態隨機存取記憶體(SRAM)。
錯誤檢查及校正(ECC)編碼器/解碼器2包括編碼器(編碼處理單元)21及解碼器(解碼處理單元)22。編碼器21對儲存於暫時儲存緩衝器4中之資料區域41中的待寫入至NAND記憶體6之資料執行錯誤校正編碼處理。解碼器22基於對應於儲存於NAND記憶體6中之資料之錯誤校正碼而執行對該資料的解碼處理。
NAND介面5為執行NAND記憶體6-0至NAND記憶體6-4(6)與暫時儲存緩衝器4之間的資料傳送之控制的記憶體介面,且包括四個通道(通道ch0至通道ch4)以使得可並行執行讀取及寫入。通道ch0至通道ch4分別控制對應NAND記憶體6-0至NAND記憶體6-4。
NAND記憶體6為半導體記憶體且包括NAND記憶體6-0至NAND記憶體6-4。在NAND記憶體6-0至NAND記憶體6-4當中,NAND記憶體6-0至NAND記憶體6-3為自主機裝置傳送之資料所寫入之資料儲存記憶體,且NAND記憶體6-4為藉由ECC編碼器/解碼器2產生之錯誤校正碼所寫入之碼記憶體。在本實施例中,雖然與資料通道及資料記憶體區域分開地提供碼通道及碼記憶體區域(NAND記憶體6-4),但錯誤校正碼可儲存於NAND記憶體6之資料儲存區域中而不提供專用碼通道及專用碼記憶體區域。
在控制器1之控制下經由主機介面3將自主機裝置傳送之
資料暫時儲存於暫時儲存緩衝器4之資料區域41中。此後,經由NAND介面5自暫時儲存緩衝器4讀取資料且將資料寫入至NAND記憶體6。經由NAND介面5將自NAND記憶體6讀取之資料暫時儲存於暫時儲存緩衝器4之資料區域41中。此後,經由主機介面3自暫時儲存緩衝器4讀取資料且將資料傳送至主機裝置。
NAND記憶體6包括複數個記憶體胞配置成矩陣形式之記憶體胞陣列。個別記憶體胞可為能夠儲存多個值之記憶體胞,且可為每一胞能夠儲存一個值之記憶體胞。假定NAND記憶體6-0至NAND記憶體6-4各自經組態為一個記憶體晶片。此外,每一記憶體晶片(各自為NAND記憶體6-0至NAND記憶體6-4)包括為資料抹除之單元的至少一區塊。一區塊包括至少一頁。一頁包括複數個記憶體胞,且按頁之單元執行至/自NAND記憶體6之資料寫入及讀取。此外,按頁之遞升次序執行至NAND記憶體6之資料寫入。
接著,將描述根據本實施例之錯誤校正編碼處理。圖2及圖3為展示編碼目標資料與錯誤校正碼之間的對應的實例之圖。圖2及圖3展示使用NAND記憶體6之每一區塊的一個頁之資料作為編碼目標資料來產生錯誤校正碼的實例。圖2及圖3展示資料與碼之比率為4:1之實例。圖2及圖3中所展示之區塊7-0為NAND記憶體6-0中之區塊,其中藉由通道ch0來執行資料之讀取及寫入,且類似地,區塊7-1、7-2及7-3為NAND記憶體6-1、6-2及6-3中之區塊,其中分別藉由通道ch1、ch2及ch3來執行資料之讀取及寫入。區
塊8為NAND記憶體6-4中之區塊,NAND記憶體6-4為藉由通道ch4執行資料之讀取及寫入的碼記憶體。
當使用四個區塊中之每一者中的一個頁之資料來產生一錯誤校正碼時,舉例而言,將寫入至區塊7-0至區塊7-3之頁#0的資料用作如圖2中所展示之編碼目標資料201。接著ECC編碼器/解碼器2之編碼器21基於編碼目標資料201產生錯誤校正碼。將所產生之錯誤校正碼作為碼(錯誤校正碼)301寫入至區塊8。類似地,將基於寫入至區塊7-0至區塊7-3之頁#1的編碼目標資料202產生的錯誤校正碼作為碼302寫入至區塊8。圖2展示對於頁#0而言完成了將資料寫入至NAND記憶體6而對於頁#1而言未完成將資料寫入至NAND記憶體6的狀態。
當根據圖2中所展示之編碼目標資料選擇方法(自每一區塊選擇一個頁之資料的方法)選擇資料且使用能夠校正一個頁之資料的錯誤校正碼時,有可能甚至在發生區塊故障時校正資料。具體而言,當使用能夠校正一個頁之資料的錯誤校正碼時,甚至在故障發生於四個區塊中之任一者中時,有可能藉由使用針對每一頁產生之錯誤校正碼來按頁之單元復原故障區塊之資料。可用藉由組合能夠校正比一個頁之資料小的數目個資料之錯誤校正碼來復原一個頁之資料的方法來替換能夠校正一個頁之資料的錯誤校正碼,該方法類似於藉由組合能夠校正一個頁之資料的錯誤校正碼來復原一區塊之資料的方法。
圖3展示類似於圖2的資料與碼之比率為4:1之狀況,但
與圖2不同,自某一區塊(區塊7-2)冗餘地選擇對應於一個錯誤校正碼之編碼目標資料203以藉此產生對應碼303。在此狀況下,當故障發生於區塊7-2中時,有必要校正兩個頁之資料。因此,甚至在碼具有校正一個頁之資料的錯誤校正能力時,校正資料亦可為不可能的,且無法復原一區塊之資料。
自上文來看,當資料與碼之比率相同且錯誤校正能力相同時,為了處理如圖2之實例中的區塊故障,需要自每一區塊選擇對應於一數目個可校正頁或較少個可校正頁的該數目之編碼目標資料。舉例而言,當錯誤校正碼能夠校正兩個頁(如圖3之狀況)時,可自一區塊選擇兩個頁之資料且用作編碼目標資料。
圖4展示當資料與碼之比率為8:1時編碼目標資料與錯誤校正碼之間的對應的實例。在圖4之實例中,類似於圖2之實例,自每一區塊選擇一個頁之資料以作為對應於碼304之編碼目標資料204。在此實例中,因為存在四個資料通道,所以當資料與碼之比率為8:1時,自對應於每一通道之每兩個區塊選擇資料以作為編碼目標資料204。舉例而言,假定藉由通道ch0控制區塊7-0及區塊7-4,藉由通道ch2控制區塊7-1及區塊7-5,藉由通道ch2控制區塊7-2及區塊7-6,且藉由通道ch3控制區塊7-3及區塊7-7。雖然通道與區塊之間的對應不限於此,但考慮到並行讀取及寫入之效率,需要選擇對應於一錯誤信號之編碼目標資料以便不集中於特定通道上。
雖然已藉由復原一區塊之資料的實例描述儲存於NAND記憶體6中之編碼目標資料與錯誤校正碼之間的對應之實例,但資料與碼之比率、校正能力及對應故障模式不限於上文所描述之實例。
接著,將描述根據本實施例記錄錯誤校正碼之中間狀態(中間碼)。圖5為展示根據本實施例之記錄錯誤校正碼之中間狀態的方法的實例之圖。圖5展示資料與碼之比率為8:1之實例。在圖5之實例中,如圖5之下部部分中所展示,類似於圖4之實例,為基於為八個區塊之資料的編碼目標資料205產生的錯誤校正碼之碼305儲存於區塊8中。
另一方面,在圖5之實例中,當基於儲存於區塊7-0至區塊7-7中之資料(頁資料)產生儲存於NAND記憶體6中之錯誤校正碼時,ECC編碼器/解碼器2之編碼器21首先執行基於如圖5之上部部分中所展示之儲存於區塊7-0至區塊7-3中之頁資料9-0至頁資料9-3產生錯誤校正碼的處理。編碼器21將基於頁資料9-0至頁資料9-3之錯誤校正碼產生處理的結果作為錯誤校正碼之中間狀態儲存於暫時儲存緩衝器4之ECC區域42中。此外,編碼器21將基於儲存於區塊7-0至區塊7-3中之下一頁的頁資料之錯誤校正碼產生處理的結果作為錯誤校正碼之中間狀態儲存於暫時儲存緩衝器4之ECC區域42中。
群組經定義成區塊7-0至區塊7-3組成群組A且區塊7-0至區塊7-3組成群組B。編碼器21將群組A之每一區塊中的所有頁之錯誤校正碼之中間狀態儲存於ECC區域42中,且接
著開始基於儲存於群組B之區塊7-4至區塊7-7中之頁資料9-4至頁資料9-7的錯誤校正碼產生處理。當處理儲存於群組B之區塊7-4至區塊7-7中之頁資料9-4至頁資料9-7時,編碼器21讀取儲存於ECC區域42中之對應於相同頁的群組A之中間狀態。接著,編碼器21基於中間狀態及頁資料9-4至頁資料9-7產生待儲存於NAND記憶體6中之錯誤校正碼(亦即,完整之錯誤校正碼)。以此方式,藉由使用群組A之錯誤校正碼之中間狀態作為初始值來輸入群組B之資料及執行錯誤校正編碼處理,產生對應於作為整體之群組A的資料及群組B的資料兩者之錯誤校正碼。關於後續頁,以類似於上文之方式,基於中間狀態及群組B之各別區塊之頁資料順序地產生錯誤校正碼。
在本實施例中,如上文所描述,受到處理之錯誤校正碼之中間狀態儲存於暫時儲存緩衝器4中,且當執行使用剩餘區塊之錯誤校正碼產生處理時讀取(還原)經儲存之中間狀態,藉此可在將資料寫入至群組A之所有區塊(如圖5中所展示)之後執行至群組B之資料寫入。NAND記憶體為需要按頁之次序寫入資料之裝置。當使用散佈於複數個區塊之上的資料產生錯誤校正碼時,在不儲存中間狀態之有關技術之方法中,因為按頁之次序儲存錯誤校正碼之編碼目標資料,所以區塊之使用的效率降低。相比而言,在本實施例中,因為可在將資料寫入至群組A之所以區塊之後執行至群組B之資料寫入,所以與不儲存中間狀態之有關技術之方法相比,有可能改良區塊之使用的效率。
雖然圖5展示關於一完整(最終)錯誤校正碼將中間狀態儲存一次(於暫時儲存緩衝器4中)之實例,但(例如)當基於12個區塊之資料產生完整錯誤校正碼時,中間狀態可被儲存若干次。舉例而言,當使用區塊7-0至區塊7-11之頁#0的資料產生一完整錯誤校正碼時,每四個區塊可分組成三個群組A、B及C。當產生群組C之錯誤校正碼時,圖5之實例中之直至群組B的錯誤校正碼可還原為中間狀態,且可基於中間狀態及群組C之資料產生完整錯誤校正碼。雖然在此實例中,出於方便起見對區塊分組,但分組並非為必需的。可按任何單元產生中間狀態,只要作為產生完整錯誤校正碼之處理期間的中間狀態的涉及輸入完整錯誤校正碼之編碼目標資料的部分的錯誤校正編碼處理之結果被儲存並還原即可。舉例而言,對於圖5之實例中之每一頁,針對其輸入了中間狀態之資料之數目可為不同的。對選擇錯誤校正碼之編碼目標資料之方法沒有限制。舉例而言,可僅基於一區塊之資料來產生錯誤校正碼,且可基於五個區塊之資料來產生錯誤校正碼。
圖6為說明本實施例之效應的圖。圖6展示碼長度(資料+碼)設定為長的以便減小碼的量的實例。具體而言,圖6展示作為實例的資料與碼之比率為100:1(「碼」與「碼及資料」之比率大約為1%)之實例。區塊7-0至區塊7-99為NAND記憶體6中之區塊,其中四個區塊形成一群組,且可藉由群組內之四個通道執行同時寫入以使得藉由通道ch0至通道ch3控制區塊7-0至區塊7-3且藉由通道ch0至通道ch3
控制區塊7-4至區塊7-7。
圖6之左側的圖展示既未儲存亦未還原中間狀態之狀況。該圖展示寫入至NAND記憶體6之資料之狀態,其中一錯誤校正碼已儲存於NAND記憶體6中,且下一錯誤校正碼尚未儲存於NAND記憶體6中。當既未儲存亦未還原中間狀態時,在產生對應於區塊7-0至區塊7-99中之每一者之一個頁的資料的錯誤校正碼之後,將資料寫入至下一頁且執行錯誤校正編碼處理。因此,100個區塊具有非寫入區域之狀態持續長的時間段,且區塊之使用的效率不佳。
圖6之右側的圖展示儲存並還原了中間狀態之狀況。類似於圖6之左側的圖,該圖展示寫入至NAND記憶體6之資料之狀態,其中一錯誤校正碼已儲存於NAND記憶體6中,且下一錯誤校正碼尚未儲存於NAND記憶體6中。在此狀況下,如圖5中所描述,因為按群組之次序將資料寫入至每一群組中之區塊的所有頁,所以僅最後四個區塊具有非寫入區域。如上文,當儲存並還原中間狀態時,區塊之使用的效率得以改良。雖然可藉由增加暫時儲存緩衝器4之容量來實現相同的效應,但當編碼目標資料之資料長度經設定為增加(如在圖6之實例中)時,不希望增加該容量,此係因為需要極大之容量,且成本增加。舉例而言,在圖6之實例中,暫時儲存緩衝器4需要具有100個區塊或100個區塊以上之容量。
接著,將描述根據本實施例之錯誤校正編碼處理及資料寫入操作之程序。圖7為展示根據本實施例之錯誤校正編
碼處理及資料寫入操作之程序的實例的圖。在圖7中,假定每一區塊包括128個頁。
編碼器21之操作展示於圖7之頂部。首先,編碼器21執行錯誤校正編碼處理(碼#0之計算)以用於基於區塊7-0至區塊7-3之頁#0的資料產生碼#0且將彼時的處理結果儲存於暫時儲存緩衝器4之ECC區域42中作為碼#0之中間狀態。隨後,編碼器21執行錯誤校正編碼處理(碼#1之計算)以用於基於區塊7-0至區塊7-3之頁#1的資料產生碼#1且將彼時的處理結果儲存於暫時儲存緩衝器4之ECC區域42中作為碼#1之中間狀態。
此後,以類似於上文之方式,編碼器21按頁之遞升次序執行處理且基於區塊7-0至區塊7-3之頁#127的資料儲存碼#127之中間狀態。隨後,編碼器21自暫時儲存緩衝器4之ECC區域42讀取碼#0之中間狀態,基於讀取的中間狀態及區塊7-4至區塊7-7之頁#0的資料產生完整碼#0,且將完整碼#0儲存於暫時儲存緩衝器4之ECC區域42中。以類似於上文之方式,編碼器21基於按頁之遞升次序讀取之讀取中間狀態及區塊7-4至區塊7-7之資料來產生完整錯誤校正碼,且將完整錯誤校正碼儲存於ECC區域42中。
在圖7之中間,按通道展示NAND介面5之操作。通道ch0將編碼器7-0用來產生碼#0之區塊7-0之資料寫入至NAND記憶體6-0之區塊7-0之頁#0。隨後,通道ch0以類似於上文之方式將用於產生碼#1之區塊7-0的資料寫入至區塊7-0之頁#1。此後,以類似於上文之方式,通道ch0按頁之遞升
次序將資料寫入至區塊7-0且執行寫入直至頁#127。在完成直至區塊7-0之頁#127之資料寫入之後,通道ch0以類似於上文之方式將資料寫入至區塊7-4之頁#0,且隨後按頁之遞升次序執行寫入。
類似於通道ch0,通道ch1至通道ch3按頁之遞升次序執行至區塊7-1至區塊7-3之寫入,且接著按頁之遞升次序執行至區塊7-5至區塊7-7之寫入。儲存於NAND記憶體6之每一區塊中的資料與儲存於暫時儲存緩衝器4中的碼之間的關係展示於圖7之下部部分。
根據控制器1之指令將儲存於暫時儲存緩衝器4之ECC區域42中的完整錯誤校正碼經由NAND介面5儲存於NAND記憶體6-4中。雖然對寫入完整錯誤校正碼的時間沒有限制,但(例如)當完成至NAND記憶體6之對應編碼目標資料之寫入時,寫入錯誤校正碼。
在圖7中,雖然NAND介面5與編碼器21之處理同步地寫入待由編碼器21處理之資料,但圖7中所展示之程序為實例,且編碼器21之操作時序與NAND介面5之操作時序之間的關係不限於此。然而,當NAND介面5與編碼器21之處理不同步地寫入待由編碼器21處理之資料時(不同於圖7之狀況),暫時儲存緩衝器4之資料區域41所需要的容量增加超過達成同步之圖7之狀況所需要的容量。
在以上實例中,雖然每一區塊之相同頁的資料經選擇為一完整錯誤校正碼之編碼目標資料,但選擇編碼目標資料之方法不限於此。NAND記憶體6包括對錯誤強健之區域
(亦即,錯誤不太可能發生在此等區域中)及對錯誤脆弱之區域(亦即,錯誤可能發生在此等區域中)。舉例而言,在能夠儲存多個值之記憶體胞中,錯誤更可能發生在上部頁中而非下部頁中。此外,在一些裝置中,對錯誤之強健性取決於區塊內之位置或晶片內之區塊的位置而不同。在此狀況下,若僅使用儲存於對錯誤脆弱之區域中的資料作為編碼目標資料來產生錯誤校正碼,則存在錯誤集中以致不可能校正錯誤之可能性。藉由組合對錯誤強健之區域中的資料與對錯誤脆弱之區域中的資料來產生一錯誤校正碼,有可能改良校正錯誤之可能性。
圖8為展示藉由組合上部頁與下部頁之資料而產生編碼目標資料的實例之圖。圖8之每一區塊中的「強健」及「脆弱」指示對錯誤之強健性。在此狀況下,藉由在區塊7-0至區塊7-3及區塊7-4至區塊7-7中選擇具有不同強健性之頁的資料作為編碼目標資料,有可能改良校正錯誤之可能性。
接著,將描述根據本實施例之錯誤校正處理。圖9為展示根據本實施例之錯誤校正處理之程序的實例的流程圖。如圖9中所展示,編碼控制單元12(例如)當將資料自暫時儲存緩衝器4傳送至NAND記憶體6時開始編碼處理,且首先判定編碼目標資料所寫入之NAND記憶體6之區域是否處於碼未完成之狀態(步驟S11)。
假定編碼控制單元12感知到NAND記憶體上的用於產生完整碼之編碼目標資料所寫入之區域(例如,在圖5之狀況
下,區塊7-0至區塊7-7之頁#0)。此外,假定編碼控制單元12感知到對應於一完整錯誤校正碼之NAND記憶體上的每一資料區域之錯誤校正碼之狀態。錯誤校正碼之狀態表示是否執行了編碼處理,錯誤校正碼之中間狀態是否已儲存於暫時儲存緩衝器4中,或完整錯誤校正碼是否已儲存於暫時儲存緩衝器4中(亦即,碼完成)。另外,甚至在未執行編碼處理時(例如,當初次將資料寫入至NAND記憶體6時),將假定碼完成。
當判定碼完整時(在步驟S11中為否),編碼控制單元12將關於處理目標資料之指令給予編碼器21(其中,儲存於暫時儲存緩衝器4之資料區域41中的待寫入至NAND記憶體6之資料將經受編碼處理),且指示編碼器21初始化錯誤校正碼(亦即,將所有錯誤校正碼設定為0)。接著,編碼器21基於指令初始化錯誤校正碼(步驟S12)。在此實例中,如圖5中所展示之按群組之單元的資料經指示為處理目標資料。舉例而言,在圖5之實例中,指示待寫入至區塊7-0至區塊7-3中之每一者的頁#0之資料及待寫入至區塊7-4至區塊7-7中之每一者的頁#0之資料。
當判定碼尚未完整時(在步驟S11中為是),編碼控制單元12將關於處理目標資料之指令給予編碼器21且指示編碼器21還原(自暫時儲存緩衝器4讀取)對應於資料之錯誤校正碼之中間狀態。接著,編碼器21基於指令還原錯誤校正碼之中間狀態(步驟S13)。
在步驟S12或S13之後,編碼器21執行錯誤校正編碼處
理,且在處理結束時將處理結束之通知發送至編碼控制單元12(步驟S14)。當接收到處理結束之通知時,編碼控制單元12指示編碼器21將為處理結果之錯誤校正碼(錯誤校正碼之中間狀態或完整錯誤校正碼)儲存於暫時儲存緩衝器4中。接著,編碼器21基於指令儲存錯誤校正碼(步驟S15)。
隨後,編碼控制單元12判定是否存在額外編碼目標資料(步驟S16),且當不存在額外編碼目標資料時處理結束(在步驟S16中為否)。在存在額外編碼目標資料時(在步驟S16中為是),流程返回至步驟S11。
圖10為展示構成編碼器21之編碼電路之組態實例的圖。圖10展示當使用BCH碼作為錯誤校正碼且使用以下方程式(1)中所展示之方程式作為生成多項式F(x)時編碼電路之實例。
F(X)=X8
+X7
+X6
+X4
+1 (1)
在圖10之實例中,編碼電路包括八個移位暫存器200及四個XOR(互斥或)電路201。在初始化錯誤校正碼時,將所有移位暫存器200設定為0。在編碼電路中,將每一區塊之每一頁之資料順序地輸入為編碼目標資料,且將在輸入一群組之所有資料的步驟中的各別移位暫存器200之值儲存為錯誤校正碼之中間狀態。舉例而言,在圖5之實例中,區塊7-0之頁#0之資料、區塊7-1之頁#0之資料、區塊7-2之頁#0之資料及區塊7-3之頁#0之資料被按彼次序輸入,且此後,將各別移位暫存器200之值作為錯誤校正碼之中間
狀態儲存於暫時儲存緩衝器4中。
當還原中間狀態且執行處理時,將自暫時儲存緩衝器4讀取之錯誤校正碼的中間狀態設定至各別移位暫存器200。此後,順序地輸入處理目標資料。舉例而言,在圖5之實例中,在將錯誤校正碼之中間狀態設定至各別移位暫存器200之後,區塊7-4之頁#0之資料、區塊7-5之頁#0之資料、區塊7-6之頁#0之資料及區塊7-7之頁#0之資料被按彼次序輸入,且此後,將各別移位暫存器200之值作為完整錯誤校正碼儲存於暫時儲存緩衝器4中。
圖10中所展示之編碼電路之組態為實例,且編碼電路之組態不限於此,且可取決於所使用之錯誤校正編碼方法而使用可選電路組態。
接著,將描述當自主機裝置接收電源關閉指令(例如,掛斷(flash)命令)時半導體儲存裝置100之操作。在(例如)自身電源關閉或釋放與半導體儲存裝置100之連接時,主機裝置將掛斷命令、閒置命令、睡眠命令或其類似者發出至半導體儲存裝置100以藉此指示半導體儲存裝置100終止處理以便完成一狀態(例如,寫入自主機裝置接收但未寫入至NAND記憶體6之資料)。在以下描述中,雖然已描述發出掛斷命令之狀況,但相同描述可應用於發出閒置命令、睡眠命令或其類似者之狀況。
當碼長度增加時(完整錯誤校正碼之編碼目標資料之數目增加),將完整錯誤校正碼儲存於NAND記憶體6中的處理會花時間。因此,當回應於掛斷命令而完成一狀態時,
存在資料之完整錯誤校正碼尚未被儲存(不由錯誤校正碼保護之資料)的可能性。另一方面,雖然錯誤校正碼之中間狀態儲存於暫時儲存緩衝器4中,但儲存於暫時儲存緩衝器4中之資料將由於電源關閉而損失。因此,為了防止出現未由錯誤校正碼保護之資料,在本實施例中,當接收到掛斷命令時,將錯誤校正碼之中間狀態儲存於NAND記憶體6中。
半導體儲存裝置100在接收到掛斷命令時停止正常處理之程序且進入掛斷期間之處理。在掛斷期間之處理中,雖然將已儲存於暫時儲存緩衝器4中但未寫入至NAND記憶體6之寫入資料寫入至NAND記憶體6,但在本實施例中,亦將錯誤校正碼之中間狀態儲存於NAND記憶體6中。
圖11為說明展示錯誤校正碼與編碼目標資料之在NAND記憶體6上的儲存位置之對應的對應表之實例的圖。如圖11中所展示,編碼目標資料之位置與對應錯誤校正碼之位置之間的對應儲存於對應表中。舉例而言,儲存寫入至區塊7-0至區塊7-(N-1)(N=構成編碼目標資料之區塊的數目)的某一頁(例如,頁#0)之編碼目標資料206的在NAND記憶體6上之位置與基於編碼目標資料206產生之完整錯誤校正碼306的在NAND記憶體6上之位置之間的對應。
雖然控制器1亦管理自主機裝置指定之邏輯位址(LBA)與NAND記憶體上之儲存位置之間的對應關係,但可與上文所描述之對應表分開地管理邏輯位址(LBA)與NAND記憶體6上之儲存位置之間的對應,且該等對應可作為一個對
應表整合地管理。在該等對應被整合之狀況下,將邏輯位址、在NAND記憶體6上寫入編碼目標資料206之位置及基於編碼目標資料206產生之完整錯誤校正碼306在NAND記憶體6上之位置作為一對應表管理。
藉由控制器1之碼管理單元11保持此對應表。碼管理單元11控制至NAND記憶體6之資料寫入,且基於寫入至NAND記憶體6之資料之位置更新對應表。在正常狀況下,以此方式將編碼目標資料與完整錯誤校正碼之間的對應寫入至對應表。
圖12為說明在掛斷期間的碼寫入操作之實例之圖。在圖12中,假定基於16個區塊之編碼目標資料207產生一完整錯誤校正碼。在此狀況下,假定針對每一頁執行藉由對區塊7-0至區塊7-3之錯誤校正編碼處理將第一中間狀態儲存於暫時儲存緩衝器4中、藉由對區塊7-4至區塊7-7之錯誤校正編碼處理儲存第二中間狀態、藉由對區塊7-8至區塊7-11之錯誤校正編碼處理儲存第三中間狀態及藉由對區塊7-12至區塊7-15之錯誤校正編碼處理儲存完整錯誤校正碼之處理。
在此狀況下,假定控制器1在藉由對(例如)待寫入至頁#0之區塊7-0至區塊7-3的資料208之錯誤校正編碼處理將中間狀態儲存於暫時儲存緩衝器4中之後且在藉由對待寫入至頁#0之區塊7-4至區塊7-7的資料209之錯誤校正編碼處理儲存第二中間狀態之前的週期期間接收到掛斷命令。在此狀況下,碼管理單元11將為資料208之錯誤校正碼之中間
狀態的碼#0儲存於NAND記憶體6-4之區塊8(碼區塊)中。在此實例中,雖然假定已在接收掛斷命令之前將NAND記憶體6之資料208寫入至NAND記憶體6,但若尚未寫入資料208,則亦將資料208寫入至NAND記憶體6。碼管理單元11儲存碼#0在NAND記憶體上的位置且以相關方式將碼#0之處理目標資料(資料208)在NAND記憶體6上的位置儲存於對應表中。
圖13為說明在掛斷期間碼寫入操作之另一實例之圖。在圖13中,假定在藉由掛斷命令經由圖12中所描述之操作已將碼#0寫入至NAND記憶體6之後接收到後續掛斷命令,且此外,資料209已儲存於暫時儲存緩衝器4中。在此狀況下,為基於資料209產生之中間狀態的碼#0'被儲存於NAND記憶體6-4之區塊8中。資料208及資料209之位置與碼#0'之位置之間的對應儲存於對應表中,且使已儲存於對應表中之關於碼#0之資訊失效。失效方法為任意方法。舉例而言,在將關於對應新碼之資訊(例如,關於碼#0'之資訊)寫入至對應表時,可自動判定舊資訊(例如,關於碼#0之資訊)為無效的。可針對每一碼儲存指示碼為有效或是無效之旗標以使得藉由旗標明確地管理碼之有效性。
如參考圖13所描述,當失效之碼儲存於NAND記憶體6中時,因為NAND記憶體6上之區域浪費了,所以可執行碼壓縮。圖14為說明碼壓縮之實例之圖。在圖14中,陰影線碼表示失效之碼。在此狀況下,按以下程序執行碼壓縮。
(1)首先,獲得用於儲存有效碼#2及#0'之新區塊的區
域。
(2)隨後,將有效碼#2及#0'複製至新區塊之所獲得之區域。
(3)更新有效碼#2及#0'的在對應表中之碼位置。
(4)釋放變為不必要之區塊。
在圖12及圖13中,雖然當接收到掛斷命令時將錯誤校正碼之中間狀態寫入至碼區塊,但可將錯誤校正碼之中間狀態寫入至資料區塊。
圖15及圖16為說明當將錯誤校正碼之中間狀態寫入至資料區塊中時寫入方法之實例的圖。在圖15之實例中,為對應於編碼目標資料208之錯誤校正碼之中間狀態的碼#0儲存於區塊7-4中。在此狀況下,編碼目標資料208之位置及碼#0之位置亦以相關方式儲存於對應表中。
在圖16之實例中,自圖15中所展示之狀態,進一步寫入資料211,且將為對應於資料208及資料211之錯誤校正碼之中間狀態的碼#0'寫入至區塊7-8。當在寫入碼#0之後寫入資料時,將資料儲存於區塊7-5至區塊7-7之僅三個區塊中。在此狀況下,將基於區塊7-0至區塊7-3之資料208及區塊7-5至區塊7-7之資料211產生碼#0'之事實儲存於對應表中。
當將碼#0寫入至資料區域時,可使用藉由將碼#0當作資料來計算碼#0'的方法計算碼#0'。藉由進行如此操作,可執行校正處理(解碼處理)而不區分碼之中間狀態與資料。
接著,將描述根據本實施例之解碼處理。圖17至圖20為
說明根據本實施例之解碼處理之概念的圖。在此實例中,假定類似於圖5中所展示之實例,使用八個區塊來產生一個完整錯誤校正碼。圖17說明當完整錯誤校正碼儲存於NAND記憶體6中時根據本實施例之解碼處理。圖17展示使用藉由互斥或運算計算之同位來校正八個頁中之一頁的實例。假定基於八個區塊之資料401產生碼402,且在儲存資料401之區塊中發生故障。在此狀況下,ECC編碼器/解碼器2之解碼器22可執行基於自NAND記憶體6讀取之資料401當中的除故障區塊外之區塊之資料與對應於自NAND記憶體6讀取之資料401的碼402(完整錯誤校正碼)的解碼處理,以藉此還原故障區塊之資料且獲取經還原之資料403。
雖然圖17展示使用藉由互斥或運算計算之同位的狀況,但當使用BCH碼、RS碼或其類似者時,讀取所有資料(包括故障區塊之資料)及錯誤校正碼且將其輸入至解碼器22。對應於每一碼之處理與相關技術之彼處理相同,且執行對應於正在使用之錯誤校正碼之處理。假定將CRC(循環冗餘檢查)碼附加至資料以使得可偵測到故障區域。CRC碼之附加與相關技術之彼附加相同。使用完整錯誤校正碼(但不使用中間狀態)之解碼處理與相關技術之彼解碼處理相同,且不將提供其詳細描述。
圖18展示使用錯誤校正碼之中間狀態執行解碼處理之實例。圖18展示錯誤校正碼之中間狀態儲存於不同於儲存資料之區塊的區塊中之實例。解碼器22執行使用八個區塊之資料401當中的除故障區塊之外的區塊之資料與錯誤校正
碼之中間狀態404的解碼處理。假定錯誤校正碼之中間狀態404為對應於前四個區塊之中間狀態,且剩餘四個區塊處於未使用狀態(亦即,未將資料寫入至區塊)。在此狀況下,代替四個未使用區塊之資料使用四個「0」資料405執行解碼處理。以此方式,有可能還原故障區塊之資料且獲取所還原之資料404。
圖19展示錯誤校正碼之中間狀態儲存於資料將儲存於之區塊中之實例。在此狀況下,代替未使用區塊之資料使用與圖18相同之「0」資料405,且此外,將「0」資料405用作碼之中間狀態所儲存於之區塊的資料。解碼器22在使用資料被寫入之四個區塊之資料及四個「0」資料作為輸入資料408的同時使用錯誤校正碼之中間狀態409執行解碼處理。雖然圖18及圖19展示使用同位之狀況,但當使用諸如BCH碼或RS碼之其他碼時,根據碼之性質執行解碼處理。甚至在此狀況下,類似於上文,可代替未使用區塊之資料及儲存碼之中間狀態的區塊之資料而使用「0」資料。
圖20為說明當錯誤校正碼之中間狀態儲存於NAND記憶體6中時在開始期間處理程序之實例的流程圖。如上文所描述,在根據掛斷命令將錯誤校正碼之中間狀態儲存於NAND記憶體6中之後,當半導體儲存裝置100重新開始時,自尚未計算出完整錯誤校正碼之非寫入區域開始寫入(圖12中之資料209的寫入)。當自此非寫入區域開始寫入時,讀取儲存於NAND記憶體6中之錯誤校正碼之中間狀態,且執行錯誤校正編碼處理。
因此,在起動期間,半導體儲存裝置100之碼管理單元11首先檢查在編碼目標資料單元內是否存在非寫入資料區域(步驟S21)以藉此判定是否存在非寫入資料區域(步驟S22)。
當存在非寫入資料區域時(在步驟S22中為是),碼管理單元11藉由參考對應表而獲得對應於非寫入資料區域之錯誤校正碼的中間狀態在NAND記憶體6上之位置(步驟S23),且自所獲得之位置讀取錯誤校正碼之中間狀態以將中間狀態儲存於暫時儲存緩衝器4中(步驟S24),且處理結束。當不存在非寫入資料區域時(在步驟S22中為否),處理結束。在執行圖20中所展示之處理之後,執行圖9中所展示之上文所描述之編碼處理。
接著,將描述用以處理異常電源關閉之冗餘處理。存在半導體儲存裝置100在未接收到掛斷命令之狀況下電源關閉的狀況(此為異常電源關閉)。當發生異常電源關閉時,無法執行上文所描述之當接收到掛斷命令時的操作,且電力在處理期間關閉。為了保護寫入至NAND記憶體6之資料以防異常電源關閉,在本實施例中,執行如下文之冗餘處理。
圖21為說明半導體儲存裝置100中的冗餘處理之程序之實例的流程圖。首先,當自主機裝置傳送待寫入至NAND記憶體之資料時,控制器1根據圖9中所展示程序開始錯誤校正編碼處理(碼之計算)(步驟S31),且藉由多工傳輸將寫入資料寫入至NAND記憶體6(步驟S32)。多工傳輸意謂將
相同的寫入資料寫入至NAND記憶體6之複數個區域。雖然在此實例中,將資料寫入至兩個區域,但可將資料寫入至三個或三個以上區域。雖然對相同寫入資料藉由多工傳輸寫入於之位置沒有限制,但將相同寫入資料儲存於同時發生故障之位置為較佳的。
隨後,控制器1判定錯誤校正碼是否完整(是否已產生完整錯誤校正碼)(步驟S33)。當錯誤校正碼已完整時(在步驟S33中為是),控制器1將錯誤校正碼寫入至NAND記憶體6(步驟S34)。控制器1釋放相對於錯誤校正碼儲存於NAND記憶體6(步驟35)中之資料而多工傳輸的資料之其他區塊,且處理結束。
當錯誤校正碼尚未完整時(在步驟S33中為否),流程返回至步驟S31。如上文,在本實施例中,首先藉由多工傳輸使資料冗餘,且當錯誤校正碼完整且經寫入至NAND記憶體6時,藉由錯誤校正碼使資料冗餘。雖然由多工傳輸及錯誤校正碼保護之資料不限於自主機裝置傳送之寫入資料,但由半導體儲存裝置100使用之管理資訊可經受相同的冗餘處理。以類似方式產生管理資訊之方法的實例包括多工傳輸之方法(類似於資料之狀況),及將管理資訊寫入至NAND記憶體6且僅將管理資訊之經更新之資訊寫入至NAND記憶體6以藉此以多工傳輸方式記錄相同資訊之方法。
在本實施例中,雖然為產生錯誤校正碼之中間狀態的單元之群組經組態以包括選自不同晶片之每一區塊,但群組
之組態不限於此。此外,如上文所描述,可不對區塊分組。此外,對錯誤校正碼之校正能力及選擇編碼目標資料之方法沒有限制。舉例而言,可自晶片選擇編碼目標資料以便能夠處理晶片故障。可以此方式自區塊內之可選頁選擇資料以便能夠處理頁故障,頁故障為在比區塊故障小之區域範圍中發生的故障。此外,對所使用之錯誤校正碼之類型沒有限制。
在以上描述中,未規定每晶片區塊之總數目與用於產生完整錯誤校正碼之區塊數目之間的關係。舉例而言,當每晶片區塊之總數目為16,且使用八個區塊之資料產生完整錯誤校正碼時,每一晶片之區塊可分割成由八個區塊組成之處理單元。當已完成至一處理單元之所有區塊之資料寫入及完整錯誤校正碼之寫入時,可執行至下一處理單元之區塊的資料寫入。
如上文所描述,在本實施例中,將使用對應於錯誤校正碼之編碼目標資料之部分作為輸入執行錯誤校正編碼處理的錯誤校正碼之中間狀態儲存於暫時儲存緩衝器4中,使用儲存於暫時儲存緩衝器4中之錯誤校正碼之中間狀態作為初始值來執行對相同錯誤校正碼之編碼目標資料內的後續資料的錯誤校正處理。因此,甚至在一個錯誤校正碼之校正目標資料之量增加時,可防止NAND記憶體6之區塊之使用的效率降低。
圖22為說明根據第二實施例之半導體儲存裝置100中的
冗餘處理之程序之實例的流程圖。本實施例之半導體儲存裝置100具有與第一實施例之半導體儲存裝置100相同的組態。將由相同的參考數字表示具有與第一實施例相同之功能的構成元件,且不將提供其冗餘描述。
在第一實施例中,藉由多工傳輸使資料冗餘,直到錯誤校正碼完整為止,且在錯誤校正碼完整且被寫入至NAND記憶體6之後,藉由錯誤校正碼使資料冗餘以使得保護資料以防異常電源關閉。
在本實施例中,雖然未執行資料多工傳輸,但週期性地將錯誤校正碼之中間狀態儲存於NAND記憶體6中以藉此保護資料以防異常電源關閉。如圖22中所展示,首先,控制器1以類似於第一實施例之方式開始錯誤校正編碼處理(碼之計算)(步驟S31),且判定錯誤校正碼是否已完整(步驟S33)。
當錯誤校正碼尚未完整時(在步驟S33中為否),控制器1判定寫入至NAND記憶體6之資料量(對應錯誤校正碼未儲存於NAND記憶體6中之資料量)是等於或是大於預定臨限值(步驟S36)。當寫入資料之量等於或大於預定臨限值時(在步驟S36中為是),控制器1將錯誤校正碼之中間狀態寫入至NAND記憶體6且更新對應表(步驟S37),且流程返回至步驟S33。在步驟S37中將中間狀態寫入至NAND記憶體6之方法與當接收到掛斷命令時之寫入方法相同。假定針對寫入至NAND記憶體6之中間狀態中之每一者,在對應表中記錄能夠規定可由中間狀態保護的資料之資訊或其類似
者。
另一方面,當在步驟S33中判定錯誤校正碼已完整時(在步驟S33中為是),控制器1將完整錯誤校正碼寫入至NAND記憶體6且更新對應表(步驟S38),且處理結束。當寫入資料之量小於臨限值時(在步驟S36中為否),流程返回至步驟S33。
當在執行步驟S37之操作之後執行步驟S36的操作時,比較排除寫入至NAND記憶體6之錯誤校正碼之中間狀態經儲存為寫入資料的資料之寫入資料之量與臨限值。
雖然用於步驟S36之判定的臨限值可為可選值,但當臨限值設定為小時,寫入碼(中間狀態)之量增加。當臨限值設定為大時,碼之量減小,且未受保護之資料量增加。因此,考慮到此等因素,可需要藉由取捨適當地設定臨限值。
舉例而言,當基於16個區塊之資料產生完整錯誤校正碼且每四個區塊將總共三個中間狀態(每一完整錯誤校正碼)儲存於暫時儲存緩衝器4中時,可設定臨限值以使得所有三個中間狀態儲存於NAND記憶體6中,且可設定臨限值以使得僅儲存一中間狀態。
圖23為說明在發生異常電源關閉之後根據本實施例之解碼處理的概念的圖。圖23展示一實例,其中當基於8個區塊之資料410產生完整錯誤校正碼時,在將使用前四個區塊之碼(錯誤校正碼)之中間狀態411寫入至NAND記憶體6之後且在將完整錯誤校正碼寫入至NAND記憶體6之前的週
期中發生異常電源關閉。由「未受保護」表示之資料為因為雖然資料記錄於NAND記憶體6中但中間狀態或完整碼未記錄於NAND記憶體6中而未由錯誤校正碼保護之資料。在此狀況下,代替未受保護之資料使用「0」資料執行解碼處理。另外,甚至在由「未受保護」表示之部分的一部分為尚未寫入資訊之非寫入區域時仍執行相同的處理。除了上文所描述之操作外的本實施例之操作與第一實施例相同。
如上文,在本實施例中,未執行資料多工傳輸,且甚至在未接收到掛斷命令時,(例如)週期性地將錯誤校正碼之中間狀態儲存於NAND記憶體6中以藉此使資料冗餘。因此,因為不必將NAND記憶體6用於多工傳輸,所以可比第一實施例更有效率地使用NAND記憶體6。
圖24為說明根據第三實施例之半導體儲存裝置100a之組態實例的方塊圖。本實施例之半導體儲存裝置100a之組態與第一實施例之半導體儲存裝置100相同,惟代替在暫時儲存緩衝器4中提供ECC區域42而在NAND記憶體6中提供ECC區域61除外。將由相同的參考數字表示具有與第一實施例相同之功能的構成元件,且不將提供其冗餘描述。
在第一實施例中,雖然編碼器21使用儲存於暫時儲存緩衝器4中之資料來產生錯誤校正碼,但在本實施例中,類似於第一實施例,編碼器21使用儲存於暫時儲存緩衝器4之資料區域41中的資料執行錯誤校正編碼處理。在第一實
施例中,雖然完整錯誤校正碼及錯誤校正碼之中間狀態儲存於暫時儲存緩衝器4中,但在本實施例中,其直接被寫入至NAND記憶體6之ECC區域61。當還原錯誤校正碼之中間狀態以執行錯誤校正編碼處理時,自NAND記憶體6之ECC區域61讀取錯誤校正碼之中間狀態且將其用於處理。
圖25及圖26為說明根據本實施例之產生且儲存錯誤校正碼之中間狀態的方法的實例之圖。在圖25及圖26中所展示之實例中,使用八個區塊產生完整錯誤校正碼,類似於第一實施例之圖5的實例,八個區塊被分割成群組(在圖25之實例中,區塊分割成兩個群組A及B),且針對每一群組執行錯誤校正編碼處理。
此外,假定區塊7-0及區塊7-4為由通道ch0控制之NAND記憶體6-0中的區塊、區塊7-1及區塊7-5為由通道ch1控制之NAND記憶體6-1中的區塊、區塊7-2及區塊7-6為由通道ch2控制之NAND記憶體6-2中的區塊,且區塊7-3及區塊7-7為由通道ch3控制之NAND記憶體6-3中的區塊。亦假定區塊8-1為由通道ch4控制之NAND記憶體6-4中的區塊。
如圖25中所展示,編碼器21基於群組A之四個區塊中之每一者的頁#0之資料220產生錯誤校正碼之中間狀態,且將所產生之中間狀態作為碼#0寫入至NAND記憶體6之ECC區域61。類似地,基於群組A之頁#1、頁#2及頁#3之資料寫入為錯誤校正碼的中間狀態之碼#1、碼#2及碼#3。圖26展示當寫入碼#3時之狀態,其中基於資料221產生碼#3且將碼#3寫入至NAND記憶體6。類似於第一實施例,碼管理
單元11藉由對應表來管理碼#0、碼#1、碼#2及碼#3之寫入位置與對應資料之寫入位置之間的對應。雖然出於簡單起見,圖25及圖26展示每一區塊包括頁#0至頁#3之實例,但區塊中之頁之實際數目不限於此。
圖27及圖28為說明根據實施例之還原且重新產生錯誤校正碼之中間狀態的方法的實例之圖。假定區塊8-2為由通道ch4控制之NAND記憶體6-4中的區塊。亦假定如圖25及圖26中所展示,將基於群組A之區塊的資料產生之錯誤校正碼之中間狀態儲存於NAND記憶體6中,且已完成至群組A之所有區塊之資料寫入。如圖27中所展示,編碼器21自NAND記憶體6讀取且還原碼#0(亦即,將碼#0設定至編碼電路之各別暫存器),且接著使用群組B之頁#0的資料222執行錯誤校正編碼處理以產生碼#0'(完整錯誤校正碼)且將碼#0'寫入至NAND記憶體6。在此狀況下,因為碼#0變為無效,所以碼管理單元11將碼#0'之寫入位置及對應資料的寫入位置儲存於對應表中且在對應表中使碼#0失效。
類似地,如圖28中所展示,編碼器21自NAND記憶體6讀取且還原碼#3且接著使用群組B之頁#3的資料223執行錯誤校正編碼處理以產生碼#3'(完整錯誤校正碼)且將碼#3'寫入至NAND記憶體6。此外,碼管理單元11更新對應表。當區塊8-1中不存在有效碼時(所有儲存之碼皆變為無效),釋放區塊8-1。
另外,完整錯誤校正碼及錯誤校正碼之中間狀態可被彼此分開地管理且儲存於NAND記憶體6之單獨區域中,且可
不加區分地儲存完整錯誤校正碼及錯誤校正碼之中間狀態。此外,在本實施例中,因為將錯誤校正碼之中間狀態寫入至NAND記憶體6,所以不必執行當接收到掛斷命令時將錯誤校正碼之中間狀態寫入至NAND記憶體6的處理及為了達成冗餘處理之目的而週期性地將錯誤校正碼之中間狀態寫入至NAND記憶體6的處理。
圖29為說明根據本實施例之當寫入資料時的操作之程序的實例的流程圖。在此實例中,假定一處理單元包括每一晶片之N個區塊(N為一或一以上之整數),且在一處理單元內執行處理之後執行至下一處理單元之資料寫入直至寫入完整錯誤校正碼之階段。圖29展示在一處理單元內之資料寫入。
首先,當寫入處理開始時,碼管理單元11偵測寫入開始位置所屬於之群組(k為群組號且k0為對應於寫入開始位置之群組號)及群組之頁(i為頁號且P0為對應於寫入開始位置之頁)(步驟S40)。碼管理單元11指示NAND介面5將資料寫入至NAND記憶體6之群組k的頁i(步驟S41)。
當k為kmin(其為k之最小值,且為在產生錯誤校正碼時不需要還原中間狀態之群組號(如同圖25之實例中的群組A))時,編碼控制單元12指示編碼器21初始化編碼電路。當k不為kmin時,編碼控制單元12自NAND記憶體6讀取且還原對應錯誤校正碼之中間狀態(步驟S42)。
當資料之寫入(將資料自暫時儲存緩衝器4傳送至NAND記憶體6)開始時,編碼控制單元12指示編碼器21開始錯誤
校正編碼處理,且編碼器21使用基於指令而傳送之寫入資料產生錯誤校正碼之中間狀態(或完整錯誤校正碼)(步驟S43)。碼管理單元11指示NAND介面5以便將所產生之中間狀態(或完整錯誤校正碼)寫入至NAND記憶體6-4之ECC區域61(步驟S44)且基於資料之寫入位置及中間狀態之寫入位置更新對應表(步驟S45)。
隨後,碼管理單元11判定是否存在寫入資料(步驟S47)。當不存在寫入資料時(在步驟S47中為否),處理結束。當存在寫入資料時(在步驟S47中為是),判定i是否為imax(區塊中之最大頁號)(步驟S48)。當i≠imax時(在步驟S48中為否),使i遞增1(步驟S49),且流程返回至步驟S41。在i=imax時(在步驟S48中為是),判定k是否為kmax(最大群組號)(步驟S50)。當k≠kmax時(在步驟S50中為否),使k遞增1且將i設定為0(步驟S51)。接著,流程返回至步驟S41。
當k=kmax時(在步驟S50中為是),在處理單元內的資料寫入結束,且流程進入寫入至下一處理單元之處理(步驟S52)。
當未接收到掛斷命令或在處理期間未發生異常電源關閉或其類似者時,將對應於寫入至NAND記憶體6之資料的完整錯誤校正碼儲存於NAND記憶體6中。此狀況之解碼處理與相關技術之彼解碼處理相同。此外,當接收到掛斷命令或在處理期間發生異常電源關閉或其類似者時執行之解碼處理與在第一實施例中在回應於掛斷命令寫入中間狀態之
後執行的解碼處理或在第二實施例中在發生異常電源關閉之後執行的解碼處理相同。除了上文所描述之操作外的本實施例之操作與第一實施例相同。
如上文所描述,在本實施例中,編碼器21不將所產生之錯誤校正碼之中間狀態寫入至暫時儲存緩衝器4而是直接將中間狀態寫入至NAND記憶體6。因此,與第一實施例相比,有可能減小暫時儲存緩衝器4之容量且減小成本。
圖30為說明其上安裝有SSD 100的個人電腦1200之實例的透視圖。個人電腦1200具有主體1201及顯示單元1202。顯示單元1202包括顯示外殼1203及在顯示外殼1203中容納之顯示裝置1204。
主體1201包括箱1205、鍵盤1206及為指標裝置之觸控板1207。在箱1205中,容納主電路板、ODD(光碟裝置)單元、介面卡插槽、SSD 100及其類似者。
鄰近於箱1205之周邊壁提供介面卡插槽。在周邊壁中,形成面朝介面卡插槽之開口1208。使用者可經由開口1208自箱1205之外部將額外裝置插入至介面卡插槽中且自介面卡插槽移除額外裝置。
SSD 100可安裝於個人電腦1200之內部部分上並用作習知HDD之替代物,且可插入至個人電腦1200之介面卡插槽中並用作額外裝置。
圖31展示其上安裝有SSD 100的個人電腦之系統組態的實例。個人電腦1200包括CPU 1301、北橋晶片1302、主記
憶體1303、視訊控制器1304、音訊控制器1305、南橋晶片1309、BIOS-ROM 1310、SSD 100、ODD單元1311、嵌入式控制器/鍵盤控制器IC(EC/KBC)1312、網路控制器1313及其類似者。
CPU 1301為用於控制個人電腦1200之操作的處理器,且執行自SSD 100載入於主記憶體1303中之作業系統(OS)。當ODD單元1311使得能夠針對所裝載之光碟執行讀取程序及寫入程序中之至少一者時,CPU 1301執行程序。
此外,CPU 1301亦執行儲存於BIOS-ROM 1310中之系統BIOS(基本輸入輸出系統)。系統BIOS為用於控制個人電腦1200中之硬體組件之程式。
北橋晶片1302為用於連接CPU 1301之區域匯流排與南橋晶片1309之橋接裝置。北橋晶片1302併有用於控制對主記憶體1303之存取之記憶體控制器。
北橋晶片1302亦具有執行藉由AGP(加速圖形埠)匯流排而與視訊控制器1304及音訊控制器1305之通信的功能。
主記憶體1303暫時地儲存程式及資料且充當CPU 1301之工作區域。主記憶體1303由(例如)RAM製成。
視訊控制器1304為用於控制用作個人電腦1200之顯示監視器的顯示單元1202之視訊重現控制器。
音訊控制器1305為用於控制個人電腦1200之揚聲器1306之音訊重現控制器。
南橋晶片1309控制LPC(低接針計數)匯流排1314上之各別裝置及PCI(周邊組件互連)匯流排1315上之各別裝置。
此外,南橋晶片1309經由ATA介面控制SSD 100,SSD 100為用於儲存各種種類之軟體及資料的儲存裝置。
個人電腦1200按區段之單元存取SSD 100。經由ATA介面將寫入命令、讀取命令、快取掛斷(cache flash)命令及其類似者供應至SSD 100。
南橋晶片1309亦具有控制對BIOS-ROM 1310及ODD單元1311之存取的功能。
EC/KBC 1312為整合了用於執行電力管理之嵌入式控制器及用於控制鍵盤(KB)1206及觸控板1207之鍵盤控制器的單晶片微電腦。
EC/KBC 1312具有根據使用者對電力按鈕之操作開啟或關閉個人電腦1200之功能。網路控制器1313為執行與外部網路(諸如,網際網路)之通信的通信裝置。
雖然已描述某些實施例,但此等實施例僅藉由實例來呈現且不意欲限制本發明之範疇。的確,可以多種其他形式體現本文中所描述之新穎實施例;此外,可進行在本文中所描述之實施例的形式上之各種省略、替換及改變而不脫離本發明之精神。隨附申請專利範圍及其等效物意欲涵蓋將屬於本發明之範疇及精神的此等形式或修改。
1‧‧‧控制器(控制單元)
2‧‧‧錯誤檢查及校正(ECC)編碼器/解碼器
3‧‧‧主機介面
4‧‧‧暫時儲存緩衝器
5‧‧‧NAND介面
6‧‧‧NAND記憶體
6-0‧‧‧NAND記憶體
6-1‧‧‧NAND記憶體
6-2‧‧‧NAND記憶體
6-3‧‧‧NAND記憶體
6-4‧‧‧NAND記憶體
7-0‧‧‧區塊
7-1‧‧‧區塊
7-2‧‧‧區塊
7-3‧‧‧區塊
7-4‧‧‧區塊
7-5‧‧‧區塊
7-6‧‧‧區塊
7-7‧‧‧區塊
7-8‧‧‧區塊
7-9‧‧‧區塊
7-10‧‧‧區塊
7-11‧‧‧區塊
7-12‧‧‧區塊
7-13‧‧‧區塊
7-14‧‧‧區塊
7-15‧‧‧區塊
7-97‧‧‧區塊
7-98‧‧‧區塊
7-99‧‧‧區塊
7-100‧‧‧區塊
7-(N-1)‧‧‧區塊
8‧‧‧區塊
8-1‧‧‧區塊
8-2‧‧‧區塊
9-0‧‧‧頁資料
9-1‧‧‧頁資料
9-2‧‧‧頁資料
9-3‧‧‧頁資料
9-4‧‧‧頁資料
9-5‧‧‧頁資料
9-6‧‧‧頁資料
9-7‧‧‧頁資料
11‧‧‧碼管理單元
12‧‧‧編碼控制單元
21‧‧‧編碼器(編碼處理單元)
22‧‧‧解碼器(解碼處理單元)
41‧‧‧資料區域
42‧‧‧ECC區域
61‧‧‧ECC區域
100‧‧‧半導體儲存裝置(固態磁碟:SSD)
100a‧‧‧半導體儲存裝置
200‧‧‧移位暫存器
201‧‧‧編碼目標資料/XOR(互斥或)電路
202‧‧‧編碼目標資料
203‧‧‧編碼目標資料
204‧‧‧編碼目標資料
205‧‧‧編碼目標資料
206‧‧‧編碼目標資料
207‧‧‧編碼目標資料
208‧‧‧編碼目標資料
209‧‧‧資料
211‧‧‧資料
220‧‧‧資料
221‧‧‧資料
222‧‧‧資料
223‧‧‧資料
301‧‧‧碼(錯誤校正碼)
302‧‧‧碼
303‧‧‧碼
304‧‧‧碼
305‧‧‧碼
306‧‧‧完整錯誤校正碼
320‧‧‧碼#0
321‧‧‧碼#3(中間狀態)
322‧‧‧碼#0'
323‧‧‧碼#3'
401‧‧‧資料
402‧‧‧碼
403‧‧‧經還原之資料
404‧‧‧中間狀態
405‧‧‧「0」資料
406‧‧‧經還原之資料
408‧‧‧輸入資料
409‧‧‧中間狀態
410‧‧‧資料
411‧‧‧中間狀態
1200‧‧‧個人電腦
1201‧‧‧主體
1202‧‧‧顯示單元
1203‧‧‧顯示外殼
1204‧‧‧顯示裝置
1205‧‧‧箱
1206‧‧‧鍵盤
1207‧‧‧觸控板
1208‧‧‧開口
1301‧‧‧CPU
1302‧‧‧北橋晶片
1303‧‧‧主記憶體
1304‧‧‧視訊控制器
1305‧‧‧音訊控制器
1306‧‧‧揚聲器
1309‧‧‧南橋晶片
1310‧‧‧BIOS-ROM
1311‧‧‧ODD單元
1312‧‧‧嵌入式控制器/鍵盤控制器IC(EC/KBC)
1313‧‧‧網路控制器
1314‧‧‧LPC(低接針計數)匯流排
1315‧‧‧PCI(周邊組件互連)匯流排
圖1為展示根據第一實施例之半導體儲存裝置之組態實例的方塊圖。
圖2為展示編碼目標資料與錯誤校正碼之間的對應的實例之圖。
圖3為展示編碼目標資料與錯誤校正碼之間的對應的實例之圖。
圖4為展示在資料與碼之比率為8:1時編碼目標資料與錯誤校正碼之間的對應的實例之圖。
圖5為展示根據第一實施例之記錄錯誤校正碼之中間狀態的方法的實例之圖。
圖6為說明第一實施例之效應的圖。
圖7為展示根據第一實施例之錯誤校正編碼處理及資料寫入操作之程序的實例的圖。
圖8為展示藉由組合上部頁與下部頁之資料而形成編碼目標資料的實例之圖。
圖9為展示根據第一實施例之錯誤校正處理之程序的實例的流程圖。
圖10為展示編碼電路之組態實例之圖。
圖11為展示對應表之實例之圖。
圖12為展示在掛斷期間碼寫入操作之實例之圖。
圖13為展示在掛斷期間碼寫入操作之另一實例之圖。
圖14為展示碼壓縮之實例之圖。
圖15為展示在將錯誤校正碼之中間狀態寫入至資料區塊中時寫入方法之實例的圖。
圖16為展示在將錯誤校正碼之中間狀態寫入至資料區塊中時寫入方法之實例的圖。
圖17為展示根據第一實施例之解碼處理之概念的圖。
圖18為展示根據第一實施例之解碼處理之概念的圖。
圖19為展示根據第一實施例之解碼處理之概念的圖。
圖20為展示根據第一實施例之解碼處理之概念的圖。
圖21為展示冗餘處理之程序之實例的流程圖。
圖22為展示根據第二實施例之冗餘處理之程序的實例的流程圖。
圖23為展示根據第二實施例之在異常電源關閉之後解碼處理的概念的圖。
圖24為展示根據第三實施例之半導體儲存裝置之組態實例的方塊圖。
圖25為展示根據第三實施例之產生且儲存錯誤校正碼之中間狀態的方法的實例之圖。
圖26為展示根據第三實施例之產生且儲存錯誤校正碼之中間狀態的方法的實例之圖。
圖27為展示根據第三實施例之還原且重新產生錯誤校正碼之中間狀態的方法的實例之圖。
圖28為展示根據第三實施例之還原且重新產生錯誤校正碼之中間狀態的方法的實例之圖。
圖29為展示根據第三實施例之在寫入資料時操作之程序的實例的流程圖。
圖30為展示個人電腦之外觀圖之透視圖。
圖31為展示個人電腦之功能組態實例之圖。
1‧‧‧控制器(控制單元)
2‧‧‧錯誤檢查及校正(ECC)編碼器/解碼器
3‧‧‧主機介面
4‧‧‧暫時儲存緩衝器
5‧‧‧NAND介面
6‧‧‧NAND記憶體
6-0‧‧‧NAND記憶體
6-1‧‧‧NAND記憶體
6-2‧‧‧NAND記憶體
6-3‧‧‧NAND記憶體
6-4‧‧‧NAND記憶體
11‧‧‧碼管理單元
12‧‧‧編碼控制單元
21‧‧‧編碼器(編碼處理單元)
22‧‧‧解碼器(解碼處理單元)
41‧‧‧資料區域
42‧‧‧ECC區域
100‧‧‧半導體儲存裝置(固態磁碟:SSD)
Claims (19)
- 一種半導體儲存裝置,其包含:一非揮發性半導體記憶體;一記憶體介面,其將寫入資料及一完整錯誤校正碼寫入至該非揮發性半導體記憶體;一暫時儲存緩衝器,其在將該寫入資料寫入至該非揮發性半導體記憶體之前暫時地儲存該寫入資料及該完整錯誤校正碼;一編碼處理單元,其將為一預定大小之該寫入資料的一錯誤校正單元資料分割成複數個經分割之資料,基於根據儲存於該暫時儲存緩衝器中之上述複數個經分割之資料中之一個或更多的經分割之資料而執行一錯誤校正編碼處理,將藉由該錯誤校正編碼處理獲取之一為冗餘資料的錯誤校正碼作為一中間碼寫入至該暫時儲存緩衝器,且當一第一中間碼被寫入至該暫時儲存緩衝器時,自該暫時儲存緩衝器讀取該第一中間碼以使用該第一中間碼作為該錯誤校正編碼處理之一初始值,該第一中間碼係基於上述複數個經分割之資料中之一個或更多之一第一經分割之資料而產生,上述第一經分割之資料係構成與一第二經分割之資料相同之錯誤校正單元資料,上述第二經分割之資料係上述複數個經分割之資料中針對該錯誤校正編碼處理之輸入資料;及一控制單元,其控制該記憶體介面以使得將儲存於該暫時儲存緩衝器中之該寫入資料寫入至該非揮發性半導 體記憶體,且控制該記憶體介面以使得使用構成該錯誤校正單元資料之所有上述複數個經分割之資料來執行了該錯誤校正編碼處理後所得之上述中間碼作為該完整錯誤校正碼被寫入至該非揮發性半導體記憶體。
- 如請求項1之半導體儲存裝置,其中該編碼處理單元將該錯誤校正單元資料分割成三個或更多經分割之資料項,且在基於構成與成為該錯誤校正編碼處理之對象的經分割之資料相同的錯誤校正單元資料之經分割之資料所產生的上述中間碼被寫入至該暫時儲存緩衝器時,自該暫時儲存緩衝器讀取基於構成該相同錯誤校正單元資料之經分割之資料所產生的該等中間碼當中最後產生之中間碼,以使用所讀取之該中間碼作為該錯誤校正編碼處理之該初始值。
- 如請求項1之半導體儲存裝置,其進一步包含一解碼處理單元,該解碼處理單元基於自該非揮發性半導體記憶體讀取之該完整錯誤校正碼及對應於該完整錯誤校正碼之錯誤校正單元資料,對該錯誤校正單元資料執行一解碼處理,其中該控制單元控制該記憶體介面以使得當接收到指示為一電源關閉作好準備之一命令時將該中間碼寫入至該非揮發性半導體記憶體,儲存該中間碼在該非揮發性半導體記憶體中之儲存位置與對應於該中間碼之寫入資料的儲存位置之間的對應,且控制該記憶體介面以使得在該寫入資料之該解碼處理期間當將該中間碼儲存於該 非揮發性半導體記憶體中時讀取該中間碼,且其中該解碼處理單元基於自該非揮發性半導體記憶體讀取之該中間碼及對應於該中間碼之該寫入資料執行該解碼處理。
- 如請求項3之半導體儲存裝置,其中當將基於構成該相同的錯誤校正單元資料之經分割之資料產生的複數個中間碼儲存於該非揮發性半導體記憶體中時,該控制單元驗證在複數個中間碼當中最後儲存之一中間碼且控制該記憶體介面以使得在該寫入資料之讀取期間當自該半導體記憶體讀取該中間碼時讀取有效中間碼。
- 如請求項3之半導體儲存裝置,其中該非揮發性半導體記憶體包括經組態以儲存該完整錯誤校正碼之一碼區域,且其中該控制單元控制該記憶體介面以使得將該中間碼寫入至該碼區域。
- 如請求項3之半導體儲存裝置,其中該非揮發性半導體記憶體包括經組態以儲存該完整錯誤校正碼之一碼區域及經組態以儲存該寫入資料之一資料區域,且其中該控制單元控制該記憶體介面以使得將該中間碼寫入至該資料區域。
- 如請求項3之半導體儲存裝置,其中,當將基於構成該相同之錯誤校正單元資料之經 分割之資料產生的複數個中間碼儲存於該半導體記憶體中時,將該複數個中間碼當中的該最新中間碼儲存於該非揮發性半導體記憶體之一不同區域中,且釋放儲存該複數個中間碼之區域。
- 如請求項1之半導體儲存裝置,其中該控制單元控制該記憶體介面以使得在多個區域中將該對應完整錯誤校正碼未儲存於該非揮發性半導體記憶體中之該寫入資料寫入至該非揮發性半導體記憶體,且控制該記憶體介面以使得當已寫入該完整錯誤校正碼時釋放該等多個區域中之排除儲存對應於該完整錯誤校正碼之該寫入資料的一區域的區域。
- 如請求項1之半導體儲存裝置,其中,當已寫入至非揮發性半導體記憶體且該對應完整錯誤校正碼或該對應中間碼尚未寫入至該非揮發性半導體記憶體之該寫入資料之量等於或大於一預定臨限值時,該控制單元控制該記憶體介面以使得將該中間碼寫入至該非揮發性半導體記憶體。
- 一種半導體儲存裝置,其包含:一非揮發性半導體記憶體;一記憶體介面,其將寫入資料寫入至該非揮發性半導體記憶體;一暫時儲存緩衝器,其在將該寫入資料儲存於該非揮發性半導體記憶體中之前暫時地儲存該寫入資料;一編碼處理單元,其將為一預定大小之該寫入資料的 一錯誤校正單元資料分割成複數個經分割之資料,基於自該暫時儲存緩衝器傳送至該非揮發性半導體記憶體之上述複數個經分割之資料中之一個或更多的經分割之資料執行一錯誤校正編碼處理,且使用一錯誤校正碼作為一中間碼,該錯誤校正碼係藉由針對上述複數個經分割之資料中之一個或更多的經分割之資料的該錯誤校正編碼處理所獲取之冗餘資料;及一控制單元,其控制該記憶體介面以使得將該中間碼寫入至該非揮發性半導體記憶體,儲存該中間碼在該非揮發性半導體記憶體中之儲存位置與對應於該中間碼之寫入資料的儲存位置之間的一對應(correspondence),且當基於該對應判定一第一中間碼被寫入至該非揮發性半導體記憶體時,控制該記憶體介面以使得讀取該第一中間碼且將該第一中間碼作為一初始值輸入至該編碼處理單元,該第一中間碼係基於該複數個經分割之資料中之一個或更多之一第一經分割之資料而產生,上述第一經分割之資料係構成與一第二經分割之資料相同的錯誤校正單元資料,上述第二經分割之資料係上述複數個經分割之資料中針對該錯誤校正編碼處理之輸入資料;其中,當對該第二經分割之資料執行該錯誤校正編碼處理時,於自該控制單元輸入該初始值時,該編碼處理單元基於已輸入之該初始值及該第二經分割之資料執行該錯誤校正編碼處理。
- 如請求項10之半導體儲存裝置, 其中,當基於構成該相同之錯誤校正單元資料之經分割之資料產生的複數個中間碼儲存於該半導體記憶體中時,將該複數個中間碼當中的最新中間碼儲存於該非揮發性半導體記憶體之一不同區域中,且釋放儲存該複數個中間碼之區域。
- 如請求項10之半導體儲存裝置,其中該非揮發性半導體記憶體包括複數個區塊,且其中該經分割之資料包括在兩個或兩個以上區塊中之資料。
- 如請求項10之半導體儲存裝置,其中該非揮發性半導體記憶體包括各自能夠獨立操作之複數個記憶體區域,其中該記憶體介面使資料能夠獨立地寫入至該複數個記憶體區域,其中該複數個記憶體區域中之每一者包括一或多個區塊,且該區塊包括一或多個頁,且其中該經分割之資料包括在屬於不同記憶體區域之區塊中的資料。
- 如請求項13之半導體儲存裝置,其中該控制單元控制該記憶體介面及該編碼處理單元以使得並行地執行對應於該經分割之資料的一錯誤校正編碼處理及至該半導體記憶體之該經分割之資料的寫入。
- 如請求項13之半導體儲存裝置, 其中該完整錯誤校正碼之編碼目標資料包括不同區塊之相同頁的資料。
- 如請求項15之半導體儲存裝置,其中按該經分割之資料之單元控制至該非揮發性半導體記憶體之資料之寫入,按頁號之次序將包括屬於該相同區塊的資料之該經分割之資料寫入至該非揮發性半導體記憶體,且在完成至該區塊中之所有頁的資料之寫入之後,執行至一區塊的資料之寫入,該區塊對應於包括除該區塊外之一區塊的資料的該經分割之資料。
- 如請求項13之半導體儲存裝置,其中該完整錯誤校正碼之編碼目標資料包括屬於不同區塊之複數個頁的資料。
- 如請求項17之半導體儲存裝置,其中藉由組合對錯誤強健之頁與對錯誤脆弱之頁來形成該完整錯誤校正碼之編碼目標資料。
- 一種控制包括一非揮發性半導體記憶體之一半導體儲存裝置之方法,其包含:將寫入資料及一完整錯誤校正碼寫入至該非揮發性半導體記憶體;在將該寫入資料寫入至該非揮發性半導體記憶體之前暫時地將該寫入資料及該完整錯誤校正碼儲存於一暫時儲存緩衝器中;將為一預定大小之該寫入資料之一錯誤校正單元資料分割成複數個經分割之資料且基於儲存於該暫時儲存緩 衝器中之上述複數個經分割之資料中之一個或更多之經分割之資料而執行一錯誤校正編碼處理;將藉由該錯誤校正編碼處理獲取之一為冗餘資料之錯誤校正碼作為一中間碼寫入至該暫時儲存緩衝器;當一第一中間碼被寫入至該暫時儲存緩衝器時,自該暫時儲存緩衝器讀取該第一中間碼以使用所讀取之該第一中間碼作為該錯誤校正編碼處理之一初始值,該第一中間碼係基於上述複數個經分割之資料中之一個或更多之一第一經分割之資料而產生,上述第一經分割之資料係構成與一第二經分割之資料相同的錯誤校正單元資料,上述第二經分割之資料係上述複數個經分割之資料中之針對該錯誤校正編碼處理之輸入資料;執行控制以使得將儲存於該暫時儲存緩衝器中之該寫入資料寫入至該非揮發性半導體記憶體;及執行控制以使得使用構成該錯誤校正單元資料之所有上述複數個經分割之資料來執行了該錯誤校正編碼處理後所得之上述中間碼作為該完整錯誤校正碼被寫入至該非揮發性半導體記憶體。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010279074A JP5651457B2 (ja) | 2010-12-15 | 2010-12-15 | 半導体記憶装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201237622A TW201237622A (en) | 2012-09-16 |
TWI472918B true TWI472918B (zh) | 2015-02-11 |
Family
ID=46244821
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100146709A TWI472918B (zh) | 2010-12-15 | 2011-12-15 | 半導體儲存裝置及其控制方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9189323B2 (zh) |
JP (1) | JP5651457B2 (zh) |
TW (1) | TWI472918B (zh) |
WO (1) | WO2012081732A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI715403B (zh) * | 2019-09-09 | 2021-01-01 | 瑞昱半導體股份有限公司 | 數位電路強健度驗證方法及系統 |
TWI758867B (zh) * | 2020-09-16 | 2022-03-21 | 英業達股份有限公司 | 基於gpnv的基本輸入輸出系統錯誤訊息記錄方法、系統及終端 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013029882A (ja) | 2011-07-26 | 2013-02-07 | Toshiba Corp | メモリコントローラ、半導体記憶装置および復号方法 |
US8640013B2 (en) | 2011-09-22 | 2014-01-28 | Kabushiki Kaisha Toshiba | Storage device |
JP5674700B2 (ja) | 2012-03-22 | 2015-02-25 | 株式会社東芝 | 符号化装置および符号化装置の制御方法、ならびに、記憶装置 |
CN104347122B (zh) * | 2013-07-31 | 2017-08-04 | 华为技术有限公司 | 一种消息式内存模组的访存方法和装置 |
US20150193301A1 (en) * | 2014-01-06 | 2015-07-09 | Kabushiki Kaisha Toshiba | Memory controller and memory system |
US9495261B2 (en) * | 2014-03-13 | 2016-11-15 | Qualcomm Incorporated | Systems and methods for reducing memory failures |
US20170161141A1 (en) * | 2015-12-02 | 2017-06-08 | Samsung Electronics Co., Ltd. | Method and apparatus for correcting data in multiple ecc blocks of raid memory |
JP7023103B2 (ja) * | 2017-12-22 | 2022-02-21 | キオクシア株式会社 | メモリシステム及び制御方法 |
JP6890557B2 (ja) * | 2018-01-17 | 2021-06-18 | 株式会社日立製作所 | 分析モデル作成システム、プログラミング装置および分析モデル作成方法 |
KR102683296B1 (ko) * | 2019-05-17 | 2024-07-10 | 에스케이하이닉스 주식회사 | 메모리 장치 및 이의 동작 방법 |
CN114550806B (zh) * | 2022-04-26 | 2022-08-05 | 杭州阿姆科技有限公司 | 一种应用于ssd上的双层纠错方法 |
US20240289212A1 (en) * | 2023-02-27 | 2024-08-29 | Google Llc | Bit Efficient Memory Error Correcting Coding And Decoding Scheme |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0426271B1 (en) * | 1989-11-02 | 1995-09-06 | Mitsubishi Denki Kabushiki Kaisha | Portable semiconductor storage device |
WO1998044567A1 (fr) * | 1997-03-28 | 1998-10-08 | Hitachi, Ltd. | Dispositif de memoire remanente a semi-conducteur, dispositif a semi-conducteur et procedes de fabrication associes de ceux-ci |
TW201027555A (en) * | 2008-12-22 | 2010-07-16 | Toshiba Kk | Semiconductor storage device and storage controlling method |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5721739A (en) * | 1995-12-14 | 1998-02-24 | Fairchild Semiconductor Corporation | Method for detecting read errors, correcting single-bit read errors and reporting multiple-bit read errors |
JP4956230B2 (ja) * | 2006-04-10 | 2012-06-20 | 株式会社東芝 | メモリコントローラ |
KR101397549B1 (ko) * | 2007-08-16 | 2014-05-26 | 삼성전자주식회사 | 고속 프로그램이 가능한 불휘발성 반도체 메모리 시스템 및그것의 독출 방법 |
JP5166074B2 (ja) | 2008-02-29 | 2013-03-21 | 株式会社東芝 | 半導体記憶装置、その制御方法、および誤り訂正システム |
KR101483190B1 (ko) * | 2008-09-05 | 2015-01-19 | 삼성전자주식회사 | 메모리 시스템 및 그것의 데이터 처리 방법 |
JP2010097600A (ja) * | 2008-09-22 | 2010-04-30 | Panasonic Corp | 半導体記録装置 |
US8438453B2 (en) * | 2009-05-06 | 2013-05-07 | Apple Inc. | Low latency read operation for managed non-volatile memory |
CN101908376B (zh) * | 2009-06-04 | 2014-05-21 | 威刚科技(苏州)有限公司 | 非挥发性存储装置及其控制方法 |
US20100332922A1 (en) * | 2009-06-30 | 2010-12-30 | Mediatek Inc. | Method for managing device and solid state disk drive utilizing the same |
JP2011198272A (ja) | 2010-03-23 | 2011-10-06 | Toshiba Corp | 半導体記憶装置および半導体記憶装置の制御方法 |
JP5279785B2 (ja) | 2010-09-17 | 2013-09-04 | 株式会社東芝 | コントローラ、記憶装置、およびプログラム |
-
2010
- 2010-12-15 JP JP2010279074A patent/JP5651457B2/ja active Active
-
2011
- 2011-12-15 TW TW100146709A patent/TWI472918B/zh active
- 2011-12-15 WO PCT/JP2011/079755 patent/WO2012081732A1/en active Application Filing
- 2011-12-15 US US13/820,159 patent/US9189323B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0426271B1 (en) * | 1989-11-02 | 1995-09-06 | Mitsubishi Denki Kabushiki Kaisha | Portable semiconductor storage device |
WO1998044567A1 (fr) * | 1997-03-28 | 1998-10-08 | Hitachi, Ltd. | Dispositif de memoire remanente a semi-conducteur, dispositif a semi-conducteur et procedes de fabrication associes de ceux-ci |
TW201027555A (en) * | 2008-12-22 | 2010-07-16 | Toshiba Kk | Semiconductor storage device and storage controlling method |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI715403B (zh) * | 2019-09-09 | 2021-01-01 | 瑞昱半導體股份有限公司 | 數位電路強健度驗證方法及系統 |
US11353509B2 (en) | 2019-09-09 | 2022-06-07 | Realtek Semiconductor Corporation | Digital circuit robustness verification method and system |
TWI758867B (zh) * | 2020-09-16 | 2022-03-21 | 英業達股份有限公司 | 基於gpnv的基本輸入輸出系統錯誤訊息記錄方法、系統及終端 |
Also Published As
Publication number | Publication date |
---|---|
US20130179750A1 (en) | 2013-07-11 |
WO2012081732A1 (en) | 2012-06-21 |
TW201237622A (en) | 2012-09-16 |
JP2012128906A (ja) | 2012-07-05 |
US9189323B2 (en) | 2015-11-17 |
JP5651457B2 (ja) | 2015-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI472918B (zh) | 半導體儲存裝置及其控制方法 | |
US8904261B2 (en) | Data management in solid state storage devices | |
US7984325B2 (en) | Storage control device, data recovery device, and storage system | |
US9377960B2 (en) | System and method of using stripes for recovering data in a flash storage system | |
US9613656B2 (en) | Scalable storage protection | |
JP5066199B2 (ja) | 半導体記憶装置 | |
EP2732373B1 (en) | Method and apparatus for flexible raid in ssd | |
JP4901987B1 (ja) | 記憶装置、電子機器及び誤りデータの訂正方法 | |
JP6175684B2 (ja) | Nandフラッシュメモリ上のデータの記憶のためのアーキテクチャ | |
US20130191705A1 (en) | Semiconductor storage device | |
US20140063983A1 (en) | Error Detection And Correction In A Memory System | |
JP2009129070A (ja) | フラッシュメモリ記憶装置の制御方法、その方法を用いたフラッシュメモリ記憶装置及びストレージシステム | |
JP2011180831A (ja) | 半導体記憶装置 | |
TWI802324B (zh) | 異常斷電恢復方法、記憶體控制電路單元以及記憶體儲存裝置 | |
JP2014052978A (ja) | 不揮発性半導体メモリの制御方法及びメモリシステム | |
CN102171658B (zh) | 抑制比特错误校验码方案 | |
JP6491482B2 (ja) | 複数のフラッシュ面にわたってコード語をインターリーブするための方法および/または装置 | |
WO2014061161A1 (ja) | 記録再生装置、誤り訂正方法および制御装置 | |
JP2010020648A (ja) | 記憶装置 | |
US11809742B2 (en) | Recovery from HMB loss | |
US11893275B2 (en) | DRAM-less SSD with recovery from HMB loss | |
US11789643B2 (en) | Memory system and control method | |
CN113420341B (zh) | 一种数据保护方法、数据保护设备及计算机系统 | |
CN118553298A (zh) | 一种固态硬盘的纠错方法及设备 | |
CN117992282A (zh) | 异常断电后的编码方法和存储器存储装置 |