Why study architecture?
The general goal of this course is to provide a background in computer
architecture and organization that will allow us to make better decisions
when programming a task or selecting a system to to solve a problem.
Like a professional driver who understands how the engine, transmission, and
brake system on her/his car works, he/she can elicit the best performance
from each system even if he/she never actually repairs or rebuilds one of these
systems.
Algorithms - steps to a solution
Computers are designed to compute solutions to specified problems. An algorithm
is a set of rules describing the steps to a solution for a given problem. We
implement algorithms on a computer with a program or hardware circuitry.
A substantial algorithm has three primary features :
- It must produce a final result, either generating a successful solution or
flagging failures.
- It must be clear and precise with logical steps in the progression to a
result.
- It must be achievable. Achievability has a number of attributes, monetary
costs, time needed to complete, access to sufficient data, access to
computing resources, etc. Of the three features of an algorithm, this is
the most fluid and affected by the continual evolution of programming.
Equivalence of hardware and software
Modern computers use electronics to implement calculations at a binary
level. These calculations are performed by executing a series of discrete
simple, finite, pre-defined steps in a specified order known as a program.
By rearranging these steps in different orders, a computer system can solve
any variety of complex algorithms.
The implementation of a sequence of simple steps or algorithm may be defined
at the hardware or software level.
Hardware implementation offers both advantages and costs.
- (+) Hardware implementation of a complex algorithm simplifies programming
at higher levels.
- (+) Execution can be very fast.
- (-) Once designed into a system's hardware, a particular algorithm cannot
be changed.
- (-) The circuits to solve any particular algorithm take up real estate
and resources and are limited to a particular task or small set of tasks.
An alternative is to use software to specify a task. The hardware defined
tasks are left as simple discrete steps and their order of execution
specified by a loadable program or software.
- (+) The advantage of software implemented algorithms is that a new
algorithm can quickly be defined and implemented.
- (-) The disadvantage is that it is executed much more slowly than
hardware defined algorithms.
- (-) The system requires extra real estate (memory) to store programs.
Productivity triangle
Picture a small carpentry shop. At the entrance is a sign :
- Fast, Quality, Cheap work
- Pick any two.
The productivity triangle acknowledges that there are seldom only two
competing ideas when attempting to choose the best technological solution.
Common competing issues :
- Cost
- Speed
- Ease of use - end user
- Ease of use - programming
- Compatibility with other hardware/software
- Expand-ability
- Power consumption
As we go through this course, we will look at the design of various systems,
protocols, functional units, devices, etc. with the goal of providing a
general understanding of their implementation and their costs and benefits.