Is mainstream desktop CPU development "completed"?

Page 3 - Seeking answers? Join the AnandTech community: where nearly half-a-million members share solutions and discuss the latest tech.

Ken g6

Programming Moderator, Elite Member
Moderator
Dec 11, 1999
16,698
4,659
75
Even when it would be very easy to use the extra cores, usefully.
Are you a software developer? I'm assuming you're not. Multithreading is, in general, much harder to do than single-threading. And even harder to do correctly. It introduces new potential sources of errors, which are very hard to reproduce and debug.

In that case, do you think it's ok to pay for an oversized iGPU that will not be used to it's full potential by most people anyway?

[image removed]

Or should that be removed or shrunk too?

Personally, I think that AVX code should run on the oversized iGPU. It'll have higher latency, but the throughput should make up for that in most cases where AVX would be used. (SSE will need to stay on-core due to that latency issue.)

Call it AVX-Infinity and allow it to scale to way more than 256 bits. It should be available on all processor lines down to Celerons, but the number of bits available on a given chip could be adjusted based on both artificial product differentiation and iGPU size. (I think there are usually at least two iGPU SKUs.)
 

mrmt

Diamond Member
Aug 18, 2012
3,974
0
76
It's not invented or put on the market yet, since six cores are not mainstream yet, so there is no market for it yet... ;)
.

It is invented. If people were willing to pay 6C processors would be out of stock in most places, but instead it is sitting happily in niche brackets and no meaningful numbers are buying them.
 

mrmt

Diamond Member
Aug 18, 2012
3,974
0
76
But some people, some of the time, need a scientific calculator. Because they are at University, or doing engineering/science calculations, etc.

Most people, most of the time, would be fine, with a good clock speed, quad core computer.

The six core (or more), processors, would be useful to some people, some of the time, who want to perform, long/complicated video edits, play high end video games.
.

This "some people" is the definition of niche. And it is a bad niche in my definition, because the people wishing 6C processors instead of 4C do not want to pay more for it.
 
Last edited:

Fjodor2001

Diamond Member
Feb 6, 2010
4,225
589
126
6C processors.

Ok, but I was talking about software making use of 6C in a meaningful way for a sufficiently large market segment not having been invented.

And as I wrote in my previous post, it's a chicken and egg scenario. SW companies will not develop SW for 6C CPUs until 6C CPUs are mainstream, because they would not get ROI on the additional development cost needed to design multi threaded software.

Analogy: Would you buy a telephone if nobody else had one, so there was nobody to call? Surely not. Does that mean the telephone is a useless invention? Certainly not. Chicken and egg again...
 

SOFTengCOMPelec

Platinum Member
May 9, 2013
2,417
75
91
Are you a software developer? I'm assuming you're not. Multithreading is, in general, much harder to do than single-threading. And even harder to do correctly. It introduces new potential sources of errors, which are very hard to reproduce and debug.

Good point. It is usually NOT so easy, at all. I was too hasty, to say that. I should have thought it through, better.

I agree. Multi-threading can be hard. Hopefully advancements in software languages, may be able to improve this situation. Also hopefully, future cpus can have mechanisms, to make it much easier.
 

ShintaiDK

Lifer
Apr 22, 2012
20,378
146
106
It doesnt matter if we had a gazillion cores on CPUs today. The software issue would still be the same. And no, its not some evil hardware company holding you back.

And a lot of code simply cant be parallized in any meaningful way. The more serial code the less multithreading benefits. And you get into silly situations where 50 times more cores only give you 5 or 10% more performance.
 
Last edited:

mrmt

Diamond Member
Aug 18, 2012
3,974
0
76
Ok, but I was talking about software making use of 6C in a meaningful way for a sufficiently large market segment not having been invented.

Since you are talking about 6C mainstream processors, what application becomes bottlenecked by Intel 4C processors today? That's right, none. Software developers aren't fulling exploiting the potential of current 4C processors, which don't have the supposedly chicken and egg problem you point for 6C processors because since 2007 Intel sell 4C processors to us, but as of today most developers don't develop software with 4C processors in mind. If 4C CPU power on the desktop is *not* a bottleneck, why should Intel bother with 6C processors in the first place?
 

SOFTengCOMPelec

Platinum Member
May 9, 2013
2,417
75
91
Since you are talking about 6C mainstream processors, what application becomes bottlenecked by Intel 4C processors today? That's right, none. Software developers aren't fulling exploiting the potential of current 4C processors, which don't have the supposedly chicken and egg problem you point for 6C processors because since 2007 Intel sell 4C processors to us, but as of today most developers don't develop software with 4C processors in mind. If 4C CPU power on the desktop is *not* a bottleneck, why should Intel bother with 6C processors in the first place?

Let's put it another way.

A long time ago, we had gpus. With a huge number of gpu cores, available.

So nowadays, we have complicated games available, allowing us to usefully play them.

Similarly. A long time ago, we had FPGAs. (With a very large number of usable logic gates available).

So nowadays, we have complicated FPGA setups (using VHDL etc), which quietly perform many tasks. E.g. Plasma TVs, to help them cope with the huge amount of data processing, inside the TV.

If a long time ago, we had cpus with 10,000 cores or more, as standard in our PCs.
Then (at least in theory), we would probably have many applications, which would somewhat usefully use them.

E.g. Very rapid video editing/conversion.
Super powerful chess programs.
Amazing games, using the huge number of cores, as a massive physics engine, for great effects.
Exciting movies, adjustable by the user, before they watch it. Then generated (rapidly on the 10,000+ cores).

E.g. Think of it like a Toy Story 3 film. Where the user chooses what is going to take place. Their PC, then rapidly calculates the images, and then shows you your very own, custom movie, with your chosen settings.
 
Last edited:

ShintaiDK

Lifer
Apr 22, 2012
20,378
146
106
Problem is you wouldnt. Someone would simply use something else with much better performance/watt for those niche cases. Quicksync is a case of that. Besides all the GPU compute and so on.
 

TheELF

Diamond Member
Dec 22, 2012
4,027
753
126
Ok, but I was talking about software making use of 6C in a meaningful way for a sufficiently large market segment not having been invented.

And as I wrote in my previous post, it's a chicken and egg scenario.
No it's not,the egg was laid decades ago,scientists are researching the field of concurrency since the sixties
http://en.wikipedia.org/wiki/Concurrency_(computer_science)
an parallelism at least since the start of the nineties ,
http://en.wikipedia.org/wiki/Symposium_on_Parallelism_in_Algorithms_and_Architectures
so be assured that people know very well what can be run and what will have benefits from running on multiple cores.
And guess what,every multicore benchmark that you see from time to time?
(compression/video transcoding/3d rendering ...and all the other more obscure ones )
Thats all folks...thats what benefits from multiple cores,and they support multiple cores since like forever.
 
Last edited:

mrmt

Diamond Member
Aug 18, 2012
3,974
0
76
Let's put it another way.

A long time ago, we had gpus. With a huge number of gpu cores, available.

So nowadays, we have complicated games available, allowing us to usefully play them.

FPGAs or GPUs were a bottleneck for a sizable share of the market, so some company got this message and developed an improved version. Intel developed a 6C version of their processors, but it didn't really take off despite the lower prices of their chips. Making 6C mainstream when not even 4C is fully exploited would just raise Intel costs and wouldn't fetch a better price on the market.
 

Fjodor2001

Diamond Member
Feb 6, 2010
4,225
589
126
Since you are talking about 6C mainstream processors, what application becomes bottlenecked by Intel 4C processors today? That's right, none. Software developers aren't fulling exploiting the potential of current 4C processors, which don't have the supposedly chicken and egg problem you point for 6C processors because since 2007 Intel sell 4C processors to us, but as of today most developers don't develop software with 4C processors in mind. If 4C CPU power on the desktop is *not* a bottleneck, why should Intel bother with 6C processors in the first place?

I don't think 4 or 6 cores is sufficient to trigger a "multi thread revolution". I think it would take 8, 16 or even more cores being to first become mainstream.

The thing is that the code of designing multi threaded software is essentially the same regardless of the number of cores it's intended to be executed on. I.e. if designed well you don't design for a specific number of cores, you just make the code multi threaded and it wuill take advantage of any number of cores available (up until the point where no more work can be executed in parallel of course).

So the investment cost is the same, but the benefit is greater the more cores are available. I.e. the ROI on making multi threaded SW will be higher the more cores are mainstream. And I don't think 4 cores is enough to justify the ROI in many cases.
 

Fjodor2001

Diamond Member
Feb 6, 2010
4,225
589
126
We had 6-8 threads mainstream/performance support since 2010.

And the hardware is not the reason why, its the software. And the very wast amount of software just cant be parallelized enough for it to make any difference vs the core count we got and some dream of.

So unless someone comes up with something nobody else thought about before in history that will revolutionize software multicore scaling coding to imaginary levels. Then its not going to change anytime soon. Even with only 25% serial code, more than 4 cores isnt worth it.

You have a point that it takes relatively small portion of the code to be serial for the benefit of more cores to not be so big anymore, all in accordance with Amdahl's law. But the thing is that in reality, very little code has to be serial if designed well with multi threading in mind. Depending on what you develop, the serial part of the code could be in the order of only 5-10%. And then more cores become hugely beneficial.
 

mrmt

Diamond Member
Aug 18, 2012
3,974
0
76
The thing is that the code of designing multi threaded software is essentially the same regardless of the number of cores it's intended to be executed on. I.e. if designed well you don't design for a specific number of cores

Are you saying this by your own experience or by second-hand? The programming guys I know don't share your opinion.
 

SOFTengCOMPelec

Platinum Member
May 9, 2013
2,417
75
91
FPGAs or GPUs were a bottleneck for a sizable share of the market, so some company got this message and developed an improved version. Intel developed a 6C version of their processors, but it didn't really take off despite the lower prices of their chips. Making 6C mainstream when not even 4C is fully exploited would just raise Intel costs and wouldn't fetch a better price on the market.

Good point!
If there had been a number of useful tasks (applications), which were greatly benefited by having more (than 4) cores. Then we would have seen a much larger market, for the 6 or 8 cored Socket 2011(-3) and/or AMD FX lines of processors. Such as the FX-8350 8 core.

I have to grit my teeth, and admit that many software applications, do not fully exploit the 4 cores (often) available on a modern PC.

Either because the development is so hard (as brought up in prior posts), or it simply can't be done, technically at the moment.

BUT some of the blame, I would aim at the cpu manufacturers. Because they are still VERY limited, as regards the facilities built into the cpu, for allowing multi-tasking software, to communicate, at very high speed, between separate threads/cores.
It is good that Intel are gradually bringing out (working versions) of the new TSX, multi-tasking instruction aids. Because software ONLY methods, are usually too slow, to be as useful, as programmers would like.
 

mrmt

Diamond Member
Aug 18, 2012
3,974
0
76
BUT some of the blame, I would aim at the cpu manufacturers. Because they are still VERY limited, as regards the facilities built into the cpu, for allowing multi-tasking software, to communicate, at very high speed, between separate threads/cores.
It is good that Intel are gradually bringing out (working versions) of the new TSX, multi-tasking instruction aids. Because software ONLY methods, are usually too slow, to be as useful, as programmers would like.

I blame software companies. We don't need a new cpu once a new OS is released, and most applications don't need more cpu power than they needed 5 years ago so as a result most things can now be done in more convenient mobile platform. Games need more GPU power, not CPU... Plus software tools for mt applications are still a bad business proposition for most cases (extra effort for no return), and I'm talking established tool developers like Intel, Microsoft and Nvidia, go to dark places like AMD HSFAIL and things get even worse.

Hardware companies would LOVE if people needed 6C, 8C processors because they would be able to sell more expensive products, but as a matter of fact there isn't much use for these products on the mainstream market.
 

Fjodor2001

Diamond Member
Feb 6, 2010
4,225
589
126
Are you saying this by your own experience or by second-hand? The programming guys I know don't share your opinion.

By own experience from working as a software engineer for more than 10 years in various areas. I should add that it does vary to what amount the code can be parallelized though and to what effort, depending on the type of SW and programming language and availability of libraries etc to ease the work.

Also, please note that I'm of course talking about the actual percentage of executed CPU instructions that can be executed in parallel, which is what matters. Not the percentage of the lines of source code or anything like that, if someone would have believed that. So typically if 100 loops each over 1000 items can be parallelized, that will generate a huge percentage of parallelize-able code, even if the lines of code are relatively few.
 
Last edited:

Trovaricon

Member
Feb 28, 2015
32
55
91
By own experience from working as a software engineer for more than 10 years in various areas.
Please, theorycraft is one thing, reality is something completely different. Demand for software engineers is big because everyone and their mother asks for his custom software. This results in simple fact: many (and sorry, but this is true - majority) of software engineers are not capable of doing what all topics of similar nature dream about. In business applications you see many struggling with handling computation / data retrieval asynchronously on non UI thread (and then came heretics like MS and "forbid" doing it in WinRT :eek:).
Don't even get me started on application that requires server grade CPU not because of masterpiece parallelized code being executed but because algorithm takes so much memory, that there is no desktop CPU which could run it. It runs in single thread (it is DB data retrieval + computation algorithm) at least 50% slower because of lower clocks compared to desktop CPU variants and it takes hours.

Even if you have people capable of writing such code, everyone uses third party libraries (best "anti-multithread" example - ORMs), computation & data serialization and many other kinds of pre-existing code authors of which might not like to "meet you alone in the dark alley". Go tell your customer or your boss how many hours you need on top to make it work... You must be very good at persuasion and often outright lie.

// end of view on "reality" for forum dreamers


I share my opinion with Ken g6 - instructions of AVX width (now I mean 256 / 512 bits wide not 128) should be moved to high latency vector processors.

View of companies (and esp. one particular):
What do you need more cores (performance) for? I see mentions of rendering / scientific calculations. Well you can buy workstation / server grade HW. If you do it for living, you can afford it!
Oh you are doing it in your free time? Sorry, we won't cut our margins because of "microscopic niche"
 
Last edited:

SOFTengCOMPelec

Platinum Member
May 9, 2013
2,417
75
91
Personally, I think that AVX code should run on the oversized iGPU. It'll have higher latency, but the throughput should make up for that in most cases where AVX would be used. (SSE will need to stay on-core due to that latency issue.)

Call it AVX-Infinity and allow it to scale to way more than 256 bits. It should be available on all processor lines down to Celerons, but the number of bits available on a given chip could be adjusted based on both artificial product differentiation and iGPU size. (I think there are usually at least two iGPU SKUs.)

How exactly would this work out ?

Let's say (hypothetically), I am running a massive video conversion program in the background (on my latest I7, 4C/8T). But it could be playing chess or anything, which is very cpu intensive.

Let's also assume it heavily uses AVX2. Which is now ONLY available on the igpu, if I understand you correctly.

So it is going to take 3 hours to finish converting the video, or solve the chess problem, or whatever.

I want to play some 3d (low cpu load) games, on the igpu.

How can my game, take up all the igpu, AND the cpu carry on processing its stuff, with the tied up igpu ?
 

Trovaricon

Member
Feb 28, 2015
32
55
91
How can my game, take up all the igpu, AND the cpu carry on processing its stuff, with the tied up igpu ?
There is a reason why I wrote high latency vector processors and not iGPU.
What I described would not work on any existing CPU. And it seems that no one is even trying to go this way - to hide WHAT executes instruction from "common supported pool". Instead we see explicit signalling for co-processor up to higher software layers (e.g. HSA)

Wide vector instructions are mostly suitable for application on streams or matrices where "intervention" from scalar ALU is sparse.
128bit vectors? There are "notoriously" known algorithms with 4 float vectors for anything that has to do with space. That is why AMD's flex-fpu looked quite interesting.
 

Markfw

Moderator Emeritus, Elite Member
May 16, 2002
27,266
16,119
136
No it's not,the egg was laid decades ago,scientists are researching the field of concurrency since the sixties
http://en.wikipedia.org/wiki/Concurrency_(computer_science)
an parallelism at least since the start of the nineties ,
http://en.wikipedia.org/wiki/Symposium_on_Parallelism_in_Algorithms_and_Architectures
so be assured that people know very well what can be run and what will have benefits from running on multiple cores.
And guess what,every multicore benchmark that you see from time to time?
(compression/video transcoding/3d rendering ...and all the other more obscure ones )
Thats all folks...thats what benefits from multiple cores,and they support multiple cores since like forever.

I agree. But there are a number of processes that benefit from more cores. F@H for one can utilize almost an infinite number of cores. You have to have 24 cores to even get the big units. And I am sure there are hundreds more examples that can and do use lots of cores.