[alt.next] RISC v. CISC --more misconceptions

baum@Apple.COM (Allen J. Baum) (10/18/88)

[]
>In article <156@gloom.UUCP> cory@gloom.UUCP (Cory Kempf) writes:
>A while back, I was really hot on the idea of RISC.  Then a friend 
>pointed out a few things that set me straight...
>
>First, there is no good reason that all of the cache and pipeline
>enhancements cannot be put on to a CISC processor.

  Some are trying to do it, but they can't do it as well as a RISC processor
  because they don't have room on the chip, because they're busy supporting
  instructions and addressing modes that hardly ever get used.

>Second, to perform a complex task, a RISC chip will need more
>instructions than a CISC chip.

  First of all, not necessarily true. Second of all, so what?  The number
  of instructions used by RISCS has been greatly exaggerated. First generation
  RISCS may have a code expansion of 50% in bytes. However, this is a static
  measurement. It doesn't mean that the inner loops will use twice as many
  cycles. And, since the datapath of a RISC machine is simpler, its cycles
  are likely faster.

>Third, given the same level of technology for each (ie caches, pipelines,
>etc), a microcode fetch is faster than a memory fetch.

  Perhaps, but the microcode is only good for one thing: interpreting macro-
  code. A the code in a cache is good for whatever I happen to be executing
  at the time.

>As an aside, the 68030 can do a 32 bit multiply in about (If I remember 
>correctly -- I don't have the book in front of me) 40 cycles.  A while
>back, I tried to write a 32 bit multiply macro that would take less 
>than the 40 or so that the '030 took.  I didn't even come close (even 
>assuming lots of registers and a 32 bit word size (which the 6502 
>doesn't have)).  

Check out the ASPLOS II proceedings. There is an article the by Dan Magenheimer
of HP explaining how the do 11 cycle average multiplies, without a multiplier,
and without a multiply step instruction. Besides, if you have a RISC machine,
and multiply is truly important, the you have room for multiply support, up
to having a full multiplier. You may find, howver, that it won't make any
difference in your performance because no one needs an integer multiplier very
often. Like a lot of things that RISC designers have left out.

--
{decwrl,hplabs}!nsc!baum@apple.com		(408)973-3385

snoopy@sopwith.UUCP (Snoopy T. Beagle) (10/31/88)

In article <18931@apple.Apple.COM> baum@apple.UUCP (Allen Baum) writes:
| You may find, howver, that it won't make any difference in your
| performance because no one needs an integer multiplier very
| often. Like a lot of things that RISC designers have left out.

I humbly disagree.  Just because *you* never use an integer multiply
does not imply that noone else ever does.

    _____     
   /_____\    Snoopy
  /_______\   
    |___|     tektronix!tekecs!sopwith!snoopy
    |___|     sun!nosun!illian!sopwith!snoopy

david@ms.uky.edu (David Herron -- One of the vertebrae) (10/31/88)

Yea really ... and compilers use integer multiplies all the
time when referencing into arrays...

I for one would like to see floating point tossed out, since I
never use it (and I happen to dislike my numerical analysis class :-)
-- 
<-- David Herron; an MMDF guy                              <david@ms.uky.edu>
<-- ska: David le casse\*'      {rutgers,uunet}!ukma!david, david@UKMA.BITNET
<--
<-- Controlled anarchy -- the essence of the net.

baum@Apple.COM (Allen J. Baum) (11/01/88)

[]
>In article <40@sopwith.UUCP> snoopy@sopwith.UUCP (Snoopy T. Beagle) writes:
>In article <18931@apple.Apple.COM> baum@apple.UUCP (Allen Baum) writes:
>| You may find, howver, that it won't make any difference in your
>| performance because no one needs an integer multiplier very
>| often. Like a lot of things that RISC designers have left out.
>
>I humbly disagree.  Just because *you* never use an integer multiply
>does not imply that noone else ever does.

Oh, please!
I didn't say noone.
I didn't say ever.
Of course there are applications that are integer multiplication
intensive (as opposed to floating point).
What I did say is that they are quite rare.

Integer floating point intensive is defined (here and now, by me) to
be an application that will suffer a performance degradation of more
than 3% without a fast hardware multiplier (2-3 cycles, vs. the
average 11 cycles that HP can do in pure software. (A back of the
envelope calculation will show that means .3%- pretty high for
multiply) Most integer multiplies that I am aware of are used for
index scaling and other address calculations. Good optimizing
compilers will strength reduce these away

--
		  baum@apple.com		(408)974-3385
{decwrl,hplabs}!amdahl!apple!baum

kyriazis@rpics (George Kyriazis) (11/01/88)

In article <10471@s.ms.uky.edu> you write:
>Yea really ... and compilers use integer multiplies all the
>time when referencing into arrays...
>
>I for one would like to see floating point tossed out, since I
>never use it (and I happen to dislike my numerical analysis class :-)
>-- 

Floating point is getting faster and faster every day.  One example that
I know of is the AT&T DSP32 Digital Signal Processor.  It needs 1 CPU
cycle to do a floating point multiplication and accumulation.  An
interesting side-effect is in the calculation of array referencing.
It expands the array index to FP, does the array indexing, and then
truncates the resulting address to an integer.  (The compiler I am
talking about is the one that is the one that AT&T gives for their
Pixel Machine).


-- 

  George Kyriazis
  kyriazis@turing.cs.rpi.edu
------------------------------

  George Kyriazis
  kyriazis@turing.cs.rpi.edu
------------------------------

guy@auspex.UUCP (Guy Harris) (11/02/88)

>Yea really ... and compilers use integer multiplies all the
>time when referencing into arrays...

Integer multiplies by *constants*, most of the time; you can often do
those better with shifts and adds than you can with the machine's
multiply instruction (and no, I'm not talking about the 68010, which
doesn't have a 32x32 multiply instruction).