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.