local_memory_pipeline.hh (11308:7d8836fd043d) local_memory_pipeline.hh (11693:bc1f702c25b9)
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:

--- 47 unchanged lines hidden (view full) ---

56
57class LocalMemPipeline
58{
59 public:
60 LocalMemPipeline(const ComputeUnitParams *params);
61 void init(ComputeUnit *cu);
62 void exec();
63
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:

--- 47 unchanged lines hidden (view full) ---

56
57class LocalMemPipeline
58{
59 public:
60 LocalMemPipeline(const ComputeUnitParams *params);
61 void init(ComputeUnit *cu);
62 void exec();
63
64 template<typename c0, typename c1> void doSmReturn(GPUDynInstPtr m);
65
66 std::queue<GPUDynInstPtr> &getLMReqFIFO() { return lmIssuedRequests; }
67 std::queue<GPUDynInstPtr> &getLMRespFIFO() { return lmReturnedRequests; }
68
69 bool
70 isLMRespFIFOWrRdy() const
71 {
72 return lmReturnedRequests.size() < lmQueueSize;
73 }
74
75 bool
76 isLMReqFIFOWrRdy(uint32_t pendReqs=0) const
77 {
78 return (lmIssuedRequests.size() + pendReqs) < lmQueueSize;
79 }
80
81 const std::string& name() const { return _name; }
82 void regStats();
83
64 std::queue<GPUDynInstPtr> &getLMReqFIFO() { return lmIssuedRequests; }
65 std::queue<GPUDynInstPtr> &getLMRespFIFO() { return lmReturnedRequests; }
66
67 bool
68 isLMRespFIFOWrRdy() const
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
83 incLoadVRFBankConflictCycles(int num_cycles)
84 {
85 loadVrfBankConflictCycles += num_cycles;
86 }
87
84 private:
85 ComputeUnit *computeUnit;
86 std::string _name;
87 int lmQueueSize;
88 Stats::Scalar loadVrfBankConflictCycles;
89 // Local Memory Request Fifo: all shared memory requests
90 // are issued to this FIFO from the memory pipelines
91 std::queue<GPUDynInstPtr> lmIssuedRequests;
92
93 // Local Memory Response Fifo: all responses of shared memory
94 // requests are sent to this FIFO from LDS
95 std::queue<GPUDynInstPtr> lmReturnedRequests;
96};
97
98#endif // __LOCAL_MEMORY_PIPELINE_HH__
88 private:
89 ComputeUnit *computeUnit;
90 std::string _name;
91 int lmQueueSize;
92 Stats::Scalar loadVrfBankConflictCycles;
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__