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干货分享!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/765413.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LLM-Transformer:经典与前沿方法详解

LLM-Transformer:经典与前沿方法详解 前言 大规模语言模型(LLM)是当前自然语言处理(NLP)领域的核心技术,而Transformer架构作为LLM的基础,极大地推动了这一领域的发展。本文将详细介绍LLM-Tra…

DP:子序列问题

文章目录 什么是子序列子序列的特点举例说明常见问题 关于子序列问题的几个例题1.最长递增子序列2.摆动序列3.最长递增子序列的个数4.最长数对链5.最长定差子序列 总结 什么是子序列 在计算机科学和数学中,子序列(Subsequence)是指从一个序列…

【2024德国签证】去德国读博士需要申请什么签证?

德国留学签证面签的经过及注意事项 ✨!希望我的经验可以帮助大家顺利通过签证,顺利开启德国留学之旅 。记得带上足够的现金和材料哦 ! 一、选择适合自己的签证类型 在选择签证类型时,一定要根据自己的实际情况来选择合适的签证种…

Wp-scan一键扫描wordpress网页(KALI工具系列三十二)

目录 1、KALI LINUX 简介 2、Wp-scan工具简介 3、信息收集 3.1 目标IP(服务器) 3.2kali的IP 4、操作实例 4.1 基本扫描 4.2 扫描已知漏洞 4.3 扫描目标主题 4.4 列出用户 4.5 输出扫描文件 4.6 输出详细结果 5、总结 1、KALI LINUX 简介 Kali Linux 是一…

JAVA极简图书管理系统,初识springboot后端项目

前提条件: 具备基础的springboot 知识 Java基础 废话不多说! 创建项目 配置所需环境 将application.properties>application.yml 配置以下环境 数据库连接MySQL 自己创建的数据库名称为book_test server:port: 8080 spring:datasource:url:…

存储故障导致Oracle 19c 数据文件处于recover状态的恢复案例

1.背景 某次平台分布式存储故障,导致数据库出现ORA-00376、ORA-01110数据文件不可读报错,本文将整个恢复过程进行整理记录。 2.报错信息 在进行租户数据库打开操作时,出现了如下报错: ORA-00376: file 17 cannot be read at t…

DICOM灰度图像、彩色图像的窗宽、窗位与像素的最大最小值的换算关系?

图像可以调整窗宽、窗位 dicom图像中灰度图像可以调整窗宽、窗位,RGB图像调整亮度或对比度?_灰度 图 调节窗宽-CSDN博客 窗宽、窗位与像素的最大最小值的换算关系? 换算公式 max-minWindowWidth; (maxmin)/2WindowCenter; 详细解释 窗宽&#xff0…

谷歌重磅:告别RAG,长上下文的大语言模型无需检索增强

当今人工智能领域正在经历一场静默的革命。随着大语言模型(LLM)的快速发展,它们不仅能够处理更长的上下文,还展现出惊人的推理和检索能力。 难道我们要告别基于LLM的检索增强生成(RAG)了吗? 结果还真是这样,最近谷歌发布专门用于…

贪心算法算法,完全零基础小白教程,不是计算机的都能学会!超详解

目录 一、基本概念 二、举几个例子,便于理解 1、找零问题 2、最小路径和 3、背包问题 1)只考虑体积的贪心策略: 2) 只考虑价值的贪心策略: 三、贪心策略的特点 四、贪心策略证明 四、如何学习贪心 五、例题…

eNSP中WLAN的配置和使用

一、基础配置 1.拓扑图 2.VLAN和IP配置 a.R1 <Huawei>system-view [Huawei]sysname R1 GigabitEthernet 0/0/0 [R1-GigabitEthernet0/0/0]ip address 200.200.200.200 24 b.S1 <Huawei>system-view [Huawei]sysname S1 [S1]vlan 100 [S1-vlan100]vlan 1…

IAR工程目录移动报错(改变文件目录结构)

刚开始用IAR&#xff0c;记录一下。 工作中使用华大单片机&#xff0c;例程的文件目录结构太复杂了想精简一点。 1.如果原本的C文件相对工程文件&#xff08;.eww文件&#xff09;路径变化了&#xff0c;需要先打开工程&#xff0c;再将所有的.c文件右键Add添加进工程&#xf…

PHP7源码结构

PHP7程序的执行过程 1.PHP代码经过词法分析转换为有意义的Token&#xff1b; 2.Token经过语法分析生成AST&#xff08;Abstract Synstract Syntax Tree&#xff0c;抽象语法树&#xff09;&#xff1b; 3.AST生成对应的opcode&#xff0c;被虚拟机执行。 源码结构&#xff1…

昇思25天学习打卡营第14天|CycleGAN图像风格迁移互换

模型介绍 模型简介 CycleGAN(Cycle Generative Adversarial Network) 即循环对抗生成网络&#xff0c;该模型实现了一种在没有配对示例的情况下学习将图像从源域 X 转换到目标域 Y 的方法。 该模型一个重要应用领域是域迁移&#xff0c;它只需要两种域的数据&#xff0c;而不…

2023-2024华为ICT大赛中国区 实践赛网络赛道 全国总决赛 理论部分真题

Part1 数通模块(10题)&#xff1a; 1、如图所示&#xff0c;某园区部署了IPv6进行业务测试&#xff0c;该网络中有4台路由器&#xff0c;运行OSPFv3实现网络的互联互通&#xff0c;以下关于该OSPFv3网络产生的LSA的描述&#xff0c;错误的是哪一项?(单选题) A.R1的LSDB中将存在…

Java高级重点知识点-13-数据结构、List集合、List集合的子类

文章目录 数据结构List集合List的子类&#xff08;ArrayList集、LinkedList集&#xff09; 数据结构 栈 stack,又称堆栈&#xff0c;它是运算受限的线性表&#xff0c;其限制是仅允许在标的一端进行插入和删除操作&#xff0c;不允许在其他任何位置进行添加、查找、删除等操作…

如何下载huggingface仓库里某一个文件

如何下载huggingface仓库里某一个文件&#xff1a; https://huggingface.co/PixArt-alpha/PixArt-Sigma/tree/main 直接用命令&#xff1a; wget https://huggingface.co/PixArt-alpha/PixArt-Sigma/resolve/main/PixArt-Sigma-XL-2-2K-MS.pth

30个!2024重大科学问题、工程技术难题和产业技术问题发布

【SciencePub学术】中国科协自2018年开始&#xff0c;组织开展重大科技问题难题征集发布活动&#xff0c;引导广大科技工作者紧跟世界科技发展大势&#xff0c;聚焦国家重大需求&#xff0c;开展原创性、引领性研究&#xff0c;不断夯实高质量发展的科技支撑。 自2024年征集活动…

南京林业大学点云相关团队论文

【1】Chen Dong, Wan Lincheng, Hu Fan, Li Jing, Chen Yanming, Shen Yueqian*, Peethambaran Jiju, 2024. Semantic-aware room-level indoor modeling from point clouds, International Journal of Applied Earth Observation and Geoinformation, 2024, 127, 103685. 语义…

QT5 static_cast实现显示类型转换

QT5 static_cast实现显示类型转换&#xff0c;解决信号重载情况

一款十六进制编辑器,你的瑞士军刀!!【送源码】

软件介绍 ImHex是一款功能强大的十六进制编辑器&#xff0c;专为逆向工程师、程序员以及夜间工作的用户设计。它不仅提供了基础的二进制数据编辑功能&#xff0c;还集成了一系列高级特性&#xff0c;使其成为分析和修改二进制文件的理想工具。 功能特点 专为逆向工程、编程和夜…