Certain embodiments of the present description relate generally to management of input and output operations for a memory.
In contrast to volatile memory, non-volatile memory can store data that persists even after the power is removed from thenon-volatile memory. However, due to certain characteristics of non-volatile memory, additional memory management logic and other circuitry has been provided for the non-volatile memory that may not be needed for other types of memory.
Embodiments of the present disclosure are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings in which like reference numerals refer to similar elements.
Non-volatile memory bitcells may wear out after a certain number of access operations such as write operations. Accordingly, non-volatile memory such as write-in-place Non-volatile Random Access Memory (NVRAM), frequently incorporates wear leveling logic which employs algorithms to occasionally redirect selected write operations from one physical location to another to more evenly distribute those write operations across bitcells. As a result, write operations determined to be directed too frequently to the same physical location may be redirected to a different physical location to prevent or defer wearing out the bitcells at any one particular physical address.
Thus, the wear leveling logic may include access cycle count logic to keep track of the number of access cycles experienced by each memory location and store the access cycle count in metadata maintained for each memory location, in that location. If the number of access cycles for a particular memory location (often referred to as a “hot” location) exceeds a certain redistribution threshold value programmed into the memory management logic, memory location redistribution logic can redistribute the memory accesses for that memory location to other locations having a lesser degree of access (often referred to as a “cold” location to provide a more even distribution of the memory accesses over the various locations within the memory. In this manner, the wear leveling logic swaps a hot location with a cold location.
The wear leveling logic may further include memory location mapping rotation logic to periodically rotate the mapping of logical block addresses (LBA) to physical block addresses (PBA) for the entire memory, for purposes of write operation redistribution. For example, if a particular LBA is being continually written with repeated accesses, a swapped to cold PBA eventually becomes a hot PBA, causing another hot to cold PBA swap. This will cause the original hot PBA to become hotter as the metadata is updated. Continued accesses and metadata updates due to hot to cold swaps may eventually destroy a memory location. As a result, rotation logic may be employed to periodically rotate the mapping of all logical block addresses of the entire NVRAM memory to different physical addresses. Such a rotation may take place after expiration of a particular period of time. In this manner, the relationship between LBA and PBA may be dynamically changed over days of operation to attempt to preserve physical locations from damage.
Excessive memory accesses to a particular NVRAM location can adversely affect not only that location being accessed but also neighboring locations. One such adverse effect is frequently referred to as the “write victim” (or write disturb) effect in which data stored in neighboring memory locations can be inadvertently lost due to excessive write operations to an adjacent memory location. To avoid write victim loss of data in neighboring memory locations, memory management logic may utilize data preservation logic such as write victim refresh logic which compares a write victim refresh threshold value to a write access cycle count being stored in metadata. If the write access cycle count exceeds this write victim refresh threshold value, an interrupt is generated. In response to the interrupt, the write victim refresh logic refreshes the content of neighboring potential write victim memory locations to preserve the data stored in the neighboring locations.
Another such adverse effect is frequently referred to as the “read disturb” effect in which bit states stored in neighboring memory locations can be inadvertently programmed if the number of read operations as represented by a read access cycle count exceeds a read disturb threshold number of read operations before the memory block is erased. One prior technique for avoiding or reducing the read disturb effect is for data preservation logic of the memory management logic to keep track of the total number of reads to a block of memory since the last erase operation to the block. When the count exceeds a read disturb target limit, the affected block is relocated, that is, copied over to a new block. Another prior technique selects blocks of memory for relocation using statistical algorithms to select blocks for relocation before the data of a block is affected by the read disturb effect.
In the description that follows, like components have been given the same reference numerals, regardless of whether they are shown in different embodiments. To illustrate one or more embodiments of the present disclosure in a clear and concise manner, the drawings may not necessarily be to scale and certain features may be shown in somewhat schematic form. Features that are described or illustrated with respect to one embodiment may be used in the same way or in a similar way in one or more other embodiments or in combination with or instead of features of other embodiments.
It is appreciated herein that wear leveling logic employed by prior memory management logic to avoid damage caused by an excessive number of access operations to particular memory locations, may consume substantial resources, adversely affecting performance and increasing cost. Similarly, data preservation logic provided to detect and avoid data loss or corruption due to an excessive number of access operations to particular memory locations, can also consume valuable resources and adversely affect performance.
In one aspect of the present description, repetitive address indirection is employed to repetitively redirect write operations to different physical locations of the memory. In one embodiment, write data for every write operation is automatically, unconditionally and repetitively redirected to physical addresses in a memory in a circular sequence of physical addresses of the memory independently of, that is without regard to, the logical address of each write operation. As a result, successive write operations to the memory are automatically evenly distributed over the memory, even if repeatedly directed to the same or similar logical address. Because the write operations are automatically evenly distributed in an automatic unconditional repetitive sequential fashion without regard to the number of accesses directed to any one location, memory management may be significantly simplified. Such simplification may be achieved not only by a reduction in logic circuitry and programming previously employed for complex conditional, nonsequential access redirection and refresh operations, but also in a reduction in metadata and associated error correction codes previously stored in each memory location for bitcell and data preservation purposes.
For example, an excessive number of memory write access cycles to the same memory location, can adversely affect not only the location being accessed but also neighboring locations. In certain types of NVRAM, the bitcells may wear out after a certain number of access operations such as write operations. Accordingly, prior memory management in an NVRAM frequently incorporates complex wear leveling logic to redistribute write operations to avoid an excessive number of write operations to any one location. The prior wear leveling logic may include write access cycle count logic to keep track of the number of write access cycles experienced by each memory location. If the number of write access cycles for a particular memory location exceeds a certain redistribution threshold value programmed into the memory management logic, a condition is met and memory location redistribution logic previously redirected, that is, relocated the write data to a different physical memory location having a lower number of write access cycles. Relatively complex algorithms are frequently employed by the prior memory location redistribution logic to select an appropriate relocation destination having a lower number of write access cycles so as to achieve a more even distribution of write operations over the memory. For example, random address generators may be employed to select random addresses to relocate data in a memory location which may be being excessively accessed. A mapping table which maps logical addresses to physical addresses is updated to indicate the new physical location associated with that logical address.
In contrast, in a memory employing repetitive address indirection in accordance with one aspect of the present description, write data is automatically written to physical addresses in a memory in a circular sequence of physical addresses of the memory independently of the logical address of each write operation and in some embodiments, without keeping track of excessive memory operations. Because the write operations are automatically evenly distributed, wear leveling logic may be reduced or eliminated. For example, write access cycle count logic which previously tracked the number of memory write access cycles for each memory location, may be reduced or eliminated. In addition, memory location redistribution logic which selected the relocation destinations using various algorithms to more evenly distribute the write operations when the threshold was exceed, may also be reduced or eliminated.
In one embodiment for a memory employing repetitive address indirection in accordance with the present description, for every received write operation, a next-in-sequence physical address of a circular sequence of physical addresses of the memory is selected. For example, a head address pointer may be incremented to automatically and unconditionally point to the next-in-sequence physical address of the circular sequence of physical addresses. The write operation is performed at the selected next-in-sequence physical address and the logical address of the memory operation is mapped to the selected physical address. If the automatic incrementally selected physical address is the ending address of the circular sequence of physical addresses, the circular sequence of physical addresses is restarted so that the next-in-sequence physical address to be selected is the beginning physical address of the circular sequence of physical addresses.
As a result, write operations to the memory are automatically evenly distributed over the memory, even if directed to the same or similar logical address. In addition to facilitating substantial simplification of memory management logic by reducing or eliminating write access cycle count logic tracking a write access cycle count for each memory location, the metadata stored at each memory location may be simplified and reduced in size by eliminating write leveling metadata storing a write access cycle count for each memory location. As a result, the amount of memory available for storing user data may be increased without increasing the size of the memory. In addition, by eliminating write leveling metadata, logic for accessing particular wear leveling metadata fields may be reduced or eliminated.
Another characteristic of some types of NVRAM is that read or write operations to one area of the NVRAM may be influenced by the states of neighboring or adjacent areas of the NVRAM. Accordingly, NVRAM frequently employs isolation circuitry and other techniques to isolate the neighboring memory regions from a particular area or region being accessed to prevent such inadvertent effects. For example, an inhibit voltage may be employed to isolate neighboring areas from influencing the area selected for access. However, if multiple operations are directed to the same area of the NVRAM, the resultant isolation employed during such access operations may adversely affect the state or states of the neighboring memory areas, often referred to as “write victims.” As a result, refresh operations provided by suitable tracking circuitry have been applied to the neighboring or “write victim” areas to counteract the effects of the isolation.
For example, in some existing NVRAM, write victim refresh logic of the memory management logic stores a write victim refresh threshold value which is compared to the write access cycle count for a memory location being accessed. When the write cycle count exceeds this write victim refresh threshold value, an interrupt is generated. In response to the interrupt, the write victim refresh logic refreshes the content of neighboring “write victim” memory locations. In addition, the write victim refresh logic bumps the write victim refresh threshold value for that memory location to a higher value. When the write cycle access count for this memory location exceeds this higher write victim refresh threshold value, an interrupt is again generated, causing the refresh of the neighboring “write victim” memory location again and the resetting of the write victim refresh threshold value to a higher still value.
In contrast, in a memory employing repetitive address indirection in accordance with one aspect of the present description, write data is automatically written to physical addresses in a memory in a circular sequence of physical addresses to automatically evenly distribute write operations over the memory. As a result, a potential victim location is automatically updated before needing a refresh. Consequently, any need to track write victims, and the associated write victim refresh logic of prior memory management logic may be reduced or eliminated. In addition, write victim refresh metadata storing the write access cycle count and write victim refresh threshold value for each memory location may be reduced or eliminated as well. As a result, the amount of memory available for storing user data may be increased without increasing the size of the memory. Still further, by eliminating write victim refresh metadata, logic for accessing particular write victim refresh metadata fields may be reduced or eliminated.
An NVRAM typically has a maximum write access cycle threshold which if exceeded for a particular memory location, can cause that particular memory location to fail. In a denial of service attack, the attacker may direct a large number of write operations to a single memory location. In an NVRAM employing prior memory management logic, the number of write operations in a denial of service attack may be so large that the maximum write access cycle threshold may be exceeded for a particular memory location notwithstanding the redistribution by the wear leveling logic of the NVRAM due to overheads from metadata writing. As a result, portions of the NVRAM employing prior memory management logic may be damaged by the denial of service attack.
To avoid such damage, the wear leveling logic of some prior memory management logic may employ memory location mapping rotation logic to periodically rotate the mapping of logical block addresses (LBA) to physical block addresses (PBA) for the entire memory, for purposes of write operation redistribution. The memory location mapping rotation logic may utilize a uniform mapping offset value between logical block addresses (LBA) and physical block addresses (PBA). The uniform mapping offset value is periodically changed to rotate the mapping between logical block addresses (LBA) and physical block addresses (PBA) for the entire memory. For example, the uniform mapping offset value may be initially set to zero such that the beginning LBA address, LBA0 is mapped to PBA0. In a similar manner the ending LBA address, LBA “end”, is mapped to PBA “end.” The intermediate LBA's are mapped to PBA's in a similar fashion.
After some threshold amount of time, the uniform mapping offset value is incremented to a value of one, such that the beginning LBA address, LBA0 is mapped to PBA1 instead of the beginning PBA0. In a similar manner the ending LBA address, LBA “end”, is mapped to the beginning PBA0, instead of the ending PBA “end”. The intermediate LBA's are mapped to PBA's in a similar fashion, utilizing the uniform mapping offset value, to rotate the mapping between the LBA's and the PBA's of the entire memory.
The mapping of LBAs to PBAs is cyclically rotated in this fashion for the entire memory, each cycle of rotation being initiated upon expiration of a period of time equal to the threshold amount of time. It is appreciated that memory location mapping rotation logic can be relatively complex and can consume substantial system resources in rotating the LBA to PBA mapping for the entire memory each cycle. In contrast, in a memory employing repetitive address indirection in accordance with one aspect of the present description, write data for every write operation is automatically and repetitively redirected to physical addresses in a memory in a circular sequence of physical addresses to automatically evenly distribute write operations over the memory. Thus, each page of memory automatically has an equal or substantially equal number of memory operation write access cycles. As a result, the likelihood of any one memory location exceeding the maximum write access cycle threshold, is reduced or eliminated. Further, memory location mapping rotation logic of prior memory management logic may be reduced or eliminated. In addition, the consumption of resources by such prior memory location mapping rotation logic, may be reduced or eliminated as well.
In some non-volatile memory, read operations directed to a particular location can adversely affect nearby bitcells. This phenomenon, often referred to as “read disturb” can cause nearby bitcells in the same block of memory to become inadvertently programmed if the number of read operations exceeds a “read disturb” threshold number of read operations before the memory location is written to. The “read disturb” threshold number of read operations before a write operation, which can cause a read disturb to nearby bitcells, is frequently in the hundreds of thousands of read operations between intervening write operations. Although the read disturb does not affect the bitcell being read, if the number of read operations to that location exceeds the read disturb threshold, the nearby bitcells may be inadvertently programmed as noted above.
One prior technique for avoiding or reducing the read disturb problem is for the memory management logic to count, that is, keep track of the total number of reads to the memory location since the last write operation to the location. After a write operation, the read count is reset. However, if the count exceeds a “read disturb” target limit, the affected location is relocated, that is, copied over to a new location. Another prior technique selects memory addresses for relocation using statistical algorithms.
Accordingly, previous memory location redistribution logic redirected, that is, relocated data to a different physical memory location having a lower number of read access cycles. Relatively complex algorithms are frequently employed by the memory location redistribution logic to select an appropriate relocation destination having a lower number of read or write access cycles so as to avoid the read disturb phenomenon. A mapping table which maps logical addresses to physical addresses is updated to indicate the new physical location of that logical address.
In contrast, in a memory employing repetitive address indirection in accordance with one aspect of the present description, the new memory locations of data being relocated to avoid a read disturb are automatically selected in a circular sequence of physical addresses of the memory independently of the logical address of each write operation. As a result, prior memory location redistribution logic which calculated or otherwise selected relocation destinations in a relatively complex fashion to more evenly distribute the read operations when the “read disturb” target limit, was exceeded, may also be reduced or eliminated.
In one embodiment of repetitive address redirection in accordance with the present description, for each data relocation operation, a next-in-sequence physical address of a circular sequence of physical addresses of the memory is selected in a manner similar to that described in connection with a received write operation. For example, a head address pointer may be incremented to point to the next-in-sequence physical address of the circular sequence of physical addresses. The write operation of the relocation operation is performed at the selected next-in-sequence physical address and the logical address of the relocated data is mapped to the selected physical address. If the selected physical address is the ending address of the circular sequence of physical addresses, the circular sequence of physical addresses is restarted so that the next-in-sequence physical address to be selected is the beginning physical address of the circular sequence of physical addresses.
In another aspect of the present description, in connection with incrementing a head address pointer to point to the next-in-sequence circular memory physical address of the circular sequence of physical addresses, a tail address pointer may be incremented to point to an offset next-in-sequence physical address of the circular sequence of physical addresses. In one embodiment, the offset next-in-sequence physical address pointed to by the tail address pointer is offset from the next-in-sequence physical address pointed to by the head address pointer by a predetermined number of physical addresses. As explained in greater detail below, the offset defined by a number of physical addresses between the head address pointer and the tail address pointer defines a spare memory having a capacity which includes the predetermined number of physical addresses. Write operations may be directed to sequential locations within the spare memory portion.
It is appreciated that repetitive address indirection in accordance with the present description may be applied to a variety of NVRAM and other memory devices such as for example, memory devices that use chalcogenide phase change material (e.g., chalcogenide glass), three-dimensional (3D) crosspoint memory, or memory that incorporates memristor technology. Additional memory devices which may benefit from repetitive address indirection in accordance with the present description may include other types of byte-addressable, write-in-place non-volatile memory, ferroelectric transistor random-access memory (FeTRAM), nanowire-based non-volatile memory, Magnetoresistive random-access memory (MRAM), Spin Transfer Torque (STT)-MRAM, Phase Change Memory (PCM), storage class memory (SCM), universal memory, Ge2Sb2Te5, programmable metallization cell (PMC), resistive memory (RRAM), RESET (amorphous) cell, SET (crystalline) cell, PCME, Ovshinsky memory, ferroelectric memory (also known as polymer memory and poly(N-vinylcarbazole)), ferromagnetic memory (also known as Spintronics, SPRAM (spin-transfer torque RAM)), STRAM (spin tunneling RAM), magnetic memory, magnetic random access memory (MRAM), and Semiconductor-oxide-nitride-oxidesemiconductor (SONOS, also known as dielectric memory). It is appreciated that other types of memory may benefit from repetitive address indirection in accordance with the present description, depending upon the particular application.
Turning to the figures,
In alternative embodiments, system 10 may include more elements, fewer elements, and/or different elements. Moreover, although system 10 may be depicted as comprising separate elements, it will be appreciated that such elements may be integrated on to one platform, such as systems on a chip (SoCs). In the illustrative example, system 10 comprises a microprocessor 20, a memory controller 30, a memory 40 and peripheral components 50 which may include, for example, video controller, input device, output device, storage, network adapter, a power source (including a battery, renewable power source (e.g., photovoltaic panel), wireless charging, or coupling to an AC outlet), etc. The microprocessor 20 includes a cache 25 that may be part of a memory hierarchy to store instructions and data, and the system memory 40 may also be part of the memory hierarchy. Communication between the microprocessor 20 and the memory 40 may be facilitated by the memory controller (or chipset) 30, which may also facilitate in communicating with the peripheral components 50.
Storage of the peripheral components 50 may be, for example, non-volatile storage, such as solid-state drives (SSD), magnetic disk drives, optical disk drives, a tape drive, flash memory, etc. The storage may comprise an internal storage device or an attached or network accessible storage. The microprocessor 20 is configured to write data in and read data from the memory 40. Programs in the storage are loaded into the memory and executed by the processor. A network controller or adapter enables communication with a network, such as an Ethernet, a Fiber Channel Arbitrated Loop, etc. Further, the architecture may, in certain embodiments, include a video controller configured to display information represented by data in a memory on a display monitor, where the video controller may be embodied on a video card or integrated on integrated circuit components mounted on a motherboard or other substrate. An input device is used to provide user input to the processor, and may include a keyboard, mouse, pen-stylus, microphone, touch sensitive display screen, input pins, sockets, or any other activation or input mechanism known in the art. An output device is capable of rendering information transmitted from the processor, or other component, such as a display monitor, printer, storage, output pins, sockets, etc. The network adapter may embodied on a network card, such as a Peripheral Component Interconnect (PCI) card, PCI-express, or some other I/O card, or on integrated circuit components mounted on a motherboard or other substrate.
One or more of the components of the device 10 may be omitted, depending upon the particular application. For example, a network router may lack a video controller, for example.
Any one or more of the memory devices 25, 40, and the other devices 10, 30, 50 may include a memory employing repetitive address indirection in accordance with the present description, or be embodied as any type of data storage capable of storing data in a persistent manner (even if power is interrupted to non-volatile memory) such as but not limited to any combination of memory devices that use for example, chalcogenide phase change material (e.g., chalcogenide glass), three-dimensional (3D) crosspoint memory, or other types of byte-addressable, write-in-place non-volatile memory, ferroelectric transistor random-access memory (FeTRAM), nanowire-based non-volatile memory, phase change memory (PCM), memory that incorporates memristor technology, Magnetoresistive random-access memory (MRAM) or another Spin Transfer Torque (STT)-MRAM as described above. Such memory elements in accordance with embodiments described herein can be used either in stand-alone memory circuits or logic arrays, or can be embedded in microprocessors and/or digital signal processors (DSPs). Additionally, it is noted that although systems and processes are described herein primarily with reference to microprocessor based systems in the illustrative examples, it will be appreciated that in view of the disclosure herein, certain aspects, architectures, and principles of the disclosure are equally applicable to other types of device memory and logic devices.
The NVRAM memory 66 of the SSD may also include a row decoder, a timer device and I/O devices (or I/O outputs). Bits of the same memory word may be separated from each other for efficient I/O design. A multiplexer (MUX) may be used to connect each column to the required circuitry during a READ operation. Another MUX may be used to connect each column to a write driver during a WRITE operation. A control circuit 67 such as a memory controller is configured to control and perform read and write operations directed to the bitcells 64 as explained below. The control circuit 67 is configured to perform the described operations using appropriate hardware, software or firmware, or various combinations thereof. As explain in greater detail below, the control circuit 67 includes repetitive address indirection control logic 68 which includes circular sequential address redirection logic 69 and circular sequential address mapping logic 70 in accordance with one aspect of the present description.
In one aspect of the present description, write data is written to physical addresses in a memory in the repeating circular sequence of physical block addresses PBA0, PBA1, . . . PBA11 independently of the logical address of each write operation. As a result, write operations to the memory are automatically evenly distributed over the memory, even if directed to the same or similar logical address.
In the illustrated embodiment, the circular sequential address redirection logic 69 (
In connection with receipt (block 310,
The repetitive address indirection control logic 68 (
As described above, the circular sequential address redirection logic 69 of the repetitive address indirection control logic 68, performs (block 334,
In another aspect of the present description, the repetitive address indirection control logic 68 is configured to set aside a section of the block 300 of memory locations as temporary spare memory section. In the example of
Accordingly, in connection with the receipt (block 310,
In connection with the receipt (block 310,
Thus, in a memory employing repetitive address indirection in accordance with one aspect of the present description, write data for every write operation is automatically and repetitively redirected to physical addresses in a memory in a circular sequence of physical addresses such that the write operations are automatically evenly distributed over the memory.
Further, in a memory employing repetitive address indirection in accordance with one aspect of the present description, write data is written to physical addresses in a memory in a circular sequence of physical addresses such that each potential victim location is automatically updated before needing a refresh. For example, in a write operation directed to physical address PBA1, for example, the adjacent memory location at physical address PBA2 is potentially, absent repetitive address indirection in accordance with one aspect of the present description, a potential write victim. However, because the memory location at physical address PBA2 is automatically updated in the next write operation because the physical address PBA2 is the next-in-sequence physical address of the circular sequence of physical addresses, the next-in-sequence physical address PBA2 is automatically updated before needing a refresh.
Similarly, in the write operation directed to physical address PBA1, for example, the adjacent memory location at physical address PBA0 is, absent repetitive address indirection in accordance with one aspect of the present description, potentially a write victim. However, because the next-in-sequence memory location written for the next write operation is at physical address PBA2 instead of the previous memory location PBA1 adjacent to the potential write victim PBA0, the potential write victim PBA0 is no longer adjacent to the memory location being updated. Accordingly, the memory location PBA0 is no longer a potential write victim and does not need a refresh to avoid becoming a write victim.
Consequently, write victim refresh logic of prior memory management logic which tracked potential write victims may be reduced or eliminated. In addition, write victim refresh metadata storing the write access cycle count and write victim refresh threshold value for each memory location may be reduced or eliminated as well. As a result, the amount of memory available for storing user data may be increased without increasing the size of the memory.
Still further, in a memory employing repetitive address indirection in accordance with one aspect of the present description, each page of memory automatically has an equal or substantially equal number of memory operation write access cycles because write data is written to physical addresses in a memory in a circular sequence of physical addresses to automatically evenly distribute write operations over the memory as shown in
As previously mentioned, in one embodiment, the repetitive address indirection control logic 68 is configured to set aside a section of the block 300 of memory locations as temporary spare memory section. In the example of
As discussed above, a determination (block 360,
In the illustrated embodiment, the circular sequential address redirection logic 69 (
To select (block 370,
The circular sequential address redirection logic 69 (
It is appreciated that valid write data may be relocated to a variety of different locations, depending upon the particular application. For example, in one embodiment, valid data being cleaned (
Accordingly, in connection with the receipt (block 310,
In this example, the valid data which had been located at the memory location having the physical address PBA2, had been mapped to logical address LBA7 as shown in
In an alternative embodiment, valid data being cleaned (
It is appreciated that the illustrated embodiment may have a four times worse write amplification compared to typical garbage collection scheme used in solid state drives (SSDs) that include NAND memory. In one embodiment, the memory media may have an offsetting four times greater endurance. It is further appreciated that improved performance may be achieved by employing smaller write granularity.
As previously mentioned, unconditional repetitive address indirection in accordance with the present description may provide for not only a reduction in logic circuitry and programming previously employed for conditional, nonsequential memory access redirection and refresh operations, but also provide a reduction in metadata and associated error correction codes previously stored in each memory location for bitcell and data preservation purposes.
In contrast, in a memory employing unconditional, repetitive address indirection, in accordance with the present description, such separate packet metadata for conditional, nonsequential memory access redirection and data protection may be reduced or eliminated. For example,
In this example, the metadata field 814 lacking the metadata for conditional, nonsequential memory access redirection employed for the memory location 710 (
As noted above, previous memories frequently employed logic to read and update the metadata field 714 separately from the user data payload field 724 and its associated payload ECC field 730. Accordingly, the metadata field 714 in previous memories frequently employed a separate ECC field 720 to detect and correct metadata storage errors when reading from or writing to the metadata field 714 for the bitcell and data preservation operations. Accordingly, logic was provided for both read and write operations to the metadata field 714 and the metadata ECC field 720 independently of read and write operations to the user data payload field 724 and payload ECC field 730 for the memory location 710.
By comparison, since the metadata field 814 (
In contrast, in the memory location 810, a single ECC field encodes the entire memory location 310 including the user data payload field 824 and the metadata field 814. By eliminating the separate metadata ECC field 720 of the prior memory location 710 of
The following examples pertain to further embodiments.
Example 1 is an apparatus comprising: a non-volatile memory, said memory including: a plurality of memory locations, each memory location configured to store data and having a physical address, and repetitive address indirection control logic configured to receive a plurality of write operations for writing data to logical addresses of the memory, and further configured to repetitively redirect the writing of write data of the write operations to physical addresses in the memory in a circular sequence of physical addresses of the memory independently of logical addresses of the write operations, said repetitive address indirection control logic including: circular sequential address redirection logic configured to, for every received write operation of the plurality of write operations, select a next-in-sequence physical address of the circular sequence of physical addresses of the memory, and perform the received write operation at the selected next-in-sequence physical address, wherein the circular sequence of physical addresses starts at a beginning physical address of the circular sequence, ends at an ending physical address of the circular sequence of physical addresses and includes physical addresses intermediate the beginning and ending physical addresses of the circular sequence, and circular sequential address mapping logic configured to map a logical address of each received write operation to the selected next-in-sequence physical address, and wherein the circular sequential address redirection logic is further configured to, if a selected next-in-sequence physical address is the ending physical address of the circular sequence of physical addresses, restart the circular sequence of physical addresses so that the next-in-sequence physical address to be selected is the beginning physical address of the circular sequence of physical addresses.
In Example 2, the subject matter of Examples 1-9 (excluding the present Example) can optionally include wherein the circular sequential address redirection logic configured to select a next-in-sequence physical address of a circular sequence of physical addresses, has a head address pointer data structure configured to store a head address pointer, and is further configured to increment the head address pointer to point to the next-in-sequence physical address of the circular sequence of physical addresses, and to write the data of a received write operation to the next-in-sequence circular memory physical address pointed to by the head address pointer.
In Example 3, the subject matter of Examples 1-9 (excluding the present Example) can optionally include wherein the circular sequential address redirection logic further has a tail address pointer data structure configured to store a tail address pointer, and wherein the circular sequential address redirection logic is further configured to, in connection with incrementing the head address pointer to point to the next-in-sequence circular memory physical address of the circular sequence of physical addresses, increment the tail address pointer to point to an offset next-in-sequence physical address of the circular sequence of physical addresses, wherein the offset next-in-sequence physical address pointed to by the tail address pointer is offset from the next-in-sequence physical address pointed to by the head address pointer by a predetermined number of physical addresses.
In Example 4, the subject matter of Examples 1-9 (excluding the present Example) can optionally include wherein the circular sequential address redirection logic is further configured to, in connection with the incrementing a tail address pointer to point to an offset next-in-sequence physical address, to increment the tail address pointer to pointing to a current tail address pointer physical address, to point to an offset next-in-sequence physical address, and wherein the repetitive address indirection control logic is further configured to relocate valid data located at the offset next-in-sequence physical address to another memory location to preserve the valid data from being overwritten by the writing of write data to physical addresses in the memory in a circular sequence of physical addresses of the memory.
In Example 5, the subject matter of Examples 1-9 (excluding the present Example) can optionally include wherein the circular sequential address redirection logic is further configured to increment the head address pointer to point to the next-in-sequence physical address of the circular sequence of physical addresses so that valid data located at a current tail address pointer physical address is written to the next-in-sequence circular memory physical address pointed to by the head address pointer, to relocate the valid data located at the current tail address pointer physical address to the next-in-sequence circular memory physical address pointed to by the head address pointer.
In Example 6, the subject matter of Examples 1-9 (excluding the present Example) can optionally include a temporary spare memory section provided by the memory locations of the physical addresses of the circular sequence of physical addresses between the physical address pointed to by the head address pointer and the physical address pointed to by the tail address pointer, and wherein the next-in-sequence circular memory physical address pointed to by the head address pointer is at the head of the temporary spare memory section.
In Example 7, the subject matter of Examples 1-9 (excluding the present Example) can optionally include wherein the repetitive address indirection control logic is further configured to receive a plurality of read operations for reading data from a logical address of the memory, and to selectively relocate the read data to a next-in-sequence physical address of the circular sequence of physical addresses of the memory, and wherein the circular sequential address mapping logic is further configured to map the logical address of the read operations to the next-in-sequence physical address of the read data relocation.
In Example 8, the subject matter of Examples 1-9 (excluding the present Example) can optionally include wherein each memory location includes a metadata field configured to store metadata, a user data payload field configured to store user data, and a single error correction code field configured to store an encoding of the entire memory location for error detection and correction.
In Example 9, the subject matter of Examples 1-9 (excluding the present Example) can optionally a computing system comprising: said non-volatile memory, a processor configured to cause a data write into or data read from the memory, and any of:
a display communicatively coupled to the processor, a network interface communicatively coupled to the processor, or a battery coupled to provide power to the system.
Example 10 is a method, comprising: receiving a plurality of write operations directed to logical addresses of a non-volatile memory, and writing data of received write operations to physical addresses in the memory, said writing including repetitively redirecting the writing of write data of the plurality of write operations to physical addresses in the memory in a circular sequence of physical addresses of the memory, wherein for each received write operation of the plurality of write operations, the writing of data includes: selecting a next-in-sequence physical address of the circular sequence, performing a write operation at a selected physical address, mapping the logical address to a selected physical address, and if a selected physical address is an ending address of the circular sequence, restarting the circular sequence so that the next-in-sequence physical address to be selected is a beginning physical address of the circular sequence of physical addresses.
In Example 11, the subject matter of Examples 10-17 (excluding the present Example) can optionally include wherein the selecting a next-in-sequence physical address of a circular sequence of physical addresses includes incrementing a head address pointer to point to the next-in-sequence physical address of the circular sequence of physical addresses so that the write data of a received write operation is written to the next-in-sequence physical address pointed to by the head address pointer.
In Example 12, the subject matter of Examples 10-17 (excluding the present Example) can optionally include in connection with incrementing a head address pointer to point to the next-in-sequence circular memory physical address of the circular sequence of physical addresses, incrementing a tail address pointer to point to an offset next-in-sequence physical address of the circular sequence of physical addresses, wherein the offset next-in-sequence physical address pointed to by the tail address pointer is offset from the next-in-sequence physical address pointed to by the head address pointer by a predetermined number of physical addresses.
In Example 13, the subject matter of Examples 10-17 (excluding the present Example) can optionally include wherein the incrementing a tail address pointer to point to an offset next-in-sequence physical address includes incrementing a tail address pointer pointing to a current tail address pointer physical address, to point to an offset next-in-sequence physical address, and wherein the method further includes relocating valid data located at the offset next-in-sequence physical address to another memory location to preserve the valid data from being overwritten by the writing of write data to physical addresses in the memory in a circular sequence of physical addresses of the memory.
In Example 14, the subject matter of Examples 10-17 (excluding the present Example) can optionally include wherein relocating valid data located at a current tail address pointer physical address to another memory location includes incrementing the head address pointer to point to the next-in-sequence physical address of the circular sequence of physical addresses so that the data being relocated is written to the next-in-sequence circular memory physical address pointed to by the head address pointer.
In Example 15, the subject matter of Examples 10-17 (excluding the present Example) can optionally include wherein the physical addresses of the circular sequence of physical addresses between the physical address pointed to by the head address pointer and the physical address pointed to by the tail address pointer provide a temporary spare memory section of the memory, the method further comprising relocating valid data of the temporary spare memory section.
In Example 16, the subject matter of Examples 10-17 (excluding the present Example) can optionally include receiving a plurality of read operations for reading data from a logical address of the memory, selectively relocating the read data to a next-in-sequence physical address of the circular sequence of physical addresses of the memory, and mapping the logical address of the read operations to the next-in-sequence physical address of the read data relocation.
In Example 17, the subject matter of Examples 10-17 (excluding the present Example) can optionally include for each memory location, storing metadata in a metadata field, user data in a user data payload field, and an encoding of the entire memory location for error detection and correction, in a single error correction code field.
Example 18 is a memory apparatus comprising means to perform a method as claimed in any preceding claim.
Example 19 is a computing system, comprising: a memory, and a processor configured to cause a data write into or data read from the memory, wherein the memory is a non-volatile memory, said memory including: a plurality of memory locations, each memory location configured to store data and having a physical address, and repetitive address indirection control logic configured to receive a plurality of write operations for writing data to logical addresses of the memory, and further configured to repetitively redirect the writing of write data of the write operations to physical addresses in the memory in a circular sequence of physical addresses of the memory independently of logical addresses of the write operations, said repetitive address indirection control logic including: circular sequential address redirection logic configured to, for every received write operation of the plurality of write operations, select a next-in-sequence physical address of the circular sequence of physical addresses of the memory, and perform the received write operation at the selected next-in-sequence physical address, wherein the circular sequence of physical addresses starts at a beginning physical address of the circular sequence, ends at an ending physical address of the circular sequence of physical addresses and includes physical addresses intermediate the beginning and ending physical addresses of the circular sequence, and circular sequential address mapping logic configured to map a logical address of each received write operation to the selected next-in-sequence physical address, and wherein the circular sequential address redirection logic is further configured to, if a selected next-in-sequence physical address is the ending physical address of the circular sequence of physical addresses, restart the circular sequence of physical addresses so that the next-in-sequence physical address to be selected is the beginning physical address of the circular sequence of physical addresses.
In Example 20, the subject matter of Examples 19-27 (excluding the present Example) can optionally include wherein the circular sequential address redirection logic configured to select a next-in-sequence physical address of a circular sequence of physical addresses, has a head address pointer data structure configured to store a head address pointer, and is further configured to increment the head address pointer to point to the next-in-sequence physical address of the circular sequence of physical addresses, and to write the data of a received write operation to the next-in-sequence circular memory physical address pointed to by the head address pointer.
In Example 21, the subject matter of Examples 19-27 (excluding the present Example) can optionally include wherein the circular sequential address redirection logic further has a tail address pointer data structure configured to store a tail address pointer, and wherein the circular sequential address redirection logic is further configured to, in connection with incrementing the head address pointer to point to the next-in-sequence circular memory physical address of the circular sequence of physical addresses, increment the tail address pointer to point to an offset next-in-sequence physical address of the circular sequence of physical addresses, wherein the offset next-in-sequence physical address pointed to by the tail address pointer is offset from the next-in-sequence physical address pointed to by the head address pointer by a predetermined number of physical addresses.
In Example 22, the subject matter of Examples 19-27 (excluding the present Example) can optionally include wherein the circular sequential address redirection logic is further configured to, in connection with the incrementing a tail address pointer to point to an offset next-in-sequence physical address, to increment the tail address pointer to pointing to a current tail address pointer physical address, to point to an offset next-in-sequence physical address, and wherein the repetitive address indirection control logic is further configured to relocate valid data located at the offset next-in-sequence physical address to another memory location to preserve the valid data from being overwritten by the writing of write data to physical addresses in the memory in a circular sequence of physical addresses of the memory.
In Example 23, the subject matter of Examples 19-27 (excluding the present Example) can optionally include wherein the circular sequential address redirection logic is further configured to increment the head address pointer to point to the next-in-sequence physical address of the circular sequence of physical addresses so that valid data located at a current tail address pointer physical address is written to the next-in-sequence circular memory physical address pointed to by the head address pointer, to relocate the valid data located at the current tail address pointer physical address to the next-in-sequence circular memory physical address pointed to by the head address pointer.
In Example 24, the subject matter of Examples 19-27 (excluding the present Example) can optionally include a temporary spare memory section provided by the memory locations of the physical addresses of the circular sequence of physical addresses between the physical address pointed to by the head address pointer and the physical address pointed to by the tail address pointer, and wherein the next-in-sequence circular memory physical address pointed to by the head address pointer is at the head of the temporary spare memory section.
In Example 25, the subject matter of Examples 19-27 (excluding the present Example) can optionally include wherein the repetitive address indirection control logic is further configured to receive a plurality of read operations for reading data from a logical address of the memory, and to selectively relocate the read data to a next-in-sequence physical address of the circular sequence of physical addresses of the memory, and wherein the circular sequential address mapping logic is further configured to map the logical address of the read operations to the next-in-sequence physical address of the read data relocation.
In Example 26, the subject matter of Examples 19-27 (excluding the present Example) can optionally include wherein each memory location includes a metadata field configured to store metadata, a user data payload field configured to store user data, and a single error correction code field configured to store an encoding of the entire memory location for error detection and correction.
In Example 27, the subject matter of Examples 19-27 (excluding the present Example) can optionally include any of: a display communicatively coupled to the processor, a network interface communicatively coupled to the processor, or a battery coupled to provide power to the system.
Example 28 is an apparatus for storing data, comprising: a non-volatile memory, said memory including: a plurality of memory locations, each memory location configured to store data and having a physical address, and repetitive address indirection control means for receiving a plurality of write operations for writing data to logical addresses of the memory, and for repetitively redirecting the writing of write data of the write operations to physical addresses in the memory in a circular sequence of physical addresses of the memory independently of logical addresses of the write operations, said repetitive address indirection control means including: circular sequential address redirection means for, for every received write operation of the plurality of write operations, selecting a next-in-sequence physical address of the circular sequence of physical addresses of the memory, and performing the received write operation at the selected next-in-sequence physical address, wherein the circular sequence of physical addresses starts at a beginning physical address of the circular sequence, ends at an ending physical address of the circular sequence of physical addresses and includes physical addresses intermediate the beginning and ending physical addresses of the circular sequence, and circular sequential address mapping means for mapping a logical address of each received write operation to the selected next-in-sequence physical address, and wherein the circular sequential address redirection means is further for, if a selected next-in-sequence physical address is the ending physical address of the circular sequence of physical addresses, restarting the circular sequence of physical addresses so that the next-in-sequence physical address to be selected is the beginning physical address of the circular sequence of physical addresses.
In Example 29, the subject matter of Examples 28-36 (excluding the present Example) can optionally include wherein the circular sequential address redirection means for selecting a next-in-sequence physical address of a circular sequence of physical addresses, has a head address pointer data structure configured to store a head address pointer, and is further for incrementing the head address pointer to point to the next-in-sequence physical address of the circular sequence of physical addresses, and for writing the data of a received write operation to the next-in-sequence circular memory physical address pointed to by the head address pointer.
In Example 30, the subject matter of Examples 28-36 (excluding the present Example) can optionally include wherein the circular sequential address redirection means further has a tail address pointer data structure configured to store a tail address pointer, and wherein the circular sequential address redirection means is further for, in connection with incrementing the head address pointer to point to the next-in-sequence circular memory physical address of the circular sequence of physical addresses, incrementing the tail address pointer to point to an offset next-in-sequence physical address of the circular sequence of physical addresses, wherein the offset next-in-sequence physical address pointed to by the tail address pointer is offset from the next-in-sequence physical address pointed to by the head address pointer by a predetermined number of physical addresses.
In Example 31, the subject matter of Examples 28-36 (excluding the present Example) can optionally include wherein the circular sequential address redirection means is further for, in connection with the incrementing a tail address pointer to point to an offset next-in-sequence physical address, incrementing the tail address pointer pointing to a current tail address pointer physical address, to point to an offset next-in-sequence physical address, and wherein the repetitive address indirection control means is further for relocating valid data located at the offset next-in-sequence physical address to another memory location to preserve the valid data from being overwritten by the writing of write data to physical addresses in the memory in a circular sequence of physical addresses of the memory.
In Example 32, the subject matter of Examples 28-36 (excluding the present Example) can optionally include wherein the circular sequential address redirection means is further for incrementing the head address pointer to point to the next-in-sequence physical address of the circular sequence of physical addresses so that valid data located at a current tail address pointer physical address is written to the next-in-sequence circular memory physical address pointed to by the head address pointer, to relocate the valid data located at the current tail address pointer physical address to the next-in-sequence circular memory physical address pointed to by the head address pointer.
In Example 33, the subject matter of Examples 28-36 (excluding the present Example) can optionally include a temporary spare memory section provided by the memory locations of the physical addresses of the circular sequence of physical addresses between the physical address pointed to by the head address pointer and the physical address pointed to by the tail address pointer, and wherein the next-in-sequence circular memory physical address pointed to by the head address pointer is at the head of the temporary spare memory section.
In Example 34, the subject matter of Examples 28-36 (excluding the present Example) can optionally include wherein the repetitive address indirection control means is further for receiving a plurality of read operations for reading data from a logical address of the memory, and for selectively relocating the read data to a next-in-sequence physical address of the circular sequence of physical addresses of the memory, and wherein the circular sequential address mapping means is further for mapping the logical address of the read operations to the next-in-sequence physical address of the read data relocation.
In Example 35, the subject matter of Examples 28-36 (excluding the present Example) can optionally include wherein each memory location includes a metadata field configured to store metadata, a user data payload field configured to store user data, and a single error correction code field configured to store an encoding of the entire memory location for error detection and correction.
In Example 36, the subject matter of Examples 28-36 (excluding the present Example) can optionally include a computing system comprising: said non-volatile memory, a processor configured to cause a data write into or data read from the memory, and any of: a display communicatively coupled to the processor, a network interface communicatively coupled to the processor, or a battery coupled to provide power to the system.
The described operations may be implemented as a method, apparatus or computer program product using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof. The described operations may be implemented as computer program code maintained in a “computer readable storage medium”, where a processor may read and execute the code from the computer storage readable medium. The computer readable storage medium includes at least one of electronic circuitry, storage materials, inorganic materials, organic materials, biological materials, a casing, a housing, a coating, and hardware. A computer readable storage medium may comprise, but is not limited to, a magnetic storage medium (e.g., hard disk drives, floppy disks, tape, etc.), optical storage (CD-ROMs, DVDs, optical disks, etc.), volatile and non-volatile memory devices (e.g., EEPROMs, ROMs, PROMs, RAMs, DRAMs, SRAMs, Flash Memory, firmware, programmable logic, etc.), Solid State Devices (SSD), etc. The code implementing the described operations may further be implemented in hardware logic implemented in a hardware device (e.g., an integrated circuit chip, Programmable Gate Array (PGA), Application Specific Integrated Circuit (ASIC), etc.). Still further, the code implementing the described operations may be implemented in “transmission signals”, where transmission signals may propagate through space or through a transmission media, such as an optical fiber, copper wire, etc. The transmission signals in which the code or logic is encoded may further comprise a wireless signal, satellite transmission, radio waves, infrared signals, Bluetooth, etc. The program code embedded on a computer readable storage medium may be transmitted as transmission signals from a transmitting station or computer to a receiving station or computer. A computer readable storage medium is not comprised solely of transmissions signals. Those skilled in the art will recognize that many modifications may be made to this configuration without departing from the scope of the present description, and that the article of manufacture may comprise suitable information bearing medium known in the art. Of course, those skilled in the art will recognize that many modifications may be made to this configuration without departing from the scope of the present description, and that the article of manufacture may comprise any tangible information bearing medium known in the art.
In certain applications, a device in accordance with the present description, may be embodied in a computer system including a video controller to render information to display on a monitor or other display coupled to the computer system, a device driver and a network controller, such as a computer system comprising a desktop, workstation, server, mainframe, laptop, handheld computer, etc. Alternatively, the device embodiments may be embodied in a computing device that does not include, for example, a video controller, such as a switch, router, etc., or does not include a network controller, for example.
The illustrated logic of figures may show certain events occurring in a certain order. In alternative embodiments, certain operations may be performed in a different order, modified or removed. Moreover, operations may be added to the above described logic and still conform to the described embodiments. Further, operations described herein may occur sequentially or certain operations may be processed in parallel. Yet further, operations may be performed by a single processing unit or by distributed processing units.
The foregoing description of various embodiments has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit to the precise form disclosed. Many modifications and variations are possible in light of the above teaching.