3 ms·
When I study the architecture of newly released processors, I'm overwhelmed by the complexity. Branch prediction, pipelining, superscalar, etc, etc. I consider
by GianFabien 2y ago
When I study the architecture of newly released processors, I'm overwhelmed by the complexity. Branch prediction, pipelining, superscalar, etc, etc. I consider modern CPUs to be excessively complicated due to programming languages still mostly being single imperative execution stream oriented.
- foldr 2y agoIt's difficult to see how this will change, though. We've had the dream of automatic parallelization by Sufficiently Smart Compilers (which turned out to be insufficiently smart) and the dream of automatic parallization of pure functional code (which turns out not to yield reliable performance gains in practice). No-one wants to write explicitly parallel code if they can possibly avoid it, so it falls to CPUs to desequentialise the code.
- GianFabien 2y agoGPGPUS are an interesting implementation of parallelized computation without having to spell out all the details. Of course, CUDA etc libraries are required to take advantage of the hardware. sufficiently smart compiler is typically said with a smirk in conversation. In recent times I have seen some compilers attempt to "vectorize" array code. But the results vary greatly. Perhaps greater parallelism could be achieved using event-driven / message-driven multi-processing. The original conceptual design of Smalltalk proposed a situation where each object was implemented as a virtual processor. But that all went south with the advent of Java.