yzzlthtz said:
PersianLlama said:
ElArabDeMagnifico said:
Question:
Is the PS3 hard to develop for, or is it different?
So many devs. fight at each other saying "The PS3 was easy to develop for" while the people at valve can't stand it's architecture.
Sorry if someone already answered this for you (probably).
But it's different.
Yup, different.
I've also heard that pc architecture is arguably more complicated, especially considering you have to account for any wild combination of hardware.
Actually it's not. The only significant incompatibilities come with different video cards or sound cards. Now, when it comes to the video card market the card's drivers does a large portion of the hard work for you.
When graphics hardware supports Unified Shader Model, it can make sense to design its computational units so that any of them can run any type of shader. When computational units are "unified", that is called Unified Shading Architecture. Most often such hardware is composed of an array of computing units and a dynamic scheduling / load balancing unit that distributes shader work to the computing units.
Hardware is not required to have Unified Shading Architecture to support Unified Shader Model, and vice versa. A Direct3D 10 level hardware can still have dedicated vertex, geometry and pixel processors (although because of very similar ISA, they would be quite similar on hardware level). A technologically earlier (e.g. Shader Model 3.0) hardware can also have unified architecture, as is the case with Xenos graphics chip in Xbox 360, for example.
Unified Shader Architecture allows more flexible use of the graphics rendering hardware. For example, in a situation with a heavy geometry workload the system could allocate most computing units to run vertex and geometry shaders. In cases with less vertex workload and heavy pixel load, more computing units could be allocated to run pixel shaders.
The Cell is a pretty unconventional design when it comes to processors. There is the primary core called the Power Processing Element (PPE). Then there are the eight fully-functional co-processors called the Synergistic Processing Elements (SPE). For the SPE to function correctly, it needs to be assigned a task by the PPE. The PPE found on the PS3 runs at 3.2ghz and is basically your average multi-threaded processor.
The PPE, which is capable of running a conventional operating system, has control over the SPEs and can start, stop, interrupt, and schedule processes running on the SPEs. To this end the PPE has additional instructions relating to control of the SPEs. Unlike SPEs, the PPE can read and write the main memory and the local memories of SPEs through the standard load/store instructions. Despite having Turing complete architectures, the SPEs are not fully autonomous and require the PPE to prime them before they can do any useful work. Though most of the "horsepower" of the system comes from the synergistic processing elements, the use of DMA as a method of data transfer and the limited local memory footprint of each SPE pose a major challenge to software developers who wish to make the most of this horsepower, demanding careful hand-tuning of programs to extract maximal performance from this CPU.
Before the Cell was released, an article mentioned one of the potential problems of the Cell. "This may sound like an inflexible system which will be complex to program but it?ll most likely be handled by a compiler with manual control used if you need to optimize." Of course, one of the first complaints by game developers was the lackluster development kit and poor support.
The article later states that certain compilers will simply not work with the Cell architecture, others will end up with poor performance. The PS3's SDK was released with a shoddy compiler. Much of the code had to be pre-isolated since the compiler did a very poor job. Simply put the PS3 was launched way before the SDK was ready. Early versions of the compiler even had trouble compiling the code to run on the six threads available to the developer. The latter problem affects (you guessed it) multi-platform games. This was largely considered a "dick move" by many developers in that they view it as a vain attempt to force developers into exclusively developing for the PS3.
The basic design philosophy for the Cell is to simplify the hardware significantly (thus reducing the amount of power being used) while increasing the complexity of the software that runs on it. The result is alienating any developers who wish to program a multi-platform game for the PS3 and 360 as well as the PC. Current compilers for the Cell are better then the first generation ones, but they still provide a significant challenge to anyone who wishes to port a game over to the PS3. Let us make an analogy to better understand this.
Each SPEs in the Cell can only consume a small cookie at a time. The Cell cannot take a larger cookie and split it into pieces on its own. The compiler's job includes taking a the program (the large cookie sheet) and splitting it into small cookies that can be eaten by the SPEs. For each cookie to be properly ingested by the SPE the chocolate chunks on the cookie must remain intact. If chocolate chunks are cut by the compiler, then the code becomes buggy and usually results in a bug. Current compilers are not all that effective at splitting the cookie sheet in a way that doesn't damage the chocolate chunks. What that means is that the programmer needs to manually move each of the chocolate chunks in a pattern or formation that makes the compiler's job easier. The PPE in the Cell then takes the compiled cookies and distributes them to the appropriate PPE. If any of the cookies are too big, the performance of the game suffers.
An Intel/AMD CPU is able of eating much larger cookies. This allows for more freedom for the compiler when splitting the sheet into the larger cookies and ultimately results in a lot less chocolate chunks being split. The Intel/AMD CPU is able to take a small piece of the larger cookie itself and assign it to a thread for consumption.
Currently, coding a game from the ground up for the PS3 (one good example being MGS4) is a lot less time consuming then porting a game from another platform to the PS3. Valve makes games primarily for the PC. The 360's cookie cutter is able to cut the PC sheets with very little issues. Unfortunately for the sheet to be cut properly to be consumed by the PS3, the whole sheet needs to be reconfigured.
Hope you guys get it now.