CN118012338A - 一种基于现场可编程门阵列的高速存储方法及装置 - Google Patents
一种基于现场可编程门阵列的高速存储方法及装置 Download PDFInfo
- Publication number
- CN118012338A CN118012338A CN202410058142.7A CN202410058142A CN118012338A CN 118012338 A CN118012338 A CN 118012338A CN 202410058142 A CN202410058142 A CN 202410058142A CN 118012338 A CN118012338 A CN 118012338A
- Authority
- CN
- China
- Prior art keywords
- data
- target
- request
- programmable gate
- field programmable
- 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 60
- 238000012545 processing Methods 0.000 claims abstract description 80
- 230000000977 initiatory effect Effects 0.000 claims description 12
- 238000013507 mapping Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 abstract description 19
- 230000004044 response Effects 0.000 abstract description 12
- 238000013500 data storage Methods 0.000 abstract description 9
- 230000008707 rearrangement Effects 0.000 abstract description 3
- 230000005540 biological transmission Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于现场可编程门阵列的高速存储方法及装置,该方法包括由中央处理器发起数据写入请求,并由中央处理器以及后端存储体阵列对数据写入请求进行拆分处理,得到至少两个目标请求;由后端存储体阵列将每个目标请求发送给现场可编程门阵列,并由现场可编程门阵列对每个目标请求进行解析处理,确定出与每个目标请求对应的目标地址范围;由现场可编程门阵列基于每个目标地址范围获取相应的目标数据,并确定出与每个目标数据对应的逻辑标识;由现场可编程门阵列基于每个逻辑标识,将每个目标数据发送给后端存储体阵列。本申请通过FPGA完成数据请求的重排响应,解决了数据请求乱序的问题并提高了***性能,实现了低延时、高带宽的数据存储。
Description
技术领域
本申请涉及数据存储以及计算机应用技术领域,特别的涉及一种基于现场可编程门阵列的高速存储方法及装置。
背景技术
目前市场上支持非易失性存储器表达(Non-Volatile Memory Express,即NVMe)协议的国产电子盘厂家有许多,使用的硬盘的主控制器类型也多种多样。一些盘主控厂家为了充分发挥电子盘的读写性能,在往电子盘里写数据时采用多核多控制器并行下发数据请求指令的方式,这就导致用户端接收到的数据请求指令出现乱序的情况。需要说明的是,这里的数据请求乱序是在数据写入存储器时发生的,与通常的存储器读操作时由于Non-Posted Request报文乱序导致的数据乱序不同。
针对写数据请求包乱序的情况,现有的解决方案可分为以下两种:
其一为:中央处理器(CPU)作为用户数据的接收端与NVMe控制器共同完成写盘操作。其中,CPU负责处理与电子盘之间的命令交互(如数据命令的解析等)以及用户数据的排序响应。
其二为:现场可编程门阵列(FPGA)作为用户数据的接收端将数据写入CPU的内存,再由CPU将写入内存中的数据写入电子盘。其中,CPU负责与电子盘之间的命令交互以及用户数据的排序响应。
然而,上述两种方案实际上均由CPU来完成数据请求的排序响应,使得CPU资源被占用过多,***性能下降,***对请求的响应时间延迟,从而导致在高速存储时无法发挥电子盘的最大性能,进而无法实现低延时、高带宽的数据存储。
发明内容
为解决上述提到的数据请求包乱序的问题,本申请实施例提供了一种基于现场可编程门阵列的高速存储方法及装置,其技术方案如下:
第一方面,本申请实施例提供了一种基于现场可编程门阵列的高速存储方法,该方法应用于数据采集架构,该数据采集架构包括现场可编程门阵列、中央处理器以及后端存储体阵列,该方法包括:
由中央处理器发起数据写入请求,并由中央处理器以及后端存储体阵列对数据写入请求进行拆分处理,得到至少两个目标请求;其中,每个目标请求的数据量相同;
由后端存储体阵列将每个目标请求发送给现场可编程门阵列,并由现场可编程门阵列对每个目标请求进行解析处理,确定出与每个目标请求对应的目标地址范围;
由现场可编程门阵列基于每个目标地址范围获取相应的目标数据,并确定出与每个目标数据对应的逻辑标识;
由现场可编程门阵列基于每个逻辑标识,将每个目标数据发送给后端存储体阵列。
在第一方面的一种可选方案中,数据采集架构还包括缓存单元;
在由中央处理器发起数据写入请求之前,包括:
由现场可编程门阵列接收用户数据,并将用户数据发送至缓存单元;其中,用户数据为与数据写入请求相对应的数据;
由现场可编程门阵列实时计算缓存单元的数据量,并判断数据量是否达到预设的阈值;
当识别出数据量达到预设的阈值时,由现场可编程门阵列根据预设的写入方式对缓存单元中的用户数据进行写入操作,并产生中断信号。
由中央处理器发起数据写入请求,包括:
由现场可编程门阵列发送中断信号给中央处理器;
由中央处理器根据中断信号,发起与中断信号对应的数据写入请求。
在第一方面的又一种可选方案中,后端存储体阵列包括第一拆分单元以及第二拆分单元;
由中央处理器以及后端存储体阵列对数据写入请求进行拆分处理,得到至少两个目标请求,包括:
由中央处理器对数据写入请求进行拆分处理,得到至少两个第一请求,并将每个第一请求发送至第一拆分单元;其中,每个第一请求的数据量相同,第一请求的数据量小于数据写入请求的数据量;
由第一拆分单元对每个第一请求进行拆分处理,得到至少两个第二请求,并将每个第二请求发送至第二拆分单元;其中,每个第二请求的数据量相同,第二请求的数据量小于第一请求的数据量;
由第二拆分单元对每个第二请求进行拆分处理,得到至少两个目标请求;其中,目标请求的数据量小于第二请求的数据量。
在第一方面的又一种可选方案中,由现场可编程门阵列对每个目标请求进行解析处理,确定出与每个目标请求对应的目标地址范围,包括:
由现场可编程门阵列对每个目标请求进行解析处理,得到与每个目标请求对应的目标首地址以及数据有效长度;
根据每个目标首地址以及数据有效长度,计算出与每个目标请求对应的目标地址范围。
在第一方面的又一种可选方案中,由现场可编程门阵列基于每个目标地址范围,获取相应的目标数据,并确定出与每个目标数据对应的逻辑标识,包括:
由现场可编程门阵列根据预设的移位信息以及每个目标地址范围,对每个目标地址范围进行移位处理,得到与每个目标地址范围对应的存储地址范围;其中,存储地址范围包括存储首地址以及存储末地址;
根据每个存储首地址以及相应的存储末地址,获取与每个存储地址范围对应的目标数据;
根据每个存储首地址,确定出与每个目标数据对应的逻辑标识。
在第一方面的又一种可选方案中,数据采集架构还包括数据交换单元;
由现场可编程门阵列基于每个逻辑标识,将每个目标数据发送给后端存储体阵列,包括:
由现场可编程门阵列根据每个逻辑标识以及预设的映射关系,确定出每个目标数据的交换地址;
由现场可编程门阵列基于交换地址将每个目标数据发送至数据交换单元;
由数据交换单元将所有目标数据发送给后端存储体阵列。
在第一方面的又一种可选方案中,由数据交换单元将所有目标数据发送给后端存储体阵列,包括:
当数据交换单元接收到所有目标数据时,对所有目标数据进行整合处理,得到请求数据;
由数据交换单元将请求数据发送给后端存储体阵列。
第二方面,本申请实施例提供了一种基于现场可编程门阵列的高速存储装置,该装置应用于数据采集架构,该数据采集架构包括现场可编程门阵列、中央处理器以及后端存储体阵列,该装置包括:
第一处理模块,用于由中央处理器发起数据写入请求,并由中央处理器以及后端存储体阵列对数据写入请求进行拆分处理,得到至少两个目标请求;其中,每个目标请求的数据量相同;
第二处理模块,用于由后端存储体阵列将每个目标请求发送给现场可编程门阵列,并由现场可编程门阵列对每个目标请求进行解析处理,确定出与每个目标请求对应的目标地址范围;
第三处理模块,用于由现场可编程门阵列基于每个目标地址范围获取相应的目标数据,并确定出与每个目标数据对应的逻辑标识;
第四处理模块,用于由现场可编程门阵列基于每个逻辑标识,将每个目标数据发送给后端存储体阵列。
第三方面,本申请实施例还提供了一种基于现场可编程门阵列的高速存储装置,包括处理器以及存储器;
处理器与存储器连接;
存储器,用于存储可执行程序代码;
处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于实现本申请实施例第一方面或第一方面的任意一种实现方式提供的基于现场可编程门阵列的高速存储方法。
第四方面,本申请实施例提供了一种计算机存储介质,计算机存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时,可实现本申请实施例第一方面或第一方面的任意一种实现方式提供的基于现场可编程门阵列的高速存储方法。
本说明书一些实施例提供的技术方案带来的有益效果至少包括:
在基于现场可编程门阵列的高速存储过程中,由中央处理器发起数据写入请求,并由中央处理器以及后端存储体阵列对数据写入请求进行拆分处理,得到至少两个目标请求;由后端存储体阵列将每个目标请求发送给现场可编程门阵列,并由现场可编程门阵列对每个目标请求进行解析处理,确定出与每个目标请求对应的目标地址范围;由现场可编程门阵列基于每个目标地址范围获取相应的目标数据,并确定出与每个目标数据对应的逻辑标识;由现场可编程门阵列基于每个逻辑标识,将每个目标数据发送给后端存储体阵列。通过现场可编程门阵列对拆分后得到的目标请求进行解析,并根据解析出的目标地址范围,获取目标数据以及确定出逻辑标识,进而根据逻辑标识向后端存储体阵列发送目标数据,从而完成了数据的顺序落盘,解决了数据请求包乱序的问题,并且减少了CPU的资源占用,提高了***性能,实现了低延时、高带宽的数据存储。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种基于现场可编程门阵列的高速存储方法的整体流程图;
图2为本申请实施例提供的一种数据写入请求的拆分过程的整体流程图;
图3为本申请实施例提供的一种基于现场可编程门阵列的高速存储方法的整体架构图;
图4为本申请实施例提供的一种现场可编程门阵列的逻辑模块框图;
图5为本申请实施例提供的一种基于现场可编程门阵列的高速存储装置的结构示意图;
图6为本申请实施例提供的又一种基于现场可编程门阵列的高速存储装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
在下述介绍中,术语“第一”、“第二”仅为用于描述的目的,而不能理解为指示或暗示相对重要性。下述介绍提供了本申请的多个实施例,不同实施例之间可以替换或者合并组合,因此本申请也可认为包含所记载的相同和/或不同实施例的所有可能组合。因而,如果一个实施例包含特征A、B、C,另一个实施例包含特征B、D,那么本申请也应视为包括含有A、B、C、D的一个或多个所有其他可能的组合的实施例,尽管该实施例可能并未在以下内容中有明确的文字记载。
下面的描述提供了示例,并且不对权利要求书中阐述的范围、适用性或示例进行限制。可以在不脱离本申请内容的范围的情况下,对描述的元素的功能和布置做出改变。各个示例可以适当省略、替代或添加各种过程或组件。例如所描述的方法可以以所描述的顺序不同的顺序来执行,并且可以添加、省略或组合各种步骤。此外,可以将关于一些示例描述的特征组合到其他示例中。
请参阅图1,图1示出了本申请实施例提供的一种基于现场可编程门阵列的高速存储方法的整体流程图。
如图1所示,该基于现场可编程门阵列的高速存储方法至少可以包括以下步骤:
步骤101、由中央处理器发起数据写入请求,并由中央处理器以及后端存储体阵列对数据写入请求进行拆分处理,得到至少两个目标请求。
在本申请实施例中,基于现场可编程门阵列的高速存储方法应用在数据采集架构中,该数据采集架构至少可以包括现场可编程门阵列、中央处理器以及后端存储体阵列,其中,现场可编程门阵列(Field-Programmable Gate Array,即FPGA)是一种可编程逻辑器件,通过配置和重新编程内部的逻辑单元、连接和存储器单元,可实现特定的数字电路功能;后端存储体阵列可以但不局限于为磁盘阵列。在基于现场可编程门阵列的高速存储的过程中,由中央处理器发起数据写入请求,并通过现场可编程门阵列对经过中央处理器以及后端存储体阵列拆分得到的目标请求进行解析,进而由现场可编程门阵列根据解析出的目标地址范围,获取目标数据并确定出逻辑标识,从而根据逻辑标识向后端存储体阵列发送目标数据,以完成数据的顺序落盘,解决了数据请求包乱序的问题,并且减少了中央处理器(Central Processing Unit,即CPU)的资源占用,提高了***性能,实现了低延时、高带宽的数据存储。
在下述一个或多个实施例中,将用CPU代替中央处理器、FPGA代替现场可编程门阵列进行描述。
具体地,在基于现场可编程门阵列的高速存储过程中,当CPU发起数据写入请求时,可将该请求拆分成多个较小的子请求,以便更高效地处理该请求。这些子请求可以按照内存地址范围或数据块大小进行拆分,然后并行地发送到不同的存储设备或存储单元中,从而提高整体的数据写入速度和***响应性能。
进一步的,CPU将经过一次拆分处理的子请求发送给后端存储体阵列,当后端存储体阵列接收到子请求时,可对子请求进行至少一次拆分处理,以得到至少两个目标请求。
需要说明的是,此处的拆分处理必须遵循每个子请求或目标请求的数据量相同的原则。
作为本申请实施例的一种可选,数据采集架构还包括缓存单元;
在由中央处理器发起数据写入请求之前,包括:
由现场可编程门阵列接收用户数据,并将用户数据发送至缓存单元;其中,用户数据为与数据写入请求相对应的数据;
由现场可编程门阵列实时计算缓存单元的数据量,并判断数据量是否达到预设的阈值;
当识别出数据量达到预设的阈值时,由现场可编程门阵列根据预设的写入方式对缓存单元中的用户数据进行写入操作,并产生中断信号。
由中央处理器发起数据写入请求,包括:
由现场可编程门阵列发送中断信号给中央处理器;
由中央处理器根据中断信号,发起与中断信号对应的数据写入请求。
具体地,上述提到的数据采集架构还可包括缓存单元,例如双倍数据率同步动态随机存取存储器(DDR)。在CPU发起数据写入请求之前,可由FPGA采集用户数据,并将该用户数据发送至缓存单元。
需要说明的是,用户数据为与CPU发起的数据写入请求相对应的数据,用户数据的采集方式可以但不局限于为:外部设备(如外部传感器等)通过并行接口(如GPIO)或串行接口(如SPI、I2C、UART)将数据传输到FPGA。
可以理解的是,由于缓存单元的存储空间较大、传输速率较快,因此可在存储更多的用户数据的同时,提高数据访问速度,从而降低***的响应延迟,以实现低延时、高带宽的数据存储。
接着,可由FPGA实时计算写入缓存单元的数据量,并当该数据量达到可搬运值(即预设的阈值)时,表示写入缓存单元的数据量已达到一次传输操作所涉及的数据量,进而可按照预设的写入方式将缓存单元中的数据写入FPGA内部的存储器BRAM(即Block RAM,是一种在数字集成电路——如FPGA、ASI等——中常见的存储器类型)。其中,预设的写入方式可以但不局限于为乒乓写入方式,即数据被交替写入到两个或多个存储区域中,例如有存储器件BRAM_A和BRAM_B,在向存储器BRAM_A中写入1KB数据后,再向存储器BRAM_B写入1KB,往复循环即为乒乓写操作。
值得注意的是,乒乓写入方式可以解决并行数据传输和处理过程中的延迟问题,进而实现低延时、高带宽的数据存储。与此同时,FPGA还会产生一个中断信号,用以表示其处于可接收数据写入请求的状态。
在产生中断信号之后,FPGA将该中断信号发送给CPU,用以提醒CPU发起数据写入请求。CPU根据该中断信号中的可搬运值,发起与该中断信号对应的数据写入请求。例如,可搬运值为1MB时,CPU可以请求将1MB的数据写入后端存储体阵列。
作为本申请实施例的又一种可选,后端存储体阵列包括第一拆分单元以及第二拆分单元;
由中央处理器以及后端存储体阵列对数据写入请求进行拆分处理,得到至少两个目标请求,包括:
由中央处理器对数据写入请求进行拆分处理,得到至少两个第一请求,并将每个第一请求发送至第一拆分单元;其中,每个第一请求的数据量相同,第一请求的数据量小于数据写入请求的数据量;
由第一拆分单元对每个第一请求进行拆分处理,得到至少两个第二请求,并将每个第二请求发送至第二拆分单元;其中,每个第二请求的数据量相同,第二请求的数据量小于第一请求的数据量;
由第二拆分单元对每个第二请求进行拆分处理,得到至少两个目标请求;其中,目标请求的数据量小于第二请求的数据量。
具体地,后端存储体阵列还可包括第一拆分单元以及第二拆分单元,其中,第一拆分单元可以但不局限于为后端存储体阵列中的存储体的核(通常指的是存储控制器中的处理核心或控制核心),例如NVMe盘的核;第二拆分单元可以但不局限于为存储体中的DMA(Direct Memory Access,直接内存存取)控制器,例如NVMe盘中的DMA控制器。值得注意的是,一个存储体中的核以及DMA控制器可能存在多个,例如NVMe盘中可以有4个核,3个DMA控制器。
在CPU发起数据写入请求之后,可先由CPU对该请求进行拆分处理,得到至少两个数据量相同的第一请求,并将所有第一请求发送至第一拆分单元。此后,由第一拆分单元将每个第一请求拆分成至少两个数据量相同的第二请求,并将所有第二请求发送至第二拆分单元,进而由第二拆分单元将每个第二请求拆分成至少两个数据量相同的目标请求。值得注意的是,目标请求的数据量小于第二请求的数据量,第二请求的数据量小于第一请求的数据量,第一请求的数据量小于数据写入请求的数据量。
此处,可参阅图2,图2示出了本申请实施例提供的一种数据写入请求的拆分过程的整体流程图。
如图2所示,核1、核2、核3以及核4为上述提到NVMe盘的4个核,图中标识出来的数据量为请求的数据量,数据量相同的为同一种请求,图中线条数量不代表请求的具体数量。
可以理解的是,数据写入请求为1MB,经过CPU拆分后分成了多个数据量为32KB的第一请求,并由CPU将所有第一请求发送至NVMe盘的核。NVMe盘的核在接收到数据量为32KB的第一请求后,对每个第一请求进行拆分,得到多个数据量为4KB的第二请求。接着,NVMe盘的核将拆分出来的每个数据量为4KB的第二请求发送至NVMe盘的控制器,并由控制器对每个第二请求进行拆分,得到多个数据量为512B的目标请求,进而可由控制器将每个数据量为512B的目标请求发送给FPGA。其中,控制器可参阅上述提到的DMA控制器。
值得注意的是,每个数据量为32KB的第一请求经过NVMe盘的拆分后到达FPGA是乱序的,但是每个数据量为32KB的第一请求之间是连续的,例如拆分得到的第一个数据量为32KB的第一请求为1MB内的0~32KB,第二个则为32KB~64KB,以此类推。因此,乱序的范围就从1MB变为32KB,进而FPGA只需要对32KB以内的数据进行按地址响应相应的目标请求,即可实现数据的顺序传输。此处,对请求进行多次拆分的原因为FPGA内部的BRAM资源有限,无法针对1MB的数据直接进行重排响应。
步骤102、由后端存储体阵列将每个目标请求发送给现场可编程门阵列,并由现场可编程门阵列对每个目标请求进行解析处理,确定出与每个目标请求对应的目标地址范围。
具体地,在数据写入请求经过CPU以及后端存储体阵列的拆分处理后,得到的目标请求由后端存储体阵列发送给FPGA,并由FPGA对每个目标请求进行解析处理。FPGA在对目标请求进行解析处理后,可得到目标请求中的地址信息,即与每个目标请求对应的目标地址范围。
例如,某目标请求所请求的数据为数据1~数据8,由于数据1~数据8的地址为0x00、0x01、0x02、0x03、0x04、0x05、0x06以及0x07,因此,与该目标请求对应的目标地址范围为0x00~0x07。
作为本申请实施例的又一种可选,由现场可编程门阵列对每个目标请求进行解析处理,确定出与每个目标请求对应的目标地址范围,包括:
由现场可编程门阵列对每个目标请求进行解析处理,得到与每个目标请求对应的目标首地址以及数据有效长度;
根据每个目标首地址以及数据有效长度,计算出与每个目标请求对应的目标地址范围。
具体地,在FPGA解析目标请求得到相应的目标地址范围的过程中,FPGA先通过对每个目标请求进行解析处理,得到与每个目标请求对应的目标首地址以及数据有效长度。接着,FPGA可根据每个目标首地址、数据有效长度以及相应的计算公式,计算出目标末地址,进而根据目标首地址以及目标末地址可得到与每个目标请求对应的目标地址范围。其中,目标末地址的计算公式可以但不局限于为:目标末地址=目标首地址+数据有效长度-1。
例如,FPGA对某目标请求进行解析处理得到的目标首地址为0x1000,数据有效长度为16个字节,根据上述计算公式,可计算出目标末地址为:0x1000+16-1=0x100F,此处,F代表15,0x表示该地址的表示方式为十六进制。因此,根据目标首地址0x1000以及目标末地址0x100F,可得到目标地址范围为:0x1000~0x100F。
步骤103、由现场可编程门阵列基于每个目标地址范围获取相应的目标数据,并确定出与每个目标数据对应的逻辑标识。
具体地,在确定出与每个目标请求对应的目标地址范围之后,可由FPGA根据目标地址范围,读取在目标地址范围内存储的数据,即为目标数据。
例如,某个目标地址范围为0x00~0x07,则FPGA可从内部的BRAM中,与这8个地址对应的存储空间里,获取其中的数据作为目标数据。
与此同时,可根据目标地址范围的数值特性,确定出与每个目标数据对应的逻辑标识,其中,数值特性可以但不局限于包括目标地址范围的首地址以及末地址是唯一的,逻辑标识也是唯一对应的。例如,由于每个目标地址范围中的首地址是唯一且有大小关系的,可根据目标地址范围中的首地址对目标数据进行排序,可以但不局限于将排序结果(如序号等)或目标地址范围中的首地址作为目标数据的逻辑标识。
作为本申请实施例的又一种可选,由现场可编程门阵列基于每个目标地址范围获取相应的目标数据,并确定出与每个目标数据对应的逻辑标识,包括:
由现场可编程门阵列根据预设的移位信息以及每个目标地址范围,对每个目标地址范围进行移位处理,得到与每个目标地址范围对应的存储地址范围;其中,存储地址范围包括存储首地址以及存储末地址;
根据每个存储首地址以及相应的存储末地址,获取与每个存储地址范围对应的目标数据;
根据每个存储首地址,确定出与每个目标数据对应的逻辑标识。
具体地,在确定出与每个目标请求对应的目标地址范围之后,可由FPGA根据预设的移位信息对每个目标地址范围进行移位处理,得到相应的存储地址范围,其中,预设的移位信息可以但不局限于包括移位方式以及移位位数,移位方式可以但不局限于包括逻辑左移以及逻辑右移,目标地址范围与存储地址范围数值不同,但范围大小相同。
需要说明的是,逻辑移位操作是指将一个数的二进制表示向左或向右移动指定的位数,并在移位过程中用0填充空出的位。
例如,某个目标地址范围为0x05~0x07,该目标地址范围的二进制表示为0101~0111,移位信息为逻辑左移一位,则相应的存储地址的二进制表示为1010~1110,即为0x0A~0x0E,此处,A表示十六进制中的数字10,E表示十六进制中的数字14。
可以理解的是,在经过移位处理后得到的存储地址范围包括存储首地址以及存储末地址,按照上述例子,存储首地址以及存储末地址即为0x0A以及0x0E,亦为BRAM中的地址。
接着,可在BRAM中从存储首地址开始读取数据,一直顺序读取到存储末地址所存储的数据,读取到的所有数据即为目标数据。
与此同时,由于每个存储首地址都是唯一且有大小关系的,故可对所有存储首地址进行排序,并将排序结果(如序号等)作为与该存储首地址对应的目标数据的逻辑标识。
步骤104、由现场可编程门阵列基于每个逻辑标识,将每个目标数据发送给后端存储体阵列。
具体地,在确定出每个目标数据的逻辑标识之后,可由FPGA根据每个逻辑标识,确定出该逻辑标识所对应的后端存储体阵列中的写入地址,并根据每个写入地址将相应的数据写入后端存储体阵列,以完成数据存储。
例如,当5个目标数据的逻辑标识分别为序号1、2、3、4、5时,每个序号代表一块存储空间,序号相连即代表存储空间相连,序号1代表第一块盘的第一块存储空间,因而可将这5个数据按照序号从小到大的顺序依次写入后端存储体阵列中的第一块盘中。
作为本申请实施例的又一种可选,数据采集架构还包括数据交换单元;
由现场可编程门阵列基于每个逻辑标识,将每个目标数据发送给后端存储体阵列,包括:
由现场可编程门阵列根据每个逻辑标识以及预设的映射关系,确定出每个目标数据的交换地址;
由现场可编程门阵列基于交换地址将每个目标数据发送至数据交换单元;
由数据交换单元将所有目标数据发送给后端存储体阵列。
具体地,上述提到的数据采集架构还可包括数据交换单元,在由FPGA根据逻辑标识将目标数据发送给后端存储体阵列的过程中,可先由FPGA将目标数据发送给数据交换单元,再由数据交换单元将目标数据发送给后端存储体阵列。
可以理解的是,FPGA是根据逻辑标识以及预设的映射关系,确定出应将写入目标数据的数据交换单元中的存储空间的地址,即交换地址,进而将接受到的每个目标数据写入相应的交换地址所对应的存储空间里。其中,预设的映射关系为逻辑标识与交换地址之间的对应关系。
例如,目标数据1、2、3的逻辑标识分别为A、B、C,根据预设的映射关系,得到对应的交换地址为X、Y、Z。若接收到的目标数据的顺序依次为231,则先将数据2写入交换地址为Y的存储空间,再将数据3写入交换地址为Z的存储空间,最后将数据1写入交换地址为X的存储空间。
值得注意的是,预设的映射关系可通过数据库查询获取,例如某数据库存有该映射关系的表,通过逻辑标识可查询到与该逻辑标识唯一对应的交换地址。
接着,可由数据交换单元在接收了所有目标数据之后,将所有目标数据发送给后端存储体阵列。
作为本申请实施例的又一种可选,由数据交换单元将所有目标数据发送给后端存储体阵列,包括:
当数据交换单元接收到所有目标数据时,对所有目标数据进行整合处理,得到请求数据;
由数据交换单元将请求数据发送给后端存储体阵列。
具体地,当数据交换单元接收到所有目标数据时,即代表着已接收到与数据写入请求所对应的所有用户数据,此时,数据交换单元将所有目标数据整合为一个完整的请求数据,并将该请求数据发送给后端存储体阵列。其中,整合处理的方式可以但不局限于为使用网络协议将多个数据整合为一个数据包以及根据发送数据的地址整合为一个数据包。此处,请求数据中的目标数据是顺序而不是乱序的,也意味着在发送请求数据给后端存储体阵列之前已完成对所有目标数据的排序。
需要说明的是,此处实现目标数据的排序的主体是FPGA,由FPGA根据乱序的目标请求,获取乱序的目标数据,并按地址响应发送目标数据给数据交换单元,以实现重排响应。
请参阅图3,图3示出了本申请实施例提供的一种基于现场可编程门阵列的高速存储方法的整体架构图。
如图3所示,该架构包括前端采集模块、记录控制模块、数据交换模块以及后端存储体阵列,其中,前端采集模块包括FPGA以及缓存(该缓存可以但不局限于为DDR缓存),记录控制模块包括CPU以及***主存,数据交换模块(也即上述的数据交换单元)包括PCIe交换机,后端存储体阵列包括多个存储体以及作为可选的磁盘阵列(即RAID),此处的RAID主要是指硬件RAID。
可以理解的是,用户数据由前端采集模块中的FPGA进行采集,并由FPGA将采集到的用户数据发送给缓存,再从缓存中预取数据(即在接收到数据写入请求之前,先从缓存中读取出用户数据),以降低前端采集模块的延时响应。接着,FPGA将预取出来的数据发送给数据交换模块,并由数据交换模块将该数据发送给后端存储体阵列,以实现低延时、高带宽的数据存储。
值得注意的是,记录控制模块中的CPU作为PCIe的上游端口(即该网络中相较PCIe交换机更高层级的设备的端口),主要负责命令队列的管理、数据写入请求的拆分以及数据交互流程的控制,例如接收来自FPGA的中断信号并根据该中断信号发起数据写入请求等操作。
请参阅图4,图4示出了本申请实施例提供的一种现场可编程门阵列的逻辑模块框图。
如图4所示,该FPGA的逻辑模块框图至少包括片外缓存控制模块、核心模块以及命令解析与数据传输模块,其中,核心模块包括内存控制模块、内存模块以及缓存队列。其中,内存模块可参阅上述提到的BRAM,缓存队列可以但不局限于为FIFO(First-In-First-Out,即先进先出的缓冲区或队列)。
需要说明的是,片外缓存控制模块主要用于通过调用Xilinx官方IP核实现片外缓存(即FPGA芯片外部的缓存)的读写控制,其中,片外缓存可参阅上述提到的DDR;核心模块主要用于把用户数据从DDR中预读出来后采用乒乓写入的方式写入BRAM以及读取BRAM里的数据并发送到PCIe总线(一种高速串行计算机总线标准,用于连接各种外部设备到计算机***,可理解为PCIe交换机的传输通道);命令解析与数据传输模块主要用于解析与传输从NVMe盘发来的TLP命令包(也即目标请求)。其中,Xilinx官方IP核指的是由Xilinx公司官方提供的可重用IP核,这些IP核是经过Xilinx认证和验证的,可以直接在Xilinx FPGA和SoC设备(System-on-Chip,即***级芯片,是一种集成了处理器核心、内存、输入/输出接口、控制器和其他关键组件的芯片,能够提供完整的计算和通信功能,通常用于嵌入式***和移动设备中)上使用,以加速设计开发的过程。
可以理解的是,当FPGA接收到目标请求时,根据命令解析与数据传输模解析出的地址信息,立刻从BRAM中读取与地址信息对应的数据,并发送给后端的FIFO,进而通过FIFO将数据发送给命令解析与数据传输模块,以实现与每个目标请求对应的目标数据的准确传输。
值得注意的是,在命令解析与数据传输模块中,可通过FIFO将从NVMe盘收到的TLP命令包做两级缓存,即在一级缓存和主存之间添加一个额外缓存层——二级缓存。此处,是将这些TLP命令包存储在一个先进先出(FIFO)的缓冲区中,作为二级缓存,即经过一级缓存后将目标请求分发为两部分,一部分解析出目标请求的地址信息并发送给核心模块,一部分送入二级缓存用作后续的命令解析处理。在这种情况下,FPGA的处理器首先会访问一级缓存,如果需要的数据不在一级缓存中,那么接下来会检查二级缓存,如果数据在二级缓存中找到,就可以从二级缓存中获取数据,而不需要从主存中读取,进而提高了数据访问速度,降低了对主存的访问频率,从而提高了***整体性能以及响应速度。
请参阅图5,图5示出了本申请实施例提供的一种基于现场可编程门阵列的高速存储装置的结构示意图。
如图5所示,该基于现场可编程门阵列的高速存储装置至少可以包括第一处理模块501、第二处理模块502、第三处理模块503以及第四处理模块504,其中:
第一处理模块501,用于由中央处理器发起数据写入请求,并由中央处理器以及后端存储体阵列对数据写入请求进行拆分处理,得到至少两个目标请求;其中,每个目标请求的数据量相同;
第二处理模块502,用于由后端存储体阵列将每个目标请求发送给现场可编程门阵列,并由现场可编程门阵列对每个目标请求进行解析处理,确定出与每个目标请求对应的目标地址范围;
第三处理模块503,用于由现场可编程门阵列基于每个目标地址范围获取相应的目标数据,并确定出与每个目标数据对应的逻辑标识;
第四处理模块504,用于由现场可编程门阵列基于每个逻辑标识,将每个目标数据发送给后端存储体阵列。
在一些可能的实施例中,数据采集架构还包括缓存单元;
在由中央处理器发起数据写入请求之前,包括:
第一处理模块501具体用于:
由现场可编程门阵列接收用户数据,并将用户数据发送至缓存单元;其中,用户数据为与数据写入请求相对应的数据;
由现场可编程门阵列实时计算缓存单元的数据量,并判断数据量是否达到预设的阈值;
当识别出数据量达到预设的阈值时,由现场可编程门阵列根据预设的写入方式对缓存单元中的用户数据进行写入操作,并产生中断信号。
由中央处理器发起数据写入请求,包括:
第一处理模块501具体用于:
由现场可编程门阵列发送中断信号给中央处理器;
由中央处理器根据中断信号,发起与中断信号对应的数据写入请求。
在一些可能的实施例中,后端存储体阵列包括第一拆分单元以及第二拆分单元;
由中央处理器以及后端存储体阵列对数据写入请求进行拆分处理,得到至少两个目标请求,包括:
第一处理模块501具体用于:
由中央处理器对数据写入请求进行拆分处理,得到至少两个第一请求,并将每个第一请求发送至第一拆分单元;其中,每个第一请求的数据量相同,第一请求的数据量小于数据写入请求的数据量;
由第一拆分单元对每个第一请求进行拆分处理,得到至少两个第二请求,并将每个第二请求发送至第二拆分单元;其中,每个第二请求的数据量相同,第二请求的数据量小于第一请求的数据量;
由第二拆分单元对每个第二请求进行拆分处理,得到至少两个目标请求;其中,目标请求的数据量小于第二请求的数据量。
在一些可能的实施例中,由现场可编程门阵列对每个目标请求进行解析处理,确定出与每个目标请求对应的目标地址范围,包括:
第二处理模块502具体用于:
由现场可编程门阵列对每个目标请求进行解析处理,得到与每个目标请求对应的目标首地址以及数据有效长度;
根据每个目标首地址以及数据有效长度,计算出与每个目标请求对应的目标地址范围。
在一些可能的实施例中,由现场可编程门阵列基于每个目标地址范围获取相应的目标数据,并确定出与每个目标数据对应的逻辑标识,包括:
第三处理模块503具体用于:
由现场可编程门阵列根据预设的移位信息以及每个目标地址范围,对每个目标地址范围进行移位处理,得到与每个目标地址范围对应的存储地址范围;其中,存储地址范围包括存储首地址以及存储末地址;
根据每个存储首地址以及相应的存储末地址,获取与每个存储地址范围对应的目标数据;
根据每个存储首地址,确定出与每个目标数据对应的逻辑标识。
在一些可能的实施例中,数据采集架构还包括数据交换单元;
由现场可编程门阵列基于每个逻辑标识,将每个目标数据发送给后端存储体阵列,包括:
第四处理模块504具体用于:
由现场可编程门阵列根据每个逻辑标识以及预设的映射关系,确定出每个目标数据的交换地址;
由现场可编程门阵列基于交换地址将每个目标数据发送至数据交换单元;
由数据交换单元将所有目标数据发送给后端存储体阵列。
在一些可能的实施例中,由数据交换单元将所有目标数据发送给后端存储体阵列,包括:
第四处理模块504具体用于:
当数据交换单元接收到所有目标数据时,对所有目标数据进行整合处理,得到请求数据;
由数据交换单元将请求数据发送给后端存储体阵列。
请参阅图6,图6示出了本申请实施例提供的又一种基于现场可编程门阵列的高速存储装置的结构示意图。
如图6所示,该基于现场可编程门阵列的高速存储装置600可以包括至少一个处理器601、至少一个网络接口604、用户接口603、存储器605以及至少一个通信总线602。
其中,通信总线602可用于实现上述各个组件的连接通信。
其中,用户接口603可以包括按键,可选用户接口还可以包括标准的有线接口、无线接口。
其中,网络接口604可以但不局限于包括蓝牙模块、NFC模块、Wi-Fi模块等。
其中,处理器601可以包括一个或者多个处理核心。处理器601利用各种接口和线路连接整个基于现场可编程门阵列的高速存储装置600内的各个部分,通过运行或执行存储在存储器605内的指令、程序、代码集或指令集,以及调用存储在存储器605内的数据,执行基于现场可编程门阵列的高速存储装置600的各种功能和处理数据。可选的,处理器601可以采用DSP、FPGA、PLA中的至少一种硬件形式来实现。处理器601可集成CPU、GPU和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作***、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器601中,单独通过一块芯片进行实现。
其中,存储器605可以包括RAM,也可以包括ROM。可选的,该存储器605包括非瞬时性计算机可读介质。存储器605可用于存储指令、程序、代码、代码集或指令集。存储器605可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作***的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器605可选的还可以是至少一个位于远离前述处理器601的存储装置。如图6所示,作为一种计算机存储介质的存储器605中可以包括操作***、网络通信模块、用户接口模块以及基于现场可编程门阵列的高速存储应用程序。
具体地,处理器601可以用于调用存储器605中存储的基于现场可编程门阵列的高速存储应用程序,并具体执行以下操作:
由中央处理器发起数据写入请求,并由中央处理器以及后端存储体阵列对数据写入请求进行拆分处理,得到至少两个目标请求;其中,每个目标请求的数据量相同;
由后端存储体阵列将每个目标请求发送给现场可编程门阵列,并由现场可编程门阵列对每个目标请求进行解析处理,确定出与每个目标请求对应的目标地址范围;
由现场可编程门阵列基于每个目标地址范围获取相应的目标数据,并确定出与每个目标数据对应的逻辑标识;
由现场可编程门阵列基于每个逻辑标识,将每个目标数据发送给后端存储体阵列。
本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。其中,计算机可读存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、DVD、CD-ROM、微型驱动器以及磁光盘、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪速存储器设备、磁卡或光卡、纳米***(包括分子存储器IC),或适合于存储指令和/或数据的任何类型的媒介或设备。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些服务接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(Read-Only Memory, ROM)、随机存取存储器(RandomAccess Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通进程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(Read-Only Memory, ROM)、随机存取器(Random AccessMemory,RAM)、磁盘或光盘等。
以上者,仅为本公开的示例性实施例,不能以此限定本公开的范围。即但凡依本公开教导所作的等效变化与修饰,皆仍属本公开涵盖的范围内。本领域技术人员在考虑说明书及实践这里的公开后,将容易想到本公开的其实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未记载的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的范围和精神由权利要求限定。
Claims (10)
1.一种基于现场可编程门阵列的高速存储方法,其特征在于,所述方法应用于数据采集架构,所述数据采集架构包括现场可编程门阵列、中央处理器以及后端存储体阵列,所述方法包括:
由所述中央处理器发起数据写入请求,并由所述中央处理器以及所述后端存储体阵列对所述数据写入请求进行拆分处理,得到至少两个目标请求;其中,每个所述目标请求的数据量相同;
由所述后端存储体阵列将每个所述目标请求发送给所述现场可编程门阵列,并由所述现场可编程门阵列对每个所述目标请求进行解析处理,确定出与每个所述目标请求对应的目标地址范围;
由所述现场可编程门阵列基于每个所述目标地址范围获取相应的目标数据,并确定出与每个所述目标数据对应的逻辑标识;
由所述现场可编程门阵列基于每个所述逻辑标识,将每个所述目标数据发送给所述后端存储体阵列。
2.根据权利要求1所述的方法,其特征在于,所述数据采集架构还包括缓存单元;
在所述由所述中央处理器发起数据写入请求之前,包括:
由所述现场可编程门阵列接收用户数据,并将所述用户数据发送至所述缓存单元;其中,所述用户数据为与所述数据写入请求相对应的数据;
由所述现场可编程门阵列实时计算所述缓存单元的数据量,并判断所述数据量是否达到预设的阈值;
当识别出所述数据量达到所述预设的阈值时,由所述现场可编程门阵列根据预设的写入方式对所述缓存单元中的用户数据进行写入操作,并产生中断信号;
所述由所述中央处理器发起数据写入请求,包括:
由所述现场可编程门阵列发送所述中断信号给所述中央处理器;
由所述中央处理器根据所述中断信号,发起与所述中断信号对应的数据写入请求。
3.根据权利要求1所述的方法,其特征在于,所述后端存储体阵列包括第一拆分单元以及第二拆分单元;
所述由所述中央处理器以及所述后端存储体阵列对所述数据写入请求进行拆分处理,得到至少两个目标请求,包括:
由所述中央处理器对所述数据写入请求进行拆分处理,得到至少两个第一请求,并将每个所述第一请求发送至所述第一拆分单元;其中,每个所述第一请求的数据量相同,所述第一请求的数据量小于所述数据写入请求的数据量;
由所述第一拆分单元对每个所述第一请求进行拆分处理,得到至少两个第二请求,并将每个所述第二请求发送至所述第二拆分单元;其中,每个所述第二请求的数据量相同,所述第二请求的数据量小于所述第一请求的数据量;
由所述第二拆分单元对每个所述第二请求进行拆分处理,得到至少两个目标请求;其中,所述目标请求的数据量小于所述第二请求的数据量。
4.根据权利要求1所述的方法,其特征在于,所述由所述现场可编程门阵列对每个所述目标请求进行解析处理,确定出与每个所述目标请求对应的目标地址范围,包括:
由所述现场可编程门阵列对每个所述目标请求进行解析处理,得到与每个所述目标请求对应的目标首地址以及数据有效长度;
根据每个所述目标首地址以及所述数据有效长度,计算出与每个所述目标请求对应的目标地址范围。
5.根据权利要求1所述的方法,其特征在于,所述由所述现场可编程门阵列基于每个所述目标地址范围获取相应的目标数据,并确定出与每个所述目标数据对应的逻辑标识,包括:
由所述现场可编程门阵列根据预设的移位信息以及每个所述目标地址范围,对每个所述目标地址范围进行移位处理,得到与每个所述目标地址范围对应的存储地址范围;其中,所述存储地址范围包括存储首地址以及存储末地址;
根据每个所述存储首地址以及相应的存储末地址,获取与每个所述存储地址范围对应的目标数据;
根据每个所述存储首地址,确定出与每个所述目标数据对应的逻辑标识。
6.根据权利要求1所述的方法,其特征在于,所述数据采集架构还包括数据交换单元;
所述由所述现场可编程门阵列基于每个所述逻辑标识,将每个所述目标数据发送给所述后端存储体阵列,包括:
由所述现场可编程门阵列根据每个所述逻辑标识以及预设的映射关系,确定出每个所述目标数据的交换地址;
由所述现场可编程门阵列基于所述交换地址将每个所述目标数据发送至所述数据交换单元;
由所述数据交换单元将所有所述目标数据发送给所述后端存储体阵列。
7.根据权利要求6所述的方法,其特征在于,所述由所述数据交换单元将所有所述目标数据发送给所述后端存储体阵列,包括:
当所述数据交换单元接收到所有所述目标数据时,对所有所述目标数据进行整合处理,得到请求数据;
由所述数据交换单元将所述请求数据发送给所述后端存储体阵列。
8.一种基于现场可编程门阵列的高速存储装置,其特征在于,所述装置应用于数据采集架构,所述数据采集架构包括现场可编程门阵列、中央处理器以及后端存储体阵列,所述装置包括:
第一处理模块,用于由所述中央处理器发起数据写入请求,并由所述中央处理器以及所述后端存储体阵列对所述数据写入请求进行拆分处理,得到至少两个目标请求;其中,每个所述目标请求的数据量相同;
第二处理模块,用于由所述后端存储体阵列将每个所述目标请求发送给所述现场可编程门阵列,并由所述现场可编程门阵列对每个所述目标请求进行解析处理,确定出与每个所述目标请求对应的目标地址范围;
第三处理模块,用于由所述现场可编程门阵列基于每个所述目标地址范围获取相应的目标数据,并确定出与每个所述目标数据对应的逻辑标识;
第四处理模块,用于由所述现场可编程门阵列基于每个所述逻辑标识,将每个所述目标数据发送给所述后端存储体阵列。
9.一种基于现场可编程门阵列的高速存储装置,其特征在于,包括处理器以及存储器;
所述处理器与所述存储器连接;
所述存储器,用于存储可执行程序代码;
所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于执行如权利要求1-7任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在计算机或处理器上运行时,使得所述计算机或处理器执行如权利要求1-7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410058142.7A CN118012338A (zh) | 2024-01-16 | 2024-01-16 | 一种基于现场可编程门阵列的高速存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410058142.7A CN118012338A (zh) | 2024-01-16 | 2024-01-16 | 一种基于现场可编程门阵列的高速存储方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118012338A true CN118012338A (zh) | 2024-05-10 |
Family
ID=90949639
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410058142.7A Pending CN118012338A (zh) | 2024-01-16 | 2024-01-16 | 一种基于现场可编程门阵列的高速存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118012338A (zh) |
-
2024
- 2024-01-16 CN CN202410058142.7A patent/CN118012338A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112328185B (zh) | 一种基于分布式存储的智能预读方法 | |
US9734085B2 (en) | DMA transmission method and system thereof | |
KR101378270B1 (ko) | Sas 확장기를 포함하는 저장 시스템에서 데이터 판독을 가능하게 하기 위한 방법, 시스템 및 sas 확장기 디바이스 | |
KR20170002369A (ko) | 플래시 메모리 압축 | |
TW200406680A (en) | Method, system, and program for handling input/output commands | |
CN111177025B (zh) | 数据存储方法、装置及终端设备 | |
CN113468097B (zh) | 基于片上***的数据交换方法 | |
US11372782B2 (en) | Computing system for reducing latency between serially connected electronic devices | |
US20150347017A1 (en) | Command trapping in an input/output virtualization (iov) host controller (hc) (iov-hc) of a flash-memory-based storage device | |
CN104461943A (zh) | 数据读取方法、装置以及*** | |
KR102180975B1 (ko) | 랩핑된 판독 대 연속적인 판독을 갖는 메모리 서브 시스템 | |
TW201303870A (zh) | 利用快閃記憶體介面的方法及裝置 | |
WO2022223003A1 (zh) | 一种文件访问方法、网卡以及计算设备 | |
CN109426434A (zh) | 一种光盘数据读写方法 | |
WO2022068760A1 (zh) | 内存管理的方法及其装置 | |
WO2014056329A1 (zh) | 内存数据的推送方法及装置 | |
US9541921B2 (en) | Measuring performance of an appliance | |
WO2019174206A1 (zh) | 一种存储设备的数据读取方法、装置、终端设备和存储介质 | |
TWI275943B (en) | Method, system, and computer readable recording medium for returning data to read requests | |
CN113485643A (zh) | 用于数据存取的方法及数据写入的控制器 | |
CN118012338A (zh) | 一种基于现场可编程门阵列的高速存储方法及装置 | |
CN112825024A (zh) | 命令融合、拆分方法与NVMe控制器 | |
WO2020029619A1 (zh) | 数据处理的方法、设备和服务器 | |
CN116610262A (zh) | 降低ssd顺序读延时的方法、装置、设备及介质 | |
US11775451B2 (en) | Computing system for reducing latency between serially connected electronic devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |