Organization and Cost Aspects of Computers

Computers as a Layered Construct.

Computers are a set of abstractions built on top of increasingly complex substrates.

The highest level is something that humans can relate to. The lowest level you may be able to understand if you like watching waves on a logic analyzer. The goal of the course is to show how higher levels are synthesized from the lower ones.

A Simple View of a Computer

You can think of a computer as the combination of a processor, a memory system, and I/O devices. Inside the processor you can distinguish two important components: the datapath and the control unit. The datapath is essentially all the components of the processor that hold data and do work. The control unit specifies what type of work some units should do since for efficiency we build multiple capabilities into units.

A not so Simple View of a Computer

The interface to the outside world is quite fragmented in order to reduce cost. The Memory bus interfaces memory to the processor and is the fastest (400-1000Mbytes/sec). The I/O bus (Sbus) intrefaces peripherals to the Memory Bus. The SCSI bus is just a standard for connecting disks and tapes and intrefaces to the I/O bus. The External bus is really slow since it is responsible for human generated events.

What affects Computer Architecture

Applications are critical since that is humans use and humans have the money. Technology tells us what we can do, while languages and operating systems provide some nice abstractions that may need support from the hardware. Compilers in particular have a large impact on the instruction set architecture, while operating systems have influenced the development of virtual memory. History and Inertia are of paramount importance. If you have a large market share you can survive even if your products are not as good!!!

What Affects the Cost of Computer Systems

Processor Cost

The bigger the chip the less likely it is to come out working correctly!!!

Some numbers on Processor Costs

What is Performance

CPU time = Seconds/Program = Instructions/Program X Cycles/Instruction X Seconds/Cycle.