计算机系统结构课程实验

  • 格式:docx
  • 大小:363.10 KB
  • 文档页数:30

计算机系统结构课程实验指导书2016——2017 学年第 2学期姓名:徐益学号:201415725指导教师:薛素静教研室:计算机系统结构教研室实验:存贮层次模拟器1学时:4学时实验类型:(综合/设计):设计一、实验目的与要求使学生清楚认识虚拟存贮层次结构,熟练掌握常用的几种存储地址映像与变换方法,以及FIFO、LRU等替换算法的工作全过程。

要求用程序实现任意地址流在存储层次上的命中情况,实验结束后提交源程序和实验说明书。

二、实验内容在模拟器上实现在任意地址流下求出在 Cache—主存两层存贮层次上的命中率。

三、实验步骤1.Cache—主存:映像方式要实现全相联、直接映象、组相联方式三种方式,并选择每一种映像方式下输出结果;替换算法一般使用LRU算法。

2.要求主存容量、Cache大小、块大小以及组数等可以输入修改。

3.求出命中率;显示替换的全过程;任选一种高级语言来做。

4.要设计简洁、易于操作的界面。

四、实验仪器设备计算机(装有java、Apache tomcat)五、实验过程1、设计思想:(1)在本次实验中,我使用的是java语言来实现。

(2)首先,建一个web项目,然后将整个实验分为前端和后端两部分,前端为jsp页面,用来输入数据和显示实验结果。

后端为Java,在本次实验我用了一个MyServlt类,在这个类中用来接收前端的数据,然后进行一系列的逻辑处理;即各个算法的具体实现。

最后将数据传送给前端输出。

(3)将整个cache看成是一个对象,然后建一个实体类Cache。

在这个类中有cache的大小、块大小、块数、块地址、计数器、计时器等属性。

块地址用于存放地址流,计数器用于计算命中率,当命中一次,计数器加1。

计时器用于LRU 算法。

当命中时,计时器清零。

每一个循环结束,有地址的块计时器加1;替换时,找到计时器最大的块地址,然后把它替换出去。

(4)将要输出的数据封装成一个类,然后进行输出。

六、实验代码1、前端代码:Index.jsp代码(用于输入数据):在本页面中用到jqurey插件以达到美观效果,其中的js、css等代码就不粘贴出来了。

<%@page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+p ath;%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ""><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>体系结构实验一</title><meta name="author" content="DeathGhost" /><link rel="stylesheet" type="text/css" href="css/style.css" tppabs="css/style.css" /><style>body{height:100%;background:#16a085;overflow:hidden;}canvas{z-index:-1;position:absolute;}</style><script src="js/jquery.js"></script><script src="js/verificationNumbers.js" tppabs="js/verificationNumbers.js"></script><script src="js/Particleground.js" tppabs="js/Particleground.js"></script><script>$(document).ready(function() {//粒子背景特效$('body').particleground({dotColor: '#5cbdaa',lineColor: '#5cbdaa'});$('#FAssociative').click(function(){var MMC = $("#MMC").val();var cache = $("#cache").val();var chunk = $("#chunk").val();var group = $("#group").val();var address = $("#address").val();form1.action = "<%=basePath%>/cache.jsp?_m=FAssociative"; $("#form1").submit();})$('#dMapping').click(function(){var MMC = $("#MMC").val();var cache = $("#cache").val();var chunk = $("#chunk").val();var group = $("#group").val();var address = $("#address").val();form1.action = "<%=basePath%>/cache.jsp?_m=dMapping"; $("#form1").submit();})$('#SAssociative').click(function(){var MMC = $("#MMC").val();var cache = $("#cache").val();var chunk = $("#chunk").val();var group = $("#group").val();var address = $("#address").val();form1.action = "<%=basePath%>/cache.jsp?_m=SAssociative";$("#form1").submit();})});</script></head><body><dl class="admin_login"><dt><strong>存贮层次模拟器1</strong><em>Memory hierarchy simulator</em></dt><form id="form1" action="" method="post"><dd class="m_icon"><input type="text" id="MMC" name="MMC" placeholder="主存容量" class="login_txtbx"/></dd><dd class="c_icon"><input type="text" id="cache" name="cache" placeholder="cache大小" class="login_txtbx"/></dd><dd class="c_icon"><input type="text" id="chunk" name="chunk" placeholder="块大小" class="login_txtbx"/></dd><dd class="g_icon"><input type="text" id="group" name="group" placeholder="cache组数" class="login_txtbx"/></dd><dd class="a_icon"><input type="text" id="address" name="address" placeholder="地址流" class="login_txtbx"/></dd><dd><input type="button" id="FAssociative" value="全相联" class="submit_btn"/></dd><dd><input type="button" id="dMapping" value="直接映像" class="submit_btn"/></dd><dd><input type="button" id="SAssociative" value="组相联" class="submit_btn"/></dd><dd><p>来源:<a href="" target="_blank">徐益</a></p></dd></form></dl></body></html>Main.jsp代码(用于输出数据):在本页面中用到jqurey插件以达到美观效果,其中的js、css等代码就不粘贴出来了。