564 lines
32 KiB
C
564 lines
32 KiB
C
#ifndef MCKINLEY_H_INCLUDED
|
|
#define MCKINLEY_H_INCLUDED
|
|
|
|
/*++
|
|
|
|
Copyright (c) 1989-2002 Microsoft Corporation
|
|
|
|
Component Name:
|
|
|
|
HALIA64
|
|
|
|
Module Name:
|
|
|
|
mckinley.h
|
|
|
|
Abstract:
|
|
|
|
This header file presents IA64 McKinley definitions.
|
|
Like profiling definitions.
|
|
|
|
Author:
|
|
|
|
David N. Cutler (davec) 5-Mar-1989
|
|
|
|
Environment:
|
|
|
|
Kernel mode.
|
|
|
|
Revision History:
|
|
|
|
12/20/2001 Thierry Fevrier (v-thief@microsoft.com):
|
|
|
|
Initial version
|
|
|
|
--*/
|
|
|
|
//
|
|
// McKinley Monitored Events:
|
|
//
|
|
|
|
typedef enum _MCKINLEY_MONITOR_EVENT { // = 0x##, // McKinley PMU ERS Event Name:
|
|
McKinleyMonitoredEventMinimum = 0x00,
|
|
McKinleyBackEndBubbles = 0x00, // "BACK_END_BUBBLE"
|
|
McKinleyBackEndRSEBubbles = 0x01, // "BE_RSE_BUBBLE"
|
|
McKinleyRSELoadUnderflowCycles = 0x01, // "BE_RSE_BUBBLE.underflow"
|
|
McKinleyBackEndEXEBubbles = 0x02, // "BE_EXE_BUBBLE"
|
|
McKinleyFPTrueSirStalls = 0x03, // "FP_TRUE_SIRSTALL"
|
|
McKinleyBackEndFlushBubbles = 0x04, // "BE_FLUSH_BUBBLE",
|
|
McKinleyFPFalseSirStalls = 0x05, // "FP_FALSE_SIRSTALL",
|
|
McKinleyFPFailedFchkf = 0x06, // "FP_FAILED_FCHKF",
|
|
McKinleyISATransitions = 0x07, // "ISA_TRANSITIONS",
|
|
McKinleyInstRetired = 0x08, // "IA64_INSTS_RETIRED.u",
|
|
McKinleyTaggedInstRetired = 0x08, // "IA64_TAGGED_INSTRS_RETIRED",
|
|
McKinleyCodeDebugRegisterMatches = 0x08, // "CODE_DEBUG_REGISTER_MATCHES",
|
|
McKinleyFPOperationsRetired = 0x09, // "FPOPS_RETIRED", // Weighted sum of all FP ops
|
|
McKinleyFPFlushesToZero = 0x0b, // "FP_FLUSH_TO_ZERO",
|
|
McKinleyBranchEventsWithEAR = 0x11, // "BRANCH_EVENT,BRANCH_EAR_EVENTS",
|
|
McKinleyCpuCycles = 0x12, // "CPU_CYCLES",
|
|
McKinleyCpuCPLChanges = 0x13, // "CPU_CPL_CHANGES",
|
|
McKinleyRSEAccesses = 0x20, // "RSE_REFERENCES_RETIRED",
|
|
McKinleyRSEDirtyRegs0 = 0x24, // "RSE_DIRTY_REGS0",
|
|
McKinleyRSECurrentRegs0 = 0x26, // "RSE_CURRENT_REGS0",
|
|
McKinleyRSEDirtyRegs1 = 0x28, // "RSE_DIRTY_REGS1",
|
|
McKinleyRSEDirtyRegs2 = 0x29, // "RSE_DIRTY_REGS2",
|
|
McKinleyRSECurrentRegs1 = 0x2a, // "RSE_CURRENT_REGS1",
|
|
McKinleyRSECurrentRegs2 = 0x2b, // "RSE_CURRENT_REGS2",
|
|
McKinleyDataTLBHPWRetiredInserts = 0x2c, // "DTLB_INSERTS_HPW_RETIRED",
|
|
McKinleyVHPTDataReferences = 0x2d, // "VHPT_DATA_REFERENCES",
|
|
McKinleyRSEOperations = 0x32, // "RSE_EVENT_RETIRED",
|
|
McKinleyL1InstReads = 0x40, // "L0I_READS",
|
|
McKinleyInstTLBReferences = 0x40, // "ITLB_REFERENCES",
|
|
McKinleyL1InstFills = 0x41, // "L0I_FILLS",
|
|
McKinleyL1InstMisses = 0x42, // "L0I_MISSES",
|
|
McKinleyL1InstEAREvents = 0x43, // "L0I_EAR_EVENTS",
|
|
McKinleyL1InstPrefetches = 0x44, // "L0I_IPREFETCHES",
|
|
McKinleyL2InstPrefetches = 0x45, // "L1_INST_PREFETCHES",
|
|
McKinleyISBBundlePairs = 0x46, // "ISB_BINPAIRS_IN",
|
|
McKinleyInstTLBDemandFetchMisses = 0x47, // "ITLB_MISSES_FETCH",
|
|
McKinleyInstTLBHPWInserts = 0x48, // "ITLB_INSERTS_HPW",
|
|
McKinleyDispersalCyclesStalled = 0x49, // "DISP_STALLED",
|
|
McKinleyL1InstSnoops = 0x4a, // "L0I_SNOOP",
|
|
McKinleyL1InstPurges = 0x4b, // "L0I_PURGE",
|
|
McKinleyTaggedInstructionsAtRotate = 0x4c, // "TAGGED_INSTRUCTION_AT_ROTATE",
|
|
McKinleyInstDispersed = 0x4d, // "INST_DISPERSED",
|
|
McKinleySyllablesNotDispersed = 0x4e, // "SYLL_NOT_DISPERSED",
|
|
McKinleySyllablesOvercount = 0x4f, // "SYLL_OVERCOUNT",
|
|
McKinleyInstNOPRetired = 0x50, // "NOPS_RETIRED",
|
|
McKinleyInstPredicateSquashedRetired = 0x51, // "PREDICATE_SQUASHED_RETIRED",
|
|
McKinleyDataDebugRegisterFaults = 0x52, // "DATA_DEBUG_REGISTER_FAULTS",
|
|
McKinleySerializationEvents = 0x53, // "SERIALIZATION_EVENTS",
|
|
McKinleyBranchPathPrediction = 0x54, // "BR_PATH_PREDICTION",
|
|
McKinleyFailedSpeculativeCheckLoads = 0x55, // "INST_FAILED_CHKS_RETIRED",
|
|
McKinleyAdvancedCheckLoads = 0x56, // "INST_CHKA_LDC_ALAT",
|
|
McKinleyFailedAdvancedCheckLoads = 0x57, // "INST_FAILED_CHKA_LDC_ALAT",
|
|
McKinleyALATOverflows = 0x58, // "ALAT_CAPACITY_MISS",
|
|
McKinleyIA32InstRetired = 0x59, // "IA32_INSTR_RETIRED",
|
|
McKinleyBranchMispredictDetail = 0x5b, // "BR_MIS_PREDICT_DETAIL",
|
|
McKinleyL1InstStreamPrefetches = 0x5f, // "L0I_STRM_PREFETCHES",
|
|
McKinleyL1InstRABFull = 0x60, // "L0I_RAB_FULL",
|
|
McKinleyBackEndBranchMispredictDetail = 0x61, // "BE_BR_MISPREDICT_DETAIL",
|
|
McKinleyEncodedBranchMispredictDetail = 0x63, // "ENCBR_MISPREDICT_DETAIL",
|
|
McKinleyL1InstRABAlmostFull = 0x64, // "L0I_RAB_ALMOST_FULL",
|
|
McKinleyL1InstFetchRABHits = 0x65, // "L0I_FETCH_RAB_HIT",
|
|
McKinleyL1InstFetchISBHits = 0x66, // "L0I_FETCH_ISB_HIT",
|
|
McKinleyL1InstPrefetchStalls = 0x67, // "L0I_PREFETCH_STALL",
|
|
McKinleyBranchMispredictDetail2 = 0x68, // "BR_MIS_PREDICT_DETAIL2",
|
|
McKinleyL1InstPVABOverflows = 0x69, // "L0I_PVAB_OVERFLOW",
|
|
McKinleyBranchPathPrediction2 = 0x6a, // "BR_PATH_PREDICTION2",
|
|
McKinleyFrontEndLostBandwidth = 0x70, // "FE_LOST_BW",
|
|
McKinleyFrontEndBubbles = 0x71, // "FE_BUBBLE",
|
|
McKinleyBackEndLostBandwidth = 0x72, // "BE_LOST_BW_DUE_TO_FE",
|
|
McKinleyBackEndIdealLostBandwidth = 0x73, // "IDEAL_BE_LOST_BW_DUE_TO_FE",
|
|
McKinleyBusReadCpuLineHits = 0x80, // "BUS_RD_HIT",
|
|
McKinleyBusReadCpuModifiedLineHits = 0x81, // "BUS_RD_HITM",
|
|
McKinleyBusReadBILCpuModifiedLineHits = 0x82, // "BUS_RD_INVAL_HITM",
|
|
McKinleyBusReadBRILorBILCpuModifiedLineHits = 0x83, // "BUS_RD_INVAL_HITM",
|
|
McKinleyBusCpuModifiedLineHits = 0x84, // "BUS_HITM",
|
|
McKinleyBusCpuModifiedLineHitSnoops = 0x85, // "BUS_SNOOPS_HITM",
|
|
McKinleyBusSnoops = 0x86, // "BUS_SNOOPS",
|
|
McKinleyBusAll = 0x87, // "BUS_ALL",
|
|
McKinleyBusDataCycles = 0x88, // "BUS_ALL",
|
|
McKinleyBusMemoryCurrentReads = 0x89, // "BUS_MEMORY_READ_CURRENT",
|
|
McKinleyBusMemoryTransactions = 0x8a, // "BUS_MEMORY",
|
|
McKinleyBusMemoryReads = 0x8b, // "BUS_MEM_READ",
|
|
McKinleyBusMemoryDataReads = 0x8c, // "BUS_RD_DATA",
|
|
McKinleyBusMemoryBRPReads = 0x8d, // "BUS_RD_PRTL",
|
|
McKinleyBusIA32LockCycles = 0x8e, // "BUS_LOCK_CYCLES",
|
|
McKinleyBusSnoopStallCycles = 0x8f, // "BUS_SNOOP_STALL_CYCLES",
|
|
McKinleyBusIA32IOTransactions = 0x90, // "BUS_IO",
|
|
McKinleyBusIA32IOReads = 0x91, // "BUS_RD_IO",
|
|
McKinleyBusMemoryWriteBacks = 0x92, // "BUS_WR_WB",
|
|
McKinleyBusIA32LockTransactions = 0x93, // "BUS_LOCK",
|
|
McKinleyBusMemoryReadsOutstandingHi = 0x94, // "BUS_MEM_READ_OUT_HI",
|
|
McKinleyBusMemoryReadsOutstandingLow = 0x95, // "BUS_MEM_READ_OUT_LOW",
|
|
McKinleyBusSnoopResponses = 0x96, // "BUS_SNOOPQ_REQ",
|
|
McKinleyBusLiveInOrderRequestsLow = 0x97, // "BUS_IOQ_LIVE_REQ_LO",
|
|
McKinleyBusLiveInOrderRequestsHi = 0x98, // "BUS_IOQ_LIVE_REQ_HI",
|
|
McKinleyBusLiveDeferredRequestsLow = 0x99, // "BUS_OOO_LIVE_REQ_LO",
|
|
McKinleyBusLiveDeferredRequestsHi = 0x9a, // "BUS_OOO_LIVE_REQ_HI",
|
|
McKinleyBusLiveQueuedReadRequestsLow = 0x9b, // "BUS_BRQ_LIVE_REQ_LO",
|
|
McKinleyBusLiveQueuedReadRequestsHi = 0x9c, // "BUS_BRQ_LIVE_REQ_HI",
|
|
McKinleyBusRequestQueueInserts = 0x9d, // "BUS_BRQ_REQ_INSERTED",
|
|
McKinleyExternDPPins0To3Asserted = 0x9e, // "EXTERN_DP_PINS_0_TO_3",
|
|
McKinleyExternDPPins4To5Asserted = 0x9f, // "EXTERN_DP_PINS_4_TO_5",
|
|
McKinleyL2OZQCancels0 = 0xa0, // "L1_OZQ_CANCELS0",
|
|
McKinleyL2InstFetchCancels = 0xa1, // "L1_IFET_CANCELS",
|
|
McKinleyL2OZQAcquires = 0xa2, // "L1_OZQ_ACQUIRE",
|
|
McKinleyL2OZQReleases = 0xa3, // "L1_OZQ_ACQUIRE",
|
|
McKinleyL2InstFetchCancelsByBypass = 0xa5, // "L1_IFET_CANCELS",
|
|
McKinleyL2OZQAcquiresAliasA6 = 0xa6, // "L1_OZQ_ACQUIRE",
|
|
McKinleyL2OZQCancels2 = 0xa8, // "L1_OZQ_CANCELS2",
|
|
McKinleyL2InstFetchCancelsByDataRead = 0xa9, // "L1_IFET_CANCELS",
|
|
McKinleyL2OZQAcquiresAliasAA = 0xaa, // "L1_OZQ_ACQUIRE",
|
|
McKinleyL2OZQCancels1 = 0xac, // "L1_OZQ_CANCELS1",
|
|
McKinleyL2InstFetchCancelsByStFillWb = 0xad, // "L1_IFET_CANCELS",
|
|
McKinleyL2OZQAcquiresAliasAE = 0xae, // "L1_OZQ_ACQUIRE",
|
|
McKinleyL2CanceledL3Accesses = 0xb0, // "L1_L2ACCESS_CANCEL",
|
|
McKinleyL2References = 0xb1, // "L1_REFERENCES",
|
|
McKinleyL2DataReferences = 0xb2, // "L1_DATA_REFERENCES",
|
|
McKinleyL2DataReads = 0xb2, // "L1_DATA_REFERENCES.u[=xx01]",
|
|
McKinleyL2DataWrites = 0xb2, // "L1_DATA_REFERENCES.u[=xx10]",
|
|
McKinleyL2TaggedAccesses = 0xb3, // "TAGGED_L1_PORT",
|
|
McKinleyL2ForcedRecirculatedOperations = 0xb4, // "L1_FORCE_RECIRC",
|
|
McKinleyL2IssuedRecirculatedOZQAccesses = 0xb5, // "L1_ISSUED_RECIRC_OZQ_ACC",
|
|
McKinleyL2SuccessfulRecirculatedOZQAccesses = 0xb6, // "L1_GOT_RECIRC_OZQ_ACC",
|
|
McKinleyL2SynthesizedProbes = 0xb7, // "L1_SYNTH_PROBES",
|
|
McKinleyL2Bypasses = 0xb8, // "L1_BYPASS",
|
|
McKinleyL2IssuedOperations = 0xb8, // "L1_OPS_ISSUED",
|
|
McKinleyL2BadLinesSelected = 0xb9, // "L1_BAD_LINES_SELECTED",
|
|
McKinleyL2IssuedRecirculatedInstFetches = 0xb9, // "L1_ISSUED_RECIRC_IFETCH",
|
|
McKinleyL2StoreSharedLineHits = 0xba, // "L1_STORE_HIT_SHARED",
|
|
McKinleyL2ReceivedRecirculatedInstFetches = 0xba, // "L1_GOT_RECIRC_IFETCH",
|
|
McKinleyL2TaggedDataReturns = 0xbb, // "TAGGED_L1_DATA_RETURN_PORT",
|
|
McKinleyL2DataOrderingCzarQueueFull = 0xbc, // "L1_OZQ_FULL",
|
|
McKinleyL2DataOrderingCzarDataBufferFull = 0xbd, // "L1_OZDB_FULL",
|
|
McKinleyL2DataVictimBufferFull = 0xbe, // "L1_VICTIMB_FULL",
|
|
McKinleyL2DataFillBufferFull = 0xbf, // "L1_FILLB_FULL",
|
|
McKinleyL1DataTLBTransfersSet0 = 0xc0, // "L0DTLB_TRANSFER",
|
|
McKinleyDataTLBMissesSet0 = 0xc1, // "DTLB_MISSES",
|
|
McKinleyL1DataReadsSet0 = 0xc2, // "L0D_READS",
|
|
McKinleyL1DataReadsSet1 = 0xc4, // "L0D_READS",
|
|
McKinleyDataReferencesSet1 = 0xc5, // "DATA_REFERENCES",
|
|
McKinleyDataTLBReferencesSet1 = 0xc5, // "DTLB_REFERENCES",
|
|
McKinleyL1DataReadMissesSet1 = 0xc7, // "L0D_READ_MISSES",
|
|
McKinleyL1DataReadMissesByRSEFillsSet1 = 0xc7, // "L0D_READ_MISSES",
|
|
McKinleyDataEAREvents = 0xc8, // "DATA_EAR_EVENTS",
|
|
McKinleyDataTLBHPWInserts = 0xc9, // "DTLB_INSERTS_HPW",
|
|
McKinleyBackEndL0DAndFPUBubbles = 0xca, // "BE_L0D_FPU_BUBBLE",
|
|
McKinleyL2Misses = 0x6b, // "L1_MISSES",
|
|
McKinleyDataDebugRegisterMatches = 0xc6, // "DATA_DEBUG_REGISTER_MATCHES",
|
|
McKinleyRetiredLoads = 0xcd, // "LOADS_RETIRED",
|
|
McKinleyRetiredMisalignedLoads = 0xce, // "MISALIGNED_LOADS_RETIRED",
|
|
McKinleyRetiredUncacheableLoads = 0xcf, // "UC_LOADS_RETIRED",
|
|
McKinleyRetiredUncacheableStores = 0xd0, // "UC_STORES_RETIRED",
|
|
McKinleyRetiredStores = 0xd1, // "STORES_RETIRED",
|
|
McKinleyRetiredMisalignedStores = 0xd2, // "MISALIGNED_STORES_RETIRED",
|
|
McKinleyL1DataPortTaggedReturnsSet5 = 0xd5, // "TAGGED_L0_DATA_RETURN_PORT",
|
|
McKinleyL1DataPortTaggedAccessesSet5 = 0xd6, // "TAGGED_L0D_PORT",
|
|
McKinleyL3References = 0xdb, // "L2_REFERENCES",
|
|
McKinleyL3Misses = 0xdc, // "L2_MISSES",
|
|
McKinleyL3Reads = 0xdd, // "L2_READS",
|
|
McKinleyL3Writes = 0xde, // "L2_WRITES",
|
|
McKinleyL3ValidReplacedLines = 0xdf, // "L2_LINES_REPLACED",
|
|
} MCKINLEY_MONITOR_EVENT;
|
|
|
|
//
|
|
// McKinley Derived Events:
|
|
//
|
|
// Assumption: McKinleyDerivedEventMinimum > McKinleyMonitoredEventMaximum.
|
|
//
|
|
// Implementation Status legend specified as: S:FIV where
|
|
// - F: verified Formula or X for non-verified
|
|
// - I: Implemented or X for non-implemented
|
|
// - V: derived event validity verified or X for non-verified
|
|
//
|
|
|
|
typedef enum _MCKINLEY_DERIVED_EVENT { // Implementation status = McKinley PMU ERS Event Name = Formula
|
|
McKinleyDerivedEventMinimum = 0x100, /* > Maximum of McKinley Monitored Event */
|
|
McKinleyRSEStallCycles = McKinleyDerivedEventMinimum, // S:XXX - (McKinleyMemoryStallCycles - McKinleyDataStallAccessCycles)
|
|
McKinleyIssueLimitStallCycles, // S:XXX = XXX = (McKinleyExecStallCycles - McKinleyExecLatencyStallCycles)
|
|
McKinleyTakenBranchStallCycles, // S:XXX = (McKinleyBranchStallCycles - McKinleyBranchMispredictStallCycles)
|
|
McKinleyFetchWindowStallCycles, // S:XXX = (McKinleyInstFetchStallCycles - McKinleyInstAccessStallCycles)
|
|
McKinleyIA64InstPerCycle, // S:XXX = (IA64_INST_RETIRED.u / CPU_CYCLES[IA64])
|
|
McKinleyIA32InstPerCycle, // S:XXX = (IA32_INSTR_RETIRED / CPU_CYCLES[IA32])
|
|
McKinleyAvgIA64InstPerTransition, // S:XXX = (IA64_INST_RETIRED.u / (ISA_TRANSITIONS * 2))
|
|
McKinleyAvgIA32InstPerTransition, // S:XXX = (IA32_INSTR_RETIRED / (ISA_TRANSITIONS * 2))
|
|
McKinleyAvgIA64CyclesPerTransition, // S:XXX = (CPU_CYCLES[IA64] / (ISA_TRANSITIONS * 2))
|
|
McKinleyAvgIA32CyclesPerTransition, // S:XXX = (CPU_CYCLES[IA32] / (ISA_TRANSITIONS * 2))
|
|
McKinleyL1InstReferences, // S:XXX = LOI_REFERENCES = L0I_READS + L0I_IPREFETCHES
|
|
McKinleyL1InstMissRatio, // S:XXX = (L1I_MISSES / McKinleyL1InstReferences)
|
|
McKinleyL1DataReadMissRatio, // S:XXX = (L1D_READS_MISSES_RETIRED / L1D_READS_RETIRED)
|
|
McKinleyL2MissRatio, // S:XXX = (L2_MISSES / L2_REFERENCES)
|
|
McKinleyL2DataMissRatio, // S:XXX = (L3_DATA_REFERENCES / L2_DATA_REFERENCES)
|
|
McKinleyL2InstMissRatio, // S:XXX = (L3_DATA_REFERENCES / L2_DATA_REFERENCES)
|
|
McKinleyL2DataReadMissRatio, // S:XXX = (L3_LOAD_REFERENCES.u / L2_DATA_READS.u)
|
|
McKinleyL2DataWriteMissRatio, // S:XXX = (L3_STORE_REFERENCES.u / L2_DATA_WRITES.u)
|
|
McKinleyL2InstFetchRatio, // S:XXX = (L1I_MISSES / L2_REFERENCES)
|
|
McKinleyL2DataRatio, // S:XXX = (L2_DATA_REFERENCES / L2_REFERENCES)
|
|
McKinleyL3MissRatio, // S:XXX = (L3_MISSES / L2_MISSES)
|
|
McKinleyL3DataMissRatio, // S:XXX = ((L3_LOAD_MISSES.u + L3_STORE_MISSES.u) / L3_REFERENCES.d)
|
|
McKinleyL3InstMissRatio, // S:XXX = (L3_INST_MISSES.u / L3_INST_REFERENCES.u)
|
|
McKinleyL3DataReadMissRatio, // S:XXX = (L3_LOAD_REFERENCES.u / L3_DATA_REFERENCES.d)
|
|
McKinleyL3DataRatio, // S:XXX = (L3_DATA_REFERENCES.d / L3_REFERENCES)
|
|
McKinleyInstReferences, // S:XXX = (L1I_READS)
|
|
McKinleyL0DTLBMissRatio, // S:FXX = L0DTLB_MISS_RATIO = (L0DTLB_MISSES / L0D_READS)
|
|
McKinleyDTLBMissRatio, // S:FXX = DTLB_MISS_RATIO = (DTLB_MISSES / DATA_REFERENCES)
|
|
McKinleyDataTCMissRatio, // S:XXX = (DTC_MISSES / DATA_REFERENCES_RETIRED)
|
|
McKinleyInstTLBEAREvents, // S:XXX = (INSTRUCTION_EAR_EVENTS)
|
|
McKinleyDataTLBEAREvents, // S:XXX = (DATA_EAR_EVENTS)
|
|
McKinleyControlSpeculationMissRatio, // S:XXX = (INST_FAILED_CHKS_RETIRED / IA64_TAGGED_INSTRS_RETIRED[chk.s])
|
|
McKinleyDataSpeculationMissRatio, // S:XXX = (ALAT_INST_FAILED_CHKA_LDC / ALAT_INST_CHKA_LDC)
|
|
McKinleyALATCapacityMissRatio, // S:XXX = (ALAT_CAPACITY_MISS / IA64_TAGGED_INSTRS_RETIRED[ld.sa,ld.a,ldfp.a,ldfp.sa])
|
|
McKinleyL1DataWayMispredicts, // S:XXX = (EventCode: 0x33 / Umask: 0x2)
|
|
McKinleyL2InstReferences, // S:FXX = L1_INST_REFERENCES = (L0I_MISSES + L1_INST_PREFETCHES)
|
|
McKinleyInstFetches, // S:XXX = (L1I_MISSES)
|
|
McKinleyL3InstReferences, // S:XXX = (PMC.umask{17:16}HIT/MISS/ALL + PMC.umask{19:18})
|
|
McKinleyL3InstMisses, // S:XXX = (PMC.umask{17:16}HIT/MISS/ALL + PMC.umask{19:18})
|
|
McKinleyL3InstHits, // S:XXX = (PMC.umask{17:16}HIT/MISS/ALL + PMC.umask{19:18})
|
|
McKinleyL3DataReferences, // S:FXX = L2_DATA_REFERENCES = (L2_REFERENCES - L2_INST_REFERENCES)
|
|
McKinleyL3ReadReferences, // S:XXX = (PMC.umask{17:16}HIT/MISS/ALL + PMC.umask{19:18})
|
|
McKinleyL2WriteBackReferences, // S:XXX = (PMC.umask{17:16}HIT/MISS/ALL + PMC.umask{19:18})
|
|
McKinleyL2WriteBackMisses, // S:XXX = (PMC.umask{17:16}HIT/MISS/ALL + PMC.umask{19:18})
|
|
McKinleyL2WriteBackHits, // S:XXX = (PMC.umask{17:16}HIT/MISS/ALL + PMC.umask{19:18})
|
|
McKinleyL2WriteReferences, // S:XXX = (PMC.umask{17:16}HIT/MISS/ALL + PMC.umask{19:18})
|
|
McKinleyL2WriteMisses, // S:XXX = (PMC.umask{17:16}HIT/MISS/ALL + PMC.umask{19:18})
|
|
McKinleyL2WriteHits, // S:XXX = (PMC.umask{17:16}HIT/MISS/ALL + PMC.umask{19:18})
|
|
McKinleyBranchInstructions, // S:XXX = (TAGGED_INSTR + opcode)
|
|
McKinleyIntegerInstructions, // S:XXX = (TAGGED_INSTR + opcode)
|
|
McKinleyL1DataMisses, // S:XXX =
|
|
McKinleyISBLinesIn, // S:FXX = ISB_LINES_IN = (ISB_BUNPAIRS_IN/4)
|
|
McKinleyBusMemoryCodeReads, // S:FXX = BUS_RD_INSTRUCTIONS = (BUS_RD_ALL - BUS_RD_DATA)
|
|
McKinleyBusReadBILMemoryHits, // S:FXX = BUS_RD_INVAL_MEMORY = (BUS_RD_INVAL - BUS_RD_INVAL_HITM)
|
|
McKinleyBusReadBRILCpuModifiedLineHits, // S:FXX = BUS_RD_INVAL_BST_HIM = (BUS_RD_INVAL_ALL_HITM - BUS_RD_INVAL_HITM)
|
|
McKinleyBusReadBRILMemoryHits, // S:FXX = BUS_RD_INVAL_BST_MEMORY = (BUS_RD_INVAL_BST - BUS_RD_INVAL_BST_HITM)
|
|
McKinleyBusMemoryReadsOutstanding, // S:FXX = BUS_MEM_READ_OUTSTANDING = (BUS_MEM_READ_OUT_HI*8 + BUS_MEM_READ_OUT_LOW)
|
|
McKinleyBusLiveInOrderRequests, // S:FXX = BUS_IOQ_LIVE_REQ = (BUS_IOQ_LIVE_REQ_HI*4 + BUS_IOQ_LIVE_REQ_LO)
|
|
McKinleyBusLiveDeferredRequests, // S:FXX = BUS_OOO_LIVE_REQ = (BUS_OOO_LIVE_REQ_HI[4:3] | BUS_OOO_LIVE_REQ_LO[2:0])
|
|
McKinleyBusLiveQueuedReadRequests, // S:FXX = BUS_BRQ_LIVE_REQ = (BUS_BRQ_LIVE_REQ_HI[4:3] | BUS_BRQ_LIVE_REQ_LO[2:0])
|
|
McKinleyRSEDirtyRegs, // S:FXX = RSE_DIRTY_REGS = (64*RSE_DIRTY_REGS0[6]+8*RSE_DIRTY_REGS1[5:3]+REG_DIRTY_REGS2[2:0])
|
|
McKinleyRSECurrentRegs, // S:FXX = RSE_CURRENT_REGS = (64*RSE_CURRENT_REGS0[6]+8*RSE_DIRTY_REGS1[5:3]+REG_DIRTY_REGS2[2:0])
|
|
} MCKINLEY_DERIVED_EVENT;
|
|
|
|
typedef enum _KPROFILE_MCKINLEY_SOURCE {
|
|
//
|
|
// Profile McKinley Monitored Events:
|
|
//
|
|
ProfileMcKinleyMonitoredEventMinimum = ProfileMaximum + 0x1,
|
|
ProfileMcKinleyBackEndBubbles = ProfileMcKinleyMonitoredEventMinimum,
|
|
ProfileMcKinleyBackEndRSEBubbles,
|
|
ProfileMcKinleyBackEndEXEBubbles,
|
|
ProfileMcKinleyBackEndL0DAndFPUBubbles,
|
|
ProfileMcKinleyBackEndFlushBubbles,
|
|
ProfileMcKinleyFrontEndBubbles,
|
|
ProfileMcKinleyFrontEndLostBandwidth,
|
|
ProfileMcKinleyBackEndLostBandwidth,
|
|
ProfileMcKinleyBackEndIdealLostBandwidth,
|
|
ProfileMcKinleyFPTrueSirStalls,
|
|
ProfileMcKinleyFPFalseSirStalls,
|
|
ProfileMcKinleyFPFailedFchkf,
|
|
ProfileMcKinleyTaggedInstRetired,
|
|
ProfileMcKinleyInstRetired,
|
|
ProfileMcKinleyFPOperationsRetired,
|
|
ProfileMcKinleyFPFlushesToZero,
|
|
ProfileMcKinleyBranchPathPrediction,
|
|
ProfileMcKinleyBranchPathPrediction2,
|
|
ProfileMcKinleyBranchMispredictDetail,
|
|
ProfileMcKinleyBranchMispredictDetail2,
|
|
ProfileMcKinleyBranchEventsWithEAR,
|
|
ProfileMcKinleyBackEndBranchMispredictDetail,
|
|
ProfileMcKinleyEncodedBranchMispredictDetail,
|
|
ProfileMcKinleyCpuCycles,
|
|
ProfileMcKinleyISATransitions,
|
|
ProfileMcKinleyIA32InstRetired,
|
|
ProfileMcKinleyL1InstReads,
|
|
ProfileMcKinleyL1InstFills,
|
|
ProfileMcKinleyL1InstMisses,
|
|
ProfileMcKinleyL1InstEAREvents,
|
|
ProfileMcKinleyL1InstPrefetches,
|
|
ProfileMcKinleyL1InstStreamPrefetches,
|
|
ProfileMcKinleyL2InstPrefetches,
|
|
ProfileMcKinleyISBBundlePairs,
|
|
ProfileMcKinleyL1InstFetchRABHits,
|
|
ProfileMcKinleyL1InstFetchISBHits,
|
|
ProfileMcKinleyL1InstPrefetchStalls,
|
|
ProfileMcKinleyL1InstRABAlmostFull,
|
|
ProfileMcKinleyL1InstRABFull,
|
|
ProfileMcKinleyL1InstSnoops,
|
|
ProfileMcKinleyL1InstPurges,
|
|
ProfileMcKinleyL1InstPVABOverflows,
|
|
ProfileMcKinleyL1DataReadsSet0,
|
|
ProfileMcKinleyL1DataTLBTransfersSet0,
|
|
ProfileMcKinleyDataTLBMissesSet0,
|
|
ProfileMcKinleyDataReferencesSet1,
|
|
ProfileMcKinleyL1DataReadsSet1,
|
|
ProfileMcKinleyL1DataReadMissesSet1,
|
|
ProfileMcKinleyL1DataReadMissesByRSEFillsSet1,
|
|
ProfileMcKinleyL1DataPortTaggedAccessesSet5,
|
|
ProfileMcKinleyL1DataPortTaggedReturnsSet5,
|
|
ProfileMcKinleyVHPTDataReferences,
|
|
ProfileMcKinleyDataEAREvents,
|
|
ProfileMcKinleyL2OZQCancels0,
|
|
ProfileMcKinleyL2OZQCancels1,
|
|
ProfileMcKinleyL2OZQCancels2,
|
|
ProfileMcKinleyL2InstFetchCancels,
|
|
ProfileMcKinleyL2InstFetchCancelsByBypass,
|
|
ProfileMcKinleyL2InstFetchCancelsByDataRead,
|
|
ProfileMcKinleyL2InstFetchCancelsByStFillWb,
|
|
ProfileMcKinleyL2OZQAcquires,
|
|
ProfileMcKinleyL2OZQReleases,
|
|
ProfileMcKinleyL2CanceledL3Accesses,
|
|
ProfileMcKinleyL2References,
|
|
ProfileMcKinleyL2DataReferences,
|
|
ProfileMcKinleyL2DataReads,
|
|
ProfileMcKinleyL2DataWrites,
|
|
ProfileMcKinleyL2TaggedAccesses,
|
|
ProfileMcKinleyL2ForcedRecirculatedOperations,
|
|
ProfileMcKinleyL2IssuedRecirculatedOZQAccesses,
|
|
ProfileMcKinleyL2SuccessfulRecirculatedOZQAccesses,
|
|
ProfileMcKinleyL2SynthesizedProbes,
|
|
ProfileMcKinleyL2DataBypasses1,
|
|
ProfileMcKinleyL2DataBypasses2,
|
|
ProfileMcKinleyL3DataBypasses1,
|
|
ProfileMcKinleyL2InstBypasses1,
|
|
ProfileMcKinleyL2InstBypasses2,
|
|
ProfileMcKinleyL3InstBypasses1,
|
|
ProfileMcKinleyL2BadLinesSelected,
|
|
ProfileMcKinleyL2StoreSharedLineHits,
|
|
ProfileMcKinleyL2IntegerLoads,
|
|
ProfileMcKinleyL2FloatingPointLoads,
|
|
ProfileMcKinleyL2ReadModifyWriteStores,
|
|
ProfileMcKinleyL2NonReadModifyWriteStores,
|
|
ProfileMcKinleyL2NonLoadsNonStores,
|
|
ProfileMcKinleyL2IssuedRecirculatedInstFetches,
|
|
ProfileMcKinleyL2ReceivedRecirculatedInstFetches,
|
|
ProfileMcKinleyL2TaggedDataReturns,
|
|
ProfileMcKinleyL2DataFillBufferFull,
|
|
ProfileMcKinleyL2DataVictimBufferFull,
|
|
ProfileMcKinleyL2DataOrderingCzarDataBufferFull,
|
|
ProfileMcKinleyL2DataOrderingCzarQueueFull,
|
|
ProfileMcKinleyL2Misses,
|
|
ProfileMcKinleyL3References,
|
|
ProfileMcKinleyL3Misses,
|
|
ProfileMcKinleyL3Reads,
|
|
ProfileMcKinleyL3ReadHits,
|
|
ProfileMcKinleyL3ReadMisses,
|
|
ProfileMcKinleyL3InstFetchReferences,
|
|
ProfileMcKinleyL3InstFetchHits,
|
|
ProfileMcKinleyL3InstFetchMisses,
|
|
ProfileMcKinleyL3LoadReferences,
|
|
ProfileMcKinleyL3LoadHits,
|
|
ProfileMcKinleyL3LoadMisses,
|
|
ProfileMcKinleyL3Writes,
|
|
ProfileMcKinleyL3WriteHits,
|
|
ProfileMcKinleyL3WriteMisses,
|
|
ProfileMcKinleyL3StoreReferences,
|
|
ProfileMcKinleyL3StoreHits,
|
|
ProfileMcKinleyL3StoreMisses,
|
|
ProfileMcKinleyL3WriteBackReferences,
|
|
ProfileMcKinleyL3WriteBackHits,
|
|
ProfileMcKinleyL3WriteBackMisses,
|
|
ProfileMcKinleyL3ValidReplacedLines,
|
|
ProfileMcKinleyDataDebugRegisterMatches,
|
|
ProfileMcKinleyCodeDebugRegisterMatches,
|
|
ProfileMcKinleyDataDebugRegisterFaults,
|
|
ProfileMcKinleyCpuCPLChanges,
|
|
ProfileMcKinleySerializationEvents,
|
|
ProfileMcKinleyExternDPPins0To3Asserted,
|
|
ProfileMcKinleyExternDPPins4To5Asserted,
|
|
ProfileMcKinleyInstTLBReferences,
|
|
ProfileMcKinleyInstTLBDemandFetchMisses,
|
|
ProfileMcKinleyL1InstTLBDemandFetchMisses,
|
|
ProfileMcKinleyL2InstTLBDemandFetchMisses,
|
|
ProfileMcKinleyInstTLBHPWInserts,
|
|
ProfileMcKinleyDataTLBReferencesSet1,
|
|
ProfileMcKinleyDataTLBHPWInserts,
|
|
ProfileMcKinleyDataTLBHPWRetiredInserts,
|
|
ProfileMcKinleyBusAllTransactions,
|
|
ProfileMcKinleyBusSelfTransactions,
|
|
ProfileMcKinleyBusNonPriorityAgentTransactions,
|
|
ProfileMcKinleyBusMemoryTransactions,
|
|
ProfileMcKinleyBusMemoryBurstTransactions,
|
|
ProfileMcKinleyBusMemoryPartialTransactions,
|
|
ProfileMcKinleyBusMemoryReads,
|
|
ProfileMcKinleyBusMemoryBRLTransactions,
|
|
ProfileMcKinleyBusMemoryBILTransactions,
|
|
ProfileMcKinleyBusMemoryBRILTransactions,
|
|
ProfileMcKinleyBusMemoryDataReads,
|
|
ProfileMcKinleyBusMemoryDataReadsBySelf,
|
|
ProfileMcKinleyBusMemoryDataReadsByNonPriorityAgent,
|
|
ProfileMcKinleyBusMemoryBRPReads,
|
|
ProfileMcKinleyBusMemoryBRPReadsBySelf,
|
|
ProfileMcKinleyBusMemoryBRPReadsByNonPriorityAgent,
|
|
ProfileMcKinleyBusReadCpuLineHits,
|
|
ProfileMcKinleyBusReadCpuModifiedLineHits,
|
|
ProfileMcKinleyBusReadBILCpuModifiedLineHits,
|
|
ProfileMcKinleyBusReadBRILorBILCpuModifiedLineHits,
|
|
ProfileMcKinleyBusCpuModifiedLineHits,
|
|
ProfileMcKinleyBusMemoryWriteBacks,
|
|
ProfileMcKinleyBusMemoryWriteBacksBySelf,
|
|
ProfileMcKinleyBusMemoryWriteBacksByNonPriorityAgent,
|
|
ProfileMcKinleyBusMemoryBurstWriteBacks,
|
|
ProfileMcKinleyBusMemoryBurstWriteBacksBySelf,
|
|
ProfileMcKinleyBusMemoryBurstWriteBacksByNonPriorityAgent,
|
|
ProfileMcKinleyBusMemoryZeroByteWriteBacks,
|
|
ProfileMcKinleyBusMemoryZeroByteWriteBacksBySelf,
|
|
ProfileMcKinleyBusMemoryCurrentReads,
|
|
ProfileMcKinleyBusMemoryCurrentReadsByNonPriorityAgent,
|
|
ProfileMcKinleyBusCpuModifiedLineHitSnoops,
|
|
ProfileMcKinleyBusCpuModifiedLineHitSnoopsBySelf,
|
|
ProfileMcKinleyBusSnoops,
|
|
ProfileMcKinleyBusSnoopsBySelf,
|
|
ProfileMcKinleyBusSnoopsByNonPriorityAgent,
|
|
ProfileMcKinleyBusSnoopStallCycles,
|
|
ProfileMcKinleyBusSnoopStallCyclesBySelf,
|
|
ProfileMcKinleyBusDataCycles,
|
|
ProfileMcKinleyBusSnoopResponses,
|
|
ProfileMcKinleyBusRequestQueueInserts,
|
|
ProfileMcKinleyBusIA32IOTransactions,
|
|
ProfileMcKinleyBusIA32IOTransactionsBySelf,
|
|
ProfileMcKinleyBusIA32IOTransactionsByNonPriorityAgent,
|
|
ProfileMcKinleyBusIA32IOReads,
|
|
ProfileMcKinleyBusIA32IOReadsBySelf,
|
|
ProfileMcKinleyBusIA32IOReadsByNonPriorityAgent,
|
|
ProfileMcKinleyBusIA32LockTransactions,
|
|
ProfileMcKinleyBusIA32LockTransactionsBySelf,
|
|
ProfileMcKinleyBusIA32LockCycles,
|
|
ProfileMcKinleyBusIA32LockCyclesBySelf,
|
|
ProfileMcKinleyRSEAccesses,
|
|
ProfileMcKinleyRSELoads,
|
|
ProfileMcKinleyRSEStores,
|
|
ProfileMcKinleyRSELoadUnderflowCycles,
|
|
ProfileMcKinleyRSEOperations,
|
|
ProfileMcKinleyTaggedInstructionsAtRotate,
|
|
ProfileMcKinleyInstDispersed,
|
|
ProfileMcKinleyDispersalCyclesStalled,
|
|
ProfileMcKinleySyllablesOvercount,
|
|
ProfileMcKinleySyllablesNotDispersed,
|
|
ProfileMcKinleyInstNOPRetired,
|
|
ProfileMcKinleyInstPredicateSquashedRetired,
|
|
ProfileMcKinleyFailedSpeculativeCheckLoads,
|
|
ProfileMcKinleyAdvancedCheckLoads,
|
|
ProfileMcKinleyFailedAdvancedCheckLoads,
|
|
ProfileMcKinleyALATOverflows,
|
|
ProfileMcKinleyRetiredLoads,
|
|
ProfileMcKinleyRetiredStores,
|
|
ProfileMcKinleyRetiredUncacheableLoads,
|
|
ProfileMcKinleyRetiredUncacheableStores,
|
|
ProfileMcKinleyRetiredMisalignedLoads,
|
|
ProfileMcKinleyRetiredMisalignedStores,
|
|
//
|
|
// Profile McKinley Derived Events:
|
|
//
|
|
ProfileMcKinleyDerivedEventMinimum,
|
|
ProfileMcKinleyRSEStallCycles = ProfileMcKinleyDerivedEventMinimum,
|
|
ProfileMcKinleyIssueLimitStallCycles,
|
|
ProfileMcKinleyTakenBranchStallCycles,
|
|
ProfileMcKinleyFetchWindowStallCycles,
|
|
ProfileMcKinleyIA64InstPerCycle,
|
|
ProfileMcKinleyIA32InstPerCycle,
|
|
ProfileMcKinleyAvgIA64InstPerTransition,
|
|
ProfileMcKinleyAvgIA32InstPerTransition,
|
|
ProfileMcKinleyAvgIA64CyclesPerTransition,
|
|
ProfileMcKinleyAvgIA32CyclesPerTransition,
|
|
ProfileMcKinleyL1InstReferences,
|
|
ProfileMcKinleyL1InstMissRatio,
|
|
ProfileMcKinleyL1DataReadMissRatio,
|
|
ProfileMcKinleyL2MissRatio,
|
|
ProfileMcKinleyL2DataMissRatio,
|
|
ProfileMcKinleyL2InstMissRatio,
|
|
ProfileMcKinleyL2DataReadMissRatio,
|
|
ProfileMcKinleyL2DataWriteMissRatio,
|
|
ProfileMcKinleyL2InstFetchRatio,
|
|
ProfileMcKinleyL2DataRatio,
|
|
ProfileMcKinleyL3MissRatio,
|
|
ProfileMcKinleyL3DataMissRatio,
|
|
ProfileMcKinleyL3InstMissRatio,
|
|
ProfileMcKinleyL3DataReadMissRatio,
|
|
ProfileMcKinleyL3DataRatio,
|
|
ProfileMcKinleyInstReferences,
|
|
ProfileMcKinleyL0DTLBMissRatio,
|
|
ProfileMcKinleyDTLBMissRatio,
|
|
ProfileMcKinleyDataTCMissRatio,
|
|
ProfileMcKinleyInstTLBEAREvents,
|
|
ProfileMcKinleyDataTLBEAREvents,
|
|
ProfileMcKinleyControlSpeculationMissRatio,
|
|
ProfileMcKinleyDataSpeculationMissRatio,
|
|
ProfileMcKinleyALATCapacityMissRatio,
|
|
ProfileMcKinleyL1DataWayMispredicts,
|
|
ProfileMcKinleyL2InstReferences,
|
|
ProfileMcKinleyInstFetches,
|
|
ProfileMcKinleyL3InstReferences,
|
|
ProfileMcKinleyL3InstMisses,
|
|
ProfileMcKinleyL3InstHits,
|
|
ProfileMcKinleyL3DataReferences,
|
|
ProfileMcKinleyL3ReadReferences,
|
|
ProfileMcKinleyL2WriteBackReferences,
|
|
ProfileMcKinleyL2WriteBackMisses,
|
|
ProfileMcKinleyL2WriteBackHits,
|
|
ProfileMcKinleyL2WriteReferences,
|
|
ProfileMcKinleyL2WriteMisses,
|
|
ProfileMcKinleyL2WriteHits,
|
|
ProfileMcKinleyBranchInstructions,
|
|
ProfileMcKinleyIntegerInstructions,
|
|
ProfileMcKinleyL1DataMisses,
|
|
ProfileMcKinleyISBLinesIn,
|
|
ProfileMcKinleyBusMemoryCodeReads,
|
|
ProfileMcKinleyBusReadBILMemoryHits,
|
|
ProfileMcKinleyBusReadBRILCpuModifiedLineHits,
|
|
ProfileMcKinleyBusReadBRILMemoryHits,
|
|
ProfileMcKinleyBusMemoryReadsOutstanding,
|
|
ProfileMcKinleyBusLiveInOrderRequests,
|
|
ProfileMcKinleyBusLiveDeferredRequests,
|
|
ProfileMcKinleyBusLiveQueuedReadRequests,
|
|
ProfileMcKinleyRSEDirtyRegs,
|
|
ProfileMcKinleyRSECurrentRegs,
|
|
ProfileMcKinleyMaximum
|
|
} KPROFILE_MCKINLEY_SOURCE, *PKPROFILE_MCKINLEY_SOURCE;
|
|
|
|
#define PROFILE_TIME_MCKINLEY_DEFAULT_INTERVAL (10 * 1000 * 10) // 10 milliseconds
|
|
|
|
#endif /* MCKINLEY_H_INCLUDED */
|
|
|
|
|