From 88cf6919f71caa622c936e0bb2fc10e88f291c8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89der=20F=2E=20Zulian?= Date: Tue, 17 May 2016 17:22:45 +0200 Subject: [PATCH 1/4] New metric: bank usage ratio --- DRAMSys/analyzer/scripts/metrics.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/DRAMSys/analyzer/scripts/metrics.py b/DRAMSys/analyzer/scripts/metrics.py index 6f2d3bc2..d4db523a 100644 --- a/DRAMSys/analyzer/scripts/metrics.py +++ b/DRAMSys/analyzer/scripts/metrics.py @@ -219,6 +219,19 @@ def number_of_accesses(connection): return result[0] +@metric +def bank_usage_ratio(connection): + bankAccess = [] + cursor = connection.cursor() + total = number_of_accesses(connection) + for bank in range(getNumberOfBanks(connection)): + cursor.execute("SELECT COUNT(*) FROM Transactions where TBank = {}".format(bank)) + r = cursor.fetchone() + bankAccess.append(round((float(r[0]) / float(total)) * 100.0, 2)) + + return ",".join(format(x, "6.2f") for x in bankAccess) + + # @metric # def number_of_precharges(connection): # cursor = connection.cursor() From 5366e6dce349dcd976338ec794285359dfd2d303 Mon Sep 17 00:00:00 2001 From: Matthias Jung Date: Wed, 18 May 2016 12:00:54 +0200 Subject: [PATCH 2/4] new metric for parallel banks --- DRAMSys/analyzer/scripts/metrics.py | 62 ++++++++++++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) diff --git a/DRAMSys/analyzer/scripts/metrics.py b/DRAMSys/analyzer/scripts/metrics.py index d4db523a..1780935f 100644 --- a/DRAMSys/analyzer/scripts/metrics.py +++ b/DRAMSys/analyzer/scripts/metrics.py @@ -2,6 +2,7 @@ import sys import sqlite3 from memUtil import * from math import * +from intervaltree import Interval, IntervalTree metrics = [] threadMetrics = [] @@ -221,8 +222,9 @@ def number_of_accesses(connection): @metric def bank_usage_ratio(connection): - bankAccess = [] + # Calculates how many percent of the accesses go to which bank... cursor = connection.cursor() + bankAccess = [] total = number_of_accesses(connection) for bank in range(getNumberOfBanks(connection)): cursor.execute("SELECT COUNT(*) FROM Transactions where TBank = {}".format(bank)) @@ -231,6 +233,64 @@ def bank_usage_ratio(connection): return ",".join(format(x, "6.2f") for x in bankAccess) +@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): From 3a417e4e7c8f6c36c01493aae42572f4f4071c64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89der=20F=2E=20Zulian?= Date: Wed, 18 May 2016 14:28:24 +0200 Subject: [PATCH 3/4] Removing unused import and code --- DRAMSys/analyzer/scripts/metrics.py | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/DRAMSys/analyzer/scripts/metrics.py b/DRAMSys/analyzer/scripts/metrics.py index 1780935f..bbac938f 100644 --- a/DRAMSys/analyzer/scripts/metrics.py +++ b/DRAMSys/analyzer/scripts/metrics.py @@ -2,7 +2,6 @@ import sys import sqlite3 from memUtil import * from math import * -from intervaltree import Interval, IntervalTree metrics = [] threadMetrics = [] @@ -220,19 +219,6 @@ def number_of_accesses(connection): return result[0] -@metric -def bank_usage_ratio(connection): - # Calculates how many percent of the accesses go to which bank... - cursor = connection.cursor() - bankAccess = [] - total = number_of_accesses(connection) - for bank in range(getNumberOfBanks(connection)): - cursor.execute("SELECT COUNT(*) FROM Transactions where TBank = {}".format(bank)) - r = cursor.fetchone() - bankAccess.append(round((float(r[0]) / float(total)) * 100.0, 2)) - - return ",".join(format(x, "6.2f") for x in bankAccess) - @metric def bank_overlap_ratio(connection): # Calculates how many banks are open in parallel From 7722471b5ae36275fd3617980a172c38239e26ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89der=20F=2E=20Zulian?= Date: Wed, 18 May 2016 15:12:37 +0200 Subject: [PATCH 4/4] New address mappings for DDR3 --- .../resources/configs/amconfigs/am_ddr3_x16_brc.xml | 8 ++++++++ .../resources/configs/amconfigs/am_ddr3_x16_rbc.xml | 8 ++++++++ 2 files changed, 16 insertions(+) create mode 100644 DRAMSys/simulator/resources/configs/amconfigs/am_ddr3_x16_brc.xml create mode 100644 DRAMSys/simulator/resources/configs/amconfigs/am_ddr3_x16_rbc.xml 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 @@ + + + + + + + +