0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是流水线?ARM处理器流水线简析

冬至子 来源:晓亮Albert 作者:晓亮Albert 2023-09-05 15:39 次阅读

CPU 流水线

什么是流水线?

类似于工厂流水线。

为什么要弄出这个东西?

流水线是为了提高效率,能并发同时进行多个任务。

CPU的一个任务,或者说指令,被分为很多个步骤完成,就跟生产线上装配汽车,分成若干个零件工序依次安装。

几种CPU流水线

Intel:流水线较少,但是每条流水线的长度很长。可以想象成,Intel有较少的生产线,而每个生产线上把装配一辆汽车分成了较多的步骤,所以生产线很长。这样的优点是,生产线上的每个步骤需要完成的任务相对较少,这样,工作的节奏很容易加快,也就是号子喊的可以快一些,所以Intel的P4主频提高非常迅速。

这种架构的缺点是,因为流水线太长,如果中间有一步发生错误,只有到最后一个工序才能发现。虽然这种错误几率很小很小,但是不可避免,而且会被非常高的主频放大无数倍,带来的影响就是工作效率并没有随着节奏的加快而明显提升,也就是Intel“高频低能”的原因之一。Intel的Pentium M系列就没有采用这种架构模式,而是采用类似AMD的短管线多管线模式。

AMD:拥有较多的流水线,就是说,生产线较多,但是每条生产线的长度较短。带来的影响是,在短生产线上装备一辆汽车的话,每个工序需要干的活比较多,所以大家工作的节奏就不能太快。所以AMD的主频提高非常困难。可是AMD较多的流水线同样保证了指令执行数量,也就是装配汽车的数量,效率较高。短的流水线受工序错误的影响也很低,因为流水线短,发现错误会更及时。主频低,错误率被放大的也小。

CPU的主频

CPU的主频相当于流水线工作的统一干活节奏。你可以想象成主频就是干活时候喊的号子,大家都跟着号子一步一步的干活。

描述主频的单位:

MIPS(Million Instruction Per Second)表示CPU每秒执行多少百万条指令。比如0.9MIPS,表示每秒九十万条指令。

MIPS/MHz表示CPU在每MHz的运行速度下可以执行多少个MIPS,如0.9MIPS/MHz则表示如果CPU运行在1MHz的频率下,每秒可执行90万条指令。如果CPU在20MHz的频率下,每秒可运行1800万条指令。MIPS/MHz可以很好的反映CPU的速度。

ARM CPU 三级流水线(基于ARMV7)

3级流水线如上图所示(PC为程序计数器),流水线使用3个阶段,因此指令分3个阶段执行。

⑴ 取指-从存储器装载一条指令

⑵ 译码-识别将要被执行的指令

⑶ 执行-处理指令并将结果写回寄存器或者存储器

以前学过的51单片机,因为比较简单,所以它的处理器只能完成一条指令的读取和执行后,才会执行下一条指令。这样,PC始终指向的正在“执行”的指令。

而对于ARMV7来说因为是3级流水线,所以把指令的处理分为了上面所述的3个阶段。

所以处理时实际是这样的:ARM正在执行第1条指令的同时对第2条指令进行译码,并将第3条指令从存储器中取出。

所以,ARMV7流水线只有在取第4条指令时,第1条指令才算完成执行。

下图生动形象的说明了3级流水线的处理机制。

下面一句话很关键: 无论处理器处于何种状态,程序计数器R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或者“正在译码”的指令

人们一般会习惯性的将正在执行的指令作为参考点,即当前第1条指令。

所以,PC总是指向第3条指令,或者说PC总是指向当前正在执行的指令地址再加2条指令的地址。

处理器处于ARM状态时,每条指令为4个字节,所以PC值为正在执行的指令地址加8字节,即是:

PC值 = 当前程序执行位置 + 8字节

处理器处于Thumb状态时,每条指令为2字节,所以PC值为正在执行的指令地址加4字节,即是:

PC值 = 当前程序执行位置 + 4字节

下面一个例子就很好的说明了这个问题。

  1. 0x4000 ADD PC,PC,#4 ;正在被执行的指令,将地址值PC+4写入PC
  2. 0x4004 ...;正在被译码的指令
  3. 0x4008 ...;正在被取指的指令,PC=0x4008
  4. 0x400C ...;PC+4=0x400C

另外补充说明就是根据以上描述,流水线只有被指令填满时才能发挥最大效能,即每时钟周期完成一条指令的执行(仅单周期指令)。

如果程序发生跳转,流水线会被清空,这将需要几个时钟才能使流水线被再次填满。因此,尽量地少使用跳转指令可以提高程序的执行效率。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储器
    +关注

    关注

    38

    文章

    7148

    浏览量

    161985
  • 流水线
    +关注

    关注

    0

    文章

    110

    浏览量

    24988
  • 计数器
    +关注

    关注

    32

    文章

    2121

    浏览量

    92974
  • ARM处理器
    +关注

    关注

    6

    文章

    346

    浏览量

    41323
  • MIPS芯片
    +关注

    关注

    0

    文章

    6

    浏览量

    1778
收藏 人收藏

    评论

    相关推荐

    FPGA中的流水线设计

    设计的算法,如第一条中表述的流水线设计就是将组合逻辑系统地分割,并在各个部分(分级)之间插入寄存,并暂存中间数据的方法。针对处理器中的流水线结构。比如,比如 5—6 个不同功能的电路
    发表于 10-26 14:38

    ARM流水线有什么作用

    看到汇编中很多关于程序返回与中断返回时处理地址都很特别,仔细想想原来是流水线作用的效果。所以,决定总结学习下ARM流水线ARM7
    发表于 07-16 06:53

    ARM架构系列中的流水线设计

    什么是ARM流水线流水线(Pipelining)是 RISC(精简指令集)处理器用来执行指令的机制,通过获取指令来加速执行,而其他指令同时被解码和执行。这反过来又允许内存系统和
    发表于 04-11 17:23

    现代RISC中的流水线技术

    作Stretch计算机)。后来的CDC 6600同时采用了流水线和多功能部件。到了20世纪80年代,流水线技术成为RISC处理器设计方法中最基本的技术之一。RISC设计方法的大部分技术都直接或者间接以提高
    发表于 03-01 17:52

    流水线结构的高效SAR快视成像处理器

    流水线结构的高效SAR快视成像处理器
    发表于 05-08 17:16 23次下载

    周期精确的流水线仿真模型

    使用软件仿真硬件流水线是很耗时又复杂的工作,仿真过程中由于流水线的冲突而导致运行速度缓慢。本文通过对嵌入式处理器流水线, 指令集, 设备控制器等内部结构的分析和
    发表于 12-31 11:30 9次下载

    什么是流水线技术

    什么是流水线技术 流水线技术
    发表于 02-04 10:21 3739次阅读

    流水线中的相关培训教程[1]

    流水线中的相关培训教程[1]  学习目标     理解流水线中相关的分类及定义;
    发表于 04-13 15:56 885次阅读

    电镀流水线的PLC控制

    电镀流水线的PLC控制电镀流水线的PLC控制电镀流水线的PLC控制
    发表于 02-17 17:13 36次下载

    一文读懂处理器流水线

    本文将讨论处理器的一个重要的基础知识:流水线。熟悉计算机体系结构的读者一定知道,言及处理器微架构,几乎必谈其流水线处理器
    发表于 04-08 08:16 2.2w次阅读
    一文读懂<b class='flag-5'>处理器</b><b class='flag-5'>流水线</b>

    Verilog基本功之:流水线设计Pipeline Design

    ,并暂存中间数据的方法。 目的是将一个大操作分解成若干的小操作,每一步小操作的时间较小,所以能提高频率,各小操作能并行 执行,所以能提高数据吞吐率(提高处理速度)。 二. 什么时候用流水线设计 使用流水线一般是时序比较紧张
    发表于 09-25 17:12 4538次阅读

    各种流水线特点及常见流水线设计方式

    按照流水线的输送方式大体可以分为:皮带流水装配线、板链线、倍速链、插件线、网带线、悬挂线及滚筒流水线这七类流水线
    的头像 发表于 07-05 11:12 6332次阅读
    各种<b class='flag-5'>流水线</b>特点及常见<b class='flag-5'>流水线</b>设计方式

    嵌入式_流水线

    流水线一、定义流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,他们可同时为多条指令的不同部分进行工作。• 把一个重复的过程分解
    发表于 10-20 20:51 6次下载
    嵌入式_<b class='flag-5'>流水线</b>

    CPU流水线的问题

    1989 年推出的 i486 处理器引入了五级流水线。这时,在 CPU 中不再仅运行一条指令,每一级流水线在同一时刻都运行着不同的指令。这个设计使得 i486 比同频率的 386 处理器
    的头像 发表于 09-22 10:04 1361次阅读

    什么是流水线 Jenkins的流水线详解

    jenkins 有 2 种流水线分为声明式流水线与脚本化流水线,脚本化流水线是 jenkins 旧版本使用的流水线脚本,新版本 Jenkin
    发表于 05-17 16:57 667次阅读