Patent Description:
Flash memory is a low-cost, high-density, non-volatile solid-state storage medium that can be electrically erased and reprogrammed. With the increase of the number of NAND flash planes and the improvement of read-write performance, peak power management is becoming more and more important in solid-state storage products, especially in UFS (Universal flash storage) chips. Existing methods of peak power control based on limiting the number of accessible NAND memory devices and limiting the total number of parallel operations (see, e.g., <CIT> and <CIT>) are inflexible and do not fully utilize the available margins provided by power sources. Therefore, it is desirable to improve the existing power management methods to increase memory performance.

In one aspect, a memory system may include at least one memory device and a memory controller coupled to the at least one memory device. Each of the at least one memory device may include an array of memory cells and a control logic coupled to the array of memory cells. The memory controller and the control logic of the at least one memory device may be powered by a first power source having a first predetermined power consumption threshold. The array of memory cells of the at least one memory device may be powered by a second power source having a second predetermined power consumption threshold. At least a first queue and a second queue are configured to separate memory operations that cause power consumption from the first (Vccq) and second (Vcc) sources, respectively, if executed. The memory controller may be configured to maintain a first queue of memory operations, wherein execution of the memory operations in the first queue causes power consumption from the first power source; maintain a second queue of memory operations, wherein execution of the memory operations in the second queue causes power consumption from the second power source; separately determine whether execution of subsequent memory operations in the first and second queues, respectively, would cause the corresponding first and second power sources to be overloaded; execute, based on the determination, the subsequent memory operation in the first or second queue that would not cause the corresponding first or second power source to be overloaded; and delay, based on the determination, the subsequent memory operation in the first or second queue that would cause the corresponding first or second power source to be overloaded.

In another aspect, a method for managing power of a memory system is provided. The memory system may include at least one memory device, and a memory controller coupled to the at least one memory device. Each of the at least one memory device may include an array of memory cells and a control logic coupled to the array of memory cells. The memory controller and the control logic of the at least one memory device may be powered by a first power source having a first predetermined power consumption threshold. The array of memory cells of the at least one memory device may be powered by a second power source having a second predetermined power consumption threshold. The memory operations that cause power consumption from the first and second power sources are separated, respectively, if executed into at least a first queue and a second queue. The method may include maintaining a first queue of memory operations, wherein execution of the memory operations in the first queue causes power consumption from the first power source. The method may also include maintaining a second queue of memory operations, wherein execution of the memory operations in the second queue causes power consumption from the second power source. The method may further include separately determining whether execution of subsequent memory operations in the first and second queues, respectively, would cause the corresponding first and second power sources to be overloaded. The method may further include executing, based on the determination, the subsequent memory operation in the first or second queue that would not cause the corresponding first or second power source to be overloaded. The method may further include delaying, based on the determination, the subsequent memory operation in the first or second queue that would cause the corresponding first or second power source to be overloaded.

In still another aspect, but not part of the invention, a non-transitory computer-readable medium is provided. The non-transitory computer-readable medium stores instructions that, when executed by a memory controller of a memory system, cause the memory controller to perform a method of managing power of the memory system. The memory system may include at least one memory device, and a memory controller coupled to the at least one memory device. Each of the at least one memory device may include an array of memory cells and a control logic coupled to the array of memory cells. The memory controller and the control logic of the at least one memory device may be powered by a first power source having a first predetermined power consumption threshold. The array of memory cells of the at least one memory device may be powered by a second power source having a second predetermined power consumption threshold. The method may include maintaining a first queue of memory operations, wherein execution of the memory operations in the first queue causes power consumption from the first power source. The method may also include maintaining a second queue of memory operations, wherein execution of the memory operations in the second queue causes power consumption from the second power source. The method may further include separately determining whether execution of subsequent memory operations in the first and second queues, respectively, would cause the corresponding first and second power sources to be overloaded. The method may further include executing, based on the determination, the subsequent memory operation in the first or second queue that would not cause the corresponding first or second power source to be overloaded. The method may further include delaying, based on the determination, the subsequent memory operation in the first or second queue that would cause the corresponding first or second power source to be overloaded.

The accompanying drawings, which are incorporated herein and form a part of the specification, illustrate aspects of the present disclosure and, together with the description, further serve to explain the principles of the present disclosure and to enable a person skilled in the pertinent art to make and use the present disclosure.

The present disclosure will be described with reference to the accompanying drawings.

Although specific configurations and arrangements are discussed, it should be understood that this is done for illustrative purposes only. As such, other configurations and arrangements can be used without departing from the scope of the present disclosure. Also, the present disclosure can also be employed in a variety of other applications. Functional and structural features as described in the present disclosures can be combined, adjusted, and modified with one another and in ways not specifically depicted in the drawings, such that these combinations, adjustments, and modifications are within the scope of the present disclosure.

With the increase of the number of NAND flash planes and the improvement of read-write performance, peak power management is becoming more and more important in solid-state storage products. The core of peak power control is to limit the number of parallel memory operations.

A common solution is to limit the number of accessible memory devices to the upper layer. For example, managing <NUM> dies as <NUM> dies, so as to ensure that the number of parallel operations does not exceed the limit. This method, however, is inflexible because it involves the upper layer flash memory management algorithm, and it is difficult to dynamically adjust the maximum number of parallel-operating Dies. In addition, the performance is affected. For example, due to the limitation of the maximum number of parallel-operating dies for write operation, read operation performance will also be limited.

Another solution is to record the number of parallel operations based on the type of memory operation. When the number of parallel operations exceeds a threshold, no more operations will be triggered. However, this method also lacks flexibility. For example, it is difficult to cover all scenarios, e.g., when multiple Dies have different operations at the same time. Moreover, if each operation is recorded as a running Die, it may not provide full performance within the peak power range. Further, the delayed memory operations may lead to failure to utilize cache operations of the memory device.

The present application provides an improved power management solution to address one or more of the above-mentioned issues.

<FIG> illustrates a block diagram of an exemplary system <NUM> having a memory system <NUM>, according to some aspects of the present disclosure. System <NUM> can be a mobile phone, a desktop computer, a laptop computer, a tablet, a vehicle computer, a gaming console, a printer, a positioning device, a wearable electronic device, a smart sensor, a virtual reality (VR) device, an argument reality (AR) device, or any other suitable electronic devices or systems having storage therein. As shown in <FIG>, system <NUM> can include a host <NUM> and memory system <NUM> having one or more memory devices <NUM> and a memory controller <NUM>. Host <NUM> can be a processor of an electronic device, such as a central processing unit (CPU), or a system-on-chip (SoC), such as an application processor (AP). Host <NUM> can be configured to send or receive data to or from memory system <NUM>.

Memory device <NUM> can be any memory device disclosed in the present disclosure. For example, memory device <NUM> may be a NAND Flash memory device or a NOR Flash memory device. In the description below, NAND-based memory device <NUM> is used as an example to disclose an improved power management solution. It is noted that the disclosed power management solution can also be applied to other types of memory devices.

Memory controller <NUM> is coupled to memory device <NUM> and host <NUM> and is configured to control memory device <NUM>, according to some implementations. Memory controller <NUM> can manage the data stored in memory device <NUM> and communicate with host <NUM>. In some implementations, memory controller <NUM> is designed for operating in a low duty-cycle environment like secure digital (SD) cards, compact Flash (CF) cards, universal serial bus (USB) Flash drives, or other media for use in electronic devices, such as personal computers, digital cameras, mobile phones, etc. In some implementations, memory controller <NUM> is designed for operating in a high duty-cycle environment SSDs or embedded multi-media-cards (eMMCs) used as data storage for mobile devices, such as smartphones, tablets, laptop computers, etc., and enterprise storage arrays. Memory controller <NUM> can be configured to control operations of memory device <NUM>, such as read, erase, and program operations. Memory controller <NUM> can also be configured to manage various functions with respect to the data stored or to be stored in memory device <NUM> including, but not limited to bad-block management, garbage collection, logical-to-physical address conversion, wear leveling, etc. In some implementations, memory controller <NUM> is further configured to process error checking and correcting (ECCs) with respect to the data read from or written to memory device <NUM>. Any other suitable functions may be performed by memory controller <NUM> as well, for example, formatting memory device <NUM>. Memory controller <NUM> can communicate with an external device (e.g., host <NUM>) according to a particular communication protocol. For example, memory controller <NUM> may communicate with the external device through at least one of various interface protocols, such as a USB protocol, an MMC protocol, a peripheral component interconnection (PCI) protocol, a PCI-express (PCI-E) protocol, an advanced technology attachment (ATA) protocol, a serial-ATA protocol, a parallel-ATA protocol, a small computer small interface (SCSI) protocol, an enhanced small disk interface (ESDI) protocol, an integrated drive electronics (IDE) protocol, a Firewire protocol, etc. As disclosed herein, memory controller <NUM> may be configured to manage the power of memory system <NUM> to improve the operation speed of memory system <NUM>.

Memory controller <NUM> and one or more memory devices <NUM> can be integrated into various types of storage devices, for example, be included in the same package, such as a universal Flash storage (UFS) package or an eMMC package. That is, memory system <NUM> can be implemented and packaged into different types of end electronic products. In one example as shown in <FIG>, memory controller <NUM> and a single memory device <NUM> may be integrated into a memory card <NUM>. Memory card <NUM> can include a PC card (PCMCIA, personal computer memory card international association), a CF card, a smart media (SM) card, a memory stick, a multimedia card (MMC, RS-MMC, MMCmicro), an SD card (SD, miniSD, microSD, SDHC), a UFS, etc. Memory card <NUM> can further include a memory card connector <NUM> coupling memory card <NUM> with a host (e.g., host <NUM> in <FIG>). In another example as shown in <FIG>, memory controller <NUM> and multiple memory devices <NUM> may be integrated into an SSD <NUM>. SSD <NUM> can further include an SSD connector <NUM> coupling SSD <NUM> with a host (e.g., host <NUM> in <FIG>). In some implementations, the storage capacity and/or the operation speed of SSD <NUM> is greater than those of memory card <NUM>.

<FIG> illustrates a schematic circuit diagram of an exemplary memory device <NUM> including peripheral circuits, according to some aspects of the present disclosure. Memory device <NUM> can be an example of memory device <NUM> in <FIG>. Memory device <NUM> can include a memory cell array <NUM> and peripheral circuits <NUM> coupled to memory cell array <NUM>. Memory cell array <NUM> can be a NAND Flash memory cell array in which memory cells <NUM> are provided in the form of an array of NAND memory strings <NUM> each extending vertically above a substrate (not shown). In some implementations, each NAND memory string <NUM> includes a plurality of memory cells <NUM> coupled in series and stacked vertically. Each memory cell <NUM> can hold a continuous, analog value, such as an electrical voltage or charge, that depends on the number of electrons trapped within a region of memory cell <NUM>. Each memory cell <NUM> can be either a floating gate type of memory cell including a floating-gate transistor or a charge trap type of memory cell including a charge-trap transistor.

In some implementations, each memory cell <NUM> is a single-level cell (SLC) that has two possible memory states and thus, can store one bit of data. For example, the first memory state "<NUM>" can correspond to a first range of voltages, and the second memory state "<NUM>" can correspond to a second range of voltages. In some implementations, each memory cell <NUM> is a multi-level cell (MLC) that is capable of storing more than a single bit of data in more than four memory states. For example, the MLC can store two bits per cell, three bits per cell (also known as triple-level cell (TLC)), or four bits per cell (also known as a quad-level cell (QLC)). Each MLC can be programmed to assume a range of possible nominal storage values. In one example, if each MLC stores two bits of data, then the MLC can be programmed to assume one of three possible programming levels from an erased state by writing one of three possible nominal storage values to the cell. A fourth nominal storage value can be used for the erased state.

As shown in <FIG>, each NAND memory string <NUM> can include a source select gate (SSG) transistor <NUM> at its source end and a drain select gate (DSG) transistor <NUM> at its drain end. SSG transistor <NUM> and DSG transistor <NUM> can be configured to activate selected NAND memory strings <NUM> (columns of the array) during read and program operations. In some implementations, SSG transistors <NUM> of NAND memory strings <NUM> in the same block <NUM> are coupled through a same source line (SL) <NUM>, e.g., a common SL, for example, to the ground. DSG transistor <NUM> of each NAND memory string <NUM> is coupled to a respective bit line <NUM> from which data can be read or written via an output bus (not shown), according to some implementations. In some implementations, each NAND memory string <NUM> is configured to be selected or deselected by applying a select voltage (e.g., above the threshold voltage of DSG transistor <NUM>) or a deselect voltage (e.g., <NUM> V) to the gate of respective transistor DSG <NUM> through one or more DSG lines <NUM> and/or by applying a select voltage (e.g., above the threshold voltage of SSG transistor <NUM>) or a deselect voltage (e.g., <NUM> V) to the gate of respective SSG transistor <NUM> through one or more SSG lines <NUM>.

As shown in <FIG>, NAND memory strings <NUM> can be organized into multiple blocks <NUM>, each of which can have a common source line <NUM>. In some implementations, each block <NUM> is the basic data unit for erase operations, i.e., all memory cells <NUM> on the same block <NUM> are erased at the same time. Memory cells <NUM> of adjacent NAND memory strings <NUM> can be coupled through word lines <NUM> that select which row of memory cells <NUM> is affected by read and program operations. In some implementations, each word line <NUM> is coupled to a page <NUM> of memory cells <NUM>, which is the basic data unit for program operations. The size of one page <NUM> in bits can relate to the number of NAND memory strings <NUM> coupled by word line <NUM> in one block <NUM>. Each word line <NUM> can include a plurality of control gates (gate electrodes) at each memory cell <NUM> in respective page <NUM> and a gate line coupling the control gates.

Peripheral circuits <NUM> can be coupled to memory cell array <NUM> through bit lines <NUM>, word lines <NUM>, source lines <NUM>, SSG lines <NUM>, and DSG lines <NUM>. Peripheral circuits <NUM> can include any suitable analog, digital, and mixed-signal circuits for facilitating the operations of memory cell array <NUM> by applying and sensing voltage signals and/or current signals to and from each target memory cell <NUM> through bit lines <NUM>, word lines <NUM>, source lines <NUM>, SSG lines <NUM>, and DSG lines <NUM>. Peripheral circuits <NUM> can include various types of peripheral circuits formed using metal-oxide-semiconductor (MOS) technologies. For example, <FIG> illustrates some exemplary peripheral circuits <NUM> including a page buffer/sense amplifier <NUM>, a column decoder/bit line driver <NUM>, an input/output (I/O) circuit <NUM>, a row decoder/word line driver <NUM>, a voltage generator <NUM>, control logic <NUM>, registers <NUM>, an interface <NUM>, and a data bus <NUM>. It is understood that in some examples, additional peripheral circuits not shown in <FIG> may be included as well.

Page buffer/sense amplifier <NUM> can be configured to read and program (write) data from and to memory cell array <NUM> according to the control signals from control logic <NUM>. In one example, page buffer/sense amplifier <NUM> may store one page of program data (write data) to be programmed into one page <NUM> of memory cell array <NUM>. In another example, page buffer/sense amplifier <NUM> may perform program verify operations to ensure that the data has been properly programmed into memory cells <NUM> coupled to selected word lines <NUM>. In still another example, page buffer/sense amplifier <NUM> may also sense the low power signals from bit line <NUM> that represents a data bit stored in memory cell <NUM> and amplify the small voltage swing to recognizable logic levels in read operation.

Column decoder/bit line driver <NUM> can be configured to be controlled by control logic <NUM> and select one or more NAND memory strings <NUM> by applying bit line voltages generated from voltage generator <NUM>. I/O circuit <NUM> can be coupled to page buffer/sense amplifier <NUM> and/or column decoder/bit line driver <NUM> and configured to direct (route) the data input from data bus <NUM> to the desired memory cell areas (e.g., banks) of memory cell array <NUM>, as well as the data output from the desired memory cell areas to data bus <NUM>.

Row decoder/word line driver <NUM> can be configured to be controlled by control logic <NUM> and select block <NUM> of memory cell array <NUM> and a word line <NUM> of selected block <NUM>. Row decoder/word line driver <NUM> can be further configured to drive the selected word line <NUM> using a word line voltage generated from voltage generator <NUM>. Voltage generator <NUM> can be configured to be controlled by control logic <NUM> and generate the word line voltages (e.g., read voltage, program voltage, pass voltage, local voltage, and verification voltage) to be supplied to memory cell array <NUM>.

Control logic <NUM> can be coupled to each peripheral circuit described above and configured to control the operations of each peripheral circuit. Registers <NUM> can be coupled to control logic <NUM> and include status registers, command registers, and address registers for storing status information, command operation codes (OP codes), and command addresses for controlling the operations of each peripheral circuit. Interface <NUM> can be coupled to control logic <NUM> and act as a control buffer to buffer and relay control commands received from a host (not shown) to control logic <NUM> and status information received from control logic <NUM> to the host. Interface <NUM> can also be coupled to I/O circuit <NUM> via data bus <NUM> and act as a data I/O interface and a data buffer to buffer and relay the write data received from a host (not shown) to I/O circuit <NUM> and the read data from I/O circuit <NUM> to the host. For example, interface <NUM> may include a data I/O <NUM> coupled to data bus <NUM>.

<FIG> illustrates an exemplary implementation of memory system <NUM>, according to implementations of the disclosure. As shown in <FIG>, memory system <NUM> may include at least one memory device <NUM> (e.g., a three-dimensional (3D) NAND memory device) and memory controller <NUM> that is coupled to memory device <NUM>. While only one memory device <NUM> is depicted in <FIG> for simplicity, multiple memory devices may be used. In some implementations, a memory device (e.g., <NUM>) may also be referred to a "die. " Memory device <NUM> may include an array of memory cells <NUM> (also referred to as memory cell array <NUM>) and control logic <NUM> coupled to memory cell array <NUM>, as described above in connection with <FIG>. Memory controller <NUM> and control logic <NUM> may be configured to facilitate information transfer between each other. In addition, control logic <NUM> may be configured to control memory cell array <NUM> to facilitate data operations with respect to memory cell array <NUM>. For example, a data programing (writing) operation may be implemented as follows: memory controller <NUM> may transfer data to be programmed to control logic <NUM>, which in turn may execute a program operation to program/write the data to memory cell array <NUM>. In another example, a data reading operation may be implemented as follows: control logic <NUM> may execute a read operation to retrieve data from memory cell array <NUM>, and then transfer the retrieved data to memory controller <NUM>.

Memory controller <NUM> and control logic <NUM> can be implemented by microprocessors, microcontrollers (a. microcontroller units (MCUs)), digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), programmable logic devices (PLDs), state machines, gated logic, discrete hardware circuits, and other suitable hardware, firmware, and/or software configured to perform the various functions described below in detail. In some implementations, one or more of the functionalities of control logic <NUM> described above can be implemented with content-addressable memory (CAM).

As shown in <FIG>, memory cell array <NUM> may be powered by a power source Vcc, which supplies an electrical current Icc to facilitate memory operations performed by memory cell array <NUM>, such as read operations, program operations, erase operations, etc. On the other hand, control logic <NUM>, memory controller <NUM>, as well as components therebetween (e.g., data bus, direct memory access (DMA) devices, etc.) are powered by another power source Vccq, which supplied an electrical current Iccq to facilitate memory operations relating to information transfer between memory controller <NUM> and control logic <NUM>, such as information transfer operations including data transfer operations and instruction transfer operations. Exemplary information transfer operations include DMA read operations and DMA program (write) operations. Each of the power sources Vcc and Vccq may have a predetermined power consumption threshold, exceeding which may cause a significant drop of the corresponding electrical current (Icc or Iccq), which in turn may cause malfunction of the corresponding component(s) receiving the electrical current. For example, when memory operations performed by memory cell array <NUM> require a power consumption level exceeding the power consumption threshold of power source Vcc, execution of the memory operations in parallel may cause power source Vcc to overload, which in turn may cause malfunction of memory cell array <NUM>. In another example, when memory operations relating to information transfer between memory controller <NUM> and control logic <NUM> require a power consumption level exceeding the power consumption threshold of power source Vccq, execution of the memory operations in parallel may cause power source Vccq to overload, which in turn may cause malfunction of memory controller <NUM> and/or control logic <NUM>.

<FIG> illustrates another exemplary implementation of memory system <NUM>, according to implementations of the disclosure. As shown in <FIG>, memory controller <NUM> may be coupled to a plurality of memory devices (104A-104D) and configured to control memory devices 104A-104D. While four memory devices are depicted in <FIG>, less or more memory devices may be used. Memory controller <NUM> may include a PCIE layer <NUM> and/or an NVMe layer <NUM> to interface with host <NUM> (e.g., a PCIE host). PCIE layer <NUM> and/or NVMe layer <NUM> may be coupled to processing cores <NUM>, which may be configured to implement various memory control functionalities through executing instructions stored in firmware of processing cores <NUM>. For example, a power management unit <NUM> may be implemented through a firmware program stored in the firmware of processing cores <NUM>. Exemplary implementations of power management unit <NUM> will be discussed in greater detail in connection with <FIG>. Processing cores <NUM> may be coupled to a memory device controller <NUM>, a buffer <NUM>, and a DRAM controller <NUM>. Memory device controller <NUM> may be configured to act as an interface with memory devices 104A-104D. DRAM controller <NUM> may be configured to access information store on a DRAM <NUM>. Buffer <NUM> may be configured to store temporary information. One or more other logics <NUM> may also be present in memory controller <NUM>.

<FIG> illustrates an exemplary memory system <NUM> with an improved power management mechanism to prevent power source overload. As shown in <FIG>, memory system <NUM> may include a memory operation initiator <NUM>, a first queue of memory operations <NUM>, a second queue of memory operations <NUM>, a queue manager <NUM>, a memory operation executor <NUM>, and a plurality of memory cell arrays 301A-301D. While four memory cell arrays are depicted in <FIG> for illustration purposes, less or more memory cell arrays may be used. In some implementations, memory operation initiator <NUM>, queues <NUM> and <NUM>, queue manager <NUM>, and memory operation executor <NUM> may be implemented by memory device controller <NUM>. For example, memory controller <NUM> may execute instructions stored on a non-transitory computer-readable medium to implement the functions of memory operation initiator <NUM>, queues <NUM> and <NUM>, and queue manager <NUM>, and memory device controller <NUM> may execute instructions stored on a non-transitory computer-readable medium to implement the functions of memory operation executor <NUM>. In some implementations, the non-transitory computer-readable medium may be in the form of a ROM device, and the instructions may be in the form of firmware. Each of the memory cell arrays 301A-301D may include an integrated control logic (not shown in <FIG>), similar to the control logic <NUM> shown in <FIG>.

Memory operation initiator <NUM> may be configured to initiate memory operations to be executed, including one or more types of memory operations such as a read operation, a program operation, an erase operation, a multi-plane operation, a single-plane operation, an information transfer operation, an encoding operation, and a decoding operation. A read operation refers to an operation performed by a memory cell array to read data stored therein. A program operation refers to an operation performed by a memory cell array to program (write) data thereto. An erase operation refers to an operation performed by a memory cell array to erase (remove) data stored therein. A single-plane operation refers to an operation performed by a memory cell array that involves only a single plane of a memory device, whereas a multi-plane operation refers to an operation that involves multiple planes. An information transfer operation refers to an operation performed by memory controller <NUM> and/or control logic <NUM> (e.g., shown in <FIG>) to transfer data and/or instructions between memory controller <NUM> and a memory cell array (e.g., 301A-301D). For example, information transfer operations may include a DMA read operation to transfer data from a memory cell array to memory controller <NUM> and a DMA program (write) operation to transfer data from memory controller <NUM> to a memory cell array. Encoding and decoding operations may be performed by memory controller <NUM> to detect and correct errors.

Execution of each type of the above-described memory operations consumes power. Depending on the component that performs a particular memory operation, the execution of different types of memory operations may consume power from different power sources. For example, memory operations such as read operations, program operations, erase operations, multi-plane operations, and single-plane operations are primarily performed by memory cell arrays, which draw electrical current Icc and consume power from power source Vcc. Icc therefore may represent the power consumption resulting from concurrently executing multiple memory operations performed by memory cell arrays. Icc may also be used to calculate a power consumption value indicating the power consumption resulting from these concurrently executed memory operations. Accordingly, the number of concurrent memory-cell-array-performed memory operations executing in parallel may be limited by the predetermined power consumption threshold of power source Vcc. In another example, memory operations such as information transfer operations, encoding operations, and decoding operations are primarily performed by memory controller <NUM>, which draw electrical current Iccq. Similar to Icc, Iccq may represent the power consumption resulting from concurrently executing multiple memory operations performed by memory controller <NUM>. Iccq may also be used to calculate a power consumption value indicating the power consumption resulting from these concurrently executed memory operations. Accordingly, the number of concurrent memory-controller-performed memory operations executing in parallel may be limited by the predetermined power consumption threshold of power source Vccq.

Queues <NUM> and <NUM> are configured to separate memory operations that cause power consumption from different power sources. As shown in <FIG>, memory controller <NUM> maintains queue <NUM> (e.g., in buffer <NUM> of memory controller <NUM>) to hold a sequence of memory operations, execution of which causing power consumption from power source Vccq, and maintains queue <NUM> (e.g., in buffer <NUM> of memory controller <NUM>) to hold another sequence of memory operations, execution of which causing power consumption from power source Vcc. For example, queue <NUM> may hold memory operations such as a DMA read operation, a DMA program operation, etc. As described above, the execution of such memory-controller-performed memory operations causes power consumption from power source Vccq. In another example, queue <NUM> may hold memory operations such as a read operation, a program operation, an erase operation, etc. As described above, the execution of such memory-cell-array-performed memory operations causes power consumption from power source Vcc.

Separating memory operations in this manner facilitates an improved power management method in which available margins in the power sources previously under-utilized can be effectively harvested. As shown in <FIG>, memory operation executor <NUM> (e.g., implemented by memory device controller <NUM> and/or corresponding back-end modules) may be configured to execute a plurality of memory operations in parallel. For example, the plurality of memory operations may include multiple memory operations execution of which causing power consumption from power source Vcc, and the multiple memory operations can be concurrently performed by multiple memory cell arrays. In another example, the plurality of memory operations may include multiple memory operations execution of which causing power consumption from power source Vccq, and the multiple memory operations can be concurrently performed by memory controller <NUM> to facilitate information transfer between memory controller <NUM> and multiple memory cell arrays. In a further example, the plurality of memory operations may include a combination of memory operations described in the above two cases. In any case, memory controller <NUM> may control the total concurrent power consumption drawn from power source Vcc to be equal to or lower than the predetermine power consumption threshold of power source Vcc, and control the total concurrent power consumption drawn from power source Vccq to be equal to or lower than the predetermined power consumption threshold of power source Vccq.

In some implementations, the above-described power management method can be implemented using queue manager <NUM>. For example, queue manager <NUM> may be configured to separately determine whether the execution of a subsequent memory operation in queue <NUM> would cause power source Vccq to be overloaded and whether execution of a subsequent memory operation in queue <NUM> would cause power source Vcc to be overloaded. Take queue <NUM> for example, queue manager <NUM> may determine a current power consumption value indicating total concurrent power consumption of executing, in parallel, those memory operations drawing power from the power source Vccq. In some implementations, information of such memory operations may be provided by memory operation executor <NUM>. For example, memory operation executor <NUM> may maintain a list of concurrently executing memory operations that draw power from power source Vccq. Queue manager <NUM> may obtain the list and determine the respective types of the memory operations in the list. Each type of memory operation may correspond to a predetermined power consumption value. A power consumption value may take many forms, such as a numerical value, a digital value, an analog value, an electrical current/voltage/power level, or any other forms of information capable of indicating the power consumption resulting from concurrent execution of memory operations. For example, in some embodiments, different levels of power consumption may be classified into multiple groups, and each group is represented by a digital code. In this case, the digital codes can be used as the power consumption values. The predetermined power consumption value may be predetermined based on the measurement of Vccq/Iccq while executing the corresponding memory operation. The predetermined power consumption value may be in the form of an absolute value (e.g., in Watt) or a relative value. In the case of taking the form of a relative value, the relative value may be calculated based on a predetermined reference, such as normalizing against the predetermined power threshold of power source Vccq, or in the form of a weight, a percentage, etc. The predetermined power consumption threshold may also be in the same form as the predetermined power consumption value. Queue manager <NUM> may maintain a look-up table (e.g., stored in a RAM of memory controller <NUM> and/or in DRAM <NUM>) containing a mapping relationship between the types of the memory operations and the corresponding power consumption values. In this way, queue manager <NUM> may determine individual power consumption values corresponding to the memory operations in the list based on the respective types, for example, by mapping the respective types of memory operations to the corresponding predetermined power consumption values. After individual power consumption values are determined, queue manager <NUM> may determine the current power consumption value by summing up all of the individual power consumption values.

In some implementations, instead of maintaining a list of concurrently executing memory operations, memory operation executor <NUM> and/or queue manager <NUM> may maintain the current power consumption value corresponding to queue <NUM>. After completion of a memory operation, its corresponding power consumption value can be deducted from the current power consumption value. On the other hand, after a subsequent memory operation is added to the parallel execution, its corresponding power consumption value can be added to the current power consumption value.

To prevent the current power consumption value from exceeding the predetermined power consumption threshold of power source Vccq, queue manager <NUM> may control the releasing or withholding of a subsequent memory operation in queue <NUM>. For example, as shown in <FIG>, a DMA program operation is the next (subsequent) memory operation in queue <NUM> to be executed in parallel with currently executing memory operations. Queue manager <NUM> may determine the current power consumption value, as described above, as well as an addon power consumption value indicating additional power consumption of executing the DMA program operation. Queue manager <NUM> may then determine whether a summation of the current and the addon power consumption values exceeds the predetermined power consumption threshold of power source Vccq: <MAT> where Psum refers to the current power consumption value, Pn refers to the addon power consumption value, and Pmax refers to the predetermined power consumption threshold.

If condition (<NUM>) is met, meaning adding the DMA program operation to the pool of concurrently executing memory operations would not cause power source Vccq to be overloaded, then queue manager <NUM> may release the DMA program operation to memory operation executor to execute in parallel with the memory operations currently in the pool. Otherwise, queue manager <NUM> may delay the execution of the DMA program operation by withholding it in queue <NUM> until an additional power consumption margin is available (e.g., completion of one or more memory operations).

In some implementations, queue manager <NUM> may adjust the individual power consumption values based on environmental conditions, such as temperature, to more accurately reflect the actual power consumption under different conditions. The current power consumption value may then be determined based on the adjusted individual power consumption values.

While the above example is described in connection with queue <NUM>, power management in connection with queue <NUM> can be implemented in a similar manner.

The power management method disclosed herein can improve the overall speed of memory operations by utilizing margins provided by the power sources. For example, a data reading operation often requires two memory operations: a read operation and a DMA read operation, adding to queues <NUM> and <NUM>, respectively. The DMA read operation is often the performance bottleneck as the execution of the DMA read imposes a heavier burden to power source Vccq than the burden to the power source Vcc imposed by execution of the read operation. Therefore, the read operation in queue <NUM> may finish earlier than the DMA read operation in queue <NUM>. Instead of waiting for the completion of the DMA read operation in idle, queue manager <NUM> may advance queue <NUM> to execute the next memory operation in the queue. In this way, the next memory operation in queue <NUM> can be executed concurrently with the DMA read operation, effectively harvesting the available margin of power source Vcc.

In another example, a data programing (writing) operation is conventionally implemented by executing a writing operation immediately after a DMA write operation. During the time of executing the writing operation, no subsequent information transfer operations are performed. As a result, the available margin provided by power source Vccq is wasted. Using the separate queues disclosed herein, a data programming operation can be implemented using two memory operations, similar to the data reading operation. For example, the data writing operation can be implemented using a DMA program operation and a program operation adding to queues <NUM> and <NUM>, respectively. Different from the data reading case, here, execution of the program operation may impose a heavier burden to power source Vcc than the burden imposed to power source Vccq by execution of the DMA program operation. Therefore, the DMA program operation may finish earlier, opening up an available margin to power source Vccq while the program operation is still executing. Instead of waiting for the completion of the program operation in idle, queue manager <NUM> may advance to the next memory operation in the queue, for example, another DMA program operation. This subsequent DMA program operation can then be executed in parallel with the program operation still in execution, effectively increasing the information transfer rate from memory controller <NUM> to the memory cell arrays.

<FIG> illustrates a flowchart of an exemplary method <NUM> for managing the power of a memory system, according to some aspects of the present disclosure. The memory system may be any suitable memory system disclosed herein. Method <NUM> may be implemented by memory controller <NUM>. It is understood that the operations shown in method <NUM> may not be exhaustive and that other operations can be performed as well before, after, or between any of the illustrated operations. Further, some of the operations may be performed simultaneously, or in a different order than shown in <FIG>.

Referring to <FIG>, method <NUM> starts at operation <NUM>, in which memory controller <NUM> may determine a current power consumption value Psum indicating total concurrent consumption of executing a plurality of memory operations in parallel. For example, as described above, queue manager <NUM> may obtain a list of the memory operations currently from memory operation executor <NUM>. Queue manager <NUM> may then determine the respective types of the memory operations, and determine individual power consumption values based on the respective types by, for example, maintaining a look-up table storing mapping relationship between the types of the memory operations and their corresponding power consumption values. Queue manager <NUM> may then determine the current power consumption value by summing up all of the individual power consumption values.

At operation <NUM>, memory controller <NUM> may determine an addon power consumption value Pn indicating additional power consumption of executing a subsequent memory operation. For example, queue manager <NUM> may determine the power consumption value of a subsequent memory operation (e.g., DMA program) in queue <NUM> based on the type of the memory operation, similar to determining the individual power consumption values of the concurrently executing memory operations at step <NUM>.

At operation <NUM>, memory controller <NUM> may determine whether the summation of Psum and Pn exceeds a predetermined power consumption threshold (e.g., the predetermined power consumption threshold of power source Vccq). If the summation does not exceed the predetermined power consumption threshold, method <NUM> proceeds to step <NUM>, in which memory controller <NUM> executes the subsequent memory operation in parallel with the plurality of memory operations. Otherwise, method <NUM> proceeds to step <NUM>, in which memory controller <NUM> delays the execution of the subsequent memory operations.

<FIG> illustrates a flowchart of another exemplary method <NUM> for managing the power of a memory system, according to some aspects of the present disclosure. The memory system may be any suitable memory system disclosed herein. Method <NUM> may be implemented by memory controller <NUM>. It is understood that the operations shown in method <NUM> may not be exhaustive and that other operations can be performed as well before, after, or between any of the illustrated operations. Further, some of the operations may be performed simultaneously, or in a different order than shown in <FIG>.

Referring to <FIG>, method <NUM> starts at operation <NUM>, in which memory controller <NUM> may maintain a first queue of memory operations (e.g., <NUM>), wherein execution of the memory operations in the first queue causes power consumption from the first power source (e.g., power source Vccq). In operation <NUM>, memory controller <NUM> may maintain a second queue of memory operations (e.g., <NUM>), wherein execution of the memory operations in the second queue causes power consumption from the second power source (e.g., power source Vcc).

In operation <NUM>, memory controller <NUM> may separately determine whether the execution of subsequent memory operations in the first and second queues, respectively, would cause the corresponding first and second power sources to be overloaded. For example, queue manager <NUM> may determine whether the execution of the DMA program operation in queue <NUM> would cause power source Vccq to be overloaded. The power source overload condition can be set similar to Condition (<NUM>) and in operation <NUM>. For example, when Psum + Pn <= Pmax, queue manager <NUM> may determine that execution of the DMA program operation in queue <NUM> (Pn) would not cause power source Vccq to be overloaded; when Psum + Pn > Pmax, queue manager <NUM> may determine that execution of the DMA program operation in queue <NUM> (Pn) would cause power source Vccq to be overloaded. Queue manager <NUM> may separately determine the power source overload conditions for different queues.

At operation <NUM>, memory controller <NUM> may execute, based on the determination, the subsequent memory operation in the first or second queue that would not cause the corresponding first or second power source to be overloaded. For example, queue manager <NUM> may release or push the DMA program operation into the pool of concurrently executing memory operations after it is determined that the power source would not be overloaded.

At operation <NUM>, memory controller <NUM> may delay, based on the determination, the subsequent memory operation in the first or second queue that would cause the corresponding first or second power source to be overloaded. For example, queue manager <NUM> may withhold or delay releasing the DMA program operation into the pool of concurrently executing memory operations after it is determined that the power source would be overloaded.

Another aspect of the disclosure is directed to a non-transitory computer-readable medium storing instructions which, when executed, cause one or more processing units such as memory controller <NUM> to perform the methods, as discussed above. The computer-readable medium may include volatile or non-volatile, magnetic, semiconductor, tape, optical, removable, non-removable, or other types of computer-readable medium or computer-readable storage devices. For example, the computer-readable medium may be in the form of a read-only memory (ROM), and the instructions may be in the form of firmware.

According to one aspect of the present disclosure, a memory system includes at least one memory device and a memory controller coupled to the at least one memory device. The memory controller may be configured to determine a current power consumption value indicating total concurrent power consumption of executing a plurality of memory operations in parallel. The memory controller may also be configured to determine an addon power consumption value indicating additional power consumption of executing a subsequent memory operation. The memory controller may be further configured to determine whether a summation of the current and the addon power consumption values exceeds a predetermined power consumption threshold. After determining that the summation of the current and the addon power consumption values does not exceed the predetermined power consumption threshold, the memory controller may be configured to execute the subsequent memory operation in parallel with the plurality of memory operations.

In some implementations, the memory controller may be configured to delay execution of the subsequent memory operation after determining that the summation of the current and the addon power consumption values exceeds the predetermined power consumption threshold.

In some implementations, the memory controller may be configured to determine respective types of the plurality of memory operations; determine individual power consumption values corresponding to the plurality of memory operations, respectively, based on the respective types; and determine the current power consumption value based on the individual power consumption values.

In some implementations, the memory controller may be configured to adjust the determined individual power consumption values based on environmental conditions; and determine the current power consumption value based on the adjusted individual power consumption values.

In some implementations, each type of memory operation corresponds to a predetermined power consumption value. The memory controller may be configured to determine the individual power consumption values based on mapping the respective types of the plurality of memory operations to the corresponding predetermined power consumption values.

In some implementations, the types of the plurality of memory operations include at least one of a read operation, a program operation, an erase operation, a multi-plane operation, a single-plane operation, an information transfer operation, an encoding operation, or a decoding operation.

In some implementations, at least one of the current power consumption value, the addon power consumption value, or the predetermined power consumption threshold is in a form of a relative value calculated based on a predetermined reference.

In some implementations, each of the at least one memory device includes an array of memory cells and a control logic coupled to the array of memory cells. The memory controller and the control logic of the at least one memory device are powered by a first power source having a first predetermined power consumption threshold. The array of memory cells of the at least one memory device is powered by a second power source having a second predetermined power consumption threshold. The memory controller is configured to: maintain a first queue of memory operations, wherein execution of the memory operations in the first queue causes power consumption from the first power source; maintain a second queue of memory operations, wherein execution of the memory operations in the second queue causes power consumption from the second power source; separately determine whether execution of subsequent memory operations in the first and second queues, respectively, would cause the corresponding first and second power sources to be overloaded; execute, based on the determination, the subsequent memory operation in the first or second queue that would not cause the corresponding first or second power source to be overloaded; and delay, based on the determination, the subsequent memory operation in the first or second queue that would cause the corresponding first or second power source to be overloaded.

In some implementations, the memory operations in the first queue include an information transfer operation. The memory operations in the second queue include at least one of a read operation, a program operation, or an erase operation.

In some implementations, the memory device includes a three-dimensional (3D) NAND memory device.

In another aspect, a method for managing power of a memory system is provided. The method may include determining a current power consumption value indicating total concurrent power consumption of executing a plurality of memory operations in parallel. The method may also include determining an addon power consumption value indicating additional power consumption of executing a subsequent memory operation. The method may further include determining whether a summation of the current and the addon power consumption values exceeds a predetermined power consumption threshold. After determining that the summation of the current and the addon power consumption values does not exceed the predetermined power consumption threshold, the method may include executing the subsequent memory operation in parallel with the plurality of memory operations.

In some implementations, the method also includes delaying execution of the subsequent memory operation after determining that the summation of the current and the addon power consumption values exceeds the predetermined power consumption threshold.

In some implementations, the method also includes determining respective types of the plurality of memory operations; determining individual power consumption values corresponding to the plurality of memory operations, respectively, based on the respective types; and determining the current power consumption value based on the individual power consumption values.

In some implementations, the method also includes adjusting the determined individual power consumption values based on environmental conditions; and determining the current power consumption value based on the adjusted individual power consumption values.

In some implementations, each type of memory operation corresponds to a predetermined power consumption value. The method includes determining the individual power consumption values based on mapping the respective types of the plurality of memory operations to the corresponding predetermined power consumption values.

In some implementations, the memory system comprises at least one memory device and a memory controller coupled to the at least one memory device. Each of the at least one memory device includes an array of memory cells and a control logic coupled to the array of memory cells. The memory controller and the control logic of the at least one memory device are powered by a first power source having a first predetermined power consumption threshold. The array of memory cells of the at least one memory device is powered by a second power source having a second predetermined power consumption threshold. The method includes maintaining a first queue of memory operations, wherein execution of the memory operations in the first queue causes power consumption from the first power source; maintaining a second queue of memory operations, wherein execution of the memory operations in the second queue causes power consumption from the second power source; separately determining whether execution of subsequent memory operations in the first and second queues, respectively, would cause the corresponding first and second power sources to be overloaded; executing, based on the determination, the subsequent memory operation in the first or second queue that would not cause the corresponding first or second power source to be overloaded; and delaying, based on the determination, the subsequent memory operation in the first or second queue that would cause the corresponding first or second power source to be overloaded.

In some implementations, the memory device comprises a three-dimensional (3D) NAND memory device.

In still another aspect, a non-transitory computer-readable medium is provided. The non-transitory computer-readable medium stores instructions that, when executed by a memory controller of a memory system, cause the memory controller to perform a method of managing power of the memory system. The method may include determining a current power consumption value indicating total concurrent power consumption of executing a plurality of memory operations in parallel. The method may also include determining an addon power consumption value indicating additional power consumption of executing a subsequent memory operation. The method may further include determining whether a summation of the current and the addon power consumption values exceeds a predetermined power consumption threshold. After determining that the summation of the current and the addon power consumption values does not exceed the predetermined power consumption threshold, the method may include executing the subsequent memory operation in parallel with the plurality of memory operations.

The foregoing description of the specific implementations can be readily modified and/or adapted for various applications. Therefore, such adaptations and modifications are intended to be within the meaning and range of equivalents of the disclosed implementations, based on the teaching and guidance presented herein.

Claim 1:
A memory system (<NUM>), comprising:
at least one memory device (<NUM>), wherein each of the at least one memory device (<NUM>) comprises an array of memory cells (<NUM>) and a control logic (<NUM>) coupled to the array of memory cells (<NUM>); and
a memory controller (<NUM>) coupled to the at least one memory device (<NUM>); wherein:
the memory controller (<NUM>) and the control logic (<NUM>) of the at least one memory device (<NUM>) are powered by a first power source having a first predetermined power consumption threshold;
the array of memory cells (<NUM>) of the at least one memory device (<NUM>) is powered by a second power source having a second predetermined power consumption threshold;
at least a first queue and a second queue are configured to separate memory operations that cause power consumption from the first (Vccq) and second (Vcc) sources, respectively, if executed; and
the memory controller (<NUM>) is configured to:
maintain the first queue comprising a first subset of the memory operations, wherein execution of the first subset of the memory operations in the first queue causes power consumption from the first power source;
maintain the second queue comprising a second subset of the memory operations, wherein execution of the second subset of the memory operations in the second queue causes power consumption from the second power source;
separately determine whether execution of a first subsequent memory operation and a second subsequent memory operation in the first and second queues, respectively, would cause the corresponding first and second power sources to be overloaded;
execute, based on the determination, the first subsequent memory operation in the first queue or the second subsequent memory operation in the second queue that would not cause the corresponding first or second power source to be overloaded; and
delay, based on the determination, the first subsequent memory operation in the first queue or the second subsequent memory operation in the second queue that would cause the corresponding first or second power source to be overloaded.