From dd90736382805ea12fd9901bafb84f5f65bcc893 Mon Sep 17 00:00:00 2001 From: Hansung Kim Date: Sat, 23 Mar 2024 01:07:34 -0700 Subject: [PATCH] Reformat perfcount report --- hw/rtl/core/VX_core.sv | 43 ++++++++++++++++-------------------------- 1 file changed, 16 insertions(+), 27 deletions(-) diff --git a/hw/rtl/core/VX_core.sv b/hw/rtl/core/VX_core.sv index 623b1a35..4ffd392f 100644 --- a/hw/rtl/core/VX_core.sv +++ b/hw/rtl/core/VX_core.sv @@ -346,14 +346,6 @@ module VX_core import VX_gpu_pkg::*; #( assign dcache_lat = 32'(perf_dcache_lat); int loads; assign loads = 32'(perf_loads); - int scheduler_idles; - assign scheduler_idles = 32'(pipeline_perf_if.sched_idles); - int scheduler_stalls; - assign scheduler_stalls = 32'(pipeline_perf_if.sched_stalls); - int scheduler_barrier_stalls; - assign scheduler_barrier_stalls = 32'(pipeline_perf_if.sched_barrier_stalls); - int ibuf_stalls; - assign ibuf_stalls = 32'(pipeline_perf_if.ibf_stalls); int scrb_alu_per_core; assign scrb_alu_per_core = 32'(pipeline_perf_if.units_uses[`EX_ALU]); int scrb_fpu_per_core; @@ -364,7 +356,6 @@ module VX_core import VX_gpu_pkg::*; #( assign scrb_sfu_per_core = 32'(pipeline_perf_if.units_uses[`EX_SFU]); int scrb_tot; assign scrb_tot = scrb_alu_per_core+scrb_fpu_per_core+scrb_lsu_per_core+scrb_sfu_per_core; - int scrb_wctl_per_core; assign scrb_wctl_per_core = 32'(pipeline_perf_if.sfu_uses[`SFU_WCTL]); int scrb_csrs_per_core; @@ -423,50 +414,48 @@ module VX_core import VX_gpu_pkg::*; #( $display("Instructions: %d, Cycles: %d, IPC: %f", commit_csr_if.instret, sched_csr_if.cycles, $itor(instrs) / $itor(cycles)); $display("scheduler idle: %d cycles (%.2f%%)", pipeline_perf_if.sched_idles, - $itor(scheduler_idles) / $itor(cycles) * 100.0); + $itor(pipeline_perf_if.sched_idles) / $itor(cycles) * 100.0); $display("scheduler stalls: %d cycles (%.2f%%)", pipeline_perf_if.sched_stalls, - $itor(scheduler_stalls) / $itor(cycles) * 100.0); + $itor(pipeline_perf_if.sched_stalls) / $itor(cycles) * 100.0); $display("scheduler barrier stalls: %d count across NUM_WARPS=%d (%.2f%%)", pipeline_perf_if.sched_barrier_stalls, `NUM_WARPS, - $itor(scheduler_barrier_stalls) / $itor(cycles) * 100.0); - $display("ibuffer stalls: %d cycles (%.2f%%)",pipeline_perf_if.ibf_stalls, - $itor(ibuf_stalls) / $itor(cycles) * 100.0); + $itor(pipeline_perf_if.sched_barrier_stalls) / $itor(cycles) * 100.0); + $display("decode stalls: %d cycles (%.2f%%)",pipeline_perf_if.ibf_stalls, + $itor(pipeline_perf_if.ibf_stalls) / $itor(cycles) * 100.0); // see VX_scoreboard.sv // scb_stalls: valid & ~ready (ready = stg_ready_in && operands_ready) // units_uses: valid & ~operands_ready // this will be a subset of scb_stalls - $display("issue scoreboard: stalls total: %d (summed across ISSUE_WIDTH=%d)", + $display("issue scoreboard: fires total:\t%d across ISSUE_WIDTH=%d", + pipeline_perf_if.scb_fires, `ISSUE_WIDTH); + $display("issue scoreboard: stalls total:\t%d across ISSUE_WIDTH=%d", pipeline_perf_if.scb_stalls, `ISSUE_WIDTH); - $display("issue scoreboard: stalls by operand hazard: alu %d (%.2f%%) (%.2f cycles per issue)", + $display("issue scoreboard: stalls by operand hazard: alu %d (%2.2f cycles per issue)", scrb_alu_per_core, - $itor(scrb_alu_per_core) / $itor(scrb_tot) * 100.0, $itor(scrb_alu_per_core) / $itor(dispatch_fires_total)); - $display("issue scoreboard: stalls by operand hazard: fpu %d (%.2f%%) (%.2f cycles per issue)", + $display("issue scoreboard: stalls by operand hazard: fpu %d (%2.2f cycles per issue)", scrb_fpu_per_core, - $itor(scrb_fpu_per_core) / $itor(scrb_tot) * 100.0, $itor(scrb_fpu_per_core) / $itor(dispatch_fires_total)); - $display("issue scoreboard: stalls by operand hazard: lsu %d (%.2f%%) (%.2f cycles per issue)", + $display("issue scoreboard: stalls by operand hazard: lsu %d (%2.2f cycles per issue)", scrb_lsu_per_core, - $itor(scrb_lsu_per_core) / $itor(scrb_tot) * 100.0, $itor(scrb_lsu_per_core) / $itor(dispatch_fires_total)); - $display("issue scoreboard: stalls by operand hazard: sfu %d (%.2f%%) (%.2f cycles per issue)", + $display("issue scoreboard: stalls by operand hazard: sfu %d (%2.2f cycles per issue)", scrb_sfu_per_core, - $itor(scrb_sfu_per_core) / $itor(scrb_tot) * 100.0, $itor(scrb_sfu_per_core) / $itor(dispatch_fires_total)); $display("issue scoreboard: sfu stalls: %d (scrs=%f, wctl=%f)",pipeline_perf_if.units_uses[`EX_SFU], $itor(scrb_csrs_per_core) / $itor(sfu_tot) * 100.0, $itor(scrb_wctl_per_core) / $itor(sfu_tot) * 100.0); - $display("issue dispatch: stalls by FU busy: alu %d (%.2f cycles per issue)", + $display("issue dispatch: stalls by FU busy: alu %d (%2.2f cycles per issue)", pipeline_perf_if.dispatch_stalls[`EX_ALU], $itor(pipeline_perf_if.dispatch_stalls[`EX_ALU]) / $itor(dispatch_fires_total)); - $display("issue dispatch: stalls by FU busy: fpu %d (%.2f cycles per issue)", + $display("issue dispatch: stalls by FU busy: fpu %d (%2.2f cycles per issue)", pipeline_perf_if.dispatch_stalls[`EX_FPU], $itor(pipeline_perf_if.dispatch_stalls[`EX_FPU]) / $itor(dispatch_fires_total)); - $display("issue dispatch: stalls by FU busy: lsu %d (%.2f cycles per issue)", + $display("issue dispatch: stalls by FU busy: lsu %d (%2.2f cycles per issue)", pipeline_perf_if.dispatch_stalls[`EX_LSU], $itor(pipeline_perf_if.dispatch_stalls[`EX_LSU]) / $itor(dispatch_fires_total)); - $display("issue dispatch: stalls by FU busy: sfu %d (%.2f cycles per issue)", + $display("issue dispatch: stalls by FU busy: sfu %d (%2.2f cycles per issue)", pipeline_perf_if.dispatch_stalls[`EX_SFU], $itor(pipeline_perf_if.dispatch_stalls[`EX_SFU]) / $itor(dispatch_fires_total)); $display("issue dispatch: fires: total %d",