OK, in another thread I described R300's pipeline as "shallow and wide" and NV30/35's as "Narrow and deep". However Eric Demers (sireric) did a presentation at shader day that surprised me because he imparted a little more detail on R300's Shader pipeline that appears to make that statement a little erroneous. Unbeknown to many before there is not two ALU's (1 Vec3 + 1 scalar) per R300/R350 pipeline, but 4 - Full Vec3/Scalar ALU's and "mini" Vec3/Scalar ALU's (capable of some basic math functions.
When we compare R300/R350 to NV30 and NV35 this appear to be what we have (as far as I can discern so far):
Apart from the very basic Math ops Eric wasn't keen to give away any more details on what instructions the Mini ALU's support. So far we know that the 'Mini' FP32 ALU's in NV35 support ADD, SUB, MUL, DP3, DP4 (off the top of my head).
Update: A little more detail on the known functionality / limitations of the mini ALU's...
R300/R350 - ADD, SUB, MUL
NV35 - Both can do ADD, SUB, MUL, DP3, DP4. Both combined can do an FP32 MAD, or each can do an FP15 MAD. PS1.4 range still [-2,2]. Each of NV30' FX12 units could do 2 MUL per cycle - the new FP units can't so some PS1.1-1.4 shaders will be slower here.
When we compare R300/R350 to NV30 and NV35 this appear to be what we have (as far as I can discern so far):
Code:
NV30 (x4) NV35 (x4) R300/R350 (x8)
---------------- --------------- ---------------
| | | | | |
| Tex addr | | Tex addr | |Tex addr proc|
| proc / | | proc / | | |
| Full FP32 | | Full FP32 | ---------------
| ALU | | ALU | |
---------------- --------------- -------------
| | | |
---------------- --------------- ------------ -----------
| | | Mini | | Full Vec | | Full |
| FX12 ALU | | FP32 | | FP24 ALU | | Scalar |
| | | ALU | | | | FP24 ALU|
---------------- --------------- ------------ -----------
| | | |
---------------- --------------- ------------ -----------
| | | Mini | | Mini Vec | | Mini |
| FX12 ALU | | FP32 | | FP24 ALU | | Scalar |
| | | ALU | | | | FP24ALU |
---------------- --------------- ------------ -----------
| | | |
| | --------------
| | |
Apart from the very basic Math ops Eric wasn't keen to give away any more details on what instructions the Mini ALU's support. So far we know that the 'Mini' FP32 ALU's in NV35 support ADD, SUB, MUL, DP3, DP4 (off the top of my head).
Update: A little more detail on the known functionality / limitations of the mini ALU's...
R300/R350 - ADD, SUB, MUL
NV35 - Both can do ADD, SUB, MUL, DP3, DP4. Both combined can do an FP32 MAD, or each can do an FP15 MAD. PS1.4 range still [-2,2]. Each of NV30' FX12 units could do 2 MUL per cycle - the new FP units can't so some PS1.1-1.4 shaders will be slower here.