changeset 19e532a296e0 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=19e532a296e0
description:
Automated merge with ssh://[email protected]/m5
diffstat:
3 files changed, 32 insertions(+)
src/mem/ruby/config/MI_example-homogeneous.rb | 7 +++++++
src/mem/ruby/config/TwoLevel_SplitL1UnifiedL2.rb | 7 +++++++
src/mem/ruby/system/CacheMemory.hh | 18 ++++++++++++++++++
diffs (102 lines):
diff -r e0c1c6d87649 -r 19e532a296e0
src/mem/ruby/config/MI_example-homogeneous.rb
--- a/src/mem/ruby/config/MI_example-homogeneous.rb Sun Aug 23 14:19:14
2009 -0700
+++ b/src/mem/ruby/config/MI_example-homogeneous.rb Tue Aug 25 10:10:23
2009 -0500
@@ -34,6 +34,13 @@
elsif $*[i] == "-m"
num_memories = $*[i+1].to_i
i = i+1
+ elsif $*[i] == "-R"
+ if $*[i+1] == "rand"
+ RubySystem.random_seed = "rand"
+ else
+ RubySystem.random_seed = $*[i+1].to_i
+ end
+ i = i+ 1
elsif $*[i] == "-s"
memory_size_mb = $*[i+1].to_i
i = i + 1
diff -r e0c1c6d87649 -r 19e532a296e0
src/mem/ruby/config/TwoLevel_SplitL1UnifiedL2.rb
--- a/src/mem/ruby/config/TwoLevel_SplitL1UnifiedL2.rb Sun Aug 23 14:19:14
2009 -0700
+++ b/src/mem/ruby/config/TwoLevel_SplitL1UnifiedL2.rb Tue Aug 25 10:10:23
2009 -0500
@@ -40,6 +40,13 @@
elsif $*[i] == "-p"
num_cores = $*[i+1].to_i
i = i+1
+ elsif $*[i] == "-R"
+ if $*[i+1] == "rand"
+ RubySystem.random_seed = "rand"
+ else
+ RubySystem.random_seed = $*[i+1].to_i
+ end
+ i = i+ 1
elsif $*[i] == "-s"
memory_size_mb = $*[i+1].to_i
i = i + 1
diff -r e0c1c6d87649 -r 19e532a296e0 src/mem/ruby/system/CacheMemory.hh
--- a/src/mem/ruby/system/CacheMemory.hh Sun Aug 23 14:19:14 2009 -0700
+++ b/src/mem/ruby/system/CacheMemory.hh Tue Aug 25 10:10:23 2009 -0500
@@ -156,6 +156,7 @@
// The first index is the # of cache lines.
// The second index is the the amount associativity.
+ m5::hash_map<Address, int> m_tag_index;
Vector<Vector<AbstractCacheEntry*> > m_cache;
Vector<Vector<int> > m_locked;
@@ -286,6 +287,12 @@
{
assert(tag == line_address(tag));
// search the set for the tags
+ m5::hash_map<Address, int>::const_iterator it = m_tag_index.find(tag);
+ if (it != m_tag_index.end())
+ if (m_cache[cacheSet][it->second]->m_Permission !=
AccessPermission_NotPresent)
+ return it->second;
+ return -1; // Not found
+ /*
for (int i=0; i < m_cache_assoc; i++) {
if ((m_cache[cacheSet][i] != NULL) &&
(m_cache[cacheSet][i]->m_Address == tag) &&
@@ -294,6 +301,7 @@
}
}
return -1; // Not found
+ */
}
// Given a cache index: returns the index of the tag in a set.
@@ -303,11 +311,19 @@
{
assert(tag == line_address(tag));
// search the set for the tags
+ m5::hash_map<Address, int>::const_iterator it = m_tag_index.find(tag);
+ if (it != m_tag_index.end())
+ return it->second;
+ return -1; // Not found
+ /*
+ assert(tag == line_address(tag));
+ // search the set for the tags
for (int i=0; i < m_cache_assoc; i++) {
if (m_cache[cacheSet][i] != NULL && m_cache[cacheSet][i]->m_Address == tag)
return i;
}
return -1; // Not found
+ */
}
// PUBLIC METHODS
@@ -418,6 +434,7 @@
m_cache[cacheSet][i]->m_Address = address;
m_cache[cacheSet][i]->m_Permission = AccessPermission_Invalid;
m_locked[cacheSet][i] = -1;
+ m_tag_index[address] = i;
m_replacementPolicy_ptr->touch(cacheSet, i, g_eventQueue_ptr->getTime());
@@ -439,6 +456,7 @@
delete m_cache[cacheSet][location];
m_cache[cacheSet][location] = NULL;
m_locked[cacheSet][location] = -1;
+ m_tag_index.erase(address);
}
}
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev