There's No Such Thing as a General-Purpose Processor
queue.acm.org
queue.acm.org
Belief in a truly GP-PU probably would lead to some very bad design decisions- either in software or hardware- but I don't think many people actually believe in it beyond the theory, the model. Just as hardware engineers adapt their ideal model to the "real software", software engineers adapt their software to "real hardware".
Because processors optimized for these cases have been the cheapest processing elements that consumers can buy, many algorithms have been coerced into exhibiting some of these properties.
I would additionally argue that aside from cost, because of the speed exhibited by such processors, many algorithms that do not naturally fit in the current model are in fact faster on the modern CPU than the hypothetical GP-PU anyway. Caches, for example, are such a tremendous lever on performance that a low-performance but cacheable version of algorithm X running on an i7 will almost certainly be dramatically faster than a high-performance but noncacheable version running on our hypothetical GP-PU...
If there is a low-level OS whiz around, they might be able to figure out how to set the noncacheable flag on your program's memory space, and you could prove to yourself just how much speed the cache is worth... unfortunately I am not that wizard.
Yup. I think the article's initial assumption of what a general purpose processor looks like ignores history. We've tried to build those kinds of processors... and what we've converged on is processors that are good at these particular specialized operations, because that actually tends to work better for most jobs. Not that there aren't exceptions... you can look at FPGA's to get an idea of what they are, and the fact that FPGA's are only used in a bunch of very specialized areas suggest that modern CPU's aren't THAT far off on being reasonable optimal for a truly varied set of tasks.
But those times are coming to an end now.
It reminds me a little of philosophical arguments which attempt to disprove the existence of something common-sensical. If you define a general purpose processor as one which would be able to execute any algorithm comparably performant as a purpose-defined processor, then yes, that processor does not exist. But that's like saying processors with infinite cores, speed, and heat-dissipation capacity don't exist. It's true, but not all that interesting.
"General purpose processors don't exist" is certainly an eyeball grabbing headline, but I think his "real" conclusion is more measured and in a way less controversial: "Efficient designs will require admitting that there is no one-size-fits-all processor design and that there is a large spectrum, with different trade-offs at different points." Despite his not defining "efficiency", that point seems true, but not that controversial.
Does he show that "General-purpose processor" is not a useful distinction? I don't think so.
(Apologies: recovering philosopher, not a CS PhD.)
Is it uncontroversial? Perhaps no one would disagree after hearing it spelt out, but I think it certainly is the case that people often naively think of "general-purpose processor" in just the way the author worries about, and that reading something like this can bring about a helpful shift in perspective.
Put another way: a particular point in a large space of "general purpose" doesn't indicate special purpose.
You have to choose a point to implement something.
Dispense with the cute semantic quibbling, and present your real point.
The fact that many programs written in dynamic languages can be sped-up in this way is slightly surprising, as they are a different family of examples, but isn't much different on a fundamental level.
On a different note, if dark silicon becomes cheap, then general-purpose processors would become less important, as one could have a computer system consist of thousands of independent systems, each for a different purpose. If dark RAM would also be cheap, then giving each such processor its own memory could eliminate the need for MMU-s.
Could you explain a bit further? I don't follow.
Wouldn't MMUs be needed just to support (performant) programs with very large address spaces (i.e. need virtual addresses)?
http://www.conveycomputer.com/
Disclaimer: I have nothing to do with them, I know there are other projects that have taken FPGA-oriented programming much further, but Convey seems to have done the best so far commercializing the idea.
> The general-purpose processors of today are highly specialized and designed for running applications compiled from low-level C-like languages.
And those applications differ from each other like night and day. One C application is Ruby virtual machine. Another one a text editor. Another one a window manager, ...
The idea that processors are special-purpose hardware blocks because they are designed for running compiled C is a laughable form of reductionism. Why not make the ultimate argument and say that they are specialized devices for handling 0's and 1's. Or maybe the specific voltage levels of the majority of the signals of a chip it specialized. This chip is specialized to 5V; this more modern one to 3V, ...
This is nonsense. I started writing several examples mocking this logic, but erased them because I think the original quote sufficiently proves the point.
Perhaps you should take the time to refute the logic.
I was surprised to see a comment like yours. If you can't be bothered to make a reasoned comment, then don't write anything.
The existence of nascar shows that attempts to build a family saloon has failed, if it had succeeded you could race your family saloon competitively on a banked oval track.
A general purpose thing involves a trade off such that it can do most things but can't do any one thing as well as something that is designed to do that and nothing else. Yes stupid car analogies to describe computing indeed. Totally. I'm sorry.
To me, the definition of a "general purpose" item is that it is suitable for a variety of uses, but not ideal for any of them. By contrast, a "special purpose" item is very good at one task, but performs poorly outside of that arena. For example, a "general purpose glue" is good to have around, since it will stick many things together adequately. But if you are joining aluminum to aluminum and want a permanent bond, you'd want to use a special purpose epoxy that is designed for this application.
As a parallel, consider the statement "the minivan is not a general purpose vehicle, as the existence of race cars (including F1 racers) indicates that all attempts thus far at building a general-purpose vehicle have failed." I feel this claim would be nonsense, because (obviously?) a vehicle that has been specifically designed for a particular purpose will perform better at this purpose than a vehicle designed with many other higher priorities.
I also tried variations of "a vice-grips is not a general purpose tool because it makes a lousy hammer", "Webster's is not a general purpose dictionary because it lacks full coverage of Latin medical terminology", and "a pencil is not a general purpose writing instrument because it will not scribe metal". But these all seemed so ridiculous that no one would claim they made any sense. So I removed them.
How did you find it insightful? Maybe "general purpose" is used differently between American and British English?
For me the logic of the statement came the other way round: we've got things that are focused on a particular task (accelerators) - because those exist it is clear that the general purpose things we have at the moment (CPUs) are not efficient at everything - if they were we wouldn't have accelerators (or they would be what we were using for CPUs).
Sure, we can't have a general purpose vehicle that is suitable for all tasks, but I can imagine someone creating a general purpose glue that just sticks anything.
Perhaps there is a processor design that can be efficient at every task - this article seems to be encouraging us to think about that problem.