Bei AMD/ATi sind die DX10 Shader (ab Radeon HD2xxx natürlich) immer in Fünfer Gruppen organisiert.
4 davon können einfache Berechnungen ausführen, 1 auch komplexe Berechnungen.
Mehr Details:
ATI-Radeon-HD-2000-Serie – Wikipedia
Bei nVidia DX10 Karten (ab Geforce 8) sind alle Shader Einheiten gleich.
Das bedeutet dass bei den Radeon Karten der Hardware Sheduler und vor allem auch der Treiber mehr Leisten müssen um die Arbeit auf die Shader Units aufzuteilen.
Er muss herausfinden, welche Shader-Skripte einfache Berechnungen enthalten und vor allem parallel abgearbeitet werden können und die dann entsprechend den einfachen Units zuweisen.
Deshalb kann es auch passieren, dass ein ATi Treiber einen deutlichen Sprung in der Leistung eines Spiels hervorruft, was bei nVidia eher selten passiert.
Im theoretischem Idealfall werden alle Shaderunits der Radeon genutzt (320 bei HD3870, 800 bei HD4870 zum Bsp.).
Dann wäre die Leistung auch dementsprechend hoch.
Im schlimmsten Fall sind die Shader Operationen alle komplex und es werden nur ein fünftel (65/160 @ HD3870/4870) genutzt.
Dieser Minimalwert ist aber definitiv gegeben - womit die Leistung auf jedem Fall auch über der 9600GT liegt.
Die Wahrheit liegt aber irgendwo zwischen Unter- und Obergrenze und variiert auch von Spiel (und Qualität des Shader Codes des Spiels) zu Spiel...
Dazu kommt noch, dass auch TMUs, ROPs und Speicherbandreite die Leistung einer Grafikkarte limitieren können, nicht nur die Shader-Einheiten.
Übrigens:
Bei den Radeon Karten berechnen die Shader auch Anti-Aliasing, weshalb sie aufgrund der hohen Anzahl an Shader-Einheiten weniger stark einbrechen.
Bei Geforce Karten berechnen die ROPs das AA, was vor allem die 8800GT einbrechen lässt.
In Benchmarks fällt das leider selten auf, da fast immer AA/AF kombiniert getestet wird...