8位还是32位,微处理器怎么选?

时间:2018-07-24来源:网络

正如汽车代替了马车,电子邮件代替了普通邮件一样,32位元微控制器(MCU)让8位元MCU变得黯然失色。尽管未来8位元MCU朝向32位元MCU发展将会成为现实,但目前还没那么容易实现。事实证明8位元MCU和32位元MCU仍是互补的技术,在一些方面各有千秋,而在其它方面的表现却同样出色。这其中的窍门在于厘清何种应用适合哪种MCU架构。

本文比较了8位元MCU和32位元MCU的使用案例,可作为如何选择这两种MCU架构的指南使用。

本文大部分32位元范例将关注于ARM Cortex-M装置,Cortex-M在不同MCU供应商产品组合中表现非常相似。由于8位元MCU有很多种架构,所以很难对8位元供应商之间进行类似的产品比较。为了进行比较,本文将使用广泛应用、易于理解的8051 8位元架构。

事实上,“ARM Cortex和8051哪个比较好”不是个逻辑问题,反而像是在问“吉他和钢琴哪个好”?真正要解决的问题是“哪种MCU最能帮助解决目前面临的问题?”。

不同的任务须使用不同的工具,使用者目的是要了解“如何才能善用所拥有的工具”,包括8位元和32位元装置。

对不同的装置进行比较,须要对其进行测量。有很多建构工具可供选择,本文尽量选择一些认为能够进行最公平的比较,且最能代表开发人员真实体验的情境。

以下ARM资料是透过GCC+ nanoCLibrary和-03最佳化选项所生成。

此一比较试验并不为任何一种装置的代码最佳化,只是简单实现90%开发人员都会使用的常见代码,并呈现普通开发人员所见到的结果,而不是理想状态下的结果。当然,花费诸多时间、精力和财力去调整8051代码使其表现胜过ARM是可能的,反之亦然,但一开始就选择适合该项工作的最佳工具比费尽心力做最佳化简单多了。

8位元MCU功效持续精进

在开始对架构进行比较前,要注意到并非所有的MCU都是一样,这一点非常重要。

如果将基于ARM Cortex-M0+处理器的现代MCU与30年前的8051 MCU做对比,8051 MCU在性能上当然不会胜出。幸运的是,许多供应商一直对8位元处理器持续投资。

例如芯科实验室(Silicon Labs)正持续更新基于8051核心的EFM8 MCU产品线,其效能比原始的8051架构更高,而且开发过程也已实现现代化。所以在许多应用中,8位元核心能够容易弥补比M0+或M3核心不利的地方,甚至在一些方面性能更佳。

开发工具也很重要。现代嵌入式韧体开发需要全功能IDE、现成的韧体库、丰富的范例、完整的评估和入门套件,以及助手应用,以简化硬体设定、资料库管理和量产编程之类的工作。当MCU有了现代化的8位元核心和开发环境时,在很多情况下,这样的MCU将超越基于ARM-Cortex的类似MCU。

以系统规模选择MCU

第一个一般性原则是:ARM Cortex-M核心更适用于较大的系统规模(》64KB代码),而8051装置适用于较小的系统规模(《8KB代码)。中等规模的系统可以选择两种方式,这取决于系统要执行的任务。须要注意的是,在大多数情况下,周边组合将会发挥重要作用。如果需要三个UART、一个LCD控制器、四个时脉和两个ADC,使用者可能不会在8位元MCU上找到所有的周边。

易用性与成本/尺寸之比较

对于中等规模的系统来说,使用任何一种架构都可以完成工作。但主要须考量是选择ARM核心带来的易用性,还是8051装置带来的成本和物理尺寸优势。

ARM Cortex-M架构具备统一的储存模式,并在所有常见编译器中支援完整的C99,这使得该架构非常易于写韧体。此外,还可得到一系列资料库和协力厂商代码。

当然,这种易用性的代价就是成本。对于高复杂性、上市时间较短的应用或缺乏经验的韧体开发人员来说,易用性是个重要因素。

比起32位元MCU,8位元MCU的成本颇具优势。使用者经常会发现内建2KB/512B(Flash/RAM)的小容量8位元MCU,而却很难找到低于8KB/2KB的32位元MCU。在不需要很多资源的系统中,储存容量小的MCU能够让系统开发人员获得显着的成本降低。因此,对成本极为敏感或仅需较小储存容量的应用,会更倾向于选择8051解决方案。

8位元晶片通常也具备物理尺寸上的优势。例如Silicon Labs提供的最小32位元QFN封装为4mm×4mm,而基于8051的8位元晶片的QFN封装可小至2mm×2mm。

晶片级封装(CSP)的8位元和32位元架构之间的差异较小,但却使成本增加,且组装较难。对于空间严格受限的应用来说,通常须要选择8051装置来满足限制要求。

通用代码/RAM效率易影响MCU成本

8051 MCU成本较低的主要原因之一是其使用Flash和RAM的效率通常比ARM Cortex-M核心更高,这允许系统采用更少资源实现。系统越大,这种影响就越小。

然而,这种8位元储存资源的优势并不总是如此,这一点很重要。在某些情况下,ARM核心会像8051核心一样高效或比其更高效。例如32位元运算在ARM MCU上仅需要一条指令,而在8051 MCU上则需要多条8位元指令。显然,这种代码在ARM架构上有更高的执行效率。

ARM架构在Flash/RAM尺寸较小时的两个主要缺点是代码空间效率和RAM使用的可预测性。首要也是最明显的问题是通用代码空间效率。8051核心使用1位元组、2位元组或3位元组指令,而ARM核心使用2位元组或4位元组指令。

通常情况下,8051指令更小,但这一优势因实际上花费许多时间而受到削弱,ARM核心比8051在一条指令下能做更多工作。32位元运算就是这样一个范例。以实践来说,指令宽度是能在8051上产生适度的更密集代码。

代码空间效率

在含有分散式存取变数的系统中,ARM架构的载入/储存架构通常比指令宽度更为重要。试想讯号量的实现,一个变数需要在代码周围的多个不同位置进行减量(分配)或者增量(释放)。ARM核心必须将变数载入到暂存器,对其进行操作并重新储存,这需要三条指令。另一方面,8051核心可以直接在记忆体位置上进行操作,且仅需一条指令。随着每次对变数完成工作量的增大,由载入/储存而产生的消耗就变得微不足道。但对于每次仅完成一点工作的情况来说,载入/储存能产生重要影响,让8051获得明显的效率优势。

尽管讯号量在嵌入式软体中并非常见结构,但简单的计数器和标志却广泛应用于控制导向的应用中并发挥相同的作用。许多常见的MCU代码都属于这一类型。

1 2 3

关键词: 8位 32位 微处理器

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版