configs: add option to set the timeouts for the TCPs and SQCs
authorJoe Gross <joseph.gross@amd.com>
Fri, 27 Apr 2018 23:50:44 +0000 (19:50 -0400)
committerAnthony Gutierrez <anthony.gutierrez@amd.com>
Thu, 30 Apr 2020 15:54:38 +0000 (15:54 +0000)
Change-Id: Icff2bd0237ddcc0d21db17208df8e53ff6f43e86
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28129
Reviewed-by: Matt Sinclair <mattdsinclair@gmail.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
configs/ruby/GPU_RfO.py
configs/ruby/GPU_VIPER.py
configs/ruby/GPU_VIPER_Baseline.py
configs/ruby/GPU_VIPER_Region.py

index cf2fdbd82720a2bf87c4221dd286b572cc23b9a1..26bea0c8fd9ffd16693e7036217e47c0102bd7ba 100644 (file)
@@ -168,6 +168,11 @@ class TCPCntrl(TCP_Controller, CntrlBase):
         self.coalescer.max_outstanding_requests = options.simds_per_cu * \
                                                   options.wfs_per_simd * \
                                                   options.wf_size
+        if options.tcp_deadlock_threshold:
+          self.coalescer.deadlock_threshold = \
+            options.tcp_deadlock_threshold
+        self.coalescer.max_coalesces_per_cycle = \
+            options.max_coalesces_per_cycle
 
         self.sequencer = RubySequencer()
         self.sequencer.version = self.seqCount()
@@ -240,6 +245,10 @@ class SQCCntrl(SQC_Controller, CntrlBase):
         self.sequencer.support_data_reqs = False
         self.sequencer.is_cpu_sequencer = False
 
+        if options.sqc_deadlock_threshold:
+          self.sequencer.deadlock_threshold = \
+            options.sqc_deadlock_threshold
+
         self.ruby_system = ruby_system
 
         if options.recycle_latency:
@@ -416,6 +425,8 @@ def define_options(parser):
                       help="number of TCC directories and banks in the GPU")
     parser.add_option("--TCP_latency", type="int", default=4,
                       help="TCP latency")
+    parser.add_option("--tcp-deadlock-threshold", type='int',
+                      help="Set the TCP deadlock threshold to some value")
     parser.add_option("--TCC_latency", type="int", default=16,
                       help="TCC latency")
     parser.add_option("--tcc-size", type='string', default='256kB',
@@ -424,6 +435,10 @@ def define_options(parser):
                       help="tcp size")
     parser.add_option("--tcc-dir-factor", type='int', default=4,
                       help="TCCdir size = factor *(TCPs + TCC)")
+    parser.add_option("--sqc-deadlock-threshold", type='int',
+                      help="Set the SQC deadlock threshold to some value")
+    parser.add_option("--max-coalesces-per-cycle", type="int", default=1,
+                      help="Maximum insts that may coalesce in a cycle");
 
 def create_system(options, full_system, system, dma_devices, bootmem,
                   ruby_system):
index 71238ae6aa704325a7bbe7fcb038bf4a4881f767..f4ecc414df87af7f4745d13723f06a2bbba5f5ac 100644 (file)
@@ -153,6 +153,11 @@ class TCPCntrl(TCP_Controller, CntrlBase):
         self.coalescer.ruby_system = ruby_system
         self.coalescer.support_inst_reqs = False
         self.coalescer.is_cpu_sequencer = False
+        if options.tcp_deadlock_threshold:
+          self.coalescer.deadlock_threshold = \
+              options.tcp_deadlock_threshold
+        self.coalescer.max_coalesces_per_cycle = \
+            options.max_coalesces_per_cycle
 
         self.sequencer = RubySequencer()
         self.sequencer.version = self.seqCount()
@@ -227,6 +232,9 @@ class SQCCntrl(SQC_Controller, CntrlBase):
         self.sequencer.ruby_system = ruby_system
         self.sequencer.support_data_reqs = False
         self.sequencer.is_cpu_sequencer = False
+        if options.sqc_deadlock_threshold:
+          self.sequencer.deadlock_threshold = \
+            options.sqc_deadlock_threshold
 
         self.ruby_system = ruby_system
 
@@ -370,6 +378,9 @@ def define_options(parser):
                       help = "SQC cache size")
     parser.add_option("--sqc-assoc", type = 'int', default = 8,
                       help = "SQC cache assoc")
+    parser.add_option("--sqc-deadlock-threshold", type='int',
+                      help="Set the SQC deadlock threshold to some value")
+
     parser.add_option("--WB_L1", action = "store_true", default = False,
                       help = "writeback L1")
     parser.add_option("--WB_L2", action = "store_true", default = False,
@@ -386,6 +397,11 @@ def define_options(parser):
                       help = "tcp size")
     parser.add_option("--tcp-assoc", type = 'int', default = 16,
                       help = "tcp assoc")
+    parser.add_option("--tcp-deadlock-threshold", type='int',
+                      help="Set the TCP deadlock threshold to some value")
+    parser.add_option("--max-coalesces-per-cycle", type="int", default=1,
+                      help="Maximum insts that may coalesce in a cycle");
+
     parser.add_option("--noL1", action = "store_true", default = False,
                       help = "bypassL1")
 
index 5f3199021c023d1d80b9e3807f09daebfc42f812..46fdec9a3be5011d657bbf91b5a652feda3dcd70 100644 (file)
@@ -153,6 +153,11 @@ class TCPCntrl(TCP_Controller, CntrlBase):
         self.coalescer.ruby_system = ruby_system
         self.coalescer.support_inst_reqs = False
         self.coalescer.is_cpu_sequencer = False
+        if options.tcp_deadlock_threshold:
+          self.coalescer.deadlock_threshold = \
+            options.tcp_deadlock_threshold
+        self.coalescer.max_coalesces_per_cycle = \
+            options.max_coalesces_per_cycle
 
         self.sequencer = RubySequencer()
         self.sequencer.version = self.seqCount()
@@ -192,6 +197,10 @@ class SQCCntrl(SQC_Controller, CntrlBase):
         self.sequencer.ruby_system = ruby_system
         self.sequencer.support_data_reqs = False
         self.sequencer.is_cpu_sequencer = False
+        if options.sqc_deadlock_threshold:
+          self.sequencer.deadlock_threshold = \
+            options.sqc_deadlock_threshold
+
         self.ruby_system = ruby_system
         if options.recycle_latency:
             self.recycle_latency = options.recycle_latency
@@ -343,6 +352,9 @@ def define_options(parser):
                       help = "SQC cache size")
     parser.add_option("--sqc-assoc", type = 'int', default = 8,
                       help = "SQC cache assoc")
+    parser.add_option("--sqc-deadlock-threshold", type='int',
+                      help="Set the SQC deadlock threshold to some value")
+
     parser.add_option("--region-dir-entries", type = "int", default = 8192)
     parser.add_option("--dir-tag-latency", type = "int", default = 8)
     parser.add_option("--dir-tag-banks", type = "int", default = 4)
@@ -364,6 +376,11 @@ def define_options(parser):
                       help = "tcc assoc")
     parser.add_option("--tcp-size", type = 'string', default = '16kB',
                       help = "tcp size")
+    parser.add_option("--tcp-deadlock-threshold", type='int',
+                      help="Set the TCP deadlock threshold to some value")
+    parser.add_option("--max-coalesces-per-cycle", type="int", default=1,
+                      help="Maximum insts that may coalesce in a cycle");
+
     parser.add_option("--sampler-sets", type = "int", default = 1024)
     parser.add_option("--sampler-assoc", type = "int", default = 16)
     parser.add_option("--sampler-counter", type = "int", default = 512)
index 47517a19ec119fae5b160887e9969636694997a2..7b15403140cc0582dc495261724390ffec1616c0 100644 (file)
@@ -154,6 +154,11 @@ class TCPCntrl(TCP_Controller, CntrlBase):
         self.coalescer.ruby_system = ruby_system
         self.coalescer.support_inst_reqs = False
         self.coalescer.is_cpu_sequencer = False
+        if options.tcp_deadlock_threshold:
+          self.coalescer.deadlock_threshold = \
+            options.tcp_deadlock_threshold
+        self.coalescer.max_coalesces_per_cycle = \
+            options.max_coalesces_per_cycle
 
         self.sequencer = RubySequencer()
         self.sequencer.version = self.seqCount()
@@ -193,6 +198,10 @@ class SQCCntrl(SQC_Controller, CntrlBase):
         self.sequencer.ruby_system = ruby_system
         self.sequencer.support_data_reqs = False
         self.sequencer.is_cpu_sequencer = False
+        if options.sqc_deadlock_threshold:
+          self.sequencer.deadlock_threshold = \
+            options.sqc_deadlock_threshold
+
         self.ruby_system = ruby_system
         if options.recycle_latency:
             self.recycle_latency = options.recycle_latency
@@ -405,6 +414,8 @@ def define_options(parser):
                       help="SQC cache size")
     parser.add_option("--sqc-assoc", type='int', default=8,
                       help="SQC cache assoc")
+    parser.add_option("--sqc-deadlock-threshold", type='int',
+                      help="Set the SQC deadlock threshold to some value")
 
     parser.add_option("--WB_L1", action="store_true",
         default=False, help="L2 Writeback Cache")
@@ -420,6 +431,10 @@ def define_options(parser):
                       help="tcc assoc")
     parser.add_option("--tcp-size", type='string', default='16kB',
                       help="tcp size")
+    parser.add_option("--tcp-deadlock-threshold", type='int',
+                      help="Set the TCP deadlock threshold to some value")
+    parser.add_option("--max-coalesces-per-cycle", type="int", default=1,
+                      help="Maximum insts that may coalesce in a cycle");
 
     parser.add_option("--dir-tag-latency", type="int", default=4)
     parser.add_option("--dir-tag-banks", type="int", default=4)