并行硬件简介
2016-10-18白圆
白圆
【摘要】 随着社会的进步,人们的生活节奏也越来越快 ,对电子产品的快速反应的需求也越来越大。并行计算技术是目前提高数据处理速率的主要手段,而不管采取什么样的技术都离不开硬件的支持,本文简要介绍了CPU、 FPGA、 GPU、 集群的并行实现结构。
【关键词】 并行计算 速率 硬件
进程是计算机中的程序关于某数据集合上的一次运行活动,是操作系统进行资源分配和调度的基本单位,当运行一个程序时,也就启动了一个进程。线程是操作系统能够进行运算调度的最小单位。一个进程可以有很多线程,每条线程并行执行不同的任务。在多核或多CPU上,使用多线程程序设计的好处是显而易见,即提高了程序的执行吞吐率。进程是资源分配的最小单位,线程是CPU调度的最小单位。线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。多线程主要是为了节约CPU时间。
一、CPU的并行
1、多处理器。多处理器系统由分布在不同芯片上的多个处理器组成。多处理器系统可以构建在同一块电路板上,处理器之间通过一个高速通信接口连接。因此,多处理器系统一般有如下特征:包含两台及以上功能相近的处理器,并且可以相互交换数据;所有的处理器共享内存、共享I/O通道、控制器和外部设备;在统一的操作系统的控制下,各处理器实现程序和数据的全面并行计算。
2、多核处理器。多核处理器是指在一枚处理器中集成两个及以上的完整的计算内核。通俗的讲,就是单个芯片上包含任意多个(如2、4或8)CPU的处理器,各个处理器并行执行不同的线程,根据内部核的结构的相同与不同,将其分成同构和异构两类。处理器之间通过片外Cache或者是片外的共享存储器来进行通信。
二、FPGA的并行
FPGA(现场可编程门阵列)是一种由逻辑门组成的硅片,被视为具有极佳并行处理能力的硬件设备,非常适合高性能计算与海量数据处理,如数字信号处理(DSP)应用。FPGA的运行时钟低于微处理器,但功耗较高。CPU在同一时刻只能执行一个任务,CPU里基本的单元是逻辑控制单元来执行程序。许多的逻辑单元构成的FPGA与CPU内部构造不一样,可以把FPGA看成是一推与门,非门,查找表,触发器的组合,各元件之间的连线已经完全固定,对FPGA编的程序用来选择哪些相连、哪些断开,这样就决定了与门、非门、触发器的连接方式。与门、非门、触发器根据外部引脚决定输出,许许多多的引脚同时变化,FPGA就有不同的输出,这样就构成了FPGA的并行。FPGA是由三个基本组件构成的可编程芯片。首先,在逻辑模块中,数据被计算并处理以得到分析结果。其次,通过将信号从一个逻辑单元路由至下一个单元的可编程互联,实现逻辑组块的互相联通。第三,I/ O组块与芯片的管脚相连,以提供与外围电路的双向通信。由于FPGA以并行的方式运行,所以它支持用户创建任意多的任务专用核,所有这些任务专用核以类似于并行电路的方式运行于FPGA芯片中。FPGA逻辑门的并行特质支持非常高的数据吞吐量,更是远胜于与其相对应的微处理器。
三、GPU的并行
GPU(图像处理器),是整个显卡的核心,显卡是由GPU、显存等等组成的。由于限制CPU发展的瓶颈(如:CPU的缓存和控制逻辑对计算速度的影响,处理器到存储器带宽的制约)日益突出,研究者们试着从其他领域找到突破口,转而开始重视GPU的发展,其在处理数据、计算能力方面已经远远超过CPU,而且GPU制作的工作流程并不复杂,成本低,使得它的应用越来越普遍了。GPU设计者将更多的晶体管用作执行单元,而不是像CPU那样用作复杂的控制单元和缓存。从实际来看,CPU芯片空间的5%是ALU,而GPU空间的40%是ALU。如果我们把CPU多核的概念放到现在的GPU身上,核心的一个流处理相当于一个“核”,GPU的“核”数量已经不再停留在单位数,而是几十甚至是上百个,因此GPU的拥有很强的并行计算能力。
四、集群上的并行
集群(Cluster)就是将多台计算机互相连接在一起,构成一个并行或分布式系统。根据处理器的不同,可以分为CPU集群和GPU集群。这些计算机一起工作,并行执行一系列共同的应用程序。通常由开发人员指定一台计算机为主机(Master),监控多个从机(Slaves)协调完成任务。从外部来看,它们仅仅是一个系统,对外提供统一的服务。集群内的计算机物理上通过电缆连接,程序上则通过集群软件(如:Hadoop)连接。这些连接允许计算机使用故障应急与负载平衡功能。集群主要使用MapReduce这种编程模型,将用户提交的程序由Master分解成多个线程,分配到多个Slaves上同时执行。
五、总结
数据的处理可以分为数据的存储、传输、计算。本文所介绍的硬件主要针对的是数据的计算,可以分为两类:多处理器型和FPGA。无论是多核、多处理器、GPU,还是集群,都属于多处理器型,因为它们的并行是基于线程级的。而FPGA的并行是选择连线的方式,所以,它的并行是基于硬件的。并行计算方面的硬件需要和数据存储、传输方面的硬件相匹配才能达到理想的效果,这将在以后的学习中介绍。