IEEE Spectrum On The PS3 Learning Curve
An anonymous reader writes "The Insomniacs is the cover article in the December issue of IEEE Spectrum, discussing developers ramping up to the PS3 hardware. The article features Insomniac Games, who developed the PS3 launch title Resistance: Fall of Man. Despite mixed reports in the press, the Insomniac folks are delighted to be working with Sony's technology, and describe the process of helping to make or break a console launch." From the article: "Despite the delays, there's something inside the PS3 that burnished Sony's reputation as a hardware company. The heart of the machine is the powerful new Cell Broadband Engine microprocessor. Developed over the last five years by Sony, IBM, and Toshiba on a reported budget of $400 million, the Cell is not just another chip: it is a giant leap beyond the current generation of computer processors into a nextgen muscle machine optimized for multimedia tasks."
"...the Cell is not just another chip: it is a giant leap beyond the current generation of computer processors into a nextgen muscle machine optimized for multimedia tasks."
Anyone else react the same way I did?
Fox News is now spinning CPU development?
Living With a Nerd
See any serious problems with this story? Email our on-duty editor.
Yeah, I sure do - it's about good news for the PS3.
That can't be right.
Reality has a conservative bias: it conserves mass, energy, momentum...
The only thing I've seen for the PS3 that looks even remotely impressive is White Knight, and I won't believe that would be impossible on the 360 for a second. If the PS3 has any edge at all over the 360, its the one year newer Nvidia graphics chip. The PS3 MAY have more memory speed than the 360, but the 360 has twice the capacity (512 vs. 256), so I'd say that's a wash, especially since I'm not sure how the RAMBUS components in the PS3 compare latency wise to the GDDR3 in the 360. I'm sick of the Sony Hype Machine. Of course I'm also tired of the Final Fantasy Fanboys that keep Sony alive in the console market. Both Sony and Squeenix need to be taken down a notch or two.
Not a fanboi are you? You are right, though... Exclusives will make/break the PS3 because it's so different that the only way for it to shine will be the exclusives. Similarly, the cross platform games will all default down to a single PPC (with two threads) because that's all they have in common and the graphics libraries will hopefully take care of the graphics differences. The rough part of exclusives for the PS3 is that the programming model for the Cell is very, very complicated... much more complicated than the XBox360 model (which is just plain SMP). It's even further complicated by (from what I hear) the tools available for it being not-so-great.
The Cell's programming model isn't that new... it's been around for a while (PPC surrounded by a bunch of DSPs that talk to each other, the PPC, and the world through DMA). I've programmed that model before... it's a massive pain compared to the relative simplicity of generic SMP.
Back seven years ago I remember whiteboard discussions with other engineers when we first started work on the first PS2 devkits about where we hoped Sony would take the amazing technology we now had access to with the PS2 hardware. Cell is in essence exactly what we wanted to see Sony take the PS2 design philosophy.
As game developers we spend a huge amount of our time 1) organizing data 2) feeding that data to someplace to operate on it 3) sending that data back to step one to repeat the process
Cell's design makes our lives vastly simpler. It is an absolute dream to work with.
The insanely high floating point power is what is talked about most with the Broadband Engine, but it is the memory architecture that is the best part of the architecture. The internal ring bus allows us to write code that hide memory latency.
Writing for Cell is extremely straightforward. You have each SPU setup to operate on three regions of internal memory: 1) Static data 2&3) doubled buffer of dynamic data. Data is being fed into one buffer while the SPU operates on the other. With this setup optimal Cell code has all available SPUs plowing through data with very little latency from the memory subsystem.
In many ways it is very similar to writing old style code where you got your data into the chips cache, operated on it, and then wrote that data back out to main memory or somewhere else. But with Cell you now have total control of how the data is loaded into your cache due to the SPU ability to scatter DMA into local memory, and you have the internal ring bus to pass data around to other SPUs instead of having to go out to slow main memory, and of course you have 6-8(depending on the hardware you are using) SPUs all running in parallel.
It is wonderful that every PS3 is setup to easily allow install Linux and have access to the Cell devkit. There is a wonderful world beyond the archaic x86 architecture just waiting for you.
To make life for developers easy, they (IBM and Sony) should start writing patches for GCC so it can produce code that makes full usage of the Cell CPU. This does not need to be a hard task, they can make guidelines for programmers to make it easy for the compiler to optimize code for example. In the end I hope it will be like switching on a compile flag like you would do to compile with support for SIMD.
SIMD is easy compared to working with the cell.
I am sure that eventually their will be some tool-kits that will optimize some common tasks for the SPEs but will not easy.
My guess is that it will be a few years before any game really uses the Cell to the max.
See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
I agree with the fact that the Cell certainly does exhibit a lot of potential. However, I think that drawing the conclusion that excellent hardware marks an end to all criticism is ignoring the primary sticking point of the console itself -- The price. I don't think many people out there, aside from the rabid Nintendo types, honestly believe that the PS3 is a lackluster system without the ability to play great games. My sole issue with the console, and I'm sure it's one that's fairly commonly shared, is that $599 is a hell of a lot to play for a toy, no matter how amazing of a toy it is. Like it or not, the price-point difference between $250 and $599 is more than a marginal one, and there are plenty of more fiscally-reserved folks out there like me who will absolutely refuse to drop what amounts to the majority of a month's rent on a machine used to play games.
There are plenty of hardcore gamers out there that think this is a reasonable price, and I'm not knocking them for it. I'm just stating the "everyman" point of view here, and that is that Sony cannot expect to achieve any sort of pervasiveness with this unit until they adjust the price so it lands somewhere in the universe of a "casual purchase" instead of a "fairly serious investment." I could easily purchase a Wii and not feel like I'd make any major sacrifice for it, however, a PS3 would require budgeting -- and budgeting around a new game system is not something that the average individual is going to be willing to do when there are other options that there that could easily fall into the realm of general affordability.
The good news, I suppose, is that developers should really be starting to create some great stuff for the PS3 right around the time it becomes something I can justify purchasing without hating myself for.
The Cell's model isn't so much complicated as it is different. The only game programmers that have any experience with multi-threading are PC developers, and SMP is the only thing they know. SMP is hardly simple, and its very hard to get right in a scalable way. In contrast, Cell's SPEs aren't DSPs, but fully general-purpose processors. As a result, if you're familiar with an MPI model of concurrency (Cell has a built-in message-passing mechanism to facilitate this), then you should feel right at home.
A deep unwavering belief is a sure sign you're missing something...
" article features Insomniac Games, who developed the PS3 launch title Resistance: Fall of Man."
...
Which is a game that is published by Sony developed by a company that is owned by Sony
What's next "Bungie, the Developers of the XBox 360's highly anticipated shooter Halo 3, have announced that the XBox 360 is Super Powerful and that Sony Rapes Babies!"
I want to hear from EA, Ubisoft, Activision and Sega (ie. companies which have little interest in the platform) on which is easy/hard to develop for; so far EA has said that next-gen development is insanely expensive.
Can a compiler flag redesign your code? No? Then it can't do what you're asking. In order to take full advantage of the cell, you have to break your task up into parallel units and have them run on the SPUs. The SPU has a low memory overhead so you can't just throw any old piece of code at it. If you were writing something for a similar architecture I could see it, but otherwise just enabling "cell mode" won't get you much.
This Sony fanboy knows that there are two PS3 versions, the one $499 and the one for $599, the more expensive having a larger hard drive, built in wi-fi and a built in card reader. So when parent says it costs $599, it costs $599.
I think it's worth it, for all that it does, but I don't have the $599 right now.
I entered:
:D
"the Cell is not just another chip: it is a giant leap beyond the current generation of computer processors into a nextgen muscle machine optimized for multimedia tasks."
and the fish sayeth:
"Cell is not just another chip, it is a big buzzword buzzword buzzword processor buzzword buzzword buzzword buzzword."
So it's not just another chip...it's a processor!
Karma: Chameleon (mostly due to the fact that you come and go).
The only programmers familiar with multithreading are PC developers? Do you think the concurrent programming on the Playstation 2, for example, are really so different? Of course concurrent hardware programming on game consoles in some form has been standard issue since at least the days of the genesis with its 68k and z80 (iirc), and probably longer than that. Of course the skills of generations ago are fairly different, but I'd say there are plenty of people in the industry familiar with concurrency.
I'd go so far, actually, as to suggest the average Windows developer is poorer at concurrency than the average game programming veteran.
Of course all of this doesn't really contradict your argument that concurrency is not easy and will require adaptation.
-josh
As a fanboy of neither item, I wasn't accurate about the price. My apologies. I think my point still stands, though, is that the relatively more expensive price of the PS3 does, to a lot of consumers, push it into a different realm of purchase. I don't really see how that stands to be an arguable point, unless your concept of money is somehow different than mine.
As for "going to buy my fucking Wii", I'm going to wait a few months until it's cheaper, which is the nature of these sort of beasts. My world will continue to spin without a "next-gen gaming system" at its center.
While I recognize the appeal of attempting to frame all dissent as a "NINTENDO vs. SONY" war, I stopped investing my emotions in the goings-on of multi-national corporations with which I have no connection years ago. I made this post not to criticize the PS3 in any way, just to point out the fact that, for some of us, "potential" does not equate to a justifiably higher price point.
Now, deep breaths and cool your jets.
No, but there are some pretty sweet refactoring tools that IBM has. If they wanted, they could come up with a tool that does something similar.
This is the real problem with the Article. Has nothing to do with the Cell per se, just that we're getting PR crap instead of engineering information. Ask someone whose salary is not tied to the success of the platform.
That's not really the same sort of concurrency, though. game consoles have tended to have asymmetric concurrency, so the work involved less of splitting up a single algorithm to run on multiple processors and more figuring out how to run different algorithms on each processor. That's where a lot of the "one core can handle graphics, one core can handle sound, one core can handle AI" bunk comes from. Both the Xenon's cores and the Cell's SPEs are symmetric (with each other). Algorithms can be designed to utilize each of the processors for the same algorithm. Scientific programmers have a lot of experience with this (parallelizing a big matrix inversion in a finite elements code), while game programmers do not.
A deep unwavering belief is a sure sign you're missing something...
As game developers we spend a huge amount of our time 1) organizing data 2) feeding that data to someplace to operate on it 3) sending that data back to step one to repeat the process
I assume that most of this "operating on it" involves floating point operations on triangles.
And I suppose that most of the results are essentially triplets of eight bit RGB [red, green, blue] values [i.e. your results are expressed in 24-bit color], and I assume that you rarely venture much beyond screen sizes of about 1600 X 1200 pixels, or refresh rates much greater than about 60 frames per second.
Now current instantiations of the Cell processor can only perform 32-bit [single precision] floating point operations in hardware; as I understand it, 64-bit [double precision] floating point operations suffer an enormous performance penalty by contrast.
But 32-bit [single precision] floating point numbers are notoriously inaccurate; for instance, they begin to lose integer granularity as early as 16 million [2^24].
So here's my question: Have you seen any instances where 32-bit [single precision] floating point number rounding error caused unacceptable inaccuracies?
Any of your triangles come out blurry, or mis-colored, or mis-placed, or mis-aligned, simply because 32-bit floating point calculations were insufficiently exact for, say, 24 bits of color, 1600 x 1200 pixels, and 60 frames per second?
They can, but then anyone making a game with maps large enough to cause such issues commonly split up the map into chunks with their own co-ordinate space and re-centre the global co-ordinate space's origin to the origin of each chunk as the camera moves into it.
Animating objects like characters and such have all of their calculations performed in their local co-ordinate space before the result is transformed into world space.
Most also use the scale of 1.0f = 1M, so you'll be going on for a few KM's before precision becomes much of an issue.
So overall, it's hardly an issue.
Heh, yeah... I'm familiar with MPI (message passing) models of concurrency and with various MPI (the Message Passing Interface standard) libraries. From everything I've read, the SPEs are comparable to modern DSPs. They have lots of functionality but aren't really suited to running a general purpose OS (compared to the PPE, for example) for a number of reasons. Do you have a good link that talks about Cell's built-in message passing? Having built-in message passing functionality would help a lot, obviously, over having to write libraries to handle such things built only on their DMA capabilities.
Good luck with that... people have been working on it for a long time with no solution yet. Just refactoring code is not horribly difficult. Data partitioning and data flow (overlapping communication with computation in meaningful ways) are things that are a bit more difficult to handle automagically just by looking at a bunch of source code (and those are only an example of some of the problems that such a tool would face).
My girlfriend's intersted in the PS3 because of it's potential to become a media centre. There are plenty of people that would fork our $599 for a Blueray, media centre, games console. (just look at the number of people who pay more than that for a TV!)
thank God the internet isn't a human right.
I realize it's a really big [as in REALLY BIG] subject, but do you know of any books that treat this sort of thing very well?
Also, because the Cell can perform so many single-precision floating point operations in parallel, do you know of any good texts which concentrate on the theory of the parallelization of common floating point algorithms [or, better yet, on the provability of the NON-existence of parallelization of floating point algorithms]?
How much did the Atari 2600 cost when it first came out?
Hmm, maybe you're right about the difference between hardware juggling and threading.
I disagree that message passing and MPAR will give a lot if insight into optimal 9-way "SMP" design. MPAR algorithms typically assume "sufficient" nodes. 9 is quiet discrete.
-josh