芯片上的数据流
人们对于高性能低成本数据处理的追求是无止境的!
伴随大规模集成电路的快速发展,从第一块微处理器芯片1971年在Intel诞生到今天,微处理器已经历了35年的发展。在这35年中,微处理器芯片上的晶体管数量增加了4个数量级,性能增加了5个数量级。其发展同著名的摩尔(Moore)定律十分吻合,即在单个芯片上的器件集成度将以每18个月到24个月的速度翻一番。即便如此,为了满足计算机与其它相关应用科学等学科发展的需求,微处理器体系结构仍处于不断的变革中。
按照功能分类,微处理器总体可分为专用和通用两大类。通用微处理器的设计目标是使处理器能够高效执行指令序列。现代通用处理器,如Intel 的i486和 Pentium通用处理器,经历了串行、流水线、超流水线到超标量的发展过程。专用的处理器针对不同的应用领域体系结构有很大不同,如数字信号处理器(DSP)和图形处理器(GPU)。实际中的专用和通用并无严格的界限,处理器的设计完全取决与应用的需求。1997年,Intel在其通用处理器 P6内核中加入了MMX指令集执行单元,针对媒体应用提供了单指令多数据(SIMD)的并行操作。另一方面,2002年,Nvidia在其NV30图形处理器中引入可编程流处理器(Programmable Stream Processor)的概念,使得图形处理器具有一般意义的数据流并行计算能力。
流处理的概念由实时的多媒体应用发展而来,该计算模型如图-1。数据流从输入端进入处理器。在处理器内部,数据源分配给不同的处理器单元执行一段称为计算核或算法核(Kernel)的处理代码。处理完成后的输出数据,交给下一级处理单元执行另一段计算核,直到输出。数据流处理的并行,主要表现在以下3个层次上:
1)指令级的并行。指令级的并行可以看作是向量操作,比如图形学中的坐标平移,点的位置由一个4元向量(x, y, z, w)确定,对其位移操作是对这4个元素同时加上位移分量。
2)数据级的并行。数据级的并行是SIMD的并行,数据流可同时分配给几个处理器执行相同的计算核。每个数据的计算不依赖其它数据的计算结果。
3)任务级的并行。任务级的并行是指不同计算核的并行执行,既可以是空间上的并行,针对不同的数据流执行不同的任务即多指令多数据MIMD处理;也可以是时间上的并行,如图形处理器中的硬件图形管线。
由于媒体数据处理要求实时与便携,数据流并行处理是借助现代微处理器技术实现在单片芯片上,而不同与由多处理器和局域网络组成的高性能并行处理机。典型的流处理器有斯坦福大学的Imagine,和Merrimac。具有流处理器并行概念的处理器还有麻省理工的Raw和IBM的Cell处理器,ClearSpeed的CSX600 实际上也可以认为是一类流处理器。和当前在个人PC上广泛使用的通用处理器比较,以上的处理器大大加强了片上数据流并行处理能力。这些通用处理器中有的刚刚开始商业应用,有的处于研究发展阶段。虽然片上数据流并行处理是优秀的微体系结构设计理念,但是能否在具体实际应用领域得到认可和推广,目前还不得而知。
值得关注的是,自从数据流并行处理的概念被现代图形处理器设计所采用,商用的图形处理器就实现了从固定图形管线向可编程图形管线过渡,不仅为图形领域的应用提供强大而灵活的处理能力,同时也使得在图形处理器上实现数据流并行计算成为可能。