THERE IS AN increasing trend in computer architecture
to categorize processors and accelerators as “general
purpose.” Of the papers published at this year’s
International Symposium on Computer Architecture
(ISCA 2014), nine out of 45 explicitly referred to
general-purpose processors; one additionally referred
to general-purpose FPGAs (field-programmable gate
arrays), and another referred to general-purpose MIMD
(multiple instruction, multiple data) supercomputers,
somewhat stretching the definition to the breaking
point. This article presents the argument that there is
no such thing as a truly general-purpose processor and
that the belief in such a device is harmful.
Many of the papers presented at ISCA 2014 that did
not explicitly refer to general-purpose processors or
cores did instead refer to general-purpose programs,
typically in the context of a GPGPU (gen-
eral-purpose graphics processing unit),
a term with an inherent contradiction.
A modern GPU has I/O facilities, can
run programs of arbitrary sizes (or, if
not, can store temporary results and
start a new program phase), supports a
wide range of arithmetic, has complex
flow control, and so on. Implementing
Conway’s Game of Life on a GPU is a
fairly common exercise for students,
so it is clear the underlying substrate is
Here is one definition of a general-purpose processor: if it can run any algorithm, then it is general purpose. This is
not a particularly interesting definition,
because it ignores the performance aspect that has been the driving goal for
most processor development.
It is therefore not enough for a processor to be Turing complete in order to
be classified as general purpose; it must
be able to run all programs efficiently.
The existence of accelerators (
including GPUs) indicates that all attempts
thus far at building a general-purpose
processor have failed. If they had succeeded, then they would be efficient
at running the algorithms delegated
to accelerators, and there would be no
market for accelerators.
With this in mind, let’s explore what
people really mean when they refer to a
general-purpose processor: the specific category of workloads these devices
are optimized for and what those optimizations are.
The Operating System
A common requirement for a general-purpose processor is it can run a general-purpose operating system—
meaning an operating system that is either
Unix or (like MS Windows) has a similar
set of underlying abstractions as Unix.
For example, most modern processors
lack the ability to cleanly express the
memory model found in Multics, with
fine-grained sharing and transparent
virtualized access to memory-mapped
The ability to run an operating system is fundamental to the accepted
No Such Thing
as a General-
Article development led by
And the belief in such a device is harmful.
BY DAVID CHISNALL