CN1675635A - 具有增强能力的关联存储器 - Google Patents
具有增强能力的关联存储器 Download PDFInfo
- Publication number
- CN1675635A CN1675635A CNA038191288A CN03819128A CN1675635A CN 1675635 A CN1675635 A CN 1675635A CN A038191288 A CNA038191288 A CN A038191288A CN 03819128 A CN03819128 A CN 03819128A CN 1675635 A CN1675635 A CN 1675635A
- Authority
- CN
- China
- Prior art keywords
- associative
- memory block
- indication
- associative memory
- lookup result
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 165
- 238000000034 method Methods 0.000 claims abstract description 97
- 238000013507 mapping Methods 0.000 claims abstract description 68
- 230000004048 modification Effects 0.000 claims abstract description 65
- 238000012986 modification Methods 0.000 claims abstract description 65
- 230000004044 response Effects 0.000 claims abstract description 22
- 238000003860 storage Methods 0.000 claims description 120
- 230000008878 coupling Effects 0.000 claims description 11
- 238000010168 coupling process Methods 0.000 claims description 11
- 238000005859 coupling reaction Methods 0.000 claims description 11
- 238000001514 detection method Methods 0.000 claims description 7
- 230000001902 propagating effect Effects 0.000 abstract 1
- 230000008569 process Effects 0.000 description 53
- 230000007246 mechanism Effects 0.000 description 24
- 238000004891 communication Methods 0.000 description 18
- 230000014759 maintenance of location Effects 0.000 description 16
- 238000012545 processing Methods 0.000 description 13
- 230000005540 biological transmission Effects 0.000 description 10
- 230000000712 assembly Effects 0.000 description 7
- 238000000429 assembly Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000010365 information processing Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000007727 signaling mechanism Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000005728 strengthening Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90339—Query 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)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了使用关联存储器执行查找操作的方法和装置,所述查找操作包括但不限于基于修改映射来修改关联存储器内的检索关键字、响应于包括强制未命中指示的最高优先级匹配条目强制生成未命中条件、在各个关联存储器条目集或库中选择以确定查找结果以及检测并传输错误条件。在一种实施方式中,每个块从本地存储器中获取修改映射,并基于该映射和接收的修改数据修改接收的检索关键字。在一种实施方式中,每个关联存储器条目包括指示对条目的成功匹配应当或不应当强制生成未命中结果的字段。在一种实施方式中,从存储器中获取在特定查找操作中使用哪些关联存储器块或条目集的指示。
Description
技术领域
本发明特别涉及计算机和通信系统、尤其是网络路由器和交换机;更具体地说,本发明涉及用于使用关联存储器执行查找操作的方法和装置,所述关联存储器包括但不限于二进制和三进制内容可寻址存储器,所述查找操作可选地包括修改检索关键字以生成查找字,响应于匹配特定条目强制生成未命中指示,选择性地确定使用哪些关联存储器块来识别结果,和/或传播错误指示。
背景技术
通信业正在迅速地发生着变化,以适应新兴的技术和日益增长的用户需求。这种对于新应用和现有应用的增强性能的用户需求促使通信网络和系统供应商采用具有更高速度和容量(例如,更大带宽)的网络和系统。为了实现这些目标,许多通信供应商常用的方法是使用分组交换技术。目前,正越来越多地使用例如因特网协议(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 (83)
1.一种用于在关联存储器中执行查找操作的方法,所述方法包括:
接收检索关键字;
识别修改映射;
基于所述修改映射修改所述检索关键字以生成查找字;以及
基于所述查找字对多个关联条目执行查找操作以生成结果。
2.如权利要求1所述的方法,其中,所述识别所述修改映射包括基于用户ID来识别所述修改映射。
3.如权利要求2所述的方法,其中,基于所述用户ID从存储器中获取所述修改映射。
4.如权利要求2所述的方法,包括接收所述用户ID。
5.如权利要求4所述的方法,包括接收修改数据;并且其中,所述修改所述检索关键字包括基于所述修改映射,用来自所述修改数据的数据替换所述检索关键字中的一个或多个比特或字节。
6.如权利要求1所述的方法,还包括接收修改数据;并且其中,所述修改所述检索关键字包括基于所述修改映射,用来自所述修改数据的数据替换所述检索关键字中的一个或多个比特或字节。
7.如权利要求6所述的方法,其中,所述执行查找操作包括识别所述多个关联条目中的特定条目作为最高优先级匹配条目;其中,所述特定条目包括强制未命中指示;并且其中,所述结果包括基于所述特定条目的所述强制未命中指示的未命中值或信号。
8.如权利要求1所述的方法,其中,所述执行查找操作包括识别所述多个关联条目中的特定条目作为最高优先级匹配条目;其中,所述特定条目包括强制未命中指示;并且其中,所述结果包括基于所述特定条目的所述强制未命中指示的未命中值或信号。
9.一种关联存储器,包括:
用于存储多个修改映射的存储器;
多个关联存储器条目;
用于接收检索关键字的一个或多个输入;以及
控制,所述控制用于从所述存储器中获取所述多个修改映射中的特定修改映射,基于所述特定修改映射修改所述检索关键字以生成查找字,并基于所述查找字启动在所述多个关联存储器条目中的查找操作。
10.如权利要求9所述的关联存储器,其中,所述一个或多个输入被配置用来接收用户ID;并且
其中,所述控制被配置用来基于所述用户ID,从所述存储器中获取所述特定修改映射。
11.如权利要求10所述的关联存储器,其中,所述一个或多个输入被配置用来接收修改数据;并且
其中,所述控制还被配置用来通过基于所述修改映射,用来自所述修改数据的数据替换所述检索关键字中的一个或多个比特或字节来修改所述检索关键字。
12.如权利要求9所述的关联存储器,其中,所述一个或多个输入被配置用来接收修改数据;并且
其中,所述控制还被配置用来通过基于所述修改映射,用来自所述修改数据的数据替换所述检索关键字中的一个或多个比特或字节来修改所述检索关键字。
13.一种关联存储器,包括:
用于接收检索关键字的装置;
用于识别修改映射的装置;
用于基于所述修改映射来修改所述检索关键字以生成查找字的装置;以及
用于基于所述查找字对多个关联条目执行查找操作以生成结果的装置。
14.如权利要求13所述的关联存储器,包括用于基于用户ID识别所述修改映射的装置。
15.如权利要求14所述的关联存储器,包括用于基于所述用户ID从存储器中获取所述修改映射的装置。
16.如权利要求14所述的关联存储器,包括用于接收所述用户ID的装置。
17.如权利要求16所述的关联存储器,包括:
用于接收修改数据的装置;以及
用于基于所述修改映射,用来自所述修改数据的数据替换所述检索关键字中的一个或多个比特或字节的装置。
18.如权利要求13所述的关联存储器,包括:
用于接收修改数据的装置;以及
用于基于所述修改映射,用来自所述修改数据的数据替换所述检索关键字中的一个或多个比特或字节的装置。
19.如权利要求18所述的关联存储器,其中,所述用于执行查找操作的装置包括用于识别所述多个关联条目中的特定条目作为最高优先级匹配条目的装置;其中,所述特定条目包括强制未命中指示;并且其中,所述结果包括基于所述特定条目的所述强制未命中指示的未命中值或信号。
20.如权利要求13所述的关联存储器,其中,所述用于执行查找操作的装置包括用于识别所述多个关联条目中的特定条目作为最高优先级匹配条目的装置;其中,所述特定条目包括强制未命中指示;并且其中,所述结果包括基于所述特定条目的所述强制未命中指示的未命中值或信号。
21.一种用于在关联存储器中执行查找操作的方法,所述方法包括:
接收用户ID的第一关联存储器块;
所述第一关联存储器块基于所述用户ID,获取第一修改映射;
所述第一关联存储器块接收检索关键字和修改数据;
所述第一关联存储器块基于所述第一修改映射和所述修改数据来修改所述检索关键字,以生成第一查找字;
所述第一关联存储器块基于所述第一查找字执行查找操作,以产生第一查找结果;
接收所述用户ID的第二关联存储器块;
所述第二关联存储器块基于所述用户ID,获取第二修改映射;
所述第二关联存储器块接收所述检索关键字和所述修改数据;
所述第二关联存储器块基于所述第二修改映射和所述修改数据来修改所述检索关键字,以生成第二查找字;并且
所述第二关联存储器块基于所述第二查找字执行查找操作,以产生第二查找结果。
22.如权利要求21所述的方法,其中,所述第一查找结果的优先级比所述第二查找结果高;并且所述方法包括优先于所述第二查找结果选择所述第一查找结果。
23.如权利要求21所述的方法,其中,所述第一关联存储器块中对应于所述第一查找结果的特定关联存储器条目包括强制未命中指示;并且其中,所述第一查找结果包括基于所述特定关联存储器条目的所述强制未命中指示的未命中值或信号。
24.如权利要求23所述的方法,其中,所述第一查找结果的优先级比所述第二查找结果高;并且所述方法包括基于所述第一查找结果的所述未命中值或信号,优先于所述第一查找结果选择所述第二查找结果。
25.一种用于产生第一查找结果和第二查找结果的关联存储器,所述关联存储器包括:
第一关联存储器块,包括:
第一控制,
第一存储器,和
第一多个关联存储器条目;
其中,所述第一控制被配置用来接收用户ID、检索关键字和修改数据,基于所述用户ID从所述第一存储器中获取第一修改映射,基于所述检索关键字、所述修改数据和所述第一修改映射生成第一查找字,并基于所述第一查找字对所述第一多个关联存储器条目执行查找操作以产生所述第一查找结果;以及
第二关联存储器块,包括:
第二控制,
第二存储器,和
第二多个关联存储器条目;
其中,所述第二控制被配置用来接收所述用户ID、所述检索关键字和所述修改数据,基于所述用户ID从所述第二存储器中获取第二修改映射,基于所述检索关键字、所述修改数据和所述第二修改映射生成第二查找字,并基于所述第二查找字对所述第二多个关联存储器条目执行查找操作以产生所述第二查找结果。
26.如权利要求25所述的关联存储器,其中,所述第一查找结果的优先级比所述第二查找结果高;并且所述关联存储器包括用于优先于所述第二查找结果选择所述第一查找结果的装置。
27.如权利要求25所述的关联存储器,其中,所述第一多个关联存储器条目中对应于所述第一查找结果的特定关联存储器条目包括强制未命中指示;并且其中,所述第一查找结果包括基于所述特定关联存储器条目的所述强制未命中指示的未命中值或信号。
28.如权利要求27所述的关联存储器,其中,所述第一查找结果的优先级比所述第二查找结果高;并且所述关联存储器包括用于基于所述第一查找结果的所述未命中值或信号,优先于所述第一查找结果选择所述第二查找结果的装置。
29.一种在其上存储了关联存储器条目的计算机可读介质,所述关联存储器条目包括:
第一字段,所述第一字段包括用在对查找字的匹配操作中的值;以及
第二字段,所述第二字段包括用于指示对所述关联存储器条目的成功匹配应当或不应当强制生成未命中结果的数据。
30.如权利要求29所述的计算机可读介质,其中,所述关联存储器条目包括第三字段,所述第三字段包括用在对所述查找字的匹配操作中的掩码。
31.如权利要求29所述的计算机可读介质,其中,所述关联存储器条目包括第四字段,所述第四字段指示所述条目是否有效。
32.如权利要求29所述的计算机可读介质,其中,所述关联存储器条目包括第五字段,所述第五字段指示所述条目的错误检测值。
33.一种在其上存储了关联存储器条目的计算机可读介质,所述关联存储器条目包括:
第一字段,所述第一字段包括用在对查找字的匹配操作中的值;以及
第二字段,所述第二字段包括所述关联存储器条目为最高优先级匹配条目时强制生成未命中结果的数据。
34.一种生成查找结果的方法,所述方法包括:
对多个关联存储器条目编程,所述多个关联存储器条目中的至少一个特定条目包括强制未命中指示;
基于查找字执行查找操作以识别出所述特定条目作为最高优先级匹配条目;并且
响应于被识别为所述最高优先级匹配条目的所述特定条目和包括所述强制未命中指示的特定条目,生成未命中信号。
35.一种用于生成查找结果的方法,所述方法包括:
对第一多个关联存储器条目编程,所述第一多个关联存储器条目中的至少一个第一特定条目包括强制未命中指示;
对第二多个关联存储器条目编程,所述第一多个关联存储器条目的优先级比所述第二多个关联存储器条目高;
基于第一查找字执行查找操作以识别出所述第一特定条目作为所述第一多个关联存储器条目中的第一最高优先级匹配条目;
响应于被识别为所述第一最高优先级匹配条目的第一查找字和包括所述强制未命中指示的第一特定条目,生成第一未命中信号;
基于第二查找字执行查找操作以识别出所述第二特定条目作为所述第二多个关联存储器条目中的第二最高优先级匹配条目;
生成标识所述第二特定条目的第二最高优先级信号;以及
响应于所述第一未命中信号和所述第二最高优先级信号,识别出所述第二特定条目作为所述查找结果。
36.如权利要求35所述的方法,其中,第一关联存储器库包括所述第一多个关联存储器条目,第二关联存储器库包括所述第二多个关联存储器条目。
37.一种关联存储器,包括:
多个关联存储器条目,所述多个关联存储器条目中的每一个包括用在对查找字的匹配操作中的值和强制或非强制未命中指示;以及
控制逻辑,所述控制逻辑用于基于查找字对所述多个关联存储器条目执行查找操作,以识别出特定的最高优先级匹配条目。
38.如权利要求37所述的关联存储器,其中,当所述特定的最高优先级匹配条目包括对应于强制未命中指示的值时,所述控制逻辑发出未命中指示的信号。
39.一种装置,包括:
用于对多个关联存储器条目编程的装置,所述多个条目中的至少一个特定条目包括强制未命中指示;
用于基于查找字执行查找操作以识别出所述特定条目作为最高优先级匹配条目的装置;以及
用于响应于被识别为所述最高优先级匹配条目的所述特定条目和包括所述强制未命中指示的特定条目,生成未命中信号的装置。
40.如权利要求39所述的装置,其中,所述关联存储器是三进制或二进制内容可寻址存储器。
41.一种用于生成查找结果的方法,所述方法包括:
获取要使用的多个关联存储器块的子集的指示以确定所述查找结果,所述多个关联存储器块的子集中的每一个都指示了关联存储器块查找结果;
从来自所述多个关联存储器块子集的所述关联存储器块查找结果中选择最高优先级命中结果;以及
将所述最高优先级命中结果指示为所述查找结果。
42.如权利要求41所述的方法,包括接收用户ID;其中,基于所述用户ID,从存储器中获取要使用的所述多个关联存储器块子集的指示。
43.如权利要求42所述的方法,还包括基于所述用户ID,识别要使能所述多个关联存储器块中的哪些以生成所述查找结果。
44.如权利要求41所述的方法,其中,所述选择最高优先级命中结果还包括从一个或多个前级结果中选择。
45.如权利要求41所述的方法,其中,所述多个关联存储器块中的每一个包括一个或多个关联存储器库,所述一个或多个关联存储器库中的每一个包括多个关联存储器条目。
46.如权利要求41所述的方法,其中,所述多个关联存储器块中的每一个包括多个关联存储器条目。
47.如权利要求41所述的方法,包括选择多个输出总线中的特定一个,其中,所述指示包括指示所述多个输出总线中的特定一个上的查找结果。
48.如权利要求47所述的方法,包括接收所述输出总线中的特定一个的指示;其中,基于所述指示执行所述选择。
49.如权利要求47所述的方法,包括从存储器中获取所述输出总线中的特定一个的指示;其中,基于所述指示执行所述选择。
50.如权利要求49所述的方法,包括接收用户ID;其中,基于所述用户ID执行所述获取。
51.一种关联存储器设备,包括:
多个关联存储器块,每个关联存储器块都指示了关联存储器块查找结果;以及
输出选择器,所述输出选择器被配置用来从存储器中获取所考虑的多个关联存储器块的指示以产生总的查找结果,并且基于所考虑的多个关联存储器块的所述指示,在所述多个关联存储器块查找结果中进行选择以产生所述总的查找结果。
52.如权利要求51所述的关联存储器设备,其中,所述关联存储器设备被配置用来接收一个或多个前级结果;并且其中,所述输出选择器被配置用来除了在所述多个关联存储器块以外,还在所述一个或多个前级结果中进行选择以产生所述总的查找结果。
53.如权利要求52所述的关联存储器设备,其中,所述指示还指示选择所述一个或多个前级结果中的哪些以产生所述总的查找结果。
54.如权利要求53所述的关联存储器设备,其中,所述关联存储器设备被配置用来接收用户ID;并且其中,所述输出选择器被配置用来基于所述用户ID,从所述存储器中获取所考虑的多个关联存储器块的指示。
55.如权利要求54所述的关联存储器设备,其中,所述关联存储器设备被配置用来接收指示一个或多个前级错误条件的一个或多个前级错误信号,并生成包括所述一个或多个前级错误条件的错误信号。
56.如权利要求55所述的关联存储器设备,还被配置用来识别一个或多个内部或通信错误条件,并且其中,所述错误信号还标识所述一个或多个内部或通信错误条件。
57.如权利要求51所述的关联存储器设备,其中,所述关联存储器设备被配置用来接收用户ID;并且其中,所述输出选择器被配置用来基于所述用户ID,从所述存储器中获取所考虑的多个关联存储器块的指示。
58.如权利要求51所述的关联存储器设备,包括识别要使能的所述多个关联存储器块中的使能子集以执行特定查找操作的装置;以及将使能指示传送到所述多个关联存储器块中的所述使能子集的装置。
59.如权利要求51所述的关联存储器设备,其中,所述多个关联存储器块中的每一个都包括一个或多个关联存储器库,所述一个或多个关联存储器库中的每一个都包括多个关联存储器条目。
60.如权利要求51所述的关联存储器设备,其中,所述多个关联存储器块中的每一个都包括多个关联存储器条目。
61.一种用于执行查找操作的装置,所述装置包括:
第一关联存储器,所述第一关联存储器被配置用来接收查找请求并执行查找操作以生成第一结果集,所述第一关联存储器包括用于识别第一错误条件集的装置和用于将所述第一结果集的指示以及所述第一错误条件集的一个或多个指示转发到第二关联存储器的装置;以及
耦合到所述第一关联存储器的所述第二关联存储器,所述第二关联存储器被配置用来接收所述第一结果集的所述指示和所述第一错误条件集的所述指示,所述第二关联存储器包括用于将所述第一错误条件集的所述一个或多个指示转发到下一个设备的装置。
62.如权利要求61所述的装置,其中,所述下一个设备包括第三关联存储器。
63.如权利要求61所述的装置,其中,所述第一关联存储器包括多个关联存储器条目,并且所述第一错误条件集包括所述多个关联存储器条目的至少一个中的奇偶校验错误。
64.如权利要求61所述的装置,其中,所述第一错误条件集包括通信错误。
65.如权利要求61所述的装置,其中,所述第一错误条件集包括检测到无效控制信息。
66.一种用于生成查找结果的装置,所述装置包括:
用于获取要使用的多个关联存储器块子集的指示以确定所述查找结果的装置,所述多个关联存储器块子集中的每一个指示关联存储器块查找结果;
用于从来自所述多个关联存储器块子集的所述关联存储器块查找结果中选择最高优先级命中结果的装置;以及
用于将所述最高优先级命中结果指示为所述查找结果的装置。
67.如权利要求66所述的装置,包括用于接收用户ID的装置;以及用于基于所述用户ID,识别要使用的所述多个关联存储器块子集的指示的装置。
68.如权利要求67所述的装置,还包括用于基于所述用户ID,识别要使能所述多个关联存储器块中的哪些以生成所述查找结果的装置。
69.如权利要求66所述的装置,其中,选择最高优先级命中结果的所述装置包括从一个或多个前级结果中选择的装置。
70.如权利要求66所述的装置,其中,所述多个关联存储器块中的每一个都包括一个或多个关联存储器库,所述一个或多个关联存储器库中的每一个都包括多个关联存储器条目。
71.如权利要求66所述的装置,其中,所述多个关联存储器块中的每一个都包括多个关联存储器条目。
72.如权利要求66所述的装置,包括识别异常中断条件并对此作出反应的装置。
73.如权利要求66所述的装置,包括从一个或多个前级结果中接收一个或多个错误信号的装置。
74.如权利要求73所述的装置,包括识别异常中断条件并对此作出反应的装置。
75.如权利要求66所述的装置,包括将指示一个或多个错误条件的方式传送到另一个设备或组件的装置。
76.一种用于执行查找操作并同时产生一个或多个查找结果的装置,所述装置包括:
多个关联存储器块,每个关联存储器块都指示关联存储器块查找结果;以及
多个输出选择器,所述多个输出选择器中的每一个被配置用来从存储器中获取要从中选择的多个关联存储器块的指示以产生所选择的查找结果,并且被配置用来基于要从中选择的多个关联存储器块的所述指示,在所述多个关联存储器块查找结果当中进行选择,以产生所选择的查找结果。
77.如权利要求76所述的装置,其中,所述多个输出选择器中的每一个被配置用来接收一个或多个前级结果,并且除了所述多个关联存储器块以外,还在所述一个或多个前级结果中进行选择,以产生所选择的查找结果。
78.如权利要求76所述的装置,包括用于接收用户ID的装置和用于将所述用户ID传送到所述多个输出选择器中的每一个的装置;并且其中,所述多个输出选择器中的每一个被配置用来基于所述用户ID,从所述存储器中获取要从中选择的多个关联存储器块的所述指示。
79.如权利要求76所述的装置,其中,与所述多个输出选择器中的特定一个相对应的指示指示不选择所述多个关联存储器块中的任何一个。
80.如权利要求76所述的装置,其中,所述多个输出选择器中的每一个被配置用来接收对应的使能指示,所述使能指示包括被使能的或不被使能的值,其中,当所述多个输出选择器中的每一个的所述对应的使能指示包括所述不被使能的值时,所述多个输出选择器中的每一个被配置不从所述多个关联存储器块中选择。
81.如权利要求76所述的装置,包括多个输出总线,其中,所述多个输出选择器中的每一个被配置用来选择所述多个输出总线中的特定输出总线,并将所选择的查找结果作为信号在所述特定输出总线上发出。
82.如权利要求81所述的装置,包括用于接收用户ID的装置和用于将所述用户ID传送到所述多个输出选择器中的每一个的装置;其中,所述多个输出选择器中的每一个被配置用来从所述存储器中获取所述特定输出总线的指示。
83.如权利要求82所述的装置,其中,由所述多个输出选择器中的至少两个所选择的特定输出总线是所述多个输出总线中的不同输出总线。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
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,700 | 2002-08-10 | ||
US10/215,719 | 2002-08-10 | ||
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 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101349461A Division CN101354719B (zh) | 2002-08-10 | 2003-07-19 | 具有增强能力的关联存储器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1675635A true CN1675635A (zh) | 2005-09-28 |
CN100421106C CN100421106C (zh) | 2008-09-24 |
Family
ID=31720171
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB038191288A Expired - Fee Related CN100421106C (zh) | 2002-08-10 | 2003-07-19 | 具有增强能力的关联存储器 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7237059B2 (zh) |
EP (1) | EP1530763B1 (zh) |
CN (1) | CN100421106C (zh) |
AU (1) | AU2003265288B2 (zh) |
CA (1) | CA2494149C (zh) |
WO (1) | WO2004015593A2 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103198087A (zh) * | 2011-10-20 | 2013-07-10 | 波音公司 | 用于分析建议请求的关联存储器技术 |
CN103577523A (zh) * | 2012-07-27 | 2014-02-12 | 波音公司 | 在关联存储器内定位相关区分项 |
CN104951494A (zh) * | 2013-12-27 | 2015-09-30 | 凯为公司 | 用于使用多个共享存储器可重配置并行查找的方法和系统 |
CN101369245B (zh) * | 2007-08-14 | 2015-11-25 | 戴尔产品有限公司 | 一种实现存储器缺陷映射表的系统和方法 |
US10749800B2 (en) | 2013-12-30 | 2020-08-18 | Cavium International | Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine |
US10785169B2 (en) | 2013-12-30 | 2020-09-22 | Marvell Asia Pte, Ltd. | Protocol independent programmable switch (PIPS) for software defined data center networks |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7689485B2 (en) * | 2002-08-10 | 2010-03-30 | Cisco Technology, Inc. | Generating accounting data based on access control list entries |
US20050216770A1 (en) * | 2003-01-24 | 2005-09-29 | Mistletoe Technologies, Inc. | Intrusion detection system |
US8887026B2 (en) | 2009-04-14 | 2014-11-11 | Ben Gurion University Of The Negev | Efficient detection of errors in associative memory |
US8645609B2 (en) * | 2010-12-06 | 2014-02-04 | Brocade Communications Systems, Inc. | Two-port memory implemented with single-port memory blocks |
US9021195B2 (en) | 2012-08-26 | 2015-04-28 | Cisco Technology, Inc. | Batch entries sharing individual content-addressable memory entries |
US9270397B2 (en) * | 2012-10-24 | 2016-02-23 | Cisco Technology, Inc. | Cascaded communication of serialized data streams through devices and their resulting operation |
US8885378B2 (en) * | 2013-03-20 | 2014-11-11 | Cisco Technology, Inc. | Identifying a result using multiple content-addressable memory lookup operations |
CN105823592B (zh) * | 2016-03-18 | 2018-10-19 | 北京卫星环境工程研究所 | 航天器力限试验中多个力传感器的力参数合成方法 |
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 |
US10162629B1 (en) * | 2017-06-02 | 2018-12-25 | Vmware, Inc. | Compiler independent identification of application components |
Family Cites Families (87)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE1886995U (de) * | 1963-10-23 | 1964-02-06 | Kodak Ag | Tasche, beutel od. dgl., insbesondere fuer photograpische kameras. |
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 |
US4777622A (en) * | 1985-11-26 | 1988-10-11 | Max-Planck-Gesellschaft Zur Foerderung Der Wissenschaften E.V. | Associative data storage system |
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 |
US5291491A (en) * | 1991-01-22 | 1994-03-01 | Digital Equipment Corporation | Avoidance of false re-initialization of a computer network |
US5319763A (en) * | 1991-04-02 | 1994-06-07 | Motorola, Inc. | Data processor with concurrent static and dynamic masking of operand information and method therefor |
JPH05298892A (ja) * | 1992-04-22 | 1993-11-12 | Mitsubishi Electric Corp | 連想記憶メモリ |
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 |
WO1994022253A1 (en) * | 1993-03-20 | 1994-09-29 | International Business Machines Corporation | Method and apparatus for extracting connection information from protocol headers |
JPH07110797A (ja) * | 1993-10-14 | 1995-04-25 | Casio Comput Co Ltd | データ記憶装置 |
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 |
DE69628451D1 (de) * | 1995-07-26 | 2003-07-03 | Apple Computer | Verfahren zur zeilendarstellung durch sortieren von segmenten und untersegmenten |
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 |
JPH09231189A (ja) * | 1996-02-26 | 1997-09-05 | Fuji Xerox Co Ltd | 連想記憶装置および連想記憶方法 |
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 |
US6069573A (en) * | 1996-06-17 | 2000-05-30 | Hewlett-Packard Company | Match and match address signal prioritization in a content addressable memory encoder |
US5978885A (en) * | 1996-06-17 | 1999-11-02 | Hewlett Packard Co. | Method and apparatus for self-timing associative data memory |
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 |
JP3191737B2 (ja) | 1997-08-29 | 2001-07-23 | 日本電気株式会社 | ルータを有するネットワークシステムおよび改良されたルータおよびそのルータに用いられる連想メモリ |
US6148364A (en) * | 1997-12-30 | 2000-11-14 | Netlogic Microsystems, Inc. | Method and apparatus for cascading content addressable memory devices |
US6199140B1 (en) * | 1997-10-30 | 2001-03-06 | Netlogic Microsystems, Inc. | Multiport content addressable memory device and timing signals |
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 |
US6658002B1 (en) * | 1998-06-30 | 2003-12-02 | Cisco Technology, Inc. | Logical operation unit for packet processing |
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 |
US6651096B1 (en) * | 1999-04-20 | 2003-11-18 | Cisco Technology, Inc. | Method and apparatus for organizing, storing and evaluating access control lists |
US6175513B1 (en) * | 1999-07-12 | 2001-01-16 | Netlogic Microsystems | Method and apparatus for detecting multiple matches in a content addressable memory |
US6542391B2 (en) * | 2000-06-08 | 2003-04-01 | Netlogic Microsystems, Inc. | Content addressable memory with configurable class-based storage partition |
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 |
US6374326B1 (en) | 1999-10-25 | 2002-04-16 | Cisco Technology, Inc. | Multiple bank CAM architecture and method for performing concurrent lookup operations |
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 |
US6467019B1 (en) * | 1999-11-08 | 2002-10-15 | Juniper Networks, Inc. | Method for memory management in ternary content addressable memories (CAMs) |
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 | 連想メモリ装置およびその構成方法 |
US6606681B1 (en) * | 2001-02-23 | 2003-08-12 | Cisco Systems, Inc. | Optimized content addressable memory (CAM) |
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 |
US6775737B1 (en) * | 2001-10-09 | 2004-08-10 | Cisco Technology, Inc. | Method and apparatus for allocating and using range identifiers as input values to content-addressable memories |
US6763426B1 (en) * | 2001-12-27 | 2004-07-13 | Cypress Semiconductor Corporation | Cascadable content addressable memory (CAM) device and architecture |
US6715029B1 (en) * | 2002-01-07 | 2004-03-30 | Cisco Technology, Inc. | Method and apparatus for possibly decreasing the number of associative memory entries by supplementing an associative memory result with discriminator bits from an original set of information |
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 |
US7336660B2 (en) * | 2002-05-31 | 2008-02-26 | Cisco Technology, Inc. | Method and apparatus for processing packets based on information extracted from the packets and context indications such as but not limited to input interface characteristics |
US7100097B2 (en) * | 2002-07-16 | 2006-08-29 | Hewlett-Packard Development Company, L.P. | Detection of bit errors in maskable content addressable memories |
US7065609B2 (en) * | 2002-08-10 | 2006-06-20 | Cisco Technology, Inc. | 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 |
US7103708B2 (en) * | 2002-08-10 | 2006-09-05 | Cisco Technology, Inc. | 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 |
US6717946B1 (en) * | 2002-10-31 | 2004-04-06 | Cisco Technology Inc. | Methods and apparatus for mapping ranges of values into unique values of particular use for range matching operations using an associative 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 |
US6987684B1 (en) * | 2003-07-15 | 2006-01-17 | Integrated Device Technology, Inc. | Content addressable memory (CAM) devices having multi-block error detection logic and entry selective error correction logic therein |
-
2003
- 2003-07-19 CA CA2494149A patent/CA2494149C/en not_active Expired - Fee Related
- 2003-07-19 CN CNB038191288A patent/CN100421106C/zh not_active Expired - Fee Related
- 2003-07-19 EP EP03784783.7A patent/EP1530763B1/en not_active Expired - Lifetime
- 2003-07-19 WO PCT/US2003/022574 patent/WO2004015593A2/en not_active Application Discontinuation
- 2003-07-19 AU AU2003265288A patent/AU2003265288B2/en not_active Ceased
-
2005
- 2005-12-28 US US11/321,918 patent/US7237059B2/en not_active Expired - Lifetime
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101369245B (zh) * | 2007-08-14 | 2015-11-25 | 戴尔产品有限公司 | 一种实现存储器缺陷映射表的系统和方法 |
CN103198087A (zh) * | 2011-10-20 | 2013-07-10 | 波音公司 | 用于分析建议请求的关联存储器技术 |
CN103198087B (zh) * | 2011-10-20 | 2017-10-13 | 波音公司 | 用于分析建议请求的关联存储器技术 |
CN103577523B (zh) * | 2012-07-27 | 2019-02-05 | 波音公司 | 在关联存储器内定位相关区分项 |
CN103577523A (zh) * | 2012-07-27 | 2014-02-12 | 波音公司 | 在关联存储器内定位相关区分项 |
CN104951494B (zh) * | 2013-12-27 | 2019-08-09 | 凯为有限责任公司 | 用于使用多个共享存储器可重配置并行查找的方法和系统 |
CN104951494A (zh) * | 2013-12-27 | 2015-09-30 | 凯为公司 | 用于使用多个共享存储器可重配置并行查找的方法和系统 |
US10782907B2 (en) | 2013-12-27 | 2020-09-22 | Marvell Asia Pte, Ltd. | Method and system for reconfigurable parallel lookups using multiple shared memories |
US11435925B2 (en) | 2013-12-27 | 2022-09-06 | Marvell Asia Pte, Ltd. | Method and system for reconfigurable parallel lookups using multiple shared memories |
US10749800B2 (en) | 2013-12-30 | 2020-08-18 | Cavium International | Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine |
US10785169B2 (en) | 2013-12-30 | 2020-09-22 | Marvell Asia Pte, Ltd. | Protocol independent programmable switch (PIPS) for software defined data center networks |
US11677664B2 (en) | 2013-12-30 | 2023-06-13 | Marvell Asia Pte, Ltd. | Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine |
US11824796B2 (en) | 2013-12-30 | 2023-11-21 | Marvell Asia Pte, Ltd. | Protocol independent programmable switch (PIPS) for software defined data center networks |
Also Published As
Publication number | Publication date |
---|---|
EP1530763A2 (en) | 2005-05-18 |
WO2004015593A2 (en) | 2004-02-19 |
US20060106977A1 (en) | 2006-05-18 |
EP1530763B1 (en) | 2018-04-18 |
CN100421106C (zh) | 2008-09-24 |
AU2003265288B2 (en) | 2008-08-28 |
CA2494149A1 (en) | 2004-02-19 |
CA2494149C (en) | 2010-05-25 |
WO2004015593A3 (en) | 2004-12-29 |
US7237059B2 (en) | 2007-06-26 |
AU2003265288A1 (en) | 2004-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101354719B (zh) | 具有增强能力的关联存储器 | |
CN100472480C (zh) | 分组处理方法和装置 | |
CN100421106C (zh) | 具有增强能力的关联存储器 | |
US7350020B2 (en) | Generating and merging lookup results to apply multiple features | |
US7065609B2 (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 | |
US7689485B2 (en) | Generating accounting data based on access control list entries | |
CN1179523C (zh) | 用于四路散列表的方法和装置 | |
US10091137B2 (en) | Apparatus and method for scalable and flexible wildcard matching in a network switch | |
US20040170172A1 (en) | Associative memory entries with force no-hit and priority indications of particular use in implementing policy maps in communication devices | |
US20060168494A1 (en) | Error protecting groups of data words | |
US20060080498A1 (en) | Error protection for lookup operations performed on ternary content-addressable memory entries | |
CN1904841A (zh) | 向根节点分发输入输出构件错误消息的方法、系统和装置 | |
CN1462004A (zh) | 用于产生和使用改进的树形位图数据结构的方法和装置 | |
JP2005507212A (ja) | パケット分類のための方法および装置 | |
CN1564989A (zh) | Mac地址高速搜索引擎 | |
CN100442255C (zh) | 具有条目群组和跳过操作的关联存储器 | |
CN1781286A (zh) | 用于分组分类和重写的方法和装置 | |
US20180219800A1 (en) | Apparatus and method for scalable and flexible access control list lookup in a network switch | |
US20020009056A1 (en) | Route retrieving system, method therefor and a router device to be used in the same | |
CN1243431C (zh) | 宽带网络通信产品的通用路由平台命令行的解析方法 | |
US7308468B2 (en) | Pattern matching | |
CN100498737C (zh) | 基于策略图的cam条目强制无命中指示 | |
KR20190083861A (ko) | 시그니처 및 pcre 탐색을 위한 코드 프로세서, 그리고 이를 이용한 시그니처 및 pcre 탐색 방법 | |
WO2005017754A1 (en) | Force no-hit indications for cam entries based on policy maps |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080924 Termination date: 20200719 |