提交 1d0717ae 编写于 作者: Z zoujr

BPU: Fix uBtb and Btb bug

上级 a55ae586
......@@ -59,7 +59,7 @@ object ExcitingUtils {
forceExists: Boolean = false
): Unit = {
val conn = map.getOrElseUpdate(name, new Connection(connType))
require(conn.sinkModule.isEmpty)
// require(conn.sinkModule.isEmpty)
require(conn.connType == connType)
conn.sinkModule = Some(component.parentModName)
BoringUtils.addSink(component, name, disableDedup, forceExists)
......
......@@ -803,7 +803,7 @@ class CSR extends FunctionUnit with HasCSRConst
"LoopExit" -> (0x102a, "perfCntLoopExit" ),
"isReplay" -> (0x102b, "Replay" ),
// "FetchFromICache" -> (0x102a, "CntFetchFromICache"),
"ICacheMMIO" -> (0x102a, "perfCntIcacheMMIOCnt"),
"ICacheMMIO" -> (0x102c, "perfCntIcacheMMIOCnt"),
// "FetchFromLoopBuffer" -> (0x102b, "CntFetchFromLoopBuffer"),
// "ExitLoop1" -> (0x102c, "CntExitLoop1"),
// "ExitLoop2" -> (0x102d, "CntExitLoop2"),
......@@ -820,19 +820,19 @@ class CSR extends FunctionUnit with HasCSRConst
// "L2cacheHit" -> (0x1023, "perfCntCondL2cacheHit")
) ++ (
(0 until dcacheParameters.nMissEntries).map(i =>
("DCacheMissQueuePenalty" + Integer.toString(i, 10), (0x102a + i, "perfCntDCacheMissQueuePenaltyEntry" + Integer.toString(i, 10)))
("DCacheMissQueuePenalty" + Integer.toString(i, 10), (0x1040 + i, "perfCntDCacheMissQueuePenaltyEntry" + Integer.toString(i, 10)))
).toMap
) ++ (
(0 until icacheParameters.nMissEntries).map(i =>
("ICacheMissQueuePenalty" + Integer.toString(i, 10), (0x102a + dcacheParameters.nMissEntries + i, "perfCntICacheMissQueuePenaltyEntry" + Integer.toString(i, 10)))
("ICacheMissQueuePenalty" + Integer.toString(i, 10), (0x1040 + dcacheParameters.nMissEntries + i, "perfCntICacheMissQueuePenaltyEntry" + Integer.toString(i, 10)))
).toMap
) ++ (
(0 until l1plusPrefetcherParameters.nEntries).map(i =>
("L1+PrefetchPenalty" + Integer.toString(i, 10), (0x102a + dcacheParameters.nMissEntries + icacheParameters.nMissEntries + i, "perfCntL1plusPrefetchPenaltyEntry" + Integer.toString(i, 10)))
("L1+PrefetchPenalty" + Integer.toString(i, 10), (0x1040 + dcacheParameters.nMissEntries + icacheParameters.nMissEntries + i, "perfCntL1plusPrefetchPenaltyEntry" + Integer.toString(i, 10)))
).toMap
) ++ (
(0 until l2PrefetcherParameters.nEntries).map(i =>
("L2PrefetchPenalty" + Integer.toString(i, 10), (0x102a + dcacheParameters.nMissEntries + icacheParameters.nMissEntries + l1plusPrefetcherParameters.nEntries + i, "perfCntL2PrefetchPenaltyEntry" + Integer.toString(i, 10)))
("L2PrefetchPenalty" + Integer.toString(i, 10), (0x1040 + dcacheParameters.nMissEntries + icacheParameters.nMissEntries + l1plusPrefetcherParameters.nEntries + i, "perfCntL2PrefetchPenaltyEntry" + Integer.toString(i, 10)))
).toMap
)
......
......@@ -189,7 +189,7 @@ class BTB extends BasePredictor with BTBParams{
val dataWrite = BtbDataEntry(new_lower, new_extended)
val jalFirstEncountered = !u.isMisPred && !u.bpuMeta.btbHitJal && updateType === BTBtype.J
val updateValid = io.update.valid && (u.isMisPred || jalFirstEncountered) && !u.isReplay
val updateValid = io.update.bits.taken && io.update.valid && (u.isMisPred || jalFirstEncountered) && !u.isReplay
// Update btb
for (w <- 0 until BtbWays) {
for (b <- 0 until BtbBanks) {
......
......@@ -229,7 +229,7 @@ class MicroBTB extends BasePredictor
val jalFirstEncountered = !u.isMisPred && !u.bpuMeta.btbHitJal && (u.pd.brType === BrType.jal)
val entry_write_valid = io.update.valid && (u.isMisPred || jalFirstEncountered) && !u.isReplay //io.update.valid //&& update_is_BR_or_JAL
val entry_write_valid = io.update.valid && update_taken && (u.isMisPred || jalFirstEncountered) && !u.isReplay //io.update.valid //&& update_is_BR_or_JAL
val meta_write_valid = io.update.valid && (u.isMisPred || jalFirstEncountered) && !u.isReplay//io.update.valid //&& update_is_BR_or_JAL
for (b <- 0 until PredictWidth) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册