Skip to content

feat(Prefetcher): add CDP prefetcher in L2 - #15

Open
ChrisYzcc wants to merge 46 commits into
masterfrom
feat-l2-cdp
Open

feat(Prefetcher): add CDP prefetcher in L2#15
ChrisYzcc wants to merge 46 commits into
masterfrom
feat-l2-cdp

Conversation

@ChrisYzcc

@ChrisYzcc ChrisYzcc commented Jun 11, 2026

Copy link
Copy Markdown

Summary

This PR implements a Content-Directed Prefetcher (CDP) in the L2 cache to improve performance for pointer-chasing workloads.

Main changes

  • Add the CDP prefetcher implementation (coupledL2/prefetch/CDP.scala).
  • Add CDP detection trigger logic to MainPipe.
  • Add CDP training trigger logic to MainPipe, and classify prefetch training destination types using is_cdp_train and is_other_train in the PrefetchTrain bundle.
  • Add the pfDepth field to the cacheline metadata.
  • Add PrefetcherMonitor to support accuracy-based dynamic tuning for CDP (currently disabled).
  • Add a dedicated PrefetchTrain request buffer for each prefetcher in prefetch/Prefetcher.scala.
  • Add TLB request arbitration between BOP and CDP in prefetch/Prefetcher.scala.

Performance

On the SPEC CPU2006 GCC15 0.3c checkpoint suite, CDP achieves:

  • +1.58% integer score
  • +0.57% overall score
{0CCB9E9D-4A4B-4F95-804E-9C90815DC9AC}

This comment was marked as outdated.

@ChrisYzcc
ChrisYzcc force-pushed the feat-l2-cdp branch 2 times, most recently from 3c0677c to 7713c73 Compare July 14, 2026 04:34
ChrisYzcc added 24 commits July 16, 2026 16:44
@ChrisYzcc ChrisYzcc changed the title feat(CDP): add CDP prefetcher in L2 feat(Prefetcher): add CDP prefetcher in L2 Jul 19, 2026
@ChrisYzcc ChrisYzcc reopened this Jul 19, 2026
@ChrisYzcc
ChrisYzcc marked this pull request as ready for review July 19, 2026 06:16
@linjuanZ
linjuanZ requested a review from Ma-YX July 21, 2026 07:54
Comment thread src/main/scala/coupledL2/prefetch/CDP.scala Outdated
Comment thread src/main/scala/coupledL2/prefetch/Prefetcher.scala Outdated
Comment thread src/main/scala/coupledL2/prefetch/Prefetcher.scala Outdated
Comment thread src/main/scala/coupledL2/prefetch/Prefetcher.scala Outdated
Comment thread src/main/scala/coupledL2/prefetch/Prefetcher.scala Outdated
Comment thread src/main/scala/coupledL2/prefetch/Prefetcher.scala Outdated
Comment thread src/main/scala/coupledL2/MainPipe.scala Outdated
Comment thread src/main/scala/coupledL2/MainPipe.scala
Comment thread src/main/scala/coupledL2/MainPipe.scala Outdated
Comment thread src/main/scala/coupledL2/MainPipe.scala Outdated
Comment thread src/main/scala/coupledL2/prefetch/PrefetcherMonitor.scala Outdated
Comment thread src/main/scala/coupledL2/prefetch/CDP.scala
Comment thread src/main/scala/coupledL2/prefetch/CDP.scala
Comment thread src/main/scala/coupledL2/prefetch/CDP.scala Outdated
Comment thread src/main/scala/coupledL2/prefetch/CDP.scala Outdated
Comment thread src/main/scala/coupledL2/prefetch/CDP.scala Outdated
Comment thread src/main/scala/coupledL2/prefetch/CDP.scala Outdated
Comment thread src/main/scala/coupledL2/prefetch/CDP.scala Outdated
Comment thread src/main/scala/coupledL2/prefetch/CDP.scala Outdated
Comment thread src/main/scala/coupledL2/prefetch/CDP.scala Outdated
Comment thread src/main/scala/coupledL2/prefetch/CDP.scala Outdated
Comment thread src/main/scala/coupledL2/prefetch/CDP.scala Outdated
Comment thread src/main/scala/coupledL2/prefetch/CDP.scala Outdated
Comment thread src/main/scala/coupledL2/prefetch/CDP.scala Outdated
…h requests; let CSR signal control CDP enable
Consolidate CDP detect pipeline payloads into a width-parameterized task bundle. Track VPN main-entry and sub-entry validity separately, initialize metadata on allocation, and simplify pipeline register handling.
Comment thread src/main/scala/coupledL2/prefetch/CDP.scala
@ChrisYzcc
ChrisYzcc requested a review from linjuanZ July 27, 2026 01:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants