并行计算与计算机集群/微处理器
多年来,市场一直习惯于使用CPU(中央处理单元)这个术语。这是因为大多数机器在任何时间都只拥有一个能够在机器内部工作的MPU(微处理器单元) - 一个位于中心(Micro)的MPU,因此被称为中央处理器单元。并行计算机关注的是利用与这些MPU不同的处理器,而计算机集群则关注的是将许多此类MPU结合起来,无论是哪种方式,整体都会远远超出简单的CPU的范围。
为了理解和欣赏区分不同类型处理器的因素,最好先对处理器最基本的形式有一个很好的了解。
一个典型的独立计算单元(数字时钟、科学计算器、洗衣机等等)的核心是一个单一的中央处理单元(CPU) - 一个控制几乎所有操作的MPU。这个CPU将控制和执行计算单元执行的大多数任务。它一个接一个地依次执行其众多任务:它将所有操作序列化。以洗衣机为例:它可能从确保门关闭开始循环;锁定门;装满洗衣机;加热水;放入洗涤剂;转动滚筒;放入织物柔软剂;转动滚筒;排放水;再装满水;转动滚筒;排放水;解锁门。假设它没有按照那个顺序进行操作,而是从装满洗衣机开始:衣服还会洗干净吗?还是水会立即从里面流出来?事物发生在顺序中是有原因的:为了得到正确的结果。
几年来,单个MPU本身一直在执行多个同时活动,以便更好地实现吞吐量。早期,处理器制造商意识到,为了使MPU更快,他们需要的不仅仅是提高MPU的速度。
当分解成各个组成部分时,MPU中的单个指令需要完成很多工作。即使在最简化的形式中,MPU也必须1)从程序代码中检索指令;2)执行指令;以及对于许多指令,3)将指令的结果放置回某个位置。每个操作都需要MPU一个周期,因此对于能够每秒执行2个周期的MPU(更常见的是转换为2Hz),执行最简单的指令需要一秒钟,执行需要将结果放到其他位置的简单指令需要1.5秒。
工程师很快发现,如果MPU设计将这些组成部分分开,并且相对独立地运行,那么就可以在不改变MPU速度的情况下,增加每秒执行的指令数量。例如,将指令提取阶段与MPU的其余部分分离,并使其同时运行,您就可以将MPU能够执行的指令数量增加一倍:当MPU的指令处理部分处理第一个指令时,在同一周期内,MPU的指令提取部分正在提取第二个指令。指令被提取、处理并最终完成的过程被称为流水线。
周期计数 | 单流水线MPU | 双流水线MPU |
1 | 提取指令1 | 提取指令1 |
2 | 执行指令1 | 执行指令1 提取指令2 |
3 | 提取指令2 | 执行指令2 提取指令3 |
4 | 执行指令2 | 执行指令3 提取指令4 |
对称多处理器(SMP)机器由一系列对称的MPU组成(因此得名)。各个MPU本身是彼此的镜像(相同的速度、设计和外设功能,如片上缓存和内存管理),并且以一种方式安置,使每个MPU都能以对等的方式访问和使用整台机器的外设(RAM、硬盘、视频等等)。由于计算机的二进制性质,为了实现简单的数字操作和算术,MPU的数量通常是二的倍数(2、4、8、16、32、64),以实现二进制对称。
SMP设计在硬件和软件的设计中引入了许多问题:启动机器和访问外设资源,特别是RAM(在下面RAM和多个MPU中讨论)。
在单CPU机器中,BIOS将使用其ROM代码的一部分启动第一个也是唯一的CPU。CPU将读取和处理该代码,并开始对硬件外设以及CPU应如何继续启动(例如,使用哪个启动设备)进行序列化。在SMP机器中,过程基本相同,只是可以选择多个CPU。BIOS不进行任何挑选,而通常只是向位于插槽0的CPU发出信号。与单CPU系统相比,另一个变化是,BIOS中的代码允许检查是否存在其他CPU以及启动这些其他CPU的代码。为了启动其他CPU,位于插槽0的CPU必须被设计成理解如何执行另一个CPU的启动。此外,由于这是一个对称多处理器,每个其他插槽中的CPU将是第一个CPU的镜像,因此也具有该能力。
非对称多处理器(不太可能被称为AMP)机器不太可能呈现任何形式的对称性,并且本质上,最难给出准确的描述。通常会存在一个中央处理单元(甚至多个单元),但其作用是确保将正确的程序代码提供给系统中的其他处理器。有时,非对称多处理器机器不会被描述为这种类型,实际上许多街机游戏和现代家用游戏机都属于此类。
这些专用、专门的处理器专门设计用于并行执行特定任务。并行向量处理器通常被引用为多达64个,有时甚至更多,每个处理器通常具有x个独立的核心,每个核心包含x个流水线。指令集通常很简单,有时甚至比常见的RISC处理器还要简单,但它们的目的是非常强大的:加载数据以进行工作的指令将加载一个数据集以进行工作,而不是单个字节、字或双字。另一个单一指令将并行地对数据集中的每个数据部分执行相同的操作,从而实现类似的单数据部分实现RISC处理器的x倍性能。因此,使用跨越两个处理器周期的两个指令,处理器可以加载并对x个不同的数据类型执行一个指令。数据的组织方式和程序编译的方式可能与处理器本身一样独特。
严格来说,大规模并行处理器(MPP)本身不是一种处理器类型,而是一种架构类型,其中多个并行向量处理器被封装到单独的子板上,每个子板都有自己的专用RAM和专用板级总线。多个子板然后被插槽到系统上的专用处理器超级总线上。整个系统拥有额外的资源(存储容量,通常还有系统RAM),并连接到处理器超级总线以形成完整的系统。最大的超级计算机(例如地球模拟器和深蓝)很少不属于此类别。