saving current changes

This commit is contained in:
2025-05-28 15:51:01 +01:00
parent da1b32e66c
commit f3401de543
34 changed files with 2497 additions and 517 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@@ -62,7 +62,9 @@
"cstdlib": "c",
"cwchar": "c",
"new": "c",
"param.h": "c"
"param.h": "c",
"pages.h": "c",
"jemalloc_malloc_pseudo_code": "c"
},
"C_Cpp.errorSquiggles": "disabled"
}

BIN
benchmarks/.DS_Store vendored

Binary file not shown.

Binary file not shown.

View File

@@ -1,9 +1,10 @@
#define NPAD 7
#define MIN_WSS sizeof(struct l)
#ifdef __MACH__
#define MAX_WSS 4294967296 //2^31
#else
#define MAX_WSS 8589934592 //2^32
#endif
#define MAX_WSS 429496729
// #ifdef __MACH__
// #define MAX_WSS 4294967296 //2^31
// #else
// #define MAX_WSS 8589934592 //2^32
// #endif
#define NTHREADS 0

View File

@@ -207,10 +207,10 @@ main (int argc, char **argv)
// bench (size);
bench (2*size);
//bench (4*size);
// bench (4*size);
//bench (8*size);
// bench (16*size);
// bench (32*size);
//bench (32*size);
return 0;
}

View File

@@ -266,10 +266,11 @@ void * walk(void *param)
int main(int argc,char **argv)
{
clock_t tic = clock();
// INITREGULARALLOC();
#ifdef DEBUG
//#ifdef DEBUG
printf("DEBUG:sizeof(struct l)=%ld\n",sizeof(struct l));
#endif
// #endif
struct l *root;
unsigned long working_set_size;
int i;
@@ -285,11 +286,16 @@ int main(int argc,char **argv)
#ifdef DEBUG
printf("DEBUG:Working set size=%ld elements=%ld\n",working_set_size,working_set_size/sizeof(struct l));
#endif
clock_t toc = clock();
printf("Elapsed build get here before ll: %f seconds\n", (double)(toc - tic) / CLOCKS_PER_SEC);
#ifdef RANDOM_LIST
build_random_ll(root, working_set_size);
#else
build_sequencial_ll(root, working_set_size);
clock_t tic1 = clock();
build_sequencial_ll(root, working_set_size);
// build_sequencial_ll(root, working_set_size);
clock_t toc1 = clock();
printf("Elapsed build ll: %f seconds\n", (double)(toc1 - tic1) / CLOCKS_PER_SEC);
#endif
#if NTHREADS>0
@@ -309,11 +315,17 @@ int main(int argc,char **argv)
tdata->thread_index=0;
tdata->root=root;
tdata->working_set_size=working_set_size;
walk((void*)tdata);
clock_t tic2 = clock();
for (int i = 0; i < 8000; i++) {
walk((void*)tdata);
}
clock_t toc2 = clock();
printf("Elapsed build walk: %f seconds\n", (double)(toc2 - tic2) / CLOCKS_PER_SEC);
#endif
}
printf("-----------------------------------------------");
// free(root);

View File

@@ -1,3 +1,5 @@
# sh build.sh
LD_PRELOAD=./libjemalloc.so time pmcstat -d -w 1 -p l1d_tlb_rd -p l2d_tlb_rd -p l1d_tlb_refill -p cpu_cycles -p dtlb_walk -p stall_backend -p ll_cache_miss_rd -o memaccesstest-cheri.stat ./memaccesstest.out
LD_PRELOAD=./regularjemalloc.so time pmcstat -d -w 1 -p l1d_tlb_rd -p l2d_tlb_rd -p l1d_tlb_refill -p cpu_cycles -p dtlb_walk -p stall_backend -p ll_cache_miss_rd -o memaccesstest-regular.stat ./memaccesstest.out
# LD_PRELOAD=./libjemalloc.so time pmcstat -d -w 1 -p l1d_tlb_rd -p l2d_tlb_rd -p l1d_tlb_refill -p cpu_cycles -p dtlb_walk -p stall_backend -p ll_cache_miss_rd -o memaccesstest-cheri-8000.stat ./memaccesstest.out
# LD_PRELOAD=./regularjemalloc.so time pmcstat -d -w 1 -p l1d_tlb_rd -p l2d_tlb_rd -p l1d_tlb_refill -p cpu_cycles -p dtlb_walk -p stall_backend -p ll_cache_miss_rd -o memaccesstest-regular-8000.stat ./memaccesstest.out
time pmcstat -d -w 1 -p l1d_tlb_rd -p l2d_tlb_rd -p l1d_tlb_refill -p cpu_cycles -p dtlb_walk -p stall_backend -p ll_cache_miss_rd -o memaccesstest-regular-alloc-8000.stat ./memaccesstest.out

BIN
docs/EuroSys/.DS_Store vendored

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
latexmk -pdf paper.tex
latexmk --shell-escape -pdf paper.tex

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -0,0 +1,72 @@
static void *
os_pages_map(void *addr, size_t size, size_t alignment, bool *commit) {
assert(ALIGNMENT_ADDR2BASE(addr, os_page) == (vaddr_t)addr);
assert(ALIGNMENT_CEILING(size, os_page) == size);
assert(size != 0);
/* Non-NULL addresses don't work in CheriABI */
if (addr != NULL)
return (NULL);
if (os_overcommits) {
*commit = true;
}
void *ret;
ret = MALLOCCHERI(size);
assert(ret != NULL);
if (addr != NULL && ret != addr) {
/*
* We succeeded in mapping memory, but not in the right place.
*/
os_pages_unmap(ret, size);
ret = NULL;
}
}
void *
pages_map(void *addr, size_t size, size_t alignment, bool *commit) {
assert(alignment >= PAGE);
assert(ALIGNMENT_ADDR2BASE(addr, alignment) == (vaddr_t)addr);
if (size & ~CHERI_REPRESENTABLE_ALIGNMENT_MASK(size))
abort();
...
void *ret = MALLOCCHERI(size); // replaced instead of mmap
return ret;
}
static bool
pages_commit_impl(void *addr, size_t size, bool commit) {
assert(PAGE_ADDR2BASE(addr) == addr);
assert(PAGE_CEILING(size) == size);
...
void *result = MALLOCCHERI(size); // replaced instead of mmap
if (result != addr) {
/*
* We succeeded in mapping memory, but not in the right
* place.
*/
os_pages_unmap(result, size);
return true;
}
return false;
}
static void
os_pages_unmap(void *addr, size_t size) {
assert(ALIGNMENT_ADDR2BASE(addr, os_page) == (vaddr_t)addr);
assert(ALIGNMENT_CEILING(size, os_page) == size);
FREECHERI(addr);
}

View File

@@ -1,19 +1,18 @@
\relax
\providecommand{\transparent@use}[1]{}
\providecommand\hyper@newdestlabel[2]{}
\providecommand\HyField@AuxAddToFields[1]{}
\providecommand\HyField@AuxAddToCoFields[2]{}
\citation{TLBHierarchy}
\citation{mittal_survey_2017}
\citation{panwar_hawkeye_2019}
\citation{woodruff_cheri_2014}
\citation{woodruff_cheri_2019}
\@writefile{toc}{\contentsline {section}{Abstract}{1}{section*.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{1}{section.1}\protected@file@percent }
\citation{TLBReach}
\citation{panwar_hawkeye_2019}
\citation{THP}
\@writefile{toc}{\contentsline {section}{Abstract}{1}{section*.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{1}{section.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {2}Related work}{1}{section.2}\protected@file@percent }
\newlabel{sec:org0e192da}{{2}{1}{Related work}{section.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Huge Pages}{1}{subsection.2.1}\protected@file@percent }
\citation{IntelItanium}
\citation{Shadow_superpages}
\citation{DirectSegment}
@@ -22,83 +21,99 @@
\citation{chen_flexpointer_2023}
\citation{karakostas_redundant_2015}
\citation{woodruff_cheri_2019}
\@writefile{toc}{\contentsline {section}{\numberline {2}Related work}{2}{section.2}\protected@file@percent }
\newlabel{sec:org0e192da}{{2}{2}{Related work}{section.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Huge Pages}{2}{subsection.2.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Direct Segment}{2}{subsection.2.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Redundant Memory Mapping (RMM)}{2}{subsection.2.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {2.4}CHERI}{2}{subsection.2.4}\protected@file@percent }
\newlabel{sec:orgbf2eaac}{{2.4}{2}{CHERI}{subsection.2.4}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.5}CHERI CC}{2}{subsection.2.5}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {3}Fat Address Translations}{2}{section.3}\protected@file@percent }
\newlabel{sec:FatPointerTranslations}{{3}{2}{Fat Address Translations}{section.3}{}}
\citation{woodruff_cheri_2019}
\citation{woodruff_cheri_2019}
\citation{woodruff_cheri_2019}
\@writefile{toc}{\contentsline {section}{\numberline {3}Fat Address Translations}{3}{section.3}\protected@file@percent }
\newlabel{sec:FatPointerTranslations}{{3}{3}{Fat Address Translations}{section.3}{}}
\@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 {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}{4}{subsection.4.1}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces FAT Address Translations using huge pages}}{4}{figure.caption.5}\protected@file@percent }
\newlabel{fig:HugePages}{{3}{4}{FAT Address Translations using huge pages}{figure.caption.5}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Instrumenting Block-Based Allocators with Physically Contiguous Memory}{3}{subsection.4.1}\protected@file@percent }
\citation{jemalloc}
\citation{cheribsd}
\citation{Benchmark}
\citation{Morello}
\@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 }
\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{Benchmark}
\citation{Morello}
\@writefile{loa}{\contentsline {algorithm}{\numberline {3}{\ignorespaces Init alloc function to create a initial 1 GB huge page}}{4}{algorithm.3}\protected@file@percent }
\newlabel{alg:initAlloc}{{3}{4}{Init alloc function to create a initial 1 GB huge page}{algorithm.3}{}}
\@writefile{toc}{\contentsline {section}{\numberline {6}Embedding FAT allocator inside Jemalloc}{4}{section.6}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {7}Evaluation}{4}{section.7}\protected@file@percent }
\newlabel{sec:Evaluation}{{7}{4}{Evaluation}{section.7}{}}
\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}{}}
\newlabel{alg:JemallocFree}{{\caption@xref {alg:JemallocFree}{ on input line 827}}{5}{Embedding FAT allocator inside Jemalloc}{algorithm.4}{}}
\@writefile{loa}{\contentsline {algorithm}{\numberline {5}{\ignorespaces os\_pages\_unmap}}{5}{algorithm.5}\protected@file@percent }
\@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}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {7.2}Benchmarks}{5}{subsection.7.2}\protected@file@percent }
\newlabel{sec:Micro}{{7.2.1}{5}{Micro benchmark}{subsubsection.7.2.1}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.2.1}Micro benchmark}{5}{subsubsection.7.2.1}\protected@file@percent }
\newlabel{sec:Macro}{{7.2.2}{5}{Macro benchmark}{subsubsection.7.2.2}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.2.2}Macro benchmark}{5}{subsubsection.7.2.2}\protected@file@percent }
\citation{singh1993}
\citation{holt1995}
\@writefile{loa}{\contentsline {algorithm}{\numberline {3}{\ignorespaces Init alloc function to create a initial 1 GB huge page}}{5}{algorithm.3}\protected@file@percent }
\newlabel{alg:initAlloc}{{3}{5}{Init alloc function to create a initial 1 GB huge page}{algorithm.3}{}}
\@writefile{toc}{\contentsline {section}{\numberline {6}Evaluation}{5}{section.6}\protected@file@percent }
\newlabel{sec:Evaluation}{{6}{5}{Evaluation}{section.6}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Experiment setup}{5}{subsection.6.1}\protected@file@percent }
\newlabel{sec:Experiment}{{6.1}{5}{Experiment setup}{subsection.6.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Benchmarks}{5}{subsection.6.2}\protected@file@percent }
\newlabel{sec:Micro}{{6.2.1}{5}{Micro benchmark}{subsubsection.6.2.1}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.1}Micro benchmark}{5}{subsubsection.6.2.1}\protected@file@percent }
\newlabel{sec:Macro}{{6.2.2}{5}{Macro benchmark}{subsubsection.6.2.2}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.2}Macro benchmark}{5}{subsubsection.6.2.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {6.3}Results}{6}{subsection.6.3}\protected@file@percent }
\newlabel{sec:Results}{{6.3}{6}{Results}{subsection.6.3}{}}
\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces ARM performance counters}}{6}{table.caption.6}\protected@file@percent }
\newlabel{tab:org246a883}{{1}{6}{ARM performance counters}{table.caption.6}{}}
\newlabel{table:ARMPerf}{{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}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {7.3}Results}{6}{subsection.7.3}\protected@file@percent }
\newlabel{sec:Results}{{7.3}{6}{Results}{subsection.7.3}{}}
\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces ARM performance counters}}{6}{table.caption.4}\protected@file@percent }
\newlabel{tab:org246a883}{{1}{6}{ARM performance counters}{table.caption.4}{}}
\newlabel{table:ARMPerf}{{1}{6}{ARM performance counters}{table.caption.4}{}}
\newlabel{fig:dtlb-walk}{{2a}{7}{DTLB Walks}{figure.caption.5}{}}
\newlabel{sub@fig:dtlb-walk}{{a}{7}{DTLB Walks}{figure.caption.5}{}}
\newlabel{fig:l1tlb-reads}{{2b}{7}{L1 TLB Reads}{figure.caption.5}{}}
\newlabel{sub@fig:l1tlb-reads}{{b}{7}{L1 TLB Reads}{figure.caption.5}{}}
\newlabel{fig:l1tlb-refill}{{2c}{7}{L1 TLB Refill}{figure.caption.5}{}}
\newlabel{sub@fig:l1tlb-refill}{{c}{7}{L1 TLB Refill}{figure.caption.5}{}}
\newlabel{fig:l2tlb-reads}{{2d}{7}{L2 TLB Reads}{figure.caption.5}{}}
\newlabel{sub@fig:l2tlb-reads}{{d}{7}{L2 TLB Reads}{figure.caption.5}{}}
\newlabel{fig:ll-cache-rd}{{2e}{7}{LL Cache Reads}{figure.caption.5}{}}
\newlabel{sub@fig:ll-cache-rd}{{e}{7}{LL Cache Reads}{figure.caption.5}{}}
\newlabel{fig:wallclock}{{2f}{7}{Wall Clock Time}{figure.caption.5}{}}
\newlabel{sub@fig:wallclock}{{f}{7}{Wall Clock Time}{figure.caption.5}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Benchmarks comparing the percentage difference between FAT.}}{7}{figure.caption.5}\protected@file@percent }
\newlabel{fig:benchmarks-group}{{2}{7}{Benchmarks comparing the percentage difference between FAT}{figure.caption.5}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {7.4}Analysis}{8}{subsection.7.4}\protected@file@percent }
\newlabel{sec:Analysis}{{7.4}{8}{Analysis}{subsection.7.4}{}}
\bibstyle{unsrtnat}
\bibdata{paperReferences}
\bibcite{mittal_survey_2017}{{1}{}{{Mittal}}{{}}}
\bibcite{panwar_hawkeye_2019}{{2}{}{{Panwar et~al.}}{{Panwar, Bansal, and Gopinath}}}
\bibcite{woodruff_cheri_2014}{{3}{}{{Woodruff et~al.}}{{Woodruff, Watson, Chisnall, Moore, Anderson, Davis, Laurie, Neumann, Norton, and Roe}}}
\bibcite{woodruff_cheri_2019}{{4}{}{{Woodruff et~al.}}{{Woodruff, Joannou, Xia, Fox, Norton, Chisnall, Davis, Gudka, Filardo, Markettos, Roe, Neumann, Watson, and Moore}}}
\bibcite{TLBReach}{{5}{2014}{{Pham et~al.}}{{Pham, Bhattacharjee, Eckert, and Loh}}}
\bibcite{THP}{{6}{2003}{{Navarro et~al.}}{{Navarro, Iyer, Druschel, and Cox}}}
\bibcite{IntelItanium}{{7}{2003}{{Cornea et~al.}}{{Cornea, Harrison, and Tang}}}
\bibcite{Shadow_superpages}{{8}{2001}{{Park and Park}}{{}}}
\bibcite{DirectSegment}{{9}{2013}{{Basu et~al.}}{{Basu, Gandhi, Chang, Hill, and Swift}}}
\bibcite{karakostas_redundant_2015}{{10}{}{{Karakostas et~al.}}{{Karakostas, Gandhi, Ayar, Cristal, Hill, {McKinley}, Nemirovsky, Swift, and Ünsal}}}
\bibcite{chen_flexpointer_2023}{{11}{2023}{{Chen et~al.}}{{Chen, Tong, Yang, Yi, and Cheng}}}
\bibcite{jemalloc}{{12}{2006}{{Evans}}{{}}}
\bibcite{cheribsd}{{13}{}{{che}}{{}}}
\bibcite{Benchmark}{{14}{}{{Ben}}{{}}}
\bibcite{Morello}{{15}{}{{Mor}}{{}}}
\bibcite{BenchmarkABI}{{16}{2023}{{Watson et~al.}}{{Watson, Clarke, Sewell, Woodruff, Moore, Barnes, Grisenthwaite, Stacer, Baranga, and Richardson}}}
\bibcite{PerformanceCounter}{{17}{}{{Per}}{{}}}
\bibcite{singh1993}{{18}{1993}{{Singh}}{{}}}
\bibcite{holt1995}{{19}{1995}{{Holt and Singh}}{{}}}
\bibcite{TLBHierarchy}{{1}{2013}{{Lustig et~al.}}{{Lustig, Bhattacharjee, and Martonosi}}}
\bibcite{mittal_survey_2017}{{2}{}{{Mittal}}{{}}}
\bibcite{panwar_hawkeye_2019}{{3}{}{{Panwar et~al.}}{{Panwar, Bansal, and Gopinath}}}
\bibcite{woodruff_cheri_2014}{{4}{}{{Woodruff et~al.}}{{Woodruff, Watson, Chisnall, Moore, Anderson, Davis, Laurie, Neumann, Norton, and Roe}}}
\bibcite{woodruff_cheri_2019}{{5}{}{{Woodruff et~al.}}{{Woodruff, Joannou, Xia, Fox, Norton, Chisnall, Davis, Gudka, Filardo, Markettos, Roe, Neumann, Watson, and Moore}}}
\bibcite{TLBReach}{{6}{2014}{{Pham et~al.}}{{Pham, Bhattacharjee, Eckert, and Loh}}}
\bibcite{THP}{{7}{2003}{{Navarro et~al.}}{{Navarro, Iyer, Druschel, and Cox}}}
\bibcite{IntelItanium}{{8}{2003}{{Cornea et~al.}}{{Cornea, Harrison, and Tang}}}
\bibcite{Shadow_superpages}{{9}{2001}{{Park and Park}}{{}}}
\bibcite{DirectSegment}{{10}{2013}{{Basu et~al.}}{{Basu, Gandhi, Chang, Hill, and Swift}}}
\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{jemalloc}{{13}{2006}{{Evans}}{{}}}
\bibcite{cheribsd}{{14}{}{{che}}{{}}}
\bibcite{Benchmark}{{15}{}{{Ben}}{{}}}
\bibcite{Morello}{{16}{}{{Mor}}{{}}}
\bibcite{BenchmarkABI}{{17}{2023}{{Watson et~al.}}{{Watson, Clarke, Sewell, Woodruff, Moore, Barnes, Grisenthwaite, Stacer, Baranga, and Richardson}}}
\bibcite{PerformanceCounter}{{18}{}{{Per}}{{}}}
\bibcite{singh1993}{{19}{1993}{{Singh}}{{}}}
\bibcite{holt1995}{{20}{1995}{{Holt and Singh}}{{}}}
\newlabel{tocindent-1}{0pt}
\newlabel{tocindent0}{0pt}
\newlabel{tocindent1}{4.185pt}
@@ -106,9 +121,8 @@
\newlabel{tocindent3}{18.198pt}
\newlabel{tocindent4}{0pt}
\newlabel{tocindent5}{0pt}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.4}Analysis}{8}{subsection.6.4}\protected@file@percent }
\newlabel{sec:Analysis}{{6.4}{8}{Analysis}{subsection.6.4}{}}
\@writefile{toc}{\contentsline {section}{\numberline {7}Conclusion}{8}{section.7}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{References}{8}{section*.10}\protected@file@percent }
\newlabel{TotPages}{{8}{8}{}{page.8}{}}
\gdef \@abspage@last{8}
\@writefile{toc}{\contentsline {section}{\numberline {8}Conclusion}{9}{section.8}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{References}{9}{section*.7}\protected@file@percent }
\newlabel{TotPages}{{9}{9}{}{page.9}{}}
\gdef\svg@ink@ver@settings{{\m@ne }{inkscape}{\m@ne }}
\gdef \@abspage@last{9}

View File

@@ -1,10 +1,19 @@
\begin{thebibliography}{19}
\begin{thebibliography}{20}
\providecommand{\natexlab}[1]{#1}
\providecommand{\url}[1]{\texttt{#1}}
\expandafter\ifx\csname urlstyle\endcsname\relax
\providecommand{\doi}[1]{doi: #1}\else
\providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi
\bibitem[Lustig et~al.(2013)Lustig, Bhattacharjee, and Martonosi]{TLBHierarchy}
Daniel Lustig, Abhishek Bhattacharjee, and Margaret Martonosi.
\newblock Tlb improvements for chip multiprocessors: Inter-core cooperative
prefetchers and shared last-level tlbs.
\newblock \emph{ACM Trans. Archit. Code Optim.}, 10\penalty0 (1), April 2013.
\newblock ISSN 1544-3566.
\newblock \doi{10.1145/2445572.2445574}.
\newblock URL \url{https://doi.org/10.1145/2445572.2445574}.
\bibitem[Mittal()]{mittal_survey_2017}
Sparsh Mittal.
\newblock A survey of techniques for architecting {TLBs}.

View File

@@ -4,13 +4,13 @@ The top-level auxiliary file: paper.aux
The style file: unsrtnat.bst
Database file #1: paperReferences.bib
Warning--entry type for "cheribsd" isn't style-file defined
--line 496 of file paperReferences.bib
--line 516 of file paperReferences.bib
Warning--entry type for "Benchmark" isn't style-file defined
--line 525 of file paperReferences.bib
--line 545 of file paperReferences.bib
Warning--entry type for "Morello" isn't style-file defined
--line 532 of file paperReferences.bib
--line 552 of file paperReferences.bib
Warning--entry type for "PerformanceCounter" isn't style-file defined
--line 539 of file paperReferences.bib
--line 559 of file paperReferences.bib
Warning--empty journal in mittal_survey_2017
Warning--empty year in mittal_survey_2017
Warning--empty year in mittal_survey_2017
@@ -26,45 +26,45 @@ Warning--empty year in cheribsd
Warning--empty year in Benchmark
Warning--empty year in Morello
Warning--empty year in PerformanceCounter
You've used 19 entries,
You've used 20 entries,
2481 wiz_defined-function locations,
694 strings with 9651 characters,
and the built_in function-call counts, 8253 in all, are:
= -- 687
> -- 483
700 strings with 9907 characters,
and the built_in function-call counts, 8624 in all, are:
= -- 721
> -- 504
< -- 10
+ -- 187
- -- 148
* -- 708
:= -- 1308
add.period$ -- 89
call.type$ -- 19
change.case$ -- 37
chr.to.int$ -- 18
cite$ -- 38
duplicate$ -- 388
empty$ -- 699
format.name$ -- 167
if$ -- 1758
+ -- 195
- -- 154
* -- 742
:= -- 1373
add.period$ -- 95
call.type$ -- 20
change.case$ -- 39
chr.to.int$ -- 19
cite$ -- 39
duplicate$ -- 406
empty$ -- 728
format.name$ -- 174
if$ -- 1835
int.to.chr$ -- 2
int.to.str$ -- 20
missing$ -- 13
newline$ -- 132
num.names$ -- 45
pop$ -- 168
int.to.str$ -- 21
missing$ -- 14
newline$ -- 140
num.names$ -- 48
pop$ -- 172
preamble$ -- 1
purify$ -- 19
purify$ -- 20
quote$ -- 0
skip$ -- 240
skip$ -- 250
stack$ -- 0
substring$ -- 281
swap$ -- 86
substring$ -- 283
swap$ -- 89
text.length$ -- 5
text.prefix$ -- 0
top$ -- 0
type$ -- 133
type$ -- 140
warning$ -- 15
while$ -- 47
while$ -- 49
width$ -- 0
write$ -- 302
write$ -- 321
(There were 19 warnings)

View File

@@ -1,13 +1,13 @@
# Fdb version 4
["bibtex paper"] 1746119832.08846 "paper.aux" "paper.bbl" "paper" 1746120482.23376 0
"./paperReferences.bib" 1745589340.63702 48697 d4883e407b5f720043f557e554344075 ""
["bibtex paper"] 1748298354.94538 "paper.aux" "paper.bbl" "paper" 1748298357.47654 0
"./paperReferences.bib" 1746971882.78313 50975 d23cf0e29e30a59879e0a43f7bd63014 ""
"/usr/local/texlive/2025/texmf-dist/bibtex/bst/natbib/unsrtnat.bst" 1233624470 24550 a41a6405f4de768c43e871d9fbce2bc8 ""
"paper.aux" 1746120481.91943 8630 8ff874d683ff65b7a1eef85ee83441f1 "pdflatex"
"paper.aux" 1748298357.087 9430 ccff33579246ecce72fa55d0a77e6d17 "pdflatex"
(generated)
"paper.bbl"
"paper.blg"
(rewritten before read)
["pdflatex"] 1746120480.61771 "paper.tex" "paper.pdf" "paper" 1746120482.23388 0
["pdflatex"] 1748298355.05037 "paper.tex" "paper.pdf" "paper" 1748298357.47672 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 ""
@@ -45,6 +45,7 @@
"/usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineTI-tlf-t1--base.tfm" 1490131464 1932 54655639067fe21ae3b23b77173351a5 ""
"/usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineTI-tlf-t1.tfm" 1490131464 19920 63bb3db95807ffe45b0900d104896325 ""
"/usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/LibertineMathMI.tfm" 1569879884 1552 f91250a4f6e3f34d48dfc8f34aabc764 ""
"/usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/LibertineMathRM.tfm" 1569879884 768 5d62e4cbf373f8d0d7ef7daa7a6f7a5d ""
"/usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/NewTXMI.tfm" 1572128992 1408 ef71a9098da4d5a1a85b5920860b6731 ""
"/usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/ntxexa.tfm" 1589834365 760 e8ec875a87aa119f1af7ea4be48da9e8 ""
"/usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/ntxexx.tfm" 1699567298 1788 252bc928adbd02cba8c68f0fccd62f6c ""
@@ -59,6 +60,8 @@
"/usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/nxlmia.tfm" 1617586172 2616 0bf54bdee01e38e3ed8342d25e5584f6 ""
"/usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/stxscr.tfm" 1569879884 1836 3af1bb0996e7f6070b70151de6395c2c ""
"/usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/txex-bar.tfm" 1699567298 900 fc8190d6de1e520c751c99f1e4e5fe0a ""
"/usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/txmiaSTbb.tfm" 1569879884 920 99acdf374993fd46fd345f9cac168080 ""
"/usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/txmiaX.tfm" 1736550153 1708 e6ab41b8c6f33e297f8c7977f1424a40 ""
"/usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/txsys.tfm" 1724614892 1656 68b5079c64f1cefe2cf442b6a60cf2fd ""
"/usr/local/texlive/2025/texmf-dist/fonts/type1/public/inconsolata/Inconsolata-zi4r.pfb" 1558214095 55526 184de5d68af8c544d6d1653244a2b006 ""
"/usr/local/texlive/2025/texmf-dist/fonts/type1/public/libertine/LinBiolinumT.pfb" 1354061736 548786 1e51d517556d29f2841d57da58668a69 ""
@@ -69,6 +72,7 @@
"/usr/local/texlive/2025/texmf-dist/fonts/type1/public/libertine/LinLibertineTI.pfb" 1354061736 490980 e27f1e217a0902faea22205f197918d4 ""
"/usr/local/texlive/2025/texmf-dist/fonts/type1/public/newtx/LibertineMathMI.pfb" 1569879884 35829 268d1d114c9114e541f92817aec4230d ""
"/usr/local/texlive/2025/texmf-dist/fonts/type1/public/newtx/NewTXMI.pfb" 1724614892 32409 aee30089ce2d804d7327a2f8ccff0462 ""
"/usr/local/texlive/2025/texmf-dist/fonts/type1/public/newtx/txmiaX.pfb" 1736550153 65081 1217ccf27de85b7db49806ee29c16745 ""
"/usr/local/texlive/2025/texmf-dist/fonts/type1/public/newtx/txsys.pfb" 1724614892 45985 fd5f8adcc4f0e93e9a95469e12126723 ""
"/usr/local/texlive/2025/texmf-dist/fonts/vf/public/libertine/LinBiolinumT-tlf-t1.vf" 1490131464 1728 e76e04a950024a95b620698b679c9810 ""
"/usr/local/texlive/2025/texmf-dist/fonts/vf/public/libertine/LinBiolinumTB-tlf-t1.vf" 1354061736 1728 4ae633ddccb76ba8d0a0906a5e2e8fdf ""
@@ -81,10 +85,13 @@
"/usr/local/texlive/2025/texmf-dist/fonts/vf/public/libertine/LinLibertineTI-tlf-t1.vf" 1490131464 1768 b3bfd8ed1fe2dce5fd19610abe4c3dbe ""
"/usr/local/texlive/2025/texmf-dist/fonts/vf/public/newtx/ntxsy.vf" 1724614892 1792 7cf99effbd74f7851ca7683a6d12b685 ""
"/usr/local/texlive/2025/texmf-dist/fonts/vf/public/newtx/nxlmi.vf" 1569879884 2744 3e5ba39e1559219ae379b7645e2f9524 ""
"/usr/local/texlive/2025/texmf-dist/fonts/vf/public/newtx/nxlmia.vf" 1617586172 2252 bb868e02d533d88cf043058750d87c0b ""
"/usr/local/texlive/2025/texmf-dist/tex/context/base/mkii/supp-pdf.mkii" 1461363279 71627 94eb9990bed73c364d7f53f960cc8c5b ""
"/usr/local/texlive/2025/texmf-dist/tex/generic/atbegshi/atbegshi.sty" 1575674566 24708 5584a51a7101caf7e6bbf1fc27d8f7b1 ""
"/usr/local/texlive/2025/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty" 1576625341 40635 c40361e206be584d448876bba8a64a3b ""
"/usr/local/texlive/2025/texmf-dist/tex/generic/bitset/bitset.sty" 1576016050 33961 6b5c75130e435b2bfdb9f480a09a39f9 ""
"/usr/local/texlive/2025/texmf-dist/tex/generic/catchfile/catchfile.sty" 1576016007 8622 63834878edeb14dd71d58d8f22bc3e06 ""
"/usr/local/texlive/2025/texmf-dist/tex/generic/etexcmds/etexcmds.sty" 1576625273 7734 b98cbb34c81f667027c1e3ebdbfce34b ""
"/usr/local/texlive/2025/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty" 1576625223 8371 9d55b8bd010bc717624922fb3477d92e ""
"/usr/local/texlive/2025/texmf-dist/tex/generic/iftex/ifluatex.sty" 1572645307 492 1994775aa15b0d1289725a0b1bbc2d4c ""
"/usr/local/texlive/2025/texmf-dist/tex/generic/iftex/iftex.sty" 1734129479 7984 7dbb9280f03c0a315425f1b4f35d43ee ""
@@ -98,6 +105,18 @@
"/usr/local/texlive/2025/texmf-dist/tex/generic/pdfescape/pdfescape.sty" 1576015897 19007 15924f7228aca6c6d184b115f4baa231 ""
"/usr/local/texlive/2025/texmf-dist/tex/generic/pdftex/glyphtounicode.tex" 1353199370 216747 92ec6cf8e39216b4894417b5aa6f057a ""
"/usr/local/texlive/2025/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty" 1593379760 20089 80423eac55aa175305d35b49e04fe23b ""
"/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/pgf.revision.tex" 1673816307 114 e6d443369d0673933b38834bf99e422d ""
"/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg" 1601326656 926 2963ea0dcf6cc6c0a770b69ec46a477b ""
"/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def" 1673816307 5542 32f75a31ea6c3a7e1148cd6d5e93dbb7 ""
"/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def" 1673816307 12612 7774ba67bfd72e593c4436c2de6201e3 ""
"/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex" 1673816307 61351 bc5f86e0355834391e736e97a61abced ""
"/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex" 1601326656 1896 b8e0ca0ac371d74c0ca05583f6313c91 ""
"/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex" 1601326656 7778 53c8b5623d80238f6a20aa1df1868e63 ""
"/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex" 1673816307 39784 414c54e866ebab4b801e2ad81d9b21d8 ""
"/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/utilities/pgfkeyslibraryfiltered.code.tex" 1673816307 37433 940bc6d409f1ffd298adfdcaf125dd86 ""
"/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex" 1673816307 4385 510565c2f07998c8a0e14f0ec07ff23c ""
"/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex" 1673816307 29239 22e8c7516012992a49873eff0d868fed ""
"/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def" 1673816307 6950 8524a062d82b7afdc4a88a57cb377784 ""
"/usr/local/texlive/2025/texmf-dist/tex/generic/stringenc/se-pdfdoc.def" 1575152242 5108 8920602307ea1294ccbce2300c7c6ccb ""
"/usr/local/texlive/2025/texmf-dist/tex/generic/stringenc/se-utf8.def" 1575152242 11635 4fd2019d04ad095a0b1bde5aaed4a70e ""
"/usr/local/texlive/2025/texmf-dist/tex/generic/stringenc/stringenc.sty" 1575152242 21514 b7557edcee22835ef6b03ede1802dad4 ""
@@ -121,6 +140,7 @@
"/usr/local/texlive/2025/texmf-dist/tex/latex/amsmath/amsopn.sty" 1717359999 4474 23ca1d3a79a57b405388059456d0a8df ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/amsmath/amstext.sty" 1717359999 2444 71618ea5f2377e33b04fb97afdd0eac2 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/atveryend/atveryend.sty" 1728505250 1695 be6b4d13b33db697fd3fd30b24716c1a ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/auxhook/auxhook.sty" 1576625391 3935 57aa3c3e203a5c2effb4d2bd2efbc323 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/base/atbegshi-ltx.sty" 1738182759 2963 d8ec5a1b4e0a106c5c737900202763e4 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/base/atveryend-ltx.sty" 1738182759 2378 14b657ee5031da98cf91648f19642694 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/base/fontenc.sty" 1738182759 5275 0d62fb62162c7ab056e941ef18c5076d ""
@@ -130,6 +150,7 @@
"/usr/local/texlive/2025/texmf-dist/tex/latex/caption/caption-ams-smf.sto" 1645391520 2176 c0bb71a9780b6b41388cfa629b1a32f7 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/caption/caption.sty" 1696191071 56128 c2ccf1a29d78c33bc553880402e4fb9a ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/caption/caption3.sty" 1696191071 72619 ee90b6612147680fd73c3b1406a74245 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/caption/subcaption.sty" 1690576852 12494 0c0cdb824278a4d51cefeb2e79901315 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/cmap/cmap.sty" 1612650595 3574 ddc11a0ae1c579d351ed20d2319ad422 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/cmap/ot1.cmap" 1177721415 1207 4e0d96772f0d338847cbfb4eca683c81 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/cmap/t1.cmap" 1215522782 1938 beaa4a8467aa0074076e0e19f2992e29 ""
@@ -160,8 +181,13 @@
"/usr/local/texlive/2025/texmf-dist/tex/latex/hyperref/puenc.def" 1730838014 117112 7533bff456301d32e6d6356fad15f543 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/hyperxmp/hyperxmp.sty" 1710792253 62205 a7f89f92229cfedbace009eb0e06c099 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/ifmtarg/ifmtarg.sty" 1525197427 318 019510c713feab56160631df4423d2aa ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/ifplatform/ifplatform.sty" 1507930826 3910 e04f6a6d983bdbdb024917b7ccc80262 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/inconsolata/t1zi4.fd" 1516054831 1021 03341d1cf7f388bbac1915f944d5d128 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/inconsolata/zi4.sty" 1558214095 4319 14e5db0b68d045ed49e4ed232b58e93f ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/koma-script/scrbase.sty" 1729800159 100966 88ffa900fd38336daf0681d35d342ea9 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty" 1729800159 11185 08107e8d26d093ccd4c424c2b74809f6 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/koma-script/scrlfile.sty" 1729800159 3328 17a5a2d4f4e9d388803c10ac9fffe9d3 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/koma-script/scrlogo.sty" 1729800159 2162 e219c1ddf641a7cd0ee0103af3ac7f3d ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/kvoptions/kvoptions.sty" 1655478651 22555 6d8e155cfef6d82c3d5c742fea7c992e ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty" 1665067230 13815 760b0c02f691ea230f5359c4e1de23a7 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def" 1716410060 29785 9f93ab201fe5dd053afcc6c1bcf7d266 ""
@@ -200,11 +226,18 @@
"/usr/local/texlive/2025/texmf-dist/tex/latex/newtx/untxsym.fd" 1692649180 568 9df6be53c1b3ec79740d714ff4ae0937 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/oberdiek/centernot.sty" 1575152444 1640 c9cca60f81c5839b9a3e794d72c0b0a7 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/oberdiek/ifdraft.sty" 1575152444 1922 5bdcc31b0573e5e7f31c36f1b88b6a7d ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty" 1601326656 443 8c872229db56122037e86bcda49e14f3 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty" 1601326656 325 f9f16d12354225b7dd52a3321f085955 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/preprint/balance.sty" 1137110595 3366 d938ad2440edc1ea1c9042843580ec42 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/refcount/refcount.sty" 1576624809 9878 9e94e8fa600d95f9c7731bb21dfb67a4 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty" 1657483315 9714 ba3194bd52c8499b3f1e3eb91d409670 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/sttools/stfloats.sty" 1633983922 24057 ff20efb65b128d27c08eac20ec07f540 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/svg/svg.sty" 1606428179 43468 671ae75b3a15019004495eff4c0911e8 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/tools/multicol.sty" 1730496337 32879 f4cfa2226c995da5b04a89ee47abf182 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/tools/shellesc.sty" 1717359999 4121 6039ae6d0916154d7ba5f20a77b9ab2c ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/totpages/totpages.sty" 1137110984 7670 b07e668265cf485332abe582e7ed306e ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/transparent/transparent-nometadata.sty" 1667073146 4212 8da4873548cbd3f1cdb053c708e8aa7e ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/transparent/transparent.sty" 1667073146 1918 c8d1ecb3722721d6f624992cbc042b70 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/trimspaces/trimspaces.sty" 1253232110 1380 971a51b00a14503ddf754cab24c3f209 ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/upquote/upquote.sty" 1334873510 1048 517e01cde97c1c0baf72e69d43aa5a2e ""
"/usr/local/texlive/2025/texmf-dist/tex/latex/url/url.sty" 1388531844 12796 8edb7d69a20b857904dd0ea757c14ec9 ""
@@ -214,15 +247,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/AllocationOverview24.png" 1744196148.80395 45834 e2cfc13e3970cce298f0396858ac1356 ""
"diagram/HighOverviewArchitecture.drawio.png" 1744196148.80443 152902 4b92f7b86b6525c26112d4fd5935c951 ""
"diagram/TLBAccess.drawio.png" 1744196148.80543 77522 75367f218335fe386db852966a892e9b ""
"diagram/bargraph.png" 1744196148.80607 74263 65509d21744edc6c9ca02b8c67d664fb ""
"diagram/kmeans.png" 1744196148.80901 94217 5d14308c169ff296bf499805b9823aa6 ""
"paper.aux" 1746120481.91943 8630 8ff874d683ff65b7a1eef85ee83441f1 "pdflatex"
"paper.bbl" 1746119832.17155 7952 3cec73ed2c35c17fe652d73c68776561 "bibtex paper"
"paper.out" 1746120481.92017 3219 ff23a20e7f9cd62748c922bd1981ad35 "pdflatex"
"paper.tex" 1746120448.7184 84344 b3fefa270d2a57b400742b41f24533a9 ""
"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/drawing_png.png" 1748297803.36134 22858 0c9dbeaa2b2a2c8d4588aeb499d141da ""
"paper.aux" 1748298357.087 9430 ccff33579246ecce72fa55d0a77e6d17 "pdflatex"
"paper.bbl" 1748298355.0467 8420 47d3ab73b727b7165b20d774bb45ad1a "bibtex paper"
"paper.out" 1748298357.08809 3482 dfb5cd2e0b64721769d9bbb90a3777d7 "pdflatex"
"paper.tex" 1748298348.19746 97986 3d168af49491944c70254477c1890880 ""
(generated)
"paper.aux"
"paper.log"

View File

@@ -242,6 +242,63 @@ INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/sttools/stfloats.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/sttools/stfloats.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/grffile/grffile.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/grffile/grffile.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/tools/multicol.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/tools/multicol.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/caption/subcaption.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/caption/subcaption.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/svg/svg.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/svg/svg.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/koma-script/scrbase.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/koma-script/scrbase.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/koma-script/scrlfile.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/koma-script/scrlfile.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/koma-script/scrlogo.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/koma-script/scrlogo.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/tools/shellesc.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/tools/shellesc.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/ifplatform/ifplatform.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/ifplatform/ifplatform.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/catchfile/catchfile.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/catchfile/catchfile.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/etexcmds/etexcmds.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/etexcmds/etexcmds.sty
INPUT ./paper.w18
INPUT ./paper.w18
INPUT paper.w18
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/transparent/transparent.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/transparent/transparent.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/transparent/transparent-nometadata.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/transparent/transparent-nometadata.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/auxhook/auxhook.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/auxhook/auxhook.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/pgf/pgf.revision.tex
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/pgf/pgf.revision.tex
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/pgf/utilities/pgfkeyslibraryfiltered.code.tex
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex
INPUT /usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/preprint/balance.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/preprint/balance.sty
INPUT ./paper.aux
@@ -322,6 +379,7 @@ INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/upquote/upquote.sty
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/upquote/upquote.sty
INPUT 'inkscape' -V
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineT-tlf-t1.tfm
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/libertine/T1LinuxBiolinumT-TLF.fd
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/libertine/T1LinuxBiolinumT-TLF.fd
@@ -491,31 +549,25 @@ INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/txsys.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/txex-bar.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/vf/public/libertine/LinLibertineTB-tlf-t1.vf
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineTB-tlf-t1--base.tfm
INPUT ./diagram/HighOverviewArchitecture.drawio.png
INPUT ./diagram/HighOverviewArchitecture.drawio.png
INPUT ./diagram/HighOverviewArchitecture.drawio.png
INPUT ./diagram/HighOverviewArchitecture.drawio.png
INPUT ./diagram/HighOverviewArchitecture.drawio.png
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineTI-tlf-t1.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinBiolinumT-tlf-t1.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinBiolinumT-tlf-t1.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/vf/public/libertine/LinBiolinumT-tlf-t1.vf
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinBiolinumT-tlf-t1--base.tfm
INPUT ./diagram/drawing_png.png
INPUT ./diagram/drawing_png.png
INPUT ./diagram/drawing_png.png
INPUT ./diagram/drawing_png.png
INPUT ./diagram/drawing_png.png
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineTI-tlf-t1.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/vf/public/libertine/LinLibertineTI-tlf-t1.vf
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineTI-tlf-t1--base.tfm
INPUT ./diagram/AllocationOverview24.png
INPUT ./diagram/AllocationOverview24.png
INPUT ./diagram/AllocationOverview24.png
INPUT ./diagram/AllocationOverview24.png
INPUT ./diagram/AllocationOverview24.png
INPUT ./diagram/TLBAccess.drawio.png
INPUT ./diagram/TLBAccess.drawio.png
INPUT ./diagram/TLBAccess.drawio.png
INPUT ./diagram/TLBAccess.drawio.png
INPUT ./diagram/TLBAccess.drawio.png
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineT-tlf-sc-t1.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineT-tlf-t1.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineT-tlf-t1.tfm
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/inconsolata/t1zi4.fd
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/inconsolata/t1zi4.fd
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/inconsolata/t1zi4.fd
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/inconsolata/t1-zi4r-4.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/vf/public/libertine/LinLibertineT-tlf-sc-t1.vf
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineT-tlf-sc-t1--base.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_ncsllp.enc
@@ -527,23 +579,43 @@ INPUT /usr/local/texlive/2025/texmf-dist/fonts/vf/public/libertine/LinLibertineT
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineT-tlf-ot1--base.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_oexx6f.enc
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinBiolinumTI-tlf-t1.tfm
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/inconsolata/t1zi4.fd
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/inconsolata/t1zi4.fd
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/inconsolata/t1zi4.fd
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/inconsolata/t1-zi4r-4.tfm
INPUT ./diagram/bargraph.png
INPUT ./diagram/bargraph.png
INPUT ./diagram/bargraph.png
INPUT ./diagram/bargraph.png
INPUT ./diagram/bargraph.png
INPUT /usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/inconsolata/i4-t1-4.enc
INPUT /usr/local/texlive/2025/texmf-dist/fonts/vf/public/newtx/nxlmia.vf
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/LibertineMathRM.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/txmiaSTbb.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/txmiaX.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 /usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/inconsolata/i4-t1-4.enc
INPUT ./diagram/kmeans.png
INPUT ./diagram/kmeans.png
INPUT ./diagram/kmeans.png
INPUT ./diagram/kmeans.png
INPUT ./diagram/kmeans.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-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 ./paper.bbl
INPUT ./paper.bbl
INPUT paper.bbl
@@ -565,4 +637,5 @@ INPUT /usr/local/texlive/2025/texmf-dist/fonts/type1/public/libertine/LinLiberti
INPUT /usr/local/texlive/2025/texmf-dist/fonts/type1/public/libertine/LinLibertineTB.pfb
INPUT /usr/local/texlive/2025/texmf-dist/fonts/type1/public/libertine/LinLibertineTI.pfb
INPUT /usr/local/texlive/2025/texmf-dist/fonts/type1/public/newtx/NewTXMI.pfb
INPUT /usr/local/texlive/2025/texmf-dist/fonts/type1/public/newtx/txmiaX.pfb
INPUT /usr/local/texlive/2025/texmf-dist/fonts/type1/public/newtx/txsys.pfb

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -56,6 +56,12 @@
\usepackage{grffile}
\usepackage{hyperref}
\usepackage{multicol}
\usepackage{graphicx}
\usepackage{subcaption}
\usepackage{caption}
\usepackage{svg}
\lstset{basicstyle=\small\ttfamily,columns=fullflexible}
%%
@@ -127,7 +133,7 @@
%%
%% The "title" commanSd has an optional parameter,
%% allowing the author to define a "short title" to be used in page headers.
\title{Fat Address Translations}
\title{FAT allocator}
%%
%% The "author" command and its associated commands are used to define
@@ -240,12 +246,14 @@
% 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) means 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 which associates capabilities with memory pointers by integrating
block-based allocations within huge pages. Our allocator reduces TLB misses by up to 90\%, which leads to decreasing runtime
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 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. The FAT allocator when ran independently and embedded inside Jemalloc reduces walking the TLB hierarchy by upto 99%, which leads to decreasing runtimes
for memory read and write intensive applications.
\end{abstract}
%%
@@ -328,34 +336,42 @@
% accelerating memory management operations.
In computing, achieving high performance is an ongoing challenge, especially as
applications handle increasingly memory intensive workloads. Memory management is a key factor
in reducing the time it takes to access a memory region. Translation Lookaside Buffers (TLBs)
are crucial in speeding up memory access by caching recent
memory address translations. A TLB is a specialised cache in the memory management unit (MMU),
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
data in memory, the MMU first checks the TLB for a matching entry and avoids the slow process of
accessing the page tables situated in memory. However, as applications grow more complex, the fixed size of
TLBs often cannot keep up, leading to more TLB misses and performance slowdowns~\cite{mittal_survey_2017}.
accessing the page tables situated in memory.
TLBs are crucial in speeding up memory access by caching recent
memory address translations. The TLB hierarchy~\cite{TLBHierarchy} comprises of a smaller, faster L1 TLB situated close to the processor core and a larger
slightly slower L2 TLB, both of which are usually private to each core thereby reducing the latency associated with page table lookups.
However, as applications grow more complex the TLBs often cannot keep up with the number of translation entries leading to more TLB misses which requires walking
the TLB hierarchy and this leads to performance slowdowns~\cite{mittal_survey_2017}.
To tackle this issue, researchers have explored new solutions, including the use of
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 by reducing the 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. By 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.
TLB misses but also lowers the overhead associated with address translation 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.
Simultaneously, advancements in hardware-level security, such as the Capability Hardware Enhanced RISC Instructions (CHERI)
~\cite{woodruff_cheri_2014} architecture presents additional opportunities for performance enhancement. CHERI's capability-based addressing approach not
~\cite{woodruff_cheri_2014} which are 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
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
operations. By integrating CHERI's compressed encoded bounds~\cite{woodruff_cheri_2019} with the use of huge pages, one of the contribution is demonstrating that it is possible to track, manage
large and physically contiguous memory blocks without requiring numerous TLB entries. This combination reduces the TLB pressure by minimising the number of
entries required to map extensive memory regions thereby decreasing TLB misses and improving address translation performance.
Furthermore, this paper introduces Fat Address Translations(FAT) which accelerates memory-intensive tasks by reducing the overhead associated with managing non-contiguous
memory allocations. The contributions for the following paper are as follows:
Furthermore, this paper introduces the Fat Address Translations(FAT) allocator which accelerates memory-intensive tasks by reducing the overhead associated with managing non-contiguous
memory allocations by emulating block allocations on physically contiguous memory to reduce the TLB pressure. The contributions for the following paper are as follows:
\begin{itemize}
\item \textbf{FAT Addresses Translations}: Introduces FAT that include memory bounds, allowing
efficient tracking and management of physically contiguous memory regions (Section ~\ref{sec:FatPointerTranslations}).
@@ -369,8 +385,8 @@ memory allocations. The contributions for the following paper are as follows:
(Section ~\ref{sec:MemoryAllocator}).
\end{itemize}
Through comprehensive evaluation including micro and macro benchmarks, It demonstrates the allocator's ability
to reduce TLB misses by up to 90\% which yields significant improvements in wall clock runtimes for memory-intensive
Through evaluating micro and macro benchmarks, FAT though the use of CHERI's capabilities and huge pages demonstrates the allocator's ability
to reduce TLB misses by up to 90\% which yields to improvements of wall clock runtimes by upto 6\% for memory-intensive
applications. While its impact on larger and computation-heavy workloads is less pronounced.
The proposed allocator shows strong potential for advancing memory management in scenarios requiring
high memory throughput by reducing the address translation overhead.
@@ -508,12 +524,12 @@ in this implementation is the use of range addresses with CHERI CC~\cite{woodruf
% mitigating issues related to memory fragmentation.
% \end{itemize}
\begin{figure*}[h]
\includegraphics[width=0.6\textwidth]{diagram/HighOverviewArchitecture.drawio.png}
\begin{figure}[h]
\includegraphics[width=0.5\textwidth]{diagram/drawing_png.png}
\caption{High overview architecture}
\label{fig:HighOverviewArchitecture}
% \end{minipage}
\end{figure*}
\end{figure}
Figure \ref{fig:HighOverviewArchitecture} illustrates a comparison between standard memory allocation (\textit{malloc}) and the proposed FAT method. The standard approach involves a C program interacting with a custom allocator which uses 48-bit
virtual addresses and the TLB hierarchy (L1, L2 and L3 cache) to achieve non-contiguous allocation in physical memory.
@@ -536,12 +552,12 @@ bounds within the pointers and as shown in the figure \ref{fig:HighOverviewArchi
% 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}
\label{fig:RangeOfMemory}
\end{figure}
% \label{sec:RangeMemory}
% \begin{figure}[h]
% \includegraphics[width=0.4\textwidth]{diagram/AllocationOverview24.png}
% \caption{Range of memory}
% \label{fig:RangeOfMemory}
% \end{figure}
% 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.
@@ -613,11 +629,11 @@ This approach offers a more flexible alternative to the traditional fixed-size T
% achieve optimal memory access patterns, enhancing performance and efficiency.
\subsection{Instrumenting Block-Based Allocators with Physically Contiguous Memory}
\begin{figure}[h]
\includegraphics[width=0.4\textwidth]{diagram/TLBAccess.drawio.png}
\caption{FAT Address Translations using huge pages}
\label{fig:HugePages}
\end{figure}
% \begin{figure}[h]
% \includegraphics[width=0.4\textwidth]{diagram/TLBAccess.drawio.png}
% \caption{FAT Address Translations using huge pages}
% \label{fig:HugePages}
% \end{figure}
% To build up based on Section ~\ref{sec:RangeMemory} and ~\ref{sec:128bitCompressedBounds}.
FAT is able to pre-allocate memory using huge pages and is able to mark smaller allocations
using ranges by storing them as bounds within the pointer. Each of these memory ranges can be
@@ -738,7 +754,7 @@ efficient memory management but also demonstrate a practical use case of huge pa
\end{algorithmic}
\end{algorithm}
Algorithm \ref{alg:initAlloc} describes the initialisation of physically contiguous memory through the use of huge pages
Algorithm \ref{alg:initAlloc} describes the initialisation of physically contiguous memory through the use of huge pages
which is a mechanism supported by modern architectures to optimise memory management. The algorithm begins by
allocating a fixed block of 1 GB physically contiguous memory. This decision is driven by the
architectural constraints of contemporary systems, particularly ARM-based CPUs. Where 1 GB represents
@@ -746,6 +762,84 @@ the largest supported page size. By leveraging huge pages, the algorithm reduces
with page table management and enhances memory access which is critical for performance-sensitive
applications and kernel-level operations.
\section{Embedding FAT allocator inside Jemalloc}
This section describes about the FAT allocator implementation (Section \ref{sec:MemoryAllocator}) embedded inside Jemalloc. The objective here is to describe the changes needed
for a block based allocator to use physically contigous memory with a block based strategy with the help of capability based addresses.
In the case of Jemalloc the only changes required was to replace the mmap with the \textit{malloc} function (Algorithm \ref{alg:malloc}) and
for munmap the \textit{free} function (Algorithm \ref{alg:free}).
\begin{algorithm}
\caption{Modified Jemalloc Memory Mapping Routines}
\label{alg:JemallocMalloc}
\begin{algorithmic}[1]
\Statex \textbf{Function:} \textsc{os\_pages\_map(addr, size, alignment, commit)}
\Require addr aligned to \texttt{os\_page}, size aligned to \texttt{os\_page}, size $\neq 0$
\Ensure If \texttt{addr} is non-NULL (CheriABI), return NULL
\If{$\text{addr} \neq \text{NULL}$}
\State \Return NULL
\EndIf
\If{os\_overcommits}
\State commit $\gets$ true
\EndIf
\State ret $\gets$ \textbf{MALLOC}(size)
\State \textbf{assert}(ret $\neq$ NULL)
\If{addr $\neq$ NULL \textbf{and} ret $\neq$ addr}
\State \texttt{os\_pages\_unmap}(ret, size)
\State ret $\gets$ NULL
\EndIf
\State \Return ret
\vspace{1em}
\Statex \textbf{Function:} \textsc{pages\_map(addr, size, alignment, commit)}
\Require alignment $\geq$ \texttt{PAGE}, addr aligned to alignment
\State ret $\gets$ \textbf{MALLOC}(size)
\State \Return ret
\vspace{1em}
\Statex \textbf{Function:} \textsc{pages\_commit\_impl(addr, size, commit)}
\Require addr aligned to \texttt{PAGE}, size aligned to \texttt{PAGE}
\State result $\gets$ \textbf{MALLOC}(size)
\If{result $\neq$ addr}
\State \texttt{os\_pages\_unmap}(result, size)
\State \Return true
\EndIf
\State \Return false
\end{algorithmic}
\end{algorithm}
The only function required to be replaced with Malloc was os\_pages\_map,
pages\_map and pages\_commit\_impl as show in
algorithm \ref{alg:JemallocMalloc}.
\begin{algorithm}
\label{alg:JemallocFree}
\caption{os\_pages\_unmap}
\begin{algorithmic}[1]
\Require addr aligned to \texttt{os\_page}, size aligned to \texttt{os\_page}
\Ensure Memory region at \texttt{addr} is unmapped
\State \textbf{assert}(\texttt{ALIGNMENT\_ADDR2BASE}(addr, os\_page) $=$ \texttt{addr})
\State \textbf{assert}(\texttt{ALIGNMENT\_CEILING}(size, os\_page) $=$ size)
\State \textbf{FREE}(addr)
\end{algorithmic}
\end{algorithm}
The only function required to be replaced with Free was
os\_pages\_unmap as show in
algorithm \ref{alg:JemallocFree}.
\section{Evaluation}
\label{sec:Evaluation}
Benchmarks of the FAT memory allocator against Jemalloc~\cite{jemalloc} was conducted.
@@ -909,32 +1003,164 @@ This extension is described by Holt and Singh ~\cite{holt1995}.
\subsection{Results}
\label{sec:Results}
\begin{figure*}[h]
\includegraphics[width=.9\linewidth]{diagram/bargraph.png}
\caption{\label{fig:bargraph}Percentage difference between the modified memory allocator against the default system memory allocator}
% \begin{figure}[b]
% \centering
% \begin{subfigure}{.5\textwidth}
% \centering
% \includegraphics[width=0.45\textwidth]{diagram/benchmarks-group/bargraph-large-dtlb-walk.png}
% \end{subfigure}%
% \begin{subfigure}{.5\textwidth}
% \centering
% \includegraphics[width=0.45\textwidth]{diagram/benchmarks-group/bargraph-large-dtlb-walk.png}
% \end{subfigure}
% \begin{subfigure}{.5\textwidth}
% \centering
% \includegraphics[width=0.45\textwidth]{diagram/benchmarks-group/bargraph-large-dtlb-walk.png}
% \end{subfigure}%
% \begin{subfigure}{.5\textwidth}
% \centering
% \includegraphics[width=0.45\textwidth]{diagram/benchmarks-group/bargraph-large-dtlb-walk.png}
% \end{subfigure}
% \begin{subfigure}{\textwidth}
% \raggedleft
% \includegraphics[width=0.45\textwidth]{IMAGE NAME}
% \end{subfigure}
% \caption[short]{A beautiful, well written caption}
% \end{figure}
% \begin{figure*}
% \begin{multicols}{2}
% \includegraphics[width=\linewidth]{diagram/benchmarks-group/bargraph-large-dtlb-walk.png}\par
% \includegraphics[width=\linewidth]{diagram/benchmarks-group/bargraph-large-l1tlb-reads.png}\par
% \end{multicols}
% \begin{multicols}{2}
% \includegraphics[width=\linewidth]{diagram/benchmarks-group/bargraph-large-l1tlb-refill.png}\par
% \includegraphics[width=\linewidth]{diagram/benchmarks-group/bargraph-large-l2tlb-reads.png}\par
% \end{multicols}
% \begin{multicols}{2}
% \includegraphics[width=\linewidth]{diagram/benchmarks-group/bargraph-large-ll-cache-rd.png}\par
% \includegraphics[width=\linewidth]{diagram/benchmarks-group/bargraph-large-wallclock.png}\par
% \end{multicols}
% \caption{Benchmarks comparing the percentage difference between FAT }
% \end{figure*}
\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}
\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}
\caption{L2 TLB Reads}
\label{fig:l2tlb-reads}
\end{subfigure}\par
\end{multicols}
\begin{multicols}{2}
\begin{subfigure}{\linewidth}
\includegraphics[width=\linewidth]{diagram/benchmarks-group/bargraph-large-ll-cache-rd.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}
\caption{Wall Clock Time}
\label{fig:wallclock}
\end{subfigure}\par
\end{multicols}
\caption{Benchmarks comparing the percentage difference between FAT.}
\label{fig:benchmarks-group}
\end{figure*}
Figure \ref{fig:bargraph} highlights the performance comparison between the modified memory allocator and
% \begin{figure*}[h]
% \includegraphics[width=.9\linewidth]{diagram/benchmarks-group/bargraph-large-dtlb-walk.png}
% \caption{\label{fig:bargraph}Percentage difference between the modified memory allocator against the default system memory allocator}
% \end{figure*}
% \begin{figure*}[h]
% \includegraphics[width=.9\linewidth]{diagram/benchmarks-group/bargraph-large-dtlb-walk.png}
% \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
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
of its capability to handle memory more efficiently by leveraging huge pages.
\begin{itemize}
\item L1 DTLB reads: There was a noticeable reduction of L1 DTLB reads for kmeans of about an average of
4\% less than Jemalloc and for Glibc there was significant reduction of 50\% less than Jemalloc.
\item L1 DTLB reads: L1 Data TLB reads are critical for achieving fast memory access, and a reduction
in events that could signify misses or lead to further lookups is generally beneficial. FAT allocator consistently performed
at the baseline level (100\%) across all benchmarks including Kmeans, Memaccess, Glibc, Richards, and Barnes.
In contrast, FAT allocator embedded inside Jemalloc exhibited varied performance. It achieved a notable 14\%
reduction in L1D TLB reads for Kmeans and a minor 3\% reduction for Barnes. More significantly, it
led to a substantial 68\% reduction for Memaccess, a benchmark characterized by linked list traversals
that can challenge memory access efficiency, and a 59\% reduction for Glibc, which involves numerous memory
allocation and deallocation operations. For the Richards benchmark, however, no significant change was observed with
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 L2 DTLB reads: For all the benchmarks on figure \ref{fig:bargraph} there was on average 98\%
reduction in L2 DTLB reads. This demonstrates that all the TLB translations are read at the L1 TLB
cache.
\item L2 DTLB reads: L2 Data TLB reads (or lookups) serve as a secondary cache for address translations, and, similar to L1 TLB, lower values are
indicative of better performance. FAT allocator consistently performed at the baseline (100\%) for this metric across all benchmarks.
FAT allocator embedded inside Jemalloc also showed no significant change for Kmeans, Memaccess, and Richards. However, for the Glibc benchmark,
it achieved a significant reduction of 60\% in L2D TLB reads. This mirrors its L1D TLB improvement for Glibc and suggests that its
strategy for page locality extends effectively to deeper levels of the TLB hierarchy for this particular benchmark, which is notable given
Glibc's high frequency of malloc calls that stress memory management. A minor reduction of 3\% was also observed for the Barnes
benchmark with FAT allocator embedded inside Jemalloc.
\item DTLB walks: Due to most of the TLB entries getting hit at the L1 DTLB, there is no need
to walk the TLB cache hierarchy. This is shown by an average of 99\% reduction in DTLB walks.
\item DTLB walks: Data Translation Lookaside Buffer (dTLB) walks, 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 any significant deviation from the baseline performance (100\%) for this metric.
This consistent behavior was noted across all benchmarks evaluated: Kmeans, Memaccess, Glibc, Richards, and Barnes.
This outcome suggests that the memory allocation strategies employed by these allocators do not substantially alter the frequency
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 DTLB refills: Since there are fewer 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 in DTLB refills.
\item L1 DTLB refills: L1 Data TLB refills are a direct consequence of L1D TLB misses, with fewer refills indicating better performance.
Interestingly, despite the variations observed in L1D TLB reads for FAT allocator embedded inside Jemalloc, the L1D TLB refills metric
remained at the baseline (100\%) for both FAT allocator and FAT allocator embedded inside Jemalloc. This consistent performance at baseline
was observed across all tested benchmarks: Kmeans, Memaccess, Glibc, Richards, and Barnes. This outcome presents a point of potential inconsistency;
if L1D TLB reads (interpreted as events related to misses or lookups that could lead to misses) are reduced, a corresponding decrease in actual
refills would typically be expected. The absence of change in refills might suggest that the "reads" metric captures a wider range of TLB interaction
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: Last-Level Cache (LLC) read misses are crucial performance indicators, as they often result in slow data fetches
from main memory; therefore, fewer misses are highly desirable. The performance on this metric varied significantly between the
allocators and across benchmarks. FAT allocator was near baseline for Kmeans but caused an 18\% increase in misses for Memaccess (designed to stress cache ),
a 30\% increase for Richards (many dynamic allocations and pointer manipulations ), and an 18\% increase for Barnes (uses pointer-based octrees ). However,
FAT allocator achieved a significant 60\% reduction in misses for the Glibc benchmark, which involves active memory use post-allocation.
FAT allocator embedded inside Jemalloc showed a 75\% reduction in misses for Memaccess, a substantial improvement. Conversely, it led to an 18\% increase in
misses for Kmeans, a massive 375\% increase for Glibc, and a 65\% increase for Barnes. For the Richards benchmark, its performance was at the baseline.
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 provides the ultimate measure of overall execution performance, where lower values (deviations below 100\%) indicate improvement.
FAT allocator resulted in a 1\% speedup for Kmeans and a more significant 5\% speedup for Barnes. This improvement for Barnes was observed despite an increase
in its LL cache misses, suggesting other factors such as reduced allocator overhead or better CPU pipeline utilization might have contributed.
For Memaccess and Glibc, FAT allocator performed at the baseline. Notably, the substantial LL cache miss reduction seen with FAT allocator on Glibc did not
translate into an overall speedup. It was about 1\% slower on Richards.
FAT allocator embedded inside Jemalloc was 4\% faster for Memaccess, aligning well with its significant LL cache miss reduction and L1D TLB improvements
for that benchmark. It performed at baseline for Kmeans and was negligibly faster (0.5\%) for Richards. However, it was 15\% slower for Glibc, a slowdown
consistent with the massive increase in LL cache misses observed. For Barnes, it resulted in an 8\% slowdown, which also correlates with its increased
LL cache misses for that benchmark. These wallclock results underscore that improvements in a single specific memory subsystem metric do not always guarantee
an overall application speedup, as the interplay of various factors determines the final performance.
\end{itemize}
A particularly striking observation is the significant reduction in data TLB walks,
@@ -958,31 +1184,31 @@ beyond memory allocation. Additionally,
the benefits of huge pages may be less pronounced for these workloads, as they are often
bottlenecked by factors such as computation or I/O rather than memory translation overhead.
\begin{figure}[htbp]
\centering
\includegraphics[width=1.1\linewidth]{./diagram/kmeans.png}
\caption{\label{fig:org8683315}Kmeans COZ benchmark executed against various cluster sizes}
\end{figure}
% \begin{figure}[htbp]
% \centering
% \includegraphics[width=1.1\linewidth]{./diagram/kmeans.png}
% \caption{\label{fig:org8683315}Kmeans COZ benchmark executed against various cluster sizes}
% \end{figure}
The K-means algorithm was executed with varying cluster sizes as shown in figure~\ref{fig:org8683315}, to evaluate the performance difference
between the FAT allocator and Jemalloc as the workload scales. This analysis
aims to understand how the allocators optimisations, particularly its ability to manage memory
more efficiently with huge pages, impact performance under different workload conditions.
% The K-means algorithm was executed with varying cluster sizes as shown in figure~\ref{fig:org8683315}, to evaluate the performance difference
% between the FAT allocator and Jemalloc as the workload scales. This analysis
% aims to understand how the allocators optimisations, particularly its ability to manage memory
% more efficiently with huge pages, impact performance under different workload conditions.
For most cluster sizes tested, the percentage difference in performance remained relatively
consistent. This indicates that the allocators efficiency scales predictably with increasing
workload sizes. Suggesting a stable and uniform benefit across different configurations. The
consistent performance gain is likely due to the allocators ability to minimise TLB misses
and efficiently manage memory allocations for the centroid and data point structures used in
the K-means algorithm.
% For most cluster sizes tested, the percentage difference in performance remained relatively
% consistent. This indicates that the allocators efficiency scales predictably with increasing
% workload sizes. Suggesting a stable and uniform benefit across different configurations. The
% consistent performance gain is likely due to the allocators ability to minimise TLB misses
% and efficiently manage memory allocations for the centroid and data point structures used in
% the K-means algorithm.
However, an anomaly was observed at a cluster size of 200k, where the percentage difference
deviated significantly from the trend. At this cluster size, the memory access patterns and allocation behavior may align in a way that
temporarily offsets the advantages of the FAT allocator. For example, the memory layout
might interact with system-level caching mechanisms or TLB behavior differently leading to an
unexpected change in performance. Additionally, the increased complexity of managing a higher
number of clusters might introduce computational overhead that overshadows the memory allocators
optimisations.
% However, an anomaly was observed at a cluster size of 200k, where the percentage difference
% deviated significantly from the trend. At this cluster size, the memory access patterns and allocation behavior may align in a way that
% temporarily offsets the advantages of the FAT allocator. For example, the memory layout
% might interact with system-level caching mechanisms or TLB behavior differently leading to an
% unexpected change in performance. Additionally, the increased complexity of managing a higher
% number of clusters might introduce computational overhead that overshadows the memory allocators
% optimisations.
% This observation highlights the importance of testing across a range of workload sizes and
% configurations to uncover edge cases or specific scenarios where performance deviates from the

View File

@@ -1,3 +1,23 @@
@article{TLBHierarchy,
author = {Lustig, Daniel and Bhattacharjee, Abhishek and Martonosi, Margaret},
title = {TLB Improvements for Chip Multiprocessors: Inter-Core Cooperative Prefetchers and Shared Last-Level TLBs},
year = {2013},
issue_date = {April 2013},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
volume = {10},
number = {1},
issn = {1544-3566},
url = {https://doi.org/10.1145/2445572.2445574},
doi = {10.1145/2445572.2445574},
abstract = {Translation Lookaside Buffers (TLBs) are critical to overall system performance. Much past research has addressed uniprocessor TLBs, lowering access times and miss rates. However, as Chip MultiProcessors (CMPs) become ubiquitous, TLB design and performance must be reevaluated. Our article begins by performing a thorough TLB performance evaluation of sequential and parallel benchmarks running on a real-world, modern CMP system using hardware performance counters. This analysis demonstrates the need for further improvement of TLB hit rates for both classes of application, and it also points out that the data TLB has a significantly higher miss rate than the instruction TLB in both cases.In response to the characterization data, we propose and evaluate both Inter-Core Cooperative (ICC) TLB prefetchers and Shared Last-Level (SLL) TLBs as alternatives to the commercial norm of private, per-core L2 TLBs. ICC prefetchers eliminate 19\% to 90\% of Data TLB (D-TLB) misses across parallel workloads while requiring only modest changes in hardware. SLL TLBs eliminate 7\% to 79\% of D-TLB misses for parallel workloads and 35\% to 95\% of D-TLB misses for multiprogrammed sequential workloads. This corresponds to 27\% and 21\% increases in hit rates as compared to private, per-core L2 TLBs, respectively, and is achieved this using even more modest hardware requirements.Because of their benefits for parallel applications, their applicability to sequential workloads, and their readily implementable hardware, SLL TLBs and ICC TLB prefetchers hold great promise for CMPs.},
journal = {ACM Trans. Archit. Code Optim.},
month = apr,
articleno = {2},
numpages = {38},
keywords = {TLB prefetching, Translation lookaside buffer, performance evaluation, shared last-level TLB, simulation}
}
@article{Shadow_superpages,
title = {Aggressive superpage support with the shadow memory and the partial-subblock TLB},
journal = {Microprocessors and Microsystems},

Binary file not shown.

View File

@@ -0,0 +1,103 @@
%% Creator: Inkscape 1.3 (0e150ed, 2023-07-21), www.inkscape.org
%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010
%% Accompanies image file 'drawing_svg-tex.pdf' (pdf, eps, ps)
%%
%% To include the image in your LaTeX document, write
%% \input{<filename>.pdf_tex}
%% instead of
%% \includegraphics{<filename>.pdf}
%% To scale the image, write
%% \def\svgwidth{<desired width>}
%% \input{<filename>.pdf_tex}
%% instead of
%% \includegraphics[width=<desired width>]{<filename>.pdf}
%%
%% Images with a different path to the parent latex file can
%% be accessed with the `import' package (which may need to be
%% installed) using
%% \usepackage{import}
%% in the preamble, and then including the image with
%% \import{<path to file>}{<filename>.pdf_tex}
%% Alternatively, one can specify
%% \graphicspath{{<path to file>/}}
%%
%% For more information, please see info/svg-inkscape on CTAN:
%% http://tug.ctan.org/tex-archive/info/svg-inkscape
%%
\begingroup%
\makeatletter%
\providecommand\color[2][]{%
\errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}%
\renewcommand\color[2][]{}%
}%
\providecommand\transparent[1]{%
\errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}%
\renewcommand\transparent[1]{}%
}%
\providecommand\rotatebox[2]{#2}%
\newcommand*\fsize{\dimexpr\f@size pt\relax}%
\newcommand*\lineheight[1]{\fontsize{\fsize}{#1\fsize}\selectfont}%
\ifx\svgwidth\undefined%
\setlength{\unitlength}{595.27559055bp}%
\ifx\svgscale\undefined%
\relax%
\else%
\setlength{\unitlength}{\unitlength * \real{\svgscale}}%
\fi%
\else%
\setlength{\unitlength}{\svgwidth}%
\fi%
\global\let\svgwidth\undefined%
\global\let\svgscale\undefined%
\makeatother%
\begin{picture}(1,1.41428571)%
\lineheight{1}%
\setlength\tabcolsep{0pt}%
\put(0,0){\includegraphics[width=\unitlength,page=1]{drawing_svg-tex.pdf}}%
\put(0.15789822,0.92036082){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}0x00\end{tabular}}}}%
\put(0.37386671,0.92253403){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}B1\end{tabular}}}}%
\put(0.50353176,0.92253403){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}B2\end{tabular}}}}%
\put(0.44040222,0.92253403){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}L1\end{tabular}}}}%
\put(0.61435089,0.92253403){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}L2\end{tabular}}}}%
\put(0.29055594,0.92253403){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}V1\end{tabular}}}}%
\put(0.66655026,0.92263452){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}V100\end{tabular}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=2]{drawing_svg-tex.pdf}}%
\put(0.40749174,0.93578629){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}10\end{tabular}}}}%
\put(0.56205117,0.93578629){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}20\end{tabular}}}}%
\put(0.22755263,0.93517601){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}os\end{tabular}}}}%
\put(0.30978512,0.76763965){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}(V1,V100)\end{tabular}}}}%
\put(0.3264479,0.69374911){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}Range\end{tabular}}}}%
\put(0.20039115,0.69367397){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}Offset\end{tabular}}}}%
\put(0.2274294,0.76524569){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}os\end{tabular}}}}%
\put(0.22962278,0.7364222){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}...\end{tabular}}}}%
\put(0.35751119,0.7364222){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}...\end{tabular}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=3]{drawing_svg-tex.pdf}}%
\put(0.52683919,0.82449268){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}\textbf{malloc}(..){\\ if (!set){\\ shm_largepage(1GB);\\ }\\ ...\\} \end{tabular}}}}%
\put(0.25489157,0.65342298){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}L1 TLB\end{tabular}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=4]{drawing_svg-tex.pdf}}%
\put(0.32993557,1.25595083){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}p\end{tabular}}}}%
\put(0.36330546,1.2544215){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}IE\end{tabular}}}}%
\put(0.3995023,1.25427548){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}s\end{tabular}}}}%
\put(0.46365018,1.2544215){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}L1\end{tabular}}}}%
\put(0.4283773,1.2544215){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}B1\end{tabular}}}}%
\put(0.36500369,1.2764865){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}Address\end{tabular}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=5]{drawing_svg-tex.pdf}}%
\put(0.32168997,1.23225528){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}security data\end{tabular}}}}%
\put(0.4952568,1.25986266){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}Compressed\\Bounds\end{tabular}}}}%
\put(0.21413231,1.14693542){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}p\end{tabular}}}}%
\put(0.24752412,1.14540509){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}IE\end{tabular}}}}%
\put(0.28374472,1.14525897){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}s\end{tabular}}}}%
\put(0.34793472,1.14540509){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}L2\end{tabular}}}}%
\put(0.31263868,1.14540509){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}B2\end{tabular}}}}%
\put(0.24922346,1.16748457){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}Address\end{tabular}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=6]{drawing_svg-tex.pdf}}%
\put(0.20495392,1.12507906){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}security data\end{tabular}}}}%
\put(0.18030792,1.3571531){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}main() {\end{tabular}}}}%
\put(0.18320669,1.0714103){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}}\end{tabular}}}}%
\put(0.20085456,1.31122079){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}\textbf{CapPtr} = malloc(10)\end{tabular}}}}%
\put(0.20671349,1.19496148){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}malloc(20)\end{tabular}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=7]{drawing_svg-tex.pdf}}%
\put(0.46258094,1.31210798){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}Free(\textbf{CapPtr})\end{tabular}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=8]{drawing_svg-tex.pdf}}%
\end{picture}%
\endgroup%

View File

@@ -0,0 +1,6 @@
* Discussion
- Upcoming conferences to submit the current paper in.
- Timeline to send to Jeremy for a review and present a talk in Glasgow.
- Discussion paper writing pipline plan (FAT allocator paper).
- 2nd Expirement paper submission plan (To Submit by July in my Calendar).

View File

@@ -2,5 +2,5 @@ files=`find . -newermt "-3600 secs" | sed 's|^./||'`
for file in $files
do
scp -P 45161 "$file" "akilan@217.76.63.222:/home/akilan/Alloc-Test/CHERI-Allocator/$file"
scp -P 37327 "$file" "akilan@217.76.63.222:/home/akilan/Alloc-Test/CHERI-Allocator/$file"
done