随着处理从云扩展到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处理器)支持自定义指令,这些指令使用户能够将硬件添加到处理器管道中。尽管自定义指令很有吸引力,但是硬件加速器还具有其他优点,当与处理器结合使用时,可以大大提高性能。