三态内容可寻址存储器设备及其操作方法与流程

文档序号:26750461发布日期:2021-09-25 02:20阅读:160来源:国知局
三态内容可寻址存储器设备及其操作方法与流程

1.本发明涉及存储器技术领域,尤其涉及一种三态内容可寻址存储器设备 及其操作方法。


背景技术:

2.内容可寻址存储器(content

addressable memory,cam)是专门为搜 索密集型(search

intensive)应用设计的一种计算机存储器(memory)。某 些cam旨在在单个时钟周期内搜索其全部内容。可以通过搜索数据本身来 接入(access)存储在cam中的数据,然后存储器检索(retrieve)该数据 所在的地址(addresse)。由于其并行性(parallel nature),cam的搜索速度 比随机接入存储器(random access memory,ram)架构快得多。cam通 常用于互联网路由器(internet router)和交换机(switche)中,可提高路由 查找(route look

up)、数据报(packet)分类和数据报转发的速度。


技术实现要素:

3.有鉴于此,本发明提供一种三态内容可寻址存储器设备及其操作方法, 可以在执行写操作时同时进行搜索数据操作,以改善存储器的速度和操作的 性能。
4.根据本发明的第一方面,公开一种三态内容可寻址存储器设备,包括:
5.输入接口,具有用于接收第一数据的第一输入和用于接收第二数据的第 二输入;以及
6.存储器,配置为将该第一数据写入到该存储器的地址选择行的同时,在 该第二数据与该存储器的至少一个不同于该地址选择行的其他行之间执行 比较。
7.根据本发明的第二方面,公开一种三态内容可寻址存储器设备的操作方 法,该方法包括:
8.在输入接口处,通过第一输入接收第一数据,并且通过第二输入接收第 二数据;以及
9.将该第一数据写入到该存储器的地址选择行的同时,在该第二数据与该 存储器的至少一个不同于该地址选择行的其他行之间执行比较。
10.本发明的三态内容可寻址存储器设备由于具有用于接收第一数据的第 一输入和用于接收第二数据的第二输入,并且将该第一数据写入到该存储器 的地址选择行的同时,在该第二数据与该存储器的至少一个不同于该地址选 择行的其他行之间执行比较。本发明具有分开的第一输入和第二输入,允许 同时传输写数据和搜索数据,从而改善存储器的速度和操作的性能。
附图说明
11.图1a是根据传统系统的代表性三态内容可寻址存储器(ternary contentaddressable memory,tcam)的示例图。
12.图1b是根据一些实施例的tcam条目(entry)的示例性示图。
13.图2是根据常规系统的用于在不同周期中的tcam写(write)和搜索 操作的时序图的示例图。
14.图3是根据一些实施例的tcam输入/输出接口的示例图。
15.图4是根据一些实施例的用于同时的tcam写和搜索操作的时序图的 示例图。
16.图5是根据一些实施例的内容可寻址存储器的示例图,该内容可寻址存 储器包括到存储器的内部写和搜索数据总线。
17.图6是根据一些实施例的具有被配置为禁用hit输出的电路的tcam 的示例图。
18.图7a是示出根据一些实施例的tcam架构的框图。
19.图7b是示出根据一些实施例的控制信号的图。
20.图8a是示出根据一些实施例的另一tcam架构的框图。
21.图8b是说明根据一些实施例的图8a的tcam架构的实施方案的实例 的框图。
22.图8c是示出根据一些实施例的与图8a的tcam架构结合使用的控制 信号的图。
23.图9是示出根据一些实施例的另一tcam架构的框图。
具体实施方式
24.诸如三态(ternary,或三进制)内容可寻址存储器(tcam)之类的内 容可寻址存储器(cam)可用于高性能企业和数据中心交换asic (application specific integrated circuit,特殊用途集成电路)(嵌入式和独 立),以执行数据报分类和转发。通过将传入的数据报报头(packet header) 与访问控制列表(access control list,acl)查找表中存储的预定义规则进 行匹配,tcam可以通过执行快速和并行查找来实现高吞吐量(highthroughput)分类。acl查找表规则可能会定期更新,以适应不断变化的网 络流量模式(network traffic pattern)。在某些情况下,为了保留规则的优先 级,存储器中的规则更新将导致许多条目混排(shuffling)。在常规系统中, 当在存储器中更新规则时,查找操作会暂停,从而导致性能受限。
25.发明人已经认识并意识到,通过设计可以在后台(background)执行条 目更新同时继续搜索其他条目的tcam,可以改善这种系统和操作的性能。 发明人已经开发了可以在例如单个时钟周期中同时执行查找操作和规则更 新操作的技术和电路。
26.图1a是三态内容可寻址存储器(tcam)1000的示例性示图。tcam 可以具有“2
m+1”(m>0)行(row)和“n+1”列(column),每行包括“n+1
”ꢀ
tcam单元(cell)。tcam 1000接收包括时钟信号ck 1001、输入存储器 地址总线a[m:0]1002、输入搜索数据总线(搜索数据总线)sdi[n:0]1003、 芯片选择(chip select,cs)1004、写使能(write enable,we)1005、读(read, rd)1006、搜索(search,sr)1007、和遮罩数据总线maskb[n:0]1008 的输入。此外还具有输出总线do 1009和输出总线hit 1010。
[0027]
输入存储器地址总线a[m:0]1002可以指示将2m个tcam条目中的 哪一个写入存储器。输入搜索数据总线(搜索数据总线)sdi[n:0]1003可 以表示在搜索操作期间用于搜索存储器阵列的数据。we 1005是启用存储器 写操作的输入。rd 1006是用于启用存储器读取操作的输入。sr 1007是 启用搜索操作的输入。
[0028]
图1b是根据一些实施例的tcam条目的示例性示图。tcam条目可以 通过遮罩
(mask)进行组织。因此,在一些实施例中,为了更新tcam条 目,可以更新条目的数据和遮罩。在图1b中,表示数据的sram x字1202 和表示遮罩的sram y字1203都可能需要更新。
[0029]
图2是针对图1a的tcam以不同周期执行写和搜索操作的tcam的 示例性时序图。图2示出了在前两个时钟周期期间执行存储器写操作,并且 在写操作之后的单独的时钟周期期间执行搜索操作。sr 1007和we 1005 在任何时候都不会同时有效(asserted)(例如,高逻辑电平)。在第一存储器 写周期中,写使能we信号1005有效。这表明tcam应该执行写操作。在 该第一存储器写入周期中,要更新的地址通过存储器地址由“000”(以十六 进制表示)表示,要写入的数据由通过sdi(data)1003输入的“aaaaa
”ꢀ
表示。在该示例中,存储器正在写入存储在x地址中的数据。在第二存储器 写周期中,写使能we信号1005有效,指示tcam应执行写操作。在该第 二存储器写入周期中,通过输入存储器地址总线1002以“001”(以十六进 制表示)表示要更新的地址,并且通过sdi(data)1003输入的以“55555
”ꢀ
表示要写入的数据。在第二个存储器写周期中,存储器正在写存储在y地址 中的遮罩。在下一个(第三)存储器时钟周期中,未有效写使能we信号 1005。而是sr 1007有效,以指示tcam应该执行搜索操作。在此周期中, 不使用存储器地址,而要搜索的数据由通过sdi(data)1003输入的“fffff
”ꢀ
表示。图2中还显示了到存储器的内部数据总线(内部数据总线

至存储器) 2001。
[0030]
图3是根据一些实施例的用于tcam 3000的tcam输入/输出接口的 示例图,该tcam输入/输出接口使得能够在执行写操作的同时进行搜索。 tcam输入/输出接口包括tcam输入接口3050和tcam输出接口3060。 更具体地,该架构设计为在单个时钟周期内写入和搜索数据。tcam 3000 可能具有“2
m+1”(m>0)行(row)和“n+1”列(column),每行包括耦接 到匹配线(match line)的“n+1”个tcam单元。tcam 3000接收包括时 钟信号ck 3001、输入存储器地址总线a[m:0]3002、存储器写总线di[n:0]3003、输入搜索数据总线(搜索数据总线)sdi[n:0]3004、遮罩数据总 线maskb[n:0]3005、cs(芯片选择)3006、we 3007、rd 3008和sr3009。 图3所示的实施例中tcam输出接口3060具有输出总线do 3010和输出总 线hit 3011。tcam 3000除了输入搜索数据总线(搜索数据总线)3004之 外还包括存储器写总线3003,而图1所示的tcam 1000不包括存储器写总 线3003。在实施例中,具有分开的存储器写总线3003和搜索数据总线(输 入搜索数据总线)sdi 3004允许同时传输写数据和搜索数据(例如在单个时 钟周期内同时传输写数据和搜索数据),而不是具有一个sdi(例如图1和 图2中的sdi 1003),图1和图2中的sdi 1003一次仅允许发出写数据或搜 索数据的信号。本发明实施例中的存储器可以配置为在将第一数据写入到存 储器的地址选择行(例如通过存储器写总线3003写入第一数据到存储器的 地址选择行中)的同时,在该第二数据与该存储器的至少一个不同于该地址 选择行的其他行之间执行比较;例如,通过输入搜索数据总线3004输入第 二数据,然后将第二数据与不同于该存储器的地址选择行的其他行进行比 较,以进行数据的搜索。因此本发明具有分开的存储器写总线3003和搜索 数据总线(输入搜索数据总线)3004,允许同时传输写数据和搜索数据,从 而改善存储器的速度和操作的性能。其中,在该第二数据与该存储器的至少 一个不同于该地址选择行的其他行之间执行比较时,至少一个其他行可以包 括一个或多个行(当然是除了要写入第一数据的那一行之外的一个或多个 行),或者可以包括存储器的所有行(当然是除了要写入第一数据的那一行 之外的所有行)。
[0031]
图4是示出根据一些实施例的tcam 3000如何能够同时执行tcam写 和搜索操作的
示例性时序图。在一些实施例中,tcam 3000可以通过在同 一周期中有效搜索使能3009(例如,sr)和存储器写使能3007(例如,we) 信号来执行同时的写操作和搜索操作。在该示例性图中,搜索使能3009和 存储器写使能3007均有效。图4还示出了到存储器的内部写数据总线4001 和内部搜索数据总线4002,将结合图5进一步描述。
[0032]
如图4所示,在所示的三个周期的每个周期中,同时执行存储器写和存 储器搜索。在所有三个周期中,sr 3009和we 3007均被置为有效。例如, 在第一个周期中,sr 3009和we 3007均置为有效,命令存储器执行存储器 搜索和存储器写操作。在第一周期中,通过存储器地址(输入存储器地址总 线)3002以“000”(以十六进制表示)来表示要更新的地址,并且通过di (存储器数据)3003输入的“aaaaa”来表示要写入的数据。在第一周期中, 存储器正在写入存储在x地址中的数据。同时,要搜索的数据由“fffff”表示, 该数据通过sdi(搜索数据)3004输入。在第二个周期中,sr 3009和we 3007 再次置为有效,表示存储器应同时执行搜索和写入操作。要更新的地址通过 存储器地址(输入存储器地址总线)3002以“001”(以十六进制表示)表示, 要写入的数据由通过di(存储器数据)3003输入的“55555”表示。在此周 期中,存储器正在写入存储在y地址中的遮罩。同时,要搜索的数据由通过sdi(搜索数据)3004输入的“00000”表示。在第三周期中,sr 3009和we3007再次置为有效。要更新的地址通过存储器地址(输入存储器地址总线) 3002以“002”(以十六进制表示)表示,而要写入的数据由通过di(存储 器数据)3003输入的“aaaaa”表示。在此示例中,存储器正在写入存储在y 地址中的数据。同时,要搜索的数据由通过sdi(搜索数据)3004输入的“fffff
”ꢀ
表示。在图4的实施例中,所有输入(例如we、cs、sr、di、sdi等)均 显示为在时钟上升沿之前切换,此时间通常称为建立时间。类似地,所有 输入均显示为仅在时钟上升沿之后再次切换,此时间称为“保持时间(秒)”;
ꢀ“
建立时间”定义为在时钟有效沿(clock's active edge)之前,数据必须稳定 才能正确锁存的最短时间;“保持时间”定义为时钟有效沿之后必须稳定数 据的最短时间。
[0033]
图5是根据一些实施例的tcam 3000的示例性示图,其示出了tcam 接口、tcam存储器阵列(tcam阵列)5009以及到存储器的内部写和搜 索数据总线。内部写总线可以用于写入由地址总线a[m:0]3002表示的存 储位置,内部搜索数据总线可以用于在同一周期中搜索tcam存储器阵列 5009的内容。tcam 3000可以包括从tcam输入接口3050接收数据的输 入数据缓冲器3015。对于tcam存储器阵列5009的每一行(row),输入数 据缓冲器3015可以包括诸如锁存器或触发器的存储装置3015a、3015b等。 输入数据缓冲器3015可以接收clk 3001并由clk 3001提供时钟。在该示 例中,输入数据缓冲器的数据输入是3003和3004。输入数据缓冲器3015 的输出包括到存储器的内部写数据总线(内部写数据总线

至存储器)4001 (例如,data 4001a/datab 4001b)、到存储器的内部搜索数据总线(内部搜 索数据总线

至存储器)4002(例如sdata 4002a/sdatab 4002b)。图5的实施 例中,tcam输出接口3060包括输出总线5010、5011、5012。
[0034]
如果在给定的时钟周期内更新条目,则同时进行写和搜索操作可能会导 致错误命中(hit)。在一些实施例中,cam设备可以包括额外的电路,以禁 用正在更新的条目的hit输出,以便防止输出错误命中。
[0035]
图6是根据一些实施例的具有配置为禁用hit输出的电路的tcam的 示例图。在一些实施例中,配置成同时执行写和搜索操作的tcam 3000还 可以包括配置成禁用正在更新
的条目的hit输出的电路,例如电路6000。 电路6000可以接收更新的条目的地址3002,并且确保tcam存储器阵列的 对应的hit输出没有有效(即为无效状态)。有多种方法可以执行此操作。 这样的电路6000的示例在图6中示出。在该示例中,电路6000包括解码器, 该解码器接收更新的条目的地址3002并且使对应的解码器输出wl无效 (de

assert)。在存储在锁存器或触发器中之后,解码器输出随后进入一系列
ꢀ“
且(and)”闸。且闸(and gate)确保:有效的解码器的任何输出确保 输出接口3060的对应的hit输出不有效。这样可以防止对正在更新的tcam 条目造成误判。
[0036]
图7a

b和图8a

c示出了tcam架构的实施例和时序图的示例,其中,tcam配置为在单个时钟周期内执行写操作(包括数据写和遮罩写)。该架 构可以与上述架构结合使用,以同时进行写和搜索。
[0037]
图7a是示出根据一些实施例的tcam架构的框图。该体系结构包括控 制电路700和tcam 702。该体系结构设计为相对于先前的实现方式来增加 对tcam的写入操作的速度。更具体地说,该体系结构旨在在单个时钟周 期内写入数据输入和遮罩。例如,在相同的时钟周期中,可以将数据输入写 入数据行(row)0,并且可以将遮罩写入遮罩行0。tcam的总线安排为在 单个时钟周期中支持数据输入和遮罩的写入操作。如图7a所示,控制电路 700使用以下总线与tcam 702通信:ck、a、sdi、di、maskb、cs、 we、rd、scu(single cycle update,单周期更新)和sr。
[0038]
图7b示出了根据一些实施例的代表性的写操作序列。该图示出了总线 clk、scu、cs、we、a、di、sdi和maskb的信号之间的关系。在有 效时(在此示例中为1电平),信号cs指示已选择该tcam芯片。在有效 时(在此示例中为1电平),信号scu指示将执行单个时钟操作。当置为无 效(在此示例中为0电平)时,信号we表示将不执行常规写入操作。因此, 这三个信号的有效表明将在该tcam芯片中执行单个时钟周期写操作。
[0039]
信号a提供要写入的行(row)的地址。在此示例中,地址(以十六进 制表示)为“000”。信号di的内容表示要写入寻址的tcam数据行(row) 的数据输入。在此示例中,di的内容为“aaaaa”。信号sdi的内容表示要写 入寻址的tcam遮罩行(row)的遮罩。在此示例中,di的内容为“55555”。 在此序列中,di的内容和sdi的内容都在一个时钟周期内写入。在写操作 期间,不考虑信号maskb(在此示例中为“fffff”)的内容。
[0040]
图8a是示出根据一些实施例的另一tcam架构的框图。类似于图7a 的架构,该架构还被设计为在单个时钟周期内写入数据输入和遮罩。然而, 该架构比图7a的架构涉及更少的总线,从而降低了电路复杂度。
[0041]
该体系结构包括控制电路800和tcam802。tcam的总线被布置为在 单个时钟周期中支持数据输入和遮罩的写操作。如图8a所示,控制电路800 使用以下总线与tcam 802通信:ck、a、sdi、maskb、cs、we、rd、 sr和scu。应当注意,与图7a的示例不同,该架构不包括总线di。在这 种体系结构中,总线sdi和maskb都具有双重功能。在写操作期间,总线 sdi携带有要写的数据输入,而maskb携带有要写的遮罩。在搜索操作期 间,总线sdi携带有要搜索的密钥,而maskb携带有标识要被遮罩的列 (column)的遮罩比特(尽管可以选择,但是总线maskb可以携带有要搜 索的密钥,而sdi可以携带标识哪些列(column)将要被遮罩的遮罩比特)。 本质上,sdi和maskb都以时分复用(time

multiplexed)的方式使用。总 线ck、a、cs、we、rd和sr具有结合图7a描述的相同功能。输出总线 do和hit也具有结合图7a描述的相
同功能。
[0042]
图8b示出了根据一些实施例的tcam 802的示例。在该实施方式中, tcam 802包括触发器850、852和854,逻辑单元846、848、856和858, 多路复用器(multiplexer)860和862,控制单元864和tcam阵列870。 tcam阵列870可以包括sram(或其他类型的存储器)。tcam 802通过 总线sdi、maskb、clk、we、scu和a(如结合图8a所讨论的)接收 信号。在一些实施例中,对于tcam阵列的每一列(column),可能存在类 似于图8b的电路。
[0043]
逻辑单元846接收总线sdi的信号作为输入,逻辑单元848接收总线 maskb的信号作为输入。引脚scu的信号指示是否要在单个时钟周期内执 行写操作,包括数据输入和遮罩的写操作。在该示例中,scu控制逻辑单元 848的状态。
[0044]
触发器850接收总线sdi的信号作为输入,触发器852接收逻辑单元 846的输出作为输入,并且触发器854将逻辑单元848的输出作为输入。时 钟clk乘以触发器的操作(具体来说,可以是指时钟clk用于对触发器的 操作进行计时)。触发器850的输出分别作为输入提供给多路复用器860和 862。触发器852的输出分别被提供为逻辑单元856和858的输入。逻辑单 元856和858的状态由触发器854的输出控制。总线a的信号指示要写入或 读取的tcam行(row)的地址。在写操作期间,总线we的信号有效,这 使得能够将多路复用器860和862用于写操作。在写操作期间,控制单元364 使能写到tcam阵列870,并且触发器的输出通过晶体管866和868写到 tcam阵列。总线a的信号确定要写的行(row)的地址。在搜索操作期间, 逻辑单元856和858根据maskb的相应遮罩比特的值遮罩特定行(row) 的搜索。
[0045]
图8c示出了根据一些实施例的与图8a的架构相关的代表性写操作序 列。该图示出了总线clk、scu、we、a、sdi和maskb的信号之间的 关系。scu、cs的有效(assertion)和we的失效(de

assertion)表明该 tcam芯片中将执行单个时钟周期写操作。
[0046]
信号a提供要写入的行(row)的地址。信号sdi的内容表示要写入到 已寻址tcam数据行(row)中的数据输入。信号maskb的内容表示要写 入寻址的tcam遮罩行(row)的遮罩。在此序列中,sdi的内容和maskb 的内容都在一个时钟周期内写入。
[0047]
根据一些实施例,内容可寻址存储器(cam)设备可以包括可以具有四 个数据输入总线的cam阵列。在一些实施例中,可以使用主(primary)数 据输入(例如di[n:0])写入cam存储器的data(x)字,并且可以使 用辅助(secondary)数据输入(例如byte[n:0])在一个周期内写入由地 址总线表示的cam阵列的mask(y)字(例如a[m:1])。在一些实施例 中,第三数据输入(例如,sdi[n:0])和第四数据输入(例如,maskb[n: 0])可以用于分别提供用于搜索功能的搜索键(search key)和遮罩键(maskkey)。根据某些实施例,可以在阵列中执行cam设备的同时存储器写操作, 以在单个周期中更新data和mask字,同时通过在同一周期内将搜索使 能(sr)和存储器写使能(we)信号置为有效来搜索其内容。
[0048]
图9是示出根据一些实施例的另一tcam架构的框图。类似于图7a和 8a的架构,该架构还设计为在单个时钟周期内写入数据输入和遮罩。但是, 该体系结构还包括4个数据输入总线di[n:0]、byte[n:0]、sdi[n:0] 和maskb[n:0],如此处所述。
[0049]
该架构包括控制电路900和tcam902。tcam的总线安排为在单个时 钟周期内支持数据输入和遮罩的写操作。如图9所示,控制电路900使用以 下总线与tcam 902通信:ck、a、sdi、di、maskb、cs、we、rd、 sr、scu和byte。可以在阵列中执行tcam 902的同时存储器写操作, 以在单个周期内更新data和mask字,同时通过在同一周期内将搜索使 能(sr)和存储
器写使能(we)信号置为有效来搜索其内容。
[0050]
在写操作期间,总线di携带有要写入的数据输入,而byte承载要写 入的遮罩。在搜索操作期间,总线sdi携带有要搜索的密钥,而maskb携 带标识要被遮罩的列(column)的遮罩比特(尽管可以选择,但是总线maskb 可以携带有要搜索的密钥,而sdi可以携带标识哪些列(column)将要被遮 罩的遮罩比特)。总线ck、a、cs、we、rd和sr具有结合图7a和8a 描述的相同功能。输出总线do和hit也具有结合图7a和8a描述的相同 功能。
[0051]
在权利要求中使用诸如“第一”,“第二”,“第三”等序数术语来修改权 利要求元素本身并不意味着一个权利要求元素相对于另一个或时间上的任 何优先权、优先或顺序。方法的执行顺序,但仅用作区分具有相同名称的一 个权利要求元素与具有相同名称的另一元素(但用于序数词)以区分权利要 求元素的卷标。
[0052]
同样,本文所使用的措词和术语是出于描述的目的,而不应被认为是限 制性的。本文中“包括”、“包含”、“具有”或“涉及”及其变体的使用意 在涵盖其后列出的项目及其等同物以及其他项目。
[0053]“耦接”或“连接”的使用是指彼此直接连结或通过中间组件链接的电 路元件或信号。
[0054]
在一些实施例中,术语“大约”、“基本上”和“大约”可以用来表示在 目标值的
±
20%之内,在一些实施例中,是在目标值的
±
10%之内,在目标 的
±
5%之内。在一些实施例中,该值在目标值的
±
2%以内。术语“大约
”ꢀ
和“大约”可以包括目标值。
[0055]
本领域的技术人员将容易地观察到,在保持本发明教导的同时,可以做 出许多该装置和方法的修改和改变。因此,上述公开内容应被解释为仅由所 附权利要求书的界限和范围所限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1