The branch instruction

Slides:



Advertisements
Similar presentations
1 Lecture 3: MIPS Instruction Set Today’s topic:  More MIPS instructions  Procedure call/return Reminder: Assignment 1 is on the class web-page (due.
Advertisements

ISA Issues; Performance Considerations. Testing / System Verilog: ECE385.
1  1998 Morgan Kaufmann Publishers We will be reusing functional units –ALU used to compute address and to increment PC –Memory used for instruction and.
ELEN 468 Advanced Logic Design
The Processor: Datapath & Control
CSCE 212 Quiz 8 – 3/23/11 1.What type of element is the ALU (combinational or state) and what does it mean for an element to be that type? 2.What is the.
Computer Engineering AddSub page 1 Basic Building Blocks Multiplexer + Demultiplexer Adder.
Fall EE 333 Lillevik 333f06-l7 University of Portland School of Engineering Computer Organization Lecture 7 ALU design MIPS data path.
11/02/2009CA&O Lecture 03 by Engr. Umbreen Sabir Computer Architecture & Organization Instructions: Language of Computer Engr. Umbreen Sabir Computer Engineering.
6.S078 - Computer Architecture: A Constructive Approach Introduction to SMIPS Li-Shiuan Peh Computer Science & Artificial Intelligence Lab. Massachusetts.
CDA 3101 Fall 2013 Introduction to Computer Organization
1. Building A CPU  We’ve built a small ALU l Add, Subtract, SLT, And, Or l Could figure out Multiply and Divide  What about the rest l How do.
EE 3755 Datapath Presented by Dr. Alexander Skavantzos.
CS61C L20 Datapath © UC Regents 1 Microprocessor James Tan Adapted from D. Patterson’s CS61C Copyright 2000.
PC Instruction Memory Address Instr. [31-0] 4 Fig 4.6 p 309 Instruction Fetch.
MicroComputer Engineering BranchProcCall page Addiu$t1 $r0 3 Addiu$t1 $t1 5 Addiu$t1 $t1 7 Example.
Elements of Datapath for the fetch and increment The first element we need: a memory unit to store the instructions of a program and supply instructions.
Datapath and Control AddressInstruction Memory Write Data Reg Addr Register File ALU Data Memory Address Write Data Read Data PC Read Data Read Data.
MIPS Processor.
Computer Architecture Lecture 6.  Our implementation of the MIPS is simplified memory-reference instructions: lw, sw arithmetic-logical instructions:
Single-cycle CPU Control
Access the Instruction from Memory
EE204 Computer Architecture
Single Cycle CPU.
CS 230: Computer Organization and Assembly Language
Prof. Hsien-Hsin Sean Lee
Single-Cycle Datapath and Control
Example Addiu $t1 $r0 3 Addiu $t1 $t1 5 Addiu $t1 $t1 7.
MIPS Coding Continued.
Lecture 4: MIPS Instruction Set
ELEN 468 Advanced Logic Design
RISC Concepts, MIPS ISA Logic Design Tutorial 8.
MIPS Processor.
ADITI SHINDE CHIDAMBARAM ALAGAPPAN
CSCI206 - Computer Organization & Programming
CS/COE0447 Computer Organization & Assembly Language
CSCE 212 Chapter 5 The Processor: Datapath and Control
Single-Cycle CPU DataPath.
CS/COE0447 Computer Organization & Assembly Language
CSCI206 - Computer Organization & Programming
CSCI206 - Computer Organization & Programming
MIPS Processor.
MIPS Instructions.
MIPS Instruction Encoding
ECE232: Hardware Organization and Design
Topic 5: Processor Architecture Implementation Methodology
Rocky K. C. Chang 6 November 2017
MIPS Instruction Encoding
Instruction encoding The ISA defines Format = Encoding
Lecture 5: Procedure Calls
The Processor Lecture 3.2: Building a Datapath with Control
Topic 5: Processor Architecture
COMS 361 Computer Organization
COSC 2021: Computer Organization Instructor: Dr. Amir Asif
Basic Building Blocks Multiplexer Demultiplexer Adder +
Instruction encoding The ISA defines Format = Encoding
Access the Instruction from Memory
Instruction encoding The ISA defines Format = Encoding
Review Fig 4.15 page 320 / Fig page 322
Reading and writing to data memory
Basic Building Blocks Multiplexer Demultiplexer Adder +
Datapath and Control Exceptions
Instruction encoding The ISA defines Format = Encoding
MIPS Coding Continued.
CS/COE0447 Computer Organization & Assembly Language
The Processor: Datapath & Control.
COMS 361 Computer Organization
MIPS Processor.
Processor: Datapath and Control
CS/COE0447 Computer Organization & Assembly Language
Presentation transcript:

The branch instruction B label “label” is an instruction address. Instruction addresses are 32 bits. But branch instructions are immediate format, ONLY 16 BITS !?

How it’s done! x B z x, y, z all have y ! absolute values. ! ! But the quantity z ! z - y is an offset ! (a relative value). If the offset z - y can be represented in 16 bits, then it will fit.

But there’s one more trick.... z and y are valid byte addresses, both word aligned! That means that: z = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx00 y = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx00 so z - y = xxxxxxxxxxxxxx00 Why waste space representing two bits which are always zero?

But there’s one more trick.... So, shift the difference (z - y) right two bits. That way, if (z - y) fits in 18 bits we can save the offset in 16 bits!

How does the structure work? x B z When we fetch B z, y ! the program counter ! contains the value x. ! z ! That means y = PC + 4. Since offset = (z - y), then PC + 4 + offset = y + z - y, an absolute address!

To calculate the branch address Instruction memory Program counter B Imm z - y shifted right twice Imm 00 Restore the two zeroes 18 bits 14 18 Sign extend to 32 bits PC + 4 4 + Absolute branch address

Zero ext. Branch logic A ALU 4 B + 31 + Sgn/Ze extend B label

Zero ext. Branch logic A ALU 4 B + 31 + Sgn/Ze extend B label

Zero ext. Branch logic A ALU 4 B + 31 + Sgn/Ze extend B label

Zero ext. Branch logic A ALU 4 B + 31 + Sgn/Ze extend Beq rs rt label

Zero ext. Branch logic A ALU 4 B + 31 + Sgn/Ze extend Beq rs rt label

Zero ext. Branch logic A ALU 4 B + 31 + Sgn/Ze extend Beq rs rt label

Beq rs rt label ? Zero ext. Branch logic A ALU 4 B + 31 + Sgn/Ze A ALU 4 B ? + 31 + Sgn/Ze extend Beq rs rt label

Procedure call Suppose we have a program that “rings the bell” at 10 different locations in the code. This sort of thing is usually complicated! many, many instructions..... That’s a waste of space can’t we write the “bell code” once and share it?

Procedure call Bal bell back ! ! Bal bell Problem: The back ! return address! Bell ! ! Branch is not ! enough. B back

Return address A We need to tell the subroutine where it should branch back to, i.e., the return address, each time we call it! That means: The return address must be changeable.

Return address B We can’t use B x; X is not changeable we can’t write to the instruction memory... But we can write to: register file data memory So we can write the return address there.

Return address C Suppose we use $31 for example: Jump register $31: Bell ! ! Jr $31 Jump register $31: Read the register file and stores the value into the PC

Zero ext. Branch logic A ALU 4 B + 31 + Sgn/Ze extend Jr $31

Zero ext. Branch logic A ALU 4 B + 31 + Sgn/Ze extend Jr $31

This works (not the best way): ! bell: ! ! ! La $31 x ! B bell ! x: ! Jr $31 ! La $31 y B bell y: !

What’s done?? We just want to get the address La $31 x 2 instructions B bell 1 instruction x: need a label We just want to get the address following the “call” into $31.

La $31 x B bell x: save return reg $31 address in Return address Zero ext. save return address in reg $31 Return address when B bell is fetched Branch logic A ALU 4 B + 31 + Sgn/Ze extend La $31 x B bell x:

The return address The “call” is at “PC”. So, the return address must be PC + 4. But we compute PC + 4. Can we cause PC + 4 to be written to the register file ($31). Yes. Use BAL bell (branch and link) .

Zero ext. Branch logic A ALU 4 B + 31 + Sgn/Ze extend Bal label

Zero ext. Branch logic A ALU 4 B + 31 + Sgn/Ze extend Bal label

Zero ext. Branch logic A ALU 4 B + 31 + Sgn/Ze extend Bal label

Zero ext. Branch logic A ALU 4 B + 31 + Sgn/Ze extend Bal label

B label … next instr Zero ext. Branch logic A ALU 4 B + 31 + Sgn/Ze A ALU 4 B + 31 + Sgn/Ze extend B label … next instr