dcache_class, icache_class, l2_cache_class = \
L1Cache, L1Cache, L2Cache
+ # Set the cache line size of the system
+ system.cache_line_size = options.cacheline_size
+
if options.l2cache:
# Provide a clock for the L2 and the L1-to-L2 bus here as they
# are not connected using addTwoLevelCacheHierarchy. Use the
# bytes (256 bits).
system.l2 = l2_cache_class(clk_domain=system.cpu_clk_domain,
size=options.l2_size,
- assoc=options.l2_assoc,
- block_size=options.cacheline_size)
+ assoc=options.l2_assoc)
system.tol2bus = CoherentBus(clk_domain = system.cpu_clk_domain,
width = 32)
for i in xrange(options.num_cpus):
if options.caches:
icache = icache_class(size=options.l1i_size,
- assoc=options.l1i_assoc,
- block_size=options.cacheline_size)
+ assoc=options.l1i_assoc)
dcache = dcache_class(size=options.l1d_size,
- assoc=options.l1d_assoc,
- block_size=options.cacheline_size)
+ assoc=options.l1d_assoc)
# When connecting the caches, the clock is also inherited
# from the CPU in question
assoc = 2
hit_latency = 2
response_latency = 2
- block_size = 64
mshrs = 4
tgts_per_mshr = 20
is_top_level = True
class L2Cache(BaseCache):
assoc = 8
- block_size = 64
hit_latency = 20
response_latency = 20
mshrs = 20
class IOCache(BaseCache):
assoc = 8
- block_size = 64
hit_latency = 50
response_latency = 50
mshrs = 20
class PageTableWalkerCache(BaseCache):
assoc = 2
- block_size = 64
hit_latency = 2
response_latency = 2
mshrs = 10
class O3_ARM_v7a_ICache(BaseCache):
hit_latency = 1
response_latency = 1
- block_size = 64
mshrs = 2
tgts_per_mshr = 8
size = '32kB'
class O3_ARM_v7a_DCache(BaseCache):
hit_latency = 2
response_latency = 2
- block_size = 64
mshrs = 6
tgts_per_mshr = 8
size = '32kB'
class O3_ARM_v7aWalkCache(BaseCache):
hit_latency = 4
response_latency = 4
- block_size = 64
mshrs = 6
tgts_per_mshr = 8
size = '1kB'
class O3_ARM_v7aL2(BaseCache):
hit_latency = 12
response_latency = 12
- block_size = 64
mshrs = 16
tgts_per_mshr = 8
size = '1MB'
sys.exit(1)
# define prototype L1 cache
-proto_l1 = BaseCache(size = '32kB', assoc = 4, block_size = block_size,
+proto_l1 = BaseCache(size = '32kB', assoc = 4,
hit_latency = '1ns', response_latency = '1ns',
tgts_per_mshr = 8)
# system simulated
system = System(funcmem = SimpleMemory(in_addr_map = False),
funcbus = NoncoherentBus(),
- physmem = SimpleMemory(latency = "100ns"))
+ physmem = SimpleMemory(latency = "100ns"),
+ cache_line_size = block_size)
system.clk_domain = SrcClockDomain(clock = options.sys_clock)
def make_level(spec, prototypes, attach_obj, attach_port):
system = System(cpu = [CPUClass(cpu_id=i) for i in xrange(np)],
physmem = MemClass(range=AddrRange(options.mem_size)),
mem_mode = test_mem_mode,
- clk_domain = SrcClockDomain(clock = options.sys_clock))
+ clk_domain = SrcClockDomain(clock = options.sys_clock),
+ cache_line_size = options.cacheline_size)
# Create a separate clock domain for the CPUs
system.cpu_clk_domain = SrcClockDomain(clock = options.cpu_clock)
class L1(BaseCache):
latency = options.l1latency
- block_size = 64
mshrs = 12
tgts_per_mshr = 8
# ----------------------
class L2(BaseCache):
- block_size = 64
latency = options.l2latency
mshrs = 92
tgts_per_mshr = 16
class L1(BaseCache):
latency = options.l1latency
- block_size = 64
mshrs = 12
tgts_per_mshr = 8
# ----------------------
class L2(BaseCache):
- block_size = 64
latency = options.l2latency
mshrs = 92
tgts_per_mshr = 16