AI处理器需要处理大量的并行数据,这对其并行度要求极高。处理器提升并行度的方式有多种,较为常见的策略有提升指令级别的并行度(Instruction Level Parallelism, ILP)、提升数据级别的并行度(Data Level Parallelism, DLP)以及提升线程级别的并行度(Thread Level Parallelism, TLP)。
提升指令级别的并行度是指提升每个时钟周期能够执行的指令数量,超长指令字(Very Long InstructionWord,VLIW)技术和超标量(Superscalar)技术是两种典型的提升指令级别并行度的技术。提升数据级别的并行度是指提升每个时钟周期能够处理的数据数量,单指令多数据(SIMD)是一种典型的提升数据级别的并行度的技术,单指令多线程(Single Instruction Multiple Thread,SIMT)是一种典型的提升线程级的并行度的技术。下面我们就以VLIW+SIMD架构设计为例,介绍一下典型的AI处理器硬件架构实现方案。
VLIW+SIMD架构设计
VLIW架构是一种典型的利用指令级并行机制的处理器架构,其核心思想是在每个时钟周期,并行发射多条指令到不同的执行单元中并行执行。同一时钟周期发射的这些指令组成了指令包(Instruction Package),指令包中的指令之间不能有依赖关系。VLIW架构中的并行执行指令不需要硬件动态调度,完全依靠编译器层面的指令调度。
图1.VLIW架构示例
图1是一个VLIW架构处理器示意图,VLIW指令存于指令缓存(VLIW Instruction Cache),VLIW指令的提取(Fetch)以指令包为单位,指令包的典型宽度有64bit、128bit和256bit,可以看到,由于指令包宽度较宽,同时编译器进行指令打包过程中,不一定能找到合适的指令填满整个指令包,指令包中可能会存在大量的空指令(No Operation,NOP),这使得VLIW架构的指令密度较低,于是VLIW架构的指令缓存容量一般需要设置得比较大。
指令完成提取后,送入VLIW译码单元中进行指令译码,指令译码对指令包中所有指令进行类型判断,将指令送入对应的执行单元中。指令包可以分为多个指令槽位(Slot),每个指令槽位存放一条指令。图1所示的指令包中包含5个指令槽位,其中Slot0为标量指令,送往标量流水线(Scalar Pipeline);Slot1为Vector Load指令,Slot2为Vector Store指令,它们被送往向量访存单元(Vector Load Store Unit,VLSU)中完成向量数据的加载和存储;Slot3为向量执行指令,送往向量流水线(Vector Pipeline);Slot4为矩阵运算指令,送往矩阵流水线(Matrix Pipeline)。
需要注意的是,每个Slot所对应的指令类型不是完全固定不变的,比如在向量运算密集的代码中,指令包中可能会有两个Slot存放Vector Load指令,一个Slot存放Vector Store指令,一个Slot存放向量运算类指令,最后一个Slot存放其他指令;在标量运算密集的代码中,可以有多个Slot存放标量指令。通过这种灵活的指令打包方式,一定程度上可以提升指令打包效率。
VLIW架构设计的核心在于指令级并行,随着指令包中槽位的增加,编译器进行指令调度的复杂度也随之增加:当指令包中只有两个槽位时,编译器还是比较容易将指令包填满的,当指令包中有更多槽位时,编译器很难在局部范围内找到多条无关指令,加之这些槽位对可存放的指令有所限制,编译器的调度难度更高了,这种情况下,指令包中可能会插入多条NOP指令。另外随着指令包中槽位的增加,指令缓存的容量也需要随之增大,并且也要增加硬件中的执行单元数量,这增加了硬件面积开销。因此指令包中的指令槽位不能过多,通常为3~6个。
当指令级别的并行度提升遇到瓶颈时,可以提升数据级别的并行度。SIMD是一种提升数据级别并行的技术,在一条指令的驱动下,多个通道对不同输入数据进行相同的指令操作,SISD(Single Instruction Single Datastream,单指令单数据流)和SIMD的对比如图2所示,在采用SISD设计的处理器中,一条指令对应一组数据,在采用SIMD设计的处理器中,一条指令对应多组数据。
图2.SISD和SIMD的对比
SIMD技术特别适合高效处理大规模、高并行计算的场景,能够极大地减少总线访问周期,提高数据处理的并行性,然而它对算法和数据结构的要求比较高,如果算法存在较多的单点之间的依赖关系,则不适合使用该技术进行加速。另外,在高并行度的SIMD架构处理器中,如果需要处理的数据分布较为离散,则可能需要对这些数据进行合并、拆分、压缩等操作,而硬件实现这些操作需要消耗大量的硬件资源,并且增加了后端布局布线的复杂度。这类似于提升指令级别的并行度时遇到的瓶颈,因此SIMD架构的数据级别并行度也不能太高。以上内容节选自《AI处理器硬件架构设计》作者:任子木 李东声
推荐阅读
▊《AI处理器硬件架构设计》,任子木 李东声编著
文档及细节还原架构设计精髓,全方位剖析先进AI处理器架构/微架构及相关技术
融合了一线自研高性能处理器资深工程师多年工作经验,从人工智能处理器的架构设计出发,对比各种不同架构的人工智能处理器的优缺点,详细介绍各个组件的架构和微架构设计,循序渐进、由浅入深,图文结合。用户可根据本书的介绍,从0到1完成人工智能处理器的设计、验证工作。
撰 稿 人:计旭
责任编辑:张淑谦
审 核 人:曹新宇
2320