diff --git a/src/mem/ruby/filters/MultiBitSelBloomFilter.hh b/src/mem/ruby/filters/MultiBitSelBloomFilter.hh --- a/src/mem/ruby/filters/MultiBitSelBloomFilter.hh +++ b/src/mem/ruby/filters/MultiBitSelBloomFilter.hh @@ -40,7 +40,8 @@ class MultiBitSelBloomFilter : public AbstractBloomFilter { public: - MultiBitSelBloomFilter(std::string config); + MultiBitSelBloomFilter(int size, int hashes, int skip_bits, + bool parallel); ~MultiBitSelBloomFilter(); void clear(); @@ -80,7 +81,7 @@ int m_par_filter_size; int m_par_filter_size_bits; - bool isParallel; + bool m_is_parallel; }; #endif // __MEM_RUBY_FILTERS_MULTIBITSELBLOOMFILTER_HH__ # Node ID 6fc675f956dcb68647abb7f69a6f3fe89fb1a318 # Parent 004c06dd157ac2ffa4f2f4ead77edfa1e2db99f0 diff --git a/src/mem/ruby/filters/MultiBitSelBloomFilter.cc b/src/mem/ruby/filters/MultiBitSelBloomFilter.cc --- a/src/mem/ruby/filters/MultiBitSelBloomFilter.cc +++ b/src/mem/ruby/filters/MultiBitSelBloomFilter.cc @@ -34,25 +34,13 @@ using namespace std; -MultiBitSelBloomFilter::MultiBitSelBloomFilter(string str) +MultiBitSelBloomFilter::MultiBitSelBloomFilter(int size, int hashes, + int skip_bits, bool parallel) { - vector items; - tokenize(items, str, '_'); - assert(items.size() == 4); - - // head contains filter size, tail contains bit offset from block number - m_filter_size = atoi(items[0].c_str()); - m_num_hashes = atoi(items[1].c_str()); - m_skip_bits = atoi(items[2].c_str()); - - if (items[3] == "Regular") { - isParallel = false; - } else if (items[3] == "Parallel") { - isParallel = true; - } else { - panic("ERROR: Incorrect config string for MultiBitSel Bloom! :%s", - str); - } + m_filter_size = size; + m_num_hashes = hashes; + m_skip_bits = skip_bits; + m_is_parallel = parallel; m_filter_size_bits = floorLog2(m_filter_size); @@ -175,7 +163,7 @@ int y = hash_bitsel(x, i, m_num_hashes, 30, m_filter_size_bits); //36-bit addresses, 6-bit cache lines - if (isParallel) { + if (m_is_parallel) { return (y % m_par_filter_size) + i*m_par_filter_size; } else { return y % m_filter_size;