mem-ruby: Move Bloom Filters to base
All Bloom Filters are completely independent of Ruby, and therefore can be used everywhere. As a side effect, Ruby was not using the filters, so their dependency was removed. Change-Id: Ic5f430610c33c0791fb81c79101ebe737189497e Signed-off-by: Daniel R. Carvalho <odanrc@yahoo.com.br> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18875 Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Jason Lowe-Power <jason@lowepower.com>
This commit is contained in:
committed by
Daniel Carvalho
parent
9b9045bb67
commit
8d65e51f7f
@@ -33,7 +33,7 @@ from m5.SimObject import SimObject
|
||||
class BloomFilterBase(SimObject):
|
||||
type = 'BloomFilterBase'
|
||||
abstract = True
|
||||
cxx_header = "mem/ruby/filters/AbstractBloomFilter.hh"
|
||||
cxx_header = "base/filters/base.hh"
|
||||
cxx_class = 'BloomFilter::Base'
|
||||
|
||||
size = Param.Int(4096, "Number of entries in the filter")
|
||||
@@ -47,7 +47,7 @@ class BloomFilterBase(SimObject):
|
||||
class BloomFilterBlock(BloomFilterBase):
|
||||
type = 'BloomFilterBlock'
|
||||
cxx_class = 'BloomFilter::Block'
|
||||
cxx_header = "mem/ruby/filters/BlockBloomFilter.hh"
|
||||
cxx_header = "base/filters/block_bloom_filter.hh"
|
||||
|
||||
masks_lsbs = VectorParam.Unsigned([Self.offset_bits,
|
||||
2 * Self.offset_bits], "Position of the LSB of each mask")
|
||||
@@ -57,12 +57,12 @@ class BloomFilterBlock(BloomFilterBase):
|
||||
class BloomFilterBulk(BloomFilterBase):
|
||||
type = 'BloomFilterBulk'
|
||||
cxx_class = 'BloomFilter::Bulk'
|
||||
cxx_header = "mem/ruby/filters/BulkBloomFilter.hh"
|
||||
cxx_header = "base/filters/bulk_bloom_filter.hh"
|
||||
|
||||
class BloomFilterLSBCounting(BloomFilterBase):
|
||||
type = 'BloomFilterLSBCounting'
|
||||
cxx_class = 'BloomFilter::LSBCounting'
|
||||
cxx_header = "mem/ruby/filters/LSB_CountingBloomFilter.hh"
|
||||
cxx_header = "base/filters/lsb_counting_bloom_filter.hh"
|
||||
|
||||
# By default use 4-bit saturating counters
|
||||
max_value = Param.Int(15, "Maximum value of the filter entries")
|
||||
@@ -73,7 +73,7 @@ class BloomFilterLSBCounting(BloomFilterBase):
|
||||
class BloomFilterMultiBitSel(BloomFilterBase):
|
||||
type = 'BloomFilterMultiBitSel'
|
||||
cxx_class = 'BloomFilter::MultiBitSel'
|
||||
cxx_header = "mem/ruby/filters/MultiBitSelBloomFilter.hh"
|
||||
cxx_header = "base/filters/multi_bit_sel_bloom_filter.hh"
|
||||
|
||||
num_hashes = Param.Int(4, "Number of hashes")
|
||||
threshold = Self.num_hashes
|
||||
@@ -83,12 +83,12 @@ class BloomFilterMultiBitSel(BloomFilterBase):
|
||||
class BloomFilterH3(BloomFilterMultiBitSel):
|
||||
type = 'BloomFilterH3'
|
||||
cxx_class = 'BloomFilter::H3'
|
||||
cxx_header = "mem/ruby/filters/H3BloomFilter.hh"
|
||||
cxx_header = "base/filters/h3_bloom_filter.hh"
|
||||
|
||||
class BloomFilterMultiGrain(BloomFilterBase):
|
||||
type = 'BloomFilterMultiGrain'
|
||||
cxx_class = 'BloomFilter::MultiGrain'
|
||||
cxx_header = "mem/ruby/filters/MultiGrainBloomFilter.hh"
|
||||
class BloomFilterMulti(BloomFilterBase):
|
||||
type = 'BloomFilterMulti'
|
||||
cxx_class = 'BloomFilter::Multi'
|
||||
cxx_header = "base/filters/multi_bloom_filter.hh"
|
||||
|
||||
# The base filter should not be used, since this filter is the combination
|
||||
# of multiple sub-filters, so we use a dummy value
|
||||
@@ -1,5 +1,6 @@
|
||||
# -*- mode:python -*-
|
||||
|
||||
# Copyright (c) 2019 Inria
|
||||
# Copyright (c) 2009 The Hewlett-Packard Development Company
|
||||
# All rights reserved.
|
||||
#
|
||||
@@ -27,17 +28,15 @@
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
# Authors: Nathan Binkert
|
||||
# Daniel Carvalho
|
||||
|
||||
Import('*')
|
||||
|
||||
if env['PROTOCOL'] == 'None':
|
||||
Return()
|
||||
|
||||
SimObject('BloomFilters.py')
|
||||
|
||||
Source('BlockBloomFilter.cc')
|
||||
Source('BulkBloomFilter.cc')
|
||||
Source('H3BloomFilter.cc')
|
||||
Source('LSB_CountingBloomFilter.cc')
|
||||
Source('MultiBitSelBloomFilter.cc')
|
||||
Source('MultiGrainBloomFilter.cc')
|
||||
Source('block_bloom_filter.cc')
|
||||
Source('bulk_bloom_filter.cc')
|
||||
Source('h3_bloom_filter.cc')
|
||||
Source('lsb_counting_bloom_filter.cc')
|
||||
Source('multi_bit_sel_bloom_filter.cc')
|
||||
Source('multi_bloom_filter.cc')
|
||||
@@ -29,8 +29,8 @@
|
||||
* Authors: Daniel Carvalho
|
||||
*/
|
||||
|
||||
#ifndef __MEM_RUBY_FILTERS_ABSTRACTBLOOMFILTER_HH__
|
||||
#define __MEM_RUBY_FILTERS_ABSTRACTBLOOMFILTER_HH__
|
||||
#ifndef __BASE_FILTERS_BASE_HH__
|
||||
#define __BASE_FILTERS_BASE_HH__
|
||||
|
||||
#include <vector>
|
||||
|
||||
@@ -148,4 +148,4 @@ class Base : public SimObject
|
||||
|
||||
} // namespace BloomFilter
|
||||
|
||||
#endif // __MEM_RUBY_FILTERS_ABSTRACTBLOOMFILTER_HH__
|
||||
#endif // __BASE_FILTERS_BASE_HH__
|
||||
@@ -1,4 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019 Inria
|
||||
* Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
|
||||
* All rights reserved.
|
||||
*
|
||||
@@ -24,9 +25,11 @@
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Daniel Carvalho
|
||||
*/
|
||||
|
||||
#include "mem/ruby/filters/BlockBloomFilter.hh"
|
||||
#include "base/filters/block_bloom_filter.hh"
|
||||
|
||||
#include "base/bitfield.hh"
|
||||
#include "base/logging.hh"
|
||||
@@ -1,4 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019 Inria
|
||||
* Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
|
||||
* All rights reserved.
|
||||
*
|
||||
@@ -24,14 +25,16 @@
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Daniel Carvalho
|
||||
*/
|
||||
|
||||
#ifndef __MEM_RUBY_FILTERS_BLOCKBLOOMFILTER_HH__
|
||||
#define __MEM_RUBY_FILTERS_BLOCKBLOOMFILTER_HH__
|
||||
#ifndef __BASE_FILTERS_BLOCK_BLOOM_FILTER_HH__
|
||||
#define __BASE_FILTERS_BLOCK_BLOOM_FILTER_HH__
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "mem/ruby/filters/AbstractBloomFilter.hh"
|
||||
#include "base/filters/base.hh"
|
||||
|
||||
struct BloomFilterBlockParams;
|
||||
|
||||
@@ -69,4 +72,4 @@ class Block : public Base
|
||||
|
||||
} // namespace BloomFilter
|
||||
|
||||
#endif // __MEM_RUBY_FILTERS_BLOCKBLOOMFILTER_HH__
|
||||
#endif // __BASE_FILTERS_BLOCK_BLOOM_FILTER_HH__
|
||||
@@ -1,4 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019 Inria
|
||||
* Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
|
||||
* All rights reserved.
|
||||
*
|
||||
@@ -24,9 +25,13 @@
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Daniel Carvalho
|
||||
*/
|
||||
|
||||
#include "mem/ruby/filters/BulkBloomFilter.hh"
|
||||
#include "base/filters/bulk_bloom_filter.hh"
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include <limits>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019 Inria
|
||||
* Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
|
||||
* All rights reserved.
|
||||
*
|
||||
@@ -24,14 +25,14 @@
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Daniel Carvalho
|
||||
*/
|
||||
|
||||
#ifndef __MEM_RUBY_FILTERS_BULKBLOOMFILTER_HH__
|
||||
#define __MEM_RUBY_FILTERS_BULKBLOOMFILTER_HH__
|
||||
#ifndef __BASE_FILTERS_BULK_BLOOM_FILTER_HH__
|
||||
#define __BASE_FILTERS_BULK_BLOOM_FILTER_HH__
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "mem/ruby/filters/AbstractBloomFilter.hh"
|
||||
#include "base/filters/base.hh"
|
||||
|
||||
struct BloomFilterBulkParams;
|
||||
|
||||
@@ -62,4 +63,4 @@ class Bulk : public Base
|
||||
|
||||
} // namespace BloomFilter
|
||||
|
||||
#endif // __MEM_RUBY_FILTERS_BULKBLOOMFILTER_HH__
|
||||
#endif // __BASE_FILTERS_BULK_BLOOM_FILTER_HH__
|
||||
@@ -1,4 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019 Inria
|
||||
* Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
|
||||
* All rights reserved.
|
||||
*
|
||||
@@ -24,14 +25,16 @@
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Daniel Carvalho
|
||||
*/
|
||||
|
||||
#include "mem/ruby/filters/H3BloomFilter.hh"
|
||||
#include "base/filters/h3_bloom_filter.hh"
|
||||
|
||||
#include <limits>
|
||||
|
||||
#include "base/logging.hh"
|
||||
#include "base/bitfield.hh"
|
||||
#include "base/logging.hh"
|
||||
#include "params/BloomFilterH3.hh"
|
||||
|
||||
namespace BloomFilter {
|
||||
@@ -1,4 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019 Inria
|
||||
* Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
|
||||
* All rights reserved.
|
||||
*
|
||||
@@ -24,12 +25,14 @@
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Daniel Carvalho
|
||||
*/
|
||||
|
||||
#ifndef __MEM_RUBY_FILTERS_H3BLOOMFILTER_HH__
|
||||
#define __MEM_RUBY_FILTERS_H3BLOOMFILTER_HH__
|
||||
#ifndef __BASE_FILTERS_H3_BLOOM_FILTER_HH__
|
||||
#define __BASE_FILTERS_H3_BLOOM_FILTER_HH__
|
||||
|
||||
#include "mem/ruby/filters/MultiBitSelBloomFilter.hh"
|
||||
#include "base/filters/multi_bit_sel_bloom_filter.hh"
|
||||
|
||||
struct BloomFilterH3Params;
|
||||
|
||||
@@ -51,4 +54,4 @@ class H3 : public MultiBitSel
|
||||
|
||||
} // namespace BloomFilter
|
||||
|
||||
#endif // __MEM_RUBY_FILTERS_H3BLOOMFILTER_HH__
|
||||
#endif // __BASE_FILTERS_H3_BLOOM_FILTER_HH__
|
||||
@@ -1,4 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019 Inria
|
||||
* Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
|
||||
* All rights reserved.
|
||||
*
|
||||
@@ -24,9 +25,11 @@
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Daniel Carvalho
|
||||
*/
|
||||
|
||||
#include "mem/ruby/filters/LSB_CountingBloomFilter.hh"
|
||||
#include "base/filters/lsb_counting_bloom_filter.hh"
|
||||
|
||||
#include "base/bitfield.hh"
|
||||
#include "params/BloomFilterLSBCounting.hh"
|
||||
@@ -1,4 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019 Inria
|
||||
* Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
|
||||
* All rights reserved.
|
||||
*
|
||||
@@ -24,12 +25,14 @@
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Daniel Carvalho
|
||||
*/
|
||||
|
||||
#ifndef __MEM_RUBY_FILTERS_LSB_COUNTINGBLOOMFILTER_HH__
|
||||
#define __MEM_RUBY_FILTERS_LSB_COUNTINGBLOOMFILTER_HH__
|
||||
#ifndef __BASE_FILTERS_LSB_COUNTING_BLOOM_FILTER_HH__
|
||||
#define __BASE_FILTERS_LSB_COUNTING_BLOOM_FILTER_HH__
|
||||
|
||||
#include "mem/ruby/filters/AbstractBloomFilter.hh"
|
||||
#include "base/filters/base.hh"
|
||||
|
||||
struct BloomFilterLSBCountingParams;
|
||||
|
||||
@@ -56,4 +59,4 @@ class LSBCounting : public Base
|
||||
|
||||
} // namespace BloomFilter
|
||||
|
||||
#endif //__MEM_RUBY_FILTERS_LSB_COUNTINGBLOOMFILTER_HH__
|
||||
#endif //__BASE_FILTERS_LSB_COUNTING_BLOOM_FILTER_HH__
|
||||
@@ -1,4 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019 Inria
|
||||
* Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
|
||||
* All rights reserved.
|
||||
*
|
||||
@@ -24,9 +25,11 @@
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Daniel Carvalho
|
||||
*/
|
||||
|
||||
#include "mem/ruby/filters/MultiBitSelBloomFilter.hh"
|
||||
#include "base/filters/multi_bit_sel_bloom_filter.hh"
|
||||
|
||||
#include <limits>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019 Inria
|
||||
* Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
|
||||
* All rights reserved.
|
||||
*
|
||||
@@ -24,12 +25,14 @@
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Daniel Carvalho
|
||||
*/
|
||||
|
||||
#ifndef __MEM_RUBY_FILTERS_MULTIBITSELBLOOMFILTER_HH__
|
||||
#define __MEM_RUBY_FILTERS_MULTIBITSELBLOOMFILTER_HH__
|
||||
#ifndef __BASE_FILTERS_MULTI_BIT_SEL_BLOOM_FILTER_HH__
|
||||
#define __BASE_FILTERS_MULTI_BIT_SEL_BLOOM_FILTER_HH__
|
||||
|
||||
#include "mem/ruby/filters/AbstractBloomFilter.hh"
|
||||
#include "base/filters/base.hh"
|
||||
|
||||
struct BloomFilterMultiBitSelParams;
|
||||
|
||||
@@ -76,4 +79,4 @@ class MultiBitSel : public Base
|
||||
|
||||
} // namespace BloomFilter
|
||||
|
||||
#endif // __MEM_RUBY_FILTERS_MULTIBITSELBLOOMFILTER_HH__
|
||||
#endif // __BASE_FILTERS_MULTI_BIT_SEL_BLOOM_FILTER_HH__
|
||||
@@ -1,4 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019 Inria
|
||||
* Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
|
||||
* All rights reserved.
|
||||
*
|
||||
@@ -24,26 +25,28 @@
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Daniel Carvalho
|
||||
*/
|
||||
|
||||
#include "mem/ruby/filters/MultiGrainBloomFilter.hh"
|
||||
#include "base/filters/multi_bloom_filter.hh"
|
||||
|
||||
#include "base/logging.hh"
|
||||
#include "params/BloomFilterMultiGrain.hh"
|
||||
#include "params/BloomFilterMulti.hh"
|
||||
|
||||
namespace BloomFilter {
|
||||
|
||||
MultiGrain::MultiGrain(const BloomFilterMultiGrainParams* p)
|
||||
Multi::Multi(const BloomFilterMultiParams* p)
|
||||
: Base(p), filters(p->filters)
|
||||
{
|
||||
}
|
||||
|
||||
MultiGrain::~MultiGrain()
|
||||
Multi::~Multi()
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
MultiGrain::clear()
|
||||
Multi::clear()
|
||||
{
|
||||
for (auto& sub_filter : filters) {
|
||||
sub_filter->clear();
|
||||
@@ -51,9 +54,9 @@ MultiGrain::clear()
|
||||
}
|
||||
|
||||
void
|
||||
MultiGrain::merge(const Base* other)
|
||||
Multi::merge(const Base* other)
|
||||
{
|
||||
auto* cast_other = static_cast<const MultiGrain*>(other);
|
||||
auto* cast_other = static_cast<const Multi*>(other);
|
||||
assert(filters.size() == cast_other->filters.size());
|
||||
for (int i = 0; i < filters.size(); ++i){
|
||||
filters[i]->merge(cast_other->filters[i]);
|
||||
@@ -61,7 +64,7 @@ MultiGrain::merge(const Base* other)
|
||||
}
|
||||
|
||||
void
|
||||
MultiGrain::set(Addr addr)
|
||||
Multi::set(Addr addr)
|
||||
{
|
||||
for (auto& sub_filter : filters) {
|
||||
sub_filter->set(addr);
|
||||
@@ -69,7 +72,7 @@ MultiGrain::set(Addr addr)
|
||||
}
|
||||
|
||||
void
|
||||
MultiGrain::unset(Addr addr)
|
||||
Multi::unset(Addr addr)
|
||||
{
|
||||
for (auto& sub_filter : filters) {
|
||||
sub_filter->unset(addr);
|
||||
@@ -77,7 +80,7 @@ MultiGrain::unset(Addr addr)
|
||||
}
|
||||
|
||||
bool
|
||||
MultiGrain::isSet(Addr addr) const
|
||||
Multi::isSet(Addr addr) const
|
||||
{
|
||||
int count = 0;
|
||||
for (const auto& sub_filter : filters) {
|
||||
@@ -89,7 +92,7 @@ MultiGrain::isSet(Addr addr) const
|
||||
}
|
||||
|
||||
int
|
||||
MultiGrain::getCount(Addr addr) const
|
||||
Multi::getCount(Addr addr) const
|
||||
{
|
||||
int count = 0;
|
||||
for (const auto& sub_filter : filters) {
|
||||
@@ -99,7 +102,7 @@ MultiGrain::getCount(Addr addr) const
|
||||
}
|
||||
|
||||
int
|
||||
MultiGrain::getTotalCount() const
|
||||
Multi::getTotalCount() const
|
||||
{
|
||||
int count = 0;
|
||||
for (const auto& sub_filter : filters) {
|
||||
@@ -110,9 +113,9 @@ MultiGrain::getTotalCount() const
|
||||
|
||||
} // namespace BloomFilter
|
||||
|
||||
BloomFilter::MultiGrain*
|
||||
BloomFilterMultiGrainParams::create()
|
||||
BloomFilter::Multi*
|
||||
BloomFilterMultiParams::create()
|
||||
{
|
||||
return new BloomFilter::MultiGrain(this);
|
||||
return new BloomFilter::Multi(this);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019 Inria
|
||||
* Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
|
||||
* All rights reserved.
|
||||
*
|
||||
@@ -24,16 +25,18 @@
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Daniel Carvalho
|
||||
*/
|
||||
|
||||
#ifndef __MEM_RUBY_FILTERS_MULTIGRAINBLOOMFILTER_HH__
|
||||
#define __MEM_RUBY_FILTERS_MULTIGRAINBLOOMFILTER_HH__
|
||||
#ifndef __BASE_FILTERS_MULTI_BLOOM_FILTER_HH__
|
||||
#define __BASE_FILTERS_MULTI_BLOOM_FILTER_HH__
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "mem/ruby/filters/AbstractBloomFilter.hh"
|
||||
#include "base/filters/base.hh"
|
||||
|
||||
struct BloomFilterMultiGrainParams;
|
||||
struct BloomFilterMultiParams;
|
||||
|
||||
namespace BloomFilter {
|
||||
|
||||
@@ -42,11 +45,11 @@ namespace BloomFilter {
|
||||
* functionality. The results of the operations are the results of applying
|
||||
* them to each sub-filter.
|
||||
*/
|
||||
class MultiGrain : public Base
|
||||
class Multi : public Base
|
||||
{
|
||||
public:
|
||||
MultiGrain(const BloomFilterMultiGrainParams* p);
|
||||
~MultiGrain();
|
||||
Multi(const BloomFilterMultiParams* p);
|
||||
~Multi();
|
||||
|
||||
void clear() override;
|
||||
void set(Addr addr) override;
|
||||
@@ -64,4 +67,4 @@ class MultiGrain : public Base
|
||||
|
||||
} // namespace BloomFilter
|
||||
|
||||
#endif // __MEM_RUBY_FILTERS_MULTIGRAINBLOOMFILTER_HH__
|
||||
#endif // __BASE_FILTERS_MULTI_BLOOM_FILTER_HH__
|
||||
@@ -125,7 +125,6 @@ MakeInclude('common/MachineID.hh')
|
||||
MakeInclude('common/NetDest.hh')
|
||||
MakeInclude('common/Set.hh')
|
||||
MakeInclude('common/WriteMask.hh')
|
||||
MakeInclude('filters/AbstractBloomFilter.hh')
|
||||
MakeInclude('network/MessageBuffer.hh')
|
||||
MakeInclude('structures/CacheMemory.hh')
|
||||
MakeInclude('structures/DirectoryMemory.hh')
|
||||
|
||||
@@ -233,15 +233,6 @@ structure (TimerTable, inport="yes", external = "yes") {
|
||||
bool isSet(Addr);
|
||||
}
|
||||
|
||||
structure (AbstractBloomFilter, external = "yes") {
|
||||
void clear(int);
|
||||
void set(Addr, int);
|
||||
void unset(Addr, int);
|
||||
|
||||
bool isSet(Addr, int);
|
||||
int getCount(Addr, int);
|
||||
}
|
||||
|
||||
structure (Prefetcher, external = "yes") {
|
||||
void observeMiss(Addr, RubyRequestType);
|
||||
void observePfHit(Addr);
|
||||
|
||||
Reference in New Issue
Block a user