1/* 2 * Copyright (c) 2004-2006 The Regents of The University of Michigan 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 54 unchanged lines hidden (view full) --- 63 * have the execute() function called on it. 64 * @todo: Make IQ able to handle multiple FU pools. 65 */ 66template <class Impl> 67class InstructionQueue 68{ 69 public: 70 //Typedefs from the Impl. |
71 typedef typename Impl::O3CPU O3CPU; |
72 typedef typename Impl::DynInstPtr DynInstPtr; 73 typedef typename Impl::Params Params; 74 75 typedef typename Impl::CPUPol::IEW IEW; 76 typedef typename Impl::CPUPol::MemDepUnit MemDepUnit; 77 typedef typename Impl::CPUPol::IssueStruct IssueStruct; 78 typedef typename Impl::CPUPol::TimeStruct TimeStruct; 79 80 // Typedef of iterator through the list of instructions. 81 typedef typename std::list<DynInstPtr>::iterator ListIt; 82 |
83 friend class Impl::O3CPU; |
84 85 /** FU completion event class. */ 86 class FUCompletion : public Event { 87 private: 88 /** Executing instruction. */ 89 DynInstPtr inst; 90 91 /** Index of the FU used for executing. */ --- 28 unchanged lines hidden (view full) --- 120 121 /** Registers statistics. */ 122 void regStats(); 123 124 /** Resets all instruction queue state. */ 125 void resetState(); 126 127 /** Sets CPU pointer. */ |
128 void setCPU(O3CPU *_cpu) { cpu = _cpu; } |
129 130 /** Sets active threads list. */ 131 void setActiveThreads(std::list<unsigned> *at_ptr); 132 133 /** Sets the IEW pointer. */ 134 void setIEW(IEW *iew_ptr) { iewStage = iew_ptr; } 135 136 /** Sets the timer buffer between issue and execute. */ --- 110 unchanged lines hidden (view full) --- 247 /** Does the actual squashing. */ 248 void doSquash(unsigned tid); 249 250 ///////////////////////// 251 // Various pointers 252 ///////////////////////// 253 254 /** Pointer to the CPU. */ |
255 O3CPU *cpu; |
256 257 /** Cache interface. */ 258 MemInterface *dcacheInterface; 259 260 /** Pointer to IEW stage. */ 261 IEW *iewStage; 262 263 /** The memory dependence unit, which tracks/predicts memory dependences --- 244 unchanged lines hidden --- |