refactor: nset改为nindex

This commit is contained in:
Liphen 2023-12-22 18:12:56 +08:00
parent 969237a09f
commit f4e0e1b5be
5 changed files with 17 additions and 19 deletions

View File

@ -29,21 +29,19 @@ case class BranchPredictorConfig(
case class CacheConfig(
nway: Int = 2, // 路数
nbank: Int = 8, // bank数
nset: Int,
bankWidth: Int // bytes per bank
nbank: Int = 8, // 每个项目中的bank数
nindex: Int, // 每路的项目数
bankWidth: Int // 每个bank中的字节数
) {
val config = CpuConfig()
val indexWidth = log2Ceil(nset)
val indexWidth = log2Ceil(nindex) // index的位宽
val bankIndexWidth = log2Ceil(nbank)
val bankOffsetWidth = log2Ceil(bankWidth)
val offsetWidth = bankIndexWidth + bankOffsetWidth
val tagWidth = 32 - indexWidth - offsetWidth
val tagvWidth = tagWidth + 1
val offsetWidth = bankIndexWidth + bankOffsetWidth // offset的位宽
val tagWidth = 32 - indexWidth - offsetWidth // tag的位宽
val bankWidthBits = bankWidth * 8
val burstSize = 16
val ninst = config.instFetchNum // TODO:改成可随意修改的参数
require(isPow2(nset))
require(isPow2(nindex))
require(isPow2(nway))
require(isPow2(nbank))
require(isPow2(bankWidth))

View File

@ -15,9 +15,9 @@ class Cache(implicit config: CpuConfig) extends Module {
})
implicit val iCacheConfig =
CacheConfig(nset = 64, nbank = 4, bankWidth = (32 / 8) * 4) // 每个 bank 4 32 bit 指令
CacheConfig(nindex = 64, nbank = 4, bankWidth = (32 / 8) * 4) // 每个 bank 4 32 bit 指令
implicit val dCacheConfig =
CacheConfig(nset = 128, bankWidth = XLEN / 8) // 每个 bank 1 XLEN bit 数据
CacheConfig(nindex = 128, bankWidth = XLEN / 8) // 每个 bank 1 XLEN bit 数据
val icache = Module(new ICache(iCacheConfig))
val dcache = Module(new DCache(dCacheConfig))

View File

@ -17,7 +17,7 @@ class WriteBufferUnit extends Bundle {
class DCache(cacheConfig: CacheConfig)(implicit config: CpuConfig) extends Module {
val nway: Int = cacheConfig.nway
val nset: Int = cacheConfig.nset
val nset: Int = cacheConfig.nindex
val nbank: Int = cacheConfig.nbank
val bankWidthBits: Int = cacheConfig.bankWidthBits
val tagWidth: Int = cacheConfig.tagWidth

View File

@ -10,9 +10,9 @@ import cpu.defines.Const._
class ICache(cacheConfig: CacheConfig)(implicit config: CpuConfig) extends Module {
val nway: Int = cacheConfig.nway
val nset: Int = cacheConfig.nset
val nset: Int = cacheConfig.nindex
val nbank: Int = cacheConfig.nbank
val ninst: Int = cacheConfig.ninst // 取指令的数量
val ninst: Int = config.instFetchNum
val bankOffsetWidth: Int = cacheConfig.bankOffsetWidth
val bankWidth: Int = cacheConfig.bankWidth
val tagWidth: Int = cacheConfig.tagWidth

View File

@ -5,32 +5,32 @@ import chisel3.util._
import cpu.CacheConfig
class ReadOnlyPort[+T <: Data](gen: T)(implicit cacheConfig: CacheConfig) extends Bundle {
val addr = Input(UInt(log2Ceil(cacheConfig.nset * cacheConfig.nbank).W))
val addr = Input(UInt(log2Ceil(cacheConfig.nindex * cacheConfig.nbank).W))
val data = Output(gen)
}
class WriteOnlyPort[+T <: Data](gen: T)(implicit cacheConfig: CacheConfig) extends Bundle {
val addr = Input(UInt(log2Ceil(cacheConfig.nset * cacheConfig.nbank).W))
val addr = Input(UInt(log2Ceil(cacheConfig.nindex * cacheConfig.nbank).W))
val en = Input(Bool())
val data = Input(gen)
}
class WriteOnlyMaskPort[+T <: Data](gen: T)(implicit cacheConfig: CacheConfig) extends Bundle {
val addr = Input(UInt(log2Ceil(cacheConfig.nset * cacheConfig.nbank).W))
val addr = Input(UInt(log2Ceil(cacheConfig.nindex * cacheConfig.nbank).W))
val en = Input(UInt(cacheConfig.bankWidth.W))
val data = Input(gen)
}
class ReadWritePort[+T <: Data](gen: T)(implicit cacheConfig: CacheConfig) extends Bundle {
val addr = Input(UInt(log2Ceil(cacheConfig.nset * cacheConfig.nbank).W))
val addr = Input(UInt(log2Ceil(cacheConfig.nindex * cacheConfig.nbank).W))
val en = Input(Bool())
val wdata = Input(gen)
val rdata = Output(gen)
}
class MaskedReadWritePort[+T <: Data](gen: T)(implicit cacheConfig: CacheConfig) extends Bundle {
val addr = Input(UInt(log2Ceil(cacheConfig.nset * cacheConfig.nbank).W))
val addr = Input(UInt(log2Ceil(cacheConfig.nindex * cacheConfig.nbank).W))
val writeMask = Input(UInt(cacheConfig.bankWidth.W))
val wdata = Input(gen)
val rdata = Output(gen)