A data storage device includes a flash memory, a data processing module and a flash memory controller. Corresponding to the operation of a host, the flash memory controller arranges the flash memory to store data, and it stores a mapping table to record the mapping information between the flash memory and the logical address of the host. When the host transmits a trim command to invalidate a specific portion of the mapping table and the host manages to read the data of the specific portion, the flash memory controller sets up a flag to be open so that the data is transmitted to the host without the implement of the data processing module.
|
1. A data storage device, comprising:
a flash memory;
a data processing module; and
a flash memory controller, under operation of a host, arranging the flash memory to store data, and storing a mapping table to record mapping information between logical addresses and physical addresses of the data in the flash memory,
wherein:
when the host transmits a trim command to invalidate a specific portion of the mapping table first and the host reads data corresponding to the specific portion, the flash memory controller sets up a flag to be open so that the data corresponding to the specific portion is transmitted to the host without process of the data processing module, wherein the data corresponding to the specific portion comprises original data and a data integrity field (DIF) for protecting the original data, wherein the data integrity field comprises a guard field, an application field and a reference tag.
10. A method for operating a data storage device which comprises a flash memory, a data processing module and a flash memory controller, the method comprising:
arranging the flash memory to store data under operation of a host;
storing a mapping table to record mapping information between logical addresses and physical addresses of the data in the flash memory; and
when the host transmits a trim command to invalidate a specific portion of the mapping table and the host reads data corresponding to the specific portion, setting up a flag to be open so that the data corresponding to the specific portion is transmitted to the host without process of the data processing module, wherein the data corresponding to the specific portion comprises original data and a data integrity field (DIF) for protecting the original data, wherein the data integrity field comprises a guard field, an application field and a reference tag.
2. The data storage device as claimed in
the flag is the last bit of the guard field.
3. The data storage device as claimed in
the flag is a portion of a field, when the host manages to read the data corresponding to the specific portion, the flash memory controller sets up the flag to be open, and sets up another portion of the field other than the flag to be 0 or 1, to comply with a standard of deterministic trim (DRAT).
4. The data storage device as claimed in
the data processing module comprises a randomizer which is coupled to the flash memory controller to scatter the stored data so that voltage of the data is distributed uniformly.
5. The data storage device as claimed in
the data processing module comprises a corrector which is coupled to the randomizer to correct the stored data.
6. The data storage device as claimed in
the data processing module comprises an encryptor which is coupled to the corrector to encrypt the stored data.
7. The data storage device as claimed in
the data processing module comprises a microprocessor which is coupled to the host to receive a command from the host and provides data transmission between the host and the data storage device.
8. The data storage device as claimed in
the randomizer is further utilized to determine whether a flag of data from the flash memory controller is open or closed, wherein:
when the flag of the data from the flash memory is open, the data from the flash memory is not processed by the randomizer, the corrector and the encryptor, and the data from the flash memory is directly transmitted to the microprocessor by the flash memory controller; and
when the flag of the data from the flash memory is closed, the data from the flash memory is processed by the randomizer, the corrector and the encryptor.
9. The data storage device as claimed in
the flag of the data from the flash memory is a portion of a field, when the flag of the data from the flash memory is open, after the data from the flash memory is received by the microprocessor, the microprocessor sets up the flag of the data from the flash memory to be closed so that the field is 0 or 1 entirely, and adjusted data is transmitted to the host.
11. The method for operating the data storage device as claimed in
the flag is the last bit of the guard field.
12. The method for operating the data storage device as claimed in
when the host manages to read the data corresponding to the specific portion, setting up the flag to be open, and setting up another portion of the field other than the flag to be 0 or 1, to comply with standard of deterministic trim (DRAT).
13. The method for operating the data storage device as claimed in
scattering the stored data so that voltage of the data is distributed uniformly by a randomizer of the data processing module.
14. The method for operating the data storage device as claimed in
correcting the stored data by a corrector of the data processing module.
15. The method for operating the data storage device as claimed in
encrypting the stored data by an encryptor of the data processing module.
16. The method for operating the data storage device as claimed in
by utilizing a microprocessor of the data processing module, receiving a command from the host and implementing providing data transmission between the host and the data storage device.
17. The method for operating the data storage device as claimed in
determining whether a flag of data from the flash memory controller is open or closed by the randomizer, wherein:
when the flag of the data from the flash memory is open, the data from the flash memory is not processed by the randomizer, the corrector and the encryptor, and the data from the flash memory is directly transmitted to the microprocessor by the flash memory controller; and
when the flag of the data from the flash memory is closed, the data from the flash memory is processed by the randomizer, the corrector and the encryptor.
18. The method for operating the data storage device as claimed in
the flag of the data from the flash memory is a portion of a field, when the flag of the data from the flash memory is open, after the data from the flash memory is received by the microprocessor, setting up the flag of the data from the flash memory to be closed so that the field is 0 or 1 entirely by the microprocessor, and transmitting adjusted data to the host.
|
This Application claims priority of Taiwan Patent Application No. 106115909, filed on May 11, 2017, the entirety of which is incorporated by reference herein.
The present invention relates to data storage devices, and in particular to space-trimming of non-volatile memory.
There are various non-volatile memories used in data storage devices for long-term data storage, such as flash memory, magnetoresistive RAM, ferroelectric RAM, resistive RAM, spin transfer torque-RAM (STT-RAM), and so on.
The performance of a data storage device is limited due to the operational characteristics of non-volatile memory. How to enhance the performance of data storage devices is an important issue in this area of technology.
An integrated trim technology is disclosed by the present invention. When the host manages to read invalid data which has been trimmed, the data storage device can transmit fixed and identical data to the host through different data transmission routes.
A data storage device includes a flash memory, a data processing module and a flash memory controller. Corresponding to the operation of a host, the flash memory controller arranges the flash memory to store data, and it stores a mapping table to record the mapping information between the flash memory and the logical address of the host. When the host transmits a trim command to invalidate a specific portion of the mapping table and the host manages to read the data of the specific portion, the flash memory controller sets up a flag to be open so that the data is transmitted to the host without the implement of the data processing module.
A method for operating a data storage device is provided. The data storage device includes a flash memory, a data processor and a flash memory controller. The method includes arranging the flash memory to store data under operation of a host; storing a mapping table to record mapping information between a logical address of the host and the flash memory; and when the host transmits a trim command to invalidate a specific portion of the mapping table and the host manages to read the data of the specific portion, setting up a flag to be open so that the data is transmitted to the host without the implement of the data processing module.
A detailed description is given in the following embodiments with reference to the accompanying drawings.
The present invention can be more fully understood by reading the subsequent detailed description and examples with references made to the accompanying drawings, wherein:
The following description shows exemplary embodiments of carrying out the invention. This description is made for the purpose of illustrating the general principles of the invention and should not be taken in a limiting sense. The scope of the invention is best determined by reference to the appended claims.
There are various forms of non-volatile memory for long-term data retention, such as flash memory, magnetoresistive RAM, ferroelectric RAM, resistive RAM, spin transfer torque-RAM (STT-RAM) and so on. The following discussion uses flash memory in particular as an example.
Today, flash memory is usually used as a storage medium in a data storage device, such as a memory card, a universal serial bus (USB) flash device, a solid state disk (SSD, NVMe, M.2, U.2), and so on. In an exemplary embodiment, a flash memory and a controller may be wrapped together as a multi-chip package named eMMC.
A data storage device using a flash memory as a storage medium may be applied to a variety of electronic devices. The electronic device may be a smartphone, a wearable device, a tablet computer, a virtual reality device, etc. A central processing unit (CPU) in an electronic device may be regarded as a host that operates the connected data storage device.
One physical page is further discussed in
However, the mapping information recorded in the spare area SA is not always valid. The flash memory 120 has a special physical property: the updated data is not overwritten on the storage space of old data. Instead, the updated data is written to a free space and the old data in the original space is invalidated. A mapping table (e.g. a table H2F showing the mapping from logical addresses to physical space) has to be dynamically managed for the flash memory 120.
In an exemplary embodiment, each host block-mapping table is 64 KB (recorded in four consecutive physical pages) to show mapping information of 8K of data. One host block-mapping table may correspond to a section of logical addresses, like GPH#0 . . . #8191, GPH#8192 . . . #16383, GPH#16384 . . . #24575, GPH#24576 . . . #32767, or GPH#32768 . . . #40959, and so on. After being updated, the host block-mapping tables H2F_H#1, H2F_H#2 . . . H2F_H#Z may be stored in a specific physical block (e.g. a system block). In order to speed up the reading of the host block-mapping tables H2F_H#1, H2F_H#2 . . . H2F_H#Z, a list of indicators or a high-level mapping table may be provided to show where the different host block-mapping tables H2F_H#1, H2F_H#2 . . . H2F_H#Z are stored in the system block. The flash memory 120 is operated according to the mapping table H2F.
The trim command is utilized to enhance the performance of the data storage device and complies with the operating feature of the flash memory 120. The host can issue a trimming command to the data storage device to inform that one or some logical addresses (the target logical address) could be removed (which means that the data of the target logical address is no longer invalid). Accordingly, in the data storage device, the records of one or some logical addresses may be removed or amended from the mapping table H2F. Afterwards, the physical space with only invalid data remaining from the target logical address may be recycled or reused by a garbage collection.
The front end FE is responsible for communication between the data storage device 100 and a host 200. The back end BE is responsible for operating the flash memory 120 so that the host 200 can write or read data for the flash memory 120. According to such a two-layer control structure, the communication between the host 200 and the data storage device 100 is specifically managed at the front end FE. Thus, the throughput between the host 200 and the data storage device 100 is considerably improved. The complexity of debugging is also reduced, no matter whether it is at the front end FE or at the back end BE.
In addition, the host 200 is connected to the data storage device 100A via a bus interface. The commands that comply with the NVMe standard (referred to as external commands in the following descriptions) which are issued from the host 200 are transmitted to the microprocessor 110 to be scheduled and then transmitted to the back end BE. In other words, the microprocessor 110 communicates with the host 200 through the bus interface, and the communication between the data storage device 100 and the host 200 can be simplified. The external commands are scheduled by the microprocessor 110 according to the sequence of setting or receiving priorities. In one embodiment, the microprocessor 110 may support an NVMe command protocol, an ATA (advanced technology attachment) command protocol, a PATA (parallel ATA) command protocol, a SATA (serial ATA) command protocol, a SCSI (small computer system interface), an eMMC or UFS.
The process for writing data is that the microprocessor 110 transmits the data 10 through the data processing module 111 to the flash memory controller 122. Specifically, the encryptor 112 of the data processing module 111 executes encryptions for the data 10. For example, the above encryption includes the Advanced Encryption Standard (AES) or the RSA encryption. Afterwards, the corrector 114 generates an additional correction code based on the encrypted data 10 for providing protections on the accuracy of the data 10. The above correction includes the CRC correction or the ECC correction. Furthermore, the data 10 with the correction code is scattered by the randomizer 116 so that the distribution of value (i.e., 0 or 1) of the randomized data 10 is more average than before. Afterwards, the randomizer 116 transmits the randomized data 10 to the flash memory controller 122. Finally, the flash memory controller 120 writes the randomized data 10 to the flash memory 120, and stores the logical address and physical address of the randomized data 10 to the mapping table H2F or the host block mapping table H2F_H. On the contrary, the processing for reading data is that the flash memory controller 122 transmits data 10 through the data processing module 111 to the microprocessor 110.
In one embodiment, the mapping table H2F could be stored by the flash memory controller 122. The trim command could be transmitted by the host to the data storage device 100 for indicating the removal of one or several target logical addresses. Afterwards, the one or several target logical addresses are removed from the mapping table H2F or the target physical address corresponding to target logical address is amended to be a specific value (such as 0xFFFF) by the flash memory controller 122 of the data storage device 100 directly or indirectly to complete the execution of the trim command. The mapping table H2F could be updated dynamically corresponding to the trim command of the host 200.
In the embodiment of
In addition, the flag is the last bit of the guard field 10D1. When the flag is 1, it means that it is open. When the flag is 0, it means that it is closed. In other embodiments, when the flag is 0, it means that it is open. When the flag is 1, it means that it is closed, which is not limited by the present invention. In one embodiment, when the target logical address which is accessed by the host 200 has been removed from the mapping table H2F or the host block mapping table H2F_H, or the target physical address corresponding to the target logical address which is going to be accessed has been amended to be a specific value, the flash memory controller 122 sets the flag to be 1, and sets all portions other than the flag to be 0. In other embodiments, all portions other than the flag are set to be 1, which is not limited by the present invention.
Because the flag is set to be 1, the data 10′ is directly transmitted to the microprocessor 110 through the route R2. Afterwards, the microprocessor 110 can release the setting of the flag, and can transmit the data 10′ which flag has been released to the host 200. Therefore, the data 10′ received by the host 200 is a predetermined value. By utilizing the data processing method of the present invention, whenever the target logical address which is accessed by the host 200 has been removed from the mapping table H2F or the host block mapping table H2F_H, or the target physical address corresponding to the target logical address which is going to be accessed has been amended to be a specific value, the data storage device 100 transmits the predetermined value to the host 200 in order to meet the standard of the deterministic trim (DRAT).
If the target logical address which is going to be accessed by the host 200 is on the mapping table H2F or the host block mapping table H2F_H and the target physical address is not specific value, the flash memory controller 122 reads the target physical address corresponding to the target logical address to obtain the data 10 and transmits the data 10 to the randomizer 116. The randomizer 116 transmits the data 10 through the route R1 so that the data 10 is implemented by the data processing module 111 and transmitted to the microprocessor 110 and the host 200. If the data 10′ is also transmitted to the microprocessor 110 through the route R1, the content of the data 10′ becomes meaningless value after it is implemented by the data processing module 111, and error might occur on the host 200. Therefore, the present invention provides a data splitting processing method (through two different routes R1 and R2) so that the data storage device 100 complies with the standard of deterministic trim (DRAT). Accordingly, an optimal and economic solution is provided without changing the original data processing flow (the route R1).
Specifically, the randomizer 116 of the data storage device 100 determines whether the flag of the data from the flash memory controller 122 is open or closed. When the randomizer 116 determines that the flag is open, the route R2 will be adopted so that the data 10′ will not be implemented by the randomizer 116, the corrector 114 and the encryptor 113. When the randomizer 116 determines that the flag is closed, the route R1 will be adopted so that the data 10′ will be implemented by the randomizer 116, the corrector 114 and the encryptor 113. In other embodiments, whether the flag is open or closed could also be determined by the flash memory controller 122, which is not limited by the present invention.
If the result is yes, step S610 will be executed. The flash memory controller 122 generates the data 10′, the data 10′ is predetermined value, and the flag of data 10′ is set to be open. Afterwards, in step S612, the data 10′ is transmitted to the microprocessor 110. If the result is not, step S614 will be executed. The flash memory controller 122 obtains the target physical address corresponding to the target logical address based on the mapping table H2F or the host block mapping table H2F_H. Afterwards, in step S616, the data 10 is obtained from the target physical address and transmitted to the data processing module 111.
Other techniques that use the aforementioned concepts to integrate space-trimming are within the scope of the disclosure. Based on the above contents, the present invention further relates to methods for operating a data storage device.
While the invention has been described by way of example and in terms of the preferred embodiments, it should be understood that the invention is not limited to the disclosed embodiments. On the contrary, it is intended to cover various modifications and similar arrangements (as would be apparent to those skilled in the art). Therefore, the scope of the appended claims should be accorded the broadest interpretation so as to encompass all such modifications and similar arrangements.
Patent | Priority | Assignee | Title |
11307979, | Nov 29 2019 | Silicon Motion, Inc. | Data storage device and non-volatile memory control method |
11397669, | Nov 29 2019 | Silicon Motion, Inc. | Data storage device and non-volatile memory control method |
11748023, | Nov 29 2019 | Silicon Motion, Inc. | Data storage device and non-volatile memory control method |
11869598, | Jun 25 2021 | Samsung Electronics Co., Ltd. | Nonvolatile memory devices having adaptive write/read control to improve read reliability and methods of operating the same |
Patent | Priority | Assignee | Title |
20160224588, | |||
20160259583, | |||
CN106560781, | |||
TW201217968, | |||
TW201337554, | |||
TW201514697, | |||
TW201624491, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Dec 12 2017 | HSU, SHENG-I | SILICON MOTION, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 044473 | /0685 | |
Dec 22 2017 | Silicon Motion, Inc. | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Dec 22 2017 | BIG: Entity status set to Undiscounted (note the period is included in the code). |
Feb 04 2023 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Date | Maintenance Schedule |
Sep 10 2022 | 4 years fee payment window open |
Mar 10 2023 | 6 months grace period start (w surcharge) |
Sep 10 2023 | patent expiry (for year 4) |
Sep 10 2025 | 2 years to revive unintentionally abandoned end. (for year 4) |
Sep 10 2026 | 8 years fee payment window open |
Mar 10 2027 | 6 months grace period start (w surcharge) |
Sep 10 2027 | patent expiry (for year 8) |
Sep 10 2029 | 2 years to revive unintentionally abandoned end. (for year 8) |
Sep 10 2030 | 12 years fee payment window open |
Mar 10 2031 | 6 months grace period start (w surcharge) |
Sep 10 2031 | patent expiry (for year 12) |
Sep 10 2033 | 2 years to revive unintentionally abandoned end. (for year 12) |