NAME
pmc.octeon
—
measurement events for Octeon family
CPUs
LIBRARY
library “libpmc”
SYNOPSIS
#include
<pmc.h>
DESCRIPTION
There are two counters per core supported by the hardware and each is 64 bits wide.Event Specifiers (Programmable PMCs)
MIPS programmable PMCs support the following events:
CLK
- (Event 1) Conditionally clocked cycles (as opposed to count/cvm_count which count even with no clocks)
ISSUE
- (Event 2) Instructions issued but not retired
RET
- (Event 3) Instructions retired
NISSUE
- (Event 4) Cycles no issue
SISSUE
- (Event 5) Cycles single issue
DISSUE
- (Event 6) Cycles dual issue
IFI
- (Event 7) Cycle ifetch issued (but not necessarily commit to pp_mem)
BR
- (Event 8) Branches retired
BRMIS
- (Event 9) Branch mispredicts
J
- (Event 10) Jumps retired
JMIS
- (Event 11) Jumps mispredicted
REPLAY
- (Event 12) Mem Replays
IUNA
- (Event 13) Cycles idle due to unaligned_replays
TRAP
- (Event 14) trap_6a signal
UULOAD
- (Event 16) Unexpected unaligned loads (REPUN=1)
UUSTORE
- (Event 17) Unexpected unaligned store (REPUN=1)
ULOAD
- (Event 18) Unaligned loads (REPUN=1 or USEUN=1)
USTORE
- (Event 19) Unaligned store (REPUN=1 or USEUN=1)
EC
- (Event 20) Exec clocks(must set CvmCtl[DISCE] for accurate timing)
MC
- (Event 21) Mul clocks(must set CvmCtl[DISCE] for accurate timing)
CC
- (Event 22) Crypto clocks(must set CvmCtl[DISCE] for accurate timing)
CSRC
- (Event 23) Issue_csr clocks(must set CvmCtl[DISCE] for accurate timing)
CFETCH
- (Event 24) Icache committed fetches (demand+prefetch)
CPREF
- (Event 25) Icache committed prefetches
ICA
- (Event 26) Icache aliases
II
- (Event 27) Icache invalidates
IP
- (Event 28) Icache parity error
CIMISS
- (Event 29) Cycles idle due to imiss (must set CvmCtl[DISCE] for accurate timing)
WBUF
- (Event 32) Number of write buffer entries created
WDAT
- (Event 33) Number of write buffer data cycles used (may need to set CvmCtl[DISCE] for accurate counts)
WBUFLD
- (Event 34) Number of write buffer entries forced out by loads
WBUFFL
- (Event 35) Number of cycles that there was no available write buffer entry (may need to set CvmCtl[DISCE] and CvmMemCtl[MCLK] for accurate counts)
WBUFTR
- (Event 36) Number of stores that found no available write buffer entries
BADD
- (Event 37) Number of address bus cycles used (may need to set CvmCtl[DISCE] for accurate counts)
BADDL2
- (Event 38) Number of address bus cycles not reflected (i.e. destined for L2) (may need to set CvmCtl[DISCE] for accurate counts)
BFILL
- (Event 39) Number of fill bus cycles used (may need to set CvmCtl[DISCE] for accurate counts)
DDIDS
- (Event 40) Number of Dstream DIDs created
IDIDS
- (Event 41) Number of Istream DIDs created
DIDNA
- (Event 42) Number of cycles that no DIDs were available (may need to set CvmCtl[DISCE] and CvmMemCtl[MCLK] for accurate counts)
LDS
- (Event 43) Number of load issues
LMLDS
- (Event 44) Number of local memory load
IOLDS
- (Event 45) Number of I/O load issues
DMLDS
- (Event 46) Number of loads that were not prefetches and missed in the cache
STS
- (Event 48) Number of store issues
LMSTS
- (Event 49) Number of local memory store issues
IOSTS
- (Event 50) Number of I/O store issues
IOBDMA
- (Event 51) Number of IOBDMAs
DTLB
- (Event 53) Number of dstream TLB refill, invalid, or modified exceptions
DTLBAD
- (Event 54) Number of dstream TLB address errors
ITLB
- (Event 55) Number of istream TLB refill, invalid, or address error exceptions
SYNC
- (Event 56) Number of SYNC stall cycles (may need to set CvmCtl[DISCE] for accurate counts)
SYNCIOB
- (Event 57) Number of SYNCIOBDMA stall cycles (may need to set CvmCtl[DISCE] for accurate counts)
SYNCW
- (Event 58) Number of SYNCWs
ERETMIS
- (Event 64) D/eret mispredicts (CN63XX specific)
LIKMIS
- (Event 65) Branch likely mispredicts (CN63XX specific)
HAZTR
- (Event 66) Hazard traps due to *MTC0 to CvmCtl, Perf counter control, EntryHi, or CvmMemCtl registers (CN63XX specific)
Event Name Aliases
The following table shows the mapping between the PMC-independent aliases supported by library “libpmc” and the underlying hardware events used.
Alias | Event |
instructions |
RET |
branches |
BR |
branch-mispredicts |
BS |
SEE ALSO
pmc(3), pmc.atom(3), pmc.core(3), pmc.iaf(3), pmc.k7(3), pmc.k8(3), pmc.mips24k(3), pmc.p4(3), pmc.p5(3), pmc.p6(3), pmc.soft(3), pmc.tsc(3), pmc_cpuinfo(3), pmclog(3), hwpmc(4)
HISTORY
The pmc
library first appeared in
FreeBSD 6.0.
AUTHORS
The library “libpmc” library was written by Joseph Koshy <jkoshy@FreeBSD.org>. MIPS support was added by George Neville-Neil <gnn@FreeBSD.org>.