(2) In any sufficiently complex program, completely different computations are theoretically capable of running concurrently. At the very least, you need multiple CPUs/cores for that, and then you have the problem of assigning tasks to the different cores. Conventional languages are designed around a single processor and do not support this.
(3) Memory access is a bottleneck, which because of caching favours data structures which are compact over those which are scattered over a wide area of memory (such as lists, trees, etc.)
(4) CPUs were once designed to run specific programming languages, e.g. Burroughs mainframes ran Algol natively, and Lisp Machines ran Lisp natively. The PDP-7 and its successor the PDP-11 influenced the design of C. Nowadays, CPUs are designed without apparent reference to the languages which will be compiled onto them, but implicitly favouring the popular languages (C, C++, Java).
So what's happening, and what is likely to happen in future unless we do something about it, is that programs/languages are being shoehorned into processors, rather than different processors being designed to run different types of programs and languages.
http://developer.amd.com/resources/documentation-articles/de...
AMD employs kernel developers who write free software drivers for their GPUs. That's all I was trying to communicate. I have no particular knowledge of the actual business organization.
[0] https://github.com/torvalds/linux/commits/master/drivers/gpu...
Here's a table for SPARC CPUs, with process lambda, die size and transistor count: https://en.wikipedia.org/wiki/SPARC#SPARC_microprocessor_imp...
If transistors would reduce with lambda, then for two-fold reduction you would get four fold increase of density. Difference in density between T4 and T2 (90 and 40 hn processes) is less than two.
The static leakage you mentioned is mainly due to sizes of transistor parts.
You should also know that NVidia uses humans as chip designers (they can afford that), not an automatic process like some fabless companies use.
And now I get to my main point: NVidia overshot with 28nm and got transistors features that were too small, probably, due to not all that good software they used to calculate models. They continue to overshoot for 5 years until they corrected their overshoot. It has nothing to do with process lambda. It is process error in NVidia.
The same article [3] shows clearly [2] that max TDP has increased a bit.
[1] https://www.karlrupp.net/wp-content/uploads/2013/06/gflops-p...
[2] https://www.karlrupp.net/wp-content/uploads/2013/06/tdp.png
[3] https://www.karlrupp.net/2013/06/cpu-gpu-and-mic-hardware-ch...