Verilog开源项目——百兆以太网交换机(五)TCAM单元设计

Verilog开源项目——百兆以太网交换机(五)TCAM单元设计


🔈声明:未经作者允许,禁止转载
😃博主主页:王_嘻嘻的CSDN主页
🔑全新原创以太网交换机项目,Blog内容将聚焦整体架构、模块设计方面;更新周期可能会略慢,希望朋友们多多包涵
🧡关注本专题的朋友们可以学习到原创交换机设计的全流程,包括设计与验证(FPGA)。
🚩第一代交换机  从零开始 verilog 以太网交换机系列专栏:点击这里
💥第二代交换机  Atom(百兆以太网交换机)专栏:点击这里

  Atom支持了包过滤特性,为了支持过滤的多样性,Atom将使用TCAM来存储过滤规则,以实现带优先级的1k条规则匹配,包过滤模块会根据接受包的特征向TCAM发起匹配请求,若匹配成功则进行对应操作,若匹配失败则按部就班的转发

  而为了便于实现,以及资源的平衡,Atom TCAM将使用SRAM实现,并采取分层分列的小块SRAM结构



一、Feature

  • SRAM实现形式;
  • 支持分层,分列的TCAM;
  • 支持pipeline处理,每cycle查询一次规则;
  • 支持添加、查找、删除规则;


二、概述

  Atom TCAM是为了实现PF中包过滤的特性,用来判断接收到的packet是否符合用户下达的某些规则。
在这里插入图片描述

  由于DPI功能过于复杂,所以Atom将DPI简化为包过滤特性,计划支持1K条包过滤规则。使用源地址、目的地址、源端口、目的端口、协议类型、报文长度和TCP flags共128-bits组成固定关键词,所以TCAM大小为128-bits x 1k。

  考虑到额外调用一个TCAM IP对成本和移植性不够友好,我们在此使用SRAM来实现TCAM的功能,并通过分层分列的划分方式减少SRAM的用量。
除了PF通过TCAM查询规则外,也有外部通道支持用户直接添加、删除、查询规则。



a)TCAM原理

  TCAM是一种三态内容寻址存储器,其比CAM增加了X态的内容寻址,x表示不论0、1都能匹配,TCAM寻址过程如下(和哈希表原理一样):

  1. 当搜索内容为‘010’时,TCAM搜索到对应内容的地址为0;
  2. 当搜索内容为‘001’时,TCAM搜索到内容符合‘00x’,对应地址为2;
    在这里插入图片描述


b)TCAM分层分列

  考虑到在工程实现与移植方面,本设计使用SRAM来实现TCAM功能,参考《基于SRAM的硬件搜索引擎设计与实现》[1] 有关想法。

  用SRAM实现TCAM本质是将关键字内容作为SRAM的地址,将TCAM的地址映射为onehot形式的数据,表示是否存在对应关键字信息,具体过程如下图:
在这里插入图片描述
  例如TCAM的第一行数据‘001’,其对应SRAM中第二行的bit0,通过SRAM的行编码表示关键字,SRAM的列编号表示该关键字在TCAM的哪一行中。

  同理,TCAM的第八行数据‘1x1’应该映射到SRAM中‘101’行和‘111’行中的bit7。


  如果直接把128-bits x 1k rules的TCAM通过SRAM实现,将需要极大的SRAM,如果通过分列的方式,能有效的减少SRAM的使用量。
在这里插入图片描述
  如果是不分列的4-bits x 8的TCAM,需要一块8-bits x 16的SRAM来实现;但经过上图分列后的TCAM,只需要两块8-bits x 4的SRAM实现,节省了50%的SRAM使用量。

  而分列的本质意义就是将TCAM进行横向的拆分,拆成多个小TCAM进行并行的内容匹配,再相互&,只有所有小TCAM都匹配上时,才视为匹配成功,这个优化能以指数级降低SRAM深度。

  另一方面,为了更好的适配FPGA中的BRAM,我们将TCAM的行也进行分割,称为分层,具体如Atom TCAM架构图所示,这样一整个TCAM被分为多个小块,能更容易的划分SRAM的大小。每层之间采用优先编码器进行地址的选择,具体如下图所示:

在这里插入图片描述

  例如关键字‘00’同时hit了地址0、2、3、5,但根据优先级原则,TCAM会返回地址0。



c)外部通道

  PF只会发送search请求,而外部通道还可能发送add、delete请求,当发送该类请求时,需要带上对应地址,也就是rule序号,该序号也代表了该rule的优先级。如果是search请求,不需要输入地址。





三、接口

在这里插入图片描述






本次设计主要参考以下两篇论文,侵权必删:

【1】 杨蕊. 基于SRAM的硬件搜索引擎设计与实现[D]. 大连理工大学, 2020. DOI:10.26991/d.cnki.gdllu.2020.002322.
【2】 施自林. 基于SRAM的TCAM存储优化技术研究[D]. 国防科技大学, 2020. DOI:10.27052/d.cnki.gzjgu.2020.000507.





若有不专业或错误之处,欢迎指正!

具体电路实现及验证环境代码会在准备完毕后开源,目前暂时不能给出,请见谅


搜索关注我的微信公众号【IC墨鱼仔】,获取我的更多IC干货分享!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值