-----Original Message-----
From: Eric Smith <eric(a)brouhaha.com>
To: Discussion re-collecting of classic computers
<classiccmp(a)u.washington.edu>
Date: Sunday, April 04, 1999 8:03 PM
Subject: Re: microcode, compilers, and supercomputer architecture
Megan wrote:
well put... I've yet to find a compiler which
can produce code which
could not then be further optimized in some way by a person well
versed in that machine's architecture...
Yes, but if you paid attention to the original claim, you would see that
I asserted that it was true for horizontal microcode with large amounts
of data dependency. This is *very* different than trying to compile C
(or Pascal, or Bliss, or whatever) for a typical architecture (which more
closely resembles vertical microcode).
One of the systems I microcoded had 512 words of control store (of about
72 bits each), and running my microprogram source code through the compiler
produced 514 words of microinstructions. With about two weeks of
concentrated effort, I was able to eventually squeeze out two
microinstructions. Total development time: 6 weeks.
If I had tried to write all of the microcode in "assembly", it would have
taken
me longer to write, and it probably would have been
*bigger* on the first
pass. And I still would have had to spend a lot of time on hand
optimization.
I think this would have taken at least 12 weeks of
development time,
although
since I didn't do it that way I'll never know.
And, from your most recent posting:
Again, you
used the word *assembly* and that implies my point.
Now you've lost me completely. You were quoting your own writing, not
mine. I didn't even *mention* "assembly" in my posting, except in quoting
you.
> Halting problem (P vs NP) difficulties aside,>
Is this use of the word "assembly" not yours? I, sir, am quoting you, not
me!
I've never seen the situation in which human-generated code could not be
further optimized, with the exception of trivial cases. Your assertion
does not contradict my claims. Of course, this brings up the issue that
"trivial" is not objectively quantifiable. One could perhaps credibly
argue
that a trivial code sequence is one for which no
further optimization is
possible. I'm not taking that position, but simply pointing out the
difficulty in basing arguments on non-objective statements.
In point of fact, I've seen huge amounts of human-generated code that was
nowhere near as optimal as code that a compiler would generate.
All this proves is that neither humans nor compilers tend to produce
optimal code. It says nothing about which tends to produce more optimal
code.
The fact that an individual program is incapable of producing superior code,
relative to optimality, only serves to indicate that humans suffer a greater
degree of falability vis-a-vis the computer, which as you said is quite
happy
to act on tedium. That says nothing about the general case that humans
have superior intellectual capacity vis-a-vis the computer. After all, who
invented what?
This discussion is founded upon your statement:
Maximisation
of processor throughput, and minimization of
microinstruction count, is at least half the purpose of microprogramming.
Sure. And the microcode compilers I've written and used are much better
at optimizing horizontal microcode than I have the time or patience to do
by hand.
For such optimisation to be effected, on must
necessarily write directly
in microcode, either bit and byte streams, or coded as in assembly
languages.
No, it doesn't. Microcode almost always has a lot of data dependencies,
which means that a compiler can often do as well as a human at optimizing
it.
And yet, you argue against yourself with:
... when I was trying to squeeze the 514 words down to
512, I ...
Herein, you admit that your personal skills quite outweighed those of the
algorithm that you constructed for the purpose of compiling a high-level
code into a particular microcode. Recall:
Sure. And the microcode compilers I've written and
used are much better
at optimizing horizontal microcode than I have the time or patience to do
by hand.
Also, recall:
Therefore if I can use four weeks of my time to write a
compiler and two
weeks
to slightly tweak the output of that compiler ...
So, we are agreed that a human has greater capacity for the preparation of
optimal code. I conceed the notion of sufficient time to complete a task.
What you have failed to address is that the human intellect is not limited
by
the capacity to algorithmatise a solution. Hence, P vs. NP, GEB, and in
particular, the notions of Godel: that within any axiomatic system, the
answers
to some positable questions are indeterminable.
Humans have the capacity to make judgements by means outside of those
mathematical and logical, hence the reference to Penrose.
For all the nit-picky details of the works of these masters, the points they
make
are far grander. The real value of their works is not kept solely within
the realm
from which their conclusions emerge, but within which
such conclusions find
additional value.
William R. Buckley