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