A system and method for analyzing data accesses to determine data access patterns.
Data address accesses are traced and transformed into Whole Program Streams (WPS).
WPS may then be used to discover higher-level data abstractions, such as hot data
streams and data flow graphs. Hot data streams provide information related to sequences
of data addresses that are repeatedly accessed together. Data flow graphs indicate
how hot data streams are related and include frequencies of each hot data stream
following another. Hot data streams and data flow graphs may be used with pre-fetching
and/or cache managers to improve program performance.