Xbox 720 Durango – What are ‘Move Engines’

Xbox 720 Move Engines – How they Work

The Xbox 720 hasn’t been formally announced yet, but we know that it’s coming – and soon. The 21st of May will mark the day that the next generation Xbox is shown to the world. We’re not 100 percent of all the specs of the machine (or even if the leaked specs are even true) but there have been a number of leaks, and while most of the other specs of the machine are fairly easy enough to understand, such as the AMD Jaguar CPU, and the amount of RAM in the machine there are a number of mysteries at first glance. The one we’ll be tackling today are the machines “Move Engines”.

The tagline for the Move Engines would be that they are designed to shift data around the machine while easing the burden of doing so from the GPU and CPU. The Durango is going to be an interesting beast if the rumored specs are true – with the ESRAM in the machine responsible for taking up a lot of the slack that the DDR3 RAM’s bandwidth creates. Although it isn’t that simple as we’ll discuss in this article.

The first thing to note about the Move Engines is that they are ‘data accelerators’ but they are fixed function. A CPU for example is built to be able to handle a large amount of different instructions, whether that’s helping you process the data in your web browser to handling enemy AI as you gun down people in Crysis. The Move Engines are a completely different beast. Microsoft created the XBox 720’s Move Engines to be silent to the developers of games, and effectively their instructions are built right on to the chip. In fact, their results aren’t really ‘noticeable’ at all to the software running on Xbox 720. There are 4 of these Move Engines, and have been tied into the next generation Xbox 720 in a number of different ways.

The Engines can also move data in any of the following ways and in any combination

From main RAM or from ESRAM
To main RAM or to ESRAM
From linear or tiled memory format
To linear or tiled memory format
From a sub-rectangle of a texture
To a sub-rectangle of a texture
From a sub-box of a 3D texture
To a sub-box of a 3D texture

The Move Engines read and write data at 256 bits of data per GPU clock cycle so you’ve got a total of 25.6GB/s peak – both ways. Basic and raw copy operations, most tiling and untiling can be done using these peak speeds. It may seem a a little odd that each of the 4 Move Engines of the Durango share the same memory memory path, and even odder still when you consider that they all share the same bandwidth of other components of the GPU – such as video encode and display. However, this other functionality isn’t very hungry so there’s not too much of an issue there.

http://youtu.be/4I6zG-wCBHs

Copy operations however are performed slower on the Move Engines than what could be achieved by the Durango’s actual GPU. For instance, the 25.6GB/s limit of the Move Engine’s operation of copying RAM to RAM is far slower than what the GPU could achieve – around 34GB/S. RAM to ESRAM for the Move Engine is once again the 25.6GB/S while the shaders could do this at 68GB/s. So what’s going on here?

Well – it’s as simple as that these operations (should they be completed on the Shaders) would take away cycles that could be used to do other stuff. So if the GPU (graphics processing unit – which in the case of Durango is apparently 17 AMD Southern Island 7000 series GCNs) is bound on compute functionality (in other words, it has reached its max performance) the Move Engines can continue to chug alone for what you could consider ‘free’ in that they’re not eating away precious resources from the rest of the system.

It’s worth noting that the Move Engines aren’t anything new – the Playstation 3 would usually perform similar tasks by using the SPU’s of the PS3’s Cell Processor, however obviously taking away computing resources that could otherwise be used for ‘better’ things in this case.

The Move Engines can also handle data streaming (in the case of LZ compression) which is lossless compression – generally it is reserved for storing data on for example a hard drive or a disc, but in this case it could also be used for RAM too – however the data would need not to be needed for awhile into the future.

There is also support for JPEG decoding (2 sources) – this is likely for the Xbox 720’s Kinect and camera systems.