WO2021178775A1 - Clock control schemes for a graphics processing unit - Google Patents
Clock control schemes for a graphics processing unit Download PDFInfo
- Publication number
- WO2021178775A1 WO2021178775A1 PCT/US2021/021046 US2021021046W WO2021178775A1 WO 2021178775 A1 WO2021178775 A1 WO 2021178775A1 US 2021021046 W US2021021046 W US 2021021046W WO 2021178775 A1 WO2021178775 A1 WO 2021178775A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- frequency
- clock signal
- shader
- gpu
- engine modules
- 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.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/08—Clock generators with changeable or programmable clock frequency
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/10—Distribution of clock signals, e.g. skew
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/12—Synchronisation of different clock signals provided by a plurality of clock generators
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/16—Constructional details or arrangements
- G06F1/20—Cooling means
- G06F1/206—Cooling means comprising thermal management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3206—Monitoring of events, devices or parameters that trigger a change in power modality
- G06F1/3228—Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/3243—Power saving in microcontroller unit
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3433—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/348—Circuit details, i.e. tracer hardware
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
-
- 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
- Computer processing systems generally employ a graphics processing unit (GPU) to perform graphics operations, such as texture mapping, rendering, vertex translation, and the like.
- graphics processing unit GPU
- the performance requirements or specifications for the GPU can vary depending on the type of associated electronic device.
- a GPU of a mobile device has characteristics and requirements that can diverge significantly from other platforms. Performance, battery life, and thermals are generally important metrics for mobile device platforms, with better sustained performance and low idle power consumption being desirable. Clocking of GPU components, in connection with both frequency and voltage scaling of the GPU components during device operation, impacts each of these operational aspects of a mobile device.
- FIG. 1 is a block diagram illustrating a graphics processing unit (GPU) that includes a divider for selectively adjusting the frequencies of clock signals used to clock shader engine modules (SEs) and non-shader-engine modules (nSEs) of the GPU in accordance with some embodiments.
- GPU graphics processing unit
- SEs shader engine modules
- nSEs non-shader-engine modules
- FIG. 2 is a block diagram illustrating a GPU that includes multiple dividers disposed at individual tiles of SEs and nSEs of the GPU for selectively adjusting the frequencies of clock signals used to clock the SEs and nSEs in accordance with some embodiments.
- FIG. 3 is a block diagram illustrating a clock divider usable in the GPUs of FIG. 1 in accordance with some embodiments.
- FIG. 4 is an illustrative graph depicting an example of a differential between SE performance counter data and nSE performance counter data overtime in accordance with some embodiments.
- FIG. 5 is a flow diagram illustrating a method for adjusting the frequencies of clock signals used to clock SEs and nSEs based on corresponding performance counter data in accordance with some embodiments.
- Processing workloads within a mobile device vary widely, from being shader heavy, to being memory bound, to being sporadically loaded (i.e. , when workload intensity is changing from being memory intensive to being shader intensive, and vice-versa).
- Conventional single/universal clocking schemes in which a single clock signal is used to clock all components within a system limit device performance across such varied processing workload states, as these schemes do not allow for clock frequency differentiation between various system components based on respective workloads.
- shader engine modules typically refers to a module of a GPU that is part of a shader engine and is used to execute specified tasks that are frequently repeated for the generation and manipulation of graphical objects. In some embodiments, such tasks include texture mapping, rendering, vertex translation, and the like.
- non-shader-engine modules of a GPU refer to circuitry and modules that are not included in the shader engines of the GPU.
- shader engine modules of a GPU in a mobile device are more active than non-shader-engine modules when the GPU is handling a shader-heavy processing workload. Accordingly, with a universal clocking scheme, increasing the frequency of the clock signal for the shader engine modules to better handle a shader-heavy processing workload would also unnecessarily increase the frequency at which the non-shader-engine modules are clocked, resulting in non-optimal thermal and power performance.
- the non-shader-engine modules are clocked at a lower frequency during a shader- heavy processing workload, while the clocking frequency of the shader engine modules is increased or remains unchanged, resulting in improved thermal and power performance.
- similar techniques are applied to selectively set the different clock frequencies for memory bound processing workloads that require significantly more activity from the non-shader-engine modules than from the shader engine modules.
- increasing the frequency of the clock signal for the non-shader-engine modules to better handle a memory- heavy processing workload e.g., a processing workload involving significantly more activity at non-shader-engine memory devices of the GPU than at the shader engine modules of the GPU
- the shader- engine components are clocked at a lower frequency during a memory-heavy processing workload, while the clocking frequency of the non-shader-engine modules is increased or remains unchanged, resulting in improved thermal and power performance.
- the GPU employs one or more programmable dividers to set the frequency of each independently controllable clock signal provided to different groups of components of the GPU.
- a divider is interposed between a clock source, such as a phase locked loop (PLL), and the shader engine modules and non- shader-engine modules.
- PLL phase locked loop
- Each divider receive a clock signal (sometimes referred to as an “input clock signal” CLK)from the clock source and outputs first and second clock signals with independently selectable frequencies, with the first clock signal being output to the shader engine modules and the second clock signal being output to the non-shader-engine modules.
- CLK input clock signal
- the divider receives control signals from a controller that set the frequencies of the first and second clock signals.
- the controller selects the values of the control signals based on sets of performance counter data indicative of the relative workload at the shader engine modules and at the non- shader-engine modules, respectively. For example, if the performance counter data indicates a heavier processing workload at the shader engine modules for longer than a predefined time period, the frequency of the second clock signal is decreased to reduce the rate at which the non-shader-engine modules are clocked. For example, if the performance counter data indicates a heavier processing workload at the non-shader-engine modules for longer than a predefined time period, the frequency of the first clock signal is decreased to reduce the rate at which the shader engine modules are clocked.
- the first clock signal and the second clock signal are set to the same frequency (e.g., the frequency of the input clock signal).
- FIG. 1 shows an illustrative GPU 100 having different groups of components, shader engine modules (SEs) and non-shader-engine modules (nSEs), that are clocked with respectively different configurable clock signals.
- SEs shader engine modules
- nSEs non-shader-engine modules
- the GPU 100 is included in a processing system that includes at least one central processing unit (CPU), memory device, and storage device, such as an embedded system, mobile device, personal computer, server, workstation, or game console.
- the GPU 100 is a specialized electronic device that is configured to perform, at a high frequency, mathematical calculations for the purpose of rendering images to be displayed at an electronic screen coupled to the processing system.
- a conventional GPU includes a clock source, a controller, SEs, and nSEs.
- the controller of the conventional GPU controls the clock source directly to adjust the frequency of a clock signal output by the clock source.
- the clock signal is the only clock signal used to clock both he SEs and the nSEs of the conventional GPU.
- the clock signal of the conventional GPU is distributed to the SEs and the nSEs through an H-tree or mesh clock distribution network, which ensures that the routing of the clock signal occurs with equal propagation delay to each component of the SEs and the nSEs, which creates a synchronous timing relationship between the SEs and nSEs of the conventional GPU.
- H-tree or mesh clock distribution network ensures that the routing of the clock signal occurs with equal propagation delay to each component of the SEs and the nSEs, which creates a synchronous timing relationship between the SEs and nSEs of the conventional GPU.
- dynamic frequency scaling cannot be performed between the SEs and the nSEs based on their respective workloads, which creates thermal and power consumption inefficiencies.
- the GPU 100 includes SEs and nSEs that are clocked with separately controllable clock signals that are output by a divider, which allows dynamic frequency scaling to be performed between the SEs and nSEs based on their respective workloads, which improves thermal efficiency and power consumption efficiency compared to conventional GPUs with universal clocking schemes.
- the GPU 100 includes a phased lock loop (PLL) module 102, SEs 104, nSEs106, a controller 108, performance counters 109, a divider 110, and a first-in-first-out (FIFO) memory module 112.
- PLL phased lock loop
- SEs 104 are clocked using a first clock signal CLKA
- nSEs 106 are clocked using a second clock signal CLKB, such that clock frequency scaling is able to be implemented between the SEs 104 and the nSEs 106.
- each of the SEs 104 includes, for example, a geometry processor, a primitive unit, multiple compute units, rasterizers, and render output units (ROPs), and an L1 cache.
- ROIPs render output units
- the nSEs 106 include a command processor, a shader resource arbiter, dispatch controllers, and memory resources such as an L1 cache, L2 cache, and ring buffer.
- the FIFO memory module 112 passes data between the SEs 104 and the nSEs 106. Because the phase relationship between the SEs 104 and the nSEs 106 is known, the FIFO memory module 112 does not need to synchronize data transmission between the clock domain of the SEs 104 and the clock domain of the nSEs 106, and therefore does not require a synchronizer.
- the PLL module 102 generates and outputs a clock signal CLK having a specified frequency to an input of the divider 110.
- the divider 110 that receives the clock signal CLK and outputs clock signals CLKA and CLKB to clock the SEs 104 and to the nSEs 106, respectively.
- the respective frequencies of CLKA and CLKB are set based on control signals SO and S1 that are output by the controller 108 to the divider 110.
- the frequencies of CLKA and CLKB are set based on the specified frequency of the clock signal CLK. For example, in some embodiments, CLKA and CLKB are each individually set to either the frequency of CLK or the frequency of CLK/2 by the divider 110, responsive to the control signals SO and S1.
- each control signal SO and S1 carries multiple bits of control data and multiple flip-flops are included in the divider 110, allowing for one of more than two clock frequencies (e.g., CLK, CLK/2, CLK/4, CLK/8, etc.) to be selected for CLKA and CLKB.
- CLK clock frequencies
- CLK/2 clock frequencies
- CLK/4 clock frequencies
- CLK/8 etc.
- the controller 108 is configured to determine the ratio of frequencies between CLKA and CLKB to be output by the divider 110 based on respective sets of performance counter data obtained from performance counters associated with the SEs 104 and the nSEs 106.
- the controller 108 receives performance counter data, SE P and nSE P , from performance counters 109 and sets the values of the control signals SO and S1 based on the performance counter data.
- each performance counter 109 is a register implemented in hardware or software that stores performance counter data, including performance counter values corresponding to one or more events that occur in the GPU 100.
- utilization counters, active capacitance (C ac ) busy signals, or streaming performance counters are additionally or alternatively used to identify and quantify activity occurring in the SEs 104.
- a first set of performance counters coupled to the controller 108 generates and stores first performance counter data, SE P , indicative of activity in the SEs 104.
- the first performance counter data, SE P includes or is a sum of performance counter values received from the first set of performance counters, and the first set of performance counters track respective quantities of specific events occurring at the SEs 104.
- the second performance counter data, nSE includes or is a sum of performance counter values received from the second set of performance counters, where the second set of performance counters track respective quantities of specific events occurring at one or more non-shader components such as a command processor, a shader resource arbiter, dispatch controllers, and memory resources such as an L2 cache.
- non-shader components such as a command processor, a shader resource arbiter, dispatch controllers, and memory resources such as an L2 cache.
- the performance counters and corresponding performance counter data, nSEp includes or is otherwise indicative of a vertex rate, a primitive rate, and/or an L2 cache access rate.
- the controller 108 calculates a differential, SE P -nSE P , between the first performance counter data and the second performance counter data.
- hysteresis is used to filter the calculated differential values over time in order to avoid switching clock signals based on transient glitches.
- the controller 108 periodically updates (i.e., recalculates) the value of the differential, and selects the values of the control signals SO and S1 based on the value of the differential over time.
- the controller 108 determines that the differential is within a predefined range of values between an upper threshold and a lower threshold, referred to herein as a guardband, the controller 108 selects values of SO and S1 that cause CLKA and CLKB to have a 1 : 1 clock ratio (i.e., the frequency of CLKA equals the frequency of CLKB).
- the range of differential values that defines the guardband is selected based on switching latency or a time required to enforce a change in clocking frequency.
- the controller 108 determines that the differential is higher than the upper threshold of the guardband for longer than a predefined continuous time period, generally indicating a shader-heavy workload is being processed by the GPU 100, the controller 108 selects values of SO and S1 that cause CLKA to have a higher frequency than CLKB (e.g., setting the frequency of CLKA to that of CLK, and the frequency of CLKB to that of CLK/2). In this way, clocking of the SEs 104 is scaled back (i.e.
- the GPU 100 includes multiple shader engines, each having respective shader engine modules.
- the shader engine modules included in a given shader engine of the GPU 100 are replicated or cloned across all shader engines of the GPU.
- asymmetric workloads are able to be assigned to each shader engine, and the clock frequency scaling methods described herein are applied according to a global scheme, such that the clock frequencies of the clock signals supplied to the shader engine modules of each respective shader engine in the GPU 100 are individually selectable.
- the shader engines of the GPU 100 are assigned symmetric workloads and are all clocked using the same clocking frequency in accordance with the clock frequency scaling methods described herein.
- FIG. 2 shows an illustrative GPU 200 in which clock frequency scaling is implemented between SEs and the nSEs via dividers that are disposed on each tile of the SEs and nSEs.
- the GPU 200 includes a phased lock loop (PLL) module 202, SEs 204, nSEs 206, a controller 208, performance counters 209, a FIFO memory module 212, and a clock mesh 214.
- each of the SEs 204 includes, for example, a geometry processor, a primitive unit, multiple compute units, rasterizers, and render output units (ROPs), a ring buffer (RB), and an L1 cache.
- the nSEs 206 include a command processor, a shader resource arbiter, dispatch controllers, and memory resources such as an L2 cache.
- the SEs 204 are implemented on a quantity, N, of tiles 216, where each tile 216 includes a respective divider 210.
- a “tile” refers to a spatially coherent group of processing and/or memory elements (e.g., compute units, memory cells, and the like), where elements of the SEs 204 and the nSEs 206 are partitioned into such tiles in the present example.
- the nSEs 206 are implemented on a quantity, M, of tiles 217, where each tile 217 includes a respective divider 211.
- each of the dividers 210 and the dividers 211 corresponds to the divider 310 of FIG. 3, but are modified to include only a single clock signal output and, optionally, to include additional flip flops for additional selectable clock divisions.
- all dividers 210 output the same clock signal, CLKA, while all dividers 211 output the same clock signal CLKB, where CLKA and CLKB will have the same frequency or different frequencies, depending on the values of the control signals SO and S1 output by the controller 208.
- the frequency CLKA is independently controllable from the frequency of the CLKB.
- the clock signal frequency of CLKA is selected based on the control signal SO output by the controller 208 to the dividers 210, and the clock signal frequency for CLKB is selected based on the control signal S1 output by the controller 208 to the dividers 211.
- each control signal SO and S1 carries multiple bits of control data and multiple flip-flops are included in the each of the dividers 210 and 211 , allowing for one of more than two clock frequencies (e.g., CLK, CLK/2, CLK/4, CLK/8, etc.) to be selected for clocking the SEs 204 and the nSEs 206.
- the dividers 210 and dividers 211 allow the SEs 204 and the nSEs 206 to be selectively clocked with clock signals of the same frequency or different frequencies.
- the controller 208 is configured to determine the ratio of frequencies between CLKA and CLKB to be output by the dividers 210 and dividers 211 , respectively, based on respective sets of performance counter data obtained from performance counters associated with the SEs 204 and the nSEs 206.
- the controller 208 receives first performance counter data, SE P , and second performance counter data, nSE P , from first and second sets of performance counters of the performance counters 209 and sets the values of the control signals SO and S1 based on the performance counter data, as described in connection with FIG. 1 , above.
- the controller 208 calculates a differential, SE -nSE , between the first performance counter data and the second performance counter data.
- the controller 208 periodically updates (i.e., recalculates) the value of the differential, and selects the values of the control signals SO and S1 based on the value of the differential over time. For example, if the controller 208 determines that the differential is within the predefined guardband, the controller 208 selects values of SO and S1 that cause CLKA and CLKB to have a 1 :1 clock ratio (i.e., the frequency of CLKA equals the frequency of CLKB).
- the controller 208 determines that the differential is higher than the upper threshold of the guardband for longer than a predefined continuous time period, generally indicating a shader-heavy workload is being processed by the GPU 200, the controller 208 selects values of SO and S1 that cause CLKA to have a higher frequency than CLKB (e.g., setting the frequency of CLKA to that of CLK, and the frequency of CLKB to that of CLK/2).
- clocking of the SEs 204 is scaled back (i.e., reduced in frequency) when the workload of the GPU 200 involves comparatively high non-shader-engine (e.g., memory) activity
- clocking of the nSEs 206 is scaled back (i.e., reduced in frequency) when the workload of the GPU 200 involves comparatively high shader activity, thereby reducing power consumption in the GPU 200 compared to implementations in which a single, universal clock is used for both SEs and nSEs.
- the GPU 200 will generally having increased latency for clock frequency changes due to the distance between the dividers 210, 211 and the controller 208, which is offset by the comparatively lower clock tree divergence of the GPU 200.
- FIG. 3 depicts an illustrative block diagram of a divider 310.
- the divider 310 corresponds in whole or in part to one or more of the divider 110 of FIG. 1 , and the dividers 210and 211 of FIG. 2.
- the divider 310 includes a delay circuit 322, a flip flop 320, a first multiplexer 324, and a second multiplexer 326.
- the divider 310 receives a clock signal CLK at a clock input.
- the clock signal CLK is then received by the delay circuit 322 and the flip flop 320.
- the flip flop 320 halves the frequency of the clock signal CLK to produce a clock signal CLK/2.
- the delay circuit 322 provides an amount of delay to the clock signal CLK that is equal to the delay introduced to the clock signal CLK by the flip flop 320 to produce the clock signal CLK/2, such that the clock signal CLK output by the delay circuit 322 is synchronized with the clock signal CLK/2 output by the flip flop 320.
- the first multiplexer 324 receives the delayed clock signal CLK, the clock signal CLK/2, and a control signal SO.
- the first multiplexer 324 outputs a clock signal CLKA that is a selected one of the delayed clock signal CLK and the clock signal CLK/2, selected based on the control signal SO.
- the second multiplexer 326 receives the delayed clock signal CLK, the clock signal CLK/2, and a control signal S1.
- the second multiplexer 326 outputs a clock signal CLKB that is a selected one of the delayed clock signal CLK and the clock signal CLK/2, selected based on the control signal S1.
- the multiplexers 324 and 326 receive the control signals SO and S1 , respectively, from an external controller.
- the external controller corresponds to either of the controllers 108 and 208 of FIGS. 1 and 2.
- FIG. 4 depicts a graph 400 illustrating an example of how the differential 402 between first and second performance counter data, SE P -nSE P , as described above, changes over time with respect to the upper threshold A and lower threshold B of a predefined guardband 404.
- the graph 400 is described with respect to an example implementation of the GPU 100 of FIG. 1 , though it is also applicable to the GPU 200 of FIG. 2.
- the controller 108 calculates the differential SE p -nSE P based on the performance counter data SE P and nSE P is provided to the controller 108 by the performance counters 109. In some embodiments, the controller 108 calculates the differential 402 periodically, such that the calculated value of the differential 402 is regularly updated by the controller 108. In some embodiments, the controller 108 recalculates the differential 402 each time new performance counter data SE P and nSE is provided to the controller 108 by the performance counters 109. In the present example, it is assumed that the frequencies of CLKA and CLKB output by the divider 110 are equal at point 406.
- the controller 108 determines that the differential 402 has been less than the lower threshold B of the guardband 404 for longer than a predefined time period, indicating that a majority of the workload being handled by the graphics processing unit 100 is being performed by the nSEs 106 for longer than the predefined time period.
- the controller 108 modifies the control signal S1 to decrease the frequency of the clock signal CLKB, used to clock the nSEs 106, to a lower frequency, such as CLK/2.
- the controller 108 determines that the differential 402 has crossed above the lower threshold B, indicating a more balanced workload between the nSEs 106 and the SEs 104. In response to determining that the differential 402 has crossed above the lower threshold B, the controller 108 modifies the control signal S1 to increase the frequency of the clock signal CLKB to be equal to that of the clock signal CLKA, used to clock the SEs 104.
- the controller 108 determines that the differential 402 has crossed above the upper threshold A of the guardband 404, indicating that the majority of the workload being handled by the GPU 100 is being performed by the SEs 104.
- the controller 108 determines that the differential 402 has remained above the upper threshold A for longer than the predefined time period. In response to determining that the differential 402 has remained above the upper threshold A of the guardband 404 for longer than the predefined time period, the controller 108 modifies the control signal SO to decrease the frequency of the clock signal CLKA to a lower frequency, such as CLK/2.
- the controller 108 determines that the differential 402 has dropped from being higher than the upper threshold A to being lower than the lower threshold B, indicating that the processing workload has shifted suddenly from being primarily handled by the SEs 104 to being primarily handled by the nSEs 106.
- the controller 108 modifies the control signal SO to increase the frequency of CLKA to match the frequency of CLKB.
- FIG. 5 depicts an illustrative process flow for a method 500 of selectively modifying clock signals supplied to SEs and nSEs of a GPU, in accordance with some embodiments. The method 500 is described with respect to an example implementation at the GPU 100 of FIG. 1 and its constituent components.
- a first set of the performance counters 109 generates first performance counter data, SE P , based on monitored activity in the SEs 104.
- the first performance counter data, SE P includes or is indicative of scalar and vector ALU activity, pixel rate, L1 cache hit rate, and/or shader memory access rate.
- a second set of the performance counters 109 generates second performance counter, nSE P , data based on monitored activity in the nSEs 106.
- the second performance counter data, SE P includes or is indicative of a vertex rate, primitive rate, and/or L2 cache access rate.
- the differential, SE P -nSE P represents a difference in processing workloads between the SEs 104 and the nSEs 106.
- the controller 108 determines whether SE P -nSE P has remained below the lower threshold of a predefined guardband for longer than a predefined threshold time period. If SE P -nSE remains below the lower threshold for longer than the predefined time period, the method 500 proceeds to block 510. If SE P -nSE P is above the lower threshold or has not remained below the lower threshold for longer than the predefined time period, the method 500 proceeds to block 512.
- the controller 108 determines whether SE P -nSE P has remained above the upper threshold of a predefined guardband for longer than a predefined threshold time period. If SE P -nSE P remains above the upper threshold for longer than the predefined time period, the method 500 proceeds to block 514. If SE P -nSE P is below the upper threshold or has not remained above the upper threshold for longer than the predefined time period, the method 500 proceeds to block 516.
- the predefined threshold time period associated with the upper threshold of the guardband is the same as the predefined threshold time period associated with the lower threshold of the guardband, while in other embodiments these predefined threshold time periods are different.
- the controller 108 decreases the frequency of one or more clock signals provided to the SE components 104.
- the controller 108 modifies the control signal SO to cause the divider 110 to output a clock signal with a lower frequency.
- such a modification of the clock signal SO causes the frequency of the clock signal CLKA output by the divider 110 to change from the frequency of the clock signal CLK received at the clock signal input of the divider 110 to half of that frequency (i.e., CLK/2).
- a method includes: independently adjusting at least one of a first frequency of a first clock signal received by one or more shader engine modules and a second frequency of a second clock signal received by one or more non-shader-engine modules of a graphics processing unit based on a first workload of the one or more shader engine modules and a second workload of the one or more non-shader-engine modules.
- the method includes determining that the differential is greater than an upper threshold of a predefined guardband for more than a predefined time period, wherein independently adjusting the at least one of the first frequency and the second frequency includes: independently adjusting the second frequency of the second clock signal without adjusting the first frequency of the first clock signal.
- independently adjusting the at least one of the first frequency and the second frequency includes: determining that the differential is between an upper threshold and a lower threshold of a predefined guardband, wherein independently adjusting the at least one of the first frequency and the second frequency includes: adjusting the first frequency of the first clock signal to match the second frequency of the second clock signal.
- a graphics processing unit includes: a divider; a plurality of shader engine modules coupled to the divider and configured to receive a first clock signal from the divider; a plurality of non-shader-engine modules coupled to the divider and configured to receive a second clock signal from the divider; and a controller configured to output a first control signal and a second control signal to the divider to selectively control a first frequency of the first clock signal and a second frequency of the second clock signal based on a first detected workload of the plurality of shader engine modules and a second detected workload of the plurality of non-shader-engine modules.
- the GPU includes: a first plurality of performance counters configured to generate first performance counter data indicative of at the first detected workload of the plurality of shader engine modules; and a second plurality of performance counters configured to generate second performance counter data indicative of the second detected workload of the plurality of non-shader-engine modules.
- the controller is further configured to: receive the first performance counter data from the first plurality of performance counters; receive the second performance counter data from the second plurality of performance counters; and independently adjust at least one of the first frequency and the second frequency based on the first performance counter data and the second performance counter data.
- the controller is further configured to: calculate a differential between the first performance counter data and the second performance counter data; and independently adjust at least one of the first frequency and the second frequency based on the differential.
- the controller is further configured to: determine that the differential is less than a lower threshold of a predefined guardband for more than a predefined time period; and independently adjust the first frequency of the first clock signal without adjusting the second frequency of the second clock signal.
- the controller is further configured to: determine that the differential is greater than an upper threshold of a predefined guardband for more than a predefined time period; and independently adjust the second frequency of the second clock signal without adjusting the first frequency of the first clock signal. In yet another aspect, the controller is further configured to: determine that the differential is between an upper threshold and a lower threshold of a predefined guardband; and adjust the first frequency of the first clock signal to match the second frequency of the second clock signal.
- a graphics processing unit includes: a plurality of dividers; a plurality of shader engine modules configured to receive first clock signals, each having a first frequency, from a first subset of the plurality of dividers; a plurality of non-shader-engine modules configured to receive second clock signal signals, each having a second frequency, from a second subset of the plurality of dividers; and a controller configured to output a first control signal to the first subset of the plurality of dividers to selectively control the first frequency of the first clock signals and to output a second control signal to the second subset of the plurality of dividers to selectively control the second frequency of the second clock signals based on a first detected workload of the plurality of shader engine modules and a second detected workload of the plurality of non-shader-engine modules.
- the GPU includes: a first plurality of performance counters configured to generate first performance counter data indicative of at the first detected workload of the plurality of shader engine modules; and a second plurality of performance counters configured to generate second performance counter data indicative of at the second detected workload of the plurality of non-shader-engine modules.
- the controller is further configured to: receive the first performance counter data from the first plurality of performance counters; receive the second performance counter data from the second plurality of performance counters; calculate a differential between the first performance counter data and the second performance counter data; and independently adjust at least one of the first frequency and the second frequency based on the differential.
- the controller is further configured to: determine that the differential is less than a lower threshold of a predefined guardband for more than a predefined time period; and independently adjust the first frequency without adjusting the second frequency.
- the controller is further configured to: determine that the differential is greater than an upper threshold of a predefined guardband for more than a predefined time period; and independently adjust the second frequency without adjusting the first frequency. In still another aspect, the controller is further configured to: determine that the differential is between an upper threshold and a lower threshold of a predefined guardband; and adjust the first frequency to match the second frequency.
- the apparatus and techniques described above are implemented in a system including one or more integrated circuit (1C) devices (also referred to as integrated circuit packages or microchips), such as the GPUs described above with reference to FIGS. 1 and 2.
- EDA electronic design automation
- CAD computer-aided design
- design tools typically are represented as one or more software programs.
- the one or more software programs include code executable by a computer system to manipulate the computer system to operate on code representative of circuitry of one or more IC devices so as to perform at least a portion of a process to design or adapt a manufacturing system to fabricate the circuitry.
- This code can include instructions, data, or a combination of instructions and data.
- the software instructions representing a design tool or fabrication tool typically are stored in a computer readable storage medium accessible to the processing system.
- the code representative of one or more phases of the design or fabrication of an IC device may be stored in and accessed from the same computer readable storage medium or a different computer readable storage medium.
- a computer readable storage medium may include any non-transitory storage medium, or combination of non-transitory storage media, accessible by a computer system during use to provide instructions and/or data to the computer system.
- Such storage media can include, but is not limited to, optical media (e.g., compact disc (CD), digital versatile disc (DVD), Blu-Ray disc), magnetic media (e.g., floppy disc , magnetic tape, or magnetic hard drive), volatile memory (e.g., random access memory (RAM) or cache), non-volatile memory (e.g., read-only memory (ROM) or Flash memory), or microelectromechanical systems (MEMS)-based storage media.
- optical media e.g., compact disc (CD), digital versatile disc (DVD), Blu-Ray disc
- magnetic media e.g., floppy disc , magnetic tape, or magnetic hard drive
- volatile memory e.g., random access memory (RAM) or cache
- non-volatile memory e.g., read-only memory (ROM) or Flash memory
- MEMS microelectromechanical systems
- certain aspects of the techniques described above may implemented by one or more processors of a processing system executing software.
- the software includes one or more sets of executable instructions stored or otherwise tangibly embodied on a non-transitory computer readable storage medium.
- the software can include the instructions and certain data that, when executed by the one or more processors, manipulate the one or more processors to perform one or more aspects of the techniques described above.
- the non-transitory computer readable storage medium can include, for example, a magnetic or optical disk storage device, solid state storage devices such as Flash memory, a cache, random access memory (RAM) or other non-volatile memory device or devices, and the like.
- the executable instructions stored on the non-transitory computer readable storage medium may be in source code, assembly language code, object code, or other instruction format that is interpreted or otherwise executable by one or more processors.
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)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Power Sources (AREA)
- Executing Machine-Instructions (AREA)
Priority Applications (5)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202180019257.XA CN115427912A (zh) | 2020-03-06 | 2021-03-05 | 用于图形处理单元的时钟控制方案 |
| JP2022550173A JP7525624B2 (ja) | 2020-03-06 | 2021-03-05 | グラフィックス処理ユニットのためのクロック制御スキーム |
| EP21763612.5A EP4115262A4 (en) | 2020-03-06 | 2021-03-05 | Clock control schemes for a graphics processing unit |
| KR1020227030970A KR102686452B1 (ko) | 2020-03-06 | 2021-03-05 | 그래픽 처리 유닛을 위한 클록 제어 방식들 |
| JP2024114543A JP7793690B2 (ja) | 2020-03-06 | 2024-07-18 | グラフィックス処理ユニットのためのクロック制御スキーム |
Applications Claiming Priority (6)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202062985985P | 2020-03-06 | 2020-03-06 | |
| US62/985,985 | 2020-03-06 | ||
| US202063050527P | 2020-07-10 | 2020-07-10 | |
| US63/050,527 | 2020-07-10 | ||
| US17/032,701 | 2020-09-25 | ||
| US17/032,701 US11442495B2 (en) | 2020-03-06 | 2020-09-25 | Separate clocking for components of a graphics processing unit |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2021178775A1 true WO2021178775A1 (en) | 2021-09-10 |
Family
ID=77554792
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/US2021/021046 Ceased WO2021178775A1 (en) | 2020-03-06 | 2021-03-05 | Clock control schemes for a graphics processing unit |
Country Status (6)
| Country | Link |
|---|---|
| US (3) | US11442495B2 (https=) |
| EP (1) | EP4115262A4 (https=) |
| JP (2) | JP7525624B2 (https=) |
| KR (1) | KR102686452B1 (https=) |
| CN (1) | CN115427912A (https=) |
| WO (1) | WO2021178775A1 (https=) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11442495B2 (en) * | 2020-03-06 | 2022-09-13 | Advanced Micro Devices, Inc. | Separate clocking for components of a graphics processing unit |
| KR20220064105A (ko) * | 2020-11-11 | 2022-05-18 | 삼성전자주식회사 | 반도체 장치 |
| US20250370949A1 (en) * | 2024-05-30 | 2025-12-04 | Xilinx, Inc. | Decoupling processing and interface clocks in an ipu |
Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20140089699A1 (en) | 2012-09-27 | 2014-03-27 | Advanced Micro Devices | Power management system and method for a processor |
| US20160379337A1 (en) * | 2015-04-01 | 2016-12-29 | Mediatek Inc. | Graphics-processing method of a graphics-processing unit and graphics-processing apparatus |
| US20170011550A1 (en) * | 2015-07-06 | 2017-01-12 | Mediatek Inc. | Apparatus for performing tessellation operation and methods utilizing the same |
| KR101723127B1 (ko) * | 2010-07-13 | 2017-04-04 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 그래픽 프로세서 내의 simd 유닛들의 동적 인에이블링 및 디스에이블링 |
| US20170199542A1 (en) | 2016-01-11 | 2017-07-13 | Qualcomm Incorporated | Energy aware dynamic adjustment algorithm |
| US20190129463A1 (en) * | 2017-10-26 | 2019-05-02 | Advanced Micro Devices, Inc. | Fine-grained speed binning in an accelerated processing device |
| US20190332138A1 (en) * | 2018-04-30 | 2019-10-31 | Qualcomm Incorporated | Processor load step balancing |
Family Cites Families (23)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6919908B2 (en) * | 2003-08-06 | 2005-07-19 | Ati Technologies, Inc. | Method and apparatus for graphics processing in a handheld device |
| US7539893B1 (en) * | 2005-09-16 | 2009-05-26 | Pmc-Sierra, Inc. | Systems and methods for speed binning of integrated circuits |
| US7739533B2 (en) * | 2006-09-22 | 2010-06-15 | Agere Systems Inc. | Systems and methods for operational power management |
| WO2008066548A1 (en) * | 2006-11-29 | 2008-06-05 | Agere Systems Inc. | Speed binning for dynamic and adaptive power control |
| US9142057B2 (en) * | 2009-09-03 | 2015-09-22 | Advanced Micro Devices, Inc. | Processing unit with a plurality of shader engines |
| US8566836B2 (en) * | 2009-11-13 | 2013-10-22 | Freescale Semiconductor, Inc. | Multi-core system on chip |
| US8736619B2 (en) * | 2010-07-20 | 2014-05-27 | Advanced Micro Devices, Inc. | Method and system for load optimization for power |
| US8495395B2 (en) | 2010-09-14 | 2013-07-23 | Advanced Micro Devices | Mechanism for controlling power consumption in a processing node |
| US8842122B2 (en) * | 2011-12-15 | 2014-09-23 | Qualcomm Incorporated | Graphics processing unit with command processor |
| KR20140088691A (ko) | 2013-01-03 | 2014-07-11 | 삼성전자주식회사 | Dvfs 정책을 수행하는 시스템-온 칩 및 이의 동작 방법 |
| US9285858B2 (en) * | 2013-01-29 | 2016-03-15 | Blackberry Limited | Methods for monitoring and adjusting performance of a mobile computing device |
| KR20140128118A (ko) * | 2013-04-26 | 2014-11-05 | 삼성전자주식회사 | 애플리케이션 프로세서 및 이의 동적 온도 관리 방법 |
| EP3058552A4 (en) * | 2013-10-14 | 2017-05-17 | Marvell World Trade Ltd. | Systems and methods for graphics process units power management |
| US9395796B2 (en) * | 2013-12-19 | 2016-07-19 | Intel Corporation | Dynamic graphics geometry preprocessing frequency scaling and prediction of performance gain |
| US9678556B2 (en) * | 2014-02-10 | 2017-06-13 | Qualcomm Incorporated | Dynamic clock and voltage scaling with low-latency switching |
| US9933845B2 (en) * | 2014-11-24 | 2018-04-03 | Intel Corporation | Apparatus and method to provide multiple domain clock frequencies in a processor |
| US9904612B2 (en) * | 2015-07-08 | 2018-02-27 | Futurewei Technologies, Inc. | Dynamic voltage/frequency scaling for multi-processors using end user experience metrics |
| US10013392B2 (en) * | 2016-01-26 | 2018-07-03 | Intel Corporation | Providing access from outside a multicore processor SoC to individually configure voltages |
| US10108564B2 (en) | 2016-03-28 | 2018-10-23 | Qualcomm Incorporated | Active and stall cycle based dynamic scaling of processor frequency and bus bandwidth |
| US10649518B2 (en) * | 2017-01-26 | 2020-05-12 | Ati Technologies Ulc | Adaptive power control loop |
| CN107194891B (zh) * | 2017-05-18 | 2020-11-10 | 上海兆芯集成电路有限公司 | 改善图像质量的方法及虚拟实境装置 |
| US11611366B2 (en) * | 2019-05-28 | 2023-03-21 | Man & Machine | Method and apparatus to thermally optimize a protective case for temperature regulation and heat transfer to or from a mobile device |
| US11442495B2 (en) * | 2020-03-06 | 2022-09-13 | Advanced Micro Devices, Inc. | Separate clocking for components of a graphics processing unit |
-
2020
- 2020-09-25 US US17/032,701 patent/US11442495B2/en active Active
-
2021
- 2021-03-05 EP EP21763612.5A patent/EP4115262A4/en active Pending
- 2021-03-05 WO PCT/US2021/021046 patent/WO2021178775A1/en not_active Ceased
- 2021-03-05 KR KR1020227030970A patent/KR102686452B1/ko active Active
- 2021-03-05 JP JP2022550173A patent/JP7525624B2/ja active Active
- 2021-03-05 CN CN202180019257.XA patent/CN115427912A/zh active Pending
-
2022
- 2022-08-18 US US17/890,520 patent/US11947380B2/en active Active
-
2024
- 2024-03-13 US US18/603,883 patent/US12498752B2/en active Active
- 2024-07-18 JP JP2024114543A patent/JP7793690B2/ja active Active
Patent Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR101723127B1 (ko) * | 2010-07-13 | 2017-04-04 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 그래픽 프로세서 내의 simd 유닛들의 동적 인에이블링 및 디스에이블링 |
| US20140089699A1 (en) | 2012-09-27 | 2014-03-27 | Advanced Micro Devices | Power management system and method for a processor |
| US20160379337A1 (en) * | 2015-04-01 | 2016-12-29 | Mediatek Inc. | Graphics-processing method of a graphics-processing unit and graphics-processing apparatus |
| US20170011550A1 (en) * | 2015-07-06 | 2017-01-12 | Mediatek Inc. | Apparatus for performing tessellation operation and methods utilizing the same |
| US20170199542A1 (en) | 2016-01-11 | 2017-07-13 | Qualcomm Incorporated | Energy aware dynamic adjustment algorithm |
| US20190129463A1 (en) * | 2017-10-26 | 2019-05-02 | Advanced Micro Devices, Inc. | Fine-grained speed binning in an accelerated processing device |
| US20190332138A1 (en) * | 2018-04-30 | 2019-10-31 | Qualcomm Incorporated | Processor load step balancing |
Non-Patent Citations (1)
| Title |
|---|
| See also references of EP4115262A4 |
Also Published As
| Publication number | Publication date |
|---|---|
| JP7525624B2 (ja) | 2024-07-30 |
| EP4115262A1 (en) | 2023-01-11 |
| US20210278873A1 (en) | 2021-09-09 |
| US20240345617A1 (en) | 2024-10-17 |
| CN115427912A (zh) | 2022-12-02 |
| JP2023516574A (ja) | 2023-04-20 |
| KR102686452B1 (ko) | 2024-07-22 |
| US11442495B2 (en) | 2022-09-13 |
| US11947380B2 (en) | 2024-04-02 |
| EP4115262A4 (en) | 2024-03-27 |
| JP2024138525A (ja) | 2024-10-08 |
| JP7793690B2 (ja) | 2026-01-05 |
| US20230096002A1 (en) | 2023-03-30 |
| US12498752B2 (en) | 2025-12-16 |
| KR20220147096A (ko) | 2022-11-02 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12498752B2 (en) | Workload-based clocking for circuitry components | |
| EP2818973B1 (en) | Apparatus and method to implement power management of a processor | |
| US9934048B2 (en) | Systems, methods and devices for dynamic power management of devices using game theory | |
| EP2593860B1 (en) | Dynamic enabling and disabling of simd units in a graphics processor | |
| EP3391211B1 (en) | Controlling scheduling of a gpu | |
| EP3391212B1 (en) | Controlling operation of a gpu | |
| EP2936274A1 (en) | Idle phase prediction for integrated circuits | |
| US20160077565A1 (en) | Frequency configuration of asynchronous timing domains under power constraints | |
| JP2008059556A (ja) | 埋め込みメモリと複数レベル電力制御部とを有するシングルチップ三次元及び二次元グラフィックプロセッサ | |
| EP4191535A1 (en) | Texture filtering with dynamic scheduling | |
| US20140201560A1 (en) | Hierarchical global clock tree | |
| EP4172770A1 (en) | Core selection based on usage policy and core constraints | |
| CN103414784B (zh) | 支持应急模式的云计算资源调度方法 | |
| US10209765B2 (en) | Method for achieving low power consumption of three-dimensional measurement chip | |
| US11061429B2 (en) | Fine-grained speed binning in an accelerated processing device | |
| US9563227B2 (en) | Approach to clock frequency modulation of a fixed frequency clock source | |
| TWI710877B (zh) | 處理器負載階平衡 | |
| US10366001B1 (en) | Partitioning memory blocks for reducing dynamic power consumption | |
| US8305124B2 (en) | Reset signal distribution | |
| JP2023076063A (ja) | 制御プログラム、情報処理装置および制御方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 21763612 Country of ref document: EP Kind code of ref document: A1 |
|
| ENP | Entry into the national phase |
Ref document number: 2022550173 Country of ref document: JP Kind code of ref document: A |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 202217048249 Country of ref document: IN |
|
| ENP | Entry into the national phase |
Ref document number: 20227030970 Country of ref document: KR Kind code of ref document: A |
|
| ENP | Entry into the national phase |
Ref document number: 2021763612 Country of ref document: EP Effective date: 20221006 |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |