What I think I want out of CPU performance in a new PC

October 9, 2016

If I'm going to consider building a new home PC (as I sort of am), one of the big questions is what sort of CPU I should build it around. There are a dizzying array of tradeoffs here, and you have to make some of them since features like ECC are only available in some models. In other words, you need to decide what you care about. ECC? Many cores? Advanced virtualization support? Overclocking capabilities? Thermal profile? And so on.

After thinking about it for a while, I think that I have two priorities, and one of them has wound up somewhat surprising me. The unsurprising priority is thermal efficiency and in particular a limit on how much heat I'm willing to have my CPU generate. I want a reasonably quiet PC and that means not generating too much heat, so a midrange TDP is my target (or at least my maximum). Looking at Intel CPUs, I'm probably aiming for about a 65 watt TDP.

The surprising priority for me is single-threaded CPU performance. I've traditionally had the view that CPU performance is not a big issue, especially single-threaded performance, but I've come around to the idea that this is actually wrong. Yes, I do things like compile Firefox with multiple cores, and I do try to use multiprocessing in general, but when it comes right down to it and I'm drumming my fingers waiting for my machine to get around to it, a fairly large amount of what I care about is actually single-threaded and going to stay that way. Firefox or Chrome interpreting the Javascript for a single website? That's single-threaded. Editor recalculations? Generally single-threaded. Video decoding? Single-threaded. And even for my photo processor, I believe that single-threaded CPU performance is reasonably important to make it responsive during editing.

Or the short version: I want to live in a glorious multi-processing world, but I don't think that I do right now. And I don't really think that that's going to fundamentally change over the next, oh, five years. Parallelizing CPU-heavy things is hard and there is only so much parallelism that can be extracted from some tasks; for example, I suspect that JavaScript performance for a single site is probably always going to be heavily biased towards single core performance.

(I do still care about multiple cores and multicore performance, and maybe programs will prove that I'm being too pessimistic here.)

Unfortunately, a focus on single-core performance with a midrange TDP probably means that I don't get nice things like ECC, since my impression is that one must give up CPU performance to get ECC if you want to stay with that midrange TDP.


Comments on this page:

By Anon at 2016-10-09 01:54:56:

Chrome interpreting the Javascript for a single website? That's single-threaded

Not all stages of loading JavaScript in Chrome are completely serialised these days (dependent on a lot of factors): https://blog.chromium.org/2014/02/compiling-in-background-for-smoother.html .

Video decoding? Single-threaded

In the right circumstances gstreamer might be able to decode multiple frames in parallel: https://cgit.freedesktop.org/gstreamer/gst-ffmpeg/commit/?id=2d2c9b1aac6f2fa3a1a7c8a9ed46b76cefe228c8 .

It's hard to know how much of a boost you'll get from things like the above though. I imagine there's diminishing returns...

The unsurprising priority is thermal efficiency and in particular a limit on how much heat I'm willing to have my CPU generate. I want a reasonably quiet PC and that means not generating too much heat, so a midrange TDP is my target (or at least my maximum). Looking at Intel CPUs, I'm probably aiming for about a 65 watt TDP.

If you only care about the noise, another solution is to put a gigantic heatsink with a slow 120 mm (or bigger) fan on the CPU. For example, I have used the inexpensive Cooler Master Hyper 212 cooler for three PC builds to this date. One even had a 105 W TDP CPU and all of them ran very quietly.

GPUs are probably a bit harder (=more expensive) to cool quietly if you want a high TDP device.

Chris, I encourage you to take a look at http://www.cpubenchmark.net/common_cpus.html -- and especially, look at the single-core benchmark that appears in smaller type under each CPU's detail page.

Frankly, the generational improvements of the last five years are pitiful. An AMDFX8350 has a single-core score of 1504; the FX6300 from 2012 gets 1406. An i5-2500 is 1871, and the modern i5-6600 is 2132 -- but the Pentium G3258 from 2012 is 2168, you just get 2 cores instead of four, but for only $70.

If you want single-core performance, the margin between what you have now and what you can buy is poor. The i7-6700K is 2333, a whopping 25% faster than what you have now (IIRC an i5-2500). Unless you have a workload that takes advantage of new instructions, you are really unlikely to notice that the new machine is faster after the first week.

Written on 09 October 2016.
« I have a blind spot where it comes to using chmod's symbolic modes
The modern web is an unpredictable and strange place to develop for »

Page tools: View Source, View Normal, Add Comment.
Search:
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Sun Oct 9 01:10:57 2016
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.