CN103890856B - 支持内存储数据结构的可移位存储器 - Google Patents

支持内存储数据结构的可移位存储器 Download PDF

Info

Publication number
CN103890856B
CN103890856B CN201180074415.8A CN201180074415A CN103890856B CN 103890856 B CN103890856 B CN 103890856B CN 201180074415 A CN201180074415 A CN 201180074415A CN 103890856 B CN103890856 B CN 103890856B
Authority
CN
China
Prior art keywords
data
memory
data structure
bit memory
removable bit
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
Application number
CN201180074415.8A
Other languages
English (en)
Other versions
CN103890856A (zh
Inventor
G.格雷夫
T.P.凯莉
H.库诺
R.E.塔延
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.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
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 Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of CN103890856A publication Critical patent/CN103890856A/zh
Application granted granted Critical
Publication of CN103890856B publication Critical patent/CN103890856B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • G11C15/04Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C19/00Digital stores in which the information is moved stepwise, e.g. shift registers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C19/00Digital stores in which the information is moved stepwise, e.g. shift registers
    • G11C19/18Digital stores in which the information is moved stepwise, e.g. shift registers using capacitors as main elements of the stages
    • G11C19/182Digital stores in which the information is moved stepwise, e.g. shift registers using capacitors as main elements of the stages in combination with semiconductor elements, e.g. bipolar transistors, diodes
    • G11C19/188Organisation of a multiplicity of shift registers, e.g. regeneration, timing or input-output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C19/00Digital stores in which the information is moved stepwise, e.g. shift registers
    • G11C19/28Digital stores in which the information is moved stepwise, e.g. shift registers using semiconductor elements
    • G11C19/287Organisation of a multiplicity of shift registers

Abstract

一种支持内存储数据结构的可移位存储器,所述可移位存储器采用内置的数据移位能力。所述可移位存储器包括如下存储器,所述存储器具有内置移位能力来将数据的邻接子集在存储器内从第一位置移位到第二位置。可移位存储器进一步包括在存储器上定义以包含数据的数据结构,所述数据包括邻接子集。存储器的内置移位能力用于促进在数据结构内的数据的移动、数据的插入以及数据的删除中的一个或多个。

Description

支持内存储数据结构的可移位存储器
背景技术
现代计算机以及相关的处理系统通常包括处理器和某种形式的存储器。处理器一般负责执行计算机的各种计算任务,同时存储器存储在计算任务中使用并由计算任务产生的数据。处理器的处理以及存储器的数据存储的架构划分(architectural division)已证明针对这样的系统的几乎全部历史是成功的。
例如,典型的通用计算机通常包括中央处理单元(CPU)以及主存储器,所述中央处理单元以及主存储器通过一个或多个通信信道(例如数据、命令和地址总线)彼此通信。通常地,CPU提供设施来执行各种算数和逻辑运算、提供运算排序、并且否则控制通用计算机的方面。例如,实际上所有CPU都提供用于从存储器读取数据、向存储器写数据以及执行包括利用数据来执行预定义任务的指令集的程序的功能或操作。另外,CPU可以处理输入/输出(I/O),这允许与外围设备以及在通用计算机之外的子系统的通信。在某些示例中,CPU甚至可以提供图形处理来处理生成和更新图形显示单元(例如监视器)。
与此对比,现代计算机的主存储器通常提供相对狭窄的能力集合,主存储器可以包括静态随机访问存储器(SRAM)、动态随机访问存储器(DRAM)、只读存储器(ROM)、可编程ROM(PROM)、闪速存储器以及各种其他存储器类型中的一个或多个。在这些能力中首要的是存储由CPU执行和使用的计算机程序以及数据。除其他之外,可以在现代计算机的主存储器中找到或者经常与现代计算机的主存储器相关联的有限能力是某些存储器管理功能。例如,主存储器的DRAM存储器子系统可以具备用于其中存储的数据的自动刷新的电路。
然而,在处理器中的处理以及在存储器中的存储的历史架构划分使某些问题出现并且呈现针对实现的实际问题,针对实现的实际问题随着时间变得越来越明显。特别地,在将所有处理集中在CPU中而将主存储器归类为提供存储的常规架构划分可以并且的确呈现问题,尤其在考虑使用数据结构存储和操纵的数据时。
附图说明
关于结合附图采用的以下详细描述可以更容易地理解根据本文描述的原理的示例的各种特征,其中相同的参考标号指明相同的结构元素,并且其中:
图1A图示了根据按照本文描述的原理的示例的、存储在可移位存储器(shiftablememory)内的线性阵列中的数据的邻接子集的向下移位的示例。
图1B图示了根据按照本文描述的原理的示例的、存储在可移位存储器内的线性阵列中的数据的邻接子集的向上移位的示例。
图2图示了根据本文描述的原理的示例的、支持内存储数据结构的可移位存储器的框图。
图3图示了根据本文描述的原理的示例的、增广解码器(augmented decoder)的真值表。
图4A图示了根据本文描述的原理的示例的、示例B+树的一部分的示意图。
图4B图示了根据本文描述的原理的另一示例的、图4A的示例B+树。
图5A图示了根据本文描述的原理的示例的、具有内存储数据结构支持的可移位存储器系统的框图。
图5B图示了根据本文描述的原理的另一示例的、具有内存储数据结构支持的可移位存储器系统的框图。
图6图示了根据本文描述的原理的示例的、在数据旋转之前以及在数据旋转之后的内存储数据结构的示意图。
图7图示了根据本文描述的原理的示例的、具有内存储数据结构的可移位存储器的方法的流程图。
某些示例具有其他特征,所述其他特征是除了以及替代在上文参考的图中图示的特征之一。这些特征和其他特征在下文关于上文参考的图被详述。
具体实施方式
根据本文描述的原理的示例在具有内置数据移位能力的存储器中提供内存储数据结构以及与其相关联的数据结构操作。特别地,根据本文描述的原理的各种示例,将数据移位能力基本上内置于存储器中。内置数据移位能力提供在存储器中存储的数据的邻接子集的平移(translation)或移位,而数据结构提供数据结构操做操纵的存储数据的组织。根据本文描述的原理的示例具有对各种数据处理系统的应用。
根据各种示例,可以将存储的数据(例如数据字)的邻接子集在存储器内从存储器第一或起始位置向在存储器中的第二或最终位置移位。根据某些示例,当向第二位置移位时,数据保留在邻接子集内的有序的关系。此外,移位完全地发生在存储器内,并且移位一般在没有使用存储器之外的资源的情况下完成,所述资源诸如是处理器。进一步地,根据各种示例,移位不涉及在处理器和存储器之间移动数据。因此,具有内置移位能力的存储器在本文中称为“可移位存储器”。
在某些示例中,可以采用由本文的可移位存储器提供的移位来“打开”新数据可以被插入的存储器中的位置。特别地,在对数据结构的操作期间,当存储的数据的邻接子集在可移位存储器内被移动某个移位时,可以致使在存储的数据的邻接子集的之上或者之下的位置可用于数据插入。然后,例如,作为数据结构操作的进一步的部分,可以将数据添加或者插入开口中。
根据其他示例,可以使用移位来删除或者“覆写”在邻接子集的开始之上和在邻接子集的结尾之下中的一个存储的数据。特别地,当邻接数据由可移位存储器移位时,在数据结构操作期间,在邻接子集之上或之下存储的数据可以被以邻接子集本身的部分覆写。例如,如果存储的数据的邻接子集是在可移位存储器中的较大数据结构(例如数据字的阵列)的部分,则作为数据结构操作的部分,移位可以具有删除在较大数据结构中的一部分数据(例如一个或多个数据字)的效果。
根据某些示例,将数据移位来在可移位存储器中插入数据或删除数据可以在较少时间内完成,并且在某些示例中,可以在比在没有使用可移位存储器的情况下一般可能的显著地更少的时间内完成。与此对比,依赖处理器例如来执行移位的常规存储器一般需要与被移位的数据的量成比例的时间量。例如,在常规存储器中移位数据通常涉及处理器读取将被移位的数据以及然后将数据写回到在另一位置的存储器。例如,由于常规存储器的结构和功能性,可以由处理器在逐字的基础上执行读和写。例如,因为在被移位的数据中的每个数据字都首先由处理器从常规存储器读取并且然后随后被写回到常规存储器,所以移位数据的时间一般与被移位的数据的量或长度(例如数据字的数目)成比例。数据量越大,移位操作就将花费越长时间。
而且,当移位数据时,常规存储器依赖在常规存储器外部的资源(例如处理器)来执行读和写。因为执行移位的资源在常规存储器外部,所以逐字移位中涉及的数据字中的每个都必须在外部资源和常规存储器之间通过某种形式的数据总线或类似的通信信道传递。数据总线或类似的通信信道可以基本上限制读和写操作的速度并且因此限制移位的总体速度。因此,由于数据总线速度的效果以及使用常规存储器执行移位的成比例的时间方面的一个或两者,移位数据的大子集在处理时间方面可以变得过分的昂贵。
根据本文描述的原理,可移位存储器具有内置的移位能力,使得数据不是例如由外部资源读取并且然后写来执行移位。向可移位存储器标识存储的数据的邻接子集(例如使用地址和长度)并且指示可移位存储器来移位邻接子集。然后由可移位存储器完成移位,并且移位完全地发生在可移位存储器内。根据本文描述的原理的示例,与向和从外部资源转移数据相关联的速度限制基本上由可移位存储器消除。而且,例如,用于移位的时间可以基本上独立于邻接子集的长度。
根据各种示例,在可移位存储器内的移位可以用可移位存储器本身的电路实现。同样,使用可移位存储器的移位不需要顺序地读和写邻接子集的每个数据字。例如,使用可移位存储器的移位可以以基本上同时的方式将在邻接子集中的所有数据移位。同样,可移位存储器可以在基本上独立于邻接子集的长度的时间中实现邻接子集的移位。
在某些示例中,根据描述的原理,可移位存储器可以在基本上恒定的时间中执行移位。通过“恒定的时间”,意味着需要基本上类似的时间量来移位存储的数据的邻接子集,不论邻接子集的长度如何。例如,根据某些示例,任意长度的邻接子集可以在单个时钟周期内被移位。在另一示例中,较短的邻接子集可能仅需要单个时钟周期,而较长的邻接子集可能需要两个或更多时钟周期。然而,虽然可移位存储器针对较长的子集可以使用比针对相对较短的子集更多的时间,但因为需要的时间与邻接子集长度不是严格地成比例,所以移位仍然在基本上恒定的时间中执行。
本文中术语“存储器”是指可以接收和存储数据的任何种类的存储器。例如,存储器一般与可以由计算机处理器采用或者可以在计算机系统中采用的存储器一致。特别地,由本文的定义,存储器是指在采用存储器的计算机的操作期间可以写入和读取的任何种类的存储器。例如,存储器可以包括随机访问存储器(RAM)。例如,随机访问存储器可以是静态RAM(SRAM)。其他类型的存储器包括但不限于动态随机访问存储器(DRAM)、闪速存储器以及在计算机的操作期间可写的类似的非易失性存储器、各种形式的光存储器(例如可重写光盘)、磁存储器(例如计算机硬盘驱动器)以及基于锁存器、触发器以及其他双稳态构造的各种存储器结构。
同样由本文的定义,存储器可以包括多个存储器单元的组。根据某些示例,多个存储器单元也可以被布置成阵列。例如,存储器单元可以被布置成线性阵列。在另一示例中,在二维(2-D)阵列中布置存储器单元。也可以用高阶的(例如三个或更多维度的)阵列。在某些示例中,在具有较大维度的阵列(例如2-D阵列)上定义低阶的阵列(例如线性阵列)。例如,线性阵列可以由在存储器单元的矩形2-D阵列上的寻址布置定义。另外,阵列可以被分成子阵列。例如,2-D阵列可以被分成如四个子阵列的象限。根据各种示例,阵列可以是物理阵列或者逻辑阵列。物理阵列包括根据阵列或如由阵列定义的那样物理地组织的或者相对于彼此定位的存储器单元。逻辑阵列包括存储器单元的逻辑布置作为阵列。例如,在逻辑阵列中,存储器单元的物理布置可以与由阵列定义的逻辑布置不同。例如,可以使用间接地址(address indirection)定义逻辑阵列。
如本文定义和采用的,存储器单元是保持和存储数据的电路或者相关构造。进一步地,由本文的定义,存储器单元可以存储数据的一个或多个“比特”。例如,比特可以是二进制值(例如“0”或“1”)并且存储器单元可以保持单个比特。在另一示例中,存储器单元可以保持多个二进制值比特。特别地,如本文定义,存储器单元可以保持或存储包括多个比特的完整的数据字。例如,存储器单元可以保持4、8、16、32或64个二进制比特。在又一示例中,存储器单元可以以另一形式(例如十六进制值、模拟值等等)保持数据。特别地,如本文定义,不将存储器单元限制于以二进制格式存储数据,而是可以在某些示例中保持或存储任意的数据结构。然而,本文为了讨论的目的,除非另外规定,通过示例的方式并且不是通过限制的方式贯穿全文一般地采用二级制数据。
如本文使用的,“寄存器”或等同的“存储器寄存器”被定义为存储器单元的集合或分组。在本文中进一步地,包括存储器单元的分组的寄存器可以保持构成特定计算机系统的数据字的数据(例如多个数据比特)。因此,寄存器的内容在本文中一般被称为“数据字”。在某些示例中,存储器寄存器的存储器单元在物理上彼此相邻。例如,存储器寄存器的第一存储器单元可以与存储器寄存器的第二存储器单元紧邻定位。在其他示例中,代替或除被物理并置,存储器寄存器的存储器单元是逻辑地相关。特别地,在某些示例中,相邻的存储器单元可以不必是物理地相邻来逻辑地相邻。
本文也经常称存储器单元为“存储器位置”。严格来说,存储器位置是在存储器内的特定位置处的(一个或多个)存储器单元,由地址指明或标识所述位置。例如使用地址访问存储器单元。然而,本文为了讨论的简单,存储器单元一般被称为具有地址或是在地址处。例如地址或位置可以与存储器的可移位单元(例如数据字)相关联。同样本文的“位置”和地址可以可交换地采用。另外,根据某些示例,“位置”可以用来指由开始地址和结束地址指明的数据的邻接子集的位置。在其他示例中,邻接子集的位置可以由邻接子集的开始(或结束)地址以及长度指明。
由本文的定义,如由相邻存储器位置定义的相邻存储器单元可以是物理地相邻的(即彼此紧靠定位)或者逻辑地相邻的。根据某些示例,逻辑的相邻可以由叠加的逻辑存储器结构建立(例如使用间接)。例如,逻辑地相邻的存储器单元可以是彼此物理地分离的,但仍旧被认为在采用交织的叠加的存储器结构方面相邻。同样地,邻接子集可以是物理地邻接(即在物理地相邻的存储器单元中定)或逻辑地邻接。特别地,由本文的定义,如存储在可移位存储器的相邻存储器单元中的数据的邻接子集取得类似于存储器单元的相邻性并且由存储器单元的相邻性规定的邻接性。
本文进一步地并且如上所述,除非另有约定,如由可移位存储器执行的移位被定义为存储在存储器内的数据的邻接子集的平移。特别地,由本文的定义,使用可移位存储器的移位构成在邻接子集内的存储的数据(例如数据字)的在存储器内从第一位置到第二位置的平移(例如向上或向下平移阵列)。更进一步地,当向存储的数据的邻接子集应用移位时,所述移位平移邻接子集内的所有存储数据。而且,由本文的定义,通过可移位存储器的移位不导致在移位中涉及的数据子集之外的数据的平移或移位。一般而言,移位可以将数据移动一个或多个存储器位置或存储器地址的距离。例如,移位可以在存储器内将数据向上或向下移动单个存储器位置。
在本文中,关于在可移位存储器内的存储器位置将方向“向上”定义为朝向具有较小地址的位置的方向。将方向“向下”定义为朝向具有较大地址的位置的方向。因此,将“向上移位”定义为向具有比第一或开始位置的地址小的地址的第二位置移动或者移位数据。相反地,“向下移位”导致从具有较小地址的第一位置向具有较大地址的第二位置移动或移位数据。然而,根据某些示例,虽然移位方向是可控制或者可选择的,但是如本文采用的,移位方向(例如向上或向下)可以是完全任意的。进一步地,本文的“向上移位”和“向下移位”的具体使用是为了讨论的目的并且不是作为限制。
图1A图示了根据本文描述的原理的示例的、存储在可移位存储器内的线性阵列中的数据的邻接子集的向下移位的示例。特别地,图1A图示了多个存储器单元,每个存储器单元都能够存储数据字。例如,数据字可以包括八个二进制比特,每个比特(例如“1”或“0”)存储在八个存储器单元中的单独的一个中。进一步地如图示,图示的存储器单元中的每个都由范围从00到11的地址标识。图1A的左侧图示了在向下移位之前的多个存储器单元,同时右侧图示了在向下移位之后的相同的多个存储器单元。
如图示,例如,在可移位存储器内的示例向下移位包括选择以在地址04处的存储器单元开始并且以在地址08处的存储器单元结束的存储的数据字的邻接子集。在图示示例中,选择的邻接子集包含数据字 {11001010,01001010,11111011,0000001,11011011}。如在图1A的右侧中图示的,可移位存储器然后通过将存储的数据字向下移动一个地址位置来将数据字的选择的邻接子集向下移位。向下移位维持在邻接子集内的数据字的顺序并且在地址05和地址09之间的存储器单元中存放邻接子集。将存储的数据向下移位覆写紧接在邻接子集之下(即在地址09处)的存储器单元的内容并且用向下移位的邻接子集的最后的数据字(即“11011011”)替换该存储器单元的内容。进一步地,致使在地址04处的最初保持邻接子集的第一数据值的存储器单元不确定,如通过“X”指示的。根据各种示例,在地址04处的存储器单元可以保留在向下移位之前存在的数据字(例如“11001010”)的副本或者在向下移位之后被清除(例如设置为“00000000”)。
在某些示例中,例如,在地址04处的存储器单元针对来自外部源的数据字的插入可以是可用的。根据某些示例,可以通过顺序地呈现(presenting)和计时插入的数据字的单独的比特或者将插入的数据字的单独的比特移位到在地址04处的存储器单元的存储器单元中(例如串行写)来将数据字插入到在地址04处的存储器单元中。
图1B图示了根据本文描述的原理的示例的、存储在可移位存储器内的线性阵列中的数据的邻接子集的向上移位的示例。特别地,图1B图示了多个存储器单元,其中每个存储器单元存储数据字(例如“abc”、“def”等等)。进一步如图示,图示的存储器单元中的每个由范围从00到11的地址标识。图1B的左侧图示了在向上移位之前的多个存储器单元,而右侧图示了在向上移位之后的相同的多个存储器单元。
如在图1B中图示,例如,在可移位存储器中的向上移位包括选择以在地址03处的存储器单元开始并且以在地址06处的存储器单元结束存储的数据字的邻接子集。然后可移位存储器通过将在选择的邻接子集中的存储的数据字向上移动一个地址位置来向上移位选择的邻接子集,如在图1B的右侧图示的。向上移位维持在邻接子集内的字的顺序并且在地址02和地址05之间的存储器单元中存放邻接子集。向上移位存储的数据字覆写紧接在邻接子集之上(即在地址02处)的存储器单元的内容,从而用向上移位的邻接子集的第一字(即“jkl”)替换该存储器单元的内容。进一步地,致使在地址06处的最初保持邻接子集的最后的字的存储器单元不确定,如通过“X”指示的。根据某些示例,在地址06处的存储器单元可以保留在向上移位之前存在的数据字(例如“stu”)的副本或者可以在向上移位之后被清除(例如设置为“000”)。在某些示例中,在地址06处的存储器单元针对来自例如外部源的数据的插入可以是可用的。
根据各种示例,可移位存储器可以是通用计算机系统的主存储器的一部分。例如,可移位存储器可以代表组成主存储器的存储器的子集。更进一步地根据各种示例,例如,可移位存储器与经常被发现与微处理器中的其他部件(例如运算逻辑单元、控制器等等)集成在一起的存储器单元、高速冲存和其他相对小的存储结构是不同的。特别地,根据各种示例,由本文的定义,可移位存储器是主存储器的部分并且因此可移位存储器与通用计算机系统的处理器或相关的处理系统是分离的。另外,根据某些示例,可移位存储器通常包含某个数量级的或者比在处理器中存在的或可以存在的更多的存储装置。例如,可移位存储器可以包括许多兆字节或者甚至千兆字节的存储装置,而处理器存储装置通常可以被限制在小于几十个字节(例如处理器寄存器)到几兆字节(例如L1高速缓存、L2高速缓存等等)。根据某些示例,可移位存储器可以是主存储器或者它的子系统的专门的分区。
在本文中,“数据结构”被定义为在包含并且提供存储在存储器中的数据的组织的存储器中的结构。数据结构的示例包括但不限于数组和列表、串、树结构(例如B-树、B+树等等)、堆、散列表、栈、数据图、队列以及它们的混合。例如,如本文定义的数据结构可以包括各种诸如但不限于具有是平衡树的桶的散列表、具有是散列表的节点的树等等的混合数据结构。在某些示例中,数据结构可以被进一步定义为包含被根据具体规则或构造排序或否则组织的数据的结构。例如,B+树可以包含根据数据记录本身的值或标识数据记录的键以升序方式和降序方式之一排序的数据记录。例如,B+树可以用来包含名称和基于名称按字母顺序排序的相关联的电话号码(即数据记录)。
在本文中,“数据结构操作”是指并且被定义为对数据结构,或者更精确地,对由数据结构包含的数据或对数据结构中的数据执行的操作或动作。由定义,“数据结构操作器”是执行或实现数据结构操作的操作器。例如,数据结构操作可以包括在由数据结构包含的多个数据记录之间搜索具体的数据记录。同样地,例如,对数据结构操作的搜索操作器是数据结构操作器。在另一示例中,引起数据在数据结构内被移位(例如向上移位或向下移位)的移位操作器是数据结构操作器,而移位本身被认为是数据结构操作。应注意在引起或发起动作的操作器以及用于执行动作的装置之间可以做出区别。例如,移位操作器可以在数据结构中发起数据的移位,而可移位存储器可以负责实际上执行由移位操作器发起的移位,其中,在所述可移位存储器上定义数据结构。
进一步如本文使用地,冠词“一”意图具有其在专利领域中的普通含义,即“一个或多个”。例如,“一存储器单元”意味着一个或多个存储器单元,并且因此在本文中“存储器单元”意味着“(一个或多个)存储器单元”。并且,在本文中任何对“顶”、“底”、“上”、“下”、“向上”、“向下”、“前”、“后”、“左”或者“右”的引用在本文中不意图是限制。在本文中当将术语“大约”应用于值时一般意味着在用来产生所述值的设备的容差范围内,或者在某些示例中,意味着加或减10%,或者加或减5%,或者加或减1%,除非另外明确指定。此外,本文的示例意图仅是图示的并且为了讨论的目的被呈现并且不作为限制。
图2图示了根据本文描述的原理的示例的支持内存储数据结构的可移位存储器100的框图。可移位存储器100提供在可移位存储器100中的数据的邻接子集的移动或移位。由可移位存储器100对数据的移位仅移位在邻接子集中的数据并且不是在邻接子集之外的其他数据。特别地,根据各种示例,当可移位存储器100执行邻接子集的移位时,只有邻接子集的数据是受到影响。例如移位不移位位于邻接子集之外的数据。进一步地,根据某些示例,移位在基本上没有改变或否则影响在邻接子集中的数据的顺序的情况下移动数据的邻接子集。附加地,可移位存储器100支持定义在可移位存储器100上的一个或多个内存储数据结构。根据各种示例,数据结构可以促进采用由可移位存储器100提供的移位的数据处理以及操纵。
由本文的定义,通过“在…上定义”意味着数据结构采用包括可移位存储器100的存储器来存储该数据结构的数据。进一步地由本文的定义,“内存储”意味着数据结构是在存储器中(即将数据存储在存储器中)并且存储器包括可移位存储器100。例如,根据某些示例,内存储数据结构可以在可移位存储器100以及常规或“非可移位”存储器两者中存储数据。
在某些示例中,外部资源(例如处理器)经由数据总线(数据I/O)102向和从可移位存储器100传送数据。例如,可以经由数据总线102从外部资源向可移位存储器100传送要在可移位存储器100中存储的数据。类似地,例如,存储在可移位存储器100中并且随后从可移位存储器100读取的数据可以经由数据总线102从可移位存储器100被传送到外部资源。根据某些示例,用来控制可移位存储器100的操作的信息可以使用地址总线(ADDR)104和长度总线(LEN)106传送到可移位存储器100,该信息诸如但不限于邻接子集的地址和长度。可以在其他示例中采用单个地址总线(未示出),该单个地址总线携带地址和长度两者,或者替代地携带地址对。
如图示,支持内存储数据结构的可移位存储器100包括存储器100来存储数据。存储器100具有内置移位能力以将数据的邻接子集在存储器内从第一位置移位到第二位置。特别地,内置移位能力被配置成基本上在存储器100内将数据的邻接子集移位。根据各种示例,在移位期间,不是从存储器110中转移出数据来完成移位。例如,第二位置可以代表相对于数据(例如数据字)的单个单元的第一位置的移位。例如,可以通过沿着在存储器100内的路径从第一位置向代表第二位置的存储器110的相邻位置移动数据来完成移位。
本文将向相邻位置移动数据称为“相邻位置转移”。在另一示例中,移位可以将数据的邻接子集移动多于一个数据单元(例如两个或更多数据字)。例如,可以通过使用存储器110的内部数据路径的从第一位置到是距离第一位置两个或更多数据单元的第二位置的直接移位来完成两个或更多数据单元的移位。在其他示例中,具有内置移位能力的存储器110可以在一系列较小的步骤中(例如多个相邻位置转移)移动数据来实现多于一个数据单元的移位。然而,根据本文描述的原理的各种示例,在每个示例中,存储器110的内置移位能力在基本上没有依赖或者采用在存储器110的内和外的数据的转移的情况下完成移位。
根据某些示例,存储器110包括被配置为聚合体(aggregate)以存储数据的多个存储器单元112。在某些示例中,存储的数据可以对应于数据字。在某些示例中,存储器单元112被配置成存储二进制数据。在某些示例中,每个存储器单元112都被配置成存储单个比特的二进制数据(例如,如“1”或“0”)。在其他示例中,每个存储器单元112都被配置成存储多个二进制数据比特。例如,每个存储器单元112都可以存储数据字。特别地,根据某些示例,每个存储器单元112都包括被配置为聚合物以存储对应于数据字的数据比特的多个存储器位置。数据字的多个数据比特定义存储器单元112的宽度。在其他示例中,存储器单元112可以以不同于作为一个或多个二进制比特的形式存储数据。
根据各种示例,存储器110可以使用基本上任何存储器技术实现。例如,存储器110的存储器单元可以使用静态随机访问存储器(SRAM)存储器单元112实现。在另一示例中,可以采用一个或多个诸如但不限于D触发器的触发器来实现存储器110的存储器单元。在其他示例中,可以使用另一存储器技术(例如DRAM、忆阻器(memristor)等等)来实现存储器110的存储器单元112。
根据某些示例,存储器110进一步包括控制器114。控制器120被配置成选择存储的数据的邻接子集。控制器114被进一步配置成控制选择的邻接子集在存储器110内从第一位置到第二位置的移位。根据本文描述的原理的各种示例,选择的邻接子集具有小于存储器110的总长度的长度。例如,使用一个或多个控制信号,控制器120可以通过指示存储器110执行移位来使得存储器110移位选择的邻接子集。
在各种示例中,存储器110,或者更一般地,可移位存储器100,促进数据(例如数据字)的邻接子集的向上移位与向下移位的一个或两者。特别地,取决于移位的方向,在存储器110内的第二位置的存储器单元112可以位于第一位置的对应的存储器单元112之上或之下。在某些示例中,第二位置的存储器单元112是远离第一位置的对应存储器单元112的单个存储器单元(或存储器位置)。换言之,移位代表存储的数据的邻接子集移动单个存储器位置或地址。在其他的示例中,第二位置代表多于单个的存储器单元112的移动。例如,数据字形式的数据可以被存储为在可移位存储器内的比特的线性阵列并且移位可以是等于以比特为单位的数据字的长度的多个比特。
在某些示例中,选择的邻接子集由邻接子集的第一存储器单元112的地址以及在邻接子集中的最后的存储器单元112的地址的两者指定。例如,第一存储器单元地址与最后的存储器单元地址被传送至控制器114(例如经由地址总线)以促进选择邻接子集。根据各种示例,第一存储器单元地址以及最后的存储器单元地址可以被顺序地通过单个总线(例如ADDR 104)作为跟随有第二地址的第一地址传送。替代地,例如,第一和最后的地址可以被通过两个总线或者通过单个宽总线的两个部分作为两个同时地址并行传送。
在另一示例中,选择的邻接子集由第一存储器单元112的地址以及邻接子集的长度(例如经由ADDR 104和LEN 106,如图示)指定。在这些示例的某些中,长度可以是跟随第一存储器单元112的邻接子集的长度使得通过第一存储器单元地址与长度的和给出最后的存储器单元地址。在其他示例中,所述长度包括第一存储器单元112使得由第一存储器单元地址加长度减一给出最后的存储器单元地址。例如,其他示例可以指定最后的存储器单元地址和最后的存储器单元之前的邻接子集的长度,以及其他方案。
在某些示例中,控制器114包括增广解码器。增广解码器采用关于地址以及长度(或者替代地关于第一以及最后的存储器单元地址)的信息来选择存储的数据的邻接子集。在某些示例中,增广解码器使用信息(例如邻接子集的地址和长度)来断言对应于在存储器110内的选择的邻接子集的存储器单元中的每个的输出。例如,断言输出可以包括在增广解码器与多个存储器单元112之间的连接通路或导线(例如字线W)上输出逻辑“1”。同样,增广解码器可以在存储器110的多个字线上输出逻辑“1”,所述字线对应于包含选择的邻接子集的存储的数据的存储器单元112。例如,字线可以连接至存储器单元112加载使能(LE)输入或选择(SEL)输入。在其他示例中,断言输出包括输出逻辑“0”。例如,当存储器单元112具有“非”加载使能()输入或“非”选择()输入时,可以使用断言逻辑“0”。
在某些示例中,增广解码器被进一步配置成断言附加输出,所述附加的输出对应于相邻于选择的邻接子集并且紧接在选择的邻接子集之上的存储器单元112或者相邻于选择的邻接子集并且紧接在选择的邻接子集之下的存储器单元112之一。例如,当存储的数据将在存储器110内被向上移位时,可以断言对应于紧接在选择的邻接子集之上的存储器单元112的附加输出。例如,当存储的数据将在存储器110内被向下移位时,可以断言对应于紧接在选择的邻接子集之下的存储器单元112的附加输出。特别地,可以使用附加输出来使能从数据的邻接子集的第一存储器单元112或者最后的存储器单元112接收存储的数据的存储器单元112。
图3图示了根据本文描述的原理的示例的增广解码器的真值表。特别地,对应于图示的真值表的增广解码器被配置成在具有八个存储器单元112的示例存储器110中选择邻接子集。真值表具有三个地址输入(ADDR)、长度(LEN)输入以及八个字线W(即W 0 –W 7 )。例如,八个字线W可以对应于在示例存储器110中的八个存储器单元112的加载使能(LE)输入。如在真值表中可以看到的,针对等于“00”的LEN的值,增广解码器基本上类似于常规解码器(即每一次仅断言一个字线W)来运转。然而,针对LEN的所有其他值,断言多个字线W来促进保持或存储要被移位的存储数据的选择的邻接子集的对应的多个存储器单元112的同时使能。
在某些示例中,可以使用只读存储器(ROM)实现增广解码器。ROM被编程具有指定增广解码器的功能性的真值表。例如,ROM的解码器解码输入(例如ADDRLEN)并且在ROM内的已编程的连接增广ROM解码器的输出来产生增广解码器功能性。在另一示例中,可以用不同于已编程的连接的输出电路增广常规解码器来实现增广解码器。在又一示例中,可以使用锁存纹波级联(latched ripple cascade)实现增广解码器。
支持内存储数据结构的可移位存储器100进一步包括数据结构120。特别地,在存储器110上定义数据结构120,并且数据结构120被配置成包含数据。根据各种示例,由数据结构120包含的数据包括邻接子集。在某些示例中,数据结构进一步包括不是邻接子集的一部分不过仍然在存储器110内的数据。
在某些示例中,数据结构120进一步包括储存在存储器110之外的数据。例如,数据结构120可以环绕或跨越常规存储器以及可移位存储器100的存储器100两者。在某些示例中,数据结构120可以基本上位于常规非可移位存储器中,存储在数据结构中的部分数据被移动(例如暂时地移动)到可移位存储器100中。例如,可以为了将邻接子集移位的目的移动数据。例如,在移位之后,可以从可移位存储器100移动包括数据的已移位的邻接子集的某些或所有的数据返回到常规存储器中。
根据某些示例,存储器110的内置移位能力被配置成促进维持数据的基本上已排序的顺序。在某些示例中,存储器110的内置移位能力进一步被配置成促进将数据排序成基本上已排序的顺序。特别地,在某些示例中,内置移位能力被配置成提供数据的插入与数据的删除的一个或两者。例如,可以采用提供的插入和删除来排序数据以及一旦排序然后基本上维持数据的顺序(即已排序的顺序)的一个或两者。当然,根据各种示例,一般而言地,排序和维持已排序的顺序可以采用除由存储器110提供的插入与删除之外的其他操作(例如搜索、比较等等)。
在某些示例中,数据结构120包含包括数据记录的数据。如本文采用的,数据记录可以被视为存储在数据结构中并由数据结构组织的“实际的”数据。例如,由关于个人的数据记录代表的“实际的”数据可以包括人的名字、电话号码、出生日期、地址等等中一个或多个。在其他示例中,数据包括向数据记录的指针。指针是“指向”其他数据(例如另一指针、特定数据记录等等)的位置或者提供其他数据的位置的数据。在某些示例中,数据包括指针和数据记录的组合。
在某些示例中,数据结构120的数据包括或者进一步包括幻影记录(ghostrecord)。幻影记录是占用在数据结构120内的一个或多个物理空间但不代表实际或现存的数据记录的伪删除的记录。同样,幻影记录一般不影响数据结构120的数据内容。根据某些示例,幻影记录可以提供“轻量”机制用于以对数据库系统的一个或多个物理结构具有最小影响来逻辑地删除(一个或多个)记录。例如,幻影记录可以帮助事务确保当滚回记录删除操作时,空间分配以及唯一键约束两者都将不失败。根据某些示例,针对创建幻影记录基本技术是来将已删除的记录标记为无效(例如,通过翻转在记录报头中的单个状态比特),同时保留物理记录以及相关联的键(例如在B-树中)。例如,所述记录以及它的键可以保持锁定直至删除事务委托为止。同样,在某些示例中,幻影记录可以通过分别改变幻影记录或数据记录的比特而被变换为数据记录,并且反之亦然。根据某些示例,幻影记录可以促进在数据结构120内的搜索。例如,可以在数据结构120中使用幻影记录来通过促进在数据结构120内的数据记录的基本上均匀分布改进插值搜索的性能。
数据结构120的数据也可以或者替代地进一步包括记录间隙或者仅仅“间隙”。如本文使用的,“记录间隙”是数据结构120的数据的相关集合之间的有意引入的间隙。例如,可以在数据的第一集合的末端处引入记录间隙来提供在第一集合与后面的第二集合之间的缓冲区。例如,缓冲区可以在不需要在第一集合与第二集合之间的数据转移的情况下提供在数据的第一集合中的用于新数据的插入的空间。根据某些示例,可以采用记录间隙来促进排序(例如经由图书馆排序(library sort))。
在某些示例中,数据结构120包括树型数据结构或仅仅“数据树”。例如,数据树可以是所谓的B-树。特别地,根据某些示例,数据结构可以包括B+树。在其他示例中,数据结构120包括散列表或散列映射(hash map)。数据结构120的其他示例包括但不限于队列、栈、堆、容器(例如已排序容器)、链表、映射以及图。
图4A图示了根据本文描述的原理的示例的、示例B+树400的部分的示意图。图4B图示了根据本文描述的原理的另一示例的图4A的示例B+树400。B+树,也称为“B加树”,是包括多个节点410的数据结构,所述多个节点410共同地组织已排序的数据。唯一键一般标识在B+树内的已排序的数据。终端节点410'有时被称为叶节点或仅仅“叶”,而其他节点410可以被称为内节点或分支节点410。在B+树中,相对于B-树,在终端节点或叶层中存储所有数据记录。根据某些示例,由内节点410仅存储键。
在示例B+树400中的新数据记录412的插入包括定位适当的叶410'以及插入点,如通过在图4A中的空心箭头图示的。例如,可以使用搜索操作来定位适当的叶410'以及插入点。然后将在插入点之下的标识的叶410'的部分数据移位以在叶410'内为新数据记录412腾空间。例如,通过图4A中的水平箭头图示移位。另外,图示插入的新数据记录412已被插入到在图4B中的叶410'中。根据各种示例,可以采用存储器110的内置移位能力来将在插入点之下的数据记录移位(例如向下移位)来为新数据记录412的插入腾空间。根据各种示例,邻接子集可以包括在叶410'中插入点之下的数据部分的数据记录。
如在图4A和4B中图示,现有的数据记录的删除类似地需要定位适当的叶410"以及定位特定的数据记录412"来删除。根据某些示例,一旦定位,叶410"的未被删除的数据记录(即剩余数据记录)可以被移位来覆写指明用于删除的数据记录412"。如上文,通过在图4B中的水平箭头指示移位。根据各种示例,可以采用存储器110的内置移位能力来提供剩余数据记录的移位(例如向上移位)来从叶410"移除指明删除的数据记录412"。例如,邻接子集可以包括被移位以影响指明删除的数据记录412"的删除的剩余数据记录。
在某些示例中,决于特定的叶410'是否是“满的”,移位可能或可能不导致新叶410'以及新节点的一个或两者的创建取。在某些示例中,叶410'的删除可以需要或导致叶410'以及节点410的一个或两者的删除。例如,可以使用在叶410'的末端处的幻影记录420以及记录间隙430的一个或两者来减少叶是满的的可能性。幻影记录420以及记录间隙430通过示例在图4A和4B中示出。
回退参考图2,在某些示例中,支持内存储数据结构的可移位存储器100进一步包括数据结构操作器130。数据结构操作器130被配置成对存储器110中的数据结构120操作。特别地,数据结构操作器130对数据结构120的数据执行数据结构操作。进一步地,内置移位能力被配置成结合数据结构操作器130提供数据的插入和数据的删除的一个或两者。
例如,数据结构操作器130可以包括图书馆排序操作器。图书馆排序操作器被配置成执行数据结构120的数据的图书馆排序。在另一示例中,数据结构操作器130可以包括旋转操作器。根据某些示例,旋转操作器被配置成旋转在数据结构130内的数据的选择的部分(例如邻接子集)。例如,旋转可以包括向左(例如左旋转)或向右(例如右旋转)的数据移位,被移位出或离开选择的部分的一端的数据被重新插入到相对端来产生数据旋转。例如,数据移位可以由存储器110的内置移位能力提供。数据结构操作器130的其他示例包括但不限于插值搜索操作器、二分搜索操作器以及顺序搜索操作器。
在某些示例中,数据结构操作器130被实现为存储在计算机可读介质中并且由处理器执行的软件或固件(例如计算机代码或指令)。计算机可读介质可以包括但不限于计算机存储器(例如RAM、ROM、闪速存储器等等)、磁盘以及计算机系统的光盘的各种形式中一个或多个的。
在另一示例中,在硬件中实现数据结构操作器130。例如,数据结构操作器130可被实现为处理器(例如微处理器)的机器代码指令,所述处理器采用可移位存储器100。在另一示例中,数据结构操作器130本身可以是实现在可移位存储器100的电路内以及与可移位存储器100的电路并置的一个或两者。例如,数据结构操作器130可以实现为是控制器114的部分的逻辑电路。例如,在另一示例中,数据结构操作器130实现为与控制器114并排操作的专用集成电路(ASIC)。在又一示例中,数据结构操作器130可以实现为支持并且提供到可移位存储器100的接口作为存储器子系统的部分的存储控制器(未示出)的部分。然而,根据某些示例,虽然可以远离可移位存储器100的其他部分实现数据结构操作器130,但是由于在存储器110上定义并且被配置成对存储器110内的数据的邻接子集操作,所以数据结构操作器130被认为是可移位存储器100的元素。
在某些示例中,由可移位存储器100提供的存储器110的内置移位能力可以以比可能对常规(非可移位)存储器实际的更大子结构(节点、叶等等)来促进数据结构120。例如,使用存储器110的内置移位可以允许具有比在没有存储器110的情况下是实际的更大的叶410'的B+树的实现。例如,由于与数据的插入以及删除相关联的效率,更大的叶410'可能是实际的,所述数据的插入以及删除由通过内置移位能力提供的基本上恒定时间数据移位提供。根据某些示例,更大的叶410'可以提供在B+树的深度中的伴生物减少(concomitantreduction)以及在可以存储的数据量的增加。在某些示例中,由存储器110的内置移位能力提供的有效的插入和删除对于促进数据结构120具有更大的子结构可能是足够的。在其他示例中,可以通过使用选择的数据结构操作器130增广在数据结构120中的数据的有效插入与删除。
例如,可以使用从一个到可能相对小的数量的相当大的阵列(例如叶、节点等等)来构造数据结构120以保持数据。在构造期间可以沿着阵列预插入记录间隙。例如,可以基于数据的特性(例如基于要被插入的数据的已知或预期的频率特性)随机地、周期地以及策略上地中的一个或多个预插入记录间隙。根据各种示例,记录间隙可以具有大小,根据预定的公式(例如周期性的间隙大小加倍)随机地以及基于存储的数据策略地中的一个或多个来确定所述大小。在某些示例中,也可以预插入幻影记录。例如,可以包括幻影记录来促进或改进诸如但不限于插值搜索操作器的数据结构操作器130的性能。
可以使用具有内置移位能力的存储器110来在相当大的阵列中提供数据的有效插入与提供数据的有效删除中的一个或两者。根据某些示例,记录间隙与幻影记录中的一个或两者的存在可以通过减少必须被移位来适应特定插入或删除的邻接子集的平均大小而增广由存储器110的移位。例如,仅需要在为将数据记录在特定插入点处插入到阵列中,仅需要存储器110移位的邻接子集中包括直至插入点之下的下一记录间隙的阵列中的那些现有的数据记录。例如,可以由记录间隙有效地吸收在被移位到下一个记录间隙中的邻接子集中的数据记录(例如导致记录间隙的大小减少)。由诸如但不限于图书馆排序操作器的数据结构操作器130代表在插入和删除期间的这样的记录间隙的使用。
可以使用执行搜索的数据结构操作器130完成在相当大的阵列中定位和标识数据记录来删除或者充当插入点。可以有效地搜索相当大的阵列来定位和标识特定数据记录的数据结构操作器130可以包括但不限于插值搜索操作器、二分搜索操作器以及顺序搜索操作器。也可以采用存储器110的内置移位能力来促进记录间隙与幻影记录的插入与调整,以提高搜索数据结构操作器130的性能。例如,可以使用内置移位来重新分布以及重新引入记录间隙和幻影记录以维持搜索性能水平。
图5A图示了根据本文描述的原理的示例的、具有对可移位存储器内的数据结构的内存储数据结构支持的可移位存储器系统500的框图。图5B图示了根据本文描述的原理的另一示例的、具有对数据结构内的可移位存储器的内存储数据结构支持的可移位存储器系统500的框图。特别地,在图5A和5B中图示的可移位存储器系统500包括可移位存储器510。凝聚某些示例,可移位存储器510包括具有内置数据移位能力的多个存储器单元512。内置数据移位被配置成将存储在存储器单元512中的数据的邻接子集在可移位存储器510内从第一位置向第二位置移位。数据的邻接子集具有比可移位存储器510的总大小更小的大小(例如长度)。在某些示例中,可移位存储器510基本上类似于上文关于可移位存储器100描述的存储器110。
进一步地,如在图5A和5B中图示的,可移位存储器系统500包括内存储数据结构530。根据某些示例,内存储数据结构530可以完全地位于可移位存储器510内,如在图5A中图示的。在其他示例中,仅内存储数据结构530的一部分位于可移位存储器510中,如在图5B中图示的。例如内存储数据结构530的数据的一部分可以位于可移位存储器510中,而数据的剩余部分可以位于另一存储器(未示出)中。例如,其他存储器可以是常规的或是基本上非可移位存储器。例如,当仅内存储数据结构530的一部分在可移位存储器510中时,可移位存储器系统500可以被视为在数据结构530内具有可移位存储器510。
在某些示例中,位于可移位存储器510中的数据的部分有时可以改变。例如,可以将数据从其他存储器(例如非可移位存储器)移动到可移位存储器510中并且然后移回到其他存储器。例如,数据可以被移动到可移位存储器510中用于移位操作、插入操作、删除操作以及可以采用数据移位的多种其他操作中任何操作中的一个或多个。可移位存储器510与其他存储器的这样的安排可以被称为存储介质的分层。根据各种示例,除可移位存储器510之外,存储介质的分层可以包括其他存储器,所述其他存储器包括高速缓存(例如L1高速缓存、L2高速缓存等等)、RAM、盘(例如磁的、光的等等)以及闪速存储器中的一个或多个。
例如,内存储数据结构530可以是B-树,在所述B-树中,除了叶节点或页以外的基本上所有的B-树层可以适合在RAM存储器(例如其他存储器)中的缓冲池中。例如,对于叶子页,缓冲池可能采用最近最少使用的(LRU)替换策略。更进一步地,由于在叶子页中可以频繁第更新数据,所以叶子页在被编辑时可以被周期性地移动到可移位存储器510中。因此,例如,针对具有随机搜索键的搜索,如果一个是可用的,则仅需要单个的I/O操作,类似于散列索引。根据各种示例,应理解在数据结构的哪个部分要被移动进并且移动出可移位存储器510的选择中可以使用其他标准。
在图5A和5B中图示的可移位存储器系统500进一步包括数据结构操作器520。在可移位存储器510上定义数据结构操作器520,并且数据结构操作器520被配置成对内存储数据结构530操作。在某些示例中,内存储数据结构530被配置成包含数据,所述数据包括邻接子集。根据某些示例,可移位存储器510的内置移位能力被配置成促进排序以及被配置成结合数据结构操作器520维持在数据结构中的数据的基本上已排序的顺序中的一个或两者。在某些示例中,数据结构操作器520基本上类似于上文关于可移位存储器100描述的数据结构操作器130。
特别地,在某些示例中,数据结构操作器520包括搜索操作器。例如,数据结构操作器520可以包括插值搜索操作器、二分搜索操作器以及顺序搜索操作器中的一个或多个。在某些示例中,数据结构操作器520包括排序操作器。例如,数据结构操作器520可以包括图书馆排序操作器。在另一示例中,数据结构操作器520包括旋转操作器。
图6图示了根据本文描述的原理的示例的、在数据旋转之前以及在数据旋转之后的内存储数据结构530的示意图。如在图6的上部中图示的,内存储数据结构530在由数据结构操作器520的数据旋转之前包含八个字符的字符串“ABCDEFGH”。例如,图6的下部图示了在字符串内的四字符片段532的左向的旋转的示例之后的八字符的字符串。例如,数据结构操作器520可以包括旋转操作器来提供数据旋转。在数据旋转之后,八字符的字符串是旋转的字符串“ABDEFCGH”,如图示的那样。
特别地,四字符片段532初始从字符“C”开始,而在旋转之后,四字符片段532从字符“D”开始,如图示的那样。根据某些示例,为产生数据旋转的旋转操作器的执行可以包括将字符“C”复制到暂时的存储器位置(未示出)、将字符“DEF”向左移位以及然后将以前存储的字符“C”插回到八字符的字符串中。具体地,字符“C”被插入到在字符“F”以及字符“G”之间的经旋转字符串的末尾处由移位打开的位置中。根据各种示例,四字符片段532可以是邻接子集并且移位可以由可移位存储器系统500的移位能力执行。如图示,在图6中的弯曲箭头图示了在数据旋转期间字符“C”从旋转的字符串的开端到末尾的运动。
再次参考图5A和5B,根据各种示例,可移位存储器510的内置移位能力可以促进数据结构530的插入以及删除数据记录中的一个或两者。在某些示例中,数据结构530包括数据记录的基本上已排序的阵列。在某些示例中,数据结构530的数据包括幻影记录与记录间隙中的一个或两者。
图7图示了根据本文描述的原理的示例的、使用具有内存储数据结构的可移位存储器的方法600的流程图。如图示,使用具有内存储数据结构的可移位存储器的方法600包括在可移位存储器的存储器单元中定义610数据结构。可移位存储器具有有内置移位能力的多个存储器单元以将在数据结构中的数据的邻接子集从第一位置向第二位置移位。在某些示例中,可移位存储器基本上类似于上文关于可移位存储器100描述的具有内置移位能力的存储器110。特别地,根据各种示例,可移位存储器的数据的邻接子集的大小小于可移位存储器的总大小,并且内置移位包括向上移位与向下移位中的一个或两者。
使用具有内存储数据结构的可移位存储器的方法600进一步包括执行620数据结构操作器。当被执行620时,数据结构操作器对数据结构进行操作。数据结构包括数据的邻接子集。在某些示例中,数据结构操作器被配置成排序数据以及被配置成使用可移位存储器的内置移位能力基本上维持数据结构的数据的已排序的顺序中的一个或两者。在某些示例中,数据结构基本上类似于上文关于可移位存储器100描述的数据结构120。进一步地,在某些示例中,数据结构操作器基本上类似于上文关于可移位存储器100描述的数据结构操作器130。
在某些示例中,执行620数据结构操作器包括执行数据结构的数据的排序以及执行数据结构的搜索中的一个或两者。在各种示例中,内置移位能力被用于将数据的邻接子集向下移位以促进在数据结构中插入数据以及将数据的邻接子集向上移位以促进从数据结构删除数据中的一个或两者。在某些示例中,使用具有内存储数据结构的可移位存储器的方法600进一步包括在数据结构的数据中插入幻影记录与记录间隙中的一个或两者。
因此,已经描述了可移位存储器以及可移位存储器系统以及使用具有内存储数据结构的可移位存储器的方法的示例,所述可移位存储器以及可移位存储器系统中的每个都支持内存储数据结构。应理解上文描述的示例仅仅是许多具体示例中一些的说明,所述许多具体示例代表本文描述的原理。清楚地,本领域的技术人员可以容易地在没有背离如由下文的权利要求书限定的范围的情况下设计许多的其他布置。

Claims (14)

1.一种支持内存储数据结构的可移位存储器,包括:
存储器,具有内置移位能力以将数据的邻接子集在存储器内从第一位置向第二位置移位,数据的邻接子集具有比存储器的总大小更小的大小,内置移位能力用于仅对邻接子集的数据移位;以及
数据结构,其定义在存储器上来包含包括邻接子集的数据,内置移位能力用于促进在数据结构内的数据的移动、数据的插入以及数据的删除中的一个或多个;
内置移位能力,用于促进对数据结构的数据排序以及维持数据结构中的数据的基本上已排序的顺序中的一个或两者;
其中在存储器上定义的数据结构位于具有内置移位能力的存储器以及另一基本上非可移位的存储器的两者中。
2.如权利要求1所述的支持内存储数据结构的可移位存储器,其中数据结构包括数据树。
3.如权利要求2所述的支持内存储数据结构的可移位存储器,其中数据树包括B+树。
4.如权利要求1所述的支持内存储数据结构的可移位存储器,其中数据结构包括散列表。
5.如权利要求1所述的支持内存储数据结构的可移位存储器,其中数据结构的数据包括幻影记录以及记录间隙中的一个或两者。
6.如权利要求1所述的支持内存储数据结构的可移位存储器,进一步包括数据结构操作器,用于对存储器中的数据结构操作。
7.如权利要求6所述的支持内存储数据结构的可移位存储器,其中内置移位能力结合数据结构操作器来提供对数据结构的数据排序以及维持在数据结构中的数据的基本上已排序的顺序中的一个或两者。
8.如权利要求6所述的支持内存储数据结构的可移位存储器,其中数据结构操作器包括图书馆排序操作器、插值搜索操作器、二分搜索操作器以及顺序搜索操作器中的一个或多个。
9.一种具有内存储数据结构支持的可移位存储器系统,包括:
可移位存储器,包括具有内置数据移位能力的多个存储器单元,所述内置数据移位能力用于将存储在存储器单元中的数据的邻接子集在可移位存储器内从第一位置向第二位置移位,邻接子集的大小比可移位存储器的总大小更小;以及
数据结构操作器,其被定义在可移位存储器上以对内存储数据结构操作,内存储数据结构用于包含包括邻接子集的数据,
其中内置数据移位能力结合数据结构操作器促进数据结构的移动数据记录、数据结构的插入数据记录以及数据结构的删除数据记录中的一个或多个。
10.如权利要求9所述的可移位存储器系统,其中数据结构操作器包括以下一个或多个:
旋转操作器;
插值搜索操作器;
二分搜索操作器;以及
顺序搜索操作器。
11.如权利要求9所述的可移位存储器系统,其中数据结构操作器包括排序操作器以对数据结构中的数据排序以及维持数据结构中的数据的基本上已排序的顺序中的一个或两者,数据结构包括数据记录的基本上已排序的阵列。
12.一种使用具有内存储数据结构的可移位存储器的方法,所述方法包括:
定义数据结构,所述数据结构包括可移位存储器的存储器单元,可移位存储器具有多个存储器单元,所述多个存储器单元具有内置移位能力,所述内置移位能力用于将数据的邻接子集在可移位存储器内从第一位置向第二位置移位,数据的邻接子集的大小小于可移位存储器的总大小;以及
执行数据结构操作器来对数据结构操作,数据结构用于包含包括数据的邻接子集的数据,
其中可移位存储器的内置移位能力通过提供对邻接子集的向下移位以及向上移位中的一个或两者来促进执行数据结构操作器。
13.如权利要求12所述的使用具有内存储数据结构的可移位存储器的方法,其中执行数据结构操作器进一步包括:
执行对数据结构的数据的搜索,并且
其中内置移位能力用于促进对数据结构的数据排序以及维持数据结构的数据的基本上已排序的顺序中的一个或两者。
14.如权利要求12所述的使用具有内存储数据结构的可移位存储器的方法,进一步包括在数据结构的数据中插入幻影记录以及记录间隙中的一个或两者。
CN201180074415.8A 2011-10-27 2011-10-27 支持内存储数据结构的可移位存储器 Active CN103890856B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/058185 WO2013062562A1 (en) 2011-10-27 2011-10-27 Shiftable memory supporting in-memory data structures

Publications (2)

Publication Number Publication Date
CN103890856A CN103890856A (zh) 2014-06-25
CN103890856B true CN103890856B (zh) 2017-07-11

Family

ID=48168231

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180074415.8A Active CN103890856B (zh) 2011-10-27 2011-10-27 支持内存储数据结构的可移位存储器

Country Status (5)

Country Link
US (1) US9606746B2 (zh)
CN (1) CN103890856B (zh)
DE (1) DE112011105774B4 (zh)
GB (1) GB2509423B (zh)
WO (1) WO2013062562A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2727114B1 (en) 2011-06-28 2020-04-22 Hewlett-Packard Enterprise Development LP Shiftable memory
EP2771885B1 (en) 2011-10-27 2021-12-01 Valtrus Innovations Limited Shiftable memory supporting atomic operation
CN103890857B (zh) * 2011-10-27 2017-02-15 慧与发展有限责任合伙企业 采用环形寄存器的可移位的存储器
US9589623B2 (en) 2012-01-30 2017-03-07 Hewlett Packard Enterprise Development Lp Word shift static random access memory (WS-SRAM)
US9542307B2 (en) 2012-03-02 2017-01-10 Hewlett Packard Enterprise Development Lp Shiftable memory defragmentation
US9384824B2 (en) * 2012-07-10 2016-07-05 Hewlett Packard Enterprise Development Lp List sort static random access memory
US9378304B2 (en) * 2013-01-16 2016-06-28 Google Inc. Searchable, mutable data structure
CN107992294A (zh) * 2017-12-20 2018-05-04 成都优易数据有限公司 一种通用的信息表达和信息传递的超级数据结构
GB201903513D0 (en) 2019-03-14 2019-05-01 Blueshift Memory Ltd Moving data in a memory and command for memory control
US11228443B2 (en) * 2019-03-25 2022-01-18 Micron Technology, Inc. Using memory as a block in a block chain
US11901006B2 (en) 2019-05-16 2024-02-13 Xenergic Ab Shiftable memory and method of operating a shiftable memory

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4864544A (en) * 1986-03-12 1989-09-05 Advanced Micro Devices, Inc. A Ram cell having means for controlling a bidirectional shift
CN1762027A (zh) * 2003-03-14 2006-04-19 皇家飞利浦电子股份有限公司 二维数据存储器
CN101162471A (zh) * 2007-11-15 2008-04-16 华为技术有限公司 一种插入排序的方法和装置
CN101594319A (zh) * 2009-06-26 2009-12-02 华为技术有限公司 表项查找方法和装置

Family Cites Families (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3449887A (en) 1967-03-29 1969-06-17 American Tech Mach Co Automatic heat sealing device
US3708690A (en) 1971-02-22 1973-01-02 Mos Technology Inc Shift register
JPS5130978B1 (zh) 1971-03-05 1976-09-03
US3670313A (en) 1971-03-22 1972-06-13 Ibm Dynamically ordered magnetic bubble shift register memory
US3893088A (en) 1971-07-19 1975-07-01 Texas Instruments Inc Random access memory shift register system
US3797992A (en) 1972-12-15 1974-03-19 Combustion Unltd Inc Crude oil burner
US3812336A (en) 1972-12-18 1974-05-21 Ibm Dynamic address translation scheme using orthogonal squares
US4037205A (en) 1975-05-19 1977-07-19 Sperry Rand Corporation Digital memory with data manipulation capabilities
JPS5369545A (en) 1976-12-03 1978-06-21 Hitachi Ltd Shift-register-type memory unit
US4322635A (en) 1979-11-23 1982-03-30 Texas Instruments Incorporated High speed serial shift register for MOS integrated circuit
US4504925A (en) 1982-01-18 1985-03-12 M/A-Com Linkabit, Inc. Self-shifting LIFO stack
US4521874A (en) 1982-09-28 1985-06-04 Trw Inc. Random access memory device
US4532606A (en) 1983-07-14 1985-07-30 Burroughs Corporation Content addressable memory cell with shift capability
JPH0754638B2 (ja) 1986-02-18 1995-06-07 松下電子工業株式会社 シフトレジスタ
US4813015A (en) 1986-03-12 1989-03-14 Advanced Micro Devices, Inc. Fracturable x-y storage array using a ram cell with bidirectional shift
JPS63231798A (ja) 1987-03-20 1988-09-27 Fujitsu Ltd 2次元シフトレジスタ
US4903240A (en) 1988-02-16 1990-02-20 Tektronix, Inc. Readout circuit and method for multiphase memory array
US4873665A (en) 1988-06-07 1989-10-10 Dallas Semiconductor Corporation Dual storage cell memory including data transfer circuits
CA1286803C (en) 1989-02-28 1991-07-23 Benoit Nadeau-Dostie Serial testing technique for embedded memories
US5153846A (en) 1990-07-30 1992-10-06 At&T Bell Laboratories Digital shift register using random access memory
JPH0566921A (ja) 1991-09-10 1993-03-19 Fujitsu Ltd データシフト回路
WO1993014459A1 (en) 1992-01-17 1993-07-22 Caelum Research Corporation Modular parallel processing system
US5313433A (en) 1992-09-11 1994-05-17 Micron Technology, Inc. Windowed flash write circuit
TW207013B (en) 1993-02-19 1993-06-01 Nat Science Committee Architecture of optimal high-speed sorter
JPH08507888A (ja) 1993-03-23 1996-08-20 シウ フ チャン,デイヴィッド 知能メモリアーキテクチャ
JP2970389B2 (ja) 1994-03-30 1999-11-02 日本電気株式会社 フリップ・フロップ回路
US5698997A (en) 1995-09-28 1997-12-16 Mayo Foundation For Medical Education And Research Resonant tunneling diode structures for functionally complete low power logic
EP0827156B1 (en) 1996-08-26 2003-02-26 Texas Instruments Incorporated Shift register using negative resistance devices
JP3284491B2 (ja) 1997-07-08 2002-05-20 達治 増田 Srフリップ・フロップ
US5930323A (en) 1997-08-26 1999-07-27 Texas Instruments Incorporation Ultra fast shift register using resonant tunnel diodes
JP3157753B2 (ja) 1997-09-30 2001-04-16 日本電気アイシーマイコンシステム株式会社 半導体記憶回路
JP3037252B2 (ja) 1998-01-28 2000-04-24 日本電気アイシーマイコンシステム株式会社 アドレス選択回路
US6526505B1 (en) 1998-07-20 2003-02-25 Koninklijke Philips Electronics N.V. DES encryption system
US6061417A (en) 1998-12-03 2000-05-09 Xilinx, Inc. Programmable shift register
US6362660B1 (en) 1999-07-13 2002-03-26 Texas Instruments Incorporated CMOS latch and register circuitry using quantum mechanical tunneling structures
JP3744285B2 (ja) 1999-10-29 2006-02-08 日本電気株式会社 シフトレジスタ及びその制御方法
US6519204B2 (en) 2000-11-03 2003-02-11 Broadcom Corporation Very small swing high performance CMOS static memory (multi-port register file) with power reducing column multiplexing scheme
US6625057B2 (en) 2000-11-17 2003-09-23 Kabushiki Kaisha Toshiba Magnetoresistive memory device
US6515895B2 (en) 2001-01-31 2003-02-04 Motorola, Inc. Non-volatile magnetic register
US7051153B1 (en) 2001-05-06 2006-05-23 Altera Corporation Memory array operating as a shift register
JP4856848B2 (ja) 2001-10-11 2012-01-18 アルテラ コーポレイション プログラマブルロジックリソース上のエラー検出
KR100481175B1 (ko) 2002-08-08 2005-04-07 삼성전자주식회사 시프트 리던던시 회로들을 가지는 반도체 메모리 장치
GB2393277B (en) 2002-09-17 2006-01-18 Micron Europe Ltd Method for manipulating data in a group of processing elements to perform a reflection of the data
US7139946B2 (en) 2002-12-18 2006-11-21 Logicvision, Inc. Method and test circuit for testing memory internal write enable
JP2004287165A (ja) 2003-03-24 2004-10-14 Seiko Epson Corp 表示ドライバ、電気光学装置、電子機器及び表示駆動方法
JP2004296040A (ja) 2003-03-28 2004-10-21 Renesas Technology Corp 半導体記憶装置
US6834005B1 (en) 2003-06-10 2004-12-21 International Business Machines Corporation Shiftable magnetic shift register and method of using the same
JP4350459B2 (ja) 2003-08-26 2009-10-21 株式会社ルネサステクノロジ 不揮発性半導体記憶装置
US7260757B2 (en) 2003-11-25 2007-08-21 International Business Machines Corporation System and method for testing electronic devices on a microchip
US7330369B2 (en) 2004-04-06 2008-02-12 Bao Tran NANO-electronic memory array
DE102005023118B3 (de) 2005-05-19 2006-12-21 Infineon Technologies Ag Schaltungsanordnung zum Zuführen von Konfigurationsdaten in FPGA-Einrichtungen
KR101102157B1 (ko) 2005-09-16 2012-01-02 삼성전자주식회사 금속 나노 입자를 이용한 휘발성 음저항 소자
KR100719310B1 (ko) 2005-09-23 2007-05-17 한국과학기술원 셋/리셋 래치 회로, 시미트 트리거 회로 및 셋/리셋 래치회로를 이용한 모바일 기반의 d형 플립 플롭 회로와주파수 분배기 회로
JP4950490B2 (ja) 2005-12-28 2012-06-13 株式会社東芝 不揮発性スイッチング素子およびその製造方法ならびに不揮発性スイッチング素子を有する集積回路
DE102006007023B3 (de) 2006-02-15 2007-03-22 Infineon Technologies Ag Halbleiterspeicher-Vorrichtung mit einer Wortleitungsansteuerung
US7743202B2 (en) 2006-03-09 2010-06-22 Mediatek Inc. Command controller, prefetch buffer and methods for accessing a serial flash in an embedded system
JP4229140B2 (ja) 2006-06-16 2009-02-25 ソニー株式会社 集積回路チップ、データ読み出し方法、データ書き込み方法、icカード、および携帯電話機
KR100864827B1 (ko) 2006-11-02 2008-10-23 한국전자통신연구원 Mit 소자를 이용한 논리회로
US7508701B1 (en) 2006-11-29 2009-03-24 The Board Of Trustees Of The Leland Stanford Junior University Negative differential resistance devices and approaches therefor
CA2645813C (en) 2006-12-22 2010-02-02 Sidense Corp. Mask programmable anti-fuse architecture
JP5066921B2 (ja) 2007-01-17 2012-11-07 横浜ゴム株式会社 空気入りタイヤ
US20090193384A1 (en) * 2008-01-25 2009-07-30 Mihai Sima Shift-enabled reconfigurable device
US8283730B2 (en) 2008-05-27 2012-10-09 Shu-Lu Chen Negative differential resistance device with high PVCR and fast switching speed and memory using the same
CN101383188B (zh) 2008-07-16 2011-02-16 南京航空航天大学 一种胚胎电子系统
TWI416529B (zh) 2008-09-26 2013-11-21 Ind Tech Res Inst 磁性移位暫存記憶體以及操作方法
US9442846B2 (en) 2009-03-17 2016-09-13 Cisco Technology, Inc. High speed memory systems and methods for designing hierarchical memory systems
US8275728B2 (en) 2009-11-05 2012-09-25 The United States Of America As Represented By The Secretary Of The Air Force Neuromorphic computer
US8189408B2 (en) 2009-11-17 2012-05-29 Freescale Semiconductor, Inc. Memory device having shifting capability and method thereof
US8525146B2 (en) 2010-12-06 2013-09-03 Hewlett-Packard Development Company, L.P. Electrical circuit component
EP2727114B1 (en) * 2011-06-28 2020-04-22 Hewlett-Packard Enterprise Development LP Shiftable memory

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4864544A (en) * 1986-03-12 1989-09-05 Advanced Micro Devices, Inc. A Ram cell having means for controlling a bidirectional shift
CN1762027A (zh) * 2003-03-14 2006-04-19 皇家飞利浦电子股份有限公司 二维数据存储器
CN101162471A (zh) * 2007-11-15 2008-04-16 华为技术有限公司 一种插入排序的方法和装置
CN101594319A (zh) * 2009-06-26 2009-12-02 华为技术有限公司 表项查找方法和装置

Also Published As

Publication number Publication date
DE112011105774T5 (de) 2014-08-07
DE112011105774B4 (de) 2019-02-28
US20140297985A1 (en) 2014-10-02
WO2013062562A1 (en) 2013-05-02
CN103890856A (zh) 2014-06-25
US9606746B2 (en) 2017-03-28
GB201405179D0 (en) 2014-05-07
GB2509423B (en) 2016-03-09
GB2509423A (en) 2014-07-02

Similar Documents

Publication Publication Date Title
CN103890856B (zh) 支持内存储数据结构的可移位存储器
CN105242871B (zh) 一种数据写入方法及装置
TWI731595B (zh) 區塊鏈狀態資料儲存方法及裝置、電子設備
CN103578526B (zh) 刷新地址产生器、存储器装置以及刷新存储器装置的方法
TWI737152B (zh) 基於區塊鏈的分級儲存方法及裝置、電子設備
US7424474B2 (en) Data structure and method for sorting using heap-supernodes
CN103871447B (zh) 与非门快闪存储器阵列及芯片及其存取、读取及管理方法
CN110188108A (zh) 数据存储方法、装置、系统、计算机设备及存储介质
US7657525B2 (en) Data structure and method for pipeline heap-sorting
CN107784121A (zh) 一种基于非易失内存的日志文件系统的小写优化方法
CN103890857B (zh) 采用环形寄存器的可移位的存储器
CN101533408A (zh) 一种海量数据的处理方法及处理装置
CN107153707A (zh) 一种针对非易失内存的哈希表构建方法及系统
CN104899154B (zh) 基于嵌入式系统混合主存的页面管理方法
US9431074B2 (en) Shiftable memory supporting bimodal storage
CN109582214A (zh) 数据访问方法以及计算机系统
CN101169761A (zh) 大容量缓存实现方法及存储系统
TW392113B (en) File management method
US20140310453A1 (en) Shiftable memory supporting atomic operation
CN107622020A (zh) 一种数据存储方法、访问方法及装置
KR101438667B1 (ko) 비휘발성 램 기반의 b+ 트리 데이터베이스화 방법
CN106844491A (zh) 一种临时数据的写入、读取方法及写入、读取装置
CN110109763A (zh) 一种共享内存管理方法及装置
JPH02234242A (ja) 部分書込み制御装置
CN110515897B (zh) Lsm存储系统读性能的优化方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20161229

Address after: American Texas

Applicant after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP

Address before: American Texas

Applicant before: Hewlett-Packard Development Company, L.P.

GR01 Patent grant
GR01 Patent grant