逻辑设计基础_芯片设计--TCAM概述

news/2024/12/18 20:40:19/

TCAM背景

当前商业芯片对OpenFlow的支持最欠缺的表现在:流表大小、流表数量、流表动作三方面。如严格按照OpenFlow标准,则流表只能用TCAM来实现。那我们简单讨论下什么是TCAM?为什么需要用TCAM来实现流表?

概念

  • TCAM是ternary(三重的) content addressable memory的缩写,中文是:三重内容可寻址内存。一般memory是根据地址来访问存储的内容,而TCAM恰好相反,它是根据内容去找到地址。一般的memory中每个bit都只能表示两个值:0或1,而TCAM每个bit可表示三个值:0,1和XX表示don’t care
  • TCAM之所以一个bit能表示三个值,原因是它的一条entry其实在物理上由两条entry组成,一条存放data,另外一条存放相应的mask。由此可以实现0/1/X的表示。有了TCAM,就可支持各种LOOKUP KEY的任何组合查找,任意地MASK掉任何不关心的字段。只有TCAM可以做这样的事情,HASH不行。
  • 如果有多条TCAM ENTRY都能匹配上,TCAM优先选择INDEX最小的那一条。TCAM的查找效率与深度无关,也就是说,无论表项多大,查找速度是一样的,这跟TCAM的硬件实现方式有关。
  • TCAM可内置在芯片里面,也可外挂在芯片之外,芯片通过接口去访问。但是内置TCAM比较占芯片面积,一条TCAM ENTRY至少抵得上5条DRAM/SRAM ENTRY,如果芯片内部放了太大的TCAM会导致芯片成本和功耗直线上升。所以一般芯片都不会内置太大TCAM。
  • 外挂TCAM的成本和功耗一样很大,甚至比ASIC芯片本身还要贵,而且如果一个报文要访问外部TCAM多次的话,受限于TCAM接口速率,会导致无法线速。所以交换机一般也都不会使用外挂TCAM。
  • 普通交换机中的ACL功能必须使用TCAM,所以内置TCAM省不掉,而对于路由,如果也必须使用TCAM的话,路由表项做不大。正因为TCAM的高成本和高功耗,所以现在最新的商业芯片已经开始使用算法来支持路由了,盛科的GreatBelt芯片是最早使用算法来做路由的商业芯片。
  • 如果OpenFlow交换机必须使用TCAM的话,成本和功耗会居高不下,自然会影响OF交换机的推广。盛科在ONS 2013上获得SDN IDOL的V350,就是针对这一点做了创新。 GreatBelt芯片采用了N-FLOW技术,TCAM+HASH相结合HASH采用哪种KEY是可配的HASH FLOW高达64K。
  • TCAM entry size一般有多种,比如某著名厂家的有single, double, quad三种宽度,single只能放一点L2或者L3的常用字段,double可以放大部分L2或者L3或者常用的L2+L3字段,而quad则可以放基本上所有的字段。要完全满足Openflow的灵活需求,至少要quad,他们这个做法仅适用于ACL。
  • 假设TCAM entry宽度全部配置成single可以支持N条的话,那么配制成double就可以支持N/2, 配制成quad就可以支持N/4.这就是为什么有的设备厂商宣称他们支持N条flow,但是实测只有N/2,或者N/4,因为他们都按照最理想情况宣称,但是实际测试的时候,人家都用最坏情况测试。
  • 盛科芯片内置的使用IBM技术的TCAM,功耗可以做到很低。在entry宽度上也跟其它厂家稍微有所不同,它设计了四种宽度,分别是80/160/320/640bits。常用L2 or IPv4字段用80就可以,完整的L2 or IPv4用160,完整的L2+L3 or IPv6用320,完整的L2+IPv6用640,在字段组合上也跟别家不同,更注重灵活性。

http://www.ppmy.cn/news/142522.html

相关文章

RFC3550(中文版)

RTP:实时应用程序传输协议 摘要 本文描述RTP(real-time transport protocol),实时传输协议。RTP在多点传送(多播)或单点传送(单播)的网络服务上,提供端对端的网络传输功…

RTX3050显卡Ubuntu装Nvidia卡驱动

Ubuntu安装NVIDIA显卡驱动 为什么要装Nvidia卡如何装N卡实际安装过程解决方式1.系统环境2.切换显卡输出模式3.降级Ubuntu版本以及Linux内核降级方法 为什么要装Nvidia卡 lz在做毕业设计时需要用到计算机图像处理方面的工具,因此需要使用CUDA加速图像处理。但安装CU…

Opencv3.4.5+VS2015安装配置(永久性)

近段时间由于项目需要用到Opencv3.4.5,于是重新又配置相关环境,过程比较简单,只需要配置一次,以后不需要每次都要配置,直接添加使用,现将其总结如下: 步骤: (1)、配置系统环境变量;…

关于 戴尔G3 NVIDIA 1050TI 显卡驱动无法使用的解决办法

关于 戴尔G3 NVIDIA 1050TI 显卡驱动无法使用的解决办法 Edited by MYians (码字不易,转载请注明出处,谢谢 )注:由于笔记本电脑出厂时间不同,出…

RTX3050值得购买吗

如果你对这款显卡的性能有足够的了解,并且认为它能够满足你的需求,那么它就是值得购买的。 RTX 3050是一款性能较高的显卡,适用于各种游戏和图形计算应用。但是,在决定是否购买之前,你还需要考虑自己的预算以及你需要的…

Hi3516D V300功能介绍

Hi3516 DV300 作为新一代行业专用 IP Smart HD IP 摄像机 SOC ,集成新一代 ISP 、业界最新的 H.265 视频压缩编码器,同时集成高性能 NNIE 引擎 ,使得 Hi3516 DV300 在低码率、高画质、智能处理和分析、 低功耗等方面引领行业水平。集成 POR 、…

[ Term ] 你真的了解 UTC 时间吗?它和 GMT 时间的区别是什么?

什么是 GMT 和 UTC,他们之间的区别是什么? GMT(Greenwich Mean Time)和UTC(Coordinated Universal Time)是两个不同的时间标准,但它们非常相似并且通常被混淆使用,那他们之间的区别在…

Python之pyecharts的常见用法2-柱状图-折线图

Pyecharts是一个基于Echarts的Python可视化库,可以用Python语言轻松地生成各种交互式图表和地图。它支持多种图表类型,包括折线图、柱状图、散点图、饼图、地图等,并且可以通过简单的API调用实现数据可视化。 Pyecharts的优点包括&#xff1a…