Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

563 lines
32 KiB

  1. #ifndef MCKINLEY_H_INCLUDED
  2. #define MCKINLEY_H_INCLUDED
  3. /*++
  4. Copyright (c) 1989-2002 Microsoft Corporation
  5. Component Name:
  6. HALIA64
  7. Module Name:
  8. mckinley.h
  9. Abstract:
  10. This header file presents IA64 McKinley definitions.
  11. Like profiling definitions.
  12. Author:
  13. David N. Cutler (davec) 5-Mar-1989
  14. Environment:
  15. Kernel mode.
  16. Revision History:
  17. 12/20/2001 Thierry Fevrier (v-thief@microsoft.com):
  18. Initial version
  19. --*/
  20. //
  21. // McKinley Monitored Events:
  22. //
  23. typedef enum _MCKINLEY_MONITOR_EVENT { // = 0x##, // McKinley PMU ERS Event Name:
  24. McKinleyMonitoredEventMinimum = 0x00,
  25. McKinleyBackEndBubbles = 0x00, // "BACK_END_BUBBLE"
  26. McKinleyBackEndRSEBubbles = 0x01, // "BE_RSE_BUBBLE"
  27. McKinleyRSELoadUnderflowCycles = 0x01, // "BE_RSE_BUBBLE.underflow"
  28. McKinleyBackEndEXEBubbles = 0x02, // "BE_EXE_BUBBLE"
  29. McKinleyFPTrueSirStalls = 0x03, // "FP_TRUE_SIRSTALL"
  30. McKinleyBackEndFlushBubbles = 0x04, // "BE_FLUSH_BUBBLE",
  31. McKinleyFPFalseSirStalls = 0x05, // "FP_FALSE_SIRSTALL",
  32. McKinleyFPFailedFchkf = 0x06, // "FP_FAILED_FCHKF",
  33. McKinleyISATransitions = 0x07, // "ISA_TRANSITIONS",
  34. McKinleyInstRetired = 0x08, // "IA64_INSTS_RETIRED.u",
  35. McKinleyTaggedInstRetired = 0x08, // "IA64_TAGGED_INSTRS_RETIRED",
  36. McKinleyCodeDebugRegisterMatches = 0x08, // "CODE_DEBUG_REGISTER_MATCHES",
  37. McKinleyFPOperationsRetired = 0x09, // "FPOPS_RETIRED", // Weighted sum of all FP ops
  38. McKinleyFPFlushesToZero = 0x0b, // "FP_FLUSH_TO_ZERO",
  39. McKinleyBranchEventsWithEAR = 0x11, // "BRANCH_EVENT,BRANCH_EAR_EVENTS",
  40. McKinleyCpuCycles = 0x12, // "CPU_CYCLES",
  41. McKinleyCpuCPLChanges = 0x13, // "CPU_CPL_CHANGES",
  42. McKinleyRSEAccesses = 0x20, // "RSE_REFERENCES_RETIRED",
  43. McKinleyRSEDirtyRegs0 = 0x24, // "RSE_DIRTY_REGS0",
  44. McKinleyRSECurrentRegs0 = 0x26, // "RSE_CURRENT_REGS0",
  45. McKinleyRSEDirtyRegs1 = 0x28, // "RSE_DIRTY_REGS1",
  46. McKinleyRSEDirtyRegs2 = 0x29, // "RSE_DIRTY_REGS2",
  47. McKinleyRSECurrentRegs1 = 0x2a, // "RSE_CURRENT_REGS1",
  48. McKinleyRSECurrentRegs2 = 0x2b, // "RSE_CURRENT_REGS2",
  49. McKinleyDataTLBHPWRetiredInserts = 0x2c, // "DTLB_INSERTS_HPW_RETIRED",
  50. McKinleyVHPTDataReferences = 0x2d, // "VHPT_DATA_REFERENCES",
  51. McKinleyRSEOperations = 0x32, // "RSE_EVENT_RETIRED",
  52. McKinleyL1InstReads = 0x40, // "L0I_READS",
  53. McKinleyInstTLBReferences = 0x40, // "ITLB_REFERENCES",
  54. McKinleyL1InstFills = 0x41, // "L0I_FILLS",
  55. McKinleyL1InstMisses = 0x42, // "L0I_MISSES",
  56. McKinleyL1InstEAREvents = 0x43, // "L0I_EAR_EVENTS",
  57. McKinleyL1InstPrefetches = 0x44, // "L0I_IPREFETCHES",
  58. McKinleyL2InstPrefetches = 0x45, // "L1_INST_PREFETCHES",
  59. McKinleyISBBundlePairs = 0x46, // "ISB_BINPAIRS_IN",
  60. McKinleyInstTLBDemandFetchMisses = 0x47, // "ITLB_MISSES_FETCH",
  61. McKinleyInstTLBHPWInserts = 0x48, // "ITLB_INSERTS_HPW",
  62. McKinleyDispersalCyclesStalled = 0x49, // "DISP_STALLED",
  63. McKinleyL1InstSnoops = 0x4a, // "L0I_SNOOP",
  64. McKinleyL1InstPurges = 0x4b, // "L0I_PURGE",
  65. McKinleyTaggedInstructionsAtRotate = 0x4c, // "TAGGED_INSTRUCTION_AT_ROTATE",
  66. McKinleyInstDispersed = 0x4d, // "INST_DISPERSED",
  67. McKinleySyllablesNotDispersed = 0x4e, // "SYLL_NOT_DISPERSED",
  68. McKinleySyllablesOvercount = 0x4f, // "SYLL_OVERCOUNT",
  69. McKinleyInstNOPRetired = 0x50, // "NOPS_RETIRED",
  70. McKinleyInstPredicateSquashedRetired = 0x51, // "PREDICATE_SQUASHED_RETIRED",
  71. McKinleyDataDebugRegisterFaults = 0x52, // "DATA_DEBUG_REGISTER_FAULTS",
  72. McKinleySerializationEvents = 0x53, // "SERIALIZATION_EVENTS",
  73. McKinleyBranchPathPrediction = 0x54, // "BR_PATH_PREDICTION",
  74. McKinleyFailedSpeculativeCheckLoads = 0x55, // "INST_FAILED_CHKS_RETIRED",
  75. McKinleyAdvancedCheckLoads = 0x56, // "INST_CHKA_LDC_ALAT",
  76. McKinleyFailedAdvancedCheckLoads = 0x57, // "INST_FAILED_CHKA_LDC_ALAT",
  77. McKinleyALATOverflows = 0x58, // "ALAT_CAPACITY_MISS",
  78. McKinleyIA32InstRetired = 0x59, // "IA32_INSTR_RETIRED",
  79. McKinleyBranchMispredictDetail = 0x5b, // "BR_MIS_PREDICT_DETAIL",
  80. McKinleyL1InstStreamPrefetches = 0x5f, // "L0I_STRM_PREFETCHES",
  81. McKinleyL1InstRABFull = 0x60, // "L0I_RAB_FULL",
  82. McKinleyBackEndBranchMispredictDetail = 0x61, // "BE_BR_MISPREDICT_DETAIL",
  83. McKinleyEncodedBranchMispredictDetail = 0x63, // "ENCBR_MISPREDICT_DETAIL",
  84. McKinleyL1InstRABAlmostFull = 0x64, // "L0I_RAB_ALMOST_FULL",
  85. McKinleyL1InstFetchRABHits = 0x65, // "L0I_FETCH_RAB_HIT",
  86. McKinleyL1InstFetchISBHits = 0x66, // "L0I_FETCH_ISB_HIT",
  87. McKinleyL1InstPrefetchStalls = 0x67, // "L0I_PREFETCH_STALL",
  88. McKinleyBranchMispredictDetail2 = 0x68, // "BR_MIS_PREDICT_DETAIL2",
  89. McKinleyL1InstPVABOverflows = 0x69, // "L0I_PVAB_OVERFLOW",
  90. McKinleyBranchPathPrediction2 = 0x6a, // "BR_PATH_PREDICTION2",
  91. McKinleyFrontEndLostBandwidth = 0x70, // "FE_LOST_BW",
  92. McKinleyFrontEndBubbles = 0x71, // "FE_BUBBLE",
  93. McKinleyBackEndLostBandwidth = 0x72, // "BE_LOST_BW_DUE_TO_FE",
  94. McKinleyBackEndIdealLostBandwidth = 0x73, // "IDEAL_BE_LOST_BW_DUE_TO_FE",
  95. McKinleyBusReadCpuLineHits = 0x80, // "BUS_RD_HIT",
  96. McKinleyBusReadCpuModifiedLineHits = 0x81, // "BUS_RD_HITM",
  97. McKinleyBusReadBILCpuModifiedLineHits = 0x82, // "BUS_RD_INVAL_HITM",
  98. McKinleyBusReadBRILorBILCpuModifiedLineHits = 0x83, // "BUS_RD_INVAL_HITM",
  99. McKinleyBusCpuModifiedLineHits = 0x84, // "BUS_HITM",
  100. McKinleyBusCpuModifiedLineHitSnoops = 0x85, // "BUS_SNOOPS_HITM",
  101. McKinleyBusSnoops = 0x86, // "BUS_SNOOPS",
  102. McKinleyBusAll = 0x87, // "BUS_ALL",
  103. McKinleyBusDataCycles = 0x88, // "BUS_ALL",
  104. McKinleyBusMemoryCurrentReads = 0x89, // "BUS_MEMORY_READ_CURRENT",
  105. McKinleyBusMemoryTransactions = 0x8a, // "BUS_MEMORY",
  106. McKinleyBusMemoryReads = 0x8b, // "BUS_MEM_READ",
  107. McKinleyBusMemoryDataReads = 0x8c, // "BUS_RD_DATA",
  108. McKinleyBusMemoryBRPReads = 0x8d, // "BUS_RD_PRTL",
  109. McKinleyBusIA32LockCycles = 0x8e, // "BUS_LOCK_CYCLES",
  110. McKinleyBusSnoopStallCycles = 0x8f, // "BUS_SNOOP_STALL_CYCLES",
  111. McKinleyBusIA32IOTransactions = 0x90, // "BUS_IO",
  112. McKinleyBusIA32IOReads = 0x91, // "BUS_RD_IO",
  113. McKinleyBusMemoryWriteBacks = 0x92, // "BUS_WR_WB",
  114. McKinleyBusIA32LockTransactions = 0x93, // "BUS_LOCK",
  115. McKinleyBusMemoryReadsOutstandingHi = 0x94, // "BUS_MEM_READ_OUT_HI",
  116. McKinleyBusMemoryReadsOutstandingLow = 0x95, // "BUS_MEM_READ_OUT_LOW",
  117. McKinleyBusSnoopResponses = 0x96, // "BUS_SNOOPQ_REQ",
  118. McKinleyBusLiveInOrderRequestsLow = 0x97, // "BUS_IOQ_LIVE_REQ_LO",
  119. McKinleyBusLiveInOrderRequestsHi = 0x98, // "BUS_IOQ_LIVE_REQ_HI",
  120. McKinleyBusLiveDeferredRequestsLow = 0x99, // "BUS_OOO_LIVE_REQ_LO",
  121. McKinleyBusLiveDeferredRequestsHi = 0x9a, // "BUS_OOO_LIVE_REQ_HI",
  122. McKinleyBusLiveQueuedReadRequestsLow = 0x9b, // "BUS_BRQ_LIVE_REQ_LO",
  123. McKinleyBusLiveQueuedReadRequestsHi = 0x9c, // "BUS_BRQ_LIVE_REQ_HI",
  124. McKinleyBusRequestQueueInserts = 0x9d, // "BUS_BRQ_REQ_INSERTED",
  125. McKinleyExternDPPins0To3Asserted = 0x9e, // "EXTERN_DP_PINS_0_TO_3",
  126. McKinleyExternDPPins4To5Asserted = 0x9f, // "EXTERN_DP_PINS_4_TO_5",
  127. McKinleyL2OZQCancels0 = 0xa0, // "L1_OZQ_CANCELS0",
  128. McKinleyL2InstFetchCancels = 0xa1, // "L1_IFET_CANCELS",
  129. McKinleyL2OZQAcquires = 0xa2, // "L1_OZQ_ACQUIRE",
  130. McKinleyL2OZQReleases = 0xa3, // "L1_OZQ_ACQUIRE",
  131. McKinleyL2InstFetchCancelsByBypass = 0xa5, // "L1_IFET_CANCELS",
  132. McKinleyL2OZQAcquiresAliasA6 = 0xa6, // "L1_OZQ_ACQUIRE",
  133. McKinleyL2OZQCancels2 = 0xa8, // "L1_OZQ_CANCELS2",
  134. McKinleyL2InstFetchCancelsByDataRead = 0xa9, // "L1_IFET_CANCELS",
  135. McKinleyL2OZQAcquiresAliasAA = 0xaa, // "L1_OZQ_ACQUIRE",
  136. McKinleyL2OZQCancels1 = 0xac, // "L1_OZQ_CANCELS1",
  137. McKinleyL2InstFetchCancelsByStFillWb = 0xad, // "L1_IFET_CANCELS",
  138. McKinleyL2OZQAcquiresAliasAE = 0xae, // "L1_OZQ_ACQUIRE",
  139. McKinleyL2CanceledL3Accesses = 0xb0, // "L1_L2ACCESS_CANCEL",
  140. McKinleyL2References = 0xb1, // "L1_REFERENCES",
  141. McKinleyL2DataReferences = 0xb2, // "L1_DATA_REFERENCES",
  142. McKinleyL2DataReads = 0xb2, // "L1_DATA_REFERENCES.u[=xx01]",
  143. McKinleyL2DataWrites = 0xb2, // "L1_DATA_REFERENCES.u[=xx10]",
  144. McKinleyL2TaggedAccesses = 0xb3, // "TAGGED_L1_PORT",
  145. McKinleyL2ForcedRecirculatedOperations = 0xb4, // "L1_FORCE_RECIRC",
  146. McKinleyL2IssuedRecirculatedOZQAccesses = 0xb5, // "L1_ISSUED_RECIRC_OZQ_ACC",
  147. McKinleyL2SuccessfulRecirculatedOZQAccesses = 0xb6, // "L1_GOT_RECIRC_OZQ_ACC",
  148. McKinleyL2SynthesizedProbes = 0xb7, // "L1_SYNTH_PROBES",
  149. McKinleyL2Bypasses = 0xb8, // "L1_BYPASS",
  150. McKinleyL2IssuedOperations = 0xb8, // "L1_OPS_ISSUED",
  151. McKinleyL2BadLinesSelected = 0xb9, // "L1_BAD_LINES_SELECTED",
  152. McKinleyL2IssuedRecirculatedInstFetches = 0xb9, // "L1_ISSUED_RECIRC_IFETCH",
  153. McKinleyL2StoreSharedLineHits = 0xba, // "L1_STORE_HIT_SHARED",
  154. McKinleyL2ReceivedRecirculatedInstFetches = 0xba, // "L1_GOT_RECIRC_IFETCH",
  155. McKinleyL2TaggedDataReturns = 0xbb, // "TAGGED_L1_DATA_RETURN_PORT",
  156. McKinleyL2DataOrderingCzarQueueFull = 0xbc, // "L1_OZQ_FULL",
  157. McKinleyL2DataOrderingCzarDataBufferFull = 0xbd, // "L1_OZDB_FULL",
  158. McKinleyL2DataVictimBufferFull = 0xbe, // "L1_VICTIMB_FULL",
  159. McKinleyL2DataFillBufferFull = 0xbf, // "L1_FILLB_FULL",
  160. McKinleyL1DataTLBTransfersSet0 = 0xc0, // "L0DTLB_TRANSFER",
  161. McKinleyDataTLBMissesSet0 = 0xc1, // "DTLB_MISSES",
  162. McKinleyL1DataReadsSet0 = 0xc2, // "L0D_READS",
  163. McKinleyL1DataReadsSet1 = 0xc4, // "L0D_READS",
  164. McKinleyDataReferencesSet1 = 0xc5, // "DATA_REFERENCES",
  165. McKinleyDataTLBReferencesSet1 = 0xc5, // "DTLB_REFERENCES",
  166. McKinleyL1DataReadMissesSet1 = 0xc7, // "L0D_READ_MISSES",
  167. McKinleyL1DataReadMissesByRSEFillsSet1 = 0xc7, // "L0D_READ_MISSES",
  168. McKinleyDataEAREvents = 0xc8, // "DATA_EAR_EVENTS",
  169. McKinleyDataTLBHPWInserts = 0xc9, // "DTLB_INSERTS_HPW",
  170. McKinleyBackEndL0DAndFPUBubbles = 0xca, // "BE_L0D_FPU_BUBBLE",
  171. McKinleyL2Misses = 0x6b, // "L1_MISSES",
  172. McKinleyDataDebugRegisterMatches = 0xc6, // "DATA_DEBUG_REGISTER_MATCHES",
  173. McKinleyRetiredLoads = 0xcd, // "LOADS_RETIRED",
  174. McKinleyRetiredMisalignedLoads = 0xce, // "MISALIGNED_LOADS_RETIRED",
  175. McKinleyRetiredUncacheableLoads = 0xcf, // "UC_LOADS_RETIRED",
  176. McKinleyRetiredUncacheableStores = 0xd0, // "UC_STORES_RETIRED",
  177. McKinleyRetiredStores = 0xd1, // "STORES_RETIRED",
  178. McKinleyRetiredMisalignedStores = 0xd2, // "MISALIGNED_STORES_RETIRED",
  179. McKinleyL1DataPortTaggedReturnsSet5 = 0xd5, // "TAGGED_L0_DATA_RETURN_PORT",
  180. McKinleyL1DataPortTaggedAccessesSet5 = 0xd6, // "TAGGED_L0D_PORT",
  181. McKinleyL3References = 0xdb, // "L2_REFERENCES",
  182. McKinleyL3Misses = 0xdc, // "L2_MISSES",
  183. McKinleyL3Reads = 0xdd, // "L2_READS",
  184. McKinleyL3Writes = 0xde, // "L2_WRITES",
  185. McKinleyL3ValidReplacedLines = 0xdf, // "L2_LINES_REPLACED",
  186. } MCKINLEY_MONITOR_EVENT;
  187. //
  188. // McKinley Derived Events:
  189. //
  190. // Assumption: McKinleyDerivedEventMinimum > McKinleyMonitoredEventMaximum.
  191. //
  192. // Implementation Status legend specified as: S:FIV where
  193. // - F: verified Formula or X for non-verified
  194. // - I: Implemented or X for non-implemented
  195. // - V: derived event validity verified or X for non-verified
  196. //
  197. typedef enum _MCKINLEY_DERIVED_EVENT { // Implementation status = McKinley PMU ERS Event Name = Formula
  198. McKinleyDerivedEventMinimum = 0x100, /* > Maximum of McKinley Monitored Event */
  199. McKinleyRSEStallCycles = McKinleyDerivedEventMinimum, // S:XXX - (McKinleyMemoryStallCycles - McKinleyDataStallAccessCycles)
  200. McKinleyIssueLimitStallCycles, // S:XXX = XXX = (McKinleyExecStallCycles - McKinleyExecLatencyStallCycles)
  201. McKinleyTakenBranchStallCycles, // S:XXX = (McKinleyBranchStallCycles - McKinleyBranchMispredictStallCycles)
  202. McKinleyFetchWindowStallCycles, // S:XXX = (McKinleyInstFetchStallCycles - McKinleyInstAccessStallCycles)
  203. McKinleyIA64InstPerCycle, // S:XXX = (IA64_INST_RETIRED.u / CPU_CYCLES[IA64])
  204. McKinleyIA32InstPerCycle, // S:XXX = (IA32_INSTR_RETIRED / CPU_CYCLES[IA32])
  205. McKinleyAvgIA64InstPerTransition, // S:XXX = (IA64_INST_RETIRED.u / (ISA_TRANSITIONS * 2))
  206. McKinleyAvgIA32InstPerTransition, // S:XXX = (IA32_INSTR_RETIRED / (ISA_TRANSITIONS * 2))
  207. McKinleyAvgIA64CyclesPerTransition, // S:XXX = (CPU_CYCLES[IA64] / (ISA_TRANSITIONS * 2))
  208. McKinleyAvgIA32CyclesPerTransition, // S:XXX = (CPU_CYCLES[IA32] / (ISA_TRANSITIONS * 2))
  209. McKinleyL1InstReferences, // S:XXX = LOI_REFERENCES = L0I_READS + L0I_IPREFETCHES
  210. McKinleyL1InstMissRatio, // S:XXX = (L1I_MISSES / McKinleyL1InstReferences)
  211. McKinleyL1DataReadMissRatio, // S:XXX = (L1D_READS_MISSES_RETIRED / L1D_READS_RETIRED)
  212. McKinleyL2MissRatio, // S:XXX = (L2_MISSES / L2_REFERENCES)
  213. McKinleyL2DataMissRatio, // S:XXX = (L3_DATA_REFERENCES / L2_DATA_REFERENCES)
  214. McKinleyL2InstMissRatio, // S:XXX = (L3_DATA_REFERENCES / L2_DATA_REFERENCES)
  215. McKinleyL2DataReadMissRatio, // S:XXX = (L3_LOAD_REFERENCES.u / L2_DATA_READS.u)
  216. McKinleyL2DataWriteMissRatio, // S:XXX = (L3_STORE_REFERENCES.u / L2_DATA_WRITES.u)
  217. McKinleyL2InstFetchRatio, // S:XXX = (L1I_MISSES / L2_REFERENCES)
  218. McKinleyL2DataRatio, // S:XXX = (L2_DATA_REFERENCES / L2_REFERENCES)
  219. McKinleyL3MissRatio, // S:XXX = (L3_MISSES / L2_MISSES)
  220. McKinleyL3DataMissRatio, // S:XXX = ((L3_LOAD_MISSES.u + L3_STORE_MISSES.u) / L3_REFERENCES.d)
  221. McKinleyL3InstMissRatio, // S:XXX = (L3_INST_MISSES.u / L3_INST_REFERENCES.u)
  222. McKinleyL3DataReadMissRatio, // S:XXX = (L3_LOAD_REFERENCES.u / L3_DATA_REFERENCES.d)
  223. McKinleyL3DataRatio, // S:XXX = (L3_DATA_REFERENCES.d / L3_REFERENCES)
  224. McKinleyInstReferences, // S:XXX = (L1I_READS)
  225. McKinleyL0DTLBMissRatio, // S:FXX = L0DTLB_MISS_RATIO = (L0DTLB_MISSES / L0D_READS)
  226. McKinleyDTLBMissRatio, // S:FXX = DTLB_MISS_RATIO = (DTLB_MISSES / DATA_REFERENCES)
  227. McKinleyDataTCMissRatio, // S:XXX = (DTC_MISSES / DATA_REFERENCES_RETIRED)
  228. McKinleyInstTLBEAREvents, // S:XXX = (INSTRUCTION_EAR_EVENTS)
  229. McKinleyDataTLBEAREvents, // S:XXX = (DATA_EAR_EVENTS)
  230. McKinleyControlSpeculationMissRatio, // S:XXX = (INST_FAILED_CHKS_RETIRED / IA64_TAGGED_INSTRS_RETIRED[chk.s])
  231. McKinleyDataSpeculationMissRatio, // S:XXX = (ALAT_INST_FAILED_CHKA_LDC / ALAT_INST_CHKA_LDC)
  232. McKinleyALATCapacityMissRatio, // S:XXX = (ALAT_CAPACITY_MISS / IA64_TAGGED_INSTRS_RETIRED[ld.sa,ld.a,ldfp.a,ldfp.sa])
  233. McKinleyL1DataWayMispredicts, // S:XXX = (EventCode: 0x33 / Umask: 0x2)
  234. McKinleyL2InstReferences, // S:FXX = L1_INST_REFERENCES = (L0I_MISSES + L1_INST_PREFETCHES)
  235. McKinleyInstFetches, // S:XXX = (L1I_MISSES)
  236. McKinleyL3InstReferences, // S:XXX = (PMC.umask{17:16}HIT/MISS/ALL + PMC.umask{19:18})
  237. McKinleyL3InstMisses, // S:XXX = (PMC.umask{17:16}HIT/MISS/ALL + PMC.umask{19:18})
  238. McKinleyL3InstHits, // S:XXX = (PMC.umask{17:16}HIT/MISS/ALL + PMC.umask{19:18})
  239. McKinleyL3DataReferences, // S:FXX = L2_DATA_REFERENCES = (L2_REFERENCES - L2_INST_REFERENCES)
  240. McKinleyL3ReadReferences, // S:XXX = (PMC.umask{17:16}HIT/MISS/ALL + PMC.umask{19:18})
  241. McKinleyL2WriteBackReferences, // S:XXX = (PMC.umask{17:16}HIT/MISS/ALL + PMC.umask{19:18})
  242. McKinleyL2WriteBackMisses, // S:XXX = (PMC.umask{17:16}HIT/MISS/ALL + PMC.umask{19:18})
  243. McKinleyL2WriteBackHits, // S:XXX = (PMC.umask{17:16}HIT/MISS/ALL + PMC.umask{19:18})
  244. McKinleyL2WriteReferences, // S:XXX = (PMC.umask{17:16}HIT/MISS/ALL + PMC.umask{19:18})
  245. McKinleyL2WriteMisses, // S:XXX = (PMC.umask{17:16}HIT/MISS/ALL + PMC.umask{19:18})
  246. McKinleyL2WriteHits, // S:XXX = (PMC.umask{17:16}HIT/MISS/ALL + PMC.umask{19:18})
  247. McKinleyBranchInstructions, // S:XXX = (TAGGED_INSTR + opcode)
  248. McKinleyIntegerInstructions, // S:XXX = (TAGGED_INSTR + opcode)
  249. McKinleyL1DataMisses, // S:XXX =
  250. McKinleyISBLinesIn, // S:FXX = ISB_LINES_IN = (ISB_BUNPAIRS_IN/4)
  251. McKinleyBusMemoryCodeReads, // S:FXX = BUS_RD_INSTRUCTIONS = (BUS_RD_ALL - BUS_RD_DATA)
  252. McKinleyBusReadBILMemoryHits, // S:FXX = BUS_RD_INVAL_MEMORY = (BUS_RD_INVAL - BUS_RD_INVAL_HITM)
  253. McKinleyBusReadBRILCpuModifiedLineHits, // S:FXX = BUS_RD_INVAL_BST_HIM = (BUS_RD_INVAL_ALL_HITM - BUS_RD_INVAL_HITM)
  254. McKinleyBusReadBRILMemoryHits, // S:FXX = BUS_RD_INVAL_BST_MEMORY = (BUS_RD_INVAL_BST - BUS_RD_INVAL_BST_HITM)
  255. McKinleyBusMemoryReadsOutstanding, // S:FXX = BUS_MEM_READ_OUTSTANDING = (BUS_MEM_READ_OUT_HI*8 + BUS_MEM_READ_OUT_LOW)
  256. McKinleyBusLiveInOrderRequests, // S:FXX = BUS_IOQ_LIVE_REQ = (BUS_IOQ_LIVE_REQ_HI*4 + BUS_IOQ_LIVE_REQ_LO)
  257. McKinleyBusLiveDeferredRequests, // S:FXX = BUS_OOO_LIVE_REQ = (BUS_OOO_LIVE_REQ_HI[4:3] | BUS_OOO_LIVE_REQ_LO[2:0])
  258. McKinleyBusLiveQueuedReadRequests, // S:FXX = BUS_BRQ_LIVE_REQ = (BUS_BRQ_LIVE_REQ_HI[4:3] | BUS_BRQ_LIVE_REQ_LO[2:0])
  259. McKinleyRSEDirtyRegs, // S:FXX = RSE_DIRTY_REGS = (64*RSE_DIRTY_REGS0[6]+8*RSE_DIRTY_REGS1[5:3]+REG_DIRTY_REGS2[2:0])
  260. McKinleyRSECurrentRegs, // S:FXX = RSE_CURRENT_REGS = (64*RSE_CURRENT_REGS0[6]+8*RSE_DIRTY_REGS1[5:3]+REG_DIRTY_REGS2[2:0])
  261. } MCKINLEY_DERIVED_EVENT;
  262. typedef enum _KPROFILE_MCKINLEY_SOURCE {
  263. //
  264. // Profile McKinley Monitored Events:
  265. //
  266. ProfileMcKinleyMonitoredEventMinimum = ProfileMaximum + 0x1,
  267. ProfileMcKinleyBackEndBubbles = ProfileMcKinleyMonitoredEventMinimum,
  268. ProfileMcKinleyBackEndRSEBubbles,
  269. ProfileMcKinleyBackEndEXEBubbles,
  270. ProfileMcKinleyBackEndL0DAndFPUBubbles,
  271. ProfileMcKinleyBackEndFlushBubbles,
  272. ProfileMcKinleyFrontEndBubbles,
  273. ProfileMcKinleyFrontEndLostBandwidth,
  274. ProfileMcKinleyBackEndLostBandwidth,
  275. ProfileMcKinleyBackEndIdealLostBandwidth,
  276. ProfileMcKinleyFPTrueSirStalls,
  277. ProfileMcKinleyFPFalseSirStalls,
  278. ProfileMcKinleyFPFailedFchkf,
  279. ProfileMcKinleyTaggedInstRetired,
  280. ProfileMcKinleyInstRetired,
  281. ProfileMcKinleyFPOperationsRetired,
  282. ProfileMcKinleyFPFlushesToZero,
  283. ProfileMcKinleyBranchPathPrediction,
  284. ProfileMcKinleyBranchPathPrediction2,
  285. ProfileMcKinleyBranchMispredictDetail,
  286. ProfileMcKinleyBranchMispredictDetail2,
  287. ProfileMcKinleyBranchEventsWithEAR,
  288. ProfileMcKinleyBackEndBranchMispredictDetail,
  289. ProfileMcKinleyEncodedBranchMispredictDetail,
  290. ProfileMcKinleyCpuCycles,
  291. ProfileMcKinleyISATransitions,
  292. ProfileMcKinleyIA32InstRetired,
  293. ProfileMcKinleyL1InstReads,
  294. ProfileMcKinleyL1InstFills,
  295. ProfileMcKinleyL1InstMisses,
  296. ProfileMcKinleyL1InstEAREvents,
  297. ProfileMcKinleyL1InstPrefetches,
  298. ProfileMcKinleyL1InstStreamPrefetches,
  299. ProfileMcKinleyL2InstPrefetches,
  300. ProfileMcKinleyISBBundlePairs,
  301. ProfileMcKinleyL1InstFetchRABHits,
  302. ProfileMcKinleyL1InstFetchISBHits,
  303. ProfileMcKinleyL1InstPrefetchStalls,
  304. ProfileMcKinleyL1InstRABAlmostFull,
  305. ProfileMcKinleyL1InstRABFull,
  306. ProfileMcKinleyL1InstSnoops,
  307. ProfileMcKinleyL1InstPurges,
  308. ProfileMcKinleyL1InstPVABOverflows,
  309. ProfileMcKinleyL1DataReadsSet0,
  310. ProfileMcKinleyL1DataTLBTransfersSet0,
  311. ProfileMcKinleyDataTLBMissesSet0,
  312. ProfileMcKinleyDataReferencesSet1,
  313. ProfileMcKinleyL1DataReadsSet1,
  314. ProfileMcKinleyL1DataReadMissesSet1,
  315. ProfileMcKinleyL1DataReadMissesByRSEFillsSet1,
  316. ProfileMcKinleyL1DataPortTaggedAccessesSet5,
  317. ProfileMcKinleyL1DataPortTaggedReturnsSet5,
  318. ProfileMcKinleyVHPTDataReferences,
  319. ProfileMcKinleyDataEAREvents,
  320. ProfileMcKinleyL2OZQCancels0,
  321. ProfileMcKinleyL2OZQCancels1,
  322. ProfileMcKinleyL2OZQCancels2,
  323. ProfileMcKinleyL2InstFetchCancels,
  324. ProfileMcKinleyL2InstFetchCancelsByBypass,
  325. ProfileMcKinleyL2InstFetchCancelsByDataRead,
  326. ProfileMcKinleyL2InstFetchCancelsByStFillWb,
  327. ProfileMcKinleyL2OZQAcquires,
  328. ProfileMcKinleyL2OZQReleases,
  329. ProfileMcKinleyL2CanceledL3Accesses,
  330. ProfileMcKinleyL2References,
  331. ProfileMcKinleyL2DataReferences,
  332. ProfileMcKinleyL2DataReads,
  333. ProfileMcKinleyL2DataWrites,
  334. ProfileMcKinleyL2TaggedAccesses,
  335. ProfileMcKinleyL2ForcedRecirculatedOperations,
  336. ProfileMcKinleyL2IssuedRecirculatedOZQAccesses,
  337. ProfileMcKinleyL2SuccessfulRecirculatedOZQAccesses,
  338. ProfileMcKinleyL2SynthesizedProbes,
  339. ProfileMcKinleyL2DataBypasses1,
  340. ProfileMcKinleyL2DataBypasses2,
  341. ProfileMcKinleyL3DataBypasses1,
  342. ProfileMcKinleyL2InstBypasses1,
  343. ProfileMcKinleyL2InstBypasses2,
  344. ProfileMcKinleyL3InstBypasses1,
  345. ProfileMcKinleyL2BadLinesSelected,
  346. ProfileMcKinleyL2StoreSharedLineHits,
  347. ProfileMcKinleyL2IntegerLoads,
  348. ProfileMcKinleyL2FloatingPointLoads,
  349. ProfileMcKinleyL2ReadModifyWriteStores,
  350. ProfileMcKinleyL2NonReadModifyWriteStores,
  351. ProfileMcKinleyL2NonLoadsNonStores,
  352. ProfileMcKinleyL2IssuedRecirculatedInstFetches,
  353. ProfileMcKinleyL2ReceivedRecirculatedInstFetches,
  354. ProfileMcKinleyL2TaggedDataReturns,
  355. ProfileMcKinleyL2DataFillBufferFull,
  356. ProfileMcKinleyL2DataVictimBufferFull,
  357. ProfileMcKinleyL2DataOrderingCzarDataBufferFull,
  358. ProfileMcKinleyL2DataOrderingCzarQueueFull,
  359. ProfileMcKinleyL2Misses,
  360. ProfileMcKinleyL3References,
  361. ProfileMcKinleyL3Misses,
  362. ProfileMcKinleyL3Reads,
  363. ProfileMcKinleyL3ReadHits,
  364. ProfileMcKinleyL3ReadMisses,
  365. ProfileMcKinleyL3InstFetchReferences,
  366. ProfileMcKinleyL3InstFetchHits,
  367. ProfileMcKinleyL3InstFetchMisses,
  368. ProfileMcKinleyL3LoadReferences,
  369. ProfileMcKinleyL3LoadHits,
  370. ProfileMcKinleyL3LoadMisses,
  371. ProfileMcKinleyL3Writes,
  372. ProfileMcKinleyL3WriteHits,
  373. ProfileMcKinleyL3WriteMisses,
  374. ProfileMcKinleyL3StoreReferences,
  375. ProfileMcKinleyL3StoreHits,
  376. ProfileMcKinleyL3StoreMisses,
  377. ProfileMcKinleyL3WriteBackReferences,
  378. ProfileMcKinleyL3WriteBackHits,
  379. ProfileMcKinleyL3WriteBackMisses,
  380. ProfileMcKinleyL3ValidReplacedLines,
  381. ProfileMcKinleyDataDebugRegisterMatches,
  382. ProfileMcKinleyCodeDebugRegisterMatches,
  383. ProfileMcKinleyDataDebugRegisterFaults,
  384. ProfileMcKinleyCpuCPLChanges,
  385. ProfileMcKinleySerializationEvents,
  386. ProfileMcKinleyExternDPPins0To3Asserted,
  387. ProfileMcKinleyExternDPPins4To5Asserted,
  388. ProfileMcKinleyInstTLBReferences,
  389. ProfileMcKinleyInstTLBDemandFetchMisses,
  390. ProfileMcKinleyL1InstTLBDemandFetchMisses,
  391. ProfileMcKinleyL2InstTLBDemandFetchMisses,
  392. ProfileMcKinleyInstTLBHPWInserts,
  393. ProfileMcKinleyDataTLBReferencesSet1,
  394. ProfileMcKinleyDataTLBHPWInserts,
  395. ProfileMcKinleyDataTLBHPWRetiredInserts,
  396. ProfileMcKinleyBusAllTransactions,
  397. ProfileMcKinleyBusSelfTransactions,
  398. ProfileMcKinleyBusNonPriorityAgentTransactions,
  399. ProfileMcKinleyBusMemoryTransactions,
  400. ProfileMcKinleyBusMemoryBurstTransactions,
  401. ProfileMcKinleyBusMemoryPartialTransactions,
  402. ProfileMcKinleyBusMemoryReads,
  403. ProfileMcKinleyBusMemoryBRLTransactions,
  404. ProfileMcKinleyBusMemoryBILTransactions,
  405. ProfileMcKinleyBusMemoryBRILTransactions,
  406. ProfileMcKinleyBusMemoryDataReads,
  407. ProfileMcKinleyBusMemoryDataReadsBySelf,
  408. ProfileMcKinleyBusMemoryDataReadsByNonPriorityAgent,
  409. ProfileMcKinleyBusMemoryBRPReads,
  410. ProfileMcKinleyBusMemoryBRPReadsBySelf,
  411. ProfileMcKinleyBusMemoryBRPReadsByNonPriorityAgent,
  412. ProfileMcKinleyBusReadCpuLineHits,
  413. ProfileMcKinleyBusReadCpuModifiedLineHits,
  414. ProfileMcKinleyBusReadBILCpuModifiedLineHits,
  415. ProfileMcKinleyBusReadBRILorBILCpuModifiedLineHits,
  416. ProfileMcKinleyBusCpuModifiedLineHits,
  417. ProfileMcKinleyBusMemoryWriteBacks,
  418. ProfileMcKinleyBusMemoryWriteBacksBySelf,
  419. ProfileMcKinleyBusMemoryWriteBacksByNonPriorityAgent,
  420. ProfileMcKinleyBusMemoryBurstWriteBacks,
  421. ProfileMcKinleyBusMemoryBurstWriteBacksBySelf,
  422. ProfileMcKinleyBusMemoryBurstWriteBacksByNonPriorityAgent,
  423. ProfileMcKinleyBusMemoryZeroByteWriteBacks,
  424. ProfileMcKinleyBusMemoryZeroByteWriteBacksBySelf,
  425. ProfileMcKinleyBusMemoryCurrentReads,
  426. ProfileMcKinleyBusMemoryCurrentReadsByNonPriorityAgent,
  427. ProfileMcKinleyBusCpuModifiedLineHitSnoops,
  428. ProfileMcKinleyBusCpuModifiedLineHitSnoopsBySelf,
  429. ProfileMcKinleyBusSnoops,
  430. ProfileMcKinleyBusSnoopsBySelf,
  431. ProfileMcKinleyBusSnoopsByNonPriorityAgent,
  432. ProfileMcKinleyBusSnoopStallCycles,
  433. ProfileMcKinleyBusSnoopStallCyclesBySelf,
  434. ProfileMcKinleyBusDataCycles,
  435. ProfileMcKinleyBusSnoopResponses,
  436. ProfileMcKinleyBusRequestQueueInserts,
  437. ProfileMcKinleyBusIA32IOTransactions,
  438. ProfileMcKinleyBusIA32IOTransactionsBySelf,
  439. ProfileMcKinleyBusIA32IOTransactionsByNonPriorityAgent,
  440. ProfileMcKinleyBusIA32IOReads,
  441. ProfileMcKinleyBusIA32IOReadsBySelf,
  442. ProfileMcKinleyBusIA32IOReadsByNonPriorityAgent,
  443. ProfileMcKinleyBusIA32LockTransactions,
  444. ProfileMcKinleyBusIA32LockTransactionsBySelf,
  445. ProfileMcKinleyBusIA32LockCycles,
  446. ProfileMcKinleyBusIA32LockCyclesBySelf,
  447. ProfileMcKinleyRSEAccesses,
  448. ProfileMcKinleyRSELoads,
  449. ProfileMcKinleyRSEStores,
  450. ProfileMcKinleyRSELoadUnderflowCycles,
  451. ProfileMcKinleyRSEOperations,
  452. ProfileMcKinleyTaggedInstructionsAtRotate,
  453. ProfileMcKinleyInstDispersed,
  454. ProfileMcKinleyDispersalCyclesStalled,
  455. ProfileMcKinleySyllablesOvercount,
  456. ProfileMcKinleySyllablesNotDispersed,
  457. ProfileMcKinleyInstNOPRetired,
  458. ProfileMcKinleyInstPredicateSquashedRetired,
  459. ProfileMcKinleyFailedSpeculativeCheckLoads,
  460. ProfileMcKinleyAdvancedCheckLoads,
  461. ProfileMcKinleyFailedAdvancedCheckLoads,
  462. ProfileMcKinleyALATOverflows,
  463. ProfileMcKinleyRetiredLoads,
  464. ProfileMcKinleyRetiredStores,
  465. ProfileMcKinleyRetiredUncacheableLoads,
  466. ProfileMcKinleyRetiredUncacheableStores,
  467. ProfileMcKinleyRetiredMisalignedLoads,
  468. ProfileMcKinleyRetiredMisalignedStores,
  469. //
  470. // Profile McKinley Derived Events:
  471. //
  472. ProfileMcKinleyDerivedEventMinimum,
  473. ProfileMcKinleyRSEStallCycles = ProfileMcKinleyDerivedEventMinimum,
  474. ProfileMcKinleyIssueLimitStallCycles,
  475. ProfileMcKinleyTakenBranchStallCycles,
  476. ProfileMcKinleyFetchWindowStallCycles,
  477. ProfileMcKinleyIA64InstPerCycle,
  478. ProfileMcKinleyIA32InstPerCycle,
  479. ProfileMcKinleyAvgIA64InstPerTransition,
  480. ProfileMcKinleyAvgIA32InstPerTransition,
  481. ProfileMcKinleyAvgIA64CyclesPerTransition,
  482. ProfileMcKinleyAvgIA32CyclesPerTransition,
  483. ProfileMcKinleyL1InstReferences,
  484. ProfileMcKinleyL1InstMissRatio,
  485. ProfileMcKinleyL1DataReadMissRatio,
  486. ProfileMcKinleyL2MissRatio,
  487. ProfileMcKinleyL2DataMissRatio,
  488. ProfileMcKinleyL2InstMissRatio,
  489. ProfileMcKinleyL2DataReadMissRatio,
  490. ProfileMcKinleyL2DataWriteMissRatio,
  491. ProfileMcKinleyL2InstFetchRatio,
  492. ProfileMcKinleyL2DataRatio,
  493. ProfileMcKinleyL3MissRatio,
  494. ProfileMcKinleyL3DataMissRatio,
  495. ProfileMcKinleyL3InstMissRatio,
  496. ProfileMcKinleyL3DataReadMissRatio,
  497. ProfileMcKinleyL3DataRatio,
  498. ProfileMcKinleyInstReferences,
  499. ProfileMcKinleyL0DTLBMissRatio,
  500. ProfileMcKinleyDTLBMissRatio,
  501. ProfileMcKinleyDataTCMissRatio,
  502. ProfileMcKinleyInstTLBEAREvents,
  503. ProfileMcKinleyDataTLBEAREvents,
  504. ProfileMcKinleyControlSpeculationMissRatio,
  505. ProfileMcKinleyDataSpeculationMissRatio,
  506. ProfileMcKinleyALATCapacityMissRatio,
  507. ProfileMcKinleyL1DataWayMispredicts,
  508. ProfileMcKinleyL2InstReferences,
  509. ProfileMcKinleyInstFetches,
  510. ProfileMcKinleyL3InstReferences,
  511. ProfileMcKinleyL3InstMisses,
  512. ProfileMcKinleyL3InstHits,
  513. ProfileMcKinleyL3DataReferences,
  514. ProfileMcKinleyL3ReadReferences,
  515. ProfileMcKinleyL2WriteBackReferences,
  516. ProfileMcKinleyL2WriteBackMisses,
  517. ProfileMcKinleyL2WriteBackHits,
  518. ProfileMcKinleyL2WriteReferences,
  519. ProfileMcKinleyL2WriteMisses,
  520. ProfileMcKinleyL2WriteHits,
  521. ProfileMcKinleyBranchInstructions,
  522. ProfileMcKinleyIntegerInstructions,
  523. ProfileMcKinleyL1DataMisses,
  524. ProfileMcKinleyISBLinesIn,
  525. ProfileMcKinleyBusMemoryCodeReads,
  526. ProfileMcKinleyBusReadBILMemoryHits,
  527. ProfileMcKinleyBusReadBRILCpuModifiedLineHits,
  528. ProfileMcKinleyBusReadBRILMemoryHits,
  529. ProfileMcKinleyBusMemoryReadsOutstanding,
  530. ProfileMcKinleyBusLiveInOrderRequests,
  531. ProfileMcKinleyBusLiveDeferredRequests,
  532. ProfileMcKinleyBusLiveQueuedReadRequests,
  533. ProfileMcKinleyRSEDirtyRegs,
  534. ProfileMcKinleyRSECurrentRegs,
  535. ProfileMcKinleyMaximum
  536. } KPROFILE_MCKINLEY_SOURCE, *PKPROFILE_MCKINLEY_SOURCE;
  537. #define PROFILE_TIME_MCKINLEY_DEFAULT_INTERVAL (10 * 1000 * 10) // 10 milliseconds
  538. #endif /* MCKINLEY_H_INCLUDED */