CN113190477B - 一种适用于查表应用的低延时ddr控制方法及装置 - Google Patents
一种适用于查表应用的低延时ddr控制方法及装置 Download PDFInfo
- Publication number
- CN113190477B CN113190477B CN202110416725.9A CN202110416725A CN113190477B CN 113190477 B CN113190477 B CN 113190477B CN 202110416725 A CN202110416725 A CN 202110416725A CN 113190477 B CN113190477 B CN 113190477B
- Authority
- CN
- China
- Prior art keywords
- ddr
- address
- request
- bank
- cache
- 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
Images
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
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
本发明公开了一种适用于查表应用的低延时DDR控制方法及装置,DDR设备的缓存空间中包括多个BANK,则低延时DDR控制方法具体包括:当接收到用户的写请求时,根据所述DDR设备的空间特性将请求数据复制多份,并根据请求地址将复制得到的多份备份数据分别写入所述DDR设备的多个BANK内部;当接收到用户的读请求时,根据所述DDR设备的当前运行状态和所述请求地址,通过动态择优调度方式从所述多个BANK中选出一个低延时的BANK,并从该BANK中读取备份数据。该方案利用DDR控制调度特性,采用空间换延时的策略实现低延时读操作,可快速完成查表操作,由此解决芯片中低延时查表的特殊应用场景需求。
Description
技术领域
本发明属于芯片设计数据通信技术领域,更具体地,涉及一种适用于查表应用的低延时DDR控制方法及装置。
背景技术
DDR SDRAM(Double-Data-Rate Synchronous Dynamic Random Access Memory,即双倍速率同步动态随机存储器)属于SDRAM家族的存储器产品,提供了相较普通的SDRAM更高的运行性能与更低的电压。普通的SDRAM在一个时钟周期内只传输一次数据,是在时钟的上升期进行数据传输;而DDR内存则是一个时钟周期内传输两次数据,它能够在时钟的上升期和下降期各传输一次数据,因此称为双倍速率同步动态随机存储器。DDR内存可以在与SDRAM相同的总线频率下达到更高的数据传输率,具有高带宽、低延迟、低成本等特点,因此广泛应用在高速通信及SOC(System on Chip,即系统级芯片)中的存储转发电路设计中。
DDR存储采用多维结构,地址线bg选择模组BANK GROUP(即BANK组,简写为BG),ba选择逻辑BANK,ROW选择行地址,COL选择列地址。
DDR刷新操作是指,DDR设备的内存存储每一个比特bit,都需要定期的刷新来充电,如果不及时充电会导致数据的丢失。阵列中的每个bit都能被随机地访问,但如果不充电,数据只能保存很短的时间,因此我们必须每隔tREFI(Refresh Interval,即刷新间隔,例如7.8us)的时间就刷新一次,每次刷新时数据就被重写一次;每次刷新后该设备需要等待tRFC(Refresh Cycle Time,即刷新周期,例如350ns)的时间后才能继续读写。
DDR控制器及调度策略中,芯片使用DDR SDRAM器件进行数据传输,技术上需要DDRC(DDR Controller,即DDR控制器)及DDR PHY(DDR Physical Layer,即DDR端口物理层)两部分组成。其中,由于DDR协议规定,DDR操作命令间隔需要满足一定的参数保护时间,DDR控制器对业务请求执行次序进行合理调度可以极大地增加系统整体的读写效率,提高总线传输带宽。
随着5G等高速通信系统的迅猛发展,网络系统中的数据流量越来越大,相对于流量带宽需求,延时指标也越来越受到重视,尤其在AI(Artificial Intelligence,即人工智能)和自动驾驶等新兴领域内,数据查找的高延时已经成为限制这些应用进一步发展的瓶颈。
目前,SOC芯片设计中使用DDR SDRAM器件进行数据传输,常规DDR读写操作一般是采用DDR控制器实现,将业务请求的读写请求转换为对DDR地址的读写操作,然后通过DDR端口物理层模块转换为实际DDR接口信号,完成数据传输。目前该技术主要应用于高带宽数据转发需求以及CPU(Central Processing Unit,即中央处理器)的配置总线需求两个场景。其中,CPU类业务对于低延时有一定的需求,通常采用单独DDR控制器来保证低延时,但实际受限于DDR设备控制的复杂性,造成实际延时指标并不理想;另外,特别对于分组芯片中网络处理中需要查表的需求,通用DDR控制器并不能达到上述应用的低延时需求,通常芯片需要采用TCAM(Ternary Content Addressable Memory,一种三态内容寻址存储器)等设备完成查表,成本较高,且实现复杂。
芯片中低延时查表应用,通常是在表内容初始化(即写操作)后,需要大量低延时的读操作,即写操作较少且对延时要求不高,但有大量读请求且需要较短时间内返回读数据。针对这种特殊应用场景,急需设计一种低延时查表的DDR控制实现方案,以满足芯片中查表特殊应用需求。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种适用于查表应用的低延时DDR控制方法及装置,其目的在于利用DDR控制调度特性,采用空间换延时的策略实现低延时读操作,快速完成查表操作,由此解决芯片中查表特殊应用场景的需求。
为实现上述目的,按照本发明的一个方面,提供了一种适用于查表应用的低延时DDR控制方法,DDR设备的缓存空间中包括多个BANK,则低延时DDR控制方法具体包括:
当接收到用户的写请求时,根据所述DDR设备的空间特性将请求数据复制多份,并根据请求地址将复制得到的多份备份数据分别写入所述DDR设备的多个BANK内部;
当接收到用户的读请求时,根据所述DDR设备的当前运行状态和所述请求地址,通过动态择优调度方式从所述多个BANK中选出一个低延时的BANK,并从该BANK中读取备份数据。
优选地,当接收到用户的写请求时,所述根据所述DDR设备的空间特性将请求数据复制多份,并根据请求地址将复制得到的多份备份数据分别写入所述DDR设备的多个BANK内部,具体包括:
根据所述DDR设备的空间特性,将所述请求地址映射到所述DDR设备的物理地址上并保存映射关系;其中,所述物理地址包括行地址和列地址;
根据所述DDR设备的缓存空间中实际包含的BANK数量将请求数据复制多份,得到多份备份数据;
根据映射到的物理地址,将所述多份备份数据分别写入所述DDR设备中多个BANK的对应地址,并更新该物理地址的表项状态为地址占用状态。
优选地,所述根据所述DDR设备的空间特性,将所述请求地址映射到所述DDR设备的物理地址上并保存映射关系,具体包括:
根据所述请求地址确定DDR查表区域,并根据所述DDR查表区域的行地址范围将所述DDR查表区域划分为N个缓存块;
根据各缓存块当前的空间占用情况和所述请求地址的范围确定写操作的行地址,根据所述请求地址和选择的行地址确定写操作的列地址,将所述请求地址映射到所述DDR设备的物理地址上,并保存对应的映射关系。
优选地,所述DDR设备包括至少两个,则当接收到用户的读请求时,所述根据所述DDR设备的当前运行状态和所述请求地址,通过动态择优调度方式从所述多个BANK中选出一个低延时的BANK,并从该BANK中读取备份数据,具体包括:
读取各DDR设备的刷新状态,并将当前处于刷新状态的DDR设备排除掉,将当前已完成刷新处于工作状态的DDR设备保留;
读取上次完成调度的记录,将保留下来的DDR设备中上次调度选择的BANK所在的BANK组排除掉,将其余BANK组保留;
读取保留下来的BANK组中各BANK的延时保护状态,并将当前处于延时保护状态的BANK排除掉,将其余未处于延时保护状态的BANK保留;
通过轮询调度方式从保留下来的BANK中选择一个BANK,并根据所述请求地址从该BANK中读取备份数据。
优选地,所述根据所述请求地址从该BANK中读取备份数据,具体包括:
根据所述请求地址查找映射关系,确定所述请求地址映射到所述DDR设备上的物理地址;
根据查找到的物理地址从该BANK内部的对应地址读取备份数据;
清空该物理地址的表项状态,释放每个BANK内部该物理地址对应的地址空间。
优选地,当接收到用户的写请求时,所述方法还包括:
检查CACHE模块的空间当前是否已满;
若所述CACHE模块的空间不满,则直接根据所述请求地址将所述请求数据写入所述CACHE模块对应的缓存地址中,并更新该缓存地址的表项状态为地址占用状态;
若所述CACHE模块的空间已满,则根据所述DDR设备的空间特性将所述请求数据复制多份,并根据所述请求地址将复制得到的多份备份数据分别写入所述DDR设备的多个BANK内部。
优选地,当接收到用户的读请求时,所述方法还包括:
根据所述请求地址检查所述CACHE模块中是否有该请求地址对应的请求数据;
若有则直接从所述CACHE模块的对应缓存地址返回所述请求数据,并针对该缓存地址清空表项状态,完成查表操作;
若无则根据所述DDR设备的当前运行状态和所述请求地址,通过动态择优调度方式从所述多个BANK中选出一个低延时的BANK,并从该BANK中读取备份数据,完成查表操作。
按照本发明的另一方面,提供了一种适用于查表应用的低延时DDR控制装置,包括相互连接设置的DDR设备和DDR控制器;
所述DDR设备设置两个,分别通过不同的命令通路与所述DDR控制器进行交互,且所述DDR设备的缓存空间包括多个BANK;
所述DDR控制器用于在写操作时根据所述DDR设备的空间特性将请求数据复制多份,并根据请求地址将复制得到的多份备份数据分别写入所述DDR设备的多个BANK内部;在读操作时根据所述DDR设备的当前运行状态和请求地址,通过动态择优调度方式从所述多个BANK中选出一个低延时的BANK,并从该BANK中读取备份数据。
优选地,还包括与所述DDR控制器相连接的内存管理单元,
所述内存管理单元用于在写操作时将请求地址映射到所述DDR设备的物理地址上,并更新该物理地址的表项状态为地址占用状态;在读操作时清空该物理地址的表项状态,释放对应的地址空间。
优选地,还包括CACHE模块,当所述CACHE模块的空间不满时,写操作时直接将所述请求数据写入所述CACHE模块对应的缓存地址中;读操作时直接从所述CACHE模块的对应缓存地址返回所述请求数据。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有如下有益效果:本发明提供的DDR控制方法中,写操作时可根据DDR设备的空间特性将请求数据复制多份,并分别写入DDR设备的多个BANK内部;读操作时可根据DDR设备的当前运行状态和请求地址,通过动态择优调度方式选出低延时的BANK读取备份数据,完成查表操作。该方案利用DDR控制调度特性,采用空间换延时的策略实现低延时读操作,可快速完成查表操作,由此解决芯片中低延时查表的特殊应用场景需求。
附图说明
图1是本发明实施例提供的一种适用于查表应用的低延时DDR控制装置框架图;
图2是本发明实施例提供的一种DDR设备的刷新及命令通路选择示意图;
图3是本发明实施例提供的一种适用于查表应用的低延时DDR控制方法流程图;
图4是本发明实施例提供的一种DDR设备的写操作流程图;
图5是本发明实施例提供的一种查表区域的地址空间分布示意图;
图6是本发明实施例提供的一种DDR设备的读操作流程图;
图7是本发明实施例提供的一种适用于查表应用的低延时DDR控制设置的架构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
实施例1
为解决芯片中低延时查表的特殊应用场景需求,本发明实施例首先提供了一种适用于查表应用的低延时DDR控制装置。如图1所示,本发明实施例提供的DDR控制装置包括顺次连接的内存管理单元(Memory Management Unit,简写为MMU)、DDR控制器(即DDRC)、DDR端口物理层模块(即DDR PHY)和DDR设备。其中:
所述DDR设备设置两个,分别通过不同的命令通路与所述DDR控制器进行交互,且所述DDR设备的缓存空间包括多个BANK。以图1为例,所述DDR设备包括两组DDR X8设备,可避免其中某个设备被占用时采用乒乓模式存取;当然,若存在查表数据量不够的情况,还可以通过扩展每组DDR设备的位宽来支持更多表项内容的存取。其中,两个DDR X8设备分别通过命令通路CH0和CH1与所述DDR控制器进行信号传输,分别对应信号CS0和CS1,如图1所示。
需要说明的是,DDR协议要求所述DDR设备需要定期执行刷新操作,即每隔tREFI的时间就刷新一次,每次执行刷新操作后需要等待一定的延时保护时间tRFC后才能执行其他命令。如图2所示,本实施例中所述DDR设备分为CH0和CH1两个命令通路,则实际工作中采用通路交替执行刷新操作的方式,将命令的执行按时分复用分为CH0和CH1。例如,在执行CH0对应的DDR设备刷新操作后,CH0对应的DDR设备需要等待延时保护时间tRFC才能继续工作,则从当前时刻到CH1执行刷新命令的这个时间段内,所述DDR控制器会选择命令通路CH1工作,反之则选择命令通路CH0,从而实现通路和设备的乒乓操作,避免刷新延时对查表产生影响。
所述内存管理单元主要负责查表操作的控制和表项状态的维护。对于写操作,在接收到用户的写请求时申请并产生写缓存地址(主要指DDR地址),也就是将用户的请求地址映射到所述DDR设备的物理地址上,并更新该物理地址的表项状态为地址占用状态;对于读操作,在接收到用户的读请求时产生读DDR控制器请求,待所述DDR控制器从所述DDR设备返回数据后清空该物理地址的表项状态,释放对应的地址空间。
所述DDR控制器主要负责将用户的读写请求转换为符合所述DDR设备接口协议的时序信号,以维护所述DDR设备的正常运行。在写操作时可根据所述DDR设备的空间特性将请求数据复制多份,并根据所述内存管理单元映射的物理地址将多份备份数据分别写入所述DDR设备的多个BANK内部;在读操作时可根据所述DDR设备的当前运行状态和请求地址,通过动态择优调度方式从所述DDR设备的多个BANK中选出一个低延时的BANK,并从该BANK中读取备份数据。
所述DDR端口物理层模块用于将所述DDR控制器接口的数字信号转换为相应的DDR设备接口的物理信号传输给所述DDR设备。
进一步地,在上述实施例中,所述DDR控制装置的数据存储仅包括DDR存储部分,请求数据均是存储在所述DDR设备内。为进一步提高查表速率,还可增加CACHE存储部分,则所述DDR控制装置还包括与所述内存管理单元相连接的CACHE模块,如图1所示,此时整个DDR控制装置包括CACHE存储部分和DDR存储部分。当所述CACHE模块的空间不满时,写操作时可直接将所述请求数据写入所述CACHE模块对应的缓存地址中;读操作时可直接从所述CACHE模块的对应缓存地址返回所述请求数据,进一步提高查表速率。
结合图1,所述CACHE模块和所述DDR控制器均与所述内存管理单元相连接,并由所述内存管理单元进行统一管理。所述CACHE模块采用通用的SRAM,可以缓存少量请求,命中的话查表读请求速率较快。与前述实施例相比,增加所述CACHE模块后的读写操作发生改变,所述内存管理单元的功能也相应改变,具体如下:
对于写操作,所述内存管理单元在接收到用户的写请求时申请并产生写缓存地址,并更新对应的表项状态为地址占用状态。此时的写缓存地址有可能是DDR地址,也有可能是CACHE地址,主要与所述CACHE模块的空间是否已满有关。因此,在接收到用户的写请求时,所述内存管理单元会先检查判断所述CACHE模块的空间是否已满。如果不满,则写缓存地址是CACHE地址,此时直接根据所述请求地址将请求数据写入所述CACHE模块对应的缓存地址中,并更新该缓存地址的表项状态为地址占用状态;如果已满,则写缓存地址是DDR地址,此时将用户的请求地址映射到所述DDR设备的物理地址上,并更新该物理地址的表项状态为地址占用状态。
对于读操作,所述内存管理单元在接收到用户的读请求时,先根据请求地址查找所述CACHE模块中是否有该请求地址对应的请求数据,即查找所述CACHE模块是否缓存命中。如果命中则可直接由所述CACHE模块的对应缓存地址返回所述请求数据,并针对该缓存地址清空表项状态,释放对应的地址空间;如果未命中则产生读DDR控制器请求,待所述DDR控制器从所述DDR设备返回数据后清空该物理地址的表项状态,释放每个BANK中对应的地址空间。
综上所述,本发明实施例提供的上述DDR控制装置中,写操作时DDR控制器可根据DDR设备的空间特性将请求数据复制多份,并分别写入DDR设备的多个BANK内部;读操作时DDR控制器可根据DDR设备的当前运行状态和请求地址,通过动态择优调度方式选择一个低延时的BANK读取备份数据,完成查表操作。该方案利用DDR控制调度特性,采用空间换延时的策略实现低延时读操作,可快速完成查表操作,由此解决芯片中低延时查表的特殊应用场景需求。
另外,如果进一步设置CACHE模块,则整个装置分为CACHE存储部分和DDR存储部分。当CACHE模块的空间不满时可直接将请求数据写入CACHE模块;读操作时优先查找CACHE模块的缓存命中情况,如果命中则直接从CACHE模块返回请求数据,进一步提高查表速率,提高整体设备性能。
实施例2
在上述实施例1的基础上,本发明实施例提供了一种适用于查表应用的低延时DDR控制方法,可利用实施例1中的DDR控制装置来实现。
如图3所示,本发明实施例提供的DDR控制方法主要包括“写操作”和“读操作”两大步,分别对应步骤10和步骤20,具体如下:
步骤10,当接收到用户的写请求时,根据所述DDR设备的空间特性将请求数据复制多份,并根据请求地址将复制得到的多份备份数据分别写入所述DDR设备的多个BANK内部,完成写表操作。
在没有设置CACHE模块的情况下,数据存储仅包括DDR存储部分,当接收到用户的写请求时直接将请求数据写入所述DDR设备,此时写操作过程大致如下:所述内存管理单元接收到用户的写请求后将所述请求地址映射到所述DDR设备的物理地址上,由所述DDR控制器根据所述DDR设备的空间特性将请求数据复制多份,分别写入所述DDR设备中每个BANK的对应物理地址中,再由所述内存管理单元更新对应物理地址的表项状态为地址占用状态。其中,所述DDR设备的空间特性是指所述DDR设备的BANK/ROW/COL三维空间结构特性,包括缓存空间中的BANK数量、BANK编号、每个BANK对应的行(ROW)地址范围和列(COL)地址范围、每个BANK当前的空间占用情况(即当前占用的行地址和列地址、当前空闲的行地址和列地址)等等;此处主要是根据包含的BANK数量来进行请求数据的复制,即有多少个BANK就复制多少份。
在设置CACHE模块的情况下,数据存储包括CACHE存储部分和DDR存储部分,当接收到用户的写请求时需要先判断应该将请求数据写入哪个部分,再执行写操作。大致过程如下:
所述内存管理单元接收到用户的写请求后,先检查判断当前CACHE模块的空间是否已满。若所述CACHE模块的空间不满,则可将所述请求数据写入所述CACHE模块,即直接根据所述请求地址将所述请求数据写入所述CACHE模块对应的缓存地址中,并更新该缓存地址的表项状态为地址占用状态。若所述CACHE模块的空间已满,则需要将所述请求数据写入所述DDR设备,此时写操作过程与未设置CACHE模块时相同:所述内存管理单元将所述请求地址映射到所述DDR设备的物理地址上,由所述DDR控制器根据所述DDR设备的空间特性将请求数据复制多份,分别写入所述DDR设备中每个BANK的对应物理地址中,再由所述内存管理单元更新对应物理地址的表项状态为地址占用状态。
步骤20,当接收到用户的读请求时,根据所述DDR设备的当前运行状态和所述请求地址,通过动态择优调度方式从所述多个BANK中选出一个低延时的BANK,并从该BANK中读取备份数据,完成查表操作。
在没有设置CACHE模块的情况下,数据存储仅包括DDR存储部分,所述请求数据是写入所述DDR设备的,因此当接收到用户的读请求时也是从所述DDR设备中读取数据。此时的读操作过程大致如下:所述DDR控制器先分别读取各DDR设备以及各BANK的状态来进行动态择优筛选,以便将高延时的BANK排除掉,使得剩余BANK均为低延时的BANK;然后通过轮询调度方式从剩余BANK中选择一个低延时的BANK,按照所述请求地址对应的物理地址从该BANK中读取备份数据,完成查表操作后清空该物理地址的表项状态,从而释放每个BANK中对应的地址空间。
在设置CACHE模块的情况下,数据存储包括CACHE存储部分和DDR存储部分,所述请求数据可能写入CACHE存储部分,也可能写入DDR存储部分。因此当接收到用户的读请求时需要先判断所述请求数据写入了哪个部分,再执行读操作。大致过程如下:
所述内存管理单元接收到用户的读请求后,先根据所述请求地址检查所述CACHE模块中是否有该请求地址对应的请求数据,若有则说明所述请求数据写入了所述CACHE模块,此时直接从所述CACHE模块的对应缓存地址返回所述请求数据,并针对该缓存地址清空表项状态,从而释放所述CACHE模块中对应的地址空间。若无则说明所述请求数据写入了所述DDR设备,需要从所述DDR设备读取数据,此时读操作过程与未设置CACHE模块时相同:所述DDR控制器先分别读取各DDR设备以及各BANK的状态来进行动态择优筛选,以便将高延时的BANK排除掉;然后通过轮询调度方式从剩余BANK中选择一个低延时的BANK,按照所述请求地址对应的物理地址从该BANK中读取备份数据,完成查表操作后清空该物理地址的表项状态,从而释放每个BANK中对应的地址空间。
本发明实施例提供的上述DDR控制方法中,写操作时可根据DDR设备的空间特性将请求数据复制多份,并分别写入DDR设备的多个BANK内部;读操作时可根据DDR设备的当前运行状态和请求地址,通过动态择优调度方式选择一个低延时的BANK读取备份数据,完成查表操作;该方案利用DDR控制调度特性,采用空间换延时的策略实现低延时读操作,可快速完成查表操作,由此解决芯片中低延时查表的特殊应用场景需求。另外,如果设置CACHE模块,当CACHE模块的空间不满时可直接将请求数据写入CACHE模块;读操作时优先查找CACHE模块的缓存命中情况,如果命中则直接从CACHE模块返回请求数据,进一步提高查表速率,提高整体设备性能。
实施例3
在上述实施例2的基础上,如果需要将所述请求数据写入所述DDR设备,具体的写操作过程可参考图4,主要包括以下步骤:
步骤101,根据所述DDR设备的空间特性,将所述请求地址映射到所述DDR设备的物理地址上并保存映射关系;其中,所述物理地址包括行地址和列地址。具体映射过程如下:
1)根据所述请求地址确定DDR查表区域,并根据所述DDR查表区域的行地址范围将所述DDR查表区域划分为N个缓存块,相当于将一个大的DDR查表区域划分为N个小的DDR查表区域。
如图5所示,整个DDR查表区域根据行地址范围划分为N个缓存块,分别记为DDRTable0、DDR Table1、DDR Table2、...、DDR TableN-1,其中缓存块DDR Table i也可称为DDR查表区域i,对应行地址为i,可以认为一个缓存块就对应BANK中的一行。每个缓存块的列地址范围包括两个通路上DDR设备的所有BANK的该行所在的全部列地址范围。例如,DDRTable0具体为CH0/CH1两个通路遍历各BANK组的各BANK,行地址ROW固定为0,列地址COL遍历行0的所有列地址;以此类推,DDR Table N-1具体为CH0/CH1两个通路遍历各BANK组的各BANK,ROW固定为N-1,COL遍历行N-1的所有列地址。例如,在某个具体的实施例中,遍历语句如下:
DDR查表区域0(CH0/1遍历各个BG/BANK ROW=0COL地址遍历col_addr[X:0]);
DDR查表区域N-1(CH0/1遍历各个BG/BANK ROW=N-1COL地址遍历col_addr[X:0])。
其中,[X:0]与所述DDR设备的BANK中的COL寻址范围有关,表示COL地址从X到0进行遍历。
以两个DDR X8设备为例,每个DDR X8设备的缓存空间包括16个BANK,两个DDR X8设备共32个BANK,则DDR Table i具体包括所有这32个BANK的行i所在的所有列地址范围。
进一步地,当设置CACHE模块时,除所述DDR查表区域以外还包括CACHE查表区域,如图5所示。所述CACHE查表区域由SRAM组成,受限于容量,一般不超过128个。
2)根据各缓存块当前的空间占用情况和所述请求地址的范围确定写操作的行地址,根据所述请求地址和选择的行地址确定写操作的列地址,将所述请求地址映射到所述DDR设备的物理地址上,并保存对应的映射关系。
地址映射也就是需要确定将所述请求数据写入BANK内的哪一行哪一列,即确定行地址和列地址。其中,确定行地址实际上就是确定具体需要写入哪个缓存块。考虑到当后续进行读操作时,打开的缓存块数量越少,查表速率就越快,因此在写操作时需尽量少的占用缓存块,最好写操作时仅占用一个缓存块。简单地说,如果所述请求地址能仅用一个缓存块就写入,就只占用一个缓存块;当所有缓存块都无法仅用一个缓存块就完成写入时,才会选择占用两个缓存块,以此类推。因此,在写入时可根据各缓存块中当前的空间占用情况(即列地址占用情况,以确定缓存块中的空闲列地址范围)以及所述请求地址的范围(即列地址范围),确定写入所述请求地址所需的最小缓存块数量以及对应的缓存块。当某个缓存块中当前的空闲列地址范围大于等于所述请求地址的列地址范围时,可将所述请求地址一次性写入该缓存块中的空闲列地址处,此时仅占用一个缓存块就能完成写操作,实际写入时优选采用一个缓存块完成写操作。
具体可按照ROW从小到大的顺序(并不唯一限定)进行缓存块遍历,即按照图5中由上到下的顺序依次进行缓存块遍历,判断每个缓存块中的空闲列地址范围是否大于等于所述请求地址的列地址范围;如果遍历至某个缓存块时,该缓存块中当前的空闲列地址范围大于等于所述请求地址的列地址范围,则选择该缓存块完成写入,停止遍历。结合图5,先选择缓存块DDR Table 0,如果DDR Table 0的空闲列地址范围大于等于所述请求地址的列地址范围,则可直接选择行0进行写操作;否则就继续选择下一个缓存块DDR Table1,判断DDRTable 1的空闲列地址范围是否大于等于所述请求地址的列地址范围,以此类推;直至选出满足“可一次性写入所述请求地址”这一要求的缓存块,进而根据该缓存块确定映射的行地址。例如,所述请求地址的列地址范围有10位,遍历至缓存块DDR Table i时发现其空闲列地址范围有16位,可一次性写入所述请求地址,则停止遍历,确定映射的行地址为ROW=i。
行地址确定后,所述请求地址便可写入该行中的空闲列地址处,因此根据所述请求地址的列地址范围和该行中的空闲列地址范围,即可确定写操作的列地址。例如,在上述实施例中,所述请求地址的列地址范围有10位,缓存块DDR Table i的空闲列地址范围有16位,则可将所述请求地址写入这16位空闲列地址中的任意10位中,最好是连续的10位空闲列地址处,进而确定映射到DDR设备中的列地址。行地址和列地址均确定后,也就将所述请求地址映射到了所述DDR设备的物理地址上,此时可保存所述请求地址与所述物理地址之间的映射关系,以便后续查表操作时使用。
步骤102,根据所述DDR设备的缓存空间中实际包含的BANK数量将请求数据复制多份,得到多份备份数据。
以两个DDR X8设备为例,每个DDR X8设备的缓存空间包括16个BANK,两个DDR X8设备共32个BANK,则所述DDR控制器需要将所述请求数据复制32份,得到32份备份数据,每个BANK对应一份。
步骤103,根据映射到的物理地址,将所述多份备份数据分别写入所述DDR设备中多个BANK的对应地址,并更新该物理地址的表项状态为地址占用状态。
假设所述请求地址映射的所述物理地址为(ROWi,COLj),即行地址为i,列地址为j;其中,j实际上表示的是一个列地址范围。所述DDR控制器将32份备份数据分别写入所述DDR设备的32个BANK的物理地址(ROWi,COLj)中,即每个BANK内的物理地址(ROWi,COLj)中均存储一份备份数据;当所有BANK均写入备份数据后即认为该写操作完成,此时所述DDR控制器可向所述内存管理单元发出写操作完成指示,由所述内存管理单元更新物理地址(ROWi,COLj)的表项状态为地址占用状态,表示每个BANK中的该地址均已被占用。至此,整个写表操作完成。
实施例4
在上述实施例2和实施例3的基础上,如果需要从所述DDR设备中读取数据,具体的读操作过程可参考图6,主要包括以下步骤:
步骤201,读取各DDR设备的刷新状态,并将当前处于刷新状态的DDR设备排除掉,将当前已完成刷新处于工作状态的DDR设备保留。
通过所述DDR控制器可分别读取两个DDR设备当前的刷新状态,确定当前处于工作状态的DDR设备。如果通路CH0对应的DDR设备当前处于刷新状态,则通路CH1对应的DDR设备处于工作状态,因此可将通路CH1对应的DDR设备保留下来,后续可从通路CH1对应的DDR设备中选择一个BANK进行数据读取;如果通路CH1对应的DDR设备当前处于刷新状态,则通路CH0对应的DDR设备处于工作状态,因此可将通路CH0对应的DDR设备保留下来,后续可从通路CH0对应的DDR设备中选择一个BANK进行数据读取。
步骤202,读取上次完成调度的记录,将保留下来的DDR设备中上次调度选择的BANK所在的BANK组排除掉,将其余BANK组保留。
所述DDR设备内的多个BANK可划分为若干个BANK组,具体如何划分是由厂商规定设置好的,在此不做限定。例如,DDR X8设备包括16个BANK,通常由厂商划分为4个BANK组,每个BANK组包括4个BANK。假设16个BANK分别记为BANK0~BANK15,4个BANK组分别记为BG0、BG1、BG2、BG3,则BG0包括BANK0~BANK3,BG1包括BANK4~BANK7,BG2包括BANK8~BANK11,BG3包括BANK12~BANK15。
确定好当前工作的DDR设备之后,继续通过所述DDR控制器读取上次完成调度的记录,将上次调度时选择的BANK所在的BANK组排除掉,本次选择其余BANK组中的BANK进行数据读取,避免BANK冲突。这与DDR调度特性有关,如果本次与上次选择同一个BANK组中的BANK,难以实现BANK并行执行;如果本次与上次选择不同BANK组中的BANK,可实现BANK并行执行,有效降低操作时延。例如,假设上次选择BANK0进行数据读取,则本次需要将BANK0所在的BG0排除,从剩余的BG1、BG2或BG3中选择一个BANK进行数据读取。
其中,每次完成调度后会记录该次调度的相关信息,例如该次完成读操作的物理地址(包括行地址和列地址)、选择的具体设备通路(CH0/CH1)、选择的BANK组和BANK等。因此,根据上次完成调度的记录,可确定上次调度时选择的BANK所在的BANK组,进而可将该BANK组排除。
步骤203,读取保留下来的BANK组中各BANK的延时保护状态(即目前处于延时保护时间),并将当前正处于延时保护状态的BANK排除掉,将其余未处于延时保护状态的BANK保留。
通过所述DDR控制器可读取各BANK的延时保护状态,如果处于延时保护状态,表示该BANK当前无法工作,因此需要排除掉。
步骤204,通过轮询调度方式从保留下来的BANK中选择一个BANK,并根据所述请求地址从该BANK中读取备份数据。
经过前三个步骤的筛选排除后,高延时的BANK已经被排除,最后保留下来的只有少部分的BANK,且这些BANK对应的延时都比较低,可进一步通过轮询调度的方式从这些BANK中选出一个BANK,并从该BANK中读取备份数据,同时记录本次调度时具体选择的设备通路、BANK组、BANK以及读操作的物理地址等。数据读取过程具体如下:首先根据所述请求地址查找映射关系,确定所述请求地址映射到所述DDR设备上的物理地址;然后根据查找到的物理地址从该BANK内部的对应地址读取备份数据;最后清空该物理地址的表项状态,释放每个BANK内部该物理地址对应的地址空间。至此,整个查表操作完成。
实施例5
在上述实施例2-实施例4提供的适用于查表应用的低延时DDR控制方法的基础上,本发明还提供了一种可用于实现上述方法的适用于查表应用的低延时DDR控制设备,如图7所示,是本发明实施例的设备架构示意图。本实施例的适用于查表应用的低延时DDR控制设备包括一个或多个处理器21以及存储器22。其中,图7中以一个处理器21为例。
所述处理器21和所述存储器22可以通过总线或者其他方式连接,图7中以通过总线连接为例。
所述存储器22作为一种适用于查表应用的低延时DDR控制方法非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如实施例1中的适用于查表应用的低延时DDR控制方法。所述处理器21通过运行存储在所述存储器22中的非易失性软件程序、指令以及模块,从而执行适用于查表应用的低延时DDR控制设备的各种功能应用以及数据处理,即实现实施例2-实施例4的适用于查表应用的低延时DDR控制方法。
所述存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,所述存储器22可选包括相对于所述处理器21远程设置的存储器,这些远程存储器可以通过网络连接至所述处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述程序指令/模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述实施例1中的适用于查表应用的低延时DDR控制方法,例如,执行以上描述的图3、图4、图6所示的各个步骤。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或光盘等。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种适用于查表应用的低延时DDR控制方法,其特征在于,DDR设备的缓存空间中包括多个BANK,则低延时DDR控制方法具体包括:
当接收到用户的写请求时,根据所述DDR设备的空间特性将请求数据复制多份,并根据请求地址将复制得到的多份备份数据分别写入所述DDR设备的多个BANK内部,具体包括:
根据所述DDR设备的空间特性,将所述请求地址映射到所述DDR设备的物理地址上并保存映射关系,具体为:根据所述请求地址确定DDR查表区域,并根据所述DDR查表区域的行地址范围将所述DDR查表区域划分为N个缓存块;根据各缓存块当前的空间占用情况和所述请求地址的范围确定写操作的行地址,根据所述请求地址和选择的行地址确定写操作的列地址,将所述请求地址映射到所述DDR设备的物理地址上,并保存对应的映射关系,其中,所述物理地址包括行地址和列地址;
根据所述DDR设备的缓存空间中实际包含的BANK数量将请求数据复制多份,得到多份备份数据;根据映射到的物理地址,将所述多份备份数据分别写入所述DDR设备中多个BANK的对应地址,并更新该物理地址的表项状态为地址占用状态;
当接收到用户的读请求时,根据所述DDR设备的当前运行状态和所述请求地址,通过动态择优调度方式从所述多个BANK中选出一个低延时的BANK,并从该BANK中读取备份数据。
2.如权利要求1所述的适用于查表应用的低延时DDR控制方法,其特征在于,所述DDR设备包括至少两个,则当接收到用户的读请求时,所述根据所述DDR设备的当前运行状态和所述请求地址,通过动态择优调度方式从所述多个BANK中选出一个低延时的BANK,并从该BANK中读取备份数据,具体包括:
读取各DDR设备的刷新状态,并将当前处于刷新状态的DDR设备排除掉,将当前已完成刷新处于工作状态的DDR设备保留;
读取上次完成调度的记录,将保留下来的DDR设备中上次调度选择的BANK所在的BANK组排除掉,将其余BANK组保留;
读取保留下来的BANK组中各BANK的延时保护状态,并将当前处于延时保护状态的BANK排除掉,将其余未处于延时保护状态的BANK保留;
通过轮询调度方式从保留下来的BANK中选择一个BANK,并根据所述请求地址从该BANK中读取备份数据。
3.如权利要求2所述的适用于查表应用的低延时DDR控制方法,其特征在于,所述根据所述请求地址从该BANK中读取备份数据,具体包括:
根据所述请求地址查找映射关系,确定所述请求地址映射到所述DDR设备上的物理地址;
根据查找到的物理地址从该BANK内部的对应地址读取备份数据;
清空该物理地址的表项状态,释放每个BANK内部该物理地址对应的地址空间。
4.如权利要求1所述的适用于查表应用的低延时DDR控制方法,其特征在于,当接收到用户的写请求时,所述方法还包括:
检查CACHE模块的空间当前是否已满;
若所述CACHE模块的空间不满,则直接根据所述请求地址将所述请求数据写入所述CACHE模块对应的缓存地址中,并更新该缓存地址的表项状态为地址占用状态;
若所述CACHE模块的空间已满,则根据所述DDR设备的空间特性将所述请求数据复制多份,并根据所述请求地址将复制得到的多份备份数据分别写入所述DDR设备的多个BANK内部。
5.如权利要求4所述的适用于查表应用的低延时DDR控制方法,其特征在于,当接收到用户的读请求时,所述方法还包括:
根据所述请求地址检查所述CACHE模块中是否有该请求地址对应的请求数据;
若有则直接从所述CACHE模块的对应缓存地址返回所述请求数据,并针对该缓存地址清空表项状态,完成查表操作;
若无则根据所述DDR设备的当前运行状态和所述请求地址,通过动态择优调度方式从所述多个BANK中选出一个低延时的BANK,并从该BANK中读取备份数据,完成查表操作。
6.一种适用于查表应用的低延时DDR控制装置,其特征在于,包括相互连接设置的DDR设备和DDR控制器;
所述DDR设备设置两个,分别通过不同的命令通路与所述DDR控制器进行交互,且所述DDR设备的缓存空间包括多个BANK;
所述DDR控制器用于在写操作时根据所述DDR设备的空间特性将请求数据复制多份,并根据请求地址将复制得到的多份备份数据分别写入所述DDR设备的多个BANK内部;在读操作时根据所述DDR设备的当前运行状态和请求地址,通过动态择优调度方式从所述多个BANK中选出一个低延时的BANK,并从该BANK中读取备份数据。
7.如权利要求6所述的适用于查表应用的低延时DDR控制装置,其特征在于,还包括与所述DDR控制器相连接的内存管理单元,
所述内存管理单元用于在写操作时将请求地址映射到所述DDR设备的物理地址上,并更新该物理地址的表项状态为地址占用状态;在读操作时清空该物理地址的表项状态,释放对应的地址空间。
8.如权利要求6所述的适用于查表应用的低延时DDR控制装置,其特征在于,还包括CACHE模块,当所述CACHE模块的空间不满时,写操作时直接将所述请求数据写入所述CACHE模块对应的缓存地址中;读操作时直接从所述CACHE模块的对应缓存地址返回所述请求数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110416725.9A CN113190477B (zh) | 2021-04-19 | 2021-04-19 | 一种适用于查表应用的低延时ddr控制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110416725.9A CN113190477B (zh) | 2021-04-19 | 2021-04-19 | 一种适用于查表应用的低延时ddr控制方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113190477A CN113190477A (zh) | 2021-07-30 |
CN113190477B true CN113190477B (zh) | 2022-07-01 |
Family
ID=76977459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110416725.9A Active CN113190477B (zh) | 2021-04-19 | 2021-04-19 | 一种适用于查表应用的低延时ddr控制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113190477B (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101562041B (zh) * | 2009-04-30 | 2011-06-01 | 华为技术有限公司 | 一种实现sdram查表的方法、装置及网络设备 |
CN102279802A (zh) * | 2010-06-13 | 2011-12-14 | 中兴通讯股份有限公司 | 提高同步动态随机存储控制器的读操作效率的方法和装置 |
US20130111122A1 (en) * | 2011-10-31 | 2013-05-02 | Futurewei Technologies, Inc. | Method and apparatus for network table lookups |
US9195621B2 (en) * | 2013-03-15 | 2015-11-24 | Freescale Semiconductor, Inc. | System and method for assigning memory access transfers between communication channels |
CN103198856B (zh) * | 2013-03-22 | 2016-04-13 | 烽火通信科技股份有限公司 | 一种ddr控制器及请求调度方法 |
CN104461956B (zh) * | 2013-09-18 | 2017-10-24 | 华为技术有限公司 | 访问同步动态随机访问存储器的方法、装置及系统 |
CN109656832A (zh) * | 2017-10-11 | 2019-04-19 | 深圳市中兴微电子技术有限公司 | 一种查表方法、计算机可读存储介质 |
CN108459826B (zh) * | 2018-02-01 | 2020-12-29 | 杭州宏杉科技股份有限公司 | 一种处理io请求的方法及装置 |
-
2021
- 2021-04-19 CN CN202110416725.9A patent/CN113190477B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113190477A (zh) | 2021-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6796304B2 (ja) | 最終レベルキャッシュシステム及び対応する方法 | |
CN113424160B (zh) | 一种处理方法、装置及相关设备 | |
US20160085585A1 (en) | Memory System, Method for Processing Memory Access Request and Computer System | |
US20170060752A1 (en) | Data caching method and computer system | |
US9871727B2 (en) | Routing lookup method and device and method for constructing B-tree structure | |
US11210020B2 (en) | Methods and systems for accessing a memory | |
US20060129749A1 (en) | Nonvolatile memory system, nonvolatile memory device, memory controller, access device, and method for controlling nonvolatile memory device | |
CN109388590B (zh) | 提升多通道dma访问性能的动态缓存块管理方法和装置 | |
US8621134B2 (en) | Storage tiering with minimal use of DRAM memory for header overhead | |
CN105339910B (zh) | 在混合驱动器中的虚拟nand容量扩展 | |
CN110555001B (zh) | 数据处理方法、装置、终端及介质 | |
CN104360825B (zh) | 一种混合内存系统及其管理方法 | |
CN107784121A (zh) | 一种基于非易失内存的日志文件系统的小写优化方法 | |
WO2019062747A1 (zh) | 数据访问方法以及计算机系统 | |
JP2000242559A (ja) | 情報処理装置及び半導体装置 | |
CN114356877A (zh) | 一种基于持久内存的日志结构合并树分级存储方法及系统 | |
CN113641603A (zh) | 一种基于axi协议的ddr仲裁与调度方法及系统 | |
CN113190477B (zh) | 一种适用于查表应用的低延时ddr控制方法及装置 | |
CN100536021C (zh) | 大容量高速缓冲存储器 | |
JP2000339220A (ja) | キャッシュブロック予約方法およびキャッシュブロック予約機能付きコンピュータシステム | |
CN107506139A (zh) | 一种面向相变存储器的写请求优化装置 | |
JP3204295B2 (ja) | キャッシュメモリシステム | |
US6542958B1 (en) | Software control of DRAM refresh to reduce power consumption in a data processing system | |
US8484411B1 (en) | System and method for improving access efficiency to a dynamic random access memory | |
JP3846543B2 (ja) | メモリアクセスシステム |
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 |