CN101059783B - 事务型存储器的虚拟化 - Google Patents

事务型存储器的虚拟化 Download PDF

Info

Publication number
CN101059783B
CN101059783B CN2007101266549A CN200710126654A CN101059783B CN 101059783 B CN101059783 B CN 101059783B CN 2007101266549 A CN2007101266549 A CN 2007101266549A CN 200710126654 A CN200710126654 A CN 200710126654A CN 101059783 B CN101059783 B CN 101059783B
Authority
CN
China
Prior art keywords
transactional memory
access
instruction
treatment facility
speed cache
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
CN2007101266549A
Other languages
English (en)
Other versions
CN101059783A (zh
Inventor
R·拉杰沃
H·H·阿克瑞
K·赖
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 CN101059783A publication Critical patent/CN101059783A/zh
Application granted granted Critical
Publication of CN101059783B publication Critical patent/CN101059783B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional 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

事务型存储器的虚拟化
背景技术
本发明公开一般涉及电子技术领域。更特别的,本发明的实施例涉及事务型存储器(TM)的虚拟化。
为提高性能,一些计算机系统可同时执行多线程。一般的,在某一线程访问一共享资源时,可致使共享资源的锁定。在共享资源为存储于存储器内的数据结构的状况下,试图访问同样资源的所有的线程可根据由锁定机制提供的相互排他性,串行化其操作的执行。该方式对系统的性能有害且导致程序失败,如,由于死锁故障。
为减少由于使用锁定机制造成的性能损失,一些计算机系统可采用事务型存储器。事务型存储器一般指同步模式,该模式允许多线程同时访问一共享资源,如,没有采用锁定机制。然而,随着事务大小的增长,与事务型存储器执行相关的额外开销可导致性能降低。
附图说明
参照附图提供了详细的描述。在附图中,参考数字的最左侧的数字标识了参考数字首次出现的附图。在不同的附图中同样参考数字的使用表明了相似或相同的对象。
图1,8,和9示意了计算系统的实施例的方框图,该计算系统可用于实施在此讨论的多种实施例。
图2示意了根据本发明的实施例的处理器芯片的部分框图。
图3示意了根据本发明的实施例的高速缓存和存储器区域的框图。
图4-6示意了根据本发明的各种实施例的方法的框图。
图7示意了事务型状态和控制寄存器的实施例。
具体实施方式
在下述描述中,各种细节被阐述以彻底理解各种实施例。然而,可能没有该细节而实施一些实施例。在其它情况下,公知的方法,程序,组件和电路均没有详细描述,以免混淆特别的实施例。
在此讨论的一些实施例可提供事务型存储器的虚拟化的高效机制(该事务型存储器的虚拟化可在此一般性的被称作虚拟的事务型存储器(VTM))。进一步,在此描述的一些技术可允许在单个计算机系统中,如参照图1和8-9中所述的计算机系统,执行三种线程。该三种线程可对应于虚拟化事务模式(在此也称作VTM),非虚拟化事务模式(在此一般被称作一限制性的事务型存储器(RTM)),和非事务模式。一些实施例可用于各种类型的处理器中,如参照图1-9中所述的处理器。
更特别的,根据本发明的实施例,图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)、存储器控制器或其它组件。在一实施例中,该路由器110可用于在多个处理器102-1组件和/或系统100组件间通信。进一步,该处理器102-1可包括一个以上的路由器110。进一步,该多个路由器(110)可相互通信以使数据在处理器102-1内或处理器102-1外的各种组件之间路由。
高速缓存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,和/或一存储器控制器或集线器通信。
根据本发明的一实施例,图2示意了处理器芯片106的部分框图。在一个实施例中,在图2中所绘的箭头示意了通过芯片106的指令流。一个或多个处理器芯片(如处理器芯片106)可在如参照图1中所述的单个集成电路芯片(或管芯)上实现。进一步,该芯片可包括一个或多个共享和/或专用高速缓存(如,图1中的高速缓存108),互连(如,图1中的互连104和/或112),存储器控制器,或其它组件。在一实施例中,图2中所示的处理器芯片106可用于执行一种或多种线程,该线程可对应于虚拟化事务模式、非虚拟化(或限制性的)事务模式和非事务模式。
如图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可回收调配后的被执行指令。在一实施例中,被执行指令的回收可导致处理器状态从指令执行中调配,释放指令使用的物理寄存器等。
如图2所示,芯片106可额外包括追踪高速缓存或微代码只读存储器(uROM)211,以存储微代码和/或已经被读取的指令(如,通过读取单元202)的追踪。该存储于uROM211中的微代码可用于配置芯片106的各种硬件组件。在实施例中,存储在uROM 211中的微代码可从与处理器芯片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之前暂时存储。
如图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)高速缓存中。
如参照图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的一个或多个组件的各种状态的堆栈的栈头的堆栈指针)。
如图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)等。
在一个实施例中,一个或多个事务状态寄存器260可被包括于芯片106中,每个事务状态寄存器260可相应于一在芯片106中执行的事务。第一事务可在事务状态寄存器260中存储第二事务的数值以表明第二事务被放弃(如,由于比第二事务更高的优先级被分配给该第一事务,例如,为避免冲突)。在一个实施例中,每个事务可监视各自的状态寄存器260以确定是否应当放弃。例如,甚至在一事务被挂起、暂时从芯片(106)中断开时,该状态寄存器260可用于放弃该事务。该过程允许其它的事务无需等待一清晰的放弃而执行。同样,该状态寄存器260可在存储器(如,在高速缓存116,108和/或存储器114)中,而非硬件寄存器中予以实施。
根据本发明的实施例,图3示意了高速缓存108和存储器114部分的框图。如图3中所示,该高速缓存108可包括一条或多条高速缓存线(302)。该高速缓存108也可包括一个或多个安全状态位(304),其中至少一个位304相应于每条高速缓存线(302)。在实施例中,位304可以支持与位226和228相同或类似的操作。例如参考图5进一步讨论,在没有校验存储于表252中的相应数据的情况下,存储于位304的数值可表明是否已经将对应的高速缓存线(302)复制到高速缓存108中。同样,即使在图3中,每条高速缓存线302被示意成分别具有位304,其它的配置也是可能的。例如,安全状态位(304)可相应于高速缓存108的一个选择部分,如一个高速缓存块或高速缓存108的其它部分。同样,位304可被存储于高速缓存108外的其它位置,如高速缓存116或存储器114。
高速缓存控制器306可允许高速缓存108与图1中所示的系统100的其它组件通信,如通过一条或多条互连104和/或112。该高速缓存控制器306可包括用于高速缓存108中执行的各种操作的逻辑。例如,高速缓存控制器306可包括一安全监控逻辑308(如,更新存储于位304中的数据)。可选地,该逻辑308可在图1中的处理器102内的其它组件内。
如图3所示,该所有权表252可包括一个或多个相应于从高速缓存116溢出的事务(或事务存储器访问请求)的条目310。在一个实施例中,每个条目310可包括以下各项中的一个或多个:标签字段312(如,标识已经溢出的高速缓存块或线,在一实施例中可以为虚拟地址,但可进一步包括其它的信息以解决别名发布(aliasing issues)),数据字段314(如,存储相应于存储操作的数据),状态字段316(如,表明数据314的有效/无效,和/或是否该溢出的事务对应于载入或存储操作),和/或事务标识符(ID)字段318(如,以标识导致溢出的事务)。将参考图4-9进一步论述有关图1-3中的组件的操作的细节。
更特别的,图4示意了执行一个或多个相应于事务型存储器访问请求的方法400的一个实施例的一个框图。在一个实施例中,参照图1-3和图8-9所述的各种组件将被用于执行一个或多个参照图4所述的操作。
参照图1-4,在操作402中,事务型存储器访问请求(如一个或多个存储器载入或存储操作)被接受到。例如,该读取单元202可读取一表明事务型存储器执行的起始指令。根据至少一个指令集架构,该表明事务型存储器执行的起始指令可为TXMBEG<user_handler_IP>,其中,user_handler_IP标识了一个用户处理程序,在放弃,错误,溢出,异常,或其它错误状态时执行可重新指向该用于处理程序。同样,事务终止指令(如根据至少一个指令集架构的TXMEND)可表明事务的终止。在一个实施例中,在TXMBEG指令和TXMEND指令之间的所有操作可标记成事务型。在一个实施例中,该事务型操作可缺省为事务型(和明显的非事务型,例如通过一指令前缀或参数),如,允许非事务型继承库在没有码转换下事务型地使用。可选地,该事务型操作可缺省为非事务型(例如,和明显的非事务型,通过一指令前缀或参数)。在一个实施例中,明显的非事务型指令专有集可被当作非事务型使用,即使该指令出现在如在一TXMBEG指令和一TXMEND指令之间的事务中。同样,在一个实施例中,在一个事务中(如,在一TXMBEG指令和一TXMEND指令之间)出现的非事务型的存储操作可作为存储器114的写入操作由执行单元208执行。在一个实施例中,操作的缺省配置的设定可由TXMBEG指令提供,如,通过一相应的参数或前缀提供。
在操作404中,逻辑232可更新计数器230(如,根据实施递增或递减计数器230)。在一个实施例中,TXMBEG指令的执行(如,通过执行单元208)可导致计数器230的更新。可选地,计数器230可在产生时间更新,如,当调度单元206产生该TXMBEG指令时。同样,在操作404中,该事务校验点逻辑234可抽点校验各种组件的状态(如,计数器230,计数器250,和/或寄存器240)。例如,逻辑234可在存储设备中(如,在高速缓存116,高速缓存108,和/或存储器114)存储相应于一个或多个芯片106的组件的状态的数据。如在此进一步论述,由于芯片106可同时(和/或随机性的)处理一个以上的事务型存储器访问请求,该逻辑234可存储芯片106的各种组件的一个以上的状态,此外,在一个实施例中,该各种状态可被存储于通过堆栈实现的数据结构中。
在操作406中,可如通过执行单元208执行,与操作402的事务型存储器访问请求相对应的指令(或操作)。在操作406的指令执行过程中,每次访问了高速缓存116的一部分,相应的位(如,位226和/或228可被更新,例如根据实施设定或清空)表明了事务型存储器请求的访问。例如,逻辑239可标识正访问高速缓存116的事务型指令并更新相应的位226和/或228。在一个实施例中,操作406的指令可清楚地或模糊地标识为一事务型或非事务型操作,例如,通过使用在指令中提供的或存储于某个相应的位置,如在ROB212的一相应条目内,的前缀(或控制位)。
在操作408中,如果其它事务型存储器访问请求被接收,方法400继续操作404。否则,如果没有其它事务型存储器访问请求在操作408被接收,在操作410中,确定是否有相应于操作406的指令的执行的冲突,放弃,或硬件溢出(如,将参照图5进一步论述)状态存在。如果存在放弃(如,一明显的放弃)或与其它指令(如在同一或不同的处理器芯片内执行的相应于其它线程的指令)的冲突,该事务在操作412中被放弃。例如,一个冲突指令可发送一探听(snoop)至正访问操作402的事务的高速缓存116的条目(或被标记为正被访问,如位226和/或228中存储的数值所指示的)。
在一个实施例中,如果一探听导致存储于存储器(如存储在高速缓存116)内的数据无效,在载入缓冲器216的端部的载入指令可被包括在探听校验且可执行全地址校验(而不是部分地址校验),如,通过MOB逻辑219。如果在载入缓冲器216的端部的载入指令与操作410中的探听相冲突,相应的事务型存储器请求可在操作412中被放弃。可选地,一明确的放弃请求可导致操作410的执行。例如,根据至少一个指令级架构,表明事务型存储器执行的放弃的指令可为TXMABT。在多个嵌套的事务型存储器访问请求时(如,由计数器230中存储的数值所表明),该放弃指令可导致明确的放弃,该放弃将导致重新运行或恢复到前一个状态并调用相应的处理程序(如,最底层的处理程序,当多个待决中的事务型存储器访问如参照操作402中所论述的以相应的TXMBEG指令所标识的请求时)。在一个实施例中,在操作412,该事务恢复逻辑236可如参照图2将芯片106的各种组件恢复到原先的状态。
在一个实施例中,当高速缓存116被收回(evict),具有活动(如,设定)位226或位228的条目可最后被收回。如果在高速缓存116中没有进一步可使用的空间,该程序执行可被重新指向用户处理程序(如相应于TXMBEG指令的处理程序)。此外,当一事务处于激活但暂时挂起时,填充缓冲器222可被用于服务非事务型操作(如,存储数据)。
如果在操作410中存在硬件溢出状态,一个或多个相应于该导致溢出的事务的操作在操作413中以虚拟的模式(如,在一实施例中通过访问一存储器114的不变区域如表252和/或存储器256)被执行。该操作413可对其它事务没有任何影响并且该其它的事务可在一虚拟模式下执行。相应于操作413的实施例的进一步细节将参照图5论述。在操作410中,如果不存在冲突,放弃,硬件溢出,操作414确定相应于事务型存储器访问请求(如,通过TXMBEG和相应的TXMEND指令所标识)的事务型存储器访问操作是否被成功调配(如,通过回收单元210)。如果该事务型存储器访问操作没有调配,方法400继续操作406以执行相应的指令。一旦相应于事务型存储器访问请求的事务型存储器访问操作被成功调配,在操作416中逻辑232更新计数器230。在一个实施例中,TXMEND指令的执行(如,通过执行单元208)或产生(如,通过调度单元206)可导致事务型存储器访问请求的调配,并因此执行操作416。
在操作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。在一个实施例中,当相应的写设定被调配,该进入的探听被停止。在一个实施例中,该调配点同样可导致控制跳转或转移到一调配处理程序以在返回之前执行其它的处理。
在一个实施例中,理论上(speculatively),芯片106可执行参照方法400中所述的各种指令(或操作)。同样,方法400的各种操作可无序执行。例如,操作406,408,410,或413可以任意次序执行。进一步,在一个实施例中,探听请求可先于操作410,412,414,和/或420的执行被停止且在操作410,412,414,和/或420执行后终止停止。
图5示意了在虚拟模式下为执行一个或多个相应于事务型存储器访问请求操作的方法500的一个实施例的框图。在一个实施例中,方法500可执行一个或多个相应于图4的操作413的操作。在一个实施例中,参照图1-3和8-9所述的各种组件可被用于执行一个或多个参照图5所述的操作。
参照图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中所述。
在操作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所论述的嵌套恢复。
在操作518中,如果溢出的访问不是第一访问(如,通过操作502确定)和/或在操作516后,那么逻辑229可导致在虚拟模式下相应于溢出事务的一个或多个指令(或操作)的执行,如,通过利用溢出存储256以载入和/或存储不装入高速缓存(如,高速缓存116和/或108)的数据,且此后方法500继续操作414。根据一实施例,只要被标记的块在高速缓存中(如,通过操作502确定),在操作506中对于此后访问同一位置时就无需校验溢出表252。
在各种实施例中,在操作512,逻辑236可恢复芯片106的状态到嵌套事务的各种等级,如,通过恢复芯片106的各个组件的状态到事务的最底层,最外层,或中间嵌套层。在一个实施例中,在操作512,可援引一软件处理程序执行嵌套恢复到各种等级(可能在操作404和/或516中已经被抽点校验),包括恢复到事务的最底层,最外层,或中间嵌套层。关于被用户处理程序所执行的嵌套恢复的进一步细节将参照图7论述。进一步,在操作512中,具有一设定位228的高数缓存线(如224)可被清空和/或无效以限制其它线程访问该无效数据,该访问可能导致错误执行。在一个实施例中,该嵌套恢复的处理程序可执行非事务型。在一个实施例中,表252可存储优先信息,例如,通过使用在执行操作518和/或512时可能被使用的O/S(254)优先信息或时标(timestamp)信息。
在一个实施例中,为减少虚拟的事务执行对非事务型存储器操作和非虚拟的事务的影响,采用了一“非安全”高速缓存状态,如提供存储器分层(hierarchy)优化。可选地,对每条高速缓存线或块的位可如参照图3中的位304所论述的表明相应的线/或块是否非安全。该高速缓存状态可包括图1中的处理器102的高速缓存分层。该状态(或位)可表明一高速缓存块或线(如,302和/或224)在未查询表252的情况下被引入高速缓存(如,分别是108或116)。如果不存在溢出(507),未命中最低等级高速缓存(108)的任何请求(如一硬件预读取)可从存储器(114)读入相应的数据并标签上“非安全状态”。在一个实施例中,具有激活位228(如,位228在一个实施例中被设定)的高速缓存块(如,302和/或224)的收回将导致存储器(114)的清空。在非安全状态(或位)下,将导致相应的高速缓存块被标记上非安全状态。如果没有设定非安全状态,在操作506中,该操作允许任意芯片(106)访问任意的高速缓存块,而没有占用校验表252的开销。如果设定了非安全状态,相应的块的访问可导致返回到请求操作的消息以请求咨询查询表252。在一个实施例中,当存储在计数器250内的数值表明存在溢出时可以无效芯片106的硬件预读取。在高速缓存中采用非安全状态(或位)实施例中可在提供正确的执行时允许预读取。在一个实施例中,表252中的成员可清楚地通过与高速缓存相干的协议缓存和保持。
图6示意了在虚拟模式下当处理器执行一非事务型存储操作和一事务时提供数据校正的方法600的一个实施例的框图。在一个实施例中,参照图1-3和7-9所述的各种组件可被用于执行一个或多个参照图6所论述的操作。
参照图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内的数值所表明),该已经进入特殊模式的芯片将返回普通模式。
图7示意了一事务状态和控制寄存器(TXSR)700的一个实施例。在一个实施例中,该TXSR寄存器700可被用于实现各种如参照图1-6在此所述的实施例。例如,在一个实施例中,图2中的寄存器240可包括TXSR寄存器700。进一步,参照图1-6所述的操作可通过访问寄存器700来实施。
如图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标识的处理程序)以允许软件确定导致放弃的地址。
参照图1-7,在一个实施例中,参照图4所述的TXMBERG指令可依据TXSR寄存器700的状态执行一个或多个下述动作:1、TXMBEG指令可将执行转换为一基本的执行模式,此时伴随指令的操作在一可恢复的模式下执行。当芯片106在此模式时通过指令执行的任意更新能在任意时间清除。为允许寄存器状态可恢复,一些寄存器240可通过逻辑234被抽点校验。如果执行必须的操作将导致一错误、被清除的事务更新、和/或传送到由TXMBEG指令标识的处理程序的控制。2、TXMBEG指令也可执行一基于TXSR寄存器700的状态的状态控制传输。如果设定了恰当的TXSR位,该TXMBEG指令可将程序控制传送到相应于事务型存储器访问请求的指令流中的不同点而无需记录返回信息。目标(目的)操作符可指出指令跳转的地址。当一TXMBEG执行状态控制传输时,芯片106没有过渡到一可恢复的执行模式,且根据至少一个指令级架构,执行与JMP(或跳转)指令相似。
参照图1-7,在一个实施例中,参照图3所述的TXMEND指令可基于TXSR寄存器700的状态执行下述伪代码(在一个实施例中,下面的tmpmemstatus可为一持续选通的状态以表明高速缓存116中的所有的高速缓存块处于恰当的状态):IF TXSR.exec_state!=X_ACTIVETHENIllegal Opcode_ERRORFIIF_TXND!=0THENDone;(*nested block retired*)FIIF(!VTM)      (*not virtualized mode*)THENIF(tmpmemstatus)THENTXSR.exec_state=X_COMMITTINGCommit_cache_rtm_mode()TXSR<-0DoneELSE(*could not commit memory state*)TXSR.exec_state=X_ABORTINGAbort_cache_rtm_mode()TXSR.exec_state=X_ABORTEDTXSR.attempt_state++(saturating)(*to track the number of failed attempts)JMP to TXIP(*restore SP etc.*)FIELSE(*in VTM MODE*)IF TXSR.C_VTM_MODE&&TXSR.XSW=COMMITTEDTHENTXSR<-0Commit_cache_vtm_mode()Done;ELSE IF TXSR.C_VTM_MODE&&TXSR.XSW!=ABORTEDTHENinvoke_microcode_setep_commit()(*tries to Compare&Swap TXSR.XSW to COMITTED ifsuccessful,then signals s/w lib*)reply_op()ELSE IF TXSR.C_VTM_MODE&&TXSR.XSW=ABORTINGTHENinvoke_microcode_setup_abort()(*TXSR.XSW<-ABORTED*)(*signal software library*)ELSEASSERT(TXSR.XSW=ABORTED)TXSR<-0Abort_cache_vtm_mode()FIFIFIFI  (*end of!C_VTM_MODE*)
在一个实施例中,对于所有的VTM的调配和放弃可重新指向一随后调用基于TXSR700状态的软件库的用户处理程序(如由TXMBEG所标识的处理程序)。同样跳转可转到基本块的开始,随后依据TXSR700的状态,调用用户处理程序。
参照图1-7,在一个实施例中,参照图3所述的TXMABT指令可允许用户明确地放弃该基本块的操作。该效果与当执行放弃时,所有的更新被清除(除了寄存器700的位)相似。在一个实施例中,TXMABT指令可基于TXSR寄存器700状态执行下述伪代码:IF TXSR.exec_state!=X_ACTIVETHENIllegal Opcode_ERRORFIDiscard_speculative_updates_cache()IF(TXSR.C_VTM_MODE!=0‖TXSR.XSW!=OVF)THENrestore_architectural_register_state()(*SP/IP*)TXSR.exec_state=X_ABORTEDELSETXSR.exec_state=X_ABORTING(*ifvtm abort is microcode assist*)Invoke_microcode_assit_for_abort_cleanup()TXSER.exec_state=X_ABORTEDFITXSR.attemp_state++(saturating)JMP to TXIP
在一个实施例中,如果用户处理程序在操作512将恢复至最外层的处理程序且如果该软件保存了所有的如参照操作404和/或516所述的寄存器状态,那么软件将随后修复存储的信息(如,如参照图3-5所述的存储于堆栈中的数据),恢复寄存器状态且更新TXSR700中的相应的位。该修复可包括恢复系统堆栈指针(ESP)指向记入寄存器校验点的处理程序(如,压入堆栈),随后合理地出栈。恢复ESP直到刚记入寄存器入栈为止可允许任何在事务中执行的调用而产生的ESP更新被正确的修复。在一个实施例中,在堆栈中保存的状态可包括以下:ESP,TXIP(也可选处理程序地址,寄存器240)。在一个实施例中,TXSR700可对应于最外层。如果该硬件保存了状态,则该硬件可执行在前的操作。
在一个实施例中,如一用户处理程序在操作512中需要恢复到最低层的处理程序,则:·软件可执行所有嵌套的恢复动作(软件处理程序应已经保存所有的状态)。·当在一事务中为使用被写入一软件库,且将执行的嵌套的恢复(如果库调用维持该动作,则该调用的用户处理程序可被调用,而不调用最外层处理程序)。在这种情况下,用户处理程序可确定是执行嵌套恢复还是放弃回到最外层处理程序。该操作可允许放弃线程以所有的方式返回到最外层事务。否则,如果调用一传统库(该库不支持事务型存储器访问)且放弃,则该失败可返回到调用该库的最底层的事务。·处理程序可逆序执行存储器日志(如,存储于存储器114内)并恢复状态到一特定的嵌套级别,如通过更新相应的值,且随后在该点重启该事务。可选地,该处理程序可从堆栈中出栈数据并重新指定读取单元202到最终级别的处理程序,同时在TXSR700中相应的位表明放弃(如,通知处理程序为何位10-12中的一个被调用)。·该存储日志可具有足够的信息有助于状态的重建。如果将执行嵌套放弃,硬件,微代码,软件支持(或程序),或以上组合可在VTM模式下匆忙地(on thefly)创建该日志。在RTM模式下,该操作不会实施。·日志和恢复日志的库可为具有预定接口的特定平台。一个日志格式的样本(以程序顺序)如下所示(其中“嵌套级别”相应于存储于层次计数器230内的数值):<地址><写入前原始值><嵌套级别><嵌套级别转换><地址><写入前原始值><嵌套级别>
在上述例子中,日志的反向执行可使得软件库“毫无疑问”地恢复状态到一特定的嵌套级别且被嵌入的<嵌套级别转换>也有助于此。同样,每个<写入前原始数据>对于一特定的嵌套级别是唯一的。进一步,反向执行该日志,用户处理程序可确定哪个数值是刚记录的数值(该数值依然对应于一正待决中的事务,且非原始数值)哪个不是刚记录的数值。在一实施例中,该硬件可包括一微代码支持以执行该日志。
图8示意了一计算机系统800的一实施例的框图。该计算机系统800可包括一个或多个通过互连804(或总线)通信的中央处理单元(CPU)或处理器802。在一个实施例中,处理器802可与图1中的处理器102相同或相似。同样,互连804可与如参照图1-2中所述的互连104和/或112相同或相似。该处理器802可包括任意类型的处理器,如通用处理器,网络处理器(如处理计算机网络间通信的数据的处理器),或其它处理器,包括精简指令集计算机(RISC)处理器或复杂指令集计算机(CISC)处理器。进一步,处理器802可具有单核或多核设计,如参照图1-2中所述的包括一个或多个处理器芯片(106)。具有多芯设计的处理器802可在同一集成电路(IC)管芯上集成不同类型的处理器芯片。同样,具有多核设计的处理器802可被实施为对称的或非对称的多处理器。
如图8中所示,芯片组806可与互连804通信。该芯片组806可包括存储控制集线器(MCH)808。该MCH808可包括与存储器114通信的存储器控制器810。存储器114可存储数据,如包括被处理器802执行的指令序列,或与计算系统800通信的任何其它设备。在本发明的一个实施例中,存储器114可包括一个或多个易失存储(或内存)设备,如随机存取存储器(RAM),动态的随机存取存储器(DRAM),同步DRAM(SDRAM),静态RAM(SRAM),或其它易失存储设备。非易失性存储器如硬盘也可被使用。额外的设备可通过互连804通信,如多个处理器和/或多个系统存储器。
MCH808可另外包括与图像加速器816通信的图像接口814。在一个实施例中,该图像接口814可通过一加速图像接口(AGP)与图像加速器816通信。在本发明的一个实施例中,显示器(如平板显示器)可与图像接口814通信,例如,通过信号转换器,该信号转换器将存储于如视频存储器或系统存储器之类的存储设备中的图像的数字表示转换为被显示器所分析并显示的显示信号。在多个实施例中,由显示设备所产生的显示信号可在被显示器分析之前经过各种控制设备并随后在显示器上显示。
进一步,集线器接口818可允许在MCH808和输入/输出(I/O)控制集线器(ICH)820之间通信。该ICH820可提供接口给I/O设备与计算系统800通信。该ICH820可与总线822通过一外设桥(或控制器)824通信,如一外设组件连接(PCI)桥或一通用串行总线(USB)控制器。该桥824可在处理器802和外设之间提供数据路径。其它类型的拓扑也可被利用。同样,多条总线可与ICH820通信,如,通过多个桥或控制器。进一步,在本发明的各种实施例中,其它与ICH820通信的外设包括,集成驱动电子设备(IDE)或小型计算机系统接口(SCSI)硬件驱动,USB端口,键盘,鼠标,并口,串口,软盘驱动,或数字数据支持接口(如,数字视频接口(DVI))。
总线822可与音频设备826、一个或多个盘驱动828以及网络适配器830通信。该网络适配器830可与计算机网络831通信,如允许系统800的各种组件通过网络831发送和/或接收数据。其它设备可通过总线822通信。同样,在本发明的一些实施例中各种组件(如网络适配器830)可与MCH808通信。此外,处理器802和MCH808可组合形成单个芯片。进一步,在本发明的其它实施例中的图形加速器816可包括在MCH808内。
在一个实施例中,计算系统800可包括易失性和/或非易失性存储器(或存储设备)。例如,非易失性存储器可包括以下一个或多个:只读存储器(ROM),可编程ROM(PROM),可擦除PROM(EPROM),电EPROM(EEPROM),盘驱动(如828),软盘,压缩盘ROM(CD-ROM),数字化通用盘(DVD),闪存,磁光盘,或其它各种类型的存储电子数据(如,包括指令)的非易失性机器可读的媒质。
根据本发明的实施例,图9示意了以点对点(PtP)配置布置的计算机系统900。特别的,图9示意了一系统,其中处理器、存储器和输入/输出设备通过多个点对点接口连接。参照图1-6所述的操作可通过系统900的一个或多个组件执行。
如图9所示,系统900可包括多个处理器,为清楚起见,仅仅示出其中的两个处理器,即处理器902和904。处理器902和904可分别包括一本地存储器控制器集线器(MCH)906和908以允许存储器910和912之间通信。存储器910和/或912可存储如参照图1-3和8的存储器114所述的各种数据。
在一个实施例中,处理器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交换数据。
本发明的至少一个实施例可在处理器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。
在本发明的各种实施例中,如参照图1-9,在此所述的操作可被实现为硬件(如电路),软件,固件,微代码,或以上组合,其可被作为计算机程序产品提供,如包括具有存储于其上的指令(或软件程序)的机器可读或计算机可读媒质,该指令被用于编程计算机以执行在此所述的过程。同样,术语“逻辑”可包括,例如,软件,硬件或软件和硬件的组合。该机器可读媒质可包括存储器设备,如根据图1-9所述的各种设备。此外,该计算机可读媒质可作为计算机程序产品被下载,其中该程序可使用通信连接(如,总线,调制解调器,或网络连接)通过包含于载波或其它传播媒介的数据信号从远程计算机(或服务器)传送到请求的计算机(如一用户)。因此,在此,载波应被认为构成了计算机可读媒质。
详细描述中的“一个实施例”或“实施例”意味着与该实施例结合描述的特殊的特征、结构、或特点可包括在至少一种实现中。在说明书各处出现的短语“在一个实施例中”可以或可以不指同一实施例。同样,在说明书和权利要求书中,可以使用术语“耦合”和“连接”以及它们的派生词。在本发明的一些实施例中,“连接”可用于表明两个或多个元件相互之间处于直接物理连接或电接触。“耦合”可表示两个或多个元件处于直接物理或电气接触。然而,“耦合”可同样意味两个或多个元件相互之间可不处于直接接触,但可相互之间配合或相互影响。
因此,虽然本发明的实施例通过特定的结构特征和/或方法的语言予以描述,但是可以理解所要求的主题并不限于所描述的特定的特征或方案。相反,该特定的特征和方案作为所请求主题的实施样例而被公开。

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.如权利要求1所述的处理设备,进一步包括:
用于使用一计数器来计数已经导致溢出状态的多个所述事务型存储器访问请求的数目的装置。
13.如权利要求12所述的处理设备,其中所述计数器中的数值对应于多个存在溢出的事务的数目,所述事务已经导致进入存储器的第一部分的溢出。
14.如权利要求12所述的处理设备,进一步包括用于根据所述计数器的数值控制一个或多个所述事务型存储器请求的执行的装置。
15.如权利要求12所述的处理设备,进一步包括用于使用一个或多个处理器芯片来执行与所述事务型存储器访问请求中的一个或多个相对应的一个或多个操作的装置。
16.如权利要求15所述的处理设备,其中所述一个或多个处理器芯片和计数器处于同一管芯(die)上。
17.如权利要求12所述的处理设备,进一步包括用于使用高速缓存来存储与所述事务型存储器访问请求中的一个或多个相对应的数据的装置,其中所述高速缓存包括一个或多个位以表明相应于所述一个或多个事务型存储器访问请求的、针对所述高速缓存的一个部分的访问。
18.如权利要求17所述的处理设备,进一步包括用于访问所述一个或多个位以确定对所述高速缓存的所述部分的先前访问的装置。
19.如权利要求17所述的处理设备,其中所述高速缓存的所述部分是高速缓存线或高速缓存块中的一个或多个。
20.如权利要求17所述的处理设备,其中所述高速缓存包括中级高速缓存(MLC)或最低级高速缓存(LLC)中的一个或多个。
21.如权利要求1所述的处理设备,进一步包括:
用于存储数据的装置;
用于读取相应于事务型存储器访问的启动的第一指令和相应于事务型存储器访问的终止的第二指令的装置。
22.如权利要求21所述的处理设备,进一步包括用于在相应于事务型存储器访问的一个或多个操作中的至少一个调配失败后,恢复所述处理器的一个或多个组件的状态的装置。
23.如权利要求21所述的处理设备,进一步包括用于响应于将要发生第一次出现溢出至所述存储器的所述第一部分的指示,产生信号以从一个或多个存储缓冲器中清空一个或多个相关的存储操作的装置。
24.如权利要求21所述的处理设备,进一步包括音频设备。
25.一种用于事务型存储器的虚拟化的方法,包括:
响应于由事务型存储指令导致的硬件溢出,将与所述事务型存储器指令相对应的数据存储在一存储器的不变(persistent)部分中;
响应于至少所述事务型存储指令,更新与未被调配的事务型存储器访问请求的数目相对应的存储数值;和
响应于至少所述事务型存储指令,根据所述存储数据执行一个或多个操作;
其中响应于确定一计数器将要从一初始状态过渡,从一个或多个存储缓冲器中清空一个或多个存储操作。
26.如权利要求25所述的方法,进一步包括,响应于将要发生第一次出现溢出至所述存储器的所述不变部分的指示,产生信号以从一个或多个存储缓冲器清空一个或多个相应的存储操作。
27.如权利要求25所述的方法,进一步包括,在一个或多个操作中的至少一个调配失败后,恢复处理器的一个或多个组件的状态。
28.如权利要求25所述的方法,进一步包括,确定硬件溢出是否对应于一高速缓存溢出或一高速缓存未命中(miss)。
29.一种用于事务型存储器的虚拟化的设备,包括:
用于响应于由事务型存储指令导致的硬件溢出,将与所述事务型存储器指令相对应的数据存储在一存储器的不变部分中的装置;
用于响应于所述事务型存储器指令,更新与未被调配的事务型存储器访问请求的数目相对应的存储数值的装置;以及
用于在与所述事务型存储器指令相对应的至少一个操作未调配成功后,恢复处理器芯片的一个或多个组件的状态的装置;
其中响应于确定一计数器将要从一初始状态过渡,从一个或多个存储缓冲器中清空一个或多个存储操作。
30.如权利要求29所述的设备,进一步包括:用于响应于所述事务型存储器指令而执行与用户处理程序相对应的一个或多个操作的装置。
31.如权利要求29所述的设备,进一步包括:用于确定所述硬件溢出是否相应于一高速缓存溢出或一高速缓存未命中的装置。
CN2007101266549A 2006-03-30 2007-03-30 事务型存储器的虚拟化 Expired - Fee Related CN101059783B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/394,622 2006-03-30
US11/394,622 US8180967B2 (en) 2006-03-30 2006-03-30 Transactional memory virtualization

Publications (2)

Publication Number Publication Date
CN101059783A CN101059783A (zh) 2007-10-24
CN101059783B true 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)

Families Citing this family (71)

* Cited by examiner, † Cited by third party
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
US8095741B2 (en) * 2007-05-14 2012-01-10 International Business Machines Corporation Transactional memory computing system with support for chained transactions
US8117403B2 (en) * 2007-05-14 2012-02-14 International Business Machines Corporation Transactional memory system which employs thread assists using address history tables
US9009452B2 (en) 2007-05-14 2015-04-14 International Business Machines Corporation Computing system with transactional memory using millicode assists
US8095750B2 (en) * 2007-05-14 2012-01-10 International Business Machines Corporation Transactional memory system with fast processing of common conflicts
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
US9372718B2 (en) * 2008-07-28 2016-06-21 Advanced Micro Devices, Inc. Virtualizable advanced synchronization facility
US8799582B2 (en) * 2008-12-30 2014-08-05 Intel Corporation Extending cache coherency protocols to support locally buffered data
US9785462B2 (en) * 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
US8627017B2 (en) 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
US8627014B2 (en) * 2008-12-30 2014-01-07 Intel Corporation Memory model for hardware attributes within a transactional memory system
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
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
US8601473B1 (en) 2011-08-10 2013-12-03 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
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
EP2791785B1 (en) 2011-12-16 2019-07-17 Intel Corporation Method and system using exceptions for code specialization in a computer architecture that supports transactions
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
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US9298631B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Managing transactional and non-transactional store observability
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9311101B2 (en) 2012-06-15 2016-04-12 International Business Machines Corporation Intra-instructional transaction abort handling
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US9262320B2 (en) 2012-06-15 2016-02-16 International Business Machines Corporation Tracking transactional execution footprint
US20130339680A1 (en) * 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9223687B2 (en) 2012-06-15 2015-12-29 International Business Machines Corporation Determining the logical address of a transaction abort
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
US9411739B2 (en) * 2012-11-30 2016-08-09 Intel Corporation System, method and apparatus for improving transactional memory (TM) throughput using TM region indicators
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
WO2014201617A1 (en) * 2013-06-18 2014-12-24 Intel Corporation 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 华为技术有限公司 管理转址旁路缓存的方法和多核处理器

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6772300B1 (en) * 2000-08-30 2004-08-03 Intel Corporation Method and apparatus for managing out of order memory transactions
CN1545031A (zh) * 2003-11-17 2004-11-10 中兴通讯股份有限公司 一种fifo存储器的数据处理方法

Family Cites Families (30)

* Cited by examiner, † Cited by third party
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
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
US20060259589A1 (en) * 2005-04-20 2006-11-16 Lerman David R 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
US8683143B2 (en) * 2005-12-30 2014-03-25 Intel Corporation Unbounded transactional memory systems
US7730286B2 (en) * 2005-12-30 2010-06-01 Intel Corporation Software assisted nested hardware transactions
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6772300B1 (en) * 2000-08-30 2004-08-03 Intel Corporation Method and apparatus for managing out of order memory transactions
CN1545031A (zh) * 2003-11-17 2004-11-10 中兴通讯股份有限公司 一种fifo存储器的数据处理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Ravi Rajwar Et Al.Virtualizing Transactional Memory.IEEE Proceedings of the 32nd International Symposium on Computer Architecture (ISCA'05).2005,1-12. *

Also Published As

Publication number Publication date
US20070239942A1 (en) 2007-10-11
CN101059783A (zh) 2007-10-24
US8180967B2 (en) 2012-05-15

Similar Documents

Publication Publication Date Title
CN101059783B (zh) 事务型存储器的虚拟化
CN101410797B (zh) 无序处理器中的事务存储器执行的方法、设备和系统
US8140773B2 (en) Using ephemeral stores for fine-grained conflict detection in a hardware accelerated STM
CN101950259B (zh) 用于执行事务的装置、系统及方法
US20180011748A1 (en) Post-retire scheme for tracking tentative accesses during transactional execution
US8627017B2 (en) Read and write monitoring attributes in transactional memory (TM) systems
US8200909B2 (en) Hardware acceleration of a write-buffering software transactional memory
TWI526829B (zh) 電腦系統、用於存取儲存裝置之方法及電腦可讀儲存媒體
CN113853593A (zh) 支持清空写入未命中条目的受害者高速缓存
US9372805B2 (en) Operating on translation look-aside buffers in a multiprocessor environment
WO2008005687A2 (en) Global overflow method for virtualized transactional memory
US9378069B2 (en) Lock spin wait operation for multi-threaded applications in a multi-core computing environment
US7363435B1 (en) System and method for coherence prediction
US20060026371A1 (en) Method and apparatus for implementing memory order models with order vectors
CN104375958A (zh) 高速缓存存储器管理事务性存储器访问请求
US20060064518A1 (en) Method and system for managing cache injection in a multiprocessor system
CN106030515B (zh) 用于多处理器和多核平台的二进制翻译
US6546465B1 (en) Chaining directory reads and writes to reduce DRAM bandwidth in a directory based CC-NUMA protocol
CN101533363B (zh) 引退前-后混合硬件锁定省略(hle)方案

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: 20131106

Termination date: 20180330