在上一节中,顺溜已经告诉了我们流水线的基本概念,顺溜将整个射击过程分成了2个步骤(术语称之为节拍),两个步骤可以并行起来执行,只是时间上进行了些许的错位,这就是流水线的本质。

这条流水线被划分成了2个节拍,也就是2级流水线,于是我们引出了流水线的第一个问题:流水线级数

众所周知,Intel处理器的流水线级数要远高于ARM、DSP等嵌入式处理器,那么流水线级数更多,有什么好处呢?

还是以顺溜来举例子,假设顺溜将射击的流水线划分成4个步骤:上膛1、上膛2、射击1、射击2 四步,由于整个过程需要10秒,那么每一个小步骤需要2.5秒。

射击的4级流水线

从图我们可以看出,现在顺溜每2.5秒就可以射出一颗子弹,于是一分钟可以消灭24个敌人,射击效率提高了一倍。如果换成计算机的术语,那就是处理器的工作频率可以提升一倍。现在大多数嵌入式处理器的工作频率在1G Hz 左右徘徊,Intel处理器的工作频率早已跳过了3G Hz,这和流水线的级数有密切的关系。总而言之,在不考虑其他因素的情况下,流水线级数越多,工作效率越高。

再回到顺溜的例子,细心的读者可能会发现:顺溜并不是要求一个人给自己上膛,而是要求两个人。从直觉来看,顺溜不仅仅是个神枪手,同时也是个快枪手,射击的速度是上膛速度的两倍。我们再来从数学的角度严谨分析一下,这也引出了流水线的第二个问题:流水线的效率问题

先修改一下上一节的假设:上膛时间为10秒,射击时间为5秒。我们再来看看射击过程:

不规则的流水线示例

从图上我们可以看出,即使是顺溜射击得再快,也要等到战友将子弹上完膛,因此顺溜有一半的时间在等待,什么事情也没有做。本着能者多劳的原则,让顺溜闲着是极大的浪费,因此我们要想办法解决这个问题。

一种解决方法是将子弹上膛细分为2个步骤——上膛1和上膛2,组成3级的流水线,如下图所示:

拆分耗时较长的步骤

采用这种方式后,相当于有两个战友给顺溜上膛,一个做上膛1这个步骤,另一个做上膛2这个步骤,再加上顺溜,这三个人组成一个流水线,可以保证顺溜5秒杀一人。

不过,很多事情是很难进一步分拆的,例如上膛就不能分成2个步骤,那么这时候怎么办呢?我们可以采取如下的策略:配备2个战友给顺溜上膛,1个10秒内就可以有2把枪的子弹上膛了,在下一个10秒内,顺溜就可以射击2次,因此也能保证顺溜5秒杀一人。这也就是顺溜要求给自己配2个人装弹的原因。

给耗时步骤配置多个重复单元

上面这个例子,进一步通用化,当一个节拍的执行时间比别的节拍长时,这时候流水线的效率并不是最高,如图:

流水线的思想可以说是用在生活中的方方面面,车间流水线是它在工业上的用途之一,科学管理之父泰勒认为:科学管理理念的精髓之一就是进行流水作业。

《大话处理器》连载——微架构(2) 顺溜流水线的深入分析相关推荐

  1. 《大话处理器》连载——微架构(1) 顺溜的2级流水线

    2009年央视有部热播大剧:<我的兄弟叫顺溜>.剧中顺溜是一个神枪手,里面有一个场景,当鬼子来袭击部队时,顺溜向团长建议,给自己配2个人装弹,自己专门负责打枪. <我的兄弟叫顺溜&g ...

  2. 《大话处理器》连载——微架构(4) 史上最经典的5级流水线

    处理器内部有很多通用寄存器,这些寄存器用来存储指令的操作数,它对程序员可见,如x86有8个通用寄存器,RISC处理器则更多,常有32个或64个等等.这一堆寄存器也被叫做Register file(寄存 ...

  3. Intel Core Solo/Duo处理器架构/微架构/流水线 - 前端/数据预取/SSE3

    Intel Core Solo/Duo处理器采用的微架构类似于Pentium M处理器的微架构,但是在性能和功能方面做了进一步的增强,主要包括: Intel智能缓存 – Intel Core Duo的 ...

  4. Pentium 4处理器架构/微架构/流水线(1) - 概述

    Pentium 4 Architecture Overview 本节简要的介绍Pentium 4处理器的关键特性.这些特性提供了很好背景知识,用于理解详细的代码优化原则. Pentium 4处理器上用 ...

  5. Intel Skylake (Server) 架构/微架构/流水线 (2) - 体系结构新特性

    Intel Skylake Server微架构引入了如下的新特性(某些特性可能不是全系处理器标配),允许程序员为应用程序优化性能和能耗. 处理器核基于Intel Skylake Server微架构,这 ...

  6. Intel(R) 处理器产品架构/微架构对照表

    Intel(R) 处理器与微架构对照表 2020/12/23:更新至IceLake/TigerLake微架构 2019/07/09:更新至 2nd Generation Intel® Xeon® Sc ...

  7. 读书笔记5-处理器的微架构

    处理器的微架构 一个民族有一些关注天空的人,他们才有希望. 我们在硬件构建的世界里编写代码,在CPU的跳动声中运行代码,如果不去关心这一切是如何实现的,我们程序的效率必定会达到一个认知的瓶颈.在那时, ...

  8. 一文搞懂 | ARM微架构的变化

    一.引言 伴随智能手机的高速发展,移动处理器架构设计厂商ARM公司几乎每年都更新CPU的核心架构.从2018至2020年,ARM公司基于ARMv8架构推出了三代Cortex-A76.Cortex-A7 ...

  9. Intel, AMD及VIA CPU的微架构(39,完)

    21. 微架构的比较 已经调查的最先进微架构代表了不同的微架构核心:AMD,Pentium 4(NetBurst),Pentium M与Intel Core 2核心.现在我将讨论这些微架构的优缺点.我 ...

最新文章

  1. 将Model对象转换成json文本或者json二进制文件
  2. pytorch 指定卡1_[原创][深度][PyTorch] DDP系列第一篇:入门教程
  3. java核心标签库,16.JSTL标签库(我的JavaEE笔记)
  4. 计算机存储器可分两类,计算机存储器可分为几类?它们的主要区别是什么?
  5. node.js常见的模块
  6. java 调用 dll 乱码_java调用c++ dll出现中文乱码
  7. 【背包】小明逛超市(jzoj 2148)
  8. java足球游戏毕业设计,java毕业设计_springboot框架的校园足球管理平台
  9. 计算机网络的一些总结
  10. Atitit.web ui  组件化 vs  mvc
  11. VSCdoe 插件开发
  12. 简要介绍下tensorflow的计算图
  13. 洛谷 3455 (莫比乌斯反演优化)
  14. 小旋风asp iis_ASP 4-绕.NET 4(和Visual Studio 2010)Beta 1的旋风之旅
  15. 世界读书日:作为一个优秀的程序员请收藏这份书单
  16. 腾讯云轻量级服务器宝塔快速部署网站
  17. 本科毕业5年后入职985高校担任博导,这位小姐姐太强了!
  18. ceph-mimic版本的安装使用1
  19. python如何截长图_利用 Python + Selenium 实现对页面的指定元素截图(可截长图元素)...
  20. DMA+TIM3通用定时器输出PWM波形驱动TM1814

热门文章

  1. Gatling实时监控配置
  2. java多线程的6种实现方式详解
  3. 每天几个动作 帮新娘打造精致小脸
  4. typora操作手册
  5. 项目经理主要工作及指引
  6. Standford NLP在python环境中的安装与使用
  7. sqlserver命令注入和getshell
  8. Android开发 登录注册设计
  9. 文件包含漏洞实例操作
  10. 【非常详细】思科与华为设备命令对照表