The present disclosure relates to technology for non-volatile storage.
Semiconductor memory is used in various electronic devices. For example, non-volatile semiconductor memory is used in cellular telephones, digital cameras, personal digital assistants, mobile computing devices, non-mobile computing devices and other devices. Electrical Erasable Programmable Read Only Memory (EEPROM) and flash memory are among the most popular non-volatile semiconductor memories.
Typically, the memory device has a memory controller and one or more memory packages. The memory package has one or more logical units. As one example, each logical unit can be a separate memory die. Each memory die contains non-volatile storage elements (e.g., memory cells), as well as read and write circuitry. The memory package also contains addressing circuitry in order to properly address the memory cells. As one example, the memory package includes NAND flash memory. However, memory packages other than NAND flash are known.
The memory controller controls operation of the various memory packages. For example, the memory controller sends read, write (or program), erase, and other commands to the memory package. For some memory devices, the memory cells are organized as blocks. The commands identify which block of memory cells are to be accessed, in one possible scheme. Note that for some commands the address in the command further specifies which memory cells within the block are to be accessed.
To achieve better parallelism, each logical unit in the memory package can be divided into multiple planes. A plane may be defined as a unit that is able to report its own operating status and can perform command execution independent of other planes in the logical unit. For example, each plane may have its own data registers, data buffers, etc., to enable independent command operation. As one example, a memory controller can send a multi-plane read command to the logical unit, which executes read commands in two (or more) planes in parallel. Other example multi-plane commands include, but are not limited to, multi-plane program and multi-plane erase.
Technology is described herein for reclaiming a memory device that has a defective plane. In some cases, tests performed on the memory device may reveal that one of the planes is defective. When one plane is defective, this means that some blocks on the die are not accessible. This may result in a multi-plane memory device only being usable as a single-plane memory device. However, operating the memory device as a single-plane memory device may present addressing challenges. Typically, the address mapping depends on the configuration of the memory device. Each block on a given die may have a unique block number, in one possible addressing scheme. The address mapping may define which block numbers are in which plane. For example, a memory device that was manufactured with two planes and 64 GB of memory per die will typically have a different address mapping than a memory device that was manufactured with one plane and 32 GB of memory per die. An implication of the foregoing is that the memory device with the defective plane may have an internal memory mapping that uses a two plane configuration.
The memory controller may be configured to properly address a memory device with multi-planes and the multi-plane address mapping. Likewise, the memory controller may be configured to properly address a memory device with a single plane and the single-plane address mapping. However, the memory controller may not be configured to properly address a memory device with a single functional plane but a multi-plane address mapping. For example, the memory controller might send a command that has a block address in the defective plane. Thus, the memory controller may not be configured to properly address the example memory device with the defective plane. Changes might be made to the memory controller to enable it to properly address a memory device with a single functional plane and a multi-plane address mapping. However, such changes could be costly, could require significant testing, etc.
Embodiments disclosed herein provide a solution that allows a memory device with a defective plane to operate as a device with fewer planes. In one embodiment, a memory device with a defective plane operates as a single plane device. The memory device with the defective plane may be used without any changes to the memory controller. Thus, the memory controller can send single plane commands to the memory device with the defective plane. In one embodiment, the memory package has logic that properly translates the single plane command so that it is compliant with the memory mapping of the multi-plane memory package with the defective plane. Thus, the command will access the correct block in the correct plane.
In one embodiment, a memory device with one defective plane out of four planes per die operates as a two plane device. In one embodiment, the memory controller can send two-plane commands to a four-plane memory device with a defective plane. In one embodiment, the memory package has logic that properly translates the two-plane command so that it is compliant with the memory mapping of the four-plane memory package with the defective plane. Thus, the command will access the correct block in the correct plane. This solution can be extended to devices with more than four planes per memory die.
The memory device is a NAND memory device, in one embodiment. Embodiments are applicable to 2D NAND and 3D NAND, but not necessarily limited thereto.
Memory structure 126 can be a two dimensional structure or a three dimensional structure of memory cells (e.g., NAND flash memory cells). The memory structure may comprise one or more array of memory cells including a 3D array. The memory structure may comprise a monolithic three dimensional memory structure in which multiple memory levels are formed above (and not in) a single substrate, such as a wafer, with no intervening substrates. The memory structure may comprise any type of non-volatile memory that is monolithically formed in one or more physical levels of arrays of memory cells having an active area disposed above a silicon substrate. The memory structure may be in a non-volatile memory device having circuitry associated with the operation of the memory cells, whether the associated circuitry is above or within the substrate.
The control circuitry 110 cooperates with the read/write circuits 128 to perform memory operations on the memory structure 126, and includes a state machine 112, an on-chip address decoder 114, and a power control module 116. The state machine 112 provides chip-level control of memory operations. Parameter storage 113 may be provided for storing operational parameters. In one embodiment, the parameters 113 includes those for operating a multi-plane memory device that has a defective plane in a single-plane mode.
The on-chip address decoder 114 provides an address interface between that used by the host or a memory controller to the hardware address used by the decoders 124 and 132. In one embodiment, the on-chip address decoder 114 translates the address in a command from the memory controller 122 such that it is compatible for the memory mapping of the memory array 126.
The power control module 116 controls the power and voltages supplied to the word lines and bit lines during memory operations. It can include drivers for word line layers (WLLs) in a 3D configuration, SGS and SGD transistors and source lines. The sense blocks can include bit line drivers, in one approach. An SGS transistor is a select gate transistor at a source end of a NAND string, and an SGD transistor is a select gate transistor at a drain end of a NAND string.
In various embodiments, one or more of control circuitry 110, state machine 112, decoders 114/124/132, power control module 116, sense blocks SB1, SB2, . . . , SBp, read/write circuits 128, and controller 122 can be thought of as at least one or more control circuits which are configured to perform the functions described herein.
The off-chip controller 122 may comprise a processor 122c and storage devices (memory) such as ROM 122a and RAM 122b. The storage devices comprises code such as a set of instructions, and the processor 122c is operable to execute the set of instructions to send read, write, erase, and other commands to the memory die 108. Alternatively or additionally, processor 122c can access code from a storage device 126a of the memory structure, such as a reserved area of memory cells in one or more word lines.
When the memory structure 126 is a NAND flash memory, the various components on the die 108 may be referred to as a NAND device. Thus, in this example, the memory controller 122 sends commands to the NAND device over lines 118.
Other types of non-volatile memory in addition to NAND flash memory can also be used.
Semiconductor memory devices include volatile memory devices, such as dynamic random access memory (“DRAM”) or static random access memory (“SRAM”) devices, non-volatile memory devices, such as resistive random access memory (“ReRAM”), electrically erasable programmable read only memory (“EEPROM”), flash memory (which can also be considered a subset of EEPROM), ferroelectric random access memory (“FRAM”), and magnetoresistive random access memory (“MRAM”), and other semiconductor elements capable of storing information. Each type of memory device may have different configurations. For example, flash memory devices may be configured in a NAND or a NOR configuration.
The memory devices can be formed from passive and/or active elements, in any combinations. By way of non-limiting example, passive semiconductor memory elements include ReRAM device elements, which in some embodiments include a resistivity switching storage element, such as an anti-fuse or phase change material, and optionally a steering element, such as a diode or transistor. Further by way of non-limiting example, active semiconductor memory elements include EEPROM and flash memory device elements, which in some embodiments include elements containing a charge storage region, such as a floating gate, conductive nanoparticles, or a charge storage dielectric material.
Multiple memory elements may be configured so that they are connected in series or so that each element is individually accessible. By way of non-limiting example, flash memory devices in a NAND configuration (NAND flash memory) typically contain memory elements connected in series. A NAND string is an example of a set of series-connected transistors comprising memory cells and select gate transistors.
A NAND flash memory array may be configured so that the array is composed of multiple strings of memory in which a string is composed of multiple memory elements sharing a single bit line and accessed as a group. Alternatively, memory elements may be configured so that each element is individually accessible, e.g., a NOR memory array. NAND and NOR memory configurations are exemplary, and memory elements may be otherwise configured.
The semiconductor memory elements located within and/or over a substrate may be arranged in two or three dimensions, such as a two dimensional memory structure or a three dimensional memory structure.
In a two dimensional memory structure, the semiconductor memory elements are arranged in a single plane or a single memory device level. Typically, in a two dimensional memory structure, memory elements are arranged in a plane (e.g., in an x-y direction plane) which extends substantially parallel to a major surface of a substrate that supports the memory elements. The substrate may be a wafer over or in which the layer of the memory elements are formed or it may be a carrier substrate which is attached to the memory elements after they are formed. As a non-limiting example, the substrate may include a semiconductor such as silicon.
The memory elements may be arranged in the single memory device level in an ordered array, such as in a plurality of rows and/or columns. However, the memory elements may be arrayed in non-regular or non-orthogonal configurations. The memory elements may each have two or more electrodes or contact lines, such as bit lines and word lines.
A three dimensional memory array is arranged so that memory elements occupy multiple planes or multiple memory device levels, thereby forming a structure in three dimensions (i.e., in the x, y and z directions, where the z direction is substantially perpendicular and the x and y directions are substantially parallel to the major surface of the substrate).
As a non-limiting example, a three dimensional memory structure may be vertically arranged as a stack of multiple two dimensional memory device levels. As another non-limiting example, a three dimensional memory array may be arranged as multiple vertical columns (e.g., columns extending substantially perpendicular to the major surface of the substrate, i.e., in the y direction) with each column having multiple memory elements. The columns may be arranged in a two dimensional configuration, e.g., in an x-y plane, resulting in a three dimensional arrangement of memory elements with elements on multiple vertically stacked memory planes. Other configurations of memory elements in three dimensions can also constitute a three dimensional memory array.
By way of non-limiting example, in a three dimensional NAND memory array, the memory elements may be coupled together to form a NAND string within a single horizontal (e.g., x-y) memory device level. Alternatively, the memory elements may be coupled together to form a vertical NAND string that traverses across multiple horizontal memory device levels. Thus, in one embodiment, the non-volatile storage elements are arranged as a vertically oriented NAND strings. Other three dimensional configurations can be envisioned wherein some NAND strings contain memory elements in a single memory level while other strings contain memory elements which span through multiple memory levels. Three dimensional memory arrays may also be designed in a NOR configuration and in a ReRAM configuration.
Typically, in a monolithic three dimensional memory array, one or more memory device levels are formed above a single substrate. Optionally, the monolithic three dimensional memory array may also have one or more memory layers at least partially within the single substrate. As a non-limiting example, the substrate may include a semiconductor such as silicon. In a monolithic three dimensional array, the layers constituting each memory device level of the array are typically formed on the layers of the underlying memory device levels of the array. However, layers of adjacent memory device levels of a monolithic three dimensional memory array may be shared or have intervening layers between memory device levels.
Then again, two dimensional arrays may be formed separately and then packaged together to form a non-monolithic memory device having multiple layers of memory. For example, non-monolithic stacked memories can be constructed by forming memory levels on separate substrates and then stacking the memory levels atop each other. The substrates may be thinned or removed from the memory device levels before stacking, but as the memory device levels are initially formed over separate substrates, the resulting memory arrays are not monolithic three dimensional memory arrays. Further, multiple two dimensional memory arrays or three dimensional memory arrays (monolithic or non-monolithic) may be formed on separate chips and then packaged together to form a stacked-chip memory device.
Associated circuitry is typically required for operation of the memory elements and for communication with the memory elements. As non-limiting examples, memory devices may have circuitry used for controlling and driving memory elements to accomplish functions such as programming and reading. This associated circuitry may be on the same substrate as the memory elements and/or on a separate substrate. For example, a controller for memory read-write operations may be located on a separate controller chip and/or on the same substrate as the memory elements.
One of skill in the art will recognize that this technology is not limited to the two dimensional and three dimensional exemplary structures described but covers all relevant memory structures within the spirit and scope of the technology as described herein and as understood by one of skill in the art.
Some embodiments of a non-volatile storage system will include one memory die 108 connected to one Controller 122. The memory die 108 may have multiple planes. However, other embodiments may include multiple memory die 108 in communication with one or more Controllers. Each of the memory die 108 may have multiple planes. In one example, depicted in
Each memory package 142 may have a set of pins (or alternatively pads) that are configured for input and/or output. The pins (or pads) form part of the interface (
Controller 122 receives a request from the host to program host data (data received from the host) into the memory system. In some embodiments, Controller 122 will arrange the host data to be programmed into units of data. For example, Controller 122 can arrange the host data into pages, word line units, blocks, super blocks, or other units. Super blocks are units of data that are programmed and read together, but span across multiple memory die 108. However, other arrangements can also be used.
In one embodiment, when one of the planes in a die is defective, the memory package 142 operates as a single plane device. In one embodiment of the example in
In some cases, a memory die 108 could have more than two planes. For example, a memory die 108 could have four planes. In that case, if one of the four planes is defective, the memory die 108 could be operated as a one plane device or as a two plane device, in accordance with embodiments. In general, a memory die 108 with a defective plane may be operated such that the operational die are some power of two, in accordance with embodiments.
Each plane 202 is able to perform command execution independent of the other plane 202. For example, each plane 202 may contain its own data registers (e.g., page register, cache register, data register, etc.) and other circuitry to allow such parallel execution. The data registers and other circuitry are not depicted in
The even/odd block addressing scheme allows for efficient read and write operations. For example, the memory controller can send a multi-plane write command to write Block 0 and Block 1 in parallel. Thus, two blocks that are sequentially addressed may be written in parallel. For example, while Plane 0 is writing Block 0, Plane 1 may be writing Block 1. As another example, while Plane 1 is writing Block 3, Plane 0 may be writing Block 4. However, it is not required that the two blocks in the multi-plane command have an address that differs by one. For example, while Plane 0 is writing Block 0, Plane 1 may be writing Block 7. As another example, while Plane 0 is reading one its Blocks, Plane 1 may be reading one its Blocks. As still another example, while Plane 0 is erasing one its Blocks, Plane 1 may be erasing one its Blocks.
Assume for the sake of discussion that Plane 1 is defective in the device in
In the examples of
Note that the single plane memory die 108 of
Next, note that conventionally all of the die 108 of a memory package 142 might be manufactured with a single plane, or alternatively, all of the die 108 of a memory package 142 might be manufactured with two planes (or all die having four planes, etc.). For example, referring to
Referring now to the example single plane memory mapping in
Referring now to the example multi-plane memory mapping in
There are some similarities between the two examples, which may reflect the underlying architecture of the memory packages 142. For example, both examples uses the same number of bits for the column address, the same number of bits for the word lines address, the same number of bits for the block address, and the same number of bits for the chip address. These similarities may reflect similar factors, such as the same number of blocks per plane, same number of word lines per block, etc.
However, there are some key differences between the two example memory mappings. The example multi-plane memory mapping in
Note that
The examples of
As mentioned already, sometimes during testing of a multi-plane memory device, it is determined that one plane is defective. Moreover, the defect to the plane may be so severe that it is not suitable for storing data. Since the memory device (in this example) was designed to have two-planes, this has implications for the memory mapping scheme. The memory mapping does not change simply because one plane is defective, in accordance with embodiments. In other words, the memory mapping does not change from the two plane mapping to the one-plane memory mapping when one plane of a multiple-plane device is defective, in accordance with embodiments. As another example, the memory mapping does not change from a four-plane mapping to a two-plane memory mapping when one plane of a multiple-plane device is defective, in accordance with embodiments.
One embodiment includes circuitry that translates an address from a single plane command that may be received from a memory controller 122 such that it is suitable for a multi-plane address mapping.
The address translation unit 400 may be enabled or disabled by enable/disable plane feature logic 402. For example, if it is determined when the memory device was manufactured that there is a plane that is defective, then information may be stored in the memory device indicating that the plane feature should be enabled during operation.
The plane feature is enabled by providing an enable/disable signal to the address translation unit 400, in one embodiment. Thus, logic 402 may access storage 404 to determine whether the plane feature should be enabled. The logic 402 may provide, for example, a value of “0” or “1” to enable/disable the plane feature.
The address translation unit 400 inputs 11 block address bits (e.g., A25-A35) in this example. Similarly, the address translation unit 400 outputs 11 block address bits (e.g., A26-A36). In other embodiments, there are more or fewer than 11 block address bits. The address translation unit 400 also outputs a plane address bit (output A25). In other embodiments, there could be two or more plane address bits. The value for the plane address bit (output A25) reflects which plane is selected, in one embodiment. The value for the plane address bit may be generated a variety of ways. As one example, plane 0 could be represented by logic low and plane 1 by logic high. In other words, plane 0 could be represented by a low voltage and plane 1 by high voltage. The memory device may have readily available voltage values that are used for other purposes that can be used. For example, a voltage (VDD) that is normally used to supply a drain side of transistors could be used for the logic high and a voltage (VSS) that is normally used to supply a source side of transistors could be used for the logic low. Many other possibilities exist.
The address translation unit 400 receives address bits from the single plane command, in this example. In this example, these are the block address bits A25-A36 from the example of
The address translation unit 400 shifts each of bits A25-A36 one bit higher, in this example. For example, A25 is shifted to A26, A26 is shifted to A27, etc. The output is labeled as “block address (multi plane)” in
Also, bit A24 is passed through address translation unit without modification in this example. Referring to
The row decoders may be configured to select the proper plane and block in accordance with the address received by the row decoders. As noted above,
Note that when the plane feature is not enabled, there is not any shifting of the bits of the address. As noted, the plane enable feature may be enabled when there is a defective plane. When no plane is defective, the memory package 142 may be operated as a multi-plane device. Thus, the memory controller may send a multi-plane command. For example, the memory controller sends multi-plane commands that are compliant with the address mapping depicted in
When the plane feature is not enabled, then the chip address logic 420 need not perform any bit shifting. This is depicted in
In one embodiment, the memory package 142 informs the memory controller 122 whether it is operating as a single plane or multi-plane device. This may be performed in response to a request for information from the memory controller 122.
In step 504, configuration information is accessed in order to respond to the command from the memory controller. Step 504 may be performed by logic on the memory package 142. The configuration information may be stored anywhere on the memory package. For example, it might be stored in storage device 126a, parameters 113, or elsewhere. The configuration information may indicate whether any of the planes in the memory package are defective. The configuration information may indicate whether this is a single plane device, two plane device, four plane device, etc. The configuration information could specify what type of device this is. For example, a manufacturer might have several unique device IDs that correspond to devices having certain configurations. As a specific example, a device with a certain ID might be a single plane device with 32 GB of memory; a device with another ID might be a two plane device with 64 GB of memory.
Based on the stored configuration information, either step 508 or step 510 is performed to indicate whether the memory package 142 is a single plane device or multi-plane device. Note that in step 510, the response could be that the device is operating as a two-plane device, four-plane device, etc. In one embodiment, the memory package 142 sends a response to a Read ID command that is compliant with a version of the ONFI Specification. This response may specify a device ID. The memory controller 122 is able to determine whether this is a single plane device or a multi-plane device, based on the device ID, in one embodiment. However, the response to the controller need not be compliant with any version of the ONFI specification.
Note that a variation of
Step 520 includes receiving a command from a memory controller to access non-volatile storage elements in a memory package. The command comprises a block address. This might be a single plane command or a multi-plane command. The single plane command need not specify a plane. The multi-plane command may specify one plane out of two possible planes, four possible planes, eight possible planes, etc.
Step 522 includes selecting one of the planes on the memory package based on information stored in the memory package. Thus, the selection may be based on information not in the command. This may be based on information stored on the memory package that indicates which plane(s) are defective, which are operational, etc. In one embodiment, step 522 includes adding at least one bit of information to the received address in order to specify the plane.
Step 524 includes translating the block address from the command to a memory mapping having a greater number of planes than can be specified in the command. For example, the command may be a single plane command that does not specify a plane, in which case the memory mapping may be a two-plane memory mapping. For example, the command may be a multi-plane command that has one bit of information to specify one out of two planes, in which case the memory mapping may be a four-plane memory mapping. For example, the command may be a multi-plane command that has two bits of information to specify one out of four planes, in which case the memory mapping may be an eight-plane memory mapping. Note that in each example, an extra bit of information is needed to specify the plane than is provided in the command. This extra bit of information may be stored on the memory package in the form of information that indicates which plane is defective. In one embodiment, step 524 includes shifting bits in a block address to perform the address translation.
In step 526, the non-volatile storage elements in the selected plane are accessed based on the translated block address. For example, non-volatile storage elements are read, written, or erased. Note that step 526 includes executing in different planes in parallel. For example, two or or four planes in the die might be read in parallel.
In step 602, a command is received from the memory controller 122. In one embodiment, the command is received over pins that are designated as I/O pins. For example, eight pins on the memory package 142 (containing one or more die 108) may be designated as I/O pins. The command may be divided into a number of cycles. This could be divided into one or more cycles for specifying the command and a number of cycles for specifying the address.
Note that if the command is a multi-plane command, then what is sent in the address cycles depicted in
In step 604, the memory package 142 determines whether this is a single plane or multi-plane command. If this is for a single plane command, then the memory package 142 determines whether there is a defective plane in the memory package 142, in step 606. For example, the memory package 142 determines whether it has multiple planes per die but is operating as a single plane device. If so, then the memory package 142 performs steps 608-620. In one embodiment, enable/disable plane feature logic 402 accesses storage 404 to make this determination. However, other logic could access the storage 404 to make this determination.
In step 608, the memory package 142 enables the plane feature. In one embodiment, enable/disable plane feature logic 402 provides enable/disable signal to address translation unit 400 to enable the plane feature.
In step 610, the die (or LUN) that is specified in the single plane command is selected. Referring to
In step 612, the plane that is not defective is selected. Stated another way, the operational plane is selected. In one embodiment, disable plane 0/plane 1 logic 406 provides plane signal to address translation unit 400 to select the plane that is not defective. This may also be referred to as disabling the plane that is defective (or non-functional). The selection may be based on information that is not in the commands. This step may be performed without regard for any information in the single plane command. Instead this step may be based entirely on information stored on the memory package. For example, logic 406 may access stored information that indicates which plane is operational, which plane is not operational, etc.
In step 614, the address in the single plane command is provided to the address translation unit 400. As one example, address bits A24-A35 from the single plane command are provided to address translation unit 400. Referring to
In step 616, the address in the single plane command is translated to a multi-plane mapping. In one embodiment, address translation unit 400 performs this translation. An example was described with respect to
In step 618, the translated address is provided to address decoders. In the embodiment depicted in
In step 620, the command is executed in the selected plane. For example, a single plane read command is performed in the selected plane. Alternatively, a single plane write, or a single plane erase is performed in the selected plane. The single plane command is not limited to these examples.
On the other hand, if in step 606 the memory package 142 determines that it is not operating as a single plane device when it receives a single plane command, then alternative steps may be taken. In one embodiment, when the memory package operates as a multi-plane device it does not expect to receive a single plane command. Hence, the memory package may send a response to the memory controller that the single plane command cannot be executed. However, this is just one option.
Next, the case in which the memory controller 122 sends a multi-plane command will be discussed. Thus, if the memory package 142 determines that the command is a multi-plane command, control passes to step 622. When a multi-plane command is received in this embodiment, the memory package 142 does not expect for there to be a defective plane. Stated another way, when a multi-plane command is received in this embodiment, the memory package 142 expects that it is operating as a multi-plane device and not as a single-plane device. In step 622, the memory package 142 determines whether there is a defective plane. An alternative way of expressing this step in this embodiment is that the memory package 142 determines whether it is operating as a single plane or multi-plane device. If it determines that there is a defective plane, then the process ends. One option here is to send a response to the memory controller that indicates that a multi-plane command is not expected (due to the memory package 142 operating as a single plane device). However, this is just one option.
Assuming that the memory package 142 does not have a defective plane, then control passes to step 624. Since this is a multi-plane command, it will be assumed that the memory package 124 received an address for plane 0 and another address for plane 1. Referring to
In step 624, the plane feature is disabled. In one embodiment, the enable/disable plane feature logic 402 provides a signal to the address translation unit 400 to instruct it to disable the plane feature. Note that the address translation unit 400 may ignore the plane signal (which may be used to specify the defective plane) when the plane feature is disabled. When the plane feature is disabled, the address translation unit 400 simply passes the addresses through, without any shifting.
The die (or LUN) may also be specified in the multi-plane command. It will be assumed that plane 0 and plane 1 are on the same die. In step 626, the memory package 142 selects the die specified in the multi-plane command. Referring to the example circuit in
In step 628, the address for plane 0 is provided to address circuits for plane 0 in the selected die.
In step 630, the address for plane 1 is provided to address circuits for plane 1 in the selected die.
In step 632, the multi-plane command is executed in parallel in plane 0 and plane 1 in the selected die.
Note that when mapping from two planes to one plane, the total number of blocks may be cut in half. However, when the controller 122 is informed that the memory package is being operated as a single plane device, the controller 122 may be informed of the total number or blocks and/or total amount of memory per die. Hence, the controller 122 will know that it should not attempt to address blocks such as Block n or Block n+2.
The following mapping example depicts how the shifting of the address by the address translation unit 400 may achieve the mapping depicted in
The three received bits (A26-A24) would map to the blocks depicted in
The following mapping example depicts how the shifting of the address by the address translation unit 400 may achieve the mapping depicted in
As with the previous example, the three received bits (A26-A24) would map to the blocks depicted in
Concepts disclosed herein can be expanded beyond a single plane to two-plane mapping. In one embodiment, the memory package has a four plane mapping. That is, there are four planes per die. However, one (or two) of the planes may be defective. For example, the four planes may be numbered: Plane 0, Plane 1, Plane 2, Plane 3. For the sake of example, either Plane 2 or Plane 3 is defective. In this case, the device could be operated as a two plane device, with Plane 0 and Plane 1 operational. As another example, either Plane 0 or Plane 1 might be defective. In this case, the device could be operated as a two plane device, with Plane 2 and Plane 3 operational.
Thus, in the foregoing example, the memory package may send a command to the memory controller that indicates it is operating as a two-plane device. The memory controller may send two-plane commands to the memory package. From the perspective of the memory controller, the memory package may appear to be a two plane device. The memory package has an address translation unit in this embodiment that performs the address translation from the two plane address to the four plane address.
Note that in the foregoing example, the two-plane commands to the memory package may have a single bit to specify the plane. The memory package may add one bit of information to this for final plane selection. For example, the two-plane commands may specify either Plane 0 or Plane 1. The memory package may add one bit of information to specify one of Plane 0, Plane 1, Plane 2, or Plane 3. For example, if plane 2 is defective, then the memory package may add one bit to select either Plane 0 or Plane 1. If plane 1 is defective, then the memory package may add one bit to select either Plane 2 or Plane 3.
Referring back to
Thus, the memory package selects the plane based on information that is not in the command. This information may be the information that is stored on the memory package that indicates which plane(s) is defective or, alternatively, which plane(s) are to be used in operation. Note that in this example, a functional plane might not be used. For example, if plane 2 is defective, both planes 2 and 3 might not be used in operation. Thus, both planes 2 and 3 can be disabled.
The teachings herein can be applied to memory die with even more than four planes. For example, an eight plane memory die with a defective plane might be operated as a four-plane device. Of course, the eight plane memory die with a defective plane might be operated as a two-plane device, or even a single-plane device. Likewise, a four-plane memory die with a defective plane might be operated as a single-plane device.
One embodiment disclosed herein includes a non-volatile storage device comprising a memory die having a plurality of planes including a first plane and a second plane, and an address translation unit coupled to the plurality of planes. Each of the planes comprises blocks of non-volatile storage elements. The memory die has an interface that is configured to receive commands to access the non-volatile storage elements. The address translation unit is configured to disable one of the first plane or the second plane while selecting the other of the first plane or the second plane based on information stored on the non-volatile storage device that indicates which of the plurality of planes is defective. The address translation unit is configured to translate block addresses from associated commands that are received on the interface to an appropriate block of the selected one of the first plane or the second plane. The memory die is configured to access non-volatile storage elements in the selected plane based on the translated block addresses.
One embodiment disclosed herein includes a method comprising the following. A command is received from a memory controller to access non-volatile storage elements in a memory package. The memory package comprises a memory die having a plurality of planes. The command comprises a block address. One of the plurality of planes is selected based on information stored on the non-volatile storage device that indicates which of the plurality of planes is defective. The block address is translated from the command to a memory mapping having a greater number of planes than can be specified in the command. The non-volatile storage elements in the selected plane is accessed based on the translated block address.
One embodiment disclosed herein includes a method comprising receiving single-plane commands from a memory controller at an interface of a memory device. The memory device comprises a memory die having a first plane and a second plane. The single-plane commands each comprise a block address. The method further comprises disabling one of the first plane or the second plane, while selecting the other of the first plane or the second plane. The method further comprises translating block addresses from associated single plane commands that are received on the interface to an appropriate block of the selected one of the first plane or the second plane. The method further comprises providing the translated block addresses to an address decoder associated with the selected plane.
One embodiment disclosed herein includes a non-volatile storage device comprising a three-dimensional array of non-volatile storage elements, a memory controller, an interface that is configured to receive commands from the memory controller, and an address translation unit coupled to the three-dimensional array. The three-dimensional array comprises a first plane and a second plane of blocks of the non-volatile storage elements. The three-dimensional array comprises address decoders. The address translation unit is configured to select the first plane responsive to a determination that the second plane is not operational, translate an address from a single plane command that is received on the interface to a multi-plane mapping that comprises a plane address, including setting the plane address to the first plane, and provide the translated address to the address decoders of the three-dimensional array.
Corresponding methods, systems and computer- or processor-readable storage devices which have executable code for performing the methods provided herein may also be provided.
The foregoing detailed description of the invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. The described embodiments were chosen in order to best explain the principles of the invention and its practical application, to thereby enable others skilled in the art to best utilize the invention in various embodiments and with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the claims appended hereto.