掌桥专利:专业的专利平台
掌桥专利
首页

一种FPGA内的DDR4 SDRAM访问效率优化方法

文献发布时间:2023-06-19 11:35:49


一种FPGA内的DDR4 SDRAM访问效率优化方法

技术领域

本发明涉及DDR4 SDRAM访问技术领域,具体涉及一种FPGA内的DDR4 SDRAM访问效率优化方法。

背景技术

随着半导体技术的不断发展,FPGA芯片已逐渐在人工智能、大数据分析、云计算、网络通信、图像处理、机器人、芯片验证等诸多领域得到广泛的应用,甚至在少数领域正在取代CPU和GPU或是DSP的位置成为主导芯片。DDR4 SDRAM作为当前电子系统架构中使用最为广泛的RAM型动态随机读取存储器,在FPGA系统中因其存储容量大、访问速度快也被广泛使用。而DDR4 SDRAM芯片访问控制除了上电后要对DDR4 SDRAM芯片IO参数进行训练和对芯片控制寄存器进行配置等初始化工作外,还要在访问操作过程中进行预充电和刷新等工作,正常访问DDR4 SDRAM的读写动作也需要经过地址选择和命令输入等操作,因此FPGA厂商往往都会在其提供的EDA工具中提供DDR4SDRAM控制机IP核(例如:Xilinx的MIG IP),用户只需按照EDA厂商要求的接口时序提供DDR4 SDRAM访问地址、命令和数据即可完成对DDR4 SDRAM的数据访问操作。

如图1所示,DDR4 SDRAM芯片内部的存储结构通常分为若干个Bank组,每个Bank组内有若干个Bank(通常有4-8个bank),每个Bank内有若干个行存储空间,每行有若干列存储空间,因此DDR4SDRAM的存储地址由BG(Bank组)地址、Bank地址、Row(行)地址、Column(列)地址共同组成。在FPGA系统设计中,如果采用DDR4 SDRAM作为数据存储器,通常对DDR4SDRAM的访问效率是很重要的一个系统指标,其直接影响存储器访问带宽,甚至很多时候对系统的可行性和稳定性其决定性作用,其中影响最大的两个因素是BL(突发长度)和访问地址行(Row)切换。突发长度对访问效率的影响主要因为访问地址和命令的输入需要占用总线时间,BL(突发长度)越长,其占用总线时间越短,访问效率越高,当前主流的DDR4 SDRAM突发长度(BL)通常是4或者8,FPGA设计中通常默认BL值为8,其对访问效率的影响已经不是很大。访问地址行(Row)切换影响访问效率主要原因是DDR4 SDRAM的每个Bank内行地址具有独占性,切换访问行(Row)地址芯片内部需要将原来的有效行(已激活的行)关闭,并将该行数据进行充电刷新,然后重新打开(激活)新的一行(Row),因此,在同一Bank内切换访问行(Row)操作将大大影响DDR4 SDRAM的读写访问效率。此外每个Bank都可以激活一行,因此不同Bank间可以同时激活多行。

然而很多场合的用户设计需要对DDR4 SDRAM进行随机性访问,其访问地址具有随机性特点,其必然会频繁切换访问行(Row),从而导致大大降低DDR4 SDRAM的访问效率,于此同时,设计本身又要求DDR4 SDRAM能够有一个较高的访问效率。因此要达到用户高效率的DDR4 SDRAM随机性访问,必须提供一种方案来解决此类问题。

发明内容

鉴于背景技术的不足,本发明是提供了一种FPGA内的DDR4 SDRAM访问效率优化方法,提高FPGA芯片内的DDR4 SDRAM在随机访问时的效率。

为解决以上技术问题,本发明提供了如下技术方案:一种FPGA内的DDR4 SDRAM访问效率优化方法,包括以下步骤:

S1:将用户的DDR4 SDRAM的访问命令先输入到预处理模块中;

S2:预处理模块对输入的访问命令按照排序规则进行排序,形成新的命令队列,然后将新的命令队列依次发送到DDR4 SDRAM。

可选地,在某种实施方式中,预处理模块包括命令缓存单元、命令排序单元和命令发送单元,命令缓存单元用于缓冲输入的DDR4SDRAM的访问命令,命令排序单元从命令缓存单元读取规定数量的访问命令,然后按照排序规则对读取的访问命令进行排序,形成新的命令队列,命令发送单元将新的命令队列依次发送到DDR4 SDRAM。

可选地,在某种实施方式中,排序单元按照排序规则对读取的访问命令进行排序具体为命令排序单元将Row地址相同的访问命令归为同一组,命令发送单元向DDR4 SDRAM发送访问命令时先选择某一组访问命令进行发送,当该组访问命令发送完成后再选择另一组访问命令进行发送,直至完成所有组的访问命令的发送。

可选地,在某种实施方式中,命令发送单元先将Bank地址相同的访问命令先归为同一区,然后将同一区的Row地址相同的访问命令归为同一组。

可选地,在某种实施方式中,命令发送单元按照Bank地址依次增加的顺序将每个区的访问命令发送给DDR4 SDRAM,命令发送单元将每个区的访问命令发送给DDR4 SDRAM时,按照Row地址依次增加的顺序将每一组访问命令发送给DDR4 SDRAM。

可选地,在某种实施方式中,命令发送单元将每一组访问命令发送给DDR4 SDRAM时,按照Column地址依次增加的顺序将每一个访问命令发送给DDR4 SDRAM。

可选地,在某种实施方式中,命令发送单元在将当前区的访问命令发送给DDR4SDRAM时,还向DDR4 SDARM发送预存命令中下一个区的Row地址最小的存储区的行打开命令,以便当命令发送单元发送完当前区的访问命令时能直接访问下一个区的Row地址最小的存储区。

可选地,在某种实施方式中,命令发送单元在发送同一个区的访问命令时,如果发送完一组访问命令而下一组访问命令需要更换Row行,则优先查询命令缓存单元内的缓存指令中的其他Bank的访问指令是否需要更换Row行,如果其他Bank内的访问指令不需要更换Row行,则优先发送。

可选地,在某种实施方式中,预处理模块内还设有数据顺序恢复单元,命令发送单元在向DDR4 SDRAM发送完所有访问命令后,数据顺序恢复单元对从DDR4 SDRAM中的每个访问地址获取的访问数据按照原访问命令的访问地址在缓冲单元中的缓冲顺序进行顺序恢复后传输给访问单元。

可选地,在某种实施方式中,预处理模块在访问顺序调整时优先保证相同地址的读写顺序不被改变,从而保证所有访问数据符合访问者原有预期。

本发明与现有技术相比所具有的有益效果是:通过在FPGA系统中添加预处理模块对用户的访问命令进行排序,将同一bank内Row地址相同的访问命令归为同一组,然后预处理模块再一组一组地向DDR4 SDRAM发送访问命令,这样DDR4 SDRAM在接收Row地址相同的命令组的访问命令时只需一个激活行动作即可,节省因地址随机性带来的不断切换Row地址而引起的不断打开和关闭行操作。于此同时,通过预判断下一需要切换Row地址的Bank,在命令访问的空隙间提前发送该Bank Row地址切换命令,进一步降低Row地址切换对访问效率的影响,进而提高FPGA系统中的DDR4 SDRAM的访问效率。

附图说明

本发明有如下附图:

图1为DDR4 SDRAM的存储区间结果示意图;

图2为FPGA系统中访问命令的访问地址的排列示意图;

图3为采用本发明的FPGA系统访问DDR4 SDRAM的结构示意图;

图4为预处理模块工作的流程图。

具体实施方式

现在结合附图对本发明作进一步详细的说明。这些附图均为简化的示意图,仅以示意方式说明本发明的基本结构,因此其仅显示与本发明有关的构成。

如图1所示,DDR4 SDRAM芯片内部的存储结构通常分为若干个Bank组,每个Bank组内有若干个Bank(通常有4-8个bank),每个Bank内有若干个行存储空间,每行有若干列存储空间,因此DDR4SDRAM的存储地址由BG(Bank组)地址、Bank地址、Row(行)地址、Column(列)地址共同组成。

用户访问DDR4 SDRAM的存器空间的访问命令的访问地址的排列方式可参照图2,图2中虽然显示了四种排列方式,然而每种排列方式中的地址都有BG(Bank组)地址、Bank地址、Row(行)地址、Column(列)地址,而在对DDR4 SDRAM进行访问时,每切换一个Row地址,DDR4 SDRAM都要重新进行原来访问行存储空间的关闭和新的行存储空间的打开,极大地影响地FFR4 SDRAM地访问效率。

因此,本发明公开了一种FPGA内的DDR4 SDRAM访问效率优化方法,包括以下步骤:

S1:将用户的DDR4 SDRAM的访问命令先输入到预处理模块中;

S2:预处理模块对输入的访问命令按照排序规则进行排序,形成新的命令队列,然后将新的命令队列依次发送到DDR4 SDRAM。

通过预处理模块对用户接口访问输入的访问命令进行排序,减少DDR4 SDRAM在访问过程中的行存储空间的打开和关闭次数,提高DDR4SDRAM的访问效率。

具体地,预处理模块包括命令缓存单元、命令排序单元和命令发送单元,命令缓存单元用于缓冲输入的DDR4 SDRAM的访问命令,命令排序单元从命令缓存单元读取规定数量的访问命令,然后按照排序规则对读取的访问命令进行排序,形成新的命令队列,命令发送单元将新的命令队列依次发送到DDR4 SDRAM。其中令排序单元每次从命令缓存单元读取的访问命令的规定数量可以设置。

命令排序单元在对读取的访问命令进行排序时可参考如下:命令排序单元将Row地址相同的访问命令归为同一组。

然后命令发送单元向DDR4 SDRAM即DDR4控制器IP发送访问命令时先选择某一组访问命令进行发送,当该组访问命令发送完成后再选择另一组访问命令进行发送,直至完成所有组的访问命令的发送。

另外,命令排序单元在对读取的访问命令进行排序时先将Bank地址相同的访问命令先归为同一区,然后将同一区的Row地址相同的访问命令归为同一组。命令发送单元按照Bank地址依次增加的顺序将每个区的访问命令发送给DDR4 SDRAM,命令发送单元将每个区的访问命令发送给DDR4 SDRAM时,按照Row地址依次增加的顺序将每一组访问命令发送给DDR4 SDRAM。

当命令发送单元将每一组访问命令发送给DDR4 SDRAM时,按照Column地址依次增加的顺序将每一个访问命令发送给DDR4 SDRAM。

另外,为了在命令发送单元对每一个Bank的访问命令发送完成后,DDR4 SDRAM能够更快的响应命令发送单元接下来要发送的访问命令,命令发送单元在将当前区的访问命令发送给DDR4 SDRAM时,还向DDR4 SDARM发送预存命令中下一个区的Row地址最小的存储空间的行打开命令,以便当命令发送单元发送完当前区的访问命令时能直接访问下一个区的Row地址最小的存储区。

另外,为了提高访问速率,命令发送单元在发送同一个区的访问命令时,如果发送完一组访问命令而下一组访问命令需要更换Row行,则优先查询命令缓存单元内的缓存指令中的其他Bank的访问指令是否需要更换Row行,如果其他Bank内的访问指令不需要更换Row行,则优先发送。

由于每个用户可能通过用户访问接口连续发送多条访问命令,为了保证用于最后访问的数据的完整性,本发明的预处理模块内还设有数据顺序恢复单元,命令发送单元在向DDR4 SDRAM发送完所有访问命令后,数据顺序恢复单元对从DDR4 SDRAM中的每个访问地址获取的访问数据按照原访问命令的访问地址在缓冲单元中的缓冲顺序进行顺序恢复后传输给访问单元。这样从DDR4 SDRAM每个访问地址获取的所有的访问数据排序和命令缓存单元中的访问命令的缓存排序一样。

假设DDR4 SDRAM有两个Bank Group,每个Bank Group的地址分别是1和2,每个Bank Group有两个Bank,所有Bank Group的bank地址分别是1、2、3和4,每个Bank内有四个行,每个行地址分别是1、2、3和4,每个行内分别有六列,每个列的地址分别是1、2、3、4、5和6,假设命令缓存单元缓存了六条访问命令,每个访问命令的访问地址和该访问地址的存储的数据具体如表一所示:

表一

本发明在实际应用时如下:命令排序单元先从命令缓存单元读取这六条访问命令,然后将Bank地址相同的访问命令先归为同一区,因此上述六条访问命令可以分为三个区,第一个区包括访问命令一、三和六,第二个区包括访问命令二和四,第三个区包括访问命令五,接着在把同一区的Row地址相同的访问命令归为同一组,其中第一个区包括两组访问命令,将这两组命名为第一组和第二组,第一组包括访问命令一和三,第二组包括访问命令六,第二个区包括一组访问命令,将改组命名为第三组,分别包括访问命令二和四,第三个区包括一组访问命令,将改组命名为第四组,包括访问命令5。将六条访问命令按照区号增加顺序即Bank地址增加顺序进行排序,然后在每个区中按照Row地址增加的顺序对每个组进行排序,形成新的命令队列如表二:

表二

命令发送单元将新的命令队列发送给DDR4控制器IP,即依次发送访问命令一、三、六、二、四和五,由于访问命令一和三的Row地址相同、访问命令二和四的Row地址相同,因此DDR4 SDRAM在响应这六条访问指令时可以减少两次行打开和关闭,进而提高DDR4 SDRAM的访问效率。

另外由于新的命令队列对应的存储空间的地址的数据顺序为A、C、F、B、D和E,因此通过数据顺序恢复单元对这些数据按照访问命令一至六在命令缓存空间的顺序进行恢复,使其变为A、B、C、D、E和F,进而确保用户从DDR4 SDRAM中访问的数据的完整性。

另外,预处理模块在访问顺序调整时优先保证相同地址的读写顺序不被改变,从而保证所有访问数据符合访问者原有预期。

综上,本发明通过在FPGA系统中添加预处理模块对用户的访问命令进行排序,将Row地址相同的访问命令归为同一组,然后预处理模块再一组一组地向DDR4 SDRAM发送访问命令,这样DDR4 SDRAM再接收同一组的访问命令时只需激活一个行即可,不用因为访问命令的Bank地址不同而重复的打开或者关闭不同行存储空间,进而提高FPGA系统中的DDR4SDRAM的访问效率。

上述依据本发明为启示,通过上述的说明内容,相关工作人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改。本项发明的技术性范围并不局限于说明书上的内容,必须要根据权利要求范围来确定其技术性范围。

相关技术
  • 一种FPGA内的DDR4 SDRAM访问效率优化方法
  • 一种FPGA芯片内各模块之间的布线拥塞优化方法
技术分类

06120112986426