Computer architecture
400 likes | 661 Vues
Computer architecture. Lecture 11: Reduced Instruction Set Computers Piotr Bilski. Characteristics of the RISC architecture. Processor contains large number of the general purpose registers RISC compilers use procedures for the register usage optimization
Computer architecture
E N D
Presentation Transcript
Computer architecture Lecture 11: Reduced Instruction Set Computers Piotr Bilski
Characteristics of the RISC architecture • Processor contains large number of the general purpose registers • RISC compilers use procedures for the register usage optimization • Number of the instructions is small in comparison with CISC architecture • Instructions have basic structure • Instruction pipeline is optimized
RISC and the programming languages • High-level language – alleviations for the programmer, multiple hidden details • Necessity to translate high-level language into the machine language • Small high-level programs large machine programs • Increase of the effectiveness requires construction of the complex compilers
Characteristics of the executed instructions • Instruction types – instructions executed by the processor • Types and number of the instruction arguments • Instruction scheduling – pipelining
Analysis of the frequency of the executed instructions (cont.)
Register tables • Requirement for the assignment operations optimization – registers • Local variables should be stored in one register block • Problem of passing arguments to funcions and returning variables • Nested function calls and the number of the registers
Register windows • Functions use small number of the local variables, so every function requires small number of registers • Every function has different set of the registers assigned (so-called window) • Neighbor windows overlap, allowing to pass arguments between functions
Parameter registers Parameter registers Local registers Local registers Temporary registers Temporary registers Register windows - organization level I Call/return level I+1
Window registers - example • Current window pointer (CWP) • Saved window pointer (SWP)
Global variables • Handled by the global registers set • Problem of the global register addressing in the window – uniform addressing mode • Decision about assignment of the variables to the register depends on the compiler
Registers table and cache (cont.) a) Instruction Data R Row number Decoder b) Instruction A Data Pointers Data comparison
Register olptimization using compiler • For the small number of registers, decision must be made, which variables should be assigned to them • An infinite number of the symbolic registers is created, which are further mapped onto the real registers • Assignment is the graph coloring problem
Graph coloring example 2 3 • Vertices are symbolic registers • Colors are real registers 1 4 Register interference 5 6
Problems of the compiler design • Does smaller program mean smaller machine code? • Are programs containing more complex procedures faster?
RISC instruction characteristics • One instruction executed during the cycle • Data transfer operations „from register to register” • Only simple addressing modes • Simple instruction formats
RISC machine instruction • One instruction during one machine cycle • Machine cycle is the time required to fetch two arguments from registers, performing ALU operation and storing result into the register • no microcode, instruction executed by the hardware!
Data transfer register-register • All data should be in registers • Exceptions are memory references (LOAD, STORE) • Smaller instruction list, simpler control unit 8 16 16 16 8 4 4 4 Instruction size = 168 B Instruction size= 60 B
Simple instruction formats • All instructions have constant size! • Simple instructions are easier to optimize during compilation • ALU for the simpler instructions is simpler and faster • Pipelining is more effective • Easier interrupt handling • The most frequently executed instructions can be implemented in the hardware
Pipelining • Register-to-register processing • Instruction fetching (F) • Instruction execution (E) • Loading and writing into memory • Instruction fetching (F) • Instruction execution (E) • Memory operation (M)
F E M F E M F E M F E M F E M F E M F E M Sequential operation and pipelining
F E M F E M F E M F E F E1 E2 M F E1 E2 M Pipelining • 2-stage – one memory access • 3-stage – two memory accesses • 4-stage F E M E M F
F E M F E M F F E F E Pipelining with branch • Program: • LOAD X,A • ADD 1,A • JUMP 105 • ADD A,B • SUB C,B • STORE A,Z 1 2 3 4 5 6 7 8
F E M F E M F E F E F E Insertion of the empty instruction • Program: • LOAD X,A • ADD 1,A • JUMP 106 • NOOP • 106 STORE A,Z 1 2 3 4 5 6 7 8
F E M F E M F E F E Reversed instruction sequence • Program: • LOAD X,A • JUMP 105 • ADD 1,A • 105 STORE A,Z 1 2 3 4 5 6 7 8
RISC example – MIPS R4000 • 64-bit architecture processor (with such registers and ALU bus) • In the R4000 there is one processor and one Memory Management Unit – MMU • 32 general purpose registers, up to 128 kB of the cache memory (half for the instructions and data) • Constant instruction format – 4 bytes • No conditional codes • Three instruction formats
MIPS R4000 instruction formats 6 5 5 16 Operation with the immediate operand branch Register addressing Operation rs rt Immediate 6 26 Operation Target 6 5 5 5 5 6 Operation rs rt rd offset function
RISC example – Sun SPARC • processor uses register windows (2 to 32 windows 24 registers each) • Eight global registers (0-7) • Output registers (called with the called procedure, 8-15) • Input registers (used with the calling procedure, 24-31) • Local registers, labelled with 16-23 • All instructions 32-bit long
SPARC instruction formats 2 30 call branch SETHI Floating point format Generic format Op relative shifting of the program counter 2 1 4 3 22 Op a cond. op2 rel. shift. of the progr. Count. 2 5 3 22 Op Target op2 Immediate constant 2 5 6 5 9 5 Op Target Op3 Src-1 FP-op Src-2 2 5 6 5 1 8 5 Op Target Op3 Src-1 0 dism. Src-2 2 5 6 5 1 13 Op Target Op3 Src-1 1 Imm. constant