Embodiments of the invention generally relate to electronics, and, in particular, to non-volatile memory devices and/or associated controllers.
Non-volatile memory devices, such as NAND flash memory devices, can be integrated into managed memory devices. An embedded controller of the managed memory device and its associated firmware can translate read and/or programming requests from a host platform into a sequence of commands for the non-volatile memory device based on an established protocol. For instance, an embedded controller can translate requests from a host to commands for a NAND flash memory device in accordance with an Open NAND Flash Interface (ONFI) protocol. Volatile memory, such as static random access memory (SRAM), of controllers of managed memory devices is consuming increasingly more area and making such controllers more expensive.
Embedded multimedia card (eMMC) devices are examples of managed memory devices. Firmware of an eMMC device can translate block write requests into a sequence of read and/or programming commands for a NAND flash memory device. In some instances, the actual programming of the user data can take place by way a of NAND page-programming command. The current definitions of protocols and architectures of registers, such as Data Registers and Cache Registers, of a NAND flash memory device can limit performance of a managed memory device.
Accordingly, a need exists for improving the performance of managed memory devices. A need also exists for reducing the amount of volatile memory of controllers of managed memory devices.
These drawings and the associated description herein are provided to illustrate specific embodiments of the invention and are not intended to be limiting.
To avoid repetition of description, components having the same or similar function may be referenced by the same reference number.
Although particular embodiments are described herein, other embodiments, including embodiments that do not provide all of the benefits and features set forth herein, will be apparent to those of ordinary skill in the art.
As discussed above, current definitions of the protocols and/or architectures of registers, such as data registers and cache registers, of a NAND flash memory device can limit performance of a managed memory device. For example, specifying that data registers and cache registers are used in both read commands and write commands of the NAND flash memory can limit performance of the managed memory device. Performance can be limited by random programming operations, which can also be referred to as random write operations.
One way of addressing random programming performance in a managed memory device is to implement a volatile cache in a solid state disk (SSD) or an eMMC device. With a volatile cache, relatively fast programming operations can be performed. Such performance can improve input/output operations per second (IOPS) of a NAND flash memory and/or other non-volatile memories. At the same time, the volatile cache can significantly increase the size of a controller. The increased size of the controller can lead to higher costs.
Generally described, aspects of this disclosure relate to achieving a relatively good random programming performance for a non-volatile memory device while using a relatively limited amount of volatile memory on a controller associated with the non-volatile memory. A register architecture of a NAND flash memory device is described herein. Separate registers can be used for read operations and programming operations. As such, one register of the NAND flash memory device can be used for programming operations and another register of the NAND flash memory device can be concurrently used for read operations, according to certain embodiments. For example, cache registers can be used for read operations and data registers can be used for programming operations. Some register architectures described herein can enable swapping of data between registers. Accordingly, first data to be programmed to the memory array can be loaded into a register and interleaved read and/or interleaved programming operations can be executed while preserving the first data loaded into the register. For instance, first data to be programmed to the memory array can be swapped between a cache register and a data register to enable one or more other read and/or programming operations to be performed while preserving the first data. As another example, first data to be programmed to the memory array can be moved from a cache register to a virtual cache register, which is separate from the data and cache registers, while one or more read and/or programming operations are executed. Then the first data to be programmed to the memory array can be moved back to the cache register from the virtual cache register. Registers of NAND flash memory devices can implement a distributed virtual cache within a managed memory device, in certain embodiments. This can boost performance of random programming operations with little or no impact on performance of random read operations. In some embodiments, one or more data registers can implement the distributed virtual cache. Although some examples are described herein with reference to NAND flash memory devices for illustrative purposes, it will be understood that the principles and advantages described herein can be implemented in connection with any suitable non-volatile memory device. For instance, the principles and advantages described herein can be implemented in connection with phase change memory (PCM).
The controller 210 can be an embedded controller. The controller 210 can receive data from a host via a host bus HB. The controller 210 can receive requests to access the first NAND flash memory device 100a and/or the second NAND flash memory device 100b via the host bus HB. The controller 210 can also receive segments of user data via the host bus HB. Mass storage devices, such as solid-state drives and flash drives, can transfer data in units of data called “blocks.” The segments of user data received by the controller 210 are different than blocks that describe the minimum erasable unit of memory in a flash memory. User data can be sent in segments from the host to the controller 210. A page of a flash memory array 130a and/or 130b comprises a plurality of segments. As one non-limiting example, a segment of user data can be 4 kilobytes (KB) of data as illustrated in
The controller 210 can translate the requests into commands for the first NAND flash memory device 100a. Example commands generated by the controller 210 for a block write operation in a page program operation on one NAND flash memory device based on the requests received from the host are shown in
The commands received by the first NAND flash memory device 100a cause the segment of user data to be loaded in the cache register 110a and then cause the segment of user data to be programmed to the array 130a of non-volatile memory. Accordingly, the first NAND flash memory device 100a programs one segment of data to the array 130a at a time. A plurality of programming operations each associated with one or more segments of data can program a page of user data to the array 130a.
In NAND flash memory devices 100 operating in accordance with current ONFI standards, cache registers 110 and/or data registers 120 are used during commands associated with page-read, page-cache-read, page-program, and page-cache-programming operations. For example, a page-program operation (80h-10h) enables the host to load data to a cache register 110 and then program the contents of the cache register 110 to a specified block and page address in the array 130 of the flash memory. As another example, a page-cache-program operation (80h-15h) enables the host to load data to the cache register 110, move the received data from the cache register 110 to the data register 120, and then program the contents of the data register 120 to the specified block and page address in the array 130 of the NAND flash memory while the cache register 110 is available for one or more additional page-cache-program operations (80h-15h) and/or page-program operations (80h-10h). Thus, in some operations such as a page-cache-program operation (and a page-cache read operation) both the cache register 110 and the data register 120 are used and in some other operations such as the page-program (and a page-read) operation only one register of these registers is used.
In the case of random block programs from the host, the performance of the managed memory can be driven by the NAND page program time. However, the page size in the NAND memory array is typically greater than the size of segments of user data provided by the host to a controller 210 via a host bus HB. NAND pages size have been increasing over time. To improve random program performance, an embedded SRAM can be included in some embedded controllers and used as a buffer for programming operations. This SRAM can be used to build a page or page stripe aggregating a number of program requests associated with one or more segments of data. A page stripe can correspond to a page of data when there is one plane of non-volatile memory. When there are multiple planes of non-volatile memory, a page stripe can correspond to a full page in each of the multiple plans. For instance, a page stripe in each NAND flash memory device 320a-320d of
Random program performance of a managed memory device can be improved by the register architecture and/or the translation of host requests into commands for a non-volatile memory disclosed herein. Managed memory devices 300 of
In some embodiments, a register of a non-volatile memory can be used for read operations and a different register of the non-volatile memory can be used for write operations. For instance, cache registers of a NAND flash memory can be used in connection with read operations and data registers of the NAND flash memory can be used in connection with programming operations. Data registers of a plurality of NAND flash memory devices can together implement a distributed volatile cache (DVC) architecture in the managed memory device, according to some embodiments. The DVC can receive data from inputs of a NAND flash memory device without interfering with data read from an array of NAND flash memory cells stored in a register of the NAND flash memory device. The DVC can store segments of user data on NAND flash memory device(s) as they are being aggregated into a page of data to be programmed to NAND flash memory cells. For example, segments of user data can be stored by volatile memory of a plurality of different non-volatile memory devices when the user data is associated with different pages of data. The segments of user data can be accessed by a controller external to the non-volatile memory even when the user data is not stored in the array of non-volatile memory cells. The DVC can reduce the need for RAM or other volatile memory in the controller.
The controller 310 can provide the NAND flash memory device 320a with a new page program through data register NEW Cmd command in connection with aggregating programming commands CMD25 from the host into a single page program operation in the NAND flash memory device 320a. The page program through data register command NEW Cmd can enable the controller 310 to load data to the data register 120a, and program the data from the data register 120a to a specified address in the array 130a of the NAND flash memory device 320a without interfering with the data held in the cache register 110a. The NAND flash memory device 320a can have circuitry configured to provide user data to the data register 120a without loading the user data to the cache register 110a, unlike the NAND flash memory device 100 (
In the NAND flash memory device 320a, the cache register 110a can be connected to read circuitry associated with the array 130 and the data register 120a can be connected to write circuitry associated with the array 130. Accordingly, data to be programmed to the array 130a and data read from the array 130a can propagate on separate signal lines connected to the different registers. In the NAND flash memory device 320a, the cache register 110a can be connected to read circuitry associated with the array 130 and the data register 120a can be connected to write circuitry associated with the array 130.
For instance, first array signal lines can electrically connect the array 130a and the data register 120a and second array signal lines can electrically connect the array 130a and the cache register 110a. The data register 120a can receive user data received from the controller 310 at inputs of the NAND flash memory device 320a without the user data being provided to the cache register 110a. The NAND flash memory device 320a can include different electrical connections between the input/output contacts and the cache register 110a and the data register 120a.
The managed memory device 300 of
Using separate registers for read and programming operations can enable both of the separate registers to be concurrently used for a command associated with a read operation and a command associated with a programming operation. For example, as shown in
The managed memory device 300 can support a load while read mechanism in the NAND flash memory device 320a. While the managed memory device 300 is performing a read operation, data to be programmed to an array 130a of the NAND flash memory device 320a can be loaded into a register of the NAND flash memory device. For instance, the operations described with reference to
The controller 310 can track a position of data to be programmed to the array 130a as the data is being held by the cache register 110a or the data register 120a so that the controller 310 can properly move the data to complete an operation to program the data to the array 130a and/or return the data held in the cache register 110a or the data register 120a to the host when such data is not yet programmed to the array 130a. Additionally, the controller 310 can receive an indication of the data being programmed to the array 130a to track the position of the data. One or more registers and/or firmware of the controller 310 can store tracking information to track the position of data on the NAND flash memory device 320a.
In some cases, the host may send a request to read back data that have been recently provided to the NAND flash memory device 320a for programming. When the request is received from the host, the data associated with the request may still be held in a register of the NAND flash memory device 320a and may not yet be programmed to the array 130a. The controller 310 can support reading the data from the register of the NAND flash memory device 320a by translating requests received by the host into a command to read data from the register that holds the requested data instead.
In certain implementations, the cache register 110a can be used for both read operations of the NAND flash memory device 320a and for programming operations of the NAND flash memory device 320a. In such implementations, a dedicated command can be used to swap data between the cache register 110a and the data register 120a to implement features of a distributed virtual cache.
Before translating a request to retrieve data from the array 130a, the controller 310 can determine whether there is data held in the cache register 110a and not yet programmed to the array 130a. For instance, the controller 310 can check if the data requested corresponds to data held in cache register 110a based on the tracking information stored by the controller 310. When there is less than a page of data held by the cache register 110a to be programmed to the NAND flash memory array 130a, the controller can cause the NAND flash memory device 320a to move the data held by the cache register 110a to free the cache register 110a for a read operation in a manner that does not lose the data. The controller 310 can translate host requests into a swap command New Swap Cmd to move data from the cache register 110a to the data register 120a. This can maintain data in a distributed virtual cache implemented by data registers 120a and 120b of the NAND flash memory devices 320a and 320b. For instance, when user data is being aggregated in the cache register 110a and less than a page of user data is held by the cache register 110a, the user data can be moved to the data register 120a. Then the user data can be moved back to the cache register 110a after the retrieved data is provided to an output of the NAND flash memory device 320a.
The DVC 800 can boost random program performance of a managed memory device 300 without increasing the amount of volatile memory on the controller 310. Alternatively, the DVC 800 can achieve substantially the same random program performance with less volatile memory on the controller 310. Thus, the DVC 800 can improve random write performance in a managed memory device and/or reduce the cost of a controller in the managed memory device.
The DVC 800 can result in performance benefits of an increase in read/program IOPS of close to the number of segments of data that can be stored by the DVC 800. For example, when the DVC 800 is made up of four dies each having two data registers each configured to store a page of 16 KB of data, and data segments are sent to the dies in 4 KB segments, the DVC 800 can store 4×2×16 KB=128 KB of data. Since each segment is 4 KB of data in this example, close to a 32 times increase in random program IOPS can be achieved. In another example, when the DVC 800 is made up of one die having two data registers each configured to store a page of 16 KB of data, and data segments are sent to the dies in 4 KB segments, close to an 8 times increase in random program IOPS can be achieved.
The DVC 800 can be implemented in accordance with any suitable combination of features described herein. In certain implementations, the DVC 800 can be implemented in accordance with the embodiments of
The register architecture described herein can be compatible with garbage collection and wear leveling functionalities of a managed memory device 300. The firmware and/or hardware of the controller 310 can execute garbage collection and/or wear leveling. In certain embodiments, garbage collection and wear leveling can be kept on hold until the completion of a programming operation. Alternatively or additionally, the programming operation may be forced before completely filling a register, such as the data register, with a full page of data.
The register architecture for NAND flash memory devices in the current ONFI standard does not enable a page cache read operation to be performed while first data to be programmed to a memory array is being loaded into a register of a NAND flash memory device segment by segment without losing the first data. Yet page cache read operations can be used to boost sequential read performance to meet current and future managed memory standards. Additionally, the current ONFI standard does not enable a page program operation or a page cache program operation to be performed while first data to be programmed to a memory array is being loaded into a register of a NAND flash memory device segment by segment without losing the first data. However, page program and page cache program operations with different data can aid firmware (and/or hardware) of a managed memory in updating a logical to physical pointers table and/or during garbage collection activities, for example. Accordingly, a need exists for improving performance in NAND flash memory devices.
The embodiments illustrated in
The illustrated NAND flash memory device 400 includes a cache register 110, a data register 120, a virtual cache register 410, and an array 130. The cache register 110 and the data register 120 can execute the operations defined by the current ONFI standard. The virtual cache register 410 can hold the same amount of data as the cache register 110 and the same amount of data as the data register 120 in one embodiment. Accordingly, the virtual cache register 410 can hold a page of data. In some other embodiments, the virtual cache register 410 is full when it holds less than a page of data. For example, in some implementations, the virtual cache register 410 is sized to hold one segment less than a full page of data. The virtual cache register 410 can hold data previously loaded in the cache register 110 while the cache register 110 is used to execute other operations. Accordingly, the virtual cache register 410 can hold data previously loaded into the cache register 110 during any operation that uses both the cache register 110 and the data register 120 to access the array 130. For instance, the virtual cache register 410 can hold data previously stored in the cache register 110 during a page read operation, page cache read operation, a page cache program operation, or any combination thereof.
While the virtual cache register 410 holds first data, second data can be transferred between the cache register 110 and the array 130 via the data register 120. For instance, the second data from the array 130 can be loaded to the data register 120. Then the second data can be moved from the data register 120 to the cache register 110. The second data can be output from the cache register 110 to an output of the NAND flash memory device 400. As another example, the second data can be loaded into the cache register 110 and moved to the data register 120. Then the second data can be provided to the array 130 from the data register 120 and programmed to the array 130.
A controller 310 can generate a new Move to VCache command to move data from the cache register 110 to the virtual cache register 410. The controller 310 can also generate a new Move from VCache command to move data from the virtual cache register 410 to the cache register 110. Alternatively, the controller 310 can generate a new VCache Swap command to swap the contents of the cache register 110 with the virtual cache register 410.
With three separate registers to buffer NAND flash memory pages or portions thereof, data can be temporarily loaded into the cache register 110 one segment at a time and an interleaved page cache read operation can be performed.
Referring to
As shown in
In response to detecting that read and/or programming operations are completed, the controller 310 can generate a Move from VCache command and provide this command to the NAND flash memory device 400. Referring now to
A register architecture with three separate registers on a NAND flash memory device to buffer NAND flash memory pages can also temporarily load data to a cache register 110 one segment at a time and perform an interleaved page cache program operation to program different data to the array 130.
Referring to
As shown in
In response to detecting that cache page program operations are completed, the controller 310 can generate a Move from VCache command and provide this command to the NAND flash memory device 400. Referring now to
Any combination of features discussed with reference with any one of
In the embodiments described above, non-volatile memories and/or controllers be implemented in any electronic device with a need for non-volatile memory to store data. As such, the non-volatile memories and/or controllers and associated methods described herein can be incorporated in various electronic devices. Examples of the electronic devices can include, but are not limited to, consumer electronic products, electronic circuits, electronic circuit components, parts of the consumer electronic products, electronic test equipment, etc. Examples of the consumer electronic products include, but are not limited to, a mobile phone (for example, a smart phone), a telephone, a television, a computer monitor, a computer, a hand-held computer, a laptop computer, a tablet computer, a personal digital assistant (PDA), a microwave, a refrigerator, a stereo system, a cassette recorder or player, a DVD player, a CD player, a VCR, an MP3 player, a radio, a camcorder, an optical camera, a digital camera, a portable memory chip, a washer, a dryer, a washer/dryer, a copier, a facsimile machine, a scanner, a multi-function peripheral device, a wrist watch, a clock, etc. Further, the electronic device can include unfinished products. The disclosed techniques are not applicable to mental steps, and are not performed within the human mind or by a human writing on paper.
Unless the context clearly requires otherwise, throughout the description and the claims, the words “comprise,” “comprising,” “include,” “including,” and the like are to be construed in an inclusive sense, as opposed to an exclusive or exhaustive sense; that is to say, in the sense of “including, but not limited to.” The foregoing description and claims may refer to elements or features as being “connected” or “coupled” together. As used herein, unless expressly stated to the contrary, “connected” means that one element/feature is directly or indirectly connected to another element/feature, and not necessarily mechanically. Likewise, unless expressly stated to the contrary, “coupled” means that one element/feature is directly or indirectly coupled to another element/feature, and not necessarily mechanically. Thus, although the drawings illustrate various examples of arrangements of elements and components, additional intervening elements, devices, features, or components may be present in an actual embodiment. Additionally, the words “herein,” “above,” “below,” and words of similar import, when used in this application, shall refer to this application as a whole and not to any particular portions of this application. Where the context permits, words in the above Detailed Description using the singular or plural number may also include the plural or singular number respectively. The word “or” in reference to a list of two or more items, that word covers all of the following interpretations of the word: any of the items in the list, all of the items in the list, and any combination of the items in the list.
Any combination of the features of the methods described herein may be embodied in code stored on a non-transitory computer readable medium. When executed, the code stored on the non-transitory computer readable medium may cause some or all of any of the methods described herein to be performed. It will be understood that any of the methods discussed herein may include greater or fewer operations and that the operations may be performed in any order, as appropriate. For example, while processes or blocks are presented in a given order, alternative embodiments may perform routines having steps, or employ systems having blocks, in a different order, and some processes or blocks may be deleted, moved, added, subdivided, combined, and/or modified. Each of these processes or blocks may be implemented in a variety of different ways. Also, while processes or blocks are at times shown as being performed in series, these processes or blocks may instead be performed in parallel, or may be performed at different times. Moreover, it will be understood that the methods discussed herein are performed at least partly by physical circuitry. Accordingly, the claims are not intended to cover purely metal processes or abstract ideas.
Various embodiments have been described above. Although described with reference to these specific embodiments, the descriptions are intended to be illustrative and are not intended to be limiting. Various modifications and applications may occur to those skilled in the art.
Number | Date | Country | |
---|---|---|---|
Parent | 14041334 | Sep 2013 | US |
Child | 15883273 | US |