BIN
docs/EuroSys/.DS_Store
vendored
BIN
docs/EuroSys/.DS_Store
vendored
Binary file not shown.
@@ -970,9 +970,9 @@ Benchmarks of the FAT memory allocator and the FAT allocator embedded within Jem
|
||||
Jemalloc is the default memory allocator for CHERIBSD~\cite{cheribsd}. The objective was to evaluate
|
||||
the reduction of TLB walks and misses and its impact on the wall clock runtime.
|
||||
|
||||
To comprehensively analyse the proposed allocator, the benchmarks~\cite{Benchmark} were categorised into
|
||||
To comprehensively analyse the implemented allocator, the benchmarks~\cite{Benchmark} were categorised into
|
||||
two classes which are micro and macro benchmarks. Micro benchmarks comprise smaller
|
||||
C programs designed to target specific allocator patterns which enables us to evaluate
|
||||
C programs designed to target specific allocator patterns such as the memory read operations which enables us to evaluate
|
||||
detailed aspects of the allocators behavior. Macro benchmarks, on the other hand,
|
||||
encompass larger real-world C programs allowing us to assess the allocators
|
||||
performance in a more practical and real-world scenarios.
|
||||
@@ -1004,23 +1004,23 @@ performance in a more practical and real-world scenarios.
|
||||
\subsection{Experiment setup}
|
||||
\label{sec:Experiment}
|
||||
The CHERI Morello~\cite{Morello} board was used to evaluate the proposed memory allocator.
|
||||
Morello implements the ARM A76 with enhanced server-class memory, featuring a
|
||||
Morello implements the ARMv8 with enhanced server-class memory, featuring a
|
||||
quad-core ARM CPU with capability extensions. The L1 and L2 caches were modified
|
||||
to proliferate the capability bit which ensures compatibility with CHERI's capability-based
|
||||
memory model. When compiling the C programs for benchmarking, the Benchmark ABI was
|
||||
memory model. When compiling the C programs for benchmarking, the Benchmark ABI~\cite{BenchmarkABI} was
|
||||
used as recommended by the CHERI community. This compilation mode was enabled using
|
||||
the Clang compiler.
|
||||
|
||||
The Benchmark ABI~\cite{BenchmarkABI} was specifically designed because the Morello branch predictor
|
||||
The Benchmark ABI was specifically designed because the Morello branch predictor
|
||||
was not expanded to predict bounds. Consequently, a capability-based jump introduces
|
||||
stalls in later PCC-dependent instructions until bounds are established. This issue
|
||||
stalls in later PCC-dependent(Program Counter Capability) instructions until bounds are established. This issue
|
||||
is particularly significant during dynamically linked calls and returns between
|
||||
libraries where bounds are changed to cover the called or returned-to library.
|
||||
Such stalls can negatively affect performance, making the Benchmark ABI an essential
|
||||
consideration for this evaluation.
|
||||
|
||||
Each C program was executed using two different memory allocators. The first was
|
||||
the modified C allocator which is imported as a header file. This approach was necessary
|
||||
the FAT allocator(Section ~\ref{sec:MemoryAllocator}) which is imported as a header file. This approach was necessary
|
||||
because the Benchmark ABI shared object file exhibited unexpected behavior by
|
||||
failing to overwrite the C program at runtime with the intended \textit{malloc} functions.
|
||||
The second allocator was the standard OS memory allocator, which in the case of
|
||||
|
||||
Reference in New Issue
Block a user