@@ -79,16 +79,15 @@ namespace DRAMPower {
79
79
auto IBeta = dram.memSpec .memPowerSpec [vd].iBeta ;
80
80
81
81
auto I_rho = rho * (IDD3N - IDD2N) + IDD2N;
82
- auto I_1 = (1.0 / B) * (IDD3N + (B - 1 ) * (rho * (IDD3N - IDD2N) + IDD2N));
83
- auto I_2 = I_1 + (I_1 - I_rho);
82
+ auto I_2 = IDD3N + (IDD3N - I_rho);
84
83
auto I_theta = (IDD_0 * (t_RP + t_RAS) - IBeta * t_RP) * (1 / t_RAS);
85
84
auto IDD5PB_B = (IDD5PB * (t_REFI / 8 ) - IDD2N * ((t_REFI / 8 ) - t_RFCPB)) * (1.0 / t_RFCPB);
86
- auto approx_IDD3N = I_rho + B * (I_1 - I_rho);
85
+ auto approx_IDD3N = I_rho + B * (IDD3N - I_rho);
87
86
88
87
for (std::size_t b = 0 ; b < dram.memSpec .numberOfBanks ; ++b) {
89
88
const auto &bank = stats.bank [b];
90
89
91
- energy.bank_energy [b].E_act += E_act (VDD, I_theta, I_1 , t_RAS, bank.counter .act );
90
+ energy.bank_energy [b].E_act += E_act (VDD, I_theta, IDD3N , t_RAS, bank.counter .act );
92
91
energy.bank_energy [b].E_pre += E_pre (VDD, IBeta, IDD2N, t_RP, bank.counter .pre );
93
92
energy.bank_energy [b].E_bg_act += E_BG_act_star (B, VDD, approx_IDD3N, I_rho,stats.bank [b].cycles .activeTime () * t_CK);
94
93
energy.bank_energy [b].E_bg_pre += E_BG_pre (B, VDD, IDD2N, stats.total .cycles .pre * t_CK);
@@ -98,15 +97,15 @@ namespace DRAMPower {
98
97
energy.bank_energy [b].E_RDA += E_RD (VDD, IDD4R, I_2, BL, DR, t_WCK, bank.counter .readAuto );
99
98
energy.bank_energy [b].E_WRA += E_WR (VDD, IDD4W, I_2, BL, DR, t_WCK, bank.counter .writeAuto );
100
99
} else {
101
- energy.bank_energy [b].E_RD += E_RD (VDD, IDD4R, I_1 , BL, DR, t_WCK, bank.counter .reads );
102
- energy.bank_energy [b].E_WR += E_WR (VDD, IDD4W, I_1 , BL, DR, t_WCK, bank.counter .writes );
103
- energy.bank_energy [b].E_RDA += E_RD (VDD, IDD4R, I_1 , BL, DR, t_WCK, bank.counter .readAuto );
104
- energy.bank_energy [b].E_WRA += E_WR (VDD, IDD4W, I_1 , BL, DR, t_WCK, bank.counter .writeAuto );
100
+ energy.bank_energy [b].E_RD += E_RD (VDD, IDD4R, IDD3N , BL, DR, t_WCK, bank.counter .reads );
101
+ energy.bank_energy [b].E_WR += E_WR (VDD, IDD4W, IDD3N , BL, DR, t_WCK, bank.counter .writes );
102
+ energy.bank_energy [b].E_RDA += E_RD (VDD, IDD4R, IDD3N , BL, DR, t_WCK, bank.counter .readAuto );
103
+ energy.bank_energy [b].E_WRA += E_WR (VDD, IDD4W, IDD3N , BL, DR, t_WCK, bank.counter .writeAuto );
105
104
}
106
105
energy.bank_energy [b].E_pre_RDA += E_pre (VDD, IBeta, IDD2N, t_RP, bank.counter .readAuto );
107
106
energy.bank_energy [b].E_pre_WRA += E_pre (VDD, IBeta, IDD2N, t_RP, bank.counter .writeAuto );
108
- energy.bank_energy [b].E_ref_AB += E_ref_ab (B, VDD, IDD5, IDD3N , t_RFC, bank.counter .refAllBank );
109
- energy.bank_energy [b].E_ref_PB += E_ref_pb (VDD, IDD5PB_B, I_1 , t_RFCPB, bank.counter .refPerBank );
107
+ energy.bank_energy [b].E_ref_AB += E_ref_ab (B, VDD, IDD5, approx_IDD3N , t_RFC, bank.counter .refAllBank );
108
+ energy.bank_energy [b].E_ref_PB += E_ref_pb (VDD, IDD5PB_B, IDD3N , t_RFCPB, bank.counter .refPerBank );
110
109
energy.bank_energy [b].E_ref_2B += E_ref_p2b (VDD, IDD5PB_B, I_2, t_RFCPB, bank.counter .refPerTwoBanks );
111
110
}
112
111
0 commit comments