iew.hh (9427:ddf45c1d54d4) | iew.hh (9444:ab47fe7f03f0) |
---|---|
1/* | 1/* |
2 * Copyright (c) 2010 ARM Limited | 2 * Copyright (c) 2010-2012 ARM Limited |
3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software 9 * licensed hereunder. You may use the software subject to the license 10 * terms below provided that you ensure that this notice is replicated --- 134 unchanged lines hidden (view full) --- 145 void setIEWQueue(TimeBuffer<IEWStruct> *iq_ptr); 146 147 /** Sets pointer to list of active threads. */ 148 void setActiveThreads(std::list<ThreadID> *at_ptr); 149 150 /** Sets pointer to the scoreboard. */ 151 void setScoreboard(Scoreboard *sb_ptr); 152 | 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software 9 * licensed hereunder. You may use the software subject to the license 10 * terms below provided that you ensure that this notice is replicated --- 134 unchanged lines hidden (view full) --- 145 void setIEWQueue(TimeBuffer<IEWStruct> *iq_ptr); 146 147 /** Sets pointer to list of active threads. */ 148 void setActiveThreads(std::list<ThreadID> *at_ptr); 149 150 /** Sets pointer to the scoreboard. */ 151 void setScoreboard(Scoreboard *sb_ptr); 152 |
153 /** Drains IEW stage. */ 154 bool drain(); | 153 /** Perform sanity checks after a drain. */ 154 void drainSanityCheck() const; |
155 | 155 |
156 /** Resumes execution after a drain. */ 157 void resume(); | 156 /** Has the stage drained? */ 157 bool isDrained() const; |
158 | 158 |
159 /** Completes switch out of IEW stage. */ 160 void switchOut(); 161 | |
162 /** Takes over from another CPU's thread. */ 163 void takeOverFrom(); 164 | 159 /** Takes over from another CPU's thread. */ 160 void takeOverFrom(); 161 |
165 /** Returns if IEW is switched out. */ 166 bool isSwitchedOut() { return switchedOut; } 167 | |
168 /** Squashes instructions in IEW for a specific thread. */ 169 void squash(ThreadID tid); 170 171 /** Wakes all dependents of a completed instruction. */ 172 void wakeDependents(DynInstPtr &inst); 173 174 /** Tells memory dependence unit that a memory instruction needs to be 175 * rescheduled. It will re-execute once replayMemInst() is called. --- 289 unchanged lines hidden (view full) --- 465 ThreadID numThreads; 466 467 /** Pointer to list of active threads. */ 468 std::list<ThreadID> *activeThreads; 469 470 /** Maximum size of the skid buffer. */ 471 unsigned skidBufferMax; 472 | 162 /** Squashes instructions in IEW for a specific thread. */ 163 void squash(ThreadID tid); 164 165 /** Wakes all dependents of a completed instruction. */ 166 void wakeDependents(DynInstPtr &inst); 167 168 /** Tells memory dependence unit that a memory instruction needs to be 169 * rescheduled. It will re-execute once replayMemInst() is called. --- 289 unchanged lines hidden (view full) --- 459 ThreadID numThreads; 460 461 /** Pointer to list of active threads. */ 462 std::list<ThreadID> *activeThreads; 463 464 /** Maximum size of the skid buffer. */ 465 unsigned skidBufferMax; 466 |
473 /** Is this stage switched out. */ 474 bool switchedOut; 475 | |
476 /** Stat for total number of idle cycles. */ 477 Stats::Scalar iewIdleCycles; 478 /** Stat for total number of squashing cycles. */ 479 Stats::Scalar iewSquashCycles; 480 /** Stat for total number of blocking cycles. */ 481 Stats::Scalar iewBlockCycles; 482 /** Stat for total number of unblocking cycles. */ 483 Stats::Scalar iewUnblockCycles; --- 65 unchanged lines hidden --- | 467 /** Stat for total number of idle cycles. */ 468 Stats::Scalar iewIdleCycles; 469 /** Stat for total number of squashing cycles. */ 470 Stats::Scalar iewSquashCycles; 471 /** Stat for total number of blocking cycles. */ 472 Stats::Scalar iewBlockCycles; 473 /** Stat for total number of unblocking cycles. */ 474 Stats::Scalar iewUnblockCycles; --- 65 unchanged lines hidden --- |