mem: More descriptive DRAM config names
authorAndreas Hansson <andreas.hansson@arm.com>
Thu, 30 May 2013 16:54:14 +0000 (12:54 -0400)
committerAndreas Hansson <andreas.hansson@arm.com>
Thu, 30 May 2013 16:54:14 +0000 (12:54 -0400)
This patch changes the class names of the variuos DRAM configurations
to better reflect what memory they are based on. The speed and
interface width is now part of the name, and also the alias that is
used to select them on the command line.

Some minor changes are done to the actual parameters, to better
reflect the named configurations. As a result of these changes the
regressions change slightly and the stats will be bumped in a separate
patch.

13 files changed:
configs/common/MemConfig.py
src/mem/SimpleDRAM.py
tests/configs/alpha_generic.py
tests/configs/arm_generic.py
tests/configs/inorder-timing.py
tests/configs/o3-timing-checker.py
tests/configs/o3-timing-mp.py
tests/configs/o3-timing.py
tests/configs/pc-simple-timing-ruby.py
tests/configs/t1000-simple-atomic.py
tests/configs/tgen-simple-dram.py
tests/configs/twosys-tsunami-simple-atomic.py
tests/configs/x86_generic.py

index 0f36358cfb56ae78b0d6e9962cf425a205c19c95..6630be8ec34347c52c2a825ef3372fb05c63fafd 100644 (file)
@@ -50,10 +50,10 @@ _mem_classes = {}
 # first available memory controller model in the tuple will be used.
 _mem_aliases_all = [
     ("simple_mem", "SimpleMemory"),
-    ("ddr3-1600", "SimpleDDR3"),
-    ("lpddr2_s4-1066", "SimpleLPDDR2_S4"),
-    ("lpddr3-1600", "SimpleLPDDR3"),
-    ("wio-200", "SimpleWideIO"),
+    ("ddr3_1600_x64", "DDR3_1600_x64"),
+    ("lpddr2_s4_1066_x32", "LPDDR2_S4_1066_x32"),
+    ("lpddr3_1600_x32", "LPDDR3_1600_x32"),
+    ("wio_200_x128", "WideIO_200_x128"),
     ]
 
 # Filtered list of aliases. Only aliases for existing memory
index 75c5b077b1c0b1062f6a45879ea16a128375e1c1..64e9f272b2fda6542d982cd401cce59bf631bb92 100644 (file)
@@ -172,14 +172,13 @@ class SimpleDRAM(AbstractMemory):
 
     # burst length for an access derived from peerBlockSize
 
-# High-level model of a single DDR3 x64 interface (one command and
-# address bus), with default timings based on a DDR3-1600 4 Gbit part,
-# which would amount to 4 Gbyte of memory in 8x8 or 8 GByte in 16x4
-# configuration.
-class SimpleDDR3(SimpleDRAM):
-    # Assuming 64 byte cache lines, use a 2kbyte page size, this
-    # depends on the memory density
-    lines_per_rowbuffer = 32
+# A single DDR3 x64 interface (one command and address bus), with
+# default timings based on DDR3-1600 4 Gbit parts in an 8x8
+# configuration, which would amount to 4 Gbyte of memory.
+class DDR3_1600_x64(SimpleDRAM):
+    # Assuming 64 byte cache lines, and a 1kbyte page size per module
+    # (this depends on the memory density)
+    lines_per_rowbuffer = 128
 
     # Use two ranks
     ranks_per_channel = 2
@@ -192,11 +191,11 @@ class SimpleDDR3(SimpleDRAM):
     tCL = '13.75ns'
     tRP = '13.75ns'
 
-    # Assuming 64 byte cache lines, across an x64 (8x8 or 16x4)
+    # Assuming 64 byte cache lines, across an x64
     # interface, translates to BL8, 4 clocks @ 800 MHz
     tBURST = '5ns'
 
-    # DDR3, 4 Gb has a tRFC of 240 CK and tCK = 1.25 ns
+    # DDR3, 4 Gbit has a tRFC of 240 CK and tCK = 1.25 ns
     tRFC = '300ns'
 
     # DDR3, <=85C, half for >85C
@@ -210,10 +209,10 @@ class SimpleDDR3(SimpleDRAM):
     activation_limit = 4
 
 
-# High-level model of a single LPDDR2-S4 x32 interface (one
-# command/address bus), with default timings based on a LPDDR2-1066
-# 4 Gbit part
-class SimpleLPDDR2_S4(SimpleDRAM):
+# A single LPDDR2-S4 x32 interface (one command/address bus), with
+# default timings based on a LPDDR2-1066 4 Gbit part in a 1x32
+# configuration.
+class LPDDR2_S4_1066_x32(SimpleDRAM):
     # Assuming 64 byte cache lines, use a 1kbyte page size, this
     # depends on the memory density
     lines_per_rowbuffer = 16
@@ -230,8 +229,8 @@ class SimpleLPDDR2_S4(SimpleDRAM):
     # 8 CK read latency, 4 CK write latency @ 533 MHz, 1.876 ns cycle time
     tCL = '15ns'
 
-    # Pre-charge one bank 15 ns and all banks 18 ns
-    tRP = '18ns'
+    # Pre-charge one bank 15 ns (all banks 18 ns)
+    tRP = '15ns'
 
     # Assuming 64 byte cache lines, across a x32 DDR interface
     # translates to two BL8, 8 clocks @ 533 MHz. Note that this is a
@@ -249,10 +248,9 @@ class SimpleLPDDR2_S4(SimpleDRAM):
     tXAW = '50ns'
     activation_limit = 4
 
-# High-level model of a single WideIO x128 interface (one command and
-# address bus), with default timings based on an estimated WIO-200 8
-# Gbit part.
-class SimpleWideIO(SimpleDRAM):
+# A single WideIO x128 interface (one command and address bus), with
+# default timings based on an estimated WIO-200 8 Gbit part.
+class WideIO_200_x128(SimpleDRAM):
     # Assuming 64 byte cache lines, use a 4kbyte page size, this
     # depends on the memory density
     lines_per_rowbuffer = 64
@@ -285,12 +283,12 @@ class SimpleWideIO(SimpleDRAM):
     tXAW = '50ns'
     activation_limit = 2
 
-# High-level model of a single LPDDR3 x32 interface (one
-# command/address bus), with default timings based on a LPDDR3-1600 4
-# Gbit part
-class SimpleLPDDR3(SimpleDRAM):
-    # 4 Gb and 8 Gb devices use a 1 kByte page size, so ssuming 64 byte
-    # cache lines, that is 16 lines
+# A single LPDDR3 x32 interface (one command/address bus), with
+# default timings based on a LPDDR3-1600 4 Gbit part in a 1x32
+# configuration
+class LPDDR3_1600_x32(SimpleDRAM):
+    # 4 Gbit and 8 Gbit devices use a 1 kByte page size, so ssuming 64
+    # byte cache lines, that is 16 lines
     lines_per_rowbuffer = 16
 
     # Use a single rank
@@ -305,8 +303,8 @@ class SimpleLPDDR3(SimpleDRAM):
     # 12 CK read latency, 6 CK write latency @ 800 MHz, 1.25 ns cycle time
     tCL = '15ns'
 
-    # Pre-charge one bank 15 ns and all banks 18 ns
-    tRP = '18ns'
+    # Pre-charge one bank 15 ns (all banks 18 ns)
+    tRP = '15ns'
 
     # Assuming 64 byte cache lines, across a x32 DDR interface
     # translates to two bursts of BL8, 8 clocks @ 800 MHz
index 5060eae39d8a746226ef43c92a8042a623dfe7b3..f7a4166bed53c3fc683e23d878a91f80cd32f2f3 100644 (file)
@@ -59,7 +59,7 @@ class LinuxAlphaSystemBuilder(object):
         pass
 
     def create_system(self):
-        system = FSConfig.makeLinuxAlphaSystem(self.mem_mode, SimpleDDR3)
+        system = FSConfig.makeLinuxAlphaSystem(self.mem_mode, DDR3_1600_x64)
         self.init_system(system)
         return system
 
index e6c56041bcde9f6127e787607ecec52bca5a3840..0cf170a9b2d3dde94e0762a7b4e8cd046159e84d 100644 (file)
@@ -61,7 +61,7 @@ class LinuxArmSystemBuilder(object):
     def create_system(self):
         system = FSConfig.makeArmSystem(self.mem_mode,
                                         self.machine_type,
-                                        SimpleDDR3,
+                                        DDR3_1600_x64,
                                         None, False)
 
         # We typically want the simulator to panic if the kernel
index 77c4f3d18be0845cc4af69e1329469eb76c193eb..b19014328cf3512b0aeef3ce8f89bd3aa156ca85 100644 (file)
@@ -39,7 +39,7 @@ cpu.addTwoLevelCacheHierarchy(L1Cache(size = '128kB'),
 cpu.clock = '2GHz'
 
 system = System(cpu = cpu,
-                physmem = SimpleDDR3(),
+                physmem = DDR3_1600_x64(),
                 membus = CoherentBus(),
                 mem_mode = "timing")
 system.system_port = system.membus.slave
index cd15cf66bf614c0fd4e95a8fd4728451187cca22..84fcb0f83aac032b891c54e65e8f1e38816b34cc 100644 (file)
@@ -52,7 +52,7 @@ cpu.addTwoLevelCacheHierarchy(L1Cache(size = '128kB'),
 cpu.clock = '2GHz'
 
 system = System(cpu = cpu,
-                physmem = SimpleDDR3(),
+                physmem = DDR3_1600_x64(),
                 membus = CoherentBus(),
                 mem_mode = "timing")
 system.system_port = system.membus.slave
index 59f91a3920ba03794369eea7a93b36e7f0331dff..b7401f6293300f2ef2110e59b5bafd6136ff4887 100644 (file)
@@ -36,7 +36,7 @@ cpus = [ DerivO3CPU(cpu_id=i) for i in xrange(nb_cores) ]
 
 # system simulated
 system = System(cpu = cpus,
-                physmem = SimpleDDR3(),
+                physmem = DDR3_1600_x64(),
                 membus = CoherentBus(),
                 mem_mode = "timing")
 
index 8c3c9abe7bf7d4b40a9103452a4519ebd8a8950e..a370beef468efc23b8174740321be85ff074d2db 100644 (file)
@@ -41,7 +41,7 @@ cpu.addTwoLevelCacheHierarchy(L1Cache(size = '128kB'),
 cpu.clock = '2GHz'
 
 system = System(cpu = cpu,
-                physmem = SimpleDDR3(),
+                physmem = DDR3_1600_x64(),
                 membus = CoherentBus(),
                 mem_mode = "timing")
 system.system_port = system.membus.slave
index 6413133c25ec19d49717cdfcf5df5640979590e3..f17083fe43b0bb3695411338d69f3e448812227b 100644 (file)
@@ -55,7 +55,7 @@ options.num_cpus = 2
 
 #the system
 mdesc = SysConfig(disk = 'linux-x86.img')
-system = FSConfig.makeLinuxX86System('timing', SimpleDDR3, options.num_cpus,
+system = FSConfig.makeLinuxX86System('timing', DDR3_1600_x64, options.num_cpus,
                                      mdesc=mdesc, Ruby=True)
 system.kernel = FSConfig.binary('x86_64-vmlinux-2.6.22.9.smp')
 system.cpu = [TimingSimpleCPU(cpu_id=i) for i in xrange(options.num_cpus)]
index 3ba1afecdee32748cf0e90368e52e25bdbc3b7cd..7f04751b86d09e090bf34228d88c38e3fd62c680 100644 (file)
@@ -32,7 +32,7 @@ m5.util.addToPath('../configs/common')
 import FSConfig
 
 cpu = AtomicSimpleCPU(cpu_id=0)
-system = FSConfig.makeSparcSystem('atomic', SimpleDDR3)
+system = FSConfig.makeSparcSystem('atomic', SimpleMemory)
 system.cpu = cpu
 # create the interrupt controller
 cpu.createInterruptController()
index 19eb1593388433b2e8273550c808ca007feaf3b5..407852682658c02cae3c051636d5a1e47be3f5cf 100644 (file)
@@ -48,7 +48,7 @@ require_sim_object("CommMonitor")
 cpu = TrafficGen(config_file = "tests/quick/se/70.tgen/tgen-simple-dram.cfg")
 
 # system simulated
-system = System(cpu = cpu, physmem = SimpleDDR3(),
+system = System(cpu = cpu, physmem = DDR3_1600_x64(),
                 membus = NoncoherentBus(clock="1GHz", width = 16))
 
 # add a communication monitor
index 89d497008c2ae338541fde6f6f057996956131ea..484236fae724591ac2e76d3c95539767368c1585 100644 (file)
@@ -32,7 +32,7 @@ m5.util.addToPath('../configs/common')
 from FSConfig import *
 from Benchmarks import *
 
-test_sys = makeLinuxAlphaSystem('atomic', SimpleDDR3,
+test_sys = makeLinuxAlphaSystem('atomic', SimpleMemory,
                                  SysConfig('netperf-stream-client.rcS'))
 test_sys.cpu = AtomicSimpleCPU(cpu_id=0)
 # create the interrupt controller
@@ -46,7 +46,7 @@ test_sys.iobridge = Bridge(delay='50ns', ranges = test_sys.mem_ranges)
 test_sys.iobridge.slave = test_sys.iobus.master
 test_sys.iobridge.master = test_sys.membus.slave
 
-drive_sys = makeLinuxAlphaSystem('atomic', SimpleDDR3,
+drive_sys = makeLinuxAlphaSystem('atomic', SimpleMemory,
                                  SysConfig('netperf-server.rcS'))
 drive_sys.cpu = AtomicSimpleCPU(cpu_id=0)
 # create the interrupt controller
index 9a499cc60fb00a4304f4e12ea8683bf880aca3c8..be28ba687f4cf28c7648e6b5566d1f53003d18ae 100644 (file)
@@ -58,7 +58,7 @@ class LinuxX86SystemBuilder(object):
     def create_system(self):
         mdesc = SysConfig(disk = 'linux-x86.img')
         system = FSConfig.makeLinuxX86System(self.mem_mode,
-                                             SimpleDDR3,
+                                             DDR3_1600_x64,
                                              numCPUs=self.num_cpus,
                                              mdesc=mdesc)
         system.kernel = FSConfig.binary('x86_64-vmlinux-2.6.22.9')