Branching and Condition Codes in Computer Architecture

 
Week 6
 
Tell me and I forget. Teach me and I remember. Involve me and I learn.
       
 
-Benjamin Franklin
 
Branching Statements
 
Simplest is unconditional branch
b address
Address is a label and points somewhere in the code section of the
memory.
Allows the PC to jump to a new location in memory to read the next
opcode.
 
If Statement
 
If else
 
Condition Codes
 
Register where the bits represent specific states of the processor
Each Processor will have a unique set of condition codes, but the general
function remains the same.
Below is the ARM processor
 
Explicit Compare and Branch
 
This type of branching uses 2 ALUs
1st for address modification
PC = PC + offset
2
nd
 for the comparison.
E.g.
blt R1, 10, target  
#if R1 < 10 then goto target
 
Implicit Condition Codes.
 
General concept
Set the condition codes by performing an ALU Operation.
Virtually all ALU operations will set the condition codes.
Branch according to the state of a particular code.
E.g.
Sub R1, R1, 1     
#subtract 1 from register 1
Bez End
 
#if condition code Z = 1 then branch
 
It is assumed that subtracting 1 from R1 could result in R1 becoming Zero
When R1 becomes 0, the Z flag is set in the condition code.
Bez (branch if zero) will branch if Z is set, otherwise it will fall through to the next
instruction.
 
Condition Registers, Separate Branch inst.
 
Special instructions which will test for a specific property and only set
that condition code
E.g. Branch if $t2 < 10
 
blt $t2, 10, skip
Is expanded to:
slti $1, $t2, 10  
#set $1 = 1 if t2 < 10
bne $1, $0, 
2
   
#2 is the offset for the PC in our example
 
Note: reg $1 is the assembler reserved register
.
 
Code example
 
MIPS
 
Uses a combination of Implicit and Condition registers
86% of branches are equality or inequality, 
beq and bne
Compare 2 registers and branch
These comparisons are implemented directly in hardware.
OR
Comparison to zero - 
bgtz, bgez, bltz, blez
Hardware implemented.
14% of branches are Compare to an immediate
Thus we have 2 instructions, slt, sltu, slti, etc. and the branch
Makes sense that the first branch option is very efficient.
 
Print String Char by Char
while loop
 
Print Char by Char
do_while loop
 
Print Char by Char
for loop
 
Letter Grade
case statement
 
Branch vs. Jump
 
A branch is relative to the PC.
An unconditional branch should be used within procedures to allow code to
be moved in memory.
An unconditional jump is uses for absolute entry points.
E.g.
Dynamic link libraries (*.dll) use an export address table to define the
methods which the dll supports. The address table is modified to reflect the
entry points to methods in the dll. This is done by the OS on dll load.
Addresses in this table would use jump.
Always use 
b
 for unconditional branching within a procedure.
 
 
End
 
Slide Note
Embed
Share

Explore the intricacies of branching statements, if-else statements, condition codes, explicit compare and branch, implicit condition codes, and the use of condition registers in computer architecture. Delve into MIPS architecture's utilization of both implicit and condition registers for efficient operation handling. Immerse yourself in the world of processor states and branch instructions to enhance your comprehension of how computers execute operations.

  • Computer architecture
  • Branching statements
  • Condition codes
  • MIPS architecture
  • Processor states

Uploaded on Sep 07, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. Week 6 Tell me and I forget. Teach me and I remember. Involve me and I learn. -Benjamin Franklin

  2. Branching Statements Simplest is unconditional branch b address Address is a label and points somewhere in the code section of the memory. Allows the PC to jump to a new location in memory to read the next opcode.

  3. If Statement

  4. If else

  5. Condition Codes Register where the bits represent specific states of the processor Each Processor will have a unique set of condition codes, but the general function remains the same. Below is the ARM processor

  6. Explicit Compare and Branch This type of branching uses 2 ALUs 1st for address modification PC = PC + offset 2ndfor the comparison. E.g. blt R1, 10, target #if R1 < 10 then goto target

  7. Implicit Condition Codes. General concept Set the condition codes by performing an ALU Operation. Virtually all ALU operations will set the condition codes. Branch according to the state of a particular code. E.g. Sub R1, R1, 1 #subtract 1 from register 1 Bez End #if condition code Z = 1 then branch It is assumed that subtracting 1 from R1 could result in R1 becoming Zero When R1 becomes 0, the Z flag is set in the condition code. Bez (branch if zero) will branch if Z is set, otherwise it will fall through to the next instruction.

  8. Condition Registers, Separate Branch inst. Special instructions which will test for a specific property and only set that condition code E.g. Branch if $t2 < 10 blt $t2, 10, skip Is expanded to: slti $1, $t2, 10 #set $1 = 1 if t2 < 10 bne $1, $0, 2 #2 is the offset for the PC in our example Note: reg $1 is the assembler reserved register.

  9. Code example

  10. MIPS Uses a combination of Implicit and Condition registers 86% of branches are equality or inequality, beq and bne Compare 2 registers and branch These comparisons are implemented directly in hardware. OR Comparison to zero - bgtz, bgez, bltz, blez Hardware implemented. 14% of branches are Compare to an immediate Thus we have 2 instructions, slt, sltu, slti, etc. and the branch Makes sense that the first branch option is very efficient.

  11. Print String Char by Char while loop

  12. Print Char by Char do_while loop

  13. Print Char by Char for loop

  14. Letter Grade case statement

  15. Branch vs. Jump A branch is relative to the PC. An unconditional branch should be used within procedures to allow code to be moved in memory. An unconditional jump is uses for absolute entry points. E.g. Dynamic link libraries (*.dll) use an export address table to define the methods which the dll supports. The address table is modified to reflect the entry points to methods in the dll. This is done by the OS on dll load. Addresses in this table would use jump. Always use b for unconditional branching within a procedure.

  16. End

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#