Tom Kelliher, CS26
Sept. 3, 1996
- Digital logic.
- Computer organization.
- Computer architecture.
- Memory. Cache? Registers?
- Arithmetic logic unit --- ALU: adder, multiplier, etc.
- Control unit: program sequencing, interrupt handling, etc.
Memory contents have no inherent meaning: data vs. program.
- Machine instructions.
- ASCII Text.
- 2's complement numbers.
- IEEE floating point numbers.
- Primary storage --- main memory.
- Solid-state; RAM.
- Organized into words with unique addresses.
- A ``word'' is some number of bytes.
- Little endian, big endian.
- Slower than CPU.
- Secondary storage --- disk (tape?).
- Magnetic, mechanical.
- Organized into sectors with unique addresses.
- ``Huge'' capacity.
- Slower than memory.
- ``Permanent'' storage.
- Usual functions.
- Registers --- fast as CPU.
- Capable of controlling numerous, slower I/O devices (gigabit
- Multiprocessing, multiprogramming.
- Coordinates all activity.
- Issues timing signals.
- Determines execution path through program:
(How are context switches carried out?)
- Straight line execution.
- Conditional, unconditional branching.
- Subroutine call, return.
Registers vs. memory. Consider:
add LOCA, R0
- Memory operand permitted.
- Two-address architecture.
- Instruction semantics?
load LOCA, R1
Add R1, R0
- ALU only works with register operands.
- Separate instructions for memory operations (load/store
- How many addresses?
- Instruction semantics?
- Instruction register (IR).
- Program counter (PC).
- General purpose registers.
- Memory address register (MAR).
- Memory data register (MDR).
Draw an example system; outline instruction cycle.
Bus --- a collection of wires connecting several modules and
carrying related data.
Data, address busses.
A single bus connecting devices --- only one source, one or more
Connection flexibility (ISA bus).
Synchronous vs. asynchronous, buffering fast to slow devices.
- Operating System.
- System software.
- Application programs.
How is a program run?
How does it communicate with the rest of the system?
How is the system and users protected?
What techniques are available for speeding up program execution?
What matters most in performance? User view? System view?
Some standard techniques:
For a single program, here's the fundamental equation:
where T is execution time, N is the number of machine
instructions to be executed, S is the average number of clock
cycles per machine instruction, and R is the clock frequency.
What can we do to improve T?
Thomas P. Kelliher
Tue Sep 3 01:12:46 EDT 1996