gpu-compute,mem-ruby: Refactor GPU coalescer
authorMatthew Poremba <matthew.poremba@amd.com>
Fri, 8 May 2020 15:37:59 +0000 (10:37 -0500)
committerMatthew Poremba <matthew.poremba@amd.com>
Mon, 11 May 2020 21:25:19 +0000 (21:25 +0000)
commit3d57eaf9f52813b2b89e2def8fe52c0c09544207
treee6f9bdca4ad93c9c614de64dd6f841ddee9c129c
parent2f9cc04a5f9e2a13e93c57270226f3a83120e408
gpu-compute,mem-ruby: Refactor GPU coalescer

Remove the read/write tables and coalescing table and introduce a two
levels of tables for uncoalesced and coalesced packets. Tokens are
granted to GPU instructions to place in uncoalesced table. If tokens
are available, the operation always succeeds such that the 'Aliased'
status is never returned. Coalesced accesses are placed in the
coalesced table while requests are outstanding. Requests to the same
address are added as targets to the table similar to how MSHRs
operate.

Change-Id: I44983610307b638a97472db3576d0a30df2de600
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/27429
Reviewed-by: Bradford Beckmann <brad.beckmann@amd.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Bradford Beckmann <brad.beckmann@amd.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/gpu-compute/GPU.py
src/gpu-compute/compute_unit.cc
src/gpu-compute/compute_unit.hh
src/gpu-compute/global_memory_pipeline.cc
src/gpu-compute/global_memory_pipeline.hh
src/gpu-compute/wavefront.cc
src/mem/ruby/system/GPUCoalescer.cc
src/mem/ruby/system/GPUCoalescer.hh
src/mem/ruby/system/GPUCoalescer.py
src/mem/ruby/system/VIPERCoalescer.cc