加法乘法动态多功能流水线调度.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
加法乘法动态多功能流水线调度

实 验 报 告 学生姓名: 学 号: 一、实验室名称:计算机学院计算中心 二、实验项目名称:加法乘法动态多功能流水线调度 三、实验原理: 把加法和乘法流水线分开,完成乘法流水线后再进行加法流水线。 把一个乘法任务分成三个部分,然后同时执行多个任务以模拟指令的流水线调度。三个步骤每同时完成一次任务执行总时间就加一,直到最后一个操作数进入流水线,此时加法流水线开始工作。 把一个加法任务分成四个部分,然后同时执行多个任务以模拟指令的流水线调度。四个步骤每同时完成一次任务执行总时间就加一,直到没有任务时停止,看此时的时间与理论上的流水线调度时间的差距来判别程序是否成功模拟了流水线指令的调度。 四、实验目的: 掌握加法乘法动态双功能指令调度的方式, 理解静态多功能流水线和动态多功能流水线在调度模式上的区别, 了解指令并行度上限的概念。 五、实验内容: (一)给定要执行的任务和执行该任务的流水线结构 流水线的调度方式能够提高任务的并行度,但是针对不同的任务,由于相关的存在,其并行度的提高是不一致的。在开始程序设计前,我们首先要给定所要完成的任务: 这里我们使用矩阵点积运算任务, 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进行循环,将每次模拟运行的时间开销值在对话框中显示出来。如果可能将结果打印。 六、实验器材(设备、元器件): PC机一台,Visual StudioC++2010 实验步骤及操作: 算法原理阐述(包括如何实现流水线,如何实现队列,数据相关的分解策略); 实现流水线的方法: 通过三个乘法子程序和四个加法子程序模拟流水线的各个步骤。 实现队列: 两个数据源队列和一个结果队列,前两个数据源对应位相乘后结果放进结果队列,然后加法流水线从结果队列取数据运算。 数据相关的分解策略: 从键盘读入数据个数,进行乘法流水线时每次取对应的两个数据源数据进行运算。然后加 法流水线时每次开始时取两个数,可操作数减二,执行完最后一步可操作数加一。 算法流程图(如何模拟加法流水线在每个单位时间的流动); 关

文档评论(0)

jgx3536 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档