并行架构的融合
并行机采用几种不同的体系结构进行开发。在本节中,我们将讨论不同的并行计算机体系结构及其融合的性质。
通信架构
并行架构通过通信架构增强了计算机架构的传统概念。计算机架构定义了关键的抽象(例如用户-系统边界和硬件-软件边界)和组织结构,而通信架构定义了基本的通信和同步操作。它还解决了组织结构。
编程模型是顶层。应用程序是用编程模型编写的。并行编程模型包括:
- 共享地址空间
- 消息传递
- 数据并行编程
共享地址编程就像使用公告板一样,用户可以通过在特定位置发布信息与一个或多个个人进行通信,该位置由所有其他个人共享。个体活动通过记录谁在执行什么任务来协调。
消息传递就像电话或信件一样,特定接收者从特定发送者接收信息。
数据并行编程是一种有组织的合作形式。在这里,几个人同时对数据集的不同元素执行操作并全局共享信息。
共享内存
共享内存多处理器是最重要的并行机类别之一。它在多程序工作负载上提供更好的吞吐量并支持并行程序。
在这种情况下,所有计算机系统都允许处理器和一组I/O控制器通过某些硬件互连访问内存模块的集合。通过添加内存模块来增加内存容量,并通过向I/O控制器添加设备或添加额外的I/O控制器来增加I/O容量。可以通过等待更快的处理器可用或添加更多处理器来增加处理能力。
所有资源都围绕中央内存总线组织。通过总线访问机制,任何处理器都可以访问系统中的任何物理地址。由于所有处理器与所有内存位置的距离相等,因此所有处理器在内存位置上的访问时间或延迟相同。这称为对称多处理器。
消息传递架构
消息传递架构也是一类重要的并行机。它提供处理器之间的通信作为显式的I/O操作。在这种情况下,通信在I/O级别组合,而不是在内存系统中。
在消息传递架构中,用户通信通过使用执行许多更低级别操作的操作系统或库调用来执行,其中包括实际的通信操作。结果,在编程模型和物理硬件级别的通信操作之间存在距离。
发送和接收是消息传递系统中最常见的用户级通信操作。发送指定本地数据缓冲区(要传输的数据)和接收远程处理器。接收指定发送进程和放置传输数据的本地数据缓冲区。在发送操作中,将标识符或标记附加到消息,并且接收操作指定匹配规则,例如来自特定处理器的特定标记或来自任何处理器的任何标记。
发送和匹配接收的组合完成内存到内存的复制。每一端都指定其本地数据地址和成对的同步事件。
融合
硬件和软件的开发模糊了共享内存和消息传递阵营之间的清晰界限。消息传递和共享地址空间代表两种不同的编程模型;每个模型都提供了一种透明的共享、同步和通信范例。但是,基本的机器结构已经融合到一个共同的组织中。
数据并行处理
另一类重要的并行机被称为——处理器阵列、数据并行架构和单指令多数据机。编程模型的主要特点是可以在大型规则数据结构(如数组或矩阵)的每个元素上并行执行操作。
数据并行编程语言通常通过查看每处理器一个进程的进程组的本地地址空间来强制执行,形成一个显式的全局空间。由于所有处理器都一起通信并且全局查看所有操作,因此可以使用共享地址空间或消息传递。
基本设计问题
仅开发编程模型并不能提高计算机的效率,仅开发硬件也无法做到这一点。但是,计算机体系结构的发展可以改变计算机的性能。我们可以通过关注程序如何使用机器以及提供了哪些基本技术来理解设计问题。
在本节中,我们将讨论通信抽象和编程模型的基本要求。
通信抽象
通信抽象是编程模型和系统实现之间的主要接口。它就像指令集一样,提供了一个平台,以便相同的程序可以在许多实现上正确运行。此级别的操作必须简单。
通信抽象就像硬件和软件之间的契约,它允许彼此灵活地改进而不会影响工作。
编程模型要求
并行程序具有一个或多个在线程上操作数据的线程。并行编程模型定义了线程可以命名哪些数据、可以对命名数据执行哪些操作以及操作遵循哪个顺序。
为了确认程序之间的依赖性得到执行,并行程序必须协调其线程的活动。