CS61C Machine Structures. Lecture 8 - Introduction to the MIPS Processor and Assembly Language. 9/14/2007 John Wawrzynek

Similar documents
I ve been getting this a lot lately So, what are you teaching this term? Computer Organization. Do you mean, like keeping your computer in place?

CS 430 Computer Architecture. C/Assembler Arithmetic and Memory Access William J. Taffe. David Patterson

Lecture #6 Intro MIPS; Load & Store

CS 61C: Great Ideas in Computer Architecture Intro to Assembly Language, MIPS Intro

CS 61C: Great Ideas in Computer Architecture Intro to Assembly Language, MIPS Intro

CS61C : Machine Structures

Brought to you by CalLUG (UC Berkeley GNU/Linux User Group). Tuesday, September 20, 6-8 PM in 100 GPB.

Lecture #6 Intro MIPS; Load & Store Assembly Variables: Registers (1/4) Review. Unlike HLL like C or Java, assembly cannot use variables

CS 61C: Great Ideas in Computer Architecture Introduction to Assembly Language and MIPS Instruction Set Architecture

CS 61C: Great Ideas in Computer Architecture Introduction to Assembly Language and RISC-V Instruction Set Architecture

CS 110 Computer Architecture Lecture 5: Intro to Assembly Language, MIPS Intro

CS61C Machine Structures. Lecture 13 - MIPS Instruction Representation I. 9/26/2007 John Wawrzynek. www-inst.eecs.berkeley.

ECE 154A Introduction to. Fall 2012

CS 61C: Great Ideas in Computer Architecture Intro to Assembly Language, MIPS Intro. Machine Interpreta4on

מבנה מחשבים Amar Lior Based on lectures notes from Arie Schlesinger

ELEC 5200/6200. Computer Architecture & Design. Victor P. Nelson Broun 326

Lecture 3: Instruction Set Architecture

CS61C Machine Structures. Lecture 1 Introduction. 8/25/2003 Brian Harvey. John Wawrzynek (Warznek) www-inst.eecs.berkeley.

ECE232: Hardware Organization and Design

CS61C : Machine Structures

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

CS61C C/Assembler Operators and Operands Lecture 2 January 22, 1999 Dave Patterson (http.cs.berkeley.edu/~patterson)

CS61C : Machine Structures

CS61C Machine Structures. Lecture 1 Introduction. 8/27/2006 John Wawrzynek (Warzneck)

CS 61C: Great Ideas in Computer Architecture. Lecture 5: Intro to Assembly Language, MIPS Intro. Instructor: Sagar Karandikar

UCB CS61C : Machine Structures

CS64 Computer Organization

ECE 15B COMPUTER ORGANIZATION

CS61C Machine Structures. Lecture 10 - MIPS Branch Instructions II. 2/8/2006 John Wawrzynek. (

ELEC / Computer Architecture and Design Fall 2013 Instruction Set Architecture (Chapter 2)

CS 61c: Great Ideas in Computer Architecture

ECE232: Hardware Organization and Design

Lecture 4: Instruction Set Architecture

CS61C Machine Structures. Lecture 12 - MIPS Procedures II & Logical Ops. 2/13/2006 John Wawrzynek. www-inst.eecs.berkeley.

Instruction Set Architectures. CS301 Prof. Szajda

EE108B Lecture 2 MIPS Assembly Language I. Christos Kozyrakis Stanford University

Review of instruction set architectures

Stored Program Concept. Instructions: Characteristics of Instruction Set. Architecture Specification. Example of multiple operands

UCB CS61C : Machine Structures

CS61C : Machine Structures

Review. Lecture #9 MIPS Logical & Shift Ops, and Instruction Representation I Logical Operators (1/3) Bitwise Operations

Instructions: Language of the Computer

CS61C Machine Structures. Lecture 18 - Running a Program I. 3/1/2006 John Wawrzynek. www-inst.eecs.berkeley.edu/~cs61c/

CS 61C: Great Ideas in Computer Architecture. Lecture 2: Numbers & C Language. Krste Asanović & Randy Katz

CS61C Machine Structures. Lecture 3 Introduction to the C Programming Language. 1/23/2006 John Wawrzynek. www-inst.eecs.berkeley.

Agenda. CS 61C: Great Ideas in Computer Architecture. Lecture 2: Numbers & C Language 8/29/17. Recap: Binary Number Conversion

CS 2630 Computer Organization. Meeting 4: Intro to Architecture (specifically, MIPS) Brandon Myers University of Iowa

ECE 486/586. Computer Architecture. Lecture # 7

CISC 662 Graduate Computer Architecture. Lecture 4 - ISA MIPS ISA. In a CPU. (vonneumann) Processor Organization

Computer Architecture

CS 61C: Great Ideas in Computer Architecture Lecture 2: Introduction to C, Part I

CISC 662 Graduate Computer Architecture. Lecture 4 - ISA

CS61C : Machine Structures

CS 110 Computer Architecture. Lecture 2: Introduction to C, Part I. Instructor: Sören Schwertfeger.

Chapter Two MIPS Arithmetic

Instructions: MIPS arithmetic. MIPS arithmetic. Chapter 3 : MIPS Downloaded from:

CS 61C: Great Ideas in Computer Architecture (Machine Structures) Introduc)on to Machine Language

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

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

CS 61C: Great Ideas in Computer Architecture More RISC-V Instructions and How to Implement Functions

Computer Systems and Networks. ECPE 170 Jeff Shafer University of the Pacific. MIPS Assembly

EC 413 Computer Organization

Outline. Homework. Assembly Language. Instructions. Instruction Set Architectures. Csci 136 Computer Architecture II MIPS Instruction Set Architecture

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

9/9/12. New- School Machine Structures (It s a bit more complicated!) CS 61C: Great Ideas in Computer Architecture IntroducMon to Machine Language

CS61C - Machine Structures. Lecture 6 - Instruction Representation. September 15, 2000 David Patterson.

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

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

Numbers: positional notation. CS61C Machine Structures. Faux Midterm Review Jaein Jeong Cheng Tien Ee. www-inst.eecs.berkeley.

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

Chapter 3. Instructions:

EC 413 Computer Organization

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

Lecture 4: RISC Computers

CSE Introduction to Computer Architecture. Jeff Brown

COE608: Computer Organization and Architecture

Lecture Topics. Announcements. Today: The MIPS ISA (P&H ) Next: continued. Milestone #1 (due 1/26) Milestone #2 (due 2/2)

Lecture 4: MIPS Instruction Set

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

CSEE 3827: Fundamentals of Computer Systems

Instructions: Language of the Computer

CS61C : Machine Structures

Chapter 1. Computer Abstractions and Technology. Lesson 3: Understanding Performance

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

COMP3221: Microprocessors and. and Embedded Systems. Instruction Set Architecture (ISA) What makes an ISA? #1: Memory Models. What makes an ISA?

Chapter 2. Instructions:

CS430 - Computer Architecture William J. Taffe Fall 2002 using slides from. CS61C - Machine Structures Dave Patterson Fall 2000

ECE260: Fundamentals of Computer Engineering

EECE 321: Computer Organization

RISC Principles. Introduction

ISA and RISCV. CASS 2018 Lavanya Ramapantulu

Instructors: Randy H. Katz David A. PaHerson hhp://inst.eecs.berkeley.edu/~cs61c/fa10. Fall Lecture #1. Agenda

Instruction Set Architecture. "Speaking with the computer"

Chapter 2: Instructions:

Reduced Instruction Set Computer (RISC)

CS3350B Computer Architecture

CS 61C: Great Ideas in Computer Architecture Running a Program - CALL (Compiling, Assembling, Linking, and Loading)

Review. Lecture #7 MIPS Decisions So Far...

CS61C Machine Structures. Lecture 4 C Pointers and Arrays. 1/25/2006 John Wawrzynek. www-inst.eecs.berkeley.edu/~cs61c/

CS 110 Computer Architecture. Lecture 2: Introduction to C, Part I. Instructor: Sören Schwertfeger.

Transcription:

CS61C Machine Structures Lecture 8 - Introduction to the MIPS Processor and Assembly Language 9/14/2007 John Wawrzynek (www.cs.berkeley.edu/~johnw) www-inst.eecs.berkeley.edu/~cs61c/ CS 61C L08 C Introduction to MIPS (1) Anatomy: 5 components of any Computer Personal Computer Computer Central Processing Unit (CPU) Control Datapath Memory (where programs, data live when running) Devices Input Output CS 61C L08 C Introduction to MIPS (2)

61C Levels of Representation High Level Language Program (e.g., C) Compiler Assembly Language Program (e.g.,mips) Assembler Machine Language Program (MIPS) Machine Interpretation Hardware Architecture Description (e.g., Verilog Language) Architecture Implementation Logic Circuit Description (Verilog Language) temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; lw $t0, 0($2) lw $t1, 4($2) sw $t1, 0($2) sw $t0, 4($2) 0000 1001 1100 0110 1010 1111 0101 1000 1010 1111 0101 1000 0000 1001 1100 0110 1100 0110 1010 1111 0101 1000 0000 1001 0101 1000 0000 1001 1100 0110 1010 1111 wire [31:0] databus; regfile registers (databus); ALU ALUBlock (ina, inb, databus); wire w0; XOR (w0, a, b); AND (s, w0, a); CS 61C L08 C Introduction to MIPS (3) Assembly Language Instructions are the primitive operations that a CPU may execute. Different CPUs implement slightly different sets of instructions. The set of instructions a particular CPU implements is part of the Instruction Set Architecture (ISA). Examples: Intel 80x86 (Pentium 4), IBM/Motorola PowerPC (Old Macintosh), MIPS, Intel IA64, ARM,... Assembly language is a textual version of these instructions. Assembly language is used: As an output of the C compiler, or As a means to directly program the CPU. Why CS 61C L08 C Introduction to MIPS (4) would anyone want to do this?!

Book: Programming From the Ground Up A new book was just released which is based on a new concept - teaching computer science through assembly language (Linux x86 assembly language, to be exact). This book teaches how the machine itself operates, rather than just the language. I've found that the key difference between mediocre and excellent programmers is whether or not they know assembly language. Those that do tend to understand computers themselves at a much deeper level. Although [almost!] unheard of today, this concept isn't really all that new -- there used to not be much choice in years past. Apple computers came with only BASIC and assembly language, and there were books available on assembly language for kids. This is why the old-timers are often viewed as 'wizards': they had to know assembly language programming. -- slashdot.org comment, 2004-02-05 CS 61C L08 C Introduction to MIPS (5) Instruction Set Architectures When assembly language programming was still popular, trend was to add more and more instructions to new CPUs to do elaborate operations VAX architecture had an instruction to evaluate polynomials! RISC philosophy (Cocke IBM, Patterson, 1980s) Reduced Instruction Set Computing Keep the instruction set small and simple, makes it easier to build fast hardware. Let software do complicated operations by composing simpler ones. CS 61C L08 C Introduction to MIPS (6)

MIPS Architecture MIPS semiconductor company that built one of the first commercial RISC architectures We will study the MIPS architecture in some detail in this class (also used in upper division courses CS 152, 162, 164) Why MIPS instead of Intel 80x86? MIPS is simple, elegant. MIPS still widely used in embedded applications. CS 61C L08 C Introduction to MIPS (7) Assembly Variables: Registers (1/4) Unlike HLL like C or Java, MIPS assembly cannot operate directly on variables in memory Why not? Keep Hardware Simple Assembly Operands are registers limited number of special storage locations built directly into the CPU operations can only be performed on these! Instructions to load/store registers from memory Benefit: Since registers are directly in the CPU, they are very fast (faster than 1 billionth of a second) CS 61C L08 C Introduction to MIPS (8)

Assembly Variables: Registers (2/4) Drawback: Since registers are in the CPU and must be fast, there are a limited number of them Solution: MIPS code must be very carefully put together to efficiently use registers MIPS has 32 registers Why only 32? - Smaller is faster - Small register addresses keeps instruction representation small. Each MIPS register is 32 bits wide Groups of 32 bits called a word in MIPS CS 61C L08 C Introduction to MIPS (9) Assembly Variables: Registers (3/4) Registers are numbered from 0 to 31 In assembly language each register can be referred to by number or name Number references: $0, $1, $2, $30, $31 Register File 31... 2 1 0 32 bits CS 61C L08 C Introduction to MIPS (10)

Assembly Variables: Registers (4/4) By convention, each register also has a name to make it easier to code For now: $16 - $23 $s0 - $s7 (correspond to C variables) $8 - $15 $t0 - $t7 (correspond to temporary variables) Later will explain other 16 register names In general, use the names to make your code more readable CS 61C L08 C Introduction to MIPS (11) C, Java variables vs. registers In C (and most High Level Languages) variables declared first and given a type Example: int fahr, celsius; char a, b, c, d, e; Each variable can ONLY represent a value of the type it was declared as (cannot mix and match int and char variables). In Assembly Language, the registers have no type; operation determines how register contents are treated CS 61C L08 C Introduction to MIPS (12)

Comments in Assembly Another way to make your code more readable: comments! Hash (#) is used for MIPS comments anything from hash mark to end of line is a comment and will be ignored Note: Different from C. C comments have format /* comment */ so they can span many lines CS 61C L08 C Introduction to MIPS (13) Assembly Instructions In assembly language, each statement (called an Instruction), executes exactly one of a short list of simple commands Unlike in C (and most other High Level Languages), each line of assembly code contains at most 1 instruction Instructions are related to operations (=, +, -, *, /) in C or Java Ok, enough already gimme my MIPS! CS 61C L08 C Introduction to MIPS (14)

MIPS Addition and Subtraction (1/4) Syntax of Instructions: 1 2,3,4 where: 1) name of operation 2) operand getting result ( destination ) 3) First operand for operation ( source1 ) 4) Second operand for operation ( source2 ) Syntax is rigid: 1 operator, 3 operands Why? Keep Hardware simple via regularity CS 61C L08 C Introduction to MIPS (15) Addition and Subtraction of Integers (2/4) Addition in Assembly Example: add $s0,$s1,$s2 (in MIPS) Equivalent to: a = b + c (in C) where MIPS registers $s0,$s1,$s2 are associated with C variables a, b, c Subtraction in Assembly Example: sub $s3,$s4,$s5 (in MIPS) Equivalent to: d = e - f (in C) where MIPS registers $s3,$s4,$s5 are associated with C variables d, e, f CS 61C L08 C Introduction to MIPS (16)

Addition and Subtraction of Integers (3/4) How do the following C statement? CS 61C L08 C Introduction to MIPS (17) a = b + c + d - e; Break into multiple instructions add $t0, $s1, $s2 # temp = b + c add $t0, $t0, $s3 # temp = temp + d sub $s0, $t0, $s4 # a = temp - e Notice: A single line of C may break up into several lines of MIPS. Notice: Everything after the hash mark on each line is ignored (comments) Addition and Subtraction of Integers (4/4) How do we do this? f = (g + h) - (i + j); Use 2 intermediate temporary registers add $t0,$s1,$s2 # temp = g + h add $t1,$s3,$s4 # temp = i + j sub $s0,$t0,$t1 # f=(g+h)-(i+j) CS 61C L08 C Introduction to MIPS (18)

Register Zero The number zero (0), appears very often in code. MIPS defines register zero ($0 or $zero) to always have the value 0; eg. add $s0,$s1,$zero (in MIPS) f = g (in C) where MIPS registers $s0,$s1 are associated with C variables f, g $0 is unchangeable, so an instruction add $zero,$zero,$s0 will not do anything! CS 61C L08 C Introduction to MIPS (19) Immediates Immediates are numerical constants. They appear often in code, so there are special instructions for them. Add Immediate: CS 61C L08 C Introduction to MIPS (20) addi $s0,$s1,10 (in MIPS) f = g + 10 (in C) where MIPS registers $s0,$s1 are associated with C variables f, g Syntax similar to add instruction, except that last argument is a number instead of a register.

Immediates There is no Subtract Immediate in MIPS: Why? Limit types of operations that can be done to absolute minimum if an operation can be decomposed into a simpler operation, don t include it addi, -X = subi, X => so no subi addi $s0,$s1,-10 (in MIPS) f = g - 10 (in C) where MIPS registers $s0,$s1 are associated with C variables f, g CS 61C L08 C Introduction to MIPS (21) Peer Instruction Quiz: A. Types are associated with declaration in C (normally), but are associated with instruction (operator) in MIPS. B. Since there are only 8 local ($s) and 8 temp ($t) variables, we can t write MIPS for C exprs that contain > 16 vars. C. If p (stored in $s0) were a pointer to an array of ints, then p++; would be addi $s0 $s0 1 A B C 1 F F F 2 F F T 3 F T F 4 F T T 5 T F F 6 T F T 7 T T F 8 T T T CS 61C L08 C Introduction to MIPS (22)

And in Conclusion In MIPS Assembly Language: Registers replace C variables One Instruction (simple operation) per line Simpler is Better Smaller is Faster Instructions introduced: add, addi, sub Registers introduced: C Variables: $s0 - $s7 Temporary Variables: $t0 - $t9 Zero: $zero CS 61C L08 C Introduction to MIPS (23)