here 没写

12.1 共享存储与消息存储系统

多处理器发展史上出现过多种不同结构的系统

并行向量机系统。

  • Gray系列向量机为代表的向量机在70年代和80年代前期
    • 是高性能计算机发展的主流,同时积累了大量的应用及系统软件。
  • 缺点:难以达到很高的并行度。
  • 如今,向量机不再是计算机发展的主流,
    • 但目前的高性能处理器普遍通过SIMD结构的短向量部件来提高性能。

SMP系统。

  • 指若干处理器通过共享总线或交又开关等共享统一访问的存储器。
  • 八九十年代,DEC、SUN、SGI等公司的高档工作站多用SMP。
  • 可伸缩性也是有限的。
  • SMP系统常被作为一个结点来构成更大的并行系统,
    • 多核处理器也常用

MPP系统。

  • 指在同一地点由大量处理单元构成的并行计算机系统。
  • 每个处理单元可以是单机,也可以是SMP系统。
  • 处理单元之间通常由可伸缩的互连网络(如Mesh、交叉开关网络等)相连。

机群系统。

  • 将大量工作站或微机通过高速网络互连,以构成廉价的高性能计算机系统。
  • 由于机群计算可以充分利用现有的计算、内存、文件等资源,用较少的投资实现高性能计算,所以越来越成为普通高性能计算用户青睞的对象。
  • 随着互联网的快速发展,机群系统和MPP系统的界限越来越模糊

异构计算机系统。

  • 由多台不同结构的计算机组成,
    • 可以是MPP系统,也可能是工作站或其他类型的计算机。
  • 云计算服务器系统可认为是一种异构计算机系统

结构的角度,多处理器系统可分为共享存储系统和消息传递系统

  • 共享存储系统中,
    • 所有处理器共享主存储器,
    • 每个处理器都可以把信息存入主存储器,
    • 或从中取出信息,
    • 处理器之间的通信通过访问共享存储器来实现。
  • 消息传递系统中,
    • 每个处理器都有一个只有它自己才能访问的局部存储器,
    • 处理器之间的通信必须通过显式的消息传递来进行。
  • 俩结构如图12.1
  • 可看出,消息传递系统中,每个处理器的存储器是单独编址的;
    • 共享存储系统中,所有存储器统一编址
      在这里插入图片描述

前2是共享存储,后2类网络计算系统都是消息传递

  • 大多数MPP是消息传递。
  • 共享存储MPP的典型是90年代的SGI的Origin2000,
    • 但与同期的消息传递产品相比,
    • Origin2000 由于硬件的复杂性,其可伸缩性有限
    • 此外,Cray-T3D等系统也提供了共享空间,但硬件不负责维护cache的一致性

冯・诺依曼以存储为中心的结构,指令和数据都在存储器,处理器从存储器中取指并根指令要求对存储器中的数据进行处理。

  • 因此、存储器组织方式的不同是结构的本质不同,对编程影响大。
  • 与消息传递比,共享存储支持传统的单地址编程空间,
    • 减轻了程序员的负担,
    • 有强通用性,且方便移植现有的软件。

举例说明共享存储和消息传递系统的不同。

  • 100人通过网络讨论
  • 这100个人可以在公共的BBS论坛上讨论,
  • 也可

here 没写

12.3 共享存储系统的指令相关

指令流水线中,

  • 处理器只要确保存在相关的指令按照程序的次序执行就可以通过流水线、动态调度、多发射等技术对指令进行乱序执行。
  • 在共享存储的并行程序中,
  • 什么是指令的相关性?
  • 结构设计怎样在满足指令相关性的前提下提高性能呢?

单机系统中,

  • 只有一个处理器读写存储器,
  • 其访存事件次序比较简单:
    • 取数操作总是取回最近一个对同一单元的存数操作所写的值,
    • 存数操作唯一地确定此后对同一单元的取数操作所取回的值。
  • 这种简单的访存事件使单机系统得以高效实现。
  • 目前的大多数单机系统都采用流水、多发射、预取、写缓存等技术提高性能,
    • 只要程序中的数据相关性不被破坏,
    • 就可乱序执行指令而不影响执行的正确性。

但在共享存储系统中,

  • 多个处理器可读写同一单元,
  • 一个处理器所存的数可能被多个处理器所访问,
  • 一个单元内容的变化可能在不同的时刻被不同的处理器所接受。
  • 因此,在共享存储系统中,访存操作的次序比较复杂。
  • 为保证其被正确地执行,不仅要考虑单机内的数据相关,而且要考感多机之间的数据相关

图12.5是保证只有一个进程进入临界区的同步机制。

  • a指示P1P_1是否进入临界区,=0表示P1P_1未进入,=1表示P1P_1已进入
    • b是P2P_2的同样标志。
  • 当进程试图进入临界区时,它先把本进程标志置1,然后检查另一进程的标志。
    • 若另一进程为0,说明另一进程未进入,则本进程进入
    • 否则,本进程等待,直到另一进程退出
  • P1P_1P2P_2分别执行完相应进程时,R1和R2的正确组合是(0,1)、(1,0)和(1,1)。
    • (1,1)将导致死锁(设有其他方法防止死锁)。
    • 只有R1=R2=0的结果是错的,它将导致同时进入临界区。

在这里插入图片描述

版权声明:本文为匿名原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: