数据级并行技术

数据级并行技术

数据级并行技术DLP主要通过SIMD等资源重复方式来进行细粒度并行,广泛用于科学计算、音视频处理等领域的向量数据处理。按结构划分,向量处理机以流水方式处理各个数据,阵列处理机以并行方式处理各个数据。

向量处理机

通过流水方式处理向量计算,当然可以通过若干调指令完成,我们采用向量指令,目的是缩短代码长度,减小通信的开销。

向量处理的方式根据分量操作的顺序不同分为三种:横向处理方式每次处理完一个目标分量,会出现多次数据冒险和功能切换,不适宜;纵向处理方式优先处理完一个子操作,冒险和切换的次数都少,适合向量处理机;考虑到访存和寄存器大小的问题,一种混合方案是纵横处理方式,也称为循环开采,即将很长的向量分组,组内纵向,组间横向,这样效率不差,同时对寄存器大小的要求也不太高。

向量处理机的结构分为M-M和R-R两种。M-M结构每次都从存储器中取操作数,以实现向量长度不受限制的目标,对应纵向处理方式。实现上,需要流水化的标量操作部件,和流水化的存储器控制部件。由于受制于存储器带宽,即便采用多体交叉等技术,性能仍然不够理想。R-R结构对应纵横处理方式,设置专用的向量寄存器组、向量存取部件、向量功能部件以及配套的向量指令控制部件。普通的指令处理部件只负责对标量指令的控制,可以看作向量处理的部分被单独划分出来。指令处理部件需要实现取指译码等操作。向量寄存器本质上是一个每拍读写一个分量的标量寄存器数组。同时,设置向量长度寄存器或屏蔽寄存器,以控制哪些分量参与操作。

针对向量处理机的冒险与访存瓶颈来进行优化。设置多个功能部件,使得无冲突的指令可以并行执行,但无法解决VREG有冲突的情况。存在RAW冲突时,可以将指令链接执行,即分量可用时立即启动。事实上这种同步的要求是较高的,在此不展开。为了加快访存,并且支持在同一时钟周期内多次访存,可以使用存储器组,允许对各个独立存储体进行并行的访问,提供更高的带宽。

阵列处理机

阵列处理机用一个控制单元控制多个执行单元并行操作,也是SIMD,只是将向量处理机的流水升级为并行。对于向量指令,控制单元通过广播总线操作各个执行单元PE;对于网络控制指令,控制单元操作连接各个PE的互联网络IN。这里的IN要求各个端口对的互连必须要同时实现。阵列处理机是专用处理机的一种,因为其结构,特别是互联网络的结构,具有对专用算法的适应性。

阵列处理器工作时,操作主要有四种:数据存取、指令执行、数据寻径、数据通信。数据寻径指控制IN实现各个PE间的不同互连方式,数据通信指通过通信指令实现PE间的相互通信。

阵列机的基本结构分为分布式结构和集中式结构,这里的区别主要在于是否具有独立的私有存储器。

分布式结构中,每个PE自带一个*存储器,互连网络用于PE到PE的单向通信。在主存和私有存储器之间的数据交互称为I/O操作,本地存储LM同时具有私有和公有两种编址方式。

集中式结构中,各个PE共享m个存储单元SM,IN用于PE和SM之间的双向通信。此时输入输出操作由主机处理,SM只有公有编址。通信操作用访存实现。为了实现SM的无冲突访问,需要采用类似独立存储体中采用的互质、错位存放等手段。

影响并行算法在阵列机上的执行性能的因素包括PE的数量、IN的互连功能即PE之间的通信性能等等。

X86中的SIMD技术

X86中的SIMD技术主要包括MMX,SSE,AVX,其更新迭代的技术核心主要在于分量个数、运算功能、向量存取、IN功能方面。MMX采用64位数据包,进行对齐定点运算。SSE的数据包增长到128位,支持浮点运算,支持流式数据处理,包括不对齐访存、预取、直写等。AVX采用256位数据包,加入了数据重排、FMA指令、VEX编码等新功能。在这里我们主要介绍MMX技术。

MMX技术的核心思想时,用阵列机并行处理向量,不增加控制或状态寄存器以兼容现有软件。将向量数据打包成固定长度,用同一部件分为多个片段进行并行处理。指令系统扩展后,增加了4种64位数据表示,使用8个MMX寄存器,增加了57条MMX指令。

MMX数据类型包括4种64位的无符号整数包,自然地,分为8个字节的数据打包、4个字的数据打包、2个双字、1个四字。MMX寄存器为8个64位寄存器,在Pentium时为了降低成本,借用浮点寄存器,用别名方式实现,从PII起增设了MMX寄存器。MMX指令格式采用指令前缀0FH融入x86指令集。

数据级并行技术

上一篇:网络安全:sql注入基础——盲注


下一篇:二叉树各种类型汇总