Embodiment
Memory architecture and operation thereof
At first referring to Figure 1A, flash memory comprises memory cell array and controller.Shown in example in, two integrated circuit (IC) apparatus (chip) 11 and 13 comprise array of memory cells 15 and various logic circuitry 17.Logical circuit 17 is situated between by the controller 19 on data, order and status circuit and the independent chip and connects, and also provides addressing, data transfer and sensing and other support to array 13.The number of memory array chip can be one to a plurality of, and memory capacity that is provided is provided for this.The part of controller and whole array alternately is combined into the single integrated circuit chip, but this be not at present economic replacement scheme.
Typical control device 19 comprises microprocessor 21, mainly in order to the ROM (read-only memory) (ROM) 23 of storing firmware be mainly used in interim storage and be written to memory chip 11 and 13 or the memory buffer (RAM) 25 of the user data that therefrom reads.Circuit 27 is situated between with memory array chip and connects, and circuit 29 connects with main frame Jie by coupling part 31.In this example, the circuit 33 that is exclusively used in Accounting Legend Code by use calculates the integrality that ECC come specified data.When user data is transferred to flash memory array for when storage from main frame, circuit calculates ECC from data, and described code storage is in storer.When reading described user data after a while from storer, it is once more by circuit 33, and described circuit 33 is by identical algorithm computation ECC, and with described code with comparing as calculated and with code that data are stored.If it is suitable, then confirm the integrality of data.If its difference, then can according to the specific ECC algorithm that is utilized discern and proofread and correct those mistakes the position, the number of the error bit of discerning and proofreading and correct can reach the number that algorithm is supported.
The coupling part 31 of the storer of Figure 1A and the coupling part 31 of host computer system ' match, provide the example of coupling part among Figure 1B.The main frame of Figure 1A and the data transfer between the storer are to be undertaken by interface circuit 35.Typical main frame also comprises microprocessor 37, is used for the ROM 39 and the RAM 41 of storing firmware code.Other circuit and subsystem 43 comprise the high capacity magnetic data storage storage disk drive usually, are used for the interface circuit of keyboard, monitor etc., and this depends on specific host computer system.Some examples of this kind main frame comprise desk-top computer, laptop computer, handheld computer, palmtop computer, PDA(Personal Digital Assistant), MP3 and other audio player, digital camera, video camera, electronic game machine, wireless and wire telephony device, answer phone, sound-track engraving apparatus, network router etc.
The storer of Figure 1A can be configured to can with the main frame of Figure 1B the small enclosed card that contains controller and all memory array circuit devices thereof with the removable form that is connected.That is to say that the coupling part 31 and 31 that matches ' permission card can be removed and be connected and move to another main frame, perhaps receive main frame and replaced by another is linked.Perhaps, memory array devices can be enclosed in the independent card, described card can electricity and mechanical system and contain controller and the card connection of coupling part 31.As further replacement scheme, the storer of Figure 1A can be embedded in the main frame of Figure 1B, wherein coupling part 31 and 31 ' be is permanent makes.In the case, storer encloses in the thing together with the envelope that other assembly is included in main frame usually.
Fig. 2 illustrates the part of memory array, wherein memory cell is grouped into erase blocks, and the unit in each erase blocks can be wiped free of usually simultaneously together, as the part of single storage operation.Erase blocks is the minimum unit of erase in this type storer.
The big I of the individual memory cell erase blocks of Fig. 2 changes, but a kind of form of commercial practice comprises the individual data sector in individual erase.The content of this kind of explanation data sector among Fig. 3.User data 51 is generally 512 bytes.Except user data 51, also has overhead data, it comprises the ECC 53 that calculates from user data, with sector data and/or relevant parameter 55 of the erase blocks of the sector of wherein programming and the ECC 57 that calculates from parameter 55, and any overhead data that other can comprise.
The flag that also can comprise one or more indication situations or state in the parameter 55.Also can be used to the indication of programming and/or wiping the voltage level of erase blocks in parameter 55 stored, these voltages upgrade along with the variation of the number of cycles of erase blocks experience and other factors.Under the defective situation of original erase blocks, other example of parameter 55 comprise any defective unit in the erase blocks identification, be mapped to the logical address of the erase blocks in this physical erase block and the address of any alternative erase blocks.The particular combinations of the parameter of using in any accumulator system 55 will change according to design.In addition, some or all overhead data can be stored in the erase blocks that is exclusively used in this kind function, rather than be stored in and contain in user data or the erase blocks relevant with overhead data.
Different with the individual data sector erase block of Fig. 2 is many sector erase block of Fig. 4.Example erase blocks 59 remains minimum unit of erase, and it contains four page or leaf 0-3, and wherein each page or leaf is minimum unit of program.One or more both host data sectors are stored in each page or leaf together with overhead data usually, and described overhead data comprises ECC that can calculate and the form that can adopt the data sector of Fig. 3 at least from sectors of data.
The data that rewrite whole block are usually directed to new data is programmed in the block of erase blocks Ji Qu, then wipe original block and place it in the scratch set district.When the data of all pages that are less than block when upgrading, usually data updated is stored in the page or leaf from the block of erase blocks Ji Qu, and the data in will remaining unaltered page copy to the new block from original block.Then wipe original block.This big block management changes in technology form comprises data updated is write in the page or leaf of another block, and need not to remove data or wipe original block from original block.This causes a plurality of pages or leaves to have same logical address.By certain easily technology discern nearest data page, for example be recorded as the programming time of sector or the field of page or leaf in the overhead data.
Another many sector block of explanation are arranged among Fig. 5.Herein, the total memory cell array is divided into two or more planes physically, four plane 0-3 of explanation among the figure.Each plane is the subarray of memory cell, and it has himself data register, sensor amplifier, addressing demoder and analog, operates so that can be independent of other plane largely.All planes can be provided on single integrated circuit device or the multiple arrangement, an example is to form each plane from one or more different integrated circuit (IC) apparatus.Each block in the instance system of Fig. 5 contains 16 page or leaf P0-P15, and each page has the capacity of, two or more both host data sectors and some overhead data.
The another memory cell arrangement of explanation among Fig. 6.A large amount of cell erasure blocks is contained on each plane.In order to improve the degree of concurrence of operation, the erase blocks in the Different Plane is logically linked to form first block.Among Fig. 6 a this first block is illustrated as by the erase blocks 3 on plane 0, the erase blocks 1 on plane 1, the erase blocks 1 on plane 2 and the erase blocks 2 on plane 3 and forms.Each first block addressing logically, and Memory Controller distributes and keep tracking to the erase blocks that forms the individual metablocks block.Host computer system is that unit and accumulator system are situated between and connect with the data of the capacity that equals the individual metablocks block preferably.For instance, the logical block addresses (LBA) of the physical blocks numbering (PBN) by being mapped as the block of forming first block by controller is discerned this kind logical data block 61 of Fig. 6.All erase blocks of unit's block are wiped together, and preferably programme simultaneously and read from the page or leaf of each erase blocks.First block can be considered as the erase unit in the system that erase blocks links in this way.Have in the memory array of first block framework at some, page or leaf may be only and other page multiple programming of first block.In these memory arrays, metapage is the minimum unit of program of first block, and it is made up of the page or leaf from each plane of first block.
There are many different memory array architecture, configuration and discrete cell structures to can be used to make up the above storer of describing about Fig. 2-6.An erase blocks showing the memory array of NAND type among Fig. 7.Being connected between one among the common source 65 of voltage Vss and the bit line BI0-BLN to be listed as directed polyphone in a large number of the memory cell that is connected in series, described bit line BL0-BLN is connected with the circuit 67 that contains analogs such as address decoder, driver, sensor amplifier again.Specifically, this kind string contains charge-storage transistor 70,71 ... 72 and 74, described charge-storage transistor is connected in series between the selection transistor 77 and 79 of the relative end of string.In this example, each string contains 16 memory transistors, but other number also is possible.Word line WL0-WL15 extends across a memory transistor of each string, and is connected to the circuit 81 of the voltage source driver that contains address decoder and word line.Voltage on the line 83 and 84 is controlled in the erase blocks all together and was ganged up it and select being connected of transistor AND gate voltage source 65 and/or bit line BL0-BLN.Data and address are from Memory Controller.
Each row charge-storage transistor (memory cell) of erase blocks can form the page or leaf of programming together and reading.Suitable voltage is applied to the word line (WL) of this kind page or leaf so that its data are programmed or read, simultaneously the voltage that is applied to the residue word line is selected so that its memory transistor conducting separately.In programming or read in the process of delegation's (page or leaf) memory transistor,, can upset the previously stored charge level on the unchecked row owing to crossing all strings and being applied to the cause of the voltage of its word line.This may stop after to the programming of the unit in the particular row programmes to other unit of described row.The multimode flash memory is responsive especially to upsetting.The increase of logic state number can cause the threshold voltage ranges of individual states narrower, makes the less variation of charge level may cause logic state to change.Because by using the logic state that increases number in the unit to improve the density of data storage, so also can increase for the susceptibility of upsetting.Therefore, program data in other unit of described row under the data conditions after perhaps can not some unit in delegation being programmed in not destroying programmed cells.Therefore, can define the size of page or leaf from the upset of follow-up programming to adjacent cells.If may not programme after being programmed with other unit in the delegation in the unit in the row, just row defines minimum unit of program so.Therefore, the delegation unit may contain a data page.In this kind memory array, if the row in cell group through the programming, even so the row in some unit do not contain data also described row is considered as through the programming.If in memory array, there is the dummy cell that to programme subsequently, will be poor efficiency so.
It is less to come from the number of sectors that accumulator system once receives through the dummy cell in the page or leaf of programming.For instance, main frame may send single sector to accumulator system.Described sector is stored in the page or leaf of flash memory array.The sector prevention writes the follow-up of this page.Preserve in the accumulator system of a plurality of sectors at page or leaf, this may be a poor efficiency.For instance, comprise at one page under the situation of four data sectors, remain sky in the part of preserving three data sectors that when page or leaf writes single sector, makes memory array.When the size of page or leaf increases, come the wasting space of the page or leaf that part since then is filled to increase.Metapage may contain a large amount of sectors, and therefore storage may special poor efficiency in the memory array of using first block.Under the situation of the number of sectors that receives two or more sectors but receive less than the number of sectors in the page or leaf, problem is similar.This part page or leaf can be stored in the high speed temporary storage block, till receiving whole data page.
After writing the data page that is filled of part, can carry out the data of storage and merge, with the synthetic page or leaf that is full of of data set of the page or leaf that will be filled from part.This part that can be used as the refuse collection of periodically carrying out is carried out.This kind data merge page copy that data are filled from part and are full of page or leaf to the different erase blocks.Then, it is out-of-date that the erase blocks of preserving the page or leaf that partly is filled is labeled as, and it can be wiped free of and re-use.This kind operation may take the system resource that can be used for other function.
The example that the single sector of storer is write
Fig. 8 is illustrated in the erase blocks (active block 800 of appointment) of one page by the memory array in the accumulator system of four data set of sectors one-tenth.Page or leaf 0-5 is shown as each page or leaf and extends in the horizontal direction.Each page or leaf can contain four data sectors, and it is appointed as sector 0, sector 1, sector 2 and sector 3.Main frame sends to accumulator system with the individual data sector, and described data sector is stored in the active block 800.Receive sector X and it is stored as the sector 0 of page or leaf 0.This prevention is carried out later programmed to page or leaf 0.Therefore, the sector 1,2 and 3 of page or leaf 0 is not programmed and remains sky (wiping).After page or leaf 0 is programmed, receive sector X+1.Sector X+1 is stored as the sector 0 of page or leaf 1.The sector 1,2 and 3 of page or leaf 1 remains sky.After sector X+1 is programmed, receive sector X+2.Sector X+2 is stored as the sector 0 of page or leaf 2.The sector 1,2 and 3 of page or leaf 2 remains sky.After sector X+2 is programmed, receive sector X+3.Sector X+3 is stored as the sector 0 of page or leaf 3.The sector 1,2 and 3 of page or leaf 3 remains sky.
Fig. 9 is illustrated in the alternative of memory sector in the erase blocks (active block 900 of appointment)., replace one page only to store a sector herein, but previously stored sector is copied in the new page or leaf in its stored same erase blocks in sector that receives with nearer the time.With sector X and the same page or leaf 0 the sector 0 that is stored as before.Then, receive X+1 and its sector X with the sector 0 that copies page or leaf 1 from page or leaf 0 to is stored as the sector 1 of page or leaf 1.Therefore, sector X and sector X+1 all are stored in the page or leaf 1.Subsequently, receive sector X+2, and it is stored as the sector 2 of page or leaf 2.Sector X is stored as the sector 0 of page or leaf 2, and sector X+1 is stored as the sector 1 of page or leaf 2.Therefore, sector X, X+1 and X+2 are stored in the page or leaf 2 together.Subsequently, receive sector X+3, and it is stored as the sector 3 of page or leaf 3.Sector X is stored as sector 0, sector X+1 is stored as sector 1, and sector X+2 is stored as the sector 2 of page or leaf 3.Therefore, four data sector storage in page or leaf 3, data have been full of in the feasible page or leaf 3.
After the storage of in Fig. 8 or Fig. 9, showing to the sector, but pooled data.Sector X, X+1, X+2 or the X+3 of Fig. 8 or Fig. 9 can be copied to the single page or leaf of new erase blocks.This can the part as refuse collection carry out when being convenient to carry out refuse collection.Figure 10 A shows among sector X, X+1, X+2 and the X+3 in the page or leaf 0 of the active block 1000 be stored in appointment.Data have been full of in the page or leaf 0 of erase blocks 1000.When page or leaf 0 usefulness sector X, X+1, X+2 and the X+3 of active block 1100 programme, can from erase blocks, wipe sector X, X+1, X+2 and X+3 as its copy source.When the content of merger activity block during refuse collection 800,900, can wipe active block 800,900 and make it can be used for storing new data.
After page or leaf 0 is programmed, receive sector X+4 and it is stored as the sector 0 of the page or leaf 1 of active block 1000.Then, receive separately sector X+5, X+6 and X+7 and with its be stored in respectively the page or leaf 2,3 and 4 in.May need to merge the sector once more sector X+4, X+5, X+6 and X+7 are merged to single page or leaf.This kind to the sector merges the meeting spended time, may not can during it writes host data.After for the second time data being merged to another erase blocks, will be labeled as out-of-date as the erase blocks 1000 in its copy source and it can be wiped subsequently.
Figure 10 B is illustrated in the active block 1010 after for the second time garbage collection operations will be reorientated from the data of last active block 1000.Sector X+4 is merged in the single page or leaf (page or leaf 1) of active block 1010 to X+7.Subsequently, can receive more sector, and it can be stored in the active block 1010.If described sector is to receive with the form of single sector, then can as before with single sector storage in page or leaf.
Figure 10 C shows extra sector X+8 is stored in active block 1010 among page 2-5 to X+11.May need another garbage collection operations to merge sector X+8 at this point to X+11.Therefore, for the sector storage that will receive from main frame effectively as single sector, the method is used repeatedly garbage collection operations, it need transfer to another erase blocks from an erase blocks with data, and wipes first erase blocks.In bigger erase blocks, the number of garbage collection operations is bigger.In the accumulator system of using first block, group of erase blocks can be linked at together, make it to wipe together and to programme.Data can be programmed in the metapage that contains many sectors.Therefore, because the cause of the refuse collection of necessary amounts, store the single sector very poor efficiency that becomes.
Figure 11 A shows the alternative method of storage data.Figure 11 A shows two erase blocks of memory array.Active block 1110 is that wherein data can be used for the erase blocks of longer-term storage through programming.High speed temporary storage block 1120 is that wherein data can be used for the erase blocks of short-term storage through programming.When receiving small number of sectors, at first it is stored in the high speed temporary storage block 1120.The sector continues to be stored in the high speed temporary storage block 1120, till receiving the sector that enough is full of a page data.Then these sectors are copied to one page of active block 1110.
Receive sector X, and with it as the sector 0 that is programmed for the page or leaf 0 in the high speed temporary storage block 1120 before.Subsequently, receive sector X+1, and its sector X with the sector 0 that copies page or leaf 1 to is stored as the sector 1 of the page or leaf 1 of high speed temporary storage block 1120.Subsequently, receive sector X+2, and with its sector 2 that is stored as the page or leaf 2 of high speed temporary storage block 1120, wherein sector X and X+1 are stored as the sector 0 and the sector 1 of page or leaf 2 respectively.After sector X+2 is stored in high speed temporary storage block 1120, receive sector X+3.At this some place, sector X, X+1, X+2 and X+3 are written to the page or leaf 0 of active block 1110.These four sectors form a whole data page.Therefore, sector X, X+1, X+2 and X+3 are stored in the page or leaf 0 of active block 1110 effectively.Subsequently, receive sector X+4, X+5, X+6 and X+7 separately.Sector X+4, X+5 and X+6 are stored in the page or leaf 3,4 and 5 of high speed temporary storage block 1120, and when receiving sector X+7, above three sectors are copied in page 1 the sector 0,1 and 2 of active block 1110.Sector X+7 directly is programmed into the sector 3 of the page or leaf 1 of active block 1110.At this some place, high speed temporary storage block 1120 does not have can supply to store the page or leaf that data are used, and can be appointed as and prepare to wipe (out-of-date).New erase blocks can be appointed as and be used for next sector that will receive or the high speed temporary storage block of next sector group.Though this examples show is just receiving single sector, the method also can be used for sector group, and the sector that wherein said sector group has is less than the number of the sector in one page.In addition, though above examples show writes active block with data from high speed temporary storage block with maximum parallelism degree, can carry out this less than the degree of parallelism of maximum parallelism degree and write and still provide the efficient benefit.Therefore, the sector is write high speed temporary storage block, and it is write another block, so that the refuse collection of lower frequency can be clogged and need to data more thick and fast with higher degree of concurrence with a kind of degree of concurrence.
Also can in the memory array of using first block, use high speed temporary storage block.For instance, Figure 11 B shows two first blocks: active block 1130 and high speed temporary storage block 1140.Active block 1130 and high speed temporary storage block 1140 all have four planes, are expressed as plane 0-3.The width on each plane is a sector, thereby four sectors of storage in the metapage of block 1130 or 1140.These two blocks all have 6 metapages, are expressed as metapage 0-5.Be used for storing effectively the technology of data with above described identical about erase blocks.Accumulate the sector in high speed temporary storage block 1140, end up to there being whole data metapage to be available as, be programmed into active block 1130 with whole metapage this moment.For instance, when receiving sector X+3, whole metapage (sector X, X+1, X+2 and X+3) is programmed into the metapage 0 of active block 1130.Metapage can have the plurality destination sector, can be some pages or leaves because first block can have the width on many planes and plane.Above-mentioned technology is valuable especially for the big metapage of this kind because not like this big quantity space in the memory array will be wasted.As about shown in Figure 11 A and the 11B, of the present inventionly also can be applicable to first block framework and vice versa about the described aspect of example of using the erase blocks framework.According to the configuration of memory array, erase blocks or first block can be indicated in term " block ".In either case, block is the erase unit of using in this configuration.Similarly, term " page or leaf " can refer to the interior page or leaf of single erase blocks or the metapage of first block.In either case, page or leaf all is unit of program of described configuration.
Under situation about receiving, the sector directly can be programmed into the active block of memory array, and need not at first it to be stored in the high speed temporary storage block more than the sector group of the number of sectors in one page.Therefore, whole page data directly is programmed into active block with higher degree of concurrence, simultaneously the partial data page or leaf is programmed into high speed temporary storage block with lower degree of concurrence, write active block up to its part that can be used as whole page or leaf program.Controller can be determined the destination of particular sector or sector group.Not only comprised the part page or leaf and write but also comprise under the situation that whole page or leaf writes sector group being write active block, and whole page or leaf can have been write active block, and the part page or leaf can be write high speed temporary storage block.
Figure 12 A shows wherein another example that stands to upgrade when sector from main frame is in being stored in high speed temporary storage block.Receive the first sector X0, and it is stored in the page or leaf 0 of high speed temporary storage block 1250.Four data sectors of page or leaf storage in this example.Then receive substituting of X0, it is shown as X1.Sector in this example is numbered according to its logical address, and indicates with subscript whether described sector is renewal, and if then which version indication is.Therefore, sector X1 be have the sector of logical address X and for this reason the sector first upgrade version.It is to have same logical address with X0 but the data sector that may contain the different pieces of information that reflects a certain lastest imformation.Sector X1 is write the page or leaf 1 of high speed temporary storage block 1250.Controller keeps the tracking to current sector and out-of-date sector.In high speed temporary storage block 1250, the sector have specific logic address write recently the copy be current version.Any other version all is out-of-date.Therefore, when X1 was programmed, X0 became out-of-date.After receiving sector X1, receive sector (X+1) 0.This is the sector X1 sector afterwards of continuing in logic.Sector X1 and (X+1) 0 all write the page or leaf 2.Subsequently, replace sector (X+1) 0 by (X+1) 1.This is the renewal version that replaces the sector (X+1) 0 of sector (X+1) 0.Sector (X+1) 1 write page or leaf 3 with sector X1.Subsequently, receive (X+2) 0, and it is write page or leaf 4.Replace sector (X+2) 0 by (X+2) 1 subsequently, and write page or leaf 5 with sector X1 and sector (X+1) 1.Subsequently, receive sector (X+3) 0.Therefore, data page (sector X1, (X+1) 1, (X+2) 1 and (X+3) 0) is available.With X1, (X+1) 1, (X+2) 1 with (X+3) 0 write the block that is designated as active block 1252.With sector X1, (X+1) 1, (X+2) 1 and (X+3) 0 degree of parallelism that writes with whole page or leaf write active block 1252.This is at the degree of parallelism that is maximum possible in such cases.Therefore, though with lower degree of concurrence with sector X1, (X+1) 1, (X+2) 1 with (X+3) 0 write high speed temporary storage block 1250, still it is write active block 1252 subsequently with higher degree of concurrence.This means sector X1, (X+1) 1, (X+2) 1 and (X+3) 0 more effectively be stored in the active block.More effective storage can cause essential refuse collection more not frequent, therefore improves performance.
In Figure 12 B, provide alternate example.That shows among this example and Figure 12 A is similar, but sector (X+3) herein
0Before copying active block 1252 to, be stored in the high speed temporary storage block 1250.This allows with sector (X+3)
0Before writing active block 1252 it is upgraded.Show among the figure and pass through by sector (X+3)
1Substitute and upgrade sector (X+3)
0Can be with data page (the sector X that is full of
1, (X+1)
1, (X+2)
1(X+3)
1) be kept in the high speed temporary storage block 1250, make it prepare to upgrade, till a certain trigger event takes place.In the case, receive sector (X+4)
0, thereby trigger event is provided.At this some place, write sector X to active block 1252 with maximum parallelism degree
1, (X+1)
1, (X+2)
1(X+3)
1With sector (X+4)
0Write next the available page or leaf (page or leaf 8) in the high speed temporary storage block 1250.
Figure 12 C shows more another example of new data of use high speed temporary storage block 1250.With data sector X
0To (X+15)
0Be stored in the original block 1254.Main frame sends sector (X+6)
1, it is and sector (X+6)
0Sector with renewal of same logical address.Therefore, sector (X+6)
1To replace (X+6)
0In order to replace sector (X+6)
0, the page or leaf 1 of original block 1254 (is contained sector ((X+4)
0) to (X+7)
0) and sector (X+6)
1Make up, and described combination is write the page or leaf 0 of high speed temporary storage block 1250.Making up these sectors may occur in random access memory (for example controller RAM 25) or can carry out in being connected to the memory register of memory array.The page data that upgrades can remain in the high speed temporary storage block 1250, and need not to be written into active block and continue for some time.In the sector (X+5) that receives follow-up renewal from main frame
1Situation under, can be by with sector (X+5)
1Sector (X+4) together with copy
0, (X+6)
1(X+7)
0Another page or leaf (in the case for page or leaf 1) that writes high speed temporary storage block 1250 together comes in high speed temporary storage block 1250 more new data.Can carry out repeatedly renewal in this way to the data page in the high speed temporary storage block 1250.By replacing the data updated sector and unaltered data sector copy is carried out renewal in the new page or leaf of high speed temporary storage block 1250.The sector of copy copies in same plane, so that can carry out copy effectively.Subsequently, can be with the active block 1252 of data updated page copy in the memory array.Can carry out non-renewal in proper order in this way, and need not chaotic update blocks.For instance, in above example, receive the sector (X+6) of renewal in non-mode in proper order
1(X+5)
1, but active block 1252 is in proper order.Can in high speed temporary storage block, preserve and upgrade a plurality of data pages in this way simultaneously.When expected update page or leaf no longer, can be with this page copy to active block.
The example of multi-level-cell programming
The storer of particular type can be divided into two above level by the threshold voltage ranges with the floating gate memory unit, and stores an above data bit in each unit of memory array.Figure 13 show can be how to the example of this kind multi-level-cell (MLC) memory program with a plurality of threshold voltages that expression Different Logic state is provided.Show four different threshold voltages among the figure, be labeled as A, B, C and D.A plurality of unit are programmed for each voltage.Number of unit is wherein represented in the distribution of Figure 13 representative unit state on Z-axis.Each threshold voltage A, B, C and the different logic state of D representative.Described four kinds of states are represented two data bit, and are as directed, and a position is from lower page of data, and a position is from upper data page.In some example, can at first programme to lower page.After to the lower page programming, the unit is in state A or B.Subsequently, can programme, make the unit remain state A or B (for upper part=1) or be modified as state C or D (for following position=0) upper page.Because each all has narrow relatively voltage window these four kinds of states, so the MLC storer suffers corrupted data because of the relatively little variation of threshold voltage especially easily.In some example, it may be favourable that the upper and lower page or leaf is programmed simultaneously.This may help to reduce because of the programming to adjacent cells causes corrupted data in the unit, for example the corrupted data that may can occur during to the upper page data programming.
Figure 14 shows how to use high speed temporary storage block 1460 to reduce the example of corrupted data in the MLC storer.Both all are shown as the block of MLC storer to Figure 14 with active block 1462 and high speed temporary storage block 1460.All through numbering and be shown as " top " or " bottom ", this depends on the data bit of using which threshold voltage state to come memory page to the page or leaf of described two blocks.In this example, storer at first receives sector X to X+3, and with these sector storage in the lower page 0 of high speed temporary storage block 1460.Subsequently, storer receives sector X+4 to X+7.At this moment, lower page (sector X is to X+3) and upper page (X+4 is to X+7) are write active block 1462 simultaneously.This can be avoided the lower page 0 of active block 1462 to damage during the programming of the upper page 0 of active block 1462.Usually, the upper and lower page or leaf is programmed time necessary together with only identical to upper page programming time necessary separately, thereby this system does not have the loss of time.Using sector X after the lower page 0 and upper page 0 programming of X+7, receive sector X+8 and be programmed into the upper page 0 of high speed temporary storage block 1460 to X+11 and with it to active block 1462.When receiving sector X+12, sector X+8 is arrived the upper page 1 and the lower page 1 of active block to the X+15 multiple programming to X+11 and sector X+12 to X+15.As shown in the figure, follow-up data sector is continued this system.Therefore, data page is write high speed temporary storage block 1460, and subsequently this page or leaf is write active block 1462 with additional page, as the upper and lower page or leaf of the same group of memory cell.The depth of parallelism with page or leaf is programmed to high speed temporary storage block 1460, with the depth of parallelism that doubles page or leaf active block 1462 is programmed simultaneously.
In alternate embodiment, can the upper and lower page or leaf be write active block at different time, but will in high speed temporary storage block, keep the copy of lower page, in case the lower page in the active block becomes damage during the programming of upper page.In Figure 14, can receive sector X and be programmed into the lower page 0 of active block 1462 and the lower page 0 of high speed temporary storage block 1460 simultaneously to X+3 and with it.Subsequently, receive sector X+4, and it is programmed into the upper page 0 of active block 1462 to X+7.In high speed temporary storage block 1460, do not preserve sector X+4 to X+7.If have any problem (for example losing electric power) at the upper page 0 programming X+4 to active block 1462 during X+7, the data in the lower page 0 of active block 1462 may be damaged so.That is to say that the threshold voltage of positive programmed unit can make its state that no longer is in the data of representing lower page through revising, but do not programmed fully as yet and become the state of the data of representing upper page.For instance, just the unit that is programmed for state D of the state A from Figure 13 may be in state B or C when programming stops.If data are damaged in this way, the upper data page that so just is being written into can be recovered from the position in its copy source.Yet, in many cases, do not have other copy of lower page.Yet the copy of reservation lower page in high speed temporary storage block 1460 is till the programming of finishing upper page.Therefore, there is the copy that is not damaged of lower page, and can uses described copy to recover the data of lower page.
The example of a plurality of files
Can with from the data storage of an above host data file in single block.Interruption between the file may take place in page or leaf, and the part of feasible page or leaf contains the data from a file, and the part of page or leaf contains the data from another file.The page or leaf 0 that Figure 15 shows original block 1570 contains from the data of first file (file 1) and page or leaf i+1 to page or leaf i-1 and contains example from the data of second file (file 2) to page n-1.The page or leaf i contain from the sector (i*4) of file 1 and (i*4)+1 and from the sector (i*4)+2 of file 2 with (i*4)+3.The sector of file 2 is added top shadow, have sector from two files with explanation.
Figure 15 shows the file 2 that is updated to new block 1572.First page (page or leaf 0) of new block 1572 writes with the content of the page or leaf i of original block 1570.Therefore, the page or leaf 0 of new block 1572 contains from both sectors of file 2 and file 1.From the sector (i*4) of file 1 with (i*4)+1 be not updated, but can be copied, so that the data page that programming is full of at this some place.The remainder of the file 2 that upgrades is programmed into the page or leaf 1 to i-1 of new block 1572.Subsequently, updating file 1.Sector 0 is stored in page i in page or leaf n-1 to sector (i*4)-1.Yet, sector (i*4) and (i*4)+1 also be the part of file 1 and must be updated.Because new block 1572 is full at this some place, so with the sector (i*4) upgraded with (i*4)+1 be programmed into another block.Subsequently, can with sector (i*4) and (i*4)+1 and the sector in the new block 1572 merge to single block as the part of garbage collection operations.Yet, this meeting spended time and system resource, and generally speaking be undesirable.
Figure 16 shows the substitute technology from the sector of the original block 1570 of the sector of two different files of containing be used to upgrade Figure 15.This technology uses high speed temporary storage block 1674 to come the sector of storage update, up to maximum parallelism degree that can system with its as the renewal that is full of page part write fashionable till.When updating file 2, with the sector (i*4)+2 upgraded with (i*4)+3 write high speed temporary storage block 1674., it is write the page or leaf 0 of high speed temporary storage block 1674 herein, and any data are not write the remainder of page or leaf, make and use lower degree of concurrence.The residue sector of file 2 (sector (i*4)+4 is to N-1) copies the page or leaf 0 to n-i of new block 1676 to.Use maximum parallelism degree that all these sectors are write and write with whole page or leaf.Subsequently, updating file 1.With maximum parallelism degree sector 0 is programmed into page n-i+1 in n-2 to (i*4)-1.Then, with copy sector (i*4)+2 with (i*4)+3 concurrently with the sector (i*4) of file 1 with (i*4)+1 write page n-1 of new block 1676.Therefore, the renewal copy that originally was kept at all sectors in the original block 1570 is kept in the new block 1676 now, and does not preserve any outdated data in new block 1676.Generally speaking need not block (for example new block 1676) is carried out refuse collection.With each page or leaf of the degree of parallelism of maximum programming new block 1676, in block, to realize maximum packing density.Sector in the high speed temporary storage block 1674 (i*4)+2 and (i*4)+3 can be labeled as at this some place out-of-date.Yet high speed temporary storage block 1674 need not garbage collection operations and promptly can be used for further operation, because high speed temporary storage block is conventionally not only containing current data but also contain outdated data.
Store the example of non-sequential sectors of data
In some examples formerly, data sector is write high speed temporary storage block with the degree of concurrence that is lower than the degree of concurrence that writes whole page or leaf.In this kind example, the remaining space in the page or leaf that just is being written into of high speed temporary storage block may remain empty, because can not upset under the data conditions of having stored its programming after a while.In some cases, can use this as the space of sky and the program bandwidth that originally is not used extraneous data to be stored in in one page originally.For instance, receive under the situation of the single sector be less than one page or the host data in the sector group in accumulator system, these both host data sectors may be stored in the high speed temporary storage block, are in the page or leaf of also preserving extraneous data (for example Wu Guan host data or control data sector).Similarly, have extra sector storage in same high speed temporary storage block page or leaf from just being stored in the high speed temporary storage block for the sector of storing as the part of whole page or leaf after a while of file beginning, described extra sector logically is incoherent.
Figure 17 shows the same example that is stored in the high speed temporary storage block 1780 in sector X, X+1 and X+2 and the previous example.Yet, preserve herein sector X, X+1 and X+2 high speed temporary storage block the page or leaf in remaining space be used for storing other data.Sector Y, Y+1 and Y+2 are stored in the page or leaf 0 with sector X.Sector Y, Y+1 and Y+2 may be logically irrelevant with sector X, X+1 and X+2.It may be trooped from another host data file or from another sector in the identical file.Sector Y, Y+1 and Y+2 may concern in proper order with sector X, X+1 and X+2 right and wrong, and may separate in logical address space.Similarly, sector Z and Z+1 are stored in the page or leaf 1 with sector X and X+1.Sector Z and Z+1 are may be logically all irrelevant with sector X, X+1 and X+2 and sector Y, Y+1 and Y+2.Subsequently, when receiving sector X+3, sector X, X+1, X+2 and X+3 are write subsequently the page or leaf of another block.When receiving sector Y+3, sector Y, Y+1, Y+2 and Y+3 are write the page or leaf of another block.Therefore, can with irrelevant data storage in same one page of high speed temporary storage block to use available resources more effectively.
Figure 18 shows another example that is stored in the extraneous data in the high speed temporary storage block 1890.Herein, sector X, X+1 and X+2 are as storage before and renewal.Yet sector Y also is parallel storage and upgrades herein.The sector of upgrading is represented by the subscript of which version of indication storage.For instance, sector X
0Be the prototype version of sector X, and X
1Be that first of sector X upgrades version.Sector Y may be the both host data sectors or the control data sector of frequent updating.In some system, when the storage host data, for example control data of FAT information is upgraded.Receiving under the situation of small amounts of host data, the control data that upgrades in the high speed temporary storage block 1890 may be favourable.Under the situation of only upgrading single control data sector, this may be avoided upgrading control structure.Sometime after a while, can use control data to upgrade the control data structure from high speed temporary storage block.
Scratch pad block management
High speed temporary storage block can be the designated blocks in the memory array.Fixing physical location can be elected to be high speed temporary storage block.Yet this may cause memory array to be worn and torn unevenly.Perhaps, designated blocks can change every now and then, thereby becomes when being full of outdated data when high speed temporary storage block, and another erase blocks is elected to be high speed temporary storage block.In the case, the employed data structure of Memory Controller can be discerned the position of high speed temporary storage block or can carry out mark to the high speed temporary storage block of appointment, if thereby controller scans the erase blocks of memory array, it can determine which erase blocks is a high speed temporary storage block.Can use the sector to come the mark high speed temporary storage block, so that it is identified as high speed temporary storage block.For instance, Figure 19 shows first sector that sector 2110 is labeled as high speed temporary storage block 2100.When powering up for card, but the erase blocks of swept memory array (or part of memory array), to determine the position of high speed temporary storage block.In the example of Figure 19, first sector of reading each erase blocks is to determine whether it is the mark sector of indication high speed temporary storage block.
Data can be write high speed temporary storage block as data group.Data group is in proper order the sector group in logic that receives from main frame.Also write index sector when storage data group in high speed temporary storage block, it provides the information relevant with the data group of storing.The position of the sector of data group can be stored in the index sector.For example can use the high speed temporary storage block of the high speed temporary storage block 2100 of Figure 19 to store a plurality of data group.Figure 20 shows the scratchpad 2100 of storing a data group.Data group 1 is made up of two sectors 2220,2221.These sectors (mark sector 2110 and index sector 2230) are stored in the scratchpad 2100.The information that index sector 2230 storage and group 1 are relevant.
Figure 21 shows the high speed temporary storage block 2100 after the data group 2 process programmings of being made up of two sectors 2340,2341 of Figure 20.The new index sector of index sector 2350 information that to be storages relevant with group 1 and group 2.Therefore, index sector 2230 is out-of-date, because index sector 2350 contains the complete documentation of the data group of the high speed temporary storage block 2100 that comprises group 1.
Figure 22 shows the high speed temporary storage block 2100 after the data group 3 process programmings of being made up of sector 2460,2461 and 2462 of Figure 21.Index sector 2470 is new index sector of the storage information relevant with data group 1,2 and 3.Index sector 2470 contains the complete documentation of the data of high speed temporary storage block 2100, and therefore makes that index sector 2350 is out-of-date.
Figure 23 show Figure 22 reading of data group 1 from high speed temporary storage block 2100 and data group 2 and with its as another block of single page or leaf write store array in after high speed temporary storage block 2100.The information that index sector 2560 storage and data group 3 are relevant.Data group 1 in the high speed temporary storage block 2100 and data group 2 are out-of-date and do not need index, because it is stored in other place.Therefore, index sector 2560 contains the complete documentation of all current datas in the high speed temporary storage block 2100.
When host requests during from the data sector of memory array, controller may check at first whether the sector of being asked is arranged in high speed temporary storage block.If the sector not in high speed temporary storage block, then can be searched in a usual manner in the sector.Therefore, scratchpad need be in order to not keep that the conventional media management of the tracking of the data sector position in the memory array is had any variation.
Multi-stream update and index
Figure 24 explanation by in a usual manner in having the update blocks of single sector page storage update upgrade the example of the sector in the logical group.Encapsulate data in the logic sector, and it is stored in first block (also abbreviating " block " as), wherein all logic sectors of first block can be wiped together.In block, wherein all logic sectors in each page can be programmed together with the data recorded page by page.The single sector page of described examples show, wherein the size of each sector is generally about 512 bytes.In a certain example, " original " block 10 is made up of the whole logical group of sector, and the logical group of described sector is stored in the described block according to predesigned order, for example the logical sector number ordering to rise.This kind block is considered as intact block, and it has all complete sectors of the logical group of the sequential order of being preferably.
After this, when main frame will send renewal as the latest edition of some logic sectors in these logic sectors of logical group, the sector of upgrading is write the update blocks 20 that is exclusively used in described logical group.If more new data finally becomes predesigned order, it can be recorded in the update blocks in proper order so.Update blocks is considered as becoming the update blocks in proper order of intact block.On the other hand, when upgrading the sector and not becoming sequential order, with update blocks be considered as non-in proper order, or " confusion ".In the case, copy any latest edition of sector to form new intact block from other place the most at last.
Write among the #1 at main frame, the logic sector LS10 ' that upgrades is sent to storer, and it is recorded in the page or leaf 0 of update blocks 20.Write among the #2 at main frame, the logic sector LS11 ' that upgrades is sent to storer, and it is recorded in next available position page or leaf 1 in the update blocks 20.Write among the #3 at main frame, logic sector LS6 ' and the LS7 ' that upgrades is recorded in respectively in the page or leaf 2 and 3.Finally, write among the #4, with the logic sector L10 that upgrades and " send to storer and it is recorded in the page or leaf 4 of update blocks at main frame.It is said that the renewal of logical group will form stream (for example flowing 1), wherein more new data flows to update blocks from main frame.Generally speaking, if there are a plurality of logic sector versions to be distributed between original block and the update blocks, having only the version that writes recently so will be effective version, and it makes all previous versions obsolesce.For instance, the LS10 of Figure 24 display record in the page or leaf 4 of update blocks ", its version for writing recently, and be the current effective sector that is used for the data of logic sector number 10 therefore.Previous version (LS10 ' in LS10 in the original block 10 and the update blocks 20) is out-of-date.
Finally, update blocks will close and update blocks and original block between effective sector (latest edition of logic sector) will merge to form new original block with predesigned order.Out-of-date original block and update blocks will be recycled.
Figure 25 illustrate shown in Figure 24 to be applied to wherein page or leaf be the identical sequence that writes many sectors and storer that may be write-once.The difference of described example page structure and page structure shown in Figure 24 is that each page or leaf contains four sectors rather than a sector now, but and in particular instance after wiping write-once only.In order to be consistent with existing terminology, the minimum unit of program of storage arrangement utilization is called " Physical Page ", and the minimum unit of program of system's utilization is called " metapage ", metapage may be made up of a plurality of Physical Page.For convenience's sake, unless otherwise prescribed, otherwise " metapage " will be used interchangeably with " page or leaf ".
As before, originally each logic sector is stored in the original block 10 in proper order according to rising logical number order.If block has four sector page structure, block will further be divided into multipage so, and each logic sector preferably has the page or leaf skew of qualification in each page.For instance, store logic sector LS0-LS3 among the page or leaf P0.Therefore, LS0 is stored in first groove in four grooves of page or leaf, and LS1 is stored in second groove, or the like.In the example of four sector page, if first logic sector of block be numbered LS0, then will be by MOD[(n+1), 4] provide the page or leaf skew of given sector LSn.
When the main frame write store, it sends the write command that writes plurality of data unit's (being generally logic sector), then transmission logic sector itself.In order to prevent data degradation, the current data that write successfully can will to be begun after the write store just the agreement between main frame and the storer makes next main frame write.
As previous explaination, in having the memory architecture of many sector page, preferably in page or leaf, implement sector alignment, during refuse collection because this can be avoided needing to aim at again.Therefore, write the sector that receives to the integer page or leaf the punctual unnecessary filling update blocks from each main frame.This can cause the partially filled page or leaf of programming.Partially filled page or leaf may have the gap before or after host data.Also may with existing logic sector these gaps are filled up in advance or after fill up so that keep sequential order as much as possible.Writing at next main frame is under the situation of next logic sector, does not fill up after generally speaking preferably the part page or leaf not being carried out.Yet, but under the situation of the memory architecture with write-once page or leaf, in case write section paging just can not rewrite the not filling part of described part page or leaf.
In described example, a number that upgrades the active page in the stream that upgrades in the stream (SPB) is restricted to one alternatively.This is enough to principle of specification, but it should be noted that and page or leaf more than can be stored among the SPB, wherein needs more information (for example, older write pointer) is analyzed to find out the up-to-date sector that writes.
For instance, in Figure 25, write among the #1, the sector LS10 ' that upgrades is stored in the 3rd skew of page or leaf P0 of update blocks 20 at main frame.Depend on the circumstances, consider, availablely for example fill up preceding two grooves from the LS8 of original block 10 and the valid data of LS9 for integrality.Yet when writing the preservation page or leaf P0 of #1 end at main frame, this makes that still the 4th groove is unfilled.The latest edition of available LS11 is filled up after carrying out optionally to the part page or leaf.Because described page or leaf is a write-once, so unfilled the 4th groove will be closed and can't further programme.
Write among the #2 at main frame, order is the sector LS11 ' that writes the renewal that receives, and it finally begins into sequential order from up-to-date sector LS10 '.Ideal situation is, this should be recorded in next groove behind the LS10 ' among the P0.Yet P0 is closed and can't further writes, and therefore LS11 ' is stored among next blank page P1 at up-to-date groove place, and this is its correct page or leaf skew.Fill up first three groove of P 1 with LS8, LS9 and LS10 ', LS8, LS9 and LS10 ' are in proper order at effective version of the logic sector of LS11 ' front.
Write among the #3 at main frame, order is to write LS6 ' and LS7 '.It is write the P2 at the third and fourth groove place respectively, and P2 is next blank page in the update blocks.Fill up first and second grooves with the valid data of for example LS4 and LS5.
Finally, write among the #4 at main frame, order is to write LS10 ", and it is stored in P3, the groove 3, fill up groove 1 and 2 with LS8 and LS9 respectively simultaneously, and groove 4 is remained empty.
As can be seen, but attempt in the page or leaf of each one-time programming, to have when keeping sector alignment and fill up in a large number with the dead band and poor efficiency ground use update area block.Undesirable feature is, even if main frame writes (write 10 earlier and write 11 then in two independent write commands) sequentially, update blocks still be not in proper order and can't become complete because it has some outdated datas.
For fear of the problems referred to above and with in the update blocks 20 because of partially filled page or leaf and too fill up the poor efficiency storage that causes and minimize, described previously and used extra high speed temporary storage block 30.High speed temporary storage block (SPB) 30 serves as the temporary buffer that imports data into and prepares the zone, makes can prepare the data of whole page or leaf and then it is write update blocks 20.In the example of above four sector page, the sector is prepared, so that write four sectors intactly to fill the page or leaf in the update blocks.Under the situation when main frame writes the gradualness data in independent writing, SPB allows the buffer part paging to write, and update blocks is remained in proper order.Yet this means that also present valid data also are distributed on the SPB except original block and update blocks.
For convenience's sake, the size of the page or leaf of high speed temporary storage block is big or small identical with the page or leaf of update blocks, though generally speaking they can be different.For instance, if accumulator system is supported other programming of Physical Page level, then the page or leaf of high speed temporary storage block can have the size of Physical Page.
High speed temporary storage block and update blocks index management
On August 13rd, 2004, the 10/917th, No. 725 U.S. patent application case of application disclosed a kind of accumulator system with block management, and its whole disclosure is incorporated herein with the form of quoting.Described block management provides the update blocks that each data logical group to be updated is associated.What disclosed is the example of various index schemes, and it is in order to locate the valid data that may reside on original block or the update blocks.Exactly, when update blocks contains into the logic sector of non-sequential order, described update blocks is considered as " chaotic update blocks ".Use chaotic update blocks index (CBI) to keep tracking to the logic sector that writes down in the chaotic update blocks.
The SPBI/CBI index of preserving in the high speed temporary storage block
According to a further aspect in the invention, when also using high speed temporary storage block except update blocks, the scratch pad block index (SPBI) that use is associated keeps the tracking to the renewal sector of writing down in the high speed temporary storage block.This is as in order to keep replenishing the index (for example CBI) of the tracking of the logic sector that writes down in the update blocks.As long as storage of subscriber data is in the part page or leaf of high speed temporary storage block, this pit that just means page or leaf at least is not filled.In one embodiment, SPBI can be stored in the pit of the part page or leaf in the high speed temporary storage block.In a preferred embodiment, SPBI and CBI can be encapsulated in the SPBI/CBI sector, and it is stored in the pit place that does not use by any way of the part page or leaf of high speed temporary storage block.When writing new part page or leaf, the SPBI/CBI sector of upgrading is written in groove place, end, thereby makes that previous all versions are out-of-date.
Figure 26 is that explanation is according to general embodiment of the present invention, by using first memory block (index of the data of being stored is kept in second block) to come the more process flow diagram of the method for new data in conjunction with the second memory block.
Step 80: first and second Nonvolatile memory devices are provided, and each all is used for record data sequentially.
Step 81: at least one index of in first and second Nonvolatile memory devices, keeping data.
Step 82: receive the input data.
Step 84: determining whether to satisfy will be through the input data recording of buffering first predetermined condition to first memory storage.If satisfy, just proceed to step 85, otherwise proceed to step 86.
Step 85: will through the buffering the input data recording to first memory storage.Proceed to step 88.
Step 86: will record second memory storage with described at least one index through the input data of buffering.Proceed to step 88.
Step 88: if there are more input data pending, then proceed to step 72, otherwise terminal procedure.
Figure 27 A explanation comes more new data and the particular instance of keeping index according to the preferred embodiment of the present invention by use update blocks in conjunction with high speed temporary storage block.Each block all is first blocks, and wherein its all memory location can be wiped together.Block is organized into page or leaf, and wherein all memory locations in the page or leaf can be programmed together.In addition, each page has the size that can store an above sector, but and when block is wiped free of its write-once.
High speed temporary storage block (SPB) 30 also is provided except update blocks (UB) 20.If use " stream 1 " to come mark to arrive the streams data of update blocks 20, will be labeled as the respective flow that arrives high speed temporary storage block 30 " stream 0 " so.
Same host among use Figure 24 and 25 is write example the advantage of the present invention shown in Figure 27 A is described.Write among the #1 at main frame, order is to write LS10 '.Because LS10 ' should take groove 3, so the page or leaf that is full of can not be write update blocks 20.But, by in the new page or leaf of SPB 30, it being cushioned and will prepare.Therefore, LS10 ' is stored in the groove 3 of next available part page or leaf PP0 of SPB 30.Simultaneously, fill up groove 1 and 2 alternatively with LS8 and LS9 respectively.In addition, according to feature of the present invention, SPBI and CBI all are encapsulated in the sector, i.e. index sector SPBI/CBI
1In 50, and advantageously index sector 50 is stored in last, the untapped groove of part page or leaf PP0.
Write among the #2 at main frame, order is to write LS11 '.Because LS11 ' belongs to the groove 4 that is positioned at the page or leaf end, so the whole page or leaf of filling up in advance with LS8 in proper order, LS9 and LS10 ' from SPB 30 can be write next available page or leaf P0 of update blocks 20.In the case, the index sector that is used for SPBI/CBI is without renewal, because it does not write in the part page or leaf among the SPB 30.Aligning among the SPB and to fill up in advance be preferred, but optionally.
Write among the #3 at main frame, order is to write LS6 ' and LS7 '.It belongs to groove 3 and 4 respectively.Therefore, during groove before filling up, write another whole page or leaf---the P1 of update blocks 20 with LS4 and LS5.Equally, the index sector that is used for SPBI/CBI is without renewal, because it does not write in the part page or leaf among the SPB 30.
Write among the #4 at main frame, order is to write LS10 ".Because LS10 " belong to groove 3, so it will be written into the next part page or leaf PP1 of SPB30.Similarly, fill up former groove 1 and 2 with LS8 and LS9, and last groove also will with index sector (SPBI/CBI
3) latest update store together.
Usually will write place, #4 end at main frame the use of update blocks 20 and the use among Figure 25 will be compared, find that easily the scheme shown in Figure 27 A is the more efficient use to update blocks.Write for identical main frame, the scheme shown in Figure 27 A consumes less memory storage, and needs less the filling up in the update blocks, though can be cost with high speed temporary storage block 30.Simultaneously, described index scheme utilizes untapped memory storage in the high speed temporary storage block to store index in nonvolatile memory.
A key character of the present invention and advantage are during a series of independent main frame of in proper order logic sector writes, and keep the sequential order of the renewal sector in the update blocks, and these are different with example shown in Figure 25.Will be apparent by the example that illustrates among Figure 27 B.
Figure 27 B explanation is kept more another example of ordering in proper order of new data according to the preferred embodiment of the present invention by use update blocks in conjunction with high speed temporary storage block.In this example, successively but write logic sector LS10 '-LS16 ' by plurality of single main frame.
Write among the #1 at main frame, write LS10 '.Because it should take the groove 3 (it is not the last groove of page or leaf) of page or leaf, so it is recorded in the groove 3 of high speed temporary storage block 30.Simultaneously, index SPBI/CBI1 is recorded in the last groove of page or leaf.
Write among the #2 at main frame, write LS11 '.Because it should take the last groove of page or leaf, so it is directly recorded the pit of new page or leaf in the update blocks 20.Simultaneously, will be stored in the LS10 ' in the high speed temporary storage block temporarily then copy groove 3 to, use LS8 and LS9 to fill up groove 1 and 2 in advance simultaneously from original block or intact block 10.
Write among the #3 at main frame, write LS12 '-LS14 '.Owing to wherein do not have one to have the last page skew, it is stored among the groove 1-3 of the new page or leaf in the high speed temporary storage block.Simultaneously, the index SPBI/CBI3 that record upgrades in the groove of page or leaf end.
Write among the #4 at main frame, write LS15 ' and LS16 '.Because LS15 ' belongs to the last groove of page or leaf, so with the pit of the following one page in its update blocks of writing direct.Simultaneously, use LS12 '-LS14 ' to come filling slot 1-3 respectively from high speed temporary storage block.
To find out,, also it will be recorded in the update blocks in mode in proper order even if logic sector LS10 '-LS16 ' in proper order writes by plurality of single main frame.
In a preferred embodiment, in high speed temporary storage block, each logical group is preserved a live part page or leaf (the part page or leaf that for example, writes at last).The present invention is applicable to that on an equal basis each logical group is preserved an above live part page or leaf in high speed temporary storage block.In the case, need be to analyzing, so that the sector that the location is write down from the index information of page or leaf more than.
Sector alignment in the page or leaf of high speed temporary storage block is preferred with filling up, but optionally.Aim at and fill up the subsequent transfer that to promote update blocks.
In the specific memory framework, the absolute sector in the page or leaf of update blocks is to brigadier's reduced index and copy.Even when all sectors in proper order in the page or leaf are shifted the groove of some circularly, also the sector in the page or leaf is considered as that page or leaf aims at.In the case, the page or leaf label of the position of first logic sector in the indication page or leaf will provide offset address.
Shown preferred embodiment has two memory storages as two different erasable area pieces.Generally speaking, the present invention is applicable to two memory storages as two parts of storer comparably.
The present invention is applicable to comparably that also the two condition storer of a data bit of each memory cell stores and each memory cell can store the multistate memory of a data bit more than.For the multistate memory of supporting the multipage storage, lower page is preferred for the storage operation of high speed temporary storage block.If first sector that will write is not groove 1 position from the multiple-grooved page or leaf, so preferably the part page or leaf is filled up in advance.
Chaotic block is used page or leaf other index of level and high speed temporary storage block used the index of sector level.To (that is, SPBI/CBI) maintain among the controller SRAM all chaotic block of access and the essential index information of high speed temporary storage block so that quick access and processing.No matter when write new part page or leaf, it periodically is written out to high speed temporary storage block.
Generally speaking, will programme with importing data into, to reduce the number of program cycles through the data that the part metapage is reorientated.When high speed temporary storage block (SPB) becomes full, it is compressed.The SPB compression is that all valid data are repositioned onto new block.Because each UB among the SPB only has a page or leaf with valid data, so we only need be with those page copies to new block.If each update blocks has a plurality of pages or leaves (it may contain different or identical logical address, if the latter's words are then preferably with its merging) with valid data.
The update blocks index of preserving in the part page or leaf
According to another aspect of the invention, the index stores that is stored in the data in the memory block the part page or leaf not by the part of data occupancy in.Therefore, in with the storer of memory unit tissue (wherein, the page or leaf of memory unit can be programmed together, and the block of storage page can be wiped together), then ought be stored in data unit in the memory unit according to predesigned order and in page or leaf on time, but and especially under the situation of page or leaf one-time programming after at every turn wiping, with the page or leaf that exists part to be filled.Then, the index stores of block is upgraded in the section data page or leaf not filling.The part page or leaf may be in current block or in another block.
The preferred version of the index that is used for storage update memory of data block is preserved in Figure 28 explanation in the part page or leaf of block.
Step 90: the erasable area piece that nonvolatile memory is organized into memory unit, each memory unit is used for the stored logic data unit, and each block also is organized into one or more pages or leaves, but wherein the memory unit in each page has predetermined page or leaf skew and one-time programming together after wiping.
Step 92: the update blocks that block is provided as the renewal version of record logical data unit.
Step 94: from main frame receive logic data unit.
Step 96: the index of in update blocks, keeping data.
Step 98: update blocks is carried out recorded page by page, data based its page skew that wherein receives and in page or leaf, aiming at, and when page or leaf to be recorded has not by the part of data occupancy, also with index record to not by the part of data occupancy.
Multithread is followed the tracks of and is synchronous
Figure 29 schematically illustrates the high speed temporary storage block that uses in multi-stream update, wherein some logical group stand to upgrade simultaneously.For instance, if there be k logical group to stand to upgrade, will exist so and use k update blocks 20-1 ... the renewal stream of 20-k.For fear of there being the part page or leaf in update blocks, use high speed temporary storage block 30 cushions the data in k the appropriate section page or leaf of k update blocks in another stream (stream 0).Therefore, will there be k+1 block to open, and renewal when having k part page or leaf to serve k logical group of k the logic unit in the update blocks.Shown example is at preferred embodiment, and wherein there is an active page in each update blocks in the high speed temporary storage block.
Under effective sector is distributed in situation in update blocks and the high speed temporary storage block, when the version that writes recently of identification sector under power supply round-robin situation, may go wrong, because can in update blocks and high speed temporary storage block, find the different copies of identity logic sector.Memory scans after the power reset on the update blocks will be set up the priority of a plurality of versions (if present) of logic sector, because fill to limit order the position of update blocks.By high speed temporary storage block is similarly scanned, can identify the version that writes at last of logic sector.Yet, there is latest edition if exist in the high speed temporary storage block in latest edition and the update blocks, be not easy to determine which is the version of very latest.For instance, in Figure 27 A, can in two streams, all find sector LS8-LS 10.Can be by different command sequences---write LS8 '-LS10 ', write LS8 " LS10 ", write LS8 " '-LS11 ' ", write LS4 '-LS7 '---form with Figure 27 A on the identical data pattern of data pattern.In the case, effectively the sector will be arranged in update blocks rather than high speed temporary storage block.
According to a further aspect in the invention, provide a kind of in order to will more new data is with the method for synchronizing information write non-volatile memory, described synchronizing information allows to identify the version that writes recently of the data that may be present on a plurality of memory blocks.
Figure 30 illustrates that the sequence that will import data writes the regular situation of block.Nonvolatile memory block 22 is organized into it fills to limit order.Schematically illustrating it among the figure begins from the top to fill.Therefore, data segment " A ", " B ", writing in proper order continuously of " C " and " A ' " are placed in the block.In this way, if for example " A ' " is another version of " A ", then can determine that it is the later version that replaces " A " according to its record position in block 22.Following examples just storage with the special of the wider notion of the relevant information of the full level that upgrades a stream when limiting stream but effective situation.
Figure 31 A explanation is submitted to stagger the time and is also kept scheme to the tracking of record order or priority even be written in two blocks in difference according to a preferred embodiment of the invention.According to one or more predetermined conditions, for example data segment " A ", " B ", at every turn writing of " C " and " A ' " can be recorded on first block (for example, block 22) or second block (for example, block 32).In this example, write first and middle " A " recorded second block 32.Being " B " to be recorded second of first block 22 write after this, and " C " recorded the 3rd of second block 32 writing, is " A ' " to be recorded the 4th of first block 22 write at last.
Shown in figure in, stream 0 is the data stream that records second block 32, and to flow 1 be the data stream that records first block 22.In two or more streams under the staggered more news, it is essential to keep tracking that it defines the position of the data of nearest record to the priority of upgrading in the identity logic data.In a preferred embodiment, realize this operation by when constant current given in record, all preserving precedence information at least.
Write data recording to block 32 time whenever flowing in 0, precedence information is preserved with writing data.In a preferred embodiment, precedence information is to write pointer 40, and it points to next empty position (that is the address of next record position) in first block 22.Writing pointer preserves with the data that flow storage in 0.
Therefore, in writing " A " operation, the pointer PA 40-A that points to next empty position in the block 22 is kept in the block 32 that flows in 0 with " A ".Not preserving any pointer in writing " B " operation, is at the block 22 of stream in 1 because write.In writing " C ", pointer PC 40-C is kept in the block 32 that flows in 0 with " C ".At the writing in " A ' " of block 22, in stream 1, do not preserve any pointer.
If storer is reset after power interruption when writing the end of " A ' ", then any index among the controller RAM all will be lost, and must rebuild by swept memory.By scanning backward, each in the block 22 and 32 all will be decided the version that writes at last of a data bit " A ".Can use and write the real final version that pointer 40 is determined between two blocks.For instance, pointer PC points to position in the block 22 before at record " A ' ", therefore writes down " A ' " afterwards at " C ".In addition, because " C " is recorded in and is positioned at " A " position afterwards in the block 32, therefore can draw " A ' " is the conclusion of the back version of " A ".
In SPB, exist among another embodiment of an above active page at every UB, in order to detect the data that write recently, must analyze more than one and write pointer then.
Figure 31 B explanation is write fashionable maintenance another embodiment to the tracking of record order when writing down on two blocks.This embodiment is similar to the embodiment shown in Figure 31 A, and difference only is to write next empty position in the pointed block 32, and is kept in the block 22.Stream 0 just is being recorded to second block (for example, block 32), just is being recorded to first block (for example, block 22) and flow 1.Whenever flowing 1 when recording on first block, second block that just will provide the address of the next record position in second block 22 writes pointer 40 ' therewith preserve.In this example, with pointer P '
B40 '-B is with " B " record.Similarly, P '
A '40 '-A ' is recorded in " A ' " in first block 22 of stream in 1.
Figure 32 A is the process flow diagram that the records series between two data stream of explanation general embodiment according to the present invention carries out synchronous method.
Step 100: first and second Nonvolatile memory devices are provided, and each all is used for record data sequentially.
Step 102: first or second memory storage is appointed as the memory storage that is used for precedence information, described precedence information be used for determining first data unit of first memory storage be before second data unit in second memory storage or after record.
Step 110: receive the input data.
Step 120: determine whether the predetermined condition of the satisfied input data recording that will receive to first memory storage.If satisfy, then proceed to step 130 ', otherwise proceed to step 140 '.
Step 130: the input data recording that will receive is to first memory storage.At this moment, if first memory storage is the memory storage of appointment, then extraly precedence information is recorded first memory storage.Proceed to step 150.
Step 140: the input data recording that will receive is to second memory storage.At this moment, if second memory storage is the memory storage of appointment, then extraly precedence information is recorded second memory storage.Proceed to step 150.
Step 150: if there are more input data to handle, then proceed to step 110, otherwise terminal procedure.
In a preferred embodiment, precedence information is the write device pointer, and it is that the address of the position of next record will take place in non-prescribed storage means.
Figure 32 B is embodiment that explanation writes pointer according to use carries out synchronous method to the records series between two data stream a process flow diagram.
Step 100 ': first and second Nonvolatile memory devices are provided, and each all is used for record data sequentially.
Step 110 ': receive the input data.
Step 120 ': determine whether the predetermined condition of the satisfied input data recording that will receive to first memory storage.If satisfy, then proceed to step 130 ', otherwise proceed to step 140 '.
Step 130 ': the address of the position of the next record that acquisition will take place in second memory storage.
Step 132 ': with address and the input data recording that receives to first memory storage.Proceed to step 150 '.
Step 140 ': the input data recording that will receive is to second memory storage.Proceed to step 150 '.
Step 150 ': if there are more input data to handle, then proceed to step 110, otherwise terminal procedure.
The present invention be specially adapted to be organized into memory unit the erasable area piece,, each memory unit is used for the nonvolatile memory that stored logic data unit and each block also are organized into one or more pages.In addition, but each page one-time programming after the wiping of a plurality of logic units, and each logic unit becomes predesigned order and has given page or leaf skew.Described method (for example is provided for two blocks that the more new data of the group of logic unit is stored or cushioned in essence, update blocks and high speed temporary storage block), and keep synchronizing information and be arranged in first block or second block with the version that writes recently that helps recognition logic unit.About Figure 29, if there are a plurality of streams, then the embodiment shown in Figure 31 A is preferred, because it is convenient more that all are write the place that pointer is stored among the SPB.
Update blocks writes pointer embodiment
According to preferred embodiment, when buffering host data in high speed temporary storage block, preserve with host data with the synchronizing information that writes the pointer form.Writing pointer is to write pointer when writing the update blocks that provides the address of next position that writes that is used for update blocks when pointer is kept in the high speed temporary storage block.Exactly, it is kept at and is used for the storage host section data in the high speed temporary storage block never in any form.Update blocks writes pointer and preferably is contained among the index SPBI/CBI in the part page or leaf that is stored in high speed temporary storage block.Update blocks writes pointer, and will to allow to determine that whether the given logic sector that cushions in high speed temporary storage block has become in that update blocks follow-up write the back out-of-date.
If there is power reset, and find two versions of in question logic sector between two blocks, writing pointer so, will to allow which version of solution be very latest.For instance, if write down logic sector in the update blocks after the position of pointing to, it will replace the version in the part page or leaf among the SPB so.On the other hand, if do not find logic sector in update blocks, perhaps logic sector is recorded in previous position, will draw the still effective conclusion of the version that cushions in the part page or leaf of high speed temporary storage block so.
Figure 33 A shows high speed temporary storage block and the state of update blocks after two main frames according to first sequence write #1 and #2.First sequence is to be used for writing #1 and " and the main frame of LS11 ' writes #2 in order to write LS10 in order to the main frame that writes LS10 '.
Write among the #1 at main frame, order is to write LS10 '.Because LS10 ' is or not the page boundary place, so it is recorded among the part page or leaf PP0 in the high speed temporary storage block 30, described part page or leaf PP0 is filled up with LS8 and LS9 and in advance with current index SPBI/CBI
1Finish.When write section paging PP0, at current index SPBI/CBI
1Comprise in 50 and write pointer 40, described index SPBI/CBI
150 are kept in the pit.Write the first blank page P0 that pointer 40 points in the update blocks 20.
Write among the #2 at main frame, order is " and the LS11 that writes LS10.Because LS11 ' is in the page or leaf end, so with the pit (groove 4) of the P0 in its update blocks 20 of writing direct.Simultaneously, LS10 ' is write groove 3, and fill up groove 1 and 2 with LS8 and LS9 respectively.
If the index information that storer suffers to keep among power interruption and the RAM is now lost, then the scanning backward of physical storage is with the try reconstruct index information.To find out that update blocks and high speed temporary storage block (SPB) all will produce its final version to LS10, i.e. LS10 ' and LS10 ".Yet, " be the record after the pointer of writing in being recorded in the PP0 of SPB, be conclusion because LS10 than the version of LS10 ' renewal so can draw it.
Figure 33 B shows high speed temporary storage block and the state of update blocks after two main frames according to second sequence opposite with first sequence shown in Figure 33 A write #1 and #2.Opposite sequence be used in order to the main frame that writes LS10 ' and LS11 ' write #1 and in order to write LS10 " main frame write #2.
Write among the #1 at main frame, order is to write LS10 ' and LS11 '.Because LS11 ' is in the page or leaf end, so with the pit (groove 4) of the P0 in its update blocks 20 of writing direct.Simultaneously, LS10 ' is write groove 3, and fill up groove 1 and 2 with LS8 and LS9 respectively.
Main frame after main frame writes #1 writes among the #2, and order is to write LS10 "." not at the page boundary place, so it is recorded among the part page or leaf PP0 in the high speed temporary storage block 30, described part page or leaf PP0 is filled up with LS8 and LS9 and in advance with current index SPBI/CBI because LS10
2Finish.When write section paging PP0, at current index SPBI/CBI
1Comprise in 50 and write pointer 40, described index SPBI/CBI
150 are kept in the pit.Write next blank page P1 that pointer 40 points in the update blocks 20.
In the case, after power reset, (for example) finds the logic sector LS10 ' in the record update blocks before the sensing position of update blocks 20.Can draw to draw a conclusion: the final version of the LS10 ' in the update blocks 20 is resided on another version LS10 in the part page or leaf of high speed temporary storage block 30 " to be replaced.
The preference data structures of Figure 34 A explanation scratch pad block index (SPBI).SPBI information contains the following field that is useful on k each update blocks in the update blocks.This is the special circumstances that each logical group/UB has the SPB of an active page.
The logic sector that stands to upgrade in the constant current is being given in the identification of logic clusters group number.Preferable case is, stores null value " FFFF " at the update blocks of free time or the update blocks that do not have effective scratchpad data.
Page or leaf beginning sector is first logic sector that writes the part page or leaf of high speed temporary storage block.
The sector running length is the number of effective sector that writes the part page or leaf of scratchpad page or leaf.
Effectively page number identification writes unique effectively (unique effective) the part page or leaf in the high speed temporary storage block.It will be the part page or leaf that writes at last in the high speed temporary storage block.Perhaps, can sector offset implement addressing, described sector offset is pointed to first effective sector of the part page or leaf of update blocks.Sector offset is calculated in beginning with respect to block.In a preferred embodiment, have only a Physical Page to contain the valid data that are useful on given update blocks.At the sector storage FFFF that does not write high speed temporary storage block.
Update blocks writes first sevtor address that does not write sector position that pointer 40 is corresponding update blocks when in the end writing scratchpad.The sector that any sector position from then on writes update blocks all will be substituted in the sector that writes in the high speed temporary storage block.
Figure 34 B explanation is used for the example value that the main frame shown in Figure 33 A writes the scratch pad block index of #1.In this example, the logic clusters group number is " 1 ", and it contains logic sector LS0 to LSN-1.It upgrades in stream 1, and is attended by update blocks and high speed temporary storage block.Part page or leaf is PP0, and its begin with LS8 or " 8 " and have running length " 3 " thus with LS10 ' end.The live part page number is " 0 ".Finally, write next writing position in the pointed update blocks, its sector offset is " 0 ".
Obviously, if the index that upgrades only is stored in the high speed temporary storage block, just and when data are write direct update blocks, can not write high speed temporary storage block, then index will under those situations, become invalid.
Generally speaking, whole SPB index information and CBI index information are maintained in the data structure among the controller SRAM always.Come effective sector among the access SPB based on the index information of sector level.In a preferred embodiment, with in the nonvolatile memory of SPBI/CBI index stores in high speed temporary storage block.Exactly, when write section paging in high speed temporary storage block (SPB), just in the last sector of part page or leaf, store up-to-date SPBI/CBI.
SPB supports nearly predetermined number (for example, 8) update blocks.When main frame writes the last sector of page or leaf, the part page data in the SPB block is merged to the update blocks that is associated.At given time, be used for one of SPB of logical group may having data in the page or leaf of top, but have only the data of the part page or leaf that writes at last to be only effectively.Similarly, may there be a plurality of copies of SPBI/CBI sector among the SPB, but have only the copy that writes at last to be only effectively.When needs write SPB with the sector and SPB when being full of, at first block is copied to new SPB block and wipe old SPB, after this sector is write new SPB.When needs upgrade SPBI/CBI, also write SPB,, perhaps be closed because before contained the update blocks of scratchpad data because update blocks in proper order becomes confusion.
In a preferred embodiment, to write be an one page to high speed temporary storage block (SPB).Therefore only the number of pages of each stream/logical group/update blocks also is restricted to one, needs up-to-date SPBI, because only exist one may be in which position is relevant page or leaf with effective copy in UB or SPB.Similarly, if the number of pages of each UB is greater than one among the SPB, so also will need old SPBI is analyzed.
The foregoing description writes pointer with update blocks and is stored in the up-to-date part page or leaf of high speed temporary storage block as the part of SPBI/CBI sector.Alternate embodiment can identify effective version of logic sector from may be present in a plurality of versions between a plurality of blocks.Each stream in the also possible in addition high speed temporary storage block has page or leaf more than, and perhaps each logical group has an above update blocks or stream.
High speed temporary storage block writes pointer embodiment
According to another embodiment of the present invention, keep synchronizing information, its permission determines that whether the given logic sector that cushions has become in that update blocks follow-up write the back in high speed temporary storage block out-of-date.This realizes in the following manner: when storing synchronizing information in the page or leaf in update blocks, the scratchpad that comprises the address of next position that writes that provides in the high speed temporary storage block writes pointer.
Figure 35 A and Figure 35 B show that high speed temporary storage block and update blocks write the intermediateness of pointer respectively with respect to scratchpad after the continuous main frame of Figure 33 A and Figure 33 B writes.
Figure 35 A explanation high speed temporary storage block and the state of update blocks after main frame writes #1.Therefore write among the #1 at main frame, logic sector LS10 ' belongs to the groove 3 of page or leaf and not at the page boundary place, and is recorded among the part page or leaf PP0 in the high speed temporary storage block 30.It is filled up in advance with LS8 and LS9 alternatively, and with current index SPBI/CBI
1Finish.If storer restarts, then can pass through last SPBI/CBI after power-off
1Effective version of logic sector LS10 ' correctly located in index.Owing to do not write any content, so Such is the fact to update blocks 20.
The main frame that Figure 35 B explanation main frame writes after the #1 writes #2, and wherein order is to write LS11 '.Because LS11 ' locates in page boundary (groove 4),, fill up in advance with LS8, LS9 and LS10 so it is recorded in the 4th groove of page or leaf P0 of filling.The SPB that synchronizing information adopt to be pointed to next empty position among the SPB 30 write pointer 40 ' form.Different with previous embodiment is, SPB writes pointer 40 ' be not included in the SPBI/CBI index among the SPB 30.But, it is stored in the title division of the sector in the current page or leaf that just is being recorded in the update blocks 20.If storer restarts after power-off, then will in update blocks 20, correctly locate effective version of logic sector LS10 ' because before SPB writes the position of pointer 40 ' sensing the version of the LS10 among the record SPB.
Figure 36 declare record scratchpad of storage in the overhead of the sector of the update blocks part writes pointer.Scratchpad is write in pointer 40 ' be kept at current record at least one sector in the page or leaf of update blocks.In a preferred embodiment, it is kept in the overhead part of at least one sector in the page or leaf that just is being written into.
Time stamp embodiment
In another embodiment, synchronizing information can be encoded to the time stamp of the data sector that is used to be written to a plurality of streams, so that can correctly find out latest edition.
Figure 37 illustrates and uses time stamp to keep the tracking of upgrading the records series between the stream to two.As before, can be in first block (stream 1) or second block (stream 2) with each segment record of new data more.Examples show is recorded in " A " in first block at time T 1 place, at the T2 place, " B " is recorded in second block, at the T3 place, " C " is recorded in first block, and at the T4 place, " A ' " is recorded in second block.
Storage is used for more at least one time stamp of new portion of each new data.Therefore, " A " will have time stamp TS 1, and " B " has TS2, and " C " has TS3, and " A ' " has TS4.Therefore, for instance, " A ' " is the back version of " A ", because its time stamp after having.In a preferred embodiment, time stab information is stored in the overhead part of at least one sector in the page or leaf that just is being written into.
Multi-stream update with block of many sector page
According to a further aspect in the invention, a kind of method of upgrading nonvolatile memory comprises uses first block (update blocks) to write down more new data, and uses second block (high speed temporary storage block) to come at interim some the more new datas of preserving before the update blocks of new data records more.Nonvolatile memory is organized into the erasable area piece of memory unit, each memory unit is used for the storage data of logic unit, and each block also is organized into one or more pages or leaves, wherein each page can be stored a plurality of logic units with page or leaf skew of qualification, and after wiping one-time programming together.Described method further comprises from main frame receive logic unit, and the logic unit that receives aimed at page by page, thereby when the satisfied logic unit that receives has the predetermined condition of page or leaf end skew, the logic unit and any former logic unit that receive are aimed at the page or leaf that stores in the update blocks with suitable page or leaf, otherwise, store any remaining logic unit that receives in the high speed temporary storage block part page or leaf temporarily.Finally, when satisfying predetermined condition, the logic unit in the high speed temporary storage block is transferred to update blocks.
In a preferred embodiment, receive more new data and it is analyzed page by page, so that transfer to first block (for example, update blocks).Second block (for example, high speed temporary storage block) is transferred in any remainder paging of data of buffering, and described remainder paging will remain in second block, up to the data that whole page or leaf is arranged become can be used for recording first block till.When the data of buffering were transferred to second block, it was a recorded page by page, though just partly be filled with the data that receive in the page or leaf of record.Use the redundance in the part page or leaf, the index that is used in the fixed data bit of second and first block is stored in promptly general untapped space.
Figure 38 illustrates according to general embodiment of the present invention, incites somebody to action more new data records and the process flow diagram that indexes the method for two memory blocks simultaneously, and wherein each memory block has many sector page.
Step 200: the erasable area piece that nonvolatile memory is organized into memory unit, each memory unit is used for the stored logic data unit, and each block also is organized into one or more pages or leaves, wherein each page or leaf contains a plurality of memory unit, and after wiping one-time programming together.
Step 210: first block that is provided for writing down by the whole page the renewal version of logical data unit.
Step 220: be provided for cushioning second block from the renewal version of the logical data unit that main frame receives.
Step 232: the data from main frame receive logic unit.
Step 234: by resolving the logic unit that receives page by page with the page or leaf end any logic unit of offset orientation.
Step 236: each logic unit that will have a page or leaf end skew records the new page or leaf in first block, simultaneously with before the latest edition of logic unit is original fills new page or leaf, and any remaining logic unit that receives is recorded in the part page or leaf in second block.
Figure 39 is the process flow diagram of more particular embodiment of the method for the explanation use high speed temporary storage block of Figure 37 and update blocks.
Step 310: be provided for writing down by the whole page the update blocks (UB) of the renewal version of logic unit, each logic unit has the predetermined page skew according to predesigned order.
Step 322: high speed temporary storage block (SPB) is provided, and it is used for adhoc buffer page by page and is directed into its renewal.
Step 324: the SPBI index that is provided for effective (latest edition) data in location in SPB.
Step 332: receive the current data that write request by logic unit ground.
Step 334: if current logic unit proceeds to step 340 so, otherwise proceeds to step 336 in the skew of page or leaf end.
Step 336:, proceed to step 332 so, otherwise proceed to step 350 if the request that writes has more data to receive.
Step 340: write down the new page or leaf of UB with page current logic unit at place, end, and fill the remainder of page or leaf according to predesigned order with effective (latest edition) logic unit.Proceed to step 336.
Step 350: if write down the data that all receive, proceed to step 180 so, otherwise proceed to step 360.
Step 360: if the Unrecorded data that receive not with SPB in any existing effectively (latest edition) data belong to same one page, proceed to step 370 so, otherwise proceed to step 362.
Step 362: upgrade the SPB index.
Step 364: the Unrecorded data that receive and any existing valid data are recorded in the new page or leaf of SPB with its page skew, finish with the SPB index.Proceed to step 380.
Step 370: will navigate to the new page or leaf of UB from the existing valid data of the current page of SPB by merging.
Step 372: upgrade the SPB index.
Step 374: the Unrecorded data that receive are written in the new page or leaf of SPB with its page skew, finish with the SPB index.
Step 380: current writing asks to finish.
SPB supports the nearly update blocks of predetermined number (for example, 8).When main frame writes the last sector of page or leaf, the part page data in the SPB block is merged to the update blocks that is associated.At given time, among the SPB of logical group one may existing data in the page or leaf of top, but in a preferred embodiment, have only the data of the part page or leaf that writes at last to be only effectively.Similarly, may there be a plurality of copies of SPBI/CBI sector among the SPB, but have only the copy that writes at last to be only effectively.By same merging,, then only need the last pointer that writes if effective number of pages of each UB is restricted to one among the SPB.When needs write SPB with the sector and SPB when being full of, at first block is copied to new SPB block and wipe old SPB, after this sector is write new SPB.When needs upgrade SPBI/CBI, also write SPB,, perhaps be closed because before contained the update blocks of scratchpad data because update blocks in proper order becomes confusion.
Generally speaking, as above note, can use an above SPB part page or leaf of each update blocks to store valid data.In this way, if next main frame writes the outside of sector at page or leaf, then do not need part page or leaf merged and think that new part page or leaf gives way.
The multi-stream update scheme allows to effectively utilize more update blocks.But this for the block with many sector page of write-once especially like this.The memory storage that described scheme consumes is less, and in update blocks, need fill up less.The more important thing is, during a series of independent main frame of logic sector writes in proper order, keep the sequential order of the renewal sector in the update blocks.
Multi-stream update with predictability pipeline operation
In above-mentioned multi-stream update scheme, fashionable whenever existing main frame to write, will determine the host data that will receive to record update blocks or high speed temporary storage block.Can when the data unit that receives from main frame, monitor one by one, till receiving data unit with last page skew to it.At this some place, confirm to write the predetermined condition of whole page or leaf, fill up though may exist in advance.
In order to write update blocks, page or leaf to be written need be set for programming.This relates to page addressing and then will be used for the data load of this page to data latches.
According to preferred embodiment, implement the predictability pipeline operation, wherein not to wait until to confirm to be used to record till the predetermined condition of update blocks, in case but update blocks is arranged to data unit that the host write command indicative of desired writes has satisfied predetermined condition potentially and just write update blocks always.In this mode, setting can have the beginning of jump in the data unit of waiting for from main frame.When the actual data units that receives has finally satisfied predetermined condition, can take place at once in the update blocks the page or leaf programming and need not wait for setting, thereby improved write performance.When main frame writes the actual data units that is interrupted and receives and no longer satisfies predetermined condition, will abandon being used to record the setting of update blocks, and alternatively will record high speed temporary storage block to data unit.
Figure 40 A schematically illustrates the storage arrangement with row's read, and it provides implements environment of the present invention.Described storage arrangement comprises two-dimensional array 400, control circuit 410 and the read 470 of memory cell.Memory array 400 can be passed through the word line addressing via row decoder 430, and passes through the bit line addressing via column decoder 460.Read 470 is configured to that row's sensing module 480 (not shown) and allowing reads concurrently or group's (being also referred to as one " page or leaf ") of program memory cells.P sensing module 480 of a whole row of parallel work-flow allows to read concurrently or programme along one page p unit of row.An example memory array can have p=512 byte (512 * 8 positions).In a preferred embodiment, block is a succession of full line unit.In another embodiment, block is the subclass of the unit in the row.For instance, the subclass of unit can be full line half or full line 1/4th.The subclass of unit can be a series of adjacent unit or one the unit of being separated by, or the unit of the predetermined number of being separated by.Accordingly, in a preferred embodiment, page or leaf is made of the adjacent rows of memory cell.In row of memory cells being divided into another embodiment of a plurality of pages, provide page multiplexer 350, so that read 470 is multiplexed to individual page.
Control circuit 410 is cooperated with read 470 so that memory array 400 execute stores are operated.Control circuit 410 comprises address decoder 414 and energy supply control module 416 on state machine 412, the chip.State machine 412 provides the chip level control to storage operation.Address decoder 414 provides address interface between main frame or the employed address of Memory Controller to demoder 330 and 370 employed hardware addresss on the chip.During storage operation, energy supply control module 416 controls are fed to the power and the voltage of word line and bit line.
The preferred arrangements of the storage arrangement shown in Figure 40 B key diagram 40A.On the opposite side of memory array 400, implement of the access of various peripheral circuits with symmetric mode, make that access line and the circuit on each side reduces by half memory array 400.Therefore, with row decoder be divided into lines demoder 430A and 430B, and column decoder is divided into column decoder 460A and 460B.Row of memory cells is being divided among the embodiment of a plurality of blocks, page or leaf multiplexer 450 is being divided into page a multiplexer 450A and a 450B.Similarly, read is divided into the read 470B that is connected to the read 470A of bit line from array 400 bottoms and is connected to bit line from array 400 tops.In this way, the density of read/write module is reduced by half in essence, and therefore sensing module row 480 density is reduced by half in essence.To shift the data of the read/write module that is directed into place, array top via the I/O at top.Similarly, will shift the data of the read/write module that is directed into place, array bottom via the I/O of bottom.
Figure 41 illustrates in greater detail the sensing module shown in Figure 40 A.Each sensing module 480 comprises in essence: sensor amplifier 482 is used for the conducting state of readout memory unit; One group of data latches 484 is used to store sense data or data to be programmed; And I/O circuit 486, be used for and PERCOM peripheral communication.Disclosed a kind of preferred sensor amplifier in the 2004-0109357-A1 U.S. Patent Publication case, the whole disclosure of this case is incorporated herein with the form of quoting.
During programming operation, at first with selected word line and bit line addressing.Then data to be programmed are transferred to other data latches via the I/O port.Then, in that before the starting program, first pairs of bit line is carried out precharge by applying program voltage to word line.Can be considered as programming setting with applying program voltage step before.When the sizableness of page or leaf was big, it is also longer that programming data is transferred to the time required in the data latches.
During main frame write, main frame at first sent host write command, and it indicates the scope of the data unit that its expectation writes to storage arrangement.Then by the data unit in the described scope of data unit ground transmission, till the reach end.Decide on agreement, transmission may unexpectedly be interrupted, and can send remaining data unit in new write command.
In order to improve write performance, needs are had pipeline operation, wherein the program setting up procedure can take place when still receiving data unit.Yet, can data unit recorded in the multithread scheme of any memory storage in a plurality of memory storages according to the certain data units that receives, addressing to the record that arrives given memory storage will not determined, till in fact interruptedly not receiving those specific data units.
In order to overcome this problem, use predictability pipeline scheme.If those certain data units of finding to cause to arrive the record of given memory storage are in the indicated scope of host write command, then given memory storage will be configured to immediately for programming.When in fact receiving those specific data units, given memory storage will be prepared the programming to data unit, and not have the delay that causes because of programming setting.On the other hand, if those specific data units can't be specialized because of interruption, then will abandon programming, but will select another memory storage to be provided with and supply to programme subsequently at the programming setting of given memory storage.
Figure 42 is the process flow diagram of explanation according to the multi-stream update of the use predictability pipeline scheme of preferred embodiment.
Step 500: first and second memory storages that are provided for writing down host data units.For instance, first memory storage is a update blocks, and it is the erasable area piece that is exclusively used in the storage update data; And second memory storage is a high speed temporary storage block, and it is another erasable area piece that is used for the more new data that is transported to update blocks is carried out adhoc buffer.
Step 510: the host write command that receives the scope of indication data unit to be written.
Step 512: satisfy the data unit that data unit is recorded the predetermined condition of first memory storage if the scope of data unit contains, then proceed to step 520, otherwise proceed to step 530.For instance, erasable area block organization is become multipage, each page can be stored a plurality of data units that can programme together.Data unit is stored in the page or leaf with in logic sequential order, makes each data unit have the predetermined page skew.The predetermined condition that records update blocks is in the time can writing down whole page or leaf.When existence has the data unit of last page skew is adequate condition, wherein forms whole page by the data unit of filling up in advance in case of necessity before any in page or leaf.If do not satisfy predetermined condition, then will record high speed temporary storage block to host data.
Step 520: the address is set to prepare to record first memory storage.For instance, if scope comprises the data unit with last page skew, then will suppose whole page or leaf is recorded update blocks.In this case, with the new page or leaf in the addressing update blocks for record.
Step 522: in data latches, load the data that receive, to prepare to record first memory storage.In case receive data unit from main frame, just it be loaded in the data latches for the new page or leaf of programming.
Step 524: if in fact receive the data unit that satisfies predetermined condition, then proceed to step 540, otherwise proceed to step 526.For instance, when in fact when main frame receives the data unit with last page skew, can form the whole page or leaf of prediction undoubtedly.
Step 526: end to be used to record the setting of first memory storage.Proceed to step 530.For instance, arriving never because of interruption if having the anticipatory data unit of last page skew, no longer is real for writing down whole page prediction to update blocks then.In the case, must abandon programming setting to update blocks.As an alternative, will be provided with for programming high speed temporary storage block now.
Step 530: the address is set to prepare to record second memory storage.For instance, when the predetermined condition that whole page or leaf is recorded update blocks does not satisfy, will record high speed temporary storage block to host data.In the case, with the new page or leaf in the addressing high speed temporary storage block for record.
Step 532: in data latches, load the data that receive and record second memory storage with preparation.In case receive data unit from main frame, just will be loaded into it in data latches for the new page or leaf of programming.
Step 540: with the data programing in the data latches to through the memory storage of addressing.For instance, when the record of the prediction of confirming to arrive update blocks or high speed temporary storage block by the data unit that receives, can programme without delay block is set.
Step 550: finish current main frame and write.
Decide on memory architecture, step 520 can become different order with 530, for example can select the address after the loading data latch in step 522 or step 532.
In another preferred embodiment, when receiving data and uncertain when being the data recording to the first that will receive or second memory storage when originally, with the data load that receives in the two the data latches of programmed circuit of first and second memory storages.In this way, data will can be used for first or second memory storage is programmed all the time immediately.Under special circumstances, the shared phase of first and second memory storages data latches on the same group.For instance, when first and second memory storages were positioned at same memory plane, it can be by same group of programmed circuit with same group of sensor amplifier and data latches service.In such cases, no matter be first or second memory storage of will programming, all will be in the data latches of one group of acquiescence data load.
, for example be positioned at conplane different memory page or leaf or be positioned under the situation on different memory plane by under on the same group the situation of data latches service not at first and second memory storages, can be with data load to two groups of data latches.
Figure 43 is the process flow diagram of explanation according to the multi-stream update of another embodiment, wherein loading procedure data before sending correct destination-address.
Step 600: provide first and second memory storages to be used to write down host data units.
Step 610: receive host data.
Step 620: when receiving data with data load to being used for to the first memory storage data programmed latch and being used for to the second memory storage data programmed latch.
Step 630: whether satisfy predetermined condition according to the data that receive and come the addressing first or second memory storage for record.
Step 640: data are programmed into memory storage through addressing from data latches.
Step 650: finish current main frame and write.
Though described the present invention about various one exemplary embodiment, will understand, the present invention has the right to be subjected to the interior protection of full breadth of appended claims.