XBox 360's CPU and multithreaded games

Dave3000

Golden Member
Jan 10, 2011
1,495
108
106
I understand that the XBox 360's CPU is a 3-core CPU with hyperthreading, so it can handle up to 6 threads at once. Do any XBox 360 games take advantage of 6 threads? Also if there are Xbox 360 games that take advantage of 6 threads, then what's holding back PC games from taking advantage of 6-core CPU's or 4-core i7's with hyperthreading? Or is it most likely that hyperthreading isn't utilized in the XBox 360's CPU?
 

ArchAngel777

Diamond Member
Dec 24, 2000
5,223
61
91
I understand that the XBox 360's CPU is a 3-core CPU with hyperthreading, so it can handle up to 6 threads at once. Do any XBox 360 games take advantage of 6 threads? Also if there are Xbox 360 games that take advantage of 6 threads, then what's holding back PC games from taking advantage of 6-core CPU's or 4-core i7's with hyperthreading? Or is it most likely that hyperthreading isn't utilized in the XBox 360's CPU?

Hyper-Threading IMO has been waaaaaay overhyped. It does increase performance in most cases, but the performance is pretty slight (10%-15%) and even less with games. But remember, they had to use precious die space to implement HT anyway. I am sure that the die space requirement was small, but it would be interesting to see if those extra execution units takes up ~10% of the die space. I doubt they would, but who knows (Intel, IBM?)

With the Xbox 360, in my opinion, it is unlikely that a multi-platform would take advantage of those 6 threads as opposed to the 3 main hardware threads. Perhaps a first party developer (exclusive titles) would make use of that extra potential power.

I think the reason that games are difficult to develop for multiple threads is because they do so many tasks and some of them don't require much power, yet others do. So many variations in the work load. No idea though, this is all just guestimation. I am sure others who know more about the programming side can provide some insight.
 

Ross Ridge

Senior member
Dec 21, 2009
830
0
0
Hyperthreading is more useful on the in-order execution PowerPC CPU used in the Xbox 360, the Xenon, than it is on Intel CPUs which, other than the Atom, are capable of out-of-order execution. Both techniques try to use execution units that would otherwise sit idle, so when used together on Intel CPUs the net effect is that, like ArchAngel777 said, hyperthreading adds very little performance gain and usually nothing for games. Despite hyperthreading being more effective however, "threads" on the Xbox 360 don't count anywhere near being an entire CPU. You can't equate the Xenon to a 6 core Intel/AMD CPU, it's really just a three core CPU that needs hyperthreading so its in-order cores can be considered to be roughly equivilent to Intel/AMD out-of-order cores.

Anyways, my guess is that most 360 games don't make effective use of the three cores that are available. Multi-threaded programming is very hard to do effectively, so I doubt anyone would even really try except for AAA titles. There was web page on Microsoft's site that showed what each of the six threads would be used for in a typical game. I can't find it now, but only one thread was doing any real work, the rest were handing things like audio which need very little CPU. They're probably making better usage than that now but I doubt the average 360 game makes effective use of more than two cores, just like games on the PC.
 

RobDickinson

Senior member
Jan 6, 2011
317
4
0
Its relativly easy to split threads off to do the sound or physics etc and let the game engine run on one core/thread.

Hyperthreading is usefull to some extent especialy with games as you can code them to make most efficient use of its abilities rather than throwing the same executions at the core and stuffing it up.

Xbox 360 has been out what 5 years now I'd say game developers are exploiting it as much as there going to, and probably why PC game transplants are only using 2 or 3 threads.

Also remember that the xbox is an in order execution chip too...
 

Ben90

Platinum Member
Jun 14, 2009
2,866
3
0
Threads do not really correspond to scaling with multiple cores. A (edited) great example is Diablo II. This game made to run on 1 core requires 15 threads to just sit at the login screen.

I see Hyperthreading operating in roughly the same way and on kinda the same principles as OoOE. While I am sure its possible to slightly exploit the hardware, you don't really program for Hyperthreading aside from allowing it. From here we have two complications, HTT efficient code and parallel code. (edit I just found out from you guys that the Xenon processor is in-order in which case HTT efficient code is much much easier to come by)

Even if a program can scale almost perfectly with cores, it does not mean that HTT will make a positive impact. A great example of this is Linpack. Able to scale to thousands and thousands of cores, enabling HTT will actually degrade performance by quite a bit. Since Linpack is able to almost completely occupy the execution resources of an Intel CPU, enabling HTT creates unnecessary overhead. Other programs such as ray tracing can benefit from HTT since are prone to stalls.

The other, and more prominent question involves the development of parallel code for games. A lot of things such as rendering scale into the thousands of cores without too much work. Thread #5 doesn't really care what Thread #300 does, so they both can run at the same time. Unfortunately this doesn't come so easily with the game engine itself. Even something as trivial as playing a sound can require knowing where the wooden board landed before it, which requires physics calculations before that, which requires the hitbox registration before that, which.... Its easy to see how its very difficult to program a game to utilize multiple cores efficiently. By extension, HTT often doesn't work too well with games.
 
Last edited:

drizek

Golden Member
Jul 7, 2005
1,410
0
71
That SCII review looks like it is GPU limited. Notice how over-clocking the quad core provided almost no benefit, and all it did was simply match the performance from the 6-core. They should have clocked the CPU down to 2GHz or so to really test scaling.