Never heard of SOAR. It would be pretty sweet though to have a powerful & multi-core chip running a Smalltalk OS that could do something with all the cores. I'd also like to see kOS from Arthur Whitney if he ever finishes it, although I'd never be able to afford any of their products.
Looking at the results, they say that hardware tag-checking for integer arithmetic and register windows for fast method calls were the two most important features of the design, nearly doubling performance.
I wonder if that still holds today, with the memory wall so dominant that CPUs tend to be stalled quite a bit (therefore enough time to do tag checking in software).
I don't think I'd call the transputer "hardware multitasking" so much as "integrated communications network."
For a time the T800 was the top of the FP pile. Not for long, though, and then the long, long, long wait for the disappointing T9k doomed the whole architecture.
>I don't think I'd call the transputer "hardware multitasking"
"A Transputer had a number of simple operating system functions built into the hardware. These included hardware multitasking with foreground and background priority levels, hardware timers, and hardware time-slicing of background tasks."
There are special instruction to start and end a process, and the fact that it was a stack machine means context switches were extremely fast, almost no registers to save/restore.
> so much as "integrated communications network."
It had both, and both were integrated. IIRC, the instructions to send/receive on the links were integrated with the multitasking hardware.
"The first 16 'secondary' zero-operand instructions (using the OPR primary instruction) were:
Mnemonic Description
REV Reverse – swap two top items of register stack
LB Load byte
BSUB Byte subscript
ENDP End process
DIFF Difference
ADD Add
GCALL General Call – swap top of stack and instruction pointer
IN Input – receive message
PROD Product
GT Greater Than – the only comparison instruction
WSUB Word subscript
OUT Output – send message
SUB Subtract
STARTP Start process
OUTBYTE Output byte – send one-byte message
OUTWORD Output word – send one-word message"
Also, you could designate memory locations as local communications channels, and the same instructions would work. So the same binary could run locally or distributed.
Chuck Moore's "Green Arrays" is kinda cool and so is the Parallela board.