为什么相对简单的设备(例如微控制器)比CPU慢得多?


25

给定相同数量的管线级和相同的制造节点(例如65 nm)和相同的电压,简单的设备应该比复杂的设备运行得更快。同样,将多个流水线级合并为一个流级不应比级数慢很多。

现在以使用五年的CPU为例,它以2.8 GHz的频率运行14个流水线级。假设一个合并阶段;那会减慢到200 MHz以下 现在增加电压并减少每个字的位数;实际上会加快速度。

这就是为什么我不理解为什么许多当前制造的微控制器(例如AVL)以惊人的速度运行(例如5 V时为20 MHz)的原因,尽管几年前制造的复杂得多的CPU能够运行150倍或10倍以上的速度如果将所有流水线级合为一个,电压为1.2 V-ish。根据最粗略的计算,即使使用边界过时技术制造的微控制器,在其提供的电压的四分之一处,其运行速度也应至少快10倍。

因此产生了一个问题:微控制器时钟速率降低的原因是什么?


8
大量的微控制器采用过时的落后技术制造,因为制造商需要付费。
马特·杨

18
功率。将两个CPU的功耗都考虑在内,它们将非常接近相同的性能/瓦特,否则微型将胜出。
Brian Drummond

34
更简单的==更快的想法是完全错误的。现代cisc CPU的许多复杂性都具有使其更快的功能,例如多级缓存,管道和分支预测
PlasmaHH 2016年

1
那个旧的cpu几个月或几年都没有用小电池供电。每天使用最先进的(昂贵的)技术。不必为每条指令等待慢速/廉价闪存。单片机几乎不需要快速运行,他们可以为开发人员使用一些新的Verilog,并在任何铸造厂上实现它。我喜欢自行车vs一级方程式赛车的评论最好,我认为可以总结一下。
old_timer '16

14
20 MHz一点也不慢。PC的GHz速度让我们受宠若惊,在PC上,大多数资源都用于渲染精美的图形。您可以使用
千赫兹

Answers:


66

还有其他因素也会影响速度。

  • 内存:实际性能通常受内存延迟的限制。英特尔CPU具有大容量的缓存来弥补这一点。微控制器通常不这样做。闪存比DRAM慢得多。

  • 功耗:这在嵌入式应用程序中通常很重要。实际的200 MHz Intel CPU消耗的功率超过10瓦(通常更多),并且需要大的散热器和风扇。这需要占用空间和金钱,甚至还没有计算随之而来的外部逻辑和内存。一个20MHz的AVR需要约0.2瓦,这包括你需要的一切。这也与工艺有关-更快的晶体管倾向于泄漏。

  • 工作条件:正如Dmitry在评论中指出的那样,许多微控制器可以在很宽的电压和温度范围内工作。我上面提到的ATMega可以在-40C至85C的温度下工作,并且可以在-65C至150C的任何温度下存储。(其他MCU的最高工作温度为125C甚至155C。)VCC电压可以为2.7V至5.5V(峰值性能为5V +/- 10%)。Core i7数据表很难读取,因为它们会在制造过程中修整允许的VCC,但电压和温度容限肯定会更窄-约3%的电压容限和105C的最高结温。(最低温度为5C,但是当您拉升> 100 A时,最低温度并不是真正的问题。)

  • 登机口:更简单并不总是会更快。如果是这样的话,英特尔将不需要任何CPU架构师!不只是流水线;您还需要高性能FPU之类的东西。那抬高了价格。因此,许多低端MCU都只有整数CPU。

  • 芯片面积预算:微控制器必须在一个芯片中适应许多功能,通常包括用于该应用程序的所有内存。(SRAM和可靠的NOR闪存很大。)PC CPU与片外存储器和外围设备通信。

  • 工艺:那些5V AVR是按照古老的低成本工艺制造的。记住,它们是从头设计的,价格便宜。英特尔使用金钱可以买到的最好的技术来高利润地销售消费产品。英特尔还销售纯CMOS。MCU流程需要生产片上闪存,这更加困难。

以上许多因素是相关的。

您现在可以购买200 MHz的微控制器(这是一个示例)。当然,它们的成本是20 MHz ATMegas的十倍 ...

简短的版本是速度比简单要复杂,便宜的产品是为了便宜而不是速度而优化的。


11
不要忘记其坚固性:如果电源电压变化超过5%左右,典型的CPU就会失效,而ATMega则以1.8-5.5V范围内的任何频率在4MHz下运行。
德米特里·格里戈里耶夫

1
@DmitryGrigoryev好点!我已经更新了答案。
亚当·豪恩

25

速度较慢的一个主要的技术原因是便宜/小型的MCU仅使用片上闪存来存储程序(即,它们不从RAM执行)。

小型MCU通常不缓存程序存储器,因此在执行每个周期之前,它们始终需要从闪存中读取一条指令。这提供了确定性的性能和#cycles / operation,价格便宜/简单,并且避免了类似PC的问题,在这些问题中代码和数据混合在一起,从而由于缓冲区溢出等而产生新的威胁。

从闪存读取的延迟(大约50-100ns)比从SRAM或DRAM读取的延迟(大约10ns或更少)要慢得多,并且必须在每个周期内产生延迟,从而限制了闪存的时钟速度。部分。


4
功率(以及热量)的增加也随频率线性增加。
Kimberly W

1
我不认为从闪存读取的时间接近 100 ns,不是吗?IIRC比它大两个数量级。但是,如果您的闪存控制器包含较小的DRAM缓存,并且代码不太分支,则缓存命中率可能会很高(90%+),因此平均延迟可能会低很多。
MSalters

2
我打开的此AT91SAM7S数据表的内部闪存表示其内部闪存“快速访问时间,最坏情况下30 MHz单周期访问”。那是33ns。它具有一个预取缓冲区的双字。片外Flash确实可能具有更高的延迟。
pjc50 '16

1
@Jamil我不记得确切的公式,但是我相信这是频率的平方。
Jan Dorniak '16

22

当您拥有一级方程式赛车时,为什么人们骑自行车或小型摩托车?当然,以每小时300公里的速度行驶并立即到达任何地方一定更好吗?

简而言之,没有必要比他们更快。我的意思是,肯定会有一点点,并且更快的微控制器确实可以启用某些功能,但是对于每天可能连续使用一小时的自动售货机,您将如何处理?您要用电视说遥控器做些什么?

另一方面,它们还具有其他重要功能,例如低功耗,更易于编程等。基本上,它们不是处理器,而是做不同的事情。


12
@Michael您从哪里获得简单=快速的想法?
马特·杨

3
@Michael自行车比汽车要简单得多,但速度仍然较慢。无论如何,马特是对的。简单的事情不会自动快速。就是说,仅出于更高频率的考虑,快速的事情将变得复杂。
AndrejaKo 2016年

2
高性能CISC处理器往往会发布比简单嵌入式处理器更多的指令。他们正在并行执行更多工作,因此既复杂又更快。
Kimberly W

2
@Michael $ 1对于某些应用来说可能是非常昂贵的,我读到micro SD卡中的微控制器的价格约为19美分
Xen2050 2016年

2
@Michael“这就是RISC体系结构的全部思想:简单任务的处理速度比复杂任务要快” 现代的RISC架构极其复杂,因为它们必须引入更多的指令(​​如SIMD)并支持更多的功能,例如超标量,超线程,无序执行...它们的复杂性很容易超过CISC架构。如今,MIPS拥有数百或数千条指令。“ CISC诉RISC很大程度上是一场历史性辩论”
phuclv

13

有许多运行在数百兆赫或更高频率的ARM控制器。谁需要一个500 MHz的PIC,并愿意为每个零件支付足够的价格,以证明数百万美元的掩模可以满足最先进的工艺要求?

据报道,流行的ATmega328采用350 nm技术制造,这比最新生产的Intel CPU(Skylake为14 nm )落后了很多。

即使是廉价的8位控制器,其速度也逐渐提高,您可以获得32和64 MHz的PIC控制器(例如PIC18F14K22),它们仍在5V电压下工作(后者是系统总成本的考虑因素)。

一个考虑因素是这些控制器具有针对较小的存储空间和较慢的时钟速度进行了优化的体系结构。一旦开始进入高时钟速度,就必须使用预分频器等对事物进行调整。

早在1990年代末就曾尝试生产速度非常快的PIC控制器,其想法是,如果微控制器足够快,则固件可以代替外设。例如,您可以对UART进行位冲击。我不认为它们在商业上取得了所有成功-Scenix-> Ubicom-> Qualcomm(游戏结束)。


350 nm?那就可以解释了。不知道有人会使用20年的技术来​​制造任何东西。
迈克尔

3
我们中有些人仍在设计(而不只是使用)4000系列CMOS(大约3000nm)。
Spehro Pefhany,2016年

6
对于处理辐射环境或要求可追溯性的高可靠性系统的人来说,较旧的过程也可能有用。
克鲁纳德赛

5
游戏还没有结束-视差螺旋桨是该概念的延续。
戴夫·特威德

3
@Michael:这不仅是技术的时代。大小也很重要。较大的工艺尺寸具有较低的缺陷率,这意味着较低的废品率和较高的成品率-从而降低了每个芯片的成本。如果您愿意为CPU(例如台式机)支付100美元,那么由于产量较低而导致的较高成本是合理的。如果您只愿意支付50美分,那么这是没有道理的。
slebetman '16

3

想象一个想要生产汽车的人。一种方法是在工厂中顺序使用一堆设备,一次制造一辆汽车。可以使用少量的中度复杂的设备来完成此方法,可以使用许多这样的设备执行一个以上的步骤。另一方面,工厂中的许多设备大部分时间仍处于闲置状态。

另一种方法是设置一条装配线,这样,处理了第一步生产的设备一旦完成了对第一辆车的操作,便可以继续对下一辆车进行相应的操作。尝试在制造过程的多个阶段重用一件设备会很复杂,因此在大多数情况下,最好使用更多的设备进行优化以执行一项非常特定的任务(例如,如果需要钻50 10种不同尺寸的孔,那么最小设备设置将包括一个10位钻头和一个快速更换机构,但是装配线可以有50个钻头,每个钻头都带有一个永久性安装的钻头,不需要快速更换) 。

对于DSP或GPU之类的东西,由于要执行的工作性质非常一致,因此可以相对便宜地实现非常高的速度。不幸的是,许多CPU需要能够处理复杂度不同的任意指令错误。有效地执行此操作是可能的,但它需要非常复杂的调度逻辑。在许多现代CPU中,“完成工作”所必需的逻辑并不是过于复杂或昂贵,但是协调其他所有事物所必需的逻辑却是。


2
抱歉,如果我错过了,但是这与CPU和“较慢”的微控制器有什么关系?它似乎只专注于CPU与(通常甚至更快)专用处理器。
underscore_d

1
@underscore_d:第一段介绍了较简单的微控制器-它们就像是一次只生产一辆汽车的小商店。第二段指出,有些便宜的控制器可以非常快速地执行很多操作,但是在它们可以执行的操作种类上受到限制。困难的是能够执行任意混合的操作,同时将它们重叠到很大程度(但高度可变)。如果有一个子系统在每个周期都可以接受两个数字,并且将输出四个周期前提交的两个数字的乘积,则……
supercat

1
...另一个将在每个周期中接受两个数字并输出两个周期前提交的总和,试图找出何时需要提交值,何时可以使用结果,何时从中加载和保存值寄存器等会变得非常复杂,特别是如果要避免填充所有管线以匹配最长的管线。
超级猫

谢谢; 清除它。是的,有意义的是,快速通用CPU在“脚手架”上产生了大部分的财务和能源成本,包括流水线,高速缓存,调度,RAM控制等。不仅成本高昂,而且通常不需要用于微米。同样,它永远不会令我惊奇,在专门针对一种应用量身定制的处理器中,以相对较小的时钟频率可以完成的工作。双方都很有趣!
underscore_d

@underscore_d:MIPS体系结构是在编译器将负责某些调度问题的前提下设计的,因此可以简化硬件。我认为,这个概念从未真正流行,因为与较旧的处理器相比,较新的处理器通常需要更多的流水线级,但是在没有硬件互锁的情况下,为具有较短流水线的处理器编写的代码将无法在具有较长流水线的处理器上工作。
超级猫
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.