DATA RELOCATION IN MEMORY
20210019052 ยท 2021-01-21
Inventors
Cpc classification
G06F3/0604
PHYSICS
G06F3/0679
PHYSICS
G06F3/0646
PHYSICS
Y02D10/00
GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
G06F3/0616
PHYSICS
International classification
Abstract
The present disclosure includes apparatuses, methods, and systems for data relocation in memory. An embodiment includes a controller, and a memory having a plurality of physical units of memory cells. Each of the physical units has a different sequential physical address associated therewith, a first number of the physical units have data stored therein, a second number of the physical units do not have data stored therein, and the physical address associated with each respective one of the second number of physical units is a different consecutive physical address in the sequence. The controller can relocate the data stored in the physical unit of the first number of physical units, whose physical address in the sequence is immediately before the first of the consecutive physical addresses associated with the second number of physical units, to the last of the consecutive physical addresses associated with the second number of physical units.
Claims
1. An apparatus, comprising: a memory having a plurality of physical units of memory cells, wherein: a first number of the physical units have data stored therein; a second number of the physical units do not have data stored therein; and each of the physical units has a different physical address associated therewith; circuitry configured to relocate data stored in a physical unit of the first number of physical units to a physical address of the physical addresses associated with the second number of physical units.
2. The apparatus of claim 1, wherein the different physical addresses are sequential physical addresses.
3. The apparatus of claim 1, wherein the plurality of physical units of memory cells comprise a group of memory cells.
4. The apparatus of claim 3, wherein: the memory includes a number of additional groups of memory cells, wherein: each respective additional group includes a plurality of physical units of memory cells; a first number of the physical units of each respective additional group have data stored therein; a second number of the physical units of each respective additional group do not have data stored therein; and each of the physical units of each respective additional group has a different physical address associated therewith; and the circuitry is configured to, for each respective additional group, relocate data stored in a physical unit of the first number of physical units of that respective additional group to a physical address of the physical addresses associated with the second number of physical units of that respective additional group.
5. The apparatus of claim 1, wherein the circuitry is configured to randomize logical addresses associated with the first number of physical units after the data has been relocated from the physical unit of the first number of physical units.
6. The apparatus of claim 1, wherein the circuitry is configured to initiate the relocation of the data from the physical unit of the first number of physical units in response to a particular number of program operations being performed on the memory.
7. A method of operating memory, comprising: relocating data stored in a first physical unit of the memory to a second physical unit of the memory, wherein: the first physical unit of the memory is one of a plurality of physical units of the memory that have data stored therein; the second physical unit of the memory is one of a plurality of physical units of the memory that do not have data stored therein and have different sequential physical addresses associated therewith.
8. The method of claim 7, wherein the physical address associated with the second physical unit of the memory is the last of the physical addresses in the sequence.
9. The method of claim 7, wherein the first physical unit of the memory has a physical address associated therewith that is immediately before the first of the physical addresses in the sequence.
10. The method of claim 7, wherein the method includes changing a quantity of the plurality of physical units of the memory that do not have data stored therein.
11. The method of claim 10, wherein the method includes relocating the data stored in the first physical unit of the memory to the second physical unit of the memory after changing the quantity of the plurality of physical units of the memory that do not have data stored therein.
12. The method of claim 7, wherein the method includes identifying the second physical unit of the memory to which the data stored in the first physical unit of the memory has been relocated using algebraic mapping.
13. The method of claim 7, wherein relocating the data stored in the first physical unit of the memory to the second physical unit of the memory results in: the first physical unit of the memory becoming one of the plurality of physical units of the memory that do not have data stored therein and have different sequential physical addresses associated therewith; and the second physical unit of the memory becoming one of the plurality of physical units of the memory that have data stored therein.
14. An apparatus, comprising: a memory having a plurality of units of memory cells, wherein: each of the units has a different sequential address associated therewith; a first number of the units have data stored therein; and a second number of the units do not have data stored therein, wherein the address associated with each respective one of the second number of units is a different consecutive address in the sequence; and circuitry configured to relocate the data stored in the unit of the first number of units, whose address in the sequence is immediately before the first of the consecutive addresses associated with the second number of units, to the last of the consecutive addresses associated with the second number of units.
15. The apparatus of claim 14, wherein the plurality of units of memory cells comprise physical units of memory cells.
16. The apparatus of claim 14, wherein the addresses in the sequence comprise physical addresses.
17. The apparatus of claim 14, wherein the second number of units that do not have data stored therein comprises a prime number of units.
18. The apparatus of claim 14, wherein the circuitry is configured to relocate the data stored in the unit of the first number of units to the last of the consecutive addresses associated with the second number units without using a table.
19. The apparatus of claim 14, wherein the circuitry is configured to relocate the data stored in the unit of the first number of units to the last of the consecutive addresses associated with the second number of units using algebraic mapping.
20. The apparatus of claim 14, wherein the circuitry comprises hardware.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0009]
[0010]
[0011]
[0012]
[0013]
DETAILED DESCRIPTION
[0014] The present disclosure includes apparatuses, methods, and systems for data relocation in memory. An embodiment includes a controller, and a memory having a plurality of physical units of memory cells. Each of the physical units has a different sequential physical address associated therewith, a first number of the physical units have data stored therein, a second number of the physical units do not have data stored therein, and the physical address associated with each respective one of the second number of physical units is a different consecutive physical address in the sequence. The controller can relocate the data stored in the physical unit of the first number of physical units, whose physical address in the sequence is immediately before the first of the consecutive physical addresses associated with the second number of physical units, to the last of the consecutive physical addresses associated with the second number of physical units.
[0015] A wear-leveling operation (e.g. scheme) can include and/or refer to an operation to relocate data currently being stored in one physical location of a memory to another physical location of the memory, in order to more uniformly distribute memory cell wear that may be caused by program (e.g., write) operations across the memory. Performing wear-leveling operations can increase the performance (e.g., increase the speed, increase the reliability, and/or decrease the power consumption) of the memory, and/or can increase the endurance (e.g., lifetime) of the memory.
[0016] Previous wear-leveling operations may use tables to relocate the data in the memory. However, such tables may be large (e.g., may use a large amount of space in the memory), may be complex (e.g., may use a large amount of resources) and may cause the wear-leveling operations to be slow (e.g., may cause latency in the memory).
[0017] In contrast, operations (e.g., wear-leveling operations) to relocate data in accordance with the present disclosure may maintain an algebraic mapping (e.g., an algebraic mapping between logical and physical addresses) for use in identifying the physical location to which the data has been relocated. Accordingly, operations to relocate data in accordance with the present disclosure may use less space in the memory, may use less resources, and may be faster, than previous wear-leveling operations. Further, operations to relocate data in accordance with the present disclosure may provide a greater increase to (e.g., closer to the theoretical maximum of) the performance and/or endurance of the memory than previous wear-leveling operations.
[0018] Further, operations to relocate data in accordance with the present disclosure may be flexible and/or changeable (e.g. tunable), in order to match the wear to the current workloads across the memory, increase or decrease the endurance of the memory to match the current needs of the memory, meet the endurance requirements of certain workloads that would otherwise wear out the memory, and/or match the wear leveling to different types of memory. In contrast, previous wear-leveling operations may not have such flexibility. Further, operations to relocate data in accordance with the present disclosure can provide protection from pathological workloads and/or attacks on targeted memory cells having the intention of causing early failure of the memory.
[0019] Further, previous wear level operations may not be implementable in hardware. In contrast, operations (e.g., wear-leveling operations) to relocate data in accordance with the present disclosure may be implementable in hardware. For instance, operations to relocate data in accordance with the present disclosure may be implementable in the controller of the memory completely as hardware, or as a combination of hardware and software. Accordingly, operations to relocate data in accordance with the present disclosure may not impact the latency of the memory, and may not add additional overhead to the memory.
[0020] As used herein, a, an, or a number of can refer to one or more of something, and a plurality of can refer to one or more such things. For example, a memory device can refer to one or more memory devices, and a plurality of memory devices can refer to two or more memory devices. Additionally, the designators R, B, S, and N, as used herein, particularly with respect to reference numerals in the drawings, indicates that a number of the particular feature so designated can be included with a number of embodiments of the present disclosure.
[0021] The figures herein follow a numbering convention in which the first digit or digits correspond to the drawing figure number and the remaining digits identify an element or component in the drawing. Similar elements or components between different figures may be identified by the use of similar digits. For example, 101 may reference element 01 in
[0022]
[0023] As shown in
[0024] A number of physical blocks of memory cells (e.g., blocks 107-0, 107-1, . . . , 107-B) can be included in a plane of memory cells, and a number of planes of memory cells can be included on a die. For instance, in the example shown in
[0025] As shown in
[0026] As one of ordinary skill in the art will appreciate, each row 103-0, 103-1, . . . , 103-R can include a number of pages of memory cells (e.g., physical pages). A physical page refers to a unit of programming and/or sensing (e.g., a number of memory cells that are programmed and/or sensed together as a functional group). In the embodiment shown in
[0027] As shown in
[0028] Logical block addressing is a scheme that can be used by a host for identifying a logical sector of data. For example, each logical sector can correspond to a unique logical block address (LBA). Additionally, an LBA may also correspond (e.g., dynamically map) to a physical address, such as a physical block address (PBA), that may indicate the physical location of that logical sector of data in the memory. A logical sector of data can be a number of bytes of data (e.g., 256 bytes, 512 bytes, 1,024 bytes, or 4,096 bytes). However, embodiments are not limited to these examples.
[0029] It is noted that other configurations for the physical blocks 107-0, 107-1, . . . , 107-B, rows 103-0, 103-1, . . . , 103-R, sectors 105-0, 105-1, . . . , 105-S, and pages are possible. For example, rows 103-0, 103-1, . . . , 103-R of physical blocks 107-0, 107-1, . . . , 107-B can each store data corresponding to a single logical sector which can include, for example, more or less than 512 bytes of data.
[0030]
[0031] In the embodiment illustrated in
[0032] Memory arrays 201-1, 201-2, . . . , 201-N can include (e.g., be divided into) a number of groups (e.g., zones or regions) of memory cells. Each respective group can include a plurality of physical units of memory cells, such as, for instance, a plurality of physical pages and/or blocks of memory cells, in a manner analogous to memory array 101 previously described in connection with
[0033] Each of the physical units of each respective group of memory cells can have a different sequential physical address (e.g., a different physical address in a sequence of physical addresses) associated therewith. A first number of the physical units of each respective group may have data (e.g., user data) stored therein, and each respective one of these first number of physical units of each respective group can also have a different sequential logical address (e.g. a different logical address in a sequence of logical addresses) associated therewith. A second number of (e.g., the remaining) physical units of each respective group may not have data stored therein or a sequential logical address associated therewith, and the physical address associated with each respective one of the second number of physical units of each respective group can be a different consecutive physical address in the sequence. The first number of physical units of each respective group may be referred to herein as the user units of that group, and the second number of physical units of each respective group may be referred to herein as the spare units of that group. An example illustrating the user units and spare units of a group of memory cells will be further described herein (e.g., in connection with
[0034] In an embodiment, each of the physical units of each respective group of memory cells can have the same size. For instance, each of the physical units of each respective group can have the same number of memory cells, and/or can be capable of storing the same amount of data. Further, the spare units of each respective group of memory cells can comprise a prime number of physical units (e.g., the number of spare units of each respective group can be a prime number), such that the greatest common denominator of the number of user units and the number of spare units of each respective group is one. Such a prime numerical relationship between the number of user units and the number of spare units of each respective group can prevent oscillation of the spare units of the group as they move (e.g., slide) through the group, as will be further described herein.
[0035] As illustrated in
[0036] Interface 204 can be in the form of a standardized physical interface. For example, when memory device 206 is used for information storage in computing system 200, interface 204 can be a serial advanced technology attachment (SATA) physical interface, a peripheral component interconnect express (PCIe) physical interface, a universal serial bus (USB) physical interface, or a small computer system interface (SCSI), among other physical connectors and/or interfaces. In general, however, interface 204 can provide an interface for passing control, address, information (e.g., data), and other signals between memory device 206 and a host (e.g., host 202) having compatible receptors for interface 204.
[0037] Memory device 206 includes controller 208 to communicate with host 202 and with memory 216 (e.g., memory arrays 201-1, 201-2, . . . , 201-N). For instance, controller 208 can send commands to perform operations on memory arrays 201-1, 201-2, . . . , 201-N, including operations to sense (e.g., read), program (e.g., write), move, and/or erase data, among other operations.
[0038] Controller 208 can be included on the same physical device (e.g., the same die) as memory 216. Alternatively, controller 208 can be included on a separate physical device that is communicatively coupled to the physical device that includes memory 216. In an embodiment, components of controller 208 can be spread across multiple physical devices (e.g., some components on the same die as the memory, and some components on a different die, module, or board) as a distributed controller.
[0039] Host 202 can include a host controller (not shown
[0040] Controller 208 on memory device 206 and/or the host controller on host 202 can include control circuitry and/or logic (e.g., hardware and firmware). In an embodiment, controller 208 on memory device 206 and/or the host controller on host 202 can be an application specific integrated circuit (ASIC) coupled to a printed circuit board including a physical interface. Also, memory device 206 and/or host 202 can include a buffer of volatile and/or non-volatile memory and a number of registers.
[0041] For example, as shown in
[0042] Circuitry 210 can perform wear leveling operations to relocate data stored in memory arrays 201-1, 201-2, . . . , 201-N in accordance with the present disclosure (e.g., without using a table, such as a lookup table or an address translation table). For example, circuitry 214 can, for a group of memory cells, relocate the data stored in the physical unit of the user units of that group, whose physical address in the physical address sequence is immediately before (e.g., in front of) the first of the consecutive physical addresses associated with the spare units of that group, to the last of the consecutive physical addresses associated with the spare units of that group (e.g., the data is relocated from the user unit that is immediately before the first spare unit in the sequence to the last spare unit in the sequence). That is, the physical address associated with the physical unit from which the data is relocated is immediately before the first of the sequential physical addresses associated with the spare units, and the physical address associated with the physical unit to which the data is relocated is the last of the sequential physical addresses associated with the spare units. Such a data relocation may result in the user unit from which the data was relocated becoming the spare unit that has the first of the consecutive physical addresses associated with the spare units, and the spare unit that had the next-to-last of the consecutive physical addresses associated with the spare units becoming the spare unit that has the last of the consecutive physical addresses associated with the spare units (e.g., the user unit from which the data is relocated becomes the first spare unit in the sequence, and the next-to-last spare unit in the sequence becomes the last spare unit in the sequence). An example illustrating such a data relocation operation will be further described herein (e.g., in connection with
[0043] In an embodiment, circuitry 210 may perform such a wear leveling operation to relocate the data responsive to a triggering event. The triggering event may be, for example, a particular number of program operations being performed (e.g., executed) on memory 216. For instance, as shown in
[0044] Further, as shown in
[0045] Although not shown in
[0046] Dividing memory arrays 201-1, 201-2, . . . , 201-N into multiple groups in such a manner (e.g., with each respective group having its own separate corresponding wear leveling circuitry) can reduce the number of user units per group. Reducing the number of user units per group can increase the frequency at which the spare units of each respective group rotate and/or move through memory arrays 201-1, 201-2, . . . , 202-N, which can increase the endurance of memory 216 closer to its theoretical maximum. Further, the wear across memory 216 can evened out by performing zone swapping. For instance, the circuitry can swap a hot zone of memory 216 (e.g., a zone whose data is being accessed at a high frequency during program and/or sense operations) with a cold zone of memory 216 (e.g., a zone whose data is being accessed at a low frequency during program and/or sense operations) by setting (e.g. using an extended base address counter) a particular wear threshold for a hot zone, and tracking the number of times the spare units of a zone rotate and/or move through all the physical units of that zone.
[0047] In an embodiment, circuitry 210 can change (e.g., tune) the number (e.g., quantity) of the physical units of a group that do not have data stored therein (e.g., change the number of spare units of the group). For example, circuitry 210 can increase the number of spare units of the group to increase the endurance (e.g., the lifetime) of memory 216 (e.g., of the memory cells of memory 216), or decrease the number of spare units of the group to store (e.g., to make room to store) more user data in memory 216. The number of spare units of the group can be changed before or after the data has been relocated in the group.
[0048] The number of spare units of the group may be changed, for example, based on the average endurance (e.g. lifetime) of memory 216 (e.g., of the memory cells of memory 216). For instance, the number of spare units may be tuned to match the average endurance of memory 216. As an additional example, the number of spare units of the group may be changed based on the workload of memory 216. For instance, the number of spare units may be tuned to meet the endurance requirements of certain workloads being performed, or to be performed, on memory 216. As an additional example, the number of spare units of the group may be changed based on the type of memory 216 (e.g., NAND flash, SCM, etc.). For instance, the number of spare units may be tuned based on the write endurance parameters for the type of memory 216.
[0049] Once the data has been relocated, circuitry 210 can use algebraic mapping to identify the physical location in memory 216 to which the data has been relocated. For example, circuitry 210 can use algebraic mapping (e.g., algebraic logical to physical mapping) to identify (e.g., compute) the physical address associated with the spare unit in the sequence to which the data has been relocated. For instance, circuitry 214 can use the algebraic mapping to identify the physical address associated with the spare unit in the sequence to which the data has been relocated during an operation to sense that relocated data (e.g. upon receiving a request from host 202 to read that relocated data). Such an algebraic mapping will be further described herein (e.g., in connection with
[0050] Further, in an embodiment, once the data has been relocated, circuitry 210 can randomize the logical addresses associated with the user units. Circuitry 210 can randomize the logical addresses associated with the user units, for example, by using a static address randomizer that utilizes a Feistel network, random invertible binary matrix, or fixed address bit scrambling, to randomly map the logical addresses to intermediate addresses. Randomizing the logical addresses associated with the user units can reduce the spatial correlation of (e.g., spatially separate) heavily written (e.g., hot) user units (which otherwise tend to be spatially close to each other), which can increase the endurance of memory 216 closer to its theoretical maximum.
[0051] Circuitry 210 can perform additional (e.g., subsequent) wear leveling operations to further relocate the data stored in memory arrays 201-1, 201-2, . . . , 201-N throughout the lifetime of memory 216. For instance, circuitry 210 can perform an additional (e.g., subsequent) operation to relocate the data responsive to an additional (e.g., subsequent) triggering event.
[0052] For example, in an operation to relocate data in the memory that is performed subsequent to the example operation previously described herein, circuitry 210 can relocate the data stored in the physical unit of the user units, whose physical address in the physical address sequence is immediately before the physical address associated with the user unit from which the data was relocated in the previous relocation operation (e.g., immediately before the unit that has now become the first of the spare units in the sequence), to the physical address of the spare unit that was previously the next-to-last of the consecutive physical addresses associated with the spare units (e.g., to the spare unit that has now become the last of the spare units in the sequence). Such a data relocation may once again result in the user unit from which the data was relocated becoming the spare unit that has the first of the consecutive physical addresses associated with the spare units, and the spare unit that had the next-to-last of the consecutive physical addresses associated with the spare units becoming the spare unit that has the last of the consecutive physical addresses associated with the spare units, and subsequent data relocation operations can continue to be performed in an analogous manner. An example illustrating a sequence of such subsequent data relocation operations will be further described herein (e.g., in connection with
[0053] The embodiment illustrated in
[0054]
[0055] As shown in
[0056] In the example illustrated in
[0057] As shown in
[0058] The user unit whose logical address is first in the logical address sequence of the group can be referred to herein as the base unit. For instance, in the example illustrated in
[0059] In the example illustrated in
[0060] As shown in
[0061] The first spare unit in the spare unit sequence of the group can be referred to herein as the edge unit. For instance, in the example illustrated in
[0062]
[0063] The first (e.g., top) row in
[0064] Each subsequent row below the first row in
[0065] As shown in the second row in
[0066] As shown in the third row in
[0067] As shown in the fourth row in
[0068] The remaining data relocation operations of the sequence can continue in an analogous manner, as shown in the remaining rows in
[0069] Although the example sequence illustrated in
[0070]
[0071] At block 542, a physical address for the relocated data is determined (e.g., calculated). As shown in
PA=(LA+BASE) % (U+N)
where LA is the logical address of the relocated data in the memory, BASE is the physical address associated with the base unit of the group, U is the number of user units in the group, and N is the number of spare units in the group (e.g., U+N is the total number of physical units in the group).
[0072] At block 544, it is determined whether the physical address for the relocated data calculated at block 542 is greater than or equal to the physical address associated with the edge unit of the group. If it is determined that the physical address calculated at block 542 is not greater than or equal to the physical address associated with the edge unit of the group, then the physical address calculated at block 542 is determined to be the physical location to which the data has been relocated in the memory, and that physical address is returned as the identified physical location (e.g., the identified physical address) at block 548.
[0073] If it is determined at block 544 that the physical address calculated at block 542 is greater than or equal to the physical address associated with the edge unit of the group, then the physical address calculated at block 542 is not the physical location to which the data has been relocated in the memory. Instead, method 540 proceeds to block 546, where a different physical address for the relocated data is determined (e.g., calculated). As shown in
[0074] Although specific embodiments have been illustrated and described herein, those of ordinary skill in the art will appreciate that an arrangement calculated to achieve the same results can be substituted for the specific embodiments shown. This disclosure is intended to cover adaptations or variations of a number of embodiments of the present disclosure. It is to be understood that the above description has been made in an illustrative fashion, and not a restrictive one. Combination of the above embodiments, and other embodiments not specifically described herein will be apparent to those of ordinary skill in the art upon reviewing the above description. The scope of a number of embodiments of the present disclosure includes other applications in which the above structures and methods are used. Therefore, the scope of a number of embodiments of the present disclosure should be determined with reference to the appended claims, along with the full range of equivalents to which such claims are entitled.
[0075] In the foregoing Detailed Description, some features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the disclosed embodiments of the present disclosure have to use more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus, the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate embodiment.