搜档网
当前位置:搜档网 › 实验二 控制结构

实验二 控制结构

实验二  控制结构
实验二  控制结构

实验二控制结构

一、目的和要求

1.掌握Visual C++6.0集成环境中的单步执行;

2.熟悉if 与switch语句的格式、执行过程、使用方法及典型案例;

3.学会使用选择结构解决一般的实际问题,能编写简单的应用程序。

4.掌握循环结构while、do-while、for等语句格式、执行过程、使用方法及典型案例。

5.学习循环结构的嵌套使用。

6.掌握分支与循环综合程序的编写方法;

7.学习并熟悉break、continue的区别与使用。

8.学会常用数值与图形的编程方法。

二、实验设备及分组

1.Windows2000以上操作系统;

2.Visual C++6.0语言环境;

3.每人一台PC机。

三、内容和步骤

(一)验证分析程序

第一部分选择结构

1.由键盘输入三个数,判断能否构成三角形。

分析:

判断b+c>a是否成立,若不成立则一定不能构成三角形;若成立则有可能构成三角形,再判断b-c

参考程序如下:

#include

void main()

{

double a,b,c,t;

cout<<"请输入a的值"<

cin>>a;

cout<<"请输入b的值"<

cin>>b;

cout<<"请输入c的值"<

cin>>c;

t=b-c;

if(t<0)

t=-t;

if(b+c>a)

{

if(t

cout<<"能构成三角形"<

else

cout<<"不能构成三角形"<

}

else

cout<<"不能构成三角形"<

}

思考:

● 将程序改为非嵌套的if 语句实现。

● 在程序中增加语句,使其在能构成三角形的情况下进一步判断三角形的类型(直角、钝角、锐角三角形)。

提示:三角形的类型由最长边所对的角决定。假定三角形最长边为c ,其所对的角为θ。其他两边为a 、b 。计算公式如下:

ab

c

b a 2cos 2

2

2

-+=

θ

例如,

当c 2=a 2+b 2 时,为直角三角形; 当c 2>a 2+b 2 时,为钝角三角形; 当c 2

2.某商店“五·一”长假期间购物打折。规则如下:

若每位顾客一次购物,

① 满1000元,打九折; ② 满2000元,打八折; ③ 满3000元,打七折; ④ 满4000元,打六折; ⑤ 5000元,打五折;

编写程序,输入购物款,输出实收款。

解:本例使用了if-else if 语句进行多重判断。参考程序如下:

#include void main() {

double m,p; cout<<"输入购物款:"; cin>>m;

if(m<1000) p=m;

else if (m<2000)p=0.9*m;

else if(m<3000) p=0.8*m;

else if(m<4000) p=0.7*m; else if(m<5000) p=0.6*m; else p=0.5*m; cout<<"实收款:"<

}

3.有下列分段函数:

编一程序,输入x ,输出y 的值。 解:程序如下:

#include void main() {

float x,y; cout<<"Input x:"; cin>>x; if (x>=0) if (x>=10)

y=x*x*x; else

y=x*x-5;

else

y=x+1;

cout<<"y="<

}

运行结果:

Input x : -3 y=-2

第二部分 循环结构

1.计算:S=1+2+3+4+…+n 。

解:

程序流程图如图4.1所示,程序如下:

#include

void main()

{

int i,n,sum;

cout<<"Input an integer:"; cin>>n; sum=0; i=1; while (i<=n) { sum=sum+i; i++; }

cout<<"sum="<

图4.1 求累加和流程图

运行结果:

Input an integer:5

sum=15

2.裴波那契数列的前几个数为1,1,2,3,5,8,……,其规律为:

F1=1 (n=1)

F2=1 (n=2)

F n=F n-1+F n-2(n≥3)

编写程序求此数列的前面40个数。

分析:可设两个变量f1和f2,它们的初值为f1=1,即数列的第1项,f2=1,即数列的第2项,用一个循环结构来求数列的前40项,每次处理两项,所以共循环20次,进入循环后,首先输出f1、f2,然后令f1=f1+f2,即可求得第3项,再令f2=f2+f1,注意此时的f1已经是第3项了,所以可求得第4项;进入下一次循环时,首先输出第3、4项,然后按上述方法求得第5、6项,以此类推即可求得前40项。

解:

#include

#include

void main()

{

long int f1,f2;

int i;

f1=1;f2=1;

for (i=1;i<=20;i++)

{

cout<

if (i%2==0)

cout<

f1=f1+f2;

f2=f2+f1;

}

}

例中“if”语句的作用是使在一行中输出4个数。

运行结果:

1 1

2 3

5 8 13 21

34 55 89 144

233 377 610 987

1597 2584 4181 6765

10946 17711 28657 46368

75025 121393 196418 317811

514229 832040 1346269 2178309

3524578 5702887 9227465 14930352

24157817 39088169 63245986 102334155

3.求出100~200之间的所有素数,输出时一行打印五个素数。

分析:判断一个数a是否为素数,只需将它整除以2~a(取整)即可,如果都不能

整除,则a就是素数。

解:

#include

#include

#include

void main(void)

{

int a,k,i,n;

n=0;

for (a=100;a<=200;a++)

{

k=sqrt(a);

for (i=2;i<=k;i++)

if (a%i==0)

break;

if (i>k) //若i>k,则i为素数

{

cout<

n=n+1; //对素数统计个数

if (n%5==0)

cout<

}

}

cout<

}

程序运行后,输出,:

101 103 107 109 113

127 131 137 139 149

151 157 163 167 173

179 181 191 193 197

199

(二)完成实验项目

1.设计一个程序,判断从键盘输入的整数的正负性和奇偶性。

2.编写程序,实现下列函数功能:

3.已知奖金税率如下:(a代表奖金,r代表税率)

a<500(元) r=0%

500≤a<1000 r=3%

1000≤a<2000 r=5%

2000≤a<5000 r=8%

a≥5000 r=12%

输入一个奖金数,求税率、应交税款及实得奖金数。

3.输入某一年的年份和月份,计算该月的天数。

提示

(1)一年中的大月(1月、3月、5月、7月、8月、10月、12月),每月的天数为31

天;

(2)一年中的小月(4月、6月、9月、11月),每月的天数为30天;

(3)对于2月,则要判断该年是平年还是闰年,平年的2月为28天,闰年的2月为

29天。

某年符合下面两个条件之一就是闰年:

①年份能被400整除;

②年份能被4整除,但不能被100整除。

4.输入平面直角坐标系中一点的坐标值(x,y),判断该点是在那一个象限中或那一条坐标轴上。

第二部分循环结构

1.编程序打印一个如图4-3所示的数字金字塔:

图4-3 数字金字塔

2.输入一行字符,分别统计出其中英文字母、空格、数字字符、其它字符及单词的个数。

3.设有一个数列,它的前四项为0、0、2、5,以后每项分别是其前四项之和,编程求此数列的前20项。

4.求出1~599中能被3整除,且至少有一位数字为5的所有整数。如15、51、513均是满足条件的整数。

软件体系结构KWIC实验

《软件体系结构》 实验:软件体系结构风格之应用

一、实验目的 通过KWIC 实例分析,理解和掌握软件体系结构风格设计与实现。 二、实验内容 多种软件风格设计与实现之KWIC 实例: 1.采用主/子程序体系结构风格实现KWIC 关键词索引系统 2.采用面向对象体系架构风格实现KWIC 关键词索引系统 3.采用管道过滤 体系架构风格实现KWIC 关键词索引系统 4.采用事件过程调用体系架构风格实现KWIC 关键词索引系统 三、实验要求与实验环境 熟练掌握基于主/子程序体系结构风格的KWIC 关键词索引系统,在此基础上,完成基于面向对象体系架构风格的KWIC 关键词索引系统设计与实现。选做基于管道过滤体系架构风格的KWIC 关键词索引系统;选做基于事件过程调用体系架构 风格的KWIC 关键词索引系统。 实验课前完成实验报告的实验目的、实验环境、实验内容、实验操作过程等 内容;实验课中独立/团队操作完成实验报告的实验操作、实验结果及结论等内容;每人一台PC 机,所需软件Win2003/XP 、UML 工具(EclipseUML/ Rose/Visio/StartUML/)、Eclipse/MyEclipse、JDK6.0 等。 四、实验操作 1、采用主/子程序体系结构风格实现KWIC 关键词索引系统 主程序/子程序风格(Main Program/Subroutine Style)将系统组织成层次结构,包括一个主程序和一系列子程序。主程序是系统的控制器,负责调度各子程 序的执行。各子程序又是一个局部的控制器,调度其子程序的执行。设计词汇表:主程序main(), 子程序shift(), sort() 方法,方法的调用,返回构件和连接件类型:

系统结构实验设计

实践设计报告 设计名称:计算机系统结构实践设计 设计项目:流水线与流水线冲突 姓名:冯皓明 专业:计算机科学与技术 班级:18-4 学号:1804010405

计算机科学与技术学院 实验教学中心 20 20 年 5 月15 日 目录 一.实践设计的目的和意义 二.实践设计的内容和要求 三.设计用的设备仪器 四.实践设计的相关技术 五.项目设计与实现 六.结束语 一实验目的 加深对计算机流水线基本概念的理解。 理解MIPS结构如何用段流水线来实现,理解各段的功能和基本操作。 加深对数据冲突、结构冲突和控制冲突的理解,理解这三类冲突对CPU性能的影响。 通过采用相关技术来消解各种冲突,进一步理解解决流水线冲突的方法。二.要求 学习模拟器的结构、原理和基本操作方法。 运行样例程序,观察流水线的工作过程和冲突产生的情况。 运用所学知识,通过对模拟器的一些功能设置来解决产生的结构冲突,数据冲突,控制冲突。 自行编写一段程序,分别验证各种冲突的解决方法。(程序行数不需过多,10行左右,只要包括这几种冲突情况即可)。

三实验用设备器材 计算机一台。指令级和流水线操作级模拟器MIPS。 四.实践设计的相关技术 五.项目设计与实现 (1)启动MIPSsim (2)根据预备知识中关于流水线各段操作的描述,进一步理解流水线窗口中各段的功能,掌握各流水寄存器的含义。 流水线窗口如下图: 取指令(IF)、指令译码/读寄存器(ID)、执行/访存有效地址计算(EX)、存储器访问(MEM)、结果写回寄存器(WB),(用鼠标双击各段,就可以看到各流水寄存器的内容)

1.观察程序在流水线中的执行情况,步骤如下: (1)选择MIPS的“文件”—>“载入程序”选项来加载pipeline.s。(2)观察比较各个执行周期 当执行到第13个时钟周期时,各段分别正在处理的指令是: IF: LW $r4,60($r6) ID:ADDI $r3,$r0,25 EX:ADDI $r1,$r1,-1 MEM:ADDI $r6,$r0,8 WB:ADD $r2,$r1,$r0 时钟周期图:

体系结构实验报告

中南大学软件学院 软件体系结构 设计模式实验报告 学生姓名:宋昂 所在学院:软件学院 学生学号: 3901080115 学生班级:软件0801 指导老师:刘伟 完成日期: 2010-12-7

一、实验目的 熟练使用PowerDesigner和任意一种面向对象编程语言实现几种常见的设计模式,包括简单工厂模式、工厂方法模式、抽象工厂模式、单例模式和适配器模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式,并学会分析这些模式的使用效果。 二、实验内容 使用PowerDesigner和任意一种面向对象编程语言实现简单工厂模式、工厂方法模式、抽象工厂模式、单例模式和适配器模式,包括根据实例绘制模式结构图、编写模式实例实现代码,运行并测试模式实例代码。 (1) 简单工厂模式 使用简单工厂模式设计一个可以创建不同几何形状(Shape)的绘图工具类,如可创建圆形(Circle)、方形(Rectangle)和三角形(Triangle) 对象,每个几何图形都要有绘制draw()和擦除erase()两个方法,要求在绘制不支持的几何图形时,提示一个UnsupportedShapeException,绘制类图并编程实现。 (2) 简单工厂模式 使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数“M”,则返回一个Man 对象,如果传入参数“W”,则返回一个Woman对象,使用任意一种面向对象编程语言实现该场景。现需要增加一个新的Robot类,如果传入参数“R”,则返回一个Robot对象,对代码进行修改并注意女娲的变化。 (3) 工厂方法模式 某系统日志记录器要求支持多种日志记录方式,如文件记录、数据库记录等,且用户可以根据要求动态选择日志记录方式,现使用工厂方法模式设计该系统。用代码实现日志记录器实例,如果在系统中增加一个中的日志记录方式——控制台日志记录(ConsoleLog),绘制类图并修改代码,注意增加新日志记录方式过程中原有代码的变化。

实验2 Oracle数据库体系结构_V2013

实验2 Oracle数据库体系结构 【实验目的与要求】 ?熟悉Oracle数据库的物理结构 ?理解Oracle的工作机制 ?理解Oracle的软件结构 【实验内容与步骤】 2.0 实验准备 以系统管理员身份登入到数据库。 2.1 物理存储结构 2.1.1 获取Oracle数据库各类物理文件信息 1.数据文件 数据文件的详细信息记录在数据字典视图V$DataFile中,可通过查询语句获取数据文件相关信息。 查看数据文件名称:可通过如下查询语句查看数据文件名称和存放位置 请给出运行结果截图:

练习:用desc命令查看V$datafile视图的结构,并试着查询更详细的信息。 2.操作数据文件 (1) 创建数据文件 Oracle中,创建数据文件即是借用Alter Tablespace…ADD…语句,将数据文件添加挂接到指定的表空间中。 为USERS表空间添加一个数据文件,名称为USERS_XX.DBF(XX为学号最后两位),大小为20MB。如: 请给出运行结果截图:

打开指定目录(即C:\),查看是否存在文件USERS_XX.DBF? 请给出结果截图: 查询V$datafile视图,获取数据文件USERS_XX.DBF大小、位置等相关信息。 请给出结果截图: (2) 创建数据文件 修改数据文件使用Alter Database Datafile…命令。 修改USERS表空间中的USERS_XX.DBF为自动扩展方式,每次扩展5MB,最大为100MB。如: 请给出结果截图: 查询V$datafile视图,获取数据文件USERS_XX.DBF大小、扩展方式、位置等相关信息。确定数据文件是否修改。 请给出结果截图: (3) 重命名数据文件: 重命名数据文件使用alter tablespace …Rename datafile…命令。 将表空间USERS中的数据文件USERS_XX.DBF更名为UserData_XX.dbf。

软件设计模式与软件体系结构实验报告

《软件体系结构》大作业(1) 学院:软件学院 课程名称:软件体系结构 专业班级: 学生姓名:学号: 学生姓名:学号: 指导教师: 完成时间:年月日 评分表 1、叙述各小组成员完成本题目的分工协作情况。 小组中的每个成员都先理解题目要求及涉及的设计模式,并一起完成代码编写。另外,组长负责文档制作。 2、评分表 序号姓名评分是否组长 1 2 作业正文需要包括以下内容: 1、作业题目内容的详细描述。 2、完成本题目所采用的软件设计模式名称及画出相应的类图,或者是所采用的 软件体系结构名称及画出相应的体系结构图。

3、画出完成本题目所设计程序的设计类图;如还有其他图,也一并画出。 4、完成本题目所设计的程序代码。 5、程序运行的典型界面截图

1、作业题目内容的详细描述。 【作业2.1-1】例2.3为使用工厂方法模式设计的汽车保险管理应用程序实例。现在需要 扩展例2.3的设计图,添加一个名为LuxuryCarInsurance的类,并且需要编写此类和其他需要添加的类的代码,详细要求参见光盘的相应作业部分。 【作业2.1-1】在例2.4中,设计并且实现了豪华(Super)和中等(Medium)别墅(House)与公寓(Condo)的查询。要求在该设计的基础上,增加一个新的类SemiDetacher(半独立式楼宇),并且编写代码,实现相应的查询功能,详细要求参见光盘的相应作业部分。 2、完成本题目所采用的软件设计模式名称及画出相应的类图,或者是所采用的软件体系结构名称及画出相应的体系结构图。 【作业2.1-1】采用的是工厂方法模式 【作业2.1-2】采用的是抽象方法模式

系统结构实验二

实验二计算机存储体系的页面替换算法(3学时) 一、实验目的 当计算机内存已满而又发生页面失效时,替换算法就要选择主存中哪个页作为被替换的页。通过本实验可以帮助学生理解虚拟存储器中页面替换的基本思想,深刻体会各种页面替换算法的性能差异。 二、实验环境 开发工具使用windows平台下的vc++6.0。 三、实验内容 编写一个模拟算法,模拟实现虚拟存储器的先进先出、近期最少使用、优化等算法。在程序设计的过程中,要求体会各种页面替换算法的优点和缺点,并计算出各种替换算法的命中率。 四、实验结果及完成情况 一、整个实验过程的思路可以整理如下: 1、初始化虚拟存储空间。 定义void DataInput()用来申请物理块BlockNum和页面数DataMax 2、产生一个随机调用页面的序列。 void DataInput()还可以随机成生调用页面序列 3、实现各种页面替换算法。 void FIFO(); // FIFO 先进先出算法函数 void Optimal(); // Optimal优化替换算法函数 void LRU(); // LRU近期最少使用算法函数 4、计算各种页面替换算法的命中率。 void DataOutput()用来显示数据和命中率 主要变量和函数: const int DataMax=100; const int BlockNum = 10; int DataShow[BlockNum][DataMax]; // 用于存储要显示的数组 bool DataShowEnable[BlockNum][DataMax]; // 用于存储数组中的数据是否需要显示int Data[DataMax]; // 保存数据 int Block[BlockNum]; // 物理块 int count[BlockNum]; // 计数器 int N ; // 页面个数 int M;//最小物理块数 int ChangeTimes; void DataInput(); // 输入数据的函数 void DataOutput();//输出数据的函数 void FIFO(); // FIFO 先进先出算法函数 void Optimal(); // Optimal优化替换算法函数 void LRU(); // LRU近期最少使用算法函数

中南大学软件体系结构设计模式实验二

中南大学软件体系结构设计模式实验二 Company number:【0089WT-8898YT-W8CCB-BUUT-202108】

实验3 设计模式实验二 实验学时: 4 每组人数: 1 实验类型: 3 (1:基础性 2:综合性 3:设计性 4:研究性) 实验要求: 1 (1:必修 2:选修 3:其它) 实验类别: 3 (1:基础 2:专业基础 3:专业 4:其它) 一、实验目的 熟练使用PowerDesigner和任意一种面向对象编程语言实现几种常见的行为型设计模式,包括职责链模式、命令模式、观察者模式和策略模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式。 二、实验内容 1. 某企业的SCM(Supply Chain Management,供应链管理)系统中包含一个采购审批子系统。该企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批5万元以下(不包括5万元)的采购单,副董事长可以审批5万元至10万元(不包括10万元)的采购单,董事长可以审批10万元至50万元(不包括50万元)的采购单,50万元及以上的采购单就需要开董事会讨论决定。如下图所示: 试使用职责链模式设计并模拟实现该系统。 2. 房间中的开关是命令模式的一个实例,现用命令模式来模拟开关的功能,可控制对象包括电灯和电风扇,绘制相应的类图并编程模拟实现。 3. 某软件公司欲开发一个基于Windows平台的公告板系统。系统提供一个主菜单(Menu),在主菜单中包含了一些菜单项(MenuItem),可以通过Menu类的addMenuItem()方法增加菜单项。菜单项的主要方法是click(),每一个菜单项包含一个抽象命令类,具体命令类包括OpenCommand(打开命令),CreateCommand(新建命令),EditCommand(编辑命令)等,命令类具有一个execute()方法,用于调用公告板系统界面类(BoardScreen)的open()、create()、edit()等方法。现使用命令模式设计该系统,使得MenuItem类与BoardScreen类的耦合度降低,绘制类图并编程实现。 4. 某实时在线股票软件需要提供如下功能:当股票购买者所购买的某支股票价格变化幅度达到5%时,系统将自动发送通知(包括新价格)给购买该股票的所有股民。试使用观察者模式设计并实现该系统,要求绘制相应的类图并编程模拟实现。 5. 某公司欲开发一套机房监控系统,如果机房达到某一指定温度,温度传感器(Thermosensor)将自动传递信号给各种响应设备,例如警示灯(CautionLight)将闪烁(flicker())、报警器(Annunciator)将发出警报(alarm())、安全逃生门(SecurityDoor)将自动开启(open())、隔热门(InsulatedDoor)将自动关闭(close())

计算机体系结构实验报告二

实验二结构相关 一、实验目的: 通过本实验,加深对结构相关的理解,了解结构相关对CPU性能的影响。 二、实验内容: 1. 用WinDLX模拟器运行程序structure_d.s 。 2. 通过模拟,找出存在结构相关的指令对以及导致结构相关的部件。 3. 记录由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行 周期数的百分比。 4. 论述结构相关对CPU性能的影响,讨论解决结构相关的方法。 三、实验程序structure_d.s LHI R2, (A>>16)&0xFFFF 数据相关 ADDUI R2, R2, A&0xFFFF LHI R3, (B>>16)&0xFFFF ADDUI R3, R3, B&0xFFFF ADDU R4, R0, R3 loop: LD F0, 0(R2) LD F4, 0(R3) ADDD F0, F0, F4 ;浮点运算,两个周期,结构相关 ADDD F2, F0, F2 ; <- A stall is found (an example of how to answer your questions) ADDI R2, R2, #8 ADDI R3, R3, #8 SUB R5, R4, R2 BNEZ R5, loop ;条件跳转 TRAP #0 ;; Exit <- this is a comment !! A: .double 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 B: .double 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

四、实验过程 打开软件,load structure_d.s文件,进行单步运行。经过分析,此程序一 次循环中共有五次结构相关。(R-stall 数据相关Stall- 结构相关) 1)第一个结构相关:addd f2,,f0,f2 由于前面的数据相关,导致上一条指令addd f0,f0,f4暂停在ID阶段,所以下一条指令addd f2,,f0,f2发生结构相关,导致相关的部件:译码部件。 2)第二个结构相关:ADDI R2, R2, #8,与第一个结构相关类似。由于数据相关, 上一条指令暂停在ID阶段,所以导致下一条指令发生结构相关。

计算机系统结构实验报告

计算机系统结构实验报告 一.流水线中的相关 实验目的: 1. 熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点; 2. 加深对计算机流水线基本概念的理解; 3. 进一步了解DLX基本流水线各段的功能以及基本操作; 4. 加深对数据相关、结构相关的理解,了解这两类相关对CPU性能的影响; 5. 了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停。 实验平台: WinDLX模拟器 实验内容和步骤: 1.用WinDLX模拟器执行下列三个程序: 求阶乘程序fact.s 求最大公倍数程序gcm.s 求素数程序prim.s 分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察 CPU中寄存器和存储器的内容。熟练掌握WinDLX的操作和使用。 2. 用WinDLX运行程序structure_d.s,通过模拟找出存在资源相关的指令对以及导致资源相 关的部件;记录由资源相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的 百分比;论述资源相关对CPU性能的影响,讨论解决资源相关的方法。 3. 在不采用定向技术的情况下(去掉Configuration菜单中Enable Forwarding选项前的勾选符),用WinDLX运行程序data_d.s。记录数据相关引起的暂停时钟周期数以及程序执行的 总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。 在采用定向技术的情况下(勾选Enable Forwarding),用WinDLX再次运行程序data_d.s。重复上述3中的工作,并计算采用定向技术后性能提高的倍数。 1. 求阶乘程序 用WinDLX模拟器执行求阶乘程序fact.s。这个程序说明浮点指令的使用。该程序从标准 输入读入一个整数,求其阶乘,然后将结果输出。 该程序中调用了input.s中的输入子程序,这个子程序用于读入正整数。 实验结果: 在载入fact.s和input.s之后,不设置任何断点运行。 a.不采用重新定向技术,我们得到的结果

软件体系结构实验二

南京邮电大学 《软件体系结构》实验报告 实验题目软件体系结构风格之应用 姓名xxx 学号xxx 院系计算机、软件学院 指导老师周国强 2013年12月18日

一、实验目的和要求 实验目的: 通过KWIC实例分析,理解和掌握软件体系结构风格设计与实现。 实验要求: 熟练掌握基于主/子程序体系结构风格的KWIC关键词索引系统,在此基础上,完成基于面向对象体系架构风格的KWIC关键词索引系统设计与实现。选做基于管道过滤体系架构风格的KWIC关键词索引系统;选做基于事件过程调用体系架构风格的KWIC关键词索引系统。 实验课前完成实验报告的实验目的、实验环境、实验内容、实验操作过程等内容;实验课中独立/团队操作完成实验报告的实验操作、实验结果及结论等内容;每人一台PC机,所需软件Win2003/XP、UML工具(EclipseUML/ Rose/Visio/StartUML/)、Eclipse/MyEclipse、JDK6.0等。实验课后完成实验报告的心得体会内容,并及时提交实验报告。 二、实验课时:2 三、实验内容及操作步骤 多种软件风格设计与实现之KWIC实例: 1.采用主/子程序体系结构风格实现KWIC关键词索引系统 public static void input(String inputFile){ fr=null; try { fr=new (inputFile);

} catch ( e) { // TODO Auto-generated catch block e.printStackTrace(); } BufferedReader br=new BufferedReader(fr); textLines=new ArrayList(); try { while(br.ready()){ textLines.add(br.readLine()); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void circularShift(){ shiftedLineIndexes=new ArrayList(); for(int i=0;i1){ if(j==sarray.length-1){ for(int k=0;k<(sarray.length-1);k++){ newLine=newLine+" "+sarray[k]; } } else{ for(int k=j+1;k

软件设计与体系结构实验报告

福建农林大学计算机与信息学院 实验报告 课程名称:软件设计与体系结构 姓名:陈宇翔 系:软件工程系 专业:软件工程 年级:2007 学号:070481024 指导教师:王李进 职称:讲师 2009年12月16日

实验项目列表

福建农林大学计算机与信息学院实验报告 学院:计算机与信息学院专业:软件工程系年级:2007 姓名:陈宇翔 学号:070481024 课程名称:软件设计与体系结构实验时间:2009-10-28 实验室田实验室312、313计算机号024 指导教师签字:成绩: 实验1:ACME软件体系结构描述语言应用 一、实验目的 1)掌握软件体系结构描述的概念 2)掌握应用ACMESTUDIO工具描述软件体系结构的基本操作 二、实验学时 2学时。 三、实验方法 由老师提供软件体系结构图形样板供学生参考,学生在样板的指导下修改图形,在老师的指导下进行软件体系结构描述。 四、实验环境 计算机及ACMESTUDIO。 五、实验内容 利用ACME语言定义软件体系结构风格,修改ACME代码,并进行风格测试。 六、实验操作步骤 一、导入Zip文档 建立的一个Acme Project,并且命名为AcmeLab2。如下图:

接着导入ZIP文档,导入完ZIP文档后显示的如下图: 二、修改风格 在AcmeLab2项目中,打开families下的TieredFam.acme.如下图: 修改组件外观 1. 在组件类型中,双击DataNodeT; 在其右边的编辑器中,将产生预览;选择Modify 按钮,将打开外观编辑器对话框。 2. 首先改变图形:找到Basic shape section,在Stock image dropdown menu中选 择Repository类型. 3. 在Color/Line Properties section修改填充颜色为深蓝色。 4. 在颜色对话框中选择深蓝色,并单击 [OK]. 5. 修改图形的边框颜色为绿色 7. 单击Label tab,在Font Settings section, 设置字体颜色为白色,单击[OK] 产生的图形如下图:

系统结构实验报告一

《计算机系统结构课内实验》 实验报告 班级:计算机01 姓名:陈世阳 学号:10055008 日期:2013.5.10

一、实验目的及要求 1. 熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点; 2. 加深对计算机流水线基本概念的理解; 3. 进一步了解DLX基本流水线各段的功能以及基本操作; 4. 加深对数据相关、结构相关的理解,了解这两类相关对CPU性能的影响; 5. 了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停。 二、实验环境 WinDLX模拟器 三、实验内容 1.用WinDLX模拟器执行下列三个程序(任选一个): ●求阶乘程序fact.s ●求最大公倍数程序gcm.s ●求素数程序prim.s 分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU中寄存器和存储器的内容。熟练掌握WinDLX的操作和使用。 注意:fact.s中调用了input.s中的输入子程序。load程序时,要两个程序一起装入(都select后再点击load)。gcm.s也是如此。 2.用WinDLX运行程序structure_d.s,通过模拟: ●找出存在结构相关的指令对以及导致结构相关的部件; ●记录由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期 数的百分比; ●论述结构相关对CPU性能的影响,讨论解决结构相关的方法。 3.在不采用定向技术的情况下(去掉Configuration菜单中Enable Forwarding选项 前的勾选符),用WinDLX运行程序data_d.s。记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。 4.在采用定向技术的情况下(勾选Enable Forwarding),用WinDLX再次运行程序 data_d.s。重复上述3中的工作,并计算采用定向技术后性能提高的倍数。 四、实验步骤及结果 1.(1)用winDLX执行求最大公倍数程序gcm.s: File->load code or data->分别选中gcm.s和input.s->select. (2)首先直接运行整个程序(enable forwarding),execute->run(或按F 5) 例如,输入如下:

体系结构windlx流水线实验报告

实验一基本实验----by 王琳PB07210432 1. 实验目的: 1)熟悉计算机流水线基本概念 2)了解DLX基本流水线的各段的功能 3)了解各种不同指令在流水线中的实际流动情况 4)对流水线做性能分析 5)了解影响流水线效率的因素——数据相关、结构相关、控制相关,了解相关的种类 6)了解解决数据相关的方法 2. 实验平台:WinDLX仿真器 WinDLX简介: ●是一个图形化、交互式的DLX流水线仿真器。 ●可以装入DLX汇编语言程序,然后单步,设断点或是连续执行该程序. ●CPU的寄存器,流水线,I/O和存储器都可以用图形表示出来 ●提供了对流水线操作的统计功能. ●可以装载文件名为*.s的文件. ●要求的硬件平台是IBM-PC兼容机. ●WinDLX是一个Windows应用程序,运行DOS3.3以上和Windows3.0以上的操作系统. ●WinDLX软件包中带有说明文件及教程,可以供使用者进一步了解仿真器的使用方法和 DLX处理器的原理.大家再进行实验前应该仔细阅读这些文档. 3. 实验内容: 1)在仿真器上分别运行单条指令:Load指令、Store指令、分支指令、寄存器ALU指令、立即数ALU指令,记录它们在流水线中的执行情况 ●Lw: 观察此流水线时空图,可以发现:转移指令引起的延迟仅为1 clocks,另2 stalls 是trap指令引起的,这个执行结果似与不采用forwarding技术的前提相违,只能理解为对于无条件的转移指令,新的PC值在EX阶段即已被写入。 ●Sw:

●Beqz: 由此图可见,对于分支指令,总是用 not-taken的策略来处理,并且也认为新的 PC值也在EX阶段即已被写入,且cond 条件也在EX段被算出(这显然是一个极 不合理的假设,究竟为何分支指令的延迟 为1 stall有待进一步探究) ●寄存器ALU指令 ●立即数ALU指令 2)仿真器运行一段无相关的程序,记录它的执行情况,计算流水线的加速比、吞吐率与效率。下面是一段不相关的程序,一共6条指令 ADDI R5, R5, 1 SUBI R4, R4, 1 AND R3, R3, R3 XOR R7, R7, R7 ADDI R8, R8, 1 ADDI R9, R9, 1 在WinDLX中执行的结果如下:

计算机体系结构实验报告二

实验二结构相关 一、实验目得: 通过本实验,加深对结构相关得理解,了解结构相关对CPU性能得影响。 二、实验内容: 1、用WinDLX模拟器运行程序structure_d、s 。 2、通过模拟,找出存在结构相关得指令对以及导致结构相关得部件。 3、记录由结构相关引起得暂停时钟周期数,计算暂停时钟周期数占总执行 周期数得百分比。 4、论述结构相关对CPU性能得影响,讨论解决结构相关得方法。 三、实验程序structure_d、s LHI R2, (A>>16)&0xFFFF 数据相关 ADDUI R2, R2, A&0xFFFF LHI R3, (B>>16)&0xFFFF ADDUI R3, R3, B&0xFFFF ADDU R4, R0, R3 loop: LD F0, 0(R2) LD F4, 0(R3) ADDD F0, F0, F4 ;浮点运算,两个周期,结构相关 ADDD F2, F0, F2 ; < A stall is found (an example of how to answer your questions) ADDI R2, R2, #8 ADDI R3, R3, #8 SUB R5, R4, R2 BNEZ R5, loop ;条件跳转 TRAP #0 ;; Exit < this is a ment !! A: 、double 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 B: 、double 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 四、实验过程 打开软件,load structure_d、s文件,进行单步运行。经过分析,此程序一 次循环中共有五次结构相关。(Rstall 数据相关Stall 结构相关) 1)第一个结构相关:addd f2,,f0,f2 由于前面得数据相关,导致上一条指令addd f0,f0,f4暂停在ID阶段,所以下一条指令addd f2,,f0,f2发生结构相关,导致相关得部件:译码部件。

计算机系统结构实验1预习报告

计算机系统结构实验 实验1:MIPS指令系统和MIPS体系结构 (预习报告) 姓名: 学号: 班级:

大连理工大学实验预习报告 学院:______________________专业:_______________________班级:_____________________ 姓名:______________________学号:_______________________ 实验时间:__________________实验室:__________________实验台:__________________ 指导老师签字:_________________________________________成绩:____________________ 实验目的: 了解熟悉MIPSsim模拟器; 熟悉MIPS指令系统及其特点; 熟悉MIPS体系结构 实验平台: 指令级和流水线操作级模拟器MIPSsim 资料准备: MIPS64指令系统介绍 1.MIPS的寄存器 32个64位通用寄存器(GPRs整数寄存器):R0-R31。R0的值永远是0。 32个64位浮点数寄存器FPRs:F0-F31。它们可以存放32个单精度浮点数(32位),也可以存放32个双精度浮点数(64位)。 MIPS提供了单精度和双精度操作的指令,而且还提供了在FPRs和GPRs之间传送数据的指令。2.MIPS的数据表示

整数:字节(8位)、半字(16位)、字(32位)和双字(64位)。 浮点数:单精度浮点数(32位)和双精度浮点数(64位)。 MIPS64的操作是针对64位整数以及32位或64位浮点数进行的。字节、半字或字在装入64位寄存器时,用零扩展或者用符号位扩展来填充该寄存器的剩余部分。装入以后,对它们按照64位整数的方式进行运算。 3.MIPS的数据寻址方式 MIPS的数据寻址方式只有立即数寻址和偏移量寻址两种,立即数字段和偏移量字段都是16位。 寄存器间接寻址是通过把0作为偏移量来实现的,16位绝对寻址是通过把R0作为基址寄存器来完成的。 MIPS的存储器是按字节寻址的,地址是64位。由于MIPS是load-store结构,寄存器和存储器之间的数据传送都是通过load指令和store指令来完成的。所有存储器访问都必须边界对齐。 4.MIPS的指令格式 指令格式简单,其中操作码6位。按不同类型的指令设置不同的格式,共有3种格式,分别对应I指令、R指令和J指令。在这3种格式中,同名字段的位置固定不变。 I类指令 包括所有的load和store指令、立即数指令、分支指令、寄存器跳转指令、寄存器链接跳转指令。其中立即数字段位16位,用于提供立即数或偏移量。 1)load指令 2)store指令 3)立即数指令 4)分支指令 5)寄存器跳转、寄存器跳转并链接

系统结构实验

系统结构实验报告 11070113 臧琦 11070230 曾凯

目录 实验一流水线中的相关 (3) 1、实验目的 (3) 2、实验平台 (3) 3、实验要求 (3) 4、实验结果 (4) 4.1用WinDLX 模拟器执行下列三个程序 (4) 4.1.1用WinDLX 模拟器执行阶乘程序 fact.s的结果如下所示 (4) 4.1.2 用WinDLX 模拟器执行阶乘程序gcm.s的结果如下所示 (5) 4.1.3 用WinDLX 模拟器执行阶乘程序prim.s的结果如下所示 (7) 4.2 用WinDLX 模拟运行器程序structure_d.s,进行相关实验 (8) 4.3 比较定向与不定向技术,用WinDLX 模拟运行器程序data_d.s,进行相关实验 11 4.3.1采用不定向技术,用WinDLX 模拟运行器程序data_d.s,进行相关实验 (11) 4.3.2采用定向技术,用WinDLX 模拟运行器程序data_d.s,进行相关实验 (11) 5、总结与体会 (12) 实验二循环展开及指令调度 (13) 1、实验目的 (13) 2、实验平台 (13) 3、实验要求 (13) 4、实验结果 (14) 4.1用指令调度技术解决流水线中的结构相关与数据相关 (14) 4.1.1原指令执行的相关结果 (14) 4.1.2调整指令顺序指令执行的结果 (16) 4.2用循环展开、寄存器换名以及指令调度提高性能 (17) 4.2.1 原循环程序运行的结果 (17) 4.2.2 将循环程序展开运行的结果 (18) 4.2.3 将程序循环展开、指令调度后运行的结果 (19) 5、总计与体会 (21) 实验三cache性能分析 (21) 1、实验目的 (21) 2、实验平台 (21) 3、实验要求 (21) 4、实验结果 (22) 4.1.基本配置情况下运行程序 (22) 4.2.改变Cache容量对Cache性能的影响 (22) 4.3.改变Cache的相联度对Cache性能的影响 (25) 4.4.改变Cache块大小对Cache性能的影响 (27) 4.5.不同的替换算法对Cache性能的影响 (30) 4.5.1不同容量下,不同的替换算法对Cache性能的影响 (30) 5、总计与体会 (36)

中南大学 计算机体系结构实验报告

计算机体系结构课程设计 学院:信息科学与工程学院 专业班级: 指导老师: 学号: 姓名:

目录 实验1 对指令操作码进行霍夫曼编码 (3) 一、实验目的 (3) 二、实验内容 (3) 三、设计思路 (4) 四、关键代码 (4) 五、实验截图 (5) 六、源代码 (5) 实验2 使用LRU 方法更新Cache (8) 一、实验目的 (8) 二、实验内容 (8) 三、设计思路 (9) 四、程序截图 (9) 五、实验代码 (9) 实验总结 (16) 参考文献 (16)

实验1 对指令操作码进行霍夫曼编码一、实验目的 了解和掌握指令编码的基本要求和基本原理 二、实验内容 1. 使用编程工具编写一个程序,对一组指令进行霍夫曼编码,并输出最后的编码结果以及对指令码的长度进行评价。与扩展操作码和等长编码进行比较。 2. 问题描述以及问题分析 举例说明此问题,例如: 下表所示: 对此组指令进行 HUFFMAN 编码正如下图所示: 最后得到的HUFFMAN 编码如下表所示:

最短编码长度为: H=0.45*1+0.30*2+0.15*3+0.05*4+0.03*5+0.01*6+0.01*6=-1.95. 要对指令的操作码进行 HUFFMAN 编码,只要根据指令的各类操作码的出现概率构造HUFFMAN 树再进行 HUFFAM 编码。此过程的难点构造 HUFFMAN 树,进行 HUFFAM 编 码只要对你所生成的 HUFFMAN 树进行中序遍历即可完成编码工作。 三、设计思路 观察上图,不难看出构造 HUFFMAN 树所要做的工作:1、先对各指令操作码的出现概率进行排序,构造一个有序链表。2、再取出两个最小的概率节点相加,生成一个生的节点加入到链表中,同时从两表中删除此两个节点。3、在对链表进行排序,链表是否只有一个节点,是则 HUFFAN 树构造完毕,否则继续做 2 的操作。为此设计一个工作链表(链表的元素时类,此类的功能相当结构。)、HUFFMAN 树节点、HUFFMAN 编码表节点。 四、关键代码 哈夫曼树重点在于如何排列权值大小不同的结点的顺序 private int leafNum; //叶子结点个数 private HaffmanNode[] hnodes; //哈夫曼树的结点数组 public HaffManCode(double[] weight) //构造指定权值集合的哈夫曼树 { int n = weight.length; //n个叶子结点 this.leafNum = n; this.hnodes = new HaffmanNode[2*n-1]; //n个叶子结点的哈夫曼树共有2n-1个结点 for(int i=0; i

Lab1_体系结构实验报告

2012年3月1日 一、实验目的和要求 1.understand the principles of ALU and master methods of ALU design 2.understand the principles of ALU controller and master methods of ALU controller design 3.understand the principles of register file and master methods of register file design so the task is first, design a ALU with ALU controller then, design a register file 二、实验内容和原理 2.1 ALU with ALU controller We input the operand r, s; both are 32 bit integer, and aluc is the control code that defines the operation. So we just make the code block, totally as ALU block, ALUC block, display block.

Figure 1 the input and output diagram Figure 2 ALU operations Figure 3 the truth table of operation cod e

Figure 4 principle of ALU 2.2 register file The process is similar to the 2.1, when we get the principle of register file , it can be easily coding. Figure 5 the input and output

体系结构实验报告

北京邮电大学 实验报告 课程名称:高级计算机系统结构 学号:2015140454姓名:罗一皓

实验二指令流水线相关性分析 一.实验类别: 验证试验 二.实验目的: 通过使用WINDLX模拟器,对程序中的三种相关现象进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和RISC处理器的特点的理解。 三.实验学时: 4 四.实验人数: 1 五.实验设备环境: WinDLX模拟器可以装入DLX汇编语言程序,然后单步、设置断点或者连续执行该程序。CPU的寄存器、流水线、I/O和存储器都可以使用图形的方式表示出来。模拟器还提供了对流水线操作的统计功能。该模拟器对理解流水线和RISC处理器的特点很有帮助。 六.实验原理: 指令流水线中主要有结构相关、数据相关、控制相关。相关影响流水线性能。 结构相关:当指令在重叠执行过程中,硬件资源满足不了指令重叠执行的要求,发生资源冲突时,将产生“结构相关”。 数据相关:当一条指令需要用到前面指令的执行结果,而这些指令均在流水线中重叠执行时,就可能引起“数据相关”。 控制相关:由条件指令引起的相关。 七.实验内容和要求: 使用WinDLX模拟器,对求阶乘程序Fact.s做分析 八.实验步骤: (1)观察程序中出现的数据/控制/结构相关。指出程序中出现上述现象的指令组合。 数据相关: 在第24个周期时,在Clock Cycle Diagram 中有橙黄色的R-Stall,

点开之后,我们发现有 相关指令组合: lbu r3,0x0(r2) seqi r5,r3,0xa 控制相关: 在第4个时钟周期中,第一条命令正在MEM段,在第二条命令在intEXcellent 段,第四条命令在IF段。而第三条命令指示为“aborted”。 其原因是:在第二条命令(jal)是无条件分支指令,但只有在第三个时钟周期,jal指令被译码后才知道,这时,下一条命令movi2fp已经取出,但须执行的下一条命令在另一个地址处,因而,movi2fp的执行应被取消,在流水线中留下气泡。此处发生了控制相关。 相关的指令组合:

相关主题