Path: utzoo!utgpu!attcan!uunet!lll-winken!lll-tis!helios.ee.lbl.gov!pasteur!agate!bionet!apple!vsi1!wyse!mips!cprice From: cprice@mips.COM (Charlie Price) Newsgroups: comp.arch Subject: Re: A simple question on RISC Message-ID: <7819@winchester.mips.COM> Date: 8 Nov 88 01:56:32 GMT References: <76083@sun.uucp> <559@dms.UUCP> <1021@raspail.UUCP> Reply-To: cprice@winchester.UUCP (Charlie Price) Organization: MIPS Computer Systems, Sunnyvale, CA Lines: 46 In article <1021@raspail.UUCP> bga@raspail.UUCP (Bruce Albrecht) writes: > >The 6600 did have integer multiply (although the PP's did not). I'm curious, >though, are the Cybers the only machine around that simulate integer divide >by doing a converting to floating point, floating point divide, normalize, >and convert back to integer? Saying that the 6600 (or any of the 6000 series) had integer multiply without any further explanation and then saying that it didn't have integer divide is wrong. For those who are not familiar with the story here, the 6000 series machines had 60-bit words and thus 60-bit integers (maybe) and a floating point format with a 48-bit mantissa. The main objective of the machines was fast scientific computation so the floating point times were quite fast. There were operations for integer add and subtract on the 60-bit registers. There were not, however, multiply or divide instructions. It was possible to use the always-present floating point hardware to do multiply/divide for some integers. To quote the "Control Data 6000 Series Computer Systems Reference Manual" Revision W (1-15-73): Fixed point integer multiplication is handled in the multiply functional units as a subset operation of the unrounded Floating Multiply (40, 42) instructions. The multiply is double precision (96 bits) and allows separate recovery of upper and lower products. The multiply requires that both of the integer operands be converted (by program) to floating point format to provide biased exponents. This insures that results are note sensed as under-flow conditions. The bias is removed when the result is unpacked. An integer divide takes several steps and makes use of the Divide and Shift Units. ... I don't want to type in the example text -- the basic story is that the floating result is unpacked and shifted by the exponent amount to get the bits into the right position for the integer representation. So the hardware doesn't really support 60-bit ints very well at all. If you limit integers to 48 bits of significance then multiply and divide operations don't give you any surprises -- but of course then you are faced with the problem that add and subtract don't really work for the same domain and range as multiply and divide. -- Charlie Price cprice@mips.com (408) 720-1700 MIPS Computer Systems / 928 Arques Ave. / Sunnyvale, CA 94086