Divide by per-breakdown cycle for avg stall cycles
This commit is contained in:
@@ -436,31 +436,31 @@ module VX_core import VX_gpu_pkg::*; #(
|
|||||||
pipeline_perf_if.scb_stalls, `ISSUE_WIDTH);
|
pipeline_perf_if.scb_stalls, `ISSUE_WIDTH);
|
||||||
$display("issue scoreboard: stalls by operand hazard: alu %d (%2.2f cycles per issue)",
|
$display("issue scoreboard: stalls by operand hazard: alu %d (%2.2f cycles per issue)",
|
||||||
scrb_alu_per_core,
|
scrb_alu_per_core,
|
||||||
$itor(scrb_alu_per_core) / $itor(dispatch_fires_total));
|
$itor(scrb_alu_per_core) / $itor(pipeline_perf_if.dispatch_fires[`EX_ALU]));
|
||||||
$display("issue scoreboard: stalls by operand hazard: fpu %d (%2.2f cycles per issue)",
|
$display("issue scoreboard: stalls by operand hazard: fpu %d (%2.2f cycles per issue)",
|
||||||
scrb_fpu_per_core,
|
scrb_fpu_per_core,
|
||||||
$itor(scrb_fpu_per_core) / $itor(dispatch_fires_total));
|
$itor(scrb_fpu_per_core) / $itor(pipeline_perf_if.dispatch_fires[`EX_FPU]));
|
||||||
$display("issue scoreboard: stalls by operand hazard: lsu %d (%2.2f cycles per issue)",
|
$display("issue scoreboard: stalls by operand hazard: lsu %d (%2.2f cycles per issue)",
|
||||||
scrb_lsu_per_core,
|
scrb_lsu_per_core,
|
||||||
$itor(scrb_lsu_per_core) / $itor(dispatch_fires_total));
|
$itor(scrb_lsu_per_core) / $itor(pipeline_perf_if.dispatch_fires[`EX_LSU]));
|
||||||
$display("issue scoreboard: stalls by operand hazard: sfu %d (%2.2f cycles per issue)",
|
$display("issue scoreboard: stalls by operand hazard: sfu %d (%2.2f cycles per issue)",
|
||||||
scrb_sfu_per_core,
|
scrb_sfu_per_core,
|
||||||
$itor(scrb_sfu_per_core) / $itor(dispatch_fires_total));
|
$itor(scrb_sfu_per_core) / $itor(pipeline_perf_if.dispatch_fires[`EX_SFU]));
|
||||||
$display("issue scoreboard: sfu stalls: %d (scrs=%f, wctl=%f)",pipeline_perf_if.units_uses[`EX_SFU],
|
$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_csrs_per_core) / $itor(sfu_tot) * 100.0,
|
||||||
$itor(scrb_wctl_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 (%2.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],
|
pipeline_perf_if.dispatch_stalls[`EX_ALU],
|
||||||
$itor(pipeline_perf_if.dispatch_stalls[`EX_ALU]) / $itor(dispatch_fires_total));
|
$itor(pipeline_perf_if.dispatch_stalls[`EX_ALU]) / $itor(pipeline_perf_if.dispatch_fires[`EX_ALU]));
|
||||||
$display("issue dispatch: stalls by FU busy: fpu %d (%2.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],
|
pipeline_perf_if.dispatch_stalls[`EX_FPU],
|
||||||
$itor(pipeline_perf_if.dispatch_stalls[`EX_FPU]) / $itor(dispatch_fires_total));
|
$itor(pipeline_perf_if.dispatch_stalls[`EX_FPU]) / $itor(pipeline_perf_if.dispatch_fires[`EX_FPU]));
|
||||||
$display("issue dispatch: stalls by FU busy: lsu %d (%2.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],
|
pipeline_perf_if.dispatch_stalls[`EX_LSU],
|
||||||
$itor(pipeline_perf_if.dispatch_stalls[`EX_LSU]) / $itor(dispatch_fires_total));
|
$itor(pipeline_perf_if.dispatch_stalls[`EX_LSU]) / $itor(pipeline_perf_if.dispatch_fires[`EX_LSU]));
|
||||||
$display("issue dispatch: stalls by FU busy: sfu %d (%2.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],
|
pipeline_perf_if.dispatch_stalls[`EX_SFU],
|
||||||
$itor(pipeline_perf_if.dispatch_stalls[`EX_SFU]) / $itor(dispatch_fires_total));
|
$itor(pipeline_perf_if.dispatch_stalls[`EX_SFU]) / $itor(pipeline_perf_if.dispatch_fires[`EX_SFU]));
|
||||||
$display("issue dispatch: fires: total %d",
|
$display("issue dispatch: fires: total %d",
|
||||||
dispatch_fires_total);
|
dispatch_fires_total);
|
||||||
$display("issue dispatch: fires: alu %d",
|
$display("issue dispatch: fires: alu %d",
|
||||||
|
|||||||
@@ -197,6 +197,9 @@ module VX_operands import VX_gpu_pkg::*; #(
|
|||||||
assign stg_valid_in = scoreboard_if[i].valid && data_ready;
|
assign stg_valid_in = scoreboard_if[i].valid && data_ready;
|
||||||
assign scoreboard_if[i].ready = stg_ready_in && data_ready;
|
assign scoreboard_if[i].ready = stg_ready_in && data_ready;
|
||||||
|
|
||||||
|
// NOTE(hansung): toggle_buffer is 1-reg pipe without flow, halving
|
||||||
|
// throughput. Wouldn't this cap overall IPC? Or OK as long as
|
||||||
|
// ISSUE_WIDTH > 1?
|
||||||
VX_toggle_buffer #(
|
VX_toggle_buffer #(
|
||||||
.DATAW (DATAW)
|
.DATAW (DATAW)
|
||||||
) staging_buffer (
|
) staging_buffer (
|
||||||
|
|||||||
Reference in New Issue
Block a user