# HG changeset patch
# User Brad Beckmann <[email protected]>
# Date 1260657435 28800
# Node ID c1b464b8baad8ab20030eb6b36859035c769122d
# Parent 856ecd55b3729ea5f083b76bc4750a29b008b707
ruby: Added clock to ruby system
As a first step to migrate ruby to the M5 eventqueue, added a clock
variable to the ruby system.
diff -r 856ecd55b372 -r c1b464b8baad configs/example/memtest-ruby.py
--- a/configs/example/memtest-ruby.py Sat Dec 12 14:37:15 2009 -0800
+++ b/configs/example/memtest-ruby.py Sat Dec 12 14:37:15 2009 -0800
@@ -158,7 +158,8 @@
mem_size_mb = sum([int(dir_cntrl.directory.size_mb) \
for dir_cntrl in dir_cntrl_nodes])
-system.ruby = RubySystem(network = network,
+system.ruby = RubySystem(clock = '1GHz',
+ network = network,
profiler = RubyProfiler(),
tracer = RubyTracer(),
debug = RubyDebug(),
diff -r 856ecd55b372 -r c1b464b8baad src/mem/ruby/eventqueue/RubyEventQueue.cc
--- a/src/mem/ruby/eventqueue/RubyEventQueue.cc Sat Dec 12 14:37:15 2009 -0800
+++ b/src/mem/ruby/eventqueue/RubyEventQueue.cc Sat Dec 12 14:37:15 2009 -0800
@@ -40,9 +40,8 @@
// Class public method definitions
-RubyEventQueue theEventQueue;
-
-RubyEventQueue::RubyEventQueue()
+RubyEventQueue::RubyEventQueue(Tick _clock)
+ : m_clock(_clock)
{
m_prio_heap_ptr = NULL;
init();
diff -r 856ecd55b372 -r c1b464b8baad src/mem/ruby/eventqueue/RubyEventQueue.hh
--- a/src/mem/ruby/eventqueue/RubyEventQueue.hh Sat Dec 12 14:37:15 2009 -0800
+++ b/src/mem/ruby/eventqueue/RubyEventQueue.hh Sat Dec 12 14:37:15 2009 -0800
@@ -70,14 +70,14 @@
class RubyEventQueue {
public:
// Constructors
- RubyEventQueue();
+ RubyEventQueue(Tick clock);
// Destructor
~RubyEventQueue();
// Public Methods
- Time getTime() const { return m_globalTime; }
+ Time getTime() const { return curTick/m_clock; }
void scheduleEvent(Consumer* consumer, Time timeDelta) {
scheduleEventAbsolute(consumer, timeDelta + m_globalTime); }
void scheduleEventAbsolute(Consumer* consumer, Time timeAbs);
void triggerEvents(Time t); // called to handle all events <= time t
@@ -96,6 +96,7 @@
RubyEventQueue& operator=(const RubyEventQueue& obj);
// Data Members (m_ prefix)
+ Tick m_clock;
PrioHeap<RubyEventQueueNode>* m_prio_heap_ptr;
Time m_globalTime;
Time m_timeOfLastRecovery;
diff -r 856ecd55b372 -r c1b464b8baad src/mem/ruby/system/RubySystem.py
--- a/src/mem/ruby/system/RubySystem.py Sat Dec 12 14:37:15 2009 -0800
+++ b/src/mem/ruby/system/RubySystem.py Sat Dec 12 14:37:15 2009 -0800
@@ -6,7 +6,7 @@
random_seed = Param.Int(1234, "");
randomization = Param.Bool(False, "");
tech_nm = Param.Int(45, "");
- freq_mhz = Param.Int(3000, "");
+ clock = Param.Clock('1000t', "");
block_size_bytes = Param.Int(64, "");
mem_size_mb = Param.Int("");
network = Param.RubyNetwork("")
diff -r 856ecd55b372 -r c1b464b8baad src/mem/ruby/system/System.cc
--- a/src/mem/ruby/system/System.cc Sat Dec 12 14:37:15 2009 -0800
+++ b/src/mem/ruby/system/System.cc Sat Dec 12 14:37:15 2009 -0800
@@ -60,7 +60,7 @@
int RubySystem::m_random_seed;
bool RubySystem::m_randomization;
int RubySystem::m_tech_nm;
-int RubySystem::m_freq_mhz;
+Tick RubySystem::m_clock;
int RubySystem::m_block_size_bytes;
int RubySystem::m_block_size_bits;
uint64 RubySystem::m_memory_size_bytes;
@@ -93,7 +93,7 @@
srandom(m_random_seed);
m_randomization = p->randomization;
m_tech_nm = p->tech_nm;
- m_freq_mhz = p->freq_mhz;
+ m_clock = p->clock;
m_block_size_bytes = p->block_size_bytes;
assert(is_power_of_2(m_block_size_bytes));
@@ -108,8 +108,9 @@
m_tracer_ptr = p->tracer;
//assert( g_debug_ptr != NULL);
- g_system_ptr = this;
- m_mem_vec_ptr = new MemoryVector;
+ g_eventQueue_ptr = new RubyEventQueue(m_clock);
+ g_system_ptr = this;
+ m_mem_vec_ptr = new MemoryVector;
m_mem_vec_ptr->setSize(m_memory_size_bytes);
/* object contruction is broken into two steps (Constructor and init) to
avoid cyclic dependencies
@@ -246,7 +247,7 @@
out << " random_seed: " << m_random_seed << endl;
out << " randomization: " << m_randomization << endl;
out << " tech_nm: " << m_tech_nm << endl;
- out << " freq_mhz: " << m_freq_mhz << endl;
+ out << " cycle_period: " << m_clock << endl;
out << " block_size_bytes: " << m_block_size_bytes << endl;
out << " block_size_bits: " << m_block_size_bits << endl;
out << " memory_size_bytes: " << m_memory_size_bytes << endl;
diff -r 856ecd55b372 -r c1b464b8baad src/mem/ruby/system/System.hh
--- a/src/mem/ruby/system/System.hh Sat Dec 12 14:37:15 2009 -0800
+++ b/src/mem/ruby/system/System.hh Sat Dec 12 14:37:15 2009 -0800
@@ -97,7 +97,6 @@
static int getRandomSeed() { return m_random_seed; }
static int getRandomization() { return m_randomization; }
static int getTechNm() { return m_tech_nm; }
- static int getFreqMhz() { return m_freq_mhz; }
static int getBlockSizeBytes() { return m_block_size_bytes; }
static int getBlockSizeBits() { return m_block_size_bits; }
static uint64 getMemorySizeBytes() { return m_memory_size_bytes; }
@@ -164,7 +163,7 @@
static int m_random_seed;
static bool m_randomization;
static int m_tech_nm;
- static int m_freq_mhz;
+ static Tick m_clock;
static int m_block_size_bytes;
static int m_block_size_bits;
static uint64 m_memory_size_bytes;
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev