In this paper, we investigate a class of coherence strategies in which
an abstraction for shared data at the program-level, referred to as S
hared Regions (SR), is used to manage caches dynamically through softw
are. The practical value of these strategies is measured by their perf
ormance relative to existing hardware coherence protocols, and the com
plexity of the SR programming interface. We present detailed quantitat
ive results highlighting the performance of a wide array of SR coheren
ce algorithms, including some novel algorithms introduced in this pape
r that use direct cache-to-cache data transfers via software to improv
e performance. These algorithms are studied using execution-driven sim
ulation and compared to a representative hardware strategy for a suite
of parallel applications. The experimental results show that the best
SR coherence strategy for each application is comparable to or signif
icantly better than the representative hardware strategy for all of th
e applications that we examine. Our study of programming complexity in
SR finds that, for the types of applications that we study, inserting
SR annotations is a relatively simple and methodical task. (C) 1995 A
cademic Press, Inc.