Computer Architecture


computation model: data flow vs Von Neumann
sequentialisation
organisation
performance metrics

computation model

consider an example of computing an expression below.  It can be implemented with two kinds of computing machines.

y = ax + bx^2 + c

two kinds:

data flow

x * x -- 1
b * 1 -- 2  a * x -- 3
2 + 3 -- 4
4 + c -- y

(graph)

finished in 4 time steps

sequential model

ld r1 a
ld r2 x
mul r3 r1 r2
ld r4 b
mul r5 r2 r2
mul r6 r4 r5
add r7 r4 r3
ld r8 c
add r9 r7 r8
st y r9

convention:  op dest src, op dest src1 src2

finished in 10 time steps  but it reused the functional unit.

organisation

data flow

     | | | | |
  fu ---------  switched matrix
     | | | | |
  fu ---------
     | | | | |
  fu ---------
  ...  ...

von neumann

  --> registers --> func.unit--
  ^                            |
  |                            |
  |                            |
  -----------------------------
                |
         bus interface unit
                |
             memory

  control unit

in the bird-eyes view

   P -- M   where P is a processor  M is memory

von neumann's bottleneck

performance metrics

1  how long it takes to finish a specified job?
2  how many job it can do within a unit of time?

p = 1 / t      p is performance, t is time

to measure performance, a program is run and time to complete that program is measured.  The problem is, performance figure depends on the program it runs. different program may give different performance figure.  to compare two machines performance, they must run the same program.  

throughput measures the amount of job a computer can do in a given time.

machine 1  is 50 % faster than machine 2.
what does it mean?

machine 1 takes 5 s. to run program A.
machine 2 takes 10 s. to run the same program.

m1 is   (10-5)/10 = 50%  faster than m2.

50% means m1 takes "half" of the time of m2 to finish the same job.  this figure is also called "speedup".

what happen when this figure approach 100%?  
(the faster machine is infinitely faster than the other machine)

benchmark is a suite of program to measure the performance.  there are several benchmarks and measurements such as MIPS (million instruction per second), SPEC, etc.

11 June 2004
P. Chongstitvatana