Dude, u r going wrong here.
9800GTX - 128 Shaders(1D)
HD3870 - 320 Stream Processors (5D)
Actual HD3870 SHADERS = 320/5=64 Shaders
But still this GPU performed accordingly,remember, it performs just a tad better than 9600GT? Well u r seeing SHADERS on one hand and STREAM PROCESSORS on the other.
So HD4870x2 has got 800x2=1600 Stream Processors
=1600/5 Shaders
=320 Shaders
GTX280 has 240 shaders, so here AMD wins big time. But GTX295 has 480 Shaders and a 448-bit Memory Interface although 1768MB GDDR3 but rest all in favour of nVidia, so here AMD loses.