Csci 136 Computer Architecture II - PowerPoint PPT Presentation

About This Presentation
Title:

Csci 136 Computer Architecture II

Description:

Title: PowerPoint Presentation Author: Xiuzhen Cheng Last modified by: cheng Created Date: 1/15/2003 8:46:02 PM Document presentation format: On-screen Show – PowerPoint PPT presentation

Number of Views:23
Avg rating:3.0/5.0
Slides: 27
Provided by: Xiuz
Category:

less

Transcript and Presenter's Notes

Title: Csci 136 Computer Architecture II


1
Csci 136 Computer Architecture II More on MIPS
ISA
  • Xiuzhen Cheng
  • cheng_at_gwu.edu

2
Announcement
  • Project 1 is due on 1159PM, Feb 13, 2005.

3
What is an ISA?
  • A very important abstraction
  • Provide the interface between the low-level
    software and hardware
  • May have multiple hardware implementations
  • Needs to answer the following questions
  • What is the minimum instruction set to be
    supported?
  • Use general purpose register or not?
  • CIRS or RISC design?
  • Instruction format?
  • Addressing mode?

4
Summary Salient features of MIPS
  • 32-bit fixed format inst (3 formats)
  • 32 32-bit GPR (R0 contains zero) and 32 FP
    registers (and HI LO)
  • 3-address, reg-reg arithmetic instr.
  • Single addressing mode for load/store
    basedisplacement
  • no indirection, scaled
  • 16-bit immediate plus LUI
  • Simple branch conditions
  • compare against zero or two registers for ,?
  • no integer condition codes

5
Summary MIPS Instruction set design
  • Use general purpose registers with a load-store
    architecture yes or no?
  • Provide 32 general purpose registers plus
    separate floating-point registers
  • Whats the addressing mode supported by MIPS?
  • An ISA uses fixed instruction encoding if
    interested in performance and use variable
    instruction encoding if interested in code size.
    What does MIPS ISA do?

6
Summary MIPS Instruction set design
  • Support these data sizes and types 8-bit,
    16-bit, 32-bit integers and 32-bit and 64-bit
    IEEE 754 floating point numbers
  • Support these simple instructions, since they
    will dominate the number of instructions
    executed load, store, add, subtract, move
    register-register, and, shift, compare equal,
    compare not equal, branch, jump, call, and
    return
  • Aim for a minimalist instruction set

7
More Details of MIPS ISA
  • Register 0 always has the value 0 even if you try
    to write it
  • Branch and jump use the PC4 as the reference
    point
  • All instructions change all 32 bits of the
    destination register (including lui, lb, lh) and
    use all 32 bits of source register
  • Immediate arithmetic and logical instructions are
    extended as follows
  • Logical immediate are zero-extended to 32 bits
  • Arithmetic immediate are sign-extended to 32 bits
  • The data loaded by the instructions lb and lh are
    extended as follows
  • lbu, lhu are zero-extended
  • lb, lh are sign-extended
  • Overflow can occur in add, sub, addi, but does
    not in other arithmetic and logical operations

8
MIPS Hardware Design Principles
  • Simplicity favors regularity
  • Keeping the hardware simple!
  • R-Type instruction format
  • Smaller is faster
  • 32 general purpose registers, no more, no less.
  • Good design demands good compromises
  • R, I, J, 3 types of instruction formats
  • Make the common case fast!
  • I-type instructions for constant numbers

9
Symbolic Assembly Form
  • ltLabelgt ltMnemonicgt ltOperandExpgt ltOperandExpgt
    ltCommentgt
  • Loop slti t0, s1, 100 if s1lt100 then
    t01 else t00
  • Label optional
  • Location reference of an instruction
  • Often starts in the 1st column and ends with
  • Mnemonic symbolic name for operations to be
    performed which directs assembler to
  • Arithmetic, data transfer, logic, branch, etc
  • OperandExp value or address of an operand
  • Comments Dont forget me! ?

10
MIPS Assembly Language
  • Refer to the Companion CD.
  • Pseudo-instruction
  • Provided by assembler but not implemented by
    hardware
  • Disintegrated by assembler to one or more
    instructions
  • Example blt 16, 17, Less ? slt 1, 16,
    17 bne 1, 0, Less
  • Directives
  • Tells assembler how to interpret or where to put
    code no machine code is generated.
  • Examples str1 .ascii I am a
    string str2 .asciiz I am a null-terminated
    string .byte 8, 12, 16 .word 8, 12,
    16 .space 12 allocate 12 bytes in data
    segment .data put the following in data
    segment .text put the following in text
    segment .align 2 put the following value on
    word boundary

11
Compiler, Assembler, Linker, Loader
  • The compiler takes one or more source programs
    and converts them to an assembly program
  • The assembler takes an assembly program and
    converts it to machine code an object file (or a
    library)
  • The linker takes multiple object files and
    libraries, decides memory layout and resolves
    references to convert them to a single program
    an executable (or executable file)
  • The loader takes an executable, stores it in
    memory, initializes the segments and stacks, and
    jumps to the initial part of the program. The
    loader also calls exit once the program completes.

12
MIPS Memory Layout (1/2)
sp ? 0x7FFFFFFF
0x00000000 0x00
0x00000001 0xA0
0x00000002 0x3E
0x00000003 0x10

0xFFFFFFFC 0x90
0xFFFFFFFD 0x6F
0xFFFFFFFE 0xA1
0xFFFFFFFF 0x00
Stack segment

--Data segment
Dynamic data
gp ? 0x10008000
Static data
0x10000000
Text segment
Instructions
0x00400000
Reserved
MIPS Memory Layout
Memory Organization
13
MIPS Memory Layout (2/2)
  • How to load a word in the data segment at address
    0x10010020 into register s0?
  • lw/sw can not directly reference data objects
    with their 16-bit offset fields lui t0
    0x1001 lw s0, 0x0020(t0)
  • Global pointer gp points to 0x10008000 lw s0,
    0x8020(gp)

14
Assembler
  • Convert an assembly language instruction to a
    machine language instruction fill fields of the
    machine instruction for the assembly language
    instruction
  • Compute space for data statements, and store data
    in binary representation
  • Put information for placing instructions in
    memory see object file format
  • Example j loop
  • Fill op code 00 0010
  • Fill address field corresponding to the local
    label (loop in this eg)
  • Questions
  • How to find the address of a local or an external
    label?

15
Local Label Address Resolution
  • Assembler reads the program twice
  • First Pass If an instruction has a label, add an
    entry ltlabel, memory address of the instructiongt
    in the symbol table
  • Second Pass if an instruction branches to a
    label, search for an entry with that label in the
    symbol table and resolve the label address
  • Produce machine code
  • External label can not be assembled! need help
    from linker!
  • Assembler reads the program once
  • Produce machine code
  • If an instruction has a unresolved label, record
    the label and the instruction address in the
    backpatch table. After the label is defined, the
    assembler consults the backpatch table to correct
    all binary representation of the instructions
    with that label.

16
Object File Format
  • Object file header
  • Size and position of each piece of the file
  • Text segment
  • Machine language instructions
  • Data segment
  • Binary representation of the data in the source
    file
  • Relocation information
  • Identifies instruction and data words that depend
    on the absolute addresses In MIPS, only lw/sw
    and jal needs absolute address.
  • Symbol table
  • Global symbols defined in the file
  • External references in the file
  • Debugging information

17
Example Object files
Object file header
Name Procedure A
Text Size 0x100
Data size 0x20
Text Segment Address Instruction
0 lw a0, 0(gp)
4 jal 0

Data segment 0 (X)

Relocation information Address Instruction Type Dependency
0 lw X
4 jal B
Symbol Table Label Address
X
B
18
Linker
  • Why needs a linker?
  • Save computing resources and time!
  • A linker converts all object files to an
    executable file
  • Resolve external symbols in all files
  • Use symbol table in all files
  • Search libraries for library functions
  • Assign address to data and instruction in all
    files
  • Place data and text segments of a file relative
    to other files
  • Determine size of text and data segments for the
    program

19
Linking Object Files An Example
Object file header
Name Procedure A
Text Size 0x100
Data size 0x20
Text Segment Address Instruction
0 lw a0, 0(gp)
4 jal 0

Data segment 0 (X)

Relocation information Address Instruction Type Dependency
0 lw X
4 jal B
Symbol Table Label Address
X
B
20
The 2nd Object File
Object file header
Name Procedure B
Text Size 0x200
Data size 0x30
Text Segment Address Instruction
0 sw a1, 0(gp)
4 jal 0

Data segment 0 (Y)

Relocation information Address Instruction Type Dependency
0 sw Y
4 jal A
Symbol Table Label Address
Y
A
21
Solution
Executable file header
Text size 0x300
Data size 0x50
Text segment Address Instruction
0x0040 0000 Lw a0, 0x8000(gp)
0x0040 0004 Jal 0x0040 0100

0x0040 0100 Sw a1, 0x8020(sp)
0x0040 0104 Jal 0x0040 0000

Data segment Address
0x1000 0000 (x)

0x1000 0020 (Y)

22
Loader
  • A loader starts execution of a program
  • Determine the size of text and data through
    executables header
  • Allocate enough memory for text and data
  • Copy data and text into the allocated memory
  • Initialize registers
  • Stack pointer
  • Copy parameters to registers and stack
  • Branch to the 1st instruction in the program

23
Processor Fetch-Execute Cycle
Obtain instruction from program storage
Determine required actions and instruction size
Locate and obtain operand data
Compute result value or status
Deposit results in storage for later use
Determine successor instruction
24
Example Reverse a String (2/1)
  • Write a MIPS procedure to reverse a
    null-terminated character string. Assume the
    address of the string is in a0 and the address
    of the reversed string is in a1. Also assume the
    spaces needed by the reversed string have been
    pre-allocated.

25
Example Reverse a String (2/2)
  • Write a MIPS procedure to reverse a
    null-terminated character string. Assume the
    address of the string is in a0 and the address
    of the reversed string is in a1. Also assume the
    spaces needed by the reversed string have been
    pre-allocated.

reverseStr addiu sp, sp, -32 sw s0,
16(sp) sw s1, 20(sp) move s0,
a0 move s1, a1 addi sp, sp, -1 sb zero,
0(sp) push lbu t0, 0(s0) beq t0, zero,
pop addi s0, s0, 1 addi sp, sp, -1 sb t0,
0(sp) j push
pop lbu t0, 0(sp) addi sp, sp, 1 sb t0,
0(s1) beq t0, zero, done addi s1, s1,
1 j pop done lw s0, 16(sp) lw s1,
20(sp) addi sp, sp, 32 jr ra
26
Questions?
Write a Comment
User Comments (0)
About PowerShow.com