remove more global consts; refactor DTLBs
D$ now contains DTLB. provide full VAddr with initial request. VU now has its own DTLBs.
This commit is contained in:
@ -569,8 +569,8 @@ class Control(implicit conf: RocketConfiguration) extends Component
|
||||
(mem_reg_xcpt_interrupt || mem_reg_xcpt, mem_reg_cause),
|
||||
(mem_reg_mem_val && io.dmem.xcpt.ma.ld, UFix( 8)),
|
||||
(mem_reg_mem_val && io.dmem.xcpt.ma.st, UFix( 9)),
|
||||
(mem_reg_mem_val && io.xcpt_dtlb_ld, UFix(10)),
|
||||
(mem_reg_mem_val && io.xcpt_dtlb_st, UFix(11))))
|
||||
(mem_reg_mem_val && io.dmem.xcpt.pf.ld, UFix(10)),
|
||||
(mem_reg_mem_val && io.dmem.xcpt.pf.st, UFix(11))))
|
||||
|
||||
wb_reg_xcpt := mem_xcpt && !take_pc_wb && !wb_reg_replay_next
|
||||
when (mem_xcpt) { wb_reg_cause := mem_cause }
|
||||
@ -644,7 +644,7 @@ class Control(implicit conf: RocketConfiguration) extends Component
|
||||
|
||||
// replay inst in ex stage
|
||||
val replay_ex = wb_reg_dcache_miss && ex_reg_load_use || mem_reg_flush_inst ||
|
||||
ex_reg_mem_val && !(io.dmem.req.ready && io.dtlb_rdy) ||
|
||||
ex_reg_mem_val && !io.dmem.req.ready ||
|
||||
ex_reg_div_val && !io.dpath.div_rdy ||
|
||||
ex_reg_mul_val && !io.dpath.mul_rdy ||
|
||||
mem_reg_replay_next
|
||||
@ -652,7 +652,7 @@ class Control(implicit conf: RocketConfiguration) extends Component
|
||||
|
||||
// replay inst in mem stage
|
||||
val mem_ll_wb = io.dpath.mem_wb || io.dpath.mul_result_val || io.dpath.div_result_val
|
||||
val dmem_kill_mem = mem_reg_valid && (io.dtlb_miss || io.dmem.resp.bits.nack)
|
||||
val dmem_kill_mem = mem_reg_valid && io.dmem.resp.bits.nack
|
||||
val fpu_kill_mem = mem_reg_fp_val && io.fpu.nack_mem
|
||||
val replay_mem = dmem_kill_mem || mem_reg_wen && mem_ll_wb || mem_reg_replay || fpu_kill_mem
|
||||
val killm_common = mem_reg_wen && mem_ll_wb || take_pc_wb || mem_reg_xcpt || !mem_reg_valid
|
||||
@ -734,7 +734,7 @@ class Control(implicit conf: RocketConfiguration) extends Component
|
||||
id_ex_hazard || id_mem_hazard || id_wb_hazard ||
|
||||
id_stall_raddr1 || id_stall_raddr2 || id_stall_waddr ||
|
||||
id_fp_val && id_stall_fpu ||
|
||||
id_mem_val && !(io.dmem.req.ready && io.dtlb_rdy) ||
|
||||
id_mem_val && !io.dmem.req.ready ||
|
||||
vec_stalld
|
||||
ctrl_killd := !io.imem.resp.valid || take_pc || ctrl_stalld || id_interrupt
|
||||
|
||||
@ -772,10 +772,9 @@ class Control(implicit conf: RocketConfiguration) extends Component
|
||||
io.fpu.killx := ctrl_killx
|
||||
io.fpu.killm := killm_common
|
||||
|
||||
io.dtlb_val := ex_reg_mem_val
|
||||
io.dtlb_kill := !mem_reg_valid
|
||||
io.dmem.req.valid := ex_reg_mem_val
|
||||
io.dmem.req.bits.kill := killm_common || mem_xcpt || io.dtlb_miss
|
||||
io.dmem.req.bits.kill := killm_common || mem_xcpt
|
||||
io.dmem.req.bits.cmd := ex_reg_mem_cmd
|
||||
io.dmem.req.bits.typ := ex_reg_mem_type
|
||||
io.dmem.req.bits.phys := Bool(false)
|
||||
}
|
||||
|
Reference in New Issue
Block a user