Comp 255 - Computer Organization- Levels

(Fall 2007)


What is a Computer ? A computer is an electronic (?) device, operating under control of instructions stored in its own memory unit, that
  1. accepts data (input)
  2. processes data arithmetically and logically
  3. displays information (output) from the processing and/or
  4. stores the results for future use."

The electronic circuits of a computer can recognize and directly execute a limited set of simple instructions. This course examines how this is actually done.


Architecture vs Organization (Implementation &Realization)


How Does a Computer Execute Instructions?

  1. The electronic circuits of a computer can recognize and directly execute a limited set of simple instructions (e.g. add, test, move). These primitive instructions form the machine language. The instructions are simple in order to reduce cost and complexity.
  2. To make the computer easier to program, design a new set of instructions (L1) that is "executed" by the original set of instructions (L0). This is done by translation or interpretation.
  3. This can be extended. Design an L2 language that is executed by the L1 language etc.
Thus a language defines a (virtual) machine and a (virtual) machine defines a language. 

Machine Levels (top down)

1.	User/Application Level
2.	High-Level Languages
Examples: Fortran, Pascal, C++, Python, Scheme
3.	Assembler Language/Machine Code 
The architecture of a computer is described/defined
by its set of machine code instructions; hence the
phrase Instruction Set Architecture
4.	Control Level (software/hardware interface)
Microprogramming vs. Hardwired
5.	Digital/Hardware Level
 
Examples (bottom up)
                 0200/7300    (PDP-8 machine code  - octal)
             0201/1300
             0202/1301
             0203/3302
             0204/7402
             0205/5200
             0x15 0x00    (Java Byte Code)
             0x15 0x01
             0x60
             0x36 0x02

              *0200        (PDP-8 Assembler)
              main, cla cll
                    tad a
                    tad b
                    dca c
                    hlt
                    jmp main
              *0300
              a,    02
              b,    03
              c,    0
              $main

              iload a    (Assembler for Java Byte Code)
              iload b
              iadd
              istore c

              mov ax, a   (Intel 80x86 assembler)
              add ax, b
              mov c, ax
              nop
              int 03


Key Idea
: Computers are designed as series of levels with each level built on the foundation of its predecessor. Hardware and software are logically equivalent; what is too expensive/complicated to do in hardware can be done in software (e.g. multiplication, floating point operations)


Return to Comp 255 Home Page