1st Lecture

 

Explain purpose of this course:

 

      To explain how a microprocessor system works.

      Three aspects:

1.    How to directly program such a system at the machine code level

2.    How to expand such systems by connecting hardware to them

3.    How a typical system is organized and how we can build one that works

This is called “Computer Organization”

 

Later on they will learn “Computer Architecture”, that is how to build the “best” system possible given a particular technology.

 

There are really two thematic sections in this course:

1.    Learn how a computer works / How to program it / How it behaves

a.    Equivalent to learning how to drive a car à How to make it do what you want / what is the interface
This is called the Programming Model and should be viewed as a contract between the manufacturer and the user
Advantage: Only the interface is fixed / we can build different machines that adhere to the interface

b.    How programming at the low level (machine level relates to programming at high-level language)
I will assume that you know “C”.

 

2.    Learn how to build a computer (processor) that works

a.    This is meaningful only if you know what it is supposed to do

b.    In this course our focus on “it works” as opposed to “works best”

In addition we will see:

3.    Some performance/function enhancing techniques

a.    Caches / Virtual Memory

4.    Basic I/O Device Concepts

5.    Time Permitting Common I/O devices

 

Review Digital (binary) system fundamentals

      Binary –> understands only two values

            For convenience these are typically represented as 0 or 1

            In actuality, they can be anything

            For example, 0 volts or 5 volts -> most conventional digital systems

            Light or No Light

      Advantage:

            Easier to detect/recognized two values as opposed to more

            Explain with light example

                  Communicating between two boats in fog using multiple light levels (no light, some light, a bit more light, may some light, etc.)

                  Compare to light no light, which is easier.

           Explain that in conventional microprocs we use (0, 0+ delta) as 0 and (Vdd –delta, Vdd) as 1.

      By bundling bits together one can represent more things that one.

            Example Morse code

 

Computer as the ultimate Digital system

      They are programmable, i.e., they can follow as set of rules which you can specify

     

Basic Functionality of a Computer (processor)

      1. Move Digital Data from one location/device to another

      2. Operate on Digital Data: A + B, A – C, A + B, etc.

      3. Based on outcome of an operation decide what to do next.

 

      There are many operations, but fundamentally the concept holds

 

Why is this enough and useful?

Digital information can be transformed from/to other types of info/forces, and hence can be used to interact with other devices and the physical world.

Provide Examples:

 

Keyboard: Mechanical (motion induced by your fingertips we hope) is converted to electric current (contact) which then is detected by the keyboard controller which then converted it to a digital signature for the key.

Speaker: Electricity->magnetic field->mechanical (motion of cone)->pushes air->sound wave. Can convert a digital value to a proportional voltage->hence can create any motion we like->hence create “any” sound we like. Called D/A.

LCD Screen-> digital info represents coordinates/value->electric field on two cross grids, moves molecules, lets light pass through or not.

Printer: Ink-jets: digital info->mechanical motion moving head left and right, rolling paper up, or piezo-electric force spiting ink out.

CDs: Selectively reflecting surface, passes under laser->light pulses->converted to electric ones-> bit stream, interpreted in bundles of 16 as sound levels->passed to D/A ->music

 

In summary:

 

Take input in one form->convert to a digital representation -> process -> convert to desired form for output

 

Vanilla Computer System

 

Two forms of information

-        instructions

-        data

Both are digital

Instructions: Determine what the system will do: moves, adds, subs, etc.

Data: Represent the quantities the system is processing. They are the operands instructions manipulate

      Examples, char, int, long.

 

5 Main Parts of a computer

 

1.    Input

2.    Output

3.    Memory

4.    Arithmetic and Logic

5.    Control

 

Draw a system

 

4 & 5 is the CPU

This is a uniprocessor system

 

Justify this course:

 

Hardware VLSI designers:

      Semiconductor technology is only the raw material out of which we build processors/computers. Building working processors is challenging and in high demand. This course is one more step towards developing the expertise necessary to do so.

Programmers:

      You can always program a computer without knowing how it really works

      But then, if you do know the specifics you may be able to take advantage of them

      Certain applications require you to squeeze every bit of a specific CPU

      Some programming practices work well than others depending on the specific system

      Compiler development requires knowledge of assembly

      FIX

 

Specifics: We will talk about the Motorola Dragonball procs (aka 68k) used in Palm Pilot for example

      We will work with the ultragizmo board. UofT developed, may seem proprietary but the main concepts are there to be illustrated.

      Emphasis on concepts and demonstration/experience on Uzmo. Goal: you know the concepts, can quickly apply them to any technology that comes up (maybe talk about PCI, ISA, EISA and the like  to explain how futile is to focus on a specific product).

 

Administrative Issues

      Explain Lab structure

      Course schedule and grade distribution

      Book

      How to do well

      Academic Dishonesty

      Late policy