MPADS: memory-pooling-assisted data splitting

  • Authors:
  • Stephen Curial;Peng Zhao;Jose Nelson Amaral;Yaoqing Gao;Shimin Cui;Raul Silvera;Roch Archambault

  • Affiliations:
  • Xymbiant Systems Inc., Edmonton, AB, Canada;Intel Corporation, Santa Clara, CA, USA;University of Alberta, Edmonton, AB, Canada;IBM Toronto Software Laboratory, Toronto, ON, Canada;IBM Toronto Software Laboratory, Toronto, ON, Canada;IBM Toronto Software Laboratory, Toronto, ON, Canada;IBM Toronto Software Laboratory, Toronto, ON, Canada

  • Venue:
  • Proceedings of the 7th international symposium on Memory management
  • Year:
  • 2008

Quantified Score

Hi-index 0.00

Visualization

Abstract

This paper describes Memory-Pooling-Assisted Data Splitting (MPADS), a framework that combines data structure splitting with memory pooling --- Although it MPADS may call to mind memory padding, a distintion of this framework is that is does not insert padding. MPADS relies on pointer analysis to ensure that splitting is safe and applicable to type-unsafe language. MPADS makes no assumption about type safety. The analysis can identify cases in which the transformation could lead to incorrect code and thus MPADS abandons those cases. To make data structure splitting efficient in a commercial compiler, MPADS is designed with great attention to reduce the number of instructions required to access the data after the data-structure splitting. Moreover the implementation of MPADS reveals that architecture details should be considered carefully when re-arranging data allocation. For instance one of the most significant gains from the introduction of data-structure splitting in code targetting the IBM POWER architecture is a dramatic decrease in the amount of data prefetched by the hardware prefetch engine without a noticeable decrease in the cache utilization. Triggering fewer hardware prefetch streams frees memory bandwidth and cache space. Fewer prefetching streams also reduce the interference between the data accessed by multiple cores in modern multicore processors.