Author:

Maximilian Kaltenbrunn
Supervisor:Prof. Gudrun Klinker
Advisor:Sven Liedtke
Submission Date:15.08.18

Abstract

This thesis provides an overview of the low-level CPU architecture of modern computer
systems with regard to the memory subsystem. The correct handling of memory can
greatly improve the performance of graphical real-time applications. For this reason, the
functionality of CPU caches is explained in detail. This explanation serves as a basis for
practices that can improve performance. In addition, optimization strategies for memory
allocations are presented in the form of various custom allocators. The importance
of these efforts is continuously supported by implementations and performance tests.
These performance tests show that optimizing a program’s source code towards good
memory management and efficient cache usage can yield performance increases of
multiple orders of magnitude. To ease memory management, modern C++ features are
introduced that can assist in object lifecycle handling. Finally, an outlook on future C++
language features and suggestions for future work is given.

Results

For the results of the thesis I'd like to forward you to chapter 6 (Solutions) starting from
page 33 in the thesis. You can find a PDF version of the Thesis at the end of this page.
The Solutions chapter focuses on showing actual C++ implementations, these implementations
are then tested and the results are provided throughout the chapter.

Conclusion

The thesis provides an overview of the vast topic Memory Management. Instead of
focusing on a small subset the full picture is presented and high level decisions such as
coding best-practices are explained and reasoned by the precise functionality of the
hardware systems that can be found in modern CPU architectures. The theoretical
reasoned performance improvements could be seen in real-world test scenarios.
During the implementation of these test scenarios it became clear that every programmer
should know about the memory subsystem to be able to write highly efficient code.
This knowledge is required since the costly memory accesses can not be hidden in an
abstraction.

Download

Download the written part of the Thesis here:


The code that is part of the thesis can be found in gitlab:

$ git clone git@gitlab.lrz.de:IN-FAR/Thesis-Projects/ba-kaltenbrunn_Maximilian-MemoryManagement.git

or https://gitlab.lrz.de/IN-FAR/Thesis-Projects/ba-kaltenbrunn_Maximilian-MemoryManagement


For build instructions, please refer to the README.md in the repository.