计算机系统结构试验一.docx

上传人:b****6 文档编号:7456853 上传时间:2023-05-11 格式:DOCX 页数:16 大小:102.11KB
下载 相关 举报
计算机系统结构试验一.docx_第1页
第1页 / 共16页
计算机系统结构试验一.docx_第2页
第2页 / 共16页
计算机系统结构试验一.docx_第3页
第3页 / 共16页
计算机系统结构试验一.docx_第4页
第4页 / 共16页
计算机系统结构试验一.docx_第5页
第5页 / 共16页
计算机系统结构试验一.docx_第6页
第6页 / 共16页
计算机系统结构试验一.docx_第7页
第7页 / 共16页
计算机系统结构试验一.docx_第8页
第8页 / 共16页
计算机系统结构试验一.docx_第9页
第9页 / 共16页
计算机系统结构试验一.docx_第10页
第10页 / 共16页
计算机系统结构试验一.docx_第11页
第11页 / 共16页
计算机系统结构试验一.docx_第12页
第12页 / 共16页
计算机系统结构试验一.docx_第13页
第13页 / 共16页
计算机系统结构试验一.docx_第14页
第14页 / 共16页
计算机系统结构试验一.docx_第15页
第15页 / 共16页
计算机系统结构试验一.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

计算机系统结构试验一.docx

《计算机系统结构试验一.docx》由会员分享,可在线阅读,更多相关《计算机系统结构试验一.docx(16页珍藏版)》请在冰点文库上搜索。

计算机系统结构试验一.docx

计算机系统结构试验一

 

计算机系统结构课程

实验指导书

2014——2015学年

第1学期

 

学生班级:

学生学号:

学生姓名:

指导教师:

教研室:

计算机系统结构教研室

 

实验:

存贮层次模拟器1

学时:

4学时

实验类型:

(综合/设计):

设计

一、实验目的与要求

使学生清楚认识虚拟存贮层次结构,熟练掌握常用的几种存储地址映像与变换方法,以及FIFO、LRU等替换算法的工作全过程。

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

二、实验内容

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

三、实验步骤

1.Cache—主存:

映像方式要实现全相联、直接映象、组相联方式三种方式,并选择每一种映像方式下输出结果;替换算法一般使用LRU算法。

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

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

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

四、实验代码:

privatevoidbutton1_Click(objectsender,EventArgse)//全相联

{if(textBox1.Text==""||textBox2.Text==""||textBox3.Text==""||textBox4.Text==""||textBox5.Text=="")

MessageBox.Show("请输入数据!

");

else

{stringstate="";

stringstr=textBox5.Text;

introw=str.Length;

intmzcs=0,index=0;

floatmzl=0.0f;

intcolumn=Convert.ToInt32(textBox2.Text);

inti=0,j=0,t=0;

int[]iResult;

iResult=newint[column];

int[]imax;

imax=newint[column];

for(i=0;i

imax[i]=0;

if(comboBox1.Text=="装入")

{intiSeed=Convert.ToInt32(textBox1.Text);

Randomro=newRandom(iSeed);

longtick=DateTime.Now.Ticks;

Randomran=newRandom((int)(tick&0xffffffffL)|(int)(tick>>32));

intiUp=iSeed;

intiDown=0;

for(i=0;i

{for(;t==0;)

{t=1;

iResult[i]=ro.Next(iDown,iUp);

for(j=1;j

if(iResult[i]==iResult[i-j])

{

t=0;

break;

}}}

for(i=0;i

dataGridView1.Columns.Add("first","第"+i.ToString()+"块Cache");

dataGridView1.Columns.Add("first","状态");

index=this.dataGridView1.Rows.Add();

for(i=0;i

{this.dataGridView1.Rows[index].Cells[i].Value=iResult[i].ToString();

}

this.dataGridView1.Rows[index].Cells[column].Value="Cache初态";

for(j=0;j

{index=this.dataGridView1.Rows.Add();

for(intk=0;k

imax[k]++;

for(i=0;i

{if(iResult[i]==(Convert.ToInt32(str[j])-48))

{

mzcs++;

imax[i]=0;

state="命中";

break;

}}

if(i>=column)

{intk=0;

for(k=0;k

{if(iResult[k]==-1)

{

iResult[k]=Convert.ToInt32(str[j])-48;

state="装入";

break;

}

}

if(k>=column)

{iUp=imax[0];

iDown=0;

for(t=1;t

if(iUp

{

iUp=imax[t];

iDown=t;

}

iResult[iDown]=Convert.ToInt32(str[j])-48;

state="命中";

imax[iDown]=0;

}}

for(i=0;i

this.dataGridView1.Rows[index].Cells[i].Value=iResult[i].ToString();

}

this.dataGridView1.Rows[index].Cells[column].Value=state;

}

mzl=1000000*mzcs/row;

textBox6.Text="0."+Convert.ToString(mzl);

}

else

{

for(i=0;i

iResult[i]=-1;

intiUp=0,iDown=0;

for(i=0;i

dataGridView1.Columns.Add("first","第"+i.ToString()+"块Cache");

dataGridView1.Columns.Add("first","状态");

if(row<=column)

{iResult=newint[row];

for(i=0;i

{iResult[i]=Convert.ToInt32(str[i])-48;

}

for(i=0;i

{index=this.dataGridView1.Rows.Add();

for(j=0;j<=i;j++)

{

this.dataGridView1.Rows[index].Cells[j].Value=iResult[j].ToString();

}

this.dataGridView1.Rows[index].Cells[column].Value="装入";

}

mzl=1000000*mzcs/row;

textBox6.Text="0."+Convert.ToString(mzl);

}

else

{for(j=0;j

{

index=this.dataGridView1.Rows.Add();

for(intk=0;k

imax[k]++;

for(i=0;i

{

if(iResult[i]==(Convert.ToInt32(str[j])-48))

{

mzcs++;

imax[i]=0;

state="命中";

break;

}}

if(i>=column)

{intk=0;

for(k=0;k

{

if(iResult[k]==-1)

{

iResult[k]=Convert.ToInt32(str[j])-48;

state="装入";

break;

}}

if(k>=column)

{iUp=imax[0];

iDown=0;

for(t=1;t

if(iUp

{

iUp=imax[t];

iDown=t;

}

iResult[iDown]=Convert.ToInt32(str[j])-48;

state="命中";

imax[iDown]=0;

}}

for(i=0;i

{this.dataGridView1.Rows[index].Cells[i].Value=iResult[i].ToString();

}

this.dataGridView1.Rows[index].Cells[column].Value=state;

}

mzl=1000000*mzcs/row;

textBox6.Text="0."+Convert.ToString(mzl);

}}}}

privatevoidbutton2_Click(objectsender,EventArgse)//直接相联

{

if(textBox1.Text==""||textBox2.Text==""||textBox3.Text==""||textBox4.Text==""||textBox5.Text=="")

MessageBox.Show("请输入数据!

");

else

{inti=0,j=0,m=0,n=0,row=0,k=0,index=0;

boolstate=false;

m=Convert.ToInt32(textBox1.Text);

n=Convert.ToInt32(textBox2.Text);

stringstr=textBox5.Text;

floatmzl=0.00f;

int[]iResult;

iResult=newint[n];

int[]iResult0;

row=str.Length;

stringszt="";

intmzcs=0;

if(comboBox1.Text=="装入")

{for(i=0;i

dataGridView1.Columns.Add("first","第"+i.ToString()+"块Cache");

dataGridView1.Columns.Add("first","状态");

index=this.dataGridView1.Rows.Add();

for(i=0;i

{iResult[i]=i;

this.dataGridView1.Rows[index].Cells[i].Value=i.ToString();

}

this.dataGridView1.Rows[index].Cells[n].Value="Cache初态";

iResult0=newint[n];

for(i=0;i

iResult0[i]=iResult[i];

for(j=0;j

{index=this.dataGridView1.Rows.Add();

k=(Convert.ToInt32(str[j])-48)%n;

if(iResult0[k]==Convert.ToInt32(str[j])-48)

{mzcs++;state=true;

}else

{iResult[k]=Convert.ToInt32(str[j])-48;

}for(i=0;i

this.dataGridView1.Rows[index].Cells[i].Value=iResult[i].ToString();

}

if(state){this.dataGridView1.Rows[index].Cells[n].Value="命中";

state=false;

}

else

this.dataGridView1.Rows[index].Cells[n].Value="替换";

}

mzl=1000000*mzcs/row;

textBox6.Text="0."+Convert.ToString(mzl);}

else

{for(i=0;i

dataGridView1.Columns.Add("first","第"+i.ToString()+"块Cache");

dataGridView1.Columns.Add("first","状态");

iResult0=newint[n];

for(i=0;i

{iResult0[i]=-1;

iResult[i]=-1;

}

for(j=0;j

{index=this.dataGridView1.Rows.Add();

k=(Convert.ToInt32(str[j])-48)%n;

if(iResult0[k]==Convert.ToInt32(str[j])-48)

{mzcs++;

state=true}

else

{if(iResult[k]==-1)

szt="装入";

else

szt="替换";

iResult[k]=Convert.ToInt32(str[j])-48;

}

for(i=0;i

{this.dataGridView1.Rows[index].Cells[i].Value=iResult[i].ToString();}

if(state)

this.dataGridView1.Rows[index].Cells[n].Value="命中";

state=false;

}else

this.dataGridView1.Rows[index].Cells[n].Value=szt;

}mzl=1000000*mzcs/row;

textBox6.Text="0."+Convert.ToString(mzl);

}}}

privatevoidbutton3_Click(objectsender,EventArgse)//组相联

{if(textBox1.Text==""||textBox2.Text==""||textBox3.Text==""||textBox4.Text==""||textBox5.Text=="")

MessageBox.Show("请输入数据!

");

else

{boolstate=false;

stringcellstate="";

stringstr=textBox5.Text;

introw=str.Length;

intmzcs=0,index=0;

floatmzl=0.0f;

intcolumn=Convert.ToInt32(textBox2.Text);

intzcount=Convert.ToInt32(textBox4.Text);

intzpage=column/zcount;

inti=0,j=0,t=0,k=0;

intiUp=0,iDown=0;

int[,]iResult;

iResult=newint[zcount,zpage];

int[,]iResult0;

iResult0=newint[zcount,zpage];

iResult[0,0]=0;

for(i=0;i

for(j=0;j

iResult[i,j]=t;

iResult0[i,j]=t;

t++;

}t=0;

int[,]imax;

imax=newint[zcount,zpage];

for(i=0;i

for(j=0;j

imax[i,j]=0;

if(comboBox1.Text=="装入")

{for(i=0;i

for(j=0;j

dataGridView1.Columns.Add("first","主存第"+i.ToString()+"组"+"第"+j.ToString()+"页");

dataGridView1.Columns.Add("first","状态");

index=this.dataGridView1.Rows.Add();

t=0;

for(i=0;i

for(j=0;j

this.dataGridView1.Rows[index].Cells[t].Value=iResult[i,j].ToString();

t++;

}

this.dataGridView1.Rows[index].Cells[column].Value="主存初态";

for(j=0;j

{index=this.dataGridView1.Rows.Add();

for(k=0;k

for(i=0;i

imax[k,i]++;

intstrj=0;

strj=(Convert.ToInt32(str[j])-48)%column;

for(i=0;i

if(strj>=iResult0[i,0]&&strj<=iResult0[i,zpage-1])

{t=i;

break;

}

for(i=0;i

if((Convert.ToInt32(str[j])-48)==iResult[t,i])

mzcs++;

imax[t,i]=0;

state=true;

break;

}

if(i>=zpage)

{iUp=imax[t,0];

iDown=0;

for(k=1;k

if(iUp

{iUp=imax[t,k];

iDown=k;

}

iResult[t,iDown]=Convert.ToInt32(str[j])-48;

imax[t,iDown]=0;

}

t=0;

for(i=0;i

for(k=0;k

{

this.dataGridView1.Rows[index].Cells[t].Value=iResult[i,k].ToString();

t++;}

if(state){this.dataGridView1.Rows[index].Cells[column].Value="命中";

state=false;

}

else

this.dataGridView1.Rows[index].Cells[column].Value="替换";

}

mzl=1000000*mzcs/row;

textBox6.Text="0."+Convert.ToString(mzl);

}

else

{for(i=0;i

for(j=0;j

dataGridView1.Columns.Add("first","主存第"+i.ToString()+"组"+"第"+j.ToString()+"页");

dataGridView1.Columns.Add("first","状态");

for(i=0;i

for(j=0;j

iResult[i,j]=-1;

for(j=0;j

{index=this.dataGridView1.Rows.Add();

for(k=0;k

for(i=0;i

imax[k,i]++;

intstrj=0;

strj=(Convert.ToInt32(str[j])-48)%column;

for(i=0;i<

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2