Skip to content

Tage#443

Merged
ABenC377 merged 86 commits intodevfrom
TAGE
May 15, 2025
Merged

Tage#443
ABenC377 merged 86 commits intodevfrom
TAGE

Conversation

@ABenC377
Copy link
Copy Markdown
Contributor

@ABenC377 ABenC377 commented Dec 9, 2024

Adding a TAGE branch predictor.

Performance relative to previous best (Perceptron) summarised below:

Benchmark BP_update time BP_update mispredict TAGE time TAGE mispredict Performance change (percentage) Mispredict change (raw)
CloverLeaf serial gcc8.3.0 armv8.4 11715 10.70% 10511 2.06% -10.28% ✅ -8.64% ✅
CloverLeaf serial gcc9.3.0 armv8.4 11830 10.40% 10321 1.85% -12.76% ✅ -8.55% ✅
CloverLeaf serial gcc10.3.0 armv8.4 12457 12.70% 10550 1.74% -15.31% ✅ -10.96% ✅
CloverLeaf serial armclang20 armv8.4 11041 14.50% 9069 1.85% -17.86% ✅ -12.65% ✅
CloverLeaf openmp gcc8.3.0 armv8.4 15635 9.78% 14530 2.00% -7.07% ✅ -7.78% ✅
CloverLeaf openmp gcc9.3.0 armv8.4 15559 7.82% 14680 1.64% -5.65% ✅ -6.18% ✅
CloverLeaf openmp gcc10.3.0 armv8.4 15291 9.33% 13872 1.56% -9.28% ✅ -7.77% ✅
CloverLeaf openmp armclang20 armv8.4 13939 13.30% 12273 1.74% -11.95% ✅ -11.56% ✅
miniBUDE openmp gcc8.3.0 armv8.4 21292 7.37% 20613 5.71% -3.19% ✅ -1.66% ✅
miniBUDE openmp gcc9.3.0 armv8.4 20652 7.43% 20364 5.71% -1.39% ✅ -1.72% ✅
miniBUDE openmp gcc10.3.0 armv8.4 20810 7.41% 20691 5.71% -0.57% ✅ -1.70% ✅
miniBUDE openmp armclang20 armv8.4 19365 10.30% 19808 5.05% +2.29% ❌ -5.25% ✅
STREAM serial gcc8.3.0 armv8.4 6619 0.51% 6672 0.42% +0.80% ❌ -0.09% ✅
STREAM serial gcc9.3.0 armv8.4 6612 0.50% 6778 0.42% +2.51% ❌ -0.08% ✅
STREAM serial gcc10.3.0 armv8.4 6583 0.44% 6649 0.42% +1.00% ❌ -0.03% ✅
STREAM serial armclang20 armv8.4 7018 1.01% 7071 0.75% +0.76% ❌ -0.26% ✅
STREAM openmp gcc8.3.0 armv8.4 10200 1.90% 10066 0.67% -1.31% ✅ -1.23% ✅
STREAM openmp gcc9.3.0 armv8.4 10037 2.08% 9859 0.50% -1.77% ✅ -1.58% ✅
STREAM openmp gcc10.3.0 armv8.4 9814 1.81% 9799 0.63% -0.15% ✅ -1.18% ✅
STREAM openmp armclang20 armv8.4 10292 3.04% 10459 1.21% +1.62% ❌ -1.83% ✅
TeaLeaf 2D serial gcc8.3.0 armv8.4 11874 15.20% 10871 1.04% -8.45% ✅ -14.16% ✅
TeaLeaf 2D serial gcc9.3.0 armv8.4 11846 15.20% 10847 1.05% -8.43% ✅ -14.15% ✅
TeaLeaf 2D serial gcc10.3.0 armv8.4 12020 15.20% 11078 1.05% -7.84% ✅ -14.15% ✅
TeaLeaf 2D serial armclang20 armv8.4 21353 9.16% 20597 3.27% -3.54% ✅ -5.89% ✅
TeaLeaf 2D openmp gcc8.3.0 armv8.4 17221 7.05% 16118 1.18% -6.40% ✅ -5.87% ✅
TeaLeaf 2D openmp gcc9.3.0 armv8.4 17224 7.75% 16485 1.43% -4.29% ✅ -6.32% ✅
TeaLeaf 2D openmp gcc10.3.0 armv8.4 16595 6.70% 16221 0.85% -2.25% ✅ -5.85% ✅
TeaLeaf 2D openmp armclang20 armv8.4 52356 9.29% 50683 2.38% -3.20% ✅ -6.91% ✅
TeaLeaf 3D serial gcc8.3.0 armv8.4 13645 8.73% 13203 1.15% -3.24% ✅ -7.58% ✅
TeaLeaf 3D serial gcc9.3.0 armv8.4 14157 10.70% 13463 1.57% -4.90% ✅ -9.13% ✅
TeaLeaf 3D serial gcc10.3.0 armv8.4 14331 11.00% 13167 1.50% -8.12% ✅ -9.50% ✅
TeaLeaf 3D serial armclang20 armv8.4 19199 22.40% 16675 1.69% -13.15% ✅ -20.71% ✅
TeaLeaf 3D openmp gcc8.3.0 armv8.4 22251 7.62% 21775 2.30% -2.14% ✅ -5.32% ✅
TeaLeaf 3D openmp gcc9.3.0 armv8.4 22774 9.03% 21750 1.47% -4.50% ✅ -7.56% ✅
TeaLeaf 3D openmp gcc10.3.0 armv8.4 22229 8.33% 20867 0.99% -6.13% ✅ -7.34% ✅
TeaLeaf 3D openmp armclang20 armv8.4 40910 16.90% 37148 1.30% -9.20% ✅ -15.60% ✅
CloverLeaf serial gcc8.3.0 armv8.4+sve 11137 10.90% 9820 2.31% -11.83% ✅ -8.59% ✅
CloverLeaf serial gcc9.3.0 armv8.4+sve 11051 9.98% 9909 1.86% -10.33% ✅ -8.12% ✅
CloverLeaf serial gcc10.3.0 armv8.4+sve 11140 12.80% 9462 1.80% -15.06% ✅ -11.00% ✅
CloverLeaf serial armclang20 armv8.4+sve 11051 13.30% 9280 1.50% -16.03% ✅ -11.80% ✅
CloverLeaf openmp gcc8.3.0 armv8.4+sve 14845 9.65% 13076 1.87% -11.92% ✅ -7.78% ✅
CloverLeaf openmp gcc9.3.0 armv8.4+sve 15310 7.96% 13208 1.80% -13.73% ✅ -6.16% ✅
CloverLeaf openmp gcc10.3.0 armv8.4+sve 14754 9.62% 13397 1.56% -9.20% ✅ -8.06% ✅
CloverLeaf openmp armclang20 armv8.4+sve 14309 12.20% 12493 1.29% -12.69% ✅ -10.91% ✅
miniBUDE openmp gcc8.3.0 armv8.4+sve 8707 14.20% 7917 3.61% -9.07% ✅ -10.59% ✅
miniBUDE openmp gcc9.3.0 armv8.4+sve 8440 7.43% 7656 3.54% -9.29% ✅ -3.89% ✅
miniBUDE openmp gcc10.3.0 armv8.4+sve 8458 7.41% 7695 3.41% -9.02% ✅ -4.00% ✅
miniBUDE openmp armclang20 armv8.4+sve 8655 20.30% 7961 1.21% -8.02% ✅ -19.09% ✅
STREAM serial gcc8.3.0 armv8.4+sve 3521 1.51% 3572 1.28% +1.45% ❌ -0.23% ✅
STREAM serial gcc9.3.0 armv8.4+sve 3534 1.50% 3980 1.28% +12.62% ❌ -0.22% ✅
STREAM serial gcc10.3.0 armv8.4+sve 3481 1.44% 3787 1.28% +8.79% ❌ -0.16% ✅
STREAM serial armclang20 armv8.4+sve 2207 2.01% 2268 1.46% +2.76% ❌ -0.55% ✅
STREAM openmp gcc8.3.0 armv8.4+sve 6821 3.90% 6740 1.79% -1.19% ✅ -2.11% ✅
STREAM openmp gcc9.3.0 armv8.4+sve 7198 3.08% 6686 1.01% -7.11% ✅ -2.07% ✅
STREAM openmp gcc10.3.0 armv8.4+sve 7067 2.81% 6646 1.18% -5.96% ✅ -1.63% ✅
STREAM openmp armclang20 armv8.4+sve 6428 3.04% 5867 1.44% -8.73% ✅ -1.60% ✅
TeaLeaf 2D serial gcc8.3.0 armv8.4+sve 11725 15.20% 10942 1.04% -6.68% ✅ -14.16% ✅
TeaLeaf 2D serial gcc9.3.0 armv8.4+sve 11584 15.20% 10899 1.04% -5.91% ✅ -14.16% ✅
TeaLeaf 2D serial gcc10.3.0 armv8.4+sve 11879 15.20% 11034 1.05% -7.11% ✅ -14.15% ✅
TeaLeaf 2D serial armclang20 armv8.4+sve 11137 9.16% 7370 0.87% -33.82% ✅ -8.29% ✅
TeaLeaf 2D openmp gcc8.3.0 armv8.4+sve 17041 7.05% 16349 1.18% -4.06% ✅ -5.87% ✅
TeaLeaf 2D openmp gcc9.3.0 armv8.4+sve 17451 7.75% 16532 1.43% -5.27% ✅ -6.32% ✅
TeaLeaf 2D openmp gcc10.3.0 armv8.4+sve 16463 6.70% 16187 0.85% -1.68% ✅ -5.85% ✅
TeaLeaf 2D openmp armclang20 armv8.4+sve 52701 9.29% 49203 1.63% -6.64% ✅ -7.66% ✅
TeaLeaf 3D serial gcc8.3.0 armv8.4+sve 12169 18.73% 10629 1.60% -12.66% ✅ -17.13% ✅
TeaLeaf 3D serial gcc9.3.0 armv8.4+sve 12183 18.70% 10639 1.07% -12.67% ✅ -17.63% ✅
TeaLeaf 3D serial gcc10.3.0 armv8.4+sve 12405 18.30% 10616 1.58% -14.42% ✅ -16.72% ✅
TeaLeaf 3D serial armclang20 armv8.4+sve 19363 22.40% 15654 1.42% -19.16% ✅ -20.98% ✅
TeaLeaf 3D openmp gcc8.3.0 armv8.4+sve 21676 7.62% 18948 2.22% -12.59% ✅ -5.40% ✅
TeaLeaf 3D openmp gcc9.3.0 armv8.4+sve 20728 9.03% 18989 1.51% -8.39% ✅ -7.52% ✅
TeaLeaf 3D openmp gcc10.3.0 armv8.4+sve 20438 8.33% 18652 0.85% -8.74% ✅ -7.48% ✅
TeaLeaf 3D openmp armclang20 armv8.4+sve 41040 8.49% 37791 0.88% -7.92% ✅ -7.61% ✅

FinnWilkinson
FinnWilkinson previously approved these changes May 8, 2025
@ABenC377 ABenC377 added the 0.9.7 Part of SimEng Release 0.9.7 label May 8, 2025
JosephMoore25
JosephMoore25 previously approved these changes May 8, 2025
Copy link
Copy Markdown
Contributor

@JosephMoore25 JosephMoore25 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks all good to me. Clean implementation. Would maybe change a couple of data structures (namely branch history to a circular buffer) just to optimise memory usage, but not worth halting this PR further for. Nice work!

Copy link
Copy Markdown
Contributor

@dANW34V3R dANW34V3R left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very clean. Couple of minor comments but happy to approve

Comment thread src/lib/CMakeLists.txt Outdated
Comment thread test/unit/CMakeLists.txt Outdated
Comment thread src/lib/branchpredictors/TagePredictor.cc
FinnWilkinson
FinnWilkinson previously approved these changes May 14, 2025
JosephMoore25
JosephMoore25 previously approved these changes May 14, 2025
Comment thread CMakeLists.txt
@ABenC377 ABenC377 dismissed stale reviews from JosephMoore25 and FinnWilkinson via a475884 May 15, 2025 08:49
Copy link
Copy Markdown
Contributor

@jj16791 jj16791 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All looks good, great work Alex! Looks like this cango in after it passes all the GH checks

@github-project-automation github-project-automation bot moved this from Changes Requested to Approved to Merge in SimEng Development May 15, 2025
@ABenC377 ABenC377 merged commit 0281461 into dev May 15, 2025
37 checks passed
@github-project-automation github-project-automation bot moved this from Approved to Merge to Done in SimEng Development May 15, 2025
@ABenC377 ABenC377 deleted the TAGE branch May 15, 2025 11:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

0.9.7 Part of SimEng Release 0.9.7 enhancement New feature or request performance Performance optimisation

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

5 participants