CN101689123A - 利用事务存储器硬件来加速虚拟化和仿真 - Google Patents
利用事务存储器硬件来加速虚拟化和仿真 Download PDFInfo
- Publication number
- CN101689123A CN101689123A CN200880022112.XA CN200880022112A CN101689123A CN 101689123 A CN101689123 A CN 101689123A CN 200880022112 A CN200880022112 A CN 200880022112A CN 101689123 A CN101689123 A CN 101689123A
- Authority
- CN
- China
- Prior art keywords
- transactional memory
- memory hardware
- emulation
- code
- hardware
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 47
- 238000012545 processing Methods 0.000 claims abstract description 31
- 230000006870 function Effects 0.000 claims abstract description 5
- 230000008859 change Effects 0.000 claims description 17
- 238000002955 isolation Methods 0.000 claims description 11
- 238000001514 detection method Methods 0.000 claims description 3
- 238000012423 maintenance Methods 0.000 claims 1
- 238000005516 engineering process Methods 0.000 abstract description 8
- 238000004088 simulation Methods 0.000 description 19
- 230000008569 process Effects 0.000 description 17
- 230000009471 action Effects 0.000 description 7
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- 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/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/52—Indexing scheme relating to G06F9/52
- G06F2209/521—Atomic
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Abstract
公开了用于使用事务存储器硬件来加速虚拟化或仿真的各种技术和方法。中央处理单元设置事务存储器硬件。可通过提供支持维护专用存储器状态的设施和原子提交特征的事务存储器硬件来便于代码回插。对特定代码作出的变更被存储在专用状态设施中。回插变更通过尝试使用原子提交特征一次性向存储器提交所有变更来制定。高效的调用返回栈可通过使用事务存储器硬件来提供。存储在专用状态设施中的调用返回高速缓存捕捉在客户机函数执行完成后要返回的主机地址。对该调用返回高速缓存使用基于硬件的直接查找散列表。
Description
背景
仿真是涉及从软件提供中央处理单元的功能的技术。一个优点是仿真是你能够在任何其他类型的处理器上运行针对特定类型的处理器设计的软件。虚拟化是提供以允许不止一个操作系统同时运行的方式对硬件分区的能力的技术。有了虚拟化,物理中央处理单元被分成多个上下文。每一个上下文然后轮流直接在处理器上运行。即使虚拟化产品一般比仿真产品快,但这两种类型的产品当今具有限制可实现的速度的若干复杂性。作为一个示例,在仿真期间处理并发需要可能减缓连续执行的额外同步。作为第二示例,跟踪仿真下的自修改代码通常招致巨大的性能负担。
概述
公开了用于使用事务存储器硬件来加速虚拟化或仿真的各种技术和方法。一个或多个中央处理单元设置有可用于加速虚拟化的事务存储器硬件。该事务存储器硬件具有维护专用状态的设施、呈现来自软件可见的其他中央处理单元的存储器访问的设施、以及对专用状态的原子提交的支持。
在一个实现中,可使用事务存储器硬件来例如便于对精确异常语义的仿真。专用状态可用于使得仿真状态能够保持与体系结构状态不一致并只在特定边界上同步。优化的指令序列使用程序块准确(chunk-accurate)模拟执行以尝试并实现与较慢的指令准确(instruction-accurate)模拟相同的最终效果,该指令准确模拟被隔离在仅在成功地仿真整个程序块的情况下提交的专用状态中。
在另一实现中,可通过提供事务存储器硬件上的隔离的专用状态并将执行仿真的主机的栈存储在该隔离的专用状态中来便于状态隔离。
在又一实现中,自修改代码可使用事务存储器硬件来检测。由中央处理单元执行的存储器访问可由软件监视以检测被仿真的客户机(guest)已对其自己的代码序列作出自修改。
事务存储器硬件在一个实现中可用于通过利用原子提交特征来便于多线程环境中的分派表更新。提供使用存储在主存储器中的分派表来将客户机程序计数器转换成主机程序计数器的仿真器。访问分派表以查看该分派表是否包含对应于特定客户机程序计数器的主机程序计数器。当未找到主机程序计数器时,可使用事务存储器硬件来在表中引入新的映射。
在又一实现中,可通过提供支持维护专用存储器状态的设施和原子提交特征的事务存储器硬件来便于代码回插(code backpatching)。对特定代码作出的变更被存储在专用状态设施中。回插变更通过尝试使用原子提交特征一次性地向存储器提交所有变更来制定。
高效的调用返回高速缓存在一个实现中可通过使用事务存储器硬件来提供。存储在专用状态设施中的调用返回高速缓存捕捉要在客户机函数执行完成后要返回的主机地址。对该调用返回高速缓存使用基于硬件的直接查找散列表。
提供本概述以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。本概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
附图简述
图1是一个实现的计算机系统的图示。
图2是在图1的计算机系统上操作的一个实现的虚拟化/仿真应用程序的图示。
图3是图1的系统的一个实现的处理流程图,其示出在使用事务存储器硬件来便于对精确异常语义的仿真时所涉及的各阶段。
图4是图1的系统的一个实现的示图,其示出了运行程序块准确模拟。
图5是图1的系统的一个实现的示图,其示出了在程序块准确模拟引发异常后运行指令准确模拟。
图6是图1的系统的一个实现的处理流程图,其示出在使用事务存储器硬件来便于状态隔离时所涉及的各阶段。
图7是图1的系统的一个实现的处理流程图,其示出在使用事务存储器硬件来便于对仿真下的自修改代码进行检测时所涉及的各阶段。
图8是图1的系统的一个实现的处理流程图,其示出在使用事务存储器硬件来便于多线程环境中的分派表更新时所涉及的各阶段。
图9是图1的系统的一个实现的处理流程图,其示出在使用事务存储器硬件来便于多线程环境中的代码回插时所涉及的各阶段。
图10是图1的系统的一个实现的处理流程图,其示出在使用事务存储器硬件来便于高效的调用返回高速缓存时所涉及的各阶段。
详细描述
此处的技术和方法可以在虚拟化或仿真系统的一般上下文中描述,但本技术和方法也用作除此之外的其它目的。在另一实现中,该系统可包括使用事务存储器硬件来加速虚拟化和/或仿真的一个或多个中央处理器。
如图1所示,用于实现本系统的一个或多个部分的示例性计算机系统包括诸如计算设备100等计算设备。在其最基本的配置中,计算设备100通常包括至少一个中央处理单元102和存储器104。这些中央处理单元各自具有事务存储器硬件119,该事务存储器硬件包括维护专用状态120的设施、呈现来自软件可见的其他中央处理单元的存储器访问124的设施、以及对专用状态的原子提交126的支持。专用状态120对于其他中央处理单元是不可见的直到其被所属处理单元显式地原子提交。专用状态120也是可丢弃的。当中央处理丢弃专用状态时,其存储器视图回退到当前体系结构状态。软件可见的存储器访问124使得在中央处理单元上运行的软件能检测另一中央处理单元正在访问特定的存储单元。原子提交特征126使得中央处理单元的专用状态能作为原子提交的一部分的单元原子地进入主存储器系统。这些事务存储器硬件特征在各种情况下用于增强虚拟化和/或仿真,如在此处更详细地描述的。
取决于计算设备的确切配置和类型,存储器104可以是易失性的(如RAM)、非易失性的(如ROM、闪存等)或是两者的某种组合。该最基本配置在图1中由虚线106来示出。
另外,设备100还可具有附加特征/功能。例如,设备100还可包含附加存储(可移动和/或不可移动),包括但不限于磁盘、光盘或磁带。这样的附加存储在图1中由可移动存储108和不可移动存储110示出。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。存储器104、可移动存储108和不可移动存储110都是计算机存储介质的示例。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光存储、磁带盒、磁带、磁盘存储或其它磁存储设备、或者可用于存储所需信息并且可由设备1 00访问的任何其它介质。任何这样的计算机存储介质都可以是设备100的一部分。
计算设备100包括允许计算设备100与其它计算机/应用程序115进行通信的一个或多个通信连接114。设备100还可以具有诸如键盘、鼠标、笔、语音输入设备、触摸输入设备等输入设备112。还可以包括诸如显示器、扬声器、打印机等输出设备111。这些设备在本领域中公知且无需在此处详细讨论。在一实现中,计算设备100包括虚拟化/仿真应用程序200。虚拟化/仿真应用程序200将在图2中更详细地描述。
现在转向图2并继续参考图1,示出了在计算设备100上运行的虚拟化/仿真应用程序200。虚拟化/仿真应用程序200是驻留在计算设备100上的应用程序之一。然而,可以理解,虚拟化/仿真应用程序200可另选地或另外地被具体化为一个或多个计算机上的计算机可执行指令和/或图1所示的不同变型。另选地或另外地,虚拟化/仿真应用程序200的一个或多个部分可以是系统存储器104的一部分、可以在其它计算机和/或应用程序115上、或可以是计算机软件领域的技术人员能想到的其它此类变型。
虚拟化/仿真应用程序200包括负责执行在此描述的部分或全部技术的程序逻辑204。程序逻辑204包括用于使用事务存储器硬件来加速虚拟化或仿真的逻辑206(如以下参考图3所描述的);用于使用事务存储器硬件来便于对精确异常语义的仿真的逻辑208(如以下参考图3-5所描述的);用于使用事务存储器硬件来便于状态隔离的逻辑210(如以下参考图6所描述的);用于使用事务存储器硬件来便于对自修改代码的检测的逻辑212(如以下参考图7所描述的);用于使用事务存储器硬件来便于分派表更新的逻辑214(如以下参考图8所描述的);用于使用事务存储器硬件来便于代码回插的逻辑216(如以下参考图9所描述的);用于使用事务存储器硬件来便于高效的调用返回高速缓存的逻辑218(如以下参考图10所描述的)以及用于操作应用程序的其他逻辑220。在一个实现中,程序逻辑204可用来通过编程,如使用对程序逻辑204中的过程的单一调用而从另一程序调用。
现在转向图3-10并继续参考图1-2,更详细地描述了用于实现虚拟化/仿真应用程序200的一个或多个实现的各阶段。在某些实现中,图3-10的过程至少部分地在计算设备100的操作逻辑中实现。图3示出了在使用事务存储器硬件来便于对精确异常语义的仿真时所涉及的各阶段的一个实现。该过程在起始点240处开始,在那里使用事务存储器硬件中的不可见且可丢弃的专用状态来使得仿真状态能够保持与体系结构状态不一致并仅在粗略边界上同步(阶段242)。该系统使用程序块准确模拟来运行优化的指令序列(阶段244)如果没有出现异常(判定点246),则系统能够以一般比可能使用完全指令准确模拟更好的性能完成该模拟。然而,如果出现异常(判定点246),则丢弃对存储器的待决写入(阶段248)。将仿真处理器状态回退到上一个同步点(阶段250)。使用指令准确模拟来保守地再次执行特定代码序列以使得在第二次遇到异常时存在正确的体系结构状态(阶段252)。在体系结构状态恰好与真实状态相同的一个实现中,被仿真的非虚拟系统将介入,这对于正确的系统级仿真是重要的。该过程在图4和5的示图中更详细地示出。该过程在结束点254处结束。
现在转向图4和5,更详细地示出了使用事务存储器硬件来便于仿真环境中对精确的异常语义的仿真。图4是示出运行程序块准确模拟的一个实现的示图270。该程序块准确模拟运行优化的指令序列以尝试并实现与原始的客户机指令序列相同的最终效果,但是用比使用指令准确模拟可能的方式更优的方式。程序块准确模拟使得仿真状态能保持与体系结构状态不一致并仅在粗略边界上同步,这基本上是模拟的起始点和结束点。如果在程序块准确模拟期间的任何时刻遇到异常,则执行图5的示图290上所示的指令准确模拟。该指令准确模拟保守地运行代码序列以确保在第二次遇到异常时存在正确的体系结构状态。
图6示出了在使用事务存储器硬件来便于状态隔离时所涉及的各阶段的一个实现。该过程在起始点310处开始,在那里提供事务存储器硬件上的隔离专用状态(阶段312)。在仿真环境中,进行仿真的主机将其栈存储在该隔离的专用状态中(阶段314)。该隔离的专用状态使得主机能够将栈保持在缓冲模式中,这允许该主机避免昂贵的运行时检查。该隔离的专用状态是可丢弃的。这意味着当中央处理单元丢弃专用状态时,其存储器视图回退到当前体系结构状态。被仿真的客户机无法访问隔离的专用状态(阶段316)。该过程在结束点318处结束。
图7示出了在使用事务存储器硬件来便于对自修改代码的检测时所涉及的各阶段的一个实现。该过程在起始点340处开始,在那里使用事务存储器硬件来提供软件可见存储器访问(阶段342)。系统监视由中央处理单元执行的存储器访问以检测所仿真的客户机已修改其自己的代码序列(阶段344)。甚至可检测来自单独的中央处理单元的存储器访问。系统然后基于检测来采取适当的动作(阶段346)。这些适当的动作的若干非限制性示例可包括重新编译代码序列以结合客户机所作出的自修改、引发异常和/或停止执行。适当动作的另一非限制性示例可包括切换至解释仅针对正在自修改的代码的一部分的机器指令(而非编译)。在一个实现中,该方法会比编译慢,但非常准确并且恰如自修改代码所意图的那样工作。其它适当的动作也是可能的。该过程在结束点348处结束。
图8示出了在使用事务存储器硬件来便于多线程环境中的分派表更新时所涉及的各阶段的一个实现。该过程在起始点370处开始,在那里使用事务存储器硬件来提供原子提交特征(阶段372)。系统提供使用存储在主存储器中的分派表来将客户机程序计数器转换成主机程序计数器的仿真器(阶段374)。系统访问分派表以查看其是否包含对应于给定客户机程序计数器的主机程序计数器(阶段376)。如果未找到主机程序计数器,则系统编译客户机代码的关联块(阶段378)。对分派表的更新在专用存储器中执行,并且当完全执行更新时,将该更新原子地提交给主存储器。利用原子提交特征,系统以具有最少开销的原子方式来更新分派表(阶段380)。该过程在结束点382处结束。
图9示出了在使用事务存储器硬件来便于多线程环境中的代码回插时所涉及的各阶段的一个实现。该过程在起始点400处开始,在那里使用事务存储器硬件来提供不可见的专用状态和原子提交设施(阶段402)。系统将对代码作出的变更存储在不可见的专用状态中(阶段404)。对代码作出的变更可从一个或多个线程接收。通过尝试使用原子提交一次性向存储器提交所有变更来制定回插变更(阶段406)。如果另一线程正试图执行需要变更的代码,则提交将失败并且回插过程通过再次尝试向存储器提交所有变更来重新执行(阶段408)。通过使用这一具有事务存储器功能的回插过程,在多线程环境中启用安全的动态代码修改(阶段410)。该过程在结束点412处结束。
图10示出了在使用事务存储器硬件来便于高效的调用返回高速缓存时所涉及的各阶段的一个实现。该过程在起始点430处开始,在那里使用事务存储器硬件来提供不可见且可丢弃的专用状态(阶段432)。系统提供存储在专用状态设施中的、捕捉在客户机函数执行完成后要返回的主机地址的调用返回高速缓存(阶段434)。对调用返回高速缓存使用基于硬件的直接查找散列表(阶段436)。在一个实现中,该调用返回高速缓存支持分派表中的比普通查找更高效的查找。该过程在结束点438处结束。
尽管用对结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。落入在此所述和/或所附权利要求所描述的实现的精神的范围内的所有等效方案、更改和修正都期望受到保护。
例如,计算机软件领域普通技术人员将认识到,此处所讨论的示例可以在一个或多个计算机上不同地组织来包括比这些示例中所描绘的更少或更多选项或特征。
Claims (20)
1.一种用于使用事务存储器硬件来便于代码回插的方法,所述方法包括以下步骤:
将对特定代码作出的变更存储在中央处理单元上的事务存储器硬件的专用状态设施中(404);以及
通过尝试使用所述事务存储器硬件的原子提交特征一次性向存储器提交所有变更来制定回插变更(406)。
2.如权利要求1所述的方法,其特征在于,还包括:
如果另一线程正试图执行需要变更的特定代码,则提交所述变更的尝试将失败(408)。
3.如权利要求2所述的方法,其特征在于,还包括:
再次尝试使用所述原子提交特征来一次性向存储器提交所有变更(408)。
4.如权利要求1所述的方法,其特征在于,所述对特定代码作出的变更从不同的线程接收(404)。
5.如权利要求1所述的方法,其特征在于,通过使用所述原子提交特征来制定回插变更,在多线程环境中启用动态代码修改(410)。
6.如权利要求1所述的方法,其特征在于,所述动态代码修改安全地执行(410)。
7.一种具有用于使得计算机执行如权利要求1所述的步骤的计算机可执行指令的计算机可读介质(200)。
8.一种系统,包括:
中央处理单元(102),所述中央处理单元包括用于加速仿真的、具有维护专用状态的设施的事务存储器硬件;
存储在所述专用状态设施中的调用返回高速缓存,其可用于捕捉在客户机函数执行完成后要返回的主机地址(434);以及
基于硬件的直接查找散列表,可用于对所述调用返回高速缓存使用(436)。
9.如权利要求8所述的系统,其特征在于,所述调用返回高速缓存支持分派表中的比普通查找更高效的查找(438)。
10.一种用于使用事务存储器硬件来加速仿真的方法,所述方法包括以下步骤:
访问具有可用于加速仿真的事务存储器硬件的中央处理单元(206);
使用所述事务存储器硬件来加速对仿真程序的精确异常语义的仿真(208);以及
使用所述事务存储器硬件来加速对于仿真程序的状态隔离(210)。
11.如权利要求10所述的方法,其特征在于,还包括:
使用所述事务存储器硬件来便于对仿真程序的自修改代码的检测(212)。
12.如权利要求10所述的方法,其特征在于,还包括:
使用所述事务存储器硬件来便于对于仿真程序的分派表更新(214)。
13.如权利要求10所述的方法,其特征在于,还包括:
使用所述事务存储器硬件来便于对于仿真程序的代码回插(216)。
14.如权利要求10所述的方法,其特征在于,还包括:
使用所述事务存储器硬件来便于由仿真程序使用的高效调用返回高速缓存(218)。
15.如权利要求10所述的方法,其特征在于,所述事务存储器硬件支持维护专用状态(120)的设施。
16.如权利要求15所述的方法,其特征在于,所述专用状态对于其他中央处理单元是不可见的(242)。
17.如权利要求15所述的方法,其特征在于,所述专用状态是可丢弃的(242)。
18.如权利要求10所述的方法,其特征在于,所述事务存储器硬件使得软件能够监视由其他中央处理单元执行的存储器访问(344)。
19.如权利要求10所述的方法,其特征在于,所述事务存储器硬件支持原子提交特征(372)。
20.一种具有用于使得计算机执行如权利要求10所述的步骤的计算机可执行指令的计算机可读介质(200)。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/823,236 US8176253B2 (en) | 2007-06-27 | 2007-06-27 | Leveraging transactional memory hardware to accelerate virtualization and emulation |
US11/823,236 | 2007-06-27 | ||
PCT/US2008/067147 WO2009002756A2 (en) | 2007-06-27 | 2008-06-16 | Leveraging transactional memory hardware to accelerate virtualization and emulation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101689123A true CN101689123A (zh) | 2010-03-31 |
CN101689123B CN101689123B (zh) | 2013-06-12 |
Family
ID=40162122
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200880022112.XA Active CN101689123B (zh) | 2007-06-27 | 2008-06-16 | 利用事务存储器硬件来加速虚拟化和仿真 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8176253B2 (zh) |
EP (1) | EP2176749A4 (zh) |
JP (1) | JP2010532054A (zh) |
CN (1) | CN101689123B (zh) |
TW (1) | TWI471803B (zh) |
WO (1) | WO2009002756A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678126A (zh) * | 2012-12-25 | 2014-03-26 | 卡巴斯基实验室封闭式股份公司 | 用于提高应用仿真加速的效率的系统和方法 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9043553B2 (en) | 2007-06-27 | 2015-05-26 | Microsoft Technology Licensing, Llc | Leveraging transactional memory hardware to accelerate virtualization and emulation |
US8266387B2 (en) * | 2007-06-27 | 2012-09-11 | Microsoft Corporation | Leveraging transactional memory hardware to accelerate virtualization emulation |
US8356166B2 (en) * | 2009-06-26 | 2013-01-15 | Microsoft Corporation | Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers |
US8370577B2 (en) | 2009-06-26 | 2013-02-05 | Microsoft Corporation | Metaphysically addressed cache metadata |
US8250331B2 (en) | 2009-06-26 | 2012-08-21 | Microsoft Corporation | Operating system virtual memory management for hardware transactional memory |
US8161247B2 (en) * | 2009-06-26 | 2012-04-17 | Microsoft Corporation | Wait loss synchronization |
US8489864B2 (en) | 2009-06-26 | 2013-07-16 | Microsoft Corporation | Performing escape actions in transactions |
US8812796B2 (en) | 2009-06-26 | 2014-08-19 | Microsoft Corporation | Private memory regions and coherence optimizations |
US8229907B2 (en) * | 2009-06-30 | 2012-07-24 | Microsoft Corporation | Hardware accelerated transactional memory system with open nested transactions |
US8402218B2 (en) * | 2009-12-15 | 2013-03-19 | Microsoft Corporation | Efficient garbage collection and exception handling in a hardware accelerated transactional memory system |
US9092253B2 (en) * | 2009-12-15 | 2015-07-28 | Microsoft Technology Licensing, Llc | Instrumentation of hardware assisted transactional memory system |
US8533440B2 (en) * | 2009-12-15 | 2013-09-10 | Microsoft Corporation | Accelerating parallel transactions using cache resident transactions |
US8539465B2 (en) | 2009-12-15 | 2013-09-17 | Microsoft Corporation | Accelerating unbounded memory transactions using nested cache resident transactions |
US10831489B2 (en) * | 2018-08-23 | 2020-11-10 | International Business Machines Corporation | Mechanism for completing atomic instructions in a microprocessor |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5428761A (en) | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
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 |
AU734115B2 (en) | 1997-05-08 | 2001-06-07 | Nvidia Corporation | Hardware accelerator for an object-oriented programming language |
US5940838A (en) | 1997-07-11 | 1999-08-17 | International Business Machines Corporation | Parallel file system and method anticipating cache usage patterns |
US6360231B1 (en) | 1999-02-26 | 2002-03-19 | Hewlett-Packard Company | Transactional memory for distributed shared memory multi-processor computer systems |
US7058932B1 (en) | 1999-04-19 | 2006-06-06 | Unisys Corporation | System, computer program product, and methods for emulation of computer programs |
US7181608B2 (en) | 2000-02-03 | 2007-02-20 | Realtime Data Llc | Systems and methods for accelerated loading of operating systems and application programs |
AU2001255456A1 (en) | 2000-04-18 | 2001-10-30 | Sun Microsystems, Inc. | Concurrent shared object implemented using a linked-list with amortized node allocation |
US7620731B1 (en) | 2001-02-21 | 2009-11-17 | Microsoft Corporation | Isolated persistent storage |
US6775727B2 (en) | 2001-06-23 | 2004-08-10 | Freescale Semiconductor, Inc. | System and method for controlling bus arbitration during cache memory burst cycles |
WO2003060705A2 (en) | 2002-01-11 | 2003-07-24 | Sun Microsystems, Inc. | Lock-free implementation of dynamic-sized shared data structure |
US7281017B2 (en) | 2002-06-21 | 2007-10-09 | Sumisho Computer Systems Corporation | Views for software atomization |
US7685583B2 (en) | 2002-07-16 | 2010-03-23 | Sun Microsystems, Inc. | Obstruction-free mechanism for atomic update of multiple non-contiguous locations in shared memory |
US7020746B2 (en) * | 2003-01-28 | 2006-03-28 | Microsoft Corporation | Method and system for an atomically updated, central cache memory |
US6938130B2 (en) * | 2003-02-13 | 2005-08-30 | Sun Microsystems Inc. | Method and apparatus for delaying interfering accesses from other threads during transactional program execution |
US7089374B2 (en) * | 2003-02-13 | 2006-08-08 | Sun Microsystems, Inc. | Selectively unmarking load-marked cache lines during transactional program execution |
US7376949B2 (en) | 2003-10-01 | 2008-05-20 | Hewlett-Packard Development Company, L.P. | Resource allocation and protection in a multi-virtual environment |
US20050086446A1 (en) | 2003-10-04 | 2005-04-21 | Mckenney Paul E. | Utilizing software locking approach to execute code upon failure of hardware transactional approach |
US7526616B2 (en) | 2004-03-22 | 2009-04-28 | International Business Machines Corporation | Method and apparatus for prefetching data from a data structure |
US7617438B2 (en) | 2004-04-15 | 2009-11-10 | International Business Machines Corporation | Method and apparatus for supporting checksum offload in partitioned data processing systems |
US7856537B2 (en) | 2004-09-30 | 2010-12-21 | Intel Corporation | Hybrid hardware and software implementation of transactional memory access |
US7885921B2 (en) * | 2004-11-18 | 2011-02-08 | International Business Machines Corporation | Managing atomic updates on metadata tracks in a storage system |
US7984248B2 (en) | 2004-12-29 | 2011-07-19 | Intel Corporation | Transaction based shared data operations in a multiprocessor environment |
US7444276B2 (en) | 2005-09-28 | 2008-10-28 | Liga Systems, Inc. | Hardware acceleration system for logic simulation using shift register as local cache |
US7809903B2 (en) * | 2005-12-15 | 2010-10-05 | Intel Corporation | Coordinating access to memory locations for hardware transactional memory transactions and software transactional memory transactions |
US7899661B2 (en) | 2006-02-16 | 2011-03-01 | Synopsys, Inc. | Run-time switching for simulation with dynamic run-time accuracy adjustment |
US7930695B2 (en) * | 2006-04-06 | 2011-04-19 | Oracle America, Inc. | Method and apparatus for synchronizing threads on a processor that supports transactional memory |
US7617421B2 (en) * | 2006-07-27 | 2009-11-10 | Sun Microsystems, Inc. | Method and apparatus for reporting failure conditions during transactional execution |
US7865885B2 (en) * | 2006-09-27 | 2011-01-04 | Intel Corporation | Using transactional memory for precise exception handling in aggressive dynamic binary optimizations |
US8522223B2 (en) * | 2006-11-22 | 2013-08-27 | Intel Corporation | Automatic function call in multithreaded application |
US9043553B2 (en) | 2007-06-27 | 2015-05-26 | Microsoft Technology Licensing, Llc | Leveraging transactional memory hardware to accelerate virtualization and emulation |
US8266387B2 (en) | 2007-06-27 | 2012-09-11 | Microsoft Corporation | Leveraging transactional memory hardware to accelerate virtualization emulation |
-
2007
- 2007-06-27 US US11/823,236 patent/US8176253B2/en active Active
-
2008
- 2008-06-11 TW TW97121733A patent/TWI471803B/zh not_active IP Right Cessation
- 2008-06-16 EP EP08771215A patent/EP2176749A4/en not_active Ceased
- 2008-06-16 JP JP2010514969A patent/JP2010532054A/ja active Pending
- 2008-06-16 CN CN200880022112.XA patent/CN101689123B/zh active Active
- 2008-06-16 WO PCT/US2008/067147 patent/WO2009002756A2/en active Application Filing
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678126A (zh) * | 2012-12-25 | 2014-03-26 | 卡巴斯基实验室封闭式股份公司 | 用于提高应用仿真加速的效率的系统和方法 |
CN103678126B (zh) * | 2012-12-25 | 2016-08-17 | 卡巴斯基实验室封闭式股份公司 | 用于提高应用仿真加速的效率的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101689123B (zh) | 2013-06-12 |
US8176253B2 (en) | 2012-05-08 |
EP2176749A2 (en) | 2010-04-21 |
EP2176749A4 (en) | 2013-03-13 |
US20090006751A1 (en) | 2009-01-01 |
JP2010532054A (ja) | 2010-09-30 |
TWI471803B (zh) | 2015-02-01 |
TW200907811A (en) | 2009-02-16 |
WO2009002756A3 (en) | 2009-05-14 |
WO2009002756A2 (en) | 2008-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101689123B (zh) | 利用事务存储器硬件来加速虚拟化和仿真 | |
CN101689154B (zh) | 利用事务存储器硬件来加速虚拟化和仿真 | |
TWI499979B (zh) | 以交換式記憶體為手段來加速虛擬化或仿真化之方法、系統、及電腦可讀取媒體 | |
Friedman et al. | A persistent lock-free queue for non-volatile memory | |
JP5780243B2 (ja) | スケジューリング方法、およびマルチコアプロセッサシステム | |
JP2012530960A (ja) | 無制限トランザクショナルメモリ(utm)システムの最適化 | |
CN102289387B (zh) | 软件事务存储器中的动作框架 | |
CN102693188A (zh) | 用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置 | |
US9766926B2 (en) | Method and system for optimizing parallel program execution based on speculation that an object written to is not shared | |
CN103049305A (zh) | 针对龙芯多核cpu模拟的动态代码转换的多线程化方法 | |
Wang et al. | Memento: architectural support for ephemeral memory management in serverless environments | |
Wang et al. | Reg: An ultra-lightweight container that maximizes memory sharing and minimizes the runtime environment | |
JP2015008008A (ja) | 無制限トランザクショナルメモリ(utm)システムの最適化 | |
Xu et al. | MANA-2.0: A future-proof design for transparent checkpointing of MPI at scale | |
Tripathi et al. | Beehive: A framework for graph data analytics on cloud computing platforms | |
US8589621B2 (en) | Object persistency | |
Chajed | Verifying an I/O-concurrent file system | |
Carouge et al. | A scalable lock-free universal construction with best effort transactional hardware | |
Krylov | Ahead-of-Time compilation in a language-independent environment | |
Vieira | Transactional Memory for Heterogeneous CPU-GPU Systems | |
Liao | TAI: threaded asynchronous I/O library for performance and portability | |
Wevers et al. | Parallel Transaction Processing in Functional Languages | |
Blake | A Hardware/Software Approach for Alleviating Scalability Bottlenecks in Transactional Memory Applications | |
JP2017004570A (ja) | 無制限トランザクショナルメモリ(utm)システムの最適化 | |
Kotselidis | Exploiting distributed software transactional memory |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20170829 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |
|
TR01 | Transfer of patent right |