CU website

ECEN 2120

Information

Assignments

Lecture Schedule

Supporting Material

Syllabus

Staff

 

Syllabus for the Course

Here is a brief description of the main points to be covered in this course, and how they relate to one another. A detailed lecture schedule is also available.

A computer appears as a component in any of a number of systems that interact with their environments to solve interesting problems. It often helps to think of these systems as though they were collections of people solving the given problem, to anthropomorphize them, in order to relate them to everyday experience.

For example, consider the problem of providing traffic control at a pedestrian crossing. One could imagine a police officer or school crossing guard as a solution to this problem: The officer observes the pedestrians, and stops traffic when one or more wish to cross. At some point, the officer decides to halt the stream of pedestrians to give automobile traffic use of the crossing.

The overall task can be broken down into simpler tasks:

  • Sensing the desire of pedestrians to cross
  • Signaling the traffic
  • Signaling the pedestrians
  • Deciding when to stop allowing pedestrians to cross

A system thus needs analogs of the officer's eyes, hands and brain to carry out the task. If we think about existing systems for traffic control at pedestrian crossings, we see two of these analogs immediately: The officer's eyes are replaced by a button pedestrians press to record their wish to cross, and the officer's hands are replaced by the lights that signal the traffic and the pedestrians.

The process of deciding when to respond to pedestrian requests and when to stop allowing pedestrians to cross can be carried out by an algorithm based upon button presses and time. You already know from your elementary programming course (or equivalent experience) how to develop computer programs that accept inputs and deliver outputs based upon those inputs. Thus you can see how a computer that is a component of the pedestrian crossing control system could replace the officer's brain.

In order to be able to design systems with computers as components, you need to understand both what the computers can do internally and how they can interact with their environment. Generally speaking, you should already know what computers can do internally. This course therefore focuses on how the computer interacts with its environment. It is intended to provide you with a good understanding of the capabilities and operation of the major classes of input/output device, as well as familiarizing you with the low-level details of how the computer uses these devices to monitor and control a system.

  • The Capabilities of the Central Processor: We begin by looking at the central processing unit (CPU), the brain of a computing system. The central processor remains our focus for the next four weeks, as we gain familiarity with ways to program it. During that period we examine the CPU architecture, the structure of a CPU Program, and the data types that it understands. Examples are used to illustrate how programs are written in the native language of the machine, and how we control complexity by decomposing a program into modules.

  • Programmed Input/Output: As an example of interaction with the environment, we next look at simple input/output programs that read and write streams of characters. They are typical of the operations used to receive and transmit other kinds of information, like on/off states or samples from continuous signals.

  • Interrupt Handling: The simple algorithms work, but they require the central processor to concentrate exclusively on one task. Interrupts can be used to switch the central processor's attention among several tasks.

  • Buffering: Once we have the possibility of dealing with a multitude of devices operating at different rates, we need to be able to buffer data in order to handle bursts of information arriving too fast to process. (Of course the average data rates must remain within our processing capabilities.)

  • Managing Concurrency: Like the human brain, the central processor must be able to switch its attention smoothly from one task to another. It must ensure that in the tasks do not interfere with one another, yet may cooperate when required. Management of loosely-coupled processes turns out to be a very tricky problem that requires careful design and a deep understanding of certain aspects of the underlying hardware.

  • Timing: In addition to being able to respond to interrupts generated by devices, the central processor must have access to some absolute notion of time, such as we get from our wristwatches. Without this, there would be no way for the central processor to schedule events like halting the flow of pedestrians at the crossing.

  • Floating-Point Number Representation: A number representing a physical quantity may be very large (e.g. the diameter of the universe) or very small (e.g. the diameter of an electron). These numbers can seldom be measured with an accuracy of more than a few decimal digits, however. ``Scientific notation'' uses a few digits to capture the measurement and a power of 10 to specify the size of the value. Floating-point is the computer version of scientific notation. Evaluation of common arithmetic operations on floating-point numbers can sometime yield surprising results, and it is important to understand the advantages and disadvantages of this data type.

  • Memory Mapping: The more tasks a system must handle, the more likely it is that problems will arise within individual tasks. It is therefore increasingly important to separate tasks with firewalls, so that if one task fails it does not corrupt others. One obvious way of separating tasks is to use memory protection to prevent one task from overwriting another's storage.

  • Caching: Current systems attempt to smooth out the large differences between processor and memory speeds by providing a small cache memory on the same chip as the central processor. The intent is that most of the memory references will actually use that cache instead of the main memory, and therefore a system designer needs to understand the properties of the processor cache to improve performance.

Instructor Revision 1.14 (2006/08/25 00:05:32)