Ruby: Make Address.hh independent of RubySystem
authorNilay Vaish <nilay@cs.wisc.edu>
Fri, 25 Feb 2011 23:51:56 +0000 (17:51 -0600)
committerNilay Vaish <nilay@cs.wisc.edu>
Fri, 25 Feb 2011 23:51:56 +0000 (17:51 -0600)
This patch changes Address.hh so that it is not dependent on RubySystem.
This dependence seems unecessary. All those functions that depend on
RubySystem have been moved to Address.cc file.

src/mem/ruby/common/Address.cc
src/mem/ruby/common/Address.hh
src/mem/ruby/filters/BlockBloomFilter.cc
src/mem/ruby/filters/BulkBloomFilter.cc
src/mem/ruby/filters/LSB_CountingBloomFilter.cc
src/mem/ruby/filters/MultiGrainBloomFilter.cc
src/mem/ruby/filters/NonCountingBloomFilter.cc

index 2d895cc3360dc2fdfc333998bab52903bfbd18b8..cc87f4ece882e90a1e6a5d83558aa69f242f7e8b 100644 (file)
  */
 
 #include "mem/ruby/common/Address.hh"
+#include "mem/ruby/system/System.hh"
+
+physical_address_t
+Address::getLineAddress() const
+{
+    return bitSelect(RubySystem::getBlockSizeBits(), ADDRESS_WIDTH);
+}
+
+physical_address_t
+Address::getOffset() const
+{
+    return bitSelect(0, RubySystem::getBlockSizeBits() - 1);
+}
+
+void
+Address::makeLineAddress()
+{
+    m_address = maskLowOrderBits(RubySystem::getBlockSizeBits());
+}
+
+// returns the next stride address based on line address
+void
+Address::makeNextStrideAddress(int stride)
+{
+    m_address = maskLowOrderBits(RubySystem::getBlockSizeBits())
+        + RubySystem::getBlockSizeBytes()*stride;
+}
+
+integer_t
+Address::memoryModuleIndex() const
+{
+    integer_t index =
+        bitSelect(RubySystem::getBlockSizeBits() +
+                  RubySystem::getMemorySizeBits(), ADDRESS_WIDTH);
+    assert (index >= 0);
+    return index;
+
+    // Index indexHighPortion =
+    //     address.bitSelect(MEMORY_SIZE_BITS - 1,
+    //                       PAGE_SIZE_BITS + NUMBER_OF_MEMORY_MODULE_BITS);
+    // Index indexLowPortion =
+    //     address.bitSelect(DATA_BLOCK_BITS, PAGE_SIZE_BITS - 1);
+    //
+    // Index index = indexLowPortion |
+    //     (indexHighPortion << (PAGE_SIZE_BITS - DATA_BLOCK_BITS));
+
+    /*
+      Round-robin mapping of addresses, at page size granularity
+
+ADDRESS_WIDTH    MEMORY_SIZE_BITS        PAGE_SIZE_BITS  DATA_BLOCK_BITS
+  |                    |                       |               |
+ \ /                  \ /                     \ /             \ /       0
+  -----------------------------------------------------------------------
+  |       unused        |xxxxxxxxxxxxxxx|       |xxxxxxxxxxxxxxx|       |
+  |                     |xxxxxxxxxxxxxxx|       |xxxxxxxxxxxxxxx|       |
+  -----------------------------------------------------------------------
+                        indexHighPortion         indexLowPortion
+                                        <------->
+                               NUMBER_OF_MEMORY_MODULE_BITS
+    */
+}
+
+void
+Address::print(std::ostream& out) const
+{
+    using namespace std;
+    out << "[" << hex << "0x" << m_address << "," << " line 0x"
+        << maskLowOrderBits(RubySystem::getBlockSizeBits()) << dec << "]"
+        << flush;
+}
 
 void
 Address::output(std::ostream& out) const
index 89e1929a0ed3eaf0866cef72ba32d240373cb065..38fc047e119e2670edce4575cc2f101dc9698206 100644 (file)
 #ifndef __MEM_RUBY_COMMON_ADDRESS_HH__
 #define __MEM_RUBY_COMMON_ADDRESS_HH__
 
+#include <cassert>
 #include <iomanip>
 
 #include "base/hashmap.hh"
 #include "mem/ruby/common/Global.hh"
 #include "mem/ruby/system/MachineID.hh"
 #include "mem/ruby/system/NodeID.hh"
-#include "mem/ruby/system/System.hh"
 
 const int ADDRESS_WIDTH = 64; // address width in bytes
 
@@ -67,31 +67,10 @@ class Address
     physical_address_t maskHighOrderBits(int number) const;
     physical_address_t shiftLowOrderBits(int number) const;
 
-    physical_address_t
-    getLineAddress() const
-    {
-        return bitSelect(RubySystem::getBlockSizeBits(), ADDRESS_WIDTH);
-    }
-
-    physical_address_t
-    getOffset() const
-    {
-        return bitSelect(0, RubySystem::getBlockSizeBits() - 1);
-    }
-
-    void
-    makeLineAddress()
-    {
-        m_address = maskLowOrderBits(RubySystem::getBlockSizeBits());
-    }
-
-    // returns the next stride address based on line address
-    void
-    makeNextStrideAddress(int stride)
-    {
-        m_address = maskLowOrderBits(RubySystem::getBlockSizeBits())
-            + RubySystem::getBlockSizeBytes()*stride;
-    }
+    physical_address_t getLineAddress() const;
+    physical_address_t getOffset() const;
+    void makeLineAddress();
+    void makeNextStrideAddress(int stride);
 
     int getBankSetNum() const;
     int getBankSetDist() const;
@@ -224,49 +203,6 @@ Address::shiftLowOrderBits(int number) const
     return (m_address >> number);
 }
 
-inline integer_t
-Address::memoryModuleIndex() const
-{
-    integer_t index =
-        bitSelect(RubySystem::getBlockSizeBits() +
-                  RubySystem::getMemorySizeBits(), ADDRESS_WIDTH);
-    assert (index >= 0);
-    return index;
-
-    // Index indexHighPortion =
-    //     address.bitSelect(MEMORY_SIZE_BITS - 1,
-    //                       PAGE_SIZE_BITS + NUMBER_OF_MEMORY_MODULE_BITS);
-    // Index indexLowPortion =
-    //     address.bitSelect(DATA_BLOCK_BITS, PAGE_SIZE_BITS - 1);
-    //
-    // Index index = indexLowPortion |
-    //     (indexHighPortion << (PAGE_SIZE_BITS - DATA_BLOCK_BITS));
-
-    /*
-      Round-robin mapping of addresses, at page size granularity
-
-ADDRESS_WIDTH    MEMORY_SIZE_BITS        PAGE_SIZE_BITS  DATA_BLOCK_BITS
-  |                    |                       |               |
- \ /                  \ /                     \ /             \ /       0
-  -----------------------------------------------------------------------
-  |       unused        |xxxxxxxxxxxxxxx|       |xxxxxxxxxxxxxxx|       |
-  |                     |xxxxxxxxxxxxxxx|       |xxxxxxxxxxxxxxx|       |
-  -----------------------------------------------------------------------
-                        indexHighPortion         indexLowPortion
-                                        <------->
-                               NUMBER_OF_MEMORY_MODULE_BITS
-    */
-}
-
-inline void
-Address::print(std::ostream& out) const
-{
-    using namespace std;
-    out << "[" << hex << "0x" << m_address << "," << " line 0x"
-        << maskLowOrderBits(RubySystem::getBlockSizeBits()) << dec << "]"
-        << flush;
-}
-
 class Address;
 namespace __hash_namespace {
 template <> struct hash<Address>
index fb49574bc35fca90fbe295f6875746b3365e70f0..d6ef9128ae0aba48e668c8ee1fe5a830f44f1e44 100644 (file)
@@ -29,6 +29,7 @@
 #include "base/intmath.hh"
 #include "base/str.hh"
 #include "mem/ruby/filters/BlockBloomFilter.hh"
+#include "mem/ruby/system/System.hh"
 
 using namespace std;
 
index a5daf4f6b9d338aa4eb5541dcf007a91822bef19..8b8f3c42dba706f66e673237c70834a6febb4dac 100644 (file)
@@ -31,6 +31,7 @@
 #include "base/intmath.hh"
 #include "base/str.hh"
 #include "mem/ruby/filters/BulkBloomFilter.hh"
+#include "mem/ruby/system/System.hh"
 
 using namespace std;
 
index 1e66e65d1f952badd4c47085ab3c9945f412a6cb..833680fb78359a31ee02d9cf3954c7796f90d494 100644 (file)
@@ -29,6 +29,7 @@
 #include "base/intmath.hh"
 #include "base/str.hh"
 #include "mem/ruby/filters/LSB_CountingBloomFilter.hh"
+#include "mem/ruby/system/System.hh"
 
 using namespace std;
 
index 693ab3fc8715a62846fa9e1a93341a2b79848931..4f87758533f61be479976ebe5070a761b7e10e85 100644 (file)
@@ -29,6 +29,7 @@
 #include "base/intmath.hh"
 #include "base/str.hh"
 #include "mem/ruby/filters/MultiGrainBloomFilter.hh"
+#include "mem/ruby/system/System.hh"
 
 using namespace std;
 
index 44b306fb8ed628ccca44947103b2fd460a6579ef..2461893575caec90cdf00dd0d7ba8924cb946b8f 100644 (file)
@@ -29,6 +29,7 @@
 #include "base/intmath.hh"
 #include "base/str.hh"
 #include "mem/ruby/filters/NonCountingBloomFilter.hh"
+#include "mem/ruby/system/System.hh"
 
 using namespace std;