CN101194230B - 具有对共享资源的访问协调的转换程序代码的方法和设备 - Google Patents

具有对共享资源的访问协调的转换程序代码的方法和设备 Download PDF

Info

Publication number
CN101194230B
CN101194230B CN2006800200054A CN200680020005A CN101194230B CN 101194230 B CN101194230 B CN 101194230B CN 2006800200054 A CN2006800200054 A CN 2006800200054A CN 200680020005 A CN200680020005 A CN 200680020005A CN 101194230 B CN101194230 B CN 101194230B
Authority
CN
China
Prior art keywords
theme
local
token
address
shared resource
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 - Fee Related
Application number
CN2006800200054A
Other languages
English (en)
Other versions
CN101194230A (zh
Inventor
保罗·诺尔斯
加文·巴拉克劳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
IBM United Kingdom Ltd
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN101194230A publication Critical patent/CN101194230A/zh
Application granted granted Critical
Publication of CN101194230B publication Critical patent/CN101194230B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/52Indexing scheme relating to G06F9/52
    • G06F2209/522Manager

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

一种动态二进制翻译器(19),将主题程序(17)翻译成目标处理器(13)上的目标代码(21)。对于多线程主题环境,翻译器19提供对每个线程(171、172)共用的全局令牌(501),以及一个或多个系列的本地数据(502),全局令牌和本地数据一起被采用以协调对作为共享资源的存储器(18)的访问。调整全局令牌(501)允许每个线程中的本地数据结构(502a、502b)检测对共享资源(18)的潜在干扰。

Description

具有对共享资源的访问协调的转换程序代码的方法和设备
技术领域
本发明总体上涉及计算机和计算机软件领域,更具体地说,涉及在例如转换程序代码的代码翻译器、仿真器和加速器中使用的程序代码转换方法和设备。
背景技术
在嵌入式和非嵌入式CPU两者中都具有主要指令集架构(ISA,大型软件因此而存在),如果它们可以透明地访问相关的软件,则可“加速”性能或被“翻译”到能够提供更好的性价比的各种高性能处理器。人们还发现主要的CPU架构被锁定到其ISA,并且不能提高性能或市场占有。这样的CPU可从面向软件的处理器联合架构中受益。
例如,在公开的申请WO00/22521中公开了用于方便这样的加速、翻译和联合架构能力的程序代码转换方法和设备,该申请的公开合并于此,以资参考。
本发明的实施例具体地与程序代码转换有关,其中,主题程序(subjectprogram)被转换成可由目标处理器在目标计算平台中执行的目标代码。
与在主题处理器上本地执行主题程序相比,执行程序代码转换必然带来转换处理中的开销。通常期望减少转换处理中的这种开销。另外,通常还期望产生在目标处理器上正确和高效执行的目标代码。
线程是可以独立运行的程序的一部分,并且与程序的其他部分并发。在多线程处理环境中,多于一个线程(或者多于一个处理器)访问诸如存储器的共享资源。通常需要协调访问共享资源的机制,以便避免诸如冲突或者未预料的行为的干扰。例如,当两个线程独立地更新位于特定存储器位置的数据时,可能出现无意的干扰。访问协调机制通常对于主题处理器的指令集架构是特定的。在很多情况下,不容易在程序代码转换之后在目标处理器上实现主题访问协调机制。首先,目标处理器可能不具有基于硬件的协调机制。其次,目标协调机制可能与主题机制的工作相异。在这两种示例中,难以提供主题代码所期待的主题访问协调机制的恰当的替代。
发明内容
根据本发明,提供一种具有对共享资源的访问协调的转换程序代码设备和方法。通过以下的描述,本发明的优选特征将很明显。
以下是根据本发明实施例的可实现的各个方面和优点的总结。其被提供作为帮助本领域的技术人员更快地了解随后的详细设计讨论的入门,而不是将以任何方式限制权利要求的范围。
在本发明的一方面中提供一种提供共享资源的访问协调机制的方法,所述方法用于从具有多主题线程的主题代码到能够被目标处理器执行的目标代码的程序代码转换,所述方法包括:(a)提供多个本地数据结构,每个数据结构都与多个主题线程之一相关联;以及全局令牌,对于每个主题线程是共用的;(b)对主题代码解码,以识别设置与共享资源相关的主题访问协调机制的主题设置指令和检查主题访问协调机制的主题检查指令;(c)响应于主题设置指令,产生用于调整全局令牌的目标代码,并在当前线程的本地数据结构中至少存储本地令牌,其中,所述本地令牌从调整的全局令牌得到;(d)响应于主题检查指令产生目标代码,所述目标代码用于将至少存储的本地令牌与全局令牌进行比较以确定对共享资源的潜在干扰;以及响应于对共享资源的潜在干扰的事件调整全局令牌。
该方法还包括:从主题代码或影响主题代码的中断检测系统调用,并作为响应地调整全局令牌以显示对共享资源的潜在干扰。
该方法还包括:执行关于第一主题线程的步骤(c);调整关于第二主题线程的全局令牌;以及执行关于第一主题线程的步骤(d),从而确定第二主题线程对共享资源的潜在干扰。
其中步骤(c)还包括:将从主题设置指令获得的数据存储到本地数据结构中;以及步骤(d)还包括:将从主题检查指令获得的数据与从本地数据结构获得的数据进行比较。
其中步骤(c)还包括:将本地地址存储在本地数据结构中,所述本地地址从用于从共享资源进行读取的主题设置指令中指定的主题设置地址获得;以及步骤(d)还包括:将本地地址与从主题检查指令获得的检查地址进行比较。
其中步骤(c)还包括:将本地值存储在本地数据结构中,所述本地值存储从关于主题设置指令中指定的设置地址的共享资源读取的数据值;以及步骤(d)还包括:将本地值与从关于主题检查指令中指定的检查地址的共享资源读取的数据值进行比较。
其中步骤(c)还包括:在本地数据结构中存储以下项:从用于从共享资源进行读取的主题设置指令中指定的设置地址获得的本地地址;和存储从关于所述设置地址的共享资源读取的数据值的本地值;以及步骤(d)还包括:将本地地址与从主题检查指令获得的检查地址进行比较;以及将本地值与从关于检查地址的共享资源读取的数据值进行比较。
其中步骤(d)还包括:响应于主题检查指令将新的数据值存储到共享资源。
其中步骤(d)还包括:调整全局令牌。
其中,全局令牌是数字计数器值。
其中,存储本地令牌的步骤包括:复制全局令牌的当前值。
其中,调整全局令牌的步骤包括:递增计数器。
该方法还包括:在目标处理器上使用原子操作调整全局令牌。
该方法还包括:将能够被主题处理器执行的主题代码翻译成能够被目标处理器执行的目标代码。
该方法还包括:执行从主题代码到目标代码的动态二进制翻译。
其中,目标处理器包括与主题处理器类型不同的处理器。
本发明还提供了一种提供共享资源的访问协调机制的设备,用于在从具有多个主题线程的主题代码到能够被目标处理器执行的目标代码的程序代码转换,所述设备包括:(a)用于提供多个本地数据结构和全局令牌的装置,其中每个本地数据结构都与所述多个主题线程中的一个相关联,并且所述全局令牌对于主题线程中的每一个都是共用的;(b)用于对主题代码解码,以识别设置与共享资源相关的主题访问协调机制的主题设置指令和检查主题访问协调机制的主题检查指令的装置;(c)用于响应于主题设置指令,产生用于调整全局令牌的目标代码,并在当前线程的本地数据结构中至少存储本地令牌的装置,其中,所述本地令牌从调整的全局令牌得到;(d)用于响应于主题检查指令产生目标代码的装置,所述目标代码用于至少将所存储的本地令牌与全局令牌进行比较以确定对共享资源的潜在干扰;和用于响应于对共享资源潜在干扰的事件调整全局令牌的装置。
所述的设备进一步包括用于从主题代码或影响主题代码的中断检测系统调用,并作为响应地调整全局令牌以显示对共享资源的潜在干扰的装置。
所述的设备进一步包括用于关于第一主题线程,响应于主题设置指令,产生用于调整全局令牌的目标代码,并在当前线程的本地数据结构中至少存储本地令牌的装置,其中,所述本地令牌从调整的全局令牌得到;调整关于第二主题线程的全局令牌;以及用于关于第一线程,响应于主题检查指令产生目标代码的装置,所述目标代码用于至少将所存储的本地令牌与全局令牌进行比较以确定对共享资源的潜在干扰,从而确定第二主题线程对共享资源的干扰。
所述的设备进一步包括用于将从主题设置指令获得的数据存储到本地数据结构中的装置;以及用于将从主题检查指令获得的数据与从本地数据结构获得的数据进行比较的装置。
所述的设备进一步包括用于将本地地址存储在本地数据结构中的装置,所述本地地址从用于从共享资源进行读取的主题设置指令中指定的主题设置地址获得;以及用于将本地地址与从主题检查指令获得的检查地址进行比较的装置。
所述的设备进一步包括用于将本地值存储在本地数据结构中的装置,所述本地值存储从关于主题设置指令中指定的设置地址的共享资源读取的数据值;以及用于将本地值与从关于主题检查指令中指定的检查地址的共享资源读取的数据值进行比较的装置。
所述的设备进一步包括用于在本地数据结构中存储从用于从共享资源进行读取的主题设置指令中指定的设置地址获得的本地地址的装置;和用于存储从关于所述设置地址的共享资源读取的数据值的本地值的装置;用于将本地地址与从主题检查指令获得的检查地址进行比较的装置;以及用于将本地值与从关于检查地址的共享资源读取的数据值进行比较的装置。
所述的设备进一步包括用于响应于主题检查指令翻译器设备将新的数据值存储到共享资源的装置。
所述用于响应于主题检查指令产生目标代码的装置进一步包括用于调整全局令牌的装置。
其中,全局令牌是数字计数器值。
所述的设备进一步包括用于通过复制全局令牌的当前值来存储本地令牌的装置。
所述的设备进一步包括用于通过递增计数器来调整全局令牌的装置。
所述的设备进一步包括用于在目标处理器上使用原子操作调整全局令牌的装置。
所述的设备进一步包括用于执行从主题代码到目标代码的动态二进制翻译的装置。
其中,目标处理器包括与主题处理器类型不同的处理器。
在示例性实施例中,发明者已经开发了用于加速程序代码转换的方法,所述方法在与提供主题程序代码到目标代码的动态二进制翻译的运行时间翻译器相关联的情况下尤其有益。
本发明还扩展到具有安排用于执行在此限定的任何方法的翻译器单元的翻译器设备。另外,本发明扩展到其上记录有可由计算机实现以执行在此限定的任何方法的指令的计算机可读存储介质。
附图说明
在此引入并构成说明书的一部分的附图示出目前优选的实现方式,并描述如下:
图1是示出本发明的实施例得到应用的设备的框图;
图2是示出在程序代码转换期间的执行控制的示例方法的示意性流程图;
图3是示出在程序代码转换之后主题指令和目标指令之间的关系的示意图;
图4是具有作为面向硬件的访问协调机制的保留的示例主题处理器的示意图;
图5是在本发明的示例性实施例中采用的具有对共享资源的访问协调机制的目标处理器的示意图;
图6是在本发明的示例性实施例中采用的方法的概述;
图7是更详细地示出图6的方法的示意流程图;以及
图8是更详细地示出图6的方法的示意流程图。
具体实施方式
提供以下说明使得本领域的技术人员能够制造和使用本发明,并阐述完成本发明的发明者认为的最佳模式。然而,由于已经在此具体地限定了本发明的一般原理以提供改进的程序代码转换方法和设备,因此各种修改对于本领域的技术人员仍将是很明显的。
在下面的术语中,主题程序将要在包括主题处理器的主题计算平台上执行。包括目标处理器的目标计算平台用于通过执行动态程序代码转换的翻译器来执行主题程序。翻译器执行从主题代码到目标代码的代码转换,从而能够在目标计算平台上执行目标代码。
图1示出了包括目标处理器13的示例目标计算平台14,所述目标处理器13包括目标寄存器15和存储多个软件组件17、19、20、21和27的存储器18。软件组件包括:操作系统20、待翻译的主题代码17、翻译器代码19、翻译的代码(目标代码)21和抽象寄存器组(abstract register bank)27以及其他。
在一个实施例中,翻译器代码19是仿真器,用于将主题指令集架构(ISA)的主题代码翻译成另一ISA的翻译的目标代码(经过或不经过优化)。也就是说,翻译器19对主题处理器进行仿真,同时在目标处理器13上执行作为目标代码21的主题程序17。在另一实施例中,翻译器19用于通过执行代码程序优化来作为将主题代码翻译成目标代码(主题代码和目标代码是相同ISA)的加速器。
概括说来,目标计算平台14是一种翻译器设备,其包括翻译单元19以及其他。在示例实施例中,翻译器19是实现翻译器的源代码的编译版本。翻译器19和由翻译器19产生的翻译的代码21结合操作系统20在目标处理器13上运行,所述目标处理器13通常是微处理器或其他合适的计算机。
应理解在图1中示出的结构仅是示例性的,并且例如本发明的实施例可以通过驻留在操作系统中或驻留在操作系统之下的代码实现。主题代码17、翻译器代码19、操作系统20和存储器18的存储机制可以是如本领域的技术人员所知的多种类型中的任意一种。
在图1的设备中,优选地,在目标代码21运行的同时,程序代码转换在运行时间被动态执行。翻译器19与翻译的程序21协调运行。在这种情况下,翻译器是动态二进制翻译器。在另一示例实施例中,翻译器19是按顺序将各个主题指令翻译并执行为一个或多个相应的目标代码指令的解译器。
优选地翻译器19被采用作为用于目标架构编译的应用程序。在运行时间主题程序17被翻译器19翻译以在目标架构14上执行。在运行时间主题程序被翻译器19翻译以在目标架构上直接执行。翻译器19还变换主题程序17做出的主题操作系统(OS)调用,从而使它们在被传递到目标OS 20时正确地工作。
通过翻译器19运行主题程序17包括以交织的方式执行的两种不同类型的代码:翻译器代码19;以及目标代码21。基于翻译器19的高级源代码实现,在运行时间之前由诸如编译器产生翻译器代码19。相反地,基于正被翻译的程序的存储的主题代码17,在运行时间期间由翻译器代码19产生目标代码21。
在示例实施例中,提供至少一个抽象寄存器组27(还被称为主题寄存器组27或全局寄存器存储27)。在多处理器环境中,根据主题处理器的架构可选地提供多于一个抽象寄存器组27。
由翻译器19和目标代码21的组件来提供主题处理器状态的表示。也就是说,翻译器19以多种明确的编程语言装置(诸如变量和/或对象)来存储主题处理器状态。用于编译翻译器19的编译器确定如何以翻译器代码来实现状态和操作。作为比较,目标代码21在由目标代码21的目标指令操纵的目标寄存器15中和存储器位置18中隐含地提供主题处理器状态。例如,全局寄存器存储27的低级表示是简单的分配的存储器的区。然而,在翻译器19的源代码中,全局寄存器存储27是可在较高级别访问和操纵的数据阵列或对象。
图2是示出在程序代码转换期间的执行控制的示例方法的示意性流程图。
如图2所示,控制最初驻留于翻译器控制环190。在步骤201,控制环190调用翻译器代码19的代码产生函数192,其将主题代码17的块翻译成翻译的代码21的相应块。然后,在步骤202,在目标处理器13上执行翻译的代码21的所述块。方便地,翻译的代码21的每个块的末端包含将控制返回到控制环的指令201。换句话说,翻译和执行主题代码的步骤被交织,从而主题程序17的各部分被翻译并按顺序地执行。
这里,术语“基本块(basic block)”对于本领域的技术人员应是很熟悉的。基本块是具有准确的一个入口点和准确的一个出口点的代码段,其将块代码限制为单个的控制路径。为此,基本块是有用的控制流的基本单元。合适地,翻译器19将主题代码17划分为多个基本块,其中,每个基本块都是位于单个入口点的第一指令和位于单个出口点的最后指令之间的有序的一系列指令(例如跳转、调用或分支指令)。翻译器可只选择这些基本块中的一个(块模式)或选择一组基本块(组块模式)。组块适当地包括将被作为一个单元一起对待的两个或多个基本块。此外,翻译器可形成表示主题代码的相同基本块但在不同入口条件下的相同块(iso-block)。
在示例实施例中,作为从原始主题程序17产生目标代码21的处理的部分,基于主题指令序列产生中间表示(IR)的树。IR树是由主题程序计算的表达式和由主题程序执行的操作的抽象表示。稍后,基于IR树产生目标代码21。IR节点的集合实际是有向无回路图(DAG),但通常被称为“树”。
如本领域的技术人员可能知道的,在一个实施例中,使用面向对象编程语言(如C++)来实现翻译器19。例如,IR节点被实现为C++对象,对其他节点的引用被实现为对与所述其他节点相应的C++对象的C++引用。因此IR树被实现为IR节点对象的集合,包含彼此的各种引用。
此外,在以下讨论的实施例中,IR产生使用一系列与主题程序17将被运行的主题架构的特定特征相应的抽象寄存器定义。例如,具有对于主题架构上的每个物理寄存器(“主题寄存器”)的唯一抽象寄存器定义。如此,翻译器中的抽象寄存器定义可被实现为包含对IR节点对象(即,IR树)的引为工作IR树林(被称为“树林”是因为其包含多个抽象寄存器根,每个都引用IR树)。这些IR树和其他处理恰当地形成翻译器代码产生函数192的部分。
图3是示出在本发明的示例实施例中的程序代码转换之后主题程序中的指令和目标程序中的指令之间的示例关系的示意图。
在此示例中,主题指令S1-S3形成功能相同的目标指令T1-T3。主题指令S1已通过诸如死代码消除优化被移除,并且在产生的目标代码中没有对等部分。主题指令S2形成一个相同的目标指令T3。相反,主题指令S3形成两个目标指令T1和T2。在目标和主题代码指令之间可能具有一对无、一对一、一对多或多对一的关系。
如图3所示,另一通常使用的优化是执行代码重排,从而在目标代码中的指令顺序与主题代码中的原始顺序不相同。这里,第二主题指令S2已被重排为第三目标指令T3。
主题访问协调
图4是示例主题处理器400的示意图。主题处理器400对存储器401进行存取,并包括至少一个通用目的寄存器402,对于本领域的技术人员是很熟悉的。示出的主题处理器400是典型的RISC处理器。
在此示例中,主题处理器还包括保留403形式的访问协调机制。通常,保留403是主题处理器400的物理硬件的一部分。保留403提供对诸如存储器401的共享资源的访问协调机制。通常在处理器400中仅提供一个保留403。
保留403用于检测是否发生了与共享资源(即,存储器401)相关的潜在干扰。
在此示例中,保留403包括保留标志405和特殊用途保留寄存器404。保留标志404通常是显示是已经设置保留还是已经清除保留的一比特标志。保留寄存器405用于存储存储器地址。
最通常地,保留403与“加载-链接”和“存储-条件”类型指令组合使用。加载-链接指令用于设置(或密封(seal))访问协调机制。存储-条件指令用于检查访问协调机制,以检测对共享资源的潜在的干扰。
这些指令的每一个都与指定地址相关联,以这样的示例形式:
retry:
     load-link [MEM LL]
    load-link[MEM LL]
    …perform operations on the loaded data
    store-conditional[MEM SC]
branch if store-conditional fails:retry
当遇到加载-链接类型指令时,从与该指令相关联的存储器地址(即,[MEM LL])读取数据,将地址[MEM LL]写入保留寄存器404,并且保留标志405被设置。
从存储器地址读取的数据可用于一个或多个操作(即,一个或多个插入(intervening)主题指令)。例如,对读取的数据执行递增、相加或移位操作。通常在相应的加载-链接指令和存储-条件指令之间仅执行少量的操作,如一条、两条或三条指令。这是为了减少干扰的可能性。然而通常不限制可在一对加载-链接指令和存储-条件指令之间执行的指令的数量。
存储-条件指令用于将那些插入的操作的结果写回到存储器401,通常写到与该数据被读取的存储器地址相同的存储器地址。也就是说,通常以匹配的配对来创建加载-链接指令和存储-条件指令,从而使[MEM LL]是与[MEMSC]相同的地址。
存储-条件指令将给定的存储地址[MEM SC]与存储在保留寄存器404中的地址(其仍应是MEM LL)进行比较。如果比较的地址相等(即,MEM SC等于存储的MEM LL),则保留标志405仍被设置,随后执行存储。
在多线程环境中,潜在的干扰事件可能在主题系统中(即,在另一主题线程或在另一主题处理器上)的其他地方发生。这里,潜在的干扰事件通过以下条件中的任何一个来检测:(a)当寄存器标志405仍应被设置时其已被清除;或者(b)在保留寄存器404中保持的地址与存储-条件指令中指定的地址(即,[MEM SC])不相同。
如果存储-条件指令成功(即,未检测到干扰),则保留标志405被清除并继续执行程序。然而,如果存储-条件失败,则程序通常重复地循环回到加载-链接指令,直到没有干扰地执行该指令。
作为潜在的干扰事件的示例,保留标志405通常被中断、系统调用或对保存在保留寄存器404中的存储器地址的任何存储清除。
作为另一示例,第二加载-链接指令(即,另一线程)将设置保留标志联的地址(例如,[MEM LL2])。因此第二加载-链接指令将使得第一存储-条件指令失败。
为了允许保留403高效工作,通常将用于设置和检查保留寄存器404和保留标志405的逻辑门硬线连接到主题处理器400中。相似地,通常将用于清除保留标志405的逻辑门硬线连接到主题处理器中。这样的特殊改造的硬件使与这些过程相关联的计算开销最小化。
作为特定的示例,PowerPC类型处理器提供了保留,并具有支持已知为“lwarx”和“stwcx”的加载-链接和存储-条件功能的一对指令的指令集结构。作为此示例的进一步的背景技术,可在http://www-128.ibm.com/developerworks/library/pa-atom得到更详细的讨论。
在这种基于主题硬件的保留系统中,当接收到中断或执行系统调用时,保留被熔固(blown)(即,标志405被清除或保留寄存器404被改变)。在线程之间发生上下文切换的情况下,如果OS选择重排任务(通常在中断或系统调用时执行),则在执行的一个线程中的加载-链接将不与另一线程中的存储-条件相匹配(这可能造成发生错误的存储)。如此,在硬件层,为每个处理器提供一个保留,而不是为每个软件任务提供一个保留。
目标访问协调
图5是在本发明的示例实施例中采用的包括用于协调对共享资源的访问的机制的目标计算平台14的示意图。
安排翻译器19以支持一个或多个主题程序17中的多个线程。翻译器19协调所述多个线程对诸如存储器18的共享资源的访问,并允许检测潜在的干扰。
参照图5,翻译器19提供全局令牌501,和一个或多个系列的本地数据502,全局令牌501和本地数据502被一起采用以协调对存储器18的访问。
在示例实施例中,翻译器19为主题程序17的每个线程提供一个本地数据结构502。图5示出与第一线程171和第二线程172分别相关联的第一数据结构502a和第二数据结构502b。
如图5所示,访问协调机制(即,全局令牌501和每个本地数据机构502)被方便地存储在存储器18中。或者,如果可用,则所有或部分数据被存储在目标处理器13的合适的寄存器15中。也就是说,目标代码21可在目标寄存目标处理器13的合适的寄存器15中。也就是说,目标代码21可在目标寄存器中保持一个或多个访问协调数据的元素。具体地,在目标寄存器15中按期望地保持全局令牌501。
如图5所示,每个本地数据结构502都包括本地令牌521、本地值522和本地存储器地址523。本地令牌521存储从全局令牌501得到的令牌。本地值522存储从共享资源读取(即,从存储器18读取)的数据值。本地地址523存储从其读取数据的地址。
本地地址523被适当地格式化为表示主题地址空间的主题地址(例如,对于图4的主题系统的存储器401合适的地址)。主题指令17引用主题地址空间。翻译器19将主题地址翻译成对于目标计算系统14和目标存储器18合适的目标地址。或者,将存储的本地地址523格式化为翻译的目标地址。
图6是在本发明的实施例中采用的提供访问协调机制的优选方法的概述。在翻译器19中适当地执行该方法,翻译器19产生目标代码21从而在目标处理器13上实现该方法。
参考图6,该方法包括步骤601,提供如上面参照图5讨论的全局令牌501和至少一个本地数据结构502。
步骤602包括对主题程序17解码以识别引用主题访问协调机制(即,在图4的主题处理器400中提供的访问协调机制403)的指令。具体地说,该步骤包括识别以下项:(a)主题设置指令,设置主题访问协调机制,例如加载-链接指令;和(b)主题检查指令,检查主题访问协调机制,例如存储-条件指令。
步骤603包括:(a)响应于主题设置指令,调整全局令牌501,并存储用于第一线程171的全局数据结构502。这里,当遇到主题加载-链接指令时,由目标代码将本地令牌521、本地值522和本地地址523写入到本地数据结构502中(例如,存储器18中)。
步骤604包括:(b)响应于主题检查指令,将存储的本地数据结构502与全局令牌501的至少当前值进行比较,以确定对共享资源18的潜在干扰。比较步骤还将在检查指令中提供的数据与本地数据结构502进行比较。此外,步骤604包括调整全局令牌501。
图7是更详细地示出图6的步骤603的示意流程图;
翻译器19识别主题设置指令,诸如对主题保留403进行操作的主题代码加载-链接指令load-link[MEM LL]。由翻译器产生的相应的目标代码21执行图7中示出的步骤。图7主要示出了调整全局令牌501的步骤701、从共享资源读取数据的步骤703、以及存储本地数据结构502的步骤702、704和705。
步骤701包括调整全局令牌501。适当地,全局令牌是数字值(例如64位数字计数器),调整全局令牌是算术运算。更方便地,调整全局令牌501包括递增计数器。在很多目标处理器13中,执行递增指令相对便宜。或者,计数器递减。其他形式的调整也是可行的。所述调整显示全局令牌已经从其先前的形式或值改变。另外,全局令牌将响应于后续的调整再次改变。
理想地,调整全局令牌501的一个操作或多个操作不受干扰地自己执行。否则,不能保证全局令牌501被正确地调整。具体地,翻译器19其自身可能作为多个目标线程中的一个线程在目标处理器上运行。
适当地,使用适合于目标处理器的机制不受干扰地调整全局令牌501。理想地,如果在指令集架构目标处理中存在原子操作,则使用原子操作,如果存在目标处理器自身的加载-链接和存储-条件机制,则使用该机制。
一些指令集架构支持将从存储器读取数据、操作数据和将结果写回到存储器作为单个步骤的操作。这样的操作不包括单独的子步骤,因此不会崩溃。这种类型的操作已知为“原子”,这是由于它们的逻辑不可分性。通常,原子操作在处理器中的单个总线周期中发生。逻辑上,其他任何操作数据的尝试必须在原子操作之前或之后发生。
通常在CISC处理器上提供原子操作。在目标处理器作为包括x86系列处理器的具体的示例中,调整全局令牌501的步骤包括:使用原子比较-交换类型指令(例如,“cmpxchg”指令)递增全局令牌计数器。
步骤702包括将全局令牌501的当前值存储为本地数据结构502的本地令牌521。
步骤703包括从主题加载-链接指令中指定的存储器位置(即,与主题地址[MEM LL]相关的目标存储器18中的位置)加载数据。也就是说,主题设置指令提供与共享资源相关的设置地址,并响应于该设置地址(即,如果需要则利用合适的地址变换)从共享资源读取数据值。
步骤704和705包括将加载的数据和设置地址(例如,MEM LL)的复制作为本地值522和本地地址分别存储在本地数据结构502中。
用于实现步骤701至705的一般伪码为:
[atomically]adjust global token
load[MEMLL]
local_token=global token
local_mem=MEMLL
local_value=value in MEMLL
图8是更详细地示出图6的步骤604的示意流程图。
如图8所示,主题代码存储-条件指令被方便地划分为目标代码中的若干子步骤。
步骤801包括将从主题存储-条件指令中指定的地址得到的检查地址(即,MEM SC)与存储在本地数据结构502中的本地地址523进行比较。如果需要,再次执行地址变换。成功的比较(其中,检查地址和存储的本地地址相同)显示主题存储-条件指令与先前的加载-链接指令相匹配。失败的比较(其中,地址不相同)指示在当前线程171中已经执行了另一加载-链接指令。这样的情况可能在编写不佳的主题代码中无意地出现。这里,不能保证已经不受干扰地执行了第一加载-链接和相应的存储-条件之间的插入指令。
步骤802包括将存储的本地令牌521与全局令牌501的当前值进行比较。如果本地令牌521不等于全局令牌501,则全局令牌501有可能已被另一线程172中(或者甚至在当前线程171中)的潜在的干扰指令调整。例如,另一线程可能已经执行了干扰加载-链接类型设置指令。在这种情况下,由于存储了本地令牌521,因此不能保证已经不受干扰地执行了插入操作。
可建立其他目标代码指令以调整全局令牌501,理想地使用原子操作,诸如上面讨论的[atomically]adjust global token。例如,主题处理器上的存储、系统调用或中断正常地将清除主题处理器的保留标志405。理想地,这些主题处理器事件和指令被翻译成调整全局令牌501的目标代码。
在步骤803,将存储为local value的值522与当前存储在主题检查指令(存储-条件指令)中指定的存储器地址([MEM SC])中的值进行比较。如果两个值不相同,则显示在该存储器位置上已经发生了另一存储。因此,检测到已经不受干扰地执行了主题设置指令和检查指令之间的插入指令。
同时,也有可能local value的值522与最后写到相关存储器地址的另一存储指令的值对应。然而,此附加检查意味着仅在全局令牌已被调整到预料值并且已经存储了相同的值的情况下获得错误肯定。
理想地,以组合的形式执行步骤801-803的检查。这三个检查一起提供一种强壮但相对便宜的机制,用于在多线程环境中检测与诸如存储器的共享资源相关的潜在干扰。
步骤804包括执行主题检查指令(即,存储-条件指令)所请求的存储。也就是说,在步骤801、802和803的每一个的比较都成功的情况下,插入操作的结果被存储到主题检查指令中指定的位置([MEM SC])。
如步骤701的讨论,步骤805包括调整诸如使用原子递增(例如,比较-交换)指令的全局令牌。
步骤806包括指示检查和存储操作成功,从而主题程序的操作现在可以继续。例如,提供成功/失败标志并且被目标代码21或翻译器19引用。
在步骤801-803中的任意比较操作不成功(失败)的情况下,到达步骤807和808。
如步骤701的讨论,步骤807包括调整诸如使用原子递增(例如,比较-交换)指令的全局令牌。
步骤808包括指示检查和存储操作失败。例如,成功/失败标志被设置为指示失败并被目标代码21或翻译器19引用。理想地,成功/失败标志用于从相应的加载-链接指令分支返回和重试整个序列。
在以下的一般伪码中示出步骤801-808的示例程序指令:
If(local mem==MEM SC)
    and(local token==global token)
    and(local value==contents of MEM SC))
then:
    perform store[MEM SC]
    [atomically]adjust global token
    Set success flag
else
    [atomically]adjust global token
    set failure flag
在此讨论的示例实施例具有多种好处和优点。在此讨论的实施例有利地提供了一种用于访问协调的面向软件的方法,该方法相对高效和高性价比地在翻译器中实现并作为目标代码执行。
在此给出的示例是一般性的,本发明的原理应用于主题处理器和目标处理器的组合,其中主题代码设置指令和检查指令(例如,加载-链接指令和存储-条件指令)将在使用不同访问协调机制的架构或者不提供这样的机制的架构上执行。具体地,示例实施例允许与面向硬件的保留相同的行为在不提供对保留的硬件支持的目标处理器上有效地执行。
具体来说,非限制类型(例如PowerPC)和MIPS类型处理器提供使用硬件支持的保留的加载-链接和存储-条件机制。相反地,x86、Itanium和Sparc类型处理器不提供保留。在优选的实施例中,这些处理器能够相对便宜地对存储器执行原子操作。
在此讨论的原理也可应用于主题处理器和目标处理器都具有加载-链接和存储-条件机制但是不具有机制之间的直接映射的情况。此外,在主题处理器和目标处理器都具有加载-链接和存储-条件机制的情况下,仍需要保持目标处理器的保留独立于主题代码中的加载-链接和存储-条件指令。这是因为翻译器也在目标处理器上运行,并且其自身将利用目标处理器的保留。通过这种方式,翻译器和翻译的目标代码之间的干扰可以被减少。
如上面讨论的,本发明的示例实施例是基于这样的观察:在软件层,检测诸如中断或系统调用的重排事件可能很困难或很昂贵。然而,存储每个线程的信息比较便宜。优选的设计基于每线程存储三条信息,即:指示设置了访问协调机制的标志、从何处加载的地址和加载的值。如果在此线程内发生系统调用,或通过翻译器处理的中断发生,则标志应被清除(即,设置为指示失败的情况)。
所述值用于在加载-链接设置指令之后的存储-条件检查指令的点处检测相关的存储器内容何时被改变。理想地,该系统不应只检测所述值在存储-条件是否与其在加载-链接的点处相同,还应检测任何的插入改变。从软件检测潜在地抑制昂贵。
在实际中,通常仅由原子指令或非原子指令访问给定的存储器地址。如此,足以使得存储-条件指令使系统中的所有访问协调机制无效。这将潜在地造成访问协调机制被不必要地无效,但是这种情况总会发生(例如,线程接收到加载-链接和存储-条件之间的硬件中断,但是没有插入事件干扰操作发生的原子性)。为了使存储-条件指令在系统的其他地方中断访问协调机制,本发明的示例实施例从上述的纯每线程模型(该模型只用一位标志指示保留保持)变为引入全局令牌的模型。提供每线程标志作为每线程本地令牌。这样的优点在于只通过修改单个全局令牌就使得所有其他线程中的所有访问协调机制失败,而不是尝试更新系统中的所有线程的标志。
虽然已经示出和描述了若干优选实施例,但是本领域的技术人员将理解,在不脱离权利要求所限定的本发明的范围的情况下,可以做出各种改变和修改。
注意到:连同本申请一起与本说明书同时提交或在此之前提交的以及公开用于公众检查本发明书的所有纸件和文档,所有纸件和文档的内容合并于此以资参考。
在说明书(包括任何权利要求、摘要和附图)中公开的所有特征和/或公开的任何方法或处理的所有步骤可组成任意的组合,除非在组合中的至少一些这种特征和/或步骤互相排斥。
在本说明书中公开的每个特征(包括任何权利要求、摘要和附图)可由起到相同、等同或相似作用的可选的特征替代,除非特别说明。因此,除非特别说明,公开的每个特征仅是一般系列的等同或相似特征的一个示例。
本发明不限于前述实施例的细节。本发明扩展到本说明书(包括任何权利要求、摘要和附图)中公开的特征的任何的创新或任何的创新组合,或者扩展到公开的任何方法或处理的步骤的创新或任何的创新组合。

Claims (31)

1.一种提供共享资源的访问协调机制的方法,用于在从具有多个主题线程(171、172)的主题代码(17)到能够被目标处理器(13)执行的目标代码(21)的程序代码转换,所述方法的特征在于以下步骤:
(a)提供以下项:多个本地数据结构(502a、502b),每个本地数据结构都与多个主题线程(171、172)中的一个相关联;以及全局令牌(501),对于主题线程(171、172)中的每一个都是共用的;
(b)对主题代码(17)解码,以识别设置与共享资源(401)相关的主题访问协调机制的主题设置指令和检查主题访问协调机制的主题检查指令;
(c)响应于主题设置指令,产生用于调整全局令牌(501)的目标代码(21),并在当前线程的本地数据结构(502)中至少存储本地令牌(521),其中,所述本地令牌(521)是从调整的全局令牌(501)得到;
(d)响应于主题检查指令产生目标代码,所述目标代码用于至少将所存储的所述本地令牌(521)与全局令牌(501)进行比较以确定对共享资源(401)潜在干扰;和
响应于对共享资源(401)的潜在干扰的事件调整全局令牌(501)。
2.如权利要求1所述的方法,还包括:
从主题代码或影响主题代码(17)的中断检测系统调用,并作为响应地调整全局令牌(501)以显示对共享资源(401)的潜在干扰。
3.如权利要求1所述的方法,还包括:
执行关于第一主题线程(171)的步骤(c);
调整关于第二主题线程(172)的全局令牌(501);以及
执行关于第一主题线程(171)的步骤(d),从而确定第二主题线程(172)对共享资源(401)的潜在干扰。
4.如权利要求1所述的方法,其中:
步骤(c)还包括:将从主题设置指令获得的数据存储到本地数据结构(502)中;以及
步骤(d)还包括:将从主题检查指令获得的数据与从本地数据结构(502)获得的数据(523、522)进行比较。
5.如权利要求1所述的方法,其中:
步骤(c)还包括:将本地地址存储在本地数据结构(502)中,所述本地地址从用于从共享资源进行读取的主题设置指令中指定的主题设置地址获得;以及
步骤(d)还包括:将本地地址(523)与从主题检查指令获得的检查地址进行比较。
6.如权利要求1所述的方法,其中:
步骤(c)还包括:将本地值(522)存储在本地数据结构(502)中,所述本地值存储从关于主题设置指令中指定的设置地址的共享资源(401)读取的数据值;以及
步骤(d)还包括:将本地值(522)与从关于主题检查指令中指定的检查地址的共享资源(401)读取的数据值进行比较。
7.如权利要求1所述的方法,其中:
步骤(c)还包括:
在本地数据结构(502)中存储以下项:从用于从共享资源(401)进行读取的主题设置指令中指定的设置地址获得的本地地址(523);和存储从关于所述设置地址的共享资源(401)读取的数据值的本地值(522);以及
步骤(d)还包括:
将本地地址(523)与从主题检查指令获得的检查地址进行比较;以及
将本地值(522)与从关于检查地址的共享资源读取的数据值进行比较。
8.如权利要求1所述的方法,其中,步骤(d)还包括:响应于主题检查指令将新的数据值存储到共享资源(401)。
9.如权利要求1所述的方法,其中,步骤(d)还包括:调整全局令牌(501)。
10.如权利要求1所述的方法,其中,全局令牌(501)是数字计数器值。
11.如权利要求10所述的方法,其中,存储本地令牌(521)的步骤包括:复制全局令牌(501)的当前值。
12.如权利要求10所述的方法,其中,调整全局令牌(501)的步骤包括:递增计数器。
13.如权利要求10所述的方法,包括:在目标处理器(13)上使用原子操作调整全局令牌(501)。
14.如权利要求1所述的方法,包括:将能够被主题处理器(400)执行的主题代码(17)翻译成能够被目标处理器(13)执行的目标代码(21)。
15.如权利要求14所述的方法,包括:执行从主题代码(17)到目标代码(21)的动态二进制翻译。
16.如权利要求14所述的方法,其中,目标处理器(13)包括与主题处理器(400)类型不同的处理器。
17.一种提供共享资源的访问协调机制的设备,用于在从具有多个主题线程(171、172)的主题代码(17)到能够被目标处理器(13)执行的目标代码(21)的程序代码转换,所述设备包括:
(a)用于提供多个本地数据结构和全局令牌的装置,其中每个本地数据结构都与所述多个主题线程中的一个相关联,并且所述全局令牌对于主题线程中的每一个都是共用的;
(b)用于对主题代码解码,以识别设置与共享资源相关的主题访问协调机制的主题设置指令和检查主题访问协调机制的主题检查指令的装置;
(c)用于响应于主题设置指令,产生用于调整全局令牌的目标代码,并在当前线程的本地数据结构中至少存储本地令牌的装置,其中,所述本地令牌(521)从调整的全局令牌得到;
(d)用于响应于主题检查指令产生目标代码的装置,所述目标代码用于至少将所存储的本地令牌与全局令牌进行比较以确定对共享资源的潜在干扰;和
用于响应于对共享资源(401)潜在干扰的事件调整全局令牌(501)的装置。
18.如权利要求17所述的设备,进一步包括用于从主题代码或影响主题代码(17)的中断检测系统调用,并作为响应地调整全局令牌(501)以显示对共享资源(401)的潜在干扰的装置。
19.如权利要求17所述的设备,进一步包括用于关于第一主题线程(171),响应于主题设置指令,产生用于调整全局令牌的目标代码,并在当前线程的本地数据结构中至少存储本地令牌的装置,其中,所述本地令牌(521)从调整的全局令牌得到;调整关于第二主题线程(172)的全局令牌(501);以及用于关于第一线程(171),响应于主题检查指令产生目标代码的装置,所述目标代码用于至少将所存储的本地令牌与全局令牌进行比较以确定对共享资源的潜在干扰,从而确定第二主题线程(172)对共享资源(401)的干扰。
20.如权利要求17所述的设备,进一步包括用于将从主题设置指令获得的数据存储到本地数据结构(502)中的装置;以及用于将从主题检查指令获得的数据与从本地数据结构(502)获得的数据(523、522)进行比较的装置。
21.如权利要求17所述的设备,进一步包括用于将本地地址存储在本地数据结构(502)中的装置,所述本地地址从用于从共享资源进行读取的主题设置指令中指定的主题设置地址获得;以及用于将本地地址(523)与从主题检查指令获得的检查地址进行比较的装置。
22.如权利要求17所述的设备,进一步包括用于将本地值(522)存储在本地数据结构(502)中的装置,所述本地值存储从关于主题设置指令中指定的设置地址的共享资源(401)读取的数据值;以及用于将本地值(522)与从关于主题检查指令中指定的检查地址的共享资源(401)读取的数据值进行比较的装置。
23.如权利要求17所述的设备,进一步包括用于在本地数据结构(502)中存储从用于从共享资源(401)进行读取的主题设置指令中指定的设置地址获得的本地地址(523)的装置;和用于存储从关于所述设置地址的共享资源(401)读取的数据值的本地值(522)的装置;用于将本地地址(523)与从主题检查指令获得的检查地址进行比较的装置;以及用于将本地值(522)与从关于检查地址的共享资源读取的数据值进行比较的装置。
24.如权利要求17所述的设备,进一步包括用于响应于主题检查指令翻译器设备将新的数据值存储到共享资源(401)的装置。
25.如权利要求17所述的设备,所述用于响应于主题检查指令产生目标代码的装置进一步包括用于调整全局令牌(501)的装置。
26.如权利要求17所述的设备,其中,全局令牌(501)是数字计数器值。
27.如权利要求26所述的设备,进一步包括用于通过复制全局令牌(501)的当前值来存储本地令牌(521)的装置。
28.如权利要求26所述的设备,进一步包括用于通过递增计数器来调整全局令牌(501)的装置。
29.如权利要求17所述的设备,进一步包括用于在目标处理器(13)上使用原子操作调整全局令牌(501)的装置。
30.如权利要求17所述的设备,进一步包括用于执行从主题代码(17)到目标代码(21)的动态二进制翻译的装置。
31.如权利要求17所述的设备,其中,目标处理器(13)包括与主题处理器(400)类型不同的处理器。
CN2006800200054A 2005-06-06 2006-06-05 具有对共享资源的访问协调的转换程序代码的方法和设备 Expired - Fee Related CN101194230B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
GB0511462.4 2005-06-06
GB0511462A GB2427045B (en) 2005-06-06 2005-06-06 Method and apparatus for converting program code with access coordination for a shared resource
US11/219,467 2005-09-02
US11/219,467 US7962900B2 (en) 2005-06-06 2005-09-02 Converting program code with access coordination for a shared memory
PCT/GB2006/002031 WO2006131710A1 (en) 2005-06-06 2006-06-05 Method and apparatus for converting program code with access coordination for a shared resource

Publications (2)

Publication Number Publication Date
CN101194230A CN101194230A (zh) 2008-06-04
CN101194230B true CN101194230B (zh) 2010-05-19

Family

ID=34835186

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800200054A Expired - Fee Related CN101194230B (zh) 2005-06-06 2006-06-05 具有对共享资源的访问协调的转换程序代码的方法和设备

Country Status (7)

Country Link
US (1) US7962900B2 (zh)
EP (1) EP1955153B1 (zh)
JP (1) JP5182816B2 (zh)
CN (1) CN101194230B (zh)
GB (1) GB2427045B (zh)
HK (1) HK1098218A1 (zh)
WO (1) WO2006131710A1 (zh)

Families Citing this family (154)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070294675A1 (en) * 2006-06-20 2007-12-20 Transitive Limited Method and apparatus for handling exceptions during binding to native code
US8407675B1 (en) * 2007-02-06 2013-03-26 The United States Of America As Represented By The Secretary Of The Navy Extraction of executable code and translation to alternate platform
US20080250231A1 (en) * 2007-04-03 2008-10-09 Kabushiki Kaisha Toshiba Program code conversion apparatus, program code conversion method and recording medium
US8539485B2 (en) * 2007-11-20 2013-09-17 Freescale Semiconductor, Inc. Polling using reservation mechanism
US9329846B1 (en) * 2009-11-25 2016-05-03 Parakinetics Inc. Cooperative program code transformation
JP5059174B2 (ja) * 2010-08-10 2012-10-24 株式会社東芝 プログラム変換装置、およびそのプログラム
JP5533538B2 (ja) * 2010-10-12 2014-06-25 富士通株式会社 情報処理装置、エミュレーション処理プログラム及びエミュレーション処理方法
US8468507B2 (en) * 2011-06-10 2013-06-18 Microsoft Corporation Binding executable code at runtime
US8990515B2 (en) 2011-06-14 2015-03-24 Microsoft Technology Licensing, Llc Aliasing buffers
GB2499277B (en) * 2012-08-30 2014-04-02 Imagination Tech Ltd Global register protection in a multi-threaded processor
CN104063234B (zh) * 2013-03-19 2017-06-27 华为技术有限公司 一种兼容方法及装置
US9471292B2 (en) * 2014-04-18 2016-10-18 Intel Corporation Binary translation reuse in a system with address space layout randomization
US9729583B1 (en) 2016-06-10 2017-08-08 OneTrust, LLC Data processing systems and methods for performing privacy assessments and monitoring of new versions of computer code for privacy compliance
US20170083331A1 (en) * 2015-09-19 2017-03-23 Microsoft Technology Licensing, Llc Memory synchronization in block-based processors
US9851957B2 (en) * 2015-12-03 2017-12-26 International Business Machines Corporation Improving application code execution performance by consolidating accesses to shared resources
CN105574407B (zh) * 2015-12-28 2018-09-25 无锡天脉聚源传媒科技有限公司 一种共享的处理方法和装置
US20220164840A1 (en) 2016-04-01 2022-05-26 OneTrust, LLC Data processing systems and methods for integrating privacy information management systems with data loss prevention tools or other tools for privacy design
US10706447B2 (en) 2016-04-01 2020-07-07 OneTrust, LLC Data processing systems and communication systems and methods for the efficient generation of privacy risk assessments
US11244367B2 (en) 2016-04-01 2022-02-08 OneTrust, LLC Data processing systems and methods for integrating privacy information management systems with data loss prevention tools or other tools for privacy design
US11004125B2 (en) 2016-04-01 2021-05-11 OneTrust, LLC Data processing systems and methods for integrating privacy information management systems with data loss prevention tools or other tools for privacy design
US11544667B2 (en) 2016-06-10 2023-01-03 OneTrust, LLC Data processing systems for generating and populating a data inventory
US10776514B2 (en) 2016-06-10 2020-09-15 OneTrust, LLC Data processing systems for the identification and deletion of personal data in computer systems
US11675929B2 (en) 2016-06-10 2023-06-13 OneTrust, LLC Data processing consent sharing systems and related methods
US10642870B2 (en) 2016-06-10 2020-05-05 OneTrust, LLC Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software
US11461500B2 (en) 2016-06-10 2022-10-04 OneTrust, LLC Data processing systems for cookie compliance testing with website scanning and related methods
US10242228B2 (en) 2016-06-10 2019-03-26 OneTrust, LLC Data processing systems for measuring privacy maturity within an organization
US11475136B2 (en) 2016-06-10 2022-10-18 OneTrust, LLC Data processing systems for data transfer risk identification and related methods
US11151233B2 (en) 2016-06-10 2021-10-19 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US10798133B2 (en) 2016-06-10 2020-10-06 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11586700B2 (en) 2016-06-10 2023-02-21 OneTrust, LLC Data processing systems and methods for automatically blocking the use of tracking tools
US10503926B2 (en) 2016-06-10 2019-12-10 OneTrust, LLC Consent receipt management systems and related methods
US10318761B2 (en) 2016-06-10 2019-06-11 OneTrust, LLC Data processing systems and methods for auditing data request compliance
US11416590B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11038925B2 (en) 2016-06-10 2021-06-15 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10614247B2 (en) 2016-06-10 2020-04-07 OneTrust, LLC Data processing systems for automated classification of personal information from documents and related methods
US10839102B2 (en) 2016-06-10 2020-11-17 OneTrust, LLC Data processing systems for identifying and modifying processes that are subject to data subject access requests
US11222142B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems for validating authorization for personal data collection, storage, and processing
US11200341B2 (en) 2016-06-10 2021-12-14 OneTrust, LLC Consent receipt management systems and related methods
US10284604B2 (en) 2016-06-10 2019-05-07 OneTrust, LLC Data processing and scanning systems for generating and populating a data inventory
US11403377B2 (en) 2016-06-10 2022-08-02 OneTrust, LLC Privacy management systems and methods
US11328092B2 (en) 2016-06-10 2022-05-10 OneTrust, LLC Data processing systems for processing and managing data subject access in a distributed environment
US11146566B2 (en) 2016-06-10 2021-10-12 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10803200B2 (en) * 2016-06-10 2020-10-13 OneTrust, LLC Data processing systems for processing and managing data subject access in a distributed environment
US10572686B2 (en) 2016-06-10 2020-02-25 OneTrust, LLC Consent receipt management systems and related methods
US10796260B2 (en) 2016-06-10 2020-10-06 OneTrust, LLC Privacy management systems and methods
US11520928B2 (en) 2016-06-10 2022-12-06 OneTrust, LLC Data processing systems for generating personal data receipts and related methods
US11188862B2 (en) 2016-06-10 2021-11-30 OneTrust, LLC Privacy management systems and methods
US11210420B2 (en) 2016-06-10 2021-12-28 OneTrust, LLC Data subject access request processing systems and related methods
US10726158B2 (en) 2016-06-10 2020-07-28 OneTrust, LLC Consent receipt management and automated process blocking systems and related methods
US10685140B2 (en) 2016-06-10 2020-06-16 OneTrust, LLC Consent receipt management systems and related methods
US11301796B2 (en) 2016-06-10 2022-04-12 OneTrust, LLC Data processing systems and methods for customizing privacy training
US10997318B2 (en) 2016-06-10 2021-05-04 OneTrust, LLC Data processing systems for generating and populating a data inventory for processing data access requests
US10713387B2 (en) 2016-06-10 2020-07-14 OneTrust, LLC Consent conversion optimization systems and related methods
US11418492B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing systems and methods for using a data model to select a target data asset in a data migration
US10585968B2 (en) 2016-06-10 2020-03-10 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10169609B1 (en) 2016-06-10 2019-01-01 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US11100444B2 (en) 2016-06-10 2021-08-24 OneTrust, LLC Data processing systems and methods for providing training in a vendor procurement process
US10846433B2 (en) 2016-06-10 2020-11-24 OneTrust, LLC Data processing consent management systems and related methods
US11636171B2 (en) 2016-06-10 2023-04-25 OneTrust, LLC Data processing user interface monitoring systems and related methods
US11651106B2 (en) 2016-06-10 2023-05-16 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10706176B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Data-processing consent refresh, re-prompt, and recapture systems and related methods
US11341447B2 (en) 2016-06-10 2022-05-24 OneTrust, LLC Privacy management systems and methods
US11277448B2 (en) 2016-06-10 2022-03-15 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10706131B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Data processing systems and methods for efficiently assessing the risk of privacy campaigns
US10282700B2 (en) 2016-06-10 2019-05-07 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11294939B2 (en) 2016-06-10 2022-04-05 OneTrust, LLC Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software
US10762236B2 (en) 2016-06-10 2020-09-01 OneTrust, LLC Data processing user interface monitoring systems and related methods
US10592648B2 (en) 2016-06-10 2020-03-17 OneTrust, LLC Consent receipt management systems and related methods
US10909265B2 (en) 2016-06-10 2021-02-02 OneTrust, LLC Application privacy scanning systems and related methods
US10282559B2 (en) 2016-06-10 2019-05-07 OneTrust, LLC Data processing systems for identifying, assessing, and remediating data processing risks using data modeling techniques
US11416109B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Automated data processing systems and methods for automatically processing data subject access requests using a chatbot
US10565397B1 (en) 2016-06-10 2020-02-18 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US11134086B2 (en) 2016-06-10 2021-09-28 OneTrust, LLC Consent conversion optimization systems and related methods
US11366909B2 (en) 2016-06-10 2022-06-21 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11087260B2 (en) 2016-06-10 2021-08-10 OneTrust, LLC Data processing systems and methods for customizing privacy training
US11416589B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11651104B2 (en) 2016-06-10 2023-05-16 OneTrust, LLC Consent receipt management systems and related methods
US11023842B2 (en) 2016-06-10 2021-06-01 OneTrust, LLC Data processing systems and methods for bundled privacy policies
US10706379B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Data processing systems for automatic preparation for remediation and related methods
US11228620B2 (en) 2016-06-10 2022-01-18 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11438386B2 (en) 2016-06-10 2022-09-06 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11188615B2 (en) 2016-06-10 2021-11-30 OneTrust, LLC Data processing consent capture systems and related methods
US10776517B2 (en) 2016-06-10 2020-09-15 OneTrust, LLC Data processing systems for calculating and communicating cost of fulfilling data subject access requests and related methods
US11354434B2 (en) 2016-06-10 2022-06-07 OneTrust, LLC Data processing systems for verification of consent and notice processing and related methods
US11157600B2 (en) 2016-06-10 2021-10-26 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US10706174B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Data processing systems for prioritizing data subject access requests for fulfillment and related methods
US11295316B2 (en) 2016-06-10 2022-04-05 OneTrust, LLC Data processing systems for identity validation for consumer rights requests and related methods
US10592692B2 (en) 2016-06-10 2020-03-17 OneTrust, LLC Data processing systems for central consent repository and related methods
US10944725B2 (en) 2016-06-10 2021-03-09 OneTrust, LLC Data processing systems and methods for using a data model to select a target data asset in a data migration
US10885485B2 (en) 2016-06-10 2021-01-05 OneTrust, LLC Privacy management systems and methods
US10565161B2 (en) 2016-06-10 2020-02-18 OneTrust, LLC Data processing systems for processing data subject access requests
US10949170B2 (en) 2016-06-10 2021-03-16 OneTrust, LLC Data processing systems for integration of consumer feedback with data subject access requests and related methods
US11025675B2 (en) 2016-06-10 2021-06-01 OneTrust, LLC Data processing systems and methods for performing privacy assessments and monitoring of new versions of computer code for privacy compliance
US10997315B2 (en) 2016-06-10 2021-05-04 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10678945B2 (en) 2016-06-10 2020-06-09 OneTrust, LLC Consent receipt management systems and related methods
US10510031B2 (en) 2016-06-10 2019-12-17 OneTrust, LLC Data processing systems for identifying, assessing, and remediating data processing risks using data modeling techniques
US10848523B2 (en) 2016-06-10 2020-11-24 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11562097B2 (en) 2016-06-10 2023-01-24 OneTrust, LLC Data processing systems for central consent repository and related methods
US11138299B2 (en) 2016-06-10 2021-10-05 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11144622B2 (en) 2016-06-10 2021-10-12 OneTrust, LLC Privacy management systems and methods
US10949565B2 (en) 2016-06-10 2021-03-16 OneTrust, LLC Data processing systems for generating and populating a data inventory
US10909488B2 (en) 2016-06-10 2021-02-02 OneTrust, LLC Data processing systems for assessing readiness for responding to privacy-related incidents
US10878127B2 (en) 2016-06-10 2020-12-29 OneTrust, LLC Data subject access request processing systems and related methods
US10565236B1 (en) 2016-06-10 2020-02-18 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11238390B2 (en) 2016-06-10 2022-02-01 OneTrust, LLC Privacy management systems and methods
US10769301B2 (en) 2016-06-10 2020-09-08 OneTrust, LLC Data processing systems for webform crawling to map processing activities and related methods
US10496846B1 (en) 2016-06-10 2019-12-03 OneTrust, LLC Data processing and communications systems and methods for the efficient implementation of privacy by design
US10896394B2 (en) 2016-06-10 2021-01-19 OneTrust, LLC Privacy management systems and methods
US10708305B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Automated data processing systems and methods for automatically processing requests for privacy-related information
US11625502B2 (en) 2016-06-10 2023-04-11 OneTrust, LLC Data processing systems for identifying and modifying processes that are subject to data subject access requests
US10873606B2 (en) 2016-06-10 2020-12-22 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10776518B2 (en) 2016-06-10 2020-09-15 OneTrust, LLC Consent receipt management systems and related methods
US11138242B2 (en) 2016-06-10 2021-10-05 OneTrust, LLC Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software
US11416798B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing systems and methods for providing training in a vendor procurement process
US10740487B2 (en) 2016-06-10 2020-08-11 OneTrust, LLC Data processing systems and methods for populating and maintaining a centralized database of personal data
US10416966B2 (en) 2016-06-10 2019-09-17 OneTrust, LLC Data processing systems for identity validation of data subject access requests and related methods
US10607028B2 (en) 2016-06-10 2020-03-31 OneTrust, LLC Data processing systems for data testing to confirm data deletion and related methods
US11481710B2 (en) 2016-06-10 2022-10-25 OneTrust, LLC Privacy management systems and methods
US11343284B2 (en) 2016-06-10 2022-05-24 OneTrust, LLC Data processing systems and methods for performing privacy assessments and monitoring of new versions of computer code for privacy compliance
US11222309B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11227247B2 (en) 2016-06-10 2022-01-18 OneTrust, LLC Data processing systems and methods for bundled privacy policies
US11222139B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems and methods for automatic discovery and assessment of mobile software development kits
US10853501B2 (en) 2016-06-10 2020-12-01 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US10606916B2 (en) 2016-06-10 2020-03-31 OneTrust, LLC Data processing user interface monitoring systems and related methods
US11336697B2 (en) 2016-06-10 2022-05-17 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11727141B2 (en) 2016-06-10 2023-08-15 OneTrust, LLC Data processing systems and methods for synching privacy-related user consent across multiple computing devices
US10783256B2 (en) 2016-06-10 2020-09-22 OneTrust, LLC Data processing systems for data transfer risk identification and related methods
US11354435B2 (en) 2016-06-10 2022-06-07 OneTrust, LLC Data processing systems for data testing to confirm data deletion and related methods
US11392720B2 (en) 2016-06-10 2022-07-19 OneTrust, LLC Data processing systems for verification of consent and notice processing and related methods
US11366786B2 (en) 2016-06-10 2022-06-21 OneTrust, LLC Data processing systems for processing data subject access requests
US11057356B2 (en) 2016-06-10 2021-07-06 OneTrust, LLC Automated data processing systems and methods for automatically processing data subject access requests using a chatbot
US10467432B2 (en) 2016-06-10 2019-11-05 OneTrust, LLC Data processing systems for use in automatically generating, populating, and submitting data subject access requests
US11074367B2 (en) 2016-06-10 2021-07-27 OneTrust, LLC Data processing systems for identity validation for consumer rights requests and related methods
US10282182B2 (en) * 2016-09-23 2019-05-07 Intel Corporation Technologies for translation cache management in binary translation systems
US10013577B1 (en) 2017-06-16 2018-07-03 OneTrust, LLC Data processing systems for identifying whether cookies contain personally identifying information
CN109143983B (zh) * 2018-08-15 2019-12-24 杭州电子科技大学 嵌入式可编程控制器的运动控制方法及装置
US11544409B2 (en) 2018-09-07 2023-01-03 OneTrust, LLC Data processing systems and methods for automatically protecting sensitive data within privacy management systems
US10803202B2 (en) 2018-09-07 2020-10-13 OneTrust, LLC Data processing systems for orphaned data identification and deletion and related methods
US11144675B2 (en) 2018-09-07 2021-10-12 OneTrust, LLC Data processing systems and methods for automatically protecting sensitive data within privacy management systems
US11797528B2 (en) 2020-07-08 2023-10-24 OneTrust, LLC Systems and methods for targeted data discovery
EP4189569A1 (en) 2020-07-28 2023-06-07 OneTrust LLC Systems and methods for automatically blocking the use of tracking tools
US11475165B2 (en) 2020-08-06 2022-10-18 OneTrust, LLC Data processing systems and methods for automatically redacting unstructured data from a data subject access request
US11436373B2 (en) 2020-09-15 2022-09-06 OneTrust, LLC Data processing systems and methods for detecting tools for the automatic blocking of consent requests
US20230334158A1 (en) 2020-09-21 2023-10-19 OneTrust, LLC Data processing systems and methods for automatically detecting target data transfers and target data processing
US11397819B2 (en) 2020-11-06 2022-07-26 OneTrust, LLC Systems and methods for identifying data processing activities based on data discovery results
US11687528B2 (en) 2021-01-25 2023-06-27 OneTrust, LLC Systems and methods for discovery, classification, and indexing of data in a native computing system
US11442906B2 (en) 2021-02-04 2022-09-13 OneTrust, LLC Managing custom attributes for domain objects defined within microservices
US11494515B2 (en) 2021-02-08 2022-11-08 OneTrust, LLC Data processing systems and methods for anonymizing data samples in classification analysis
US11601464B2 (en) 2021-02-10 2023-03-07 OneTrust, LLC Systems and methods for mitigating risks of third-party computing system functionality integration into a first-party computing system
WO2022178089A1 (en) 2021-02-17 2022-08-25 OneTrust, LLC Managing custom workflows for domain objects defined within microservices
US11546661B2 (en) 2021-02-18 2023-01-03 OneTrust, LLC Selective redaction of media content
US11533315B2 (en) 2021-03-08 2022-12-20 OneTrust, LLC Data transfer discovery and analysis systems and related methods
US11562078B2 (en) 2021-04-16 2023-01-24 OneTrust, LLC Assessing and managing computational risk involved with integrating third party computing functionality within a computing system
US11620142B1 (en) 2022-06-03 2023-04-04 OneTrust, LLC Generating and customizing user interfaces for demonstrating functions of interactive user environments

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1429361A (zh) * 2000-03-24 2003-07-09 英特尔公司 用于在一个多线程处理器内在多个线程之间划分资源的方法和装置

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100470555B1 (ko) * 1997-01-23 2005-03-07 선 마이크로시스템즈 인코포레이티드 컴퓨터 자원의 로크방법 및 장치
US6101524A (en) * 1997-10-23 2000-08-08 International Business Machines Corporation Deterministic replay of multithreaded applications
US6237019B1 (en) 1998-03-18 2001-05-22 International Business Machines Corporation Method and apparatus for performing a semaphore operation
US6360194B1 (en) * 1998-09-08 2002-03-19 Bull Hn Information Systems Inc. Different word size multiprocessor emulation
DE69924857T2 (de) 1998-10-10 2006-03-02 Transitive Ltd., Hanging Ditch Programm-kode-umwandlung
US7516453B1 (en) * 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
US6223335B1 (en) * 1998-12-09 2001-04-24 Sun Microsystems, Inc. Platform independent double compare and swap operation
EP1202172A1 (en) * 2000-10-31 2002-05-02 Universiteit Gent Topological, on-the-fly classification of objects into a global set and local sets
US8473922B2 (en) * 2001-09-19 2013-06-25 Hewlett-Packard Development Company, L.P. Runtime monitoring in component-based systems
US20030066056A1 (en) * 2001-09-28 2003-04-03 Petersen Paul M. Method and apparatus for accessing thread-privatized global storage objects
US7496494B2 (en) * 2002-09-17 2009-02-24 International Business Machines Corporation Method and system for multiprocessor emulation on a multiprocessor host system
US7103528B2 (en) * 2002-09-19 2006-09-05 Lsi Logic Corporation Emulated atomic instruction sequences in a multiprocessor system
JP4436036B2 (ja) * 2002-12-18 2010-03-24 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理装置、トレース処理方法、プログラム及び記録媒体
US20040128542A1 (en) * 2002-12-31 2004-07-01 International Business Machines Corporation Method and system for native authentication protocols in a heterogeneous federated environment
US7178062B1 (en) * 2003-03-12 2007-02-13 Sun Microsystems, Inc. Methods and apparatus for executing code while avoiding interference
US7594089B2 (en) * 2003-08-28 2009-09-22 Mips Technologies, Inc. Smart memory based synchronization controller for a multi-threaded multiprocessor SoC
US7366956B2 (en) * 2004-06-16 2008-04-29 Hewlett-Packard Development Company, L.P. Detecting data races in multithreaded computer programs
US20060161919A1 (en) * 2004-12-23 2006-07-20 Onufryk Peter Z Implementation of load linked and store conditional operations
US8327336B2 (en) * 2009-03-18 2012-12-04 International Business Machines Corporation Enhanced thread stepping

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1429361A (zh) * 2000-03-24 2003-07-09 英特尔公司 用于在一个多线程处理器内在多个线程之间划分资源的方法和装置

Also Published As

Publication number Publication date
HK1098218A1 (en) 2007-07-13
US7962900B2 (en) 2011-06-14
GB2427045B (en) 2007-11-21
JP5182816B2 (ja) 2013-04-17
CN101194230A (zh) 2008-06-04
WO2006131710A1 (en) 2006-12-14
GB0511462D0 (en) 2005-07-13
JP2008546086A (ja) 2008-12-18
EP1955153B1 (en) 2013-11-20
GB2427045A (en) 2006-12-13
US20060277532A1 (en) 2006-12-07
EP1955153A1 (en) 2008-08-13

Similar Documents

Publication Publication Date Title
CN101194230B (zh) 具有对共享资源的访问协调的转换程序代码的方法和设备
US6721944B2 (en) Marking memory elements based upon usage of accessed information during speculative execution
CN101814018B (zh) 事务存储器(tm)系统中的读和写监控属性
US5802337A (en) Method and apparatus for executing load instructions speculatively
JPH0638234B2 (ja) 変換されたプログラムコードのソース命令不可分性を保持するためのシステムおよび方法
US6684398B2 (en) Monitor entry and exit for a speculative thread during space and time dimensional execution
US6438677B1 (en) Dynamic handling of object versions to support space and time dimensional program execution
US7168076B2 (en) Facilitating efficient join operations between a head thread and a speculative thread
CN101542441A (zh) 多处理器计算系统中的存储器一致性保护
KR20150111990A (ko) 하드웨어 포인터를 이용한 simd 코어 내 분기 해법
US6463526B1 (en) Supporting multi-dimensional space-time computing through object versioning
JPH10124317A (ja) 命令シーケンスを実行する方法及び装置
CN100362474C (zh) 单处理器流水线内的头线程和推理性线程的交替执行的方法和设备
US6460067B1 (en) Using time stamps to improve efficiency in marking fields within objects
US6691307B2 (en) Interpreter optimization for native endianness
US7814488B1 (en) Quickly reacquirable locks
US20090007115A1 (en) Method and apparatus for parallel XSL transformation with low contention and load balancing
US6453463B1 (en) Method and apparatus for providing finer marking granularity for fields within objects
JPH08161169A (ja) Vliw方式の計算機システム及びvliwの解釈・実行方法
US20100281465A1 (en) Load-checking atomic section
Bic et al. Automatic data/program partitioning using the single assignment principle
Kitano et al. Performance evaluation of parallel heapsort programs
Fuentes et al. SIMD-node Transformations for Non-blocking Data Structures
JPH0784797A (ja) ロードモジュールへのソースコード行番号登録方法および装置
JP2000020318A (ja) メモリアクセス命令削減装置および記録媒体

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: IBM YING CO., LTD.

Free format text: FORMER OWNER: TELANSIT CO., LTD.

Effective date: 20090731

Owner name: INTERNATIONAL BUSINESS MACHINE CORP.

Free format text: FORMER OWNER: IBM YING CO., LTD.

Effective date: 20090731

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20090731

Address after: American New York

Applicant after: International Business Machines Corp.

Address before: England Hampshire

Applicant before: IBM UK Ltd.

Effective date of registration: 20090731

Address after: England Hampshire

Applicant after: IBM UK Ltd.

Address before: London, England

Applicant before: Transitive Ltd.

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100519

Termination date: 20200605

CF01 Termination of patent right due to non-payment of annual fee