多CPU并行计算机系统的软硬件设计实例
更新时间:2015-12-25 11:48:14点击次数:3249次
多CPU 的并行计算机技术,在很大程度上提高了系统计算速度,突破了单CPU 处理速度的极限。同时采用多个CPU 的单板计算机设计,可以减少计算机系统的体积、降低开发成本、减少系统的开发周期。
一、多处理器并行计算机系统的硬件设计
多处理器并行计算机系统是属于并行结构的系统模型,每一个处理器都需要具有自己局部存储器,以存储自己的应用程序并能够独立高速并行计算;同时,该系统需要具有高速通信的互连网络,可以把并行数据块高速分布在各个处理器的局部存储器中,以提高并行系统的效率。该计算机结构设计可以采用共享存储器(双端口RAM)互连的松耦合不对称处理器配置。系统结构如图1所示,图中的各个处理器都具有自己的高速局部存储器,可高速独立的并行进行计算,各个处理器之间由双端口存储器互连组成高速星型通信网络,由于双端口存储器具有很高的通信速率,灵活的通信协议建立方式,因此双端口存储器互连的松耦合多CPU 并行计算机具有如下优点:
⑴ 通信带宽。CPU 访问双端口存储器可以采用字节/字/双字长度进行,数据读/写速度高。
⑵ 结构简单。处理器和双端口存储器直接相连,不需要其它接口电路,可实现可靠的双向信息传送。
⑶ 具有可剪裁性。根据需要可增加或减少处理器数量。
⑷ 扩展性强。该系统结构可适合各种处理器。
图1所示的多个处理器的计算机模型中,CPU可以采用Intel x86 系列、PowerPC 系列、ARM系列等处理器。Boot Processor(即主处理器)负责对系统管理,通过它可以协调各个Application Processor(即从处理器)的工作,同时Boot Processor 也对共享存储器进行初始化。为了提高系统的上电效率,每个处理器都需要带有自己的fash 电子盘来存储程序,每个处理器都可以外挂设备(比如网络、键盘等)。
二、多处理器并行计算机的软件设计
为提高处理器的执行效率,一般计算机系统都采用实时多任务操作系统,本文以嵌入式VxWorks操作系统为基础论述多CPU 并行计算机的软件设计方法。
1、共享存储器网络
在VxWorks 操作系统中,多CPU 之间的通信使用共享存储器网络技术(Shared-Memory BackplaneNetwork)。该技术采用虚拟网络来管理共享存储设备。共享存储器网络驱动允许多个处理器之间的通信采用网络形式,使用规范符合BSD4.4 兼容模式。共享存储器可以驻留在CPU 主板上也可以驻留在单独的存储器板上。
BP 代表Boot Processor(主处理器),AP 代表Application Processor(从处理器)。主处理器设置有主机路由200.200.200.0,从处理器可以通过主处理器与外网通信。主处理器必须有两个网络接口,一个用于和外网通信(如和VxWorks 开发主机Vx-Host 通信),IP 地址设置为如图2 中的90.0.0.10;另外一个是虚拟的共享存储器网络,用于和从处理器通信。从处理器配置的网络IP 地址分别是200.200.200.1、200.200.200.2 和200.200.200.3。当调试程序时,首先由主处理器初始化共享内存网络(包括设置存储器地址),从开发主机上下载自己的VxWorks image;然后,调度从处理器(AP)通过IP 地址90.0.0.10 从开发主机VxHost上下载从处理器所需要的VxWorks image,并且运行该操作系统,从机的一切调试均通过主处理器进行。
共享存储器网络是VxWorks 的一个模块,使用时必须在tornado的有关选项中选择。对于每一个处理器都有一个自己的boorom 或VxWoks image,分别独自运行自己的操作系统,彼此之间需要通信时通过共享存储器进行。
2、共享存储器网络主设备
多处理器系统中有一个处理器充当主设备的角色。共享存储器网络主设备(Shared-MemoryNetwork Master)在系统中所起到的功能解释如下:
⑴ 初始化共享存储器区域和共享内存钩子(anchor);
⑵ 维护共享存储器网络心跳;
⑶ 作为其它处理器和外网通信的网关;
⑷ 分配共享存储区域。
在VxWorks 操作系统中要求共享存储区域是一块连续的存储地址空间,默认为16MB,在网络驱动中所定义。主设备负责为其它处理器分配共享存储区域,并且进行内存映射。共享存储区的定位依靠系统配置。所有的处理器利用钩子功能都必须能够访问该区域。共享存储钩子是所有处理器的通信参考点。钩子结构和共享内存区域可以被放置在双端口RAM中。钩子包含真正存储区域的物理地址偏移量,这在主设备在初始化过程中所设置,钩子和存储区域必须在相同的地址空间,地址必须是线性和有效的。
当共享存储器网络主设备初始化后,所有的处理器才可以使用共享存储器网络。但是,主处理器并不能真正干涉其它处理器之间通过网络进行数据包的交互,各个处理器之间通信是通过本地的中断或查询方式进行的。当共享存储器被初始化后,所有的处理器,包括主处理器,都同等的使用网络。在Tornado2.0 环境下,主处理器号规定为0,系统通过处理号来识别主处理器和从处理器。典型的情况下,主处理器有两个Internet 地址,分别用于外网通信和内部网关。
3、共享存储区的网络心跳
在多CPU 系统中,所有的处理器只有当共享存储区域初始化后才可以通过网络进行通信,所以各个处理器需要知道共享网络是否处于激活状态或是就绪状态。在这里采用心跳检测的方法使各个处理器得知网络的状态。
心跳(heartbeat)是一个计数器,它被主处理器每1 秒进行计数,其他处理器靠监视心跳值来确认共享网络是否处于正常。其他处理器监视心跳一般是每隔几秒进行一次(根据具体情况而定)。共享存储器心跳偏移地址被放置在共享存储器包头的第5个4 个节的字中。如图3 所示。
4、处理器之间的通信
处理器之间通信可以采用中断方式也可以采用查询方式。每一个处理器都有一个输入队列用来接收其它处理器发送来得的数据包,当采用查询方式时,处理器以固定时间间隔查询队列是否接收到数据。当使用中断方式时,发送处理器通知接收处理器输入队列中有数据。中断方式可以采用总线中断或是邮箱中断,它比查询方式更有效。
多CPU 的并行系统类似于一个嵌入式分布式系统,它们之间的通信可采用分布式消息队列、分式数据库技术。分布式消息队列和分布式数据库技术相结合,给系统中的所有处理器提供了一个透明化的通信平台。处理器访问分布式消息队列,就好象是访问自己的资源一样。分布式消息队列技术可以简化应用程序的设计,加快系统开发。
5、多处理器之间的资源分配
在具有多处理器的单板计算机系统中,最重要的一点是要考虑任务的并行执行效率,多个处理器均需要访问外围设备和进行数据通信,这样就存在外部设备的分配问题。
对设备资源的分配,有两种:一是定制(即静态分配),即单板计算机在设计时就将资源分配好,缺点是适应性不强,资源不能根据用户的需求而改动;二是动态分配,在板上加载FPGA 逻辑,预留软件接口,用户可根据任务的要求动态指定。整个资源控制是透明的,不需要知道是哪个CPU控制。在硬件设计时,要考虑对CPU及外部设备访问的仲裁、优先级设置等,防止由于访问临界资源而造成的冲突。软件则应该指定是那一个CPU使用特定设备,其余CPU 访问时要互斥进行。
四、多处理器并行计算机的性能
在该系统中采用CPU 类型为Intel Pentium3处理器,主频是700MHz。测试方法,用相同功能的数据处理算法,将之分解为模块,分别运行在系统的各个处理器中。测试结果分析,和单CPU相比,采用两块CPU处理,运算性能可提高60%~70%;采用三块CPU,运算性能至少达到2倍。我们知道,影响这个测试结果的最大因素是测试方法,将相同功能的算法分解到多个处理器,分解的方法直接决定综合处理效率。但可以肯定,多个处理器并行处理设计,可大大提高系统的运算效率。