CN104331497A - 一种利用向量指令并行处理文件索引的方法及装置 - Google Patents
一种利用向量指令并行处理文件索引的方法及装置 Download PDFInfo
- Publication number
- CN104331497A CN104331497A CN201410662785.9A CN201410662785A CN104331497A CN 104331497 A CN104331497 A CN 104331497A CN 201410662785 A CN201410662785 A CN 201410662785A CN 104331497 A CN104331497 A CN 104331497A
- Authority
- CN
- China
- Prior art keywords
- index
- node
- data
- module
- leaf
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 79
- 230000008569 process Effects 0.000 title claims abstract description 30
- 238000003860 storage Methods 0.000 claims abstract description 18
- 238000012545 processing Methods 0.000 claims description 20
- 230000001174 ascending effect Effects 0.000 claims description 9
- 230000003139 buffering effect Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 230000001737 promoting effect Effects 0.000 description 3
- 238000011282 treatment Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000013480 data collection Methods 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 206010033799 Paralysis Diseases 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种并行处理文件索引数据的方法及装置。所述方法包括计算数据表中数据的索引键值并排序;分配所有叶子节点所需的存储空间;使用SIMD指令一次加载多个索引键值,将数据依次填充到所有叶子节点;分配上一层内部节点所需的存储空间;建立内部节点;继续构建上一层内部节点,直到上一层的节点数为1,此节点为根节点,索引树建立完成;在内存中建立缓存池,用一个查询队列暂时保存所收到的所有查询请求;当查询队列的长度达到预定阈值,将其从缓存池取出,并做排序,形成有序的待查询队列;从有序查询队列中依次取得待查询项,从所建立索引树的根节点开始,依次查找,在内部节点和叶子节点内利用SIMD方法并行查找待查询项。
Description
技术领域
本发明属于计算机应用技术领域,具体涉及一种利用向量指令并行处理文件索引的方法,与文件系统构造、处理器指令体系密切相关。
背景技术
进入云计算时代,信息爆炸式增长,面对海量数据,存储系统需要满足高性能、大容量、高可靠性与高可扩展性等方面的需求。分布式文件存储系统是获取大容量存储的有效方式,将存储容量布置在大量分布式计算机节点上,对每一份数据存储多个副本,通过并发访问提高数据访问速度,通过数据冗余提高了数据的可靠性。
当前的分布式文件系统主要采取将文件的数据与其索引数据(元数据)分开存储的方式进行管理,中心服务器(性能要求高)维护元数据信息,真实数据分散存储在数据节点。由于文件数据和索引数据分开存储,实现了文件数据传输通道和索引数据传输通道分离,利用索引数据和文件数据不同的数据特征分别优化数据访问算法,同时分散了文件I/O访问请求,提高存储系统的并行访问效率。
采用中心节点服务器管理索引数据的存储系统架构设计和实现简单,能够有效提高文件管理效率。但随着数据访问量急剧增大,索引数据服务器将成为系统的性能瓶颈,一旦索引服务器出现故障,整个系统都将陷入瘫痪。采用配置多台索引服务器的方式能增强系统的可用性,但同时也增加了系统的复杂性,因此提升单台服务器的索引处理能力存在极大的应用价值。
并行化计算是提升单机计算能力的主要途径,现代CPU架构在指令级、数据级、任务级多个层次提供了将计算并行化处理的方式,将索引处理并行化是提升单台服务器处理能力的最好选择。B+树是应用最广泛的索引结构,为了解决B+树索引插入操作效率低下的问题,研究人员已提出了多种批量插入算法来处理B+树的大规模键值插入过程,然而,由于插入过程中数据依赖性较高,这些算法都需要采用加锁的方式保证键值插入的正确性,其并行性能大打折扣。B+树索引的查询能力通常是索引数据服务的瓶颈,传统的查询方法主要通过二分查找的方式,从根节点开始搜索,直至叶子节点。但二分查找的方法不适合并行处理,无法利用现代超标量处理器的并行计算能力提升效率。
发明内容
为解决现有技术存在的不足,本发明提出了一种并行处理文件索引数据的方法,其特别适用于现代超标量处理器,利用SIMD指令处理文件索引,在处理器每个时钟周期同时处理多个索引操作,提高了存储系统访问的并行性,缩短了索引的平均处理时间,有效提升了存储系统的性能。本发明提出的并行处理文件索引数据的方法,主要用于处理树型索引,采用了如下的策略:
1)本发明所述方法通过对待处理索引项排序后再批量建立,首先建立所有的叶子节点,再建立上一层的内部节点,从底向上建立索引树,利用了索引树本身是个有序数据集的特点,避免了锁的使用,较大提升了操作的并行性。
2)通过将查询请求缓存在内存中,排序后批量处理,在大规模数据集的环境下,每个批量查询的索引组都能较好的分布在一个或多个相邻的叶子节点,按照有序查询队列依次处理,查询过程中能获得较好的局部缓存命中率,有效提升查询索引的速度。
3)在叶子节点内部搜索数据时,传统的二分查找方法存在大量的分支指令,且不容易并行化处理,本发明使用的方法利用SIMD指令的执行宽度,将大量分支指令转化为算术逻辑操作,减少了了流水线分支预测失败时带来的性能损失。
本发明提出的并行处理文件索引数据的方法,包括批量建立文件索引和并行查询文件索引,其中:
所述批量建立文件索引的方法,步骤如下:
步骤1:计算数据表中数据的索引键值,对全部数据按其索引键值升序排序;
步骤2:分配所有叶子节点所需的存储空间,假定索引树高度为h,度数为g,叶子节点填充因子为α,叶子节点数的计算公式表示为:
步骤3:从数值最小的索引键值开始,使用SIMD指令一次加载多个索引键值,将数据填充到叶子节点;按此方式,依次构建完所有叶子节点
步骤4:分配上一层内部节点所需的存储空间,假定B+树高度为h,度数为g,内部节点数的计算公式表示为;
步骤5:按步骤3的方法建立内部节点,每个节点的键值为其对应的下一层节点的最大值;
步骤6:按照步骤4和步骤5的方法继续构建上一层内部节点,直到上一层的节点数为1,此节点为根节点,就此完成整个索引构造。
所述并行查询索引的方法,步骤如下:
步骤1:在内存中建立缓存池,用一个查询队列暂时保存所收到的所有查询请求。
步骤2:当查询队列的长度达到某个阈值,将其从缓存池取出,并做排序,形成有序的待查询队列,此时相邻的多个查询索引项通常分布在一个叶子节点或相邻的多个叶子节点。
步骤3:从有序查询队列中依次取得待查询项,从索引树的根节点开始,依次查找,根据基于SIMD操作的并行查询方法,从内部节点直至找到目标叶子节点。
文件系统的索引数据的结构通常采用树型结构的索引,其索引结构具有尺寸小和结构固定的特征,适用于数据按块存取的策略。本发明利用了处理器向量处理单元的并行处理能力,针对文件系统中索引数据结构固定的特点,向量化的处理索引数据,单次计算多个索引数据,有效利用数据并行性,能够大幅提升处理器处理索引的峰值计算能力,提高了文件系统的效率。同时,本发明采用的方法很容易在任务级(task level)进行扩展,在多核处理器环境中能够得到有效应用。
附图说明
图1示出了索引数据并行处理系统结构框图
图2示出了SIMD指令执行模型
图3示出了采用批量方法建立索引的方法流程图
图4示出了以一棵4阶B+树为例的批量构建索引过程
图5示出了并行查询B+树索引的操作流程示图
图6示出了在节点内部利用SIMD指令并行查询索引项的步骤
图7示出了查找表的构造和掩码值计算过程
图8示出了查询索引的任务级并行解决方法
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明作进一步的详细说明。
描述过程约定以下符号:
N:待处理索引项的数量B:索引项的数据宽度R:向量寄存器数据宽度n:B+树叶子节点容量α:叶子节点的填充因子(初次构建叶子节点时,索引数据占叶子节点容量的比例)
g:B+树的度数
h:B+树的高度
以下具体实施方式中均以B+树为例阐述,本发明中所述方法也能用于文件索引中常采用的其他树型索引。
图1是本发明提出的文件索引数据并行处理系统的结构框图,如图1所示,该并行处理系统包括:
外部存储器,其包括磁盘、SSD等,用于存放完整的索引数据;
内存子系统,其用于存放热点数据和索引的更新;
CPU,其包括片内存储器和计算核心。其中计算核心包括一个标量处理单元和多个向量处理单元,所述计算核心对加载到所述片内存储器的索引数据进行并行处理,所述处理包括解压缩、索引建立、查询等计算。
高性能索引处理函数库,基于SIMD指令设计,结合CPU计算核心的架构,专门为索引并行处理中关键的算法优化。
图2示出了SIMD指令执行模型示意图。如图2所示,Xm,Ym,Zm是三个向量寄存器,每个寄存器包含8个32位数据,在单指令多数据流(SIMD)执行模式下,每一个操作数Xi和Yi,同时进行计算,并将结果写入相应的Zi,即对i=0→7,(XiOP Yi)→Zi。SIMD指令支持包括算术、逻辑、比较、shuffle等在内的多种操作类型,最新的处理器中还支持gather/scather类的并行离散存取指令。
本发明提出的并行处理文件索引数据的方法,包括批量建立索引和并行查询树索引,其中:
批量建立索引的方法,通过对待处理索引项排序后再根据有序数据批量建立索引树,首先建立所有的叶子节点,再建立上一层的内部节点,从底向上建立索引树。本方法利用了索引树本身是个有序数据集的特点,避免了锁的使用,较大提升了操作的并行性,而自底向上的构建方法,可一次性为所有节点分配存储空间,避免了从根节点向下的传统处理方法中频繁的叶子节点分裂操作带来的性能损失。
并行查询索引的方法,对一定时间内收到的索引请求的键值预先排序,内容相关的键值在查询队列中相互临近,在查询过程中容易落在同一个子树,利用空间局部性和高速缓存的特性,使用SIMD指令并行处理索引相关的计算。
图3示出了本发明所述批量建立文件索引的流程图。如图3所示,批量建立文件索引的方法包括:
步骤1:计算数据表中数据的索引键值,对全部数据按其索引键值升序排序;
步骤2:分配所有叶子节点所需的存储空间,假定B+树高度为h,度数为g,即内部节点的容量,叶子节点填充因子为α,叶子节点数的计算公式表示为:
叶子节点数=(N*B)/(α*n)
步骤3:从数值最小的索引键值开始,使用SIMD指令一次加载多个索引键值,将数据填充到叶子节点;按此方式,依次构建完所有叶子节点;
步骤4:分配上一层内部节点所需的存储空间,假定B+树高度为h,度数为g,即内部节点的容量为g,内部节点数的计算公式表示为;
内部节点数=(下一层节点数)/g
步骤5:按步骤3的方法建立内部节点,每个节点的键值为其对应的下一层节点的最大值;
步骤6:按照步骤4和步骤5的方法继续构建上一层内部节点,直到上一层的节点数为1,此节点为根节点,就此完成整个索引构造。其中,内部节点的索引项由其每个孩子节点最大的索引值组成,遍历一次孩子节点,即完成上一层内部节点的更新。自底向上,直到根节点,完成整个B+树的建立。
由于索引数据结构固定,且是按顺序存储的,在计算完索引键值后对全部索引数据进行排序,产生的键值排列顺序和实际物理存储地址次序一致,加载和存储索引过程中不需要交换索引键值的顺序,因而可以利用SIMD指令并行操作。假定单个索引项数据占8个字节的空间,256位向量寄存器支持一次加载和写入4个索引,每组数据需数据加载、地址计算、写入共3个操作。给定一个已完成排序的长度为N的数据表,共需要N×3/4条指令写完叶子节点。内部节点的索引项由其每个孩子节点最大的索引值组成,遍历一次孩子节点,即完成上一层内部节点的更新。自底向上,直到根节点,完成整个B+树的建立。
图4示出了批量建立B+树索引的过程。这里以4阶的B+树为例,若向量寄存器宽度为256bit,每个索引项大小为64bit,向量寄存器每次正好放下4个索引,实际系统中叶子节点的容量设计为向量寄存器宽度的整数倍,可以获得最好的数据存取效率。图4右表中数据已按升序排列,遍历整表,每次存取4个索引指针,依次建立好索引叶子节点;接着以叶子节点为基础建立内部索引节点,例如,图中B+树根节点的左子节点,分别由其子节点的最大值索引17,45,61组成,在一次遍历完叶子节点后,构建完上一层内部节点;最后完成根节点。
图5示出了并行查询B+树索引的流程图。如图5所示,所述并行查询B+树索引方法的步骤如下:
步骤1:在内存中建立缓存池,用一个查询队列暂时保存所收到的所有查询请求。
步骤2:当查询队列的长度达到某个阈值,将其从缓存池取出,并根据待查询索引项的键值升序排序,形成有序的待查询队列,此时相邻的多个查询索引项通常分布在一个叶子节点或相邻的多个叶子节点。
步骤3:从有序查询队列中依次取得待查询项,从索引树的根节点开始,依次查找,从内部节点直至找到目标叶子节点,在内部节点和叶子节点内利用SIMD方法并行查找索引项的方法在图6中描述。
图6示出了在节点内部利用SIMD指令并行查询索引项的步骤。如图6所示,所示在节点内部利用SIMD指令并行查询索引项的步骤如下:
假定要查找的索引项键值是k,索引项的数据宽度为B,向量寄存器数据宽度为R,SIMD指令每次同时处理m=R/B个索引项。
步骤1:根据查找的索引项键值k构造查询向量:
Ms=kk…k(m个k)
计算节点初始地址A0,地址增量Ainc初始化为0;
步骤2:更新当前地址A0=A0+Ainc,并从当前地址A0开始,加载索引数据向量,并:
M0=k0k1…km-1
步骤3:利用SIMD比较指令,计算查找表掩码值:
Mmask=SIMD_Greater(Ms,M0)
由于节点内数据是升序排列的,Mmask的值由如下公式决定:
步骤4:判定Mmask的值,若为全1,说明索引项k在下一个M0数据段中,此时应从步骤2开始重新查询,计算地址增量Ainc=R/8;若为全0,说明索引项k在前一个M0数据段中,此时应从步骤2开始重新查询,计算地址增量Ainc=-R/8;若Mmask的值非全0或全1,说明索引项k在当前M0数据段中,此时根据查找表获取索引项所在位置,进而返回查询结果。
图7示出了查找表的构造和掩码值计算过程。掩码值由关键值key与数据节的大小比较值决定,若key值小于索引数据,相应掩码数据位值为0,反之则为1。索引数据本身的有序性保证了a3>a2>a1>a0,b3>b2>b1>b0。若key值正好比最低位a0(b0)小,则掩码值为全0,根据B+树的结构特点,此时key值应落在a0(b0)的子树路径上。若key值比最高位a3(b3)大,掩码值为全0,key值此时不在此数据节,此时需要在下一段数据中搜索。若key值比最低位a0(b0)大,掩码值为全1,key值此时不在此数据节,此时需要在下一段数据中搜索。在图示4位查找表的情况下,只有掩码0000,0001,0011,0111对应于索引编号0,1,2,3,其余掩码均无效,而在掩码为1111(全1)的情况下,则说明键值不在该索引段。
图8示出了查询索引的任务级并行解决方法。根据相关查询索引项存在共用查询路径的事实,该共用查询路径在B+树结构中以共用树枝的形式存在。据此,索引树被分解为多个无关森林,相对应的索引项为无关键值查询组。上述的多个无关键值查询组,用于实现任务级的并行,每个无关键值查询组分配给不同的进程或者处理器核分别处理,相互之间无数据依赖,此方法实现了粗粒度的任务级并行。
本发明所述对文件索引并行操作的方法,利用向量指令实现指令级和数据级的并行,对于建立索引和查询索引这类计算密集型的任务,能有效发挥处理器的计算效能。通过使用查找表的结构计算子树路径,减少和避免使用分支指令,大幅降低了因为分支预测失败等带来的性能损失。在索引运行一段时间后由于资源回收产生碎片化而性能下降,批量建立索引可用于快速重建索引,加速索引效率。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种并行处理文件索引数据的方法,包括批量建立文件索引和并行查询文件索引,其中:
所述批量建立文件索引的方法,步骤如下:
步骤101:计算数据表中数据的索引键值,对全部数据按其索引键值升序排序;
步骤102:分配所有叶子节点所需的存储空间,所述叶子节点数量根据所述数据的大小确定;
步骤103:从数值最小的索引键值开始,使用SIMD指令一次加载多个索引键值,将数据依次填充到所有叶子节点;
步骤104:分配上一层内部节点所需的存储空间,所述内部节点的个数与下一层节点数和索引树的度数有关;
步骤105:按步骤3的方法建立内部节点,每个节点的键值为其对应的下一层节点的最大值;
步骤106:按照步骤4和步骤5的方法继续构建上一层内部节点,直到上一层的节点数为1,此节点为根节点,索引树建立完成;
所述并行查询索引的方法,步骤如下:
步骤201:在内存中建立缓存池,用一个查询队列暂时保存所收到的所有查询请求;
步骤202:当查询队列的长度达到预定阈值,将其从缓存池取出,并做排序,形成有序的待查询队列;
步骤203:从有序查询队列中依次取得待查询项,从所建立索引树的根节点开始,依次查找,在内部节点和叶子节点内利用SIMD方法并行查找待查询项。
2.如权利要求1所述的方法,其中,步骤102中叶子节点数如下计算:
叶子节点数=(N*B)/(α*n)
其中,N为待处理索引项的数量,B为所以那些的数据宽度,a为叶子节点的填充因子,n为叶子节点的容量。
3.如权利要求1所述的方法,其中,步骤104中,内部节点的数量如下计算:
内部节点数=(下一层节点数)/g
其中,g为索引树的度数。
4.如权利要求1所述的方法,其中,步骤202中排序后的查询队列中,相邻的待查询项分布在所述索引树的一个或相邻的多个叶子节点中。
5.如权利要求1所述的方法,其中,步骤203中,在内部节点和叶子节点内利用SIMD方法并行查找待查询项具体包括:步骤301:根据待查询项的键值构造查询向量Ms=kk…k,m个k,m为SIMD指令能同时处理的索引项个数;
步骤302:更新当前地址A0=A0+Ainc,并从当前地址A0开始,加载索引数据向量,所述A0的初始值为节点的初始地址,Ainc为地址增量,初始值为0,所加载的索引向量为:
M0=k0k1…km-1
步骤303:利用SIMD比较指令,计算查找表掩码值:
Mmask=SIMD_Greater(Ms,M0)
由于节点内数据是升序排列的,Mmask的值由如下公式决定:
步骤304:判定Mmask的值,若为全1,计算地址增量Ainc=R/8,并转步骤2重新查询;若为全0,则所述索引项在前一个索引向量中,计算地址增量Ainc=-R/8;若Mmask的值非全0或全1,根据查找表获取索引项所在位置,进而返回查询结果;其中,R为向量寄存器的数据宽度。
6.一种并行处理文件索引数据的装置,包括批量建立文件索引模块和并行查询文件索引模块,其中:
所述批量建立文件索引模块包括:
索引键值计算模块,用于计算数据表中数据的索引键值,对全部数据按其索引键值升序排序;
叶子节点空间分配模块,用于分配所有叶子节点所需的存储空间,所述叶子节点数量根据所述数据的大小确定;
叶子节点建立模块,用于从数值最小的索引键值开始,使用SIMD指令一次加载多个索引键值,将数据依次填充到所有叶子节点;
内部节点空间分配模块,用于分配上一层内部节点所需的存储空间,所述内部节点的个数与下一层节点数和索引树的度数有关;
内部节点建立模块,用于按叶子节点的方法建立内部节点,每个节点的键值为其对应的下一层节点的最大值;
上一次内部节点建立模块,按照所述内部节点空间分配模块和内部节点建立模块的方法继续构建上一层内部节点,直到上一层的节点数为1,此节点为根节点,索引树建立完成;
所述并行查询索引的模块包括:
缓存模块,用于在内存中建立缓存池,用一个查询队列暂时保存所收到的所有查询请求;
队列形成模块,用于当查询队列的长度达到预定阈值,将其从缓存池取出,并做排序,形成有序的待查询队列;
查询模块,用于从有序查询队列中依次取得待查询项,从所建立索引树的根节点开始,依次查找,在内部节点和叶子节点内利用SIMD方法并行查找待查询项。
7.如权利要求6所述的装置,其中,所述叶子节点数量如下计算:
叶子节点数=(N*B)/(α*n)
其中,N为待处理索引项的数量,B为所以那些的数据宽度,a为叶子节点的填充因子,n为叶子节点的容量。
8.如权利要求6所述的装置,其中,所述内部节点的数量如下计算:
内部节点数=(下一层节点数)/g
其中,g为索引树的度数。
9.如权利要求6所述的装置,其中,排序后的查询队列中,相邻的待查询项分布在所述索引树的一个或相邻的多个叶子节点中。
10.如权利要求6所述的装置,其中,所述查询模块具体包括:
构造模块:根据待查询项的键值构造查询向量Ms=kk…k,m个k,m为SIMD指令能同时处理的索引项个数;
更新模块:更新当前地址A0=A0+Ainc,并从当前地址A0开始,加载索引数据向量,所述A0的初始值为节点的初始地址,Ainc为地址增量,初始值为0,所加载的索引向量为:
M0=k0k1…km-1
查找模块:利用SIMD比较指令,计算查找表掩码值:
Mmask=SIMD_Greater(Ms,M0)
由于节点内数据是升序排列的,Mmask的值由如下公式决定:
结构输出模块:判定Mmask的值,若为全1,计算地址增量Ainc=R/8,并转步骤2重新查询;若为全0,则所述索引项在前一个索引向量中,计算地址增量Ainc=-R/8;若Mmask的值非全0或全1,根据查找表获取索引项所在位置,进而返回查询结果;其中,R为向量寄存器的数据宽度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410662785.9A CN104331497A (zh) | 2014-11-19 | 2014-11-19 | 一种利用向量指令并行处理文件索引的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410662785.9A CN104331497A (zh) | 2014-11-19 | 2014-11-19 | 一种利用向量指令并行处理文件索引的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104331497A true CN104331497A (zh) | 2015-02-04 |
Family
ID=52406224
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410662785.9A Pending CN104331497A (zh) | 2014-11-19 | 2014-11-19 | 一种利用向量指令并行处理文件索引的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104331497A (zh) |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729053A (zh) * | 2017-10-17 | 2018-02-23 | 安徽皖通邮电股份有限公司 | 一种实现高速缓存表的方法 |
CN107924306A (zh) * | 2015-08-14 | 2018-04-17 | 高通股份有限公司 | 使用simd指令的表查找 |
CN108256083A (zh) * | 2018-01-22 | 2018-07-06 | 成都博睿德科技有限公司 | 基于深度学习的内容推荐方法 |
CN108292294A (zh) * | 2015-12-18 | 2018-07-17 | 英特尔公司 | 用于混合和置换操作序列的指令和逻辑 |
CN108292293A (zh) * | 2015-12-18 | 2018-07-17 | 英特尔公司 | 用于得到多个向量元素操作的指令和逻辑 |
CN108632102A (zh) * | 2017-03-16 | 2018-10-09 | 大唐移动通信设备有限公司 | 一种信令处理方法及装置 |
CN108664583A (zh) * | 2018-05-04 | 2018-10-16 | 北京物灵智能科技有限公司 | 一种索引树建立方法以及图像检索方法 |
CN108874799A (zh) * | 2017-05-09 | 2018-11-23 | 中国科学院沈阳自动化研究所 | 高速并行数据查找方法 |
CN109002467A (zh) * | 2018-06-08 | 2018-12-14 | 中国科学院计算技术研究所 | 一种基于向量化执行的数据库排序方法及系统 |
CN109117433A (zh) * | 2017-06-23 | 2019-01-01 | 菜鸟智能物流控股有限公司 | 一种索引树对象的创建及其索引方法和相关装置 |
CN109416630A (zh) * | 2016-07-22 | 2019-03-01 | 英特尔公司 | 用于多个缓冲器的自适应处理的技术 |
CN109416633A (zh) * | 2016-07-08 | 2019-03-01 | Arm有限公司 | 用于执行重新排列操作的设备及方法 |
CN109522271A (zh) * | 2018-10-22 | 2019-03-26 | 郑州云海信息技术有限公司 | 一种b+树节点的批量插入和删除方法及装置 |
CN111382120A (zh) * | 2018-12-29 | 2020-07-07 | 贵州白山云科技股份有限公司 | 一种小文件管理方法、系统和计算机设备 |
CN111581205A (zh) * | 2019-03-15 | 2020-08-25 | 北京忆芯科技有限公司 | 具有节点索引的b+树操作装置及其方法 |
CN111581206A (zh) * | 2019-03-15 | 2020-08-25 | 北京忆芯科技有限公司 | B+树操作装置及其方法 |
CN112100446A (zh) * | 2019-06-18 | 2020-12-18 | 上海赜睿信息科技有限公司 | 搜索方法、可读存储介质和电子设备 |
CN112579575A (zh) * | 2020-12-28 | 2021-03-30 | 超越科技股份有限公司 | 一种数据库索引结构的快速构建方法 |
CN113282854A (zh) * | 2021-06-01 | 2021-08-20 | 平安国际智慧城市科技股份有限公司 | 数据请求响应方法、装置、电子设备及存储介质 |
CN113297204A (zh) * | 2020-07-15 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 索引生成方法及装置 |
CN113392089A (zh) * | 2021-06-25 | 2021-09-14 | 瀚高基础软件股份有限公司 | 一种数据库索引优化方法及可读存储介质 |
CN115202834A (zh) * | 2021-05-27 | 2022-10-18 | 华为技术有限公司 | 任务迁移的系统及方法 |
CN117076466A (zh) * | 2023-10-18 | 2023-11-17 | 河北因朵科技有限公司 | 一种针对大型档案数据库的快速数据索引方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101242362A (zh) * | 2008-03-07 | 2008-08-13 | 华为技术有限公司 | 查找键值生成装置及方法 |
US8417735B1 (en) * | 2007-12-12 | 2013-04-09 | Nvidia Corporation | Instruction-efficient algorithm for parallel scan using initialized memory regions to replace conditional statements |
CN103440238A (zh) * | 2012-03-09 | 2013-12-11 | 辉达公司 | 图形处理单元中的3d加速结构的完全并行适当地构造 |
EP2778902A1 (en) * | 2013-03-15 | 2014-09-17 | Intel Corporation | Fast approach to finding minimum and maximum values in a large data set using simd instruction set architecture |
-
2014
- 2014-11-19 CN CN201410662785.9A patent/CN104331497A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8417735B1 (en) * | 2007-12-12 | 2013-04-09 | Nvidia Corporation | Instruction-efficient algorithm for parallel scan using initialized memory regions to replace conditional statements |
CN101242362A (zh) * | 2008-03-07 | 2008-08-13 | 华为技术有限公司 | 查找键值生成装置及方法 |
CN103440238A (zh) * | 2012-03-09 | 2013-12-11 | 辉达公司 | 图形处理单元中的3d加速结构的完全并行适当地构造 |
EP2778902A1 (en) * | 2013-03-15 | 2014-09-17 | Intel Corporation | Fast approach to finding minimum and maximum values in a large data set using simd instruction set architecture |
Non-Patent Citations (1)
Title |
---|
刘勇等: "图形处理器上CSB+-树索引的并行构建算法", 《中国期刊全文数据库 华南理工大学学报(自然科学版)》 * |
Cited By (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107924306A (zh) * | 2015-08-14 | 2018-04-17 | 高通股份有限公司 | 使用simd指令的表查找 |
CN108292294A (zh) * | 2015-12-18 | 2018-07-17 | 英特尔公司 | 用于混合和置换操作序列的指令和逻辑 |
CN108292293A (zh) * | 2015-12-18 | 2018-07-17 | 英特尔公司 | 用于得到多个向量元素操作的指令和逻辑 |
CN109416633A (zh) * | 2016-07-08 | 2019-03-01 | Arm有限公司 | 用于执行重新排列操作的设备及方法 |
CN109416633B (zh) * | 2016-07-08 | 2023-02-28 | Arm有限公司 | 用于执行重新排列操作的设备及方法 |
CN109416630B (zh) * | 2016-07-22 | 2024-01-30 | 英特尔公司 | 用于多个缓冲器的自适应处理的方法和装置 |
CN109416630A (zh) * | 2016-07-22 | 2019-03-01 | 英特尔公司 | 用于多个缓冲器的自适应处理的技术 |
CN108632102A (zh) * | 2017-03-16 | 2018-10-09 | 大唐移动通信设备有限公司 | 一种信令处理方法及装置 |
CN108632102B (zh) * | 2017-03-16 | 2020-11-06 | 大唐移动通信设备有限公司 | 一种信令处理方法及装置 |
CN108874799A (zh) * | 2017-05-09 | 2018-11-23 | 中国科学院沈阳自动化研究所 | 高速并行数据查找方法 |
CN108874799B (zh) * | 2017-05-09 | 2021-11-30 | 中国科学院沈阳自动化研究所 | 高速并行数据查找方法 |
CN109117433A (zh) * | 2017-06-23 | 2019-01-01 | 菜鸟智能物流控股有限公司 | 一种索引树对象的创建及其索引方法和相关装置 |
CN107729053A (zh) * | 2017-10-17 | 2018-02-23 | 安徽皖通邮电股份有限公司 | 一种实现高速缓存表的方法 |
CN107729053B (zh) * | 2017-10-17 | 2020-11-27 | 安徽皖通邮电股份有限公司 | 一种实现高速缓存表的方法 |
CN108256083A (zh) * | 2018-01-22 | 2018-07-06 | 成都博睿德科技有限公司 | 基于深度学习的内容推荐方法 |
CN108664583A (zh) * | 2018-05-04 | 2018-10-16 | 北京物灵智能科技有限公司 | 一种索引树建立方法以及图像检索方法 |
CN109002467A (zh) * | 2018-06-08 | 2018-12-14 | 中国科学院计算技术研究所 | 一种基于向量化执行的数据库排序方法及系统 |
CN109002467B (zh) * | 2018-06-08 | 2021-04-27 | 中国科学院计算技术研究所 | 一种基于向量化执行的数据库排序方法及系统 |
WO2020082597A1 (zh) * | 2018-10-22 | 2020-04-30 | 郑州云海信息技术有限公司 | 一种b+树节点的批量插入和删除方法及装置 |
CN109522271B (zh) * | 2018-10-22 | 2021-05-18 | 郑州云海信息技术有限公司 | 一种b+树节点的批量插入和删除方法及装置 |
CN109522271A (zh) * | 2018-10-22 | 2019-03-26 | 郑州云海信息技术有限公司 | 一种b+树节点的批量插入和删除方法及装置 |
CN111382120B (zh) * | 2018-12-29 | 2023-02-03 | 贵州白山云科技股份有限公司 | 一种小文件管理方法、系统和计算机设备 |
CN111382120A (zh) * | 2018-12-29 | 2020-07-07 | 贵州白山云科技股份有限公司 | 一种小文件管理方法、系统和计算机设备 |
CN111581206A (zh) * | 2019-03-15 | 2020-08-25 | 北京忆芯科技有限公司 | B+树操作装置及其方法 |
CN111581205A (zh) * | 2019-03-15 | 2020-08-25 | 北京忆芯科技有限公司 | 具有节点索引的b+树操作装置及其方法 |
CN111581206B (zh) * | 2019-03-15 | 2021-06-15 | 北京忆芯科技有限公司 | B+树操作装置及其方法 |
CN112100446B (zh) * | 2019-06-18 | 2024-05-14 | 上海赜睿信息科技有限公司 | 搜索方法、可读存储介质和电子设备 |
CN112100446A (zh) * | 2019-06-18 | 2020-12-18 | 上海赜睿信息科技有限公司 | 搜索方法、可读存储介质和电子设备 |
CN113297204A (zh) * | 2020-07-15 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 索引生成方法及装置 |
CN113297204B (zh) * | 2020-07-15 | 2024-03-08 | 阿里巴巴集团控股有限公司 | 索引生成方法及装置 |
CN112579575A (zh) * | 2020-12-28 | 2021-03-30 | 超越科技股份有限公司 | 一种数据库索引结构的快速构建方法 |
CN115202834A (zh) * | 2021-05-27 | 2022-10-18 | 华为技术有限公司 | 任务迁移的系统及方法 |
CN113282854A (zh) * | 2021-06-01 | 2021-08-20 | 平安国际智慧城市科技股份有限公司 | 数据请求响应方法、装置、电子设备及存储介质 |
CN113392089B (zh) * | 2021-06-25 | 2023-02-24 | 瀚高基础软件股份有限公司 | 一种数据库索引优化方法及可读存储介质 |
CN113392089A (zh) * | 2021-06-25 | 2021-09-14 | 瀚高基础软件股份有限公司 | 一种数据库索引优化方法及可读存储介质 |
CN117076466B (zh) * | 2023-10-18 | 2023-12-29 | 河北因朵科技有限公司 | 一种针对大型档案数据库的快速数据索引方法 |
CN117076466A (zh) * | 2023-10-18 | 2023-11-17 | 河北因朵科技有限公司 | 一种针对大型档案数据库的快速数据索引方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104331497A (zh) | 一种利用向量指令并行处理文件索引的方法及装置 | |
Shanbhag et al. | Efficient top-k query processing on massively parallel hardware | |
Zeng et al. | GSI: GPU-friendly subgraph isomorphism | |
Gao et al. | A systematic survey of general sparse matrix-matrix multiplication | |
EP3526665B1 (en) | Sorting for data-parallel computing devices | |
Stonebraker et al. | Intel" big data" science and technology center vision and execution plan | |
US20220114270A1 (en) | Hardware offload circuitry | |
Kim et al. | Designing fast architecture-sensitive tree search on modern multicore/many-core processors | |
WO2016192838A1 (en) | Automated determination of network motifs | |
Lalwani et al. | Efficient discrete firefly algorithm for Ctrie based caching of multiple sequence alignment on optimally scheduled parallel machines | |
Namashivavam et al. | Variable-sized blocks for locality-aware SpMV | |
Liu et al. | Improving density peaks clustering through GPU acceleration | |
Lin et al. | Efficient subgraph matching using gpus | |
Arcas-Abella et al. | Hardware acceleration for query processing: leveraging FPGAs, CPUs, and memory | |
Wang et al. | Fast k-nn graph construction by gpu based nn-descent | |
CN102722472B (zh) | 一种复数矩阵的优化方法 | |
Pan et al. | G-slide: A gpu-based sub-linear deep learning engine via lsh sparsification | |
Malik et al. | Task scheduling for GPU accelerated hybrid OLAP systems with multi-core support and text-to-integer translation | |
Kim et al. | A performance study of traversing spatial indexing structures in parallel on GPU | |
Feng et al. | A segment‐based sparse matrix–vector multiplication on CUDA | |
CN105573834B (zh) | 一种基于异构平台的高维词汇树构建方法 | |
Kruliš et al. | Optimizing sorting and top-k selection steps in permutation based indexing on gpus | |
Wang et al. | Large-Scale Approximate k-NN Graph Construction on GPU | |
Kozawa et al. | Parallel canopy clustering on GPUs | |
Zhang et al. | An incremental iterative acceleration architecture in distributed heterogeneous environments with GPUs for deep learning |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150204 |
|
WD01 | Invention patent application deemed withdrawn after publication |