Future of physics, PhysX?

The clock is ticking, the CPU has started its evolution into parallel processing, and it wont be too long before large scale physics is possible on the CPU, in fact I'd argue that it's possible to some degree already.

At what point does the CPU transform into a vector processor like the GPU itself? :)

Physics calculations require vector calculations. A vector processor or a part of the die allocated to it (like SSE, AVX) is needed here. Whether it's implemented as an add-on card (traditional GPU) or closer to the CPU (co-processor on HT link) or even integrated into the CPU itself, it is still the same thing in essence.

This is exactly what AMD and Intel are doing. The CPU is dead. Long live the CPU.
 
At what point does the CPU transform into a vector processor like the GPU itself? :)

Never. A CPU will contain a vector processor (well, actually they already have for like a decade, but whatever), but it will never be a vector processor. A vast majority of the work done on a CPU would absolutely suck on a GPU-like design, and there are tons of things that you just can't vectorize at all. With Fusion, we are seeing the two coming closer together, but then look at Bulldozer - which only has one vector FP unit per 2 "cores". I kind of expect the CPU and GPU to stay "separate" units for a very long time (they may share a die, sure, but I more mean that they will be distinct parts), and perhaps the CPU will even delegate SSE work over to the GPU unit and drop support for that from the CPU cores.
 
I dont know about all this "unification" talk. Yes, there are many historical precedents, including the migration and integration of the FPU/vector coprocessors into the CPU. That said, those coprocessing elements do not take up a huge amount of die space. Look at Fermi or ATI's high-end GPU's. They are absolutely massive hunks of silicon. We're starting to see the inclusion of a GPU into the dies of mainstream or low-end parts, but those have very limited performance. For the kinds of applications that would benefit from accelerated physics calculations, the benefits from those types of implementations is probably marginal. I suppose its possible that we will see an integrated GPU eventually become powerful enough to accelerate physics calculations well enough that it could be used alongside more powerful discrete cards, but chances are the inclusion of a GPU into the CPU is going to require concessions that the high-end CPU/GPU market just isn't willing to make. Would you rather have something like an i7 with 6 cores or 4 cores and a GPU? Will the GPU and an effect on overclocking? etc..
 
But really, what's so special about a CPU if you strip away its vector processing capability? Why can't it be integrated into a GPU and have that as the whole package? Why wouldn't that be the next evolution after AMD's Fusion or so? I'm imagining a GPU with a few ALUs and control logic added to it. This wouldn't take up a lot of die space in comparison to the GPU die, which is as said massive in comparison, and this fusion (har) could offer some interesting possibilities in architecture and software development. It'd make for one heck of a gaming system, at the very least :)
 
All I can think about with this talk of GPU and CPU integration are old arcade boards.

Why do people talk positively about GPU and CPU unification?

I'd appreciate a change in the GPU form factor, if it was necessary. I'd even appreciate external GPUs with their own power supply so people could EASILY upgrade their GPU. But integrating the these components in one chip? That sounds very mac-ish to me.

pcvsmac.jpg
 
All I can think about with this talk of GPU and CPU integration are old arcade boards.

Why do people talk positively about GPU and CPU unification?

I'd appreciate a change in the GPU form factor, if it was necessary. I'd even appreciate external GPUs with their own power supply so people could EASILY upgrade their GPU. But integrating the these components in one chip? That sounds very mac-ish to me.

pcvsmac.jpg
external GPU sounds like a bit much.. how hard is it to open the case and pop in a new card? pretty damn easy and you dont have this clunky box hanging around. You do bring up a good point though. A lot of people upgrade their GPU's a lot more than their CPUs. Seems like a waste to add the expense of combining a high-end CPU with a high-end GPU just to throw out the whole thing every time a new generation of games comes out.
Elledan said:
But really, what's so special about a CPU if you strip away its vector processing capability? Why can't it be integrated into a GPU and have that as the whole package? Why wouldn't that be the next evolution after AMD's Fusion or so? I'm imagining a GPU with a few ALUs and control logic added to it. This wouldn't take up a lot of die space in comparison to the GPU die, which is as said massive in comparison, and this fusion (har) could offer some interesting possibilities in architecture and software development. It'd make for one heck of a gaming system, at the very least
I don't know specifics about the arcitectures, but my impression is that there really are significant differences between the two. I don't think its as simple to just replace the functionality of the vector units of a CPU with the GPU as you make it sound. Its a whole different instruction set. Basically whats happening now is that they're developing all these API's to accelerate things that have lots of linear, parallel calculations. Its still a fact that the vast majority of calculations run on computers are not of this kind of nature, and require all those generalized instructions to be executed on a "general purpose" processor. GPU's are really really good at what they do, but they aren't good for everything. you ask "whats so special about CPUs".. well, nothing! and thats the point. they do it all pretty well, but nothing amazingly well. They're flexible.

Plus, adding the proper execution units would be a substantial die area penalty. Yields would suffer at a greater than linear rate and prices would go up drastically as a result. both cypress and fermi are billions of transistors. The last thing they need is another billion+ tacked on.
 
So I just read an article on Mafia 2 http://www.extremetech.com/article2/0,2845,2368499,00.asp and the physX used in that game. Sounds interesting. According to Nvidia in that game if you use a dedicated GPU for physX then running physX on a card also rendering the graphics. Unfortunately they didn't test using a dedicated physX card. This should translate to better performance but in the world of computers nothing is usually that simple.

•Character clothing on all character models is rendered entirely on the GPU when using a dedicated PhysX card which can be anything from a GT 240 to a GTX 480

Anyone have experience with this game on a dedicated PhysX card vs not using a dedicated card and enabling it otherwise.
 
But really, what's so special about a CPU if you strip away its vector processing capability? Why can't it be integrated into a GPU and have that as the whole package? Why wouldn't that be the next evolution after AMD's Fusion or so? I'm imagining a GPU with a few ALUs and control logic added to it. This wouldn't take up a lot of die space in comparison to the GPU die, which is as said massive in comparison, and this fusion (har) could offer some interesting possibilities in architecture and software development. It'd make for one heck of a gaming system, at the very least :)

Quite a lot. You've got out of order execution, segmented memory, virtual memory, read/write permissions for different memory segments, permission (ring) levels, process switching, virtualization support, branch prediction, etc... There are very good reasons that a CPU core is several orders of magnitude bigger than a GPU SP. It isn't a simple case to add all that to a GPU. Look what happened when Nvidia tried to add a small cache to each SM, the die size and transistor count went through the roof. Small CPUs like Atom and Cortex A8 still don't have things like out of order execution - that isn't something small you can just throw in but it makes a huge difference (I think the A9 is supposed to be getting it, though). A modern CPU does a *lot* more than simply crunch numbers. Also, CPUs are much better at integer work, which is far more important than floating point work for a general purpose processor.
 
Quite a lot. You've got out of order execution, segmented memory, virtual memory, read/write permissions for different memory segments, permission (ring) levels, process switching, virtualization support, branch prediction, etc... There are very good reasons that a CPU core is several orders of magnitude bigger than a GPU SP. It isn't a simple case to add all that to a GPU. Look what happened when Nvidia tried to add a small cache to each SM, the die size and transistor count went through the roof. Small CPUs like Atom and Cortex A8 still don't have things like out of order execution - that isn't something small you can just throw in but it makes a huge difference (I think the A9 is supposed to be getting it, though). A modern CPU does a *lot* more than simply crunch numbers. Also, CPUs are much better at integer work, which is far more important than floating point work for a general purpose processor.

The A9 is OoO, yes, and doesn't really seem to give up too much performance/Watt for it. It helps of course that ARM doesn't have a bloated soft uops decoder frontend :)

But really, the SSE and soon AVX units in CPUs are quite different from the ALU, and other generic parts thrown into CPU dies these days. While compilers can automatically use SSE nowadays, it's still a completely different API, a different architecture compared to the surrounding blocks and thus just as different from the surrounding CPU die as a GPU would be. As I said before, SSE and GPU architectures are both vector processors by design and thus there is no fundamental difference between them.
 
The A9 is OoO, yes, and doesn't really seem to give up too much performance/Watt for it. It helps of course that ARM doesn't have a bloated soft uops decoder frontend :)

The A9 was also accompanied with a die shrink, though ;)

The instruction decoding isn't all that significant. It was 10-20 years ago, but it isn't now. http://www.anandtech.com/show/2493/3
Back when AMD first announced its intentions to extend the x86 ISA to 64-bits I asked Fred Weber, AMD's old CTO, whether it really made sense to extend x86... Fred said that the overhead of maintaining x86 compatibility was negligible, at the time around 10% of the die was the x86 decoder and that percentage would only shrink over time. We're now at around 8x the transistor count of the K8 processor that Fred was talking about back then and the cost of maintaining x86 backwards compatibility has shrunk to a very small number. But the benefit of backwards compatibility is huge.

But really, the SSE and soon AVX units in CPUs are quite different from the ALU, and other generic parts thrown into CPU dies these days. While compilers can automatically use SSE nowadays, it's still a completely different API, a different architecture compared to the surrounding blocks and thus just as different from the surrounding CPU die as a GPU would be. As I said before, SSE and GPU architectures are both vector processors by design and thus there is no fundamental difference between them.

Sure, so the GPU can replace the CPU's vector processor - but the CPU's vector processor is barely used 99% of the time. That is why a GPU will never replace a CPU, and the CPU will never become a vector processor. It is a completely different workload from what the CPU normally sees.

Take a look at some die shots of an i7 and you'll see what I mean: http://www.pcper.com/article.php?aid=634

At the highest level, the L3 cache takes up, what, 30% of the die area, give or take? Then in each core, the execution unit is only taking up like 15% of the die area (so the vector unit is even smaller). Compare that to a GPU, where almost the entire thing is nothing but execution units. It's a complete reversal.

Really, if you remove the vector processor from a CPU, most people wouldn't even notice. And actually, some of the more common uses of SSE can't even be replaced by the GPU, such as using it to copy memory faster.
 
At the highest level, the L3 cache takes up, what, 30% of the die area, give or take? Then in each core, the execution unit is only taking up like 15% of the die area (so the vector unit is even smaller). Compare that to a GPU, where almost the entire thing is nothing but execution units. It's a complete reversal.

Really, if you remove the vector processor from a CPU, most people wouldn't even notice. And actually, some of the more common uses of SSE can't even be replaced by the GPU, such as using it to copy memory faster.

This is exactly what I was trying to say, just better. The GPU is really good at doing work that is similar to graphics rendering in that theres lots of little, relatively simple calculations running in parallel. feed it something bigger and longer and it just doesnt work. Its just not going to happen that the CPU/GPU will totally merge, especially at the high end. We might see a bit more integration at the very low end, but what does that get you? the equivalent of 12 CUDA cores in the CPU? enough to run Aero Glass and youtube, but count anything substantial out
 
Why not just bring back the Physics cards, or even have them implemented as a chip on the MB? I want my GPU to do graphics and my CPU to do AI and game logic, none of them should be boggled down doing physics calculations if avoidable. And if it was a dedicated card, it should also be far more affordable, and possibly even faster, than buying a high-end GPU to do the physics(aka PhysX).
 
Why not just bring back the Physics cards, or even have them implemented as a chip on the MB? I want my GPU to do graphics and my CPU to do AI and game logic, none of them should be boggled down doing physics calculations if avoidable. And if it was a dedicated card, it should also be far more affordable, and possibly even faster, than buying a high-end GPU to do the physics(aka PhysX).
one issue if its integrated into the MB would definitely be the added cost and complexity. Motherboards are already pretty crammed with stuff. Adding a chip as large and complex as a dedicated PPU would be akin to adding another chipset to the board. It would add a lot to the power draw, trace routing and heat dissipation of the motherboards, as well as the cost.

and if you make it an add-in board you increase the complexity of adding the chip since now its got to have its own dedicated PCB and all that stuff, plus it takes up another slot on the motherboard. already people are having issues trying to fit everything in as a result of the proliferation of dual-slot coolers and SLI. Theres usually an x1 slot somewhere I guess, but its still something to think about. Personally I think a dedicated add-in board would really be the best solution. They could probably knock down the power , use less on-board ram, push it into a x1 form factor and make it an affordable, quiet, cooler alternative to slapping a GTS 250 in your system. Those aren't expensive, but they have a lot of downsides that negate many of the benefits. They're pretty warm, require an x16 slot, need external power, and they are dual slotted, which impacts people trying to run SLI. They could also probably use a lot of the current chip architecture, but reduce some of the features to reduce the engineering cost
 
Nvidia would also have to allow PPUs to run in a hybrid environment with AMD cards present. As these are the people who would be more inclined to buy such a product. The problem is Nvidia doesn't want to do that. They want everyone running Nvidia & only Nvidia cards in their systems.
 
Back
Top