多核MCU可⽤于简化嵌⼊式设计
嵌⼊式系统设计⼈员⾯临着对更⾼性能和更快上市时间的不断增长的需求。需要经常实时地执⾏不断扩展的任务。同时,应⽤需要⾼吞吐量和⾼能效以及⼩外形和低成本。多核微控制器单元()提供了⼀种可⾏的新解决⽅案,利⽤设计以经济的价格提供多倍的性能提升。
⼏⼗年来,随着IC上数量的增加,芯⽚性能不断提⾼。采⽤⾼速缓存和流⽔线等技术的更复杂的架构允许芯⽚设计⼈员使⽤不断增加的硅密度来不断提⾼处理速度。这已不再是这种情况。芯⽚设计⼈员已经耗尽了替代架构的可能性。⽣产⼒的增长已经从跟上摩尔定律的速度下降到不到⼀半。当今提⾼⽣产⼒的唯⼀⽅法是通过使⽤多个来利⽤模块化。这导致了多核MCU的发展。
硬件:同构与异构
我们将多核MCU定义为具有两个或多个CPU的微处理器,这些CPU⼀致地共享⼀个公共存储器。在多核架构中,每个处理器都有⾃⼰的指令流作⽤于⾃⼰的数据流(MD)。
多核MCU可以归类为同构或异构。顾名思义,同类模块具有两个相同的CPU,可以并⾏或冗余地运⾏操作。()的Hercules系列产品专为安全应⽤⽽设计,拥有两个同步运⾏的 Cortex-R4F CPU。它们执⾏相同的操作,然后⽐较每个周期的结果,有效地建⽴⼀个“安全岛”,为设计⼈员提供可靠的基础,以在
医疗,⼯业和汽车应⽤中实施更复杂的操作。为了消除潜在的常见故障模式,设计团队将芯⽚组定向为彼此90°,并引⼊了处理器时序的延迟。该芯⽚可在⾼达200 MHz的频率下运⾏,并可运⾏32 MB的闪存。
对于具有特殊要求的应⽤ - 例如,计算密集型操作或⼤量信号处理 - 异构MCU可以提供更好的解决⽅案。异构MCU包含不同类型的处理器。它可能具有通⽤CPU以及数字信号处理器()和/或专⽤于浮点运算的处理器。例如,TI的Concerto异构多核MCU结合了C28x 32位CPU和ARM Cortex M3 32位CPU来优化⼦系统(图1)。 C28管理控制⼦系统,提供⾼达150 MHz的浮点运算。同时,ARM Cortex 处理通信,逻辑和排序/,速度⾼达100 MHz。 MCU在闪存和上都集成了错误检测功能,以及带有多个系统的内置时钟监控功能。
图1:异构多核MCU,如Concerto包含不同的内核,可为每项任务提供最佳解决⽅案。
真正的多核MCU需要的不仅仅是具有共享内存的多个内核。为了实现有效的并⾏处理,架构必须确保每个CPU都在最新的可能数据上运⾏。在双核MCU中,每个CPU都有⼀个专⽤的I(L1)⾼速缓存,但所有CPU共享⼀个2级(L2)⾼速缓存(图2)。挑战在于确保如果CPU1更新其L1缓存中的变量,CPU2将使⽤正确的信息,⽽不是其L1缓存先前从L2缓存中获取的旧数据。设计通常使⽤各种名称已知的硬件监视器来完成此操作,包括⼀致性模块或简单地说是窥探器。例如,当CPU 1将变量保存到
其L1⾼速缓存时,⼀致性模块注册该更改并使CPU2的L1⾼速缓存中的数据⽆效。当CPU2尝试访问该位置时,它⽆法并且必须转到L2缓存以获取新数据。
图2:来⾃飞思卡尔的QorIQ系列功能⼀个⼀致性模块,⽤于监控每个CPU的I级缓存的更改,以确保每个核⼼都运⾏最新的数据。
飞思卡尔半导体的QorIQ P2平台系列通信处理器基于双e500 Power Archicture内核,每个CPU具有双32 KB L1⾼速缓存,另外还有256 KB⼆级⾼速缓存。⽤户可以选择在两个内核之间对L2缓存进⾏分区,也可以将其配置为内存或SRAM。 P2020,名为
P2020COME-DS-PB-ND,使⼯程师能够熟悉飞思卡尔双核MCU的复杂性。 ⽹站还提供双核QorIQ产品的产品培训模块。
功能并⾏与数据并⾏
硬件只是⼀个开始。多核MCU的最⼤好处是程序员可以利⽤软件最⼤限度地提⾼⼯作效率的⽅式。有多种⽅法可以编程多核MCU。在对称多处理(SMP)中,也许是最常见的⽅法,所有CPU都可以访问公共内存空间并由单个操作系统运⾏。 CPU通过共享内存中的变量进⾏通信。任何CPU都可以运⾏任何进程,但通常在任何给定时间都不会在CPU之间共享进程。
⾮对称多处理(AMP)提供更多⾃由度。在AMP中,可以将特定CPU分配给某些进程以实现最佳性能。⾮对称体系结构甚⾄可以在不同的处理器上运⾏不同的操作系统,在核⼼处理和时间敏感操作上运⾏实时操作系统(),⽽通⽤核⼼在上运⾏。
嵌入式多线程编程多核MCU的主要优点之⼀是并⾏处理能⼒。并⾏处理可分为功能并⾏处理和数据并⾏处理。功能并⾏性涉及将任务分解为单个运算符。不同处理器执⾏不同功能。这是⼀种强⼤的技术,但不是多核⽅法中真正的肌⾁所在。
数据并⾏性提供了最⼤的性能提升。它涉及将数据划分为由不同核⼼处理的各个部分。这是⼀种功能强⼤的技术,但由于CPU通过共享内存进⾏通信,因此同步对于确保CPU以正确的顺序和正确的数据进⾏操作⾄关重要。
多线程或fork/join并⾏性提供了⼀种确保同步的⽅法。系统将处理划分为线程,在CPU之间拆分数据,每个CPU在其数据块上运⾏相同的代码。当线程完成其操作时,它们重新组合以产⽣结果。在完成所有线程之前,操作不会结束,因此这种⽅法可确保同步。
使⽤先进先出(FO)缓冲区提供了另⼀种同步⽅法。当CPU通过FIFO进⾏通信时,如果它是空的,它们只能写⼊它。数据强制执⾏优先级- 如果缓冲区已满,则进程后期的CPU⽆法写⼊。它必须轮流等待。
互斥(互斥)提供了更复杂的同步⽅法。通过硬件实现,互斥锁可确保在任何给定时间只有⼀个CPU拥有共享变量的所有权。当给定线程开始其操作时,它读取变量并设置锁定,这阻⽌其他线程访问信息。当操作结束时,线程释放锁定,以便其他⼈可以访问它。
特别是在并⾏处理⽅⾯,多核MCU为嵌⼊式设计提供了强⼤的解决⽅案。但是,它们必须经过精⼼设计和编程。线程越多,该过程就越具有挑战性。错误可能导致系统死锁,循环结束,甚⾄产⽣可能的结果,这些结果意外地依赖于⾸先完成哪个线程。
硬件设计有其⾃⾝的挑战。虽然解决⽅案功能强⼤,但重要的是要意识到它们不⼀定是给定应⽤程序的最佳解决⽅案。⽤户需要考虑处理器功能和带宽限制 - 与内核⼀样快,他们都将使⽤相同的通信总线,和其他资源。
总体⽽⾔,多核MCU为各种嵌⼊式设计挑战提供了有⽤的选择。存在⽤于简化嵌⼊式设计和编程的⼯具。通过访问它们并密切关注和验证,设计团队可以获得⾼性能和经济的价格点,并加快产品上市速度。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论