diff options
Diffstat (limited to 'src/mcpat/gpgpu_sim_wrapper.cc')
| -rw-r--r-- | src/mcpat/gpgpu_sim_wrapper.cc | 120 |
1 files changed, 0 insertions, 120 deletions
diff --git a/src/mcpat/gpgpu_sim_wrapper.cc b/src/mcpat/gpgpu_sim_wrapper.cc index 4a8550d..6867f70 100644 --- a/src/mcpat/gpgpu_sim_wrapper.cc +++ b/src/mcpat/gpgpu_sim_wrapper.cc @@ -602,126 +602,6 @@ void gpgpu_sim_wrapper::update_components_power() } assert("Total Power does not equal the sum of the components\n" && sanity_check(sum_pwr_cmp,proc_power)); - - double sum_perf_times_coeff=0; - for(unsigned i=0; i<num_per_counts; i++){ - sum_perf_times_coeff+=perf_count[i]*effpower_coeff[i]; - } - - - sum_perf_times_coeff+=const_dynamic_power; - assert("processor power\n" && sanity_check(sum_perf_times_coeff,proc_power)); - - double * sc = perf_count; - double * pc = effpower_coeff; - double ib_id_power= ( proc->cores[0]->ifu->IB->rt_power.readOp.dynamic+ - proc->cores[0]->ifu->IB->rt_power.writeOp.dynamic+ - proc->cores[0]->ifu->ID_misc->rt_power.readOp.dynamic+ - proc->cores[0]->ifu->ID_operand->rt_power.readOp.dynamic+ - proc->cores[0]->ifu->ID_inst->rt_power.readOp.dynamic)/(proc->cores[0]->executionTime); - double inspected_ib_id_power=perf_count[TOT_INST]*effpower_coeff[TOT_INST]; - assert("IB_ID power\n" && sanity_check(ib_id_power,inspected_ib_id_power)); - - double icache_power=proc->cores[0]->ifu->icache.rt_power.readOp.dynamic/(proc->cores[0]->executionTime); - double inspected_icache_power=(sc[IC_H]*pc[IC_H]+sc[IC_M]*pc[IC_M]); - assert("I$ power\n" && sanity_check(icache_power,inspected_icache_power)); - - double caches_mcl_power=( proc->cores[0]->lsu->dcache.rt_power.readOp.dynamic + proc->mc->frontend->PRT->power_t.readOp.dynamic + proc->mc->frontend->threadMasks->power_t.readOp.dynamic+ proc->mc->frontend->PRC->power_t.readOp.dynamic)/(proc->cores[0]->executionTime); // dcache + mcl - caches_mcl_power+=proc->cores[0]->lsu->tcache.rt_power.readOp.dynamic/(proc->cores[0]->executionTime); // tcache - caches_mcl_power+=proc->cores[0]->lsu->ccache.rt_power.readOp.dynamic/(proc->cores[0]->executionTime); // ccache - double inspected_caches_mcl_power = (sc[DC_RH]*pc[DC_RH])+(sc[DC_RM]*pc[DC_RM])+(sc[DC_WH]*pc[DC_WH])+(sc[DC_WM]*pc[DC_WM]); - inspected_caches_mcl_power += (sc[TC_H]*pc[TC_H])+(sc[TC_M]*pc[TC_M]); - inspected_caches_mcl_power += (sc[CC_H]*pc[CC_H])+(sc[CC_M]*pc[CC_M]); - assert("D$ + T$ + C$ + MCL power\n" && sanity_check(caches_mcl_power,inspected_caches_mcl_power)); - - - double shmem_power=proc->cores[0]->lsu->sharedmemory.rt_power.readOp.dynamic/(proc->cores[0]->executionTime); - double inspected_shmem_power=(sc[SHRD_ACC]*pc[SHRD_ACC]); - assert("SHRD power\n" && sanity_check(shmem_power,inspected_shmem_power)); - - double regfile_power_adjusted=(proc->cores[0]->exu->rfu->rt_power.readOp.dynamic/(proc->cores[0]->executionTime))*(proc->cores[0]->exu->rf_fu_clockRate/proc->cores[0]->exu->clockRate); - double inspected_regfile_power_adjusted=((sc[REG_RD]*pc[REG_RD])+(sc[REG_WR]*pc[REG_WR])+(sc[NON_REG_OPs]*pc[NON_REG_OPs])); - assert("RG power\n" && sanity_check(regfile_power_adjusted,inspected_regfile_power_adjusted)); - - double alu_power_adjusted=(proc->cores[0]->exu->exeu->rt_power.readOp.dynamic/(proc->cores[0]->executionTime))*(proc->cores[0]->exu->rf_fu_clockRate/proc->cores[0]->exu->clockRate); - double inspected_alu_power_adjusted=(sc[SP_ACC]*pc[SP_ACC]); - assert("ALU power\n" && sanity_check(alu_power_adjusted,inspected_alu_power_adjusted)); - - double mul_power=(proc->cores[0]->exu->mul->rt_power.readOp.dynamic/(proc->cores[0]->executionTime)); - double inspected_mul_power=(sc[SFU_ACC] * pc[SFU_ACC]); - assert("SFU power\n" && sanity_check(mul_power,inspected_mul_power)); - - double fpu_power=(proc->cores[0]->exu->fp_u->rt_power.readOp.dynamic/(proc->cores[0]->executionTime)); - double inspected_fpu_power=(sc[FPU_ACC] * pc[FPU_ACC]); - assert("FPU power\n" && sanity_check(fpu_power,inspected_fpu_power)); - - double sched_power=proc->cores[0]->exu->scheu->rt_power.readOp.dynamic/(proc->cores[0]->executionTime); - double inspected_sched_power= (sc[FP_INT]*pc[FP_INT]); - - assert("FPU power\n" && sanity_check(sched_power,inspected_sched_power)); - - double ifu_power=proc->cores[0]->ifu->rt_power.readOp.dynamic/(proc->cores[0]->executionTime); - double inspected_ifu_power = (sc[IC_H]*pc[IC_H]+sc[IC_M]*pc[IC_M]); - inspected_ifu_power += perf_count[TOT_INST]*effpower_coeff[TOT_INST]; - inspected_ifu_power+=(sc[PIPE_A]*pc[PIPE_A]/3); - assert("IFU power\n" && sanity_check(ifu_power,inspected_ifu_power)); - - double core_power = proc->cores[0]->rt_power.readOp.dynamic/(proc->cores[0]->executionTime); - core_power += ( proc->mc->frontend->PRT->power_t.readOp.dynamic + proc->mc->frontend->threadMasks->power_t.readOp.dynamic+ proc->mc->frontend->PRC->power_t.readOp.dynamic)/(proc->cores[0]->executionTime); // mcl - double inspected_core_power = 0; - for (unsigned i = 0; i <=FPU_ACC; i++) - inspected_core_power += sc[i]*pc[i]; - - unsigned index = PIPE_A; - inspected_core_power += sc[index]*pc[index]; - index = IDLE_CORE_N; - inspected_core_power += sc[index]*pc[index]; - assert("Core power\n" && sanity_check(core_power,inspected_core_power)); - - // l2 power - double l2_power = (proc->XML->sys.number_of_L2s>0)? proc->l2array[0]->rt_power.readOp.dynamic/(proc->cores[0]->executionTime):0; - double inspected_l2_power = 0; - for (unsigned i = L2_RH; i <= L2_WM; i++) - inspected_l2_power += sc[i]*pc[i]; - assert("L2$ power\n" && sanity_check(l2_power,inspected_l2_power)); - - double noc_power =proc->noc.rt_power.readOp.dynamic; - double inspected_noc_power = sc[NOC_A] * pc[NOC_A]; - assert("NoC power\n" && sanity_check(noc_power,inspected_noc_power)); - - double mc_frontend_power = (proc->mc->frontend->rt_power.readOp.dynamic)/(proc->cores[0]->executionTime); // NoC access no longer relates to memc power - mc_frontend_power -= ( proc->mc->frontend->PRT->power_t.readOp.dynamic + proc->mc->frontend->threadMasks->power_t.readOp.dynamic+ proc->mc->frontend->PRC->power_t.readOp.dynamic)/(proc->cores[0]->executionTime); // mcl - double inspected_mc_frontend_power = 0; - double mc_frondend_read_coeff = 0; - double mc_frondend_write_coeff = 0; - MemoryController * mc = proc->mc; - - mc_frondend_read_coeff += (mc->frontend->mcp.llcBlockSize*8.0/mc->frontend->mcp.dataBusWidth*mc->frontend->mcp.dataBusWidth/72)*(mc->frontend->frontendBuffer->local_result.power.searchOp.dynamic); - mc_frondend_read_coeff += (mc->frontend->mcp.llcBlockSize*8.0/mc->frontend->mcp.dataBusWidth*mc->frontend->mcp.dataBusWidth/72)*(mc->frontend->frontendBuffer->local_result.power.readOp.dynamic); - mc_frondend_read_coeff += (mc->frontend->mcp.llcBlockSize*8.0/mc->mcp.dataBusWidth)*(mc->frontend->readBuffer->local_result.power.readOp.dynamic); - mc_frondend_read_coeff += (mc->frontend->mcp.llcBlockSize*8.0/mc->mcp.dataBusWidth)*(mc->frontend->readBuffer->local_result.power.writeOp.dynamic); - - mc_frondend_write_coeff += (mc->frontend->mcp.llcBlockSize*8.0/mc->frontend->mcp.dataBusWidth*mc->frontend->mcp.dataBusWidth/72)*(mc->frontend->frontendBuffer->local_result.power.searchOp.dynamic); - mc_frondend_write_coeff += (mc->frontend->mcp.llcBlockSize*8.0/mc->frontend->mcp.dataBusWidth*mc->frontend->mcp.dataBusWidth/72)*(mc->frontend->frontendBuffer->local_result.power.writeOp.dynamic); - mc_frondend_write_coeff += (mc->frontend->mcp.llcBlockSize*8.0/mc->frontend->mcp.dataBusWidth)* (mc->frontend->writeBuffer->local_result.power.readOp.dynamic); - mc_frondend_write_coeff += (mc->frontend->mcp.llcBlockSize*8.0/mc->frontend->mcp.dataBusWidth)* (mc->frontend->writeBuffer->local_result.power.writeOp.dynamic); - inspected_mc_frontend_power += mc_frondend_read_coeff * sc[MEM_RD] * p->sys.scaling_coefficients[MEM_RD]; - inspected_mc_frontend_power += mc_frondend_write_coeff * sc[MEM_WR] * p->sys.scaling_coefficients[MEM_WR]; - inspected_mc_frontend_power += (mc->frontend->power.readOp.dynamic*0.1*mc->frontend->mcp.clockRate*mc->frontend->mcp.num_mcs*mc->frontend->mcp.executionTime); - inspected_mc_frontend_power /= proc->cores[0]->executionTime; - assert("mc frontend\n" && sanity_check(mc_frontend_power,inspected_mc_frontend_power)); - - - double memc_power = (proc->mc->rt_power.readOp.dynamic)/(proc->cores[0]->executionTime); // NoC access no longer relates to memc power - memc_power -= ( proc->mc->frontend->PRT->power_t.readOp.dynamic + proc->mc->frontend->threadMasks->power_t.readOp.dynamic+ proc->mc->frontend->PRC->power_t.readOp.dynamic)/(proc->cores[0]->executionTime); // mcl - double inspected_memc_power = 0; - for (unsigned i = MEM_RD; i <= MEM_PRE; i++) - inspected_memc_power += sc[i]*pc[i]; - inspected_memc_power += const_dynamic_power; - assert("mc + dram power\n" && sanity_check(memc_power,inspected_memc_power)); - - - } void gpgpu_sim_wrapper::compute() |
