Portable, modular expression of locality
David Stoutamire, Jerome A. Feldman · 1997
It is difficult to achieve high performance while programming in the large. In particular, maintaining locality hinders portability and modularity. Existing methodologies are not sufficient: explicit communication and coding for locality require the programmer to vio-late encapsulation and compositionality of software modules, while automated compiler analysis remains unreliable. This thesis presents a performance model that makes thread and object locality explicit. Zones form a runtime hierarchy that reflects the intended clustering of threads and objects, which are dynamically mapped onto hardware units such as processor clusters, pages, or cache lines. This conceptual indirection allows programmers to reason in the abstract about locality without committing to the hardware of a specific memory system. Zones comple-ment conventional coding for locality and may be added to existing code to improve per-formance without affecting correctness. The integration of zones into the Sather language is described, including an implementa-tion of memory management customized to parameters of the memory system.