新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 从4004到core i7:处理器的进化史(3)-4-第一次加速

从4004到core i7:处理器的进化史(3)-4-第一次加速

作者:时间:2014-02-19来源:摘自《果壳小组》网收藏

  前面有位童鞋表示对很感兴趣,在这里现在不讲,只贴一张7的die photo,上面已经透露了很多有用的信息了~

本文引用地址:http://www.eepw.com.cn/article/233547.htm

  45nm
  1,200,000 transistors
  8 core-32 thread
  32MB L3$
  32 slot max

  呼~终于忙得差不多鸟~

  在这个帖子中,我们会看到设计中的第一次重大飞跃:流水线()

  为了理解什么是流水线,我们先来看一看一条汽车装配线上的情况:

  假设一辆汽车从无到有需要以下4个步骤:

  焊接车身
  底盘与车身结合
  装入发动机
  装上轮子

  我们再假设发动机、车身的钢板、轮子等等零件都是事先准备好的,它们的存储量是充足的。

  假设我们有一台机床,上面有各种机械手,那么我们会怎么造汽车呢?

  焊接车身-》底盘与车身结合-》装入发动机-》装上轮子

  假设上面每一个环节需要1分钟,那么我们的生产速度是0.25辆/分钟。

  当然我们不会这么做,因为福特早就替我们想好了更高效的解决方案:

  准备4台机床,每台机床都仅仅具备一个环节的工具即可。每台车在完成一个环节的组装后就立即流向下一个环节。

  这样我们可以保证4台机床每一台都不会空闲,并且得到了相当可观的生产速度提升:1辆/分钟。

  我们终于有了第一个加速算法:

  将整体工作分成N个环节。当这N个环节互相独立的时候,最多可以获得N倍的性能提升。

  对于来说,这就相当于主频提升了N 倍!

  你可能时常听到所谓的超流水线,就是环节特别多的流水线。

  现在你可能可以理解这些流水线被设计出来的初衷了:把任务分割的越细(流水线越深),主频理论上来说就越高。当然,我们会在后面看到,过深过细的流水线反而会损害性能。比如说,intel的netburst。

  但是,当这N个环节互相之间产生相互依赖的时候该怎么办呢?

  看看以下的伪代码:

  ...
  mov reg1,0
  nop(= no operation)
  ...
  nop
  mov reg1,1
  mov reg2,reg1
  nop
  nop
  ...

  再回忆一下我们前面说过的指令执行的环节:

  IF->ID->OC->EX->WB


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭