17
INSTRUCTION SET ARCHITECTURE CS/ECE 3810: Computer Organization Mahdi Nazm Bojnordi Assistant Professor School of Computing University of Utah

INSTRUCTION SET ARCHITECTUREbojnordi/classes/3810/s19/slides/06-isa.pdf · 2019. 1. 29. · INSTRUCTION SET ARCHITECTURE CS/ECE 3810: Computer Organization Mahdi NazmBojnordi Assistant

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: INSTRUCTION SET ARCHITECTUREbojnordi/classes/3810/s19/slides/06-isa.pdf · 2019. 1. 29. · INSTRUCTION SET ARCHITECTURE CS/ECE 3810: Computer Organization Mahdi NazmBojnordi Assistant

INSTRUCTION SET ARCHITECTURE

CS/ECE 3810: Computer Organization

Mahdi Nazm Bojnordi

Assistant Professor

School of Computing

University of Utah

Page 2: INSTRUCTION SET ARCHITECTUREbojnordi/classes/3810/s19/slides/06-isa.pdf · 2019. 1. 29. · INSTRUCTION SET ARCHITECTURE CS/ECE 3810: Computer Organization Mahdi NazmBojnordi Assistant

Constant Values

¨ Constant values are defined/used in code¤ Known to the programmer¤ Zero is commonly used

Memory

CPU

How to handle constants in the ISA?

0

Page 3: INSTRUCTION SET ARCHITECTUREbojnordi/classes/3810/s19/slides/06-isa.pdf · 2019. 1. 29. · INSTRUCTION SET ARCHITECTURE CS/ECE 3810: Computer Organization Mahdi NazmBojnordi Assistant

Immediate Operand

¨ An instruction may require a constant as input

¨ An immediate instruction uses a constant number as one of the inputs (instead of a register operand)

¨ Putting a constant in a register requires addition to register $zero (a special register that always has zero in it) -- since every instruction requires at least one operand to be a register

¨ For example, putting the constant 1000 into a register:¤ addi $s0, $zero, 1000

Page 4: INSTRUCTION SET ARCHITECTUREbojnordi/classes/3810/s19/slides/06-isa.pdf · 2019. 1. 29. · INSTRUCTION SET ARCHITECTURE CS/ECE 3810: Computer Organization Mahdi NazmBojnordi Assistant

Memory Instruction Format

¨ The format of a load instruction:

destination registersource register

lw $t0, 8($t3)

any register

a constant added to the register in brackets

Memory

CPU

Page 5: INSTRUCTION SET ARCHITECTUREbojnordi/classes/3810/s19/slides/06-isa.pdf · 2019. 1. 29. · INSTRUCTION SET ARCHITECTURE CS/ECE 3810: Computer Organization Mahdi NazmBojnordi Assistant

Memory Instruction Format

¨ The format of a load instruction:

source registersource register

sw $t0, 8($t3)

any register

a constant added to the register in brackets

Memory

CPU

Page 6: INSTRUCTION SET ARCHITECTUREbojnordi/classes/3810/s19/slides/06-isa.pdf · 2019. 1. 29. · INSTRUCTION SET ARCHITECTURE CS/ECE 3810: Computer Organization Mahdi NazmBojnordi Assistant

Example MIPS Translation

¨ int a, b, c, d[10]

¨ Task: bring a, b, c, d[0], and d[1] to $s1-$s5

Memory

1000

Page 7: INSTRUCTION SET ARCHITECTUREbojnordi/classes/3810/s19/slides/06-isa.pdf · 2019. 1. 29. · INSTRUCTION SET ARCHITECTURE CS/ECE 3810: Computer Organization Mahdi NazmBojnordi Assistant

Example MIPS Translation

¨ int a, b, c, d[10]

¨ Task: bring a, b, c, d[0], and d[1] to $s1-$s5

Memory

1000

addi $t0, $zero, 1000 # put base address 1000 in $t0;# $zero is a register that always equals zero

Page 8: INSTRUCTION SET ARCHITECTUREbojnordi/classes/3810/s19/slides/06-isa.pdf · 2019. 1. 29. · INSTRUCTION SET ARCHITECTURE CS/ECE 3810: Computer Organization Mahdi NazmBojnordi Assistant

Example MIPS Translation

¨ int a, b, c, d[10]

¨ Task: bring a, b, c, d[0], and d[1] to $s1-$s5

Memory

1000

addi $t0, $zero, 1000 # put base address 1000 in $t0;# $zero is a register that always equals zero

lw $s1, 0($t0) # brings value of a into register $s1lw $s2, 4($t0) # brings value of b into register $s2lw $s3, 8($t0) # brings value of c into register $s3lw $s4, 12($t0) # brings value of d[0] into register $s4lw $s5, 16($t0) # brings value of d[1] into register $s5

Page 9: INSTRUCTION SET ARCHITECTUREbojnordi/classes/3810/s19/slides/06-isa.pdf · 2019. 1. 29. · INSTRUCTION SET ARCHITECTURE CS/ECE 3810: Computer Organization Mahdi NazmBojnordi Assistant

Example MIPS Translation

¨ Convert the following C code to assembly¤ d[3] = d[2] + a;

Memory

1000

Page 10: INSTRUCTION SET ARCHITECTUREbojnordi/classes/3810/s19/slides/06-isa.pdf · 2019. 1. 29. · INSTRUCTION SET ARCHITECTURE CS/ECE 3810: Computer Organization Mahdi NazmBojnordi Assistant

Example MIPS Translation

¨ Convert the following C code to assembly¤ d[3] = d[2] + a;

Memory

1000addi $t0, $zero, 1000 # put base address 1000 in $t0;

# $zero is a register that always equals zero

lw $s0, 0($t0) # a is brought into $s0lw $s1, 20($t0) # d[2] is brought into $s1add $t1, $s0, $s1 # the sum is in $t1sw $t1, 24($t0) # $t1 is stored into d[3]

Page 11: INSTRUCTION SET ARCHITECTUREbojnordi/classes/3810/s19/slides/06-isa.pdf · 2019. 1. 29. · INSTRUCTION SET ARCHITECTURE CS/ECE 3810: Computer Organization Mahdi NazmBojnordi Assistant

Instruction Formats

¨ Instructions are represented as 32-bit numbers¤ Each instruction word has multiple fields

¨ MIPS Instruction Types¤ R-type

n add $t0, $s1, $s2

Memory

CPU

00010010101…001010001001001…101011001001001…0001…

decoder

000000 10001 10010 01000 00000 100000

Page 12: INSTRUCTION SET ARCHITECTUREbojnordi/classes/3810/s19/slides/06-isa.pdf · 2019. 1. 29. · INSTRUCTION SET ARCHITECTURE CS/ECE 3810: Computer Organization Mahdi NazmBojnordi Assistant

Instruction Formats

¨ Instructions are represented as 32-bit numbers¤ Each instruction word has multiple fields

¨ MIPS Instruction Types¤ R-type

n add $t0, $s1, $s2

Memory

CPU

00010010101…001010001001001…101011001001001…0001…

decoder

opcode first reg.source

secondreg.

source

destreg.

shiftamount

function

000000 10001 10010 01000 00000 100000

Page 13: INSTRUCTION SET ARCHITECTUREbojnordi/classes/3810/s19/slides/06-isa.pdf · 2019. 1. 29. · INSTRUCTION SET ARCHITECTURE CS/ECE 3810: Computer Organization Mahdi NazmBojnordi Assistant

Instruction Formats

¨ Instructions are represented as 32-bit numbers¤ Each instruction word has multiple fields

¨ MIPS Instruction Types¤ R-type

n add $t0, $s1, $s2

¤ I-typen lw $t0, 32($t1)

Memory

CPU

00010010101…001010001001001…101011001001001…0001…

decoder

100011 01001 01000 0000000000100000

Page 14: INSTRUCTION SET ARCHITECTUREbojnordi/classes/3810/s19/slides/06-isa.pdf · 2019. 1. 29. · INSTRUCTION SET ARCHITECTURE CS/ECE 3810: Computer Organization Mahdi NazmBojnordi Assistant

Logical Operations

¨ Bitwise logical operations

¨ Shift¤ sll $t2, $s0, 4 ¤ srl $t2, $s0, 4

Page 15: INSTRUCTION SET ARCHITECTUREbojnordi/classes/3810/s19/slides/06-isa.pdf · 2019. 1. 29. · INSTRUCTION SET ARCHITECTURE CS/ECE 3810: Computer Organization Mahdi NazmBojnordi Assistant

Logical Operations

¨ Bitwise logical operations

¨ Shift¨ AND

¤and $t0, $t1, $t2

Page 16: INSTRUCTION SET ARCHITECTUREbojnordi/classes/3810/s19/slides/06-isa.pdf · 2019. 1. 29. · INSTRUCTION SET ARCHITECTURE CS/ECE 3810: Computer Organization Mahdi NazmBojnordi Assistant

Logical Operations

¨ Bitwise logical operations

¨ Shift¨ AND¨ OR

¤ or $t0, $t1, $t2

Page 17: INSTRUCTION SET ARCHITECTUREbojnordi/classes/3810/s19/slides/06-isa.pdf · 2019. 1. 29. · INSTRUCTION SET ARCHITECTURE CS/ECE 3810: Computer Organization Mahdi NazmBojnordi Assistant

Logical Operations

¨ Bitwise logical operations

¨ Shift¨ AND¨ OR¨ NOT

¤ nor $t0, $t1, $t2