inst_queue.hh (2727:91e17c7ee622) inst_queue.hh (2733:e0eac8fc5774)
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.
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::FullCPU FullCPU;
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
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::FullCPU;
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. */
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(FullCPU *_cpu) { cpu = _cpu; }
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. */
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 FullCPU *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 ---
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 ---