数据缓存管理方法及装置的制作方法

文档序号:7896540阅读:283来源:国知局
专利名称:数据缓存管理方法及装置的制作方法
技术领域
本发明涉及数据通信方法,尤其涉及数据缓存管理方法及装置。
背景技术
流量管理(Traffic Management,以下简称TM)是数据通信系统的核心部分,通过 对获取的数据包进行缓存及统计,并在统计的基础上完成输出流量的控制,将所缓存的数 据包发送至网络边缘的各个端口和通道。例如一个16(ibpS (每秒16(ibit的流量)的数据 流,可能包含数十万个通道,这些通道包含E1、CE1、千兆以太网、百兆以太网等等,因此在 TM中就需要有数十万个存储区来保存这数十万个通道的数据,并对他们进行统计,从而控 制各通道的数据的输出,实现流量管理,其目的是为了在传输网络发生拥堵的情况下,保障 端到端的服务质量(End-to-End Quality ofkrvice,简称端到端QoS)。也就是说保证优 先级高的通信链路保持传输畅通,而优先级低的通信链路保证尽力而为传输。TM通常分为两种集中式TM和分布式TM。图1为集中式TM的系统结构示意图。如图1所示,集中式TM是指系统内所有需 要传输的数据都经过TM。如图1所示,在该分布式交换系统中应用集中式TM时,所有的数 据包处理器(Packet !Processor,简称PP)接收到数据包后通过交换结构(Fabric),转发给 TM模块;TM模块将所有数据包都保存在基于片外存储设备的缓存(Buffer)中;TM模块根 据优先级约定和对缓存中的数据统计,有计划的将数据分发给各个数据包处理器,从而发 送出去ο可见,在集中式TM的系统中,TM处于Fabric的核心部分。所有数据包都经过 Fabric传输到TM。如果该系统较为复杂,则基于片外存储设备的缓存需要保存数十万个不 同种类的数据包,这些数据包形成数十万个数据队列。在较为复杂的通信环境中,通常应用分布式TM。图2为分布式TM的系统结构示 意图。如图2所示,在分布式TM的系统中,对所有数据包的处理不是由单个TM来完成的, 而是由多个TM进行分档。在该分布式TM的系统中,TM分为输入TMangress TM,以下简称 ITM)和输出TM(Egress TM,以下简称ETM)两部分。在输入路径上,PP将数据转发给ITM ; ITM将所有数据包都保存在基于片外存储设备的缓存(Buffer)中;ITM根据ETM的许可信 息,将数据包通过Fabric发送给ETM。在输出路径上,ETM通过发给多个ITM许可信息,来 控制各个ITM向该ETM发送的数据包量,从而对输出到PP的数据包进行流量管理。可见,在分布式TM的系统中,多个TM处于各PP和Fabric之间。在分布式TM的 系统中,TM接收本地PP的数据包,并转发给Fabric,同时接收从远程PP经由Fabric转发 过来的数据包。由以上分析可以看出,通过数据缓存,实现数据包在极为大量的数据队列中的及 时输入和输出,是保障缓存管理效果的关键。现有技术中解决这一数据缓存问题主要有以下两种方式一种是固定深度缓存,即为每个数据通道分配固定深度的缓存单元。应用该方法,极为浪费存储资源,当要缓存的数据通道量越大时,这种方法的缺陷越发严重;另一种是深度可预设缓存,即预先对缓存深度进行配置。对该方法说明如下在这个方案中缓存空间被均分为一个个存储单元(简称Cell,例子中是IOM个, 每个Cell的大小是16字节),每个Cell都有一个指针,指向该Cell的首地址。通过Cell 指针来组织和管理这些Cell。图3为深度可预设缓存的缓存结构示意图。如图3所示,该缓存结构包括三个列 表通道指针列表、缓存空间列表和链表指针列表。通道指针列表记录各个通道的缓存的首个Cell的Cell指针。例如,图3中,通道 指针列表中,通道1所对应的位置保存着Cell2指针,则表明Cell2是通道1的先入先出 (First In First Out,以下简称FIFO)缓存的首个Cell。如果要从通道1中输出数据,则 读取Cell2中的数据输出即可。缓存空间列表记录所有的Cell被哪个通道的缓存所占用。例如,图3中,缓存空间 列表的Cell2、3、4和5所对应的位置标记为通道1,则说明通道1的FIFO缓存占用Cell2、 3、4 禾口 5。链表指针列表保存各个Cell所链接的下一个Cell指针。例如,图3中,链表指 针列表中,Cell2对应的位置保存着Cell3指针,Cell3对应的位置保存着Cell5指针, Cell5对应的位置保存着Cell4指针;Cell4对应的位置保存着Cell2指针,这样组成一个 Cell2 — Cell3 — Cell5 — Cell4 — Cell2 的环形缓存。可见这个方案存在两个致命缺点其一是预先配置复杂,另一是在预先配置后,各 个缓存的大小是固定的,这大大地影响了灵活性。因此,能够看出,现有技术的缓存管理存 在缓存效率低及浪费缓存空间的缺陷。

发明内容
针对上述缺陷,本发明提供一种数据缓存管理方法,包括在写入目标数据时,读写逻辑模块从SRAM信息模块获取用于写入目标数据的第 一目标地址,若判断获知所述目标数据大于所述第一目标地址对应的存储单元的可用存储 空间,则从所述SRAM信息模块获取空闲存储单元的地址指针,将所述目标数据连续写入所 述第一目标地址对应的存储空间和所述空闲存储单元,并更新所述SRAM信息模块中存储 的第一目标地址;在读取目标数据时,读写逻辑模块从SRAM信息模块获取存储所述目标数据的第 二目标地址,并从所述第二目标地址对应的存储空间读取所述目标数据。根据本发明的另一方面,还提供一种数据缓存管理装置,包括读写逻辑模块、SRAM 信息模块和DRAM控制模块,其中所述读写逻辑模块,用于根据所述数据写入请求/数据读取请求写入目标数据或 读取目标数据;在写入目标数据时,从SRAM信息模块获取用于写入目标数据的第一目标地 址,若判断获知所述目标数据大于所述第一目标地址对应的存储单元的可用存储空间,则 从所述SRAM信息模块获取空闲存储单元的地址指针,将所述目标数据连续写入所述第一 目标地址对应的存储空间和所述空闲存储单元,并更新所述SRAM信息模块中存储的第一 目标地址;在读取目标数据时,读写逻辑模块从SRAM信息模块获取存储所述目标数据的第二目标地址,并从所述第二目标地址对应的存储空间读取所述目标数据;所述SRAM信息模块,用于存储所述第一目标地址、第二目标地址和所述空闲存储 单元的地址指针;DRAM控制模块,用于在所述读写逻辑模块写入或读取目标数据后,向所述读写逻 辑模块提供所述第一目标地址、第二目标地址及所述空闲存储单元的地址,以使所述读写 逻辑模块对所述SRAM信息模块进行更新。根据本发明的数据缓存管理方法及装置,由于在写入数据时,首先获取第一目标 地址,该目标地址为在先相应的数据写入的结束地址,并当该目标数据的大小超过SRAM信 息模块中记载的用于写入目标数据的当前存储单元中可用存储空间的大小,申请新的存储 单元,连续向该当前存储单元及新申请的存储单元中存取目标数据,即实现了将目标数据 存储在连续的存储单元中,而非各次进行数据写入时均直接分配新的存储单元,将数据分 散地存储在多个存储单元中。通过采用这种数据写入方式,能够大幅缩减相应数据(例如 同队列中的数据)所占用的存储单元数量,使得在读出数据时,可减少从SRAM信息模块中 查询存储单元的地址指针的操作,无需频繁地进行跨存储单元操作,提高了读取数据的效 率,从而提高了数据缓存的效率,能够保障大量数据的及时输入和输出;而且,由于在该数 据缓存管理方法及装置中,根据数据量分配相应的存储单元,能够节约缓存空间,避免了缓 存空间的浪费。


图1为集中式TM的系统结构示意图。图2为分布式TM的系统结构示意图。图3为深度可预设缓存的缓存结构示意图。图4为本发明数据缓存管理方法的写入数据方法流程图。图5为本发明数据缓存管理方法的读取数据方法流程图。图6为SRAM信息模块的存储结构示意图。图7为数据合并功能模块的结构示意图。图8为根据本发明数据缓存管理方法的读写逻辑模块写入斐女据流程图。图9为根据本发明数据缓存管理方法的读写逻辑模块读取斐女据流程图。图10为本发明数据缓存管理装置的结构示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图,对本发明的技术 方案进行清楚、完整地描述。本发明数据缓存管理方法包括写入数据方法和读取数据方法。图4为本发明数据 缓存管理方法的写入数据方法流程图。图5为本发明数据缓存管理方法的读取数据方法流 程图。下面结合参考图4和图5对本发明的数据缓存管理方法进行详细说明。如图4所示,该数据缓存管理方法的写入数据方法包括步骤S101,读写逻辑模块从SRAM信息模块获取用于写入目标数据的第一目标地址。7
其中,SRAM信息模块中存储有用于写入目标数据的第一目标地址、存储所述目标 数据的第二目标地址和空闲存储单元的地址指针。存储目标数据的存储单元为动态随机访 问存储体(Dynamic Random Access Memory,以下简称DRAM)中的存储空间。其中,DRAM均分为多个存储单元。数据缓存管理按照存储单元来分配存储资源, 也就是说当某个队列有资源分配请求时,数据缓存管理将一次性分配给该队列一个存储单 元。存储单元的大小和存储单元的地址指针的个数以及DRAM的大小有关,例如存储单元的 地址指针的个数为256K个,DRAM的大小为2G字节,那么一个存储单元的大小就为8K字节。步骤S102,若判断获知目标数据大于第一目标地址对应的存储单元的可用存储空 间,则从SRAM信息模块获取空闲存储单元的地址指针。其中,读写逻辑模块中预置有存储单元的大小,读写逻辑模块通过将所要存储的 目标数据的大小与第一目标地址对应的存储单元的可用存储空间的大小进行比较,来判断 该第一目标地址对应的当前存储单元能否存储全部目标数据。若能,则直接将目标数据从 第一目标地址开始、写入到DRAM中;若不能,则向SRAM信息模块申请一个空闲存储单元,并 执行步骤S103。步骤S103,将目标数据连续写入第一目标地址对应的存储空间和空闲存储单元, 并更新SRAM信息模块中存储的第一目标地址。其中,若在上述步骤S102中,读写逻辑模块向SRAM信息模块申请了新的空闲存储 单元,则将在步骤SlOl中获取的第一目标地址和该新的空闲存储单元作为用于存储当前 目标数据的存储空间,将目标数据先从第一目标地址开始写入,当第一目标地址所在的存 储单元写满时,向新申请的空闲存储单元中连续写入剩余数据。完成数据写入后,更新SRAM 信息模块中所存储的对应于该目标数据的第一目标地址。在上述写入数据流程中,可根据目标数据的大小重复多次执行步骤S102,即,读写 逻辑模块申请了空闲存储单元后,将目标数据的大小与第一目标地址对应的存储空间及该 空闲存储单元的总大小进行比较,若目标数据的大小仍大于第一目标地址对应的存储空间 及该空闲存储单元的总大小,则可再次向SRAM信息模块申请空闲存储单元。如图5所示,该数据缓存管理方法的读取数据方法包括步骤S201,读写逻辑模块从SRAM信息模块获取存储目标数据的第二目标地址。其中,读写逻辑模块对SRAM信息模块进行查询,获取SRAM信息模块中存储的、存 储有目标数据的第二目标地址。该第二目标地址例如为存储有目标数据的首个地址空间。步骤S202,从第二目标地址对应的存储空间读取目标数据。其中,读写逻辑模块根据第二目标地址,例如查找到DRAM中存储目标数据的首个 字节,并从该字节开始读取出目标数据。该读取过程可以为一次性读取整个存储单元的内 容,也可以为连续多次读取该存储单元中不同字节所存储的内容。优选为一次性读取,采用 此方式读取可具有很高的效率。根据上述实施例的数据缓存管理方法,由于首先获取第一目标地址,当该目标数 据的大小超过SRAM信息模块中记载的第一目标地址对应的存储单元的可用存储空间的大 小时,会申请新的存储单元,连续向该第一目标地址对应的存储单元及新申请的存储单元 中存取目标数据,即实现了将目标数据存储在连续的存储单元中,通过采用这种数据写入 方式,可大幅缩减目标数据所占用的存储单元数量,使得在读出数据时,可减少从SRAM信息模块中查询存储目标数据的地址的操作,无需频繁地进行跨存储单元操作,提高了读取 数据的效率。进一步地,在上述实施例的数据缓存管理方法中,从所述第二目标地址对应的存 储空间读取所述目标数据之后,还包括将第二目标地址所在的存储单元标识为空闲存储 单元。根据上述实施例的数据缓存管理方法,能够在读取目标数据后,及时释放存储该 目标数据的存储单元,以使该存储单元可在后续操作中用于缓存其他数据,充分利用DRAM 的存储资源。进一步地,在上述实施例的数据缓存管理方法中,写入目标数据时,读写逻辑模块 从SRAM信息模块获取用于写入目标数据的第一目标地址的步骤包括读写逻辑模块根据 目标数据携带的队列标识,从SRAM信息模块获取与队列标识对应的尾部存储单元地址指 针和尾部偏移地址。在读取目标数据时,读写逻辑模块从SRAM信息模块获取第二目标地址的步骤包 括读写逻辑模块根据目标数据携带的队列标识,从SRAM信息模块获取与队列标识对应的 头部存储单元的地址指针和头部偏移地址。图6为SRAM信息模块的存储结构示意图。下面结合图6对上述步骤进行具体说 明。如图6所示,SRAM信息模块中存储有以下内容链表尾部表T,用于保存队列(例如为256K个队列)的尾部存储单元地址指针;链表头部表H,用于保存队列(例如为256K个队列)的头部存储单元地址指针;空闲存储单元表C,用于保存空闲的存储单元标签。这是一个FIFO结构,初始状态 下,提供存储单元(例如为511个),如果对应IGByte的DDR3地址空间,那么一个存储单 元对应I存储空间;存储单元指针P,包括存储单元指针(例如为511个),用于保存各指针所对应的 存储单元的下一个存储单元的指针;尾部偏移地址表TS,用于保存队列(例如为256K个队列)的尾部偏移地址,即尾 部存储单元的当前的写指针,通过该指针,将数据写入到尾部存储单元;头部偏移地址表HS,用于保存队列(例如为256K个队列)的头部偏移地址,即头 部存储单元的当前的读指针,通过该指针,将数据从头部存储单元读出;空标识E,用于保存队列(例如为256K个队列)的空标识信息,0表示该队列为空; 1表示该队列为非空。其中,链表尾部表T、链表头部表H、尾部偏移地址表TS和头部偏移地址表HS都不 需要进行设置,只需要在读写操作过程中进行更新;空闲存储单元表C、存储单元指针P和 空标识E,只要进行初始化操作即可,具体为存储单元指针P初始化为0,表示没有指向任 何存储单元;空标识E初始化为0,标识队列为空。当在基于SRAM工艺的现场可编程门阵 列(Programmablefeite Array,简称FPGA)芯片内部中实现该数据缓存管理方法时,存储单 元指针P和空标识E也不需进行初始化操作,因为在初始阶段,各个存储单元的初值均为0 ; 需对空闲存储单元表C进行初始化,其在初始阶段应该存放着所有的空闲存储单元的地址 指针,即SRAM信息模块所包含的全部队列信息(例如为256K个)的存储单元的地址指针, 即将空闲存储单元表C的256K地址空间依次写为0 沈2143,分别标识存储单元0 存储单元沈2143。可见,在该数据缓存管理方法中,对SRAM信息模块的预先配置极为简单。具体地,当目标数据为数据队列时,该目标数据携带有与该数据队列唯一对应的 队列标识,例如为队列号(Queue ID,以下简称QID)。写入数据时,读写逻辑根据QID对SRAM 信息模块进行查询,其查询SRAM信息模块中的链表尾部表T,读取与该QID对应的尾部存储 单元地址指针,并查询尾部偏移地址表TS,读取与该QID对应的尾部偏移地址。读写逻辑模 块根据该尾部存储单元地址指针,找到DRAM中用于存储该数据队列的尾部存储单元,并根 据该尾部偏移地址,找到在该尾部存储单元中可用于当前进行写数据操作的具体地址,该 地址为DRAM中所存储的该数据队列的最末字节的下一字节。因此,通过上述步骤,能够使 在不同时间写入的、属于同一数据队列的数据连续存储在DRAM中。进一步地,当写完全部数据后,该数据的尾部即为与该QID对应的队列尾部,将写 入数据尾部的存储单元的地址指针,设置为链表尾部表T中与该QID对应的尾部存储单元 地址指针(若此次写入数据未向SRAM信息模块申请新的存储单元,则该尾部存储单元地址 指针与写入数据前未发生改变,若此次写入数据向SRAM信息模块申请了一个或多个新的 存储单元,则该尾部存储单元地址指针发生改变);并根据结束数据写入时写入指针的具 体位置来更新尾部偏移地址表TS中的与该QID对应的尾部偏移地址。读取目标数据时,读写逻辑根据QID对SRAM信息模块进行查询,其查询SRAM信息 模块中的链表头部表,读取与该QID对应的头部存储单元地址指针,并查询头部偏移地址 表HS,读取与该QID对应的头部偏移地址。读写逻辑模块根据该头部存储单元地址指针和 头部偏移地址,找到DRAM中用于存储该数据队列的首个存储地址,将该头部存储单元中的 内容全部读出。进一步地,在读出该头部存储单元中的内容后,可将该头部存储单元标识为空闲 存储单元,即将该头部存储单元地址指针存储到SRAM信息模块中的空闲存储单元表C中; 并从SRAM信息模块中的存储单元指针P中查找到该头部存储单元的地址指针所对应的下 一跳存储单元的地址指针,并将该存储单元的地址指针存储到链表头部表中、与该QID对 应的位置,即将该存储单元的地址指针设置为该QID的头部存储单元地址指针。根据上述实施例的数据缓存管理方法,由于对各队列分别通过头部存储单元地址 指针和尾部存储单元地址指针来对其进行标识,从而可以快速的写入或读取数据;并且可 以看出,由于在SRAM信息模块中,各个队列都是采用链表的形式进行组织的,流量大的队 列,在缓存中数据较多,链表较长;流量小的队列,在缓存中数据较少,链表较短。因此使得 缓存空间在各个队列之间灵活分配,流量大的队列占有用较多的缓存单元,流量小的队列 占有用较少的缓存单元。因此,上述实施例的数据缓存管理方法尤其适用于数据队列较多、且各数据队列 的流量区别很大的复杂的分布式系统。进一步地,在上述实施例的数据缓存管理方法中,在读写逻辑模块从SRAM信息模 块获取用于写入目标数据的第一目标地址之前,还包括数据合并/拆分模块对根据目标数据携带的队列标识对目标数据进行暂存,并当 目标数据达到预设的输出条件时,将目标数据输出至读写逻辑模块,以进行写入目标数据 操作。具体地,该数据合并/拆分模块是进行数据缓存管理中的用于进行数据暂存的数10据暂存模块,通过对数据进行暂存来实现在数据写入过程中的数据合并和在数据读取过程 中的数据拆分。在数据写入过程中,应用逻辑将带有QID信息的数据发送给数据合并/拆分模块; 该数据合并/拆分模块将数据缓存在模块内部的暂存数据表中与该QID对应的区域,如果 该QID对应的数据在暂存数据表中累计达到一定的量(一个存储单元),或者数据在暂存数 据表中存放超过预定的时间,则将数据发送给读写逻辑,并随数据标识QID和数据长度。在数据读取过程中,从第二目标地址对应的存储空间读取目标数据的步骤之后, 还包括将目标数据发送至数据合并/拆分模块,以对目标数据进行拆分,即数据合并/拆 分模块将接收到的一个存储单元左右的数据拆分为数据包,依次按照数据包发送给应用逻 辑。通过这种合并和拆分,能够实现在DRAM接口上的连续的地址操作,从而大大提高 DRAM接口的带宽利用率。在该数据合并/拆分模块中,数据合并是指输入到该模块的数据,被按照QID来进 行组织暂存。对应于各QID的数据,存放在一个连续的地址空间中。QID有256K,但在此模 块中不需划分256K个数据区来存放各QID对应的数据,由于在实际的业务流量数据中,动 态并存的队列数大约只有几百个,因此可将该数据合并/拆分模块中的同一时刻存在于暂 存数据表中的队列数设置为IK个。该数据合并/拆分模块包括数据合并功能模块和数据拆分功能模块。图7为数据 合并功能模块的结构示意图。如图7所示,该数据合并功能模块包括QID与暂存ID对应 表;暂存信息表;暂存数据表、空闲暂存ID表、仲裁单元和合并输出单元。其中QID与暂存ID对应表用来实现QID到暂存ID的查找。这里实现一个256KX IObit 的表项;空闲暂存ID表用来保存没有被使用的暂存ID ;暂存信息表用来保存特定ID所对应的缓存信息,例如起始指针、尾部指针、数据 水线等等;暂存数据表按照暂存ID,进行数据暂存;仲裁单元,首先暂存信息表中的各个暂存ID,如果某个暂存ID队列符合输出条件 则,则将暂存ID发送给合并输出模块;其次,判定如果某个暂存ID队列为空,则将暂存ID 回收发送给空闲暂存ID表;合并输出单元,根据仲裁单元发送过来的暂存ID,从暂存数据表中读取数据发送 给读写逻辑模块。数据合并的操作过程如下步骤Sl 获取数据QID,根据QID从QID与暂存ID对应表中查找暂存ID ;如果没 有找到,则进入步骤S2 ;如果找到则进入步骤S3 ;步骤S2 从空闲暂存ID表中获得一个空闲暂存ID,分配给当前QID,并更新QID与 缓存ID对应表;步骤S3 根据暂存ID,从暂存信息表中获取指针等暂存ID队列信息,并将数据写 入到缓存数据表中。通过数据合并过程,就实现了同一类QID的数据被连续积累在暂存数据表中。在实现了数据合并后,合并输出模块完成合并数据的输出,具体步骤如下步骤S4 合并输出模块依次扫描暂存信息表,核实每个暂存ID队列是否符合输出 条件;步骤S5 如果某暂存ID队列的数据超过一个存储单元或者其存储时间超过一定 的上限,则将该存储ID输出;步骤S6 合并输出模块根据这个暂存ID,从暂存数据表中读出数据发送给读写逻 辑模块。进一步地,在上述实施例的数据缓存管理方法中,读写逻辑模块从SRAM信息模块 获取目的存储单元的地址的步骤可具体包括根据目标数据携带的队列标识从SRAM信息 模块查询队列标识对应的数据队列是否为空,若为空,则从所述SRAM信息模块中维护的空 闲存储单元信息模块中读取空闲存储单元的地址作为第一目标的地址;若为非空,则获取 所述数据队列的第一目标地址。具体地,读写逻辑模块获取目标数据对应的QID,根据该QID对SRAM信息模块中 所存储的空标识E进行查询,以获知当前DRAM中所存储的与该QID对应的数据队列是否为 空。若E[QID]为0,则表示为空,即该队列在DRAM中不占用缓存空间,此时为该数据队列分 配存储单元地址,即SRAM信息模块中的空闲存储单元表C中的某一存储单元地址指针Pw 分配给该数据队列,具体为,将该Pw写为与该数据队列的QID对应的尾部存储单元地址指 针(即写T[QID] =Pw)及头部存储单元地址指针(即写H[QID] = Pw),尾部偏移地址写 0(即写TS[QID] =0),并将E [QID]写为1(即写E [QID] ==1);将若E [QID]为1,则表示 不为空,此时按照上述实施例的方式获取用于写入目标数据的第一目标地址。本发明的数据缓存管理方法采用了流水操作,分割了写入数据和读取数据的复杂 流程,使得数据缓存管理不会成为数据操作的带宽瓶颈。图8为根据本发明数据缓存管理方法的读写逻辑模块写入数据流程图。如图8所 示,读写逻辑模块得到要写入的目标数据的QID,查询SRAM信息模块中是否存在E[QID]= =0,若存在,则从空闲存储单元表C申请存储单元指针Pw,并在SRAM信息模块中对该数据 队列进行相应的写操作,即写T[QID] = Pw、写H[QID] = Pw、HS[QID] = 0、TS[QID] = 0并 写E[QID] == 1,之后,开始将数据写入与该存储单元对应的DRAM空间。若不存在E[QID] ==0,则读取T[QID]的内容到Pw’、读取TSWID]的内容到1^’,并判断要写入的目标数据 的帧长与Ps’的和是否大于该存储单元的大小,若不大于,则开始将数据写入与该存储单元 对应的DRAM空间;若大于,则从空闲存储单元表C申请存储单元指针Pn,并开始将数据写 入与Pw’和Pn对应的DRAM空间。在将数据写入存储单元的过程中,每写入一个数据,判断Ps(或1^’ )是否等于存 储单元的大小,若等于,则令Pw(或Pw’ )等于Pn,即开始向Pn对应的存储单元写数据,对 Ps (或1^’ )执行加1操作,并判断是否全部数据写入完毕;若Ps (或1^’ )不等于存储单 元的大小,则直接对I3S (或1^’)执行加1操作,并判断是否全部数据写入完毕。若判断结 果为未完成全部数据的写入,则再次执行将数据写入存储单元的步骤;若判断结果为已完 成,则将Pn写入Pw或Pw’)对应的SRAM信息模块,即写T[QID] = Pn, TS[QID] = Ps (或 Ps')。由上述流程可以看出,输入的数据被写入连续的存储单元中,如果超过当前的存储单元,则申请新的存储单元。这样就提高了 DRAM的资源利用率,也提高了读取数据的效率。图9为根据本发明数据缓存管理方法的读写逻辑模块读取数据流程图。如图9所 示,读写逻辑模块得到要读取的目标数据的QID,根据该QID读取H[QID]的内容到头部存储 单元地址指针Pr,根据该QID读取HS [QID]的内容到I3S,读取I^r+Ps对应的DRAM地址空间 的内容(优选为一个大于观字节的数据),之后,从SRAM信息模块的存储单元指针P中读 取ft·对应的下一跳存储单元Po,并将ft·指针保存到SRAM信息模块的的空闲存储单元表C 中。判断是否有Po = = 0,若是,则写E [QID] = 0,并结束流程;若否,则写Po = H[QID], 并再次重复该写入数据流程,直至判断获知Po == 0。由上述流程可以看出,对于每个队列,一次性读出整个存储单元的数据,由于连续 读取的数据越多,接口带宽的利用率越高,因此采用上述流程进行数据读取可极大地提高 DRAM接口的带宽利用率。根据本发明的另一方面,还提供了一种数据缓存管理装置。该数据缓存管理 装置可以设置在FPGA芯片内部,也可以设计在通用芯片器件(Application Specific Integrated Circuit,简称ASIC)芯片内部。图10为本发明数据缓存管理装置的结构示意 图。如图10所示,本发明数据缓存装置包括读写逻辑模块10、SRAM信息模块20和DRAM控 制模块30。读写逻辑模块10,用于根据数据写入请求/数据读取请求写入目标数据或读取目 标数据;在写入目标数据时,从SRAM信息模块20获取用于写入目标数据的第一目标地址, 若判断获知目标数据大于第一目标地址对应的存储单元的可用存储空间,则从SRAM信息 模块20获取空闲存储单元的地址指针,将目标数据连续写入第一目标地址对应的存储空 间和空闲存储单元,并更新SRAM信息模块中存储的第一目标地址;在读取目标数据时,读 写逻辑模块10从SRAM信息模块20获取存储目标数据的第二目标地址,并从第二目标地址 对应的存储空间读取目标数据;SRAM信息模块20,用于存储第一目标地址、第二目标地址和空闲存储单元的地址 指针;该SRAM信息模块20可实现在FPGA内部,也可实现在QDRII等这类片外SRAM芯片中。DRAM控制模块30,用于在所述读写逻辑模块写入或读取目标数据后,向所述读写 逻辑模块提供所述第一目标地址、第二目标地址及所述空闲存储单元的地址,以使所述读 写逻辑模块对所述SRAM信息模块进行更新。根据上述实施例的数据缓存管理装置,由于读写逻辑模块10在数据写入时,首先 获取第一目标地址,该目标地址为在先相应的数据写入的结束地址,并当该目标数据的大 小超过SRAM信息模块20中记载的第一目标地址对应的存储单元中可用存储空间的大小 时,会申请新的存储单元,并连续向该第一目标地址对应的存储单元及新申请的存储单元 中存取目标数据,实现了将目标数据存储在连续的存储单元中;通过读写逻辑模块10采用 的这种数据写入方式,能够大幅缩减相应目标数据所占用的存储单元数量,使得其在读出 数据时,可减少从SRAM信息模块20中查询存储单元的地址指针的操作,无需频繁地进行跨 存储单元操作,提高了读取数据的效率。进一步地,在上述实施例的数据缓存管理装置中,读写逻辑模块还用于在从第二目标地址对应的存储空间读取目标数据之后,将第二目标地址所在的存储单元标识为空闲 存储单元。进一步地,在上述实施例的数据缓存管理装置中,读写逻辑模块还用于根据目标 数据携带的队列标识,从SRAM信息模块获取与队列标识对应的尾部存储单元地址指针和 尾部偏移地址。进一步地,在上述实施例的数据缓存管理装置中,读写逻辑模块还用于将空闲存 储单元的地址指针设置为与队列标识对应的尾部存储单元地址指针,并将完成目标数据的 写入的尾部偏移地址设置为与队列标识对应的尾部偏移地址。进一步地,在上述实施例的数据缓存管理装置中,SRAM信息模块包括尾部存储单元信息模块,用于存储数据队列的尾部存储单元地址指针;尾部偏移地址信息模块,用于存储数据队列的尾部偏移地址;头部存储单元信息模块,用于存储数据队列的尾部存储单元地址指针;头部偏移地址信息模块,用于存储数据队列的头部偏移地址;存储单元信息模块,用于存储各存储单元所对应的下一跳存储单元的地址指针;空闲存储单元信息模块,用于存储空闲存储单元的地址指针。进一步地,在上述实施例的数据缓存管理装置中,SRAM信息模块还包括队列空 标识信息模块,用于存储所述数据队列的空标识信息。进一步地,在上述实施例的数据缓存管理装置中,读写逻辑模块还用于从SRAM信 息模块的队列空标识信息模块中,获取目标数据对应的数据队列的空标识信息,若为空,从 SRAM信息模块中维护的空闲存储单元信息模块中读取空闲存储单元的地址作为第一目标 的地址;若为非空,则获取数据队列的第一目标地址。进一步地,在上述实施例的数据缓存管理装置中,读写逻辑模块还用于根据目标 数据携带的队列标识,从SRAM信息模块获取与队列标识对应的头部存储单元地址指针和 头部偏移地址。进一步地,在上述实施例的数据缓存管理装置中,读写逻辑模块还用于将头部存 储单元地址指针写入SRAM信息模块中维护的空闲存储单元信息模块;将头部存储单元的 下一跳存储单元的地址指针设置为头部存储单元地址指针。进一步地,在上述实施例的数据缓存管理装置中,还包括数据合并/拆分模块,与读写逻辑模块连接,用于根据目标数据携带的队列标识 将对应于数据写入请求的目标数据进行暂存,并当目标数据达到预设的输出条件时,将目 标数据输出至读写逻辑模块,以进行写入目标数据操作;还用于将读写逻辑模块响应于数 据读取请求所读取的目标数据进行拆分。最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽 管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然 可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替 换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精 神和范围。1权利要求
1.一种数据缓存管理方法,其特征在于,包括在写入目标数据时,读写逻辑模块从SRAM信息模块获取用于写入目标数据的第一目 标地址,若判断获知所述目标数据大于所述第一目标地址对应的存储单元的可用存储空 间,则从所述SRAM信息模块获取空闲存储单元的地址指针,将所述目标数据连续写入所述 第一目标地址对应的存储空间和所述空闲存储单元,并更新所述SRAM信息模块中存储的 第一目标地址;在读取目标数据时,读写逻辑模块从SRAM信息模块获取存储所述目标数据的第二目 标地址,并从所述第二目标地址对应的存储空间读取所述目标数据。
2.根据权利要求1所述的数据缓存管理方法,其特征在于,从所述第二目标地址对应 的存储空间读取所述目标数据之后,还包括将所述第二目标地址所在的存储单元标识为 空闲存储单元。
3.根据权利要求1或2所述的数据缓存管理方法,其特征在于,所述读写逻辑模块从 SRAM信息模块获取用于写入目标数据的第一目标地址的步骤包括所述读写逻辑模块根据所述目标数据携带的队列标识,从所述SRAM信息模块获取与 所述队列标识对应的尾部存储单元地址指针和尾部偏移地址。
4.根据权利要求3所述的数据缓存管理方法,其特征在于,更新所述SRAM信息模块中 存储的第一目标地址的步骤包括将所述空闲存储单元的地址指针设置为与所述队列标识对应的尾部存储单元地址指 针,并将完成所述目标数据的写入的尾部偏移地址设置为与所述队列标识对应的尾部偏移 地址。
5.根据权利要求1或2所述的数据缓存管理方法,其特征在于,在读写逻辑模块从 SRAM信息模块获取用于写入目标数据的第一目标地址之前,还包括数据合并/拆分模块对根据所述目标数据携带的队列标识对所述目标数据进行暂存, 并当所述目标数据达到预设的输出条件时,将所述目标数据输出至所述读写逻辑模块,以 进行写入目标数据操作。
6.根据权利要求1或2所述的数据缓存管理方法,其特征在于,读写逻辑模块从SRAM 信息模块获取第一目标地址的步骤包括 根据所述目标数据携带的队列标识从所述SRAM信息模块查询所述队列标识对应的数 据队列是否为空,若为空,则从所述SRAM信息模块中维护的空闲存储单元信息模块中读取 空闲存储单元的地址作为第一目标的地址;若为非空,则获取所述数据队列的第一目标地 址。
7.根据权利要求2所述的数据缓存管理方法,其特征在于,在读取目标数据时,所述读 写逻辑模块从SRAM信息模块获取存储所述目标数据的第二目标地址的步骤包括所述读写逻辑模块根据所述目标数据携带的队列标识,从所述SRAM信息模块获取与 所述队列标识对应的头部存储单元地址指针和头部偏移地址。
8.根据权利要求7所述的数据缓存管理方法,其特征在于,将所述第二目标地址所在 的存储单元标识为空闲存储单元的步骤包括将所述头部存储单元地址指针写入所述SRAM信息模块中维护的空闲存储单元信息模块;将所述头部存储单元的下一跳存储单元的地址指针设置为头部存储单元地址指针。
9.根据权利要求1或2所述的数据缓存管理方法,其特征在于,从所述第二目标地址对 应的存储空间读取所述目标数据的步骤之后,还包括将所述目标数据发送至数据合并/拆分模块,以对所述目标数据进行拆分。
10.一种数据缓存管理装置,其特征在于,包括读写逻辑模块、SRAM信息模块和DRAM控 制模块,其中所述读写逻辑模块,用于根据所述数据写入请求/数据读取请求写入目标数据或读取 目标数据;在写入目标数据时,从SRAM信息模块获取用于写入目标数据的第一目标地址, 若判断获知所述目标数据大于所述第一目标地址对应的存储单元的可用存储空间,则从所 述SRAM信息模块获取空闲存储单元的地址指针,将所述目标数据连续写入所述第一目标 地址对应的存储空间和所述空闲存储单元,并更新所述SRAM信息模块中存储的第一目标 地址;在读取目标数据时,读写逻辑模块从SRAM信息模块获取存储所述目标数据的第二目 标地址,并从所述第二目标地址对应的存储空间读取所述目标数据;所述SRAM信息模块,用于存储所述第一目标地址、第二目标地址和所述空闲存储单元 的地址指针;DRAM控制模块,用于在所述读写逻辑模块写入或读取目标数据后,向所述读写逻辑模 块提供所述第一目标地址、第二目标地址及所述空闲存储单元的地址,以使所述读写逻辑 模块对所述SRAM信息模块进行更新。
11.根据权利要求10所述的数据缓存管理装置,其特征在于,所述读写逻辑模块还用 于在从所述第二目标地址对应的存储空间读取所述目标数据之后,将所述第二目标地址所 在的存储单元标识为空闲存储单元。
12.根据权利要求10所述的数据缓存管理装置,其特征在于,所述读写逻辑模块还用 于根据所述目标数据携带的队列标识,从所述SRAM信息模块获取与所述队列标识对应的 尾部存储单元地址指针和尾部偏移地址。
13.根据权利要求12所述的数据缓存管理装置,其特征在于,所述读写逻辑模块还用 于将所述空闲存储单元的地址指针设置为与所述队列标识对应的尾部存储单元地址指针, 并将完成所述目标数据的写入的尾部偏移地址设置为与所述队列标识对应的尾部偏移地 址。
14.根据权利要求10所述的数据缓存管理装置,其特征在于,所述SRAM信息模块包括尾部存储单元信息模块,用于存储数据队列的尾部存储单元地址指针; 尾部偏移地址信息模块,用于存储所述数据队列的尾部偏移地址; 头部存储单元信息模块,用于存储所述数据队列的尾部存储单元地址指针; 头部偏移地址信息模块,用于存储所述数据队列的头部偏移地址; 存储单元信息模块,用于存储各存储单元所对应的下一跳存储单元的地址指针; 空闲存储单元信息模块,用于存储所述空闲存储单元的地址指针。
15.根据权利要求14所述的数据缓存管理装置,其特征在于,所述SRAM信息模块还包括队列空标识信息模块,用于存储所述数据队列的空标识信息。
16.根据权利要求15所述的数据缓存管理装置,其特征在于,所述读写逻辑模块还用 于从所述SRAM信息模块的队列空标识信息模块中,获取所述目标数据对应的数据队列的 空标识信息,若为空,从所述SRAM信息模块中维护的空闲存储单元信息模块中读取空闲存 储单元的地址作为第一目标的地址;若为非空,则获取所述数据队列的第一目标地址。
17.根据权利要求11所述的数据缓存管理装置,其特征在于,所述读写逻辑模块还用 于根据所述目标数据携带的队列标识,从所述SRAM信息模块获取与所述队列标识对应的 头部存储单元地址指针和头部偏移地址。
18.根据权利要求17所述的数据缓存管理装置,其特征在于,所述读写逻辑模块还用 于将所述头部存储单元地址指针写入所述SRAM信息模块中维护的空闲存储单元信息模 块;将所述头部存储单元的下一跳存储单元的地址指针设置为头部存储单元地址指针。
19.根据权利要求10所述的数据缓存管理装置,其特征在于,还包括数据合并/拆分模块,与所述读写逻辑模块连接,用于根据所述目标数据携带的队列 标识将对应于所述数据写入请求的所述目标数据进行暂存,并当所述目标数据达到预设的 输出条件时,将所述目标数据输出至所述读写逻辑模块,以进行写入目标数据操作;还用于 将所述读写逻辑模块响应于所述数据读取请求所读取的所述目标数据进行拆分。
全文摘要
本发明提供一种数据缓存管理方法及装置。该数据缓存管理方法包括在写入目标数据时,读写逻辑模块从SRAM信息模块获取用于写入目标数据的第一目标地址,若判断获知所述目标数据大于所述第一目标地址对应的存储单元的可用存储空间,则从所述SRAM信息模块获取空闲存储单元的地址指针,将所述目标数据连续写入所述第一目标地址对应的存储空间和所述空闲存储单元,并更新所述SRAM信息模块中存储的第一目标地址;在读取目标数据时,读写逻辑模块从SRAM信息模块获取存储所述目标数据的第二目标地址,并从所述第二目标地址对应的存储空间读取所述目标数据。本发明的数据缓存管理方法及装置能够提高大幅提高缓存效率并节省缓存空间。
文档编号H04L12/56GK102045258SQ201010601468
公开日2011年5月4日 申请日期2010年12月22日 优先权日2010年12月22日
发明者彭鼎祥 申请人:北京星网锐捷网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1