Introduction
Tom Kelliher, CS26
Sept. 3, 1996
- Digital logic.
- Computer organization.
- Computer architecture.
- Input.
- Output.
- Memory. Cache? Registers?
- Arithmetic logic unit --- ALU: adder, multiplier, etc.
- Control unit: program sequencing, interrupt handling, etc.
CPU.
Memory contents have no inherent meaning: data vs. program.
- Machine instructions.
- Addresses.
- BCD.
- 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.
- Volatile.
- 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
networks?).
- Multiprocessing, multiprogramming.
- Coordinates all activity.
- Issues timing signals.
- Determines execution path through program:
- Straight line execution.
- Conditional, unconditional branching.
- Subroutine call, return.
- Interrupts.
(How are context switches carried out?)
Registers vs. memory. Consider:
add LOCA, R0
Notice:
- Memory operand permitted.
- Two-address architecture.
- Instruction semantics?
- CISC-like.
Consider:
load LOCA, R1
Add R1, R0
Notice:
- ALU only works with register operands.
- Separate instructions for memory operations (load/store
architecture).
- How many addresses?
- Instruction semantics?
- RISC-like.
- 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
sinks.
Connection flexibility (ISA bus).
Synchronous vs. asynchronous, buffering fast to slow devices.
- BIOS.
- 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:
- Parallelism
- Pipelining
- Technology
- Algorithms
- Caches
- Multiprocessing
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
Tom Kelliher