home .. forth .. misc mail list archive ..

Chuck's addressing hardware (and keyboard)


Dear MISC readers:

> Maximum performance is reached by using
> hard coded hardware designs. Being able to
> control the part using a program is already a
> severe speed-compromise.

Yes.  This is part of the MISC design philosophy.  If you
know what you want to do you can build dedicated hardware
to do it many times more efficiently than with a general purpose
CPU and software.  The concept in MISC is that the required
power of a central processor is actually quite low when there
is hardware that does  the job. I maintain that the truely Minimal
Instruction Set Computer has one instruction called application
or no instructions at all (fully dedicated hardware).

If you application needs to pump data at gigabit rates it may
be impractical to execute a sequence of instructions and
computations in the nanosecond between bits.  If all the
CPU has to do is turn on a control bit to make something
happen then the speed of the CPU is a non-factor.

One can spend a tiny bit for a specialized hardware to do the job
that needs to be done and a little more for a simple CPU on chip
or you can spend many thousands of times as much on general
purpose programmable hardware up front but the implicit overhead
may slow things down by thousands of times anyway.

The idea of MISC is that custom solutions are much more efficient
for some things than general purpose hardware and software solutions.
The parallel port on the Novix chip was a good example.  With it
you could input from the parallel port, AND the data from the
port with a particular pattern, XOR the resulting bit pattern with
another bit pattern, and do a conditional branch on the result
all in a single cycle.  On a machine with a general purpose parallel
port the above sequence might require six memory operation and
four instruction executions.  If you application requires this sort of
thing
have a few transistors to do it in one cycle is more efficient than
executing a bunch of instructions on a general purpose design.

The MISC machines all show that a few custom transistors can do things
that
tens of millions of transistors on a CPU cannot do.  All computers
represent
some tradeoff between dedicated hardware and general purpose hardware.
Sometimes a $5 computer with dedicated hardware can do something faster
than a thousand dollar computer with a generic hardware configuration.

>I'm just saying that
> because software writing is expensive the
> hardware should facilitate it at the cost of
> some speed even.

Yes.  Again this is the MISC philosophy.  Software is a problem because
it is expensive to write, debug, port, maintain etc.  Chuck's approach
was
to attack the software problem first.  He wanted to find a way to make
the software much easier.  He called it Forth.  As he put it, "the
software
problem was solved" so he became interested in the hardware problem.
Now of course for people who never learned Forth or got diverted onto
the ANS track or for people who are "thinking" C they simply will not
get this.

The idea was pretty simple.  We observed that we could make the
software much simpler and easier using Forth (the way Chuck does it)
and that perhaps the same could be done with hardware.  We observed
that hardware has become more and more complex to support the
complex software until the hardware became so complex that it was a
very bad idea to touch the assembler on most chips.  We wanted the
best of both worlds, an assembler that was in fact Forth.

So we said if we can make the software 100x or 1000x smaller and
simpler, easier to write etc. then we can build hardware optimized for
this software.  We can make the hardware 100x or 1000x smaller,
lower power, cheaper to manfacture and get a closer match to our
software.

Again it has to do with knowing the problem, knowing the code, doing
simulations and refining things until it was clean.  The idea was that
we
could make the software simpler and the hardware simpler and
avoid 99% of the problems and performance hits that are introduced
when dealing with the spiraling complexity and that plague conventional
designs.

We did extensive simulations to get the hardware and software to match
well.  We got the 1000x improvement in transitor count and cost by not
attempting to support software designed for register rich machines or
software
designed for floating point or binary compatibility with other machines.

Now for the people who say that they are going to go the other way in
software and they have software that requires lots of registers or an
FPU and that MISC isn't their thing that is true.  We are going in a
completely
different direction.  If someone chooses to go the expensive hardware
and software route that is fine. I won't call them names.  MISC doesn't
cover that base and they need to go to other hardware if they are
thinking
that way.

> >Reduced transistor count should also have been weighted
> >against programmer comfort.

It certainly was.  We did years of simulations and design changes.  The
goal was a very close match between the hardware and the (our) software.

The goal was minimal cost, maximum ease of programming (the way we
feel is best), and as much performance as possible with the above
constraints.

We ack that if you are willing to spend 1000x as much on hardware
and software that you may get better performance on some problems.
Most notably FP and "C" are examples of things that will demand that
you spend more.  If you must go that way you must spend more.

>I agree with the principle that design choices
>should be made with the full range of use/application
>being considered.  I also think those hardware
>designs are pretty expensive too.

Yes.  Again we did that.  Of course F21 was never intended to
run software that NEEDS 1000x more resources.  We did many
simulations of the full range of use/application being considered.
We never considered 'C', Unix, FP, etc., the idea was to design
a computer with 100x less resources than you need to get
decent performance from 'C'.

We said we could make the software many times simpler and
easier than C and that this would make it possible to make the
hardware many times simpler and eaiser than hardware optimized
for C.  That is what we did.

Anyone who looks at the picture and says that we didn't design
to run "their" full range of applications is quite right if they are
thinking C, UNIX, FP etc., but they missed the original idea
that we didn't intend to design another 'C' machine.

> >I don't believe the issues many take with MISC are
> >actually significant, and I would gladly work with
> >a little wierdness like patterns since the alternative
> >might be some mess like a segmented memory model.
> >By comparison, the pattern thing is invisible.
>
>it should be completely invisible.

Chuck said it was an error.  It was not an error to make it that way,
it was an error to explain it that way.  He confused a lot of people and

they were distracted by the way he explained it.  It was all a lot of
people could see for a long time, like his keyboards, but in fact it
was as close to invisible as possible.

Once he realized this he quit confusing people who wanted to know
about programming by talking about hardware design issues in the
middle of programming discussions.  He quit wasting people's time
with the issue years ago.  I asked people to not waste other people's
time discussing this also.

But like Chuck's keyboards in the distant past it is one of the things
that many people cannot see past.  Part of the problem is that people
keep bringing it up in software discussions and confusing people
and giving them the impression that there are problems where there
are none.  It would be completely invisible if people didn't keep
bringing it up and introducing confusion and distraction and taking
the discussion away for useful things.

But we have a mix of people in the MISC mail list.  Some have
experience with hardware.  Some have experience with Forth, etc.
I realize that it is not a complete waste of time to ask hardware
questions and get them answered since some people do benefit.
But the people who are not hardware designers often get a very
wrong impression of the hardware folks are really talking about.

> One shouldn't focus on Forth so much. You guys have so much in come
> with a sect.

Sect?  Sheesh!

Chuck invented Forth.  Chuck has programmed in Forth exclusively in
Forth for thirty years.  Chuck designed chips to run Forth.  We wrote
various Forths for our chips.  We have VLSI CAD and a whole host
of design and utility programs writtin in Forth.  Chuck has done a lot
of remarkable things with Forth.  Quite frankly without Forth we never
could have done the simulations, the design, the cad system, the
testing, etc., it would have been so much more difficult and expensive
to do it in a conventional way.  That was part of the reason it could
be done.

We said we could use Forth to simulate, design, lay out, tune,
produce, test, provide compilers and other software to make the
job or makeing a Forth chip possible and make it a killer at
running things like our Forth software.  I know, all most people
can ask is "Why didn't you use 'C' instead?" ;-)

If we wanted to use 'C' and the same chips as everyone else we would
not have gone this route in the first place.  Perhaps this person was
just
saying that there is no place for Forth, only C.   I guess if anyone
proposes
and alternative to C, to make programming easier and to make
a new type of computer that could be incredibly cheap and then
publish the research and the facts that those who consider this
sacreligiou  will just ignore the logical arguments and declare that
it is just a "sect" or "cult" or something, because it isn't 'C'.    It
is silly
the things people do when they run out of logical arguments.

>You can discuss with people who believe in god
>as much as you can, but they will never really seriously
>discuss the notion that god could not exist.

God? Religion? Belief?  I thought we were talking about computer
hardware and software.

Proposing an alternative to C hardware and software seems to be
heritical to many people.  I guess they must consider it their religion
since they are always the first to dismiss Forth as being a religion,
or cult as it seems to violate their religious beliefs.

If I choose C, or Forth, or something else it will be for scientific,
repeatable and measureable reasons.  It has nothing to do with
belief.   Really, faith and belief in things that cannot be proven
has nothing to do with computers.

>I have never seen serious discussions here doubting
>the strenght of Forth (unless I started them).

Doubt without an open mind is like belief without proof and is of little

value.  Doubt that leeds to a good examination of the facts at hand is a

good thing.

> The design goals for MISC were if I recall correctly:
> - small
> - quick
> - cheap

Yes, and easy to program, easy to understand.  This is part of being
very small and very simple.

>>I think Jeff is there if the chip were mass produced.
>
>Yes, if... But other factors prevent that.

At the moment there is a signifigant factor.  I am not going to mass
produce the chips myself.  I have enough to keep me busy for a while.
I don't know what other factor is involved.  No chip is cheap in
prototype
quantity.  In production quantity it creates a new meaning for
small-quick-
cheap.  You can compare it to chips with similar performance and 100x
to 1000x price or to chips with similar price and 1/1000x performance.

> > But implicit goals are always:
> > - easy to use
>
> This is in the eye of the beholder.  We are talking Forth after all.

Yes. Exactly.  Some people think a compiler with 20k of source or
that compile to a couple of K will be simpler and easier than one that
needs 20M of source.  But for those who only learned the 20M system
the very idea that it could be done easier seem to really bother them.

If C is your religion and you don't like Forth then my advice is to stay

away from MISC, it will look like a cult to you.   Does MISC stand
for MISerable C?  Perhaps.

> Forth is only easy to use when you're scribbling
> down a small program (as for as I know).

This diatribe is a good example of what people who don't
understand Forth think about it.  A person who doesn't understand
'C' might say that 'C' is only good for writing big unreadable programs
because they can't read 'C'.  duh.

Forth can be written as nicely as anything else and does not require
scribbling. If anyone really thinks Forth is for scribbling then they
should either learn Forth or work with something that forces them to
color
between the lines and stay far away from Forth.

>But even
>the programmer itself doesn't understand his own
>code anymore after a day let alone that others
>can understand it.

As other people have said Forth is as readable as anything else to
someone who can read Forth.  If  you don't know it then you
probably can't read it.  No problem.  It is easy to learn if you
are not thinking 'C'.

Readable code, maintainable code is important.  This is why NASA
has used Forth for various things for many many years.  NASA
has sent Forth out deeper into space on many spacecraft than any
other language.  As far as I know it is about the only thing we have
sent
outside of our own solar system.

( Look at what happened at NASA when they started to use the fashionable

languages like Java, lots of very expensive failures. ;-(   )

>This requires re-re-re and re-reading the code
>and therefore it needs to be very rereadable.

At least we have never had a newsgroup dedicated to examples of
badly written and unreadable code like 'C'.  Sure there are some
uneducated
Forth hackers who never learned to write good code.   I will never
forget
the question on one Computer Bowl.  "What is the name of the usenet
group dedicated to discussions of badly written and unreadable code?"

No one knew the correct answer, obsfuscated 'C', but one contestant
offered the answer "Windows?"  The audience thought it was very funny
but the guest host, Bill Gates, did not.

The myth of Forth being write-only has been discussed by many times
by Elizabeth Rather from Forth Inc.  They have a history of delivering
Forth projects, training and solutions where readable code is of course
an important factor. This is one of the reasons why NASA and many
fortune 500 companies use Forth for various things.  Very solid and easy

to verify as correct, easy to maintain, etc.  Check the history of Forth
Inc.

>I dare you to convince me that (multi-typed) Forth has that quality.

Multi-typed Forth?  Where did that come from?  Let's stick to Forth for
now.  I didn't see anyone talking about a multi-typed Forth.
It sounds like you are saying that someone's mind is made up. (although
I
am not quite sure about what since the subject switched the to
multi-typed Forth)

> You can give me 10 Mbyte of data about something
> that's not a real product but it's still data and not
> information however much the groupies of the
> product like it and thinks it gives them insight in
> what their high priests do.

Groupies?  High priests?   Consider that computers
might have something to do with logic rather than
religion.  Open up your mind a little at least.  It is easy
to dismiss what challenges your world view.  It is harder
to actually understand it but there is benefit to seeing
the logic.  There is little value to dismissing ideas out
of hand and insulting people who suggest that you
might try logic.

> >Yes, first I noticed MISC it promised 500 Mips or

Promised?  No promises.  Just reports of what we
observe.  Timing instructions does not require religion
or faith or promises, just a little knowledge of science.

>I have never seen the high priest of MISC place
>critical remarks.

I have never seen anyone who claimed to belong to
said religion.  I have never seen anyone who claimed
to be a high priest or any such thing.  I have seen
people who when lacking logical arguments resort
to crude insults about people who's  logic that they proudly
refuse to even consider.

>They liked the flocking of groupies it seems.

Perhaps this person is trying to say that since they refuse to
listen to logic that all they can see are people gathered to
discuss ideas that they have yet to consider so want
to insult them, call them groupies, etc.  ;-)

> >>> At the moment of the birth of the MISC the 486 was
> >>> already around so there was already a lot doable.
> >>
> >>Neither Forth or MISC are about more of the same.
> >>They are a hunt for another path, a more direct or
> >>fruitful path.
>
> Any sect will use this sentence.

Any idiot could write the above sentance.  It makes no sense so
it requires no thought either to write or to read.

>I can't believe people won't check their preconceived
>notions at the door when entering Chuck Moore land.
>If the old baggage must come along there isn't much
>of a point in taking the trip.

Yes. We must understand that many people have very
empty lives with little that interests them.  They may be
very upset by people who have a life or an idea and
have nothing better to do than insult people who are
willing to think.  Remember that thinking is fun for
some people and very painful for others.

Those who are locked into the conventional world
view that computers must be expensive and complicated and
must be programmed in C or use producsts from Microsoft
will never understand that there are those interested in finding
an alternative.  Rather than consider the logic presented by
those considering an alternate approach they would prefer
to dismiss the whole thing, and insult anyone who would
consider thinking by calling them cult members or such.
We have seen it many times before. ;-)

>Why doesn't the MISC processor comes with a
>small sugar cube of LSD then?

We have replaced it with a pill that contains some neurons.
That way the folks who are not yet capable of thinking will
have some hope of grasping some logical concepts. :-)

> >>Jeff has repeatedly clarified that the pattern
> >>thing is only an issue in a couple of situations,
> >>mainly when cross compiling for the MISC from
> >>another architecture.
> >
> >It should be completely transparent.

It isn't completely transparent on Intel chips.

It isn't completely transparent on Motorola chips.

It isn't completely transparent on any chips!

Apparently the writer has no experience with hardware.

Anyone who has written cross compilers has
had to face the issue that the hardware bus is different on different
machines..   People would like hardware to be
completely invisible but someone must write software and
look at the hardware.  The idea that a cross compiler should
not have hardware specific information is just silly.  It just won't
work folks.  Try writing an assembler without any chip specific
details, its meaningless.

> >Forth is wrong.

That is a very broad and indefensible statement, non-sense
actually.  One can say that a statement is wrong.  One can say
that experssion has an error.  Saying "Forth is wrong" is
meaningless.  It is like saying "left is wrong."   It is simply
meaningless without context.

Forth may be a right choice or Forth may be a wrong choice
for a particular problem.  Forth itself cannot be right or wrong.

>21 bits is also wrong by the way.

Another statement without context.  If it means, "21 bits is not
the right choice for doing 32 bit computations" then it makes
sense.  21 bits cannot be "right" or "wrong" is itself.

It one bit true or false?  Is it right or wrong?  :-)

The only possible context for these types of statements is that
for some reason "Forth" and "21 bits" are just "wrong" in a religious
sense.  Forth seems to somehow violate your sense of religion
even though it is a programming language and has nothing to
do with religion.  Perhaps it is just "wrong" in some sort of
moral or religious sense.  It upsets people who don't want
to think. ;-)

>I think at least Jeff took it seriously and lost a lot
>of money in the process.

I don't know if I would call it a loss.  I have spend a lot of money. I
have gained a lot of knowledge, some really cool toys, some good
contacts, some good friends, and a lot of fun.

Many people spent money buying a PC.  The money is gone, but not
lost, they have a PC for their money.  They may learn something
useful with their PC or they just have fun.

There are still various compaines talking about making products in
the hundreds of millions using these chips.  There are companies
looking at making new versions in newer more exciting processes and
technologies.

To a great extend I considered F21 a proof  of concept chip.  Any
discussions of pinout or process limitations are likely to be specific
to the prototype process and unrealted to production issues.  We
wanted to show that the limit could be pushed far beyond what
other people do.  We did it in 1.2 and .8 but that does not mean
we couldn't do it in .35, .15, or exotic technologies.  If anyone
wants to manufacture F21e or whatever in volume that is fine.
They have the advantage that there will be very little overhead
needed since UltraTechnololgy is a one man company without
billions of dollars invested in development.  The price for the
chips can be very close to the manufacture cost of around $1
in volume.

My long term goal was to understand the process of imagining
new designs, working out the design tradeoffs in simulations,
designing and building all the software needed to simulate,
design, debug, and program custom designs so that I would
be prepared to apply the same concepts again.  I have thought
of it as ten years of reseach and education.  I wanted to be in
a position to do something similar in a technology a million times
faster than silicon when it becomes available. (around 2000 ;-)

(If six to ten zeros upset a lot of people I imaging that another six
or seven will really get them crazy! ;-)

I have thought it would be nice to actually get F21 out into
the world.  It has been a lot of fun for me and I would be happy
to share the fun with other people.  I would rather see an F21
in a mouse product than say a talking mounted bass using an F21.

There is also the issue that only 1% of people have access to
computing technology because it is just so expensive.  It would
make me feel good to give many people the opportunity to
benefit from computer technology by making inexpensive
computers available to others.  I have done what I could but
do not have the resources to do production in large quantity.
I would like to see other people benefit from cheap computing
but I have done about all I could in this regard.  We did the
research and made almost all the information public.

I have thought that other people might be interested in the
results of the research.  I will admit that I never anticipated that
a lot of people would refuse to consider any of the logic involved
and try to dismiss the whole effort as some sort of religious
experience or cult activity.  I guess I just didn't realize that
most people have a very fragile world view and really don't
like anything that challanges any part of it.

Jeff Fox