inst_queue.hh (9920:028e4da64b42) inst_queue.hh (10333:6be8945d226b)
1/*
1/*
2 * Copyright (c) 2011-2012 ARM Limited
2 * Copyright (c) 2011-2012, 2014 ARM Limited
3 * Copyright (c) 2013 Advanced Micro Devices, Inc.
4 * All rights reserved.
5 *
6 * The license below extends only to copyright in the software and shall
7 * not be construed as granting a license to any other intellectual
8 * property including but not limited to intellectual property relating
9 * to a hardware implementation of the functionality of the software
10 * licensed hereunder. You may use the software subject to the license

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

183 */
184 void insertBarrier(DynInstPtr &barr_inst);
185
186 /** Returns the oldest scheduled instruction, and removes it from
187 * the list of instructions waiting to execute.
188 */
189 DynInstPtr getInstToExecute();
190
3 * Copyright (c) 2013 Advanced Micro Devices, Inc.
4 * All rights reserved.
5 *
6 * The license below extends only to copyright in the software and shall
7 * not be construed as granting a license to any other intellectual
8 * property including but not limited to intellectual property relating
9 * to a hardware implementation of the functionality of the software
10 * licensed hereunder. You may use the software subject to the license

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

183 */
184 void insertBarrier(DynInstPtr &barr_inst);
185
186 /** Returns the oldest scheduled instruction, and removes it from
187 * the list of instructions waiting to execute.
188 */
189 DynInstPtr getInstToExecute();
190
191 /** Returns a memory instruction that was referred due to a delayed DTB
192 * translation if it is now ready to execute.
191 /** Gets a memory instruction that was referred due to a delayed DTB
192 * translation if it is now ready to execute. NULL if none available.
193 */
194 DynInstPtr getDeferredMemInstToExecute();
195
193 */
194 DynInstPtr getDeferredMemInstToExecute();
195
196 /** Gets a memory instruction that was blocked on the cache. NULL if none
197 * available.
198 */
199 DynInstPtr getBlockedMemInstToExecute();
200
196 /**
197 * Records the instruction as the producer of a register without
198 * adding it to the rest of the IQ.
199 */
200 void recordProducer(DynInstPtr &inst)
201 { addToProducers(inst); }
202
203 /** Process FU completion event. */

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

237 void completeMemInst(DynInstPtr &completed_inst);
238
239 /**
240 * Defers a memory instruction when its DTB translation incurs a hw
241 * page table walk.
242 */
243 void deferMemInst(DynInstPtr &deferred_inst);
244
201 /**
202 * Records the instruction as the producer of a register without
203 * adding it to the rest of the IQ.
204 */
205 void recordProducer(DynInstPtr &inst)
206 { addToProducers(inst); }
207
208 /** Process FU completion event. */

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

242 void completeMemInst(DynInstPtr &completed_inst);
243
244 /**
245 * Defers a memory instruction when its DTB translation incurs a hw
246 * page table walk.
247 */
248 void deferMemInst(DynInstPtr &deferred_inst);
249
250 /** Defers a memory instruction when it is cache blocked. */
251 void blockMemInst(DynInstPtr &blocked_inst);
252
253 /** Notify instruction queue that a previous blockage has resolved */
254 void cacheUnblocked();
255
245 /** Indicates an ordering violation between a store and a load. */
246 void violation(DynInstPtr &store, DynInstPtr &faulting_load);
247
248 /**
249 * Squashes instructions for a thread. Squashing information is obtained
250 * from the time buffer.
251 */
252 void squash(ThreadID tid);

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

303 /** List of instructions that are ready to be executed. */
304 std::list<DynInstPtr> instsToExecute;
305
306 /** List of instructions waiting for their DTB translation to
307 * complete (hw page table walk in progress).
308 */
309 std::list<DynInstPtr> deferredMemInsts;
310
256 /** Indicates an ordering violation between a store and a load. */
257 void violation(DynInstPtr &store, DynInstPtr &faulting_load);
258
259 /**
260 * Squashes instructions for a thread. Squashing information is obtained
261 * from the time buffer.
262 */
263 void squash(ThreadID tid);

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

314 /** List of instructions that are ready to be executed. */
315 std::list<DynInstPtr> instsToExecute;
316
317 /** List of instructions waiting for their DTB translation to
318 * complete (hw page table walk in progress).
319 */
320 std::list<DynInstPtr> deferredMemInsts;
321
322 /** List of instructions that have been cache blocked. */
323 std::list<DynInstPtr> blockedMemInsts;
324
325 /** List of instructions that were cache blocked, but a retry has been seen
326 * since, so they can now be retried. May fail again go on the blocked list.
327 */
328 std::list<DynInstPtr> retryMemInsts;
329
311 /**
312 * Struct for comparing entries to be added to the priority queue.
313 * This gives reverse ordering to the instructions in terms of
314 * sequence numbers: the instructions with smaller sequence
315 * numbers (and hence are older) will be at the top of the
316 * priority queue.
317 */
318 struct pqCompare {

--- 209 unchanged lines hidden ---
330 /**
331 * Struct for comparing entries to be added to the priority queue.
332 * This gives reverse ordering to the instructions in terms of
333 * sequence numbers: the instructions with smaller sequence
334 * numbers (and hence are older) will be at the top of the
335 * priority queue.
336 */
337 struct pqCompare {

--- 209 unchanged lines hidden ---