Commit faa35916 authored by Ian Rogers's avatar Ian Rogers Committed by Namhyung Kim

perf vendor events: Add goldmont counter information

Add counter information necessary for optimizing event grouping the
perf tool.

The most recent RFC patch set using this information:
https://lore.kernel.org/lkml/20240412210756.309828-1-weilin.wang@intel.com/

The information was added in:
https://github.com/intel/perfmon/commit/475892a9690cb048949e593fe39cee65cd4765e1
and later patches.
Co-authored-by: default avatarWeilin Wang <weilin.wang@intel.com>
Co-authored-by: default avatarCaleb Biggers <caleb.biggers@intel.com>
Signed-off-by: default avatarIan Rogers <irogers@google.com>
Reviewed-by: default avatarKan Liang <kan.liang@linux.intel.com>
Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>
Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
Link: https://lore.kernel.org/r/20240620181752.3945845-11-irogers@google.com
parent 40ccd6aa
[
{
"Unit": "core",
"CountersNumFixed": "3",
"CountersNumGeneric": "4"
}
]
\ No newline at end of file
[ [
{ {
"BriefDescription": "Cycles the FP divide unit is busy", "BriefDescription": "Cycles the FP divide unit is busy",
"Counter": "0,1,2,3",
"EventCode": "0xCD", "EventCode": "0xCD",
"EventName": "CYCLES_DIV_BUSY.FPDIV", "EventName": "CYCLES_DIV_BUSY.FPDIV",
"PublicDescription": "Counts core cycles the floating point divide unit is busy.", "PublicDescription": "Counts core cycles the floating point divide unit is busy.",
...@@ -9,6 +10,7 @@ ...@@ -9,6 +10,7 @@
}, },
{ {
"BriefDescription": "Machine clears due to FP assists", "BriefDescription": "Machine clears due to FP assists",
"Counter": "0,1,2,3",
"EventCode": "0xC3", "EventCode": "0xC3",
"EventName": "MACHINE_CLEARS.FP_ASSIST", "EventName": "MACHINE_CLEARS.FP_ASSIST",
"PublicDescription": "Counts machine clears due to floating point (FP) operations needing assists. For instance, if the result was a floating point denormal, the hardware clears the pipeline and reissues uops to produce the correct IEEE compliant denormal result.", "PublicDescription": "Counts machine clears due to floating point (FP) operations needing assists. For instance, if the result was a floating point denormal, the hardware clears the pipeline and reissues uops to produce the correct IEEE compliant denormal result.",
...@@ -17,6 +19,7 @@ ...@@ -17,6 +19,7 @@
}, },
{ {
"BriefDescription": "Floating point divide uops retired. (Precise Event Capable)", "BriefDescription": "Floating point divide uops retired. (Precise Event Capable)",
"Counter": "0,1,2,3",
"EventCode": "0xC2", "EventCode": "0xC2",
"EventName": "UOPS_RETIRED.FPDIV", "EventName": "UOPS_RETIRED.FPDIV",
"PEBS": "2", "PEBS": "2",
......
[ [
{ {
"BriefDescription": "BACLEARs asserted for any branch type", "BriefDescription": "BACLEARs asserted for any branch type",
"Counter": "0,1,2,3",
"EventCode": "0xE6", "EventCode": "0xE6",
"EventName": "BACLEARS.ALL", "EventName": "BACLEARS.ALL",
"PublicDescription": "Counts the number of times a BACLEAR is signaled for any reason, including, but not limited to indirect branch/call, Jcc (Jump on Conditional Code/Jump if Condition is Met) branch, unconditional branch/call, and returns.", "PublicDescription": "Counts the number of times a BACLEAR is signaled for any reason, including, but not limited to indirect branch/call, Jcc (Jump on Conditional Code/Jump if Condition is Met) branch, unconditional branch/call, and returns.",
...@@ -9,6 +10,7 @@ ...@@ -9,6 +10,7 @@
}, },
{ {
"BriefDescription": "BACLEARs asserted for conditional branch", "BriefDescription": "BACLEARs asserted for conditional branch",
"Counter": "0,1,2,3",
"EventCode": "0xE6", "EventCode": "0xE6",
"EventName": "BACLEARS.COND", "EventName": "BACLEARS.COND",
"PublicDescription": "Counts BACLEARS on Jcc (Jump on Conditional Code/Jump if Condition is Met) branches.", "PublicDescription": "Counts BACLEARS on Jcc (Jump on Conditional Code/Jump if Condition is Met) branches.",
...@@ -17,6 +19,7 @@ ...@@ -17,6 +19,7 @@
}, },
{ {
"BriefDescription": "BACLEARs asserted for return branch", "BriefDescription": "BACLEARs asserted for return branch",
"Counter": "0,1,2,3",
"EventCode": "0xE6", "EventCode": "0xE6",
"EventName": "BACLEARS.RETURN", "EventName": "BACLEARS.RETURN",
"PublicDescription": "Counts BACLEARS on return instructions.", "PublicDescription": "Counts BACLEARS on return instructions.",
...@@ -25,6 +28,7 @@ ...@@ -25,6 +28,7 @@
}, },
{ {
"BriefDescription": "Decode restrictions due to predicting wrong instruction length", "BriefDescription": "Decode restrictions due to predicting wrong instruction length",
"Counter": "0,1,2,3",
"EventCode": "0xE9", "EventCode": "0xE9",
"EventName": "DECODE_RESTRICTION.PREDECODE_WRONG", "EventName": "DECODE_RESTRICTION.PREDECODE_WRONG",
"PublicDescription": "Counts the number of times the prediction (from the predecode cache) for instruction length is incorrect.", "PublicDescription": "Counts the number of times the prediction (from the predecode cache) for instruction length is incorrect.",
...@@ -33,6 +37,7 @@ ...@@ -33,6 +37,7 @@
}, },
{ {
"BriefDescription": "References per ICache line. This event counts differently than Intel processors based on Silvermont microarchitecture", "BriefDescription": "References per ICache line. This event counts differently than Intel processors based on Silvermont microarchitecture",
"Counter": "0,1,2,3",
"EventCode": "0x80", "EventCode": "0x80",
"EventName": "ICACHE.ACCESSES", "EventName": "ICACHE.ACCESSES",
"PublicDescription": "Counts requests to the Instruction Cache (ICache) for one or more bytes in an ICache Line. The event strives to count on a cache line basis, so that multiple fetches to a single cache line count as one ICACHE.ACCESS. Specifically, the event counts when accesses from straight line code crosses the cache line boundary, or when a branch target is to a new line.\r\nThis event counts differently than Intel processors based on Silvermont microarchitecture.", "PublicDescription": "Counts requests to the Instruction Cache (ICache) for one or more bytes in an ICache Line. The event strives to count on a cache line basis, so that multiple fetches to a single cache line count as one ICACHE.ACCESS. Specifically, the event counts when accesses from straight line code crosses the cache line boundary, or when a branch target is to a new line.\r\nThis event counts differently than Intel processors based on Silvermont microarchitecture.",
...@@ -41,6 +46,7 @@ ...@@ -41,6 +46,7 @@
}, },
{ {
"BriefDescription": "References per ICache line that are available in the ICache (hit). This event counts differently than Intel processors based on Silvermont microarchitecture", "BriefDescription": "References per ICache line that are available in the ICache (hit). This event counts differently than Intel processors based on Silvermont microarchitecture",
"Counter": "0,1,2,3",
"EventCode": "0x80", "EventCode": "0x80",
"EventName": "ICACHE.HIT", "EventName": "ICACHE.HIT",
"PublicDescription": "Counts requests to the Instruction Cache (ICache) for one or more bytes in an ICache Line and that cache line is in the ICache (hit). The event strives to count on a cache line basis, so that multiple accesses which hit in a single cache line count as one ICACHE.HIT. Specifically, the event counts when straight line code crosses the cache line boundary, or when a branch target is to a new line, and that cache line is in the ICache. This event counts differently than Intel processors based on Silvermont microarchitecture.", "PublicDescription": "Counts requests to the Instruction Cache (ICache) for one or more bytes in an ICache Line and that cache line is in the ICache (hit). The event strives to count on a cache line basis, so that multiple accesses which hit in a single cache line count as one ICACHE.HIT. Specifically, the event counts when straight line code crosses the cache line boundary, or when a branch target is to a new line, and that cache line is in the ICache. This event counts differently than Intel processors based on Silvermont microarchitecture.",
...@@ -49,6 +55,7 @@ ...@@ -49,6 +55,7 @@
}, },
{ {
"BriefDescription": "References per ICache line that are not available in the ICache (miss). This event counts differently than Intel processors based on Silvermont microarchitecture", "BriefDescription": "References per ICache line that are not available in the ICache (miss). This event counts differently than Intel processors based on Silvermont microarchitecture",
"Counter": "0,1,2,3",
"EventCode": "0x80", "EventCode": "0x80",
"EventName": "ICACHE.MISSES", "EventName": "ICACHE.MISSES",
"PublicDescription": "Counts requests to the Instruction Cache (ICache) for one or more bytes in an ICache Line and that cache line is not in the ICache (miss). The event strives to count on a cache line basis, so that multiple accesses which miss in a single cache line count as one ICACHE.MISS. Specifically, the event counts when straight line code crosses the cache line boundary, or when a branch target is to a new line, and that cache line is not in the ICache. This event counts differently than Intel processors based on Silvermont microarchitecture.", "PublicDescription": "Counts requests to the Instruction Cache (ICache) for one or more bytes in an ICache Line and that cache line is not in the ICache (miss). The event strives to count on a cache line basis, so that multiple accesses which miss in a single cache line count as one ICACHE.MISS. Specifically, the event counts when straight line code crosses the cache line boundary, or when a branch target is to a new line, and that cache line is not in the ICache. This event counts differently than Intel processors based on Silvermont microarchitecture.",
...@@ -57,6 +64,7 @@ ...@@ -57,6 +64,7 @@
}, },
{ {
"BriefDescription": "MS decode starts", "BriefDescription": "MS decode starts",
"Counter": "0,1,2,3",
"EventCode": "0xE7", "EventCode": "0xE7",
"EventName": "MS_DECODED.MS_ENTRY", "EventName": "MS_DECODED.MS_ENTRY",
"PublicDescription": "Counts the number of times the Microcode Sequencer (MS) starts a flow of uops from the MSROM. It does not count every time a uop is read from the MSROM. The most common case that this counts is when a micro-coded instruction is encountered by the front end of the machine. Other cases include when an instruction encounters a fault, trap, or microcode assist of any sort that initiates a flow of uops. The event will count MS startups for uops that are speculative, and subsequently cleared by branch mispredict or a machine clear.", "PublicDescription": "Counts the number of times the Microcode Sequencer (MS) starts a flow of uops from the MSROM. It does not count every time a uop is read from the MSROM. The most common case that this counts is when a micro-coded instruction is encountered by the front end of the machine. Other cases include when an instruction encounters a fault, trap, or microcode assist of any sort that initiates a flow of uops. The event will count MS startups for uops that are speculative, and subsequently cleared by branch mispredict or a machine clear.",
......
[ [
{ {
"BriefDescription": "Machine clears due to memory ordering issue", "BriefDescription": "Machine clears due to memory ordering issue",
"Counter": "0,1,2,3",
"EventCode": "0xC3", "EventCode": "0xC3",
"EventName": "MACHINE_CLEARS.MEMORY_ORDERING", "EventName": "MACHINE_CLEARS.MEMORY_ORDERING",
"PublicDescription": "Counts machine clears due to memory ordering issues. This occurs when a snoop request happens and the machine is uncertain if memory ordering will be preserved as another core is in the process of modifying the data.", "PublicDescription": "Counts machine clears due to memory ordering issues. This occurs when a snoop request happens and the machine is uncertain if memory ordering will be preserved as another core is in the process of modifying the data.",
...@@ -9,6 +10,7 @@ ...@@ -9,6 +10,7 @@
}, },
{ {
"BriefDescription": "Load uops that split a page (Precise event capable)", "BriefDescription": "Load uops that split a page (Precise event capable)",
"Counter": "0,1,2,3",
"EventCode": "0x13", "EventCode": "0x13",
"EventName": "MISALIGN_MEM_REF.LOAD_PAGE_SPLIT", "EventName": "MISALIGN_MEM_REF.LOAD_PAGE_SPLIT",
"PEBS": "2", "PEBS": "2",
...@@ -18,6 +20,7 @@ ...@@ -18,6 +20,7 @@
}, },
{ {
"BriefDescription": "Store uops that split a page (Precise event capable)", "BriefDescription": "Store uops that split a page (Precise event capable)",
"Counter": "0,1,2,3",
"EventCode": "0x13", "EventCode": "0x13",
"EventName": "MISALIGN_MEM_REF.STORE_PAGE_SPLIT", "EventName": "MISALIGN_MEM_REF.STORE_PAGE_SPLIT",
"PEBS": "2", "PEBS": "2",
......
[ [
{ {
"BriefDescription": "Cycles code-fetch stalled due to any reason.", "BriefDescription": "Cycles code-fetch stalled due to any reason.",
"Counter": "0,1,2,3",
"EventCode": "0x86", "EventCode": "0x86",
"EventName": "FETCH_STALL.ALL", "EventName": "FETCH_STALL.ALL",
"PublicDescription": "Counts cycles that fetch is stalled due to any reason. That is, the decoder queue is able to accept bytes, but the fetch unit is unable to provide bytes. This will include cycles due to an ITLB miss, ICache miss and other events.", "PublicDescription": "Counts cycles that fetch is stalled due to any reason. That is, the decoder queue is able to accept bytes, but the fetch unit is unable to provide bytes. This will include cycles due to an ITLB miss, ICache miss and other events.",
...@@ -8,6 +9,7 @@ ...@@ -8,6 +9,7 @@
}, },
{ {
"BriefDescription": "Cycles code-fetch stalled due to an outstanding ITLB miss.", "BriefDescription": "Cycles code-fetch stalled due to an outstanding ITLB miss.",
"Counter": "0,1,2,3",
"EventCode": "0x86", "EventCode": "0x86",
"EventName": "FETCH_STALL.ITLB_FILL_PENDING_CYCLES", "EventName": "FETCH_STALL.ITLB_FILL_PENDING_CYCLES",
"PublicDescription": "Counts cycles that fetch is stalled due to an outstanding ITLB miss. That is, the decoder queue is able to accept bytes, but the fetch unit is unable to provide bytes due to an ITLB miss. Note: this event is not the same as page walk cycles to retrieve an instruction translation.", "PublicDescription": "Counts cycles that fetch is stalled due to an outstanding ITLB miss. That is, the decoder queue is able to accept bytes, but the fetch unit is unable to provide bytes due to an ITLB miss. Note: this event is not the same as page walk cycles to retrieve an instruction translation.",
...@@ -16,6 +18,7 @@ ...@@ -16,6 +18,7 @@
}, },
{ {
"BriefDescription": "Cycles hardware interrupts are masked", "BriefDescription": "Cycles hardware interrupts are masked",
"Counter": "0,1,2,3",
"EventCode": "0xCB", "EventCode": "0xCB",
"EventName": "HW_INTERRUPTS.MASKED", "EventName": "HW_INTERRUPTS.MASKED",
"PublicDescription": "Counts the number of core cycles during which interrupts are masked (disabled). Increments by 1 each core cycle that EFLAGS.IF is 0, regardless of whether interrupts are pending or not.", "PublicDescription": "Counts the number of core cycles during which interrupts are masked (disabled). Increments by 1 each core cycle that EFLAGS.IF is 0, regardless of whether interrupts are pending or not.",
...@@ -24,6 +27,7 @@ ...@@ -24,6 +27,7 @@
}, },
{ {
"BriefDescription": "Cycles pending interrupts are masked", "BriefDescription": "Cycles pending interrupts are masked",
"Counter": "0,1,2,3",
"EventCode": "0xCB", "EventCode": "0xCB",
"EventName": "HW_INTERRUPTS.PENDING_AND_MASKED", "EventName": "HW_INTERRUPTS.PENDING_AND_MASKED",
"PublicDescription": "Counts core cycles during which there are pending interrupts, but interrupts are masked (EFLAGS.IF = 0).", "PublicDescription": "Counts core cycles during which there are pending interrupts, but interrupts are masked (EFLAGS.IF = 0).",
...@@ -32,6 +36,7 @@ ...@@ -32,6 +36,7 @@
}, },
{ {
"BriefDescription": "Hardware interrupts received", "BriefDescription": "Hardware interrupts received",
"Counter": "0,1,2,3",
"EventCode": "0xCB", "EventCode": "0xCB",
"EventName": "HW_INTERRUPTS.RECEIVED", "EventName": "HW_INTERRUPTS.RECEIVED",
"PublicDescription": "Counts hardware interrupts received by the processor.", "PublicDescription": "Counts hardware interrupts received by the processor.",
......
[ [
{ {
"BriefDescription": "ITLB misses", "BriefDescription": "ITLB misses",
"Counter": "0,1,2,3",
"EventCode": "0x81", "EventCode": "0x81",
"EventName": "ITLB.MISS", "EventName": "ITLB.MISS",
"PublicDescription": "Counts the number of times the machine was unable to find a translation in the Instruction Translation Lookaside Buffer (ITLB) for a linear address of an instruction fetch. It counts when new translation are filled into the ITLB. The event is speculative in nature, but will not count translations (page walks) that are begun and not finished, or translations that are finished but not filled into the ITLB.", "PublicDescription": "Counts the number of times the machine was unable to find a translation in the Instruction Translation Lookaside Buffer (ITLB) for a linear address of an instruction fetch. It counts when new translation are filled into the ITLB. The event is speculative in nature, but will not count translations (page walks) that are begun and not finished, or translations that are finished but not filled into the ITLB.",
...@@ -9,6 +10,7 @@ ...@@ -9,6 +10,7 @@
}, },
{ {
"BriefDescription": "Memory uops retired that missed the DTLB (Precise event capable)", "BriefDescription": "Memory uops retired that missed the DTLB (Precise event capable)",
"Counter": "0,1,2,3",
"Data_LA": "1", "Data_LA": "1",
"EventCode": "0xD0", "EventCode": "0xD0",
"EventName": "MEM_UOPS_RETIRED.DTLB_MISS", "EventName": "MEM_UOPS_RETIRED.DTLB_MISS",
...@@ -19,6 +21,7 @@ ...@@ -19,6 +21,7 @@
}, },
{ {
"BriefDescription": "Load uops retired that missed the DTLB (Precise event capable)", "BriefDescription": "Load uops retired that missed the DTLB (Precise event capable)",
"Counter": "0,1,2,3",
"Data_LA": "1", "Data_LA": "1",
"EventCode": "0xD0", "EventCode": "0xD0",
"EventName": "MEM_UOPS_RETIRED.DTLB_MISS_LOADS", "EventName": "MEM_UOPS_RETIRED.DTLB_MISS_LOADS",
...@@ -29,6 +32,7 @@ ...@@ -29,6 +32,7 @@
}, },
{ {
"BriefDescription": "Store uops retired that missed the DTLB (Precise event capable)", "BriefDescription": "Store uops retired that missed the DTLB (Precise event capable)",
"Counter": "0,1,2,3",
"Data_LA": "1", "Data_LA": "1",
"EventCode": "0xD0", "EventCode": "0xD0",
"EventName": "MEM_UOPS_RETIRED.DTLB_MISS_STORES", "EventName": "MEM_UOPS_RETIRED.DTLB_MISS_STORES",
...@@ -39,6 +43,7 @@ ...@@ -39,6 +43,7 @@
}, },
{ {
"BriefDescription": "Duration of page-walks in cycles", "BriefDescription": "Duration of page-walks in cycles",
"Counter": "0,1,2,3",
"EventCode": "0x05", "EventCode": "0x05",
"EventName": "PAGE_WALKS.CYCLES", "EventName": "PAGE_WALKS.CYCLES",
"PublicDescription": "Counts every core cycle a page-walk is in progress due to either a data memory operation or an instruction fetch.", "PublicDescription": "Counts every core cycle a page-walk is in progress due to either a data memory operation or an instruction fetch.",
...@@ -47,6 +52,7 @@ ...@@ -47,6 +52,7 @@
}, },
{ {
"BriefDescription": "Duration of D-side page-walks in cycles", "BriefDescription": "Duration of D-side page-walks in cycles",
"Counter": "0,1,2,3",
"EventCode": "0x05", "EventCode": "0x05",
"EventName": "PAGE_WALKS.D_SIDE_CYCLES", "EventName": "PAGE_WALKS.D_SIDE_CYCLES",
"PublicDescription": "Counts every core cycle when a Data-side (walks due to a data operation) page walk is in progress.", "PublicDescription": "Counts every core cycle when a Data-side (walks due to a data operation) page walk is in progress.",
...@@ -55,6 +61,7 @@ ...@@ -55,6 +61,7 @@
}, },
{ {
"BriefDescription": "Duration of I-side pagewalks in cycles", "BriefDescription": "Duration of I-side pagewalks in cycles",
"Counter": "0,1,2,3",
"EventCode": "0x05", "EventCode": "0x05",
"EventName": "PAGE_WALKS.I_SIDE_CYCLES", "EventName": "PAGE_WALKS.I_SIDE_CYCLES",
"PublicDescription": "Counts every core cycle when a Instruction-side (walks due to an instruction fetch) page walk is in progress.", "PublicDescription": "Counts every core cycle when a Instruction-side (walks due to an instruction fetch) page walk is in progress.",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment