now tell me how are they the same !
2900
<image of high-level block diagram>
4870
<image of high-level block diagram>
i doubt it there is similarity but they not the same
That's a very good question! Believe it or not, they are extremely similiar. At least the big-blocks are. In essence creating a new architecture is extremely expensive, and usually in each given DX generation, the same architecture is used and re-used simply to recoup costs. NV estimates the G80 architecture cost about $500 million in development - no wonder its the basis for GT200.
In essence both NV and ATI have gone down a 'modular' route, that is, every part of the core is mostly self-contained and responsible for itself. In addition, each part is scaleable to a massive degree. For example, take the basic building block of R600, a shader unit:
Now take an RV770 shader unit:
You'll note that they are, for all intents and purposes the same. What NV and ATI do each generation is
optimise the most critical parts. In the case of RV770, ATI managed to decrease each shader unit's size by 40%. That let them increase the count from 320 in R600 to 800 in RV770. In addition they can re-balance the core if they got the all important shader/ROP/TU ratios wrong. So RV770 massively increased both the number of ROPS and TUs - although in the case of ROPs it just scaled with the number of shaders.
In essence, it is pretty fair to say the 4870's architecture is a highly optimised version of the 2900XT. While the massive performance gap would make you think 'oh its completely different' - in fact, its the work of a massive increase in raw power, mixed with some exceedingly clever optimisations. It's not the same core - but it is nevertheless closely related.
The other advantage of this (as easyrider eluded to - but failed to say ATI benefits from it too) is that since the architecture is the same - driver development is made easier. Of course each core is different - but as long as its modular, it can at least share a great deal of code and optimisations. Think about it - if you had to make drivers for each core - then you would need to make different drivers for the cheap cards, the mainstream, the high end, and the super high end. A much more intelligent design would be to group instructions together, and send them off to the GPU - and the GPU automatically handles scheduling etc. across however many units it has. Which is exactly what both NV and ATI have done.
This is another reason why drivers with a new DX generation are invariably a little sucky - the architecture is almost completely brand new vs. a tweaked mature architecture.