A Thought about Multiple Cores
Dan Ingalls
Dan at SqueakLand.org
Sat Jan 27 06:41:04 UTC 2007
In 1978 we built a Smalltalk to run on the NoteTaker, an experimental
somewhat portable (we called it *trans* portable ;-) computer with an
8-MHz (this was considered fast ;-) 8086 processor. In addition to
the ST processor board, there was an I/O board with a 4-MHz 8086, and
also an Ethernet board with an 8-MHz 8086. We got ST going on it,
and it actually ran pretty well.
But you know how it is -- faster is always better. We weren't doing
anything with the Ethernet board, and I started to get ideas...
This was the first Smalltalk that did all graphics with BitBlt and
Smalltalk so, eg, while displaying text, there was as much work
running the bytecodes to pick characters and set up BitBlt as there
was to actually do the BitBlt operations. So it occurred to me to
have the BitBlt primitive simply put BitBlt requests on a queue, and
then use the Etherenet processor to read the queue and do the actual
Blt. I can't believe that I actually did this, but the truth is that
it worked beautifully. We only used it a few times because there was
only one working Ethernet board (for that matter there was usually
only one working NoteTaker ;-) but the result was nearly a full
factor of two improvement in how the UI behaved. Obviously care had
to be taken to wait for completion when the destination was not the
Display, but it's easy to check and occurs relatively infrequently.
[I can't remember, but I think I simply ran these in the ST processor
rather than queuing them for the Ether processor, so in some cases
BitBlt could actually be running in *both* processors]
So this is just a suggestion that, when multiple cores are available,
Squeak might well run such things as screen updates almost twice as
fast if we put the BitBlt engine (ie everything after the tests for
failures) in a separate thread from the rest of Squeak. What's nice
is that it's a very local change with *no* impact to the rest of
Squeak except to make things run faster.
If someone has suggested this already I apologize -- I get behind on
my email sometimes.
- Dan
More information about the Squeak-dev
mailing list
|