gem5  v20.1.0.0
scoreboard_check_stage.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
18  * contributors may be used to endorse or promote products derived from this
19  * software 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 
34 #ifndef __SCOREBOARD_CHECK_STAGE_HH__
35 #define __SCOREBOARD_CHECK_STAGE_HH__
36 
37 #include <cstdint>
38 #include <string>
39 #include <unordered_map>
40 #include <utility>
41 #include <vector>
42 
43 #include "sim/stats.hh"
44 
45 class ComputeUnit;
47 class Wavefront;
48 
49 struct ComputeUnitParams;
50 
51 /*
52  * Scoreboard check stage.
53  * All wavefronts are analyzed to see if they are ready
54  * to be executed this cycle. Both structural and data
55  * hazards are considered while marking a wave "ready"
56  * for execution. After analysis, the ready waves are
57  * added to readyList.
58  */
60 {
61  public:
62  enum nonrdytype_e {
72  };
73 
74  ScoreboardCheckStage(const ComputeUnitParams* p, ComputeUnit &cu,
75  ScoreboardCheckToSchedule &to_schedule);
77  void exec();
78 
79  // Stats related variables and methods
80  const std::string& name() const { return _name; }
81  void regStats();
82 
83  private:
84  void collectStatistics(nonrdytype_e rdyStatus);
86  bool ready(Wavefront *w, nonrdytype_e *rdyStatus,
87  int *exeResType, int wfSlot);
89 
96 
97  // Stats
99 
100  const std::string _name;
101 };
102 
103 #endif // __SCOREBOARD_CHECK_STAGE_HH__
ScoreboardCheckStage::NRDY_ILLEGAL
@ NRDY_ILLEGAL
Definition: scoreboard_check_stage.hh:63
ScoreboardCheckStage::NRDY_IB_EMPTY
@ NRDY_IB_EMPTY
Definition: scoreboard_check_stage.hh:65
ScoreboardCheckStage::ScoreboardCheckStage
ScoreboardCheckStage(const ComputeUnitParams *p, ComputeUnit &cu, ScoreboardCheckToSchedule &to_schedule)
Definition: scoreboard_check_stage.cc:47
ScoreboardCheckStage::_name
const std::string _name
Definition: scoreboard_check_stage.hh:100
ScoreboardCheckStage::toSchedule
ScoreboardCheckToSchedule & toSchedule
Interface between scoreboard check and schedule stages.
Definition: scoreboard_check_stage.hh:95
ScoreboardCheckStage::mapWaveToExeUnit
int mapWaveToExeUnit(Wavefront *w)
Definition: scoreboard_check_stage.cc:195
ScoreboardCheckStage::exec
void exec()
Definition: scoreboard_check_stage.cc:237
ScoreboardCheckStage::nonrdytype_e
nonrdytype_e
Definition: scoreboard_check_stage.hh:62
Stats::Vector
A vector of scalar stats.
Definition: statistics.hh:2575
ScoreboardCheckStage::INST_RDY
@ INST_RDY
Definition: scoreboard_check_stage.hh:70
ScoreboardCheckStage::NRDY_SGPR_NRDY
@ NRDY_SGPR_NRDY
Definition: scoreboard_check_stage.hh:69
ComputeUnit
Definition: compute_unit.hh:198
stats.hh
ScoreboardCheckStage::NRDY_VGPR_NRDY
@ NRDY_VGPR_NRDY
Definition: scoreboard_check_stage.hh:68
MipsISA::w
Bitfield< 0 > w
Definition: pra_constants.hh:278
ScoreboardCheckStage::name
const std::string & name() const
Definition: scoreboard_check_stage.hh:80
ScoreboardCheckStage::~ScoreboardCheckStage
~ScoreboardCheckStage()
Definition: scoreboard_check_stage.cc:56
ScoreboardCheckStage::ready
bool ready(Wavefront *w, nonrdytype_e *rdyStatus, int *exeResType, int wfSlot)
Definition: scoreboard_check_stage.cc:74
ScoreboardCheckStage::NRDY_BARRIER_WAIT
@ NRDY_BARRIER_WAIT
Definition: scoreboard_check_stage.hh:67
ScoreboardCheckStage::NRDY_WAIT_CNT
@ NRDY_WAIT_CNT
Definition: scoreboard_check_stage.hh:66
ScoreboardCheckToSchedule
Communication interface between ScoreboardCheck and Schedule stages.
Definition: comm.hh:63
Wavefront
Definition: wavefront.hh:57
ScoreboardCheckStage::NRDY_CONDITIONS
@ NRDY_CONDITIONS
Definition: scoreboard_check_stage.hh:71
ScoreboardCheckStage::stallCycles
Stats::Vector stallCycles
Definition: scoreboard_check_stage.hh:98
ScoreboardCheckStage::collectStatistics
void collectStatistics(nonrdytype_e rdyStatus)
Definition: scoreboard_check_stage.cc:61
ScoreboardCheckStage
Definition: scoreboard_check_stage.hh:59
ScoreboardCheckStage::computeUnit
ComputeUnit & computeUnit
Definition: scoreboard_check_stage.hh:88
ScoreboardCheckStage::regStats
void regStats()
Definition: scoreboard_check_stage.cc:270
MipsISA::p
Bitfield< 0 > p
Definition: pra_constants.hh:323
ScoreboardCheckStage::NRDY_WF_STOP
@ NRDY_WF_STOP
Definition: scoreboard_check_stage.hh:64

Generated on Wed Sep 30 2020 14:02:12 for gem5 by doxygen 1.8.17