mars.tools
Class CacheSimulator

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Window
              extended by java.awt.Frame
                  extended by javax.swing.JFrame
                      extended by mars.tools.AbstractMarsToolAndApplication
                          extended by mars.tools.CacheSimulator
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Observer, Accessible, RootPaneContainer, WindowConstants, MarsTool

public class CacheSimulator
extends AbstractMarsToolAndApplication

A data cache simulator. It can be run either as a stand-alone Java application having access to the mars package, or through MARS as an item in its Tools menu. It makes maximum use of methods inherited from its abstract superclass AbstractMarsToolOrApp. Pete Sanderson, v 1.0: 16-18 October 2006, v 1.1: 7 November 2006. v 1.2: 23 December 2010.

Version 1.2 fixes a bug in the hit/miss animator under full or N-way set associative. It was animating the block of initial access (first block of set). Now it animates the block of final access (where address found or stored). Also added log display to GUI (previously System.out).

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class mars.tools.AbstractMarsToolAndApplication
AbstractMarsToolAndApplication.ConnectButton, AbstractMarsToolAndApplication.EnterKeyListener
 
Nested classes/interfaces inherited from class javax.swing.JFrame
JFrame.AccessibleJFrame
 
Nested classes/interfaces inherited from class java.awt.Frame
Frame.AccessibleAWTFrame
 
Nested classes/interfaces inherited from class java.awt.Window
Window.AccessibleAWTWindow
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
 
Fields inherited from class mars.tools.AbstractMarsToolAndApplication
connectButton, isBeingUsedAsAMarsTool, theWindow, thisMarsApp
 
Fields inherited from class javax.swing.JFrame
accessibleContext, EXIT_ON_CLOSE, rootPane, rootPaneCheckingEnabled
 
Fields inherited from class java.awt.Frame
CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface javax.swing.WindowConstants
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
CacheSimulator()
          Simple constructor, likely used by the MARS Tools menu mechanism
CacheSimulator(String title, String heading)
          Simple constructor, likely used to run a stand-alone cache simulator.
 
Method Summary
protected  JComponent buildMainDisplayArea()
          Method that constructs the main cache simulator display area.
 String getName()
          Required MarsTool method to return Tool name.
protected  void initializePostGUI()
          The only post-GUI initialization is to create the initial cache object based on the default settings of the various combo boxes.
protected  void initializePreGUI()
          Initialize all JComboBox choice structures not already initialized at declaration.
static void main(String[] args)
          Main provided for pure stand-alone use.
protected  void processMIPSUpdate(Observable memory, AccessNotice accessNotice)
          Apply caching policies and update display when connected MIPS program accesses (data) memory.
protected  void reset()
          Method to reset cache, counters and display when the Reset button selected.
protected  void updateDisplay()
          Updates display immediately after each update (AccessNotice) is processed, after cache configuration changes as needed, and after each execution step when Mars is running in timed mode.
 
Methods inherited from class mars.tools.AbstractMarsToolAndApplication
action, addAsObserver, addAsObserver, addAsObserver, buildButtonAreaMarsTool, buildButtonAreaStandAlone, buildHeadingArea, deleteAsObserver, deleteAsObserver, getHelpComponent, go, isObserving, performSpecialClosingDuties, update
 
Methods inherited from class javax.swing.JFrame
addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update
 
Methods inherited from class java.awt.Frame
addNotify, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setResizable, setState, setTitle, setUndecorated
 
Methods inherited from class java.awt.Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOwnedWindows, getOwner, getOwnerlessWindows, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, paint, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setVisible, show, toBack, toFront
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resize, resize, setBackground, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.awt.MenuContainer
getFont, postEvent
 

Constructor Detail

CacheSimulator

public CacheSimulator(String title,
                      String heading)
Simple constructor, likely used to run a stand-alone cache simulator.

Parameters:
title - String containing title for title bar
heading - String containing text for heading shown in upper part of window.

CacheSimulator

public CacheSimulator()
Simple constructor, likely used by the MARS Tools menu mechanism

Method Detail

main

public static void main(String[] args)
Main provided for pure stand-alone use. Recommended stand-alone use is to write a driver program that instantiates a CacheSimulator object then invokes its go() method. "stand-alone" means it is not invoked from the MARS Tools menu. "Pure" means there is no driver program to invoke the Cache Simulator.


getName

public String getName()
Required MarsTool method to return Tool name.

Specified by:
getName in interface MarsTool
Specified by:
getName in class AbstractMarsToolAndApplication
Returns:
Tool name. MARS will display this in menu item.

buildMainDisplayArea

protected JComponent buildMainDisplayArea()
Method that constructs the main cache simulator display area. It is organized vertically into three major components: the cache configuration which an be modified using combo boxes, the cache performance which is updated as the attached MIPS program executes, and the runtime log which is optionally used to display log of each cache access.

Specified by:
buildMainDisplayArea in class AbstractMarsToolAndApplication
Returns:
the GUI component containing these three areas

processMIPSUpdate

protected void processMIPSUpdate(Observable memory,
                                 AccessNotice accessNotice)
Apply caching policies and update display when connected MIPS program accesses (data) memory.

Overrides:
processMIPSUpdate in class AbstractMarsToolAndApplication
Parameters:
memory - the attached memory
accessNotice - information provided by memory in MemoryAccessNotice object

initializePreGUI

protected void initializePreGUI()
Initialize all JComboBox choice structures not already initialized at declaration. Also creates initial default cache object. Overrides inherited method that does nothing.

Overrides:
initializePreGUI in class AbstractMarsToolAndApplication

initializePostGUI

protected void initializePostGUI()
The only post-GUI initialization is to create the initial cache object based on the default settings of the various combo boxes. Overrides inherited method that does nothing.

Overrides:
initializePostGUI in class AbstractMarsToolAndApplication

reset

protected void reset()
Method to reset cache, counters and display when the Reset button selected. Overrides inherited method that does nothing.

Overrides:
reset in class AbstractMarsToolAndApplication

updateDisplay

protected void updateDisplay()
Updates display immediately after each update (AccessNotice) is processed, after cache configuration changes as needed, and after each execution step when Mars is running in timed mode. Overrides inherited method that does nothing.

Overrides:
updateDisplay in class AbstractMarsToolAndApplication