[gem5-dev] Change in public/gem5[master]: mem-cache: Split array indexing and replacement policies.
Daniel Carvalho has submitted this change and it was merged. ( https://gem5-review.googlesource.com/8501 ) Change subject: mem-cache: Split array indexing and replacement policies. .. mem-cache: Split array indexing and replacement policies. Replacement policies (LRU, Random) are currently considered as array indexing methods, but have completely different functionalities: - Array indexers determine the possible locations for block allocation. This information is used to generate replacement candidates when conflicts happen. - Replacement policies determine which of the replacement candidates should be evicted to make room for new allocations. For this reason, they were split into different classes. Advantages: - Easier and more straightforward to implement other replacement policies (RRIP, LFU, ARC, ...) - Allow easier future implementation of cache organization schemes As now we can't assure the use of sets, the previous way to create a true LRU is not viable. Now a timestamp_bits parameter controls how many bits are dedicated for the timestamp, and a true LRU can be achieved through an infinite number of bits (although a few bits suffice in practice). Change-Id: I23750db121f1474d17831137e6ff618beb2b3eda Reviewed-on: https://gem5-review.googlesource.com/8501 Reviewed-by: Nikos NikolerisReviewed-by: Jason Lowe-Power Maintainer: Nikos Nikoleris --- M configs/common/cores/arm/O3_ARM_v7a.py M configs/common/cores/arm/ex5_LITTLE.py M configs/common/cores/arm/ex5_big.py M src/mem/cache/Cache.py M src/mem/cache/base.cc M src/mem/cache/blk.hh M src/mem/cache/cache.cc A src/mem/cache/replacement_policies/ReplacementPolicies.py A src/mem/cache/replacement_policies/SConscript A src/mem/cache/replacement_policies/base.cc A src/mem/cache/replacement_policies/base.hh A src/mem/cache/replacement_policies/lru_rp.cc A src/mem/cache/replacement_policies/lru_rp.hh A src/mem/cache/replacement_policies/random_rp.cc A src/mem/cache/replacement_policies/random_rp.hh M src/mem/cache/tags/SConscript M src/mem/cache/tags/Tags.py M src/mem/cache/tags/base.hh M src/mem/cache/tags/base_set_assoc.cc M src/mem/cache/tags/base_set_assoc.hh M src/mem/cache/tags/fa_lru.cc M src/mem/cache/tags/fa_lru.hh D src/mem/cache/tags/lru.cc D src/mem/cache/tags/lru.hh D src/mem/cache/tags/random_repl.cc D src/mem/cache/tags/random_repl.hh 26 files changed, 645 insertions(+), 441 deletions(-) Approvals: Jason Lowe-Power: Looks good to me, approved Nikos Nikoleris: Looks good to me, approved; Looks good to me, approved diff --git a/configs/common/cores/arm/O3_ARM_v7a.py b/configs/common/cores/arm/O3_ARM_v7a.py index fde4d3c..b0ba128 100644 --- a/configs/common/cores/arm/O3_ARM_v7a.py +++ b/configs/common/cores/arm/O3_ARM_v7a.py @@ -201,4 +201,5 @@ clusivity = 'mostly_excl' # Simple stride prefetcher prefetcher = StridePrefetcher(degree=8, latency = 1) -tags = RandomRepl() +tags = BaseSetAssoc() +repl_policy = RandomRP() diff --git a/configs/common/cores/arm/ex5_LITTLE.py b/configs/common/cores/arm/ex5_LITTLE.py index a866b16..1ae0f16 100644 --- a/configs/common/cores/arm/ex5_LITTLE.py +++ b/configs/common/cores/arm/ex5_LITTLE.py @@ -145,6 +145,5 @@ clusivity = 'mostly_excl' # Simple stride prefetcher prefetcher = StridePrefetcher(degree=1, latency = 1) -tags = RandomRepl() - - +tags = BaseSetAssoc() +repl_policy = RandomRP() diff --git a/configs/common/cores/arm/ex5_big.py b/configs/common/cores/arm/ex5_big.py index f4ca047..96323f4 100644 --- a/configs/common/cores/arm/ex5_big.py +++ b/configs/common/cores/arm/ex5_big.py @@ -197,4 +197,5 @@ clusivity = 'mostly_excl' # Simple stride prefetcher prefetcher = StridePrefetcher(degree=8, latency = 1) -tags = RandomRepl() +tags = BaseSetAssoc() +repl_policy = RandomRP() diff --git a/src/mem/cache/Cache.py b/src/mem/cache/Cache.py index bac6c73..faee092 100644 --- a/src/mem/cache/Cache.py +++ b/src/mem/cache/Cache.py @@ -43,6 +43,7 @@ from m5.proxy import * from MemObject import MemObject from Prefetcher import BasePrefetcher +from ReplacementPolicies import * from Tags import * class BaseCache(MemObject): @@ -74,7 +75,10 @@ prefetch_on_access = Param.Bool(False, "Notify the hardware prefetcher on every access (not just misses)") -tags = Param.BaseTags(LRU(), "Tag store (replacement policy)") +tags = Param.BaseTags(BaseSetAssoc(), "Tag store") +replacement_policy = Param.BaseReplacementPolicy(LRURP(), +"Replacement policy") + sequential_access = Param.Bool(False, "Whether to access tags and data sequentially") diff --git a/src/mem/cache/base.cc b/src/mem/cache/base.cc index 6f25323..2c7d9fb 100644 --- a/src/mem/cache/base.cc +++ b/src/mem/cache/base.cc @@ -52,8 +52,6 @@ #include
[gem5-dev] Change in public/gem5[master]: mem-cache: Split array indexing and replacement policies.
Hello Nikos Nikoleris, Andreas Sandberg, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/8501 to look at the new patch set (#14). Change subject: mem-cache: Split array indexing and replacement policies. .. mem-cache: Split array indexing and replacement policies. Replacement policies (LRU, Random) are currently considered as array indexing methods, but have completely different functionalities: - Array indexers determine the possible locations for block allocation. This information is used to generate replacement candidates when conflicts happen. - Replacement policies determine which of the replacement candidates should be evicted to make room for new allocations. For this reason, they were split into different classes. Advantages: - Easier and more straightforward to implement other replacement policies (RRIP, LFU, ARC, ...) - Allow easier future implementation of cache organization schemes As now we can't assure the use of sets, the previous way to create a true LRU is not viable. Now a timestamp_bits parameter controls how many bits are dedicated for the timestamp, and a true LRU can be achieved through an infinite number of bits (although a few bits suffice in practice). Change-Id: I23750db121f1474d17831137e6ff618beb2b3eda --- M configs/common/cores/arm/O3_ARM_v7a.py M configs/common/cores/arm/ex5_LITTLE.py M configs/common/cores/arm/ex5_big.py M src/mem/cache/Cache.py M src/mem/cache/base.cc M src/mem/cache/blk.hh M src/mem/cache/cache.cc A src/mem/cache/replacement_policies/ReplacementPolicies.py A src/mem/cache/replacement_policies/SConscript A src/mem/cache/replacement_policies/base.cc A src/mem/cache/replacement_policies/base.hh A src/mem/cache/replacement_policies/lru_rp.cc A src/mem/cache/replacement_policies/lru_rp.hh A src/mem/cache/replacement_policies/random_rp.cc A src/mem/cache/replacement_policies/random_rp.hh M src/mem/cache/tags/SConscript M src/mem/cache/tags/Tags.py M src/mem/cache/tags/base.hh M src/mem/cache/tags/base_set_assoc.cc M src/mem/cache/tags/base_set_assoc.hh M src/mem/cache/tags/fa_lru.cc M src/mem/cache/tags/fa_lru.hh D src/mem/cache/tags/lru.cc D src/mem/cache/tags/lru.hh D src/mem/cache/tags/random_repl.cc D src/mem/cache/tags/random_repl.hh 26 files changed, 645 insertions(+), 441 deletions(-) -- To view, visit https://gem5-review.googlesource.com/8501 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: I23750db121f1474d17831137e6ff618beb2b3eda Gerrit-Change-Number: 8501 Gerrit-PatchSet: 14 Gerrit-Owner: Daniel CarvalhoGerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Nikos Nikoleris Gerrit-CC: Jason Lowe-Power Gerrit-MessageType: newpatchset ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in public/gem5[master]: mem-cache: Split array indexing and replacement policies.
Hello Nikos Nikoleris, Andreas Sandberg, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/8501 to look at the new patch set (#13). Change subject: mem-cache: Split array indexing and replacement policies. .. mem-cache: Split array indexing and replacement policies. Replacement policies (LRU, Random) are currently considered as array indexing methods, but have completely different functionalities: - Array indexers determine the possible locations for block allocation. This information is used to generate replacement candidates when conflicts happen. - Replacement policies determine which of the replacement candidates should be evicted to make room for new allocations. For this reason, they were split into different classes. Advantages: - Easier and more straightforward to implement other replacement policies (RRIP, LFU, ARC, ...) - Allow easier future implementation of cache organization schemes As now we can't assure the use of sets, the previous way to create a true LRU is not viable. Now a timestamp_bits parameter controls how many bits are dedicated for the timestamp, and a true LRU can be achieved through an infinite number of bits (although a few bits suffice in practice). Change-Id: I23750db121f1474d17831137e6ff618beb2b3eda --- M configs/common/cores/arm/O3_ARM_v7a.py M configs/common/cores/arm/ex5_LITTLE.py M configs/common/cores/arm/ex5_big.py M src/mem/cache/Cache.py M src/mem/cache/base.cc M src/mem/cache/blk.hh M src/mem/cache/cache.cc A src/mem/cache/replacement_policies/ReplacementPolicies.py A src/mem/cache/replacement_policies/SConscript A src/mem/cache/replacement_policies/base.cc A src/mem/cache/replacement_policies/base.hh A src/mem/cache/replacement_policies/lru_rp.cc A src/mem/cache/replacement_policies/lru_rp.hh A src/mem/cache/replacement_policies/random_rp.cc A src/mem/cache/replacement_policies/random_rp.hh M src/mem/cache/tags/SConscript M src/mem/cache/tags/Tags.py M src/mem/cache/tags/base.cc M src/mem/cache/tags/base.hh M src/mem/cache/tags/base_set_assoc.cc M src/mem/cache/tags/base_set_assoc.hh M src/mem/cache/tags/fa_lru.cc M src/mem/cache/tags/fa_lru.hh D src/mem/cache/tags/lru.cc D src/mem/cache/tags/lru.hh D src/mem/cache/tags/random_repl.cc D src/mem/cache/tags/random_repl.hh 27 files changed, 652 insertions(+), 447 deletions(-) -- To view, visit https://gem5-review.googlesource.com/8501 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: I23750db121f1474d17831137e6ff618beb2b3eda Gerrit-Change-Number: 8501 Gerrit-PatchSet: 13 Gerrit-Owner: Daniel CarvalhoGerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Nikos Nikoleris Gerrit-CC: Jason Lowe-Power Gerrit-MessageType: newpatchset ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in public/gem5[master]: mem-cache: Split array indexing and replacement policies.
Hello Nikos Nikoleris, Andreas Sandberg, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/8501 to look at the new patch set (#12). Change subject: mem-cache: Split array indexing and replacement policies. .. mem-cache: Split array indexing and replacement policies. Replacement policies (LRU, Random) are currently considered as array indexing methods, but have completely different functionalities: - Array indexers determine the possible locations for block allocation. This information is used to generate replacement candidates when conflicts happen. - Replacement policies determine which of the replacement candidates should be evicted to make room for new allocations. For this reason, they were split into different classes. Advantages: - Easier and more straightforward to implement other replacement policies (RRIP, LFU, ARC, ...) - Allow easier future implementation of cache organization schemes As now we can't assure the use of sets, the previous way to create a true LRU is not viable. Now a timestamp_bits parameter controls how many bits are dedicated for the timestamp, and a true LRU can be achieved through an infinite number of bits (although a few bits suffice in practice). Change-Id: I23750db121f1474d17831137e6ff618beb2b3eda --- M configs/common/cores/arm/O3_ARM_v7a.py M configs/common/cores/arm/ex5_LITTLE.py M configs/common/cores/arm/ex5_big.py M src/mem/cache/Cache.py M src/mem/cache/base.cc M src/mem/cache/blk.hh M src/mem/cache/cache.cc A src/mem/cache/replacement_policies/ReplacementPolicies.py A src/mem/cache/replacement_policies/SConscript A src/mem/cache/replacement_policies/base.cc A src/mem/cache/replacement_policies/base.hh A src/mem/cache/replacement_policies/lru_rp.cc A src/mem/cache/replacement_policies/lru_rp.hh A src/mem/cache/replacement_policies/random_rp.cc A src/mem/cache/replacement_policies/random_rp.hh M src/mem/cache/tags/SConscript M src/mem/cache/tags/Tags.py M src/mem/cache/tags/base.cc M src/mem/cache/tags/base.hh M src/mem/cache/tags/base_set_assoc.cc M src/mem/cache/tags/base_set_assoc.hh M src/mem/cache/tags/fa_lru.cc M src/mem/cache/tags/fa_lru.hh D src/mem/cache/tags/lru.cc D src/mem/cache/tags/lru.hh D src/mem/cache/tags/random_repl.cc D src/mem/cache/tags/random_repl.hh 27 files changed, 654 insertions(+), 444 deletions(-) -- To view, visit https://gem5-review.googlesource.com/8501 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: I23750db121f1474d17831137e6ff618beb2b3eda Gerrit-Change-Number: 8501 Gerrit-PatchSet: 12 Gerrit-Owner: Daniel CarvalhoGerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Nikos Nikoleris Gerrit-CC: Jason Lowe-Power Gerrit-MessageType: newpatchset ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in public/gem5[master]: mem-cache: Split array indexing and replacement policies.
Hello Nikos Nikoleris, Andreas Sandberg, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/8501 to look at the new patch set (#11). Change subject: mem-cache: Split array indexing and replacement policies. .. mem-cache: Split array indexing and replacement policies. Replacement policies (LRU, Random) are currently considered as array indexing methods, but have completely different functionalities: - Array indexers determine the possible locations for block allocation. This information is used to generate replacement candidates when conflicts happen. - Replacement policies determine which of the replacement candidates should be evicted to make room for new allocations. For this reason, they were split into different classes. Advantages: - Easier and more straightforward to implement other replacement policies (RRIP, LFU, ARC, ...) - Allow easier future implementation of cache organization schemes As now we can't assure the use of sets, the previous way to create a true LRU is not viable. Now a timestamp_bits parameter controls how many bits are dedicated for the timestamp, and a true LRU can be achieved through an infinite number of bits (although a few bits suffice in practice). Change-Id: I23750db121f1474d17831137e6ff618beb2b3eda --- M configs/common/cores/arm/O3_ARM_v7a.py M configs/common/cores/arm/ex5_LITTLE.py M configs/common/cores/arm/ex5_big.py M src/mem/cache/Cache.py M src/mem/cache/base.cc M src/mem/cache/blk.hh M src/mem/cache/cache.cc A src/mem/cache/replacement_policies/ReplacementPolicies.py A src/mem/cache/replacement_policies/SConscript A src/mem/cache/replacement_policies/base.cc A src/mem/cache/replacement_policies/base.hh A src/mem/cache/replacement_policies/lru_rp.cc A src/mem/cache/replacement_policies/lru_rp.hh A src/mem/cache/replacement_policies/nru_rp.cc A src/mem/cache/replacement_policies/nru_rp.hh A src/mem/cache/replacement_policies/random_rp.cc A src/mem/cache/replacement_policies/random_rp.hh M src/mem/cache/tags/SConscript M src/mem/cache/tags/Tags.py M src/mem/cache/tags/base.cc M src/mem/cache/tags/base.hh M src/mem/cache/tags/base_set_assoc.cc M src/mem/cache/tags/base_set_assoc.hh M src/mem/cache/tags/fa_lru.cc M src/mem/cache/tags/fa_lru.hh D src/mem/cache/tags/lru.cc D src/mem/cache/tags/lru.hh D src/mem/cache/tags/random_repl.cc D src/mem/cache/tags/random_repl.hh 29 files changed, 775 insertions(+), 443 deletions(-) -- To view, visit https://gem5-review.googlesource.com/8501 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: I23750db121f1474d17831137e6ff618beb2b3eda Gerrit-Change-Number: 8501 Gerrit-PatchSet: 11 Gerrit-Owner: Daniel CarvalhoGerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Nikos Nikoleris Gerit-CC: Jason Lowe-Power Gerrit-MessageType: newpatchset ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in public/gem5[master]: mem-cache: Split array indexing and replacement policies.
Hello Nikos Nikoleris, Andreas Sandberg, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/8501 to look at the new patch set (#10). Change subject: mem-cache: Split array indexing and replacement policies. .. mem-cache: Split array indexing and replacement policies. Replacement policies (LRU, Random) are currently considered as array indexing methods, but have completely different functionalities: - Array indexers determine the possible locations for block allocation. This information is used to generate replacement candidates when conflicts happen. - Replacement policies determine which of the replacement candidates should be evicted to make room for new allocations. For this reason, they were split into different classes. Advantages: - Easier and more straightforward to implement other replacement policies (RRIP, LFU, ARC, ...) - Allow easier future implementation of cache organization schemes As now we can't assure the use of sets, the previous way to create a true LRU is not viable. Now a timestamp_bits parameter controls how many bits are dedicated for the timestamp, and a true LRU can be achieved through an infinite number of bits (although a few bits suffice in practice). Change-Id: I23750db121f1474d17831137e6ff618beb2b3eda --- M configs/common/cores/arm/O3_ARM_v7a.py M configs/common/cores/arm/ex5_LITTLE.py M configs/common/cores/arm/ex5_big.py M src/mem/cache/Cache.py M src/mem/cache/base.cc M src/mem/cache/blk.hh M src/mem/cache/cache.cc M src/mem/cache/cache.hh A src/mem/cache/replacement_policies/ReplacementPolicies.py A src/mem/cache/replacement_policies/SConscript C src/mem/cache/replacement_policies/base.cc A src/mem/cache/replacement_policies/base.hh A src/mem/cache/replacement_policies/lru_rp.cc A src/mem/cache/replacement_policies/lru_rp.hh A src/mem/cache/replacement_policies/random_rp.cc R src/mem/cache/replacement_policies/random_rp.hh M src/mem/cache/tags/SConscript M src/mem/cache/tags/Tags.py M src/mem/cache/tags/base.hh M src/mem/cache/tags/base_set_assoc.cc M src/mem/cache/tags/base_set_assoc.hh M src/mem/cache/tags/fa_lru.cc M src/mem/cache/tags/fa_lru.hh D src/mem/cache/tags/lru.cc D src/mem/cache/tags/lru.hh D src/mem/cache/tags/random_repl.cc 26 files changed, 590 insertions(+), 417 deletions(-) -- To view, visit https://gem5-review.googlesource.com/8501 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: I23750db121f1474d17831137e6ff618beb2b3eda Gerrit-Change-Number: 8501 Gerrit-PatchSet: 10 Gerrit-Owner: Daniel CarvalhoGerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Nikos Nikoleris Gerit-CC: Jason Lowe-Power Gerrit-MessageType: newpatchset ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in public/gem5[master]: mem-cache: Split array indexing and replacement policies.
Hello Nikos Nikoleris, Andreas Sandberg, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/8501 to look at the new patch set (#9). Change subject: mem-cache: Split array indexing and replacement policies. .. mem-cache: Split array indexing and replacement policies. Replacement policies (LRU, Random) are currently considered as array indexing methods, but have completely different functionalities: - Array indexers determine the possible locations for block allocation. This information is used to generate replacement candidates when conflicts happen. - Replacement policies determine which of the replacement candidates should be evicted to make room for new allocations. For this reason, they were split into different classes. Advantages: - Easier and more straightforward to implement other replacement policies (RRIP, LFU, ARC, ...) - Allow easier future implementation of cache organization schemes As now we can't assure the use of sets, the previous way to create a true LRU is not viable. Now a timestamp_bits parameter controls how many bits are dedicated for the timestamp, and a true LRU can be achieved through an infinite number of bits (although a few bits suffice in practice). Change-Id: I23750db121f1474d17831137e6ff618beb2b3eda --- M configs/common/cores/arm/O3_ARM_v7a.py M configs/common/cores/arm/ex5_LITTLE.py M configs/common/cores/arm/ex5_big.py M src/mem/cache/Cache.py M src/mem/cache/base.cc M src/mem/cache/blk.hh M src/mem/cache/cache.cc A src/mem/cache/replacement_policies/ReplacementPolicies.py A src/mem/cache/replacement_policies/SConscript A src/mem/cache/replacement_policies/base.cc A src/mem/cache/replacement_policies/base.hh A src/mem/cache/replacement_policies/lru_rp.cc A src/mem/cache/replacement_policies/lru_rp.hh A src/mem/cache/replacement_policies/random_rp.cc A src/mem/cache/replacement_policies/random_rp.hh M src/mem/cache/tags/SConscript M src/mem/cache/tags/Tags.py M src/mem/cache/tags/base.cc M src/mem/cache/tags/base.hh M src/mem/cache/tags/base_set_assoc.cc M src/mem/cache/tags/base_set_assoc.hh M src/mem/cache/tags/fa_lru.cc M src/mem/cache/tags/fa_lru.hh D src/mem/cache/tags/lru.cc D src/mem/cache/tags/lru.hh D src/mem/cache/tags/random_repl.cc D src/mem/cache/tags/random_repl.hh 27 files changed, 666 insertions(+), 443 deletions(-) -- To view, visit https://gem5-review.googlesource.com/8501 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: I23750db121f1474d17831137e6ff618beb2b3eda Gerrit-Change-Number: 8501 Gerrit-PatchSet: 9 Gerrit-Owner: Daniel CarvalhoGerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Nikos Nikoleris Gerit-CC: Jason Lowe-Power Gerrit-MessageType: newpatchset ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in public/gem5[master]: mem-cache: Split array indexing and replacement policies.
Hello Nikos Nikoleris, Andreas Sandberg, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/8501 to look at the new patch set (#8). Change subject: mem-cache: Split array indexing and replacement policies. .. mem-cache: Split array indexing and replacement policies. Replacement policies (LRU, Random) are currently considered as array indexing methods, but have completely different functionalities: - Array indexers determine the possible locations for block allocation. This information is used to generate replacement candidates when conflicts happen. - Replacement policies determine which of the replacement candidates should be evicted to make room for new allocations. For this reason, they were split into different classes. Advantages: - Easier and more straightforward to implement other replacement policies (RRIP, LFU, ARC, ...) - Allow easier future implementation of cache organization schemes As now we can't assure the use of sets, the previous way to create a true LRU is not viable. Now a timestamp_bits parameter controls how many bits are dedicated for the timestamp, and a true LRU can be achieved through an infinite number of bits (although a few bits suffice in practice). Change-Id: I23750db121f1474d17831137e6ff618beb2b3eda --- M configs/common/cores/arm/O3_ARM_v7a.py M configs/common/cores/arm/ex5_LITTLE.py M configs/common/cores/arm/ex5_big.py M src/mem/cache/Cache.py M src/mem/cache/base.cc M src/mem/cache/blk.hh M src/mem/cache/cache.cc M src/mem/cache/cache.hh A src/mem/cache/replacement_policies/ReplacementPolicies.py A src/mem/cache/replacement_policies/SConscript A src/mem/cache/replacement_policies/base.cc A src/mem/cache/replacement_policies/base.hh A src/mem/cache/replacement_policies/lru_rp.cc A src/mem/cache/replacement_policies/lru_rp.hh A src/mem/cache/replacement_policies/random_rp.cc A src/mem/cache/replacement_policies/random_rp.hh M src/mem/cache/tags/SConscript M src/mem/cache/tags/Tags.py M src/mem/cache/tags/base.hh M src/mem/cache/tags/base_set_assoc.cc M src/mem/cache/tags/base_set_assoc.hh M src/mem/cache/tags/fa_lru.cc M src/mem/cache/tags/fa_lru.hh D src/mem/cache/tags/lru.cc D src/mem/cache/tags/lru.hh D src/mem/cache/tags/random_repl.cc D src/mem/cache/tags/random_repl.hh 27 files changed, 671 insertions(+), 441 deletions(-) -- To view, visit https://gem5-review.googlesource.com/8501 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: I23750db121f1474d17831137e6ff618beb2b3eda Gerrit-Change-Number: 8501 Gerrit-PatchSet: 8 Gerrit-Owner: Daniel CarvalhoGerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Nikos Nikoleris Gerit-CC: Jason Lowe-Power Gerrit-MessageType: newpatchset ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in public/gem5[master]: mem-cache: Split array indexing and replacement policies.
Hello Nikos Nikoleris, Andreas Sandberg, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/8501 to look at the new patch set (#7). Change subject: mem-cache: Split array indexing and replacement policies. .. mem-cache: Split array indexing and replacement policies. Replacement policies (LRU, Random) are currently considered as array indexing methods, but have completely different functionalities: - Array indexers determine the possible locations for block allocation. This information is used to generate replacement candidates when conflicts happen. - Replacement policies determine which of the replacement candidates should be evicted to make room for new allocations. For this reason, they were split into different classes. Advantages: - Easier and more straightforward to implement other replacement policies (RRIP, LFU, ARC, ...) - Allow easier future implementation of cache organization schemes As now we can't assure the use of sets, the previous way to create a true LRU is not viable. Now a timestamp_bits parameter controls how many bits are dedicated for the timestamp, and a true LRU can be achieved through an infinite number of bits (although a few bits suffice in practice). Change-Id: I23750db121f1474d17831137e6ff618beb2b3eda --- M configs/common/cores/arm/O3_ARM_v7a.py M configs/common/cores/arm/ex5_LITTLE.py M configs/common/cores/arm/ex5_big.py M src/mem/cache/Cache.py M src/mem/cache/base.cc M src/mem/cache/blk.hh M src/mem/cache/cache.cc M src/mem/cache/cache.hh A src/mem/cache/replacement_policies/ReplacementPolicies.py A src/mem/cache/replacement_policies/SConscript A src/mem/cache/replacement_policies/base.cc A src/mem/cache/replacement_policies/base.hh A src/mem/cache/replacement_policies/lru_rp.cc A src/mem/cache/replacement_policies/lru_rp.hh A src/mem/cache/replacement_policies/random_rp.cc A src/mem/cache/replacement_policies/random_rp.hh M src/mem/cache/tags/SConscript M src/mem/cache/tags/Tags.py M src/mem/cache/tags/base.hh M src/mem/cache/tags/base_set_assoc.cc M src/mem/cache/tags/base_set_assoc.hh M src/mem/cache/tags/fa_lru.cc M src/mem/cache/tags/fa_lru.hh D src/mem/cache/tags/lru.cc D src/mem/cache/tags/lru.hh D src/mem/cache/tags/random_repl.cc D src/mem/cache/tags/random_repl.hh 27 files changed, 671 insertions(+), 441 deletions(-) -- To view, visit https://gem5-review.googlesource.com/8501 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: I23750db121f1474d17831137e6ff618beb2b3eda Gerrit-Change-Number: 8501 Gerrit-PatchSet: 7 Gerrit-Owner: Daniel CarvalhoGerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Nikos Nikoleris Gerit-CC: Jason Lowe-Power Gerrit-MessageType: newpatchset ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in public/gem5[master]: mem-cache: Split array indexing and replacement policies.
Hello Nikos Nikoleris, Andreas Sandberg, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/8501 to look at the new patch set (#6). Change subject: mem-cache: Split array indexing and replacement policies. .. mem-cache: Split array indexing and replacement policies. Replacement policies (LRU, Random) are currently considered as array indexing methods, but have completely different functionalities: - Array indexers determine the possible locations for block allocation. This information is used to generate replacement candidates when conflicts happen. - Replacement policies determine which of the replacement candidates should be evicted to make room for new allocations. For this reason, they were split into different classes. Advantages: - Easier and more straightforward to implement other replacement policies (RRIP, LFU, ARC, ...) - Allow easier future implementation of cache organization schemes As now we can't assure the use of sets, the previous way to create a true LRU is not viable. Now a timestamp_bits parameter controls how many bits are dedicated for the timestamp, and a true LRU can be achieved through an infinite number of bits (although a few bits suffice in practice). Change-Id: I23750db121f1474d17831137e6ff618beb2b3eda --- M configs/common/cores/arm/O3_ARM_v7a.py M configs/common/cores/arm/ex5_LITTLE.py M configs/common/cores/arm/ex5_big.py M src/mem/cache/Cache.py M src/mem/cache/base.cc M src/mem/cache/blk.hh M src/mem/cache/cache.cc M src/mem/cache/cache.hh A src/mem/cache/replacement_policies/ReplacementPolicies.py A src/mem/cache/replacement_policies/SConscript A src/mem/cache/replacement_policies/base.cc A src/mem/cache/replacement_policies/base.hh A src/mem/cache/replacement_policies/lru_rp.cc A src/mem/cache/replacement_policies/lru_rp.hh A src/mem/cache/replacement_policies/random_rp.cc A src/mem/cache/replacement_policies/random_rp.hh M src/mem/cache/tags/SConscript M src/mem/cache/tags/Tags.py M src/mem/cache/tags/base.hh M src/mem/cache/tags/base_set_assoc.cc M src/mem/cache/tags/base_set_assoc.hh M src/mem/cache/tags/fa_lru.cc M src/mem/cache/tags/fa_lru.hh D src/mem/cache/tags/lru.cc D src/mem/cache/tags/lru.hh D src/mem/cache/tags/random_repl.cc D src/mem/cache/tags/random_repl.hh 27 files changed, 671 insertions(+), 441 deletions(-) -- To view, visit https://gem5-review.googlesource.com/8501 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: I23750db121f1474d17831137e6ff618beb2b3eda Gerrit-Change-Number: 8501 Gerrit-PatchSet: 6 Gerrit-Owner: Daniel CarvalhoGerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Nikos Nikoleris Gerit-CC: Jason Lowe-Power Gerrit-MessageType: newpatchset ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in public/gem5[master]: mem-cache: Split array indexing and replacement policies.
Hello Nikos Nikoleris, Andreas Sandberg, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/8501 to look at the new patch set (#5). Change subject: mem-cache: Split array indexing and replacement policies. .. mem-cache: Split array indexing and replacement policies. Replacement policies (LRU, Random) are currently considered as array indexing methods, but have completely different functionalities: - Array indexers determine the possible locations for block allocation. This information is used to generate replacement candidates when conflicts happen. - Replacement policies determine which of the replacement candidates should be evicted to make room for new allocations. For this reason, they were split into different classes. Advantages: - Easier and more straightforward to implement other replacement policies (RRIP, LFU, ARC, ...) - Allow easier future implementation of cache organization schemes As now we can't assure the use of sets, the previous way to create a true LRU is not viable. Now a timestamp_bits parameter controls how many bits are dedicated for the timestamp, and a true LRU can be achieved through an infinite number of bits (although a few bits suffice in practice). Change-Id: I23750db121f1474d17831137e6ff618beb2b3eda --- M configs/common/cores/arm/O3_ARM_v7a.py M configs/common/cores/arm/ex5_LITTLE.py M configs/common/cores/arm/ex5_big.py M src/mem/cache/Cache.py M src/mem/cache/base.cc M src/mem/cache/blk.hh M src/mem/cache/cache.cc M src/mem/cache/cache.hh A src/mem/cache/replacement_policies/ReplacementPolicies.py A src/mem/cache/replacement_policies/SConscript C src/mem/cache/replacement_policies/base.cc A src/mem/cache/replacement_policies/base.hh A src/mem/cache/replacement_policies/lru_rp.cc A src/mem/cache/replacement_policies/lru_rp.hh A src/mem/cache/replacement_policies/random_rp.cc R src/mem/cache/replacement_policies/random_rp.hh M src/mem/cache/tags/SConscript M src/mem/cache/tags/Tags.py M src/mem/cache/tags/base.hh M src/mem/cache/tags/base_set_assoc.cc M src/mem/cache/tags/base_set_assoc.hh M src/mem/cache/tags/fa_lru.cc M src/mem/cache/tags/fa_lru.hh D src/mem/cache/tags/lru.cc D src/mem/cache/tags/lru.hh D src/mem/cache/tags/random_repl.cc 26 files changed, 590 insertions(+), 418 deletions(-) -- To view, visit https://gem5-review.googlesource.com/8501 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: I23750db121f1474d17831137e6ff618beb2b3eda Gerrit-Change-Number: 8501 Gerrit-PatchSet: 5 Gerrit-Owner: Daniel CarvalhoGerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Nikos Nikoleris Gerit-CC: Jason Lowe-Power Gerrit-MessageType: newpatchset ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in public/gem5[master]: mem-cache: Split array indexing and replacement policies.
Hello Nikos Nikoleris, Andreas Sandberg, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/8501 to look at the new patch set (#4). Change subject: mem-cache: Split array indexing and replacement policies. .. mem-cache: Split array indexing and replacement policies. Replacement policies (LRU, Random) are currently considered as array indexing methods, but have completely different functionalities: - Array indexers determine the possible locations for block allocation. This information is used to generate replacement candidates when conflicts happen. - Replacement policies determine which of the replacement candidates should be evicted to make room for new allocations. For this reason, they were split into different classes. Advantages: - Easier and more straightforward to implement other replacement policies (RRIP, LFU, ARC, ...) - Allow easier future implementation of cache organization schemes As now we can't assure the use of sets, the previous way to create a true LRU is not viable. Now a timestamp_bits parameter controls how many bits are dedicated for the timestamp, and a true LRU can be achieved through an infinite number of bits (although a few bits suffice in practice). Change-Id: I23750db121f1474d17831137e6ff618beb2b3eda --- M configs/common/cores/arm/O3_ARM_v7a.py M configs/common/cores/arm/ex5_LITTLE.py M configs/common/cores/arm/ex5_big.py M src/mem/cache/Cache.py M src/mem/cache/base.cc M src/mem/cache/blk.hh M src/mem/cache/cache.cc M src/mem/cache/cache.hh A src/mem/cache/replacement_policies/ReplacementPolicies.py A src/mem/cache/replacement_policies/SConscript A src/mem/cache/replacement_policies/base.cc A src/mem/cache/replacement_policies/base.hh C src/mem/cache/replacement_policies/lru_rp.cc A src/mem/cache/replacement_policies/lru_rp.hh A src/mem/cache/replacement_policies/random_rp.cc R src/mem/cache/replacement_policies/random_rp.hh M src/mem/cache/tags/SConscript M src/mem/cache/tags/Tags.py M src/mem/cache/tags/base.hh M src/mem/cache/tags/base_set_assoc.cc M src/mem/cache/tags/base_set_assoc.hh M src/mem/cache/tags/fa_lru.cc M src/mem/cache/tags/fa_lru.hh D src/mem/cache/tags/lru.cc D src/mem/cache/tags/lru.hh D src/mem/cache/tags/random_repl.cc 26 files changed, 557 insertions(+), 421 deletions(-) -- To view, visit https://gem5-review.googlesource.com/8501 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: I23750db121f1474d17831137e6ff618beb2b3eda Gerrit-Change-Number: 8501 Gerrit-PatchSet: 4 Gerrit-Owner: Daniel CarvalhoGerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Nikos Nikoleris Gerit-CC: Jason Lowe-Power Gerrit-MessageType: newpatchset ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in public/gem5[master]: mem-cache: Split array indexing and replacement policies.
Hello Nikos Nikoleris, Andreas Sandberg, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/8501 to look at the new patch set (#3). Change subject: mem-cache: Split array indexing and replacement policies. .. mem-cache: Split array indexing and replacement policies. Replacement policies (LRU, Random) are currently considered as array indexing methods, but have completely different functionalities: - Array indexers determine the possible locations for block allocation. This information is used to generate replacement candidates when conflicts happen. - Replacement policies determine which of the replacement candidates should be evicted to make room for new allocations. For this reason, they were split into different classes. Advantages: - Easier and more straightforward to implement other replacement policies (RRIP, LFU, ARC, ...) - Allow easier future implementation of cache organization schemes As now we can't assure the use of sets, the previous way to create a true LRU is not viable. Now a timestamp_bits parameter controls how many bits are dedicated for the timestamp, and a true LRU can be achieved through an infinite number of bits (although a few bits suffice in practice). Change-Id: I23750db121f1474d17831137e6ff618beb2b3eda --- M configs/common/cores/arm/O3_ARM_v7a.py M configs/common/cores/arm/ex5_LITTLE.py M configs/common/cores/arm/ex5_big.py M src/mem/cache/Cache.py M src/mem/cache/base.cc M src/mem/cache/blk.hh M src/mem/cache/cache.cc M src/mem/cache/cache.hh A src/mem/cache/replacement_policies/ReplacementPolicies.py A src/mem/cache/replacement_policies/SConscript A src/mem/cache/replacement_policies/base.cc A src/mem/cache/replacement_policies/base.hh C src/mem/cache/replacement_policies/lru_rp.cc A src/mem/cache/replacement_policies/lru_rp.hh A src/mem/cache/replacement_policies/random_rp.cc R src/mem/cache/replacement_policies/random_rp.hh M src/mem/cache/tags/SConscript M src/mem/cache/tags/Tags.py M src/mem/cache/tags/base.hh M src/mem/cache/tags/base_set_assoc.cc M src/mem/cache/tags/base_set_assoc.hh M src/mem/cache/tags/fa_lru.cc M src/mem/cache/tags/fa_lru.hh D src/mem/cache/tags/lru.cc D src/mem/cache/tags/lru.hh D src/mem/cache/tags/random_repl.cc M tests/long/fs/10.linux-boot/ref/arm/linux/realview-minor-dual/config.ini M tests/long/fs/10.linux-boot/ref/arm/linux/realview-o3-dual/config.ini M tests/long/fs/10.linux-boot/ref/arm/linux/realview64-minor-dual/config.ini M tests/long/fs/10.linux-boot/ref/arm/linux/realview64-o3-dual/config.ini M tests/long/fs/10.linux-boot/ref/arm/linux/realview64-simple-atomic-dual/config.ini M tests/long/fs/10.linux-boot/ref/arm/linux/realview64-simple-timing-dual/config.ini M tests/long/se/10.mcf/ref/arm/linux/o3-timing/config.ini M tests/long/se/20.parser/ref/arm/linux/o3-timing/config.ini M tests/long/se/30.eon/ref/arm/linux/o3-timing/config.ini M tests/long/se/40.perlbmk/ref/arm/linux/o3-timing/config.ini M tests/long/se/50.vortex/ref/arm/linux/o3-timing/config.ini M tests/long/se/60.bzip2/ref/arm/linux/o3-timing/config.ini M tests/long/se/70.twolf/ref/arm/linux/o3-timing/config.ini M tests/quick/fs/10.linux-boot/ref/arm/linux/realview-simple-atomic-dual/config.ini M tests/quick/fs/10.linux-boot/ref/arm/linux/realview-simple-timing-dual/config.ini M tests/quick/se/00.hello/ref/arm/linux/o3-timing/config.ini 42 files changed, 846 insertions(+), 445 deletions(-) -- To view, visit https://gem5-review.googlesource.com/8501 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: I23750db121f1474d17831137e6ff618beb2b3eda Gerrit-Change-Number: 8501 Gerrit-PatchSet: 3 Gerrit-Owner: Daniel CarvalhoGerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Nikos Nikoleris Gerit-CC: Jason Lowe-Power Gerrit-MessageType: newpatchset ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in public/gem5[master]: mem-cache: Split array indexing and replacement policies.
Hello Nikos Nikoleris, Andreas Sandberg, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/8501 to look at the new patch set (#2). Change subject: mem-cache: Split array indexing and replacement policies. .. mem-cache: Split array indexing and replacement policies. Replacement policies (LRU, Random) are currently considered as array indexing methods, but have completely different functionalities: - Array indexers determine the possible locations for block allocation. This information is used to generate replacement candidates when conflicts happen. - Replacement policies determine which of the replacement candidates should be evicted to make room for new allocations. For this reason, they were split into different classes. Advantages: - Easier and more straightforward to implement other replacement policies (RRIP, LFU, ARC, ...) - Allow easier future implementation of cache organization schemes As now we can't assure the use of sets, the previous way to create a true LRU is not viable. Now a timestamp_bits parameter controls how many bits are dedicated for the timestamp, and a true LRU can be achieved through an infinite number of bits (although a few bits suffice in practice). Change-Id: I23750db121f1474d17831137e6ff618beb2b3eda --- M configs/common/cores/arm/O3_ARM_v7a.py M configs/common/cores/arm/ex5_LITTLE.py M configs/common/cores/arm/ex5_big.py M src/mem/cache/Cache.py M src/mem/cache/base.cc M src/mem/cache/blk.hh M src/mem/cache/cache.cc M src/mem/cache/cache.hh A src/mem/cache/replacement_policies/ReplacementPolicies.py A src/mem/cache/replacement_policies/SConscript A src/mem/cache/replacement_policies/base.cc A src/mem/cache/replacement_policies/base.hh C src/mem/cache/replacement_policies/lru_rp.cc A src/mem/cache/replacement_policies/lru_rp.hh A src/mem/cache/replacement_policies/random_rp.cc R src/mem/cache/replacement_policies/random_rp.hh M src/mem/cache/tags/SConscript M src/mem/cache/tags/Tags.py M src/mem/cache/tags/base.hh M src/mem/cache/tags/base_set_assoc.cc M src/mem/cache/tags/base_set_assoc.hh M src/mem/cache/tags/fa_lru.cc M src/mem/cache/tags/fa_lru.hh D src/mem/cache/tags/lru.cc D src/mem/cache/tags/lru.hh D src/mem/cache/tags/random_repl.cc M tests/long/fs/10.linux-boot/ref/arm/linux/realview-minor-dual/config.ini M tests/long/fs/10.linux-boot/ref/arm/linux/realview-o3-dual/config.ini M tests/long/fs/10.linux-boot/ref/arm/linux/realview64-minor-dual/config.ini M tests/long/fs/10.linux-boot/ref/arm/linux/realview64-o3-dual/config.ini M tests/long/fs/10.linux-boot/ref/arm/linux/realview64-simple-atomic-dual/config.ini M tests/long/fs/10.linux-boot/ref/arm/linux/realview64-simple-timing-dual/config.ini M tests/long/se/10.mcf/ref/arm/linux/o3-timing/config.ini M tests/long/se/20.parser/ref/arm/linux/o3-timing/config.ini M tests/long/se/30.eon/ref/arm/linux/o3-timing/config.ini M tests/long/se/40.perlbmk/ref/arm/linux/o3-timing/config.ini M tests/long/se/50.vortex/ref/arm/linux/o3-timing/config.ini M tests/long/se/60.bzip2/ref/arm/linux/o3-timing/config.ini M tests/long/se/70.twolf/ref/arm/linux/o3-timing/config.ini M tests/quick/fs/10.linux-boot/ref/arm/linux/realview-simple-atomic-dual/config.ini M tests/quick/fs/10.linux-boot/ref/arm/linux/realview-simple-timing-dual/config.ini M tests/quick/se/00.hello/ref/arm/linux/o3-timing/config.ini 42 files changed, 846 insertions(+), 445 deletions(-) -- To view, visit https://gem5-review.googlesource.com/8501 To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings Gerrit-Project: public/gem5 Gerrit-Branch: master Gerrit-MessageType: newpatchset Gerrit-Change-Id: I23750db121f1474d17831137e6ff618beb2b3eda Gerrit-Change-Number: 8501 Gerrit-PatchSet: 2 Gerrit-Owner: Daniel CarvalhoGerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Nikos Nikoleris ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in public/gem5[master]: mem-cache: Split array indexing and replacement policies.
Daniel Carvalho has uploaded this change for review. ( https://gem5-review.googlesource.com/8501 Change subject: mem-cache: Split array indexing and replacement policies. .. mem-cache: Split array indexing and replacement policies. Replacement policies (LRU, Random) are currently considered as array indexing methods, but have completely different functionalities: - Array indexers determine the possible locations for block allocation. This information is used to generate replacement candidates when conflicts happen. - Replacement policies determine which of the replacement candidates should be evicted to make room for new allocations. For this reason, they were split into different classes. Advantages: - Easier and more straightforward to implement other replacement policies (RRIP, LFU, ARC, ...) - Allow easier future implementation of cache organization schemes As now we can't assure the use of sets, the previous way to create a true LRU is not viable. Now a timestamp_bits parameter controls how many bits are dedicated for the timestamp, and a true LRU can be achieved through an infinite number of bits (although a few bits suffice in practice). Change-Id: I23750db121f1474d17831137e6ff618beb2b3eda --- M configs/common/cores/arm/O3_ARM_v7a.py M configs/common/cores/arm/ex5_LITTLE.py M configs/common/cores/arm/ex5_big.py M src/mem/cache/Cache.py M src/mem/cache/base.cc M src/mem/cache/blk.hh M src/mem/cache/cache.cc M src/mem/cache/cache.hh A src/mem/cache/replacement_policies/ReplacementPolicies.py A src/mem/cache/replacement_policies/SConscript A src/mem/cache/replacement_policies/base.cc A src/mem/cache/replacement_policies/base.hh A src/mem/cache/replacement_policies/lru_rp.cc A src/mem/cache/replacement_policies/lru_rp.hh A src/mem/cache/replacement_policies/random_rp.cc A src/mem/cache/replacement_policies/random_rp.hh M src/mem/cache/tags/SConscript M src/mem/cache/tags/Tags.py M src/mem/cache/tags/base.hh M src/mem/cache/tags/base_set_assoc.cc M src/mem/cache/tags/base_set_assoc.hh M src/mem/cache/tags/fa_lru.cc M src/mem/cache/tags/fa_lru.hh D src/mem/cache/tags/lru.cc D src/mem/cache/tags/lru.hh D src/mem/cache/tags/random_repl.cc D src/mem/cache/tags/random_repl.hh M tests/long/fs/10.linux-boot/ref/arm/linux/realview-minor-dual/config.ini M tests/long/fs/10.linux-boot/ref/arm/linux/realview-o3-dual/config.ini M tests/long/fs/10.linux-boot/ref/arm/linux/realview64-minor-dual/config.ini M tests/long/fs/10.linux-boot/ref/arm/linux/realview64-o3-dual/config.ini M tests/long/fs/10.linux-boot/ref/arm/linux/realview64-simple-atomic-dual/config.ini M tests/long/fs/10.linux-boot/ref/arm/linux/realview64-simple-timing-dual/config.ini M tests/long/se/10.mcf/ref/arm/linux/o3-timing/config.ini M tests/long/se/20.parser/ref/arm/linux/o3-timing/config.ini M tests/long/se/30.eon/ref/arm/linux/o3-timing/config.ini M tests/long/se/40.perlbmk/ref/arm/linux/o3-timing/config.ini M tests/long/se/50.vortex/ref/arm/linux/o3-timing/config.ini M tests/long/se/60.bzip2/ref/arm/linux/o3-timing/config.ini M tests/long/se/70.twolf/ref/arm/linux/o3-timing/config.ini M tests/quick/fs/10.linux-boot/ref/arm/linux/realview-simple-atomic-dual/config.ini M tests/quick/fs/10.linux-boot/ref/arm/linux/realview-simple-timing-dual/config.ini M tests/quick/se/00.hello/ref/arm/linux/o3-timing/config.ini 43 files changed, 880 insertions(+), 444 deletions(-) diff --git a/configs/common/cores/arm/O3_ARM_v7a.py b/configs/common/cores/arm/O3_ARM_v7a.py index fde4d3c..b0ba128 100644 --- a/configs/common/cores/arm/O3_ARM_v7a.py +++ b/configs/common/cores/arm/O3_ARM_v7a.py @@ -201,4 +201,5 @@ clusivity = 'mostly_excl' # Simple stride prefetcher prefetcher = StridePrefetcher(degree=8, latency = 1) -tags = RandomRepl() +tags = BaseSetAssoc() +repl_policy = RandomRP() diff --git a/configs/common/cores/arm/ex5_LITTLE.py b/configs/common/cores/arm/ex5_LITTLE.py index a866b16..1ae0f16 100644 --- a/configs/common/cores/arm/ex5_LITTLE.py +++ b/configs/common/cores/arm/ex5_LITTLE.py @@ -145,6 +145,5 @@ clusivity = 'mostly_excl' # Simple stride prefetcher prefetcher = StridePrefetcher(degree=1, latency = 1) -tags = RandomRepl() - - +tags = BaseSetAssoc() +repl_policy = RandomRP() diff --git a/configs/common/cores/arm/ex5_big.py b/configs/common/cores/arm/ex5_big.py index f4ca047..96323f4 100644 --- a/configs/common/cores/arm/ex5_big.py +++ b/configs/common/cores/arm/ex5_big.py @@ -197,4 +197,5 @@ clusivity = 'mostly_excl' # Simple stride prefetcher prefetcher = StridePrefetcher(degree=8, latency = 1) -tags = RandomRepl() +tags = BaseSetAssoc() +repl_policy = RandomRP() diff --git a/src/mem/cache/Cache.py b/src/mem/cache/Cache.py index bac6c73..544789b 100644 --- a/src/mem/cache/Cache.py +++ b/src/mem/cache/Cache.py @@ -43,6 +43,7 @@ from m5.proxy import * from