CN101556559B - 利用虚拟存储器的事务型存储器执行 - Google Patents
利用虚拟存储器的事务型存储器执行 Download PDFInfo
- Publication number
- CN101556559B CN101556559B CN200910145434XA CN200910145434A CN101556559B CN 101556559 B CN101556559 B CN 101556559B CN 200910145434X A CN200910145434X A CN 200910145434XA CN 200910145434 A CN200910145434 A CN 200910145434A CN 101556559 B CN101556559 B CN 101556559B
- Authority
- CN
- China
- Prior art keywords
- address
- virtual
- affairs
- virtual address
- original
- 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
Links
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/10—Address translation
-
- 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
-
- 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
Abstract
本发明的实施方案涉及利用虚拟存储器的事务型存储器执行。处理器包括本地事务型缓存和资源管理器。资源管理器对来自请求线程的事务型存储器事务请求做出响应,确定本地事务型缓存是否能够容纳事务型存储器事务请求,并且,如果可以,则本地事务型缓存执行事务型存储器事务。但是,如果本地事务型缓存不能容纳事务型存储器事务请求,则事务型存储器事务请求的数据被溢出到和请求线程相关联的应用程序的虚拟地址空间中。
Description
本申请是申请号为200510107807.6,国际申请日为2005年9月30日,发明名称为“利用虚拟存储器的事务型存储器执行”的发明专利申请的分案申请。
技术领域
本发明的实施方案涉及事务型存储器和事务型执行领域。更特别地,本发明的实施方案涉及需要或不需要硬件支持来实现利用虚拟存储器的事务型存储器执行。
背景技术
事务型存储器执行允许应用、程序、模块等,特别是应用程序接口(API)以原子方式访问数据库文件或者其他类型的存储器文件。例如,事务型存储器可以被用作用于管理例如数据库的持久性、指针丰富型数据结构和目录服务(directory service)的运行时引擎的一部分。
API可以被认为是应用、程序、模块等用来和系统程序(例如操作系统或者数据库管理系统(DBMS))进行通讯的语言或者消息格式。通过在程序中写函数调用可以实施API,所述程序提供了对用于执行的特定子程序的联接。
事务型存储器使得写并行程序更为容易,并且,使用事务型存储器允许不同的线程被同时处理,由此获得了极高的处理效率。
事务型存储器一般被认为是从数据库事务衍生出来。通常,事务是一组必须满足四个被称为ACID性质(原子性、一致性、隔离性和持久性(durability))的性质的操作。第一个ACID性质是原子性。原子性要求事务被以要么全部-要么没有(all-or-nothing)的方式执行。事务可以因为程序异常终止(abort)或者错误所致而被异常终止。原子性要求要么执行事务所有的操作,要么不执行它们中的任何一个。第二个ACID性质是一致性。一致性要求如果在事务被执行之前,数据库处于一致状态,则数据库应该保持处于一致状态。第三个ACID性质是隔离性。隔离性规定被执行的所有事务必须好像被以某种顺次的顺序(即它们应该是可串行化的)被完成。在ACID下所要求的最后一个也就是第四个性质是持久性。持久性要求事务经受得住机器崩溃。即,事务在其可以被提交(commit)之前必须被写入稳定的储存设备(例如磁盘)。
事务型存储器和事务型执行允许以鲁棒性的和高性能的方式来写多线程应用程序。当例如台式机和服务器的计算机系统正日益被要求在线程很多的环境中工作时,这变得更为重要。特别地,可以利用现代处理器对预测执行(speculative execution)的支持来预测性地执行代码块,以有效地实施这些多线程应用程序。但是,目前实施事务型存储器和事务型执行的技术受困于资源限制,因为它们不能处理任意大小的事务或任意长度的事务,由此给编程和事务型执行都给出了巨大的限制。
发明内容
根据本发明的一个方面,提供了一种.一种装置,包括:处理器,所述处理器包括本地事务型缓存(cache);以及资源管理器,所述资源管理器对来自请求线程的事务型存储器事务请求做出响应,以便确定所述本地事务型缓存是否能够容纳所述事务型存储器事务请求,并且,如果可以,则所述本地事务型缓存执行所述事务型存储器事务;其中,如果所述本地事务型缓存不能容纳所述事务型存储器事务请求,则所述事务型存储器事务请求的数据被溢出到与所述请求线程相关联的应用程序虚拟地址空间中。
根据本发明的另一个方面,提供了一种方法,包括:确定本地事务型缓存是否能够容纳来自请求线程的事务型存储器事务请求;如果所述本地事务型缓存能够容纳所述事务型存储器事务请求,则利用本地事务型缓存执行所述事务型存储器事务请求;以及如果所述本地事务型缓存不能够容纳所述事务型存储器事务请求,则将所述事务型存储器事务请求的数据溢出到与所述请求线程相关联的应用程序虚拟地址空间中。
根据本发明的又一个方面,提供了一种机器可读介质,具有储存在其上的指令,当所述指令被机器执行时,引起所述机器执行下列操作,包括:确定本地事务型缓存是否能够容纳来自请求线程的事务型存储器事务请求;如果所述本地事务型缓存能够容纳所述事务型存储器事务请求,则利用本地事务型缓存执行所述事务型存储器事务请求;以及如果所述本地事务型缓存不能够容纳所述事务型存储器事务请求,则将所述事务型存储器事务请求的数据溢出到与所述请求线程相关联的应用程序虚拟地址空间中。
根据本发明的再一个方面,提供了一种计算机系统,包括:处理器,它包括本地事务型缓存;数据库;以及资源管理器,所述资源管理器对来自请求线程的事务型存储器事务请求做出响应,所述请求来自应用程序接口(API)并请求访问数据库中的存储器,所述资源管理器确定所述本地事务型缓存是否能够容纳所述事务型存储器事务请求,并且,如果可以,则所述本地事务型缓存执行所述事务型存储器事务;其中,如果所述本地事务型缓存不能容纳所述事务型存储器事务请求,则所述事务型存储器事务请求的数据被溢出到与所述请求线程相关联的应用程序虚拟地址空间中。
附图说明
图1是其中可以实践本发明的实施方案的计算机系统结构的实施例的部分框图。
图2是流程图,示出了实施涉及利用虚拟存储器的事务型存储器执行的本发明实施方案的过程。
图3是根据本发明的一个实施方案的事务地址转换表(XATT)的结构图。
图4是流程图,根据本发明的一个实施方案,示出了获取新的虚拟和物理地址的过程。
图5是根据本发明的一个实施方案示出各种状态的例子的图,在经历利用虚拟存储器的虚拟存储器事务,例如虚拟事务存储器(VTM)事务时,事务的线程可以处于所述的状态。
图6是流程图,根据本发明的一个实施方案,示出了事务型存储器事务如何产生溢出请求的过程。
图7是流程图,根据本发明的一个实施方案,示出了提交事务的过程。
图8是流程图,根据本发明的一个实施方案,示出了溢出的事务如何响应进入的请求的过程。
具体实施方案
在下面的描述中,将详细描述本发明的各种实施方案。但是,包括这些细节是为有助于理解本发明和描述用于采用本发明的示范性实施方案。这样的细节不应该被用来将本发明局限于所描述的特定实施方案,因为在本发明的范围内,其他的变化和实施方案是可能的。此外,尽管给出了大量细节以提供对本发明的实施方案的透彻理解,但是,对本领域熟练技术人员来讲很清楚,实践本发明的实施方案不需要这些具体细节。在其他的实例中,例如公知的方法、数据类型、协议、过程、部件、电气结构和电路的细节没有被详细描述,或者被以框图形式示出,以模糊了本发明。此外,本发明的实施方案将在特定实施方案中被描述,但是可以被实施在硬件、软件、固件、中间件或其组合中。
图1示出了其中可以实践本发明的实施方案的计算机系统结构的实施例的部分框图。系统结构100包括至少一个例如中央处理单元的处理器101、芯片组103、系统存储器设备105、一个或更多个接口111和网络接口107,所述接口111用于和一个或更多个输入/输出(I/O)设备113连接。
芯片组103可以包括存储器控制中心(MCH)和/或I/O控制中心(hub)。芯片组103可以是一个或更多个起到用于在处理器101和计算机系统100的其他部件之间数据传输的中心或核心作用的集成电路芯片。而且,计算机系统100可以包括额外的部件(未被示出),例如其他的处理器(例如在多处理器系统中)、协处理器,以及其他的部件等,这仅仅是计算机系统非常基本的例子。
为了当前描述的目的,术语“处理器”或“CPU”指任何能够执行指令序列的机器,并且应该被视为包括但不限于通用微处理器、专用微处理器、专用集成电路(ASIC)、多媒体控制器、信号理器和微控制器等。在一个实施方案中,CPU 101是能够执行英特尔体系结构指令集的通用高速微处理器。例如,CPU 101可以是英特尔奔腾类处理器,例如英特尔体系结构32位(IA-32)处理器(例如奔腾4M)。
CPU 101、芯片组103和其他的部件通过芯片组103访问系统存储器设备105。例如,芯片组103使用存储器控制中心可以为以系统存储器设备105为目标的存储器事务服务。
系统存储器设备105可以包括任何用于储存数字信息的存储器设备,例如静态随机访问存储器(SRAM)、动态随机访问存储器(DRAM)、同步动态随机访问存储器(SDRAM),和/或双数据率(DDR)SDRAM或DRAM,等等。因此,在一个实施方案中,系统存储器设备105包括易失性存储器。而且,系统存储器设备也可以包括非易失性存储器,例如只读存储器(ROM)。
此外,系统存储器设备105还可以包括其他储存设备和合适的接口,所述其他储存设备例如硬盘驱动器、软盘驱动器、光盘驱动器等。
本发明的实施方案通过利用虚拟存储器来允许在资源方面任意大小的事务,在处理器中提供了增强的事务型存储器执行支持,所述任意大小的事务例如数据印记(footprint)大小、被执行的指令、进程迁移等。此外,这被透明地完成,以使程序员不必为了容纳资源问题而以任何特殊的方式来写软件。此后,术语事务指被原子性地执行的指令序列。此外,事务也可以符合先前所讨论的ACID性质。
如将要被讨论的那样,本发明的实施方案涉及事务型存储器执行支持,所述事务型存储器执行支持通过利用应用程序的虚拟地址空间自身,利用虚拟存储器来有效地容纳事务型存储器执行中的资源问题,以便溢出任何不能被缓冲在处理器的事务型缓存结构中的数据。这允许对大多数一般情况中的硬件或处理器事务型执行支持,在大多数一般情况中,本地事务型缓存能够容纳事务的资源要求,并且,在数据印记尺寸大于本地事务型缓存的相对罕见但极为重要的情况下,数据被溢出到应用程序自己的虚拟地址空间中用于处理。处理器中现存的本地缓存也可以被用作事务型缓存,或者,事务型缓存可以是单独的硬件结构。
此外,系统存储器设备105可以在非易失存储器中储存程序来辅助利用虚拟存储器的事务型存储器(TM)执行,如处理器101所实施的来实施根据本发明的实施方案的技术那样。特别地,在一个实施方案中,这样的程序可以辅助实现计算机系统100内的事务型存储器访问,特别是在处理器的事务型缓存124、物理存储器140或分页存储器141、虚拟存储器170和数据库108之间,这将要被讨论。
系统存储器设备105结合物理存储器140、分页存储器141、虚拟存储器170等,可以被用来实施与数据库108的存储器事务。例如,数据库108可以包括企业数据库(corporate database)、金融数据库、项目管理数据库、目录服务等,以及其他的通常被与事务型存储器类型的事务一起使用的指针丰富型数据结构。
此外,计算机系统100可以包括适当的接口111,用于与例如磁盘驱动器、监视器、小键盘、调制解调器、打印机的I/O设备或任何其他类型的适当I/O设备连接。
计算机系统100可以包括网络接口107,用于将计算机系统100与网络109连接,网络109例如局域网(LAN)、广域网(WAN)、因特网等。
图1的基本计算机系统结构100是在实施此后将被讨论的利用虚拟存储器的事务型存储器执行中可以被利用的一种类型的计算机系统的实施例。本领域熟练技术人员应该理解,图1的示范性计算机系统结构100仅仅是基本的计算机系统的一个实施例,并且,很多其他的类型和变化是可能的。此外,本领域熟练技术人员将认识到,图1中所示的示范性环境并非打算用来限制本发明的实施方案。此外,应该理解,除了单个的计算机系统结构100以外,或者代替单个的计算机系统结构100,在实践本发明的实施方案时,还可以利用计算机(和计算机系统结构100类似或者不同)的集群或者组。
更特别地,如图1所示,处理器101通过结合标准事务执行功能120和本地事务型缓存124以及储存在物理和分页存储器140和141中的事务地址表145(此后的XATT),以及将要被讨论的虚拟存储器170来利用事务地址转换表巡逻者(walker)(此后的XATT巡逻者)132,可以实施利用虚拟存储器功能130的事务型存储器(TM)执行。此外,如稍后将被更详细地讨论的那样,利用虚拟存储器130的TM执行还可以实施事务地址转换缓存(此后的XATC)134和冲突检测过滤器(此后的CDF)136。
当对于被请求的事务,资源要求可以被本地事务型缓存124满足时,处理器101可以利用与本地事务型缓存124一起工作的标准事务型执行功能120来实施标准的事务型执行功能。但是在其他情况下,当事务要求大于本地事务型缓存的数据资源时,或者经过例如要求超过本地事务型缓存的持久性的上下文切换时,数据可以被溢出到对应的应用程序的虚拟地址空间172中,以便无缝地执行利用虚拟存储器170的事务型存储器执行。如将要被讨论的那样,这通过事务地址转换表(XATT)巡逻者132、事务地址转换表(XATT)145的组合,以及对虚拟存储器170和物理存储器140的使用的唯一且并非显而易见的组合来达成。
在一个实施方案中,处理器101包括本地事务型缓存124和资源管理器131。对来自请求线程的事务型存储器事务请求116做出响应的资源管理器131确定本地事务型缓存是否能够容纳事务型存储器事务请求,并且,如果可以,则本地事务型存储器缓存执行事务型存储器事务。但是,如果本地事务型缓存124不能容纳事务型存储器事务请求,则事务型存储器事务请求的数据被溢出到与请求线程相关联的应用程序的虚拟地址空间170中。
如图1中所示,计算机系统结构100包括具有XATT 145、新物理地址(PAnew)150和原始物理地址(PAorig)152的物理存储器140。在分页存储器实施方案141中,也可以使用XATT 145。计算机系统结构100还包括虚拟存储器170,以实施应用程序的虚拟地址空间172,并且,虚拟地址空间170(应该是172)包括新虚拟地址(VAnew)174和原始虚拟地址(VAorig)176,这将被讨论。
特别地,根据API请求或者其他类型的程序或模块请求116(即,请求事务型存储器事务的某种类型的线程),处理器101执行潜在地利用虚拟存储器的事务型存储器执行,以实施此后将被讨论的事务型存储器事务。例如,这可以被完成,以便以事务的方式为程序当前活动的线程简单地更新存储器,或者,可以最终以事务方式来更新数据库108。
现在转到图2,图2是流程图,示出了实施涉及利用虚拟存储器的事务型存储器执行的本发明实施方案的过程200。在块202,根据来自请求线程的事务型存储器事务请求,过程200确定处理器的本地事务型缓存124是否能够容纳所请求的事务的资源要求。例如,资源管理器131可以做出这个判断。如果能够容纳,则利用事务型执行功能120和本地事务型缓存124的处理器101针对请求线程,利用本地事务型缓存124来执行事务型存储器事务(块204)。如果不能,则请求线程的用于所请求的事务型存储器事务的数据被溢出到请求应用程序的虚拟地址空间172中(块206)。利用XATT巡逻者132管理该数据溢出(块208)。如稍后将要被更详细地讨论的那样,通过利用应用程序的虚拟地址空间172,事务型存储器事务仍可以被处理。
因此,利用标准事务型执行功能来支持一般的情况,在一般情况下,本地事务型缓存124能够容纳来自应用程序的线程的被请求的事务的资源要求。
但是,当被请求的数据资源大于本地事务型缓存124的资源时,数据被使用在写入时复制(copy-on-write)技术溢出到虚拟存储器170中的应用程序自己的虚拟地址空间172中。通过将溢出信息保持在与应用程序相同的虚拟地址空间中,例如上下文切换、进程迁移等的关键状况可以被自动地处理。有利的是,在这个过程中不涉及到用户。如将要被讨论的那样,和页面巡逻者类似,XATT巡逻者132提供一种机制,通过此机制,利用虚拟存储器而非本地事务型缓存,可以完成事务型存储器事务。
为了处理这些溢出,利用了两个特定部件:储存在物理地址140或分页存储器141中的XATT 145,和由处理器实施的XATT巡逻者132。XATT 145被XATT巡逻者132操作以实现这个功能。XATT以和页表被管理的方法类似地被管理,并且,XATT巡逻者132以和页面巡逻者类似的方式被实施,这将被讨论。应该理解,尽管XATT巡逻者132被示出成由处理器101来实施,但是,它也可以被用具有软件支持的混合方式实施。
现在参考图3,图3是根据本发明的一个实施方案的XATT 300的结构图。如先前所讨论的那样,XATT可以被储存在物理存储器或者分页存储器中。此外,XATT 300可以是在所考虑的应用程序的地址基内运行的所有事务公用的,或者可以是每个事务一个。
特别地,XATT包括5个字段:原始虚拟地址(VAorig)302、新虚拟地址(VA new)306、原始物理地址(PAorig)310、新物理地址(PAnew)316和事务指针(XPTR)320。XATT 300执行两个主要功能:1)跟踪溢出的读集合(例如在事务中所读的块),和2)跟踪溢出的写集合(例如在事务中所写的块)和它们被转换的地址。应该理解,XATT 300可以是单个一元结构,或者可以被分解成单独的结构。XATT自己可以被用来储存和被转换的地址对应的数据。
现在转到图4,图4根据本发明的一个实施方案,示出了获取新虚拟地址和物理地址的过程400。原始虚拟地址(VAorig)通常是被溢出的数据块的按缓存块对齐的地址(cache-block-aligned address)。当溢出被触发时,分配新虚拟地址(VAnew)(具有其自己的新物理地址(PAnew)),以便和所述原始虚拟地址对应。
特别地,如图4中所示,在块402,过程400确定是否已经检测到溢出。如果没有,则执行标准处理(块404)。但是,如果检测到了溢出,则分配和原始虚拟地址(VAorig)对应的新虚拟地址(VAnew)。此外,在块408,分配和原始物理地址(PAorig)对应的新物理地址(PAnew)。
VAnew可以由处理器通过运行时库动态地分配,或者可以在编译时由编译器静态地分配,取决于地址空间实施如何被计算机系统结构处理。使用现有的虚拟地存储器管理机制来获取原始虚拟地址(VAorig)。新虚拟地址(VAnew)属于应用程序自身的地址空间。新虚拟地址可以是XATT自身的一部分。
原始虚拟地址(VAorig)302、新虚拟地址(VAnew)306、原始物理地址(PAorig)310、新物理地址(PAnew)316的这些值,以及事务动作指针320的值(这将在稍后被详细地讨论)可以被输入XATT 300中,并被储存在物理地址140中和/或分页地址141中。
可以用两种不同的方法来实施XATT 300。在一个实施方案中,在应用程序中,可以在每一个事务一个的基础上实施XATT。当被以这种方式实施时,每一个事务具有其自己的唯一的新物理地址(PAnew)。这允许事务暂时地更新对被溢出块的任何修改而不干涉到任何其他的事务。PAnew只对正在被处理的事务是可见的。虽然这种方法允许多副本更新,但是,如果事务提交了,则原始物理地址(PAorig)需要被用新物理地址(PAnew)更新。这通过由XATT巡逻者132触发提交事务发生。
在另一个实施方案中,XATT 300可以被实施成对应用程序内的所有事务是公用的。在这种方案中,新物理地址address(PAnew)对所有的事务是公用的。因此,无需副本更新来保证正确的值是可见的,因为在任意时间,对于给定的溢出块,只有一个物理位置可以被写入。此外,所有的事务自动得知从哪个物理地址获取最近被更新的数据。
事务指针(XPTR)320指向当前“拥有”特定溢出块的事务的头(header)数据结构。特别的,如将要被详细地讨论的那样,XPTR 320可以被设置为下列模式中的一个:运行、异常终止、或提交。通过查询XPTR可以获取拥有块的事务的状态。如果事务头的“状态”被设置为将其异常终止,则可以执行批量粉碎(bulk-squash)。然后,异常终止者(aborter)可以改变XPTR来指向自己。
在溢出事务提交前,要求检查XPTR 320以保证它仍拥有该事务。如果其指针被设置为异常终止它,则该事务必须重试。如果它未被异常终止,则它将自动地将其状态设置为提交。这告诉任何其他进入的线程,较早的事务已经被提交。表清除可以定期地发生。因此,XPTR 320提供了原子性地提交或异常终止具有溢出块的事务的能力。
无论使用全局XATI还是私有XATT,XPTR 320总是指向事务头。每一个事务的头可由事务型存储器机器访问。这允许活动的事务通过将事务的事务头状态设置为异常终止来异常终止即使被交换出的事务。
现在参考图5,图5是根据本发明的一个实施方案示出各种状态的例子的图,在经历利用虚拟存储器的事务型存储器事务,例如虚拟事务存储器(VTM)事务时,事务的线程可以处于所述的状态。此外,如先前所讨论的那样,VTM状态可以被储存在XATT中该事务的XPTR中。
例如,XPTR 320中的VTM状态可以被设置为运行502。运行状态指示正在执行并且其最终状态未知的事务。在另一方面,VTM状态可以被设置为异常终止504。如果状态被设置为异常终止,则它指示事务被迫异常终止的情况。异常终止状态是必要的,因为在溢出情况下,在事务最后异常终止之前存在一个时间段,因为“即刻”丢弃是不可能的。
或者,XPTR 320的VTM状态可以被设置为提交506。提交状态表示事务被成功地执行。提交状态是必要的,因为在溢出情况下,在事务状态已经被最后提交之间存在一个时间,因为“即刻”更新是不可能的。此外,VTM状态描述了事务是活动的508还是已经被交换510。活动状态508表明事务当前正在处理器上运行。在另一方面,交换状态510表明事务被上下文切换出去。
其他的VTM状态包括本地512或溢出状态514。本地状态512表明本地硬件缓冲足以完成事务。在另一方面,溢出状态514表明事务已经用尽本地硬件缓冲空间(例如本地事务型缓存124),并且,将利用虚拟存储器(例如虚拟存储器170)来完成事务型存储器事务。
现在参考图6,图6根据本发明的一个实施方案,示出了事务型存储器事务如何产生溢出请求的过程600。应该理解,与线程相关联的事务可以自己产生请求,或者从另一个与线程相关联的事务接收请求。
在块602处开始,XATT巡逻者通过XATT确定事务是否已经溢出。如先前所讨论的那样,XPTR包含本地或溢出状态。如果没有溢出,则在块604,过程结束。但是,如果事务已经溢出,则过程600在块606处确定原始虚拟地址(VAorig)是否已经被溢出和被映射。如果没有,则分配新虚拟地址和新物理地址(VAnew and PAnew)(块608)。XATT巡逻者对XATT表进行巡逻以便对其适当地更新。在任一事件中,在块610处,获取VAnew和PAnew的值。使用PAorig来保持一致性。但是,事务在其执行写的时候将更新PAnew。使用PAorig来执行冲突检测,因为它是所有其他的事务知道的地址(假设使用了唯一的XATT)。
XATT巡逻者还保证没有其他的事务已经映射到VAorig。这被在XATT巡逻期间确定。如果不存在VAorig记录,则在块620处安装新的记录。特别地,VAnew和PAnew被输入XATT。但是,如果存在原始虚拟地址记录,则在块618处,过程600根据XATT的XPTR的状态,确定当前事务应该等待或者之前的事务应该被异常终止。在任一事件中,在XATT中输入VAnew和PAnew。XATT巡逻者负责这些活动,并且能够通过直接对XPTR操作来这么做。
现在转到图7,图7是流程图,根据本发明的一个实施方案,示出了提交事务的过程700。特别地,在溢出事务提交之前,它应该检查XPTR以验证它仍由当前事务拥有(块702)(例如,通过检查它是否仍是活动的且未被交换)。接着,在块704,过程700应该检查XPTR是否被设置为“异常终止”。如果它被设置为异常终止,则在块710处,事务被异常终止。在另一方面,如果指针未被设置为异常终止,则事务应该原子性地被设置为提交。这样,XPTR提供了原子性地提交或异常终止溢出块的事务的能力。如果事务型存储器事务被提交,则除了本地事务型缓存之外,或者代替本地事务型缓存,还利用应用程序虚拟地址空间来执行事务型存储器事务。
参考图8,图8是流程图,根据本发明的一个实施方案,示出了被溢出的事务如何响应进入的请求的过程800。在块802处,接收对溢出事务的进入请求。该进入请求可以被另一个事务在正常执行期间产生,或者,当检测到冲突并且溢出事务已经被实际上提交时,可以被XATT巡逻者产生。这两个情况都要求类似的动作。因此,处理由另一个事务线程在正常执行期间产生的进入请求,当进入请求被溢出事务接收到时,溢出事务过程800在块804处确定进入请求是否与本地地址匹配或与溢出的地址匹配。如果它是本地地址,则在块810处,事务被处理器利用本地事务型缓存在本地处理。
但是,如果确定它是溢出的地址,则在块812处,XATT巡逻者巡逻XATT以保证它的确是被溢出的事务。因此,在块814处,XATT巡逻者巡逻XATT,以确定匹配。如果没有找到匹配,则在块816处,没有冲突被声明,并且,在块818处,执行被请求的事务。但是,如果存在匹配,则根据优先权,XATT巡逻者或者异常终止其事务,或者向冲突的事务发异常终止信号(块820)。
如先前所讨论的那样,当提交被溢出的事务时,XATT巡逻者首先保证XPTR中的XATT记录被更新。通过更新事务头数据结构,XATT中所有适当的溢出块的所有对应记录将被原子性地提交。只有当那成功时,被缓冲的(并且未溢出的)本地硬件块才被提交。这种两步操作(two-operation)提交保证本地硬件提交和溢出的软件提交被同步。
因为溢出相对较为罕见,所以XATT巡逻者巡逻XATT的性能代价是相当小的。而且,通过迫使所有在本地被缓冲的非溢出块被溢出到XATT中,可以处理进程迁移、定时器中断和上下文切换。
再次参考图1,根据本发明的实施方案,事务地址转换缓存(XATC)134和冲突检测过滤器(CDF)136可以被利用以提高效率,并且,当被与如先前所讨论的利用虚拟存储器的事务型存储器执行一起利用时,可以提供更快的事务转换和事务间冲突管理。
在一个实施方案中,可以利用XATC 134来缓存溢出的地址转换,以便加速转换的确定。特别地,XATC 134可以缓存一部分转换地址转换表(XATT),例如XPTR的地址。这和转换参考缓冲器(translation look aside buffer,or TLB)为页表所扮演的角色类似。
更特别地,当处理器事务已经溢出时,在执行过地址之后,处理器查看XATC 134以确定:1)地址是否已经被重新映射,和2)新的转换是否必要。在原始和新物理地址上均调用一致性动作。XATC 134使巡逻XATT的需要最小。但是,在上下文切换之后,XATC134被无效。
此外,还可以利用冲突检测过滤器(CDF)136来加速确定进入请求是否与地址冲突或者请求者将与另一个事务冲突。CDF 136粗略地追踪已经被溢出的地址。CDF 136还追踪属于已经被交换出的事务的地址。这样,CDF 136对包括被交换出的事务的所有的事务是公用的。这是有必要的,因为被交换的事务不是活动地执行事务,因此,将不能为其自己确定是否发生了冲突。产生请求的事务将检查CDF 136以确定任何被交换的事务在XATT中是否具有重新映射的地址。通过这么做,可以消除每次产生请求时巡逻XATT的需要。
一种实施CDF 136的方法是通过扩展Bloom过滤器(Bloom filter)的概念。CDF 136可以被实施为计数器的阵列,其中,最大计数器值是可以溢出的位置或事务的数量。为了指示地址被溢出了,用哈希函数h1,…hk对PAorig进行哈希处理,并且,增大CDF 136中的计数器。为了去除该地址,减小相同的计数器。为了测试地址是否存在,测试那些计数器以确定它们是否全是非零的,在非零的情况下,已经检测到了潜在的冲突。
CDF 136和XATC 134都为了性能而以资源为代价:大的缓存占用资源但是加速转换,而大的过滤器比较小的过滤器产生更少的错误肯定(false positive)。这种灵活性意味着同样的结构既可以被配置在资源丰富的平台上,也可以被配置在资源匮乏的平台上。
虽然已经在特定实施方案中描述了本发明的实施方案及其各种功能部件,但是,应该理解,本发明的实施方案可以被实施在硬件、软件、固件、中间件或者它们的组合中,并在其系统、子系统、部件或子部件中被利用。当被实施在软件或固件中时,本发明的元件是执行必要任务的指令/代码段。程序或代码段可以被储存在机器可读介质(例如处理器可读介质或者计算机程序产品)中,或者,通过被具体实施在载波中的计算机数据信号、被载波调制的信号,经过传输介质或通讯链路传输。机器可读介质可以包括任何可以用机器(例如处理器、计算机等)可读和可执行的形式来储存或者转移信息的介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除可编程ROM(ERROM)、软盘、紧致盘CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路等。计算机数据信号可以包括任何能够通过例如电子网络通道、光纤、空气、电磁、射频链路、条码卡等传输介质传播的信号。代码段可以通过例如因特网、企业内部互联网的网络被下载。
此外,虽然已经参考说明性实施方案描述了本发明的实施方案,但是,不希望以限制性的方式来理解这些描述。说明性实施方案的各种修改,以及对本领域熟练技术人员来说清晰的本发明的其他实施方案,被认为位于本发明的精神和范围之内。
Claims (19)
1.一种用于处理事务型存储器请求的方法,包括:
由处理器内实现的资源管理器,根据与虚拟地址空间相关联的请求线程,确定驻留在所述处理器中的缓存是否能够容纳事务型存储器请求,其中所述事务型存储器请求与原始虚拟地址相关联;
响应于所述资源管理器确定了本地缓存能够容纳所述事务型存储器请求,由所述本地缓存执行所述事务型存储器请求;
响应于所述资源管理器确定了所述本地缓存不能够容纳所述事务型存储器请求,
在事务地址表转换表XATT的记录内,为所述事务型存储器请求分配一新虚拟
地址,所述新虚拟地址在与所述线程相关联的虚拟地址空间内;并且
利用所述新虚拟地址,管理所述事务型存储器请求的数据。
2.如权利要求1所述的方法,其特征在于,处理器内的XATT巡逻者通过对所述XATT进行操作来分配所述新虚拟地址,其中所述XATT存储在与所述虚拟地址空间相关联的物理存储器中。
3.如权利要求2所述的方法,其特征在于,用于分配新地址的所述步骤包括为所述事务型存储器请求分配新的虚拟地址和新的物理地址,其中用于为所述事务型存储器请求分配所述新的的虚拟地址和新的物理地址的所述步骤包括更新存储在与所述虚拟地址空间相关联的所述物理存储器内的XATT中的记录,以保存所述新的虚拟地址、原始虚拟地址、所述新的物理地址以及原始物理地址。
4.如权利要求3所述的方法,其特征在于,还包括在所述XATT中的所述记录内,分配包括所述事务型存储器请求的当前事务的状态。
5.如权利要求4所述的方法,其特征在于,当前事务的所述状态是本地或溢出流中的本地或溢出中的一个。
6.一种用于处理事务型存储器请求的计算机系统,包括:
用于在应用程序虚拟地址空间内保存事务型地址转换表的装置;
用于根据相关联应用程序的请求线程确定本地缓存是否能够容纳事务型存储器请求的装置,其中所述相关联应用程序与所述应用程序虚拟地址空间相关联;
用于启动更新所述事务型地址转换表的记录以保存与原始虚拟地址相关联的新虚拟地址的装置,所述新虚拟地址在所述应用程序虚拟地址空间内,所述新虚拟地址用于保存与所述事务型存储器请求相关联的用于所述原始虚拟地址的溢出数据。
7.如权利要求6所述的计算机系统,其特征在于,还包括用于将虚拟地址转换成物理地址的装置,并且所述原始地址包括原始虚拟地址,当所述用于将虚拟地址转换成物理地址的装置转换所述原始虚拟地址时,所述原始虚拟地址将参考原始物理地址,并且所述新地址包括新的虚拟地址,当所述用于将虚拟地址转换成物理地址的装置转换所述新的虚拟地址时,所述新的虚拟地址将参考所述应用程序地址空间内、所述用于在应用程序虚拟地址空间内保存事务型地址转换表的装置中的物理存储单元的新的物理地址。
8.如权利要求7所述的计算机系统,其特征在于,还包括用于缓存所述事务型转换表中最近被更新的记录的装置。
9.如权利要求7所述的计算机系统,其特征在于,还包括用于保存对已经溢出所述本地缓存的原始地址的参考的装置,并且来自后续事务型存储器请求的冲突能够根据对保存在该用于保存对已经溢出所述本地缓存的原始地址的参考的装置中的所述原始地址的参考而被检测,无需所述用于启动更新所述事务型地址转换表的记录以保存与原始虚拟地址相关联的新虚拟地址的装置访问保存在所述用于在应用程序虚拟地址空间内保存事务型地址转换表的装置内的所述事务型转换表。
10.如权利要求6所述的计算机系统,其特征在于,所述本地缓存包括与数据缓存相分离的事务型缓存。
11.如权利要求6所述的计算机系统,其特征在于,所述本地缓存包括数据缓存,所述数据缓存也被用作事务型缓存。
12.如权利要求7所述的计算机系统,其特征在于,所述事务型地址转换表的所述记录用于保存所述原始虚拟地址、所述新的虚拟地址、所述原始物理地址、所述新的物理地址,以及包括所述事务型存储器请求的事务的状态。
13.如权利要求6所述的计算机系统,其特征在于,所述应用程序地址空间内的所述事务型转换表只与包括所述事务型存储器的单个事务相关联。
14.如权利要求6所述的计算机系统,其特征在于,所述应用程序地址空间内的所述事务型转换表与所述相关联应用程序的所述请求线程的所述事务相关联。
15.一种用于处理事务型存储器请求的设备,包括:
用于执行线程的装置,所述线程至少包括事务型存储器事务请求,以参考存储数据以及用于所述存储数据的原始虚拟地址,所述线程与虚拟地址空间相关联;
用于将所述虚拟地址空间内的虚拟地址转换成物理存储器的物理地址的装置;
用于在接收到所述事务型存储器事务请求时确定该事务型存储器事务请求是否将溢出一本地存储器的装置;
用于响应于所述用于在接收到所述事务型存储器事务请求时确定该事务型存储器事务请求是否将溢出一本地存储器的装置确定了所述事务型存储器事务请求将溢出所述本地存储器,将新的虚拟地址与所述原始虚拟地址相关联的装置,其中所述新的虚拟地址在与所述线程相关联的所述虚拟地址空间内,并且当所述用于将所述虚拟地址空间内的虚拟地址转换成物理存储器的物理地址的装置转换所述新的虚拟地址时,所述新的虚拟地址将参考所述物理存储器的新的物理地址,以保存所述存储数据。
16.如权利要求15所述的设备,其特征在于,所述用于执行线程的装置能够至少部分并行地执行包括所述线程的多个线程;当所述用于将所述虚拟地址空间内的虚拟地址转换成物理存储器的物理地址的装置转换所述原始虚拟地址时,所述原始虚拟地址将参考物理存储器的原始物理地址。
17.如权利要求16所述的设备,其特征在于,用于将所述新的虚拟地址与所述原始虚拟地址相关联的所述用于将新的虚拟地址与所述原始虚拟地址相关联的装置包括用于启动对保存在所述物理存储器内的表进行写操作的用于将新的虚拟地址与所述原始虚拟地址相关联的装置,用于更新所述表的记录,以保存所述新的虚拟地址和所述原始虚拟地址。
18.如权利要求17所述的设备,其特征在于,还包括响应于所述用于将新的虚拟地址与所述原始虚拟地址相关联的装置启动对所述表的写操作以至少缓存所述表的所述记录的一部分的装置。
19.如权利要求17所述的设备,其特征在于,还包括响应于所述用于在接收到所述事务型存储器事务请求时确定该事务型存储器事务请求是否将溢出一本地存储器的装置确定了所述事务型存储操作将溢出所述本地存储,跟踪所述原始物理地址的装置,并且响应于参考该地址的后续事务型存储器请求,所述用于将新的虚拟地址与所述原始虚拟地址相关联的装置能够根据在所述跟踪所述原始物理地址的装置内跟踪的所述原始物理地址,确定冲突。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/956,178 US7685365B2 (en) | 2004-09-30 | 2004-09-30 | Transactional memory execution utilizing virtual memory |
US10/956,178 | 2004-09-30 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005101078076A Division CN100514299C (zh) | 2004-09-30 | 2005-09-30 | 利用虚拟存储器的事务型存储器执行 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101556559A CN101556559A (zh) | 2009-10-14 |
CN101556559B true CN101556559B (zh) | 2012-09-26 |
Family
ID=35502717
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005101078076A Expired - Fee Related CN100514299C (zh) | 2004-09-30 | 2005-09-30 | 利用虚拟存储器的事务型存储器执行 |
CN200910145434XA Expired - Fee Related CN101556559B (zh) | 2004-09-30 | 2005-09-30 | 利用虚拟存储器的事务型存储器执行 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005101078076A Expired - Fee Related CN100514299C (zh) | 2004-09-30 | 2005-09-30 | 利用虚拟存储器的事务型存储器执行 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7685365B2 (zh) |
EP (1) | EP1643371B1 (zh) |
JP (2) | JP2006107494A (zh) |
CN (2) | CN100514299C (zh) |
TW (1) | TWI276958B (zh) |
Families Citing this family (191)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7984248B2 (en) * | 2004-12-29 | 2011-07-19 | Intel Corporation | Transaction based shared data operations in a multiprocessor environment |
US7716249B2 (en) * | 2005-09-16 | 2010-05-11 | Microsoft Corporation | Transaction and task scheduler |
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 |
US8316352B2 (en) * | 2006-06-09 | 2012-11-20 | Oracle America, Inc. | Watchpoints on transactional variables |
US20080005504A1 (en) * | 2006-06-30 | 2008-01-03 | Jesse Barnes | Global overflow method for virtualized transactional memory |
US8035650B2 (en) * | 2006-07-25 | 2011-10-11 | Qualcomm Incorporated | Tiled cache for multiple software programs |
US20080040524A1 (en) * | 2006-08-14 | 2008-02-14 | Zimmer Vincent J | System management mode using transactional memory |
US9798590B2 (en) * | 2006-09-07 | 2017-10-24 | Intel Corporation | Post-retire scheme for tracking tentative accesses during transactional execution |
US8924653B2 (en) * | 2006-10-31 | 2014-12-30 | Hewlett-Packard Development Company, L.P. | Transactional cache memory system |
US8806495B2 (en) * | 2006-11-20 | 2014-08-12 | Microsoft Corp. | Lightweight transactional memory for data parallel programming |
US8719807B2 (en) * | 2006-12-28 | 2014-05-06 | Intel Corporation | Handling precompiled binaries in a hardware accelerated software transactional memory system |
US7802136B2 (en) | 2006-12-28 | 2010-09-21 | Intel Corporation | Compiler technique for efficient register checkpointing to support transaction roll-back |
US8060482B2 (en) * | 2006-12-28 | 2011-11-15 | Intel Corporation | Efficient and consistent software transactional memory |
US8132158B2 (en) * | 2006-12-28 | 2012-03-06 | Cheng Wang | Mechanism for software transactional memory commit/abort in unmanaged runtime environment |
US8185698B2 (en) * | 2007-04-09 | 2012-05-22 | Bratin Saha | Hardware acceleration of a write-buffering software transactional memory |
US7908255B2 (en) * | 2007-04-11 | 2011-03-15 | Microsoft Corporation | Transactional memory using buffered writes and enforced serialization order |
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 |
US8095750B2 (en) * | 2007-05-14 | 2012-01-10 | International Business Machines Corporation | Transactional memory system with fast processing of common conflicts |
US8117403B2 (en) * | 2007-05-14 | 2012-02-14 | International Business Machines Corporation | Transactional memory system which employs thread assists using address history tables |
US8099719B2 (en) * | 2007-06-19 | 2012-01-17 | Microsoft Corporation | Transactional debugger for a transactional memory system and detecting conflicts |
US8140773B2 (en) | 2007-06-27 | 2012-03-20 | Bratin Saha | Using ephemeral stores for fine-grained conflict detection in a hardware accelerated STM |
US9280397B2 (en) * | 2007-06-27 | 2016-03-08 | Intel Corporation | Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata |
US9043553B2 (en) | 2007-06-27 | 2015-05-26 | Microsoft Technology Licensing, Llc | Leveraging transactional memory hardware to accelerate virtualization and emulation |
US8239633B2 (en) * | 2007-07-11 | 2012-08-07 | Wisconsin Alumni Research Foundation | Non-broadcast signature-based transactional memory |
US20090064141A1 (en) * | 2007-08-29 | 2009-03-05 | Microsoft Corporation | Efficient utilization of transactions in computing tasks |
US7890472B2 (en) * | 2007-09-18 | 2011-02-15 | Microsoft Corporation | Parallel nested transactions in transactional memory |
CN101430650B (zh) * | 2007-11-07 | 2013-02-06 | 国际商业机器公司 | 用于事务内存的方法和设备 |
CN101452400B (zh) * | 2007-11-29 | 2011-12-28 | 国际商业机器公司 | 处理多处理器系统中事务缓冲器溢出的方法和系统 |
US9027030B2 (en) * | 2007-11-29 | 2015-05-05 | Red Hat, Inc. | Commit-one-phase distributed transactions with multiple starting participants |
US8352421B2 (en) * | 2008-05-28 | 2013-01-08 | Red Hat, Inc. | Recording distributed transactions using probabalistic data structures |
US9239799B2 (en) | 2008-06-26 | 2016-01-19 | Qualcomm Incorporated | Memory management unit directed access to system interfaces |
US8341133B2 (en) | 2008-06-27 | 2012-12-25 | Microsoft Corporation | Compressed transactional locks in object headers |
US8180986B2 (en) * | 2008-09-17 | 2012-05-15 | Microsoft Corporation | Memory conflict detection via mapping of the physical heap to control access permissions to the memory |
CN101739298B (zh) * | 2008-11-27 | 2013-07-31 | 国际商业机器公司 | 共享缓存管理方法和系统 |
US8127057B2 (en) * | 2009-08-13 | 2012-02-28 | Advanced Micro Devices, Inc. | Multi-level buffering of transactional data |
US8397052B2 (en) * | 2009-08-19 | 2013-03-12 | International Business Machines Corporation | Version pressure feedback mechanisms for speculative versioning caches |
US8521961B2 (en) * | 2009-08-20 | 2013-08-27 | International Business Machines Corporation | Checkpointing in speculative versioning caches |
US8566524B2 (en) | 2009-08-31 | 2013-10-22 | International Business Machines Corporation | Transactional memory system with efficient cache support |
US8255626B2 (en) * | 2009-12-09 | 2012-08-28 | International Business Machines Corporation | Atomic commit predicated on consistency of watches |
US8924692B2 (en) | 2009-12-26 | 2014-12-30 | Intel Corporation | Event counter checkpointing and restoring |
US9244722B2 (en) | 2010-01-11 | 2016-01-26 | International Business Machines Corporation | Transactional updating in dynamic distributed workloads |
US8352688B2 (en) * | 2010-11-15 | 2013-01-08 | Advanced Micro Devices, Inc. | Preventing unintended loss of transactional data in hardware transactional memory systems |
US8732496B2 (en) * | 2011-03-24 | 2014-05-20 | Nvidia Corporation | Method and apparatus to support a self-refreshing display device coupled to a graphics controller |
CN102346460B (zh) * | 2011-05-27 | 2013-11-13 | 运软网络科技(上海)有限公司 | 一种基于事务的服务控制系统及其控制方法 |
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 |
US9298632B2 (en) * | 2012-06-28 | 2016-03-29 | Intel Corporation | Hybrid cache state and filter tracking of memory operations during a transaction |
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 |
US9158667B2 (en) | 2013-03-04 | 2015-10-13 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US10108424B2 (en) * | 2013-03-14 | 2018-10-23 | Nvidia Corporation | Profiling code portions to generate translations |
US9032152B2 (en) | 2013-03-22 | 2015-05-12 | Applied Micro Circuits Corporation | Cache miss detection filter |
US8964496B2 (en) | 2013-07-26 | 2015-02-24 | Micron Technology, Inc. | Apparatuses and methods for performing compare operations using sensing circuitry |
US8971124B1 (en) | 2013-08-08 | 2015-03-03 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US9153305B2 (en) | 2013-08-30 | 2015-10-06 | Micron Technology, Inc. | Independently addressable memory array address spaces |
US9019785B2 (en) | 2013-09-19 | 2015-04-28 | Micron Technology, Inc. | Data shifting via a number of isolation devices |
US9449675B2 (en) | 2013-10-31 | 2016-09-20 | Micron Technology, Inc. | Apparatuses and methods for identifying an extremum value stored in an array of memory cells |
US9430191B2 (en) | 2013-11-08 | 2016-08-30 | Micron Technology, Inc. | Division operations for memory |
US9971627B2 (en) | 2014-03-26 | 2018-05-15 | Intel Corporation | Enabling maximum concurrency in a hybrid transactional memory system |
US9934856B2 (en) | 2014-03-31 | 2018-04-03 | Micron Technology, Inc. | Apparatuses and methods for comparing data patterns in memory |
US10074407B2 (en) | 2014-06-05 | 2018-09-11 | Micron Technology, Inc. | Apparatuses and methods for performing invert operations using sensing circuitry |
US9786335B2 (en) | 2014-06-05 | 2017-10-10 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US9711206B2 (en) | 2014-06-05 | 2017-07-18 | Micron Technology, Inc. | Performing logical operations using sensing circuitry |
US9455020B2 (en) | 2014-06-05 | 2016-09-27 | Micron Technology, Inc. | Apparatuses and methods for performing an exclusive or operation using sensing circuitry |
US9711207B2 (en) | 2014-06-05 | 2017-07-18 | Micron Technology, Inc. | Performing logical operations using sensing circuitry |
US9449674B2 (en) | 2014-06-05 | 2016-09-20 | Micron Technology, Inc. | Performing logical operations using sensing circuitry |
US9704540B2 (en) | 2014-06-05 | 2017-07-11 | Micron Technology, Inc. | Apparatuses and methods for parity determination using sensing circuitry |
US9910787B2 (en) | 2014-06-05 | 2018-03-06 | Micron Technology, Inc. | Virtual address table |
US9779019B2 (en) | 2014-06-05 | 2017-10-03 | Micron Technology, Inc. | Data storage layout |
US9496023B2 (en) | 2014-06-05 | 2016-11-15 | Micron Technology, Inc. | Comparison operations on logical representations of values in memory |
US9830999B2 (en) | 2014-06-05 | 2017-11-28 | Micron Technology, Inc. | Comparison operations in memory |
US9898252B2 (en) | 2014-09-03 | 2018-02-20 | Micron Technology, Inc. | Multiplication operations in memory |
US10068652B2 (en) | 2014-09-03 | 2018-09-04 | Micron Technology, Inc. | Apparatuses and methods for determining population count |
US9740607B2 (en) | 2014-09-03 | 2017-08-22 | Micron Technology, Inc. | Swap operations in memory |
US9747961B2 (en) | 2014-09-03 | 2017-08-29 | Micron Technology, Inc. | Division operations in memory |
US9847110B2 (en) | 2014-09-03 | 2017-12-19 | Micron Technology, Inc. | Apparatuses and methods for storing a data value in multiple columns of an array corresponding to digits of a vector |
US9589602B2 (en) | 2014-09-03 | 2017-03-07 | Micron Technology, Inc. | Comparison operations in memory |
US9904515B2 (en) | 2014-09-03 | 2018-02-27 | Micron Technology, Inc. | Multiplication operations in memory |
US9940026B2 (en) | 2014-10-03 | 2018-04-10 | Micron Technology, Inc. | Multidimensional contiguous memory allocation |
US9836218B2 (en) | 2014-10-03 | 2017-12-05 | Micron Technology, Inc. | Computing reduction and prefix sum operations in memory |
US10163467B2 (en) | 2014-10-16 | 2018-12-25 | Micron Technology, Inc. | Multiple endianness compatibility |
US10147480B2 (en) | 2014-10-24 | 2018-12-04 | Micron Technology, Inc. | Sort operation in memory |
US9779784B2 (en) | 2014-10-29 | 2017-10-03 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US9747960B2 (en) | 2014-12-01 | 2017-08-29 | Micron Technology, Inc. | Apparatuses and methods for converting a mask to an index |
US10073635B2 (en) | 2014-12-01 | 2018-09-11 | Micron Technology, Inc. | Multiple endianness compatibility |
US10032493B2 (en) | 2015-01-07 | 2018-07-24 | Micron Technology, Inc. | Longest element length determination in memory |
US10061590B2 (en) | 2015-01-07 | 2018-08-28 | Micron Technology, Inc. | Generating and executing a control flow |
US9583163B2 (en) | 2015-02-03 | 2017-02-28 | Micron Technology, Inc. | Loop structure for operations in memory |
WO2016126478A1 (en) | 2015-02-06 | 2016-08-11 | Micron Technology, Inc. | Apparatuses and methods for memory device as a store for program instructions |
WO2016126474A1 (en) | 2015-02-06 | 2016-08-11 | Micron Technology, Inc. | Apparatuses and methods for parallel writing to multiple memory device locations |
WO2016126472A1 (en) | 2015-02-06 | 2016-08-11 | Micron Technology, Inc. | Apparatuses and methods for scatter and gather |
WO2016144724A1 (en) | 2015-03-10 | 2016-09-15 | Micron Technology, Inc. | Apparatuses and methods for shift decisions |
US9741399B2 (en) | 2015-03-11 | 2017-08-22 | Micron Technology, Inc. | Data shift by elements of a vector in memory |
US9898253B2 (en) | 2015-03-11 | 2018-02-20 | Micron Technology, Inc. | Division operations on variable length elements in memory |
EP3268965A4 (en) | 2015-03-12 | 2018-10-03 | Micron Technology, INC. | Apparatuses and methods for data movement |
US10146537B2 (en) | 2015-03-13 | 2018-12-04 | Micron Technology, Inc. | Vector population count determination in memory |
US10049054B2 (en) | 2015-04-01 | 2018-08-14 | Micron Technology, Inc. | Virtual register file |
US10140104B2 (en) | 2015-04-14 | 2018-11-27 | Micron Technology, Inc. | Target architecture determination |
US9959923B2 (en) | 2015-04-16 | 2018-05-01 | Micron Technology, Inc. | Apparatuses and methods to reverse data stored in memory |
US10073786B2 (en) | 2015-05-28 | 2018-09-11 | Micron Technology, Inc. | Apparatuses and methods for compute enabled cache |
US9704541B2 (en) | 2015-06-12 | 2017-07-11 | Micron Technology, Inc. | Simulating access lines |
US9921777B2 (en) | 2015-06-22 | 2018-03-20 | Micron Technology, Inc. | Apparatuses and methods for data transfer from sensing circuitry to a controller |
US9733689B2 (en) * | 2015-06-27 | 2017-08-15 | Intel Corporation | Hardware apparatuses and methods to perform transactional power management |
US9996479B2 (en) | 2015-08-17 | 2018-06-12 | Micron Technology, Inc. | Encryption of executables in computational memory |
US9905276B2 (en) | 2015-12-21 | 2018-02-27 | Micron Technology, Inc. | Control of sensing components in association with performing operations |
US9952925B2 (en) | 2016-01-06 | 2018-04-24 | Micron Technology, Inc. | Error code calculation on sensing circuitry |
US10048888B2 (en) | 2016-02-10 | 2018-08-14 | Micron Technology, Inc. | Apparatuses and methods for partitioned parallel data movement |
US9892767B2 (en) | 2016-02-12 | 2018-02-13 | Micron Technology, Inc. | Data gathering in memory |
US9971541B2 (en) | 2016-02-17 | 2018-05-15 | Micron Technology, Inc. | Apparatuses and methods for data movement |
US10956439B2 (en) | 2016-02-19 | 2021-03-23 | Micron Technology, Inc. | Data transfer with a bit vector operation device |
US9899070B2 (en) | 2016-02-19 | 2018-02-20 | Micron Technology, Inc. | Modified decode for corner turn |
US9697876B1 (en) | 2016-03-01 | 2017-07-04 | Micron Technology, Inc. | Vertical bit vector shift in memory |
WO2017155523A1 (en) * | 2016-03-09 | 2017-09-14 | Hewlett Packard Enterprise Development Lp | Server virtual address space |
US10262721B2 (en) | 2016-03-10 | 2019-04-16 | Micron Technology, Inc. | Apparatuses and methods for cache invalidate |
US9997232B2 (en) | 2016-03-10 | 2018-06-12 | Micron Technology, Inc. | Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations |
US10379772B2 (en) | 2016-03-16 | 2019-08-13 | Micron Technology, Inc. | Apparatuses and methods for operations using compressed and decompressed data |
US9910637B2 (en) | 2016-03-17 | 2018-03-06 | Micron Technology, Inc. | Signed division in memory |
US11074988B2 (en) | 2016-03-22 | 2021-07-27 | Micron Technology, Inc. | Apparatus and methods for debugging on a host and memory device |
US10388393B2 (en) | 2016-03-22 | 2019-08-20 | Micron Technology, Inc. | Apparatus and methods for debugging on a host and memory device |
US10120740B2 (en) | 2016-03-22 | 2018-11-06 | Micron Technology, Inc. | Apparatus and methods for debugging on a memory device |
US10474581B2 (en) | 2016-03-25 | 2019-11-12 | Micron Technology, Inc. | Apparatuses and methods for cache operations |
US10977033B2 (en) | 2016-03-25 | 2021-04-13 | Micron Technology, Inc. | Mask patterns generated in memory from seed vectors |
US10074416B2 (en) | 2016-03-28 | 2018-09-11 | Micron Technology, Inc. | Apparatuses and methods for data movement |
US10430244B2 (en) | 2016-03-28 | 2019-10-01 | Micron Technology, Inc. | Apparatuses and methods to determine timing of operations |
US10453502B2 (en) | 2016-04-04 | 2019-10-22 | Micron Technology, Inc. | Memory bank power coordination including concurrently performing a memory operation in a selected number of memory regions |
US10607665B2 (en) | 2016-04-07 | 2020-03-31 | Micron Technology, Inc. | Span mask generation |
US9818459B2 (en) | 2016-04-19 | 2017-11-14 | Micron Technology, Inc. | Invert operations using sensing circuitry |
US9659605B1 (en) | 2016-04-20 | 2017-05-23 | Micron Technology, Inc. | Apparatuses and methods for performing corner turn operations using sensing circuitry |
US10153008B2 (en) | 2016-04-20 | 2018-12-11 | Micron Technology, Inc. | Apparatuses and methods for performing corner turn operations using sensing circuitry |
US10042608B2 (en) | 2016-05-11 | 2018-08-07 | Micron Technology, Inc. | Signed division in memory |
US9659610B1 (en) | 2016-05-18 | 2017-05-23 | Micron Technology, Inc. | Apparatuses and methods for shifting data |
US10049707B2 (en) | 2016-06-03 | 2018-08-14 | Micron Technology, Inc. | Shifting data |
US10387046B2 (en) | 2016-06-22 | 2019-08-20 | Micron Technology, Inc. | Bank to bank data transfer |
US10037785B2 (en) | 2016-07-08 | 2018-07-31 | Micron Technology, Inc. | Scan chain operation in sensing circuitry |
US10388360B2 (en) | 2016-07-19 | 2019-08-20 | Micron Technology, Inc. | Utilization of data stored in an edge section of an array |
US10733089B2 (en) | 2016-07-20 | 2020-08-04 | Micron Technology, Inc. | Apparatuses and methods for write address tracking |
US10387299B2 (en) | 2016-07-20 | 2019-08-20 | Micron Technology, Inc. | Apparatuses and methods for transferring data |
US9972367B2 (en) | 2016-07-21 | 2018-05-15 | Micron Technology, Inc. | Shifting data in sensing circuitry |
US9767864B1 (en) | 2016-07-21 | 2017-09-19 | Micron Technology, Inc. | Apparatuses and methods for storing a data value in a sensing circuitry element |
US10303632B2 (en) | 2016-07-26 | 2019-05-28 | Micron Technology, Inc. | Accessing status information |
US10468087B2 (en) | 2016-07-28 | 2019-11-05 | Micron Technology, Inc. | Apparatuses and methods for operations in a self-refresh state |
US9990181B2 (en) | 2016-08-03 | 2018-06-05 | Micron Technology, Inc. | Apparatuses and methods for random number generation |
US11029951B2 (en) | 2016-08-15 | 2021-06-08 | Micron Technology, Inc. | Smallest or largest value element determination |
US10606587B2 (en) | 2016-08-24 | 2020-03-31 | Micron Technology, Inc. | Apparatus and methods related to microcode instructions indicating instruction types |
US10466928B2 (en) | 2016-09-15 | 2019-11-05 | Micron Technology, Inc. | Updating a register in memory |
US10387058B2 (en) | 2016-09-29 | 2019-08-20 | Micron Technology, Inc. | Apparatuses and methods to change data category values |
US10014034B2 (en) | 2016-10-06 | 2018-07-03 | Micron Technology, Inc. | Shifting data in sensing circuitry |
US10529409B2 (en) | 2016-10-13 | 2020-01-07 | Micron Technology, Inc. | Apparatuses and methods to perform logical operations using sensing circuitry |
US9805772B1 (en) | 2016-10-20 | 2017-10-31 | Micron Technology, Inc. | Apparatuses and methods to selectively perform logical operations |
US10373666B2 (en) | 2016-11-08 | 2019-08-06 | Micron Technology, Inc. | Apparatuses and methods for compute components formed over an array of memory cells |
US10423353B2 (en) | 2016-11-11 | 2019-09-24 | Micron Technology, Inc. | Apparatuses and methods for memory alignment |
US9761300B1 (en) | 2016-11-22 | 2017-09-12 | Micron Technology, Inc. | Data shift apparatuses and methods |
US10402340B2 (en) | 2017-02-21 | 2019-09-03 | Micron Technology, Inc. | Memory array page table walk |
US10403352B2 (en) | 2017-02-22 | 2019-09-03 | Micron Technology, Inc. | Apparatuses and methods for compute in data path |
US10268389B2 (en) | 2017-02-22 | 2019-04-23 | Micron Technology, Inc. | Apparatuses and methods for in-memory operations |
US10838899B2 (en) | 2017-03-21 | 2020-11-17 | Micron Technology, Inc. | Apparatuses and methods for in-memory data switching networks |
US11222260B2 (en) | 2017-03-22 | 2022-01-11 | Micron Technology, Inc. | Apparatuses and methods for operating neural networks |
US10185674B2 (en) | 2017-03-22 | 2019-01-22 | Micron Technology, Inc. | Apparatus and methods for in data path compute operations |
US10049721B1 (en) | 2017-03-27 | 2018-08-14 | Micron Technology, Inc. | Apparatuses and methods for in-memory operations |
US10147467B2 (en) | 2017-04-17 | 2018-12-04 | Micron Technology, Inc. | Element value comparison in memory |
US10043570B1 (en) | 2017-04-17 | 2018-08-07 | Micron Technology, Inc. | Signed element compare in memory |
US9997212B1 (en) | 2017-04-24 | 2018-06-12 | Micron Technology, Inc. | Accessing data in memory |
US10942843B2 (en) | 2017-04-25 | 2021-03-09 | Micron Technology, Inc. | Storing data elements of different lengths in respective adjacent rows or columns according to memory shapes |
US10236038B2 (en) | 2017-05-15 | 2019-03-19 | Micron Technology, Inc. | Bank to bank data transfer |
US10068664B1 (en) | 2017-05-19 | 2018-09-04 | Micron Technology, Inc. | Column repair in memory |
US10013197B1 (en) | 2017-06-01 | 2018-07-03 | Micron Technology, Inc. | Shift skip |
US10262701B2 (en) | 2017-06-07 | 2019-04-16 | Micron Technology, Inc. | Data transfer between subarrays in memory |
US10152271B1 (en) | 2017-06-07 | 2018-12-11 | Micron Technology, Inc. | Data replication |
US10318168B2 (en) | 2017-06-19 | 2019-06-11 | Micron Technology, Inc. | Apparatuses and methods for simultaneous in data path compute operations |
US10162005B1 (en) | 2017-08-09 | 2018-12-25 | Micron Technology, Inc. | Scan chain operations |
US10534553B2 (en) | 2017-08-30 | 2020-01-14 | Micron Technology, Inc. | Memory array accessibility |
US10416927B2 (en) | 2017-08-31 | 2019-09-17 | Micron Technology, Inc. | Processing in memory |
US10741239B2 (en) | 2017-08-31 | 2020-08-11 | Micron Technology, Inc. | Processing in memory device including a row address strobe manager |
US10346092B2 (en) | 2017-08-31 | 2019-07-09 | Micron Technology, Inc. | Apparatuses and methods for in-memory operations using timing circuitry |
US10409739B2 (en) | 2017-10-24 | 2019-09-10 | Micron Technology, Inc. | Command selection policy |
US10522210B2 (en) | 2017-12-14 | 2019-12-31 | Micron Technology, Inc. | Apparatuses and methods for subarray addressing |
US10332586B1 (en) | 2017-12-19 | 2019-06-25 | Micron Technology, Inc. | Apparatuses and methods for subrow addressing |
US10614875B2 (en) | 2018-01-30 | 2020-04-07 | Micron Technology, Inc. | Logical operations using memory cells |
US10437557B2 (en) | 2018-01-31 | 2019-10-08 | Micron Technology, Inc. | Determination of a match between data values stored by several arrays |
US11194477B2 (en) | 2018-01-31 | 2021-12-07 | Micron Technology, Inc. | Determination of a match between data values stored by three or more arrays |
US10725696B2 (en) | 2018-04-12 | 2020-07-28 | Micron Technology, Inc. | Command selection policy with read priority |
US10440341B1 (en) | 2018-06-07 | 2019-10-08 | Micron Technology, Inc. | Image processor formed in an array of memory cells |
US10769071B2 (en) | 2018-10-10 | 2020-09-08 | Micron Technology, Inc. | Coherent memory access |
US11175915B2 (en) | 2018-10-10 | 2021-11-16 | Micron Technology, Inc. | Vector registers implemented in memory |
US10483978B1 (en) | 2018-10-16 | 2019-11-19 | Micron Technology, Inc. | Memory device processing |
US11184446B2 (en) | 2018-12-05 | 2021-11-23 | Micron Technology, Inc. | Methods and apparatus for incentivizing participation in fog networks |
US10867655B1 (en) | 2019-07-08 | 2020-12-15 | Micron Technology, Inc. | Methods and apparatus for dynamically adjusting performance of partitioned memory |
US11360768B2 (en) | 2019-08-14 | 2022-06-14 | Micron Technolgy, Inc. | Bit string operations in memory |
US11449577B2 (en) | 2019-11-20 | 2022-09-20 | Micron Technology, Inc. | Methods and apparatus for performing video processing matrix operations within a memory array |
US11853385B2 (en) | 2019-12-05 | 2023-12-26 | Micron Technology, Inc. | Methods and apparatus for performing diversity matrix operations within a memory array |
US11227641B1 (en) | 2020-07-21 | 2022-01-18 | Micron Technology, Inc. | Arithmetic operations in memory |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1337026A (zh) * | 1999-01-20 | 2002-02-20 | 计算机联合思想公司 | 用于表达频道化数据的系统和方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4819154A (en) * | 1982-12-09 | 1989-04-04 | Sequoia Systems, Inc. | Memory back up system with one cache memory and two physically separated main memories |
US4926317A (en) * | 1987-07-24 | 1990-05-15 | Convex Computer Corporation | Hierarchical memory system with logical cache, physical cache, and address translation unit for generating a sequence of physical addresses |
US5107457A (en) * | 1989-04-03 | 1992-04-21 | The Johns Hopkins University | Stack data cache having a stack management hardware with internal and external stack pointers and buffers for handling underflow and overflow stack |
US5133058A (en) * | 1989-09-18 | 1992-07-21 | Sun Microsystems, Inc. | Page-tagging translation look-aside buffer for a computer memory system |
US5428761A (en) * | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
US5566324A (en) * | 1992-12-24 | 1996-10-15 | Ncr Corporation | Computer apparatus including a main memory prefetch cache and method of operation thereof |
JPH06348597A (ja) * | 1993-06-08 | 1994-12-22 | Hitachi Ltd | キャッシュ制御方法および回転形記憶装置 |
US5619673A (en) * | 1994-06-29 | 1997-04-08 | Intel Corporation | Virtual access cache protection bits handling method and apparatus |
JPH0816470A (ja) * | 1994-07-04 | 1996-01-19 | Hitachi Ltd | 並列計算機 |
US6799253B1 (en) * | 2002-05-30 | 2004-09-28 | Oracle Corporation | Stochastic scratchpad storage management technique |
US7856537B2 (en) * | 2004-09-30 | 2010-12-21 | Intel Corporation | Hybrid hardware and software implementation of transactional memory access |
-
2004
- 2004-09-30 US US10/956,178 patent/US7685365B2/en active Active
-
2005
- 2005-09-08 TW TW094130947A patent/TWI276958B/zh not_active IP Right Cessation
- 2005-09-20 EP EP05255806.1A patent/EP1643371B1/en not_active Not-in-force
- 2005-09-28 JP JP2005282568A patent/JP2006107494A/ja active Pending
- 2005-09-30 CN CNB2005101078076A patent/CN100514299C/zh not_active Expired - Fee Related
- 2005-09-30 CN CN200910145434XA patent/CN101556559B/zh not_active Expired - Fee Related
-
2009
- 2009-07-21 JP JP2009170142A patent/JP5425551B2/ja not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1337026A (zh) * | 1999-01-20 | 2002-02-20 | 计算机联合思想公司 | 用于表达频道化数据的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100514299C (zh) | 2009-07-15 |
US20060085588A1 (en) | 2006-04-20 |
EP1643371A3 (en) | 2008-04-02 |
JP2006107494A (ja) | 2006-04-20 |
CN101556559A (zh) | 2009-10-14 |
EP1643371A2 (en) | 2006-04-05 |
TWI276958B (en) | 2007-03-21 |
US7685365B2 (en) | 2010-03-23 |
EP1643371B1 (en) | 2013-05-22 |
JP2009245452A (ja) | 2009-10-22 |
JP5425551B2 (ja) | 2014-02-26 |
CN1959641A (zh) | 2007-05-09 |
TW200632652A (en) | 2006-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101556559B (zh) | 利用虚拟存储器的事务型存储器执行 | |
Levandoski et al. | High performance transactions in deuteronomy | |
US8700585B2 (en) | Optimistic locking method and system for committing transactions on a file system | |
US6018746A (en) | System and method for managing recovery information in a transaction processing system | |
US10360149B2 (en) | Data structure store in persistent memory | |
CN1755635B (zh) | 事务型存储器访问的混合硬件软件实现 | |
US10732836B2 (en) | Remote one-sided persistent writes | |
US9047351B2 (en) | Cluster of processing nodes with distributed global flash memory using commodity server technology | |
US7349970B2 (en) | Workload management of stateful program entities | |
EP2681660B1 (en) | Universal cache management system | |
US20040148360A1 (en) | Communication-link-attached persistent memory device | |
US11487435B1 (en) | System and method for non-volatile memory-based optimized, versioned, log-structured metadata storage with efficient data retrieval | |
Wu et al. | Transaction healing: Scaling optimistic concurrency control on multicores | |
US8769350B1 (en) | Multi-writer in-memory non-copying database (MIND) system and method | |
US10802766B2 (en) | Database with NVDIMM as persistent storage | |
US20190042424A1 (en) | Method and system for storage virtualization | |
US20140068201A1 (en) | Transactional memory proxy | |
US11645241B2 (en) | Persistent memory file store for directly mapped persistent memory database | |
US11880318B2 (en) | Local page writes via pre-staging buffers for resilient buffer pool extensions | |
Scargall et al. | Persistent memory architecture | |
US10592530B2 (en) | System and method for managing transactions for multiple data store nodes without a central log | |
Zhu et al. | Interactive transaction processing for in-memory database system | |
US11914571B1 (en) | Optimistic concurrency for a multi-writer database | |
WO2023075910A1 (en) | Local page writes via pre-staging buffers for resilient buffer pool extensions | |
Misra | Enhancing Transactional Key-Value Storage Systems in Datacenters using Precise Clocks and Software-Defined Storage |
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: 20120926 Termination date: 20180930 |
|
CF01 | Termination of patent right due to non-payment of annual fee |