CS 240 Lab 5: Processor Datapath
Peter Mawhorter
How do Computer Circuits Work?
- Power flows through chips in the computer, creating patterns of
activation driven by a clock and determined by
logic gates.
- Flip-flops allow information to be stored and then
updated on a clock edge, allowing circuits to compute values that change
every tick.
- An ALU performs basic operations, a
register file stores operands & results, and
RAM stores lots of data.
How do Computers Represent Things?
- High/low voltage patterns represent numbers in binary and/or
symbols.
- These are stored in arrays of flip-flops called
registers.
- Random Access Memory provides bigger/slower
storage.
- A sequence of data in RAM can represent e.g., text.
- Basic operations with these numbers, like addition, are done by an
Arithmetic Logic Unit.
- All other operations are sequences of basic operations.
But what about… ?
- What controls the ALU?
- How does the computer decide what to do next?
- How does a program continue until input says to stop?
- How is code in a language like C translated into machine
instructions?
How does the OS Work?
- OS allows user to launch programs.
- Programs are files on the computer.
- OS has a command-line for text control, plus maybe other
interfaces.
But what about… ?
- How does the “boot” process work? Where does the operating system
actually start?
- What language does the “shell” use? Why are shells still around when
we have graphical interfaces?
- How does one program launch another? How does the OS keep track of
programs that are running? How do two programs run at the same
time?
- How do compliers actually work? How does our text written in a
programming language turn into a program, and what does a “program”
actually consist of?
What we’ll see today
- What controls the ALU?
- How does the computer decide what to do next?
- What does a “program” actually consist of?
Outline
- Memes, Links, & Questions
- Computer Architecture
- The Program Counter
- Branching
- Using Assembly
- GO (break later)
Instruction Set Architecture
- What kinds of instructions can be used?
- How big are they?
- Which parts mean what?
- What effect they will have?
- What memory can instructions access directly?
- How many registers?
- How big are they?
- How big is a program/RAM address?
Instruction Set Architecture
- What kinds of instructions can be used? (ADD,
SUB, etc.)
- How big are they? (16 bits)
- Which parts mean what? (4 bits opcode,
etc.)
- What effect they will have? (meanings)
- What memory can instructions access directly?
- How many registers? (16
registers)
- How big are they? (16 bits)
- How big is a program/RAM address?
- (8 bits → 256b program; 16 bits → 65536b
RAM)
Microarchitecture
- The specific implementation of an ISA
- Could have faster/smaller/cooler versions
- Full chip layout + connections
The Program Counter
- Instructions are stored in special instruction
memory
- Program Counter holds address of current
instruction
- By default Program Counter advances by 1
instruction
- (16 bit instructions → 2 bytes)
- Branch/Jump may alter PC
Branching
- JMP instruction allows arbitrary ordering & infinite loops
- BEQ instruction allows conditional jump → if/else
- JMP + BEQ can do a conditional loop:
- JMP up by default
- BEQ across the JMP when loop is done
The Power of Branching
- BEQ makes assembly code Turing-complete
- (Well, almost…)
- See CS 235
- Without BEQ, each instruction is always or never executed
- With BEQ, we can have conditional execution: execution depends on
data values
- Things like key presses are really just data values to the CPU