• 大小: 29KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-05-16
  • 语言: Java
  • 标签: cache  java  缓存技术  

资源简介

java开发的cache模拟器,带有界面,能够设置 Cache、 Cache 块的大小,能够设置Cache 的映射机制:直接映射、n-路组相联,能够设置 Cache 的替换策略:LRU、FIFO,能够设置 Cache 的写策略:写回法、写直达法

资源截图

代码片段和文件信息

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.*;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EtchedBorder;
public class CCacheSim extends Jframe implements ActionListener{

private JPanel panelTop panelLeft panelRight panelBottom;
private JButton execStepBtn execAllBtn fileBotton;
private JComboBox csBox bsBox wayBox replaceBox prefetchBox writeBox allocBox;
private JFileChooser fileChoose;

private JLabel labelToplabelLeftrightLabelbottomLabelfileLabelfileAddrBtn stepLabel1 stepLabel2
    csLabel bsLabel wayLabel replaceLabel prefetchLabel writeLabel allocLabel;
private JLabel results[];
//添加
private JLabel hitCount[];
private JLabel hitRate[];
private JLabel stepLabel[];


    //参数定义
private String cachesize[] = { “2KB“ “8KB“ “32KB“ “128KB“ “512KB“ “2MB“ };
private String blocksize[] = { “16B“ “32B“ “64B“ “128B“ “256B“ };
private String way[] = { “直接映象“ “2路“ “4路“ “8路“ “16路“ “32路“ };
private String replace[] = { “LRU“ “FIFO“ “RAND“ };
private String pref[] = { “不预取“ “不命中预取“ };
private String write[] = { “写回法“ “写直达法“ };
private String alloc[] = { “按写分配“ “不按写分配“ };
private String typename[] = { “读数据“ “写数据“ “读指令“ };
private String hitname[] = {“不命中“ “命中“ };

//右侧结果显示
private String rightLable[]={“访问总次数:““读指令次数:““读数据次数:““写数据次数:“};
//添加
private String ShitCount=“不命中次数: “;
private String ShitRate=“不命中率: “;
private String SstepLabel[]={“访问类型: ““地址: ““块号:““块内地址:““索引: ““命中情况: “};

//打开文件
private File file;

//分别表示左侧几个下拉框所选择的第几项,索引从 0 开始
private int csIndex bsIndex wayIndex replaceIndex prefetchIndex writeIndex allocIndex;

//其它变量定义
//...
static int [] InstCount=new int[4];
static int readData;      //读数据指令条数
static int writeData;    //写数据指令条数
static int readInst; //读指令条数
static int count;         //指令总条数
int offset;  //字节偏移量

List  instruction=new ArrayList();  //存放指令的数组
public class Instruction{
String type;    //指令类型
String addr;    //指令地址
}

/*
 * 构造函数,绘制模拟器面板
 */
public CCacheSim(){
super(“Cache Simulator“);
draw();
}


//响应事件,共有三种事件:
//   1. 执行到底事件
//   2. 单步执行事件
//   3. 文件选择事件
public void actionPerformed(ActionEvent e){

if (e.getSource() == execAllBtn) {
simExecAll();
}
if (e.getSource() == execStepBtn) {
simExecStep();
}
if (e.getSource() == fileBotton){
fileChoose=new JFileChooser();
int fileOver = fileChoose.showOpenDialog(null);
//System.out.println(“fileOver: “+fileOver);
if (fileOver == 0) {

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-11-25 23:35  cache\
     目录           0  2014-11-25 23:35  cache\mycache\
     文件         232  2014-11-20 18:32  cache\mycache\.classpath
     文件         383  2014-11-20 18:32  cache\mycache\.project
     目录           0  2014-11-25 23:35  cache\mycache\bin\
     文件         777  2014-11-25 23:33  cache\mycache\bin\CCacheSim$1.class
     文件         777  2014-11-25 23:33  cache\mycache\bin\CCacheSim$2.class
     文件         777  2014-11-25 23:33  cache\mycache\bin\CCacheSim$3.class
     文件         777  2014-11-25 23:33  cache\mycache\bin\CCacheSim$4.class
     文件         777  2014-11-25 23:33  cache\mycache\bin\CCacheSim$5.class
     文件         779  2014-11-25 23:33  cache\mycache\bin\CCacheSim$6.class
     文件         779  2014-11-25 23:33  cache\mycache\bin\CCacheSim$7.class
     文件         446  2014-11-25 23:33  cache\mycache\bin\CCacheSim$Cache.class
     文件         450  2014-11-25 23:33  cache\mycache\bin\CCacheSim$Instruction.class
     文件       20527  2014-11-25 23:33  cache\mycache\bin\CCacheSim.class
     文件       14615  2014-11-21 19:17  cache\mycache\CCacheSim.java
     目录           0  2014-11-25 23:35  cache\mycache\src\
     文件       28974  2014-11-25 23:33  cache\mycache\src\CCacheSim.java

评论

共有 条评论