Code Positioning in LLVM
(2017) In LU-CS-EX 2017-21 EDA920 20171Department of Computer Science
- Abstract
- Given the increasing performance disparity between processor speeds and memory latency, making efficient use of cache memory is more important than ever to achieve good performance in memory-bound workloads. Many modern first-level caches store instructions separately from data, making code layout and code size an important factor in the cache behavior of a program.
This work investigates two methods that attempt to improve code locality, namely procedure splitting and procedure positioning, previously investigated by Pettis and Hansen. They are implemented in the open-source compiler framework LLVM to evaluate their effect on the SPEC CPU2000 benchmark suite and a benchmark run of the PostgreSQL database system. We found that our... (More) - Given the increasing performance disparity between processor speeds and memory latency, making efficient use of cache memory is more important than ever to achieve good performance in memory-bound workloads. Many modern first-level caches store instructions separately from data, making code layout and code size an important factor in the cache behavior of a program.
This work investigates two methods that attempt to improve code locality, namely procedure splitting and procedure positioning, previously investigated by Pettis and Hansen. They are implemented in the open-source compiler framework LLVM to evaluate their effect on the SPEC CPU2000 benchmark suite and a benchmark run of the PostgreSQL database system. We found that our implementation is highly situational, but can be beneficial, reducing execution time by up to 3% on suitable SPEC benchmarks and an increase of 3% in average transactions per second on PostgreSQL. (Less)
Please use this url to cite or link to this publication:
http://lup.lub.lu.se/student-papers/record/8929247
- author
- Lehtonen, Henrik LU and Sonesson, Klas LU
- supervisor
- organization
- course
- EDA920 20171
- year
- 2017
- type
- H3 - Professional qualifications (4 Years - )
- subject
- keywords
- Compiler optimization, Instruction caches, TLBs, LLVM, Code locality
- publication/series
- LU-CS-EX 2017-21
- report number
- LU-CS-EX 2017-21
- ISSN
- 1650-2884
- language
- English
- id
- 8929247
- date added to LUP
- 2018-01-17 18:26:17
- date last changed
- 2018-01-17 18:26:17
@misc{8929247, abstract = {{Given the increasing performance disparity between processor speeds and memory latency, making efficient use of cache memory is more important than ever to achieve good performance in memory-bound workloads. Many modern first-level caches store instructions separately from data, making code layout and code size an important factor in the cache behavior of a program. This work investigates two methods that attempt to improve code locality, namely procedure splitting and procedure positioning, previously investigated by Pettis and Hansen. They are implemented in the open-source compiler framework LLVM to evaluate their effect on the SPEC CPU2000 benchmark suite and a benchmark run of the PostgreSQL database system. We found that our implementation is highly situational, but can be beneficial, reducing execution time by up to 3% on suitable SPEC benchmarks and an increase of 3% in average transactions per second on PostgreSQL.}}, author = {{Lehtonen, Henrik and Sonesson, Klas}}, issn = {{1650-2884}}, language = {{eng}}, note = {{Student Paper}}, series = {{LU-CS-EX 2017-21}}, title = {{Code Positioning in LLVM}}, year = {{2017}}, }