AMD Piledriver rumours ... and expert conjecture

Page 235 - Seeking answers? Join the Tom's Hardware community: where nearly two million members share solutions and discuss the latest tech.
Status
Not open for further replies.
We have had several requests for a sticky on AMD's yet to be released Piledriver architecture ... so here it is.

I want to make a few things clear though.

Post a question relevant to the topic, or information about the topic, or it will be deleted.

Post any negative personal comments about another user ... and they will be deleted.

Post flame baiting comments about the blue, red and green team and they will be deleted.

Enjoy ...
 



tumblr_m8gazsTEUV1qd5koj.jpg

What


Oh that... Slight exaggeration. Please look up to see the point flying over your heads 😛
 
You can have smart ways of using more than 1 heavy thread, but you'll depend on the OS scheduler to do it's job decently.

Gamerk has a valid point in regards to the "lock/threading" curve, since one of the main points behind it is "inter-dependencies". If you can design and make good arch calls of your program (in particular to this talk, the game engine), you can probably get rid of most of that "locking" or "messaging" overhead and have a fairly good threaded program that makes great use of the available processors (virtual or real) via the scheduler.

Now... I think you're going to the other extreme of this, gamerk. We're just in the neighborhood of 8 CPUs (and 4 becoming mainstream) and with that many, there isn't a big penalty for every split/extra process to handle stuff around.

There are key threads to every program design that has to be alone for the most part (hopefully, in one CPU), but you're always on the scheduler's hands on this one. Unless you want to hard code, which is not such a good idea for the long term like you said.

---

And what's that talk about PD not getting out and being skipped? I really doubt AMD would do that; they need to clear their FX line name, hahaha.

Cheers!

EDIT: http://www.xbitlabs.com/news/memory/display/20120910173012_Cadence_Reveals_World_s_First_28nm_DDR4_Memory_Controller.html

So, DDR4 is just around the corner, huh?
 
As a developer I would like to point out that threading is often the only practical solution to a computing problem. Even a simple case like a progress bar typically involves parallel processing - one thread for the user interface and another thread for the task itself. You need the separate threads to keep the UI responsive regardless of the heavy processing going on in the task.

Think about how this would be implemented in a single fat core processor: a single thread of code would have to simulate separate threads for the UI and the task. This is more complex and harder to do than simply having real separate threads. In the old days, some languages simulated hardware threads with virtual threads because parallel processing was not available: pretending to have parallel processing was an easier programming paradigm than the then reality of a single fat core.

AMD's emphasis on parallelism makes perfect sense to me. Tom's recent comparison of a Llano A8 to a Pentium bears this out with the A8 outclassing the pentium in most threaded tests.
 


I note photoshop, encoding, and Rendering are all easy to make parallel.



The main concern is all the under the hood stuff the OS does. Every time a thread (any thread, not even for your program) needs to access RAM, you get a lock in place while data is read/written. Have enough guys doing memory access, and you can easily start to leak performance. Same logic applies within an application when threads need to share data: One thread has to put some form of lock in place while it does its work, and if another thread needs to get in there, to bad, it has to wait. Have enough threads doing heavy work on the same data set, and you very quickly run into the problem where you spend just as much time making sure the right thread has access to the right data then you do doing any actual processing. [Hence why you will never see a linear increase in performance as you add more cores. Diminishing returns is the rule here.]

In theory, you could get around this by coping all the relevant data, but with most apps still compiled as 32-bit, the old 4GB memory barrier quickly comes into play. Nevermind how much extra RAM this would eat up...

Then you get into my main point: If two separate threads need access to the same data, and the processing will be happening in some pre-determined order, then why are you even making a separate thread in the first place?



First thing ANY program that does any amount of processing should do: Make a separate thread so the UI thread always will be able to run, regardless of workload. Its inexcusable the UI should lock up under any circumstances.

Think about how this would be implemented in a single fat core processor: a single thread of code would have to simulate separate threads for the UI and the task. This is more complex and harder to do than simply having real separate threads. In the old days, some languages simulated hardware threads with virtual threads because parallel processing was not available: pretending to have parallel processing was an easier programming paradigm than the then reality of a single fat core.

Totally wrong (at least as of Windows 95). Even when you had a single core, you still had multiple threads. The OS simply juggles threads to give the illusion of everything running in realtime (or close enough where you don't notice). Windows uses a Round-Robin Priority Scheme: The highest feasible (ready to run, not I/O blocked) thread always runs, with priority for feasible threads getting boosted over time to ensure they eventually run, with a bias to foreground processes (as of Vista/7).

Prior to Windows 95, we had to manually give up our timeslice once we were done processing, or risk other threads not getting a chance to run. All modern OS's ditched this approach, and its now the responsibility of the OS scheduler to handle thread management (thank god).

Again, the number of processor cores has no correlation to the number of threads an application can use. The ONLY thing increasing the number of cores does is allow more threads to run at a single time.
 


Find me an application that DOESN'T. I doubt any exist aside from really simple programs.

Seriously people, add the "Thread Count" category to Task Manager before commenting on how applications don't thread.

Right now, my work PC has 59 processes going. The only single threaded one is the "System Idle Process". A few things I wrote have <5 threads (simple background apps). The majority use 20+ threads (Top count goes to svchost.exe, with its 76 threads). Heck, one window in Chrome apparently uses 27...
 
This is my hunch and ONLY my hunch. CEO Rory really "axed" the marketing department and perhaps for good reason. The last thing the replacements are going to do is overhype the PileDriver. How much of the overall CPU income will it affect anyway? I think when he took over, he told the CPU division to fix it but don't overhype it.
 



I approve of that as well. Their FX marketing campaign was soooooo overhyped it made people laugh. They need to advertise products for what they are.
 


Which I again note is not easy to accomplish, especially in the context of games. Between I/O locks, thread communication, and the fact you have a sequence of things that must be done in a certain order, there is a limit to how much scaling you can get.

So I can't help but laugh when I hear people say "thread better", because theres a LOT that has to go into it. In some cases, its simply not possible.



Windows assumes halfway competent developers. The way some Linux schedulers work is silly, as I've seen threads put on the CPU that are currently I/O blocked, which is a waste of power. Windows doesn't even bother to schedule a thread if it can't run. If a higher priority thread comes along, then you don't run/get preempted.

Also, MSFT figured out that simple schedulers are usually the best. Windows makes no attempts to be a RTOS, and thats a GOOD thing.
 


That's very cool, well talking about ASUS, ASRock just sucks too much.
 


5+Ghz CPUs exist you just wouldn't want to foot the bill for it.

IBM Power7+ chips ship at up to 5.5Ghz.

http://www.engadget.com/2012/08/04/ibm-pushing-system-z-power7-chips-as-high-as-5-5ghz/


What's cost effective for a dense server doesn't work at the desktop price point.
 

I honestly did not expect all my answers to be about one number. Please drop the 5 Ghz statement and tell what is wrong with the concept now.
 
Status
Not open for further replies.