SPRUI30H November 2015 – May 2024 DRA745 , DRA746 , DRA750 , DRA756
The program cache provides several output signals to the EVE SCTM block for the purpose of profiling and debugging cache performance issues.
Table 8-9 lists the cache profiling signals. The Type column of the table is either pulse or duration. The pulse signals are driven active one cycle for each occurrence. A sequence of consecutive active cycles represent multiple occurrences. It is possible that the duration signal stays active for multiple cycles on a given occurrence. These are stall signals that determine the total number of cycles in the stalled state. The SCTM Mode column describes the counter mode that is programmable in the SCTM module for a given counter. The SCTM Mode column is either event or duration. Event signals result in incrementing the counter once per low-to-high transition on a given input. As such, the event mode is not overly useful for cache profiling. The duration mode measures the number of cycles during which a given signal is active. This is the mode used for most Cache profiling. In the case of counting pulses, this reports the total number of occurrences of a given state/signal (that is, cache hits). In the case of counting duration, this reports the total time in a given state.
Name | Type | SCTM Mode | Description |
---|---|---|---|
cache_miss_count | Pulse | Duration | Per cache miss request occurrence |
cache_hit_count | Pulse | Duration | Per cache hit request occurrence |
line_buffer_hit_count | Pulse | Duration | Line buffer hit occurrence |
cache_miss_stall | Duration | Duration (or event) | Driven high for the duration of a cache miss. Used by SCTM to measure the time the ARP32 is stalled due to a cache miss. |
prefetch_compulsory_count | Pulse | Duration | Pulse on each or every compulsory DBP request to the system (that is, for the first 128-bit request after a buffer flush, or from IDLE state). |
prefetch_lookahead_count | Pulse | Duration | Pulse on each or every lookahead DBP request to the system (that is, for the second 128-bit request after a flush). |
prefetch_hit_count | Pulse | Duration | Pulse on each or every cache request that hits an already requested prefetch cache line, whether resident in the prefetch buffer or already requested but still in flight, and thus does not generate an additional prefetch request. |
prefetch_line_count | Pulse | Duration | Pulse on every 32-bit cacheline that is requested/allocated into the prefetch buffer (including those that bypass the buffer due to starting at address 0x60). The difference between prefetch_line_count and prefetch_hit_count is equivalent to a prefetch_flush_line_count. |
prefetch_discard_stall | Duration | Duration (or event) | Represents the amount of time that previously issued prefetch requests data is in flight (and is discarded) while a new compulsatory prefetch request begins. |