Skip to content

Tags: 0mega28/CPU-Simulator

Tags

scoreboarding-with-branch-prediction

Toggle scoreboarding-with-branch-prediction's commit message
Don't use time for checking WAR in retire stage

In actual scoreboarding implementation acording to wikipedia time is not
checked for checking WAR.

fix #8

scoreboarding-without-branch-prediction

Toggle scoreboarding-without-branch-prediction's commit message
Use time of issue of instr instead of idx

WAR should be checked by time of issue instead of idx

Before write_back time of issue of current instr should be checked with
branch instr time of issue

flush of fu after branch taken should be done by time of issue of instr

for eg

label1:
    BEQZ R1 label2
    SUB R1 R2 #1
    JMP label1

label2:

If SUB instr is in execute stage and in next cycles decode stage JMP
instruction modifies PC to fetch BEQZ instr in next cycle, then SUB
instr won't retire if idx is checked by above two condition.
hence, time var is better way of checking WAR and other cases described
above.

fix #5

in-order-simulator

Toggle in-order-simulator's commit message
utils.hpp: Add DMY operand in op_enum

also DMY is initialised with -1 so, the code change is backwards
compatible since we are not changing values of other enum members