当前位置: 首页 > news >正文

中小企业网站如何推广短剧

中小企业网站,如何推广短剧,wordpress的不好,前端特效网站目录 MIPS流水线处理器一、流水线概述二、流水线数据通路及其控制数据通路流水线控制 三、数据冒险#xff1a;转发与阻塞四、控制冒险 MIPS流水线处理器 一、流水线概述 以生活中的流水线为例#xff0c;洗衣房洗衣服分为以下几步#xff1a;1. 洗涤#xff0c;2. 烘干转发与阻塞四、控制冒险 MIPS流水线处理器 一、流水线概述 以生活中的流水线为例洗衣房洗衣服分为以下几步1. 洗涤2. 烘干3. 熨整。如果每批衣服都完成以上三步才开始洗下一批衣服会造成大量的资源浪费。如果上一批衣服在烘干的时候下一批衣服能够开始洗涤就可以提高资源利用率。MIPS流水线CPU的思想原理正是基于这种朴素的思想。 图1 串行洗衣房 图2 并行洗衣房 同理MIPS处理器执行指令的过程也可以分为几个逻辑独立的部分 IF取指PC自增ID指令译码读寄存器EX运算MEM读写数据存储器WB写回寄存器 为了保存指令在每个周期的中间结果需要添加4组流水线寄存器这样就构成了一个五级流水线CPU。上图只是流水线CPU的大致示意细节会在后续小节具体介绍。 二、流水线数据通路及其控制 数据通路 在单周期的数据通路上插入4组流水线寄存器 IF/ID寄存器主要存指令译码的结果指令的各个字段ID/EX寄存器主要存rs和rt寄存器的值以及立即数符号扩展后的值EX/MEM寄存器主要存ALU的计算结果MEM/WB寄存器主要存数据存储器的输出以及ALU的计算结果RF寄存器可以看成是最后一级流水线寄存器在这儿更新结果 更详细的图存在问题 两个最重要的疑问 在同一个周期内前面的指令写寄存器堆后面的指令读寄存器堆更新PC的时候需要在PC4和NPC之间选择会有什么问题 可以保证的是这两种情况不会影响之前的指令只会影响后面的指令。第一个问题会造成数据冒险第二个问题会造成控制冒险具体见后面两节。在这节介绍数据通路时我们暂时不管这两个问题以免造成混乱。 一个具体的例子 下面我们以数据通路最长的lw指令为例来理一遍流水线的数据通路。 IF阶段这个阶段主要是读IM将指令取出放入IF/ID寄存器中。这里可以看到一个现象lw指令显然是执行 P C ← P C 4 PC\leftarrow PC4 PC←PC4但是依旧会把PC4存入IF/ID寄存器中以便于计算NPC。这体现了一个原则尽可能将信息往后传递即使这条指令用不到其他指令也有可能会用到贸然舍弃不可取。 ID阶段在此阶段lw指令需要从寄存器堆中读取第一个寄存器的值作为基址并且将16位立即数符号扩展为32位立即数。同理这一阶段还是会将所有后续可能用到的数据向后传递第二个寄存器的值lw用不到但是也向后传递了。此图目前有一个问题如果你此时发现了能想到如何改正吗不行的话也没事我们在WB阶段会改正这个错误。 EX阶段我们在这个阶段根据基址加偏移算出最终的数据地址并将结果存入EX/MEM流水线寄存器中。 MEM级根据地址从DM中取出数据并存入MEM/WB流水线寄存器中。 WB级将MEM/WB流水线寄存器中保存的数据写回寄存器堆中。需要注意的是这里的写寄存器编号并不是当前lw指令对应的写寄存器编号而是此时运行到ID级的指令的编号因此需要更改一下数据通路。下图就是正确的通路。 流水线的图形化表示 书上最常见的表示形式就是这种比较完整仔细的形式横向是时间也就是周期纵向是指令。个人更倾向于使用另一种表示方法只画一个简易的流水线图然后在各个阶段标注正在执行的指令这对于做题分析更有帮助。 在此图的基础上简化各个部分的部件一个框加字母即可怎么方便怎么来。 流水线控制 由单周期CPU的设计可知指令执行的过程中需要很多的控制信号来引导指令的正确执行比如运算类型ALUOp、写寄存器信号RegWr等等。在单周期CPU中所使用的控制信号在流水线CPU中依然适用唯一不同的是需要将控制信号和数据一起往后传递以便于指令在执行的过程中能够一直得到对应自己的控制信号。 最简单的实现方式当然就是将控制信号一股脑地往后传递但是因为控制信号的作用域易于区分即一个控制信号可以明确在哪个流水级使用所以我们可以将控制信号按照作用的流水级分组并且在传递的过程中有选择地舍弃。 三、数据冒险转发与阻塞 冒险一共有三种类型 结构冒险硬件不支持多条指令在同一时钟周期中执行流水线的设计可以非常简单地避免结构冒险IM和DM分开就避免了结构冒险。另外一个结构冒险是在同一个时钟周期内前面的指令写回寄存器堆而后面的指令读寄存器堆造成的冲突解决这个结构冒险的常见办法之一是通过前半个周期写后半个周期读实现因此可以保证此时能够读到正确的数据。数据冒险数据相关MIPS中只有RAW相关即前面的指令是写寄存器后面的指令是读寄存器。在前面的指令还没有来得及将结果写回寄存器的时候WB级结束后面的指令就需要从同一个寄存器中取数此时就会造成数据冒险。 以上图为例当运行到第三个周期时sub指令需要从寄存器r1中读取操作数但是前一条指令add并没有将结果写回r1寄存器而是需要在第5个周期才能写回这就造成了sub指令取出的数据是“旧”的数据造成结果错误。而对于第四条指令oradd指令在第5个周期写寄存器add读寄存器这个就可以通过修改寄存器的内部结构改变因此不会造成数据冒险原ppt上画了红色应该不太对。 但是仔细分析可以知道add指令在第3个周期的结束就已经产生了正确的运算结果并且存入了EX/MEM流水线寄存器中而后续的4条指令真正使用到r1寄存器值的时间都在第4个周期及之后因此理论上就可以通过将EX/MEM流水线寄存器中的结果提前“转发”也叫旁路——这就是解决数据冒险的办法之一。 更精细的数据冒险类型以及判定条件 1a. EX/MEM.RegisterRd ID/EX.RegisterRs 1b. EX/MEM.RegisterRd ID/EX.RegisterRt 2a. MEM/WB.RegisterRd ID/EX.RegisterRs 2b. MEM/WB.RegisterRd ID/EX.RegisterRt 对应1a的更具体的判定条件 if(EX/MEM.RegWrite EX/MEM.RegisterRd ! 0 EX/MEM.RegisterRd ID/EX.RegisterRs) ForwardA 10 对应2a的更具体的判定条件 if(!(EX/MEM.RegWrite EX/MEM.RegisterRd ! 0 EX/MEM.RegisterRd ID/EX.RegisterRs) (MEM/WB.RegWrite MEM/WB.RegisterRd ! 0 MEM/WB.RegisterRd ID/EX.RegisterRs)) 2a需要先判定是否满足1a条件因为1a结果更“新” 然而并不是所有的数据冒险都是能够通过转发解决还有一些特殊的情况比如 lw指令最早在T4结束才能得到t0寄存器的正确结果而sub指令最迟在T4开始就需要使用t0寄存器的值因此就无法通过转发解决。此时只能使用解决数据冒险的另一个办法——阻塞。 目前指令集中只有一种可能会造成必须要阻塞前一条指令是lw指令后一条指令使用lw指令的目的寄存器作为源操作数寄存器。因此可以在ID级添加冒险检测单元检测冒险的逻辑如下 if(ID/EX.MemRead (ID/EX.ResgisterRt IF/ID.RegisterRs || ID/EX.ResgisterRt IF/ID.RegisterRt) ) stall the pipeline 完成阻塞需要做的事1. 冻结前面的流水线寄存器PC和IF/IDPC寄存器也可以理解成流水线寄存器即修改其写使能信号为02. 清除ID/EX流水线寄存器即修改其clr信号为1这样就相当于在lw指令后面加了一条空指令。 四、控制冒险
http://www.dnsts.com.cn/news/118121.html

相关文章:

  • 电脑上怎样进入中国建设银行网站辽宁建设工程信息网官网 可登录中项网
  • 制作网站第一步百度指数资讯指数是指什么
  • 青海省城乡和住房建设厅网站组合图片可以用在网站做链接吗
  • 建设部申请自己网站wordpress 安全防范
  • 龙城网站建设网站怎么建设教程
  • 产看网站权重知名网站开发语言
  • 辽宁城建设计院有限公司网站wordpress标题加密
  • 电子商务网站建设小结推动高质量发展心得体会
  • 微信网站程序seo文章关键词怎么优化
  • 上海建设厅焊工证查询网站开发app和做网站
  • 做简历网站有什么网站静态化设计
  • 医院网站开发方案安徽省建设工程信息网招标公告
  • 网站制作温州成都网站设计学校
  • 桂阳网站开发wordpress评论区插件
  • 长沙购物网站建设个人网站建设赚取流量费
  • 微信朋友圈网站广告怎么做ppt免费背景图片
  • gta5买房网站建设中网站建设新闻稿
  • 好网站的建设标准美萍物业管理系统
  • 汝州市文明建设网站局域网站建设银行信用卡
  • php网站开发需要学什么软件彩页印刷
  • 做网站的入什么科目大连网站前端制作公司
  • 学院网站建设服务宗旨建设银行网站会员用户名格式
  • 如何做网站调研flash个人网站片头
  • 做机电预算的网站长沙网站建设招聘
  • 专业网站的特点长春几个火车站啊
  • 建设网站教程视频视频seo手机排名软件
  • dede网站更新如何同步腾讯微博更新android开发技术
  • 网站搭建实训总结wordpress换标题
  • 教育直播网站开发网站制作自己
  • 网站 微信开发网站域名如何申请