Integrated power and thermal management in non-volatile memory
Summary by NHIP
Multi-loop thermal power management
The device regulates power, clock frequency, and temperature using three cascaded control loops with decreasing update rates. The power loop updates fastest, followed by the clock loop, while the temperature loop updates slowest based on measured thermal data.
Claim Score by NHIP
Abstract
A non-volatile storage device comprises non-volatile memory cells, clocked circuity, and one or more control circuits. The one or more control circuits are configured to process commands to access the non-volatile memory cells using the clocked circuity, implement a power control loop to regulate power consumption of the non-volatile storage device based on a first feedback signal, implement a temperature control loop to regulate temperature of the non-volatile storage device based on a second feedback signal, and implement a clock frequency control loop to regulate one or more clock frequencies of the clocked circuitry based on a third feedback signal.

Term
13.1 yearsleft in the term
Expires 15 October 2039, including 109 days of term adjustment.
- Priority and filed
- Granted
- Today
- Expires
19 claims: 3 independent, 16 dependent
- 1A non-volatile storage device, comprising:non-volatile memory cells;clocked circuitry;and one or more control circuits configured to: process commands to access the non-volatile memory cells using the clocked circuitry;implement a power control loop to regulate power consumption of the non-volatile storage device based on a first feedback signal, the power control loop having a first update rate;implement a clock frequency control loop to regulate one or more clock frequencies of the clocked circuitry based on a second feedback signal, the clock frequency control loop having a second update rate that is slower than the first update rate;and implement a temperature control loop to regulate temperature of the non-volatile storage device based on a third feedback signal, the temperature control loop having a third update rate that is slower than the second update rate.
- 9Broadest claimClaim Score 63, broad(NHIP)A method of operating a non-volatile storage device comprising non-volatile memory cells, the method comprising:operating one or more processors to execute commands to access the non-volatile memory cells;regulating power usage in the non-volatile storage device based on a target power level while operating the one or more processors, including issuing power credits to execute the commands;limiting operating temperature of the non-volatile storage device to below a threshold temperature, including establishing the target power level;and reducing a frequency of one or more clock signals of the one or more processors in response to an increase of backlog of the commands.
- 14A non-volatile storage device, comprising:non-volatile memory cells;and a non-volatile memory controller comprising one or more processors, the non-volatile memory controller comprising: means for processing commands to access the non-volatile memory cells;means for controlling power usage of the non-volatile storage device using a first closed control loop having a first bandwidth;means for controlling operating frequencies of the one or more processors using a second closed control loop having a second bandwidth that is less than the first bandwidth;and means for controlling operating temperature of the non-volatile storage device using a third closed control loop having a third bandwidth that is less than the second bandwidth.
Independent claims3
123 paragraphs in 3 sections, as filed
BACKGROUND
Semiconductor memory is widely used in various electronic devices such as cellular telephones, digital cameras, personal digital assistants, medical electronics, mobile computing devices, non-mobile computing devices and data servers. Semiconductor memory may comprise non-volatile memory or volatile memory. A non-volatile memory allows information to be stored and retained even when the non-volatile memory is not connected to a source of power (e.g., a battery). Examples of non-volatile memory include flash memory (e.g., NAND-type and NOR-type flash memory), Electrically Erasable Programmable Read-Only Memory (EEPROM), and others. One example of a non-volatile storage device that uses semiconductor based non-volatile memory is a solid state drive (SSD).
Non-volatile storage devices are subject to rapid changes in both power usage and operating temperature. Power usage can be very volatile due to the power profile of memory operations, and variability in workloads. Conventional power and thermal management often have goals which conflict. For example, goals of strict enforcement of limits, fast reaction, and maximizing performance often conflict with each other. Thus, it is difficult to design a storage device that meets one power and thermal management goal without sacrificing another goal.
BRIEF DESCRIPTION OF THE DRAWINGS
Like-numbered elements refer to common components in the different Figures.
<figref idref="DRAWINGS">FIG. 1A</figref> is a block diagram of one embodiment of a storage device connected to a host.
<figref idref="DRAWINGS">FIG. 1B</figref> is a block diagram of one embodiment of a Front End Processor Circuit. In some embodiments, the Front End Processor Circuit is part of a Controller.
<figref idref="DRAWINGS">FIG. 1C</figref> is a block diagram of one embodiment of a Back End Processor Circuit. In some embodiments, the Back End Processor Circuit is part of a Controller.
<figref idref="DRAWINGS">FIG. 1D</figref> is a block diagram of one embodiment of a memory package.
<figref idref="DRAWINGS">FIG. 2</figref> is a block diagram of one embodiment of a memory die.
<figref idref="DRAWINGS">FIG. 3</figref> is a diagram of one embodiment of a memory controller, showing aspects of an integrated solution for controlling power usage, operating temperature, and clock frequencies.
<figref idref="DRAWINGS">FIG. 4</figref> depicts further details of one embodiment of a power control block.
<figref idref="DRAWINGS">FIG. 5</figref> depicts further details of one embodiment of a thermal control block.
<figref idref="DRAWINGS">FIG. 6</figref> depicts further details of one embodiment of a DFS control block.
<figref idref="DRAWINGS">FIG. 7</figref> is a flowchart of one embodiment of a process of operating a non-volatile storage device.
<figref idref="DRAWINGS">FIG. 8</figref> depicts one embodiment of a parameter table.
<figref idref="DRAWINGS">FIG. 9</figref> is a diagram that illustrates an embodiment of correction steps based on an error trend.
<figref idref="DRAWINGS">FIG. 10</figref> is a diagram that illustrates an embodiment in which there are five zones.
<figref idref="DRAWINGS">FIG. 11</figref> illustrates a glide path that relates to an embodiment that uses an ETA factor.
<figref idref="DRAWINGS">FIG. 12</figref> illustrates how embodiments of using the ETA factor to achieve a glide path compares to some conventional correction responses.
<figref idref="DRAWINGS">FIG. 13</figref> is flowchart of one embodiment of a process for taking corrective action based on zone-specific parameters.
<figref idref="DRAWINGS">FIG. 14</figref> shows how temperature control, power control and DFS control work together, in one embodiment.
<figref idref="DRAWINGS">FIG. 15</figref> shows further details of how temperature control, power control and DFS control work together, in one embodiment.
<figref idref="DRAWINGS">FIG. 16</figref> is flowchart of one embodiment of a process of saving power during idle periods in a non-volatile storage device.
DETAILED DESCRIPTION
Techniques are disclosed herein for power and thermal management in non-volatile storage devices. In some embodiments, the storage device has three integrated control loops. A power control loop is used to regulate power consumption of the storage devices, a thermal control loop is used to regulate operating temperature of the storage devices, and a dynamic frequency scaling (DFS) control loop is used to control clock frequencies of one or more processors in the storage devices, in one embodiment. The use of these three control loops allows for very effective power and thermal management. For example, storage devices performance can be increased without an increase in total power usage.
<figref idref="DRAWINGS">FIG. 1A</figref> is a block diagram of one embodiment of a storage device <b>100</b> connected to a host <b>120</b>. Storage device <b>100</b> can implement the technology proposed herein. Many different types of storage or memory devices can be used with the technology proposed herein. One example storage device is a solid state drive (SSD); however, other types of storage and memory devices can also be used. Storage device <b>100</b> comprises a Controller <b>102</b>, non-volatile memory <b>104</b> for storing data, and local memory (e.g. DRAM/ReRAM) <b>106</b>. Controller <b>102</b> comprises a Front End Processor Circuit (FEP) <b>110</b> and one or more Back End Processor Circuits (BEP) <b>112</b>. In one embodiment FEP <b>110</b> circuit is implemented on an ASIC. In one embodiment, each BEP circuit <b>112</b> is implemented on a separate ASIC. The ASICs for each of the BEP circuits <b>112</b> and the FEP circuit <b>110</b> are implemented on the same semiconductor such that the Controller <b>102</b> is manufactured as a System on a Chip (SoC). FEP <b>110</b> and BEP <b>112</b> both include their own processors. In one embodiment, FEP <b>110</b> and BEP <b>112</b> work as a master slave configuration where the FEP <b>110</b> is the master and each BEP <b>112</b> is a slave. For example, FEP circuit <b>110</b> implements a flash translation layer that performs memory management (e.g., garbage collection, wear leveling, etc.), logical to physical address translation, communication with the host, management of DRAM (local volatile memory) and management of the overall operation of the SSD (or other non-volatile storage device). The BEP circuit <b>112</b> manages memory operations in the memory packages/die at the request of FEP circuit <b>110</b>. For example, the BEP circuit <b>112</b> can carry out the read, erase and programming processes. Additionally, the BEP circuit <b>112</b> can perform buffer management, set specific voltage levels required by the FEP circuit <b>110</b>, perform error correction (ECC), control the Toggle Mode interfaces to the memory packages, etc. In one embodiment, each BEP circuit <b>112</b> is responsible for its own set of memory packages. Controller <b>102</b> is one example of a control circuit.
In one embodiment, non-volatile memory <b>104</b> comprises a plurality of memory packages. Each memory package includes one or more memory die. Therefore, Controller <b>102</b> is connected to one or more non-volatile memory die. In one embodiment, each memory die in the memory packages <b>104</b> utilize NAND flash memory (including two dimensional NAND flash memory and/or three dimensional NAND flash memory). In other embodiments, the memory package can include other types of memory.
Controller <b>102</b> communicates with host <b>120</b> via an interface <b>130</b> that implements NVM Express (NVMe) over PCI Express (PCIe). For working with storage device <b>100</b>, host <b>120</b> includes a host processor <b>122</b>, host memory <b>124</b>, and a PCIe interface <b>126</b> connected to bus <b>128</b>. Host memory <b>124</b> is the host's physical memory, and can be DRAM, SRAM, non-volatile memory or another type of storage. Host <b>120</b> is external to and separate from storage device <b>100</b>. In one embodiment, storage device <b>100</b> is embedded in host <b>120</b>.
The power usage monitor <b>352</b> is configured to monitor the power consumption of the storage device <b>100</b>. For example, the power usage monitor <b>352</b> may include sensors and circuitry (e.g., one or more current sensors and/or voltage sensors) configured to measure power consumption of different components of the storage device <b>100</b>. In some embodiments, when the power consumption of the storage device <b>100</b> is above a threshold, limit, or power budget, the storage device <b>100</b> may perform power management operations to reduce or limit power consumption. In some power management scenarios, the performance of some components (e.g., the memory packages <b>104</b>) may be reduced, limited, or throttled. The data storage device <b>100</b> may include components and circuitry configured to perform power management functions. Power throttling refers to operations, for example, frequency and/or voltage reduction, that can reduce the power consumption of the throttled circuitry or components.
<figref idref="DRAWINGS">FIG. 1B</figref> is a block diagram of one embodiment of FEP circuit <b>110</b>. <figref idref="DRAWINGS">FIG. 1B</figref> shows a PCIe interface <b>150</b> to communicate with host <b>120</b> and a host processor <b>152</b> in communication with that PCIe interface. The host processor <b>152</b> can be any type of processor known in the art that is suitable for the implementation. Host processor <b>152</b> is in communication with a network-on-chip (NOC) <b>154</b>. A NOC is a communication subsystem on an integrated circuit, typically between cores in a SoC. NOC's can span synchronous and asynchronous clock domains or use unclocked asynchronous logic. NOC technology applies networking theory and methods to on-chip communications and brings notable improvements over conventional bus and crossbar interconnections. NOC improves the scalability of SoCs and the power efficiency of complex SoCs compared to other designs. The wires and the links of the NOC are shared by many signals. A high level of parallelism is achieved because all links in the NOC can operate simultaneously on different data packets. Therefore, as the complexity of integrated subsystems keep growing, a NOC provides enhanced performance (such as throughput) and scalability in comparison with previous communication architectures (e.g., dedicated point-to-point signal wires, shared buses, or segmented buses with bridges). Connected to and in communication with NOC <b>154</b> is the memory processor <b>156</b>, SRAM <b>160</b> and a DRAM controller <b>162</b>. The DRAM controller <b>162</b> is used to operate and communicate with the DRAM (e.g., DRAM <b>106</b>). SRAM <b>160</b> is local RAM memory used by memory processor <b>156</b>. Memory processor <b>156</b> is used to run the FEP circuit and perform the various memory operations. Also in communication with the NOC are two PCIe Interfaces <b>164</b> and <b>166</b>. In the embodiment of <figref idref="DRAWINGS">FIG. 1B</figref>, the SSD controller will include two BEP circuits <b>112</b>; therefore there are two PCIe Interfaces <b>164</b>/<b>166</b>. Each PCIe Interface communicates with one of the BEP circuits <b>112</b>. In other embodiments, there can be more or less than two BEP circuits <b>112</b>; therefore, there can be more than two PCIe Interfaces.
<figref idref="DRAWINGS">FIG. 1C</figref> is a block diagram of one embodiment of the BEP circuit <b>112</b>. <figref idref="DRAWINGS">FIG. 1C</figref> shows a PCIe Interface <b>200</b> for communicating with the FEP circuit <b>110</b> (e.g., communicating with one of PCIe Interfaces <b>164</b> and <b>166</b> of <figref idref="DRAWINGS">FIG. 2</figref>). PCIe Interface <b>200</b> is in communication with two NOCs <b>202</b> and <b>204</b>. In one embodiment the two NOCs can be combined to one large NOC. Each NOC (<b>202</b>/<b>204</b>) is connected to SRAM (<b>230</b>/<b>260</b>), a buffer (<b>232</b>/<b>262</b>), processor (<b>220</b>/<b>250</b>), and a data path controller (<b>222</b>/<b>252</b>) via an XOR engine (<b>224</b>/<b>254</b>) and an ECC engine (<b>226</b>/<b>256</b>). The ECC engines <b>226</b>/<b>256</b> are used to perform error correction, as known in the art. The XOR engines <b>224</b>/<b>254</b> are used to XOR the data so that data can be combined and stored in a manner that can be recovered in case there is a programming error. Data path controller <b>22</b> is connected to an interface module for communicating via four channels with memory packages. Thus, the top NOC <b>202</b> is associated with an interface <b>228</b> for four channels for communicating with memory packages and the bottom NOC <b>204</b> is associated with an interface <b>258</b> for four additional channels for communicating with memory packages. Each interface <b>228</b>/<b>258</b> includes four Toggle Mode interfaces (TM Interface), four buffers and four schedulers. There is one scheduler, buffer and TM Interface for each of the channels. The processor can be any standard processor known in the art. The data path controllers <b>222</b>/<b>252</b> can be a processor, FPGA, microprocessor or other type of controller. The XOR engines <b>224</b>/<b>254</b> and ECC engines <b>226</b>/<b>256</b> are dedicated hardware circuits, known as hardware accelerators. In other embodiments, the XOR engines <b>224</b>/<b>254</b> and ECC engines <b>226</b>/<b>256</b> can be implemented in software. The scheduler, buffer, and TM Interfaces are hardware circuits.
<figref idref="DRAWINGS">FIG. 1D</figref> is a block diagram of one embodiment of a memory package <b>104</b> that includes a plurality of memory die <b>300</b> connected to a memory bus (data lines and chip enable lines) <b>294</b>. The memory bus <b>294</b> connects to a Toggle Mode Interface <b>296</b> for communicating with the TM Interface of a BEP circuit <b>112</b> (see e.g., <figref idref="DRAWINGS">FIG. 1C</figref>). In some embodiments, the memory package can include a small controller connected to the memory bus and the TM Interface. The memory package can have one or more memory die. In one embodiment, each memory package includes eight or 16 memory die; however, other numbers of memory die can also be implemented. The technology described herein is not limited to any particular number of memory die.
<figref idref="DRAWINGS">FIG. 2</figref> is a functional block diagram of one embodiment of a memory die <b>300</b>. Each of the one or more memory die <b>300</b> of <figref idref="DRAWINGS">FIG. 1D</figref> can be implemented as memory die <b>300</b> of <figref idref="DRAWINGS">FIG. 2</figref>. The components depicted in <figref idref="DRAWINGS">FIG. 2</figref> are electrical circuits. In one embodiment, each memory die <b>300</b> includes a memory structure <b>326</b>, control circuitry <b>310</b>, and read/write circuits <b>328</b>, all of which are electrical circuits. Memory structure <b>326</b> is addressable by word lines via a row decoder <b>324</b> and by bit lines via a column decoder <b>332</b>. The read/write circuits <b>328</b> include multiple sense blocks <b>350</b> including SB<b>1</b>, SB<b>2</b>, . . . , SBp (sensing circuitry) and allow a page (or multiple pages) of data in multiple memory cells to be read or programmed in parallel. In one embodiment, each sense block include a sense amplifier and a set of latches connected to the bit line. The latches store data to be written and/or data that has been read. The sense blocks include bit line drivers.
Commands and data are transferred between the controller and the memory die <b>300</b> via lines <b>318</b>. In one embodiment, memory die <b>300</b> includes a set of input and/or output (I/O) pins that connect to lines <b>318</b>.
Control circuitry <b>310</b> cooperates with the read/write circuits <b>328</b> to perform memory operations (e.g., write, read, erase, and others) on memory structure <b>326</b>. In one embodiment, control circuitry <b>310</b> includes a state machine <b>312</b>, an on-chip address decoder <b>314</b>, a power control circuit <b>316</b>, and a temperature detection circuit <b>315</b>. State machine <b>312</b> provides die-level control of memory operations. In one embodiment, state machine <b>312</b> is programmable by software. In other embodiments, state machine <b>312</b> does not use software and is completely implemented in hardware (e.g., electrical circuits). In some embodiments, state machine <b>312</b> can be replaced by a microcontroller or microprocessor. In one embodiment, control circuitry <b>310</b> includes buffers such as registers, ROM fuses and other storage devices for storing default values such as base voltages and other parameters.
The temperature detection circuit <b>315</b> is configured to measure temperature on the memory die <b>300</b>. The memory die <b>300</b> reports temperature information to the memory controller <b>102</b>. In some embodiments, the memory controller <b>102</b> is configured to regulate the temperature of the storage device <b>100</b>. Operating the storage device <b>100</b> at a temperature above a critical temperature may result in failure of the storage device <b>100</b> to retain data or otherwise operate properly. Therefore, to prevent that from happening, in embodiments that monitor temperature of the storage device <b>100</b>, or monitor temperature of one or more portions or components of the storage device <b>100</b> (e.g., using temperature detection circuit <b>315</b> on memory dies <b>300</b>), a threshold temperature that is below the critical temperature is used as threshold temperature. In some embodiments that measure temperature at more than one location within the storage device, e.g., by measuring temperature of two or more memory die <b>300</b>, the highest measured temperature of the two or more portions or components of the storage device is used as the measured temperature. In some other embodiments, an average or other combination of the measured temperatures of the two or more portions or components of the storage device <b>100</b> is used as the measured temperature.
The on-chip address decoder <b>314</b> provides an address interface between addresses used by controller <b>102</b> to the hardware address used by the decoders <b>324</b> and <b>332</b>. Power control module <b>316</b> controls the power and voltages supplied to the word lines and bit lines during memory operations. Power control module <b>316</b> may include charge pumps for creating voltages.
For purposes of this document, control circuitry <b>310</b>, alone or in combination with read/write circuits <b>328</b> and decoders <b>324</b>/<b>332</b>, comprise one or more control circuits for memory structure <b>326</b>. These one or more control circuits are electrical circuits that perform the functions described below in the flow charts and signal diagrams. In other embodiments, the one or more control circuits can consist only of controller <b>102</b>, which is an electrical circuit in combination with software, that performs the functions described below in the flow charts and signal diagrams. In another alternative, the one or more control circuits comprise controller <b>102</b> and control circuitry <b>310</b> performing the functions described below in the flow charts and signal diagrams. In another embodiment, the one or more control circuits comprise state machine <b>312</b> (or a microcontroller or microprocessor) alone or in combination with controller <b>102</b>.
In one embodiment, memory structure <b>326</b> comprises a monolithic three dimensional memory array of non-volatile memory cells in which multiple memory levels are formed above a single substrate, such as a wafer. 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 (or other type of) substrate. In one example, the non-volatile memory cells of memory structure <b>326</b> comprise vertical NAND strings with charge-trapping material such as described, for example, in U.S. Pat. No. 9,721,662, incorporated herein by reference in its entirety. In another embodiment, memory structure <b>326</b> comprises a two dimensional memory array of non-volatile memory cells. In one example, the non-volatile memory cells are NAND flash memory cells utilizing floating gates such as described, for example, in U.S. Pat. No. 9,082,502, incorporated herein by reference in its entirety. Other types of memory cells (e.g., NOR-type flash memory) can also be used.
The exact type of memory array architecture or memory cell included in memory structure <b>326</b> is not limited to the examples above. Many different types of memory array architectures or memory cell technologies can be used to form memory structure <b>326</b>. No particular non-volatile memory technology is required for purposes of the new claimed embodiments proposed herein. Other examples of suitable technologies for memory cells of the memory structure <b>326</b> include ReRAM memories, magnetoresistive memory (e.g., MRAM, Spin Transfer Torque MRAM, Spin Orbit Torque MRAM), phase change memory (e.g., PCM), and the like. Examples of suitable technologies for architectures of memory structure <b>326</b> include two dimensional arrays, three dimensional arrays, cross-point arrays, stacked two dimensional arrays, vertical bit line arrays, and the like.
One example of a ReRAM, or PCMRAM, cross point memory includes reversible resistance-switching elements arranged in cross point arrays accessed by X lines and Y lines (e.g., word lines and bit lines). In another embodiment, the memory cells may include conductive bridge memory elements. A conductive bridge memory element may also be referred to as a programmable metallization cell. A conductive bridge memory element may be used as a state change element based on the physical relocation of ions within a solid electrolyte. In some cases, a conductive bridge memory element may include two solid metal electrodes, one relatively inert (e.g., tungsten) and the other electrochemically active (e.g., silver or copper), with a thin film of the solid electrolyte between the two electrodes. As temperature increases, the mobility of the ions also increases causing the programming threshold for the conductive bridge memory cell to decrease. Thus, the conductive bridge memory element may have a wide range of programming thresholds over temperature.
Magnetoresistive memory (MRAM) stores data by magnetic storage elements. The elements are formed from two ferromagnetic plates, each of which can hold a magnetization, separated by a thin insulating layer. One of the two plates is a permanent magnet set to a particular polarity; the other plate's magnetization can be changed to match that of an external field to store memory. A memory device is built from a grid of such memory cells. In one embodiment for programming, each memory cell lies between a pair of write lines arranged at right angles to each other, parallel to the cell, one above and one below the cell. When current is passed through them, an induced magnetic field is created.
Phase change memory (PCM) exploits the unique behavior of chalcogenide glass. One embodiment uses a GeTe—Sb2Te3 super lattice to achieve non-thermal phase changes by simply changing the co-ordination state of the Germanium atoms with a laser pulse (or light pulse from another source). Therefore, the doses of programming are laser pulses. The memory cells can be inhibited by blocking the memory cells from receiving the light. Note that the use of “pulse” in this document does not require a square pulse, but includes a (continuous or non-continuous) vibration or burst of sound, current, voltage light, or other wave.
A person of ordinary skill in the art will recognize that the technology described herein is not limited to a single specific memory structure, but covers many relevant memory structures within the spirit and scope of the technology as described herein and as understood by one of ordinary skill in the art.
<figref idref="DRAWINGS">FIG. 3</figref> is a diagram of one embodiment of a memory controller <b>102</b>, showing aspects of an integrated solution for controlling power usage, operating temperature, and clock frequencies. There are three main control blocks, in one embodiment. The power control block <b>402</b> controls (or regulates) power usage of the storage device <b>100</b>. The thermal control block <b>404</b> controls (or regulates) operating temperature of the storage device <b>100</b>. The clock dynamic frequency scaling (DFS) control block <b>406</b> controls (or regulates) clock frequencies of various clocked circuitry, such as processors. The DFS control block <b>406</b> may also be referred to as a clock frequency control block. Each of these three blocks includes a closed control loop, in one embodiment. The operation of each control block impacts the other two, in some embodiments.
The thermal control block <b>404</b> (also referred to as a temperature control block) receives one or more temperature measurements from one or more temperature detection circuits <b>315</b>. In some embodiments, each memory die <b>300</b> has its own temperature detection circuit <b>315</b>. In some embodiments, each memory package <b>104</b> reports one or more temperatures to the thermal control block <b>404</b>. For example, a memory package <b>104</b> could report a temperature for each memory die <b>300</b>, the highest temperature of any memory die <b>300</b>, an average temperature of its memory die <b>300</b>, etc. The storage device <b>100</b> may also have one or more temperature detection circuits <b>315</b> outside of the memory packages <b>104</b>. For example, the FEP <b>110</b> and/or BEP <b>112</b> could have a temperature detection circuit <b>315</b>.
Based on the one or more temperature measurements, the thermal control block <b>404</b> may take action to reduce the operating temperature. For example, if the highest reported temperature is above a threshold, then the thermal control block <b>404</b> takes an action to reduce operating temperature. Otherwise, the thermal control block <b>404</b> does not take an action. In one embodiment, the thermal control block <b>404</b> inputs a default target power. The default target power is a maximum allowed power, in one embodiment. The default is supplied by the user, in one embodiment. The thermal control block <b>404</b> outputs a target power level to the power control block <b>402</b>. If the thermal control block <b>404</b> is not taking any action to reduce the operating temperature, then the thermal control block <b>404</b> simply passes through the default target power, in an embodiment. If the thermal control block <b>404</b> is taking action to reduce the operating temperature, then the target power level that is output by the thermal control block <b>404</b> is lower than the default target power, in an embodiment. A consequence is that the power control block <b>402</b> will regulate power usage to this lower level, which will reduce operating temperature.
The power control block <b>402</b> inputs a power measurement from the power usage monitor <b>352</b>. The power usage monitor <b>352</b> typically provides an aggregate power usage for the storage device <b>100</b>. This might be an average power usage over a recent interval, a peak power usage, etc. Optionally, the power usage monitor <b>352</b> could provide power usage information for components within the storage device, such as power usage of each memory package <b>104</b>. In one embodiment, the power control block <b>402</b> regulates power usage to operate the storage device <b>100</b> at the target power level, providing that there is a sufficient workload (e.g., memory operations) to justify the power usage. In the event that the workload is lower (such that operating at the target power level is not needed to satisfy the workload), it is not required that the storage device <b>100</b> operate at the target power level (in this case the storage device <b>100</b> may operate below the target power level).
The power control block <b>402</b> outputs power credits in order to regulate power usage, in an embodiment. The term “power credit,” as defined herein, is a right to use an amount of power specified by the power credit. In some embodiments, the power control block <b>402</b> manages the size of a power credit pool. For example, the power control block <b>402</b> may add more power credits to the pool in response to the target power increasing, or remove power credits from the pool in response to the target power decreasing. The number of power credits in the pool tends to remain fairly steady under heavy loading due to the fact that the amount of active power remains mostly constant, in an embodiment. However, during idle, the size of the credit pool may tend to drift higher, since the power is below the limit. This upward drift can be limited by inhibiting increases to the pool when idle. The idle, or almost idle condition can be detected from the usage of power credits. In idle, no credits are being used.
In an embodiment, the power control block <b>402</b> allocates power credits individually to each BEP <b>112</b>. In an embodiment, the power control block <b>402</b> allocates power credits individually to processors within each BEP <b>112</b>. For example, with reference to <figref idref="DRAWINGS">FIG. 1C</figref>, the power control block <b>402</b> may allocate power credits individually to processor <b>220</b> and to processor <b>250</b>. Each processor <b>220</b>, <b>250</b> may determine how to allocate the power credits among the memory packages under control of the processor. For example, processor <b>220</b> may determine how to allocate its power credits to packages connected to interface <b>228</b>, whereas processor <b>250</b> may determine how to allocate its power credits to packages connected to interface <b>258</b>.
The power credits could be divided equally among the BEP <b>112</b>, but that is not a requirement. A power credit may correspond to a certain amount of power that may be used to perform a memory operation. When a BEP <b>112</b> and its associated memory package <b>104</b> are allocated certain amount of power credits, the BEP <b>112</b> and memory package <b>104</b> can use an amount of power corresponding to the allocated power credits, for example, to execute memory commands. In some embodiments, the schedulers (see interfaces <b>228</b>, <b>258</b>) determine when to send commands to the packages based on whether there are sufficient power credits. By slowing down the rate at which commands are executed in the memory packages <b>104</b>, power consumption can be reduced. However, this may come at the expense of a command backlog. The BEPs <b>112</b> each tabulate a command backlog (also referred to as “backpressure”) and report that to the FEP <b>110</b>.
The power credits usage per command type information <b>424</b> in a BEP <b>112</b> indicates how many power credits are needed to perform certain types of memory operations, in an embodiment. In some embodiments, power credits usage per command type information <b>424</b> stores information based on different command types (e.g., read commands, write commands, erase commands). In some embodiments, the information stored for each type of command includes an average power credit value and a peak power credit value. For example, in some embodiments, power credits usage per command type information <b>424</b> includes a table having information (e.g., in a record) for each of a several command types. In some embodiments, the table includes a single power credit usage value (e.g., “average” power credit usage) for each command type, while in other embodiments the table includes two distinct power credit usage values (e.g., average power credit usage, and peak power credit usage) for each command type. In some embodiments, each type of command is assigned a different number of power credits.
The command execution module <b>422</b> in a BEP <b>112</b> is configured to determine when to send commands to a memory package based on the number of power credits allocated to either the BEP <b>112</b> or the memory package, as well as the power credits usage per command type information <b>424</b>. For example, with reference to <figref idref="DRAWINGS">FIG. 1C</figref>, interfaces <b>228</b>/<b>258</b> may contain one or more command queues. These command queues may contain read, write, and erase commands, for example. The interfaces <b>228</b>/<b>258</b> may determine when to send queued commands to the memory packages <b>104</b> based on allocated power credits and power credits usage per command type information <b>424</b>. For example, the interfaces <b>228</b>/<b>258</b> may delay the sending of commands to the memory packages <b>104</b> until there are sufficient power credits in view of the power credits usage per command type information <b>424</b>. The BEP <b>112</b> maintains one or more power credit pools, in an embodiment. Power credits are added to the one or more power credit pools as they are received from the FEP <b>110</b>, in one embodiment. Power credits are removed from the one or more power credit pools, as commands are sent to a memory package <b>104</b>, in an embodiment.
In one embodiment, the BEP <b>112</b> essentially “borrows” the power credits in order to execute memory operations in the packages <b>104</b>. For example, the command execution module <b>422</b> removes a sufficient number of power credits from a credit pool when a command (e.g., read, write, erase) is sent to a memory package <b>104</b>. When the command completes, the command execution module <b>422</b> returns the power credits to the credit pool, in an embodiment.
The backlog determination module <b>420</b> in a BEP <b>112</b> determines a backlog of commands in that BEP <b>112</b>. The backlog determination module <b>420</b> determines the backlog based on commands that are on command queues waiting to be sent to a memory package <b>104</b>. For example, the interfaces <b>228</b>/<b>258</b> may have commands waiting to be sent to a memory package <b>104</b>. The backlog determination module <b>420</b> may determine a backlog for each memory package <b>104</b>, an average backlog for the memory package <b>104</b> attached to a BEP <b>112</b>, a total backlog for the BEP <b>112</b>, etc. For example, with respect to <figref idref="DRAWINGS">FIG. 1C</figref>, interface <b>228</b> shows four channels (each channel associated with a “scheduler”, a “buffer” and a “TM interface”). The backlog determination module <b>420</b> could determine a backlog for each of these four channels. Likewise, the backlog determination module <b>420</b> could determine a backlog for each of these four channels connected to interface <b>258</b>. The backlog determination module <b>420</b> may report each of the backlogs, or a composite (e.g., total, average per channel) to the FEP <b>110</b>.
The clock DFS control <b>406</b> inputs the command backlog (or backpressure) from each BEP <b>112</b> and determines whether to adjust clock frequencies based on the command backlog, in an embodiment. The DFS block <b>406</b> may use inputs other than command backlog as a feedback. In another embodiment, the DFS block <b>406</b> inputs a size of the power credit pool as a feedback measurement.
The clock DFS control <b>406</b> outputs one or more signals to a clock generator <b>414</b>, which either generates or regulates a clock signal (or “clock”) having a target frequency. A clock signal, as the term is defined herein, is a signal that oscillates between a high and low state. While many clock signals have a 50% duty cycle, a clock signal is not required to have a 50% duty cycle. Various techniques may be used to alter the clock frequencies. Some clock signals have pulses that occur at regular intervals, but the pulses are not required to occur at regular intervals. In one embodiment, a clock frequency can be decreased by suppressing some of the clock pulses (in which case the pulses do not necessarily occur a regular intervals). For example, by suppressing every third clock pulse, the clock frequency can be decreased. In one embodiment, the clock generator has a sporachronous clock generator, which is able to alter a clock frequency by suppressing certain clock pulses. However, suppressing clock pulses is not required to alter clock frequencies.
The clock frequencies are clock frequencies of clocked circuitry, such as one or more processors in the storage device <b>100</b>. The term “clocked circuitry,” as used herein, refers to any electrical circuitry that uses a clock signal to coordinate activity. As noted above, a processor (e.g., micro-processor) is one example of clocked circuitry. Other circuitry, such as a state machine, may use a clock signal to coordinate activity. The clock signals are used by one or more processors in the FEP <b>110</b> and one or more processors in the BEP <b>112</b>, in one embodiment. For example, the clock frequency of memory processor <b>158</b> and/or host processor <b>152</b> may be set by the clock DFS control <b>406</b>. Note that the functionality of the memory processor <b>158</b>, host processor <b>152</b>, and other components in the FEP <b>110</b> could be implemented on the same processor, whose clock frequency is controlled by the clock DFS control <b>406</b>, in an embodiment. The clock DFS control <b>406</b> may also control the clock frequency of processors <b>220</b>, <b>250</b> in BEP <b>112</b>. Note that the functionality of the processors <b>220</b>, <b>250</b>, and other components in the BEP <b>112</b> could be implemented on the same processor, whose clock frequency is controlled by the clock DFS control <b>406</b>, in an embodiment.
In some embodiments, the bandwidths of the three control loops (associated with the three control blocks <b>402</b>, <b>404</b>, <b>406</b>) are different from each other to maintain stability. In one embodiment, the power control loop is the fastest of the three control loops (i.e., has the largest bandwidth), and the thermal control loop is the slowest of the three control loops (i.e., has the least bandwidth).
In some embodiments, the control blocks <b>402</b>, <b>404</b>, <b>406</b> have different update rates. The update rate refers to the rate at which a control block outputs a new (updated) control signal. In one embodiment, the power control loop has the fastest update rate of the three control loops, and the thermal control loop has the slowest update rate of the three control loops. In one embodiment, the update rate of the thermal control block <b>404</b> is about 2.5 seconds, the update rate of the DFS control block is about 500 milliseconds (ms), and the update rate of the power control block <b>402</b> is about 100 ms. The update rate of each control block could be faster or slower. This value of the update rate may be dependent on how long it takes for changes in the control output to be reflected in the measurement feedback. In one embodiment, the update period is established by measuring or estimating how long it takes for a large change in the control output to be realized in the measurement feedback. The update period is set at about two times that time, in an embodiment.
<figref idref="DRAWINGS">FIG. 4</figref> depicts further details of one embodiment of power control block <b>402</b>. The power control block <b>402</b> has a reference (REF) input and a feedback (FB) input, as well as a control output. The power state table <b>450</b> specifies a maximum allowed power usage for a set of power states, in an embodiment. In one embodiment, the user is allowed to specify the power state. For example, the host system <b>120</b> sends the power state to the memory controller <b>102</b>, in an embodiment. The “Max Power” that is input from the power state table <b>450</b> to the REF input refers to a maximum power that the storage device <b>100</b> is allowed to consume, in an embodiment. This could be a maximum peak power, a maximum average power over some time period, etc.
The feedback (FB) input receives a feedback signal (e.g., power measurement) from, for example, power usage monitor <b>352</b>. The power control block <b>402</b> issues power credits in order to control the power usage of the storage device <b>100</b>. The control action is to increase or decrease the size of the credit pool to correct the error between the measured power (at the FB input) and the target power (at the REF input), in an embodiment. The power control block <b>402</b> implements a control loop, in an embodiment. The control loop is referred to as a power control loop, in an embodiment. The control loop is a closed control loop, in an embodiment. Further details of controlling power usage in a non-volatile storage device based on allocation of power credits are described in U.S. Published Patent Application 2018/0335977, entitled “Distributed Power Management for Non-Volatile Memory Controllers” by Tidwell et al., published on Nov. 22, 2018; and U.S. Published Patent Application 2018/0335978, entitled “Distributed Power Management for Non-Volatile Memory Controllers using Average and Peak Power Credits Allocated to Memory Channels” by Tidwell et al., published on Nov. 22, 2018; both said Patent Applications are hereby incorporated by reference for all purposes.
<figref idref="DRAWINGS">FIG. 5</figref> depicts further details of one embodiment of thermal control block <b>404</b>. The thermal control block <b>404</b> has a reference (REF) input and a feedback (FB) input, as well as a control output. The feedback (FB) input receives a feedback signal (e.g., temperature measurement) from, for example, one or more temperature detection circuits <b>315</b>. In one embodiment, the feedback (FB) input receives a single value that represents the temperature measurements from multiple temperature detection circuits <b>315</b> within the storage device <b>100</b>. This may be, for example, a peak temperature, an average temperature, etc. The thermal control block <b>404</b> outputs a power state in order to control the operating temperature of the storage device <b>100</b>. The control action is to increase or decrease the power state to correct the error between the measured temperature (at the FB input) and the temperature target (at the REF input), in an embodiment. The power state that is output from thermal control block <b>404</b> is used as the power state input to the power state table <b>450</b> (see <figref idref="DRAWINGS">FIG. 4</figref>), in an embodiment. Thus, the thermal control block <b>404</b> regulates temperature by regulating power usage, in an embodiment.
In one embodiment, when the temperature threshold at the REF input is exceeded, the thermal control block <b>404</b> outputs a lower power state to the power control block <b>402</b>. The host system <b>120</b> selected power state is the nominal power state, and is output from the thermal control block <b>404</b> when thermal throttling is not in effect. The power control block <b>402</b> responds by reducing the size of the credit pool, thus reducing system power which results in lower temperature, in an embodiment. The thermal control block <b>404</b> implements a control loop, in an embodiment. The control loop is referred to as a thermal control loop, in an embodiment. The control loop is a closed control loop, in an embodiment. In one embodiment, the closed control loop of the power control block <b>402</b> is nested within the closed control loop of the thermal control block <b>404</b>. The thermal control loop has less bandwidth than the power control loop order to maintain stability, in one embodiment.
<figref idref="DRAWINGS">FIG. 6</figref> depicts further details of one embodiment of DFS control block <b>406</b>. The DFS control block <b>406</b> has a reference (REF) input and a feedback (FB) input, as well as a control output. The feedback (FB) input receives a feedback signal (e.g., one or more backlog measurements) from, for example, BEPs <b>112</b>. The feedback signal of the DFS block <b>406</b> is not required to be command backlog as a feedback. In another embodiment, the feedback signal at the FB input is a size of the power credit pool.
The DFS control block <b>406</b> outputs one or more front end (FE) clock frequencies and one or more back end (BE) clock frequencies, in an embodiment. For example, the frequency of memory processor <b>158</b> and/or host processor <b>152</b> may be set by the clock DFS control <b>406</b>. Note that the functionality of the memory processor <b>158</b>, host processor <b>152</b>, and other components in the FEP <b>110</b> could be implemented on the same processor, whose frequency is controlled by the clock DFS control <b>406</b>, in an embodiment. The clock DFS control <b>406</b> may also control clock frequency of processors <b>220</b>, <b>250</b> in BEP <b>112</b>. Note that the functionality of the processors <b>220</b>, <b>250</b>, and other components in the BEP <b>112</b> could be implemented on the same processor, whose frequency is controlled by the clock DFS control <b>406</b>, in an embodiment.
The control action is to increase or decrease the clock frequencies to correct the error between the backlog (at the FB input) and the backlog threshold (at the REF input), in an embodiment. The output of the DFS control <b>406</b> is sent to a clock generator <b>414</b> in the storage device <b>100</b>, in one embodiment. Various techniques may be used to alter the clock frequencies. In one embodiment, a clock frequency can be decreased by suppressing clock pulses. For example, by suppressing every third clock pulse, the clock frequency can be decreased. In one embodiment, the storage device <b>100</b> has a sporachronous clock generator, which is able to alter a clock frequency by suppressing certain clock pulses. However, suppressing clock pulses is not required to alter clock frequencies.
The DFS control block <b>406</b> implements a control loop, in an embodiment. The control loop is referred to as a DFS control loop, in an embodiment. The control loop is a closed control loop, in an embodiment. If the command backlog exceeds a backlog threshold, the clock frequencies are reduced, in an embodiment. Reduction of the clock frequencies saves power, which is reclaimed to reduce the performance degradation due to command throttling. If the command backlog does not exceed the backlog threshold, the clock frequencies may be increased in order to allow the FEP <b>110</b> and BEP <b>112</b> to perform more command processing. In one embodiment, the processors in the FEP <b>110</b> and/or BEP <b>112</b> are run just fast enough to not be a bottleneck. Further details of controlling command backlog in a non-volatile storage device based on clock frequencies are described in U.S. Published Patent Application 2019/0094938, entitled “Reactive Power Management for Non-Volatile Memory Controllers” by Tidwell et al., published on Mar. 28, 2019; said Patent Application is hereby incorporated by reference for all purposes.
<figref idref="DRAWINGS">FIG. 7</figref> is a flowchart of one embodiment of a process <b>700</b> of operating a non-volatile storage device <b>100</b>. The non-volatile storage device <b>100</b> has non-volatile memory cells, which may be in a memory structure <b>326</b> on a memory die <b>300</b>. In one embodiment, process <b>700</b> is executed by the controller <b>102</b> depicted in <figref idref="DRAWINGS">FIG. 3</figref>; however, process <b>700</b> is not limited to that architecture.
Step <b>702</b> includes operating clocked circuity to process commands to access non-volatile memory cells in the storage device <b>100</b>. The memory cells are in memory package <b>104</b>, in an embodiment. The clocked circuity may include one or more processors. The one or more processors are in the FEP <b>110</b> and/or one or more BEP <b>112</b>, in an embodiment. There are one or more processors in the FEP <b>110</b> in order to implement at least some of the functionality of the FEP <b>110</b>, in an embodiment. There are one or more processors in each of one or more BEP <b>112</b> in order to implement at least some of functionality of the BEP <b>112</b>, in an embodiment.
Step <b>704</b> includes regulating power usage in the non-volatile storage device <b>100</b> based on a target power level while operating the one or more processors. Step <b>704</b> includes the power control block <b>402</b> regulating power usage, in an embodiment. In one embodiment, the power control block <b>402</b> has a FB input that receives a power measurement from power usage monitor <b>352</b>. The power control block <b>402</b> limits the power usage to a target power that is received as a feedback signal at the REF input (see <figref idref="DRAWINGS">FIG. 4</figref>), in an embodiment. Step <b>704</b> includes issuing power credits (by, for example, the power control block <b>402</b>) in order to regulate the power usage, in an embodiment. Step <b>704</b> includes delaying processing of commands in response to insufficient power credits, in one embodiment.
Step <b>706</b> includes limiting operating temperature of the non-volatile storage device <b>100</b> to below a threshold temperature while operating the one or more processors. Step <b>706</b> includes the temperature control block <b>404</b> regulating the operating temperature, in an embodiment. Step <b>706</b> includes establishing the target power level in order to limit the operating temperature of the non-volatile storage device <b>100</b> to below the threshold temperature. The target power level is input as a reference signal to the power control block <b>402</b> which not only regulates power, but has the net impact of limiting the operating temperature of the non-volatile storage device <b>100</b>.
Step <b>708</b> includes controlling one or more clock frequencies of the one or more processors in response to a backlog of the commands. In one embodiment, the one or more clock frequencies are reduced in response to an increase in the backlog. As will be discussed below, the reduction in clock frequency saves power, which is reclaimed to reduce the command backlog, in an embodiment. Step <b>708</b> includes the DFS control block <b>406</b> controlling the one or more clock frequencies, in an embodiment.
In some embodiments of process <b>700</b>, in order to maintain stability, closed control loops for performing power regulation in step <b>704</b>, thermal regulation in step <b>706</b>, and DFS regulation in step <b>708</b> have different bandwidths. In one embodiment, a power control loop has a larger bandwidth than a DFS control loop, and both the power control loop and the DFS control loops have larger bandwidths than a thermal control loop.
In some embodiment, the response of the control loops (e.g., power, temperature DFS) is specified by a set of parameters that can be set and changed according to simple rules of thumb in order to tune the response based on measured performance. One embodiment of these parameters are shown the table <b>800</b> shown in <figref idref="DRAWINGS">FIG. 8</figref>. The top row of the table <b>800</b> lists three control types (power, temperature, and DFS). These correspond to the power control block <b>402</b>, thermal control block <b>404</b>, and DFS control block <b>406</b>, in one embodiment. The second row indicates a measurement input of one embodiment of each of the control types. The third row indicates a control output of one embodiment of each of the control types. The discussion above in connection with <figref idref="DRAWINGS">FIGS. 3-6</figref> has provided some details of the control types, measurement inputs, and control outputs.
The row labeled, “open/closed loop” indicates that in some embodiments, the power control may be either open loop or closed loop, and the DFS control may be either open loop or closed loop. The “control limit max” is the maximum value that the control output can take. For power, a field of the power state table <b>450</b> provides this value. The row labeled “control limit max” indicates that the thermal control block <b>404</b> inputs the user-specified power state, which the thermal control block <b>404</b> may decrease but not increase, in an embodiment. For DFS, the control limit max are the maximum clock frequencies in the FEP <b>110</b> and BEP <b>112</b>.
The “control limit min” is the minimum value that the control output can take. For power, this represents the minimum number of power credits for the memory packages <b>104</b> to remain operational. For thermal, this is the lowest operational power state (which is listed in the power state table <b>450</b>). For DFS this is the minimum clock frequencies for which the FEP <b>110</b> and BEP <b>112</b> remain operational.
The “target” is the convergence target for the measurement input. There may be other parameters (not shown in the table) such as a “sample period,” which is the period of sampling of the measured inputs. Another possible parameter is an “update period,” which is the period of updating the control output. Another possible parameter is a “step size”, which is the increment in the control output. In one embodiment, the step size may be derived by estimating or measuring the required change in the control output to halt (e.g., keep steady) the highest slope change in the measurement feedback. Then, that change may be divided by, for example, four to use as the step size. In other words, the step size may be selected to insure that any change in the controlled element can be halted in four steps or less. Four steps or less is one example, a different number of steps could be used. Another possible parameter is a “filter factor,” which specifies the number of most recent measurement samples to be averaged for feedback to the controller. The filter factor may be used when, for example, a sensor produces more samples than are needed for the feedback for the controller.
The last five rows in the table <b>800</b> pertain to zone-specific parameters. The “up correction” means the correction (if any) that is applied when the measured value (e.g., power, temperature, command backlog) is getting larger. The “down correction” means the correction (if any) that is applied when the measured value is getting smaller. Note that both up correction and down correction may be disabled. The determination of whether the measured value is going up or down is done by comparing it with the measurement at the previous correction time, in an embodiment. Having different values for upward and downward correction allows the response to be made more aggressive in one direction over the other, and facilitates correction based on the differential or slope of the feedback measurement. For example, for stability of thermal control, it may be beneficial to step to lower power only when the temperature is increasing, which has a stabilizing effect on the correction. Note that table <b>800</b> shows only one zone for compactness. There may be three or more zones, in some embodiments. The zone-specific parameters will be discussed in more detail with respect to <figref idref="DRAWINGS">FIGS. 9 and 10</figref>.
<figref idref="DRAWINGS">FIG. 9</figref> is a diagram that illustrates an embodiment of correction steps based on an error trend. Curve <b>902</b> represents the value of a feedback measurement (e.g., power, temperature) over time. Thus, the vertical axis is labeled as “Watts/Degrees Celsius” to indicate that the axis represents Watts or, alternatively, degrees Celsius, depending on whether power or temperature is being measured. The dotted curve <b>904</b> represents a possible overshoot of the curve <b>902</b>. In this embodiment, there are three zones. Zone 2 is referred to as a “dead zone,” in which no corrections are made, in one embodiment. In one embodiment, the target is in the middle of the dead zone. However, if there is a hard upper limit to the target (e.g., a critical temperature), then the dead zone may be set such that there is considerable headroom above the target.
The upper and lower bounds of Zone 2 may be defined by a table such as table <b>800</b>. The upper and lower bounds could be defined as a percentage of the target. For example, the upper and lower bounds of Zone 2 are a percentage of the target temperature, in an embodiment. The upper and lower bounds of Zone 2 are a percentage of the target power, in an embodiment.
Zone 1 is defined as the region below the dead zone, and Zone 3 is defined as the region above the dead zone, in this embodiment. <figref idref="DRAWINGS">FIG. 9</figref> highlights a portion of curve <b>902</b> that is in Zone 3 to emphasize that when the feedback measurement (e.g., power, temperature) is in Zone 3 and trending downward no corrective step is performed, in one embodiment. In this case, the error (e.g., difference between curve <b>902</b> and a target in the dead zone) is decreasing. This helps to prevent the feedback measurement (e.g., power, temperature) to not overshoot zone 2 (and end up in zone 1). In contrast, when the feedback measurement (e.g., power, temperature) is in Zone 3 and trending upward a corrective step is performed.
<figref idref="DRAWINGS">FIG. 10</figref> is a diagram that illustrates an embodiment in which there are five zones. In this embodiment, a different set of parameters may be used for each of the five zones. Zone 3 is referred to as a “dead zone,” in which no corrections are made, in one embodiment. The target is in the middle of Zone 3. The upper and lower bounds of Zone 2 and Zone 4 are defined as a percentage of the target, in one embodiment. Zone 1 is defined as anything below Zone 2, and Zone 5 is defined as anything above Zone 4, in an embodiment. The corrections may be more aggressive in Zone 1 than in Zone 2 in order to help converge to the target faster, while not overshooting the target (or with a minimum of overshoot). Likewise, the corrections may be more aggressive in Zone 5 than in Zone 4 in order to help converge to the target faster, while not overshooting the target (or with a minimum of overshoot).
In some embodiments, correction is based on estimated time of arrival (ETA). ETA refers to the number of correction periods before the measured feedback is estimated to reach the target value. ETA is a method of doing correction based on a trajectory of the error differential relative to a curve. In some embodiments, pre-emptive corrective action is taken based on the ETA relative to an ETA factor. This allows a steep rise, with a fast roll off near the target. This also facilitates fast lock with a “smooth landing,” providing control that both reaches the target quickly and has small overshoot. Note that these are characteristics which are a trade off with a conventional control loop. The ETA factor (along with the step sizes) sets the sharpness of the correction curve.
<figref idref="DRAWINGS">FIG. 11</figref> illustrates a glide path that relates to an embodiment that uses an ETA factor to establish the outputs of one or more of the power control block <b>402</b>, thermal control block <b>404</b>, and/or DFS control block <b>406</b>. In one embodiment, a glide path is used in a storage device <b>100</b> having a power control loop (e.g., power control block <b>402</b>), a thermal control loop (e.g., thermal control block <b>404</b>), and a DFS control loop (e.g., DFS control block <b>406</b>. However, the glide path may be used in a storage device <b>100</b> without all three of these control loops. Even if the storage device <b>100</b> has more than one such control loop, the glide path is not required to be used in all control loops. With respect to <figref idref="DRAWINGS">FIG. 11</figref>, the glide path could be used in any combination of the control blocks <b>402</b>, <b>404</b>, <b>406</b>.
Glide paths <b>1102</b>, <b>1104</b>, <b>1106</b> correspond to three different ETA factors. Note that the slope of these glide paths decreases as the curve gets closer to the target. These three glide paths <b>1102</b>, <b>1104</b>, <b>1106</b> approach the target from beneath. All three ETA factors are non-zero and positive, in one embodiment. In one embodiment, glide path <b>1102</b> has the smallest ETA factor of the three, and glide path <b>1106</b> has the largest ETA factor of the three. As noted above, ETA factor is the number of correction periods before the measurement will reach the target. Glide paths <b>1112</b>, <b>1114</b>, <b>1116</b> correspond to three different ETA factors. These three glide paths <b>1112</b>, <b>1114</b>, <b>1116</b> approach the target from above. All three ETA factors are non-zero and positive, in one embodiment. In one embodiment, glide path <b>1112</b> has the smallest ETA factor of the three, and glide path <b>1116</b> has the largest ETA factor of the three.
<figref idref="DRAWINGS">FIG. 12</figref> illustrates how embodiments of using the ETA factor to achieve a glide path compares to some conventional correction responses. Curve <b>1202</b> represents one embodiment of a glide path. Curve <b>1204</b> represents a conventional highly underdamped response. Curve <b>1206</b> represents a conventional underdamped response. Curve <b>1208</b> represents a critically damped response.
In one embodiment no correction is applied until the measurement is close to the target, which is represented by the glide path curve <b>1202</b> rapidly approaching the target until box <b>1210</b> is reached. When the target crossing is imminent, the control kicks in strongly to produce a “soft landing”, in an embodiment. This is represented by the substantial change in direction of glide path curve <b>1202</b> just before it reaches the target. When the error is small, the control action is limited to stabilize at the target. This is represented by the glide path curve <b>1202</b> having a path that closely follows the target after it crosses the target.
<figref idref="DRAWINGS">FIG. 13</figref> is flowchart of one embodiment of a process <b>1300</b> for taking corrective action based on zone-specific parameters. The process <b>1300</b> is performed by the power control block <b>402</b>, in one embodiment. The process <b>1300</b> is performed by the thermal control block <b>404</b>, in one embodiment. The process <b>1300</b> is performed by the DFS control block <b>406</b>, in one embodiment. In some embodiments, the power control block <b>402</b>, the thermal control block <b>404</b>, and the DFS control block <b>406</b> perform the process <b>1300</b> in parallel, for their respective control loops. However, it is not required that all three of the control blocks (<b>402</b>, <b>404</b>, <b>406</b>) perform process <b>1300</b> in parallel.
Note that process <b>1300</b> is initiated in response to receiving the latest feedback measurement, in an embodiment. Step <b>1302</b> includes accessing the feedback measurement. In one embodiment, the feedback measurement is power usage of the storage device. Power usage monitor <b>352</b> may provide the power measurement. In one embodiment, the feedback measurement is an operating temperature of the storage device. One or more temperature detection circuits <b>315</b> may provide the temperature measurement. In one embodiment, the feedback measurement is a command backlog of the storage device. One or more BEPs <b>112</b> provide the command backlog(s) in an embodiment.
Step <b>1304</b> includes accessing parameters for the zone corresponding to this feedback measurement. For example, with respect to <figref idref="DRAWINGS">FIG. 9</figref>, a determination is made as to which of the three zones the measurement fall into. With respect to <figref idref="DRAWINGS">FIG. 10</figref>, a determination is made as to which of the five zones the feedback measurement falls into. A different number of zones could be used other than three or five. The parameters are accessed from a table such as the table <b>800</b>. Steps <b>1306</b>-<b>1320</b> describe correction steps that may be applied. One of the parameters is a step size, in one embodiment. The step size may vary depending on the zone. For example, the step size in zones 1 and 5 may be a full unit, with the step size in zones 2 and 4 being a half unit (with no step in zone 3). In some embodiment, if the error is outside of the dead zone AND increasing in magnitude, a step change is made in the opposite direction. The corrective action taken is function of the error magnitude and the error derivative, in an embodiment. The derivative may be calculated by storing the feedback value for the last time step and subtracting it from the current time step.
Step <b>1306</b> is a determination of whether an ETA is enabled. In one embodiment, ETA is enabled if an ETA factor is non-zero. If ETA is enabled, a determination is made in step <b>1308</b> of whether a feedback measurement (e.g., temperature, power, command backlog) is estimated to cross the target within an ETA factor number of periods. This estimate is made by determining the current slope of the feedback measurement, and determining how may update periods it will take the measurement to cross the target. As discussed above, the ETA factor is a number of periods. For example, if the ETA factor is four and it is estimated that the feedback measurement to cross the target in four or fewer periods, then pre-emptive correction is performed in step <b>1310</b>.
The pre-emptive correction, in step <b>1310</b>, includes taking corrective measures to reduce the slope of the measurement. For example, the pre-emptive correction may result in one of the measurement curves <b>1102</b>, <b>1104</b>, <b>1106</b>, <b>1112</b>, <b>1114</b>, <b>1116</b> in <figref idref="DRAWINGS">FIG. 11</figref>. Thus, the pre-emptive correction may provide a “soft landing” at the target. The corrective action is function of the error magnitude and the error derivative, in an embodiment. After performing ETA correction, the process ends.
If ETA is not enabled (step <b>1306</b>=no) or the is not estimated to cross the target within the ETA factor number of periods, then the process takes action on whether the trend is up or down. Note that if ETA is enabled, then ETA is typically performed when the error measurement is lower. Thus, steps <b>1312</b>-<b>1320</b> may cover situations in which the error measurement is higher (assuming ETA is enabled).
Step <b>1312</b> is a determination of whether the trend in the measurement is up or down. If the trend is up, then a determination is made whether an up correction factor is non-zero, in step <b>1314</b>. If so, then up-correction is performed in step <b>1316</b>. Otherwise, the process ends. If the trend is down, then a determination is made whether a down-correction factor is non-zero, in step <b>1318</b>. If so, then down-correction is performed in step <b>1320</b>. Otherwise, the process ends. For both the up-correction and the down-correction, the factors may have different non-zero values for different zones, wherein a different of correction may be performed for different zones.
<figref idref="DRAWINGS">FIG. 14</figref> shows how temperature control, power control and DFS control work together, in one embodiment. <figref idref="DRAWINGS">FIG. 14</figref> also illustrates the bandwidth differences between the temperature control loop, the power control loop and DFS control loop, in one embodiment. Curve <b>1402</b> shows the operating temperature of the storage device <b>100</b> over time. The operating temperature is controlled by a temperature control loop, in one embodiment. Curve <b>1404</b> shows a target power usage of the storage device <b>100</b> over time. Curve <b>1406</b> shows actual power usage of the storage device <b>100</b> over time. The actual power usage is controlled by a power control loop, in one embodiment. Curve <b>1408</b> shows clock frequency over time. The clock is controlled by a DFS control loop, in one embodiment. Curve <b>1402</b> indicates that the temperature control loop has the lowest bandwidth of the three control loops, in one embodiment. Curve <b>1406</b> indicates that the power control loop has the highest bandwidth of the three control loops, in one embodiment.
<figref idref="DRAWINGS">FIG. 15</figref> shows further details of how temperature control, power control and DFS control work together, in one embodiment. Curve <b>1502</b> shows a workload over time. Curve <b>1502</b> indicates a significant step up in the workload. The other curves indicate how the storage device <b>100</b> reacts to the step up in workload. Curve <b>1504</b> the power consumption for the storage device <b>100</b>, relative to a target power level. The target power consumption level is shown in dashed lines. Note that the target power consumption for the storage device does not change during this time period.
Curve <b>1506</b> shows how power credits are changed over time by the power control block <b>402</b>. There is a dashed line labeled target credits. In this example, the power credits initially decrease in response to the added workload. However, the storage device <b>100</b> is able to increase the power credits, as will be described below.
Curve <b>1508</b> shows how a command backlog changes over time. The command backlog initially increases as a result of the drop in power credits. However, the command backlog decreases and stabilizes at the target level.
Line <b>1510</b> shows the initial clock frequency, before the workload increased. Line <b>1510</b> is dashed after the increase in workload to indicate that this clock frequency is no longer being used. Curve <b>1512</b> depicts a decrease in clock frequency due to actions of the DFS block <b>406</b>.
Line <b>1514</b> depicts the power usage of the memory controller initially, before the increase in the workload. Line <b>1514</b> is dashed to indicate that this power usage is hypothetical. Note that curve <b>1514</b> represent power usage of the FEP <b>110</b> and the BEP <b>112</b>, but does not include power usage of memory packages <b>104</b> (which contain the memory cells being read, written, erased, etc.). Curve <b>1516</b> depicts the decreased power usage of the memory controller, which may be attributed to the decreased clock frequency. For example, by running clocked circuity (e.g. one or more processors in the FEP <b>110</b>, and one or more processors in each BEP <b>112</b>) at a slower rate, power is saved. The gap between curve <b>1514</b> and <b>1516</b> represents power saved in the memory controller <b>102</b>.
Curve <b>1518</b> depicts the power usage of the memory packages <b>104</b> over time. Curve <b>1522</b> represents the target power usage of the memory packages <b>104</b>. The power usage quickly reaches and stabilizes at the target level. Curve <b>1520</b> represents a hypothetical power usage of the memory packages <b>104</b> if power credits were not increased. The gap between curve <b>1520</b> and <b>1522</b> represents additional power used in the memory packages <b>104</b>. Note that the power that was saved in the memory controller <b>102</b> is, in effect, reclaimed, and used in the memory packages <b>104</b>.
Curve <b>1524</b> represent performance over time. Curve <b>1528</b> represents a target performance, at which the actual performance quickly stabilizes. Curve <b>1526</b> represents a hypothetical performance level if additional power was not allocated to the memory packages <b>104</b>. Thus, the performance of the storage device <b>100</b> may be increased without increasing the overall power consumption of the storage device <b>100</b>.
<figref idref="DRAWINGS">FIG. 16</figref> is flowchart of one embodiment of a process <b>1600</b> of saving power during idle periods in a non-volatile storage device. The process <b>1600</b> may be executed within a storage device having several control loops (e.g., thermal, power, DFS) as in, for example, <figref idref="DRAWINGS">FIG. 3</figref>. However, it is not required that the storage device <b>100</b> have several such control loops. In one embodiment, process <b>1600</b> is performed in a storage device <b>100</b> having a power control block <b>402</b>, and a DFS block <b>406</b>.
Step <b>1602</b> includes detecting that the storage device <b>100</b> is idle. The definition of idle can be set in accordance with how aggressively it is desired that the storage device enter a power saving mode. In one embodiment, step <b>1602</b> is based on a backpressure metric, such as a command backlog. In one embodiment, the storage device <b>100</b> is considered idle of the there is no command backlog. This may correspond to a situation in which there have not been any memory commands issued to the memory packages <b>104</b> for a period of time.
Step <b>1604</b> includes setting the frequencies of one or more processors in the storage device <b>100</b> to an idle level to save power. This is performed response to a backlog of the commands being below a threshold, in one embodiment. The idle level is a fully functional mode of operation of the non-volatile storage device, in an embodiment. By fully functional it is meant that all of the clocked circuity is able to perform its functions, albeit at a slower pace. Thus, the storage device <b>100</b> is not shut down in the idle mode. In one embodiment, the idle clock frequency is about 15% the maximum clock frequency. In some embodiments, step <b>1604</b> includes using a sporachronous clock generator, which is able to alter a clock frequency by suppressing certain clock pulses. Thus, step <b>1604</b> may include suppressing certain clock pulses. For example, seven out of each eight clock cycles might be suppressed.
Step <b>1606</b> includes detection of a user operation. This may include detecting that a host system has sent a memory operating to the memory controller <b>102</b>.
Step <b>1608</b> includes change the clock frequency from the idle level to a full speed level. Step <b>1608</b> is performed in response to detection of the user operation. In some embodiments, step <b>1608</b> includes the restoration of the suppressed clock cycles. Note that restoring to the full speed level does not require any recovery time, in an embodiment.
A first embodiment includes a non-volatile storage device, comprising non-volatile memory cells, clocked circuity, and one or more control circuits. The one or more control circuits are configured to process commands to access the non-volatile memory cells using the clocked circuity. The one or more control circuits are configured to implement a power control loop to regulate power consumption of the non-volatile storage device based on a first feedback signal. The one or more control circuits are configured to implement a temperature control loop to regulate temperature of the non-volatile storage device based on a second feedback signal. The one or more control circuits are configured to implement a clock frequency control loop to regulate one or more clock frequencies of the clocked circuitry based on a third feedback signal.
In a second embodiment, in furtherance to the first embodiment, the power control loop is a closed loop having a first bandwidth, the clock frequency control loop is a closed loop having a second bandwidth that is smaller than the first bandwidth, and the temperature control loop is a closed loop having a third bandwidth that is smaller than the second bandwidth.
In a third embodiment, in furtherance to the first or second embodiments, the power control loop has a target power as a reference input, a measured power as the first feedback signal, and power credits as a control output. Also, the temperature control loop has a measured temperature as the second feedback signal, and the target power as a control output.
In a fourth embodiment, in furtherance to any of the first to third embodiments, the one or more control circuits are further configured to process the commands in response to having a sufficient amount of the power credits. The clock frequency control loop has a command backlog as the third feedback signal, and the one or more clock frequencies as a control output.
In a fifth embodiment, in furtherance to any of the first to fourth embodiments, the one or more control circuits are further configured to process the commands in response to having a sufficient amount of the power credits. The clock frequency control loop has a size of a pool of the power credits as the third feedback signal, and the one or more clock frequencies as a control output.
In a sixth embodiment, in furtherance to any of the first to fifth embodiments, the power control loop has a first update rate, the clock frequency control loop has a second update rate that is slower than the first update rate, and the temperature control loop has a third update rate that is slower than the second update rate.
In a seventh embodiment, in furtherance to any of the first to sixth embodiments, the one or more control circuits are further configured to perform correction for one or more of the power control loop, the temperature control loop or the clock frequency control loop based on an estimated time of arrival (ETA) of when a measurement of the feedback signal for the respective control loop is estimated to reach a target value.
In an eighth embodiment, in furtherance to any of the first to seventh embodiments, the one or more control circuits are further configured to set the one or more clock frequencies to an idle level to save power responsive to a backlog of the commands being below a threshold, wherein the clocked circuity remain fully functional when operating at the idle level.
In a ninth embodiment, in furtherance to the eighth embodiment, the one or more control circuits are further configured to change the one or more clock frequencies from the idle level to a full speed level in response to detection of a user operation with respect to the non-volatile storage device.
An embodiment includes a method of operating a non-volatile storage device comprising non-volatile memory cells. The method comprises operating one or more processors to execute commands to access the non-volatile memory cells. The method comprises regulating power usage in the non-volatile storage device based on a target power level while operating the one or more processors, including issuing power credits to execute the commands. The method comprises limiting operating temperature of the non-volatile storage device to below a threshold temperature, including establishing the target power level. The method comprises reducing a frequency of one or more clock signals of the one or more processors in response to an increase of backlog of the commands.
An embodiment includes a non-volatile storage device, comprising non-volatile memory cells, and a non-volatile memory controller comprising one or more processors. The non-volatile memory controller is configured to process commands to access the non-volatile memory cells using the one or more processors. The non-volatile memory controller is configured to control power usage of the non-volatile storage device using a first closed control loop having a first bandwidth. The non-volatile memory controller is configured to control operating frequencies of the one or more processors using a second closed control loop having a second bandwidth that is less than the first bandwidth. The non-volatile memory controller is configured to control operating temperature of the non-volatile storage device using a third closed control loop having a third bandwidth that is less than the second bandwidth.
For purposes of this document, reference in the specification to “an embodiment,” “one embodiment,” “some embodiments,” or “another embodiment” may be used to describe different embodiments or the same embodiment.
For purposes of this document, a connection may be a direct connection or an indirect connection (e.g., via one or more others parts). In some cases, when an element is referred to as being connected or coupled to another element, the element may be directly connected to the other element or indirectly connected to the other element via intervening elements. When an element is referred to as being directly connected to another element, then there are no intervening elements between the element and the other element. Two devices are “in communication” if they are directly or indirectly connected so that they can communicate electronic signals between them.
For purposes of this document, the term “based on” may be read as “based at least in part on.”
For purposes of this document, without additional context, use of numerical terms such as a “first” object, a “second” object, and a “third” object may not imply an ordering of objects, but may instead be used for identification purposes to identify different objects.
For purposes of this document, the term “set” of objects may refer to a “set” of one or more of the objects.
The foregoing detailed description has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. The described embodiments were chosen in order to best explain the principles of the proposed technology and its practical application, to thereby enable others skilled in the art to best utilize it in various embodiments and with various modifications as are suited to the particular use contemplated. It is intended that the scope be defined by the claims appended hereto.
Contents3
19 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19
Every citation, both waysCites: the store holds 49 of 50
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US2022171716A1 | Cited by | United States of America | Search report |
| US11941270B2 | Cited by | United States of America | Applicant |
| US2024094939A1 | Cited by | United States of America | Search report |
| US12504913B2 | Cited by | United States of America | Search report |
| US11741025B2 | Cited by | United States of America | Search report |
| US10025522B2 | Cites | United States of America | Applicant |
| US10831384B2 | Cites | United States of America | Search report |
| US2005071550A1 | Cites | United States of America | Search report |
| US2005246558A1 | Cites | United States of America | Search report |
| US2008307184A1 | Cites | United States of America | Search report |
| US2009039968A1 | Cites | United States of America | Search report |
| US2010332871A1 | Cites | United States of America | Search report |
| US2012005514A1 | Cites | United States of America | Applicant |
| US2012066439A1 | Cites | United States of America | Search report |
| US2013275781A1 | Cites | United States of America | Applicant |
| US2014372693A1 | Cites | United States of America | Search report |
| US2017288421A1 | Cites | United States of America | Search report |
| US2018074743A1 | Cites | United States of America | Search report |
| US2018182452A1 | Cites | United States of America | Applicant |
| US2018335977A1 | Cites | United States of America | Applicant |
| US2018335978A1 | Cites | United States of America | Applicant |
| US2019065086A1 | Cites | United States of America | Search report |
| US2019094938A1 | Cites | United States of America | Search report |
| US2019303039A1 | Cites | United States of America | Search report |
| US2020278808A1 | Cites | United States of America | Search report |
| US2020287413A1 | Cites | United States of America | Search report |
| US7064994B1 | Cites | United States of America | Applicant |
| US7478260B2 | Cites | United States of America | Search report |
| US7919952B1 | Cites | United States of America | Search report |
| US8248000B2 | Cites | United States of America | Search report |
| US9323304B2 | Cites | United States of America | Applicant |
| US9678558B2 | Cites | United States of America | Applicant |
| US9746383B2 | Cites | United States of America | Search report |
| US9760311B1 | Cites | United States of America | Applicant |
| US9946481B2 | Cites | United States of America | Applicant |
| US20050071550A1 | Cites | United States of America | Search report |
| US20050246558A1 | Cites | United States of America | Search report |
| US20080307184A1 | Cites | United States of America | Search report |
| US20090039968A1 | Cites | United States of America | Search report |
| US20100332871A1 | Cites | United States of America | Search report |
| US20120005514A1 | Cites | United States of America | Applicant |
| US20120066439A1 | Cites | United States of America | Search report |
| US20130275781A1 | Cites | United States of America | Applicant |
| US20140372693A1 | Cites | United States of America | Search report |
| US20170288421A1 | Cites | United States of America | Search report |
| US20180074743A1 | Cites | United States of America | Search report |
| US20180182452A1 | Cites | United States of America | Applicant |
| US20180335977A1 | Cites | United States of America | Applicant |
| US20180335978A1 | Cites | United States of America | Applicant |
| US20190065086A1 | Cites | United States of America | Search report |
| US20190094938A1 | Cites | United States of America | Search report |
| US20190303039A1 | Cites | United States of America | Search report |
| US20200278808A1 | Cites | United States of America | Search report |
| US20200287413A1 | Cites | United States of America | Search report |
| International Search Report & the Written Opinion of the International Searching Authority dated Apr. 2, 2020, International Application No. PCT/US2019/066424. | Non-patent | – | Applicant |
| Xilinx, “LogiCORE IP Asynchronous Sample Rate Converter v.2.0: Product Guide fo Vivado Design Suite,” Oct. 2, 2013, 59 pages. | Non-patent | – | Applicant |
| International Search Report & the Written Opinion of the International Searching Authority dated Apr. 2, 2020, International Application No. PCT/US2019/066424. | Non-patent | – | Applicant |
| Xilinx, “LogiCORE IP Asynchronous Sample Rate Converter v.2.0: Product Guide fo Vivado Design Suite,” Oct. 2, 2013, 59 pages. | Non-patent | – | Applicant |
3 members in 2 offices
Priority claims2
| Document | Office | Kind | Date |
|---|---|---|---|
| 201916457277 | United States of America | A | |
| US201916457277 | – | – | – |
Members3
| Document | Office | Kind | |
|---|---|---|---|
| WO2020263315A1 | World Intellectual Property Organization (WIPO) | A1 | |
| US2020409441A1 | United States of America | A1 | |
| US11079822B2This record | United States of America | B2 |
60 transactions on the USPTO file
Allowed after 1 non-final rejection.
- Non-final rejections
- 1
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 4th Year, Large EntityM1551 | M1551 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Email NotificationEML_NTR | EML_NTR | |
| Printer Rush- No mailingTCPB | TCPB | |
| Mail Response to 312 Amendment (PTO-271)MN271 | MN271 | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Response to Amendment under Rule 312N271 | N271 | |
| Pubs Case Remand to TCPUBTC | PUBTC | |
| Amendment after Notice of Allowance (Rule 312)AllowedA.NA | A.NA | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Printer Rush- No mailingTCPB | TCPB | |
| Printer Rush- No mailingTCPB | TCPB | |
| Printer Rush- No mailingTCPB | TCPB | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Pubs Case Remand to TCPUBTC | PUBTC | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail Examiner Interview Summary (PTOL - 413)MEXIN | MEXIN | |
| Interview Summary - Applicant Initiated - TelephonicEXAT | EXAT | |
| Interview Summary RecordEXIN | EXIN | |
| Electronic request for Examiner InterviewM865E | M865E | |
| Email NotificationEML_NTR | EML_NTR | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Email NotificationEML_NTR | EML_NTR | |
| Application ready for PDX access by participating foreign officesCCRDY | CCRDY | |
| Application Is Now CompleteCOMP | COMP | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Sent to Classification ContractorPGPC | PGPC | |
| FITF set to YES - revise initial settingFTFS | FTFS | |
| Cleared by OIPE CSRL194 | L194 | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Patent Term Adjustment - Ready for ExaminationPTA.RFE | PTA.RFE | |
| PTO/SB/69-Authorize EPO Access to Search ResultsSREXR141 | SREXR141 | |
| Applicants have given acceptable permission for participating foreignAPPERMS | APPERMS | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Entity Status Set To Undiscounted (Initial Default Setting or Status Change)BIG. | BIG. | |
| Initial Exam Team nnIEXX | IEXX |
22 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Maintenance fee paymentMAFP | MAFP | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| Information on status: patent application and granting procedure in generalPUBLICATIONS -- ISSUE FEE PAYMENT VERIFIEDSTPP | STPP | |
| Information on status: patent application and granting procedure in generalAWAITING TC RESP, ISSUE FEE PAYMENT VERIFIEDSTPP | STPP | |
| Information on status: patent application and granting procedure in generalPUBLICATIONS -- ISSUE FEE PAYMENT VERIFIEDSTPP | STPP | |
| Information on status: patent application and granting procedure in generalPUBLICATIONS -- ISSUE FEE PAYMENT RECEIVEDSTPP | STPP | |
| Information on status: patent application and granting procedure in generalNOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONSSTPP | STPP | |
| Information on status: patent application and granting procedure in generalNOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONSSTPP | STPP | |
| Information on status: patent application and granting procedure in generalRESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINERSTPP | STPP | |
| Information on status: patent application and granting procedure in generalNON FINAL ACTION MAILEDSTPP | STPP | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Fee payment procedureENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP |
Numbers
- Publication
- 11079822
- Publication, DOCDB
- 11079822
- Publication, EPODOC
- US11079822
- Application
- 16457277
- Application, DOCDB
- 201916457277
- Application, EPODOC
- US201916457277
Titles
- English
- Integrated power and thermal management in non-volatile memory
Patent term adjustment
- A delay
- +124 daysthe office missed an examination deadline
- Applicant delay
- −15 days
- Net adjustment
- 109 days
Classification
- CPC, 13
- G06F1/266
- G06F1/324
- G06F1/206
- G06F1/3268
- G06F12/0246
- G06F3/0625
- G06F2212/1028
- G06F3/0653
- G06F2212/1032
- G06F3/0679
- G06F2212/7203
- G06F2212/7208
- Y02D10/00
- IPC, 5
- G06F1 26
- G06F1 20
- G06F1 324
- G06F3 06
- G06F1 3234
- USPC, 1
- 713320000