HiveBrain v1.2.0
Get Started
← Back to all entries
patternMinor

Why don't computers use the same architecture?

Submitted by: @import:stackexchange-cs··
0
Viewed 0 times
whythesamearchitecturecomputersusedon

Problem

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?

Solution

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.

Context

StackExchange Computer Science Q#46916, answer score: 5

Revisions (0)

No revisions yet.