本地化

This commit is contained in:
2025-12-15 20:56:10 +08:00
parent 04b9c80b1f
commit 078b2c0b37
9 changed files with 27 additions and 51 deletions

View File

@@ -42,7 +42,7 @@ class Control extends Module {
(io.rd_ex === io.rs1_id || io.rd_ex === io.rs2_id)
val id_jump_needs_ex_alu = io.jump_instruction_id && io.rd_ex =/= 0.U &&
!io.memory_read_enable_ex && // 确保不是load-use hazard
!io.memory_read_enable_ex &&
(io.rd_ex === io.rs1_id || io.rd_ex === io.rs2_id)
val id_jump_needs_mem_load = io.jump_instruction_id && io.memory_read_enable_mem && io.rd_mem =/= 0.U &&
@@ -53,12 +53,10 @@ class Control extends Module {
val flush = io.jump_flag && !stall
// 最终输出
io.pc_stall := stall
io.if2id_stall := stall
io.if2id_flush := flush
// 阻塞时清空ID/EX来插入气泡。
io.id2ex_flush := stall
// Lab3(Final) End
}

View File

@@ -49,7 +49,6 @@ class Forwarding extends Module {
Mux(ex_wb_hazard_rs1, ForwardingType.ForwardFromWB, ForwardingType.NoForward))
io.reg2_forward_ex := Mux(ex_mem_hazard_rs2, ForwardingType.ForwardFromMEM,
Mux(ex_wb_hazard_rs2, ForwardingType.ForwardFromWB, ForwardingType.NoForward))
// 旁路到 ID
val id_mem_hazard_rs1 = io.reg_write_enable_mem && io.rd_mem =/= 0.U && (io.rd_mem === io.rs1_id)
val id_mem_hazard_rs2 = io.reg_write_enable_mem && io.rd_mem =/= 0.U && (io.rd_mem === io.rs2_id)

View File

@@ -32,10 +32,6 @@ class Control extends Module {
})
// Lab3(Forward)
// io.if2id_flush := false.B
// io.id2ex_flush := false.B
// io.pc_stall := false.B
// io.if2id_stall := false.B
val load_use_hazard = io.memory_read_enable_ex &&
(io.rd_ex === io.rs1_id || io.rd_ex === io.rs2_id) &&
io.rd_ex =/= 0.U

View File

@@ -34,11 +34,6 @@ class Control extends Module {
})
// Lab3(Stall)
// io.if2id_flush := false.B
// io.id2ex_flush := false.B
//
// io.pc_stall := false.B
// io.if2id_stall := false.B
val hazard_from_ex = io.reg_write_enable_ex && io.rd_ex =/= 0.U && (io.rd_ex === io.rs1_id || io.rd_ex === io.rs2_id)
val hazard_from_mem = io.reg_write_enable_mem && io.rd_mem =/= 0.U && (io.rd_mem === io.rs1_id || io.rd_mem === io.rs2_id)
val stall = hazard_from_ex || hazard_from_mem