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

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

3天内不再提示

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

Q4MP_gh_c472c21 来源:strongerHuang 作者:strongerHuang 2021-01-21 09:45 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

为什么有些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流水线技术是一种将指令分解为多步,并让不同指令的各步操作重叠,从而实现几条指令并行处理,以加速程序运行过程的技术。

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

0fe530da-57de-11eb-8b86-12bb97331649.jpg

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

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

---来自百度百科

三、流水线与代码执行效果

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

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

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

1018fd0c-57de-11eb-8b86-12bb97331649.png

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

10548656-57de-11eb-8b86-12bb97331649.jpg

四、多级流水线优缺点

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

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

1.优点

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

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

2.缺点

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

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

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

原文标题:为什么CPU流水线会提高代码执行效率?

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

责任编辑:haq

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

    关注

    6074

    文章

    45341

    浏览量

    663700
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11218

    浏览量

    222976
  • 代码
    +关注

    关注

    30

    文章

    4941

    浏览量

    73156

原文标题:为什么CPU流水线会提高代码执行效率?

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MOSFET的应用领域

    1)电脑、服务器的电源--更低的功率损耗; 2)适配器(笔记本电脑、打印机等)--更轻、更便捷; 3)照明(HID灯、工业照明、道路照明等)--更高的功率转换效率; 4)消费类电子产品(液晶电视、等离子电视等)--更轻、更薄
    发表于 11-26 06:54

    时钟周期和指令周期的区别是什么

    时钟周期: 是硬件的时间单位,由主频直接决定。类似于音乐的节拍器,所有操作按此节奏同步。例如,72MHz 的 CPU 每秒完成 7200 万次时钟周期。 指令周期: 指令周期是软件视角的耗时
    发表于 11-21 07:01

    为什么FPU在MCU中很重要呢?

    的执行时间(较少受软件库实现和中断影响),这对实时控制系统很重要。 简化开发: 开发者可以直接在代码中使用 float 和 double 类型进行数**算,编译器会自动生成 FPU 指令,无需调用复杂的软件库或手写优化汇编。开发效率更高
    发表于 11-18 07:05

    迈威选择性波峰焊:更高效率+更优品质+更低成本

    自动化焊锡机
    迈威机器人
    发布于 :2025年11月12日 11:50:50

    通过优化代码来提高MCU运行效率

    存中的地址按照其类型自然对齐,非对齐访问在某些架构上非常慢甚至会导致异常。 函数设计 减少函数调用深度。 参数尽量少,通常4个以内可以通过寄存器传递,效率更高
    发表于 11-12 08:21

    常用硬件加速的方法

    空间换时间。而状态机则相反。流水线级数越多,意味着流水线被切的越细,每一级流水线内容纳的硬件逻辑越少,在两级寄存器(每一级流水线由寄存器组成)之间的硬件逻辑越少,则意味能够运行到更高主频。让整个
    发表于 10-29 06:20

    优化boot4的乘法运算周期

    优化电路设计:在电路设计中,优化关键路径和信号传输路线,使用更高速的逻辑单元和存储器元件来降低延迟,从而缩短乘法器的运算周期。 利用流水线技术:使用流水线技术将乘法操作分成多个阶段,使每个阶段的操作
    发表于 10-21 13:17

    如何将更高的输入电压转换为更低的输出电压

    在低电压情形中,通常使用无变压器的开关模式电源。但在某些应用中,也可改为使用高压降压控制器等新型器件。高压降压控制器能够实现简洁的设计,从而避免了使用变压器所带来的成本和难度。而且,高压降压控制器具备高功率转换效率,支持高输出电压,并可用于从正电源生成高负电压。
    的头像 发表于 09-30 17:11 6332次阅读
    如何将<b class='flag-5'>更高</b>的输入电压转换为<b class='flag-5'>更低</b>的输出电压

    坚持继续布局32位MCU,进一步完善产品阵容,96Mhz主频CW32L012新品发布!

    CW32L012基于ARM® Cortex-M0+内核,主频高达96MHz,同时集成了CORDIC硬件单元、扩展算术运算单元(EAU),可以提供部分数学函数、算术运算的硬件加速,特别适用于电机控制、电源、计量、信号处理等应用。
    的头像 发表于 07-16 16:34 1026次阅读
    坚持继续布局32位MCU,进一步完善产品阵容,96Mhz<b class='flag-5'>主频</b>CW32L012新品发布!

    单核CPU网关和双核CPU网关有什么区别

    单核CPU网关与双核CPU网关的核心区别在于处理能力、多任务效率、性能表现及适用场景,双核CPU网关在多任务处理、复杂计算和响应速度上具有显著优势,而单核
    的头像 发表于 07-05 14:37 740次阅读

    STM32多通道FFT运算异常的原因?怎么解决?

    通道左右出现卡死; 怀疑为处理能力或内存瓶颈导致。 五、请求支持 是否为MCU处理能力不足导致的预期行为? 若为资源瓶颈,是否建议使用更高主频 / 更大RAM的芯片(如F7/H7)? 在
    发表于 06-19 06:27

    国产电脑CPU性能排行榜TOP7:CPU缓存/主频/多核实测数据分析

    在科技飞速发展的今天,电脑CPU(中央处理器)无疑是计算机性能的核心部件。而长久以来,国际品牌在这一领域占据着主导地位,给人一种国产CPU性能不行的刻板印象。然而,随着技术的不断进步和研发投入的加大,国产电脑CPU性能已经取得了
    的头像 发表于 04-29 10:38 2394次阅读
    国产电脑<b class='flag-5'>CPU</b>性能排行榜TOP7:<b class='flag-5'>CPU</b>缓存/<b class='flag-5'>主频</b>/多核实测数据分析

    请问蜂鸟e203如何提高主频

    蜂鸟e203的主域频率是16Mhz,假如需要将主频提高到200MHZ(所使用的板卡是支持200M的),有什么办法吗? 目前已尝试的工作:直接使用外部mmcm模块生成一个100MHZ的时钟替换
    发表于 04-17 06:35

    【国产信创CPU全攻略】分享国产CPU品牌排行榜!从排名到避坑!

    最近收到不少粉丝留言:“想换国产电脑,国产CPU品牌太多,完全不知道怎么选!”“信创CPU排名到底靠不靠谱?”今天咱们就来唠唠这个话题——国产CPU品牌有哪些?信创
    的头像 发表于 04-14 14:34 4188次阅读
    【国产信创<b class='flag-5'>CPU</b>全攻略】分享国产<b class='flag-5'>CPU</b>品牌排行榜!从排名到避坑!

    主频和晶振频率的关系

    主频和晶振频率共同影响设备的性能和稳定性。今天凯擎小妹聊一下主频,晶振频率,以及两者之间的关系。
    的头像 发表于 03-11 17:48 1209次阅读