Abstract
Efficiently maintaining cache coherence is a major problem in large-scale shared memory multiprocessors. Hardware directory coherence schemes have very high memory requirements, while software-directed schemes must rely on imprecise compile-time memory disambiguation. Recently proposed dynamically tagged directory schemes allocate pointers to blocks only as they are referenced, which significantly reduces their memory requirements, but they still allocate pointers to blocks that do not need them. We present two compiler optimizations that exploit the high-level sharing information available to the compiler to further reduce the size of a tagged directory by allocating pointers only when necessary. Trace-driven simulations are used to show that the performance of this combined hardware-software approach is comparable to other coherence schemes, but with significantly lower memory requirements. In addition, these simulations suggest that this approach is less sensitive to the quality of the memory disambiguation and interprocedural analysis performed by the compiler than software-only coherence schemes.
Original language | English (US) |
---|---|
Pages (from-to) | 1130-1146 |
Number of pages | 17 |
Journal | IEEE Transactions on Parallel and Distributed Systems |
Volume | 4 |
Issue number | 10 |
DOIs | |
State | Published - Oct 1993 |
Externally published | Yes |
Bibliographical note
Funding Information:Manuscript received August 22, 1991; revised December 23, 1991. This work was performed while both authors were at the Center for Supercomputing Research and Development, and was supported by the National Science Foundation under Grant NSF MIP-8410110, with additional support from NASA Ames Research Center under Grant NASA NCC 2-559 (DARPA), the National Science Foundation under Grant NSF MIP-88-07 775, and the Department of Energy under Grant DOE DE-FG02-85ER25001. D. Lilja also was supported by a DARPADJASA Assistantship in Parallel Processing. Portions of this work were presented at the ACM International Conference on Supercomputing in Cologne, Germany, in June 1991.
Keywords
- Cache coherence
- compiler optimization
- directory
- dynamic pointer allocation
- memory overheads
- shared memory multiprocessor
- version control