Abstract | ||
---|---|---|
String operations such as memcpy, memset and memcmp account for a nontrivial amount of Google datacenter resources. String operations hurt processor cache efficiency when the data accessed is not reused shortly thereafter. Such cache pollution can be avoided by using nontemporal memory access to bypass L2/L3 caches. As reuse distance varies greatly across different memcpy static call contexts in the same program, an efficient solution needs to be call context sensitive. We propose a novel solution to this problem using the page protection mechanism to measure reuse distance and the GCC feedback directed optimization mechanism to generate nontemporal memory access instructions at the appropriate static code contexts. First, the compiler inserts instrumentation for calls to string operations. Then a run time library measures reuse distance using the page protection mechanism during a representative profiling run. The compiler finally generates calls to specialized string operations that use nontemporal operations for the arguments with large reuse distance. We present a full implementation and initial results including speedup on large datacenter applications.
|
Year | DOI | Venue |
---|---|---|
2011 | 10.1109/CGO.2011.5764686 | Code Generation and Optimization |
Keywords | Field | DocType |
Web sites,cache storage,computer centres,program compilers,security of data,GCC feedback directed optimization mechanism,Google datacenter resources,L2/L3 caches,automated locality optimization,memory access instructions,page protection mechanism,reuse distance,run time library,string operations hurt processor cache,memcpy,nontemporal,reuse distance | Cache pollution,Profiling (computer programming),CPU cache,Reuse,Computer science,Parallel computing,Real-time computing,Compiler,Operating system,Benchmark (computing),Speedup,String operations | Conference |
ISSN | ISBN | Citations |
2164-2397 | 978-1-61284-358-2 | 13 |
PageRank | References | Authors |
0.68 | 13 | 3 |
Name | Order | Citations | PageRank |
---|---|---|---|
Silvius Rus | 1 | 13 | 0.68 |
Raksit Ashok | 2 | 30 | 2.68 |
David Xinliang Li | 3 | 13 | 0.68 |