Method of managing data in storage device based on variable size mapping, method of operating storage device using the same and storage device performing the same
11709781 · 2023-07-25
Assignee
Inventors
- Jaeju Kim (Suwon-si, KR)
- Youngho Park (Anyang-si, KR)
- Sangyoon Oh (Suwon-si, KR)
- Hyungchul Jang (Suwon-si, KR)
- Jekyeom Jeon (Siheung-si, KR)
Cpc classification
G06F2212/7201
PHYSICS
International classification
Abstract
A method of managing data in a storage device is provided. The storage device includes a plurality of nonvolatile memory chips each including a plurality of pages. A first data object is received from an external host device. The first data object has an unfixed size and corresponds to a first logical address which is a single address. Based on determining that it is impossible to store the first data in a single page among the plurality of pages, a buffering policy for the first data object is set based on at least one selection parameter. While mapping the first logical address of the first data object and a first physical address of pages in which the first data object is stored, a first buffering direction representing the buffering policy for the first data object is stored with a mapping result.
Claims
1. A method of operating in a storage device including a plurality of nonvolatile memory chips, the method comprising: receiving a first data object from an external host device; based on determining that it is possible to store the first data object in a single page, controlling one nonvolatile memory chip among the plurality of nonvolatile memory chips such that the first data object is stored in the single page included in the one nonvolatile memory chip; and receiving a second data object from the external host device; based on determining that it is impossible to store the second data object in the single page, controlling one or more nonvolatile memory chips among the plurality of nonvolatile memory chips to store the second data object in the one or more nonvolatile memory chips, wherein the controlling the one or more nonvolatile memory chips comprises: based on a policy setting signal provided from the external host device, switching between (i) storing the second data object to first pages of two or more different nonvolatile memory chips, and (ii) storing the second data object to second pages of a single nonvolatile memory chip.
2. The method of claim 1, wherein the controlling the one or more nonvolatile memory chips further comprises: based on a usage of an internal resource associated with a data write operation being less than a reference usage, storing the second data object across the first pages of the two or more different nonvolatile memory chips; and based on the usage of the internal resource being greater than or equal to the reference usage, storing the second data object across the second pages of the single nonvolatile memory chip.
3. The method of claim 2, wherein the storage device further includes a buffer memory configured to temporarily store a first data portion stored in the plurality of nonvolatile memory chips or store a second data portion to be stored into the plurality of nonvolatile memory chips, and the usage of the internal resource represents a current usage of the buffer memory.
4. The method of claim 1, wherein the controlling the one or more nonvolatile memory chips further includes: based on a reading performance associated with a data read operation being higher than a reference performance, storing the second data object across the first pages of the two or more different nonvolatile memory chips; and based on the reading performance being lower than or equal to the reference performance, storing the second data object across the second pages of the single nonvolatile memory chip.
5. The method of claim 1, wherein the controlling the one or more nonvolatile memory chips further comprises: based on an average size of recently stored data objects, among a plurality of data objects stored in the storage device at a first time associated with storing the first data object, being greater than a reference size, storing the second data object across the first pages of the two or more different nonvolatile memory chips; and based on the average size of the recently stored data objects being less than or equal to the reference size, storing the second data object across the second pages of the single nonvolatile memory chip.
6. The method of claim 5, wherein the recently stored data objects have been stored in the storage device within a predetermined time interval before the first time.
7. The method of claim 5, wherein the recently stored data objects have been stored in the storage device within a predetermined number of times before the first time.
8. The method of claim 1, further comprising: mapping a first logical address of the first data object and a first physical address of pages in which the first data object is stored.
9. The method of claim 8, wherein the first physical address of pages includes: a position of a foremost page among the first pages or the second pages, and a starting position of the first data object in the foremost page.
10. The method of claim 8, wherein a policy for storing the first data object is stored together with a mapping result.
11. The method of claim 1, further comprising: based on determining that it is possible to store the first data object in the single page, mapping a first logical address of the first data object and a first physical address of the single page without storing a policy for storing the first data object.
12. The method of claim 1, wherein the plurality of nonvolatile memory chips are divided into first nonvolatile memory chips of a first group and second nonvolatile memory chips of a second group, and a first policy for storing the first data object in the first nonvolatile memory chips of the first group is different from a second policy for storing the first data object in the second nonvolatile memory chips of the second group.
13. The method of claim 1, wherein first information associated with a policy for storing the second data object is stored in a spare region of the first pages or of the second pages, and the method further comprises: performing a garbage collection operation internally based on the first information without an external command received from the external host device.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) Illustrative, non-limiting example embodiments will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings, in which:
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
(19)
(20)
(21)
(22)
DETAILED DESCRIPTION
(23) Various example embodiments will be described more fully with reference to the accompanying drawings, in which embodiments are shown. The present disclosure may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. Like reference numerals refer to like elements throughout this application.
(24)
(25) Referring to
(26) The storage device according to example embodiments operates based on a variable size mapping. Unlike a fixed size mapping in which data received from an external host device is always managed with a fixed size in the storage device, a size of data stored in the storage device and corresponding to one logical address may not be fixed in the variable size mapping. For example, a size of data provided from an external host device may not be fixed and may be variable, and one data unit (e.g., a chunk of logical data) may be stored across multiple or several pages. In the fixed size mapping in which data is always managed with the fixed size, a size of the physical page in the storage device is always a multiple of a size of the mapping unit, and thus one data unit is not stored across multiple pages. In contrast, in the variable size mapping or unstructured data management in which the size of data is not fixed, it may happen that a chunk of logical data needs to be stored across multiple pages.
(27) For example, even in the fixed size mapping in which data is divided and stored in a fixed size address space in the storage device, a size of data input/output (I/O) from a file system of the external host device may be different each or every time (even if it may always be a multiple of a block size of the file system). For another example, even if the external host device always generates data input/output (e.g., data write) with the same size, the storage device may be implemented with the variable size mapping internally when the storage device compresses and stores the data input/output. In other words, whether the storage device operates based on the fixed size mapping or the variable size mapping may be regardless or independent of a data unit provided from the external host device (e.g., from a host perspective), and may be associated with or related to a data unit managed by the storage device (e.g., from a device perspective).
(28) In the method of managing data in the storage device based on the variable size mapping according to example embodiments, first data having an unfixed size is received from the external host device (operation S100). As will be described with reference to
(29) It is determined or checked whether it is possible to store the first data in a single page among the plurality of pages (operation S200). A size of a chunk of logical data provided from the external host device may not be fixed, however, a size of each of the plurality of pages included in the storage device may be physically fixed. Thus, a size of the first data may be compared with a size of the single page, and a scheme of managing the first data may be determined or selected differently according to a result of comparison and determination.
(30) When it is impossible to store the first data in the single page (operation S200: NO), a buffering policy for the first data is set based on at least one selection parameter (operation S300), and a first buffering direction representing the buffering policy for the first data is stored together with a mapping result while mapping the first logical address of the first data and a first physical address of pages in which the first data is stored (operation S400). In some embodiments, the mapping result is an indication of a start address in a particular nonvolatile memory chip.
(31) The buffering policy may represent a scheme of storing the first data in the pages. The buffering policy may be referred to as a buffering order (or a page buffering order), a striping policy (or a data striping policy), a striping order (or a way striping order), and the like. The buffering policy will be described with reference to
(32) In some example embodiments, an operation of setting the buffering policy for the first data may be adaptively performed during runtime (e.g., in real time) operating the storage device. In other words, which policy to apply to each page may be intelligently and variably set and changed during runtime by a firmware before programming data.
(33) When it is possible to store the first data in the single page (operation S200: YES), the first data may not be stored across multiple pages, and thus the first logical address and the first physical address may be mapped without setting the buffering policy for the first data (operation S500).
(34) In the method of managing data in the storage device based on the variable size mapping according to example embodiments, the buffering policy for data stored across multiple pages (e.g., the policy for each page) may be adaptively and/or intelligently set during runtime and may be changed according to the operating environment of the storage device. Accordingly, the balance between performance and available resources of the storage device may be controlled or adjusted, and the performance and efficiency of the storage device may be improved or enhanced.
(35)
(36) Referring to
(37) The host device 200 controls overall operations of the storage system 100. The host device 200 may include a host processor and a host memory. The host processor may control an operation of the host device 200. For example, the host processor may execute an operating system (OS). The host memory may store instructions and/or data that are executed and/or processed by the host processor. For example, the operating system executed by the host processor may include a file system for file management and a device driver for controlling peripheral devices including the storage device 300 at the operating system level.
(38) The storage device 300 is accessed by the host device 200. The storage device 300 may include a storage controller 310, a plurality of nonvolatile memories 320a, 320b and 320c, and a buffer memory 330.
(39) The storage controller 310 may control an operation of the storage device 300 and/or operations of the plurality of nonvolatile memories 320a, 320b and 320c based on a command, an address and data that are received from the host device 200. The storage controller may be implemented by one or more processors or by custom hardware such as an application-specific integrated circuit (ASIC).
(40) The storage controller 310 may perform the method described with reference to
(41) The storage controller 310 may include a buffering policy manager (BPM) 312 and a flash translation layer (FTL) 314. The buffering policy manager 312 may set and/or determine the above-described buffering policy. The flash translation layer 314 may translate a logical address provided from the host device 200 into a physical address of the nonvolatile memories 320a, 320b and 320c, and may manage data stored in the nonvolatile memories 320a, 320b and 320c. The flash translation layer 314 may be stored in the nonvolatile memories 320a, 320b and 320c, and the buffer memory 330 may load and store the flash translation layer 314 while operating or driving the storage device 300.
(42) The plurality of nonvolatile memories 320a, 320b and 320c may store a plurality of data. For example, the plurality of nonvolatile memories 320a, 320b and 320c may store meta data, various user data, or the like.
(43) Each nonvolatile memory may be disposed on a respective one semiconductor die, and may form a respective one nonvolatile memory chip. In this specification, a nonvolatile memory, a nonvolatile memory chip and a nonvolatile memory die may be used as a term referring to the same component. In addition, the storage device 300 may include a plurality of memory packages, and each of the plurality of memory packages may include at least one of the plurality of nonvolatile memories 320a, 320b and 320c.
(44) In some example embodiments, each of the plurality of nonvolatile memories 320a, 320b and 320c may include a NAND flash memory. In other example embodiments, each of the plurality of nonvolatile memories 320a, 320b and 320c may include one of an electrically erasable programmable read only memory (EEPROM), a phase change random access memory (PRAM), a resistance random access memory (RRAM), a nano floating gate memory (NFGM), a polymer random access memory (PoRAM), a magnetic random access memory (MRAM), a ferroelectric random access memory (FRAM), or the like.
(45) The buffer memory 330 may store instructions and/or data that are executed and/or processed by the storage controller 310, and may temporarily store data stored in or to be stored into the plurality of nonvolatile memories 320a, 320b and 320c. For example, the buffer memory 330 may include at least one of various volatile memories, e.g., a dynamic random access memory (DRAM), a static random access memory (SRAM), or the like.
(46) In some example embodiments, the storage device 300 may be a solid state drive (SSD). For example, the storage device 300 may be a key-value SSD using the variable size mapping or unstructured data management or a SSD that compresses and stores data internally. In other example embodiments, the storage device 300 may be one of a universal flash storage (UFS), a multimedia card (MMC), an embedded multimedia card (eMMC), a secure digital (SD) card, a micro SD card, a memory stick, a chip card, a universal serial bus (USB) card, a smart card, a compact flash (CF) card, or the like.
(47) In some example embodiments, the storage device 300 may be connected to the host device 200 through a block accessible interface which may include, for example, a UFS, an eMMC, a serial advanced technology attachment (SATA) bus, a nonvolatile memory express (NVMe) bus, a serial attached SCSI (SAS) bus, or the like. The storage device 300 may use a block accessible address space corresponding to an access size of the plurality of nonvolatile memories 320a, 320b and 320c to provide the block accessible interface to the host device 200, for allowing the access by units of a memory block with respect to data stored in the plurality of nonvolatile memories 320a, 320b and 320c.
(48) In some example embodiments, the storage system 100 may be any computing system, such as a personal computer (PC), a server computer, a data center, a workstation, a digital television, a set-top box, a navigation system, etc. In other example embodiments, the storage system 100 may be any mobile system, such as a mobile phone, a smart phone, a tablet computer, a laptop computer, a personal digital assistant (PDA), a portable multimedia player (PMP), a digital camera, a portable game console, a music player, a camcorder, a video player, a navigation device, a wearable device, an internet of things (IoT) device, an internet of everything (IoE) device, an e-book reader, a virtual reality (VR) device, an augmented reality (AR) device, a robotic device, a drone, etc.
(49)
(50) Referring to
(51) The processor 410 may control an operation of the storage controller 400 in response to a command received via the host interface 440 from a host device (e.g., the host device 200 in
(52) The memory 420 may store instructions and data executed and processed by the processor 410. For example, the memory 420 may be implemented with a volatile memory device with relatively small capacity and high speed, such as a static random access memory (SRAM), a cache memory, or the like.
(53) The buffering policy manager 430 for setting and/or determining the buffering policy may be substantially the same as the buffering policy manager 312 in
(54) The ECC block 450 for error correction may perform coded modulation using a Bose-Chaudhuri-Hocquenghem (BCH) code, a low density parity check (LDPC) code, a turbo code, a Reed-Solomon code, a convolution code, a recursive systematic code (RSC), a trellis-coded modulation (TCM), a block coded modulation (BCM), etc., or may perform ECC encoding and ECC decoding using above-described codes or other error correction codes.
(55) The host interface 440 may provide physical connections between the host device 200 and the storage device 300. The host interface 440 may provide an interface corresponding to a bus format of the host for communication between the host device 200 and the storage device 300. In some example embodiments, the bus format of the host device 200 may be a small computer system interface (SCSI) or a serial attached SCSI (SAS) interface. In other example embodiments, the bus format of the host device 200 may be a USB, a peripheral component interconnect (PCI) express (PCIe), an advanced technology attachment (ATA), a parallel ATA (PATA), a serial ATA (SATA), a nonvolatile memory (NVM) express (NVMe), etc., format.
(56) The memory interface 460 may exchange data with nonvolatile memories (e.g., the nonvolatile memories 320a, 320b and 320c in
(57)
(58) Referring to
(59) The memory cell array 510 is connected to the row decoder 520 via a plurality of string selection lines SSL, a plurality of wordlines WL and a plurality of ground selection lines GSL. The memory cell array 510 is further connected to the page buffer circuit 530 via a plurality of bitlines BL. The memory cell array 510 may include a plurality of memory cells (e.g., a plurality of nonvolatile memory cells) that are connected to the plurality of wordlines WL and the plurality of bitlines BL. The memory cell array 510 may be divided into a plurality of memory blocks BLK1, BLK2, . . . , BLKz each of which includes memory cells. In addition, each of the plurality of memory blocks BLK1, BLK2, . . . , BLKz may be divided into a plurality of pages.
(60) In some example embodiments, the plurality of memory cells may be arranged in a two dimensional (2D) array structure or a three dimensional (3D) vertical array structure. A three-dimensional vertical array structure may include vertical cell strings that are vertically oriented such that at least one memory cell is located over another memory cell. The at least one memory cell may comprise a charge trap layer. The following patent documents, which are hereby incorporated by reference in their entirety, describe suitable configurations for a memory cell array including a 3D vertical array structure, in which the three-dimensional memory array is configured as a plurality of levels, with wordlines and/or bitlines shared between levels: U.S. Pat. Nos. 7,679,133; 8,553,466; 8,654,587; 8,559,235; and US Pat. Pub. No. 2011/0233648.
(61) The control circuit 560 receives a command CMD and an address ADDR from the outside (e.g., the host device 200 and/or the storage controller 310 in
(62) For example, the control circuit 560 may generate control signals CON, which are used for controlling the voltage generator 550, and may generate control signal PBC for controlling the page buffer circuit 530, based on the command CMD, and may generate a row address R_ADDR and a column address C_ADDR based on the address ADDR. The control circuit 560 may provide the row address R_ADDR to the row decoder 520 and may provide the column address C_ADDR to the data I/O circuit 540.
(63) The row decoder 520 may be connected to the memory cell array 510 via the plurality of string selection lines SSL, the plurality of wordlines WL and the plurality of ground selection lines GSL.
(64) For example, in the data erase/write/read operations, the row decoder 520 may determine at least one of the plurality of wordlines WL as a selected wordline, and may determine the rest or remainder of the plurality of wordlines WL other than the selected wordline as unselected wordlines, based on the row address R_ADDR.
(65) In addition, in the data erase/write/read operations, the row decoder 520 may determine at least one of the plurality of string selection lines SSL as a selected string selection line, and may determine the rest or remainder of the plurality of string selection lines SSL other than the selected string selection line as unselected string selection lines, based on the row address R_ADDR.
(66) Further, in the data erase/write/read operations, the row decoder 520 may determine at least one of the plurality of ground selection lines GSL as a selected ground selection line, and may determine the rest or remainder of the plurality of ground selection lines GSL other than the selected ground selection line as unselected ground selection lines, based on the row address R_ADDR.
(67) The voltage generator 550 may generate voltages VS that are required for an operation of the nonvolatile memory 500 based on a power PWR and the control signals CON. The voltages VS may be applied to the plurality of string selection lines SSL, the plurality of wordlines WL and the plurality of ground selection lines GSL via the row decoder 520. In addition, the voltage generator 550 may generate an erase voltage VERS that is required for the data erase operation based on the power PWR and the control signals CON. The erase voltage VERS may be applied to the memory cell array 510 directly or via the bitline BL.
(68) For example, during the erase operation, the voltage generator 550 may apply the erase voltage VERS to a common source line and/or the bitline BL of a memory block (e.g., a selected memory block) and may apply an erase permission voltage (e.g., a ground voltage) to all wordlines of the memory block or a portion of the wordlines via the row decoder 520. In addition, during the erase verification operation, the voltage generator 550 may apply an erase verification voltage simultaneously to all wordlines of the memory block or sequentially to the wordlines one by one.
(69) For example, during the program operation, the voltage generator 550 may apply a program voltage to the selected wordline and may apply a program pass voltage to the unselected wordlines via the row decoder 520. In addition, during the program verification operation, the voltage generator 550 may apply a program verification voltage to the selected wordline and may apply a verification pass voltage to the unselected wordlines via the row decoder 520.
(70) In addition, during the normal read operation, the voltage generator 550 may apply a read voltage to the selected wordline and may apply a read pass voltage to the unselected wordlines via the row decoder 520. During the data recover read operation, the voltage generator 550 may apply the read voltage to a wordline adjacent to the selected wordline and may apply a recover read voltage to the selected wordline via the row decoder 520.
(71) The page buffer circuit 530 may be connected to the memory cell array 510 via the plurality of bitlines BL. The page buffer circuit 530 may include a plurality of page buffers. In some example embodiments, each page buffer may be connected to one bitline. In other example embodiments, each page buffer may be connected to two or more bitlines.
(72) The page buffer circuit 530 may store data DAT to be programmed into the memory cell array 510 or may read data DAT sensed from the memory cell array 510. In other words, the page buffer circuit 530 may operate as a write driver or a sensing amplifier according to an operation mode of the nonvolatile memory 500.
(73) The data I/O circuit 540 may be connected to the page buffer circuit 530 via data lines DL. The data I/O circuit 540 may provide the data DAT from an outside of the nonvolatile memory 500 to the memory cell array 510 via the page buffer circuit 530 or may provide the data DAT from the memory cell array 510 to the outside of the nonvolatile memory 500, based on the column address C_ADDR.
(74)
(75) Referring to
(76) The application 212 may be an application software program that is executed on an operating system. For example, the application 212 has been programmed to aid in generating, copying and deleting a file.
(77) The file system 214 may manage files used by the host device 200. For example, the file system 214 may manage file names, extensions, file attributes, file sizes, cluster information, etc. of files accessed by requests from the host device 200 or applications executed by the host device 200. The file system 214 may generate, delete and manage data on a file basis.
(78) The block layer 216 may be referred to as a block input/output layer, and may perform data read/write operations by units of a memory block. In other words, the block accessible interface may be implemented based on the block layer 216.
(79) The device driver 218 may control the storage device 300 at the operating system level. For example, the device driver 218 may be a software module of a kernel for controlling the storage device 300. The host device 200 or the applications executed by the host device 200 may request the data read/write operations to the storage device 300 via the device driver 218.
(80) The flash translation layer 314 may be controlled by the storage controller 310. The flash translation layer 314 may translate a logical address provided from the host device 200 into a physical address of the nonvolatile memory 320, and may manage data stored in the nonvolatile memory 320. The flash translation layer 314 may be loaded by and stored in the buffer memory 330.
(81) The nonvolatile memory 320 may be substantially the same as the nonvolatile memories 320a, 320b and 320c in
(82) The method of managing data in the storage device of
(83) The host device 200 may transmit first data DAT having an unfixed size and a first logical address LADDR corresponding thereto to the storage device 300. When it is impossible to store the first data DAT in a single page, the storage device 300 may determine a buffering policy for the first data DAT based on at least one selection parameter, and may store a first buffering direction BD representing the buffering policy for the first data DAT together with a mapping result while mapping the first logical address LADDR of the first data DAT and a first physical address PADDR of pages in the nonvolatile memory 320 in which the first data DAT is stored. The above-described determination and setting operation may be performed by the buffering policy manager 312, and the above-described information may be stored in a mapping table in the flash translation layer 314. When it is possible to store the first data DAT in the single page, the operations of setting the buffering policy and storing the first buffering direction BD among the above-described operations may be omitted.
(84) Referring to
(85) The first buffering policy BP1 may represent a buffering policy in which data that cannot be stored in the single page is stored in different pages included in different nonvolatile memory chips. In other words, the first buffering policy BP1 may represent that data is subsequently buffered on different chips.
(86) In the example of
(87) When the first buffering policy BP1 is applied, a reading performance may be improved because fragmented data are read from different memory chips simultaneously, however, the amount of data that should be maintained by the firmware until when the content of all pages is filled or completed may increase. The first buffering policy BP1 may be useful when the size of each piece of data is relatively large and the number of data stored in one page is relatively small. For example, a buffering direction BD1 of the first buffering policy BP1 may indicate an arrangement direction of the nonvolatile memory chips NVM1 and NVM2.
(88) Referring to
(89) The second buffering policy BP2 may represent a buffering policy in which data that cannot be stored in the single page is stored in different pages included in the same nonvolatile memory chip. In other words, the second buffering policy BP2 may represent that buffering is continued on the same chip so as to complete one chip or block.
(90) In the example of
(91) When the second buffering policy BP2 is applied, a reading performance may be degraded because read requests are concentrated on the same memory chip, however, internal resources may be saved because the storage device 300 only needs to maintain a relatively small number of buffers. The second buffering policy BP2 may be useful when there are many small-sized data. For example, a buffering direction BD2 of the second buffering policy BP2 may indicate an arrangement direction of the pages PG11, PG12 and PG13 in the nonvolatile memory chip NVM1.
(92) Referring to
(93) The mapping table may include logical addresses LA1, LA2 and LA3, physical addresses, buffering directions and sizes SZ1, SZ2 and SZ3 of data (e.g., a chunk of data or data objects) D1, D2 and D3. In some example embodiments, the sizes SZ1, SZ2 and SZ3 may be omitted.
(94) In some example embodiments, each physical address may include a position (or location) of a page and a starting position of data. For example, in cases of the data D1 and D2 stored in one page, the physical addresses of the data D1 and D2 may include information of the page PG11 in which the data D1 and D2 are stored and starting positions SP1 and SP2 of the data D1 and D2 in the page PG11, respectively. For example, in a case of the data D3 stored across several pages, the physical address of the data D3 may include information of the foremost (or front) page PG11 among the pages in which the data D3 is stored and a starting position SP3 of the data D3 in the foremost page PG11.
(95) In some example embodiments, the buffering direction may be stored only for the data D3 stored across several pages, and the buffering direction may not be stored for the data D1 and D2 stored in one page because the buffering direction does not exist.
(96) A data read operation which will be described with reference to
(97)
(98) Referring to
(99) When the usage of the internal resource is less than a reference usage RUSG (operation S310: YES), this means that the internal resource is sufficient or enough, and thus the first buffering policy BP1 of
(100) When the usage of the internal resource is greater than or equal to the reference usage (operation S310: NO), this means that the internal resource is insufficient, and thus the second buffering policy BP2 of
(101) The operation of
(102)
(103) Referring to
(104) When the reading performance higher than a reference performance is required (operation S340: YES), the first buffering policy BP1 of
(105) The operation of
(106)
(107) Referring to
(108) In some example embodiments, as illustrated in
(109) In other example embodiments, as illustrated in
(110) When the average size of the recently stored data is greater than a reference size (operation S350: YES), this means that the size of each piece of data is relatively large, and thus the first buffering policy BP1 of
(111) The operation of
(112)
(113) Referring to
(114) When the policy setting signal PSS has a first logic level for the first buffering policy BP1 (operation S360: YES), the first buffering policy BP1 of
(115) The operation of
(116) In some example embodiments, the method of managing data in the storage device according to example embodiments may be implemented by combining two or more of the examples of
(117)
(118) Referring to
(119) For example, a plurality of nonvolatile memory chips NVM1, NVM2, NVM3 and NVM4 may be divided into a first group NVMG1 including the nonvolatile memory chips NVM1 and NVM2 and a second group NVMG2 including the nonvolatile memory chips NVM3 and NVM4. Different buffering policies may be applied to the first group NVMG1 and the second group NVMG2. For example, the first buffering policy BP1 substantially the same as described with reference to
(120) Although example embodiments are described based on specific numbers of nonvolatile memory chips and groups, example embodiments are not limited thereto, and the numbers of nonvolatile memory chips and groups may be variously changed.
(121)
(122) Referring to
(123) In the method of operating the storage device according to example embodiments, a data write operation is performed based on a first write command, a first logical address and first data having an unfixed size received from an external host device (operation S1100). For example, as illustrated in
(124)
(125) Referring to
(126) It may be determined whether it is possible to store the first data in a single page among a plurality of pages (operation S1120). When it is impossible to store the first data in the single page (operation S1120: NO), a buffering policy for the first data may be set based on at least one selection parameter (operation S1130), the first data may be programmed into two or more pages based on the buffering policy for the first data (operation S1140), and a first buffering direction representing the buffering policy for the first data may be stored together with a mapping result while mapping the first logical address of the first data and a first physical address of pages in which the first data is stored (operation S1150). Operations S1120, S1130 and S1150 may be substantially the same as operations S200, S300 and S400 in
(127) When it is possible to store the first data in the single page (operation S1120: YES), the first data may be programmed into the single page without setting the buffering policy for the first data (operation S1160), and the first logical address and the first physical address may be mapped (operation S1170). Operation S1170 may be substantially the same as operation S500 in
(128)
(129) Referring to
(130) A data read operation is performed based on a first read command and the first logical address received from the external host device (operation S1200). For example, as illustrated in
(131)
(132) Referring to
(133) For example, as illustrated in
(134) In some example embodiments, the first information may include an address of a page to be read next. For example, in a case of a first buffering policy BP1′ illustrated in
(135) A garbage collection operation is performed internally and by itself based on the first information without a command received from the external host device (operation S1300). As data are continuously written to a storage device, the data may become scattered over the entire storage device. To obtain a free memory block, or a storage space to which data can be written, it is possible to perform a garbage collection operation from time to time that moves an effective page of one memory block to another memory block and erases the one memory block. In other words, the garbage collection operation may represent an operation for obtaining or preparing a free memory block in the storage device.
(136) When using the variable size mapping, it is required to read and parse the entire page in order to perform the garbage collection operation. At this time, since commands and logical addresses are not provided from the external host device, the mapping table (e.g., the mapping table in
(137) As will be appreciated by those skilled in the art, the inventive concept may be embodied as a system, method, computer program product, and/or a computer program product embodied in one or more non-transitory computer readable medium(s) having computer readable program code embodied thereon. The computer readable program code may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. The computer readable storage medium may be any tangible medium that can contain or store a program for use by or in connection with an instruction execution system, apparatus, or device. For example, the computer readable medium may be a non-transitory computer readable medium.
(138)
(139) Referring to
(140) The RAID techniques are mainly used in data servers where important data can be replicated in more than one location across a plurality a plurality of storage devices. The RAID controller 1150 may enable one of a plurality of RAID levels according to RAID information, and may interfacing data between the server 1110 and the plurality of storage devices 1000.
(141) Each of the plurality of storage devices 1000 may include a storage controller 1010 including a buffering policy manager BPM, a plurality of nonvolatile memories 1020 and a buffer memory 1030. Each of the plurality of storage devices 1000 may correspond to the storage device 300 according to example embodiments, and may operate according to example embodiments described above with reference to
(142) The inventive concept may be applied to various electronic devices and/or systems including the storage devices and the storage systems. For example, the inventive concept may be applied to systems such as a personal computer (PC), a server computer, a data center, a workstation, a mobile phone, a smart phone, a tablet computer, a laptop computer, a personal digital assistant (PDA), a portable multimedia player (PMP), a digital camera, a portable game console, a music player, a camcorder, a video player, a navigation device, a wearable device, an internet of things (IoT) device, an internet of everything (IoE) device, an e-book reader, a virtual reality (VR) device, an augmented reality (AR) device, a robotic device, a drone, etc.
(143) In the method of managing data in the storage device, the method of operating the storage, and the storage device according to example embodiments, the buffering policy for data stored across multiple pages (e.g., the policy for each page) may be adaptively and/or intelligently set during runtime and may be changed according to the operating environment of the storage device. Accordingly, the balance between performance and available resources of the storage device may be controlled or adjusted, and the performance and efficiency of the storage device may be improved or enhanced.
(144) The foregoing is illustrative of example embodiments and is not to be construed as limiting thereof. Although some 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 example embodiments. Accordingly, all such modifications are intended to be included within the scope of the example embodiments as defined in the claims. Therefore, it is to be understood that the foregoing is illustrative of various example embodiments and is not to be construed as limited to the specific example embodiments disclosed, and that modifications to the disclosed example embodiments, as well as other example embodiments, are intended to be included within the scope of the appended claims.