0% found this document useful (0 votes)
301 views66 pages

Risc V

The document discusses instruction set architectures (ISAs) and compares RISC-V to other ISAs like MIPS and ARM. It explains how programs are abstracted across different levels from high-level languages to machine code and the role of ISAs in bridging hardware and software. Key aspects of ISA design like register usage, memory access, and arithmetic operations are covered along with comparing RISC and CISC design philosophies.

Uploaded by

farha19
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
0% found this document useful (0 votes)
301 views66 pages

Risc V

The document discusses instruction set architectures (ISAs) and compares RISC-V to other ISAs like MIPS and ARM. It explains how programs are abstracted across different levels from high-level languages to machine code and the role of ISAs in bridging hardware and software. Key aspects of ISA design like register usage, memory access, and arithmetic operations are covered along with comparing RISC and CISC design philosophies.

Uploaded by

farha19
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 66

ISA and RISCV

CASS 2018
Lavanya Ramapantulu
Program
• Program = ??

• Algorithm + Data Structures – Niklaus Wirth

• Program (Abstraction) of processor/hardware


that executes

3-Jul-18 CASS18 - ISA and RISCV 2


Program Abstractions
• You write programs in high level
programming languages, e.g., C/C++,
Java:
k = k+1
• Compiler translates this into assembly
language statement:

add x6,x10,x6

• Assembler translates this statement


into machine language instructions
that the processor can execute:

0000 0000 0110 0101 0000 0011 0011 0011

3-Jul-18 CASS18 - ISA and RISCV 3


Program Abstractions – Why ?
• Machine code
– Instructions are represented in binary
– 1000110010100000 is an instruction that tells one computer to add
two numbers
– Hard and tedious for programmer
• Assembly language
– Symbolic version of machine code
– Human readable
– add A, B is equivalent to 1000110010100000
– Assembler translates from assembly language to machine code
• How many assembly instructions should you
write to read two memory locations, and add
them ?

3-Jul-18 CASS18 - ISA and RISCV 4


Instruction Set Architecture
An abstraction on the interface between the
hardware and the low-level software.
Software
(to be translated to
the instruction set)

Instruction Set Architecture


Hardware
(implementing the
instruction set)

Does a given ISA have a fixed implementation ?


Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-9-MIPS-1-full.pptx
3-Jul-18 CASS18 - ISA and RISCV 5
ISA Design Philosophies
• Complex Instruction Set Computer (CISC)
– example: x86-32 (IA32)
– single instruction performs complex operation
– smaller assembly code size
• lesser memory for storing program
• Reduced Instruction Set Computer (RISC)
– example: MIPS, ARM, RISC-V
– multiple instructions to perform complex operation
• Compiler design ?
• Hardware implementation ?

3-Jul-18 CASS18 - ISA and RISCV 6


Execution flow of a program

• example of the computer components


activated, instructions executed and data flow
during an example code execution
//assume res is 0 initially
res  res + i
for (i = 1; i < 10; i++) {
compile to i  i + 1
res = res + i;
if i < 10, repeat
}

C-like code
"Assembly" Code
fragment
Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-9-MIPS-1-full.pptx
3-Jul-18 CASS18 - ISA and RISCV 7
Recap: Computer Components
• What are the two major components in a
computer
Memory
Processor

Bus
Perform Bridge between the two
components
computation
Storage of code
and data

Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-9-MIPS-1-full.pptx


3-Jul-18 CASS18 - ISA and RISCV 8
Recap: Execution flow and Data flow

• The code and data reside in memory


– Transferred into the processor during execution
Memory
Processor
Inst res  res + i ………..
Bus res  res + i
i i+1
res+i if i < 10,
ALU
………
i 1
res 0

………..

Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-9-MIPS-1-full.pptx


3-Jul-18 CASS18 - ISA and RISCV 9
Memory access is slow!
• To avoid frequent access of memory
– Provide temporary storage for values in the
processor (known as registers)
Memory
Processor
Inst ………..
Bus res  res + i
i i+1
r0
if i < 10,
r1 ALU
.. …
………
i 1
res 0

………..

Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-9-MIPS-1-full.pptx


3-Jul-18 CASS18 - ISA and RISCV 10
Memory instruction
• Need instruction to move data into registers
– also from registers to memory later
Memory
………..
Processor r0  load i
r1  load res
Inst r0  load i
Bus res  res + i
i i+1
r0 1
if i < 10,
r1 ALU
.. …
………
i 1
Moving data from memory into a register – res 0
load
Moving data from a register into memory – ………..
store
Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-9-MIPS-1-full.pptx
3-Jul-18 CASS18 - ISA and RISCV 11
Reg-to-Reg Arithmetic
• Arithmetic operation can now work directly on
registers only:
Memory
– Much faster! ………..
Processor r0  load i
r1  load res
Inst r1  r1 + r0
Bus r1  r1 + r0
r0  r0 + 1
r0 1
ALU if r0 < 10,
r1 1
.. …
………
i 1
res 0

………..

Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-9-MIPS-1-full.pptx


3-Jul-18 CASS18 - ISA and RISCV 12
Reg-to-Reg Arithmetic
• Sometimes, arithmetic operation uses a
constant value instead of register value
Memory
………..
Processor r0  load i
r1  load res
Inst r0  r0 + 1
Bus r1  r1 + r0
r0  r0 + 1
r0 2
ALU if r0 < 10,
r1 1 1
.. …
………
i 1
res 0

………..

Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-9-MIPS-1-full.pptx


3-Jul-18 CASS18 - ISA and RISCV 13
Execution sequence
• Instruction is executed sequentially by default
– How do we “repeat” or “make a choice”?
Memory
………..
Processor r0  load i
r1  load res
Inst
Bus r1  r1 + r0
r0  r0 + 1
r0
ALU if r0 < 10,
r1
.. …
………
i 1
res 0

………..

Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-9-MIPS-1-full.pptx


3-Jul-18 CASS18 - ISA and RISCV 14
Control flow instruction
• We need instruction to change the control flow based on
condition:
– Repetition (loop) and Selection (if-else) can both be supported
Memory
………..
Processor r0  load i
r1  load res
Inst if r0 < 10, repeat
Bus r1  r1 + r0
r0  r0 + 1
r0 2
ALU if r0 < 10,
r1 1
.. …
………
i 1
res 0

………..

Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-9-MIPS-1-full.pptx


3-Jul-18 CASS18 - ISA and RISCV 15
Looping!
• Since the condition succeeded, execution will
repeat from the indicated position
Memory
………..
Processor r0  load i
r1  load res
Inst r1  r1 + r0
Bus r1  r1 + r0
r0  r0 + 1
r0 2
ALU if r0 < 10,
r1 3
.. …
………
i 1
res 0

………..

Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-9-MIPS-1-full.pptx


3-Jul-18 CASS18 - ISA and RISCV 16
Looping!
• Execution will continue sequentially:
– Until we see another control flow instruction!
Memory
………..
Processor r0  load i
r1  load res
Inst r0  r0 + 1
Bus r1  r1 + r0
r0  r0 + 1
r0 3
ALU if r0 < 10,
r1 3 1
.. …
………
i 1
res 0

………..

Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-9-MIPS-1-full.pptx


3-Jul-18 CASS18 - ISA and RISCV 17
Control flow instruction
• The three instructions will be repeated until
the condition fails
Memory
………..
Processor r0  load i
r1  load res
Inst if r0 < 10, repeat
Bus r1  r1 + r0
r0  r0 + 1
r0 10
ALU if r0 < 10,
r1 45
.. …
………
i 1
res 0

………..

Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-9-MIPS-1-full.pptx


3-Jul-18 CASS18 - ISA and RISCV 18
Memory instruction
• We can now move back the values from register
to their “home” in memory
– Similarly for the "r1" to "res" Memory
………..
Processor r0  load i
r1  load res
Inst i store r0
Bus r1  r1 + r0
r0  r0 + 1
r0 10
ALU if r0 < 10,
r1 45
i store r0
.. …
………
i 10
res 0

………..

Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-9-MIPS-1-full.pptx


3-Jul-18 CASS18 - ISA and RISCV 19
Summary of observations
• The stored-memory concept:
– Both instruction and data are stored in memory
• The load-store model:
– Limit memory operations and relies on registers
for storage during execution
• The major types of assembly instruction:
– Memory: Move values between memory and
registers
– Calculation: Arithmetic and other operations
– Control flow: Change the sequential execution

Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-9-MIPS-1-full.pptx


3-Jul-18 CASS18 - ISA and RISCV
20
ISA Concepts
Concept #1: Data Storage
Concept #2: Memory Addressing Modes
Concept #3: Operations in the Instruction Set
Concept #4: Instruction Formats
Concept #5: Encoding the Instruction Set

Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-13b-ISA.pptx


Concept #1: Data Storage
• Storage Architecture
• General Purpose Register Architecture

Concept #1: Data Storage


Concept #2: Memory Addressing Modes
Concept #3: Operations in the Instruction Set
Concept #4: Instruction Formats
Concept #5: Encoding the Instruction Set

Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-13b-ISA.pptx


3-Jul-18 CASS18 - ISA and RISCV 22
Storage Architecture: Definition
C = A + B Operands may be
operands operator implicit or explicit.

• Under Von Neumann Architecture:


– Data (operands) are stored in memory
• For a processor, storage architecture concerns
with:
– Where do we store the operands so that the
computation can be performed?
– Where do we store the computation result
afterwards?
– How do we specify the operands?
• Major storage architectures in the next slide
Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-13b-ISA.pptx
3-Jul-18 CASS18 - ISA and RISCV 23
Storage Architecture: Common Design
▪ Stack architecture:
▪ Operands are implicitly on top of the stack.
▪ Accumulator architecture:
▪ One operand is implicitly in the accumulator (a register). Examples:
IBM 701, DEC PDP-8.
▪ General-purpose register architecture:
▪ Only explicit operands.
▪ Register-memory architecture (one operand in memory). Examples:
Motorola 68000, Intel 80386.
▪ Register-register (or load-store) architecture.
Examples: MIPS, DEC Alpha.
▪ Memory-memory architecture:
▪ All operands in memory. Example: DEC VAX.
Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-13b-ISA.pptx
3-Jul-18 CASS18 - ISA and RISCV 24
Storage Architecture: Example
Stack Accumulator Register (load-store) Memory-Memory
Push A Load A Load R1,A Add C, A, B
Push B Add B Load R2,B
Add Store C Add R3,R1,R2
Pop C Store R3,C
Memory-Memory

C = A+B

Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-13b-ISA.pptx


3-Jul-18 CASS18 - ISA and RISCV 25
Storage Architecture: GPR Architecture
• For modern processors:
– General-Purpose Register (GPR) is the most
common choice for storage design

– RISC computers typically uses Register-Register


(Load/Store) design
• E.g. MIPS, ARM, RISC-V

– CISC computers use a mixture of Register-Register


and Register-Memory
• E.g. IA32
Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-13b-ISA.pptx
3-Jul-18 CASS18 - ISA and RISCV 26
Concept #2: Memory & Addressing Mode

• Memory Locations and Addresses


• Addressing Modes

Concept #1: Data Storage


Concept #2: Memory & Addressing Modes
Concept #3: Operations in the Instruction Set
Concept #4: Instruction Formats
Concept #5: Encoding the Instruction Set

Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-13b-ISA.pptx


3-Jul-18 CASS18 - ISA and RISCV 27
Memory Address and Content
▪ Given k-bit address, the address space is of size 2k
▪ Each memory transfer consists of one word of n bits
Processor Address Memory
k
Up to 2 0
addressable 1
locations. 2
Memory
3
Address 4
k-bit address bus
Register 5

Memory
Data n-bit data bus :
Register

Control lines
(R/W, etc.)

Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-13b-ISA.pptx


3-Jul-18 CASS18 - ISA and RISCV 28
Addressing Modes
• Addressing Mode:
– Ways to specify an operand in an assembly language

• In RISC-V, there are only 4 addressing modes:


– Register:
• Operand is in a register
– Immediate:
• Operand is specified in the instruction directly
– Displacement:
• Operand is in memory with address calculated as Base + Offset
– PC-Relative:
• Operand is in memory with address calculated as PC + Offset

3-Jul-18 CASS18 - ISA and RISCV 29


Addressing Modes: Other
Addressing mode Example Meaning
Register Add R4,R3 R4  R4+R3
Immediate Add R4,#3 R4  R4+3

Displacement Add R4,100(R1) R4  R4+Mem[100+R1]

Register indirect Add R4,(R1) R4  R4+Mem[R1]


Indexed / Base Add R3,(R1+R2) R3  R3+Mem[R1+R2]

Direct or absolute Add R1,(1001) R1  R1+Mem[1001]

Memory indirect Add R1,@(R3) R1  R1+Mem[Mem[R3]]

Auto-increment Add R1,(R2)+ R1  R1+Mem[R2]; R2  R2+d

Auto-decrement Add R1,–(R2) R2  R2-d; R1  R1+Mem[R2]

Scaled Add R1,100(R2)[R3] R1  R1+Mem[100+R2+R3*d]


Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-13b-ISA.pptx
3-Jul-18 CASS18 - ISA and RISCV 30
Concept #3: Operations in Instruction Set

• Standard Operations in an Instruction Set


• Frequently Used Instructions

Concept #1: Data Storage


Concept #2: Memory Addressing Modes
Concept #3: Operations in the Instruction Set
Concept #4: Instruction Formats
Concept #5: Encoding the Instruction Set

Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-13b-ISA.pptx


3-Jul-18 CASS18 - ISA and RISCV 31
Standard
Data Movement
Operations
load (from memory)
store (to memory)
memory-to-memory move
register-to-register move
input (from I/O device)
output (to I/O device)
push, pop (to/from stack)
Arithmetic integer (binary + decimal) or FP
add, subtract, multiply, divide
Shift shift left/right, rotate left/right
Logical not, and, or, set, clear
Control flow Jump (unconditional), Branch (conditional)
Subroutine Linkage call, return
Interrupt trap, return
Synchronization test & set (atomic r-m-w)
String search, move, compare
Graphics pixel and vertex operations,
compression/decompression
Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-13b-ISA.pptx
3-Jul-18 CASS18 - ISA and RISCV 32
Concept #4: Instruction Formats

• Instruction Length
• Instruction Fields
– Type and Size of Operands
Concept #1: Data Storage
Concept #2: Memory Addressing Modes
Concept #3: Operations in the Instruction Set
Concept #4: Instruction Formats
Concept #5: Encoding the Instruction Set

Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-13b-ISA.pptx


3-Jul-18 CASS18 - ISA and RISCV 33
Instruction Length
▪ Variable-length instructions.
▪ Intel 80x86: Instructions vary from 1 to 17
bytes long.
▪ Digital VAX: Instructions vary from 1 to 54
bytes long.
▪ Require multi-step fetch and decode.
▪ Allow for a more flexible (but complex) and
compact instruction set.
▪ Fixed-length instructions.
▪ Used in most RISC (Reduced Instruction Set Computers)
▪ MIPS, PowerPC: Instructions are 4 bytes long.
▪ Allow for easy fetch and decode.
▪ Simplify pipelining and parallelism.
▪ Instruction bits are scarce.
▪ Hybrid instructions: a mix of variable- and fixed-length instructions.
Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-13b-ISA.pptx
3-Jul-18 CASS18 - ISA and RISCV 34
Instruction Fields
▪ An instruction consists of
▪ opcode : unique code to specify the desired operation
▪ operands: zero or more additional information needed for the
operation
▪ The operation designates the type and size of the operands
▪ Typical type and size: Character (8 bits), half-word (eg: 16 bits), word
(eg: 32 bits), single-precision floating point (eg: 1 word), double-
precision floating point (eg: 2 words).

▪ Expectations from any new 32-bit architecture:


▪ Support for 8-, 16- and 32-bit integer and 32-bit and 64-bit floating
point operations. A 64-bit architecture would need to support 64-bit
integers as well.

Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-13b-ISA.pptx


3-Jul-18 CASS18 - ISA and RISCV 35
Frequently Used Instructions
Average
Rank Integer Instructions
Percentage
1 Load 22%
2 Conditional Branch 20% Make these instructions fast!
Amdahl’s law – make the
3 Compare 16%
common case fast!
4 Store 12%
5 Add 8%
6 Bitwise AND 6%
7 Sub 5%
8 Move register to register 4%
9 Procedure call 1%
10 Return 1%
Total 96%

Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-13b-ISA.pptx


3-Jul-18 CASS18 - ISA and RISCV 36
Concept #5: Encoding the Instruction Set

• Instruction Encoding
• Encoding for Fixed-Length Instructions

Concept #1: Data Storage


Concept #2: Memory Addressing Modes
Concept #3: Operations in the Instruction Set
Concept #4: Instruction Formats
Concept #5: Encoding the Instruction Set

Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-13b-ISA.pptx


3-Jul-18 CASS18 - ISA and RISCV 37
Instruction Encoding: Overview
▪ How are instructions represented in binary format for
execution by the processor?
▪ Issues:
▪ Code size, speed/performance, design complexity.
▪ Things to be decided:
▪ Number of registers
▪ Number of addressing modes
▪ Number of operands in an instruction
▪ The different competing forces:
▪ Have many registers and addressing modes
▪ Reduce code size
▪ Have instruction length that is easy to handle (fixed-length instructions
are easy to handle)
Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-13b-ISA.pptx
3-Jul-18 CASS18 - ISA and RISCV 38
Encoding Choices
▪ Three encoding choices: variable, fixed, hybrid.

Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-13b-ISA.pptx


3-Jul-18 CASS18 - ISA and RISCV 39
Fixed Length Instruction: Encoding (1/4)
• Fixed length instruction presents a much more
interesting challenge:
– Q: How to fit multiple sets of instruction types into
same number of bits?
– A: Work with the most constrained instruction types
first

• Expanding Opcode scheme:


– The opcode has variable lengths for different
instructions.
– A good way to maximizes the instruction bits.
Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-13b-ISA.pptx
3-Jul-18 CASS18 - ISA and RISCV 40
Fixed Length Instruction: Encoding (2/4)
• Example:
– 16-bit fixed length instructions, with 2 types of instructions
– Type-A: 2 operands, each operand is 5-bit
– Type-B: 1 operand of 5-bit

First Attempt:
Fixed length Opcode

opcode operand operand Problem:


Type-A 6 bits 5 bits 5 bits ▪ Wasted bits in Type-
B instruction
opcode operand unused ▪ Maximum total
Type-B 6 bits 5 bits 5 bits number of
instructions is 26 or
64.
Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-13b-ISA.pptx
3-Jul-18 CASS18 - ISA and RISCV 41
Fixed Length Instruction: Encoding (3/4)
• Use expanding opcode scheme:
– Extend the opcode for type-B instructions to 11 bits
 No wasted bits and result in a larger instruction set
opcode operand operand
Second Attempt: Type-A
Expanding Opcode 6 bits 5 bits 5 bits

opcode operand
Type-B 11 bits 5 bits

 Questions:
 How do we distinguish between Type-A and Type-B?
 How many different instructions do we really have?
Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-13b-ISA.pptx
3-Jul-18 CASS18 - ISA and RISCV 42
Fixed Length Instruction: Encoding (4/4)
• What is the maximum number of instructions?
opcode operand operand Answer:
Type-A 6 bits 5 bits 5 bits 1 + (26 –1)  25
opcode operand = 1 + 6332
Type-B 11 bits 5 bits = 2017

 Reasoning:
1. For every 6-bit prefix (front-part) given to Type-B, we get 25 unique
patterns, e.g. [111111]XXXXX
2. So, we should minimize Type-A instruction and give as many 6-bit
prefixes as possible to Type-B
 1 Type-A instruction, 26-1 prefixes for Type-B
Source acknowledgement: http://www.comp.nus.edu.sg/~cs2100/lect/cs2100-13b-ISA.pptx
3-Jul-18 CASS18 - ISA and RISCV 43
Why RISC-V
• Open and free

• Not domain-specific

• To keep things simple, flexible and extensible

• No baggage of legacy

3-Jul-18 CASS18 - ISA and RISCV 44


RISC-V ISA manuals
• User level – Volume 1

• Privileged level – Volume 2

3-Jul-18 CASS18 - ISA and RISCV 45


RISC-V ISA Design Principle-1
• Design Principle 1: Simplicity favours regularity
– Regularity makes implementation simpler
– Simplicity enables higher performance at lower
cost

• E.g. All arithmetic operations have same form


– Two sources and one destination
add a, b, c // a gets b + c

3-Jul-18 CASS18 - ISA and RISCV 46


RISC-V ISA Design Principle-2
• Design Principle 2: Smaller is faster
– memory is larger than no. of registers, use register
operands

• E.g. Arithmetic operations use register operands


and not direct memory
• most implementations have decoding the
operands on the critical path so only 32 registers

3-Jul-18 CASS18 - ISA and RISCV 47


RISC-V ISA Design Principle-3
• Design Principle 3: Make the common case
fast
– Small constants are common
– Immediate operand avoids a load instruction

• support for immediate operands,


• e.g. addi x22, x22, 4

3-Jul-18 CASS18 - ISA and RISCV 48


RISC-V ISA Design Principle-4
• Design Principle 4: Good design demands
good compromises
– Different formats complicate decoding, but allow
32-bit instructions uniformly
– Keep formats as similar as possible

• E.g. R-format and I-format, I-format versus S-


format

3-Jul-18 CASS18 - ISA and RISCV 49


Instruction Encoding
• Variable length encoding supported
• Base-ISA: 32-bits

3-Jul-18 CASS18 - ISA and RISCV 50


R-format Instruction
funct7 rs2 rs1 funct3 rd opcode
7 bits 5 bits 5 bits 3 bits 5 bits 7 bits

• Instruction fields
– opcode: operation code
– rd: destination register number
– funct3: 3-bit function code (additional opcode)
– rs1: the first source register number
– rs2: the second source register number
– funct7: 7-bit function code (additional opcode)

3-Jul-18 CASS18 - ISA and RISCV 51


R-format Example
funct7 rs2 rs1 funct3 rd opcode
7 bits 5 bits 5 bits 3 bits 5 bits 7 bits

0 21 20 0 9 51

0000000 10101 10100 000 01001 0110011

0000 0001 0101 1010 0000 0100 1011 0011two =


015A04B316

3-Jul-18 CASS18 - ISA and RISCV 52


R-format Instructions
• Shift operations (logical and arithmetic)
– SLL, SRL, SRA (why no SLA ?)
• Arithmetic operations
– ADD, SUB
• Logical operations
– XOR, OR, AND (missing NOT ?)
• Compare operations
– SLT, SLTU ( what is a good implementation of
SLTU?)

3-Jul-18 CASS18 - ISA and RISCV 53


I-format Instruction
immediate rs1 funct3 rd opcode
12 bits 5 bits 3 bits 5 bits 7 bits

• Immediate arithmetic and load instructions


– rs1: source or base address register number
– immediate: constant operand, or offset added to base address
• 2s-complement, sign extended

3-Jul-18 CASS18 - ISA and RISCV 54


I-format Instructions
• Loads: LB, LH, LW, LBU, LHU (why not stores ?)
• Shifts: SLLI
• Arithmetic: ADDI (why not sub ?)
• Logical: XORI, ORI, ANDI
• Compare: SLTI, SLTIU
• System call and break , Sync threads, Counters

3-Jul-18 CASS18 - ISA and RISCV 55


S-format Instruction
imm[11:5] rs2 rs1 funct3 imm[4:0] opcode
7 bits 5 bits 5 bits 3 bits 5 bits 7 bits

• Different immediate format for store instructions


– rs1: base address register number
– rs2: source operand register number
– immediate: offset added to base address
• Split so that rs1 and rs2 fields always in the same place

• Stores: SB, SH, SW

3-Jul-18 CASS18 - ISA and RISCV 56


U-format Instruction
immediate rd opcode
20 bits 5 bits 7 bits

• Why is this separate format needed

• How to load a 32 bit constant into a register ?


– Rd [31:12] == immediate[19:0]
– Rd [11:0 ] == 12’b0

• Load upper immediate (LUI)


• Add upper immediate to PC (AUIPC)

3-Jul-18 CASS18 - ISA and RISCV 57


Other instruction formats
• What is missing ?

• NOP ?

• Is the above list complete ?

• Control flow instructions

3-Jul-18 CASS18 - ISA and RISCV 58


SB-format Instruction
imm[12] imm[10:5] rs2 rs1 funct3 imm[4:1] imm[11] opcode
1 bit 6 bits 5 bits 5 bits 3 bits 4 bits 1 bit 7 bits

• Why different immediate format for branch instructions

• What about imm[0] ?

• Branches: BEQ, BNE, BLT, BGE, BLTU, BGEU


• What about overflows ?
3-Jul-18 CASS18 - ISA and RISCV 59
UJ-format Instruction

imm[20] imm[10:1] imm[11] imm[19:12] rd opcode


20 bits 5 bits 7 bits

• Why different immediate format for jump ?


• What about imm[0] ?
• JAL – jump and link
• What about JALR ( jump and link return ?)
– I-type format, Why ?

3-Jul-18 CASS18 - ISA and RISCV 60


Addressing Modes

3-Jul-18 CASS18 - ISA and RISCV 61


Types of Immediate

3-Jul-18 CASS18 - ISA and RISCV 62


§2.10 RISC-V Addressing for Wide Immediates and Addresses
32-bit Constants
• Most constants are small
– 12-bit immediate is sufficient
• For the occasional 32-bit constant
lui rd, constant
– Copies 20-bit constant to bits [31:12] of rd
– Extends bit 31 to bits [63:32]
– Clears bits [11:0] of rd to 0

lui x19, 976 // 0x003D0


0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0011 1101 0000 0000 0000 0000

addi x19,x19,128 // 0x500


0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0011 1101 0000 0101 0000 0000

3-Jul-18 CASS18 - ISA and RISCV 63


Branch Addressing
• Branch instructions specify
– Opcode, two registers, target address
• Most branch targets are near branch
– Forward or backward
• SB format:
imm imm
[10:5] rs2 rs1 funct3 [4:1] opcode

imm[12] imm[11]

 PC-relative addressing
 Target address = PC + immediate × 2
3-Jul-18 CASS18 - ISA and RISCV 64
Jump Addressing
• Jump and link (jal) target uses 20-bit
immediate for larger range
• UJ format:
imm[10:1] imm[19:12] rd opcode
5 bits 7 bits
imm[20] imm[11]

 For long jumps, eg, to 32-bit absolute


address
 lui: load address[31:12] to temp register
 jalr: add address[11:0] and jump to target
3-Jul-18 CASS18 - ISA and RISCV 65
References
• RISC-V User-level ISA specification
https://riscv.org/specifications/
• Computer Organization and Design RISC-V
Edition, 1st Edition, The Hardware Software
Interface by David Patterson John Hennessy -
Chapter 2

3-Jul-18 CASS18 - ISA and RISCV 66

You might also like