Lower branch cycles to two.

This commit is contained in:
Sebastian Bugge 2024-11-12 12:13:37 +01:00
parent cfce1b6b54
commit 9e12c60d27
Signed by: kaholaz
GPG key ID: 2EFFEDEE03519691
4 changed files with 10 additions and 6 deletions

View file

View file

@ -106,7 +106,7 @@ class CPU extends MultiIOModule {
EXBarrier.in.r2Value := EX.io.rs2ValueOut.asUInt() EXBarrier.in.r2Value := EX.io.rs2ValueOut.asUInt()
EXBarrier.in.ALUResult := EX.io.ALUResult.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.jump := IDBarrier.out.jump
EXBarrier.in.returnAddr := IDBarrier.out.returnAddr EXBarrier.in.returnAddr := IDBarrier.out.returnAddr
EXBarrier.in.writeEnable := IDBarrier.out.writeEnable EXBarrier.in.writeEnable := IDBarrier.out.writeEnable
@ -132,8 +132,8 @@ class CPU extends MultiIOModule {
ID.io.writeAddrIn := MEMBarrier.out.writeAddr ID.io.writeAddrIn := MEMBarrier.out.writeAddr
// Branching // Branching
IF.io.branch := EXBarrier.out.branch IF.io.branch := EXBarrier.branchOut
IF.io.branchAddress := EXBarrier.out.ALUResult IF.io.branchAddress := EXBarrier.branchAddr
// Stall // Stall
IF.io.stall := IDBarrier.stall IF.io.stall := IDBarrier.stall

View file

@ -11,7 +11,6 @@ class EXBarrierIO extends Bundle {
val writeEnable = Bool() val writeEnable = Bool()
val memRead = Bool() val memRead = Bool()
val memWrite = Bool() val memWrite = Bool()
val branch = Bool()
val jump = Bool() val jump = Bool()
} }
@ -21,11 +20,16 @@ class EXBarrier extends MultiIOModule {
val in = Input(new EXBarrierIO) val in = Input(new EXBarrierIO)
val out = Output(new EXBarrierIO) val out = Output(new EXBarrierIO)
val flush = Output(Bool()) val flush = Output(Bool())
val branchAddr = Output(UInt(32.W))
val branchIn = Input(Bool())
val branchOut = Output(Bool())
}) })
val delay = Reg(new EXBarrierIO) val delay = Reg(new EXBarrierIO)
delay := io.in delay := io.in
io.out := delay io.out := delay
io.flush := io.in.branch io.flush := io.branchIn
io.branchOut := io.branchIn
io.branchAddr := io.in.ALUResult
} }

View file

@ -23,7 +23,7 @@ class IFBarrier extends MultiIOModule {
val flushRemaining = RegInit(UInt(2.W), 0.U) val flushRemaining = RegInit(UInt(2.W), 0.U)
flushRemaining := Mux( flushRemaining := Mux(
io.flush, io.flush,
2.U, 1.U,
Mux( Mux(
flushRemaining === 0.U, flushRemaining === 0.U,
0.U, 0.U,