Top

Trroy

Trainee
CRank: 5Score: 27400

"We're using (some%) of the (console)!" ...how do they know?

This is a pretty common news topic, and I'd like to try to explain it in detail, for anyone who doesn't understand, or who "disbelieves" these numbers, because they don't understand how they are measured.

I'm going to use the PS3 as an example, since it tends to show up more often than other hardware, with this kind of news topic.
============================= ================

I'll start with the ugly stuff.

When developers state they are using N% of the PS3, they are typically referring to the percentage of cycles, each game frame, during which the SPU processors are actively working. This is directly measurable via performance anaylsis tools, so its true, the developers don't just make this stuff up. Almost without exception, the PPU core of the Cell CPU is busy for the entire frame (although some developers do not take advantage of the "leftover" time on the interleaved 2nd PPU HW thread, which the OS is not using very often, but that's another discussion), and each SPU, cycle for cycle, is actually faster, in practice, than the PPU, so the PPU is often left out of the "N% used" comment "formula". The RSX GPU is also, typically, busy for a majority of the frame, and any downtime for it, or the PPU, is often unusable for anything by non-critical "side" tasks which cannot delay the main rendering loop.

Additionally, in some cases the PPU may idle while waiting for SPU tasks to complete, and this is difficult to factor into a "% used" calculation.

That technical stuff said, then why is it so uncommon to use 100% of the SPUs for the entire frame?

Game engines basically operate as on-the-fly motion picture studios -- they work for an entire "frame" moving the actors around, making bullets fly, creating explosions, etc., and then do the work to "render" an image of that scenery to the user. The trouble with using all of the available horsepower, at all times, boils down to some simple facts about how some of the problems in game engines are figured out.

Game engines can do many things in parallel, but some things they *must* do in an ordered sequence. I'll give you a very common example:

(Step 1) Query the gamepad for input
(Step 2) Translate the input as physical impulses for movement
(Step 3) Move the player
(Step 4) Figure out where the camera should be for the frame, now that the player is in position.
(Step 5) Move other stuff that needs to move in the scene
(Step 6) Cull (remove) all the things in the scene that can't be seen by the camera, so we don't have to do lots of work to render them.
(Step 7+) lots more stuff

If you ponder the above ordering, you should see that its basically impossible to do (Step 6) without having done (Step 4 and Step 5), and that its impossible to do (Step 4) without doing (Step 3) for many kinds of games, and that it's impossible to do (Step 3) without first doing (Step 2)... so on and so forth. On top of the ordering dependancy, if you don't do (Step 6), your game will run at a snail's pace, because you will be asking the computer to do more work than it can handle at interactive framerates, unless your scene is ludicrously simple.

Later in the frame, there are all sorts of things you can do on many parallel cores -- beginning with (Step 5) and (Step 6), in the above example. Its at that point that the power of a highly parallel system comes into play, and luckily, there's a lot of work there to be done.

Still.. there's a portion of the frame where the parallel cores will end up idle (not doing work), because there's just nothing for them to do... or is that true?

Developers are inventive with "spare" horsepower -- and there are non-critical (meaning the work doesn't have to finish each frame, by a certain time) "fun" tasks that unused cores can take up, when they're not otherwise busy. Rendering a background scene? Streaming non-critical data? Making trees sway in the wind? MLAA? Recognizing a new face from a camera image? Etc, etc.

50%-70% usage numbers are commonplace for PS3 games, because that's about how much of the frame (it varies widely, mostly depending on the genre of the game, and developer skill/experience) that lends itself well to parallel tasks, both rendering and non-rendering. The remaining 30-50% of the SPU time *is* usable, but it often entails a great deal more work to get there, than the first chunk of work does. Parallelizing game logic, in particular, is arduous, and often undesirable in a cross-console game, since it might put not-so-parallel consoles in a position where they have to keep up, or in many cases, can complicate development too much to be worth the investment and remaining speed gains, unless the title is exclusive.

No matter how much parallelism a title uses, game engines always benefit from changing bad code (excuse the ridiculous example) like:

int Mult(int x, int y)
{
returnvalue(0.0);

for(i=0; i < y; ++i)
{
returnvalue += x;
}
}

z = Mult(x, y);

to something that utilizes the hardware better like:

z = x * y;

...so throughout a game engine's evolution on a particular console, it will always continue to get better and faster, via better parallelism or otherwise!

The story is too old to be commented.
Dramscus3836d ago (Edited 3836d ago )

All this suggests to me is what I already know.
Multi-platform games on the ps3 are held back by the limitations of the other consoles.
Grand theft auto and red dead redemption could have been astoundingly epic ps3 exclusive titles. Instead of shoddy ports to the ps3 from a less complex machine.

Regardless of all the console war fanboy junk. If third party publishers and developers chose the most powerful console the other ones would probably die off.
Which would be bad in a competitive sense.
Or the console developers would be forced to step their game up with the next console version.

In any case what you said just makes me dislike multi platform games even more on principle.
Too bad I have to buy them occasionally.

Trroy3835d ago (Edited 3835d ago )

Well, I feel obligated to defend the 360's design a bit -- some of the work usually allocated to the SPUs on the PS3 (like skinning), can be handled by the (superior, IMO) GPU of the 360, and the 2 "extra" cores of the Xenon CPU. Although when the 360 GPU is forced to do that work, it pretty much loses its major advantage over the RSX, more pipelines for pixel work, because it has to devote them to extra vertex work.

If I had to weigh the potential of one versus the other, it really comes down to how you make you game, and what kind of game you want to make. The 360 GPU, by itself, is fantastic, and can make some jaw dropping games... as long as you don't burden it with stuff that the rest of the 360 is not so good at, relative to the PS3. Games like RDR could probably have, for example, dropped you into some massive battle scene (like, part of the Civil War... I know the game is set in 1911, but whatever) on the PS3, and not on the 360, but... does that really make the game better?

More than likely, a PS3-exclusive version of RDR would have rendered at full 720p, and had more believable hair, cloth, and animations in general than the cross-plat version does, as well as the potential for scenes with more animated characters. It would probably also use MLAA. A 360-exclusive version may have had some nicer textures, which might correlate with some nicer normal-mapped stuff here and there, or an even crisper looking game -- I would say it would be very close to the cross-plat version otherwise.

Dramscus3835d ago

That pretty much comes down to the Xbox being able to do things faster in a row, and the ps3 being better at doing multiple things at once.

All that you said there they could have done to the ps3 port if they weren't lazy anyway.

It's possible in an exclusive version that the xbox could have done nicer textures but the ps3 could have just had larger uncompressed textures to get the same look. Their both great consoles but power wise it's always obvious. Exclusives are always of a higher graphical quality. Which of course isn't the exact name of the game because a great game is a great game. It's just fun to pick bones sometimes right.

fullmetal2973835d ago

Let me give you my definition of "maxing out" a console and give the current situation the developers are facing this console generation.

My definition of is of maxing out a console is when a developer uses every resources available and the CPU and GPU usage is at 100 percent. You can trying popping any game and trying to figure out the sudden change in framerate (which is stupid and pointless), but the only way to find the CPU usage out is through some kind software and/or an external physical meter. Since most games only uses just the PPE core and all SPE's are at idle, I highly doubt the CPU usage is any where near 100 percent load and brings me to my next point.

It takes time and money to encode instructions for SPEs and many developers say its difficult task. Every Sony console had a complex architecture and the only reason the PS2 was so successful was because it was the leading platform and the largest consumer base. But now times have changed, and the PS3 complex architecture has become a burden. Microsoft has adjusted to our economic problem and introduced a console that is a breeze to develop for and has the potential to make profit.

Dramscus3835d ago

See the thing there is they've already maxed out the xbox, which is rather disappointing. They are resorting to tricks and stuff to have great looking games. Their great looking games though don't hold a candle to the great looking games on the ps3. It's not just an opinion of mine it's the honest truth. Like I said above graphics aren't everything, they mostly just help with immersion. I haven't seen one exclusive xbox game that looks better than an exclusive ps3 game from the same time frame.
The fact of things is it's only going to get graphically better for the ps3 because it's tricky. It's showing now, but in a year or two when xbox games still look mostly the same as they do now and ps3 games are making god of war look almost cruddy everyones going to know.

Strange_Evil3835d ago (Edited 3835d ago )

.....Sorry wrong post

Bluemaster773835d ago

This was a complicated but interesting read

3833d ago