Increasing and Detecting Memory Address Congruence

A static memory reference exhibits a unique property when its dynamic memory addresses are congruent with respect to some non-trivial modulus. Extraction of this congruence information at compile-time enables new classes of program optimization. In this paper, we present methods for forcing congruen...

Full description

Bibliographic Details
Main Authors: Larsen, Samuel, Witchel, Emmett, Amarasinghe, Saman P.
Format: Article
Language:en_US
Published: 2003
Subjects:
Online Access:http://hdl.handle.net/1721.1/3760
_version_ 1811085153415462912
author Larsen, Samuel
Witchel, Emmett
Amarasinghe, Saman P.
author_facet Larsen, Samuel
Witchel, Emmett
Amarasinghe, Saman P.
author_sort Larsen, Samuel
collection MIT
description A static memory reference exhibits a unique property when its dynamic memory addresses are congruent with respect to some non-trivial modulus. Extraction of this congruence information at compile-time enables new classes of program optimization. In this paper, we present methods for forcing congruence among the dynamic addresses of a memory reference. We also introduce a compiler algorithm for detecting this property. Our transformations do not require interprocedural analysis and introduce almost no overhead. As a result, they can be incorporated into real compilation systems. On average, our transformations are able to achieve a five-fold increase in the number of congruent memory operations. We are then able to detect 95% of these references. This success is invaluable in providing performance gains in a variety of areas. When congruence information is incorporated into a vectorizing compiler, we can increase the performance of a G4 AltiVec processor up to a factor of two. Using the same methods, we are able to reduce energy consumption in a data cache by as much as 35%.
first_indexed 2024-09-23T13:03:49Z
format Article
id mit-1721.1/3760
institution Massachusetts Institute of Technology
language en_US
last_indexed 2024-09-23T13:03:49Z
publishDate 2003
record_format dspace
spelling mit-1721.1/37602019-04-10T12:16:22Z Increasing and Detecting Memory Address Congruence Larsen, Samuel Witchel, Emmett Amarasinghe, Saman P. memory address congruence vectorizing compiler program optimization A static memory reference exhibits a unique property when its dynamic memory addresses are congruent with respect to some non-trivial modulus. Extraction of this congruence information at compile-time enables new classes of program optimization. In this paper, we present methods for forcing congruence among the dynamic addresses of a memory reference. We also introduce a compiler algorithm for detecting this property. Our transformations do not require interprocedural analysis and introduce almost no overhead. As a result, they can be incorporated into real compilation systems. On average, our transformations are able to achieve a five-fold increase in the number of congruent memory operations. We are then able to detect 95% of these references. This success is invaluable in providing performance gains in a variety of areas. When congruence information is incorporated into a vectorizing compiler, we can increase the performance of a G4 AltiVec processor up to a factor of two. Using the same methods, we are able to reduce energy consumption in a data cache by as much as 35%. Singapore-MIT Alliance (SMA) 2003-11-29T21:06:30Z 2003-11-29T21:06:30Z 2003-01 Article http://hdl.handle.net/1721.1/3760 en_US Computer Science (CS); 11417 bytes application/pdf application/pdf
spellingShingle memory address congruence
vectorizing compiler
program optimization
Larsen, Samuel
Witchel, Emmett
Amarasinghe, Saman P.
Increasing and Detecting Memory Address Congruence
title Increasing and Detecting Memory Address Congruence
title_full Increasing and Detecting Memory Address Congruence
title_fullStr Increasing and Detecting Memory Address Congruence
title_full_unstemmed Increasing and Detecting Memory Address Congruence
title_short Increasing and Detecting Memory Address Congruence
title_sort increasing and detecting memory address congruence
topic memory address congruence
vectorizing compiler
program optimization
url http://hdl.handle.net/1721.1/3760
work_keys_str_mv AT larsensamuel increasinganddetectingmemoryaddresscongruence
AT witchelemmett increasinganddetectingmemoryaddresscongruence
AT amarasinghesamanp increasinganddetectingmemoryaddresscongruence