 |
|  |
 |
|  |
 |
|  |
 |
|  |
 |
|  |
 |
|
Asher
|
 |
Calgary, Alberta
Nov 1999 time: 22:17
|
|
I can provide a synopsis though. 
Xenon (the Xbox 360 CPU) took 3 modern IBM processors, removed some functionality, added other functionality on top of it. The removed functionality was what's called Out Of Order Execution (OOOE), which basically means the chip itself decides in real-time what order the CPU instructions should go into, to attempt to optimize performance. That takes up a lot of "real estate"/transistors to do, not to mention additional power/heat concerns, so they were removed. Now it's an "In Order" chip, so the chip simply processes instructions as they're given.
The burden is now on the compiler (the tool that translates high-level C/C++ code into machine code) to optimize that correctly. You can't really do this on the PC, because there's many different processors and each one behaves differently. Since the console hardware is fixed and unchanged, developers know exactly how the customer's CPU is going to behave, so they can properly order the instructions optimally.
Each processing core has 2 "VMX" units, which are IBM "vector" units. Vector units work with a principle called SIMD (Single Instruction, Multiple Data) to efficiently work on matrices. This kind of operation is extremely common in 3D graphics in particular. There are 128 128-bit registers available to each thread (a thread is a string of CPU instructions...there are two per core, so 6 total on the whole CPU). So, for example, you could use it to store a 4 dimentional matrix with 4 32-bit values. If you wanted to, say, calculate the inverse of that matrix, you can do it with a single instruction with SIMD. It understands that all of the numbers are associated. In regular computation, you'd need to write code to do that all by hand, which is many more instructions.
Or even more simple...if you wanted to multiply each number in the matrix by 2, it's 1 instruction in SIMD and 4 instructions in the oldschool way. So it's more efficient for matrix operations.
The article touches on "branches"...those are simply conditional statements -- paths the code can take. 3D graphics don't usually have branches...it's what's called dumb code, it's all straightforward. You can do these in SIMD-type units easily.
The problem is when you have branching code, like artificial intelligence (think of all of the conditional logic in AI) or even physics (all of the objects should be able to interact with eachother, so it's not predictable), it's extremely difficult to make these "parallel" instead of "serial". For example, running AI across two threads instead of one. Usually the AIs need to talk to eachother, which complicates things immensely.
That's something that's required in the Xbox 360 -- making everything parallel. Each core is individually weaker than the standard PC processor, the power is in getting them all to work, and work efficiently. To do that, Game Developers will need to figure out how to make their games use 6 threads...when they're used to 1 thread on the PC and current-generation consoles.
The situation is worse on the PS3, with its "Cell" processor. It only has 1 of the cores in the Xbox 360 (and it's even slightly less powerful than an Xbox 360 core), and the rest of the 7 "SPE" chips are really just dumb vector processors. They don't handle branching code at all really, which means you've got just 1 chip to do a lot of stuff..and probably a lot of spare vector processing power. It seems imbalanced to me, and a non-optimal solution...but this is Sony's Plan B. 
Anyhoo, probably confused everyone more. I tried...
|
|
|  |
All times are GMT. The time now is 05:17. Apolyton Time is 00:17. |
top of page
|
|
|
Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
|
HTML code is ON
vB code is ON
Smilies are ON
[IMG] code is ON
|
|
|
|
|
|