Search Images Maps Play YouTube News Gmail Drive More »
Sign in
Screen reader users: click this link for accessible mode. Accessible mode has the same essential features but works better with your reader.

Patents

  1. Advanced Patent Search
Publication numberUS20070226452 A1
Publication typeApplication
Application numberUS 11/527,040
Publication dateSep 27, 2007
Filing dateSep 26, 2006
Priority dateJun 9, 2004
Also published asUS7194596, US20050278479
Publication number11527040, 527040, US 2007/0226452 A1, US 2007/226452 A1, US 20070226452 A1, US 20070226452A1, US 2007226452 A1, US 2007226452A1, US-A1-20070226452, US-A1-2007226452, US2007/0226452A1, US2007/226452A1, US20070226452 A1, US20070226452A1, US2007226452 A1, US2007226452A1
InventorsChien-Hung Wu, Jen-Chieh Lou, Chien-Hua Chu, Jui-Chien Chen
Original AssigneeSimpletech Global Limited
Export CitationBiBTeX, EndNote, RefMan
External Links: USPTO, USPTO Assignment, Espacenet
Data management for a flash storage device
US 20070226452 A1
Abstract
A flash storage device for transferring data to and from a host. The flash storage uses a controller to data transfer in the flash storage device, a buffer to temporarily store data for transfer between the host and the flash storage device, a first table for maintaining storage information relating to the flash storage; and a second table for maintaining information relating to the association of virtual sectors to the logical sectors, wherein the controller transfers data between the host and the flash storage and updates the first table and the second table to reflect the transfer of the data. The first table and the second table contain include addressing and status information for a more efficient and improved data transfer.
Images(5)
Previous page
Next page
Claims(20)
1. A flash storage device, comprising:
a flash storage comprising physical storage blocks, wherein physical storage blocks are associated with virtual blocks, wherein physical storage blocks comprise one or more physical storage sectors, and wherein virtual blocks comprise one or more virtual sectors;
a controller for managing data transfer in the flash storage device;
a buffer for storing data for transfer between a host and the flash storage device, wherein the host sends and receives logical blocks comprising one or more logical sectors, and wherein logical sectors are associated with virtual sectors;
a first table for maintaining storage information relating to the flash storage; and
a second table for maintaining information relating to the association of virtual sectors to the logical sectors,
wherein the controller transfers data between the host and the flash storage and updates the first table and the second table to reflect the transfer of the data.
2. The flash storage device of claim 1, wherein each physical storage block is provided with one first table and one second table.
3. The flash storage device of claim 2, wherein the first table contains an indicator of a free location in the physical storage block for writing data.
4. The flash storage device of claim 2, wherein the first table contains an indicator of whether the physical storage block is full.
5. The flash storage device of claim 2, wherein the first table contains a physical status of the physical storage block, wherein the physical status indicates whether the physical storage block is in a good or bad condition.
6. The flash storage device of claim 2, wherein the first table contains an identification of the virtual block associated with the physical storage block.
7. A method of managing data in a flash storage device, comprising:
providing a flash storage comprising physical storage blocks, wherein physical storage blocks are associated with virtual blocks, wherein physical storage blocks comprise one or more physical storage sectors, and wherein virtual blocks comprise one or more virtual sectors;
providing a controller for managing data transfer in the flash storage device;
providing a buffer for storing data for transfer between a host and the flash storage device, wherein the host sends and receives logical blocks comprising one or more logical sectors, and wherein logical sectors are associated with virtual sectors;
providing a first table for maintaining storage information relating to the flash storage; and
providing a second table for maintaining information relating to the association of virtual sectors to the logical sectors,
wherein the controller transfers data between the host and the flash storage and updates the first table and the second table to reflect the transfer of the data.
8. The method of claim 7, wherein each physical storage block is provided with one first table and one second table.
9. The method of claim 8, wherein the first table contains an indicator of a free location in the physical storage block for writing data.
10. The method of claim 8, wherein the first table contains an indicator of whether the physical storage block is full.
11. The method of claim 8, wherein the first table contains a physical status of the physical storage block, wherein the physical status indicates whether the physical storage block is in a good or bad condition.
12. The method of claim 8, wherein the first table contains an identification of the virtual block associated with the physical storage block.
13. A flash storage device for receiving data from and sending data to a host device, wherein the host sends and receives logical blocks comprising one or more logical sectors, and wherein logical sectors are associated with virtual sectors, comprising:
a flash storage comprising physical storage blocks, wherein physical storage blocks are associated with virtual blocks, wherein physical storage blocks comprise one or more physical storage sectors, and wherein virtual blocks comprise one or more virtual sectors;
a first table for maintaining storage information relating to the flash storage; and
a second table for maintaining information relating to the association of virtual sectors to the logical sectors,
wherein the flash storage device transfers data between the host and the flash storage and updates the first table and the second table to reflect the transfer of the data.
14. The flash storage device of claim 13, wherein each physical storage block is provided with one first table and one second table.
15. The flash storage device of claim 14, wherein the first table contains an indicator of a free location in the physical storage block for writing data.
16. The flash storage device of claim 14, wherein the first table contains an indicator of whether the physical storage block is full.
17. The flash storage device of claim 14, wherein the first table contains a physical status of the physical storage block, wherein the physical status indicates whether the physical storage block is in a good or bad condition.
18. The flash storage device of claim 14, wherein the first table contains an identification of the virtual block associated with the physical storage block.
19. The flash storage device of claim 14, wherein the first table contains an identification of the virtual block associated with the physical storage block and an indicator of a free location in the physical storage block for writing data.
20. The flash storage device of claim 14, wherein the second table is maintained in a random access memory.
Description
    CROSS-REFERENCE TO RELATED APPLICATIONS
  • [0001]
    This application is a continuation of U.S. patent application Ser. No. 10/863,210 filed Jun. 9, 2004, entitled, “Method of Efficient Data Management with Flash Storage System”, which is incorporated herein by reference.
  • FIELD OF THE INVENTION
  • [0002]
    This invention relates to a method of about data storage for a flash memory apparatus, more particularly to a method of about data access for a flash memory apparatus having a screen virtual sector table for each block to record the position relationship between the logic sector number and the virtual sector number.
  • BACKGROUND OF THE INVENTION
  • [0003]
    A flash memory is known to have characters of lower power consumption, fast data access rate, and can endure vibration and/or movement and hence is a kind of data storing media with highly stability and security. For the flash memory, the way of data programmed or erased is generally based on block by block. Once, the data are stored in the flash memory, no electrical power is demanded to preserve the data for over 10 years. This advantage makes other conventional portable stored device inferior. For instance, the hard disk driver or soft disk driver all require a reading head to read or write the data on the specific position of the optical or magnetic media disk rotating and bring by a stepping motor. In general, these types of data storage devices are not secure and inferior to the portable due to the vibration.
  • [0004]
    Hence, a data storage apparatus without stepping motor such as flash memory has a sufficient competitiveness to become a massive hit in the present and future. For example, the electrical merchandise such as DSC (digital still camera), mp3 player, hand-held computer or PDA (personal digital assistant), cellular phone, flash memory is a one of most critical members.
  • [0005]
    Generally, the basic architecture of a flash memory apparatus is blocks therein. Each block may contain 32, 64, 128 or more pages or sectors and each page consists of 1 or 4 virtual sector(s) in accordance the memory specification. Each sector, typically, is constituted 512.times.8 cells and thus can store 512 bytes. The virtual sector herein is distinct from the physical sector. Physical sectors may contain defect(s) in some bocks and result in data therein unstable. Hence, while formatting the flash memory, those blocks are unusable and will be marked. The virtual sectors are those sectors exclude sectors in the bad blocks. The virtual sectors are then renumbered by control chip.
  • [0006]
    On the other hand, the basic unit of data access for a host is not a block but a logic sector. Therefore, the host communicating with the flash memory apparatus demands a conversion table of logic sectors to virtual sectors.
  • [0007]
    For example: assume each block contains 64 pages and each page has 4 virtual sectors. The formula are as follows:
    Block number=quotient of (logic sector number/64 pages*4 virtual sectors)virtual sector number remainder of (logic sector number/64 pages*4 virtual sectors)
  • [0008]
    The flash memory can only be used after formatting. It is carried out in a manner of block by block electrically erasing electrical charges in the floating gate. The data writing or programming is by storing the charges into predetermined memory cells of the target block. Therefore, to satisfy the protocol of the conversion table of logic sectors to virtual sectors, the data stored in the target block has to move or copy frequently to stratify the protocol the conversion table. It is not only detrimental to the lifetime of the flash memory but also disadvantage to the writing efficiency.
  • [0009]
    An object of the present is to introduce concepts of screen table and virtual block to physical block table (V2P table). The screen virtual sector table keeps tracing the virtual sector number versus logic sector number and the V2P table having FSP (free sector point) to record the number of free pages make the host or control chipset know the status of available pages in the target block. With these tables, the data programming is no longer based on block but based on page or virtual sector. The data in the buffer is written into the target block not from a target page in accordance with the conversion table but from a lowest page if the target block is free. In another situation, the data in the buffer can still be written into a target block if the target pages are available.
  • SUMMARY OF THE INVENTION
  • [0010]
    The present invention discloses a data accessed management system for a flash memory device. Especially for those group of data in a unit of called logic sector are sent by a host that desires to be programmed into physical memories of the flash memory device. The data accessed management system comprises: (1) a number of virtual block cells; (2) a buffer; (3) a plurality of SVST (screen virtual sector table); and (4) a plurality of V2P (virtual block to physical block). The buffer is those memories belonged to the host or RAM in the controller of the flash device. The conversion relations between the logic sectors are sent by a host and the destinations of data stored are recorded in a SVST of corresponding virtual block. The V2P is memories of 16 bit cells with 9 bits recorded the virtual block number of the V2P belonged corresponding to what the physical block number is, 6 bits provides as free sector point (FSP) recording, and 1 bit for physical condition of the physical block recording.
  • [0011]
    Therefore, the data in the buffer are written by data management system from the sector number 0 of the destination block if the destination block is free. The FSP and SVST are updating too. In situation of the destination-block containing data already but the destination sectors are available, the data before the destination sectors are copied to a temperate block and then data in the buffer are programmed by the data management system into the destination sectors of the temperate block, and then the data post the destination sectors are copied to the corresponding sectors.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • [0012]
    The foregoing aspects and many of the attendant advantages of this invention will become more readily appreciated as the same becomes better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein:
  • [0013]
    FIG. 1 illustrates a format of 16 bits of V2P according to the present invention.
  • [0014]
    FIG. 2A shows data written into the virtual sectors in accordance with the order of the data received not the order of the logic sector number.
  • [0015]
    FIG. 2B shows a SVST that provides a conversion table between the logic sector number and the virtual sector number.
  • [0016]
    FIG. 3 to FIG. 6 shows flow charts for varied situations of data being programmed.
  • DETAILED DESCRIPTION OF THE INVENTION
  • [0017]
    According to the aforementioned description in the background of the invention, the operation no matter erasing or writing to the flash memory apparatus is basic on a unit of block. Conventionally, to make a group of data in a form of logic sectors sent from the host store to the virtual sectors of the flash memory apparatus satisfy the protocol provides by operation system, the target memory block (or called destination block) must be free. The flash memory apparatus in accordance with the present invention can overcome forgoing constraints. The data can be written into the destination block in order of the lowest page number to the higher page number no matter the lowest page number is the corresponding page of the logic sectors or not. Moreover, the data can still be written into target pages of data free of the destination block even the target block had data therein.
  • [0018]
    For purpose of illustrating convenience, in the present specification, one page equal to one sector is assumed and used as an exemplification. It is not intended to limit the claim scope. Any one who skills in the art comprehended that a page memory can have four sectors. In the situation, the difference is only the conversion between the logic sector number and the virtual sector number.
  • [0019]
    According to the present invention, each block has a V2P table. The V2P table is a description table of 16 bits. Form bit of the 0th to the 8.sup.th depicted the position relationship between the virtual block and physical block. From bit of the 9.sup.th bit to the Eth (Hex) bit, 6 bits in total depicted the usage status of the current block. These 6 bits are called FSP (free sector point) to indicate the usage status of the block. In a preferred embodiment, if FSP=111111 (b) represents the block is full and thus none of any page is available where “b” represents a binary code. The binary code in between 000001 to 111110 indicates the status of available page. For example: the FSP=000111 expresses 7 pages not available, the pages from 8.sup.th is free. As a result, the control chipset in the flash memory apparatus or the host can know the usage status of the block.
  • [0020]
    As the FSP=0, it expresses that the data stored in the virtual sectors are not according to the conventional conversion table. Consequently, while data are read or written, the screen virtual sector table (SVST) are referenced by the host or the control chipset.
  • [0021]
    The SVST is a table recorded in the static random access memory (SRAM), which dynamically records the position relationship between the logic sector number and the virtual sector number while the data in the buffer are written into the virtual sectors. FIG. 2A and FIG. 2B show an example. FIG. 2A illustrating the consecutive virtual sector numbers from 0 to 8 having individual contents to index the logic sector number in each. FIG. 2B is a SVST. In terms of the SVST, host or control chipset can find easily the corresponding destination of the logic sector number. For instance, referring to FIG. 2B, the content of the address 0 is 2 means that the 0th logic sector is positioned at the 2.sup.nd virtual sector, please see FIG. 2A. The content of the address 1 is 5 means that the 1.sup.st logic sector is positioned at the 5.sup.th virtual sector. The content of the address 2 is FF means that the 2.sup.nd logic sector is not written into the flash memory. The content of the address 3 is 8 means that the 3.sup.rd logic sector is positioned at the 8.sup.th virtual sector. Worthwhile, the contents of 1st, the 3.sup.rd, and the 8.sup.th of the virtual sectors shows the same data, “3” means only the 3.sup.rd logic sector is recorded into the 8.sup.th virtual sector. In the other words, the SVST traces the last logic sector position only, which is stored in the virtual sector 8.
  • [0022]
    In addition, the FSP depicted by 6 bits is for the situation of a block having 64 pages or under. It does not intend to limit the claim scope. Therefore, if a block content 128 pages, 7 bits are demanded to depict the FSP. The most significant bit (the F(Hex) bit is to depict the physical status of the block. As the Fth bit=1, it expresses physical status of the block is good, the Fth bit=0 expresses the block is bad.
  • [0023]
    FSP in V2P table and the SVST in accordance with the present invention can provide minimum data movement, extend the lifetime of the flash memory, and provide good writing efficiency without changing the conventional data storing protocol between the host and the flash memory. To illustrate, following flow charts will provided.
  • [0024]
    Six typical situations will be discussed to illustrate the data access management system for a flash memory device in accordance with the present invention. Assuming the data queue, such as a first record N having n logic sectors and/or a second record M having m logic sectors are received and temperate stored in buffers and waits to write into flash memory: The buffer is those memories belonged to the host or RAM in the controller of the flash device. The typical situations include: (1) the destination block is free; (2) the destination block of both first record N and second record M is the same and the destination block is free; (3) the destination block contains some data already, but the capacity of the destination sectors of the destination block are enough to store the first record; (4) the destination block contains some data already and the capacity of the destination sectors of the destination block are enough to store both records N and M; the starting destination sectors N′ and M′ are assumed, respectively, for record N and M herein. (5) the destination block contains some data already, but the capacity of the destination sectors of the destination block are enough to store the first record N and second record M. However, the position of the record M is before the record N; (6) the destination block contains some data already and the capacity of the destination sectors of the destination block are not enough to store the first record.
  • [0025]
    In cases of (1) and (2), please see a flow chart shown in FIG. 3. Firstly, in step 410, the step is to determine if the destination sector number begins from the sector number 0 of the destination block B or not. If it is true, proceeding to the step 420. The step 420 writes down n sectors of the first record N from the sector number 0 to sector number n−1 of the block B and then update the FSP value to FSP=n in binary code. The position relationship of the logical sector numbers to virtual sector numbers are recorded in the SVST.
  • [0026]
    After step 420, the step 430 is to determine if the buffer contains a second record M. If it is false then ending the procedure, see the step 431. If it is true, then proceeding to the step 440 to determine if the destination block of the second record M is the same block as record N. If the result of the step 440 is true, proceeding to the step 450 to determine if the destination sector of record M is just follow the ending of the record N, i.e. beginning from sector n. If the result of the step 450 is true, proceeding to the step 460. In the step 460, the record M is written into the virtual sectors and updates the FSP according to the occupations of the virtual sectors in this block. The position relationship of the logical sector numbers to virtual sector numbers are recorded into the SVST too. If the result of the step 450 is false, see the step 451, the record M is still written into the virtual sectors followed the ends of the record N. the SVST is updated and FSP=0 of this block is recorded.
  • [0027]
    Turning back to the step 440, if the result is false, then the step 441 is followed. In step 441, the block B data written is ended and finds another free block C to write the second record M. The procedures for the second record M written is the same as shown before for the first record N.
  • [0028]
    Turning back to the step 410, as the result of the step 410 is false. It means that the destination sector for the first record N is not from the virtual sector number 0. In accordance with the present invention, the first record N is still being written from the lowest virtual sector number 0 of the destination block B and FSP=0 is set, as is shown in the step 421. Thereafter, the step 423 is to determine if a second record M is in buffer. If it is false, then ending the programming. If the result of the step 423 is true. Another decision step 424 is proceeding. In step 424, it determines if the destination block of the second record M the same as the first record N. As the result is false, search another free block C, as is shown in step 427, and then programs the second record M to the virtual sector number 0 of the block C, as is shown in step 428. In case of the step 424 is true, the second record M is written and begins from the virtual sector number consecutive the ending virtual sector number of the first record N, please see the step 426. It is noted that the SVST and FSP are updated once while data are programmed into the flash memory apparatus in accordance with the present invention.
  • [0029]
    In case of (3), the destination block A contains data already but the destination sections of the block A are free for storing the data of the first record N. The starting destination sector of the record N is N′. Please see the flow chart in FIG. 4.
  • [0030]
    First, in step 520: finding a free block B and then go to the step 530: copy the contains from the virtual sector number 0 to the virtual sector number N′−1 of the block A to the block B as is seen in step 530. In step 540, the data of the first record N in the buffer is then written into block B from the virtual sector number N′ to sector N′+n−1. In step 550, the block A is marked as a replaced block. Afterward, in step 560, the remnant initiating from the virtue sector number N′+n of the block A are copied to the same virtual sectors numbers of the block B. In step 570, the block B is then marked as block A. The contains of the original block A are erased thereafter.
  • [0031]
    In case of (4), the destination block A contains data already and the destination sections of the block A are available for storing the data of the first record N and the second record M and the logic sector number of the record M is post the record N. In this situation, the programming procedures for the first record N are the same as aforementioned and thus the detailed descriptions before step 550 are skipped. Only the procedures for the second record M are illustrated. Please see the flow chart in FIG. 5. In step 610 the contents in the sectors from the virtual sector number N′+n to the virtual sector number M′−1 of the block A is copied to the corresponding virtual sectors of the block B. In step 620, the data of the record M in the buffer are then written into the destination sectors of the block B and the remnant of the block A from the virtual sector number M′+m are then copied to the corresponding virtual sectors block B. The resultant block B thus has all of the data in the block A and with additional records M and N. In step 630, the data in the original block A are erased and the block B is marked as block A.
  • [0032]
    In case of (5), the destination block A contains data already but the destination sections therein are available for storing the data of the first record N and the second record M but the logic sector number of the record M is prior to the record N. In this situation, the programming procedures for the first record N are the same as aforementioned and thus the detailed descriptions are skipped. Only the procedures for the second record M are illustrated. Please see the flow chart in FIG. 6. In step 710, a free block C is found. In step 720, the data of the block B from the sector number 0 to the sector number M′−1 are copied to the corresponding sectors of the block C. In step 730, the data of the record M in the buffer are copied to the block C from the virtual sector number M′ for m sectors in total. Thereafter, as is seen in step 740, the data in the block B from the virtual sector number M′+m to N′+n−1 are copied to the corresponding sections of the block C. The block C is thus served as a duplicated of block A. However, the block C furthermore has two records N and M. In step 760, the contents of the blocks A and B are erased. The block C is then marked as block A.
  • [0033]
    In case of (6), the destination block A contains data already and the destination sections in the block A are not available for the first record N. Surely, finding a free block is demanded.
  • [0034]
    Consequently, according to the present invention, if the value of FSP of the destination block is zero, the SVST is necessary for host accesses the data of the flash memory device. The SVST provides the corresponding relations of the virtual sector numbers of the destination block versus the logic sector numbers. If the FSP.noteq.0, the host can read the data in the flash memory device the same as those in the optical or magnetic disk. The value of FSP provides the usage information of the block.
  • [0035]
    The benefits of the present invention:
  • [0036]
    With SVST for each block, the data filled into the destination block flash memory can be from the lowest page number no matter the lowest page number is the destination or not if the destination's block is free. The data in the buffer can still be written into the destination's block having data already if and only if the destination's sectors are free. Even the block is not complete free. The data accessed from the flash memory according to the present invention are efficient.
  • [0037]
    As is understood by a person skilled in the art, the foregoing preferred embodiment of the present invention is an illustration of the present invention rather than limiting thereon. It is intended to cover various modifications and similar arrangements included within the spirit and scope of the appended claims, the scope of which should be accorded the broadest interpretation so as to encompass all such modifications and similar structure.
Patent Citations
Cited PatentFiling datePublication dateApplicantTitle
US6725321 *Feb 17, 2000Apr 20, 2004Lexar Media, Inc.Memory system
US6751155 *Sep 27, 2002Jun 15, 2004Lexar Media, Inc.Non-volatile memory control
US7024514 *Jun 19, 2002Apr 4, 2006Tdk CorporationMemory controller, flash memory system employing memory controller and method for controlling flash memory device
US7035993 *Apr 8, 2002Apr 25, 2006Simpletech, Inc.Flash memory data access method and configuration employing logical-to-virtual and virtual-to-physical sector mapping
US7194596 *Jun 9, 2004Mar 20, 2007Simpletech Global LimitedMethod of efficient data management with flash storage system
Referenced by
Citing PatentFiling datePublication dateApplicantTitle
US7879249Aug 3, 2007Feb 1, 2011Aptina Imaging CorporationMethods of forming a lens master plate for wafer level lens replication
US7919230Jun 25, 2008Apr 5, 2011Aptina Imaging CorporationThermal embossing of resist reflowed lenses to make aspheric lens master wafer
US8219764 *Mar 23, 2011Jul 10, 2012Siliconmotion Inc.System and apparatus for enhancing data storage efficiency of a flash memory by reducing time for reorganizing data
US8521971Apr 10, 2012Aug 27, 2013Siliconmotion Inc.System and apparatus for flash memory data management
US8769218Jul 23, 2013Jul 1, 2014Siliconmotion Inc.System and apparatus for flash memory data management
US20090032987 *Aug 3, 2007Feb 5, 2009Boettiger Ulrich CMethods of forming a lens master plate for wafer level lens replication
US20090325107 *Jun 25, 2008Dec 31, 2009Micron Technology, Inc.Thermal embossing of resist reflowed lenses to make aspheric lens master wafer
US20110173381 *Jul 14, 2011Siliconmotion Inc.System and apparatus for flash memory data management
Classifications
U.S. Classification711/203, 711/E12.008
International ClassificationG06F12/10, G06F12/08, G06F12/02
Cooperative ClassificationG06F2212/7203, G06F12/0246
European ClassificationG06F12/02D2E2