CN101354719B - 具有增强能力的关联存储器 - Google Patents

具有增强能力的关联存储器 Download PDF

Info

Publication number
CN101354719B
CN101354719B CN2008101349461A CN200810134946A CN101354719B CN 101354719 B CN101354719 B CN 101354719B CN 2008101349461 A CN2008101349461 A CN 2008101349461A CN 200810134946 A CN200810134946 A CN 200810134946A CN 101354719 B CN101354719 B CN 101354719B
Authority
CN
China
Prior art keywords
associative
particular items
force
subclauses
indication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2008101349461A
Other languages
English (en)
Other versions
CN101354719A (zh
Inventor
威廉·N·伊瑟顿
若恩·李
班加洛·L·普里亚达尔尚
普里扬克·拉梅什·瓦尔科和德
菲松·埃尔马普
休·韦伯·霍尔布鲁克
迪利普·库马尔·德维锐迪
布尚·曼格什·卡内卡尔
文卡特斯瓦尔·拉奥·普莱拉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cisco Technology Inc
Original Assignee
Cisco Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/215,700 external-priority patent/US7065609B2/en
Application filed by Cisco Technology Inc filed Critical Cisco Technology Inc
Publication of CN101354719A publication Critical patent/CN101354719A/zh
Application granted granted Critical
Publication of CN101354719B publication Critical patent/CN101354719B/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90339Query processing by using parallel associative memories or content-addressable memories

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了使用关联存储器执行查找操作的方法和装置,所述查找操作包括但不限于基于修改映射来修改关联存储器内的检索关键字、响应于包括强制未命中指示的最高优先级匹配条目强制生成未命中条件、在各个关联存储器条目集或库中选择以确定查找结果以及检测并传输错误条件。在一种实施方式中,每个块从本地存储器中获取修改映射,并基于该映射和接收的修改数据修改接收的检索关键字。在一种实施方式中,每个关联存储器条目包括指示对条目的成功匹配应当或不应当强制生成未命中结果的字段。在一种实施方式中,从存储器中获取在特定查找操作中使用哪些关联存储器块或条目集的指示。

Description

具有增强能力的关联存储器
本申请是国际申请号为PCT/US2003/022574、国际申请日为2003年7月19日、国家申请号为03819128.8、题为“具有增强能力的关联存储器”的发明专利申请的分案申请。
技术领域
本发明特别涉及计算机和通信系统、尤其是网络路由器和交换机;更具体地说,本发明涉及用于使用关联存储器执行查找操作的方法和装置,所述关联存储器包括但不限于二进制和三进制内容可寻址存储器,所述查找操作可选地包括修改检索关键字以生成查找字,响应于匹配特定条目强制生成未命中指示,选择性地确定使用哪些关联存储器块来识别结果,和/或传播错误指示。
背景技术
通信业正在迅速地发生着变化,以适应新兴的技术和日益增长的用户需求。这种对于新应用和现有应用的增强性能的用户需求促使通信网络和系统供应商采用具有更高速度和容量(例如,更大带宽)的网络和系统。为了实现这些目标,许多通信供应商常用的方法是使用分组交换技术。目前,正越来越多地使用例如因特网协议(IP)的各种分组技术来建立和扩展公共通信网络和专用通信网络。
例如交换机或路由器的网络设备一般基于一个或多个标准接收、处理以及转发或丢弃分组,所述一个或多个分组包括分组使用的协议类型、分组地址(例如,源、目的地、群)和所要求服务的类型或质量。此外,一般对每个分组执行一项或多项安全操作。但是在可以执行这些操作之前,一般必须对分组执行分组分类操作。
访问控制列表(ACL)和转发判决等所需的分组分类是交换机和路由器设计中的要求很高的部分。由于日益增大的分组速率和分组分类数目,接收分组的分组分类正变得越来越难。例如,ACL要求以顺序检索ACL规则的语义,在分组流标签的字段子集上匹配分组。IP转发要求最长前缀匹配。
已知的分组分类的方法包括使用定制专用集成电路(ASIC)、定制电路、软件或固件控制处理器和关联存储器,所述关联存储器包括但不限于二进制内容可寻址存储器(二进制CAM)和三进制内容可寻址存储器(三进制CAM或TCAM)。每个二进制CAM的条目一般包括用于匹配的值,而每个TCAM条目一般包括值和掩码。关联存储器并行的将查找字与所有条目相比较,并一般生成匹配查找字的最高优先级的条目的指示。在二进制CAM中如果查找字和条目值相同则条目匹配查找字,而在TCAM中如果查找字和条目值中不被掩码所指示的比特相同,则条目匹配查找字,其中,被掩码所指示的比特与比较操作不相关。
关联存储器在执行分组分类操作中是非常有用的。在执行分组分类中,经常主要基于同样的检索关键字或其变量使用多个关联存储器并行地或串行地执行多个查找操作,因为一个查找操作可能与分组转发有关而另一个与服务质量的确定有关。人们期望关联存储器中新的功能、特征和机制支持分组分类和其他的应用。
此外,所有的系统都可能发生错误。例如,在某些内容可寻址存储器中,作为记次失效(failure-in-time)错误的结果,可能发生数组奇偶校验错误,记次失效错误是半导体器件中常见的错误。此外,可能发生通信和其他错误。现有的系统已知能够检测某些错误并给出信号标明已发生了某些错误条件,但是一般不能提供足够的信息以识别并隔离错误。人们期望新的功能以执行错误检测和识别。
发明内容
本发明公开了使用关联存储器执行查找操作的方法和装置。在一个实施例中,接收检索关键字,并识别修改映射。基于修改映射修改检索关键字以生成查找字。基于查找字对多个关联存储器条目执行查找操作。在一个实施例中,接收用户ID(profile ID)并基于用户ID识别修改映射,例如从存储器中获取修改映射。在一个实施例中,还接收修改数据,并通过基于修改映射以来自所述修改数据的数据替换检索关键字中的一个或多个比特或字节来修改检索关键字。
在一个实施例中,每个关联存储器条目包括第一字段和第二字段,其中,第一字段包括用于对查找字的匹配操作中的值,第二字段包括指示对条目的成功匹配应当或不应当强制生成未命中结果的数据。在一个实施例中,当执行查找操作并且包括强制未命中指示的特定条目被识别为关联存储器条目集(例如,一个或多个条目、关联存储器块、关联存储器等)中的最高优先级匹配条目时,基于该特定条目被识别为强制未命中条件,对该集合的查找操作的结果或中间结果被解释为未命中结果(即,不是对特定条目的成功命中或匹配)。
在一个实施例中,一般对于关联存储器的每个输出,从存储器中获取要选择的关联存储器条目子集的指示以确定最终的查找结果。在一个实施例中,通过一个或多个下游级联关联存储器传播所识别的错误条件指示。
附图说明
所附权利要求具体阐明了本发明的特征。从下面结合附图的详细描述中,可以最好地理解本发明及其优点,在附图中:
图1A-E是包括一个或多个使用关联存储器执行查找操作的实施例的各种示例性系统的方框图。
图2是包括一个或多个执行查找操作的实施例的关联存储器的方框图;
图3A-D图示了用于一个执行查找操作的实施例中的控制的各方面;
图4A-G图示了用于一个执行查找操作的实施例中的关联存储器块的各方面;以及
图5A-C图示了用于一个执行查找操作的实施例中的输出选择器的各方面。
具体实施方式
本发明公开了使用关联存储器执行查找操作的方法和装置,所述查找操作包括但不限于基于修改映射修改关联存储器内的检索关键字、响应于包括强制未命中指示的最高优先级匹配条目强制生成未命中条件、在各个关联存储器块或集或关联存储器条目库中选择以确定查找结果以及检测并传输错误条件。这里描述的实施例包括各种因素和限制,其中没有一个因素和限制是不可或缺的。每个权利要求独立地从整体上陈述了本发明的某一方面。而且,除了其他以外,描述的某些实施例可包括但不限于系统、网络、集成电路芯片、嵌入式处理器、ASIC、方法和包含指令的计算机可读介质。下文中描述的实施例实施了本发明范围和精神内的各个方面和各种配置,而附图图示了示例性的和非限制性的配置。
术语“分组”在这里被用来指所有类型的分组或任何其他的信息或数据单位,包括但不限于固定长度单元和可变长度分组,其中的每一个都可以被分割为更小的分组或单元,也可以不被分割为更小的分组或单元。术语“分组”在这里也用来指分组自身以及分组指示,例如但不限于分组或分组头的全部或部分、数据结构值、指针或索引、或者分组的任何其他的部分或标识。而且,这些分组可包含一种或多种类型的信息,包括但不限于语音、数据、视频和音频信息。术语“项”在这里被用来指分组或任何其他的信息或数据单位或块。短语“处理分组”和“分组处理”一般指的是基于分组执行某些步骤或动作,并且所述某些步骤或动作可以包括修改和/或转发分组,也可以不包括修改和/或转发分组。
术语“系统”在这里一般被用来描述任何数目的组件、元件、子系统、设备、分组交换元件、分组交换机、路由器、网络、计算机和/或通信设备或机制,或者这些组件的组合。术语“计算机”在这里一般被用来描述任何数目的计算机,包括但不限于个人计算机、嵌入式处理元件和系统、控制逻辑、ASIC、芯片、工作站、主机等等。术语“处理元件”在这里一般被用来描述任何类型的处理机制或设备,例如处理器、ASIC、现场可编程门阵列、计算机等等。术语“设备”在这里一般被用来描述任何类型的机制,包括计算机或系统或其组件。术语“任务”和“过程”在这里一般被用来描述任何类型的运行程序,包括但不限于计算机进程、任务、线程、执行应用、操作系统、用户进程、设备驱动、本地代码、机器或其他语言等等,并且可以是交互式的和/或非交互式的、可以在本地和/或远程执行、可以在前台和/或后台执行、可以在用户端和/或操作系统地址空间中执行、可以是程序库和/或孤立应用,并且不限于任何具体的存储器分区技术。附图中图示的步骤、连接以及信号和信息的处理包括但不限于任何方框和流程图以及消息序列图,这些步骤、连接以及信号和信息的处理可以相同的或不同的串行或并行顺序执行,以及/或者由不同的组件和/或进程、线程等执行,以及/或者经由不同的连接执行,并且这些步骤、连接以及信号和信息的处理可以与其他实施例中的其他功能组合,仍然在本发明的范围和精神内。
而且,术语“网络”和“通信机制”在这里一般被用来描述一个或多个网络、通信介质或通信系统和例如消息传递、进程间通信、共享存储器等的内部通信机制,其中,所述通信介质或通信系统包括但不限于因特网、个人或公共电话、蜂窝的、无线的、卫星的、电缆的局域、城域和/或广域网络,电缆的、电气的连接、总线等等。
术语“存储机制”包括任何类型的存储器、存储设备或者用来以任何格式维持指令或数据的其他机制。“计算机可读介质”是一个可扩展术语,其包括任何存储器、存储设备、存储机制和其他存储和信令机制,所述其他存储和信令机制包括例如为网络接口卡及其中的缓冲器的接口和设备、任何通信设备与所接收和发送的信号、以及计算机化的系统可以中断、接收和/或发送的其他当前技术和正在发展的技术。术语“存储器”包括任何随机存取存储器(RAM)、只读存储器(ROM)、闪存、集成电路和/或其他存储器组件或元件。术语“存储设备”包括任何固态存储介质、磁盘驱动器、磁盘、网络化服务、磁带驱动器和其他存储设备。存储器和存储设备可以存储将由处理元件和/或控制逻辑执行的计算机可读指令,以及由处理元件和/或控制逻辑操作的数据。术语“数据结构”是可扩展的术语,其指任何数据元素、变量、数据结构、数据库和/或一种或多种组织方案,所述方案可以被应用到数据,来使得便于解释该数据,或者便于对数据执行操作,所述方案例如但不限于存储单元(memorylocation),或者设备、集合、队列、树、堆、列表、链接表、数组、表、指针等。数据结构一般维持在存储机制内。
术语“指针”和“链接”在这里一般被用来识别某些用于引用或者识别另一个元件、组件或其他实体的机制,这些可以包括,但又不限于对存储器或者其他存储机制或者其中的存储单元、数据结构中的索引、值等的引用。术语“关联存储器”指任何类型已知的或者将来会开发出来的关联存储器,包括但不限于二进制和三进制内容可寻址存储器、哈希表、TRIE和其他数据结构等。
术语“一个实施例”在这里用来指一个具体实施例,其中每次引用“一个实施例”可以指不同的实施例,并且在这里使用该术语描述相关联的特征、元素和/或限制时,尽管一个实施例一般可以包括所有这些特征、元素和/或限制,但是反复使用该术语并不建立每个实施例都必须包括的相关联特征、元素和/或限制的累加集合。另外,短语“用于xxx的装置”一般包括计算机可读介质,所述介质包含有用于执行xxx的计算机可执行指令。
另外,术语“第一”、“第二”等在这里一般被用来表示不同的单元(例如,第一元件、第二元件)。这里使用这些术语并不必然意味着具有顺序,例如一个单元或者事件在另一个之前发生或者到来,而是提供了一种区分具体单元的机制。此外,名词单数时态的使用是非限制性的,其使用一般包括一个或多个具体的项,而不是刚好一个(例如,使用词“存储器”一般指一个或多个存储器,而不用必须指定“存储器或多个存储器”、或“一个或多个存储器”、或“至少一个存储器”等)。而且,短语“基于x”和“响应于x”被用来指出项x的最小集合,从该项x的最小集合中可导出或导致某事或某物,其中“x”是可扩展的,而且没有必要描述在其上执行操作等的项的完整列表。此外,短语“耦合到”被用来指示两个元件或设备之间的某种级别的直接连接或间接连接,耦合的一个设备或者多个设备修改或不修改所耦合的信号或所传输的信息。术语“子集”被用来指示一组集合的所有元素或不到所有的元素。而且,术语“或者”在这里被用来识别一个或多个连接项、包括所有连接项的可替代选择。
本发明公开了使用关联存储器执行查找操作的方法和装置,所述查找操作包括但不限于基于修改映射修改关联存储器内的检索关键字、响应于包括强制未命中指示的最高优先级匹配条目强制生成未命中条件、在各个关联存储器块或集或关联存储器条目库中选择以确定查找结果以及检测并传输错误条件。在一个实施例中,每个块从本地存储器中获取修改映射,并基于该映射和接收的修改数据修改所接收的检索关键字。在一个实施例中,每个关联存储器条目包括指示对条目的成功匹配应当或不应当强制生成未命中结果的字段。在一个实施例中,从存储器中获取在具体查找操作中使用哪些关联存储器集或库或条目的指示。
一个实施例通过识别、处理和传送错误执行错误检测和处理,所述错误可包括但不限于关联存储器条目中的数组奇偶校验错误和通信错误,所述通信错误例如是协议错误和输入端口上的接口错误。数组奇偶校验错误的发生可能是记次失效错误的结果,所述记次失效错误一般存在于半导体器件中。一个实施例包括一种机制,所述机制在后台扫描关联存储器条目,并且识别出任何检测的错误,并将其发送回控制处理器,以重写或更新有缺陷的条目。在一个实施例中,某些识别出的错误或接收的错误条件是致命性的,在其中不能执行任何处理。例如在一个实施例中,致命错误导致异常中断条件。作为响应,该器件停止进行中的查找操作,并仅仅转发错误和可能未命中信号。一般地说,在包括关联存储器的系统中,如果进行中的查找操作未被中断,则在查找操作生成其结果时生成错误和可能未命中信号,以维持器件之间的时序。
在一个实施例中,传输包括级联或连接的关联存储器设备、指示任何错误类型的错误状态消息以及其对应源的信息以指示到下一个设备和/或控制处理器的错误状态。另外,传送的信号可指示并在接收设备中生成异常中断条件。在一个实施例中,接收设备不执行其下一个操作或接收指令,或者接收设备可能中断其当前操作或指令。而且,接收设备可能延时,也可能不延时这样的时间量以尽可能地维持操作的事务序列的时序,所述时间量对应于接收设备的处理执行或完成该操作或指令所需的时间。
图1A-E是各种示例性系统和其配置的方框图,这些示例性系统包括使用关联存储器执行查找操作的一个或多个实施例。首先,图1图示了系统的一个实施例,所述系统可以是路由器或者其他通信或计算机系统,用于执行查找操作以产生可用在分组处理中的结果。在一个实施例中,控制逻辑110经由信号111对一个或多个关联存储器115进行编程和更新,所述一个或多个关联存储器115例如但不限于一个或多个关联存储器设备、库(bank)和/或关联存储器条目集,所述关联存储器条目可以是也可以不是相同的关联存储器设备和/或库的一部分。在一个实施例中,控制逻辑110还经由信号123对存储器120编程。在一个实施例中,控制逻辑110包括定制电路,所述定制电路例如但不限于分立电路、ASIC、存储器设备、处理器等。
在一个实施例中,分组处理器105接收分组101。除了其他操作(例如,分组路由、安全等)之外,分组处理器105一般基于一个或多个接收的分组101中的一个或多个字段以及可能从存储在数据结构中或从其他来源获得的信息,生成包括但不限于一种或多种分组流标识符的一个或多个项。分组处理器105一般产生查找值103,查找值103被提供给控制逻辑110以向一个或多个关联存储器115提供控制和数据信息(例如,查找字、修改数据、用户(profile)ID等),一个或多个关联存储器115执行查找操作并生成一个或多个结果117。在一个实施例中,结果117被存储器120用来产生结果125。然后,控制逻辑110基于结果117和/或结果125,转发结果107到分组处理器105。作为响应,一个或多个接收的分组被分组处理器105操作和转发,如分组109所指示的那样。注意,结果117、125和107可包括错误条件的指示。
图1B图示了一个使用关联存储器执行查找操作的实施例,所述查找操作包括但不限于基于修改映射修改关联存储器内的检索关键字、响应于包括强制未命中指示的最高优先级匹配条目强制生成未命中条件、在各个关联存储器块或集或关联存储器条目库中选择以确定查找结果以及检测并传输错误条件。控制逻辑130经由信号132对一个或多个关联存储器136编程。另外,控制逻辑130向一个或多个关联存储器136提供控制和数据信息(例如,查找字、修改数据、用户ID等),一个或多个关联存储器136执行查找操作以生成结果和错误信号134,结果和错误信号134由控制逻辑130接收。
图1C图示了一个使用关联存储器执行查找操作的实施例,所述查找操作包括但不限于基于修改映射修改关联存储器内的检索关键字、响应于包括强制未命中指示的最高优先级匹配条目强制生成未命中条件、在各个关联存储器块或集或关联存储器条目库中选择以确定查找结果以及检测并传播错误条件。控制逻辑140经由信号141-143对关联存储器146-148编程。另外,控制逻辑140向关联存储器146-148提供控制和数据信息(例如,查找字、修改数据、用户ID等),关联存储器146-148执行查找操作以生成结果和错误信号144-145。如图所示每个累进级转发错误消息到下一级关联存储器或控制逻辑140。例如,关联存储器148经由信号145转发错误指示到控制逻辑140,其中,错误指示经由信号144接收。
而且,在一个实施例中,在器件140和146-148之间传送的消息141-145中包括同步比特字段,其值以预定的周期间隔设置或改变,从而使得每个器件140、146-148都可预期该变化。一个实施例使用单个同步比特,如果该比特在到器件146-148的请求或输入数据141-145中设置,则器件146-148将在对应的回复或输出数据143-145中设置该比特。例如,在一个实施例中,控制处理器或逻辑140在其请求数据141中周期性地设置同步比特,也即每八个请求一次。控制处理器或逻辑140也在回复数据145中监视同步比特。如果有任意种类的错误改变了控制处理器或逻辑140与关联存储器146-148之间的请求-回复关联(或事务时序),则控制处理器或逻辑140可检测到该错误,并从该错误恢复(通过刷新流水线等)。
以这种方式,器件尤其是那些作为事务序列的一部分的器件,可以彼此之间保持同步。当例如发生错误条件时,如传送的指令信号中的未检测出的奇偶校验错误(例如,奇偶校验错误数超过了错误检测机制),器件之间的再同步是很重要的。存在这样的可能性,即指令中的奇偶校验错误未被检测出,且完全改变了事务时序。同样地,可能存在其他类型的“未知”错误,使得控制处理器或逻辑与关联存储器链之间脱离同步。
图1D图示了一个使用关联存储器执行查找操作的实施例,所述查找操作包括但不限于基于修改映射修改关联存储器内的检索关键字、响应于包括强制未命中指示的最高优先级匹配条目强制生成未命中条件、在各个关联存储器块或集或关联存储器条目库中选择以确定查找结果以及检测并传播错误条件。控制逻辑150经由信号151-153对关联存储器156-158编程。另外,控制逻辑150向关联存储器156-158提供控制和数据信息(例如,查找字、修改数据、用户ID等),关联存储器156-158执行查找操作以生成结果和错误信号154-155,结果和错误信号154-155被传送到控制逻辑150。
图1E图示了系统180,系统180可以是路由器或者其他通信或计算机系统的一部分,在一个实施例中,系统180用于当执行查找操作时在多个关联存储器单元之间分发条目并选择性地使能部分的关联存储器单元。在一个实施例中,系统180包括处理元件181、存储器182、存储设备183、一个或多个关联存储器184以及连接到其他设备的接口185,这些组件经由一种或多种通信机制189(为了说明目的,图示为总线)耦合在一起。
系统180的各种实施例可包括或多或少的元件。系统180的操作一般由处理元件181使用存储器182和存储设备183控制,以执行一个或多个任务或进程,例如使用一个或多个关联存储器184编程以及执行查找操作。存储器182是一种类型的计算机可读介质,一般包括随机存取存储器(RAM)、只读存储器(ROM)、闪存、集成电路和/或其他存储器组件。根据本发明的一个实施例,存储器182一般存储要被处理元件181执行的计算机可执行指令和/或被处理元件181操作的数据以实现功能。存储设备183是另一种类型的计算机可读介质,一般包括固态存储介质、磁盘驱动器、磁盘、网络化服务、磁带驱动器和其他存储设备。根据本发明的一个实施例,存储设备183一般存储要被处理元件181执行的计算机可执行指令和/或被处理元件181操作的数据以实现功能。
在一个实施例中,处理元件181向一个或多个关联存储器184提供控制和数据信息(例如,查找字、修改数据、用户ID等),一个或多个关联存储器184执行查找操作以生成查找结果和可能错误指示,查找结果和可能错误指示被处理元件181接收并使用以及/或者经由接口185被传送到其他设备。
图2图示了用在一个使用关联存储器执行查找操作的实施例中的关联存储器200,所述查找操作包括但不限于基于修改映射修改关联存储器内的检索关键字、响应于包括强制未命中指示的最高优先级匹配条目强制生成未命中条件、在各个关联存储器块或集或关联存储器条目库中选择以确定查找结果以及检测并传播错误条件。如图所示,控制逻辑210接收可包括编程信息的输入控制信号202。控制逻辑210可依次地更新其内部的信息和数据结构,对关联存储器块218-219和/或输出选择器231-232编程/更新。注意,在一个实施例中,每个关联存储器块218-219包括一个或多个关联存储器集或关联存储器条目库以及用于执行查找操作的逻辑或电路。
在一个实施例中,输入数据210被关联存储器200接收,并被分发至关联存储器块218-219,并且在级联配置中可能被转发至其他的下游关联存储器,其中,输入数据210可包括但不限于检索关键字和修改数据。另外,输入控制信息202被控制逻辑接收,并且在级联配置中可能被转发至其他的下游关联存储器,其中,输入控制信息202可包括但不限于用户ID(例如,值)、指令、编程信息。另外,在一个实施例中,在级联配置中从前级的关联存储器接收前级的查找结果和/或错误指示或者由控制逻辑210从其他设备接收前级的查找结果和/或错误指示。注意,在一个实施例中,输入数据201、输入控制202、前级结果和错误203和/或其中的一部分被直接传送到关联存储器块218-219和/或输出选择器231-232。
控制逻辑210可能处理接收的信息,并且/或者经由块控制信号211-212将接收的信息转发至关联存储器块218-219,以及经由选择器控制信号和前级结果215(一般包括接收的用户ID)将接收的信息转发至输出选择器231-232。另外,控制逻辑210可基于在接收的信息中检测到的错误或者响应于接收的错误条件指示,生成错误信号216。注意,在一个实施例中,控制逻辑210仅仅分割或重新生成整个接收的输入控制202和可选前级结果和错误203的一部分,作为选择器控制信号和前级结果信号215和/或错误信号216。另外,控制逻辑210可以启动异常中断操作,其中,由于检测到的或接收到的错误条件通知,不会发生查找操作。
在一个实施例中,控制逻辑210识别这样的数据,所述数据代表了使能哪些关联存储器块218-219、每个输出选择器231-232应当考虑哪些关联存储器块218-219以确定其查找结果、和/或每个关联存储器块218-219在修改输入检索关键字时应当使用的修改映射。在一个实施例中,基于接收的输入控制信息202(例如,用户ID或其他指示),从一个或多个存储器、数据结构和/或其他存储机制中获取该数据。然后,该信息经由块控制信号211-212被适当地传送到关联存储器块218-219,以及/或者经由选择器控制信号和前级结果信号215被传送到输出选择器231-232。
在一个实施例中,每个关联存储器块218-219经由信号201接收检索关键字和可能修改数据,并且经由块控制信号211-212接收可能控制信息。然后,每个使能的关联存储器块218-219基于接收的检索关键字执行查找操作,查找操作可包括基于接收的修改数据和/或修改映射,通过修改检索关键字的某些部分生成查找字。每个关联存储器218-219一般生成结果228-229,每个结果228-229被传送到输出选择器231-232中的每一个。在一个实施例中,每个未被使能的关联存储器块218-219生成未命中信号作为其相应结果228-229。在一个实施例中,输出选择器231-232接收未被使能的关联存储器块218-219的指示。
输出选择器231估计关联存储器结果228-229以产生结果240。在一个实施例中,每个输出选择器具有对应的已识别出的关联存储器结果228-229的静态或动态的子集,以估计确定结果240。在一个实施例中,该对应子集的标识经由选择器控制信号215被提供给每个输出选择器231-232。在一个实施例中,每个输出选择器231-232经由选择器控制信号215接收用户ID,并基于接收的用户ID执行存储器查找操作,以获取具体关联存储器结果228-229的指示来估计确定结果240。
而且,在一个实施例中,结果240经由一个或多个输出总线240输出,所述一个或多个输出总线240中的每一个连接到关联存储器芯片的一个或多个管脚的不同集合。在一个实施例中,所使用的输出总线数目和它们到输出选择器231-232的连接是静态的,而在另一个实施例中,所使用的输出总线数目和它们到输出选择器231-232的连接是可配置的,例如,在初始化时或者对于每次或多个查找。在一个实施例中,输出选择器231-232接收输出总线指示,并使用输出总线指示来确定使用哪一个或哪几个输出总线。例如,该判决可包括但不限于直接解释接收的输出总线指示、基于接收的输出总线指示执行存储器读操作等等。在一个实施例中,输出选择器231-232基于用户ID执行存储器存取操作以确定对于特定查找操作使用哪一个或哪几个输出总线。从而,取决于配置,可以选择性地使用单个或多个输出总线/管脚以传送结果240,并且可能基于同时接收的多个结果相对于所需要的管脚数之间的平衡而作出该判决。
关联存储器200提供了许多强大功能以同时产生一个或多个结果240。例如,在一个实施例中,控制逻辑210基于接收的用户ID识别使能一个或多个关联存储器块中的哪些,然后将其使能,并向输出选择器231提供用户ID以在多个关联存储器块218-219之间选择查找结果。每个关联存储器块218-219可基于用户ID接收/识别修改映射,该修改映射对于该关联存储器块可能是唯一的。然后,该修改映射可与接收的修改数据一起被用来改变接收的检索关键字中的一部分,以产生被用于查找操作中的实际的查找字。同样地,如果对应的条目被识别为匹配查找字的最高优先级条目,则对于对应的关联存储器块218-219,可以强制未命中指示对这些条目编程以生成未命中结果。这些被使能的关联存储器218-219中的每一个一般生成这样的结果(例如,未命中、命中最高优先级匹配条目或其位置被识别),所述结果一般被传送至输出选择器231-232中的每一个。注意,在一个实施例中,这些结果只被传送到这样的特定输出选择器231-232,所述特定输出选择器231-232将在选择接收自关联存储器块218-219的各个最高优先级结果和来自前级关联存储器的其他可能查找结果时,考虑该具体结果。另外,在某些配置中,多个关联存储器200被以其他方法级联或耦合,从而使得来自一个或多个级的结果可依赖于前级结果,从而可编程使得跨过多个关联存储器200执行查找。由关联存储器200提供的这些和其他的构造及其配置使用一级或多级关联存储器200,提供了强大的可编程查找检索能力和结果选择机制,其中,每个关联存储器200包括N个关联存储器块218-219和M个输出选择器231-232。在一个实施例中,在各个关联存储器200中N和M的实际值可以不同。
图3A图示了用在一个实施例中的关联存储器的控制300(可以对应于图2的控制逻辑210,也可以不对应于图2的控制逻辑210)。如图所示,控制300包括控制逻辑310和存储器311。在一个实施例中,接收编程信号303,并且作为响应,更新存储器311中的一个或多个数据结构。另外,控制逻辑生成编程信号318。在一个实施例中,编程318与编程信号303相同,从而可使用物理连接,而不是经过控制逻辑310传输。编程过程的一个实施例如图3C所示,该处理开始于过程框380。然后,处理前进到过程框382,在其中接收编程信号。下一步,在过程框384,更新数据结构和其他元件(例如,关联存储器块、输出选择器等)。过程框386指示处理完成。
返回图3A,在执行查找操作时,控制逻辑310接收输入数据301、输入控制302和可选的前级结果和错误304(如在级联的关联存储器配置中)。作为响应,引用存储器311中的一个或多个数据结构。控制逻辑310生成输入数据314、块控制信号315、输出选择器控制信号和(可选地)前级结果316,还可能生成错误信号319,错误信号319指示检测的错误条件或接收的错误指示符。在一个实施例中,输入数据314与输入数据301相同,从而可使用物理连接,而不是经过控制逻辑310传输。
图3B图示了用在一个实施例中的一种数据结构集。对于使用的每个用户ID 321,以关联存储器块使能指示符325对使能数组320编程。每个关联存储器块使能指示符325标识对于给定查找操作使能哪些关联存储器块。从而,基于经由输入控制302(图3A)接收的用户ID 321,可以从存储器311(图3A)中获取使能数组320,然后使能数组320可被用来生成包括在块控制信号315(图3A)中的关联存储器块使能信号。在一个实施例中,关联存储器块使能指示符325是位图数据结构,而在另一个实施例中,关联存储器块使能指示符325是列表、集合、数组或任何其他的数据结构。
用输出选择器ID 335对输出选择器数组330编程,输出选择器ID 335用于标识对于每个元组(tuple)(用户ID 331、关联存储器块ID 332)是哪个输出选择器,所述输出选择器例如但不限于输出选择器231-232(图2)。从而,基于经由输入控制302(图3A)接收的用户ID 331,对于每个关联存储器块ID 332可识别出输出选择器ID 335。在一个实施例中,输出选择器ID 335是数值标识符,而在另一个实施例中,输出选择器ID 335是任意值或数据结构。
对于每个元组(用户ID 341、输出选择器ID 342)以修改映射345对修改映射数组340编程。从而,基于经由输入控制302(图3A)接收的用户ID 341,对于每个输出选择器ID 342可识别出修改映射345。在一个实施例中,每个修改映射是这样的数据结构,所述数据结构标识如何以接收的修改数据修改接收的检索关键字。
图3D图示了用在一个实施例中的用于启动查找操作的处理。处理开始于过程框360,并前进到过程框362,在过程框362接收输入数据和控制信号。下一步,在过程框364,接收任何前级结果和错误指示。如在过程框366所确定的,如果应当执行异常中断操作,例如但不限于响应于接收到的致命错误指示或识别出的致命错误指示,则处理前进到过程框374(将在下文中论述)。否则,在过程框368,基于用户ID接收使能位图、输出选择器配置和修改映射。下一步,在过程框370,基于获取和接收的信息,将数据和控制信号转发至关联存储器块和输出选择器。如在过程框372所确定的,如果识别出错误条件或已接收到错误条件,则在过程框374,生成或转发错误指示,所述错误指示一般包括错误类型和其来源的指示。过程框376指示处理完成。
图4A图示了用在一个实施例中的关联存储器块400。关联存储器块400一般包括控制逻辑410与关联存储器条目、全局掩码寄存器(globalmask registers)、运行逻辑和优先级编码器412(例如,对接收的查找字执行关联存储器匹配操作的元件)。在一个实施例中,关联存储器条目的集合被归集为关联存储器条目库。在一个实施例中,接收编程信号401,并且作为响应,更新方框412中的一个或多个关联存储器条目和/或全局掩码寄存器。在一个实施例中,关联存储器块400对应于一个关联存储器条目集或库以及一种对该关联存储器条目集或库执行查找操作以产生一个或多个结果的机制。在一个实施例中,关联存储器块400中不包括掩码寄存器。
而且,关联存储器块400的一个实施例包括存储配置信息的存储器413,这样可允许关联存储器块400从存储器413获取信息,而不是从另外的来源处接收信息。例如,在一个实施例中,修改映射数据(例如,图3B的修改映射345)或其他信息被编程进存储器413中。然后,关联存储器块400例如基于接收的用户ID(例如,而不是接收修改映射信号404)获取修改映射信息。
另外,在一个实施例中,接收检索关键字402、修改数据403、修改映射404、使能信号405、全局掩码使能信号406和全局掩码选择信号407。响应于执行查找操作和/或检测错误条件,例如一个关联存储器条目中的奇偶校验故障,生成结果和错误指示411。在一个实施例中,在后台检查关联存储器条目的奇偶校验错误。联系图4B-4G进一步描述了在一个实施例中这些信号和信息的使用。
转到图4B,一个实施例包括用于对关联存储器条目416的查找操作中的多个全局掩码寄存器415。全局掩码使能信号406使能全局掩码寄存器的使用,而全局掩码选择407标识对于每个关联存储器条目应用多个掩码中的哪一个。查找字414被应用到关联存储器条目416,并且可能使用一个或多个存储在全局掩码寄存器415中的全局掩码,以生成命中/未命中指示417与可能命中位置418和/或错误指示419,417、418和/或419被直接或非直接地合并进结果和错误指示411中(图4A)。
图4C图示了用在一个实施例中的错误指示420。如图所示,错误指示420包括错误指示421,错误指示421用于标识其中是否有错误指示或可能的错误指示的数目。对于任何识别的错误指示或接收的错误指示,在一个或多个错误描述符422-423中包括有每个错误的编码描述。在一个实施例中,位图被用于一个或多个错误描述符422-423,其中,每个比特代表可能的错误条件,且比特值指示对应的错误是否已被识别(包括从在先的组件或级接收)。在一个实施例中,每个错误描述符422-423对应于不同的组件、接口或前级。在一个实施例中,错误指示420被其他组件用于传送错误条件或其不足。
图4D图示了用在一个实施例中的关联存储器条目430。如图所示,关联存储器条目430包括值431、可选掩码432、强制未命中指示433、有效/无效标记434和错误检测值435。错误检测值435可以是一个或多个奇偶校验比特、循环冗余校验和或者对应于任何其他用于检测数据损坏错误的机制的值。在一个实施例中,值431的宽度可配置。在一个实施例中,该可配置宽度包括80比特、160比特和320比特。在一个实施例中,例如在二进制内容可寻址存储器中,不包括掩码字段432。在一个实施例中,掩码字段432的宽度是可变的,并且一般与值字段431的宽度相匹配,尽管这一点不作要求。在一个实施例中,字段431-435存储在单个物理存储器中;而在另一个实施例中,字段431-435存储在多个物理存储器中。
图4E图示了用在一个实施例中的基于修改映射和修改信息修改检索关键字的机制。如图所示,修改映射比特443被用来控制选择器440,选择器440选择检索关键字单位(例如,一个或多个比特、字节等)441或者修改数据单位442中的任一个作为查找单位445的值,在查找操作中,查找单位445一般是用在匹配关联存储器条目中的实际查找字的一部分。
图4F图示了用在一个实施例中的基于修改映射450和修改数据454修改检索关键字456的机制。在一个实施例中,修改映射450对应于修改映射345(图3B)。如图4F所示,修改映射450包括源部分451和目的地部分452。参照图4F靠下的部分,修改数据454包括四个字节,检索关键字456包括八个字节。修改映射450的源部分451标识修改数据454的哪些字节被用于生成查找字458,而修改映射450的目的地部分452标识修改数据454使用的对应字节被放置在查找字458中的何处,查找字458中的其余字节来自检索关键字456。换句话说,修改映射450和修改数据454被用来替换检索关键字456中某些指定的数据单元,以产生将被用于匹配关联存储器条目的值。当然,对于修改映射450和修改数据454,各个实施例使用不同的比特数和字节数。在一个实施例中,修改映射450包括检索关键字456要修改部分(例如,在一个实施例中为J的值,高位字节、低位字节等)的指示。
图4G图示了用在一个实施例中的执行查找操作的关联存储器处理过程。处理开始于过程框470,并前进到过程框472。如果关联存储器未被使能,则处理前进到过程框490,在过程框490生成未命中指示的结果,并且处理继续前进到过程框484。否则,在过程框474,一般基于检索关键字、修改映射和修改数据确定查找字。注意,在一个实施例中,检索关键字被用作查找字,并且不存在修改映射或修改数据的概念。下一步,在过程框476,如果有所选择和使能的全局掩码,则考虑到该全局掩码,使用查找字来匹配关联存储器条目。注意,在一个实施例中,不存在全局掩码的概念。
如在过程框478所确定的,如果识别出至少一个匹配,则处理前进到过程框480,否则前进到过程框490,在过程框490生成带有未命中指示的结果,并且处理前进到过程框484。否则,如在过程框480所确定的,如果具有最高优先级的匹配条目包括强制未命中指示,则处理前进到过程框490,在过程框490生成带有未命中指示的结果,并且处理前进到过程框484。否则,在过程框482,生成指示命中(即,成功匹配)且识别出具有最高优先级的匹配条目的结果。
在过程框484,将结果传送至至少已识别出的单个或多个输出选择器。在一个实施例中,要向其传送结果的输出选择器由输出选择器ID 335(图3B)标识。如在过程框486所确定的,如果识别或接收到错误条件,则在过程框492生成指示错误类型和位置的信号。在一个实施例中,使用错误指示420(图4C)。过程框499指示处理完成。
图5A图示了用在一个实施例中的输出选择器500(可以对应于图2的输出选择器231-232,也可以不对应于图2的输出选择器231-232)。如图所示,输出选择器500包括控制逻辑510和存储器511。在一个实施例中,接收编程信号504,并且作为响应,更新存储器511中的一个或多个数据结构。
图5B图示了用在一个实施例中的一个数据结构。对于使用的每个用户ID 521,以可用的关联存储器块和可选的前级结果指示符525对可用数组520编程。每个指示符525标识如果有任何的关联存储器块、条目集或关联存储器库存在,则考虑其中的哪些来确定选择哪个匹配关联条目作为最终的最高优先级匹配关联存储器条目。在一个实施例中,指示符525还标识考虑哪些前级结果。从而,基于经由选择器控制信号501(图5A)接收的用户ID 521,可从存储器511(图5A)中获取可用数组520。在一个实施例中,关联存储器块和任何前级结果的优先级次序是隐含的,而在另一个实施例中,用于确定最终的最高优先级匹配条目的该优先级次序是可编程的以及/或者是每次查找操作可变的。在一个实施例中,可用的关联存储器块指示符525位图数据结构,而在另一个实施例中,可用的关联存储器块指示符525是列表、集合、数组或任何其他数据结构。
回到图5A,在查找操作的执行过程中,输出选择器500接收可包括用户ID的选择器控制信号501。另外,输出选择器500从零个或多个关联存储器块中接收任何相关的前级结果502和结果503,其中,将从零个或多个关联存储器块中选择最高优先级的条目,并且如果存在的话,将在生成的结果515中标识。
而且,在一个实施例中,选择器控制信号501包括使能指示,使能指示包括被使能的或不被使能的值,从而使得无论何时当接收不被使能的值时,输出选择器500都不被使能,且不从来自块1-N的结果503或可选前级结果502中选择。在一个实施例中,当不被使能时,输出选择器500生成结果信号515,结果信号515告知未命中、不被使能、或某些其他的预定或浮点值。
另外,在一个实施例中,结果515通过固定的输出总线传送,该结果515可以与其他输出选择器500生成的其他结果515复用,也可以不复用。在一个实施例中,关联存储器可包括一个或多个输出总线,每个输出总线一般连接到关联存储器芯片的单个管脚,具体输出总线的选择可能是硬连线的或可配置的,配置可能基于每次查找进行,例如可以从接收值或从存储器中获取的配置信息确定(例如,基于当前用户ID)。在这样的配置中,控制逻辑510(或其他机制)一般选择对于具体或所有的结果515,使用哪个输出总线(和发送结果515的时序)。
图5C图示了用在一个实施例中的用于接收并选择最高优先级关联存储器条目的处理过程,如果该条目存在的话。处理开始于过程框540,并前进到过程框542,在过程框542接收来自关联存储器块的结果和用户ID。在过程框544,基于用户ID从数据结构/存储器中获取在确定结果时要考虑的关联存储器块的集合。在过程框546,从耦合的关联存储器中接收任何相关的前级结果。下一步,在过程框548,从可用的关联存储器块和前级结果中识别出最高优先级匹配,如果存在的话。然后,在过程框550,结果通过固定的或识别出的输出总线/管脚传送,或者被传送到某些其他目的地,该结果一般包括未命中指示或命中指示以及最终的最高优先级匹配关联存储器条目的标识。过程框552指示处理完成。
考虑到本发明的原理可以被应用到许多可能的实施例,应当理解,这里参照附图描述的本发明的实施例和各方面仅是说明性的,不应当被用作限制本发明的范围。例如,对于本领域的技术人员来说以下是很清楚的,即可以对许多的过程框操作重新排序,以在其他操作之前执行、在其他操作之后执行或者与其他操作实质上同时执行。同样地,在各种实施例中可以使用许多不同形式的数据结构。这里描述的本发明企图将所有这些实施例都囊括在所附权利要求及其等同物的范围内。

Claims (12)

1.一种用于生成查找结果的设备,包括:
用于基于查找字对包含要被匹配的值的多个关联存储器条目执行查找操作以识别作为最高优先级匹配条目的特定条目的装置,所述多个条目中的特定条目至少包括强制未命中指示,所述强制未命中指示标识对所述特定条目的成功匹配应当或不应当强制生成未命中结果;以及
用于响应于特定条目被识别为所述最高优先级匹配条目并且所述特定条目包括所述强制未命中指示,生成未命中信号的装置。
2.如权利要求1所述的设备,其中,所述多个关联存储器条目中的每一个是三进制或二进制内容可寻址存储器条目。
3.如权利要求2所述的设备,包括:用于用所述要被匹配的值编程所述多个关联存储器条目并用所述强制未命中指示编程所述多个关联存储器条目中的所述特定条目的装置。
4.如权利要求1所述的设备,包括:用于用所述要被匹配的值编程所述多个关联存储器条目并用所述强制未命中指示编程所述多个关联存储器条目中的所述特定条目的装置。
5.一种用于生成查找结果的方法,所述方法包括:
基于查找字对包含要被匹配的值的多个关联存储器条目执行查找操作,以识别作为最高优先级匹配条目的特定条目,所述多个条目中的特定条目至少包括强制未命中指示,所述强制未命中指示标识对所述特定条目的成功匹配应当或不应当强制生成未命中结果;以及
响应于特定条目被识别为所述最高优先级匹配条目并且所述特定条目包括所述强制未命中指示,生成未命中信号。
6.如权利要求5所述的方法,其中,所述多个关联存储器条目中的每一个是三进制或二进制内容可寻址存储器条目。
7.如权利要求6所述的方法,包括:用所述要被匹配的值编程所述多个关联存储器条目并用所述强制未命中指示编程所述多个关联存储器条目中的所述特定条目。
8.如权利要求5所述的方法,包括:用所述要被匹配的值编程所述多个关联存储器条目并用所述强制未命中指示编程所述多个关联存储器条目中的所述特定条目。
9.一种用于生成查找结果的方法,所述方法包括:
基于第一查找字对第一多个关联存储器条目执行查找操作以识别作为所述第一多个关联存储器条目中的最高优先级匹配条目的第一特定条目,以及基于第二查找字对第二多个关联存储器条目执行查找操作以识别作为所述第二多个关联存储器条目中的最高优先级匹配条目的第二特定条目;其中,在判定查找结果时,所述第一多个关联存储器条目具有比所述第二多个关联存储器条目更高的优先级;
响应于所述第一多个关联存储器条目被识别为所述第一特定条目中的最高优先级匹配条目并且所述第一特定条目包含强制未命中指示,为所述第一多个关联存储器条目产生第一未命中信号;以及响应于所述第二特定条目被识别为所述第二多个关联存储器条目中的所述最高优先级匹配条目,产生识别所述第二特定条目的第二最高优先级信号;以及
响应于所述第一未命中信号和所述第二最高优先级信号,识别所述第二特定条目作为所述查找结果。
10.如权利要求9所述的方法,其中,第一关联存储器库包括所述第一多个关联存储器条目,第二关联存储器库包括所述第二多个关联存储器条目。
11.如权利要求10所述的方法,其中,所述第一查找字和所述第二查找字是相同的。
12.如权利要求9所述的方法,其中,所述第一查找字和所述第二查找字是相同的。
CN2008101349461A 2002-08-10 2003-07-19 具有增强能力的关联存储器 Expired - Fee Related CN101354719B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US10/215,700 US7065609B2 (en) 2002-08-10 2002-08-10 Performing lookup operations using associative memories optionally including selectively determining which associative memory blocks to use in identifying a result and possibly propagating error indications
US10/215,700 2002-08-10
US10/215,719 US7103708B2 (en) 2002-08-10 2002-08-10 Performing lookup operations using associative memories optionally including modifying a search key in generating a lookup word and possibly forcing a no-hit indication in response to matching a particular entry
US10/215,719 2002-08-10

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CNB038191288A Division CN100421106C (zh) 2002-08-10 2003-07-19 具有增强能力的关联存储器

Publications (2)

Publication Number Publication Date
CN101354719A CN101354719A (zh) 2009-01-28
CN101354719B true CN101354719B (zh) 2012-12-26

Family

ID=31494926

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101349461A Expired - Fee Related CN101354719B (zh) 2002-08-10 2003-07-19 具有增强能力的关联存储器

Country Status (2)

Country Link
US (1) US7103708B2 (zh)
CN (1) CN101354719B (zh)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7382787B1 (en) 2001-07-30 2008-06-03 Cisco Technology, Inc. Packet routing and switching device
US7418536B2 (en) * 2001-07-30 2008-08-26 Cisco Technology, Inc. Processor having systolic array pipeline for processing data packets
US7525904B1 (en) 2002-06-20 2009-04-28 Cisco Technology, Inc. Redundant packet routing and switching device and method
US7450438B1 (en) 2002-06-20 2008-11-11 Cisco Technology, Inc. Crossbar apparatus for a forwarding table memory in a router
US7710991B1 (en) 2002-06-20 2010-05-04 Cisco Technology, Inc. Scalable packet routing and switching device and method
US7028136B1 (en) 2002-08-10 2006-04-11 Cisco Technology, Inc. Managing idle time and performing lookup operations to adapt to refresh requirements or operational rates of the particular associative memory or other devices used to implement the system
US7082492B2 (en) * 2002-08-10 2006-07-25 Cisco Technology, Inc. Associative memory entries with force no-hit and priority indications of particular use in implementing policy maps in communication devices
US7177978B2 (en) * 2002-08-10 2007-02-13 Cisco Technology, Inc. Generating and merging lookup results to apply multiple features
EP1530763B1 (en) * 2002-08-10 2018-04-18 Cisco Technology, Inc. Associative memory with enhanced capabilities
US7349382B2 (en) * 2002-08-10 2008-03-25 Cisco Technology, Inc. Reverse path forwarding protection of packets using automated population of access control lists based on a forwarding information base
US7689485B2 (en) * 2002-08-10 2010-03-30 Cisco Technology, Inc. Generating accounting data based on access control list entries
US7536476B1 (en) * 2002-12-20 2009-05-19 Cisco Technology, Inc. Method for performing tree based ACL lookups
US7099992B2 (en) * 2002-12-30 2006-08-29 Micron Technology, Inc. Distributed programmable priority encoder capable of finding the longest match in a single operation
US7308524B2 (en) * 2003-01-13 2007-12-11 Silicon Pipe, Inc Memory chain
US20040236902A1 (en) * 2003-05-19 2004-11-25 Integrated Silicon Solution, Inc. Data distribution in content addressable memory
JP4346975B2 (ja) * 2003-06-27 2009-10-21 株式会社ルネサステクノロジ 連想メモリ機能付き集積回路及び侵入検知装置
CN100366026C (zh) * 2003-07-06 2008-01-30 华为技术有限公司 一种在路由设备中实现报文转发控制的方法
US6988106B2 (en) * 2003-07-09 2006-01-17 Cisco Technology, Inc. Strong and searching a hierarchy of items of particular use with IP security policies and security associations
US7080195B2 (en) * 2003-10-22 2006-07-18 Cisco Technology, Inc. Merging indications of matching items of multiple groups and possibly associated with skip conditions to identify winning entries of particular use for implementing access control lists
US7240149B1 (en) 2003-11-06 2007-07-03 Cisco Technology, Inc. Multiple branch operations in an associative memory
US7219188B1 (en) * 2004-02-06 2007-05-15 Netlogic Microsystems, Inc. Segmented content addressable memory array and priority encoder
US7249228B1 (en) 2004-03-01 2007-07-24 Cisco Technology, Inc. Reducing the number of block masks required for programming multiple access control list in an associative memory
US7305519B1 (en) 2004-03-29 2007-12-04 Cisco Technology, Inc. Error protection for associative memory entries and lookup operations performed thereon
US7403526B1 (en) 2004-05-17 2008-07-22 Cisco Technology, Inc. Partitioning and filtering a search space of particular use for determining a longest prefix match thereon
US7480255B2 (en) * 2004-05-27 2009-01-20 Cisco Technology, Inc. Data structure identifying for multiple addresses the reverse path forwarding information for a common intermediate node and its use
US7290083B2 (en) * 2004-06-29 2007-10-30 Cisco Technology, Inc. Error protection for lookup operations in content-addressable memory entries
US7587396B2 (en) * 2004-11-24 2009-09-08 Oracle International Corporation Encoding data to be sorted
US7219195B2 (en) * 2004-12-21 2007-05-15 Cisco Technology, Inc. Associative memory with invert result capability
US7889712B2 (en) 2004-12-23 2011-02-15 Cisco Technology, Inc. Methods and apparatus for providing loop free routing tables
US7523251B2 (en) * 2005-01-18 2009-04-21 Cisco Technology, Inc. Quaternary content-addressable memory
US7350131B2 (en) * 2005-01-22 2008-03-25 Cisco Technology, Inc. Error protecting groups of data words
US8031706B2 (en) * 2005-10-31 2011-10-04 Agere Systems Inc. Circuitry for determining network operations in a network device by addressing lookup tables with contents of protocol header fields
DE102005060901A1 (de) * 2005-12-20 2007-06-28 Robert Bosch Gmbh Verfahren zur Erkennung einer Versorgungsunterbrechung in einem Datenspeicher und zur Wiederherstellung des Datenspeichers
US7817629B2 (en) * 2006-05-12 2010-10-19 Agere Systems Inc. Methods and apparatus for performing network operations on packets of data in response to content of particular user-specified protocol header fields
US7689889B2 (en) 2006-08-24 2010-03-30 Cisco Technology, Inc. Content addressable memory entry coding for error detection and correction
WO2008097710A2 (en) * 2007-02-02 2008-08-14 Tarari, Inc. Systems and methods for processing access control lists (acls) in network switches using regular expression matching logic
US20080186971A1 (en) * 2007-02-02 2008-08-07 Tarari, Inc. Systems and methods for processing access control lists (acls) in network switches using regular expression matching logic
WO2008142767A1 (ja) * 2007-05-21 2008-11-27 Renesas Technology Corp. 半導体装置
US20100169563A1 (en) * 2008-12-30 2010-07-01 Jeremy Horner Content Addressable Memory and Method
WO2010119381A1 (en) * 2009-04-14 2010-10-21 Ben Gurion University Of The Negev Efficient detection of errors in associative memory
WO2011140562A2 (en) * 2010-05-07 2011-11-10 Topia Technology Tcp/ip on-time system
US8874876B2 (en) * 2011-03-22 2014-10-28 Texas Instruments Incorporated Method and apparatus for packet switching
US9021195B2 (en) 2012-08-26 2015-04-28 Cisco Technology, Inc. Batch entries sharing individual content-addressable memory entries
CA2819938A1 (en) * 2012-10-18 2014-04-18 The Boeing Company Platform health monitoring system
US9270397B2 (en) * 2012-10-24 2016-02-23 Cisco Technology, Inc. Cascaded communication of serialized data streams through devices and their resulting operation
CN106205687B (zh) * 2016-06-30 2018-06-05 湖南恒茂高科股份有限公司 存储器及其搜索控制电路
JP2018010505A (ja) * 2016-07-14 2018-01-18 ルネサスエレクトロニクス株式会社 検索装置および半導体装置
US9824162B1 (en) 2016-09-26 2017-11-21 Cisco Technology, Inc. Associative memory including multiple cascaded associative memory blocks and its use in forwarding packets in a network
US10212082B2 (en) 2017-07-01 2019-02-19 Cisco Technology, Inc. Dynamic priority of content-addressable memory blocks used in determining a highest-priority matching entry
US10318588B2 (en) 2017-07-01 2019-06-11 Cisco Technology, Inc. Searching varying selectable physical blocks of entries within a content-addressable memory
US10387251B2 (en) 2017-07-17 2019-08-20 Cisco Technology, Inc. Error detection and correction in a content-addressable memory using single-bit position lookup operations
US11467899B2 (en) 2018-04-16 2022-10-11 Cisco Technology, Inc. Efficient content-addressable memory lookup result integrity checking and correcting operations including for protecting the accuracy of packet processing operations
US11194475B2 (en) 2018-04-16 2021-12-07 Cisco Technology, Inc. Coordinated updating and searching a content-addressable memory including for packet processing operations
US10496299B2 (en) 2018-04-16 2019-12-03 Cisco Technology, Inc. Efficient content-addressable memory entry integrity checking including for protecting the accuracy of packet processing operations
CN109150962B (zh) * 2018-07-03 2021-03-02 北京东方网信科技股份有限公司 一种通过关键字快速识别http请求头的方法
TWI722447B (zh) * 2019-06-03 2021-03-21 瑞昱半導體股份有限公司 傳輸介面的錯誤處理方法以及相關的錯誤處理架構
CN112991513B (zh) * 2021-02-08 2022-11-22 北京京航计算通讯研究所 基于测控任务分析系统模型库的场景模型快速构建系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1120689A (zh) * 1993-10-14 1996-04-17 卡西欧计算机公司 数据存储装置
US6295576B1 (en) * 1997-08-29 2001-09-25 Nec Corporation Associative memory having a mask function for use in a network router
US6374326B1 (en) * 1999-10-25 2002-04-16 Cisco Technology, Inc. Multiple bank CAM architecture and method for performing concurrent lookup operations

Family Cites Families (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3648254A (en) 1969-12-31 1972-03-07 Ibm High-speed associative memory
US4296475A (en) 1978-12-19 1981-10-20 U.S. Philips Corporation Word-organized, content-addressable memory
US4791606A (en) 1987-09-01 1988-12-13 Triad Semiconductors International Bv High density CMOS dynamic CAM cell
US5088032A (en) 1988-01-29 1992-02-11 Cisco Systems, Inc. Method and apparatus for routing communications among computer networks
US4996666A (en) 1988-08-12 1991-02-26 Duluk Jr Jerome F Content-addressable memory system capable of fully parallel magnitude comparisons
US5440715A (en) 1990-06-27 1995-08-08 Advanced Micro Devices, Inc. Method and apparatus for expanding the width of a content addressable memory using a continuation bit
US5404482A (en) 1990-06-29 1995-04-04 Digital Equipment Corporation Processor and method for preventing access to a locked memory block by recording a lock in a content addressable memory with outstanding cache fills
US5481540A (en) 1990-08-24 1996-01-02 At&T Corp. FDDI bridge frame learning and filtering apparatus and method
US5319763A (en) 1991-04-02 1994-06-07 Motorola, Inc. Data processor with concurrent static and dynamic masking of operand information and method therefor
US5339076A (en) 1992-04-27 1994-08-16 Integrated Information Technology Data compression using content addressable memory
US5383146A (en) 1992-06-08 1995-01-17 Music Semiconductors, Inc. Memory with CAM and RAM partitions
EP0600683B1 (en) 1992-12-04 2001-10-10 AT&T Corp. Packet network interface
US6000008A (en) 1993-03-11 1999-12-07 Cabletron Systems, Inc. Method and apparatus for matching data items of variable length in a content addressable memory
US5684954A (en) 1993-03-20 1997-11-04 International Business Machine Corp. Method and apparatus for providing connection identifier by concatenating CAM's addresses at which containing matched protocol information extracted from multiple protocol header
US5450351A (en) 1993-11-19 1995-09-12 International Business Machines Corporation Content addressable memory implementation with random access memory
US6047369A (en) 1994-02-28 2000-04-04 Intel Corporation Flag renaming and flag masks within register alias table
US5428565A (en) 1994-03-11 1995-06-27 Intel Corporation Single stage sensing apparatus for a content addressable memory
US5515370A (en) 1994-03-31 1996-05-07 Siemens Aktiengesellschaft Circuit arrangement for line units of an ATM switching equipment
EP0840915A4 (en) 1995-07-26 1998-11-04 Raycer Inc METHOD AND APPARATUS FOR A VISIBLE SYSTEM BY SORTING SEGMENTS
US6041389A (en) 1995-11-16 2000-03-21 E Cirrus Logic, Inc. Memory architecture using content addressable memory, and systems and methods using the same
US6091725A (en) 1995-12-29 2000-07-18 Cisco Systems, Inc. Method for traffic management, traffic prioritization, access control, and packet forwarding in a datagram computer network
US5740171A (en) 1996-03-28 1998-04-14 Cisco Systems, Inc. Address translation mechanism for a high-performance network switch
US6243667B1 (en) 1996-05-28 2001-06-05 Cisco Systems, Inc. Network flow switching and flow data export
US5978885A (en) 1996-06-17 1999-11-02 Hewlett Packard Co. Method and apparatus for self-timing associative data memory
US6069573A (en) 1996-06-17 2000-05-30 Hewlett-Packard Company Match and match address signal prioritization in a content addressable memory encoder
US5842040A (en) 1996-06-18 1998-11-24 Storage Technology Corporation Policy caching method and apparatus for use in a communication device based on contents of one data unit in a subset of related data units
US5841874A (en) 1996-08-13 1998-11-24 Motorola, Inc. Ternary CAM memory architecture and methodology
US5748905A (en) * 1996-08-30 1998-05-05 Fujitsu Network Communications, Inc. Frame classification using classification keys
US5930359A (en) 1996-09-23 1999-07-27 Motorola, Inc. Cascadable content addressable memory and system
US5956336A (en) 1996-09-27 1999-09-21 Motorola, Inc. Apparatus and method for concurrent search content addressable memory circuit
US5802567A (en) 1996-10-31 1998-09-01 International Business Machines Corporation Mechanism for managing offset and aliasing conditions within a content-addressable memory-based cache memory
US5920886A (en) 1997-03-14 1999-07-06 Music Semiconductor Corporation Accelerated hierarchical address filtering and translation using binary and ternary CAMs
US5852569A (en) 1997-05-20 1998-12-22 Quality Semiconductor, Inc. Content addressable memory multiple match detection circuit
US6181698B1 (en) 1997-07-09 2001-01-30 Yoichi Hariguchi Network routing table using content addressable memory
US6097724A (en) 1997-08-15 2000-08-01 Lucent Technologies Inc. Ram-based associative content-addressable memory device, method of operation thereof and ATM communication switching system employing the same
US6199140B1 (en) 1997-10-30 2001-03-06 Netlogic Microsystems, Inc. Multiport content addressable memory device and timing signals
US6148364A (en) 1997-12-30 2000-11-14 Netlogic Microsystems, Inc. Method and apparatus for cascading content addressable memory devices
US6061368A (en) 1997-11-05 2000-05-09 Xylan Corporation Custom circuitry for adaptive hardware routing engine
US6236658B1 (en) 1997-11-21 2001-05-22 Cisco Technology, Inc. Method and apparatus for message routing, including a content addressable memory
US6240485B1 (en) 1998-05-11 2001-05-29 Netlogic Microsystems, Inc. Method and apparatus for implementing a learn instruction in a depth cascaded content addressable memory system
US6219748B1 (en) 1998-05-11 2001-04-17 Netlogic Microsystems, Inc. Method and apparatus for implementing a learn instruction in a content addressable memory device
US6377577B1 (en) 1998-06-30 2002-04-23 Cisco Technology, Inc. Access control list processing in hardware
US6141738A (en) 1998-07-08 2000-10-31 Nortel Networks Corporation Address translation method and system having a forwarding table data structure
US6308219B1 (en) 1998-07-31 2001-10-23 Cisco Technology, Inc. Routing table lookup implemented using M-trie having nodes duplicated in multiple memory banks
US6389506B1 (en) 1998-08-07 2002-05-14 Cisco Technology, Inc. Block mask ternary cam
US6289414B1 (en) 1998-10-08 2001-09-11 Music Semiconductors, Inc. Partially ordered cams used in ternary hierarchical address searching/sorting
US6081440A (en) 1998-11-05 2000-06-27 Lara Technology, Inc. Ternary content addressable memory (CAM) having fast insertion and deletion of data values
JP4156112B2 (ja) * 1998-12-25 2008-09-24 富士通株式会社 高速検索方法及び高速検索装置
US6237061B1 (en) 1999-01-05 2001-05-22 Netlogic Microsystems, Inc. Method for longest prefix matching in a content addressable memory
US6137707A (en) 1999-03-26 2000-10-24 Netlogic Microsystems Method and apparatus for simultaneously performing a plurality of compare operations in content addressable memory device
US6175513B1 (en) 1999-07-12 2001-01-16 Netlogic Microsystems Method and apparatus for detecting multiple matches in a content addressable memory
US6526474B1 (en) 1999-10-25 2003-02-25 Cisco Technology, Inc. Content addressable memory (CAM) with accesses to multiple CAM arrays used to generate result for various matching sizes
US6434662B1 (en) 1999-11-02 2002-08-13 Juniper Networks, Inc. System and method for searching an associative memory utilizing first and second hash functions
US6154384A (en) 1999-11-12 2000-11-28 Netlogic Microsystems, Inc. Ternary content addressable memory cell
US6134135A (en) 2000-01-10 2000-10-17 Switchcore, A.B. Mask arrangement for scalable CAM/RAM structures
US6535951B1 (en) 2000-02-29 2003-03-18 Cisco Technology, Inc. Hit result register file used in a CAM
JP3741258B2 (ja) * 2000-03-31 2006-02-01 シャープ株式会社 半導体記憶装置およびその救済方法
US6240003B1 (en) 2000-05-01 2001-05-29 Micron Technology, Inc. DRAM content addressable memory using part of the content as an address
US6246601B1 (en) 2000-06-14 2001-06-12 Netlogic Microsystems, Inc. Method and apparatus for using an inter-row configurable content addressable memory
US6317350B1 (en) * 2000-06-16 2001-11-13 Netlogic Microsystems, Inc. Hierarchical depth cascading of content addressable memory devices
JP2002237190A (ja) * 2001-02-07 2002-08-23 Kawasaki Microelectronics Kk 連想メモリ装置およびその構成方法
US6996662B2 (en) * 2001-06-18 2006-02-07 Integrated Device Technology, Inc. Content addressable memory array having flexible priority support
US6597595B1 (en) * 2001-08-03 2003-07-22 Netlogic Microsystems, Inc. Content addressable memory with error detection signaling
US6771525B2 (en) * 2002-05-31 2004-08-03 Mosaid Technologies Incorporated Method and apparatus for performing variable word width searches in a content addressable memory
US7356033B2 (en) 2002-11-21 2008-04-08 Lucent Technologies Inc. Method and apparatus for performing network routing with use of power efficient TCAM-based forwarding engine architectures

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1120689A (zh) * 1993-10-14 1996-04-17 卡西欧计算机公司 数据存储装置
US6295576B1 (en) * 1997-08-29 2001-09-25 Nec Corporation Associative memory having a mask function for use in a network router
US6374326B1 (en) * 1999-10-25 2002-04-16 Cisco Technology, Inc. Multiple bank CAM architecture and method for performing concurrent lookup operations

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Anthony J. McAuley,Paul Francis.Fast Routing Table Lookup Using CAMs.proceedings of the annual joint conference of the computer and communications societies(INFOCOM),LOS ALAMITOS.IEEE COMP.SOC.PRESS,US,1993,21382-1391. *
AnthonyJ.McAuley Paul Francis.Fast Routing Table Lookup Using CAMs.proceedings of the annual joint conference of the computer and communications societies(INFOCOM)
Tong-Bi Pei,Charles Zukowski.VLSI IMPLEMENTATION OF ROUTING TABLES:TRIES AND CAMS.proceedings of the annual joint conference of the computer and communications societies.(INFOCOM),NEW YORK,IEEE,US.1991,2515-524. *

Also Published As

Publication number Publication date
CN101354719A (zh) 2009-01-28
US7103708B2 (en) 2006-09-05
US20040030803A1 (en) 2004-02-12

Similar Documents

Publication Publication Date Title
CN101354719B (zh) 具有增强能力的关联存储器
CN100421106C (zh) 具有增强能力的关联存储器
CN100472480C (zh) 分组处理方法和装置
US20040030802A1 (en) Performing lookup operations using associative memories optionally including selectively determining which associative memory blocks to use in identifying a result and possibly propagating error indications
CN1794236B (zh) 高效的基于cam在分组有效载荷中进行串搜索的技术
US7350020B2 (en) Generating and merging lookup results to apply multiple features
US10091137B2 (en) Apparatus and method for scalable and flexible wildcard matching in a network switch
CN100547976C (zh) 用于标识反向路径转发信息的方法和装置
US7028136B1 (en) Managing idle time and performing lookup operations to adapt to refresh requirements or operational rates of the particular associative memory or other devices used to implement the system
CN102859949B (zh) 用于在胖树网络中路由数据分组的方法
US9608913B1 (en) Weighted load balancing in a multistage network
US20060080498A1 (en) Error protection for lookup operations performed on ternary content-addressable memory entries
US10218643B2 (en) Apparatus and method for scalable and flexible access control list lookup in a network switch
CN100442255C (zh) 具有条目群组和跳过操作的关联存储器
CN110546640B (zh) 用于深度数据包分析的分级模式匹配
US20170083406A1 (en) Method and apparatus for incremental backup
US20020009056A1 (en) Route retrieving system, method therefor and a router device to be used in the same
CN107644025B (zh) 分布式数据库的wal记录的分发方法和装置
CN105210335A (zh) 用于数据分发的网络路由修改
CN106789695B (zh) 报文处理方法及装置
US11032216B2 (en) Merging read requests in network device architecture
CN105830063B (zh) 协调卷组中的小卷
US7277437B1 (en) Packet classification method
CN100498737C (zh) 基于策略图的cam条目强制无命中指示
KR20190083861A (ko) 시그니처 및 pcre 탐색을 위한 코드 프로세서, 그리고 이를 이용한 시그니처 및 pcre 탐색 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20121226

Termination date: 20200719

CF01 Termination of patent right due to non-payment of annual fee