In the stock market there is a saying that past performance is not an indicator of future success and a trend is a trend until it isn't. That's what I think about this. The current trend may continue or it may not. The fact that it's there catches my attention, but it doesn't prove anything.It's not just pixel processing that got more programmable. Vertex processing first evolved from fixed-function to programmable too. It also borrowed features from pixel processing such as texture lookups, before unification made sense. My point is that convergence happened from both ends. I find it surprising that you think this has little bearing on the value of CPU-GPU unification, despite the very similar double convergence. CPUs became multi-core, got SIMD units that kept widening, they got instructions such as FMA and gather, they can do SMT, etc. GPUs became programmable, got generic floating-point and integer instructions, data access was generalized and caches were added, the arithmetic latencies lowered from hundreds to only a few clock cycles, etc.
We can continue to make this more flexible without having full unification. Look at HSA vs. AVX. Anyway, I'm not really interested in that far in the future as so much can happen manufacturing wise that changes the equation. That's one reason I usually don't participate in this discussion. If I can see the future 5 years out that's plenty of time to react. Until then I want to be aware of possibilities, but not place any bets.But perhaps you consider these to be meaningless facts which may show similar convergence up to now but have no correlation between them that would result in a similar outcome? What ties them together is that the underlying forces which caused each of these things are really the same. There are hardware and software aspects. Hardware gets cheaper as you can share resources. As you indicated yourself, you no longer have to over-provision different structures to prevent them from being a bottleneck. This applies to CPU-GPU unification as well. It also reduces the cost of design and validation, which should not be underestimated. Software also was and is a huge motivator for unification. Having the same capabilities in each shading stage and not having to worry about balancing made the programmers' lives easier, and allowed them to develop new algorithms and applications. Likewise CPU-GPU unification will simplify things and create boundless new possibilities.
I don't think I suffer from retrospective bias as the first time someone suggested a unified shader to me (probably late 2002) I thought it was a great idea. Up to that point I wasn't thinking about these issues.I think you're suffering from retrospective bias. You perceive shader unification as obvious, because you already know it happened. To eliminate that bias you have to put yourself back in the timeframe well before it happened and observe that it was far from obvious. Or if you do observe that there was convergence taking place and fundamental forces driving it toward unification, you should compare that to today's situation...
Did at any point the hardware and software engineers say vertex and pixel processing has become programmable enough now, we'll stop right here and not unify them? No! They did unify, and what's more, GPUs as a whole continued to become more programmable. So I see no reason to assume that the desire for more programmability of the GPU and more computing power for the CPU will die out. AVX-512 is derived from the Xeon Phi ISA and would widen the CPU's SIMD units yet again and add more GPU features such as predication. Meanwhile GPUs will add virtual memory support which matches that of the CPU. That's a significant step in programmability, but it will still leave developers wanting more.
The underlying reason for that is consumer demand. Hardcore gamers want new experiences. So once performance is fine, transistors and power should be spent on enabling developers to create such new experiences. This has been a driving force for shader unification, and continues to be a driving force for CPU-GPU convergence.
That timeline doesn't start with 'hardware' vertex processing. For a while the "obvious" thing to do was to use the CPU for vertex processing, and the GPU for pixel processing. So once again I think you're suffering from some retrospective bias. Back then the idea of not only moving vertex processing to the GPU, but also to make it fully programmable and to make pixel processing use floating-point and unify it all was ridiculous due to the extreme cost. In contrast having an 8-core CPU with AVX-512 at 14 nm would be small and cheap and with 2 TFLOPS of computing power the graphics capabilities will be nothing to sneeze at. And that's not even the point in time when I'm expecting CPU-GPU unification to happen. There's much to be gained from adding some specialized instructions to overcome the remaining cost.
The days of CPU vertex processing were determined by economics, not because people thought GPU processing was a bad idea. In the future the silicon cost might equalize, but power is a question. So there are more variables this time.
What is your point in time for this to happen?