Nonvolatile memory devices and methods of controlling the same
First Claim
1. A method of writing data to a memory system comprising:
- receiving, by a memory controller, a sequence of N consecutive logical block addresses (LBAs) and logical sector data for each of the LBAs, from a host;
compressing, by the memory controller, the logical sector data;
executing, by the memory controller, a first one of a plurality of hash functions on a first LBA among the sequence to generate a first virtual address;
determining, by the memory controller, whether the first virtual address is occupied;
setting a destination address to the first virtual address when it is determined that the virtual address is not occupied;
setting the destination address to a second other virtual address generated from executing a second other one of the hash functions on the first LBA when it is determined that the first virtual address is occupied;
storing, the compressed data in a first physical sector of a nonvolatile memory associated with the destination address;
updating, by the memory controller, a mapping table to include to include a 1st entry corresponding to the first LBA and an index of the hash function that generated the destination address, and 2nd though Nth consecutive entries respectively corresponding to the 2nd through Nth LBAs each including the index and an offset to the 1st entry, andwhere N is at least two.
1 Assignment
0 Petitions
Accused Products
Abstract
A memory system includes a nonvolatile memory device having a plurality of physical sectors, a mapping table, and a memory controller including a plurality of hash functions. The memory controller is configured to access the physical sectors using the mapping table and the hash functions. The memory controller is configured to receive a sequence of logical block addresses (LBAs) from a host and logical sector data for each of the LBAs, generate a first virtual address by operating a selected hash function among the hash functions on a first logical block address (LBA) among the sequence, compress the logical sector data to generate compressed data, and store the compressed data in a first physical sector among the physical sectors that is associated with the first virtual address.
-
Citations
18 Claims
-
1. A method of writing data to a memory system comprising:
-
receiving, by a memory controller, a sequence of N consecutive logical block addresses (LBAs) and logical sector data for each of the LBAs, from a host; compressing, by the memory controller, the logical sector data; executing, by the memory controller, a first one of a plurality of hash functions on a first LBA among the sequence to generate a first virtual address; determining, by the memory controller, whether the first virtual address is occupied; setting a destination address to the first virtual address when it is determined that the virtual address is not occupied; setting the destination address to a second other virtual address generated from executing a second other one of the hash functions on the first LBA when it is determined that the first virtual address is occupied; storing, the compressed data in a first physical sector of a nonvolatile memory associated with the destination address; updating, by the memory controller, a mapping table to include to include a 1st entry corresponding to the first LBA and an index of the hash function that generated the destination address, and 2nd though Nth consecutive entries respectively corresponding to the 2nd through Nth LBAs each including the index and an offset to the 1st entry, and where N is at least two. - View Dependent Claims (2, 3, 4)
-
-
5. A memory system comprising:
-
a nonvolatile memory device comprising a plurality of physical sectors; a mapping table; and a memory controller including a plurality of hash functions, the memory controller configured to access the physical sectors using the mapping table and the hash functions, wherein the memory controller is configured to receive a sequence of N consecutive logical block addresses (LBAs) from a host and logical sector data for each of the LBAs, compress the logical sector data to generate compressed data, execute a first one of the hash functions on a first logical block address (LBA) among the sequence to generate a first virtual address, determine whether the first virtual address is occupied, set a destination address to the first virtual address when it is determined that the first virtual address is not occupied, set the destination address to a second other virtual address generated from executing a second other one of the hash functions on the first LBA when it is determined that the first virtual address is occupied, and store the compressed data in a first physical sector among the physical sectors that is associated with the destination address, wherein the memory controller updates the mapping table to include a 1st entry corresponding to the first LBA and an index of the hash function that generated the destination address, and 2nd though Nth consecutive entries respectively corresponding to the 2nd through Nth LBAs each including the index and an offset to the 1st entry, and where N is at least two. - View Dependent Claims (6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A method of reading data from a memory system comprising:
-
receiving, by a memory controller, a first logical block address (LBA) and a read command from a host; accessing, by the memory controller, an entry of a mapping table associated with the first LBA to retrieve an index and an offset, in response to receipt of the read command; generating, by the memory controller, a second LBA by subtracting the offset from the first LBA; selecting, by the memory controller, a hash function from among a plurality of different hash functions using the index; executing, by the memory controller, the selected hash function on the second LBA to generate a virtual address; and retrieving data from a physical sector of a nonvolatile memory associated with the virtual address, wherein the different hash functions generate a different virtual address when executed on a same value. - View Dependent Claims (17, 18)
-
Specification