It is very difficult for a human to utilize large number of registers efficiently, and optimize the code locally and globally so that it will maximize the register usage as optimal as possible. Not to mention what kind of a nightmare it will be to maintain. In a similar way it is very difficult for a human to produce manually efficient code for the architectures having multiple parallel execution units in order to keep the pipeline and the parallel execution units as full as possible. The TI C6000 is one example of this. Therefore, I would say that the optimal register count would be around 16 registers if you produce manual asm code. An optimizing high-level language compiler could possibly benefit from a large register array, but even then the gains may be quite marginal. Of course one can point out some specific applications that can really benefit from large register array, but in general the benefits of a large register array will not be that great.