diff --git a/DRAMSys/analyzer/scripts/metrics.py b/DRAMSys/analyzer/scripts/metrics.py index 6f2d3bc2..bbac938f 100644 --- a/DRAMSys/analyzer/scripts/metrics.py +++ b/DRAMSys/analyzer/scripts/metrics.py @@ -219,6 +219,65 @@ def number_of_accesses(connection): return result[0] +@metric +def bank_overlap_ratio(connection): + # Calculates how many banks are open in parallel + cursor = connection.cursor() + cursor.execute("SELECT clk FROM GeneralInfo ") + clk = cursor.fetchone() + + cursor.execute("select TraceEnd from GeneralInfo") + traceEndTMP = cursor.fetchone() + traceEnd = int(traceEndTMP[0]/clk[0]) + + trace = [] + + cursor.execute(""" + select p1.PhaseBegin, p1.PhaseName from Phases p1 + where + (p1.PhaseName = "ACT" or p1.PhaseName = "PRE_ALL" or p1.PhaseName = "PRE") + order by PhaseBegin + """) + prevPhase = "PRE_ALL" + prevTime = 0 + + for c in cursor: + trace.append([(int(c[0]/clk[0])),c[1]]) + + #Insert a pseudo precharge all to mark the end of the trace + trace.append([traceEnd,"PRE_ALL"]) + + bankCounter = 0 + bankTime = [] + + for i in range(0, getNumberOfBanks(connection)+1): + bankTime.append(0) + + currentTime = 0 + + for t in trace: + + interval = t[0] - currentTime + bankTime[bankCounter] += interval + currentTime = t[0] + + if(t[1] == "ACT"): + bankCounter += 1 + elif(t[1] == "PRE_ALL"): + bankCounter = 0 + elif(t[1] == "PRE"): + bankCounter -= 1 + else: + print ("ERROR") + return 0 + + + for i in range(0, getNumberOfBanks(connection)+1): + bankTime[i] = round(bankTime[i]/traceEnd * 100,2) + + return ",".join(format(x, "6.2f") for x in bankTime) + + # @metric # def number_of_precharges(connection): # cursor = connection.cursor() diff --git a/DRAMSys/simulator/resources/configs/amconfigs/am_ddr3_x16_brc.xml b/DRAMSys/simulator/resources/configs/amconfigs/am_ddr3_x16_brc.xml new file mode 100644 index 00000000..dfddfbc9 --- /dev/null +++ b/DRAMSys/simulator/resources/configs/amconfigs/am_ddr3_x16_brc.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/DRAMSys/simulator/resources/configs/amconfigs/am_ddr3_x16_rbc.xml b/DRAMSys/simulator/resources/configs/amconfigs/am_ddr3_x16_rbc.xml new file mode 100644 index 00000000..8323d7b5 --- /dev/null +++ b/DRAMSys/simulator/resources/configs/amconfigs/am_ddr3_x16_rbc.xml @@ -0,0 +1,8 @@ + + + + + + + +