diff options
Diffstat (limited to 'src/mem/cache/mshr.hh')
-rw-r--r-- | src/mem/cache/mshr.hh | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/mem/cache/mshr.hh b/src/mem/cache/mshr.hh index 71c2da2c4..050dbd1bf 100644 --- a/src/mem/cache/mshr.hh +++ b/src/mem/cache/mshr.hh @@ -286,6 +286,16 @@ class MSHR : public QueueEntry, public Printable } private: + /** + * Promotes deferred targets that satisfy a predicate + * + * Deferred targets are promoted to the target list if they + * satisfy a given condition. The operation stops at the first + * deferred target that doesn't satisfy the condition. + * + * @param pred A condition on a Target + */ + void promoteIf(const std::function<bool (Target &)>& pred); /** * Pointer to this MSHR on the ready list. @@ -388,6 +398,16 @@ class MSHR : public QueueEntry, public Printable /** * Promotes deferred targets that do not require writable * + * Move targets from the deferred targets list to the target list + * starting from the first deferred target until the first target + * that is a cache maintenance operation or needs a writable copy + * of the block + */ + void promoteReadable(); + + /** + * Promotes deferred targets that do not require writable + * * Requests in the deferred target list are moved to the target * list up until the first target that is a cache maintenance * operation or needs a writable copy of the block |