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

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

3天内不再提示

CPU究竟跑的有多快

FPGA之家 来源:FPGA之家 作者:FPGA之家 2022-08-29 10:26 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

相对人的感官来说CPU跑的太快了——即便是人们常常用来描述时间短暂的“一眨眼功夫”对CPU来说也是及其“漫长”的好几百毫秒了——仔细想想有几个人能在一秒钟内连续眨十次眼睛呢?正因为如此,即便是超级循环里面顺次执行的多个任务,在人类看来也往往是“一瞬间就执行完了”。那么CPU究竟跑的有多快呢?是很快、非常快还是快得不得了?如果我们继续站在人类的视角考虑这个问题,其抽象程度无异于思考“无穷大究竟是多大”。

让我们想象着周围的时间相对你突然都慢了下来,从微处理器的视角重新审视这个世界。

【第一个参考点】

“1MHz就是 1us”

“1MHz就是1us”是一个基准概念,通过修改思考方式,我们就可以利用它快速而有效的解决很多实际问题。作为练习,我们来尝试依次快速的回答以下几个问题:

假设每个时钟脉冲都对应一个指令周期:

已知系统频率是1MHz,请问1us内有几个指令周期?

已知系统频率是12MHz,请问1us内有几个指令周期?

已知系统频率是11.3728MHz,请问1us内有几个指令周期?

已知系统频率是500KHz,请问1us内有几个指令周期?

很显然,如果你试图首先计算出系统周期:

4ebfa412-266c-11ed-ba43-dac502259ad0.png

再用1us去相除:

4ecb2382-266c-11ed-ba43-dac502259ad0.png

这个过程已经慢了

让我们来换一种思维模式,既然1MHz对应1us(也就是1us对应一个指令周期),那么12MHz就是1MHz的12倍,1us时间内就有12个指令周期;同理可得,当系统频率分别是11.3728MHz和500KHz(0.5MHz)的时候,1us时间内对应的指令周期数分别是11.3728个和0.5个。 借助这个等效,我们就可以对CPU的处理能力建立更多量化的感官,比如1ms的时间内,CPU能做多少事情呢?由于1ms等于1000us,对1MHz的系统来说,1ms可以完成1000个指令周期,12MHz的系统可以完成12000个指令周期。然而1000和12000这样的数字对于只有十个手指的人类大脑来说还是太抽象了,因此我们更进一步,把指令周期换算成等效的代码尺寸:

由于主流的微控制器其指令集中大多是单周期指令,我们不妨假设所有指令都是单指令周期的,这样1个指令周期就对应一条指令;

假设每条指令都是2个字节大小(16位指令);

这样,1ms时间内1MHz的系统可以运行大约2KB的代码,一个12MHz的系统可以运行24KB的代码,依次类推。

那么2KB是什么概念呢?如果你平时有留意编译后的代码尺寸,2KB大约是一个基础驱动库的尺寸,可以包含一个USART的驱动或者实现电源管理而24KB几乎是一个小型工程应用的尺寸了

借助这些非常具体的数字,我们很容易拿它们和中断处理程序进行比较,建立直观的认识——比如:

中断处理程序“执行的是不是足够快”?

“丢中断的风险究竟有多大”等等?

使用中断接收外设数据的时候会不会发生丢失?

可以肯定的是,这种忽略循环和条件分支的评估方法几乎是一个代码的最差情况,也就是说,在1MHz的系统中对于一个1KHz的毫秒中断,中断处理程序越接近2KB,就说明系统越可能“丢中断”

在这种情况下,除非你通过编译器提供的等效汇编代码仔细的计算过实际的周期数,或者是通过perf_counter这样的工具实际测量过代码的周期消耗——确信时间上处理周期不会大于1ms且这期间不会存在其它中断处理程序,否则你的中断处理程序还是比2KB越小越好。

【一个真实的案例】

在一个72MHz的Cortex-M3/M4系统下,使用中断模式来接收串口数据,波特率为115200的情况下:

最大允许屏蔽中断多长时间?

中断处理程序允许的理论最大安全尺寸是多少?

首先,我们要搞清楚系统的指令大小和指令集的周期数情况。以ARM Cortex M3/M4为例,其指令大部分为单周期指令,支持16位指令和32位指令。为了评估中断处理程序的尺寸上线,我们可以分别以16位指令和32位指令为基础计算出两个结果作为参考范围;

其次,系统频率为72MHz,假设USART没有硬件FIFO,则115200的波特率在典型的“1起始位+1终止位+无校验位+8数据位”的配置下(每个数据帧对应10个bit),实际上对应最大11.52KB/s的数据率——或者说,USART完成中断每秒钟发生 11.52K次。至此,我们可以回答第一个问题,即在这一系统中最大允许屏蔽中断多长时间——1/11.52KHz ≈87us。

也就是说,假设中断屏蔽的时间为87us则中断处理程序的理论最大尺寸范围是(72 * 87 * 2)字节到(72 * 87 * 4)字节,即12.528KB到25.056KB之间。取最小值12KB。

结论,中断处理程序及其调用的子函数,其尺寸总和至少要小于12KB才能确保115200波特率的接收完成中断得到及时的响应。由于未考虑循环、分支以及其它任务的存在,以上结果仅用于粗略的快速评估,实际代码通常应该远小于这一上线值。当实际尺寸接近或者超过13KB时基本可以判定该系统存在无法及时稳定的响应中断的可能——需要对代码进行进一步的具体分析。

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

    关注

    48

    文章

    8255

    浏览量

    162503
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11221

    浏览量

    222991
  • 时钟脉冲
    +关注

    关注

    0

    文章

    20

    浏览量

    13153

原文标题:【实时性迷思】CPU究竟跑的有多快?

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    分的秘密,A8内里乾坤一探究竟

    昨天,Anandtech带来了苹果两款新iPhone的分数据,从结果来看,进步最明显的却是iPhone的电池续航,而CPU和GPU性能反映在分上的进步却并不算太明显。
    发表于 09-25 09:05 1746次阅读
    高<b class='flag-5'>跑</b>分的秘密,A8内里乾坤一探<b class='flag-5'>究竟</b>

    请问STM8L151的速度多快

    STM8L151的速度多快?我配置的16MHz的晶体,打算测量us级的脉冲宽度,不知道能不能胜任,哪位用过的给个建议,谢谢!
    发表于 05-15 08:27

    EasyLink_init 不过

    EasyLink_init 不过,一直卡在,究竟什么回事的??好经常出现这种情况。最近这次都一直不过。
    发表于 06-24 04:10

    请问STM32定时器的最大工作时钟可以多快

    定时器2-7的最大工作时钟可以多快呢?是否和定时器1与8一样可以72M吗?Tout = (arr*(psc+1))/(Tclk+1) 时间准确还是 Tout = (arr*(psc+1))/Tclk 更准确呢?
    发表于 04-24 05:04

    电子的漂移速度究竟多快

    电子信号通常以极快的速度从A点传播到B点,那有谁知道具体多快吗?
    发表于 08-08 06:50

    请问DSPlib中FFP的速度多快?

    请问TI,M4中,DSPlib中FFP的速度多快?另外,M4支持字的操作吗?先谢.
    发表于 04-13 10:37

    LabVIEWDMA与普通的IRQ传输方式多快

    问题: 和DMA传输方式相比,普通的IRQ传输方式多快?解答: 数据传输方式包括直接内存访问(DMA),中断请求(IRQ)和可编程I/O。DMA是一种DAQ板卡和PC内存间直接通讯的传输方式,不再
    发表于 04-10 10:48

    3G的速度多快

    3G的速度多快? 先有视频通话的体验,后有高速上网的诱惑。如今,三大3G技术标准将全面起跑。可是,各方关于3G高速的宣传尽管铺天盖地,
    发表于 05-21 01:13 8042次阅读

    细数全球十大最快电动车辆大比拼,究竟能跑多快

    今天,电子发烧友网为您盘点了十大最快的电动车辆。电动汽车究竟能跑多快? 事实上他们可以快到超乎你想象。
    发表于 03-16 13:41 8w次阅读

    小米30W超级无线闪充速度到底多快

    小米9 Pro 5G首发30W超级无线闪充。问题来了,30W超级无线闪充速度到底多快
    的头像 发表于 09-18 16:20 8827次阅读

    cpu频率高低什么影响

    很多人在购置电脑的时候都什么关注cpu的频率高低,那么cpu的频率高低究竟对电脑什么影响呢?下面就让我来为你介绍一下!
    发表于 05-18 09:57 8955次阅读

    Cinebench R23 多款 CPU分 苹果开发者套装的 A12Z 分 987 分

    Cinebench R23 上多款 CPU分,苹果开发者套装的 A12Z 分 987 分。 如上图所示,Cinebench R23 的分机制
    的头像 发表于 11-12 14:57 4050次阅读

    万兆光模块的速度到底多快

    在当今数字化时代,网络速度的需求日益增长,尤其是在高负载网络环境下,万兆光模块成为日常生活中网络升级的主要选择。但是,万兆光模块究竟多快?万兆光模块如何应用在不同场景下?本文将为您详细解答这些问题,并给出实用的建议和方案。
    的头像 发表于 10-09 10:02 1212次阅读

    iPhone到尔滨掉电多快 锂电池保护策略甚至导致关机

    iPhone到尔滨掉电多快 锂电池保护策略甚至导致关机 冬天手机续航大幅变差这个iPhone用户最有发言权,最近老火的尔滨来解密了,iPhone到尔滨掉电多快
    的头像 发表于 01-19 14:01 1055次阅读

    什么是DMA?DMA究竟多快

    助于提高数据传输速度和系统效率。 那么,DMA究竟多快呢? 实践出真知 恰好,最近有个多通道数据采集的项目,受限于通道数多、分辨率高,而系统带宽有限,为了尽可能充分利用有限带宽,就得想办法优化时序,把时间都留给数据采集和传输。 优化方向就是DMA。 硬件链路是A
    的头像 发表于 02-22 10:43 3504次阅读
    什么是DMA?DMA<b class='flag-5'>究竟</b>有<b class='flag-5'>多快</b>!