aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarel Kočí <cynerd@email.cz>2017-12-30 18:48:29 +0100
committerKarel Kočí <cynerd@email.cz>2017-12-30 18:48:29 +0100
commit44678108e4c14773b3341e4fbc8042c7cabcf02b (patch)
tree62cd814cdc15490f48f3a7dd3a853b6e2aaca62b
parent8ac1f7efc726b87f7f1fa39d7e07d27d063bac93 (diff)
downloadqtmips-44678108e4c14773b3341e4fbc8042c7cabcf02b.tar.gz
qtmips-44678108e4c14773b3341e4fbc8042c7cabcf02b.tar.bz2
qtmips-44678108e4c14773b3341e4fbc8042c7cabcf02b.zip
Drop jump predictions
Although there are branch likely instruction the whole mips instruction set is designed around static jump predictions. The usage of delay slot ensures that we don't have to handle jump predictions on cpu it self at all. Adding it on top of that makes little to no sense although that was the original plan.
-rw-r--r--qtmips_gui/NewDialog.ui44
-rw-r--r--qtmips_gui/mainwindow.cpp3
-rw-r--r--qtmips_gui/newdialog.cpp15
3 files changed, 2 insertions, 60 deletions
diff --git a/qtmips_gui/NewDialog.ui b/qtmips_gui/NewDialog.ui
index f633d28..c1ec66c 100644
--- a/qtmips_gui/NewDialog.ui
+++ b/qtmips_gui/NewDialog.ui
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>558</width>
- <height>306</height>
+ <height>254</height>
</rect>
</property>
<property name="windowTitle">
@@ -132,48 +132,6 @@
</widget>
</item>
<item>
- <widget class="QCheckBox" name="flush_jump">
- <property name="text">
- <string>Flush pipeline on jump</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QGroupBox" name="prediction">
- <property name="title">
- <string>Jump prediction</string>
- </property>
- <property name="flat">
- <bool>false</bool>
- </property>
- <property name="checkable">
- <bool>true</bool>
- </property>
- <property name="checked">
- <bool>false</bool>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_3">
- <item>
- <widget class="QRadioButton" name="prediction_static">
- <property name="text">
- <string>Static</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QRadioButton" name="prediction_one_dynamic">
- <property name="text">
- <string>One level dynamic</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
diff --git a/qtmips_gui/mainwindow.cpp b/qtmips_gui/mainwindow.cpp
index 9e1902a..9384890 100644
--- a/qtmips_gui/mainwindow.cpp
+++ b/qtmips_gui/mainwindow.cpp
@@ -63,8 +63,7 @@ void MainWindow::create_core(machine::MachineConfig *config) {
// Create machine view
corescene = new CoreViewScene(coreview, machine);
- //machine->set_speed(1000); // Set default speed to 1 sec
- machine->set_speed(0);
+ machine->set_speed(1000); // Set default speed to 1 sec
// Connect machine signals and slots
connect(ui->actionRun, SIGNAL(triggered(bool)), machine, SLOT(play()));
diff --git a/qtmips_gui/newdialog.cpp b/qtmips_gui/newdialog.cpp
index 9d0e1ad..062eb2d 100644
--- a/qtmips_gui/newdialog.cpp
+++ b/qtmips_gui/newdialog.cpp
@@ -18,10 +18,6 @@ NewDialog::NewDialog(QWidget *parent, QSettings *settings) : QDialog(parent) {
// Signals on Core tab
CUSTOM_PRESET(ui->pipelined);
CUSTOM_PRESET(ui->hazard);
- CUSTOM_PRESET(ui->flush_jump);
- CUSTOM_PRESET(ui->prediction);
- CUSTOM_PRESET(ui->prediction_static);
- CUSTOM_PRESET(ui->prediction_one_dynamic);
// Signals on Memory tab
CUSTOM_PRESET(ui->mem_protec_write);
CUSTOM_PRESET(ui->mem_protec_exec);
@@ -83,9 +79,6 @@ void NewDialog::preset(bool value) {
// Core settings
ui->pipelined->setChecked(pip);
ui->hazard->setChecked(pip);
- ui->flush_jump->setChecked(pip);
- ui->prediction->setChecked(pip);
- ui->prediction_one_dynamic->setChecked(pip);
// Memory settings
ui->mem_protec_write->setChecked(true);
ui->mem_protec_exec->setChecked(true);
@@ -116,10 +109,6 @@ void NewDialog::load_settings() {
// Core tab
LOAD_BUTTON(pipelined, false);
LOAD_BUTTON(hazard, false);
- LOAD_BUTTON(flush_jump, false);
- LOAD_BUTTON(prediction, false);
- LOAD_BUTTON(prediction_static, true);
- LOAD_BUTTON(prediction_one_dynamic, false);
// Memory tab
LOAD_BUTTON(mem_protec_write, true);
LOAD_BUTTON(mem_protec_exec, true);
@@ -137,10 +126,6 @@ void NewDialog::store_settings() {
// Core tab
STORE_BUTTON(pipelined);
STORE_BUTTON(hazard);
- STORE_BUTTON(flush_jump);
- STORE_BUTTON(prediction);
- STORE_BUTTON(prediction_static);
- STORE_BUTTON(prediction_one_dynamic);
// Memory tab
STORE_BUTTON(mem_protec_write);
STORE_BUTTON(mem_protec_exec);