Stack Computers: 4.4 Architecture of the Novix NC4016 (1989)
users.ece.cmu.edu
users.ece.cmu.edu
The later versions of the same software ran on regular x86 hardware, which caught up pretty quickly with custom processors. I had a DSP032 which also ended up in the drawer because of the speed with which regular processors improved.
Interesting that now, a good 30 years later we are again using co-processors.
That doesn't seem to be as true any more, and there were always corner cases (e.g. hardware accelerated mice sprites, I think, were always a win for various reasons), but it was an interesting debate back in the day.
These things tend to oscillate, presumably one day there will be another generation of CPUs that is much closer to our current CPU/GPU combo that will outperform GPUs and then the cycle will start over again.
I think the counterargument in this context would be "...until we all went to 16-bit processors.". But I understand the point you're making.
These things tend to oscillate
I think you're of course correct, and I don't think the original paper disputes that. What I think (without much research) has happened is that the period of that oscillation has dramatically expanded since the paper was written.
Very cool, and a bit weird by 1985 standards
In that era the power to performance ratio was not as critical since the clock speed of this device was typically sub 12MHz. (yes that is 12,000,000 Hz) Power losses are quite a bit less than at 1.2GHz
Novix claimed that it achieved 10 MIPS at 7.5Mhz drawing about 0.35W. Kind of hard to verify how accurate their claims were with the chips being impossible to find though.
Also from 1985, a 20Mhz MC68HC000 drew 0.38W[2] for 3.5 MIPS (going by 0.175 MIPS/Mhz[3]).
So if you believe Novix's claims it had really good power efficiency for the time.
[1] https://en.wikichip.org/w/images/a/a6/nc4016.pdf
For example, Forth uses separate operand (data/parameter) and return stacks, instead of interleaving them in main memory like most CPUs and runtimes. So the Novix has separate memory and busses to the return stack, operand stack, and main memory, and it can independently push or pop from them in parallel, in the same (bit-sliced) instruction! And that's frequently useful:
>The NC4016 subroutine return bit allows combining a subroutine return with other instructions in a similar manner. This results in most subroutine exit instructions executing "for free" in combination with other instructions. An optimization that is performed by NC4016 compilers is tail-end recursion elimination. Tail-end recursion elimination involves replacing a subroutine call/subroutine exit instruction pair by an unconditional branch to the subroutine that would have been called.
>When the NC4016 was designed, gate array technology did not permit placing the stack memories on-chip. Therefore a minimum NC4016 system consists of three 16-bit memories: one for programs and data, one for the data stack, and one for the return stack.
When Algol first came out, they put a grad student summer intern onto the project of writing an Algol compiler, from scratch, for one of the stack machines. The intern completed the entire compiler in one summer. So, the question is, was the compiler a single summer intern project because stack machines are so well suited to Algol, or was the compiler a single summer intern project because the intern was Don Knuth?
[0] https://en.m.wikipedia.org/wiki/HP_3000
[1] https://en.m.wikipedia.org/wiki/PowerHouse_(programming_lang...
As to Algol, there's certainly a case that a stack machine is a nice abstraction for targeting an Algol compiler. However, having toyed around with writing an Algol compiler, I think the fact that it's a compact, well thought out language with an rigorously described syntax (BNF) that makes it relatively easy to attack, regardless of target.
My memories of FORTH are really good too, especially after writing PostScript (FORTH enough) printer drivers that were downloaded printer programs. They turned further downloaded lists of nodes into properly placed topological diagrams and printed them out.