CN110232029B - 一种基于索引的fpga中ddr4包缓存的实现方法 - Google Patents

一种基于索引的fpga中ddr4包缓存的实现方法 Download PDF

Info

Publication number
CN110232029B
CN110232029B CN201910530093.1A CN201910530093A CN110232029B CN 110232029 B CN110232029 B CN 110232029B CN 201910530093 A CN201910530093 A CN 201910530093A CN 110232029 B CN110232029 B CN 110232029B
Authority
CN
China
Prior art keywords
packet
index
ddr4
data packet
data
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
Application number
CN201910530093.1A
Other languages
English (en)
Other versions
CN110232029A (zh
Inventor
杨庸
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Boyu Lihua Technology Co ltd
Original Assignee
Chengdu Boyu Lihua Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chengdu Boyu Lihua Technology Co ltd filed Critical Chengdu Boyu Lihua Technology Co ltd
Priority to CN201910530093.1A priority Critical patent/CN110232029B/zh
Publication of CN110232029A publication Critical patent/CN110232029A/zh
Application granted granted Critical
Publication of CN110232029B publication Critical patent/CN110232029B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems

Abstract

本发明公开了一种基于索引的FPGA中DDR4包缓存的实现方法,该方法包括数据转换及切片处理,将切片数据写入DDR4,数据包索引管理,从DDR4中读取数据包,数据包读指令次数控制,数据转换及切片重组。本发明通过对用户数据包进行切片处理,构建数据包索引并存放进FPGA的片内索引缓存中,实现对DDR4读写操作进行管理;并且根据DDR4返回的数据帧进行切片重组管理,从而得到完整的数据包,能够大大减小FPGA内部缓存资源消耗,提高数据包缓存效率。

Description

一种基于索引的FPGA中DDR4包缓存的实现方法
技术领域
本发明属于数据包缓存技术领域,具体涉及一种基于索引的FPGA中DDR4包缓存的实现方法。
背景技术
数据包缓存是FPGA(Field-Programmable Gate Array)设计中的常见设计,而DDR也是电子系统中的常用器件。很多应用常常都需要在DDR中缓存大量的数据包。常见的设计方法是,将数据包的信息,包括长度,校验,各种随包传输的带外指示信号等,全部和数据包正文一起放进缓存,优点是实现方案相对简易,缺点是只能顺序读取缓存中的报文,而且因为数据包的长度信息用户事先未知,只能从缓存中和数据包一同获取,所以对于超短报文,由于DDR回读数据的等待时间很长,常常出现当用户获取到正确包长的时候,DDR的读操作其实已经远远超出正确的地址范围等问题。
DDR4器件的特性中,很重要的一点是,读操作时,ddr颗粒接受到读指令之后,在一个约定范围的不确定时间延迟之后,才能将该指令对应的读数据回给用户。
DDR4由于芯片颗粒的访问带宽很大,比如我们常见的DDR4-2400,其数据管脚的双沿速率为2400MHz,但是FPGA内部的电路不能运行这么快的速度,所以在FPGA内部的电路中,常常采用降低时钟频率、提升数据位宽来保持同样的操作带宽。由此,用户访问DDR4的数据位宽常常都远大于器件IO的数据位宽。
数据包往往长度不一,如果遇到很大的数据包,全部先缓存下来再整包存进DDR4并不合理,会带来FPGA内部缓存资源的大幅消耗。
发明内容
本发明的主要目的在于提供一种基于索引的FPGA中DDR4包缓存的实现方法,旨在解决既有方法存在的以上部分技术问题。
为实现上述目的,本发明提供一种基于索引的FPGA中DDR4包缓存的实现方法,包括以下步骤:
S1、输入用户数据包,将用户数据进行位宽转换、时钟域转换和切片处理,建立数据包切片索引,并将切片数据及索引缓存到FPGA片内FIFO;
S2、将切片数据写入DDR4,并建立数据包索引,将建立的数据包索引存放进FPGA的片内索引缓存;
S3、对数据包的索引缓存进行管理;
S4、当需要读取数据包时,在FPGA的片内索引缓存中获取数据包的索引;
S5、从DDR4中读取数据包,根据数据包长度对数据包的读指令次数进行控制;
S6、将DDR4返回的数据帧进行位宽转换、时钟域转换和切片重组处理,得到完整的数据包。
优选地,所述步骤S1中,建立的数据包切片索引具体包括:
是否切片长度,是否包头,是否包尾,冗余带外信息。
优选地,所述步骤S2中,将切片数据写入DDR4,还包括:
判断切片数据是否是包头;若是包头,则将包头在DDR4中的存储地址进行记录;
判断切片数据是否是包尾;若是包尾,则将数据包长度和校验信息进行记录。
优选地,所述步骤S2中,建立数据包索引具体为:
当包尾的最后一个字节存入DDR4之后,将包头在DDR4缓存中的地址、数据包有效长度、校验信息、冗余带外信息形成一个数据包索引。
优选地,所述步骤S4中,还包括:
预先将读数据包长度缓存到FPGA片内FIFO。
优选地,所述步骤S5中,从DDR4中读取数据包,根据数据包长度对数据包的读指令次数进行控制,具体为:
从DDR4中读取数据包时,每返回一个读数据,则重新计算该数据包的长度;当计算的数据包长度达到数据包索引中的数据包有效长度时,则该数据包完整地从DDR4中读出。
本发明的有益效果是:本发明通过对用户数据包进行切片处理,构建数据包索引并存放进FPGA的片内索引缓存中,实现对DDR4读写操作进行管理;并且根据DDR4返回的数据帧进行切片重组管理,从而得到完整的数据包,能够大大减小FPGA内部缓存资源消耗,提高数据包缓存效率。
附图说明
图1是本发明的基于索引的FPGA中DDR4包缓存的实现方法流程示意图;
图2是本发明中数据包的索引格式定义示意图;
图3是本发明的数据包缓存架构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如图1所示,是本发明的基于索引的FPGA中DDR4包缓存的实现方法流程示意图;一种基于索引的FPGA中DDR4包缓存的实现方法,包括以下步骤:
S1、输入用户数据包,将用户数据进行位宽转换、时钟域转换和切片处理,建立数据包切片索引,并将切片数据及索引缓存到FPGA片内FIFO;
本发明首选将输入的用户数据包进行位宽转换、时钟域转换处理,这里位宽转换、时钟域转换采用本领域的常用处理方式/方法即可。
本发明再将转后处理后的数据包按照预定的长度进行切片处理,从而将数据包划分为多个设定长度的切片数据,同时建立数据包切片索引,实现对切片索引进行管理;建立的数据包切片索引具体包括:是否切片长度,是否包头,是否包尾,冗余带外信息等。
本发明对数据包进行切片处理后,将切片数据及索引缓存到FPGA片内FIFO,即将数据包切片数据缓存到FPGA片内RAM存储中,将数据包切片索引缓存到FPGA片内FIFO存储中。
S2、将切片数据写入DDR4,并建立数据包索引,将建立的数据包索引存放进FPGA的片内索引缓存;
本发明将数据包切片数据写入到DDR4中时,需要根据数据包切片索引对数据包切片数据进行判断,具体为:
判断数据包切片数据是否是包头;若是包头,则将该数据包切片数据即包头在DDR4缓存中的存储地址进行记录;
判断数据包切片数据是否是包尾;若是包尾,则将该数据包的数据包有效长度和校验信息进行记录。
当包尾的最后一个字节存入DDR4之后,将数据包的包头在DDR4缓存中的存储地址、数据包有效长度、校验信息、冗余带外信息形成一个数据包索引,并将数据包索引存放进FPGA的片内索引缓存中。
如图2所示,为本发明中数据包的索引格式定义示意图。数据包索引包括数据包存储地址、数据包有效长度、校验信息、冗余带外信息,其中冗余带外信息可以包括时间戳、目的地信息、优先级、数据包类型等,根据上述信息可以充分表征DDR4缓存空间中数据包的全部特征。
S3、对数据包的索引缓存进行管理;
本发明中索引缓存的深度和DDR空间大小以及平均包长有关,其可以是FIFO,也可以是其他检索方式能够访问的存储空间。FPGA片内的一个索引代表片外DDR4缓存空间中的一个完整报文,根据片外DDR4缓存空间的大小、报文存放方式直接决定FPGA片内索引存放和管理方式,即用户可以根据不同的应用选择不同的管理报文的方式,同样地,需要在片内采用同样的方式管理索引,形成一一对应的关系。
S4、当需要读取数据包时,在FPGA的片内索引缓存中获取数据包的索引;
当用户需要读取任意数据包时,只需要在本发明的FPGA的片内索引缓存中获取正确的数据包的索引,即可得到该数据包在DDR4缓存中的全部信息,包括数据包长度等。
由于DDR4返回读操作的数据有延迟,因此本发明需要预先将读数据包的长度缓存到FPGA片内特定FIFO,进行顺序管理。
S5、从DDR4中读取数据包,根据数据包长度对数据包的读指令次数进行控制;
本发明从DDR4缓存中读取数据包时,由于已经预先得到数据包的有效长度,因此可以根据数据包长度对数据包的读指令次数进行控制,具体为:
从DDR4中读取数据包时,每返回一个读数据,则重新计算该数据包的长度;当计算的数据包长度达到数据包索引中的数据包有效长度时,则表示该数据包完整地从DDR4中读出。
S6、将DDR4返回的数据帧进行位宽转换、时钟域转换和切片重组处理,得到完整的数据包。
本发明将DDR4返回的数据帧进行分片重组管理,收到一个完整的分片就可以将其转发给用户。如果是包头包尾,产生正确的指示信号,如果校验结果和索引中的校验预期不一致,产生错包标志。
如图3所示,为本发明的数据包缓存架构示意图。其中,
数据包切片索引和数据包切片RAM为前导处理,与基于片外DDR4缓存的索引管理类似,只是索引FIFO缓存的不是一个完整的包的索引,而是一个包切成了若干切片后的一个一个切片的索引;而且这个切片也不是放在片外DDR4中,而是在FPGA片内。这是因为DDR4的处理可能很繁忙,用户同时在读写它,如果入口一侧全部是长包,则可能导致入口一侧把DDR的带宽占满,导致其他用户没法共享DDR带宽,从而其他用户或者本用户的读侧都需要缓存较多数据,从而增大了FPGA片内资源的消耗。本发明进行数据包切片的核心是增大DDR4带宽利用率,让多用户都不会被饿死,而且减小每个用户占用的片内缓存。
数据包索引缓存是针对一个完整报文的索引,其主要取决于数据包在片外DDR4缓存的管理方式,根据不同的用户需求实现不同的应用。
DDR4命令仲裁器,是因为DDR4的控制器接口只能同一时间给一个用户用,如果存在多个用户,比如图中有两个用户,一个用户要写DDR,一个用户要读DDR,就必须按照一定的规则,时间片轮转来占用DDR4的操作带宽。这也是数据包要切成分片来写进DDR4的一个原因。而DDR4命令仲裁器基于什么规则来判断把带宽分配给哪个用户,不同的应用有不同的处理,如轮询、严格优先级等。
数据包读操作长度FIFO存在的意义是:DDR4相应用户的读操作会有一个过程,原因可能是DDR4仲裁器正在相应其他用户,DDR4控制器里面有缓存指令的fifo造成的延迟,亦或者是DDR4颗粒正在忙着处理自身的问题来不及相应读指令,比如正在刷新等,但是要想让读侧的操作获得最大带宽,就需要流水处理,用户发起读操作不能等待。但是读指令被接受以后,又不能马上收到读回来的数据,而且可能需要连续发几个读指令出去,由此需要把这些读指令的操作长度记录下来,以区分DDR4控制器返回的数据究竟是哪个读指令的。
重组切片索引FIFO和数据RAM,与前端的切片索引+数据RAM对称,前端如何进行切片则后端进行对应的复原。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。

Claims (6)

1.一种基于索引的FPGA中DDR4的包缓存的实现方法,其特征在于,包括以下步骤:
S1、输入用户数据包,将用户数据进行位宽转换、时钟域转换和切片处理,建立数据包切片索引,并将切片数据及索引缓存到FPGA片内FIFO;
S2、将切片数据写入DDR4,并建立数据包索引,将建立的数据包索引存放进FPGA的片内索引缓存;
S3、对数据包的索引缓存进行管理;
S4、当需要读取数据包时,在FPGA的片内索引缓存中获取数据包索引;
S5、从DDR4中读取数据包,根据数据包长度对数据包的读指令次数进行控制;
S6、将DDR4返回的数据包进行位宽转换、时钟域转换和切片重组处理,得到完整的数据包。
2.如权利要求1所述的基于索引的FPGA中DDR4的包缓存的实现方法,其特征在于,所述步骤S1中,建立的数据包切片索引具体包括:
是否切片长度,是否包头,是否包尾,冗余带外信息。
3.如权利要求2所述的基于索引的FPGA中DDR4的包缓存的实现方法,其特征在于,所述步骤S2中,将切片数据写入DDR4,还包括:
判断切片数据是否是包头;若是包头,则将包头在DDR4中的存储地址进行记录;
判断切片数据是否是包尾;若是包尾,则将数据包有效长度和校验信息进行记录。
4.如权利要求3所述的基于索引的FPGA中DDR4的包缓存的实现方法,其特征在于,所述步骤S2中,建立数据包索引具体为:
当包尾的最后一个字节存入DDR4之后,将包头在DDR4缓存中的地址、数据包有效长度、校验信息、冗余带外信息形成一个数据包索引。
5.如权利要求4所述的基于索引的FPGA中DDR4的包缓存的实现方法,其特征在于,所述步骤S4中,还包括:
预先将读数据包有效长度缓存到FPGA片内FIFO。
6.如权利要求5所述的基于索引的FPGA中DDR4的包缓存的实现方法,其特征在于,所述步骤S5中,从DDR4中读取数据包,根据数据包长度对数据包的读指令次数进行控制,具体为:
从DDR4中读取数据包时,每返回一个读数据,则重新计算该数据包长度;当计算的数据包长度达到数据包索引中的数据包有效长度时,则该数据包完整地从DDR4中读出。
CN201910530093.1A 2019-06-19 2019-06-19 一种基于索引的fpga中ddr4包缓存的实现方法 Active CN110232029B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910530093.1A CN110232029B (zh) 2019-06-19 2019-06-19 一种基于索引的fpga中ddr4包缓存的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910530093.1A CN110232029B (zh) 2019-06-19 2019-06-19 一种基于索引的fpga中ddr4包缓存的实现方法

Publications (2)

Publication Number Publication Date
CN110232029A CN110232029A (zh) 2019-09-13
CN110232029B true CN110232029B (zh) 2021-06-29

Family

ID=67856193

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910530093.1A Active CN110232029B (zh) 2019-06-19 2019-06-19 一种基于索引的fpga中ddr4包缓存的实现方法

Country Status (1)

Country Link
CN (1) CN110232029B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110708513B (zh) * 2019-10-18 2021-06-01 中国科学院长春光学精密机械与物理研究所 一种8k视频多核异构处理装置
CN111782578B (zh) * 2020-05-29 2022-07-12 西安电子科技大学 一种缓存控制方法、系统、存储介质、计算机设备及应用
CN114036085B (zh) * 2021-09-24 2024-04-12 北京无线电测量研究所 基于ddr4的多任务读写调度方法、计算机设备及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0314197D0 (en) * 2002-06-28 2003-07-23 Lattice Semiconductor Corp Converting bits to vectors in a programmable logic device
US6799200B1 (en) * 2000-07-18 2004-09-28 International Business Machines Corporaiton Mechanisms for efficient message passing with copy avoidance in a distributed system
CN101137027A (zh) * 2006-11-23 2008-03-05 中兴通讯股份有限公司 一种媒体分片存储的方法
US7539750B1 (en) * 2004-03-30 2009-05-26 Extreme Networks, Inc. System and method for packet processor status monitoring
CN104281539A (zh) * 2013-07-10 2015-01-14 北京旋极信息技术股份有限公司 一种缓存管理方法及装置
CN105809723A (zh) * 2016-03-09 2016-07-27 哈尔滨工业大学深圳研究生院 Cbct重建方法及系统
CN106372008A (zh) * 2015-07-23 2017-02-01 福州瑞芯微电子股份有限公司 一种数据缓存方法及装置
CN108632169A (zh) * 2017-03-21 2018-10-09 中兴通讯股份有限公司 一种分片的服务质量保证方法及现场可编程逻辑门阵列

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9875182B1 (en) * 2015-05-26 2018-01-23 EMC IP Holding Company LLC Lock free container packing
US11687345B2 (en) * 2016-04-28 2023-06-27 Microsoft Technology Licensing, Llc Out-of-order block-based processors and instruction schedulers using ready state data indexed by instruction position identifiers

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6799200B1 (en) * 2000-07-18 2004-09-28 International Business Machines Corporaiton Mechanisms for efficient message passing with copy avoidance in a distributed system
GB0314197D0 (en) * 2002-06-28 2003-07-23 Lattice Semiconductor Corp Converting bits to vectors in a programmable logic device
US7539750B1 (en) * 2004-03-30 2009-05-26 Extreme Networks, Inc. System and method for packet processor status monitoring
CN101137027A (zh) * 2006-11-23 2008-03-05 中兴通讯股份有限公司 一种媒体分片存储的方法
CN104281539A (zh) * 2013-07-10 2015-01-14 北京旋极信息技术股份有限公司 一种缓存管理方法及装置
CN106372008A (zh) * 2015-07-23 2017-02-01 福州瑞芯微电子股份有限公司 一种数据缓存方法及装置
CN105809723A (zh) * 2016-03-09 2016-07-27 哈尔滨工业大学深圳研究生院 Cbct重建方法及系统
CN108632169A (zh) * 2017-03-21 2018-10-09 中兴通讯股份有限公司 一种分片的服务质量保证方法及现场可编程逻辑门阵列

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CBCT三维图像多切片重建的研究;孙贝洋;《中国优秀硕士学位论文全文数据库(信息科技辑)》;20160315;全文 *

Also Published As

Publication number Publication date
CN110232029A (zh) 2019-09-13

Similar Documents

Publication Publication Date Title
CN110232029B (zh) 一种基于索引的fpga中ddr4包缓存的实现方法
US8601181B2 (en) System and method for read data buffering wherein an arbitration policy determines whether internal or external buffers are given preference
CN112765054A (zh) 一种基于fpga的高速数据采集系统及方法
US20220206686A1 (en) Memory Access Technology and Computer System
US10990322B2 (en) Memory buffer chip, memory system and method of controlling the memory buffer chip
CN101740102B (zh) 一种多通道闪存芯片阵列结构及其写入和读出方法
US11425057B2 (en) Packet processing
CN101515898B (zh) 芯片的统计数据的管理方法和装置
CN107783727B (zh) 一种内存设备的访问方法、装置和系统
CN109814811B (zh) 一种减小NVMe SSD响应延迟影响高速数据存储设备写入速度的方法
US20090002864A1 (en) Memory Controller for Packet Applications
CN109359729B (zh) 一种在fpga上实现缓存数据的系统及方法
CN103581055A (zh) 报文的保序方法、流量调度芯片及分布式存储系统
CN116225990A (zh) 基于fpga的多通道ddr读写仲裁装置
CN115905086A (zh) 基于axi同步读写单口sram的控制方法及控制器
CN111722827B (zh) 一种高效ddr访问方法
US9122411B2 (en) Signal order-preserving method and apparatus
CN105577985A (zh) 一种数字图像处理系统
WO2023186115A1 (zh) 表项读取方法、装置、网络设备及存储介质
CN105138467B (zh) 数据存取装置、方法及磁共振设备
CN109285580B (zh) 数据预处理装置、方法及异步双端随机存取存储器系统
CN114153758B (zh) 具有帧计数功能的跨时钟域数据处理方法
CN110705195A (zh) 一种基于fpga的跨时钟域深度自行配置fifo系统
CN114567614B (zh) 基于fpga实现arp协议处理的方法及装置
WO2020200111A1 (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
GR01 Patent grant
GR01 Patent grant