About the cooler: While the DeskMini x600 comes with its own (noisy) cooler, because AMD's coolers are too high, the DeskMini B860 comes without cooler, and one can use Intels cooler with it; the maximum cooler height is 47mm, and Intel's cooler fits, with little headroom, but that has the anvantage of pulling in the air from outside the case.
So I decided to try making it quiet enough that I would not normally hear it, for use as my desktop machine. Maybe the Intel cooler would have been good enough after taking the other measures (see below), but we had a Thermalright AXP90-X36 lying around, which should perform better with its four heat pipes (We originally bought the AXP90-X36 for the Deskmini X600, but we could not mount it there). Thermalright also offers the AXP90-X47, which should fit exactly and perform a little better.
Mounting the AXP90-X36 required what the installation guide shows as "reverse installation" of the back plate (with the "AM4" writing visible), because otherwise some components on the board would be in the way; this also requires using the long screws. The wings of the back plate bent quite a lot when screwing the nuts; I screwed until the spacers on the screws reached the motherboard, and my impression is that the pressure exerted from that is much higher than the pressure exerted by the Intel cooler. In any case, the result could be mounted on the mainboard support and the case of the Deskmini again, and it works.
With the "Performance" setting, the AXP90-X36 was about as loud as the Intel cooler.
So I created a custom setting that uses 25% up to 65°C, then linearly rises to 100% at 85°C. With this setting I cannot hear the Deskmini from half a meter in a relatively quiet room during the day (the biggest noise source is the city noise coming through a closed modern window to an inner courtyard; there will be less noise at night). I also reduced the power limit from 75W to 25W, to avoid getting above 65°C even under load.
Maybe the Intel cooler would have been as quiet with that setting, too, so if you build something like that, you may want to try it out before buying an additional cooler.
First, let's look at the temperature: Putting full load on a single P-Core (15W extra) results in a jump up by about 12°C within a second. For a single E-Core the numbers are 12W and 11°C. Putting load on more cores results in lower temperature jumps, because the power per core is lower (especially with 25W power limit).
The fan control reacts slowly: When I am in the BIOS and switch from silent to full speed, the fan speed increases in steps for quite a while (maybe 5% more, every 5 seconds) until it reaches the full speed (100%) of around 3000RPM (for the AXP90-X36). Switching back to the silent mode results ina similarly slow reaction stepping down.
Both combined means that you need quite a while under load until the fan spins up (if it does at all; I have not waited long enough until the temperature was shown as 65°C). This is nice for avoiding distracting spinups and spindowns when using the machine, but it also means that it's slow to evaluate changes in settings. As far as distraction is concerned, the system could do better by performing the spinups and spindowns continuously, rather than in steps.
Anyway, with the AXP90-X36, I saw ~600RPM at 20%, ~800RPM at 25%, ~1000RPM at 30%, and with the 30% setting I did not hear the fan from half a metre in the quiet room described above. I chose 25% as the base speed for my custom profile so I should not hear it even at night, when the noise level is lower.
The temperature at idle (6.6W package power consumption) is 15°C above the environment, so with 25W it should eventually be around 60°C above the environment with the same 25%/800RPM setting, but I did not wait that long, and with my custom setting and environment temperature the speed starts to rise before 60°C above the environment is reached.
CorWatt PkgWatt 0.8 6.5 Core 225 0.1 4.2 Ryzen 8700GMeasured at the mains:
Windows Linux 8W 9W DeskMini B860 Core 225 (according to c't) 9W 7W DeskMini X600 Ryzen 8700G 27W 25W Asus Pro A620M-C, Ryzen 8700G, 2 SSDs, BeQuiet SB8-350W
sieve bubble matrix fib fft release; CPU; gcc 0.0183 0.0281 0.0082 0.0229 0.0089 20260722; Core Ultra 225 P-core 4900MHz; gcc-14 0.0218 0.0183 0.0125 0.0282 0.0104 20260722; Core Ultra 225 E-core 4400MHz; gcc-14 0.0201 0.0209 0.0116 0.0307 0.0128 20260722; Ryzen 8700G 5000MHz; gcc-12.2These are pretty comparable (the different gcc version makes little difference in this case). The Core 225 does well here.
8000x8000 double precision matrix multiplication with libopenblas with OMP_NUM_THREADS=1 (first column is seconds elapsed, lower is better; third column is CorWatt):
s MHz W 15.18 4888 15 Core 225 P-Core (Lion Cove) 22.79 4172 11 Core 225 E-Core (Skymont) 13.22 5098 11 Ryzen 8700G (Zen4)It's unclear why the Core 225 E-Core does not use the full clock rate that it is allowed to use (4400MHz). The PkgWatt rises by 19W on the Ryzen, only by the CorWatt (15W or 11W) on the Core.
# P-Cores only (6):
$ OMP_NUM_THREADS=6 taskset -c 0-5 perf stat ./blas 4000
13_004_361_506 cpu_core/cycles/ # 4.685 GHz
33_303_548_695 cpu_core/instructions/ # 2.56 insn per cycle
0.468524609 seconds time elapsed
# all cores (6P, 4E)
$ OMP_NUM_THREADS=10 taskset -c 0-9 perf stat ./blas 4000
15_991_308_711 cpu_atom/cycles/ # 4.222 GHz (37.59%)
16_995_341_350 cpu_core/cycles/ # 4.487 GHz (62.41%)
35_193_116_334 cpu_atom/instructions/ # 2.20 insn per cycle (37.59%)
38_310_894_697 cpu_core/instructions/ # 2.25 insn per cycle (62.41%)
0.419803521 seconds time elapsed
The same with 25W power limit (used from now on):
# P-Cores only
$ OMP_NUM_THREADS=6 taskset -c 0-5 perf stat -r 10 ./blas 4000
12_410_367_612 cpu_core/cycles/ # 2.911 GHz ( +- 0.19% )
34_393_875_910 cpu_core/instructions/ # 2.77 insn per cycle ( +- 0.52% )
0.72052 +- 0.00239 seconds time elapsed ( +- 0.33% )
# all cores (6P, 4E)
$ OMP_NUM_THREADS=10 taskset -c 0-9 perf stat -r 10 ./blas 4000
13_863_980_998 cpu_atom/cycles/ # 2.118 GHz ( +- 3.55% ) (37.13%)
16_538_989_540 cpu_core/cycles/ # 2.527 GHz ( +- 0.85% ) (62.87%)
30_518_917_609 cpu_atom/instructions/ # 2.20 insn per cycle ( +- 2.73% ) (37.13%)
47_519_936_722 cpu_core/instructions/ # 2.87 insn per cycle ( +- 5.77% ) (62.87%)
0.72615 +- 0.00552 seconds time elapsed ( +- 0.76% )
# Ryzen 8700G all cores (8)
OMP_NUM_THREADS=8 taskset -c 0-7 perf stat -r 10 ./openblas 4000
12_288_317_964 cycles # 3.183 GHz ( +- 0.45% )
18_090_910_726 instructions # 1.47 insn per cycle
0.52162 +- 0.00318 seconds time elapsed ( +- 0.61% )
So, once the power limit is down to 25W, the Ryzen shines. It might
also shine at 75W, but I am too lazy to raise the power limit to try
that out. Using the E-Cores in addition to the P-Cores does not pay
off in this setting.
Note that the number of instructions is lower on the Ryzen 8700G because it uses AVX-512 while the Core 225 uses AVX-256 (but the speedup due to AVX-512 is probably small). The number of cycles is similar on the Ryzen 8700G and on the P-Cores of the Core 225, but the Ryzen divides the cyles among more cores (8 instead of 6) and each core runs a little faster (3183MHz instead of 2911MHz). It is interesting that Zen4 can get more MHz out of fewer W (per core).
Let's compare 4 cores: 4 Lion Coves, 4 Skymonts, 4 Zen4:
# 4 Lion Cove (P-Cores) on Core 225
$ OMP_NUM_THREADS=4 taskset -c 2-5 perf stat -r 10 ./blas 4000
11_310_261_028 cpu_core/cycles/ # 3.556 GHz ( +- 0.18% )
32_627_839_852 cpu_core/instructions/ # 2.88 insn per cycle ( +- 0.37% )
0.80729 +- 0.00315 seconds time elapsed ( +- 0.39% )
# 4 Skymont (E-Cores) in Core 225
$ OMP_NUM_THREADS=4 taskset -c 6-9 perf stat -r 10 ./blas 4000
14_071_394_837 cpu_atom/cycles/ # 3.682 GHz ( +- 0.14% )
32_267_961_457 cpu_atom/instructions/ # 2.29 insn per cycle ( +- 0.04% )
0.96830 +- 0.00698 seconds time elapsed ( +- 0.72% )
# 4 Zen4 cores on Ryzen 8700G
$ OMP_NUM_THREADS=4 taskset -c 4-7 perf stat -r 10 ./openblas 4000
10_511_406_616 cycles # 4.020 GHz ( +- 0.30% )
16_499_130_995 instructions # 1.57 insn per cycle
0.67329 +- 0.00283 seconds time elapsed ( +- 0.42% )
All these measurements run into the power limit of 25W. Here, the
E-Cores manage to run a little faster than the P-Cores, but not enough
by far to compensate the IPC advantage of the P-Cores. So, at least
for matrix multiplication, the P-Cores are more power-efficient than
the E-Cores (this also explains why using all cores did not help over
using all P-Cores). The Zen4 cores take fewer cycles and can fit a
higher clock rate into the 25W power limit than the others, so they
dominate this benchmark.