多处理器存储器一致性的高效仿真方法和系统技术方案

技术编号:2872484 阅读:167 留言:0更新日期:2012-04-11 18:40
一种多处理器系统中的仿真方法,包括:    执行仿真,其中所述多处理器系统的宿主多处理系统支持弱一致性模型,而多处理器系统的目标多处理系统支持强一致性模型。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术通常涉及计算机系统,尤其涉及在另一个具有截然不同的存储器共享行为的多处理计算系统上仿真一个多处理计算机系统的存储器共享行为的方法。
技术介绍
仿真的主要目的是以最小性能损失在另一个体系结构上执行针对一个特定体系结构而编写的系统。显然,仿真处理的效率和所得到的″宿主″代码序列的质量具有非常的重要性。计算系统通常包含若干部分,包含处理器、存储器和输入/输出设备。经常需要在另一个计算系统上仿真一个计算系统的行为。仿真的一个主要原因是允许在另一个系统(例如″宿主计算系统″)上以相同的结果执行针对一个系统(例如″目标计算系统″)而编写的程序。已经开发了若干传统技术,以用于通过另一个处理器的指令集仿真一个处理器的指令集(例如,在Stephen A.Herrod的″通过完全的机器模拟理解计算机系统行为(Using Complete Machine Simulation to UnderstandComputer System Behavior)″,博士论文,Stanford大学,1998年2月中公开的SIMOS;在Cathy May的″模拟快速系统/370模拟器(MimicAFast System/370 Simulator)″,面向对象编程系统语言和应用会议(OOPSLA)会议录,Orlando,1987年10月4-8日,Sigplan公告专刊,vol.22,No.12,1987年12月,vol.22,No.7,6月24日中公开的MIMIC)。为了如实地执行仿真,还必须仿真这种系统中存储器的行为。通常,行为所包含的远不止于使用程序指定的地址读取和写入存储器中的单元。更具体地,当在多处理系统中由一个处理器改变某个单元的内容时,管理系统中所有处理器何时观察到所述改变的规则是在体系结构中妥善定义的。在这个方面,当系统中只有一个处理器时,当前的多数系统的行为几乎相同。也就是说,系统保持程序顺序,这意味着如果在程序中出现的指令序列内语句S1位于另一个语句S2前面,则处理器的操作象在S2开始其执行之前完成S1的执行那样。这意味着S2必须知道S1对任何资源产生的改变,包含寄存器和存储器。因此,如图1所示,如果象在上述SimOS和SimICS技术中那样在单处理系统上仿真多处理系统,并且如果目标系统和宿主系统遵守程序顺序,则仿真期间的存储器访问可以被视作一系列阶段(epoch)101,每个阶段101均表示目标系统中的一个处理器。也就是说,其区域中的编号指示被仿真的处理器的标识,而阴影区100指示系统正执行其它功能。由于阶段101期间在两个或更多处理器的仿真存储器访问之间不存在同时交互,通过简单地在宿主处理器上执行目标处理器的正确单处理器仿真,可以保证程序顺序。因此在图1中,当人们尝试在单处理器上仿真多个处理器时,不同多处理器在不同时间出现交错。于是,会在某个时间仿真处理器1,然后在一段时间内仿真处理器2,接着仿真在一段时间内返回到处理器1的仿真,然后有一段时间(例如阴影区100)不进行仿真,但单处理器执行其它功能。于是,单处理器在指定时间只执行多处理器中的一个处理器,而不是全部处理器的仿真。上述交叉操作非常低效。然而其一个优点是一个处理器的″临界段″不与另一个处理器的临界段交叉。也就是说,″临界段″是2个处理器不能同时进入的部分。对单处理器而言,当其执行仿真时不必完成其它任务(例如不进行特别的操作),因为2个处理器从不同时进入临界段。在某种意义上,单处理器自动满足2个处理器不会同时进入临界段的条件。出于同样原因,当尝试在多处理系统上仿真多处理器时,情况发生显著的变化。也就是说,可能出现问题。例如,图2图解了Dekker算法的应用,其中提供了有关处理器201和202之间的共享的例子。在图2的例子中,2个处理器201、202正尝试访问临界段。再次地,在单处理器中,对临界段(例如每次只有一个处理器可以进入的部分)的访问不会出现问题(例如由单处理器自动克服),因为通过使用图1示出的阶段,单处理器操作是顺序的。因此,如果实现使用Dekker算法的程序并且程序正在多处理机上运行,而仿真正在单处理器上执行,则不会出现问题。然而,如果相同的使用Dekker算法的程序正在目标机上运行,并且目标机正被多处理系统仿真,则会出现问题。Dekker算法应当被视作正在作为目标处理器201、202的处理器201、202上运行。具体地,第一处理器201设置变量x,并且保证在其进入临界段之前另一个处理器202尚未设置其自身的变量y。第二处理器202设置y,并保证在其进入临界段之前x不被设置。存在若干方式,其中整个应用程序在被仿真于单处理器上时可以被执行,在图3中示出了2个这样的方式。如上所述,以顺序1执行P1,直到阶段发生改变,此时P2被仿真。于是在图3的2处理器顺序中,每当存在阶段变化时,仿真切换到另一个处理器,并且显然在一个处理器(例如P1)处于临界段时,另一个处理器(P2)不能进入临界段。然而,一个处理器的临界段不可能与第二处理器的临界段交叉,因为这意味着,宿主处理器一次会看见(x=1;y=0),另一次会看见(x=0;y=1),而在之间没有出现写入的情况下。图4图解了会导致图2的方法/Dekker算法出现不正确行为的情况。图4的系统400包含共享存储器410以及高速缓存420A、420B,其中高速缓存420A、420B分别为第一和第二处理器430A、430B提供。因此在图4的情况下,两个处理器可能会同时在临界段中执行,从而导致问题。也就是说,假定目标系统具有保证这种情况从不发生的一致性模型(例如在向存储器存储之后等待,直到从其它处理器接收到确认)。这种系统的例子包含IBM系统/390和INTEL x86。还假定为了相对快速地加以实现,宿主系统具有更加宽松的一致性模型,并且不保证针对存储器的写入的原子记录。因此当上述例子被这种宿主系统仿真时,会导致不正确行为。类似PowerPC、具有这种宽松一致性模型的系统总是提供特殊同步指令或存储器屏蔽指令,所述指令保证所有处理器在看见以后指令的结果之前已经看见前述指令之前的存储器操作的结果。于是,一种保证正确进行模拟的方式是在每个存储器指令之后跟随存储器屏蔽指令。不幸的是,这种指令需要若干周期才能完成。此外,存储器指令(例如针对存储器进行载入和存储)是相当频繁的(例如出现次数占所有指令的三分之一)。因此期望找到上述问题的解决方案。此外,期望使在另一个多处理系统上仿真一个多处理系统的存储器一致性行为的成本最小,尤其当宿主多处理系统与目标多处理系统(更加严格或″更强″)相比支持″更弱″(更加宽松)的一致性模型时。应当注意,术语″更弱″(或″宽松″)和″强″是本领域普通技术人员众所周知的(例如参见Sarita Adve等人,″共享存储器一致性模型讲座(Shared Memory Consistency ModelsA Tutorial)″,IEEE计算机,vol.29,no.12,1996年12月,pp.66-76,和L.Lamport,″如何使多处理器计算机正确执行多进程程序(How to Make A MultiprocessorComputer That Correctly Execute本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:R·奈尔J·K·奥布瑞恩K·M·奥布瑞恩P·H·奥登D·A·普雷纳
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1