CN101322103A - 无约束事务存储器系统 - Google Patents
无约束事务存储器系统 Download PDFInfo
- Publication number
- CN101322103A CN101322103A CNA2006800450971A CN200680045097A CN101322103A CN 101322103 A CN101322103 A CN 101322103A CN A2006800450971 A CNA2006800450971 A CN A2006800450971A CN 200680045097 A CN200680045097 A CN 200680045097A CN 101322103 A CN101322103 A CN 101322103A
- Authority
- CN
- China
- Prior art keywords
- instruction
- processor
- memory
- storer
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 19
- 238000003860 storage Methods 0.000 claims description 22
- 238000013519 translation Methods 0.000 claims description 3
- 238000013507 mapping Methods 0.000 claims description 2
- 230000000712 assembly Effects 0.000 description 12
- 238000000429 assembly Methods 0.000 description 12
- 238000012544 monitoring process Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 241001269238 Data Species 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000011068 loading method Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 201000006549 dyspepsia Diseases 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000007430 reference method Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Acyclic And Carbocyclic Compounds In Medicinal Compositions (AREA)
Abstract
描述了用于提供无约束事务存储器系统的方法和装置。在一个实施例中,如果先前的一个硬件事务存储器(HTM)访问操作失败,则与一个软件事务存储器(STM)访问相对应的操作可被执行。
Description
技术领域
本公开一般地涉及电子技术领域。更具体地,本发明的一个实施例涉及无约束事务存储器系统(unbounded transactional memory system)。
背景技术
为提高性能,一些计算机系统可并发地执行多个线程。通常,在线程访问共享资源之前,该线程可以获取该共享资源的锁。在共享资源为一存储于存储器中的数据结构的情形中,所有试图访问该相同资源的线程可以依照加锁机制提供的互斥性来将其操作的执行串行化。上述情形可能会对系统性能不利并且可能造成程序故障,例如,由于死锁错误。
为减少使用加锁机制对性能的影响,一些计算机系统会使用事务存储器。事务存储器通常涉及一种同步模型,其允许多个线程并发地访问一个共享资源(例如存储在存储器中的一个数据结构),而只要多个访问之间不存在冲突(例如,只要多个访问是针对共享资源的不同部分)就不需要获取锁。
事务存储器可通过一个表查找机制来实现。特别地,为访问一个共享资源,一个线程可首先检查一个存储于存储器中的表以确定是否有另一个线程正在访问共享资源的相同部分。访问存储于存储器中的表所产生的开销会导致性能的下降。
附图说明
以下参考附图对本发明进行详细描述。在附图中,参考标号最左侧的数字标识出最先出现该参考标号的那张图。在不同附图中使用的相同的参考标号表示相似或相同的项目。
图1、图6和图7示出了计算系统各实施例的方框图,其可被用于实现本文中讨论的各种实施例。
图2示出了根据本发明的一个实施例,处理器内核中多个部分的方框图。
图3~图5示出了根据本发明的各种实施例的方法的方框图。
具体实施方式
在以下的描述中给出了许多具体细节以提供对于各种实施例的深入理解。但是,一些实施例可以不需要这些细节来进行实现。在其它示例中,为了不使特定的实施例难以理解,一些公知的方法、过程、组件和电路没有进行具体描述。
本文中所讨论的一些实施例可为使用硬件事务存储器(HTM)和软件事务存储器(STM)技术的组合的非约束事务存储器系统提供有效机制,例如参照图1~图7的计算系统而讨论的实施例。更具体地,图1示出了依据本发明的一个实施例的计算系统100的框图。系统100可包括一个或多个处理器102-1到102-N(本文中简称为“多个处理器102”或更一般地称为“处理器102”)。多个处理器102之间可通过互连或总线104进行通信。每个处理器可以包括各种组件,为了清楚,其中一部分仅在针对处理器102-1时给予说明。相应地,其余处理器102-2到102-n中每个均可包括针对处理器102-1所论述的相同或类似的组件。此外,这里所描述的实施方式并不仅限于多处理器计算系统中,其也可被应用于一个单处理器计算系统中。
在一个实施例中,处理器102-1可包括一个或多个处理器内核106-1到106-M(本文中简称为“多个内核106”或者更一般地称为“内核106”)、高速缓存108、和/或路由器110。多个处理器内核106可在单个集成电路(IC)芯片上实现。此外,该芯片可以包括一个或多个共享的和/或私有的高速缓存(如高速缓存108)、总线或互连(如总线112)、存储器控制器(如参照图6和7所描述的)、或者其他组件。
在一个实施例中,路由器110可被用于在处理器102-1和/或系统100的多个不同组件之间的通信。此外,处理器102-1可包括多于一个的路由器110。更进一步地,多个路由器(110)之间可进行通信,以使得处理器102-1内部或外部的各种不同组件之间能够进行数据路由。
此外,高速缓存108可存储数据(例如,包括指令),这些数据被处理器102-1的一个或多个组件所使用。举例来说,高速缓存108可在本地对存储器114中存储的数据进行缓存,以供处理器102-1的多个组件更快地进行访问。如图1所示,存储器114可与处理器102-1通过互连104进行通信。在一个实施例中,高速缓存108(可为共享的)可以包括二级(L2)高速缓存、末级高速缓存(LLC)、或其他类型的高速缓存中的一个或多个。此外,每个内核106或处理器102可包括一个一级(L1)高速缓存。处理器102-1的各种不同组件可与高速缓存108直接通过总线(例如,总线112)和/或存储器控制器或控制中心进行通信。此外,处理器102-1可包括多于一个的高速缓存。正如将参照图2做进一步描述的,存储器114还可以包括一个页表116,该页表储存了有关于在虚拟地址和物理地址之间的映射的信息。
图2示出了依据本发明的一个实施例,处理器内核106中多个部分的一个框图。如参照图1所讨论的,一个或多个处理器内核(如处理器内核106)可实现在单个集成电路芯片(或管芯(die))上。此外,该芯片可以包括一个或多个共享的和/或私有的高速缓存(例如,图1中的高速缓存108)、互连(例如,图1中的互连104和/或112)、存储器控制器、或其他组件。
如图2所示,处理器内核106可包括一个用于取回指令以便由内核106来执行的取回单元(fetch unit)202。所述指令可以从任何存储设备取回,如存储器114和/或参照图6和图7所描述的存储设备。内核106还可包括一个解码单元204,用于对取回的指令进行解码。举例来说,解码单元204可将取回的指令解码为多个uop(微操作)。
另外,内核106可包括一个调度单元206。调度单元206可执行各种操作,这些操作关联于存储已解码指令(例如,从解码单元204接收的)直到所述指令已准备好待分派(例如,直到一个已解码指令的全部源值都可用)。在一个实施例中,调度单元206可调度和/或发布(或分派)已解码指令给执行单元208来执行。执行单元208可在分派的指令被解码(例如,通过解码单元204)和被分派(例如,通过调度单元206)之后执行所述指令。在一个实施例中,执行单元208可包括多于一个的执行单元,如存储器执行单元、整数执行单元、浮点数执行单元、或其他执行单元。进一步地,执行单元208可以乱序执行指令。因此,在一个实施例中,处理器内核106可以是一个乱序处理器内核。内核106也可包括一个引退(retirement)单元210。引退单元210可在指令被提交之后令已执行的指令引退。在一个实施例中,已执行指令的引退可能会导致处理器状态根据指令执行而被提交,指令使用的物理寄存器被解除分配,等等。
如图2所示,内核106还可以包括一个跟踪高速缓存(trace cache)或者微代码只读存储器(uROM)212,用于存储微代码和/或被取回的指令的踪迹(例如,通过取回单元202)。存储在uROM 212中的微代码可用于配置内核106的各种硬件组件。在一个实施例中,存储在uROM 212中的微代码可从与处理器内核106通信的另一个组件中被加载,例如参照图6和7中所描述的计算机可读介质或其他存储设备。
处理器内核106还可以包括数据转换后备缓冲器(data translationlook-a-side buffer,DTLB)214,以存储(或缓存)页表116的多个部分。在一个实施例中,DTLB 214可以是一个内容可寻址存储器(CAM)。此外,处理器内核106可以包括一个总线单元216,以允许处理器内核106的组件和其他组件(如参照图1所述的组件)通过一个或多个总线(例如,总线104和/或112)进行通信。页表116和DTLB 214可包括一个或多个表项。在一个实施例中,对每一个表项,DTLB 214可存储许多信息,例如虚拟地址218(例如,其可以用来虚拟地标识存储器地址)、物理地址220(例如,其可以用来标识与虚拟地址218对应的存储器114或另一存储器中的物理地址)、所有权标志222(例如,其包括一个或多个位,以标识相应表项或DTLB214内的一页的所有者、所有权状态、和/或所有者访问类型(例如,读或写访问)、和/或推测标志224(例如,其可以被线程或存储器事务使用以表示相应的表项(或页)正在被推测性地访问)。在一个实施例中,页表116中也可包括对应于每一个表项的字段218~224。
在一个实施例中,对每一个表项,页表116可存储许多信息,例如虚拟地址标签226、物理地址标签228、和/或物理地址数据230。正如将在这里参照图3~图5来进一步描述的,标签226和228可被用来搜索页表116(例如,来获得物理地址数据230)。
在一个实施例中,页表基指针232可指向页表116的基地址。此外,页表界限指针234可指向页表116的顶端(或最末表项)。指针232和234可存储在硬件寄存器中,或作为存储器(如存储器114)中的变量。内核106还可包括事务描述符寄存器236,例如,用以存储与事务存储器请求的一个或多个指令相对应的描述符。关于涉及参照图1~图2所描述的组件的操作的进一步细节将参照图3~图5中所示的方法来进行论述。
更具体地,图3示出了用以执行对应于HTM和/或STM事务的一个或多个指令的方法300的一个实施例的框图。在一个实施例中,参照图1~图2以及图6~图7而描述的各种组件可被用来执行参照图3而描述的一个或多个操作。
参照图1~图3,在操作302中,正被内核106执行的一个线程可启动一个HTM事务。该线程可包括一个或多个被内核106执行(304)的指令。因此,该线程可包括一个或多个对应于一个HTM访问请求(如一个或多个加载或存储操作)的指令。在操作306中,如果存在与另一指令(其可能是对应于相同线程或另一线程(例如,运行在不同的处理器内核上)的一个指令)的冲突,则该硬件事务在操作308中被中止。例如,发生冲突的指令可对DTLB 214中操作302的HTM事务正在访问(或已标记为正在被访问,如通过在推测标志224中存储的一个值来表示的)的表项发送一个监听。
如果在操作306中没有发生冲突,则在操作312中,内核106可确定与操作302的HTM相对应的硬件事务是否已经在操作310中被提交(例如,通过引退单元210)。如果该硬件事务已被提交,则内核106可更新存储器114、页表116、和/或DTLB 214中对应的数据。否则,如果在操作310中硬件事务(或它其中的一个指令)提交失败,则内核106可确定提交失败是否是因为硬件溢出(314),例如,由于高速缓存溢出、异常的条件、中断、异常、缺页、输入/输出指令、或其他硬件溢出条件。如果没有硬件溢出发生(314),则内核106可继续执行操作304,例如,以执行剩余的与操作302的HTM事务相对应的指令。假设存在硬件溢出(314),则内核106可在操作320中启动一个STM事务。在一个实施例中,操作302的HTM和操作320的STM可针对的是对存储器114的同一个访问(例如,一个或多个读或写操作)。因此,在一个实施例中,一旦操作302的HTM由于操作422的硬件溢出而提交失败,则相同的存储器操作可由操作320的STM执行。在操作322中,内核106可执行对应于STM的一个或多个指令。因此,该线程可包括对应于一个STM访问请求的一个或多个指令(如一个或多个加载或存储操作)。在操作324中,内核106可确定STM事务是否已成功提交。如果STM事务处于待提交状态(324),则内核106可继续执行剩余的与操作320的STM事务相对应的指令。如果软件事务已被提交(324),则在操作312中,内核106可更新存储器114、页表116、和/或DTLB 214中的相应数据。在一个实施例中,操作312可原子地(atomically)执行,例如,使得在提交(在操作310和/或324中)之后推测性更新原子地变为可见。
在一个实施例中,内核106可推测性地执行参照方法300所描述的指令,将参照图4和图5做进一步描述。例如,在操作302和/或320,内核106可在推测标志224中存储一个值以表明在DTLB 214和/或页表116中的相应表项被推测性地访问。一旦HTM中止(在操作308中),或者HTM或STM事务在操作312中被成功提交,内核106可更新推测标志224以表明相应记录不再是被推测性地访问。在一个实施例中,操作306的冲突可以由一个针对某表项的监听访问引发,所述表项被操作302的HTM事务标记为已被推测性地访问过(例如,通过推测标志224)。根据至少一个指令集架构,所述监听可由一个所有权请求(或者称为″RFO″)指令产生。因此,处理器内核(106)可排他地拥有对于一个DTLB表项(214)的所有权,例如,使得其他处理器内核的其他DTLB中的相应表项无效。
此外,在一个实施例中,DTLB击落(shoot down)可被用来在多核处理器中维护DTLB(214A)的一致性。DTLB击落一般指下面的情形,即某个线程对一个页表(116)进行修改,其结果是向其他多个内核(106)发送一个信号以移除它们各自的DTLB(214)中的相应表项。在一个实施例中,页表116的字段226~230还可以和高速缓存一致性协议一起使用。例如,DTLB 214(以及页表116)可被存储于物理存储器的一个可标识部分中(例如,在存储器114中),如由指针232和234所标识出的部分。当内核106(或在内核106中提供的一个监听过滤器)在总线(104/112)上检测到一个监听,其可以通过页表116中的字段226~230知道该监听是针对DTLB 214还是高速缓存的。在一个实施例中,当一个处理器内核106希望获得一个DTLB 214表项的所有权时,其可以向对应的物理地址发送一个监听,该监听然后利用物理地址标签226在页表116中进行查找,并且可选地存储在物理地址数据字段230的数据可被提供。
图4示出了用于执行一个或多个对应于一HTM事务的指令的方法400的一个实施例的方框图。在一个实施例中,图4展示了关于参照图3中的方法300所讨论的一些操作的进一步细节。此外,参照图1~图2和图6~图7所讨论的各种组件可被用于执行参照图4所讨论的一个或多个操作。
参见图1~图4,在从操作402到404,内核106可启动一个HTM事务,并执行一个或多个对应于该HTM事务的指令,如参照操作302到304所分别描述的。在操作406中,内核106可确定是否存在针对一个正在被推测性地访问的DTLB表项的一个所有权请求,例如,来自另一指令,如参照操作306所述的。如果存在一个所有权请求(406),操作402的HTM事务可被中止。在一个实施例中,在中止该HTM事务之后,控制权可能被转移到一个用户级中止处理程序,以决定是重新尝试相同的HTM事务还是采取其他的行动。
如果在操作406中没有接收到所有权请求,内核106将在操作410继续执行一个或多个对应于该HTM事务的指令。在操作412中,如果存在一个DTLB缺失(比如与被一个HTM事务的指令访问的虚拟或物理地址相对应的一个表项不在DTLB 214中,例如,由于之前对于该表项的驱逐(eviction)),对应的数据(例如,页表116的一部分)在操作414中可从页表116复制到DTLB 214中。复制的信息可包括相应的虚拟地址218、物理地址220、所有权标志222、和/或推测标志224。
在操作416中,内核106可确定操作414中从页表116复制的表项的所有权标志222是否表示了对于相应表项的有效的所有权。如果所有权标志222表示一个有效值(例如,在一个实施例中为非空值),则内核106在操作408中中止该硬件事务。如参照图2所述的,所有权标志222还可包括所有者访问类型信息(例如,读访问或写访问)。在一个实施例中,如果所有权标志222的一个或多个位表明所有者正在执行读访问,则方法400可继续操作402(部分地因为两条针对DTLB 214的相同记录进行读取的指令可以不引起冲突)。此外,如果所有权标志222表示一个非有效值(例如,在一个实施例中为空值),则内核106继续执行与操作402的HTM事务对应的其他指令。
在操作418中,内核106可判断与操作402的HTM对应的硬件事务是否已被提交(例如,通过引退单元210)。如果该硬件事务已被提交,内核106可更新存储器114、页表116、和/或DTLB 214(420)中的相应数据。否则,如果硬件事务(或其中的一个指令)在操作418中提交失败,内核106可判断提交失败是否是由于硬件溢出造成的(422),例如,由于高速缓存溢出、异常的条件、中断、异常、缺页、输入/输出指令、或其他硬件溢出条件。如果没有硬件溢出发生(422),内核106可继续执行操作404,例如,执行剩余的与操作402的HTM事务相对应的指令。如果存在硬件溢出(422),内核106可启动一个STM事务,这些将参照图5做进一步描述。
图5示出了执行一个或多个对应于一STM事务的指令的方法500的一个实施例的框图。在一个实施例中,图4示出了与参照图3的方法300所描述的一些操作的进一步细节。此外,参照图1~图2和图6~图7所讨论的各种组件可被用于执行一个或多个参照图5所讨论的操作。
参照图1~图5,在操作502到504中,内核106可启动一个STM事务并执行一个或多个对应于该STM事务的指令,如参照操作320到322所分别描述的。在操作506中,内核106可更新DTLB 214的任何被访表项的所有权标志222(例如,由于在操作504中执行指令)。参照图2的讨论,所有权标志222可包括一个或多个位,用以确定对应表项的所有者或所有权状态。在一个实施例中,在操作502,内核106可在事务描述符寄存器236中存储对应于该STM事务的一个值(例如,一个事务标识符)。随后,在操作506中,内核106可将存储在事务描述符寄存器236中的上述值复制给对应表项的所有权标志222。
在操作508中,内核106可确定该STM事务是否已成功提交。如果STM事务处于待提交状态(508),则内核106可继续执行剩余的与操作502的STM事务相对应的指令。如果该软件事务被提交(508),则在操作510中,内核106可更新存储器114、页表116、和/或DTLB 214中的相应数据。在一个实施例中,操作510可原子地执行,例如,使得在提交(在操作508中)之后,推测性更新原子地变得可见。
如参照图3所描述的,HTM(例如,操作302或402中的)和STM(例如,操作320或502中的)可以对存储器114有相同的访问(例如,一个或多个读或写操作)。此外,在一个实施例中,为实现参照图3至5所述的若干操作,编译器可生成以下同步伪代码块的两个副本:
synchronized{
load addr1;
load addr2;
store addr3;
}
该伪代码的两个被编译的副本可以如下:
副本#1(HTM代码):
synchronized{
load addr1;
load addr2;
store addr3;
}
副本#2(STM代码):
load Descriptor into register 236
DLoad1 addr1;
DLoad2 addr2;
DStore3 addr3;
STM_commit();
}
参照上述伪代码和图1~图5,如果副本#1作为HTM执行失败,第二伪代码(副本#2)可作为STM(如图3~图5所讨论的)被执行。因此,该HTM代码可作为一个HTM事务执行原子区。在一个实施例中,该HTM代码可依靠高速缓存一致性机制来保证事务一致性,并且可以不获得如图3~图5所描述的页表(116)表项的任何所有权。如果该HTM事务由于硬件溢出(422)而导致提交失败,STM代码(副本#2)可在之后作为STM事务被执行。
如上述STM代码示例(副本#2)所示,所述程序可首先加载一个对应于该STM事务(502)的描述符(或标识符)到寄存器236。依照至少一个指令集架构,所述程序(副本#2)然后可以使用指令“DLoad”和“DStore”分别作为加载和存储指令。在一个实施例中,“DLoad”指令可获取相应DTLB(214)表项的排他所有权,例如,通过复制寄存器236的值到相应的所有权标志222的一部分。在一个实施例中,“DStore”指令可获取相应DTLB(214)表项的排他所有权,例如,通过复制寄存器236的值到相应的所有权标志222的一部分。“STM_commit()”指令可对于STM代码的成功提交进行测试(508)。
按照至少一个指令集架构,“DRelease”指令可被用来释放DTLB 214的一个或多个表项(或页)的所有权,例如,通过更新对应的所有权标志222(例如,通过将该标志设置为空)。在一个实施例中,所有的存储(例如,参照STM代码所讨论的)都被安排到线程私有的存储单元(例如,在高速缓存108中),而一个或多个对应于STM事务的指令正在被执行(322)。当所述代码到达该STM事务的结尾并且能够成功提交(324)时,所述更新被复制到相应的存储单元,如参照操作312、420和/或510所讨论的。因此,这些操作便可使用“DRelease”指令以释放线程已访问的所有页的所有权。
图6示出了计算系统600的一个实施例的方框图。计算系统600可包括一个或多个与互连(或者总线)604通信的中央处理单元(CPU)或处理器602。在一个实施例中,处理器602可以与图1中的处理器相同或相似。并且,互连604可与参照图1~图2所讨论的互连104和/或112相同或者相似。处理器602可包括任何类型的处理器,如通用处理器、网络处理器(例如,处理通过计算机网络进行传递的数据的处理器),或其它处理器,包括精简指令集计算机(RISC)处理器或者复杂指令集计算机(CISC)处理器。此外,处理器602可为单内核或多内核设计,例如,包括一个或多个如参照图1所描述的处理器内核(106)。具有多内核设计的处理器602可在同一集成电路(IC)管芯上集成不同类型的处理器内核。此外,具有多内核设计的处理器602可被实现为对称或非对称的多处理器。
如图6所示,芯片组606可与互连604进行通信。芯片组606可包括存储器控制中心(MCH)608。MCH 608可包括与存储器114通信的存储器控制器610。存储器114可存储数据,例如,包括由处理器602或其他任何与计算系统600通信的设备来执行的指令序列。如图6所示,存储器114可包括如参照图1~图5所讨论的页表116。在本发明的一个实施例中,存储器114可包括一个或多个易失性存储设备,如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)、或者其他易失性存储设备。也可以使用非易失性存储器,如硬盘。附加的设备可通过互连604进行通信,如多个处理器和/或多个系统存储器。
MCH 608可另外包括与图形加速器616通信的图形接口614。在一个实施例中,图形接口614可通过加速图形端口(AGP)与图形加速器616通信。在本发明的一个实施例中,显示器(如平板显示器)可与图形接口614通过例如信号转换器进行通信,信号转换器可以将存储在一个存储设备(如视频存储器或系统存储器)中的图像的数字表示转换为被显示器解释和显示的显示信号。在各种实施例中,由显示设备产生的显示信号在被解释和显示在显示器上之前可能会经过各种控制设备。
此外,一个控制中心接口618可以使得MCH 608和输入/输出(I/O)控制中心(ICH)620之间能够进行通信。ICH 620可以给与计算系统600通信的I/O设备提供接口。ICH 620可与总线622通过外设桥(或控制器)624进行通信,所述外设桥(或控制器)例如外围组件互连(PCI)桥或者通用串行总线(USB)控制器。桥624可在处理器602和外围设备之间提供数据通路。其他类型的拓扑也可以被使用。此外,例如通过多个桥或控制器,多个总线可以与ICH 620进行通信。此外,在本发明的不同实施例中,与ICH 620通信的其他外设还可以包括,集成驱动电子设备(IDE)或小型计算机系统接口(SCSI)硬盘驱动器、USB端口、键盘、鼠标、并行端口、串行端口、软盘驱动器、或数字数据支持接口(例如,数字视频接口(DVI))。
总线622可与音频设备626、一个或多个磁盘驱动器628、以及网络适配器630进行通信。适配器630可与计算机网络631进行通信,例如,使系统600的各组件能够通过网络631发送和/或接收数据。其他设备可通过总线622进行通信。同样,在本发明的一些实施例中,各种组件(如网络适配器630)可与MCH 608进行通信。此外,处理器602和MCH 608可以结合起来构成单个芯片。此外,在本发明的其他实施例中,图形加速器616可被包含在MCH 608中。
在一个实施例中,计算系统600可包括易失性和/或非易失性存储器(或存储装置)。举例来说,非易失性存储器可包括下列中的一个或多个:只读存储器(ROM)、可编程ROM(PROM)、可擦写PROM(EPROM)、电可擦写PROM(EEPROM)、磁盘驱动器(例如,628)、软盘、光盘ROM(CD-ROM)、数字通用光盘(DVD)、闪速存储器、磁光盘、或其他类型的用于存储电子数据(例如,包括指令)的非易失性机器可读介质。
图7示出了按照本发明的一个实施例被安排为点对点(PtP)配置的计算系统700。特别地,图7示出了一个系统,其中处理器、存储器、输入/输入设备通过多个点对点接口进行互连。参照图1~图6所讨论的操作可由系统700的一个或多个组件执行。
如图7中所示的,系统700可包括若干处理器,为清晰阐述只显示了其中的二个处理器702和704。处理器702和704可各自包含一个本地存储器控制中心(MCH)706和708以实现与存储器710和712的通信。存储器710和/或712可存储各种数据,例如参照图1、图2和图6的存储器114所讨论的那些数据。
在一个实施例中,处理器702和704可以是参照图6所讨论的处理器602里的一个。处理器702和704可分别使用PtP接口电路716和718通过点对点(PtP)接口714交换数据。此外,处理器702和704可各自与芯片组720使用点对点接口电路726、728、730和732通过单独的PtP接口722和724交换数据。芯片组720可进一步与高性能图形电路734通过高性能图形电路接口736交换数据,例如,使用PtP接口电路737。
本发明的至少一个实施例可提供在处理器702和704中。举例来说,图1或图2的一个或多个内核106可位于处理器702和704中。然而,本发明的其他实施例可存在于图7的系统700中的其他电路、逻辑单元、或设备内。此外,本发明的其他实施例可以是分布在图7所示的几个电路、逻辑单元或设备内。
芯片组720可使用PtP接口电路741与总线740进行通信。总线740可以有一个或多个设备与之通信,如总线桥742和I/O设备743。通过总线744,总线桥743可与其他设备通信,所述其他设备如键盘/鼠标745、通信设备746(如调制解调器、网络接口设备(例如,图6中的网络适配器630)、或其他可与计算机网络631通信的通信设备)、音频I/O设备、和/或数据存储设备748。数据存储设备748可存储可由处理器702和/或704执行的代码749。
在本发明的各种实施例中,本文中所述的操作,例如,参照图1~图7所述的,可以被实现为硬件(例如,逻辑电路)、软件、固件或其组合,其可作为计算机程序产品来提供,所述计算机程序产品例如包括机器可读或计算机可读的介质,其上存储了用于对计算机进行编程以使其执行这里所述的处理过程的指令(或软件过程)。所述机器可读介质可包括存储设备,如参照图1~图7所述的那些。
此外,这样的计算机可读介质可以作为一个计算机程序产品来下载,其中所述程序可以以包含在载波或其他传播媒介中的数据信号的形式通过通信链路(例如,总线、调制解调器、或者网络连接)从远程计算机(例如,服务器)传输到请求的计算机(例如,客户机)。因此,在这里,载波应被视为包括机器可读介质。
在说明书中提及“一个实施例”或“一实施例”表示,结合该实施例而描述的特定特征、结构或特性可被包括在至少一种实现中。出现在说明书中各处的短语“在一个实施例中”可以或可以不全指同一个实施例。
此外,在说明书和权利要求书中,可以使用术语“耦合的”和“连接的”以及它们所衍生出的词汇。在本发明的一些实施例中,“连接的”可以被用来表示两个或更多元件彼此直接物理或电接触。“耦合的”可以表示两个或更多元件直接物理或电接触。然而,“耦合的”也可以表示两个或更多元件可以彼此不是直接接触,但仍然彼此协作或交互。
因此,虽然已经以特定于结构特征和/或方法步骤的语言描述了本发明的实施例,但是应当理解,所要求保护的主题不应限于所述的具体特征或步骤。相反,所公开的这些具体特征和步骤只是实现所要求保护的主题的示例形式。
Claims (30)
1、一种处理器,包括:
逻辑,用于在先前的与一线程相对应的硬件事务存储器访问执行失败之后,引发执行与所述线程相对应的软件事务存储器访问。
2、如权利要求1所述的处理器,其中,所述逻辑引发所述软件事务存储器访问和所述硬件事务存储器访问中的至少一个被推测性地执行。
3、如权利要求1所述的处理器,其中,当与一个不同指令发生冲突时,所述处理器中止所述硬件事务存储器访问。
4、如权利要求3所述的处理器,其中,所述不同指令是与所述软件事务存储器访问相对应的指令。
5、如权利要求3所述的处理器,还包括至少一个用于执行所述不同指令的处理器内核。
6、如权利要求1所述的处理器,还包括用于存储与对应于所述硬件事务存储器访问的第一指令和对应于所述软件事务存储器访问的第二指令中的至少一个相对应的信息的存储器,其中,所述处理器在所述第一指令和第二指令中的至少一个提交时更新所存储的信息。
7、如权利要求1所述的处理器,还包括用于存储数据的存储器,其中,所述硬件事务存储器访问和所述软件事务存储器访问对存储在所述存储器中的数据执行相同的操作。
8、如权利要求1所述的处理器,还包括用于存储与所述硬件事务存储器访问和所述软件事务存储器访问中的至少一个相对应的信息的存储器,其中,所存储的信息包括虚拟地址、物理地址、所有权标志、以及推测标志中的一个或多个。
9、如权利要求8所述的处理器,其中,所述存储器包括内容可寻址存储器。
10、如权利要求8所述的处理器,其中,所述存储器包括数据转换后备缓冲器。
11、如权利要求1所述的处理器,还包括用于存储页表的存储器,其中,所述页表存储的数据包括虚拟地址标签、物理地址标签、以及物理地址数据中的一个或多个。
12、如权利要求11所述的处理器,还包括用于存储指向所述页表的最后一条表项的页表界限指针的寄存器。
13、如权利要求1所述的处理器,还包括用于存储与所述软件事务存储器访问相对应的描述符的寄存器。
14、如权利要求1所述的处理器,还包括多个内核。
15、如权利要求1所述的处理器,其中,所述硬件事务存储器访问由于硬件溢出而执行失败。
16、一种方法,包括:
执行一线程的第一指令,所述第一指令对应于硬件事务存储器访问;以及
当所述第一指令提交失败时,执行所述线程的第二指令,所述第二指令对应于软件事务存储器访问。
17、如权利要求16所述的方法,还包括,推测性地执行所述第一指令和所述第二指令中的至少一个。
18、如权利要求16所述的方法,其中,所述第一指令和所述第二指令对存储在存储器中的数据执行相同的操作。
19、如权利要求16所述的方法,还包括,当与一个不同指令发生冲突时,中止所述第一指令。
20、如权利要求16所述的方法,还包括在数据转换后备缓冲器中存储与所述第二指令相对应的所有权信息。
21、如权利要求16所述的方法,其中,所述第一指令由于硬件溢出而提交失败。
22、一种系统,包括:
存储器,用于存储与硬件事务存储器操作相对应的第一指令和与软件事务存储器操作相对应的第二指令;以及
处理器,用于如果执行所述硬件事务存储器操作将引起高速缓存内的溢出条件,则取回所述第二指令。
23、如权利要求22所述的系统,其中,所述存储器包括用于存储与虚拟地址和物理地址之间的映射相对应的信息的页表。
24、如权利要求23所述的系统,其中,所述页表存储的数据包括虚拟地址标签、物理地址标签、以及物理地址数据中的一个或多个。
25、如权利要求23所述的系统,还包括用于存储所述页表的一部分的内容可寻址存储器。
26、如权利要求22所述的系统,还包括音频设备。
27、一种包括一个或多个指令的计算机可读介质,所述指令在处理器上执行时对所述处理器进行配置以使其执行以下操作:
执行一线程的第一指令,所述第一指令对应于硬件事务存储器访问;以及
当所述第一指令提交失败时,执行所述线程的第二指令,所述第二指令对应于软件事务存储器访问。
28、如权利要求27所述的计算机可读介质,还包括用来对所述处理器进行配置以使其执行以下操作的一个或多个指令:推测性地执行所述第一指令和所述第二指令中的至少一个。
29、如权利要求27所述的计算机可读介质,还包括用来对所述处理器进行配置以使其执行以下操作的一个或多个指令:如果所有权信息包括有效的所有权标志,则中止所述第一指令。
30、如权利要求27所述的计算机可读介质,还包括用来对所述处理器进行配置以使其执行以下操作的一个或多个指令:如果所述第一指令因硬件溢出而提交失败,则取回所述第二指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210457575.7A CN102968292B (zh) | 2005-12-30 | 2006-12-14 | 无约束事务存储器系统 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/323,724 | 2005-12-30 | ||
US11/323,724 US8683143B2 (en) | 2005-12-30 | 2005-12-30 | Unbounded transactional memory systems |
PCT/US2006/048041 WO2007078883A1 (en) | 2005-12-30 | 2006-12-14 | Unbounded transactional memory systems |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210457575.7A Division CN102968292B (zh) | 2005-12-30 | 2006-12-14 | 无约束事务存储器系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101322103A true CN101322103A (zh) | 2008-12-10 |
CN101322103B CN101322103B (zh) | 2013-01-02 |
Family
ID=37964014
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210457575.7A Expired - Fee Related CN102968292B (zh) | 2005-12-30 | 2006-12-14 | 无约束事务存储器系统 |
CN2006800450971A Expired - Fee Related CN101322103B (zh) | 2005-12-30 | 2006-12-14 | 无约束事务存储器系统及其方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210457575.7A Expired - Fee Related CN102968292B (zh) | 2005-12-30 | 2006-12-14 | 无约束事务存储器系统 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8683143B2 (zh) |
JP (1) | JP2009521767A (zh) |
KR (1) | KR100954623B1 (zh) |
CN (2) | CN102968292B (zh) |
DE (2) | DE112006003597T5 (zh) |
GB (1) | GB2447575B (zh) |
WO (1) | WO2007078883A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102893256A (zh) * | 2009-12-15 | 2013-01-23 | 英特尔公司 | 在无约束事务存储器(utm)模式中处置操作系统(os)转换 |
CN101814018B (zh) * | 2008-12-30 | 2013-11-06 | 英特尔公司 | 事务存储器(tm)系统中的读和写监控属性 |
US9195600B2 (en) | 2009-12-15 | 2015-11-24 | Intel Corporation | Mechanisms to accelerate transactions using buffered stores |
CN106030532A (zh) * | 2014-03-26 | 2016-10-12 | 英特尔公司 | 用于事务存储器程序的软件回放器 |
US9477515B2 (en) | 2009-12-15 | 2016-10-25 | Intel Corporation | Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode |
CN107003945A (zh) * | 2014-12-23 | 2017-08-01 | 英特尔公司 | 缓冲存储器中的推测性读 |
CN107771323A (zh) * | 2015-06-16 | 2018-03-06 | Arm 有限公司 | 共享页 |
CN109845113A (zh) * | 2016-08-01 | 2019-06-04 | Tsv链接公司 | 多通道高速缓存存储器和系统存储器设备 |
Families Citing this family (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7856537B2 (en) | 2004-09-30 | 2010-12-21 | Intel Corporation | Hybrid hardware and software implementation of transactional memory access |
US7809903B2 (en) * | 2005-12-15 | 2010-10-05 | Intel Corporation | Coordinating access to memory locations for hardware transactional memory transactions and software transactional memory transactions |
US8683143B2 (en) | 2005-12-30 | 2014-03-25 | Intel Corporation | Unbounded transactional memory systems |
US8180977B2 (en) * | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory in out-of-order processors |
US8180967B2 (en) * | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory virtualization |
US8719807B2 (en) | 2006-12-28 | 2014-05-06 | Intel Corporation | Handling precompiled binaries in a hardware accelerated software transactional memory system |
US8132158B2 (en) * | 2006-12-28 | 2012-03-06 | Cheng Wang | Mechanism for software transactional memory commit/abort in unmanaged runtime environment |
US7802136B2 (en) | 2006-12-28 | 2010-09-21 | Intel Corporation | Compiler technique for efficient register checkpointing to support transaction roll-back |
US8185698B2 (en) * | 2007-04-09 | 2012-05-22 | Bratin Saha | Hardware acceleration of a write-buffering software transactional memory |
US8006227B2 (en) * | 2007-06-01 | 2011-08-23 | Microsoft Corporation | Efficiently locating transactional code blocks in a transactional memory system |
US9280397B2 (en) * | 2007-06-27 | 2016-03-08 | Intel Corporation | Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata |
US8140773B2 (en) | 2007-06-27 | 2012-03-20 | Bratin Saha | Using ephemeral stores for fine-grained conflict detection in a hardware accelerated STM |
US8341133B2 (en) * | 2008-06-27 | 2012-12-25 | Microsoft Corporation | Compressed transactional locks in object headers |
US8776063B2 (en) * | 2008-11-26 | 2014-07-08 | Oracle America, Inc. | Method and system for hardware feedback in transactional memory |
US20100332768A1 (en) * | 2009-06-26 | 2010-12-30 | Microsoft Corporation | Flexible read- and write-monitored and buffered memory blocks |
US8161247B2 (en) | 2009-06-26 | 2012-04-17 | Microsoft Corporation | Wait loss synchronization |
DE112009005006T5 (de) * | 2009-06-26 | 2013-01-10 | Intel Corporation | Optimierungen für ein ungebundenes transaktionales Speichersystem (UTM) |
US8370577B2 (en) | 2009-06-26 | 2013-02-05 | Microsoft Corporation | Metaphysically addressed cache metadata |
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 |
US8812796B2 (en) * | 2009-06-26 | 2014-08-19 | Microsoft Corporation | Private memory regions and coherence optimizations |
US8250331B2 (en) | 2009-06-26 | 2012-08-21 | Microsoft Corporation | Operating system virtual memory management for hardware transactional memory |
US8489864B2 (en) * | 2009-06-26 | 2013-07-16 | Microsoft Corporation | Performing escape actions in transactions |
US8229907B2 (en) * | 2009-06-30 | 2012-07-24 | Microsoft Corporation | Hardware accelerated transactional memory system with open nested transactions |
US20110016290A1 (en) * | 2009-07-14 | 2011-01-20 | Arie Chobotaro | Method and Apparatus for Supporting Address Translation in a Multiprocessor Virtual Machine Environment |
US9092253B2 (en) * | 2009-12-15 | 2015-07-28 | Microsoft Technology Licensing, Llc | Instrumentation of hardware assisted transactional memory system |
US8539465B2 (en) * | 2009-12-15 | 2013-09-17 | Microsoft Corporation | Accelerating unbounded memory transactions using nested 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 |
US8095824B2 (en) * | 2009-12-15 | 2012-01-10 | Intel Corporation | Performing mode switching in an unbounded transactional memory (UTM) system |
US8533440B2 (en) * | 2009-12-15 | 2013-09-10 | Microsoft Corporation | Accelerating parallel transactions using cache resident transactions |
US8924692B2 (en) | 2009-12-26 | 2014-12-30 | Intel Corporation | Event counter checkpointing and restoring |
KR101639672B1 (ko) * | 2010-01-05 | 2016-07-15 | 삼성전자주식회사 | 무한 트랜잭션 메모리 시스템 및 그 동작 방법 |
US8739164B2 (en) * | 2010-02-24 | 2014-05-27 | Advanced Micro Devices, Inc. | Automatic suspend atomic hardware transactional memory in response to detecting an implicit suspend condition and resume thereof |
US9104690B2 (en) | 2011-01-27 | 2015-08-11 | Micron Technology, Inc. | Transactional memory |
WO2013085518A1 (en) * | 2011-12-08 | 2013-06-13 | Intel Corporation | A method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution |
JP2014085839A (ja) | 2012-10-24 | 2014-05-12 | International Business Maschines Corporation | 並列実行機構及びその動作方法 |
US9182986B2 (en) | 2012-12-29 | 2015-11-10 | Intel Corporation | Copy-on-write buffer for restoring program code from a speculative region to a non-speculative region |
US10169103B2 (en) | 2014-02-27 | 2019-01-01 | International Business Machines Corporation | Managing speculative memory access requests in the presence of transactional storage accesses |
CN109240945B (zh) * | 2014-03-26 | 2023-06-06 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及处理器 |
GB2529148B (en) * | 2014-08-04 | 2020-05-27 | Advanced Risc Mach Ltd | Write operations to non-volatile memory |
GB2529899B (en) * | 2014-09-08 | 2021-06-23 | Advanced Risc Mach Ltd | Shared Resources in a Data Processing Apparatus for Executing a Plurality of Threads |
US11029995B2 (en) | 2015-05-14 | 2021-06-08 | Oracle International Corporation | Hardware transactional memory-assisted flat combining |
WO2017012667A1 (en) * | 2015-07-22 | 2017-01-26 | Huawei Technologies Co., Ltd. | Hardware transactional memory in non volatile memory with log and no lock |
US9977619B2 (en) * | 2015-11-06 | 2018-05-22 | Vivante Corporation | Transfer descriptor for memory access commands |
US9772874B2 (en) | 2016-01-29 | 2017-09-26 | International Business Machines Corporation | Prioritization of transactions based on execution by transactional core with super core indicator |
CN107025130B (zh) | 2016-01-29 | 2021-09-03 | 华为技术有限公司 | 处理节点、计算机系统及事务冲突检测方法 |
US11086632B2 (en) | 2017-02-10 | 2021-08-10 | Alibaba Group Holding Limited | Method and apparatus for providing accelerated access to a memory system |
KR101885030B1 (ko) * | 2017-04-21 | 2018-08-02 | 전북대학교산학협력단 | 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법 및 트랜잭션 처리 장치 |
US10621103B2 (en) | 2017-12-05 | 2020-04-14 | Arm Limited | Apparatus and method for handling write operations |
KR102007117B1 (ko) * | 2018-01-19 | 2019-08-02 | 전북대학교산학협력단 | 트랜잭션 처리 방법 및 트랜잭션 처리 시스템 |
KR102150597B1 (ko) * | 2019-07-23 | 2020-09-01 | 전북대학교산학협력단 | 최적의 재시도 정책을 제공하는 하이브리드 트랜잭셔널 메모리 시스템의 운영 방법 및 하이브리드 트랜잭셔널 메모리 시스템 |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5428761A (en) * | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
US5652859A (en) * | 1995-08-17 | 1997-07-29 | Institute For The Development Of Emerging Architectures, L.L.C. | Method and apparatus for handling snoops in multiprocessor caches having internal buffer queues |
US5765208A (en) * | 1995-09-29 | 1998-06-09 | Motorola, Inc. | Method of speculatively executing store instructions prior to performing snoop operations |
US5835961A (en) * | 1996-05-03 | 1998-11-10 | Digital Equipment Corporation | System for non-current page table structure access |
US6038645A (en) * | 1996-08-28 | 2000-03-14 | Texas Instruments Incorporated | Microprocessor circuits, systems, and methods using a combined writeback queue and victim cache |
US20020108025A1 (en) * | 1998-10-21 | 2002-08-08 | Nicholas Shaylor | Memory management unit for java environment computers |
US6681293B1 (en) * | 2000-08-25 | 2004-01-20 | Silicon Graphics, Inc. | Method and cache-coherence system allowing purging of mid-level cache entries without purging lower-level cache entries |
US6895527B1 (en) * | 2000-09-30 | 2005-05-17 | Intel Corporation | Error recovery for speculative memory accesses |
US6640285B1 (en) * | 2000-10-26 | 2003-10-28 | Emc Corporation | Method and apparatus for improving the efficiency of cache memories using stored activity measures |
US6877088B2 (en) * | 2001-08-08 | 2005-04-05 | Sun Microsystems, Inc. | Methods and apparatus for controlling speculative execution of instructions based on a multiaccess memory condition |
US7328316B2 (en) * | 2002-07-16 | 2008-02-05 | Sun Microsystems, Inc. | Software transactional memory for dynamically sizable shared data structures |
US7263585B2 (en) * | 2002-09-19 | 2007-08-28 | Ip-First, Llc | Store-induced instruction coherency mechanism |
US7216202B1 (en) * | 2003-02-25 | 2007-05-08 | Sun Microsystems, Inc. | Method and apparatus for supporting one or more servers on a single semiconductor chip |
US7139892B2 (en) * | 2003-05-02 | 2006-11-21 | Microsoft Corporation | Implementation of memory access control using optimizations |
US7587615B2 (en) * | 2003-09-12 | 2009-09-08 | International Business Machines Corporation | Utilizing hardware transactional approach to execute code after initially utilizing software locking by employing pseudo-transactions |
US7676603B2 (en) * | 2004-04-20 | 2010-03-09 | Intel Corporation | Write combining protocol between processors and chipsets |
GB0415850D0 (en) * | 2004-07-15 | 2004-08-18 | Imagination Tech Ltd | Memory management system |
US7395382B1 (en) * | 2004-08-10 | 2008-07-01 | Sun Microsystems, Inc. | Hybrid software/hardware transactional memory |
US7856537B2 (en) * | 2004-09-30 | 2010-12-21 | Intel Corporation | Hybrid hardware and software implementation of transactional memory access |
US7984248B2 (en) * | 2004-12-29 | 2011-07-19 | Intel Corporation | Transaction based shared data operations in a multiprocessor environment |
US20060184840A1 (en) * | 2005-02-11 | 2006-08-17 | International Business Machines Corporation | Using timebase register for system checkstop in clock running environment in a distributed nodal environment |
WO2006124193A2 (en) * | 2005-04-20 | 2006-11-23 | Videoegg, Inc. | Browser enabled video manipulation |
US7882339B2 (en) * | 2005-06-23 | 2011-02-01 | Intel Corporation | Primitives to enhance thread-level speculation |
US7480771B2 (en) * | 2005-08-17 | 2009-01-20 | Sun Microsystems, Inc. | Conditional synchronization mechanisms allowing multiple store operations to become visible while a flagged memory location is owned and remains unchanged |
US7809903B2 (en) * | 2005-12-15 | 2010-10-05 | Intel Corporation | Coordinating access to memory locations for hardware transactional memory transactions and software transactional memory transactions |
US7870545B2 (en) * | 2005-12-16 | 2011-01-11 | Intel Corporation | Protecting shared variables in a software transactional memory system |
US7730286B2 (en) * | 2005-12-30 | 2010-06-01 | Intel Corporation | Software assisted nested hardware transactions |
US8683143B2 (en) | 2005-12-30 | 2014-03-25 | Intel Corporation | Unbounded transactional memory systems |
US20070186056A1 (en) * | 2006-02-07 | 2007-08-09 | Bratin Saha | Hardware acceleration for a software transactional memory system |
US9009116B2 (en) * | 2006-03-28 | 2015-04-14 | Oracle America, Inc. | Systems and methods for synchronizing data in a cache and database |
US8180967B2 (en) * | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory virtualization |
US8180977B2 (en) * | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory in out-of-order processors |
US7502897B2 (en) * | 2006-06-28 | 2009-03-10 | Intel Corporation | Object based conflict detection in a software transactional memory |
US7542977B2 (en) * | 2006-06-29 | 2009-06-02 | Intel Corporation | Transactional memory with automatic object versioning |
US8185698B2 (en) * | 2007-04-09 | 2012-05-22 | Bratin Saha | Hardware acceleration of a write-buffering software transactional memory |
-
2005
- 2005-12-30 US US11/323,724 patent/US8683143B2/en not_active Expired - Fee Related
-
2006
- 2006-12-14 CN CN201210457575.7A patent/CN102968292B/zh not_active Expired - Fee Related
- 2006-12-14 WO PCT/US2006/048041 patent/WO2007078883A1/en active Application Filing
- 2006-12-14 KR KR1020087015791A patent/KR100954623B1/ko active IP Right Grant
- 2006-12-14 JP JP2008548586A patent/JP2009521767A/ja active Pending
- 2006-12-14 DE DE112006003597T patent/DE112006003597T5/de not_active Ceased
- 2006-12-14 DE DE112006004285.8T patent/DE112006004285A5/de not_active Ceased
- 2006-12-14 CN CN2006800450971A patent/CN101322103B/zh not_active Expired - Fee Related
- 2006-12-14 GB GB0809450A patent/GB2447575B/en not_active Expired - Fee Related
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101814018B (zh) * | 2008-12-30 | 2013-11-06 | 英特尔公司 | 事务存储器(tm)系统中的读和写监控属性 |
CN102893256A (zh) * | 2009-12-15 | 2013-01-23 | 英特尔公司 | 在无约束事务存储器(utm)模式中处置操作系统(os)转换 |
US9195600B2 (en) | 2009-12-15 | 2015-11-24 | Intel Corporation | Mechanisms to accelerate transactions using buffered stores |
CN102893256B (zh) * | 2009-12-15 | 2016-05-18 | 英特尔公司 | 在无约束事务存储器(utm)模式中处置操作系统(os)转换 |
US9477515B2 (en) | 2009-12-15 | 2016-10-25 | Intel Corporation | Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode |
CN106030532A (zh) * | 2014-03-26 | 2016-10-12 | 英特尔公司 | 用于事务存储器程序的软件回放器 |
CN107003945A (zh) * | 2014-12-23 | 2017-08-01 | 英特尔公司 | 缓冲存储器中的推测性读 |
CN107771323A (zh) * | 2015-06-16 | 2018-03-06 | Arm 有限公司 | 共享页 |
CN109845113A (zh) * | 2016-08-01 | 2019-06-04 | Tsv链接公司 | 多通道高速缓存存储器和系统存储器设备 |
CN109845113B (zh) * | 2016-08-01 | 2023-05-09 | Tsv链接公司 | 多通道高速缓存存储器和系统存储器设备 |
Also Published As
Publication number | Publication date |
---|---|
US20070156994A1 (en) | 2007-07-05 |
WO2007078883A1 (en) | 2007-07-12 |
KR100954623B1 (ko) | 2010-04-27 |
GB0809450D0 (en) | 2008-07-02 |
GB2447575B (en) | 2009-05-13 |
CN101322103B (zh) | 2013-01-02 |
DE112006003597T5 (de) | 2008-11-13 |
DE112006004285A5 (de) | 2016-03-10 |
JP2009521767A (ja) | 2009-06-04 |
GB2447575A (en) | 2008-09-17 |
CN102968292B (zh) | 2015-09-02 |
US8683143B2 (en) | 2014-03-25 |
KR20080076981A (ko) | 2008-08-20 |
CN102968292A (zh) | 2013-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101322103B (zh) | 无约束事务存储器系统及其方法 | |
JP6342970B2 (ja) | トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性 | |
CN101814017B (zh) | 提供硬件属性的存储器模型以支持事务执行的方法和设备 | |
KR101025354B1 (ko) | 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법 | |
US9195600B2 (en) | Mechanisms to accelerate transactions using buffered stores | |
JP5608738B2 (ja) | 無制限トランザクショナルメモリ(utm)システムの最適化 | |
US8200909B2 (en) | Hardware acceleration of a write-buffering software transactional memory | |
JP4388916B2 (ja) | 複数の順序ベクトルで複数のメモリ順序モデルを実施する方法及び装置 | |
RU2501071C2 (ru) | Механизм запроса поздней блокировки для пропуска аппаратной блокировки (hle) | |
US20110145516A1 (en) | Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata | |
US9292294B2 (en) | Detection of memory address aliasing and violations of data dependency relationships | |
JP6023765B2 (ja) | 無制限トランザクショナルメモリ(utm)システムの最適化 | |
JP6318440B2 (ja) | 無制限トランザクショナルメモリ(utm)システムの最適化 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
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: 20130102 Termination date: 20211214 |