CN103959257B - 用于持久性指针管理的软件转换后备缓冲器 - Google Patents
用于持久性指针管理的软件转换后备缓冲器 Download PDFInfo
- Publication number
- CN103959257B CN103959257B CN201280059780.6A CN201280059780A CN103959257B CN 103959257 B CN103959257 B CN 103959257B CN 201280059780 A CN201280059780 A CN 201280059780A CN 103959257 B CN103959257 B CN 103959257B
- Authority
- CN
- China
- Prior art keywords
- persistency
- location identifier
- cache
- oid
- target
- 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.)
- Active
Links
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
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/4493—Object persistence
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供了用于在运行时执行OID到VMA转换的技术。向量寄存器用来实现“软件TLB”,以执行OID到VMA转换。运行时解除引用是利用一个或多个向量寄存器执行的,以对照一组高速缓存的OID比较需要被解除引用的每个OID。当高速缓存的OID匹配被解除引用的OID时,高速缓存的OID的VMA从高速缓存中检索。缓冲区高速缓存项可以在软件TLB存储用于该项的条目的过程中被钉住。OID转换信息的高速缓存可以是单或多层的,并且可以部分或完全地存储在处理器中的寄存器中。当存储在寄存器中时,在寄存器需要用作其它目的时,转换信息可以溢出寄存器,并且重新加载到寄存器中。
Description
技术领域
本发明涉及把标识符转换成虚拟存储器地址。
背景技术
许多计算机程序把问题建模为相互关联的对象的集合。在执行过程中,这种程序对在计算机系统的存储器中存储为数据结构的对象执行操作。对象可以具有许多属性,包括代表与其它对象的关系的属性。当第一对象具有代表与第二对象的关系的属性时,该第一对象被称为源对象,而第二对象被称为目标对象。
用来表示代表与目标对象的关系的属性的信息被称为“引用”。对目标对象的引用存储在代表源对象的数据结构中。对于许多应用,处理对象时最常见的操作是基于源对象中所包含的对目标对象的引用来定位目标对象。这种操作被称为引用遍历。
许多程序使用称为“指针”的数据类型来引用目标对象。指针指示对应于目标对象的数据结构的存储器位置。为了允许程序访问比适合放在可用动态存储器中的更多的对象,指针通常包含目标对象的虚拟存储器地址(VMA),而不是目标对象所在的动态存储器位置的实际物理地址。当程序使用VMA作为引用的表示时,程序依赖于计算机操作系统的底层虚拟存储器机制和用于查找目标对象的物理存储器地址的硬件。
当对象在动态存储器中时,对象的VMA通常用来表示对对象的引用,因为大部分计算机具有内建的硬件查找机制和用于把VMA映射到物理存储器地址的地址转换表的高速存储器。此外,操作系统通常基于虚拟存储器访问提供高效的存储器高速缓存支持。通过采用内建的地址转换和存储器高速缓存机制,使用VMA作为对目标对象的引用导致非常高效的引用遍历。
不幸的是,VMA和物理存储器地址是动态分配的并且因此只在特定程序执行期间有效。因此,在程序的一次执行中用于目标对象的VMA可能不同于同一程序的后续执行中用于相同目标对象的VMA。类似地,任何给定的目标对象的VMA对两个同时执行的程序都不会相同。因此,在对象跨相同程序的不同执行或者跨同时执行的不同程序共享的环境中,VMA不能用作对目标对象的引用的唯一表示。
在数据库管理系统(DBMS)中,用于引用的信息必须跨所有程序执行正确地识别对象。必须提供持久地识别对象的某种唯一途径,这在本文中将被称为“对象标识符”(OID)。OID必须基于最低级的物理储存地址。因而,与对象的VMA或物理存储器地址相反,OID通常传达对象位于盘上什么地方。因此,OID通常是基于数据块ID的某种形式。例如,OID可以包括多部分的键,其指示文件编号(识别盘上储存信息的文件)或其代理以及相关块数(其对储存数据的文件中的固定大小的块的数量进行计数)。(文献中对OID的其它使用有时候描述逻辑持久性唯一ID,但是这必须最终经索引或类似结构被映射到物理储存地址)。
不像VMA,对象的OID跨所有程序执行唯一地识别对象。但是,如果OID用作对动态存储器中所存储的对象的引用,则每个遍历操作都需要把OID映射到目标对象的VMA,然后把VMA映射到目标对象的物理存储器地址。把OID映射到VMA的过程比把VMA映射到物理地址消耗显著更多的处理时间。
已经进行了各种尝试来实现关于VMA的引用遍历的效率,同时仍然能够在多个程序和同一程序的多次执行之间共享对象。一种常见的方案法使用OID作为对目前还未加载到动态存储器中的对象的引用,并且使用VMA作为对已经加载到动态存储器中的对象的引用。因此,当对象在静态存储器和动态存储器之间传输时,对对象的引用必须从一种形式转换到另一种。在外部形式和内部形式之间转换引用的过程被称为引用调和(swizzling)。
根据一种引用调和技术,当对象从盘加载到主存储器中时,该对象中所包含的所有引用都转换成VMA。由于那些引用的目标对象可能不在主存储器中,因此必须为目标对象预先分配VMA,就好像它们已经在主存储器中一样。
当对不在主存储器中的目标对象的引用被遍历时,DBMS把目标对象加载到主存储器中。为了检测这种引用遍历操作,通过以访问保护模式设置所有预先分配的VMA,DBMS可以依赖于计算机操作系统。当访问保护的VMA被访问时,计算机操作系统检测存储器访问保护违规并且产生异常。DBMS通过把期望的目标对象加载到主存储器中并且把VMA变成允许访问的模式来处理异常。
虽然保护模式的使用允许快速引用调和,但是它依赖于特殊的操作系统支持,诸如操作系统的存储器访问控制、检测以及异常处理功能。不幸的是,这些支持因平台而异,并且甚至可能在有些平台中不可用。因此,这种方案对于预期要在多个平台上使用的DBMS是不实用的。另外,因为已经为所有对象预先分配了存储器,所以存储器不能重用于其它目的。因此,使用大量对象的应用可能会耗尽存储器。
根据备选方案,每个引用是包含判别字段和变量字段的数据结构。判别字段中的值指示变量是目标对象的对象标识符还是VMA。主存储器中的每个对象具有“代用品”,其是包含引用计数、目标对象的对象标识符以及目标对象的VMA的数据结构。当DBMA把对象从盘加载到主存储器中时,对象中所包含的每个引用的判别的值最初被设置成指示对应的变量是目标对象的对象标识符。
当应用遍历引用时,DBMS确定该引用的判别指示变量是对象标识符还是VMA。如果变量是VMA,则VMA用来定位代用品。然后,存储在代用品中的VMA用来定位目标对象。
如果变量是对象标识符,则DBMS查找代用品的VMA。如果代用品存在,则引用的变量设置成代用品的VMA。引用的判别被设置成指示变量是代用品的VMA。然后,代用品的引用计数递增一。
如果代用品不存在,则目标对象从盘加载到主存储器中,为目标对象分配代用品,代用品中的对象标识符和VMA被设置成目标对象的对象标识符和VMA并且代用品的引用计数设置成零。然后,DBMS执行设置变量、设置判别以及递增引用计数的步骤,如上面所描述的那样。
当对象保存到盘时,DBMS递减被对象中的引用指向的所有代用品的引用计数。因此,在任何给定的时间,代用品的引用计数都指示有多少引用目前指向该代用品。只有当代用品的引用计数为零时,由该代用品指向的对象才可以交换到盘并且该代用品被释放。
代用品技术的一个缺点是,只要具有对对象的遍历引用的对象留在存储器中,DBMS就不能把对象交换到盘,以释放存储器。因此,关于它可以如何释放存储器以加载新引用对象,DBMS会变得显著受限。此外,递减代用品的过程对把对象存储到盘的过程添加了开销。
美国专利No.5,887,275描述了用于尝试解决这些缺点的调和引用的技术。根据该技术,如果对对象的引用之前已经用来定位第一对象,则被称为“铭牌”的数据结构基于存储在该引用中的第一VMA而被定位,其中铭牌已经与第一对象关联。
一旦铭牌已定位,则存储在该引用中的第一伪时间戳就与存储在铭牌中的第二伪时间戳比较。如果第一伪时间戳匹配第二伪时间戳,则第一对象基于存储在铭牌中的第二VMA而被定位。
如果第一伪时间戳不匹配第二伪时间戳,则第一对象基于存储在引用中的标识符而被定位。类似地,如果引用之前还没有用来定位第一对象,则第一对象基于存储在引用中的标识符而被定位。
不幸的是,即使当这种技术用于推迟或以别的方式减小与把OID转换成VMA相关联的开销时,这种转换操作也常常在调和时为了分离指针数据与实际数据而花费显著数量的CPU时间,消耗额外的存储空间,和/或添加附加的等待时间。
本部分中所描述的方案是可寻求的方案,但不一定是之前已经设想或寻求过的方案。因此,除非另外指出,否则不应当假设这部分中所描述的任何方法仅仅由于包括在这部分中而被限定为是现有技术。
附图说明
在附图中:
图1是示出根据本发明实施例向量寄存器可以如何在OID到VMA的转换操作中用作“软件TLB”的框图;
图2A-2C说明了根据本发明实施例在第一时钟周期中利用向量寄存器进行的比较;
图3A-3C说明了根据本发明实施例在第一时钟周期中利用向量寄存器进行的比较;
图4A-4B说明了根据本发明实施例在第一时钟周期中利用向量寄存器进行的比较;
图5是示出根据本发明实施例存储钉销(pin)信息的扩展高速缓存的框图;以及
图6是说明其上可实施本发明实施例的计算机系统的框图。
具体实施方式
在以下描述中,为了示范,阐述了许多具体的细节,以便提供对本发明的透彻理解。但是,很显然,本发明也可以在没有这些具体细节的情况下实施。在另一些场合,众所周知的结构和设备以框图形式示出,以避免不必要地模糊本发明。
一般概述
本文描述用于执行OID到VMA转换的技术,其方式类似于如何利用微处理器(诸如Intel x86系列)中一般实施的转换后备缓冲器(TLB)执行VMA到物理存储器地址转换。但是,因为OID的大小超过了硬件TLB的容量,所以本文描述了使用向量寄存器来实现“软件TLB”以执行OID到VMA转换的技术。
根据一实施例,因为OID不用VMA代替,所以与调和相关联的开销得以避免。相反,OID在运行时根据需要解除引用。运行时解除引用是利用一个或多个向量寄存器来比较需要解除引用的每个OID和一组高速缓存的OID来执行的。当高速缓存的OID匹配被解除引用的OID时,高速缓存的OID的VMA被从高速缓存取回。OID转换信息的高速缓存可以是单或多层的,并且可以部分或完全地存储在处理器中的寄存器中。当存储在寄存器中时,在寄存器需要用于其它目的时,转换信息可以溢出寄存器,并且重新加载到寄存器中。
VMA到物理地址转换
VMA到物理存储器地址转换通常由分层方案处理,其中第一层涉及使用“转换后备缓冲器”(TLB)。典型的TLB使用固定数量的条目把虚拟地址映射到物理地址。可以有多层TLB。例如,在一种常见的微体系架构(Intel Core2Duo)中,第一层TLB有16个条目,第二层TLB有256个条目。如果要转换的地址不在任何一层TLB中,则操作系统页表被走遍(walk),这涉及等待多个存储器访问。当页表大时,多个存储器访问会是慢的。TLB通常利用称为“内容可寻址存储器”或CAM的技术以硬件实施。
不幸的是,由于对TLB硬件的大小约束,使用硬件TLB执行OID到VMA的转换是不实用的。例如,甚至在64位处理器上,TLB通常也不支持使用全部64位用于地址,因为硬件把可以插入系统中的物理存储器的量局限到远小于2^64字节。因此,即使在64位系统中,TLB也只可以设计成处理40位的地址。相反,OID被设计成寻址大得多的存储空间。例如,OID的一种实现使用大到足以寻址2^79位(604462909807兆兆字节)的OID。
向量寄存器
许多处理器构建有能够并行地对多个字节执行相同操作的寄存器。这种寄存器通常称为“向量寄存器”。例如,处理器可以包括N个寄存器,每个寄存器为X字节。在典型的实现中,N可以是16,X可以是16、32或64。不同的值可以加载到向量寄存器中的N个寄存器的每一个当中。在相同的时钟周期期间,处理器可以对向量寄存器中的N个寄存器的每个当中的X个字节并行地执行相同的操作。
有些现有的处理器能够在每个时钟周期发布多达三个向量指令。向量指令集可以支持例如并行比较指令,其中寄存器中的所有字节同时与其它字节进行比较。如下面将更详细地描述的那样,这种向量寄存器以及可以利用其执行的并行向量操作可以用来实现用于执行OID到VMA转换的“软件TLB”。
利用向量寄存器的OID到VMA转换
图1是示出根据本发明实施例向量寄存器104可以如何在OID到VMA转换操作过程中用作“软件TLB”的框图。为了说明,将假设OID是64位地址(并且因此太大以至于不适合传统的硬件TLB)。还将假设向量寄存器104是16字节宽的,并且包括向量寄存器104的处理器能够在每个时钟周期发布三个比较指令。在这些情形下,向量寄存器104可以用来在每个周期执行96字节的比较,这将允许在每个周期对六个64位的OID执行比较操作。
虽然在本文中将提供特殊的OID和向量寄存器大小的例子,但是本文所述的技术不限于任何特定的OID大小寸或格式,也不限于向量寄存器中寄存器的任何特定数量或大小。向量寄存器中寄存器的数量越大,并且个体寄存器的大小越大,可以在任何给定时钟周期中并行比较的OID的数量就越大。
再次参考图1,还示出了具有16个OID/VMA对的高速缓存102。每个OID/VMA对包括一个OID和一个VMA,其每个都对应于相同的对象。具体而言,OID/VMA对的VMA指示虚拟存储器中对象的实例的位置,OID/VMA对的OID指示同一对象的持久性存储位置。此外,每个OID/VMA对的VMA和OID驻留在高速缓存102中的相同索引位置处。例如,VMA1和OID1对应于相同的对象,并且二者都驻留在高速缓存102中的索引位置1处。
在OID到VMA转换操作过程中,来自高速缓存102的OID值加载到向量寄存器104中,并且与被解除引用的OID(“目标”OID)进行比较。例如,假设目标OID是OIDX。为了确定持久地位于OIDX处的对象的VMA,来自高速缓存102的OID被加载到向量寄存器104中并且可以与OIDX进行比较。
因为OID大于一字节,所以高速缓存102中16个OID中的每个都不能地简单地加载到向量寄存器104中的16字节之一中。相反,在一实施例中,来自高速缓存102的适合放在向量寄存器104中的那么多的OID被加载到向量寄存器104中。在本例中,OID是64位并且向量寄存器104是16字节,因此在任何给定时刻,两个OID适合放在向量寄存器104中。
因为一次有两个OID适合放在向量寄存器104中,并且向量寄存器104所属的处理器能够每个时钟周期执行三个比较,所以在每个时钟周期期间有来自高速缓存102的六个OID可以对照目标OID进行比较。例如,图2A-2C说明了第一时钟周期期间所作的比较。具体而言,图2A说明在第一时钟周期期间OID1和OID2对照OIDX进行比较。图2B说明仍然在第一时钟周期期间OID3和OID4对照OIDX进行比较。最后,图2C说明仍然在第一时钟周期期间OID5和OID6对照OIDX进行比较。类似地,图3A-3C说明在第二时钟周期期间OID7-OID12对照OIDX进行比较。图4A-4B说明在第三时钟周期期间OID13-OID16对照OIDX进行比较。
如果高速缓存102中有任何OID匹配OIDX,则匹配OID的索引用来在高速缓存102中定位对应于该匹配OID的对象的VMA。例如,如果OID3匹配OIDX,则索引值3用来在高速缓存102中定位VMA3。然后,VMA3用来在易失性存储器中定位对应的对象。
本文所述的技术不限于使用虚拟存储器地址在易失性存储器中定位对象的任何特定方式。例如,传统的硬件TLB可以用来把(从软件TLB获得的)VMA转换成物理地址,然后该物理地址可以由处理器用来访问物理存储器中的对象。
得出索引值
在图1所说明的实施例中,当来自高速缓存102的OID匹配目标OID时,匹配OID的索引值用来在高速缓存102中定位对应的VMA。但是,取决于向量寄存器104如何实现,利用向量寄存器104执行的OID与OID的比较不直接产生匹配OID的索引值。
例如,在向量寄存器104的一种实现中,OID到OID的比较在OID匹配的每个字节中产生十六进制值0xFF,在OID不匹配的每个字节中产生十六进制值0x00。因而,与匹配目标OID的OID的比较操作将产生8字节的0xFF。
各种附加指令可以用来从比较操作的结果得出匹配的索引值。例如,在一种处理器实现中(Intel SSE),提供了用于打包字节的指令(PACKSSDW,PACKSSWB),并且提供了用于把包含值0xFF的字节转换成通用寄存器中的设置位的指令(PMOVMSKB)。利用这些指令,由每个OID到OID比较产生的8个字节可以压缩成4个字节,然后从4个字节压缩成2个字节,然后从2个字节压缩成1个字节。一旦每个比较都由单个字节表示,那些字节的值就可以转换成通用寄存器中的位。转换通过16个高速缓存的OID的比较产生的结果的字节将产生通用寄存器中的16位的串,其中用于匹配的OID的位将是1,并且用于所有其它OID的位将是0。
为了从位数组获得索引值,位数组被扫描,直到遇到第一个设置位。位数组中的第一个设置位的位置是用于查找高速缓存102中的对应VMA的索引值。例如,如果OID3匹配OIDX,则通过比较和压缩操作产生的位数组将是“0010000000000000”。通过扫描该位数组,可以确定第一个设置位在位置3,因此3用作在高速缓存102中定位VMA3的索引。
在使用上述技术得出索引值的实施例中,OID到VMA映射操作可以如下执行:
·使用向量寄存器执行高速缓存中的OID和目标OID之间的比较
·把8个字节的结果打包成4个字节的结果
·把4个字节的结果打包成2个字节的结果
·把2个字节的结果打包成1个字节的结果
·把设置字节转换成单个通用寄存器中对应的位
·扫描该通用寄存器,以找出第一个设置位
·使用第一个设置位的位置作为在高速缓存中找出VMA的索引
利用传统的硬件,这些步骤中除初始的OID对OID比较之外的每个步骤都可以在单个时钟周期中执行。因而,整个OID到VMA转换会花费7-10个时钟周期,相对于与实际访问有可能在较慢的高速缓存或主存储器中的被引用数据相关联的开销,这显著更低。
高速缓存未命中和替换技术
在图1所说明的例子中,单层高速缓存用来实现用于执行OID到VMA转换的软件TLB。但是,软件TLB可以利用多层高速缓存实现,其中,如果第一层高速缓存中没有OID匹配目标OID,则第二层高速缓存中的OID对照目标OID进行比较。通常,第二和后续的高速缓存层比第一层高速缓存102更大,但访问起来效率更低。例如,高速缓存102可以驻留在处理器上相对小的高速存储器中,而第二层高速缓存可以驻留在处理器上或之外的较慢的高速缓存中或者在主存储器中。
如果目标OID不匹配软件TLB中的任何OID,则与目标OID关联的VMA通过其它方式诸如索引搜索而被确定。在确定其OID不驻留在高速缓存102中的对象的VMA后,用于那个对象的OID/VMA组合可以被添加到高速缓存102,以提高涉及那个对象的后续解除引用操作的效率。如果高速缓存102被填满,则目前驻留在高速缓存102中的OID/VMA组合可以利用新的OID/VMA组合代替。
多种替换技术中的任何一种都可以用来确定高速缓存102中哪个OID/VMA组合要被新的OID/VMA组合替换。例如,已经驻留在高速缓存102中最长时间的OID/VMA组合可以被新OID/VMA组合替换。这可以通过以循环(round robin)方式替换高速缓存102中的条目来实现。作为替代,对OID/VMA组合的访问可以被跟踪,并且访问次数最少或者最近最少访问的OID/VMA组合可以被选择来供替换。在备选实施例中,替换技术考虑多种因素,包括访问的频率、访问的新旧程度以及在高速缓存102中的年龄。
高速缓存钉销信息
本文所述的软件TLB技术可以用在其中到持久性存储器中的项的地址需要转换成那些项在易失性存储器中的实例的地址的任何语境中。软件TLB可以使用的一个语境是数据库环境,其中OID是持久存储在数据库中的项。在这种语境下,附加的益处可以通过除了OID/VMA组合之外还在高速缓存102中高速缓存信息来得到。
例如,图5是示出根据本发明实施例的扩展高速缓存502的框图。除OID/VMA组合之外,扩展的高速缓存502还包含由数据库系统用来管理对对应对象的访问的钉销值。
数据库通常维护持久性数据的存储器高速缓存。常常被称为“缓冲器高速缓存”的存储器高速缓存保持来自DRAM中的持久性存储介质(例如,盘驱动器)的块的拷贝,它比持久性储存器访问起来更快。“钉销”是有些数据库服务器用来确保缓冲器高速缓存中的块在其仍然在使用的时候不被页溢出到缓冲器高速缓存之外的数据结构。
根据图5中所说明的实施例,当目标OID最初被解除引用时,(a)用于OID/VMA组合的条目被添加到高速缓存502,并且(b)对应于目标OID的页面在缓冲器高速缓存中被钉住。另外,添加到高速缓存502的条目不仅包括OID/VMA组合,还包括对应的钉销。
例如,假设高速缓存502最初不包含用于OID3的条目。响应于对OID3解除引用,对应于OID3的页面被钉在缓冲器高速缓存中,并且包含OID3、VMA3和PIN3的条目被添加到高速缓存502。
根据一种实施例,钉销被传递到使解除引用操作将被执行的过程。当那个过程利用被解除引用的OID指向的对象进行时,该过程把这个钉销传递到“释放”函数,以指示该过程不再使用那个对象。只要有任何过程在缓冲器高速缓存中保持对对象的钉销,该对象就不被认为是要替换的候选。当所有过程都已经释放对一个对象的钉销时,该对象变成缓冲器高速缓存中要替换的候选。
根据另一实施例,对缓冲器高速缓存中的每个只读快照页面维持钉销的时间与高速缓存502中用于只读快照页面的OID/VMA组合的时间一样长。响应于在高速缓存502中OID/VMA组合被用于更近使用的OID/VMA组合的条目替换,对对应的只读快照页面的钉销被释放。
寄存器溢出
在程序的编译过程中,各种情形可能造成编译器生成把寄存器的内容溢出到其它存储器诸如处理器堆栈的代码。例如,C编译器通常在处理器堆栈上为函数的局部变量分配空间,该堆栈通常存储在处理器的主存储器中。C编译器通过在寄存器中存储这些变量的值的另一个拷贝来优化对它们的访问。不幸的是,函数使用的变量个数可能超过可用于高速缓存那些变量的拷贝的寄存器的个数。例如,假设函数有四个局部变量,并且处理器只有用于同时存储这四个变量中的两个的拷贝的寄存器空间。在这种情形下,编译器最初会在寄存器中存储函数所使用的前两个变量的拷贝。当另两个变量中任何一个需要使用时,编译器可以生成使前两个变量中一个“寄存器溢出”的代码。
具体而言,当所有寄存器都被使用并且编译器需要新的寄存器供特定变量使用时,存储代表另一个变量的数据的现有寄存器经寄存器溢出而被重用,在这个过程中,该寄存器的数据(可能已经被更新)利用用于该变量的引用值写回到堆栈中。由编译器实现的溢出策略通常确定目前存储在寄存器中的哪些变量应当溢出,以便为新的变量腾出空间。
一般而言,编译器设计成具有尝试在寄存器中保持最有用信息的溢出策略。但是,最有用的信息依赖于编译器为其生成代码的程序部分。例如,如果特定变量在程序的循环中被访问,则当编译用于那个循环的代码时,编译器可以生成防止那个特定变量从寄存器溢出的代码。但是,在用于执行那个循环的代码之外,相同变量可能是不需要的。因此,在编译用于该循环的代码之后,编译器可以生成用于把那个变量溢出到程序堆栈上的代码,以便为其它变量腾出空间。
如下文中将更详细描述的那样,由OID到VMA的转换产生的VMA可以以与局部变量相同的方式存储在寄存器中,以避免每次引用特定对象时都需要执行OID到VMA转换。在将VMA储存在寄存器中的实施例中,编译器的寄存器溢出过程可以被重用,以便智能地从寄存器溢出由STLB转换产生的VMA并且将其重新加载到寄存器中。
在寄存器中存储虚拟存储器地址
在一实施例中,一旦利用向量寄存器104执行了OID到VMA转换操作,所得VMA就存储在处理器中的通用寄存器中。在在寄存器中存储VMA之后,对对应对象的后续访问可以直接使用该寄存器中的VMA,而不是每次都使用软件TLB执行OID到VMA转换。在这种实施例中,解除引用操作是按阶段执行的,其中第一阶段涉及确定VMA是否已经在寄存器中。如果VMA不在寄存器中,则执行第二阶段,其中确定VMA是否已经溢出寄存器但仍然可用。如果VMA已经溢出寄存器,则VMA可以被重新加载和使用。
如果VMA既不在寄存器中也不可用于重新加载到寄存器中,则软件TLB用来确定用于目标OID的OID/VMA条目是否被高速缓存。如果没有用于目标OID的OID/VMA条目被高速缓存,则其它性能不太高的手段被用来确定用于目标OID的VMA。
如以上所提到的,会出现用来存储VMA的寄存器需要用作其它用途的情形,诸如存储被调用的函数的变量。为了给被调用的函数的变量腾出空间,编译器可以配置为,以编译器从寄存器溢出变量以便给其它变量腾出空间相同的方式,在可能重写寄存器的函数调用之前溢出寄存器中的VMA。然后,在从那个函数返回后,VMA可以重新加载到寄存器中。
在对其VMA已经存储在寄存器中的对象进行引用的情况下,VMA可以直接使用,而不造成利用软件TLB执行OID到VMA转换的开销。例如,在向量寄存器104已经用来确定OID3映射到VMA3之后,VMA3可以存储在寄存器中。只要VMA3留在寄存器中,VMA3就可以直接从寄存器获得,以处理对VMA3的后续引用。直接从寄存器获得VMA3比利用软件TLB把OID3转换成VMA3快得多。但是,没有足够的寄存器空间来存储所有的OID到VMA转换。因此,在寄存器中,最近最少访问或者访问次数最少的OID的VMA被溢出,以便为更近或访问次数更多的OID的VMA腾出空间。
处理器支持
虽然本文所述的技术可以利用提供向量寄存器的传统处理器来实现,但是处理器可以被修改,以利用软件TLB进一步提高OID到VMA转换的效率。例如,处理器可以设计成与常规处理器当前所需的相比,支持以更少的时钟周期执行OID到VMA转换操作。在一实施例中,处理器可以设计成具有包括专门用于执行OID到VMA转换的指令的指令集合。根据用来实现指令的硬件,OID到VMA操作可以减小到单个时钟周期。此外,处理器可以设计成具有专用于和/或专门设计成用于执行OID到VMA转换操作所需的操作的向量寄存器。
硬件概述
根据一实施例,本文所述的技术是由一个或多个专用计算设备实现的。专用计算设备可以硬连线为执行所述技术,或者可以包括持久性编程为执行所述技术的诸如一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)的数字电子设备,或者可以包括按照固件、存储器、其它储存器或者其组合中的程序指令编程为执行所述技术的一个或多个通用硬件处理器。这种专用计算设备还可以结合具有实现所述技术的定制编程的定制硬连线逻辑、ASIC或FPGA。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、联网设备或者为了实现所述技术而结合硬连线和/或程序逻辑器的任何其它设备。
例如,图6是说明其上可实现本发明实施例的计算机系统600的框图。计算机系统600包括用于传送信息的总线602或者其它通信机构,以及与总线602耦合的、用于处理信息的硬件处理器604。硬件处理器604可以是例如通用微处理器。
计算机系统600还包括耦合到总线602的用于存储信息和要由处理器604执行的指令的主存储器,诸如随机存取存储器(RAM)或者其它动态存储设备。主存储器606还可以用于在要由处理器604执行的指令的执行过程中存储临时变量或其它中间信息。当存储在处理器604可访问的存储介质中时,这种指令使计算机系统600成为定制成执行指令中所规定的操作的专用机器。
计算机系统600还包括耦合到总线602的、用于存储用于处理器604的静态信息和指令的只读存储器(ROM)608或者其它静态存储设备。存储设备610,诸如磁盘或光盘,被提供并耦合到总线602,用于存储信息和指令。
计算机系统600可以经总线602耦合到显示器612,诸如阴极射线管(CRT),用于向计算机用户显示信息。包括字母数字和其它键的输入设备614耦合到总线602,用于向处理器604传送信息和命令选择。另一种类型的用户输入设备是光标控制器616,诸如鼠标、轨迹球或者光标方向键,用于向处理器604传送方向信息和命令选择并且用于控制显示器612上的光标运动。这种输入设备通常具有两个轴中的两个自由度,第一个轴(例如,x)和第二个轴(例如,y),这允许设备在平面中规定位置。
计算机系统600可以利用定制的硬连线逻辑器、一个或多个ASIC或FPGA、固件和/或程序逻辑器实现本文所述的技术,这些与计算机系统系统结合,使计算机系统500或者编程计算机系统600成为专用机器。根据一种实施例,响应于处理器604执行主存储器606中所包含的一条或多条指令的一个或多个序列,本文所述的技术由计算机系统600执行。这种指令可以从另一个存储介质,诸如存储设备610,读到主存储器606中。主存储器606中所包含的指令序列的执行使处理器604执行本文所述的步骤。在备选实施例中,硬连线的电路系统可以代替软件指令或者与之结合使用。
如在本文中所使用的,术语“存储介质”指存储使机器以特殊方式操作的数据和/或指令的任何介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括,例如,光或磁盘,诸如存储设备610。易失性介质包括动态存储器,诸如主存储器606。存储介质的常见形式包括,例如,软盘、柔性盘、硬盘、固态驱动器、磁带、或者任何其它磁性数据存储介质,CD-ROM、任何其它光学数据存储介质、任何具有孔模式的物理介质、RAM、PROM及EPROM、FLASH-EPROM、NVRAM、任何其它存储器芯片或磁带盒。
存储介质与传输介质不同但是可以与其结合使用。传输介质参与在存储介质之间传输信息。例如,传输介质包括同轴电缆、铜线和光纤,包括包括总线602的电线。传输介质还可以采取声波或光波的形式,诸如在无线电波和红外线数据通信过程中生成的那些波。
各种形式的介质可以在把一个或多个指令的一个或多个序列携带到处理器604以供执行的时候涉入其中。例如,指令可以最初在磁盘或远端计算机的固态驱动器上携带。远端计算机可以把指令加载到其动态存储器中并且利用调制解调器经电话线发送指令。计算机系统600本地的调制解调器可以在电话线上接收数据并且使用红外线发送器把数据转换成红外线信号。红外线探测器可以接收在红外线信号中携带的数据并且合适的电路系统可以把数据放到总线602上。总线602把数据携带到主存储器606,处理器604从其检索并执行指令。在被处理器604执行之前或之后,主存储器606接收到的指令可以可选地存储在存储设备610上。
计算机系统600还包括耦合到总线602的通信接口618。通信接口618提供耦合到网络链路620的双向数据通信,其中网络链路620连接到本地网络622。例如,通信接口618可以是综合业务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器,或者向对应类型的电话线路提供数据通信连接的调制解调器。作为另一个例子,通信接口618可以是向兼容的LAN提供数据通信连接的局域网(LAN)卡。无线链路也可以实现。在任何这种实现中,通信接口618发送并接收携带代表各种类型信息的数字数据流的电、电磁或光信号。
网络链路620通常通过一个或多个网络向其它数据设备提供数据通信。例如,网络链路620可以通过局域网622向主机计算机624或者向由互联网服务提供商(ISP)626运营的数据设备提供链接。ISP626又通过全球范围的分组数据通信网络,现在通常称为“互联网”628,提供数据通信服务。局部网622和互联网628都使用携带数字数据流的电、电磁或光信号。通过各种网络的信号和网络链路620上并且通过通信接口618的信号是传输介质的示例形式,其中通信接口把数字数据携带到计算机系统600并且从其携带数字数据。
计算机系统600可以通过网络、网络链路620和通信接口618发送消息和接收数据,包括程序代码。在互联网例子中,服务器630可以通过互联网628、ISP626、局部网622和通信接口618发送所请求的用于应用程序的代码。
所接收到的代码可以由处理器604在接收到的时候执行,和/或存储在存储设备610或其它非易失性储存器中,用于以后执行。
在以上说明书中,已经参考众多具体细节描述了本发明的实施例,对于不同的实现,这些细节会有所变化。因此,说明书和附图要在说明性而不是约束性的意义上考虑。本发明范围的唯一和排它指示,以及本申请人预期要作为本发明范围的内容,是以权利要求发布的具体形式从本申请发布的权利要求集合的文字及其等效范围,包括任何后续的修正。应当指出,对各种实施例的修改和变化是预期的。修改可以基于,例如,不同期望的或所需的操作特性。变化可以包括所要求保护的特征的组合。
Claims (23)
1.一种用于对目标持久性位置标识符解除引用的方法,该方法包括:
维持转换信息的高速缓存;
其中,所述转换信息把多个高速缓存的持久性位置标识符中的每一个与多个虚拟存储器地址中的对应一个相关联;
其中,所述多个高速缓存的持久性位置标识符中的每一个指示对应的项存储在持久性储存器中的位置;
其中,所述多个虚拟存储器地址中的每一个指示所述对应的项的实例存储在虚拟存储器中的位置;
利用向量寄存器并行地执行多个比较;
其中,所述多个比较中的每个比较都将所述目标持久性位置标识符与所述多个高速缓存的持久性位置标识符中的一个进行比较;
响应于所述多个比较中的一个比较得到所述目标持久性位置标识符与所述多个高速缓存的持久性位置标识符中的特定的持久性位置标识符之间的匹配,利用与所述特定的持久性位置标识符相关联的虚拟存储器地址来访问与所述目标持久性位置标识符相关联的项的实例。
2.如权利要求1所述的方法,其中:
所述向量寄存器包括多个固定大小的寄存器;且
当相应的持久性位置标识符与所述目标持久性位置标识符比较时,所述固定大小的寄存器中的两个或更多个被用来存储所述相应的持久性位置标识符。
3.如权利要求1所述的方法,还包括压缩所述多个比较的结果,直到每个比较操作的结果由位数组中的单个位表示。
4.如权利要求3所述的方法,还包括:
扫描所述位数组,以确定数组内指示匹配的特定位的位置;以及
利用所述特定位的位置作为到包含所述多个虚拟存储器地址的数组的索引,来定位与所述特定的持久性位置标识符相关联的虚拟存储器地址。
5.如权利要求1所述的方法,其中:
所述向量寄存器没有大到足以同时存储所述多个高速缓存的持久性位置标识符中的全部;
所述多个比较将所述目标持久性位置标识符与所述多个高速缓存的持久性位置标识符的第一子集进行比较;且
所述方法还包括使用所述向量寄存器来并行地执行第二多个比较,其中所述第二多个比较将所述目标持久性位置标识符与所述多个高速缓存的持久性位置标识符的第二子集进行比较。
6.如权利要求1所述的方法,其中:
维持转换信息的高速缓存包括在与相同的索引值对应的位置处存储:
a)所述多个高速缓存的持久性位置标识符中的每个高速缓存的持久性位置标识符,以及
b)与所述每个高速缓存的持久性位置标识符相关联的虚拟存储器地址。
7.如权利要求6所述的方法,其中:
用于所述多个高速缓存的持久性位置标识符的条目存储在第一高速缓存中;
所述方法还包括在第二高速缓存中钉住与给定的持久性位置标识符对应的项与用于所述给定的持久性位置标识符的条目在所述第一高速缓存中一样长的时间。
8.如权利要求1所述的方法,其中:
所述目标持久性位置标识符是用于特定的项的;
解除对所述目标持久性位置标识符的引用是由特定过程请求的;
对所述特定的项的钉销被存储在与所述目标持久性位置标识符对应的高速缓存条目中;且
所述特定过程把所述钉销传递到释放函数以指示该特定过程不再使用所述特定的项。
9.如权利要求1所述的方法,其中:
所述特定的持久性位置标识符是用于特定的页面的;
维持所述转换信息的高速缓存包括在高速缓存中存储把所述多个高速缓存的持久性位置标识符与所述多个虚拟存储器地址相关联的条目;
所述方法还包括:
维持对所述特定的页面的只读快照的钉销与用于所述特定的持久性位置标识符的条目在所述高速缓存中一样长的时间;以及
响应于用于所述特定的持久性位置标识符的条目在所述高速缓存中被替换,对所述特定的页面的只读快照解除钉销。
10.如权利要求1所述的方法,还包括:
在使用所述向量寄存器来执行所述多个比较之前,确定所述目标持久性位置标识符的转换不在寄存器中;以及
其中,使用所述向量寄存器来执行所述多个比较的步骤是响应于确定所述目标持久性位置标识符不在所述寄存器中而执行的。
11.如权利要求1所述的方法,其中,维持所述转换信息的高速缓存包括在寄存器中存储用于一个或多个持久性位置标识符的转换信息,以及将编译器配置为:
响应于使用所述寄存器用于另一目的,将所述转换信息溢出到高速缓存中;以及
在所述寄存器已经用于该另一目的之后,把所述转换信息重新加载到所述寄存器中。
12.一种用于对目标持久性位置标识符解除引用的装置,包括一个或多个处理器和储存器,该装置被配置为执行如权利要求1-11中的任何一项所述的方法。
13.一种用于对目标持久性位置标识符解除引用的系统,该系统包括:
用于维持转换信息的高速缓存的装置;
其中,所述转换信息把多个高速缓存的持久性位置标识符中的每一个与多个虚拟存储器地址中的对应一个相关联;
其中,所述多个高速缓存的持久性位置标识符中的每一个指示对应的项存储在持久性储存器中的位置;
其中,所述多个虚拟存储器地址中的每一个指示所述对应的项的实例存储在虚拟存储器中的位置;
用于利用向量寄存器并行地执行多个比较的装置;
其中,所述多个比较中的每个比较都将所述目标持久性位置标识符与所述多个高速缓存的持久性位置标识符中的一个进行比较;
用于响应于所述多个比较中的一个比较得到所述目标持久性位置标识符与所述多个高速缓存的持久性位置标识符中的特定的持久性位置标识符之间的匹配,利用与所述特定的持久性位置标识符相关联的虚拟存储器地址来访问与所述目标持久性位置标识符相关联的项的实例的装置。
14.如权利要求13所述的系统,其中:
所述向量寄存器包括多个固定大小的寄存器;且
当相应的持久性位置标识符与所述目标持久性位置标识符比较时,所述固定大小的寄存器中的两个或更多个被用来存储所述相应的持久性位置标识符。
15.如权利要求13所述的系统,还包括用于压缩所述多个比较的结果,直到每个比较操作的结果由位数组中的单个位表示的装置。
16.如权利要求15所述的系统,还包括:
用于扫描所述位数组,以确定数组内指示匹配的特定位的位置的装置;以及
用于利用所述特定位的位置作为到包含所述多个虚拟存储器地址的数组的索引,来定位与所述特定的持久性位置标识符相关联的虚拟存储器地址的装置。
17.如权利要求13所述的系统,其中:
所述向量寄存器没有大到足以同时存储所述多个高速缓存的持久性位置标识符中的全部;
所述多个比较将所述目标持久性位置标识符与所述多个高速缓存的持久性位置标识符的第一子集进行比较;且
所述系统还包括用于使用所述向量寄存器来并行地执行第二多个比较的装置,其中所述第二多个比较将所述目标持久性位置标识符与所述多个高速缓存的持久性位置标识符的第二子集进行比较。
18.如权利要求13所述的系统,其中:
用于维持转换信息的高速缓存的装置在与相同的索引值对应的位置处存储:
a)所述多个高速缓存的持久性位置标识符中的每个高速缓存的持久性位置标识符,以及
b)与所述每个高速缓存的持久性位置标识符相关联的虚拟存储器地址。
19.如权利要求18所述的系统,其中:
用于所述多个高速缓存的持久性位置标识符的条目存储在第一高速缓存中;
所述系统还包括用于在第二高速缓存中钉住与给定的持久性位置标识符对应的项与用于所述给定的持久性位置标识符的条目在所述第一高速缓存中一样长的时间的装置。
20.如权利要求13所述的系统,其中:
所述目标持久性位置标识符是用于特定的项的;
解除对所述目标持久性位置标识符的引用是由特定过程请求的;
对所述特定的项的钉销被存储在与所述目标持久性位置标识符对应的高速缓存条目中;且
所述特定过程把所述钉销传递到释放函数以指示该特定过程不再使用所述特定的项。
21.如权利要求13所述的系统,其中:
所述特定的持久性位置标识符是用于特定的页面的;
用于维持所述转换信息的高速缓存的装置在高速缓存中存储把所述多个高速缓存的持久性位置标识符与所述多个虚拟存储器地址相关联的条目;
所述系统还包括:
用于维持对所述特定的页面的只读快照的钉销与用于所述特定的持久性位置标识符的条目在所述高速缓存中一样长的时间的装置;以及
用于响应于用于所述特定的持久性位置标识符的条目在所述高速缓存中被替换,对所述特定的页面的只读快照解除钉销的装置。
22.如权利要求13所述的系统,还包括:
用于在使用所述向量寄存器来执行所述多个比较之前,确定所述目标持久性位置标识符的转换不在寄存器中的装置;以及
其中,使用所述向量寄存器来执行所述多个比较是响应于确定所述目标持久性位置标识符不在所述寄存器中而执行的。
23.如权利要求13所述的系统,其中,用于维持所述转换信息的高速缓存的装置在寄存器中存储用于一个或多个持久性位置标识符的转换信息,以及将编译器配置为:
响应于使用所述寄存器用于另一目的,将所述转换信息溢出到高速缓存中;以及
在所述寄存器已经用于该另一目的之后,把所述转换信息重新加载到所述寄存器中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/283,199 US9569369B2 (en) | 2011-10-27 | 2011-10-27 | Software translation lookaside buffer for persistent pointer management |
US13/283,199 | 2011-10-27 | ||
PCT/US2012/061451 WO2013062948A1 (en) | 2011-10-27 | 2012-10-23 | Software translation lookaside buffer for persistent pointer management |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103959257A CN103959257A (zh) | 2014-07-30 |
CN103959257B true CN103959257B (zh) | 2016-10-12 |
Family
ID=47144144
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280059780.6A Active CN103959257B (zh) | 2011-10-27 | 2012-10-23 | 用于持久性指针管理的软件转换后备缓冲器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9569369B2 (zh) |
EP (1) | EP2771794B1 (zh) |
CN (1) | CN103959257B (zh) |
WO (1) | WO2013062948A1 (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015114644A1 (en) * | 2014-01-30 | 2015-08-06 | Hewlett-Packard Development Company, L.P. | Persistent pointers for programs running on nvram based computers |
WO2016095156A1 (en) * | 2014-12-18 | 2016-06-23 | Intel Corporation | Translation cache closure and persistent snapshot in dynamic code generating system software |
US9870322B2 (en) * | 2015-11-12 | 2018-01-16 | International Business Machines Corporation | Memory mapping for object-based storage devices |
US9886393B2 (en) | 2016-04-13 | 2018-02-06 | At&T Mobility Ii Llc | Translation lookaside buffer switch bank |
US9703603B1 (en) * | 2016-04-25 | 2017-07-11 | Nxp Usa, Inc. | System and method for executing accelerator call |
US20170371654A1 (en) * | 2016-06-23 | 2017-12-28 | Advanced Micro Devices, Inc. | System and method for using virtual vector register files |
US10552164B2 (en) | 2017-04-18 | 2020-02-04 | International Business Machines Corporation | Sharing snapshots between restoration and recovery |
US10572265B2 (en) | 2017-04-18 | 2020-02-25 | International Business Machines Corporation | Selecting register restoration or register reloading |
US10540184B2 (en) | 2017-04-18 | 2020-01-21 | International Business Machines Corporation | Coalescing store instructions for restoration |
US10489382B2 (en) | 2017-04-18 | 2019-11-26 | International Business Machines Corporation | Register restoration invalidation based on a context switch |
US10838733B2 (en) | 2017-04-18 | 2020-11-17 | International Business Machines Corporation | Register context restoration based on rename register recovery |
US10545766B2 (en) | 2017-04-18 | 2020-01-28 | International Business Machines Corporation | Register restoration using transactional memory register snapshots |
US10649785B2 (en) | 2017-04-18 | 2020-05-12 | International Business Machines Corporation | Tracking changes to memory via check and recovery |
US10740108B2 (en) | 2017-04-18 | 2020-08-11 | International Business Machines Corporation | Management of store queue based on restoration operation |
US10963261B2 (en) | 2017-04-18 | 2021-03-30 | International Business Machines Corporation | Sharing snapshots across save requests |
US11010192B2 (en) | 2017-04-18 | 2021-05-18 | International Business Machines Corporation | Register restoration using recovery buffers |
US10782979B2 (en) | 2017-04-18 | 2020-09-22 | International Business Machines Corporation | Restoring saved architected registers and suppressing verification of registers to be restored |
US10564977B2 (en) | 2017-04-18 | 2020-02-18 | International Business Machines Corporation | Selective register allocation |
US11188315B1 (en) | 2020-09-04 | 2021-11-30 | Huawei Technologies Co., Ltd. | Method and apparatus for reusable and relative indexed register resource allocation in function calls |
CN116244216B (zh) * | 2023-03-17 | 2024-03-01 | 摩尔线程智能科技(北京)有限责任公司 | 缓存控制方法、装置、缓存行结构、电子设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5426747A (en) * | 1991-03-22 | 1995-06-20 | Object Design, Inc. | Method and apparatus for virtual memory mapping and transaction management in an object-oriented database system |
US5895501A (en) * | 1996-09-03 | 1999-04-20 | Cray Research, Inc. | Virtual memory system for vector based computer systems |
CN101236512A (zh) * | 2006-09-27 | 2008-08-06 | 英特尔公司 | 在微处理器上使能多指令流/多数据流扩展 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5887275A (en) | 1996-02-08 | 1999-03-23 | Oracle Corporation | Method and apparatus for locating a first set of data using a global identifier and a virtual addressing data structure |
US7065145B2 (en) * | 2001-06-05 | 2006-06-20 | Lucent Technologies Inc. | Digital carrierless amplitude and phase modulation (CAP) transmitter using vector arithmetic structure (VAS) |
US20040054867A1 (en) * | 2002-09-13 | 2004-03-18 | Paulus Stravers | Translation lookaside buffer |
US7447868B2 (en) | 2005-06-15 | 2008-11-04 | International Business Machines Corporation | Using vector processors to accelerate cache lookups |
US7761486B2 (en) * | 2006-01-03 | 2010-07-20 | Oracle America, Inc. | Memory management system that supports both address-referenced objects and identifier-referenced objects |
WO2008057557A2 (en) * | 2006-11-06 | 2008-05-15 | Rambus Inc. | Memory system supporting nonvolatile physical memory |
-
2011
- 2011-10-27 US US13/283,199 patent/US9569369B2/en active Active
-
2012
- 2012-10-23 EP EP12783470.3A patent/EP2771794B1/en active Active
- 2012-10-23 CN CN201280059780.6A patent/CN103959257B/zh active Active
- 2012-10-23 WO PCT/US2012/061451 patent/WO2013062948A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5426747A (en) * | 1991-03-22 | 1995-06-20 | Object Design, Inc. | Method and apparatus for virtual memory mapping and transaction management in an object-oriented database system |
US5895501A (en) * | 1996-09-03 | 1999-04-20 | Cray Research, Inc. | Virtual memory system for vector based computer systems |
CN101236512A (zh) * | 2006-09-27 | 2008-08-06 | 英特尔公司 | 在微处理器上使能多指令流/多数据流扩展 |
Also Published As
Publication number | Publication date |
---|---|
CN103959257A (zh) | 2014-07-30 |
US9569369B2 (en) | 2017-02-14 |
EP2771794B1 (en) | 2016-05-18 |
EP2771794A1 (en) | 2014-09-03 |
WO2013062948A1 (en) | 2013-05-02 |
US20130111151A1 (en) | 2013-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103959257B (zh) | 用于持久性指针管理的软件转换后备缓冲器 | |
US10628063B2 (en) | Implementing scalable memory allocation using identifiers that return a succinct pointer representation | |
US7072919B2 (en) | Method for performing data migration | |
CN1272714C (zh) | 数据处理系统内分配和访问存储映像工具的方法、设备和系统 | |
CN100399300C (zh) | 用于数据处理的系统和方法和用于分配资源的系统和方法 | |
CN1129076C (zh) | 多处理器系统高速缓冲存储器的测试方法 | |
Jacob et al. | Virtual memory: Issues of implementation | |
US7383414B2 (en) | Method and apparatus for memory-mapped input/output | |
CN101689146B (zh) | 分层的高速缓存标签架构 | |
US7136887B2 (en) | Method and mechanism for finding references in a card in time linear in the size of the card in a garbage-collected heap | |
CN107844266A (zh) | 使用映射表的缓冲区分配和存储器管理 | |
CN1307561C (zh) | 不同高速缓存级上具有关联集重叠同余组的多级高速缓存 | |
US20040111573A1 (en) | Better placement of objects reachable from outside a generation managed by the train algorithm | |
US20080270454A1 (en) | NUMA System Resource Descriptors Including Performance Characteristics | |
WO2014031416A2 (en) | Hardware implementation of the aggregation/group by operation: hash-table method | |
US7249235B2 (en) | Architecture for a scalable and user-extensible heap dump analysis tool | |
CN105900076A (zh) | 用于处理多个交易的数据处理系统及方法 | |
JP2002519765A (ja) | トランザクションデータの高速記憶常駐処理方法および処理システム | |
US7080382B2 (en) | Accessing shorter-duration instances of activatable objects based on object references stored in longer-duration memory | |
CN1140500A (zh) | 分布式数据库系统 | |
Ashkiani et al. | GPU LSM: A dynamic dictionary data structure for the GPU | |
CN108959113A (zh) | 用于闪存感知堆存储器管理的方法和系统 | |
US20040024729A1 (en) | Method and system for storing sparse data in memory and accessing stored sparse data | |
US7107430B2 (en) | Mechanism to reduce the cost of forwarding pointer aliasing | |
US6564223B1 (en) | Method and article for managing references to external objects in a runtime environment |
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 |