Add support for per-way cache metadata
Adds a new cache parameter (SplitMetadata) and an associated knob. Closes #62
This commit is contained in:
parent
a9380a3dc1
commit
a80b0e959d
@ -49,6 +49,7 @@ env:
|
|||||||
- CONFIG=BroadcastRegressionTestConfig
|
- CONFIG=BroadcastRegressionTestConfig
|
||||||
- CONFIG=CacheRegressionTestConfig
|
- CONFIG=CacheRegressionTestConfig
|
||||||
- CONFIG=UnitTestConfig
|
- CONFIG=UnitTestConfig
|
||||||
|
- CONFIG=SplitL2MetadataTestConfig
|
||||||
|
|
||||||
# blacklist private branches
|
# blacklist private branches
|
||||||
branches:
|
branches:
|
||||||
|
@ -110,6 +110,7 @@ class DefaultConfig extends Config (
|
|||||||
case RowBits => findBy(CacheName)
|
case RowBits => findBy(CacheName)
|
||||||
case NTLBEntries => findBy(CacheName)
|
case NTLBEntries => findBy(CacheName)
|
||||||
case CacheIdBits => findBy(CacheName)
|
case CacheIdBits => findBy(CacheName)
|
||||||
|
case SplitMetadata => findBy(CacheName)
|
||||||
case ICacheBufferWays => Knob("L1I_BUFFER_WAYS")
|
case ICacheBufferWays => Knob("L1I_BUFFER_WAYS")
|
||||||
case "L1I" => {
|
case "L1I" => {
|
||||||
case NSets => Knob("L1I_SETS") //64
|
case NSets => Knob("L1I_SETS") //64
|
||||||
@ -117,6 +118,7 @@ class DefaultConfig extends Config (
|
|||||||
case RowBits => 4*site(CoreInstBits)
|
case RowBits => 4*site(CoreInstBits)
|
||||||
case NTLBEntries => 8
|
case NTLBEntries => 8
|
||||||
case CacheIdBits => 0
|
case CacheIdBits => 0
|
||||||
|
case SplitMetadata => false
|
||||||
}:PF
|
}:PF
|
||||||
case "L1D" => {
|
case "L1D" => {
|
||||||
case NSets => Knob("L1D_SETS") //64
|
case NSets => Knob("L1D_SETS") //64
|
||||||
@ -124,6 +126,7 @@ class DefaultConfig extends Config (
|
|||||||
case RowBits => 2*site(CoreDataBits)
|
case RowBits => 2*site(CoreDataBits)
|
||||||
case NTLBEntries => 8
|
case NTLBEntries => 8
|
||||||
case CacheIdBits => 0
|
case CacheIdBits => 0
|
||||||
|
case SplitMetadata => false
|
||||||
}:PF
|
}:PF
|
||||||
case ECCCode => None
|
case ECCCode => None
|
||||||
case Replacer => () => new RandomReplacement(site(NWays))
|
case Replacer => () => new RandomReplacement(site(NWays))
|
||||||
@ -295,6 +298,7 @@ class WithL2Cache extends Config(
|
|||||||
case NWays => Knob("L2_WAYS")
|
case NWays => Knob("L2_WAYS")
|
||||||
case RowBits => site(TLKey(site(TLId))).dataBitsPerBeat
|
case RowBits => site(TLKey(site(TLId))).dataBitsPerBeat
|
||||||
case CacheIdBits => log2Ceil(site(NMemoryChannels) * site(NBanksPerMemoryChannel))
|
case CacheIdBits => log2Ceil(site(NMemoryChannels) * site(NBanksPerMemoryChannel))
|
||||||
|
case SplitMetadata => Knob("L2_SPLIT_METADATA")
|
||||||
}: PartialFunction[Any,Any]
|
}: PartialFunction[Any,Any]
|
||||||
case NAcquireTransactors => 2
|
case NAcquireTransactors => 2
|
||||||
case NSecondaryMisses => 4
|
case NSecondaryMisses => 4
|
||||||
@ -307,7 +311,7 @@ class WithL2Cache extends Config(
|
|||||||
case OuterTLId => "L2toMC"})))
|
case OuterTLId => "L2toMC"})))
|
||||||
case L2Replacer => () => new SeqRandom(site(NWays))
|
case L2Replacer => () => new SeqRandom(site(NWays))
|
||||||
},
|
},
|
||||||
knobValues = { case "L2_WAYS" => 8; case "L2_CAPACITY_IN_KB" => 2048 }
|
knobValues = { case "L2_WAYS" => 8; case "L2_CAPACITY_IN_KB" => 2048; case "L2_SPLIT_METADATA" => false }
|
||||||
)
|
)
|
||||||
|
|
||||||
class WithPLRU extends Config(
|
class WithPLRU extends Config(
|
||||||
@ -457,3 +461,6 @@ class OneOrEightChannelVLSIConfig extends Config(new WithOneOrMaxChannels ++ new
|
|||||||
class SimulateBackupMemConfig extends Config(){ Dump("MEM_BACKUP_EN", true) }
|
class SimulateBackupMemConfig extends Config(){ Dump("MEM_BACKUP_EN", true) }
|
||||||
class BackupMemVLSIConfig extends Config(new SimulateBackupMemConfig ++ new DefaultVLSIConfig)
|
class BackupMemVLSIConfig extends Config(new SimulateBackupMemConfig ++ new DefaultVLSIConfig)
|
||||||
class OneOrEightChannelBackupMemVLSIConfig extends Config(new WithOneOrMaxChannels ++ new With8MemoryChannels ++ new BackupMemVLSIConfig)
|
class OneOrEightChannelBackupMemVLSIConfig extends Config(new WithOneOrMaxChannels ++ new With8MemoryChannels ++ new BackupMemVLSIConfig)
|
||||||
|
|
||||||
|
class WithSplitL2Metadata extends Config(knobValues = { case "L2_SPLIT_METADATA" => true })
|
||||||
|
class SplitL2MetadataTestConfig extends Config(new WithSplitL2Metadata ++ new DefaultL2Config)
|
||||||
|
2
uncore
2
uncore
@ -1 +1 @@
|
|||||||
Subproject commit 7f83245410681160d22d9c49ac3a18aa4e3da03f
|
Subproject commit 97ec0771a582e83786881ac42ea67e5bf8267305
|
Loading…
Reference in New Issue
Block a user