PAPI 7.1.0.0
Loading...
Searching...
No Matches
ultra3plus_events.h
Go to the documentation of this file.
2 /* These two must always be first. */
3 { .pme_name = "Cycle_cnt",
4 .pme_desc = "Accumulated cycles",
5 .pme_ctrl = PME_CTRL_S0 | PME_CTRL_S1,
6 .pme_val = 0x0,
7 },
8 { .pme_name = "Instr_cnt",
9 .pme_desc = "Number of instructions completed",
10 .pme_ctrl = PME_CTRL_S0 | PME_CTRL_S1,
11 .pme_val = 0x1,
12 },
13
14 /* PIC0 events common to all UltraSPARC processors */
15 {
16 .pme_name = "Dispatch0_IC_miss",
17 .pme_desc = "I-buffer is empty from I-Cache miss",
18 .pme_ctrl = PME_CTRL_S0,
19 .pme_val = 0x2,
20 },
21 {
22 .pme_name = "IC_ref",
23 .pme_desc = "I-cache refrences",
24 .pme_ctrl = PME_CTRL_S0,
25 .pme_val = 0x8,
26 },
27 {
28 .pme_name = "DC_rd",
29 .pme_desc = "D-cache read references (including accesses that subsequently trap)",
30 .pme_ctrl = PME_CTRL_S0,
31 .pme_val = 0x9,
32 },
33 {
34 .pme_name = "DC_wr",
35 .pme_desc = "D-cache store accesses (including cacheable stores that subsequently trap)",
36 .pme_ctrl = PME_CTRL_S0,
37 .pme_val = 0xa,
38 },
39 {
40 .pme_name = "EC_ref",
41 .pme_desc = "E-cache references",
42 .pme_ctrl = PME_CTRL_S0,
43 .pme_val = 0xc,
44 },
45 {
46 .pme_name = "EC_snoop_inv",
47 .pme_desc = "L2-cache invalidates generated from a snoop by a remote processor",
48 .pme_ctrl = PME_CTRL_S0,
49 .pme_val = 0xe,
50 },
51
52 /* PIC1 events common to all UltraSPARC processors */
53 {
54 .pme_name = "Dispatch0_mispred",
55 .pme_desc = "I-buffer is empty from Branch misprediction",
56 .pme_ctrl = PME_CTRL_S1,
57 .pme_val = 0x2,
58 },
59 {
60 .pme_name = "EC_wb",
61 .pme_desc = "Dirty sub-blocks that produce writebacks due to L2-cache miss events",
62 .pme_ctrl = PME_CTRL_S1,
63 .pme_val = 0xd,
64 },
65 {
66 .pme_name = "EC_snoop_cb",
67 .pme_desc = "L2-cache copybacks generated from a snoop by a remote processor",
68 .pme_ctrl = PME_CTRL_S1,
69 .pme_val = 0xe,
70 },
71
72 /* PIC0 events common to all UltraSPARC-III/III+/IIIi processors */
73 {
74 .pme_name = "Dispatch0_br_target",
75 .pme_desc = "I-buffer is empty due to a branch target address calculation",
76 .pme_ctrl = PME_CTRL_S0,
77 .pme_val = 0x3,
78 },
79 {
80 .pme_name = "Dispatch0_2nd_br",
81 .pme_desc = "Stall cycles due to having two branch instructions line-up in one 4-instruction group causing the second branch in the group to be re-fetched, delaying it's entrance into the I-buffer",
82 .pme_ctrl = PME_CTRL_S0,
83 .pme_val = 0x4,
84 },
85 {
86 .pme_name = "Rstall_storeQ",
87 .pme_desc = "R-stage stall for a store instruction which is the next instruction to be executed, but it stailled due to the store queue being full",
88 .pme_ctrl = PME_CTRL_S0,
89 .pme_val = 0x5,
90 },
91 {
92 .pme_name = "Rstall_IU_use",
93 .pme_desc = "R-stage stall for an event that the next instruction to be executed depends on the result of a preceeding integer instruction in the pipeline that is not yet available",
94 .pme_ctrl = PME_CTRL_S0,
95 .pme_val = 0x6,
96 },
97 {
98 .pme_name = "EC_write_hit_RTO",
99 .pme_desc = "W-cache exclusive requests that hit L2-cache in S, O, or Os state and thus, do a read-to-own bus transaction",
100 .pme_ctrl = PME_CTRL_S0,
101 .pme_val = 0xd,
102 },
103 {
104 .pme_name = "EC_rd_miss",
105 .pme_desc = "L2-cache miss events (including atomics) from D-cache events",
106 .pme_ctrl = PME_CTRL_S0,
107 .pme_val = 0xf,
108 },
109 {
110 .pme_name = "PC_port0_rd",
111 .pme_desc = "P-cache cacheable FP loads to the first port (general purpose load path to D-cache and P-cache via MS pipeline)",
112 .pme_ctrl = PME_CTRL_S0,
113 .pme_val = 0x10,
114 },
115 {
116 .pme_name = "SI_snoop",
117 .pme_desc = "Counts snoops from remote processor(s) including RTS, RTSR, RTO, RTOR, RS, RSR, RTSM, and WS",
118 .pme_ctrl = PME_CTRL_S0,
119 .pme_val = 0x11,
120 },
121 {
122 .pme_name = "SI_ciq_flow",
123 .pme_desc = "Counts system clock cycles when the flow control (PauseOut) signal is asserted",
124 .pme_ctrl = PME_CTRL_S0,
125 .pme_val = 0x12,
126 },
127 {
128 .pme_name = "SI_owned",
129 .pme_desc = "Counts events where owned_in is asserted on bus requests from the local processor",
130 .pme_ctrl = PME_CTRL_S0,
131 .pme_val = 0x13,
132 },
133 {
134 .pme_name = "SW_count0",
135 .pme_desc = "Counts software-generated occurrences of 'sethi %hi(0xfc000), %g0' instruction",
136 .pme_ctrl = PME_CTRL_S0,
137 .pme_val = 0x14,
138 },
139 { .pme_name = "IU_Stat_Br_miss_taken",
140 .pme_desc = "Retired branches that were predicted to be taken, but in fact were not taken",
141 .pme_ctrl = PME_CTRL_S0,
142 .pme_val = 0x15,
143 },
144 { .pme_name = "IU_Stat_Br_Count_taken",
145 .pme_desc = "Retired taken branches",
146 .pme_ctrl = PME_CTRL_S0,
147 .pme_val = 0x16,
148 },
149 {
150 .pme_name = "Dispatch0_rs_mispred",
151 .pme_desc = "I-buffer is empty due to a Return Address Stack misprediction",
152 .pme_ctrl = PME_CTRL_S0,
153 .pme_val = 0x4,
154 },
155 {
156 .pme_name = "FA_pipe_completion",
157 .pme_desc = "Instructions that complete execution on the FPG ALU pipelines",
158 .pme_ctrl = PME_CTRL_S0,
159 .pme_val = 0x18,
160 },
161
162 /* PIC1 events common to all UltraSPARC-III/III+/IIIi processors */
163 {
164 .pme_name = "IC_miss_cancelled",
165 .pme_desc = "I-cache misses cancelled due to mis-speculation, recycle, or other events",
166 .pme_ctrl = PME_CTRL_S1,
167 .pme_val = 0x3,
168 },
169 {
170 .pme_name = "Re_FPU_bypass",
171 .pme_desc = "Stall due to recirculation when an FPU bypass condition that does not have a direct bypass path occurs",
172 .pme_ctrl = PME_CTRL_S1,
173 .pme_val = 0x5,
174 },
175 {
176 .pme_name = "Re_DC_miss",
177 .pme_desc = "Stall due to loads that miss D-cache and get recirculated",
178 .pme_ctrl = PME_CTRL_S1,
179 .pme_val = 0x6,
180 },
181 {
182 .pme_name = "Re_EC_miss",
183 .pme_desc = "Stall due to loads that miss L2-cache and get recirculated",
184 .pme_ctrl = PME_CTRL_S1,
185 .pme_val = 0x7,
186 },
187 {
188 .pme_name = "IC_miss",
189 .pme_desc = "I-cache misses, including fetches from mis-speculated execution paths which are later cancelled",
190 .pme_ctrl = PME_CTRL_S1,
191 .pme_val = 0x8,
192 },
193 {
194 .pme_name = "DC_rd_miss",
195 .pme_desc = "Recirculated loads that miss the D-cache",
196 .pme_ctrl = PME_CTRL_S1,
197 .pme_val = 0x9,
198 },
199 {
200 .pme_name = "DC_wr_miss",
201 .pme_desc = "D-cache store accesses that miss D-cache",
202 .pme_ctrl = PME_CTRL_S1,
203 .pme_val = 0xa,
204 },
205 {
206 .pme_name = "Rstall_FP_use",
207 .pme_desc = "R-stage stall for an event that the next instruction to be executed depends on the result of a preceeding floating-point instruction in the pipeline that is not yet available",
208 .pme_ctrl = PME_CTRL_S1,
209 .pme_val = 0xb,
210 },
211 {
212 .pme_name = "EC_misses",
213 .pme_desc = "E-cache misses",
214 .pme_ctrl = PME_CTRL_S1,
215 .pme_val = 0xc,
216 },
217 {
218 .pme_name = "EC_ic_miss",
219 .pme_desc = "L2-cache read misses from I-cache requests",
220 .pme_ctrl = PME_CTRL_S1,
221 .pme_val = 0xf,
222 },
223 {
224 .pme_name = "Re_PC_miss",
225 .pme_desc = "Stall due to recirculation when a prefetch cache miss occurs on a prefetch predicted second load",
226 .pme_ctrl = PME_CTRL_S1,
227 .pme_val = 0x10,
228 },
229 {
230 .pme_name = "ITLB_miss",
231 .pme_desc = "I-TLB miss traps taken",
232 .pme_ctrl = PME_CTRL_S1,
233 .pme_val = 0x11,
234 },
235 {
236 .pme_name = "DTLB_miss",
237 .pme_desc = "Memory reference instructions which trap due to D-TLB miss",
238 .pme_ctrl = PME_CTRL_S1,
239 .pme_val = 0x12,
240 },
241 {
242 .pme_name = "WC_miss",
243 .pme_desc = "W-cache misses",
244 .pme_ctrl = PME_CTRL_S1,
245 .pme_val = 0x13,
246 },
247 {
248 .pme_name = "WC_snoop_cb",
249 .pme_desc = "W-cache copybacks generated by a snoop from a remote processor",
250 .pme_ctrl = PME_CTRL_S1,
251 .pme_val = 0x14,
252 },
253 {
254 .pme_name = "WC_scrubbed",
255 .pme_desc = "W-cache hits to clean lines",
256 .pme_ctrl = PME_CTRL_S1,
257 .pme_val = 0x15,
258 },
259 {
260 .pme_name = "WC_wb_wo_read",
261 .pme_desc = "W-cache writebacks not requiring a read",
262 .pme_ctrl = PME_CTRL_S1,
263 .pme_val = 0x16,
264 },
265 {
266 .pme_name = "PC_soft_hit",
267 .pme_desc = "FP loads that hit a P-cache line that was prefetched by a software-prefetch instruction",
268 .pme_ctrl = PME_CTRL_S1,
269 .pme_val = 0x18,
270 },
271 {
272 .pme_name = "PC_snoop_inv",
273 .pme_desc = "P-cache invalidates that were generated by a snoop from a remote processor and stores by a local processor",
274 .pme_ctrl = PME_CTRL_S1,
275 .pme_val = 0x19,
276 },
277 {
278 .pme_name = "PC_hard_hit",
279 .pme_desc = "FP loads that hit a P-cache line that was prefetched by a hardware prefetch",
280 .pme_ctrl = PME_CTRL_S1,
281 .pme_val = 0x1a,
282 },
283 {
284 .pme_name = "PC_port1_rd",
285 .pme_desc = "P-cache cacheable FP loads to the second port (memory and out-of-pipeline instruction execution loads via the A0 and A1 pipelines)",
286 .pme_ctrl = PME_CTRL_S1,
287 .pme_val = 0x1b,
288 },
289 {
290 .pme_name = "SW_count1",
291 .pme_desc = "Counts software-generated occurrences of 'sethi %hi(0xfc000), %g0' instruction",
292 .pme_ctrl = PME_CTRL_S1,
293 .pme_val = 0x1c,
294 },
295 { .pme_name = "IU_Stat_Br_miss_untaken",
296 .pme_desc = "Retired branches that were predicted to be untaken, but in fact were taken",
297 .pme_ctrl = PME_CTRL_S1,
298 .pme_val = 0x1d,
299 },
300 { .pme_name = "IU_Stat_Br_Count_untaken",
301 .pme_desc = "Retired untaken branches",
302 .pme_ctrl = PME_CTRL_S1,
303 .pme_val = 0x1e,
304 },
305 {
306 .pme_name = "PC_MS_miss",
307 .pme_desc = "FP loads through the MS pipeline that miss P-cache",
308 .pme_ctrl = PME_CTRL_S1,
309 .pme_val = 0x1f,
310 },
311 {
312 .pme_name = "Re_RAW_miss",
313 .pme_desc = "Stall due to recirculation when there is a load in the E-stage which has a non-bypassable read-after-write hazard with an earlier store instruction",
314 .pme_ctrl = PME_CTRL_S1,
315 .pme_val = 0x26,
316 },
317 {
318 .pme_name = "FM_pipe_completion",
319 .pme_desc = "Instructions that complete execution on the FPG Multiply pipelines",
320 .pme_ctrl = PME_CTRL_S0,
321 .pme_val = 0x27,
322 },
323
324
325 /* PIC0 memory controller events common to UltraSPARC-III/III+ processors */
326 {
327 .pme_name = "MC_reads_0",
328 .pme_desc = "Read requests completed to memory bank 0",
329 .pme_ctrl = PME_CTRL_S0,
330 .pme_val = 0x20,
331 },
332 {
333 .pme_name = "MC_reads_1",
334 .pme_desc = "Read requests completed to memory bank 1",
335 .pme_ctrl = PME_CTRL_S0,
336 .pme_val = 0x21,
337 },
338 {
339 .pme_name = "MC_reads_2",
340 .pme_desc = "Read requests completed to memory bank 2",
341 .pme_ctrl = PME_CTRL_S0,
342 .pme_val = 0x22,
343 },
344 {
345 .pme_name = "MC_reads_3",
346 .pme_desc = "Read requests completed to memory bank 3",
347 .pme_ctrl = PME_CTRL_S0,
348 .pme_val = 0x23,
349 },
350 {
351 .pme_name = "MC_stalls_0",
352 .pme_desc = "Clock cycles that requests were stalled in the MCU queues because bank 0 was busy with a previous request",
353 .pme_ctrl = PME_CTRL_S0,
354 .pme_val = 0x24,
355 },
356 {
357 .pme_name = "MC_stalls_2",
358 .pme_desc = "Clock cycles that requests were stalled in the MCU queues because bank 2 was busy with a previous request",
359 .pme_ctrl = PME_CTRL_S0,
360 .pme_val = 0x25,
361 },
362
363 /* PIC1 memory controller events common to all UltraSPARC-III/III+ processors */
364 {
365 .pme_name = "MC_writes_0",
366 .pme_desc = "Write requests completed to memory bank 0",
367 .pme_ctrl = PME_CTRL_S1,
368 .pme_val = 0x20,
369 },
370 {
371 .pme_name = "MC_writes_1",
372 .pme_desc = "Write requests completed to memory bank 1",
373 .pme_ctrl = PME_CTRL_S1,
374 .pme_val = 0x21,
375 },
376 {
377 .pme_name = "MC_writes_2",
378 .pme_desc = "Write requests completed to memory bank 2",
379 .pme_ctrl = PME_CTRL_S1,
380 .pme_val = 0x22,
381 },
382 {
383 .pme_name = "MC_writes_3",
384 .pme_desc = "Write requests completed to memory bank 3",
385 .pme_ctrl = PME_CTRL_S1,
386 .pme_val = 0x23,
387 },
388 {
389 .pme_name = "MC_stalls_1",
390 .pme_desc = "Clock cycles that requests were stalled in the MCU queues because bank 1 was busy with a previous request",
391 .pme_ctrl = PME_CTRL_S1,
392 .pme_val = 0x24,
393 },
394 {
395 .pme_name = "MC_stalls_3",
396 .pme_desc = "Clock cycles that requests were stalled in the MCU queues because bank 3 was busy with a previous request",
397 .pme_ctrl = PME_CTRL_S1,
398 .pme_val = 0x25,
399 },
400
401 /* PIC0 events specific to UltraSPARC-III+ processors */
402 {
403 .pme_name = "EC_wb_remote",
404 .pme_desc = "Counts the retry event when any victimization for which the processor generates an R_WB transaction to non_LPA address region",
405 .pme_ctrl = PME_CTRL_S0,
406 .pme_val = 0x19,
407 },
408 {
409 .pme_name = "EC_miss_local",
410 .pme_desc = "Counts any transaction to an LPA for which the processor issues an RTS/RTO/RS transaction",
411 .pme_ctrl = PME_CTRL_S0,
412 .pme_val = 0x1a,
413 },
414 {
415 .pme_name = "EC_miss_mtag_remote",
416 .pme_desc = "Counts any transaction to an LPA in which the processor is required to generate a retry transaction",
417 .pme_ctrl = PME_CTRL_S0,
418 .pme_val = 0x1b,
419 },
420
421 /* PIC1 events specific to UltraSPARC-III+/IIIi processors */
422 {
423 .pme_name = "Re_DC_missovhd",
424 .pme_desc = "Used to measure D-cache stall counts seperatedly for L2-cache hits and misses. This counter is used with the recirculation and cache access events to seperately calculate the D-cache loads that hit and miss the L2-cache",
425 .pme_ctrl = PME_CTRL_S1,
426 .pme_val = 0x4,
427 },
428
429 /* PIC1 events specific to UltraSPARC-III+ processors */
430 {
431 .pme_name = "EC_miss_mtag_remote",
432 .pme_desc = "Counts any transaction to an LPA in which the processor is required to generate a retry transaction",
433 .pme_ctrl = PME_CTRL_S1,
434 .pme_val = 0x28,
435 },
436 {
437 .pme_name = "EC_miss_remote",
438 .pme_desc = "Counts the events triggered whenever the processor generates a remote (R_*) transaction and the address is to a non-LPA portion (remote) of the physical address space, or an R_WS transaction due to block-store/block-store-commit to any address space (LPA or non-LPA), or an R-RTO due to store/swap request on Os state to LPA space",
439 .pme_ctrl = PME_CTRL_S1,
440 .pme_val = 0x29,
441 },
442};
443#define PME_ULTRA3PLUS_EVENT_COUNT (sizeof(ultra3plus_pe)/sizeof(pme_sparc_entry_t))
#define PME_CTRL_S0
#define PME_CTRL_S1
char * pme_name
static pme_sparc_entry_t ultra3plus_pe[]