From 9e12c60d271e5f234ad5ff2ca11c074d5dbf3609 Mon Sep 17 00:00:00 2001 From: Sebastian Bugge Date: Tue, 12 Nov 2024 12:13:37 +0100 Subject: [PATCH] Lower branch cycles to two. --- branchProfiler.scala | 0 src/main/scala/CPU.scala | 6 +++--- src/main/scala/EXBarrier.scala | 8 ++++++-- src/main/scala/IFBarrier.scala | 2 +- 4 files changed, 10 insertions(+), 6 deletions(-) delete mode 100644 branchProfiler.scala diff --git a/branchProfiler.scala b/branchProfiler.scala deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/scala/CPU.scala b/src/main/scala/CPU.scala index 230c3af..d5e17c7 100644 --- a/src/main/scala/CPU.scala +++ b/src/main/scala/CPU.scala @@ -106,7 +106,7 @@ class CPU extends MultiIOModule { EXBarrier.in.r2Value := EX.io.rs2ValueOut.asUInt() EXBarrier.in.ALUResult := EX.io.ALUResult.asUInt() - EXBarrier.in.branch := EX.io.branch + EXBarrier.branchIn := EX.io.branch EXBarrier.in.jump := IDBarrier.out.jump EXBarrier.in.returnAddr := IDBarrier.out.returnAddr EXBarrier.in.writeEnable := IDBarrier.out.writeEnable @@ -132,8 +132,8 @@ class CPU extends MultiIOModule { ID.io.writeAddrIn := MEMBarrier.out.writeAddr // Branching - IF.io.branch := EXBarrier.out.branch - IF.io.branchAddress := EXBarrier.out.ALUResult + IF.io.branch := EXBarrier.branchOut + IF.io.branchAddress := EXBarrier.branchAddr // Stall IF.io.stall := IDBarrier.stall diff --git a/src/main/scala/EXBarrier.scala b/src/main/scala/EXBarrier.scala index 222f20c..5e8687e 100644 --- a/src/main/scala/EXBarrier.scala +++ b/src/main/scala/EXBarrier.scala @@ -11,7 +11,6 @@ class EXBarrierIO extends Bundle { val writeEnable = Bool() val memRead = Bool() val memWrite = Bool() - val branch = Bool() val jump = Bool() } @@ -21,11 +20,16 @@ class EXBarrier extends MultiIOModule { val in = Input(new EXBarrierIO) val out = Output(new EXBarrierIO) val flush = Output(Bool()) + val branchAddr = Output(UInt(32.W)) + val branchIn = Input(Bool()) + val branchOut = Output(Bool()) }) val delay = Reg(new EXBarrierIO) delay := io.in io.out := delay - io.flush := io.in.branch + io.flush := io.branchIn + io.branchOut := io.branchIn + io.branchAddr := io.in.ALUResult } diff --git a/src/main/scala/IFBarrier.scala b/src/main/scala/IFBarrier.scala index 49555ea..4b5d103 100644 --- a/src/main/scala/IFBarrier.scala +++ b/src/main/scala/IFBarrier.scala @@ -23,7 +23,7 @@ class IFBarrier extends MultiIOModule { val flushRemaining = RegInit(UInt(2.W), 0.U) flushRemaining := Mux( io.flush, - 2.U, + 1.U, Mux( flushRemaining === 0.U, 0.U,