Housekeeping 1. 2. 3. 4. teams—end of class Example verilog code (alter) Example altera report Lab Monday: you will be asked to show: -- one or more reports --one or more verilog modules --one or more simulation Processors (ISA, RTL levels); Instruction cycle; interrupts Computer Processor Basics ISA (Instruction Set Architecture) RTL (Register Transfer Language) Main references: Peckol, Chapters 1-3 Patt and Patel, Introduction to Computing Systems (slides from NC State) Fig. 01-00 “Machine” categories • FSM • Stack machine • Turing machine – von Neumann architecture – Harvard architecture Von Neumann memory program and data share one memory Harvard memory: separation of program, data program data 1. fsm--"finite state machine"--states, input, output; transition from one state to the next is a function of current state or current state + input. Machine does not "remember" where it has been previously-you cannot look back at where you have been. 2 basic types: Moore machine: output from state machine is in Mealey machine: output based on state you are in and input Examples: vending machine, control unit, counter, traffic light. 0 START 0,1 B A 1 1 0 C Can be realized by flip-flops and combinational logic (and I/O). Theory: FSM regular languages 2. stack machine--states, input, output, stack (LIFO). We can use the stack to "remember" some past actions. Examples: parse expressions for grammar; evaluate arithmetic expressions. Example: to evaluate AB+C* (= (A+B)*C)we perform the operations: Push A; push B; pop, pop, add and push; push C; pop,pop, multiply and push; output result Control (end of input string). A simple fsm cannot do (fsm) general examples of this type of calculation. We need flip-flops, combinational logic, and the stack. Theory: stack machine context-free languages stack machines are "more powerful" than fsm's (e.g., using a stack we can write a program to recognize palindromes of the form n n A B ,n>0. A fsm would need an infinite number of states to do this task.) I/O Popped Item (from “Top”) Combinational Logic “Top” Stack 3. Turing machine or "random access machine" or sequential computer--this in turn is more general than the stack machine. It can be realized by flip-flops, combinational logic, and a "random access memory" in which each memory location can be accessed through its unique address: CONTROL (FSM) ALU (comb) RAM (Actual “RAM” Hierarchy) I/O Registers Cache (solid arrows represent control flow; dotted arrows represent data flow).(Sometimes called a Single Instruction Single Data or SISD machine). Theory: "UTM": Universal Turing Machine--can execute any algorithm, model any classical computer Turing machine recursively enumerable languages Two basic configurations: Von Neumann: store data + program together Harvard: store data, program in separate memories Main Memory (RAM) (Virtual Storage) {Hard Disk, Secondary Devices} Some processor options (note firmware) 1. Microprocessorbased system fig_01_05 2. Microcontroller-based system Fig. 1-05 components integrated into one unit) fig_01_06 DSP (A/D, D/A; high speed—video, audio, images fig_01_07 Instruction Set Architecture •ISA = All of the programmer-visible components and operations of the computer – memory organization • address space -- how may locations can be addressed? • addressibility -- how many bits per location? – register set • how many? what size? how are they used? – instruction set • opcodes • data types • addressing modes •ISA provides all information needed for someone that wants to write a program in machine language (or translate from a high-level language to machine language). Example 1:LC-3 (Patt) Overview: Memory and Registers •Memory – address space: 216 locations (16-bit addresses) – addressability: 16 bits •Registers – temporary storage, accessed in a single machine cycle • accessing memory generally takes longer than a single cycle – eight general-purpose registers: R0 - R7 • each 16 bits wide • how many bits to uniquely identify a register? – other registers • not directly addressable, but used by (and affected by) instructions • PC (program counter), condition codes LC-3 Overview: Instruction Set •Opcodes – 15 opcodes – Operate instructions: ADD, AND, NOT – Data movement instructions: LD, LDI, LDR, LEA, ST, STR, STI – Control instructions: BR, JSR/JSRR, JMP, RTI, TRAP – some opcodes set/clear condition codes, based on result: • N = negative, Z = zero, P = positive (> 0) •Data Types – 16-bit 2’s complement integer: (q: how does 2’s c arithmetic work?) •Addressing Modes – How is the location of an operand specified? – non-memory addresses: immediate, register – memory addresses: PC-relative, indirect, base+offset Example: NOT (Register) Note: Src and Dst could be the same register. Example: ADD/AND (Register) this zero means “register mode” DATA: DATA TYPES NUMERIC --Unsigned integer --Signed integer (2’s complement, sign-magnitude, fixed point, etc.) --Floating point: 3 components: sign exponent mantissa fig_01_08 NONNUMERIC --address --character Q: what common data type is not named? Is it “missing”? Instructions—ISA level Instruction coding: HLL (high level language, C, C++ , e.g.) assembly language (ISA) machine language (can work at any level; high level allows faster but less efficient coding) IEEE Standard 694-1985—IEEE standard for microprocessor assembly language—used for examples in text Instruction coding: operator addr mode operand(s) Fields: operator, operands (type of addressing) Example: 32 bits 3 bits: opcode 2 bits: address mode (e.g. direct, indirect, indexed, immediate) 27 bits: for addressing operand (s) Expanding opcode (example): 000-110xxxx…xxx: 2 operands 1110xxx…xxx: 1 operand 1111xxx…xxx: no operand (e.g., HALT) Example instruction formats fig_01_14 fig_01_13 fig_01_15 Typical ALU and registers fig_01_42 Data movement instructions: source / destination fig_01_16 Addressing modes: Immediate: MOVE A, #BH; Direct: MOVE OPR1, OPR2; Indirect: MOVE OPR1, *myVarPtr; fig_01_12 MOVE *OPR1, *OPR1; MOVE *OPR1, **yPtr; Indirect addressing— myVarPtr holds address or myVar Register direct: MOVE Reg1, Reg2; Register indirect: MOVE Reg1, *Reg2; Indexed (loops): MOVE Reg1, OPR2[REG2]; PC relative (loops,e.g.; offset can be negative): ADD PC, [Reg1]; Example: what is the difference between Y, *Y, **Y Addressing examples: fig_01_21 fig_01_22 fig_01_23 fig_01_24 Control instructions Control can be: sequential (default) loop (pre or posttest) branch: go to conditional (if, if-else,, case, branch on condition) procedure or function call [interrupt or exception] change in control flow, e.g., I/O device ready Unusual event, e.g., overflow or undefined instruction Example of conditional statements: C / assembly language: fig_01_31 fig_01_32 Looping: example fig_01_34 fig_01_35 Function or procedure call: Must store return address, pass information back and forth fig_01_36 fig_01_37 What are standard parameter passing methods? Stack: common way to handle procedure / function calls fig_01_39 Q: what are two alternative methods for handling function / procedure calls? Which methods facilitate recursion? Function call: example: fig_01_40 fig_01_41 LC-3 Data Path Filled arrow = info to be processed. Unfilled arrow = control signal. Instruction Processing Cycle Fetch instruction from memory Decode instruction Evaluate address Fetch operands from memory Execute operation Store result Q: what about interrupts? Different viewpoint: RTL: register-transfer language level fig_01_46 RTL VIEW fig_01_52 fig_01_53 Multiple levels--examples fig_01_57 fig_01_58 table_01_03 What should instructions be? Ex 2: Minimal hardware resources high degree of functionality M MA IR AC CF M: memory MA: memory address register MD: memory data register IR: instruction register AC: accumulator CF: carry flag IA, IB: index registers (13 bit) PC: program counter MD IA IB ABUS PC BBUS ALU ALU OUTPUT Instruction format: OBUS Op code Addr Mode (3) (2) Address (13) Functionality: 2's complement add, subtract, multiply, and divide, and, or, not jumps (conditional and unconditional), simple subroutine call and return Interrupts I/O