From e59b707daeac5bbd5158db90cd0941a3f29592e4 Mon Sep 17 00:00:00 2001 From: karthikmurakonda Date: Fri, 7 Oct 2022 11:38:33 +0530 Subject: [PATCH] everything except end and crontrol flow --- assignment-4/src/processor/pipeline/Execute.java | 2 ++ assignment-4/src/processor/pipeline/InstructionFetch.java | 2 +- assignment-4/src/processor/pipeline/OperandFetch.java | 6 +++--- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/assignment-4/src/processor/pipeline/Execute.java b/assignment-4/src/processor/pipeline/Execute.java index 1edb48c..fbacd8c 100644 --- a/assignment-4/src/processor/pipeline/Execute.java +++ b/assignment-4/src/processor/pipeline/Execute.java @@ -124,6 +124,7 @@ public class Execute { EX_IF_Latch.setIF_enable(true); EX_IF_Latch.setPC(alu_result); noma = true; + containingProcessor.getOFUnit().setProceed(false); } } break; @@ -150,6 +151,7 @@ public class Execute { EX_IF_Latch.setIF_enable(true); EX_IF_Latch.setPC(alu_result); noma = true; + containingProcessor.getOFUnit().setProceed(false); } } break; diff --git a/assignment-4/src/processor/pipeline/InstructionFetch.java b/assignment-4/src/processor/pipeline/InstructionFetch.java index de31f00..8247a3e 100644 --- a/assignment-4/src/processor/pipeline/InstructionFetch.java +++ b/assignment-4/src/processor/pipeline/InstructionFetch.java @@ -20,7 +20,7 @@ public class InstructionFetch { public void performIF() { if(!IF_EnableLatch.isFreeze()){ if(EX_IF_Latch.isIF_enable()){ - containingProcessor.getRegisterFile().setProgramCounter(EX_IF_Latch.getPC()-1); + containingProcessor.getRegisterFile().setProgramCounter(EX_IF_Latch.getPC()); EX_IF_Latch.setIF_enable(false); System.out.println("IF: PC set to " + EX_IF_Latch.getPC()); } // if EX_IF_Latch is enabled, set PC to EX_IF_Latch's PC and wait for next cycle (1 nop) diff --git a/assignment-4/src/processor/pipeline/OperandFetch.java b/assignment-4/src/processor/pipeline/OperandFetch.java index 2f49462..5b33ef2 100644 --- a/assignment-4/src/processor/pipeline/OperandFetch.java +++ b/assignment-4/src/processor/pipeline/OperandFetch.java @@ -139,7 +139,7 @@ public class OperandFetch { int op2 = containingProcessor.getRegisterFile().getValue(rd.getValue()); // System.out.println("imm: " + imm); - if (checkdatahazard(new int[] { rs1.getValue() })) { + if (checkdatahazard(new int[] { rs1.getValue(), rd.getValue()})){ noDataHazard = false; }else{ if(opcode <= 22) { // > 21 means it is a branch instruction so no need to update queue @@ -152,9 +152,9 @@ public class OperandFetch { instr.setDestinationOperand(rd); instr.setSourceOperand1(rs1); } - // if(opcode == 22){ + if(opcode == 22){ - // } + } } else if (Arrays.stream(R1I_type_operators).anyMatch(x -> x == opcode)) { if(opcode != 24){