- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机系统结构实验一流水线指令调度
计算机专业类课程
实验报告 课程名称:计算机系统结构
学 院:计算机科学与工程
专 业:计算机科学与技术
学生姓名:林怡
学 号:2012060020023
指导教师:叶娅兰 日 期: 2015年 5月 5日 电 子 科 技 大 学
实 验 报 告
实验一
实验名称:流水线指令调度
实验学时:4
实验内容和目的:
实验目的:
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进行循环,将每次模拟运行的时间开销值在对话框中显示出来。如果可能将结果打印。
实验原理:
程序设计及数据结构:
实验程序共有6个类,分别是:
PipeAdditionTest 公共类,测试程序,每一个n的循环,将计时器清零并初始化长度
为n的源操作数队列,当源操作数队列有多余一个操作数或者加法器的执行队列不为空的时候持续调用加法器类执行加法操作,在程序结束时输出n以及计时器timercounter的值;
OperaQueue 操作数队列类,包括一个操作数队列数据结构、队列初始化函数
OperaQueue(int queueLength)、从队列中取一个源操作数函数getOperationNum()和将加法器计算的结果压入队尾的函数pushOperationNum(int op);
Addition 加法器类,包含一个加法执行队列additionQueue,一个用于暂存操作数的队列addOperandQueue。构造函数Addition(int len)用于初始化加法器执行队列,函数fetchOpNum在每一个时间片从源操作数队列中取出操作数,函数getAdditionResult()将两个源操作数相加并返回它们的和,以及一个空操作executeNop()用于模拟加法器四级流水线。
Timer 成员变量timerCounter为时间片计数器。
DialogFrame 对话框相关。
DialogFrameComponent 对话框相关。
实验器材(设备、元器件)
Win7操作系统、Eclipse集成开发环境、JDK1.8、Java程序语言
实验步骤:
程序流程图:
实验数据及结果分析:
当n=4时,时空图如下: 此时时间片开销为t=9
当n=5时,时空图如下:此时时间片开销为t=12
当n=6时,时空图如下:此时时间片开销为t=13
实验程序结果如图:
由截图可知
文档评论(0)