SOAR - Smalltalk on a RISC and its children
Jecel Assumpcao Jr
jecel at merlintec.com
Fri Feb 15 22:04:50 UTC 2002
On Thursday 14 February 2002 20:08, Mike O'Brien wrote:
> So, if y'all want hardware that was designed to run
> Smalltalk well, y'all have it. It's called SPARC. Or so I'm told.
My impression is that Sparc was mostly derived from the RISC II, with
only the tagged add/subtract instructions (for Lisp, all the Sparc
papers said) borrowed from SOAR. All instructions were tagged on SOAR.
It had a flexible return instruction which made it easy to return small
constants and to initialize the returned from context. It had a
hardware for write barriers. It had delayable interrupt handling ("safe
points" marked in the code).
Initial version of Sparc/Solaris had a serious performance problem with
register windows. Unlike SOAR, which had very fast trap handlers for
when there was a window overflow/underflow event, Sparc V8 needed 205
cycles for overflows and 152 for underflow. The ultrasparc has reduced
that to a very reasonable 19 instructions. This history encouraged
compiler writers to avoid using register windows, so I am not sure that
Squeak actually uses them on a Sparc. It is possible that Jitter or the
new block context code takes advantage of this SOAR feature, but I
haven't looked.
I feel that register windows could be made more friendly for non-LIFO
contexts by using a design closer to the K-Machine (from Lisp Machines
Inc):
http://fare.tunes.org/tmp/emergent/kmachine.htm
-- Jecel
More information about the Squeak-dev
mailing list
|