configs, dev, learning-gem5, python, tests: more clarification
This commit contains the rest of the base 2 vs base 10 cache/memory size clarifications. It also changes the warning message to use warn(). With these changes, the warning message should now no longer show up during a fresh compilation of gem5. Change-Id: Ia63f841bdf045b76473437f41548fab27dc19631
This commit is contained in:
committed by
Erin (Jianghua) Le
parent
28453a0e3e
commit
e1db67c4bd
@@ -308,7 +308,7 @@ def main():
|
||||
"--mem-size",
|
||||
action="store",
|
||||
type=str,
|
||||
default="2GB",
|
||||
default="2GiB",
|
||||
help="Specify the physical memory size",
|
||||
)
|
||||
parser.add_argument("--checkpoint", action="store_true")
|
||||
|
||||
@@ -52,7 +52,7 @@ class L1I(L1_ICache):
|
||||
response_latency = 1
|
||||
mshrs = 4
|
||||
tgts_per_mshr = 8
|
||||
size = "48kB"
|
||||
size = "48KiB"
|
||||
assoc = 3
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ class L1D(L1_DCache):
|
||||
response_latency = 1
|
||||
mshrs = 16
|
||||
tgts_per_mshr = 16
|
||||
size = "32kB"
|
||||
size = "32KiB"
|
||||
assoc = 2
|
||||
write_buffers = 16
|
||||
|
||||
@@ -73,14 +73,14 @@ class L2(L2Cache):
|
||||
response_latency = 5
|
||||
mshrs = 32
|
||||
tgts_per_mshr = 8
|
||||
size = "1MB"
|
||||
size = "1MiB"
|
||||
assoc = 16
|
||||
write_buffers = 8
|
||||
clusivity = "mostly_excl"
|
||||
|
||||
|
||||
class L3(Cache):
|
||||
size = "16MB"
|
||||
size = "16MiB"
|
||||
assoc = 16
|
||||
tag_latency = 20
|
||||
data_latency = 20
|
||||
|
||||
@@ -156,7 +156,7 @@ def main():
|
||||
"--mem-size",
|
||||
action="store",
|
||||
type=str,
|
||||
default="2GB",
|
||||
default="2GiB",
|
||||
help="Specify the physical memory size",
|
||||
)
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@ from devices import (
|
||||
|
||||
default_disk = "aarch64-ubuntu-trusty-headless.img"
|
||||
|
||||
default_mem_size = "2GB"
|
||||
default_mem_size = "2GiB"
|
||||
|
||||
|
||||
def _to_ticks(value):
|
||||
|
||||
@@ -278,10 +278,10 @@ def main():
|
||||
parser.add_argument("--num-dirs", type=int, default=1)
|
||||
parser.add_argument("--num-l2caches", type=int, default=1)
|
||||
parser.add_argument("--num-l3caches", type=int, default=1)
|
||||
parser.add_argument("--l1d_size", type=str, default="64kB")
|
||||
parser.add_argument("--l1i_size", type=str, default="32kB")
|
||||
parser.add_argument("--l2_size", type=str, default="2MB")
|
||||
parser.add_argument("--l3_size", type=str, default="16MB")
|
||||
parser.add_argument("--l1d_size", type=str, default="64KiB")
|
||||
parser.add_argument("--l1i_size", type=str, default="32KiB")
|
||||
parser.add_argument("--l2_size", type=str, default="2MiB")
|
||||
parser.add_argument("--l3_size", type=str, default="16MiB")
|
||||
parser.add_argument("--l1d_assoc", type=int, default=2)
|
||||
parser.add_argument("--l1i_assoc", type=int, default=2)
|
||||
parser.add_argument("--l2_assoc", type=int, default=8)
|
||||
|
||||
@@ -189,7 +189,7 @@ def main():
|
||||
"--mem-size",
|
||||
action="store",
|
||||
type=str,
|
||||
default="2GB",
|
||||
default="2GiB",
|
||||
help="Specify the physical memory size",
|
||||
)
|
||||
parser.add_argument(
|
||||
|
||||
@@ -59,12 +59,12 @@ requires(isa_required=ISA.ARM)
|
||||
cache_hierarchy = NoCache()
|
||||
|
||||
# We use a single channel DDR3_1600 memory system
|
||||
memory = SingleChannelDDR3_1600(size="32MB")
|
||||
memory = SingleChannelDDR3_1600(size="32MiB")
|
||||
|
||||
# We use a simple Timing processor with one core.
|
||||
processor = SimpleProcessor(cpu_type=CPUTypes.TIMING, isa=ISA.ARM, num_cores=1)
|
||||
|
||||
# The gem5 library simble board which can be used to run simple SE-mode
|
||||
# The gem5 library simple board which can be used to run simple SE-mode
|
||||
# simulations.
|
||||
board = SimpleBoard(
|
||||
clk_freq="3GHz",
|
||||
|
||||
@@ -67,11 +67,11 @@ from gem5.components.cachehierarchies.classic.private_l1_private_l2_cache_hierar
|
||||
|
||||
# Here we setup the parameters of the l1 and l2 caches.
|
||||
cache_hierarchy = PrivateL1PrivateL2CacheHierarchy(
|
||||
l1d_size="16kB", l1i_size="16kB", l2_size="256kB"
|
||||
l1d_size="16KiB", l1i_size="16KiB", l2_size="256KiB"
|
||||
)
|
||||
|
||||
# Memory: Dual Channel DDR4 2400 DRAM device.
|
||||
memory = DualChannelDDR4_2400(size="2GB")
|
||||
memory = DualChannelDDR4_2400(size="2GiB")
|
||||
|
||||
# Here we setup the processor. This is a special switchable processor in which
|
||||
# a starting core type and a switch core type must be specified. Once a
|
||||
|
||||
@@ -66,12 +66,12 @@ from gem5.components.cachehierarchies.classic.private_l1_private_l2_cache_hierar
|
||||
|
||||
# Here we setup the parameters of the l1 and l2 caches.
|
||||
cache_hierarchy = PrivateL1PrivateL2CacheHierarchy(
|
||||
l1d_size="16kB", l1i_size="16kB", l2_size="256kB"
|
||||
l1d_size="16KiB", l1i_size="16KiB", l2_size="256KiB"
|
||||
)
|
||||
|
||||
# Memory: Dual Channel DDR4 2400 DRAM device.
|
||||
|
||||
memory = DualChannelDDR4_2400(size="2GB")
|
||||
memory = DualChannelDDR4_2400(size="2GiB")
|
||||
|
||||
# Here we setup the processor. We use a simple TIMING processor. The config
|
||||
# script was also tested with ATOMIC processor.
|
||||
|
||||
@@ -75,7 +75,7 @@ cache_hierarchy = OctopiCache(
|
||||
is_fullsystem=True,
|
||||
)
|
||||
|
||||
memory = DualChannelDDR4_2400(size="16GB")
|
||||
memory = DualChannelDDR4_2400(size="16GiB")
|
||||
|
||||
# The number of cores must be consistent with
|
||||
# num_core_complexes and num_cores_per_core_complexes
|
||||
|
||||
@@ -64,14 +64,14 @@ requires(isa_required=ISA.RISCV)
|
||||
cache_hierarchy = NoCache()
|
||||
|
||||
# We use a single channel DDR3_1600 memory system
|
||||
memory = SingleChannelDDR3_1600(size="32MB")
|
||||
memory = SingleChannelDDR3_1600(size="32MiB")
|
||||
|
||||
# We use a simple Timing processor with one core.
|
||||
processor = SimpleProcessor(
|
||||
cpu_type=CPUTypes.TIMING, isa=ISA.RISCV, num_cores=1
|
||||
)
|
||||
|
||||
# The gem5 library simble board which can be used to run simple SE-mode
|
||||
# The gem5 library simple board which can be used to run simple SE-mode
|
||||
# simulations.
|
||||
board = SimpleBoard(
|
||||
clk_freq="3GHz",
|
||||
|
||||
@@ -75,14 +75,14 @@ requires(isa_required=ISA.RISCV)
|
||||
cache_hierarchy = NoCache()
|
||||
|
||||
# We use a single channel DDR3_1600 memory system
|
||||
memory = SingleChannelDDR3_1600(size="32MB")
|
||||
memory = SingleChannelDDR3_1600(size="32MiB")
|
||||
|
||||
# We use a simple Timing processor with one core.
|
||||
processor = SimpleProcessor(
|
||||
cpu_type=CPUTypes.TIMING, isa=ISA.RISCV, num_cores=1
|
||||
)
|
||||
|
||||
# The gem5 library simble board which can be used to run simple SE-mode
|
||||
# The gem5 library simple board which can be used to run simple SE-mode
|
||||
# simulations.
|
||||
board = SimpleBoard(
|
||||
clk_freq="3GHz",
|
||||
|
||||
@@ -94,7 +94,7 @@ cache_hierarchy = NoCache()
|
||||
# Using simple memory to take checkpoints might slightly imporve the
|
||||
# performance in atomic mode. The memory structure can be changed when
|
||||
# restoring from a checkpoint, but the size of the memory must be maintained.
|
||||
memory = SingleChannelDDR3_1600(size="2GB")
|
||||
memory = SingleChannelDDR3_1600(size="2GiB")
|
||||
|
||||
processor = SimpleProcessor(
|
||||
cpu_type=CPUTypes.ATOMIC,
|
||||
|
||||
@@ -81,14 +81,14 @@ requires(isa_required=ISA.X86)
|
||||
# The cache hierarchy can be different from the cache hierarchy used in taking
|
||||
# the checkpoints
|
||||
cache_hierarchy = PrivateL1PrivateL2WalkCacheHierarchy(
|
||||
l1d_size="32kB",
|
||||
l1i_size="32kB",
|
||||
l2_size="256kB",
|
||||
l1d_size="32KiB",
|
||||
l1i_size="32KiB",
|
||||
l2_size="256KiB",
|
||||
)
|
||||
|
||||
# The memory structure can be different from the memory structure used in
|
||||
# taking the checkpoints, but the size of the memory must be maintained
|
||||
memory = DualChannelDDR4_2400(size="2GB")
|
||||
memory = DualChannelDDR4_2400(size="2GiB")
|
||||
|
||||
processor = SimpleProcessor(
|
||||
cpu_type=CPUTypes.TIMING,
|
||||
|
||||
@@ -50,7 +50,7 @@ from gem5.utils.requires import requires
|
||||
requires(isa_required=ISA.ARM)
|
||||
|
||||
# We need a cache as DRAMSys only accepts requests with the size of a cache line
|
||||
cache_hierarchy = PrivateL1CacheHierarchy(l1d_size="32kB", l1i_size="32kB")
|
||||
cache_hierarchy = PrivateL1CacheHierarchy(l1d_size="32KiB", l1i_size="32KiB")
|
||||
|
||||
# We use a single channel DDR3_1600 memory system
|
||||
memory = DRAMSysDDR3_1600(recordable=True)
|
||||
@@ -58,7 +58,7 @@ memory = DRAMSysDDR3_1600(recordable=True)
|
||||
# We use a simple Timing processor with one core.
|
||||
processor = SimpleProcessor(cpu_type=CPUTypes.TIMING, isa=ISA.ARM, num_cores=1)
|
||||
|
||||
# The gem5 library simble board which can be used to run simple SE-mode
|
||||
# The gem5 library simple board which can be used to run simple SE-mode
|
||||
# simulations.
|
||||
board = SimpleBoard(
|
||||
clk_freq="3GHz",
|
||||
|
||||
@@ -40,12 +40,12 @@ from gem5.simulate.simulator import Simulator
|
||||
memory = DRAMSysMem(
|
||||
configuration="ext/dramsys/DRAMSys/configs/ddr4-example.json",
|
||||
recordable=True,
|
||||
size="4GB",
|
||||
size="4GiB",
|
||||
)
|
||||
|
||||
generator = LinearGenerator(
|
||||
duration="250us",
|
||||
rate="40GB/s",
|
||||
rate="40GiB/s",
|
||||
num_cores=1,
|
||||
max_addr=memory.get_size(),
|
||||
)
|
||||
|
||||
@@ -94,7 +94,7 @@ cache_hierarchy = NoCache()
|
||||
# performance in atomic mode. The memory structure can be changed when
|
||||
# restoring from a checkpoint, but the size of the memory must be equal or
|
||||
# greater to that taken when creating the checkpoint.
|
||||
memory = SingleChannelDDR3_1600(size="2GB")
|
||||
memory = SingleChannelDDR3_1600(size="2GiB")
|
||||
|
||||
processor = SimpleProcessor(
|
||||
cpu_type=CPUTypes.ATOMIC,
|
||||
|
||||
@@ -91,14 +91,14 @@ args = parser.parse_args()
|
||||
# The cache hierarchy can be different from the cache hierarchy used in taking
|
||||
# the checkpoints
|
||||
cache_hierarchy = PrivateL1PrivateL2WalkCacheHierarchy(
|
||||
l1d_size="32kB",
|
||||
l1i_size="32kB",
|
||||
l2_size="256kB",
|
||||
l1d_size="32KiB",
|
||||
l1i_size="32KiB",
|
||||
l2_size="256KiB",
|
||||
)
|
||||
|
||||
# The memory structure can be different from the memory structure used in
|
||||
# taking the checkpoints, but the size of the memory must be equal or larger.
|
||||
memory = DualChannelDDR4_2400(size="2GB")
|
||||
memory = DualChannelDDR4_2400(size="2GiB")
|
||||
|
||||
processor = SimpleProcessor(
|
||||
cpu_type=CPUTypes.TIMING,
|
||||
|
||||
@@ -101,15 +101,15 @@ multisim.set_num_processes(3)
|
||||
for benchmark in obtain_resource("npb-benchmark-suite"):
|
||||
for num_cores in [1, 2]:
|
||||
cache_hierarchy = MESITwoLevelCacheHierarchy(
|
||||
l1d_size="32kB",
|
||||
l1i_size="32kB",
|
||||
l2_size="256kB",
|
||||
l1d_size="32KiB",
|
||||
l1i_size="32KiB",
|
||||
l2_size="256KiB",
|
||||
l1d_assoc=8,
|
||||
l1i_assoc=8,
|
||||
l2_assoc=16,
|
||||
num_l2_banks=2,
|
||||
)
|
||||
memory = DualChannelDDR4_2400(size="3GB")
|
||||
memory = DualChannelDDR4_2400(size="3GiB")
|
||||
processor = SimpleSwitchableProcessor(
|
||||
starting_core_type=CPUTypes.ATOMIC,
|
||||
switch_core_type=CPUTypes.TIMING,
|
||||
|
||||
@@ -70,7 +70,7 @@ multisim.set_num_processes(2)
|
||||
|
||||
for process_id in range(5):
|
||||
cache_hierarchy = NoCache()
|
||||
memory = SingleChannelDDR3_1600(size="32MB")
|
||||
memory = SingleChannelDDR3_1600(size="32MiB")
|
||||
processor = SimpleProcessor(
|
||||
cpu_type=CPUTypes.TIMING, isa=ISA.X86, num_cores=1
|
||||
)
|
||||
|
||||
@@ -59,7 +59,7 @@ requires(isa_required=ISA.POWER)
|
||||
cache_hierarchy = NoCache()
|
||||
|
||||
# We use a single channel DDR4_2400 memory system
|
||||
memory = SingleChannelDDR4_2400(size="32MB")
|
||||
memory = SingleChannelDDR4_2400(size="32MiB")
|
||||
|
||||
# We use a simple ATOMIC processor with one core.
|
||||
processor = SimpleProcessor(
|
||||
|
||||
@@ -63,12 +63,12 @@ from gem5.components.cachehierarchies.classic.private_l1_private_l2_walk_cache_h
|
||||
|
||||
# Here we setup the parameters of the l1 and l2 caches.
|
||||
cache_hierarchy = PrivateL1PrivateL2WalkCacheHierarchy(
|
||||
l1d_size="16kB", l1i_size="16kB", l2_size="256kB"
|
||||
l1d_size="16KiB", l1i_size="16KiB", l2_size="256KiB"
|
||||
)
|
||||
|
||||
# Memory: Dual Channel DDR4 2400 DRAM device.
|
||||
|
||||
memory = DualChannelDDR4_2400(size="3GB")
|
||||
memory = DualChannelDDR4_2400(size="3GiB")
|
||||
|
||||
# Here we setup the processor. We use a simple processor.
|
||||
processor = SimpleProcessor(
|
||||
|
||||
@@ -64,7 +64,7 @@ args = parser.parse_args()
|
||||
# instantiate the riscv matched board with default parameters
|
||||
board = RISCVMatchedBoard(
|
||||
clk_freq="1.2GHz",
|
||||
l2_size="2MB",
|
||||
l2_size="2MiB",
|
||||
is_fs=True,
|
||||
)
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
Script to run GAPBS benchmarks with gem5. The script expects the
|
||||
benchmark program and the simulation size to run. The input is in the format
|
||||
<benchmark_prog> <size> <synthetic>
|
||||
The system is fixed with 2 CPU cores, MESI Two Level system cache and 3 GB
|
||||
The system is fixed with 2 CPU cores, MESI Two Level system cache and 3 GiB
|
||||
DDR4 memory. It uses the x86 board.
|
||||
|
||||
This script will count the total number of instructions executed
|
||||
@@ -102,18 +102,18 @@ from gem5.components.cachehierarchies.ruby.mesi_two_level_cache_hierarchy import
|
||||
)
|
||||
|
||||
cache_hierarchy = MESITwoLevelCacheHierarchy(
|
||||
l1d_size="32kB",
|
||||
l1d_size="32KiB",
|
||||
l1d_assoc=8,
|
||||
l1i_size="32kB",
|
||||
l1i_size="32KiB",
|
||||
l1i_assoc=8,
|
||||
l2_size="256kB",
|
||||
l2_size="256KiB",
|
||||
l2_assoc=16,
|
||||
num_l2_banks=2,
|
||||
)
|
||||
# Memory: Dual Channel DDR4 2400 DRAM device.
|
||||
# The X86 board only supports 3 GB of main memory.
|
||||
# The X86 board only supports 3 GiB of main memory.
|
||||
|
||||
memory = DualChannelDDR4_2400(size="3GB")
|
||||
memory = DualChannelDDR4_2400(size="3GiB")
|
||||
|
||||
# Here we setup the processor. This is a special switchable processor in which
|
||||
# a starting core type and a switch core type must be specified. Once a
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
Script to run NAS parallel benchmarks with gem5. The script expects the
|
||||
benchmark program to run. The input is in the format
|
||||
<benchmark_prog>.<class>.x .The system is fixed with 2 CPU cores, MESI
|
||||
Two Level system cache and 3 GB DDR4 memory. It uses the x86 board.
|
||||
Two Level system cache and 3 GiB DDR4 memory. It uses the x86 board.
|
||||
|
||||
This script will count the total number of instructions executed
|
||||
in the ROI. It also tracks how much wallclock and simulated time.
|
||||
@@ -77,8 +77,8 @@ requires(
|
||||
# Following are the list of benchmark programs for npb.
|
||||
|
||||
# We are restricting classes of NPB to A, B and C as the other classes (D and
|
||||
# F) require main memory size of more than 3 GB. The X86Board is currently
|
||||
# limited to 3 GB of memory. This limitation is explained later in line 136.
|
||||
# F) require main memory size of more than 3 GiB. The X86Board is currently
|
||||
# limited to 3 GiB of memory. This limitation is explained later in line 136.
|
||||
|
||||
# The resource disk has binaries for class D. However, only `ep` benchmark
|
||||
# works with class D in the current configuration. More information on the
|
||||
@@ -109,13 +109,13 @@ parser.add_argument(
|
||||
args = parser.parse_args()
|
||||
|
||||
|
||||
# The simulation may fail in the case of `mg` with class C as it uses 3.3 GB
|
||||
# The simulation may fail in the case of `mg` with class C as it uses 3.3 GiB
|
||||
# of memory (more information is available at https://arxiv.org/abs/2010.13216).
|
||||
# We warn the user here.
|
||||
|
||||
if args.benchmark == "npb-mg-c":
|
||||
warn(
|
||||
"mg.C uses 3.3 GB of memory. Currently we are simulating 3 GB\
|
||||
"mg.C uses 3.3 GiB of memory. Currently we are simulating 3 GiB\
|
||||
of main memory in the system."
|
||||
)
|
||||
|
||||
@@ -124,7 +124,7 @@ if args.benchmark == "npb-mg-c":
|
||||
elif args.benchmark == "npb-ft-c":
|
||||
warn(
|
||||
"There is not enough memory for ft.C. Currently we are\
|
||||
simulating 3 GB of main memory in the system."
|
||||
simulating 3 GiB of main memory in the system."
|
||||
)
|
||||
|
||||
# Checking for the maximum number of instructions, if provided by the user.
|
||||
@@ -137,18 +137,18 @@ from gem5.components.cachehierarchies.ruby.mesi_two_level_cache_hierarchy import
|
||||
)
|
||||
|
||||
cache_hierarchy = MESITwoLevelCacheHierarchy(
|
||||
l1d_size="32kB",
|
||||
l1d_size="32KiB",
|
||||
l1d_assoc=8,
|
||||
l1i_size="32kB",
|
||||
l1i_size="32KiB",
|
||||
l1i_assoc=8,
|
||||
l2_size="256kB",
|
||||
l2_size="256KiB",
|
||||
l2_assoc=16,
|
||||
num_l2_banks=2,
|
||||
)
|
||||
# Memory: Dual Channel DDR4 2400 DRAM device.
|
||||
# The X86 board only supports 3 GB of main memory.
|
||||
# The X86 board only supports 3 GiB of main memory.
|
||||
|
||||
memory = DualChannelDDR4_2400(size="3GB")
|
||||
memory = DualChannelDDR4_2400(size="3GiB")
|
||||
|
||||
# Here we setup the processor. This is a special switchable processor in which
|
||||
# a starting core type and a switch core type must be specified. Once a
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
Script to run PARSEC benchmarks with gem5.
|
||||
The script expects a benchmark program name and the simulation
|
||||
size. The system is fixed with 2 CPU cores, MESI Two Level system
|
||||
cache and 3 GB DDR4 memory. It uses the x86 board.
|
||||
cache and 3 GiB DDR4 memory. It uses the x86 board.
|
||||
|
||||
This script will count the total number of instructions executed
|
||||
in the ROI. It also tracks how much wallclock and simulated time.
|
||||
@@ -124,19 +124,19 @@ from gem5.components.cachehierarchies.ruby.mesi_two_level_cache_hierarchy import
|
||||
)
|
||||
|
||||
cache_hierarchy = MESITwoLevelCacheHierarchy(
|
||||
l1d_size="32kB",
|
||||
l1d_size="32KiB",
|
||||
l1d_assoc=8,
|
||||
l1i_size="32kB",
|
||||
l1i_size="32KiB",
|
||||
l1i_assoc=8,
|
||||
l2_size="256kB",
|
||||
l2_size="256KiB",
|
||||
l2_assoc=16,
|
||||
num_l2_banks=2,
|
||||
)
|
||||
|
||||
# Memory: Dual Channel DDR4 2400 DRAM device.
|
||||
# The X86 board only supports 3 GB of main memory.
|
||||
# The X86 board only supports 3 GiB of main memory.
|
||||
|
||||
memory = DualChannelDDR4_2400(size="3GB")
|
||||
memory = DualChannelDDR4_2400(size="3GiB")
|
||||
|
||||
# Here we setup the processor. This is a special switchable processor in which
|
||||
# a starting core type and a switch core type must be specified. Once a
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
Script to run SPEC CPU2006 benchmarks with gem5.
|
||||
The script expects a benchmark program name and the simulation
|
||||
size. The system is fixed with 2 CPU cores, MESI Two Level system
|
||||
cache and 3 GB DDR4 memory. It uses the x86 board.
|
||||
cache and 3 GiB DDR4 memory. It uses the x86 board.
|
||||
|
||||
This script will count the total number of instructions executed
|
||||
in the ROI. It also tracks how much wallclock and simulated time.
|
||||
@@ -193,18 +193,18 @@ from gem5.components.cachehierarchies.ruby.mesi_two_level_cache_hierarchy import
|
||||
)
|
||||
|
||||
cache_hierarchy = MESITwoLevelCacheHierarchy(
|
||||
l1d_size="32kB",
|
||||
l1d_size="32KiB",
|
||||
l1d_assoc=8,
|
||||
l1i_size="32kB",
|
||||
l1i_size="32KiB",
|
||||
l1i_assoc=8,
|
||||
l2_size="256kB",
|
||||
l2_size="256KiB",
|
||||
l2_assoc=16,
|
||||
num_l2_banks=2,
|
||||
)
|
||||
# Memory: Dual Channel DDR4 2400 DRAM device.
|
||||
# The X86 board only supports 3 GB of main memory.
|
||||
# The X86 board only supports 3 GiB of main memory.
|
||||
|
||||
memory = DualChannelDDR4_2400(size="3GB")
|
||||
memory = DualChannelDDR4_2400(size="3GiB")
|
||||
|
||||
# Here we setup the processor. This is a special switchable processor in which
|
||||
# a starting core type and a switch core type must be specified. Once a
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
Script to run SPEC CPU2017 benchmarks with gem5.
|
||||
The script expects a benchmark program name and the simulation
|
||||
size. The system is fixed with 2 CPU cores, MESI Two Level system
|
||||
cache and 3 GB DDR4 memory. It uses the x86 board.
|
||||
cache and 3 GiB DDR4 memory. It uses the x86 board.
|
||||
|
||||
This script will count the total number of instructions executed
|
||||
in the ROI. It also tracks how much wallclock and simulated time.
|
||||
@@ -207,18 +207,18 @@ from gem5.components.cachehierarchies.ruby.mesi_two_level_cache_hierarchy import
|
||||
)
|
||||
|
||||
cache_hierarchy = MESITwoLevelCacheHierarchy(
|
||||
l1d_size="32kB",
|
||||
l1d_size="32KiB",
|
||||
l1d_assoc=8,
|
||||
l1i_size="32kB",
|
||||
l1i_size="32KiB",
|
||||
l1i_assoc=8,
|
||||
l2_size="256kB",
|
||||
l2_size="256KiB",
|
||||
l2_assoc=16,
|
||||
num_l2_banks=2,
|
||||
)
|
||||
# Memory: Dual Channel DDR4 2400 DRAM device.
|
||||
# The X86 board only supports 3 GB of main memory.
|
||||
# The X86 board only supports 3 GiB of main memory.
|
||||
|
||||
memory = DualChannelDDR4_2400(size="3GB")
|
||||
memory = DualChannelDDR4_2400(size="3GiB")
|
||||
|
||||
# Here we setup the processor. This is a special switchable processor in which
|
||||
# a starting core type and a switch core type must be specified. Once a
|
||||
|
||||
@@ -67,17 +67,17 @@ from gem5.components.cachehierarchies.ruby.mesi_two_level_cache_hierarchy import
|
||||
|
||||
# Here we setup a MESI Two Level Cache Hierarchy.
|
||||
cache_hierarchy = MESITwoLevelCacheHierarchy(
|
||||
l1d_size="16kB",
|
||||
l1d_size="16KiB",
|
||||
l1d_assoc=8,
|
||||
l1i_size="16kB",
|
||||
l1i_size="16KiB",
|
||||
l1i_assoc=8,
|
||||
l2_size="256kB",
|
||||
l2_size="256KiB",
|
||||
l2_assoc=16,
|
||||
num_l2_banks=1,
|
||||
)
|
||||
|
||||
# Setup the system memory.
|
||||
memory = SingleChannelDDR3_1600(size="3GB")
|
||||
memory = SingleChannelDDR3_1600(size="3GiB")
|
||||
|
||||
# Here we setup the processor. This is a special switchable processor in which
|
||||
# a starting core type and a switch core type must be specified. Once a
|
||||
|
||||
@@ -126,7 +126,7 @@ if __name__ == "__m5_main__":
|
||||
args.ruby = True
|
||||
args.cpu_type = "X86KvmCPU"
|
||||
args.num_cpus = 1
|
||||
args.mem_size = "3GB"
|
||||
args.mem_size = "3GiB"
|
||||
args.dgpu = True
|
||||
args.dgpu_mem_size = "16GB"
|
||||
args.dgpu_start = "0GB"
|
||||
|
||||
@@ -134,7 +134,7 @@ if __name__ == "__m5_main__":
|
||||
args.ruby = True
|
||||
args.cpu_type = "X86KvmCPU"
|
||||
args.num_cpus = 1
|
||||
args.mem_size = "3GB"
|
||||
args.mem_size = "3GiB"
|
||||
args.dgpu = True
|
||||
args.dgpu_mem_size = "16GB"
|
||||
args.dgpu_start = "0GB"
|
||||
|
||||
@@ -124,7 +124,7 @@ if __name__ == "__m5_main__":
|
||||
args.ruby = True
|
||||
args.cpu_type = "X86KvmCPU"
|
||||
args.num_cpus = 1
|
||||
args.mem_size = "3GB"
|
||||
args.mem_size = "3GiB"
|
||||
args.dgpu = True
|
||||
args.dgpu_mem_size = "16GB"
|
||||
args.dgpu_start = "0GB"
|
||||
|
||||
@@ -140,7 +140,7 @@ def runMI200GPUFS(cpu_type):
|
||||
# Defaults for MI200
|
||||
args.ruby = True
|
||||
args.cpu_type = "X86KvmCPU"
|
||||
args.mem_size = "8GB" # CPU host memory
|
||||
args.mem_size = "8GiB" # CPU host memory
|
||||
args.dgpu = True
|
||||
args.dgpu_mem_size = "16GB" # GPU device memory
|
||||
args.dgpu_start = "0GB"
|
||||
|
||||
@@ -152,7 +152,7 @@ def runMI300GPUFS(
|
||||
|
||||
# Defaults for CPU
|
||||
args.cpu_type = "X86KvmCPU"
|
||||
args.mem_size = "8GB"
|
||||
args.mem_size = "8GiB"
|
||||
|
||||
# Defaults for MI300X
|
||||
args.gpu_device = "MI300X"
|
||||
|
||||
@@ -57,8 +57,8 @@ def makeGpuFSSystem(args):
|
||||
]
|
||||
cmdline = " ".join(boot_options)
|
||||
|
||||
if MemorySize(args.mem_size) < MemorySize("2GB"):
|
||||
panic("Need at least 2GB of system memory to load amdgpu module")
|
||||
if MemorySize(args.mem_size) < MemorySize("2GiB"):
|
||||
panic("Need at least 2GiB of system memory to load amdgpu module")
|
||||
|
||||
# Use the common FSConfig to setup a Linux X86 System
|
||||
(TestCPUClass, test_mem_mode) = Simulation.getCPUClass(args.cpu_type)
|
||||
@@ -89,7 +89,7 @@ def makeGpuFSSystem(args):
|
||||
)
|
||||
|
||||
# Setup VGA ROM region
|
||||
system.shadow_rom_ranges = [AddrRange(0xC0000, size=Addr("128kB"))]
|
||||
system.shadow_rom_ranges = [AddrRange(0xC0000, size=Addr("128KiB"))]
|
||||
|
||||
# Create specified number of CPUs. GPUFS really only needs one.
|
||||
system.cpu = [
|
||||
|
||||
@@ -141,7 +141,7 @@ def runVegaGPUFS(cpu_type):
|
||||
args.ruby = True
|
||||
args.cpu_type = cpu_type
|
||||
args.num_cpus = 1
|
||||
args.mem_size = "3GB"
|
||||
args.mem_size = "3GiB"
|
||||
args.dgpu = True
|
||||
args.dgpu_mem_size = "16GB"
|
||||
args.dgpu_start = "0GB"
|
||||
|
||||
@@ -77,7 +77,7 @@ cache_hierarchy = PrivateL1PrivateL2WalkCacheHierarchy(
|
||||
)
|
||||
|
||||
# Setup the system memory.
|
||||
memory = SingleChannelDDR3_1600(size="128MB")
|
||||
memory = SingleChannelDDR3_1600(size="128MiB")
|
||||
# Setup a single core Processor.
|
||||
if args.cpu_type == "atomic":
|
||||
processor = SimpleProcessor(
|
||||
|
||||
@@ -189,7 +189,7 @@ for t, m in zip(testerspec, multiplier):
|
||||
|
||||
# Define a prototype L1 cache that we scale for all successive levels
|
||||
proto_l1 = Cache(
|
||||
size="32kB",
|
||||
size="32KiB",
|
||||
assoc=4,
|
||||
tag_latency=1,
|
||||
data_latency=1,
|
||||
|
||||
@@ -218,7 +218,7 @@ else:
|
||||
|
||||
# Define a prototype L1 cache that we scale for all successive levels
|
||||
proto_l1 = Cache(
|
||||
size="32kB",
|
||||
size="32KiB",
|
||||
assoc=4,
|
||||
tag_latency=1,
|
||||
data_latency=1,
|
||||
@@ -356,7 +356,7 @@ last_subsys = getattr(system, f"l{len(cachespec)}subsys0")
|
||||
last_subsys.xbar.point_of_coherency = True
|
||||
if args.noncoherent_cache:
|
||||
system.llc = NoncoherentCache(
|
||||
size="16MB",
|
||||
size="16MiB",
|
||||
assoc=16,
|
||||
tag_latency=10,
|
||||
data_latency=10,
|
||||
|
||||
@@ -175,7 +175,7 @@ if not (args.num_dmas is None):
|
||||
# level 1: large
|
||||
# Each location corresponds to a 4-byte piece of data
|
||||
#
|
||||
args.mem_size = "1024MB"
|
||||
args.mem_size = "1024MiB"
|
||||
if args.address_range == "small":
|
||||
num_atomic_locs = 10
|
||||
num_regular_locs_per_atomic_loc = 10000
|
||||
|
||||
Reference in New Issue
Block a user