SIMD处理器设计技巧
SIMD(single instruction multi data)结构的处理器,一条指令同时控制多条并行的数据通道进行运算。该结构的处理器相比普通指令集处理器相比具有如下优点:相同可并行循环所需指令数更少;通过增加存储器带宽来换取存储器延迟的减少。
为了发挥SIMD并行计算的能力,SIMD处理器有如下一些设计技巧。
向量长度寄存器:处理不等于SIMD硬件带宽的循环
SIMD处理器的datapath有一个固定的硬件向量长度,该长度由SIMD并行的datapath通路数决定。在实际程序中这个长度和需要处理的向量长度是不相同的。为了解决这个问题,SIMD处理器可以引入向量长度这样一个变量,用来记录当前需要处理的向量的长度。向量长度可以用一个单独的向量长度寄存器来定义,也可以在指令表示。使用向量长度寄存器的好处是当SIMD处理器结构优化后,向量长度发生改变的话,也不需要修改指令集。
向量遮罩寄存器:处理向量循环中的IF语句
在循环程序中,很多时候循环内需要执行的指令包含条件执行(if)指令,这些指令会破坏程序的并行度。如下面的程序:
for (i=0; i<64; i