microcode, compilers, and supercomputer architecture

From: Buck Savage <hhacker_at_home.com>
Date: Mon Apr 5 04:24:22 1999

-----Original Message-----
From: Eric Smith <eric_at_brouhaha.com>
To: Discussion re-collecting of classic computers
<classiccmp_at_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
Received on Mon Apr 05 1999 - 04:24:22 BST

This archive was generated by hypermail 2.3.0 : Fri Oct 10 2014 - 23:31:39 BST