三态内容寻址寄存器(TCAM)

三态内容寻址寄存器(TCAM)

CAM(content addressable memory),内容寻址存储器。在传统的存储技术上实现的联想记忆存储器,CAM的基本操作有三种:

  1. 写操作:输入地址和数据,将数据写在指定的地址上,写入速度和RAM相同。
  2. 读操作:输入地址,返回该地址上的数据,读取速度和RAM相同。
  3. 查找操作:输入待查数据,返回该数据被存储的地址,这也是CAM的主要用途,能够从数据库中快速的查找,并返回最佳的匹配地址,最快查找速度能够达到每秒一亿次以上。

CAM能够在一个硬件时钟周期内完成关键字的精确匹配查找,与常用的随机存储器通过输入地址来返回该地址处的信息不同,CAM的访问只需要输入关键字KEY的内容,CAM就会将关键字与CAM中所有表项同时进行匹配比较,最后返回匹配表项在CAM中对应的地址

路由查找具有最长前缀匹配的特点,为了使用CAM来进行最长前缀路由的查找,对每一类可能的地址前缀长度使用一个CAM,每个CAM保存对应长度的所有前缀集合。对于IPV4来说,一共需要使用32个CAM。这种方法为了保存N个前缀表项,每个CAM都需要N个表项空间,存储空间的利用率低。

TCAM(ternary content addressable memory),三态内容寻址存储器。从CAM的基础上发展而来,一般的CAM存储器中的每一个bit位的状态只有两个,0或者1。TCAM有三种状态,除了0和1还有一个“dont care”的状态。TCAM通过掩码来实现的,TCAM的这个第三种状态特征使TCAM既能够进行精确匹配查找,又能够进行模糊匹配查找。而CAM没有第三种状态,只能够进行精确匹配查找

TCAM中的每个表项都是以<地址、掩码>序偶的形式保存,假设地址关键字的长度为1到W,那么地址和掩码分别占用W bit。对于关键字长度为Y(1<=Y<=W)的表项来说,它的掩码前Y个bit为1,剩下的W-Y bit为0,它的地址后W-Y个比特可以为0或者1。

TCAM通过保存关键字掩码的方式使得它可以保存任意长度的关键字表项,由于可能存在多个表项匹配的情况,因此TCAM需要在这些匹配的表项中选取一个表项作为最后的查找结果,TCAM规定在所有匹配的表项中选取选取地址最低的表项作为最后的结果。所以为了能够进行最长前缀路由的查找,需要保证在TCAM的低地址存储前缀较长的关键字表项,在地址高的区域存储前缀较短的关键字的表项

TCAM器件的生产厂商主要有cypress、IDT、Netlogic三家。这三家将TCAM器件称为Network Search Engine(NSE)、Network Search Accelerator(NSA)和Knowledge-based Processor(KBP)。

TCAM器件主要应用有:

  1. ATM(Asynchronous Transfer Mode) Switching设备中的VCI/VPIZ转发和ATM-to-MPLS or ATM-to-TCP-Flow地址映射表项的存储和查找。
  2. Ethernet Switching设备中的二层MAC地址、ARP/RARP解析和三层IP路由表项的存储和查找。
  3. Emerging Protocols and functions方面的MPLS lable表项的存储和查找。
  4. Packet Classification业务中的Enforce security、Enforce departmental policies和QOS检测表项的储存和查找。
  5. 安全防护设备中的FIB/LBT、MFIB及ACL表项存储和查找。

传统的表项查找方法:线性查找法二叉树查找法哈希表查找法。这些传统的查找方法都是基于SRAM的软件查找方法,特点就是查找速度慢。线性查找法需要遍历表中的所有表项;二叉树查找法需要遍历树中的大部分节点,并且查找速度受限于树的深度;哈希表查找法是软件查找中较快的。

基于硬件的TCAM查找法在查找时,整个表项空间的所有数据在同一时刻被查询,查找速度不受限与表项空间数据大小的影响,每个时钟周期完成一次查找,平均查找速度是基于SRAM算法查找的6倍

TCAM的查找方式NP/ASIC --->(key) TCAM --->(index/addr) QDR SRAM --->(result) NP,网络处理器NP从报文头中把需要查找的信息提取出来,这个待查找的信息要整理成跟TCAM所存表项的格式一致,称为KEY。KEY作为TCAM的输入数据,经过与表项对照,如果有匹配的表项,就把该表项所在的地址作为输出,称为Index。然后将index作为RAM的地址输出,从RAM里得到所需查找的信息,称为data、最后将data返回给发起查找操作的NP,完成一次查找操作。

扫描二维码关注公众号,回复: 16332245 查看本文章

SRAM

SRAM(static random-access memory),静态随机存取存储器,是随机存取存储器的一种,静态是指这种存储器只要保持通电,里面存储的数据就可以一直保持。而DRAM动态随机存取存储器,里面存储的数据需要周期性的更新。但是当断电的时候sram里面的数据还是会消失,与断电后还能存储资料的rom或者闪存不同

猜你喜欢

转载自blog.csdn.net/qq_41323475/article/details/127894510