PS3Blog's Naughty Dog interview ;
GamePro's interview with Jeff Morris from EPIC ;
[ http://www.ps3blog.net/2008/01/25/naughty-dog-interview/ ] ,... Q3: Do you find a global queue of jobs to be doled out upon request to be a good approach to paritioning work to the SPE’s, or is it better to assign each SPE it’s own task in the game?
A3: Naughty Dog uses a Job Manager developed jointly by Naughty Dog’s ICE team and SCEE’s ATG group. This means that we can send any type of job to any SPE, and all of the scheduling of jobs is done through a priority system. This works well, since the overhead is minimal and we achieve good load-balancing between SPEs, something that would be hard to do by allocating a whole SPU to a single task.
Q4: With streaming technologies and the included HDD in every PS3, how important is actual memory? I ask because the PS3’s OS takes up so much more of the available 512MB than the 360’s OS does.
A4: Main memory is a cache, but remember that a larger cache enables us to keep more data in memory at the same time, enabling more detail in textures. Therefore, every MB saved improves the quality of our game. We’ve solved most of our memory problems by relying on the SPEs to perform compression, both at load-time and at run-time, using techniques developed by ICE, SCEA Tools&Tech and the SCEE ATG group. So yes, memory footprint is very important to us. ...
GamePro's interview with Jeff Morris from EPIC ;
[ http://www.gamepro.com/sony/ps3/games/features/158468.shtml ] ...GamePro: Unreal Tournament 3 is clearly one of the best-looking PS3 games, and your Unreal 3.0 tech is fairly new. What's the secret for developing on the PS3? Many other studios struggle with PS3 development.
Jeff Morris: Memory optimization and technological optimization are the biggest hurdles, particularly if you're coming from a PC environment. [For a console game], think of a huge slider where we [the programmers] have to make decisions for visuals versus frame rate trade-offs. On the PC, those choices are left up to the individual.
GamePro: Could you speak more about the process of memory optimization for the PS3? Strictly from a layperson's perspective.
JM: Well, the texture for a vehicle includes many different texture maps, each with their own unique detail. One of those is the "diffuse texture," which is basically a checkerboard. There is also a "specular texture," which includes the way light catches on the object, such as crinkles on a bottle. You overlay the specular over the diffuser. [To optimize for the PS3,] we say, "I bet we could combine the diffuse and the specular textures into one texture," which can [halve the memory requirements]. We look at them and put them side by side and there is almost no difference; you just can't tell in game play. Our optimization philosophy is "optimization at no visual degradation." We can also do things like reduce the polygon count of an object to one-tenth, and you can't tell the difference.
Another advantage was having the Gears of War guys come over; they knew where good memory trade-offs could be made. The PS3 has two memory chunks, one for texture detail and one for geometry complexity, so...we can't share those pools like you can on the Xbox 360. So there were two stages; get memory in line and then get geometry in line. Once we accomplished those, the optimizations rolled back into a faster PC experience [when played] on a lower-end machine.
GamePro: Interesting. So the PS3 really is closer to a PC's setup, with separate RAM pools for graphics and system memory...
JM: ...Exactly. It reminds me of old DOS memory management. You know, "I wish I could get that one kilobyte out of the texture memory and put it into the geometry memory instead."
GamePro: So the key to the PS3's potential is in its Synergistic Processing Elements (SPEs), which function similarly to small CPU cores. How do you leverage these, and can they enhance performance?
JM: Basically, the Cell's SPEs are "accelerator processors" that function in addition to the primary processors. [To take advantage of the SPEs], we look for tasks that don't require insane CPU power but could be done in the background, in parallel. There are some threads in our multi-threaded code that we can dedicate to a single SPE, and the process will run happily in background while the main CPUs are dealing with AI and game play. If you program the Cell CPU the correct way, it is like having all these simple things in parallel. That's the thing about regular PCs; computers are really dumb, but incredibly fast. PCs can perform one little logical thing like crazy [makes rapid, back-and-forth ping-pong motion], and so we need to find those little logic checks that we can kick out to the SPEs. Doing so frees up the primary CPUs from having to do those mindless, but necessary, tasks.
GamePro: That's interesting. When I ask about the PS3, lots of developers say, "Oh, well, we're still figuring it out. It's hard." You guys seem to have a real advantage on PS3 development.
JM: You have to be disciplined and aggressive on where you optimize and how you organize it. And you have to make sure that artists aren't building assets that are never going to work.
...