Compiler Architecture

Size: px
Start display at page:

Download "Compiler Architecture"

Transcription

1 Code Generation 1

2 Compiler Architecture Source language Scanner (lexical analysis) Tokens Parser (syntax analysis) Syntactic structure Semantic Analysis (IC generator) Intermediate Language Code Optimizer Code Generator Target language Symbol Table 2

3 Code Generation The code generation problem is the task of mapping intermediate code to machine code Machine Dependent Optimization Requirements: Correctness Efficiency 3

4 Issues Input language: intermediate code (optimized or not) Target architecture: must be well understood Interplay between Instruction Selection Register Allocation Instruction Scheduling 4

5 Example Target: MIPS Assembly Language General Characteristics Byte-addressable with 4-byte words N general-purpose registers Three-address instructions: op destination, source1, source2 0 zero constant 0 1 at reserved for assembler 2 v0 expression evaluation & 3 v1 function results 4 a0 arguments 5 a1 6 a2 7 a3 8 t0 temporary: caller saves... (callee can clobber) 15 t7 16 s0 callee saves... (caller can clobber) 23 s7 24 t8 temporary (cont d) 25 t9 26 k0 reserved for OS kernel 27 k1 28 gp Pointer to global area 29 sp Stack pointer 30 fp frame pointer 31 ra Return Address (HW) 5

6 Instruction Selection There may be a large number of candidate machine instructions for a given IC instruction each has own cost and constraints cost may be influenced by surrounding context different architectures have different needs that must be considered: speed, power constraints, space 6

7 Instruction Scheduling Choosing the order of instructions to best utilize resources Architecture RISC (pipeline) Vector processing Superscalar and VLIW Memory hierarchy Ordering to decrease memory fetching Latency tolerance doing something when data does have to be fetched 7

8 Register Allocation How to best use the bounded number of registers Complications: Special purpose registers Operators requiring multiple registers 8

9 Naive Approach to Code Generation Simple code generation algorithm: Define a target code sequence for each intermediate code statement type Why is this not sufficient? 9

10 Mapping from Intermediate Code Simple code generation algorithm: Define a target code sequence to each intermediate code statement type Intermediate becomes Intermediate becomes a := b lw $t0,b a := b + c lw $t0,b sw $t0,a lw $,c add $t0,$t0,$ sw $t0,a a := b[c] la $t0,b lw $,c a[b] := c la $t0,a lw $,b add $t0,$t0,$ lw $t0,($t0) add $t0,$t0,$ lw $,c sw $t0,a sw $,($t0) 10

11 Mapping from Intermediate Code Consider the C statement: a[i] = d[c[k]]; := 4 * k t2 := c[] t3 := 4 * t2 lw $t0,k sll $t0,$t0,2 sw $t0, la $t0,c lw $, add $t0,$t0,$ lw $t0,($t0) sw $t0,t2 lw $t0,t2 sll $t0,$t0,2 sw $t0,t3 t4 := d[t3] t5 := 4 * i a[t5] := t4 la $t0,d lw $,t3 add $t0,$t0,$ lw $t0,($t0) sw $t0,t4 lw $t0,i sll $t0,$t0,2 sw $t0,t5 la $t0,a lw $,t5 add $t0,$t0,$ lw $,t4 sw $,($t0) We use 24 instructions (18 load/store + 6 arithmetic) and allocate space for five temporaries (but only use two registers). 11

12 Problems with this approach Local decisions do not produce good code Does not take temporary variables into account Get rid of the temporaries (reduce load/store): a[i] = d[c[k]]; la $t0,c lw $,k sll $,$,2 add $t0,$t0,$ # address of c[k] lw $t0,($t0) la $,d sll $t0,$t0,2 add $,$,$t0 # address of d[c[k]] lw $,($) la $t0,a lw $t2,i sll $t2,$t2,2 add $t0,$t0,$t2 # address of a[i] sw $,($t0) 12

13 How to Improve Quality Need a way to generate machine code based on past and future use of the data Analyze the code Use results of analysis 13

14 Representing Intermediate Code: Control Flow Graph - CFG CFG = < V, E, Entry >, where V = vertices or nodes, representing an instruction or basic block (group of statements). E = (V x V) edges, potential flow of control Entry is an element of V, the unique program entry

15 Basic Blocks A basic block is a sequence of consecutive statements with single entry/single exit: Flow of control only enters at the beginning Flow of control only leaves at the end Variants: single entry/multiple exit, multiple entry/single exit 15

16 Generating CFGs from Intermediate Code Partition intermediate code into basic blocks Add edges corresponding to control flow between blocks Unconditional goto Conditional goto multiple edges No goto at end control passes to first statement of next block 16

17 Partitioning into Basic Blocks Input: A sequence of intermediate code statements Determine the leaders, the first statements of basic blocks The first statement in the sequence is a leader Any statement that is the target of a goto (conditional or unconditional) is a leader Any statement immediately following a goto (conditional or unconditional) is a leader For each leader, its basic block is the leader and all statements up to, but not including, the next leader or the end of the program 17

18 Example Code (1) i := m 1 (16) t7 := 4 * i (2) j := n (17) t8 := 4 * j (3) := 4 * n (18) t9 := a[t8] (4) v := a[] (19) a[t7] := t9 (5) i := i + 1 (20) 0 := 4 * j (6) t2 := 4 * i (21) a[0] := x (7) t3 := a[t2] (22) goto (5) (8) if t3 < v goto (5) (23) 1 := 4 * i (9) j := j - 1 (24) x := a[1] (10) t4 := 4 * j (25) 2 := 4 * i (11) t5 := a[t4] (26) 3 := 4 * n (12) If t5 > v goto (9) (27) 4 := a[3] (13) if i >= j goto (23) (28) a[2] := 4 (14) t6 := 4*i (29) 5 := 4 * n (15) x := a[t6] (30) a[5] := x 18

19 Block Leaders (1) i := m 1 (16) t7 := 4 * i (2) j := n (17) t8 := 4 * j (3) := 4 * n (18) t9 := a[t8] (4) v := a[] (19) a[t7] := t9 (5) i := i + 1 (20) 0 := 4 * j (6) t2 := 4 * i (21) a[0] := x (7) t3 := a[t2] (22) goto (5) (8) if t3 < v goto (5) (23) 1 := 4 * i (9) j := j - 1 (24) x := a[1] (10) t4 := 4 * j (25) 2 := 4 * i (11) t5 := a[t4] (26) 3 := 4 * n (12) If t5 > v goto (9) (27) 4 := a[3] (13) if i >= j goto (23) (28) a[2] := 4 (14) t6 := 4*i (29) 5 := 4 * n (15) x := a[t6] (30) a[5] := x 19

20 Flow Graph (1) i := m 1 (16) t7 := 4 * i (2) j := n (17) t8 := 4 * j (3) := 4 * n (18) t9 := a[t8] (4) v := a[] (19) a[t7] := t9 (5) i := i + 1 (20) 0 := 4 * j (6) t2 := 4 * i (21) a[0] := x (7) t3 := a[t2] (22) goto (5) (8) if t3 < v goto (5) (23) 1 := 4 * i (9) j := j - 1 (24) x := a[1] (10) t4 := 4 * j (25) 2 := 4 * i (11) t5 := a[t4] (26) 3 := 4 * n (12) If t5 > v goto (9) (27) 4 := a[3] (13) if i >= j goto (23) (28) a[2] := 4 (14) t6 := 4*i (29) 5 := 4 * n (15) x := a[t6] (30) a[5] := x 20

21 Instruction Scheduling Choosing the order of instructions to best utilize resources (CPU, registers, ) Consider RISC pipeline architecture: IF ID IF EX ID IF MA EX ID WB MA EX WB MA WB IF Instruction Fetch ID Instruction Decode EX Execute MA Memory access WB Write back time 21

22 Hazards 1. Structural hazards machine resources limit overlap 2. Data hazards output of instruction needed by later instruction 3. Control hazards branching Pipeline stalls! 22

23 Data Hazards Memory latency: lw R1,0(R2) IF ID EX MA WB add R3,R1,R4 IF ID stall EX MA WB Can t add until register R1 is loaded. 23

24 Structural Hazards Instruction latency: addf R3,R1,R2 IF ID EX EX MA WB addf R3,R3,R4 IF ID stall EX EX MA WB Assumes floating point ops take 2 execute cycles 24

25 Dealing with Data Hazards Typical solution is to re-order statements To do this without changing the outcome, need to understand the relationship (dependences) between statements addf R3,R1,R2 IF ID EX EX MA WB add R5,R5,R6 IF ID EX MA WB addf R3,R3,R4 IF ID EX EX MA WB 25

26 Instruction Scheduling Many operations have non-zero latencies Execution time is order-dependent Assumed latencies (conservative): Operation Cycles load 3 store 3 loadi 1 add 1 mult 2 fadd 1 fmult 2 shift 1 branch 0 to 8 26

27 w w * 2 * x * y * z Schedule 1 1 lw $t0,w 4 add $t0,$t0,$t0 5 lw $,x 8 mult $t0,$t0,$ 9 lw $,y 12 mult $t0,$t0,$ 13 lw $,z 16 mult $t0,$t0,$ 18 sw $t0,w Schedule 2 1 lw $t0,w 2 lw $,x 3 lw $t2,y 4 add $t0,$t0,$t0 5 mult $t0,$t0,$ 6 lw $,z 7 mult $t0,$t0,$t2 9 mult $t0,$t0,$ 11 sw $t0,w done at time 21 done at time 14 Issue time 27

28 Control Hazards Branch instruction IF ID EX MA WB IF stall stall IF ID EX MA WB Stall if branch is made 28

29 Branch Scheduling Problem: Branches often take some number of cycles to complete, creating delay slots Can be a delay between a compare b and its associated branch Even unconditional branches have delay slots A compiler will try to fill these delay slots with valid instructions (rather than nop) 29

30 Example Assume loads take 2 cycles and branches have a delay slot 7 cycles Can look at the dependencies between the statements and move a statement into the delay slot Instruction lw $t2,4($) lw $t3,8($) add $t4, $t2, $t3 add $t5, $t2,1 b L1 nop 1 2 Start Time

31 Example 5 cycles filling delay slots Instruction lw $t2,4($) lw $t3,8($) add $t5, $t2,1 b L1 add $t4, $t2, $t3 Start Time

32 Register Allocation How to best use the bounded number of registers. Reducing load/store operations What are best values to keep in registers? When can we free registers? Complications: special purpose registers operators requiring multiple registers 32

33 Register Allocation Algorithms Local (basic block level): Basic - using liveness information Register Allocation using graph coloring Global (CFG) Need to use global liveness information 33

34 Basic Code Generation Deal with each basic block individually Compute liveness information for the block Using liveness information, generate code that uses registers as well as possible At end, generate code that saves any live values left in registers 34

35 Concept: Variable Liveness For some statement s, variable x is live if there is a statement t that uses x there is a path in the CFG from s to t there is no assignment to x on some path from s to t A variable is live at a given point in the source code if it could be used before it is defined Liveness tells us whether we care about the value held by a variable 35

36 Example: When Is a Live? a := b + c := a * a a is live b := + a c := * b t2 := c + b a := t2 + t2 Assume a,b and c are used after this basic block 36

37 Example: When Is b Live? a := b + c := a * a b := + a c := * b t2 := c + b a := t2 + t2 Assume a,b and c are used after this basic block 37

38 Computing Live Status in Basic Blocks Input: A basic block Output: For each statement, set of variables live after the statement Initially all non-temporary variables go into live set (L) for i = last statement to first statement: For statement i: x := y op z 1. Attach L to statement i 2. Remove x from set L 3. Add y and z to set L 38

39 Example a := b + c := a * a b := + a c := * b t2 := c + b a := t2 + t2 live = {} live = {} live = {} live = {} live = {} live = {} live = {a,b,c} 39

40 Example Answers a := b + c := a * a b := + a c := * b t2 := c + b a := t2 + t2 live = {} live = {} live = {} live = {} live = {} live = {b,c,t2} live = {a,b,c} 40

41 Example Answers a := b + c := a * a b := + a c := * b t2 := c + b a := t2 + t2 live = {} live = {} live = {} live = {} live = {b,c} live = {b,c,t2} live = {a,b,c} 41

42 Example Answers a := b + c := a * a b := + a c := * b t2 := c + b a := t2 + t2 live = {} live = {} live = {} live = {b,} live = {b,c} live = {b,c,t2} live = {a,b,c} 42

43 Example Answers a := b + c := a * a b := + a c := * b t2 := c + b a := t2 + t2 live = {} live = {} live = {a,} live = {b,} live = {b,c} live = {b,c,t2} live = {a,b,c} 43

44 Example Answers a := b + c := a * a b := + a c := * b t2 := c + b a := t2 + t2 live = {} live = {a} live = {a,} live = {b,} live = {b,c} live = {b,c,t2} live = {a,b,c} 44

45 Example Answers a := b + c := a * a b := + a c := * b t2 := c + b a := t2 + t2 live = {b,c} live = {a} live = {a,} live = {b,} live = {b,c} live = {b,c,t2} live = {a,b,c} what does this mean? 45

46 Basic Code Generation Deal with each basic block individually Compute liveness information for the block Using liveness information, generate code that uses registers as well as possible At end, generate code that saves any live values left in registers 46

47 Basic Code Generation Idea: Deal with the instructions from beginning to end. For each instruction, Use registers whenever possible A non-live value in a register can be discarded, freeing that register Data Structures: Register descriptor - register status (empty, full) and contents (one or more "values") Address descriptor - the location (or locations) where the current value for a variable can be found (register, stack, memory) 47

48 Instruction type: x := y op z Choose R x, the register where the result (x) will be kept If y (or z) is the only variable in a register t and not live after the statement, choose R x = t Else if there is a free register t, choose R x = t Else must free up a register for R x Find R y. If y is not in a register, generate load into a free register (or R x ) Find R z. If z is not in a register, generate load into a free register (can use R x if not used by y) Generate: OP R x, R y, R z 48

49 Instruction type: x := y op z Update information about the current location of x Update information for the register holding x If y and/or z are not live after this instruction, update register and address descriptors accordingly 49

50 Example Code a := b + c := a * a b := + a c := * b t2 := c + b a := t2 + t2 live = {b,c} live = {a} live = {a,} live = {b,} live = {b,c} live = {b,c,t2} live = {a,b,c} 50

51 Code Generation Example Initially Three Registers: ( -; -; -) all empty Current values: (a;b;c;;t2) = (m;m;m;-;-) Instruction 1: a := b + c, Live = {a} R a = $t0, R b = $t0, R c = $ lw $t0,b lw $,c add $t0,$t0,$ Registers: (a;-;-) Don t need to keep track of b or c since aren t live. current values: ($t0;-;-;-;-) 51

52 Code Generation Example Instruction 2: := a * a, Live = {a,} R = $ (since a is live after instruction) mul $,$t0,$t0 Registers: (a;;-) current values: ($t0;-;-;$;-) Instruction 3: b := + a, Live = {b,} Since a is not live after instruction, R b = $t0 add $t0,$,$t0 Registers: (b;;-) current values: (-;$t0;-;$;-) 52

53 Code Generation Example Instruction 4: c := * b, Live = {b,c} Since is not live after instruction, R c = $ mul $,$,$t0 Registers: (b;c;-) current values: (-;$t0;$;-;-) Instruction 5: t2 := c + b, Live = {b,c,t2} R t2 = $t2 add $t2,$,$t0 Registers: (b;c;t2) current values: (-;$t0;$;-;$t2) 53

54 Code Generation Example Instruction 6: a := t2 + t2, Live = {a,b,c} R a = $t2 add $t2,$t2,$t2 Registers: (b;c;a) current values: ($t2;$t0;$;-;-) Since end of block, move live variables: sw $t2,a sw $t0,b sw $,c all registers available all live variables moved to memory 54

55 Generated code lw $t0,b lw $,c add $t0,$t0,$ mul $,$t0,$t0 add $t0,$,$t0 mul $,$,$t0 add $t2,$,$t0 add $t2,$t2,$t2 sw $t2,a sw $t0,b sw $,c a := b + c := a * a b := + a c := * b t2 := c + b a := t2 + t2 Cost = 16 How does this compare to naive approach? 55

56 Improving Efficiency Liveness information allows us to keep values in registers if they will be used later (efficiency) Why do we assume all variables are live at the end of blocks? Can we do better? Why do we need to save live variables at the end? We might have to reload them in the next block. 56

57 Register Allocation with Graph Coloring Local register allocation - graph coloring problem Uses liveness information Allocate K registers where each register is associated with one of the K colors 57

58 Graph Coloring The coloring of a graph G = (V,E) is a mapping C: V S, where S is a finite set of colors, such that if edge vw is in E, C(v) <> C(w) Problem is NP (for more than 2 colors) no polynomial time solution Fortunately there are approximation algorithms 58

59 Coloring a Graph with K Colors K = 3 K = 4 No color for this node 59

60 Register Allocation and Graph K-Coloring K = number of available registers G = (V,E) where Vertex set V = {V s s is a program variable} Edge V s V t in E if s and t can be live at the same time G is an interference graph 60

61 Algorithm: K Registers 1. Compute liveness information for the basic block. Assume, that every live variable will be stored in a register. 2. Create interference graph G - one node for each variable, an edge connecting any two variables alive simultaneously 61

62 Example Interference Graph a := b + c := a * a b := + a c := * b t2 := c + b a := t2 + t2 {b,c} {a} {,a} {b,} {b,c} {b,c,t2} {a,b,c} a b c t2 62

63 Algorithm: K Registers 3. Simplify - For any node m with fewer than K neighbors, remove it from the graph and push it onto a stack. If G - m can be colored with K colors, so can G. If we reduce the entire graph, goto step Spill - If we get to the point where we are left with only nodes with degree >= K, mark some node for potential spilling. Remove and push onto stack. Back to step 3. 63

64 Choosing a Spill Node Potential criteria: Random Most neighbors Longest live range (in code) with or without taking the access pattern into consideration 64

65 Algorithm: K Registers 5. Assign colors - Starting with empty graph, rebuild graph by popping elements off the stack, putting them back into the graph and assigning them colors different from neighbors. Potential spill nodes may or may not be colorable. Process may require iterations and rewriting of some of the code to create more temporaries 65

66 Rewriting the Code Want to be able to remove some edges in the interference graph write variable to memory earlier compute/read in variable later Not all live variables will be stored in registers all the time. 66

67 Back to example a := b + c {b,c} := a * a {a} b := + a {,a} c := * b {b,} t2 := c + b {b,c} a := t2 + t2 {b,c,t2} {a,b,c} a b c t2 67

68 Example, k = 3 Assume k = 3 a c b t2 Remove Interference graph 68

69 Example Assume k = 3 a c b t2 a Remove a 69

70 Example Assume k = 3 a c a b Remove b b t2 70

71 Example Assume k = 3 a c c a b Remove c b t2 71

72 Example Assume k = 3 a c t2 c a b Remove t2 b t2 72

73 Rebuild the graph Assume k = 3 c a b t2 73

74 Example Assume k = 3 c a b t2 74

75 Example Assume k = 3 c b t2 a 75

76 Example Assume k = 3 a c b t2 76

77 Example Assume k = 3 a t0 a c b c t2 t2 b t2 t2 t0 77

78 Back to example a := b + c := a * a b := + a c := * b t2 := c + b a := t2 + t2 a b c t2 t0 t2 t2 t0 lw $,b lw $t2,c add $t0,$,$t2 mul $t2,$t0,$t0 add $,$t2,$t0 mul $t2,$t2,$ add $t0,$t2,$ add $t0,$t0,$t0 sw $t0,a sw $,b sw $t2,c 78

79 Generated code: Basic Generated Code: Coloring lw $t0,b lw $,c add $t0,$t0,$ mul $,$t0,$t0 add $t0,$,$t0 mul $,$,$t0 add $t2,$,$t0 add $t2,$t2,$t2 sw $t2,a sw $t0,b sw $,c lw $,b lw $t2,c add $t0,$,$t2 mul $t2,$t0,$t0 add $,$t2,$t0 mul $t2,$t2,$ add $t0,$t2,$ add $t0,$t0,$t0 sw $t0,a sw $,b sw $t2,c 79

80 Example, k = 2 Assume k = 2 a c b t2 b* Remove b as spill 80

81 Example Assume k = 2 a c b t2 b* Remove 81

82 Example Assume k = 2 a c a b* Remove a b t2 82

83 Example Assume k = 2 a c c a b* Remove c b t2 83

84 Example Assume k = 2 a c t2 c a b* Remove t2 b t2 84

85 Example Assume k = 2 a c Can flush b out to memory, creating a smaller window b??? t2 85

86 After Spilling b: a := b + c := a * a b := + a {b,c} {a} {,a} a c c := * b {b,} b to memory b t2 t2 := c + b {b,c} a := t2 + t2 {c,t2} {a,c} 86

87 After Spilling b: a c b t2 t2 87

88 After Spilling b: a c b t2 c* t2 Have to choose c as a potential spill node. 88

89 After Spilling b: a c b c* t2 b t2 89

90 After Spilling b: a c a b c* t2 b t2 90

91 After Spilling b: a c a b c* t2 b t2 91

92 Now Rebuild: a c a b c* t2 b t2 92

93 Now Rebuild: a c b c* t2 b t2 93

94 Now Rebuild: a c b t2 c* t2 94

95 Now Rebuild: a c b t2 t2 Fortunately, there is a color for c 95

96 Now Rebuild: a b c t2 t0 t0 t0 a c b t2 The graph is 2-colorable now 96

97 The Code a := b + c := a * a b := + a c := * b b to memory t2 := c + b a := t2 + t2 a b c t2 t0 t0 t0 lw $t0,b lw $,c add $t0,$t0,$ mul $,$t0,$t0 add $t0,$,$t0 mul $,$,$t0 sw $t0,b add $t0,$,$t0 add $t0,$t0,$t0 sw $t0,a sw $,c 97

Code Generation. CS 540 George Mason University

Code Generation. CS 540 George Mason University Code Generation CS 540 George Mason University Compiler Architecture Intermediate Language Intermediate Language Source language Scanner (lexical analysis) tokens Parser (syntax analysis) Syntactic structure

More information

Rui Wang, Assistant professor Dept. of Information and Communication Tongji University.

Rui Wang, Assistant professor Dept. of Information and Communication Tongji University. Instructions: ti Language of the Computer Rui Wang, Assistant professor Dept. of Information and Communication Tongji University it Email: ruiwang@tongji.edu.cn Computer Hierarchy Levels Language understood

More information

Processor Architecture. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

Processor Architecture. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University Processor Architecture Jin-Soo Kim (jinsookim@skku.edu) Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu Moore s Law Gordon Moore @ Intel (1965) 2 Computer Architecture Trends (1)

More information

Instruction Set Architecture

Instruction Set Architecture Computer Architecture Instruction Set Architecture Lynn Choi Korea University Machine Language Programming language High-level programming languages Procedural languages: C, PASCAL, FORTRAN Object-oriented

More information

Processor Architecture

Processor Architecture Processor Architecture Jinkyu Jeong (jinkyu@skku.edu) Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu SSE2030: Introduction to Computer Systems, Spring 2018, Jinkyu Jeong (jinkyu@skku.edu)

More information

Chapter 2. Instructions:

Chapter 2. Instructions: Chapter 2 1 Instructions: Language of the Machine More primitive than higher level languages e.g., no sophisticated control flow Very restrictive e.g., MIPS Arithmetic Instructions We ll be working with

More information

Do-While Example. In C++ In assembly language. do { z--; while (a == b); z = b; loop: addi $s2, $s2, -1 beq $s0, $s1, loop or $s2, $s1, $zero

Do-While Example. In C++ In assembly language. do { z--; while (a == b); z = b; loop: addi $s2, $s2, -1 beq $s0, $s1, loop or $s2, $s1, $zero Do-While Example In C++ do { z--; while (a == b); z = b; In assembly language loop: addi $s2, $s2, -1 beq $s0, $s1, loop or $s2, $s1, $zero 25 Comparisons Set on less than (slt) compares its source registers

More information

Computer Organization MIPS Architecture. Department of Computer Science Missouri University of Science & Technology

Computer Organization MIPS Architecture. Department of Computer Science Missouri University of Science & Technology Computer Organization MIPS Architecture Department of Computer Science Missouri University of Science & Technology hurson@mst.edu Computer Organization Note, this unit will be covered in three lectures.

More information

LECTURE 10. Pipelining: Advanced ILP

LECTURE 10. Pipelining: Advanced ILP LECTURE 10 Pipelining: Advanced ILP EXCEPTIONS An exception, or interrupt, is an event other than regular transfers of control (branches, jumps, calls, returns) that changes the normal flow of instruction

More information

Introduction to MIPS Processor

Introduction to MIPS Processor Introduction to MIPS Processor The processor we will be considering in this tutorial is the MIPS processor. The MIPS processor, designed in 1984 by researchers at Stanford University, is a RISC (Reduced

More information

Computer Architecture. The Language of the Machine

Computer Architecture. The Language of the Machine Computer Architecture The Language of the Machine Instruction Sets Basic ISA Classes, Addressing, Format Administrative Matters Operations, Branching, Calling conventions Break Organization All computers

More information

COMP 303 Computer Architecture Lecture 3. Comp 303 Computer Architecture

COMP 303 Computer Architecture Lecture 3. Comp 303 Computer Architecture COMP 303 Computer Architecture Lecture 3 Comp 303 Computer Architecture 1 Supporting procedures in computer hardware The execution of a procedure Place parameters in a place where the procedure can access

More information

Instruction Set Architecture part 1 (Introduction) Mehran Rezaei

Instruction Set Architecture part 1 (Introduction) Mehran Rezaei Instruction Set Architecture part 1 (Introduction) Mehran Rezaei Overview Last Lecture s Review Execution Cycle Levels of Computer Languages Stored Program Computer/Instruction Execution Cycle SPIM, a

More information

Instruction Set Architecture (Contd)

Instruction Set Architecture (Contd) Instruction Set Architecture (Contd) Lecture 3 (Chapter 2) EEC170 FQ 2005 Review: MIPS Architecture Good example of RISC processor: Reduced Instruction-Set Computer RISC really a misnomer: architecture

More information

Prof. Kavita Bala and Prof. Hakim Weatherspoon CS 3410, Spring 2014 Computer Science Cornell University. See P&H 2.8 and 2.12, and A.

Prof. Kavita Bala and Prof. Hakim Weatherspoon CS 3410, Spring 2014 Computer Science Cornell University. See P&H 2.8 and 2.12, and A. Prof. Kavita Bala and Prof. Hakim Weatherspoon CS 3410, Spring 2014 Computer Science Cornell University See P&H 2.8 and 2.12, and A.5 6 compute jump/branch targets memory PC +4 new pc Instruction Fetch

More information

Instructions: Assembly Language

Instructions: Assembly Language Chapter 2 Instructions: Assembly Language Reading: The corresponding chapter in the 2nd edition is Chapter 3, in the 3rd edition it is Chapter 2 and Appendix A and in the 4th edition it is Chapter 2 and

More information

CS 110 Computer Architecture Lecture 6: More MIPS, MIPS Functions

CS 110 Computer Architecture Lecture 6: More MIPS, MIPS Functions CS 110 Computer Architecture Lecture 6: More MIPS, MIPS Functions Instructor: Sören Schwertfeger http://shtech.org/courses/ca/ School of Information Science and Technology SIST ShanghaiTech University

More information

Quiz for Chapter 2 Instructions: Language of the Computer3.10

Quiz for Chapter 2 Instructions: Language of the Computer3.10 Date: 3.10 Not all questions are of equal difficulty. Please review the entire quiz first and then budget your time carefully. Name: Course: 1. [5 points] Prior to the early 1980s, machines were built

More information

Math 230 Assembly Programming (AKA Computer Organization) Spring MIPS Intro

Math 230 Assembly Programming (AKA Computer Organization) Spring MIPS Intro Math 230 Assembly Programming (AKA Computer Organization) Spring 2008 MIPS Intro Adapted from slides developed for: Mary J. Irwin PSU CSE331 Dave Patterson s UCB CS152 M230 L09.1 Smith Spring 2008 MIPS

More information

Instruction Set Architecture. "Speaking with the computer"

Instruction Set Architecture. Speaking with the computer Instruction Set Architecture "Speaking with the computer" The Instruction Set Architecture Application Compiler Instr. Set Proc. Operating System I/O system Instruction Set Architecture Digital Design

More information

CS152 Computer Architecture and Engineering March 13, 2008 Out of Order Execution and Branch Prediction Assigned March 13 Problem Set #4 Due March 25

CS152 Computer Architecture and Engineering March 13, 2008 Out of Order Execution and Branch Prediction Assigned March 13 Problem Set #4 Due March 25 CS152 Computer Architecture and Engineering March 13, 2008 Out of Order Execution and Branch Prediction Assigned March 13 Problem Set #4 Due March 25 http://inst.eecs.berkeley.edu/~cs152/sp08 The problem

More information

CA Compiler Construction

CA Compiler Construction CA4003 - Compiler Construction David Sinclair When procedure A calls procedure B, we name procedure A the caller and procedure B the callee. A Runtime Environment, also called an Activation Record, is

More information

Lectures 3-4: MIPS instructions

Lectures 3-4: MIPS instructions Lectures 3-4: MIPS instructions Motivation Learn how a processor s native language looks like Discover the most important software-hardware interface MIPS Microprocessor without Interlocked Pipeline Stages

More information

Lectures 5. Announcements: Today: Oops in Strings/pointers (example from last time) Functions in MIPS

Lectures 5. Announcements: Today: Oops in Strings/pointers (example from last time) Functions in MIPS Lectures 5 Announcements: Today: Oops in Strings/pointers (example from last time) Functions in MIPS 1 OOPS - What does this C code do? int foo(char *s) { int L = 0; while (*s++) { ++L; } return L; } 2

More information

Chapter 2. Instructions: Language of the Computer. Adapted by Paulo Lopes

Chapter 2. Instructions: Language of the Computer. Adapted by Paulo Lopes Chapter 2 Instructions: Language of the Computer Adapted by Paulo Lopes Instruction Set The repertoire of instructions of a computer Different computers have different instruction sets But with many aspects

More information

Computer Architecture. Chapter 2-2. Instructions: Language of the Computer

Computer Architecture. Chapter 2-2. Instructions: Language of the Computer Computer Architecture Chapter 2-2 Instructions: Language of the Computer 1 Procedures A major program structuring mechanism Calling & returning from a procedure requires a protocol. The protocol is a sequence

More information

Principles of Compiler Design

Principles of Compiler Design Principles of Compiler Design Code Generation Compiler Lexical Analysis Syntax Analysis Semantic Analysis Source Program Token stream Abstract Syntax tree Intermediate Code Code Generation Target Program

More information

Register allocation. Register allocation: ffl have value in a register when used. ffl limited resources. ffl changes instruction choices

Register allocation. Register allocation: ffl have value in a register when used. ffl limited resources. ffl changes instruction choices Register allocation IR instruction selection register allocation machine code errors Register allocation: have value in a register when used limited resources changes instruction choices can move loads

More information

Chapter 2A Instructions: Language of the Computer

Chapter 2A Instructions: Language of the Computer Chapter 2A Instructions: Language of the Computer Copyright 2009 Elsevier, Inc. All rights reserved. Instruction Set The repertoire of instructions of a computer Different computers have different instruction

More information

Math 230 Assembly Programming (AKA Computer Organization) Spring 2008

Math 230 Assembly Programming (AKA Computer Organization) Spring 2008 Math 230 Assembly Programming (AKA Computer Organization) Spring 2008 MIPS Intro II Lect 10 Feb 15, 2008 Adapted from slides developed for: Mary J. Irwin PSU CSE331 Dave Patterson s UCB CS152 M230 L10.1

More information

Lecture 2. Instructions: Language of the Computer (Chapter 2 of the textbook)

Lecture 2. Instructions: Language of the Computer (Chapter 2 of the textbook) Lecture 2 Instructions: Language of the Computer (Chapter 2 of the textbook) Instructions: tell computers what to do Chapter 2 Instructions: Language of the Computer 2 Introduction Chapter 2.1 Chapter

More information

ECE 331 Hardware Organization and Design. Professor Jay Taneja UMass ECE - Discussion 3 2/8/2018

ECE 331 Hardware Organization and Design. Professor Jay Taneja UMass ECE - Discussion 3 2/8/2018 ECE 331 Hardware Organization and Design Professor Jay Taneja UMass ECE - jtaneja@umass.edu Discussion 3 2/8/2018 Study Jams Leader: Chris Bartoli Tuesday 5:30-6:45pm Elab 325 Wednesday 8:30-9:45pm Elab

More information

MIPS Functions and Instruction Formats

MIPS Functions and Instruction Formats MIPS Functions and Instruction Formats 1 The Contract: The MIPS Calling Convention You write functions, your compiler writes functions, other compilers write functions And all your functions call other

More information

Announcements HW1 is due on this Friday (Sept 12th) Appendix A is very helpful to HW1. Check out system calls

Announcements HW1 is due on this Friday (Sept 12th) Appendix A is very helpful to HW1. Check out system calls Announcements HW1 is due on this Friday (Sept 12 th ) Appendix A is very helpful to HW1. Check out system calls on Page A-48. Ask TA (Liquan chen: liquan@ece.rutgers.edu) about homework related questions.

More information

CS 61c: Great Ideas in Computer Architecture

CS 61c: Great Ideas in Computer Architecture MIPS Functions July 1, 2014 Review I RISC Design Principles Smaller is faster: 32 registers, fewer instructions Keep it simple: rigid syntax, fixed instruction length MIPS Registers: $s0-$s7,$t0-$t9, $0

More information

Architecture II. Computer Systems Laboratory Sungkyunkwan University

Architecture II. Computer Systems Laboratory Sungkyunkwan University MIPS Instruction ti Set Architecture II Jin-Soo Kim (jinsookim@skku.edu) Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu Making Decisions (1) Conditional operations Branch to a

More information

ECE232: Hardware Organization and Design. Computer Organization - Previously covered

ECE232: Hardware Organization and Design. Computer Organization - Previously covered ECE232: Hardware Organization and Design Part 6: MIPS Instructions II http://www.ecs.umass.edu/ece/ece232/ Adapted from Computer Organization and Design, Patterson & Hennessy, UCB Computer Organization

More information

Branch Addressing. Jump Addressing. Target Addressing Example. The University of Adelaide, School of Computer Science 28 September 2015

Branch Addressing. Jump Addressing. Target Addressing Example. The University of Adelaide, School of Computer Science 28 September 2015 Branch Addressing Branch instructions specify Opcode, two registers, target address Most branch targets are near branch Forward or backward op rs rt constant or address 6 bits 5 bits 5 bits 16 bits PC-relative

More information

Computer Science 246 Computer Architecture

Computer Science 246 Computer Architecture Computer Architecture Spring 2009 Harvard University Instructor: Prof. dbrooks@eecs.harvard.edu Compiler ILP Static ILP Overview Have discussed methods to extract ILP from hardware Why can t some of these

More information

Today s topics. MIPS operations and operands. MIPS arithmetic. CS/COE1541: Introduction to Computer Architecture. A Review of MIPS ISA.

Today s topics. MIPS operations and operands. MIPS arithmetic. CS/COE1541: Introduction to Computer Architecture. A Review of MIPS ISA. Today s topics CS/COE1541: Introduction to Computer Architecture MIPS operations and operands MIPS registers Memory view Instruction encoding A Review of MIPS ISA Sangyeun Cho Arithmetic operations Logic

More information

Chapter 3. Instructions:

Chapter 3. Instructions: Chapter 3 1 Instructions: Language of the Machine More primitive than higher level languages e.g., no sophisticated control flow Very restrictive e.g., MIPS Arithmetic Instructions We ll be working with

More information

101 Assembly. ENGR 3410 Computer Architecture Mark L. Chang Fall 2009

101 Assembly. ENGR 3410 Computer Architecture Mark L. Chang Fall 2009 101 Assembly ENGR 3410 Computer Architecture Mark L. Chang Fall 2009 What is assembly? 79 Why are we learning assembly now? 80 Assembly Language Readings: Chapter 2 (2.1-2.6, 2.8, 2.9, 2.13, 2.15), Appendix

More information

MIPS Procedure Calls - Review

MIPS Procedure Calls - Review MIPS Stacks and Subroutine Calls Cptr280 Dr Curtis Nelson MIPS Procedure Calls - Review When making a procedure or function call, it is necessary to: Place parameters you wish to pass where they can be

More information

5/17/2012. Recap from Last Time. CSE 2021: Computer Organization. The RISC Philosophy. Levels of Programming. Stored Program Computers

5/17/2012. Recap from Last Time. CSE 2021: Computer Organization. The RISC Philosophy. Levels of Programming. Stored Program Computers CSE 2021: Computer Organization Recap from Last Time load from disk High-Level Program Lecture-2 Code Translation-1 Registers, Arithmetic, logical, jump, and branch instructions MIPS to machine language

More information

Recap from Last Time. CSE 2021: Computer Organization. Levels of Programming. The RISC Philosophy 5/19/2011

Recap from Last Time. CSE 2021: Computer Organization. Levels of Programming. The RISC Philosophy 5/19/2011 CSE 2021: Computer Organization Recap from Last Time load from disk High-Level Program Lecture-3 Code Translation-1 Registers, Arithmetic, logical, jump, and branch instructions MIPS to machine language

More information

Levels of Programming. Registers

Levels of Programming. Registers Levels of Programming COSC 2021: Computer Organization Instructor: Dr. Amir Asif Department of Computer Science York University Handout # 3: MIPS Instruction Set I Topics: 1. Arithmetic Instructions 2.

More information

What Compilers Can and Cannot Do. Saman Amarasinghe Fall 2009

What Compilers Can and Cannot Do. Saman Amarasinghe Fall 2009 What Compilers Can and Cannot Do Saman Amarasinghe Fall 009 Optimization Continuum Many examples across the compilation pipeline Static Dynamic Program Compiler Linker Loader Runtime System Optimization

More information

Chapter 2. Computer Abstractions and Technology. Lesson 4: MIPS (cont )

Chapter 2. Computer Abstractions and Technology. Lesson 4: MIPS (cont ) Chapter 2 Computer Abstractions and Technology Lesson 4: MIPS (cont ) Logical Operations Instructions for bitwise manipulation Operation C Java MIPS Shift left >>> srl Bitwise

More information

Control Instructions. Computer Organization Architectures for Embedded Computing. Thursday, 26 September Summary

Control Instructions. Computer Organization Architectures for Embedded Computing. Thursday, 26 September Summary Control Instructions Computer Organization Architectures for Embedded Computing Thursday, 26 September 2013 Many slides adapted from: Computer Organization and Design, Patterson & Hennessy 4th Edition,

More information

Control Instructions

Control Instructions Control Instructions Tuesday 22 September 15 Many slides adapted from: and Design, Patterson & Hennessy 5th Edition, 2014, MK and from Prof. Mary Jane Irwin, PSU Summary Previous Class Instruction Set

More information

CS 61C: Great Ideas in Computer Architecture More MIPS, MIPS Functions

CS 61C: Great Ideas in Computer Architecture More MIPS, MIPS Functions CS 61C: Great Ideas in Computer Architecture More MIPS, MIPS Functions Instructors: John Wawrzynek & Vladimir Stojanovic http://inst.eecs.berkeley.edu/~cs61c/fa15 1 Machine Interpretation Levels of Representation/Interpretation

More information

Register allocation. instruction selection. machine code. register allocation. errors

Register allocation. instruction selection. machine code. register allocation. errors Register allocation IR instruction selection register allocation machine code errors Register allocation: have value in a register when used limited resources changes instruction choices can move loads

More information

Lecture 7: Pipelining Contd. More pipelining complications: Interrupts and Exceptions

Lecture 7: Pipelining Contd. More pipelining complications: Interrupts and Exceptions Lecture 7: Pipelining Contd. Kunle Olukotun Gates 302 kunle@ogun.stanford.edu http://www-leland.stanford.edu/class/ee282h/ 1 More pipelining complications: Interrupts and Exceptions Hard to handle in pipelined

More information

Machine Language Instructions Introduction. Instructions Words of a language understood by machine. Instruction set Vocabulary of the machine

Machine Language Instructions Introduction. Instructions Words of a language understood by machine. Instruction set Vocabulary of the machine Machine Language Instructions Introduction Instructions Words of a language understood by machine Instruction set Vocabulary of the machine Current goal: to relate a high level language to instruction

More information

Architectures. Code Generation Issues III. Code Generation Issues II. Machine Architectures I

Architectures. Code Generation Issues III. Code Generation Issues II. Machine Architectures I CSc 553 Principles of Compilation 7 : Code Generation I Introduction Department of Computer Science University of Arizona collberg@gmail.com Copyright c 2011 Christian Collberg Lexing, Parsing Semantic

More information

Introduction to the MIPS. Lecture for CPSC 5155 Edward Bosworth, Ph.D. Computer Science Department Columbus State University

Introduction to the MIPS. Lecture for CPSC 5155 Edward Bosworth, Ph.D. Computer Science Department Columbus State University Introduction to the MIPS Lecture for CPSC 5155 Edward Bosworth, Ph.D. Computer Science Department Columbus State University Introduction to the MIPS The Microprocessor without Interlocked Pipeline Stages

More information

MIPS R-format Instructions. Representing Instructions. Hexadecimal. R-format Example. MIPS I-format Example. MIPS I-format Instructions

MIPS R-format Instructions. Representing Instructions. Hexadecimal. R-format Example. MIPS I-format Example. MIPS I-format Instructions Representing Instructions Instructions are encoded in binary Called machine code MIPS instructions Encoded as 32-bit instruction words Small number of formats encoding operation code (opcode), register

More information

CS 316: Procedure Calls/Pipelining

CS 316: Procedure Calls/Pipelining CS 316: Procedure Calls/Pipelining Kavita Bala Fall 2007 Computer Science Cornell University Announcements PA 3 IS out today Lectures on it this Fri and next Tue/Thu Due on the Friday after Fall break

More information

ENGN1640: Design of Computing Systems Topic 03: Instruction Set Architecture Design

ENGN1640: Design of Computing Systems Topic 03: Instruction Set Architecture Design ENGN1640: Design of Computing Systems Topic 03: Instruction Set Architecture Design Professor Sherief Reda http://scale.engin.brown.edu School of Engineering Brown University Spring 2014 Sources: Computer

More information

CENG3420 Lecture 03 Review

CENG3420 Lecture 03 Review CENG3420 Lecture 03 Review Bei Yu byu@cse.cuhk.edu.hk 2017 Spring 1 / 38 CISC vs. RISC Complex Instruction Set Computer (CISC) Lots of instructions of variable size, very memory optimal, typically less

More information

Liveness Analysis and Register Allocation. Xiao Jia May 3 rd, 2013

Liveness Analysis and Register Allocation. Xiao Jia May 3 rd, 2013 Liveness Analysis and Register Allocation Xiao Jia May 3 rd, 2013 1 Outline Control flow graph Liveness analysis Graph coloring Linear scan 2 Basic Block The code in a basic block has: one entry point,

More information

Pipeline issues. Pipeline hazard: RaW. Pipeline hazard: RaW. Calcolatori Elettronici e Sistemi Operativi. Hazards. Data hazard.

Pipeline issues. Pipeline hazard: RaW. Pipeline hazard: RaW. Calcolatori Elettronici e Sistemi Operativi. Hazards. Data hazard. Calcolatori Elettronici e Sistemi Operativi Pipeline issues Hazards Pipeline issues Data hazard Control hazard Structural hazard Pipeline hazard: RaW Pipeline hazard: RaW 5 6 7 8 9 5 6 7 8 9 : add R,R,R

More information

Fall Compiler Principles Lecture 12: Register Allocation. Roman Manevich Ben-Gurion University

Fall Compiler Principles Lecture 12: Register Allocation. Roman Manevich Ben-Gurion University Fall 2014-2015 Compiler Principles Lecture 12: Register Allocation Roman Manevich Ben-Gurion University Syllabus Front End Intermediate Representation Optimizations Code Generation Scanning Lowering Local

More information

CISC 662 Graduate Computer Architecture. Lecture 4 - ISA

CISC 662 Graduate Computer Architecture. Lecture 4 - ISA CISC 662 Graduate Computer Architecture Lecture 4 - ISA Michela Taufer http://www.cis.udel.edu/~taufer/courses Powerpoint Lecture Notes from John Hennessy and David Patterson s: Computer Architecture,

More information

COE608: Computer Organization and Architecture

COE608: Computer Organization and Architecture Add on Instruction Set Architecture COE608: Computer Organization and Architecture Dr. Gul N. Khan http://www.ee.ryerson.ca/~gnkhan Electrical and Computer Engineering Ryerson University Overview More

More information

Computer Science 324 Computer Architecture Mount Holyoke College Fall Topic Notes: MIPS Instruction Set Architecture

Computer Science 324 Computer Architecture Mount Holyoke College Fall Topic Notes: MIPS Instruction Set Architecture Computer Science 324 Computer Architecture Mount Holyoke College Fall 2009 Topic Notes: MIPS Instruction Set Architecture vonneumann Architecture Modern computers use the vonneumann architecture. Idea:

More information

CSCI 402: Computer Architectures. Instructions: Language of the Computer (3) Fengguang Song Department of Computer & Information Science IUPUI.

CSCI 402: Computer Architectures. Instructions: Language of the Computer (3) Fengguang Song Department of Computer & Information Science IUPUI. CSCI 402: Computer Architectures Instructions: Language of the Computer (3) Fengguang Song Department of Computer & Information Science IUPUI Recall Big endian, little endian Memory alignment Unsigned

More information

Instructor: Randy H. Katz hap://inst.eecs.berkeley.edu/~cs61c/fa13. Fall Lecture #7. Warehouse Scale Computer

Instructor: Randy H. Katz hap://inst.eecs.berkeley.edu/~cs61c/fa13. Fall Lecture #7. Warehouse Scale Computer CS 61C: Great Ideas in Computer Architecture Everything is a Number Instructor: Randy H. Katz hap://inst.eecs.berkeley.edu/~cs61c/fa13 9/19/13 Fall 2013 - - Lecture #7 1 New- School Machine Structures

More information

Code Generation. The Main Idea of Today s Lecture. We can emit stack-machine-style code for expressions via recursion. Lecture Outline.

Code Generation. The Main Idea of Today s Lecture. We can emit stack-machine-style code for expressions via recursion. Lecture Outline. The Main Idea of Today s Lecture Code Generation We can emit stack-machine-style code for expressions via recursion (We will use MIPS assembly as our target language) 2 Lecture Outline What are stack machines?

More information

This course provides an overview of the SH-2 32-bit RISC CPU core used in the popular SH-2 series microcontrollers

This course provides an overview of the SH-2 32-bit RISC CPU core used in the popular SH-2 series microcontrollers Course Introduction Purpose: This course provides an overview of the SH-2 32-bit RISC CPU core used in the popular SH-2 series microcontrollers Objectives: Learn about error detection and address errors

More information

We can emit stack-machine-style code for expressions via recursion

We can emit stack-machine-style code for expressions via recursion Code Generation The Main Idea of Today s Lecture We can emit stack-machine-style code for expressions via recursion (We will use MIPS assembly as our target language) 2 Lecture Outline What are stack machines?

More information

Course on Advanced Computer Architectures

Course on Advanced Computer Architectures Surname (Cognome) Name (Nome) POLIMI ID Number Signature (Firma) SOLUTION Politecnico di Milano, July 9, 2018 Course on Advanced Computer Architectures Prof. D. Sciuto, Prof. C. Silvano EX1 EX2 EX3 Q1

More information

Instructions: Language of the Computer

Instructions: Language of the Computer CS359: Computer Architecture Instructions: Language of the Computer Yanyan Shen Department of Computer Science and Engineering 1 The Language a Computer Understands Word a computer understands: instruction

More information

Photo David Wright STEVEN R. BAGLEY PIPELINES AND ILP

Photo David Wright   STEVEN R. BAGLEY PIPELINES AND ILP Photo David Wright https://www.flickr.com/photos/dhwright/3312563248 STEVEN R. BAGLEY PIPELINES AND ILP INTRODUCTION Been considering what makes the CPU run at a particular speed Spent the last two weeks

More information

Variables vs. Registers/Memory. Simple Approach. Register Allocation. Interference Graph. Register Allocation Algorithm CS412/CS413

Variables vs. Registers/Memory. Simple Approach. Register Allocation. Interference Graph. Register Allocation Algorithm CS412/CS413 Variables vs. Registers/Memory CS412/CS413 Introduction to Compilers Tim Teitelbaum Lecture 33: Register Allocation 18 Apr 07 Difference between IR and assembly code: IR (and abstract assembly) manipulate

More information

Four Steps of Speculative Tomasulo cycle 0

Four Steps of Speculative Tomasulo cycle 0 HW support for More ILP Hardware Speculative Execution Speculation: allow an instruction to issue that is dependent on branch, without any consequences (including exceptions) if branch is predicted incorrectly

More information

Chapter 2. Instruction Set Architecture (ISA)

Chapter 2. Instruction Set Architecture (ISA) Chapter 2 Instruction Set Architecture (ISA) MIPS arithmetic Design Principle: simplicity favors regularity. Why? Of course this complicates some things... C code: A = B + C + D; E = F - A; MIPS code:

More information

COMPSCI 313 S Computer Organization. 7 MIPS Instruction Set

COMPSCI 313 S Computer Organization. 7 MIPS Instruction Set COMPSCI 313 S2 2018 Computer Organization 7 MIPS Instruction Set Agenda & Reading MIPS instruction set MIPS I-format instructions MIPS R-format instructions 2 7.1 MIPS Instruction Set MIPS Instruction

More information

MIPS%Assembly% E155%

MIPS%Assembly% E155% MIPS%Assembly% E155% Outline MIPS Architecture ISA Instruction types Machine codes Procedure call Stack 2 The MIPS Register Set Name Register Number Usage $0 0 the constant value 0 $at 1 assembler temporary

More information

CS61C : Machine Structures

CS61C : Machine Structures inst.eecs.berkeley.edu/~cs61c/su05 CS61C : Machine Structures Lecture #8: MIPS Procedures 2005-06-30 CS 61C L08 MIPS Procedures (1) Andy Carle Topic Outline Functions More Logical Operations CS 61C L08

More information

MODULE 4 INSTRUCTIONS: LANGUAGE OF THE MACHINE

MODULE 4 INSTRUCTIONS: LANGUAGE OF THE MACHINE MODULE 4 INSTRUCTIONS: LANGUAGE OF THE MACHINE 1 ARCHITECTURE MODEL The basic instruction set of a computer is comprised of sequences of REGISTER TRANSFERS. Example: Add A, B, C Register B # A

More information

Computer Architecture, EIT090 exam

Computer Architecture, EIT090 exam Department of Information Technology Lund University Computer Architecture, EIT090 exam 15-12-2004 I. Problem 1 (15 points) Briefly (1-2 sentences) describe the following items/concepts concerning computer

More information

CODE GENERATION Monday, May 31, 2010

CODE GENERATION Monday, May 31, 2010 CODE GENERATION memory management returned value actual parameters commonly placed in registers (when possible) optional control link optional access link saved machine status local data temporaries A.R.

More information

Compilation /17a Lecture 10. Register Allocation Noam Rinetzky

Compilation /17a Lecture 10. Register Allocation Noam Rinetzky Compilation 0368-3133 2016/17a Lecture 10 Register Allocation Noam Rinetzky 1 What is a Compiler? 2 Registers Dedicated memory locations that can be accessed quickly, can have computations performed on

More information

Chapter 2: Instructions:

Chapter 2: Instructions: Chapter 2: Instructions: Language of the Computer Computer Architecture CS-3511-2 1 Instructions: To command a computer s hardware you must speak it s language The computer s language is called instruction

More information

Computer Architecture

Computer Architecture Computer Architecture Chapter 2 Instructions: Language of the Computer Fall 2005 Department of Computer Science Kent State University Assembly Language Encodes machine instructions using symbols and numbers

More information

Instruction word R0 R1 R2 R3 R4 R5 R6 R8 R12 R31

Instruction word R0 R1 R2 R3 R4 R5 R6 R8 R12 R31 4.16 Exercises 419 Exercise 4.11 In this exercise we examine in detail how an instruction is executed in a single-cycle datapath. Problems in this exercise refer to a clock cycle in which the processor

More information

Memory Usage 0x7fffffff. stack. dynamic data. static data 0x Code Reserved 0x x A software convention

Memory Usage 0x7fffffff. stack. dynamic data. static data 0x Code Reserved 0x x A software convention Subroutines Why we use subroutines more modular program (small routines, outside data passed in) more readable, easier to debug code reuse i.e. smaller code space Memory Usage A software convention stack

More information

register allocation saves energy register allocation reduces memory accesses.

register allocation saves energy register allocation reduces memory accesses. Lesson 10 Register Allocation Full Compiler Structure Embedded systems need highly optimized code. This part of the course will focus on Back end code generation. Back end: generation of assembly instructions

More information

Outline. Register Allocation. Issues. Storing values between defs and uses. Issues. Issues P3 / 2006

Outline. Register Allocation. Issues. Storing values between defs and uses. Issues. Issues P3 / 2006 P3 / 2006 Register Allocation What is register allocation Spilling More Variations and Optimizations Kostis Sagonas 2 Spring 2006 Storing values between defs and uses Program computes with values value

More information

EEC 581 Computer Architecture Lecture 1 Review MIPS

EEC 581 Computer Architecture Lecture 1 Review MIPS EEC 581 Computer Architecture Lecture 1 Review MIPS 1 Supercomputing: Suddenly Fancy 2 1 Instructions: Language of the Machine More primitive than higher level languages e.g., no sophisticated control

More information

CS/COE1541: Introduction to Computer Architecture

CS/COE1541: Introduction to Computer Architecture CS/COE1541: Introduction to Computer Architecture Dept. of Computer Science University of Pittsburgh http://www.cs.pitt.edu/~melhem/courses/1541p/index.html 1 Computer Architecture? Application pull Operating

More information

Pipelining and Exploiting Instruction-Level Parallelism (ILP)

Pipelining and Exploiting Instruction-Level Parallelism (ILP) Pipelining and Exploiting Instruction-Level Parallelism (ILP) Pipelining and Instruction-Level Parallelism (ILP). Definition of basic instruction block Increasing Instruction-Level Parallelism (ILP) &

More information

Advanced d Instruction Level Parallelism. Computer Systems Laboratory Sungkyunkwan University

Advanced d Instruction Level Parallelism. Computer Systems Laboratory Sungkyunkwan University Advanced d Instruction ti Level Parallelism Jin-Soo Kim (jinsookim@skku.edu) Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu ILP Instruction-Level Parallelism (ILP) Pipelining:

More information

Advanced processor designs

Advanced processor designs Advanced processor designs We ve only scratched the surface of CPU design. Today we ll briefly introduce some of the big ideas and big words behind modern processors by looking at two example CPUs. The

More information

Lecture 4: MIPS Instruction Set

Lecture 4: MIPS Instruction Set Lecture 4: MIPS Instruction Set No class on Tuesday Today s topic: MIPS instructions Code examples 1 Instruction Set Understanding the language of the hardware is key to understanding the hardware/software

More information

CSE 378 Midterm 2/12/10 Sample Solution

CSE 378 Midterm 2/12/10 Sample Solution Question 1. (6 points) (a) Rewrite the instruction sub $v0,$t8,$a2 using absolute register numbers instead of symbolic names (i.e., if the instruction contained $at, you would rewrite that as $1.) sub

More information

Instructions: Language of the Computer

Instructions: Language of the Computer CS359: Computer Architecture Instructions: Language of the Computer Yanyan Shen Department of Computer Science and Engineering 1 The Language a Computer Understands Word a computer understands: instruction

More information

MIPS Assembly Language Guide

MIPS Assembly Language Guide MIPS Assembly Language Guide MIPS is an example of a Reduced Instruction Set Computer (RISC) which was designed for easy instruction pipelining. MIPS has a Load/Store architecture since all instructions

More information

CS252 Graduate Computer Architecture Midterm 1 Solutions

CS252 Graduate Computer Architecture Midterm 1 Solutions CS252 Graduate Computer Architecture Midterm 1 Solutions Part A: Branch Prediction (22 Points) Consider a fetch pipeline based on the UltraSparc-III processor (as seen in Lecture 5). In this part, we evaluate

More information