Microsoft’s announcement they’d managed to get the Xbox One to run Xbox 360 code at E3 2015 scored them a lot of points, both from those present at the event and those watching at home. It’s an impressive achievement, considering how very different the Xbox 360’s architecture is compared to the Xbox One.
Sony stated they were surprised by Microsoft’s decision, but also don’t believe it’s the right decision for the Playstation 4. Sony have also hinted it would be difficult for the PS4 to faithfully emulate the Playstation 3, because of the way the PS3’s Cell Processor functioned. There were two components inside the Cell, the first being the PPE (Power Processing Element) and operated very similar to a ‘standard’ and traditional Power CPU. The core handled two hardware threads and ran at 3.2GHZ. If this sounds at all familiar, it’s because the PPE became the basis for the CPU inside the Xbox 360, the Xenon processor.
The primary differences between the PS3’s Cell and the Xbox 360’s Xenon (and the reason Sony say it’d be so difficult to emulate the PS3’s hardware on their next-gen system) is Sony’s decision to add in eight SPU’s (Synergistic Processing Units, sometimes known as SPE’s, Synergistic Processing Elements). One of these eight were disabled, leaving the PS3’s seven functional units (likely for yield purposes). Each of these processors operated at the same clock frequency as the main core (3.2Ghz) but were effectively Vector processors, operating in a Single Instruction Multi Data fashion.
You can think of the SPU’s as operating very similar to a GPU running compute, with each SPU featuring 256KB of it’s own storage. The main CPU runs a worker thread which tells the SPU’s what to do, and their tasks developers have asked them to perform have been numerous. Anti-aliasing, physics, memory management and allocation, AI and even some graphics tasks have been said to have been offloaded to the processor. Indeed, each of the SPU’s put out a workload of around 25.6GFLOPS, which was darn impressive at the time of the systems release. For more on the PS3’s Cell processor inner workings, check our Post Mortem here.
The Xbox 360’s processor architecture was a bit simpler – featuring three of the Xenon cores ‘tied together’ on one processor; meaning the CPU could handle 6 threads. The Xbox One’s processor is an eight core Jaguar, though six are available for games (and eighty percent of the seventh – assuming the developer isn’t using it for Kinect, meaning the emulator likely has access to it). That isn’t to say that the Xbox One’s and 360’s processors are the same – there are some major differences. Clock speed isn’t the be and end all of computer arguments – so despite the 360’s CPU running at almost twice the clock speed of the X1’s, the Jaguar, on the X1 running at just 1.75Ghz is more efficient. For more info on the X1’s architecture check the SDK leak analysis here
The Jaguar has better branch prediction (this means the CPU is better at figuring at at which branch a program will take… in the simplest form, think of an application running a scenario where there are two possible outcomes, A or B to a scenario, and the CPU correctly selects to ready code “B”. In reality, it’s more complex, but this is a basic overview).
Then you’ve also got the Xbox One’s Out of Order Execution, which means instructions are fetched in Compiler-generated order. Furthermore, OoO may allow the processor to re-order and prioritize the order instructions are processed in. In-Order also pushes a lot of work on the developers to optimize the code, and also relies on the compiler to ensure the instructions are optimized.
I wouldn’t personally be surprised if the Xbox One’s GPU wasn’t called on to handle some compute functions too, and clearly audio tasks could be shunted Xbox One’s SHAPE (it’s audio processor). While I’m purely speculating here, the Xbox One’s CPU was supposedly very much taken up by running game audio, with a good portion of a thread just being audio, which the X1’s saves on with a more robust audio solution.
Microsoft have said they “built a virtual 360 entirely in software and then we take the old 360 games and put them in the emulator and run them through the emulator.”
It’s effectively software-based Xbox 360 emulation running on the Xbox One. The gamer plops their x360 disc into their X1, and then in the background the Xbox One recognizes this and loads up an emulator. This thin emulator will then load up enough code to run the title and also the X360’s dashboard (so you can communicate with friends and all of the other stuff you’d expect).
Power PC (the same architecture the 360’s CPU is built in) emulation has been a ‘thing’ for computing for some time – for example, PearPC was initially released mid 2004 and is capable of running many PowerPC OSes, including pre Intel versions of Apple’s Mac OSX. The emulator does so by using JIT (Just in Time) compilation, effectively done during the run time of the application, rather than converting the code prior to the application running. Think of this (in a loose way) of being similar to how a Genesis emulator runs, with the software emulating the functionality of the Genesis’ hardware as the game software runs.
“This time,” said Spencer, “the team took the approach of effectively running the whole hardware OS that was running on the 360 hardware on the Xbox One. So when you boot the games, it literally boots up the operating system of the Xbox 360 – which is why you can play with Live and everything else. That was the most difficult thing.”
Microsoft are keeping rather quiet on the exact technical methods they’re using for the emulator (which isn’t surprising) – but the take home message is that Microsoft’s engineers have managed to a rather impressive feat. The ‘virtual 360’ is effectively an Xbox 360 emulated – and there are certainly some similarities between the X1 and 360… for example: AMD’s Radeon GCN architecture which provides the X1’s graphics grunt is similar in some ways to the 360’s Xenos GPU. They’re both unified architectures and the X1’s GPU is of course capable of running DX11 code, and naturally has more than sufficient grunt to run the titles at the native resolution since the GPU is only about 240GFLOPS, about a fifth of the X1’s 1.32TFLOPS.
Memory architecture is fairly similar too – with the Xbox 360’s Unified RAM simplifying the process by the developers more easily creating a section of RAM for the game code, with the developers being responsible for segmenting game assets within that space. So, for example, with the Xbox 360’s 512 MB of RAM, one developer could have 112MB of game code and 400MB of textures, or another could have 256MB of game code, 128MB of graphics assets and 128MB of sound assets. Of course, these numbers aren’t accurate (and don’t take into account the OSes pound of flesh) but serve to provide a bit of insight.
Either way, it’s the emulation is a clear feather in the cap for Microsoft. I do feel that it would have scored considerably more points for them if it had appeared say, 6 or 12 months ago, before the next-gen games were coming out quite so thick and fast, but it’s still a rather nice tick in the Xbox One’s “pluses” column.