8.2.2 多处理机系统的特点
多处理机属于多指令流多数据流(MIMD)计算机,它和单指令流多数据流(SIMD)计算机的并行处理机相比,有很大的差别。它们的差别归结底来源于并行性级别的不同:多处理机要实现任务一级的并行,不能再象SIMD计算机那样只能对多数据流执行同一指令操作。因此,在结构上,它的多个处理机要用多个指令部件分别控制,并且要有复杂的互连网络实现机间通信;在算法上,不限于数组向量处理,要挖掘和实现更多通用算法中隐含的并行性;在系统管理上,要更多依靠软件手段有效地解决资源管理,特别是处理机管理以及进程调度等问题。下面概括说明多处理机系统的特点。
1.结构灵活性
并行处理机是从解决专用题目的需要而发展起来的。其结构主要是针对数组向量处理算法而设计的。结构特点是:处理单元很多,但只需设置有限和固定的机间互连通路,即可满足一批并行性很高的算法的需要。虽然发展了象BSP这样通用性较强的系统,但从并行处理机来说,仍是以解决大型数组计算问题为主。用库克的分类标准,它仍是属于数组单执行(SEA)一类。而多处理机则有所不同,它应有较强的通用性。例如:它可以同时对多个数组进行不同的处理。这称为数组多执行(MEA),亦可称为多SIMD(MSIMD);它可以同时对多个标量数据进行不同的处理,这称为标量多执行(MES);等等。这就要求多处理机能适应更为多样的算法,具备更为灵活多变的系统结构以实现各种复杂的机间互连模式,同时还要解决共享资源的冲突问题。目前,多处理机中处理单元的数目还不可能做得很多。
2.程序并行性
并行处理机实现操作一级的并行,其并行性存在于指令内部,一条指令可以同时对整个数组进行处理,再加上系统具有的专用性特点,就使程序并行性的识别较易实现。这一点主要在指令类型及硬件结构上即已考虑,可由程序员在编制程序中加以掌握,或由向量化编译程序协助。但在多处理机中,因为不限于解决数组向量处理问题,并行性存在于指令外部,即表现在多个任务之间,再加上系统通用性的要求,就使程序并行性的识别难度较大。因此,它必须利用多种途径,如算法、程序语言、编译、操作系统、以至指令、硬件等,尽量挖掘各种潜在的并行性,而且主要的责任不能放在程序员肩上。
3.并行任务派生
并行处理机依靠单指令流对多数据流实现并行操作,这种并行操作是通过各条单独的指令加以反映和控制的,这样由指令本身就可以启动多个处理部件并行工作。但多处理机是处于多指令流操作方式,一个程序当中就存在多个并发的程序段,需要专门的指令来表示它们的并发关系以控制它们的并发执行,以便一个任务开始被执行时就能派生出可与它并行执行的另一些任务。这个过程称为并行任务派生。派生的并行任务数目是随程序和程序流程的不同而变化着的,并不需要多处理机系统用固定数目的处理机加屏蔽的方法来满足其执行的需要。多处理机执行这些并行任务,不必浪费多余的处理机,需要多少就分配多少,如果不够,那些暂时不能分配到空闲处理机的任务就进入排队器,处于等待状态。这样就使多处理机有可能达到较高的效率。这是它较之并行处理机具有的潜在优点。
4.进程同步
并行处理机实现操作级的并行,所有处于活动状态的处理单元同时执行共同的指令操作,受同一个控制器控制,工作自然是同步的。但多处理机所实现的是指令、任务、程序级的并行。一般说,在同一时刻,不同的处理机执行着不同的指令。由于执行时间互不相等,故它们的工作进度不会也不必保持相同。并行任务被派生以后,要根据分配到空闲处理机的先后次序陆续投入运行,因而开始执行的时刻也不可能一致。还要由进程之间的数据相关和控制依赖决定它们执行时的正确顺序。在并行处理机看来,由于执行单指令流,程序的性质基本上是串行的,所以,虽也有指令重叠,但要遵守进程之间的正确顺序是比较容易的。而在多处理机中,情况就要复杂得多,特别是要区分进程之间的多种不同的依赖关系。如果并发进程之间有数据交往或控制依赖,那么,执行过程中有的进程就要中途停下来进入等待状态,直到它所依赖的执行条件满足为止。这就要求多处理机采取特殊的同步措施,才能使并发进程之间保持程序所要求的正确顺序。
5.资源分配和进程调度
并行处理机主要执行数组向量运算,处理单元数目是固定的,且受同一控制器的控制,这是程序员编写程序的基本出发点。程序员只能利用屏蔽手段来设置部分处理单元为不活动状态,以改变实际参加操作的处理单元数目。但多处理机执行并发任务,需用处理机的数目没有固定要求,各个处理机进入或退出任务的时刻互不相同,所需共享资源的品种、数量又随时变化。由于上述情况十分复杂,于是,就提出了一个资源分配和进程调度问题。这个问题解决的好坏对整个的效率有很大的直接影响。