On Oct 23, 2018, at 7:08 PM, Noel Chiappa via cctalk
<cctalk at classiccmp.org> wrote:
From: Ben Bfranchuk
I just can't find a clean simple design yet.
...
The PDP 11 is nice machine, but I am looking for simpler designs
where 16K words is a valid memory size for a OS and small single user
software.
There was a recent discussion about code density (I forget whether here, or
on TUHS), and someone mentioned this paper:
http://web.eece.maine.edu/~vweaver/papers/iccd09/iccd09_density.pdf
which shows that for a combo of benchmarks, the PDP-11 had the densest code
out of all the ones they looked at. (They didn't look at the PDP-8, but I
suspect that since it's a single-address design, it's almost ceertainly not
as dense.)
Interesting. There are lots of single address machines; it isn't all that obvious
they would be less effective.
It also depends on other instruction set features. Some years ago I learned the
architecture of the Dutch Electrologica X1 and X8 machines. They are single address, with
multiple registers (not many though). But they gain a lot of efficiency by allowing
almost all instructions to optionally set a condition flag, and almost all instructions to
be executed conditionally on that flag. So a lot of code full of branches becomes much
shorter. The fact that the condition flag setting itself is a choice (unlike the setting
of condition codes) helps a lot. For example:
if (x >= 0) { foo (); x += 2; }
else x -= 3;
translates to just 5 instructions:
a=x,p
y,sub(foo)
y,a+2
n,a-3
x=a
since the condition flag is (normally, though it's a choice) preserved by function
call/return.
Pretty efficient.
paul