现在,我们来说基本情景。假设有基于ARM和基于8051的MCU各一个,配有所需的外设,那么对于较大的系统或需要重点考虑易用性的应用来说,ARM设备是更好的选择。如果首要考虑的是低成本/小尺寸,那么8051设备将是更好的选择。下面我们对于每种架构更擅长的应用进行更详细的分析,同时也划分出一般原则。
(1) 延时
两种架构的中断和函式呼叫延时存在很大差异,8051比ARM Cortex-M内核更快。此外,高级外设汇流排(APB)配备的外设也会影响延时,这是因为资料必须通过APB和AMBA高性能汇流排(AHB)传输。最后,当使用高频内核时钟时,许多基于Cortex-M的MCU需要分配APB时钟,这也增加了外设延时。
我做了1个简单的实验,实验中的中断是通过I/O引脚触发的。该中断对引脚发出一些信号,并根据引发中断的引脚更新标志。然后我测量了一些参数显示了32位的实现。
简单说明这个实验结果,8051内核在中断服务程式(ISR)进入和退出时显示出优势。但是,随着中断服务程式(ISR)越来越大和执行时间的增加,这些延迟将变得微不足道。和已有原则一致,系统越大,8051的优势越小。此外,如果中断服务程式(ISR)涉及到大量资料移转或大于8位的整数资料运算,中断服务程式(ISR)执行时间的优势将转向ARM内核。例如,一个采用新样本更新16位或32位移动平均的ADC ISR可能在ARM设备上执行得更快。
(2) 控制vs处理
8051内核的基本功能是控制代码,其中对于变数的访问是分散的,并且使用了许多控制逻辑(if、case等)。8051内核在处理8位资料时也是非常有效的,而ARM Cortex-M内核擅长资料处理和32位运算。此外,32位资料通道使得ARM MCU复制大包的资料更加有效,因为它每次可以移动4个位组,而8051每次仅能够移动1个位组。因此,那些主要把资料从一个地方移动到另一个地方(例如UART到CRC或者到USB)的流资料处理的应用更适合选择基于ARM处理器的系统。
这并不意味着有大量资料移动或32位运算的应用不应该选择8051内核完成。在许多情况下,其他方面的考虑将超过ARM内核的效率优势,或者说这种优势是不相关的。考虑使用UART到SPI桥接器,该应用花费大部分时间在外设之间复制资料,而ARM内核会更高效地完成该任务。
然而,这也是一个非常小的应用,可能小到足以放入一个仅有2 KB存储容量的器件就足够合适。尽管8051内核效率较低,但它仍然有足够的处理能力去处理该应用中的高资料速率。对于ARM设备来说,可用的额外周期可能处于空闲回圈或「WFI」(等待中断),等待下一个可用的资料片到来。在这种情况下,8051内核仍然最有意义,因为额外的CPU周期是微不足道的,而较小的Flash封装会节约成本。如果我们要利用额外的周期去做些有意义的工作,那么额外的效率将是至关重要的,且效率越高可能越有利于ARM内核。这个例子说明,清楚被开发系统所关注的环境中的各种架构优势是何等重要。做出这个最佳的决定是简单但却重要的一步。
(3) 指针
8051设备没有像ARM设备那样的统一的存储映射,而是对存取码(Flash)、IDATA(内部RAM)和XDATA(外部RAM)有不同的指令。为了生成高效的代码,8051代码的指标会说明它指向什么空间。然而,在某些情况下,使用通用指标可以指向任何空间,但是这种类型的指标是低效的访问。例如,将指标指向缓冲区并将该缓冲区资料输出到UART的函数。如果指标是XDATA指标,那么XDATA阵列能被发送到UART,但在代码空间中的阵列首先需要被复制到XDATA。通用指标能同时指向代码和XDATA空间,但速度较慢,并且需要更多的代码来访问。
专用区域指标在大多情况下能发挥作用,但是通用指标在编写使用情况未知的可重用代码时非常灵活。如果这种情况在应用中很常见,那么8051就失去了其效率优势。
(4) 通过选择完成工作
我已经注意到多次,运算倾向于选择ARM,而控制倾向于选择8051,但没有应用仅仅着眼于计算或控制。我们怎样才能表征广义上的应用,并计算出它的合适范围呢?让我们考虑一个由10%的32位计算、25%的控制代码和65%的一般代码构成的假定的应用,它不能明确地归于8位或32位类别。
这个应用也更注重代码空间而不是执行速度,因为它并不需要所有可用MIPS,并且必须为成本进行优化。成本比应用速度更为重要的事实在一般代码情形下将给8051内核带来微弱优势。此外,8051内核在控制代码中有中间等级的优势。ARM内核在32位计算上占上风,但是这并非是很多应用所考虑的。考虑到所有这些因素,这个特殊的应用选择8051内核更加合适。
如果进行细微的改变,假设该应用更关心执行速度而非成本,那么通用代码不会倾向于哪种架构,并且ARM内核在计算代码中全面占优势。在这种情况下,虽然有比计算更多的控制代码,但是总的结果将相当均衡。显然,在这个过程中有很多的评估,但是分解应用,然后评估每一元件的技术将?明并确保我们了解在哪种情况下哪种架构有更显著的优势。