CN109033008A - 一种动态可重构的Hash计算架构及其方法、Key-Value存储系统 - Google Patents
一种动态可重构的Hash计算架构及其方法、Key-Value存储系统 Download PDFInfo
- Publication number
- CN109033008A CN109033008A CN201810819293.4A CN201810819293A CN109033008A CN 109033008 A CN109033008 A CN 109033008A CN 201810819293 A CN201810819293 A CN 201810819293A CN 109033008 A CN109033008 A CN 109033008A
- Authority
- CN
- China
- Prior art keywords
- task
- subelement
- hash
- fpga
- calculating
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
- G06F15/7878—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS for pipeline reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Advance Control (AREA)
Abstract
本申请公开了一种动态可重构的Hash计算架构及其方法、Key‑Value存储系统,Hash计算架构包括:CPU模块、FPGA模块和存储器;所述CPU模块,被配置为根据FPGA模块处理单元数量划分计算任务和根据负载不同局部动态重构FPGA模块的运行模式,发送至FPGA模块,并将计算任务数据存储至存储器,监控FPGA模块的任务状态并在任务结束时获取任务结果;所述存储器,被配置为CPU模块和FPGA模块的共享存储单元;所述FPGA模块,被配置为根据接收的运行模式进行动态重构,根据接收的计算任务获取存储器中存储的计算任务数据,根据计算任务数据进行Hash计算处理得到任务结果,同时将任务状态和任务结果返回CPU模块;其方法和一种Key‑Value存储系统均基于一种动态可重构的Hash计算架构。
Description
技术领域
本公开属于Key-Value存储系统的技术领域,尤其是涉及一种动态可重构的 Hash计算架构及其方法、Key-Value存储系统。
背景技术
Key-Value存储系统广泛应用于大型数据中心,例如电子商务、社交网络及 在线搜索等。相较于传统的SQL数据库,Key-Value存储系统具有速度快、可扩 展性强以及移植方便等优势。Key-Value数据库在数据中心主要用作Cache层, 以解决数据中心后端永久性存储速度慢的问题。随着数据中心规模的不断扩大以 及所需求数据的访问频率不断提高,作为数据中心管理数据访问的Key-Value存 储系统对数据中心提供服务的性能起着更为重要的影响。
Key-Value存储系统是流式的执行结构,主要包含网络处理、Hash计算和访 存三种操作。其中,Hash计算属于流式操作过程中关键的环节,而且Hash执行 的速度影响着Key-Value存储的整体性能。目前,Hash加速单元设计主要从两方 面进行,在微处理器中增加专用的Hash计算单元以及采用GPU或者FPGA实 现Hash计算单元加速。然而,目前没有高效能的Hash加速计算单元,从而影 响了Key-Value存储系统进一步的性能提升以及可扩展性等。
现有的Hash加速单元均存在诸多问题:
第一,在微处理器中增加专用的Hash计算单元,通过指令集别的优化,有 效的降低Hash计算密集算法的处理器和存储器使用率,以较小的面积代价换取 性能的大量提升。但是这种方法需要设计新型的处理器并且需要较长的实现周期, 而且灵活性欠佳。
第二,采用GPU或者FPGA实现Hash计算单元加速。GPU相对于传统处 理器具有更高的并行性特征,局部访存的高带宽为其性能提供有力保证,但是 GPU的功耗仍旧很高。FPGA具备动态可重构特征,而且可以以较少的面积和功 耗提供相当的计算性能;FPGA广泛应用于实现网络系统里的Hash匹配单元, 轻量级的Hash加密单元,但是,没有适合Key-Value系统的高效hash计算单元。
综上所述,现有技术中如何实现高效能的Hash加速计算单元从而进一步提 高Key-Value存储系统的性能的问题,尚缺乏行之有效的解决方案。
发明内容
针对现有技术中存在的不足,解决现有技术中如何实现高效能的Hash加速 计算单元从而进一步提高Key-Value存储系统的性能的问题,本发明提出了一种 动态可重构的Hash计算架构及其方法、Key-Value存储系统,通过设计的高效能 和动态可重构的Hash计算架构,有效提升了Key-Value存储系统的整体性能并 增强了Key-Value存储系统的扩展性。
本公开的一个或多个实施例提供一种动态可重构的Hash计算架构。
为了实现上述目的,本公开采用如下一种技术方案:
一种动态可重构的Hash计算架构,包括:CPU模块、FPGA模块和存储器;
所述CPU模块,被配置为根据FPGA模块处理单元数量划分计算任务和根据 负载不同局部动态重构FPGA模块的运行模式,发送至FPGA模块,并将计算任 务数据存储至存储器,监控FPGA模块的任务状态并在任务结束时获取任务结果;
所述存储器,被配置为CPU模块和FPGA模块的共享存储单元;
所述FPGA模块,被配置为根据接收的运行模式进行动态重构,根据接收的 计算任务获取存储器中存储的计算任务数据,根据计算任务数据进行Hash计算 处理得到任务结果,同时将任务状态和任务结果返回CPU模块。
进一步地,所述CPU模块中计算任务包括Hash计算相关配置参数,所述Hash 计算相关配置参数包括KEY值长度和Hash计算的种子。
进一步地,所述CPU模块中计算任务对应的计算任务数据包括待计算的KEY 值,所述负载与待计算的KEY值相对应。
进一步地,所述CPU模块还被配置为根据待计算的KEY值的长度大小选择 将FPGA模块进行局部动态重构为不同运行模式的FPGA配置bit流,并将FPGA 配置bit流存储至存储器。
进一步地,所述FPGA模块包括控制单元、存储单元和若干处理单元;
所述控制单元,被配置为与CPU模块通信,获取Hash计算相关配置参数, 发送控制命令至所述存储单元发起DMA操作,并监控处理单元的任务状态,在 任务结束时获取任务结果,并返回任务状态和任务结果至CPU模块;
所述存储单元,被配置为接收所述控制单元的控制命令,发起DMA操作获 取存储器中的计算任务数据和FPGA配置bit流,并传输至处理单元;
所述处理单元,被配置为接收计算任务数据和FPGA配置bit流,根据FPGA 配置bit流切换不同运行模式,进行Hash计算,返回任务结果至所述控制单元。
进一步地,所述控制单元包括存储控制器子单元、流程控制器子单元和寄存 器列表子单元;
所述寄存器列表子单元,被配置为存储Hash计算相关配置参数、任务状态 和任务结果;
所述存储控制器子单元,被配置为将所述寄存器列表子单元中存储的Hash 计算相关配置参数发送到所述存储单元,作为控制命令发起DMA操作,同时监 控处理单元的任务状态并存储至所述寄存器列表子单元,在任务结束时通知所述 流程控制器子单元获取任务结果;
所述流程控制器子单元,被配置为将所述寄存器列表子单元中存储的Hash 计算相关配置参数发送到所述处理单元,任务结束时获取任务结果并存储至所述 寄存器列表子单元。
进一步地,所述存储单元包括DMA子单元和缓冲器子单元;
所述DMA子单元,被配置为接收所述存储控制器子单元的控制命令发起 DMA操作,获取计算任务数据和FPGA配置bit流,传输至缓冲器子单元;
所述缓冲器子单元,被配置为接收所述DMA子单元的计算任务数据和FPGA 配置bit流,传输至所述处理单元。
进一步地,所述处理单元包括MH-Processor子单元和LMH-Processor子单元;
所述MH-Processor子单元,被配置为采用流水线技术插入大量寄存器计算 带宽;
所述LMH-Processor子单元,被配置为采用裁剪寄存器和资源复用技术进行 计算处理;
所述FPGA模块所述处理单元的不同运行模式包括通过MH-Processor子单元 执行计算任务和通过LMH-Processor子单元计算任务;所述处理单元根据接收的 FPGA配置bit流进行FPGA模块的局部动态重构。
进一步地,所述处理单元数量可以根据所部署FPGA平台的资源进行裁剪或 者扩增。
本公开的一个或多个实施例还提供一种动态可重构的Hash计算方法,该方 法基于一种动态可重构的Hash计算架构。
为了实现上述目的,本发明采用如下一种技术方案:
一种动态可重构的Hash计算方法,该方法包括:
所述CPU模块根据FPGA模块处理单元数量划分计算任务和根据负载不同局 部动态重构FPGA模块的运行模式,发送至FPGA模块,并将计算任务对应的计 算任务数据存储至CPU模块和FPGA模块的共享的存储器,监控FPGA模块的任 务状态并在任务结束时获取任务结果;
所述FPGA模块根据接收的运行模式进行动态重构,根据接收的计算任务获 取存储器中存储的计算任务数据,根据计算任务数据进行Hash计算处理得到任 务结果,同时将任务状态和任务结果返回CPU模块。
进一步地,所述计算任务包括Hash计算相关配置参数,所述Hash计算相关 配置参数包括KEY值长度和Hash计算的种子;
所述计算任务对应的计算任务数据包括待计算的KEY值,所述负载与待计算 的KEY值相对应。
进一步地,所述CPU模块根据待计算的KEY值的长度大小选择将FPGA模块 进行局部动态重构为不同运行模式的FPGA配置bit流,并将FPGA配置bit流存 储至存储器,具体步骤包括:
预设长度阈值,将待计算的KEY值的长度大小与预设的长度阈值进行比较, 大于该阈值的Key值通过MH-Processor子单元执行该计算任务,否则,通过 LMH-Processor子单元执行该计算任务。
进一步地,本方法中,所述FPGA模块工作的具体方法步骤包括:
所述控制单元与CPU模块通信,获取Hash计算相关配置参数,发送控制命 令至所述存储单元发起DMA操作,并监控处理单元的任务状态,在任务结束时 获取任务结果,并返回任务状态和任务结果至CPU模块;
所述存储单元接收所述控制单元的控制命令,发起DMA操作获取存储器中 的计算任务数据和FPGA配置bit流,并传输至处理单元;
所述处理单元接收计算任务数据和FPGA配置bit流,根据FPGA配置bit流 切换不同运行模式,进行Hash计算,返回任务结果至所述控制单元。
进一步地,本方法中,所述FPGA模块中的所述控制单元工作的具体方法步 骤包括:
所述寄存器列表子单元存储Hash计算相关配置参数、任务状态和任务结果;
所述存储控制器子单元将所述寄存器列表子单元中存储的Hash计算相关配 置参数发送到所述存储单元,作为控制命令发起DMA操作,同时监控处理单元 的任务状态并存储至所述寄存器列表子单元,在任务结束时通知所述流程控制器 子单元获取任务结果;
所述流程控制器子单元将所述寄存器列表子单元中存储的Hash计算相关配 置参数发送到所述处理单元,任务结束时获取任务结果并存储至所述寄存器列表 子单元。
本公开的一个或多个实施例还提供一种Key-Value存储系统,该系统基于一 种动态可重构的Hash计算架构。
本公开的有益效果:
本公开所述的一种动态可重构的Hash计算架构及其方法、Key-Value存储系 统,可以有效的部署在常见的SOC(CPU+FPGA)系统中,具备良好的可重构 性,通过FPGA模块的局部动态重构,根据不同的负载情况动态重构FPGA模 块的处理单元,在有限的逻辑资源内实现吞吐量的最大化,基于负载特性的局部 动态可重构特性有效提到系统性能和能效比。
本公开所述的一种动态可重构的Hash计算架构及其方法、Key-Value存储系 统,还具备良好的可扩展性,FPGA模块的处理单元数量可以根据所部署FPGA 平台的资源进行裁剪或者扩增。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请 的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1是本公开一个或多个实施例的动态可重构的Hash计算架构结构示意图;
图2为本公开一个或多个实施例的动态可重构的Hash计算流程图;
图3为本公开一个或多个实施例的异或运算和移位运算流程图。
具体实施方式:
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、 完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的 实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前 提下所获得的所有其他实施例,都属于本公开保护的范围。
应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。 除非另有指明,本实施例使用的所有技术和科学术语具有与本申请所属技术领域 的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限 制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出, 否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使 用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或 它们的组合。
需要注意的是,附图中的流程图和框图示出了根据本公开的各种实施例的方 法和系统的可能实现的体系架构、功能和操作。应当注意,流程图或框图中的每 个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代 码的一部分可以包括一个或多个用于实现各个实施例中所规定的逻辑功能的可 执行指令。也应当注意,在有些作为备选的实现中,方框中所标注的功能也可以 按照不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以 基本并行地执行,或者它们有时也可以按照相反的顺序执行,这取决于所涉及的 功能。同样应当注意的是,流程图和/或框图中的每个方框、以及流程图和/或框 图中的方框的组合,可以使用执行规定的功能或操作的专用的基于硬件的系统来 实现,或者可以使用专用硬件与计算机指令的组合来实现。
在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合下面 结合附图与实施例对本公开作进一步说明。
如图1所示,本公开的一个或多个实施例提供一种动态可重构的Hash计算 架构。
一种动态可重构的Hash计算架构,包括:CPU模块、FPGA模块和存储器;
所述CPU模块,被配置为根据FPGA模块处理单元数量划分计算任务和根据 负载不同局部动态重构FPGA模块的运行模式,发送至FPGA模块,并将计算任 务数据存储至存储器,监控FPGA模块的任务状态并在任务结束时获取任务结果;
所述存储器,被配置为CPU模块和FPGA模块的共享存储单元;
所述FPGA模块,被配置为根据接收的运行模式进行动态重构,根据接收的 计算任务获取存储器中存储的计算任务数据,根据计算任务数据进行Hash计算 处理得到任务结果,同时将任务状态和任务结果返回CPU模块。
CPU模块:
CPU模块主要负责常规的计算数据流控制及计算任务调度,根据FPGA模块 中的处理单元的数量将计算任务进行划分。将待处理的计算任务发送到FPGA模 块并将相应的计算任务数据存储到处理核心对应的存储空间,即CPU模块与 FPGA模块共享的存储器,监控FPGA模块的任务状态并在任务结束时获取任务 结果。
其中,所述CPU模块中计算任务包括Hash计算相关配置参数,所述Hash 计算相关配置参数包括KEY值长度和Hash计算的种子。
所述CPU模块中计算任务对应的计算任务数据包括待计算的KEY值,所述 负载与待计算的KEY值相对应。
所述CPU模块还被配置为根据待计算的KEY值的长度大小选择将FPGA模块 进行局部动态重构为不同运行模式的FPGA配置bit流,并将FPGA配置bit流存 储至存储器。依据负载情形(即Key值的长度进行)的不同,CPU模块负责动态重 构FPGA模块,选择将FPGA动态重构成不同的运行模式。CPU模块还将相应的 FPGA配置bit流放置到CPU与FPGA共享的存储器,并依据负载情形的不同,局 部动态重构FPGA模块的可重构部分,从而最大化FPGA模块的处理效能。
FPGA模块:
所述FPGA模块包括控制单元、存储单元和若干处理单元;
所述控制单元,被配置为与CPU模块通信,获取Hash计算相关配置参数, 发送控制命令至所述存储单元发起DMA操作,并监控处理单元的任务状态,在 任务结束时获取任务结果,并返回任务状态和任务结果至CPU模块;
所述控制单元包括存储控制器子单元、流程控制器子单元和寄存器列表子单 元;控制单元的功能由三个子单元协作完成:
所述寄存器列表子单元,被配置为存储Hash计算相关配置参数、任务状态 和任务结果;
所述存储控制器子单元,被配置为将所述寄存器列表子单元中存储的Hash 计算相关配置参数发送到所述存储单元,作为控制命令发起DMA操作,同时监 控处理单元的任务状态并存储至所述寄存器列表子单元,在任务结束时通知所述 流程控制器子单元获取任务结果;
所述流程控制器子单元,被配置为将所述寄存器列表子单元中存储的Hash 计算相关配置参数发送到所述处理单元,任务结束时获取任务结果并存储至所述 寄存器列表子单元。
所述存储单元,被配置为接收所述控制单元的控制命令,发起DMA操作获 取存储器中的计算任务数据和FPGA配置bit流,并传输至处理单元;
所述存储单元包括DMA子单元和缓冲器子单元;
所述DMA子单元,被配置为接收所述存储控制器子单元的控制命令发起 DMA操作,获取计算任务数据(待计算的KEY值)和FPGA配置bit流,传输至 缓冲器子单元;
所述缓冲器子单元,被配置为接收所述DMA子单元的计算任务数据和FPGA 配置bit流,传输至所述处理单元。缓冲器采用FPGA片上存储组成,操作方式 属于FIFO方式,不仅可以提高数据局部性,也平衡DMA子单元与处理单元间的 吞吐量。
所述处理单元,被配置为接收计算任务数据和FPGA配置bit流,根据FPGA 配置bit流切换不同运行模式,进行Hash计算,返回任务结果至所述控制单元。
所述处理单元包括MH-Processor子单元和LMH-Processor子单元;
所述MH-Processor子单元,被配置为采用流水线技术插入大量寄存器计算 带宽;
所述LMH-Processor子单元,被配置为采用裁剪寄存器和资源复用技术进行 计算处理;通过裁剪寄存器和资源复用来减少FPGA逻辑资源消耗。
所述FPGA模块所述处理单元的不同运行模式包括通过MH-Processor子单元 执行计算任务和通过LMH-Processor子单元计算任务;所述处理单元根据接收的 FPGA配置bit流进行FPGA模块的局部动态重构。针对长度较大的Key值, MH-Processor子单元可以达到更高的吞吐带宽,而针对长度较小的Key值, LMH-Processor子单元的带宽和MH-Processor类似(计算环节占整体的执行时间 大幅减少),但是使用几乎一半的资源。CPU模块根据负载的情形,动态调整处 理单元的配置,在有限的逻辑资源内实现吞吐量的最大化。
需要注意的是,所述处理单元数量可以根据所部署FPGA平台的资源进行裁 剪或者扩增。
本公开的一个或多个实施例还提供一种动态可重构的Hash计算方法,该方 法基于一种动态可重构的Hash计算架构。
为了实现上述目的,本发明采用如下一种技术方案:
一种动态可重构的Hash计算方法,该方法包括:
所述CPU模块根据FPGA模块处理单元数量划分计算任务和根据负载不同局 部动态重构FPGA模块的运行模式,发送至FPGA模块,并将计算任务对应的计 算任务数据存储至CPU模块和FPGA模块的共享的存储器,监控FPGA模块的任 务状态并在任务结束时获取任务结果;
所述FPGA模块根据接收的运行模式进行动态重构,根据接收的计算任务获 取存储器中存储的计算任务数据,根据计算任务数据进行Hash计算处理得到任 务结果,同时将任务状态和任务结果返回CPU模块。
所述计算任务包括Hash计算相关配置参数,所述Hash计算相关配置参数包 括KEY值长度和Hash计算的种子;
所述计算任务对应的计算任务数据包括待计算的KEY值,所述负载与待计算 的KEY值相对应。
所述CPU模块根据待计算的KEY值的长度大小选择将FPGA模块进行局部动 态重构为不同运行模式的FPGA配置bit流,并将FPGA配置bit流存储至存储器, 具体步骤包括:
预设长度阈值,将待计算的KEY值的长度大小与预设的长度阈值进行比较, 大于该阈值的Key值通过MH-Processor子单元执行该计算任务,否则,通过 LMH-Processor子单元执行该计算任务。
本方法中,所述FPGA模块工作的具体方法步骤包括:
所述控制单元与CPU模块通信,获取Hash计算相关配置参数,发送控制命 令至所述存储单元发起DMA操作,并监控处理单元的任务状态,在任务结束时 获取任务结果,并返回任务状态和任务结果至CPU模块;
所述存储单元接收所述控制单元的控制命令,发起DMA操作获取存储器中 的计算任务数据和FPGA配置bit流,并传输至处理单元;
所述处理单元接收计算任务数据和FPGA配置bit流,根据FPGA配置bit流 切换不同运行模式,进行Hash计算,返回任务结果至所述控制单元。
本方法中,所述FPGA模块中的所述控制单元工作的具体方法步骤包括:
所述寄存器列表子单元存储Hash计算相关配置参数、任务状态和任务结果;
所述存储控制器子单元将所述寄存器列表子单元中存储的Hash计算相关配 置参数发送到所述存储单元,作为控制命令发起DMA操作,同时监控处理单元 的任务状态并存储至所述寄存器列表子单元,在任务结束时通知所述流程控制器 子单元获取任务结果;
所述流程控制器子单元将所述寄存器列表子单元中存储的Hash计算相关配 置参数发送到所述处理单元,任务结束时获取任务结果并存储至所述寄存器列表 子单元。
本公开的一个或多个实施例还提供一种Key-Value存储系统,该系统基于一 种动态可重构的Hash计算架构。
针对主流的Key-Value存储架构Redis数据库,其核心的Hash计算单元MurmurHash2在GET、SET及相关操作中起到关键作用。本公开的一个或多个实 施例解决了目前没有高效能的MurmurHash2加速单元,从而影响了Redis数据库 进一步的性能提升以及可扩展性的问题,通过结合高效能的特点和动态可重构的 能力,提升了Redis数据库的整体性能并增强了Redis数据库的扩展性。
以部署在ARM+FPGA的SOC芯片为例,本公开中的CPU并不限于ARM CPU,完成高效能的Hash计算,以下具体实施方式为在Xilinx ZYNQ-7000系列 的应用实例,本公开的一个或多个实施例的一种动态可重构的Hash计算架构(以 下简称EP-Murmurhash2)的具体构建步骤包括:
1)步骤一:在ARM CPU装载Linux系统,为Redis数据库建立基本的运 行环境。
2)步骤二:为实现软硬件协同工作,需要对软硬件协同的接口协商。
FPGA模块采用AXI Memory-Map(AXI MM)类型的总线接口:
FPGA模块内的控制总线多采用AXI MM Slave类型接口,方便以IO的形 式访问相应控制单元的寄存器空间;FPGA模块内的数据总线采用AXI MM Master类型接口,便于FPGA模块的内部DMA以突发方式进行访问ARM和 FPGA共享的内存空间。
相应地,CPU模块也需要建立两种类型的接口驱动:IO方式的寄存器访问 驱动和DMA方式的地址映射驱动。前者用于CPU模块读写FPGA模块内的各 类寄存器,如设定Key长度,获取Hash计算状态等;后者用于实现逻辑地址到 物理地址的转换,如将获取到Key请求保存为数组存储在内存内,然后将此数 组在Linux系统分配的逻辑地址转换为物理地址,进一步送给FPGA模块,便于 其下一步从共享的内存空间内读取Key数值。
3)步骤三:通过以上两个步骤完成运行环境的搭建以及软硬件系统交互的 接口建立,步骤三和步骤四主要完成FPGA中EP-MurmurHash2的设计。
步骤三主要进行处理单元的设计。
根据附图2的计算流程,设计状态机控制Init运算、Key计算及Hash计算 等计算流程,然后配合以上设计的利用两种运算单元结合及插入适当的寄存器逻 辑构建MH-Processor和LMH-Processor。如图2所示,Murmurhash2Hash的计 算过程主要包含乘法运算、异或运算以及移位运算。通过一系列的测试和分析得 出:时间消耗最大的运算为整数乘法运算。针对主流的FPGA芯片,乘法运算主 要有两种实现方式:基于FPGA内置的硬核DSP单元和基于分布式的RAM配 合一定的逻辑资源(如LUT(Look-up Table),FF(Flip-Flop))等。通过进一步 测试发现,针对Murmurhash2内的常数型乘法,采用基于分布式RAM配合逻辑 资源的方式性能好,并且能极大的节省高性能的硬核DSP单元。如图2的“循 环部分所示,除了基本的数据读写之外,Murmurhash2的运算流程中包含多个循 环,不同循环之间数据具有依赖性。
依据附图3的方式设计支持“异或”和“移位”运算单元,并采用分布式 RAM和相应的基础逻辑资源而非硬核DSP构建“常数乘法器”运算单元。需要 注意的是,本公开的一个或多个实施例中的异或运算和移位运算,区别于CPU 或者GPU的串行执行方式,利用FPGA支持位操作的特性,将异或运算和移位 运算两个周期的运算合并为单周期的运算。
4)步骤四:利用步骤二所提到AXI MM Slave接口配合一定数量的寄存器 完成FPGA模块控制单元的设计,寄存器列表的位宽采用于ARM处理器相同的 32bit。然后基于AXI MM Master接口设计DMA单元,采用Block RAM构建FIFO 并将其作为与DMA单元配合的Buffer。
5)步骤五:利用Xilinx Vivado工具链完成以上FPGA模块的开发,将步骤 三设计的处理单元定义为动态可重构区域,将步骤四所设计的控制单元和存储单 元定义为静态区域,在静态区域和动态可重构区域间插入隔离逻辑。通过逻辑综 合、布局、布线等操作后生成全局的bitstream和动态可重构区域的bitstream。 FPGA模块开发完成,最终实现效果图。
6)步骤六:基于Vivado SDK工具开发CPU模块的运行程序。根据FPGA 模块中控制单元的寄存器列表子单元以及DMA子单元内的寄存器信息,利用IO 方式的寄存器访问驱动完成EP-MurmurHash2的控制程序设计。
为进一步支持局部动态可重构功能,需要建立支持局部动态可重构的应用逻 辑。首先,CPU模块使能FPGA模块静态区域和动态区域隔离单元,确保重构 多次;然后CPU模块内的动态可重构管理模块从内存获取配置用的bitstream, 调用FPGA的刷新单元完成所指定的动态可重构区域的刷新工作;最后监测到刷 新完成的状态字后,禁用静态区域和动态区域的隔离单元,FPGA模块继续后续 的正常工作。
7)步骤七:将Redis的源程序中的MurmurHash2部分替换为步骤六开发的 CPU模块,然后采用交叉编译工具完成编译,部署在Linux系统中,完成发明整 体实施。
本公开的有益效果:
本公开所述的一种动态可重构的Hash计算架构及其方法、Key-Value存储系 统,可以有效的部署在常见的SOC(CPU+FPGA)系统中,具备良好的可重构 性,通过FPGA模块的局部动态重构,根据不同的负载情况动态重构FPGA模 块的处理单元,在有限的逻辑资源内实现吞吐量的最大化,基于负载特性的局部 动态可重构特性有效提到系统性能和能效比。
本公开所述的一种动态可重构的Hash计算架构及其方法、Key-Value存储系 统,还具备良好的可扩展性,FPGA模块的处理单元数量可以根据所部署FPGA 平台的资源进行裁剪或者扩增。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域 的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内, 所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。因此, 本公开将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理 和新颖特点相一致的最宽的范围。
Claims (10)
1.一种动态可重构的Hash计算架构,其特征在于,包括:CPU模块、FPGA模块和存储器;
所述CPU模块,被配置为根据FPGA模块处理单元数量划分计算任务和根据负载不同局部动态重构FPGA模块的运行模式,发送至FPGA模块,并将计算任务数据存储至存储器,监控FPGA模块的任务状态并在任务结束时获取任务结果;
所述存储器,被配置为CPU模块和FPGA模块的共享存储单元;
所述FPGA模块,被配置为根据接收的运行模式进行动态重构,根据接收的计算任务获取存储器中存储的计算任务数据,根据计算任务数据进行Hash计算处理得到任务结果,同时将任务状态和任务结果返回CPU模块。
2.如权利要求1所述的一种动态可重构的Hash计算架构,其特征在于,所述CPU模块中计算任务包括Hash计算相关配置参数,所述Hash计算相关配置参数包括KEY值长度和Hash计算的种子;
所述CPU模块中计算任务对应的计算任务数据包括待计算的KEY值,所述负载与待计算的KEY值相对应。
3.如权利要求2所述的一种动态可重构的Hash计算架构,其特征在于,所述CPU模块还被配置为根据待计算的KEY值的长度大小选择将FPGA模块进行局部动态重构为不同运行模式的FPGA配置bit流,并将FPGA配置bit流存储至存储器。
4.如权利要求1所述的一种动态可重构的Hash计算架构,其特征在于,所述FPGA模块包括控制单元、存储单元和若干处理单元;
所述控制单元,被配置为与CPU模块通信,获取Hash计算相关配置参数,发送控制命令至所述存储单元发起DMA操作,并监控处理单元的任务状态,在任务结束时获取任务结果,并返回任务状态和任务结果至CPU模块;
所述存储单元,被配置为接收所述控制单元的控制命令,发起DMA操作获取存储器中的计算任务数据和FPGA配置bit流,并传输至处理单元;
所述处理单元,被配置为接收计算任务数据和FPGA配置bit流,根据FPGA配置bit流切换不同运行模式,进行Hash计算,返回任务结果至所述控制单元。
5.如权利要求4所述的一种动态可重构的Hash计算架构,其特征在于,所述控制单元包括存储控制器子单元、流程控制器子单元和寄存器列表子单元;
所述寄存器列表子单元,被配置为存储Hash计算相关配置参数、任务状态和任务结果;
所述存储控制器子单元,被配置为将所述寄存器列表子单元中存储的Hash计算相关配置参数发送到所述存储单元,作为控制命令发起DMA操作,同时监控处理单元的任务状态并存储至所述寄存器列表子单元,在任务结束时通知所述流程控制器子单元获取任务结果;
所述流程控制器子单元,被配置为将所述寄存器列表子单元中存储的Hash计算相关配置参数发送到所述处理单元,任务结束时获取任务结果并存储至所述寄存器列表子单元。
6.如权利要求4所述的一种动态可重构的Hash计算架构,其特征在于,所述存储单元包括DMA子单元和缓冲器子单元;
所述DMA子单元,被配置为接收所述存储控制器子单元的控制命令发起DMA操作,获取计算任务数据和FPGA配置bit流,传输至缓冲器子单元;
所述缓冲器子单元,被配置为接收所述DMA子单元的计算任务数据和FPGA配置bit流,传输至所述处理单元。
7.如权利要求4所述的一种动态可重构的Hash计算架构,其特征在于,所述处理单元包括MH-Processor子单元和LMH-Processor子单元;
所述MH-Processor子单元,被配置为采用流水线技术插入大量寄存器计算带宽;
所述LMH-Processor子单元,被配置为采用裁剪寄存器和资源复用技术进行计算处理;
所述FPGA模块所述处理单元的不同运行模式包括通过MH-Processor子单元执行计算任务和通过LMH-Processor子单元计算任务;所述处理单元根据接收的FPGA配置bit流进行FPGA模块的局部动态重构;
所述处理单元数量为根据所部署FPGA平台的资源可裁剪或者可扩增的单元。
8.一种动态可重构的Hash计算方法,其特征在于,基于上述权利要求1-7任一项所述的一种动态可重构的Hash计算架构,该方法包括:
所述CPU模块根据FPGA模块处理单元数量划分计算任务和根据负载不同局部动态重构FPGA模块的运行模式,发送至FPGA模块,并将计算任务对应的计算任务数据存储至CPU模块和FPGA模块的共享的存储器,监控FPGA模块的任务状态并在任务结束时获取任务结果;
所述FPGA模块根据接收的运行模式进行动态重构,根据接收的计算任务获取存储器中存储的计算任务数据,根据计算任务数据进行Hash计算处理得到任务结果,同时将任务状态和任务结果返回CPU模块。
9.如权利要求8所述的一种动态可重构的Hash计算方法,其特征在于,所述计算任务包括Hash计算相关配置参数,所述Hash计算相关配置参数包括KEY值长度和Hash计算的种子;
所述计算任务对应的计算任务数据包括待计算的KEY值,所述负载与待计算的KEY值相对应;
所述CPU模块根据待计算的KEY值的长度大小选择将FPGA模块进行局部动态重构为不同运行模式的FPGA配置bit流,并将FPGA配置bit流存储至存储器,具体步骤包括:
预设长度阈值,将待计算的KEY值的长度大小与预设的长度阈值进行比较,大于该阈值的Key值通过MH-Processor子单元执行该计算任务,否则,通过LMH-Processor子单元执行该计算任务;
所述FPGA模块工作的具体方法步骤包括:
所述控制单元与CPU模块通信,获取Hash计算相关配置参数,发送控制命令至所述存储单元发起DMA操作,并监控处理单元的任务状态,在任务结束时获取任务结果,并返回任务状态和任务结果至CPU模块;
所述存储单元接收所述控制单元的控制命令,发起DMA操作获取存储器中的计算任务数据和FPGA配置bit流,并传输至处理单元;
所述处理单元接收计算任务数据和FPGA配置bit流,根据FPGA配置bit流切换不同运行模式,进行Hash计算,返回任务结果至所述控制单元;
所述FPGA模块中的所述控制单元工作的具体方法步骤包括:
所述寄存器列表子单元存储Hash计算相关配置参数、任务状态和任务结果;
所述存储控制器子单元将所述寄存器列表子单元中存储的Hash计算相关配置参数发送到所述存储单元,作为控制命令发起DMA操作,同时监控处理单元的任务状态并存储至所述寄存器列表子单元,在任务结束时通知所述流程控制器子单元获取任务结果;
所述流程控制器子单元将所述寄存器列表子单元中存储的Hash计算相关配置参数发送到所述处理单元,任务结束时获取任务结果并存储至所述寄存器列表子单元。
10.一种Key-Value存储系统,其特征在于,该系统基于上述权利要求1-7任一项所述的一种动态可重构的Hash计算架构。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810819293.4A CN109033008B (zh) | 2018-07-24 | 2018-07-24 | 一种动态可重构的Hash计算架构及其方法、Key-Value存储系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810819293.4A CN109033008B (zh) | 2018-07-24 | 2018-07-24 | 一种动态可重构的Hash计算架构及其方法、Key-Value存储系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109033008A true CN109033008A (zh) | 2018-12-18 |
CN109033008B CN109033008B (zh) | 2020-10-09 |
Family
ID=64644742
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810819293.4A Active CN109033008B (zh) | 2018-07-24 | 2018-07-24 | 一种动态可重构的Hash计算架构及其方法、Key-Value存储系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109033008B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110061992A (zh) * | 2019-04-22 | 2019-07-26 | 杭州迪普科技股份有限公司 | 一种动态配置fpga的方法及网络安全设备 |
CN110955535A (zh) * | 2019-11-07 | 2020-04-03 | 浪潮(北京)电子信息产业有限公司 | 一种多业务请求进程调用fpga设备的方法及相关装置 |
CN111143250A (zh) * | 2019-12-20 | 2020-05-12 | 苏州浪潮智能科技有限公司 | 一种基于axi-st接口访问fpga存储单元的方法、设备及介质 |
CN112346833A (zh) * | 2020-09-30 | 2021-02-09 | 深圳致星科技有限公司 | 用于隐私计算的任务处理方法、处理器及异构处理系统 |
CN112800385A (zh) * | 2021-01-25 | 2021-05-14 | 鹏城实验室 | 数据处理方法、装置、终端设备以及存储介质 |
CN113806083A (zh) * | 2021-09-06 | 2021-12-17 | 杭州迪普科技股份有限公司 | 一种处理聚合流数据的方法和装置 |
WO2023030054A1 (zh) * | 2021-09-03 | 2023-03-09 | 西安紫光国芯半导体有限公司 | 一种计算器件、计算系统及计算方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102279838A (zh) * | 2011-08-31 | 2011-12-14 | 公安部第三研究所 | 基于统一硬件任务接口的系统架构的重构方法 |
CN104778148A (zh) * | 2015-04-03 | 2015-07-15 | 哈尔滨工业大学 | 基于fpga的动态可重构嵌入式数据协处理平台及采用该平台实现的数据处理方法 |
CN105335331A (zh) * | 2015-12-04 | 2016-02-17 | 东南大学 | 一种基于大规模粗粒度可重构处理器的sha256实现方法及系统 |
CN107704268A (zh) * | 2017-09-27 | 2018-02-16 | 郑州云海信息技术有限公司 | Md5哈希函数计算方法、系统及计算机可读存储介质 |
CN108306976A (zh) * | 2018-02-22 | 2018-07-20 | 付宏伟 | 一种用于云计算网络虚拟化中的sdn控制器架构 |
-
2018
- 2018-07-24 CN CN201810819293.4A patent/CN109033008B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102279838A (zh) * | 2011-08-31 | 2011-12-14 | 公安部第三研究所 | 基于统一硬件任务接口的系统架构的重构方法 |
CN104778148A (zh) * | 2015-04-03 | 2015-07-15 | 哈尔滨工业大学 | 基于fpga的动态可重构嵌入式数据协处理平台及采用该平台实现的数据处理方法 |
CN105335331A (zh) * | 2015-12-04 | 2016-02-17 | 东南大学 | 一种基于大规模粗粒度可重构处理器的sha256实现方法及系统 |
CN107704268A (zh) * | 2017-09-27 | 2018-02-16 | 郑州云海信息技术有限公司 | Md5哈希函数计算方法、系统及计算机可读存储介质 |
CN108306976A (zh) * | 2018-02-22 | 2018-07-20 | 付宏伟 | 一种用于云计算网络虚拟化中的sdn控制器架构 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110061992A (zh) * | 2019-04-22 | 2019-07-26 | 杭州迪普科技股份有限公司 | 一种动态配置fpga的方法及网络安全设备 |
US11568092B2 (en) | 2019-04-22 | 2023-01-31 | Hangzhou Dptech Technologies Co., Ltd. | Method of dynamically configuring FPGA and network security device |
CN110061992B (zh) * | 2019-04-22 | 2021-12-24 | 杭州迪普科技股份有限公司 | 一种动态配置fpga的方法及网络安全设备 |
CN110955535B (zh) * | 2019-11-07 | 2022-03-22 | 浪潮(北京)电子信息产业有限公司 | 一种多业务请求进程调用fpga设备的方法及相关装置 |
CN110955535A (zh) * | 2019-11-07 | 2020-04-03 | 浪潮(北京)电子信息产业有限公司 | 一种多业务请求进程调用fpga设备的方法及相关装置 |
CN111143250A (zh) * | 2019-12-20 | 2020-05-12 | 苏州浪潮智能科技有限公司 | 一种基于axi-st接口访问fpga存储单元的方法、设备及介质 |
CN111143250B (zh) * | 2019-12-20 | 2022-03-22 | 苏州浪潮智能科技有限公司 | 一种基于axi-st接口访问fpga存储单元的方法、设备及介质 |
CN112346833A (zh) * | 2020-09-30 | 2021-02-09 | 深圳致星科技有限公司 | 用于隐私计算的任务处理方法、处理器及异构处理系统 |
CN112346833B (zh) * | 2020-09-30 | 2022-11-22 | 深圳致星科技有限公司 | 用于隐私计算的任务处理方法、处理器及异构处理系统 |
CN112800385A (zh) * | 2021-01-25 | 2021-05-14 | 鹏城实验室 | 数据处理方法、装置、终端设备以及存储介质 |
WO2023030054A1 (zh) * | 2021-09-03 | 2023-03-09 | 西安紫光国芯半导体有限公司 | 一种计算器件、计算系统及计算方法 |
CN113806083A (zh) * | 2021-09-06 | 2021-12-17 | 杭州迪普科技股份有限公司 | 一种处理聚合流数据的方法和装置 |
CN113806083B (zh) * | 2021-09-06 | 2023-07-25 | 杭州迪普科技股份有限公司 | 一种处理聚合流数据的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109033008B (zh) | 2020-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109033008A (zh) | 一种动态可重构的Hash计算架构及其方法、Key-Value存储系统 | |
CN110619595B (zh) | 一种基于多fpga加速器互联的图计算优化方法 | |
CN105487838B (zh) | 一种动态可重构处理器的任务级并行调度方法与系统 | |
Bulatov et al. | Scalable line dynamics in ParaDiS | |
CN104615488B (zh) | 异构多核可重构计算平台上任务调度的方法和装置 | |
CN103226540B (zh) | 基于分组多流的gpu上多区结构网格cfd加速方法 | |
CN103279445A (zh) | 运算任务的计算方法及超算系统 | |
CN101441615A (zh) | 面向任务流的高效能立体并行柔性可重构计算架构模型 | |
Yamazaki et al. | Improving performance of GMRES by reducing communication and pipelining global collectives | |
CN103279390A (zh) | 一种面向小作业优化的并行处理系统 | |
CN105653204A (zh) | 一种基于磁盘的分布式图计算方法 | |
Malik et al. | An optimistic parallel simulation protocol for cloud computing environments | |
CN113220630B (zh) | 一种硬件加速器的可重构阵列优化方法及自动调优方法 | |
CN108762892A (zh) | 一种云仿真协同仿真模式的资源配置方法 | |
CN110362780A (zh) | 一种基于申威众核处理器的大数据张量典范分解计算方法 | |
CN102722472A (zh) | 一种复数矩阵的优化方法 | |
Charif et al. | Detailed and highly parallelizable cycle-accurate network-on-chip simulation on GPGPU | |
Ma et al. | An efficient direct memory access (DMA) controller for scientific computing accelerators | |
Rezaei et al. | Data-rate-aware FPGA-based acceleration framework for streaming applications | |
Pezzarossa et al. | Reconfiguration in FPGA-based multi-core platforms for hard real-time applications | |
Liu et al. | A hybrid parallel genetic algorithm with dynamic migration strategy based on sunway many-core processor | |
Liu et al. | Accelerating large-scale DEVS-based simulation on the cell processor | |
Li et al. | PFSI. sw: A programming framework for sea ice model algorithms based on Sunway many-core processor | |
Yang et al. | Understanding the performance of in-network computing: A case study | |
CN113342313A (zh) | 一种基于参数服务器异步更新Spark MLlib中线性分类模型参数的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220114 Address after: 200233 room 086, building 12, No. 1-17 and No. 18-30, Lane 88, Minbei Road, Minhang District, Shanghai Patentee after: SHANGHAI HANGZHENG MEASUREMENT & CONTROL SYSTEM CO.,LTD. Address before: The middle high tech Zone Ji'nan city Shandong Province Shun Road 250101 Patentee before: SHANDONG University |
|
TR01 | Transfer of patent right |