对称多处理机amd athlon 64 x2平时所说的双cpu系统,实际上是对称多处理机系统中最常见的一种,通常称为2路对称多处理,它在普通的商业、家庭应用之中并没有太多实际用途,但在专业制作,如3dmaxstudio、photoshop等软件应用中获得了非常良好的性能表现,是组建廉价工作站的良好伙伴。随着用户应用水平的提高,只使用单个的处理器确实已经很难满足实际应用的需求,因而各服务器厂商纷纷通过采用对称多处理系统来解决这一矛盾。在中国国内市场上这类机型的处理器一般以4个或8个为主,有少数是16个处理器。但是一般来讲,smp结构的机器可扩展性较差,很难做到100个以上多处理器,常规的一般是8个到16个,不过这对于多数的用户来说已经够用了。这种机器的好处在于它的使用方式和微机或工作站的区别不大,编程的变化相对来说比较小,原来用微机工作站编写的程序如果要移植到smp机器上使用,改动起来也相对比较容易。smp结构的机型可用性比较差。因为4个或8个处理器共享一个操作系统和一个存储器,一旦操作系统出现了问题,整个机器就完全瘫痪掉了。而且由于这个机器的可扩展性较差,不容易保护用户的投资。但是这类机型技术比较成熟,相应的软件也比较多,因此现在中国国内市场上推出的并行机大量都是这一种。pc服务器中最常见的对称多处理系统通常采用2路、4路、6路或8路处理器。目前unix服务器可支持最多64个cpu的系统,如sun公司的产品enterprise10000。smp系统中最关键的技术是如何更好地解决多个处理器的相互通讯和协调问题。

对称多处理机powermac g4系统架构对称多处理机的系统结构,主要指处理器、存储器、输入输出(i/o)设备三者之间的连接,它对我们更好地理解多处理机操作系统是非常必要的。

多处理器与存储器之间的连接:

1、多端口存储器方式:这是最简单的连接。被共享的存储器有3块,每块都有4个端口,分别与4个处理器连接。因此,各处理器能并行访问不同的存储块,但对同一块的访问必须是顺序的。各存储块内的硬件逻辑自动控制其访问。优点是连接相当简单。由于存储器的端口不可能太多,这种方式限制了能够连接的处理器个数,适用于处理器数目较少的场合。

2、集中控制开关方式:集中控制开关方式能克服多端口方式的缺点。它的做法是,把各存储块内的硬件控制逻辑换成一个集中式开关,集中式开关给出处理器到存储块的访问路径。这种方式的优点是支持更多的处理器。缺点是开关单元比较复杂,降低了系统的可靠性。若有m个存储块,n个处理器,则连接路径数为m乘n。当处理器要访问某存储块时,经过集中式开关线路时应考虑不能有明显的延时。万一某一路径故障,有可能殃及其他路径。

3、局部存储器方式:多处理机竞争共享存储器时,因相互冲突而延迟,从而使各处理器访问主存的平均时间增加。如果一个存储块上连接的处理器不多,则引起冲突的概率当然就小。但我们又不愿意通过减少处理器数目来缩短访问主存的平均时间。这是一个两难问题。

一种解决办法是,在处理器和开关之间增加高速缓冲存储器(cache)。把刚访问过的共享存储器的内容保留在cache中,当处理器再度访问主存时,先查询cache,如果要访问的数据已在cache中,则不必访问主存。这样可以减少访问主存的次数但必须配置cache置换算法并承担置换时间开销。另一种解决办法是,为每个处理器配备一个局部存储器,局部存储器的容量通常比cache大,造价却比cache小,所以受到欢迎。局部存储器mi只属于pi(i=1.…,n),不能被其他处理器访问。任一处理器都只能访问共享存储器和私有的局部存储器,不能访问其他局部存储器,称为不对称性体系结构。局部存储器也由操作系统管理,使之起到一个高速缓冲存储器的作用。然而,把在一个处理器上运行的进程移到另一个处理器上运行的代价是非常高的。

4、分布式:变集中式开关为分布式开关是处理器与存储器连接的另一种设计思路。右图是分布式多处理器体系结构示意图。每个处理器都与一个局部存储器相连,但局部存储器不具有私有性,它能被各处理器访问。这样,所有处理器共享寻址空间。处理器pi(i=1,…,n)对mi的访问不经过开关切换线路,但对mj(j≠i)的访问要经过开关切换。开关切换是这样实现的:局部开关把请求信号作为消息包packet()发给目的开关,途中各开关起转发作用。当目的开关得到消息后,就把自己的局部存储器中的数据作为一个消息包发回源开关,再转至等待该数据的处理器。

分布式多处理器比集中式开关多处理器有更高的可靠性和可扩充性,但在访问非局部存储器时有一定的延时,这取决于被访问非局部存储器mj与处理器pi的距离。在这样的系统中,操作系统的设计一定要考虑尽量减少这种延时等待。一个设计精良的任务分配算法不但能减少pi对mj的请求次数,而且能缩短pi对mj的距离。我们将在任务分配策略中讨论这个问题。

其中分布式多处理器被看作是松耦合型(looselycoupled),多端口存储器方式、集中控制开关方式和多处理器带局部存储器的多处理器被看作是紧耦合型(tightlycoupled).

对称多处理机松耦合多处理架构处理器与输入输出设备之间的连接

1、多端口输入输出设备类似于多端口存储器;设备的每个端口同一个处理器的总线相连接,设备可用此端口进行数据传输和中断处理。

2、由交叉开关连接处理器与输入输出设备,交叉开关的作用类似集中式或分布式开关,但设备开关的硬件逻辑更复杂些。因为一个设备同一个处理器保持联系的时间在一个事务处理过程中(比如读盘、写盘)可能很长,因而用软件来控制开关切换比用硬件实现会更方便。

3、只与一个处理器相连而不能被其他处理器访问的输入输出设备,容易理解,一个处理器只能访问与之相连的设备。如果想访问别的设备,需要软件参与协调,例如,向其他处理器发出一个请求使本处理器能在别的设备上操作。

4、只与一个处理器相连但可被其他处理器访问的输入输出设备;使用分布式开关且用存储器地址而不用输入输出指令来访问输入输出设备时用方式④,因为输入输出操作是对一个存储地址写数据或读数据,所以无需分布式开关做额外工作,处理器就可方便地访问其他设备。尽管处理器能访问任一设备,但从设备发出的数据和中断信号却只能由与之相连接的处理器处理。这种不对称的原因来自两个方面。一方面,设备发出的中断信号必须得到快速响应,这对远程处理器来说是做不到的;另一方面,到非局部存储器的数据传输存在不同的时间延迟,此延迟有可能比设备读或写的时间大。

上述几种方式对操作系统的i输入输出设备控制进程有不同的要求。方式①和②的设备进程要在每个处理器上运行。方式③的设备进程只要在可访问该设备的处理器上运行。方式④的设备进程操作要分成能在所有处理器上运行和在同设备相连的处理器上运行这两种情况考虑

对称多处理机中国曙光一号共享存储多处理机系统对称多处理机操作系统,目前有三种类型:主从式(master-slave)、独立监督式(separatesupervisor)、浮动监督式(floatingsupervisor)。从资源管理观点来看,虽然多处理机操作系统也具有单机操作系统所具有的各种功能,如进程管理、线程管理、存储管理文件与设备管理功能,但在各方面存在不同之处:

1、共享资源

在多处理机环境下,由于多个处理机上运行的进程并行执行,因而可能有若干个进程绝对同时访问某共享资源,这种情况比起单机环境下并发进程交替访问共享资源要难以处理,多处理机操作系统应具有新的进程同步与互斥算法。

2、多处理机调度

对称多处理机调度要考虑到负载平衡才能发挥多处理机体系的最大效能。因此在任务分配时,一方面必须了解每台处理机的能力以便把适合的任务分配给它,另一方面也要确切地了解作业中诸任务之间的关系,即哪些任务必须顺序、哪些任务可以并行执行。

3、存储器访问

在对称多处理机环境下,存储器体系既有局部的又有全局的,其地址变换机构比单机环境复杂。当多个进程竞争访问某存储块时,访问冲突仲裁机构决定哪一个处理机上的进程可立即访问,哪个或哪些处理机上的进程应等待。当共享主存中的数据在多个局部存储器出现时,操作系统应保证这些数据的一致性。

4、提高可靠性

为了提高多处理机系统的可靠性,应使操作系统具有重构能力:当系统中某个处理机或存储块等资源发生故障时,系统自动切除故障资源并换上备份资源,使之能继续工作。如果没有备份资源,则重构系统使之降级运行。如果在故障的处理机上有进程亟待执行,操作系统应能安全地把它迁移到其他处理机上继续运行,处于故障处的其他可利用资源同样也予以安全转移。

对称多处理机对称多处理机服务器对称多处理机操作系统,目前有三种类型:

1、主从式(master-slave)

主从式操作系统由一台主处理机记录、控制其它从处理机的状态,并分配任务给从处理机。例如,cyber-170就是主从式多处理机操作系统,它驻留在一个外围处理机po上运行,其余所有处理机包括中心处理机都从属于po。另一个例子是decsystem10,有两台处理机,一台为主,另一台为从。操作系统在主处理机上运行,从处理机的请求通过陷入传送给主处理机,然后主处理机回答并执行相应的服务操作。主从式操作系统的监控程序及其提供服务的过程不必迁移,因为只有主处理机利用它们。当不可恢复错误发生时,系统很容易导致崩溃,此时必须重新启动主处理机。由于主处理机的责任重大,当它来不及处理进程请求时,其它从属处理机的利用率就会随之降低。

主从式的特点:

a.操作系统程序在一台处理机上运行。如果从处理机需要主处理机提供服务,则向主处理机发出请求,主处理机接受请求并提供服务。不一定要求把整个管理程序都编写成可重入的程序代码,因为只有一个处理机在使用它,但有些公用例程必须是可重入的才行。
b.由于只有一个处理机访问执行表,所以不存在管理表格存取冲突和访问阻塞问题。
c.当主处理机故障时很容易引起整个系统的崩溃。如果主处理机不是固定设计的,管理员可从其他处理机中选一个作为新主处理机并重新启动系统。
d.任务分配不但容易使部分从处理机闲置而导致系统效率下降。
e.用于工作负载不是太重或由功能相差很大的处理机组成的非对称系统。
f.系统由一个主处理机加上若干从处理机组成,硬件和软件结构相对简单,但灵活行差。

对称多处理机intel奔腾Ⅱ xeon双核处理器2、独立监督式(separatesupervisor)

独立监督式与主从式不同,在这种类型中,每一个处理机均有各自的管理程序(核心)。采用独立监督式操作系统的多处理机系统有ibm370/158等。

独立监督式的特点:

a.每个处理机将按自身的需要及分配给它的任务的需要来执行各种管理功能,这就是所谓的独立性。
b.由于有好几个处理机在执行管理程序,因此管理程序的代码必须是可重入的,或者为每个处理机装入专用的管理程序副本。
c.因为每个处理机都有其专用的管理程序,故访问公用表格的冲突较少,阻塞情况自然也就较少,系统的效率就高。但冲突仲裁机构仍然是需要的。
d.每个处理相对独立,因此一台处理机出现故障不会引起整个系统崩溃。但是,要想补救故障造成的损害或重新执行故障机未完成的工作非常困难。
e.每个处理机都有专用的i/o设备和文件等。
f.这类操作系统适合于松耦合多处理机体系,因为每个处理机均有一个局部存储器用来存放管理程序副本,存储冗余太多,利用率不高。
g.独立监督式操作系统要实现处理机负载平衡更困难。

对称多处理机对称多处理机系统 模型3、浮动监督式(floatingsupervisor)

每次只有一台处理机作为执行全面管理功能的“主处理机”,但根据需要,“主处理机”是可浮动的,即从一台切换到另一台处理机。这是最复杂、最有效、最灵活的一种多处理机操作系统,常用于对称多处理机系统(即系统中所有处理机的权限是相同的,有公用主存和i/o子系统)。浮动监督式操作系统适用于紧耦合多处理机体系。采用这种操作系统的多处理机系统有ibm3081上运行的mvs,vm以及c·mmp上运行的hydra,等等。

浮动监督式的特点:

a.每次只有一台处理机作为执行全面管理功能的“主处理机”,但容许数台处理机同时执行同一个管理服务子程序。因此,多数管理程序代码必须是可重入的。
b.根据需要,“主处理机”是可浮动的,即从一台切换到另一台处理机。这样,即使执行管理功能的主处理机故障,系统也能照样运行下去。
c.一些非专门的操作(如i/o中断)可送给那些在特定时段内最不忙的处理机去执行,使系统的负载达到较好的平衡。
d.服务请求冲突可通过优先权办法解决,对共享资源的访问冲突用互斥方法解决。
e.系统内的处理机采用处理机集合概念进行管理,其中每一台处理机都可用于控制任一台i/o设备和访问任一存储块。这种管理方式对处理机是透明的,并且有很高的可靠性和相当大的灵活行。

对称多处理机对称多处理机结构对称多处理机操作系统的设计与单处理机多道程序设计的不同主要基于两点:

1、系统的体系结构

各处理机是异构的还是同构的,如果各处理机是异构(nonhomogeneity)的而不是同构(homogeneity)的,则各台处理机上的可执行代码格式不一样,浮动管理就困难。解决的办法之一是通过仿真软件来“抹平”异构机之间的硬件差异。在非对称主存系统中,不是所有的处理机都能访问所有的存储器,这给操作系统的主存管理带来复杂性。

2、程序设计环境

(1)同步的重要性
一个并行程序由两个或多个相互作用的进程组成,进程间的同步和通信显得更加重要。如果并行算法不是设计得很有效,则会降低并行系统的性能。同步原语通常由硬件实现,也可由软件实现,但硬件实现可以减少系统花在同步上的开销。

对称多处理机同步实现模型(2)同步的实现
多处理机器是系统是共享存储的,因此各处理机上的进程可通过共享存储器进行同步。但是,对于松耦合的多处理机,各处理机有很大的独立性,它们的进程一部分采用集中式,另一部分采用分布式同步机制。集中式系统的同步问题已有介绍。在狭义的多处理机系统中,进程间更多的是同步且其实现相对简单。广义的多处理机系统利用计算机网络与分布式系统实现进程间的通信。在那样的环境下,同步被看作为是低级的通信。

(3)利用中心进程实现同步
中心进程又称协调进程,它是多处理机系统管理程序的一部分。中心进程保存了所有用户的存取权限和冲突图(conflictgraph)等信息。每一个要求访问共享资源的进程先向中心进程发送请求消息,中心进程收到该请求后便去查看冲突图。如果该请求不会引起死锁,便将该请求插入请求队列,否则将请求退回。当轮到该请求使用共享资源时,中心进程便向请求进程发送一回答信息并让请求者进入临界段访问共享资源。在退出临界段时,原请求进程还得向中心进程发送一释放资源的消息,中心进程收到消息后又可向下一个请求进程发送回答消息,允许它进入临界段。由此看来,中心进程的作用是安排访问共享资源的顺序。由于任一进程要访问共享资源需要申请、回答、释放3个消息传递,同步的效率不高。

对称多处理机中断控制器要组建smp系统,首先最关键的一点就是需要合适的cpu相配合。平时看到的cpu都是单颗使用,所以看不出来它们有什么区别,但是,实际上,支持smp功能并不是没有条件的,要实现smp功能,使用的cpu必须具备以下要求:

1、cpu内部必须内置apic(advancedprogrammableinterruptcontrollers)单元。intel多处理规范的核心就是高级可编程中断控制器(advancedprogrammableinterruptcontrollers–apics)的使用。cpu通过彼此发送中断来完成它们之间的通信。通过给中断附加动作(actions),不同的cpu可以在某种程度上彼此进行控制。每个cpu有自己的apic(成为那个cpu的本地apic),并且还有一个i/oapic来处理由i/o设备引起的中断,这个i/oapic是安装在主板上的,但每个cpu上的apic则不可或缺,否则将无法处理多cpu之间的中断协调。

对称多处理机对称频率2、相同的产品型号,同样类型的cpu核心。例如,虽然athlon和pentiumiii各自都内置有apic单元,想要让它们一起建立smp系统是不可能的,当然,即使是celeron和pentiumiii,那样的可能性也为0,甚至coppermine核心的pentiumiii和tualatin的pentiumiii也不能建立smp系统–这是因为他们的运行指令不完全相同,apic中断协调差异也很大。

3、完全相同的运行频率。如果要建立双pentiumiii系统,必须两颗866mhz或者两颗1000mhz处理器,不可以用一颗866mhz,另一颗1000mhz来组建,否则系统将无法正常点亮。

4、尽可能保持相同的产品序列编号。即使是同样核心的相同频率处理器,由于生产批次不同也会造成不可思议的问题。两个生产批次的cpu作为双处理器运行的时候,有可能会发生一颗cpu负担过高,而另一颗负担很少的情况,无法发挥最大性能,更糟糕的是可能导致死机,因此,应该尽可能选择同一批生产的处理器来组建smp系统。

版权声明:本文为kangderui原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/kangderui/archive/2010/01/05/1639309.html