[comp.sys.ibm.pc] Why The Move To RISC Architectures?

Will@cup.portal.com (Will E Estes) (03/18/90)

What is the MIPS rating of these microprocessors:

386SX-15
386-20
386-25
386-33

Also, since the 80386 has a more complex instruction set and does
more work in a given instruction than does a typical RISC chip,
does comparing MIPS figures between RISC and non-RISC
architectures really tell you anything of worth?

Finally, why is everyone so excited about RISC?  Why the move to
simplicity in microprocessor instruction sets?  You would think
that the trend would be just the opposite - toward more and more
complex instruction sets - in order to increase the execution
speed of very high-level instructions by putting them in silicon
and in order to make implementation of high-level language
constructs easier.

Thanks,
Will
 

marshall@wind55.seri.gov (Marshall L. Buhl) (03/21/90)

Will@cup.portal.com (Will E Estes) writes:

>Finally, why is everyone so excited about RISC?  Why the move to
>simplicity in microprocessor instruction sets?  You would think
>that the trend would be just the opposite - toward more and more
>complex instruction sets - in order to increase the execution
>speed of very high-level instructions by putting them in silicon
>and in order to make implementation of high-level language
>constructs easier.

Just a wild guess.  Hardware guys like RISC, software guys like CISC.
RISC puts the work on the shoulders of the software folks.  It's easier
to impliment RISC in hardware.  If I were developing software in
assembler, I'd probably hate RISC.  It is probably harder to write a
compiler for RISC.  If you use high-level languages, you may not care.
Users probably don't care unless one costs more for the same application
performance (which is all that really counts).
--
Marshall L. Buhl, Jr.                EMAIL: marshall@wind55.seri.gov
Senior Computer Engineer             VOICE: (303)231-1014
Wind Research Branch                 1617 Cole Blvd., Golden, CO  80401-3393
Solar Energy Research Institute      Solar - safe energy for a healthy future

santol@cbnewsc.ATT.COM (shawn.r.antol) (03/21/90)

Someone wrote:
> Also, since the 80386 has a more complex instruction set and does
> more work in a given instruction than does a typical RISC chip,
> does comparing MIPS figures between RISC and non-RISC
> architectures really tell you anything of worth?

Absolutely not.  The figures must be taken with respect to some
type of standard, ie. application program that is common to both
architectures - compiled by the same compiler.  Good luck finding this.
The problem in comparing the two is easily explained (see below).  

> Finally, why is everyone so excited about RISC?  Why the move to
> simplicity in microprocessor instruction sets?  You would think
> that the trend would be just the opposite - toward more and more
> complex instruction sets - in order to increase the execution
> speed of very high-level instructions by putting them in silicon
> and in order to make implementation of high-level language
> constructs easier.

Simplicity in design means LESS board space for the CPU.  Of course
nobody is going to switch just because of board space, but imagine
using the *extra* space for caching, floating point hardware, etc.

The RISC architecture is well know for its very high MIPS rating.
Most notably, one machine instruction during EVERY clock cycle.
Compare that with 3-25 clock pulses for a CISC architecture and
you can easily see that the RISC can outperform the CISC in SOME 
applications <--Very important!  Consider doing an integer
multiply in CISC:  Load the registers and let the CPU do it!
         in RISC:  Load more registers, AND write the routine
                   to multiply.  It takes more machine cycles
                   but might do it faster!

The RISC/CISC debate is a very hotly debated subject and I can't
wait to see all of the email this article will cause :-(

One reason people prefer CISC is that it has a large number of
unique machine language instructions.  However, studies have shown
that say, for a CPU with 300 instructions, only 20-45% of the unique
instructions are utilized by people coding in assembly language.  

So you say, "who in the hell codes in assembly language these days?"
Although there are quite a few who do/need to code in assembly, the
truth is that compilers are taking over the show and all in all, 
the space required to put the added complexity on the CPU does not
outweigh the benefits of having complex instructions because the 
compilers use even LESS of the unique instructions available in 
CISC.

One very important point is that as architectures are performing
more and more parallel processing, the COMPILER becomes the 
determining force for speed in code execution.

It is my opinion that one needs to closely define what his/her
application is and decide if RISC or CISC is better.  Clearly
there is no "winner", but "what is the application".

I do not advocate one over the other because they both have 
benefits/faults the other doesn't have.  Only the future can
tell us which will preside.

Shawn R. Antol
AT&T Bell Labs
Naperville, IL - USA
voice: 708-979-5622
email: att!ihlpb!santol
#include <std.disclaimers>

kmont@hpindda.HP.COM (Kevin Montgomery) (03/21/90)

> Also, since the 80386 has a more complex instruction set and does
> more work in a given instruction than does a typical RISC chip,
> does comparing MIPS figures between RISC and non-RISC
> architectures really tell you anything of worth?

nopers...   "MIPS are meaningless"

> Finally, why is everyone so excited about RISC?  Why the move to
> simplicity in microprocessor instruction sets?  You would think
> that the trend would be just the opposite - toward more and more
> complex instruction sets - in order to increase the execution
> speed of very high-level instructions by putting them in silicon
> and in order to make implementation of high-level language
> constructs easier.

First, I'd refer you to comp.arch, where this is talked about endlessly.
The advantage is that the simpler a design is, the more it can be optimized.

A couple of profs at Berkeley (Patterson and Sequin) looked at the usage of 
the instructions of a few machines and found that 10% of the instructions
were being used 90% of the time.  Even though some snazzy, neato, high-level
instructions existed (who can forget the VAX polynomial instruction?), the
code spit out by the compiler never made use of them (to say nothing of the
fact that alot of these functions were in microcode!).  So, you had 95% of 
the code in the world suffering to get their stuff done because the design 
of the processor was convoluted by having functions that only a few people
used.  So, these guys at UCB (along with some great folks at Stanford) said,
"Gee (no GTE), maybe we should only have the instructions we need and optimize
the hardware/stacks in a big way" (UCB)  and "Gee (same joke), maybe we should 
get the compiler writers and hardware guys to talk together" (Stanford).  So, 
UCB cut out the deadwood and optimized the hardware, and Stanford cut out the
deadwood, got the compiler writers and hardware guys talking, used a larger
set of general registers, left Stanford and begat MIPS  (okay, a little 
simplistic, but hey, it's MY posting).  Other companies were looking at the
technology at the time and picked either one of the camps (Sun->UCB, HP&MIPS
->Stan).

So, in general, you want to only have the instructions you're going to use
and you want these as fast as can be.  Unused instructions are deadwood that
prevents you from optimizing the remaining instructions.  Also, by making
the designs less complicated, clock speeds can go through the roof.  So, you
get these screaming little processors that need more and more memory to keep
them fed.  Also, since you have the chip space and life is simpler, you
can do other nice things like pipelining.  Also, don't forget- since it's
simpler, you can crank out a design in half the time it used to take.

Will it hold up?  Dunno.  Personally, I think that multiprocessor designs may
be the undoing of RISC-based systems, unless someone can build a good, cheap,
fast dual-ported memory.  Remember, the faster the CPU goes, the more the 
memory bottleneck grows.  And having more processors increases the contention
for memory.  We'll see how it shakes out, but for now, the customer wins big.

						kevin

Ralf.Brown@B.GP.CS.CMU.EDU (03/21/90)

In article <40970054@hpindda.HP.COM>, kmont@hpindda.HP.COM (Kevin Montgomery) wrote:
}were being used 90% of the time.  Even though some snazzy, neato, high-level
}instructions existed (who can forget the VAX polynomial instruction?), the

If you think that one is neat, what about the VAX string-edit instruction?
Feed it the address of a string and the address of a list of edit commands
and let it fly.  You could probably write the equivalent of the Unix SED
in about fifty lines of VAX assembler....

--
UUCP: {ucbvax,harvard}!cs.cmu.edu!ralf -=- 412-268-3053 (school) -=- FAX: ask
ARPA: ralf@cs.cmu.edu  BIT: ralf%cs.cmu.edu@CMUCCVMA  FIDO: Ralf Brown 1:129/46
"How to Prove It" by Dana Angluin              Disclaimer? I claimed something?
16. proof by cosmology:
    The negation of the proposition is unimaginable or meaningless.  Popular
    for proofs of the existence of God.

robert@ireq.hydro.qc.ca (R.Meunier 8516) (03/21/90)

	Once a compiler is completed for a RISC Architecture, it should
be easely ported to another one because the RISC instruction between
two RISC microprossesor should be the almost the same.
--
-----------------------------------------------------------------------
Robert Meunier                     Institut de Recherche d'Hydro-Quebec
Ingenieur                          1800 Montee Ste-Julie, Varennes
Internet: robert@ireq.hydro.qc.ca  Qc, Canada, J3X 1S1 

jdudeck@polyslo.CalPoly.EDU (John R. Dudeck) (03/22/90)

In article <40970054@hpindda.HP.COM> kmont@hpindda.HP.COM (Kevin Montgomery) writes:
>nopers...   "MIPS are meaningless"
>
>First, I'd refer you to comp.arch, where this is talked about endlessly.

A few weeks ago I made the remark on the net that it seems meaningless to
compare RISC MIPS with CISC MIPS.  I was soundly rebutted by any number
of netters telling me that all the manufacturers use VAX MIPS
when rating their cpu's.  In other words, benchmarks are run for various
types of cpu-intensive applications, and the results are compared to the
same benchmarks on a VAX 11/780, which is the platinum standard by which
all cpu's are measured.

-- 
John Dudeck                           "You want to read the code closely..." 
jdudeck@Polyslo.CalPoly.Edu             -- C. Staley, in OS course, teaching 
ESL: 62013975 Tel: 805-545-9549          Tanenbaum's MINIX operating system.

nelson_p@apollo.HP.COM (Peter Nelson) (03/22/90)

 :> Also, since the 80386 has a more complex instruction set and does
 :> more work in a given instruction than does a typical RISC chip,
 :> does comparing MIPS figures between RISC and non-RISC
 :> architectures really tell you anything of worth?


 Obviously the instruction sets of different machines are very different.
 This isn't just a problem between RISC and CISC but between different CISC
 machines too.   The venerable Z80's instruction set was 4 ticks for r-r ops,
 7 ticks for 8 bit r-m ops, 10 ticks for 16 bit r-m ops, etc.  You could
 easily make a case for an "average" program's mix to be ~8 ticks per instruction
 since the 4 and 7 tick instructions predominate and drag the average down.
 Does this mean that a 4 MHz Z80 was a full half MIPS???   Of course not.

 NOBODY I know is compring "RISC MIPS" to "CISC MIPS".  The
 standard use of the term "MIPS" these days is  1 VAX-11/780 MIPS.

 Obviously you are still at the mercy of the compiler for such comparisons 
 although this is not such a bad thing since you would also be at the
 compiler's mercy in the real world of software development.   In other
 words its perfectly reasonable to say "using the best compiler we could
 find, machine X is 2X as fast as machine Y using the best compiler we could
 find for machine Y.   

                                                       ---Peter




 

kluksdah@hpspcoi.HP.COM (Keith Kluksdahl) (03/22/90)

All this does not mention microcode, which is the real reason that
RISC processors can achieve greater throughput.  Each time one of
the complex instructions is fetched, it requires many microcode
instructions to execute.  Fancy instructions such as multiply
require quite a number of microcode instructions.  And each
microcode instruction requires a clock cycle.  The simplier
instructions require a penalty or several microcode instructions,
and clock cycles, to execute.

Most of the instructions executed in a computer are loads,
stores, and branches, which are relatively simple to perform.
RISC systems perform these instructions in one clock cycle (with
some exceptions, of course), instead of the multiple clock cycles
required by CISC processors.

By adding things like barrel shifters, many other instructions
can also execute in one clock cycle.  The result is a fairly
rich instruction set, which isn't really reduced.

Writing code for RISC machines is much like writing microcode.
And it can be more difficult than writing CISC code.  But the
performance seems to make it worthwhile.  Time will tell.

/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
| These views are my own, but I may   |  Keith Kluksdahl   |
| be re-programmed tomorrow........   |  HP Bedford Falls  |
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/

Tested tough in Alaska.    |<---------- So Long ---------->|

ssingh@watserv1.waterloo.edu ($anjay "lock-on" $ingh - Indy Studies) (03/22/90)

In article <1990Mar20.233504.4946@seri.gov> marshall@wind55.seri.gov (Marshall L. Buhl) writes:
>
>Just a wild guess.  Hardware guys like RISC, software guys like CISC.
>RISC puts the work on the shoulders of the software folks.  It's easier
>to impliment RISC in hardware. 

My question isn't exactly germaine to the newsgroup, but I'll ask in the
hope that because of the high volume here, someone might be able to
answer this for me.

Daniel Hillis, chief designer of the Connection Machine said in
his 1985 thesis on the architecture of this machine that the only
way to achieve continued increases in computer power is to abandon
the current design philosophy in hardware engineering pioneered by
Von Neumann. Since today's computers are essentially implementations
of a Turing machine they are extremely flexible when it comes to
applications programming. That is, given liberal time and memory 
constraints, ANYTHING can be simulated (the Church-Turing thesis).

Now what happens is that everything is encoded in memory and
must then travel to the processor through a bus (with a limited
bandwidth) for processing, and then it must be re-written. This
limiting bandwidth was not a problem until people like AI researchers
and fluid dynamics people began developing extremely powerful 
algorithms that often are very iterative. Also, microprocessor
development has been accelerating, while memory is not able 
to keep up anymore.

Anyone who has a computer with "memory wait-states" will attest
to this. So the solution Hillis argues, is to break up this
Von Neumann bottleneck over thousands (65536 of them) of processors
and do computations in parallel. Each processor can communicate
with any other by message passing, and each has it's own
local memory.

Such computers lend themselves well to applications which can
breakdown naturally into chunks which can be executed in parallel.
Thinking appears to be one of these, hence the current interest
in neural-net models.

Having said all this, my question: What type of processor lends
itself better to highly parallel architectures, RISC or CISC?


-- 
"No one had the guts... until now..."  
|-$anjay "lock [+] on" $ingh	ssingh@watserv1.waterloo.edu	N.A.R.C. ]I[-|
"No his mind is not for rent, to any God or government."-Rush, Moving Pictures
!being!mind!self!cogsci!AI!think!nerve!parallel!cybernetix!chaos!fractal!info!

rick@NRC.COM (Rick Wagner) (03/22/90)

Will@cup.portal.com (Will E Estes) writes:

>Finally, why is everyone so excited about RISC?  Why the move to
>simplicity in microprocessor instruction sets?  You would think
>that the trend would be just the opposite - toward more and more
>complex instruction sets - in order to increase the execution
>speed of very high-level instructions by putting them in silicon
>and in order to make implementation of high-level language
>constructs easier.

Ask Seymore Cray ;-).  Back when IBM was impressing themselves with
the CISC architecture of the 3[67]0 series of main-frame computer,
Seymore Cray was designing the CDC 6000 series machine (circa 1966 I
think, thus the top of the line 6000 was the 6600.  Maybe they came
out with one each year: 6200, 6300,.., 6600?).  The 6000 series was
basically CISC, which because of its simplicity in design, allowed the
instructions to be hard-wired, instead of micro-coded like many of the
CISC machines.  So while you had to use more elementary instructions,
the CDCs could really plow through them, making the program level
throughput relatively high.

And after all, most of you program boils down to a few basic
instructions: add(/subtract, basically the same thing), compare
(essentially a subtract), move and branch, and a bunch of multiplies
for indexing, or if you have a math intensive program.  So if your
machine is optimized to run 90% of your instructions, your program is
going to be fast.

The RISC architecture also made it much easier to design "segmented"
(not the Intel address space definition) cpus.  The cpu was actually a
bunch of dedicated processing units, each of which executed only
specific groups of instructions.  Thus you had multiple, parallel
instructions being executed.  By coding your instructions sequences
properly, the machine could run at one instruction per (very fast)
clock, even if you used slower (multiply - 7 clocks) instructions in
your loop.

Thus it was that the Cyber series (6000, 7000, 170 series) were the
"power" machines of the '60s, '70s, and first couple years of the
'80s.  That dominance was toppled by Cray when he introduced the
CRAY-1.

The same philosophy is now being realized in the micro-computer
industry.  With memory becoming "cheap", more space can be burnt on
program size, and the CPU design can concentrate on optimizing the
basic instructions, and parallelism.

	--rick

-- 
===============================================================================
Rick Wagner						Network Research Corp.
rick@nrc.com						2380 North Rose Ave.
(805) 485-2700	FAX: (805) 485-8204			Oxnard, CA 93030
Don't hate yourself in the morning; sleep 'til noon.

lbr@holos0.uucp (Len Reed) (03/22/90)

In article <1990Mar20.233504.4946@seri.gov> marshall@wind55.seri.gov (Marshall L. Buhl) writes:

>Just a wild guess.  Hardware guys like RISC, software guys like CISC.
>RISC puts the work on the shoulders of the software folks.  It's easier
>to impliment RISC in hardware.  If I were developing software in
>assembler, I'd probably hate RISC.

>Marshall L. Buhl, Jr.                EMAIL: marshall@wind55.seri.gov
>Senior Computer Engineer             VOICE: (303)231-1014

This shows some odd reasoning for someone with the title of "Senior
Computer Engineer."  In my experience hardware people *love* to do
complicated things in hardware, and software people love to do
complicated stuff in software.  This makes the job interesting
and keeps management from being able to hire people who are not as good.
Sure, there are a lot of people who want their jobs to be easy rather
than interesting, but they aren't the folks doing state of the art
microprocessor and compiler design.  (This is not to say that people
like fighting stupid challenges, like working with poor tooling.)

RISC does *not* put the burden on the software folks, but rather upon
a small subset of them: compiler writers.  Or really, compiler writers
involved in optimization and code generation.  As to developing software
in assembler for a RISC machine: you don't do it, or you do only a tiny
amount of it.  Most software people, even in operating systems, will
use something above the assembler level.  You speak as if "writing in
assembler" is a choice made independent of architecture, as if some problems
are naturals for assembler and some are not.  Nonsense.  The idea is
to do almost everything in a language *above* the base architecture
level in a RISC machine; things that are coded in assembler on a CISC
would not necessarily be so coded on a RISC.

The alleged benefit of RISC has *nothing* to do with ease of implementation,
except as that affects speed.  It's supposed to be faster.  (Whether it
will be in the long run is yet to be seen.)  I find it amazing that you
could envision a bunch of microprocessor designers saying "To hell with
this, let's just dump it all on the software guys."
-- 
Len Reed
Holos Software, Inc.
Voice: (404) 496-1358
UUCP: ...!gatech!holos0!lbr

rcd@ico.isc.com (Dick Dunn) (03/22/90)

jdudeck@polyslo.CalPoly.EDU (John R. Dudeck) writes:
> A few weeks ago I made the remark on the net that it seems meaningless to
> compare RISC MIPS with CISC MIPS.  I was soundly rebutted by any number
> of netters telling me that all the manufacturers use VAX MIPS
> when rating their cpu's.  In other words, benchmarks are run for various
> types of cpu-intensive applications, and the results are compared to the
> same benchmarks on a VAX 11/780, which is the platinum standard by which
> all cpu's are measured.

Would that it were so simple!  Manufacturers will run various benchmarks
and may quote one real number, one invented ("theoretical") number, the
best number they can get, lots of numbers, etc., with or without any
explanation or rationale.

Example - You may have seen the new IBM RISC boxes advertised as "27.5
MIPS".  That's based on ONE benchmark that's out of date and known to be
inadequate for any machine with a decent compiler.  The number is, in fact,
a comparison with a VAX number for the same benchmark.  However, if you
look at other numbers IBM has published for the RS/6000, you'll find that
it could be characterized as 15.8 MIPS (integer SPEC) or 22.3 MIPS (integer
plus FP SPEC).  The 15.8, 22.3, and 27.5 numbers are all relative to a VAX
11/780.  The differences are in what is measured and whether the
measurement is realistic.  But if you're comfortable with the idea that
15.8 is almost the same as 27.5, then MIPS figures make sense...
-- 
Dick Dunn     rcd@ico.isc.com    uucp: {ncar,nbires}!ico!rcd     (303)449-2870
   ...Relax...don't worry...have a homebrew.

cs4g6ag@maccs.dcss.mcmaster.ca (Stephen M. Dunn) (03/22/90)

In article <28011@cup.portal.com> Will@cup.portal.com (Will E Estes) writes:
$Also, since the 80386 has a more complex instruction set and does
$more work in a given instruction than does a typical RISC chip,
$does comparing MIPS figures between RISC and non-RISC
$architectures really tell you anything of worth?

   Well, if you're counting in native MIPS, no.  If you're using VAX
MIPS (which really aren't MIPS on anything other than a VAX), then yes.

$Finally, why is everyone so excited about RISC?  Why the move to
$simplicity in microprocessor instruction sets?  You would think
$that the trend would be just the opposite - toward more and more
$complex instruction sets - in order to increase the execution
$speed of very high-level instructions by putting them in silicon
$and in order to make implementation of high-level language
$constructs easier.

   The reason is that RISC architectures run faster.  Typically, it
has been found that a given program implemented for a RISC processor
takes around 30% more instructions, but the average instruction operates
3-5 times faster.  Overall, then, you get at least a 2x increase in
speed for a given clock rate.  This is why RISC excites so many people.

   As for complex instructions ... RISC architectures typically have
very efficient subroutine-calling methods specifically for such
purposes.  For example, a CISC chip would have a multiply instruction,
whereas a RISC chip would have a multiply step instruction that implements
one step in the multiplication.  Each compiler would have in its library
a subroutine that uses this multiply step instruction as the heart of
a multiplication routine, and this subroutine is linked in using the
efficient subroutine calling mechanism.

   The same idea is applied to other complex instructions - you use
a subroutine from your compiler's library (which the compiler would
put in automatically for you, just as a C compiler for a system with
no floating point coprocessor automatically puts in a call to its
own floating-point emulator) instead of a highly-complex instruction.

   This leads to another advantage - a given-size CISC chip has a very
large (often over 50%) portion devoted to decoding instructions.  On
a RISC chip, the decoding logic is far smaller, leaving room for a
barrel shifter, an on-chip cache, an on-chip MMU, or whatever - stuff
that boosts performance.

   So, all in all, the complexity of high-level language constructs
is partially built into the architecture of a CISC chip, whereas it's
left up to the compiler in a RISC architecture.  (Also, compilers
for RISC systems generally have more optimization in them for such
things as register usage - RISC chips usually have large numbers of
registers - and to maximize the advantages of pipelined execution).
This article, of course, is just a very, very brief overview; there
are a lot of questions and answers about RISC that there just isn't
room to discuss here (I did a seminar on RISC in a course last term,
and had a _lot_ of trouble keeping the amount of material down to the
20 minute limit; I could go on for hours about RISC).

   If you want a lively discussion of RISC architectures, try reading
comp.arch - this sort of topic pops up pretty frequently over there,
so you won't have to read for long.  Also, try looking through your
local/campus library for computer architecture books and magazines.
You'll find answers to all of your RISC questions are available there.
-- 
Stephen M. Dunn                               cs4g6ag@maccs.dcss.mcmaster.ca
          <std_disclaimer.h> = "\nI'm only an undergraduate!!!\n";
****************************************************************************
    "So sorry, I never meant to break your heart ... but you broke mine."

kdq@demott.COM (Kevin D. Quitt) (03/23/90)

In article <628@s3.ireq.hydro.qc.ca> robert@ireq.hydro.qc.ca (R.Meunier 8516) writes:
>
>	Once a compiler is completed for a RISC Architecture, it should
>be easely ported to another one because the RISC instruction between
>two RISC microprossesor should be the almost the same.


    In your dreams, maybe.  What ever gave you this idea? Have you
looked at the different architecture styles? Use of register frames for
parameter passing, number of registers, etc.  RISC architectures are no
more alike than CISC or buildings. 

kdq
-- 

Kevin D. Quitt                          Manager, Software Development
DeMott Electronics Co.                  VOICE (818) 988-4975
14707 Keswick St.                       FAX   (818) 997-1190
Van Nuys, CA  91405-1266                MODEM (818) 997-4496 Telebit PEP last
34 12 N  118 27 W                       srhqla!demott!kdq   kdq@demott.com

 "Next time, Jack, write a God-damned memo!" - Jack Ryan - Hunt for Red October

kdq@demott.COM (Kevin D. Quitt) (03/23/90)

    Meaningless
    Information
    Provided by
    Salesmen

    Motorola published an excellent article on the perils of MIPS, by
comparing code fragments between the 68010 and 68020.  Given that these
are closer in architecture than most other comparisons, this case outght
to be straightforward. 

    The article demonstrated code that ran on the 68010, and compared it
with functionally identical code on the 68020.  The 68020 code was about
half the size, and took 1/3 the time to run, but the MIPS rating for the
'10 was about double that for the '20!

    Even 'normalized' MIPS are pretty meaningless, as several other
articles have mentioned.  (And no, not everybody normalizes to VAX MIPS,
otherwise, how could a RISC machine have a MIPS rating equivalent to its
clock?)

kdq
-- 

Kevin D. Quitt                          Manager, Software Development
DeMott Electronics Co.                  VOICE (818) 988-4975
14707 Keswick St.                       FAX   (818) 997-1190
Van Nuys, CA  91405-1266                MODEM (818) 997-4496 Telebit PEP last
34 12 N  118 27 W                       srhqla!demott!kdq   kdq@demott.com

 "Next time, Jack, write a God-damned memo!" - Jack Ryan - Hunt for Red October

dhinds@portia.Stanford.EDU (David Hinds) (03/23/90)

In article <26083220.22927@maccs.dcss.mcmaster.ca>, cs4g6ag@maccs.dcss.mcmaster.ca (Stephen M. Dunn) writes:
> 
>    This leads to another advantage - a given-size CISC chip has a very
> large (often over 50%) portion devoted to decoding instructions.  On
> a RISC chip, the decoding logic is far smaller, leaving room for a
> barrel shifter, an on-chip cache, an on-chip MMU, or whatever - stuff
> that boosts performance.
> 
>    So, all in all, the complexity of high-level language constructs
> is partially built into the architecture of a CISC chip, whereas it's
> left up to the compiler in a RISC architecture.  (Also, compilers
> for RISC systems generally have more optimization in them for such
> things as register usage - RISC chips usually have large numbers of
> registers - and to maximize the advantages of pipelined execution).

    It looks to me like the success of RISC technology is partially the
result of a temporary imbalance in circuit design technology vs. the
limits of circuit density.  People talk about the 80486 as implementing
some RISC features.  Why?  Because it is fast?  It seems to me that the
80486 is instead the antithesis - and nemesis - of RISC technology.  If
we now have the ability to design a CISC processor so efficiently that
most of its instructions take only a cycle or two, why move to a less
complex architecture?  The 80486 had sufficient circuit space left over
for a respectable amount of support stuff, as well.  You could say, well,
a smaller instruction set would have allowed a larger cache or more
registers.  But both of these follow the law of diminishing returns -
beyond some threshold, you have to increase the number of registers or
the amount of cache a LOT to get even a small improvement in performance.
And the thresholds aren't very high.  I seem to remember that analysis
of register usage has shown that 4 (I think) registers were enough to
efficiently code all common high-level language constructs.  If you have
enough registers to allocate them for variables, that is a different
matter - but with high-speed caches and pipelining, a register loses
most of its edge over main memory.

 -David Hinds
  dhinds@popserver.stanford.edu

bcw@rti.rti.org (Bruce Wright) (03/23/90)

In article <2607b76e.5ca0@polyslo.CalPoly.EDU>, jdudeck@polyslo.CalPoly.EDU (John R. Dudeck) writes:
> 
> A few weeks ago I made the remark on the net that it seems meaningless to
> compare RISC MIPS with CISC MIPS.  I was soundly rebutted by any number
> of netters telling me that all the manufacturers use VAX MIPS
> when rating their cpu's.  In other words, benchmarks are run for various
> types of cpu-intensive applications, and the results are compared to the
> same benchmarks on a VAX 11/780, which is the platinum standard by which
> all cpu's are measured.

Unfortunately, although this might be useful in some situations, it is
too often abused:  the manufacturer tries a number of benchmarks, and
advertizes the one that shows his machine off the best, as if it were
the typical case rather than the best case.  Unfortunately, not all
machines perform their operations with equal efficiency - even VAXes
don't all execute all their instructions in times that are simple
multiples of each other.  And we are probably all aware of how far off
things like the Norton SI index are for PC's.  This is even worse when
you are talking about machines with such drastically different machine
architectures as a VAX and a RISC machine - sometimes you can find
situations where a single VAX instruction -> a single RISC instruction,
and other times a VAX instruction -> several dozen (or hundred) RISC
instructions.  Comparison for all possible applications is extremely
difficult, which enhances the probability that at least one benchmark
will show off one machine particularly well against another.

And, of course, sometimes machines and compilers are designed with a
particular benchmark _in mind_, resulting in even more anomolous
results.

In fairness this isn't new with the RISC-CISC debate - it's a tradition
that's been going on for decades.

						Bruce C. Wright

cs4g6ag@maccs.dcss.mcmaster.ca (Stephen M. Dunn) (03/23/90)

In article <628@s3.ireq.hydro.qc.ca> robert@ireq.hydro.qc.ca (R.Meunier 8516) writes:
$	Once a compiler is completed for a RISC Architecture, it should
$be easely ported to another one because the RISC instruction between
$two RISC microprossesor should be the almost the same.

   Not really.  Different RISC designs use different register schemes,
have different pipelines, etc.  An extreme example would be porting from
some RISC design to a MIPS processor, where the compiler has to ensure that
the instructions it generates will not clash as they go through the
CPU's pipeline (this is implemented in hardware on most other designs).
Also, the optimizer requires a lot of changes since different optimization
strategies provide different performance on different RISC architectures.
-- 
Stephen M. Dunn                               cs4g6ag@maccs.dcss.mcmaster.ca
          <std_disclaimer.h> = "\nI'm only an undergraduate!!!\n";
****************************************************************************
    "So sorry, I never meant to break your heart ... but you broke mine."

ralf@b.gp.cs.cmu.edu (Ralf Brown) (03/23/90)

In article <10453@portia.Stanford.EDU> dhinds@portia.Stanford.EDU (David Hinds) writes:
}some RISC features.  Why?  Because it is fast?  It seems to me that the
}80486 is instead the antithesis - and nemesis - of RISC technology.  If
}we now have the ability to design a CISC processor so efficiently that
}most of its instructions take only a cycle or two, why move to a less
}complex architecture?  The 80486 had sufficient circuit space left over
}for a respectable amount of support stuff, as well.  You could say, well,

Yeah, but how many RISC CPUs have 1.2 million transistors?  That's something
like EIGHT to TEN times as many gates as the typical RISC CPU....

-- 
{backbone}!cs.cmu.edu!ralf   ARPA: RALF@CS.CMU.EDU   FIDO: Ralf Brown 1:129/46
BITnet: RALF%CS.CMU.EDU@CMUCCVMA   AT&Tnet: (412)268-3053 (school)   FAX: ask
DISCLAIMER? | _How_to_Prove_It_ by Dana Angluin  3. by vigorous handwaving:
What's that?|   	Works well in a classroom or seminar setting.

ajai@sce.carleton.ca (Ajai Sehgal) (03/26/90)

In article <1990Mar21.210152.3294@holos0.uucp>, lbr@holos0.uucp (Len Reed) writes:
> In article <1990Mar20.233504.4946@seri.gov> marshall@wind55.seri.gov (Marshall L. Buhl) writes:
> 
> >Just a wild guess.  Hardware guys like RISC, software guys like CISC.
> >RISC puts the work on the shoulders of the software folks.  It's easier
> >to impliment RISC in hardware.  If I were developing software in
> >assembler, I'd probably hate RISC.
> 
> This shows some odd reasoning for someone with the title of "Senior
> Computer Engineer."  In my experience hardware people *love* to do

	On the contrary, this is very good reasoning for a Senior Computer
ENGINEER (not computer scientist). RISC certainly does put the burden on 
the shoulders of the software folks. Although it probably wasn't a contrived
"plot" , it remains a fact.


 
> RISC does *not* put the burden on the software folks, but rather upon
> a small subset of them: compiler writers.  Or really, compiler writers
> involved in optimization and code generation.  As to developing software
> in assembler for a RISC machine: you don't do it, or you do only a tiny
> amount of it.  Most software people, even in operating systems, will
> use something above the assembler level.  You speak as if "writing in
> assembler" is a choice made independent of architecture, as if some problems
> are naturals for assembler and some are not.  Nonsense.  The idea is
> to do almost everything in a language *above* the base architecture
> level in a RISC machine; things that are coded in assembler on a CISC
> would not necessarily be so coded on a RISC.
> 
> The alleged benefit of RISC has *nothing* to do with ease of implementation,

  	Your view on who is programming what using what type of language
and at what level is narrowed by a lack of experience outside of your own
domain (sorry for the flame but ....). The people who would most be attracted
to the performance gains available in RISC architectures certainly are
concerned with programming in assembly language. For example, any real time
application where timing is critical (such as Digital Signal Processing),
requires code optimisation that cannot be achieved with even the most optimal
of optimizing compilers (good luck to whoever wants to write an optimising
compiler for a RISC chip such as the i860!). Even on CISCs an FFT (fast fourier
transform - basic building block for DSP) algorithm, implemented in C or
FORTRAN and compiled with the best compilers can only come within 35% of a
hand coded (assembly) version of the same algorithm - in terms of speed of
execution [see article by L.R. Morris in IEEE Micro Sep 87].  Now try to
program a RISC chip by hand (assembly). The intel i860 for example with its
"exposed" pipeline has a ridiculous learning curve.  If we can't program these
chips in assembly and writing optimising compilers are difficult (either
impossible or too expensive - I don't believe anything is impossible [except
dribbling a football!]) we won't use them --- unless the performance
improvements are such that using "dirty" compilers still give better
performance than CISCs. With the introduction of the 80486
and the 68040 with most of the most often used instructions approaching single
cycle execution as in RISCs, it is unlikely that the RISCs will grab an
appreciable slice of the market. RISC is a passing fad that as technology
advances, will be left in the dust.

TO PREEMPT ANY FLAMERS OUT THERE - I apologize for posting this to this
Newsgroup and in future will refrain from doing so.


Ajai (ajai@sce.carleton.ca)
 

kmont@hpindda.HP.COM (Kevin Montgomery) (03/27/90)

> Having said all this, my question: What type of processor lends
> itself better to highly parallel architectures, RISC or CISC?

This is what I was trying to get at earlier in the discussion (or
later, depending on the bit-wind near your site).  I agree with the 
connection approach in that 1) parallelism is necessary to dramatically 
increase performance and 2) the memory bottleneck still exists (unless
someone makes a good, fast, CHEAP dual-ported memory).  

I think the problem will be more evident with parallelized RISC machines 
than CISC machines, although the probability of CISC compiler-writers 
actually using this architectural advantage is probably low.  More likely
what will happen are RISC machines plowing ahead into parallelism and
people using huge amounts of cache to get around this problem.  Then
either an advance I can't see will happen in memory technology (which 
would be great!), or we're going to have to do more per main-memory
instruction to decrease this problem.  The return of main-memory macrocode 
and internal caching/microcode?  Maybe.  Would be a bizarre twist.  Maybe
someone will step back from our RISC code and say "Gee, these same patterns
keep showing up- why don't we eliminate it and use a macrocode opcode for
these?"  Dunno.  Then I suppose we'd end up applying what we've been pushed
to do to support RISC implementations (GaAs, CMOS, etc) to RISC+ (slightly
CISC-er RISC) implementations.

Oh well, this probably belongs in comp.arch at this point...


						kevbop

dan@tinton.UUCP (03/28/90)

In article <1990Mar20.233504.4946@seri.gov> marshall@wind55.UUCP writes:
>Will@cup.portal.com (Will E Estes) writes:
>
>>Finally, why is everyone so excited about RISC?  
>
>Just a wild guess.  Hardware guys like RISC, software guys like CISC.

Actually, the *software* world seems to contain the large
portion of RISC proponents.

>RISC puts the work on the shoulders of the software folks.  It is
>easier to impliment RISC in hardware.

WRONG.  It simply changes the 'type' of work to be done.  Given a certain
board area for a processor board in a system, the board will be filled
with chips, regardless of whether the CPU chipset is RISC or CISC.
The hardware complexity of the BOARD is the same, with the following
exception: RISC parts tend to run at higher clock freqs than their
CISC counterparts, thus making it HARDER to design a RISC-based
board.

As for the hardware complexity of the chipset, it's probably a toss.
The RISC chips are a design challenge in that they run at very high
clock rates.  Also, typically these parts have a hardwired instruction set,
while I believe that CISC parts are usually microcoded (of course, I
could be wrong...).  

>If I were developing software in assembler, I'd probably hate RISC.  

The software people actually have an easier time of it with RISC.
  a) you have less instructions to remember, and thus spend less
     time thumbing through the manual to try to find out whether 
     the STRING_MOVE_CONVERT_ASCII_TO_INT_VECTOR_MULTIPLY instruction
     sets the carry flag.
  b) there are no superfast and glizzy instructions; thus, there is
     no temptation to badly structure a software system to try to
     make use of said instruction.  this is important if you want to
     port the software system to another platform.
  c) if there are CISC-type functions that you commonly want to use,
     you can code them once and keep them around as a source library,
     similar to a library of commonly-used C routines that you may
     keep around.  If you go to another platform, this library is
     probably straightforward (although time-consuming) to translate,
     since it is made up of rudimentary instructions that most likely
     have a one-to-one equivalent in the new instruction set.

Admitedly, RISC takes a lot of the 'art and glamour' out of assembly
programming.  However, it is this artful use of complicated
assembly instructions that causes software systems to be complicated,
unreliably, unmaintainable, and nonportable.  The simplification of
the instruction set frees you up to apply your art at a higher level.

>It is probably harder to write a compiler for RISC.  

HUH?  Assuming you don't care about the performance of the generated code,
it is a wash.  If you do care, then RISC is the clear winner.  The
code generation section of the compiler (the only part of the compiler
that will be drastically different between the two versions) is much
less complex.  This is basically because it has less to choose from.
TRUE RISC, by my way of thinking, says that all instructions take
equal time, and this time is not data-dependant.  It is clearly easier
to write a code generator/optimizer based on this assumption.  Some
commercial RISC parts do not have equal time per instruction, but it
is close (much more so than typical CISC), and it is
data-independant, which one can imagine is an important assumption
for simlifying code generators.

>If you use high-level languages, you may not care.
>Users probably don't care unless one costs more for the same application
>performance (which is all that really counts).

Yes, you WILL care, even if you use high-level languages.  The
downside of RISC is that it is memory-hungry (for every complex
machine instruction that you may have used in a CISC system, you may
need 10 or 20 RISC instructions).  The code that a compiler generates
will take more memory space in a RISC system.  Some estimate up to
twice the space.  This translates into more main memory for your
system, as well as more disk storage space.  Also, memory will be more
expensive, since the typical RISC part will run faster and thus need 
higher memory speeds (or cache) to satisfy its faster instruction
fetch rate.

>Marshall L. Buhl, Jr.                EMAIL: marshall@wind55.seri.gov

----------------------------------------------------------------
Dan Masi             (dan@tinton.tinton.ccur.com)  201-758-7699
Concurrent Computer Corp.
106 Apple Street
Tinton Falls, NJ  07724

dan@tinton.UUCP (03/28/90)

In article <8564@pt.cs.cmu.edu> ralf@b.gp.cs.cmu.edu.UUCP writes:
>In article <10453@portia.Stanford.EDU> dhinds@portia.Stanford.EDU (David Hinds) writes:
>}some RISC features.  Why?  Because it is fast?  It seems to me that the
>}80486 is instead the antithesis - and nemesis - of RISC technology.  If
>}we now have the ability to design a CISC processor so efficiently that
>}most of its instructions take only a cycle or two, why move to a less
>}complex architecture?  The 80486 had sufficient circuit space left over
>}for a respectable amount of support stuff, as well.  You could say, well,
>
>Yeah, but how many RISC CPUs have 1.2 million transistors?  That's something
>like EIGHT to TEN times as many gates as the typical RISC CPU....

Nope.  The 'typical' RISC CPU will have as many transistors as the 
typical CISC CPU.  The commercial RISC CPU I am currently designing with 
has 1.0 million.  They are just USED DIFFERENTLY (put to better use,
IMHO).  In a typical RISC part, you need less transistors for the CPU 
portion, thus you can include more support-type functionality (cache 
control, cache RAM, floating point, etc) on-chip.

----------------------------------------------------------------
Dan Masi             (dan@tinton.tinton.ccur.com)  201-758-7699
Concurrent Computer Corp.
106 Apple Street
Tinton Falls, NJ  07724