Chapter 2 Instructions Language of the Computer The repertoire of instructions of a computer Different computers have different instruction sets But with many aspects in common Early computers had very simple instruction sets 2 1 Introduction Instruction Set Simplified implementation Many modern computers also have simple instruction sets Chapter 2 Instructions Language of the Computer 2 Key ISA Decisions Operations how many which ones length Operands how many location types how to specify destination operand operation a b c source operands Instruction format size how many formats Reinman CSM151B 3 3 Main ISA Classes CISC Complex Instruction Set Computers Digital s VAX 1977 and Intel s x86 1978 large of instructions many specialized complex instructions RISC Reduced Instruction Set Computers almost all machines of 80 s and 90 s are RISC MIPS PowerPC DEC Alpha IA64 relatively fewer instructions enable pipelining and parallelism Reinman CSM151B 3 4 The MIPS Instruction Set Used as the example throughout the book Stanford MIPS commercialized by MIPS Technologies www mips com Large share of embedded core market Applications in consumer electronics network storage equipment cameras printers Typical of many modern ISAs See MIPS Reference Data tear out card and Appendixes B and E Chapter 2 Instructions Language of the Computer 5 Add and subtract three operands Two sources and one destination add a b c a gets b c All arithmetic operations have this form Design Principle 1 Simplicity favours regularity 2 2 Operations of the Computer Hardware Arithmetic Operations Regularity makes implementation simpler Simplicity enables higher performance at lower cost Chapter 2 Instructions Language of the Computer 6 Arithmetic Example C code f g h i j Compiled MIPS code add t0 g h add t1 i j sub f t0 t1 temp t0 g h temp t1 i j f t0 t1 Chapter 2 Instructions Language of the Computer 7 Arithmetic instructions use register operands MIPS has a 32 32 bit register file Assembler names Use for frequently accessed data Numbered 0 to 31 32 bit data called a word t0 t1 t9 for temporary values s0 s1 s7 for saved variables 2 3 Operands of the Computer Hardware Register Operands Design Principle 2 Smaller is faster c f main memory millions of locations Chapter 2 Instructions Language of the Computer 8 Register Operand Example C code f g h i j f j in s0 s4 Compiled MIPS code add t0 s1 s2 add t1 s3 s4 sub s0 t0 t1 Chapter 2 Instructions Language of the Computer 9 Memory Operands Main memory used for composite data To apply arithmetic operations Each address identifies an 8 bit byte Words are aligned in memory Load values from memory into registers Store result from register to memory Memory is byte addressed Arrays structures dynamic data Address must be a multiple of 4 MIPS is Big Endian Most significant byte at least address of a word c f Little Endian least significant byte at least address Chapter 2 Instructions Language of the Computer 10 Memory Operand Example 1 C code g h A 8 g in s1 h in s2 base address of A in s3 Compiled MIPS code Index 8 requires offset of 32 4 bytes per word lw t0 32 s3 add s1 s2 t0 offset load word base register Chapter 2 Instructions Language of the Computer 11 Memory Operand Example 2 C code A 12 h A 8 h in s2 base address of A in s3 Compiled MIPS code Index 8 requires offset of 32 lw t0 32 s3 load word add t0 s2 t0 sw t0 48 s3 store word Chapter 2 Instructions Language of the Computer 12 Registers vs Memory Registers are faster to access than memory Operating on memory data requires loads and stores More instructions to be executed Compiler must use registers for variables as much as possible Only spill to memory for less frequently used variables Register optimization is important Chapter 2 Instructions Language of the Computer 13 Chapter 2 Instructions Language of the Computer Immediate Operands Constant data specified in an instruction addi s3 s3 4 No subtract immediate instruction Just use a negative constant addi s2 s1 1 Design Principle 3 Make the common case fast Small constants are common Immediate operand avoids a load instruction Chapter 2 Instructions Language of the Computer 2 The Constant Zero MIPS register 0 zero is the constant 0 Cannot be overwritten Useful for common operations E g move between registers add t2 s1 zero Chapter 2 Instructions Language of the Computer 3 Given an n bit number n 1 x x n 1 2 x1 2 x 0 2 1 0 Range 0 to 2n 1 Example x n 2 2 n 2 2 4 Signed and Unsigned Numbers Unsigned Binary Integers 0000 0000 0000 0000 0000 0000 0000 10112 0 1 23 0 22 1 21 1 20 0 8 0 2 1 1110 Using 32 bits 0 to 4 294 967 295 Chapter 2 Instructions Language of the Computer 4 2s Complement Signed Integers Given an n bit number x x n 1 2 x n 2 2 n 2 x1 2 x 0 2 1 0 Range 2n 1 to 2n 1 1 Example n 1 1111 1111 1111 1111 1111 1111 1111 11002 1 231 1 230 1 22 0 21 0 20 2 147 483 648 2 147 483 644 410 Using 32 bits 2 147 483 648 to 2 147 483 647 Chapter 2 Instructions Language of the Computer 5 2s Complement Signed Integers Bit 31 is sign bit 1 for negative numbers 0 for non negative numbers 2n 1 can t be represented Non negative numbers have the same unsigned and 2s complement representation Some specific numbers 0 0000 0000 0000 1 1111 1111 1111 Most negative 1000 0000 0000 Most positive 0111 1111 1111 Chapter 2 Instructions Language of the Computer 6 Signed Negation Complement and add 1 Complement means 1 0 0 1 x x 1111 1112 1 x 1 x Example negate 2 2 0000 0000 00102 2 1111 1111 11012 1 1111 1111 11102 Chapter 2 Instructions Language of the Computer 7 Sign Extension Representing a number using more bits In MIPS instruction set addi extend immediate value lb lh extend loaded byte halfword beq bne extend the displacement Replicate the sign bit to the left Preserve the numeric value c f unsigned values extend with 0s Examples 8 bit to 16 bit 2 0000 0010 0000 0000 0000 0010 2 1111 1110 1111 1111 1111 1110 Chapter 2 Instructions Language of the Computer 8 Chapter 2 Instructions Language of the Computer Instructions are encoded in binary MIPS instructions Called machine code Encoded as 32 bit instruction words Small number of formats encoding operation code opcode register numbers Regularity Register numbers t0 t7 are reg s 8 15 t8 t9 are reg s 24 25 s0 s7 are reg s 16 23 2 5 Representing Instructions in the Computer Representing Instructions Chapter 2 Instructions Language of the Computer 2 MIPS R format Instructions op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
View Full Document