Is there any kind of CPU which doesn't contain an ALU ?
-
1$\begingroup$ I feel like that's off-topic here, though an interesting question nonetheless. $\endgroup$– Yuval FilmusMar 16, 2013 at 14:42
-
3$\begingroup$ I don't think it's totally off-topic because it can be seen as a conceptual question, but a very flat one. You could make it much more interesting, if you asked for reason not to include an ALU. $\endgroup$– fraflMar 16, 2013 at 17:18
-
$\begingroup$ Since I don't have enough facts for an answer, this might be a path to your answer. There were some machines created based on a programming language such as Lisp Machine; See Other attempts on language-optimized computers $\endgroup$– Guy CoderMar 18, 2013 at 12:20
5 Answers
If the CPU (Central Processing Unit) does any processing, it will do either Arithmetic or Logic operations... in a sense, some form of ALU is the core of the CPU.
-
$\begingroup$ true but an ALU can be understood as a separate subcomponent inside the CPU which is "reusable" based on operations between registers etc... the answer is that generally to conserve circuitry it will be natural to have a ALU... the question thereby might be similar to "does there exist a CPU that does not do arithmetic..." which is hard to conceive of... $\endgroup$– vznMar 22, 2013 at 4:23
A CPU is not a microprocessor. So if you look at early mechanical computers such as Konrad Zuse's Z3 and Charles Babbage's mechanical computer, those were computers with a CPU that was not a microprocessor and did not have an ALU.
John von Neumann proposed the ALU concept in 1945, there were functional computers before that e.g. Zuse's Z3 that did not have an ALU.
If you want to look more closely at a spec design for a modern FPGA ALU design, please have a look at my ALU (done in Quartus), that is built from primitives.
-
1$\begingroup$ conversely though it would seem that every microprocessor thats ever been built has an ALU... $\endgroup$– vznMar 22, 2013 at 4:27
Yes! See the Wikipedia page for Turing Machine. A Turing Machine is a state machine with a pointer that can move left or right on an "infinite" tape (representing memory.) There is a picture on the Wikipedia page of a Turing machine implemented with Lego. The foundation of Computability Theory is the Church-Turing Thesis, which states that a Turing Machine is as capable as any other computer. You can simulate a computer with an ALU on a Turing Machine if you want to.
If you are worried that the operations of moving left and right on a tape might be too similar to increment and decrement operations that an ALU might do, then see http://esolangs.org/wiki/BitBitJump. They show how you can implement a universal turing machine with a machine that does nothing but bit copies (which are doing a form of self-modifying code.)
-
2$\begingroup$ You can anonymously down-vote my answer all you want. That doesn't stop my answer from being the only one up here yet that is actually right. An ALU is not central to computation, state transitions and a sufficiently large programmable storage are. $\endgroup$ Mar 31, 2013 at 12:26
-
$\begingroup$ Downvotes suggest a comment of some kind could be made. I don't see anything obviously wrong about this answer. In general commenting downvotes means even a bad answer can be educational. $\endgroup$ Mar 15, 2014 at 23:19
ALU-less computers are certainly possible.
The 1 Square Inch TTL CPU project on hackaday.io by roelh is able to circumvent the need for an ALU using lookup tables! Furthermore, the project also says the HP9100 calculator uses a similar technique.
THERE IS NO ALU
NO ALU... I could have programmed a small PIC or AVR as ALU (Wikipedia: ALU), but that's cheating. With the current microcode version, the only arithmetic that it can do is compare bytes and address items in a table. And the hardware won't allow much more.
For incrementing or decrementing a byte, lookup-tables are set up that contain an incremented or decremented version of the lower 8 address bits. Now the processor can increment or decrement a byte. Nothing more is needed to do arithmetic !
This was also done in the legendary HP9100 programmable calculator that was introduced in 1968. It worked with transistors and diodes, not a single digital IC ! The story behind this calculator is amazing, and can be read on hp9825.com. People have tried to reverse-engineer the diode-transistor logic and came to the conclusion that the hardware of the machine could only increment or decrement digits (described by Tony Duell). Yet it could calculate with high-precision floating point numbers, including logarithms and trigonometry, at high speed. More info about the HP9100 can be found in the HP journal 1968-09.
Superscalar processors have several execution units which often are not equivalent. I'd not be surprised if there has been some design where the repartition of responsibilities between the execution units was such that none of them would merit the name ALU for some definitions of the term.