CN103918032B - 一种在网络设备中进行查表的方法和装置 - Google Patents
一种在网络设备中进行查表的方法和装置 Download PDFInfo
- Publication number
- CN103918032B CN103918032B CN201280053051.XA CN201280053051A CN103918032B CN 103918032 B CN103918032 B CN 103918032B CN 201280053051 A CN201280053051 A CN 201280053051A CN 103918032 B CN103918032 B CN 103918032B
- Authority
- CN
- China
- Prior art keywords
- memory
- chip
- address
- bus
- data
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 27
- 230000015654 memory Effects 0.000 claims abstract description 148
- 238000005516 engineering process Methods 0.000 claims abstract description 15
- 230000007246 mechanism Effects 0.000 claims abstract description 11
- 230000001360 synchronised effect Effects 0.000 claims description 11
- 238000010168 coupling process Methods 0.000 claims description 9
- 238000005859 coupling reaction Methods 0.000 claims description 9
- 230000008878 coupling Effects 0.000 claims description 8
- 101100458289 Drosophila melanogaster msps gene Proteins 0.000 claims description 5
- 230000000694 effects Effects 0.000 claims description 2
- 230000004913 activation Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 9
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 7
- 230000006399 behavior Effects 0.000 description 6
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000005538 encapsulation Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 102100040844 Dual specificity protein kinase CLK2 Human genes 0.000 description 3
- 101000749291 Homo sapiens Dual specificity protein kinase CLK2 Proteins 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 229910052710 silicon Inorganic materials 0.000 description 3
- 239000010703 silicon Substances 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 102100040856 Dual specificity protein kinase CLK3 Human genes 0.000 description 2
- 101000749304 Homo sapiens Dual specificity protein kinase CLK3 Proteins 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000007334 memory performance Effects 0.000 description 2
- 230000009897 systematic effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 102100040858 Dual specificity protein kinase CLK4 Human genes 0.000 description 1
- 101000749298 Homo sapiens Dual specificity protein kinase CLK4 Proteins 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 230000007306 turnover Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1647—Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1684—Details of memory controller using multiple buses
Abstract
一种装置,包括多个内存器件。每个内存器件包含多个内存库、一个内存控制器(和内存器件耦合在一起,用来控制并从多个内存器件中筛选出一个来用以内存操作)、多条地址/命令总线(和多个内存器件以及内存控制器耦合在一起,包括至少一条地址/命令总线,在多个内存器件中的至少几个之间共享)、多条数据总线(和多个内存器件以及内存控制器耦合在一起,包括至少一条数据总线,在多个内存器件中的至少几个之间共享)。其中,在使用时分复用(TDM)技术时,内存控制器使用内存交错和库仲裁机制来访问多个内存器件和内存库。
Description
相关申请案交叉申请
本申请要求于2011年10月31日由宋浩宇等人提交给美国专利局、专利序列号为13/285728、专利名称为“一种在网络设备中进行查表的方法和装置”的美国专利的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及通信网络,尤其涉及一种在网络设备中进行查表的方法和装置。
背景技术
针对路由器和交换机的网络应用,查表功能要求一种低成本、低功耗、高性能的解决方案。网络查找对内存操作有三个特点:只读,随机访问,且每次访问读取的数据相对较小。关于双倍数据速率(DDR)同步动态随机存取存储器(SDRAM)设备,其输入/输出(I/O)的频率已经在稳步增长,从而在单位时间内,可以发布更多数量的命令,更多的数据能写入内存,或从内存读取。但是,考虑到基于某些DDRx时序参数的时序限制,要实现高效率的查表性能和高I/O频率,会需要显着增加搜索引擎的I/O引脚数量。虽然查表功能可以由静态随机存储存储器(SRAM)设备或三重内容寻址内存(TCAM)设备执行,但是DDRx SDRAM较之SRAM或TCAM,价格更低廉,节能效果更佳。
发明内容
一方面,本发明公开了一种装置,包括多个内存器件。每个内存器件包含多个内存库、一个内存控制器(和内存器件耦合在一起,用来控制并从多个内存器件中筛选出一个来用以内存操作)、多条地址/命令总线(和多个内存器件以及内存控制器耦合在一起,包括至少一条地址/命令总线,在多个内存器件中的至少几个之间共享)、多条数据总线(和多个内存器件以及内存控制器耦合在一起,包括至少一条数据总线,在多个内存器件中的至少几个之间共享)。其中,在使用时分复用(TDM)技术时,内存控制器使用内存交错和内存库仲裁机制来访问多个内存器件和内存库。其中,内存器件包含某一代双倍数据速率(DDR)同步动态随机存取存储器(SDRAM)。
另一方面,本发明公开了一种网络器件,包括接收器,用来接收多个查表请求,和逻辑单元,用来生成多条命令,其中,该命令通过至少一条共享地址/命令总线和一条共享数据总线来指示访问多个交错内存芯片和多个交错内存库。
在第三方面,本发明公开了一种网络装置的实现方法,包括,利用控制器从多个内存芯片中选择内存芯片,利用控制器从多个分配给内存芯片的内存库中选择内存库,通过某些内存芯片之间共享的地址/命令总线的输入/输出(Input/Output,I/O)引脚来发送命令,通过某些内存芯片之间共享的数据总线来发送数据字。其中,在复用的机制下,通过共享地址/命令总线来发送命令,通过共享数据总线发送数据字。
结合如图和权利要求的详细描述,可以更清楚地了解这些特点和其他特点。
附图说明
结合以下附图的简要描述以及详细描述,能够对本发明所公开的内容进行更加全面的理解,其中,不同的参考号码代表了不同的部分。
图1是本发明实施例提供的一种典型DDRx SDRAM系统的示意图。
图2是本发明实施例提供的另一种典型DDRx SDRAM系统的示意图。
图3是本发明实施例提供的一种增强型DDRx SDRAM系统的示意图。
图4是本发明实施例提供的另一种增强型DDRx SDRAM系统的示意图。
图5是本发明实施例提供的一种DDRx SDRAM架构的示意图。
图6是本发明实施例提供的一种时序图的示意图,对应图5中的DDRx SDRAM架构。
图7是本发明实施例提供的另一种DDRx SDRAM架构的示意图。
图8是本发明实施例提供的一种时序图的示意图,对应图7中的DDRx SDRAM架构。
图9是本发明实施例提供的另一种时序图的示意图,对应图7中的DDRx SDRAM架构。
图10是本发明实施例提供的一种查表方法的流程图。
图11是本发明实施例提供的一种网络单元的示意图。
图12是本发明实施例提供的一种通用计算机系统的示意图。
具体实施方式
首先要注意的是,虽然下文详细说明了一个或多个实施例的实现方式,其公开的系统和/或方法可以通过许多其他已知或现存的技术来实现。本发明并未局限于下文描述的具体实现方式、附图以及技术,包括本文描述说明的较佳设计以及实现方式,但是可以在以下权利要求的范围内结合其对应内容的全部范围进行修改。
正如文中所应用的,DDRx代表第x代的DDR内存。例如,DDR2表示第二代DDR内存,DDR3表示第三代DDR内存,DDR4表示第四代DDR内存,以此类推。
DDRx SDRAM的性能会受时序参数的限制,包括,行周期时间(tRC)、四个窗口激活时间(tFAW)和行单元到行单元的延时(tRRD)等等。例如,在同一个tRC时间段内,无法两次访问同一个内存库。对两个库的访问需要间隔至少一个tRRD时间段。在一个tFAW时间段内,无法同时访问超过4个库。随着技术的进步,这些时序参数较之I/O频率的增加的速度,进步相对较慢。
虽然,由于DDRx SDRAM相对较长的随机访问时延(即,大约48纳秒的tRC)以及相对较低的核心频率(即,DDR3-1600的核心频率为200兆赫(MHz)),一般认为DDRxSDRAM的速度较慢,但是,DDRx SDRAM的芯片容量会较大(即,每芯片一千兆字节(Gb)),内存库数量较多(即,一个DDR3包括八个库),I/O接口频率较高(即,DDR3为800MHz,SDRAM路标中的未来的DDRx设备可以为3.2千兆赫(GHz))。在一个方案中运用这些特性可以补偿时序带来的限制。
为了实现较高的查表效率,可以复制内存库来作为提高存储效率的折衷方案。虽然DDRx随机访问效率受tRC限制,但若多个库都持有同样一份关于所要查找的表的拷贝,就可以交替访问这些库,即,利用库交错,从而提高查表效率。但是,当时钟频率较高的时候,再两个时序限制,tFAW和tRRD会限制库复制的范围。例如,在tFAW的时间窗限制内,芯片激活的库不会多于4个,连续访问两个库需要隔至少一个tRRD时间段。
以400MHz的DDR3-800设备为例,tFAW约为40纳秒,而tRRD约为10纳秒。鉴于一个读请求需要约两个时钟周期来发送命令,400MHz的设备只能约每5纳秒来读取一次内存访问请求,而在40纳秒的时间窗内,有八个请求发送给八个内存库。但是,因为tFAW和tRRD这两个时序限制,在40纳秒的时间窗内,只有四个请求发送给四个库,即每10纳秒一个请求,而不是将八个请求发送给八个库。如果频率为400MHz,此方案对性能不会造成限制,因为DDRx的突发长度大约是八个字,即,完成一次突发需要四个时钟周期(约10纳秒)。所以,在最大允许的命令速率(关于收发命令的速率)情况下,可以充分利用数据总线的带宽,无需再提高地址总线的利用率。
但是,如果以800MHz的DDR3-1600设备为例,虽然接口时钟的频率翻倍了,tFAW和tRRD依然保持不变,或者和400MHz的DDR3-800设备中的大约一致。如果使用和400MHz的DDR3-800设备中基本相同的命令速率,800MHz的DDR3-1600设备对数据总线的利用率只有约50%。如果时钟频率相对较高,数据总线带宽的利用率只会更低。因此,如果I/O频率增高,查表效率不一定随之提高。相反,增加芯片数量可以提高查表效率。但是,通过增加芯片数量来提升性能对引脚数量的要求较高。
在400MHz的DDR3-800设备的例子中,支持每秒钟搜索约100兆次,即,每10纳秒一条读请求。考虑到由许多其他限制因素,例如刷新以及表更新,引起的带宽损耗,搜索频率下降为每秒钟约80兆次。通过一条共享地址总线轮流访问两个芯片,即执行乒乓操作,从而将二者耦合在一起,基于此的解决方案能够将搜索频率提高到每秒钟约160兆次,其中,无论是共享的地址/命令总线还是单独的数据总线都可以得到充分利用。该解决方案需要约65个引脚,对于线路速度约为40吉比特每秒(Gigabit per second,Gbps)来说,可以支持对每个数据包进行两次查表(一次为入接口检查,一次为出接口检查)。如上所说,包大小约为64字节,在速率为40Gbps的以太网中,最大报文速率为每秒钟约60兆个数据包(Million packets per second,Mpps)。如果为了支持类型相似的查表,且线路速度为400Gbps(即600Mpps),采用以上关于两个芯片的解决方案,需要约650个引脚,此举不切实际且价值不菲。
本发明公开了一种系统和方法,用来操作一个或多个产品以及低成本的DDRxSDRAM设备,即DDR3SDRAM或DDR4SDRAM,从而实现高速的随机访问查表功能,且不需要显着增加引脚数量。为了避免违反关键时序限制,例如tRC、tFAW和tRRD,可以选择利用较高的I/O时钟频率来应用共享内存库以及芯片访问交错技术。如此一来,就可以通过增高I/O频率来提升查表效率,且无需显着增加I/O引脚数量。因此,可以保障系统性能利用DDRx技术的进步,沿着平稳的路径演进。
本发明实施例提供的高性能系统基于多DDRx SDRAM芯片,该芯片共享一条命令/地址总线和一条数据总线,采用时分复用(time-division multiplexing,TDM)技术。通过交错访问这些芯片及其内存库,且当I/O频率较高时,即大于等于约400MHz,命令总线和数据总线能够得到绝大部分或充分利用。该交错方案还有一个优点,就是按照DDRx时序限制来合理分隔对各芯片的访问。此项方案使得查表性能可以随允许利用I/O频率来来提高,且无需显着增加引脚数量。此外,还可以并行搜索多个表,而每个待查找的表都可以用来支持不同的查找频率,即将存储/效率二者折衷。
在不同的实施例中使用上述方案,400MHz的DDR3SDRAM能够支持线路速度约为100Gbps的查表功能,800MHz的DDR3SDRAM能够支持约200Gbps的查表功能,而1.6GHz的DDR3/4SDRAM能够支持线路速度约为400Gbps的查表功能。例如,利用多DDR3-1600芯片(包括约80个引脚连接到搜索引擎)可以实现线路速度约为200Gbps的查表功能。在另一个场景下,利用多个DDR4SDRAM(I/O频率约为1.6GHz)和少于约100个引脚,可以实现线路速度约为400Gbps的查表功能。内存芯片供货商(例如Micron)可以将多个硅片封装在一起,从而支持高性能的应用。如上所述,基于多DDR3-1600芯片的系统可以针对网络应用进行DDRx SDRAM垂直硅片堆叠和封装。在某一实施例中,硅穿孔堆叠(through silicon via,TSV)技术可以用来生成相对紧凑的查表芯片封装。进一步地,该封装无需使用串行器/去串行器(serializer/deserializer,SerDes),可以降低时延和功率。
图1展示了本发明实施例提供的一种典型的DDRx SDRAM系统100,可以用于网络系统。DDRx SDRAM系统100可以包括一个DDRx SDRAM控制器110、约四个DDRxSDRAM160、约4条双向数据总线,分别是126、136、146、156,宽度都是16位。在其他实施例中,DDRx SDRAM系统100包括的器件数量可以和图1所示的不同。DDRxSDRAM系统100的器件可以按照图1所示进行排列。
DDRx SDRAM控制器110可以用来和DDRx SDRAM160交换控制信号。DDRxSDRAM控制器110可以控制DDRx SDRAM160(可以包括DDR3SDRAM、DDR4SDRAM、其他DDRx SDRAM或其组合)。DDRx SDRAM控制器110可以和DDRx SDRAM160耦合在一起,利用约4条对应的地址/控制(Addr/Ctrl)线路,包括120(Addr/Ctrl0)、130(Addr/Ctrl1)、140(Addr/Ctrl2)、150(Addr/Ctrl3),约4条时钟(CLK)线路,包括122(CLK0)、132(CLK1)、142(CLK2)、152(CLK3),约4条芯片选择(CS)线路,包括124(CS0#)、134(CS1#)、144(CS2#)、154(CS3#)。每条线路都用来交换相应的信号。地址/控制信号(此处也叫做地址/命令信号)、时钟信号、芯片选择信号都是针对DDRx SDRAM160的输入信号。地址/控制信号可以包括地址和/或控制信息,时钟信号可以用来给DDRx SDRAM160提供定时。进一步地,DDRx SDRAM控制器110可以将芯片选择信号降为低电平,从而选择一个理想的芯片。双向数据总线126、136、146、156可以耦合到DDRx SDRAM160以及DDRx SDRAM控制器110,用来在DDRx SDRAM控制器110和各DDRx SDRAM160之间传输约16位的数据字。一般来说,要提高DDRxSDRAM系统的查表性能,需要增加芯片数、内存控制器以及引脚的数量。但是,这种通过提升典型的DDRx SDRAM系统性能,例如DDRx SDRAM系统100,来提高查表性能的方法会导致、或引入设计瓶颈,因为引脚数量以及所要求的控制器资源都增加了。
图2展示了本发明实施例提供的另一种典型的DDRx SDRAM系统200,可以用于网络系统,即使用低于约400MHz的I/O频率。DDRx SDRAM系统200可以包括一个DDRxSDRAM控制器210、约2个DDRx SDRAM260、约两条双向数据总线226和236,宽度都是16位。DDRx SDRAM控制器210可以和DDRx SDRAM260耦合在一起,利用约两条相应的Addr/Ctrl线路220(Addr/Ctrl0)和230(Addr/Ctrl1)、约两条时钟(CLK)线路222(CLK0)和232(CLK1)以及约两条CS线路224(CS0#)和234(CS1#)。
每条线路都可以用来交换相应的信号。地址/控制信号、时钟信号、芯片选择信号都可以是针对DDRx SDRAM260的输入信号。地址/控制信号可以包括地址和/或控制信息,时钟信号可以用来给DDRx SDRAM260提供定时。进一步地,DDRx SDRAM控制器210可以把芯片选择信号降为低电平,从而选择理想的芯片。双向数据总线226和236可以耦合到DDRx SDRAM260和DDRx SDRAM控制器210,用来在DDRx SDRAM控制器210和各DDRx SDRAM260之间传输约16位的数据字。在其他实施例中,DDRx SDRAM系统200包括的器件数量可以和图2所示不一致。DDRx SDRAM系统200的各器件可以按照图2所示进行排列。DDRx SDRAM系统200的器件可以和DDRx SDRAM系统100中对应的器件进行相类似的配置。
图3展示了本发明实施例提供的一种增强型DDRx SDRAM系统300,可以弥补DDRxSDRAM系统100的一些缺点。DDRx SDRAM系统300可以包括一个DDRx SDRAM控制器310、约两个DDRx SDRAM360、两个DDRx SDRAM362、约两条共享的双向数据总线326和334(即,宽度为16位的数据总线)以及一个时钟调整器370。DDRx SDRAM系统300的各器件可以按照图3所示进行排列。
DDRx SDRAM控制器310可以用来和DDRx SDRAM360以及362交换控制信号。DDRx SDRAM控制器310可以控制DDRx SDRAM360和362(可以包括DDR3SDRAM、DDR4SDRAM、其他DDRx SDRAM或其组合)。DDRx SDRAM控制器310可以和DDRxSDRAM360以及362耦合在一起,利用约一条共享的Addr/Ctrl线路320(Addr/Ctrl0),约4条时钟(CLK)线路,包括322(CLK0)、332(CLK1)、342(CLK2)、352(CLK3),约4条CS线路,包括324(CS0#)、334(CS1#)、344(CS2#)、354(CS3#)。每条线路都可以用来交换一种相应的信号,正如以上所述。双向数据总线326和334可以和DDRx SDRAM360、362以及DDRx SDRAM控制器310耦合在一起,用来在DDRxSDRAM控制器310和DDRx SDRAM360以及362之间传输约16位的数据字。DDRxSDRAM控制器310也可以是一种搜索引擎或逻辑单元。例如,在某些实施例中,DDRxSDRAM控制器310可以是现场可编程门阵列(field-programmable gate array,FPGA)、专用集成电路(Application-Specific Integrated Circuit,ASIC)或网络处理器(networkprocessing unit,NPU)。
具体地,DDRx SDRAM360可与共享的数据总线326耦合,用来共享数据总线326,从而进行数据传输(和DDRx SDRAM控制器310)。类似地,DDRx SDRAM362可与共享的数据总线334耦合,用来共享数据总线334,从而进行数据传输。数据总线共享涉及一个仲裁方案,即轮转仲裁,在此期间内,将总线的访问权限以特定的次序赋予DDRxSDRAM360或DDRx SDRAM362。在某一实施例中,DDRx SDRAM系统300的I/O频率可以是约800MHz,而查表性能的速率可以达到约400Mpps。
DDRx SDRAM系统300可以通过扩容来提高查表的性能,而无需显着增加引脚的数量和控制器资源。图4展示了本发明实施例提供的一种扩容的DDRx SDRAM系统400。DDRx SDRAM系统400可以包括一个DDRx SDRAM控制器410、约两个DDRx SDRAM460、约两个DDRx SDRAM462、约两个DDRx SDRAM464、约两个DDRx SDRAM466、约4条共享的(16位)双向数据总线426、442、466、474。DDRx SDRAM系统400的各器件可以按照图4所示进行排列。
DDRx SDRAM控制器410可以控制DDRx SDRAM460、462、464、466(可以包括DDR3SDRAM、DDR4SDRAM、其他DDRx SDRAM或其组合)。DDRx SDRAM控制器410可以和DDRx SDRAM460、462、464、466耦合在一起,利用一条共享的Addr/Ctrl线路420(Addr/Ctrl0),8条时钟(CLK)线路,包括422(CLK0)、430(CLK1)、450(CLK2)、470(CLK3)、440(CLK4)、442(CLK5)、480(CLK6)、490(CLK7),8条芯片选择(CS)线路,包括424(CS0#)、432(CS1#)、454(CS2#)、474(CS3#)、(CS0#)、432(CS1#)、454(CS2#)、474(CS3#)。每条线路都可以用来交换一种相应的信号,正如以上所述。双向总线426、442、466、474可以和DDRx SDRAM460、462、464、466以及DDRx SDRAM控制器410耦合在一起,用来在DDRx SDRAM控制器410和各DDRx SDRAM之间传输16位的数据字。
具体地,DDRx SDRAM460可与共享的数据总线426耦合,用来共享数据总线426,从而进行数据传输(和DDRx SDRAM控制器410)。类似地,DDRx SDRAM462、464和466可以分别与共享的数据总线442、468和474耦合,用来共享数据总线442、468和474,从而进行数据传输。数据总线共享涉及一个仲裁方案,即轮转仲裁,在此期间内,将总线的访问权限以特定的次序赋予DDRx SDRAM460、462、464和466。在某一实施例中,DDRx SDRAM系统400的I/O频率可以是约1.6GHz,而查表性能的速率可以达到约800Mpps。
不同的DDRx SDRAM配置可以包括不同的I/O频率、芯片数量、和/或引脚数量,因此,会导致不同的查表效率。表1总结了,在不同的实施例中,当I/O频率不同时,不同的DDRx SDRAM配置所带来的不同的查表性能,其中,所有的实施例都可以采用相同的时序参数。例如,如果一个系统的I/O频率为大约400MHz,芯片数量为大约2,引脚数量为大约X(其中,X是整数),则能够提供每秒钟大约200兆次(Mega searches per second,Msps)的搜索能力,即200Msps;如果一个系统的I/O频率为大约800MHz,芯片数量为大约4,引脚数量为大约X+2(其中,实际的引脚数量可能会稍微大于X+2,因为类似时钟、ODT等引脚无法共享,这里的2只反映额外使用的CS引脚),则能够提供大约400Msps的搜索能力;如果一个系统的I/O频率为大约1066MHz,芯片数量为大约6,引脚数量为大约X+4(其中,实际的引脚数量可能会稍微大于X+4,因为类似时钟、ODT等引脚无法共享,这里的4只反映额外使用的CS引脚),则能够提供大约533Msps的搜索能力;如果系统的I/O频率为大约1.6GHz,芯片数量为大约8,引脚数量为大约X+6(其中,实际的引脚数量可能会稍微大于X+6,因为类似时钟、ODT等引脚无法共享,这里的6只反映额外使用的CS引脚),则可以提供大约800Msps的搜索能力;如果一个系统的I/O频率为大约3.2GHz,芯片数量为大约16,引脚数量为大约X+14(其中,实际的引脚数量可能会稍微大于X+14,因为类似时钟、ODT等引脚无法共享,这里的14只反映额外使用的CS引脚),则可以提供每秒钟大约1.6千兆次(Giga searches per second,Gsps,即每秒钟搜索)的搜索能力。上述DDRx SDRAM系统300和400都是基于DDRx SDRAM配置,分别包括大约4个和大约8个芯片,正如表1所示。
表1:不同DDRx SDRAM配置下的查表性能
I/O时钟频率 | 芯片数量 | 查表效率 | 引脚数量 |
400MHz | 2 | 200Msps | X |
800MHz | 4 | 400Msps | X+2 |
1066MHz | 6 | 533Msps | X+4 |
1.6GHz | 8 | 800Msps | X+6 |
3.2GHz | 16 | 1.6Gsps | X+14 |
进一步地,在上述系统中执行内存库复制,细节描述如下,表的数量各不相同,且不同的配置支持不同的查表效率。表2总结了关于执行了库复制的表,表数量不同时,配置不同,从而产生的查表效率(以Mpps为单位)也不相同。以表数量为1时举例,对每芯片8个库进行库复制,所有芯片保持一致,I/O频率为大约400MHz,则查表效率为大约200Mpps。再以表数量为1时举例,对每芯片8个库进行库复制,I/O频率为大约800MHz,则查表效率为大约800Mpps。再以表数量为2时举例,对每芯片4个库进行库复制,I/O频率为大约400MHz,则查表效率为大约100Mpps。表2列举了其他情况,即数量达到128个表,16组芯片。
表2:表数量不同时的查表效率(Mpps)
根据表2,用户可以在不同的应用中选择不同的配置。基于不同的表要求不同的查表效率,用户可以随意划分内存库复制的比率。例如,第一个表要求对每个数据包进行内存访问的次数是第二个表的大约两倍,因此,用户对第一个表进行库复制的数量也可以是第二个表的大约两倍。
为了保持内存访问模式以及查表效率,表的大小不可以超过内存库的大小。在某一实施例中,1Gbit的DDR3芯片,库大小可以是大约128Mbits,适用于多数网络应用。如果表大小超过库大小,可以将表分割到两个库,这样一来,查表效率折半。此外,还可以划分库,从而使每个库容纳至少两个表,同样降低了查表效率。作为交替方案,可以使用同样两组实现库复制和共享的上述内存模块来保持查表效率,但是成本会翻大约一倍。
图5展示了本发明实施例提供的一种DDR3SDRAM架构500,可以用于网络设备。DDR3SDRAM架构500可以作为DDRx SDRAM配置,通过总线共享来并行操作多个芯片,即通过提高I/O频率来提升内存性能。DDR3SDRAM架构500可以包括芯片组530,其中包含8个芯片510、512、514、516、518、520、522、524,每个芯片都包含DDR3SDRAM。DDR3SDRAM架构500还可以进一步包括第一数据总线(DQ/DQS)-A以及第二数据总线(DQ/DQS)-B,其中,DQ一条是双向三态的数据总线,用来携带来自DDRx内存单元的输入和输出数据或将输入和输出数据携带至DDRx内存单元,DQS即相应的选通信号,用来对DQ的数据进行正确采样。DDR3SDRAM架构500还可以包括一条地址/命令总线(A/BA/CMD/CK),其中A表示地址,BA表示内存库地址,用来挑选一个库,CMD表示命令,用来引导内存执行特定的功能,CK表示时钟,用来给内存芯片提供定时。在某一实施例中,DDR3SDRAM架构500可以包括8个大约1.6GHz的芯片,其中包括DDR3SDRAM510、512、514、516、518、520、522、524。芯片组530中的每个芯片都可以耦合大约8个库。在不同的实施例中,芯片和内存库的数量不同。例如,芯片的数量可以是大约2、大约4、大约6、大约8、或大约16。内存库的数量可以是大约2、大约4、或大约8。DDR3SDRAM架构500的各器件可以按照图5进行排列。
虽然DQ总线可以共享,但是需要特别注意DQS引脚。由于DQS需要给前同步信号和后同步信号预留时间,若突发大小为8比特时,其有效时间会超过四个时钟周期。如果将两个DQS信号合并,会产生信号冲突,从而导致DQS信号损坏。为了避免DQS冲突,有以下几种可能的方式:(1)只共享DQ总线,不共享DQS信号。每个DRAM芯片都有自己的DQS信号,用来从共享DQ总线的数据采集样本。这样可以增加一点引脚的总数量。(2)还是可以共享DQS信号。可以使用电路级别的技术(例如阻排)以及开关开闭技术(例如MOSFET)来避免在合并DQS信号时产生不同信号之间的冲突。这样会稍微增加功率消耗以及系统复杂度。值得注意的是,未来的多硅片封装技术,例如TSV,可以在封装级别解决DQS冲突问题。
芯片组530中的芯片可以耦合同一条地址/命令总线A/BA/CMD/CK,还可以共享该总线来交换地址和命令。第一组芯片,例如,芯片510、514、518、522可以通过共享数据总线DQ/DQS-A来交换数据;第二组芯片,例如512、516、520、524可以通过共享数据总线DQ/DQS-B来交换数据。芯片选择信号可以在任意时间选择DDR3SDRAM架构500中的一个芯片,该信号和控制器进行交互。芯片510、512、514、516、518、520、522、524分别可以用来交换芯片选择信号CS1、CS2、CS3、CS4、CS5、CS6、CS7、CS8。例如,每两个时钟周期,给芯片发布一条读命令,即,发布给耦合到该芯片的特定的内存库。例如,从芯片510到524,库#0到#7,读命令可以通过轮转机制进行发布。例如,第一批8条读命令(其中,每条独立的命令于每两个周期发布一次)可以依次针对芯片510、512、514、516、518、520、522、524中的库#0。下一批8条读命令可以依次针对芯片510、512、514、516、518、520、522、524中的库#1。每个内存库可以于每约64个周期访问一次(即,1.6GHz的DDR3SDRAM中,每约40ns访问一次),每个芯片可以于每约8个周期访问一次(即,1.6GHz的DDR3SDRAM中,每约5ns访问一次,可以满足tRRD的限制)。假定一个芯片,其中4个连续库可以于每约32个时钟周期访问一次(即,1.6GHz的DDR3SDRAM中,每约20ns访问一次,可以满足tFAW的限制)。虽然DDR3SDRAM架构500包括的芯片选择引脚数量多于800MHz的DDR3设计,例如DDRx SDRAM系统100,DDR3SDRAM架构500可以支持更多的搜索次数,即每秒钟约8亿次搜索。
图6展示了本发明提供的一种时序图600,揭示了DDRx SDRAM架构的内存访问模式行为,该架构包括约8个芯片,每个芯片耦合约8个内存库,即基于DDR3SDRAM架构500。例如,时序图600中的芯片#0、芯片#1、芯片#2、芯片#3、芯片#4、芯片#5、芯片#6、芯片#7分别对应DDR3SDRAM架构500中的芯片510、512、514、516、518、520、522、524。时序图600展示了地址/控制或地址/命令总线620,包括8个I/O引脚,即DQ1、DQ2、DQ3、DQ4、DQ5、DQ6、DQ7、DQ8,以及两条数据总线630,即DQA和DQB。时序图600还展示了沿着时间轴的多个数据字以及命令,该轴可以用水平线表示,时间从左到右递增。数据字和命令分别表示为Di-j和ARi-j。i和j都是整数,其中,i表示芯片,j表示内存库。例如,D4-0对应芯片#4上内存库#0中的数据字,而AR1-2对应发布给芯片#1上内存库#2的命令。时序图600还展示了芯片索引(“芯片”)以及库索引(“库”)。
时序图600展示了内存访问模式的时序行为,以及DDRx SDRAM架构的命令,该架构包括8个芯片,例如DDR3SDRAM架构500。每条命令ARi-j可以包括激活命令,发布于一个时钟周期内,以及读命令,发布于接下来一个时钟周期内。需要注意的是,每个DDRx读流程都要求两条命令:Active命令,用来激活一个内存库中的某一行,以及Read命令,用来提供列地址从而读取。激活命令可以在奇数的时钟周期内发布,而对应的读命令可以在偶数的时钟周期内发布。命令可以利用轮转机制来发布,如以上所述。每个数据字占用的时长Di-j可以是约4个周期,通过数据总线630传递。每个时钟周期发布一条激活命令或读命令。
命令AR1-0包括一条激活命令,发布于第一个周期,以及一条读命令,发布于第二个周期,即将命令AR1-0发布给芯片#1上的内存库#0。在第三个周期,命令AR2-0,包括一条激活命令,发布于第三个周期,以及一条读命令,发布于第四个周期,即将命令AR2-0发布给芯片#2上的内存库#0。几个时钟周期之后,在接下来一个时钟周期的一开始(为了简便描述,可以参见图6所示的第4个时钟周期,但是,也可以是任意的时钟周期,例如,在某些实施例中,可以是超过10个时钟周期之后,取决于芯片规格),数据字D1-0可以通过DQA总线传输。关于读命令的发布时间和读数据出现在DQ的时间之间的时延称为读时延(tRL)。数据字D1-0可以包括来自芯片#1上内存库#0的数据。在第五个周期,命令AR3-0包括一条激活命令以及一条读命令,在第六个周期将其发布给芯片#3上的内存库#0。在第六个周期一开始,数据字D2-0可以出现在地址/命令总线中的DQ2引脚上。数据字D2-0可以包括针对芯片#1上内存库#0的地址或命令。在大约同一时间,第六周期内,数据字D2-0可以出现在DQB总线上。数据字D2-0可以包括针对芯片#2上内存库#0的数据。在第六个周期,系统进入一个稳定的状态,其中,接下来每一个时钟周期,都可以通过充分利用(约100%)或绝大部分利用地址/命令总线620以及两条数据总线630来发布激活或读命令。虽然在图中,数据字D2-0于4个时钟周期之后出现在DQ,但这只是为了便于说明。数据字可以在固定的时延,即tRL之后出现在DQ,并不一定是所示的4个周期。
相较于DDR3SDRAM(包含8比特的预取或突发),未来一代的DDRx SDRAM的I/O频率更高,可以使用16比特的预取。在这样的DDRx SDRAM中,传输一个突发需要约8个时钟周期,期间可以发布约4条读命令。为此,需要集合至少约4个芯片,共享4条数据总线,而DDR3SDRAM只需要共享两条数据总线。另一方面,DDR3SDRAM和此处的DDRx SDRAM可以采用基本一致的方案,从每秒钟搜查次数的角度提高查表效率,即基于不同的I/O频率。若一个DDRx芯片的突发大小为16位,其数据总线的宽度可以和一个DDR3芯片的基本一样,则每条读请求可以从内存中读取两倍的数据。假定DDRx芯片的突发大小为16位,若其数据总线的宽度减少一半,分别基于DDR3和DDRx的DDRxSDRAM配置(其中,DDRx的突发大小为16位),其引脚数量以及内存访问读取的数据大小基本一致(即,DDR-x,需要8条数据总线,突发大小为16位,以及DDR3,需要16条数据总线,二者的数据传送单元大小都可以为约128比特)。
图7展示了本发明实施例提供的一种DDRx SDRAM(突发大小为16位)架构700,可以用于网络设备。和DDR3SDRAM架构500类似,DDRx SDRAM架构700(突发大小为16位)可以作为一种DDRx SDRAM配置,通过共享总线来并行操作多个芯片,通过提高I/O频率来提升内存性能。DDRx SDRAM架构700(突发大小为16位)可以包括芯片组730,包含8个芯片710、712、714、716、718、720、722、724。每个芯片都包含一个DDRx SDRAM(突发大小为16位)。DDRx SDRAM架构700(突发大小为16位)可以进一步包括数据总线DQ/DQS-A、DQ/DQS-B、DQ/DQS-C、DQ/DQS-D、以及地址/命令总线A/BA/CMD/CK。芯片组730中,每个芯片可以耦合约8个内存库。在不同的实施例中,芯片和内存库的数量各不相同。例如,芯片的数量可以是大约2、大约4、大约6、大约8、大约16。内存库的数量可以是大约2、大约4、大约8。然而,对于特定的I/O频率,配置的芯片数量是一定的。此外,每一代的DDR SDRAM配置的库数量也是一定的(例如,DDR3和DDR4中,每个芯片的库数量都是8)。图7展示的架构可以充分利用或绝大部分利用数据总线以及地址/命令总线的全带宽。DDR4SDRAM架构700的各器件可以按照图7进行排列。
芯片组730中的所有芯片都可以耦合到相同的地址/命令总线A/BA/CMD/CK,用来共享该总线,从而交换地址和命令。第一组芯片,例如芯片710和718可以通过共享数据总线DQ/DQS-A来进行数据传输,第二组芯片,例如芯片712和720可以通过共享数据总线DQ/DQS-B来进行数据传输,第三组芯片,例如芯片714和722可以通过共享数据总线DQ/DQS-C来进行数据传输,第四组芯片,例如芯片716和724可以通过共享数据总线DQ/DQS-D来进行数据传输。芯片选择信号可以选择DDR4SDRAM架构700中的芯片,且该信号和控制器进行交互。芯片710、712、714、716、718、720、722、724可以分别使用芯片选择信号CS1、CS2、CS3、CS4、CS5、CS6、CS7、CS8切换选中。例如,每两个时钟周期,向芯片发布一条读命令,即发布给耦合到该芯片的某个特定的内存库。例如,从芯片710到724,库#0到#7,读命令可以通过轮转机制进行发布。例如,第一批8条读命令(其中,每条独立的命令于每两个周期发布一次)可以依次针对芯片710、712、714、716、718、720、722、724中的库#0。下一批8条读命令可以依次针对芯片710、712、714、716、718、720、722、724中的库#1。
图8展示了本发明实施例提供的一种时序图800,揭示了DDRx SDRAM架构的内存访问模式行为,该架构包括约8个芯片,每个芯片耦合约8个内存库,即,基于DDRxSDRAM(突发大小为16位)架构700。例如,时序图800中的芯片#1、芯片#2、芯片#3、芯片#4、芯片#5、芯片#6、芯片#7、芯片#8分别对应DDRx SDRAM(突发大小为16位)架构700中的芯片710、712、714、716、718、720、722、724。时序图800展示了数据总线820,包括8组I/O数据总线,即DQ1、DQ2、DQ3、DQ4、DQ5、DQ6、DQ7、DQ8(其中,DQ1连接芯片#1,DQ2连接芯片#2,以此类推),以及四条共享数据总线830,即DQA、DQB、DQC、DQD,每条连接一个内存控制器。DQ1和DQ5合并到DQA,DQ2和DQ6合并到DQB,DQ3和DQ7合并到DQC,DQ4和DQ8合并到DQD。每条数据总线DQ1、DQ2、DQ3、DQ4、DQ5、DQ6、DQ7、DQ8可以包括8个、16个或32个引脚。时序图800还展示了沿着时间轴的多个数据字以及命令,该时间轴可以用水平线表示,时间从左到右递增。数据字和命令分别表示为Di-j和ARi-j。i和j都是整数,其中,i表示芯片,j表示内存库。例如,D4-0对应芯片#4上内存库#0中的数据字,而AR1-2对应发布给芯片#1上内存库#2的命令。时序图800还展示了芯片索引(“芯片”)以及库索引(“库”)。
时序图800展示了内存访问模式的时序行为,以及DDRx SDRAM架构的命令,该架构包括8个芯片,例如DDRx SDRAM(突发大小为16位)架构700。每条命令ARi-j可以包括激活命令,发布于一个时钟周期内,以及读命令,发布于接下来一个时钟周期内。激活命令和读命令是交替发给同一个芯片的。例如,激活命令可以在奇数的时钟周期内发布,而对应的读命令可以在偶数的时钟周期内发布。需要注意的是,如上所述,一个读流程包括两条命令:Active命令(用来激活内存库和行),紧接着,是Read命令(用来读取列数据)。命令可以利用轮转机制来发布。每个数据字Di-j占用的时长可以是约8个周期,通过地址/命令总线820或数据总线630进行传输。每个时钟周期发布一条激活命令或读命令。
在第一个周期,命令AR1-0包括一条激活命令,发布于第一个周期,以及一条读命令,发布于第二个周期,即,将命令AR1-0发布给芯片#1上的内存库#0。在第三个周期,命令AR2-0包括一条激活命令,发布于第三个周期,以及一条读命令,发布于第四个周期,即,将命令AR2-0发布给芯片#2上的内存库#0。在tRL的时延之后,数据字D1-0可以出现在DQA总线上。在第五个时钟周期,命令AR3-0包括一条激活命令以及一条读命令,发布于第六个周期,即,将命令AR3-0发布给芯片#3上的内存库#0。在命令AR2-0发布之后,经过tRL时延,数据字D2-0可以出现在DQB总线上。数据字D2-0可以包括来自芯片#2上内存库#0的数据。在第七个时钟周期,命令AR4-0包括一条激活命令以及一条读命令,发布于第八个周期,即,将命令AR4-0发布给芯片#4上的内存库#0。
在命令AR3-0发布之后,经过tRL时延,数据字D3-0可以出现在DQC总线上。数据字D3-0可以包括来自芯片#3上内存库#0的数据。在第九个时钟周期,命令AR5-0包括一条激活命令以及一条读命令,发布于第十个周期,即,将命令AR5-0发布给芯片#5上的内存库#0。在命令AR4-0发布之后,经过tRL时延,数据字D4-0可以出现在DQD总线上。数据字D4-0可以包括来自芯片#4上的内存库#0的数据。在第十个周期,系统进入一个稳定的状态,其中,在接下来的每个时钟周期,可以发布一条激活命令或读命令,其中,地址/命令总线820以及两条数据总线830可以得到充分(100%)或绝大部分利用。
为了解决驱动功率、输出偏斜以及其他信号完整性问题,地址/命令总线和/或数据总线采用了一个缓冲区域。该方案可会在访问内存时添加一个或两个周期时延。此外,可以在命令之间插入间隔从而使得数据总线上的突发数据之间形成间隔。以DDR3SDRAM为例,可以在每两组读请求之间插入一个空闲时钟周期,从而形成一个时钟周期的间隔,即分隔共享数据总线上两个连续的突发数据。该间隔有利于对不同的时钟抖动进行补偿,其中,时钟抖动来自共享了数据总线的芯片。利用此方案,带宽的利用率可以达到约80%。对于突发大小为16位的DDRx SDRAM,以4条读请求为一组,每组插入一个空闲时钟周期进行分隔。在数据总线上,每经过8个繁忙周期,就会有一个空闲周期,如此一来,带宽的利用率可以达到约88.9%。
图9展示了本发明实施例提供的一种时序图900,揭示了DDRx SDRAM架构的内存访问模式行为,该架构包括约8个芯片,每个芯片耦合约8个内存库,即,基于DDR3SDRAM架构500。例如,时序图900中的芯片#1、芯片#2、芯片#3、芯片#4、芯片#5、芯片#6、芯片#7、芯片#8分别对应DDR3SDRAM架构500中的芯片510、512、514、516、518、520、522、524。时序图900展示了数据总线920,包括8组I/O数据总线,即DQ1、DQ2、DQ3、DQ4、DQ5、DQ6、DQ7、DQ8,其中,DQ1是连接芯片#1的I/O总线,DQ2是连接芯片#2的I/O总线,以此类推。此外,还包括两条共享数据总线930,即DQA和DQB。DQA是芯片1、3、5、7间的共享的数据总线,合并了数据总线DQ1、DQ3、DQ5、DQ7,而DQB是芯片2、4、6、8间共享的数据总线,合并了数据总线DQ2、DQ4、DQ6、DQ8。时序图900还展示了沿着时间轴的多个数据字以及命令,该时间轴可以用水平线表示,时间从左到右递增。数据字和命令分别表示为Di-j和ARi-j。i和j都是整数,其中,i表示芯片,j表示内存库。例如,D4-0对应芯片#4上内存库#0中的数据字,而AR1-2对应发布给芯片#1上内存库#2的命令。时序图900还展示了芯片索引(“芯片”)以及库索引(“库”)。
时序图900展示了内存访问模式的时序行为,以及DDRx SDRAM架构的命令,该架构包括8个芯片,例如DDR3SDRAM架构500。每条命令ARi-j可以包括激活命令,发布于一个时钟周期内,以及读命令,发布于接下来一个时钟周期内。命令ARi-j可以发布给同一个芯片i上的内存库j。每两条命令之后都会跟随一个时钟周期的间隔。命令可以利用轮转机制来发布。每个数据字Di-j占用的时长可以是约4个周期,通过数据总线930进行传输。需要注意的是,此处描述的架构被用来进行查表(即,读取内存),因此数据Di-j都是从内存芯片中读取的数据。
在第一个周期,命令AR1-0包括一条激活命令,发布于第一个周期,以及一条读命令,发布于第二个周期,即,将命令AR1-0发布给芯片#1上的内存库#0。在第三个周期,命令AR2-0包括一条激活命令,发布于第三个周期,以及一条读命令,发布于第四个周期,即,将命令AR2-0发布给芯片#2上的内存库#0。在第四个时钟周期一开始,数据字D1-0可以出现在地址/命令总线的DQ1引脚上。数据字D1-0可以包括关于芯片#1上内存库#0的地址或命令。大约在同一时间,在第四个时钟周期,数据字D1-0可以出现在DQA总线上。数据字D1-0可以包括来自芯片#1上内存库#0的数据。在第六个时钟周期,命令AR3-0包括一条激活命令以及一条读命令,发布于第七个周期,即,将命令AR3-0发布给芯片#3上的内存库#0。在第六个时钟周期一开始,数据字D2-0可以出现在地址/命令总线的DQ2引脚上。数据字D2-0可以包括关于芯片#2上内存库#0的地址或命令。大约在同一时间,在第六个时钟周期,数据字D2-0可以出现在DQB总线上。数据字D2-0可以包括来自芯片#2上内存库#0的数据。在第六个周期,系统进入一个稳定的状态,其中,在接下来每一个周期,都会发布一条激活命令或读命令或间隔,其中,地址/命令总线920以及两条数据总线930的利用率可以达到80%或更高。以DDR4SDRAM为例,由于突发大小为16位,以4条读请求为一组,每组插入一个空闲时钟周期。如此一来,每约8个繁忙周期之后会出现一个空闲周期,而带宽利用率则达到88.9%。
相较于DDR3SDRAM(包含8比特的预取或突发),DDR4SDRAM的I/O频率更高,可以使用16比特的预取。在DDR4SDRAM中,传输一个突发会需要约8个时钟周期,期间可以发布约4条读命令。为此,需要集合至少约4个芯片,共享4条数据总线,而DDR3SDRAM只需要共享两条数据总线。另一方面,DDR3SDRAM和DDR4SDRAM可以采用基本一致的方案,从每秒钟搜查次数的角度提高查表效率,即基于不同的I/O频率。一个DDR4芯片的数据总线的宽度可以和一个DDR3芯片的基本一样,因此,每条读请求可以从内存中读取两倍的数据。假定DDR4芯片的数据总线的宽度减少一半,则分别基于DDR3和DDR4的DDRx SDRAM配置,其引脚数量以及内存访问读取的数据大小基本一致(例如,需要8条数据总线的DDR4,以及需要16条数据总线的DDR3,二者的数据传送单元大小都可以为约128比特)
本文公开的增强型DDRx SDRAM系统减少了引脚的数量(或将引脚带宽的利用率最大化),其中,引脚用于搜索引擎/逻辑单元(FPGA或ASIC或NPU)和外部内存模块之间。例如,在某些实施例中,来自逻辑单元的地址总线和数据总线连接多个DDRx芯片(例如,多个DDR芯片共享相同的总线)。因此,节省了逻辑单元侧(即,DDRx SDRAM控制器310)的引脚数量,同时,利用芯片/库调度方案实现了高带宽利用率。
图10展示了本发明实施例提供的一种查表方法1000,可以由DDRx SDRAM系统实现,该系统采用上述总线共享以及内存库复制方案。例如,查表方法1000可以利用DDRxSDRAM系统300或DDRx SDRAM系统400实现。该方法1000可以从框1010开始,先选择一个芯片。在某一实施例中,控制器可以通过芯片选择信号来选择一个芯片。在框1020,选择一个内存库。选择内存库的标准可以是时序参数,即tRC、tFAW、tRRD。在框1030,利用多个DDRx SDRAM芯片间共享的地址/命令总线的I/O引脚发送命令。地址/命令总线可以是多个芯片间共享的一条总线,用来传输地址和命令,例如Addr/Ctrl线路320和Addr/Ctrl线路420。在框1040,利用多个DDRx SDRAM芯片间共享的数据总线发送数据字。数据总线的宽度可以为约16位。数据总线可以是共享了地址/命令总线的那些芯片共享的一条总线,用来传输数据,例如DDRx SDRAM系统300中的数据总线326和334,以及DDRx SDRAM系统400中的数据总线426、442、468、474。在框1050,方法1000确定是否处理更多的数据/命令。如果满足框1050的条件,则查表方法1000返回框1010。否则,方法1000结束。
图11展示了本发明实施例提供的一种网络单元1100,它可以是任意通过网络进行数据传输及处理的设备。网络单元1100可以包括,或可以耦合、使用DDRx SDRAM系统,该系统基于DDRx SDRAM架构500或DDRx SDRAM架构700。例如,网络单元1100可以包括SDRAM系统300或400,即,可以部署在中心局或网络,包括一个或多个内存系统。网络单元1100可以包括一个或多个入端口,或者,单元1110耦合到一个接收器(receiver,Rx)1112,用来接收来自其他网络器件的数据包、对象或类型/长度/值描述(TypeLength Value,TLV)。网络单元1100可以包括逻辑单元1120,用来确定将数据包发往哪个网络器件。逻辑单元1120可以利用硬件、软件、或二者一起来实现,也可以执行或支持查表方法1000。网络单元1100还可以包括一个或多个出端口,或者单元1130耦合到一个发送器(transmitter,Tx)1132,用来向其他网络器件传送数据帧。网络单元1100的各器件可以按照图11所示进行排列。
上述网络器件可以在一个系统中实现,该系统包括任意通用的网络器件,例如计算机或网络器件,拥有充足的处理能力、内存资源以及网络输出能力来处理其负责的负荷工作。图12展示了本发明实施例提供的一种典型的、通用的网络器件1200,适用于实现一个或多个由本文公开的、关于器件的实施例。网络器件1200包括一个处理器1202(可以称作中央处理器或CPU),用来和内存设备进行通信,其中,内存设备包括第二存储器1204、只读存储器(ROM)1206、随机存取存储器(random access memory,RAM)1208、输入/输出(Input/Output,I/O)设备1210、以及网络连接设备1212。处理器1202可以作为一个或多个CPU芯片,也可以作为一个或多个专用集成电路(Application-Specific IntegratedCircuit,ASIC)的一部分。
第二存储器1204一般包括一个或多个磁盘驱动器或磁带机,用来处理数据的非易失性存储,也可以用作,当RAM1208的大小无法容纳所有的工作数据时的溢出数据存储设备。第二存储器1204可以用来存储加载到RAM1208的程序,这些程序被选中执行。ROM1206可以用来存储指令,也可能是数据,即在程序执行过程中被读取的。ROM1206属于非易失性存储设备,相对于第二存储器1204的大存储容量而言,ROM1206的存储容量较小。RAM1208用来存储易失性数据,也可能是指令。访问ROM1206和RAM1208的的速度一般比访问第二存储器1204快。
本文公开了至少一个实施例,且由本领域普通技术人员对实施例和/或实施例的特征做出的变化、合并和/或修改都在本发明公开的范围内。通过合并、融合和/或忽略实施例的某些特征从而生成的实施例也在本发明公开的范围内。其中,对于数字的范围或限制都进行了明确的表述,这些范围或限制可以理解为明确表述范围或限制内所包含的关于相似数量的反复范围或限制,(即,从大约1到大约10包括2、5、4等等,大于0.10包括0.11、0.12、0.15等等)。例如,当公开了数字范围的一个下限Rl和一个上限Ru,则在该范围内指定任意数字。尤其,本文公开了范围内的以下数字:R=Rl+k*(Ru-Rl),其中,k是一个变量,从1%到100%不定,有1%的增长,即,k是1%、2%、3%、4%、5%,……,50%、51%、52%,……,75%、76%、77%、78%、79%、或100%。此外,还公开了由上述两个R数字得出的数字范围。权利要求的任一要素中所使用的词汇“可选地”,表示该要素是必须的,或者,不是必须的,二者都属于权利要求的范围内。使用广义词汇,例如“包括/包含/有……等”,可以理解为对狭义词汇,例如“由……组成”、“基本由……组成”以及“基本由……构成”的支持补充。相应地,保护范围并不局限于以上描述,而是由下文的权利要求进行限定,该范围包括所有对应权利要求主题的内容。下文进一步公开了权利要求,每一项权利要求的内容都结合在说明书中,且权利要求部分属于本发明公开的实施例。对于文中引用的讨论并非认可它是现有技术,尤其是对那些发布日期在本申请的优先日期之后的引用。本文中引用的所有专利、专利申请以及发表物的内容都是通过引用进行结合,从而给本文提供较佳的、程序上的、以及其他细节的补充。
虽然本发明提供了一些实施例,但需要了解的是,其公开的系统和方法还是会以许多其他特定的形式实现,并不脱离本发明的精神和范围。本文的实施例只是用来进行说明,而并非限制,并不应将意图局限于文中所给出的细节。例如,在另一个系统中,可以将各种元素或器件进行合并或融合,也可以忽略或不实现某些特征。
此外,关于各种实施例中分别或单独描述说明的技术、系统、子系统、方法,可以和其他系统、技术或方法进行合并或融合,且并不脱离本发明的范围。其他列举或讨论的项,例如耦合、直接耦合、互相通信,都可以是利用某些接口、设备或中间器件,通过电力、机械或其他手段,进行间接耦合或通信。本领域技术人员可以对这些实施例进行修改、替换以及变更,且并不脱离本发明的精神和范围。
Claims (8)
1.一种存储装置,其特征在于,包括:
多个内存器件,每个内存器件包括多个内存库;
一个内存控制器,和所述内存器件耦合在一起,用来控制,并从所述多个内存器件中选择一个进行内存操作;
多条地址/命令总线,和所述多个内存器件耦合在一起,且所述内存控制器包括所述多条地址/命令总线中的至少一条共享地址/命令总线,所述至少一条共享地址/命令总线在所述多个内存器件中的至少一部分内存器件之间共享;
多条数据总线,和所述多个内存器件耦合在一起,且所述内存控制器包括所述多条数据总线中的至少一条数据总线,所述至少一条数据总线在所述多个内存器件中的至少一部分内存器件之间共享;
其中,在采用时分复用技术TDM时,所述内存控制器使用内存交错及库仲裁机制来访问所述多个内存器件以及内存库;
其中,所述多个内存器件包括一代的双倍数据速率DDR同步动态随机存取存储器SDRAM,所述多个内存器件包括多个双倍数据速率DDR同步动态随机存取存储器SDRAM,所述内存控制器利用所述多条数据总线中的两条相应的共享数据总线以及所述多条地址/命令总线中的一条共享地址/命令总线从而耦合到两个芯片组,所述两个芯片组是所述多个内存器件,每个芯片组包括两个三代双倍数据速率同步动态随机存取存储器DDR3SDRAM芯片,其中,每个DDR3SDRAM芯片利用时钟信号总线以及芯片选择信号总线从而耦合到所述内存控制器,其中,DDR3SDRAM芯片中,输入/输出I/O总频率为800兆赫兹MHz,查表性能为每秒钟400兆个数据包Mpps。
2.一种存储装置,其特征在于,包括:
多个内存器件,每个内存器件包括多个内存库;
一个内存控制器,和所述内存器件耦合在一起,用来控制,并从所述多个内存器件中选择一个进行内存操作;
多条地址/命令总线,和所述多个内存器件耦合在一起,且所述内存控制器包括所述多条地址/命令总线中的至少一条共享地址/命令总线,所述至少一条共享地址/命令总线在所述多个内存器件中的至少部分内存器件之间共享;
多条数据总线,和所述多个内存器件耦合在一起,且所述内存控制器包括所述多条数据总线中的至少一条数据总线,所述至少一条数据总线在所述多个内存器件中的至少部分内存器件之间共享;
其中,在采用时分复用技术TDM时,所述内存控制器使用内存交错及库仲裁机制来访问所述多个内存器件以及内存库;
其中,所述内存器件包括一代的双倍数据速率DDR同步动态随机存取存储器SDRAM,所述多个内存器件包括多个双倍数据速率DDR同步动态随机存取存储器SDRAM,所述内存控制器利用所述多条数据总线中的四条相应的共享数据总线以及所述多条地址/命令总线中的一条共享地址/命令总线从而耦合到四个芯片组,所述四个芯片组是所述多个内存器件,每个芯片组包括两个DDR SDRAM芯片,且突发大小为16位,其中,每个DDR SDRAM芯片利用一条时钟信号总线以及一条芯片选择信号总线从而耦合到所述内存控制器,其中,DDR SDRAM芯片中,输入/输出I/O总频率为1.6千兆赫兹GHz,查表性能为每秒钟800兆个数据包Mpps。
3.一种网络器件,其特征在于,包括:
接收器,用来接收多个查表请求;
逻辑单元,用来生成多条命令,所述命令通过至少一条共享地址/命令总线和一条共享数据总线来指示访问多个交错内存芯片和多个交错内存库;
其中,在所述多个交错内存芯片中,至少有部分交错内存芯片包括两个双倍数据速率DDR同步动态随机存取存储器SDRAM芯片,此外,输入/输出I/O频率为400兆赫兹MHz,查表效率为每秒钟200兆次搜索Msps,且无需给内存芯片增加额外的引脚。
4.一种网络器件,其特征在于,包括:
接收器,用来接收多个查表请求;
逻辑单元,用来生成多条命令,所述命令通过至少一条共享地址/命令总线和一条共享数据总线来指示访问多个交错内存芯片和多个交错内存库;
其中,所述多个交错内存芯片中的一个交错内存芯片包括四个双倍数据速率DDR同步动态随机存取存储器SDRAM芯片,此外,输入/输出I/O频率为800兆赫兹MHz,查表效率为每秒钟400兆次搜索Msps,为了芯片选择信号需要给内存芯片增加2个引脚。
5.一种网络器件,其特征在于,包括:
接收器,用来接收多个查表请求;
逻辑单元,用来生成多条命令,所述命令通过至少一条共享地址/命令总线和一条共享数据总线来指示访问多个交错内存芯片和多个交错内存库;
其中,一个内存芯片包括六个双倍数据速率DDR同步动态随机存取存储器SDRAM芯片,此外,输入/输出I/O频率为1066兆赫兹MHz,查表效率为每秒钟533兆次搜索Msps,为了芯片选择信号需要给内存芯片增加4个引脚。
6.一种网络器件,其特征在于,包括:
接收器,用来接收多个查表请求;
逻辑单元,用来生成多条命令,所述命令通过至少一条共享地址/命令总线和一条共享数据总线来指示访问多个交错内存芯片和多个交错内存库;
其中,通过给内存芯片增加6个引脚来用于芯片选择信号,一个内存芯片包括八个双倍数据速率DDR同步动态随机存取存储器SDRAM芯片,此外,输入/输出I/O频率为1.6千兆赫兹GHz,查表效率为每秒钟800兆次搜索Msps。
7.一种网络器件,其特征在于,包括:
接收器,用来接收多个查表请求;
逻辑单元,用来生成多条命令,所述命令通过至少一条共享地址/命令总线和一条共享数据总线来指示访问多个交错内存芯片和多个交错内存库;
其中,通过给内存芯片增加6个引脚来用于芯片选择信号,一个内存芯片包括16个双倍数据速率DDR同步动态随机存取存储器SDRAM芯片,此外,输入/输出I/O频率为3.2千兆赫兹GHz,查表效率为每秒钟1.6千兆次搜索Gsps。
8.一种网络装置实现方法,其特征在于,包括:
利用一个内存控制器从多个内存芯片中选择一个内存芯片;
利用所述内存控制器,从多个分配给内存芯片的内存库中选择一个内存库;
通过所述内存芯片中的部分内存芯片之间共享的地址/命令总线的输入/输出I/O引脚来发送命令;
通过所述内存芯片中的部分内存芯片之间共享的数据总线来发送数据字;
其中,在复用的机制下,通过所述共享的地址/命令总线来发送命令,通过所述共享的数据总线发送数据字,所有的内存芯片操作一致,其中,对每个内存芯片进行多个库复制,从而支持查一个或多个表;
其中,复制8个内存库来支持查一个表,复制4个内存库来支持查两个表,复制2个内存库来支持查4个表。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/285,728 US20130111122A1 (en) | 2011-10-31 | 2011-10-31 | Method and apparatus for network table lookups |
US13/285,728 | 2011-10-31 | ||
PCT/CN2012/083849 WO2013064072A1 (en) | 2011-10-31 | 2012-10-31 | A method and apparatus for network table lookups |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103918032A CN103918032A (zh) | 2014-07-09 |
CN103918032B true CN103918032B (zh) | 2016-11-16 |
Family
ID=48173641
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280053051.XA Active CN103918032B (zh) | 2011-10-31 | 2012-10-31 | 一种在网络设备中进行查表的方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20130111122A1 (zh) |
CN (1) | CN103918032B (zh) |
WO (1) | WO2013064072A1 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8817547B2 (en) * | 2012-12-10 | 2014-08-26 | Micron Technology, Inc. | Apparatuses and methods for unit identification in a master/slave memory stack |
US9967187B2 (en) * | 2013-04-11 | 2018-05-08 | Marvell Israel (M.I.S.L) Ltd. | Exact match lookup with variable key sizes |
CN104639275B (zh) * | 2013-11-11 | 2017-10-10 | 华为技术有限公司 | 复用装置、解复用装置、方法、内存控制器、内存及系统 |
US9269440B2 (en) | 2014-05-16 | 2016-02-23 | International Business Machines Corporation | High density search engine |
CN105376159A (zh) * | 2014-08-25 | 2016-03-02 | 深圳市中兴微电子技术有限公司 | 报文处理转发装置及方法 |
US10126968B2 (en) * | 2015-09-24 | 2018-11-13 | International Business Machines Corporation | Efficient configuration of memory components |
US9697884B2 (en) | 2015-10-08 | 2017-07-04 | Rambus Inc. | Variable width memory module supporting enhanced error detection and correction |
US10733089B2 (en) * | 2016-07-20 | 2020-08-04 | Micron Technology, Inc. | Apparatuses and methods for write address tracking |
US10789010B2 (en) * | 2016-08-26 | 2020-09-29 | Intel Corporation | Double data rate command bus |
CN108664518B (zh) * | 2017-03-31 | 2021-12-07 | 深圳市中兴微电子技术有限公司 | 一种实现查表处理的方法及装置 |
US10620881B2 (en) * | 2018-04-23 | 2020-04-14 | Microchip Technology Incorporated | Access to DRAM through a reuse of pins |
US11048654B2 (en) * | 2018-10-24 | 2021-06-29 | Innogrit Technologies Co., Ltd. | Systems and methods for providing multiple memory channels with one set of shared address pins on the physical interface |
CN110032539B (zh) * | 2019-03-20 | 2020-08-25 | 广东高云半导体科技股份有限公司 | 芯片管脚信息处理方法、装置、计算机设备及存储介质 |
US11093416B1 (en) * | 2020-03-20 | 2021-08-17 | Qualcomm Intelligent Solutions, Inc | Memory system supporting programmable selective access to subsets of parallel-arranged memory chips for efficient memory accesses |
CN112115077B (zh) * | 2020-08-31 | 2022-04-19 | 瑞芯微电子股份有限公司 | 一种dram内存驱动优化方法和装置 |
CN113190477B (zh) * | 2021-04-19 | 2022-07-01 | 烽火通信科技股份有限公司 | 一种适用于查表应用的低延时ddr控制方法及装置 |
CN113740851B (zh) * | 2021-09-07 | 2023-06-13 | 电子科技大学 | 一种分时复用单ddr的sar成像数据处理系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1332457A (zh) * | 2000-06-30 | 2002-01-23 | 三星电子株式会社 | 共享控制和地址总线的双通道存储器系统及存储器模块 |
US6687247B1 (en) * | 1999-10-27 | 2004-02-03 | Cisco Technology, Inc. | Architecture for high speed class of service enabled linecard |
US7023719B1 (en) * | 2003-10-23 | 2006-04-04 | Lsi Logic Corporation | Memory module having mirrored placement of DRAM integrated circuits upon a four-layer printed circuit board |
CN101196857A (zh) * | 2008-01-04 | 2008-06-11 | 太原理工大学 | 双端口访问对称动态存储器的接口 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1264281A4 (en) * | 2000-02-25 | 2007-07-11 | Univ New York State Res Found | ARRANGEMENT AND METHOD FOR PROCESSING AND PLAYING A VOLUME |
US7111108B2 (en) * | 2003-04-10 | 2006-09-19 | Silicon Pipe, Inc. | Memory system having a multiplexed high-speed channel |
US7286436B2 (en) * | 2004-03-05 | 2007-10-23 | Netlist, Inc. | High-density memory module utilizing low-density memory components |
US7129753B2 (en) * | 2004-05-26 | 2006-10-31 | Infineon Technologies Ag | Chip to chip interface |
US7188208B2 (en) * | 2004-09-07 | 2007-03-06 | Intel Corporation | Side-by-side inverted memory address and command buses |
DE102004052268B4 (de) * | 2004-10-27 | 2016-03-24 | Polaris Innovations Ltd. | Halbleiterspeichersystem und Verfahren zur Datenübertragung zwischen einem Speichercontroller und einem Halbleiterspeicher |
JP4836110B2 (ja) * | 2004-12-01 | 2011-12-14 | ルネサスエレクトロニクス株式会社 | マルチチップモジュール |
US7281085B1 (en) * | 2005-01-31 | 2007-10-09 | Netlogic Microsystems, Inc. | Method and device for virtualization of multiple data sets on same associative memory |
US8065475B2 (en) * | 2005-05-11 | 2011-11-22 | Stec, Inc. | Registered dual in-line memory module having an extended register feature set |
US8244971B2 (en) * | 2006-07-31 | 2012-08-14 | Google Inc. | Memory circuit system and method |
US20070260841A1 (en) * | 2006-05-02 | 2007-11-08 | Hampel Craig E | Memory module with reduced access granularity |
JP4913640B2 (ja) * | 2007-03-19 | 2012-04-11 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
US7804735B2 (en) * | 2008-02-29 | 2010-09-28 | Qualcomm Incorporated | Dual channel memory architecture having a reduced interface pin requirements using a double data rate scheme for the address/control signals |
WO2009137157A1 (en) * | 2008-03-31 | 2009-11-12 | Rambus Inc. | Independent threading of memory devices disposed on memory modules |
CN102177550B (zh) * | 2008-08-08 | 2014-03-12 | 惠普开发有限公司 | 存储器模块中独立受控的虚拟存储器设备 |
US8098539B2 (en) * | 2009-08-26 | 2012-01-17 | Qualcomm Incorporated | Hybrid single and dual channel DDR interface scheme by interleaving address/control signals during dual channel operation |
US8437163B2 (en) * | 2010-02-11 | 2013-05-07 | Micron Technology, Inc. | Memory dies, stacked memories, memory devices and methods |
-
2011
- 2011-10-31 US US13/285,728 patent/US20130111122A1/en not_active Abandoned
-
2012
- 2012-10-31 CN CN201280053051.XA patent/CN103918032B/zh active Active
- 2012-10-31 WO PCT/CN2012/083849 patent/WO2013064072A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6687247B1 (en) * | 1999-10-27 | 2004-02-03 | Cisco Technology, Inc. | Architecture for high speed class of service enabled linecard |
CN1332457A (zh) * | 2000-06-30 | 2002-01-23 | 三星电子株式会社 | 共享控制和地址总线的双通道存储器系统及存储器模块 |
US7023719B1 (en) * | 2003-10-23 | 2006-04-04 | Lsi Logic Corporation | Memory module having mirrored placement of DRAM integrated circuits upon a four-layer printed circuit board |
CN101196857A (zh) * | 2008-01-04 | 2008-06-11 | 太原理工大学 | 双端口访问对称动态存储器的接口 |
Also Published As
Publication number | Publication date |
---|---|
US20130111122A1 (en) | 2013-05-02 |
CN103918032A (zh) | 2014-07-09 |
WO2013064072A1 (en) | 2013-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103918032B (zh) | 一种在网络设备中进行查表的方法和装置 | |
US8966208B2 (en) | Semiconductor memory device with plural memory die and controller die | |
CN101149961B (zh) | 用于控制存储器接口的设备和方法 | |
US9773531B2 (en) | Accessing memory | |
CN102834815B (zh) | 高利用率多分区串行存储器 | |
US7463535B2 (en) | Memory modules and memory systems having the same | |
US7965530B2 (en) | Memory modules and memory systems having the same | |
CN102103548B (zh) | 提高双倍数据速率同步随机存储器读写速率的方法及装置 | |
US7313715B2 (en) | Memory system having stub bus configuration | |
US6226757B1 (en) | Apparatus and method for bus timing compensation | |
CN102194515A (zh) | 片上终结电路、存储器件和模块及操练片上终结器方法 | |
CN107111566B (zh) | 用于存储器模块的动态随机存取存储器(dram)部件 | |
CN113553277A (zh) | 一种ddr5 sdram的高吞吐率、低延迟phy接口电路装置 | |
WO2005117019A1 (en) | Dram interface circuits having enhanced skew, slew rate and impedence control | |
WO2017172287A2 (en) | Read delivery for memory subsystem with narrow bandwidth repeater channel | |
US8225063B2 (en) | Synchronous dynamic random access memory interface and method | |
US7969799B2 (en) | Multiple memory standard physical layer macro function | |
US20210280226A1 (en) | Memory component with adjustable core-to-interface data rate ratio | |
TW200816222A (en) | Multi-port memory device | |
WO2017172286A1 (en) | Write delivery for memory subsystem with narrow bandwidth repeater channel | |
US6226754B1 (en) | Apparatus and method for device timing compensation | |
JP2012522311A (ja) | マージドメモリコマンドプロトコルをサポートするメモリシステム、コントローラ、およびデバイス | |
CN102541769A (zh) | 一种存储器接口访问控制方法及装置 | |
WO2021159412A1 (zh) | 一种存储器、网络设备及数据访问方法 | |
JP2000057051A (ja) | メモリサブシステム |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231201 Address after: Room 1-9, 24th Floor, Unit 2, Building 1, No. 28, North Section of Tianfu Avenue, High tech Zone, Chengdu City, Sichuan Province, 610095 Patentee after: Sichuan Huakun Zhenyu Intelligent Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |