views:

344

answers:

5

I've been programming for x86 & x86-64 in assembly language for few months. Now, I want to move on to some different kind of processors.

MIPS, SPARC, PowerPC, Itanium, ARM of these I found ARM is being widely use. But the books I see that tutorials & books teach about MIPS more than all these other architectures.

Why is MIPS so popular? Are MIPS processors still in use? Which architecture should I go for?

My background:

I'm a student in Electronics dept. I'm also a high level programmer.

+1  A: 

This is just speculation. Information is taken from Wikipedia article on MIPS.

  • MIPS originated in an academic environment (Stanford), not a commercial one. The people in such an environment are much more likely to write textbooks than people who work at a company.
  • In the 1990s, MIPS became licensable. Combined with the decent/good performance per dollar at the time, this lead to relatively wide adoption in the embedded market (ARM has the same story).

I managed to find a graph of the embedded processor market share, although it's only RISC processors during the 1990s. Note the big chunk that is MIPS. I suspect ARM has blown MIPS out of the water in terms of market share by now, but I don't have the numbers.

Dietrich Epp
Note: Your link is broken. Try `%20`'s instead of ` `'s.
Cam
I was fixing it. The auto-Javascript stuff is broken.
Dietrich Epp
+1  A: 

The Playstation 2 had a MIPS CPU. The PS3 uses the Cell, which looks like a POWER variant, and the XBox 360 uses a PowerPC, too.

ARM seems to be getting especially popular in mobile devices, and PowerPC is still huge in embedded systems, especially automotive. You can even find the occasional M68k if you look in the right device.

MIPS is probably popular because it's a real architecture, but still relatively simple. It's arguably (one of?) the first modern RISC architecture(s). (Even I could figure it out!)

It really depends on what you want to learn, and why. Just for fun? To build an embedded device? To write a compiler? To write your own assembly code? To stretch your mind?

Ken
+1  A: 

The reason that MIPS is taught in schools is because it is a 'classic' RISC architecture and is DLX-like, which is the kind of architecture used in the bible by Hennessy & Patterson (the god-fathers of modern RISC). It is very simple to understand in its simplicity and once you get it, moving onto other architectures is simple enough.

If you are asking for specific architectures to learn, I would say that unless you were interested in becoming a hardware guy, it may not help much aside from the knowledge factor. Most compilers abstract a lot of the hardware issues away unless you need to write very low-level code. So, a PPC/SPARC/ARM/MIPS/whatever will not really make much difference to 90% of the programmers out there.

sybreon
I disagree a little (not enough for a -1). It is, in my opinion, **always** useful for developers to have a feel for what's going on under the hood while they're working on detailing their metaphorical automobiles. **Any** programmer I meet who can't turn on the assembly language output of their compiler (or equivalent in the case of things like the JVM or Erlang's VM or the like) and semi-competently read what's going on is not a developer I want to work with or have working under me. (Or above me, for that matter.)
JUST MY correct OPINION
We're talking about similar but not the same thing - knowing the assembly language is not equal to knowing the hardware architecture (pipelines, cache architectures, special function units...) However, I agree with you that a good developer needs to have working knowledge of what is under the hood, I just don't think that they need to know every nut and bolt in the engine.
sybreon
+2  A: 

Cavium Networks and Raza Microelectronics are two large MIPS chipmakers. See MIPS Technologies' website for more info.

One thing that MIPS does and ARM doesn't is 64-bit.

MIPS is the cleanest successful RISC. PowerPC and ARM have so many extra instructions (even a few operating modes, ARM especially) that you could almost call them CISC. SPARC has a few odd features and Itanium is composed entirely of odd features. The latter two are more dead than MIPS.

So if you learn MIPS, you will be able to transfer 100% of that knowledge to other RISCs, but you still have to learn about lots of odd instructions on PPC, a whole ton-o-junk on ARM, and register windows on SPARC. Itanium isn't RISC so it's hard to say anything besides don't learn Itanium.

Potatoswatter
The other RISCs don't have delay slots, though.
Potatoswatter
+1  A: 

If you're experienced in the x86(-64) world, then yes the move to a RISC processor is a good sideways move to keep your mind opening. Your questions are good ones.

Answering your second question: yes, MIPS processors are still in use. They're frequently the processors used in things like routers and other small computing appliances like that. They're also increasingly appearing in small home computing devices in Asian marketplaces (Lemote, for example). What they bring to the table over ARM is a competitive price/performance ratio and 64-bit capabilities. What ARM brings over MIPS is a much better power/performance ratio, if memory serves, and a more flexible set of options in constructing cores. SPARC is very pricey, but, to be fair, very fast. I don't know enough about the other architectures mentioned to make any useful comment. (Well, except Itanium which is basically stillborn tech that's not RISC nor CISC.)

Answering now your first question: the reason that MIPS features so prominently in books is that it is almost a perfect exemplar of a RISC system. It is a small, relatively pure RISC implementation that is easily understood and that illustrates RISC concepts well. For pedagogical purposes it is probably the best real-world architecture to show the nature of RISC, along with its warts. Other processors thought of as RISC (ARM, SPARC, Alpha, etc.) are more pragmatic and complicated, obfuscating RISC concepts with some more CISC-like enhancements for better performance or other benefits.

Finally, to answer your final question: I would recommend learning MIPS for the same reason that I recommend people learning OOP pick up Eiffel, people learning functional pick up Haskell and so on. MIPS is the purest implementation of RISC concepts that's in actual real-world use and you will be forced to contend with the RISC way of thinking and only the RISC way of thinking (for the most part) while you solve your problems with it. This will prepare your mind for the RISC approach and make it easier for you to quickly pick up ARM (my recommended second) or SPARC or any other RISC architecture out there even if you never use MIPS directly. (Although as I pointed out you may actually wind up contending with MIPS anyway.)

JUST MY correct OPINION