1/* 2 * Copyright (c) 2009 Mark D. Hill and David A. Wood 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; --- 22 unchanged lines hidden (view full) --- 31 32#include <iostream> 33#include <string> 34 35#include "mem/protocol/AccessPermission.hh" 36#include "mem/ruby/common/Address.hh" 37#include "mem/ruby/common/Consumer.hh" 38#include "mem/ruby/common/DataBlock.hh" |
39#include "mem/ruby/common/Histogram.hh" |
40#include "mem/ruby/network/Network.hh" 41#include "mem/ruby/recorder/CacheRecorder.hh" 42#include "mem/ruby/system/MachineID.hh" 43#include "mem/packet.hh" 44#include "params/RubyController.hh" 45#include "sim/clocked_object.hh" 46 47class MessageBuffer; --- 40 unchanged lines hidden (view full) --- 88 89 public: 90 MachineID getMachineID() const { return m_machineID; } 91 uint64_t getFullyBusyCycles() const { return m_fully_busy_cycles; } 92 uint64_t getRequestCount() const { return m_request_count; } 93 const std::map<std::string, uint64_t>& getRequestProfileMap() const 94 { return m_requestProfileMap; } 95 |
96 Histogram& getDelayHist() { return m_delayHistogram; } 97 Histogram& getDelayVCHist(uint32_t index) 98 { return m_delayVCHistogram[index]; } 99 |
100 protected: 101 //! Profiles original cache requests including PUTs 102 void profileRequest(const std::string &request); |
103 //! Profiles the delay associated with messages. 104 void profileMsgDelay(uint32_t virtualNetwork, Time delay); |
105 106 protected: 107 int m_transitions_per_cycle; 108 int m_buffer_size; 109 int m_recycle_latency; 110 std::string m_name; 111 NodeID m_version; 112 Network* m_net_ptr; --- 10 unchanged lines hidden (view full) --- 123 //! Counter for the number of cycles when the transitions carried out 124 //! were equal to the maximum allowed 125 uint64_t m_fully_busy_cycles; 126 127 //! Map for couting requests of different types. The controller should 128 //! call requisite function for updating the count. 129 std::map<std::string, uint64_t> m_requestProfileMap; 130 uint64_t m_request_count; |
131 132 //! Histogram for profiling delay for the messages this controller 133 //! cares for 134 Histogram m_delayHistogram; 135 std::vector<Histogram> m_delayVCHistogram; |
136}; 137 138#endif // __MEM_RUBY_SLICC_INTERFACE_ABSTRACTCONTROLLER_HH__ |