CN100495341C - 多处理器地址转换的高效仿真方法和系统 - Google Patents
多处理器地址转换的高效仿真方法和系统 Download PDFInfo
- Publication number
- CN100495341C CN100495341C CNB031570178A CN03157017A CN100495341C CN 100495341 C CN100495341 C CN 100495341C CN B031570178 A CNB031570178 A CN B031570178A CN 03157017 A CN03157017 A CN 03157017A CN 100495341 C CN100495341 C CN 100495341C
- Authority
- CN
- China
- Prior art keywords
- host
- memory address
- virtual memory
- page
- page table
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45537—Provision of facilities of other operating environments, e.g. WINE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
Abstract
使用宿主多处理器系统的操作系统的虚拟-实存储器映射机构仿真目标系统的存储器寻址的方法(和系统),包含向模拟页表输入目标虚拟存储器地址以获得宿主虚拟存储器地址。目标系统不注意其运行的软件。
Description
技术领域
本发明通常涉及计算机系统,尤其涉及当在另一个多处理计算系统上模拟多处理计算机系统时映射该多处理计算机系统的共享存储器的方法。
背景技术
计算系统通常包含若干部分,包含处理器、存储器和输入/输出设备。经常需要在另一个计算系统上仿真一个计算系统的行为。
仿真的一个主要原因是允许在另一个系统(例如"宿主计算系统")上以相同的结果执行针对一个系统(例如"目标计算系统")的编写的程序。已经描述了若干传统技术,用于通过另一个处理器的指令集仿真一个处理器的指令集(例如,在Stephen A.Herrod的"通过完全的机器模拟理解计算机系统行为(Using Complete Machine Simulation to UnderstandComputer System Behavior)",博士论文,Stanford大学,1998年2月中公开的SIMOS;在Cathy May的"模拟:快速系统/370模拟器(Mimic:AFast System/370 Simulator)",面向对象编程系统语言和应用会议(OOPSLA)会议录,Orlando,1987年10月4-8日,Sigplan公告专刊,vol.22,No.12,1987年12月,vol.22,No.7,6月24日中公开的MIMIC)。
为了如实地执行仿真,必须仿真这种系统中存储器的行为。通常,行为所包含的远不止于使用程序指定的地址读取和写入存储器中的单元。
更具体地,当在目标系统上实现虚拟存储器时,对存储器单元的访问通常包括验证请求任务是否有权执行访问操作。也可以包括将含有请求单元的页面换入存储器中(如果尚未在存储器中)。
通常在图1示出的系统100中执行这种功能,其中向目标页面映射表110输入计算的操作数地址,以作为目标虚拟存储器地址。
于是在图1中,在表110中检查含有寻址单元的页面,以确定(a)其是否已经在存储器(例如目标实存储器120)中,(b)是否允许期望的访问,和(c)哪个物理存储器单元对应于期望页面。再次注意,所有这些操作均在实际的目标系统硬件中执行。
为了高效地进行这种访问,这些检查在仿真机器的硬件中执行,并且通常与实际存储器访问同时进行,其中如果访问被拒绝,则丢弃访问结果。目标实存储器120的输出是可能对应于LOAD等等的操作数值。(注意,在宿主中,STORE采用其它方式)。
宿主计算系统通常还提供硬件以利于进行这种虚拟寻址。类似于授权给Scalzi等人的美国专利No.6,075,937所公开的实现根据宿主虚拟寻址硬件所支持的原语来解释目标访问。这如图2的系统200所示,其中使用模拟页面映射表210和宿主实存储器220。
通过页面映射表210进行的宿主实存储器220中的虚拟地址-实地址映射对于目标系统的每个虚拟地址空间(通常与"进程相关)均是唯一的。
应当注意,模拟页面映射表210与目标页面映射表110的不同之处在于,操作系统具有页面映射表,其中页面映射表将虚拟页面映射到宿主实存储器的实页面。然而在图2中,这是不可行的(例如无法工作),因为实存储器必须寻址宿主实存储器而不是目标实存储器。因此,该映射必须包含另一个字段,该字段指示实存储器的被映射到宿主实存储器的位置。
如果宿主系统还实现虚拟存储器,并且如果每个宿主进程的允许虚拟地址空间至少和目标上允许的地址空间一样大,则可以在图3的结构300所示的进程级别上进行仿真,所述结构300具有目标-宿主虚拟地址映射器310,宿主页面映射表320和宿主实存储器330。
在图3的方案中,通过映射器310将目标虚拟地址空间映射到宿主虚拟地址空间,接着使用宿主的页面映射表机构320将宿主虚拟地址空间转换成宿主实地址空间。
于是在图3中,在前端提供目标-宿主虚拟地址映射器310,而不是具有模拟的页面映射表(例如图2中的表210),使得目标虚拟地址可以被转换成宿主虚拟地址,并且接着使用宿主操作系统进行其余映射。
基本上,图3所示的方案认识到图2的功能模块不能在宿主操作系统上执行。因此,图3的目的是得到目标虚拟存储器地址并且将其转换成可以被宿主系统上运行的操作系统使用的某种形式(例如宿主虚拟存储器地址)。宿主上运行的操作系统具有其自身的页面映射表,该页面映射表可以只识别和理解其环境中的虚拟存储器地址(例如宿主虚拟存储器地址)。于是,一旦获得宿主虚拟存储器地址,可以在宿主中执行其余映射。
然而在例如与本申请同时提交、Ravi等人的美国专利申请10/244,414,"多处理器宿主系统上的多处理器仿真方法和系统",IBM DocketNo.YOR920010533US1中描述的仿真环境中,这两种方案被证明是不充分的。在这种环境中,不由宿主多处理系统中的唯一处理器直接执行对目标多处理系统中处理器的模拟。
而是,缓冲仿真处理器的任务和宿主上需要的其它辅助任务,并且宿主上的调度器向可用处理器分配这些任务。此方案的优点是允许对具有的处理器多于宿主上可用处理器的系统进行仿真。
授权给Scalzi等人的美国专利6,075,937中公开的方案需要将各个目标处理器映射到宿主处理器。也就是说,这种系统需要一一对应,因此不太适于这种仿真。
虚拟映射方案是可能的候选,除了它需要仿真软件知道有关目标系统中任务到进程的划分之外。这通常是不可能的,除非仿真系统理解被仿真的系统软件。
也就是说,必须确切知道目标(客人)上运行的操作系统中正在发生什么事情,以便使图3的方案能够工作,这是因为目标(客人)的页面映射表会被还原成目标-宿主虚拟地址映射器310等等。然而这种情况很少发生,因为在对一个系统进行系统仿真时,很少能拥有对正在运行的软件的控制。
此外,不能直接将目标的例如64位虚拟寻址空间映射到宿主的32位虚拟寻址空间。如上所述,必须经常为与仿真相关的其它功能保留存储器,因此在宿主具有64位虚拟地址空间的情况下,这种仿真可能很困难。
因此,期望找到存储器映射问题的解决方案,其中仿真环境在被仿真的目标处理器和再现其行为的宿主处理器之间不具有严格对应关系(例如在存在多对多映射的多处理环境中),并且仿真软件知道目标系统的页表映射,但不知道目标系统上执行的任务的本质(例如在不现实的情况下,对目标上运行的软件进行严格控制)。
在本发明之前,没有人认识到这种解决方案,更谈不上开发这种解决方案。
发明内容
考虑到常规方法和结构的上述和其它问题、缺点和不足,本发明的一个目的是提供一种方法和结构,其中当使用另一个多处理系统的虚拟存储器寻址对一个多处理系统进行仿真时,所述方法和结构可以有效地映射被仿真的多处理系统的存储器寻址。
在本发明的第一方面,使用宿主多处理器系统的操作系统的虚拟-实存储器映射机构仿真目标系统的存储器寻址的方法(和系统),包含向模拟页表输入目标虚拟存储器地址以获得宿主虚拟存储器地址。目标系统不注意其运行的软件。
在本发明的第二方面,一种在使用另一个多处理系统的虚拟存储器寻址仿真一个多处理系统时映射被仿真的多处理系统的存储器寻址的方法,包含使用目标虚拟存储器地址访问目标处理器上的本地后援表(1ocallookaside table,LLT),确定LLT中是否存在"命中失误",并且利用LLT中确定的命中失误获得全局页表的锁。
在本发明的第三方面,在通过执行一或多个代表目标系统操作的线程来仿真目标n处理器系统(n≥1)的操作的宿主多处理器系统中,使用宿主多处理器系统操作系统的虚拟-实存储器映射机构仿真目标系统存储器寻址的方法,包含(a)读取目标系统虚拟存储器地址(ATV),(b)映射ATV到目标实地址(ATR),(c)映射ATR到宿主虚拟存储器地址(AHV),和(d)映射AHV到宿主实存储器地址,其中目标系统存储器寻址的仿真被处理成宿主多处理器系统上运行的应用程序。
在本发明的第四方面,仿真目标系统存储器寻址的系统包含将目标系统的目标虚拟存储器地址映射到宿主虚拟存储器地址和页面访问权限的页表,其中目标系统不注意其运行的软件。
在本发明的第五方面,用于使用宿主多处理器系统操作系统的虚拟-实存储器映射机构仿真目标系统存储器寻址的系统包含本地后援表(LLT),其中本地后援表用于在有关目标虚拟存储器地址的信息被存储在LLT的情况下,接收目标虚拟存储器地址并输出宿主虚拟存储器地址和页面访问权限。
在本发明的第六方面,用于在使用另一个多处理系统的虚拟存储器寻址仿真一个多处理系统时映射被仿真的多处理系统的存储器寻址的系统,包含目标处理器上的用于存储目标虚拟存储器地址和与之对应的宿主虚拟存储器地址的本地后援表(LLT),用于使用目标虚拟存储器地址访问LLT的装置,用于确定LLT中是否存在"命中失误"的装置,和用于根据来自确定装置的输入获得全局页表的锁的装置。
在本发明的第七方面,用于通过执行一或多个代表目标系统操作的线程对目标n处理器系统(n≥1)的操作进行多处理器仿真的系统,包含用于使用宿主多处理器系统操作系统的虚拟-实存储器映射机构仿真目标系统存储器寻址的装置,仿真装置包含(a)用于读取目标系统虚拟存储器地址(ATV)的装置,(b)用于映射ATV到目标实地址(ATR)的装置,(c)用于映射ATR到宿主虚拟存储器地址(AHV)的装置,和(d)用于映射AHV到宿主实存储器地址的装置,其中目标系统存储器寻址的仿真被处理成宿主多处理器系统上运行的应用程序。
在本发明的第八方面,信号承载介质实际包含机器可读指令程序,该程序可被数字处理设备运行,以便执行使用宿主多处理器系统操作系统的虚拟-实存储器映射机构仿真目标系统存储器寻址的方法,该方法包含向模拟页表输入目标虚拟存储器地址以获得宿主虚拟存储器地址,其中目标系统不注意其运行的软件。
在本发明的第九方面,信号承载介质实际包含机器可读指令程序,该程序可被数字处理设备运行,以便执行在使用另一个多处理系统的虚拟存储器寻址仿真一个多处理系统时映射被仿真的多处理系统的存储器寻址的方法,该方法包含使用目标虚拟存储器地址访问目标处理器上的本地后援表(LLT),确定LLT中是否存在"命中失误",和根据LLT中确定的命中失误获得页表的锁。
在本发明的第十方面,信号承载介质实际包含机器可读指令程序,该程序可被数字处理设备运行以便执行一个方法,该方法在宿主多处理器系统中通过执行一或多个代表目标系统操作的线程对目标n处理器系统(n≥1)的操作进行仿真,即一个用于使用宿主多处理器系统操作系统的虚拟-实存储器映射机构仿真目标系统存储器寻址的方法,包含(a)读取目标系统虚拟存储器地址(ATV),(b)映射ATV到目标实地址(ATR),(c)映射ATR到宿主虚拟存储器地址(AHV),和(d)映射AHV到宿主实存储器地址,其中目标系统存储器寻址的仿真被处理成宿主多处理器系统上运行的应用程序。
通过本发明独特和非显而易见的方面,当使用另一个多处理系统的虚拟存储器寻址对其进行仿真时,可以高效地映射多处理系统的存储器寻址。
也就是说,本发明提供了针对多处理环境中存储器映射问题的独特解决方案,在这种多处理环境中存在多对多映射,并且没有实际的、针对目标上运行的软件的严格控制。
此外,本发明允许这种仿真高效地映射共享存储器,并且通过不仅仿真操作,而且仿真存储器,访问功能等等来专门加强仿真。实际上,本发明认识到(和认为),在任何映射中,既包括单元到真实单元的映射,又包括访问该单元的特权的映射。本发明考虑到这两个方面。
因此,当使用另一个系统的虚拟存储器寻址仿真一个系统时,本发明可以更有效地和更优地映射被仿真的系统的存储器地址。使用另一个系统的虚拟存储器寻址是本发明的主要特征。
也就是说,存在能够直接针对另一个多处理系统的实地址执行映射的技术。然而,本发明允许使用其它系统的虚拟存储器寻址系统进行仿真。此技术更优于上述直接映射,因为实存储器地址是可能受到限制的物理"事物"(结构)(例如较小的空间/容量)。然而当发生映射时,使用虚拟存储器允许得到更大的空间。于是,目标(客人)的64位虚拟存储器可以被指向(映射)到宿主的64位虚拟存储器,其中如果相同存储器将被映射到实存储器,则可能仅仅有32位。
该方案包含应用程序(而不是内核程序)可得到的全部优点。例如,容易使多个仿真器同时运行。还可以利用调试和/或监视工具验证仿真器的正确性,或调整仿真器的性能。
附图说明
通过下面结合附图对优选实施例进行的详细说明可以更好地理解本发明的上述和其它目的、特性和优点,其中:
图1示出了典型虚拟存储器系统100中的地址映射;
图2示出了现有技术的虚拟地址模拟方案200;
图3示出了需要有关目标系统中进程的知识的映射方案300;
图4示出了将目标实地址映射到宿主虚拟地址的方案400;
图5示出了结构500,该结构图解了目标上操作系统和宿主上操作系统之间的映射功能的划分;
图6示出了结构600,该结构图解了模拟页表610的映射功能;
图7示出了结构700,该结构图解了模拟页表710提供的映射和保护信息;
图8示出了结构800,该结构图解了本地后援表820(LLT)及其与全局页表810的关系;
图9示出了表900,该表900含有全局页表项中的字段,其中包含列出具有项副本的模拟处理器的附加字段;
图10示出了方法1000,该方法包含用于访问页表项的步骤;
图11图解了引入本发明的示例性硬件/信息处理系统1100;以及
图12图解了信号承载介质1200(例如存储介质),用于存储根据本发明的方法的程序的步骤。
具体实施方式
现在参照附图,尤其参照图4-12,其中示出了本发明的方法和结构的优选实施例。
优选实施例
在进行详细描述之前,假定目标的操作系统软件已经具有将目标虚拟地址转换成目标实地址的机构。
这种映射会取决于目标系统上的物理实存储器。假定仿真系统知道存储页表本身的位置。
假定仿真系统是虚拟地址空间合理地大于被仿真目标系统的实地址的进程。这允许为仿真目标的实地址空间而保留宿主的相邻虚拟地址空间块。
于是参照图4,通常且非常简单化地,发明人认识到目标页面映射表410已经存在于目标系统软件中,但是被单独留下,而宿主页面映射表430和宿主实存储器440(涉及宿主上运行的操作系统)在宿主上运行,并且同样保持单独存在。
然而,本发明利用了表410、430和宿主实存储器440(和宿主上运行的操作系统)的能力,但是在目标和宿主系统之间放置目标实地址-宿主虚拟地址映射器420(例如将目标实地址映射到宿主虚拟地址),以充当其间的接口。
于是如图4所示,宿主的操作系统将这个空间中的任何地址转换成其自身的实地址空间中的实地址。
具体地,将计算的操作数地址作为目标虚拟存储器地址输入到目标页面映射表410,而目标页面映射表产生目标实存储器地址。目标实存储器地址被输入到目标实地址-宿主虚拟地址映射器420,而目标实地址-宿主虚拟地址映射器420将目标实存储器地址映射到宿主虚拟地址。宿主虚拟存储器地址被输入到宿主页面映射表430(已经存在并且被宿主连续更新),而宿主页面映射表430产生宿主实存储器地址。宿主实存储器地址被输入到宿主实存储器440,而宿主实存储器440产生操作数值(例如LOAD等等)。(应当注意,STORE会以其它方式操作宿主实存储器440。)
应当注意,在这个方案中,宿主的实地址空间和目标的实地址空间不需匹配。如果宿主的实地址空间小于目标的实地址空间,则通过宿主的虚拟寻址将页面适当地换入和换出。因此,使目标的实地址空间大于宿主的实地址空间不会非常不利,除了可以使目标页表410的尺寸稍大之外。
因此,可以设置目标多处理系统的参数,使得其实存储器尺寸远大于物理上可能的尺寸。
这在图5中被示出,图5还表明目标地址的映射是被仿真的操作系统的功能,因此不需被仿真系统修改或理解。
也就是说,图5的系统500表明,目标操作系统功能500A和宿主操作系统功能500B被模拟实地址-宿主虚拟地址映射器520分隔。图5与图4的不同之处主要在于,目标系统可以具有一定数量的实存储器,于是在被仿真的系统中,可以假设(假定)其不是存在于宿主的实存储器,而是远大于宿主上存在的实存储器的实存储器。于是,当目标的实存储器远大于宿主上的可用(物理上可能的)实存储器时,这种操作是有用的。
于是返回图5,目标页面映射表510会接收目标虚拟存储器地址,并且会将目标的模拟实存储器地址传递到模拟实地址-宿主虚拟地址映射器520。映射器520类似于图4的映射器420,但处理的是目标的实存储器大于宿主上物理可用的实存储器的情况。
应当注意,这种情况(例如目标的实存储器较大)不经常发生,并且不是优选的,因为应用程序可能开始"最大程度地使用虚拟存储器"(其中应用程序不具有足够的空间),并且于是开始最大程度地使用宿主的虚拟存储器,从而导致"系统抖动"(即连续替换系统中的页面)。为了得到最优性能,最好使目标的实存储器的尺寸小于宿主上的可用实存储器的尺寸。然而图5表明,本发明可被用于目标的实存储器大于宿主系统的实存储器的情况。
虽然仿真器不需理解将目标虚拟地址映射到目标实地址的策略,然而它必须访问含有实际映射的表,并且必须知道何时映射被修改。一种进行此操作的方式是如图6所示保存页表的模拟副本610。
除了初始页表中含有的信息之外,模拟页表610可以保存利于将地址映射到宿主虚拟存储器地址的附加信息。这种模拟页表610可以包含图5的目标页面映射表510和模拟目标实地址-宿主虚拟地址映射器520。例如在普通情况下,当宿主虚拟存储器的相邻块映射目标的整个实存储器时,从目标实地址到宿主虚拟地址的映射仅涉及常数偏移的相加。
另外,模拟页表610可以含有关于各个页面的访问权限的信息,其形式使得仿真系统易于加强这些权限。
因此在图6中,表510和映射器520的功能被合并成一个功能模块(仅仅是一个层次,而不是两个层次),这简化了仿真,并且增加了仿真操作速度。也就是说,当转换LOAD和STORE指令(构成指令总数的大约1/3以上)时,分别遍历所有这些表涉及额外的软件指令。于是,通过仅仅遍历一个表,使得进程所需的各个转换的指令数量最小(例如、是5-6个指令)。
应当注意,本发明涉及所有类型的指令,但是针对LOADs和STOREs而优化了,如上所述,LOADs和STOREs构成所有指令集的最大部分。也就是说,性能得到加强,因为本发明优化了这类指令的处理,并且以最高效的方式处理这类指令。
如图7的结构700所示,可以将模拟页表710(例如类似于表610)的功能视作将目标虚拟地址映射到宿主虚拟地址和针对含有该地址的页面的宿主访问特权的功能。
于是,图7示出了图6的更为通用的视图,而且示出了特权信息的映射(和存储与访问)。通常,特权信息是与各个页面(例如各个页面具有大约4000个字节)相关的信息。当存在对一个单元的访问时,引用页表710,因为它含有涉及访问页面的特权信息。因此,页表710中含有的特权信息与各个页面相关。
应当注意,虽然图4-7示出了目标中各个访问所采取的路径,然而必须理解,通常可以一起分析若干地址并且对其进行分类,使得对于若干个访问,模拟页表访问只需进行一次。例如可以在将目标代码转换到宿主代码的优化阶段进行此操作。虽然可以甚至在转换单指令(例如CISC RX指令)时执行这种优化,然而当转换指令组,例如基本块中的指令时,存在更多这样的机会。
现在参照图8的结构800,应当注意,页表可以变得相当大,因为通常执行两个访问(转换)方案中的一个。
例如,当模拟宿主的页表(例如反置页表)时,根据实地址进行索引,以得到虚拟地址。可选地,普通页表得到虚拟地址,并且接着检查多个分层表以得到实地址。
于是,由于这些表变得相当大,信息访问会占用较长的时间,并且使全部信息位于中央位置意味着,得到涉及所有这些访问的信息可能包括从一个处理器到另一个处理器的操作,因此应当高速缓存信息。更具体地,在各个处理器(例如目标处理器)的本地高速缓存信息会更加利于加速整个操作。
此外应当注意,由于多个目标处理器可以同时访问存储器中的单元,因此在另一个处理器需要访问模拟页表内容的同时,一个处理器可能正改变该该模拟页表内容。因此,为了保证正确性,应当使用锁保护所有对页表的访问。然而这使得访问开销相当惊人。
基于上述分析,为了降低开销,图8所示的发明提供了针对页表810中项的本地高速缓存,其中每个模拟处理器有一个高速缓存。这个如图8的本地后援表(LLT)820所示的高速缓存含有仅仅涉及对应目标处理器访问的最近页面的信息。
模拟处理器的线程对LLT进行的访问不需被锁定,因为仿真其它处理器的线程不会访问这个LLT 820。然而,例如在清除全局表格810中项时,可能需要对LLT 820进行更新。由于估计这种情况很少出现,在改变其LLT 820的同时阻塞仿真处理器的线程便足够了。全局表项可以保存具有该项的副本的处理器线程的列表,以便使被中断的线程的数量最少。
因此在操作时,在目标处理器中,目标虚拟存储器地址被产生,并且同时输入到缓冲器("与"门)830和LLT 820(例如,"本地"意味着在目标处理器上)。如果信息存在于LLT 820中,则LLT 820发送宿主虚拟存储器地址和位置(页面)访问权限。
如果LLT 820中存在"命中失误",则信号被发送到缓冲器830,而缓冲器830接着向全局模拟页表810发出信号以请求信息。容量相当大的表810则寻找具有所请求的信息的期望页面,并且向LLT 820发送具有该信息(和特权)的页面,从而更新LL T820。LLT 820接着向请求方发送宿主虚拟存储器地址和单元(页面)访问权限(特权)。
应当注意,如果请求方不具有针对所请求页面的特权,则宿主虚拟存储器地址可以仍然由LLT 820输出,但是不会被返回到请求方。
图9示出了全局页表810中引入这个信息的样本页表项900,并且示出了表本身及其项的细节。应当注意,表900包含有关有效/状态位910、进程ID 920、虚拟地址930、实地址940、保护位950和后援屏蔽960的信息。后援屏蔽960是指示系统中哪些处理器高速缓存了一部分期望信息的位模式。
于是,例如如图9所示,假定存在八个(8个)被模拟的目标处理器0-7,则第一项被高速缓存在处理器1、2和6的LLT中,而第二项仅被高速缓存在处理器3的LLT中。
当LLT 820中的访问发生命中失误时,其原因可以是对应项没有被复制到LLT 820,或者对应页面当前没有被映射到宿主虚拟地址。发生命中失误的仿真器线程通过锁访问全局页表810,以确定属于哪种情况。
如果对应项已经存在于全局表810中,则将其复制到LLT 820,可能会替换其中的一行。如果该项不存在于全局表810中,则模拟目标系统中的页面故障。这导致调用被模拟的机器的操作系统中的页面故障处理程序,并且导致所需的页面被换入。
图10图解了方法1000中的步骤,以描述上述过程。在真实的机器中,页面故障处理通常导致与目标处理器进行上下文切换,以请求页面调度另一个任务以便执行。类似地,在被仿真的机器中,页面故障不阻塞用于仿真导致页面故障的处理器的线程。
参照方法1000(并且参照图8中的结构800),在步骤1005中,对LLT 820进行访问(例如输入目标虚拟存储器地址)。
在步骤1010中,确定LLT 820中是否存在"命中失误"。如果不存在"命中失误"(例如"命中"),则过程完成。
如果存在"命中失误",则在步骤1020中,获得全局页表810的锁。这种锁被用来避免同时存在多个处理器访问(和消除),以保证相关性。
在步骤1025访问页表,并且在步骤1030确定全局页表810中是否存在命中失误。
如果全局页表中不存在命中失误(例如"命中"),则在步骤1035将全局页面项复制到LLT 820。在步骤1040释放页表锁,并且在步骤1045过程结束。应当注意,在本发明的语境中,"结束"表示成功完成转换(例如对于LOAD或STORE等等)。出于同样原因,在高速缓存中仍然会出现命中失误。
相反地,如果在全局页表810中存在"命中失误"(例如在步骤1030中的"是"),则在步骤1050释放页表锁。也就是说,释放锁,使得没有处理器过长时间地"停留"在请求(例如加锁请求)上,因为这样做会束缚住表和LLT资源,并且不允许其它处理器访问这种资源。因此,如果存在命中失误,则释放锁,以允许其它用户相对及时地使用表820。
接着在步骤1055中,被模拟的处理器被复位到检查点状态。也就是说,执行这个步骤,因为被模拟的处理器可能已经自己解决问题(例如脱出页面故障),并且系统需要使模拟的处理器回到其曾经正确工作的最后检查点状态。
在步骤1060,在宿主操作系统中调用页面故障处理程序以确定页面故障,以便从检查点状态开始工作。
在步骤1065,页面故障处理程序试图检索命中失误页面,从而找到命中失误页面,并且在全局页表820中放置命中失误页面。
接着,方法循环回到步骤1005,并且再次执行上述仿真方法。基本上,在这个后续的执行中,会在步骤1030出现"命中"(例如在步骤1030中的"否")。
图11图解了用于本发明的信息处理/计算机系统的典型硬件结构,该系统最好具有至少一个处理器或中央处理单元(CPU)1111。
CPU 1111通过系统总线1112互连到随机访问存储器(RAM)1114,只读存储器(ROM)1116,输入/输出(I/O)适配器1118(用于将诸如磁盘单元1121和磁带驱动器1140的外部设备连接到总线1112),用户接口适配器1122(用于将键盘1124,鼠标1126,扬声器1128,话筒1132和/或其它用户接口设备连接到总线1112),用于将信息处理系统连接到数据处理网络,互联网,内部网,个人局域网(PAN)等等的通信适配器1134,和用于将总线1112连接到显示设备1138和/或打印机的显示适配器1136。
除了如上所述的硬件/软件环境之外,本发明的不同方面包含用于执行上述方法的计算机实现方法。作为一个例子,可以在上述特定环境中实现这个方法。
例如可以通过诸如数字数据处理设备的计算机实现这种方法,以执行机器可读指令序列。这些指令可以驻留在各种信号承载介质中。
这个信号承载介质可以包含CPU 1111内的RAM,例如快速存取存储器。可选地,指令可以被包含在另一个信号承载介质(例如磁性数据存储盘1200(图12))中,可被CPU 1111直接或间接访问。
无论是包含在磁盘1200、计算机/CPU 1111或其它地方,指令可以被存储在各种机器可读数据存储介质中,例如DASD存储器(例如传统"硬盘驱动器"或RAID阵列),磁带,电子只读存储器(例如ROM、EPROM或EEPROM),光学存储装置(例如CD-ROM,WORM,DVD,数字光带等等),纸张"穿孔"卡或其它适当的信号承载介质,包含诸如数字和模拟通信链路和无线通信链路的传输介质。在本发明的图解实施例中,机器可读指令可以包括从诸如"C"等等的语言编译而成的软件对象代码。
于是如上所述,通过本发明,当使用另一个多处理系统的虚拟存储器寻址对其进行仿真时,可以高效地映射多处理系统的存储器寻址。
也就是说,本发明提供了针对多处理环境中存储器映射问题的独特解决方案,在这种多处理环境中存在多对多映射,并且没有实际的、针对目标上运行的软件的严格控制。
此外,本发明允许这种仿真高效地映射共享存储器,并且通过不仅仿真操作,而且仿真存储器,访问功能等等来专门加强仿真。实际上,本发明认识到(和认为),在任何映射中,既包括一个单元到一个真实单元的映射,又包括访问该单元的特权的映射。本发明考虑到这两个方面。
因此,当使用另一个系统的虚拟存储器寻址仿真一个系统时,本发明可以更有效地和更优地映射被仿真的系统的存储器地址。使用另一个系统的虚拟存储器寻址进行仿真是本发明的关键优点。如上所述,当发生映射时,使用虚拟存储器允许得到更大的空间。于是,目标(客人)的64位虚拟存储器可以被定向(映射)到宿主的64位虚拟存储器,其中如果相同存储器将被映射到实存储器,则可能仅仅有32位。
虽然前面根据若干优选实施例描述了本发明,然而本领域的技术人员会认识到,可以通过所附权利要求书的宗旨和范围内的修改实施本发明。
此外应当注意,申请人的意图是涵盖所有权利要求的等价表述,即使以后在审查期间有所修改。
Claims (37)
1.一种使用宿主多处理器系统的操作系统的虚拟-实存储器映射机构仿真目标系统的存储器寻址的方法,包括:
向页表输入目标虚拟存储器地址以得到宿主虚拟存储器地址,其中所述目标系统不注意其运行的软件。
2.如权利要求1所述的方法,其中所述页表包括模拟页表,所述方法还包括:
使用所述宿主虚拟存储器地址从所述模拟页表得到特权信息。
3.如权利要求1所述的方法,还包括:
通过所述页表一起分析若干地址并对其进行分类,使得针对多个访问只进行一次页表访问。
4.如权利要求1所述的方法,还包括:
在所述目标系统上本地高速缓存对应于所述目标虚拟存储器地址的所述宿主虚拟存储器地址。
5.如权利要求1所述的方法,其中还包括:
当对所述页表进行访问时锁定所述页表。
6.如权利要求1所述的方法,还包括:
提供对所述目标处理器的页表项的本地高速缓存。
7.如权利要求6所述的方法,还包括:
在所述多处理器系统中,为所述多处理器系统的每个被模拟的处理器提供一个高速缓存,所述高速缓存含有关于对应目标处理器访问的最近页面的信息。
8.如权利要求6所述的方法,其中模拟目标处理器的线程对本地高速缓存的访问不被锁定,并且仿真所述多处理器系统中其它处理器的线程不访问该本地高速缓存。
9.如权利要求6所述的方法,还包括:
在目标处理器中,同时向缓冲器和本地高速缓存输入目标虚拟存储器地址,其中如果所述目标虚拟存储器地址存在于本地高速缓存中,本地高速缓存向宿主系统发送宿主虚拟存储器地址和单元访问权限。
10.如权利要求9所述的方法,其中如果在本地高速缓存中存在"命中失误",则将一信号发送到所述缓冲器,
所述缓冲器向页表发出信号以请求信息。
11.如权利要求10所述的方法,其中页表找到具有所请求的信息的期望页面,并且向本地高速缓存发送具有所请求的信息和特权的页面,
其中所述本地高速缓存向请求方发送宿主虚拟存储器地址和页面访问权限。
12.如权利要求1所述的方法,还包括:
为所述页表提供包含有关有效/状态位、进程标识、虚拟地址、对应于虚拟地址的实地址、保护位和后援屏蔽的信息的各项,
所述后援屏蔽是指示系统中哪一处理器高速缓存了一部分期望信息的位模式。
13.如权利要求6所述的方法,其中如果对应项已经存在于页表中,则对应项被复制到本地高速缓存中。
14.如权利要求13所述的方法,其中如果项不存在于页表中,则模拟目标系统中的页面故障,以调用被模拟的目标处理器的操作系统中的页面故障处理程序,并且导致所需页面被换入。
15.如权利要求1所述的方法,其中被仿真的指令包括LOAD指令和STORE指令中的至少一个。
16.一种当使用另一个多处理系统的虚拟存储器寻址仿真一个多处理系统时映射被仿真的多处理系统的存储器寻址的方法,包括:
使用目标虚拟存储器地址访问目标处理器上的本地后援表LLT;
确定LLT中是否存在"命中失误";和
根据所述LLT中确定的所述命中失误得到全局页表的锁。
17.如权利要求16所述的方法,还包括:
访问全局页表;和
确定全局页表是否存在"命中失误"。
18.如权利要求17所述的方法,还包括:
当在全局页表中没有确定所述命中失误时,将全局页面项复制到LLT;和
释放页表锁。
19.如权利要求17所述的方法,还包括:
根据页表中确定的所述命中失误,释放页表锁;
将被模拟的目标处理器复位到检查点状态;
调用宿主操作系统中的页面故障处理程序以确定页面故障,以便从检查点状态开始操作;和
检索命中失误页面,并且将命中失误页面放置在全局页表中。
20.如权利要求16所述的方法,其中被仿真的指令包括LOAD指令和STORE指令中的至少一个。
21.在通过执行一或多个代表目标系统操作的线程来仿真目标n处理器系统(n≥1)的操作的宿主多处理器系统中,使用宿主多处理器系统操作系统的虚拟-实存储器映射机构仿真目标系统存储器寻址的方法,所述方法包括:
(a)读取目标系统虚拟存储器地址ATV;
(b)映射所述ATV到目标实地址ATR;
(c)映射所述ATR到宿主虚拟存储器地址AHV;和
(d)映射所述AHV到宿主实存储器地址,
其中目标系统存储器寻址的仿真被处理成宿主多处理器系统上运行的应用程序。
22.一种用于仿真目标系统存储器寻址的系统,包括:
页表,用于将来自目标系统的目标虚拟存储器地址映射到宿主虚拟存储器地址和页面访问权限;
其中所述目标系统不注意其运行的软件。
23.如权利要求22所述的系统,其中所述页表包含用于一起分析若干地址并对其进行分类,使得针对多个访问进行一次模拟页表访问的装置。
24.如权利要求22所述的系统,其中所述目标系统包含用于在所述目标系统上本地高速缓存对应于所述目标虚拟存储器地址的所述宿主虚拟存储器地址的本地后援表LLT。
25.如权利要求22所述的系统,还包括:
锁,用于当对所述页表进行访问时锁定所述页表。
26.如权利要求22所述的系统,还包括:
在所述多处理器系统中,为所述多处理器系统的每个被模拟的处理器提供一个所述的LLT,所述LLT含有关于对应目标处理器访问的最近页面的信息。
27.如权利要求26所述的系统,其中模拟处理器的线程对LLT的所述访问不被锁定,
其中仿真所述多处理器系统中其它处理器的线程不访问LLT。
28.如权利要求26所述的系统,还包括:
缓冲器,用于和LLT接收所述目标虚拟存储器地址基本同时地接收所述目标虚拟存储器地址,
其中如果所述目标虚拟存储器地址存在于LLT中,则LLT向宿主系统发送宿主虚拟存储器地址和单元访问权限。
29.如权利要求26所述的系统,其中如果在LLT中存在"命中失误",则信号被发送到一个缓冲器,
所述缓冲器向页表发出信号以请求该信息。
30.如权利要求29所述的系统,其中所述页表找到具有所请求的信息的期望页面,并且向LLT发送具有该信息和特权的页面,
其中所述LLT向请求方发送宿主虚拟存储器地址和页面访问权限。
31.如权利要求22所述的系统,其中所述页表包含关于有效/状态位、进程标识、虚拟地址、对应于虚拟地址的实地址、保护位和后援屏蔽的信息的各项,
所述后援屏蔽是指示系统中哪些处理器高速缓存了一部分期望信息的位模式。
32.使用宿主多处理器系统的虚拟-实存储器映射机构仿真目标系统的存储器寻址的系统,包括:
本地后援表LLT,用于在有关所述目标虚拟存储器地址的信息被存储在所述LLT中的情况下,接收目标虚拟存储器地址并输出宿主虚拟存储器地址和页面访问权限。
33.如权利要求32所述的系统,还包括:
页表,用于接收所述目标虚拟存储器地址并提供对应于所述目标虚拟存储器地址的所述宿主虚拟存储器地址。
34.如权利要求32所述的系统,其中所述目标系统不注意其运行的软件。
35.如权利要求33所述的系统,其中当在所述LLT中没有找到对应于所述目标虚拟存储器地址的宿主虚拟存储器地址信息时,所述页表使用所述宿主虚拟存储器地址信息更新LLT。
36.当使用另一个多处理系统的虚拟存储器寻址仿真一个多处理系统时映射被仿真的多处理系统的存储器寻址的系统,所述系统包括:
目标处理器上的本地后援表LLT,用于存储目标虚拟存储器地址和与之对应的宿主虚拟存储器地址;
用于使用目标虚拟存储器地址访问所述LLT的装置;
用于确定LLT中是否存在"命中失误"的装置;和
用于根据来自所述确定装置的输入得到全局页表的锁的装置。
37.用于通过执行一或多个代表目标系统操作的线程对目标n处理器系统(n≥1)的操作进行多处理器仿真的系统,包括:
用于使用宿主多处理器系统操作系统的虚拟-实存储器映射机构仿真目标系统存储器寻址的装置,所述仿真装置包括:
(a)用于读取目标系统虚拟存储器地址ATV的装置;
(b)用于映射所述ATV到目标实地址ATR的装置;
(c)用于映射所述ATR到宿主虚拟存储器地址AHV的装置;和
(d)用于映射所述AHV到宿主实存储器地址的装置,
其中目标系统存储器寻址的仿真被处理成宿主多处理器系统上运行的应用程序。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/244,559 US7953588B2 (en) | 2002-09-17 | 2002-09-17 | Method and system for efficient emulation of multiprocessor address translation on a multiprocessor host |
US10/244,559 | 2002-09-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1492323A CN1492323A (zh) | 2004-04-28 |
CN100495341C true CN100495341C (zh) | 2009-06-03 |
Family
ID=31991913
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031570178A Expired - Lifetime CN100495341C (zh) | 2002-09-17 | 2003-09-09 | 多处理器地址转换的高效仿真方法和系统 |
Country Status (3)
Country | Link |
---|---|
US (2) | US7953588B2 (zh) |
JP (1) | JP2004110812A (zh) |
CN (1) | CN100495341C (zh) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030105617A1 (en) * | 2001-12-05 | 2003-06-05 | Nec Usa, Inc. | Hardware acceleration system for logic simulation |
US6895491B2 (en) * | 2002-09-26 | 2005-05-17 | Hewlett-Packard Development Company, L.P. | Memory addressing for a virtual machine implementation on a computer processor supporting virtual hash-page-table searching |
US9058292B2 (en) | 2004-12-29 | 2015-06-16 | Intel Corporation | System and method for one step address translation of graphics addresses in virtualization |
US7886126B2 (en) * | 2005-01-14 | 2011-02-08 | Intel Corporation | Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system |
GB2424092A (en) * | 2005-03-11 | 2006-09-13 | Transitive Ltd | Switching between code translation and execution using a trampoline |
JP4717492B2 (ja) | 2005-04-12 | 2011-07-06 | 富士通株式会社 | マルチコアモデルシミュレータ |
US8225327B2 (en) * | 2005-09-15 | 2012-07-17 | International Business Machines Corporation | Synchronizing access to a shared resource utilizing selective locking |
US20070074000A1 (en) * | 2005-09-28 | 2007-03-29 | Liga Systems, Inc. | VLIW Acceleration System Using Multi-state Logic |
US7444276B2 (en) * | 2005-09-28 | 2008-10-28 | Liga Systems, Inc. | Hardware acceleration system for logic simulation using shift register as local cache |
US20070073999A1 (en) * | 2005-09-28 | 2007-03-29 | Verheyen Henry T | Hardware acceleration system for logic simulation using shift register as local cache with path for bypassing shift register |
US20070129926A1 (en) * | 2005-12-01 | 2007-06-07 | Verheyen Henry T | Hardware acceleration system for simulation of logic and memory |
US20070129924A1 (en) * | 2005-12-06 | 2007-06-07 | Verheyen Henry T | Partitioning of tasks for execution by a VLIW hardware acceleration system |
KR100763846B1 (ko) * | 2005-12-20 | 2007-10-05 | 삼성전자주식회사 | 변환테이블 에뮬레이션을 이용한 데이터 처리 시스템 및데이터 처리 방법 |
US20070150702A1 (en) * | 2005-12-23 | 2007-06-28 | Verheyen Henry T | Processor |
US7840398B2 (en) * | 2006-03-28 | 2010-11-23 | Intel Corporation | Techniques for unified management communication for virtualization systems |
US7555628B2 (en) | 2006-08-15 | 2009-06-30 | Intel Corporation | Synchronizing a translation lookaside buffer to an extended paging table |
US8095773B2 (en) | 2008-02-26 | 2012-01-10 | International Business Machines Corporation | Dynamic address translation with translation exception qualifier |
JP5115332B2 (ja) * | 2008-05-22 | 2013-01-09 | 富士通株式会社 | エミュレーションプログラム、エミュレーション装置およびエミュレーション方法 |
JP5093509B2 (ja) * | 2008-10-28 | 2012-12-12 | 日本電気株式会社 | Cpuエミュレーションシステム、cpuエミュレーション方法及びcpuエミュレーションプログラム |
JP5246014B2 (ja) * | 2009-04-22 | 2013-07-24 | 富士通株式会社 | 仮想化プログラム、仮想化処理方法及び装置 |
US8782434B1 (en) | 2010-07-15 | 2014-07-15 | The Research Foundation For The State University Of New York | System and method for validating program execution at run-time |
US8635385B2 (en) * | 2010-07-16 | 2014-01-21 | Advanced Micro Devices, Inc. | Mechanism to handle peripheral page faults |
CN102467406B (zh) * | 2010-11-09 | 2014-04-16 | 无锡江南计算技术研究所 | 多处理器结构的模拟方法及模拟器 |
US9529729B2 (en) * | 2010-11-16 | 2016-12-27 | International Business Machines Corporation | Location of memory management translations in an emulated processor |
US20120317377A1 (en) * | 2011-06-09 | 2012-12-13 | Alexander Palay | Dual flash translation layer |
CN102308282A (zh) * | 2011-07-20 | 2012-01-04 | 华为技术有限公司 | 多处理器体系结构远端内存访问的模拟方法及模拟器 |
EP3242213A1 (en) * | 2012-05-09 | 2017-11-08 | Intel Corporation | Execution using multiple page tables |
US9122873B2 (en) | 2012-09-14 | 2015-09-01 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
US9069782B2 (en) | 2012-10-01 | 2015-06-30 | The Research Foundation For The State University Of New York | System and method for security and privacy aware virtual machine checkpointing |
KR102123422B1 (ko) * | 2014-09-12 | 2020-06-16 | 인텔 코포레이션 | 가상 컴퓨팅 환경에서의 메모리 및 자원 관리 |
US9898322B2 (en) * | 2015-10-29 | 2018-02-20 | International Business Machines Corporation | Steganographic message passing between a virtual machine and a hypervisor |
US10423537B2 (en) * | 2018-01-31 | 2019-09-24 | Arm Limited | Address space resizing table for simulation of processing of target program code on a target data processing apparatus |
US10769076B2 (en) | 2018-11-21 | 2020-09-08 | Nvidia Corporation | Distributed address translation in a multi-node interconnect fabric |
US11886877B1 (en) | 2021-09-24 | 2024-01-30 | Apple Inc. | Memory select register to simplify operand mapping in subroutines |
Family Cites Families (99)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4392196A (en) * | 1980-08-11 | 1983-07-05 | Harris Corporation | Multi-processor time alignment control system |
US4564903A (en) * | 1983-10-05 | 1986-01-14 | International Business Machines Corporation | Partitioned multiprocessor programming system |
JPS63226740A (ja) | 1986-12-08 | 1988-09-21 | インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン | マルチプロセツサ・コンピユータ・システムの並列シミユレーシヨン方法 |
US5055999A (en) * | 1987-12-22 | 1991-10-08 | Kendall Square Research Corporation | Multiprocessor digital data processing system |
US5155809A (en) * | 1989-05-17 | 1992-10-13 | International Business Machines Corp. | Uncoupling a central processing unit from its associated hardware for interaction with data handling apparatus alien to the operating system controlling said unit and hardware |
US6920416B1 (en) * | 1989-08-28 | 2005-07-19 | Texas Instruments Incorporated | Electronic systems testing employing embedded serial scan generator |
US5307477A (en) * | 1989-12-01 | 1994-04-26 | Mips Computer Systems, Inc. | Two-level cache memory system |
US5179702A (en) * | 1989-12-29 | 1993-01-12 | Supercomputer Systems Limited Partnership | System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling |
JP2839201B2 (ja) * | 1990-07-30 | 1998-12-16 | 株式会社日立製作所 | 仮想計算機システム |
EP0550286A3 (en) * | 1992-01-03 | 1993-11-03 | Amdahl Corp | 2-level multi-processor synchronization protocol |
US5249627A (en) * | 1992-03-13 | 1993-10-05 | Halliburton Company | Method for stimulating methane production from coal seams |
DE4306031C2 (de) | 1993-02-26 | 1995-11-02 | Siemens Ag | Verfahren zum ferngesteuerten Administrieren von Kommunikationssystemen |
US5440610A (en) * | 1993-04-14 | 1995-08-08 | Harris Corporation | Mechanism for controlling operation of telephone metallic loop measurement device in dependence upon rate of settling of telephone line voltage |
JPH0784883A (ja) * | 1993-09-17 | 1995-03-31 | Hitachi Ltd | 仮想計算機システムのアドレス変換バッファパージ方法 |
US5392408A (en) * | 1993-09-20 | 1995-02-21 | Apple Computer, Inc. | Address selective emulation routine pointer address mapping system |
US5983012A (en) * | 1993-09-28 | 1999-11-09 | Bull Hn Information Systems Inc. | Executing programs of a first system on a second system |
US5581705A (en) | 1993-12-13 | 1996-12-03 | Cray Research, Inc. | Messaging facility with hardware tail pointer and software implemented head pointer message queue for distributed memory massively parallel processing system |
US5619664A (en) * | 1994-01-04 | 1997-04-08 | Intel Corporation | Processor with architecture for improved pipelining of arithmetic instructions by forwarding redundant intermediate data forms |
US5481684A (en) * | 1994-01-11 | 1996-01-02 | Exponential Technology, Inc. | Emulating operating system calls in an alternate instruction set using a modified code segment descriptor |
US5440710A (en) * | 1994-03-08 | 1995-08-08 | Exponential Technology, Inc. | Emulation of segment bounds checking using paging with sub-page validity |
US5692193A (en) | 1994-03-31 | 1997-11-25 | Nec Research Institute, Inc. | Software architecture for control of highly parallel computer systems |
US5574922A (en) * | 1994-06-17 | 1996-11-12 | Apple Computer, Inc. | Processor with sequences of processor instructions for locked memory updates |
JPH0887424A (ja) | 1994-09-16 | 1996-04-02 | Toshiba Corp | 電子計算機 |
US5699538A (en) | 1994-12-09 | 1997-12-16 | International Business Machines Corporation | Efficient firm consistency support mechanisms in an out-of-order execution superscaler multiprocessor |
US5692153A (en) | 1995-03-16 | 1997-11-25 | International Business Machines Corporation | Method and system for verifying execution order within a multiprocessor data processing system |
US5582249A (en) * | 1995-08-02 | 1996-12-10 | Halliburton Company | Control of particulate flowback in subterranean wells |
US5833000A (en) * | 1995-03-29 | 1998-11-10 | Halliburton Energy Services, Inc. | Control of particulate flowback in subterranean wells |
US5775425A (en) * | 1995-03-29 | 1998-07-07 | Halliburton Energy Services, Inc. | Control of fine particulate flowback in subterranean wells |
US5787986A (en) * | 1995-03-29 | 1998-08-04 | Halliburton Energy Services, Inc. | Control of particulate flowback in subterranean wells |
US5839510A (en) * | 1995-03-29 | 1998-11-24 | Halliburton Energy Services, Inc. | Control of particulate flowback in subterranean wells |
US5655100A (en) * | 1995-03-31 | 1997-08-05 | Sun Microsystems, Inc. | Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system |
US5751982A (en) * | 1995-03-31 | 1998-05-12 | Apple Computer, Inc. | Software emulation system with dynamic translation of emulated instructions for increased processing speed |
US5619665A (en) | 1995-04-13 | 1997-04-08 | Intrnational Business Machines Corporation | Method and apparatus for the transparent emulation of an existing instruction-set architecture by an arbitrary underlying instruction-set architecture |
US5678032A (en) * | 1995-09-06 | 1997-10-14 | Bull Hn Information Systems Inc. | Method of optimizing the execution of program instuctions by an emulator using a plurality of execution units |
US6047323A (en) * | 1995-10-19 | 2000-04-04 | Hewlett-Packard Company | Creation and migration of distributed streams in clusters of networked computers |
US6091897A (en) * | 1996-01-29 | 2000-07-18 | Digital Equipment Corporation | Fast translation and execution of a computer program on a non-native architecture by use of background translator |
US5768593A (en) * | 1996-03-22 | 1998-06-16 | Connectix Corporation | Dynamic cross-compilation system and method |
US6031992A (en) * | 1996-07-05 | 2000-02-29 | Transmeta Corporation | Combining hardware and software to provide an improved microprocessor |
US5761734A (en) * | 1996-08-13 | 1998-06-02 | International Business Machines Corporation | Token-based serialisation of instructions in a multiprocessor system |
US5832205A (en) * | 1996-08-20 | 1998-11-03 | Transmeta Corporation | Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed |
US6075938A (en) * | 1997-06-10 | 2000-06-13 | The Board Of Trustees Of The Leland Stanford Junior University | Virtual machine monitors for scalable multiprocessors |
US6134515A (en) * | 1997-06-13 | 2000-10-17 | Telefonaktiebolaget Lm Ericsson | Controlling a first type telecommunications switch upon translating instructions for a second type telecommunications switch |
KR100522468B1 (ko) | 1997-07-11 | 2005-10-19 | 트랜스메타 코포레이션 | 타겟 프로세서의 상태를 일시적으로 홀딩하는 장치를 갖는 호스트 마이크로프로세서 |
US6381682B2 (en) * | 1998-06-10 | 2002-04-30 | Compaq Information Technologies Group, L.P. | Method and apparatus for dynamically sharing memory in a multiprocessor system |
JP2002505471A (ja) | 1998-02-26 | 2002-02-19 | サンマイクロシステムズ インコーポレーテッド | 遠隔処理の中断および継続の方法と装置 |
US6289419B1 (en) * | 1998-03-06 | 2001-09-11 | Sharp Kabushiki Kaisha | Consistency control device merging updated memory blocks |
US6075937A (en) * | 1998-03-18 | 2000-06-13 | International Business Machines Corporation | Preprocessing of stored target routines for controlling emulation of incompatible instructions on a target processor and utilizing target processor feedback for controlling non-sequential incompatible instruction emulation |
US6189141B1 (en) * | 1998-05-04 | 2001-02-13 | Hewlett-Packard Company | Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control |
US6397242B1 (en) * | 1998-05-15 | 2002-05-28 | Vmware, Inc. | Virtualization system including a virtual machine monitor for a computer with a segmented architecture |
US6240490B1 (en) * | 1998-07-20 | 2001-05-29 | International Business Machines Corporation | Comprehensive multilevel cache preloading mechanism in a multiprocessing simulation environment |
US6158049A (en) * | 1998-08-11 | 2000-12-05 | Compaq Computer Corporation | User transparent mechanism for profile feedback optimization |
US6289369B1 (en) * | 1998-08-25 | 2001-09-11 | International Business Machines Corporation | Affinity, locality, and load balancing in scheduling user program-level threads for execution by a computer system |
US6738974B1 (en) * | 1998-09-10 | 2004-05-18 | International Business Machines Corporation | Apparatus and method for system resource object deallocation in a multi-threaded environment |
US6430657B1 (en) * | 1998-10-12 | 2002-08-06 | Institute For The Development Of Emerging Architecture L.L.C. | Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock |
US6463582B1 (en) * | 1998-10-21 | 2002-10-08 | Fujitsu Limited | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
EP0997815A3 (en) * | 1998-10-29 | 2004-05-26 | Texas Instruments Incorporated | Interactive translation system and method |
US6351844B1 (en) * | 1998-11-05 | 2002-02-26 | Hewlett-Packard Company | Method for selecting active code traces for translation in a caching dynamic translator |
GB9825102D0 (en) | 1998-11-16 | 1999-01-13 | Insignia Solutions Plc | Computer system |
US6339752B1 (en) * | 1998-12-15 | 2002-01-15 | Bull Hn Information Systems Inc. | Processor emulation instruction counter virtual memory address translation |
US7065633B1 (en) * | 1999-01-28 | 2006-06-20 | Ati International Srl | System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU |
US6826748B1 (en) * | 1999-01-28 | 2004-11-30 | Ati International Srl | Profiling program execution into registers of a computer |
US7941647B2 (en) * | 1999-01-28 | 2011-05-10 | Ati Technologies Ulc | Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination |
US8065504B2 (en) * | 1999-01-28 | 2011-11-22 | Ati International Srl | Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor |
US6341371B1 (en) * | 1999-02-23 | 2002-01-22 | International Business Machines Corporation | System and method for optimizing program execution in a computer system |
US6470492B2 (en) * | 1999-05-14 | 2002-10-22 | Hewlett-Packard Company | Low overhead speculative selection of hot traces in a caching dynamic translator |
US6529862B1 (en) * | 1999-06-30 | 2003-03-04 | Bull Hn Information Systems Inc. | Method and apparatus for dynamic management of translated code blocks in dynamic object code translation |
US6263302B1 (en) * | 1999-10-29 | 2001-07-17 | Vast Systems Technology Corporation | Hardware and software co-simulation including simulating the cache of a target processor |
US6345351B1 (en) * | 1999-11-12 | 2002-02-05 | Telefonaktiebolaget Lm Ericsson(Publ) | Maintenance of speculative state of parallel executed jobs in an information processing system |
US6986128B2 (en) | 2000-01-07 | 2006-01-10 | Sony Computer Entertainment Inc. | Multiple stage program recompiler and method |
US6934832B1 (en) * | 2000-01-18 | 2005-08-23 | Ati International Srl | Exception mechanism for a computer |
US6311773B1 (en) * | 2000-01-28 | 2001-11-06 | Halliburton Energy Services, Inc. | Resin composition and methods of consolidating particulate solids in wells with or without closure pressure |
US6587964B1 (en) * | 2000-02-18 | 2003-07-01 | Hewlett-Packard Development Company, L.P. | Transparent software emulation as an alternative to hardware bus lock |
JP2001249824A (ja) * | 2000-03-02 | 2001-09-14 | Hitachi Ltd | 論理エミュレーションプロセッサおよびそのモジュールユニット |
US6978233B1 (en) * | 2000-03-03 | 2005-12-20 | Unisys Corporation | Method for emulating multi-processor environment |
US6539464B1 (en) * | 2000-04-08 | 2003-03-25 | Radoslav Nenkov Getov | Memory allocator for multithread environment |
US6480845B1 (en) * | 2000-06-14 | 2002-11-12 | Bull Hn Information Systems Inc. | Method and data processing system for emulating virtual memory working spaces |
US6763328B1 (en) * | 2000-06-15 | 2004-07-13 | Bull Hn Information Systems Inc. | Method and data processing system for emulating virtual memory utilizing threads |
US6931636B2 (en) * | 2000-08-08 | 2005-08-16 | Texas Instruments Incorporated | Multiprocessor emulation support using dynamic linking |
US6883165B1 (en) | 2000-09-28 | 2005-04-19 | International Business Machines Corporation | Apparatus and method for avoiding deadlocks in a multithreaded environment |
US20020069402A1 (en) | 2000-10-05 | 2002-06-06 | Nevill Edward Colles | Scheduling control within a system having mixed hardware and software based instruction execution |
US6993754B2 (en) * | 2001-11-13 | 2006-01-31 | Hewlett-Packard Development Company, L.P. | Annotations to executable images for improved dynamic optimization functions |
US6439309B1 (en) * | 2000-12-13 | 2002-08-27 | Bj Services Company | Compositions and methods for controlling particulate movement in wellbores and subterranean formations |
US7085705B2 (en) * | 2000-12-21 | 2006-08-01 | Microsoft Corporation | System and method for the logical substitution of processor control in an emulated computing environment |
US6728846B2 (en) * | 2000-12-22 | 2004-04-27 | Bull Hn Information Systems Inc. | Method and data processing system for performing atomic multiple word writes |
US6728858B2 (en) * | 2001-03-30 | 2004-04-27 | Intel Corporation | Method and apparatus including heuristic for sharing TLB entries |
JP2002312180A (ja) * | 2001-04-11 | 2002-10-25 | Hitachi Ltd | 動的命令変換機能を有するプロセッサシステム、該プロセッサシステムを備えたコンピュータにて実行されるバイナリートランスレーションプログラム及びそのプロセッサシステムを実装した半導体デバイス |
GB2376099B (en) | 2001-05-31 | 2005-11-16 | Advanced Risc Mach Ltd | Program instruction interpretation |
US7047521B2 (en) * | 2001-06-07 | 2006-05-16 | Lynoxworks, Inc. | Dynamic instrumentation event trace system and methods |
US6660693B2 (en) * | 2001-08-08 | 2003-12-09 | Schlumberger Technology Corporation | Methods for dewatering shaly subterranean formations |
US6915513B2 (en) * | 2001-11-29 | 2005-07-05 | Hewlett-Packard Development Company, L.P. | System and method for dynamically replacing code |
US6961806B1 (en) * | 2001-12-10 | 2005-11-01 | Vmware, Inc. | System and method for detecting access to shared structures and for maintaining coherence of derived structures in virtualized multiprocessor systems |
US20030171907A1 (en) * | 2002-03-06 | 2003-09-11 | Shay Gal-On | Methods and Apparatus for Optimizing Applications on Configurable Processors |
US20030182653A1 (en) | 2002-03-22 | 2003-09-25 | Giuseppe Desoli | Systems and methods for verifying correct execution of emulated code via dynamic state verification |
US7107585B2 (en) | 2002-07-29 | 2006-09-12 | Arm Limited | Compilation of application code in a data processing apparatus |
JP2006520034A (ja) | 2003-02-20 | 2006-08-31 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 一連のコンピュータ命令の変換 |
US7093231B2 (en) | 2003-05-06 | 2006-08-15 | David H. Alderson | Grammer for regular expressions |
DE10340081A1 (de) * | 2003-08-30 | 2005-03-31 | Cognis Deutschland Gmbh & Co. Kg | Copolymerisierbare Tenside |
US7735073B1 (en) | 2004-02-28 | 2010-06-08 | Oracle International Corporation | Method and apparatus for data object profiling |
EP1846508A2 (en) * | 2004-12-22 | 2007-10-24 | Fox Chase Cancer Center | Laser-accelerated proton therapy units and superconducting eletromagnetig systems for same |
-
2002
- 2002-09-17 US US10/244,559 patent/US7953588B2/en active Active
-
2003
- 2003-08-26 JP JP2003302167A patent/JP2004110812A/ja active Pending
- 2003-09-09 CN CNB031570178A patent/CN100495341C/zh not_active Expired - Lifetime
-
2011
- 2011-04-13 US US13/085,873 patent/US8719548B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004110812A (ja) | 2004-04-08 |
US8719548B2 (en) | 2014-05-06 |
CN1492323A (zh) | 2004-04-28 |
US7953588B2 (en) | 2011-05-31 |
US20040054518A1 (en) | 2004-03-18 |
US20110191095A1 (en) | 2011-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100495341C (zh) | 多处理器地址转换的高效仿真方法和系统 | |
CN100495342C (zh) | 多处理器存储器一致性的高效仿真方法和系统 | |
Liu | Software performance and scalability: a quantitative approach | |
CN102906691B (zh) | 虚拟机迁移技术 | |
US7844620B2 (en) | Real time data replication for query execution in a massively parallel computer | |
CN100578471C (zh) | 用于在虚拟机之间共享页的方法和系统 | |
Christopher et al. | The Nachos instructional operating system | |
US8201187B2 (en) | Object monitoring system in shared object space | |
US8095512B2 (en) | Managing database resources used for optimizing query execution on a parallel computer system | |
Ousterhout et al. | Medusa: An experiment in distributed operating system structure | |
CN102985910B (zh) | 对无用存储单元收集的系统和方法 | |
US7882499B2 (en) | Caching dynamically compiled code to storage | |
CN101243396B (zh) | 用于在虚拟化环境中支持通用串行总线装置的方法和设备 | |
CN101652746A (zh) | 浮点操作的改善以及相关的改善 | |
CN101233489A (zh) | 具有多个处理器的计算机系统中的自适应进程分派 | |
US6529862B1 (en) | Method and apparatus for dynamic management of translated code blocks in dynamic object code translation | |
CN101876954B (zh) | 一种虚拟机控制系统及其工作方法 | |
CN106066812A (zh) | 基于应用的历史信息管理资源 | |
Flores-Contreras et al. | Performance prediction of parallel applications: a systematic literature review | |
Principe et al. | A distributed shared memory middleware for speculative parallel discrete event simulation | |
Mower | Developing parallel procedures for line simplification | |
Shi et al. | Memory/disk operation aware lightweight VM live migration | |
Lauer | Observations on the development of an operating system | |
Heger | Quantifying IT Stability | |
CN107636624A (zh) | 没有使用的特殊指令的垃圾收集 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20090603 |