“MCU 对应用主导地位的挑战已经开始。具有片上固定功能处理子系统的现场可编程逻辑器件 (FPGA),也就是片上系统 (SoC) FPGA,最近已成为高端处理应用的潜在竞争者。这就提出了一个问题:随着应用性能要求的不断提高,SoC FPGA 会成为更广泛应用中的挑战者,还是 MCU 会发展以更好地与 SoC FPGA 竞争?如果您正在考虑一种新设计,那么今天哪种方法最适合您——MCU 还是 SoC FPGA?
”
作者:Warren Miller
MCU 对应用主导地位的挑战已经开始。具有片上固定功能处理子系统的现场可编程逻辑器件 (FPGA),也就是片上系统 (SoC) FPGA,最近已成为高端处理应用的潜在竞争者。这就提出了一个问题:随着应用性能要求的不断提高,SoC FPGA 会成为更广泛应用中的挑战者,还是 MCU 会发展以更好地与 SoC FPGA 竞争?如果您正在考虑一种新设计,那么今天哪种方法最适合您——MCU 还是 SoC FPGA?
本文将快速回顾 SoC FPGA 与 MCU 相比的一些主要优势和劣势。它还将探讨 MCU 中的一些最新创新,这些创新使它们更加灵活并且能够更好地应对 SoC FPGA 提供的一些关键优势。有了这些信息,您将能够在下一个设计中更好地在 MCU 和 SoC FPGA 之间进行选择。
SoC FPGA 将新的灵活性与熟悉的处理系统相结合
SoC FPGA 结合了两个世界的优点。首先,SoC FPGA 提供了一个熟悉的处理系统——CPU——来执行熟悉的顺序处理算法。事实上,许多 SoC FPGA 已经融合在普遍的 ARM 处理器架构上,以形成其“固定功能”处理子系统的基础。这利用了广泛的 ARM 兼容工具、知识产权内核 (IP 内核) 和支持技术的生态系统,使开发成为一个非常熟悉的过程。
SoC FPGA 还为顺序处理提供了一种灵活的可编程替代方案。可编程结构几乎可以实现您需要的任何硬件功能,以增强处理子系统中的顺序处理能力。可编程结构本质上是并行的,因为多个硬件模块可以同时运行,或者并行运行,其中逻辑是重复的,或者以流水线方式运行,其中算法被分成多个阶段,以便处理重叠。与顺序方法相比,这些方法中的任何一种都会产生巨大的吞吐量增益。
当算法的一部分需要高性能时,SoC FPGA 特别有用,该算法可以使用并行或流水线(或组合)技术在硬件中实现。让我们看一个示例设备,以更好地了解这将如何在实际系统中工作。
Xilinx Zynq -7000SoC FPGA 框图如下图 1 所示。该图的顶部显示了片上包含的所有固定功能块。这些模块实现了完整的双核 ARM 处理器应用处理单元以及大量支持互连总线、外设、存储器和片外接口。可编程逻辑部分显示在图表的最底部,可通过各种系统级接口访问。该组织对 SoC FPGA 的可编程逻辑方面进行了新的改进,因为即使没有可编程逻辑,固定功能元件也可以全部工作。这意味着处理器系统可以“启动”然后配置可编程逻辑。以前,非面向 SoC 的方法需要首先配置可编程逻辑,然后处理器才能启动。
图 1:Xilinx Zynq SoC FPGA 框图。(由赛灵思提供)
事实上,代码开发人员可以将 SoC 中的可编程逻辑视为一种硬件资源,用于加速在处理器上实现时速度太慢的代码部分。一名设计团队成员可能将他们的活动集中在创建程序员要求的硬件加速上,或者程序员可能能够自己实现硬件。无论哪种方式,算法都成为开发的重点,具有多种可用的实现选项。
当有多个面向性能的算法同时运行时,SoC 方法似乎效果最好。SoC FPGA 取得重大成功的一个应用领域是复杂的图像处理。这些算法通常可以流水线化和/或并行化,使其成为 FPGA 加速的良好候选者。如果处理器还需要处理片上和片外的高带宽流量(可能使用高速串行接口和大型片外缓冲存储器),那么从处理器卸载低级任务的额外硬件支持也可能会带来回报大红利。
对 SoC FPGA 的多核响应
还有其他方法可以为图像处理等应用程序实现并行和流水线实现。MCU 供应商采用的一种方法是在片上实现多个处理引擎(多核),以允许设计人员分解复杂的算法。当每个处理器的体系结构相同时,可以很容易地采用复杂的算法并将其分解为多个片段,每个片段在不同但功能相同的处理器上执行。
例如,德州仪器(TI)提供TMS320C66x多核定点和浮点数字信号处理器(DSP),该处理器具有八个 DSP 处理器以及一个网络协处理器和一个多核导航器,以使用硬件队列简化数据传输(图 2 )。DSP 内核为音频、视频、分析、工业自动化和媒体处理等各种复杂算法提供非常高的处理能力。
图 2:德州仪器多核 DSP 框图。(德州仪器提供)
多核架构的代码开发有点类似于使用 SoC FPGA 时的代码开发,只是硬件加速是由 DSP 内核而不是可编程结构完成的。当一个核心无法足够快地实现算法时,只需让另一个核心来处理它。继续这样做,直到您用完内核或达到您的性能目标。可能需要调整和优化以获得最后一点的功率/性能效率,但一些更高级的工具可以通过提供有助于优化过程的性能和功率配置文件来提供帮助。
双核MCU
多核方法不必仅用于最高性能的应用程序。通常,SoC FPGA 可以在需要优化功率和处理能力的性能限制较少的应用中找到。由于可编程结构可用于实现部分算法,因此实现所需的总功率可能大大低于高端 DSP 或多核解决方案。
MCU 制造商也发现了这一趋势,并通过将双核处理器在单个设备上工作来做出回应。在某些情况下,同时使用高性能处理器和低性能处理器。这允许高性能处理器实现算法中更复杂的部分,而性能较低的处理器则可以处理不太复杂的管理任务。与高性能内核相比,性能较低的处理器可以在大部分时间处于活动状态,使用更少的功率。(请注意,多核系统可以使用类似的方法,只使用动态达到目标性能水平所需的内核。这实现起来有点复杂,但如果算法需要,最终会非常有效各种性能水平在短时间内变化很大。)
NXP Semiconductors LPC4350是同时利用高性能和低性能处理器的双核 MCU 的一个示例。如图 3 所示,其下方有一个 ARM Cortex-M4 和一个 Cortex-M0。M4 用于高性能任务,而 M0 可用于常用管理功能。事实上,M4 子部分甚至可以在不需要时断电,并在处理请求需要时通电。这种方法适用于只需要定期但需要快速响应处理数据的算法。例如,安全摄像机上的图像处理在图像变化时可能非常繁重,但在图像静止时则不需要。
图 3:NXP 双核 MCU 框图。(恩智浦提供)
即使是低端也是可编程的
不要以为只有高端和中端 MCU 才会增加新的花样以提高灵活性。甚至低端 MCU 也在增加可编程功能,这可能不是作为对 SoC FPGA 的回应,而是作为一种将少量外部逻辑“片上”的方式,就像可编程逻辑设备几十年来一直在做的那样。Microchip PIC10F320 _添加了可编程逻辑,位于可配置逻辑单元 (CLC) 块中。图 4 显示了 PIC10F320 的框图以及 CLC 的更详细视图。CLC 可以基于器件输入、内部时钟、内部外设和寄存器位实现各种简单的逻辑功能。CLC 甚至可以在低功耗模式下运行,使其成为唤醒事件的便捷来源,从而在不需要 MCU 进行处理时最大程度地节省功耗。
图 4:具有可编程逻辑框图的 Microchip MCU。(由微芯片提供)
CLC 在 PIC10F320 上特别有用,因为它只有几个引脚。充分利用这些引脚并消除一些外部逻辑可以对电路板空间要求产生很大影响。即使在 PAL 和 CPLD 的早期阶段,可编程逻辑的一大优势也是如此。现在随着低端 MCU 将可编程逻辑放在芯片上,也许我们会在 MCU 旁边看到更少的低端 PLD。这不就是一个新的转折吗!
总之,MCU 和 SoC FPGA 解决了类似的应用问题,并开始争夺应用主导地位。目前,挑战主要出现在应用领域的高端,但最近的创新可能会扩大 MCU 和可编程设备之间的应用重叠。
分享到:
猜你喜欢