#ifndef __MEM_RUBY_SYSTEM_ABSTRACTREPLACEMENTPOLICY_HH__
#define __MEM_RUBY_SYSTEM_ABSTRACTREPLACEMENTPOLICY_HH__
-#include "mem/ruby/common/TypeDefines.hh"
+#include "base/types.hh"
class AbstractReplacementPolicy
{
virtual ~AbstractReplacementPolicy();
/* touch a block. a.k.a. update timestamp */
- virtual void touch(Index set, Index way, Time time) = 0;
+ virtual void touch(Index set, Index way, Tick time) = 0;
/* returns the way to replace */
virtual Index getVictim(Index set) const = 0;
/* get the time of the last access */
- Time getLastAccess(Index set, Index way);
+ Tick getLastAccess(Index set, Index way);
protected:
unsigned m_num_sets; /** total number of sets */
unsigned m_assoc; /** set associativity */
- Time **m_last_ref_ptr; /** timestamp of last reference */
+ Tick **m_last_ref_ptr; /** timestamp of last reference */
};
inline
{
m_num_sets = num_sets;
m_assoc = assoc;
- m_last_ref_ptr = new Time*[m_num_sets];
+ m_last_ref_ptr = new Tick*[m_num_sets];
for(unsigned i = 0; i < m_num_sets; i++){
- m_last_ref_ptr[i] = new Time[m_assoc];
+ m_last_ref_ptr[i] = new Tick[m_assoc];
for(unsigned j = 0; j < m_assoc; j++){
m_last_ref_ptr[i][j] = 0;
}
}
}
-inline Time
+inline Tick
AbstractReplacementPolicy::getLastAccess(Index set, Index way)
{
return m_last_ref_ptr[set][way];
LRUPolicy(Index num_sets, Index assoc);
~LRUPolicy();
- void touch(Index set, Index way, Time time);
+ void touch(Index set, Index way, Tick time);
Index getVictim(Index set) const;
};
}
inline void
-LRUPolicy::touch(Index set, Index index, Time time)
+LRUPolicy::touch(Index set, Index index, Tick time)
{
assert(index >= 0 && index < m_assoc);
assert(set >= 0 && set < m_num_sets);
LRUPolicy::getVictim(Index set) const
{
// assert(m_assoc != 0);
- Time time, smallest_time;
+ Tick time, smallest_time;
Index smallest_index;
smallest_index = 0;
PseudoLRUPolicy(Index num_sets, Index assoc);
~PseudoLRUPolicy();
- void touch(Index set, Index way, Time time);
+ void touch(Index set, Index way, Tick time);
Index getVictim(Index set) const;
private:
}
inline void
-PseudoLRUPolicy::touch(Index set, Index index, Time time)
+PseudoLRUPolicy::touch(Index set, Index index, Tick time)
{
assert(index >= 0 && index < m_assoc);
assert(set >= 0 && set < m_num_sets);