[comp.compilers] 801 and Berkeley RISC

rrh@cs.washington.edu (Robert R. Henry) (02/12/90)

The compilers moderator writes in response to a message by dgb:
> [Keep in mind that the IBM 801 project, the original RISC work, closely
> involved John Cocke, Fran Allen, and other compiler experts.  The PL.8
> compiler that was part of that effort is still a serious contender for
> world's best optimizing compiler.  It has been retargeted for lots of
> different machines, evidently without a whole lot of work.  The
> Berkeley project as far as I can tell involved no compiler people at
> all, which appears to me to be the reason that they invented register
> windows, being unaware of how good a job of register management a
> compiler can do.  -John]

Could you provide leads on "lots of different machines"?  My understanding
of the 801 compiler (now very very dated) is that ported versions of the
compiler treated microprocessors as a RISC machine, and ended up doing
a lousy job of using addressing modes.

Register windows >were< invented by two compiler people, Peter Kessler
and Dan Halbert; they were looking for an easy way to pass parameters
in order to simplify that part of the compiler.

Robert Henry
[I'll look it up, see subsequent article.  -John]
-- 
Send compilers articles to compilers@esegue.segue.boston.ma.us
{spdcc | ima | lotus}!esegue.  Meta-mail to compilers-request@esegue.
Please send responses to the author of the message, not the poster.

henry@zoo.toronto.edu (02/14/90)

>> Berkeley project as far as I can tell involved no compiler people at
>> all, which appears to me to be the reason that they invented register
>> windows, being unaware of how good a job of register management a
>> compiler can do.  -John]

Well, John Mashey has observed that the handful of programs the Berkeley
group used as their primary benchmarks turn out, on comparison with a wider
range of code, to be unusually function-call-intensive.  (His more general
observation is that programs vary a lot and using a small set of them for
benchmarks is usually a mistake.)  They did have some real reasons for going
the way they did.  There are also limits to what a compiler can do with a
language like C++ where call patterns are very dynamic.

>Could you provide leads on "lots of different machines"?  My understanding
>of the 801 compiler (now very very dated) is that ported versions of the
>compiler treated microprocessors as a RISC machine, and ended up doing
>a lousy job of using addressing modes.

As I understand it, this is true... but irrelevant, since the generated code
often ran faster as a result!  Fancy addressing modes turn out to be
seriously slow, because the CPU designers quite sensibly optimize the ones
that are frequently used, i.e. the simple ones.  The 801 people were
reportedly quite surprised to find that the 370 (and successors) run faster
as RISCs than as CISCs.

                                    Henry Spencer at U of Toronto Zoology
                                uunet!attcan!utzoo!henry henry@zoo.toronto.edu
-- 
Send compilers articles to compilers@esegue.segue.boston.ma.us
{spdcc | ima | lotus}!esegue.  Meta-mail to compilers-request@esegue.
Please send responses to the author of the message, not the poster.