struct-reorg
struct-reorg is a data layout optimization that aims better cache locality by splitting structures into smaller sub-structures, or separate fields. Thus if a loop uses only subset of fields, then only their values will be brought into a cache line, preventing overloading it with values of fields unexploited in this loop. The effect is multiplied when dealing with arrays of structures. Theoretical part was laid by Mustafa Hagog master's thesises. He and Caroline Tice started this work in gcc in 2004. It was presented on GCC Developers' Summit 2005 in their paper "Cache aware data layout reorganization optimizations". The work followed evolution of ipa IR, from gimple to currently available SSA form through Structure_Reorganization_Optimization_Development_Plan. Located on struct-reorg-branch.
Personnel
- Olga Golovanevsky
Delivery Date
- ready on struct-reorg-branch; simplification of analysis part is possible.
Benefits
- 47% improvement on art, with matrix flattening/transpose opt - x5, potential on mcf (spec2006)
Dependencies
Modifications Required
- addition of new ipa pass