gem5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
local_memory_pipeline.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014-2015 Advanced Micro Devices, Inc.
3  * All rights reserved.
4  *
5  * For use for simulation and test purposes only
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright notice,
11  * this list of conditions and the following disclaimer.
12  *
13  * 2. Redistributions in binary form must reproduce the above copyright notice,
14  * this list of conditions and the following disclaimer in the documentation
15  * and/or other materials provided with the distribution.
16  *
17  * 3. Neither the name of the copyright holder nor the names of its contributors
18  * may be used to endorse or promote products derived from this software
19  * without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
25  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31  * POSSIBILITY OF SUCH DAMAGE.
32  *
33  * Author: Sooraj Puthoor
34  */
35 
36 #ifndef __LOCAL_MEMORY_PIPELINE_HH__
37 #define __LOCAL_MEMORY_PIPELINE_HH__
38 
39 #include <queue>
40 #include <string>
41 
42 #include "gpu-compute/misc.hh"
43 #include "params/ComputeUnit.hh"
44 #include "sim/stats.hh"
45 
46 /*
47  * @file local_memory_pipeline.hh
48  *
49  * The local memory pipeline issues newly created local memory packets
50  * from pipeline to the LDS. This stage also retires previously issued
51  * loads and stores that have returned from the LDS.
52  */
53 
54 class ComputeUnit;
55 class Wavefront;
56 
58 {
59  public:
60  LocalMemPipeline(const ComputeUnitParams *params);
61  void init(ComputeUnit *cu);
62  void exec();
63 
64  std::queue<GPUDynInstPtr> &getLMReqFIFO() { return lmIssuedRequests; }
65  std::queue<GPUDynInstPtr> &getLMRespFIFO() { return lmReturnedRequests; }
66 
67  bool
69  {
70  return lmReturnedRequests.size() < lmQueueSize;
71  }
72 
73  bool
74  isLMReqFIFOWrRdy(uint32_t pendReqs=0) const
75  {
76  return (lmIssuedRequests.size() + pendReqs) < lmQueueSize;
77  }
78 
79  const std::string& name() const { return _name; }
80  void regStats();
81 
82  void
84  {
85  loadVrfBankConflictCycles += num_cycles;
86  }
87 
88  private:
90  std::string _name;
93  // Local Memory Request Fifo: all shared memory requests
94  // are issued to this FIFO from the memory pipelines
95  std::queue<GPUDynInstPtr> lmIssuedRequests;
96 
97  // Local Memory Response Fifo: all responses of shared memory
98  // requests are sent to this FIFO from LDS
99  std::queue<GPUDynInstPtr> lmReturnedRequests;
100 };
101 
102 #endif // __LOCAL_MEMORY_PIPELINE_HH__
Stats::Scalar loadVrfBankConflictCycles
std::queue< GPUDynInstPtr > & getLMRespFIFO()
std::queue< GPUDynInstPtr > lmIssuedRequests
void init(ComputeUnit *cu)
bool isLMReqFIFOWrRdy(uint32_t pendReqs=0) const
This is a simple scalar statistic, like a counter.
Definition: statistics.hh:2475
bool isLMRespFIFOWrRdy() const
std::queue< GPUDynInstPtr > & getLMReqFIFO()
const std::string & name() const
std::queue< GPUDynInstPtr > lmReturnedRequests
LocalMemPipeline(const ComputeUnitParams *params)
void incLoadVRFBankConflictCycles(int num_cycles)

Generated on Fri Jun 9 2017 13:03:48 for gem5 by doxygen 1.8.6