162306a36Sopenharmony_ci[
262306a36Sopenharmony_ci  {
362306a36Sopenharmony_ci    "MetricName": "total_dispatch_slots",
462306a36Sopenharmony_ci    "BriefDescription": "Total dispatch slots (upto 6 instructions can be dispatched in each cycle).",
562306a36Sopenharmony_ci    "MetricExpr": "6 * ls_not_halted_cyc"
662306a36Sopenharmony_ci  },
762306a36Sopenharmony_ci  {
862306a36Sopenharmony_ci    "MetricName": "frontend_bound",
962306a36Sopenharmony_ci    "BriefDescription": "Fraction of dispatch slots that remained unused because the frontend did not supply enough instructions/ops.",
1062306a36Sopenharmony_ci    "MetricExpr": "d_ratio(de_no_dispatch_per_slot.no_ops_from_frontend, total_dispatch_slots)",
1162306a36Sopenharmony_ci    "MetricGroup": "PipelineL1",
1262306a36Sopenharmony_ci    "ScaleUnit": "100%"
1362306a36Sopenharmony_ci  },
1462306a36Sopenharmony_ci  {
1562306a36Sopenharmony_ci    "MetricName": "bad_speculation",
1662306a36Sopenharmony_ci    "BriefDescription": "Fraction of dispatched ops that did not retire.",
1762306a36Sopenharmony_ci    "MetricExpr": "d_ratio(de_src_op_disp.all - ex_ret_ops, total_dispatch_slots)",
1862306a36Sopenharmony_ci    "MetricGroup": "PipelineL1",
1962306a36Sopenharmony_ci    "ScaleUnit": "100%"
2062306a36Sopenharmony_ci  },
2162306a36Sopenharmony_ci  {
2262306a36Sopenharmony_ci    "MetricName": "backend_bound",
2362306a36Sopenharmony_ci    "BriefDescription": "Fraction of dispatch slots that remained unused because of backend stalls.",
2462306a36Sopenharmony_ci    "MetricExpr": "d_ratio(de_no_dispatch_per_slot.backend_stalls, total_dispatch_slots)",
2562306a36Sopenharmony_ci    "MetricGroup": "PipelineL1",
2662306a36Sopenharmony_ci    "ScaleUnit": "100%"
2762306a36Sopenharmony_ci  },
2862306a36Sopenharmony_ci  {
2962306a36Sopenharmony_ci    "MetricName": "smt_contention",
3062306a36Sopenharmony_ci    "BriefDescription": "Fraction of dispatch slots that remained unused because the other thread was selected.",
3162306a36Sopenharmony_ci    "MetricExpr": "d_ratio(de_no_dispatch_per_slot.smt_contention, total_dispatch_slots)",
3262306a36Sopenharmony_ci    "MetricGroup": "PipelineL1",
3362306a36Sopenharmony_ci    "ScaleUnit": "100%"
3462306a36Sopenharmony_ci  },
3562306a36Sopenharmony_ci  {
3662306a36Sopenharmony_ci    "MetricName": "retiring",
3762306a36Sopenharmony_ci    "BriefDescription": "Fraction of dispatch slots used by ops that retired.",
3862306a36Sopenharmony_ci    "MetricExpr": "d_ratio(ex_ret_ops, total_dispatch_slots)",
3962306a36Sopenharmony_ci    "MetricGroup": "PipelineL1",
4062306a36Sopenharmony_ci    "ScaleUnit": "100%"
4162306a36Sopenharmony_ci  },
4262306a36Sopenharmony_ci  {
4362306a36Sopenharmony_ci    "MetricName": "frontend_bound_latency",
4462306a36Sopenharmony_ci    "BriefDescription": "Fraction of dispatch slots that remained unused because of a latency bottleneck in the frontend (such as instruction cache or TLB misses).",
4562306a36Sopenharmony_ci    "MetricExpr": "d_ratio((6 * cpu@de_no_dispatch_per_slot.no_ops_from_frontend\\,cmask\\=0x6@), total_dispatch_slots)",
4662306a36Sopenharmony_ci    "MetricGroup": "PipelineL2;frontend_bound_group",
4762306a36Sopenharmony_ci    "ScaleUnit": "100%"
4862306a36Sopenharmony_ci  },
4962306a36Sopenharmony_ci  {
5062306a36Sopenharmony_ci    "MetricName": "frontend_bound_bandwidth",
5162306a36Sopenharmony_ci    "BriefDescription": "Fraction of dispatch slots that remained unused because of a bandwidth bottleneck in the frontend (such as decode or op cache fetch bandwidth).",
5262306a36Sopenharmony_ci    "MetricExpr": "d_ratio(de_no_dispatch_per_slot.no_ops_from_frontend - (6 * cpu@de_no_dispatch_per_slot.no_ops_from_frontend\\,cmask\\=0x6@), total_dispatch_slots)",
5362306a36Sopenharmony_ci    "MetricGroup": "PipelineL2;frontend_bound_group",
5462306a36Sopenharmony_ci    "ScaleUnit": "100%"
5562306a36Sopenharmony_ci  },
5662306a36Sopenharmony_ci  {
5762306a36Sopenharmony_ci    "MetricName": "bad_speculation_mispredicts",
5862306a36Sopenharmony_ci    "BriefDescription": "Fraction of dispatched ops that were flushed due to branch mispredicts.",
5962306a36Sopenharmony_ci    "MetricExpr": "d_ratio(bad_speculation * ex_ret_brn_misp, ex_ret_brn_misp + resyncs_or_nc_redirects)",
6062306a36Sopenharmony_ci    "MetricGroup": "PipelineL2;bad_speculation_group",
6162306a36Sopenharmony_ci    "ScaleUnit": "100%"
6262306a36Sopenharmony_ci  },
6362306a36Sopenharmony_ci  {
6462306a36Sopenharmony_ci    "MetricName": "bad_speculation_pipeline_restarts",
6562306a36Sopenharmony_ci    "BriefDescription": "Fraction of dispatched ops that were flushed due to pipeline restarts (resyncs).",
6662306a36Sopenharmony_ci    "MetricExpr": "d_ratio(bad_speculation * resyncs_or_nc_redirects, ex_ret_brn_misp + resyncs_or_nc_redirects)",
6762306a36Sopenharmony_ci    "MetricGroup": "PipelineL2;bad_speculation_group",
6862306a36Sopenharmony_ci    "ScaleUnit": "100%"
6962306a36Sopenharmony_ci  },
7062306a36Sopenharmony_ci  {
7162306a36Sopenharmony_ci    "MetricName": "backend_bound_memory",
7262306a36Sopenharmony_ci    "BriefDescription": "Fraction of dispatch slots that remained unused because of stalls due to the memory subsystem.",
7362306a36Sopenharmony_ci    "MetricExpr": "backend_bound * d_ratio(ex_no_retire.load_not_complete, ex_no_retire.not_complete)",
7462306a36Sopenharmony_ci    "MetricGroup": "PipelineL2;backend_bound_group",
7562306a36Sopenharmony_ci    "ScaleUnit": "100%"
7662306a36Sopenharmony_ci  },
7762306a36Sopenharmony_ci  {
7862306a36Sopenharmony_ci    "MetricName": "backend_bound_cpu",
7962306a36Sopenharmony_ci    "BriefDescription": "Fraction of dispatch slots that remained unused because of stalls not related to the memory subsystem.",
8062306a36Sopenharmony_ci    "MetricExpr": "backend_bound * (1 - d_ratio(ex_no_retire.load_not_complete, ex_no_retire.not_complete))",
8162306a36Sopenharmony_ci    "MetricGroup": "PipelineL2;backend_bound_group",
8262306a36Sopenharmony_ci    "ScaleUnit": "100%"
8362306a36Sopenharmony_ci  },
8462306a36Sopenharmony_ci  {
8562306a36Sopenharmony_ci    "MetricName": "retiring_fastpath",
8662306a36Sopenharmony_ci    "BriefDescription": "Fraction of dispatch slots used by fastpath ops that retired.",
8762306a36Sopenharmony_ci    "MetricExpr": "retiring * (1 - d_ratio(ex_ret_ucode_ops, ex_ret_ops))",
8862306a36Sopenharmony_ci    "MetricGroup": "PipelineL2;retiring_group",
8962306a36Sopenharmony_ci    "ScaleUnit": "100%"
9062306a36Sopenharmony_ci  },
9162306a36Sopenharmony_ci  {
9262306a36Sopenharmony_ci    "MetricName": "retiring_microcode",
9362306a36Sopenharmony_ci    "BriefDescription": "Fraction of dispatch slots used by microcode ops that retired.",
9462306a36Sopenharmony_ci    "MetricExpr": "retiring * d_ratio(ex_ret_ucode_ops, ex_ret_ops)",
9562306a36Sopenharmony_ci    "MetricGroup": "PipelineL2;retiring_group",
9662306a36Sopenharmony_ci    "ScaleUnit": "100%"
9762306a36Sopenharmony_ci  }
9862306a36Sopenharmony_ci]
99