Lectures Next
General digital designs
  Harvard Architecture
    Instruction code and data 'stored' in separate mechanisms and
      accessed with dedicated circuitry.

    Program and data are accessed via separated paths and 
      can occur at the same time (faster).

    Program 'byte' and data 'byte' could be different sizes.

    Faster performance and lower running overhead.

    Original computer architecture.
      System was programmed by physically wiring the circuits to
        perform desired algorithm.

      Data was often provided as punched cards or some other physical
        media and mechanically read.

      Required manual programming and start-up.
        The operator was the 'operating system'.

    Difficult to re-assign resources, such as memory, across functions.
 
  Princeton Architecture
    Also called von Neumann architecture or stored program. 
    (John von Neumann, John Mauchly, J. Preser Eckert) 1940's 

    Both data and instructions stored in a common area. (Stored program).

    Distinction between instruction and program data contextually recognized.

    Instructions are sequentially read and executed using a program counter 
      to keep track of next instruction to be executed.

    Single path for all activity. 

    Arbitrarily reassign resources, such as memory, between code and data
      as needed.

    Inexpensive hardware design, very flexible, (speed suffers).

   * von Neumann bottleneck
     Because both program and data access occurred over the same path, 
       only one of these can be happening at any moment.

  Modern systems use Modified Harvard architecture.
    Most commonly in cache and internal bus designs. 

    Level 1 caches on modern CPUs implemented as Harvard architecture.
      * Code is not modified during execution, so can be discarded when done.

    Micro-controllers (CPUs designed for specific tasks).
       Fast, economical.

    Inexpensive calculators are usually Harvard architecture.
      * Usually have limited functionality.