mem-ruby,configs: Add GPU GLC Atomic Resource Constraints (#120)

Added a resource constraint, AtomicALUOperation, to GLC atomics
performed in the TCC.

The resource constraint uses a new class, ALUFreeList array. The class
assumes the following:
  - There are a fixed number of atomic ALU pipelines
- While a new cache line can be processed in each pipeline each cycle,
if a cache line is currently going through a pipeline, it can't be
processed again until it's finished

Two configuration parameters have been used to tune this behavior:
- tcc-num-atomic-alus corresponds to the number of atomic ALU pipelines
- atomic-alu-latency corresponds to the latency of atomic ALU pipelines

Change-Id: I25bdde7dafc3877590bb6536efdf57b8c540a939
This commit is contained in:
Daniel Kouchekinia
2023-11-14 09:48:48 -06:00
committed by GitHub
parent f11227b4a0
commit be5c03ea9f
9 changed files with 242 additions and 5 deletions

View File

@@ -275,6 +275,8 @@ class TCC(RubyCache):
def create(self, options):
self.assoc = options.tcc_assoc
self.atomicLatency = options.atomic_alu_latency
self.atomicALUs = options.tcc_num_atomic_alus
if hasattr(options, "bw_scalor") and options.bw_scalor > 0:
s = options.num_compute_units
tcc_size = s * 128
@@ -497,6 +499,15 @@ def define_options(parser):
parser.add_argument(
"--glc-atomic-latency", type=int, default=1, help="GLC Atomic Latency"
)
parser.add_argument(
"--atomic-alu-latency", type=int, default=0, help="Atomic ALU Latency"
)
parser.add_argument(
"--tcc-num-atomic-alus",
type=int,
default=64,
help="Number of atomic ALUs in the TCC",
)
parser.add_argument(
"--tcp-num-banks",
type=int,