A storage device includes a main storage and a storage controller to control the main storage. The main storage stores data and includes a plurality of nonvolatile memory devices. The storage controller loads at least one of (a) at least a portion of mapping tables and (b) at least one of a portion of directories to a host memory buffer included in an external host device, based on at least one of a size of the host memory buffer and locality information associated with a data access pattern of the host device. The mapping tables are stored in the nonvolatile memory devices and the mapping tables indicate a mapping relationship between a physical address and a logical address of corresponding ones of the nonvolatile memory devices. The directories store address information of the mapping tables.
|
16. A storage device comprising:
a plurality of nonvolatile memory devices configured to store mapping tables and directories; and
a storage controller configured to control the plurality of nonvolatile memory devices and to perform a memory operation on a memory region of the plurality of nonvolatile memory devices, the storage controller including:
a processor configured to perform an operation for data exchange between an external device and the plurality of nonvolatile memory devices;
an error correction code (ECC) unit configured to generate an error correction code (ECC) for data that is received from the external device;
a first interface through which the processor communicates with the external device;
a second interface through which the processor communicates with the plurality of nonvolatile memory devices; and
a loading controller, based on a size of a buffer memory and/or locality information, configured to load to the buffer memory at least a portion of directories in a first mode and configured to load to the buffer memory at least a portion of mapping tables and at least a portion of the directories in a second mode,
wherein the first mode includes preferential loading of the directories from the plurality of nonvolatile memory devices to the buffer memory, and
the second mode includes merged loading of the directories and the mapping tables from the plurality of nonvolatile memory devices to the buffer memory.
1. A storage device comprising:
a buffer memory;
a plurality of nonvolatile memory devices, each of the plurality of nonvolatile memory devices including:
a memory cell array including a plurality of memory cells;
an address decoder coupled to the memory cell array through a plurality of word lines;
a page buffer circuit coupled to the memory cell array through a plurality of bit lines;
a data input/output (I/O) circuit coupled to the page buffer circuit through a plurality of data lines;
a control circuit configured to control the page buffer circuit and the data input/output circuit; and
a voltage generator configured to generate word line voltages; and
a storage controller configured to control the plurality of nonvolatile memory devices and including:
a processor configured to perform an operation for data exchange between an external device and the plurality of nonvolatile memory devices;
an error correction code (ECC) unit configured to generate an error correction code (ECC) for data that is received from the external device;
a first interface through which the processor communicates with the external device;
a second interface through which the processor communicates with the plurality of nonvolatile memory devices; and
a loading controller, based on a size of the buffer memory and/or locality information, configured to load to the buffer memory at least a portion of directories in a first mode and configured to load to the buffer memory at least a portion of mapping tables and at least a portion of the directories in a second mode.
8. A storage device comprising:
a plurality of nonvolatile memory devices configured to store mapping tables and directories, each of the plurality of nonvolatile memory devices including:
a memory cell array including a plurality of memory cells;
an address decoder coupled to the memory cell array through a plurality of word lines;
a page buffer circuit coupled to the memory cell array through a plurality of bit lines;
a data input/output (I/O) circuit coupled to the page buffer circuit through a plurality of data lines;
a control circuit configured to control the page buffer circuit and the data input/output circuit; and
a voltage generator configured to generate word line voltages; and
a storage controller configured to control the plurality of nonvolatile memory devices and including:
a processor configured to perform an operation for data exchange between an external device and the plurality of nonvolatile memory devices;
an error correction code (ECC) unit configured to generate an error correction code (ECC) for data that is received from the external device;
a first interface through which the processor communicates with the external device;
a second interface through which the processor communicates with the plurality of nonvolatile memory devices; and
a loading controller configured to provide to the external device at least a portion of the directories in a first mode, and configured to provide to the external device at least a portion of the mapping tables and at least a portion of the directories in a second mode,
wherein the mapping tables indicate a mapping relationship between a physical address and a logical address of corresponding ones of the plurality of nonvolatile memory devices, and
the directories are configured to store address information of the mapping tables.
2. The storage device of
3. The storage device of
4. The storage device of
the mapping tables indicate a mapping relationship between a physical address and a logical address of corresponding ones of the plurality of nonvolatile memory devices.
5. The storage device of
the second mode includes merged loading of the directories and the mapping tables from the plurality of nonvolatile memory devices to the buffer memory.
6. The storage device of
7. The storage device of
9. The storage device of
10. The storage device of
11. The storage device of
the second mode includes merged loading of the directories and the mapping tables from the plurality of nonvolatile memory devices to the external device.
12. The storage device of
13. The storage device of
14. The storage device of
15. The storage device of
19. The storage device of
20. The storage device of
the directories are configured to store address information of the mapping tables.
|
This is a Continuation of U.S. application Ser. No. 16/506,793, filed Jul. 9, 2019, now U.S. Pat. No. 11,036,425, issued Jun. 15, 2021, and a claim a priority under 35 USC § 119 is made to Korean Patent Application No. 10-2018-0132843, filed on Nov. 1, 2018, in the Korean Intellectual Property Office (KIPO), the entire contents of which are hereby incorporated by reference.
The present inventive concepts relate generally to data processing, and more particularly to a storage device, a storage system including the same and a methods of operating a storage device.
A host typically uses a data storage device including nonvolatile memory such as flash memory. A flash translation layer (FTL) is utilized with flash memory to map logical addresses generated by the host and corresponding physical addresses used by the data storage device. One or more mapping table(s) associated with the FTL may be stored in the data storage device.
The data storage device may include a separate volatile memory (e.g., dynamic random access memory (DRAM) or static RAM (SRAM)) that may be used to rapidly access the mapping table(s). However, when power supplied to the data storage device is interrupted, the mapping table(s) stored in the volatile memory may be lost. Further, as the size of mapping table(s) increases, the amount of volatile memory used for storing mapping table(s) also increases, thereby driving up the cost and physical size of the data storage device.
Embodiments of the inventive concepts provide a storage device capable of reducing access time for accessing mapping tables, a storage system including a storage device capable of reducing access time for accessing mapping tables, and a method of operating a storage device capable of reducing access time for accessing mapping tables.
Embodiments of the inventive concepts provide a storage device including a main storage and a storage controller that controls the main storage. The main storage stores data and includes a plurality of nonvolatile memory devices. The storage controller loads at least one of (a) at least a portion of mapping tables and (b) at least one of a portion of directories to a host memory buffer included in an external host device, based on at least one of a size of the host memory buffer and locality information associated with a data access pattern of the external host device. The mapping tables are stored in the nonvolatile memory devices and the mapping tables indicate a mapping relationship between a physical address and a logical address of corresponding ones of the nonvolatile memory devices. The directories store address information of the mapping tables stored in the nonvolatile memory devices.
Embodiments of the inventive concepts further provide a storage system including a storage device and a host device. The storage device includes a main storage that stores data and a storage controller that controls the main storage, and the main storage includes a plurality of nonvolatile memory devices. The host device includes a host memory and controls the storage device. The host device allocates a portion of the host memory as a host memory buffer that is accessible by the storage controller, in response to a request from the storage device. The storage controller loads at least one of (a) at least a portion of mapping tables and (b) at least one of a portion of directories to the host memory buffer, based on at least one of a size of the host memory buffer and locality information associated with a data access pattern of the host device. The mapping tables are stored in the nonvolatile memory devices and the mapping tables indicate a mapping relationship between a physical address and a logical address of corresponding ones of the nonvolatile memory devices. The directories stores address information of the mapping tables stored in the nonvolatile memory devices.
Embodiments of the inventive concepts still further provide a method of operating a storage device including a main storage that stores data and a storage controller that controls the main storage. The main storage includes a plurality of nonvolatile memory devices. The method includes receiving, by the storage controller from an external host device, a size information of a host memory buffer included in the external host device that controls the storage device; and loading, by the storage controller, at least one of (a) at least a portion of mapping tables and (b) at least one of a portion of directories to the host memory buffer included in the external host device, based on at least one of a size of the host memory buffer and locality information associated with a data access pattern of the external host device. The mapping tables are stored in the nonvolatile memory devices and the mapping tables indicate a mapping relationship between a physical address and a logical address of corresponding ones of the nonvolatile memory devices, and the directories store address information of the mapping tables. The method further includes performing, by the storage controller, a memory operation, designated by a command, on a memory region of the nonvolatile memory devices designated by an address, by referring to the host memory buffer based on the command and the address received from the external host device.
Embodiments of the inventive concepts also provide a storage device including a main storage including nonvolatile memory devices that store directories and mapping tables, wherein the mapping tables indicate a mapping relationship between a physical address and a logical address of corresponding ones of the nonvolatile memory devices, and the directories store address information of the mapping tables stored in the nonvolatile memory devices; and a storage controller configured to control the main storage and selectively load the directories and the mapping tables from the nonvolatile memory devices to a host memory buffer of an external host device in a plurality of modes based on a size of the host memory buffer and a counted value of a number of misses indicative that a logical address received from the external host device does not match one of the entries in the host memory buffer. The plurality of modes include a first mode that includes preferential loading of the directories from the nonvolatile memory devices to the host memory buffer, a second mode that includes merged loading of the directories and the mapping tables from the nonvolatile memory devices to the host memory buffer, and a third mode that includes preferential loading of the mapping tables from the nonvolatile memory devices to the host memory buffer.
Accordingly, when a size of the host memory buffer is not capable of covering overall address space of mapping tables of the main storage in the storage device, the storage controller may dynamically load at least a portion of the mapping tables and a portion of the directories to the host memory buffer based on at least one of the size of the host memory buffer and the locality information associated with data access pattern. The storage controller may perform a memory operation on a memory location designated by a physical address corresponding to a logical address by referring to the host memory buffer. The storage controller may reduce access time for accessing the mapping tables.
Illustrative, non-limiting example embodiments will be more clearly understood from the following detailed description in conjunction with the accompanying drawings.
Various example embodiments will be described more fully hereinafter with reference to the accompanying drawings, in which some example embodiments are shown.
As is traditional in the field of the inventive concepts, embodiments may be described and illustrated in terms of blocks which carry out a described function or functions. These blocks, which may be referred to herein as units or modules or the like, are physically implemented by analog and/or digital circuits such as logic gates, integrated circuits, microprocessors, microcontrollers, memory circuits, passive electronic components, active electronic components, optical components, hardwired circuits and the like, and may optionally be driven by firmware and/or software. The circuits may, for example, be embodied in one or more semiconductor chips, or on substrate supports such as printed circuit boards and the like. The circuits constituting a block may be implemented by dedicated hardware, or by a processor (e.g., one or more programmed microprocessors and associated circuitry), or by a combination of dedicated hardware to perform some functions of the block and a processor to perform other functions of the block. Each block of the embodiments may be physically separated into two or more interacting and discrete blocks without departing from the scope of the inventive concepts. Likewise, the blocks of the embodiments may be physically combined into more complex blocks without departing from the scope of the inventive concepts.
Referring to
The host device 100 may control overall operation of the storage device 200. The host device 100 may exchange signals with storage device 200. The signals exchanged between the host device 100 and the storage device 200 may include for example a command, an address, data, or other types of signals.
The storage device 200 includes a storage controller 300 and a main storage 400, and the main storage 400 may include a plurality of nonvolatile storages (i.e., nonvolatile memory devices) 410˜4k0. Each of the nonvolatile storages 410˜4k0 (i.e., NVM1˜NVMk) may include NAND flash memories. Here, k is an integer greater than two.
The storage device 200 may further include a cache 210. The cache 210 is connected to the storage controller 300 and the main storage 400 and may temporarily store meta data stored in the nonvolatile storages 410˜4k0. The storage controller 300 may set the main storage 400 based on the meta data that is temporarily stored in the cache 210.
The storage controller 300 may exchange the signals such as a command, an address, data, or other types of signals with the host device 100. The storage controller 300 may write data in a corresponding nonvolatile storage and read data from a corresponding nonvolatile storage according to a command.
The plurality of nonvolatile storages 410˜4k0 may be used as a storage medium of the storage device 200. The nonvolatile storages 410˜4k0 may be connected to the storage controller 300 through a plurality of channel groups CHG1˜CHGk. Each of the channel groups CHG1˜CHGk may include at least one channel. One or more nonvolatile storages may be connected to one channel group. A nonvolatile storage connected to one channel group may be connected to the same data bus.
Although not illustrated, the storage device 200 may further include a pad to be connected to the host device 100. The storage device 200 can be easily attached to or detached from the host device 100 through the pad.
The pad may be formed inside the storage device 200 or may be formed in the form of connector outside the storage device 200. In some embodiments, the storage device 200 may not include the pad and may be connected to the host device 100 through a routing process.
Referring to
The bus 170 may refer to a transmission channel via which data is transmitted between the processor 110, the ROM 120, the host memory 130, the user interface 140, the storage interface 150 and the memory controller 160 of the host device 100.
The ROM 120 may store various application programs. For example, application programs supporting storage protocols such as Advanced Technology Attachment (ATA), Small Computer System Interface (SCSI), embedded Multi Media Card (eMMC), and Universal Flash storage (UFS) protocols and NVMe may be stored in ROM 120.
The host memory 130 may temporarily store data or programs.
The storage interface 150 may include interfaces supporting storage protocols such as SATA, SAS, eMMC, UFS and NVMe. The host device 100 may perform interfacing with the storage device 200 through NVMe protocol.
The user interface 140 may be a physical or virtual medium for exchanging information between a user and the host device 100, a computer program, etc., and includes physical hardware and logical software. For example, the user interface 140 may include an input device for allowing the user to manipulate the host device 100, and an output device for outputting a result of processing an input of the user.
The processor 110 may control overall operations of the host device 100. The processor 110 may for example generate a request (or, a command) for storing data in the storage device 200 or a request (or a command) for reading data from the storage device 200 by using an application stored in the ROM 120, and transmit the request to the storage device 200 via the storage interface 150.
The memory controller 160 may control the host memory 130 under control of the processor 110. The memory controller 160 may assign a portion of the host memory 130 as a host memory buffer that is accessible by the storage device 200 under control of the processor 110.
Referring to
The host memory buffer 133 may store meta data MTDT such as a directory DIR1 and mapping tables MT1˜MTp that the storage controller 300 loads.
Each of the mapping tables MT1˜MTp indicates a mapping relationship between a physical address and a logical address of a corresponding one of nonvolatile memory devices included in the nonvolatile storages 410˜40k, and the directory DIR1 may store address information of the mapping tables stored in one nonvolatile memory device. The storage controller 300 may map (convert) a logical address from the host device 100 to a physical address by referring to the meta data MTDT, and may perform a memory operation on at least one of the nonvolatile memory devices based on the physical address.
The processor 110 may load source codes stored in the main storage 400 to the host region 131 in the host memory 130 and may run various software such as an operating system and an application by executing the codes loaded to the host region 131. In addition, the processor 110 loads data stored in the storage device 200 and processes the data loaded to the host region 131. The processor 110 may store a portion of the data loaded to the host region 131 in the storage device 200 and the portion of the data is determined to be retained for a long time.
Referring to
The bus 315 may refer to a transmission channel via which data is transmitted between the processor 310, the locality monitor 320, the ECC unit 330, the host interface 340, the loading controller 360, and the nonvolatile memory interface 350 of the storage controller 300.
The processor 310 may perform an operation for data exchange between the host device 100 and the nonvolatile storages 410˜4k0. The processor 310 may execute firmware 311 and a flash translation layer (FTL) 313.
The host interface 340 is connected to the host device 100 and the nonvolatile memory interface 350 is connected to the nonvolatile storages 410˜4k0. The processor 310 may communicate with the host device 100 via the host interface 340. The host interface 340 may for example be implemented using, but not limited to, a SATA interface, a Parallel Advanced Technology Attachment (PATA) interface, USB or SAS interface, an eMMC interface, a UFS interface or an eMMC interface.
The processor 310 may communicate with the nonvolatile storages 410˜4k0 through nonvolatile memory interface 350. The nonvolatile memory interface 350 may be connected to each of the nonvolatile storages 410˜4k0.
The ECC unit 330 may generate an error correction code (ECC) for data which is received from the host device 100 using various engines during a write operation. During a read operation, the ECC unit 330 may perform error detection and error correction on data read from the nonvolatile storages 410˜4k0 to provide the data to the host device 100.
The locality monitor 320 may monitor locality of physical addresses based on a host address HADDR (i.e., a logical address) received from the host device 100, the host address HADDR may indicate access of the host device 100 to the main storage, and may provide the loading controller 360 with locality information LIN indicating the physical address has the locality.
Here, locality indicates how often data is used, and when the same data is repeatedly used within a short time, or spatially nearby pieces of data are accessed within a short time, data may be referred to as having high locality. The locality monitor 320 may determine data whose number of uses is large or usage frequency is high as having high locality and data whose number of uses is small or usage frequency is low as having low locality. The locality information LIN in this case may indicate either high locality or low locality based on how often the data is used.
Locality of data may be otherwise referred to as locality of a memory address where the corresponding data is stored. Accordingly, the locality monitor 320 may determine a memory address whose number of accesses of instructions is large or access frequency of instructions during a certain time period is high as having high locality, and may determine a memory address whose number of accesses is small or access frequency is low as having low locality. The locality information LIN in this case may indicate either high locality or low locality based on the number of accesses to a memory address.
The loading controller 360 may control loading of the directories and the mapping tables to the host memory buffer 133 based on the locality information LIN and size information HMSN associated with a size of the host memory buffer 133. The loading controller 360 may generate a loading mode signal LMS associated with controlling the loading of the directories and the mapping tables and may provide the nonvolatile storages 410˜4k0 with the loading mode signal LMS through the nonvolatile memory interface 350.
The loading controller 360 may include a register 363 that stores reference values.
Each of the nonvolatile storages 410˜4k0 may receive the loading mode signal LMS and may load a directory and a portion of the mapping tables stored therein to the host memory buffer 133 through the storage controller 300 based on one of a plurality of loading modes, designated by the loading mode signal LMS.
Referring to
The first comparator 361 compares the size information HMSN with a first reference value SREF to output a first comparison signal CS1. The counter 362 outputs a counting value CV by counting a number of misses MISS indicating that the logical address received from the host device 100 does not match one of entries in the host memory buffer 133. The counting value CV may be characterized as a miss rate of access requests of the host memory buffer 133. The second comparator 364 compares the counting value CV with a second reference value CREF to output a second comparison signal CS2. The register 363 stores the first reference value SREF and the second reference value CREF, provides the first reference value SREF to the first comparator 361 and provides the second reference value SREF to the second comparator 364.
The loading mode signal generator 365 receives the first comparison signal CS1, the second comparison signal CS2 and the locality information LIN and generates the loading mode signal LMS based on the first comparison signal CS1, the second comparison signal CS2 and the locality information LIN.
When the first comparison signal CS1 indicates that the size information HMSN is smaller than the first reference value SREF (i.e., a size reference value), the loading mode signal generator 365 may generate the loading mode signal LMS designating preferential loading of the portion of the directories in response to the first comparison signal CS1 and the locality information LIN. The portion of the directories may be associated with addresses having high locality. When the first comparison signal CS1 indicates that the size information HMSN is equal to or greater than the first reference value SREF, the loading mode signal generator 365 may generate the loading mode signal LMS designating merged loading of at least one of the directories and the portion of the mapping tables in response to the first comparison signal CS1 and the locality information LIN. The at least one of the directories may be associated with addresses having high locality, the portion of the mapping tables may be associated with addresses having high locality, or the at least one of the directories and the portion of the mapping tables may be associated with addresses having high locality, respectively. When the loading mode signal LMS designates the merged loading, the storage controller 300 loads at least one of the directories and the mapping tables to the host memory buffer 133 with a ratio of 1:N (N is a natural number greater than two).
In an example embodiment, the storage controller 300 may determine a value of N based on the size information HMSN (or a size) of the host memory buffer 133. In an example embodiment, the storage controller 300 may determine the value of N based on the locality information LIN and the size information HMSN of the host memory buffer 133. For example, the value of N of the mapping tables associated with the addresses having high locality may be determined based on the locality information LIN and/or the size information HMSN of the host memory buffer 133. That is, the storage controller 300 may determine a ratio of loading of the directories and the mapping tables to the host memory buffer 133 based on at least one of the locality information LIN and the size information HMSN of the host memory buffer 133. For example, if a number of the mapping tables associated with the addresses having high locality increases, the storage controller 300 may increase the value of N. For example, if a number of the mapping tables associated with the addresses having high locality decreases, the storage controller 300 may decrease the value of N.
When the second comparison signal CS2 indicates the counting value CV is equal to or greater than the second reference value CREF (i.e., a miss reference value), the loading mode signal generator 365 may generate the loading mode signal LMS that designates updating a portion of the loaded directories and the mapping tables in response to the second comparison signal CS2. When the loading mode signal LMS designates the updating, each of the nonvolatile storages 410˜4k0 may load, to the host memory buffer 133, one of another portion of the directories and another portion of the mapping tables through the storage controller 300.
The loading mode signal LMS may designate one of a plurality of loading modes. The plurality of loading modes may include a first loading mode, a second loading mode and a third loading mode. As mentioned above, the first loading mode may designate the preferential loading of the portion of the directories. As mentioned above, the second loading mode may designate the merged loading of at least one of the directories and the portion of the mapping tables. The third loading mode may designate the preferential loading of the mapping tables.
Referring to
In the operation S13, the processor 110 assigns (or, allocates) a portion of the host memory 130 as the host memory buffer 133 by referring to the request of the storage controller 300. In the operation S14, the processor 110 notifies an allocation result and size information to the storage controller 300 through a set feature command. In operation S16, the storage controller 300 loads at least one of (a) a portion of the directories and (b) at least a portion of the mapping tables to the host memory buffer 133 based on the size information.
In an operation S20, the host device 100 and the storage device 200 perform normal operation. Operations S21 and S23 may be performed in the operation S20.
In the operation S21, the host device 100 transmits the command CMD and the address ADDR to the storage device 200. In the operation S23, the storage controller 300 converts the address ADDR to a physical address by referring to the at least a portion of the mapping tables and the portion of the directories loaded to the host memory buffer 133 and performs a memory operation designated by the command CMD to a memory location designated by the physical address. According to a result of the memory operation, data DATA may be exchanged between the storage device 200 and the host device 100.
Referring to
For example, a directory DIR1 and mapping tables MT11˜MT1s may be stored in a meta region in the nonvolatile memory device NVM1 of the nonvolatile memory devices NVM1˜NVMk, a directory DIRg and mapping tables MTg1˜MTgs may be stored in a meta region in the nonvolatile memory device NVMg of the nonvolatile memory devices NVM1˜NVMk, and a directory DIRk and mapping tables MTk1˜MTks may be stored in a meta region in the nonvolatile memory device NVMk of the nonvolatile memory devices NVM1˜NVMk.
The mapping table MT11 may store logical page numbers (logical addresses) LPN1˜LPNj of memory blocks in the nonvolatile memory device NVM1, physical page numbers (physical addresses) PPN1˜PPNj corresponding to the logical page numbers LPN1˜LPNj, respectively, a bit map BM and first priority information PR11. The bit map BM may represent a locality of the mapping table MT11 and may have a high/low level. The first priority information PR11 may represent access importance degree of the mapping table MT11.
The processor 310 of the storage controller 300 may determine a logic level of the bit map BM and may determine a value of the first priority information PR11 based on the locality and access frequency to a particular memory block during a program operation and a read operation on each of memory blocks in each of the nonvolatile memory devices NVM1˜NVMk.
Referring to
In
Operations associated with
Referring to
Referring to
In
Operations associated with
Referring to
Referring to
The directory DIR1 and the mapping tables MT21˜MT2q and MTg1˜MTgq may be associated with different nonvolatile memory devices, respectively. The directory DIR1 and the mapping tables MT21˜MT2q and MTg˜MTgq may be independent from each other.
Referring to
A way indicates a unit for dividing nonvolatile memory devices sharing an identical channel Each of the nonvolatile memory devices may be identified according to channel numbers and way numbers.
Referring to
In addition, the nonvolatile memory device 411 receives a control signal CTRL through a control line and receives a power PWR through a power line from the storage controller 300.
Referring to
The memory cell array 420 may be coupled to the address decoder 450 through a string selection line SSL, a plurality of word-lines WLs, and a ground selection line GSL. In addition, the memory cell array 420 may be coupled to the page buffer circuit 430 through a plurality of bit-lines BLs.
The memory cell array 420 may include a plurality of memory cells coupled to the plurality of word-lines WLs and the plurality of bit-lines BLs.
In some example embodiments, the memory cell array 420 may be a three-dimensional memory cell array, which is formed on a substrate in a three-dimensional structure (or a vertical structure). In this case, the memory cell array 420 may include vertical cell strings that are vertically oriented such that at least one memory cell is located over another memory cell.
In other example embodiments, the memory cell array 420 may be a two-dimensional memory cell array, which is formed on a substrate in a two-dimensional structure (or a horizontal structure).
Referring to
The memory block BLKi of
Referring to
The string selection transistor SST may be connected to corresponding string selection lines SSL1, SSL2 and SSL3. The plurality of memory cells MC1 to MC8 may be respectively connected to corresponding word-lines WL1, WL2, WL3, WL4, WL5, WL6, WL7 and WL8 (which may hereinafter be referred to as word-lines WL to WL8. The ground selection transistor GST may be connected to corresponding ground selection lines GSL1, GSL2 and GSL3. The string selection transistor SST may be connected to corresponding bit-lines BL1, BL2 and BL3, and the ground selection transistor GST may be connected to the common source line CSL.
Word-lines (e.g., WL1) having the same height may be commonly connected, and the ground selection lines GSL1 to GSL3 and the string selection lines SSL1 to SSL3 may be separated. In
Referring to
A sectional view taken along a line A-A′ is also illustrated in
The body BD may include P-type silicon and may be an area where a channel will be formed. The pillar PL may further include a cylindrical tunnel insulating layer TI surrounding the body BD and a cylindrical charge trap layer CT surrounding the tunnel insulating layer TI. A blocking insulating layer BI may be provided between the first word line WL and the pillar PL. The body BD, the tunnel insulating layer TI, the charge trap layer CT, the blocking insulating layer BI, and the first word line WL may constitute a charge trap type transistor that is formed in a direction perpendicular to the substrate SUB or to an upper surface of the substrate SUB. A string selection transistor SST, a ground selection transistor GST, and other memory cells may have the same structure as the first memory cell MC1.
Referring back to
For example, the control circuit 460 may generate control signals CTLs, which are used for controlling the voltage generator 470, based on the command signal CMD, and generate a row address R_ADDR and a column address C_ADDR based on the address signal ADDR. The control circuit 460 may provide the row address R_ADDR to the address decoder 450 and provide the column address C_ADDR to the data input/output circuit 440.
The address decoder 450 may be coupled to the memory cell array 420 through the string selection line SSL, the plurality of word-lines WLs, and the ground selection line GSL. During the program operation or the read operation, the address decoder 450 may determine one of the plurality of word-lines WLs as a first word-line (i.e., a selected word-line) and determine rest of the plurality of word-lines WLs except for the first word-line as unselected word-lines based on the row address R_ADDR.
The voltage generator 470 may generate word-line voltages VWLs, which are required for the operation of the nonvolatile memory device 411, based on the control signals CTLs. The voltage generator 470 may receive a power PWR from the storage controller 300. The word-line voltages VWLs may be applied to the plurality of word-lines WLs through the address decoder 450.
For example, during the erase operation, the voltage generator 470 may apply an erase voltage to a well of the memory block and may apply a ground voltage to entire word-lines (i.e., all word-lines) of the memory block. During the erase verification operation, the voltage generator 470 may apply an erase verification voltage to the entire word-lines of the memory block or sequentially apply the erase verification voltage to word-lines in a word-line basis.
For example, during the program operation, the voltage generator 470 may apply a program voltage to the first word-line and may apply a program pass voltage to the unselected word-lines. In addition, during the program verification operation, the voltage generator 470 may apply a program verification voltage to the first word-line and may apply a verification pass voltage to the unselected word-lines.
In addition, during the read operation, the voltage generator 470 may apply a read voltage to the first word-line and may apply a read pass voltage to the unselected word-lines.
The page buffer circuit 430 may be coupled to the memory cell array 420 through the plurality of bit-lines BLs. The page buffer circuit 430 may include a plurality of page buffers. In some example embodiments, one page buffer may be connected to one bit-line. In other example embodiments, one page buffer may be connected to two or more bit-lines.
The page buffer circuit 430 may temporarily store data to be programmed in a selected page or data read out from the selected page.
The data input/output circuit 440 may be coupled to the page buffer circuit 430 through data lines DLs. During the program operation, the data input/output circuit 440 may receive the data DATA from the storage controller 300 and provide the data DATA to the page buffer circuit 430 based on the column address C_ADDR received from the control circuit 460. During the read operation, the data input/output circuit 440 may provide the data DATA, which are stored in the page buffer circuit 430, to the storage controller 300 based on the column address C_ADDR received from the control circuit 460.
In addition, the page buffer circuit 430 and the data input/output circuit 440 read data from a first area of the memory cell array 420 and write the read data to a second area of the memory cell array 420. That is, the page buffer circuit 430 and the data input/output circuit 440 may perform a copy-back operation. The page buffer circuit 430 and the data input/output circuit 440 may be controlled by the control circuit 460.
Referring to
In an operation S620, the storage controller 300 may load at least one of (a) at least a portion of mapping tables MTs and (b) at least one of a portion of directories DIRs to the host memory buffer 133 based on at least one of the size information HMSN and locality information LIN associated with a data access pattern of the host device 100. As described previously, the locality information LIN relates to how often data is used and/or the number of accesses to a memory address, and is thus associated with the access pattern of the host device 100, or in other words how the host device 100 accesses data in the storage device 200. The mapping tables MTs are stored in the nonvolatile memory devices and each of the mapping tables MTs indicates a mapping relationship between a physical address and a logical address of corresponding ones of the nonvolatile memory devices. The directories store address information of the mapping tables MTs.
In an operation S670, the storage controller 300 performs a memory operation designated by a command CMD on a memory location designated by an address ADDR by referring to the host memory buffer 133, based on the command CMD and the address ADDR from the host device 100.
Referring to
In the operation S630, a loading controller 360 of the storage controller 300 compares the size information HMSN of the host memory buffer 133 with a first reference value SREF and determines whether a size of the host memory buffer 133 is smaller than the first reference value SREF.
When the size of the host memory buffer 133 is smaller than the first reference value SREF (YES in S630), in the operation S640, the storage controller 300 loads a portion of the directories to the host memory buffer 133 preferentially based on second priority information of the directories.
When the size of the host memory buffer 133 is equal to or greater than the first reference value SREF (NO in S630), in the operation S640, the storage controller 300 loads at least one of the directories and a portion of the mapping tables to the host memory buffer 133 based on the locality information LIN, first priority information of the mapping tables and the second priority information of the directories.
Accordingly, when a size of the host memory buffer 133 is not capable of covering overall address space of mapping tables of the main storage 400 in the storage device 200, the storage controller 300 may dynamically load at least a portion of the mapping tables and a portion of the directories to the host memory buffer 133 based on at least one of the size of the host memory buffer 133 and the locality information LIN associated with data access pattern. The storage controller 300 may perform a memory operation on a memory location designated by a physical address corresponding to a logical address by referring to the host memory buffer 133. The storage controller 300 may reduce access time for accessing the mapping tables.
Referring to
The storage system 10a in
The storage device 200a includes a storage controller 300a and a main storage 400. The main storage 400 includes a plurality of nonvolatile storages 410˜4k0. The storage device 200a may further include a DRAM 220. The DRAM 220 is connected to the storage controller 300a and the main storage 400 and may temporarily store meta data stored in the nonvolatile storages 410˜4k0.
Referring to
In an example embodiment, the loading controller 360a may be included in the storage controller 300a as a separate component instead of being included in the processor 310a.
Configuration and operation of the storage controller 300a may be substantially similar to configuration and operation of the storage controller 300 of
In
The locality monitor 320 may monitor locality of physical addresses based on a host address HADDR (i.e., a logical address) received from the host device 100a and may provide the loading controller 360 with locality information LIN indicating the physical address has the locality.
The loading controller 360a may control loading of the directories and the mapping tables to the buffer memory 370 based on the locality information LIN and size information BMSN associated with a size of the buffer memory 370. The loading controller 360a may generate a loading mode signal LMS1 associated with controlling the loading of the directories and the mapping tables and may provide the nonvolatile storages 400a-400k with the loading mode signal LMS1 through the nonvolatile memory interface 350. The loading controller 360a may include a register that stores reference values.
The loading controller 360a may compare the size information BMSN with a first reference value, and may generate the loading mode signal LMS1 designating preferential loading of the portion of the directories 371 to the buffer memory 370 in response to the size information BMSN being smaller than the first reference value.
The loading controller 360a may compare the size information BMSN with the first reference value, and may generate the loading mode signal LMS1 designating merged loading of the portion of the directories 371 and a portion of mapping tables 373 to the buffer memory 370 in response to the size information BMSN being equal to or greater than the first reference value.
Accordingly, when a size of a portion or overall of the buffer memory 370 is not capable of covering overall address space of mapping tables of the main storage 400 in the storage device 200a, the storage controller 300a may dynamically load at least a portion of the mapping tables and a portion of the directories to the buffer memory 370 based on at least one of the size of the buffer memory 370 and the locality information LIN associated with data access pattern. The storage controller 300a may perform a memory operation on a memory location designated by a physical address corresponding to a logical address by referring to the buffer memory 370. The storage controller 300a may reduce access time for accessing the mapping tables.
In
Referring to
In addition, when the size of the host memory buffer HMB is larger than a second reference size SREF12, access time of the second and third cases is shorter than the first case.
In
Referring to
When the size of the buffer memory 370 is equal to or greater than the first reference size SREF21, access time of the second case is substantially the same as the first case.
Referring to
The host device 2000 may be configured to control data processing operations, such as data read operations and data write operations.
The host device 2000 may include a processor (CPU) 2100, a host memory (HMEM) 2200, a host controller interface (HCl) 2300 and a memory controller 2400 connected through a bus 20. The host memory 2200 may allocate a host memory buffer 2210 that stores a portion of directories and a portion of mapping tables. Operating system (OS) and/or host firmware (FW) 2110 may be executed by the processor 2100. The processor 2100 may execute the operation system and the host firmware 2110 to perform these operations. The memory controller 2400 may control the host memory 2200 under control of the processor 2100. The memory controller 2400 may assign a portion of the host memory 2200 as the host memory buffer 2210 that is accessible by the storage device 3000 under control of the processor 2100.
The host controller interface 2300 may interface with the storage device 3000. For example, the host controller interface 2300 is configured to issue the command CMD to the storage device 3000, receive the response RES to the command CMD from the storage device 3000, transmit write data to the storage device 3000, and receive read data from the storage device 3000.
The storage device 3000 may include multiple non-volatile memory devices (NVM) 3100 and a storage controller 3200.
The nonvolatile memory devices 3100 may be optionally supplied with an external high voltage VPP. The storage controller 3200 may be connected to the nonvolatile memory devices 3100 through multiple channels CH1 to CHi. The storage controller 3200 may include one or more processors CPU 3210, an ECC unit 3220, a host interface 3230, a loading controller 3240, a nonvolatile memory interface 3250 and a locality monitor 3260 connected through a bus 30.
The processor 3210 is configured to control overall operations of the storage controller 3200. For example, the processor 3210 may operate firmware 3212 including a flash translation layer (FTL), and may include other firmware. The FTL may perform various functions, e.g., address mapping, read calibration, error correction, among other functions.
The locality monitor 3260 monitors a locality of data and provides locality information to the loading controller 3240 when the locality of data is monitored, as mentioned above.
The loading controller 3240, as mentioned above, dynamically loads at least a portion of the mapping tables and a portion of the directories to the host memory buffer 2210 based on at least one of the size of the host memory buffer 2210 and the locality information.
The host interface 3230 may provide an interface with external devices such as the host device 2000. The nonvolatile memory interface 3250 may provide an interface with the nonvolatile memory devices 3100. The host device 2000 and the storage device 3000 may be connected through a bus 15.
Referring to
The application processor 4100 controls operations of the mobile device 4000. The communication module 4200 is implemented to perform wireless or wire communications with an external device. The display/touch module 4300 is implemented to display data processed by the application processor 4100 and/or to receive data through a touch panel (not shown). The data storage device 4400 is implemented to store user data.
The data storage device 4400 may be for example an embedded multimedia card (eMMC), a solid state drive (SSD), a universal flash storage (UFS) device, or the like. The data storage device 4400 may include a loading controller 4410 that dynamically loads at least a portion of mapping tables and a portion of directories to a host memory buffer 4510 in the mobile RAM 4500 as described above.
The mobile RAM 4500 temporarily stores data used for processing operations of the mobile device 4000. For example, the mobile RAM 4500 may be for example double data rate (DDR) synchronous DRAM (SDRAM), low power DDR (LPDDR) SDRAM, graphics DDR (GDDR) SDRAM, Rambus DRAM (RDRAM®), or the like.
As mentioned above, the storage controller may dynamically load at least a portion of the mapping tables and a portion of the directories to the a host memory buffer based on at least one of the size of the host memory buffer and the locality information associated with data access pattern, and may reduce access time for accessing the mapping tables.
The present disclosure may be applied to various electronic devices including a storage device. For example, the present disclosure may be applied to systems such as a mobile phone, a smart phone, a personal digital assistant (PDA), a portable multimedia player (PMP), a digital camera, a camcorder, personal computer (PC), a server computer, a workstation, a laptop computer, a digital TV, a set-top box, a portable game console, a navigation system, etc.
The foregoing is illustrative of example embodiments and is not to be construed as limiting thereof. Although a few example embodiments have been described, those skilled in the art will readily appreciate that many modifications are possible in the example embodiments without materially departing from the novel teachings and advantages of the inventive concepts. Accordingly, all such modifications are intended to be included within the scope of the inventive concepts as defined in the claims.
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
10007433, | Jan 21 2015 | SanDisk Technologies LLC | Systems and methods for performing adaptive host memory buffer caching of transition layer tables |
10055164, | Sep 07 2016 | SanDisk Technologies LLC | Data storage at an access device |
10108371, | Nov 15 2016 | Samsung Electronics Co., Ltd. | Method and system for managing host memory buffer of host using non-volatile memory express (NVME) controller in solid state storage device |
6377500, | Nov 11 1999 | TOSHIBA MEMORY CORPORATION | Memory system with a non-volatile memory, having address translating function |
7734891, | Jun 08 2005 | U S BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT | Robust index storage for non-volatile memory |
9563382, | Jun 05 2014 | SanDisk Technologies LLC | Methods, systems, and computer readable media for providing flexible host memory buffer |
9720605, | Mar 11 2015 | QUANTA STORAGE INC. | Method for dynamically establishing translation layer of solid state disk |
20130326121, | |||
20140181402, | |||
20150356020, | |||
20170235681, | |||
20170285940, | |||
20170293562, | |||
20170300422, | |||
20170351452, | |||
20180039578, | |||
20180136875, | |||
20190018788, | |||
KR20180054394, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
May 10 2021 | Samsung Electronics Co., Ltd. | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
May 10 2021 | BIG: Entity status set to Undiscounted (note the period is included in the code). |
Date | Maintenance Schedule |
Nov 29 2025 | 4 years fee payment window open |
May 29 2026 | 6 months grace period start (w surcharge) |
Nov 29 2026 | patent expiry (for year 4) |
Nov 29 2028 | 2 years to revive unintentionally abandoned end. (for year 4) |
Nov 29 2029 | 8 years fee payment window open |
May 29 2030 | 6 months grace period start (w surcharge) |
Nov 29 2030 | patent expiry (for year 8) |
Nov 29 2032 | 2 years to revive unintentionally abandoned end. (for year 8) |
Nov 29 2033 | 12 years fee payment window open |
May 29 2034 | 6 months grace period start (w surcharge) |
Nov 29 2034 | patent expiry (for year 12) |
Nov 29 2036 | 2 years to revive unintentionally abandoned end. (for year 12) |