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__ |