微机原理与接口技术试验指导书电子科技大学.docx
- 文档编号:4897343
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:10
- 大小:28.37KB
微机原理与接口技术试验指导书电子科技大学.docx
《微机原理与接口技术试验指导书电子科技大学.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术试验指导书电子科技大学.docx(10页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术试验指导书电子科技大学
计算机系统结构实验指导书
王雁东王华编
电子科技大学计算机学院
2005年8月
目录
实验一流水线指令调度……………………………..2
实验二加法乘法静态多功能流水线调度……………………………….6
实验三加法乘法动态双功能流水线调度…………………………….10
实验四页面置换算法性能分析……………………12
附录实验报告……………………………………………………………15
实验一流水线指令调度
一.实验目的:
1.通过本实验,理解指令调度的方法。
2.掌握使用VC开发平台模拟处理机内部指令流调度的编程策略。
二.实验内容:
(一)给定要执行的任务和执行该任务的流水线结构
流水线的调度方式能够提高任务的并行度,但是针对不同的任务,由于相关的存在,其并行度的提高是不一致的。
在开始程序设计前,我们首先要给定所要完成的任务:
这里我们使用最简单的累加操作
。
n的数值可以变化,通过变换n的值用同一程序进行多次模拟。
给定流水线:
流水线分四个步骤,每个步骤的执行时间均为一个单位时间。
(二)对任务进行分解
任务分解的目的是为了减少相关。
例如n=4时,任务分解为A1+A2、A3+A4、
A1+A2+A3+A4三个加法操作。
如果n的大小是未知的,任务该怎样分解呢?
换而言之,在程序模拟中,有没有一种通行的分解处理方式,可以实现对任意数目的源数据的累加的分解?
(三)任务分解程序模拟的思路
首先,Ai是对称的,Ai和Aj都是一个源操作,任意更换其相对位置,计算的累加和的结果是不变的。
每次的加法操作能执行的必要条件是存在两个源数据,因此我们可以把所有的源数据放入一个队列中,只要该队列中有两个源,那么就执行加法,加法计算的结果是下一次计算的源数据,我们把它再放回源数据队列,直到对列中只剩一个数据、同时加法流水线中没有执行加法操作时,整个累加过程完成。
(四)加法流水线的设计
加法流水线分为四个步骤,每个步骤时间花费是一个单位时间。
模拟程序的目的是为了计算总的执行时间,因此对于每个步骤执行的功能并不需要关心。
为此设计一个总步数为4步的加法器,接收两个输入数据,经过4个时间片,输出加法的结果。
时间片可以用定时器来模拟。
(五)程序设计
程序应包括一个队列,一个加法类,一个定时器,一个输出对话框。
队列用于存放源数据,一开始将n个源数据A1-An放入。
启动定时器,每一个时间片从队列中取出两个源数据,送入加法器(可以通过调用加法器中接口函数,把源数据作为参数传入)。
构造加法器类,可以考虑用一个长度对4的执行队列来模拟4个步骤,每个时间片将队列的数据依次下压一格,队列尾的数据进行加法计算并将结果压入源数据队列。
用一个记数值表示时间开销,每个时间片对该记数值加1。
当源队列只剩一个数据且加法器的执行队列为空时,整个程序结束,记数器的值就是任务执行的总体时间花费。
(五)多次模拟
可以通过循环的方式对n从4-20进行循环,将每次模拟运行的时间开销值在对话框中显示出来。
如果可能将结果打印。
三.实验要求:
实验前要做好充分准备,包括对开发环境的了解,程序设计的思路,以及输出的格式。
四.调试步骤
1.编辑源程序,建立一个基于对话框的VC工程.
2.创建队列、定时器、加法器类。
3.创建显示对话框。
4.编码、编译、调试。
五.时空图模拟
用时空图模拟计算执行任务所花费的时间。
六.结果对比
对比程序模拟和时空图模拟的结果,如果应该是一致的。
七、实验报告:
1、程序说明。
说明程序的设计、数据结构、类。
2、画出程序框图。
3、写出源程序清单和执行结果。
实验二加法乘法静态多功能流水线调度
一.实验目的:
1、掌握静态多功能流水线指令调度的方式。
2、理解重构指令序列对指令执行性能的影响,
3、了解在处理机中指令调度的一般方式。
二.实验内容:
(一)给定要执行的任务和执行该任务的流水线结构
流水线的调度方式能够提高任务的并行度,但是针对不同的任务,由于相关的存在,其并行度的提高是不一致的。
在开始程序设计前,我们首先要给定所要完成的任务:
这里我们使用矩阵点积运算任务,
aibi。
n的数值可以变化,通过变换n的值用同一程序进行多次模拟。
给定流水线:
流水线分五个步骤,每个步骤的执行时间均为一个单位时间;其中1-2-3-5组成加法流水线,1-4-5组成乘法流水线。
加法和乘法不能同时执行
(二)对任务进行分解
对于静态多功能流水线,由于在流水线中同时只能有一种操作的指令,因此在任务分解中首先要把相同类型的指令集中起来执行。
显然乘法的结果是加法计算的源数据,因此先执行乘法后执行加法。
加法和乘法不同时执行,因此虽然是一个加法乘法多功能流水线,把它分成两个单独的加法和乘法流水线看待是可以的。
(三)任务分解程序模拟的思路
首先,Ai是对称的,Ai和Aj都是一个源操作,任意更换其相对位置,计算的结果是不变的,对Bi也是同样,但是乘法运算只能是Ai×Bi。
因此,我们必须把Ai和Bi分开存放,且只能将下标相同的两个数据配对进行乘法,而加法的所有源数据是完全对称的,可以按照实验一的方式处理。
对于乘法,对应两个源阵列,每次从两个原矩阵的对列中各取出一个源数据,送入乘法器。
计算的结果送入加法器的源数据队列。
加法器的源数据队列初始为空,乘法器的源数据队列初始分别放入A1-An和B1-Bn。
(四)加法流水线的设计
加法流水线分为四个步骤,每个步骤时间花费是一个单位时间。
模拟程序的目的是为了计算总的执行时间,因此对于每个步骤执行的功能并不需要关心。
为此设计一个总步数为4步的加法器,接收两个输入数据,经过4个时间片,输出加法的结果。
时间片可以用定时器来模拟。
(五)乘法流水线的设计
乘法流水线分为三个步骤,每个步骤时间花费是一个单位时间。
模拟程序的目的是为了计算总的执行时间,因此对于每个步骤执行的功能并不需要关心。
为此设计一个总步数为三步的加法器,接收两个输入数据,经过3个时间片,输出加法的结果。
时间片可以用定时器来模拟。
(五)程序设计
程序应包括三个队列,一个加法类,一个乘法类,一个定时器,一个输出对话框。
两个乘法队列用于存放源数据,一开始将A1-An和B1-Bn分别放入两个乘法队列。
启动定时器,每一个时间片从两个乘法队列中各取出一个源数据,送入乘法器(可以通过调用乘法器中接口函数,把源数据作为参数传入)。
构造乘法器类,可以考虑用一个长度对3的执行队列来模拟3个步骤,每个时间片将队列的数据依次下压一格,队列尾的数据进行加法计算并将结果压入加法器源数据队列。
构造加法器类,可以考虑用一个长度对4的执行队列来模拟4个步骤,每个时间片将队列的数据依次下压一格,队列尾的数据进行加法计算并将结果压入加法器源数据队列。
当乘法源队列为空且乘法器的执行队列也为空(所有乘法执行完毕)时,乘法运算结束,乘法运算结束后开始加法运算,设计方式参照实验一。
用一个记数值表示时间开销,每个时间片对该记数值加1。
当加法源队列只剩一个数据且加法器的执行队列为空时,整个程序结束,记数器的值就是任务执行的总体时间花费。
(五)多次模拟
可以通过循环的方式对n从4-20进行循环,将每次模拟运行的时间开销值在对话框中显示出来。
如果可能将结果打印。
三.实验要求:
实验前要做好充分准备,包括对开发环境的了解,程序设计的思路,以及输出的格式。
四.调试步骤
1.编辑源程序,建立一个基于对话框的VC工程.
2.创建队列、定时器、加法器类、乘法器类,确定程序流程。
3.创建显示对话框。
4.编码、编译、调试。
五.时空图模拟
用时空图模拟计算执行任务所花费的时间。
六.结果对比
对比程序模拟和时空图模拟的结果,如果应该是一致的。
七、实验报告:
1、程序说明。
说明程序的设计、数据结构、类。
2、画出程序框图。
3、写出源程序清单和执行结果。
实验三加法乘法动态多功能流水线调度
一.实验目的
1、掌握加法乘法动态双功能指令调度的方式,
2、理解静态多功能流水线和动态多功能流水线在调度模式上的区别,
3、了解指令并行度上限的概念。
二.实验内容:
(一)给定要执行的任务和执行该任务的流水线结构
流水线的调度方式能够提高任务的并行度,但是针对不同的任务,由于相关的存在,其并行度的提高是不一致的。
在开始程序设计前,我们首先要给定所要完成的任务:
这里我们使用矩阵点积运算任务,
aibi。
n的数值可以变化,通过变换n的值用同一程序进行多次模拟。
给定流水线:
流水线分五个步骤,每个步骤的执行时间均为一个单位时间;其中1-2-3-5组成加法流水线,1-4-5组成乘法流水线。
加法和乘法可以同时执行
(二)对任务进行分解
动态多功能流水线不同于静态多功能流水线,流水线中同时只能有多种种操作的指令,因此不能将其划分为两个相互独立的加法流水线和乘法流水线。
我们考虑设计一个加法乘法混合运算器,加法4步,乘法三步,在送入源数据时应指明执行哪种运算。
(三)任务分解程序模拟的思路
在实验二的基础上。
我们对设计进行变更。
加法乘法有一个类实现,称之为加乘法类。
乘法的数据源为两个队列,加法的数据源为一个队列。
加法器的源数据队列初始为空,乘法器的源数据队列初始分别放入A1-An和B1-Bn。
(四)加乘法流水线的设计
模拟程序的目的是为了计算总的执行时间,因此对于每个步骤执行的功能并不需要关心。
为此设计一个能够同时执行加法和乘法的运算器类,每次接收两个输入数据,对于加法,经过4个时间片,输出加法的结果;对于乘法,经过3个时间片,输出加法的结果。
时间片可以用定时器来模拟。
(五)乘法流水线的设计
乘法流水线分为三个步骤,每个步骤时间花费是一个单位时间。
模拟程序的目的是为了计算总的执行时间,因此对于每个步骤执行的功能并不需要关心。
为此设计一个总步数为三步的加法器,接收两个输入数据,经过3个时间片,输出乘法的结果。
时间片可以用定时器来模拟。
(五)程序设计
程序应包括三个队列,一个加乘法类,一个定时器,一个输出对话框。
两个乘法队列用于存放源数据,一开始将A1-An和B1-Bn分别放入两个乘法队列。
启动定时器,每一个时间片从两个乘法队列中各取出一个源数据、或者从加法队列中取出两个数据源(依次只能是两者中的一种,可以考虑首先从加法队列中取,请思考为什么加法优先?
),送入加乘法器(可以通过调用乘法器中对应的加法接口函数或者乘法接口函数,把源数据作为参数传入)。
构造加乘法器类,可以考虑用一个长度对5的执行队列来模拟流水线的5个步骤,对于队列的元素,除了要表示两个源数据外,还需要表示对应这两个数据所要执行的操作(乘法或加法),每个时间片将队列的数据根据执行的操作依次下压一格(加法下压的顺序是1-2-3-5,乘法下压的顺序是1-4-5),队列尾的数据进行对应的计算,并将结果压入加法器源数据队列。
当乘法源队列和乘法源队列均为空且加乘法器的执行队列也为空(所有运算执行完毕)时,任务执行完毕。
用一个记数值表示时间开销,每个时间片对该记数值加1。
最后的记数值是任务的总的时间开销。
(五)多次模拟
可以通过循环的方式对n从4-20进行循环,将每次模拟运行的时间开销值在对话框中显示出来。
如果可能将结果打印。
三.实验要求:
实验前要做好充分准备,包括对开发环境的了解,程序设计的思路,以及输出的格式。
四.调试步骤
1.编辑源程序,建立一个基于对话框的VC工程.
2.创建队列、定时器、加乘法器类,确定程序流程。
3.创建显示对话框。
4.编码、编译、调试。
五.时空图模拟
用时空图模拟计算执行任务所花费的时间。
六.结果对比
对比程序模拟和时空图模拟的结果,如果应该是一致的。
七、实验报告:
1、程序说明。
说明程序的设计、数据结构、类。
2、画出程序框图。
3、写出源程序清单和执行结果。
实验四页面置换算法性能分析
一.实验目的
1.掌握LRU、FIFO页面置换算法,
2.理解堆栈型算法,
3.了解页面置换算法对虚拟存储系统性能的影响。
二.实验内容
给定页面地址流。
使用VC开发模拟程序,模拟在不同实页情况下,FIFO和LRU置换算法对实页的使用情况,假定访问实页的时间为,访问辅存的时间为100计算并在屏幕上输出对应该页地址流在不同实页数和置换算法的情况下的访问时间。
多次更改页地址流,重复上述操作,记录时间,观测在FIFO和LRU算法下访问时间和实页数的关系。
根据结果理解堆栈型算法。
(一)给定页地址流:
2,3,2,1,5,1,4,5,3,2,5,2
(二)用堆栈法画图计算该页地址流在1-5个实页情况下,使用FIFO和LRU算法的页面命中情况并计算所需时间:
(三)程序设计
FIFO算法可以用队列来模拟,对页面的访问可以用定时器来模拟。
LRU算法可以用堆栈来模拟。
程序应该包括一个虚页面队列,该队列用于保存页地址流;一个LRU调度器类用于模拟LRU调度;一个FIFO调度器类用于模拟FIFO调度;一个对话框用于显示调度结果。
1、页面地址流保存在页面队列中。
2、构造LRU调度器类,该类中包含一个长度为n的堆栈,n表示实页数,该值从1到k(不同的虚页数)循环;可以通过类构造函数传入n。
包含一个记数值记录访问时间,记数值初始为0。
3、构造FIFO调度器类,该类中包含一个长度为n的堆栈,n表示实页数,该值从1到k(不同的虚页数)循环;可以通过类构造函数传入n。
包含一个记数值记录访问时间,记数值初始为0。
4、用定时器模拟页面访问,每个时间片从虚页面队列中取出一个虚页号,通过LRU调度器类和FIFO调度器类的对应接口函数将该虚页作为参数传入。
5、LRU类的接口函数实现如下功能:
用传入的虚页号遍历堆栈,查找与之一致的记录,如果有则表示命中,将对应的虚页号压入堆栈直到覆盖原记录。
并将记数值加1。
如为查到表示未命中,将对应的虚页号压入堆栈直到堆栈尾,并将记数值加100。
6、FIFO类的接口函数实现如下功能:
用传入的虚页号遍历堆栈,查找与之一致的记录,如果有则表示命中,将记数值加1。
如为查到表示未命中,将对应的虚页号压入堆栈直到堆栈尾,并将记数值加100。
7、程序初始化时创建n个FIFO类对象和n个LRU类对象,其堆栈大小分别从1-n。
8、虚页队列空表示模拟完成,提前n个FIFO类对象和n个LRU类对象中的记数值和相应参数,在显示对话框中输出并打印。
9、与
(二)中的结果进行比对。
(四)使用多个不同的页地址流多次进行模拟,并保存每次模拟的结果。
(五)对结果进行分析,判断两种调度算法的优劣,判断其中那种算法是堆栈型算法。
三.实验要求:
实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等。
四.调试步骤
1.编辑源程序,建立一个基于对话框的VC工程.
2.创建虚页队列、定时器、LRU类,FIFO类、确定程序流程。
3.创建显示对话框。
4.编码、编译、调试。
四.时空图模拟
用堆栈画图法模拟调度并计算所花费的时间。
五.结果对比
对比程序模拟和画图模拟的结果,如果应该是一致的。
六、实验报告:
1、程序说明。
说明程序的设计、数据结构、类。
2、画出程序框图。
3、写出源程序清单和执行结果。
电子科技大学
实验报告
学生姓名:
学号:
一、实验室名称:
二、实验项目名称:
三、实验原理:
四、实验目的:
五、实验内容:
六、实验器材(设备、元器件):
七、实验步骤及操作:
八、实验数据及结果分析:
九、实验结论:
十、总结及心得体会:
十一、对本实验过程及方法、手段的改进建议:
报告评分:
指导教师签字:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 试验 指导书 电子科技大学