8.9. Non-Temporal Store Possible

A non-temporal store possible issue is reported when Freja sees an opportunity to decrease bandwidth usage using non-temporal stores instead of regular stores. Such opportunities arise when data written in a loop lacks temporal reuse. See Section 5.3, “Non-Temporal Data” for more information about non-temporal memory accesses.

This issue type is normally only included when analyzing the highest cache level, that is the cache level closest to memory. This is due to the non-temporal store instructions using hardware buffers that are located between the last level cache and main memory.

Non-Temporal Store Possible Issue

Figure 8.13. Non-Temporal Store Possible Issue


Using non-temporal stores prevents non-temporal data from polluting the caches and leaves more space for temporal data. Another effect of the non-temporal hint is that it allows the processors to avoid fetching cache lines that will only be written, which effectively doubles the available bandwidth for a given write loop.

Non-temporal stores should only be used for truly non-temporal data and is no replacement for techniques that improve the temporal locality of the code. Using non-temporal stores for temporal data will hurt performance by removing the data from the cache hierarchy.

The non-temporal store possible issue has the following sections: