430 likes | 957 Views
Instruction Set Design. CE 140 A1/A2 30 June 2003. Six-Level Computer. PROBLEM-ORIENTED LANGUAGE LEVEL. Level 5. ASSEMBLY LANGUAGE LEVEL. Level 4. OPERATING SYSTEM MACHINE LEVEL. Level 3. IS DESIGN. INSTRUCTION SET ARCHITECTURE LEVEL. Level 2. MICROARCHITECTURE LEVEL. Level 1.
E N D
Instruction Set Design CE 140 A1/A2 30 June 2003
Six-Level Computer PROBLEM-ORIENTED LANGUAGE LEVEL Level 5 ASSEMBLY LANGUAGE LEVEL Level 4 OPERATING SYSTEM MACHINE LEVEL Level 3 IS DESIGN INSTRUCTION SET ARCHITECTURE LEVEL Level 2 MICROARCHITECTURE LEVEL Level 1 DIGITAL LOGIC LEVEL Level 0
Instruction Set Architecture • Interface between hardware and software (compilers) • High-level languages are translated to ISA level • Hardware is built to execute ISA-level programs directly
ISA Design Process • Architect will talk to compiler writers and hardware engineers • Is it cost-effective? • Can it be used? • Output: a perfectly optimized ISA that satisfies both compiler writers and hardware engineers NOT ALWAYS
More ISA Design Requirements • “Is it compatible with the predecessor?” • “Can I run my old operating system on it?” • “Will it run all my existing application programs unmodified?” • Constraint: Backward compatibility
What makes a good ISA? • Hardware engineers: Instruction set that can be impemented efficiently in current and future technologies • Compiler writers: Clean target for compiled code
ISA Level • How machine appears to machine language programmer • Memory Model • Registers • Data types • Instructions
Memory Model • Big Endian or Little Endian • Alignment requirements • Address space
Registers • Special-purpose registers • PC, SP • General-purpose registers • Variables, results, temporary storage • Fast access • Flags register or Program Status Word (PSW)
Instructions • LOAD, STORE, MOVE • Arithmetic instructions • Logical instructions • Boolean instructions • Comparing, branching
Data types • Hardware supported data types • Integers (signed and unsigned) • Floating-point numbers • BCD • Strings • Boolean values
Instruction Format • Instruction • Opcode • Addressing mode • Operands
Classifying ISAs • C = A + B
Design Critera for Instruction Formats • Size • Can accommodate all operations • Number of bits in the address field
Expanding Opcode • 16-bit instructions
Addressing Modes • Immediate Addressing • Direct Addressing • Register Addressing • Register Indirect Addressing • Indexed Addressing • Based-Index Addressing
Immediate Addressing • Operand is directly specified • Immediately fetched from memory with instruction • Can only specify constant • Range limited by size of field • Example: MOV DL, 21 • Stores the value 21 into DL
Direct Addressing • Operand is specified by giving its address • Constant memory location • Can be used for global variables • Example: MOV AL, [0200] • Stores the byte located at offset 0200 into AL
Register Addressing • Operand is specified by giving the register it is stored in • Examples: • MOV AX, BX
Register Indirect Addressing • Operand is specified by the register that contains operand’s address • Pointer • Example: MOV AX, [BX] • Store the word located at the address specified in BX into AX
Indexed Addressing • Useful in accessing elements of a data structure • Example: • MOV CX, 5 • ST: ADD AX, 0200[SI] • ADD SI, 2 • LOOP ST
Instruction Types • Data Movement Instructions • Dyadic Operations • Monadic Operations • Comparison and Conditional Branches • Procedure Call Instructions • Stack Instructions • Loop Control • Input/Output
Data Movement Instructions • Movement = Copy • Examples • MOV AX, BX • MOV AX, [0200] • MOV [0200], AX
Dyadic Operations • Combine two operands to produce a result • Arithmetic operations • Logic operations • Examples: • ADD AX, BX • AND AX, BX
Monadic Operations • Single operand • Arithmetic and Logic operations • Examples: • Shift - SAL • Rotate - ROL
Comparison and Conditional Branches • Allow testing data and alter the sequence of instructions based on the result • Branching • Uses flags register • Examples: • CMP – compare • JE – jump if equal
Stack Instructions • Allow stack operations • Stack – LIFO (Last In, First Out) • Examples • PUSH AX • PUSH BX • POP BX • POP AX
Procedure Call Instructions • Procedure/subroutine – group of instructions that can be called from several places in the program • Return address must be stored • Examples: • CALL • RET
Loop Control • Execute a group of instructions a fixed number of times • Involves a counter • Examples: • LOOP 0100
Input/Output • Access input and output ports • Examples: • IN AX, 378 • OUT 378, AX
Pentium II ISA • IA-32 • Full support for 8086 and 8088 programs
Pentium II Operating Modes • Real Mode – operates like a simple 8086/8088 • Virtual 8086 Mode – 8086/8088 programs run in an isolated environment • Protected Mode – larger address space, four privilege levels
Pentium II Addressing Modes • Immediate • Direct • Register • Register Indirect • Indexed
Pentium II ISA Issues • Few, different registers • Addressing modes are highly irregular • Ancient ISA Current technology suited for RISC ISA’s • Next Generation: • IA-64 - Intel’s 64-bit platform – not compatible with IA-32 • AMD64 – AMD’s 64-bit platform – compatible with x86