Project Two RISC Processor Implementation ECE 485

Similar documents
Computer Engineering Department. CC 311- Computer Architecture. Chapter 4. The Processor: Datapath and Control. Single Cycle

CPU DESIGN The Single-Cycle Implementation

Processor Design & ALU Design

EC 413 Computer Organization

CSE Computer Architecture I

L07-L09 recap: Fundamental lesson(s)!

3. (2) What is the difference between fixed and hybrid instructions?

Computer Architecture. ECE 361 Lecture 5: The Design Process & ALU Design. 361 design.1

Spiral 1 / Unit 3

Arithmetic and Logic Unit First Part

Implementing the Controller. Harvard-Style Datapath for DLX

Review. Combined Datapath

Implementing Absolute Addressing in a Motorola Processor (DRAFT)

Computer Architecture ELEC2401 & ELEC3441

Pipelining. Traditional Execution. CS 365 Lecture 12 Prof. Yih Huang. add ld beq CS CS 365 2

[2] Predicting the direction of a branch is not enough. What else is necessary?

1. (2 )Clock rates have grown by a factor of 1000 while power consumed has only grown by a factor of 30. How was this accomplished?

CPSC 3300 Spring 2017 Exam 2

4. (3) What do we mean when we say something is an N-operand machine?

ECE 3401 Lecture 23. Pipeline Design. State Table for 2-Cycle Instructions. Control Unit. ISA: Instruction Specifications (for reference)

Outcomes. Spiral 1 / Unit 2. Boolean Algebra BOOLEAN ALGEBRA INTRO. Basic Boolean Algebra Logic Functions Decoders Multiplexers

61C In the News. Processor Design: 5 steps

[2] Predicting the direction of a branch is not enough. What else is necessary?

Design. Dr. A. Sahu. Indian Institute of Technology Guwahati

Building a Computer. Quiz #2 on 10/31, open book and notes. (This is the last lecture covered) I wonder where this goes? L16- Building a Computer 1

Microprocessor Power Analysis by Labeled Simulation

A Second Datapath Example YH16

Simple Instruction-Pipelining. Pipelined Harvard Datapath

Review: Single-Cycle Processor. Limits on cycle time

UNIVERSITY OF WISCONSIN MADISON

Simple Instruction-Pipelining. Pipelined Harvard Datapath

Lecture 13: Sequential Circuits, FSM

Simple Instruction-Pipelining (cont.) Pipelining Jumps

EXAMPLES 4/12/2018. The MIPS Pipeline. Hazard Summary. Show the pipeline diagram. Show the pipeline diagram. Pipeline Datapath and Control


CprE 281: Digital Logic

Computer Science. Questions for discussion Part II. Computer Science COMPUTER SCIENCE. Section 4.2.

Design of Digital Circuits Lecture 14: Microprogramming. Prof. Onur Mutlu ETH Zurich Spring April 2017

Logic and Computer Design Fundamentals. Chapter 8 Sequencing and Control

Designing MIPS Processor

TEST 1 REVIEW. Lectures 1-5

CMP N 301 Computer Architecture. Appendix C

Digital Logic: Boolean Algebra and Gates. Textbook Chapter 3

Control. Control. the ALU. ALU control signals 11/4/14. Next: control. We built the instrument. Now we read music and play it...

Lecture 3, Performance

COVER SHEET: Problem#: Points

Lecture 3, Performance

Computer Architecture. ESE 345 Computer Architecture. Design Process. CA: Design process

NCU EE -- DSP VLSI Design. Tsung-Han Tsai 1

Chapter 5. Digital Design and Computer Architecture, 2 nd Edition. David Money Harris and Sarah L. Harris. Chapter 5 <1>

Computer Architecture

CSCI-564 Advanced Computer Architecture

COE 328 Final Exam 2008

From Sequential Circuits to Real Computers

Enrico Nardelli Logic Circuits and Computer Architecture

ECE290 Fall 2012 Lecture 22. Dr. Zbigniew Kalbarczyk

Topics: A multiple cycle implementation. Distributed Notes

Design at the Register Transfer Level

System Data Bus (8-bit) Data Buffer. Internal Data Bus (8-bit) 8-bit register (R) 3-bit address 16-bit register pair (P) 2-bit address

ICS 233 Computer Architecture & Assembly Language

Combinational vs. Sequential. Summary of Combinational Logic. Combinational device/circuit: any circuit built using the basic gates Expressed as

CMP 338: Third Class

Verilog HDL:Digital Design and Modeling. Chapter 11. Additional Design Examples. Additional Figures

Formal Verification of Systems-on-Chip

Lecture 13: Sequential Circuits, FSM

Department of Electrical and Computer Engineering The University of Texas at Austin

CMPEN 411 VLSI Digital Circuits Spring Lecture 19: Adder Design

CSE. 1. In following code. addi. r1, skip1 xor in r2. r3, skip2. counter r4, top. taken): PC1: PC2: PC3: TTTTTT TTTTTT

CHAPTER log 2 64 = 6 lines/mux or decoder 9-2.* C = C 8 V = C 8 C * 9-4.* (Errata: Delete 1 after problem number) 9-5.

CMP 334: Seventh Class

Instruction register. Data. Registers. Register # Memory data register

From Sequential Circuits to Real Computers

CS/COE0447: Computer Organization

INF2270 Spring Philipp Häfliger. Lecture 8: Superscalar CPUs, Course Summary/Repetition (1/2)

Table of Content. Chapter 11 Dedicated Microprocessors Page 1 of 25

CMPE12 - Notes chapter 1. Digital Logic. (Textbook Chapter 3)

Design of Sequential Circuits

CPS 104 Computer Organization and Programming Lecture 11: Gates, Buses, Latches. Robert Wagner

Logic Design. CS 270: Mathematical Foundations of Computer Science Jeremy Johnson

LOGIC CIRCUITS. Basic Experiment and Design of Electronics

EE 660: Computer Architecture Out-of-Order Processors

ECE 250 / CPS 250 Computer Architecture. Basics of Logic Design Boolean Algebra, Logic Gates

2

CSE370: Introduction to Digital Design

Digital Logic. CS211 Computer Architecture. l Topics. l Transistors (Design & Types) l Logic Gates. l Combinational Circuits.

SISD SIMD. Flynn s Classification 8/8/2016. CS528 Parallel Architecture Classification & Single Core Architecture C P M

CS/COE0447: Computer Organization

Lecture 5: Arithmetic

Adders, subtractors comparators, multipliers and other ALU elements

ECE/CS 250 Computer Architecture

ECE 448 Lecture 6. Finite State Machines. State Diagrams, State Tables, Algorithmic State Machine (ASM) Charts, and VHDL Code. George Mason University

ECE 545 Digital System Design with VHDL Lecture 1. Digital Logic Refresher Part A Combinational Logic Building Blocks

Fundamentals of Digital Design

Digital Integrated Circuits A Design Perspective. Arithmetic Circuits. Jan M. Rabaey Anantha Chandrakasan Borivoje Nikolic.

CA Compiler Construction

CPE100: Digital Logic Design I

Boolean Algebra and Digital Logic 2009, University of Colombo School of Computing

Spiral 2-1. Datapath Components: Counters Adders Design Example: Crosswalk Controller

CS/COE1541: Introduction to Computer Architecture. Logic Design Review. Sangyeun Cho. Computer Science Department University of Pittsburgh

ECEN 651: Microprogrammed Control of Digital Systems Department of Electrical and Computer Engineering Texas A&M University

Transcription:

Project Two RISC Processor Implementation ECE 485 Chenqi Bao Peter Chinetti November 6, 2013 Instructor: Professor Borkar 1 Statement of Problem This project requires the design and test of a RISC processor in VHDL. It focuses especially on the datapath design of the processor, and its implementation. In this groups specific case, the required instructions 1 were: 2 Background 2.1 Instruction Types Name Abrev. Type Load Word lw I Store Word sw I Add add R Branch On Equal beq I NAND nand R OR Immediate ori I OR or R AND Immediate andi I The MIPS ISA defines three instruction types, R, I, and J type instructions. Only R and I type instructions will be covered here, as they are the only instructions that are to be implemented for this project. 1 NAND does not exist in the MIPS ISA, so the ISA was extrapolated to fill out the table 1

2.1.1 R Type R type, or register type instructions are the most common form of MIPS instructions. In this instruction format, the 32 bits of the instruction are split as follows: B 31 26 B 25 21 B 20 16 B 15 11 B 10 6 B 5 0 opcode rs rt rd shamt funct In these instructions, the opcode is always 000000 2, and the function code (funct) is used to determine the specific instruction. rs and rt are the two registers the operation is working on, and rd is the destination register. For some instructions, a shift amount (shamt) is needed, so it is specified. 2.1.2 I type I type, or immediate type instructions are also very common. In this instruction format, the 32 bits of the instruction are split as follows: B 31 26 B 25 21 B 20 16 B 15 0 opcode rs rt immediate In these instructions, the op code field actually encodes the specific instruction. rt is the destination register, and rs is the register on which the operation acts. The immediate field holds the immediate data that serves as the other operand. 2.2 Multicycle Datapath The microprocessor logically comprises two main components: datapath and control. The datapath performs the arithmetic operations, and control tells the datapath, memory and I/O devices what to do according to the wishes of the instructions of the program [1]. When executing an instruction, the microprocessor steps through five main stages: Instruction Fetch (IF), Instruction Decode (ID), Execution (EX), Memory Operations (MEM) and Write Back (WB). Multicycle datapath implementations takes advantage of the fact that the stages of the operation can share the same hardware. Rather than use for example, a separate ALU for PC incrementing and addition of two registers, the same ALU can have its input switched from PC incrementation to register reads. This reuse saves on components in the processor, which can cost less. Multicycle, however, requires some additional work in the form of multiplexers to select between inputs and outputs of each stage. Although this is a nontrivial amount of work, it is still better than duplicating components for each step. 2

2.3 VHDL VHDL is a hardware description language that can be used to prototype digital systems. According to [2], VHDL includes facilities for describing logical structure and function of digital system at a number of levels of abstraction, from system level down to the gate level. 3 Implementation 3.1 Design Decisions 3.1.1 Instruction Set The first design decision was what to use as the format of the instructions requested. Generally, we used the format specified in the MIPS ISA, but, as mentioned earlier, NAND is not implemented in the MIPS ISA. Below is a list of our choices for opcodes and function codes: 3.1.2 Memory OpCode Function Field Instruction Operation 100011 000000 lw lw $t3,200($t2) 101011 000000 sw sw $t3,0($t2) 000000 100000 add add $t1,$t1,$t1 000100 000000 beq beq $t1,$t4,15 000000 100101 or or $t0,$t1,$t0 001100 000000 andi andi $t0,$t0,5 000000 000001 nand nand $t0,$t0,$zero 001101 000000 ori ori $t6,$t6,61680 Memory was implemented as a simple array of 256 words in this implementation. Larger memory sizes are possible, but they are unnecessarily complicated for a simple demonstration such as this. 3.2 Optimization Little optimization was done on this project other than to not include obviously useless code. This processor is not pipelined, and as such, it is very much kept back from the optimization that make modern processors so quick. 3.3 Improvements This processor has many ways to improve. Out of the large many ways, a few are most obvious: implement a complete instruction set, add piplineing, and increase the memory size. Currently the processor exists solely to serve as an educational demonstration, but could grow to be a complete implementation of the MIPS ISA given much improvement. 3

3.4 Failures Thankfully, we have no failures to report. 3.5 Block Diagram See figure 1. 3.6 Simulation The output of the simulations can be found in figures 2-9. The simulation was done sequentially, in the order of presentation, so the values going into subsequent instructions are often dependent on the output of the previous command. 3.7 Code Listing 3.7.1 Datapath 1 e n t i t y MIPS i s Port ( 3 c l o c k : i n b i t ; c l o c k r e c o r d PC0 : out i n t e g e r ; PC counter (32 b i t s ) 5 SET : i n b i t ; Memval : out b i t v e c t o r (31 downto 0) ; mem word a d d r e s s a b l e 7 I n s t r v a l : out b i t v e c t o r (31 downto 0) ; I n s t r u c t i o n 32 b i t s wide Output : out BIT VECTOR ( 31 downto 0) ; We are working i n Word s i z e 9 Port1, Port2, Port3, Port4 : out b i t v e c t o r (31 downto 0) ) ; end MIPS ; 11 a r c h i t e c t u r e INSTRUCTION o f MIPS i s 13 Data types s i g n a l i n t e r n a l s t a t e : i n t e g e r ; 15 subtype word i s b i t v e c t o r (31 downto 0) ; 32 b i t words type r e g f i l e i s array (0 to 31) o f word ; 32 words 17 type ram i s array (0 to 255) o f word ; toy s i z e d ram f o r t e s t i n g subtype r e g a d d r i s b i t v e c t o r (4 downto 0) ; 2ˆ5 can s t o r e 32 r e g s 19 subtype halfword i s b i t v e c t o r (15 downto 0) ; 16 b i t e n t i t i e s i. e. Immediate value subtype byte i s b i t v e c t o r (7 downto 0) ; i f we need bytes 21 c o n s t a n t bvc : b i t v e c t o r (0 to 1) := 01 ; Binary value i n t > b i t s 23 procedure i n t 2 b i t s ( i n t : i n i n t e g e r ; b i t s : out b i t v e c t o r ) i s v a r i a b l e temp : i n t e g e r ; 25 v a r i a b l e r e s u l t : b i t v e c t o r ( b i t s range ) ; begin 27 temp := i n t ; i f i n t < 0 then 29 temp := i n t 1 ; 4

end i f ; 31 f o r index i n b i t s r e v e r s e r a n g e loop r e s u l t ( index ) := bvc ( temp rem 2) ; 33 temp := temp/2 ; end loop ; 35 i f i n t < 0 then r e s u l t := not r e s u l t ; 37 r e s u l t ( b i t s l e f t ) := 1 ; end i f ; 39 b i t s := r e s u l t ; end i n t 2 b i t s ; 41 b i t s > unsigned i n t f u n c t i o n b i t s 2 i n t ( b i t s : i n b i t v e c t o r ) r e t u r n i n t e g e r i s 43 v a r i a b l e r e s u l t : i n t e g e r := 0 ; begin 45 f o r index i n b i t s range loop r e s u l t := r e s u l t 2 + bit pos ( b i t s ( index ) ) ; 47 end loop ; r e t u r n r e s u l t ; 49 end b i t s 2 i n t ; 51 Sign Extend f u n c t i o n s i g n e x t (imm : i n halfword ) r e t u r n word i s 53 v a r i a b l e extended : word ; begin 55 i f imm(imm l e f t ) = 1 then extended := ( 31 downto 16 => 1 )& imm ; 57 e l s e extended := ( 31 downto 16 => 0 )& imm ; 59 end i f ; r e t u r n extended ; 61 end s i g n e x t ; +/ 63 procedure a l u a d d s u b t r a c t ( a d d s e l : i n b i t ; r e s u l t : i n o u t word ; a, nb : i n word ; V,N : out b i t ) i s Overflow > Cout v a r i a b l e sum : word ; 65 v a r i a b l e c a r r y : b i t := 0 ; v a r i a b l e b : word ; 67 begin i f a d d s e l = 1 then 69 b:=not nb ; c a r r y := 1 ; 71 e l s e b := nb ; end i f ; 73 f o r index i n sum r e v e r s e r a n g e loop sum( index ) := a ( index ) xor c a r r y xor b ( index ) ; 75 c a r r y := ( a ( index ) and b ( index ) ) or ( c a r r y and ( a ( index ) xor b ( index ) ) ) ; end loop ; 77 r e s u l t := sum ; V := c a r r y ; = 1 ; 79 end procedure a l u a d d s u b t r a c t ; 81 Begin Proc : P r o c e s s ( c l o c k ) 83 v a r i a b l e i : i n t e g e r :=0; Execution c y c l e counter Begin 5

85 i f c l o c k = 1 and clock event then i f i = 5 OR SET = 1 then r e s e t on SET or 5 c y c l e s 87 i := 0 ; end i f ; 89 i := i +1; i n t e r n a l s t a t e <= i ; 91 end i f ; end p r o c e s s Proc ; 93 95 97 Datapath : P r o c e s s ( i n t e r n a l s t a t e ) v a r i a b l e r e s u l t, I n s t r, op1, op2, op3, maddr : word ; 99 v a r i a b l e opcode, f u n c t : b i t v e c t o r (5 downto 0) ; v a r i a b l e rs, rt, rd, dstreg, shamt : r e g a d d r ; 101 v a r i a b l e s t a t e : i n t e g e r :=0; == cycle 103 v a r i a b l e PC : i n t e g e r := 0 ; v a r i a b l e Imm : halfword ; 105 v a r i a b l e mem index : byte ; only need 8 b i t s v a r i a b l e reg : r e g f i l e := (9 => X 0000 0001, 10 => X 0000 0002,12 => X 0000 0002, o t h e r s => X 0000 0000 ) ; 107 v a r i a b l e mem : ram := ( 0 => X 8D4B 00C8, lw $t3, 2 0 0 ( $t2 ) [ Load $7FFF FFFF to $t3 ] 109 1 => X AD2B 0000, sw $t3, 0 ( $t2 ) [ S t o r e $7FFF FFFF to memory a d d r e s s 2 ] 2 => X 0129 4820, add $t1, $t1, $t1 [ doing 1+1 and s t o r e the r e s u l t i n $t1 ] 111 3 => X 112 C 000B, beq $t1, $t4, 1 5 [ I f $t1 =2, go to i n s t r. 1 5 ] 15 => X 010 B 4025, or $t0, $t3, $t0 [ or 7FFF FFFF with 0000 0000 ] 113 16 => X 3108 0005, andi $t0, $t0, 5 [ and 7FFF FFFF with 5 ] 17 => X 0100 0021, nand $t0, $t0, $ z e r o [ nand 0000 0005 with 0000 0000 => FFFF FFF2 ] 115 18 => X 35CE F0F0, o r i $t0, $zero, 6 1608 [ or 0000 F0F0 with 0000 0000 => FFFF FFFF ] o t h e r s => X 0000 0000 ) ; 117 v a r i a b l e mem rw : boolean ; Mem Access v a r i a b l e mem r : boolean ; Mem Read 119 v a r i a b l e i : i n t e g e r :=0; Exec c y c l e counter v a r i a b l e Dmem : ram := ( 121 202 => X 7FFF FFFF, o t h e r s => X 0000 0000 ) ; 123 v a r i a b l e V,N,RST : b i t ; 125 Begin s t a t e := i n t e r n a l s t a t e ; 127 c a s e s t a t e i s when 1 => 129 IF I n s t r := mem(pc) ; PC := PC + 1 ; I f PC i s an int, i n c r e m e t i n g by 1 works 131 RST := 0 ; i n i t mem rw := f a l s e ; i n i t 133 when 2 => ID 6

135 opcode := I n s t r (31 downto 26) ; r s := I n s t r (25 downto 21) ; 137 r t := I n s t r (20 downto 16) ; rd := I n s t r (15 downto 11) ; 139 d s t r e g := r t ; 141 Imm := I n s t r (15 downto 0) ; shamt := I n s t r (10 downto 6) ; 143 f u n c t := I n s t r (5 downto 0) ; op1 := reg ( b i t s 2 i n t ( r s ) ) ; a f t e r f i l t e r i n g to an int, s t o r e 145 op2 := reg ( b i t s 2 i n t ( r t ) ) ; op3 := s i g n e x t (Imm) ; t h i s i s the immediate value a f t e r being s i g n extended 147 when 3 => 149 EX c a s e opcode i s switch on opcode 151 when 100011 => lw a l u a d d s u b t r a c t ( 0, maddr, op1, op3,v,n) ; 153 mem rw := t r u e ; mem r := t r u e ; 155 when 101011 => sw a l u a d d s u b t r a c t ( 0, maddr, op1, op3,v,n) ; 157 mem rw := t r u e ; mem r := f a l s e ; 159 when 000100 => beq a l u a d d s u b t r a c t ( 1, r e s u l t, op1, op2,v,n) ; 161 i f r e s u l t = X 0000 0000 then i f our ALU had a z e r o output, take the branch PC := PC + b i t s 2 i n t ( op3 ) ; 163 RST := 1 ; end i f ; 165 when 001101 => ORI r e s u l t := op1 OR op3 ; 167 when 001100 => ANDI r e s u l t := op1 AND op3 ; 169 when 000000 => 0 op code, t h e r e f o r e R type 171 d s t r e g := rd ; R types always have rd as the d e s t c a s e f u n c t i s 173 when 100000 => Add a l u a d d s u b t r a c t ( 0, r e s u l t, op1, op2,v,n) ; 175 when 100001 => NAND r e s u l t :=op1 NAND op2 ; 177 when 100100 => AND r e s u l t := op1 AND op2 ; 179 when 100101 => OR r e s u l t := op1 OR op2 ; 181 when o t h e r s => end c a s e ; 183 when o t h e r s => end c a s e ; 185 when 4 => MEM 187 i f mem rw = t r u e then These f l a g s got s e t above when decoding lw and sw i f mem r = t r u e then s e t on read 7

189 r e s u l t := Dmem( b i t s 2 i n t ( maddr ) ) ; e l s e c l e a r e d on w r i t e 191 Dmem( b i t s 2 i n t ( maddr ) ) := op2 ; reg2 w r i t t e n to mem RST := 1 ; 193 end i f ; end i f ; 195 when 5 => Write back c y c l e 197 i f RST = 0 then i f we didn t w r i t e to mem reg ( b i t s 2 i n t ( d s t r e g ) ) := r e s u l t ; writeback value to d e s t. r e g i s t e r 199 end i f ; when o t h e r s => 201 end c a s e ; 203 Output <= r e s u l t ; Memval <= mem( b i t s 2 i n t ( maddr ) ) ; 205 PC0 <= PC; I n s t r V a l <= I n s t r ; 207 Port1 <= op1 ; Port2 <= op2 ; 209 Port3 <= op3 ; Port4 <= reg ( b i t s 2 i n t ( d s t r e g ) ) ; 211 end p r o c e s s Datapath ; end INSTRUCTION; MIPS.vhd 3.7.2 Simulator 1 ENTITY sim2 3 END sim2 ; IS 5 ARCHITECTURE s i m u l a t i o n OF sim2 IS COMPONENT MIPS 7 PORT ( c l o c k : In b i t ; SET : In b i t ; 9 Output : Out BIT VECTOR ( 31 DownTo 0) ; PC0 : Out INTEGER; 11 Memval : Out BIT VECTOR ( 31 DownTo 0) ; I n s t r v a l : Out BIT VECTOR (31 DownTo 0) ; 13 Port1, Port2, Port3, Port4 : Out BIT VECTOR ( 31 DownTo 0) ) ; 15 END COMPONENT; 17 SIGNAL Clock : b i t := 0 ; SIGNAL SET : b i t := 0 ; 19 SIGNAL Output : BIT VECTOR ( 31 DownTo 0) := 00000000000000000000000000000000 ; SIGNAL PC0 : INTEGER := 0 ; 21 SIGNAL Memval : BIT VECTOR ( 31 DownTo 0) := 00000000000000000000000000000000 ; SIGNAL I n s t r v a l : BIT VECTOR (31 DownTo 0) := 00000000000000000000000000000000 ; 8

23 SIGNAL Port1, Port2, Port3, Port4 : BIT VECTOR ( 31 DownTo 0) := 00000000000000000000000000000000 ; 25 Simulation b e g i n s! BEGIN 27 UUT : MIPS PORT MAP ( 29 c l o c k => clock, SET => SET, 31 I n s t r v a l => I n s t r v a l, Output => Output, 33 PC0 => PC0, Memval => Memval, 35 Port1 => Port1, Port2 => Port2, 37 Port3 => Port3, Port4 => Port4 39 ) ; PROCESS 41 BEGIN CL : LOOP 43 c l o c k <= 0 ; WAIT FOR 50 ns ; 45 c l o c k <= 1 ; WAIT FOR 50 ns ; 47 END LOOP CL; END PROCESS; 49 PROCESS BEGIN 51 WAIT FOR 5000 ns ; END PROCESS; 53 55 END s i m u l a t i o n ; simulator.vhd References [1] David A. Patterson, John L. Hennesy, Computer Organization and Design. Morgan Kaufmann, Massachusetts, 4th Revised Edition, 2012. [2] Peter J. Ashden, VHDL Tutorial. Elsevier Science, USA, 2004 9

PC RegWrite RegDst Inst[25-21] Reg 1 Select Reg 1 Data Inst[20-16] Reg 2 Select Instruction Memory Register File Inst[15-11] M U X Write Select Write Data Reg 2 Data Inst[15-0] Sign Extend ALU ALU 4 <<2 M U X Control A L U S r c B r a n c h M U X ALUOp ALU Control MemToReg ALU Zero Output AND Addr Write MemWrite Data Memory Read M U X Figure 1: Block Diagram 10

Figure 2: lw $t3,200($t2); Loading 7FFF FFFF 11

Figure 3: sw $t3,0($t2); Storing 7FFF FFFF 12

Figure 4: add $t1,$t1,$t1; $t1 initialized to 1 13

Figure 5: beq $t1,$t4,15; $t4 initialized to 2, $t1 = 2 14

Figure 6: or $t0,$t3,$t0; $t3 = 7FFF FFFF, $t0 = 0 15

Figure 7: andi $t0,$t0,5; $t0 = 7FFF FFFF 16

Figure 8: nand $t0,$t0,$zero; $t0 = 5 17

Figure 9: ori $t6,$t6,61680; $t6 = 0 18