G06F13/40
1.网络数据包缓存空间ID管理单元,其特征在于,包括:部件请求预处理模块、BID申请请求FIFO模块、BID释放请求FIFO模块、BID申请请求处理模块、BID释放请求处理模块、申请BID读接口控制模块、释放BID写接口控制模块、申请应答分发模块、释放应答分发模块;
部件请求预处理模块:请求输入端接外部对应部件的请求输出端,申请请求输出端接BID申请请求FIFO模块的申请请求输入端,释放请求输出端接BID释放请求FIFO模块的释放请求输入端,
BID申请请求FIFO模块:申请请求输出端接BID申请请求处理模块的输入端,
BID申请请求处理模块:应答输出端接申请应答分发模块输入端,BID应急申请请求输出端接BID释放请求处理模块的BID应急申请请求输入端,总线读请求输出端接申请BID读接口控制模块输入端,
BID释放请求FIFO模块:释放请求输出端接BID释放请求处理模块的输入端,
BID释放请求处理模块:应答输出端接释放应答分发模块输入端,应急申请BID输出端接BID申请请求处理模块的应急申请BID输入端,总线写请求输出端接释放BID写接口控制模块输入端,
申请BID读接口控制模块:输出端与AXI总线的读接口相接,
释放BID写接口控制模块:输出端与AXI总线的写接口相接;
所述部件请求预处理模块解析部件请求信号后将BID申请请求以预定的申请请求包格式缓存在BID申请请求FIFO模块中或将BID释放请求以预定的释放请求包格式缓存在BID释放请求FIFO模块中,所述BID申请请求处理模块仲裁各部件的BID申请请求后执行与网络报文长度对应的BID申请操作,申请应答分发模块根据输入的申请请求信息将申请的BID分发至外部对应部件,所述BID释放请求处理模块仲裁各部件的BID释放请求后执行与网络报文长度对应的BID释放操作,所述释放应答分发模块根据输入的释放请求信息将释放的BID分发至外部对应部件,所述申请BID读接口控制模块仲裁BID申请请求处理模块的总线读请求后通过AXI总线访问片外DDR3SDRAM,所述释放BID写接口控制模块仲裁BID释放请求模块的总线写请求后通过AXI总线访问片外DDR3SDRAM。
2.根据权利要求1所述的网络数据包缓存空间ID管理单元,其特征在于,
部件请求预处理模块包括与外部各部件对应的功能、逻辑一致且相互独立的请求预处理子模块,BID申请请求FIFO模块包括与外部各部件对应的功能、逻辑一致且相互独立的BID申请请求FIFO子模块,BID释放请求FIFO模块包括与外部各部件对应的功能、逻辑一致且相互独立的BID释放请求FIFO子模块;
所述各部件对应的请求预处理子模块:申请请求输出端接BID申请请求FIFO子模块的申请请求输入端,释放请求输出端接BID释放请求FIFO子模块的释放请求输入端;
各部件对应的请求预处理子模块解析对应部件的请求信号后将BID申请请求以预定的申请请求包格式缓存在对应部件的BID申请请求FIFO子模块中,或将BID释放请求以预定的释放请求包格式缓存在对应部件的BID释放请求FIFO子模块中。
3.根据权利要求2所述的网络数据包缓存空间ID管理单元,其特征在于,
BID申请请求处理模块包括与网络报文长度对应的功能、逻辑一致且相互独立的BID申请请求处理子模块,各BID申请请求处理子模块采用交叉互连方式接收来自各部件的BID申请请求;
各BID申请请求处理子模块均包括BID申请请求仲裁子模块以及BID申请FIFO控制子模块,BID申请FIFO控制子模块包括与网络报文长度对应的预申请缓存空间ID队列,BID申请请求仲裁子模块的请求输入端与各BID申请请求FIFO子模块的请求输出端连接,BID申请请求仲裁子模块的仲裁结果输出端与BID申请FIFO控制子模块的请求输入端连接,BID申请FIFO控制子模块的应答输出端与申请请求应答分发模块输入端连接,BID申请FIFO控制子模块的总线读请求输出端与申请BID读接口控制模块输入端连接;
所述BID申请请求仲裁子模块对发出BID申请请求的部件进行仲裁确定申请请求的执行部件,所述BID申请FIFO控制子模块在预申请缓存空间ID队列非空时根据BID申请请求仲裁子模块的仲裁结果从预申请缓存空间ID队列中申请一个缓存空间ID,BID申请FIFO控制子模块将申请的缓存空间ID连同该申请请求的其它信息一起输出给申请应答分发模块。
4.根据权利要求3所述的网络数据包缓存空间ID管理单元,其特征在于,
BID释放请求处理模块包括与网络报文长度对应的功能、逻辑一致且相互独立的BID释放请求处理子模块,各BID释放请求处理子模块采用交叉互连方式接收来自各部件的BID释放请求;
各BID释放请求处理子模块均包括BID释放请求仲裁子模块以及BID释放FIFO控制子模块,BID释放FIFO控制子模块包括与网络报文长度对应的待释放缓存空间ID队列,BID释放请求仲裁子模块的请求输入端与各BID释放请求FIFO子模块的请求输出端连接,BID释放请求仲裁子模块的仲裁结果输出端与BID释放FIFO控制子模块的请求输入端连接,BID释放FIFO控制子模块的应答输出端与释放请求应答分发模块输入端连接,BID释放FIFO控制子模块的总线写请求输出端与释放BID写接口控制模块输入端连接,BID释放FIFO控制子模块的BID应急申请请求输入端接BID申请FIFO控制子模块的BID应急申请请求输出端,BID释放FIFO控制子模块的应急申请BID输出端接BID申请FIFO控制子模块的应急申请BID输入端;
所述BID释放请求仲裁子模块对发出BID释放请求的部件进行仲裁确定释放请求的执行部件,所述BID释放FIFO控制子模块根据BID释放请求仲裁子模块的仲裁结果将需释放的缓存空间ID释放到待释放缓存空间ID队列中,BID释放FIFO控制子模块将需释放的缓存空间ID连同该释放请求的其它信息一起输出给释放应答分发模块,BID申请FIFO控制子模块在预申请缓存空间ID队列为空时从相同网络报文长度对应的待释放缓存空间ID队列中申请一个缓存空间ID,BID申请FIFO控制子模块将申请的缓存空间ID连同该申请请求的其它信息一起输出给申请应答分发模块。
5.根据权利要求3或4所述的网络数据包缓存空间ID管理单元,其特征在于,BID申请请求仲裁子模块采用可配置权重固定优先级仲裁算法确定申请请求的执行部件,BID释放请求仲裁子模块采用可配置权重固定优先级仲裁算法确定释放请求的执行部件,可配置权重固定优先级仲裁算法具体为:
根据各部件的业务类型及请求频率配置初始权重值和权重调整使能初值,依据初始权重值由高至低的顺序依次仲裁各部件,仲裁过的部件其权重值减1,待各部件权重减为0后重置初始权重值并进入下一轮仲裁;
其中,
对于权重值相等的部件按照固定优先级仲裁,
权重调整使能值为1的部件在其权重值减为0时发生仲裁请求而其余部件无请求其权重值加1,
权重值为0的部件不得参与仲裁。
6.根据权利要求3或4所述的网络数据包缓存空间ID管理单元,其特征在于,所述BID申请FIFO控制子模块通过申请BID读接口控制模块读取挂在AXI总线上的片外DDR3SDRAM中的缓存空间ID,BID释放FIFO控制子模块通过释放BID写接口控制模块写入缓存空间ID到挂在AXI总线上的片外DDR3SDRAM中,在芯片上电复位时根据网络报文长度将DDR3SDRAM存储颗粒中存储区域划分不同固定大小的缓存空间及对应的缓存空间ID标签区,采用两级FIFO加速方法对各大小BID标签区间进行管理,具体步骤为:
在各网络报文长度对应的BID申请FIFO控制子模块需申请BID时,从对应网络报文长度的预申请缓存空间ID队列中读出BID;
在各网络报文长度对应的BID释放FIFO控制子模块需释放BID时,向对应网络报文长度的待释放缓存空间ID队列中写入BID;在有网络报文长度对应的预申请缓存空间ID队列中的BID数量低于低阈值线时,该网络报文长度对应的BID申请FIFO控制子模块向申请BID读接口控制模块发起读请求,申请BID读接口控制模块向挂在AXI总线上的DDR3SDRAM发起Burst读操作,该网络报文长度对应的BID申请FIFO控制子模块将读回的BID写入到对应网络报文长度的预申请缓存空间ID队列中;
在有网络报文长度对应的待释放缓存空间ID队列中的BID数量高于高阈值线时,该网络报文长度对应的BID释放FIFO控制子模块向BID写接口控制模块发起写请求,释放BID写接口控制模块向挂在AXI总线上的DDR3SDRAM发起Burst写操作,该网络报文长度对应的BID释放FIFO控制子模块将需释放的缓存空间ID写入到DDR3SDRAM对应网络报文长度的缓存空间ID标签区。
7.根据权利要求6所述的网络数据包缓存空间ID管理单元,其特征在于,申请BID读接口控制模块包括申请BID轮询仲裁子模块,申请BID轮询仲裁子模块采用轮询仲裁算法确定批量预申请BID的BID申请请求处理子模块,释放BID写接口控制模块包括释放BID轮询仲裁子模块,释放BID轮询仲裁子模块采用轮询仲裁算法确定批量写回BID的BID释放请求处理子模块。
本发明公开了网络数据包缓存空间ID管理单元,属于网络锁数据处理的技 术领域。
随着互联网的高速发展,互联网已经进入千家万户,人们的生活越来越离不 开网络。网络的出现给人们的生活带来了不可言喻的便利,同时人们对网络数据 处理速度也是提出了越来越高的要求,专用网络处理器ASIC芯片已经逐渐取代 传统的网络数据处理结构。随着人们对网络处理性能要求进一步提高,网络处理 器的处理带宽不断地增大,处理速度也在不停地提高,及其需求高效、快速的缓 存管理机制。由于存储响应速度和存储利用率低下,传统的缓存管理机制逐渐暴 露出其弊端,已经无法满足大数据的高效、高性能、高利用率的缓存要求。
在网络时代的高速发展时代,在一些骨干网络数据处理设备上已经应用高性 能专用网络处理器ASIC芯片来处理大数据。网络处理器在处理网络数据包时需 要把网络数据包缓存在大容量的存储芯片中,由于网络数据包分层次处理、大小 长短不一、处理协议多样化、传播的杂乱无序,传统的缓存管理机制无法满足大 数据的高效、高性能、高利用率的缓存要求;在网络大数据的时代,低速、功能 单一的缓存管理单元已经成为高性能网络处理器中的瓶颈。一种由硬件实现的高 性能缓存管理单元已经成为网络处理器中追求高速处理网络数据包中不可忽视 的一部分。
因此,网络数据包缓存管理单元在各种网络处理设备中的应用是相当广泛的, 也是高性能网络包处理设备中不可或缺的一环。
本发明所要解决的技术问题是针对上述背景技术的不足,提供了网络数据包 缓存空间ID管理单元,实现了网络处理器中缓存空间ID的高效申请和释放, 明显改善了网络处理器中带宽瓶颈的问题。
本发明为实现上述发明目的采用如下技术方案:
网络数据包缓存空间ID管理单元,包括:部件请求预处理模块、BID申请 请求FIFO模块、BID释放请求FIFO模块、BID申请请求处理模块、BID释放 请求处理模块、申请BID读接口控制模块、释放BID写接口控制模块、申请应 答分发模块、释放应答分发模块;
部件请求预处理模块:请求输入端接外部对应部件的请求输出端,申请请求 输出端接BID申请请求FIFO模块的申请请求输入端,释放请求输出端接BID 释放请求FIFO模块的释放请求输入端,
BID申请请求FIFO模块:申请请求输出端接BID申请请求处理模块的输入 端,
BID申请请求处理模块:应答输出端接申请应答分发模块输入端,BID应急 申请请求输出端接BID释放请求处理模块的BID应急申请请求输入端,总线读 请求输出端接申请BID读接口控制模块输入端,
BID释放请求FIFO模块:释放请求输出端接BID释放请求处理模块的输入 端,
BID释放请求处理模块:应答输出端接释放应答分发模块输入端,应急申请 BID输出端接BID申请请求处理模块的应急申请BID输入端,总线写请求输出 端接释放BID写接口控制模块输入端,
申请BID读接口控制模块:输出端与AXI总线的读接口相接,
释放BID写接口控制模块:输出端与AXI总线的写接口相接;
所述部件请求预处理模块解析部件请求信号后将BID申请请求以预定的申 请请求包格式缓存在BID申请请求FIFO模块中或将BID释放请求以预定的释 放请求包格式缓存在BID释放请求FIFO模块中,所述BID申请请求处理模块 仲裁各部件的BID申请请求后执行与网络报文长度对应的BID申请操作,申请 应答分发模块根据输入的申请请求信息将申请的BID分发至外部对应部件,所 述BID释放请求处理模块仲裁各部件的BID释放请求后执行与网络报文长度对 应的BID释放操作,所述释放应答分发模块根据输入的释放请求信息将释放的 BID分发至外部对应部件,所述申请BID读接口控制模块仲裁BID申请请求处 理模块的总线读请求后通过AXI总线访问片外DDR3SDRAM,所述释放BID 写接口控制模块仲裁BID释放请求模块的总线写请求后通过AXI总线访问片外 DDR3SDRAM。
作为所述网络数据包缓存空间ID管理单元的进一步优化方案,部件请求预 处理模块包括与外部各部件对应的功能、逻辑一致且相互独立的请求预处理子模 块,BID申请请求FIFO模块包括与外部各部件对应的功能、逻辑一致且相互独 立的BID申请请求FIFO子模块,BID释放请求FIFO模块包括与外部各部件对 应的功能、逻辑一致且相互独立的BID释放请求FIFO子模块;
所述各部件对应的请求预处理子模块:申请请求输出端接BID申请请求FIFO 子模块的申请请求输入端,释放请求输出端接BID释放请求FIFO子模块的释放 请求输入端;
各部件对应的请求预处理子模块解析对应部件的请求信号后将BID申请请 求以预定的申请请求包格式缓存在对应部件的BID申请请求FIFO子模块中,或 将BID释放请求以预定的释放请求包格式缓存在对应部件的BID释放请求FIFO 子模块中。
作为所述网络数据包缓存空间ID管理单元的进一步优化方案,BID申请请 求处理模块包括与网络报文长度对应的功能、逻辑一致且相互独立的BID申请 请求处理子模块,各BID申请请求处理子模块采用交叉互连方式接收来自各部 件的BID申请请求;
各BID申请请求处理子模块均包括BID申请请求仲裁子模块以及BID申请 FIFO控制子模块,BID申请FIFO控制子模块包括与网络报文长度对应的预申请 缓存空间ID队列,BID申请请求仲裁子模块的请求输入端与各BID申请请求 FIFO子模块的请求输出端连接,BID申请请求仲裁子模块的仲裁结果输出端与 BID申请FIFO控制子模块的请求输入端连接,BID申请FIFO控制子模块的应 答输出端与申请请求应答分发模块输入端连接,BID申请FIFO控制子模块的总 线读请求输出端与申请BID读接口控制模块输入端连接;
所述BID申请请求仲裁子模块对发出BID申请请求的部件进行仲裁确定申 请请求的执行部件,所述BID申请FIFO控制子模块在预申请缓存空间ID队列 非空时根据BID申请请求仲裁子模块的仲裁结果从预申请缓存空间ID队列中申 请一个缓存空间ID,BID申请FIFO控制子模块将申请的缓存空间ID连同该申 请请求的其它信息一起输出给申请应答分发模块。
作为所述网络数据包缓存空间ID管理单元的进一步优化方案,BID释放请 求处理模块包括与网络报文长度对应的功能、逻辑一致且相互独立的BID释放 请求处理子模块,各BID释放请求处理子模块采用交叉互连方式接收来自各部 件的BID释放请求;
各BID释放请求处理子模块均包括BID释放请求仲裁子模块以及BID释放 FIFO控制子模块,BID释放FIFO控制子模块包括与网络报文长度对应的待释放 缓存空间ID队列,BID释放请求仲裁子模块的请求输入端与各BID释放请求 FIFO子模块的请求输出端连接,BID释放请求仲裁子模块的仲裁结果输出端与 BID释放FIFO控制子模块的请求输入端连接,BID释放FIFO控制子模块的应 答输出端与释放请求应答分发模块输入端连接,BID释放FIFO控制子模块的总 线写请求输出端与释放BID写接口控制模块输入端连接,BID释放FIFO控制子 模块的BID应急申请请求输入端接BID申请FIFO控制子模块的BID应急申请 请求输出端,BID释放FIFO控制子模块的应急申请BID输出端接BID申请FIFO 控制子模块的应急申请BID输入端;
所述BID释放请求仲裁子模块对发出BID释放请求的部件进行仲裁确定释 放请求的执行部件,所述BID释放FIFO控制子模块根据BID释放请求仲裁子 模块的仲裁结果将需释放的缓存空间ID释放到待释放缓存空间ID队列中,BID 释放FIFO控制子模块将需释放的缓存空间ID连同该释放请求的其它信息一起 输出给释放应答分发模块,BID申请FIFO控制子模块在预申请缓存空间ID队 列为空时从相同网络报文长度对应的待释放缓存空间ID队列中申请一个缓存空 间ID,BID申请FIFO控制子模块将申请的缓存空间ID连同该申请请求的其它 信息一起输出给申请应答分发模块。
进一步的,所述网络数据包缓存空间ID管理单元中,BID申请请求仲裁子 模块采用可配置权重固定优先级仲裁算法确定申请请求的执行部件,BID释放请 求仲裁子模块采用可配置权重固定优先级仲裁算法确定释放请求的执行部件,可 配置权重固定优先级仲裁算法具体为:
根据各部件的业务类型及请求频率配置初始权重值和权重调整使能初值,依 据初始权重值由高至低的顺序依次仲裁各部件,仲裁过的部件其权重值减1,待 各部件权重减为0后重置初始权重值并进入下一轮仲裁;
其中,
对于权重值相等的部件按照固定优先级仲裁,
权重调整使能值为1的部件在其权重值减为0时发生仲裁请求而其余部件无 请求其权重值加1,
权重值为0的部件不得参与仲裁。
进一步的,所述网络数据包缓存空间ID管理单元中,BID申请FIFO控制子 模块通过申请BID读接口控制模块读取挂在AXI总线上的片外DDR3SDRAM 中的缓存空间ID,BID释放FIFO控制子模块通过释放BID写接口控制模块写 入缓存空间ID到挂在AXI总线上的片外DDR3SDRAM中,在芯片上电复位时 根据网络报文长度将DDR3SDRAM存储颗粒中存储区域划分不同固定大小的 缓存空间及对应的缓存空间ID标签区,采用两级FIFO加速方法对各大小BID 标签区间进行管理,具体步骤为:
在各网络报文长度对应的BID申请FIFO控制子模块需申请BID时,从对应 网络报文长度的预申请缓存空间ID队列中读出BID;
在各网络报文长度对应的BID释放FIFO控制子模块需释放BID时,向对应 网络报文长度的待释放缓存空间ID队列中写入BID;
在有网络报文长度对应的预申请缓存空间ID队列中的BID数量低于低阈值 线时,该网络报文长度对应的BID申请FIFO控制子模块向申请BID读接口控 制模块发起读请求,申请BID读接口控制模块向挂在AXI总线上的DDR3 SDRAM发起Burst读操作,该网络报文长度对应的BID申请FIFO控制子模块 将读回的BID写入到对应网络报文长度的预申请缓存空间ID队列中;
在有网络报文长度对应的待释放缓存空间ID队列中的BID数量高于高阈值 线时,该网络报文长度对应的BID释放FIFO控制子模块向BID写接口控制模 块发起写请求,释放BID写接口控制模块向挂在AXI总线上的DDR3SDRAM 发起Burst写操作,该网络报文长度对应的BID释放FIFO控制子模块将需释放 的缓存空间ID写入到DDR3SDRAM对应网络报文长度的缓存空间ID标签区。
更进一步的,所述网络数据包缓存空间ID管理单元中,申请BID读接口控 制模块包括申请BID轮询仲裁子模块,申请BID轮询仲裁子模块采用轮询仲裁 算法确定批量预申请BID的BID申请请求处理子模块,释放BID写接口控制模 块包括释放BID轮询仲裁子模块,释放BID轮询仲裁子模块采用轮询仲裁算法 确定批量写回BID的BID释放请求处理子模块。
本发明采用上述技术方案,具有以下有益效果:
(1)缓存空间ID的申请通道与释放通道分离,结合并行兼顾优先级的思想 采用FIFO方式和交叉互连方式,并行执行BID申请、BID释放,提高了处理速 度;
(2)各部件对应的BID申请/释放FIFO子模块与BID申请/释放请求控制子 模块一一对应但逻辑上互补交叉,采用交叉互连的方式实现各部件对不同大小 BID请求的并行处理,比每次只仲裁出一个部件进行申请/释放BID操作要更高 效;
(3)将整个缓存空间根据网络数据包长度的差异性划分为16KB、8KB、4KB、 2KB、1KB、512B、256B、128B、64B大小的区间,每种大小的区间基地址和 区间长度都可由CPU根据实际需求进行实时配置变更,既缓解了缓存空间浪费 的问题,又增强了区间规划的灵活性;
(4)采用简单的FIFO存储机制实现对整个缓存空间ID的乱序管理,结构 简单,硬件易实现,采用两级FIFO加速处理方法,让BID以FIFO的形式存在 DDR3SDRAM中,结合Burst操作进一步提高了BID申请、释放的效率;
(5)当预申请缓存空间ID队列中BID被申请空,而此时待释放缓存空间 ID队列中的BID未达到高阈值线不足以写入DDR3SDRAM中时,预申请缓存 空间ID队列与待释放缓存空间ID队列之间的应急通道可以充分利用完剩余未 被申请的BID。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述 中变得明显,或通过本发明的实践了解到。
图1是缓存空间ID的管理模块的在网络处理器中的位置图。
图2是缓存空间ID的管理模块整体设计结构图。
图3是缓存空间ID的管理模块整体详细设计结构。
图4是两级FIFO加速原理图。
图5是两级FIFO加速实现图。
图6是交叉互连详细结构图。
图7是申请、释放应答分发模块分发示意图。
下面详细描述本发明的实施方式,下面通过参考附图描述的实施方式是示例 性的,仅用于解释本发明,而不能解释为对本发明的限制。
本领域的技术人员可以理解,除非另外定义,这里使用的所有术语(包括技 术术语和科学术语)具有本发明所属技术领域中的普通技术人员的一般理解相同 的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与 现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想 化或过于正式的含义来解释。
如图2所示的缓存空间ID的管理模块,包括:部件请求预处理模块、 BID(BufferIdentity)申请请求FIFO模块、BID释放请求FIFO模块、BID申请请求 处理模块、BID释放请求处理模块、申请BID读接口控制模块、释放BID写接 口控制模块、申请应答分发模块、释放应答分发模块。
部件请求预处理模块:请求输入端接外部对应部件的请求输出端,申请请求 输出端接BID申请请求FIFO模块的申请请求输入端,释放请求输出端接BID 释放请求FIFO模块的释放请求输入端。
BID申请请求FIFO模块的申请请求输出端接BID申请请求处理模块的输入 端。
BID申请请求处理模块:应答输出端接申请应答分发模块输入端,BID应急 申请请求输出端接BID释放请求处理模块的BID应急申请请求输入端,总线读 请求输出端接申请BID读接口控制模块输入端。
BID释放请求FIFO模块的释放请求输出端接BID释放请求处理模块的输入 端。
BID释放请求处理模块:应答输出端接释放应答分发模块输入端,应急申请 BID输出端接BID申请请求处理模块的应急申请BID输入端,总线写请求输出 端接释放BID写接口控制模块输入端。
申请BID读接口控制模块的输出端与AXI总线的读接口相接。
释放BID写接口控制模块的输出端与AXI总线的写接口相接。
如图1、图2所示:部件请求预处理模块解析部件请求信号后将BID申请请 求以预定的申请请求包格式缓存在BID申请请求FIFO模块中或将BID释放请 求以预定的释放请求包格式缓存在BID释放请求FIFO模块中;BID申请请求处 理模块仲裁各部件的BID申请请求后执行与网络报文长度对应的BID申请操作; 申请应答分发模块根据输入的申请请求信息将申请的BID分发至外部对应部件; BID释放请求处理模块仲裁各部件的BID释放请求后执行与网络报文长度对应 的BID释放操作;释放应答分发模块根据输入的释放请求信息将释放的BID分 发至外部对应部件;申请BID读接口控制模块仲裁BID申请请求处理模块的总 线读请求后通过AXI总线访问片外DDR3SDRAM;释放BID写接口控制模块 仲裁BID释放请求模块的总线写请求后通过AXI总线访问片外DDR3SDRAM。
缓存空间ID的管理模块整体详细设计结构如图3所示:部件请求预处理模 块包括与外部各部件对应的功能、逻辑一致且相互独立的请求预处理子模块, BID申请请求FIFO模块包括与外部各部件对应的功能、逻辑一致且相互独立的 BID申请请求FIFO子模块,BID释放请求FIFO模块包括与外部各部件对应的 功能、逻辑一致且相互独立的BID释放请求FIFO子模块,BID申请请求处理模 块包括与网络报文长度对应的功能、逻辑一致且相互独立的BID申请请求处理 子模块,BID释放请求处理模块包括与网络报文长度对应的功能、逻辑一致且相 互独立的BID释放请求处理子模块。
部件请求预处理模块,包含与多个外部部件对应的请求预处理子模块,每个 部件请求预处理子模块的接口完全一致但相互独立,不存在逻辑交叉。各部件对 应请求预处理子模块的申请请求输出端接BID申请请求FIFO子模块的申请请求 输入端,各部件对应请求预处理子模块的释放请求输出端接BID释放请求FIFO 子模块的释放请求输入端。各部件对应的请求预处理子模块解析对应部件的请求 信号后将BID申请请求以预定的申请请求包格式缓存在对应部件的BID申请请 求FIFO子模块中或将BID释放请求以预定的释放请求包格式缓存在对应部件的 BID释放请求FIFO子模块中。请求预处理子模块主要功能是接收外部部件发起 的请求信号req、请求类型信号req_type、请求大小信号req_size、请求释放缓存 编号buffer_id。请求信号req高有效;请求类型信号req_type==0,表示当前该 部件请求是申请请求;请求类型信号req_type==1,表示当前该部件请求是释放 请求;请求大小信号req_size==0时,表示当前部件申请BID的大小为16KB; 请求大小信号req_size==1时,表示当前部件申请BID的大小为8KB;请求大小 信号req_size==2时,表示当前部件申请BID的大小为4KB;请求大小信号 req_size==3时,表示当前部件申请BID的大小为2KB;请求大小信号req_size==4 时,表示当前部件申请BID的大小为1KB;请求大小信号req_size==5时,表示 当前部件申请BID的大小为512B;请求大小信号req_size==6时,表示当前部件 申请BID的大小为256B;请求大小信号req_size==7时,表示当前部件申请BID 的大小为128B;请求大小信号req_size==8时,表示当前部件申请BID的大小为 64B。当请求信号req==1,请求类型信号req_type==1时,释放缓存编号buffer_id 才有效。各部件对应的请求处理子模块根据请求信号req、请求类型信号req_type、 请求大小信号req_size、请求释放缓存编号buffer_id来解析外部模块请求并以指 定的包格式分发给对应的BID申请请求FIFO子模块或BID释放请求FIFO子模 块。
BID申请请求FIFO模块,该模块包含了与外部各部件对应的BID申请请求 FIFO子模块,模块间功能均一致;各部件的BID申请请求信息以指定的包格式 缓存在对应的BID申请请求FIFO子模块中,为下级BID申请请求处理模块提 供了解析依据。结合交叉互连、并行的思想,每个部件对应的BID申请请求FIFO 子模块都与下级各网络报文长度对应的BID申请请求处理子模块相接,实现多 个部件请求不同大小的BID时可以并行处理,提高处理效率。每个部件对应的 BID申请请求FIFO子模块都会设定高水线和低水线:当FIFO中的数据高于高 水线就是反压上级部件请求预处理模块;当FIFO中的数据低于低水线就是反压 下级BID申请请求处理模块;当FIFO中数据不为空且下级BID申请请求FIFO 中的数据不为空时,部件BID申请请求FIFO模块主动向下级BID申请请求处 理模块发起读对应大小的BID操作。
BID释放请求FIFO模块,该模块包含了与外部各个部件对应的BID释放请 求FIFO子模块,模块间功能均一致;各部件的BID释放请求信息以指定的包格 式缓存在BID释放请求FIFO子模块中,为下级BID释放请求处理模块提供了 解析依据。结合交叉互连、并行的思想,每个部件对应的BID释放请求FIFO子 模块都与下级各网络报文长度对应的BID释放请求处理子模块相接。每个部件 对应的BID释放请求FIFO子模块都会设定高水线和低水线,当FIFO中的数据 高于高水线就是反压上级对应部件请求预处理模块;当FIFO中的数据低于低水 线就是反压下级BID释放请求处理模块;当FIFO中数据不为空且下层BID释 放请求FIFO中的数据不为满时,部件BID释放请求FIFO模块主动向下级BID 释放请求处理模块发起写对应大小的BID操作。
BID申请请求处理模块,该模块中与网络报文长度对应的各个申请请求处理 子模块采用如图6所示的交叉互连方式接收来自各部件对应的BID申请请求 FIFO子模块的BID申请请求,实现并行处理并提高处理效率。该模块具体包括: 16KBBID申请请求处理子模块、8KBBID申请请求处理子模块、4KBBID申请 请求处理子模块、2KBBID申请请求处理子模块、1KBBID申请请求处理子模 块、512BBID申请请求处理子模块、256BBID申请请求处理子模块、128BBID 申请请求处理子模块、64BBID申请请求处理子模块。各大小的BID申请请求 处理子模块功能、结构类似,具体包括:可配置权重固定优先级的BID申请请 求仲裁子模块、BID申请FIFO控制子模块,BID申请FIFO控制子模块包括与 网络报文长度对应的预申请缓存空间ID队列,BID申请请求仲裁子模块的请求 输入端与各BID申请请求FIFO子模块的请求输出端连接,BID申请请求仲裁子 模块的仲裁结果输出端与BID申请FIFO控制子模块的请求输入端连接,BID申 请FIFO控制子模块的应答输出端与申请请求应答分发模块输入端连接,BID申 请FIFO控制子模块的总线读请求输出端与申请BID读接口控制模块输入端连接。
可配置权重固定优先级的BID申请请求仲裁子模块,在实现方式上采用并行 思想,根据权重值将各部件请求分类,同时也将有请求的权重值编码成独热码相 或,用相或后的编码值中最高位为1的位置来选择对应权重值的所有请求输入, 再根据预定的优先级定义给出仲裁结果;该子模块在算法上采用可配置权重固定 优先级仲裁算法,具体如下:
A.根据外部各个部件的业务类型及请求的频率配置初始权重值和权重调整 使能初值;
B.在请求仲裁时,权重值高的部件优先得到仲裁,或权重值相等的部件按照 固定优先级得到仲裁,且该部件的权重值减一;
C.权重调整使能值为1的部件在其权重值减为0时发生请求,且别的部件无 请求,其权重值加一;
D.等各个部件的权重都减为0时,重新恢复到初始的权重值进入新一轮的仲 裁。
BID申请FIFO控制子模块根据BID申请请求仲裁子模块的仲裁结果来接收 上级各个部件BID申请请求FIFO子模块的申请请求,实现对BID申请FIFO的 读写控制;只要上级各个部件BID申请请求FIFO子模块的FIFO不为空就可以 向BID申请请求处理模块发起仲裁请求,每次仲裁只能仲裁出一个部件向该BID 申请FIFO控制子模块发起申请BID的请求,该BID申请FIFO控制子模块再从 BID申请FIFO中读出一个BID,和该申请请求的其它信息一起返回给申请应答 分发模块。
BID释放请求处理模块,该模块中与网络报文长度对应的各个申请请求处理 子模块采用如图6所示的交叉互连方式接收来自各部件对应BID释放请求FIFO 子模块的BID释放请求,实现并行处理并提高处理效率。该模块具体包括:16KB BID释放请求处理子模块、8KBBID释放请求处理子模块、4KBBID释放请求 处理子模块、2KBBID释放请求处理子模块、1KBBID释放请求处理子模块、 512BBID释放请求处理子模块、256BBID释放请求处理子模块、128BBID释 放请求处理子模块、64BBID释放请求处理子模块。各大小的BID释放请求处 理子模块功能、结构类似,具体包括:可配置权重固定优先级的BID释放请求 仲裁子模块、BID释放FIFO控制子模块,各BID释放请求处理子模块均包括 BID释放请求仲裁子模块以及BID释放FIFO控制子模块,BID释放FIFO控制 子模块包括与网络报文长度对应的待释放缓存空间ID队列,BID释放请求仲裁 子模块的请求输入端与各BID释放请求FIFO子模块的请求输出端连接,BID释 放请求仲裁子模块的仲裁结果输出端与BID释放FIFO控制子模块的请求输入端 连接,BID释放FIFO控制子模块的应答输出端与释放请求应答分发模块输入端 连接,BID释放FIFO控制子模块的总线写请求输出端与释放BID写接口控制模 块输入端连接,BID释放FIFO控制子模块的BID应急申请请求输入端接BID申 请FIFO控制子模块的BID应急申请请求输出端,BID释放FIFO控制子模块的 应急申请BID输出端接BID申请FIFO控制子模块的应急申请BID输入端。
可配置权重固定优先级的BID释放请求仲裁子模块在实现方式上采用并行 思想,根据权重值将各部件请求分类,同时也将有请求的权重值编码成独热码相 或,用相或后的编码值中最高位为1的位置来选择对应权重值的所有请求输入, 再根据预定的优先级定义给出仲裁结果;该子模块采用可配置权重固定优先级仲 裁算法,具体如下:
A.根据外部各个部件的业务类型及请求的频率配置初始权重值和权重调整 使能初值;
B.在请求仲裁时,权重值高的部件优先得到仲裁,或权重值相等的部件按照 固定优先级得到仲裁,且该部件的权重值减一;
C.权重调整使能值为1的部件在其权重值减为0时发生请求,且别的部件无 请求,其权重值加一;
D.等各个部件的权重都减为0时,重新恢复到初始的权重值进入新一轮的仲 裁。
BID释放FIFO控制子模块根据BID释放请求仲裁子模块的仲裁结果来接收 上级各部件对应BID释放请求FIFO子模块的请求,对BID释放FIFO进行读写 操作;只要上级各个部件BID释放请求FIFO子模块的FIFO不为空就可以向BID 释放请求处理模块发起仲裁请求,每次仲裁只能仲裁出一个部件向该BID释放 FIFO控制子模块发起释放BID的请求,该BID释放FIFO控制子模块再从BID 释放FIFO中读出一个BID,和该释放请求的其它信息一起返回给释放应答分发 模块。BID申请FIFO控制子模块与BID释放FIFO控制子模块之间的应急通道: 当BID申请请求处理模块中对应网络包大小的BID申请请求处理子模块中的预 申请BID队列为空时,该大小的BID申请请求处理子模块就会向对应大小的BID 释放请求处理子模块发起BID应急申请请求,该大小的BID释放请求处理子模 块收到该请求后就会从自身的待释放BID队列里读出BID反馈给BID申请请求 处理子模块;BID申请FIFO控制子模块在预申请缓存空间ID队列为空时从相 同网络报文长度对应的待释放缓存空间ID队列中申请一个缓存空间ID,BID申 请FIFO控制子模块将申请的缓存空间ID连同该申请请求的其它信息一起输出 给申请应答分发模块。
BID申请FIFO控制子模块通过申请BID读接口控制模块读取挂在AXI总线 上的片外DDR3SDRAM中的缓存空间ID,BID释放FIFO控制子模块通过释放 BID写接口控制模块写入缓存空间ID到挂在AXI总线上的片外DDR3SDRAM 中,在芯片上电复位时根据网络报文长度将DDR3SDRAM存储颗粒中存储区域 划分不同固定大小的缓存空间及对应的缓存空间ID标签区,采用两级FIFO加 速方法对各大小BID标签区间进行管理,两级FIFO加速方法的原理和图和实现 图如图4、图5所示。
申请BID读接口控制模块,该模块通过上级各个大小的BID申请FIFO控制 子模块和AXI总线的读接口对各个大小的BID申请FIFO进行写操作。该模块 根据预定的优先级来接收上级各个大小的BID申请FIFO控制子模块的请求。 BID被存在DDR3SDRAM中指定的区间内,该区间根据网络报文长度划分为 16KBBID区间、8KBBID区间、4KBBID区间、2KBBID区间、1KBBID区间、 512BBID区间、256BBID区间、128BBID区间、64BBID区间,每个大小的 BID区间的起始地址和区间长度都可以由CPU进行配置。该模块采用FIFO的存 储机制对各个大小的BID区间进行管理,根据上级模块的请求实时地更新读指 针,结合对应大小的BID释放请求处理子模块的写指针就可以算出DDR3 SDRAM对应大小区间中剩余BID的数量,根据BID余量来设定总线BurstLength、 BurstSize,进一步提高从DDR3SDRAM中读取BID的效率。这以16KBBID 申请FIFO子模块来说明,在16KBBID申请FIFO子模块需申请BID时,从16KB 预缓存空间ID队列中读出BID,具体步骤如下:
A.16KBBID申请FIFO控制子模块中BID的数量已经低于低阈值线时,16KB BID申请FIFO控制子模块向申请BID读接口控制模块发起从DDR3SDRAM中 读出BID的请求;
B.申请BID读接口控制模块收到请求后向AXI总线上的DDR3SDRAM读 发起Burst读操作;
C.Burst读回的数据会根据申请请求的UID分发给相应大小的BID申请FIFO 控制子模块,16KBBID申请FIFO控制子模块将读回的BID写入到对应网络报 文长度的预申请缓存空间ID队列中。
释放BID写接口控制模块,该模块通过上级各个大小的BID释放FIFO控制 子模块和AXI总线的写接口对各个大小的BID释放FIFO进行读操作。该模块 根据预定的优先级来接收上级各个大小的BID释放FIFO控制子模块的请求。 BID被存在DDR3SDRAM中指定的区间内,该区间根据网络报文长度划分为 16KBBID区间、8KBBID区间、4KBBID区间、2KBBID区间、1KBBID区间、 512BBID区间、256BBID区间、128BBID区间、64BBID区间,每个大小的 BID区间的起始地址和区间长度都可以由CPU进行配置。该模块采用FIFO的存 储机制对各个大小的BID区间进行管理,根据上级模块的请求实时地更新写指 针,结合BID申请请求处理子模块的读指针就可以算出DDR3SDRAM对应大 小区间中剩余BID的数量,根据BID余量来设定总线BurstLength、BurstSize, 进一步提高将BID写入到DDR3SDRAM中的效率;这以16KBBID释放FIFO 来说明,在16KBBID释放FIFO子模块需申请BID时,向16KB待释放缓存空 间ID队列中写入BID,具体步骤如下:
A.16KBBID释放请求FIFO子模块中BID的数量已经高于高阈值线时,16KB BID释放FIFO控制子模块向BID写接口控制模块发起写BID到DDR3SDRAM 中的请求;
B.BID写接口控制模块收到请求后向挂在AXI总线上的DDR3SDRAM发起 Burst写操作;
C.16KBBID释放请求FIFO子模块把需释放的缓存空间ID批量写入到对应 网络报文长度的缓存空间ID标签区。
申请BID读接口控制模块包括申请BID轮询仲裁子模块,申请BID轮询仲 裁子模块采用轮询仲裁算法确定批量预申请BID的BID申请请求处理子模块, 释放BID写接口控制模块包括释放BID轮询仲裁子模块,释放BID轮询仲裁子 模块采用轮询仲裁算法确定批量写回BID的BID释放请求处理子模块。各大小 的BID申请FIFO控制子模块、BID释放FIFO控制子模块与片外DDR3SDRAM 三者协调的操作形成了两级FIFO加速处理方法。
申请应答分发模块如图7所示,该模块主要功能是接收来自各个大小的BID 申请请求处理子模块的申请BID的应答信息,根据应答信息中的部件ID分发到 相应的外部部件。
释放应答分发模块如图7所示,该模块主要功能是接收来自各个大小的BID 释放请求处理子模块的释放BID的应答信息,根据应答信息中的部件ID分发到 相应的外部部件。
综上所述,本发明具有以下有益效果:
(1)缓存空间ID的申请通道与释放通道分离,结合并行兼顾优先级的思想 采用FIFO方式和交叉互连方式,并行执行BID申请、BID释放,提高了处理速 度;
(2)各部件对应的BID申请/释放FIFO子模块与BID申请/释放请求控制子 模块一一对应但逻辑上互补交叉,采用交叉互连的方式实现各部件对不同大小 BID请求的并行处理,比每次只仲裁出一个部件进行申请/释放BID操作要更高 效;
(3)将整个缓存空间根据网络数据包长度的差异性划分为16KB、8KB、4KB、 2KB、1KB、512B、256B、128B、64B大小的区间,每种大小的区间基地址和 区间长度都可由CPU根据实际需求进行实时配置变更,既缓解了缓存空间浪费 的问题,又增强了区间规划的灵活性;
(4)采用简单的FIFO存储机制实现对整个缓存ID的乱序管理,结构简单, 硬件易实现,采用两级FIFO加速处理方法,让BID以FIFO的形式存在DDR3 SDRAM中,结合Burst操作进一步提高了BID申请、释放的效率;
(5)当预申请缓存空间ID队列中BID被申请空,而此时待释放缓存空间 ID队列中的BID未达到高阈值线不足以写入DDR3SDRAM中时,预申请缓存 空间ID队列与待释放缓存空间ID队列之间的应急通道可以充分利用完剩余未 被申请的BID。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发 明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的 技术方案实质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现 出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等, 包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器,或者网络 设备等)执行本发明的实施例或实施例的某些部分所述的方法。
本文发布于:2023-04-13 03:36:44,感谢您对本站的认可!
本文链接:https://patent.en369.cn/patent/1/86241.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |