home .. forth .. nosc mail list archive ..

[NOSC] You say you wanna revolution


Myron, 

I like the way you phrase things.  I will have to
save your first paragraph as a sort of manifesto
to show to other people to frame things.

> It's great news to me that Chuck now has his own website, 
> which must be a considerable relief to Jeff Fox. 

You can say that again.  I so pleased to read Chuck's
wonderful explanations of so many of his ideas in a
writing style that reflects his focused programming
and system design. 

After a decade of what I describe as the kill the
messenger syndrome where about a dozen specific
people could always be counted on post counter
information to anything I said about what we
were working and a few who chose to repeatedly
characterize me as a liar, cultist, snake oil
salesman, nieve ignorant fool or a list of
other names I realize that I have at times lashed
out even at those who wanted to get involved or
provide support but didn't seem to know how.

I do plan to take a step or two back and let
the dust settle a little now that Chuck has
done such a good job of explaining his current
work.  I still think that understanding the
history of his work since he left Forth Inc.
and logic in making major changes to his
Forth about every five years makes it all 
make much more sense.  But in providing that
information my web site simply has too much
stuff and isn't as simple and clear as Chuck's
new site.  I have a meg of html files alone!
I was able to read all the files at Chuck's
site more than one fairly quickly.

> The recent flurry of NOSC/MForth/CForth postings illustrates 
> what I see to be a culture clash. Good intentions are apparent, 
> but differences of opinion as far as how to gain the notoriety
> required for funding the ongoing development work abound. I 
> assume these are due to the widely varying backgrounds and 
> age groups that we encompass.

Yes, very true.  I used to be famous for my patience.  Over
the last few years it has worn rather thin or at times
been worn away altogether.
 
> IMHO, those who advocate porting <insert favorite OS here> 
> to a MISC implementation are missing a key point behind 
> the MISC initiative, i.e. an OS typically attempts to be 
> all things to all people, and becomes very ugly very quickly. 

Yes.  I tried to address this idea with my "Low Fat
Computing" theme.  Chuck's ideas are not minimalism
for the sake of minimalism, as many people have claimed,
or even Ting's idea of minimalism as the key to what
he call's Forth enlightenment, but simply good
computer health instead of the unhealthy digital
bloated fast food that is marketed everywhere that one
turns.

> My take on this (and I have seen this put into
> practice many times) is that what is needed are simple 
> interface routines to perform the I/O functions (keyboard, 
> mouse, video, mass storage, datacomm, etc.) rather than
> all-singin'/all-dancin' hardware abstraction monstrosities 
> that pretend that everything is a file. So much for OSs.

Chuck has said that OS is a dirty word.  On his new
web site he just says it is an obsolete concept.  It is
part of the fat, that provides the artificial problem
that can appear to be improved for marketing purposes
while all the time more problems are slipped in behind
the scenes.  (63,000 estimated bugs below your code?)

It is also the legacy of Forth.  In the old days Forth
showed it superiority by making it easy to have custom
hardware drivers that provided improved programmer
productivity and improved system performance.  This
more or less ended with Chuck's PolyForth when he
left Forth Inc. and they abandoned the legacy of
Forth and began marketing it as a layer on top of
popular operating systems.  As they admit the
constraints to do that dwarfed the constraints to
do Forth itself.

But with a generation of programmers who never saw
anything but stuff layered on top of popular OSes
they could not picture Forth in any other way
except in its most ancient forms.  "Modern Forth"
is, according to them, a layer on top of everything
else embracing all the things that Chuck invented 
Forth to avoid.

The real problem with this, for me, was that 
there have been many people who have posting
information about how Chuck's chips are really
1000x slower than what we said because they
simply cannot imagine a computer without all
the conventional stuff built in.

The best examples I could find were the popular
Unix benchmarks designed to show system performance.
The rational behind these programs, was to take
simple problems and add the overhead that is typical
in Unix programs.  Simple computations were intentionly
made more complex by adding Unix system calls and
forks and task switches and file access and all the 
overhead that is typical in other programs layered 
on top of all those standard services.  So they are a 
fair way to estimate how a given Unix system will run
typical Unix programs with typical overhead.  They
show how well systems can carry all the overhead
in hardware and software needed to do all that.

They are the opposite of Chuck's idea of making
a system with mininal fat, minimal waste, minimal
unneeded overhead.  They show how well giant chips
with giant memory spaces can deal with giant overhead
on otherwise simple problems.  So I wrote web pages
saying that anyone who suggests that these benchmarks
are a good way to evaluate Chuck's Forth chips
designed to run Chuck's Forth software is either
completely ignorant of the whole idea in the first
place or is deliberatly picking the most deceptive
idea for a benchmark that they could find.

I was then amazed at how many well known people in
the Forth community did exactly that and repeated
posted information about how these chips are really
1000 times slower than what we say based on their
estimates of how well they would run their favorite
benchmarks for their favorite OS compiled with their
favorite C compiler tuned for their favorite huge
chips.  In other words, they don't carry fat well.

Chuck said that a generation of people could not
separate the idea of the abstractions from the
actual computer.  They didn't understand that
computer hardware and computer software could be
simple and logical.  They thought that hardware,
hardware design, OS internals, and compilers
were simply beyond the realm of mortals and
could not distinguish between the layers of
abstrations introduced to tame these introduced
problems and the real computer below.  He
said that he wanted to "Dispell the User Illusion"
that a computer is Windows or Unix.

> I'll go farther here in stating that with enough 
> CPU performance, which appears to be abundant enough 
> even with my silly little 20 MIPS Steamer16, you can 
> use software to replace dedicated hardware for an
> amazing variety of realtime applications. 

This is something that I didn't understand even after
a decade of working with the first few generations of
PCs and I got my first PC in 74.  I began to understand
the concept that you just described when I got a Novix
Forth kit from this guy named Charles Moore in 86.  It
came with a lab workbook that was very much like my
lab workbook in Electronics Class in the physics
department in college.  It was full of tiny simple
programs that could allow the programmer (Chuck) to 
trade software for hardware.  

It is essential to understanding Chuck's whole
approach.   On F21 the parallel port can be treated
as 12 extra analog I/O lines with software.  Those
are digital lines, but can be programmed to do 
analog.  They are limited to a few megahertz of
analog however while a few transistors specialized
to do analog on two pins provided 40MSPS.

The dedicated analog hardware is remarkable simple
and clean.  On a garden variety microcontroller
a timer counts down and fires off an interrupt.
The CPU then stops what it is doing and executes
an ISR.  The ISR saves registers to memory then
monkeys with A/D or D/A hardware.  Eventually
it inputs or outputs a sample.  Then context is
restored and the CPU goes back to doing what it
was doing.  The result of all of that is that many
many memory cycles are needed for each sample.
On Chuck's design you can bit bang analog samples
on digital pins with a little overhead.  With his
analog coprocessor it has it own timer, its own
DMA to memory and needs one memory cycle per sample.
It is 100 times more efficient than conventional
chips at doing what it does.

Still, I can't say how frustrated I was over all
the years when people would write to me and say,
"We are considering using F21, we currently use
an 8051.  But our 8051 can do 20K analog samples
per second and we are not convinced that the
F21 could keep up with it."  (Couldn't they read the
20M or 40M numbers?  How could they miss that this
chip does everything 1000x faster than an 8051?)

Understanding what the chip could do with a little
programming required a little background that
apparently a new generation of hardware and software
engineers just didn't have.  They could read the
numbers on the box of a soundcard that they plugged
into a PC and that was about it.

The same thing applied to what you could do with
a clever video coprocessor with instructions for
windows acceleration, or a clever analog coprocessor
that could be clocked for substantial oversampling,
or a clever programmable active messaging passing
piece of network hardware.  The ideas were apparently
just too far ahead of their time to be understood
without a very broad and in depth background. Some
of the ideas were new or fresh out of research.

I can see how the people working with FPGA today
could get these ideas while other people don't.
They can see how specialized and optimized hardware
will always be fastest but has no flexibility.  That
programmable I/O coprocessors provide a compromise
between hardware and programmability and that
even simple hardware lets a clever programmer
trade software for hardware. 

Without the layers of generic abstraction a 
simple processor like the steamer can be quite
powerful.  With a clever programmer who understands
how to trade software for hardware it can be
remarkably flexible.  I learned a lot from Bill
Muench and John Rible about that stuff too.

Chuck's current designs have no coprocessors but
are fast enought that a few parallel port pins
can be programmed to perform almost any hardware
functions imaginable.  With a bunch of Forth processors 
on chip some can be specialized I/O coprocessors
in a given design.  Chuck's IDE driver in few lines
of code is a good example.

His current chips are fast enough to even bit bang
analog at very high speeds on these pins.  I still
doubt if people who don't have a certain background
or experience really understand these critical concepts.  
It isn't like PC where everyone assumes certain specialized 
complex hardware that is then crippled by layers
of abstractions in generic software layers designed
to make them all look the same.

On Chuck's new website he explains this in a couple
of sentances.  He says that these layers of abstraction
that try to make all these different computers look 
just the same must lower them all to the lowest possible
common denominator.  He says, accept that they are
different.

I tried to explain this as the spirit of MachineForth,
face the actual machine.  Don't think the User Illusion
is the reality.  A computer is not Windows or Unix.

But the most visible people in the Forth community are
marketing the abstraction idea, marketing the portable
abstraction approach.  The rest of the community is
buying it.  Neither those selling or buying want anyone
to point out that the emporer is not wearing any clothes.

So if anyone tried to explain how the legacy of Forth
was something else, or how Chuck's idea of Forth was
something else a huge number of people would distort
and trivialize any argument that you made or call 
you a liar, cultist, snake oil salesman etc. I found
this situation maddening at times.  I am so pleased
that Chuck created his own website. I can't tell you.

> Sure, you need at least a
> free-running timer and parallel ports, and judicious analog 
> and digital hardware interface assists, but the minimalist 
> approach keeps you in control of the the
> procurement/availability/obsolescence issues and
> allows you to make tradeoffs that are simply denied 
> by the menagerie of the silicon that is quasi-available 
> out there. I definitely think that Chuck's current concept 
> of an array of identical processors is superior
> to the dedicated coprocessor approach taken in the past. 
> The faster the CPU is, the less reason to complicate the 
> design with dedicated hardware. If the CPU design is debugged, 
> then all of them in the array are as a natural consequence. In 
> a multiprocessor design, you can even do away with interrupts 
> by roadmapping which processor is responsible for what task 
> and the interprocessor communication architecture. 

You have followed the history and understand the concepts.
You put it well.

> Why bother involving a '765 floppy disk controller, 16550 UART, 
> USB controller, etc. when you can talk directly to the 
> interface cable buffers? 

Right.  The only time you want dedicated hardware is when
you want to push the performance to the bleeding edge.
If you want multiple gigabit self-routing network
coprocessors it only takes a little extra hardware
like what I designed for F21 and that Chuck has included
on the x25 chip. That could have been done with the same
parallel port pins that are programmable and run off
chip, but it gives you the extra inter-node bandwidth
that you want in a multiprocessor.

> Software is easy to fix, hardware takes another design
> iteration and fab run.

Very true.  The problem is that software for most people
is only the very top layer of abstraction.  They want to
be as isolated from the hardware as possible.  The
result is predictable.  

We are told that only recently have 500Mhz 32 bit
deeply pipelined processors running the most sophisticed
native code optimizing Forth compilers (on top of
you know what) been able to meet the performance levels 
set by 5Mhz 8 bit simple processors running simple 
threaded Forths (written by Chuck) twenty years ago.
Apparently some truth occasionally slips through the
marketing hype.

Meanwhile Chuck came up with an incredibly simple
native code optimizing compiler for Forth by designing
hardware to make it incredibly simple.  The approach
is even simple when applied to a Pentium.  And this
was ten years ago, now he has removed the last
remaining sytax in the language and many antiquated
words with his ColorForth approach.
 
> Another good example of solving a serious system-level 
> issue is Chuck's idea of establishing pin locations such 
> that a 4 nS memory chip can be mounted on the opposite 
> side of the PCB with no more that 1 cm of trace
> length pin to pin. The best solution to many problems is 
> to sidestep them in the first place by changing the rules 
> of the game. In this case, signal integrity is reconciled 
> with simple, low-cost PCB fab technology.

Yes, yes, yes.  After he figured out how to make the CPU
and I/O coprocessors cost a few cents the costs of an
extra layer in a PCB or an extra square inch of board
space became significant.  So he concentrated on improving
pinouts to make PCB cheaper and faster.  I am so pleased
that someone has noticed and understands the ideas.  Too
bad you are not one of the people with money. ;-)

> Maybe the best bet for funding is to approach universities 
> and research foundations, rather than bored and greedy venture 
> capitalists. Or maybe we should all buy lottery tickets and 
> pledge the winnings. 

Perhaps.  I got boored with the Universities because it
looked to me like they didn't want to teach anything that
was not already so mainstream as to be obsolete.  They
do have some good research in places however.

But stuff similar to the active message passing network 
hardware that came out of research at UC Berkeley or
that went into F21 is yet to appear in mainstream technology.  
There is still a big gap.  From what I see they are teaching 
that computers are Windows or Unix to most people.  But maybe 
you are right that there is something there to use.

> I agree with Jeff that wooing the mainstream with me-tooisms 
> is a waste of time. A unique niche based on nya-nya minimalism 
> is the natural arena for Forth chips to shine in. The computer
> industry as a whole is now decadent and needs a slap in the face. 
> The biggest pair of balls is way too high up in the clouds to 
> swing a decent kick at unfortunately, just ask the US
> Dept. of Justice.

Don't get me started.  We have the best government that money
can buy.  
 
> Don't think of the MISC chips as being a PC-incompatible 
> replacement that needs a plethora of SVGA PCI card drivers, 
> etc. 

Here here!

> Think of them as an opportunity to expose the fraud 
> behind the shortsighted standard products that get 
> flogged to us this year and discontinued the next in
> the guise of progress. And of course if you are a "nobody", 
> you'll never get the information necessary to write your 
> own driver. Even supposing you do, it will be necessary 
> to do it all over again when the card is discontinued. Far 
> better to put a stake in the ground and design your
> own high-resolution color display subsystem with whatever 
> features and hardware/software tradeoffs you see fit, 
> for example.

You can get a lot of hate mail for writing things like
that in the wrong place.  I hope the NOSC mail list
is not the wrong place to say it.  I have learned
over the years that it is very dangerous to point
out to people the things that they want to hide 
from themselves or are just not yet ready to understand.

At first I had no concerns about threating anyone
with new ideas. I mean the world is big, there are
countless billions being made, we are just a few
guys with a garage type business.  Not a global
threat!

Many people saw us as some big threat to the industry.
And few people knew about real threats except for
some science fiction writers.
 
> I hate to see quibbling over which geometry results 
> in what mind-numbing MIPS figure. I take it for granted 
> that sophisticated designs are subject to certain 
> statistics as the fat lady sings. I just want to hear
> her perform, even on an off day.

I appologize for any quibbling and for exploding sometimes
when my short fuses get lit.  I do overreact sometimes
after being accused so many times of being a lying mindless
sicophat who worships Chuck Moore, thinks he is God, and
is attempting to form a cult.  I have also lost almost
all patience at being told what "I" should do even when
it is well intentioned and not meant to be critical or
insulting.

In retrospect I think that I am not very well suited 
to the computer industry where almost everyone lies 
all the time and has to to earn a living.  

What is the difference between a car salesman and a
computer salesman?  The car salesman knows when they
are lying to you.
 
> It's reverse heresy to be conservative on these mailing lists for
> heretics ;)

I am sure that there is some appeal to be being a reverse
heretic and defending the status quo.  

I have just lost most of my patience when in a mail list
named MachineForth, which I assumed was people to ask
and answer questions about programming Chuck's chips
the subjects are lectures about how we will fail or
how Chuck's chips are only good for doorstops or
whatever. I thought the lists were for people who 
were interested in this stuff, not another place
for people to insult us.

Well I plan to take a vacation for a while and will
not be dealing with email, mail lists, usenet, etc.
later in July and August.  So take any rumors that
you read about my absence with a grain of salt.
Maybe my level of acceptance or interest will go up
if I cool down a bit.
------------------------

To Unsubscribe from this list, send mail to Mdaemon@xxxxxxxxxxxxxxxxxx with:
unsubscribe NOSC
as the first and only line within the message body
Problems   -   List-Admin@xxxxxxxxxxxxxxxxxx
Main 4th site   -   http://www.