multi is locked as well as bunch of other stuff. there are 3 boost states, 3.2, 3.5 and 3.8Ghz
under load, it stays at 3.5Ghz and in idle is bouncing back and forth between 3.5 and 3.8Ghz
how to force it to stay always at 3.8Ghz ?
i’ve heard before this isn’t possible, which i find hard to believe.
before the OS loads, in GRUB menu, MSR register reads tell me it’s is operating at 3.8Ghz all the time at
Pboost0 voltage of 1.425V
multimeter confirms this, indeed there is 1.42V without oscillations
sorry , im not familiar with AMD options. i attached an export of your Dell’s setup options (IFR Extractor) and i see some performance related options. maybe all of the options are already visible. try disabling c-states, too.
i think mobile/laptop platforms don’t provide the same boost state options as a desktop. takecare inspiron_5576_1.0.7.zip (3.5 MB)
setup was unlocked years ago by Lost’n’Bios and all that settings tried already
as i said, during GRUB menu, cores remain at full speed. jerking starts once the OS is loaded, regardless of being it windows or linux
maybe it is PPT/STAPM thing, if so would be good to know how that algorithm determines power exceeds set limits
also, looking for a way to stress the CPU from within GRUB, just to see if it will downclock and if not how much power it will take from wall
starting windows with 1 or 2 CPU cores there is no downclocking - they both work at 3.8GHz
is there something like c-state boost limit on mobile CPUs as well or the problem is something else?
it appears as long as total APU power is below 35W two cores will boost to 3.8 and if it exceeds 35W all cores will downclock to 3.5 regardless of total APU power reaching 40W. power readings are from uprof
first thing, laptop schematic document is wrong
CPU PEAK (EDC) current is incorrect, they tried to scale it based on OCP current, with ISL62771 controller OCP is always 1.25x of the EDC value
thus the EDC was 56A, provided by 2 phases with 24A/27A Isat inductors. there is no way these can provide full load current as the phases are 180degree
shifted. they can only use second phase for very short period of time which is requirement for EDC - 1.5x of the TDC for 1ms
based on uprof numbers it seems for all cores to operate at 3.8GHz load needs at least 32A
replaced the inductors with 31A/60A Isat components. there is no difference, at least not yet, power consumption measured from wall is identical to the
consumption before replacement. no more confusion about this part at least, saturation current (Isat) is what a single phase can provide at all time as long
as mosfet can support it, which is rated 84A and well beyond inductor Isat
i’ve seen posts on OC net about APU/CPU prior Excavator uses hardcoded power management and Excavator designs use SVI2 voltage interface, which allows power
telemetry but the telemetry isn’t used so it would mean everything is hardcoded in BIOS. hardware undervolt wouldn’t help in this case unless system does get
actual values from VRM (not used, but is still wired on board)
there is also cTDP feature (25W-45W) and even though all the registers mentioned in BKDG have values of zero there might be just default one of 35W
that caps the CPU (so not entire APU, as i could load APU slightly above 50W based on uprof readings)
one CU is taking about 17W (16, 16.5, 17 there is no rule) at 3.5GHz and both CU fall within 35W in that case
similarly, one CU at 3.8GHz takes about 22-24W, and for both CU to operate at this clock it probably needed to enable cTDP and set it to 45W
typedef struct _ATOM_TDP_CONFIG_BITS
{
#if ATOM_BIG_ENDIAN
ULONG uReserved:2;
ULONG uTDP_Value:14; // Original TDP value in tens of milli watts
ULONG uCTDP_Value:14; // Override value in tens of milli watts
ULONG uCTDP_Enable:2; // = (uCTDP_Value > uTDP_Value? 2: (uCTDP_Value < uTDP_Value))
#else
ULONG uCTDP_Enable:2; // = (uCTDP_Value > uTDP_Value? 2: (uCTDP_Value < uTDP_Value))
ULONG uCTDP_Value:14; // Override value in tens of milli watts
ULONG uTDP_Value:14; // Original TDP value in tens of milli watts
ULONG uReserved:2;
#endif
}ATOM_TDP_CONFIG_BITS;
B0 36 AC 0D
which i didn’t look close enough at previously so it looked like values were 14000 and 3500
while in fact both are 3500. just to rule it out i tried patch with 3 different values to take into account
all possible combinations of uCTDP_Enable
B0 36 94 51
B0 36 94 D1
B0 36 94 91
it doesn’t change anything as the values are provided by sbios into vbios just as informative
looks like the entire feature is set as a platform config variable, CPU just reads it and adjust internal settings based on the value. probably there is no register in CPU to set it via PCI register
when C6 is disabled in BIOS highest performance state is disabled as per Processor-Systemboard Current Delivery Compatibility Check
this part looks wrong to me
ProcIddMax = MSRC001_00[6B:64][IddValue] current * 1/10^MSRC001_00[6B:64][IddDiv] * (D18F5x84[CmpCap]+1)
D18F5x84[CmpCap]+1 will be 4 and multiplied by 15.1A ends up in 60A
but the CPU doesn’t consume 15A per core, it takes 15A per compute unit (2 cores)
maybe it is not a problem and it only needs cTDP to 45W but one way or another there is a workaround
changing D18F4x16C APM TDP Control register bits CstateBoost to 0 forces all cores to P0 state
power from wall increased from 58W to 65W when stressing CPU on all cores
then i used BAR-edit trick which is usually found on youtube tutorials and after loading CPU with cpuburner (2 threads) tried to write 0 to bits 8,9,10
this locked it fully to P0 state and no more downclocking. power from wall increased to 75W
to avoid any possible stability issues some components were replaced
PL19 and PL20 changed to SRP8540A-R22M
PR298 changed to 1Kohm_1%
PC9134 change to 0.1U_10V
PC9135 change to 0.01U_16V
update: win10 loads the CPU even harder, total APU power is 55-58W, around 25W per CU
everything is a bit faster, most noticable on starting up browser with multiple tabs
nothing useful with umaf. PSS (don’t exist in menu) only related when powernow is enabled, correct? need to keep powernow disabled otherwise the CPU throtles down when dGPU is loaded