Nikos Nikoleris has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/12908

Change subject: tests: Add a test for the cache write streaming optimizations
......................................................................

tests: Add a test for the cache write streaming optimizations

The purpose of this regression test is to make sure that optimizations
for write streaming access patterns in the classic memory system
(caches) work as expected.

This test instantiates a simple system, with a traffic generator, a L1
cache and a L2 cache and a simple memory. The traffic generator
performs writes which the L1 cache coalesces and turns into whole-line
writes (WriteLineReq). The effect of write coalescing can be seen in
the stats where the number of ReadExReq accesses in the L2 cache
should be really small, as most requests to the L2 should be
InvalidateReq.

Change-Id: Ic50e771d1597bf2ba899c9615c593c37ae47f2e1
---
A tests/configs/write-streaming.py
A tests/quick/se/52.write-streaming/ref/null/none/write-streaming/stats.txt
A tests/quick/se/52.write-streaming/test.py
M tests/testing/tests.py
4 files changed, 435 insertions(+), 0 deletions(-)



diff --git a/tests/configs/write-streaming.py b/tests/configs/write-streaming.py
new file mode 100644
index 0000000..a48dad9
--- /dev/null
+++ b/tests/configs/write-streaming.py
@@ -0,0 +1,94 @@
+# Copyright (c) 2018 ARM Limited
+# All rights reserved.
+#
+# The license below extends only to copyright in the software and shall
+# not be construed as granting a license to any other intellectual
+# property including but not limited to intellectual property relating
+# to a hardware implementation of the functionality of the software
+# licensed hereunder.  You may use the software subject to the license
+# terms below provided that you ensure that this notice is replicated
+# unmodified and in its entirety in all distributions of the software,
+# modified or unmodified, in source code or in binary form.
+#
+# Copyright (c) 2015 Jason Lowe-Power
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met: redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer;
+# redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution;
+# neither the name of the copyright holders nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Authors: Ron Dreslinski
+#          Nikos Nikoleris
+
+import m5
+from m5.objects import *
+m5.util.addToPath('../configs/')
+from common.Caches import *
+
+# system simulated
+system = System(physmem = SimpleMemory(),
+                membus = SystemXBar())
+
+system.tgen = PyTrafficGen()
+
+# Dummy voltage domain for all our clock domains
+system.voltage_domain = VoltageDomain()
+system.clk_domain = SrcClockDomain(clock = '1GHz',
+                                   voltage_domain = system.voltage_domain)
+
+# Create a seperate clock domain for components that should run at
+# CPUs frequency
+system.cpu_clk_domain = SrcClockDomain(clock = '2GHz',
+ voltage_domain = system.voltage_domain)
+
+system.toL2Bus = L2XBar(clk_domain = system.cpu_clk_domain)
+system.l2c = L2Cache(clk_domain = system.cpu_clk_domain, size='64kB', assoc=8)
+system.l2c.cpu_side = system.toL2Bus.master
+
+# connect l2c to membus
+system.l2c.mem_side = system.membus.slave
+
+system.tgen.l1c = L1Cache(size = '32kB', assoc = 4,
+                          write_allocator = WriteAllocator())
+system.tgen.port = system.tgen.l1c.cpu_side
+system.tgen.l1c.mem_side = system.toL2Bus.slave
+
+system.system_port = system.membus.slave
+
+# connect memory to membus
+system.physmem.port = system.membus.master
+
+root = Root(full_system = False, system = system)
+root.system.mem_mode = 'timing'
+
+m5.instantiate()
+
+def trace():
+    yield system.tgen.createLinear(
+        10000000000, 0, 16777216, 8, 500, 1000, 0, 0)
+    yield system.tgen.createExit(0)
+
+system.tgen.start(trace())
+
+exit_event = m5.simulate()
+print('Exiting @ tick', m5.curTick(), 'because', exit_event.getCause())
+sys.exit(0)
diff --git a/tests/quick/se/52.write-streaming/ref/null/none/write-streaming/stats.txt b/tests/quick/se/52.write-streaming/ref/null/none/write-streaming/stats.txt
new file mode 100644
index 0000000..8fc5433
--- /dev/null
+++ b/tests/quick/se/52.write-streaming/ref/null/none/write-streaming/stats.txt
@@ -0,0 +1,288 @@
+
+---------- Begin Simulation Statistics ----------
+sim_seconds                                  0.010000
+sim_ticks                                 10000000000
+final_tick                                10000000000
+sim_freq                                 1000000000000
+host_tick_rate                             2363704259
+host_mem_usage                                 227656
+host_seconds                                     4.23
+system.voltage_domain.voltage                       1
+system.clk_domain.clock                          1000
+system.physmem.pwrStateResidencyTicks::UNDEFINED  10000000000
+system.physmem.bytes_read::tgen                   448
+system.physmem.bytes_read::total                  448
+system.physmem.bytes_written::writebacks     35760320
+system.physmem.bytes_written::total          35760320
+system.physmem.num_reads::tgen                      7
+system.physmem.num_reads::total                     7
+system.physmem.num_writes::writebacks          558755
+system.physmem.num_writes::total               558755
+system.physmem.bw_read::tgen                    44800
+system.physmem.bw_read::total                   44800
+system.physmem.bw_write::writebacks        3576032000
+system.physmem.bw_write::total             3576032000
+system.physmem.bw_total::writebacks        3576032000
+system.physmem.bw_total::tgen                   44800
+system.physmem.bw_total::total             3576076800
+system.pwrStateResidencyTicks::UNDEFINED  10000000000
+system.cpu_clk_domain.clock                       500
+system.l2c.tags.pwrStateResidencyTicks::UNDEFINED  10000000000
+system.l2c.tags.tagsinuse                 1023.043428
+system.l2c.tags.total_refs                     559788
+system.l2c.tags.sampled_refs                   559788
+system.l2c.tags.avg_refs                            1
+system.l2c.tags.warmup_cycle                    54000
+system.l2c.tags.occ_blocks::writebacks    1023.030647
+system.l2c.tags.occ_blocks::tgen             0.012781
+system.l2c.tags.occ_percent::writebacks      0.999053
+system.l2c.tags.occ_percent::tgen            0.000012
+system.l2c.tags.occ_percent::total           0.999066
+system.l2c.tags.occ_task_id_blocks::1024         1024
+system.l2c.tags.age_task_id_blocks_1024::0          556
+system.l2c.tags.age_task_id_blocks_1024::1          468
+system.l2c.tags.occ_task_id_percent::1024            1
+system.l2c.tags.tag_accesses                  9516524
+system.l2c.tags.data_accesses                 9516524
+system.l2c.pwrStateResidencyTicks::UNDEFINED  10000000000
+system.l2c.WritebackDirty_hits::writebacks       559781
+system.l2c.WritebackDirty_hits::total          559781
+system.l2c.ReadExReq_misses::tgen                   7
+system.l2c.ReadExReq_misses::total                  7
+system.l2c.InvalidateReq_misses::tgen          559804
+system.l2c.InvalidateReq_misses::total         559804
+system.l2c.demand_misses::tgen                      7
+system.l2c.demand_misses::total                     7
+system.l2c.overall_misses::tgen                     7
+system.l2c.overall_misses::total                    7
+system.l2c.ReadExReq_miss_latency::tgen        436500
+system.l2c.ReadExReq_miss_latency::total       436500
+system.l2c.demand_miss_latency::tgen           436500
+system.l2c.demand_miss_latency::total          436500
+system.l2c.overall_miss_latency::tgen          436500
+system.l2c.overall_miss_latency::total         436500
+system.l2c.WritebackDirty_accesses::writebacks       559781
+system.l2c.WritebackDirty_accesses::total       559781
+system.l2c.ReadExReq_accesses::tgen                 7
+system.l2c.ReadExReq_accesses::total                7
+system.l2c.InvalidateReq_accesses::tgen        559804
+system.l2c.InvalidateReq_accesses::total       559804
+system.l2c.demand_accesses::tgen                    7
+system.l2c.demand_accesses::total                   7
+system.l2c.overall_accesses::tgen                   7
+system.l2c.overall_accesses::total                  7
+system.l2c.ReadExReq_miss_rate::tgen                1
+system.l2c.ReadExReq_miss_rate::total               1
+system.l2c.InvalidateReq_miss_rate::tgen            1
+system.l2c.InvalidateReq_miss_rate::total            1
+system.l2c.demand_miss_rate::tgen                   1
+system.l2c.demand_miss_rate::total                  1
+system.l2c.overall_miss_rate::tgen                  1
+system.l2c.overall_miss_rate::total                 1
+system.l2c.ReadExReq_avg_miss_latency::tgen 62357.142857
+system.l2c.ReadExReq_avg_miss_latency::total 62357.142857
+system.l2c.demand_avg_miss_latency::tgen 62357.142857
+system.l2c.demand_avg_miss_latency::total 62357.142857
+system.l2c.overall_avg_miss_latency::tgen 62357.142857
+system.l2c.overall_avg_miss_latency::total 62357.142857
+system.l2c.blocked_cycles::no_mshrs                 0
+system.l2c.blocked_cycles::no_targets               0
+system.l2c.blocked::no_mshrs                        0
+system.l2c.blocked::no_targets                      0
+system.l2c.avg_blocked_cycles::no_mshrs           nan
+system.l2c.avg_blocked_cycles::no_targets          nan
+system.l2c.writebacks::writebacks              558757
+system.l2c.writebacks::total                   558757
+system.l2c.ReadExReq_mshr_misses::tgen              7
+system.l2c.ReadExReq_mshr_misses::total             7
+system.l2c.InvalidateReq_mshr_misses::tgen       559804
+system.l2c.InvalidateReq_mshr_misses::total       559804
+system.l2c.demand_mshr_misses::tgen                 7
+system.l2c.demand_mshr_misses::total                7
+system.l2c.overall_mshr_misses::tgen                7
+system.l2c.overall_mshr_misses::total               7
+system.l2c.ReadExReq_mshr_miss_latency::tgen       366500
+system.l2c.ReadExReq_mshr_miss_latency::total       366500
+system.l2c.InvalidateReq_mshr_miss_latency::tgen  12042394756
+system.l2c.InvalidateReq_mshr_miss_latency::total  12042394756
+system.l2c.demand_mshr_miss_latency::tgen       366500
+system.l2c.demand_mshr_miss_latency::total       366500
+system.l2c.overall_mshr_miss_latency::tgen       366500
+system.l2c.overall_mshr_miss_latency::total       366500
+system.l2c.ReadExReq_mshr_miss_rate::tgen            1
+system.l2c.ReadExReq_mshr_miss_rate::total            1
+system.l2c.InvalidateReq_mshr_miss_rate::tgen            1
+system.l2c.InvalidateReq_mshr_miss_rate::total            1
+system.l2c.demand_mshr_miss_rate::tgen              1
+system.l2c.demand_mshr_miss_rate::total             1
+system.l2c.overall_mshr_miss_rate::tgen             1
+system.l2c.overall_mshr_miss_rate::total            1
+system.l2c.ReadExReq_avg_mshr_miss_latency::tgen 52357.142857
+system.l2c.ReadExReq_avg_mshr_miss_latency::total 52357.142857
+system.l2c.InvalidateReq_avg_mshr_miss_latency::tgen 21511.805482
+system.l2c.InvalidateReq_avg_mshr_miss_latency::total 21511.805482
+system.l2c.demand_avg_mshr_miss_latency::tgen 52357.142857
+system.l2c.demand_avg_mshr_miss_latency::total 52357.142857
+system.l2c.overall_avg_mshr_miss_latency::tgen 52357.142857
+system.l2c.overall_avg_mshr_miss_latency::total 52357.142857
+system.l2c.replacements                        558764
+system.membus.snoop_filter.tot_requests       1118568
+system.membus.snoop_filter.hit_single_requests       558755
+system.membus.snoop_filter.hit_multi_requests            0
+system.membus.snoop_filter.tot_snoops               0
+system.membus.snoop_filter.hit_single_snoops            0
+system.membus.snoop_filter.hit_multi_snoops            0
+system.membus.pwrStateResidencyTicks::UNDEFINED  10000000000
+system.membus.trans_dist::WritebackDirty       558755
+system.membus.trans_dist::ReadExReq                 7
+system.membus.trans_dist::ReadExResp                7
+system.membus.trans_dist::InvalidateReq        559804
+system.membus.pkt_count_system.l2c.mem_side::system.physmem.port 1118573
+system.membus.pkt_count::total                1118573
+system.membus.pkt_size_system.l2c.mem_side::system.physmem.port 35760768
+system.membus.pkt_size::total                35760768
+system.membus.snoops                                0
+system.membus.snoopTraffic                          0
+system.membus.snoop_fanout::samples            559813
+system.membus.snoop_fanout::mean                    0
+system.membus.snoop_fanout::stdev                   0
+system.membus.snoop_fanout::underflows              0      0.00%      0.00%
+system.membus.snoop_fanout::0                  559813    100.00%    100.00%
+system.membus.snoop_fanout::1                       0      0.00%    100.00%
+system.membus.snoop_fanout::overflows               0      0.00%    100.00%
+system.membus.snoop_fanout::min_value               0
+system.membus.snoop_fanout::max_value               0
+system.membus.snoop_fanout::total              559813
+system.membus.reqLayer0.occupancy          3483436708
+system.membus.reqLayer0.utilization              34.8
+system.membus.respLayer0.occupancy              35000
+system.membus.respLayer0.utilization              0.0
+system.tgen.pwrStateResidencyTicks::UNDEFINED  10000000000
+system.tgen.numSuppressed                           0
+system.tgen.numPackets                        4478706
+system.tgen.numRetries                         247434
+system.tgen.retryTicks                     6826830170
+system.tgen.l1c.tags.pwrStateResidencyTicks::UNDEFINED  10000000000
+system.tgen.l1c.tags.tagsinuse              14.948471
+system.tgen.l1c.tags.total_refs                   246
+system.tgen.l1c.tags.sampled_refs                  29
+system.tgen.l1c.tags.avg_refs                8.482759
+system.tgen.l1c.tags.warmup_cycle               64500
+system.tgen.l1c.tags.occ_blocks::tgen       14.948471
+system.tgen.l1c.tags.occ_percent::tgen       0.029196
+system.tgen.l1c.tags.occ_percent::total      0.029196
+system.tgen.l1c.tags.occ_task_id_blocks::1024           29
+system.tgen.l1c.tags.age_task_id_blocks_1024::2           10
+system.tgen.l1c.tags.age_task_id_blocks_1024::3           19
+system.tgen.l1c.tags.occ_task_id_percent::1024     0.056641
+system.tgen.l1c.tags.tag_accesses            17914853
+system.tgen.l1c.tags.data_accesses           17914853
+system.tgen.l1c.pwrStateResidencyTicks::UNDEFINED  10000000000
+system.tgen.l1c.WriteReq_hits::tgen               217
+system.tgen.l1c.WriteReq_hits::total              217
+system.tgen.l1c.demand_hits::tgen                 217
+system.tgen.l1c.demand_hits::total                217
+system.tgen.l1c.overall_hits::tgen                217
+system.tgen.l1c.overall_hits::total               217
+system.tgen.l1c.WriteReq_misses::tgen         4478489
+system.tgen.l1c.WriteReq_misses::total        4478489
+system.tgen.l1c.demand_misses::tgen           4478489
+system.tgen.l1c.demand_misses::total          4478489
+system.tgen.l1c.overall_misses::tgen          4478489
+system.tgen.l1c.overall_misses::total         4478489
+system.tgen.l1c.WriteReq_miss_latency::tgen 236926837807
+system.tgen.l1c.WriteReq_miss_latency::total 236926837807
+system.tgen.l1c.demand_miss_latency::tgen 236926837807
+system.tgen.l1c.demand_miss_latency::total 236926837807
+system.tgen.l1c.overall_miss_latency::tgen 236926837807
+system.tgen.l1c.overall_miss_latency::total 236926837807
+system.tgen.l1c.WriteReq_accesses::tgen       4478706
+system.tgen.l1c.WriteReq_accesses::total      4478706
+system.tgen.l1c.demand_accesses::tgen         4478706
+system.tgen.l1c.demand_accesses::total        4478706
+system.tgen.l1c.overall_accesses::tgen        4478706
+system.tgen.l1c.overall_accesses::total       4478706
+system.tgen.l1c.WriteReq_miss_rate::tgen     0.999952
+system.tgen.l1c.WriteReq_miss_rate::total     0.999952
+system.tgen.l1c.demand_miss_rate::tgen       0.999952
+system.tgen.l1c.demand_miss_rate::total      0.999952
+system.tgen.l1c.overall_miss_rate::tgen      0.999952
+system.tgen.l1c.overall_miss_rate::total     0.999952
+system.tgen.l1c.WriteReq_avg_miss_latency::tgen 52903.297922
+system.tgen.l1c.WriteReq_avg_miss_latency::total 52903.297922
+system.tgen.l1c.demand_avg_miss_latency::tgen 52903.297922
+system.tgen.l1c.demand_avg_miss_latency::total 52903.297922
+system.tgen.l1c.overall_avg_miss_latency::tgen 52903.297922
+system.tgen.l1c.overall_avg_miss_latency::total 52903.297922
+system.tgen.l1c.blocked_cycles::no_mshrs      7005431
+system.tgen.l1c.blocked_cycles::no_targets            0
+system.tgen.l1c.blocked::no_mshrs              247438
+system.tgen.l1c.blocked::no_targets                 0
+system.tgen.l1c.avg_blocked_cycles::no_mshrs    28.311864
+system.tgen.l1c.avg_blocked_cycles::no_targets          nan
+system.tgen.l1c.writebacks::writebacks         559782
+system.tgen.l1c.writebacks::total              559782
+system.tgen.l1c.WriteReq_mshr_hits::tgen      3918677
+system.tgen.l1c.WriteReq_mshr_hits::total      3918677
+system.tgen.l1c.demand_mshr_hits::tgen        3918677
+system.tgen.l1c.demand_mshr_hits::total       3918677
+system.tgen.l1c.overall_mshr_hits::tgen       3918677
+system.tgen.l1c.overall_mshr_hits::total      3918677
+system.tgen.l1c.WriteReq_mshr_misses::tgen       559812
+system.tgen.l1c.WriteReq_mshr_misses::total       559812
+system.tgen.l1c.demand_mshr_misses::tgen       559812
+system.tgen.l1c.demand_mshr_misses::total       559812
+system.tgen.l1c.overall_mshr_misses::tgen       559812
+system.tgen.l1c.overall_mshr_misses::total       559812
+system.tgen.l1c.WriteReq_mshr_miss_latency::tgen  35526462125
+system.tgen.l1c.WriteReq_mshr_miss_latency::total  35526462125
+system.tgen.l1c.demand_mshr_miss_latency::tgen  35526462125
+system.tgen.l1c.demand_mshr_miss_latency::total  35526462125
+system.tgen.l1c.overall_mshr_miss_latency::tgen  35526462125
+system.tgen.l1c.overall_mshr_miss_latency::total  35526462125
+system.tgen.l1c.WriteReq_mshr_miss_rate::tgen     0.124994
+system.tgen.l1c.WriteReq_mshr_miss_rate::total     0.124994
+system.tgen.l1c.demand_mshr_miss_rate::tgen     0.124994
+system.tgen.l1c.demand_mshr_miss_rate::total     0.124994
+system.tgen.l1c.overall_mshr_miss_rate::tgen     0.124994
+system.tgen.l1c.overall_mshr_miss_rate::total     0.124994
+system.tgen.l1c.WriteReq_avg_mshr_miss_latency::tgen 63461.415841
+system.tgen.l1c.WriteReq_avg_mshr_miss_latency::total 63461.415841
+system.tgen.l1c.demand_avg_mshr_miss_latency::tgen 63461.415841
+system.tgen.l1c.demand_avg_mshr_miss_latency::total 63461.415841
+system.tgen.l1c.overall_avg_mshr_miss_latency::tgen 63461.415841
+system.tgen.l1c.overall_avg_mshr_miss_latency::total 63461.415841
+system.tgen.l1c.replacements                        0
+system.toL2Bus.snoop_filter.tot_requests      1119592
+system.toL2Bus.snoop_filter.hit_single_requests       559781
+system.toL2Bus.snoop_filter.hit_multi_requests            0
+system.toL2Bus.snoop_filter.tot_snoops              7
+system.toL2Bus.snoop_filter.hit_single_snoops            7
+system.toL2Bus.snoop_filter.hit_multi_snoops            0
+system.toL2Bus.pwrStateResidencyTicks::UNDEFINED  10000000000
+system.toL2Bus.trans_dist::WritebackDirty      1118538
+system.toL2Bus.trans_dist::CleanEvict               7
+system.toL2Bus.trans_dist::ReadExReq                7
+system.toL2Bus.trans_dist::ReadExResp               7
+system.toL2Bus.trans_dist::InvalidateReq       559804
+system.toL2Bus.trans_dist::InvalidateResp       559804
+system.toL2Bus.pkt_count_system.tgen.l1c.mem_side::system.l2c.cpu_side 1679403 +system.toL2Bus.pkt_size_system.tgen.l1c.mem_side::system.l2c.cpu_side 35826432
+system.toL2Bus.snoops                          558764
+system.toL2Bus.snoopTraffic                  35760448
+system.toL2Bus.snoop_fanout::samples          1118575
+system.toL2Bus.snoop_fanout::mean            0.000006
+system.toL2Bus.snoop_fanout::stdev           0.002502
+system.toL2Bus.snoop_fanout::underflows             0      0.00%      0.00%
+system.toL2Bus.snoop_fanout::0                1118568    100.00%    100.00%
+system.toL2Bus.snoop_fanout::1                      7      0.00%    100.00%
+system.toL2Bus.snoop_fanout::overflows              0      0.00%    100.00%
+system.toL2Bus.snoop_fanout::min_value              0
+system.toL2Bus.snoop_fanout::max_value              1
+system.toL2Bus.snoop_fanout::total            1118575
+system.toL2Bus.reqLayer0.occupancy         1141338390
+system.toL2Bus.reqLayer0.utilization             11.4
+system.toL2Bus.respLayer0.occupancy         279912500
+system.toL2Bus.respLayer0.utilization             2.8
+
+---------- End Simulation Statistics   ----------
diff --git a/tests/quick/se/52.write-streaming/test.py b/tests/quick/se/52.write-streaming/test.py
new file mode 100644
index 0000000..b45ec96
--- /dev/null
+++ b/tests/quick/se/52.write-streaming/test.py
@@ -0,0 +1,52 @@
+# Copyright (c) 2018 ARM Limited
+# All rights reserved.
+#
+# The license below extends only to copyright in the software and shall
+# not be construed as granting a license to any other intellectual
+# property including but not limited to intellectual property relating
+# to a hardware implementation of the functionality of the software
+# licensed hereunder.  You may use the software subject to the license
+# terms below provided that you ensure that this notice is replicated
+# unmodified and in its entirety in all distributions of the software,
+# modified or unmodified, in source code or in binary form.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met: redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer;
+# redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution;
+# neither the name of the copyright holders nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Authors: Nikos Nikoleris
+
+#
+# The purpose of this regression test is to make sure that
+# optimizations for write streaming access patterns in the classic
+# memory system (caches) work as expected.
+#
+# This test instantiates a simple system, with a traffic generator, a
+# L1 cache and a L2 cache and a simple memory. The traffic generator
+# performs writes which the L1 cache coalesces and turns into
+# whole-line writes (WriteLineReq). The effect of write coalescing can
+# be seen in the stats where the number of ReadExReq accesses in the
+# L2 cache should be really small, as most requests to the L2 should
+# be InvalidateReq.
+#
+
+maxtick = 10000000000
diff --git a/tests/testing/tests.py b/tests/testing/tests.py
index 123d3b1..3360f96 100755
--- a/tests/testing/tests.py
+++ b/tests/testing/tests.py
@@ -158,6 +158,7 @@
     'tgen-simple-mem',
     'tgen-dram-ctrl',
     'dram-lowp',
+    'write-streaming',

     'learning-gem5-p1-simple',
     'learning-gem5-p1-two-level',

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/12908
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: Ic50e771d1597bf2ba899c9615c593c37ae47f2e1
Gerrit-Change-Number: 12908
Gerrit-PatchSet: 1
Gerrit-Owner: Nikos Nikoleris <[email protected]>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to