mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-03 10:15:19 +00:00
optimized branch predictor by removing unnecessary registers.
This commit is contained in:
parent
dd9d2be89c
commit
63267ff378
@ -128,15 +128,15 @@ module speculativegshare #(parameter int k = 10 ) (
|
|||||||
flopenr #(k) GHRDReg(clk, reset, (~StallD) | FlushD, GHRNextD, GHRD);
|
flopenr #(k) GHRDReg(clk, reset, (~StallD) | FlushD, GHRNextD, GHRD);
|
||||||
|
|
||||||
assign GHRNextE = BranchInstrE & ~FlushM ? {PCSrcE, GHRD[k-2:0]} : // if the branch is not flushed
|
assign GHRNextE = BranchInstrE & ~FlushM ? {PCSrcE, GHRD[k-2:0]} : // if the branch is not flushed
|
||||||
FlushE ? GHRNextM : // branch is flushed
|
FlushE ? GHRE : // branch is flushed
|
||||||
GHRD;
|
GHRD;
|
||||||
flopenr #(k) GHREReg(clk, reset, (~StallE) | FlushE, GHRNextE, GHRE);
|
flopenr #(k) GHREReg(clk, reset, (BranchInstrE & ~StallE) | FlushE, GHRNextE, GHRE);
|
||||||
|
|
||||||
assign GHRNextM = FlushM ? GHRNextW : GHRE;
|
//assign GHRNextM = FlushM ? GHRM : GHRE;
|
||||||
flopenr #(k) GHRMReg(clk, reset, (~StallM) | FlushM, GHRNextM, GHRM);
|
//flopenr #(k) GHRMReg(clk, reset, (BranchInstrM & ~StallM) | FlushM, GHRNextM, GHRM);
|
||||||
|
|
||||||
assign GHRNextW = FlushW ? GHRW : GHRM;
|
//assign GHRNextW = FlushW ? GHRW : GHRM;
|
||||||
flopenr #(k) GHRWReg(clk, reset, (BranchInstrW & ~StallW) | FlushW, GHRNextW, GHRW);
|
//flopenr #(k) GHRWReg(clk, reset, (BranchInstrW & ~StallW) | FlushW, GHRNextW, GHRW);
|
||||||
|
|
||||||
assign DirPredictionWrongE = PCSrcE != DirPredictionE[1] & BranchInstrE;
|
assign DirPredictionWrongE = PCSrcE != DirPredictionE[1] & BranchInstrE;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user