网站大量收购独家精品文档,联系QQ:2885784924

计算机体系结构试验2.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机系统结构课程 实验报告 2010 ——2011 学年 第 2 学期 实验二:存贮层次模拟器 学时:2学时 实验类型:(综合/设计):设计 一、实验目的与要求 使学生清楚认识cache-主存层次结构,熟练掌握常用的几种存储地址映象与变换方法,以及FIFO、LRU等替换算法的工作全过程。 要求用程序实现任意地址流在存储层次上的命中情况,实验结束后提交源程序和实验说明书。 二、实验内容 在模拟器上实现在任意地址流下求出在 Cache—主存存贮层次上的命中率。 三、实验步骤 1.Cache—主存:映像方式可以选择全相联、直接映象、组相联方式;替换算法一般使用LRU算法。 2.要求主存容量、Cache大小、块大小以及组数等可以输入修改。 3.求出命中率;显示替换的全过程;任选一种高级语言来做。 4.要有简洁、易于操作的界面。 四、代码 #include stdio.h #include string.h typedef struct CMemory4 { int gm;//组号 int bm; }; CMemory4 mem4[50]; typedef struct CCach4 { int gc; int bc; int cc; int bs; }; CCach4 cac4[50]; int a2[10][20],b2[10][20]; void inputmem2(int m_num,int group) //输入 { int i,t=0,nn=0; for(i=0;im_num;) { for(int j=0;jgroup;j++) { if(i=m_num) { break; } printf(第%d块,i); scanf(%d,nn); mem4[i].bm=nn; mem4[i].gm=nn%group; i++; } } } void initcac2(int ilen,int group) // { int i=0,j=0; for(i;igroup;i++) { for(j;jilen/group;j++) { //cac[j].gc=i;// cac4[j].bc=-1;// cac4[j].cc=0; cac4[j].bs=j; } } } void change2(int x,int y,int cnum) { for(int i=0;icnum;i++) { cac4[i].cc+=1; } a2[y][x]=cac4[y].bc; b2[y][x]=cac4[y].cc; } void fdl(int cnum) { int tmp; tmp=cac4[0].bc; for(int i=0;icnum;i++) { cac4[i].bc=cac4[i+1].bc; } cac4[cnum-1].bc=tmp; } float steadcac2(int tt,int c_num,int j,float h,int i,int g,int group) { float sc=h; int fi=1,fj;//判断是否装满的标记 for (int jj=0;jjc_num;jj++)//判断cache中是否装满 { if(jj%group==gcac4[jj].bc==-1) { fi=0;//没有装满 fj=jj; break; } } if(fi==0)// 未装满 { cac4[fj].bc=tt;//装入Cache中 printf(块%d装入%d组%d块号\n,tt,g,cac4[fj].bs); } else //装满 { int m=0; for(m;mc_num;m++) { if(tt==cac4[m].bc) { printf(块%d命中%d组%d块号\n,tt,g,cac4[m].bs); sc=sc+1;//命中 break; } } if (m==c_num) { fdl(c_num);//FIFO替换,把进队较早的替换掉 cac4[0].bc=tt; printf

文档评论(0)

文档精品 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6203200221000001

1亿VIP精品文档

相关文档