基于MATLAB与FPGA的图像处理教程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1.2 CPU流水线加速

1.1.2.1 采用更先进的工艺

图1.6所示为半导体工艺的演进。从19世纪90年代到现在,半导体工艺经历了从0.5μm~3nm甚至2nm的演进,更先进的工艺使我们的电路可以在更高的频率下工作,尽管也需要更高的流片成本。典型的以28nm工艺为例,A53可以运行到1.5GHz,而在16nm工艺下,A53可以运行到2.3GHz的主频(以上数据仅供参考,跟具体优化有关)。

图1.6 半导体工艺的演进

当晶体管小到一定程度,工艺的提升难度就越来越大,摩尔定律也将终结,因此一味地想通过工艺的升级来提升主频,将会变得越来越困难。除了采用更先进的工艺,我们还可以通过先进的封装技术,或者系统架构的优化来提升性能。

1.1.2.2 标量流水线处理器

用更细的计算颗粒可以提高处理器的主频,从而提高流水线的处理速率。当然也可以换个思路,采用空间换时间的设计方式,来达到大力出奇迹的效果,即我们拥有多个流水线,在主频不变的情况下,可以同时对数据流进行处理,进而成倍地提高处理速率,这就是标量流水线处理器,其指令流,如图1.7所示。

图1.7 标量流水线处理器 指令流

图1.7所示的每条流水线仍需5个周期执行完1条指令,但上下两条流水线可以重叠执行,用9个周期可以执行完5条指令。即当流水线满载时,每个周期都可以完成1条指令,相对于单流水线处理器,标量流水线处理器提高了5倍的工作效率,但也付出了面积增加的代价,这就是FPGA中常用的面积换取速度的设计思维。

1.1.2.3 超级流水线处理器

在流水线中,工作的时钟频率受流水线中计算最耗时的操作的影响,即主频需要满足各阶段的setup/hold time。如果我们将流水线操作中的每步计算拆分为更细的颗粒度,那么更容易满足各阶段的setup/hold time,因而电路可以运行在更高的频率下,即超级流水线处理器或深流水线处理器。

图1.8所示为细分后的5级超级流水线处理器 指令流。典型的以ARM的顺序处理器Cortex A53、A55为例,最多能够细分到8级流水线。流水线级数越多,能运行的频率越高,因此能达到的计算性能越高。

图1.8 细分后的5级超级流水线处理器 指令流

1.1.2.4 超流水线-超标量处理器的指令流处理器

结合超级流水线处理器,以及标量流水线处理器的特性,也自然有了超流水线-超标量处理器,其指令流,如图1.9所示。

图1.9 超流水线-超标量处理器 指令流

超流水线-超标量处理器采用了多条流水线的结构,增加了并行计算的总流量;同时通过增加流水线每一阶段的颗粒度,提高了运行的主频。当然,相对于超级流水线处理器和标量流水线处理器,超流水线-超标量处理器也付出了面积增加的代价。目前市场上几乎所有处理器都是超流水线-超标量处理器。

1.1.2.5 采用多核CPU结构

当采用确定的工艺和一定的超级标量流水线处理器时,单核CPU的性能很难再实现质的飞跃。在这种情况下,仍然可以采用面积换取速度的设计方法,使用多核处理器结构成倍地提升CPU的处理性能。

本节以ARM Cortex-A53/A75多核处理器结构为例,如图1.10所示。采用多核处理器结构进行SOC设计,不仅需要考虑CPU之间的cache一致性,而且多线程处理也对软件提出了更高的要求。

图1.10 ARM Cortex-A53/A75多核处理器结构