• Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files
  • File List
  • Globals

sst/elements/mcniagara/Dependency.h

00001 
00002 #ifndef DEPENDENCY_H
00003 #define DEPENDENCY_H
00004 
00005 #include <McSimDefs.h>
00006 #include <CycleTracker.h>
00007 
00008 //-------------------------------------------------------------------
00009 /// @brief Dependency tracker class
00010 ///
00011 //-------------------------------------------------------------------
00012 class DependencyTracker
00013 {
00014    /// Dependency list node type
00015    struct Dependency
00016    {
00017       InstructionNumber producer;
00018       InstructionNumber consumer;
00019       CycleCount availableCycle;
00020       CycleTracker::CycleReason reason;
00021       struct Dependency *next;
00022    };
00023 
00024  public:
00025    DependencyTracker();
00026    ~DependencyTracker();
00027    int addDependency(InstructionNumber instructionNum, CycleCount whenSatisfied,
00028                      CycleTracker::CycleReason reason);
00029    int adjustDependenceChain(CycleCount numCycles);
00030    CycleCount isDependent(InstructionNumber instructionNum, CycleTracker::CycleReason *reason);
00031  private:
00032    Dependency *DepQHead, ///< Dependency list head pointer
00033               *DepQTail; ///< Dependency list tail pointer
00034 };
00035 
00036 #endif

Generated on Fri Oct 22 2010 11:02:25 for SST by  doxygen 1.7.1