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

十堰门户网站建设武汉竞价托管公司

十堰门户网站建设,武汉竞价托管公司,深圳网站开发公司有哪些,各大网站每日热点汇总一条指令的执行一般要经过取指令,翻译指令,执行指令3个基本流程。CPU内部的电路分为不同的单元,取指但愿,译码单元,执行单元等。指令的执行也是按照流水线工序一步步执行的。如图2-34所示,我们假设每一个步…

    一条指令的执行一般要经过取指令,翻译指令,执行指令3个基本流程。CPU内部的电路分为不同的单元,取指但愿,译码单元,执行单元等。指令的执行也是按照流水线工序一步步执行的。如图2-34所示,我们假设每一个步骤的执行时间都是一个时钟周期,那么一条指令执行需要3个时钟周期。

    CPU执行指令的3个时钟周期里工作,其余两个时钟周期都处于空闲状态,其他两个执行单元也是如此,这样做效率太低了,消费者无法接受,老板更无法接受。解决方法就是引入流水线,让流水线上的每一颗螺丝钉都马不停蹄的运转起来。

    2.5.2 超流水线技术

    优化CPU流水线也是提升CPU性能的有效手段,流水线存在木桶短板效应,找出CPU流水线的性能瓶颈,对其再进行细分,拆解为更多的工序就可以了 。每一道工序都成为流水线中的一级,流水线越深,每一道工序的执行时间就会变得越小,处理器的时钟周期就可以更短,CPU的工作频率就可以更高,进而可以提升CPU的性能,提高工作效率。

    在手机生产流水线上,耗时最长的那道工序决定了整条流水线的吞吐率。CPU内部的流水线也是如此,流水线中耗时最长的那道工序单元的执行时间决定了CPU流水线的性能。

   流水线通过减少每一道工序的耗时来提升整条流水线的效率,在CPU内部也是如此,CPU内部的数字电路是靠时钟驱动来工作的,既然每条指令的执行时钟周期数不变,即执行每条指令都需要3个时钟周期,但是我们可以通过缩短一个时钟周期的时间来提升效率。即减少每条指令所耗费的时间,一个时钟周期的时间变短,CPU主频也就相应的提升,影响时钟周期的长短。

组合逻辑 1ns

寄存器1

0.5ns

组合逻辑2

1ns

寄存器2

0.5ns

组合逻辑3

1ns

寄存器3

0.5ns

   我们把5级以上的流水线称为超流水线结构,为了提升CPU主频,高性能的处理器一般都会采用这种超流水线结构,Intel的i7处理器有16级流水线,AMD的速龙64系列CPU有20级流水线,intel 第三代奔腾4处理器,有31级流水线。

    流水线是否越深越好?不一定,本质是拿空间换时间,流水线越深,电路会越复杂,需要更多的组合逻辑电路和寄存器,芯片面积越大,功耗上升了。

    流水线越深,就一定能提升性能吗?不一定,执行的程序指令如果是顺序结构的,没有中断或者跳转,流水线确实可以提高执行效率,但是当程序指令中存在跳转,分之结构的时候,下面预取的指令就要全部丢掉了。

BEQ R1, R2, here

ADD R2, R1, R0

ADD R5, R4, R3

here:

   SUB R2, R1, R0

   sub R5, R4, R3

  在上面的汇编程序中,BEQ是一个条件跳转指令,根据寄存器R1和R2的值是否相等,跳转到不同的地方执行,正常情况下,当执行BEQ指令时,下面的ADD指令就已经被预取和译码了,如果程序没有跳转,则会接着继续往下执行。

   流水线越深,一旦预取失败,浪费和损失就会越大,因为流水线种预取的几十条指令可能都要丢弃,此时流水线就发生了停顿,无法按照预期继续执行,这种情况我们一般称为流水线冒险。

    2.5.3 流水线冒险

   引起流水线冒险的原因有很多种,根据类型不同,我们一般分为3种。

1 结构冒险, 所需要的硬件正在为前面的指令工作

2 数据冒险 当前指令需要前面指令的运算数据才能执行

3 控制冒险:需要根据之前的指令的执行结果决定下一步的行为,

   结构冒险很好理解,如果多条指令都用相同的硬件资源,如果内存单元,寄存器等,就会发生冲突。

ADD R2, R1, R0

SUB R1, R4, R3

 上面这两条指令执行时需要访问寄存器R1, 但是这两条指令之间没有依赖关系,不需要数据的传送。仅仅在使用的硬件资源上发生了冲突,这种冲突我们称为结构冒险。解决结构冒险的方法很简单,我们直接对冲突的寄存器进行重命名就可以了。这种操作可以通过编码器静态实现,也可以通过硬件动态完成,如图2-38所示,我们在流水线中加入寄存器重命名单元就可以了。

取指

译码

重命名

执行

 通过硬件电路对寄存器重命名后,代码就变成了下面的样子,将SUB指令中的R1寄存器重命名为R5,结构冒险解决。

ADD R2, R1, R0

sub R5,R4, R3

 数据冒险指当前质量需要上一条指令的运算结构,上一条指令没有允许结束,当前指令就无法运行。只能暂停。

ADD R2,R1, R0

SUB R4, R2, R3

  第二条SUB指令,要等待第一条ADD指令运行结束,将运算结果写回寄存器R2之后才能执行。现在的经典CPU流水线一般分为5级,取指,译码,执行,访问内存,写回。也就是说,执行指令结束后,还需要吧运行结果写回寄存器,下一条指令才能到这个寄存器取数据。要解决流水线的数据冒险,有很多方法,比如Operand forwarding 技术,当ADD指令运行结束后,不再执行后面的回写寄存器操作,而是直接使用运算结果,第二个解决方法是在ADD和SUB指令中插入空指令,暂缓SUB指令的执行。

    为了防止数据冒险,我们在时钟周期2和时钟周期3内,添加了两个空指令,让流水线暂时停顿,产生空泡。在第5个时钟周期,ADD指令执行结束,并将运算结果写回寄存器R2之后,SUB指令才在第6个时钟周期继续执行,通过这种填充空指令的方式,SUB指令虽然延缓了2个时钟周期执行,但是总比吧后面预取的几十条指令都丢掉强,当流水线很深的时候,这种方式很划算。

    控制冒险也是如此,当我们执行BEQ这样的条件判断的时候,无法确定接下来要执行什么,无法确定到哪里取指令的时候,也可以采取图2-39所示的解决方法,插入几个空指令,等BEQ执行结束后再去取指令就可以了。

http://www.ritt.cn/news/23627.html

相关文章:

  • android电影网站开发seo快排技术教程
  • 俄语搜索网站潍坊在线制作网站
  • 电子商务网站建设规划书的内容如何自己创建网址
  • 全能网站建设教程北京百度推广官网首页
  • 东莞网站建设推广公司武汉seo工厂
  • 广东住房和建设局网站创建网站的基本步骤
  • 广汉做网站建网站找哪个平台好呢
  • 合肥市城乡建设局东莞网站推广行者seo08
  • 企业小程序开发报价seo在线排名优化
  • 网站建设分为几个时期百度指数的需求指数
  • 化妆品商城网站建设app推广接单网
  • 龙华做网站 熊掌号by72777最新域名查询
  • 校园淘宝店网站开发百度极速版
  • wordpress 中文插件大全惠州seo排名外包
  • 网站多语言 设计开发app需要多少资金
  • 开滦建设集团网站公司营销策划方案
  • 快递建站收费标准足球排名最新排名世界
  • 论坛做网站好吗百度一下手机版首页
  • 怎么做提升网站转化率国内b2b十大平台排名
  • 哪里的软件系统开发站长工具seo优化系统
  • 昌做网站今日热点新闻头条
  • 建设网站有哪些疫情最新政策最新消息
  • 做网站开发的网络营销推广活动有哪些
  • 食品网站建设日程表网络推广工作
  • 违章搭建宝鸡seo培训
  • 哈尔滨免费模板建站独立站
  • 重庆网站建设招聘seo和sem的区别
  • 南通网站推广公司seo关键词优化排名推广
  • 青岛市规划建设局网站网站收录量是什么意思
  • 淄博哪里有做网站的百度浏览器网址是多少