Daniel Carvalho has submitted this change and it was merged. (
https://gem5-review.googlesource.com/c/public/gem5/+/18730 )
Change subject: mem-ruby: Standardize Bloom Filter deletion support
......................................................................
mem-ruby: Standardize Bloom Filter deletion support
Standard Bloom Filters do not support element deletion by default,
however some variants do. Allow calling the unset function with
all filters, and do nothing by default.
Change-Id: Icf4b0f8b997c4c70fa714b2576474810275db78b
Signed-off-by: Daniel R. Carvalho <[email protected]>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18730
Maintainer: Nikos Nikoleris <[email protected]>
Tested-by: kokoro <[email protected]>
Reviewed-by: Nikos Nikoleris <[email protected]>
---
M src/mem/ruby/filters/AbstractBloomFilter.hh
M src/mem/ruby/filters/BlockBloomFilter.hh
M src/mem/ruby/filters/BulkBloomFilter.cc
M src/mem/ruby/filters/BulkBloomFilter.hh
M src/mem/ruby/filters/H3BloomFilter.cc
M src/mem/ruby/filters/H3BloomFilter.hh
M src/mem/ruby/filters/LSB_CountingBloomFilter.hh
M src/mem/ruby/filters/MultiBitSelBloomFilter.cc
M src/mem/ruby/filters/MultiBitSelBloomFilter.hh
M src/mem/ruby/filters/MultiGrainBloomFilter.cc
M src/mem/ruby/filters/MultiGrainBloomFilter.hh
M src/mem/ruby/filters/NonCountingBloomFilter.hh
12 files changed, 12 insertions(+), 32 deletions(-)
Approvals:
Nikos Nikoleris: Looks good to me, approved; Looks good to me, approved
kokoro: Regressions pass
diff --git a/src/mem/ruby/filters/AbstractBloomFilter.hh
b/src/mem/ruby/filters/AbstractBloomFilter.hh
index 51c5e92..6da4a9d 100644
--- a/src/mem/ruby/filters/AbstractBloomFilter.hh
+++ b/src/mem/ruby/filters/AbstractBloomFilter.hh
@@ -40,7 +40,15 @@
virtual void clear() = 0;
virtual void merge(AbstractBloomFilter * other_filter) = 0;
virtual void set(Addr addr) = 0;
- virtual void unset(Addr addr) = 0;
+
+ /**
+ * Perform the filter specific function to clear the corresponding
+ * entries (can be multiple) of an address. By default a bloom
+ * filter does not support element deletion.
+ *
+ * @param addr The address being parsed.
+ */
+ virtual void unset(Addr addr) {};
virtual bool isSet(Addr addr) = 0;
virtual int getCount(Addr addr) = 0;
diff --git a/src/mem/ruby/filters/BlockBloomFilter.hh
b/src/mem/ruby/filters/BlockBloomFilter.hh
index bd24aa6..d015e1e 100644
--- a/src/mem/ruby/filters/BlockBloomFilter.hh
+++ b/src/mem/ruby/filters/BlockBloomFilter.hh
@@ -44,7 +44,7 @@
void clear();
void merge(AbstractBloomFilter * other_filter);
void set(Addr addr);
- void unset(Addr addr);
+ void unset(Addr addr) override;
bool isSet(Addr addr);
int getCount(Addr addr);
diff --git a/src/mem/ruby/filters/BulkBloomFilter.cc
b/src/mem/ruby/filters/BulkBloomFilter.cc
index 4a80d53..a7e0278 100644
--- a/src/mem/ruby/filters/BulkBloomFilter.cc
+++ b/src/mem/ruby/filters/BulkBloomFilter.cc
@@ -91,12 +91,6 @@
m_filter[c1] = 1;
}
-void
-BulkBloomFilter::unset(Addr addr)
-{
- // not used
-}
-
bool
BulkBloomFilter::isSet(Addr addr)
{
diff --git a/src/mem/ruby/filters/BulkBloomFilter.hh
b/src/mem/ruby/filters/BulkBloomFilter.hh
index 2316221..683bbe1 100644
--- a/src/mem/ruby/filters/BulkBloomFilter.hh
+++ b/src/mem/ruby/filters/BulkBloomFilter.hh
@@ -44,7 +44,6 @@
void clear();
void merge(AbstractBloomFilter * other_filter);
void set(Addr addr);
- void unset(Addr addr);
bool isSet(Addr addr);
int getCount(Addr addr);
diff --git a/src/mem/ruby/filters/H3BloomFilter.cc
b/src/mem/ruby/filters/H3BloomFilter.cc
index 91aa168..6fa182f 100644
--- a/src/mem/ruby/filters/H3BloomFilter.cc
+++ b/src/mem/ruby/filters/H3BloomFilter.cc
@@ -423,12 +423,6 @@
}
}
-void
-H3BloomFilter::unset(Addr addr)
-{
- panic("ERROR: Unset should never be called in a Bloom filter");
-}
-
bool
H3BloomFilter::isSet(Addr addr)
{
diff --git a/src/mem/ruby/filters/H3BloomFilter.hh
b/src/mem/ruby/filters/H3BloomFilter.hh
index efbdec3..b9890e7 100644
--- a/src/mem/ruby/filters/H3BloomFilter.hh
+++ b/src/mem/ruby/filters/H3BloomFilter.hh
@@ -44,7 +44,6 @@
void clear();
void merge(AbstractBloomFilter * other_filter);
void set(Addr addr);
- void unset(Addr addr);
bool isSet(Addr addr);
int getCount(Addr addr);
diff --git a/src/mem/ruby/filters/LSB_CountingBloomFilter.hh
b/src/mem/ruby/filters/LSB_CountingBloomFilter.hh
index 48e8380..03602a3 100644
--- a/src/mem/ruby/filters/LSB_CountingBloomFilter.hh
+++ b/src/mem/ruby/filters/LSB_CountingBloomFilter.hh
@@ -44,7 +44,7 @@
void clear();
void merge(AbstractBloomFilter * other_filter);
void set(Addr addr);
- void unset(Addr addr);
+ void unset(Addr addr) override;
bool isSet(Addr addr);
int getCount(Addr addr);
diff --git a/src/mem/ruby/filters/MultiBitSelBloomFilter.cc
b/src/mem/ruby/filters/MultiBitSelBloomFilter.cc
index f46442e..3dc392f 100644
--- a/src/mem/ruby/filters/MultiBitSelBloomFilter.cc
+++ b/src/mem/ruby/filters/MultiBitSelBloomFilter.cc
@@ -78,12 +78,6 @@
}
}
-void
-MultiBitSelBloomFilter::unset(Addr addr)
-{
- panic("ERROR: Unset should never be called in a Bloom filter");
-}
-
bool
MultiBitSelBloomFilter::isSet(Addr addr)
{
diff --git a/src/mem/ruby/filters/MultiBitSelBloomFilter.hh
b/src/mem/ruby/filters/MultiBitSelBloomFilter.hh
index 315e272..1f652b2 100644
--- a/src/mem/ruby/filters/MultiBitSelBloomFilter.hh
+++ b/src/mem/ruby/filters/MultiBitSelBloomFilter.hh
@@ -46,7 +46,6 @@
void clear();
void merge(AbstractBloomFilter * other_filter);
void set(Addr addr);
- void unset(Addr addr);
bool isSet(Addr addr);
int getCount(Addr addr);
diff --git a/src/mem/ruby/filters/MultiGrainBloomFilter.cc
b/src/mem/ruby/filters/MultiGrainBloomFilter.cc
index 5f541b5..fef8fa8 100644
--- a/src/mem/ruby/filters/MultiGrainBloomFilter.cc
+++ b/src/mem/ruby/filters/MultiGrainBloomFilter.cc
@@ -81,12 +81,6 @@
}
-void
-MultiGrainBloomFilter::unset(Addr addr)
-{
- // not used
-}
-
bool
MultiGrainBloomFilter::isSet(Addr addr)
{
diff --git a/src/mem/ruby/filters/MultiGrainBloomFilter.hh
b/src/mem/ruby/filters/MultiGrainBloomFilter.hh
index 8bfd39b..c232927 100644
--- a/src/mem/ruby/filters/MultiGrainBloomFilter.hh
+++ b/src/mem/ruby/filters/MultiGrainBloomFilter.hh
@@ -44,7 +44,6 @@
void clear();
void merge(AbstractBloomFilter * other_filter);
void set(Addr addr);
- void unset(Addr addr);
bool isSet(Addr addr);
int getCount(Addr addr);
diff --git a/src/mem/ruby/filters/NonCountingBloomFilter.hh
b/src/mem/ruby/filters/NonCountingBloomFilter.hh
index bdd05db..9d1ad00 100644
--- a/src/mem/ruby/filters/NonCountingBloomFilter.hh
+++ b/src/mem/ruby/filters/NonCountingBloomFilter.hh
@@ -44,7 +44,7 @@
void clear();
void merge(AbstractBloomFilter * other_filter);
void set(Addr addr);
- void unset(Addr addr);
+ void unset(Addr addr) override;
bool isSet(Addr addr);
int getCount(Addr addr);
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/18730
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings
Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: Icf4b0f8b997c4c70fa714b2576474810275db78b
Gerrit-Change-Number: 18730
Gerrit-PatchSet: 5
Gerrit-Owner: Daniel Carvalho <[email protected]>
Gerrit-Reviewer: Daniel Carvalho <[email protected]>
Gerrit-Reviewer: Nikos Nikoleris <[email protected]>
Gerrit-Reviewer: kokoro <[email protected]>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev