solo-defaults.tcl
6.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
#
# Copyright (C) 1996-1998 by the Board of Trustees
# of Leland Stanford Junior University.
#
# This file is part of the SimOS distribution.
# See LICENSE file for terms of the license.
#
########################################################################
# #
# Default parameter values for solo. This file should be sourced at #
# the start of your init.solo file and then you can change any of the #
# values below that source. #
# #
########################################################################
#
# MACHINES:
#
# Number of machines to simulate
set PARAM(MACHINE.Count) 1
#
# CPU:
#
# Which instruction set architecture... currently only MIPS
set PARAM(CPU.ISA) "MIPS"
# Default to R4000 (TLB) also support R10000
set PARAM(TLB.Org) R4000
# Clock speed in MHz.
set PARAM(CPU.Clock) 200
# CPU model -- solo always uses mipsy
set PARAM(CPU.Model) MIPSY
# Number of CPUs
set PARAM(CPU.Count) 1
#
# CACHE:
#
# 2Level is currently the only type of cache model we support. 2Level
# consists of separate level 1 instruction and data caches and a
# unified level 2 cache. Additionally, there is a configurable write buffer.
#
set PARAM(CACHE.Model) 2Level
#
# 2Level specifics
#
# Size (in kilobytes) of the 1st level instruction cache
set PARAM(CACHE.2Level.ISize) 32
# Size (in bytes) of a 1st level instruction cache line
set PARAM(CACHE.2Level.ILine) 64
# Associativity of 1st level instruction cache
set PARAM(CACHE.2Level.IAssoc) 2
# Size (in kilobytes) of the 1st level data cache
set PARAM(CACHE.2Level.DSize) 32
# Size (in bytes) of a 1st level data cache line
set PARAM(CACHE.2Level.DLine) 64
# Associativity of 1st level data cache
set PARAM(CACHE.2Level.DAssoc) 2
# Size (in kilobytes) of the 2nd level unified cache
set PARAM(CACHE.2Level.L2Size) 1024
# Size (in bytes) of a 2nd level cache line
set PARAM(CACHE.2Level.L2Line) 128
# Associativity of 2nd level unified cache
set PARAM(CACHE.2Level.L2Assoc) 2
# Time (in nanoseconds) for a 2nd level cache hit
set PARAM(CACHE.2Level.L2HitTime) 50
# The write buffer allows non-blocking writes. 0 turns off the buffer.
set PARAM(CACHE.2Level.WriteBufferSize) 0
#
set PARAM(CACHE.2Level.UpgradesOnUP) 0
# Time (in *cycles*) before a NAKed memory request is retried
set PARAM(CACHE.2Level.NAKRetryTime) 1
#
# MEMORY SYSTEM:
#
# Models include:
# * BusUma - uniform memory access time with bus contention,
# snoopy caches, writeback buffers, and an
# out-of-order split transaction bus.
# * Numa - Similar to BusUma, but with latencies dependent on
# where memory is found.
# * Perfect - Models a zero access time memory system
# * Flashlite - Cycle accurate model of the FLASH memory system
#
# Memory size in megabytes
set PARAM(MEMSYS.MemSize) 32
set PARAM(MEMSYS.Model) BusUma
set PARAM(MEMSYS.Perfect.Latency) 0
#
# BusUma parameters
#
# The maximum bandwith (in MB/s) that the bus can support
set PARAM(MEMSYS.BusUma.BusBW) 1200
# Total time (in ns) to fetch a cache line from memory in an unloaded system
set PARAM(MEMSYS.BusUma.MemCycleTime) 500
# The time (in ns) to get data out of another CPU's cache if it is dirty there.
# Overall time for a dirty miss will be (MemCycleTime + DirtyPenalty)
# in an unloaded system.
set PARAM(MEMSYS.BusUma.DirtyPenalty) 250
# Total time (in ns) to issue an upgrade in an unloaded system.
set PARAM(MEMSYS.BusUma.UpgradeTime) 400
# The number of memory units (banks). Different memories can be servicing
# requests simultaneously if the requested data is in different memory units.
set PARAM(MEMSYS.BusUma.NumMemories) 1
#
# Numa parameters
#
# The number of memories/directory controllers in the system. The
# value should lie in the range of 1 to "NUM_CPUS". 1 would be
# like a bus-based system. "NUM_CPUS" would be a CPU per
# controller (e.g. FLASH) and anything in between would have
# clusters of CPUs per controller (e.g. DASH).
set PARAM(MEMSYS.Numa.NumMemories) 1
# The latency (in ns) for the bus operation from a processor to
# its local directory controller.
set PARAM(MEMSYS.Numa.BusTime) 100
# The time (in ns) it takes the directory controller to do specific
# operations.
# PILocalDCTime = occupancy of dc on local miss
set PARAM(MEMSYS.Numa.PILocalDCTime) 100
# PIRemoteDCTime = occupancy of local dc on outgoing remote miss
set PARAM(MEMSYS.Numa.PIRemoteDCTime) 25
# NILocalDCTime = occupancy of remote dc on remote miss
set PARAM(MEMSYS.Numa.NILocalDCTime) 350
# NIRemoteDCTime = occupancy of local dc on incoming remote miss
set PARAM(MEMSYS.Numa.NIRemoteDCTime) 25
# Latency (in ns) for the directory controller to fetch a cache
# line from local memory.
set PARAM(MEMSYS.Numa.MemTime) 50
# Fixed latency (in ns) for going between directory controllers,
# across the network.
set PARAM(MEMSYS.Numa.NetTime) 350
# Granularity (in pages) of striping physical pages across
# directory controllers. For example, if this is set to 1, memory
# pages are distributed roundrobin across the cotrollers. The
# default (-1) is stripe size of
# PARAM(MEMSYS.MemSize)/PARAM(MEMSYS.Numa.NumMemories)/PAGE_SIZE.
set PARAM(MEMSYS.Numa.StripeSize) -1
#
# FILES:
#
# If this is set, cpu log files will be saved as cpu.log.<number>
set PARAM(FILES.SaveOldCPULogs) yes
#
# VISUAL:
#
# The port to which the SimOS visual interface should connect
set PARAM(VISUAL.Port) 1865
# Period in cycles in which SimOS checks the visual interface
set PARAM(VISUAL.SamplePeriod) 4194304