控制/MCU
微控制器(MCU)正在变得越来越复杂,越来越强大,因而越来越有用。但是这些进步都是都代价的。
开发带高级电源管理功能的多核MCU硬件并不太难,由于存储器的限制,开发出适合多核MCU的软件则难得多。CPU系统可以用SRAM片上存储器,或者外部的DRAM。不过对MCU系统而言,所有的存储器都在片上。所以CPU系统可以跑大型的Linux或Windows操作系统,MCU则只能跑相对简单的实时操作系统。
“以视频市场为例,你可以开发基于MCU的应用,也可以开发基于CPU的应用,甚至可以开发两种系统都能跑的应用,”Cadence IP事业部CTO Chris Rowen说,“使用MCU的视频分辨率更低,不论是CPU方案还是MCU方案,多样化的视频接口都会让设计变得复杂。用CPU系统开发要求相对没那么严,例如你可以把整个缓冲区(buffer)写满,在MCU就不太可能这么干。用MCU开发,数据的交换更需要技巧,所以产生故障(bug)的可能性也增加了。”
更难的是利用MCU来分担CPU的负担,例如作为协处理器去加速某种计算,或者作为低功耗应用时的备用处理器。
“考验MCU的程序员的问题是如何满足处理速度的要求,” Rowen说,“自动车库门开启或者关闭花费几百毫秒都可以接受,但要满足高速数据流的处理需求,则须采用并行处理。所以当把MCU设计成另一个次级计算引擎(sub-engine)时,你需要处理器有能力进行数据计算,这就要求编程风格非常严谨。在高速数据处理场景下使用MCU,非常非常难。”
虽然有诸多困扰,MCU的应用场景不断拓展,使用方法也屡屡突破常规,如今在复杂的系统及芯片(SoC)中内建MCU已经很常见。在SoC这种复杂应用场景中,MCU的功能一般都只做特定的任务,例如唤醒CPU,但无论从设计、验证还是一致性的角度来看,在SoC中让多个MCU协同工作都非常难。
“在同一颗SoC中集成Cortex A(CPU)与Cortex M(MCU)的趋势呈现加速状态,”Mentor Graphics嵌入式产品高级产品线经理Andrew Caples说,“以高级驾驶辅助系统(ADAS)这个嵌入式应用最精华的代表为例,可以用多个处理单元--微控制器(MCU)、微处理器(MPU)、数字信号处理器(DSP)--来实现ADAS,SoC意味着更低的故障率、更低的成本以及更低的散热需求,但增加了软件设计的复杂性。开发人员要在SoC集成的MCU、MPU与DSP上开发多个实时操作系统,并在这一颗芯片上开发和调试。这就需要开发人员的方案能够适应不同的平台(MCU、MPU、DSP),这给半导体公司增加了很多压力,为了帮助客户真正利用起SoC中的所有器件,它们需要提供给开发者足够的库文件和解决方案参考。”
Caples表示只要多核SoC的应用有操作系统,就一定会遇到一堆同步问题,因为不同核之间靠等待来协同工作。“我们正在为这个领域的应用开发工具,”他说,“对于硬件工程师来说,过去这些年摩尔定律一直很有效,硬件的性能在提升,成本在下降。但是软件开发却是另外一回事,随着系统复杂度越来越高,软件开发的成本不断攀升,而且现在看不到任何可以改善的迹象。”
欢迎来到MCU时代
虽然存在上述挑战,但随着物联网的发展,物与物之间的通信越来越多,因此开发人员希望MCU在复杂系统中发挥越来越重要的的作用。相比CPU,MCU的功耗更低,价格也更便宜。一方面,8位MCU在一些简单任务处理中仍然不可或缺;另一方面,32位甚至64位多核MCU已能应对很多复杂应用。所有这些MCU都可以与CPU或GPU集成在同一颗SoC里面,这样CPU或GPU可以在多数时间里面处于休眠状态。
“MCU越来越复杂,”ARM建模技术总监 Bill Neifert说,“引入32位微控制器以后,人们开始问可以用这些MCU做什么。”
MCU当然不只用在汽车的安全领域,从工业设备到智能拖鞋这种消费类产品都可以用到MCU。以监控人是否滑倒的智能拖鞋为例,低成本、低功耗的嵌入式处理器(MCU)就非常适合,因为其可以为某种应用定制。
“每个人都想要最有效的解决方案,定制化的MCU在成本和功耗上都优于通用产品,”Neifert说,“特别是物联网设备,很多都是电池供电,因此对与功耗非常敏感。用户希望能找到专用产品帮助他们快速开发,尤其是消费电子领域的客户。定制化MCU也需要建模,但复杂度比CPU或GPU低多了。”
复杂度是相对的。“我们打算用64位的MCU开发真正智能的设备,”Vista Ventures 经营合伙人 Jim Hogan说,“但这些MCU的代码堆栈相当有限。”
在这种趋势下,MCU也开始介入到计算当中--特别是物联网的应用。“不是传统的计算,” ARM 物联网市场副总裁Zach Shelby说,“在MEMS应用中,利用32位和64位MCU来计算已经很常见。关键在于我们如何将软件设计成大量重复任务的类型。FPGA不适合低功耗应用,如果在一颗混合芯片芯片上实现视频检测算法,就必须用到微控制器,不过MCU还是用来完成不断重复的任务。”
MCU的片上存储容量较少,常常为MCU与CPU或者其他MCU协调工作带来麻烦。特别是在视频流媒体处理与图像识别应用方面,越来越多的数据处理是系统设计需要解决的大问题。从系统上层来看,有两种方法可以解决这一问题,第一种方法是采用更快的处理器更多的存储容量,第二种方法是采用更多的处理器以提高处理效率。虽然每个处理单元的速度比较慢,但多个处理单元合作可以将数据处理任务在限定时间内完成, 当处理任务繁忙时,这些MCU也可以进入空闲状态。
“人们需要这种灵活性,因为你会有很多的异质应用(heterogeneous application)要处理,你又不愿意采用同质模型(homogenous model,CPU或者GPU这种所擅长的计算方式)来实现,”NetSpeed Systems CEO与联合创始人Sundari Mitra说,“微控制器的优点是其有一套可编程的微代码引擎(microcode engine),用户可以根据应用环境选择合适的架构,因此比处理器硬核灵活性更高。微处理器可以给用户一些灵活性--虽然不太多,但毕竟多了些灵活性。这让用户在架构方面具备了更多的灵活性。CPU在浮点计算方面更具优势,GPU在视频处理方面更具优势,MCU则处于两者之间。MCU可用于可穿戴等物联网终端设备,也可用于汽车引擎的控制。MCU的架构要有足够的灵活性和自适性,以适应不同的应用。如果开发人员清楚应用的工作流程,并对此进行相应的优化,使用MCU能为你的计算引擎带来一些多样性。 定义MCU
通常来说,MCU是CPU与GPU的瘦身版,计算能力相对弱,跑的时钟速度也比较低。在存储架构上MCU与CPU和GPU的区别更明显,特别是8位与16位MCU,通常只有片上存储。因为成本低、功耗更低,所以很受欢迎。但高级的32位MCU与低端CPU的区别已经不明显,64位多核MCU的出现更让人困惑。
“从大的方面来说,根据工作负荷的不同,CPU通常会为单线程或多线程性能优化,”Mitra说,“如果考虑实时性的要求--物联网中有很多实时性应用--系统需要做出实时响应,CPU通常不会对实时性任务进行优化。假设有这样一个应用场景,CPU需要监测周围环境状况,当环境发生变化时做出相应的决策,这时不大可能用CPU来反复的检测某一点,这就是MCU的用武之地。那么使用MCU到底有什么不同呢?CPU与GPU都很容易理解,但MCU不是这样。应用MCU要面临可用信息更少、设计参数常常变更的状况,所以开发人员要适应。”
同样,由于MCU应用的多样性,很难清楚的定义MCU的市场,也不容易用统一标准来预测MCU市场的走势。在2016年5月份的报告中,Brisk Insights预测,到2022年MCU市场将保持15.8%的年复合增长率,Brisk Insights认为在物联网应用的推动下,32位MCU将是增长最快的市场。Databeans的数据则比Brisk Insights保守很多,其预测年复合增长率为6%,MCU市场最大的推手是工业需求。
Gartner则给出了MCU 领域的排名前列的厂商,它们是瑞萨、恩智浦(NXP)、意法半导体、Microchip、德州仪器和英飞凌。
但MCU不断出现在新的应用场景中,这使得MCU的市场越来碎片化,以致难以追踪。
“每种非常复杂的芯片,几乎都包含了MCU,” Arteris 市场副总裁Kurt Shuler说道,“在汽车里面,到处可以见到独立工作的MCU,大型芯片往往也有MCU在后台运行,MCU在无线数字基带应用中也很广泛。”
使用MCU的设备通常将程序优化以提高电源效率,现在开发人员仍在通过延长唤醒时间等方式来进一步降低功耗。开发人员所面临的挑战更多不是来自于MCU硬件能力方面,而在于如何在系统中更高的发挥这些硬件能力。
结论
MCU产业正在大步前进,虽然MCU的定义在改变,但方向是明确的。在未来几年,物联网的大发展将使很多终端设备将接到网络,甚至直接与其他的处理器进行通信,MCU将在这些设备中大放异彩。
MCU的潜力到底有多大,仍有很多值得讨论的空间。Mentor的Caples表示,将MCU中的某些功能应用起来,可能需要一名软件工程师一年的时间。“没有人有时间这样做。”至少现在没有人这样尝试。
全部0条评论
快来发表一下你的评论吧 !