TW202121426A - Memory system capable of avoiding the mutual interference between cells to reducing the capacity of writing in a buffer, and suppressing bias of a bit error rate - Google Patents

Memory system capable of avoiding the mutual interference between cells to reducing the capacity of writing in a buffer, and suppressing bias of a bit error rate Download PDF

Info

Publication number
TW202121426A
TW202121426A TW109125506A TW109125506A TW202121426A TW 202121426 A TW202121426 A TW 202121426A TW 109125506 A TW109125506 A TW 109125506A TW 109125506 A TW109125506 A TW 109125506A TW 202121426 A TW202121426 A TW 202121426A
Authority
TW
Taiwan
Prior art keywords
data
aforementioned
programming
bit
threshold
Prior art date
Application number
TW109125506A
Other languages
Chinese (zh)
Other versions
TWI752569B (en
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 TW202121426A publication Critical patent/TW202121426A/en
Application granted granted Critical
Publication of TWI752569B publication Critical patent/TWI752569B/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements

Abstract

An embodiment of the invention provides a memory system capable of avoiding the mutual interference between cells to reduce the capacity of writing in a buffer, and suppressing bias of a bit error rate. In the memory system of the embodiment, a memory controller in the memory system is configured to enable a nonvolatile memory to execute a first programming such that a threshold region in the memory cell becomes any threshold region of a seventeenth threshold region indicating an erased state in which data is erased and eighteenth to twenty-fourth threshold regions having a higher voltage level than that of the seventeenth threshold region and indicating a written state in which data is written according to the data of the first bit, the second bit, and the fourth bit, and configured to allow the nonvolatile memory to execute a second programming such that the threshold region in the memory cell becomes any threshold region in two threshold regions among the first to sixteenth threshold regions from any threshold region of the seventeenth to twenty-fourth threshold regions according to the data of the third bit. When driving the nonvolatile memory to execute the second programing, the memory controller is configured to input the data of the second bit and the data of the third bit to the nonvolatile memory.

Description

記憶體系統Memory system

本揭示之實施形態,係有關於記憶體系統。 [關連申請案] 本申請案,係享受以日本專利申請2019-210823號(申請日:2019年11月21日)以及日本專利申請2020-113206號(申請日:2020年6月30日)作為基礎申請之優先權。本申請案,係藉由參照此些基礎申請案,而包含基礎申請案之所有的內容。The implementation form of this disclosure is related to a memory system. [Related Application Case] This application enjoys the priority of the basic application based on Japanese Patent Application No. 2019-210823 (application date: November 21, 2019) and Japanese Patent Application No. 2020-113206 (application date: June 30, 2020) . This application contains all the contents of the basic application by referring to these basic applications.

在NAND型快閃記憶體中,一般而言係對於記憶體胞而寫入由複數位元所成之多值資料,對於記憶體胞而寫入由3位元所成之多值資料的TLC(Triple Level Cell)技術係被實用化。今後,可以預期到,寫入由4位元所成之多值資料之QLC(Quadruple Level Cell)技術係會成為主流。 在QLC中,為了避免胞間之相互干涉,係檢討有「在將4位元資料同時寫入至第1記憶體胞中之後,對於鄰接之胞而亦同樣地將4位元資料同時寫入,之後,再度對於第1記憶體胞而將4位元資料同時地再寫入」之手法。然而,在此手法中,係有必要將4位元資料預先保持在記憶體控制器內之寫入緩衝中,直到再寫入結束為止。 近年之NAND記憶體係被3維化,所必要的寫入緩衝之記憶體容量係增大,而有著將寫入緩衝作了內藏的記憶體控制器之成本變高的問題。因此,在3維之非揮發性記憶體中,係同樣的,係需要對於將記憶體控制器之寫入緩衝量降低的對策有所檢討。 作為避免胞間之相互干涉並同時對於記憶體控制器之寫入緩衝量作削減的對策,係周知有:在對於記憶體胞而將各位元之資料作寫入時,藉由分成2個的階段來作寫入,而成為不需要進行全部位元資料之再寫入的手法。 然而,在此手法中,係有著在對於記憶體胞而將各位元資料作寫入時的位元錯誤率之偏頗為大的問題。 為了將QLC技術之信賴性提升,係需要避免胞之間之相互干涉並且削減記憶體控制器內之寫入緩衝之容量並且亦對於在將各位元資料作寫入時的位元錯誤率之偏頗作抑制的記憶體系統。In NAND-type flash memory, generally speaking, multi-value data composed of multiple bits is written to the memory cell, and multi-value data composed of 3 bits is written to the memory cell. (Triple Level Cell) technology department was put into practical use. In the future, it can be expected that the QLC (Quadruple Level Cell) technology system that writes multi-value data composed of 4 bits will become the mainstream. In QLC, in order to avoid mutual interference between cells, it is reviewed that "after writing 4-bit data into the first memory cell at the same time, the same applies to adjacent cells and writing 4-bit data at the same time. , After that, rewrite the 4-bit data to the first memory cell at the same time" again. However, in this method, it is necessary to keep the 4-bit data in the write buffer in the memory controller in advance until the rewriting is completed. In recent years, the NAND memory system has been three-dimensional, and the memory capacity of the necessary write buffer has been increased, and there has been a problem that the cost of the built-in memory controller in the write buffer has increased. Therefore, in a 3-dimensional non-volatile memory, the same is true, and it is necessary to review the countermeasures to reduce the write buffer capacity of the memory controller. As a countermeasure to avoid mutual interference between cells and reduce the amount of write buffer of the memory controller at the same time, it is well known: When writing the data of each bit to the memory cell, divide it into two The writing is done in stages, and it becomes a method that does not need to rewrite all the bit data. However, in this technique, there is a problem that the bit error rate when writing bit data to the memory cell is quite large. In order to increase the reliability of the QLC technology, it is necessary to avoid mutual interference between cells and reduce the capacity of the write buffer in the memory controller. It is also biased towards the bit error rate when writing bit data. Used as a suppressed memory system.

在本揭示之其中一個態樣中,係提供一種能夠避免胞之間之相互干涉並且削減記憶體控制器內之寫入緩衝之容量並且亦對於在將各位元資料作寫入時的位元錯誤率之偏頗作抑制的記憶體系統。 若依據本實施形態,則係提供一種記憶體系統,其係具備有:非揮發性記憶體,係具有複數之記憶體胞,該複數之記憶體胞,係各別藉由16個臨限值區域,而能夠記憶藉由第1~第4位元來作表現的4位元之資料,該16個的臨限值區域,係包含有代表資料被作了刪除的刪除狀態之第1臨限值區域、和電壓準位為較前述第1臨限值區域而更高並代表資料被作了寫入的寫入狀態之第2~第16臨限值區域;和 記憶體控制器,係在使前述非揮發性記憶體進行了將前述第1位元、前述第2位元、前述第4位元之資料作寫入的第1程式化之後,使前述非揮發性記憶體進行將前述第3位元之資料作寫入的第2程式化, 在存在於前述第1~第16臨限值區域中之相鄰接之臨限值區域間之15個的邊界中,被使用在前述第1位元之資料之值的判定中之第1邊界之數量、被使用在前述第2位元之資料之值的判定中之第2邊界之數量、被使用在前述第3位元之資料之值的判定中之第3邊界之數量、被使用在前述第4位元之資料之值的判定中之第4邊界之數量,此些之數量中之最大之值係為5,第2大之值係為4, 前述記憶體控制器,係構成為以使在前述記憶體胞中之臨限值區域會因應於前述第1位元、前述第2位元、前述第4位元之資料而成為代表資料為被作了刪除的刪除狀態之第17臨限值區域和電壓準位為較前述第17臨限值區域而更高並代表資料被作了寫入的寫入狀態之第18~第24臨限值區域之其中一者之臨限值區域的方式,來使前述非揮發性記憶體進行前述第1程式化, 前述記憶體控制器,係構成為以使在前述記憶體胞中之臨限值區域會因應於前述第3位元之資料而從前述第17~第24臨限值區域中之任一者之臨限值區域來成為前述第1~第16臨限值區域中之2個的臨限值區域內之任一者之臨限值區域的方式,來使前述非揮發性記憶體進行前述第2程式化, 位置於前述2個的臨限值區域中之電壓準位為最低之臨限值區域和電壓準位為最高之臨限值區域之間的臨限值區域之個數,係為2個以內, 前述記憶體控制器,在使前述非揮發性記憶體進行前述第2程式化的情況時,係構成為將前述第2位元之資料和前述第3位元之資料對於前述非揮發性記憶體作輸入。In one aspect of the present disclosure, a method is provided that can avoid mutual interference between cells and reduce the capacity of the write buffer in the memory controller, and is also suitable for bit errors when writing bit data The rate of bias is suppressed by the memory system. According to this embodiment, a memory system is provided, which is equipped with: non-volatile memory, which has a plurality of memory cells, and each of the plurality of memory cells has 16 thresholds Area, and can memorize 4-bit data represented by the first to fourth bits. The 16 threshold areas include the first threshold that represents the deleted state of the data being deleted The value area and the voltage level are higher than the aforementioned first threshold area and represent the 2nd to 16th threshold area of the writing state in which the data is written; and The memory controller causes the non-volatile memory to perform the first programming of writing the data of the first bit, the second bit, and the fourth bit to make the non-volatile memory The sexual memory performs the second programming of writing the data of the third bit mentioned above, Among the 15 boundaries between adjacent threshold regions existing in the first to 16th threshold regions, the first boundary used in the determination of the value of the first bit data The number of the second boundary used in the determination of the value of the second bit data, the number of the third boundary used in the determination of the value of the third bit data, is used in For the number of the fourth boundary in the determination of the value of the fourth bit of the data, the largest value among these numbers is 5, and the second largest value is 4. The aforementioned memory controller is configured so that the threshold area in the aforementioned memory cell becomes representative data in response to the data of the aforementioned first bit, the aforementioned second bit, and the aforementioned fourth bit. The 17th threshold area and voltage level of the deleted state with deletion are higher than the above-mentioned 17th threshold area and represent the 18th to 24th thresholds of the write state with data being written The threshold area of one of the areas is used to make the aforementioned non-volatile memory perform the aforementioned first programming, The aforementioned memory controller is configured so that the threshold area in the aforementioned memory cell changes from any one of the aforementioned 17th to 24th threshold areas in accordance with the data of the aforementioned 3rd bit. The threshold area becomes the threshold area of any one of the threshold areas of the first to 16th threshold areas, so that the non-volatile memory performs the second Stylized, The number of threshold areas between the threshold area where the voltage level is the lowest and the threshold area where the voltage level is the highest in the aforementioned two threshold areas is within two. The aforementioned memory controller, when the aforementioned non-volatile memory is subjected to the aforementioned second programming, is configured to combine the aforementioned second bit data and the aforementioned third bit data with respect to the aforementioned non-volatile memory For input.

圖1,係為對於由第1實施形態所致的記憶體系統1之概略構成作展示之區塊圖。圖1之記憶體系統1,係具備有記憶體控制器2和非揮發性記憶體3。圖1之記憶體系統1,係能夠與主機處理器(以下,係單純稱作主機)4作連接。主機4,例如,係為個人電腦、攜帶終端等之電子機器。 非揮發性記憶體3,係為將資料非揮發性地作記憶之記憶體,例如,係具備有NAND快閃記憶體(以下,係亦有稱作NAND記憶體的情形)5。在本實施形態中,係針對非揮發性記憶體3乃身為具備有在每一記憶體胞處能夠記憶4位元之資料的記憶體胞之4bit/Cell(QLC:Quad Level Cell)之NAND記憶體5的例子,來進行說明。由本實施形態所致之非揮發性記憶體3,係具備有使記憶體胞被立體性地作了層積的3維構造。非揮發性記憶體3,係具有複數之記憶體胞,該複數之記憶體胞,係各別藉由16個臨限值區域,而能夠記憶藉由第1~第4位元來作表現的4位元之資料,該16個的臨限值區域,係包含有代表資料被作了刪除的刪除狀態之第1臨限值區域、和電壓準位為較第1臨限值區域而更高並代表資料被作了寫入的寫入狀態之第2~第16臨限值區域。例如,第1位元,係身為最下位之Lower位元,前述第2位元,係身為第2小之Middle位元,前述第3位元,係身為第2大之Upper位元,前述第4位元,係身為最上位之Top位元。 記憶體控制器2,係依循於從主機4而來的寫入指令而對於對非揮發性記憶體3之資料的寫入作控制。又,記憶體控制器2,係依循於從主機4而來的讀出指令而對於從非揮發性記憶體3之資料的讀出作控制。記憶體控制器2,係具備有RAM(Random Access Memory)6、ROM(Read Only Memory)7、處理器8、主機介面9、ECC(Error Check and Correct)電路10以及記憶體介面11。RAM6、處理器8、主機介面9、ECC電路10以及記憶體介面11,係藉由共通之內部匯流排12而被作連接。 如同後述一般,本實施形態之記憶體控制器2,係在使非揮發性記憶體3進行了將第1位元、第2位元、第4位元之資料作寫入的第1程式化之後,使非揮發性記憶體3進行將第3位元之資料作寫入的第2程式化。在存在於第1~第16臨限值區域中之相鄰接之臨限值區域間之15個的邊界中,被使用在第1位元之資料之值的判定中之第1邊界之數量、被使用在第2位元之資料之值的判定中之第2邊界之數量、被使用在第3位元之資料之值的判定中之第3邊界之數量、被使用在第4位元之資料之值的判定中之第4邊界之數量,此些之數量中之最大之值係為5,第2大之值係為4。記憶體控制器2,係構成為以使在記憶體胞中之臨限值區域會因應於第1位元、第2位元、第4位元之資料而成為代表資料為被作了刪除的刪除狀態之第17臨限值區域和電壓準位為較第17臨限值區域而更高並代表資料被作了寫入的寫入狀態之第18~第24臨限值區域之其中一者之臨限值區域的方式,來使非揮發性記憶體3進行第1程式化。記憶體控制器2,係構成為以使在記憶體胞中之臨限值區域會因應於第3位元之資料而從第17~第24臨限值區域中之任一者之臨限值區域來成為第1~第16臨限值區域中之2個的臨限值區域內之任一者之臨限值區域的方式,來使非揮發性記憶體3進行第2程式化。位置於2個的臨限值區域中之電壓準位為最低之臨限值區域和電壓準位為最高之臨限值區域之間的臨限值區域之個數,係為2個以內。記憶體控制器2,在使非揮發性記憶體3進行第2程式化的情況時,係構成為將第2位元之資料和第3位元之資料對於非揮發性記憶體3作輸入。 更詳細而言,記憶體控制器2,係以會使在16個的臨限值區域(第1~第16臨限值區域)間之15個的邊界中的相鄰接之臨限值區域之間,第1位元之值為相異的邊界之數量、第2位元之值為相異的邊界之數量、第3位元之值為相異的邊界之數量、以及第4位元之值為相異的邊界之數量,依序成為(1、4、5、5)、(1、5、4、5)或者是(3、3、4、5)的方式,來使非揮發性記憶體進行第1程式化以及第2程式化。 或者是,本實施形態之記憶體控制器2,係在使非揮發性記憶體3進行了將第1位元、第2位元、第4位元之資料作寫入的第1程式化之後,使非揮發性記憶體3進行將第3位元之資料作寫入的第2程式化。在存在於第1~第16臨限值區域中之相鄰接之臨限值區域間之15個的邊界中,被使用在第1位元之資料之值的判定中之第1邊界之數量、被使用在第2位元之資料之值的判定中之第2邊界之數量、被使用在第3位元之資料之值的判定中之第3邊界之數量、被使用在第4位元之資料之值的判定中之第4邊界之數量,係依序為(3、5、2、5)。記憶體控制器2,係構成為以使在記憶體胞中之臨限值區域會因應於第1位元、第2位元、第4位元之資料而成為代表資料為被作了刪除的刪除狀態之第17臨限值區域和電壓準位為較第17臨限值區域而更高並代表資料被作了寫入的寫入狀態之第18~第24臨限值區域之其中一者之臨限值區域的方式,來使非揮發性記憶體3進行第1程式化。記憶體控制器2,係構成為以使在記憶體胞中之臨限值區域會因應於第3位元之資料而從第17~第24臨限值區域中之任一者之臨限值區域來成為第1~第16臨限值區域中之2個的臨限值區域內之任一者之臨限值區域的方式,來使非揮發性記憶體3進行第2程式化。位置於2個的臨限值區域中之電壓準位為最低之臨限值區域和電壓準位為最高之臨限值區域之間的臨限值區域之個數,係為2個以內。記憶體控制器2,在使非揮發性記憶體3進行第2程式化的情況時,係構成為將第2位元之資料和第3位元之資料對於非揮發性記憶體3作輸入。 記憶體控制器2,係亦能夠以會使第17~第24臨限值區域中之第2位元之資料之值為相異的2個的臨限值區域之間之電壓準位之差成為較第1位元之資料之值為相異的2個的臨限值區域之間之電壓準位之差而更小並且成為較第4位元之資料之值為相異的2個的臨限值區域之間之電壓準位之差而更小的方式,來使非揮發性記憶體進行第1程式化。 或者是,記憶體控制器2,係亦能夠以會相較於第2位元之資料之值為相異的第1程式化時之2個的臨限值區域之間之間隔,而使對於2個的臨限值區域而藉由第3位元之資料來進行第2程式化所得到的4個的臨限值區域中之相鄰接之臨限值區域之間隔變得更廣的方式,來使非揮發性記憶體進行第2程式化。 主機介面9,係將從主機4所受訊了的指令、使用者資料(寫入資料)等輸出至內部匯流排12處。又,主機介面9,係將從非揮發性記憶體3所讀出了的使用者資料或從處理器8而來之回應等,對於主機4作送訊。 記憶體介面11,係基於處理器8之指示,而對於將使用者資料等對於非揮發性記憶體3作寫入之處理和從非揮發性記憶體3而將使用者資料讀出之處理作控制。 處理器8,係對於記憶體控制器2作統籌性的控制。處理器8,例如係為CPU(Central Processing Unit)、MPU(Micro Processing Unit)等。處理器8,當從主機4經由主機介面9而接收了指令的情況時,係進行依循於該指令之控制。例如,處理器8,係依循於從主機4而來之指令,而對於記憶體介面11下達對於非揮發性記憶體3之使用者資料以及同位檢查碼的寫入之指示。又,處理器8,係依循於從主機4而來之指令,而對於記憶體介面11下達從非揮發性記憶體3而來之使用者資料以及同位檢查碼的讀出之指示。 使用者資料,係經由內部匯流排12而被儲存於RAM6中。處理器8,係對於被儲存在RAM6中之使用者資料,而決定在非揮發性記憶體3上之儲存區域(記憶體區域)。處理器8,係對於身為寫入單位之頁面單位的資料(頁面資料),而決定在非揮發性記憶體3上之記憶體區域。在本說明書中,係將被儲存在非揮發性記憶體3之1個頁面中的使用者資料,定義為單位資料。單位資料,一般而言係被編碼並作為碼字而被儲存在非揮發性記憶體3中,但是,編碼係並非為必須。記憶體控制器2,係亦可並不進行編碼地而將單位資料儲存在非揮發性記憶體3中,但是,在圖1中,作為其中一構成例,係對於進行編碼之構成作展示。當記憶體控制器2並不進行編碼的情況時,頁面資料係與單位資料相互一致。又,係可基於1個的單位資料來產生1個的碼字,亦可基於使單位資料被作了分割後的分割資料,來產生1個的碼字。又,係亦可使用複數之單位資料,來產生1個的碼字。 處理器8,係針對各單位資料之每一者,而分別決定寫入目標之非揮發性記憶體3之記憶體區域。在非揮發性記憶體3之記憶體區域處,係被分配有物理位址。處理器8,係使用物理位址來對於單位資料之寫入目標之記憶體區域作管理。處理器8,係以指定所決定了的記憶體區域(物理位址)並將使用者資料對於非揮發性記憶體3作寫入的方式,來對於記憶體介面11下達指示。另一方面,主機4係藉由邏輯位址來對於資料作管理。因此,處理器8,係對於使用者資料之邏輯位址與物理位址之間之對應關係作管理。處理器8,當受訊了從主機4而來之包含有邏輯位址之讀出指令的情況時,係特定出與邏輯位址相對應之物理位址,並對於物理位址作指定而對於記憶體介面11下達使用者資料的讀出之指示。 在本說明書中,係將被與1個的字元線共通地作了連接的複數之記憶體胞,定義為記憶體胞群MG。1個的記憶體胞群MG,係成為寫入(程式化)之單位。在本實施形態中,非揮發性記憶體3,係身為4bit/Cell之NAND記憶體5,1個的記憶體胞群MG係具備有4位元×位元數之量的資料量。被寫入至各記憶體胞中之各位元,係對應於互為相異之頁面。在本實施形態中,係將1個的記憶體胞群MG之4頁面,稱作Lower頁面(第1頁面)、Middle頁面(第2頁面)、Upper頁面(第3頁面)、Top頁面(第4頁面)。 ECC電路10,係將被儲存在RAM6中之使用者資料作編碼,並產生碼字。又,ECC電路10,係將從非揮發性記憶體3所讀出了的碼字作解碼。ECC電路10,係將在從非揮發性記憶體3所讀出了的碼字中所包含之位元錯誤作了訂正之後,解碼為使用者資料。 RAM6,係將從主機4所受訊了的使用者資料暫時性地作儲存,直到將其記憶至非揮發性記憶體3中為止,或者是將從非揮發性記憶體3所讀出了的資料暫時性地作儲存,直到對於主機4作送訊為止。RAM6,例如係身為SRAM(Static Random Access Memory)或DRAM(Dynamic Random Access Memory)等之泛用記憶體。 在圖1中,係對於記憶體控制器2為分別具備有ECC電路10和記憶體介面11的構成例作展示。但是,ECC電路10係亦可被內藏於記憶體介面11中。又,ECC電路10係亦可被內藏於非揮發性記憶體3中。 當從主機4而受訊了寫入要求的情況時,記憶體系統1係如同下述一般地而動作。處理器8,係將寫入資料暫時性地儲存於RAM6中。處理器8,係讀取被儲存於RAM6中之資料,並輸入至ECC電路10處。ECC電路10,係將被輸入了的資料作編碼,並將碼字輸入至記憶體介面11處。記憶體介面11,係將被輸入了的碼字對於非揮發性記憶體3作寫入。 當從主機4而受訊了讀取要求的情況時,記憶體系統1係如同下述一般地而動作。記憶體介面11,係將從非揮發性記憶體3所讀出了的碼字輸入至ECC電路10處。ECC電路10,係將被輸入了的碼字解碼,並將被作了解碼後之資料暫時性地儲存於RAM6中。處理器8,係將被儲存在RAM6中之資料,經由主機介面9來送訊至主機4處。另外,非揮發性記憶體3,係亦會有藉由複數之晶片而被構成的情況,非揮發性記憶體3和記憶體介面11,係亦可經由貫通通孔(TSV:Through Silicon Via)來作連接。 另外,圖1中所示之記憶體控制器2之構成,係僅為其中一例,而亦可採用使內部匯流排12成為分割構造或階層構造、或者是被連接有附加性之功能區塊等的其他之各式各樣的衍生性之形態。 圖2,係為對於本實施形態的非揮發性記憶體3之內部構成之其中一例作展示之區塊圖。非揮發性記憶體3,係具備有NAND I/O介面21、控制部22、NAND記憶體胞陣列(記憶體胞部)23、以及頁面緩衝(第2記憶部)24。非揮發性記憶體3,例如係被形成於半導體基板(例如矽基板)上並被晶片化。 控制部22,係基於經由NAND I/O介面21而從記憶體控制器2而來之指令等,而對於非揮發性記憶體3之動作作控制。具體而言,控制部22,在被輸入有寫入要求的情況時,係以將被要求了寫入的資料對於NAND記憶體胞陣列23上之被指定了的位址來作寫入的方式而進行控制。又,控制部22,在被輸入有讀出要求的情況時,係以將被要求了讀出的資料從NAND記憶體胞陣列23而讀出並經由NAND I/O介面21來對於記憶體控制器2作輸出的方式來進行控制。頁面緩衝24,係身為在NAND記憶體胞陣列23之寫入時將從記憶體控制器2所輸入了的資料暫時性地作儲存並將從NAND記憶體胞陣列23所讀出了的資料暫時性地作儲存之緩衝。 如同後述一般,控制部22,係基於將藉由1st階段之程式化而被作了程式化的資料讀出所得到之資料、和在1st階段以及2nd階段之程式化時被重複作輸入的位元之資料、以及藉由2nd階段之程式化而被作了程式化的位元之輸入資料,來決定藉由2nd階段之程式化而被作程式化的位元之資料之臨限值電壓。 控制部22,係具備有震盪器31、和序列器32、和指令使用者介面33、和電壓供給部34、和列計數器35、以及序列存取控制器36。又,NAND記憶體胞陣列23,係具備有行解碼器37和感測放大器38。 NAND I/O介面21,係為用以與記憶體控制器2之間而將IO訊號以及控制訊號作送受訊的電路。指令使用者介面33,係將從記憶體控制器2而經由IO訊號線所受訊了的指令、位址以及資料中之指令以及位址,基於控制訊號來取得之。指令使用者介面33,係將所取得了的指令以及位址交付給序列器32。 震盪器31,係為產生時脈之電路。藉由震盪器31所產生了的時脈,係被供給至包含序列器32之各構成要素處。序列器32,係身為藉由從震盪器31所供給的時脈而被作驅動之狀態機(State Machine)。序列器32,係實行對於NAND記憶體胞陣列23之存取等的控制。例如,序列器32,係因應於從指令使用者介面33所受訊了的指令,來下達各種之用以對於內部電壓或動作時序等作控制的指令。又,序列器32,係將在從指令使用者介面33所受訊了的位址中所包含之區塊位址以及頁面位址,供給至行解碼器37處。進而,序列器32,係將在從指令使用者介面33所受訊了的位址中所包含之列位址,供給至列計數器35處。 電壓供給部34,係產生被供給至字元線處之各種之內部電壓和被供給至位元線處之各種之內部電壓,並對於行解碼器37和感測放大器38作供給。列計數器35,在程式化動作或讀取動作時,係將從序列器32所供給了的列位址作為開頭,並依循於從序列存取控制器36所供給的控制訊號來使列位址依序前進。 頁面緩衝24,在程式化動作時,係將從序列存取控制器36所受訊了的資料依序儲存在上述列計數器35所指定了的列位址區域處。又,頁面緩衝24,在讀取動作時,係將被儲存的資料中之藉由上述列位址所指定了的列位址之資料依序送至序列存取控制器36處。 序列存取控制器36,在程式化動作時,係將從NAND I/O介面21而於IO訊號線之每位元寬幅處序列地受訊了的資料,儲存在頁面緩衝24中。又,序列存取控制器36,在讀取動作時,係從頁面緩衝24而於IO訊號線之每位元寬幅處序列地受訊了的資料,送至NAND I/O介面21處。 行解碼器37,在程式化動作以及讀取動作時,係將區塊位址以及頁面位址作解碼,並選擇與在存取目標之區塊BLK中所包含的成為存取對象之頁面相對應的字元線。之後,各行解碼器37,係對於選擇字元線以及非選擇字元線而施加適當之電壓。 感測放大器38,在程式化動作時,係將被儲存於頁面緩衝24中之相對應之資料傳輸至記憶體胞電晶體處。又,感測放大器38,在讀取動作時,係對於從選擇字元線而讀出至了位元線處之資料作感測,並將所得到的資料儲存於頁面緩衝24中。被儲存在頁面緩衝24中之資料,係經由序列存取控制器36以及NAND I/O介面21而被送至記憶體控制器2處。 圖3,係為對於3維構造的NAND記憶體胞陣列23之其中一例作展示之電路圖。圖3,係對於3維構造的NAND記憶體胞陣列23內的複數之區塊中之1個的區塊BLK之電路構成作展示。NAND記憶體胞陣列23之其他區塊,亦係具備有與圖3相同之電路構成。另外,本實施形態,係亦可對於2維構造之記憶體胞作適用。 如同圖3中所示一般,區塊BLK,例如係具備有4個的指(finger)FNG(FNG0~FNG3)。又,各個的指FNG,係包含複數之NAND字串NS。NAND字串NS之各者,例如係具備有被作了串接連接之8個的記憶體胞電晶體MT(MT0~MT7)、和選擇電晶體ST1、ST2。在本說明書中,係會有將各個的指FNG稱作字串St的情況。 另外,NAND字串NS內之記憶體胞電晶體MT的個數,係並不被限定於8個。記憶體胞電晶體MT,係於選擇電晶體ST1、ST2之間,以使其之電流路徑被作串聯連接的方式而被作配置。此串聯連接之其中一端側之記憶體胞電晶體MT7的電流路徑,係被與選擇電晶體ST1之電流路徑之其中一端作連接,另外一端側之記憶體胞電晶體MT0之電流路徑,係被與選擇電晶體ST2之電流路徑之其中一端作連接。 指FNG0~FNG3之各者之選擇電晶體ST1之閘極,係分別被與選擇閘極線SGD0~SGD3作共通連接。另一方面,選擇電晶體ST2之閘極,係在複數之指FNG間而被與同一之選擇閘極線SGS作共通連接。又,位於同一區塊BLK內的記憶體胞電晶體MT0~MT7之控制閘極,係分別被與字元線WL0~WL7作共通連接。亦即是,字元線WL0~WL7以及選擇閘極線SGS,係於同一區塊BLK內之複數之指FNG0~FNG3之間而被共通地作連接,相對於此,選擇閘極線SGD,係就算是於同一區塊BLK內亦係在指FNG0~FNG3之各者處而分別相互獨立。 在構成NAND字串NS之記憶體胞電晶體MT0~MT7的控制閘極電極處,係分別被連接有字元線WL0~WL7,又,同一之指FNG內之各NAND字串NS中之第i個的記憶體胞電晶體MTi(i=0~n),係藉由同一之字元線WLi(i=0~n)而被作共通連接。亦即是,區塊BLK內的同一行之記憶體胞電晶體MTi之控制閘極電極,係被與同一之字元線WLi作連接。 各NAND字串NS,係被與字元線WLi作連接並且亦被與位元線作連接。各NAND字串NS內之各記憶體胞,係能夠藉由對於字元線WLi以及選擇閘極線SGD0~SGD3作辨識之位址和對於位元線作辨識之位址,來作辨識。如同上述一般,位於同一區塊BLK內的記憶體胞(記憶體胞電晶體MT)之資料,係整批地被刪除。另一方面,資料之讀出以及寫入,係以物理扇區MS之單位來進行。1個物理扇區MS,係被與1個的字元線WLi作連接,並且包含有隸屬於1個的指FNG之複數之記憶體胞。 記憶體控制器2,係將1個的指內之被與1根的字元線作連接之所有的NAND字串NS作為單位,而進行寫入(程式化)。因此,記憶體控制器2所進行程式化之資料量的單位,係成為4位元×位元線數量。 在讀取動作以及程式化動作時,因應於物理位址,1根的字元線WLi以及1根的選擇閘極線SGD係被作選擇,物理扇區MS係被選擇。另外,在本說明書中,係將對於記憶體胞而將資料作寫入一事,因應於需要而稱作程式化(program)。 圖4,係為3維構造的NAND記憶體5之NAND記憶體胞陣列23之一部分區域的剖面圖。如同圖4中所示一般,在半導體基板之p型井區域(P-well)41上,係於上下方向而被形成有複數之NAND字串NS。亦即是,在p型井區域41上,係於上下方向,而被形成有作為選擇閘極線SGS而起作用之複數之配線層42、作為字元線WLi而起作用之複數之配線層43、以及作為選擇閘極線SGD而起作用之複數之配線層44。 又,係被形成有貫通此些之配線層42、43、44並到達p型井區域41處的記憶體洞45。在記憶體洞45之側面處,係依序被形成有區塊絕緣膜46、電荷積蓄層47以及閘極絕緣膜48,進而,在記憶體洞45內係被埋入有導電膜49。導電膜49,係作為NAND字串NS之電流路徑而起作用,並身為在記憶體胞電晶體MT和選擇電晶體ST1以及ST2之動作時而被形成有通道的區域。 在各NAND字串NS處,係於p型井區域41上,依序被層積有選擇電晶體ST2、複數之記憶體胞電晶體MT、以及選擇電晶體ST1。在導電膜49之上端處,係被形成有作為位元線BL而起作用之配線層。 進而,在p型井區域41之表面內,係被形成有n+型雜質擴散層以及p+型雜質擴散層。在n+型雜質擴散層上,係被形成有接觸插銷50,在接觸插銷50上,係被形成有作為源極線SL而起作用之配線層。又,在p+型雜質擴散層上,係被形成有接觸插銷51,在接觸插銷51上,係被形成有作為井配線CPWELL而起作用之配線層。井配線CPWELL,係為了施加刪除電壓而被使用。 圖4中所示之NAND記憶體胞陣列23,係在圖4之紙面的深度方向上被作複數配列,藉由在深度方向上而並排為1列的複數之NAND字串NS之集合,1個的指FNG係被形成。其他之指FNG,例如係被形成於圖4之左右方向上。在圖3中,雖係圖示有4個的指FNG0~3,但是,在圖4中,係對於在接觸插銷50、51之間配置有3個的指的例子作展示。 圖5,係為對於第1實施形態之臨限值區域的其中一例作展示之圖。圖5,係對於4位元/Cell之非揮發性記憶體3的臨限值區域之分布之其中一例作展示。在非揮發性記憶體3處,係藉由被積蓄在記憶體胞之電荷積蓄層47中的電子之電荷量,來記憶資訊。各記憶體胞,係具備有與電子之電荷量相對應的臨限值電壓。又,係使記憶在記憶體胞中之複數之資料值,分別與臨限值電壓為相異的複數之區域(臨限值區域)相對應。 圖5之S0~S15,係對於16個的臨限值區域內之臨限值分布作展示。圖5之橫軸,係代表臨限值電壓,縱軸,係為記憶體胞數(胞數)。臨限值分布,係為臨限值所變動之範圍。如此這般,各記憶體胞,係具備有藉由15個的邊界所劃分出之16個的臨限值區域,各臨限值區域,係具備有固有之臨限值分布。 在本實施形態中,係將臨限值電壓乃成為Vr1以下之區域,稱作區域S0,並將臨限值電壓成為較Vr1更大並為Vr2以下之區域,稱作區域S1,並將臨限值電壓成為較Vr2更大並為Vr3以下之區域,稱作區域S2,並且將臨限值電壓成為較Vr3更大並為Vr4以下之區域,稱作區域S3。又,在本實施形態中,係將臨限值電壓成為較Vr4更大並為Vr5以下之區域,稱作區域S4,並將臨限值電壓成為較Vr5更大並為Vr6以下之區域,稱作區域S5,並將臨限值電壓成為較Vr6更大並為Vr7以下之區域,稱作區域S6,並且將臨限值電壓成為較Vr7更大並為Vr8以下之區域,稱作區域S7。又,在本實施形態中,係將臨限值電壓成為較Vr8更大並為Vr9以下之區域,稱作區域S8,並將臨限值電壓成為較Vr9更大並為Vr10以下之區域,稱作區域S9,並將臨限值電壓成為較Vr10更大並為Vr11以下之區域,稱作區域S10,並且將臨限值電壓成為較Vr11更大並為Vr12以下之區域,稱作區域S11。又,在本實施形態中,係將臨限值電壓成為較Vr12更大並為Vr13以下之區域,稱作區域S12,並將臨限值電壓成為較Vr13更大並為Vr14以下之區域,稱作區域S13,並將臨限值電壓成為較Vr14更大並為Vr15以下之區域,稱作區域S14,並且將臨限值電壓成為較Vr15更大之區域,稱作區域S15。 又,係將與區域S0~S15相對應之臨限值分布,稱作第1~第16分布。Vr1~Vr15,係身為成為各臨限值區域之邊界的臨限值電壓。 在非揮發性記憶體3中,係使複數之資料值分別與記憶體胞之複數之臨限值區域相對應。將此對應稱作資料編碼。預先對於此資料編碼作制定,在資料之寫入(程式化)時,係依循於資料編碼而以會成為與所記憶之資料值相對應之臨限值區域內的方式,來對於記憶體胞內之電荷積蓄層47注入電荷。而,在讀出時,係對於記憶體胞施加讀出電壓,並根據記憶體胞之臨限值為較讀出電壓而更低或更高一事,來決定資料邏輯。 在資料之讀出時,根據臨限值係為較讀出對象之邊界的讀出準位而更低或更高一事,資料之邏輯係被決定。當臨限值為最低的情況時,係身為「刪除」狀態,所有的位元之資料係被定義為“1”。當臨限值為較「刪除」狀態而更高的情況時,係身為「被作了程式化」之狀態,依循於編碼,資料係被定義為“1”或“0”。 圖6A,係為對於第1實施形態之資料編碼的其中一例作展示之圖,並對於1-4-5-5資料編碼之其中一例作展示。在本實施形態中,係使圖5中所示之16個的臨限值區域分別對應於4位元之16個的資料值。圖6A中之臨限值電壓與對應於Top、Upper、Middle、Lower頁面的位元之資料值之間之關係,係如下所示。 ・臨限值電壓為位於S0區域內之記憶體胞,係身為記憶有“1111”之狀態。 ・臨限值電壓為位於S1區域內之記憶體胞,係身為記憶有“0111”之狀態。 ・臨限值電壓為位於S2區域內之記憶體胞,係身為記憶有“0011”之狀態。 ・臨限值電壓為位於S3區域內之記憶體胞,係身為記憶有“1011”之狀態。 ・臨限值電壓為位於S4區域內之記憶體胞,係身為記憶有“1001”之狀態。 ・臨限值電壓為位於S5區域內之記憶體胞,係身為記憶有“0001”之狀態。 ・臨限值電壓為位於S6區域內之記憶體胞,係身為記憶有“0101”之狀態。 ・臨限值電壓為位於S7區域內之記憶體胞,係身為記憶有“1101”之狀態。 ・臨限值電壓為位於S8區域內之記憶體胞,係身為記憶有“1100”之狀態。 ・臨限值電壓為位於S9區域內之記憶體胞,係身為記憶有“1110”之狀態。 ・臨限值電壓為位於S10區域內之記憶體胞,係身為記憶有“1010”之狀態。 ・臨限值電壓為位於S11區域內之記憶體胞,係身為記憶有“1000”之狀態。 ・臨限值電壓為位於S12區域內之記憶體胞,係身為記憶有“0000”之狀態。 ・臨限值電壓為位於S13區域內之記憶體胞,係身為記憶有“0100”之狀態。 ・臨限值電壓為位於S14區域內之記憶體胞,係身為記憶有“0110”之狀態。 ・臨限值電壓為位於S15區域內之記憶體胞,係身為記憶有“0010”之狀態。 圖6B,係為對於第1實施形態之資料編碼的另外一例作展示之圖,並對於4-3-4-4資料編碼之其中一例作展示。圖6B中之臨限值電壓與對應於Top、Upper、Middle、Lower頁面的位元之資料值之間之關係,係如下所示。 ・臨限值電壓為位於S0區域內之記憶體胞,係身為記憶有“1111”之狀態。 ・臨限值電壓為位於S1區域內之記憶體胞,係身為記憶有“0111”之狀態。 ・臨限值電壓為位於S2區域內之記憶體胞,係身為記憶有“0011”之狀態。 ・臨限值電壓為位於S3區域內之記憶體胞,係身為記憶有“1011”之狀態。 ・臨限值電壓為位於S4區域內之記憶體胞,係身為記憶有“1010”之狀態。 ・臨限值電壓為位於S5區域內之記憶體胞,係身為記憶有“1110”之狀態。 ・臨限值電壓為位於S6區域內之記憶體胞,係身為記憶有“1100”之狀態。 ・臨限值電壓為位於S7區域內之記憶體胞,係身為記憶有“1000”之狀態。 ・臨限值電壓為位於S8區域內之記憶體胞,係身為記憶有“1001”之狀態。 ・臨限值電壓為位於S9區域內之記憶體胞,係身為記憶有“0001”之狀態。 ・臨限值電壓為位於S10區域內之記憶體胞,係身為記憶有“0000”之狀態。 ・臨限值電壓為位於S11區域內之記憶體胞,係身為記憶有“0010”之狀態。 ・臨限值電壓為位於S12區域內之記憶體胞,係身為記憶有“0110”之狀態。 ・臨限值電壓為位於S13區域內之記憶體胞,係身為記憶有“0100”之狀態。 ・臨限值電壓為位於S14區域內之記憶體胞,係身為記憶有“0101”之狀態。 ・臨限值電壓為位於S15區域內之記憶體胞,係身為記憶有“1101”之狀態。 如同圖6A以及圖6B中所示一般,係能夠在臨限值電壓之各區域處而分配各記憶體胞之4位元之資料的邏輯。另外,在記憶體胞為未寫入的狀態(「刪除」之狀態)下,記憶體胞之臨限值電壓係位於S0區域內。又,於在此所示之符號中,係如同「在S0(刪除)狀態下係記憶“1111”之資料,在S1狀態下係記憶“0111”之資料」一般地,而在任意之2個的鄰接之區域間僅使資料作1個位元的變化。如此這般,圖6A以及圖6B中所示之資料編碼,係身為在任意之2個的相鄰接之區域間僅使資料作1個位元的變化之格雷碼。 在圖6A所示之本實施形態之編碼中,成為用以判定各頁面之位元值的邊界之臨限值電壓,係如下所示。 ・成為用以判定Top頁面之位元值的邊界之臨限值電壓,係為Vr1、Vr3、Vr5、Vr7、Vr12。 ・成為用以判定Upper頁面之位元值的邊界之臨限值電壓,係為Vr2、Vr6、Vr10、Vr13、Vr15。 ・成為用以判定Middle頁面之位元值的邊界之臨限值電壓,係為Vr4、Vr9、Vr11、Vr14。 ・成為用以判定Lower頁面之位元值的邊界之臨限值電壓,係為Vr8。 如此這般,成為用以判定位元值的邊界之臨限值電壓之數量(以下,稱作邊界數量),係於Lower頁面、Middle頁面、Upper頁面、Top頁面而分別為1、4、5、5。以下,將此種編碼,使用Lower頁面、Middle頁面、Upper頁面、Top頁面之各者的邊界數量而稱作1-4-5-5編碼。 本實施形態之第1特徵,係在於:各頁面之位元值所變化的邊界數量,最大係為5。在將16個的狀態以4位元來作表現的情況時,最大邊界數量之最小值係為4,圖6之編碼,係僅較此而更多出1,位元錯誤之偏頗係變少。如此這般,由本實施形態所致之記憶體系統1,係藉由具備有第1特徵,而能夠對位元錯誤率作抑制,又,係亦能夠針對各頁面而對於位元錯誤之偏頗作抑制。 本實施形態之第2特徵,係在於:Lower頁面之邊界數量係為1個,Middle頁面之邊界數量係為4個,而成為能夠以「將Lower頁面與Middle頁面統整為一的第1階段之程式化」和「將Upper頁面與Top頁面統整為一的第2階段之程式化」之2個的階段,來進行程式化。 本實施形態之第3特徵,係在於:從藉由第1階段之程式化所產生的臨限值區域起而至藉由第2階段之程式化所產生的臨限值區域之變化幅度係為少。亦即是,此係指臨限值區域之變化幅度係為小。若是臨限值區域之變化幅度為越小,則係成為越難以受到鄰接胞間干涉的影響。針對上述之第1~第3特徵,於後再作詳細敘述。 非揮發性記憶體3之控制部22,係基於圖6A或圖6B中所示之編碼,來對於對NAND記憶體胞陣列23之程式化以及從NAND記憶體胞陣列23之讀出作控制。 3維記憶體胞,其記憶體胞之微細化係並未如同2維記憶體胞一般地進展。因此,在3維記憶體胞中,若是身為相鄰接之記憶體胞彼此之間隔為廣的世代,則胞間之相互干涉係為小。於此情況,一般而言,係採用將各記憶體胞之所有位元同時地(例如,若是將各位元分配至相異之頁面處,則係將所有頁面同時地)作程式化之手法。 在將各記憶體胞之所有位元同時地作程式化的情況時,作為資料編碼,係並不特別對於組合作限定。只要基於所有位元之資料,而決定要位置在16個的臨限值區域之何者處,並以從身為刪除狀態之S0之區域起而成為所被決定了的臨限值區域的方式來進行程式化即可。於此情況,一般而言,係採用像是4-4-3-4資料編碼一般的會使最大邊界數量取最小值一般的資料編碼。在4-4-3-4資料編碼中,在將16個的臨限值區域間之15個的邊界分配至4個的頁面處時,係對於Lower頁面分配4個邊界,並對於Middle頁面分配4個邊界,並對於Upper頁面分配3個邊界,並且對於Top頁面分配4個邊界。於此資料編碼的情況時,由於頁面間之邊界數量之偏頗係為小,因此,其結果,頁面間之位元錯誤率之偏頗係變小。此係因為,位元錯誤之原因的絕大部分,係起因於臨限值偏移至相鄰接之臨限值區域處一事所引發者,而若是具有越多的邊界數量的頁面,則位元錯誤數量會變得越多之故。此事,由於係會導致「就算是作為記憶體胞之錯誤率為相同也必須要將對於對頁面資料之錯誤作訂正一事而言所必要的ECC電路10之訂正能力強化」,因此,在為了對於針對從主機4而來之寫入要求的記憶體系統1之回應性能、成本以及消耗電力之惡化作抑制一事上,亦為有效。又,起因於邊界數量之偏頗所引發的讀出速度之偏頗亦係變小。 又,在4位元/Cell之NAND記憶體5中,由於相鄰接之臨限值區域之間隔係為狹窄,因此,起因於胞間相互干涉所導致的影響,相較於1位元/Cell或2位元/Cell之NAND記憶體5係變大。因此,在近年之微細化有所進展的世代之NAND記憶體5中,一般而言,係為了對於胞間相互干涉作抑制,而採用有使用複數之程式化階段、例如使用2個的程式化階段(以下,係亦會有單純稱作階段的情形),來對於記憶體胞之電荷積蓄層47而逐次少量地注入電荷之程式化方法(Foggy-Fine程式化)。在此Foggy-Fine程式化中,於在第1個的階段(Foggy階段)中而進行了對於記憶體胞之寫入之後,係進行鄰接胞之寫入,之後,回到最初之記憶體胞處,並進行第2個的階段(Fine階段)之寫入。於此情況中之各階段,係身為程式化之實行單位,對應於1根的字元線WLi之記憶體胞的程式化,係藉由實行2個的程式化階段而結束。 不論是在第1個的階段之程式化中或者是在第2個的階段之程式化中,均係使用16個的臨限值區域而實行程式化。在第1個的階段之程式化結束時的臨限值區域之臨限值分布,係具備有較在最終的資料編碼中之臨限值區域之臨限值分布而更廣的寬幅。亦即是,在Foggy階段中,係進行Foggy(粗略)之寫入。在此Foggy階段之程式化中,輸入資料係4個頁面全部均為必要。Foggy階段之程式化後的臨限值分布,由於係身為相鄰接之分布為相互重疊的中間狀態,因此係並無法進行資料的讀出。在身為第2個的階段之Fine階段的程式化中,係使Foggy階段之程式化後之臨限值區域移動至在最終的資料編碼中之臨限值區域處。亦即是,在Fine階段中,係進行Fine之寫入。此Fine階段之程式化,亦同樣的,輸入資料係4個頁面全部均為必要。Fine階段之程式化後的臨限值分布,由於係身為相鄰接之分布為相互分離了的最終狀態,因此在Fine階段之程式化後,係能夠進行資料的讀出。 在4-4-3-4資料編碼的情況時,雖然邊界數量之偏頗係為少,但是,在Foggy-Fine程式化之資料輸入中,於各階段處係需要進行4個頁面之量的資料輸入。此係會導致在資料輸入中所耗費的時間之增大,並使相對於從主機4而來之寫入要求的記憶體系統1之回應性能惡化。又,在記憶體系統1內,會使用以將為了對於NAND記憶體5作輸入的資料預先作保持之寫入緩衝(第1記憶部)的緩衝量(寫入緩衝量)增大。此寫入緩衝,一般而言,係為被分配有記憶體系統1內之RAM6的一部分之區域者。 作為針對此些問題之對策,在本實施形態中,記憶體系統1,係對於具有3維構造之非揮發性記憶體3,而採用1-4-5-5資料編碼,並進而以2個的階段來實施頁面單位(page by page)之寫入。藉由此,在本實施形態中,就算是於具備有3維構造之非揮發性記憶體3中,亦能夠對於胞間相互干涉和各頁面間之位元錯誤率之偏頗作抑制,並同時將記憶體控制器2之寫入緩衝量降低。本實施形態之寫入緩衝,係將第1~第4位元(Lower頁面、Middle頁面、Upper頁面以及Top頁面之各資料)中的於第1程式化以及第2程式化時會被重複輸入的位元之資料,在開始了第2程式化之後設為能夠廢棄或無效化,並將其以外的位元之資料,在開始了第1程式化之後設為能夠廢棄或無效化。 於此,針對鄰接記憶體胞間干涉作說明。被積蓄在某1個的記憶體胞之電荷積蓄層47中的電荷,係會對於相鄰接之記憶體胞的電場造成擾亂,其結果,會賦予使在將相鄰接之記憶體胞讀出時的臨限值電壓產生變動之雜訊。起因於「在某一電場條件下而被實施有程式化(program)和驗證(verify),並在程式化結束之後,相鄰接之記憶體胞被程式化為相異之電荷」一事,讀出精確度係會成為有所劣化。此鄰接記憶體胞間干涉,係隨著記憶體裝置之製造技術的微細化而記憶體胞之間隔縮小一事,而變得顯著。又,此鄰接記憶體胞間干涉,若是有所擴大,則會在被與同一字元線WLi上之相異之位元線作連接的鄰接記憶體胞彼此之間而產生。 鄰接記憶體胞間干涉,係能夠藉由將在「程式化以及驗證時」和「相鄰接之記憶體胞被作了程式化之後的讀出時」之間之記憶體胞之電場條件的差異縮小一事,而有所紓緩。作為將在被與同一字元線WLi上之相異之位元線作連接的鄰接記憶體胞彼此之鄰接記憶體胞間干涉作降低的其中一個方法,係存在有將程式化分割成複數之階段並以在各階段之間而不會於電荷積蓄層47內之電荷量處產生大幅度之變化的方式來實行程式化的方法。 在本實施形態之程式化序列中,1根的字元線WLi上之4位元,係藉由2個的程式化階段、亦即是藉由1st階段和2nd階段,而被程式化。各程式化階段,係身為程式化之實行單位,本實施形態之記憶體系統1,係將對於記憶體胞之4位元資料的寫入,藉由實行2個的程式化階段而結束。又,在本實施形態中,於2個的程式化階段之各者處,係使用有4位元之某些的頁面之資料。具體而言,在1st階段之程式化中,係使用有Lower頁面資料、Middle頁面以及Top頁面之資料,在2nd階段之程式化中,係使用有Middle頁面及Upper頁面以及Top頁面之資料。 圖7,係為對於第1實施形態中之程式化後的臨限值區域作展示之圖。在圖7中,係展示有在對於記憶體胞而進行了1st階段和2nd階段之程式化之後的臨限值區域。圖7之(T1),係對於身為程式化前之初期狀態的刪除狀態之臨限值區域作展示。圖7之(T2),係對於1st階段之程式化(第1程式化)後的臨限值區域作展示。圖7之(T3),係對於2nd階段之程式化(第2程式化)後的臨限值區域作展示。 如同圖7之(T1)中所示一般,NAND記憶體胞陣列23之所有記憶體胞,在未寫入的狀態(「刪除」之狀態)下,係身為分布S0之狀態。非揮發性記憶體3之控制部22,係如同圖7之(T2)中所示一般,在1st階段之程式化中,係因應於寫入(記憶)至Lower頁面及Middle頁面以及Top頁面中之位元值,來針對各記憶體胞之每一者,而維持於分布S0之狀態,或者是注入電荷而使其移動至較分布S0而更上方之分布處。 具體而言,控制部22,係以「當寫入至Lower頁面及Middle頁面以及Top頁面中之位元值係均為“1”的情況時,係並不注入電荷,當寫入至Lower頁面及Middle頁面以及Top頁面處的位元值只要有任1個為“0”的情況時,則係注入電荷並使臨限值電壓移動至較高處」的方式,來進行程式化。 亦即是,當寫入至Lower頁面和Middle頁面以及Top頁面處之位元值係身為“011”的情況時,係使其移動至分布S1,又,當寫入至Lower頁面和Middle頁面以及Top頁面處之位元值係身為“101”的情況時,係使其移動至分布S4,又,當寫入至Lower頁面和Middle頁面以及Top頁面處之位元值係身為“001”的情況時,係使其移動至分布S5,又,當寫入至Lower頁面和Middle頁面以及Top頁面處之位元值係身為“100”的情況時,係使其移動至分布S8,又,當寫入至Lower頁面和Middle頁面以及Top頁面處之位元值係身為“110”的情況時,係使其移動至分布S9,又,當寫入至Lower頁面和Middle頁面以及Top頁面處之位元值係身為“000”的情況時,係使其移動至分布S12,又,當寫入至Lower頁面和Middle頁面以及Top頁面處之位元值係身為“010”的情況時,係使其移動至分布S14。 於此,較理想,分布S1、分布S4、分布S5、分布S8、分布S9、分布S12、分布S14,係以使臨限值電壓會多少有所降低的方式來將臨限值區域之寬幅擴廣並粗略地進行程式化。亦即是,係將後述之程式化電壓脈衝的上升幅度增大。藉由此,係能夠將在寫入中所需要的時間縮短。又,藉由以使臨限值電壓會多少有所降低的方式來進行程式化,係能夠以在2nd階段之程式化中而最終性地會成為特定之寬幅的方式來將臨限值分布區域之寬幅作寫入。 又,較理想,相鄰接之分布S8與分布S9、以及相鄰接之臨限值分布S12與分布S14,該些之各者之間隔,係設為較與其他之相鄰接之分布之間之間隔而更窄。此些之將間隔作了縮窄的鄰接臨限值分布彼此之寫入位元值,係Middle頁面之資料為相異。亦即是,1st階段之程式化後的資料,由於看起來係如同二元值(binary)一般,因此,係能夠進行Lower頁面與Middle頁面資料以及Top頁面之讀出,但是,係藉由將Middle頁面之資料為相異的臨限值分布之間隔縮窄,來將Lower頁面與Top頁面之資料為相異的臨限值分布之間隔確保為廣,並使Lower頁面與Top頁面之讀出時的餘裕(margin)增加。圖7之(T2)中所示的臨限值分布S0~S14,係對應於第17~第24臨限值區域。 接著,如同圖7之(T3)中所示一般,在2nd階段之程式化中,於資料之寫入中係需要Middle頁面與Upper頁面之2個頁面。又,非揮發性記憶體3之控制部22,係以在2nd階段之程式化後之臨限值分布會以使各鄰接之分布被作了分離的最終狀態而成為16值之準位的方式,來進行程式化。在2nd階段之程式化後,係能夠進行所有的頁面資料之讀出。 在2nd階段之程式化中,若是記憶體胞之臨限值的從1st階段之程式化結束時起的變化幅度越大,則鄰接胞間干涉係會變得越大。故而,較理想,係使記憶體胞之臨限值分布之變化量為最大的臨限值分布之變化量成為最小。若依據本實施例,則此最大的臨限值分布之變化量,係為3個的臨限值分布之量,而身為S0變化為S3的情況和S4變化為S7的情況以及S8變化為S11的情況。圖7之(T3)中所示的臨限值分布S0~S15,係對應於第1~第16臨限值區域。 另外,典型而言,程式化,係藉由施加1次或複數次之程式化電壓脈衝,而進行之。在複數次之程式化施加脈衝中,係使電壓值階段性地上升。在各程式化電壓脈衝之後,為了對於記憶體胞是否超越臨限值邊界準位地而作了移動一事作確認,係進行有被稱作驗證(verify)之讀出。藉由反覆進行此施加和讀出,係成為能夠使記憶體胞之臨限值移動至特定之臨限值分布的範圍之中。 另外,控制部22,雖然亦可對於1根的字元線WLi,來連續實施1st階段之程式化和2nd階段之程式化,但是,為了將鄰接記憶體胞間干涉之影響降低,係亦可橫跨複數之字元線WLi地,來以非連續性之順序而實施程式化。 圖8A,係為對於第1實施形態之程式化順序的第1例作展示之圖。圖8B,係為對於第1實施形態之程式化順序的第2例作展示之圖。圖8C,係為對於第1實施形態之程式化順序的第3例作展示之圖。在圖8A~圖8C中,為了將鄰接記憶體胞間干涉之影響縮小,係以2個的程式化階段來進行程式化。圖8A,係對於在各區塊內之各字元線處被連接有1個的字串St之NAND記憶體5中的程式化順序之其中一例作展示。又,圖8B以及圖8C,係對於在各區塊內之各字元線處被連接有4個的字串St之NAND記憶體5中的程式化順序之其中一例作展示。另外,在圖8B以及圖8C中,係將被與各字元線作了連接之4個的字串St,標記為String0~3。 若是開始進行寫入,則控制部22,係以特定之非連續性之順序來一面橫跨字元線WLi一面進行各程式化階段。亦即是,針對同一字元線之1st階段和2nd階段,係並不被連續性地實行,而是在身對某一字元線而進行了1st階段之程式化之後,針對相異之字元線而進行2nd階段之程式化。 若是在對於某一字元線而直到2nd階段為止地來結束了程式化之後,針對相鄰接之字元線而連續進行1st階段以及2nd階段之程式化,則臨限值電壓之變動量係會變大。而,若是鄰接字元線之臨限值電壓之變動量為大,則字元線間之鄰接記憶體胞間干涉係會變大。故而,為了將字元線間之鄰接記憶體胞間干涉縮小,在使字元線直到2nd階段為止地而結束了程式化之後,將鄰接字元線之臨限值電壓之變動量縮小一事係為有效。若是身為圖8A之序列,則在對於某一字元線而直到2nd階段為止地來結束了程式化之後的鄰接字元線之程式化階段,係成為僅有2nd階段。 在以圖8A之程式化順序來對於3維構造之NAND記憶體5進行程式化的情況時,若是開始進行寫入,則控制部22,係基於從處理器8而來之指示,而藉由以下之(1)~(9)所示之順序來實行程式化。控制部22,係基於從處理器8而來之指示,而進行對於NAND記憶體5之程式化,但是,以下,係將有關基於從處理器8而來之指示一事的內容之記載省略。 (1)首先,控制部22,係實施字元線WL0之1st階段的程式化ST11。 (2)接著,控制部22,係實施字元線WL1之1st階段的程式化ST12。 (3)接著,控制部22,係實施字元線WL0之2nd階段的程式化ST13。 (4)接著,控制部22,係實施字元線WL2之1st階段的程式化ST14。 (5)接著,控制部22,係實施字元線WL1之2nd階段的程式化ST15。 (6)接著,控制部22,係實施字元線WL3之1st階段的程式化ST16。 (7)接著,控制部22,係實施字元線WL2之2nd階段的程式化ST17。 (8)接著,控制部22,係實施字元線WL4之1st階段的程式化ST18。 (9)接著,控制部22,係實施字元線WL3之2nd階段的程式化ST19。 以下,同樣的,控制部22,係從圖8A之左下起朝向右上地而朝斜上方來使處理進行。如此這般,在圖8A中,非揮發性記憶體3內之複數之記憶體胞,係具備有被與第1字元線作連接的複數之第1記憶體胞、和被與和第1字元線相鄰接之第2字元線作連接的複數之第2記憶體胞,記憶體控制器2,係在對於複數之第1記憶體胞而使其進行了第1程式化之後,對於複數之第2記憶體胞而使其進行第1程式化,接著,在對於複數之第2記憶體胞而使其進行了第1程式化之後,對於複數之第1記憶體胞而使其進行第2程式化。 在以圖8B之程式化順序來對於3維構造之NAND記憶體5進行程式化的情況時,若是開始進行寫入,則控制部22,係藉由以下之(11)~(24)所示之順序來實行程式化。 (11)首先,控制部22,係實施字串St0_字元線WL0之1st階段的程式化ST21。 (12)接著,控制部22,係實施字串St1_字元線WL0之1st階段的程式化ST22。 (13)接著,控制部22,係實施字串St2_字元線WL0之1st階段的程式化ST23。 (14)接著,控制部22,係實施字串St3_字元線WL0之1st階段的程式化ST24。 (15)接著,控制部22,係實施字串St0_字元線WL1之1st階段的程式化ST25。 (16)接著,控制部22,係實施字串St0_字元線WL0之2nd階段的程式化ST26。 (17)接著,控制部22,係實施字串St1_字元線WL1之1st階段的程式化ST27。 (18)接著,控制部22,係實施字串St1_字元線WL0之2nd階段的程式化ST28。 (19)接著,控制部22,係實施字串St2_字元線WL1之1st階段的程式化ST29。 (20)接著,控制部22,係實施字串St2_字元線WL0之2nd階段的程式化ST210。 (21)接著,控制部22,係實施字串St3_字元線WL1之1st階段的程式化ST211。 (22)接著,控制部22,係實施字串St3_字元線WL0之2nd階段的程式化ST212。 (23)接著,控制部22,係實施字串St0_字元線WL2之1st階段的程式化ST213。 (24)接著,控制部22,係實施字串St0_字元線WL1之2nd階段的程式化ST214。 以下,同樣的,控制部22,係從圖8B之左下起朝向右上地而朝斜上方來使處理進行。另外,在圖8B中,雖係針對區塊內之字串St為4個的情況來作了說明,但是,區塊內之字串St,係亦可為3個以下,亦可為5個以上。 在以圖8C之程式化順序來對於3維構造之NAND記憶體5進行程式化的情況時,若是開始進行寫入,則控制部22,係藉由以下之(31)~(50)所示之順序來實行程式化。 (31)首先,控制部22,係實施字串St0_字元線WL0之1st階段的程式化ST31。 (32)接著,控制部22,係實施字串St1_字元線WL0之1st階段的程式化ST32。 (33)接著,控制部22,係實施字串St2_字元線WL0之1st階段的程式化ST33。 (34)接著,控制部22,係實施字串St3_字元線WL0之1st階段的程式化ST34。 (35)首先,控制部22,係實施字串St0_字元線WL1之1st階段的程式化ST35。 (36)接著,控制部22,係實施字串St1_字元線WL1之1st階段的程式化ST36。 (37)接著,控制部22,係實施字串St2_字元線WL1之1st階段的程式化ST37。 (38)接著,控制部22,係實施字串St3_字元線WL1之1st階段的程式化ST38。 (39)接著,控制部22,係實施字串St0_字元線WL0之2nd階段的程式化ST39。 (40)接著,控制部22,係實施字串St1_字元線WL0之2nd階段的程式化ST310。 (41)接著,控制部22,係實施字串St2_字元線WL0之2nd階段的程式化ST311。 (42)接著,控制部22,係實施字串St3_字元線WL0之2nd階段的程式化ST312。 (43)接著,控制部22,係實施字串St0_字元線WL2之1st階段的程式化ST313。 (44)接著,控制部22,係實施字串St1_字元線WL2之1st階段的程式化ST314。 (45)接著,控制部22,係實施字串St2_字元線WL2之1st階段的程式化ST315。 (46)接著,控制部22,係實施字串St3_字元線WL2之1st階段的程式化ST316。 (47)接著,控制部22,係實施字串St0_字元線WL1之2nd階段的程式化ST317。 (48)接著,控制部22,係實施字串St1_字元線WL1之2nd階段的程式化ST318。 (49)接著,控制部22,係實施字串St2_字元線WL1之2nd階段的程式化ST319。 (50)接著,控制部22,係實施字串St3_字元線WL1之2nd階段的程式化ST320。 另外,在圖8C中,雖係針對區塊內之字串St為4個的情況來作了說明,但是,區塊內之字串St,係亦可為3個以下,亦可為5個以上。 如此這般,就算是字串St成為複數,在1個的字串St內之字元線WLi的各程式化階段之程式化的順序,亦係與字串St為1個的情況時相同。於在區塊內存在有複數之字串St的3維構造之非揮發性記憶體3的情況時,字元線WLi與字串St之組合位置的程式化,一般而言,係先對於相異之字串St內之同一字元線編號進行程式化,之後前進至下一個的字元線編號處。在依循此種順序的情況時,若是將圖8A作字串St之數量之量的結合,則例如係會成為如同圖8B或圖8C一般的順序。 於此,針對依循於由第1實施形態所致的程式化順序之寫入程序的其中一例,使用圖9~圖11而作說明。在圖9~圖11中,係對於依循在圖8B或圖8C中所示之程式化順序的情況時之寫入程序作展示。如同前述一般,記憶體控制器2,由於係以非連續性之順序來一面橫跨字元線WLi一面使程式化階段前進,因此,係將某些字元線WLi之整批(於此,係為區塊)作為程式化序列的整體而實行程式化。 圖9,係為對於由第1實施形態所致的1個區塊之量之全體的寫入程序之第1例作展示之流程圖。於此之1個區塊,假設係具備有字元線WL0~WLn(n為自然數)之n+1根的字元線WLi。圖10,係為對於由第1實施形態所致的1st階段中之寫入程序作展示之流程圖,圖11,係為對於由第1實施形態所致的2nd階段中之寫入程序作展示之流程圖。 如同圖9中所示一般,若是開始進行寫入,則控制部22,係實行字串St0_字元線WL0之1st階段的程式化(步驟S10)。接著,控制部22,係實施字串St1_字元線WL0之1st階段的程式化(步驟S20)。之後,控制部22,係對於各字串St而實行與步驟S10、S20相同的處理。接著,控制部22,係實施字串St3_字元線WL0之1st階段的程式化(步驟S30)。 進而,控制部22,係實施字串St0_字元線WL1之1st階段的程式化(步驟S40)。接著,控制部22,係實施字串St0_字元線WL0之2nd階段的程式化(步驟S50)。接著,控制部22,係實施字串St1_字元線WL1之1st階段的程式化(步驟S60)。之後,控制部22,係對於各字串St之各字元線WLi而反覆進行如同步驟S40、S50、S60一般的處理。 接著,控制部22,係實施字串St0_字元線WLn之1st階段的程式化(步驟S70)。接著,控制部22,係實施字串St0_字元線WLn-1之2nd階段的程式化(步驟S80)。之後,控制部22,係對於各字串St之各字元線WLi而反覆進行如同步驟S70、S80一般的處理。 接著,控制部22,係實施字串St3_字元線WLn-1之2nd階段的程式化(步驟S90)。接著,控制部22,係實施字串St0_字元線WLn之2nd階段的程式化(步驟S100)。接著,控制部22,係實施字串St1_字元線WLn之2nd階段的程式化(步驟S110)。之後,控制部22,係對於各字串St而實行與步驟S100、S110相同的處理。接著,控制部22,係實施字串St3_字元線WLn之2nd階段的程式化(步驟S120)。 圖10,係為對於1st階段之寫入程序之第1例作展示之流程圖。在1st階段之程式化中,首先,係從記憶體控制器2對於非揮發性記憶體3而被輸入有Lower頁面資料的輸入開始指令(步驟S210)。之後,係從記憶體控制器2對於非揮發性記憶體3而被輸入有Lower頁面資料(步驟S215)。接著,係從記憶體控制器2對於非揮發性記憶體3而被輸入有Middle頁面資料的輸入開始指令(步驟S220)。之後,係從記憶體控制器2對於非揮發性記憶體3而被輸入有Middle頁面資料(步驟S225)。接著,係從記憶體控制器2對於非揮發性記憶體3而被輸入有Top頁面之資料的輸入開始指令(步驟S230)。之後,係從記憶體控制器2對於非揮發性記憶體3而被輸入有Top頁面資料(步驟S235)。進而,係從記憶體控制器2對於非揮發性記憶體3而被輸入有1st階段之程式化實行指令(步驟S240),並藉由此而成為chip_busy(步驟S245)。 在進行資料寫入時,係決定臨限值電壓Vth(步驟S250),並被施加有1~複數次的程式化電壓脈衝(步驟S255)。之後,為了對於記憶體胞是否超越臨限值邊界準位地而作了移動一事作確認,係進行有資料讀出(驗證)(步驟S260)。 進而,係判定在Lower頁面及Middle頁面以及Top頁面中之資料的失敗位元(fail-bit)數量是否為較判定基準(criteria)而更小(步驟S265)。當資料的失敗位元數量係為判定基準以上的情況時,從程式化脈衝施加起而至criteria判定為止之處理(步驟S255~S265)係被反覆進行。而,若是資料的失敗位元數量成為較判定基準而更小,則係成為chip_ready(步驟S270)。如此這般,藉由反覆進行施加和讀出以及確認,係成為能夠使記憶體胞之臨限值移動至特定之臨限值分布的範圍之中。 另外,如同上述一般,在1st階段寫入時之程式化電壓脈衝施加後的讀出準位,係亦能夠與2nd階段寫入後之讀出準位有些許差異,較理想,係身為較2nd階段寫入後之讀出準位而更低的準位。亦即是,係身為Vr1’≦Vr1、Vr4’≦Vr4、Vr5’≦Vr5、Vr8’≦Vr8、Vr9’≦Vr9、Vr12’≦Vr12、Vr14’≦Vr14。 又,在1st階段寫入中之程式化電壓脈衝施加後的讀出中,係亦可將由Vr9’所致之讀出和由Vr14’所致之讀出省略,Vr9’,係在通過了Vr8’之讀出之後,於施加了某規定次數之程式化電壓脈衝之後,設為寫入結束,Vr14’,係在通過了Vr13’之讀出之後,於施加了某規定次數之程式化電壓脈衝之後,設為寫入結束。 此係因為,如同上述一般,藉由將在1st階段之程式化後的資料中之Middle頁面之資料為相異的臨限值區域之間隔縮窄,係能夠將在2nd階段寫入時而進行讀出的Lower頁面與Top頁面之資料為相異的臨限值區域之間隔,就算是僅藉由「施加某規定次數之程式化電壓脈衝」的簡單之控制也能夠充分確保為廣。 進而,係亦可將Vr8’和Vr9’和Vr12’以及Vr14’的程式化電壓脈衝施加後之讀出省略,並在通過了Vr5’之讀出之後,於施加了各別之某規定次數之程式化電壓脈衝之後,設為寫入結束。除此之外,進而,係亦可將Vr4’、Vr5’、Vr8’、Vr9’、Vr12’、Vr14’的程式化電壓脈衝施加後之讀出省略,並在通過了Vr1’之讀出之後,於施加了各別之某規定次數之程式化電壓脈衝之後,設為寫入結束。 圖11,係為對於2nd階段之寫入程序之第1例作展示之流程圖。在2nd階段之程式化中,首先,係從記憶體控制器2對於非揮發性記憶體3而被輸入有Middle頁面之資料的輸入開始指令(步驟S310)。之後,係從記憶體控制器2對於非揮發性記憶體3而被輸入有Middle頁面之資料(步驟S320)。 接著,係從記憶體控制器2對於非揮發性記憶體3而被輸入有Upper頁面之資料的輸入開始指令(步驟S330)。之後,係從記憶體控制器2對於非揮發性記憶體3而被輸入有Upper頁面之資料(步驟S340)。接著,係從記憶體控制器2對於非揮發性記憶體3而被輸入有2nd階段之程式化實行指令(步驟S350),並藉由此而成為chip_busy(步驟S360)。 之後,控制部22,係進行身為IDL(Internal Data Load)之Lower頁面以及Top頁面資料的讀出(步驟S370)。之後,基於之前所輸入的Middle頁面資料和由IDL所致之Lower頁面以及Top頁面之資料,Upper頁面之程式化目標的Vth(臨限值電壓)係被決定(步驟S380)。之後,使用被決定了的Vth,對於Upper頁面之資料寫入係被進行。更具體而言,係以會成為所被決定了的臨限值電壓的方式,來將複數之程式化脈衝的電壓值逐次些許提高並進行寫入(步驟S390)。到達了目的之臨限值電壓的記憶體胞,係被從寫入對象而去除。 之後,係將寫入了的資料讀出(步驟S400),並判定失敗位元數量是否為較判定基準(criteria)而更小(步驟S410)。當資料的失敗位元數量係為判定基準以上的情況時,從程式化脈衝施加起而至criteria判定為止之處理(步驟S390~S410)係被反覆進行。而,若是資料的失敗位元數量成為較判定基準而更小,則係成為chip_ready(步驟S420)。 於此,在本實施形態中,係具備有2個的特徵。第1特徵係在於,Middle頁面之資料,係在1st階段之程式化中而已被輸入,1st程式化後之臨限值區域,係身為亦包含有Middle頁面之資料的寫入狀態,但是,在2nd階段之程式化中,仍係再度輸入有Middle頁面之資料。第2特徵係在於,在1st階段之程式化中,該Middle頁面之資料所作切換的鄰接臨限值區域彼此,其間隔係變窄,相反的,Lower頁面之資料與Top頁面之資料所作切換的鄰接臨限值分布彼此,其間隔係變廣。藉由此,係能夠將藉由IDL所讀出的Lower頁面以及Top頁面資料之信賴性提高。另一方面,Middle頁面之資料,若是藉由IDL而將資料作了讀出,則係會有信賴性降低之虞,但是,在本實施形態中,由於係將在1st階段程式化中所使用了的Middle頁面之資料再度作輸入,因此係並不會有信賴性降低的問題。 進而,控制部22,係亦能夠為了將IDL之讀出資料的信賴性提升,而進行複數次數之讀出,並在晶片內之頁面緩衝處,採用此讀出結果之多數決,而作為接下來的寫入資料而作使用。當然的,控制部22,在通常之讀出動作時,亦能夠進行複數次數之讀出並在晶片內採用此讀出結果之多數決,而作為對於外部之讀出資料而作使用。 圖12,係為用以對於複數次數之讀出結果的多數決處理作說明的圖。在圖12中,係作為將特定之頁面之資料作了讀出後的結果,而將正確的位元以圈記號(○)來作標示,並將錯誤的位元以叉記號(×)來作標示。又,在圖12中,係對於進行了3次的讀出的情況時之多數決之結果作展示。 在各位元處,多數決之結果被判斷為錯誤的情形,係為(a)3次均為錯誤的情況、和(b)2次為錯誤的情況。若是將各位元為錯誤的機率設為p,則在p=0.2的情況時,(a)3次錯誤的機率,係為p×p×p=0.2×0.2×0.2,(b)2次錯誤的機率,係為(1-p)×p×p=(1-0.2)×0.2×0.2。 故而,3次之多數決之結果被判斷為錯誤的機率,係為(p×p×p)+3×(1-p)×p×p=0.104。如此這般,控制部22,係藉由在晶片內之頁面緩衝24處進行複數次數之讀出結果之多數決處理,而成為能夠將讀出資料之信賴性提升。 進而,控制部22,係亦可為了將在字元線WLn之2nd階段寫入中的IDL之讀出資料之信賴性提升,而因應於在WLn+1之1st階段寫入中而進行了寫入的資料或者是臨限值電壓,來改變在IDL處之字元線WLn之讀出電壓並進行讀出。 又,進而,控制部22,係亦可為了將在字元線WLn之2nd階段寫入中的IDL之讀出資料之信賴性提升,而因應於在字元線WLn+1之1st階段寫入中而進行了寫入的資料或者是臨限值電壓,來改變在IDL處之字元線WLn+1之非選擇電壓並進行讀出。此時,係亦可同時地改變字元線WLn之讀出電壓並進行讀出。 在進行對於Upper頁面之資料寫入時,係被施加有1~複數次的程式化電壓脈衝。之後,為了對於記憶體胞是否超越臨限值邊界準位地而作了移動一事作確認,係進行有Upper頁面之資料讀出(驗證)。此時之讀出準位,係身為特定之準位。 進而,係判定在Upper頁面中之資料的失敗位元數量是否為較判定基準而更小。當在Upper頁面中之資料的失敗位元數量係為判定基準以上的情況時,從程式化電壓脈衝施加起而至驗證為止之處理係被反覆進行。而,若是資料的失敗位元數量成為較判定基準而更小,則係成為chip_ready。 於此,針對在圖11中所示的寫入程序之變形例作說明。圖13,係為對於在第1實施形態的2nd階段中之寫入程序之變形例作展示之流程圖。另外,在圖13之流程圖中,係追加有「針對將在1st階段中所作了程式化的資料作了讀出之IDL資料,而進行錯誤訂正,並回送至非揮發性記憶體3處」之程序。具體而言,首先,係從記憶體控制器2對於非揮發性記憶體3而被輸入有Lower頁面之讀出指令(步驟S510)。藉由此,係成為chip_ready(步驟S512)。接著,控制部22,係將Lower頁面資料之讀出藉由Vr8’之臨限值電壓來進行。之後,控制部22,係基於在Vr8’之臨限值電壓下的讀出結果,來將所讀出了的資料之值決定為“0”或“1”(步驟S514)。之後,係成為chip_ready(步驟S516)。 若是將控制部22所讀出了的Lower頁面資料作輸出(步驟S518),則此Lower頁面資料,係被送訊至ECC電路10處(步驟S520)。藉由此,ECC電路10係對於Lower頁面資料進行ECC訂正(步驟S522)。 接著,係從記憶體控制器2對於非揮發性記憶體3而被輸入有Lower頁面之資料的輸入開始指令(步驟S524)。藉由此,ECC電路10係對於非揮發性記憶體3而輸入Lower頁面之資料(步驟S526)。 接著,係從記憶體控制器2對於非揮發性記憶體3而被輸入有Top頁面之讀出指令(步驟S528),並藉由此而成為chip_busy(步驟S530)。之後,控制部22,係將Top頁面資料之讀出藉由Vr2’和Vr10’之臨限值電壓來進行。之後,控制部22,係基於在Vr1’和Vr4’和Vr8’以及Vr12’之臨限值電壓下的讀出結果,來將所讀出了的資料之值決定為“0”或“1”(步驟S532)。之後,係成為chip_ready(步驟S534)。 若是將控制部22所讀出了的Top頁面資料作輸出(步驟S536),則此Top頁面資料,係被送訊至ECC電路10處(步驟S538)。藉由此,ECC電路10係對於Top頁面資料進行ECC訂正(步驟S540)。接著,係從記憶體控制器2對於非揮發性記憶體3而被輸入有Top頁面之資料的輸入開始指令(步驟S542)。藉由此,ECC電路10係對於非揮發性記憶體3而輸入Top頁面之資料(步驟S544)。 之後,係從記憶體控制器2對於非揮發性記憶體3而被輸入有Middle頁面資料的輸入開始指令。(步驟S546)。後續之步驟,係與圖11之程序相同。程式化目標之臨限值電壓Vth,係基於從ECC電路10而來之Lower頁面資料以及Top頁面資料、和再度被作了輸入的Middle頁面之資料、以及新輸入了的Upper頁面之資料,來決定程式化目標的臨限值電壓Vth。 在上述之2nd階段之程式化中,對於非揮發性記憶體3之資料輸入,係僅為Middle頁面和Upper頁面之2個頁面。但是,在此2nd階段中,於身為記憶體胞之程式化之目的地的臨限值電壓Vth處,係需要亦包含有Lower頁面、Top頁面(在開始2nd階段之前的臨限值電壓Vth)之4個頁面之量的資料。因此,在此階段之程式化中,作為前置處理,控制部22,係進行「首先將Lower頁面資料和Top頁面資料讀出,並將該資料藉由更進而被作了輸入的Middle頁面與Upper頁面來作合成並決定程式化目標之臨限值電壓Vth」之動作。另外,在2nd階段之驗證時之讀出準位,係亦可為與2nd階段寫入後之讀出準位有些許的差異。 於此,針對採用了4-3-4-4資料編碼之Foggy-Fine程式化的處理程序和本實施形態的程式化處理程序之間之比較作說明。圖14A,係為用以對於在採用了4-3-4-4資料編碼之Foggy-Fine程式化中之寫入緩衝的資料量作說明之圖。圖14B,係為對於在本實施形態中之寫入緩衝的資料量作說明之圖。圖14B,係對於採用了1-4-5-5資料編碼之例作展示。 在圖14A以及圖14B中,於上段側處,係對於區塊寫入之資料輸入和程式化實行之時序表作展示,於下段側處,係對於為了將資料在寫入緩衝內作資料保持所需要的期間之時序表作展示。另外,在圖14A以及圖14B中,為了使說明簡單化,係針對1個區塊內的字串St之個數為1的情況作展示。當字串St為複數的情況時,係需要字串St之個數倍數的寫入緩衝之資料量。 在4-3-4-4資料編碼之Foggy-Fine程式化的情況時,在身為第1個的階段之Foggy階段中,係進行有4個頁面之量的資料輸入、和此4個頁面之量的程式化(Foggy階段之程式化)。又,在4-3-4-4資料編碼之Foggy-Fine程式化的情況時,在身為第2個的階段之Fine階段中,亦係進行有4個頁面之量的資料輸入、和此4個頁面之量的程式化(Fine階段之程式化)。 而,在各字元線WL0、WL1、WL2、…處,直到於Fine階段處而程式化被開始為止,係有必要將在Foggy階段中而被作了寫入的4個頁面之量之資料,預先儲存在寫入緩衝中。 在Foggy-Fine程式化中,亦同樣的,為了將鄰接記憶體胞間干涉降低,Lower/Middle/Upper/Top之4個頁面之量的資料係並不被連續地作寫入。例如,在對於字元線WL0之Foggy階段被作了實行之後,於對於字元線WL0之Fine階段被實行之前,對於與字元線WL0相鄰接之字元線WL1的Foggy階段係被實行。又,在對於字元線WL0之Foggy階段被作了實行之後,於對於字元線WL1之Fine階段被實行之前,對於與字元線WL1相鄰接之字元線WL2的Foggy階段係被實行。於此方法的情況時,直到最終之身為第2個的Fine階段之資料輸入結束為止,係有必要將Lower/Middle/Upper/Top之4個頁面之量之資料,預先保持在寫入緩衝內。又,為了將鄰接記憶體胞間干涉降低,係有必要將在複數之字元線WLi處的資料預先保持於寫入緩衝內。例如,在對於字元線WL2而Foggy階段被實行時,係有必要使針對字元線WL1之3個頁面之量的資料和針對字元線WL2之3個頁面之量的資料被保持於寫入緩衝內。如此這般,在4-3-4-4資料編碼之Foggy-Fine程式化的情況時,係有必要將最大8個頁面之量的資料保持在寫入緩衝內。 如同圖14B中所示一般,在本實施形態之程式化中,例如係以1-4-5-5資料編碼而使用有2階段的程式化。在本實施形態之程式化中,於1st階段中,係進行有3個頁面之量(Lower頁面和Middle頁面以及Top頁面)的資料輸入、和此3個頁面之量的程式化(1st程式化)。又,在本實施形態之程式化的情況時,於2nd階段中,係進行有2個頁面之量(Middle頁面以及Upper頁面)的資料輸入、和Upper頁面之1個頁面之量的程式化(2nd程式化)。 而,在各字元線WL0、WL1、WL2、…處,除了在雙方的階段中均被作輸入的Middle頁面以外,係只要在各階段之資料輸入時將資料預先儲存在寫入緩衝中即可,若是程式化被開始,則係亦可將資料從寫入緩衝內而刪除。例如,若是在1st階段處而資料被作輸入,則此資料係被儲存在寫入緩衝內。而,若是在1st階段處而程式化被開始,則係亦可將預先被儲存在寫入緩衝內之Lower頁面與Top頁面之資料刪除。同樣的,若是在2nd階段處而資料被作輸入,則此資料係被儲存在寫入緩衝內。而,若是在2nd階段處而程式化被開始,則係亦可將預先被儲存在寫入緩衝內之資料全部刪除。因此,在本實施形態之程式化的情況時,有必要預先保持在寫入緩衝內之資料,就算是最大亦係僅為4個頁面之量的資料。 在本實施形態之程式化中,亦同樣的,為了將鄰接記憶體胞間干涉降低,Lower/Middle/Upper/Top之4個頁面之量的資料係並不被連續地作寫入。例如,在對於字元線WL0之1st階段被作了實行之後,於對於字元線WL0之2nd階段被實行之前,對於與字元線WL0相鄰接之字元線WL1的1st階段係被實行。同樣的,在對於字元線WL1之1st階段被作了實行之後,於對於字元線WL1之2nd階段被實行之前,對於與字元線WL1相鄰接之字元線WL2的1st階段係被實行。 如此這般,在本實施形態中,由於除了Middle頁面以外的頁面資料,係僅在1次的階段之程式化中而為必要,因此,若是該資料輸入結束,則係成為能夠將寫入緩衝內之資料刪除。因此,在本實施形態中,有必要預先同時保持在寫入緩衝內之頁面數量係僅需要少量即可。 被對於非揮發性記憶體3而進行程式化的頁面資料,係先在RAM6內之寫入緩衝中暫時被作保持,之後在程式化時被資料輸入至非揮發性記憶體3中。在本實施形態中,由於係成為能夠將此RAM6之必要容量縮小,因此係能夠謀求成本之削減。 又,在使用Foggy-Fine程式化時,由於係必須要將所有的頁面資料之資料傳輸進行2次,因此係會耗費傳輸時間,並且亦成為需要更多的傳輸時之消耗電力。在本實施形態中,除了Middle頁面以外的頁面資料,由於各頁面係個別以1次的資料傳輸而結束,因此係成為能夠將傳輸時間以及電力消耗抑制為1/2程度。 於此,針對頁面讀出處理作說明。頁面讀出之方法,係基於針對包含有讀出對象頁面之字元線WLi的程式化乃身為2nd階段之寫入前還是寫入後一事而有所相異。 在2nd階段寫入前的情況時,所被作記錄之資料係僅有Lower頁面和Middle頁面以及Top頁面為有效。因此,控制部22,在讀出頁面係身為Lower頁面和Middle頁面以及Top頁面的情況時,係從記憶體胞而將資料讀出,但是,在其他之頁面(具體而言,Upper頁面)的情況時,係並不進行記憶體胞讀出動作,並進行作為讀出資料而強制性地全部輸出“1”之控制。 另一方面,在直到2nd階段為止而均結束了的字元線WLi的情況時,控制部22,係不論是讀出頁面為Top/Upper/Middle/Lower頁面之何者,均將記憶體胞讀出。於此情況,由於依存於讀出頁面乃身為何者之頁面一事,所需要的讀出電壓係為相異,因此,控制部22,係依循於被作了選擇的頁面而僅進行必要之讀出。 以下,針對頁面讀出之具體性的處理程序作說明。圖15,係為對於在由第1實施形態所致之記憶體系統1中之於直到1st階段為止之程式化為結束(2nd階段的程式化係尚未結束)的字元線處之頁面讀出的處理程序作展示之流程圖。若依據圖6中所示之1-4-5-5資料編碼,則由於Lower頁面資料所變化的臨限值狀態間之邊界係為1個,因此,控制部22,係根據臨限值為位置於藉由該邊界而被作了分離之2個的範圍之何者處一事,來決定資料。例如,當臨限值電壓為較Vr8’而更小的情況時,控制部22,係進行作為記憶體胞之資料而輸出“1”之控制。另一方面,當臨限值電壓為較Vr8’而更大的情況時,控制部22,係進行作為記憶體胞之資料而輸出“0”之控制。 又,由於Middle頁面資料所變化的臨限值狀態間之邊界係為3個,因此,控制部22,係根據臨限值為位置於藉由該些之邊界而被作了分離之4個的範圍之何者之中一事,來決定資料。又,由於Top頁面資料所變化的臨限值狀態間之邊界係為4個,因此,控制部22,係根據臨限值為位置於藉由該些之邊界而被作了分離之5個的範圍之何者之中一事,來決定資料。 如同圖15中所示一般,在2nd階段寫入前之字元線WLi的情況時,控制部22,係對讀出頁面作選擇(步驟S610)。當讀出頁面係為Lower頁面的情況時,控制部22,係藉由1個的讀出電壓而進行讀出(步驟S612)。此電壓,係為Vr8,但是,如同前述一般,在身為2nd階段寫入前之字元線的情況時,如同圖8(T2)中所示一般,係亦可具有讀出電壓與臨限值電壓之餘裕地,而例如為Vr8’。之後,控制部22,係基於在Vr8之臨限值電壓下的讀出結果,來將所讀出了的資料之值決定為“0”或“1”(步驟S614)。 又,當讀出頁面係為Middle頁面的情況時,控制部22,係藉由3個的讀出電壓而進行讀出(步驟S616、S618、S620)。此電壓,係如同前述一般,而為Vr4和Vr9以及Vr14,但是,在身為2nd階段寫入前之字元線的情況時,如同圖8(T2)中所示一般,係亦可具有讀出電壓與臨限值電壓之餘裕地,而例如替代該些而分別設為Vr4’和Vr9’以及Vr14’。之後,控制部22,係基於在Vr4之臨限值電壓下的讀出結果和在Vr9之臨限值電壓下的讀出結果以及在Vr14之臨限值電壓下的讀出結果,來將所讀出了的資料之值決定為“0”或“1”(步驟S622)。於此,如同前述一般,由於Middle頁面之資料為相異的臨限值分布的間隔係為窄,而Middle頁面之讀出餘裕係變窄,因此,讀出資料之值係會有信賴性顯著地惡化的可能性,而亦可將2nd階段寫入前之Middle頁面資料定義為無效。於此情況,當讀出頁面係為Middle頁面的情況時,控制部22,係亦可進行作為記憶體胞之輸出資料而強制性地全部輸出“1”之控制。 又,當讀出頁面係為Upper頁面的情況時,由於在1st程式化中係並未進行有Upper頁面之程式化,因此,控制部22,係作為輸出資料而強制性地全部輸出“1”(步驟S624)。 又,當讀出頁面係為Top頁面的情況時,控制部22,係藉由4個的讀出電壓而進行讀出(步驟S626、S628、S630、S632)。此電壓,係如同前述一般,而為Vr1和Vr4和Vr8以及Vr12,但是,在身為2nd階段寫入前之字元線的情況時,如同圖8(T2)中所示一般,係亦可具有讀出電壓與臨限值電壓之餘裕地,而例如替代該些而分別設為Vr1’和Vr4’和Vr8’以及Vr12’。之後,控制部22,係基於在Vr1之臨限值電壓下的讀出結果和在Vr4之臨限值電壓下的讀出結果和在Vr8之臨限值電壓下的讀出結果以及在Vr12之臨限值電壓下的讀出結果,來將所讀出了的資料之值決定為“0”或“1”(步驟S634)。 圖16A,係為對於在第1實施形態之記憶體系統1中的於直到2nd階段為止之程式化為結束的字元線處之頁面讀出的處理程序作展示之流程圖。在直到2nd階段為止地而結束了程式化之字元線WLi的情況時,控制部22,係對讀出頁面作選擇(步驟S650)。當讀出頁面係為Lower頁面的情況時,控制部22,係藉由Vr8之1個的臨限值電壓而進行讀出(步驟S652)。之後,控制部22,係基於在Vr8之1個的臨限值電壓下的讀出結果,來將所讀出了的資料之值決定為“0”或“1”(步驟S654)。 又,當讀出頁面係為Middle頁面的情況時,控制部22,係藉由Vr4、Vr9、Vr11以及Vr14之臨限值電壓而進行讀出(步驟S656、S658、S660、S662)。之後,控制部22,係基於在Vr4、Vr9、Vr11以及Vr14之臨限值電壓下的讀出結果,來將所讀出了的資料之值決定為“0”或“1”(步驟S664)。 又,當讀出頁面係為Upper頁面的情況時,控制部22,係藉由Vr2、Vr6、Vr10、Vr13以及Vr15之臨限值電壓而進行讀出(步驟S666、S668、S670、S672、S674)。之後,控制部22,係基於在Vr2、Vr6、Vr10、Vr13以及Vr15之臨限值電壓下的讀出結果,來將所讀出了的資料之值決定為“0”或“1”(步驟S676)。 又,當讀出頁面係為Top頁面的情況時,控制部22,係藉由Vr1、Vr3、Vr5、Vr7以及Vr12之臨限值電壓而進行讀出(步驟S678、S680、S682、S684、S686)。之後,控制部22,係基於在Vr1、Vr3、Vr5、Vr7以及Vr12之臨限值電壓下的讀出結果,來將所讀出了的資料之值決定為“0”或“1”(步驟S688)。 另外,關於對於字元線WLi的程式化乃身為2nd階段之寫入結束前還是後一事,係能夠以記憶體控制器2來進行管理以及辨識。在記憶體系統1中,由於記憶體控制器2係進行程式化之控制,因此,只要使記憶體控制器2將該進度狀況預先作記錄,則記憶體控制器2係能夠容易地對於非揮發性記憶體3之何者之位址乃是身為何種之程式化狀態一事作參照。於此情況,記憶體控制器2,在從非揮發性記憶體3而進行讀出時,係辨識出包含有對象頁面位址之字元線WLi乃身為何種之程式化狀態,並發行與所辨識出之狀態相對應的讀出指令。又,作為其他方法,係亦能夠在各字元線WLi之每一者處分別設置旗標胞,並在2nd階段寫入時,對旗標胞作寫入,而因應於旗標胞之資料,來藉由非揮發性記憶體3而對於是身為2nd階段寫入結束前還是後一事作管理、辨識。 以下,針對頁面讀出處理之其中一變形例作說明。由其中一變形例所致之頁面讀出處理,係僅在針對包含有讀出對象頁面之字元線WLi的程式化乃身為進行了2nd階段之寫入之後時才能夠實行。由其中一變形例所致之頁面讀出處理,在將讀出對象之字元線之所有的資料讀出的情況時,讀出速度係會變快,在此點上,係為有效。 適合於由其中一變形例所致之頁面讀出處理的資料編碼,例如係身為如同圖16B一般者。以下,針對在此資料編碼的情況時之由其中一變形例所致之讀出處理作說明。在由其中一變形例所致之頁面讀出處理中,係將Top/Upper/Middle/Lower頁面之所有的頁面讀出。 圖16C,係為對於由其中一變形例所致的讀出處理程序作展示之流程圖。又,圖16D,係為選擇字元線、ReadyBusy訊號線、輸出資料線之電壓波形圖。控制部22,係藉由15個的全部的讀出電壓Vr15~Vr1來依序進行讀出。首先,如同圖16D中所示一般,以身為最高的電壓之Vr15來進行讀出(步驟S690),接著,一次作1個階段之降低地來以低的讀出電壓來依序繼續進行讀出(步驟S691~S707)。在為了決定各頁面之讀出資料所需要的讀出為結束時,該頁面之讀出資料係成為能夠輸出。 在由其中一變形例所致之頁面讀出處理中,於從Vr15起而依序進行讀出並直到Vr8之讀出為止而結束時(步驟S699),Lower頁面之資料係被決定,並成為能夠將此資料輸出(步驟S700)。在此步驟S700中,基於以讀出電壓Vr8所致的讀出資料,Lower頁面之資料係被決定。 接著,於直到Vr4之讀出為止而結束時(步驟S702),Middle頁面之資料係被決定(步驟S703)。在此步驟S703中,基於以讀出電壓Vr4、Vr9、Vr11以及Vr14所致的讀出資料,Middle頁面之資料係被決定。 接著,於直到Vr2之讀出為止而結束時(步驟S705),Upper頁面之資料係被決定(步驟S706)。在此步驟S706中,基於以讀出電壓Vr2、Vr6、Vr10、Vr13以及Vr15所致的讀出資料,Upper頁面之資料係被決定。 接著,於直到Vr1之讀出為止而結束時(步驟S707),最終之Top頁面之資料係被決定(步驟S708)。在此步驟S708中,基於以讀出電壓Vr1、Vr3、Vr5、Vr7以及Vr12所致的讀出資料,Top頁面之資料係被決定。 在由其中一變形例所致之頁面讀出處理中,直到能夠將任意之1個頁面之資料作輸出為止的延遲(latency)係變長,但是,將全部4個頁面作讀出的合計時間,係能夠較於前所說明的1次1個頁面地作了讀出的情況時之合計時間而更為縮短。如同圖16D中所示一般,作為讀出準備而將字元線從0來一直充電至身為高電壓之Vr15為止的時間,係僅需要耗費1次即可,又,在使讀出準位變化為下一個的電壓時的電壓變化之振幅係為小,電壓係在短時間內而成為安定,因此,係能夠將直到讀出電壓成為安定為止的待機時間縮短。因此,藉由所有的讀出電壓Vr15~Vr1來進行讀出的情況,選擇字元線之變遷時間的合計係變短,其結果,係能夠使合計的讀出時間高速化。 另外,於上,雖係以圖16B之資料編碼為例來作了說明,但是,基本上,不論是對於何種資料編碼,均能夠作適用。但是,由於係使讀出電壓從最大電壓起直到最小電壓為止地來依序變化並進行讀出,因此,係依照為了確定資料所需要的電壓之讀出為先結束的頁面之順序,而成為能夠進行資料輸出。因此,需要注意到,依存於資料編碼之形態,係會有並無法以Lower、Middle、Upper、Top之頁面順序來作讀出的情形。 如此這般,在第1實施形態中,在對於非揮發性記憶體3(具備有3維構造或2維構造之4bit/Cell之NAND記憶體)進行程式化時,係採用1-4-5-5資料編碼,並將程式化之階段設為2階段制。由於係如此這般地以2階段制而被作程式化,因此,在各階段處之資料程式化時所輸入的資料量係減少,而能夠對於在記憶體控制器2中所必要的寫入緩衝之量作抑制。又,由於在各頁面處之臨限值邊界的數量係為均一,因此,係能夠將非揮發性記憶體3之頁面間的位元錯誤率之偏頗降低,並且能夠將在ECC處所耗費的成本降低。又,由於資料傳輸,係除了1個頁面以外,而成為各頁面僅各一次,因此係能夠對於傳輸時間以及電力消耗作抑制。 又,由於係一面橫跨字元線WLi一面實行各程式化階段,因此係能夠將與鄰接字元線WLi之間的鄰接胞間干涉之量降低。又,由於係使用1-4-5-5資料編碼,因此,在2nd程式化中的臨限值分布之變化量係變小,故而係成為能夠對於鄰接胞間干涉量作抑制。又,藉由使1個頁面(具體而言,Middle頁面)在雙方的階段中而將資料作輸入,係能夠將2nd階段之前的IDL餘裕擴大,而成為能夠使寫入序列之信賴性提升。又,由於係使用1-4-5-5資料編碼,因此,在1st階段之程式化時,藉由將在Lower頁面處的臨限值邊界設為1個,並將在Middle頁面處之臨限值邊界設為2個,係能夠將1st階段之程式化、亦即是將Lower頁面以及Middle頁面之程式化高速化。另外,1st階段之程式化的高速化,係能夠藉由像是在反覆進行寫入與寫入驗證時,使寫入電壓逐次些許地階段性提升(step up)並將寫入時之階段電壓設為較2nd階段之程式化而更大之值等,來進行高速化。 (第2實施形態) 在第1實施形態中,雖係以1-4-5-5資料編碼為例來作了說明,但是,係可採用各種的資料編碼之變形。由第2實施形態所致之記憶體系統1的硬體構成,係與由第1實施形態所致之記憶體系統1共通。圖17~圖25,係對於由第2實施形態所致之記憶體系統1的資料編碼之例作展示。由第2實施形態所致之記憶體系統1,係使用1-4-5-5的資料編碼以外的資料編碼。 圖17,係為對於1-5-4-5資料編碼的其中一例作展示之圖。在圖17之例中,在2nd程式化結束時的臨限值區域之變遷數係為最大3個。於此,1st階段之程式化結束時的臨限值區域和2nd階段之程式化結束時的臨限值區域,其電壓分布範圍係並非完全相互一致,但是,在本說明書中,為了方便說明,係對於1st階段之程式化結束時的各臨限值區域而將電壓分布範圍最為接近的2nd階段之程式化結束時之臨限值區域附加對應,並將進行了2nd程式化時而有所變化的臨限值區域之數量,稱作變遷數。於圖17之情況,在1st階段處,係輸入Lower頁面、Middle頁面、Upper頁面之資料而進行程式化,在2nd階段處,係輸入Top頁面與Middle頁面之資料並進行程式化。Middle頁面之資料,係在1st階段與2nd階段處而重複被輸入。在1st階段之程式化結束時間點處而能夠藉由Middle頁面之資料之值來作分離之2個的臨限值區域之間隔,係設為較其他之臨限值區域之間隔而更窄。 圖18,係為對於1-5-4-5資料編碼的其中一例作展示之圖。在圖18之例中,在2nd程式化結束時的臨限值區域之變遷數係為最大3個。於圖18之情況,在1st階段處,係輸入Lower頁面、Middle頁面、Upper頁面之資料而進行程式化,在2nd階段處,係輸入Top頁面與Upper頁面之資料並進行程式化。Upper頁面之資料,係在1st階段與2nd階段處而重複被輸入。在1st階段之程式化結束時間點處而能夠藉由Upper頁面之資料之值來作分離之2個的臨限值區域之間隔,係設為較其他之臨限值區域之間隔而更窄。 圖19,係為對於3-5-2-5資料編碼的其中一例作展示之圖。在圖19之例中,在2nd程式化結束時的臨限值區域之變遷數係為最大3個。於圖19之情況,在1st階段處,係輸入Lower頁面、Middle頁面、Upper頁面之資料而進行程式化,在2nd階段處,係輸入Top頁面與Middle頁面之資料並進行程式化。Middle頁面之資料,係在1st階段與2nd階段處而重複被輸入。在1st階段之程式化結束時間點處而能夠藉由Middle頁面之資料之值來作分離之2個的臨限值區域之間隔,係設為較其他之臨限值區域之間隔而更窄。 圖20,係為對於3-3-4-5資料編碼的其中一例作展示之圖。在圖20之例中,在2nd程式化結束時的臨限值區域之變遷數係為最大3個。於圖20之情況,在1st階段處,係輸入Lower頁面、Middle頁面、Upper頁面之資料而進行程式化,在2nd階段處,係輸入Top頁面與Upper頁面之資料並進行程式化。 圖21,係為對於2-3-5-5資料編碼的其中一例作展示之圖。在圖21之例中,在2nd程式化結束時的臨限值區域之變遷數係為最大5個。於圖21之情況,在1st階段處,係輸入Lower頁面、Middle頁面、Top頁面之資料而進行程式化,在2nd階段處,係輸入Top頁面與Upper頁面之資料並進行程式化。Top頁面之資料,係在1st階段與2nd階段處而重複被輸入。於圖21之情況,在1st階段之程式化結束的時間點處,不論Top頁面之資料係為0或是1,3個的臨限值區域係均成為相同,臨限值區域之總數係成為5個。故而,係能夠將各臨限值區域之間隔擴廣,而能夠正確地進行在1st階段之程式化結束的時間點處之資料讀出。 圖22,係為對於3-2-5-5資料編碼的其中一例作展示之圖。在圖22之例中,在2nd程式化結束時的臨限值區域之變遷數係為最大5個。於圖22之情況,在1st階段處,係輸入Lower頁面、Middle頁面、Top頁面之資料而進行程式化,在2nd階段處,係輸入Top頁面與Upper頁面之資料並進行程式化。Top頁面之資料,係在1st階段與2nd階段處而重複被輸入。於圖22之情況,在1st階段之程式化結束的時間點處,不論Top頁面之資料係為0或是1,2個的臨限值區域係均成為相同,臨限值區域之總數係成為6個。 圖23,係為對於3-4-4-4資料編碼的其中一例作展示之圖。在圖23之例中,在2nd程式化結束時的臨限值區域之變遷數係為最大7個。於圖23之情況,在1st階段處,係輸入Lower頁面、Middle頁面、Upper頁面之資料而進行程式化,在2nd階段處,係輸入Top頁面與Upper頁面之資料並進行程式化。Upper頁面之資料,係在1st階段與2nd階段處而重複被輸入。在1st階段之程式化結束時間點處而能夠藉由Upper頁面之資料之值來作分離之2個的臨限值區域之間隔,係設為較其他之臨限值區域之間隔而更窄。 圖24,係為對於3-4-4-4資料編碼的其中一例作展示之圖。在圖24之例中,在2nd程式化結束時的臨限值區域之變遷數係為最大8個。於圖24之情況,在1st階段處,係輸入Lower頁面、Middle頁面、Top頁面之資料而進行程式化,在2nd階段處,係輸入Top頁面與Upper頁面之資料並進行程式化。Top頁面之資料,係在1st階段與2nd階段處而重複被輸入。於圖24之情況,在1st階段之程式化結束的時間點處,不論Top頁面之資料係為0或是1,2個的臨限值區域係均成為相同,臨限值區域之總數係成為6個。 圖17~圖24,係僅為資料編碼之例,而亦可採用其他的資料編碼。 例如,在2nd程式化結束時的臨限值區域之變遷數係成為最大3個之例,除了圖17~圖20以外,係亦存在有以下之圖25~圖27。圖25,係為對於1-4-5-5資料編碼的其中一例作展示之圖。在圖25之例中,在1st程式化結束了的時間點處,係被產生有6個的相異之臨限值區域。其中,Middle頁面為1而Lower頁面為1之臨限值區域、和Middle頁面為0而Lower頁面為1之臨限值區域,係不論Top頁面為0或是1,均成為相同之臨限值區域。因此,雖然原本應該要被產生有8個的臨限值區域,但是係被匯集為6個的臨限值區域。 圖26,係為對於2-5-3-5資料編碼的其中一例作展示之圖。在圖26之例中,在1st程式化結束了的時間點處,係被產生有7個的相異之臨限值區域。其中,Middle頁面為1而Lower頁面為1之臨限值區域,係不論Top頁面為0或是1,均成為相同之臨限值區域。因此,雖然原本應該要被產生有8個的臨限值區域,但是係被匯集為7個的臨限值區域。 圖27,係為對於3-4-5-3資料編碼的其中一例作展示之圖。在圖27之例中,在1st程式化結束了的時間點處,係被產生有7個的相異之臨限值區域。其中,Middle頁面為1而Lower頁面為1之臨限值區域,係不論Top頁面為0或是1,均成為相同之臨限值區域。因此,雖然原本應該要被產生有8個的臨限值區域,但是係被匯集為7個的臨限值區域。 除此之外,係亦可考慮有其他的資料編碼之例。以下,將針對各資料編碼的碼分配作展示之圖作列記。圖28,係對於3-2-5-5資料編碼之其中一例作展示,圖29,係對於3-2-5-5資料編碼之其中一例作展示,圖30,係對於1-5-5-4資料編碼之其中一例作展示。又,圖31,係對於1-5-4-5資料編碼之其中一例作展示,圖32,係對於1-4-5-5資料編碼之其中一例作展示,圖33,係對於1-5-3-6資料編碼之其中一例作展示。又,圖34,係對於1-3-6-5資料編碼之其中一例作展示,圖35,係對於1-2-6-6資料編碼之其中一例作展示,圖36,係對於1-2-6-6資料編碼之其中一例作展示。 又,圖37,係對於1-2-6-6資料編碼之其中一例作展示,圖38,係對於1-4-6-4資料編碼之其中一例作展示,圖39,係對於1-4-4-6資料編碼之其中一例作展示。又,圖40,係對於1-4-6-4資料編碼之其中一例作展示,圖41,係對於1-4-4-6資料編碼之其中一例作展示,圖42,係對於2-5-2-6資料編碼之其中一例作展示。又,圖43,係對於2-5-2-6資料編碼之其中一例作展示,圖44,係對於2-5-2-6資料編碼之其中一例作展示,圖45,係對於3-3-3-6資料編碼之其中一例作展示。又,圖46,係對於3-3-6-3資料編碼之其中一例作展示,圖47,係對於2-3-4-6資料編碼之其中一例作展示,圖48,係對於3-4-2-6資料編碼之其中一例作展示。 又,圖49,係對於2-3-4-6資料編碼之其中一例作展示,圖50,係對於3-2-6-4資料編碼之其中一例作展示,圖51,係對於3-2-4-6資料編碼之其中一例作展示。又,圖52,係對於3-2-6-4資料編碼之其中一例作展示,圖53,係對於3-4-2-6資料編碼之其中一例作展示,圖54,係對於3-2-4-6資料編碼之其中一例作展示。又,圖55,係對於5-3-2-5資料編碼之其中一例作展示,圖56,係對於3-5-2-5資料編碼之其中一例作展示,圖57,係對於3-2-5-5資料編碼之其中一例作展示。又,圖58,係對於2-3-5-5資料編碼之其中一例作展示,圖59,係對於2-3-5-5資料編碼之其中一例作展示,圖60,係對於2-3-5-5資料編碼之其中一例作展示。 又,圖61,係對於5-4-2-4資料編碼之其中一例作展示,圖62,係對於4-5-2-4資料編碼之其中一例作展示,圖63,係對於5-4-2-4資料編碼之其中一例作展示。又,圖64,係對於2-4-5-4資料編碼之其中一例作展示,圖65,係對於2-4-5-4資料編碼之其中一例作展示,圖66,係對於2-5-4-4資料編碼之其中一例作展示。又,圖67,係對於2-5-4-4資料編碼之其中一例作展示,圖68,係對於2-5-4-4資料編碼之其中一例作展示,圖69,係對於1-5-4-5資料編碼之其中一例作展示。又,圖70,係對於1-4-5-5資料編碼之其中一例作展示,圖71,係對於1-5-5-4資料編碼之其中一例作展示,圖72,係對於1-4-5-5資料編碼之其中一例作展示。 又,圖73,係對於1-5-5-4資料編碼之其中一例作展示,圖74,係對於1-5-4-5資料編碼之其中一例作展示,圖75,係對於1-5-5-4資料編碼之其中一例作展示。又,圖76,係對於1-5-4-5資料編碼之其中一例作展示,圖77,係對於1-4-5-5資料編碼之其中一例作展示,圖78,係對於1-4-5-5資料編碼之其中一例作展示。又,圖79,係對於1-4-5-5資料編碼之其中一例作展示,圖80,係對於1-4-5-5資料編碼之其中一例作展示,圖81,係對於3-5-4-3資料編碼之其中一例作展示。又,圖82,係對於3-4-5-3資料編碼之其中一例作展示,圖83,係對於3-5-3-4資料編碼之其中一例作展示,圖84,係對於3-4-3-5資料編碼之其中一例作展示。 又,圖85,係對於3-4-5-3資料編碼之其中一例作展示,圖86,係對於3-4-3-5資料編碼之其中一例作展示,圖87,係對於3-3-5-4資料編碼之其中一例作展示。又,圖88,係對於3-3-5-4資料編碼之其中一例作展示,圖89,係對於4-5-3-3資料編碼之其中一例作展示,圖90,係對於3-5-4-3資料編碼之其中一例作展示。又,圖91,係對於3-4-5-3資料編碼之其中一例作展示,圖92,係對於3-3-4-5資料編碼之其中一例作展示,圖93,係對於3-3-4-5資料編碼之其中一例作展示。 又,圖94,係對於3-3-4-5資料編碼之其中一例作展示,圖95,係對於3-4-5-3資料編碼之其中一例作展示,圖96,係對於3-3-5-4資料編碼之其中一例作展示。又,圖97,係對於3-3-4-5資料編碼之其中一例作展示,圖98,係對於4-3-4-4資料編碼之其中一例作展示,圖99,係對於3-4-4-4資料編碼之其中一例作展示。又,圖100,係對於3-4-4-4資料編碼之其中一例作展示,圖101,係對於4-3-4-4資料編碼之其中一例作展示,圖102,係對於3-4-4-4資料編碼之其中一例作展示。又,圖103,係對於3-4-4-4資料編碼之其中一例作展示,圖104,係對於3-4-4-4資料編碼之其中一例作展示,圖105,係對於3-4-4-4資料編碼之其中一例作展示。又,圖106,係對於4-4-3-4資料編碼之其中一例作展示,圖107,係對於4-4-3-4資料編碼之其中一例作展示。 如此這般,藉由在1st階段和2nd階段處,將一部分之頁面的資料重複作輸入,並將其他之頁面的資料,僅在1st階段以及2nd階段之其中一方處作輸入而進行程式化,係能夠降低胞間相互干涉,並且亦能夠削減寫入緩衝之容量,並且亦可對於在將各位元資料作寫入時的位元錯誤率之偏頗作抑制。特別是,在1-4-5-5、1-5-4-5、3-3-4-5或者是3-5-2-5資料編碼的情況時,由於各頁面資料之邊界數係為均一,並且在2nd階段之程式化時的臨限值區域之變遷數係為3以下,因此,係能夠對於位元錯誤率之偏頗作抑制,並且能夠降低胞間相互干涉。 (第3實施形態) 由第3實施形態所致之記憶體系統1,係為將寫入緩衝之容量相較於第1以及第2實施形態而更進一步作了削減者。 由第3實施形態所致之記憶體系統1的硬體構成,係與由第1以及第2實施形態所致之記憶體系統1共通。在第3實施形態中,係將與1st階段之程式化重複地而亦在2nd階段之程式化中作輸入的頁面之資料,於1st階段之程式化開始後,仍持續保持於非揮發性記憶體3之內部的頁面緩衝24中。藉由此,在2nd階段之程式化中,係能夠省略該頁面之資料輸入的程序,並且成為能夠將所有的頁面之資料輸入設為僅有1次。藉由此,係能夠將寫入緩衝之容量作削減。 進而,在本實施形態中,係將字元線WLn-1之2nd階段的程式化和字元線WLn之1st階段的程式化作統整而進行之。如此這般,頁面緩衝24,係將第1~第4位元(Lower頁面、Middle頁面、Upper頁面、Top頁面)中的於1st階段之程式化2nd階段之程式化時會被重複輸入的位元之資料,在開始1st階段之程式化之前而作記憶,並在開始了2nd階段之程式化之後設為能夠廢棄或無效化。以下,在本實施形態中,亦同樣的,係針對使用與第1實施形態之在圖6中所作了說明者相同之1-4-5-5資料編碼之例,來進行說明。 在圖9所示之程式化的流程圖中,1st階段之程式化和2nd階段之程式化,係使實行時序相互偏移,在各者的程式化時,係需要進行各者之程式化指令與程式化資料之輸入。相對於此,在本實施形態中,係將1st階段之程式化和2nd階段之程式化的程式化指令與程式化資料輸入盡可能地作統整而進行之。 例如,如同在圖8B所示一般,除了區塊之開頭和結束的端部之外,字元線WLn之1st階段和字元線WLn-1之2nd階段的程式化係絕對為連續。因此,在本實施形態中,係將此部份設為統合的指令輸入。亦即是,藉由1次的指令輸入,字元線WLn之Lower頁面、Middle頁面以及Top頁面與字元線WLn-1之Upper頁面之各程式化資料係被整批地輸入。此係身為與採用有Foggy-Fine的情況時之藉由1次的程式化指令而使Lower/Middle/Upper/Top頁面之資料被整批地(但是,於此情況,係為相同字元線WLi內之頁面)作了4個頁面之量之輸入一事相同的資料量之輸入。 如此這般,藉由將程式化指令以及程式化資料之輸入作統整,在記憶體控制器2所進行的控制中之指令輸入和輪詢(關於chip busy是否回復到的ready一事的定期性之檢查)之頻度係減少,記憶體系統1之高速化與控制的簡單化係成為可能。 於此,針對依循於由第3實施形態所致的程式化順序之寫入程序的其中一例,使用圖108以及圖109而作說明。在圖108以及圖109中,係對於在依循了圖8B中所示之程式化順序的情況時之寫入程序作展示。 圖108,係為對於由第3實施形態所致的1個區塊之量之全體的寫入程序作展示之流程圖。於此之1個區塊,假設係具備有字元線WL0~WLn(n為自然數)之n+1根的字元線WLi。如同圖108中所示一般,若是開始進行寫入(步驟S710),則係進行字串St0~St3之字元線WL0之1st階段的程式化之處理(步驟S712)。藉由此,控制部22,係實施字串St0~St3之字元線WL0之1st階段的程式化(步驟S714)。 又,控制部22,係實施字串St0_字元線WL1之1st階段的程式化和字串St0_字元線WL0之2nd階段的程式化(步驟S716)。 接著,控制部22,係實施字串St1_字元線WL1之1st階段的程式化和字串St1_字元線WL0之2nd階段的程式化(步驟S718)。接著,控制部22,係實施字串St2_字元線WL1之1st階段的程式化和字串St2_字元線WL0之2nd階段的程式化(步驟S720)。之後,控制部22,係對於各字串之各字元線WLi而反覆進行同樣的處理。 接著,係實施字串St0_字元線WLn之1st階段的程式化和字串St0_字元線WLn-1之2nd階段的程式化(步驟S722)。接著,控制部22,係實施字串St1_字元線WLn之1st階段的程式化和字串St1_字元線WLn-1之2nd階段的程式化(步驟S724)。之後,控制部22,係對於各字串之各字元線WLi而反覆進行同樣的處理。 接著,控制部22,係實施字串St3_字元線WLn之1st階段的程式化和字串St3_字元線WLn-1之2nd階段的程式化(步驟S726)。接著,控制部22,係實施字串St0~St3之字元線WLn之2nd階段的程式化(步驟S728、S730、S732)。 如此這般,在區塊之開頭處,係與第1實施形態相同地而被實施僅有1st階段之程式化,在區塊之最後處,係與第1實施形態相同地而被實施僅有2nd階段之程式化。於此情況,僅有1st階段之程式化,係依循於圖8B中所示之程序而被實行,僅有2nd階段之程式化,係依循於圖8C中所示之程序而被實行。又,在圖108之流程圖中,除了區塊之開頭與最後以外,係將字元線WLn之1st階段的程式化和字元線WLn-1之2nd階段的程式化作統整而進行之。藉由此,記憶體控制器2所進行的指令輸入和輪詢之頻度係減少,而能夠將記憶體系統1之處理高速化。 圖109,係為對於第3實施形態的1st階段以及2nd階段中之寫入程序作展示之流程圖。如同圖109中所示一般,在1st階段以及2nd階段之程式化中,於1st階段之程式化被作了實行之後,接著2nd階段之程式化係被實行。具體而言,首先,係從記憶體控制器2對於非揮發性記憶體3而被輸入有字元線WLn-1之Upper頁面之資料的輸入開始指令(步驟S750)。之後,係從記憶體控制器2對於非揮發性記憶體3而被輸入有字元線WLn-1之Upper頁面之資料(步驟S752)。 接著,係從記憶體控制器2對於非揮發性記憶體3而被輸入有字元線WLn之Lower頁面之資料的輸入開始指令(步驟S754)。之後,係從記憶體控制器2對於非揮發性記憶體3而被輸入有字元線WLn之Lower頁面之資料(步驟S756)。 接著,係從記憶體控制器2對於非揮發性記憶體3而被輸入有字元線WLn之Middle頁面之資料的輸入開始指令(步驟S758)。之後,係從記憶體控制器2對於非揮發性記憶體3而被輸入有字元線WLn之Middle頁面之資料(步驟S760)。Middle頁面之資料,係並不僅是被輸入至非揮發性記憶體3處,而亦被記憶在頁面緩衝24中。在記憶於頁面緩衝24中之後,係能夠將寫入緩衝內之Middle資料廢棄或無效化。 接著,係從記憶體控制器2對於非揮發性記憶體3而被輸入有字元線WLn之Top頁面之資料的輸入開始指令(步驟S762)。之後,係從記憶體控制器2對於非揮發性記憶體3而被輸入有字元線WLn之Top頁面之資料(步驟S764)。 接著,係從記憶體控制器2對於非揮發性記憶體3而被輸入有1st階段以及2nd階段之程式化實行指令(步驟S766),並藉由此而成為chip_busy(步驟S768)。 之後,對於字元線WLn之Lower頁面、Middle頁面以及Top頁面,係被施加有1~複數次的程式化電壓脈衝(步驟S770)。之後,為了對於記憶體胞是否超越臨限值邊界準位地而作了移動一事作確認,係進行有字元線WLn之Lower頁面和Top頁面之資料讀出(步驟S772)。 進而,係確認在Lower頁面和Top頁面中之資料的失敗位元數量是否為較判定基準而更小(步驟S774)。當Lower頁面與Top頁面中之資料的失敗位元數量係為判定基準以上的情況時,步驟S770~S774之處理係被反覆進行。而,若是資料的失敗位元數量成為較判定基準而更小,則字元線WLn-1之Lower頁面與Top頁面資料係被讀出(步驟S776)。 之後,基於字元線WLn-1之Lower與Top頁面資料和從頁面緩衝24所被讀出的Middle頁面之資料,Upper頁面之程式化目標的臨限值電壓Vth係被決定(步驟S778)。之後,使用被決定了的臨限值電壓Vth,對於字元線WLn-1之Upper頁面之資料寫入係被進行(步驟S780)。 在對於Upper頁面之資料寫入時,對於字元線WLn-1之Upper頁面,係被施加有1~複數次的程式化電壓脈衝。之後,為了對於記憶體胞是否超越臨限值邊界準位地而作了移動一事作確認,係進行有字元線WLn-1之Upper頁面之資料讀出(步驟S782)。 進而,係進行有判定在Upper頁面中之資料的失敗位元數量是否為較判定基準而更小之驗證(步驟S784)。當在Upper頁面中之資料的失敗位元數量係為判定基準以上的情況時,程式化電壓脈衝施加和資料讀出、驗證之處理係被反覆進行。而,若是資料的失敗位元數量成為較判定基準而更小,則係成為chip_ready(步驟S786)。 另外,在針對同一字元線的1st階段之程式化中,於複數之頁面的資料輸入開始指令與資料輸入處理中之頁面的順序係為任意,不論是何者之頁面先被作輸入均可。又,在針對同一字元線的2nd階段之程式化中,於複數之頁面的資料輸入開始指令與資料輸入處理中之頁面的順序亦為任意。但是,各個的字元線編號和2個的階段之程式化之處理之順序,係絕對需要成為在圖109中所示之順序。 如此這般,在圖109中,係針對使字元線WLn之1st階段的程式化在較字元線WLn-1之2nd階段的程式化更之前而被實行的情況作說明。此係為了藉由使字元線WLn之1st階段的程式化先被進行來成為不會使16值之臨限值電壓Vth所被作寫入的字元線WLn-1之胞受到鄰接之胞的影響之故。 如同上述一般,在本實施形態中,字元線WLn-1之Upper頁面之資料和字元線WLn之Lower頁面、Middle頁面以及Top頁面之資料之4個頁面之量的資料,係被連續地輸入。 又,作為另一變形例,係亦可在程式化指令之輸入後,作為IDL,而在先進行了字元線WLn-1之Lower頁面、Middle頁面以及Top頁面之資料的讀出之後,進行字元線WLn之Lower頁面、Middle頁面以及Top頁面之程式化,接著,字元線WLn-1之Upper頁面之程式化目標的臨限值電壓Vth被作決定,並藉由所被決定了的臨限值電壓Vth來進行字元線WLn-1之Upper頁面之程式化。若是設為此種構成,則係能夠在受到由字元線WLn之寫入所致的鄰接胞間干涉之影響之前,先進行IDL之字元線WLn-1之Lower頁面、Middle頁面以及Top頁面之資料的讀出。 另外,在本實施形態中的由字元線WLn之1st階段與字元線WLn-1之2nd階段之統整的指令所致之程式化的實際之實行順序,係能夠作變形。亦即是,圖109中所示之字元線WLn之Lower頁面、Middle頁面以及Top頁面的程式化、和作為IDL之字元線WLn-1之Lower頁面、Middle頁面以及Top頁面之資料的讀出,係不論何者為先均可,而可作交換。藉由將字元線WLn-1之Lower頁面、Middle頁面以及Top頁面之資料的讀出在字元線WLn之Lower頁面、Middle頁面以及Top頁面的程式化之前而先進行,係成為能夠並不受到起因於字元線WLn之Lower頁面、Middle頁面以及Top頁面的程式化所致之影響地而進行IDL。 如此這般,在第3實施形態中,由於係將字元線WLn-1之2nd階段的程式化和字元線WLn之1st階段的程式化作統整而進行之,因此指令輸入和輪詢之頻度係減少。故而,係成為能夠達成記憶體系統1之高速化以及控制之簡單化。 圖110,係為用以對於在第3實施形態之程式化中之寫入緩衝量(緩衝資料量)作說明之圖。在本實施形態中,係以1-4-5-5資料編碼而使用有2階段的程式化。在本實施形態之程式化中,於1st階段中,係進行有3個頁面之量(Lower頁面和Middle頁面以及Top頁面)的資料輸入、和此3個頁面之量的程式化(1st程式化)。又,在本實施形態之程式化的情況時,於2nd階段中,係進行有1個頁面之量(Upper頁面)的資料輸入、和Upper頁面之1個頁面之量的程式化(2nd程式化)。 而,在各字元線WL0、WL1、WL2、…處,係只要在各階段之資料輸入時將資料預先儲存在寫入緩衝中即可,若是程式化被開始,則係亦可將資料從寫入緩衝內而刪除。例如,若是在1st階段處而資料被作輸入,則此資料係被儲存在寫入緩衝內。而,若是在1st階段處而程式化被開始,則係亦可將預先被儲存在寫入緩衝內之Lower頁面和Top頁面以及Middle頁面之資料刪除。但是,Middle頁面之資料,由於係在2nd階段處亦被作使用,因此,直到2nd階段處之程式化被開始為止,係有必要預先記憶在頁面緩衝24中。同樣的,若是在2nd階段處而資料被作輸入,則此資料係被儲存在寫入緩衝內。而,若是在2nd階段處而程式化被開始,則係亦可將預先被儲存在寫入緩衝內之資料全部刪除。因此,在本實施形態之程式化的情況時,有必要預先保持在寫入緩衝內之資料,就算是最大亦係僅為3個頁面之量的資料,而可成為較第1實施形態而更為減少。 在本實施形態之程式化中,亦同樣的,為了將鄰接記憶體胞間干涉降低,Lower/Middle/Upper/Top之4個頁面之量的資料係並不被連續地作寫入。例如,在對於字元線WL0之1st階段被作了實行之後,於對於字元線WL0之2nd階段被實行之前,對於與字元線WL0相鄰接之字元線WL1的1st階段係被實行。同樣的,在對於字元線WL1之1st階段被作了實行之後,於對於字元線WL1之2nd階段被實行之前,對於與字元線WL1相鄰接之字元線WL2的1st階段係被實行。 如此這般,在本實施形態中,由於所有的頁面資料,係僅在1次的階段之程式化中而為必要,因此,若是該資料輸入結束,則係成為能夠將寫入緩衝內之資料刪除。因此,在本實施形態中,有必要預先同時保持在寫入緩衝內之頁面數量,係僅需要較第1實施形態而更少即可。 被對於非揮發性記憶體3而進行程式化的頁面資料,係先在RAM6內之寫入緩衝中暫時被作保持,之後在程式化時被資料輸入至非揮發性記憶體3中。在本實施形態中,由於係成為能夠將此RAM6之必要容量縮小,因此係成為使成本被削減。 又,在本實施形態中,由於係藉由各頁面之各者的1次之資料傳輸而結束,因此,相較於第1實施形態,係亦僅需要較少的頁面資料之傳輸時間,而成為能夠將傳輸時之消耗電力作削減。 關於在本實施形態中之頁面讀出處理,由於係與在第1實施形態中所作了說明的處理程序相同,故省略其說明。 另外,在本實施形態中,為了新的需要繼續作保持之頁面之資料,係需要將NAND快閃記憶體內部之頁面緩衝24作增加。在如同圖8A中所示一般之於區塊內存在有1個的字串之NAND快閃記憶體之程式化中,需要作增加的頁面緩衝24之量,係為1個頁面的資料之量。相對於此,在如同圖8B或圖8C中所示一般之於區塊內存在有4個的字串之NAND快閃記憶體之程式化中,需要作增加的頁面緩衝24之量,係為4個頁面的資料之量。此係因為,在從實行某一個的字串之1st階段之程式化起直到實行相同字串之2nd階段之程式化為止的期間中,係需要實行其他之3個的字串之1st階段之程式化,其結果,係需要針對4個的字串之全部,而分別保持1個頁面之量的資料之故。 在本實施形態中,雖係以1-4-5-5資料編碼為例來作了說明,但是,係可採用各種的資料編碼之變形,並明顯地能夠實現於上所述之實施形態。 在上述之第1~第3實施形態中,雖係針對使用NAND記憶體5來構成非揮發性記憶體3的情況而作了說明,但是,係亦可使用像是ReRAM(Resistive Random Access Memory)或MRAM6(Magneto-Resistive Random Access Memory)、PRAM(Phase Change Random Access Memory)、FeRAM(Ferroeletric Random Access Memory)等之其他型態的非揮發性記憶體3。 在上述之第1~第3實施形態中,雖係針對於1st階段之程式化中係進行3個頁面之量的資料之寫入,於2nd階段之程式化中係進行2個頁面之量的資料之寫入的情況,來作了說明,但是,係亦可對於1st階段之程式化中的頁面數量和2nd階段之程式化中的頁面數量之分配作變更。例如,係亦可構成為在1st階段之程式化中係進行2個頁面之量的資料之寫入,而在2nd階段之程式化中係進行3個頁面之量的資料之寫入。 雖係針對本揭示之數種實施形態作了說明,但是,該些實施形態,係僅為作為例子所提示者,而並非為對於本發明之範圍作限定者。此些之新穎的實施形態,係可藉由其他之各種形態來實施,在不脫離發明之要旨的範圍內,係可進行各種之省略、置換、變更。此些之實施形態或其變形,係亦被包含於發明之範圍或要旨中,並且亦被包含在申請專利範圍中所記載的發明及其均等範圍內。FIG. 1 is a block diagram showing the schematic configuration of the memory system 1 according to the first embodiment. The memory system 1 in FIG. 1 has a memory controller 2 and a non-volatile memory 3. The memory system 1 in FIG. 1 can be connected to a host processor (hereinafter, simply referred to as a host) 4. The host 4 is, for example, an electronic device such as a personal computer or a portable terminal. The non-volatile memory 3 is a memory that stores data non-volatilely. For example, it is equipped with a NAND flash memory (hereinafter, it is also referred to as a NAND memory) 5. In this embodiment, the non-volatile memory 3 is a 4bit/Cell (QLC: Quad Level Cell) NAND with a memory cell capable of storing 4 bits of data at each memory cell. An example of memory 5 will be explained. The non-volatile memory 3 according to this embodiment has a three-dimensional structure in which memory cells are stacked three-dimensionally. Non-volatile memory 3 is a memory cell with a plurality of memory cells, each of which has 16 threshold areas, and can memorize what is represented by the first to fourth bits 4-bit data. The 16 threshold areas include the first threshold area that represents the deleted state and the voltage level is higher than the first threshold area. It also represents the 2nd to 16th threshold area of the writing state where the data has been written. For example, the first bit is the lower bit of the lowest bit, the second bit is the middle bit of the second smallest, and the third bit is the upper bit of the second largest. , The 4th bit mentioned above is the Top bit which is the highest. The memory controller 2 controls the writing of data in the non-volatile memory 3 in accordance with the write command from the host 4. In addition, the memory controller 2 controls the reading of data from the non-volatile memory 3 in accordance with the read command from the host 4. The memory controller 2 has a RAM (Random Access Memory) 6, a ROM (Read Only Memory) 7, a processor 8, a host interface 9, an ECC (Error Check and Correct) circuit 10, and a memory interface 11. The RAM 6, the processor 8, the host interface 9, the ECC circuit 10, and the memory interface 11 are connected by a common internal bus 12. As will be described later, the memory controller 2 of this embodiment uses the non-volatile memory 3 to perform the first programming of writing the data of the first bit, the second bit, and the fourth bit. After that, the non-volatile memory 3 is subjected to the second programming of writing the data of the third bit. Among the 15 boundaries between adjacent threshold regions existing in the first to 16th threshold regions, the number of first boundaries used in the determination of the value of the first bit data , The number of the second boundary used in the determination of the value of the data of the second bit, the number of the third boundary used in the determination of the value of the third bit of data, is used in the fourth bit For the number of the fourth boundary in the determination of the value of the data, the largest value among these numbers is 5, and the second largest value is 4. The memory controller 2 is configured so that the threshold area in the memory cell will correspond to the data in the first, second, and fourth bits and become the representative data that has been deleted The 17th threshold area and voltage level of the deleted state are higher than the 17th threshold area and represent one of the 18th to 24th threshold areas of the write state where the data is written The threshold area is used to make the non-volatile memory 3 perform the first programming. The memory controller 2 is configured so that the threshold value area in the memory cell will be from the threshold value of any one of the 17th to the 24th threshold value area in response to the data of the third bit The non-volatile memory 3 is programmed for the second time by making the area become the threshold area of any one of the threshold areas of the first to 16th threshold areas. The number of threshold regions between the two threshold regions where the voltage level is the lowest and the threshold region where the voltage level is the highest is within two. The memory controller 2 is configured to input the data of the second bit and the data of the third bit into the non-volatile memory 3 when the non-volatile memory 3 is programmed in the second. In more detail, the memory controller 2 is designed to make adjacent threshold regions in the boundary of 15 among 16 threshold regions (the first to 16th threshold regions) The value of the first bit is the number of different boundaries, the value of the second bit is the number of different boundaries, the value of the third bit is the number of different boundaries, and the fourth bit The value is the number of different boundaries, in order of (1, 4, 5, 5), (1, 5, 4, 5) or (3, 3, 4, 5) to make non-volatile The sexual memory performs the first programming and the second programming. Or, the memory controller 2 of this embodiment is after the non-volatile memory 3 is programmed to write the data of the first bit, the second bit, and the fourth bit. , Make the non-volatile memory 3 perform the second programming of writing the data of the third bit. Among the 15 boundaries between adjacent threshold regions existing in the first to 16th threshold regions, the number of first boundaries used in the determination of the value of the first bit data , The number of the second boundary used in the determination of the value of the data of the second bit, the number of the third boundary used in the determination of the value of the third bit of data, is used in the fourth bit The number of the fourth boundary in the judgment of the value of the data is (3, 5, 2, 5) in order. The memory controller 2 is configured so that the threshold area in the memory cell will correspond to the data in the first, second, and fourth bits and become the representative data that has been deleted The 17th threshold area and voltage level of the deleted state are higher than the 17th threshold area and represent one of the 18th to 24th threshold areas of the write state where the data is written The threshold area is used to make the non-volatile memory 3 perform the first programming. The memory controller 2 is configured so that the threshold value area in the memory cell will be from the threshold value of any one of the 17th to the 24th threshold value area in response to the data of the third bit The non-volatile memory 3 is programmed for the second time by making the area become the threshold area of any one of the threshold areas of the first to 16th threshold areas. The number of threshold regions between the two threshold regions where the voltage level is the lowest and the threshold region where the voltage level is the highest is within two. The memory controller 2 is configured to input the data of the second bit and the data of the third bit into the non-volatile memory 3 when the non-volatile memory 3 is programmed in the second. The memory controller 2 can also calculate the voltage level difference between the two threshold regions that will make the data value of the second bit in the 17th ~ 24th threshold region different The voltage level difference between the two threshold regions that are different from the data value of the first bit becomes smaller and becomes the two that are different from the data value of the fourth bit. The voltage level difference between the threshold areas is smaller to make the non-volatile memory the first programming. Alternatively, the memory controller 2 can also use the interval between the two threshold regions at the time of the first programming that are different from the data value of the second bit, so that the Two threshold areas, and the second programming is performed with the data of the third bit, the interval between adjacent threshold areas among the four threshold areas becomes wider. , To make the non-volatile memory the second programming. The host interface 9 outputs the commands received from the host 4 and user data (write data) to the internal bus 12. In addition, the host interface 9 sends the user data read from the non-volatile memory 3 or the response from the processor 8 to the host 4. The memory interface 11 is based on the instructions of the processor 8, and for the processing of writing user data into the non-volatile memory 3 and the processing of reading user data from the non-volatile memory 3 control. The processor 8 is for overall control of the memory controller 2. The processor 8 is, for example, a CPU (Central Processing Unit), an MPU (Micro Processing Unit), etc. When the processor 8 receives a command from the host 4 via the host interface 9, it performs control following the command. For example, the processor 8 follows the instructions from the host 4 and issues instructions to the memory interface 11 to write user data and parity check codes in the non-volatile memory 3. In addition, the processor 8 follows the instructions from the host 4, and gives the memory interface 11 instructions for reading the user data from the non-volatile memory 3 and the parity check code. The user data is stored in the RAM 6 via the internal bus 12. The processor 8 determines the storage area (memory area) on the non-volatile memory 3 for the user data stored in the RAM 6. The processor 8 determines the memory area on the non-volatile memory 3 for the data (page data) of the page unit as the writing unit. In this manual, user data stored in one page of non-volatile memory 3 is defined as unit data. The unit data is generally encoded and stored in the non-volatile memory 3 as a code word, but the encoding system is not necessary. The memory controller 2 can also store the unit data in the non-volatile memory 3 without encoding. However, in FIG. 1, as one of the configuration examples, the encoding configuration is shown. When the memory controller 2 does not perform encoding, the page data is consistent with the unit data. In addition, one codeword can be generated based on one unit data, or one codeword can be generated based on segmentation data after the unit data is divided. In addition, it is also possible to use plural unit data to generate one codeword. The processor 8 determines the memory area of the non-volatile memory 3 of the write target for each of the unit data. The memory area of the non-volatile memory 3 is assigned a physical address. The processor 8 uses the physical address to manage the memory area of the writing target of the unit data. The processor 8 gives instructions to the memory interface 11 by designating the determined memory area (physical address) and writing user data to the non-volatile memory 3. On the other hand, the host 4 manages data through logical addresses. Therefore, the processor 8 manages the correspondence between the logical address and the physical address of the user data. When the processor 8 receives a read command containing a logical address from the host 4, it specifies the physical address corresponding to the logical address, and specifies the physical address. The memory interface 11 gives instructions to read the user data. In this specification, a plurality of memory cells that are commonly connected with one character line is defined as a memory cell group MG. One memory cell group MG becomes the unit of writing (programming). In this embodiment, the non-volatile memory 3 is a 4bit/Cell NAND memory 5, and one memory cell group MG has a data amount of 4 bits×number of bits. The bits written into each memory cell correspond to pages that are different from each other. In this embodiment, the four pages of a memory cell group MG are called Lower page (first page), Middle page (second page), Upper page (third page), and Top page (first page). 4 pages). The ECC circuit 10 encodes the user data stored in the RAM 6 and generates code words. In addition, the ECC circuit 10 decodes the code word read from the non-volatile memory 3. The ECC circuit 10 corrects the bit error contained in the code word read from the non-volatile memory 3 and decodes it into user data. RAM6 is to temporarily store the user data received from the host 4 until it is stored in the non-volatile memory 3, or is read from the non-volatile memory 3. The data is temporarily stored until the host 4 is sent. RAM6, for example, is a general purpose memory such as SRAM (Static Random Access Memory) or DRAM (Dynamic Random Access Memory). In FIG. 1, the memory controller 2 is shown as an example of a configuration in which the ECC circuit 10 and the memory interface 11 are respectively provided. However, the ECC circuit 10 can also be embedded in the memory interface 11. In addition, the ECC circuit 10 can also be embedded in the non-volatile memory 3. When a write request is received from the host 4, the memory system 1 operates as follows. The processor 8 temporarily stores the written data in the RAM 6. The processor 8 reads the data stored in the RAM 6 and inputs it to the ECC circuit 10. The ECC circuit 10 encodes the input data and inputs the code word into the memory interface 11. The memory interface 11 is used to write the entered codeword into the non-volatile memory 3. When a read request is received from the host 4, the memory system 1 operates as follows. The memory interface 11 inputs the code words read from the non-volatile memory 3 to the ECC circuit 10. The ECC circuit 10 decodes the code word that has been input, and temporarily stores the decoded data in the RAM 6. The processor 8 sends the data stored in the RAM 6 to the host 4 via the host interface 9. In addition, the non-volatile memory 3 may also be formed by a plurality of chips. The non-volatile memory 3 and the memory interface 11 can also be formed through through holes (TSV: Through Silicon Via) To make connections. In addition, the structure of the memory controller 2 shown in FIG. 1 is only one example, and the internal bus 12 may be a divided structure or a hierarchical structure, or be connected with additional functional blocks, etc. The other various derivative forms. FIG. 2 is a block diagram showing an example of the internal structure of the non-volatile memory 3 of this embodiment. The non-volatile memory 3 includes a NAND I/O interface 21, a control unit 22, a NAND memory cell array (memory cell unit) 23, and a page buffer (second memory unit) 24. The non-volatile memory 3 is, for example, formed on a semiconductor substrate (such as a silicon substrate) and is chipped. The control unit 22 controls the operation of the non-volatile memory 3 based on commands from the memory controller 2 via the NAND I/O interface 21 and the like. Specifically, when a write request is input, the control unit 22 writes the data requested to be written to the specified address on the NAND memory cell array 23. And to control. In addition, when a read request is input, the control unit 22 reads the data requested to be read from the NAND memory cell array 23 and controls the memory through the NAND I/O interface 21. The output mode of the device 2 is used for control. The page buffer 24 temporarily stores the data input from the memory controller 2 during the writing of the NAND memory cell array 23 and reads the data from the NAND memory cell array 23 Temporarily serve as a buffer for storage. As described later, the control unit 22 is based on the data obtained by reading out the data programmed by the 1st stage programming, and the bits that are repeatedly input during the programming of the 1st stage and the 2nd stage. The data of the element and the input data of the bit programmed by the programming of the 2nd stage determine the threshold voltage of the data of the bit programmed by the programming of the 2nd stage. The control unit 22 includes an oscillator 31, a sequencer 32, a command user interface 33, a voltage supply unit 34, a column counter 35, and a serial access controller 36. In addition, the NAND memory cell array 23 includes a row decoder 37 and a sense amplifier 38. The NAND I/O interface 21 is a circuit for transmitting and receiving IO signals and control signals between the memory controller 2 and the memory controller 2. The command user interface 33 is obtained from the command and address received from the memory controller 2 via the IO signal line and the command and address in the data based on the control signal. The command user interface 33 delivers the obtained command and address to the serializer 32. The oscillator 31 is a circuit that generates a clock pulse. The clock generated by the oscillator 31 is supplied to each component including the sequencer 32. The sequencer 32 is a state machine (State Machine) driven by the clock supplied from the oscillator 31. The sequencer 32 performs control of access to the NAND memory cell array 23, etc. For example, the sequencer 32 responds to commands received from the command user interface 33 to issue various commands for controlling internal voltages or operating timing. In addition, the serializer 32 supplies the block address and page address contained in the address received from the command user interface 33 to the row decoder 37. Furthermore, the sequencer 32 supplies the column address contained in the address received from the command user interface 33 to the column counter 35. The voltage supply unit 34 generates various internal voltages supplied to the word lines and various internal voltages supplied to the bit lines, and supplies them to the row decoder 37 and the sense amplifier 38. The row counter 35 starts with the row address supplied from the serializer 32 during programming or reading, and follows the control signal supplied from the serial access controller 36 to set the row address Go forward in order. When the page buffer 24 is programmed, the data received from the serial access controller 36 is sequentially stored in the row address area designated by the row counter 35. In addition, the page buffer 24 sequentially sends the data of the column address specified by the above-mentioned column address among the stored data to the serial access controller 36 during the read operation. The serial access controller 36 stores the data sequentially received from the NAND I/O interface 21 at the bit width of the IO signal line in the page buffer 24 when it is programmed. In addition, the serial access controller 36 sends the data sequentially received from the page buffer 24 at the bit width of the IO signal line to the NAND I/O interface 21 during the read operation. The row decoder 37 decodes the block address and the page address during programming and reading operations, and selects the corresponding page to be accessed in the block BLK of the access target. The corresponding character line. After that, each row decoder 37 applies an appropriate voltage to the selected word line and the non-selected word line. The sense amplifier 38 transmits the corresponding data stored in the page buffer 24 to the memory cell transistor during programming operation. In addition, the sense amplifier 38 senses the data read from the selected word line to the bit line during the reading operation, and stores the obtained data in the page buffer 24. The data stored in the page buffer 24 is sent to the memory controller 2 through the serial access controller 36 and the NAND I/O interface 21. FIG. 3 is a circuit diagram showing an example of the NAND memory cell array 23 with a three-dimensional structure. FIG. 3 shows the circuit configuration of the block BLK of one of the plural blocks in the NAND memory cell array 23 with a three-dimensional structure. The other blocks of the NAND memory cell array 23 also have the same circuit configuration as in FIG. 3. In addition, this embodiment can also be applied to a memory cell with a two-dimensional structure. As shown in FIG. 3, the block BLK, for example, has four fingers FNG (FNG0-FNG3). In addition, each refers to FNG, which includes plural NAND strings NS. Each of the NAND string NS includes, for example, 8 memory cell transistors MT (MT0 to MT7) connected in series, and selection transistors ST1 and ST2. In this specification, there may be cases where each finger FNG is referred to as a string St. In addition, the number of memory cell transistors MT in the NAND string NS is not limited to 8. The memory cell transistor MT is arranged between the selection transistors ST1 and ST2 so that the current paths are connected in series. The current path of the memory cell transistor MT7 on one end side of the series connection is connected with one end of the current path of the selection transistor ST1, and the current path of the memory cell transistor MT0 on the other end side is connected by Connect with one end of the current path of the selective transistor ST2. The gates of the selection transistor ST1 of each of FNG0~FNG3 are respectively connected to the selection gate lines SGD0~SGD3 in common. On the other hand, the gate of the selection transistor ST2 is commonly connected to the same selection gate line SGS between the plural fingers FNG. In addition, the control gates of the memory cell transistors MT0 to MT7 located in the same block BLK are respectively connected to the word lines WL0 to WL7 in common. That is, the word lines WL0 to WL7 and the select gate line SGS are commonly connected between the plural fingers FNG0 to FNG3 in the same block BLK. In contrast, the select gate line SGD, Even if it is in the same block BLK, it also refers to each of FNG0~FNG3 and is independent of each other. The control gate electrodes of the memory cell transistors MT0 to MT7 constituting the NAND string NS are respectively connected to the word lines WL0 to WL7, and the same refers to the first in each NAND string NS in the FNG. The i memory cell transistors MTi (i=0 to n) are connected in common through the same character line WLi (i=0 to n). That is, the control gate electrode of the memory cell transistor MTi in the same row in the block BLK is connected to the same word line WLi. Each NAND string NS is connected to the word line WLi and is also connected to the bit line. Each memory cell in each NAND string NS can be identified by the address for identifying the word line WLi and the select gate lines SGD0 to SGD3, and the address for identifying the bit line. As mentioned above, the data of the memory cells (memory cell transistors MT) located in the same block BLK are deleted in batches. On the other hand, data reading and writing are performed in units of physical sectors MS. One physical sector MS is connected with one character line WLi, and contains a plurality of memory cells belonging to one FNG. The memory controller 2 writes (programs) all the NAND strings NS connected to one character line in one finger as a unit. Therefore, the unit of the amount of data programmed by the memory controller 2 is 4 bits×the number of bit lines. In the read operation and programming operation, according to the physical address, one word line WLi and one selection gate line SGD are selected, and the physical sector MS is selected. In addition, in this specification, the writing of data to a memory cell is referred to as a program as needed. FIG. 4 is a cross-sectional view of a partial area of the NAND memory cell array 23 of the NAND memory 5 with a three-dimensional structure. As shown in FIG. 4, a plurality of NAND strings NS are formed on the p-well region (P-well) 41 of the semiconductor substrate in the vertical direction. That is, on the p-type well region 41, a plurality of wiring layers 42 functioning as a selective gate line SGS and a plurality of wiring layers functioning as a word line WLi are formed in the vertical direction. 43. And a plurality of wiring layers 44 functioning as a selective gate line SGD. In addition, a memory hole 45 that penetrates through these wiring layers 42, 43, and 44 and reaches the p-type well region 41 is formed. On the side surface of the memory cavity 45, a block insulating film 46, a charge storage layer 47, and a gate insulating film 48 are sequentially formed. Furthermore, a conductive film 49 is buried in the memory cavity 45. The conductive film 49 functions as a current path of the NAND string NS, and is a region where channels are formed during the operation of the memory cell transistor MT and the selection transistors ST1 and ST2. At each NAND string NS, a selection transistor ST2, a plurality of memory cell transistors MT, and a selection transistor ST1 are sequentially stacked on the p-well region 41. At the upper end of the conductive film 49, a wiring layer that functions as a bit line BL is formed. Furthermore, in the surface of the p-type well region 41, an n+ type impurity diffusion layer and a p+ type impurity diffusion layer are formed. On the n+ type impurity diffusion layer, a contact plug 50 is formed, and on the contact plug 50, a wiring layer that functions as a source line SL is formed. In addition, on the p+ type impurity diffusion layer, contact pins 51 are formed, and on the contact pins 51, a wiring layer that functions as a well wiring CPWELL is formed. The well wiring CPWELL is used to apply a delete voltage. The NAND memory cell array 23 shown in FIG. 4 is arranged in plural in the depth direction of the paper of FIG. 4, and a collection of plural NAND strings NS arranged in a row in the depth direction, 1 One of the FNG lines is formed. The other means FNG, for example, is formed in the left-right direction in FIG. 4. In FIG. 3, although there are four fingers FNG0 to 3 in the figure, in FIG. 4, an example in which three fingers are arranged between the contact pins 50 and 51 is shown. Fig. 5 is a diagram showing an example of the threshold value area of the first embodiment. FIG. 5 shows an example of the distribution of the threshold area of the non-volatile memory 3 of 4 bits/Cell. In the non-volatile memory 3, information is stored by the charge amount of electrons accumulated in the charge accumulation layer 47 of the memory cell. Each memory cell has a threshold voltage corresponding to the amount of charge of the electron. In addition, the plural data values stored in the memory cell correspond to the plural areas (threshold area) where the threshold voltage is different. S0~S15 in Figure 5 show the distribution of threshold values in 16 threshold regions. The horizontal axis of Fig. 5 represents the threshold voltage, and the vertical axis represents the number of memory cells (cell number). The threshold value distribution is the range of the threshold value change. In this way, each memory cell has 16 threshold regions divided by 15 boundaries, and each threshold region has an inherent threshold distribution. In this embodiment, the area where the threshold voltage becomes below Vr1 is called area S0, and the area where the threshold voltage becomes greater than Vr1 and below Vr2 is called area S1, and the area where the threshold voltage is below Vr2 is called area S1. The region where the limit voltage becomes larger than Vr2 and below Vr3 is called region S2, and the region where the threshold voltage becomes larger than Vr3 and below Vr4 is called region S3. In addition, in this embodiment, the threshold voltage is larger than Vr4 and the region below Vr5, called region S4, and the threshold voltage is larger than Vr5 and below Vr6 region, called region S4 The area where the threshold voltage is greater than Vr6 and less than Vr7 is referred to as area S6, and the area where the threshold voltage is greater than Vr7 and less than Vr8 is referred to as area S7. In addition, in this embodiment, the area where the threshold voltage is greater than Vr8 and less than Vr9 is called area S8, and the area where the threshold voltage is greater than Vr9 and less than Vr10 is called area S8. The area where the threshold voltage is greater than Vr10 and less than Vr11 is referred to as area S10, and the area where the threshold voltage is greater than Vr11 and less than Vr12 is referred to as area S11. In addition, in this embodiment, the area where the threshold voltage is greater than Vr12 and less than Vr13 is called area S12, and the area where the threshold voltage is greater than Vr13 and less than Vr14 is called area S12. The area where the threshold voltage is greater than Vr14 and below Vr15 is referred to as area S13, and the area where the threshold voltage is greater than Vr15 is referred to as area S15. In addition, the threshold value distributions corresponding to the regions S0 to S15 are referred to as the 1st to 16th distributions. Vr1~Vr15 are the threshold voltages that become the boundary of each threshold area. In the non-volatile memory 3, the data values of the plural numbers correspond to the threshold regions of the plural numbers of the memory cells respectively. This correspondence is called data encoding. This data code is formulated in advance. When the data is written (programmed), the data code is followed to become the threshold area corresponding to the memorized data value for the memory cell The charge accumulation layer 47 injects charge. However, when reading, a read voltage is applied to the memory cell, and the data logic is determined according to the threshold value of the memory cell being lower or higher than the read voltage. When the data is read, the logic system of the data is determined according to the fact that the threshold value is lower or higher than the read level of the boundary of the read object. When the threshold is the lowest, the system is in the "deleted" state, and all bit data is defined as "1". When the threshold value is higher than the "deleted" state, it is in the state of "programmed", following the code, the data is defined as "1" or "0". Fig. 6A is a diagram showing one example of the data encoding of the first embodiment, and showing one example of the 1-4-5-5 data encoding. In this embodiment, the 16 threshold value regions shown in FIG. 5 correspond to 16 data values of 4 bits, respectively. The relationship between the threshold voltage in FIG. 6A and the data value of the bits corresponding to the Top, Upper, Middle, and Lower pages is as follows. ・The threshold voltage is the memory cell located in the S0 area, which is in the state of memory "1111". ・The threshold voltage is the memory cell located in the S1 area, which has a state of "0111" in its memory. ・The threshold voltage is the memory cell located in the S2 area, which is a state with "0011" in its memory. ・The threshold voltage is the memory cell located in the S3 area, and the memory cell has a state of "1011". ・The threshold voltage is the memory cell located in the S4 area, which is a state of memory with "1001". ・The threshold voltage is the memory cell located in the S5 area, and the memory cell has a state of "0001". ・The threshold voltage is the memory cell located in the S6 area, which is in the state of memory "0101". ・The threshold voltage is the memory cell located in the S7 area, which is in the state of memory "1101". ・The threshold voltage is the memory cell located in the S8 area, and the memory cell is in the state of "1100". ・The threshold voltage is the memory cell located in the S9 area, which is in the state of memory "1110". ・The threshold voltage is the memory cell located in the S10 area, which is a state of memory with "1010". ・The threshold voltage is the memory cell located in the S11 area, which means it has a memory state of "1000". ・The threshold voltage is the memory cell located in the S12 area, and the memory cell has a state of "0000". ・The threshold voltage is the memory cell located in the S13 area, and the memory cell has a state of "0100". ・The threshold voltage is the memory cell located in the S14 area, which is in a state of memory with "0110". ・The threshold voltage is the memory cell located in the S15 area, which is in a state of memory with "0010". Fig. 6B is a diagram showing another example of data encoding in the first embodiment, and showing one example of 4-3-4-4 data encoding. The relationship between the threshold voltage in Figure 6B and the data values corresponding to the bits on the Top, Upper, Middle, and Lower pages is as follows. ・The threshold voltage is the memory cell located in the S0 area, which is in the state of memory "1111". ・The threshold voltage is the memory cell located in the S1 area, which has a state of "0111" in its memory. ・The threshold voltage is the memory cell located in the S2 area, which is a state with "0011" in its memory. ・The threshold voltage is the memory cell located in the S3 area, and the memory cell has a state of "1011". ・The threshold voltage is the memory cell located in the S4 area, which is in the state of memory "1010". ・The threshold voltage is the memory cell located in the S5 area, which is in the state of memory "1110". ・The threshold voltage is the memory cell located in the S6 area, and the memory cell has a state of "1100". ・The threshold voltage is the memory cell located in the S7 area, and the memory cell has a state of "1000". ・The threshold voltage is the memory cell located in the S8 area, which is in a state of memory with "1001". ・The threshold voltage is the memory cell located in the S9 area, and the memory cell has a state of "0001". ・The threshold voltage is the memory cell located in the S10 area, which is in the state of memory with "0000". ・The threshold voltage is the memory cell located in the S11 area, which is a state with "0010" in its memory. ・The threshold voltage is the memory cell located in the S12 area, which is in a state of memory with "0110". ・The threshold voltage is the memory cell located in the S13 area, and the memory cell has a state of "0100". ・The threshold voltage is the memory cell located in the S14 area, which is in the state of memory "0101". ・The threshold voltage is the memory cell located in the S15 area, which is in the state of memory "1101". As shown in FIGS. 6A and 6B, it is a logic capable of distributing 4-bit data of each memory cell at each area of the threshold voltage. In addition, when the memory cell is in an unwritten state ("deleted" state), the threshold voltage of the memory cell is located in the S0 area. In addition, in the symbols shown here, it is the same as "in the S0 (deleted) state, the data of "1111" is memorized, and in the state of S1, the data "0111" is memorized." The data is changed by only 1 bit between adjacent areas. In this way, the data code shown in FIG. 6A and FIG. 6B is a Gray code that only changes the data by one bit between any two adjacent regions. In the coding of this embodiment shown in FIG. 6A, the threshold voltage used to determine the boundary of the bit value of each page is as follows. ・The threshold voltage used to determine the boundary of the bit value of the Top page is Vr1, Vr3, Vr5, Vr7, Vr12. ・The threshold voltage used to determine the boundary of the upper page bit value is Vr2, Vr6, Vr10, Vr13, Vr15. ・The threshold voltage used to determine the boundary of the bit value of the middle page is Vr4, Vr9, Vr11, and Vr14. ・The threshold voltage used to determine the boundary of the bit value of the lower page is Vr8. In this way, the number of threshold voltages used to determine the boundary of the bit value (hereinafter referred to as the boundary number) is 1, 4, and 5 for the Lower page, Middle page, Upper page, and Top page, respectively. , 5. Hereinafter, this kind of encoding is referred to as 1-4-5-5 encoding using the number of boundaries of each of the Lower page, Middle page, Upper page, and Top page. The first feature of this embodiment is that the maximum number of boundaries by which the bit value of each page changes is 5. When the 16 states are represented by 4 bits, the minimum value of the maximum number of boundaries is 4, and the code in Fig. 6 is only more than this, and the bit error bias is reduced. . In this way, the memory system 1 of the present embodiment has the first feature, which can suppress the bit error rate, and can also perform bit error bias for each page. inhibition. The second feature of this embodiment is that the number of borders on the lower page is one, and the number of borders on the middle page is four. This makes it possible to integrate the lower page and the middle page into one. The programming is carried out in the two stages of "programming" and "the second stage of programming that unifies the Upper page and the Top page". The third feature of this embodiment is that the range of change from the threshold area generated by the programming of the first stage to the threshold area generated by the programming of the second stage is less. That is, this means that the change range of the threshold area is small. If the change range of the threshold area is smaller, the system becomes more difficult to be affected by interference between neighboring cells. The first to third features mentioned above will be described in detail later. The control unit 22 of the non-volatile memory 3 controls the programming of the NAND memory cell array 23 and the reading from the NAND memory cell array 23 based on the code shown in FIG. 6A or FIG. 6B. In a 3-dimensional memory cell, the miniaturization of the memory cell has not progressed as well as that of a 2-dimensional memory cell. Therefore, in a three-dimensional memory cell, if it is a generation in which the interval between adjacent memory cells is wide, the mutual interference between the cells is small. In this case, generally speaking, a programming technique is adopted to program all the bits of each memory cell simultaneously (for example, if the bits are allocated to different pages, all the pages are simultaneously). When programming all the bits of each memory cell at the same time, as data coding, it is not particularly limited to group cooperation. Just based on the data of all the bits, decide which of the 16 threshold areas to be located, and make it the determined threshold area from the area of S0 that is in the deleted state. Just program it. In this case, generally speaking, a data encoding such as 4-4-3-4 data encoding is used to make the maximum boundary number take the minimum value. In the 4-4-3-4 data encoding, when the 15 boundaries between the 16 threshold areas are allocated to the 4 pages, 4 boundaries are allocated to the Lower page, and 4 boundaries are allocated to the Middle page 4 boundaries, and 3 boundaries are allocated for the Upper page, and 4 boundaries are allocated for the Top page. In the case of data encoding, since the deviation of the number of boundaries between pages is small, as a result, the deviation of the bit error rate between pages is reduced. This is because the vast majority of the causes of bit errors are caused by the shift of the threshold value to the adjacent threshold area, and if it is a page with a larger number of boundaries, the bit The number of meta errors will become larger. This is because "even if the error rate of the memory cell is the same, the correction capability of the ECC circuit 10, which is necessary for correcting page data errors, must be strengthened." Therefore, in order to It is also effective in suppressing the deterioration of the response performance, cost, and power consumption of the memory system 1 in response to the write request from the host 4. In addition, the bias in the readout speed caused by the bias in the number of borders is also reduced. In addition, in the 4-bit/Cell NAND memory 5, since the interval between adjacent threshold regions is narrow, the influence caused by mutual interference between cells is compared to 1 bit/ Cell or 2-bit/Cell NAND memory 5 series becomes larger. Therefore, in the NAND memory 5 of the generation where the miniaturization has progressed in recent years, generally speaking, in order to suppress the mutual interference between cells, a programming stage using plural numbers, such as two programming phases, is adopted. The stage (hereinafter referred to simply as a stage) is a stylized method (Foggy-Fine stylization) that sequentially injects a small amount of charge into the charge accumulation layer 47 of the memory cell. In this Foggy-Fine programming, after writing to the memory cell in the first stage (Foggy stage), writing to the neighboring cell is performed, and then back to the original memory cell , And write in the second stage (Fine stage). In this case, each stage is the implementation unit of programming, and the programming of the memory cell corresponding to one character line WLi is completed by implementing two programming stages. Regardless of whether it is in the programming of the first stage or in the programming of the second stage, 16 threshold regions are used for programming. The threshold value distribution of the threshold value area at the end of the programming of the first stage has a wider width than the threshold value distribution of the threshold value area in the final data encoding. That is, in the Foggy stage, Foggy (rough) writing is performed. In the programming of this Foggy stage, all 4 pages of input data are necessary. The programmed threshold distribution in the Foggy stage is in an intermediate state where adjacent distributions overlap each other, so data cannot be read out. In the programming of the Fine stage, which is the second stage, the programmed threshold area of the Foggy stage is moved to the threshold area in the final data encoding. That is, in the Fine stage, Fine writing is performed. The stylization of this Fine stage is also the same. All 4 pages of input data are necessary. The programmed threshold distribution in the Fine stage is a final state separated from each other because the adjacent distributions are separated from each other. Therefore, the data can be read out after the programming in the Fine stage. In the case of 4-4-3-4 data coding, although the bias of the number of boundaries is small, in Foggy-Fine stylized data input, 4 pages of data are required at each stage enter. This system will increase the time spent in data input and degrade the response performance of the memory system 1 with respect to the write request from the host 4. In addition, in the memory system 1, the amount of buffer (the amount of write buffer) used for the write buffer (first memory portion) for holding data input to the NAND memory 5 in advance is increased. Generally speaking, this write buffer is allocated to a part of the RAM 6 in the memory system 1. As a countermeasure to these problems, in this embodiment, the memory system 1 uses 1-4-5-5 data coding for the non-volatile memory 3 with a three-dimensional structure, and further uses two To implement page by page writing. As a result, in this embodiment, even in the non-volatile memory 3 with a three-dimensional structure, it is possible to suppress the mutual interference between cells and the bias of the bit error rate between the pages, and at the same time Reduce the write buffer capacity of the memory controller 2. In the write buffer of this embodiment, the first to fourth bits (the data of the lower page, the middle page, the upper page and the top page) will be repeatedly entered during the first programming and the second programming The bit data of is set to be able to be discarded or invalidated after the start of the second programming, and the data of other bits are set to be able to be discarded or invalidated after the first programming is started. Here, the interference between adjacent memory cells will be explained. The electric charge accumulated in the charge accumulation layer 47 of a certain memory cell will disturb the electric field of the adjacent memory cell. As a result, it will be given to the adjacent memory cell. The threshold voltage at the time of output produces noise that fluctuates. It is caused by the fact that "program and verify are implemented under certain electric field conditions, and after the programming is completed, adjacent memory cells are programmed into different charges", read Out of the accuracy system will become somewhat degraded. This interference between adjacent memory cells has become more pronounced with the miniaturization of the manufacturing technology of memory devices and the shrinking of the interval between memory cells. Moreover, if the interference between adjacent memory cells is enlarged, it will occur between adjacent memory cells connected by different bit lines on the same character line WLi. Interference between adjacent memory cells can be achieved by adjusting the electric field conditions of the memory cells between "programming and verification" and "reading after the adjacent memory cell is programmed" The difference has been reduced, and has been eased. As one of the methods to reduce the interference between adjacent memory cells connected by different bit lines on the same character line WLi, there is a method of dividing the programming into plural numbers. The phases are also programmed in a way that does not produce large changes in the amount of charge in the charge accumulation layer 47 between phases. In the programming sequence of this embodiment, the 4 bits on one character line WLi are programmed by two programming stages, that is, the 1st stage and the 2nd stage. Each programming stage is the execution unit of programming. The memory system 1 of this embodiment is to write 4-bit data to the memory cell by executing two programming stages. In addition, in this embodiment, in each of the two programming stages, data of some pages with 4 bits are used. Specifically, in the programming of the 1st stage, the data of the Lower page, Middle page, and Top page are used, and in the programming of the 2nd stage, the data of the Middle page, Upper page, and Top page are used. Fig. 7 is a diagram showing the programmed threshold area in the first embodiment. In FIG. 7, there are shown the threshold region after the 1st stage and the 2nd stage are programmed for the memory cell. Fig. 7 (T1) shows the threshold area of the deleted state which is the initial state before programming. Fig. 7 (T2) shows the threshold area after the programming of the 1st stage (the first programming). Fig. 7 (T3) shows the threshold area after the 2nd stage programming (second programming). As shown in (T1) of FIG. 7, all memory cells of the NAND memory cell array 23 are in the state of distribution S0 in the unwritten state (the "deleted" state). The control unit 22 of the non-volatile memory 3 is as shown in (T2) of FIG. 7. In the programming of the 1st stage, it corresponds to writing (memory) to the Lower page, Middle page and Top page The bit value for each memory cell is maintained at the state of the distribution S0, or the charge is injected to move it to a distribution higher than the distribution S0. Specifically, the control unit 22 uses "when the bit values written in the lower page, the middle page, and the top page are all "1", no charge is injected, and when written to the lower page As long as any one of the bit values on the Middle page and the Top page is "0", it is programmed by injecting charge and moving the threshold voltage to a higher position. That is, when the bit value written to the Lower page, Middle page, and Top page is "011", it is moved to distribution S1, and when written to the Lower page and Middle page And when the bit value at the top page is "101", it is moved to distribution S4, and when the bit value written to the lower page, the middle page, and the top page is "001" In the case of ", it is moved to distribution S5, and when the bit value written to the Lower page, Middle page, and Top page is "100", it is moved to distribution S8, Also, when the bit value written to the Lower page, Middle page, and Top page is “110”, it is moved to distribution S9, and when written to the Lower page, Middle page, and Top page. When the bit value on the page is "000", it is moved to distribution S12, and when the bit value written to the Lower page, Middle page and Top page is "010" In this case, it is moved to distribution S14. Here, it is ideal that distribution S1, distribution S4, distribution S5, distribution S8, distribution S9, distribution S12, and distribution S14 are used to reduce the threshold voltage in a way that reduces the width of the threshold area. Expand and roughly program. That is, the rising amplitude of the programmed voltage pulse described later is increased. By this, the time required for writing can be shortened. In addition, by programming in a way that the threshold voltage will be somewhat reduced, the threshold can be distributed in a way that will eventually become a specific width in the 2nd stage of programming The width of the area is for writing. Furthermore, ideally, the adjacent distribution S8 and the distribution S9, and the adjacent threshold distribution S12 and the distribution S14, the interval between each of these is set to be smaller than the adjacent distribution The interval between them is narrower. These adjacent threshold distributions with narrowed intervals have different write bit values from each other because the data on the Middle page are different. That is, the data after the programming of the 1st stage looks like a binary value (binary). Therefore, it is possible to read the data of the Lower page, the Middle page, and the Top page. However, by combining The data on the Middle page has different threshold distributions. The interval between the different threshold distributions is narrowed to ensure that the interval between the data on the Lower page and the top page is different from the threshold distribution, and to enable the reading of the Lower page and the Top page. The time margin (margin) increases. The threshold value distributions S0 to S14 shown in (T2) of Fig. 7 correspond to the 17th to 24th threshold value regions. Then, as shown in (T3) of FIG. 7, in the programming of the 2nd stage, two pages of the Middle page and the Upper page are required for data writing. In addition, the control unit 22 of the non-volatile memory 3 adopts a method in which the threshold value distribution after programming at the 2nd stage will be a final state where the adjacent distributions are separated and become a 16-value level. For stylization. After programming in the 2nd stage, it is able to read out all page data. In the programming of the 2nd stage, if the threshold value of the memory cell changes from the end of the programming of the 1st stage, the larger the interference system between adjacent cells becomes. Therefore, it is ideal to minimize the change in the threshold distribution of the memory cell with the maximum change in the threshold distribution. According to this embodiment, the maximum threshold distribution change is the amount of three threshold distributions, and the case where S0 changes to S3, the case where S4 changes to S7, and the case where S8 changes are The case of S11. The threshold value distributions S0 to S15 shown in (T3) of Fig. 7 correspond to the first to sixteenth threshold value regions. In addition, typically, programming is performed by applying a programming voltage pulse one or more times. In a plurality of programmed pulses, the voltage value is gradually increased. After each programmed voltage pulse, in order to confirm whether the memory cell has moved beyond the threshold level, a readout called verify is performed. By performing this application and reading repeatedly, it becomes possible to move the threshold value of the memory cell to a specific threshold value distribution range. In addition, although the control unit 22 can continuously perform the programming of the 1st stage and the programming of the 2nd stage for one character line WLi, in order to reduce the influence of the interference between adjacent memory cells, it is also acceptable. Across the plural character lines WLi ground to implement stylization in a non-continuous order. Fig. 8A is a diagram showing the first example of the stylized sequence of the first embodiment. Fig. 8B is a diagram showing a second example of the stylized sequence of the first embodiment. Fig. 8C is a diagram showing a third example of the stylized sequence of the first embodiment. In FIGS. 8A to 8C, in order to reduce the influence of interference between adjacent memory cells, the programming is performed in two programming stages. FIG. 8A shows an example of the programming sequence in the NAND memory 5 in which one string St is connected to each character line in each block. In addition, FIGS. 8B and 8C show an example of the programming sequence in the NAND memory 5 in which four character strings St are connected to each character line in each block. In addition, in FIG. 8B and FIG. 8C, the four character strings St connected to each character line are marked as String0~3. If it is to start writing, the control unit 22 performs various programming stages across the character line WLi in a specific non-continuous sequence. That is, the 1st stage and the 2nd stage for the same character line are not implemented continuously, but after the 1st stage is programmed for a character line, the different characters The 2nd stage of programming is performed on the element line. If after finishing programming for a certain character line up to the 2nd stage, the 1st and 2nd stages of programming are continuously performed for adjacent character lines, the variation of the threshold voltage is Will become bigger. However, if the variation of the threshold voltage of adjacent word lines is large, the intercellular interference of adjacent memory cells between the word lines will become larger. Therefore, in order to reduce the interference between adjacent memory cells between the word lines, after the word line is programmed until the 2nd stage, the variation of the threshold voltage of the adjacent word lines is reduced. Is effective. If it is the sequence of FIG. 8A, the programming phase of the adjacent character line after programming is completed until the 2nd phase for a certain character line, and it becomes only the 2nd phase. In the case of programming the NAND memory 5 with a three-dimensional structure in the programming sequence of FIG. 8A, if writing is started, the control unit 22 is based on the instruction from the processor 8, and by Perform programming in the order shown in (1) ~ (9) below. The control unit 22 programs the NAND memory 5 based on instructions from the processor 8. However, in the following, description of the content based on instructions from the processor 8 is omitted. (1) First, the control unit 22 implements the stylization ST11 of the 1st stage of the word line WL0. (2) Next, the control unit 22 implements the stylized ST12 of the 1st stage of the character line WL1. (3) Next, the control unit 22 implements the stylization ST13 of the 2nd stage of the character line WL0. (4) Next, the control unit 22 implements the stylized ST14 of the 1st stage of the character line WL2. (5) Next, the control unit 22 implements the stylization ST15 of the 2nd stage of the character line WL1. (6) Next, the control unit 22 implements the stylized ST16 of the 1st stage of the character line WL3. (7) Next, the control unit 22 implements the stylization ST17 of the 2nd stage of the character line WL2. (8) Next, the control unit 22 implements the stylized ST18 of the 1st stage of the character line WL4. (9) Next, the control unit 22 implements the stylization ST19 of the 2nd stage of the character line WL3. Hereinafter, in the same manner, the control unit 22 performs the processing from the lower left to the upper right in FIG. 8A and diagonally upward. In this way, in FIG. 8A, the plurality of memory cells in the non-volatile memory 3 are provided with the first memory cell having the plural numbers connected to the first character line, and the first memory cell is connected to the first character line. A plurality of second memory cells connected by a second character line adjacent to the character line, the memory controller 2, after performing the first programming on the plural first memory cells, Perform the first programming for the plurality of second memory cells, and then, after the first programming for the plurality of second memory cells, perform the first programming for the plurality of first memory cells Proceed to the second stylization. In the case of programming the NAND memory 5 with a three-dimensional structure in the programming sequence of FIG. 8B, if the writing is started, the control unit 22 is shown in (11) to (24) below To implement stylization. (11) First, the control unit 22 implements the stylized ST21 of the 1st stage of the character string St0_character line WL0. (12) Next, the control unit 22 implements the stylized ST22 of the 1st stage of the character string St1_character line WL0. (13) Next, the control unit 22 implements the stylized ST23 of the 1st stage of the word string St2_character line WL0. (14) Next, the control unit 22 implements the stylized ST24 of the 1st stage of the character string St3_character line WL0. (15) Next, the control unit 22 implements the stylized ST25 of the 1st stage of the word string St0_character line WL1. (16) Next, the control unit 22 implements the 2nd stage stylization ST26 of the word string St0_character line WL0. (17) Next, the control unit 22 implements the stylized ST27 of the 1st stage of the word string St1_character line WL1. (18) Next, the control unit 22 implements the 2nd stage stylization ST28 of the word string St1_character line WL0. (19) Next, the control unit 22 implements the stylized ST29 of the 1st stage of the word string St2_character line WL1. (20) Next, the control unit 22 implements the 2nd stage stylization ST210 of the word string St2_character line WL0. (21) Next, the control unit 22 implements the stylized ST211 of the 1st stage of the character string St3_character line WL1. (22) Next, the control unit 22 implements the 2nd stage stylization ST212 of the word string St3_character line WL0. (23) Next, the control unit 22 implements the stylized ST213 of the 1st stage of the word string St0_character line WL2. (24) Next, the control unit 22 implements the 2nd stage stylized ST214 of the word string St0_character line WL1. Hereinafter, in the same manner, the control unit 22 proceeds from the lower left to the upper right in FIG. 8B and obliquely upwards to perform the processing. In addition, in FIG. 8B, although the description is made for the case where there are four character strings St in the block, the number of character strings St in the block may be three or less, or five. the above. In the case of programming the NAND memory 5 with a three-dimensional structure in the programming sequence shown in FIG. 8C, if writing is started, the control unit 22 is shown by the following (31) to (50) To implement stylization. (31) First, the control unit 22 implements the stylized ST31 of the 1st stage of the word string St0_character line WL0. (32) Next, the control unit 22 implements the stylized ST32 of the 1st stage of the word string St1_character line WL0. (33) Next, the control unit 22 implements the stylized ST33 of the 1st stage of the character string St2_character line WL0. (34) Next, the control unit 22 implements the stylized ST34 of the 1st stage of the character string St3_character line WL0. (35) First, the control unit 22 implements the stylized ST35 of the 1st stage of the word string St0_character line WL1. (36) Next, the control unit 22 implements the stylized ST36 of the 1st stage of the character string St1_character line WL1. (37) Next, the control unit 22 implements the stylization ST37 of the 1st stage of the character string St2_character line WL1. (38) Next, the control unit 22 implements the stylized ST38 of the 1st stage of the character string St3_character line WL1. (39) Next, the control unit 22 implements the 2nd stage stylization ST39 of the word string St0_character line WL0. (40) Next, the control unit 22 implements the 2nd stage stylized ST310 of the word string St1_character line WL0. (41) Next, the control unit 22 implements the 2nd stage stylization ST311 of the word string St2_character line WL0. (42) Next, the control unit 22 implements the 2nd stage stylization ST312 of the word string St3_character line WL0. (43) Next, the control unit 22 implements the stylization ST313 of the 1st stage of the word string St0_character line WL2. (44) Next, the control unit 22 implements the stylized ST314 of the 1st stage of the character string St1_character line WL2. (45) Next, the control unit 22 implements the stylized ST315 of the 1st stage of the character string St2_character line WL2. (46) Next, the control unit 22 implements the stylized ST316 of the 1st stage of the character string St3_character line WL2. (47) Next, the control unit 22 implements the 2nd stage stylized ST317 of the word string St0_character line WL1. (48) Next, the control unit 22 implements the 2nd stage stylized ST318 of the word string St1_character line WL1. (49) Next, the control unit 22 implements the 2nd stage stylization ST319 of the word string St2_character line WL1. (50) Next, the control unit 22 implements the 2nd stage stylization ST320 of the word string St3_character line WL1. In addition, in FIG. 8C, although the description is made for the case where there are four character strings St in the block, the number of character strings St in the block may be three or less, or five. the above. In this way, even if the string St becomes a plural number, the programming sequence of each programming stage of the character line WLi in one string St is the same as when the string St is one. When there is a non-volatile memory 3 with a three-dimensional structure of plural strings St in the block, the programming of the combination position of the character line WLi and the string St is generally based on the relative The same character line number in the different string St is programmed, and then it advances to the next character line number. In the case of following this sequence, if FIG. 8A is combined with the quantity of the word string St, for example, the sequence will be the same as that of FIG. 8B or FIG. 8C. Here, an example of the writing procedure following the programming sequence of the first embodiment will be described with reference to FIGS. 9 to 11. In Figs. 9-11, the writing procedure is shown when following the programming sequence shown in Fig. 8B or Fig. 8C. As mentioned above, the memory controller 2 advances the programming stage while traversing the character line WLi in a non-continuous sequence. Therefore, the entire batch of certain character lines WLi (here, It is a block) as a whole of the programming sequence to be programmed. Fig. 9 is a flow chart showing the first example of the write procedure for the total amount of 1 block caused by the first embodiment. One block here is assumed to have n+1 word lines WLi of word lines WL0 to WLn (n is a natural number). Fig. 10 is a flow chart showing the writing procedure in the 1st stage caused by the first embodiment, and Fig. 11 is a flowchart showing the writing procedure in the 2nd stage caused by the first embodiment The flow chart. As shown in FIG. 9, if writing is started, the control unit 22 executes the programming of the 1st stage of the string St0_character line WL0 (step S10). Next, the control unit 22 implements the programming of the 1st stage of the character string St1_character line WL0 (step S20). After that, the control unit 22 executes the same processing as steps S10 and S20 for each character string St. Next, the control unit 22 implements the programming of the 1st stage of the character string St3_character line WL0 (step S30). Furthermore, the control unit 22 implements the programming of the 1st stage of the character string St0_character line WL1 (step S40). Next, the control unit 22 implements the 2nd stage programming of the word string St0_character line WL0 (step S50). Next, the control unit 22 implements the programming of the 1st stage of the character string St1_character line WL1 (step S60). After that, the control unit 22 repeatedly performs the same processing as steps S40, S50, and S60 for each character line WLi of each character string St. Next, the control unit 22 implements the programming of the 1st stage of the word string St0_character line WLn (step S70). Next, the control unit 22 implements the 2nd stage programming of the word string St0_character line WLn-1 (step S80). After that, the control unit 22 repeatedly performs the same processing as steps S70 and S80 for each character line WLi of each character string St. Next, the control unit 22 implements the 2nd stage programming of the word string St3_character line WLn-1 (step S90). Next, the control unit 22 implements the 2nd stage programming of the word string St0_character line WLn (step S100). Next, the control unit 22 implements the 2nd stage programming of the word string St1_character line WLn (step S110). After that, the control unit 22 executes the same processing as steps S100 and S110 for each character string St. Next, the control unit 22 implements the 2nd stage programming of the word string St3_character line WLn (step S120). Fig. 10 is a flow chart showing the first example of the write procedure in the 1st stage. In the programming of the 1st stage, first, an input start command is input from the memory controller 2 to the non-volatile memory 3 with Lower page data (step S210). After that, the lower page data is input to the non-volatile memory 3 from the memory controller 2 (step S215). Next, the input start instruction of Middle page data is inputted from the memory controller 2 to the non-volatile memory 3 (step S220). After that, the middle page data is input to the non-volatile memory 3 from the memory controller 2 (step S225). Next, it is an input start instruction of the data of the Top page inputted from the memory controller 2 to the non-volatile memory 3 (step S230). After that, the top page data is input to the non-volatile memory 3 from the memory controller 2 (step S235). Furthermore, the 1st-stage programmed execution command is input to the non-volatile memory 3 from the memory controller 2 (step S240), and thereby becomes chip_busy (step S245). When data is written, the threshold voltage Vth is determined (step S250), and a programmed voltage pulse is applied from 1 to multiple times (step S255). After that, in order to confirm whether the memory cell has moved beyond the threshold level, data reading (verification) is performed (step S260). Furthermore, it is determined whether the number of fail-bits of the data in the Lower page, Middle page, and Top page is smaller than the criterion (step S265). When the number of failed bits of the data is greater than the criterion, the processing (steps S255 to S265) from the application of the programmed pulse to the criterion determination is repeated. On the other hand, if the number of failed bits of the data becomes smaller than the judgment criterion, it becomes chip_ready (step S270). In this way, by repeatedly applying, reading and confirming, it becomes possible to move the threshold value of the memory cell to the specific threshold value distribution range. In addition, as mentioned above, the read level after the programming voltage pulse is applied in the 1st stage of writing can also be slightly different from the read level after the 2nd stage of writing. Ideally, it is better. The reading level after the 2nd stage writing is lower. That is, the system itself is Vr1'≦Vr1, Vr4'≦Vr4, Vr5'≦Vr5, Vr8'≦Vr8, Vr9'≦Vr9, Vr12'≦Vr12, Vr14'≦Vr14. In addition, in the reading after the programming voltage pulse is applied in the 1st stage writing, the reading caused by Vr9' and the reading caused by Vr14' can also be omitted. Vr9' is after passing Vr8. After'reading, after applying a certain number of programmed voltage pulses, it is set as the end of writing. Vr14' is after the reading of Vr13' is passed, after a certain number of programmed voltage pulses are applied After that, it is set as the end of writing. This is because, as mentioned above, by narrowing the interval between the data in the middle page of the programmed data in the 1st stage as different threshold areas, it is possible to perform writing in the 2nd stage. The data of the lower page and the top page that are read out are different in the interval of the threshold area, even if it is simply controlled by "applying a certain number of programmed voltage pulses", it can be sufficiently wide. Furthermore, it is also possible to omit the reading after the application of the programmed voltage pulses of Vr8' and Vr9', Vr12' and Vr14', and after passing the reading of Vr5', after applying a certain number of times respectively. After programming the voltage pulse, set the end of writing. In addition, furthermore, it is also possible to omit the reading after applying the programmed voltage pulses of Vr4', Vr5', Vr8', Vr9', Vr12', and Vr14', and after passing the reading of Vr1' , After applying the programmed voltage pulses of a certain number of times respectively, it is set as the end of writing. Fig. 11 is a flow chart showing the first example of the 2nd stage writing procedure. In the programming of the 2nd stage, first, the input start instruction of the data of the Middle page inputted from the memory controller 2 to the non-volatile memory 3 (step S310). After that, the data of the Middle page is input to the non-volatile memory 3 from the memory controller 2 (step S320). Next, it is an input start instruction of the data of the upper page inputted from the memory controller 2 to the non-volatile memory 3 (step S330). After that, the data of the Upper page is input to the non-volatile memory 3 from the memory controller 2 (step S340). Next, a 2nd-stage programmed execution command is input from the memory controller 2 to the non-volatile memory 3 (step S350), and thereby becomes chip_busy (step S360). After that, the control unit 22 reads the Lower page and Top page data, which are IDL (Internal Data Load) (step S370). After that, based on the previously input Middle page data and the Lower page and Top page data caused by IDL, the Vth (threshold voltage) of the programming target of the Upper page is determined (step S380). After that, using the determined Vth, the data writing system for the Upper page is performed. More specifically, the voltage values of the plural programming pulses are gradually increased and written so as to become the determined threshold voltage (step S390). The memory cell that has reached the target threshold voltage is removed from the writing target. After that, the written data is read (step S400), and it is determined whether the number of failed bits is smaller than the criterion (step S410). When the number of failed bits of the data is greater than the judgment criterion, the processing from the application of the programmed pulse to the criterion judgment (steps S390 to S410) is repeated. On the other hand, if the number of failed bits of the data becomes smaller than the judgment criterion, it becomes chip_ready (step S420). Here, in this embodiment, there are two characteristics. The first feature is that the data of the Middle page has been entered in the 1st stage of programming, and the threshold area after the 1st programming is the writing state that also contains the data of the Middle page. However, In the programming of the 2nd stage, the data of the middle page is still entered again. The second feature is that in the programming of the 1st stage, the interval between the adjacent threshold areas for switching the data of the Middle page is narrowed. On the contrary, the data of the Lower page and the data of the Top page are switched. The adjacent threshold values are distributed with each other, and the interval system becomes wider. With this, the reliability of the Lower page and Top page data read by IDL can be improved. On the other hand, if the data of the Middle page is read by IDL, the reliability may be reduced. However, in this embodiment, it will be used in the 1st stage programming. The data of the middle page that has been added is entered again, so there will be no problem of reduced reliability. Furthermore, the control unit 22 can also read multiple times in order to improve the reliability of the read data of the IDL, and use the majority of the read results in the page buffer within the chip as the interface Write down the data for use. Of course, the control unit 22 can also perform multiple readings during normal reading operations and use the majority of the reading results in the chip for use as external reading data. FIG. 12 is a diagram for explaining the majority decision processing of the read result of the plural number of times. In Figure 12, as the result of reading the data of a specific page, the correct bit is marked with a circle mark (○), and the wrong bit is marked with a cross mark (×) Make the mark. In addition, in FIG. 12, the result of the majority decision when the reading is performed three times is shown. At each position, the result of the majority decision is judged to be wrong, which is (a) the case where all 3 times are wrong, and (b) the case where 2 times are wrong. If the probability of each bit being wrong is set to p, then p=0. In the case of 2, (a) the probability of 3 errors is p×p×p=0. 2×0. 2×0. 2. (b) The probability of 2 errors is (1-p)×p×p=(1-0. 2)×0. 2×0. 2. Therefore, the probability that the result of the 3rd majority decision is judged to be wrong is (p×p×p) + 3×(1-p)×p×p=0. 104. In this way, the control unit 22 can improve the reliability of the read data by performing the majority processing of the read results of a plurality of times at the page buffer 24 in the chip. Furthermore, the control unit 22 may also perform writing in response to writing in the 1st stage of WLn+1 in order to improve the reliability of the IDL read data in the 2nd stage writing of the word line WLn. The data or the threshold voltage is used to change the reading voltage of the word line WLn at the IDL and perform reading. Furthermore, the control unit 22 can also improve the reliability of the IDL read data in the 2nd stage writing of the word line WLn, and respond to the writing in the 1st stage of the word line WLn+1. The written data or the threshold voltage is used to change the non-select voltage of the word line WLn+1 at the IDL and read. At this time, it is also possible to simultaneously change the read voltage of the word line WLn and perform read. When writing data to the Upper page, a programmed voltage pulse is applied from 1 to multiple times. After that, in order to confirm whether the memory cell has moved beyond the threshold level, the data read (verification) with the upper page is performed. The reading level at this time is a specific level. Furthermore, it is determined whether the number of failed bits of the data in the Upper page is smaller than the determination criterion. When the number of failed bits of the data in the Upper page is above the judgment criterion, the processing from the application of the programmed voltage pulse to the verification is repeated. However, if the number of failed bits of the data becomes smaller than the judgment criterion, it becomes chip_ready. Here, a modification of the writing program shown in FIG. 11 will be described. FIG. 13 is a flowchart showing a modification example of the writing procedure in the 2nd stage of the first embodiment. In addition, in the flowchart in Fig. 13, there is added "The IDL data read out of the data programmed in the 1st stage is corrected, and the error is sent back to the non-volatile memory 3." The procedure. Specifically, first, a read command of the lower page is input to the non-volatile memory 3 from the memory controller 2 (step S510). With this, the system becomes chip_ready (step S512). Next, the control unit 22 reads the lower page data using the threshold voltage of Vr8'. After that, the control unit 22 determines the value of the read data to be "0" or "1" based on the reading result at the threshold voltage of Vr8' (step S514). After that, the system becomes chip_ready (step S516). If the lower page data read by the control unit 22 is output (step S518), the lower page data is sent to the ECC circuit 10 (step S520). With this, the ECC circuit 10 performs ECC correction on the lower page data (step S522). Next, it is an input start instruction of the data of the lower page inputted from the memory controller 2 to the non-volatile memory 3 (step S524). With this, the ECC circuit 10 inputs the data of the lower page to the non-volatile memory 3 (step S526). Next, a read command of the Top page is inputted from the memory controller 2 to the non-volatile memory 3 (step S528), and thereby becomes chip_busy (step S530). After that, the control unit 22 reads the Top page data using the threshold voltages of Vr2' and Vr10'. After that, the control unit 22 determines the value of the read data to be "0" or "1" based on the reading results at the threshold voltages of Vr1', Vr4', Vr8', and Vr12' (Step S532). After that, the system becomes chip_ready (step S534). If the top page data read by the control unit 22 is output (step S536), the top page data is sent to the ECC circuit 10 (step S538). With this, the ECC circuit 10 performs ECC correction on the Top page data (step S540). Next, it is an input start command for the data of the Top page inputted from the memory controller 2 to the non-volatile memory 3 (step S542). With this, the ECC circuit 10 inputs the top page data to the non-volatile memory 3 (step S544). After that, it is the input start command that the middle page data is input from the memory controller 2 to the non-volatile memory 3. (Step S546). The subsequent steps are the same as the procedure in Figure 11. The threshold voltage Vth of the programmed target is based on the Lower page data and Top page data from the ECC circuit 10, the data of the Middle page that has been input again, and the data of the newly input Upper page. Determine the threshold voltage Vth of the programmed target. In the above-mentioned 2nd stage programming, the data input of non-volatile memory 3 is only two pages of Middle page and Upper page. However, in this 2nd stage, at the threshold voltage Vth which is the programmed destination of the memory cell, it is necessary to also include the Lower page and Top page (the threshold voltage Vth before the start of the 2nd stage). ) Of 4 pages of data. Therefore, in the programming at this stage, as a pre-processing, the control unit 22 performs "first read the lower page data and the top page data, and then use the inputted middle page and the middle page with the data. The Upper page is used to synthesize and determine the action of the threshold voltage Vth of the programmed target. In addition, the read level during the 2nd stage verification may be slightly different from the read level after the 2nd stage write. Here, a comparison between the Foggy-Fine stylized processing procedure using 4-3-4-4 data coding and the stylized processing procedure of this embodiment will be explained. FIG. 14A is a diagram for explaining the amount of data written in the buffer in the Foggy-Fine programming using 4-3-4-4 data encoding. Fig. 14B is a diagram for explaining the amount of data written in the buffer in this embodiment. Figure 14B shows an example of using 1-4-5-5 data coding. In Fig. 14A and Fig. 14B, on the upper stage side, the timing chart for data input and programming execution of block writing is shown, and on the lower stage side, it’s for data retention in the write buffer. The timing chart of the required period is displayed. In addition, in FIG. 14A and FIG. 14B, in order to simplify the description, the case where the number of the string St in one block is one is shown. When the string St is a plural number, the amount of data written into the buffer is a multiple of the number of the string St. In the case of Foggy-Fine programming of 4-3-4-4 data coding, in the Foggy stage, which is the first stage, 4 pages of data input and these 4 pages are performed The stylization of the quantity (the stylization of the Foggy stage). In addition, in the case of Foggy-Fine programming of 4-3-4-4 data coding, in the Fine stage, which is the second stage, data input for 4 pages is also performed, and this The stylization of the amount of 4 pages (the stylization of the Fine stage). However, at each word line WL0, WL1, WL2,..., until the programming is started at the Fine stage, it is necessary to write the data in the amount of 4 pages written in the Foggy stage , Pre-stored in the write buffer. In Foggy-Fine programming, in the same way, in order to reduce the interference between adjacent memory cells, the data of the 4 pages of Lower/Middle/Upper/Top are not written continuously. For example, after the Foggy phase for the word line WL0 is executed, before the Fine phase for the word line WL0 is executed, the Foggy phase for the word line WL1 adjacent to the word line WL0 is executed. . Furthermore, after the Foggy phase for the word line WL0 is executed, before the Fine phase for the word line WL1 is executed, the Foggy phase for the word line WL2 adjacent to the word line WL1 is executed. . In the case of this method, it is necessary to keep the data of 4 pages of Lower/Middle/Upper/Top in the write buffer in advance until the end of the data input of the second Fine stage. Inside. In addition, in order to reduce the interference between adjacent memory cells, it is necessary to hold the data at the plural character lines WLi in the write buffer in advance. For example, when the Foggy stage is implemented for the word line WL2, it is necessary to keep the data for the 3 pages of the word line WL1 and the data for the 3 pages of the word line WL2 in writing. Into the buffer. In this way, in the case of Foggy-Fine programming of 4-3-4-4 data encoding, it is necessary to keep a maximum of 8 pages of data in the write buffer. As shown in FIG. 14B, in the stylization of this embodiment, for example, a 2-stage stylization is used with 1-4-5-5 data encoding. In the programming of this embodiment, in the 1st stage, data input for the amount of three pages (Lower page, Middle page and Top page) and the programming of the amount of these three pages (1st stylization) are performed. ). In the case of the programming of this embodiment, in the 2nd stage, data input for two pages (Middle page and Upper page) and programming for one page of the Upper page are performed ( 2nd stylized). However, at each character line WL0, WL1, WL2,..., except for the Middle page that is input in both stages, as long as the data is pre-stored in the write buffer during the data input of each stage. However, if programming is started, the data can also be deleted from the write buffer. For example, if data is input at the 1st stage, the data is stored in the write buffer. However, if the programming is started at the 1st stage, the data of the Lower page and the Top page previously stored in the write buffer can also be deleted. Similarly, if data is input at the 2nd stage, the data is stored in the write buffer. However, if programming is started at the 2nd stage, all the data previously stored in the write buffer can also be deleted. Therefore, in the case of programming in this embodiment, it is necessary to hold the data in the write buffer in advance, even if it is a maximum of 4 pages of data. In the programming of this embodiment, in the same way, in order to reduce the interference between adjacent memory cells, the data of the 4 pages of Lower/Middle/Upper/Top are not written continuously. For example, after the 1st stage for the word line WL0 is executed, before the 2nd stage for the word line WL0 is executed, the 1st stage for the word line WL1 adjacent to the word line WL0 is executed. . Similarly, after the 1st stage for the word line WL1 is executed, before the 2nd stage for the word line WL1 is executed, the 1st stage for the word line WL2 adjacent to the word line WL1 is Implement. In this way, in this embodiment, the page data other than the middle page is only necessary for programming in one stage. Therefore, if the data input is completed, it becomes possible to write to the buffer. The data inside is deleted. Therefore, in this embodiment, it is necessary to keep the number of pages in the write buffer at the same time in advance at a small amount. The page data programmed for the non-volatile memory 3 is temporarily held in the write buffer in the RAM 6 and then the data is input into the non-volatile memory 3 during programming. In this embodiment, since the necessary capacity of the RAM 6 can be reduced, the cost can be reduced. In addition, when using Foggy-Fine programming, because it is necessary to transfer all the page data twice, it will take time for the transfer and it will also consume more power when the transfer is required. In this embodiment, the page data other than the middle page is individually completed by one data transmission for each page, so the transmission time and power consumption can be suppressed to about 1/2. Here, the page reading process will be described. The method of page reading differs based on whether the programming of the character line WLi containing the read target page is a 2nd stage before writing or after writing. In the situation before writing in the 2nd stage, only the lower page, middle page and top page are valid for the data to be recorded. Therefore, the control unit 22 reads the data from the memory cell when the read page is the Lower page, Middle page, and Top page, but in other pages (specifically, Upper page) In the case of, the system does not perform the memory cell read operation, and performs the control of forcibly outputting all "1" as the read data. On the other hand, in the case of the character line WLi that has ended up to the 2nd stage, the control unit 22 reads the memory cell regardless of whether the read page is Top/Upper/Middle/Lower page Out. In this case, the required read voltage is different because it depends on which page is the page to be read. Therefore, the control unit 22 performs only necessary reading according to the selected page. Out. The following describes the specific processing procedures for page reading. Figure 15 shows the page read at the character line where the programming up to the 1st stage in the memory system 1 caused by the first embodiment is finished (the programming system of the 2nd stage has not yet ended) The processing procedure is shown as a flow chart. According to the 1-4-5-5 data encoding shown in Fig. 6, the boundary between the threshold states changed by the Lower page data is one, so the control unit 22 is based on the threshold value as The location is determined by which of the two areas separated by the boundary is the data. For example, when the threshold voltage is smaller than Vr8', the control unit 22 performs control to output "1" as the data of the memory cell. On the other hand, when the threshold voltage is larger than Vr8', the control unit 22 performs control to output "0" as the data of the memory cell. In addition, since the boundary between the threshold states where the Middle page data changes is three, the control unit 22 is based on the threshold as the position in the four separated by these boundaries. Which one of the scopes determines the data. In addition, since the boundaries between the threshold states where the Top page data changes are four, the control unit 22 is based on the threshold as the position in the five separated by these boundaries. Which one of the scopes determines the data. As shown in FIG. 15, in the case of the word line WLi before writing in the 2nd stage, the control unit 22 selects the read page (step S610). When the read page is a lower page, the control unit 22 performs reading with one read voltage (step S612). This voltage is Vr8, but, as mentioned above, in the case of the character line before the 2nd stage writing, as shown in Figure 8 (T2), it can also have a read voltage and threshold The margin of the value voltage is, for example, Vr8'. After that, the control unit 22 determines the value of the read data to be "0" or "1" based on the reading result at the threshold voltage of Vr8 (step S614). In addition, when the read page is a middle page, the control unit 22 performs reading using three read voltages (steps S616, S618, and S620). This voltage is Vr4 and Vr9 and Vr14 as mentioned above. However, when it is a character line before the 2nd stage writing, as shown in Figure 8 (T2), the system can also have read The margin between the output voltage and the threshold voltage is set to Vr4', Vr9' and Vr14' instead of these, for example. After that, the control unit 22 compares the results based on the reading result under the threshold voltage of Vr4, the reading result under the threshold voltage of Vr9, and the reading result under the threshold voltage of Vr14. The value of the read data is determined to be "0" or "1" (step S622). Here, as mentioned above, since the interval of the different threshold distributions for the data of the Middle page is narrow, and the reading margin of the Middle page is narrowed, the value of the read data will have significant reliability. The possibility of ground deterioration, and the middle page data before the 2nd stage writing can be defined as invalid. In this case, when the read page is a middle page, the control unit 22 can also perform the control of forcibly outputting all "1"s as the output data of the memory cell. Also, when the read page is an Upper page, since the programming of the Upper page is not performed in the 1st programming, the control unit 22 compulsorily outputs all "1" as output data. (Step S624). In addition, when the read page is the Top page, the control unit 22 performs reading with four read voltages (steps S626, S628, S630, and S632). This voltage is the same as described above, but Vr1 and Vr4, Vr8 and Vr12. However, in the case of the character line before the 2nd stage writing, it is as shown in Figure 8 (T2). There is a margin for the readout voltage and the threshold voltage, and for example, instead of these, set Vr1' and Vr4', Vr8' and Vr12', respectively. After that, the control unit 22 is based on the reading result under the threshold voltage of Vr1 and the reading result under the threshold voltage of Vr4, the reading result under the threshold voltage of Vr8 and the reading result under the threshold voltage of Vr12. As a result of the reading under the threshold voltage, the value of the read data is determined to be "0" or "1" (step S634). FIG. 16A is a flowchart showing the processing procedure of page reading at the character line programmed to end up to the 2nd stage in the memory system 1 of the first embodiment. When the stylized character line WLi is ended until the 2nd stage, the control unit 22 selects the read page (step S650). When the read page is a lower page, the control unit 22 performs the read based on the threshold voltage of one of Vr8 (step S652). After that, the control unit 22 determines the value of the read data to be "0" or "1" based on the reading result at the threshold voltage of one of Vr8 (step S654). In addition, when the read page is a middle page, the control unit 22 reads using the threshold voltages of Vr4, Vr9, Vr11, and Vr14 (steps S656, S658, S660, and S662). After that, the control unit 22 determines the value of the read data to be "0" or "1" based on the reading results under the threshold voltages of Vr4, Vr9, Vr11, and Vr14 (step S664) . In addition, when the read page is the upper page, the control unit 22 performs the read based on the threshold voltages of Vr2, Vr6, Vr10, Vr13, and Vr15 (steps S666, S668, S670, S672, S674 ). After that, the control unit 22 determines the value of the read data to be "0" or "1" based on the reading results at the threshold voltages of Vr2, Vr6, Vr10, Vr13, and Vr15 (step S676). In addition, when the read page is the Top page, the control unit 22 performs the reading based on the threshold voltages of Vr1, Vr3, Vr5, Vr7, and Vr12 (steps S678, S680, S682, S684, S686). ). After that, the control unit 22 determines the value of the read data to be "0" or "1" based on the reading results under the threshold voltages of Vr1, Vr3, Vr5, Vr7, and Vr12 (step S688). In addition, whether the programming of the word line WLi is before or after the completion of the writing in the 2nd stage can be managed and identified by the memory controller 2. In the memory system 1, since the memory controller 2 performs programmed control, as long as the memory controller 2 records the progress in advance, the memory controller 2 can easily control the non-volatile The address of the sexual memory 3 is based on what kind of programmatic state it is. In this case, when the memory controller 2 reads from the non-volatile memory 3, it recognizes the programmed state of the character line WLi containing the address of the target page, and issues and The read command corresponding to the identified state. In addition, as another method, it is also possible to separately set a flag cell at each of the character lines WLi, and write to the flag cell during the 2nd stage of writing, and respond to the data of the flag cell , To use the non-volatile memory 3 to manage and identify whether it is before or after the end of the 2nd stage of writing. Hereinafter, a modification example of the page reading process will be described. The page reading process caused by one of the modified examples can be executed only when the programming of the character line WLi containing the read target page is performed after the 2nd stage of writing has been performed. In the page reading process due to one of the modified examples, when all the data of the character line of the reading target is read, the reading speed becomes faster, and at this point, it is effective. The data encoding suitable for the page reading process caused by one of the modifications is, for example, the one shown in FIG. 16B. Hereinafter, the reading process caused by one of the modified examples in the case of data encoding will be explained. In the page reading process caused by one of the modified examples, all the pages of the Top/Upper/Middle/Lower pages are read. FIG. 16C is a flowchart showing the read processing procedure caused by one of the modified examples. In addition, FIG. 16D is a voltage waveform diagram of the selected word line, the ReadyBusy signal line, and the output data line. The control unit 22 reads sequentially using all 15 read voltages Vr15 to Vr1. First, as shown in FIG. 16D, the reading is performed with Vr15, which is the highest voltage (step S690), and then, the ground is lowered one step at a time to sequentially continue reading with a low reading voltage. Out (steps S691 to S707). When the reading required to determine the reading data of each page is finished, the reading data of the page becomes able to be output. In the page reading process caused by one of the modified examples, when the reading from Vr15 is performed in sequence and the reading of Vr8 ends (step S699), the data of the lower page is determined and becomes This data can be output (step S700). In this step S700, based on the read data caused by the read voltage Vr8, the data of the lower page is determined. Then, when the reading of Vr4 ends (step S702), the data of the middle page is determined (step S703). In this step S703, based on the read data caused by the read voltages Vr4, Vr9, Vr11, and Vr14, the data of the middle page is determined. Then, when the reading of Vr2 ends (step S705), the data of the upper page is determined (step S706). In this step S706, based on the read data caused by the read voltages Vr2, Vr6, Vr10, Vr13, and Vr15, the data of the Upper page is determined. Then, until the reading of Vr1 ends (step S707), the data of the final Top page is determined (step S708). In this step S708, based on the read data caused by the read voltages Vr1, Vr3, Vr5, Vr7, and Vr12, the data of the Top page is determined. In the page reading process caused by one of the modified examples, the latency until the data of any one page can be output is increased, but the total time for reading all 4 pages , The total time can be shortened compared to the case of reading one page at a time as described above. As shown in FIG. 16D, the time required to charge the word line from 0 to Vr15, which is a high voltage, as a read preparation, only needs to be done once. The amplitude of the voltage change when changing to the next voltage is small, and the voltage becomes stable in a short time. Therefore, the standby time until the read voltage becomes stable can be shortened. Therefore, when reading is performed with all the reading voltages Vr15 to Vr1, the total of the transition time of the selected word line is shortened, and as a result, the total reading time can be increased. In addition, although the data encoding in FIG. 16B is used as an example for the above description, basically, it can be applied to any data encoding. However, since the read voltage is sequentially changed from the maximum voltage to the minimum voltage and read is performed, the reading of the voltage required to determine the data is in the order of the page that ends first. Ability to export data. Therefore, it should be noted that depending on the form of data encoding, there may be situations where it is impossible to read in the order of Lower, Middle, Upper, and Top pages. In this way, in the first embodiment, when programming the non-volatile memory 3 (a 4bit/Cell NAND memory with a 3-dimensional structure or a 2-dimensional structure), 1-4-5 is used. -5 Data coding, and set the programming stage to a 2-stage system. Since it is programmed in a two-stage system in this way, the amount of input data in the data programming at each stage is reduced, and it can be used for writing necessary in the memory controller 2. The amount of buffer is suppressed. In addition, since the number of threshold boundaries at each page is uniform, the bias of the bit error rate between pages of the non-volatile memory 3 can be reduced, and the cost of ECC can be reduced. reduce. In addition, since the data transmission is performed only once for each page except for one page, the transmission time and power consumption can be suppressed. In addition, since each programming stage is performed while straddling the character line WLi, it is possible to reduce the amount of adjacent cell interference with the adjacent character line WLi. In addition, since the 1-4-5-5 data encoding is used, the amount of change in the threshold distribution in the 2nd stylization is reduced, so that the amount of interference between adjacent cells can be suppressed. In addition, by inputting data in one page (specifically, the middle page) in both stages, the IDL margin before the 2nd stage can be enlarged, and the reliability of the writing sequence can be improved. In addition, since the 1-4-5-5 data encoding is used, in the programming of the 1st stage, by setting the threshold boundary at the Lower page to one, the threshold at the Middle page is set The limit value is set to two, which can make the programming of the 1st stage, that is, the programming of the Lower page and the Middle page faster. In addition, the programming speed of the 1st stage can be used to step up the writing voltage step by step and to step up the writing voltage step by step during repeated writing and writing verification. Set a larger value than the programming of the 2nd stage to increase the speed. (Second Embodiment) In the first embodiment, although 1-4-5-5 data encoding is used as an example, various data encoding modifications can be used. The hardware configuration of the memory system 1 according to the second embodiment is the same as that of the memory system 1 according to the first embodiment. Figures 17-25 show examples of data encoding in the memory system 1 caused by the second embodiment. The memory system 1 resulting from the second embodiment uses a data code other than the data code of 1-4-5-5. Figure 17 is a diagram showing an example of coding 1-5-4-5 data. In the example of FIG. 17, the number of transitions in the threshold area at the end of the 2nd stylization is 3 at most. Here, the voltage distribution ranges of the threshold area at the end of the programming of the 1st stage and the threshold area at the end of the programming of the 2nd stage are not completely consistent with each other. However, in this manual, for the convenience of explanation, For each threshold area at the end of the programming of the 1st stage, the threshold area at the end of the programming of the 2nd stage with the closest voltage distribution range is added to correspond, and it will change when the 2nd programming is performed. The number of threshold areas is called the number of transitions. In the case of Figure 17, at the 1st stage, the data of the Lower page, Middle page, and Upper page are input for programming, and at the 2nd stage, the data of the Top page and Middle page are input and programmed. The data on the Middle page is repeatedly entered at the 1st stage and the 2nd stage. The interval between the two threshold areas that can be separated by the value of the data on the Middle page at the end of the programming of the 1st stage is set to be narrower than the interval between other threshold areas. Figure 18 is a diagram showing an example of 1-5-4-5 data encoding. In the example of FIG. 18, the number of transitions in the threshold area at the end of the 2nd stylization is 3 at most. In the case of Figure 18, at the 1st stage, the data of the Lower page, the Middle page, and the Upper page are input for programming, and at the 2nd stage, the data of the Top page and the Upper page are input and programmed. The information on the Upper page is repeatedly entered at the 1st and 2nd stages. The interval between the two threshold regions that can be separated by the value of the upper page data at the end of the programming of the 1st stage is set to be narrower than the interval between other threshold regions. Figure 19 is a diagram showing an example of 3-5-2-5 data coding. In the example of FIG. 19, the number of transitions in the threshold area at the end of the 2nd stylization is 3 at most. In the case of Figure 19, at the 1st stage, the data of the Lower page, Middle page, and Upper page are input for programming, and at the 2nd stage, the data of the Top page and Middle page are input and programmed. The data on the Middle page is repeatedly entered at the 1st stage and the 2nd stage. The interval between the two threshold areas that can be separated by the value of the data on the Middle page at the end of the programming of the 1st stage is set to be narrower than the interval between other threshold areas. Figure 20 is a diagram showing an example of 3-3-4-5 data encoding. In the example of FIG. 20, the number of transitions in the threshold area at the end of the 2nd stylization is 3 at most. In the case of Figure 20, at the 1st stage, the data of the Lower page, the Middle page, and the Upper page are input for programming, and at the 2nd stage, the data of the Top page and the Upper page are input and programmed. Figure 21 is a diagram showing an example of 2-3-5-5 data coding. In the example of FIG. 21, the number of transitions in the threshold area at the end of the 2nd stylization is 5 at most. In the case of Figure 21, at the 1st stage, the data of the Lower page, Middle page, and Top page are input for programming, and at the 2nd stage, the data of the Top page and Upper page are input and programmed. The information on the Top page is repeatedly entered at the 1st stage and the 2nd stage. In the case of Figure 21, at the time point when the programming of the 1st stage ends, regardless of whether the data of the Top page is 0 or 1, the three threshold areas become the same, and the total number of threshold areas becomes 5 pcs. Therefore, the interval between each threshold area can be expanded, and the data at the time point when the programming of the 1st stage ends can be accurately read. Figure 22 is a diagram showing an example of 3-2-5-5 data coding. In the example of FIG. 22, the number of transitions in the threshold area at the end of the 2nd stylization is 5 at most. In the case of Fig. 22, at the 1st stage, the data of the Lower page, Middle page, and Top page are input for programming, and at the 2nd stage, the data of the Top page and Upper page are input and programmed. The information on the Top page is repeatedly entered at the 1st stage and the 2nd stage. In the case of Figure 22, at the time point when the programming of the 1st stage ends, regardless of whether the data of the Top page is 0 or 1, the threshold area of both becomes the same, and the total number of threshold areas becomes 6 pcs. Figure 23 is a diagram showing an example of 3-4-4-4 data encoding. In the example of FIG. 23, the number of transitions in the threshold area at the end of the 2nd stylization is 7 at most. In the case of Figure 23, at the 1st stage, the data of the Lower page, Middle page, and Upper page are input for programming, and at the 2nd stage, the data of the Top page and Upper page are input and programmed. The information on the Upper page is repeatedly entered at the 1st and 2nd stages. The interval between the two threshold regions that can be separated by the value of the upper page data at the end of the programming of the 1st stage is set to be narrower than the interval between other threshold regions. Figure 24 is a diagram showing an example of 3-4-4-4 data encoding. In the example of FIG. 24, the number of transitions in the threshold area at the end of the 2nd stylization is 8 at most. In the case of Figure 24, at the 1st stage, the data of the Lower page, Middle page, and Top page are input for programming, and at the 2nd stage, the data of the Top page and Upper page are input and programmed. The information on the Top page is repeatedly entered at the 1st stage and the 2nd stage. In the case of Fig. 24, at the time point when the programming of the 1st stage ends, no matter whether the data of the Top page is 0 or 1, the threshold area of both becomes the same, and the total number of threshold areas becomes 6 pcs. Figures 17-24 are only examples of data encoding, and other data encodings can also be used. For example, at the end of the 2nd stylization, the transition number system of the threshold value area becomes a maximum of three. In addition to Figs. 17 to 20, the following Figs. 25 to 27 also exist. Figure 25 is a diagram showing an example of coding 1-4-5-5. In the example of FIG. 25, at the time point when the 1st stylization ends, 6 different threshold regions are generated. Among them, the threshold area where the Middle page is 1 and the Lower page is 1, and the threshold area where the Middle page is 0 and the Lower page is 1, become the same threshold regardless of whether the Top page is 0 or 1. area. Therefore, although 8 threshold areas should have been generated originally, they are collected into 6 threshold areas. Figure 26 is a diagram showing an example of 2-5-3-5 data encoding. In the example of FIG. 26, at the point in time when the 1st stylization ends, 7 different threshold regions are generated. Among them, the threshold area where the Middle page is 1 and the Lower page is 1, regardless of whether the Top page is 0 or 1, all become the same threshold area. Therefore, although there should be 8 threshold regions originally generated, they are collected into 7 threshold regions. Figure 27 is a diagram showing an example of 3-4-5-3 data coding. In the example of FIG. 27, at the point in time when the 1st stylization ends, 7 different threshold regions are generated. Among them, the threshold area where the Middle page is 1 and the Lower page is 1, regardless of whether the Top page is 0 or 1, all become the same threshold area. Therefore, although there should be 8 threshold regions originally generated, they are collected into 7 threshold regions. In addition, other data coding examples can also be considered. Below, the code allocation for each data code will be shown as a list. Figure 28 shows an example of 3-2-5-5 data encoding, Figure 29 shows an example of 3-2-5-5 data encoding, and Figure 30 shows an example of 1-5-5 -4 One example of data coding will be displayed. In addition, Figure 31 shows one example of 1--5-4-5 data encoding, Figure 32 shows one example of 1-4-5-5 data encoding, and Figure 33 shows one example of data encoding 1-5 -3-6 An example of data coding is displayed. In addition, Figure 34 shows an example of 1-3-6-5 data encoding, Figure 35 shows an example of 1-2-6-6 data encoding, and Figure 36 shows an example of 1-2 -6-6 One example of data coding is displayed. Also, Figure 37 shows an example of 1-2-6-6 data encoding, Figure 38 shows an example of 1-4-6-4 data encoding, and Figure 39 shows an example of data encoding 1-4 -4-6 One example of data coding is shown. Also, Figure 40 shows an example of 1-4-6-4 data encoding, Figure 41 shows an example of 1-4-4-6 data encoding, and Figure 42 shows an example of 2-5 -2-6 One example of data coding is displayed. In addition, Figure 43 shows an example of 2-5-2-6 data encoding, Figure 44 shows an example of 2-5-2-6 data encoding, and Figure 45 shows an example of 3-3. -3-6 An example of data coding is displayed. In addition, Figure 46 shows an example of 3-3-6-3 data encoding, Figure 47 shows an example of 2-3-4-6 data encoding, and Figure 48 shows an example of 3-4 -2-6 One example of data coding is displayed. Also, Figure 49 shows an example of 2-3-4-6 data encoding, Figure 50 shows an example of 3-2-6-4 data encoding, and Figure 51 shows an example of 3-2 -4-6 One example of data coding is shown. In addition, Figure 52 shows an example of 3-2-6-4 data encoding, Figure 53 shows an example of 3-4-2-6 data encoding, and Figure 54 shows an example of 3-2 -4-6 One example of data coding is shown. In addition, Figure 55 shows an example of 5-3-2-5 data encoding, Figure 56 shows an example of 3-5-2-5 data encoding, and Figure 57 shows an example of 3-2 -5-5 One example of data coding is displayed. In addition, Figure 58 shows one example of 2-3-5-5 data encoding, Figure 59 shows one example of 2-3-5-5 data encoding, and Figure 60 shows one example of 2-3-5-5 data encoding. -5-5 One example of data coding is displayed. Also, Figure 61 shows one example of 5-4-2-4 data encoding, Figure 62 shows one example of 4-5-2-4 data encoding, and Figure 63 shows one example of 5-4 -An example of 2-4 data encoding is displayed. Also, Figure 64 shows one example of 2-4-5-4 data encoding, Figure 65 shows one example of 2-4-5-4 data encoding, and Figure 66 shows one example of 2-5. -4-4 One example of data coding is shown. In addition, Figure 67 shows one example of 2-5-4-4 data encoding, Figure 68 shows one example of 2-5-4-4 data encoding, and Figure 69 shows one example of 2-5-4-4 data encoding. -An example of 4-5 data coding for display. In addition, Figure 70 shows an example of 1-4-5-5 data encoding, Figure 71 shows an example of 1-5-5-4 data encoding, and Figure 72 shows an example of 1-4-5-5 data encoding. -5-5 One example of data coding is displayed. In addition, Figure 73 shows an example of the data encoding 1-5-4, Figure 74 shows an example of the data encoding 1-5-4-5, and Figure 75 shows an example of the data encoding 1-5. -5-4 One example of data coding is displayed. In addition, Figure 76 shows one example of 1--5-4-5 data encoding, Figure 77 shows one example of 1-4-5-5 data encoding, and Figure 78 shows one example of data encoding 1-4 -5-5 One example of data coding is displayed. In addition, Figure 79 shows an example of 1-4-5-5 data encoding, Figure 80 shows an example of 1-4-5-5 data encoding, and Figure 81 shows an example of 3-5 -4-3 One example of data coding is shown. In addition, Figure 82 shows an example of 3-4-5-3 data encoding, Figure 83 shows an example of 3--5-3-4 data encoding, and Figure 84 shows an example of 3-4 -One example of 3-5 data coding for display. In addition, Figure 85 shows an example of 3-4-5-3 data encoding, Figure 86 shows an example of 3--4-3-5 data encoding, and Figure 87 shows an example of 3-3. -5-4 One example of data coding is displayed. In addition, Figure 88 shows an example of 3-3-5-4 data encoding, Figure 89 shows an example of 4-5-3-3 data encoding, and Figure 90 shows an example of 3-5-4 data encoding. -4-3 One example of data coding is shown. In addition, Figure 91 shows an example of 3-4-5-3 data encoding, Figure 92 shows an example of 3-3-4-5 data encoding, and Figure 93 shows an example of 3-3. -An example of 4-5 data coding for display. In addition, Figure 94 shows an example of 3-3-4-5 data encoding, Figure 95 shows an example of 3-4-5-3 data encoding, and Figure 96 shows an example of 3-3. -5-4 One example of data coding is displayed. In addition, Figure 97 shows an example of 3-3-4-5 data encoding, Figure 98 shows an example of 4-3-4-4 data encoding, and Figure 99 shows an example of 3-4 -4-4 One example of data coding is shown. In addition, Figure 100 shows one example of 3-4-4-4 data encoding, Figure 101 shows one example of 4-3-4-4 data encoding, and Figure 102 shows one example of 3-4-4 data encoding. -4-4 One example of data coding is shown. In addition, Fig. 103 shows an example of 3-4-4-4 data encoding, Fig. 104 shows an example of 3-4-4-4 data encoding, and Fig. 105 shows an example of 3-4-4-4 data encoding. -4-4 One example of data coding is shown. In addition, Fig. 106 shows an example of 4-4-3-4 data encoding, and Fig. 107 shows an example of 4-4-3-4 data encoding. In this way, by repeatedly inputting the data of a part of the pages at the 1st and 2nd stages, and inputting the data of the other pages only at one of the 1st and 2nd stages, it is programmed. The system can reduce the mutual interference between cells, and can also reduce the capacity of the write buffer, and can also suppress the bias of the bit error rate when writing each bit data. Especially, in the case of 1-4-5-5, 1-5-4-5, 3-3-4-5 or 3-5-2-5 data encoding, due to the boundary number system of each page data It is uniform, and the transition number of the threshold region at the 2nd stage of programming is 3 or less. Therefore, the deviation of the bit error rate can be suppressed, and the mutual interference between cells can be reduced. (Third Embodiment) The memory system 1 resulting from the third embodiment is a further reduction in the capacity of the write buffer compared to the first and second embodiments. The hardware configuration of the memory system 1 according to the third embodiment is common to the memory system 1 according to the first and second embodiments. In the third embodiment, the data of the page entered in the programming of the 1st stage, which is repeated in the programming of the 2nd stage, is kept in the non-volatile memory after the programming of the 1st stage is started. In the page buffer 24 inside the body 3. By this, in the 2nd stage of programming, the process of data input for this page can be omitted, and the data input for all pages can be set to only one time. With this, the capacity of the write buffer can be reduced. Furthermore, in this embodiment, the 2nd stage programming of the word line WLn-1 and the 1st stage programming of the word line WLn are integrated and performed. In this way, the page buffer 24 is the bit that will be input repeatedly during the programming of the 1st stage and the 2nd stage in the first to fourth bits (Lower page, Middle page, Upper page, Top page). The meta data is memorized before the beginning of the 1st stage of programming, and after the beginning of the 2nd stage of programming, it can be discarded or invalidated. Hereinafter, in this embodiment, the same applies, and an example of using the same 1-4-5-5 data encoding as that described in FIG. 6 of the first embodiment will be described. In the stylized flow chart shown in Fig. 9, the programming of the 1st stage and the programming of the 2nd stage shift the execution timing to each other. When each is programmed, it is necessary to perform the programming instructions of each. And the input of stylized data. In contrast, in this embodiment, the programming of the 1st stage and the programming of the 2nd stage are integrated as much as possible with the input of programmatic data. For example, as shown in FIG. 8B, except for the beginning and the end of the block, the programming of the 1st stage of the word line WLn and the 2nd stage of the word line WLn-1 is absolutely continuous. Therefore, in this embodiment, this part is set as an integrated command input. That is, with one command input, the programming data of the Lower page, Middle page, Top page and Upper page of the character line WLn-1 of the character line WLn are input in batches. This system is the same as when Foggy-Fine is used, the data of the Lower/Middle/Upper/Top page is batched by one programming command (However, in this case, it is the same character The page within the line WLi) has made the input of the same amount of data as the input of 4 pages. In this way, by integrating the input of programmatic commands and programmatic data, the command input and polling in the control performed by the memory controller 2 (regularity of whether the chip busy is returned to the ready) The frequency of inspection) is reduced, and the speed of the memory system 1 and the simplification of control become possible. Here, one example of the writing procedure following the programming sequence of the third embodiment will be described using FIG. 108 and FIG. 109. In FIG. 108 and FIG. 109, the writing procedure when following the programming sequence shown in FIG. 8B is shown. Fig. 108 is a flowchart showing the writing procedure for the entire amount of 1 block by the third embodiment. One block here is assumed to have n+1 word lines WLi of word lines WL0 to WLn (n is a natural number). As shown in FIG. 108, if writing is started (step S710), the 1st-stage programming process of the character line WL0 of the string St0 to St3 is performed (step S712). With this, the control unit 22 implements the 1st stage programming of the character line WL0 of the character string St0 to St3 (step S714). In addition, the control unit 22 implements the 1st stage programming of the string St0_character line WL1 and the 2nd stage programming of the string St0_character line WL0 (step S716). Next, the control unit 22 implements the 1st stage programming of the string St1_character line WL1 and the 2nd stage programming of the string St1_character line WL0 (step S718). Next, the control unit 22 implements the 1st stage programming of the string St2_character line WL1 and the 2nd stage programming of the string St2_character line WL0 (step S720). After that, the control unit 22 repeatedly performs the same processing for each character line WLi of each character string. Then, the 1st stage programming of the string St0_character line WLn and the 2nd stage programming of the string St0_character line WLn-1 are implemented (step S722). Next, the control unit 22 implements the 1st stage programming of the string St1_character line WLn and the 2nd stage programming of the string St1_character line WLn-1 (step S724). After that, the control unit 22 repeatedly performs the same processing for each character line WLi of each character string. Next, the control unit 22 implements the 1st stage programming of the string St3_character line WLn and the 2nd stage programming of the string St3_character line WLn-1 (step S726). Next, the control unit 22 implements the 2nd stage programming of the character line WLn of the character string St0 to St3 (steps S728, S730, and S732). In this way, at the beginning of the block, it is implemented in the same way as the first embodiment, with only the 1st stage of programming, and at the end of the block, it is implemented in the same way as in the first embodiment. Stylization of the 2nd stage. In this case, only the 1st stage of programming is implemented according to the procedure shown in FIG. 8B, and only the 2nd stage of programming is implemented according to the procedure shown in FIG. 8C. Moreover, in the flowchart of FIG. 108, except for the beginning and the end of the block, the programming of the 1st stage of the character line WLn and the programming of the 2nd stage of the character line WLn-1 are integrated and performed. . With this, the frequency of command input and polling performed by the memory controller 2 is reduced, and the processing of the memory system 1 can be speeded up. Fig. 109 is a flowchart showing the writing procedure in the 1st stage and the 2nd stage of the third embodiment. As shown in FIG. 109, in the programming of the 1st stage and the 2nd stage, after the programming of the 1st stage is carried out, the programming of the 2nd stage is carried out. Specifically, first, it is an input start command of the upper page data inputted with the character line WLn-1 to the non-volatile memory 3 from the memory controller 2 (step S750). After that, the data of the Upper page of the word line WLn-1 is input to the non-volatile memory 3 from the memory controller 2 (step S752). Next, it is an input start command of the data of the Lower page with the word line WLn inputted from the memory controller 2 to the non-volatile memory 3 (step S754). After that, the data of the Lower page with the word line WLn is input to the non-volatile memory 3 from the memory controller 2 (step S756). Next, the input start command of the data of the Middle page with the word line WLn inputted from the memory controller 2 to the non-volatile memory 3 (step S758). After that, the data of the Middle page with the word line WLn is input to the non-volatile memory 3 from the memory controller 2 (step S760). The data of the Middle page is not only input to the non-volatile memory 3, but also stored in the page buffer 24. After being stored in the page buffer 24, the middle data written in the buffer can be discarded or invalidated. Next, an input start command for the data of the Top page with the word line WLn inputted from the memory controller 2 to the non-volatile memory 3 (step S762). After that, the data of the top page of the word line WLn is input to the non-volatile memory 3 from the memory controller 2 (step S764). Next, the 1st stage and the 2nd stage programmed execution commands are input from the memory controller 2 to the non-volatile memory 3 (step S766), and thereby become chip_busy (step S768). After that, for the Lower page, Middle page, and Top page of the word line WLn, a stylized voltage pulse is applied 1 to multiple times (step S770). After that, in order to confirm whether the memory cell has moved beyond the threshold level, the data of the lower page and the top page with the word line WLn are read (step S772). Furthermore, it is confirmed whether the number of failed bits of the data in the lower page and the top page is smaller than the determination criterion (step S774). When the number of failed bits of the data in the lower page and the top page is greater than the judgment criterion, the processing of steps S770 to S774 is repeated. However, if the number of failed bits of the data becomes smaller than the judgment criterion, the lower page and top page data of the word line WLn-1 are read (step S776). After that, based on the Lower and Top page data of the word line WLn-1 and the Middle page data read from the page buffer 24, the threshold voltage Vth of the programming target of the Upper page is determined (step S778). After that, using the determined threshold voltage Vth, data writing to the upper page of the word line WLn-1 is performed (step S780). When writing data to the upper page, the upper page of the word line WLn-1 is applied with a programming voltage pulse of 1 to multiple times. After that, in order to confirm whether the memory cell has moved beyond the threshold level, the data of the Upper page with the word line WLn-1 is read (step S782). Furthermore, a verification is performed to determine whether the number of failed bits of the data in the upper page is smaller than the determination criterion (step S784). When the number of failed bits of the data in the Upper page is above the judgment criterion, the process of applying the programmed voltage pulse and reading and verifying the data is repeated. On the other hand, if the number of failed bits of the data becomes smaller than the judgment criterion, it becomes chip_ready (step S786). In addition, in the 1st stage programming for the same character line, the order of the data input start command on the plural pages and the pages in the data input process is arbitrary, no matter which page is input first. In addition, in the 2nd stage programming for the same character line, the order of the data input start command on the plural pages and the pages in the data input process is also arbitrary. However, the sequence of each character line number and the two-stage stylized processing absolutely needs to be the sequence shown in FIG. 109. In this way, in FIG. 109, an explanation is given for the case where the programming of the 1st stage of the word line WLn is performed before the programming of the 2nd stage of the word line WLn-1. This is to prevent the cell of the word line WLn-1 written by the threshold voltage Vth of 16 values from being contiguous by the programming of the 1st stage of the word line WLn. Because of the impact. As described above, in this embodiment, the data of the upper page of the character line WLn-1 and the data of the 4 pages of the lower page, the middle page and the top page of the character line WLn are continuously enter. In addition, as another modification, it is also possible to use the input of the programmed command as an IDL, and then perform the reading of the Lower page, Middle page, and Top page of the character line WLn-1. The programming of the Lower page, Middle page, and Top page of the character line WLn. Then, the threshold voltage Vth of the programming target of the Upper page of the character line WLn-1 is determined, and by the determined The threshold voltage Vth is used to program the Upper page of the word line WLn-1. With this configuration, it is possible to perform the Lower, Middle, and Top pages of the IDL character line WLn-1 before being affected by the interference between adjacent cells caused by the writing of the character line WLn The reading of the data. In addition, in the present embodiment, the actual execution sequence of the programming caused by the unifying command of the 1st stage of the word line WLn and the 2nd stage of the word line WLn-1 can be modified. That is, the programming of the Lower page, Middle page, and Top page of the character line WLn shown in Figure 109, and the reading of the data of the Lower page, Middle page, and Top page as the IDL character line WLn-1 Out, no matter which one comes first, it can be exchanged. By reading the data of the Lower page, Middle page and Top page of the character line WLn-1 before programming the Lower page, Middle page and Top page of the character line WLn, it becomes possible to IDL is performed under the influence caused by the programming of the Lower page, Middle page, and Top page of the character line WLn. In this way, in the third embodiment, since the 2nd stage programming of the word line WLn-1 and the 1st stage programming of the character line WLn are integrated, command input and polling are performed. The frequency is reduced. Therefore, it becomes possible to achieve speed-up of the memory system 1 and simplification of control. FIG. 110 is a diagram for explaining the write buffer amount (buffer data amount) in the programming of the third embodiment. In this embodiment, a two-stage stylization is used with 1-4-5-5 data encoding. In the programming of this embodiment, in the 1st stage, data input for the amount of three pages (Lower page, Middle page and Top page) and the programming of the amount of these three pages (1st stylization) are performed. ). In the case of the programming of the present embodiment, in the 2nd stage, data input for one page (Upper page) and programming for one page of the Upper page (2nd stylization) are performed. ). However, at each character line WL0, WL1, WL2,..., it is sufficient to pre-store the data in the write buffer during the data input of each stage. If the programming is started, the data can also be changed from Write to the buffer and delete. For example, if data is input at the 1st stage, the data is stored in the write buffer. However, if the programming is started at the 1st stage, the data of the Lower page, Top page and Middle page stored in the write buffer in advance can also be deleted. However, the data of the middle page is also used at the 2nd stage. Therefore, it is necessary to store it in the page buffer 24 in advance until the programming at the 2nd stage is started. Similarly, if data is input at the 2nd stage, the data is stored in the write buffer. However, if programming is started at the 2nd stage, all the data previously stored in the write buffer can also be deleted. Therefore, in the case of programming in this embodiment, it is necessary to hold the data in the write buffer in advance. Even the largest data is only 3 pages of data, which can be more than that of the first embodiment. To reduce. In the programming of this embodiment, in the same way, in order to reduce the interference between adjacent memory cells, the data of the 4 pages of Lower/Middle/Upper/Top are not written continuously. For example, after the 1st stage for the word line WL0 is executed, before the 2nd stage for the word line WL0 is executed, the 1st stage for the word line WL1 adjacent to the word line WL0 is executed. . Similarly, after the 1st stage for the word line WL1 is executed, before the 2nd stage for the word line WL1 is executed, the 1st stage for the word line WL2 adjacent to the word line WL1 is Implement. In this way, in this embodiment, all page data is only necessary for programming in one stage. Therefore, if the data input is completed, the data can be written into the buffer. delete. Therefore, in this embodiment, it is necessary to keep the number of pages in the write buffer at the same time in advance, and it only needs to be smaller than that in the first embodiment. The page data programmed for the non-volatile memory 3 is temporarily held in the write buffer in the RAM 6 and then the data is input into the non-volatile memory 3 during programming. In this embodiment, since the necessary capacity of the RAM 6 can be reduced, the cost can be reduced. In addition, in the present embodiment, since the data transmission of each page is completed once, compared with the first embodiment, the transmission time of the page data is less than that of the first embodiment. It becomes possible to reduce the power consumption during transmission. The page reading processing in this embodiment is the same as the processing procedure described in the first embodiment, so its description is omitted. In addition, in this embodiment, for new page data that needs to be maintained, it is necessary to increase the page buffer 24 inside the NAND flash memory. In the programming of NAND flash memory with 1 string in the block as shown in Figure 8A, the amount of page buffer 24 that needs to be increased is the amount of data for 1 page. . In contrast, in the programming of NAND flash memory with 4 strings in the block as shown in FIG. 8B or FIG. 8C, the amount of page buffer 24 that needs to be increased is The amount of data on 4 pages. This is because, during the period from the implementation of the 1st stage programming of a certain string to the implementation of the 2nd stage programming of the same string, it is necessary to execute the 1st stage programming of the other 3 strings. As a result, it is necessary to maintain the data of one page for all of the four strings. In this embodiment, although 1-4-5-5 data encoding is used as an example, various data encoding modifications can be used, and it is obvious that the above-mentioned embodiment can be realized. In the above-mentioned first to third embodiments, although the NAND memory 5 is used to form the non-volatile memory 3, the description has been made, but it can also be used such as ReRAM (Resistive Random Access Memory). Or MRAM6 (Magneto-Resistive Random Access Memory), PRAM (Phase Change Random Access Memory), FeRAM (Ferroeletric Random Access Memory) and other types of non-volatile memory3. In the above-mentioned first to third embodiments, although the data is written for 3 pages in the 1st stage of programming, the 2nd stage of programming is written for 2 pages. The situation of data writing is explained, but it is also possible to change the allocation of the number of pages in the programming of the 1st stage and the number of pages in the programming of the 2nd stage. For example, it can also be configured to write data for 2 pages in the programming of the 1st stage, and write data for 3 pages in the programming of the 2nd stage. Although several embodiments of the present disclosure have been described, these embodiments are merely presented as examples, and are not intended to limit the scope of the present invention. These novel embodiments can be implemented in various other forms, and various omissions, substitutions, and changes can be made without departing from the spirit of the invention. These embodiments or their modifications are also included in the scope or gist of the invention, and are also included in the invention described in the scope of the patent application and its equivalent scope.

1:記憶體系統 2:記憶體控制器 3:非揮發性記憶體 4:主機處理器 5:NAND記憶體 6:RAM 7:ROM 8:處理器 9:主機介面 10:ECC電路 11:記憶體介面 12:內部匯流排 21:NAND I/O介面 22:控制部 23:NAND記憶體胞陣列 24:頁面緩衝 31:震盪器 32:序列器 33:指令使用者介面 34:電壓供給部 35:列計數器 36:序列存取控制器 37:行解碼器 38:感測放大器 41:p型井區域 42,43,44:配線層 45:記憶體洞(memory hole) 46:區塊絕緣膜 47:電荷積蓄層 48:閘極絕緣膜 49:導電膜1: Memory system 2: Memory controller 3: Non-volatile memory 4: Host processor 5: NAND memory 6: RAM 7: ROM 8: processor 9: Host interface 10: ECC circuit 11: Memory interface 12: Internal bus 21: NAND I/O interface 22: Control Department 23: NAND memory cell array 24: page buffering 31: Oscillator 32: Sequencer 33: Command user interface 34: Voltage Supply Department 35: column counter 36: Serial access controller 37: Line decoder 38: Sense amplifier 41: P-well area 42, 43, 44: Wiring layer 45: memory hole 46: Block insulation film 47: charge accumulation layer 48: Gate insulating film 49: conductive film

[圖1]係為對於由第1實施形態所致的記憶體系統之概略構成作展示之區塊圖。 [圖2]係為對於本實施形態的非揮發性記憶體之內部構成之其中一例作展示之區塊圖。 [圖3]係為對於3維構造的NAND記憶體胞陣列之其中一例作展示之電路圖。 [圖4]係為3維構造的NAND記憶體之NAND記憶體胞陣列之一部分區域的剖面圖。 [圖5]係為對於第1實施形態之臨限值區域的其中一例作展示之圖。 [圖6A]係為對於第1實施形態之資料編碼的其中一例作展示之圖。 [圖6B]係為對於第1實施形態之資料編碼的另外一例作展示之圖。 [圖7]係為對於第1實施形態中之程式化後的臨限值區域作展示之圖。 [圖8A]係為對於第1實施形態之程式化順序的第1例作展示之圖。 [圖8B]係為對於第1實施形態之程式化順序的第2例作展示之圖。 [圖8C]係為對於第1實施形態之程式化順序的第3例作展示之圖。 [圖9]係為對於由第1實施形態所致的1個區塊之量之全體的寫入程序之第1例作展示之流程圖。 [圖10]係為對於由第1實施形態所致的1st階段中之寫入程序作展示之流程圖。 [圖11]係為對於2nd階段之寫入程序之第1例作展示之流程圖。 [圖12]係為用以對於複數次數之讀出結果的多數決處理作說明的圖。 [圖13]係為對於在第1實施形態的2nd階段中之寫入程序之變形例作展示之流程圖。 [圖14A]係為用以對於在採用了4-3-4-4資料編碼之Foggy-Fine程式化中之寫入緩衝的資料量作說明之圖。 [圖14B]係為對於在本實施形態中之寫入緩衝的資料量作說明之圖。 [圖15]係為對於在直到1st階段為止之程式化為結束的字元線處之頁面讀出的處理程序作展示之流程圖。 [圖16A]係為對於在直到2nd階段為止之程式化為結束的字元線處之頁面讀出的處理程序作展示之流程圖。 [圖16B]係為針對適合於由其中一變形例所致之頁面讀出處理的資料編碼作展示之圖。 [圖16C]係為對於由其中一變形例所致的讀出處理程序作展示之流程圖。 [圖16D]係為選擇字元線、ReadyBusy訊號線、輸出資料線之電壓波形圖。 [圖17]係為對於1-5-4-5資料編碼的其中一例作展示之圖。 [圖18]係為對於1-5-4-5資料編碼的其中一例作展示之圖。 [圖19]係為對於3-5-2-5資料編碼的其中一例作展示之圖。 [圖20]係為對於3-3-4-5資料編碼的其中一例作展示之圖。 [圖21]係為對於2-3-5-5資料編碼的其中一例作展示之圖。 [圖22]係為對於3-2-5-5資料編碼的其中一例作展示之圖。 [圖23]係為對於3-4-4-4資料編碼的其中一例作展示之圖。 [圖24]係為對於3-4-4-4資料編碼的其中一例作展示之圖。 [圖25]係為對於1-4-5-5資料編碼的其中一例作展示之圖。 [圖26]係為對於2-5-3-5資料編碼的其中一例作展示之圖。 [圖27]係為對於3-4-5-3資料編碼的其中一例作展示之圖。 [圖28]係為對於3-2-5-5資料編碼的其中一例作展示之圖。 [圖29]係為對於3-2-5-5資料編碼的其中一例作展示之圖。 [圖30]係為對於1-5-5-4資料編碼的其中一例作展示之圖。 [圖31]係為對於1-5-4-5資料編碼的其中一例作展示之圖。 [圖32]係為對於1-4-5-5資料編碼的其中一例作展示之圖。 [圖33]係為對於1-5-3-6資料編碼的其中一例作展示之圖。 [圖34]係為對於1-3-6-5資料編碼的其中一例作展示之圖。 [圖35]係為對於1-2-6-6資料編碼的其中一例作展示之圖。 [圖36]係為對於1-2-6-6資料編碼的其中一例作展示之圖。 [圖37]係為對於1-2-6-6資料編碼的其中一例作展示之圖。 [圖38]係為對於1-4-6-4資料編碼的其中一例作展示之圖。 [圖39]係為對於1-4-4-6資料編碼的其中一例作展示之圖。 [圖40]係為對於1-4-6-4資料編碼的其中一例作展示之圖。 [圖41]係為對於1-4-4-6資料編碼的其中一例作展示之圖。 [圖42]係為對於2-5-2-6資料編碼的其中一例作展示之圖。 [圖43]係為對於2-5-2-6資料編碼的其中一例作展示之圖。 [圖44]係為對於2-5-2-6資料編碼的其中一例作展示之圖。 [圖45]係為對於3-3-3-6資料編碼的其中一例作展示之圖。 [圖46]係為對於3-3-6-3資料編碼的其中一例作展示之圖。 [圖47]係為對於2-3-4-6資料編碼的其中一例作展示之圖。 [圖48]係為對於3-4-2-6資料編碼的其中一例作展示之圖。 [圖49]係為對於2-3-4-6資料編碼的其中一例作展示之圖。 [圖50]係為對於3-2-6-4資料編碼的其中一例作展示之圖。 [圖51]係為對於3-2-4-6資料編碼的其中一例作展示之圖。 [圖52]係為對於3-2-6-4資料編碼的其中一例作展示之圖。 [圖53]係為對於3-4-2-6資料編碼的其中一例作展示之圖。 [圖54]係為對於3-2-4-6資料編碼的其中一例作展示之圖。 [圖55]係為對於5-3-2-5資料編碼的其中一例作展示之圖。 [圖56]係為對於3-5-2-5資料編碼的其中一例作展示之圖。 [圖57]係為對於3-2-5-5資料編碼的其中一例作展示之圖。 [圖58]係為對於2-3-5-5資料編碼的其中一例作展示之圖。 [圖59]係為對於2-3-5-5資料編碼的其中一例作展示之圖。 [圖60]係為對於2-3-5-5資料編碼的其中一例作展示之圖。 [圖61]係為對於5-4-2-4資料編碼的其中一例作展示之圖。 [圖62]係為對於4-5-2-4資料編碼的其中一例作展示之圖。 [圖63]係為對於5-4-2-4資料編碼的其中一例作展示之圖。 [圖64]係為對於2-4-5-4資料編碼的其中一例作展示之圖。 [圖65]係為對於2-4-5-4資料編碼的其中一例作展示之圖。 [圖66]係為對於2-5-4-4資料編碼的其中一例作展示之圖。 [圖67]係為對於2-5-4-4資料編碼的其中一例作展示之圖。 [圖68]係為對於2-5-4-4資料編碼的其中一例作展示之圖。 [圖69]係為對於1-5-4-5資料編碼的其中一例作展示之圖。 [圖70]係為對於1-4-5-5資料編碼的其中一例作展示之圖。 [圖71]係為對於1-5-5-4資料編碼的其中一例作展示之圖。 [圖72]係為對於1-4-5-5資料編碼的其中一例作展示之圖。 [圖73]係為對於1-5-5-4資料編碼的其中一例作展示之圖。 [圖74]係為對於1-5-4-5資料編碼的其中一例作展示之圖。 [圖75]係為對於1-5-5-4資料編碼的其中一例作展示之圖。 [圖76]係為對於1-5-4-5資料編碼的其中一例作展示之圖。 [圖77]係為對於1-4-5-5資料編碼的其中一例作展示之圖。 [圖78]係為對於1-4-5-5資料編碼的其中一例作展示之圖。 [圖79]係為對於1-4-5-5資料編碼的其中一例作展示之圖。 [圖80]係為對於1-4-5-5資料編碼的其中一例作展示之圖。 [圖81]係為對於3-5-4-3資料編碼的其中一例作展示之圖。 [圖82]係為對於3-4-5-3資料編碼的其中一例作展示之圖。 [圖83]係為對於3-5-3-4資料編碼的其中一例作展示之圖。 [圖84]係為對於3-4-3-5資料編碼的其中一例作展示之圖。 [圖85]係為對於3-4-5-3資料編碼的其中一例作展示之圖。 [圖86]係為對於3-4-3-5資料編碼的其中一例作展示之圖。 [圖87]係為對於3-3-5-4資料編碼的其中一例作展示之圖。 [圖88]係為對於3-3-5-4資料編碼的其中一例作展示之圖。 [圖89]係為對於4-5-3-3資料編碼的其中一例作展示之圖。 [圖90]係為對於3-5-4-3資料編碼的其中一例作展示之圖。 [圖91]係為對於3-4-5-3資料編碼的其中一例作展示之圖。 [圖92]係為對於3-3-4-5資料編碼的其中一例作展示之圖。 [圖93]係為對於3-3-4-5資料編碼的其中一例作展示之圖。 [圖94]係為對於3-3-4-5資料編碼的其中一例作展示之圖。 [圖95]係為對於3-4-5-3資料編碼的其中一例作展示之圖。 [圖96]係為對於3-3-5-4資料編碼的其中一例作展示之圖。 [圖97]係為對於3-3-4-5資料編碼的其中一例作展示之圖。 [圖98]係為對於4-3-4-4資料編碼的其中一例作展示之圖。 [圖99]係為對於3-4-4-4資料編碼的其中一例作展示之圖。 [圖100]係為對於3-4-4-4資料編碼的其中一例作展示之圖。 [圖101]係為對於4-3-4-4資料編碼的其中一例作展示之圖。 [圖102]係為對於3-4-4-4資料編碼的其中一例作展示之圖。 [圖103]係為對於3-4-4-4資料編碼的其中一例作展示之圖。 [圖104]係為對於3-4-4-4資料編碼的其中一例作展示之圖。 [圖105]係為對於3-4-4-4資料編碼的其中一例作展示之圖。 [圖106]係為對於4-4-3-4資料編碼的其中一例作展示之圖。 [圖107]係為對於4-4-3-4資料編碼的其中一例作展示之圖。 [圖108]係為對於第3實施形態的1個區塊之量之全體的寫入程序作展示之流程圖。 [圖109]係為對於第3實施形態的1st階段以及2nd階段中之寫入程序作展示之流程圖。 [圖110]係為用以對於在第3實施形態之程式化中之寫入緩衝量作說明之圖。[Fig. 1] is a block diagram showing the schematic configuration of the memory system according to the first embodiment. [Fig. 2] is a block diagram showing an example of the internal structure of the non-volatile memory of this embodiment. [Fig. 3] is a circuit diagram showing an example of a NAND memory cell array with a three-dimensional structure. [Figure 4] is a cross-sectional view of a partial area of a NAND memory cell array of a 3-dimensional NAND memory. [Fig. 5] is a diagram showing an example of the threshold value area of the first embodiment. [Fig. 6A] is a diagram showing an example of data coding in the first embodiment. [Fig. 6B] is a diagram showing another example of data encoding in the first embodiment. [Figure 7] is a diagram showing the programmed threshold area in the first embodiment. [Fig. 8A] is a diagram showing the first example of the stylized sequence of the first embodiment. [Fig. 8B] is a diagram showing the second example of the stylized sequence of the first embodiment. [Fig. 8C] is a diagram showing the third example of the stylized sequence of the first embodiment. [Fig. 9] is a flowchart showing the first example of the writing procedure for the entire amount of 1 block caused by the first embodiment. [Fig. 10] is a flowchart showing the writing procedure in the 1st stage caused by the first embodiment. [Figure 11] is a flow chart showing the first example of the 2nd stage write process. [Fig. 12] is a diagram for explaining the majority decision processing of the reading result of the plural number of times. [Fig. 13] is a flowchart showing a modification example of the writing procedure in the 2nd stage of the first embodiment. [Figure 14A] is a diagram for explaining the amount of data written in the buffer in the Foggy-Fine programming using 4-3-4-4 data encoding. [Fig. 14B] is a diagram for explaining the amount of data in the write buffer in this embodiment. [Fig. 15] is a flowchart showing the processing procedure of page reading at the character line where the programming is completed until the 1st stage. [FIG. 16A] is a flowchart showing the processing procedure of page reading at the character line where the programming is completed until the 2nd stage. [FIG. 16B] is a diagram showing data encoding suitable for page read processing caused by one of the modified examples. [FIG. 16C] is a flowchart showing the read processing procedure caused by one of the modified examples. [Figure 16D] is the voltage waveform diagram of the selected word line, ReadyBusy signal line, and output data line. [Figure 17] is a diagram showing an example of coding 1-5-4-5 data. [Figure 18] is a diagram showing one example of coding 1-5-4-5 data. [Figure 19] is a diagram showing an example of 3-5-2-5 data coding. [Figure 20] is a diagram showing an example of 3-3-4-5 data coding. [Figure 21] is a diagram showing an example of 2-3-5-5 data coding. [Figure 22] is a diagram showing an example of 3-2-5-5 data coding. [Figure 23] is a diagram showing an example of 3-4-4-4 data coding. [Figure 24] is a diagram showing an example of 3-4-4-4 data coding. [Figure 25] is a diagram showing an example of coding 1-4-5-5. [Figure 26] is a diagram showing an example of 2-5-3-5 data coding. [Figure 27] is a diagram showing an example of 3-4-5-3 data coding. [Figure 28] is a diagram showing an example of 3-2-5-5 data coding. [Figure 29] is a diagram showing an example of 3-2-5-5 data coding. [Figure 30] is a diagram showing an example of coding 1-5-5-4. [Figure 31] is a diagram showing an example of the coding of 1-5-4-5 data. [Figure 32] is a diagram showing an example of coding 1-4-5-5. [Figure 33] is a diagram showing an example of 1-5-3-6 data coding. [Figure 34] is a diagram showing one of the examples of 1-3-6-5 data coding. [Figure 35] is a diagram showing an example of 1-2-6-6 data coding. [Figure 36] is a diagram showing an example of 1-2-6-6 data coding. [Figure 37] is a diagram showing an example of 1-2-6-6 data coding. [Figure 38] is a diagram showing an example of 1-4-6-4 data coding. [Figure 39] is a diagram showing an example of 1-4-4-6 data coding. [Figure 40] is a diagram showing an example of 1-4-6-4 data coding. [Figure 41] is a diagram showing an example of 1-4-4-6 data coding. [Figure 42] is a diagram showing an example of 2-5-2-6 data coding. [Figure 43] is a diagram showing an example of 2-5-2-6 data coding. [Figure 44] is a diagram showing an example of 2-5-2-6 data coding. [Figure 45] is a diagram showing an example of 3-3-3-6 data coding. [Figure 46] is a diagram showing an example of 3-3-6-3 data coding. [Figure 47] is a diagram showing an example of 2-3-4-6 data encoding. [Figure 48] is a diagram showing an example of 3-4-2-6 data coding. [Figure 49] is a diagram showing an example of 2-3-4-6 data encoding. [Figure 50] is a diagram showing an example of 3-2-6-4 data coding. [Figure 51] is a diagram showing an example of 3-2-4-6 data coding. [Figure 52] is a diagram showing an example of 3-2-6-4 data coding. [Figure 53] is a diagram showing an example of 3-4-2-6 data coding. [Figure 54] is a diagram showing an example of 3-2-4-6 data coding. [Figure 55] is a diagram showing an example of 5-3-2-5 data coding. [Figure 56] is a diagram showing an example of 3-5-2-5 data coding. [Figure 57] is a diagram showing an example of 3-2-5-5 data coding. [Figure 58] is a diagram showing an example of 2-3-5-5 data coding. [Figure 59] is a diagram showing an example of 2-3-5-5 data coding. [Figure 60] is a diagram showing an example of 2-3-5-5 data coding. [Figure 61] is a diagram showing an example of 5-4-2-4 data coding. [Figure 62] is a diagram showing an example of 4-5-2-4 data coding. [Figure 63] is a diagram showing an example of 5-4-2-4 data coding. [Figure 64] is a diagram showing an example of 2-4-5-4 data encoding. [Figure 65] is a diagram showing an example of 2-4-5-4 data coding. [Figure 66] is a diagram showing an example of 2-5-4-4 data encoding. [Figure 67] is a diagram showing an example of 2-5-4-4 data coding. [Figure 68] is a diagram showing an example of 2-5-4-4 data coding. [Figure 69] is a diagram showing an example of coding 1-5-4-5 data. [Figure 70] is a diagram showing an example of the 1-4-5-5 data coding. [Figure 71] is a diagram showing an example of the 1-5-5-4 data coding. [Figure 72] is a diagram showing an example of coding 1-4-5-5. [Figure 73] is a diagram showing an example of the coding of 1-5-5-4 data. [Figure 74] is a diagram showing one example of coding 1-5-4-5 data. [Figure 75] is a diagram showing an example of the 1-5-5-4 data coding. [Figure 76] is a diagram showing one example of coding 1-5-4-5 data. [Figure 77] is a diagram showing an example of coding 1-4-5-5. [Figure 78] is a diagram showing an example of the 1-4-5-5 data encoding. [Figure 79] is a diagram showing an example of the 1-4-5-5 data encoding. [Figure 80] is a diagram showing an example of coding 1-4-5-5. [Figure 81] is a diagram showing an example of 3-5-4-3 data coding. [Figure 82] is a diagram showing an example of 3-4-5-3 data coding. [Figure 83] is a diagram showing an example of 3-5-3-4 data coding. [Figure 84] is a diagram showing an example of 3-4-3-5 data coding. [Figure 85] is a diagram showing an example of 3-4-5-3 data coding. [Figure 86] is a diagram showing an example of 3-4-3-5 data coding. [Figure 87] is a diagram showing an example of 3-3-5-4 data coding. [Figure 88] is a diagram showing an example of 3-3-5-4 data coding. [Figure 89] is a diagram showing an example of 4-5-3-3 data coding. [Figure 90] is a diagram showing an example of 3-5-4-3 data coding. [Figure 91] is a diagram showing an example of 3-4-5-3 data coding. [Figure 92] is a diagram showing an example of 3-3-4-5 data coding. [Figure 93] is a diagram showing an example of 3-3-4-5 data coding. [Figure 94] is a diagram showing an example of 3-3-4-5 data coding. [Figure 95] is a diagram showing an example of 3-4-5-3 data coding. [Figure 96] is a diagram showing an example of 3-3-5-4 data coding. [Figure 97] is a diagram showing an example of 3-3-4-5 data coding. [Figure 98] is a diagram showing an example of 4-3-4-4 data coding. [Figure 99] is a diagram showing an example of 3-4-4-4 data coding. [Figure 100] is a diagram showing an example of 3-4-4-4 data coding. [Figure 101] is a diagram showing an example of 4-3-4-4 data coding. [Figure 102] is a diagram showing an example of 3-4-4-4 data encoding. [Figure 103] is a diagram showing an example of 3-4-4-4 data encoding. [Figure 104] is a diagram showing an example of 3-4-4-4 data encoding. [Figure 105] is a diagram showing an example of 3-4-4-4 data encoding. [Figure 106] is a diagram showing an example of 4-4-3-4 data coding. [Figure 107] is a diagram showing an example of 4-4-3-4 data coding. [Fig. 108] is a flowchart showing the writing procedure for the entire amount of 1 block in the third embodiment. [Fig. 109] is a flowchart showing the writing procedure in the 1st stage and the 2nd stage of the third embodiment. [Fig. 110] is a diagram for explaining the amount of write buffer in the programming of the third embodiment.

2:記憶體控制器 2: Memory controller

3:非揮發性記憶體 3: Non-volatile memory

4:主機處理器 4: Host processor

5:NAND記憶體 5: NAND memory

6:RAM 6: RAM

7:ROM 7: ROM

8:處理器 8: processor

9:主機介面 9: Host interface

10:ECC電路 10: ECC circuit

11:記憶體介面 11: Memory interface

12:內部匯流排 12: Internal bus

Claims (13)

一種記憶體系統,係具備有: 非揮發性記憶體,係具有複數之記憶體胞,該複數之記憶體胞,係各別藉由16個臨限值區域,而能夠記憶藉由第1~第4位元來作表現的4位元之資料,該16個的臨限值區域,係包含有代表資料被作了刪除的刪除狀態之第1臨限值區域、和電壓準位為較前述第1臨限值區域而更高並代表資料被作了寫入的寫入狀態之第2~第16臨限值區域;和 記憶體控制器,係在使前述非揮發性記憶體進行了將前述第1位元、前述第2位元、前述第4位元之資料作寫入的第1程式化之後,使前述非揮發性記憶體進行將前述第3位元之資料作寫入的第2程式化, 在存在於前述第1~第16臨限值區域中之相鄰接之臨限值區域間之15個的邊界中,被使用在前述第1位元之資料之值的判定中之第1邊界之數量、被使用在前述第2位元之資料之值的判定中之第2邊界之數量、被使用在前述第3位元之資料之值的判定中之第3邊界之數量、被使用在前述第4位元之資料之值的判定中之第4邊界之數量,此些之數量中之最大之值係為5,第2大之值係為4, 前述記憶體控制器,係構成為以使在前述記憶體胞中之臨限值區域會因應於前述第1位元、前述第2位元、前述第4位元之資料而成為代表資料為被作了刪除的刪除狀態之第17臨限值區域和電壓準位為較前述第17臨限值區域而更高並代表資料被作了寫入的寫入狀態之第18~第24臨限值區域之其中一者之臨限值區域的方式,來使前述非揮發性記憶體進行前述第1程式化, 前述記憶體控制器,係構成為以使在前述記憶體胞中之臨限值區域會因應於前述第3位元之資料而從前述第17~第24臨限值區域中之任一者之臨限值區域來成為前述第1~第16臨限值區域中之2個的臨限值區域內之任一者之臨限值區域的方式,來使前述非揮發性記憶體進行前述第2程式化, 位置於前述2個的臨限值區域中之電壓準位為最低之臨限值區域和電壓準位為最高之臨限值區域之間的臨限值區域之個數,係為2個以內, 前述記憶體控制器,在使前述非揮發性記憶體進行前述第2程式化的情況時,係構成為將前述第2位元之資料和前述第3位元之資料對於前述非揮發性記憶體作輸入。A memory system that has: Non-volatile memory is a memory cell with a plurality of memory cells, each of which has 16 threshold areas, and can memorize 4 expressed by the first to fourth bits. For bit data, the 16 threshold areas include the first threshold area that represents the deleted state where the data is deleted, and the voltage level is higher than the first threshold area mentioned above It also represents the 2nd to 16th threshold area of the writing state where the data has been written; and The memory controller causes the non-volatile memory to perform the first programming of writing the data of the first bit, the second bit, and the fourth bit to make the non-volatile memory The sexual memory performs the second programming of writing the data of the third bit mentioned above, Among the 15 boundaries between adjacent threshold regions existing in the first to 16th threshold regions, the first boundary used in the determination of the value of the first bit data The number of the second boundary used in the determination of the value of the second bit data, the number of the third boundary used in the determination of the value of the third bit data, is used in For the number of the fourth boundary in the determination of the value of the fourth bit of the data, the largest value among these numbers is 5, and the second largest value is 4. The aforementioned memory controller is configured so that the threshold area in the aforementioned memory cell becomes representative data in response to the data of the aforementioned first bit, the aforementioned second bit, and the aforementioned fourth bit. The 17th threshold area and voltage level of the deleted state with deletion are higher than the above-mentioned 17th threshold area and represent the 18th to 24th thresholds of the write state with data being written The threshold area of one of the areas is used to make the aforementioned non-volatile memory perform the aforementioned first programming, The aforementioned memory controller is configured so that the threshold area in the aforementioned memory cell changes from any one of the aforementioned 17th to 24th threshold areas in accordance with the data of the aforementioned 3rd bit. The threshold area becomes the threshold area of any one of the threshold areas of the first to 16th threshold areas, so that the non-volatile memory performs the second Stylized, The number of threshold areas between the threshold area where the voltage level is the lowest and the threshold area where the voltage level is the highest in the aforementioned two threshold areas is within two. The aforementioned memory controller, when the aforementioned non-volatile memory is subjected to the aforementioned second programming, is configured to combine the aforementioned second bit data and the aforementioned third bit data with respect to the aforementioned non-volatile memory For input. 如請求項1所記載之記憶體系統,其中, 前述記憶體控制器,係以會使在存在於前述第1~第16臨限值區域中之相鄰接之臨限值區域間之15個的邊界中,前述第1位元之值為相異的前述邊界之數量、前述第2位元之值為相異的前述邊界之數量、前述第3位元之值為相異的前述邊界之數量、以及前述第4位元之值為相異的前述邊界之數量,依序成為(1、4、5、5)、(1、5、4、5)或者是(3、3、4、5)的方式,來使前述非揮發性記憶體進行前述第1程式化以及前述第2程式化。Such as the memory system described in claim 1, in which: The aforementioned memory controller is such that the value of the aforementioned first bit is the same in the 15 boundaries between adjacent threshold areas existing in the aforementioned first to 16th threshold areas. The number of the aforementioned boundaries that are different, the number of the aforementioned boundaries that have a different value in the second bit, the number of the aforementioned boundaries that have a different value in the third bit, and the number of the aforementioned boundaries that have a different value in the fourth bit are different The number of the aforementioned borders in sequence becomes (1, 4, 5, 5), (1, 5, 4, 5) or (3, 3, 4, 5) in order to make the aforementioned non-volatile memory Perform the aforementioned first stylization and the aforementioned second stylization. 一種記憶體系統,係具備有: 非揮發性記憶體,係具有複數之記憶體胞,該複數之記憶體胞,係各別藉由16個臨限值區域,而能夠記憶藉由第1~第4位元來作表現的4位元之資料,該16個的臨限值區域,係包含有代表資料被作了刪除的刪除狀態之第1臨限值區域、和電壓準位為較前述第1臨限值區域而更高並代表資料被作了寫入的寫入狀態之第2~第16臨限值區域;和 記憶體控制器,係在使前述非揮發性記憶體進行了將前述第1位元、前述第2位元、前述第4位元之資料作寫入的第1程式化之後,使前述非揮發性記憶體進行將前述第3位元之資料作寫入的第2程式化, 在存在於前述第1~第16臨限值區域中之相鄰接之臨限值區域間之15個的邊界中,被使用在前述第1位元之資料之值的判定中之第1邊界之數量、被使用在前述第2位元之資料之值的判定中之第2邊界之數量、被使用在前述第3位元之資料之值的判定中之第3邊界之數量、被使用在前述第4位元之資料之值的判定中之第4邊界之數量,係依序為(3、5、2、5), 前述記憶體控制器,係構成為以使在前述記憶體胞中之臨限值區域會因應於前述第1位元、前述第2位元、前述第4位元之資料而成為代表資料為被作了刪除的刪除狀態之第17臨限值區域和電壓準位為較前述第17臨限值區域而更高並代表資料被作了寫入的寫入狀態之第18~第24臨限值區域之其中一者之臨限值區域的方式,來使前述非揮發性記憶體進行前述第1程式化, 前述記憶體控制器,係構成為以使在前述記憶體胞中之臨限值區域會因應於前述第3位元之資料而從前述第17~第24臨限值區域中之任一者之臨限值區域來成為前述第1~第16臨限值區域中之2個的臨限值區域內之任一者之臨限值區域的方式,來使前述非揮發性記憶體進行前述第2程式化, 位置於前述2個的臨限值區域中之電壓準位為最低之臨限值區域和電壓準位為最高之臨限值區域之間的臨限值區域之個數,係為2個以內, 前述記憶體控制器,在使前述非揮發性記憶體進行前述第2程式化的情況時,係構成為將前述第2位元之資料和前述第3位元之資料對於前述非揮發性記憶體作輸入。A memory system that has: Non-volatile memory is a memory cell with a plurality of memory cells, each of which has 16 threshold areas, and can memorize 4 expressed by the first to fourth bits. For bit data, the 16 threshold areas include the first threshold area that represents the deleted state where the data is deleted, and the voltage level is higher than the first threshold area mentioned above It also represents the 2nd to 16th threshold area of the writing state where the data has been written; and The memory controller causes the non-volatile memory to perform the first programming of writing the data of the first bit, the second bit, and the fourth bit to make the non-volatile memory The sexual memory performs the second programming of writing the data of the third bit mentioned above, Among the 15 boundaries between adjacent threshold regions existing in the first to 16th threshold regions, the first boundary used in the determination of the value of the first bit data The number of the second boundary used in the determination of the value of the second bit data, the number of the third boundary used in the determination of the value of the third bit data, is used in The number of the fourth boundary in the determination of the value of the data of the fourth bit mentioned above is (3, 5, 2, 5) in order, The aforementioned memory controller is configured so that the threshold area in the aforementioned memory cell becomes representative data in response to the data of the aforementioned first bit, the aforementioned second bit, and the aforementioned fourth bit. The 17th threshold area and voltage level of the deleted state with deletion are higher than the above-mentioned 17th threshold area and represent the 18th to 24th thresholds of the write state with data being written The threshold area of one of the areas is used to make the aforementioned non-volatile memory perform the aforementioned first programming, The aforementioned memory controller is configured so that the threshold area in the aforementioned memory cell changes from any one of the aforementioned 17th to 24th threshold areas in accordance with the data of the aforementioned 3rd bit. The threshold area becomes the threshold area of any one of the threshold areas of the first to 16th threshold areas, so that the non-volatile memory performs the second Stylized, The number of threshold areas between the threshold area where the voltage level is the lowest and the threshold area where the voltage level is the highest in the aforementioned two threshold areas is within two. The aforementioned memory controller, when the aforementioned non-volatile memory is subjected to the aforementioned second programming, is configured to combine the aforementioned second bit data and the aforementioned third bit data with respect to the aforementioned non-volatile memory For input. 如請求項1~3中之任一項所記載之記憶體系統,其中, 前述記憶體控制器,係以會使前述第17~第24臨限值區域中之前述第2位元之資料之值為相異的2個的臨限值區域之間之電壓準位之差成為較前述第1位元之資料之值為相異的2個的臨限值區域之間之電壓準位之差而更小並且成為較前述第4位元之資料之值為相異的2個的臨限值區域之間之電壓準位之差而更小的方式,來使前述非揮發性記憶體進行前述第1程式化。Such as the memory system described in any one of claims 1 to 3, wherein: The aforementioned memory controller is based on the voltage level difference between the two different threshold areas that will cause the value of the second bit in the 17th to 24th threshold areas to be different It becomes smaller than the voltage level difference between the two threshold regions that are different from the value of the data of the aforementioned first bit, and becomes 2 that is different from the value of the data of the aforementioned fourth bit. The voltage level difference between the two threshold regions is smaller, so that the non-volatile memory is subjected to the first programming. 如請求項4所記載之記憶體系統,其中, 前述記憶體控制器,係以會相較於前述第2位元之資料之值為相異的前述第1程式化時之2個的臨限值區域之間之間隔,而使對於前述2個的臨限值區域而藉由前述第3位元之資料來進行前述第2程式化所得到的4個的臨限值區域中之相鄰接之臨限值區域之間隔變得更廣的方式,來使前述非揮發性記憶體進行前述第2程式化。Such as the memory system described in claim 4, in which: The aforementioned memory controller is based on the interval between the two threshold regions at the time of the aforementioned first programming that are different from the value of the aforementioned second bit data, so that for the aforementioned two The threshold value area of the above-mentioned third bit data is used to carry out the above-mentioned second programming to obtain a way that the interval between adjacent threshold value areas of the four threshold value areas becomes wider , To make the aforementioned non-volatile memory carry out the aforementioned second programming. 如請求項1~3中之任一項所記載之記憶體系統,其中, 前述第1位元,係身為最下位之Lower位元,前述第2位元,係身為第2小之Middle位元,前述第3位元,係身為第2大之Upper位元,前述第4位元,係身為最上位之Top位元。Such as the memory system described in any one of claims 1 to 3, wherein: The aforementioned first bit is the lowest bit, the aforementioned second bit is the second smallest Middle bit, and the aforementioned third bit is the second largest Upper bit. The fourth bit mentioned above is the top bit. 如請求項1~3中之任一項所記載之記憶體系統,其中, 係具備有記憶前述第1~第4位元之資料的揮發性之第1記憶部, 在被記憶於前述第1記憶部中之前述第1~第4位元中的於前述第1程式化以及前述第2程式化時會被重複輸入的位元之資料,係在開始了前述第2程式化之後成為能夠廢棄或無效化,其以外的位元之資料,係在開始了前述第1程式化之後成為能夠廢棄或無效化。Such as the memory system described in any one of claims 1 to 3, wherein: It is the first memory section with volatility that memorizes the data of the first to fourth bits mentioned above, Among the first to fourth bits stored in the first memory section, the data of the bits that will be repeatedly input in the first programming and the second programming are the data of the bits that are repeatedly input when the first to the fourth bit is started. 2 After programming, it becomes discardable or invalidated, and the data of other bits becomes discardable or invalidated after the first programming is started. 如請求項1~3中之任一項所記載之記憶體系統,其中, 係具備有記憶前述第1~第4位元之資料的揮發性之第1記憶部;和 記憶前述第1~第4位元中之會在前述第1程式化以及前述第2程式化中而被重複輸入的位元之資料的非揮發性之第2記憶部, 被記憶於前述第1記憶部中之前述第1~第4位元之資料,係在開始了前述第1程式化之後成為能夠廢棄或無效化, 在被記憶於前述第2記憶部中之前述第1~第4位元中的於前述第1程式化以及前述第2程式化時會被重複輸入的位元之資料,係在開始前述第1程式化之前被記憶在前述第2記憶部中,並在開始了前述第2程式化之後成為能夠廢棄或無效化。Such as the memory system described in any one of claims 1 to 3, wherein: It is equipped with a volatile first memory section that stores the data of the first to fourth bits mentioned above; and The non-volatile second memory part that stores the data of the bits that will be repeatedly input in the first programming and the second programming in the first to fourth bits mentioned above, The data of the first to fourth bits stored in the first memory section can be discarded or invalidated after the first programming is started, Among the first to fourth bits stored in the second memory section, the data of the bits that will be repeatedly input during the first programming and the second programming are the data at the beginning of the first The programming is stored in the second storage section before the programming, and becomes discardable or invalidated after the programming of the second programming is started. 如請求項8所記載之記憶體系統,其中, 前述第2記憶部,係以字元線作為單位而被作設置。Such as the memory system described in claim 8, in which: The aforementioned second memory portion is provided in units of character lines. 如請求項1~3中之任一項所記載之記憶體系統,其中, 前述非揮發性記憶體內之前述複數之記憶體胞,係具備有被與第1字元線作連接之複數之第1記憶體胞、和被與和前述第1字元線相鄰接的第2字元線作連接之複數之第2記憶體胞, 前述記憶體控制器,係在對於前述複數之第1記憶體胞而使其進行了前述第1程式化之後,對於前述複數之第2記憶體胞而使其進行前述第1程式化,之後,對於前述複數之第1記憶體胞而使其進行前述第2程式化。Such as the memory system described in any one of claims 1 to 3, wherein: The plurality of memory cells in the non-volatile memory are provided with a plurality of first memory cells connected to the first character line, and a first memory cell adjacent to the first character line The second memory cell of the plural number connected by a 2-character line, The memory controller performs the first programming for the plurality of first memory cells, and then performs the first programming for the plurality of second memory cells, and then, The aforementioned plural number of first memory cells are subjected to the aforementioned second programming. 如請求項1~3中之任一項所記載之記憶體系統,其中, 前述非揮發性記憶體,係至少具備有使2以上的前述記憶體胞分別被作連接的第1字元線以及第2字元線, 前述記憶體控制器,係將對於被與前述第1字元線作連接的記憶體胞之前述第1程式化和對於被與前述第2字元線作連接的記憶體胞之前述第2程式化之連續的實行,藉由相連續的指令以及資料輸入來對於前述非揮發性記憶體下達指示。Such as the memory system described in any one of claims 1 to 3, wherein: The aforementioned non-volatile memory is provided with at least a first character line and a second character line connecting the two or more memory cells, respectively, The aforementioned memory controller is to convert the aforementioned first programming for the memory cell connected with the aforementioned first character line and the aforementioned second programming for the aforementioned memory cell connected with the aforementioned second character line The continuous implementation of transformation is to issue instructions to the aforementioned non-volatile memory through successive commands and data input. 如請求項1~3中之任一項所記載之記憶體系統,其中, 前述非揮發性記憶體,係具備有: 控制部,係基於將藉由前述第1程式化而被作了程式化的資料讀出所得到之資料、和在前述第1程式化以及前述第2程式化時被重複作輸入的前述第2位元之資料、以及藉由前述第2程式化而被作了程式化的前述第3位元之輸入資料,來決定藉由前述第2程式化而被作程式化的位元之資料之臨限值電壓。Such as the memory system described in any one of claims 1 to 3, wherein: The aforementioned non-volatile memory has: The control unit is based on the data obtained by reading out the data programmed by the first programming, and the second data repeatedly input during the first programming and the second programming. The bit data and the input data of the third bit programmed by the second programming described above determine the prominence of the bit data programmed by the second programming described above. Limit voltage. 如請求項12所記載之記憶體系統,其中,係具備有: 錯誤訂正部,係將藉由前述第1程式化而被作了程式化的資料讀出並進行錯誤訂正, 前述控制部,係基於藉由前述錯誤訂正部而作了錯誤訂正後的資料、和前述第2位元之資料、以及前述第3位元之輸入資料,來決定藉由前述第2程式化而被作程式化的位元之資料之前述臨限值電壓。For example, the memory system described in claim 12, which includes: The error correction department reads out the data that has been programmed through the above-mentioned first stylization and corrects errors. The aforementioned control unit is based on the data after the error correction by the aforementioned error correction unit, the aforementioned data of the second bit, and the aforementioned input data of the third bit, to determine the result by the aforementioned second stylization The aforementioned threshold voltage of the programmed bit data.
TW109125506A 2019-11-21 2020-07-29 memory system TWI752569B (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2019210823 2019-11-21
JP2019-210823 2019-11-21
JP2020113206 2020-06-30
JP2020-113206 2020-06-30

Publications (2)

Publication Number Publication Date
TW202121426A true TW202121426A (en) 2021-06-01
TWI752569B TWI752569B (en) 2022-01-11

Family

ID=75907742

Family Applications (3)

Application Number Title Priority Date Filing Date
TW109125506A TWI752569B (en) 2019-11-21 2020-07-29 memory system
TW112113035A TW202331729A (en) 2019-11-21 2020-07-29 memory system
TW110146228A TWI802140B (en) 2019-11-21 2020-07-29 memory system

Family Applications After (2)

Application Number Title Priority Date Filing Date
TW112113035A TW202331729A (en) 2019-11-21 2020-07-29 memory system
TW110146228A TWI802140B (en) 2019-11-21 2020-07-29 memory system

Country Status (3)

Country Link
JP (1) JP7414669B2 (en)
CN (2) CN116954520A (en)
TW (3) TWI752569B (en)

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4090570B2 (en) * 1998-06-02 2008-05-28 株式会社ルネサステクノロジ Semiconductor device, data processing system, and nonvolatile memory cell threshold value changing method
JP2013089082A (en) * 2011-10-19 2013-05-13 Toshiba Corp Memory controller, semiconductor storage system and memory control method
US8913437B2 (en) * 2011-12-15 2014-12-16 Marvell World Trade Ltd. Inter-cell interference cancellation
JP6262063B2 (en) * 2014-03-18 2018-01-17 東芝メモリ株式会社 Nonvolatile memory and writing method
US9659636B2 (en) * 2014-07-22 2017-05-23 Peter Wung Lee NAND memory array with BL-hierarchical structure for concurrent all-BL, all-threshold-state program, and alternative-WL program, odd/even read and verify operations
KR102128406B1 (en) * 2014-09-26 2020-07-10 삼성전자주식회사 Storage device and operating emthod of storage device
JP6539608B2 (en) * 2016-03-15 2019-07-03 東芝メモリ株式会社 Semiconductor memory device
JP2018005959A (en) * 2016-06-30 2018-01-11 東芝メモリ株式会社 Memory system and writing method
JP2019057352A (en) * 2017-09-21 2019-04-11 東芝メモリ株式会社 Memory system
JP2019057350A (en) * 2017-09-21 2019-04-11 東芝メモリ株式会社 Semiconductor memory
US20190034105A1 (en) * 2017-12-28 2019-01-31 Intel Corporation Storage device having programmed cell storage density modes that are a function of storage device capacity utilization

Also Published As

Publication number Publication date
TW202331729A (en) 2023-08-01
TWI802140B (en) 2023-05-11
CN112825026B (en) 2023-08-18
JP7414669B2 (en) 2024-01-16
CN116954520A (en) 2023-10-27
JP2022002160A (en) 2022-01-06
CN112825026A (en) 2021-05-21
TWI752569B (en) 2022-01-11
TW202213363A (en) 2022-04-01

Similar Documents

Publication Publication Date Title
KR102102224B1 (en) Storage and programming method thereof
TWI760795B (en) memory system
JP2020035504A (en) Memory system
US8773907B2 (en) Reading memory cell history during program operation for adaptive programming
JP2018005959A (en) Memory system and writing method
US8964467B1 (en) Systems and methods for partial page programming of multi level cells
US11322206B2 (en) Storage device and operating method thereof
WO2007116393A2 (en) Method for generating soft bits in flash memories
US11238924B2 (en) Nonvolatile memory multilevel cell programming
JP2009272016A (en) Flash memory system
TW202113828A (en) Semiconductor memory device
TWI802140B (en) memory system
US11056200B2 (en) Nonvolatile memory device and method of controlling initialization of the same
US20230152991A1 (en) Storage devices and methods of operating storage devices
JP2007193885A (en) Write method for multi-level flash memory
JP2021149990A (en) Memory system
CN116126582A (en) Memory controller for managing strong error information and operating method thereof