CMPT-150

Introduction to Computer Design SFU, Harbour Centre, Spring 2007

Lecture 16: Mar. 6, 2007 • Memory Basics – Random Access Memory (RAM) • Computer Design Basics – General Purpose Computer – Instruction Set Architecture

Memory Definitions • Memory: A collection of storage cells together with the necessary circuits to transfer information to and from them. • Memory Data: a bit or a collection of bits to be stored into or accessed from memory cells. • Typical data elements: – Bit: a single binary digit. – Byte: a collection of 8 bits. – Word: a collection of bits that is the a typical unit of access for the memory. Usually a power of two multiple of bytes (e.g., 1 byte, 2 bytes, 4 bytes, 8 bytes, etc.)

– Datapath

Memory Definitions (cont’)

Example

• Memory size is measured by the number of bytes or words.

• 1K x 16 RAM: 1K words,

– – – –

Kilo (Kb): Megabyte (Mb): Gigabyte (Gb): Terabyte (Tb):

1024 bytes = 210 bytes 1024 Kilobyte = 220 bytes 1024 Megabyte = 230 bytes 1024 Gigabyte = 240 bytes

• Memory Organization: Usually organized as an indexed array of words. Index = Address. • Memory Operations: operations on memory data supported by the memory unit. Usually, Read and Write. • Random Access Memory (RAM): Time to access memory cells is independent of their address. – Not random access:

each of size 16 bits. • There are 1024 addresses (0-1023 decimal, or 0000000000-1111111111 binary). • Reading the word at address 1021 = 1111111101 we get 1001110100010101

Memory Block Diagram

Memory Block Diagram (cont’) n

• k address lines are decoded to address 2k words of memory.

• Example:

k

• Each word has n bits. • When Read=1 the n output data contain the data at the address specified by the k address lines.

n

• CS enables the memory. • R/W determines whether memory is read or written.

• When Write=1 the content of the memory at the address specified by the k address lines is changed to the data specified by n input data lines.

• 64K = 26·210 = 216  16 address bits

Implementation

Constructing Large RAMs from Small RAMs

• Small memories can be constructed from registers and combinatorial components. For large memories, other technologies are used.

• n 8x1 RAMs can be used to construct 8xn RAM

• Example: 8 x 1 RAM – 8 words of size 1. – A 38 decoder is used to enable writing to exactly one cell. – An 81 Mux is used to select the cell to read. – Alternatively, use a bus.

• The size of a word stored in memory is 8 bits  8 output bits.

8x3 RAM 3 Addr Data

8x1 RAM 3 Addr

8x1 RAM 3 Addr Data

Out

Data

8x1 RAM 3 Addr Out

Data

CS

CS

CS

R/W

R/W

R/W

CS R/W

• Actually, no need to duplicate the Decoder.

Out

Constructing Large RAMs from Small RAMs (cont’)

General Purpose Computer

• n 8x1 RAMs can be used to construct 8nx1 RAM

• So far we design digital circuits that perform specific tasks. This approach is useful for: – “Simple” tasks resulting in small circuits – Large numbers of such circuits are required

16x1 RAM

3 Addr

21 Decoder EN CS

8x1 RAM 3 Addr Data

8x1 RAM 3 Addr Out

Data

CS

CS

R/W

R/W

Out

R/W bus

• Sometimes it’s better to design a general purpose circuit (computer), which can perform different sets of instructions (programs). • Instructions are: – Given through input devices (keyboard, Hard Disk) – Kept in memory – Performed by the Central Processing Unit (CPU)

General Purpose Computer (cont’)

General Purpose Computer (cont’)

• Instructions a typical CPU is capable of performing: – Data transfer: values can be transferred between registers in the CPU and external memory. – Arithmetic: values stored in registers can be combined using arithmetic operations. – Logic: values in registers can be combined using logic operations. – Shifting the content of registers. – Testing: the results of operations can be tested to detect conditions such as overflow, carry, negative result, zero. – Input/output: values can be retrieved from external devices or displayed on them. – Branching: Changing the sequence of executed instruction during execution.

• Instruction Set Architecture (ISA): The set of instructions the CPU can perform. This is the lower-level “appearance” of the computer to a (software) programmer. Corresponds to Machine/Assembly Language. • Computer Architecture: High-level description of the hardware (CPU) that implements the ISA. Usually, divided to Datapath and Control Unit. • Datapath: Performs the data-processing operations. • Control Unit: Determines the sequence of operations.

Datapath Registers file Control Unit ALU

System

Datapath Block Diagram

Arithmetic and Logic Unit (ALU)

• The main components of the datapath are the Register File and the Arithmetic and Logic Unit (ALU).

Carry out Negative Zero Overflow

• ALU: the combinatorial part that performs the arithmetic and logic operations. • The operands of the ALU are (the values in) in at most two registers selected by the control. • Control signals determine the operation performed by the ALU.

Implements a variety of binary (2 operands) and unary (1 operand) arithmetic and operations.

• Data bus connects the main memory and the register file.

Datapath: Example • A possible instruction*: ADD R1,R2,R3; (sum the values in R2 and R3 and write the result to R1) • To implement it: – – – – – – –

A select = R2 B select = R3 G select = A+B MF select = ALU MD select = F Destination select = R1 Load enable = 1

Instruction Set Architecture • ISA is the language “understood” by the CPU. • Every CPU has its own ISA. • (Software) programmers can use the ISA to write programs to be executed by the CPU. • Example:

• Opcode is a binary codeword for the instruction. • An instruction usually has several parameters. • Example: 0000101 001 011 010

* Not necessarily a real command.

Subtract

R1 R3

R2

R1  R3 – R2

The Fetch-Execute Cycle •

The steps perform by the control unit when executing a program: 1. Fetch the next instruction to be executed from memory. 2. Decode the instruction: a combinatorial part that determines the control signals. 3. Execute the instruction and (possibly) store the result. 4. Go to step 1.