Package mars.tools
Class BHTableModel
java.lang.Object
javax.swing.table.AbstractTableModel
mars.tools.BHTableModel
- All Implemented Interfaces:
Serializable
,TableModel
Simulates the actual functionality of a Branch History Table (BHT).
The BHT consists of a number of BHT entries which are used to perform branch prediction. The entries of the BHT are stored as a Vector of BHTEntry objects. The number of entries is configurable but has to be a power of 2. The history kept by each BHT entry is also configurable during run-time. A change of the configuration however causes a complete reset of the BHT.
The typical interaction is as follows:
- Construction of a BHT with a certain number of entries with a given history size.
- When encountering a branch instruction the index of the relevant BHT entry is calculated via the
getIdxForAddress(int)
method. - The current prediction of the BHT entry at the calculated index is obtained via the
getPredictionAtIdx(int)
method. - After detecting if the branch was really taken or not, this feedback is provided to the BHT by the
updatePredictionAtIdx(int, boolean)
method.
Additionally it serves as TableModel that can be directly used to render the state of the BHT in a JTable. Feedback provided to the BHT causes a change of the internal state and a repaint of the table(s) associated to this model.
- Author:
- ingo.kofler@itec.uni-klu.ac.at
- See Also:
- Serialized Form
-
Constructor Summary
ConstructorsConstructorDescriptionBHTableModel(int numEntries, int historySize, boolean initVal)
Constructs a new BHT with given number of entries and history size. -
Method Summary
Modifier and TypeMethodDescriptionClass<?>
getColumnClass(int i)
Returns the class/type of the i-th column of the table.int
Returns the number of columns.getColumnName(int i)
Returns the name of the i-th column of the table.int
getIdxForAddress(int address)
Returns the index into the BHT for a given branch instruction address.boolean
getPredictionAtIdx(int index)
Retrieve the prediction for the i-th BHT entry.int
Returns the number of entries of the BHT.getValueAt(int row, int col)
Returns the value of the cell at the given row and column Required by the TableModel interface.void
initBHT(int numEntries, int historySize, boolean initVal)
Initializes the BHT with the given size and history.void
updatePredictionAtIdx(int index, boolean branchTaken)
Updates the BHT entry with the outcome of the branch instruction.Methods inherited from class javax.swing.table.AbstractTableModel
addTableModelListener, findColumn, fireTableCellUpdated, fireTableChanged, fireTableDataChanged, fireTableRowsDeleted, fireTableRowsInserted, fireTableRowsUpdated, fireTableStructureChanged, getListeners, getTableModelListeners, isCellEditable, removeTableModelListener, setValueAt
-
Constructor Details
-
BHTableModel
public BHTableModel(int numEntries, int historySize, boolean initVal)Constructs a new BHT with given number of entries and history size.- Parameters:
numEntries
- number of entries in the BHThistorySize
- size of the history (in bits/number of past branches)
-
-
Method Details
-
getColumnName
Returns the name of the i-th column of the table. Required by the TableModel interface.- Specified by:
getColumnName
in interfaceTableModel
- Overrides:
getColumnName
in classAbstractTableModel
- Parameters:
i
- the index of the column- Returns:
- name of the i-th column
-
getColumnClass
Returns the class/type of the i-th column of the table. Required by the TableModel interface.- Specified by:
getColumnClass
in interfaceTableModel
- Overrides:
getColumnClass
in classAbstractTableModel
- Parameters:
i
- the index of the column- Returns:
- class representing the type of the i-th column
-
getColumnCount
public int getColumnCount()Returns the number of columns. Required by the TableModel interface.- Returns:
- currently the constant 6
-
getRowCount
public int getRowCount()Returns the number of entries of the BHT. Required by the TableModel interface.- Returns:
- number of rows / entries of the BHT
-
getValueAt
Returns the value of the cell at the given row and column Required by the TableModel interface.- Parameters:
row
- the row indexcol
- the column index- Returns:
- the value of the cell
-
initBHT
public void initBHT(int numEntries, int historySize, boolean initVal)Initializes the BHT with the given size and history. All previous data like the BHT entries' history and statistics will get lost. A refresh of the table that use this BHT as model will be triggered.- Parameters:
numEntries
- number of entries in the BHT (has to be a power of 2)historySize
- size of the history to considerinitVal
- initial value for each entry (true means take branch, false do not take branch)
-
getIdxForAddress
public int getIdxForAddress(int address)Returns the index into the BHT for a given branch instruction address. A simple direct mapping is used.- Parameters:
address
- the address of the branch instruction- Returns:
- the index into the BHT
-
getPredictionAtIdx
public boolean getPredictionAtIdx(int index)Retrieve the prediction for the i-th BHT entry.- Parameters:
index
- the index of the entry in the BHT- Returns:
- the prediction to take (true) or do not take (false) the branch
-
updatePredictionAtIdx
public void updatePredictionAtIdx(int index, boolean branchTaken)Updates the BHT entry with the outcome of the branch instruction. This causes a change in the model and signals to update the connected table(s).- Parameters:
index
- the index of the entry in the BHTbranchTaken
-
-