US9104416B2 - Autonomous microprocessor re-configurability via power gating pipelined execution units using dynamic profiling - Google Patents
Autonomous microprocessor re-configurability via power gating pipelined execution units using dynamic profiling Download PDFInfo
- Publication number
- US9104416B2 US9104416B2 US13/759,067 US201313759067A US9104416B2 US 9104416 B2 US9104416 B2 US 9104416B2 US 201313759067 A US201313759067 A US 201313759067A US 9104416 B2 US9104416 B2 US 9104416B2
- Authority
- US
- United States
- Prior art keywords
- functional unit
- processor
- type
- threshold
- performance
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active - Reinstated, expires
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/324—Power saving characterised by the action undertaken by lowering clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- Y02B60/1282—
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Definitions
- Static power dissipation is quickly becoming the main component to the overall power consumption of the modern microprocessor or integrated circuit (IC).
- IC integrated circuit
- Transistors are built by the vertical layering of electrically dissimilar materials with extremely low and precise geometrical tolerances at the atomic scale. Some of the vertical slices are significantly thinner than the horizontal features.
- the gate oxide layer which separates charge between the gate from the p and n channels of the substrate can be measured by counting atoms of thickness. As this vertical scaling continues beyond 32 nm, the electric polarization field will continue to weaken and thus the gate oxide loses the ability to separate charge. Because of this, electrons have a less restricted flow.
- microprocessors are equipped with performance monitoring capabilities to provide designers and programmers insight into the performance of a microprocessor during the execution of a process or program.
- performance monitoring units can record “event” data for various types of performance events such as the utilization levels of pipelines execution units.
- U.S. Pat. No. 7,868,479 titled “Power gating for multimedia processing power management,” pertains to a power management implementation designed to save power while driving a multimedia display.
- the method of the ‘479’ patent is implemented using software control and would render a processor useless due to the excessive power up latency.
- Predictive Power Gating with Optional Guard Mechanism involves using an algorithm to predict units to power gate.
- This invention relates to power gating technology within a microprocessor's pipeline stages.
- the one or more functional units may be power gated.
- the power gating is determined via a hardware process profiling unit that generates a specific need profile value for each process running on the microprocessor in a time multiplexed computing system.
- the specific needs profile value that holds the power enablement of each FU is loaded into a configuration register at the beginning of each context switch of the operating system for the running process.
- a modern high-end microprocessor may have more than a dozen functional units within the execution stages of its pipeline. This plurality of functional units is included to provide an increase in instruction level parallelism during the execution of a program in order to increase the instruction execution throughput. In many cases, depending on the instruction stream of the program, many of these functional units remain in an idle state, in which they incur static leakage power dissipation. As a result, power dissipation in an integrated circuit (IC) or microprocessor may reduce battery life and increase the temperature of the IC, which limits reliability and life of the IC.
- IC integrated circuit
- a power gating pipeline control method uses a dynamic process profiler unit 304 which analyzes performance data that is recorded by the performance monitoring unit 302 and compares that data against a user defined list of thresholds.
- the process profiler unit 304 may be configured to run many different algorithms depending on the performance and power needs of the microprocessors application domain, but in most cases it should be designed to ensure that: 1) If an FU is not being utilized then it will be power gated. 2) If the utilization level of an FU is higher than a threshold then additional FUs will be enabled. 3) The algorithm can detect if other performance limiting events that are not associated with a plurality of available FUs are causing low utilization levels, and can make appropriate adjustments via power gating FUs depending on the needs of the application domain.
- This method will eliminate dynamic and static power dissipation associated with unneeded FUs during the execution of a process or program. It allows for tighter coupling between the hardware and software which will allow better performance while using less power.
- FIG. 1 shows a diagram of the classic five stage pipeline within a microprocessor, with the execution stages configured to do multi-cycle operations, according to an embodiment.
- FIG. 2 shows an expansion of the classic five stage pipeline from FIG. 1 with the addition of a power switch network, a power controller unit and a pipeline configuration register to support power gating the FUs of the execution stages, according to an embodiment.
- FIG. 3 shows the operational flow and block diagram of the minimum units needed to perform the process profiling and power gating functionality of the proposed invention, according to an embodiment.
- FIG. 4 shows an example of a profiling algorithm that may be implemented in the process profiler unit, according to an embodiment.
- FIG. 5 shows how a power versus performance parameter may be an input into the process profiler unit and the corresponding mapping of configuration bits that may be outputted from the process profiler unit to a configuration register or look up table (LUT), according to an embodiment.
- FIG. 6 is a process flow for controlling functional units of a processor, according to an embodiment.
- FIG. 7 is a process flow for configuring a performance monitoring unit to control functional units of a processor, according to an embodiment.
- the basic concept of this invention is to use a dynamic process profiler unit 304 which may use an algorithm similar but not limited to the one disclosed in FIG. 4 to monitor the utilization level of an FU, to make intelligent decisions as to when to enable or power gate the plurality of “like” FUs shown in FIG. 2 such as two Integer ALUs 114 and 116 , two FP adders 118 and 120 , two multipliers 122 and 124 , and two dividers 126 and 128 .
- FIG. 1 shows a classic five stage pipeline.
- the first stage of the pipeline is the instruction fetch (IF) stage 102 , which among other things the current instruction is fetched from memory.
- the second stage is the instruction decode (ID) stage 104 where decoding is done in parallel to register reads.
- the third section of stages is the execution stages (EX) 134 , which have been expanded to include FUs that perform multi-cycle operations.
- the execution stages of the pipeline are the main focus of this disclosure.
- the fourth stage is a memory access 108 stage which applies to loads and stores and finally the write back stage 110 to registers.
- event data is recorded by the performance monitor 302 where the process profiling unit 304 analyzes the data to determine the utilization level of a particular functional unit.
- the process profiling unit 304 then checks the utilization level against a set threshold 306 to determine if there is a need for the extra FUs to be enabled or power gated.
- These thresholds may be very different depending on the needs of the microprocessors application domain and the running process 308 .
- the control algorithm of FIG. 4 starts by the user setting the desired utilization thresholds 306 as seen in step 402 and may be programmed at system boot up. Once a program is loaded and running as shown in step 404 , the data is analyzed by the process profiling unit 304 . It may be reset so that the profiling data represents a processes recent execution history. The algorithm waits for a time period 406 so that a sample of data can be collected for analysis. Once the time period is over and data is available the control algorithm checks the utilization level of the integer ALUs as shown in step 408 .
- the control algorithm will enable integer ALU 116 per step 410 via placing a logic ‘1’ in the second bit location next to the least significant bit (LSB) shown in 502 . If that bit location already stores logic ‘1’, then the enablement status of ALU 116 will be maintained for at least one more loop of the control algorithm. In contrast, if the utilization level of both integer ALUs 106 is lower than the preset threshold 306 , then the control algorithm will power gate integer ALU 116 per step 412 by writing a logic ‘0’ to the second bit location of 502 .
- the utilization level may be determined by several different methods depending on the events that are available on an architectures performance monitoring unit 302 .
- some existing performance monitoring units can record the number of floating point divide instructions that were issued, executed, retired, and types of stalls that occurred. In addition, they count the number of clock cycles and the number of instructions that are issued. With such data, the relative utilization of the execution FUs 134 may be determined.
- the control algorithm should ensure that the utilization levels are a function of the utilization of particular FUs and not another type of performance limiting event such as a cache miss which may result in a memory access.
- the pipeline may stall and the utilization level of the FUs 134 may drop dramatically which may cause the control algorithm to prematurely power gate an FU that is actually needed.
- the control algorithm may be augmented to power gate FUs if other performance limiting events are causing frequent stalls. This adjustment is highly dependent on the application domain of the microprocessor and may vary significantly depending on the sensitivity of the power versus performance needs.
- the configuration register 206 is loaded with the fresh profiling data per steps 410 or 412 , 416 or 418 , 422 or 424 , and 428 or 430 where the bit fields LSB to MSB of 502 map to the power controller unit 204 to configure the power switch network 202 that controls the power status of the FUs in 134 .
- the instruction decoder 104 also reads the configuration register 206 to insure that it will not issue instructions to a FU that is currently power gated.
- a power versus performance parameter 504 may be introduce to the control algorithm to further adjust the sensitivity of the bits in the configuration register depending on the performance versus power needs of the application domain. For example if a process 308 is running on a cell phone that is powered by a battery, the input parameter may be set to favor power over performance. In which case, the process profiler unit 304 may not enable all the available FUs even if utilization levels are higher than the threshold 306 as a means to save power.
- This invention could be expanded to allow a finer grained implementation where the process profile 502 is stored in a look up table (LUT) either in a on chip location such as a TLB entry or in external memory to be loaded in the configuration register 206 as part of a context switch.
- LUT look up table
- This will help eliminate the startup penalty in terms of time and power, associated with profiling each process 308 during each context switch as the process will start each “time quantum” with the balanced architecture that was profiled for the same processes during its last time quantum. It may be useful to periodically profile the hardware needs of the running process to assess any possible changing needs.
- non-pipelined FUs in the execution stages 134 of the pipeline as the transistor count is significantly lower than a pipelined FU. This would enable functional support for a relatively rare instruction in a process 308 . For example if the divider unit 112 has a very low utilization level, then it may make more sense to have a non-pipelined divider unit as the leakage associated with it will be dramatically lower.
- FIG. 6 is a process flow for controlling functional units of a processor, according to an embodiment.
- a performance monitoring unit connected to a processor is used to collect performance data of a first type of functional unit in an execution stage of the processor.
- the performance monitoring unit may be composed of circuitry configured to collect performance data.
- a utilization level of the first type of functional unit is determined based on the performance data.
- the performance data may include the number of floating point divide instructions that were issued, executed, retired, and types of stalls that occurred.
- the utilization level of the first type of functional unit is compared with a first threshold, which may be predetermined.
- At least one of the first type of functional unit in the processor is power gated when a first condition has been satisfied.
- all integer ALU functional units may be power gated while they are unneeded, while the floating point multiplication functional units remain powered and available for operation in the execution stage of the processor.
- FIG. 7 is a process flow for configuring a performance monitoring unit to control functional units of a processor, according to an embodiment.
- the performance monitoring unit is configured to collect performance data of a first type of functional unit in an execution stage of the processor.
- the performance monitoring unit is formed to determine a utilization level of the first type of functional unit based on the performance data.
- the performance monitoring unit is arranged to compare the utilization level of the first type of functional unit with a first threshold.
- the performance monitoring unit is configured such that, when a first condition has been satisfied, the performance monitoring unit causes at least one of the first type of functional unit in the processor to be power gated.
- a functional unit control method includes using a performance monitoring unit connected to a processor, collecting performance data of a first type of functional unit in an execution stage of the processor. The method further includes determining a utilization level of the first type of functional unit based on the performance data, and comparing the utilization level of the first type of functional unit with a first threshold. The method also includes, when a first condition has been satisfied, power gating at least one of the first type of functional unit in the processor.
- the first condition may be satisfied when the utilization level has been determined to be below the first threshold.
- the first condition may be satisfied when the utilization level has been determined to be below the first threshold, and a performance parameter is set to prioritize energy saving relative to performance of the processor.
- the functional unit control method may further include comparing the utilization level of the first type of functional unit to a second threshold, and when the second condition has been satisfied, enabling at least one of the first type of functional unit.
- the first threshold and the second threshold may be the same threshold.
- the second condition may be satisfied when the utilization level has been determined to be above the second threshold.
- the second condition may be satisfied when the utilization level has been determined to be above the second threshold, and a performance parameter is set to prioritize performance of the processor relative to energy saving.
- the first functional unit is one of an integer ALU, a floating point adder, a floating point multiplier, and a floating point divider.
- the method may further include updating a configuration register that controls a switch governing power provided to the first functional unit.
- the method may also include updating a lookup-table, wherein the configuration register is updated using information from the lookup-table during a context switch to limit a startup time of the processor.
- the method may further include accessing the configuration register, and based on the configuration register, determining whether to allocate an instruction to the first functional unit.
- a system for controlling at least one functional unit includes a performance monitoring unit connected to a processor having a first type of functional unit in an execution stage.
- the performance monitoring unit is configured to collect performance data of the first type of functional unit in an execution stage of the processor, to determine a utilization level of the first type of functional unit based on the performance data, and to compare the utilization level of the first type of functional unit with a first threshold.
- the performance monitoring may be configured to power gate at least one of the first type of functional unit in the processor.
- the first condition may be satisfied when the utilization level has been determined to be below the first threshold.
- the first condition is satisfied when the utilization level has been determined to be below the first threshold, and a performance parameter is set to prioritize energy saving relative to performance of the processor.
- the performance monitoring unit may further be configured to compare the utilization level of the first type of functional unit to a second threshold, and when the second condition has been satisfied, to enable at least one of the first type of functional unit.
- the first threshold and the second threshold may be the same threshold.
- the second condition is satisfied when the utilization level has been determined to be above the second threshold.
- the second condition may be satisfied when the utilization level has been determined to be above the second threshold, and a performance parameter is set to prioritize performance of the processor relative to energy saving.
- a method of forming a performance monitoring unit to control at least one functional unit of a processor includes configuring the performance monitoring unit to collect performance data of a first type of functional unit in an execution stage of the processor. The method further includes forming the performance monitoring unit to determine a utilization level of the first type of functional unit based on the performance data, and arranging the performance monitoring unit to compare the utilization level of the first type of functional unit with a first threshold. The method further includes configuring the performance monitoring unit such that, when a first condition has been satisfied, the performance monitoring unit causes at least one of the first type of functional unit in the processor to be power gated. The first condition may be satisfied when the utilization level has been determined to be below the first threshold.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Power Sources (AREA)
- Microcomputers (AREA)
Abstract
Description
Claims (17)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/759,067 US9104416B2 (en) | 2012-02-05 | 2013-02-05 | Autonomous microprocessor re-configurability via power gating pipelined execution units using dynamic profiling |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261595143P | 2012-02-05 | 2012-02-05 | |
US13/759,067 US9104416B2 (en) | 2012-02-05 | 2013-02-05 | Autonomous microprocessor re-configurability via power gating pipelined execution units using dynamic profiling |
Publications (2)
Publication Number | Publication Date |
---|---|
US20130205150A1 US20130205150A1 (en) | 2013-08-08 |
US9104416B2 true US9104416B2 (en) | 2015-08-11 |
Family
ID=48903978
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/759,067 Active - Reinstated 2034-01-13 US9104416B2 (en) | 2012-02-05 | 2013-02-05 | Autonomous microprocessor re-configurability via power gating pipelined execution units using dynamic profiling |
Country Status (1)
Country | Link |
---|---|
US (1) | US9104416B2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10223228B2 (en) | 2016-08-12 | 2019-03-05 | International Business Machines Corporation | Resolving application multitasking degradation |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10296464B2 (en) * | 2016-12-09 | 2019-05-21 | Intel Corporation | System, apparatus and method for dynamic profiling in a processor |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5719800A (en) * | 1995-06-30 | 1998-02-17 | Intel Corporation | Performance throttling to reduce IC power consumption |
US5987620A (en) * | 1997-09-19 | 1999-11-16 | Thang Tran | Method and apparatus for a self-timed and self-enabled distributed clock |
US20060224864A1 (en) * | 2005-03-31 | 2006-10-05 | Dement Jonathan J | System and method for handling multi-cycle non-pipelined instruction sequencing |
US20060285004A1 (en) * | 2005-06-15 | 2006-12-21 | Fuji Photo Film Co., Ltd. | Camera system |
US20070079294A1 (en) * | 2005-09-30 | 2007-04-05 | Robert Knight | Profiling using a user-level control mechanism |
US7266707B2 (en) | 2004-09-16 | 2007-09-04 | International Business Machines Corporation | Dynamic leakage control circuit |
US7447923B2 (en) | 2005-08-19 | 2008-11-04 | International Business Machines Corporation | Systems and methods for mutually exclusive activation of microprocessor resources to control maximum power |
US7490302B1 (en) | 2005-08-03 | 2009-02-10 | Xilinx, Inc. | Power gating various number of resources based on utilization levels |
US7868479B2 (en) | 2007-06-27 | 2011-01-11 | Qualcomm Incorporated | Power gating for multimedia processing power management |
US20110231524A1 (en) * | 2010-03-17 | 2011-09-22 | Hitachi, Ltd. | Metadata management method for nas global namespace design |
US8219834B2 (en) * | 2009-08-12 | 2012-07-10 | International Business Machines Corporation | Predictive power gating with optional guard mechanism |
US20120254633A1 (en) * | 2011-03-31 | 2012-10-04 | Vilhauer Reed D | Power control manager and method |
-
2013
- 2013-02-05 US US13/759,067 patent/US9104416B2/en active Active - Reinstated
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5719800A (en) * | 1995-06-30 | 1998-02-17 | Intel Corporation | Performance throttling to reduce IC power consumption |
US5987620A (en) * | 1997-09-19 | 1999-11-16 | Thang Tran | Method and apparatus for a self-timed and self-enabled distributed clock |
US7266707B2 (en) | 2004-09-16 | 2007-09-04 | International Business Machines Corporation | Dynamic leakage control circuit |
US20060224864A1 (en) * | 2005-03-31 | 2006-10-05 | Dement Jonathan J | System and method for handling multi-cycle non-pipelined instruction sequencing |
US20060285004A1 (en) * | 2005-06-15 | 2006-12-21 | Fuji Photo Film Co., Ltd. | Camera system |
US7490302B1 (en) | 2005-08-03 | 2009-02-10 | Xilinx, Inc. | Power gating various number of resources based on utilization levels |
US7447923B2 (en) | 2005-08-19 | 2008-11-04 | International Business Machines Corporation | Systems and methods for mutually exclusive activation of microprocessor resources to control maximum power |
US20070079294A1 (en) * | 2005-09-30 | 2007-04-05 | Robert Knight | Profiling using a user-level control mechanism |
US7868479B2 (en) | 2007-06-27 | 2011-01-11 | Qualcomm Incorporated | Power gating for multimedia processing power management |
US8219834B2 (en) * | 2009-08-12 | 2012-07-10 | International Business Machines Corporation | Predictive power gating with optional guard mechanism |
US20110231524A1 (en) * | 2010-03-17 | 2011-09-22 | Hitachi, Ltd. | Metadata management method for nas global namespace design |
US20120254633A1 (en) * | 2011-03-31 | 2012-10-04 | Vilhauer Reed D | Power control manager and method |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10223228B2 (en) | 2016-08-12 | 2019-03-05 | International Business Machines Corporation | Resolving application multitasking degradation |
US10776238B2 (en) | 2016-08-12 | 2020-09-15 | International Business Machines Corporation | Resolving application multitasking degradation |
Also Published As
Publication number | Publication date |
---|---|
US20130205150A1 (en) | 2013-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9009451B2 (en) | Instruction type issue throttling upon reaching threshold by adjusting counter increment amount for issued cycle and decrement amount for not issued cycle | |
JP4811879B2 (en) | System and method for mutual exclusion activation of microprocessor resources to control maximum power | |
US10802567B2 (en) | Performing local power gating in a processor | |
US10423216B2 (en) | Asymmetric multi-core processor with native switching mechanism | |
Kalla et al. | IBM Power5 chip: A dual-core multithreaded processor | |
US8924692B2 (en) | Event counter checkpointing and restoring | |
US10289514B2 (en) | Apparatus and method for a user configurable reliability control loop | |
US20160162293A1 (en) | Asymmetric processor with cores that support different isa instruction subsets | |
US8219833B2 (en) | Two-level guarded predictive power gating | |
US9104416B2 (en) | Autonomous microprocessor re-configurability via power gating pipelined execution units using dynamic profiling | |
US9098271B2 (en) | Autonomous microprocessor re-configurability via power gating pipelined execution units using static profiling | |
Baniasadi et al. | SEPAS: A highly accurate energy-efficient branch predictor | |
US9218048B2 (en) | Individually activating or deactivating functional units in a processor system based on decoded instruction to achieve power saving | |
Mehta et al. | Fetch halting on critical load misses | |
US20130205144A1 (en) | Limitation of leakage power via dynamic enablement of execution units to accommodate varying performance demands | |
Wang et al. | Exploiting narrow-width values for thermal-aware register file designs | |
Subramanyan et al. | Power efficient redundant execution for chip multiprocessors | |
Lee et al. | Thermal-aware scheduling collaborating with OS and architecture | |
Balkan et al. | Predicting and exploiting transient values for reducing register file pressure and energy consumption | |
Yao | Deep DVS in FU Array by Covering Process Variations with Data-Path Auto-fix | |
Battle | Efficient Scaling of Out-of-Order Processor Resources | |
Ponomarev | Dynamic optimizations of superscalar processors for energy efficiency |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: VAMPIRE LABS, LLC, TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:EASTLACK, JEFFREY R.;REEL/FRAME:029792/0852 Effective date: 20130208 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: MICROENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: MICROENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20190811 |
|
PRDP | Patent reinstated due to the acceptance of a late maintenance fee |
Effective date: 20210407 |
|
FEPP | Fee payment procedure |
Free format text: PETITION RELATED TO MAINTENANCE FEES FILED (ORIGINAL EVENT CODE: PMFP); ENTITY STATUS OF PATENT OWNER: MICROENTITY Free format text: ENTITY STATUS SET TO MICRO (ORIGINAL EVENT CODE: MICR); ENTITY STATUS OF PATENT OWNER: MICROENTITY Free format text: PETITION RELATED TO MAINTENANCE FEES GRANTED (ORIGINAL EVENT CODE: PMFG); ENTITY STATUS OF PATENT OWNER: MICROENTITY Free format text: SURCHARGE, PETITION TO ACCEPT PYMT AFTER EXP, UNINTENTIONAL (ORIGINAL EVENT CODE: M3558); ENTITY STATUS OF PATENT OWNER: MICROENTITY |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, MICRO ENTITY (ORIGINAL EVENT CODE: M3551); ENTITY STATUS OF PATENT OWNER: MICROENTITY Year of fee payment: 4 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: MICROENTITY |
|
FEPP | Fee payment procedure |
Free format text: SURCHARGE FOR LATE PAYMENT, MICRO ENTITY (ORIGINAL EVENT CODE: M3555); ENTITY STATUS OF PATENT OWNER: MICROENTITY |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, MICRO ENTITY (ORIGINAL EVENT CODE: M3552); ENTITY STATUS OF PATENT OWNER: MICROENTITY Year of fee payment: 8 |