CN101814017B - 提供硬件属性的存储器模型以支持事务执行的方法和设备 - Google Patents

提供硬件属性的存储器模型以支持事务执行的方法和设备 Download PDF

Info

Publication number
CN101814017B
CN101814017B CN200910216935.2A CN200910216935A CN101814017B CN 101814017 B CN101814017 B CN 101814017B CN 200910216935 A CN200910216935 A CN 200910216935A CN 101814017 B CN101814017 B CN 101814017B
Authority
CN
China
Prior art keywords
attribute
access type
correlativity
address
memory
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
CN200910216935.2A
Other languages
English (en)
Other versions
CN101814017A (zh
Inventor
G·希菲尔
S·赖金
V·巴辛
E·科亨
O·马古利斯
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN101814017A publication Critical patent/CN101814017A/zh
Application granted granted Critical
Publication of CN101814017B publication Critical patent/CN101814017B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0715Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • G06F11/0724Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3017Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本文描述用于提供硬件属性的存储器模型以便支持事务执行的方法和设备。在遇到硬件属性的加载、例如加载读监视器、写监视器或缓冲属性的测试监视器操作时,响应于指明硬件属性已被丢失的受损字段而发出错误。此外,基于地址相关性和访问类型相关性为属性访问操作提供相关性动作、如阻挡和转发。因此,属性受损及其测试的不同情形在存储器模型中被允许或受到限制。

Description

提供硬件属性的存储器模型以支持事务执行的方法和设备
技术领域
本发明涉及处理器执行领域,具体来说,涉及指令组的执行。 
背景技术
半导体加工和逻辑设计的进步允许增加在集成电路装置上可存在的逻辑的数量。因此,计算机系统配置已经从系统中的单个或多个集成电路演进成单独集成电路上存在的多个核心和多个逻辑处理器。处理器或集成电路通常包括单个处理器管芯(die),其中处理器管芯可包括任何数量的核心或逻辑处理器。 
集成电路上数量不断增加的核心和逻辑处理器使更多软件线程能够并发运行。但是,可同时运行的软件线程的数量的增加引起使软件线程之间共享的数据同步的问题。多个核心或者多个逻辑处理器系统中访问(access)共享数据的一种常见解决方案包括使用锁定(clock)来保证对共享数据的多个访问间的互斥。但是,运行多个软件线程的不断增加的能力可能引起错误争用和执行的串行化。 
例如,考虑保存共享数据的哈希表(hash table)。采用锁定系统,编程人员可锁定整个哈希表,从而允许一个线程访问整个哈希表。但是,其它线程的吞吐量和性能可能受到不利影响,因为它们不能访问哈希表中的任何条目直到锁定被释放为止。备选地,可锁定哈希表中的各条目。不管怎样,在将这个简单示例推延到大型可缩放程序之后,显然,锁定争用、串行化、细粒度(fine-grain)同步和死锁避免的复杂度成为编程人员非常棘手的负担。 
另一种最近的数据同步技术包括使用事务存储器(transactional memory:TM)。事务执行通常包括运行多个微操作、操作或指令的分组。在以上示例中,两个线程在哈希表中运行,并且监视/跟踪其存储器访问。如果两个线程访问/改变同一条目,则可执行冲突解决以确保数据有效性。一种类型的事务执行包括软件事务存储器(STM),其中存储器访问的跟踪、冲突解决、中止任务和其它事务任务通过软件来执行,通常无需硬件支持。 
另一种类型的事务执行包括硬件事务存储器(HTM)系统,其中包含硬件以支持访问跟踪、冲突解决和其它事务任务。作为示例,可包含硬件属性以支持事务执行的缓冲、读监视(monitoring)和写监视。但是,按照当前存储器排序(ordering)实现设置和读取这些属性的指令可引起排序违规(violation)。此外,如果硬件属性以有损(lossy)方式保存、即在逐出(viction)/写回时丢失,则读取/测试监视器(monitor)指令可看到不正确的监视器数据。 
发明内容
本发明一方面涉及一种设备。该设备包括:数据高速缓冲存储器,包括与有损(lossy)数据相关联的高速缓冲元件;受损(loss)字段,与所述高速缓冲元件相关联;以及控制逻辑,耦合到所述数据高速缓冲存储器和所述受损字段,响应于确定所述有损数据将被丢失而更新所述受损字段以保存有损值。 
本发明另一方面涉及一种设备。该设备包括:高速缓冲存储器,包括与属性相关联的高速缓冲元件;耦合到所述高速缓冲存储器的存储缓冲器,保存与更新所述属性的存储操作相关联的存储缓冲器条目;以及与所述存储缓冲器相关联的控制逻辑,阻挡从所述属性进行读取的后续加载操作,直到响应于所述存储操作更新所述属性。 
本发明另一方面涉及一种设备。该设备包括:与高速缓冲存储器的高速缓冲元件相关联的多个硬件属性;至少基于对所述多个硬件属性中至少之一的存储操作的第一属性访问类型和对所述多个硬件属性中至少之一的后续加载操作的第二属性访问类型确定所述存储操 作与所述后续加载操作之间是否存在相关性的逻辑;以及耦合到所述逻辑的转发逻辑,响应于确定所述存储操作与所述后续加载操作之间存在所述相关性,所述转发逻辑向所述后续加载操作转发所述存储操作的已更新属性数据。 
本发明另一方面涉及一种方法。该方法包括:遇到读取硬件属性的加载操作,所述加载操作与属性类型相关联并引用与所述属性类型的硬件属性相关联的地址;确定即时的(in-flight)前一存储操作是否与所述属性类型相关联并引用与所述硬件属性相关联的所述地址;以及响应于确定所述即时的前一存储操作与所述属性类型相关联并引用与所述硬件属性相关联的所述地址,执行相关性动作。 
附图简介
本发明以示例方式进行说明而不受附图中的示图限制。 
图1示出包括能够并发运行多个软件线程的多个处理元件的处理器的实施例。 
图2示出包括支持对硬件属性的访问的存储器排序的结构的处理器的实施例。 
图3示出包括支持对硬件属性的访问的存储器排序的结构的处理器的另一实施例。 
图4示出包括支持对硬件属性的访问的存储器排序的结构的处理器的另一实施例。 
图5示出在读取硬件属性时提供正确存储器排序的方法的流程图的实施例。 
具体实施方式
在以下描述中,提出例如用于事务执行的具体硬件结构、访问监视器的具体类型和实现、具体高速缓存实现、具体类型的高速缓存相干(coherency)模型、具体数据粒度(granularity)、属性的具体类型以及 检测相关性(dependency)的具体结构等示例的许多具体细节,以便提供对本发明的透彻了解。然而,对本领域技术人员而言,显然,这些具体细节不需要被用于实施本发明。在其它情况下,没有详细描述例如硬件监视器/属性的实现细节、事务划分、特定及备选多核心和多线程处理器架构、具体编译器方法/实现以及微处理器的具体操作细节等众所周知的组件或方法,以免不必要地混淆本发明。 
本文所述的方法和设备用于提供硬件属性的存储器模型,以便支持事务执行。具体来说,参照包括访问缓冲器的无序(out-of-order)处理器来论述存储器模型。实际上,图2-4涉及修改缓冲器、如存储缓冲器的实施例。但是,用于提供硬件属性的存储器模型的方法和设备并不局限于此,因为它们可通过包括用于处理对硬件属性的访问的任何结构的任何样式的处理器来实现。 
参照图1,说明能够并发运行多个线程的处理器的实施例。注意,处理器100可包括对硬件事务执行的硬件支持。处理器100还可结合硬件事务执行或者单独提供对软件事务存储器(STM)的硬件加速、STM的单独执行或者它们的组合、如混合事务存储器(TM)系统的硬件支持。处理器100包括任何处理器,例如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器或者运行代码的其它装置。如图所示,处理器100包括多个处理元件。 
在一个实施例中,处理元件表示线程单元、进程单元、上下文、逻辑处理器、硬件线程、核心和/或能够保存处理器的状态、如执行状态或架构状态的任何其它元件。换言之,在一个实施例中,处理元件表示能够独立与例如软件线程、操作系统、应用程序(application)或其它代码等代码相关联的任何硬件。物理处理器通常表示集成电路,它可能包括任何数量的其它处理元件、如核心或硬件线程。 
核心通常表示位于集成电路上能够保持独立架构状态的逻辑,其中各独立保持的架构状态与至少一些专用执行资源相关联。与核心相比,硬件线程通常表示位于集成电路上能够保持独立架构状态的任何 逻辑,其中独立保持的架构状态共享对执行资源的访问。可见,当某些资源被共享而其它资源专用于架构状态时,硬件线程与核心的命名之间的界限(line)重叠。核心和硬件线程又往往被操作系统看作是单独的逻辑处理器,其中操作系统能够单独调度各逻辑处理器上的操作。 
如图1所示,物理处理器100包括两个核心,核心101和102,它们共享对较高级高速缓存110的访问。虽然处理器100可包括不对称核心,即具有不同配置、功能单元和/或逻辑的核心,但示出对称核心。因此,示为与核心101相同的核心102不作详细论述,以免重复论述。另外,核心101包括两个硬件线程101a和101b,而核心102包括两个硬件线程102a和102b。因此,软件实体、如操作系统可能将处理器100看作4个独立处理器,即能够并发运行4个软件线程的4个逻辑处理器或处理元件。 
在这里,第一线程与架构状态寄存器101a相关联,第二线程与架构状态寄存器101b相关联,第三线程与架构状态寄存器102a相关联,且第四线程与架构状态寄存器102b相关联。如图所示,将架构状态寄存器101a复制到架构状态寄存器101b,因此能够为逻辑处理器101a和逻辑处理器101b存储单独的架构状态/上下文。也可为线程101a和线程101b复制其它较小资源、例如重命名分配器逻辑130中的重命名逻辑和指令指针。可通过分区(partitioning)来共享某些资源,例如重排序/引退(retirement)单元135中的重排序缓冲器、ILTB120、加载/存储缓冲器和队列。可能完全共享例如通用内部寄存器、页表基址寄存器(base register)、低级数据高速缓存和数据-TLB 115、执行单元140和无序单元135的部分等其它资源。 
处理器100通常包括可完全共享、通过分区共享或者专用于处理元件的其它资源。图1中,示出具有处理器的说明性功能单元/资源的纯示范处理器的实施例。注意,处理器可包括或省略这些功能单元中的任一个,也包括未示出的任何其它已知功能单元、逻辑或固件。 
如图所示,处理器100包括总线接口模块105,以便与处理器100外部的例如系统存储器175、芯片组、北桥(northbridge)或其它集成电路等装置进行通信。存储器175可以专用于处理器100或者与系统中的其它装置共享。较高级或更外面(further-out)的高速缓存110将缓存从较高级高速缓存110最近取出的元素。注意,“较高级或更外面”表示增大或者进一步远离执行单元的高速缓存级。在一个实施例中,较高级高速缓存110是第二级数据高速缓存。但是,较高级高速缓存110并不局限于此,因为它可与指令高速缓存关联或者包括指令高速缓存。踪迹(trace)高速缓存、即一种类型的指令高速缓存而是可耦合在解码器125之后,以便存储最近解码的踪迹。模块120还可能包括预测要被运行/采取的分支的分支目标缓冲器以及存储指令的地址转换条目的指令转换缓冲器(I-TLB)。 
解码模块125耦合到取单元120,以便对所取元素进行解码。在一个实施例中,处理器100与定义/指定可在处理器100执行的指令的指令集架构(Instruction Set Architecture:ISA)相关联。在这里,ISA所识别的机器代码指令通常包括指令中被称作操作码(opcode)的部分,其引用/指定待执行的指令或操作。 
在一个示例中,分配器和重命名器块130包括分配器,以便保留如寄存器文件的资源来存储指令处理结果。但是,线程101a和101b可能能够无序执行,其中分配器和重命名器块130还保留如重排序缓冲器的其它资源来跟踪指令结果。单元130还可包括寄存器重命名器,以便将程序/指令引用寄存器重命名成处理器100内部的其它寄存器。重排序/引退单元135包括例如上述重排序缓冲器、加载缓冲器和存储缓冲器等组件,以便支持无序执行的指令的无序执行和稍后的按序引退。 
在一个实施例中,调度器和执行单元块140包括调度器单元,以便调度执行单元上的指令/操作。例如,在具有可用浮点执行单元的执行单元的端口上调度浮点指令。还包括与执行单元相关联的寄存器 文件,以便存储信息指令处理结果。示范执行单元包括浮点执行单元、整数执行单元、跳转(jump)执行单元、加载执行单元、存储执行单元和其它已知执行单元。 
较低级数据高速缓存和数据转换缓冲器(D-TLB)150耦合到执行单元140。数据高速缓存将存储可能以存储器相干状态保存的最近使用/操作的元素、如数据操作数。D-TLB将存储最近的虚拟/线性物理地址转换。作为特定示例,处理器可包括页表结构,以便将物理存储器分为多个虚拟页面。 
在一个实施例中,处理器100能够进行硬件事务执行、软件事务执行或者它们的组合或混合。又可称作代码的临界或原子(atomic)段的事务包括将要作为原子组执行的指令、操作或微操作的分组。例如,指令或操作可用于划分事务或临界段。在下面更详细描述的一个实施例中,这些指令是例如指令集架构(ISA)的指令集的一部分,它们可由处理器100的硬件、如上述解码器识别。这些指令,一旦从高级语言编译成硬件可识别汇编语言,则通常包括解码器在解码阶段期间识别的操作代码(操作码)或者指令的其它部分。 
通常,在事务的执行期间,直到提交(commit)该事务才使对存储器的更新全局可见。作为示例,对存储单元(location)的事务写入可能对本地线程可见,然而,响应于来自另一线程的读取,直到提交包括该事务写入的事务才转发写数据。在事务仍然未决的时候,跟踪从存储器加载并写入存储器的数据项/元素,下面更详细地进行论述。一旦事务达到提交点,如果对于该事务尚未检测到冲突,则提交事务,并且使在事务期间所进行的更新全局可见。 
但是,如果事务在其未决期间失效,则中止并可能重新开始该事务,而不使更新全局可见。因此,本文所使用的“事务未决”表示已经开始执行但尚未提交或中止、即未决的事务。 
软件事务存储器(STM)系统通常涉及通过软件或者至少部分通过软件执行访问跟踪、冲突解决或者其它事务存储器任务。在一个实 施例中,处理器100能够运行编译器,以便将程序代码编译成支持事务执行。在这里,编译器可插入操作、调用(call)、函数和其它代码,以便实现事务的执行。 
编译器通常包括将源文本/代码转换成目标文本/代码的程序或程序集合。用编译器对程序/应用程序代码的编译通常在多阶段和多遍(pass)进行,以便将高级编程语言代码变换成低级机器或汇编语言代码。然而,对于简单编译还可使用单遍编译器。编译器可利用任何已知的编译技术,并且执行任何已知的编译器操作,例如词汇分析、预处理、解析(parsing)、语义分析、代码生成、代码变换和代码优化。 
较大编译器通常包括多个阶段,但是大多数情况下这些阶段包含在两个一般阶段中:(1)前端,即通常可在其中进行语法处理、语义处理和某种变换/优化;以及(2)后端,即通常在其中进行分析、变换、优化和代码生成。某些编译器涉及中端,中端说明编译器的前端与后端之间轮廓的模糊。因此,对编译器的插入、关联、生成或其它操作的引用可在任意上述阶段或遍以及编译器的任何其它已知阶段或遍中进行。作为说明性示例,编译器可能在编译的一个或多个阶段中插入事务操作、调用(call)、函数等,例如在编译的前端阶段中插入调用(call)/操作,然后在事务存储器变换阶段期间将调用(call)/操作变换成较低级代码。 
然而,不管编译器的执行环境和动态或静态性质,在一个实施例中,编译器编译程序代码以便实现事务执行。因此,在一个实施例中,对执行程序代码的引用表示:(1)动态或静态运行编译器程序,以便编译主程序代码、保持事务结构或者执行其它事务相关操作;(2)运行包括事务操作/调用(call)的主程序代码;(3)运行与主程序代码性关联的其它程序代码,例如库;或者(4)它们的组合。 
在一个实施例中,处理器100能够利用硬件/逻辑、即在硬件事务存储器(HTM)系统中执行事务。当实现HTM时,从架构和微架构的角度来看,存在许多特定实现细节;其中的大多数在本文中不作论 述,以免不必要地混淆本发明。但是,为了便于说明,公开了某些结构和实现。然而,应当注意,这些结构和实现不是必需的,而是可增加具有不同实现细节的其它结构和/或用具有不同实现细节的其它结构来替代。 
可通过本地处理元件以及可能通过其它处理元件对数据项进行访问和请求。没有事务存储器系统的安全机制,这些访问中的一些可能产生无效的数据和执行,即对数据的写入使读取失效或者读取无效数据。因此,处理器100可能包括跟踪或监视对数据项的存储器访问的逻辑,以便识别可能的冲突。 
数据项或数据元素可包括由硬件、软件或者它们的组合所定义的任何粒度级的数据。数据、数据元素、数据项或者对其的引用等示例的非详尽列表包括存储器地址、数据对象、类、动态语言代码的类型的字段、动态语言代码的类型、变量、操作数、数据结构以及对存储器地址的间接引用。但是,任何已知的数据分组可称作数据元素或数据项。上述示例中的几个、如动态语言代码的类型的字段和动态语言代码的类型表示动态语言代码的数据结构。为了进行说明,动态语言代码、例如来自Sun Microsystems公司的JavaTM是强类型化(typed)语言。各变量具有在编译时已知的类型。类型分为两类:原语(primitive)类型(布尔和数值,例如整数、浮点)和引用类型(类、接口和阵列)。引用类型的值是对对象的引用。在JavaTM中,由字段组成的对象可以是类实例或阵列。给定类A的对象a,通常用符号A::x表示类型A的字段x,并用a.x表示类A的对象a的字段x。例如,表达式可表达为a.x=a.y+a.z。在这里,加载字段y和字段z以便相加,并且将结果写入字段x。 
因此,监视/缓冲对数据项的存储器访问可在任意数据级粒度执行。例如,在一个实施例中,在类型级监视对数据的存储器访问。在这里,对字段A::x的事务写入和字段A::y的非事务加载可作为对同一数据项、即类型A的访问而被监视。在另一实施例中,存在字段 级粒度执行存储器访问监视/缓冲。在这里,对A::x的事务写入和A::y的非事务加载不作为对同一数据项的访问而被监视,因为它们是对独立字段的引用。注意,在跟踪对数据项的存储器访问时可考虑其它数据结构或编程技术。作为示例,假定类A的对象的字段x和y、即A::x和A::y指向类B的对象,被初始化成新分配的对象,并且在初始化之后就决不被写入。在一个实施例中,针对由A::y所指向的对象的字段B::z的非事务加载,对由A::x所指向的对象的字段B::z的事务写入不作为对同一数据项的存储器访问而被监视。由这些示例推延,确定监视器可在任何数据粒度级执行监视/缓冲是可能的。 
在一个实施例中,监视器包括读监视器和写监视器,以便对确定要被监视的加载和存储进行相应跟踪。作为示例,硬件读监视器和写监视器将以数据项粒度监视数据项,而不管基础存储结构的粒度。在一个实施例中,数据项受以存储结构粒度所关联的跟踪机制限制,以确保适当监视至少整个数据项。在Gad Sheaffer等人同此提交的标题为“Read and Write Monitoring Attributes in Transactional Memory(TM)Systems”的共同未决申请No.XX/XXXXXX(律师案卷号P29130)中更详细地论述了利用读监视器/属性来监视数据项的示例。但是,可用监视器、属性、注释或其它跟踪机制检测与用数据或结构的任何粒度保存数据的事务执行相关联的冲突。 
属性包括用于保存与数据项相关联的状态的任何逻辑、固件或结构。例如,数据项的属性包括位(bit)向量,其中位向量中的每个位表示数据项的属性,例如经事务加载、经事务写入、经非事务加载、经非事务写入、未经事务加载、未经事务写入、未经非事务加载、未经非事务写入、经缓冲、未经缓冲、经访问冲突检测、未经访问冲突检测、读请求、没有读请求、写请求、没有写请求、所有权请求、没有所有权请求或者与数据项或保存数据项的存储器存储单元相关联的任何其它属性或状态。作为另一示例,数据项的属性包括编码值。例如,利用三个属性位、即6个二进制值000、001、010、011、100、 101、110对例如这4种状态(1)经读监视、(2)未经读监视、(3)经写监视、(4)未经写监视、(5)经缓冲以及(6)未经缓冲的状态进行编码。 
作为又一示例,包含属性作为与高速缓冲存储器、如数据高速缓存150相关联的相干状态阵列的部分。示范高速缓存相干状态的非详尽列表包括:修改、独占、共享或无效(MESI)状态,它们采用读监视器属性、写监视器属性、缓冲属性、其它属性或者它们的组合来补充或增大。因此,本质上创建新的相干状态,例如经读监视的缓冲相干状态或者经写监视的缓冲相干状态。因此,可结合硬件监视器/属性利用现有的已知相干与通信/窥探(snoop)协议来检测冲突。 
基于该设计,高速缓存相干请求和高速缓存行(line)的所监视相干状态的不同组合引起可能的冲突,例如高速缓存行保存处于共享读状态的数据项而窥探指明对该数据项的写请求。相反,高速缓存行保存处于缓冲写状态的数据项而外部窥探指明对该数据项的读请求可被认为可能发生了冲突。在一个实施例中,为了检测访问请求和属性状态的这种组合,窥探逻辑耦合到冲突检测/报告逻辑、如用于冲突检测/报告的监视器和/或逻辑。 
在一个实施例中,在硬件中登记处理程序(handler),以便支持诸如访问冲突、监视器受损冲突(loss of monitor confilict)、数据受损冲突(loss ofdata confilict)等冲突的有效处理。作为示例,寄存器可由软件、如事务运行时间或应用程序代码修改,以便登记事务处理程序的地址。当检测到受关注事件、如上述访问冲突或信息受损时,则在一个实施例中,将控制流程引导(vector)到寄存器中所登记的事务处理程序,而不干预特许软件、如操作系统(OS)。在Gad Sheaffer等人同此提交的标题为“Registering a User-Handler in Hardware forTransactional Memory Event Handling”的相关申请(律师案卷号P29129)中论述了在硬件中登记处理程序的形式。 
无论将属性保存为有损数据、即在从高速缓存的关联逐出时丢失的信息还是作为逐出时写回的数据的部分,在一个实施例中,处理器 100的架构都支持访问属性的指令、操作或微操作。例如,设置监视器指令将属性设置成指定值,清除监视器指令将属性清除到缺省值,而测试属性指令读取属性。另外,例如事务加载和事务存储的特定操作可隐式地设置属性。例如,事务存储可隐式地设置指明数据被缓冲的缓冲属性以及指明缓冲数据被写监视的写监视属性。 
在一个实施例中,提供存储器模型以便支持可包括显式或隐式访问的对属性的访问的正确排序。例如,先前在属性的第一和第二加载无序运行时,可允许不合法存储器排序情形。为了说明伪码和可能的结果,在无序执行处理器中包含以下项。 
Set_monitor[M] 
R0=test_monitor[M] 
R1=test_monitor[M] 
1)允许R0=“TRUE”和R 1=“FALSE”。 
2)不允许R0=“FALSE”和R1=“TRUE”。 
3)允许R0=“TRUE”和R1=“TRUE”。 
4)允许R0=“FALSE”和R1=“FALSE”。 
注意,在一个实施例中,允许情形1、3和4。但是,对于情形2,假定读监视器设置成指明地址M在与地址M相关联的读属性(R0)的第一测试之前被读监视。此外,与地址M和读监视器相关联的高速缓存行在读属性的第二测试(R1)之前被逐出。在这里,如果第一和第二测试无序执行,则第一测试(R0)可因逐出而返回没有读监视指示(FALSE),而第二测试返回读监视指示(TRUE)。在一个实施例中,这种情形是不合法的,并且可在无序运行的按程序顺序的测试操作之间引起可能的不一致。 
因此,在一个实施例中,例如高速缓存集合、高速缓存行、高速缓存存储单元或高速缓存条目的高速缓冲元件与受损字段相关联。作为示例,受损字段包含在数据高速缓存的一部分中,使得信息在逐出时没有丢失。在这里,当受损字段设置成受损值以指明属性信息已丢 失并且可能不正确时,在后续访问、如下一加载操作提供一致性。为了进行说明,重新检查前一示例。如上所述,首先运行第二测试操作(R1),随后,从逐出出现读属性的受损,其导致受损字段被设置成受损值。当第一测试操作(R0)随后随受损字段被设置而无序运行时,则检测到冲突。作为示例,R0在这种情形下出错。响应于该错误,重新开始两个操作,以便确保存储器模型不被破坏,即不允许上述情形2。 
除了属性信息受损之外,其它存储器一致性违规可能存在于先前的处理器架构,例如由属性访问指令/操作针对外部访问所引起的不一致。作为示例,假定与地址A关联的设置读监视器操作将在地址A的加载操作之前运行。注意,在启用读监视器的缓冲的情形下,则设置读监视器操作可引退,然后在加载操作引退之后更新读监视器。加载操作的引退与读属性的实际更新之间的时间是易损(vulnerability)区域。 
为了进行说明,假定在这时接收到外部窥探,其中本地处理元件认为读属性设置成指明地址A被读监视;但是,属性尚未标记,因此外部窥探认为地址A未被读监视。本质上,不存在读监视器/属性的一致情景(view)。因此,在一个实施例中,响应于窥探,对存储缓冲器进行窥探,以便确定前一存储、如上述设置读监视器存储操作是否即时(in-flight)并且没有标记读属性。例如,如果命中存储缓冲器中的条目,即存在对硬件属性的即时存储,则阻止转发来自该条目的属性信息以及更新读属性。 
除了属性访问指令与外部访问之间可能的一致性问题之外,属性访问的无序执行也可能引起一致性问题。例如,以其中事务加载隐式地设置读监视器的情形为例,测试监视器指令随后测试读监视器,并且这些操作无序运行。因此,测试监视器指令可基于运行操作的定时(timing)返回经监视或未经监视。多个存储器模型实现可用于缓解这个问题。 
作为第一示例,设置读监视器的操作、如设置读监视器操作阻挡/阻止加载该读监视器的操作、如测试读监视器操作,直到设置读监视器的操作相应地更新该读监视器。因此,避免了上述易损区域,因为后续测试操作被阻挡,直到出现对读监视器的标记为止。作为另一示例,将所监视信息从设置监视器的指令转发到测试监视器的指令。另外,可模拟读监视器的缓冲而实际上不缓冲读监视器。 
为了提供转发或执行阻挡,可包括存储和/或加载缓冲器的存储器排序缓冲器要检测生产商操作与客户操作之间的相关性。但是,相关性可以不仅依赖于地址相关性,而且还依赖于访问类型相关性,即生产商访问的属性类型和客户访问的属性类型。下表A示出属性访问指令之间的相关性的示例。 
表A:相关属性访问指令的实施例 
注意,该表不是指令/操作及其可能相关性的详尽列表。在表A中,值1表示存在相关性,其可引起转发或阻挡相关性动作,如上所述。下面参照图3-4来论述支持转发或阻挡的结构。一旦检测到相关性,则确定是否应当转发来自生产商的信息或者阻挡客户,直到生产商完成用信息对属性进行更新。 
如以上最初参照图1所述,为了便于论述,处理器100的架构是纯说明性的。类似地,将属性与数据项/元素相关联的具体示例也是示范性的,因为可利用以不同粒度数据项将硬件监视器/属性进行关联的任何方法。 
参照图2,示出处理器的实施例,该处理器包括实现支持事务执行的硬件属性的存储器模型的结构。处理器250包括任何类型的具有 任何数量的能够进行事务执行的处理元件的已知处理器。虽然未示出,但是处理器250可耦合到例如芯片组、即存储器控制器中心(hub)和输入/输出(I/O)控制器中心以及系统存储器等其它系统组件。计算机系统中I/O装置的常见示例包括网络控制器、视频显示适配器、图形处理器、音频控制器或其它输入/输出装置。 
在一个实施例中,处理器250包括高速缓冲存储器。高速缓存的最常见示例包括数据高速缓存,例如图1所示的第一级高速缓存或第二级高速缓存。但是,高速缓存还可包括指令高速缓存、踪迹高速缓存或其它已知高速缓存。虽然没有详细描述高速缓存架构以免不必要地混淆本论述,但是可按照多种方式来组织高速缓存。例如,高速缓存可以:完全关联,即存储器地址可保存在高速缓存的任何位置;集合关联(set associate),其中某些存储器地址范围被限制到高速缓存的特定集合;或者直接映射高速缓存,其中多个地址将被保存在高速缓存内的单个存储单元中。注意,本文所述的方法和设备可采用任何高速缓存组织来实现。 
如图所示,高速缓存包括又称作高速缓冲存储器或数据阵列的数据部分205以及与高速缓冲存储器205相关联的控制逻辑230。高速缓冲存储器205包括元件210、215、220和225。本文所使用的高速缓冲元件表示高速缓存的任何粒度的结构元件,例如高速缓存行、高速缓存条目、高速缓存存储单元或高速缓存集合。例如,元件210可包括高速缓存集合,高速缓存集合具有集合关联高速缓存的多个行。相比之下,在另一实施例中,元件210包括多个条目中处于以相似方式与阵列235相关联的集合中的条目。 
控制逻辑230包括阵列235,该阵列具有分别与高速缓冲元件210、215、220和225相关联/对应的条目211、216、221和226。此外,硬件读属性、写属性和缓冲属性211r、211w、211b、216r、216w、216b、221r、221w、221b、226r、226w和226b类似地与高速缓冲元件210、215、220和225相关联。虽然在Gad Sheaffer等人同此提交 的标题为“Read and Write Monitoring Attributes in TransactionalMemory(TM)Systems”的共同未决申请(律师案卷号P29130)中更详细地描述了硬件监视器及其各种实施例,但在本文中简要描述属性的实施例以促进论述。 
在一个实施例中,读和写监视器要限制对数据、如数据项201的监视,而不管保存该数据的物理结构的粒度。从以上论述注意,数据项可具有任何粒度。实际上,编程人员可通过提供起始地址并接着提供构成数据项的多个附加字节来定义数据项。在这里,假定元件210包括高速缓存行。因此,数据项可小于高速缓存205的行、如行210,或者大于高速缓存205的高速缓存行,还可能不与高速缓存205的高速缓存行的起始和结束边界对齐。 
在图2的示例中,数据项201横跨单高速缓存行。虽然P29130论述了监视属性的可能动态分配,但在这个示例中基于高速缓冲元件提供属性211r、211w、211b、216r、216w、216b、221r、221w、221b、226r、226w和226b。因此,如果数据项201将被读监视,则将读监视器211r更新到受监视状态以指明对应元件211被读监视。 
在一个实施例中,属性211r、211w、211b、216r、216w、216b、221r、221w、221b、226r、226w和226b被认为是有损数据。有损数据通常表示本地数据,其在例如逐出高速缓存元件210的至少一部分和写回到较高级高速缓存的事件时可能被丢失。在一个实施例中,阵列235包括相干状态阵列,其中条目211、216、221和226是保存分别与高速缓存元件210、215、220和225对应的相干状态值的相干条目。常见高速缓存相干状态包括MESI(Modified Exclusive Shared andInvalid)、即改进独占共享和无效高速缓存相干状态。但是,本质上添加所示三个属性位创建了基于读监视、写监视和缓冲的新相干状态。 
因此,假定高速缓冲元件210包括高速缓存行,则响应于高速缓存行210的逐出,包括具有属性211b、211r和211w的条目211的关 联状态信息丢失、即没有被写回。因此,当本地元件认为属性被设置但属性已丢失时,可能出现一致性问题。在这里,一致性问题可随另一属性访问或者外部访问出现,因为丢失了正确信息。 
因此,在一个实施例中,受损字段212、217、222和227分别与元件210、215、220和225相关联。如图所示,受损字段212、217、222和227包含在元件210、215、220和225中。但是,受损字段可保存在逐出时不被丢失的任何位置。例如,受损字段212可包含在逐出行210时不被丢失或者可被易于记入日志并且与高速缓存行210相关联的数据高速缓存结构中。 
控制逻辑230通常包括窥探逻辑、更换逻辑、状态逻辑以及执行任何已知高速缓存操作的其它高速缓存相关逻辑。在一个实施例中,响应于确定关联有损数据将被丢失,控制逻辑230单独或者结合处理器250中的其它逻辑将受损字段更新成受损值。例如,假定有损数据包含相干条目211中的属性211b、211r和211w。在这里,当设置属性、如211b并且选择高速缓冲元件210以供逐出时,控制逻辑230更新受损字段212。注意,在一个实施例中,当没有数据丢失、即不存在有损数据、例如没有设置属性211b、211r和211w时,则逐出不会引起受损字段212的设置。换言之,如果不存在丢失的数据,则没有理由指明受损。 
在一个实施例中,如上所述,可调用(invoke)处理程序来处理受损。但是,在另一实施例中,在后续访问时确保一致性。例如,假定事务加载导致属性211r被设置成指明读监视,然后选择行210以供逐出。因此,控制逻辑230将受损字段212设置成受损值。在这里,可利用地址散列(hashing)的形式,因为在逐出之后条目210的地址不同。在逐出之前,有损数据、如行210的标签被单独存储,或者将在所逐出行与新分配行之间相同的信息用于受损字段212、如用于不是完全关联的高速缓存阵列的设置位。先前在没有受损字段212的情况下,后续加载、如测试监视器操作将从211b接收到不正确的监视器 信息,因为它在逐出期间丢失。相反,在一个实施例中,响应于保存在字段212中的受损值,后续测试读监视器操作出错。因此,通过下一访问操作确保一致性。 
来看图3,示出了处理器的实施例,该处理器包括支持对硬件属性的访问的存储器排序的结构。注意,为了简洁起见,仅示出处理器的几种选择结构。在一个实施例中,逻辑包含在处理器305中,以便确定对硬件属性的存储操作与对硬件属性的后续加载操作之间是否存在相关性,使得可执行正确的相关性动作。 
作为示例,确定生产商操作与客户操作之间的相关性基于属性访问类型。如上所述,示范属性包括读监视器、写监视器和缓冲属性。在这里,关联访问类型包括读监视器访问类型、写监视器访问类型和缓冲访问类型。先前,存储转发完全根据地址相关性来实现。 
但是,在一个实施例中,使用与生产商操作和客户操作的地址结合的生产商操作和客户操作的访问类型来确定相关性。如上文参照表A所述,对同一地址的访问的不同类型可以不相关。因此,在一个实施例中,在设置写监视器访问类型与测试读监视器访问类型之间不存在相关性。 
基于操作的访问类型确定相关性的一个实施例如图3所示。在这里,未具体示出的存储器排序缓冲器可能包含存储缓冲器310和加载缓冲器350。这两个缓冲器保存与对应操作相关联的条目。如图所示,条目325将与具有属性访问类型327的存储操作引用地址328相关联,以便存储属性数据326。虽然为了便于示范将存储缓冲器示为具有两个独立阵列、即存储数据缓冲器320和存储地址缓冲器315,但是可利用存储缓冲器的任何已知实现。 
本质上,存储缓冲器逻辑310保存与存储操作相关联、即在存储缓冲器条目325的存储地址缓冲器315中的属性访问类型327。加载缓冲器350相对加载操作以相似方式工作。如图所示,条目355保存与访问类型357相关联的地址358和数据条目356。为了进行说明, 假定条目325与前一即时存储操作、如设置读监视器操作相关联,以便采用已更新属性信息326来更新硬件属性、如读监视器属性。随后,遇到加载操作。在这里,缓冲器条目355与后续加载操作相关联。 
相关性/阻挡器(blocker)逻辑360将后续加载操作的访问类型357和地址358与前一存储操作的访问类型327和地址328进行比较。在一个实施例中,以搜索方式来执行比较,即将访问类型357附加到地址358以便搜索存储地址缓冲器315。如果整个附加搜索准则命中存储缓冲器310中的条目,则存在相关性。在这里,如果附加到地址358的访问类型357的组合与附加到地址338的访问类型337匹配,则确定在存储操作与后续加载操作之间存在相关性。 
换言之,访问类型即读监视器、写监视器或缓冲器访问类型匹配,并且地址匹配,因此在生产商存储操作与客户后续加载操作之间存在相关性。注意,在一个实施例中,“后续”表示程序顺序,使得存储缓冲器310的搜索仅由按照程序顺序在加载缓冲器条目之前的存储缓冲器条目组成。 
另外,转发逻辑370耦合到相关性/阻挡器逻辑360,它单独或者结合相关性/阻挡器逻辑相应执行相关性动作。在一个实施例中,相关性动作包括阻挡动作。作为一个示例,可以不转发读监视器。因此,如果访问类型包括读监视器访问类型并且检测到相关性,则阻挡后续加载操作,直到与条目325相关联的存储操作将地址328的适当读监视器更新到已更新属性信息326。作为示例,阻挡逻辑360包括将加载缓冲器条目355中的阻挡字段更新成阻挡值的逻辑。基于将阻挡值保存在条目355中的阻挡字段,直到清除该阻挡值才分派加载。 
相反,另一相关性动作包括转发监视器数据。在这里,如果相关性逻辑360确定相关性,则逻辑370将已更新数据326转发给加载操作。然而,如果相关性逻辑360确定不存在相关性,则不采取相关性动作。但是,如果允许转发监视器数据,则在一个实施例中,窥探逻辑将响应于外部访问请求而窥探存储缓冲器310。在这里,如果外部 访问请求产生窥探命中、如命中条目325,则转发逻辑370将不转发已更新属性数据326。此外,响应于命中外部窥探,可以不允许存储操作、如设置监视器操作更新对应监视器。 
参照图4,示出了确定属性访问操作之间的相关性的另一实施例。注意,在图3中显式属性访问类型、如通过考虑操作码所指定的类型与存储条目相关联。在那里,访问类型本质上是地址的扩展、如2位扩展,以便表示上述三种状态。此外,相关性校验包括采用作为地址的一部分的2位扩展的搜索/比较。 
相反,在一个实施例中,基于访问类型的相关性校验是隐式的。如图所示,与图3的处理器305中所示类似的结构包含在处理器405中。但是,不是将可包括读监视器、写监视器或缓冲属性信息的一般已更新属性信息保存在存储缓冲器320的条目的一个位置,而是将属性信息保存在位置431、432和433。因此,可随属性信息的位置的附加校验执行传统地址相关性校验。 
为了便于说明,假定属性信息位置431将保存读监视器信息,属性信息位置432将保存写监视器信息,而属性信息位置433将保存缓冲属性信息。当遇到加载时,执行传统地址相关性校验,即用地址458来搜索存储地址缓冲器415。在对条目425发生命中、即地址458和428匹配时,则基于存储缓冲器420中保存的数据的位置来比较访问类型。在一个实施例中,访问类型比较可与地址匹配并行执行。因此,还假定设置缓冲属性操作与条目425相关联。因此,将对与地址428相关联的缓冲属性的已更新属性信息保存在位置433、如第三最低有效位中。 
根据后续加载、例如测试写监视器操作,由相关性逻辑460对地址进行比较。由于测试写监视器操作具有写监视器访问类型,并且缓冲器条目425将更新信息保存在位置433指明缓冲访问类型,则不存在相关性匹配。但是,如果后续加载是具有地址匹配的测试缓冲属性操作,则基于在存储数据缓冲器条目425中信息的位置的访问类型匹 配,并且确定存在相关性。由于确定相关性存在或不存在,转发/阻挡逻辑470执行与上文参照图3所述的相似操作。 
转到图5,示出了在读取、加载或测试硬件属性时提供正确存储器排序的方法的流程图的实施例。注意,图5的流程图以实质串行方式示出。但是,相对该附图所示和所述的方法并不局限于此,因为它们可按照任何顺序进行,且至少部分并行执行。 
在流程505,遇到读取硬件属性的加载操作。作为示例,加载操作包括测试监视器指令、操作或微操作,它们也可被包含在执行其它操作/微操作的较大指令中。在一个示例中,加载操作与属性类型相关联并且引用与硬件属性相关联的地址。如上所述,硬件属性的示例包括读监视器属性、写监视器属性和缓冲属性。然而,属性可包括与数据或地址相关联的状态的任何存储。 
在流程506,确定是否将与硬件属性相关联的受损字段、即与硬件属性相关联的加载操作所引用的地址设置成受损值。响应于保存受损值以指明有损数据、如属性信息已被丢失的字段,则在流程507中对加载操作发起错误,以便确保正确的数据一致性。 
但是,如果受损字段没有保存受损值,则该流程继续到流程510。在流程510,确定在加载操作与前一即时存储操作、例如设置硬件属性指令、操作或微操作之间是否存在相关性。注意,流程510包含流程511和512二者,因为相关性校验在该示例中包括这两个流程。 
在流程511,确定在加载操作与前一即时存储操作之间是否存在地址匹配,并在流程512,确定在加载操作与前一即时存储操作之间是否存在访问类型匹配。在一个实施例中,这些流程例如在将访问类型作为图3中所述的地址扩展保存时一起执行。在这里,采用附加到地址的属性类型的表示、即地址位扩展来搜索存储地址缓冲器。如果随附加到地址的访问类型发生命中,则确定存在相关性,因为加载操作和前一存储操作的地址和访问类型均匹配。 
在另一实施例中,如果访问类型在设计中是隐式的、例如基于参 照图4所述的存储数据的位置,则流程511和512可分开执行。在这里,搜索存储缓冲器查找与流程511的加载所引用的地址相关联的存储缓冲器条目。响应于命中、即地址匹配,则确定保存在存储缓冲器的所命中存储缓冲器条目中的存储数据的位置。基于存储数据的位置、如第三最低有效位(LSB),确定存储属性类型,例如缓冲、读监视或写监视类型。如果所确定的存储访问类型与加载类型相同,则确定存在相关性。 
在任一种情况下,如果不存在相关性,则在流程515,加载通常在不执行属性相关的相关性动作的情况下执行。但是,如果检测到相关性,则在流程520,执行适当的相关性动作。在一个实施例中,相关性动作包括转发与即时的前一存储操作相关联的存储数据。在这里,如果前一存储操作包括设置写监视器操作以便用已更新值来更新写监视器,则将已更新值转发给相关的测试监视器操作,以便读取写监视器值。 
在另一实施例中,相关性动作包括:阻挡加载操作,直到硬件属性被即时的前一存储操作更新。为了便于说明,假定前一存储包括设置读监视器操作以便将读监视器更新成已更新值,并且加载操作包括测试读监视器操作以便加载读监视器值。在这里,加载读监视器值的加载操作被阻挡,直到设置读监视器操作实际更新读监视器。在任一种情况下、即进行转发或进行阻挡,通过所提供的存储器模型保持数据一致性。 
本文所使用的“模块”表示任何硬件、软件、固件或者它们的组合。通常,示为分离的模块边界一般可改变并且可能重叠。例如,第一和第二模块可共享硬件、软件、固件或者它们的组合,同时可能保留一些独立的硬件、软件或固件。在一个实施例中,术语“逻辑”的使用包括例如晶体管、寄存器的硬件或者例如可编程逻辑装置的其它硬件。但是,在另一实施例中,逻辑还包括与硬件集成的软件或代码,例如固件或微码。 
本文所使用的“值”包括数值、状态、逻辑状态或者二进制逻辑状态的任何已知表示。通常,逻辑电平或者逻辑值的使用又称作1和0,它只是表示二进制逻辑状态。例如,1表示高逻辑电平,而0表示低逻辑电平。在一个实施例中,存储单元(storage cell)、如晶体管或闪存单元能够保存单个逻辑值或多个逻辑值。但是,已经使用计算机系统中值的其它表示。例如,十进制数10也可表示为二进制值1010以及十六进制字母A。因此,值包括能够被保存在计算机系统中的信息的任何表示。 
此外,状态可通过值或者值的部分来表示。作为示例,第一值、如逻辑1可表示缺省或初始状态,而第二值、如逻辑0可表示非缺省状态。另外,在一个实施例中,术语“复位”和“设置”分别表示缺省和已更新值或状态。例如,缺省值可能包括高逻辑值、即复位,而已更新值可能包括低逻辑值、即设置。注意,可用值的任何组合来表示任何数量的状态。 
以上提出的方法、硬件、软件、固件或代码的实施例可经由机器可访问或机器可读媒介上存储的、可由处理元件执行的指令或代码来实现。机器可访问/可读媒介包括以机器、如计算机或电子系统可读的形式来提供(即存储和/或传送)信息的任何机构。例如,机器可访问媒介包括:随机存取存储器(RAM),例如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储媒介;闪速存储器装置;电存储装置、光存储装置、声存储装置或者其它形式的传播信号(例如载波、红外信号、数字信号)存储装置等。例如,机器可通过从能够保存要在传播信号上传送的信息的媒介接收例如载波的传播信号来访问存储装置。 
本说明书中对“一个实施例”或“实施例”的引用表示结合该实施例所述的具体特征、结构或特性被包含在本发明的至少一个实施例中。因此,短语“在一个实施例中”或“在实施例中”在本说明书中各个位置的出现不一定都表示同一实施例。此外,具体特征、结构或特性 可按照任何适当方式结合在一个或多个实施例中。 
在以上说明书中,参照具体示范实施例给出了具体实施方式。但是显然,在没有背离随附权利要求书所提出的本发明的广义精神和范围的情况下,可对其进行各种改进和变更。因此,说明书和附图将被看作是说明性的而不是限制性的。此外,实施例及其它示范语言的使用不一定表示相同实施例或者相同示例,而是可表示不同且有区别的实施例,也可能表示相同实施例。 

Claims (14)

1.一种用于提供硬件属性的存储器模型以支持事务执行的设备,包括:
与处理器的高速缓冲存储器相关联的状态阵列,所述状态阵列存储与所述高速缓冲存储器的高速缓冲元件相关联的多个硬件属性;
至少基于对所述多个硬件属性中至少之一的存储操作的第一属性访问类型和对所述多个硬件属性中至少之一的后续加载操作的第二属性访问类型确定所述存储操作与所述后续加载操作之间是否存在相关性的逻辑单元;以及
耦合到所述逻辑单元的转发逻辑单元,响应于确定所述存储操作与所述后续加载操作之间存在所述相关性,所述转发逻辑单元向所述后续加载操作转发所述存储操作的已更新属性数据,
其中,至少基于所述存储操作的所述第一属性访问类型和所述后续加载操作的所述第二属性访问类型确定所述存储操作与所述后续加载操作之间是否存在相关性的所述逻辑单元包括:
存储缓冲器逻辑单元,保存与所述存储操作相关联的所述第一属性访问类型;以及
相关性逻辑单元,耦合到所述存储缓冲器逻辑单元以便至少比较所述第一属性访问类型和所述第二属性访问类型。
2.如权利要求1所述的设备,
其中,所述第一属性访问类型和所述第二属性访问类型各自从读监视器访问类型、写监视器访问类型和缓冲访问类型中选取。
3.如权利要求1所述的设备,
其中,保存与所述存储操作相关联的所述第一属性访问类型的所述存储缓冲器逻辑单元包括:存储地址缓冲器逻辑单元,保存附加到与所述存储操作相关联的存储地址的所述第一属性访问类型,并且
其中,耦合到所述存储缓冲器逻辑单元以便至少比较所述第一属性访问类型和所述第二属性访问类型的所述相关性逻辑单元包括:将附加到所述存储地址的所述第一属性访问类型和附加到与所述后续加载相关联的加载地址的所述第二属性访问类型进行比较的相关性逻辑单元。
4.如权利要求3所述的设备,还包括响应于外部访问请求而窥探所述高速缓冲存储器的窥探逻辑单元,
其中,响应于引用所述存储地址的所述外部访问请求,所述转发逻辑单元将不转发所述已更新属性数据。
5.如权利要求3所述的设备,
其中,响应于附加到所述存储地址的所述第一属性访问类型与附加到所述加载地址的所述第二属性访问类型匹配,所述相关性逻辑单元还确定所述存储操作与所述后续加载操作之间存在所述相关性。
6.如权利要求5所述的设备,
其中,响应于附加到所述存储地址的所述第一属性访问类型与附加到所述加载地址的所述第二属性访问类型不匹配,所述相关性逻辑单元还确定所述存储操作与所述后续加载操作之间不存在所述相关性,并且
其中,响应于所述相关性逻辑单元确定所述存储操作与所述后续加载操作之间不存在所述相关性,所述转发逻辑单元将不转发所述已更新属性数据。
7.如权利要求1所述的设备,其中,至少基于所述存储操作的所述第一属性访问类型和所述后续加载操作的所述第二属性访问类型确定所述存储操作与所述后续加载操作之间是否存在相关性的所述逻辑单元包括:
存储数据缓冲器逻辑单元,将所述已更新属性数据保存在存储数据缓冲器条目中与所述存储操作相关联的位置,
其中,所述存储数据缓冲器条目的所述位置表示所述第一属性访问类型。
8.如权利要求7所述的设备,其中,至少基于所述存储操作的所述第一属性访问类型和所述后续加载操作的所述第二属性访问类型确定所述存储操作与所述后续加载操作之间是否存在相关性的所述逻辑单元还包括:
耦合到所述存储数据缓冲器和所述转发逻辑单元的相关性逻辑单元,基于所述存储数据缓冲器条目中保存的所述已更新属性数据的所述位置,响应于与所述存储操作相关联的存储地址和与所述后续加载操作相关联的加载地址匹配并且所述第二属性访问类型与所述第一属性访问类型相同,确定所述存储操作与所述后续加载操作之间存在所述相关性。
9.如权利要求7所述的设备,其中,至少基于所述存储操作的所述第一属性访问类型和所述后续加载操作的所述第二属性访问类型确定所述存储操作与所述后续加载操作之间是否存在相关性的所述逻辑单元包括:
耦合到所述存储数据缓冲器和所述转发逻辑单元的相关性逻辑单元,基于所述存储数据缓冲器条目中保存的所述已更新属性数据的所述位置,响应于与所述存储操作相关联的存储地址和与所述后续加载操作相关联的加载地址不匹配或者所述第二属性访问类型与所述第一属性访问类型相同,所述相关性逻辑单元确定所述存储操作与所述后续加载操作之间不存在所述相关性,
其中,响应于所述相关性逻辑单元确定所述存储操作与所述后续加载操作之间不存在所述相关性,所述转发逻辑单元将不转发所述已更新属性数据。
10.一种用于提供硬件属性的存储器模型以支持事务执行的方法,包括:
遇到读取硬件属性的加载操作,所述加载操作与属性类型相关联并引用与所述属性类型的硬件属性相关联的地址;
用附加到所述地址的所述属性类型的表示搜索存储地址缓冲器;
响应于找到在所述存储地址缓冲器中保存附加到所述地址的所述属性类型的所述表示的存储地址缓冲器条目,确定即时的前一存储操作与所述属性类型相关联并引用与所述硬件属性相关联的所述地址;以及
响应于确定所述即时的前一存储操作与所述属性类型相关联并引用与所述硬件属性相关联的所述地址,执行相关性动作。
11.如权利要求10所述的方法,
其中,所述加载操作包括测试硬件属性操作,并且
其中,所述即时的前一存储操作包括设置硬件属性操作。
12.如权利要求10所述的方法,
其中,所述属性类型从由读监视器属性类型、写监视器属性类型和缓冲属性类型组成的组中选取。
13.如权利要求10所述的方法,其中,执行相关性动作包括:
转发与所述即时的前一存储操作相关联的存储数据。
14.如权利要求10所述的方法,其中,执行相关性动作包括:
阻挡所述加载操作,直到所述硬件属性被所述即时的前一存储操作更新。
CN200910216935.2A 2008-12-30 2009-12-28 提供硬件属性的存储器模型以支持事务执行的方法和设备 Expired - Fee Related CN101814017B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/346539 2008-12-30
US12/346,539 US8627014B2 (en) 2008-12-30 2008-12-30 Memory model for hardware attributes within a transactional memory system

Publications (2)

Publication Number Publication Date
CN101814017A CN101814017A (zh) 2010-08-25
CN101814017B true CN101814017B (zh) 2015-02-11

Family

ID=42286303

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910216935.2A Expired - Fee Related CN101814017B (zh) 2008-12-30 2009-12-28 提供硬件属性的存储器模型以支持事务执行的方法和设备

Country Status (6)

Country Link
US (2) US8627014B2 (zh)
JP (1) JP5416223B2 (zh)
CN (1) CN101814017B (zh)
BR (1) BRPI0920229A2 (zh)
TW (1) TWI461912B (zh)
WO (1) WO2010077884A2 (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8627014B2 (en) 2008-12-30 2014-01-07 Intel Corporation Memory model for hardware attributes within a transactional memory system
US9785462B2 (en) 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
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
US8489864B2 (en) * 2009-06-26 2013-07-16 Microsoft Corporation Performing escape actions in transactions
US8250331B2 (en) * 2009-06-26 2012-08-21 Microsoft Corporation Operating system virtual memory management for hardware transactional memory
US8812796B2 (en) 2009-06-26 2014-08-19 Microsoft Corporation Private memory regions and coherence optimizations
US8370577B2 (en) 2009-06-26 2013-02-05 Microsoft Corporation Metaphysically addressed cache metadata
US20100332768A1 (en) * 2009-06-26 2010-12-30 Microsoft Corporation Flexible read- and write-monitored and buffered memory blocks
US8229907B2 (en) * 2009-06-30 2012-07-24 Microsoft Corporation Hardware accelerated transactional memory system with open nested transactions
US8539465B2 (en) * 2009-12-15 2013-09-17 Microsoft Corporation Accelerating unbounded memory transactions using nested cache resident transactions
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
US8402218B2 (en) * 2009-12-15 2013-03-19 Microsoft Corporation Efficient garbage collection and exception handling in a hardware accelerated transactional memory system
US20120059971A1 (en) * 2010-09-07 2012-03-08 David Kaplan Method and apparatus for handling critical blocking of store-to-load forwarding
US9104690B2 (en) 2011-01-27 2015-08-11 Micron Technology, Inc. Transactional memory
WO2013101216A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Cache coprocessing unit
US9396020B2 (en) 2012-03-30 2016-07-19 Intel Corporation Context switching mechanism for a processing core having a general purpose CPU core and a tightly coupled accelerator
US10120809B2 (en) * 2015-09-26 2018-11-06 Intel Corporation Method, apparatus, and system for allocating cache using traffic class
TWI587218B (zh) 2016-09-10 2017-06-11 財團法人工業技術研究院 記憶體事務層級模型模擬方法及系統
US10620971B2 (en) 2017-02-22 2020-04-14 International Business Machines Corporation Accelerating reference count processing in object deletion
CN110647663B (zh) * 2019-09-09 2021-12-17 中国人民解放军国防科技大学 面向最短路径问题的图结点属性存储器实现方法和装置
CN111047187B (zh) * 2019-12-12 2023-10-17 浙江大搜车软件技术有限公司 信息匹配处理方法、装置、计算机设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1264874A (zh) * 1999-02-26 2000-08-30 国际商业机器公司 避免由于取消事务处理造成数据丢失的方法和系统
CN101059783A (zh) * 2006-03-30 2007-10-24 英特尔公司 事务型存储器的虚拟化

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8728494D0 (en) * 1987-12-05 1988-01-13 Int Computers Ltd Multi-cache data storage system
JP2651037B2 (ja) * 1990-04-23 1997-09-10 株式会社日立製作所 アドレスバス制御装置
US6216200B1 (en) * 1994-10-14 2001-04-10 Mips Technologies, Inc. Address queue
US6549996B1 (en) * 1999-07-02 2003-04-15 Oracle Corporation Scalable multiple address space server
US6490668B2 (en) 2000-12-15 2002-12-03 Hewlett-Packard Company System and method for dynamically moving checksums to different memory locations
US7035963B2 (en) * 2000-12-27 2006-04-25 Intel Corporation Method for resolving address space conflicts between a virtual machine monitor and a guest operating system
US7565687B2 (en) * 2002-02-08 2009-07-21 International Business Machines Corporation Transmission control system, server, terminal station, transmission control method, program and storage medium
JP2004005710A (ja) * 2003-06-23 2004-01-08 Hitachi Ltd 情報処置装置
FR2859307A1 (fr) * 2003-08-27 2005-03-04 St Microelectronics Sa Memoire cache a lecture asynchrone et dispositif de controle de l'acces a une memoire de donnees comprenant une telle memoire cache
US20050091459A1 (en) * 2003-10-23 2005-04-28 Nhon Quach Flexible mechanism for enforcing coherency among caching structures
US7237131B2 (en) * 2003-12-30 2007-06-26 Intel Corporation Transaction-based power management in a computer system
US7177987B2 (en) * 2004-01-20 2007-02-13 Hewlett-Packard Development Company, L.P. System and method for responses between different cache coherency protocols
US7395374B2 (en) * 2004-01-20 2008-07-01 Hewlett-Packard Company, L.P. System and method for conflict responses in a cache coherency protocol with ordering point migration
US8225377B2 (en) * 2004-04-14 2012-07-17 Telecom Italia S.P.A. Method and system for handling content delivery in communication networks
US7644239B2 (en) * 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
JP4431022B2 (ja) 2004-10-18 2010-03-10 株式会社日立製作所 コンピュータシステム及びその制御方法
US7490199B2 (en) * 2005-05-09 2009-02-10 Noam Camiel System and method for safe removal of a removable device from a digital appliance
JP2009508187A (ja) * 2005-08-01 2009-02-26 サン・マイクロシステムズ・インコーポレーテッド クリティカルセクションをトランザクション的に実行することによるロックの回避
US8180977B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory in out-of-order processors
US20080005504A1 (en) * 2006-06-30 2008-01-03 Jesse Barnes Global overflow method for virtualized transactional memory
TWI317065B (en) * 2006-08-11 2009-11-11 Shiwu Lo Method of accessing cache memory for parallel processing processors
US7783805B2 (en) * 2006-11-29 2010-08-24 Cisco Technology, Inc. Interlocking input/outputs on a virtual logic unit number
US7937535B2 (en) * 2007-02-22 2011-05-03 Arm Limited Managing cache coherency in a data processing apparatus
US7917701B2 (en) * 2007-03-12 2011-03-29 Arm Limited Cache circuitry, data processing apparatus and method for prefetching data by selecting one of a first prefetch linefill operation and a second prefetch linefill operation
US8751859B2 (en) 2007-05-10 2014-06-10 International Business Machines Corporation Monitoring lost data in a storage system
EP2159702B1 (en) * 2007-06-20 2013-04-17 Fujitsu Limited Cache control device and control method
US8195832B2 (en) * 2007-12-12 2012-06-05 Alcatel Lucent Facilitating management of layer 2 hardware address table based on packet priority information
US8078807B2 (en) * 2007-12-27 2011-12-13 Intel Corporation Accelerating software lookups by using buffered or ephemeral stores
US8627014B2 (en) 2008-12-30 2014-01-07 Intel Corporation Memory model for hardware attributes within a transactional memory system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1264874A (zh) * 1999-02-26 2000-08-30 国际商业机器公司 避免由于取消事务处理造成数据丢失的方法和系统
CN101059783A (zh) * 2006-03-30 2007-10-24 英特尔公司 事务型存储器的虚拟化

Also Published As

Publication number Publication date
BRPI0920229A2 (pt) 2015-12-29
JP5416223B2 (ja) 2014-02-12
US8627014B2 (en) 2014-01-07
US8769212B2 (en) 2014-07-01
JP2012514254A (ja) 2012-06-21
TWI461912B (zh) 2014-11-21
US20120159079A1 (en) 2012-06-21
TW201037517A (en) 2010-10-16
CN101814017A (zh) 2010-08-25
WO2010077884A2 (en) 2010-07-08
US20100169580A1 (en) 2010-07-01
WO2010077884A3 (en) 2010-09-30

Similar Documents

Publication Publication Date Title
CN101814017B (zh) 提供硬件属性的存储器模型以支持事务执行的方法和设备
JP6342970B2 (ja) トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性
JP5944417B2 (ja) トランザクショナル・メモリ・イベントの処理のためのハードウェアにおけるユーザハンドラの登録
CN101322103B (zh) 无约束事务存储器系统及其方法
JP5860450B2 (ja) ローカルにバッファリングされたデータをサポートするためのキャッシュコヒーレンスプロトコルの拡張
JP5608738B2 (ja) 無制限トランザクショナルメモリ(utm)システムの最適化
US10387324B2 (en) Method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution canceling the transactional execution upon conflict between physical addresses of transactional accesses within the transactional execution
US8719828B2 (en) Method, apparatus, and system for adaptive thread scheduling in transactional memory systems
US20150040111A1 (en) Handling precompiled binaries in a hardware accelerated software transactional memory system
US20060026371A1 (en) Method and apparatus for implementing memory order models with order vectors
JP2012512491A (ja) ハードウェアフィールドにロッシーなメタデータを保持するためのメタフィジカルアドレス空間
JP6318440B2 (ja) 無制限トランザクショナルメモリ(utm)システムの最適化

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150211

Termination date: 20191228