Forma
- 1 November 2007
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 30 (1), 2
- https://doi.org/10.1145/1290520.1290522
Abstract
This article presents Forma , a practical, safe, and automatic data reshaping framework that reorganizes arrays to improve data locality. Forma splits large aggregated data-types into smaller ones to improve data locality. Arrays of these large data types are then replaced by multiple arrays of the smaller types. These new arrays form natural data streams that have smaller memory footprints, better locality, and are more suitable for hardware stream prefetching. Forma consists of a field-sensitive alias analyzer, a data type checker, a portable structure reshaping planner, and an array reshaper. An extensive experimental study compares different data reshaping strategies in two dimensions: (1) how the data structure is split into smaller ones ( maximal partition × frequency-based partition × affinity-based partition ); and (2) how partitioned arrays are linked to preserve program semantics ( address arithmetic-based reshaping × pointer-based reshaping ). This study exposes important characteristics of array reshaping. First, a practical data reshaper needs not only an inter-procedural analysis but also a data-type checker to make sure that array reshaping is safe. Second, the performance improvement due to array reshaping can be dramatic: standard benchmarks can run up to 2.1 times faster after array reshaping. Array reshaping may also result in some performance degradation for certain benchmarks. An extensive micro-architecture-level performance study identifies the causes for this degradation. Third, the seemingly naive maximal partition achieves best or close-to-best performance in the benchmarks studied. This article presents an analysis that explains this surprising result. Finally, address-arithmetic-based reshaping always performs better than its pointer-based counterpart.Keywords
This publication has 33 references indexed in Scilit:
- A performance study of data layout techniques for improving data locality in refinement-based pathfindingACM Journal of Experimental Algorithmics, 2004
- Data remapping for design space optimization of embedded memory systemsACM Transactions on Embedded Computing Systems, 2003
- Crafting Data Structures: A Study of Reference Locality in Refinement-Based PathfindingLecture Notes in Computer Science, 2003
- Which pointer analysis should I use?ACM SIGSOFT Software Engineering Notes, 2000
- Data prefetch mechanismsACM Computing Surveys, 2000
- A Comparison of Compiler Tiling AlgorithmsLecture Notes in Computer Science, 1999
- Dependence based prefetching for linked data structuresACM SIGPLAN Notices, 1998
- A Parametrized Loop Fusion Algorithm for Improving Parallelism and Cache LocalityThe Computer Journal, 1997
- Speeding up problem solving by abstraction: a graph oriented approachArtificial Intelligence, 1996
- Improving data locality with loop transformationsACM Transactions on Programming Languages and Systems, 1996