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

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

3天内不再提示

为什么有些CPU的主频更低,但运算效率却更高呢?

strongerHuang 来源:嵌入式专栏 作者:strongerHuang 2022-06-24 09:41 次阅读

为什么有些CPU的主频更低,但运算效率却更高呢?

比如:51单片机30M主频,STM32单片机20M主频,执行相同一段代码,主频更低的STM32所花的时间却更短。

这里就牵涉到CPU流水线的问题,本文围绕CPU流水线描述相关内容。

早期CPU流水线

1.流水线来源

流水线的概念来源于工业制造领域,以汽车装配为例来解释流水线的工作方式,假设装配一辆汽车需要四个步骤:

1.冲压:制作车身外壳和底盘等部件; 2.焊接:将冲压成形后的各部件焊接成车身; 3.涂装:将车身等主要部件清洗、化学处理、打磨、喷漆和烘干; 4.总装:将各部件(包括发动机和向外采购的零部件)组装成车;

汽车装配需要冲压、焊接、涂装和总装四个工人,最简单的方法是一辆汽车依次经过上述四个步骤装配完成之后,下一辆汽车才开始进行装配,最早期的工业制造就是采用的这种原始的方式,即同一时刻只有一辆汽车在装配。

不久之后人们发现,某个时段中一辆汽车在进行装配时,其它三个工人都处于闲置状态,显然这是对资源的极大浪费,于是思考出能有效利用资源的新方法,即在第一辆汽车经过冲压进入焊接工序的时候,立刻开始进行第二辆汽车的冲压,而不是等到第一辆汽车经过全部四个工序后才开始,这样在后续生产中就能够保证四个工人一直处于运行状态,不会造成人员的闲置。这样的生产方式就好似流水川流不息,因此被称为流水线。

2.CPU流水线

1989 年推出的 i486 处理器引入了五级流水线。这时,在 CPU 中不再仅运行一条指令,每一级流水线在同一时刻都运行着不同的指令。这个设计使得 i486 比同频率的 386 处理器性能提升了不止一倍。

五级流水线中的取指阶段将指令从指令缓存中取出(i486 中的指令缓存为 8KB);

第二级为译码阶段,将取出的指令翻译为具体的功能操作;

第三级为转址阶段,用来将内存地址和偏移进行转换;

第四级为执行阶段,指令在该阶段真正执行运算;

第五级为退出阶段,运算的结果被写回寄存器或者内存。

由于处理器同时运行了多条指令,大大提升了程序运行的性能。

CPU流水线技术

CPU流水线技术是一种将指令分解为多步,并让不同指令的各步操作重叠,从而实现几条指令并行处理,以加速程序运行过程的技术。

指令的每步有各自独立的电路来处理,每完成一步,就进到下一步,而前一步则处理后续指令。

877c6e6e-f356-11ec-ba43-dac502259ad0.jpg

采用流水线技术后,并没有加速单条指令的执行,每条指令的操作步骤一个也不能少,只是多条指令的不同操作步骤同时执行,因而从总体上看加快了指令流速度,缩短了程序执行时间。

流水线技术是通过增加计算机硬件来实现的。它要求各功能段能互相独立地工作,这就要增加硬件,相应地也加大了控制的复杂性。如果没有互相独立的操作部件,很可能会发生各种冲突。例如要能预取指令,就需增加指令的硬件电路,并把取来的指令存放到指令队列缓冲器中,使微处理器能同时进行取指令和分析、执行指令的操作。

流水线与代码执行效果

为什么说同主频的51单片机相比STM32执行效率低呢?

除了大家认为的8位和32位宽度区别之外,还有一个就是51单片机不支持流水线(也可以理解为单流水线),而STM32支持流水线。

Cortex‐M3处理器使用一个 3 级流水线。流水线的 3 级分别是:取指、解码和执行, 如图:

878eac3c-f356-11ec-ba43-dac502259ad0.png

通过下面一张图来对比单流水线和多级流水线,你就更能明白为什么51单片机执行效率低了。

879c9716-f356-11ec-ba43-dac502259ad0.jpg

多级流水线优缺点

并非在所有情况下流水线技术都起作用,可能有一些缺点。如果一条指令流水线能够在每一个时脉周期接纳一条新的指令,被称为完整流水线(fully pipelined)。因流水线中的指令需要延迟处理而要等待数个时脉周期,被称为非完整流水线。

当一名程序员(或者组合者/编译者)编写组合代码(或者汇编码)时,他们会假定每个指令是循序运行的。而这个假设会使流水线无效。当此现象发生后程序会表现的不正常,而此现象就是危害。不过当前有提供几种技术来解决这些危害像是转发与延迟等。

1.优点

减少了处理器执行指令所需要的时脉周期,在通常情况下增加了指令的输入频率(issue-rate)。

一些集成电路,例如加法器或者乘法器,通过添加更多的环路使其工作得更快,如果以流水线替代,能相对地减少环路。

2.缺点

流水线处理器设计复杂度更高、生产成本更高;

流水线的处理器必须在数据路径中添加额外触发器。

非流水线处理器有固定指令位宽,流水线处理器的性能更难以预测,并且不同的程序之间的变化可能更大。

审核编辑 :李倩

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

    关注

    68

    文章

    10301

    浏览量

    206122
  • 流水线
    +关注

    关注

    0

    文章

    110

    浏览量

    24104
  • 焊接
    +关注

    关注

    38

    文章

    2696

    浏览量

    58017

原文标题:ARM流水线如何提高代码执行效率

文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么是cpu主频和外频,它们之间关系如何

    主频主频是指CPU内部的时钟频率,也被称为时钟速度或运行频率。它决定了CPU的工作速度和处理器能够完成的每秒操作数量。主频越高,
    的头像 发表于 02-03 16:50 570次阅读

    提高系统效率的几个误解解析

    中断任务特别多的话,这个没退出来,后面又接踵而至,一会儿系统就将崩溃了。如果任务数量多很频繁的话,CPU的 很大精力都用在进出中断的开销上,系统效率极为低下,如果改用查询方式反而可极大提高
    发表于 01-15 07:29

    瑞芯微RK3568J如何“调节主频”,实现功耗降低?一文教会您!

    ,在overdrive模式下处理器主频可调节至更高芯片使用寿命会缩短。根据仿真结果,连续工作在1.8GHz@1.05V和105°C时,RK3568J芯片使用寿命会降至3年以下。 如需运行在高
    发表于 12-01 09:48

    创建更低延迟和更高效率的 5G 系统

    创建更低延迟和更高效率的 5G 系统 5G 是新型信息基础设施的基石,通过实现更低延迟和更高数据速率促进更多新型应用。 利用 TI 业界出色的先进射频无线电和中频采样技术以及系统专业知
    的头像 发表于 11-08 08:21 156次阅读
    创建<b class='flag-5'>更低</b>延迟和<b class='flag-5'>更高效率</b>的 5G 系统

    如何使PLC的设计和实现达到更高效率和生产力

    电子发烧友网站提供《如何使PLC的设计和实现达到更高效率和生产力.pdf》资料免费下载
    发表于 11-02 11:18 0次下载
    如何使PLC的设计和实现达到<b class='flag-5'>更高</b>的<b class='flag-5'>效率</b>和生产力

    请问主函数是怎么知道芯片主频

    主函数是怎么知道芯片主频
    发表于 10-17 06:29

    用STVD和IAR开发STM8的工程,哪个软件的开发效率应该更高

    哪个软件的开发效率应该更高
    发表于 10-15 10:55

    为什么MCU中的除法运算要比乘法运算效率低?

    为什么MCU中的除法运算要比乘法运算效率
    发表于 10-09 07:45

    如何用协处理器拓展指令实现更高运算

    按照这句话的意思,协处理器拓展指令只能实现读写操作吗,官方的案例貌似也只是读写指令。那如何用协处理器拓展指令实现更高运算,用内联汇编吗
    发表于 08-16 07:41

    RTX4000显卡怎么样 cpu主频重要还是核数重要

    cpu主频重要还是核数重要   这个问题涉及到不同类型的应用程序,因此不能简单地回答“主频重要”或“核数重要”哪一个更重要。
    的头像 发表于 05-31 16:32 3899次阅读

    更低的系统成本实现更高的移动存储性能

    更低的成本获得更高的存储性能可能会在存储设备的设计中造成瓶颈。为了实现更高的性能,设备必须使用片上DRAM,这增加了总体成本。这就是统一内存扩展(UME),JEDEC规范的出现。它被定义为 JEDEC UFS(通用闪存)规范的
    的头像 发表于 05-26 14:22 668次阅读
    以<b class='flag-5'>更低</b>的系统成本实现<b class='flag-5'>更高</b>的移动存储性能

    CPU的硬件运行效率

    提到CPU性能,大部分同学想到的都是CPU利用率,这个指标确实应该首先被关注。但是除了利用率之外,还有很容易被人忽视的指标,就是指令的运行效率。如果运行效率不高,那
    的头像 发表于 05-17 10:48 608次阅读
    <b class='flag-5'>CPU</b>的硬件运行<b class='flag-5'>效率</b>

    如何评估CPU硬件效率CPU硬件运行效率介绍

    提到CPU性能,大部分同学想到的都是CPU利用率,这个指标确实应该首先被关注。但是除了利用率之外,还有很容易被人忽视的指标,就是指令的运行效率
    的头像 发表于 05-17 10:04 994次阅读
    如何评估<b class='flag-5'>CPU</b>硬件<b class='flag-5'>效率</b>?<b class='flag-5'>CPU</b>硬件运行<b class='flag-5'>效率</b>介绍

    FOC控制方式和六步换向方式哪个效率更高

    FOC控制方式和六步换向方式哪个效率更高?网上都说FOC效率高,但是实测用相同的电源电压去驱动,加相同的负载,相同的转速,FOC用的电流反而比六步换向要大??
    发表于 04-18 17:34

    CPU架构演进:CPU分类和CPU技术路线

    CPU按用途可分为桌面、服务器、移动端CPU和嵌入式CPU。桌面CPU主要应用于个人计算机(台式机、笔记本电脑)。服务器CPU主要用于服务器
    发表于 03-20 09:42 1681次阅读