具有增强能力的关联存储器的制作方法

文档序号:6465859阅读:151来源:国知局
专利名称:具有增强能力的关联存储器的制作方法
技术领域
本发明特别涉及计算机和通信系统、尤其是网络路由器和交换机;更 具体地说,本发明涉及用于使用关联存储器执行查找操作的方法和装置, 所述关联存储器包括但不限于二进制和三进制内容可寻址存储器,所述査 找操作可选地包括修改检索关键字以生成查找字,响应于匹配特定条目强 制生成未命中指示,选择性地确定使用哪些关联存储器块来识别结果,和/ 或传播错误指示。
背景技术
通信业正在迅速地发生着变化,以适应新兴的技术和日益增长的用户 需求。这种对于新应用和现有应用的增强性能的用户需求促使通信网络和 系统供应商采用具有更高速度和容量(例如,更大带宽)的网络和系统。 为了实现这些目标,许多通信供应商常用的方法是使用分组交换技术。目 前,正越来越多地使用例如因特网协议(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)、闪存、集成电 路和/或其他存储器组件或元件。术语"存储设备"包括任何固态存储介 质、磁盘驱动器、磁盘、网络化服务、磁带驱动器和其他存储设备。存储 器和存储设备可以存储将由处理元件和/或控制逻辑执行的计算机可读指 令,以及由处理元件和/或控制逻辑操作的数据。术语"数据结构"是可扩 展的术语,其指任何数据元素、变量、数据结构、数据库和/或一种或多种 组织方案,所述方案可以被应用到数据,来使得便于解释该数据,或者便
于对数据执行操作,所述方案例如但不限于存储单元(memory location),或者设备、集合、队列、树、堆、列表、链接表、数组、表、 指针等。数据结构一般维持在存储机制内。
术语"指针"和"链接"在这里一般被用来识别某些用于引用或者识 别另一个元件、组件或其他实体的机制,这些可以包括,但又不限于对存 储器或者其他存储机制或者其中的存储单元、数据结构中的索引、值等的 引用。术语"关联存储器"指任何类型已知的或者将来会开发出来的关联 存储器,包括但不限于二进制和三进制内容可寻址存储器、哈希表、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可检测到该错误,并从该错误恢复(通过刷新流水线等)。
以这种方式,器件尤其是那些作为事务序列的一部分的器件,可以彼 此之间保持同步。当例如发生错误条件时,如传送的指令信号中的未检测 出的奇偶校验错误(例如,奇偶校验错误数超过了错误检测机制),器件 之间的再同步是很重要的。存在这样的可能性,即指令中的奇偶校验错误 未被检测出,且完全改变了事务时序。同样地,可能存在其他类型的"未
知"错误,使得控制处理器或逻辑与关联存储器链之间脱离同步。
图ID图示了一个使用关联存储器执行查找操作的实施例,所述查找 操作包括但不限于基于修改映射修改关联存储器内的检索关键字、响应于 包括强制未命中指示的最高优先级匹配条目强制生成未命中条件、在各个 关联存储器块或集或关联存储器条目库中选择以确定査找结果以及检测并
传播错误条件。控制逻辑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)接收的用户ID321,可以从存 储器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是数值标识符,而在另一个实施例中,输出选择器ID335 是任意值或数据结构。
对于每个元组(用户ID341、输出选择器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与关联存储器条目、全局掩码寄存器(global mask 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都不被使能,且不从来自块l-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指示处理完成。
考虑到本发明的原理可以被应用到许多可能的实施例,应当理解,这 里参照附图描述的本发明的实施例和各方面仅是说明性的,不应当被用作 限制本发明的范围。例如,对于本领域的技术人员来说以下是很清楚的, 即可以对许多的过程框操作重新排序,以在其他操作之前执行、在其他操 作之后执行或者与其他操作实质上同时执行。同样地,在各种实施例中可 以使用许多不同形式的数据结构。这里描述的本发明企图将所有这些实施 例都囊括在所附权利要求及其等同物的范围内。
权利要求
1.一种关联存储器,包括多个关联存储器条目,所述多个关联存储器条目中的每一特定关联存储器条目包括用于在查找操作中与查找字相匹配的值,以及用于标识所述关联存储器条目被判定为所述查找操作的最高优先级匹配条目时是否强制生成未命中结果的值;以及控制逻辑,所述控制逻辑用于执行基于所述查找字的对所述多个关联存储器条目的查找操作,以识别特定最高优先级匹配条目;其中所述控制逻辑被配置为当所述特定最高优先级匹配条目包含用于标识了强制生成未命中结果的值时,发出未命中指示信号。
2. —种关联存储器条目,包括第一字段,所述第一字段包括用在对查找字的匹配操作中的值;以及 第二字段,所述第二字段包括所述关联存储器条目是最高优先级匹配 条目时强制生成未命中结果的数据。
3. 如权利要求2所述的关联存储器条目,其中,所述关联存储器条目 包括第三字段,所述第三字段包括用在对所述查找字的匹配操作中的掩 码。
4. 如权利要求2所述的关联存储器条目,其中,所述关联存储器条目 包括第三字段,所述第三字段指示所述条目是否有效。
5. 如权利要求2所述的关联存储器条目,其中,所述关联存储器条目 包括第三字段,所述第三字段指示所述条目的错误检测值。
6. —种设备,包括用于基于査找字对包含要被匹配的值的多个关联存储器条目执行査找 操作以识别作为最高优先级匹配条目的特定条目的装置,所述多个条目中 的特定条目至少包括强制未命中指示,所述强制未命中指示标识对所述特定条目的成功匹配应当或不应当强制生成未命中结果;以及用于响应于特定条目被识别为所述最高优先级匹配条目并且所述特定 条目包括所述强制未命中指示,生成未命中信号的装置。
7. 如权利要求6所述的装置,其中,所述多个关联存储器条目中的每 一个是三进制或二进制内容可寻址存储器条目。
8. 如权利要求7所述的装置,包括用于编程具有所述强制未命中指 示并且具有被与所述查找字匹配的值的所述多个关联存储器条目的装置。
9. 如权利要求6所述的装置,包括用于编程具有所述强制未命中指 示并且具有被与所述査找字匹配的值的所述多个关联存储器条目的装置。
10. —种用于生成查找结果的方法,所述方法包括基于查找字对包含要被匹配的值的多个关联存储器条目执行査找操 作,以识别作为最高优先级匹配条目的特定条目,所述多个条目中的特定 条目至少包括包括强制未命中指示,所述强制未命中指示标识对所述特定条目的成功匹配应当或不应当强制生成未命中结果;以及响应于特定条目被识别为所述最高优先级匹配条目并且所述特定条目 包括所述强制未命中指示,生成未命中信号。
11. 如权利要求IO所述的方法,其中,所述多个关联存储器条目中的 每一个是三进制或二进制内容可寻址存储器条目。
12. 如权利要求11所述的方法,包括编程具有所述强制未命中指示并且具有被与所述查找字匹配的值的所述多个关联存储器条目。
13. 如权利要求10所述的方法,包括编程具有所述强制未命中指示并且具有所述被与所述査找字匹配的值的所述多个关联存储器条目。
14. 一种用于生成査找结果的方法,所述方法包括基于第一查找字对第一多个关联存储器条目执行査找操作以识别作为 所述第一多个关联存储器条目中的最高优先级匹配条目的第一特定条目, 以及基于第二査找字对第二多个关联存储器条目执行査找操作以识别作为 所述第二多个关联存储器条目中的最高优先级匹配条目的第二特定条目; 其中,在判定査找结果时,所述第一多个关联存储器条目具有比所述第二多个关联存储器条目更高的优先级;响应于所述第一多个关联存储器条目被识别为所述第一特定条目中的 最高优先级匹配条目并且所述第一特定条目包含强制未命中指示,为所述第一多个关联存储器条目产生第一未命中信号;以及响应于所述第二特定 条目被识别为所述第二多个关联存储器条目中的所述最高优先级匹配条 目,产生识别所述第二特定条目的第二最高优先级信号;以及响应于所述第一未命中信号和所述第二最高优先级信号,识别所述第 二特定条目作为所述査找结果。
15. 如权利要求14所述的方法,其中,第一关联存储器库包括所述第 一多个关联存储器条目,第二关联存储器库包括所述第二多个关联存储器 条目。
16. 如权利要求15所述的方法,其中,所述第一查找字和所述第二查 找字是相同的。
17. 如权利要求14所述的方法,其中,所述第一査找字和所述第二査 找字是相同的。
全文摘要
本发明公开了使用关联存储器执行查找操作的方法和装置,所述查找操作包括但不限于基于修改映射来修改关联存储器内的检索关键字、响应于包括强制未命中指示的最高优先级匹配条目强制生成未命中条件、在各个关联存储器条目集或库中选择以确定查找结果以及检测并传输错误条件。在一种实施方式中,每个块从本地存储器中获取修改映射,并基于该映射和接收的修改数据修改接收的检索关键字。在一种实施方式中,每个关联存储器条目包括指示对条目的成功匹配应当或不应当强制生成未命中结果的字段。在一种实施方式中,从存储器中获取在特定查找操作中使用哪些关联存储器块或条目集的指示。
文档编号G06F17/30GK101354719SQ20081013494
公开日2009年1月28日 申请日期2003年7月19日 优先权日2002年8月10日
发明者休·韦伯·霍尔布鲁克, 威廉·N·伊瑟顿, 布尚·曼格什·卡内卡尔, 文卡特斯瓦尔·拉奥·普莱拉, 普里扬克·拉梅什·瓦尔科和德, 班加洛·L·普里亚达尔尚, 若恩·李, 菲松·埃尔马普, 迪利普·库马尔·德维锐迪 申请人:思科技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1