From 226981b2a65ee4c544bc595d7718de8225fda0b0 Mon Sep 17 00:00:00 2001 From: Polina Dudnik <pdudnik@gmail.com> Date: Mon, 13 Jul 2009 11:13:29 -0500 Subject: Reintegrated Derek's functional implementation of atomics with a minor change: don't clear lock on failure --- src/mem/ruby/libruby.cc | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/mem/ruby/libruby.cc') diff --git a/src/mem/ruby/libruby.cc b/src/mem/ruby/libruby.cc index 987f4fd10..d21b29dec 100644 --- a/src/mem/ruby/libruby.cc +++ b/src/mem/ruby/libruby.cc @@ -19,8 +19,10 @@ string RubyRequestType_to_string(const RubyRequestType& obj) return "LD"; case RubyRequestType_ST: return "ST"; - case RubyRequestType_RMW: - return "RMW"; + case RubyRequestType_RMW_Read: + return "RMW_Read"; + case RubyRequestType_RMW_Write: + return "RMW_Write"; case RubyRequestType_NULL: default: assert(0); @@ -36,8 +38,10 @@ RubyRequestType string_to_RubyRequestType(std::string str) return RubyRequestType_LD; else if (str == "ST") return RubyRequestType_ST; - else if (str == "RMW") - return RubyRequestType_RMW; + else if (str == "RMW_Read") + return RubyRequestType_RMW_Read; + else if (str == "RMW_Write") + return RubyRequestType_RMW_Write; else assert(0); return RubyRequestType_NULL; -- cgit v1.2.3 From 7606c71ea593f46843a0fa91983ae89139271728 Mon Sep 17 00:00:00 2001 From: Polina Dudnik <pdudnik@gmail.com> Date: Mon, 13 Jul 2009 11:37:56 -0500 Subject: Replaced RMW with Locked. RMW will be used for the coherence-aided atomics other than LLSC --- src/mem/ruby/libruby.cc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src/mem/ruby/libruby.cc') diff --git a/src/mem/ruby/libruby.cc b/src/mem/ruby/libruby.cc index d21b29dec..d35600960 100644 --- a/src/mem/ruby/libruby.cc +++ b/src/mem/ruby/libruby.cc @@ -19,10 +19,10 @@ string RubyRequestType_to_string(const RubyRequestType& obj) return "LD"; case RubyRequestType_ST: return "ST"; - case RubyRequestType_RMW_Read: - return "RMW_Read"; - case RubyRequestType_RMW_Write: - return "RMW_Write"; + case RubyRequestType_Locked_Read: + return "Locked_Read"; + case RubyRequestType_Locked_Write: + return "Locked_Write"; case RubyRequestType_NULL: default: assert(0); @@ -38,10 +38,10 @@ RubyRequestType string_to_RubyRequestType(std::string str) return RubyRequestType_LD; else if (str == "ST") return RubyRequestType_ST; - else if (str == "RMW_Read") - return RubyRequestType_RMW_Read; - else if (str == "RMW_Write") - return RubyRequestType_RMW_Write; + else if (str == "Locked_Read") + return RubyRequestType_Locked_Read; + else if (str == "Locked_Write") + return RubyRequestType_Locked_Write; else assert(0); return RubyRequestType_NULL; -- cgit v1.2.3 From 9a675a0391aa0c0463baf8bac0b9209b675306a8 Mon Sep 17 00:00:00 2001 From: Polina Dudnik <pdudnik@gmail.com> Date: Mon, 13 Jul 2009 12:50:10 -0500 Subject: Changes to add tracing and replaying command-line options Trace is automatically ended upon a manual checkpoint --- src/mem/ruby/libruby.cc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/mem/ruby/libruby.cc') diff --git a/src/mem/ruby/libruby.cc b/src/mem/ruby/libruby.cc index d35600960..185797f59 100644 --- a/src/mem/ruby/libruby.cc +++ b/src/mem/ruby/libruby.cc @@ -9,6 +9,7 @@ #include "mem/ruby/eventqueue/RubyEventQueue.hh" #include "mem/ruby/system/MemoryVector.hh" #include "mem/ruby/common/Address.hh" +#include "mem/ruby/recorder/Tracer.hh" string RubyRequestType_to_string(const RubyRequestType& obj) { @@ -204,6 +205,20 @@ void libruby_print_stats(std::ostream & out) { RubySystem::printStats(out); } +void libruby_playback_trace(char * trace_filename) +{ + RubySystem::getTracer()->playbackTrace(trace_filename); +} + +void libruby_start_tracing(char * record_filename) { + // start the trace + RubySystem::getTracer()->startTrace(record_filename); +} + +void libruby_stop_tracing() { + // start the trace + RubySystem::getTracer()->stopTrace(); +} uint64_t libruby_get_time() { return RubySystem::getCycleCount(0); -- cgit v1.2.3 From 5f551d9ca2b61fc97b9530334e538195a84589b3 Mon Sep 17 00:00:00 2001 From: Polina Dudnik <pdudnik@gmail.com> Date: Mon, 13 Jul 2009 17:22:29 -0500 Subject: 1. Got rid of unused functions in DirectoryMemory 2. Reintroduced RMW_Read and RMW_Write 3. Defined -2 in the Sequencer as well as made a note about mandatory queue Did not address the issues in the slicc because remaking the atomics altogether to allow multiple processors to issue atomic requests at once --- src/mem/ruby/libruby.cc | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/mem/ruby/libruby.cc') diff --git a/src/mem/ruby/libruby.cc b/src/mem/ruby/libruby.cc index 185797f59..b867fec34 100644 --- a/src/mem/ruby/libruby.cc +++ b/src/mem/ruby/libruby.cc @@ -24,6 +24,10 @@ string RubyRequestType_to_string(const RubyRequestType& obj) return "Locked_Read"; case RubyRequestType_Locked_Write: return "Locked_Write"; + case RubyRequestType_RMW_Read: + return "RMW_Read"; + case RubyRequestType_RMW_Write: + return "RMW_Write"; case RubyRequestType_NULL: default: assert(0); @@ -43,6 +47,10 @@ RubyRequestType string_to_RubyRequestType(std::string str) return RubyRequestType_Locked_Read; else if (str == "Locked_Write") return RubyRequestType_Locked_Write; + else if (str == "RMW_Read") + return RubyRequestType_RMW_Read; + else if (str == "RMW_Write") + return RubyRequestType_RMW_Write; else assert(0); return RubyRequestType_NULL; -- cgit v1.2.3