原创 内容可寻址存储器MCM69C232及其应用

2007-1-6 10:37 3292 10 12 分类: 通信

内容可寻址存储器MCM69C232及其应用

华中科技大学 杨黎明

内容可寻址存储器CAM(Content-Addressable Memory)是以内容进行寻址的存储器,是一种特殊的存储阵列RAM,它的主要工作机制就是将一个输入数据项与存储在CAM中的所有数据项自动同时进行比较,判别该输入数据项与CAM中存储的数据项是否相匹配,并输出该数据项对应的匹配信息,美国Motorola公司的CAM芯片MCM69C232在市场上是性价比较高的产品,因而被广泛地应用于网络通信,模式识别等领域,其用于数据检索的优势是软件无法比拟的,可以极大的提高系统性能。

1 MCM69C32芯片介绍

内容可寻址存储器(CAM)从本质上讲是一种基于RAM技术的特殊存储器,数据项存储在CAM内部的阵列单元中,每个数据项中的位数称为"字宽",阵列内所有数据项的条数称为"深度",CAM的容量通过字宽和深度来表征,MCM69C232设计可存储4096条宽度为64位的数据项。

MCM69C232有两组数据端口:控制端口(control port)和匹配端口(match port)。控制端口用于处理器(CPU)对CAM表的操作,包括插入、删除数据表项、模式设置和模拟匹配,以及读取芯片内部状态寄存器的信息等,数据项的检索通过匹配端口完成。


尽管基于RAM技术,但CAM的存储机制却与RAM大相径庭,图1为MCM69C232的结构框图,图中MCM69C232没有用于确定内容存储单元的地址总线,其地址线A0-A2用于对片内控制寄存器的寻址。处理器通过操作MCM69C232的控制端口(数据线DQ0-DQ15)可以读/写CAM表中的数据项,数据项的存储地址由芯片内部逻辑控制。MCM69C232有两种工作模式:ATM模式和基本模式。ATM模式主要用于ATM交换机对ATM信元进行虚拟通路标识号/虚拟通道标识号(VPI/VCI)的转换处理,基本模式主要用于以太网上的IP/MAC地址匹配等数据检索。



xsj065271_1.jpg

MCM69C232芯片的主要特性如下:

160ns的匹配时间;

没有屏蔽寄存器;

通过芯片级联扩展深度;

时钟频率最高为50MHz;

匹配字宽和输出结果位宽可自定义;

在ATM模式下可进行VPC(Virtual Path Circuits)和VCC(Virtual Connection Circuits)的同时匹配;

端口主要分为控制和匹配端口;

200ns的插入时间(在12个端口数据项队列未满的情况下);

12ms的初始化时间(在设置了快速写入模式后);

具有符合IEEE标准1149.1的测试端口(JTAG)。

2 MCM69C232芯片的使用

在基本操作模式下,MCM69C232的读取输入数据并与CAM表中的所有表项相比较,无论匹配项找到与否,当比较完成后,MC(Match Complete)引脚均有效,如果找到了匹配项,则MS(Match Successful)引脚有效,同时在MQ总线上输出与匹配数据项相关的数据,如果没有找到,则MQ总线保持高阻态,以便级联CAM芯片来扩展存储深度。

MCM69C232上电后,默认工作模式为基本模式,在进入数据检索操作之前,芯片必须先完成几个启动操作过程:首先,要设置全局屏蔽寄存器,定义匹配字宽和输出结果位宽;其次,要选择数据表项的写入模式,即快速写入模式还是动态写入模式;再次,要把用户需要的数据项(共64位,包括匹配字节和与其对应的输出结果字节)逐次装入CAM表中。

CAM表数据项写入模式的选择,往往是在写入速度和启动匹配操作花费的时间中取个平衡,快速写入模式,常用于将大量的数据项初始写入CAM表中,而动态写入模式,则常用于启动匹配后往CAM表中插入少量的数据项。用户通过操作控制口4个I/O寄存器来插入或删除CAM表项,当有异常状态出现时,可以从标志寄存器和错误代码寄存器反应出来,MCM69C232内部的寄存器如图2所示。



xsj065271_2.jpg

MCM69C232芯片的主要特性如下:

160ns的匹配时间;

没有屏蔽寄存器;

通过芯片级联扩展深度;

时钟频率最高为50MHz;

匹配字宽和输出结果位宽可自定义;

在ATM模式下可进行VPC(Virtual Path Circuits)和VCC(Virtual Connection Circuits)的同时匹配;

端口主要分为控制和匹配端口;

200ns的插入时间(在12个端口数据项队列未满的情况下);

12ms的初始化时间(在设置了快速写入模式后);

具有符合IEEE标准1149.1的测试端口(JTAG)。

2 MCM69C232芯片的使用

在基本操作模式下,MCM69C232的读取输入数据并与CAM表中的所有表项相比较,无论匹配项找到与否,当比较完成后,MC(Match Complete)引脚均有效,如果找到了匹配项,则MS(Match Successful)引脚有效,同时在MQ总线上输出与匹配数据项相关的数据,如果没有找到,则MQ总线保持高阻态,以便级联CAM芯片来扩展存储深度。

MCM69C232上电后,默认工作模式为基本模式,在进入数据检索操作之前,芯片必须先完成几个启动操作过程:首先,要设置全局屏蔽寄存器,定义匹配字宽和输出结果位宽;其次,要选择数据表项的写入模式,即快速写入模式还是动态写入模式;再次,要把用户需要的数据项(共64位,包括匹配字节和与其对应的输出结果字节)逐次装入CAM表中。

CAM表数据项写入模式的选择,往往是在写入速度和启动匹配操作花费的时间中取个平衡,快速写入模式,常用于将大量的数据项初始写入CAM表中,而动态写入模式,则常用于启动匹配后往CAM表中插入少量的数据项。用户通过操作控制口4个I/O寄存器来插入或删除CAM表项,当有异常状态出现时,可以从标志寄存器和错误代码寄存器反应出来,MCM69C232内部的寄存器如图2所示。

CAM表的匹配位取决于全局屏蔽寄存器的定义,屏蔽寄存器为0的位要求数据项的对应位作匹配操作;为1,则对应位无需匹配,典型的应用中用户总是把数据项的高位序位定义为"待匹配字节",低位序位定义为"结果输出字节"。64位中的任何位都可以定义为"匹配操作",但实际上输出到匹配口MQ0-MQ31总线上的总是最低32位数据,并非可任意编程输出的。如果设置的输出结果字节超过32位,则是无意义的。

通常情况下,MCM69C232通过写控制口数据和指令来准备匹配操作,一般步骤是把数据项装入4个I/O寄存器,然后往操作代码寄存器写入操作代码,即可完成一种指令的操作,指令完成后CAM表的内容可能会被修改,标志寄存器的相应位会被置位,错误代码寄存器会返回错误码,当使能时,还会触发中断。

芯片的操作指令如表1所列。



xsj065271_3.jpg
xsj065271_4.jpg

复位。复位同步于主时钟的上升沿,一个时钟周期的复位就能清空CAM表和输入数据项队列,置标志寄存器为1C,错误代码寄存器为FFFF,几乎满寄存器FFF,并清除中断屏蔽。

控制口时序,访问控制口如同处理器访问RAM一样,时序较为简单。

匹配口时序,访问匹配口分两种情况:一种是匹配字节小于等于32位,只用LH/SM信号装载匹配数据,LL信号无用,另一种是匹配字节大于32位,先用LL信号装载匹配数据低位部分,再由LH/SM信号装载高位部分,匹配结果由MC信号和MS信号指示,使能G信号读取匹配结果数据,匹配口时序参见参考文献[1]。

两口同时匹配,控制口模拟匹配和匹配口匹配同时进行时,匹配口优先权较高,另外控制口模拟匹配操作之前要求输入队列为空,以便接收结果。

深度扩展。芯片简单级联即可扩展深度,具体的扩展连接方法请参见参考文献[1]。

3 MCM69C232芯片的应用

3.1 MCM69C232在交换机中的应用

在以太网上,交换机维护一张用于二层交换的地址表(通常称为"CAM表"),该表维护MAC地址与出接口的对应关系,这样每当接收到一个以太网数据帧,交换机就会进行判断,如果该数据帧不是发送给自己的,则根据数据帧的目的MAC地址查询CAM表,如果能命中(所谓命中,就是在CAM表中找到与该MAC地址对应的转发项),则根据查询的结果(通常是一个出接口列表)进行转发;如果不能命中,则向所有端口广播该数据帧。

交换机的这张CAM表可以通过多种方式获得,比如静态匹配、动态学习。针对多播,还可以通过各种多播协议(如IGMP窥探、GMRP协议等方式)获得(多播转发表不能通过学习获得,而且多播转发项跟普通转发项不同,与其对应的出口可能不只一个,而是一个出口集合);但对于单播,最重要的一种建立方式是动态学习。

当交换机接收到一个数据帧时,提取出该数据帧的目的MAC地址,并以此为根据进行CAM表查询,如果能查找到结果,则根据结果进行数据帧的转发,如果不能命中,则对除接收端口外的所有端口进行复制。在进行数据转发的同时,交换机还进行一个学习的过程,它把数据帧的源MAC地址提取出来,查询CAM表,看CAM表中是否有针对该MAC地址的转发项,如果没有,则把该MAC地址和接收到该MAC地址的端口绑定起来,插入CAM表项,这样当接收到一个发送到该MAC地址的数据帧时,就不需要向所有端口广播,而仅向这个端口发送即可,需要注意的是,数据帧的转发是依据目的MAC地址查询MAC表,而CAM表的学习则是以源MAC地址为依据的。

之所以在交换机中使用CAM,是因为交换机对性能要求特别高, 交换机中的嵌入式实时控制系统的性能主要取决于两方面:硬件平台的运算性能和算法优越性,其中,硬件平台的运算性能最为关键,这一点在交换机中表现的尤为突出,按照设计要求,以太网帧的MAC地址的检索时间一般都是μs级,因此首先要保证数据检索任务的响应速度;除了十分繁重的数据检索任务外,交换机还必须完成SNMP(Simple Network Management Protocol)协议处理、命令行处理等任务,所以还必须解决数据检索对系统资源的占用问题,利用软件实现对以太网帧的MAC地址检索并不复杂,但由于检索次数频繁,大量的系统资源被占用,致使系统的响应速度大大降低,满足不了大流量数据通信的要求,因此纯软件算法解决不了数据检索部分占用大量资源的问题,为提高系统的响应速度,必须将数据检索的任务分离出来由硬件实现,而协议处理部分仍由CPU完成,数据检索模块和协议处理模块并行工作,利用硬件实现数据检索还可以提高检索速度,降低系统资源的占用率。在这里CAM的优势就体现出来了。



xsj065271_5.jpg


3.2 检索操作

当进行MAC地址检索时,CPU首先以MAC地址为关键字通过MAC-CAM表的检索得到对应的索引值,然后再根据索引值找到RAM表中该MAC地址对应的相关信息的存储位置,并也此地址获得相关配置信息,在RAM中的相关配置中可以存放诸如MAC地址、用户端口、有效标志域等其他信息。CAM表示RAM的映射关系如图3所示。

按协议规定MAC地址占48位,表示为6字节的数组,故对于MAC地址的匹配操作,屏蔽字设为0x0000_0000_0000_FFFF,即48位匹配,屏蔽字的设定必须在CAM初始化时完成,在执行匹配操作前,CAM须进行初始化,MCM69C232上电后,默认工作模式为基本模式,因此不必再设置工作模式,前面已提到过,CAM中MAC表的形成是通过自学习得到的,因此无需向CAM表中写入数据项。

匹配操作通过对匹配口读/写来完成,匹配口数据线MQ只有32位,由于MAC地址占48位,因此需要两次写操作才能完整地将一个MAC地址表达出来,当进行MAC地址检索时,CPU先向匹配口写入MAC地址的低32位数据,其中高16位有效,低16位可以为任意值;紧接着CPU向匹配口写入高32位数据,随后CPU读匹配口,即可得到匹配结果。

结语

采用内容可寻址存储器MCM69C232,极大的提高了数据检索速度,而这是用纯软件紧缩算法所不能比拟的,设备的数据处理能够满足了大流量网络通信的要求,使产品获得了良好的社会效益和经济效益。


 

本文摘自《单片机与嵌入式系统应用》
欢迎访问skycanny的笔记(副站)
PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户1402107 2010-7-23 16:45

KDS晶振上海唐辉电子有限公司的竞争优势:www.tang.sh.cn; 021-57155055; 第一:晶振,晶体; 32.768KHZ,5PPM;20PPM;50PPM;6pf,12.5pf,音叉型DT-14,DT-26,DT-38,贴片DMX-26S,DT-14系列;都常年常有现货!品牌日本KDS大真空,原装正品;上海唐辉电子www.tang.sh.cn的32.768KHZ的,KDS大真空,精工,MicroCRYSTAL,T7,MC-146,SM-14J,都有现货!SMD贴片的32.768KHZ都有现货!02157153998

用户1402107 2010-5-22 20:17

32.768K晶振上海唐辉电子有现货: 32.768KHZ,5PPM;20PPM;50PPM;6pf,12.5pf,音叉型DT-14,DT-26,DT-38,贴片DMX-26S,MC-146系列;耐高温品,都常年常有现货!品牌日本KDS大真空,原装正品;上海唐辉电子的32.768KHZ的,KDS大真空,精工T7,MicroCRYSTAL都有现货!SMD贴片的32.768KHZ都有现货!021-57153998,www.tang.sh.cn

用户1402107 2010-5-22 20:17

自恢复保险丝,陶瓷PTC热敏电阻华东销售处 胡新武QQ: 1025153875; 刘学先生QQ: 289777840; 徐丹QQ: 151891271; 周小红QQ: 490947973; MSN: thzxhong@hotmail.com; zhouyu0407@hotmail.com;? 上海办T: 021-57153998, 57155055, 57153855;? 传真:021-51901468; 深圳办T: 0755-26560447; 18923481289; 18923487810 传真:0755-61675608; 网站: www.tang.sh.cn; www.sea-land.com.tw;?上海地址: 201401上海市奉贤区西渡镇兴中路225号;

用户1402109 2010-4-26 20:56

32.768KHZ晶振上海唐辉电子有现货: 32.768KHZ,5PPM;20PPM;50PPM; 6pf,12.5pf,音叉型DT-14,DT-26,DT-38,贴片DMX-26S,MC-146系列; 耐高温品,都常年常有现货!品牌日本KDS大真空,原装正品; 上海唐辉电子的32.768KHZ的,KDS大真空,精工T7,MicroCRYSTAL都有现货!SMD贴片的32.768KHZ都有现货!

用户1402109 2010-4-4 12:47

Sea-Land陆海PPTC自恢复保险丝,陶瓷PTC热敏电阻华东销售处 KDS大真空晶振上海唐辉电子有限公司的竞争优势: 胡新武QQ: 1025153875; 刘学先生QQ: 289777840; 徐丹QQ: 151891271; 周小红QQ: 490947973; MSN: thzxhong@hotmail.com; zhouyu0407@hotmail.com; 上海办T: 021-57153998, 57155055, 57153855; 传真:021-51901468; 深圳办T: 0755-26560447; 18923481289; 18923487810 传真:0755-61675608; 网站: www.tang.sh.cn; www.sea-land.com.tw; 上海地址: 201401上海市奉贤区西渡镇兴中路225号; 买电子零件,找上海唐辉电子STE,总有一款适合您!~ KDS大真空晶振上海唐辉电子有限公司的竞争优势: 保险丝 KDS晶振 钟振 大真空 KDS大真空晶振 保护器件TYCO泰科瑞侃 日本京瓷晶振 PTC热敏电阻 美国Littelfuse力特保险丝 Viking光颉 高精密电阻 SMD fuse贴片保险丝 PPTC自恢复保险丝 微端Microtips液晶屏 TCXO晶振 VCXO OCXO晶振 32.768KHZ晶振 日本丸和MARUWA DMX-26S 现货

用户1402109 2010-4-4 12:47

Sea-Land陆海PPTC自恢复保险丝,陶瓷PTC热敏电阻华东销售处 KDS大真空晶振上海唐辉电子有限公司的竞争优势: 胡新武QQ: 1025153875; 刘学先生QQ: 289777840; 徐丹QQ: 151891271; 周小红QQ: 490947973; MSN: thzxhong@hotmail.com; zhouyu0407@hotmail.com; 上海办T: 021-57153998, 57155055, 57153855; 传真:021-51901468; 深圳办T: 0755-26560447; 18923481289; 18923487810 传真:0755-61675608; 网站: www.tang.sh.cn; www.sea-land.com.tw; 上海地址: 201401上海市奉贤区西渡镇兴中路225号; 买电子零件,找上海唐辉电子STE,总有一款适合您!~ KDS大真空晶振上海唐辉电子有限公司的竞争优势: 保险丝 KDS晶振 钟振 大真空 KDS大真空晶振 保护器件TYCO泰科瑞侃 日本京瓷晶振 PTC热敏电阻 美国Littelfuse力特保险丝 Viking光颉 高精密电阻 SMD fuse贴片保险丝 PPTC自恢复保险丝 微端Microtips液晶屏 TCXO晶振 VCXO OCXO晶振 32.768KHZ晶振 日本丸和MARUWA DMX-26S 现货

用户60452 2007-1-25 20:41

你要做连接的地址是什么,咱们可以交换连接啊

用户73701 2007-1-16 22:37

谢谢老大,可否给我做个友情连接!
相关推荐阅读
用户60452 2008-11-14 20:53
原创java连载--泛型(7)
类型擦除(Type Erasure)       当我们实例化一个泛型的时候,编译器使用一种叫做类型擦除(type erasure)的技术。在类型擦除的过程中,编译器会去除掉 类与接口中所有和类型参数...
用户60452 2008-11-13 22:08
原创java连载--泛型(6)
通配符       在泛型中,我们可以用一个通配符”?”来代替一个未知的类型。例如,使用下面的代码为某种animal指定一个cage:Cage<? extends Animal> some...
用户60452 2008-11-12 20:59
原创java连载--泛型(5)
泛型的子类型       只要两种类型能够相符,我们可以把一种类型的对象赋给另外一种类型的对象。例如,可以把一个Integer赋给一个Object,因为Object是Integer的父类之一。    ...
用户60452 2008-11-10 22:20
原创java连载--泛型(4)
受限的类型参数(Bounded Type Parameters)       有时候,我们要限制传递给类型参数的具体参数。例如,对数进行操作的方法就只能接受Number或者其子类的对象作为改方法的参数...
用户60452 2008-11-09 21:49
原创java连载--泛型(3)
泛型方法和构造器       如果在申明方法或者构造器的时候使用类型参数的话,就可以定义泛型方法和泛型构造器。这和定义一个普通的泛型基本上无二样,除了类型参数的作用范围只是在定义它的方法或者构造器之中...
用户60452 2008-11-08 19:13
原创java连载--泛型(2)
我们可以通过将"public class Box" 修改为 "public class Box<T>"而定义一个泛型,在这个定义中,使用了一个类型变量(type variable) T,而...
我要评论
2
10
关闭 站长推荐上一条 /3 下一条