saving current changes

This commit is contained in:
2025-07-27 21:08:47 +01:00
parent 4ec5e6da4c
commit 9743fa8567
16 changed files with 393 additions and 336 deletions

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

View File

@@ -43,9 +43,8 @@
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Encoding Ranges as Bounds to the Pointer}{3}{subsection.3.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {4}128 bit compressed bounds}{3}{section.4}\protected@file@percent }
\newlabel{sec:128bitCompressedBounds}{{4}{3}{128 bit compressed bounds}{section.4}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Instrumenting Block-Based Allocators with Physically Contiguous Memory}{3}{subsection.4.1}\protected@file@percent }
\citation{CheriABI}
\citation{evans_scalable_nodate}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Instrumenting Block-Based Allocators with Physically Contiguous Memory}{4}{subsection.4.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {5}Memory allocator design}{4}{section.5}\protected@file@percent }
\newlabel{sec:MemoryAllocator}{{5}{4}{Memory allocator design}{section.5}{}}
\@writefile{loa}{\contentsline {algorithm}{\numberline {1}{\ignorespaces Malloc implementation}}{4}{algorithm.1}\protected@file@percent }
@@ -57,13 +56,15 @@
\@writefile{toc}{\contentsline {section}{\numberline {6}Embedding FAT allocator inside Jemalloc}{4}{section.6}\protected@file@percent }
\newlabel{sec:JemallocFATAllocator}{{6}{4}{Embedding FAT allocator inside Jemalloc}{section.6}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Mmap replaced with MALLOC}{4}{subsection.6.1}\protected@file@percent }
\citation{jemalloc}
\citation{jemalloc}
\citation{evans_scalable_nodate}
\citation{evans_scalable_nodate}
\citation{jemalloc}
\citation{cheribsd}
\citation{Benchmark}
\citation{Morello}
\citation{BenchmarkABI}
\citation{PerformanceCounter}
\@writefile{loa}{\contentsline {algorithm}{\numberline {4}{\ignorespaces Modified Jemalloc Memory Mapping Routines}}{5}{algorithm.4}\protected@file@percent }
\newlabel{alg:JemallocMalloc}{{4}{5}{Modified Jemalloc Memory Mapping Routines}{algorithm.4}{}}
\@writefile{loa}{\contentsline {algorithm}{\numberline {5}{\ignorespaces os\_pages\_unmap}}{5}{algorithm.5}\protected@file@percent }
@@ -73,6 +74,7 @@
\newlabel{sec:Evaluation}{{7}{5}{Evaluation}{section.7}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {7.1}Experiment setup}{5}{subsection.7.1}\protected@file@percent }
\newlabel{sec:Experiment}{{7.1}{5}{Experiment setup}{subsection.7.1}{}}
\citation{PerformanceCounter}
\@writefile{toc}{\contentsline {subsection}{\numberline {7.2}Benchmarks}{6}{subsection.7.2}\protected@file@percent }
\newlabel{sec:Micro}{{7.2.1}{6}{Micro benchmark}{subsubsection.7.2.1}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.2.1}Micro benchmark}{6}{subsubsection.7.2.1}\protected@file@percent }
@@ -85,14 +87,14 @@
\citation{holt1995}
\@writefile{toc}{\contentsline {subsection}{\numberline {7.3}Results and discussion}{7}{subsection.7.3}\protected@file@percent }
\newlabel{sec:Results}{{7.3}{7}{Results and discussion}{subsection.7.3}{}}
\newlabel{fig:dtlb-walk}{{2a}{8}{DTLB Walks}{figure.caption.5}{}}
\newlabel{sub@fig:dtlb-walk}{{a}{8}{DTLB Walks}{figure.caption.5}{}}
\newlabel{fig:l1tlb-reads}{{2b}{8}{L1 TLB Reads}{figure.caption.5}{}}
\newlabel{sub@fig:l1tlb-reads}{{b}{8}{L1 TLB Reads}{figure.caption.5}{}}
\newlabel{fig:l1tlb-refill}{{2c}{8}{L1 TLB Refill}{figure.caption.5}{}}
\newlabel{sub@fig:l1tlb-refill}{{c}{8}{L1 TLB Refill}{figure.caption.5}{}}
\newlabel{fig:l2tlb-reads}{{2d}{8}{L2 TLB Reads}{figure.caption.5}{}}
\newlabel{sub@fig:l2tlb-reads}{{d}{8}{L2 TLB Reads}{figure.caption.5}{}}
\newlabel{fig:l1tlb-reads}{{2a}{8}{L1 TLB Reads}{figure.caption.5}{}}
\newlabel{sub@fig:l1tlb-reads}{{a}{8}{L1 TLB Reads}{figure.caption.5}{}}
\newlabel{fig:l2tlb-reads}{{2b}{8}{L2 TLB Reads}{figure.caption.5}{}}
\newlabel{sub@fig:l2tlb-reads}{{b}{8}{L2 TLB Reads}{figure.caption.5}{}}
\newlabel{fig:dtlb-walk}{{2c}{8}{DTLB Walks}{figure.caption.5}{}}
\newlabel{sub@fig:dtlb-walk}{{c}{8}{DTLB Walks}{figure.caption.5}{}}
\newlabel{fig:l1tlb-refill}{{2d}{8}{L1 DTLB Refill}{figure.caption.5}{}}
\newlabel{sub@fig:l1tlb-refill}{{d}{8}{L1 DTLB Refill}{figure.caption.5}{}}
\newlabel{fig:ll-cache-rd}{{2e}{8}{LL Cache Reads}{figure.caption.5}{}}
\newlabel{sub@fig:ll-cache-rd}{{e}{8}{LL Cache Reads}{figure.caption.5}{}}
\newlabel{fig:wallclock}{{2f}{8}{Wall Clock Time}{figure.caption.5}{}}
@@ -114,8 +116,8 @@
\bibcite{karakostas_redundant_2015}{{11}{}{{Karakostas et~al.}}{{Karakostas, Gandhi, Ayar, Cristal, Hill, {McKinley}, Nemirovsky, Swift, and Ünsal}}}
\bibcite{chen_flexpointer_2023}{{12}{2023}{{Chen et~al.}}{{Chen, Tong, Yang, Yi, and Cheng}}}
\bibcite{CheriABI}{{13}{2019}{{Davis et~al.}}{{Davis, Watson, Richardson, Neumann, Moore, Baldwin, Chisnall, Clarke, Filardo, Gudka, Joannou, Laurie, Markettos, Maste, Mazzinghi, Napierala, Norton, Roe, Sewell, Son, and Woodruff}}}
\bibcite{evans_scalable_nodate}{{14}{}{{Evans}}{{}}}
\bibcite{jemalloc}{{15}{2006}{{Evans}}{{}}}
\bibcite{jemalloc}{{14}{2006}{{Evans}}{{}}}
\bibcite{evans_scalable_nodate}{{15}{}{{Evans}}{{}}}
\bibcite{cheribsd}{{16}{}{{che}}{{}}}
\bibcite{Benchmark}{{17}{}{{Ben}}{{}}}
\bibcite{Morello}{{18}{}{{Mor}}{{}}}

View File

@@ -146,15 +146,15 @@ Brooks Davis, Robert N.~M. Watson, Alexander Richardson, Peter~G. Neumann,
\newblock \doi{10.1145/3297858.3304042}.
\newblock URL \url{https://doi.org/10.1145/3297858.3304042}.
\bibitem[Evans()]{evans_scalable_nodate}
Jason Evans.
\newblock A {Scalable} {Concurrent} malloc(3) {Implementation} for {FreeBSD}.
\bibitem[Evans(2006)]{jemalloc}
Jason Evans.
\newblock A scalable concurrent malloc (3) implementation for freebsd.
\newblock In \emph{Proc. of the bsdcan conference, ottawa, canada}, 2006.
\bibitem[Evans()]{evans_scalable_nodate}
Jason Evans.
\newblock A {Scalable} {Concurrent} malloc(3) {Implementation} for {FreeBSD}.
\bibitem[che()]{cheribsd}
Benchmark {ABI} - {CheriBSD} 23.11 new features tutorial.
\newblock URL

View File

@@ -1,13 +1,13 @@
# Fdb version 4
["bibtex paper"] 1750705998.27393 "paper.aux" "paper.bbl" "paper" 1750706000.11317 0
["bibtex paper"] 1753645029.46016 "paper.aux" "paper.bbl" "paper" 1753646783.20149 0
"./paperReferences.bib" 1750702099.74581 54714 19039cdfd8414d201259ef3610c2b156 ""
"/usr/local/texlive/2025/texmf-dist/bibtex/bst/natbib/unsrtnat.bst" 1233624470 24550 a41a6405f4de768c43e871d9fbce2bc8 ""
"paper.aux" 1750705999.79329 10069 17bcbc579b981872002f8e9b5c2e2978 "pdflatex"
"paper.aux" 1753646782.87726 10111 c1687afac52aee7e78cc42d3a1da73cf "pdflatex"
(generated)
"paper.bbl"
"paper.blg"
(rewritten before read)
["pdflatex"] 1750705998.36154 "paper.tex" "paper.pdf" "paper" 1750706000.1133 0
["pdflatex"] 1753646781.23861 "paper.tex" "paper.pdf" "paper" 1753646783.20162 0
"/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/inconsolata/i4-t1-4.enc" 1558214095 7693 0f2dce6d313c82989ec3a67fc24df2a0 ""
"/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_25tcsq.enc" 1490131464 2921 8ca0eb0831f9bc5da080d3697cfe67bf ""
"/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_76gpa5.enc" 1490131464 2933 9ad527ce78d7c5fa0a642dead095f172 ""
@@ -221,17 +221,17 @@
"/usr/local/texlive/2025/texmf-var/fonts/map/pdftex/updmap/pdftex.map" 1743605858 5467155 19efa205003f9ecad95fbbaa6ff24da1 ""
"/usr/local/texlive/2025/texmf-var/web2c/pdftex/pdflatex.fmt" 1743605772 3345731 9f70a6727154d056b4116903856deae2 ""
"/usr/local/texlive/2025/texmf.cnf" 1741450484 577 418a7058ec8e006d8704f60ecd22c938 ""
"diagram/benchmarks-group/bargraph-large-dtlb-walk.png" 1747839169.51412 55694 1d2244ce5bf0e4a9c6b7c9faf2176c0e ""
"diagram/benchmarks-group/bargraph-large-l1tlb-reads.png" 1747839169.51112 55892 7f51ff764bcc2892c6114e6d056d96e2 ""
"diagram/benchmarks-group/bargraph-large-l1tlb-refill.png" 1747839169.50512 55494 10dad415512d4b39cbf8ea65851df404 ""
"diagram/benchmarks-group/bargraph-large-l2tlb-reads.png" 1747839169.50845 54947 eb8cf45e5c18c985341539250aaf1907 ""
"diagram/benchmarks-group/bargraph-large-ll-cache-rd.png" 1747839169.49301 52855 22a83d7bc1ca7dfa1c47f31936824ff6 ""
"diagram/benchmarks-group/bargraph-large-wallclock.png" 1747839751.63939 55378 1da56901d20a39a645beca6272b36eaf ""
"diagram/benchmarks-group/large/bargraph-large-dtlb_walk.png" 1753643390.42674 87466 43cc9d9e52ad24eda0534e9c374cb177 ""
"diagram/benchmarks-group/large/bargraph-large-l1_tlb_rd.png" 1753643390.42819 85873 12aaa5f38f23c0de67f2b955760bd468 ""
"diagram/benchmarks-group/large/bargraph-large-l1tlb_refill.png" 1753643390.43088 87037 94cbd9625ae4cfd18cd2dc86434f81a9 ""
"diagram/benchmarks-group/large/bargraph-large-l2_tlb_rd.png" 1753643390.43177 86347 c2c0623228d38c390fd0bca4fc3a2061 ""
"diagram/benchmarks-group/large/bargraph-large-llcache.png" 1753643390.4343 81964 2b21d389f7a0bb5b2a0174d7c020779a ""
"diagram/benchmarks-group/large/bargraph-large-wallclock.png" 1753643390.43523 85258 015855fa73ccdb4ae859b79da8032169 ""
"diagram/drawing.pdf" 1748909319.05561 28646 0eb4d6c5fd7bfd13117f881769bcc40b ""
"paper.aux" 1750705999.79329 10069 17bcbc579b981872002f8e9b5c2e2978 "pdflatex"
"paper.bbl" 1750705998.3586 9667 69909f93a1ff23493346e23e89c1311f "bibtex paper"
"paper.out" 1750705999.79419 4008 21fd7693a5a3059545203aa7db2ea238 "pdflatex"
"paper.tex" 1750705972.02315 109620 7c35b92413acedf60b17b8595a2bf996 ""
"paper.aux" 1753646782.87726 10111 c1687afac52aee7e78cc42d3a1da73cf "pdflatex"
"paper.bbl" 1753645029.54671 9667 c839f5ff789de0c36cd440f7e70c5f20 "bibtex paper"
"paper.out" 1753646782.87805 4008 21fd7693a5a3059545203aa7db2ea238 "pdflatex"
"paper.tex" 1753646764.56991 112718 a61104490f86f49437149752b3211c7a ""
(generated)
"paper.aux"
"paper.log"

View File

@@ -535,36 +535,36 @@ INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/txmiaX.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinBiolinumTI-tlf-t1.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/vf/public/libertine/LinBiolinumTI-tlf-t1.vf
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinBiolinumTI-tlf-t1--base.tfm
INPUT ./diagram/benchmarks-group/bargraph-large-dtlb-walk.png
INPUT ./diagram/benchmarks-group/bargraph-large-dtlb-walk.png
INPUT ./diagram/benchmarks-group/bargraph-large-dtlb-walk.png
INPUT ./diagram/benchmarks-group/bargraph-large-dtlb-walk.png
INPUT ./diagram/benchmarks-group/bargraph-large-dtlb-walk.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-refill.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-refill.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-refill.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-refill.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-refill.png
INPUT ./diagram/benchmarks-group/bargraph-large-l2tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l2tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l2tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l2tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l2tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png
INPUT ./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png
INPUT ./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png
INPUT ./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png
INPUT ./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png
INPUT ./diagram/benchmarks-group/bargraph-large-wallclock.png
INPUT ./diagram/benchmarks-group/bargraph-large-wallclock.png
INPUT ./diagram/benchmarks-group/bargraph-large-wallclock.png
INPUT ./diagram/benchmarks-group/bargraph-large-wallclock.png
INPUT ./diagram/benchmarks-group/bargraph-large-wallclock.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-l1_tlb_rd.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-l1_tlb_rd.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-l1_tlb_rd.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-l1_tlb_rd.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-l1_tlb_rd.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-l2_tlb_rd.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-l2_tlb_rd.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-l2_tlb_rd.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-l2_tlb_rd.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-l2_tlb_rd.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-dtlb_walk.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-dtlb_walk.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-dtlb_walk.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-dtlb_walk.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-dtlb_walk.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-l1tlb_refill.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-l1tlb_refill.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-l1tlb_refill.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-l1tlb_refill.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-l1tlb_refill.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-llcache.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-llcache.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-llcache.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-llcache.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-llcache.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-wallclock.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-wallclock.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-wallclock.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-wallclock.png
INPUT ./diagram/benchmarks-group/large/bargraph-large-wallclock.png
INPUT ./paper.bbl
INPUT ./paper.bbl
INPUT paper.bbl

View File

@@ -1,4 +1,4 @@
This is pdfTeX, Version 3.141592653-2.6-1.40.27 (TeX Live 2025) (preloaded format=pdflatex 2025.4.2) 23 JUN 2025 20:13
This is pdfTeX, Version 3.141592653-2.6-1.40.27 (TeX Live 2025) (preloaded format=pdflatex 2025.4.2) 27 JUL 2025 21:06
entering extended mode
\write18 enabled.
%&-line parsing enabled.
@@ -1109,52 +1109,52 @@ Package caption Info: listings package is loaded.
Package caption Info: End \AtBeginDocument code.
\c@lstlisting=\count367
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 17.28pt on input line 318.
(Font) scaled to size 17.28pt on input line 330.
LaTeX Font Info: Trying to load font information for T1+LinuxBiolinumT-TLF o
n input line 318.
n input line 330.
(/usr/local/texlive/2025/texmf-dist/tex/latex/libertine/T1LinuxBiolinumT-TLF.fd
File: T1LinuxBiolinumT-TLF.fd 2017/03/20 (autoinst) Font definitions for T1/Lin
uxBiolinumT-TLF.
)
LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be
(Font) scaled to size 17.28pt on input line 318.
(Font) scaled to size 17.28pt on input line 330.
Package microtype Info: Loading generic protrusion settings for font family
(microtype) `LinuxBiolinumT-TLF' (encoding: T1).
(microtype) For optimal results, create family-specific settings.
(microtype) See the microtype manual for details.
LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/b/n' will be
(Font) scaled to size 17.28pt on input line 318.
(Font) scaled to size 17.28pt on input line 330.
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 12.0pt on input line 318.
(Font) scaled to size 12.0pt on input line 330.
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 12.0pt on input line 318.
(Font) scaled to size 12.0pt on input line 330.
Package microtype Info: Loading generic protrusion settings for font family
(microtype) `LinuxLibertineT-TLF' (encoding: OT1).
(microtype) For optimal results, create family-specific settings.
(microtype) See the microtype manual for details.
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 8.8pt on input line 318.
(Font) scaled to size 8.8pt on input line 330.
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 6.6pt on input line 318.
(Font) scaled to size 6.6pt on input line 330.
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
(Font) scaled to size 12.0pt on input line 318.
(Font) scaled to size 12.0pt on input line 330.
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
(Font) scaled to size 8.8pt on input line 318.
(Font) scaled to size 8.8pt on input line 330.
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
(Font) scaled to size 6.6pt on input line 318.
(Font) scaled to size 6.6pt on input line 330.
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
(Font) scaled to size 12.0pt on input line 318.
(Font) scaled to size 12.0pt on input line 330.
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
(Font) scaled to size 8.8pt on input line 318.
(Font) scaled to size 8.8pt on input line 330.
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
(Font) scaled to size 6.6pt on input line 318.
(Font) scaled to size 6.6pt on input line 330.
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
(Font) scaled to size 12.0pt on input line 318.
(Font) scaled to size 12.0pt on input line 330.
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
(Font) scaled to size 8.8pt on input line 318.
(Font) scaled to size 8.8pt on input line 330.
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
(Font) scaled to size 6.6pt on input line 318.
(Font) scaled to size 6.6pt on input line 330.
(/usr/local/texlive/2025/texmf-dist/tex/latex/microtype/mt-msa.cfg
File: mt-msa.cfg 2006/02/04 v1.1 microtype config. file: AMS symbols (a) (RS)
)
@@ -1162,31 +1162,31 @@ File: mt-msa.cfg 2006/02/04 v1.1 microtype config. file: AMS symbols (a) (RS)
File: mt-msb.cfg 2005/06/01 v1.0 microtype config. file: AMS symbols (b) (RS)
)
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
(Font) scaled to size 12.0pt on input line 318.
(Font) scaled to size 12.0pt on input line 330.
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
(Font) scaled to size 8.8pt on input line 318.
(Font) scaled to size 8.8pt on input line 330.
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
(Font) scaled to size 6.6pt on input line 318.
(Font) scaled to size 6.6pt on input line 330.
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
(Font) scaled to size 12.0pt on input line 318.
(Font) scaled to size 12.0pt on input line 330.
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
(Font) scaled to size 8.8pt on input line 318.
(Font) scaled to size 8.8pt on input line 330.
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
(Font) scaled to size 6.6pt on input line 318.
(Font) scaled to size 6.6pt on input line 330.
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
(Font) scaled to size 12.0pt on input line 318.
(Font) scaled to size 12.0pt on input line 330.
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
(Font) scaled to size 8.8pt on input line 318.
(Font) scaled to size 8.8pt on input line 330.
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
(Font) scaled to size 6.6pt on input line 318.
(Font) scaled to size 6.6pt on input line 330.
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
(Font) scaled to size 12.0pt on input line 318.
(Font) scaled to size 12.0pt on input line 330.
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
(Font) scaled to size 8.8pt on input line 318.
(Font) scaled to size 8.8pt on input line 330.
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
(Font) scaled to size 6.6pt on input line 318.
(Font) scaled to size 6.6pt on input line 330.
LaTeX Font Info: Trying to load font information for TS1+LinuxLibertineT-TLF
on input line 318.
on input line 330.
(/usr/local/texlive/2025/texmf-dist/tex/latex/libertine/TS1LinuxLibertineT-TLF.
fd
@@ -1194,160 +1194,166 @@ File: TS1LinuxLibertineT-TLF.fd 2017/03/20 (autoinst) Font definitions for TS1/
LinuxLibertineT-TLF.
)
LaTeX Font Info: Font shape `TS1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 8.8pt on input line 318.
(Font) scaled to size 8.8pt on input line 330.
Package microtype Info: Loading generic protrusion settings for font family
(microtype) `LinuxLibertineT-TLF' (encoding: TS1).
(microtype) For optimal results, create family-specific settings.
(microtype) See the microtype manual for details.
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 10.0pt on input line 318.
(Font) scaled to size 10.0pt on input line 330.
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 10.0pt on input line 318.
(Font) scaled to size 10.0pt on input line 330.
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
(Font) scaled to size 10.0pt on input line 318.
(Font) scaled to size 10.0pt on input line 330.
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
(Font) scaled to size 10.0pt on input line 318.
(Font) scaled to size 10.0pt on input line 330.
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
(Font) scaled to size 10.0pt on input line 318.
(Font) scaled to size 10.0pt on input line 330.
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
(Font) scaled to size 10.0pt on input line 318.
(Font) scaled to size 10.0pt on input line 330.
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
(Font) scaled to size 10.0pt on input line 318.
(Font) scaled to size 10.0pt on input line 330.
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
(Font) scaled to size 10.0pt on input line 318.
(Font) scaled to size 10.0pt on input line 330.
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
(Font) scaled to size 10.0pt on input line 318.
(Font) scaled to size 10.0pt on input line 330.
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be
(Font) scaled to size 10.0pt on input line 318.
(Font) scaled to size 10.0pt on input line 330.
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/it' will be
(Font) scaled to size 7.0pt on input line 318.
(Font) scaled to size 7.0pt on input line 330.
LaTeX Font Info: Font shape `TS1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 7.0pt on input line 318.
(Font) scaled to size 7.0pt on input line 330.
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be
(Font) scaled to size 9.0pt on input line 318.
(Font) scaled to size 9.0pt on input line 330.
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be
(Font) scaled to size 10.95pt on input line 318.
(Font) scaled to size 10.95pt on input line 330.
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 8.0pt on input line 330.
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be
(Font) scaled to size 8.0pt on input line 330.
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/it' will be
(Font) scaled to size 8.0pt on input line 330.
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 8.0pt on input line 330.
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 6.0pt on input line 330.
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
(Font) scaled to size 8.0pt on input line 330.
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
(Font) scaled to size 6.0pt on input line 330.
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
(Font) scaled to size 8.0pt on input line 330.
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
(Font) scaled to size 6.0pt on input line 330.
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
(Font) scaled to size 8.0pt on input line 330.
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
(Font) scaled to size 6.0pt on input line 330.
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
(Font) scaled to size 8.0pt on input line 330.
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
(Font) scaled to size 6.0pt on input line 330.
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
(Font) scaled to size 8.0pt on input line 330.
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
(Font) scaled to size 6.0pt on input line 330.
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
(Font) scaled to size 8.0pt on input line 330.
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
(Font) scaled to size 6.0pt on input line 330.
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
(Font) scaled to size 8.0pt on input line 330.
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
(Font) scaled to size 6.0pt on input line 330.
Overfull \hbox (8.2084pt too wide) in paragraph at lines 318--318
[]\T1/LinuxLibertineT-TLF/m/n/9 (-20) The con-tri-bu-tion is an al-ter-na-tive
ap-proach by ex-ploit-ing capability-
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 9.0pt on input line 396.
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
(Font) scaled to size 9.0pt on input line 396.
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
(Font) scaled to size 9.0pt on input line 396.
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
(Font) scaled to size 9.0pt on input line 396.
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
(Font) scaled to size 9.0pt on input line 396.
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
(Font) scaled to size 9.0pt on input line 396.
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
(Font) scaled to size 9.0pt on input line 396.
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
(Font) scaled to size 9.0pt on input line 396.
Overfull \hbox (1.7376pt too wide) in paragraph at lines 403--406
[]\T1/LinuxLibertineT-TLF/b/n/9 (-20) Memory Al-lo-ca-tion Al-go-rithms (FAT al
-lo-ca-tor)\T1/LinuxLibertineT-TLF/m/n/9 (-20) : Presents
[]
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 8.0pt on input line 318.
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be
(Font) scaled to size 8.0pt on input line 318.
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/it' will be
(Font) scaled to size 8.0pt on input line 318.
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 8.0pt on input line 318.
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 6.0pt on input line 318.
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
(Font) scaled to size 8.0pt on input line 318.
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
(Font) scaled to size 6.0pt on input line 318.
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
(Font) scaled to size 8.0pt on input line 318.
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
(Font) scaled to size 6.0pt on input line 318.
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
(Font) scaled to size 8.0pt on input line 318.
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
(Font) scaled to size 6.0pt on input line 318.
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
(Font) scaled to size 8.0pt on input line 318.
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
(Font) scaled to size 6.0pt on input line 318.
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
(Font) scaled to size 8.0pt on input line 318.
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
(Font) scaled to size 6.0pt on input line 318.
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
(Font) scaled to size 8.0pt on input line 318.
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
(Font) scaled to size 6.0pt on input line 318.
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
(Font) scaled to size 8.0pt on input line 318.
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
(Font) scaled to size 6.0pt on input line 318.
Overfull \hbox (2.8446pt too wide) in paragraph at lines 403--406
\T1/LinuxLibertineT-TLF/m/n/9 (-20) mem-ory , and in-te-grat-ing huge pages wit
h CHERI's capability-
[]
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 9.0pt on input line 383.
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
(Font) scaled to size 9.0pt on input line 383.
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
(Font) scaled to size 9.0pt on input line 383.
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
(Font) scaled to size 9.0pt on input line 383.
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
(Font) scaled to size 9.0pt on input line 383.
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
(Font) scaled to size 9.0pt on input line 383.
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
(Font) scaled to size 9.0pt on input line 383.
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
(Font) scaled to size 9.0pt on input line 383.
Underfull \vbox (badness 10000) has occurred while \output is active []
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 6.0pt on input line 396.
(Font) scaled to size 6.0pt on input line 406.
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 36.135pt on input line 396.
LaTeX Font Info: Calculating math sizes for size <36.135> on input line 396.
(Font) scaled to size 36.135pt on input line 406.
LaTeX Font Info: Calculating math sizes for size <36.135> on input line 406.
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 36.135pt on input line 396.
(Font) scaled to size 36.135pt on input line 406.
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 26.37839pt on input line 396.
(Font) scaled to size 26.37839pt on input line 406.
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 19.87434pt on input line 396.
(Font) scaled to size 19.87434pt on input line 406.
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
(Font) scaled to size 36.135pt on input line 396.
(Font) scaled to size 36.135pt on input line 406.
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
(Font) scaled to size 26.37839pt on input line 396.
(Font) scaled to size 26.37839pt on input line 406.
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
(Font) scaled to size 19.87434pt on input line 396.
(Font) scaled to size 19.87434pt on input line 406.
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
(Font) scaled to size 36.135pt on input line 396.
(Font) scaled to size 36.135pt on input line 406.
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
(Font) scaled to size 26.37839pt on input line 396.
(Font) scaled to size 26.37839pt on input line 406.
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
(Font) scaled to size 19.87434pt on input line 396.
(Font) scaled to size 19.87434pt on input line 406.
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
(Font) scaled to size 36.135pt on input line 396.
(Font) scaled to size 36.135pt on input line 406.
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
(Font) scaled to size 26.37839pt on input line 396.
(Font) scaled to size 26.37839pt on input line 406.
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
(Font) scaled to size 19.87434pt on input line 396.
(Font) scaled to size 19.87434pt on input line 406.
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
(Font) scaled to size 36.135pt on input line 396.
(Font) scaled to size 36.135pt on input line 406.
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
(Font) scaled to size 26.37839pt on input line 396.
(Font) scaled to size 26.37839pt on input line 406.
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
(Font) scaled to size 19.87434pt on input line 396.
(Font) scaled to size 19.87434pt on input line 406.
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
(Font) scaled to size 36.135pt on input line 396.
(Font) scaled to size 36.135pt on input line 406.
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
(Font) scaled to size 26.37839pt on input line 396.
(Font) scaled to size 26.37839pt on input line 406.
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
(Font) scaled to size 19.87434pt on input line 396.
(Font) scaled to size 19.87434pt on input line 406.
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
(Font) scaled to size 36.135pt on input line 396.
(Font) scaled to size 36.135pt on input line 406.
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
(Font) scaled to size 26.37839pt on input line 396.
(Font) scaled to size 26.37839pt on input line 406.
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
(Font) scaled to size 19.87434pt on input line 396.
(Font) scaled to size 19.87434pt on input line 406.
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
(Font) scaled to size 36.135pt on input line 396.
(Font) scaled to size 36.135pt on input line 406.
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
(Font) scaled to size 26.37839pt on input line 396.
(Font) scaled to size 26.37839pt on input line 406.
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
(Font) scaled to size 19.87434pt on input line 396.
(Font) scaled to size 19.87434pt on input line 406.
[1.1{/usr/local/texlive/2025/texmf-var/fonts/map/pdftex/updmap/pdftex.map}{/usr
/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_76gpa5.enc}{/usr/
local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_25tcsq.enc}{/usr/l
@@ -1357,50 +1363,53 @@ ocal/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_naooyc.enc}
/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_7grukw.enc}]
LaTeX Font Info: Font shape `TS1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 9.0pt on input line 475.
(Font) scaled to size 9.0pt on input line 488.
Underfull \vbox (badness 1895) has occurred while \output is active []
LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be
(Font) scaled to size 9.0pt on input line 510.
(Font) scaled to size 9.0pt on input line 523.
LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be
(Font) scaled to size 7.0pt on input line 510.
(Font) scaled to size 7.0pt on input line 523.
[2.2]
<diagram/drawing.pdf, id=154, 459.57687pt x 430.33751pt>
File: diagram/drawing.pdf Graphic file (type pdf)
<use diagram/drawing.pdf>
Package pdftex.def Info: diagram/drawing.pdf used on input line 560.
Package pdftex.def Info: diagram/drawing.pdf used on input line 574.
(pdftex.def) Requested size: 192.91872pt x 180.64859pt.
Class acmart Warning: A possible image without description on input line 563.
Class acmart Warning: A possible image without description on input line 577.
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/it' will be
(Font) scaled to size 9.0pt on input line 623.
(Font) scaled to size 9.0pt on input line 637.
Underfull \vbox (badness 10000) has occurred while \output is active []
[3.3 <./diagram/drawing.pdf>]
Package hyperref Info: bookmark level for unknown algorithm defaults to 0 on in
put line 757.
put line 771.
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/sc' will be
(Font) scaled to size 9.0pt on input line 760.
(Font) scaled to size 9.0pt on input line 774.
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 6.6pt on input line 761.
(Font) scaled to size 6.6pt on input line 775.
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 5.5pt on input line 761.
(Font) scaled to size 5.5pt on input line 775.
LaTeX Font Info: Trying to load font information for T1+zi4 on input line 84
6.
LaTeX Font Info: Trying to load font information for T1+zi4 on input line 86
0.
(/usr/local/texlive/2025/texmf-dist/tex/latex/inconsolata/t1zi4.fd
File: t1zi4.fd 2018/01/14 T1/zi4 (Inconsolata)
)
LaTeX Font Info: Font shape `T1/zi4/m/n' will be
(Font) scaled to size 9.0pt on input line 846.
(Font) scaled to size 9.0pt on input line 860.
Package microtype Info: Loading generic protrusion settings for font family
(microtype) `zi4' (encoding: T1).
(microtype) For optimal results, create family-specific settings.
@@ -1412,70 +1421,70 @@ nc}{/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_oexx6f.en
c}]
[5.5{/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/inconsolata/i4-t1-4.enc
}]
LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/it' will be
(Font) scaled to size 9.0pt on input line 1073.
Underfull \vbox (badness 10000) has occurred while \output is active []
[5.5{/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/inconsolata/i4-t1-4.enc
}]
LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/it' will be
(Font) scaled to size 9.0pt on input line 1080.
[6.6]
<diagram/benchmarks-group/bargraph-large-dtlb-walk.png, id=256, 1011.78pt x 578
.16pt>
File: diagram/benchmarks-group/bargraph-large-dtlb-walk.png Graphic file (type
png)
<use diagram/benchmarks-group/bargraph-large-dtlb-walk.png>
Package pdftex.def Info: diagram/benchmarks-group/bargraph-large-dtlb-walk.png
used on input line 1160.
<diagram/benchmarks-group/large/bargraph-large-l1_tlb_rd.png, id=258, 1011.78pt
x 578.16pt>
File: diagram/benchmarks-group/large/bargraph-large-l1_tlb_rd.png Graphic file
(type png)
<use diagram/benchmarks-group/large/bargraph-large-l1_tlb_rd.png>
Package pdftex.def Info: diagram/benchmarks-group/large/bargraph-large-l1_tlb_r
d.png used on input line 1167.
(pdftex.def) Requested size: 241.14749pt x 137.79964pt.
<diagram/benchmarks-group/bargraph-large-l1tlb-reads.png, id=258, 1011.78pt x 5
78.16pt>
File: diagram/benchmarks-group/bargraph-large-l1tlb-reads.png Graphic file (typ
e png)
<use diagram/benchmarks-group/bargraph-large-l1tlb-reads.png>
Package pdftex.def Info: diagram/benchmarks-group/bargraph-large-l1tlb-reads.pn
g used on input line 1165.
<diagram/benchmarks-group/large/bargraph-large-l2_tlb_rd.png, id=260, 1011.78pt
x 578.16pt>
File: diagram/benchmarks-group/large/bargraph-large-l2_tlb_rd.png Graphic file
(type png)
<use diagram/benchmarks-group/large/bargraph-large-l2_tlb_rd.png>
Package pdftex.def Info: diagram/benchmarks-group/large/bargraph-large-l2_tlb_r
d.png used on input line 1172.
(pdftex.def) Requested size: 241.14749pt x 137.79964pt.
<diagram/benchmarks-group/bargraph-large-l1tlb-refill.png, id=259, 1011.78pt x
578.16pt>
File: diagram/benchmarks-group/bargraph-large-l1tlb-refill.png Graphic file (ty
pe png)
<use diagram/benchmarks-group/bargraph-large-l1tlb-refill.png>
Package pdftex.def Info: diagram/benchmarks-group/bargraph-large-l1tlb-refill.p
ng used on input line 1173.
<diagram/benchmarks-group/large/bargraph-large-dtlb_walk.png, id=261, 1011.78pt
x 578.16pt>
File: diagram/benchmarks-group/large/bargraph-large-dtlb_walk.png Graphic file
(type png)
<use diagram/benchmarks-group/large/bargraph-large-dtlb_walk.png>
Package pdftex.def Info: diagram/benchmarks-group/large/bargraph-large-dtlb_wal
k.png used on input line 1180.
(pdftex.def) Requested size: 241.14749pt x 137.79964pt.
<diagram/benchmarks-group/bargraph-large-l2tlb-reads.png, id=260, 1011.78pt x 5
78.16pt>
File: diagram/benchmarks-group/bargraph-large-l2tlb-reads.png Graphic file (typ
e png)
<use diagram/benchmarks-group/bargraph-large-l2tlb-reads.png>
Package pdftex.def Info: diagram/benchmarks-group/bargraph-large-l2tlb-reads.pn
g used on input line 1178.
<diagram/benchmarks-group/large/bargraph-large-l1tlb_refill.png, id=262, 1011.7
8pt x 578.16pt>
File: diagram/benchmarks-group/large/bargraph-large-l1tlb_refill.png Graphic fi
le (type png)
<use diagram/benchmarks-group/large/bargraph-large-l1tlb_refill.png>
Package pdftex.def Info: diagram/benchmarks-group/large/bargraph-large-l1tlb_re
fill.png used on input line 1185.
(pdftex.def) Requested size: 241.14749pt x 137.79964pt.
<diagram/benchmarks-group/bargraph-large-ll-cache-rd.png, id=261, 1011.78pt x 5
78.16pt>
File: diagram/benchmarks-group/bargraph-large-ll-cache-rd.png Graphic file (typ
e png)
<use diagram/benchmarks-group/bargraph-large-ll-cache-rd.png>
Package pdftex.def Info: diagram/benchmarks-group/bargraph-large-ll-cache-rd.pn
g used on input line 1186.
<diagram/benchmarks-group/large/bargraph-large-llcache.png, id=263, 1011.78pt x
578.16pt>
File: diagram/benchmarks-group/large/bargraph-large-llcache.png Graphic file (t
ype png)
<use diagram/benchmarks-group/large/bargraph-large-llcache.png>
Package pdftex.def Info: diagram/benchmarks-group/large/bargraph-large-llcache.
png used on input line 1193.
(pdftex.def) Requested size: 241.14749pt x 137.79964pt.
<diagram/benchmarks-group/bargraph-large-wallclock.png, id=262, 1011.78pt x 578
.16pt>
File: diagram/benchmarks-group/bargraph-large-wallclock.png Graphic file (type
png)
<use diagram/benchmarks-group/bargraph-large-wallclock.png>
Package pdftex.def Info: diagram/benchmarks-group/bargraph-large-wallclock.png
used on input line 1191.
<diagram/benchmarks-group/large/bargraph-large-wallclock.png, id=264, 1011.78pt
x 578.16pt>
File: diagram/benchmarks-group/large/bargraph-large-wallclock.png Graphic file
(type png)
<use diagram/benchmarks-group/large/bargraph-large-wallclock.png>
Package pdftex.def Info: diagram/benchmarks-group/large/bargraph-large-wallcloc
k.png used on input line 1198.
(pdftex.def) Requested size: 241.14749pt x 137.79964pt.
Class acmart Warning: A possible image without description on input line 1199.
Class acmart Warning: A possible image without description on input line 1206.
@@ -1494,11 +1503,20 @@ Underfull \vbox (badness 10000) has occurred while \output is active []
[8.8 <./diagram/benchmarks-group/bargraph-large-dtlb-walk.png> <./diagram/bench
marks-group/bargraph-large-l1tlb-reads.png> <./diagram/benchmarks-group/bargrap
h-large-l1tlb-refill.png> <./diagram/benchmarks-group/bargraph-large-l2tlb-read
s.png> <./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png> <./diagram/b
enchmarks-group/bargraph-large-wallclock.png>] (./paper.bbl
[8.8 <./diagram/benchmarks-group/large/bargraph-large-l1_tlb_rd.png> <./diagram
/benchmarks-group/large/bargraph-large-l2_tlb_rd.png> <./diagram/benchmarks-gro
up/large/bargraph-large-dtlb_walk.png> <./diagram/benchmarks-group/large/bargra
ph-large-l1tlb_refill.png> <./diagram/benchmarks-group/large/bargraph-large-llc
ache.png> <./diagram/benchmarks-group/large/bargraph-large-wallclock.png>]
Overfull \hbox (19.8336pt too wide) in paragraph at lines 1422--1452
\T1/LinuxLibertineT-TLF/m/n/9 (-20) Although per-for-mance gains are less sig-n
if-i-cant for larger or computation-
[]
(./paper.bbl
Underfull \vbox (badness 2698) has occurred while \output is active []
Underfull \hbox (badness 2443) in paragraph at lines 164--168
@@ -1537,11 +1555,11 @@ Package rerunfilecheck Info: File `paper.out' has not changed.
(rerunfilecheck) Checksum: 21FD7693A5A3059545203AA7DB2EA238;4008.
)
Here is how much of TeX's memory you used:
24399 strings out of 473190
402361 string characters out of 5715801
980070 words of memory out of 5000000
24403 strings out of 473190
402665 string characters out of 5715801
983429 words of memory out of 5000000
46493 multiletter control sequences out of 15000+600000
781348 words of font info for 490 fonts, out of 8000000 for 9000
781830 words of font info for 493 fonts, out of 8000000 for 9000
1302 hyphenation exceptions out of 8191
90i,17n,131p,1002b,778s stack positions out of 10000i,1000n,20000p,200000b,200000s
</usr/local/texlive/2025/texmf-dist/fonts/type1/public/inconsolata/Inconsolat
@@ -1556,10 +1574,10 @@ lic/libertine/LinLibertineTB.pfb></usr/local/texlive/2025/texmf-dist/fonts/type
/type1/public/newtx/NewTXMI.pfb></usr/local/texlive/2025/texmf-dist/fonts/type1
/public/newtx/txmiaX.pfb></usr/local/texlive/2025/texmf-dist/fonts/type1/public
/newtx/txsys.pfb>
Output written on paper.pdf (9 pages, 830538 bytes).
Output written on paper.pdf (9 pages, 962446 bytes).
PDF statistics:
387 PDF objects out of 1000 (max. 8388607)
322 compressed objects within 4 object streams
395 PDF objects out of 1000 (max. 8388607)
330 compressed objects within 4 object streams
67 named destinations out of 1000 (max. 500000)
123628 words of extra memory for PDF output out of 128383 (max. 10000000)

Binary file not shown.

View File

@@ -246,16 +246,28 @@
% addressing, we introduce a memory allocator that can integrate block-based allocations within huge pages. Through our evaluation using both micro and macro benchmarks, we show that
% our allocator can reduce TLB misses by up to 90\%, leading to improvements in wall clock runtimes for memory-intensive applications.
The increasing gap between workload memory requirements and the capacity of translation lookaside buffers (TLBs) in hardware cache management of modern processors means that TLB misses
are more frequent, costing additional clock cycles and impacting runtime performance. One solution that has been explored is to use physically contiguous
memory in conjunction with huge pages.
% The increasing gap between workload memory requirements and the capacity of translation lookaside buffers (TLBs) in hardware cache management of modern processors means that TLB misses
% are more frequent, costing additional clock cycles and impacting runtime performance. One solution that has been explored is to use physically contiguous
% memory in conjunction with huge pages.
The contribution is an alternative approach by exploiting capability-based addressing in the
CHERI architecture. This paper presents a new memory allocator called Fat Address Translations (FAT) which associates capabilities with memory pointers by integrating
block-based allocations within huge pages. When the FAT allocator is ran independently and embedded inside Jemalloc, it reduces by up to 99\% walking the TLB hierarchy. This leads to
decreasing runtimes for memory read and write intensive applications.
% The contribution is an alternative approach by exploiting capability-based addressing in the
% CHERI architecture. This paper presents a new memory allocator called Fat Address Translations (FAT) which associates capabilities with memory pointers by integrating
% block-based allocations within huge pages. When the FAT allocator is ran independently and embedded inside Jemalloc, it reduces by up to 99\% walking the TLB hierarchy. This leads to
% decreasing runtimes for memory read and write intensive applications.
% The FAT allocator when ran independently and embedded inside Jemalloc reduces walking the TLB hierarchy by upto 90\%, which leads to decreasing runtimes
% for memory read and write intensive applications.
The widening gap between application memory demands and the limited capacity of hardware Translation Lookaside Buffers (TLBs)
in modern processors leads to frequent TLB misses, incurring significant performance penalties due to additional clock cycles
spent on page table walks. A common mitigation strategy involves the use of physically contiguous memory and huge pages to
reduce TLB pressure.
This paper introduces a solution that leverages capability-based addressing in the CHERI architecture with huge pages.
We present Fat Address Translations (FAT), a memory allocator that embeds allocation metadata directly within
pointer capabilities and manages memory in block-based allocations within huge pages. By encoding allocation bounds in capabilities,
FAT enables more efficient pointer dereferencing and reduces reliance on smaller page table entry lookups. Our evaluation shows that FAT,
both as a standalone allocator and when integrated into Jemalloc, reduces TLB hierarchy walks by up to 99\% in contrast to standard system allocators and improves runtime performance for memory read intensive applications.
This demonstrates that capability-based addressing can repurposed to mitigate TLB pressure.
\end{abstract}
%%
@@ -338,7 +350,8 @@
% accelerating memory management operations.
In computing, achieving high performance is an ongoing challenge, especially as
applications handle increasingly memory intensive workloads. Performance referring to memory access rather than compute bound.
modern applications handle increasingly memory intensive workloads.
% Performance referring to memory access rather than compute bound.
Memory management is a key factor in reducing the time it takes to access a memory region.
A Translation Lookaside Buffer (TLB) is a specialised cache in the memory management unit (MMU).
It reduces the time required to convert virtual addresses to physical addresses. When a program accesses
@@ -353,11 +366,11 @@ To tackle this issue, researchers have explored new solutions, including the use
huge pages~\cite{panwar_hawkeye_2019}.
Huge pages also known as large pages allow for the allocation of memory in significantly larger chunks
compared to traditional small pages by reducing the number of TLB entries needed to access a given amount
compared to traditional small pages which leads to fewer number of TLB entries needed to access a given amount
of memory. Huge pages offer a potential avenue for optimising TLBs which are used by reducing the number
of entries needed to map large memory regions. This not only decreases the frequency of
TLB misses but also lowers the overhead associated with address translation and therefore minimising
these bottlenecks.
TLB misses but also lowers the overhead associated with address translation in regards to traversing the TLB cache
hierarchy and therefore minimising these bottlenecks.
% huge pages can improve system performance in aspects such as speeding
% up memory-intensive applications, reducing latency in data access and enhancing throughput for
% workloads that rely heavily on large datasets.
@@ -368,9 +381,9 @@ these bottlenecks.
% Answer: The focus on this paper is on single core execution.
Simultaneously, advancements in hardware-level security, such as the Capability Hardware Enhanced RISC Instructions (CHERI)
~\cite{woodruff_cheri_2014} which are pointers that are replaced with capabilities with 128-bit or 256-bit
~\cite{woodruff_cheri_2014} which are standard 64-bit pointers that are replaced with capabilities with 128-bit or 256-bit
encoding scheme which consists of both the address and metadata. The metadata includes bounds, permissions and validity of the pointer
which forms a capability. This transformation enforces strict memory
which forms a capability. This transformation of larger pointers enforces strict memory
safety as capabilities prevent arbitrary pointer arithmetic and unauthorised memory access.
CHERI's capability-based addressing approach not
only strengthens system security by tightly controlling memory access but also opens avenues for optimising memory management
@@ -387,7 +400,7 @@ memory allocations by emulating block allocations on physically contiguous memor
used to optimise memory allocation by encoding memory bounds directly within pointers, reducing TLB reliance
(Section ~\ref{sec:128bitCompressedBounds}).
\item \textbf{Memory Allocation Algorithms (FAT allocator)}: Provides an algorithm for allocating, freeing
\item \textbf{Memory Allocation Algorithms (FAT allocator)}: Presents an algorithm for allocating, freeing
physically contiguous memory , and integrating huge pages with CHERI's capability-based bounds for enhanced memory management
(Section ~\ref{sec:MemoryAllocator}).
@@ -519,7 +532,8 @@ bound encoding technique with an internal exponent mechanism that offers greater
\label{sec:FatPointerTranslations}
Fat Address Translations (FAT) is our new memory allocator for CHERI. It uses the CHERI architecture to
bring about block-based allocations in physically contiguous memory.
FAT leverages techniques like FlexPointer~\cite{chen_flexpointer_2023} and RMM~\cite{karakostas_redundant_2015} to
FAT leverages techniques like FlexPointer~\cite{chen_flexpointer_2023}, RMM~\cite{karakostas_redundant_2015} in context of introducing
a range table to store custom address translation memory ranges to
reduce pressure on the TLB. A key component
in this implementation is the use of range addresses with CHERI CC~\cite{woodruff_cheri_2019}.
@@ -671,7 +685,7 @@ representation of bounds within CHERI CC.
Instead of relying on fixed-size TLB entries with set page sizes (such as 4KB, 2MB, or 1GB), FAT uses CHERI
CC to define dynamic bounds based on the size requested at allocation time (e.g., during a \textit{malloc} call).
This approach offers a more flexible alternative to the traditional fixed-size TLB model.
This approach offers flexible translation entry sizes compared to the traditional fixed-size TLB model.
This means that the default behavior of most allocators, such
as Jemalloc, would allow precise representation of bounds within
@@ -739,7 +753,7 @@ to track and access memory within physically contiguous memory.
\section{Memory allocator design}
\label{sec:MemoryAllocator}
This section presents a straightforward memory allocator design which is implemented based on the
This section presents a memory allocator design which is implemented based on the
principles outlined in FAT (Section ~\ref{sec:FatPointerTranslations}). The allocator consists of three core functions: \textit{InitAlloc},
\textit{malloc}, and \textit{free}. The \textit{InitAlloc} function initialises the memory pool, setting up the necessary
data structures and metadata required for efficient memory management. The \textit{malloc} function is
@@ -774,7 +788,7 @@ itself. The start and end addresses correspond to the size of the memory block r
approach introduces a method of memory tracking, where the bounds of the allocated region is
explicitly encoded in the address which enables efficient monitoring and management of memory usage.
Furthermore, this design uses shared huge page TLB entries to map
Furthermore, this design uses huge page TLB entries to map
and track memory addresses. By encoding bounds directly into the address, the algorithm ensures that memory
accesses remain within the allocated region. Thereby reducing the risk of out-of-bounds
errors. This use of FAT and shared TLB entries not only align with the principles of
@@ -890,7 +904,7 @@ for munmap the \textit{free} function (Algorithm \ref{alg:free}).
\subsection{Mmap replaced with MALLOC}
The os\_pages\_map function (Algorithm~\ref{alg:JemallocMalloc}) simulates jemalloc's low-level page
The os\_pages\_map function (Algorithm~\ref{alg:JemallocMalloc}) simulates Jemalloc's low-level page
mapping routine. It first checks if a specific address is
requested in case relevant to CheriABI~\cite{CheriABI} where such behavior
is disallowed and returns NULL. It then allocates memory using the custom MALLOC(size) (Algorithm~\ref{alg:malloc}) function and validates
@@ -899,10 +913,10 @@ if one was provided. If there's a mismatch, it unmaps calling FREE() (Algorithm~
memory and returns NULL; otherwise, it returns the allocated
pointer.
This approach mentioned above is embedded inside jemalloc's strategy of managing memory through arenas and size classes.
In jemalloc, memory is divided into chunks, which are further subdivided into runs and regions to
This approach mentioned above is embedded inside Jemalloc's strategy of managing memory through arenas~\cite{jemalloc} and size~\cite{jemalloc} classes.
In Jemalloc, memory is divided into chunks, which are further subdivided into runs and regions to
handle allocations of various sizes efficiently. By aligning sizes and managing allocations within
predefined structures, jemalloc minimizes fragmentation~\cite{evans_scalable_nodate}.
predefined structures, Jemalloc minimizes fragmentation~\cite{evans_scalable_nodate}.
% The only function required to be replaced with Malloc was os\_pages\_map,
% pages\_map and pages\_commit\_impl as show in
@@ -923,9 +937,9 @@ predefined structures, jemalloc minimizes fragmentation~\cite{evans_scalable_nod
\subsection{Munmap replaced with FREE}
The os\_pages\_unmap (Algorithm~\ref{alg:JemallocFree}) represents a customized abstraction of jemallocs
The os\_pages\_unmap (Algorithm~\ref{alg:JemallocFree}) represents a customized abstraction of Jemallocs
memory unmapping routine, designed to integrate with the previously defined simplified
free(ptr) implementation. In conventional jemalloc configurations, os\_pages\_unmap would
free(ptr) implementation. In conventional Jemalloc configurations, os\_pages\_unmap would
invoke low-level system calls such as munmap to release virtual memory pages back to the
operating system. However, in this adapted version, the function instead delegates the
deallocation to a higher-level FREE(addr) (Algorithm~\ref{alg:free}).
@@ -933,12 +947,12 @@ deallocation to a higher-level FREE(addr) (Algorithm~\ref{alg:free}).
The function begins by enforcing two invariants through assertions: first, that the input
address addr is aligned to the operating system's page size and second that
the size of the memory region is also a multiple of os\_page. These alignment checks are
critical for maintaining consistency with jemalloc's internal page-based memory
critical for maintaining consistency with Jemalloc's internal page-based memory
management semantics and ensuring compatibility with the allocator's expectations.
Following these checks the memory at the specified address is deallocated via the
FREE(addr) (Algorithm~\ref{alg:free}) operation.
The following changes done to free is embedded inside jemalloc's deallocation mechanism,
The following changes done to free is embedded inside Jemalloc's deallocation mechanism,
where metadata associated with each allocation
(such as size and location) is used to efficiently return memory to the appropriate
arena or pool. Jemalloc maintains
@@ -1012,7 +1026,7 @@ failing to overwrite the C program at runtime with the intended \textit{malloc}
The second allocator was the standard OS memory allocator, which in the case of
CHERIBSD is Jemalloc.
Performance measurements (table ~\ref{table:ARMPerf}) were carried out using ARM performance counters~\cite{PerformanceCounter} to
Performance measurements (table ~\ref{table:ARMPerf}) were carried out using ARM hardware performance counters~\cite{PerformanceCounter} to
ensure accurate evaluation. These counters provided detailed metrics allowing
us to compare the performance of the two allocators and assess the impact of
the proposed changes.
@@ -1041,13 +1055,6 @@ the proposed changes.
& due to a translation table walk \\
& or accessing another level of TLB cache. \\
& \\
(p/cpu\_cycles) CPU cycles & The CPU CYCLES counter increases with \\
& every clock cycle. However, it can be \\
& affected by changes in clock frequency, \\
& such as when WFI (Wait for Interrupt) \\
& or WFE (Wait for Event) \\
& instructions pause the clock. \\
& \\
(p/dtlb\_walk) Data TLB walks & Data TLB access with at least \\
& one translation table walk. \\
& \\
@@ -1157,25 +1164,12 @@ This extension is described by Holt and Singh ~\cite{holt1995}.
\begin{figure*}
\begin{multicols}{2}
\begin{subfigure}{\linewidth}
\includegraphics[width=\linewidth]{diagram/benchmarks-group/bargraph-large-dtlb-walk.png}
\caption{DTLB Walks}
\label{fig:dtlb-walk}
\end{subfigure}\par
\begin{subfigure}{\linewidth}
\includegraphics[width=\linewidth]{diagram/benchmarks-group/bargraph-large-l1tlb-reads.png}
\includegraphics[width=\linewidth]{diagram/benchmarks-group/large/bargraph-large-l1_tlb_rd.png}
\caption{L1 TLB Reads}
\label{fig:l1tlb-reads}
\end{subfigure}\par
\end{multicols}
\begin{multicols}{2}
\begin{subfigure}{\linewidth}
\includegraphics[width=\linewidth]{diagram/benchmarks-group/bargraph-large-l1tlb-refill.png}
\caption{L1 TLB Refill}
\label{fig:l1tlb-refill}
\end{subfigure}\par
\begin{subfigure}{\linewidth}
\includegraphics[width=\linewidth]{diagram/benchmarks-group/bargraph-large-l2tlb-reads.png}
\includegraphics[width=\linewidth]{diagram/benchmarks-group/large/bargraph-large-l2_tlb_rd.png}
\caption{L2 TLB Reads}
\label{fig:l2tlb-reads}
\end{subfigure}\par
@@ -1183,12 +1177,25 @@ This extension is described by Holt and Singh ~\cite{holt1995}.
\begin{multicols}{2}
\begin{subfigure}{\linewidth}
\includegraphics[width=\linewidth]{diagram/benchmarks-group/bargraph-large-ll-cache-rd.png}
\includegraphics[width=\linewidth]{diagram/benchmarks-group/large/bargraph-large-dtlb_walk.png}
\caption{DTLB Walks}
\label{fig:dtlb-walk}
\end{subfigure}\par
\begin{subfigure}{\linewidth}
\includegraphics[width=\linewidth]{diagram/benchmarks-group/large/bargraph-large-l1tlb_refill.png}
\caption{L1 DTLB Refill}
\label{fig:l1tlb-refill}
\end{subfigure}\par
\end{multicols}
\begin{multicols}{2}
\begin{subfigure}{\linewidth}
\includegraphics[width=\linewidth]{diagram/benchmarks-group/large/bargraph-large-llcache.png}
\caption{LL Cache Reads}
\label{fig:ll-cache-rd}
\end{subfigure}\par
\begin{subfigure}{\linewidth}
\includegraphics[width=\linewidth]{diagram/benchmarks-group/bargraph-large-wallclock.png}
\includegraphics[width=\linewidth]{diagram/benchmarks-group/large/bargraph-large-wallclock.png}
\caption{Wall Clock Time}
\label{fig:wallclock}
\end{subfigure}\par
@@ -1207,7 +1214,7 @@ This extension is described by Holt and Singh ~\cite{holt1995}.
% \caption{\label{fig:bargrapwh}Percentage difference between the modified memory allocator against the default system memory allocator}
% \end{figure*}
Figure \ref{fig:benchmarks-group} highlights the performance comparison between the modified memory allocator and
Figure~\ref{fig:benchmarks-group} highlights the performance comparison between the modified memory allocator and
Jemalloc, the default memory allocator. The FAT memory allocator is specifically optimised
for use with huge pages and demonstrates a clear advantage in scenarios where memory allocation
patterns benefit from its design. The results align with expectations, showcasing the impact
@@ -1225,7 +1232,7 @@ of its capability to handle memory more efficiently by leveraging huge pages.
% FAT allocator embedded inside Jemalloc. These results suggest that FAT allocator embedded inside Jemalloc may arrange memory
% in a manner that enhances spatial locality at the page level, particularly for workloads like Memaccess and Glibc.
\item L1 TLB reads: L1 TLB reads are critical for achieving fast memory access; therefore, a
\item L1 TLB reads (Figure~\ref{fig:l1tlb-reads}): L1 TLB reads are critical for achieving fast memory access; therefore, a
reduction in events that could signify misses or lead to further lookups is generally beneficial.
In the Kmeans benchmark, the FAT allocator demonstrated 13\% fewer L1 TLB reads than the baseline allocator.
However, when the FAT allocator was embedded within Jemalloc, the L1 TLB reads were the same as the baseline.
@@ -1234,7 +1241,7 @@ of its capability to handle memory more efficiently by leveraging huge pages.
there was no difference for either allocator. For the Barnes benchmark, the FAT allocator exhibited 5\%
fewer L1 TLB reads, and the result was the same for the FAT allocator embedded within Jemalloc.
\item L2 TLB reads: L2 Data TLB reads (or lookups) serve as a secondary cache for address translations.
\item L2 TLB reads (Figure~\ref{fig:l2tlb-reads}): L2 Data TLB reads (or lookups) serve as a secondary cache for address translations.
FAT allocator consistently performed at 98\% lesser L2 TLB reads for this metric across all benchmarks except Barnes
which was 4\% lesser. FAT allocator embedded inside Jemalloc also showed significant change for Kmeans, Memaccess, and Richards. However, for the Glibc benchmark
it achieved a reduction of 60\% in L2 TLB reads. This mirrors its L1D TLB improvement for Glibc and suggests that its
@@ -1242,7 +1249,7 @@ of its capability to handle memory more efficiently by leveraging huge pages.
Glibc's high frequency of malloc calls that stress memory management. A minor reduction of 5 \% was also observed for the Barnes
benchmark with FAT allocator embedded inside Jemalloc.
\item DTLB walks: which occur when a virtual-to-physical
\item DTLB walks (Figure~\ref{fig:dtlb-walk}): which occur when a virtual-to-physical
address translation is not found in the DTLB and a page table traversal is necessary, represent a performance
cost. thus, fewer walks are preferable. In the observed tests neither FAT allocator nor FAT allocator embedded inside Jemalloc
demonstrated significant deviation from the baseline performance of 99\% lesser walks.
@@ -1253,7 +1260,7 @@ of its capability to handle memory more efficiently by leveraging huge pages.
% of DTLB misses that necessitate page table walks within these specific workloads. Even for the Memaccess benchmark,
% which is designed with random list traversals that can stress TLB pressure, the impact on dTLB walks was negligible according to the provided graphs.
\item L1 TLB refills: L1 Data TLB refills are a direct consequence of L1 TLB misses; therefore, fewer refills
\item L1 TLB refills (Figure~\ref{fig:l1tlb-refill}): L1 Data TLB refills are a direct consequence of L1 TLB misses; therefore, fewer refills
indicate better performance. Interestingly, despite the variations observed in L1 TLB reads for the FAT allocator
embedded within Jemalloc, the L1 TLB refills metric showed a significant reduction of 99\% for both the standalone
FAT allocator and the FAT allocator embedded within Jemalloc. This consistent and substantial improvement over the baseline was observed across all tested benchmarks: Kmeans, Memaccess, Glibc, Richards, and Barnes.
@@ -1266,12 +1273,12 @@ of its capability to handle memory more efficiently by leveraging huge pages.
% events than solely those leading to refills, or perhaps the absolute number of critical misses resulting in refills was minimal to begin with and thus
% not significantly affected by the allocators in these tests.
\item Last-level cache: Cache read misses in the Last-Level Cache (LLC) are critical performance indicators, as they typically lead to
\item Last-level cache (Figure~\ref{fig:ll-cache-rd}): Cache read misses in the Last-Level Cache (LLC) are critical performance indicators, as they typically lead to
slower data retrievals from main memory. Consequently, a lower number of misses is highly desirable. The performance on this
metric varied considerably across both allocators and benchmarks. The FAT allocator exhibited the highest variance in the
kmeans benchmark, achieving 57\% fewer cache misses compared to the baseline allocator. In contrast, it recorded 18\% more
misses in memaccess, 65\% fewer in glibc, 31\% more in Richards, and 18\% more in barnes.
When the FAT allocator was embedded within jemalloc, the results shifted notably: kmeans experienced 19\% more misses
When the FAT allocator was embedded within Jemalloc, the results shifted notably: kmeans experienced 19\% more misses
relative to the baseline, memaccess saw a substantial 77\% reduction, while glibc incurred a dramatic 370\% increase particularly
significant given its malloc intensive nature. There was no change in LLC misses for Richards, whereas barnes suffered from 68\%
more misses.
@@ -1292,11 +1299,11 @@ of its capability to handle memory more efficiently by leveraging huge pages.
% This high variability indicates that memory placement strategies of the allocators interact diversely with the specific access patterns of each benchmark,
% such as the difference between the large data arrays in K-Means versus the linked structures common in Memaccess or Richards.
\item Wall clock: Wallclock time serves as the definitive metric for evaluating overall execution performance.
\item Wall clock (Figure~\ref{fig:wallclock}): Wallclock time serves as the definitive metric for evaluating overall execution performance.
When using the FAT allocator, glibc demonstrated the most significant improvement, with a 51\% reduction in wallclock
runtime compared to the baseline allocator. This was followed by memaccess with a 34\% decrease, barnes with a 4\% reduction,
and kmeans with a modest 1.8\% improvement. Conversely, Richards exhibited a slight increase of 1\% in runtime.
When the FAT allocator was integrated into jemalloc, the performance impact varied. Glibc experienced a 16.2\% increase
When the FAT allocator was integrated into Jemalloc, the performance impact varied. Glibc experienced a 16.2\% increase
in wallclock time, while barnes showed a 7\% rise. Both Richards and kmeans maintained the same runtime as the baseline
allocator, whereas memaccess recorded a 4\% reduction.
@@ -1412,21 +1419,51 @@ bottlenecked by factors such as computation or I/O rather than memory translatio
% This modification reduces the dependency on the TLB, decreasing latency and improving performance, especially for frequent memory operations.
\section{Conclusion} %Title of the Conclusion
This paper addresses the growing disparity between application workloads and the capacity of TLBs.
To mitigate this gap, FAT proposed leveraging physically contiguous memory with CHERI bounds to reduce TLB walks.
FAT is a memory allocator that uses huge pages with the CHERI CC scheme to track allocations within the
allocated huge page. This approach reduces the number of TLB entries needed while using bounds
to minimise fragmentation.
This paper has presented FAT, a memory allocator
designed to address the growing mismatch between application memory demands and
the limited reach of TLBs in modern processors.
By leveraging physically contiguous memory through huge pages and embedding
allocation metadata within CHERI's compressed capability based pointers,
FAT significantly reduces the overhead associated with virtual-to-physical
address translation.
\newline
FAT achieves block-based allocation within huge pages, enabling memory tracking
without relying heavily on traditional page table mechanisms. Benchmark evaluations
demonstrate that FAT can reduce TLB walks by up to 99\%, resulting in substantial
performance improvements in memory-intensive workloads. When applied to
microbenchmarks, FAT reduced wall-clock runtime by up to 51\% for Glibc and
34\% for Memaccess, while also achieving up to 68\% fewer L1 TLB reads and 98\%
fewer L2 TLB reads. In contrast, macro benchmarks such as Kmeans and Barnes
showed more modest gains of 1.8\% and 4\% in runtime, respectively, reflecting
the allocator's limited impact in compute-bound scenarios.
\newline
Although performance gains are less significant for larger or computation-heavy applications,
the results underscore the allocator's potential to enhance memory management in
high-throughput environments. More broadly, this work demonstrates how
capability based architectures originally designed to ensure memory safety can
be effectively repurposed to optimise address translation.
FAT thus represents a promising direction for developing more scalable
and efficient memory allocation strategies in systems adopting
capability aware architectures.
% This paper addresses the growing disparity between application workloads and the capacity of TLBs.
% To mitigate this gap, FAT proposed leveraging physically contiguous memory with CHERI bounds to reduce TLB walks.
% FAT is a memory allocator that uses huge pages with the CHERI CC scheme to track allocations within the
% allocated huge page.
% This approach reduces the number of TLB entries needed while using bounds
% to minimise fragmentation.
% Additionally,
% the report explores advancements in system security, particularly through the Capability Hardware Enhanced RISC Instructions (CHERI)
% architecture. CHERI's capability-based addressing enhances system security by associating capabilities with memory pointers,
% restricting access to memory regions, and thus protecting against various security threats. Importantly, these mechanisms
% can also improve the reduction of TLB walks to memory allocators by using CHERI bounds while maintaining CHERI's security guarantees.
\newline
The benchmarks demonstrates the FAT allocator and the FAT allocator embedded within Jemalloc which reduces the TLB misses by upto 90\%,
leading to substantial performance gains in memory-intensive workloads, though the improvements are less pronounced
for larger and computation-heavy applications. These results highlight the allocators potential to advance memory management
by repurposing CHERI's capability-based model with the use of huge pages.
% \newline
% The benchmarks demonstrates the FAT allocator and the FAT allocator embedded within Jemalloc which reduces the TLB walks by upto 99\%,
% leading to substantial performance gains in memory-intensive workloads, though the improvements are less pronounced
% for larger and computation-heavy applications. These results highlight the allocators potential to advance memory management
% by repurposing CHERI's capability-based model with the use of huge pages.