12.1. 计算机体系架构的三类并行技术

在计算机体系架构中,常见的性能提升手段可归纳为三类并行技术:指令级并行、数据级并行和任务级并行。

指令级并行的目标是在一个时钟周期内尽量完成更多机器指令。常见实现包括流水线、多发射和乱序执行。流水线把指令执行过程划分为多个阶段,使多条指令在同一周期分别处于不同阶段,通过时间上的重叠提高吞吐率。现代处理器通常采用多级流水线,龙芯处理器可达到12级流水。多发射则通过增加功能部件实现空间并行,例如配置4个加法器后,可同时处理4条加法指令。目前龙芯处理器采用四发射结构,一个周期最多可执行4条指令。乱序执行用于处理执行时间较长或条件暂不满足的指令:处理器会先执行条件已经具备且无冲突的后续指令,从而提高流水线利用率,发挥指令之间的可重叠性。

数据级并行是指用一条指令同时处理多个数据,也称单指令多数据流(Single Instruction Multiple Data,SIMD)。例如,一条指令可以完成4组或8组加法运算。向量指令是数据级并行的典型形式。当前主流体系架构大多提供专用向量指令;LoongArch 在基础指令集之外提供向量扩展(LSX)和高级向量扩展(LASX),对应向量位宽分别为128位和256位。

任务级并行主要包括线程级并行和进程级并行,通常依赖多核处理器实现。当单个核心的计算能力受限时,多核并行是提高系统吞吐量的重要途径。当前市场上的处理器普遍采用多核设计。龙芯5000系列处理器用于桌面计算机时通常为4核,用于服务器场景时可配置为8核或16核。在多核环境中,软件开发人员需要重点掌握同步机制,理解多个处理器核心如何正确、高效地协同访问共享数据。

这些并行技术虽然作用层次不同,但目标一致:尽可能提高处理器运行效率。下面将结合相关体系架构知识,介绍提升汇编程序执行效率的常用方法。