使用可扩展的多核处理器满足嵌入式应用程序中不断提高的性能要求
随着处理从云扩展到Internet的边缘和端点,高端嵌入式应用程序正在发生一种转变。性能要求迅速提高,并且改变了处理器的体系结构以及如何在设计中实现它们。这是增加使用多核处理器以提供更高性能的原因。当今大多数高端处理器都可支持双核和四核配置。有少数支持多达8个CPU内核,但即使这样也无法提供存储,汽车,网络和5G新兴应用所需的性能。下一代嵌入式应用程序需要对更大的CPU群集和专用硬件加速器的可扩展支持,以提供所需的性能。
嵌入式性能挑战
先进的过程节点不再像以前那样提供更高的时钟速度和更低的功耗,这已不是秘密。对于许多流程代来说,逻辑速度一直在提高,但是内存访问时间却没有。处理器中的限速路径几乎总是通过内存。由于半导体物理的真正局限性,这种情况对于将来的工艺节点不太可能改变。
同时,嵌入式应用中的最大时钟速度达到了1GHz至2GHz的范围。可以肯定的是,有一些例外情况的时钟频率高于2 GHz,但是对于大多数应用来说,这是不可能的。功耗和面积都有限制,并且两者都随着时钟速度而迅速增加。大多数嵌入式设计的时钟频率都低于1 GHz,随着我们向未来迈进,这一点不会改变。对于大多数嵌入式设计而言,通过提高时钟速度来提高性能并不是现实的方法。
这里的挑战是嵌入式应用程序的性能要求不断提高。这是由竞争,新功能的添加以及应用程序空间要求的变化所驱动的。例如,随着对更大容量和更高访问速度的需求,SSD驱动器的大小正在迅速增加。此外,还增加了计算存储和人工智能,以延长驱动器寿命并改善数据访问和性能。所有这些都提高了对SSD控制器和用于实现它们的处理器的性能要求。
提高处理器性能
已经使用了许多方法来提高处理器性能。多年来,增加流水线级的数量已被用来应对内存速度的限制。例如,可以在16个FFC进程中以1.8 GHz(最坏的情况)提供时钟,具有两个周期存储器访问权限的DesignWare®ARC®HS处理器10级流水线。时钟对嵌入式设计的运行速度有限制,因此在处理器的流水线中添加更多级将带来有限的收益。将来这可能会改变,但是目前对于嵌入式设计而言,十级流水线是最佳选择。
就性能增益与增加的面积和功耗而言,超标量实现是一个不错的权衡。从单发架构过渡到双发架构,可以在面积和功耗有限的情况下将RISC性能提高40%。对于嵌入式处理器来说,这是一个很好的权衡。转向三发或四发将进一步增加面积和功率,但性能降低的幅度较小。不惜一切代价实现性能从来都不是嵌入式处理器的目标。
添加乱序(OoO)执行可以在不提高时钟速度的情况下提高嵌入式应用程序的性能。通常,支持完整OoO的CPU对于嵌入式来说是过高的,有限的方法将在不增加处理器尺寸的情况下提供最佳性能。受限的OoO通常用于高端嵌入式处理器。
缓存用于使内存更接近处理器,从而提高性能。缓存具有对处理器的单周期访问,而性能的提高是信息在需要时被缓存的结果。通常将使用的代码和数据保存在1级缓存中。较少使用的代码和数据保存在访问速度较慢的2级缓存或外部存储器中,并根据需要进行访问。对于多核处理器,维护L1数据缓存之间的一致性也可以提高性能。L1缓存和一致性在嵌入式处理器中很常见,而L2缓存(和3级)仅用于高端应用程序。
嵌入式设计越来越多地使用多个处理器。几年前,典型的片上系统(SoC)具有一到两个处理器。如今,即使对于低端设计,也有超过五个处理器很常见,并且数量还在不断增加。为此,用于中高端嵌入式应用程序的处理器提供了多核实现。支持两个,四个和八个CPU内核的处理器可用。使用Linux或其他操作系统,可使程序员在CPU内核之间实现平稳运行,同时平衡执行以提高性能。
在嵌入式设计中,硬件加速器的使用正在增加。它们在卸载处理器的同时以最小的功率和面积提供了高性能。硬件加速器的主要缺点是它们不是可编程的。添加加速器以与处理器配合使用可以减轻这种情况。不幸的是,现有的处理器支持硬件加速器的能力有限或没有。某些处理器(例如ARC处理器)支持自定义指令,这些指令使用户能够将硬件添加到处理器管道中。尽管自定义指令很有吸引力,但是硬件加速器还具有其他优点,当与处理器结合使用时,可以大大提高性能。