Why study architecture?

The general goal of this course is to provide a background in computer architecture and organization in order 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 a 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 calculate a solution to a specified problem by applying a set of defined steps, an algorithm, the the problem. These steps may be implemented in either hardware circuitry or in program code.

A well designed system implements the steps independent of the overall algorithm, allowing steps to be rearranged and reused to solve different algorithms with minimal cost and effort.

A valid algorithm has three primary features :


Equivalence of hardware and software

An algorithmic routine is realized by executing a series of discrete simple, finite, pre-defined steps in a specified order known as a program. If these steps are sufficiently simple, they can be arranged in different orders to solve any variety of complex algorithms.

Modern computers use a combination of electronic circuits and software instructions to implement these individual steps.

From the logical viewpoint, hardware and software implementation of an algorithmic step are equivalent. In practice, each has benefits and costs.

Hardware implementation advantages and costs.

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.
Productivity triangle

Picture a small carpentry shop. At the entrance is a sign :

The productivity triangle acknowledges that there are seldom only two competing ideas when attempting to choose the best technological solution. Common competing issues : 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.