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

Fireside Chat 98 part 2


Dear MISC readers,

Here is part 2:

(The Annual Forth Day meeting was held at the
Silicon Valley Chapter of the Forth Interest Group
was held on Saturday 11/14/98 and included representatives
from the Sacramento and North Bay Chapters.)
(part 2) (starting at 17 minutes into presentation)
(Chuck Moore on Color Forth)

Now if I have a word in here that is not a number, and the
operator is yellow it will executed just like it were white.
But I think it will be more colorful in yellow.

(question: Do you hit a function key to set a color and then that color
applies until you hit another function key?)
(Chuck) That's the way I used to do it
and that is kind of the way I am doing it now and I don't want to.
I want there to be an explicit character. The space bar might work.
I'm not clear at the moment on how to use the space bar.  the space
bar at the momement generates a space which has no color information.
I'm tempted to make the space bar generate white.  Which is perhaps
the most common use.  But these change
from week to week.  It isn't hard to change things.

Here's another block.  Blocks are 256 characters long.  In this
case there is no END. It falls off the end and goes into another
block.  Keeping things arranged by blocks is convienient in that
I've got the whole thing in front of me at one time.

TEMP EMPTY 65 LOAD
VARIABLE (red) H NO : ORG (green)
H ! ; (red) H! (green) DUP PUSH @
(blue) FFFF0000 (green) AND OR POP
! ; (red) . (green) H @ H! 2 H +!
; (red) KS (green) 14 FF * ; (red) TA (green) 29
4 (red) : DT (green) SWAP 10 NO @
*/ SWAP OVER KS */
(red) AT (green) DT TA + TA SWAP
/. 3/2 /. ; (red) D (green) DT SWA
P DROP


(black) 66 N 67 F 66 PRINT

Ok, here's a comment, TEMP. Here's a use of VARIABLE.
It specifies that the follwing words are variables.
And here's two variables, H and Number. (NO) So I
can define a bunch of variables in a line without
repeating the big long word VARIABLE.  And then Colon
says I am changing to colon defintions (at ORG).  Here
I'm defining Origin and H! and H , it is a little compiler.
I'm compiling stuff into memory, what I am compiling is
actually .. I'm getting ahead of myself.

So I have mentioned command line hide and reveal and
now I'm off on spreadsheet.  This is actually the code
for spreadsheet.  This what actually does the work.

Let me show you what a spreadsheet is.  This is a spreadsheet.
It is another example of color mapping. Black doesn't show up
well on top of blue but it does show up well on top of all
other colors.

(blue area) (green area)
15  3000    18  3100
126         160
-25 235     -25

These five numbers describe two sets of curves.
These are the IV curves for the current LG process.
These are N transistors and these are the P transistors.
You can't quite see it but around that number (5 in 15)
there is a ring.  Indicating that that is the number that
will alter if I push the arrow keys.  Right
or left arrow will move the ring and up and down arrows
will increase or decrease the value stored there. So
I can sit here and adjust these numbers and watch the
curves change.

There are dots in these curves that represent the measured
values.  For one block of source code I have a very convient
method for displaying numbers and changing their values.  To
me that is a spreadsheet.  I guess spreadsheets are a lot
more elaborate than that.

This is the source code and this has been on my mind for a
long time.  I am very pleased that I was able to do it and that
it was simple as this.   Here I am just putting up some color
backgrounds so that does away with labels up here too.

(blue on left)(grey on right)
UAN VTN    UAP VTP
N+N        N+P
NLN SHN    SLP SHP
(black) IV END

This block, these are Forth words.  They are interpreted and as
these words are executed they execute a version of dot that puts
out a number on top of them. So the location of the word indicates
where the words value will be displayed.  The color of the word
gives you some hint as to what the meaning is.  It is very easy
to edit a block like this to represent the data as I want it
to appear.

This is the word IV that draws the IV curves.  And then END marks
the end of the block.  So you see everything is here and there is
correspondence to the layout. (on the previous overhead)  So far
I have constructed two of these interactive screens and I figure
I will do many more.

Originally I wanted these numbers to be right justified and I
picked the word size so that it would line up nicely on the right.
But in fact I never got around to writing a right justified output
and it really doesn't matter.

That is Color Forth, and that's probably enough said about it.  It
keeps evolving. I am using it in the context of chip design.  Chip
design has the priority. I add features as necessary somewhat
guiltily but doing the spreadsheet thing has made it easier for
me to do some experiments.  You have to be careful about making it
easier because you have to have a payoff.

The payoff is this.
The i21ls came back about two weeks ago and almost works.
This was on the LG fab line as opposed to HP.  I've spent five
years practicing for HP and this is the first time I've done LG.
The processes are not that much different but their different
enough that a chip that worked for HP didn't work for LG.  The
question is why.  The answer is the IV curves.

I've probably showed you these before.  They are similar to all
IV curves.  There are two changes I've made. The first is the
slope of this line.  This is the curve for five volts.  This
curve is much flatter than it would be for four volts.  At four
volts it would go over this way and then down.  At three volts
it bends over even more strongly. If you're familiar with the
textbooks you know the curves look very different than this.
They show curves that are flat and come down.  And that flatness,
is a lie.  This is the shape the curves have.

This is a one tile wide N transistor and this is a two tile wide
P transistor and this says that the ration N to P is larger than
one to two.  That is no suprise because this is process independent,
but this disparity is extradinary.  Again, the reason for it is
temperature.

We measured these IV curves because I didn't trust HP to measure
them for me.  I don't trust LG to measure them for me. I want to
know what they really are.  So we have got a little bit of circuitry
on the chip to let us measure this.  And the measurement looks
flatter than his also.

But when we measure the transistors they are hot.  Current is flowing
through them. Heat is being deposited in the channel of the transistor
in a very small area. So these transistors are running a hundred degrees
above average.  And the resulting curve if they were running at
ambiant would be this.  When I take out the temperature effect the
curves increase by about 50%.  50% is a huge difference.  A 50%
difference than what I had assumed when I designed the chip.
This effect is unknown to almost everybody.  You're the only people
who know. (laughter)

The reason for this is that everyone measures their transistors hot.
This has been hinted at in the literature. Some people have said that
they know they are measuring the transistors while they are hot but
what I've never seen anybody due is convert the curves back
to what they would be colder. When they are cold they are much more
systematic than when they are hot.  If you take this five volt curve
and drop it back to hot you get a big correction. You get a much
smaller correction at four volts and virtually no correction at
three volts.  That is because the energy you are depositing is
proportional to voltage times current.  Cut the voltage in half and
you go from a signifigant effect to a negligable effect. It's
a negligable effect in P transistors since their current is less
than half of that of N transitors.

So I was pleasantly suprised to see such a large effect.  This
accounts for all of the observed disparagies that we observe
in the chips.  For a long time we were plauged with circuits that would
work at three volts or four volts but not at five volts.  Nothing
that I could do would make them not work (in OKAD) at five volts.
Doing this they don't work at five volts.

I feel we have reached the truth at last.  I think last years I said
I thought that had found an effect to account for this and I hadn't.
Concievably I'm wrong here too but it looks good.

(Dr. Ting asks a question about chips running 100 degrees above ambient)
(Chuck) The chips are running three degrees above but the transistors
in a very small region on a very small transistor is burning hot.  It
gets hot almost instantly.  As soon as I turn it on the temperature
ramps up ten degrees.  If I leave it on it will ramp up twenty, thirty,
fourty, eighty degrees.

(Another question from Dr. Ting) (Chuck) Yes, we have an oscilator
on the chip that I can switch from one configuration to another
and with an on-chip counter to measure the period of that oscilator.
I can display the period on the screen as a spectrum.  And can get
multi-line spectra of 18 values.  If I adjust these curves to fit
those values then I trust the simulation.

The temperature of a transitor cannot be measured.  We've thought
of a lot of ways. You can take an infrared viewer but the resolution
is so course that you just get a blur where the transitor is.  Using
the simulator we are seeing things that are unobservable.  This
harkens back to quantum mechanics where all of the interesting
things in quantum mechanics were deemed unobservable by Hiezenburg.

We have six million atoms in the part of the transitor that heats
and that is enough to (noise).  I have have implemented this temperature
effect several times and I have gotten it wrong every time except the
last one. (laughter) And the characteristic is, and
this is interesting for anyone who wants to control ovens
that the phenomona of termperature rise is distinctly different
than that of temperature fall.  Temperature goes up because you are
pumping heat in and as you pump heat in temperature is proportional.
Heat is proportional to temperature.  The more head you add the
higher the temperature.  It will reach an equalibrium where it
evens out with fall.

Putting heat into something it will heat up then it will cool off
by diffusion.  Which is a one over square root decay of temperature.
It is a much longer curve than the heating curve.

Now we've observed some behavior on these chips that was totally
unexplicable until now. The fact that if you in fact put four
instructions in the same word as we can do they wouldn't work.
If we put them in four separate words they work just fine.  What
is different in quick sucession and running them delayed by fourty
nanoseconds? They get hot.  And that says that in two nanoseconds
the temperature did not decrease substantially so you ratchet up.
You get a clock pulse and it goes up and then two nanoseconds
later you get another one and it goes up again and after four
of these steps you are twenty degrees above ambient and things
are acting differently than they did when you were colder.

This is a problem but it is also a feature that we should be able
to exploit in some way.  The only thing I have come up with is
that it is very difficult to reverse engineer this chip if you
don't have the proper temperature behavior in your tools.

(Question: Why doesn't this effect other commercial CPUs?)
(Chuck) Because they have about a 500% margin.  They wait a
long time for these effects to dissapate before they do
something.  This is particularly dramatic for things like
gate arrays.  They are running so slowly, they are so
conservative that they never encounter anything like this.

(Question: What do you do to fix it.)
(Chuck) You make the transistors bigger. (laughing to himself)
It's a sort of knee jerk reaction to anything, you can fix it by
making the transistor bigger.  The only thing that this tells
me is which transistors and how much bigger.  But not knowing
that it was absolutely hopeless.  I just had no idea.

(Question: How many transistors will you have to enlarge?)
(Chuck) Twelve.  Twelve out of sixteen thousand.  One in
a thousand.  The critical ones that generate the pulses.

Another effect we observe, we have some chips that we can in
fact put four instructions per word. Those chips just happen
to have the right parameters and execute four instructions
per word just fine.  But the browser just doesn't work.

In the browser we can pack twenty to fifty percent of the
instructions before it fails.  Why?  The answer is that the
browser does a lot of in-page memory accesses and those are
memory accesses every fourty nanoseconds.  The test code
does not have the same relationship with the video coprocessor
and might make accesses every one hundred and fifty nanoseconds.
So this says if you execute so many packed instructions in
so many nanoseconds the temperature still hasn't gotten down
to where things work right and eventually it fails.  If you
do more off-page access it is slower and the temperature has
more time to drop.

We're dissapating very little energy.  The three hundred
milliamps that was mentioned was for the board.  The chip
is dissapating maybe ten milliamps.  It is very hard to
measure because it is in the noise.  It is very hard to
simulate because my simulator isn't accurate for those
measurements.  One of our challanges is to measure how
much energy the chip uses.  It is almost miraculously low.

One of the few reasons for doing this, as I have said before,
the world does not want another microprocessor.  We are competing
with much better staffed and financed operations than ours.  It
is a fools game.  Don't design your own microprocessor.

But we have a shot at it because we are very fast, we are very
small, we are very low power and we are very cheap.  If you are
not all of those things you haven't a prayer.  And since we are
all of those things we have a tiny chance of getting anything
into the market place.

(How small?) (Chuck) At .8u it is about 1 sqaure mm.  We can
make it about sixteen times smaller in a different process.
(questions about temp and other chips and spice etc)

(part 3 is Chuck's ideas about browsing the internet)

Jeff Fox    Ultra Technology