aboutsummaryrefslogtreecommitdiff
path: root/qtmips_gui
diff options
context:
space:
mode:
authorKarel Kočí <cynerd@email.cz>2018-05-23 20:23:10 +0200
committerKarel Kočí <cynerd@email.cz>2018-05-23 20:23:10 +0200
commitddde26b916c99078421992100849101455756415 (patch)
tree25a8dee1fb6ae3a78d5a46e2aabd5aa4f8bb7fb3 /qtmips_gui
parentf1fc0fc1ad628d19382fe2a026a767af6f6ba12f (diff)
downloadqtmips-ddde26b916c99078421992100849101455756415.tar.gz
qtmips-ddde26b916c99078421992100849101455756415.tar.bz2
qtmips-ddde26b916c99078421992100849101455756415.zip
Add cache statistics
Diffstat (limited to 'qtmips_gui')
-rw-r--r--qtmips_gui/NewDialog.ui20
-rw-r--r--qtmips_gui/cachedock.cpp16
-rw-r--r--qtmips_gui/cachedock.h3
3 files changed, 35 insertions, 4 deletions
diff --git a/qtmips_gui/NewDialog.ui b/qtmips_gui/NewDialog.ui
index 135ac83..6e6a3ec 100644
--- a/qtmips_gui/NewDialog.ui
+++ b/qtmips_gui/NewDialog.ui
@@ -29,7 +29,7 @@
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
- <number>0</number>
+ <number>2</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
@@ -225,7 +225,14 @@
</widget>
</item>
<item row="0" column="1">
- <widget class="QSpinBox" name="mem_time_read"/>
+ <widget class="QSpinBox" name="mem_time_read">
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="maximum">
+ <number>999999999</number>
+ </property>
+ </widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_3">
@@ -235,7 +242,14 @@
</widget>
</item>
<item row="1" column="1">
- <widget class="QSpinBox" name="mem_time_write"/>
+ <widget class="QSpinBox" name="mem_time_write">
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="maximum">
+ <number>999999999</number>
+ </property>
+ </widget>
</item>
</layout>
</widget>
diff --git a/qtmips_gui/cachedock.cpp b/qtmips_gui/cachedock.cpp
index 79097b3..8e63565 100644
--- a/qtmips_gui/cachedock.cpp
+++ b/qtmips_gui/cachedock.cpp
@@ -17,6 +17,12 @@ CacheDock::CacheDock(QWidget *parent, const QString &type) : QDockWidget(parent)
layout_top_form->addRow("Hit:", l_hit);
l_miss = new QLabel("0", top_form);
layout_top_form->addRow("Miss:", l_miss);
+ l_stalled = new QLabel("0", top_form);
+ layout_top_form->addRow("Memory stall cycles:", l_stalled);
+ l_usage = new QLabel("0.000%", top_form);
+ layout_top_form->addRow("Usage effectiveness:", l_usage);
+ l_speed = new QLabel("100%", top_form);
+ layout_top_form->addRow("Speed improvement:", l_speed);
graphicsview = new GraphicsView(top_widget);
graphicsview->setVisible(false);
@@ -30,9 +36,13 @@ CacheDock::CacheDock(QWidget *parent, const QString &type) : QDockWidget(parent)
void CacheDock::setup(const machine::Cache *cache) {
l_hit->setText("0");
l_miss->setText("0");
+ l_stalled->setText("0");
+ l_usage->setText("0.000%");
+ l_speed->setText("100%");
if (cache->config().enabled()) {
connect(cache, SIGNAL(hit_update(uint)), this, SLOT(hit_update(uint)));
connect(cache, SIGNAL(miss_update(uint)), this, SLOT(miss_update(uint)));
+ connect(cache, SIGNAL(statistics_update(uint,double,double)), this, SLOT(statistics_update(uint,double,double)));
}
top_form->setVisible(cache->config().enabled());
no_cache->setVisible(!cache->config().enabled());
@@ -51,3 +61,9 @@ void CacheDock::hit_update(unsigned val) {
void CacheDock::miss_update(unsigned val) {
l_miss->setText(QString::number(val));
}
+
+void CacheDock::statistics_update(unsigned stalled_cycles, double speed_improv, double usage_effic) {
+ l_stalled->setText(QString::number(stalled_cycles));
+ l_usage->setText(QString::number(usage_effic, 'f', 3) + QString("%"));
+ l_speed->setText(QString::number(speed_improv, 'f', 0) + QString("%"));
+}
diff --git a/qtmips_gui/cachedock.h b/qtmips_gui/cachedock.h
index 598a9c7..7e5ac44 100644
--- a/qtmips_gui/cachedock.h
+++ b/qtmips_gui/cachedock.h
@@ -18,12 +18,13 @@ public:
private slots:
void hit_update(unsigned);
void miss_update(unsigned);
+ void statistics_update(unsigned stalled_cycles, double speed_improv, double usage_effic);
private:
QVBoxLayout *layout_box;
QWidget *top_widget, *top_form;
QFormLayout *layout_top_form;
- QLabel *l_hit, *l_miss, *no_cache;
+ QLabel *l_hit, *l_miss, *l_stalled, *l_speed, *l_usage, *no_cache;
GraphicsView *graphicsview;
CacheViewScene *cachescene;
};