Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!think.com!paperboy!meissner From: meissner@osf.org (Michael Meissner) Newsgroups: comp.sys.m88k Subject: Re: Machines that use the 88's Message-ID: Date: 11 Apr 91 22:38:44 GMT References: <28747@dime.cs.umass.edu> <676@adpplz.UUCP> <5@metran.UUCP> Sender: news@OSF.ORG Distribution: na Organization: Open Software Foundation Lines: 74 In-reply-to: jay@metran.UUCP's message of 6 Apr 91 15:54:35 GMT In article <5@metran.UUCP> jay@metran.UUCP (Jay Ts) writes: | Personal note: considering that the 88000 is by far the best microprocessor | architecture on the market, and the pioneering work of 88open into the planning | of Open Systems, I find the brevity of this list to be very depressing. I probably shouldn't say anything, but that never stopped me before...... I agree with Hennesey and Patterson, that the current crop of RISC's are more similar than they are different. The m88k does have a few warts: * A signed divide instruction that traps if either number is negative. This was the single worst feature of the machine when I was doing GCC development IMHO. * No multiply with overflow checking. * Memory load latency of 3 cycles instead of 2 cycles. * FP registers in the general register pool. I used to think this was a feature, but now I'm convinced it's a bug. The biggest problem is you run out of registers when unrolling heavy FP loops. Another problem is that it probably limits how fast the next generation of chips can be. To the people that think it's neat so that you can do bit flipping and such, I had done some of that in GCC, and I and Tom Wood removed it because it violates the IEEE floating point spec. * 64-bit FP paths seem to have lots of 32-bit knotholes that limit performance (true of most 1st generation RISC systems). * Standard doesn't include a small data area, which allows one instruction memory references to small static/global items. It was in at one time, and then removed. * Passing structures on the stack. This makes varargs real awkward. The original calling sequence had the first 8 arguments passed in registers, even if a structure was split between the stack and registers. This allowed a varargs function to just store the 8 registers into the homing area, and use a char * pointer to bop through the argument list. Now, you have to store the 8 registers elsewhere, and use ?: to determine if an argument was in the first 8 words or passed on the stack (as if printf wasn't slow enough as is). This was because a particular compiler vendor bulldozed the 88open committee. * Time to market on the original 88100 was real late. I suspect the same problem will occur with the 88110. * No remainder instruction. Things that I see as features as compared to the MIPS include: * Double indexed addressing, and scaling by 2, 4, or 8. * The extract bits stuff, though it can cause some code to break that does shift by 32. * Hardware interlocks, which allows code meant for different implementations to work (though possibily not work at peak speed). * {,f}cmp giving you <, =, and > status all at the same time. * 13 saved registers (as compared to 9 integer regs) on the MIPS. -- Michael Meissner email: meissner@osf.org phone: 617-621-8861 Open Software Foundation, 11 Cambridge Center, Cambridge, MA, 02142 Considering the flames and intolerance, shouldn't USENET be spelled ABUSENET?