计算机系统结构课程实验报告实验一:存贮层次模拟器(共28页).doc
《计算机系统结构课程实验报告实验一:存贮层次模拟器(共28页).doc》由会员分享,可在线阅读,更多相关《计算机系统结构课程实验报告实验一:存贮层次模拟器(共28页).doc(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上计算机系统结构课程实验报告实验一:存贮层次模拟器计算机系统结构课程 实 验 报 告 20122013 学年 第 1 学期 学 生 姓 名: 学 生 班 级: 学 生 学 号: 指 导 教 师: 孙全红 教 研 室: 计算机系统结构教研室 2012年 10月 23日 实验一:存贮层次模拟器 一、实验目的与要求 使学生清楚认识虚拟存贮层次结构,熟练掌握常用的几种存储地址映象与变换方法,以及FIFO、LRU等替换算法的工作全过程。 要求用程序实现任意地址流在存储层次上的命中情况,实验结束后提交源程序和实验说明书。 二、实验内容 在模拟器上实现在任意地址流下求出在cache
2、主存辅存三层存贮层次上的命中率。 三、实验步骤 1(Cache主存:映像方式可以选择全相联、直接映象、组相联方式;替换算法一般使用LRU算法。 2(要求Cache大小、主存容量、块大小以及组数等可以输入修改。 3(求出命中率;显示替换的全过程;任选一种高级语言来做。 4(要有简洁、易于操作的界面。 四、程序源代码 # include # include # include struct CacheStruct int blocknum; int count; ; void All_LinkLRU(CacheStruct cs,int bottom,int stream,int k,int re
3、sult2020) int j=0,m=0,max=0,location=0,hitnum=0; coutendl; /cout主存访问块流 是否替换 是否命中 Cache块存放情况endl; for(int i=0;ik;i+) if(jbottom)/Cache块不满 m=0; if(j=0) csj.blocknum=streami; csj.count=0; resultji=streami; /resultbottomi=0; /resultbottom+1i=0;不需要 /*coutstreamitt; cout块失效tt; cout未命中tt; for(int t=0;tbott
4、om;t+) if(cst.blocknum!=-1) coutcst.blocknum ; else cout空 ; coutendl;*/ j+; / continue; else while(mj & csm.blocknum!=streami) csm.count+; m+; if(m=j)/已存在的未命中 csj.blocknum=streami; csj.count=0; resultji=streami; /resultbottomi=0; / resultbottom+1i=0;不需要 /*coutstreamitt; cout块失效tt; cout未命中tt; for(int
5、 t=0;tbottom;t+) if(cst.blocknum!=-1) coutcst.blocknum ; else cout空 ; coutendl;*/ j+; / continue; else/已存在的命中了 csm.count=0; m+; resultbottom+1i=0; /*coutstreamitt; cout无替换tt; cout命中tt; for(int t=0;tbottom;t+) if(cst.blocknum!=-1) coutcst.blocknum ; else cout空 ; coutendl;*/ if(m!=j) while(mj) csm.cou
6、nt+; m+; hitnum+; / continue; else/Cache块满了 m=0;max=0;location=0; while(mmax) location=m; max=csm.count; m+; if(m=bottom)/未命中,所有块计数器都已加1, resultbottomi=cslocation.blocknum; /*coutstreamitt; cout替换块cslocation.blocknumtt; cout未命中tt;*/ cslocation.blocknum=streami; cslocation.count=0; resultlocationi=st
7、reami; /* for(int t=0;tbottom;t+) if(cst.blocknum!=-1) coutcst.blocknum ; else cout空 ; coutendl;*/ else/命中, resultbottom+1i=0; /*coutstreamitt; cout无替换tt; cout命中tt;*/ csm.count=0; m+; if(m!=bottom) while(m!=bottom) csm.count+; m+; /*for(int t=0;tbottom;t+) if(cst.blocknum!=-1) coutcst.blocknum ; els
8、e cout空 ; coutendl;*/ hitnum+; if(ik-1) for(int r=0;rbottom;r+) resultri+1=resultri; cout块地址流 ; for(int t=0;tk;t+) coutstreamtt; coutendlt; for(t=0;t(bottom+2);t+) coutendlt; for(int s=0;sk;s+) if(tbottom) if(resultts=-1) cout空t; else coutresulttst; else if(t=bottom) if(resultts!=-1)/块替换 cout替换块resu
9、lttst; else if(resultt+1s!=-1)/块命中 cout无替换t; else cout块失效t; else if(resultts!=-1)/命中 cout命中t; else cout未命中t; coutendl; coutendl; if(hitnum!=0) cout采用全相联地址映射方式访问Cache的命中率为:hitnum/kendl; else cout采用全相联地址映射方式访问Cache的命中率为:0endl; void Direct_link(CacheStruct cs,int bottom,int stream,int k,int result2020)
10、 / cout主存访问块流 是否替换 是否命中 Cache块存放情况endl; int location=-1,hitnum=0,m=0; for(int i=0;ik;i+) location=streami%bottom; if(cslocation.blocknum!=-1)/若产生冲突 if(cslocation.blocknum=streami)/若命中 resultbottom+1i=0; /*coutstreamitt; cout无替换tt; cout命中tt; for(int t=0;tbottom;t+) if(cst.blocknum!=-1) coutcst.blockn
11、um ; else cout空 ; coutendl;*/ hitnum+; /continue; else resultbottomi=cslocation.blocknum; /* coutstreamitt; cout替换块cslocation.blocknumtt; cout未命中tt; */ cslocation.blocknum=streami; resultlocationi=streami; / cslocation.count=0; /*for(int t=0;tbottom;t+) if(cst.blocknum!=-1) coutcst.blocknum ; else c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机系统 结构 课程 实验 报告 存贮 层次 模拟器 28
限制150内