Unified shaders?
It started with the 360
When Microsoft’s Xbox 360 game console shipped last year, its Xenos graphics core brought with it a unified shader architecture, a first in a GPU. Unified Shader Architecture was designed to make the shader units work in unison for graphics processing, helping to ensue that the shaders were being used as efficiently as possible.
Traditionally with a DX8/DX9 video card you will have two shading units: pixel shaders and vertex shaders. The vertex shader is responsible for managing the vertices that give a 3D object its shape, while the pixel shader then fills in the triangle fragments that make up the object with individual pixels, giving the object its “life”.
In DX8/DX9 architectures, these pixel and vertex shaders would work on separate instruction sets, taking commands and processing information only when it applies to them. Over the years though, games have become more demanding, pushing more and more objects onto the screen at one time, so the graphics card manufacturers put more shader units on the cards, released new driver sets to better utilize these shaders, and DirectX has changed to help developers better use these resources. But there is an issue at hand with this implementation. There could be times that the pixel shaders could be fully utilized while the vertex shader was sitting idle and vice versa.
An example ATI has stated is demonstrated above. In the following case the GPU is responsible for handling two very different scenarios. At the top, rendering a shark, a task which is very vertex-intensive as the shark is filled with thousands of vertices to make up the triangles that give the shark its shape, and the second scene on the bottom which consists of the water. This scene has very few vertices, but is instead pixel shader-intensive as pixel shaders are used to handle the water and any waves, reflections, or other effects the developer may want to add to the water.
With a traditional DX8/DX9 architecture, the vertex shaders are fully utilized in the top scenario, while the pixel shaders are only partially loaded. In the water scene, it’s the opposite, the pixel shaders are fully loaded while the pixel shaders are barely being used.
Under a unified architecture, the shading units in the example above wouldn’t operate independently of each other, instead they’d tackle these tasks together. This not only increases efficiency, but also improves performance.
The engineers at ATI who created the Xbox 360’s Xenos GPU developed a GPU architecture that merges the vertex and pixel shaders into a unified bank of shaders to handle the rendering workload. This dramatically improves efficiency, thus increasing relative performance throughput.