Several things

From: Bill Yakowenko <yakowenk_at_cs.unc.edu>
Date: Mon Apr 19 22:26:49 1999

In-Reply-To: <m10YZmF-000IyOC_at_p850ug1> from "Tony Duell"

You are right, not only _could_ I argue that the FPGA version is
not microcoded; I strongly assert that it is not. (Unless you
meant to have the FPGA be functionally equivalent to the ROM. But
I *think* you meant it to subsume other parts of the processor to
try to muddy the water. Because if the FPGA is just a ROM substitute,
then it is an obvious control store for the microcode.)

No microcode --> not microcoded.

It's just a question of implementation really, not a fundamental
design characteristic. Now, if you make writable microcode, you've
exposed the innards to the programmer, and it becomes a part of
the functional description of the thing. But if you don't do
that, the programmer can't tell the difference; a microcoded and
non-microcoded machine could behave identically.

I'm sure we could carry this to the point that there is a grey area,
but I don't think we're there yet. It's the philosophical problem
of the beard, right? You trim a little off, and it is still a beard.
But if you keep doing that, eventually you get to a point where you
are quite sure there is no beard. Somewhere in between, was there
one atom that you cut off that made it from a beard into a non-beard?
What if you didn't really cut that atom off, but just stretched its
molecular bonds to the limit...?

Of course, it seems to me that so far you've been considering a case
of five o'clock shadow, and wondering it if might be a beard. :-)

I guess, if it has some kind of counter selecting bit-patterns that
control the flow of data in the CPU, I could call it microcoded.
If there is no cohesive place from which such bit patterns are
retrieved, then it is not. (Now, I'm sure you'll make me eat those
words. :-) )

It just struck me that the microcode in a CPU is very much like the
rules of an expert system. The whole point in an expert system is
to isolate the knowledge from the program, so you can tinker with
the former and not get involved in the later. Microcoding lets you
abstract away the complications of the control logic, reducing it
to "these bits at that time-step" thinking, without getting bogged
down in gate propagation delays or chip counts. Lets us programmers
get a little closer to the hardware, without the obvious dangers of
letting us too near the soldering irons. :-O

Ah. There's the grey area. Take all the logic around your state
FF's and registers. Call it a microcode ROM. Of course, the fact
that it is spattered all over your CPU board weakens the argument
that it is a unit in any way, but then maybe you could rearrange
the board to put all that gorp on the left side...

So now I have a fuzzy definition: a CPU is microcoded to the degree
to which the control logic is encapsulated in the form of a control
store. Most real world cases are probably close to 100% or 0%, but
I have no doubt we could construct any degree of set membership that
we like.

I might be willing to stop prattling on about this now. Maybe. :-)

        Bill.


On 17 Apr 1999, the Insanely Great ard_at_p850ug1.demon.co.uk (Tony Duell) wrote:
] > Do you mean to say that _all_ computers are microcoded? After all,
] > the control logic can always be modelled by some number of state FFs
] > and a large-enough ROM, couldn't it? Or is your claim that there is
] > no such thing as microcoding? That strikes me as far-fetched as well.
]
] This is the problem. Obviously both of those statements are false based
] on our usual use of the term 'microcoding'. But it's hard to see just
] where to draw the dividing line.
]
] > The difference is that a ROM is easily replaceable; slap in another ROM
] > or EPROM with different microcode burned in, and you've got an entirely
]
] OK, here's a counterexample.
]
] Consider the PERQ. It's microcoded. It's obviously microcoded - there's a
] 16K*48bit _RAM_ that stores the microcode. And there are supplied tools
] to rewrite that microcode.
]
] Now suppose I get a large enough FPGA (I don't think any of the ones
] currently available are large enough, but). I stick it on a board. And I
] provide a tool that does the following :
]
] It takes PERQ microprogram, and combines it with a description of the
] rest of the CPU logic. It then optimises the result, and programs the
] FPGA accordingly.
]
] The result is a processor that runs exactly the same programs as a PERQ
] with that microcode. But you could reasonably argue that the FPGA version
] is not microcoded - you would look in vain for anything resembling a
] control store in the FPGA.
]
] Perhaps the term 'microcoded' should be applied to the original design
] philosophy - if the control logic was _designed_ as a program, then it's
] microcoded.
Received on Mon Apr 19 1999 - 22:26:49 BST

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