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; --- 31 unchanged lines hidden (view full) --- 40 */ 41template <class Impl> 42class ROB 43{ 44 protected: 45 typedef TheISA::RegIndex RegIndex; 46 public: 47 //Typedefs from the Impl. |
48 typedef typename Impl::O3CPU O3CPU; |
49 typedef typename Impl::DynInstPtr DynInstPtr; 50 51 typedef std::pair<RegIndex, PhysRegIndex> UnmapInfo; 52 typedef typename std::list<DynInstPtr>::iterator InstIt; 53 54 /** Possible ROB statuses. */ 55 enum Status { 56 Running, --- 28 unchanged lines hidden (view full) --- 85 unsigned _smtROBThreshold, unsigned _numThreads); 86 87 std::string name() const; 88 89 /** Function to set the CPU pointer, necessary due to which object the ROB 90 * is created within. 91 * @param cpu_ptr Pointer to the implementation specific full CPU object. 92 */ |
93 void setCPU(O3CPU *cpu_ptr); |
94 95 /** Sets pointer to the list of active threads. 96 * @param at_ptr Pointer to the list of active threads. 97 */ 98 void setActiveThreads(std::list<unsigned>* at_ptr); 99 100 /** Switches out the ROB. */ 101 void switchOut(); --- 150 unchanged lines hidden (view full) --- 252 /** This is more of a debugging function than anything. Use 253 * threadEntries to get the instructions in the ROB unless you are 254 * double checking that variable. 255 */ 256 int countInsts(unsigned tid); 257 258 private: 259 /** Pointer to the CPU. */ |
260 O3CPU *cpu; |
261 262 /** Active Threads in CPU */ 263 std::list<unsigned>* activeThreads; 264 265 /** Number of instructions in the ROB. */ 266 unsigned numEntries; 267 268 /** Entries Per Thread */ --- 51 unchanged lines hidden --- |