在多处理器宿主系统上进行多处理器仿真的方法和系统技术方案

技术编号:2872514 阅读:167 留言:0更新日期:2012-04-11 18:40
一种在一个宿主计算系统上执行为目标指令集体系结构编写的程序的方法,该宿主计算系统具有多个被设计用来处理一个第二指令集体系结构的指令的处理器,该方法包括:    将设计用来在目标计算系统的一个处理器上运行的该程序的每个部分表示为将在宿主计算系统上执行的一个或多个程序线程。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术一般地涉及计算机系统,具体地涉及一种在一个多重处理计算系统(multiprocessing computing system)上再现另一个多重处理计算系统的行为的方法(和系统)。
技术介绍
人们很早就认识到,需要在一个计算机系统上仿真(emulate)另一个计算机系统的行为。为此提出过几种方案。在作为参考包含于此的美国专利No.5,832,205中有对这些技术的综述。美国专利No.5,832,205的解决方案包括一个组合的硬件/软件方案,它在一个处理器上进行对另一个处理器的指令集的仿真。该方案允许硬件设计纳入有助于目标指令集的执行的特征。然而,由于同一个原因,它无法同样有效地仿真所有系统。作为参考包含于此的SimOS(例如,参见Stephen A.Herrod,“UsingComplete Machine Simulation to Understand Computer SystemBehavior”,博士论文,斯坦福大学,1998年2月)和SimlCS(例如,参见Peter S.Magnusson,“A Design For Efficient Simulation of aMultiprocessor”,第一届国际计算机和电信系统的建模、分析和仿真(MASCOTS)研讨会会议记录,La Jolla,加利福尼亚,1993年1月,69-78页)是无需特殊硬件特征而能进行仿真的例子。然而,它们的性能却不如美国专利No.5,832,205的有效。一般而言,这些系统使用了多级转换。已有人描述过这样的技术(例如,参见Jim Turley,“Alpha Runs x86 Code with FX!32”,1996年3月5日,Microprocessor Report),其中转换的程度(范围)根据代码执行的程度(范围)而变化。然而,今天的计算机系统包含不止一个处理器(如与单处理器系统相对的多处理器系统)。传统计技术尚未很好地解决这些多处理器系统的仿真。另外,除了在这样的系统上仿真多个处理器以外,其它方面需要仿真的有处理器之间的各种形式的通信,以及决定多个处理器对存储器位置访问顺序的规则。SimOS和SimICS都试图仿真多处理器系统的行为。但是它们没有使用多处理器系统作为宿主(host)计算系统。因而,传统技术没有解决在多处理器系统中的多处理器仿真的问题。这就是说,传统技术(及指令集结构)常局限于(并指的是)被仿真单个处理器系统,而今天的大多数系统是多处理器系统,尤其大系统(如超出个人计算机(PC)领域之外的)更是如此。因此,被用于以一个处理器简单地仿真另一个处理器的技术在多处理器系统环境中无法使用。就是说,当有多个处理器存在时,为单处理器系统设计的传统仿真技术不起作用。
技术实现思路
鉴于传统方法和结构的上述及其它问题、障碍和缺点,本专利技术的一个目标是提供一种方法和结构,其中利用某种处理器指令集和存储器结构,使得一个多处理器系统可以有效地仿真使用其它处理器指令的另一个多处理器系统的行为。根据本专利技术的第一个方面,一种用于在具有被设计用来处理第二指令集结构的指令的多个处理器的宿主计算系统上执行为目标指令集结构所编写的程序的方法(和系统),包括,将设计用来在目标计算系统的处理器上运行的程序的每个部分表示为将在宿主计算系统上执行的一个或多个程序线程(thread)。根据本专利技术的第二个方面,一个系统(和方法),包括将目标系统的硬件资源映射到软件线程的装置;将线程映射到宿主系统的硬件资源的装置;将目标系统的状态信息映射到宿主系统的存储器中的装置;以及通过将仿真任务划分为大量线程而提高仿真性能的装置。根据本专利技术的第三个方面,一种多处理器系统的宿主计算机的线程处理结构,包括一个线程池,用于保持线程;一个线程处理器中,用于访问宿主系统的存储器,并决定从线程池中选择哪个线程用于仿真;一个线程生成器,用于创建新线程,并将所述新线程放入线程池;以及一个线程调度器,用于对线程池中保持的线程进行调度,该调度器扫描正在等待的线程并按照优先级次序将下一个线程分配给可用的处理器。根据本专利技术的第四个方面,一种以有形的方式体现机器可读指令的程序的信号承载介质,该程序由数字处理设备执行来完成在具有被设计用来处理第二指令集结构的指令的多个处理器的宿主计算系统上执行为目标指令集结构而编写的程序的方法,该方法包括把设计用来在目标计算系统的一个处理器上运行的程序的每一部分表现为在宿主计算系统上执行的一个或多个程序线程。使用本专利技术的独有的和非显而易见的方面,对具有多个处理器的系统的仿真可以被高效地进行。进一步地,本专利技术使用宿主计算机进行该仿真。此外,本专利技术的一个关键特征是摆脱了宾客系统(guest system)是一件硬件的概念。代之以,本专利技术将宾客系统当作一个软件。这样,宾客(guest)被更抽象地视为具有多个并行的、需要执行的线程,然后这些线程被映射到宿主机的硬件资源中。这从本质上消除了通常把程序中的并行性映射到宾客的硬件、然后宾客的硬件由宿主(机)的硬件仿真的中间步骤。本专利技术消除该中间步骤,即使知道在宾客上可能实际上存在硬件,其可能已映射到宿主的硬件。因而,本专利技术消除了将宾客(机)的应用的软件线程映射到宾客的硬件的步骤。其后,宾客的这些线程中的每一个都被调度,用于在宿主的一个或多个处理器上运行。本专利技术的另一个优点是建造和调试这样一个系统更容易了,因为不再需要操心使宾客机的硬件细节正确。附图说明通过下面参照附图对本专利技术的优选实施例的详细描述,会使本专利技术的上述和其它的目的、方面和优点得到更好的理解,在附图中图1示出一个目标多处理器计算系统100,包括多个处理单元、一个存储器子系统、一个一致性总线(coherent bus)互连,和一个输入/输出(I/O)处理器;图2示出在图1所示系统100上执行的各种指令的一个分类方案200;图3示出一个宿主多处理器计算系统300,包括多个宿主处理单元,一个宿主存储器子系统,一个一致性宿主总线互连,和一个宿主I/O处理器;图4示出将目标系统100中的各种资源映射到400宿主系统300的存储器中;图5示出宿主系统300上的一个线程处理软件结构500;图6示出一个系统,其中存储器访问使用特定于线程的存储器可以被更快地进行;图7示出一个系统700,用于将目标系统的功能简单地映射到宿主系统的各线程中;图8示出一个系统800,用于从图7所示线程到多重处理宿主系统中的处理器的普通映射(triviai mapping);图9示出一个系统900,用于将图7所示线程更有效地映射到多重处理宿主系统中的处理器;图10示出一个更一般的系统1000,其可以被映射到一个多重处理宿主系统上;图11示出一个仿真方案1100,它将转换(结果)缓存以便重用(reuse)。图12示出一个系统1200,用于产生并行转换线程;图13示出一个系统1300,它是图9的增强,以容纳附加的转换线程;以及图14示出一种信号承载介质1400(例如存储介质),用于保存按照本专利技术的程序的步骤。具体实施例方式现在参照附图,更具体地说参照图1至14,其中示出了根据本专利技术的方法和结构的优选实施例。图1示出了一个用于被仿真的一般多重处理系统100。它包括多个处理器110本文档来自技高网
...

【技术保护点】

【技术特征摘要】

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

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

1