Advanced

Code Positioning in LLVM

Lehtonen, Henrik LU and Sonesson, Klas LU (2017) In LU-CS-EX 2017-21 EDA920 20171
Department 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:
author
Lehtonen, Henrik LU and Sonesson, Klas LU
supervisor
organization
course
EDA920 20171
year
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},
  keyword      = {Compiler optimization,Instruction caches,TLBs,LLVM,Code locality},
  language     = {eng},
  note         = {Student Paper},
  series       = {LU-CS-EX 2017-21},
  title        = {Code Positioning in LLVM},
  year         = {2017},
}