Eliminating False Sharing

By Tor Jeremiassen and Susan J. Eggers

ABSTRACT

The performance and scalability of bus-based, shared memory multiprocessors is limited by the amount of bus traffic. Previous studies have shown that for machines with large caches and a write-invalidate coherency protocol, most of the bus traffic stems from coherency overhead. Some of this overhead is unavoidable, a direct consequence of the true sharing activity in the program. However, for caches with multi-word cache blocks, coherency overhead can also be caused by multiple processors accessing different words in the same block, known as false sharing.

This paper measures the amount of false sharing in several coarse-grained parallel applications. We present two simple transformations for restructuring shared data, and apply them to the shared objects responsible for most of the false sharing. Simulations of traces from the modified programs indicate that the transformations reduce the miss rates significantly. Shared misses were reduced by an order of magnitude more than in a previous study which applied a different type of transformation.

@inproceedings{FalseSharing,
    author="S.J. Eggers and T.E. Jeremiassen",
    title="Eliminating False Sharing",
    booktitle={International Conference on Parallel Processing},
    month="August",
    year="1991",
    volume="I",
    pages="377--381",
}

pardo@cs.washington.edu