Back

Alternative architectures

Introduction
There are other ways to design a CPU - the Von Neumann architecture isn't the only way! There are four other types of architecture we will discuss briefly here:

    • parallel processors
    • pipeline processors
    • array processors
    • maths co-processors.

1. Parallel processors
Rather than have one processor executing programs, you could have more than one! This is sometimes referred to as a Supercomputer! This would greatly increase the speed that programs could be executed – a major advantage of this kind of processing. Different parts of the same program could be executed simultaneously, each processor dealing with a particular task. Of course, this assumes that the original program was designed to have parts of it executed at the same time. Most programs are not designed in this way and this adds an extra degree of complexity to writing software – a disadvantage of parallel processing! When programs are written to use parallel processing, however, great improvements in the speed of processing are seen, for example, in weather forecasting because this requires a lot of mathematical processing. One possible layout for a parallel processing system is shown in the next diagram.

alt

In this system, there are a number of CPUs working together, sharing the same memory. The processing that all these CPUs do will greatly increase the demands on the data bus - each CPU needs to get data to and from memory and only one CPU can use the data bus at any one time. To help reduce the time one processor waits for access to the data bus, each CPU has its own cache. Data and instructions can then be transferred to it in one go and the CPU can get on with processing it without constantly requiring memory access. Now a CPU will be waiting much less than before. The provision of a data bus for each CPU will further improve performance because the CPUs will not have to wait for access to the only available bus.

2. Pipeline processors
In the conventional Von Neumann architecture, an instruction is fetched, then decoded and finally executed. This happens in sequence. It would be nice if an instruction could be fetched and then, while it is being decoded, another instruction is fetched, and while the decoded instruction is being executed, other instructions are being fetched and others still decoded - all at the same time. A processor that is designed to do just this is known as a 'pipeline processor'. As with parallel processing, programs need to be written to take full account of this capability.

3. Array processors
An array processor is designed to allow a single machine instruction to operate on lots of different data sets at the same time. If you have lots of data that all have to be processed in the same way, than this can be a very fast way of carrying out processing. An array processor is known as a Single Instruction Multiple Data computer (SIMD). Weather forecasting and airflow simulations around planes, for example, are very good examples where array processing might be useful.

4. Maths co-processors
Another kind of processor worth mentioning is the Maths co-processor. This is a specialised processor that works in addition to the main processor. It has large registers and specialist functions that can manipulate big floating-point numbers easily. Whilst it is doing this, the main CPU is free to work on other things. Maths co-processors reduce the time that CPUs have to spend working on floating-point numbers, a task which they can do but not in one go – they are not specifically designed for that.

Back