1
0

Add support for per-way cache metadata

Adds a new cache parameter (SplitMetadata) and an associated knob.

Closes #62
This commit is contained in:
Albert Magyar 2016-02-29 14:49:18 -08:00
parent a9380a3dc1
commit a80b0e959d
3 changed files with 10 additions and 2 deletions

View File

@ -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:

View File

@ -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

@ -1 +1 @@
Subproject commit 7f83245410681160d22d9c49ac3a18aa4e3da03f Subproject commit 97ec0771a582e83786881ac42ea67e5bf8267305