CN101059783A - 事务型存储器的虚拟化 - Google Patents
事务型存储器的虚拟化 Download PDFInfo
- Publication number
- CN101059783A CN101059783A CNA2007101266549A CN200710126654A CN101059783A CN 101059783 A CN101059783 A CN 101059783A CN A2007101266549 A CNA2007101266549 A CN A2007101266549A CN 200710126654 A CN200710126654 A CN 200710126654A CN 101059783 A CN101059783 A CN 101059783A
- Authority
- CN
- China
- Prior art keywords
- processor
- transactional memory
- instruction
- access
- logic
- 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 55
- 238000003860 storage Methods 0.000 claims description 49
- 230000000712 assembly Effects 0.000 claims description 23
- 238000000429 assembly Methods 0.000 claims description 23
- 239000000872 buffer Substances 0.000 claims description 21
- 238000011084 recovery Methods 0.000 claims description 15
- 230000004044 response Effects 0.000 claims 4
- 230000005055 memory storage Effects 0.000 claims 1
- 230000002085 persistent effect Effects 0.000 claims 1
- 238000005096 rolling process Methods 0.000 claims 1
- 238000004891 communication Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 10
- 238000012795 verification Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 241001269238 Data Species 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000006243 chemical reaction 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
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 238000009738 saturating Methods 0.000 description 2
- 208000003443 Unconsciousness Diseases 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 238000007430 reference method Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000725 suspension Substances 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
- 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/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
- G06F9/38585—Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
-
- 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
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)
Abstract
描述了在虚拟模式下执行事务型存储器的方法和设备。在一个实施例中,在相应于事务型存储器访问请求的操作导致溢出后,相应于事务型存储器访问请求的数据可被存储于存储器的区域,且对于所述溢出的发生可更新被存储的数值。
Description
背景技术
【0001】本发明公开涉及电子技术领域。更特别的,本发明的实施例涉及事务型存储器(TM)的虚拟。
【0002】为提高性能,一些计算机系统可同时执行多线程。一般的,在某一线程访问一共享资源时,可获得一块共享资源。当共享资源为存储于存储器内的数据结构的状况时,试图访问同样资源的所有的线程可根据由锁定机制提供的相互排他性串行化操作的执行。该方式对系统的性能有害且导致程序失败,如,由于死锁故障。
【0003】为减少由于锁定机制造成的性能损失,一些计算机系统采用了事务型存储器。事务型存储器一般指一同步模式,该模式允许多线程同时访问一共享资源,如,没有采用锁定机制。然而,随着事务大小的增长,与事务型存储器执行相关的额外开销可导致性能降低。
附图说明
【0004】参照附图提供了详细的描述。在附图中,参考数字的最左侧的数字标识了参考数字首次出现的附图。在不同的附图中同样参考数字的使用表明了相似或相同的对象。
【0005】图1,8,和9示意了计算机系统的实施例的方框图,该计算机系统可用于实施在此讨论的多种实施例。
【0006】图2示意了根据本发明的一实施例的处理器芯片的部分框图。
【0007】图3示意了根据本发明的一实施例的一高速缓存和一存储器区域的框图。
【0008】图4-6示意了根据本发明的各种实施例的方法的框图。
【0009】图7示意了一事务型状态和控制寄存器的实施例。
具体实施方式
【0010】在下述描述中,各种细节被提供以彻底理解各种实施例。然而,一些实施例可能不依赖该细节而实施。此外,公知的方法,程序,组件和电路均没有细节描述以免混淆特别的实施例。
【0011】在此讨论的一些实施例可提供事务型存储器的虚拟化的高效机制(该事务型存储器的虚拟化可在此一般性的被称作虚拟的事务型存储器(VIM))。进一步,在此描述的一些技术可允许在单个计算机系统中,如参照图1和8-9中所述的计算机系统,执行三种线程。该三种线程可对应于一虚拟化事务模式(在此也称作VTM),一非虚拟化事务模式(在此一般被称作一限制性的事务型存储器(RTM)),和一非事务模式。一些实施例可用于各种类型的处理器中,如参照图1-9中所述的处理器。
【0012】更特别的,根据本发明的一实施例,图1示意了一计算机系统100的框图。该系统100可包括一个或多个处理器102-1到102-N(通常在此称作“多个处理器102”或“处理器102”)。该多个处理器102可通过一联络线或总线104通讯。每个处理器可包括多个组件,为清楚起见,其中某些组件仅仅参照处理器102-1以讲述。因此,每个剩余的处理器102-2到102-N可包括参照处理器102-1所述的相同或相似的组件。
【0013】在一个实施例中,处理器102-1可包括一个或多个处理器芯片106-1到106-M(在此被称作“多个芯片106”,或更一般的称作“芯片106”),一高速缓存108(在各种实施例中可以为一共享高速缓存或一专用高速缓存),和/或路由器110。该处理器芯片106可在一单个集成电路片上实施。进一步,该电路片可包括一个或多个共享和/或专用的高速缓存(如一个或多个高速缓存108),总线或联络线(如一总线或联络线112),存储器控制器,或其它组件。在一实施例中,该路由器110可用于在多个处理器102-1组件和/或系统100组件中通信。进一步,该处理器102-1可包括多于一个的路由器110。进一步,该多个路由器(110)可相互通信以使数据在处理器102-1内或处理器102-1外的各种组件之间路由。
【0014】高速缓存108可存储被一个或多个处理器102-1的组件,如芯片106,所使用的数据(如,包括指令)。例如,为处理器102的组件更快的访问,高速缓存108可在本地高速缓存存储在存储器114中的数据。如图1中所示,存储器114可通过联络线104与处理器102通信。在一实施例中,高速缓存108可为一二级(L2)高速缓存或一末级高速缓存(LLC)。同时,每个芯片106可包括一一级(L1)高速缓存(116)(在此通常被称作“L1高速缓存116”)。进一步,高速缓存(如高速缓存106和/或高速缓存108)可包括被各种芯片(106)所共享的一中级高速缓存(MLC)和/或一末级高速缓存(LLC)。处理器102-1的各种组件可通过总线(如,总线112)直接与高速缓存108,和/或一存储器控制器或集线器通信。
【0015】根据本发明的一实施例,图2示意了处理器芯片106的部分框图。在一个实施例中,在图2中所绘的箭头示意了通过芯片106的指令流。一个或多个处理器芯片(如处理器芯片106)可在如参照图1中所述的一单个集成电路片(或电路小片(die))上实施。进一步,该芯片可包括一个或多个共享和/或专用高速缓存(如,图1中的高速缓存108),联络线(如,图1中的联络线104和/或112),存储器控制器,或其它组件。在一实施例中,图2中所示的处理器芯片106可用于执行一种或多种线程,该线程可对应于一虚拟化事务模式,一非虚拟化(或限制性的)事务模式,和一非事务模式。
【0016】如图2中所示,处理器芯片106可包括一读取单元202以读取芯片106所执行的指令。该指令可从任意的存储设备读取,如存储器114和/或参照图8、9所述的存储器设备。芯片106可包括一解码单元204以解码读取的指令。例如,该解码单元204可将读取的指令解码成多个微指令(微操作)。此外,芯片106可包括一调度单元206。该调度单元206可执行多个与存储解码的指令(如,从解码单元204获得)直到准备好发送指令,如,直到获得所有被解码指令的源值,相关的操作。在一个实施例中,该调度单元206可调度和/或发布(或发送)被解码的指令到执行单元208中执行。该执行单元208可执行被发送的经解码(如,通过解码单元204)和发送(如,通过调度单元206)的指令。在一个实施例中,该执行单元208可包括多于一个执行单元,如一个存储器执行单元,一个整型执行单元,一个浮点执行单元,或其它执行单元。进一步,该执行单元208可执行异常(out-of-order)指令。因此,在一实施例中,处理器芯片106可为一异常处理器芯片。该芯片106可包括一回收(retirement)单元210。该回收单元210可回收调配后的被执行指令。在一实施例中,被指令执行的回收可导致从指令执行中调配处理器状态,释放指令使用的物理寄存器。
【0017】如图2所示,芯片106可额外包括一追踪高速缓存或微代码只读存储器(uROM)211以存储微代码和/或少量被读取的指令(如,通过读取单元202)。该存储于uROM211中的微代码可用于设定芯片106的各种硬件组件,如一计算机可读媒质或其它参照图8和9所述的存储设备。该芯片106也可包括一重排序(reorder)缓冲区(ROB)212以存储飞行(flight)指令(或微指令)的信息以被处理器芯片106的各个组件访问。该芯片106可进一步包括一RAT(寄存器别名(alias)表)214以保持逻辑(或结构)寄存器(如通过软件指令的操作符所标识的寄存器)到相应的物理寄存器的映射。在一个实施例中,在RAT214的每个入口可包括一个分配给每个物理寄存器的ROB标识符。此外,一个负载缓冲区216和一个存储缓冲区218(在此可共同称作存储器序列缓冲区(MOB))可分别存储待决中的没有载入或写回主存储器(如,在处理器芯片106外部的存储器,如存储器114)的存储器操作。一个MOB逻辑219可执行涉及如在此所提及的缓冲区216和218的各种操作。进一步,处理器芯片106可包括一总线单元220以允许通过一条或多条总线(如总线104和/或112)在处理器芯片106的组件和其它组件(如参照图1所述的组件)之间通信。一个或多个填充缓冲区222将从存储器114中获得的数据(如,经总线104和/或112)在存储到高速缓存116之前暂时存储。
【0018】如图2中所示,高速缓存116可包括一条或多条高速缓存线224(如,高速缓存线0到W)。在一个实施例中,对于每条高速缓存线224,该高速缓存116相应于在芯片106中执行的每个线程可包括一事务读位(TXa)226和/或一事务写位(TXw)228。在一个实施例中,该高速缓存116相应于每个线程可包括多个位228。位226和228可如参照图4和5中所述的被设置或被清空,如,显示通过一事务型存储器访问请求(载入和/或存储)访问相应的高速缓存线。例如,一虚拟化逻辑229可更新位226和/或228以显示通过一虚拟的事务型存储器访问请求(载入和/或存储)访问相应的高速缓存线。同样,即使在图2中,每条高速缓存线224被示意为具有单个位226和228,其他的设置也是可能的。例如,一事务读位226(或事务写位228)可对于于高速缓存116的一个选择区域,如一高速缓存块或高速缓存116的其它区域。同样,位226和/或228可存储于高速缓存116之外,例如在图1中的高速缓存108中,存储器114或一牺牲(victim)高速缓存中。
【0019】参照图4进一步论述,芯片106可包括一事务层次计数器230以存储相应于依然没有调配的事务型存储器访问请求的数量的一数值。例如,该存储于计数器230的数值可显示相应于同一线程的多个事务型存储器访问请求的嵌套层次。例如,当一个事务在一个待决中的事务(如通过库程序调用或其它嵌套的程序)中初始化时可导致多个事务型存储器访问请求。该计数器230可用作任何类型的存储器设备,如硬件寄存器或存储于存储器(如存储器114或高速缓存116)中的一个变量。芯片106也可包括一个事务层次计数逻辑232以更新存储于计数器230中的数值。此外,将参照图4进一步论述,芯片106可包括一事务校验点逻辑234以抽点校验(或存储数据相应于)芯片106各种组件的状态和一个事务恢复逻辑236以恢复芯片106各种组件的状态。该芯片106也可包括以高速缓存逻辑239,其可通过访问高速缓存116执行各种操作,将参照图4进一步论述。例如,此外,芯片106可包括一个或多个额外的对应于各种事务型存储器访问请求的寄存器240,各种事务型存储器访问请求为诸如事务状态和控制(TXSR)(将参照图7进一步论述),事务指令指针(TXIP)(如,可为一指向在相应的事务的启始时(或紧接在前的)指令的指令指针),和/或事务堆栈指针(TXSP)(如,可为一指向存储了芯片106的一个或多个组件的各种状态的堆栈的栈头的堆栈指针)。
【0020】如图2中所示,芯片106可包括一溢出计数器250(如,存储相应于由于芯片中事务执行而导致的现有的溢出的数量的一数值,相应于由于多个芯片执行一应用程序而导致的现有的溢出的数量的一数值,和/或相应于在执行一应用程序的一个芯片(或多个芯片)中溢出的事务的数量的一数值)和一相应的溢出计数器逻辑251(如,更新存储于计数器250中的数值,将参照图4-6进一步论述)。同样,存储器114可包括一所有权(ownership)表252,一个操作系统(O/S)254,和一个溢出存储器256。将参照图3-6进一步论述,表252和存储器256可存储相应于溢出高速缓存116的事务的各种数据。在一个实施例中,存储器256和表252可在存储器114的虚拟存储器(或不变的)区域实施,如,提供数据的持续性,即使一线程被从芯片106中挂起或断开。进一步,该O/S254可用于如图1和8-9中的计算机系统的各个组件通信。在一实施例中,该溢出计数器250也可用于监视此位置的所有线程的同步(或异步)控制执行。例如,在一个实施例中,一存储于溢出计数器250的非零值可使其它线程等待到该数值归零(如,所有的线程可以等待或所有的试图执行一事务的线程可以等待归零)。同样,在一实施例中,监视计数器250可允许非事务型线程的非侵入型中断;因此,甚至在事务型存储器的“无意识”的线程执行中允许可分性(atomicity),如,第三方动态链接库(DLLs)等。
【0021】在一个实施例中,一个或多个事务状态寄存器260可被包括于芯片106中,每个事务状态寄存器260可相应于一在芯片106中执行的事务。一第一事务可在事务状态寄存器260中存储一第二事务的数值以表明第二事务被放弃(如,由于一比第二事务更高的优先级被分配给该第一事务,例如,为避免冲突)。在一个实施例中,每个事务可监视各自的状态寄存器260以确定是否应当放弃。例如,甚至在一事务被挂起、暂时从芯片(106)中断开时,该状态寄存器260可用于放弃该事务。该过程允许其它的事务无需等待一清晰的放弃而执行。同样,该状态寄存器260可在存储器(如,在高速缓存116,108和/或存储器114)中,而非硬件寄存器中予以实施。
【0022】根据本发明的一些实施例,图3示意了高速缓存108部分的框图和一存储器114。如图3中所示,该高速缓存108可包括一条或多条高速缓存线(302)。该高速缓存108也可包括一个或多个安全状态位(304),其中至少相应于每条高速缓存线(302)的一个位304。在一个实施例中,位304可以支持与位226和228相同或类似的操作。例如参考图5进一步讨论,在没有校验存储于表252中的相应数据的情况下,存储于位304的数值可表明是否已经将每条高速缓存线(302)复制到高速缓存108中。同样,即使在图3中,每条高速缓存线302被示意成分别具有位304,其它的配置也是可能的。例如,一安全状态位(304)可相应于高速缓存108的一个选择区域,如一个高速缓存块或高速缓存108的其它区域。同样,位304可被存储于高速缓存108外的其它位置,如高速缓存116或存储器114。
【0023】一高速缓存控制器306可允许高速缓存108与图1中所示的系统100的其它组件通信,如通过一条或多条联络线104和/或112。该高速缓存控制器306可包括用于高速缓存108中执行的各种操作的逻辑。例如,高速缓存控制器306可包括一安全监控逻辑308(如,更新存储于位304中的数据)。可选地,该逻辑308可在图1中的处理器102内的其它组件内。
【0024】如图3所示,该所有权表252可包括一个或多个相应于从高速缓存116溢出的事务(或事务存储器访问请求)的入口310。在一个实施例中,每个入口310可包括一或多个:标签域312(如,标识已经溢出的高速缓存块或线,在一实施例中可以为虚拟地址,但可进一步包括其它的信息以访问别名发布(aliasing issues)),一数据域314(如,存储相应于一存储操作的数据),一状态域316(如,表明数据314的有效/无效,和/或是否该溢出的事务对应于一载入或一存储操作),和/或一事务标识符(D)域318(如,以标识导致溢出的事务)。将参考图4-9进一步论述有关图1-3中的组件的操作的细节。
【0025】更特别的,图4示意了执行一个或多个相应于事务型存储器访问请求的方法400的一个实施例的一个框图。在一个实施例中,参照图1-3和图8-9所述的各种组件将被用于执行一个或多个参照图4所述的操作。
【0026】参照图1-4,在操作402中,一个事务型存储器访问请求(如一个或多个存储器载入或存储操作)被接受到。例如,该读取单元202可读取一表明事务型存储器执行的起始指令。根据至少一个指令设定结构,该表明事务型存储器执行的起始指令可为TXMBEG<user_handler_IP>,其中,user_handler_IP标识了一个用户处理程序,在放弃,错误,溢出,异常,或其它错误状态时执行可重新指向该用于处理程序。同样,一事务终止指令(如根据至少一指令设定结构的TXMEND)可表明事务的终止。在一个实施例中,在TXMBEG指令和TXMEND指令之间的所有操作可标记成事务型。在一个实施例中,该事务型操作可缺省为事务型(和明显的非事务型,例如通过一指令前缀或参数),如,允许非事务型继承库在没有码转换下事务型地使用。可选地,该事务型操作可缺省为非事务型(例如,和明显的非事务型,通过一指令前缀或参数)。在一个实施例中,一特别的明显的非事务型指令的设定可被当作非事务型使用,即使该指令出现在如在一TXMBEG指令和一TXMEND指令之间的事务中。同样,在一个实施例中,在一个事务中(如,在一TXMBEG指令和一TXMEND指令之间)出现的非事务型的存储操作可作为存储器114的写入操作由执行单元208执行。在一个实施例中,操作的缺省配置的设定可由TXMBEG指令提供,如,通过一相应的参数或前缀。
【0027】在操作404中,逻辑232可更新计数器230(如,根据操作递增或递减计数器230)。在一个实施例中,TXMBEG指令的执行(如,通过指令单元208)可导致计数器230的更新。可选地,计数器230可在产生时间更新,如,当调度单元206产生该TXMBEG指令时。同样,在操作404中,该事务校验点逻辑234可抽点校验各种组件的状态(如,计数器230,计数器250,和/或寄存器240)。例如,逻辑234可在一个存储设备中(如,在高速缓存116,高速缓存108,和/或存储器114)存储相应于一个或多个芯片106的组件的状态的数据。如在此进一步论述,由于芯片106可同时(和/或随机性的)处理多于一个事务型存储器访问请求,该逻辑234可存储芯片106的各种组件的多于一个的状态,此外,在一个实施例中,该各种状态可被存储于通过堆栈实现的数据结构中。
【0028】在操作406中,如通过执行单元208,一个或多个相应于操作402的事务型存储器访问请求指令(或操作)被执行。在操作406的指令执行过程中,每次访问了高速缓存116的一区域,相应的位(如,位226和/或228可被更新,例如根据操作设定或清空)表明了事务型存储器请求的访问。例如,逻辑239可标识正访问高速缓存116的事务型指令并更新相应的位226和/或228。在一个实施例中,操作406的指令可清楚地或模糊地标识为一事务型或非事务型操作,例如,通过使用在指令中提供的或存储于某个相应的位置,如在ROB212的一相应入口内,的前缀(或控制位)。
【0029】在操作408中,如果其它事务型存储器访问请求被接收,方法400继续操作404。否则,如果没有其它事务型存储器访问请求在操作408被接收,在操作410中,确定是否一相应于操作406的指令的执行的冲突,放弃,或硬件溢出(如,将参照图5进一步论述)状态存在。如果存在放弃(如,一明显的放弃)或与其它指令(如在同一或不同的处理器芯片内执行的相应于其它线程的指令)的冲突,该事务在操作412中被放弃。例如,一个冲突指令可发送一探听(snoop)至操作402的事务访问的高速缓存116的入口(或作为被访问而被标记,如位226和/或228中存储的数值所指示的)。
【0030】在一个实施例中,如果一探听导致存储于存储器(如存储在高速缓存116)内的数据无效,在载入缓冲区216的端部的载入指令可被包括在探听校验且可执行全地址校验(而不是部分地址校验),如,通过MOB逻辑219。如果在载入缓冲区216的端部的载入指令与操作410中的探听相冲突,相应的事务型存储器请求可在操作412中被放弃。可选地,一明确的放弃请求可导致操作410的执行。例如,根据至少一个指令设定结构,表明事务型存储器执行的放弃的指令可为TXMABT。在多个嵌套的事务型存储器访问请求时(如,由计数器230中存储的数据所表明),该放弃指令可导致明确的放弃,该放弃将导致重新运行或恢复到前一个状态并调用相应的处理程序(如,最底层的处理程序,当多个待决中的事务型存储器访问如参照操作402中所论述的以相应的TXMBEG指令所标识的请求时)。在一个实施例中,在操作412,该事务恢复逻辑236可如参照图2将芯片106的各种组件恢复到原先的状态。
【0031】在一个实施例中,当高速缓存116被收回(evict),具有活动(如,设定)位226或位228的入口可最后被废除。如果在高速缓存116中没有进一步可使用的空间,该程序执行可被重新指向用户处理程序(如相应于TXMBEG指令的处理程序)。此外,当一事务处于激活但暂时挂起时,填充缓冲区222可被用于服务非事务型操作(如,存储数据)。
【0032】如果在操作410中存在一硬件溢出状态,一个或多个相应于该导致溢出的事务的操作在操作413中以虚拟的模式(如,在一实施例中通过访问一存储器114的不变区域如表252和/或存储器256)被执行。该操作413可对其它事务没有任何影响并且该其它的事务可在一虚拟模式下执行。相应于操作413的实施例的细节将参照图5论述。在操作410中,如果不存在冲突,放弃,硬件溢出,操作414确定相应于事务型存储器访问请求(如,通过TXMBEG和相应的TXMEND指令所标识)的事务型存储器访问操作是否被成功调配(如,通过回收单元210)。如果该事务型存储器访问操作没有调配,方法400继续操作406以执行相应的指令。一旦相应于事务型存储器访问请求的事务型存储器访问操作被成功调配,在操作416中逻辑232更新计数器230。在一个实施例中,TXMEND指令的执行(如,通过执行单元208)或产生(如,通过调度单元206)可导致事务型存储器访问请求的调配,并因此执行操作416。
【0033】在操作418中,确定相应于其它事务型存储器访问请求任何事务型存储器访问操作是否依然没有调配。在一个实施例中,操作418通过逻辑232执行,例如,通过确定存储于计数器230内的数值是否表明剩余的事务型存储器访问请求(如,在一个实施例中,当计数器230不被清空)。如果在操作418中仍然执行其它操作,该方法400继续操作406。一旦没有相应于事务型存储器访问请求的进一步的操作剩余(如计数器230清空),在操作420,根据被调配的事务型存储器访问请求的操作,相应的数据(如,在高速缓存116,108,和/或存储器114)被实质(atomically)更新。同样,如果存储于计数器230内的数据表明TXMEND对应于最外层事务型存储器访问(如,当计数器230被清空),那么该TXMEND指令可表明一相应的事务型存储器访问请求的调配点。在一个实施例中,该相应的位226和/或228,表252的入口,和/或存储在溢出存储器256中的数据同样被更新(如在一实施例中被清空)以表明没有进一步的事务型存储器访问请求在待决中。因此,该TXMEND指令可导致一实质的调配,如,通过确保所有的投机(speculation)和/或异常已经被解决,所有属于事务写设定的高速缓存块处于专用的状态,和/或所有属于读设定的块当前呈现并有效。在此所论述的读或写设定通常指在存储器内(如,高速缓存116)的一套数据,该读或写设定分别相应于位226和228。在一个实施例中,当相应的写操作被调配,该进入的探听被停止。在一个实施例中,该调配点同样可导致控制跳转或转移到一调配处理程序以在返回之前执行其它的处理。
【0034】在一个实施例中,理论上(speculatively),芯片106可执行参照方法400中所述的各种指令(或操作)。同样,方法400的各种操作可无序执行。例如,操作406,408,410,或413可以任意次序执行。进一步,在一个实施例中,探听请求可先于操作410,412,414,和/或420被停止且在操作410,412,414,和/或420执行后终止停止。
【0035】图5示意了在虚拟模式下为执行一个或多个相应于事务型存储器访问请求操作的方法500的一个实施例的框图。在一个实施例中,方法500可执行一个或多个相应于图4的操作413的操作。在一个实施例中,参照图1-3和8-9所述的各种组件可被用于执行一个或多个参照图5所述的操作。
【0036】参照图1-5,在操作502中(如,在操作410的溢出后),该虚拟逻辑229和/或高速缓存逻辑239可确定相应于事务型块的溢出(410)是否为首次访问(如,或者在高速缓存116内该相应的为226和/或228没被标记为事务型,或者该访问没有命中高速缓存116)。如果该溢出的访问为首次访问(502),该虚拟逻辑229可在操作506中校验表252以确定在表252中是否存在一相应的入口。如果在表252中存在一相应的入口,如果逻辑251确定在操作507中存在溢出(如,在一个实施例中,存储于计数器250的数值大于零),在操作508中,该虚拟逻辑229可校验在导致溢出的事务和其它在所有权表252中具有入口的事务之间的冲突。如果存在冲突(510),该方法500可继续操作512以恢复处理器芯片106的各种组件的状态,例如,如操作412中所述。
【0037】在操作514中(如,如果在操作506中不存在相应的入口,在操作507中不具有存在的溢出,和/或在操作510中不存在冲突),该高速缓存逻辑239载入相应的已经导致溢出到高速缓存(如,高数缓存116和/或108)的事务数据。在操作516中,该虚拟逻辑229可存储相应于操作410中的导致硬件溢出的事务的数据。例如,逻辑229可在参照图3所论述的所有权表252的入口存储数据,如,在虚拟模式下表明访问高速缓存116的一区域。在一个实施例中,存储于域314的数据可能是由溢出事务所写入的新数据或预先存储于高速缓存116的相应位置的旧数据。如果新数据存储于314,在调配中(如,在操作420),该新数据被复制到存储器(如,存储器114)。如果旧数据存储于314,在放弃中(如,在操作412),该原始数据被恢复到存储器(如,存储器114)。在一个实施例中,表252可被执行于芯片116中的多个线程所共享。可选地,表252可通过单个线程访问。同样,代替逻辑229或者除逻辑229以外,表252的入口可通过一内核(如,相应于O/S254)和/或用户指令(例如一用户处理程序)管理。在一个实施例中,每次溢出发生时,逻辑251可更新存储于计数器250中的数值(如,在一实施例中,通过递增预先存储的数值)。此外,每次相应于溢出的事务的操作调配(如,在操作414),该存储于计数器250的数值被更新(如,在一实施例中递减)。进一步,在操作516,逻辑234可如参照操作404所论述的抽点校验(或存储)一个或多个芯片106的各个组件的状态,如,允许如参照操作512所论述的嵌套恢复。
【0038】在操作518中,如果溢出的访问不为一第一访问(如,通过操作502确定)和/或在操作516后,那么逻辑229可导致在虚拟模式下一个或多个相应于溢出事务的指令(或操作)的执行,如,通过利用溢出存储256以载入和/或存储不装入高速缓存(如,高速缓存116和/或108)的数据,且此后方法500继续操作414。根据一实施例,只要被标记的块在高速缓存中(如,通过操作502确定),在操作506中对于此后访问同一位置时就无需校验溢出表252。
【0039】在各种实施例中,在操作512,逻辑236可恢复芯片106的状态到嵌套事务的各种等级,如,通过恢复芯片1 06的各个组件的状态到事务的最底层,最外层,或中间嵌套层。在一个实施例中,在操作512,可援引一软件处理程序执行嵌套恢复到各种等级(可能在操作404和/或516中已经被校验点),包括恢复到事务的最底层,最外层,或中间嵌套层。关于被用户处理程序所执行的嵌套恢复的进一步细节将参照图7被论述。进一步,在操作512中,具有一设定位228的高数缓存线(如224)可被清空和/或无效以限制其它线程访问该无效数据,该访问可能导致错误执行。在一个实施例中,该嵌套恢复的处理程序可执行非事务型。在一个实施例中,表252可存储优先信息,例如,通过使用在执行操作518和/或512时可能被使用的O/S(254)优先信息或时标(timestamp)信息。
【0040】在一个实施例中,为减少虚拟的事务处理对非事务型存储器操作和非虚拟的事务的影响,采用了一“非安全”高速缓存状态,如提供存储器层次(hierarchy)优化。可选地,对每条高速缓存线或块的位可如参照图3中的位304所论述的表明相应的线/或块是否非安全。该高速缓存状态可包括图1中的处理器102的高速缓存层次。该状态(或位)可表明一高速缓存块或线(如,302和/或224)在未查询表252的情况下被引入高速缓存(如,单个的108或116)。如果不存在溢出(507),没有命中一最低等级高速缓存的任何请求(如一硬件预读取)可从存储器(114)读入相应的数据并标签上“非安全状态”。在一个实施例中,一具有激活位228(如,位228在一个实施例中被设定)的高速缓存块(如,302和/或224)的收回将导致存储器(114)的清空。在非安全状态(或位)下,将导致相应的高速缓存块被标记上非安全状态。如果没有设定非安全状态,在操作506中,该操作允许任意芯片(106)访问任意的高速缓存块,而没有占用校验表252的开销。如果设定了非安全状态,相应的块的访问可导致返回到请求操作的消息以请求查询表252。在一个实施例中,当存储在计数器250内的数值表明存在溢出时可以无效芯片106的硬件预读取。在高速缓存中采用非安全状态(或位)实施例中可在提供正确的执行时允许预读取。在一个实施例中,表252中的成员可清楚地通过与高速缓存相干的协议缓存和保持。
【0041】图6示意了在虚拟模式下当处理器执行一非事务型存储操作和一事务时提供数据校正的方法600的一个实施例的框图。在一个实施例中,参照图1-3和7-9所述的各种组件可被用于执行一个或多个参照图6所论述的操作。
【0042】参照图1-6,在操作410后,溢出计数器逻辑251可确定是否一第一溢出将在操作602中出现(如在一个实施例中,存储于计数器250内的数值正从零过渡到非零值)。不具有一第一溢出(602)时,该方法600继续操作502。否则,在操作604,逻辑251可产生一信号以表明其它共享同一计数器250(如,通过一共享的存储器位置)的线程或芯片(106)校验各自的存储缓冲区218并清空由回收单元210所收回且还没有写入高速缓存(如高速缓存108和/或116)和/或存储器(如,存储器114)的任何存储操作(如,在存储缓冲区218的最早(oldest)的区域,该区域可称作“高级存储”)。一旦执行该导致操作604执行的线程的芯片(106)收到所有的相应的存储内容已经从各自的存储缓冲区218清空的肯定应答(在一个实施例中,可通过同步交换协议(如,包括在如参照图4所述的处理程序的软件处理程序中),该同步交换协议在溢出计数器250从零过渡到1时被调用),方法600将继续操作502。在一个实施例中,芯片106根据存储于高速缓存116中的表明操作同一数据的相应的线程(执行于同一芯片106,或其它执行与同一应用程序相关的线程的芯片106中的所有线程,)数目的数值可确定所有的肯定应答是否已经在操作606中被接收。进一步,一实施例可利用与高速缓存相干的协议确定操作606的结果,例如,通过参考高速缓存116的一共享位置,该共享位置表明了操作同一数据的相应的线程的数目。在一个实施例中,一旦芯片(106)接收到操作604的信号,该芯片将过渡到一特殊模式,此时,在存储缓冲区218中的存储操作变高级且当该存储内容处于记录缓冲区212的端部时被发送到芯片116。进一步,在操作413后(如,一旦没有更多相应的事务在虚拟模式下操作,如通过存储于计数器250内的数值所表明),该已经进入特殊模式的芯片将返回普通模式。
【0043】图7示意了一事务状态和控制寄存器(TXSR)700的一个实施例。在一个实施例中,该TXSR寄存器700可被用于实现各种如参照图1-6在此所述的实施例。例如,在一个实施例中,图2中的寄存器240可包括TXSR寄存器700。进一步,参照图1-6所述的操作可通过访问寄存器700来实施。
【0044】如图7中所示,TXSR寄存器可包括一个或多个入口702(或位,在一个实施例中)。每个入口702根据至少一个指令设定结构可具有示意名称(504)。同样,每个入口702可具有相应的类706,如,将在一个类中相似的位组合。图7另外显示了相应于每个入口702的说明708。在一个实施例中,类信息706和说明708是起信息叙述的目的并没有存储于实际的寄存器500中。在一个实施例中,如果一个入口702表明了由说明708所标识的状态,可实施一个或多个动作710。在图7中,TXDR和TXFR可为调试目的的寄存器(如,包括图2的寄存器240)。例如,TXDR可在事务放弃操作之前存储存储器指令的地址或数据冲突的探听地址。进一步,TXFR可存储导致一事务放弃的错误指令的指令指针(IP)。在一个实施例中,存储在TXDR和TXFR中的数值可通过一事务处理程序在放弃后读取(如,通过TXBERG标识的处理程序)以允许软件确定导致放弃的地址。
【0045】参照图1-7,在一个实施例中,参照图4所述的TXMBERG指令可依据TXSR寄存器700的状态执行一个或多个下述动作:
1、TXMBEG指令可转换执行为一基本的执行模式,此时伴随指令的操作在一可恢复的模式下执行。当芯片106在此模式时通过指令执行的任意更新能在任意时间清除。为允许寄存器状态可恢复,一些寄存器240可通过逻辑234被抽点校验。如果执行必须的操作将导致一错误、被清除的事务更新、和/或传送到由TXMBEG指令标识的处理程序的控制。
2、TXMBEG指令也可执行一基于TXSR寄存器700的状态的状态控制传输。如果设定了恰当的TXSR位,该TXMBEG指令可传送程序控制到相应于事务型存储器访问请求的指令流中的不同点而无需记录返回信息。目标(目的)操作符可指出指令跳转的地址。当一TXMBEG执行一状态控制传输时,芯片106没有过渡到一可恢复的执行模式,且根据至少一个指令设定结构,执行与JMP(或跳转)指令相似。
【0046】参照图1-7,在一个实施例中,参照图3所述的TXMEND指令可基于TXSR寄存器700的状态执行下述伪代码(在一个实施例中,下面的tmpmemstatus可为一持续选通的状态以表明高速缓存116中的所有的高速缓存块处于恰当的状态):
IF TXSR.exec_state!=X_ACTIVE
THEN
Illegal Opcode_ERROR
FI
IF_TXND!=0
THEN
Done;(*nested block retired*)
FI
IF(!VTM) (*not virtualized mode*)
THEN
IF(tmpmemstatus)
THEN
TXSR.exec_state=X_COMMITTING
Commit_cache_rtm_mode()
TXSR<-0
Done
ELSE(*could not commit memory state*)
TXSR.exec_state=X_ABORTING
Abort_cache_rtm_mode()
TXSR.exec_state=X_ABORTED
TXSR.attempt_state++(saturating) (*to track the number of failed attempts)
JMP to TXIP
(*restore SP etc.*)
FI
ELSE(*in VTM MODE*)
IF TXSR.C_VTM_MODE&&TXSR.XSW=COMMITTED
THEN
TXSR<-0
Commit_cache_vtm_mode()
Done;
ELSEIFTXSR.C_VTM_MODE&&TXSR.XSW!=ABORTED
THEN
invoke_microcode_setep_commit()
(*tries to Compare&Swap TXSR.XSW to COMITTED if
successful,then signals s/w lib*)
reply_op()
ELSE IF TXSR.C_VTM_MODE&&TXSR.XSW=ABORTING
THEN
invoke_microcode_setup_abort()
(*TXSR.XSW<-ABORTED*)
(*signal software library*)
ELSE
ASSERT(TXSR.XSW=ABORTED)
TXSR<-0
Abort_cache_vtm_mode()
FI
FI
FI
FI (*end of!C_VTM_MODE*)
【0047】在一个实施例中,对于所有的VTM的调配和放弃可重新指向一随后调用基于TXSR700状态的软件库的用户处理程序(如由TXMBEG所标识的处理程序)。同样跳转可转到基本块的开始,随后依据TXSR700的状态,调用用户处理程序。
【0048】参照图1-7,在一个实施例中,参照图3所述的TXMABT指令可允许用户明确地放弃该基本块的操作。该效果与当执行放弃时,所有的更新被清除(除了寄存器700的位)相似。在一个实施例中,TXMABT指令可基于TXSR寄存器700状态执行下述伪代码:
IF TXSR.exec_state!=X_ACTIVE
THEN
Illegal Opcode_ERROR
FI
Discard_speculative_updates_cache()
IF(TXSR.C_VTM_MODE!=0‖TXSR.XSW!=OVF)
THEN
restore_architectural_register_state()(*SP/IP*)
TXSR.exec_state=X_ABORTED
ELSE
TXSR.exec_state=X_ABORTING
(*if vtm abort is microcode assist*)
Invoke_microcode_assit_for_abort_cleanup()
TXSER.exec_state=X_ABORTED
FI
TXSR.attemp_state++(saturating)
JMP to TXIP
【0049】在一个实施例中,如果用户处理程序在操作512将恢复至最外层的处理程序且如果该软件保存了所有的如参照操作404和/或516所述的寄存器状态,那么软件将随后修复存储的信息(如,如参照图3-5所述的存储于堆栈中的数据),恢复寄存器状态且更新TXSR700中的相应的位。该修复可包括恢复系统堆栈指针(ESP)指向记入寄存器校验点的处理程序(如,压入堆栈),随后合理地出栈。恢复ESP直到刚记入寄存器入栈为止可允许任何在事务中执行的调用而产生的ESP更新被正确的修复。在一个实施例中,在堆栈中保存的状态可包括以下:ESP,TXIP(也可选处理程序地址,寄存器240)。在一个实施例中,TXSR700可对应于最外层。如果该硬件保存了状态,则该硬件可执行在前的操作。
【0050】在一个实施例中,如一用户处理程序在操作512中需要恢复到最低层的处理程序,则:
·软件可执行所有嵌套的恢复动作(软件处理程序应已经保存所有的状态)。
·当在一事务中为使用被写入一软件库,且将执行的嵌套的恢复(如果库调用维持该动作,则该调用的用户处理程序可被调用,而不调用最外层处理程序)。在这种情况下,用户处理程序可确定是执行嵌套恢复还是放弃回到最外层处理程序。该操作可允许放弃以所有的方式返回到最外层事务。否则,如果调用一传统库(该库不支持事务型存储器访问)且放弃,则该失败可返回到调用该库的最底层的事务。
·处理程序可逆序执行存储器日志(如,存储于存储器114内)并恢复状态到一特定的嵌套级别,如通过更新相应的数据,且随后在该点重启该事务。可选地,该处理程序可从堆栈中出栈数据并重新指定读取单元202到最终级别的处理程序,同时在TXSR700中相应的位表明放弃(如,通知处理程序为何位10-12中的一个被调用)。
·该存储日志可具有足够的信息有助于状态的重建。如果将执行嵌套放弃,硬件,微代码,软件支持(或程序),或以上组合可在VTM模式下匆忙地(on thefly)创建该日志。在RTM模式下,该操作不会实施。
·日志和恢复日志的库可为具有预定接口的特定平台。一个日志格式的样本(以程序顺序)如下所示(其中“嵌套级别”相应于存储于层次计数器230内的数值):
<地址><写入前原始数据><嵌套级别>
<嵌套级别转换>
<地址><写入前原始数据><嵌套级别>
【0051】在上述例子中,日志的反向执行可使得软件库“毫无疑问”地恢复状态到一特定的嵌套级别且被嵌入的<嵌套级别转换>也有助于此。同样,每个<写入前原始数据>对于一特定的嵌套级别是唯一的。进一步,反向执行该日志,用户处理程序可确定哪个数值是刚记录的数值(该数值依然对应于一正待决中的事务,且非原始数值)哪个不是刚记录的数值。在一实施例中,该硬件可包括一微代码支持以执行该日志。
【0052】图8示意了一计算机系统800的一实施例的框图。该计算机系统800可包括一个或多个通过联络线804(或总线)通信的中央处理单元(CPUs)或处理器802。在一个实施例中,处理器802可与图1中的处理器102相同或相似。同样,联络线804可与如参照图1-2中所述的联络线104和/或112相同或相似。该处理器802可包括任意类型的处理器,如普通目的的处理器,网络处理器(如处理计算机网络间通信的数据的处理器),或其它处理器,包括一精简指令集计算机(RISC)处理器或复杂指令集计算机(CISC)处理器。进一步,处理器802可具有一单芯或多芯设计,如参照图1-2中所述的包括一个或多个处理器芯片(106)。具有多芯设计的处理器802可在同一集成电路片上集成不同类型的处理器芯片。同样,具有多芯设计的处理器802可被实施为对称的或非对称的多处理器。
【0053】如图8中所示,芯片组806可与联络线804通信。该芯片组806可包括存储控制集线器(MCH)808。该MCH808可包括与存储器114通信的存储器控制器810。存储器114可存储数据,如包括被处理器802执行的指令序列,或与计算机系统800通信的任何其它设备。在本发明的一个实施例中,存储器114可包括一个或多个易失存储(或内存)设备如随机存取存储器(RAM),动态的随机存取存储器(DRAM),同步DRAM(SDRAM),静态RAM(SRAM),或其它易失存储设备。非易失性存储器如硬盘也可被使用。额外的设备可通过联络线804通信,如多个处理器和/或多个系统存储器。
【0054】MCH808可另外包括一与图像加速器816通信的图像接口814。在一个实施例中,该图像接口814可通过一加速图像接口(AGP)与图像加速器816通信。在本发明的一个实施例中,一显示器(如平板显示器)可与图像接口814通信,例如,通过信号转换器,该信号转换器将存储于如视频存储器或系统存储器的图像的数字代码信号转换为被显示器所分析并显示的显示信号。在多个实施例中,由显示设备所产生的显示信号可在被显示器分析之前经过各种控制设备并随后在显示器上显示。
【0055】进一步,一集线器接口818可允许在MCH808和输入输出(I/O)控制集线器(ICH)820之间通信。该ICH820可提供接口给I/O设备与计算机系统800通信。该ICH820可与总线822通过一外设桥(或控制器)824通信,如一外设组件连接(PCI)桥或一通用串行总线(USB)控制器。该桥824可在处理器802和外设之间提供数据路径。其它类型的拓扑也可被利用。同样,多条总线可与ICH820通信,如,通过多个桥或控制器。进一步,在本发明的各种实施例中,其它与ICH820通信的外设包括,集成驱动电子设备(IDE)或小型计算机系统接口(SCSI)硬件驱动,USB端口,键盘,鼠标,并口,串口,软盘驱动,或数字数据支持设备(如,数字视频接口(DVI))。
【0056】总线822可与音频设备826,一个或多个磁盘驱动828,以及网络适配器830通信。该网络适配器830可与计算机网络831通信,如允许系统800的各种组件通过网络831发送和/或接收数据。其它设备可通过总线822通信。同样,在本发明的一些实施例中各种组件(如网络适配器830)可与MCH808通信。此外,处理器802和MCH808可组合形成一单个芯片。进一步,在本发明的一些实施例中的图形加速器816也可包括在MCH808内。
【0057】在一个实施例中,计算机系统800可包括易失性和/或非易失性存储器(或存储设备)。例如,非易失性存储器可包括以下一个或多个:只读存储器(ROM),可编程ROM(PROM),可擦除PROM(EPROM),电气EPROM(EEPROM),硬盘(如828),软盘,压缩磁盘ROM(CD-ROM),数字化通用盘(DVD),闪存,磁光盘,或其它各种类型的存储电子数据(如,包括指令)的非易失性机器可读的媒质。
【0058】根据本发明的一个实施例,图9示意了一配置成点对点(PtP)的计算机系统900。特别的,图9示意了一系统,其中处理器,存储器和输入/输出设备通过多个点对点接口连接。参照图1-6所述的操作可通过系统900的一个或多个组件执行。
【0059】如图9所示,系统900可包括多个处理器,为清楚起见,仅仅示出其中的两个处理器,即处理器902和904。处理器902和904可分别包括一本地存储器控制器集线器(MCH)906和908以允许存储器910和912之间通信。存储器910和/或912可存储如参照图1-3和8的存储器114所述的各种数据。
【0060】在一个实施例中,处理器902和904可为如参照图8所述的处理器802中的一个。处理器902和904可通过分别使用PtP接口电路916和918的点对点(PtP)接口914交换数据。同样,处理器902和904可通过分别使用PtP接口电路926,928,930,932的单个PtP接口922和924与芯片组920交换数据。芯片组920可进一步通过一高性能图像接口936,如,使用一PtP接口电路937,与高性能图像电路934交换数据。
【0061】本发明的至少一个实施例可在处理器902和904中提供。例如,图1或2中的一个或多个芯片106位于处理器902和904内。但是,本发明的其它实施例可分布于图9的系统900中的电路、逻辑单元或设备中。进一步,本发明的其它实施例可分布于图9中示意的电路、逻辑单元、或设备中。芯片组920可使用PtP接口电路与总线940通信。总线940可具有一个或多个与之通信的设备,如总线桥942和I/O设备943,通过总线944,总线桥943可与其它设备如键盘/鼠标945、通信设备946(如调制解调器,网络接口设备(如图8中的网络适配器830)、或其它可与计算机网络831通信的通信设备)、音频I/O设备、和/或一数据存储设备948通信。该数据存储设备948可存储被处理器902和/或处理器904执行的代码949。
【0062】在本发明的各种实施例中,在此所述的操作,如参照图1-9,可通过硬件(如电路),软件,固件,微代码,或以上组合而实现,其可被作为一计算机程序产品提供,如包括一具有存储于其上的指令(或软件程序)的机器可读或计算机可读媒质,该指令被用于编程计算机以执行在此所述的过程。同样,术语“逻辑”可包括,例如,软件,硬件或软件和硬件的组合。该机器可读媒质可包括存储器设备,如根据图1-9所述的各种设备。此外,该计算机可读媒质可作为计算机程序产品被下载,其中该程序可使用通信连接(如,总线,调制解调器,或网络连接)通过包含于载波或其它传播媒介的数据信号从一远程计算机(或服务器)传送到一请求的计算机(如一用户)。因此,在此,载波应被认为构成了一计算机可读媒质。
【0063】详细描述中的“一个实施例”或“某个实施例”意味着与该实施例记载相关的特殊的特征、结构、或特点可包括在至少一种实现中。在说明书各处出现的短语“在一个实施例中”可以或不可以指同一实施例。同样,在说明书和权利要求书中,可以使用术语“耦合”和“连接”以及它们的派生词。在本发明的一些实施例中,“连接”可用于表明两个或多个元件相互之间处于直接物理连接或电接触。“耦合”可表示两个或多个元件处于直接物理或电气连接。然而,“耦合”可同样意味两个或多个元件相互之间可不处于直接连接,但可相互之间配合或相互影响。
【0064】因此,虽然本发明的实施例通过特定的结构特征和/或方法的语言予以描述,但是可以理解所要求的主题并不限于所描述的特定的特征或方案。相反,该特定的特征和方案作为所请求主题的实施样例而被公开。
Claims (31)
1、一个处理器,包括:
第一逻辑,响应于事务型存储器请求导致的一溢出状态,相应于所述事务型存储器访问请求在存储器的第一区域存储数据;
第二逻辑,响应于所述溢出状态,更新第一数值。
2、如权利要求1所述的处理器,进一步包括第三逻辑,其根据所述存储的数据执行一个或多个相应于所述事务型存储器访问请求的操作。
3、如权利要求2所述的处理器,其中所述一个或多个操作对应于一个或多个加载操作或存储操作。
4、如权利要求2所述的处理器,其中,所述第三逻辑导致相应于所述事务型存储器访问请求的一个或多个操作中的至少一些在理论上(speculatively)被执行。
5、如权利要求1所述的处理器,其中所述存储器的第一区域包括一个或多个相应于所述事务型存储器访问请求的入口。
6、如权利要求5所述的处理器,其中所述一个或多个入口包括一个或多个标签域、数据域、状态域、或事务标识域。
7、如权利要求1所述的处理器,进一步包括第三逻辑,其在至少一次相应于所述事务型存储器访问请求的操作调配失败后恢复所述处理器的一个或多个组件的状态。
8、如权利要求7所述的处理器,其中所述第三逻辑将所述处理器的一个或多个组件的所述状态恢复为所述事务型存储器访问请求的一个或多个最底层、最外层、或中间层的嵌套级。
9、如权利要求1所述的处理器,进一步包括第三逻辑,当存在与不同的指令发生的冲突时,放弃所述事务型存储器访问。
10、如权利要求9所述的处理器,其中所述不同的指令为相应于不同的事务型存储器访问请求的指令。
11、如权利要求1所述的处理器,进一步包括第三逻辑,在第一溢出进入所述存储器的所述第一区域的指示将要出现后,其产生信号以在一个或多个存储缓冲区内清空一个或多个相应的存储操作。
12、一个装置,包括:
计数器,该计数器计数已经导致溢出状态的多个所述事务型存储器访问请求的数目。
13、如权利要求12所述的装置,其中所述计数器中的数值对应于多个存在溢出的事务的数目,所述事务已经导致进入存储器的第一区域的溢出。
14、如权利要求12所述的装置,进一步包括第一逻辑,所述第一逻辑根据计数器的数值控制一个或多个所述事务型存储器请求的执行。
15、如权利要求12所述的装置,进一步包括一个或多个处理器芯片,所述处理器芯片执行相应于一个或多个所述事务型存储器访问请求的操作。
16、如权利要求15所述的装置,其中所述一个或多个处理器芯片和计数器处于同一电路小片(die)上。
17、如权利要求12所述的装置,进一步包括存储相应于一个或多个所述事务型存储器访问请求的数据的高速缓存,其中所述高速缓存包括一个或多个位以表明相应于所述事务型存储器访问请求的、针对所述高速缓存的一个区域的访问。
18、如权利要求17所述的装置,进一步包括第一逻辑,所述第一逻辑访问所述一个或多个位以确定对所述高速缓存的所述区域的预先的访问。
19、如权利要求17所述的装置,其中所述高速缓存的所述区域是一个或多个高速缓存线或高速缓存块。
20、如权利要求17所述,其中所述高速缓存包括一个或多个中级高速缓存(MLC)和最低级高速缓存(LLC)。
21、一种方法,包括:
相应于一事务型存储器指令存储数据,所述事务型存储指令已导致进入存储器的不变(persistent)区域的硬件溢出;
响应至少第一指令,更新相应于未被调配的事务型存储器访问请求数目的存储数值;和
响应所述第一指令,根据所述存储数据执行一个或多个操作。
22、如权利要求21所述的方法,进一步包括,在进入所述存储器的所述不变区域的第一溢出将要出现后,产生信号以从一个或多个存储缓冲区清空一个或多个相应的存储操作。
23、如权利要求21所述的方法,进一步包括,在一个或多个操作的至少一个调配失败时,恢复处理器的一个或多个组件的状态。
24、如权利要求21所述的方法,进一步包括,确定硬件溢出是否对应于一高速缓存溢出或一高速缓存丢失。
25、一个系统,包括:
第一存储器,所述第一存储器存储数据;
处理器,所述处理器读取一相应于事务型存储器访问启动的第一指令和相应于事务型存储器访问终止的第二指令,所述处理器存储相应于事务型存储器访问请求的数据,所述事务型存储器访问请求导致第二存储器在所述第一存储器内溢出,且所述处理器响应一个或多个第一指令和第二指令的执行更新存储于存储单元的数值。
26、如权利要求25所述的系统,进一步包括第四逻辑,其在一个或多个相应于事务型存储器访问的操作的至少一个调配失败后,恢复所述处理器的一个或多个组件的状态。
27、如权利要求25所述的系统,进一步包括第四逻辑,其在进入所述第一存储器的第一溢出的指示将要出现后,产生信号以从一个或多个存储缓冲区中清空一个或多个相关的存储操作。
28、如权利要求25所述的系统,进一步包括音频设备。
29、计算机可读媒质,包括一个或多个指令,当在处理器上实施时,所述指令配置所述处理器为:
相应于事务型存储器指令存储数据,所述事务型存储指令导致进入存储器的不变区域的硬件溢出;
响应所述事务型存储器指令,更新相应于未被调配的事务型存储器访问请求数目的存储数值;以及
在一个或多个相应于事务型存储器访问的操作的至少一个未调配成功后,恢复所述处理器的一个或多个组件的状态。
30、如权利要求29所述的计算机可读媒质,进一步包括一个或多个指令,所述指令配置所述处理器响应于所述事务型存储器指令而执行一个或多个相应于用户处理程序的操作。
31、如权利要求29所述的计算机可读媒质,进一步包括一个或多个指令,所述指令配置所述处理器确定硬件溢出是否相应于高速缓存溢出或一高速缓存丢失。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/394,622 US8180967B2 (en) | 2006-03-30 | 2006-03-30 | Transactional memory virtualization |
US11/394,622 | 2006-03-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101059783A true CN101059783A (zh) | 2007-10-24 |
CN101059783B CN101059783B (zh) | 2013-11-06 |
Family
ID=38576921
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101266549A Expired - Fee Related CN101059783B (zh) | 2006-03-30 | 2007-03-30 | 事务型存储器的虚拟化 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8180967B2 (zh) |
CN (1) | CN101059783B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101950259A (zh) * | 2008-12-30 | 2011-01-19 | 英特尔公司 | 在硬件中登记用户处理程序以用于事务存储器事件处理 |
CN104335165A (zh) * | 2012-06-15 | 2015-02-04 | 国际商业机器公司 | 事务开始/结束指令 |
CN101814017B (zh) * | 2008-12-30 | 2015-02-11 | 英特尔公司 | 提供硬件属性的存储器模型以支持事务执行的方法和设备 |
CN105164650A (zh) * | 2012-11-30 | 2015-12-16 | 英特尔公司 | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 |
Families Citing this family (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8813052B2 (en) * | 2005-12-07 | 2014-08-19 | Microsoft Corporation | Cache metadata for implementing bounded transactional memory |
US8683143B2 (en) * | 2005-12-30 | 2014-03-25 | Intel Corporation | Unbounded transactional memory systems |
US8898652B2 (en) | 2006-03-23 | 2014-11-25 | Microsoft Corporation | Cache metadata for accelerating software transactional memory |
US8307346B2 (en) * | 2006-06-09 | 2012-11-06 | Oracle America, Inc. | Atomic groups for debugging |
US20080158237A1 (en) * | 2006-12-28 | 2008-07-03 | Selwan Pierre M | Graphics memory module |
US7783920B2 (en) * | 2007-02-20 | 2010-08-24 | International Business Machines Corporation | Recovery routine masking and barriers to support phased recovery development |
US7793149B2 (en) * | 2007-02-20 | 2010-09-07 | International Business Machines Corporation | Kernel error recovery disablement and shared recovery routine footprint areas |
US20080243943A1 (en) * | 2007-03-27 | 2008-10-02 | Shih-Wei Liao | Method and apparatus for efficient execution of interprocedural transactional memory code while maintaining safety |
US8117403B2 (en) * | 2007-05-14 | 2012-02-14 | International Business Machines Corporation | Transactional memory system which employs thread assists using address history tables |
US8095750B2 (en) * | 2007-05-14 | 2012-01-10 | International Business Machines Corporation | Transactional memory system with fast processing of common conflicts |
US9009452B2 (en) | 2007-05-14 | 2015-04-14 | International Business Machines Corporation | Computing system with transactional memory using millicode assists |
US8095741B2 (en) * | 2007-05-14 | 2012-01-10 | International Business Machines Corporation | Transactional memory computing system with support for chained transactions |
US20080288807A1 (en) * | 2007-05-18 | 2008-11-20 | Michael Edward Lyons | System, method, and computer program for presenting and utilizing footprint data as a diagnostic tool |
US7698504B2 (en) * | 2007-07-03 | 2010-04-13 | Oracle America, Inc. | Cache line marking with shared timestamps |
US7676636B2 (en) * | 2007-07-10 | 2010-03-09 | Sun Microsystems, Inc. | Method and apparatus for implementing virtual transactional memory using cache line marking |
US7516365B2 (en) * | 2007-07-27 | 2009-04-07 | Sun Microsystems, Inc. | System and method for split hardware transactions |
US8621183B2 (en) * | 2008-07-28 | 2013-12-31 | Advanced Micro Devices, Inc. | Processor with support for nested speculative sections with different transactional modes |
US8799582B2 (en) * | 2008-12-30 | 2014-08-05 | Intel Corporation | Extending cache coherency protocols to support locally buffered data |
US8627017B2 (en) | 2008-12-30 | 2014-01-07 | Intel Corporation | Read and write monitoring attributes in transactional memory (TM) systems |
US8127057B2 (en) | 2009-08-13 | 2012-02-28 | Advanced Micro Devices, Inc. | Multi-level buffering of transactional data |
US8566524B2 (en) * | 2009-08-31 | 2013-10-22 | International Business Machines Corporation | Transactional memory system with efficient cache support |
US8924692B2 (en) * | 2009-12-26 | 2014-12-30 | Intel Corporation | Event counter checkpointing and restoring |
KR101639672B1 (ko) * | 2010-01-05 | 2016-07-15 | 삼성전자주식회사 | 무한 트랜잭션 메모리 시스템 및 그 동작 방법 |
US20110208921A1 (en) * | 2010-02-19 | 2011-08-25 | Pohlack Martin T | Inverted default semantics for in-speculative-region memory accesses |
US9626187B2 (en) * | 2010-05-27 | 2017-04-18 | International Business Machines Corporation | Transactional memory system supporting unbroken suspended execution |
US8479053B2 (en) * | 2010-07-28 | 2013-07-02 | Intel Corporation | Processor with last branch record register storing transaction indicator |
US8424015B2 (en) | 2010-09-30 | 2013-04-16 | International Business Machines Corporation | Transactional memory preemption mechanism |
US9043363B2 (en) | 2011-06-03 | 2015-05-26 | Oracle International Corporation | System and method for performing memory management using hardware transactions |
US8850130B1 (en) | 2011-08-10 | 2014-09-30 | Nutanix, Inc. | Metadata for managing I/O and storage for a virtualization |
US8549518B1 (en) | 2011-08-10 | 2013-10-01 | Nutanix, Inc. | Method and system for implementing a maintenanece service for managing I/O and storage for virtualization environment |
US8601473B1 (en) | 2011-08-10 | 2013-12-03 | Nutanix, Inc. | Architecture for managing I/O and storage for a virtualization environment |
US9747287B1 (en) * | 2011-08-10 | 2017-08-29 | Nutanix, Inc. | Method and system for managing metadata for a virtualization environment |
US8863124B1 (en) | 2011-08-10 | 2014-10-14 | Nutanix, Inc. | Architecture for managing I/O and storage for a virtualization environment |
US9009106B1 (en) | 2011-08-10 | 2015-04-14 | Nutanix, Inc. | Method and system for implementing writable snapshots in a virtualized storage environment |
US9652265B1 (en) | 2011-08-10 | 2017-05-16 | Nutanix, Inc. | Architecture for managing I/O and storage for a virtualization environment with multiple hypervisor types |
US10387324B2 (en) | 2011-12-08 | 2019-08-20 | Intel Corporation | 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 |
JP5906325B2 (ja) | 2011-12-16 | 2016-04-20 | インテル・コーポレーション | トランザクションをサポートするコンピューターアーキテクチャにおけるコード特殊化のための例外を用いるプログラム及びコンピューティングデバイス |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US8682877B2 (en) | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
US9262320B2 (en) | 2012-06-15 | 2016-02-16 | International Business Machines Corporation | Tracking transactional execution footprint |
US9223687B2 (en) | 2012-06-15 | 2015-12-29 | International Business Machines Corporation | Determining the logical address of a transaction abort |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US9311101B2 (en) | 2012-06-15 | 2016-04-12 | International Business Machines Corporation | Intra-instructional transaction abort handling |
US9298631B2 (en) | 2012-06-15 | 2016-03-29 | International Business Machines Corporation | Managing transactional and non-transactional store observability |
US9298469B2 (en) * | 2012-06-15 | 2016-03-29 | International Business Machines Corporation | Management of multiple nested transactions |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US9442737B2 (en) | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US20130339680A1 (en) * | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US8688661B2 (en) | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
US9298632B2 (en) * | 2012-06-28 | 2016-03-29 | Intel Corporation | Hybrid cache state and filter tracking of memory operations during a transaction |
US9772866B1 (en) | 2012-07-17 | 2017-09-26 | Nutanix, Inc. | Architecture for implementing a virtualization environment and appliance |
US9430166B2 (en) * | 2012-08-10 | 2016-08-30 | International Business Machines Corporation | Interaction of transactional storage accesses with other atomic semantics |
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 |
US20150220338A1 (en) * | 2013-06-18 | 2015-08-06 | Lejun ZHU | Software polling elision with restricted transactional memory |
US20150113191A1 (en) * | 2013-10-17 | 2015-04-23 | International Business Machines Corporation | Resource serialization in a transactional execution facility |
CN104573586B (zh) * | 2014-02-27 | 2018-09-04 | 深圳市金溢科技股份有限公司 | 非接触式ic卡清点设备及非接触式ic卡的清点方法 |
US20150242216A1 (en) * | 2014-02-27 | 2015-08-27 | International Business Machines Corporation | Committing hardware transactions that are about to run out of resource |
US9697040B2 (en) * | 2014-03-26 | 2017-07-04 | Intel Corporation | Software replayer for transactional memory programs |
GB2533650B (en) * | 2014-12-23 | 2021-07-21 | Advanced Risc Mach Ltd | Debugging data processing transactions |
GB2533603A (en) * | 2014-12-23 | 2016-06-29 | Advanced Risc Mach Ltd | Debugging data processing transactions |
US9830081B2 (en) * | 2015-01-16 | 2017-11-28 | Netapp, Inc. | System and method for synchronizing caches after reboot |
US9792147B2 (en) * | 2015-07-02 | 2017-10-17 | International Business Machines Corporation | Transactional storage accesses supporting differing priority levels |
US10467103B1 (en) | 2016-03-25 | 2019-11-05 | Nutanix, Inc. | Efficient change block training |
WO2017190266A1 (zh) * | 2016-05-03 | 2017-11-09 | 华为技术有限公司 | 管理转址旁路缓存的方法和多核处理器 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5428761A (en) * | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
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 |
US6772300B1 (en) * | 2000-08-30 | 2004-08-03 | Intel Corporation | Method and apparatus for managing out of order memory transactions |
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 |
US7685583B2 (en) * | 2002-07-16 | 2010-03-23 | Sun Microsystems, Inc. | Obstruction-free mechanism for atomic update of multiple non-contiguous locations in shared memory |
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 |
CN1264096C (zh) * | 2003-11-17 | 2006-07-12 | 中兴通讯股份有限公司 | 一种fifo存储器的数据处理方法 |
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 |
CA2605558A1 (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 |
US8180977B2 (en) | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory in out-of-order processors |
-
2006
- 2006-03-30 US US11/394,622 patent/US8180967B2/en not_active Expired - Fee Related
-
2007
- 2007-03-30 CN CN2007101266549A patent/CN101059783B/zh not_active Expired - Fee Related
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101950259A (zh) * | 2008-12-30 | 2011-01-19 | 英特尔公司 | 在硬件中登记用户处理程序以用于事务存储器事件处理 |
CN101814017B (zh) * | 2008-12-30 | 2015-02-11 | 英特尔公司 | 提供硬件属性的存储器模型以支持事务执行的方法和设备 |
TWI476595B (zh) * | 2008-12-30 | 2015-03-11 | Intel Corp | 用於交易式記憶體事件處置之硬體中使用者處置器的登錄 |
US9785462B2 (en) | 2008-12-30 | 2017-10-10 | Intel Corporation | Registering a user-handler in hardware for transactional memory event handling |
CN104335165A (zh) * | 2012-06-15 | 2015-02-04 | 国际商业机器公司 | 事务开始/结束指令 |
CN104335165B (zh) * | 2012-06-15 | 2017-03-01 | 国际商业机器公司 | 用于在计算环境中执行机器指令的方法和计算机系统 |
CN105164650A (zh) * | 2012-11-30 | 2015-12-16 | 英特尔公司 | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 |
CN106648553A (zh) * | 2012-11-30 | 2017-05-10 | 英特尔公司 | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 |
CN105164650B (zh) * | 2012-11-30 | 2019-04-09 | 英特尔公司 | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 |
CN106648553B (zh) * | 2012-11-30 | 2019-06-18 | 英特尔公司 | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US8180967B2 (en) | 2012-05-15 |
US20070239942A1 (en) | 2007-10-11 |
CN101059783B (zh) | 2013-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101059783A (zh) | 事务型存储器的虚拟化 | |
US9003164B2 (en) | Providing hardware support for shared virtual memory between local and remote physical memory | |
US8719543B2 (en) | Systems and methods implementing non-shared page tables for sharing memory resources managed by a main operating system with accelerator devices | |
US9298498B2 (en) | Building a run list for a coprocessor based on rules when the coprocessor switches from one context to another context | |
US10445243B2 (en) | Fault buffer for resolving page faults in unified virtual memory system | |
US8145723B2 (en) | Complex remote update programming idiom accelerator | |
TWI526829B (zh) | 電腦系統、用於存取儲存裝置之方法及電腦可讀儲存媒體 | |
CN1297886C (zh) | 基于地址封锁处理约束的方法和系统 | |
US8176220B2 (en) | Processor-bus-connected flash storage nodes with caching to support concurrent DMA accesses from multiple processors | |
US9372805B2 (en) | Operating on translation look-aside buffers in a multiprocessor environment | |
US8082315B2 (en) | Programming idiom accelerator for remote update | |
US8886919B2 (en) | Remote update programming idiom accelerator with allocated processor resources | |
US20080005504A1 (en) | Global overflow method for virtualized transactional memory | |
EP2562643A2 (en) | Systems and methods for enhancing performance of a coprocessor | |
US20210406196A1 (en) | Memory pools in a memory model for a unified computing system | |
US20120147021A1 (en) | Graphics compute process scheduling | |
WO2011082165A1 (en) | Systems and methods implementing shared or non-shared page tables for sharing memory resources managed by a main operating system with accelerator devices | |
EP2652611A1 (en) | Device discovery and topology reporting in a combined cpu/gpu architecture system | |
US20170031729A1 (en) | Generational Thread Scheduler | |
KR20160051883A (ko) | 가상 재시도 큐 | |
US20120200579A1 (en) | Process Device Context Switching | |
US20150082001A1 (en) | Techniques for supporting for demand paging | |
WO2012083012A1 (en) | Device discovery and topology reporting in a combined cpu/gpu architecture system | |
US20130145202A1 (en) | Handling Virtual-to-Physical Address Translation Failures | |
WO2013085794A1 (en) | Method and apparatus for servicing page fault exceptions |
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 |
Granted publication date: 20131106 Termination date: 20180330 |
|
CF01 | Termination of patent right due to non-payment of annual fee |