remove hit_latency and make latency do the right thing
set the latency parameter in terms of a latency add caches to tsunami-simple configs configs/common/Caches.py: tests/configs/memtest.py: tests/configs/o3-timing-mp.py: tests/configs/o3-timing.py: tests/configs/simple-atomic-mp.py: tests/configs/simple-timing-mp.py: tests/configs/simple-timing.py: set the latency parameter in terms of a latency configs/common/FSConfig.py: give the bridge a default latency too src/mem/cache/cache_builder.cc: src/python/m5/objects/BaseCache.py: remove hit_latency and make latency do the right thing tests/configs/tsunami-simple-atomic-dual.py: tests/configs/tsunami-simple-atomic.py: tests/configs/tsunami-simple-timing-dual.py: tests/configs/tsunami-simple-timing.py: add caches to tsunami-simple configs --HG-- extra : convert_revision : 37bef7c652e97c8cdb91f471fba62978f89019f1
This commit is contained in:
parent
e08a5c6052
commit
634d2e9d83
14 changed files with 184 additions and 31 deletions
|
@ -1,4 +1,4 @@
|
||||||
# Copyright (c) 2006 The Regents of The University of Michigan
|
# Copyright (c) 2006-2007 The Regents of The University of Michigan
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# Redistribution and use in source and binary forms, with or without
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -32,7 +32,7 @@ from m5.objects import *
|
||||||
class L1Cache(BaseCache):
|
class L1Cache(BaseCache):
|
||||||
assoc = 2
|
assoc = 2
|
||||||
block_size = 64
|
block_size = 64
|
||||||
latency = 1
|
latency = '1ns'
|
||||||
mshrs = 10
|
mshrs = 10
|
||||||
tgts_per_mshr = 5
|
tgts_per_mshr = 5
|
||||||
protocol = CoherenceProtocol(protocol='moesi')
|
protocol = CoherenceProtocol(protocol='moesi')
|
||||||
|
@ -40,7 +40,7 @@ class L1Cache(BaseCache):
|
||||||
class L2Cache(BaseCache):
|
class L2Cache(BaseCache):
|
||||||
assoc = 8
|
assoc = 8
|
||||||
block_size = 64
|
block_size = 64
|
||||||
latency = 10
|
latency = '10ns'
|
||||||
mshrs = 20
|
mshrs = 20
|
||||||
tgts_per_mshr = 12
|
tgts_per_mshr = 12
|
||||||
|
|
||||||
|
|
|
@ -61,7 +61,7 @@ def makeLinuxAlphaSystem(mem_mode, mdesc = None):
|
||||||
self.readfile = mdesc.script()
|
self.readfile = mdesc.script()
|
||||||
self.iobus = Bus(bus_id=0)
|
self.iobus = Bus(bus_id=0)
|
||||||
self.membus = Bus(bus_id=1)
|
self.membus = Bus(bus_id=1)
|
||||||
self.bridge = Bridge(fix_partial_write_b=True)
|
self.bridge = Bridge(fix_partial_write_b=True, delay='50ns', nack_delay='4ns')
|
||||||
self.physmem = PhysicalMemory(range = AddrRange(mdesc.mem()))
|
self.physmem = PhysicalMemory(range = AddrRange(mdesc.mem()))
|
||||||
self.bridge.side_a = self.iobus.port
|
self.bridge.side_a = self.iobus.port
|
||||||
self.bridge.side_b = self.membus.port
|
self.bridge.side_b = self.membus.port
|
||||||
|
@ -94,7 +94,7 @@ def makeSparcSystem(mem_mode, mdesc = None):
|
||||||
self.readfile = mdesc.script()
|
self.readfile = mdesc.script()
|
||||||
self.iobus = Bus(bus_id=0)
|
self.iobus = Bus(bus_id=0)
|
||||||
self.membus = Bus(bus_id=1)
|
self.membus = Bus(bus_id=1)
|
||||||
self.bridge = Bridge()
|
self.bridge = Bridge(fix_partial_write_b=True, delay='50ns', nack_delay='4ns')
|
||||||
self.t1000 = T1000()
|
self.t1000 = T1000()
|
||||||
self.t1000.attachOnChipIO(self.membus)
|
self.t1000.attachOnChipIO(self.membus)
|
||||||
self.t1000.attachIO(self.iobus)
|
self.t1000.attachIO(self.iobus)
|
||||||
|
|
6
src/mem/cache/cache_builder.cc
vendored
6
src/mem/cache/cache_builder.cc
vendored
|
@ -134,7 +134,6 @@ BEGIN_DECLARE_SIM_OBJECT_PARAMS(BaseCache)
|
||||||
Param<bool> prefetch_cache_check_push;
|
Param<bool> prefetch_cache_check_push;
|
||||||
Param<bool> prefetch_use_cpu_id;
|
Param<bool> prefetch_use_cpu_id;
|
||||||
Param<bool> prefetch_data_accesses_only;
|
Param<bool> prefetch_data_accesses_only;
|
||||||
Param<int> hit_latency;
|
|
||||||
|
|
||||||
END_DECLARE_SIM_OBJECT_PARAMS(BaseCache)
|
END_DECLARE_SIM_OBJECT_PARAMS(BaseCache)
|
||||||
|
|
||||||
|
@ -190,8 +189,7 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(BaseCache)
|
||||||
INIT_PARAM_DFLT(prefetch_policy, "Type of prefetcher to use", "none"),
|
INIT_PARAM_DFLT(prefetch_policy, "Type of prefetcher to use", "none"),
|
||||||
INIT_PARAM_DFLT(prefetch_cache_check_push, "Check if in cash on push or pop of prefetch queue", true),
|
INIT_PARAM_DFLT(prefetch_cache_check_push, "Check if in cash on push or pop of prefetch queue", true),
|
||||||
INIT_PARAM_DFLT(prefetch_use_cpu_id, "Use the CPU ID to seperate calculations of prefetches", true),
|
INIT_PARAM_DFLT(prefetch_use_cpu_id, "Use the CPU ID to seperate calculations of prefetches", true),
|
||||||
INIT_PARAM_DFLT(prefetch_data_accesses_only, "Only prefetch on data not on instruction accesses", false),
|
INIT_PARAM_DFLT(prefetch_data_accesses_only, "Only prefetch on data not on instruction accesses", false)
|
||||||
INIT_PARAM_DFLT(hit_latency, "Hit Latecny for a succesful access", 1)
|
|
||||||
END_INIT_SIM_OBJECT_PARAMS(BaseCache)
|
END_INIT_SIM_OBJECT_PARAMS(BaseCache)
|
||||||
|
|
||||||
|
|
||||||
|
@ -211,7 +209,7 @@ END_INIT_SIM_OBJECT_PARAMS(BaseCache)
|
||||||
BUILD_NULL_PREFETCHER(TAGS); \
|
BUILD_NULL_PREFETCHER(TAGS); \
|
||||||
} \
|
} \
|
||||||
Cache<TAGS, c>::Params params(tags, mq, coh, base_params, \
|
Cache<TAGS, c>::Params params(tags, mq, coh, base_params, \
|
||||||
pf, prefetch_access, hit_latency, \
|
pf, prefetch_access, latency, \
|
||||||
true, \
|
true, \
|
||||||
store_compressed, \
|
store_compressed, \
|
||||||
adaptive_compression, \
|
adaptive_compression, \
|
||||||
|
|
|
@ -9,7 +9,7 @@ class BaseCache(MemObject):
|
||||||
"Use an adaptive compression scheme")
|
"Use an adaptive compression scheme")
|
||||||
assoc = Param.Int("associativity")
|
assoc = Param.Int("associativity")
|
||||||
block_size = Param.Int("block size in bytes")
|
block_size = Param.Int("block size in bytes")
|
||||||
latency = Param.Int("Latency")
|
latency = Param.Latency("Latency")
|
||||||
compressed_bus = Param.Bool(False,
|
compressed_bus = Param.Bool(False,
|
||||||
"This cache connects to a compressed memory")
|
"This cache connects to a compressed memory")
|
||||||
compression_latency = Param.Latency('0ns',
|
compression_latency = Param.Latency('0ns',
|
||||||
|
@ -59,6 +59,5 @@ class BaseCache(MemObject):
|
||||||
"Use the CPU ID to seperate calculations of prefetches")
|
"Use the CPU ID to seperate calculations of prefetches")
|
||||||
prefetch_data_accesses_only = Param.Bool(False,
|
prefetch_data_accesses_only = Param.Bool(False,
|
||||||
"Only prefetch on data not on instruction accesses")
|
"Only prefetch on data not on instruction accesses")
|
||||||
hit_latency = Param.Int(1,"Hit Latency of the cache")
|
|
||||||
cpu_side = Port("Port on side closer to CPU")
|
cpu_side = Port("Port on side closer to CPU")
|
||||||
mem_side = Port("Port on side closer to MEM")
|
mem_side = Port("Port on side closer to MEM")
|
||||||
|
|
|
@ -34,7 +34,7 @@ from m5.objects import *
|
||||||
# ====================
|
# ====================
|
||||||
|
|
||||||
class L1(BaseCache):
|
class L1(BaseCache):
|
||||||
latency = 1
|
latency = '1ns'
|
||||||
block_size = 64
|
block_size = 64
|
||||||
mshrs = 12
|
mshrs = 12
|
||||||
tgts_per_mshr = 8
|
tgts_per_mshr = 8
|
||||||
|
@ -46,7 +46,7 @@ class L1(BaseCache):
|
||||||
|
|
||||||
class L2(BaseCache):
|
class L2(BaseCache):
|
||||||
block_size = 64
|
block_size = 64
|
||||||
latency = 10
|
latency = '10ns'
|
||||||
mshrs = 92
|
mshrs = 92
|
||||||
tgts_per_mshr = 16
|
tgts_per_mshr = 16
|
||||||
write_buffers = 8
|
write_buffers = 8
|
||||||
|
|
|
@ -35,7 +35,7 @@ m5.AddToPath('../configs/common')
|
||||||
# ====================
|
# ====================
|
||||||
|
|
||||||
class L1(BaseCache):
|
class L1(BaseCache):
|
||||||
latency = 1
|
latency = '1ns'
|
||||||
block_size = 64
|
block_size = 64
|
||||||
mshrs = 4
|
mshrs = 4
|
||||||
tgts_per_mshr = 8
|
tgts_per_mshr = 8
|
||||||
|
@ -47,7 +47,7 @@ class L1(BaseCache):
|
||||||
|
|
||||||
class L2(BaseCache):
|
class L2(BaseCache):
|
||||||
block_size = 64
|
block_size = 64
|
||||||
latency = 100
|
latency = '10ns'
|
||||||
mshrs = 92
|
mshrs = 92
|
||||||
tgts_per_mshr = 16
|
tgts_per_mshr = 16
|
||||||
write_buffers = 8
|
write_buffers = 8
|
||||||
|
|
|
@ -33,7 +33,7 @@ m5.AddToPath('../configs/common')
|
||||||
class MyCache(BaseCache):
|
class MyCache(BaseCache):
|
||||||
assoc = 2
|
assoc = 2
|
||||||
block_size = 64
|
block_size = 64
|
||||||
latency = 1
|
latency = '1ns'
|
||||||
mshrs = 10
|
mshrs = 10
|
||||||
tgts_per_mshr = 5
|
tgts_per_mshr = 5
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ from m5.objects import *
|
||||||
# ====================
|
# ====================
|
||||||
|
|
||||||
class L1(BaseCache):
|
class L1(BaseCache):
|
||||||
latency = 1
|
latency = '1ns'
|
||||||
block_size = 64
|
block_size = 64
|
||||||
mshrs = 4
|
mshrs = 4
|
||||||
tgts_per_mshr = 8
|
tgts_per_mshr = 8
|
||||||
|
@ -46,7 +46,7 @@ class L1(BaseCache):
|
||||||
|
|
||||||
class L2(BaseCache):
|
class L2(BaseCache):
|
||||||
block_size = 64
|
block_size = 64
|
||||||
latency = 100
|
latency = '10ns'
|
||||||
mshrs = 92
|
mshrs = 92
|
||||||
tgts_per_mshr = 16
|
tgts_per_mshr = 16
|
||||||
write_buffers = 8
|
write_buffers = 8
|
||||||
|
|
|
@ -34,7 +34,7 @@ from m5.objects import *
|
||||||
# ====================
|
# ====================
|
||||||
|
|
||||||
class L1(BaseCache):
|
class L1(BaseCache):
|
||||||
latency = 1
|
latency = '1ns'
|
||||||
block_size = 64
|
block_size = 64
|
||||||
mshrs = 4
|
mshrs = 4
|
||||||
tgts_per_mshr = 8
|
tgts_per_mshr = 8
|
||||||
|
@ -46,7 +46,7 @@ class L1(BaseCache):
|
||||||
|
|
||||||
class L2(BaseCache):
|
class L2(BaseCache):
|
||||||
block_size = 64
|
block_size = 64
|
||||||
latency = 100
|
latency = '10ns'
|
||||||
mshrs = 92
|
mshrs = 92
|
||||||
tgts_per_mshr = 16
|
tgts_per_mshr = 16
|
||||||
write_buffers = 8
|
write_buffers = 8
|
||||||
|
|
|
@ -32,13 +32,13 @@ from m5.objects import *
|
||||||
class MyCache(BaseCache):
|
class MyCache(BaseCache):
|
||||||
assoc = 2
|
assoc = 2
|
||||||
block_size = 64
|
block_size = 64
|
||||||
latency = 1
|
latency = '1ns'
|
||||||
mshrs = 10
|
mshrs = 10
|
||||||
tgts_per_mshr = 5
|
tgts_per_mshr = 5
|
||||||
|
|
||||||
cpu = TimingSimpleCPU(cpu_id=0)
|
cpu = TimingSimpleCPU(cpu_id=0)
|
||||||
cpu.addTwoLevelCacheHierarchy(MyCache(size = '128kB'), MyCache(size = '256kB'),
|
cpu.addTwoLevelCacheHierarchy(MyCache(size = '128kB'), MyCache(size = '256kB'),
|
||||||
MyCache(size = '2MB'))
|
MyCache(size = '2MB', latency='10ns'))
|
||||||
system = System(cpu = cpu,
|
system = System(cpu = cpu,
|
||||||
physmem = PhysicalMemory(),
|
physmem = PhysicalMemory(),
|
||||||
membus = Bus())
|
membus = Bus())
|
||||||
|
|
|
@ -31,12 +31,49 @@ from m5.objects import *
|
||||||
m5.AddToPath('../configs/common')
|
m5.AddToPath('../configs/common')
|
||||||
import FSConfig
|
import FSConfig
|
||||||
|
|
||||||
|
# --------------------
|
||||||
|
# Base L1 Cache
|
||||||
|
# ====================
|
||||||
|
|
||||||
|
class L1(BaseCache):
|
||||||
|
latency = '1ns'
|
||||||
|
block_size = 64
|
||||||
|
mshrs = 4
|
||||||
|
tgts_per_mshr = 8
|
||||||
|
protocol = CoherenceProtocol(protocol='moesi')
|
||||||
|
|
||||||
|
# ----------------------
|
||||||
|
# Base L2 Cache
|
||||||
|
# ----------------------
|
||||||
|
|
||||||
|
class L2(BaseCache):
|
||||||
|
block_size = 64
|
||||||
|
latency = '10ns'
|
||||||
|
mshrs = 92
|
||||||
|
tgts_per_mshr = 16
|
||||||
|
write_buffers = 8
|
||||||
|
|
||||||
|
#cpu
|
||||||
cpus = [ AtomicSimpleCPU(cpu_id=i) for i in xrange(2) ]
|
cpus = [ AtomicSimpleCPU(cpu_id=i) for i in xrange(2) ]
|
||||||
|
#the system
|
||||||
system = FSConfig.makeLinuxAlphaSystem('atomic')
|
system = FSConfig.makeLinuxAlphaSystem('atomic')
|
||||||
|
|
||||||
system.cpu = cpus
|
system.cpu = cpus
|
||||||
|
#create the l1/l2 bus
|
||||||
|
system.toL2Bus = Bus()
|
||||||
|
|
||||||
|
#connect up the l2 cache
|
||||||
|
system.l2c = L2(size='4MB', assoc=8)
|
||||||
|
system.l2c.cpu_side = system.toL2Bus.port
|
||||||
|
system.l2c.mem_side = system.membus.port
|
||||||
|
|
||||||
|
#connect up the cpu and l1s
|
||||||
for c in cpus:
|
for c in cpus:
|
||||||
c.connectMemPorts(system.membus)
|
c.addPrivateSplitL1Caches(L1(size = '32kB', assoc = 1),
|
||||||
|
L1(size = '32kB', assoc = 4))
|
||||||
|
# connect cpu level-1 caches to shared level-2 cache
|
||||||
|
c.connectMemPorts(system.toL2Bus)
|
||||||
|
c.clock = '2GHz'
|
||||||
|
|
||||||
root = Root(system=system)
|
root = Root(system=system)
|
||||||
|
m5.ticks.setGlobalFrequency('1THz')
|
||||||
m5.ticks.setGlobalFrequency('2GHz')
|
|
||||||
|
|
|
@ -31,10 +31,49 @@ from m5.objects import *
|
||||||
m5.AddToPath('../configs/common')
|
m5.AddToPath('../configs/common')
|
||||||
import FSConfig
|
import FSConfig
|
||||||
|
|
||||||
|
# --------------------
|
||||||
|
# Base L1 Cache
|
||||||
|
# ====================
|
||||||
|
|
||||||
|
class L1(BaseCache):
|
||||||
|
latency = '1ns'
|
||||||
|
block_size = 64
|
||||||
|
mshrs = 4
|
||||||
|
tgts_per_mshr = 8
|
||||||
|
protocol = CoherenceProtocol(protocol='moesi')
|
||||||
|
|
||||||
|
# ----------------------
|
||||||
|
# Base L2 Cache
|
||||||
|
# ----------------------
|
||||||
|
|
||||||
|
class L2(BaseCache):
|
||||||
|
block_size = 64
|
||||||
|
latency = '10ns'
|
||||||
|
mshrs = 92
|
||||||
|
tgts_per_mshr = 16
|
||||||
|
write_buffers = 8
|
||||||
|
|
||||||
|
#cpu
|
||||||
cpu = AtomicSimpleCPU(cpu_id=0)
|
cpu = AtomicSimpleCPU(cpu_id=0)
|
||||||
|
#the system
|
||||||
system = FSConfig.makeLinuxAlphaSystem('atomic')
|
system = FSConfig.makeLinuxAlphaSystem('atomic')
|
||||||
|
|
||||||
system.cpu = cpu
|
system.cpu = cpu
|
||||||
cpu.connectMemPorts(system.membus)
|
#create the l1/l2 bus
|
||||||
|
system.toL2Bus = Bus()
|
||||||
|
|
||||||
|
#connect up the l2 cache
|
||||||
|
system.l2c = L2(size='4MB', assoc=8)
|
||||||
|
system.l2c.cpu_side = system.toL2Bus.port
|
||||||
|
system.l2c.mem_side = system.membus.port
|
||||||
|
|
||||||
|
#connect up the cpu and l1s
|
||||||
|
cpu.addPrivateSplitL1Caches(L1(size = '32kB', assoc = 1),
|
||||||
|
L1(size = '32kB', assoc = 4))
|
||||||
|
# connect cpu level-1 caches to shared level-2 cache
|
||||||
|
cpu.connectMemPorts(system.toL2Bus)
|
||||||
|
cpu.clock = '2GHz'
|
||||||
|
|
||||||
root = Root(system=system)
|
root = Root(system=system)
|
||||||
m5.ticks.setGlobalFrequency('2GHz')
|
m5.ticks.setGlobalFrequency('1THz')
|
||||||
|
|
||||||
|
|
|
@ -31,11 +31,51 @@ from m5.objects import *
|
||||||
m5.AddToPath('../configs/common')
|
m5.AddToPath('../configs/common')
|
||||||
import FSConfig
|
import FSConfig
|
||||||
|
|
||||||
|
# --------------------
|
||||||
|
# Base L1 Cache
|
||||||
|
# ====================
|
||||||
|
|
||||||
|
class L1(BaseCache):
|
||||||
|
latency = '1ns'
|
||||||
|
block_size = 64
|
||||||
|
mshrs = 4
|
||||||
|
tgts_per_mshr = 8
|
||||||
|
protocol = CoherenceProtocol(protocol='moesi')
|
||||||
|
|
||||||
|
# ----------------------
|
||||||
|
# Base L2 Cache
|
||||||
|
# ----------------------
|
||||||
|
|
||||||
|
class L2(BaseCache):
|
||||||
|
block_size = 64
|
||||||
|
latency = '10ns'
|
||||||
|
mshrs = 92
|
||||||
|
tgts_per_mshr = 16
|
||||||
|
write_buffers = 8
|
||||||
|
|
||||||
|
#cpu
|
||||||
cpus = [ TimingSimpleCPU(cpu_id=i) for i in xrange(2) ]
|
cpus = [ TimingSimpleCPU(cpu_id=i) for i in xrange(2) ]
|
||||||
|
#the system
|
||||||
system = FSConfig.makeLinuxAlphaSystem('timing')
|
system = FSConfig.makeLinuxAlphaSystem('timing')
|
||||||
|
|
||||||
system.cpu = cpus
|
system.cpu = cpus
|
||||||
|
#create the l1/l2 bus
|
||||||
|
system.toL2Bus = Bus()
|
||||||
|
|
||||||
|
#connect up the l2 cache
|
||||||
|
system.l2c = L2(size='4MB', assoc=8)
|
||||||
|
system.l2c.cpu_side = system.toL2Bus.port
|
||||||
|
system.l2c.mem_side = system.membus.port
|
||||||
|
|
||||||
|
#connect up the cpu and l1s
|
||||||
for c in cpus:
|
for c in cpus:
|
||||||
c.connectMemPorts(system.membus)
|
c.addPrivateSplitL1Caches(L1(size = '32kB', assoc = 1),
|
||||||
|
L1(size = '32kB', assoc = 4))
|
||||||
|
# connect cpu level-1 caches to shared level-2 cache
|
||||||
|
c.connectMemPorts(system.toL2Bus)
|
||||||
|
c.clock = '2GHz'
|
||||||
|
|
||||||
root = Root(system=system)
|
root = Root(system=system)
|
||||||
m5.ticks.setGlobalFrequency('2GHz')
|
m5.ticks.setGlobalFrequency('1THz')
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -31,10 +31,50 @@ from m5.objects import *
|
||||||
m5.AddToPath('../configs/common')
|
m5.AddToPath('../configs/common')
|
||||||
import FSConfig
|
import FSConfig
|
||||||
|
|
||||||
|
|
||||||
|
# --------------------
|
||||||
|
# Base L1 Cache
|
||||||
|
# ====================
|
||||||
|
|
||||||
|
class L1(BaseCache):
|
||||||
|
latency = '1ns'
|
||||||
|
block_size = 64
|
||||||
|
mshrs = 4
|
||||||
|
tgts_per_mshr = 8
|
||||||
|
protocol = CoherenceProtocol(protocol='moesi')
|
||||||
|
|
||||||
|
# ----------------------
|
||||||
|
# Base L2 Cache
|
||||||
|
# ----------------------
|
||||||
|
|
||||||
|
class L2(BaseCache):
|
||||||
|
block_size = 64
|
||||||
|
latency = '10ns'
|
||||||
|
mshrs = 92
|
||||||
|
tgts_per_mshr = 16
|
||||||
|
write_buffers = 8
|
||||||
|
|
||||||
|
#cpu
|
||||||
cpu = TimingSimpleCPU(cpu_id=0)
|
cpu = TimingSimpleCPU(cpu_id=0)
|
||||||
|
#the system
|
||||||
system = FSConfig.makeLinuxAlphaSystem('timing')
|
system = FSConfig.makeLinuxAlphaSystem('timing')
|
||||||
|
|
||||||
system.cpu = cpu
|
system.cpu = cpu
|
||||||
cpu.connectMemPorts(system.membus)
|
#create the l1/l2 bus
|
||||||
|
system.toL2Bus = Bus()
|
||||||
|
|
||||||
|
#connect up the l2 cache
|
||||||
|
system.l2c = L2(size='4MB', assoc=8)
|
||||||
|
system.l2c.cpu_side = system.toL2Bus.port
|
||||||
|
system.l2c.mem_side = system.membus.port
|
||||||
|
|
||||||
|
#connect up the cpu and l1s
|
||||||
|
cpu.addPrivateSplitL1Caches(L1(size = '32kB', assoc = 1),
|
||||||
|
L1(size = '32kB', assoc = 4))
|
||||||
|
# connect cpu level-1 caches to shared level-2 cache
|
||||||
|
cpu.connectMemPorts(system.toL2Bus)
|
||||||
|
cpu.clock = '2GHz'
|
||||||
|
|
||||||
root = Root(system=system)
|
root = Root(system=system)
|
||||||
m5.ticks.setGlobalFrequency('2GHz')
|
m5.ticks.setGlobalFrequency('1THz')
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue