CN112506823B - 一种fpga数据读写方法、装置、设备及可读存储介质 - Google Patents
一种fpga数据读写方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN112506823B CN112506823B CN202011444718.1A CN202011444718A CN112506823B CN 112506823 B CN112506823 B CN 112506823B CN 202011444718 A CN202011444718 A CN 202011444718A CN 112506823 B CN112506823 B CN 112506823B
- Authority
- CN
- China
- Prior art keywords
- data
- address
- cache
- target
- read
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种FPGA数据读写方法,该方法在FPGA中的某些应用需要与外部存储器进行数据交互的各种场景中,为了减少读数据响应延时时间带来的效率瓶颈,利用FPGA设计一种cache高速缓存控制器,将cache通过在FPGA平台上用硬件资源进行实现,在cache存储器中存储有相应数据时,FPGA平台无需与外部存储器进行交互,利用cache的高速数据读写特性,客户端直接与cache存储器进行数据交互,使得FPGA能在较短的时间内向应用模块返回数据结果,提高数据处理性能,可以满足在FPGA平台上的各种高速应用。本发明还公开了一种FPGA数据读写装置、设备及可读存储介质,具有相应的技术效果。
Description
技术领域
本发明涉及存储技术领域,特别是涉及一种FPGA数据读写方法、装置、设备及可读存储介质。
背景技术
在各种FPGA(现场可编程门阵列)平台的应用设计中,主要有两类缓存介质,一类是内部RAM(随机存储器,断电将丢失存储内容),访问速度快,但是容量小造价贵,另一类是片外内存,比如DDR(双倍速率同步动态随机存储器)和QDR(四倍速率同步动态随机存储器,在DDR基础上,拥有独立的写接口和读接口)等,访问速度慢,但是容量大,造价低。因此,综合考虑,一般大数据量应用场景下会以牺牲访问速度作为代价,选择使用DDR和QDR作为数据缓存媒介。
但是在FPGA与片外内存进行数据交互的各种场景中,如何减少读数据响应延时时间带来的效率瓶颈,这在对速度敏感的各种应用设计中有着至关重要的作用。但是目前针对于此并没有很好的解决方式。
综上所述,如何提升FPGA与片外内存之间的数据访问速度,减少数据响应延时,是目前本领域技术人员急需解决的技术问题。
发明内容
本发明的目的是提供一种FPGA数据读写方法、装置、设备及可读存储介质,可以提升FPGA与片外内存之间的数据访问速度,减少数据响应延时。
为解决上述技术问题,本发明提供如下技术方案:
当接收到FPGA发送的数据读写请求后,确定所述数据读写请求对应的目标地址;
根据cache高速存储模块的相关表中记录的地址信息判断所述目标地址对应的目标数据是否在cache存储器中;
若是,调用所述cache存储器中的数据进行请求响应。
可选地,根据cache高速存储模块的相关表中记录的地址信息判断所述目标地址对应的目标数据是否在cache存储器中,包括:
将所述目标地址按区、组、块、突发进行地址拆分;
根据拆分后的地址查询相关表中是否存在对应的cache地址;
若存在,判定所述目标数据在所述cache存储器中;
若不存在,判定所述目标数据不在所述cache存储器中。
可选地,根据拆分后的地址查询相关表中是否存在对应的cache地址,包括:
根据预设地址映射规则对所述拆分后的地址进行地址映射,得到映射结果;
判断预设RAM中是否存储有所述映射结果;
若没有,判定查询相关表中存在所述拆分后的地址对应的cache地址;
若没有,判定查询相关表中不存在所述拆分后的地址对应的cache地址。
可选地,所述FPGA数据读写方法还包括:
当所述数据读写请求为数据读请求,若所述目标数据不在所述cache存储器中,将无用数据对应的存储空间作为空闲存储空间;其中,所述无用数据为根据次数计数表确定的老化数据或读写次数少的数据;
将外部存储器中所述目标地址对应的数据存储至所述cache高速存储模块中的所述空闲存储空间,并将所述数据反馈至所述应用模块。
可选地,在将外部存储器中所述目标地址对应的数据存储至所述cache高速存储模块中的所述空闲存储空间之前,还包括:
判断所述无用数据对应的回写标志位是否有效;
若有效,将所述cache高速存储模块中的无用数据回写至所述外部存储器,执行所述将无用数据对应的存储空间作为所述空闲存储空间的步骤;
若无效,执行所述将无用数据对应的存储空间作为所述空闲存储空间的步骤。
可选地,所述FPGA数据读写方法还包括:
当所述数据读写请求为数据写请求,若所述目标数据不在所述cache存储器中,将无用数据对应的存储空间作为空闲存储空间;其中,所述无用数据为根据次数计数表确定的老化数据或读写次数少的数据;
将所述数据写请求对应的待写入数据存储至所述cache高速存储模块中的所述空闲存储空间,并将外部存储器中所述目标地址对应的数据使能取反后写入所述空闲存储空间。
可选地,在确定所述数据读写请求对应的目标地址之前,还包括:
判断是否存在所述数据读写请求之前未响应的数据读写请求;
若存在,对接收到的多路数据读写请求进行优先级仲裁,得到当前待处理的数据读写请求;
则相应地,确定所述数据读写请求对应的目标地址,包括:确定所述待处理的数据读写请求对应的目标地址。
本申请还提供了一种FPGA数据读写设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述FPGA数据读写方法的步骤。
本申请还提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述FPGA数据读写方法的步骤。
应用本发明实施例所提供的方法,当FPGA中的某些应用需要与外部存储器进行数据交互的各种场景中,为了减少读数据响应延时时间带来的效率瓶颈,利用FPGA内部的RAM设计一种cache高速缓存控制器,将cache通过在FPGA平台上用硬件资源进行实现,在cache存储器中存储有相应数据时,FPGA平台无需与外部存储器进行交互,利用cache的高速数据读写特性,客户端直接与cache存储器进行数据交互,使得FPGA能在较短的时间内向应用模块返回数据结果,提高数据处理性能,可以满足在FPGA平台上的各种高速应用。
相应地,本发明实施例还提供了与上述FPGA数据读写方法相对应的FPGA数据读写装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种FPGA数据读写方法的实施流程图;
图2为本发明实施例中一种cache高速存储模块结构示意图;
图3为本发明实施例中一种FPGA数据读写整体实现流程图;
图4为本发明实施例中一种FPGA数据读写装置的结构示意图;
图5为本发明实施例中一种FPGA数据读写设备的结构示意图。
具体实施方式
本发明的核心是提供一种FPGA数据读写方法,可以提升FPGA与片外内存之间的数据访问速度,减少数据响应延时。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
cache是位于CPU与内存之间的高速缓冲存储器,虽然容量小,但存取速度快。存取速度比内存快几倍甚至几十倍。cache中存储的是内存的一部分数据,是CPU刚刚使用过或频繁使用的数据,以便于CPU的随时读取。当CPU访问内存时,首先判断cache中是否存有这些数据,如果有,则称为命中,就可以直接从cache中取出这些数据,而不用再次访问内存,cache的存储速度相当快,这就减少了CPU的等待时间,提高了CPU利用率。弥补CPU与内存之间的速度差异,这也是传统应用中cache的主要作用。
同时,在某些应用场合,FPGA内部对片外内存数据进行访问的过程中,会集中在一段相对固定的地址区间,如果对这段集中的相对容量较小的空间进行速度提升,那么将对整体数据的访问速度有一个质的提高。
鉴于此,本申请提出在FPGA内部设计一种cache高速缓存,在FPGA应用平台中,当某些应用需要与外部存储器,利用FPGA内部的RAM设计一种cache高速缓存控制器,以提升数据访问速度的同时,保障较大的数据存储空间,以提高FPGA整体运行性能。
请参考图1,图1为本发明实施例中一种FPGA数据读写方法的流程图,该方法包括以下步骤:
S101、当接收到FPGA发送的数据读写请求后,确定数据读写请求对应的目标地址;
当接收到FPGA的应用模块发送的数据读请求或数据写请求后(本实施例中对于请求的类型不做限定,可以为读请求,也可以为写请求,以下将读请求与写请求统称为读写请求),需要确定该请求对应的目标地址,当该请求为读请求时,目标地址即待读取的数据对应的存储地址,若该请求为写请求时,目标地址即待写入(修改或添加)的数据对应的存储地址。
需要说明的是,在确定数据读写请求对应的目标地址之前,可以进一步执行以下步骤:
(1)判断是否存在数据读写请求之前未响应的数据读写请求;
(2)若存在,对接收到的多路数据读写请求进行优先级仲裁,得到当前待处理的数据读写请求;
则相应地,确定数据读写请求对应的目标地址,包括:确定待处理的数据读写请求对应的目标地址。
当客户端DB总线发出多路请求,首先会在仲裁模块会对多路请求优先级仲裁,确定当前待处理的数据请求进行任务的下发以及请求的响应处理,其余请求会暂时处于挂起状态,以保证各数据读写请求间的有序响应。而本实施例中对于具体的优先级仲裁的仲裁规则不做限定,可以根据实际使用需要进行相应设定,在此不再赘述。
当然,也可以不执行以上步骤,本实施例中对此不做限定,
S102、根据cache高速存储模块的相关表中记录的地址信息判断目标地址对应的目标数据是否在cache存储器中;
判断目标地址是否在cache高速存储模块的相关表中即判断当前待读写的数据对象是否存储于cache高速存储模块的cache的存储器中,而判断的过程可以基于cache高速存储模块中的相关表中存储的地址信息比对得到。整个cache高速存储模块主要包含cache存储器、相关表、次序计数表三部分,如图2所示为一种cache高速存储模块结构示意图,cache主要负责将应用模块(FPGA逻辑中需要进行数据读写的主体)送入的数据进行缓存,并将地址拆分到相关表和次序计数表中,待cache满后,再将cache存储器溢出的数据回写到外部存储器(比如DDR或QDR)中。假设内存输入地址总线为AD,地址位度为ad_w,将其按位分段为区地址位宽area_w,组地址位宽group_w,块地址位宽block_w,突发地址位宽brust_w。同样area,group,block分别表示区地址、组地址、块地址十进制数。
ad_w的映射原则是尽量将使用频率低的地址位映射到area_w,然后再按相应型号外部存储器(DDR和QDR)及一次性读写数据个数确定一个合理的brust_w地址位,剩余地址位均衡分配到block_w和group_w。
使用RAM创建block个相关表和次序计数表。每个相关表和次序计数表地址深度为group。其中相关表中存储内容为:区地址&块地址。次序计数表中存储为cache中每个group地址处存储数据的老旧程度。
相关表由2block_w个RAM组成,每个RAM的位宽等于区地址和块地址位宽之和area_w+block_w,RAM的深度是2group_w。例如组地址为4bit,块地址为3bit,区地址为10bit,那么相关表就应该有23=8个RAM,每个RAM的位宽为13bit,深度为24=16.这样在组内全映射时,可以通过8个RAM同时操作,在一个时钟内将该组的所有块全部取出进行比较。
而其中,对于根据cache高速存储模块的相关表中记录的地址信息判断目标地址对应的目标数据是否在cache存储器中的具体实现方式本实施例中不做限定,可以按照下述步骤来实现:
(1)将目标地址按区、组、块、突发进行地址拆分;
(2)根据拆分后的地址查询相关表中是否存在对应的cache地址;
(3)若存在,判定目标数据在cache存储器中;
(4)若不存在,判定目标数据不在cache存储器中。
将应用模块输入的地址AD进行分解,提取区地址area,组地址group,块地址block。然后同时读出每个相关表group地址中的数据,并逐一与{area,block}进行比较,若相等即命中,则将命中相关表编号num作为命中编号hit_num输出,同时输出命中标志独热码hit。若不存在相等的数据,表示未命中,判定数据读写请求对应的目标数据不在cache存储器中。而上述基于区、组、块、突发地址对目标地址拆分后进行匹配查询的实现方式具体可以参照传统方法中在CPU中实现cache高速存储的实现方式,本实施例汇总对此不再赘述。
步骤(2)中可以直接对相关表中记录的地址进行逐一比对,本实施例中提供了一种实现方式如下:
(2.1)根据预设地址映射规则对拆分后的地址进行地址映射,得到映射结果;
(2.2)判断预设RAM中是否存储有映射结果;
(2.3)若没有,判定查询相关表中存在拆分后的地址对应的cache地址;
(2.4)若没有,判定查询相关表中不存在拆分后的地址对应的cache地址。
使用RAM创建一个cache高速存储模块用于存储数据内容,地址位宽为cache_w=group_w+block_w+brust_w。相当于将AD地址中的group_w+block_w+brust_w这个地址位范围映射到cache高速存储模块地址总线上,因此可以通过设置group_w、block_w、brust_w的参数来自由调整映射范围,增加了cache配置的灵活性。同时,本实施例中在FPGA内部实现的cache,地址可根据应用现场进行重映射,大小容量是可以根据每款FPGA的容量或应用需要,通过参数进行灵活配置的,因此可以提升资源利用率。
若目标地址在cache存储器中,触发步骤S103,若不在,本实施例中对此不做限定,可以直接调用外部存储器中的数据进行请求响应,也可以将外部存储器中的数据添加至cache存储器后再根据cache存储器中的数据进行请求的响应。
S103、调用cache存储器中的数据进行请求响应。
若目标地址在cache存储器相关表中,则可以直接从cache存储器中读取该目标地址对应的数据(即目标数据),根据该数据进行当前数据读写请求的响应,若为写请求,直接将输入数据写入cache存储器中更新,并将对应的回写标志位使能,待下次该数据被挤出cache时,回写到外部存储器中,若为读请求,直接从cache中读取数据,返回给客户端。这样,当应用模块输入的地址AD在相关表中命中,那么应用模块可以直接从cache中读取数据,提高了数据读取效率。其中,cache存储器可以通过双端口RAM来实现,在发出读命令到输出有效数据只需要一个时钟周期。
本实施例中对于具体的调用cache存储器中的数据进行请求响应的实现逻辑不做限定,可以按照相关cache数据调用规则,在此不再赘述。
本发明实施例所提供的技术方案,当FPGA中的某些应用需要与外部存储器进行数据交互的各种场景中,为了减少读数据响应延时时间带来的效率瓶颈,利用FPGA内部的RAM设计一种cache高速缓存控制器,将cache通过在FPGA平台上用硬件资源进行实现,在cache存储器中存储有相应数据时,FPGA平台无需与外部存储器进行交互,利用cache的高速数据读写特性,客户端直接与cache存储器进行数据交互,使得FPGA能在较短的时间内向应用模块返回数据结果,提高数据处理性能,可以满足在FPGA平台上的各种高速应用。
需要说明的是,基于上述实施例,本发明实施例还提供了相应的改进方案。在优选/改进实施例中涉及与上述实施例中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在本文的优选/改进实施例中不再一一赘述。
上述实施例中对于数据读写请求对应的目标数据不在cache存储器中的处理方式不做限定,本实施例中介绍一种处理方式,具体如下:
(1)当数据读写请求为数据读请求,若目标数据不在cache存储器中,将无用数据对应的存储空间作为空闲存储空间;其中,无用数据为根据次数计数表确定的老化数据或读写次数少的数据;
(2)将外部存储器中目标地址对应的数据存储至cache高速存储模块中的空闲存储空间,并将数据反馈至应用模块。
需要说明的是,本实施例中对于请求的类型的确定(即确定数据请求为数据读请求还是数据写请求)触发时机不做限定,可以在接收到FPGA客户端的请求后触发,也可以在确定数据读写请求对应的目标地址之后执行,在此不做限定。
如果不存在对应cache地址,表示不命中,然后根据拆分的块地址,组地址,查询次序计数表,计算出最少(可能是读写次数少,也可能是空闲空间)或最老(cache对应块索引满时)使用的cache存储器的块索引,并与组地址重新组合成cache存储器索引地址,作为空闲存储空间地址,从外部存储器中读取数据返回客户端,然后再从外部存储器中将数据写入cache存储器中的空闲存储空间地址进行覆盖。
进一步地,在将外部存储器中目标地址对应的数据存储至cache高速存储模块中的空闲存储空间之前,可以进一步执行以下步骤:
(3)判断无用数据对应的回写标志位是否有效;
(4)若有效,将cache高速存储模块中的无用数据回写至外部存储器,执行将无用数据对应的存储空间作为空闲存储空间的步骤;
(5)若无效,执行将无用数据对应的存储空间作为空闲存储空间的步骤。
在将外部存储器中目标地址对应的数据存储至cache高速存储模块中的空闲存储空间之前,判断该索引对应回写标志位是否有效,若有效,先将其对应cache存储数据回写到外部存储器中,再执行数据写入的步骤,可以保障写入的数据均可以固定存储于外部存储器中,保障用户操作的有效性。
其中,次序计数表的功能主要是记录每个相关表某一地址存储数据的老化顺序,为全映射比较范围内的替换地址提供优先级。
命中判断结束后,由相关表输出的命中标志hit,命中编号hit_num和组地址group,进行判断。
cache命中时,将编号hit_num次序计数表group地址读取,记作hit_order_count,将其依次与所有编号次序计数表group地址中的值比较,如果大于,则将该编号次序计数表group地址中的值+1,如果等于,则将该块group地址次序计数表的值清0,如果小于,不变。
cache未命中时,按次序计数表编号从低向高查询group地址中数值,将其中唯一全bit=1的次序计数表编号,记作new_num,然后将该编号次序计数表group地址的值清0,将其它编号次序计数表group地址的值全部+1,并将new_num输出到相关表,然后将{area,group}写入new_num编号group地址的相关表中。
而当数据读写请求为数据写请求,若目标数据不在cache存储器中的一种处理方式如下:
(6)当数据读写请求为数据写请求,若目标数据不在cache存储器中,将无用数据对应的存储空间作为空闲存储空间;其中,无用数据为根据次数计数表确定的老化数据或读写次数少的数据;
本步骤的实现可以参照上述介绍,在此不再赘述。
(7)将数据写请求对应的待写入数据存储至cache高速存储模块中的空闲存储空间,并将外部存储器中目标地址对应的数据使能取反后写入空闲存储空间。
如果不存在对应cache地址,表示不命中,然后根据拆分的块地址,组地址,查询次序计数表,计算出最少或最老(cache对应块索引满时)使用的cache存储器的块索引,并与组地址重新组合成cache存储器索引地址,将新数据写入到该索引对应的cache存储器中,然后如果字节使能不是全F,则随后应从外部存储器中读取相应未使能字节数据写入cache中进行覆盖,同时重新将相应回写使能标志使能。而在将新数据写入到该索引对应的cache存储器中之前,可以判断该索引对应回写标志位是否有效,若有效,先将其对应cache存储数据回写到外部存储器中,并执行后续步骤,若无效,则直接执行后续步骤。一种整体实现流程如图3所示,基于该流程的实现方式均可参照上述介绍,在此不再赘述。
相应于上面的方法实施例,本发明实施例还提供了一种FPGA数据读写装置,下文描述的FPGA数据读写装置与上文描述的FPGA数据读写方法可相互对应参照。
参见图4所示,该装置包括以下模块:
请求接收单元110主要用于当接收到FPGA发送的数据读写请求后,确定数据读写请求对应的目标地址;
Cache判断单元120主要用于根据cache高速存储模块的相关表中记录的地址信息判断目标地址对应的目标数据是否在cache存储器中;若是,触发Cache调用单元;
Cache调用单元130主要用于调用cache存储器中的数据进行请求响应。
相应于上面的方法实施例,本发明实施例还提供了一种FPGA数据读写设备,下文描述的一种FPGA数据读写设备与上文描述的一种FPGA数据读写方法可相互对应参照。
该FPGA数据读写设备主要包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现上述方法实施例的FPGA数据读写方法的步骤。
具体的,请参考图5,为本实施例提供的一种FPGA数据读写设备的具体结构示意图,该FPGA数据读写设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储器332通信,在FPGA数据读写设备301上执行存储器332中的一系列指令操作。
FPGA数据读写设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。
上文所描述的FPGA数据读写方法中的步骤可以由FPGA数据读写设备的结构实现。
相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种FPGA数据读写方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的FPGA数据读写方法的步骤。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
Claims (4)
1.一种FPGA数据读写方法,其特征在于,包括:
判断是否存在数据读写请求之前未响应的数据读写请求;
若存在,对接收到的多路数据读写请求进行优先级仲裁,得到当前待处理的数据读写请求;
则相应地,确定所述数据读写请求对应的目标地址,包括:确定所述待处理的数据读写请求对应的目标地址;
当接收到FPGA发送的数据读写请求后,确定所述数据读写请求对应的目标地址;
根据cache高速存储模块的相关表中记录的地址信息判断所述目标地址对应的目标数据是否在cache存储器中;
所述根据cache高速存储模块的相关表中记录的地址信息判断所述目标地址对应的目标数据是否在cache存储器中,包括:
将所述目标地址按区、组、块、突发进行地址拆分;
根据拆分后的地址查询相关表中是否存在对应的cache地址;
所述根据拆分后的地址查询相关表中是否存在对应的cache地址,包括:
根据预设地址映射规则对所述拆分后的地址进行地址映射,得到映射结果;
判断预设RAM中是否存储有所述映射结果;
若有,判定查询相关表中存在所述拆分后的地址对应的cache地址;
若没有,判定查询相关表中不存在所述拆分后的地址对应的cache地址;
若存在,判定所述目标数据在所述cache存储器中;
若不存在,判定所述目标数据不在所述cache存储器中;
若是,调用所述cache存储器中的数据进行请求响应;
当所述数据读写请求为数据读请求,若所述目标数据不在所述cache存储器中,将无用数据对应的存储空间作为空闲存储空间;其中,所述无用数据为根据次数计数表确定的老化数据或读写次数少的数据;
判断所述无用数据对应的回写标志位是否有效;
若有效,将所述cache高速存储模块中的无用数据回写至外部存储器,执行所述将无用数据对应的存储空间作为所述空闲存储空间的步骤;
若无效,执行所述将无用数据对应的存储空间作为所述空闲存储空间的步骤;将外部存储器中所述目标地址对应的数据存储至所述cache高速存储模块中的所述空闲存储空间,并将所述数据反馈至应用模块;
当所述数据读写请求为数据写请求,若所述目标数据不在所述cache存储器中,将无用数据对应的存储空间作为空闲存储空间;其中,所述无用数据为根据次数计数表确定的老化数据或读写次数少的数据;
将所述数据写请求对应的待写入数据存储至所述cache高速存储模块中的所述空闲存储空间,并将外部存储器中所述目标地址对应的数据使能取反后写入所述空闲存储空间。
2.一种FPGA数据读写装置,其特征在于,包括:
请求接收单元,用于当接收到FPGA发送的数据读写请求后,确定所述数据读写请求对应的目标地址;
Cache判断单元,用于根据cache高速存储模块的相关表中记录的地址信息判断所述目标地址对应的目标数据是否在cache存储器中;若是,触发Cache调用单元;
所述根据cache高速存储模块的相关表中记录的地址信息判断所述目标地址对应的目标数据是否在cache存储器中,包括:
将所述目标地址按区、组、块、突发进行地址拆分;
根据拆分后的地址查询相关表中是否存在对应的cache地址;
所述根据拆分后的地址查询相关表中是否存在对应的cache地址,包括:
根据预设地址映射规则对所述拆分后的地址进行地址映射,得到映射结果;
判断预设RAM中是否存储有所述映射结果;
若有,判定查询相关表中存在所述拆分后的地址对应的cache地址;
若没有,判定查询相关表中不存在所述拆分后的地址对应的cache地址;
若存在,判定所述目标数据在所述cache存储器中;
若不存在,判定所述目标数据不在所述cache存储器中;
所述Cache调用单元,用于调用所述cache存储器中的数据进行请求响应;
所述装置还用于:判断是否存在所述数据读写请求之前未响应的数据读写请求;若存在,对接收到的多路数据读写请求进行优先级仲裁,得到当前待处理的数据读写请求;则相应地,确定所述数据读写请求对应的目标地址,包括:确定所述待处理的数据读写请求对应的目标地址;当所述数据读写请求为数据读请求,若所述目标数据不在所述cache存储器中,将无用数据对应的存储空间作为空闲存储空间;其中,所述无用数据为根据次数计数表确定的老化数据或读写次数少的数据;判断所述无用数据对应的回写标志位是否有效;若有效,将所述cache高速存储模块中的无用数据回写至外部存储器,执行所述将无用数据对应的存储空间作为所述空闲存储空间的步骤;若无效,执行所述将无用数据对应的存储空间作为所述空闲存储空间的步骤;将外部存储器中所述目标地址对应的数据存储至所述cache高速存储模块中的所述空闲存储空间,并将所述数据反馈至应用模块;当所述数据读写请求为数据写请求,若所述目标数据不在所述cache存储器中,将无用数据对应的存储空间作为空闲存储空间;其中,所述无用数据为根据次数计数表确定的老化数据或读写次数少的数据;将所述数据写请求对应的待写入数据存储至所述cache高速存储模块中的所述空闲存储空间,并将外部存储器中所述目标地址对应的数据使能取反后写入所述空闲存储空间。
3.一种FPGA数据读写设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1所述FPGA数据读写方法的步骤。
4.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1所述FPGA数据读写方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011444718.1A CN112506823B (zh) | 2020-12-11 | 2020-12-11 | 一种fpga数据读写方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011444718.1A CN112506823B (zh) | 2020-12-11 | 2020-12-11 | 一种fpga数据读写方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112506823A CN112506823A (zh) | 2021-03-16 |
CN112506823B true CN112506823B (zh) | 2023-09-29 |
Family
ID=74971155
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011444718.1A Active CN112506823B (zh) | 2020-12-11 | 2020-12-11 | 一种fpga数据读写方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112506823B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157629A (zh) * | 2021-04-20 | 2021-07-23 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN114201120B (zh) * | 2022-02-18 | 2022-05-10 | 苏州浪潮智能科技有限公司 | 一种数据读写方法、装置及相关设备 |
CN117291127B (zh) * | 2022-06-16 | 2024-07-26 | 格兰菲智能科技股份有限公司 | 先写后读的检测控制方法及其装置 |
CN116049033B (zh) * | 2023-03-31 | 2023-07-28 | 沐曦集成电路(上海)有限公司 | 一种高速缓冲存储器Cache读写方法、系统、介质及设备 |
CN117478626B (zh) * | 2023-12-27 | 2024-04-05 | 天津光电聚能通信股份有限公司 | 基于组相连缓存的快速匹配查找系统、方法、设备及介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101901278A (zh) * | 2009-12-18 | 2010-12-01 | 中国科学院西安光学精密机械研究所 | 一种高速数据采集卡及数据采集方法 |
CN102521175A (zh) * | 2011-12-20 | 2012-06-27 | 山东大学 | 一种sdram控制器及其工作方法 |
CN102567944A (zh) * | 2012-03-09 | 2012-07-11 | 中国人民解放军信息工程大学 | 基于fpga的ct图像重建硬件加速方法 |
CN103513958A (zh) * | 2012-06-27 | 2014-01-15 | 上海芯豪微电子有限公司 | 高性能指令缓存系统和方法 |
CN103593315A (zh) * | 2013-11-20 | 2014-02-19 | 中国船舶重工集团公司第七二四研究所 | 一种基于fpga的直接多块硬盘高速并行读写方法 |
CN105138469A (zh) * | 2015-08-28 | 2015-12-09 | 北京腾凌科技有限公司 | 一种数据读写方法以及主板 |
WO2017198070A1 (zh) * | 2016-05-16 | 2017-11-23 | 深圳市中兴微电子技术有限公司 | 一种多通道数据存储器及其存取方法及装置、存储介质 |
CN109814811A (zh) * | 2019-01-30 | 2019-05-28 | 哈尔滨工业大学 | 一种减小NVMe SSD响应延迟影响高速数据存储设备写入速度的方法 |
CN111831691A (zh) * | 2019-05-29 | 2020-10-27 | 北京嘀嘀无限科技发展有限公司 | 一种数据读写方法及装置、电子设备、存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8131659B2 (en) * | 2008-09-25 | 2012-03-06 | Microsoft Corporation | Field-programmable gate array based accelerator system |
US20170286301A1 (en) * | 2016-04-01 | 2017-10-05 | Intel Corporation | Method, system, and apparatus for a coherency task list to minimize cache snooping between cpu and fpga |
-
2020
- 2020-12-11 CN CN202011444718.1A patent/CN112506823B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101901278A (zh) * | 2009-12-18 | 2010-12-01 | 中国科学院西安光学精密机械研究所 | 一种高速数据采集卡及数据采集方法 |
CN102521175A (zh) * | 2011-12-20 | 2012-06-27 | 山东大学 | 一种sdram控制器及其工作方法 |
CN102567944A (zh) * | 2012-03-09 | 2012-07-11 | 中国人民解放军信息工程大学 | 基于fpga的ct图像重建硬件加速方法 |
CN103513958A (zh) * | 2012-06-27 | 2014-01-15 | 上海芯豪微电子有限公司 | 高性能指令缓存系统和方法 |
CN103593315A (zh) * | 2013-11-20 | 2014-02-19 | 中国船舶重工集团公司第七二四研究所 | 一种基于fpga的直接多块硬盘高速并行读写方法 |
CN105138469A (zh) * | 2015-08-28 | 2015-12-09 | 北京腾凌科技有限公司 | 一种数据读写方法以及主板 |
WO2017198070A1 (zh) * | 2016-05-16 | 2017-11-23 | 深圳市中兴微电子技术有限公司 | 一种多通道数据存储器及其存取方法及装置、存储介质 |
CN109814811A (zh) * | 2019-01-30 | 2019-05-28 | 哈尔滨工业大学 | 一种减小NVMe SSD响应延迟影响高速数据存储设备写入速度的方法 |
CN111831691A (zh) * | 2019-05-29 | 2020-10-27 | 北京嘀嘀无限科技发展有限公司 | 一种数据读写方法及装置、电子设备、存储介质 |
Non-Patent Citations (5)
Title |
---|
一种基于FPGA实现的高速缓存设计;景艳等;《微机发展》;20050910(第09期);全文 * |
兰德尔E.布萊恩特、大卫R.奥哈拉.存储器层次结构;高速缓存存储器.《深入理解计算机系统(原书第3版)》.2016,420-440. * |
兰德尔E.布萊恩特、大卫R.奥哈拉伦著.《深入理解计算机系统(原书第三版)》.机械工业出版社,2016,P434、437、438. * |
可重构处理器中Mini-Cache的设计;邬保有等;《微型电脑应用》;20050520(第05期);全文 * |
基于FPGA实现的带有减小DRAM写延迟的Cache的DDR2控制器的设计;王玥;《中国优秀硕士学位论文全文数据库(电子期刊)》;20100315(第03期);摘要第1页,正文第28-41页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112506823A (zh) | 2021-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112506823B (zh) | 一种fpga数据读写方法、装置、设备及可读存储介质 | |
US11237728B2 (en) | Method for accessing extended memory, device, and system | |
US11294675B2 (en) | Writing prefetched data into intra-core caches of cores identified by prefetching instructions | |
US20160085585A1 (en) | Memory System, Method for Processing Memory Access Request and Computer System | |
US10209890B2 (en) | Near memory accelerator | |
CN108920387B (zh) | 降低读延迟的方法、装置、计算机设备及存储介质 | |
CN109388590B (zh) | 提升多通道dma访问性能的动态缓存块管理方法和装置 | |
US20150113230A1 (en) | Directory storage method and query method, and node controller | |
CN105095116A (zh) | 缓存替换的方法、缓存控制器和处理器 | |
CN108139994B (zh) | 内存访问方法及内存控制器 | |
CN112632069B (zh) | 哈希表数据存储管理方法、装置、介质和电子设备 | |
CN110727403B (zh) | 元数据管理方法及装置 | |
CN114816263B (zh) | 存储访问方法及智能处理装置 | |
US12066952B2 (en) | Data processing method and system, device, and medium | |
CN114185818A (zh) | 基于扩展页表的gpu访存自适应优化方法及装置 | |
CN110737607A (zh) | 管理hmb内存的方法、装置、计算机设备及存储介质 | |
WO2017031637A1 (zh) | 一种内存访问方法、装置和系统 | |
JP2007041813A (ja) | 情報処理システムおよび情報処理方法 | |
CN113590507B (zh) | 一种分布式存储系统及其缓存层、数据访问方法、设备 | |
WO2022160321A1 (zh) | 一种访问内存的方法和装置 | |
US7103705B2 (en) | Computing system, and method for enabling a digital signal processor to access parameter tables through a central processing unit | |
CN111694777A (zh) | 基于PCIe接口的DMA传输方法 | |
CN112988074B (zh) | 一种存储系统管理软件适配方法及装置 | |
CN118363914B (zh) | 数据处理方法、固态硬盘设备及主机 | |
CN118132501A (zh) | 访问控制方法及电子设备 |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 310000 Room 403, floor 4, No. 3766, South Ring Road, Binjiang District, Hangzhou City, Zhejiang Province Applicant after: Shengli Anyuan Technology (Hangzhou) Co.,Ltd. Address before: Room 403, 4th floor, 3766 Nanhuan Road, Binjiang District, Hangzhou City, Zhejiang Province 310051 Applicant before: SHENGLI FINACIAL SOFTWARE DEVELOPMENT (HANGZHOU) CO.,LTD. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |