当前位置: 首页 > 专利查询>湖南大学专利>正文

一种基于ARM平台加速数据库哈希操作的方法技术

技术编号:37234808 阅读:10 留言:0更新日期:2023-04-20 23:16
本发明专利技术涉及计算机数据库及基础算法移植的技术领域,具体涉及一种使用SIMD加速数据库哈希操作并移植到ARM平台的方法。本发明专利技术的方法包括:根据基础的哈希查询算法,改造实现基于SIMD技术的哈希查询方法;根据基础的哈希建表算法,改造实现基于SIMD技术的哈希建表方法;自定义SIMD转换库,实现从SSE指令集和AVX指令集,向Neon指令集的转换模块ATN,并提供快捷的转换过程。其流程如图1所示。该方法通过充分利用CPU计算能力,提高了哈希查询和哈希建表操作的执行速度。该方法通过自定义转换库,减少了开发人员的操作复杂度和编码量。减少了开发人员的操作复杂度和编码量。减少了开发人员的操作复杂度和编码量。

【技术实现步骤摘要】
一种基于ARM平台加速数据库哈希操作的方法


[0001]本专利技术涉及计算机数据库及基础算法移植的
,具体涉及一种基于ARM平台加速数据库哈希操作的设计方法。

技术介绍

[0002]随着互联网发展水平的不断进步,数据规模越发庞大,各类企业开始借助大数据和人工智能等新兴技术不断提升治理和决策的现代化水平。传统的关系型数据库,大多采用行式存储数据,同时为了兼顾ACID,其查询速度并没有太大优势,更适合实时更新和删除频繁的场景。但数据的快速增长,和对于数据分析实时性的高要求,导致传统关系型数据库不再满足其使用要求。当前,基于联机分析处理(OLAP)技术的数据库,由于其天然采用列式进行存储,更适合在读多写少的场景使用。
[0003]采用列式存储的数据库,更多的使用在对于数据查询速度要求较高的场景中,比如实时数据分析。但随着业务场景越发复杂,对于数据库查询实时性的要求更高之后,各式各样的优化方案开始出现。
[0004]数据库的查询过程大致可以分为以下几步:SQL连接器、SQL解析器、查询优化器、存储引擎、返回查询结果。目前业界出现的优化方案,大多主要针对查询优化器和执行引擎两个方面进行优化。查询优化器的优化,主要是为查询制定更合理的查询路径。而存储引擎方面的优化,则可以分为两个部分:一个方向是Compilation方面的优化,即以数据为中心的汇编生成;另一个方向是基于SIMD技术的向量化方案。总体来说,两者各有优劣,前者会有更少的物化生成,所以更适合计算密集型场景;后者在访问大型哈希表进行聚合查询时表现更优,所以更适合在访存密集型场景。
[0005]SIMD(单指令多数据流)技术是计算机科学中的一种并行计算技术,它允许一个处理器一次执行多个数据操作。SIMD技术可以提高计算机的整体性能,因为它允许每个单独的处理器核心同时处理多个数据。目前,许多处理器都支持SIMD技术,包括英特尔的AVX指令集和苹果的Neon指令集。
[0006]当前,国产平台主要以ARM平台为主。哈希操作,是数据库连接算子的重要组成部分。利用SIMD技术的向量化优化数据库哈希操作,可以提高数据库连接算子在国产ARM平台的执行速度。

技术实现思路

[0007]本专利技术的目的是设计一种基于ARM平台加速数据库哈希操作的方法。本专利技术提供了一种通过实现X86的基于AVX指令集和SSE指令集优化数据库哈希算法,再经过自定义转换库转换,得到最终的基于ARM的Neon指令集优化数据库哈希操作的方法,所叙述方法步骤如图1,包括:
[0008]1.基于SIMD技术的哈希查询和哈希建表的实现方法
[0009]本专利技术选定线性探测法,作为哈希查询和哈希建表的基础算法。线性探测,是计算
机程序解决散列表冲突时所采取的一种常见策略。在此基础上,设计实现基于SIMD技术的哈希查询和哈希建表方法。
[0010]本专利技术的哈希查询和哈希建表方法的SIMD实现,是基于X86体系的AVX和SSE指令集。为了将原本的标量指令构造成矢量指令,本专利技术需要在算法中进行适当处理。整个算法包含如下内容:
[0011](1)预定义位掩码通道数量和位掩码。在整个算法开始之前,需要提前选择好合适的矢量通道大小,即矢量的通道个数,并设为W个,在本专利技术中W为256个。矢量通道的个数,是单指令多数据指令能一次性处理的数据数量。位掩码是一个通道数为W的矢量,其值只能为true和false。
[0012](2)预定义基本操作。将允许在数据库哈希算法中使用的操作,抽象为6项基本操作。6项基本操作中,涉及到了两个重要的概念,数据源和矢量。数据源可以是存储在硬盘或者内存上的数据,而矢量是存储在内存中的数据。总体来说,将数据从数据源拷贝到矢量的过程称为加载;将数据从矢量拷贝到数据源的过程称为存储。矢量可以通过直接调用SIMD相关指令集函数,实现单指令多数据流处理方式。6项基本操作包括:
[0013]●
矢量加载(vector load):给定数据源任意位置和数据源,计算结果为目标矢量。
[0014]具体过程表述为从此数据源此位置起,顺序加载W个数据到目标矢量上。
[0015]●
矢量存储(vector store):给定数据源任意位置和数据矢量,结果为目标数据源。具体过程表述为将数据矢量的W个数据拷贝到从目标数据源此位置起的W个数据,并将之原本数据覆盖。
[0016]●
聚集(gather):给定索引矢量、位掩码和数据源,计算结果为目标矢量。索引矢量初值为数据源对应数据的索引下标。具体过程举例表述为,针对第k个通道,若位掩码第k个通道为false,则不操作;若位掩码第k个通道为true,则将索引矢量第k个通道的值读取出来,记为index,再去数据源中找到下标为index的位置的值,保存到目标矢量的第k个通道处。
[0017]●
散射(scatter):给定索引矢量、数据矢量和位掩码,计算结果为目标数据源。具体过程举例表述为,针对第k个通道,若位掩码第k个通道为false,则不操作;
[0018]若位掩码第k个矢量通道为true,则将索引矢量第k个通道的值读取出来记为index,然后将数据矢量的第k个数据值,填入目标数据源的下标为index的位置。
[0019]●
选择性加载(selective load):给定数据源任意位置i、数据源和位掩码,计算结果为目标矢量。具体过程举例表述为,针对第k个通道,若位掩码第k个通道为false,则不操作;若位掩码第k个通道为true,则从数据源第i+k

1个位置的数据保存到目标矢量的第k个通道处。
[0020]●
选择性存储(selective store):给定数据源任意位置i、数据矢量和位掩码,计算结果为目标数据源。具体过程举例表述为,针对第k个通道,若位掩码第k个通道为false,则不操作;若位掩码第k个通道为true,则将数据矢量第k个通道处的数据,存储到数据源第i+k

1个位置处。
[0021](3)循环处理逻辑。算法总体上采用循环处理的方式进行哈希查询和哈希建表。其概述逻辑如下:
[0022]●
首先,利用矢量加载操作,通过处理输入表的key组、value组和矢量位掩码,将输入组的key组和value组分别存储到各自临时的目标矢量中。
[0023]●
然后,通过整合计算上述结果,哈希表大小和给定哈希函数,可以获得通道大小为W的哈希矢量。
[0024]·
最后,可以分别利用6项基本操作,通过查找哈希矢量的对应哈希表位置,进行哈希查询和哈希建表的处理。
[0025]另外需要注意的是,在进行哈希查询时,查找到哈希表对应位置有元素,且与所匹配元素相等,需要进行相应记录。但并不能就此结束,只有当查找到哈希表对应位置为空时,才结束此元素的查找。
[0026]本矢量化算法的优点及有益效果是:通过调用AVX指令集和SS本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于ARM平台加速数据库哈希操作的方法,其特征在于,实施步骤为:(1)根据现有的线性检测法的哈希查询标量算法,通过矢量化改造,实现基于SIMD技术的哈希查询算法;(2)根据现有的线性检测法的哈希建表标量算法,实现基于SIMD技术的哈希建表算法;(3)根据现有的AvxToNeon库,扩展生成自定义ATN转换模块,实现从AVX指令集和SSE指令集到Neon指令集的转换;(4)通过快捷的转换过程,将上述基于AVX指令集和SSE指令集的哈希查询和哈希建表算法,转换为基于Neon指令集的ARM架构算法。2.根据权利要求1所述的方法,其特征在于,所述的实现基于SIMD技术的哈希查询算法具体内容为:(1)矢量位掩码通道的数量,需要根据具体的业务场景确定,且需要在算法开始之前进行确定;(2)需要先定义6项允许在算法中使用的基本操作。具体指的是,矢量加载、矢量存储、聚集、散射、选择性加载、选择性分散。后续算法基于6项基本操作完成;(3)哈希查询在查找到哈希表对应位置有元素,且与所匹配元素相等后,需要进行相应记录,但仍然需要继续查找,直到找到空位置才能结束。3.根据权利要求1所述的方法,其特征...

【专利技术属性】
技术研发人员:周宽陈浩
申请(专利权)人:湖南大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1