Static Prediction of Silent Stores
Résumé
A Store operation is called “silent” if it writes in memory a value that is already there. e ability to detect silent stores is important, because they might indicate performance bugs, might enable code optimizations, and might reveal opportunities of automatic parallelization, for instance. Silent stores are traditionally detected via proling tools. In this paper, we depart from this methodology, and, instead, explore the following question: is it possible to predict silentness by analyzing the syntax of programs? e process of building an answer to this question is interesting in itself, given the stochastic nature of silent stores, which depend on data and coding style. To build such an answer, we have developed a methodology to classify store operations in terms of syntactic features of programs. Based on such features, we develop dierent kinds of predictors, some of which go much beyond what any trivial approach could achieve. To illustrate how static prediction can be employed in practice, we use it to optimize programs running on non-volatile memory systems.