Ask HN: Why are modern Intel CPUs not getting a lot more cores?
As we move to further process nodes, I presume we have more surface area to put cores in. About a decade ago, people used to say we'd get CPUs that have the same clockspeeds but have a lot more cores. When I look at Skylake and Kabylake (rumors), I don't see the number of cores increasing (we seem to be at 2 for laptops and 4 for desktops). I know there are some SKUs like the 6850 with more, and of course, there arr Xeon chips. But .. why are desktop processors not getting beefier over the last 5-10 years?
70 comments
[ 2.7 ms ] story [ 132 ms ] threadSo the common CPUs have only a few cores, people who really want more get to pay the premium for the gamer models or Xeons, since they don't really have alternatives, and Intel knows that ;)
For servers, you can get CPUs with 4-16 small(er), low-power cores instead of a few large ones. (Atom C2xxx, Xeon-D)
Most of the time, most applications use barely any CPU at all. What you really feel is the moments when a single application suddenly needs a lot of CPU, and when it isn't parallelized it wants a single fast one, not several slower ones. I almost never see my system under 100 % load, but I regularly see processes maxing a single core.
Specially when some of those processes are CPU-hogs like firewalls and anti-virus.
> memory bandwidth limits mean the difference between optimized CPU, GPU and FPGA systems is not that much.
Well, not really -- the enormous memory throughput of GDDRx is much of what's fueled the growth in the GPGPU market over the last decade.
Bigger caches that would be required by more cores in order to keep the "usefulness" of the design in balance, would lead to higher power consumption, which a) is a primary criterium of evaluation of the product such as laptops, even before the computing power; b) not justified given typical "office+home" workload, as already mentioned in the answers.
Exact tracking basically requires a bit field with one bit for each core. The problem is with the storage overhead since a 64 core cpu would need 64 bits per cache line. However if you had a 64 core CPU you could partition it into 8 clusters with 8 cores each which means you only need 8 bits per cache line for exact tracking.
http://www.cis.upenn.edu/acg/papers/cacm12_why_coherence.pdf
But I ask, has anyone one or any language made the number of processors/hyperthreads transparent? Ideally I would just create a thread and some load balancing system would distribute it to the correct processor. Am I just behind the times?
The issue people have, usually, is about which process should have priority when (inevitably) more than one are competing for the same processor -- a question that has different answers depending on your particular type of workload.
For user applications multi-threading is overkill. It's hard to write, and there are very little benefits the average user will see. Good concurrency isn't even that important on servers. You can trash your cache and interrupt tables but you'll still handle 10million clients per node so nobody cares. Great concurrency is really only practiced in HFT and HPC.
2) Modern hardware/OS's suck at multithreading:
IO interrupts are normally handled on 1 core. While you process data on any core. This causes some non-trivial caching issues. Furthermore putting 2 10GBE nic's on the same core can prevent you from actually using all 20GBE of bandwidth you have because the processor literally isn't fast enough. Then you need to set affinity for epoll thread, etc. etc.
3) Amdahl's Law: https://en.wikipedia.org/wiki/Amdahl%27s_law
Every time you double the number of execution units, even if your calculation gets twice as fast, the improvement factor constantly decreases. Take for example a 60 second calculation that can be fully parallelized
The transitions between 8-16-32 really show you the effect coming into play. Yes the calculation is being done faster. But the overall change from 8 to 32 units saves you ~5.63seconds, while using 4x the resources.Only game engines made in DX12, and Vulkan. And still there is the major road block that Nvidia (>70% market share) only offers 1 compute thread in async-compute mode, and no parallel rendering/compute work so using DX12/Vulkan means your game will work WORSE for 70% of your consumers.
Computing world changes, updating model locations, handling network traffic, sampling user input, saving game state for autosaves, preloading resources from the disk for transitions, all need cpu time.
If you are using C++ all the way down event based IO is way more efficient for this. Having compute threads is useful depending how much physics/calculations you are doing.
2) I think they are actually very good at what can be done by now. How do you think they are so bad?
Yes, but then you need to manage IO thread affinity, this isn't commonly done. Also you need to manage what is running on which NUMA node as often on 2 node systems 1 is almost never interrupted except for cross CPU conversation.
Facebook moved to Single Socket Xeon-D's rather then bake task affinity to their HHVM run time. So yeah, people still screw this up a lot.
2)
The main answer to concurrency these days is to just swap thread stacks in userland when ever something blocks. Yeah this works fine, but it's no different then what the kernel does for you. The stack is just smaller, the swapping is baked into the user land program. So you end up breaking most debuggers, and your C-FFI gets very slow.
This isn't any faster then what the kernel is doing. It's just the language run-time limits stack size so the swapping happens faster. Setting smaller stack sizes and using Thread Groups yields similar performance.
50% parallelizable program will run 33% faster on 2 cores (not 100%) 60% faster on 4 (not 300%).
http://www.extremetech.com/computing/233453-amd-zen-benchmar...
So wait until AMD launches Zen-based chips with twice as many cores and competitive single-thread performance, for only slightly higher price. Then you'll see Intel suddenly being interested in increasing the number of cores for decent prices.
Intel does offer more cores right now, too. They've just launched a 10-core chip this year for consumers, but because they think they have no competition, they sell it for ridiculous amounts like $1,700.
https://www.engadget.com/2016/05/31/intel-debuts-its-first-1....
No sane person should ever pay that much for it. Not when AMD is going to offer 8-10 core chips for less than half that price soon, with similar performance.
This has been touted every year since the initial Athlon 64 came out and knocked intel's teeth out until it came back with the pentium pro based Yona and Nehalem chips and buried netburst.
It's still yet to be determined of Zen has anywhere near the SCP IPC that Skylake/Haswell based CPU's do so far there was only one leaked benchmark of a game in which it scored anywhere from pretty low to close to what a Haswell-E CPU brings to the table.
The pricing on Zen, especially big Zen which was the only CPU that was close to Intel's Haswell-E lineup is also unlikely to be a <200-250$ card, it's likely to cost just under what the 6800K costs which might not make it very competitive.
Also it's yet to be seen what chipset we are getting, atm you shouldn't buy AMD not because the CPU's are utter garbage, but the chipset is utter trash.
No PCIE 3.0 support, no USB 3.0/3.1, no NVME, no M.2 no many other things.
Intel's chipsets are and always were the golden standard (ever since NVIDIA stopped making Nforce 2:)) and AMD really needs to not only be competitive but to match them or beat them as far as peripherals go.
AMD is in a disadvantage out of the bat for no Thunderbolt support but it needs to come strong with low latency PCIE, a lot of PCIE interconnects, 10 gig USB 3.1 and native displayport and many other things.
If that will be a standard and the performance are at least in the 90th percentile compared to Intel AMD stands a chance, anything below that people again would not even bother.
AMD will have something similar even if the CPU will control most of the PCIE lanes in the system (usually GPU + high speed storage is over the CPU, the rest of the IO is over the PCH).
As PCIE3.0 is not supported on AM3+ motherboards because this requires native CPU/Chipset support so you are overloading a potentially already contested PCIE (especially if you are running multiple GPU's) bus which has overall less bandwidth to offer which can yield even worse performance than what is available on X99 chipsets currently which lack some of the same features but at least support PCIE3.0.
So you'll have to check for benchmarks for individual motherboards by make and model, not all reviews cover USB 3.1 or NVME since many of the reviewers don't even understand that those features can behave substantially differently so googling AM3+ USB 3.1 testing or something would be your best option some reviews do include those tests for example: https://nl.hardware.info/reviews/6106/5/msi-990fxa-gaming-am...
Overall considerably lower performance and that's against older intel motherboards that do not have native USB 3.1 support either, mostly because of PCIE 3.0 support and substantially better PCIE latency over both the PCH PCIE bridge and the native CPU PCIE lanes.
Based on the numbers from this benchmark I can tell you that the USB 3.1 10gig performance on newer motherboards is considerably better than that, just by comparing my X99 (which is also tested in the aforementioned benchmark) to my high end Z170 motherboards with the same storage peripherals. Overall I'm getting slightly better speeds on my X99 setup than they had (probably slightly faster storage) but the Z170 offers anywhere between 20 to 30% better performance depending on the benchmark with the same SSD based external storage.
You are also forgetting the psychological impact that a few seconds can make. After 3 seconds of waiting without any progress indicator you've generally lost the attention of the user and they will do something else in the meantime.
You really aren't seeing the forest though the trees. What I'm saying is it is a trade off.
Time gain: 1/2^x
Resource spending: 2^x
Figure out where the intercept based on cost.
Fires up your activity monitor or task manager and you can see that most applications have much more than one thread. Many even have tens or several tens of threads.
Finally for desktops, and especially for mobile, the die real estate is probably put to better use by incorporating a larger integrated GPU.
How did you decided to go with the X99 chipset instead of the c230/c236 (traditionally used with xeons)
So over the last ten years or so, Intel has responded to this realisation by, inter alia, using the extra transistor budget afforded by Moore's Law to move more and more of what was once on the chipset on die.
This is, practically, a much better use of silicon than simply adding more cores.
Aside from the size benefits for board layout, a smaller die would let them get more CPUs from a wafer while a lack of competition in the mobile x86 space lets them charge the same amount for each one.
(The integrated graphics are getting quite acceptable and we're starting to see PC-on-a-stick and cheap Intel tablets as a result, but I'm not sure how big a market that is)
https://en.wikipedia.org/wiki/Intel_HD_and_Iris_Graphics#Sky...
Xeons and the like dedicate much of their transistor budgets towards larger caches.
If you take that budget for caches and put it towards more execution units, you get the equivalent of Xeon Phi which is a lot of Pentiums built on today's fabrication processes.
Some people like hot-rod cars.
I don't use a GPU like normal people do. Graphics are great for parallel execution. (Obviously)
If everybody owns a Xeon 12/24 then you can make real-time software that requires it. There's not a chance any software will be written until most people have it.
GPUs handle the tasks that can be easily parallelized better than CPUs. Many supercomputers are now made from GPUs.
I have a theory that we will gradually favour business and societal forms that can be easily parallelized, i.e. on GPU.
BTW intel's growth focus is on ASICs (application-specific integrated circuits) - effectively, code pushed down to silicon. https://news.ycombinator.com/item?id=11287511 And will integrate them in future Xeons http://www.pcworld.com/article/2921832/intel-looking-to-boos...
http://www.anandtech.com/show/10553/asrock-rack-launches-2u4...
And I completely disagree with that consumers don't need many cores... That would be paramount to saying that consumers don't need GPUs. One of Intel's core arguments for bringing Phi to the masses is realtime raytracing (something for which normal GPUs suck bad). Also NVidia is working on a Phi-kind-of-thing as their next generation GPU. So we are getting there, but it was a long journey from 2006.
That said, over the last 5 years processors did get beefier. They just did not got more cores. The i5-2500K (from 2011) is slower than the i5-6600K, both have 4 cores though. But if we go back 10 years, we are looking at the Core 2 Duo, those had only two cores.
And games are also changing. Not too long ago you could still play games (like Fallout 3) with a single core. New games (like Fallout 4) rely on the processor having multiple cores, some don't even start with a dual core (Hyperthreading is needed then and saves the i3). And games supporting DX12 (and probably Vulcan) work better on the FX processors than those using DX11. More cores become more useful now, and processors will have to add more of them also in the consumer desktop area soon.
What's your personal definition of "failed"? AMD may not be the market leader but for the same price, their multicore processors are far better than Intel's offering.
Old games that haven't been properly designed to take advantage of more than 2 or 3 cores don't benefit from AMD's 8-core processors, but calling a marketing issue a failure, particularly a technical one, is simply disingenuous.
> Multiple cores is what the FX is all about. What's the one type of application that drives processor sales on the desktop? Right, games. What's one of many types of applications that do profit more from fewer stronger cores than from more slower ones? Right again, games.
False dilemma. All processes take advantage from faster cores, but more cores don't mean faster cores. More cores offer the ability to run more processes concurrently.
If an application isn't developed to take advantage of the available cores, you end up with a system where over half of the available computational resources remain idling while only 3 or 4 are taxed.
Inefficient software isn't a hardware problem.
> And games are also changing. Not too long ago you could still play games (like Fallout 3) with a single core.
That's precisely the issue. Game developers need to target the computer hardware that gamers use, and the computer hardware that the average gamer uses is very old. For instance, let's look at Steam's hardware and software survey:
http://store.steampowered.com/hwsurvey
Nearly half of the hardware runs with less than 2 cores, and around 95% runs harware with up to 4 cores.
Yet, AMD offers 6 and 8-core processors, which appear to be used by less than 2% of Steam's gaming community.
Why would video game developers spend their resources designing software that take advantage of the available computational resources provided by AMD's 6 and 8-core line of processors if this only impacts less than 2% of the gaming community?
Therefore, games keep being developed based on constrained hardware requirements.
But this is by no means a technical failure on behalf of AMD.
They are not. I talk mainly about gaming performance here, because it's the one thing where cpu performance actually matters for a relevant market. Have a look at http://www.techspot.com/review/991-gta-5-pc-benchmarks/page6... as an example. The i3-4130 (that wasn't even their fastest i3 at that time) as fast as the FX-6350, the FX-8350 slower than the old i5-2500K. AMD has not one processor that can compete with an i5-6600K in current games. It's not like you can't play modern games with an FX-8370, but with that you pay as much as with intel, you get worse FPS and your processor uses more energy. Ah, and you buy into a dead socket.
Other criteria for failure: Market share. AMD has a little bit more than 20% of the PC-gaming market, http://store.steampowered.com/hwsurvey/processormfg/. It gets less and less since the disastrous FX started.
> Inefficient software isn't a hardware problem.
If you want to sell your hardware of course it is.
> Why would video game developers spend their resources designing software that take advantage of the available computational resources provided by AMD's 6 and 8-core line of processors if this only impacts less than 2% of the gaming community?
Despite all, the FX-6300 is a popular processor. I highly doubt that number. The FX line can't have sold that bad.
> But this is by no means a technical failure on behalf of AMD.
I'm not talking technique. I'm talking about performance, both in real existing applications and on the market. In both the FX was a disaster for AMD, and I really hope the coming Zen-Architecture can make AMD relevant again. A Intel-Monoculture would be horrible, as is already visible in prices and customer-friendliness of the offerings.
Mostly down to poor support for multiple cores in software, a lot of which have some kind of legacy heritage, and some tasks not translating well to running in parallel. Take video editing, for example - generally a single task the requires straight-line speed on one core, while the rest sit idle. Games are the most intensive for multi-core CPUs, but gamers usually buy top-end components, up to and including Xeons.
If anything, we tend to have a glut of CPU performance for day to day tasks. Even low-grade CPUs like Celerons are capable daily-use machines; some tech people (a friend included) see no reason to go beyond an i3. The multi-core paradigm shift around 2005-6 also massively increased CPU efficiency over anything that came before, reducing the need for existing applications to be reworked to exploit the extra cores. Intensive Javascript on sites can really drag your browser down, but even Chrome only runs one process per tab, and few people work with more than one tab at once. Multi-cores therefore tend to take care of background tasks, with only one core at a time doing all the heavy lifting. For one of the best examples of multi-core not being the ideal solution, one need only look at the Playstation 3. The 7-core (I think?) CPU is extremely powerful, but very, very difficult to program for, creating real headaches for developers trying to exploit its potential.
Multi-core might have drastically improved power efficiency, but it hasn't completely solved the heat generation problem. With the Prescott P4, Intel realised the core was generating so much heat it presented a serious problem to cool it. Cramming 10 of those on a single die would probably cause a China Syndrome. Adding cores allowed manufacturers to clock each core lower and still crunch a similar amount of numbers while reducing the heat output, but this sacrifices straight-line speed for single tasks. Ergo, AMD and Intel have to compromise for their consumer-grade products - enough straight-line performance that it doesn't feel slow for the current task, and enough cores to keep the throughput high. Looking at the current Xeon E7 v4 series, for example, increasing the core count above 4 results in a decrease in clock speed, likely entirely down to keeping the heat under control.
Add into this, laptop sales overtook desktops sometime around 2010, which require lower power consumption above all else. You could put a 16-core CPU in a laptop, but to keep power consumption realistic each core would probably end up clocked slower than a Pentium II. Further to this, a second shift occurred a year or two later where tablet and phone sales outstripped laptops. Mobile devices based on ARM CPUs are very power-efficient for all but the most demanding tasks. I know several people who've ditched laptops altogether and use Android or iPads exclusively. Essentially, current consumers have no need for the higher number-crunching capability of a desktop, which in turn means the traditional market for Intel and AMD has shrunk noticeably. ARM CPUs are starting to come standard with 8 cores, and it's difficult to find a current device with less than 4, all helped by the ARM architecture's power efficiency. Because they run an OS designed specifically for low power, not for general purpose, the cores can be clocked lower.
A lot of factors, but as noted, Intel and AMD are still improving their CPUs, just not by cramming more cores into the same die.