4
$\begingroup$

We just started on the Computer Architecture topic in our CS lectures and I have a few questions that are currently bothering me. So we have different computers, and there are always differences in the hardware and architecture.

Now, why don't all computers simply use the same architecture? Won't that make it easier to program? What makes this a bad idea?

$\endgroup$
  • $\begingroup$ Sorry for analogy, but why there are so many different cars? Manufacturer, needs, costs, different ideas over different countries. And if you spent a lot of money on research and manufacturing would you get rid of it in the name of interoperability with your competitors? And yes, it would be easier to program. $\endgroup$ – Evil Sep 7 '15 at 19:41
  • $\begingroup$ @nTuply, yes, it's allowed to post multiple questions, if each one meets our quality standards. However make sure that you do research/self-study on each before posting, and show us in the question what research you've done (per cs.stackexchange.com/help/how-to-ask). No need to delete this question: it's been edited to a narrower, more suitable question, so with the edits I think it can remain. Thank you for asking! $\endgroup$ – D.W. Sep 7 '15 at 20:29
  • $\begingroup$ Why has this not been answered along with your earlier question? $\endgroup$ – Raphael Sep 7 '15 at 22:57
  • $\begingroup$ @Raphael That was a later question! In fact, it was originally part of this question but I asked nTuply to split it because I felt it was too broad. $\endgroup$ – David Richerby Sep 8 '15 at 14:25
  • $\begingroup$ @Raphael As David says, I had both of the questions in that same one before and I was suggested to split it to make the answers more specific. $\endgroup$ – nTuply Sep 8 '15 at 14:29
4
$\begingroup$

Why aren't all cars identical? Wouldn't that make easier to build and repair them?

There are big and small cars, cheap and expensive cars, fast gas guzzlers and slow energy savers… And similarly there are many different types of computers.

Here are a few criteria that influence the architecture of a computer. Optimizing for some of the criteria will have a cost against some other criteria.

  • Speed to execute sequences of integer operations
  • Speed to execute sequences of floating-point operations
  • Speed to execute sequential computations that require a lot of memory
  • Speed to make parallelizable integer computations
  • Speed to make parallelizable floating-point computations
  • Speed to make parallelizable memory-intensive computations
  • Power consumption when idle
  • Peak power consumption
  • Ability to scale power consumption according to the amount of computation at a given time
  • Special-purpose computations (graphics processing, cryptography, digital signal processing, …)
  • Volume
  • Design cost
  • Per-unit manufacturing cost for large amounts
  • Per-unit manufacturing cost for small amounts
  • Possibility to connect many peripherals
  • Ability to execute tasks in real time, i.e. fine control over the execution time of each operation (e.g. to control a physical object)
  • Isolation between tasks (for robustness and security)

This is of course not an exhaustive list. In practice, you'll find architectures that find a few sweet spots, optimizing for some criteria at the expense of others.

Here are a few examples of different compromises.

  • Intel x86 processors tend to be very good at raw speed for sequential execution of pure computation and memory accesses. ARM tend to be less fast, but consume less power, which is a large part of why x86 is so common on computers that are plugged into the mains while ARM is prevalent on computers that almost always run on battery such as mobile phones.
  • GPU are very good at executing many tasks in parallel, which is well-suited to drawing images that consist of millions of pixels. But they're bad at accessing lots of memory in random ways, so they don't make good general-purpose processors.
  • An MMU translates memory addresses used by programs into memory addresses used by the hardware. This allows the operating system to execute programs each in their own address space, so that they don't interfere with each other. This means that each memory access can take a variable amount of time, though, which is why most processors designed for real-time systems don't have an MMU.
  • FPGA are extremely flexible processors — you can reconfigure them to optimize them for whatever computation you want to do today. But they aren't cheap.

Add to that historical factors. Designing a new processor architecture takes years of effort by teams of hundreds or thousands of highly-trained engineers, and changing architectures involves rewriting a lot of software, so it doesn't happen often. So just like you can have different car models from different manufacturers that have the same strengths and weaknesses, you can have different processor architectures from different manufacturers that vie for the same applications.

$\endgroup$
  • $\begingroup$ I wish, user had asked about Von neumann architecture Vs Harvard architecture. One interview question is, Why Von Neumann architecture is still working in the market? $\endgroup$ – overexchange Jan 1 '17 at 0:50
2
$\begingroup$

My first thought is that x86 is crappy, and that we only use it on computers for backward compatibility. But this is merely opinion-based. So, let just remember that most computers use x86 architecture, and that it would be expensive to switch to another architecture.

So, why don't Qualcomm use x86 on phones ? One part of the answer is that x86 is Intel property, and there is, to the best of my knowledge, only one firm that own a license for x86: AMD, who got it as IBM requested a second source for its CPU, as far as I remember.

And there is an other reason to maintain several architectures: to have architectures that fit the need. A modern x86 architecture requires much silicon, and much power. If you look at ARM architecture, you've got the high end ARMv8a, with much power and high power consumption (several watts), and, at the same time, ARM still develops ARMv6-M, with much less silicon (0.0066 mm2 instead of 9 mm2), reduced power consumption (200µW), but reduced performances (divided by 10000, roughly).

To sum up, we keep several architectures for backward compatibility, intellectual property, and purpose fit. You should probably study several architectures to get a better overview of this field of study.

$\endgroup$
  • 1
    $\begingroup$ Given its fundamental design parameters, the 8086 architecture is mostly pretty good. There are a few omissions in the instruction set (e.g. instructions like PUSH or MOV-to-sreg which should allow immediate mode but don't), the processor really needed a one or two more "extra" segments, most languages never figured out how to make good use of segments, and the 80286 segment design failed to capitalize on what was good about segments on the 8086, but I've yet to see any 16-bit architecture that can access beyond 64K as nicely as x86 can. $\endgroup$ – supercat Sep 8 '15 at 20:13
  • 1
    $\begingroup$ Beware: a troll hides in my answer (above). Yes, the 8086 was a pretty good design. I think it explains its success. My point is that 8086 was good, maybe even great, but it is a 16bits architecture. We may achieve a far more efficient design for a 64bit architecture by starting from scratch, and by breaking backward compatibility. Intel and AMD do great work optimizing their CPU, but their work would be easier without backward compatibility. When working on current x86, I've always the feeling that the architecture misfits its current purpose. $\endgroup$ – Jacen Sep 9 '15 at 13:59
  • 1
    $\begingroup$ That's a fair point, but taking that view would improve your answer, since it would emphasize that things which make an architecture "good" when it is developed may become detrimental over the years. The reason x86 legacy support is problematic is not that x86 wasn't well-designed, but it was designed around technological issues that were relevant in 1979, rather than those which are relevant in 2015. Even if one had a time machine and could make the 8086 the most perfect architecture imaginable for 1979, it would still be severely less than optimal in 2015; if one were to... $\endgroup$ – supercat Sep 9 '15 at 15:23
  • $\begingroup$ ...go back in time and adjusted the 1979 8086 to be perfect by today's standards, it would have been a flop in the 1979 marketplace. $\endgroup$ – supercat Sep 9 '15 at 15:25
2
$\begingroup$

There are several driving forces involved here:

a) Human Variation. Nature itself does not put any particular restriction on computer architecture, so people have to bring their own creativity to the task - and of course different people come up with different approaches. This was true when computers were just being invented, and has continued to be true with each new generation (of people and of machines).

b) Economics. A lot of old architectures (esp. IBM 360) persist in institutions - banks, insurance companies, etc - because migrating working software to a common shared architecture -different from theirs- is too costly, both in direct development cost and in risk due to the inevitable debugging shakedown. Here backward compatibility trumps performance almost all of the time.

c) The Bleeding Edge. There are always those who need to perform the largest feasible computations with the maximum speed. Meeting those demands is nearly always best achieved by using the latest techniques in new architectures rather than trying to beef up existing ones (esp. ones as mess y as x86).

d) Legality. If all the world agreed on a single common architecture, then the producers of that hardware would probably be at risk (in America at least) of massive Anti-Trust lawsuits. E.g IBM got hit with one after introducing the 360; Microsoft got hit with one after Windows got popular. Licensing to AMD is probably the only thing preventing one against Intel.

$\endgroup$
1
$\begingroup$

For at least two reasons:

One: Computers today are used for more than one thing, and a computer that is good for one task isn't necessarily the best for another. Like EvilJS said in his comment: Why do we have more than one kind of motor vehicle? Why do we have motorcycles, sedans, minivans, pick-up trucks, etc? Why not just have one type of car that everyone drives? Because that would be wildly impractical. A small two-seat coup is great for a single person commuting to work. Not so practical for a family of eight. Etc. The ideal CPU for a cell phone and the ideal CPU for a high-capacity server are not the same.

Two: People get new and better ideas. What if back in 1900 people had said, why do we need so many kinds of cars? Let's just agree on one kind and that's all anyone will make. Then today we would still all be driving 1900-style cars.

$\endgroup$
  • 1
    $\begingroup$ What does this add over existing answers? $\endgroup$ – Raphael Sep 8 '15 at 14:23
  • $\begingroup$ @Raphael I don't see any other answer that clearly expresses the idea of different tools for different purposes, and I don't think other answers are entirely clear on the idea of continuing progress. If you don't think it adds anything, than don't upvote it. I can't imagine how a debate over whether this adds anything will add anything. $\endgroup$ – Jay Sep 8 '15 at 14:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.