使用可扩展的多核处理器满足嵌入式应用中不断提高的性能要求

Synopsys 高级产品营销经理 Michael Thompson

简介

随着处理从云扩展到互联网的边缘和端点,高端嵌入式应用发生了转变。 性能要求迅速提高并改变了处理器的架构以及它们在设计中的实现方式。这也是多核处理器越来越多被用于提供更高性能的原因。目前,大多数高端处理器都支持双核和四核配置。有一些最多支持八个 CPU 内核,但即使这样也不能提供存储、汽车、网络和 5G 等新兴应用所需的性能。下一代嵌入式应用需要获得可扩展支持,以实现更大的 CPU 群集和专用硬件加速器,这样才能提供必要的性能。大型多核处理器需要一种新的架构方法来实现更高的性能,并且不会给嵌入式设计人员带来额外的实现和时序收敛问题。

嵌入式性能挑战

高级工艺节点无法再像以前那样提供更高的时钟速度和更低的功耗,这已经不是什么秘密了。对于许多代流程,逻辑速度一直在提高,但是存储器访问时间却没有缩短(图 1)。处理器中的限速路径几乎都要通过存储器。因为半导体的物理特性存在非常实际的局限性,这种情况不太可能针对未来工艺节点作出改变。

图 1:嵌入式存储器性能差距

与此同时,嵌入式应用的最大时钟速度已经达到了 1GHz - 2GHz 的范围(图 2)。当然会有一些例外情况,时钟频率会高于 2 GHz,但是对于大多数应用来说,这是不可能的。在功耗和面积上均存在极限,而且都会随时钟速度的增加而迅速提高。大多数嵌入式设计的时钟频率都低于 1 GHz,这一点在未来不会改变。对于大多数嵌入式设计而言,通过提高时钟速度来提高性能并不现实。 

挑战在于嵌入式应用的性能要求不断提高。其原因在于竞争、新增功能以及应用领域的需求不断变化。例如,随着对更大容量和更高访问速度的需求出现,SSD 驱动器的尺寸在迅速增加。此外,还增加了计算存储和人工智能,旨在延长驱动器寿命、改善数据访问和性能。所有这些都对 SSD 控制器和用于实现它们的处理器的性能,提出了更高的要求。

图 2:嵌入式处理器速度高达 2 GHz

提高处理器性能

业界使用了许多方法来提高处理器性能。多年来,一直采用增加流水线级数量的方法来应对存储器速度的限制。例如,可以在 16 个 FFC 进程中以 1.8 GHz(最坏情况)为时钟频率,提供具有两个周期存储器访问权限的 DesignWare® ARC® HS 处理器 10 级流水线。嵌入式设计的时钟频率是有限的,因此在处理器的流水线中增加更多级带来的好处很有限。未来这种情况可能会改变,但目前 10 级流水线是嵌入式设计的最佳选择。 

就性能得利相对于增加的面积和功能而言,超标量实现是一个很好的折衷方法。从单发架构升级到双发架构,可以在面积和功率有限的情况下将 RISC 性能提高 40%。这对于嵌入式处理器而言是一个合理的折中方法。升级为三发或四发架构将进一步增加面积和功率,但性能降低的幅度较小。以任何代价提高性能从来都不是嵌入式处理器的目标。

添加无序 (OoO) 执行可以在不提高时钟速度的情况下提高嵌入式应用的性能。通常,支持完整 OoO 的 CPU 对于嵌入式来说是多余的,使用有限的方法可以在不增加处理器尺寸的情况下获得最佳性能提升。有限 OoO 通常用于高端嵌入式处理器。

缓存用于使存储器更接近处理器,从而提高性能。处理器具有单周期访问缓存的权限,而根据需要缓存的信息则是性能提高的原因所在。经常使用的代码和数据保存在 1 级缓存中。 较少使用的代码和数据保存在访问速度较慢的 2 级缓存或外部存储器中,可根据需要进行访问。 对于多核处理器,保持 1 级数据缓存之间的一致性也可以提高性能。1 级缓存和一致性在嵌入式处理器中很常见,而 2 级(和 3 级)缓存仅用于高端应用。 

嵌入式设计越来越多地使用多处理器。几年前,一个典型的片上系统 (SoC) 具有一个到两个处理器。如今,即便是低端设计,处理器数量也超过五个,而且还在不断增加。为此,用于中高端嵌入式应用的处理器提供了多核实现。目前的处理器支持两个、四个和八个 CPU 内核。使用 Linux 或其他操作系统,程序员能够顺利地跨 CPU 内核进行操作,同时平衡执行以提高性能。 

在嵌入式设计中,硬件加速器的使用越来越多。它们在卸载处理器的同时,还能以最小的功率和面积提供高性能。硬件加速器的主要缺点是不可编程。添加加速器与处理器一起工作可以缓解这种情况。只可惜,现有的处理器支持硬件加速器的能力有限,甚至根本不支持。有些处理器(例如 ARC 处理器)支持自定义指令,使用户能够将硬件添加到处理器流水线中。尽管自定义指令很有吸引力,但是硬件加速器还具有其他优点,与处理器结合使用,可以大大提高性能。 

提高嵌入式应用的处理器性能面临诸多挑战。处理器已经支持更深层次的流水线、超标量实现和 OoO 帮助,已止步于此,而且缓存和一致性已经实现丰硕的成果,难以再取得进一步的发展。嵌入式设计人员追求更高性能,其中一种途径是在设计中实现更多的 CPU 内核和硬件加速器。

下一代嵌入式处理器架构

下一代处理器将增加对大型多核实现和硬件加速的支持(图 3)。处理器供应商要做的绝不是仅在现有处理器中添加接口。支持四个或八个 CPU 内核的处理器已经达到频率上限,并且在时序收敛方面可能存在严重问题。添加更多的内核只会使情况变得更糟。下一代处理器必须从内部处理器互连的完全重新架构开始设计,以方便时序收敛、消除速度限制并增加内部带宽。还必须增加外部接口的带宽,以支持数据转移进出处理器。

图 3:下一代嵌入式处理器架构

服务质量 (QoS) 已在片上网络 (NOC) 中得到广泛实现,但在多核处理器中的实现受限。这种情况将在下一代处理器中发生改变,使程序员能够管理每个 CPU 内核和加速器的内部带宽,以最大限度地提高性能。这取决于应用,尽管并非每个设计都需要 QoS,但为了确保其他可预测的性能,QoS 在许多其他设计中也必不可少。

大型处理器集群的优势

大型多核处理器比小型多核处理器更有优势。与具有四个 CPU 内核的三个处理器群集相比,实现具有 12 个 CPU 内核的处理器将减少 CPU 内核之间的延迟,并为跨内核侦听提供直接支持。另一个优势是改善了软件扩展。12 CPU 的内核处理器为程序员提供了更大的灵活性,他们可以对软件进行分区,并且可以根据所需的性能,动态分配用于处理任务的内核数量。对于多处理器集群,由于 CPU 内核之间缺乏统一访问权限,因此很难实现这种级别的软件性能控制。

大型多核处理器还可以通过与硬件加速器的紧密耦合获得优势。在处理器内部移动硬件加速器接口,而不是通过 SoC 总线与之连接,将减少 SoC 总线上的延迟和流量,同时改善数据共享和系统性能。如果实现了共享用户寄存器,这样处理也可以提高对加速器可编程控制的效率。

ARC HS5x/HS6x

Synopsys 的下一代 DesignWare ARC HS5x 和 ARC HS6x 处理器 IP 利用了前文介绍的许多方法来提高处理器性能。它们采用高速 10 级双发流水线构建,可在不增加功耗和面积的情况下提高功能单元的利用率。 ARC 64 位 HS6x 处理器具有完整的 64 位流水线和寄存器文件,并支持 64 位虚拟和 52 位物理地址空间,以实现对当前和未来大型存储器的直接寻址,以及 128 位负载和存储,实现高效数据移动(图 4)。 

图 4:DesignWare ARC HS5x/HS6x 处理器 IP 框图

32 位 ARC HS5x 和 64 位 HS6x 处理器的多核版本均包含先进的高带宽内部处理器互连,旨在通过异步时钟和高达 800 GB/s 的内部总带宽来简化时序收敛。 新型 ARC HS 处理器的多核版本包括先进的互连结构,可连接最多 12 个 CPU 内核,并支持多达 16 个用户硬件加速器接口。为了帮助完成时序收敛,每个内核都可以驻留在自己的电源域中,并与其他内核具有异步时钟关系。 与所有 DesignWare ARC 处理器一样,HS5x 和 HS6x 处理器具有高度可配置性,并实现了 ARC 处理器扩展 (APEX) 技术,可以支持自定义指令,以满足嵌入式应用的独特性能、功耗和面积要求。

为了加快软件开发,ARC HS5x 和 HS6x 处理器加入了可生成高效代码的 ARC MetaWare 开发工具包。处理器的开源工具支持中有 Zephyr 实时操作系统、经过优化的 Linux 内核、GNU 编译器集合 (GCC)、GNU 调试器 (GDB) 以及关联的 GNU 编程实用程序 (binutils)。 

总结

嵌入式应用的性能要求将会不断提高。这些应用中使用的处理器性能也必须得到提高。但这些均面临挑战,因为面积和功率是有限的,而且容易实现的处理器性能优势现在均已实现。高级工艺节点不再像以前那样带来优势,嵌入式处理器的速度也受到限制。超标量和 OoO 功能在高端处理器中很常见,而 64 位的性能提升较为有限(尽管有必要)。下一代多核处理器,需要支持八个以上 CPU 内核和硬件加速器内部连接。DesignWare ARC HS5x 和 HS6x 处理器 IP 等新型处理器将提供可扩展的性能和功能,同时使设计人员能够应对其嵌入式应用的功率和面积要求。这些处理器建立在先进的架构上,并通过高速内部互连实现,可满足当今高端嵌入式应用的性能需求,同时还为将来的设计留有余地。