并行处理并行软件并行软件可分成并行系统软件和并行应用软件两大类,并行系统软件主要指并行编译系统和并行操作系统,并行应用软件主要指各种软件工具和应用软件包
在软件中所牵涉到的程序的并行性主要是指程序的相关性和网络互连两方面
1.程序的相关性:程序的相关性主要分为数据相关、控制相关和资源相关三类
数据相关说明的是语句之间的有序关系,主要有流相关、反相关、输出相关、I/O相关和求知相关等,这种关系在程序运行前就可以通过分析程序确定下来
数据相关是一种偏序关系,程序中并不是每一对语句的成员都是相关联的
可以通过分析程序的数据相关,把程序中一些不存在相关性的指令并行地执行,以提高程序运行的速度
控制相关指的是语句执行次序在运行前不能确定的情况
它一般是由转移指令引起的,只有在程序执行到一定的语句时才能判断出语句的相关性
控制相关常使正在开发的并行性中止,为了开发更多的并行性,必须用编译技术克服控制相关
而资源相关则与系统进行的工作无关,而与并行事件利用整数部件、浮点部件、寄存器和存储区等共享资源时发生的冲突有关
软件的并行性主要是由程序的控制相关和数据相关性决定的
在并行性开发时往往把程序划分成许多的程序段——颗粒
颗粒的规模也称为粒度,它是衡量软件进程所含计算量的尺度,一般用细、中、粗来描述
划分的粒度越细,各子系统间的通信时延也越低,并行性就越高,但系统开销也越大
因此,我们在进行程序组合优化的时候应该选择适当的粒度,并且把通讯时延尽可能放在程序段中进行,还可以通过软硬件适配和编译优化的手段来提高程序的并行度
2.网络互连:将计算机子系统互连在一起或构造多处理机或多计算机时可使用静态或动态拓扑结构的网络
静态网络由点一点直接相连而成,这种连接方式在程序执行过程中不会改变,常用来实现集中式系统的子系统之间或分布式系统的多个计算结点之间的固定连接
动态网络是用开关通道实现的,它可动态地改变结构,使之与用户程序中的通信要求匹配
动态网络包括总线、交叉开关和多级网络,常用于共享存储型多处理机中
在网络上的消息传递主要通过寻径来实现
常见的寻径方式有存储转发寻径和虫蚀寻径等
在存储转发网络中以长度固定的包作为信息流的基本单位,每个结点有一个包缓冲区,包从源结点经过一系列中间结点到达目的结点
存储转发网络的时延与源和目的之间的距离(段数)成正比
而在新型的计算机系统中采用虫蚀寻径,把包进一步分成一些固定长度的片,与结点相连的硬件寻径器中有片缓冲区
消息从源传送到目的结点要经过一系列寻径器
同一个包中所有的片以流水方式顺序传送,不同的包可交替地传送,但不同包的片不能交叉,以免被送到错误的目的地
虫蚀寻径的时延几乎与源和目的之间的距离无关
在寻径中产生的死锁问题可以由虚拟通道来解决
虚拟通道是两个结点间的逻辑链,它由源结点的片缓冲区、结点间的物理通道以及接收结点的片缓冲区组成
物理通道由所有的虚拟通道分时地共享
虚拟通道虽然可以避免死锁,但可能会使每个请求可用的有效通道频宽降低
因此,在确定虚拟通道数目时,需要对网络吞吐量和通信时延折衷考虑
以上内容由大学时代综合整理自互联网,实际情况请以官方资料为准。