I'm working on a Skylake-H design with an i5-6440EQ processor. It has to be used in a realtime application, with a Soft-PLC software, so it has always to work at its base frequency (no turbo, no throttling), to have the required determinism. The entire fanless system has a huge heat sink that was designed for the max processor TDP (45W) at the required ambient temperature range. BIOS is set for disabling Speedstep, C-States, and other features that can affect determinism.
Sometimes I see some unwanted throttling, decreasing the clock multiplier of one or more cores by some units. It is not related to temperatures (cores are far from Tj max) but it seems related to the crossing of the package TDP max. The behaviour is depending on the running applications.
So, the question is: is TDP really the maximum power an application can use? How can I build a system that can reliably work at its base frequency, in the specified thermal range, running "any applications"?
one of the applications causing throttling was Prime95. Its recent versions are using AVX instructions. They should be not included into the Intel TDP spec, so I think I'm facing this problem.
In case the application is using AVX instruction, the frequency of every core (fixed, for realtime applications) should be lower than the core base frequency in the Intel specs.
This frequency should now be called "AVX base". What is its value for i5-6440EQ?
For the Xeon Scalable processors, this information is contained in the "Specification Update" document, but I don't recall ever seeing such tables in corresponding documents for the "Core" processors.
With an adequate cooling system, the "base" AVX frequency, is the highest frequency that is "guaranteed" to run any workload without power throttling. (It is probably not really "guaranteed", but some documents refer to this as the "AVX deterministic frequency", which suggests that Intel expects that it is not possible to exceed the TDP at this frequency.)
As an example of an earlier embedded processor, the Broadwell Xeon E5-2618L v4 is a 10-core, 75-Watt part. The base frequency is 2.2 GHz, with a maximum Turbo boost frequency of 3.2 GHz (using 1-2 cores), dropping to 2.4 GHz (using 9-10 cores). When using 256-bit AVX/AVX2 instructions, the base frequency drops to 1.8 GHz, with a maximum Turbo boost frequency of 3.2 GHz (using 1-2 cores), dropping to 2.3 GHz (using 10 cores).
It is possible that Intel has published these values somewhere, but you may be forced to guesstimate the value by testing. Prime95 is probably a decent test code -- just program lower and lower fixed frequencies until Prime95 does not hit the TDP when using all cores. Based on values seen in the server processors, I would guess that you will have to drop the frequency to about 2.2 GHz to avoid power throttling for the most power-intensive AVX/AVX2 256-bit workloads.