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