diff --git a/docs/EuroSys/Paper/paper.aux b/docs/EuroSys/Paper/paper.aux index 013a70e..de78588 100644 --- a/docs/EuroSys/Paper/paper.aux +++ b/docs/EuroSys/Paper/paper.aux @@ -28,24 +28,25 @@ \citation{woodruff_cheri_2019} \citation{woodruff_cheri_2019} \citation{woodruff_cheri_2019} -\citation{TLBBehavoir} +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces High overview architecture}}{3}{figure.caption.3}\protected@file@percent } +\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}} +\newlabel{fig:HighOverviewArchitecture}{{1}{3}{High overview architecture}{figure.caption.3}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Encoding Ranges as Bounds to the Pointer}{3}{subsection.3.1}\protected@file@percent } +\newlabel{sec:RangeMemory}{{3.1}{3}{Encoding Ranges as Bounds to the Pointer}{subsection.3.1}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Range of memory}}{3}{figure.caption.4}\protected@file@percent } +\newlabel{fig:RangeOfMemory}{{2}{3}{Range of memory}{figure.caption.4}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.2}128 bit compressed bounds}{3}{subsection.3.2}\protected@file@percent } \newlabel{sec:128bitCompressedBounds}{{3.2}{3}{128 bit compressed bounds}{subsection.3.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Instrumenting Block-Based Allocators with Physically Contiguous Memory}{3}{subsection.3.3}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {4}Memory allocator design}{3}{section.4}\protected@file@percent } -\newlabel{sec:MemoryAllocator}{{4}{3}{Memory allocator design}{section.4}{}} -\@writefile{loa}{\contentsline {algorithm}{\numberline {1}{\ignorespaces Malloc implementation}}{3}{algorithm.1}\protected@file@percent } -\newlabel{alg:malloc}{{1}{3}{Malloc implementation}{algorithm.1}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces High overview architecture}}{4}{figure.caption.3}\protected@file@percent } -\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}} -\newlabel{fig:HighOverviewArchitecture}{{1}{4}{High overview architecture}{figure.caption.3}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Range of memory}}{4}{figure.caption.4}\protected@file@percent } -\newlabel{fig:RangeOfMemory}{{2}{4}{Range of memory}{figure.caption.4}{}} -\@writefile{loa}{\contentsline {algorithm}{\numberline {2}{\ignorespaces Free implementation}}{4}{algorithm.2}\protected@file@percent } -\newlabel{alg:free}{{2}{4}{Free implementation}{algorithm.2}{}} +\citation{TLBBehavoir} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Instrumenting Block-Based Allocators with Physically Contiguous Memory}{4}{subsection.3.3}\protected@file@percent } \@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Fat-pointer Address Translations using huge pages}}{4}{figure.caption.5}\protected@file@percent } \newlabel{fig:HugePages}{{3}{4}{Fat-pointer Address Translations using huge pages}{figure.caption.5}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4}Memory allocator design}{4}{section.4}\protected@file@percent } +\newlabel{sec:MemoryAllocator}{{4}{4}{Memory allocator design}{section.4}{}} +\@writefile{loa}{\contentsline {algorithm}{\numberline {1}{\ignorespaces Malloc implementation}}{4}{algorithm.1}\protected@file@percent } +\newlabel{alg:malloc}{{1}{4}{Malloc implementation}{algorithm.1}{}} +\@writefile{loa}{\contentsline {algorithm}{\numberline {2}{\ignorespaces Free implementation}}{4}{algorithm.2}\protected@file@percent } +\newlabel{alg:free}{{2}{4}{Free implementation}{algorithm.2}{}} \citation{jemalloc} \citation{cheribsd} \citation{Morello} @@ -66,11 +67,17 @@ \newlabel{tab:org246a883}{{1}{6}{ARM performance counters}{table.caption.6}{}} \@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces Percentage difference between the modified memory allocator against the default system memory allocator}}{7}{figure.caption.7}\protected@file@percent } \newlabel{fig:bargraph}{{4}{7}{Percentage difference between the modified memory allocator against the default system memory allocator}{figure.caption.7}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Kmeans COZ benchmark executed against various cluster sizes}}{7}{figure.caption.8}\protected@file@percent } -\newlabel{fig:org8683315}{{5}{7}{Kmeans COZ benchmark executed against various cluster sizes}{figure.caption.8}{}} \bibstyle{unsrt} \bibdata{paperReferences} \bibcite{mittal_survey_2017}{{1}{}{{}}{{}}} +\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Kmeans COZ benchmark executed against various cluster sizes}}{8}{figure.caption.8}\protected@file@percent } +\newlabel{fig:org8683315}{{5}{8}{Kmeans COZ benchmark executed against various cluster sizes}{figure.caption.8}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Usability}{8}{subsection.5.4}\protected@file@percent } +\newlabel{sec:orgd6ba6f0}{{5.4}{8}{Usability}{subsection.5.4}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6}Future work}{8}{section.6}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Storing Offsets Directly on Pointers}{8}{subsection.6.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Hardware Modifications:}{8}{subsection.6.2}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {7}Conclusion}{8}{section.7}\protected@file@percent } \bibcite{panwar_hawkeye_2019}{{2}{}{{}}{{}}} \bibcite{woodruff_cheri_2014}{{3}{}{{}}{{}}} \bibcite{woodruff_cheri_2019}{{4}{}{{}}{{}}} @@ -79,13 +86,6 @@ \bibcite{DirectSegment}{{7}{}{{}}{{}}} \bibcite{karakostas_redundant_2015}{{8}{}{{}}{{}}} \bibcite{chen_flexpointer_2023}{{9}{}{{}}{{}}} -\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Usability}{8}{subsection.5.4}\protected@file@percent } -\newlabel{sec:orgd6ba6f0}{{5.4}{8}{Usability}{subsection.5.4}{}} -\@writefile{toc}{\contentsline {section}{\numberline {6}Future work}{8}{section.6}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Storing Offsets Directly on Pointers}{8}{subsection.6.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Hardware Modifications:}{8}{subsection.6.2}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {7}Conclusion}{8}{section.7}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{References}{8}{section*.10}\protected@file@percent } \bibcite{TLBBehavoir}{{10}{}{{}}{{}}} \bibcite{jemalloc}{{11}{}{{}}{{}}} \bibcite{cheribsd}{{12}{}{{}}{{}}} @@ -101,5 +101,6 @@ \newlabel{tocindent4}{0pt} \newlabel{tocindent5}{0pt} \providecommand\NAT@force@numbers{}\NAT@force@numbers +\@writefile{toc}{\contentsline {section}{References}{9}{section*.10}\protected@file@percent } \newlabel{TotPages}{{9}{9}{}{page.9}{}} \gdef \@abspage@last{9} diff --git a/docs/EuroSys/Paper/paper.fdb_latexmk b/docs/EuroSys/Paper/paper.fdb_latexmk index 5ec5410..0474de6 100644 --- a/docs/EuroSys/Paper/paper.fdb_latexmk +++ b/docs/EuroSys/Paper/paper.fdb_latexmk @@ -1,13 +1,13 @@ # Fdb version 4 -["bibtex paper"] 1744196210.46309 "paper.aux" "paper.bbl" "paper" 1744196212.14709 0 +["bibtex paper"] 1744298831.47844 "paper.aux" "paper.bbl" "paper" 1744298833.1535 0 "./paperReferences.bib" 1744196148.81398 45813 26a8e1c09695a94d7f7d7e673ad229c8 "" "/usr/local/texlive/2025/texmf-dist/bibtex/bst/base/unsrt.bst" 1292289607 18030 1376b4b231b50c66211e47e42eda2875 "" - "paper.aux" 1744196211.84376 7634 5db61087f53323c6f78f4959f4ad0f19 "pdflatex" + "paper.aux" 1744298832.83574 7731 7f1c9e5198cf4838053a999b8e322f2d "pdflatex" (generated) "paper.bbl" "paper.blg" (rewritten before read) -["pdflatex"] 1744196210.63491 "paper.tex" "paper.pdf" "paper" 1744196212.14723 0 +["pdflatex"] 1744298831.57217 "paper.tex" "paper.pdf" "paper" 1744298833.15366 0 "/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 "" "/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_7grukw.enc" 1490131464 2934 a4a9158faed2e9e89c771b4e3b7fc12f "" @@ -215,10 +215,10 @@ "diagram/TLBAccess.drawio.png" 1744196148.80543 77522 75367f218335fe386db852966a892e9b "" "diagram/bargraph.png" 1744196148.80607 74263 65509d21744edc6c9ca02b8c67d664fb "" "diagram/kmeans.png" 1744196148.80901 94217 5d14308c169ff296bf499805b9823aa6 "" - "paper.aux" 1744196211.84376 7634 5db61087f53323c6f78f4959f4ad0f19 "pdflatex" - "paper.bbl" 1744196210.63194 3588 3b324cb71c9931b08d5c6f1eb2446cbc "bibtex paper" - "paper.out" 1744196211.84462 3691 57df4bceeaeac4f8a0aa4a6219c57ca6 "pdflatex" - "paper.tex" 1744196148.81378 77216 23cffe66a0238576210f1abaaef6f779 "" + "paper.aux" 1744298832.83574 7731 7f1c9e5198cf4838053a999b8e322f2d "pdflatex" + "paper.bbl" 1744298831.56846 3588 3b324cb71c9931b08d5c6f1eb2446cbc "bibtex paper" + "paper.out" 1744298832.83664 3691 57df4bceeaeac4f8a0aa4a6219c57ca6 "pdflatex" + "paper.tex" 1744298825.3142 80291 98adb5dd1273e6e6bda4019aa43da406 "" (generated) "paper.aux" "paper.log" diff --git a/docs/EuroSys/Paper/paper.log b/docs/EuroSys/Paper/paper.log index 9a9401d..efabf69 100644 --- a/docs/EuroSys/Paper/paper.log +++ b/docs/EuroSys/Paper/paper.log @@ -1,4 +1,4 @@ -This is pdfTeX, Version 3.141592653-2.6-1.40.27 (TeX Live 2025) (preloaded format=pdflatex 2025.4.2) 9 APR 2025 11:56 +This is pdfTeX, Version 3.141592653-2.6-1.40.27 (TeX Live 2025) (preloaded format=pdflatex 2025.4.2) 10 APR 2025 16:27 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -1213,12 +1213,6 @@ LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be LaTeX Font Info: Font shape `U/ntxexa/m/n' will be (Font) scaled to size 9.0pt on input line 351. -Overfull \hbox (5.26212pt too wide) in paragraph at lines 351--353 -[]\T1/LinuxLibertineT-TLF/b/n/9 (-20) Fat pointer Based Range Ad-dresses\T1/Lin -uxLibertineT-TLF/m/n/9 (-20) : In-tro-duces fat-pointers - [] - - Underfull \vbox (badness 10000) has occurred while \output is active [] @@ -1293,85 +1287,73 @@ Underfull \vbox (badness 10000) has occurred while \output is active [] File: diagram/HighOverviewArchitecture.drawio.png Graphic file (type png) Package pdftex.def Info: diagram/HighOverviewArchitecture.drawio.png used on i -nput line 483. +nput line 489. (pdftex.def) Requested size: 303.78008pt x 236.93262pt. -Class acmart Warning: A possible image without description on input line 487. +Class acmart Warning: A possible image without description on input line 493. + + +LaTeX Warning: `h' float specifier changed to `ht'. + + + +LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be +(Font) scaled to size 9.0pt on input line 502. +LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be +(Font) scaled to size 7.0pt on input line 502. +[2.2] + +File: diagram/AllocationOverview24.png Graphic file (type png) + +Package pdftex.def Info: diagram/AllocationOverview24.png used on input line 5 +19. +(pdftex.def) Requested size: 202.51491pt x 140.43979pt. + + +Class acmart Warning: A possible image without description on input line 522. + + Underfull \vbox (badness 10000) 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 487. -LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be -(Font) scaled to size 7.0pt on input line 487. -[2.2] - -LaTeX Warning: `h' float specifier changed to `ht'. - - -File: diagram/AllocationOverview24.png Graphic file (type png) - -Package pdftex.def Info: diagram/AllocationOverview24.png used on input line 5 -04. -(pdftex.def) Requested size: 202.51491pt x 140.43979pt. - -Class acmart Warning: A possible image without description on input line 507. - - -LaTeX Warning: `h' float specifier changed to `ht'. - - -Overfull \hbox (1.89948pt too wide) in paragraph at lines 511--514 -\T1/LinuxLibertineT-TLF/m/n/9 (-20) In this im-ple-men-ta-tion, mem-ory ranges -are es-tab-lished us-ing bounds - [] - - +[3.3 <./diagram/HighOverviewArchitecture.drawio.png> <./diagram/AllocationOverv +iew24.png>] + File: diagram/TLBAccess.drawio.png Graphic file (type png) -Package pdftex.def Info: diagram/TLBAccess.drawio.png used on input line 566. +Package pdftex.def Info: diagram/TLBAccess.drawio.png used on input line 590. (pdftex.def) Requested size: 202.51491pt x 247.43411pt. -Class acmart Warning: A possible image without description on input line 569. - -LaTeX Warning: `h' float specifier changed to `ht'. - - -Underfull \vbox (badness 7221) has occurred while \output is active [] +Class acmart Warning: A possible image without description on input line 593. Package hyperref Info: bookmark level for unknown algorithm defaults to 0 on in -put line 614. +put line 645. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/sc' will be -(Font) scaled to size 9.0pt on input line 617. +(Font) scaled to size 9.0pt on input line 648. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 6.6pt on input line 618. +(Font) scaled to size 6.6pt on input line 649. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 5.5pt on input line 618. +(Font) scaled to size 5.5pt on input line 649. -[3.3{/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_ncsllp.e +[4.4{/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_ncsllp.e nc}{/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_oexx6f.en -c}] - - -Overfull \hbox (1.93413pt too wide) in paragraph at lines 658--662 +c} <./diagram/TLBAccess.drawio.png>] +Overfull \hbox (1.93413pt too wide) in paragraph at lines 689--693 \T1/LinuxLibertineT-TLF/m/n/9 (-20) the free func-tion elim-i-nates the need fo r ad-di-tional meta-data lookups [] -[4.4 <./diagram/HighOverviewArchitecture.drawio.png> <./diagram/AllocationOverv -iew24.png> <./diagram/TLBAccess.drawio.png>] - LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/it' will be -(Font) scaled to size 9.0pt on input line 800. +(Font) scaled to size 9.0pt on input line 831. [5.5] @@ -1379,48 +1361,53 @@ Underfull \vbox (badness 10000) has occurred while \output is active [] - + File: diagram/bargraph.png Graphic file (type png) -Package pdftex.def Info: diagram/bargraph.png used on input line 836. +Package pdftex.def Info: diagram/bargraph.png used on input line 867. (pdftex.def) Requested size: 455.6624pt x 284.78517pt. -Class acmart Warning: A possible image without description on input line 838. +Class acmart Warning: A possible image without description on input line 869. LaTeX Warning: `h' float specifier changed to `ht'. +Underfull \vbox (badness 10000) has occurred while \output is active [] + + [6.6] -<./diagram/kmeans.png, id=205, 1011.78pt x 578.16pt> +Underfull \vbox (badness 10000) has occurred while \output is active [] + + + +<./diagram/kmeans.png, id=211, 1011.78pt x 578.16pt> File: ./diagram/kmeans.png Graphic file (type png) -Package pdftex.def Info: ./diagram/kmeans.png used on input line 875. +Package pdftex.def Info: ./diagram/kmeans.png used on input line 917. (pdftex.def) Requested size: 265.2637pt x 151.57959pt. -Overfull \hbox (24.11621pt too wide) in paragraph at lines 875--876 +Overfull \hbox (24.11621pt too wide) in paragraph at lines 917--918 [][] [] -Class acmart Warning: A possible image without description on input line 877. +Class acmart Warning: A possible image without description on input line 919. Underfull \vbox (badness 10000) has occurred while \output is active [] - - -[7.7 <./diagram/bargraph.png> <./diagram/kmeans.png>] -Underfull \vbox (badness 10000) has occurred while \output is active [] - - +[7.7 <./diagram/bargraph.png>] (./paper.bbl +Underfull \vbox (badness 10000) has occurred while \output is active [] -[8.8] + + +[8.8 <./diagram/kmeans.png>] Underfull \hbox (badness 2443) in paragraph at lines 90--92 []\T1/LinuxLibertineT-TLF/m/n/7 (+20) CHERI-allocator/benchmarks/benchmarks/Str essTestMalloc/glibc-bench.c at @@ -1440,6 +1427,10 @@ Class acmart Warning: CCS concepts are mandatory for papers over two pages. + +Overfull \vbox (1.28899pt too high) has occurred while \output is active [] + + (/usr/local/texlive/2025/texmf-dist/tex/generic/stringenc/se-pdfdoc.def File: se-pdfdoc.def 2019/11/29 v1.12 stringenc: PDFDocEncoding ) @@ -1455,13 +1446,13 @@ Package rerunfilecheck Info: File `paper.out' has not changed. (rerunfilecheck) Checksum: 57DF4BCEEAEAC4F8A0AA4A6219C57CA6;3691. ) Here is how much of TeX's memory you used: - 23990 strings out of 473190 - 393203 string characters out of 5715801 - 964253 words of memory out of 5000000 - 46170 multiletter control sequences out of 15000+600000 - 768506 words of font info for 442 fonts, out of 8000000 for 9000 + 23994 strings out of 473190 + 393295 string characters out of 5715801 + 968957 words of memory out of 5000000 + 46171 multiletter control sequences out of 15000+600000 + 768771 words of font info for 444 fonts, out of 8000000 for 9000 1302 hyphenation exceptions out of 8191 - 90i,16n,131p,1002b,804s stack positions out of 10000i,1000n,20000p,200000b,200000s + 90i,16n,131p,1002b,772s stack positions out of 10000i,1000n,20000p,200000b,200000s -Output written on paper.pdf (9 pages, 701842 bytes). +Output written on paper.pdf (9 pages, 703057 bytes). PDF statistics: - 292 PDF objects out of 1000 (max. 8388607) - 243 compressed objects within 3 object streams + 298 PDF objects out of 1000 (max. 8388607) + 249 compressed objects within 3 object streams 61 named destinations out of 1000 (max. 500000) 114906 words of extra memory for PDF output out of 128383 (max. 10000000) diff --git a/docs/EuroSys/Paper/paper.pdf b/docs/EuroSys/Paper/paper.pdf index 1f36b3b..2fec4b8 100644 Binary files a/docs/EuroSys/Paper/paper.pdf and b/docs/EuroSys/Paper/paper.pdf differ diff --git a/docs/EuroSys/Paper/paper.tex b/docs/EuroSys/Paper/paper.tex index ed4756f..4d38712 100644 --- a/docs/EuroSys/Paper/paper.tex +++ b/docs/EuroSys/Paper/paper.tex @@ -498,22 +498,23 @@ free virtual addresses and a TLB walk (L1, L2, L3) to achieve non-contiguous all This typically results in more TLB entries and increased TLB misses increasing the reasoning to have more TLB walks. In contrast, the Fat-pointer Address Translations method employs a custom allocator leveraging physically contiguous memory by using CHERI to encode -bounds within the pointers and as show in the figure \ref{fig:HighOverviewArchitecture} there is almost no reliance on walking the TLB. +bounds within the pointers and as show in the figure \ref{fig:HighOverviewArchitecture} there is almost no reliance on walking the TLB hierarchy. -Figure \ref{fig:HighOverviewArchitecture} illustrates -the methodology employed to use the CHERI -128-bit FAT-pointer scheme for facilitating -block-based memory management on physically -contiguous memory,which is depicted on the -right side of the figure. -This technique contrasts with the -conventional approach. +% Figure \ref{fig:HighOverviewArchitecture} illustrates +% the methodology employed to use the CHERI +% 128-bit FAT-pointer scheme for facilitating +% block-based memory management on physically +% contiguous memory,which is depicted on the +% right side of the figure. +% This technique contrasts with the +% conventional approach. -We explore how using huge pages -with CHERI bounds can reduce the -number of TLB entries required. +% We explore how using huge pages +% with CHERI bounds can reduce the +% number of TLB entries required. \subsection{Encoding Ranges as Bounds to the Pointer} +\label{sec:RangeMemory} \begin{figure}[h] \includegraphics[width=0.4\textwidth]{diagram/AllocationOverview24.png} \caption{Range of memory} @@ -522,9 +523,12 @@ number of TLB entries required. % Integrating range bounds directly into FAT-pointers enables the CHERI architecture % to enforce memory access restrictions at the pointer level thus allowing % tracking of memory ranges on a pointer level. -In this implementation, memory ranges are established using -bounds encoded within the FAT-pointer, adhering to the CHERI -CHERI 128-bit bounds compression scheme~\cite{woodruff_cheri_2019}. +A memory range in FAT has 2 points to track memory in physical contiguous space which +is the top and bottom. These 2 points are 2 virtual addresses and the range consists of +addresses which lie within this and constitutes as addresses allocated by invoking malloc. +In FAT memory ranges are established using +bounds encoded within the pointer, adhering to CHERI CC~\cite{woodruff_cheri_2019} +as referred in section ~\ref{sec:128bitCompressedBounds}. Figure \ref{fig:RangeOfMemory} illustrates a straightforward use-case in which the dark pink line represents a single, large contiguous memory area, or huge page. Within this huge page, the orange and blue lines indicate @@ -551,20 +555,26 @@ By using the CHERI bounds, this method maintains the contiguity of the allocated % within the FAT-Pointer which can be repurposed as ranges in memory allocators with custom allocation % sizes rather than fixed sized TLB entries. -We use CHERI CC~\cite{woodruff_cheri_2019} (Compressed Capabilities) to track regions of memory in physically contiguous space. +We use CHERI CC~\cite{woodruff_cheri_2019} to track regions of memory in physically contiguous space. CHERI CC consists of compressed bounds that represent a 128-bit pointer within a 64-bit virtual address -system. Our approach utilizes a single-cycle encoding and decoding mechanism for efficiency. While CHERI -CC was originally designed for memory protection, it can also be repurposed for tracking memory regions, -eliminating the need for multiple TLB entries for each allocation. +system. Our approach uses the work of CHERI CC by using a single cycle t0 decode bounds from the +capability register and the bounds which are decoded are repurposed for tracking memory regions. +% Our approach utilizes a single-cycle encoding and decoding mechanism for efficiency. While CHERI +% CC was originally designed for memory protection, it can also be repurposed for tracking memory regions, +% eliminating the need for multiple TLB entries for each allocation. -One key analysis of CHERI CC highlights that allocators like Jemalloc typically allocate objects under -512 bytes. When an object’s bounds cannot be precisely represented, padding is required to ensure -memory safety. However, it has been observed that Jemalloc rarely needs more than 6 bits~\cite{woodruff_cheri_2019} to store the -exponent values within compressed bounds. +Allocators like Jemalloc typically allocate objects under +512 bytes~\cite{woodruff_cheri_2019}. When an object’s bounds cannot be precisely represented, padding is required to ensure +memory safety. However, it has been observed that Jemalloc rarely needs more than 6 bits to store the +exponent values within compressed bounds. This means that the default behavior of allocators such as Jemalloc, would allow precise +representation of bounds within CHERI CC. -This means that the default behavior of allocators such as Jemalloc, would allow precise -representation of bounds within CHERI CC. With our implementation rather than using -fixed size TLB entries we use the CHERI CC bounds to be repurposed to encode dynamic sized addresses ranges. +With FAT rather than using fixed size TLB entries page sizes (such as 4KB, 2MB and 1GB pages). +We use CHERI CC bounds to be dynamic in size to be defined based on the size provided when calling +malloc. Offering a more flexible alternative than fixed-size TLB entries. + +% We use the CHERI CC +% bounds to be repurposed to encode dynamic sized addresses ranges. % These pointers can then be repurposed as memory ranges % in custom memory allocators, offering a more flexible alternative to fixed-size TLB entries. @@ -581,6 +591,13 @@ fixed size TLB entries we use the CHERI CC bounds to be repurposed to encode dyn \caption{Fat-pointer Address Translations using huge pages} \label{fig:HugePages} \end{figure} +To build up based on Section ~\ref{sec:RangeMemory} and ~\ref{sec:128bitCompressedBounds} +we are able to pre-allocate memory using Huge pages and are able to mark smaller allocations +using ranges by storing them as bounds within the pointer. Each of the memory ranges can be +called a block. Since we have numerous blocks inside a huge page we allow block based +memory patters within physically contiguous memory. As demonstrated with the allocator +implementation in section ~\ref{sec:MemoryAllocator}. + Traditional address translation methods rely on hierarchical structures to map virtual addresses to physical addresses. This often requires multiple entries to handle different @@ -857,11 +874,22 @@ for use with huge pages, demonstrates a clear advantage in scenarios where memor patterns benefit from its design. The results align with expectations, showcasing the impact of its capability to handle memory more efficiently by leveraging huge pages. - - - Each benchmark reflection for the metric - - summary based on each benchmark reflected +\begin{itemize} + \item L1 DTLB reads: There was noticeable reduction of L1 DTLB reads for kmeans of about on average + 4\% lesser and for Glibc there was significant reduction of 50\% than Jemalloc. + + \item L2 DTLB reads: For all the benchmarks on figure \ref{fig:bargraph} there was on average 98\% + reduction on L2 DTLB reads. Which demonstrates that all TLB translations are read at the L1 TLB + cache. -- summarize all the bullet points. + \item L1 DTLB walks: Due to most of the TLB entries getting hit at the L1TLB there is no need + to walk the TLB cache hierarchy. This is shown by on average 99\% reduction in DTLB walks. + + \item L1 DTLB refills: Since there are lesser DTLB walks and most reads are done at the L1 DTLB + layer there is no need for numerous TLB refills to take place. Our benchmarks show on average + a 99\% reduction on DTLB refills. + + \end{itemize} A particularly striking observation is the significant reduction in data TLB walks, L2 data TLB reads, and TLB refills—consistently showing a 90\% decrease across all