CN106372010B - 封包存取方法以及相关封包存取装置 - Google Patents
封包存取方法以及相关封包存取装置 Download PDFInfo
- Publication number
- CN106372010B CN106372010B CN201610586926.2A CN201610586926A CN106372010B CN 106372010 B CN106372010 B CN 106372010B CN 201610586926 A CN201610586926 A CN 201610586926A CN 106372010 B CN106372010 B CN 106372010B
- Authority
- CN
- China
- Prior art keywords
- storage unit
- cell
- library
- unit library
- read
- 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
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/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1663—Access to shared memory
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9036—Common buffer combined with individual queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L5/00—Arrangements affording multiple use of the transmission path
- H04L5/22—Arrangements affording multiple use of the transmission path using time-division multiplexing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种封包存取方法以及相关封包存取装置。封包存取装置包含封包缓冲器,包含多个第一存储单元库,其每一存储单元储存一个细胞的数据并在一个时钟周期内容纳一次访问操作;多个第二存储单元库,其每一存储单元储存一个细胞的数据并在一个时钟周期内容纳一次访问操作;多个写端口;多个读端口,以及管理电路,管理多个写端口和多个读端口的操作,其中管理电路控制多个写端口,以交替地将数据封包的至少两个细胞写入至多个第一存储单元库的至少一个相应存储单元和多个第二存储单元库的至少一个相应存储单元中。本发明的封包存取方法以及相关封包存取装置可以降低成本和元件功耗。
Description
【交叉引用】
本申请要求申请日为2015年7月24日,美国临时申请号为62/196,325的美国临时申请案的优先权,上述临时申请案的内容一并并入本申请。
【技术领域】
本发明有关于数据通信,更具体来说,有关于用于基于封包的(packet-based)交换的共享缓冲器仲裁的封包存取方法以及相关封包存取装置。
【背景技术】
除非在本文中另外指出,在本节中描述的做法并非权利要求书中记载技术方案的现有技术,并且不被承认为是包括在本节中的现有技术。
在高速封包交换设计中,超高存储器带宽通常是共享缓冲器封包交换的最关键的要求之一。为提供足够带宽用于读和写操作,通常使用昂贵的多端口存储器来实施封包缓冲器。传统方法使用昂贵的多端口存储器(例如,2写/2读(2W2R)存储器、2读写(2RW)存储器或4读写(4RW)存储器)或算法存储器(algorithmic memory)来实施高速封包缓冲器。
图6展示了现有方法的范例之一,图6展示了2端口封包交换器的封包缓冲器600。封包缓冲器600内置能够在同一时钟周期内支持两个读操作(2R)和两个写操作(2R)的2读/2写(2R2W)存储器。封包缓冲器600还包含第一写端口(RX0)、第二写端口(RX1)、第一读端口(TX0)、第二读端口(TX1)和缓冲器和队列管理电路(也可简称为管理电路)。图7展示了现有方法的另一范例,图7展示了2端口封包交换器的封包缓冲器700。封包缓冲器700内置多个2RW存储器单元的多个库。封包缓冲器700还包含第一写端口(RX0)、第二写端口(RX1)、第一读端口(TX0)、第二读端口(TX1)和缓冲器和队列管理电路(也可简称为管理电路)。每一2RW存储器单元能够支持下述操作之一:同一时钟周期内的两个读操作、同一时钟周期内的两个写操作,或同一时钟周期内的一个读操作和一个写操作。对于写操作,封包缓冲器700的缓冲器管理指派具有空闲细胞(free cell),且在同一时钟周期内其读/写端口并未被完全使用(例如,2R或1R+1W)的存储库。举例来说,当第一读端口(TX0)读第一存储库,且第二存储库(TX1)读第二存储库时,缓冲器管理可自第一存储库指派空闲细胞至第一写端口(RX0),并自第二存储库指派空闲细胞至第二写端口(RX1)。当TX0和TX1均读第一库时,缓冲器管理可自第二存储库指派自由细胞至RX0,并自第三存储库指派自由细胞至RX1。
尽管如此,传统方法(例如与封包缓冲器600和封包缓冲器700相关的方法)利用每个存储位细胞(memory bit cell)具有相对大的晶体管数量的昂贵的存储器。因此,由于每个存储位单元较大的晶体管数量,这些方法也有高成本和高功耗的缺点。
【发明内容】
依据本发明的示范性实施例,提出一种封包存取方法以及相关封包存取装置以解决上述问题。
依据本发明的一个实施例,提出一种封包存取方法,包含通过封包缓冲器接收数据封包,封包缓冲器包含多个第一存储单元库,以及多个第二存储单元库,每一存储单元储存一个细胞的数据,并在一个时钟周期内容纳一次访问操作;在数据封包包含至少两个细胞的数据时,交替地将数据封包的至少两个细胞的数据写入多个第一存储单元库的至少一个存储单元以及多个第二存储单元库的至少一个存储单元中;以及依据时分复用方案自多个第一存储单元库以及多个第二存储单元库读取。
依据本发明的另一实施例,提出一种封包存取装置,包含封包缓冲器,包含多个第一存储单元库,其中多个第一存储单元库中的每一存储单元储存一个细胞的数据并在一个时钟周期内容纳一次访问操作;多个第二存储单元库,其中多个第二存储单元库中的每一存储单元储存一个细胞的数据并在一个时钟周期内容纳一次访问操作;多个写端口;多个读端口,以及管理电路,管理多个写端口和多个读端口的操作,其中管理电路控制多个写端口,以交替地将数据封包的至少两个细胞写入至多个第一存储单元库的至少一个相应存储单元和多个第二存储单元库的至少一个相应存储单元中。
本发明的封包存取方法以及相关封包存取装置可以降低成本和元件功耗。
【附图说明】
图1是依据本发明的概念上的封包缓冲器的示意图。
图2是依据本揭露实施的范例的封包缓冲器的示意图。
图3是依据本揭露实施的范例的封包缓冲器的示意图。
图4是依据本揭露的实施的范例的装置的示意图。
图5是依据本揭露的实施的示例流程的示意图。
图6展示了2端口封包交换器的封包缓冲器。
图7展示了2端口封包交换器的封包缓冲器。
【具体实施方式】
在说明书及权利要求书当中使用了某些词汇来指称特定的组件。所属领域中的技术人员应可理解,制造商可能会用不同的名词来称呼同样的组件。本说明书及权利要求书并不以名称的差异来作为区封包件的方式,而是以组件在功能上的差异来作为区分的基准。在通篇说明书及权利要求书当中所提及的「包含」是开放式的用语,故应解释成「包含但不限定于」。另外,「耦接」一词在此包含任何直接及间接的电气连接手段。因此,若文中描述第一装置耦接于第二装置,则代表第一装置可直接电气连接于第二装置,或透过其它装置或连接手段间接地电气连接至第二装置。
一般地,封包是可变长帧(variable length frame)。对于以太网来说,封包的长度通常在64字节(或64B)和1518字节(或1518B)之间。通常,传输中的两个连续的封包被一定量的间隙分开。对于以太网来说,该封包间隙通常为20B,包含12B的帧间间隙(inter-frame gap)和8B的前言(preamble)。在被作为一个或多个细胞储存于封包交换器的封包缓冲器中之前,封包通常被分段为固定大小的细胞。细胞大小通常大于最短的封包大小,即,对于以太网论述,64B。范例的细胞大小可为168B。此外,封包缓冲器被使用细胞链接列表(cell link list)来管理。从概念上讲,两端口封包交换器需要两个写端口用于两个接收(RX)端口和两个读端口用于两个发送(TX)端口。为维持最短封包的线速性能(wire-speedperformance),封包缓冲器需要允许RX端口写最小封包,例如,具有64B大小,其中每个最小封包时间包含封包间隙。对于100千兆赫(100G)以太网,最小封包时间是6.72纳秒(ns)(=(64+20字节)*8比特位每字节/100Gbps)。若封包缓冲器的带宽由仲裁机制,例如固定的时分复用(time-division multiplexing,简写为TDM)机制分配(例如,每6.72ns分配168B细胞写带宽),提供的写带宽实际是168B(细胞大小)/6.72ns=200Gbps每100G以太网RX端口。在这种情况下,可以说该封包存储器加速因子(speed-up factor)是2。
给定上述加速因子,对于具有大于两个细胞的长度的封包来说,即便端口因为某些原因丢失TDM时隙,封包缓冲器仍然能够提供足够带宽来维持线速性能。举例来说,一个337B封包(3个细胞)将占用28.65ns(=(337+20字节)*8比特位每字节/100Gbps)进入封包交换器。若端口丢失TDM时隙,且花了四个时隙将封包写入封包缓冲器中,由于四个时隙仍然可能小于封包时间(即4*6.72ns=26.88ns,小于28.65ns),仍然不会发生溢出问题。
图1是依据本发明的概念上的封包缓冲器100的示意图。概念上的封包缓冲器100被提供来举例说明本公开的各种概念。请参考图1,概念上的封包缓冲器100可包含缓冲器和队列管理电路(也可简称为管理电路)110、存储单元的多个存储库的奇数级(rank)(第一级)120、存储单元的多个存储库的偶数级(第二级)130、第一写端口(RX0)140、第二写端口(RX1)150、第一读端口(TX0)160和第二读端口(TX1)170。缓冲器和队列管理电路110可控制第一写端口140、第二写端口150、第一读端口160和第二读端口170的操作。
存储单元的多个存储库的第一级120可包含,举例来说,至少第一存储库122、第二存储库124和第三存储库126。存储单元的多个存储库的第二级130可包含,举例来说,至少第一存储库132、第二存储库134和第三存储库136。存储库122、124、126、132、134和136中的每一个可分别包含若干1读写(1RW)存储单元,其中在一个给定的时钟周期,每一1RW存储单元能够支持一次访问操作(例如,一次读操作或一次写操作)。从而,概念上的封包缓冲器100内建有多个1RW存储单元的存储库,其被布置或以其它方式分成多个存储库(例如,第一存储库122、第二存储库124、第三存储库126、第一存储库132、第二存储库134和第三存储库136)的两个级(例如,第一级120和第二级130)。
在概念上的封包缓冲器100中,缓冲器和队列管理电路110可管理写端口140和150以及读端口160和170的操作。更具体来说,缓冲器和队列管理电路110可控制写端口140和150以交替地写数据封包的至少两个细胞进入存储单元的第一级(也称为多个第一存储单元库)120的至少一个相应存储单元和存储单元的第二级(也称为多个第二存储单元库)130的至少一个相应存储单元中。缓冲器和队列管理电路110可控制读端口160和170依据TDM机制自存储单元的第一级120和存储单元的第二级130读取。
缓冲器和队列管理电路110可控制写端口140和150通过执行若干操作,将数据封包作为包含至少一个奇数细胞至少一个偶数细胞的多个细胞的数据来写。举例来说,缓冲器和队列管理电路110可将数据封包的每一奇数细胞写入至存储单元的第一级120的相应存储细胞中,并将数据封包的每一偶数细胞写入至存储单元的第二级130的相应存储细胞中。在将数据封包的每一奇数细胞写入至存储单元的第一级120的相应存储细胞中,并将数据封包的每一偶数细胞写入至存储单元的第二级130的相应存储细胞中时,缓冲器和队列管理电路110可控制写端口140和150在将数据封包的偶数细胞写入至存储单元的第二级130的相应存储细胞中之前,将数据封包的奇数细胞写入至存储单元的第一级120的相应存储细胞中。
在依据TDM机制读存储单元的第一级120和存储单元的第二级130时,缓冲器和队列管理电路110可执行若干操作。举例来说,缓冲器和队列管理电路110可指派第一读端口160,自存储单元的第一级120的相应存储单元开始,交替地读存储单元的第一级120和第二级130。缓冲器和队列管理电路110也可指派第二读端口170,自存储单元的第二级130的相应存储单元开始,交替地读存储单元的第一级120和第二级130。在分配第一读端口160,以交替地读存储单元的第一级120和第二级130时,缓冲器和队列管理电路110可提供具有指向存储单元的第一级120的第一指针和指向存储单元的第二级130的第二指针的第一读端口160。在分配第二读端口170,以交替地读存储单元的第一级120和第二级130时,缓冲器和队列管理电路110可提供具有指向存储单元的第一级120的第三指针和指向存储单元的第二级130的第四指针的第二读端口170。
在依据TDM机制读存储单元的第一级120和存储单元的第二级130时,缓冲器和队列管理电路110可控制第一读端口160和第二读端口170执行若干操作。举例来说,在待被读取的数据封包包含至少两个细胞的数据的情况下,缓冲器和队列管理电路110可执行下述操作:在第一时钟周期读偶数细胞的数据;在第一时钟周期之后的第二时钟周期读奇数细胞的数据;以及执行单细胞重新排序(one-cell reordering)以依序输出所述奇数细胞和所述偶数细胞。在执行单细胞重新排序时,第一读端口160和第二读端口170可执行若干操作,包含,举例来说,缓冲所述偶数细胞的数据;在第三时钟周期发送所述奇数细胞的数据;以及在第三时钟周期之后的第四时钟周期发送所述偶数细胞的数据。
在数据封包包含不多于一个细胞的数据的情况下,缓冲器和队列管理电路110可控制写端口140和150将数据封包作为一个细胞的数据写入存储单元的第一级120的第一存储细胞和存储单元的第二级130的第二存储细胞中。在将数据封包作为一个细胞的数据写入存储单元的第一级120的第一存储细胞和存储单元的第二级130的第二存储细胞中时,写端口140和150可在一个时钟周期内将数据封包写入存储单元的第一级120的相应存储细胞和存储单元的第二级130的相应存储细胞中。此外,缓冲器和队列管理电路110可控制读端口160和170,自该第一存储单元或该第二存储单元读包含不多于一个细胞的数据的数据封包的该一个细胞的数据,并发送该数据封包。.
有鉴于此,第一写端口140和第二写端口150可将数据封包的奇数细胞(例如,第一细胞、第三细胞、第五细胞、第七细胞等)写入至奇数级或第一级120,以及将数据封包的偶数细胞(例如,第二细胞、第四细胞、第六细胞、第八细胞等)写入至偶数级或第二级130。此外,第一写端口140和第二写端口150可在将数据封包的偶数细胞写入至偶数级或第二级130之前,先将数据封包的奇数细胞写入至奇数级或第一级120。此外,第一读端口160和第二读端口170可依据基于TDM的仲裁机制读两个级,第一级120和第二级130。此外,第一读端口160可以被容纳或以其他方式提供重排序机制(reordering mechanism)165。类似地,第二读端口170可以被容纳或以其他方式提供重排序机制175。重排序机制165和175可在依序提供数据封包的多个细胞(例如,在提供数据封包的第二细胞之前提供数据封包的第一细胞,在提供数据封包的第三细胞之前提供数据封包的第二细胞,等等)时协助第一读端口160和第二读端口170。
有利的是,在依据本公开的实施方式的用于封包缓冲器应用,可以通过使用较少的读/写端口数量的存储器元件(例如,1RW存储器单元)模拟多读/写端口存储器,裸晶尺寸和功率消耗均可以减少。反之,由于每个存储器比特细胞的大晶体管数量,传统方法倾向于导致高成本和高功耗。
图2是依据本揭露实施的范例的封包缓冲器200的示意图。范例的封包缓冲器200可包含缓冲器和队列管理电路(也可简称为管理电路)210、存储单元的多个存储库的奇数级(第一级)(也称为多个第一存储单元库)220、存储单元的多个存储库的偶数级(第二级)(也称为多个第二存储单元库)230、第一写端口(RX0)240、第二写端口(RX1)250、第一读端口(TX0)260、第二读端口(TX1)270、奇数读解码器(第一读解码器)262,以及偶数读解码器(第二读解码器)272。缓冲器和队列管理电路210可控制第一写端口240、第二写端口250、第一读端口260和第二读端口270的操作。
存储单元的多个存储库的第一级220可包含,举例来说,至少第一存储库222、第二存储库224和第三存储库226。存储单元的多个存储库的第二级230可包含,举例来说,至少第一存储库232、第二存储库234和第三存储库236。存储库222、224、226、232、234和236中的每一个可分别包含若干1读写(1RW)存储单元(未示出,以避免模糊图2),其中在一个给定的时钟周期,每一1RW存储单元能够支持一次访问操作(例如,一次读操作或一次写操作)。第一读解码器262可与第一级220相关联,以发布读请求至第一级220,第二读解码器272可与第二级230相关联,以发布读请求至第二级230。因此,范例的封包缓冲器200内建有多个1RW存储单元的多个存储库,其被布置或以其它方式分成多个存储库(例如,第一存储库222、第二存储库224、第三存储库226、第一存储库232、第二存储库234和第三存储库236)的两个级(例如,第一级220和第二级230)。
在范例的封包缓冲器200中,第一写端口240和第二写端口250可在将数据封包的一个细胞写入至偶数级或第二级230中之前,先将数据封包的另一细胞写入至奇数级或第一级220中。此外,第一读端口260和第二读端口270可依据TDM机制280读两个级,第一级220和第二级230。
对于第一写端口240和第二写端口250中的每一个,缓冲器和队列管理电路210可周期性为每一输入数据封包分配空闲细胞,例如,通过先从第一级220分配一个细胞,随后从第二级230分配一个细胞。用于范例的封包缓冲器200的存储库选择机制可为,举例来说,选择没有任何读/写端口冲突的存储库。在写数据封包的细胞时,缓冲器和队列管理电路210可指导第一写端口240或第二写端口250将数据封包的奇数细胞(例如,第一细胞、第三细胞、第五细胞、第七细胞等)写入至第一级220,以及将数据封包的偶数细胞(例如,第二细胞、第四细胞、第六细胞、第八细胞等)写入至第二级230。此外,缓冲器和队列管理电路210可指导第一写端口240或第二写端口250在将数据封包的偶数细胞写入至第二级230之前,先将数据封包的奇数细胞写入至第一级220。
第一读端口260和第二读端口270可依据基于TDM机制280分别自第一级220和第二级230读细胞。举例来说,当第一读端口260被缓冲器和队列管理电路210指派来自第一级220读一个细胞时,第二读端口270可被缓冲器和队列管理电路210指派来自第二级230读一个细胞。第一读端口260和第二读端口270中的每一个一次可被缓冲器和队列管理电路210提供有两个细胞指针(例如,一个指向第一级220,另一个指向第二级230)。基于每个细胞时隙,来自各读端口以读取细胞的细胞指针,第一读解码器262和第二读解码器272可分别发布读请求至第一级220或第二级230。第一读端口260和第二读端口270中的每一个可随后依据TDM机制280发布相关读请求至当前指派的第一级220或第二级230。举例来说,当其读端口被依据TDM机制280被指派来读第二级230时,第一读端口260或第二读端口270可自第二级230读取偶数细胞。
依据TDM机制280,第一读端口260可从第一级220开始,交替地读第一级220和第二级230,第二读端口270可从第二级230开始,交替地读第一级220和第二级230。可选地,依据TDM机制280,第一读端口260可从第二级230开始,交替地读第一级220和第二级230,第二读端口270可从第一级220开始,交替地读第一级220和第二级230。
在一些情况下,TDM序列可以不总是与封包序列(例如,第一级220→第二级230→第一级220→第二级230→…)对齐,在读端口在读封包的奇数细胞之前,先读相同封包的偶数细胞的情况下,该读端口可执行单细胞重新排序。在图2所示的范例中,第一读端口260可先自第二级230读数据封包204(包含细胞B-1和细胞B-2)的细胞B-2。作为结果,第一读端口260可缓冲细胞B-2,直至在下一时钟周期期间,第一读端口260自第一级220读细胞B-1,以依序发送细胞(例如,发送细胞B-2之前,发送细胞B-1)。
对于具有单一细胞的数据封包,缓冲器和队列管理电路210可从第一级220和第二级230分配两个细胞,用于第一写端口240或第二写端口250在同一时钟周期内将该单一细胞数据封包的该细胞写入至两个存储库中,其中第一级220和第二级230中各一个。即,缓冲器和队列管理电路210可指导第一写端口240或第二写端口250在第一级220和第二级230两者中复制该单一细胞数据封包的该细胞。在图2所述的范例中,数据封包202是具有单一细胞A-1的单一细胞数据封包,并且细胞A-1因此被复制在第一级220的存储库224的存储单元和第二级230的存储库234的存储单元中。当读取该单一细胞数据封包202的该细胞时,无论是第一读端口260或第二读取端口270可自无论是第一级220或第二级230中读该细胞,以及不对线速性能产生负面影响而直接发送该细胞。
对于具有奇数数量细胞(其中所述奇数数量大于1,例如,三个细胞、五个细胞、七个细胞等等)的数据的数据封包来说,缓冲器和队列管理电路210可指导第一写端口240或第二写端口250将数据封包的奇数细胞写入至第一级220,以及将数据封包的偶数细胞写入至第二级230。数据封包的最后一个细胞(一个奇数细胞),没有被复制。在图2所述的范例中,数据封包206具有奇数数量细胞的数据,分别为三个细胞的数据:细胞C-1、细胞C-2和细胞C-3。无论第一写端口240或第二写端口250可将细胞C-1写入至第一级220的存储库224的存储单元中,将细胞C-2写入至第二级230的存储库234的存储单元中,将细胞C-3写入至第一级220的存储库226的存储单元中。细胞C-3没有被复制在第二级230中的存储单元的任一存储库中。
图3是依据本揭露实施的范例的封包缓冲器300的示意图。范例的封包缓冲器300可包含缓冲器和队列管理电路(也可简称为管理电路)310、存储单元的多个存储库的奇数级(第一级)320、存储单元的多个存储库的偶数级(第二级)330、第一写端口(RX0)340、第二写端口(RX1)345、第三写端口(RX2)350、第四写端口(RX3)355、第一读端口(TX0)360、第二读端口(TX1)365、第三读端口(TX2)370、第四读端口(TX3)375、奇数读解码器(第一读解码器)362,以及偶数读解码器(第二读解码器)372。缓冲器和队列管理电路310可控制第一写端口340、第二写端口345、第三写端口350、第四写端口355、第一读端口360、第二读端口365、第三读端口370、第四读端口375的操作。
存储单元的多个存储库的第一级320可包含,举例来说,至少第一存储库322、第二存储库324和第三存储库326。存储单元的多个存储库的第二级330可包含,举例来说,至少第一存储库332、第二存储库334和第三存储库336。存储库322、324、326、332、334和336中的每一个可分别包含若干1读写(1RW)存储单元(未示出,以避免模糊图3),其中在一个给定的时钟周期,每一1RW存储单元能够支持一次访问操作(例如,一次读操作或一次写操作)。第一读解码器362可与第一级320相关联,以基于来自于第一读端口360和第二读端口365的两个细胞指针,发布两个读请求至第一级320的一个存储库或两个存储库,以每个细胞时隙自两个存储单元读两个细胞的数据。类似地,第二读解码器372可与第二级330相关联,以基于来自于第三读端口370和第四读端口375的两个细胞指针,发布两个读请求至第二级330的一个存储库或两个存储库,以每个细胞时隙自两个存储单元读两个细胞的数据。因此,范例的封包缓冲器300内建有多个1RW存储单元的多个存储库,其被布置或以其它方式分成多个存储库(例如,第一存储库322、第二存储库324、第三存储库326、第一存储库332、第二存储库334和第三存储库336)的两个级(例如,第一级320和第二级330)。
在范例的封包缓冲器300中,第一写端口340、第二写端口345、第三写端口350和第四写端口355可在将数据封包的一个细胞写入至偶数级或第二级330中之前,先将数据封包的另一细胞写入至奇数级或第一级320中。此外,第一读端口360、第二读端口365、第三读端口370和第四读端口375可依据TDM机制380自两个级(第一级320和第二级330)读取。
对于第一写端口340、第二写端口345、第三写端口350和第四写端口355中的每一个,缓冲器和队列管理电路310可周期性为每一输入数据封包分配空闲细胞,例如,通过先从第一级320分配一个细胞,随后从第二级330分配一个细胞。用于范例的封包缓冲器300的存储库选择机制可为,举例来说,选择没有任何读/写端口冲突的存储库。在写数据封包的细胞时,缓冲器和队列管理电路310可指导第一写端口340、第二写端口345、第三写端口350和第四写端口355中的任意一个将数据封包的奇数细胞(例如,第一细胞、第三细胞、第五细胞、第七细胞等)写入至第一级320,以及将数据封包的偶数细胞(例如,第二细胞、第四细胞、第六细胞、第八细胞等)写入至第二级330。此外,缓冲器和队列管理电路310可指导第一写端口340、第二写端口345、第三写端口350和第四写端口355中的任意一个在将数据封包的偶数细胞写入至第二级330之前,先将数据封包的奇数细胞写入至第一级320。
第一读端口360、第二读端口365、第三读端口370和第四读端口375可依据基于TDM机制380分别自第一级320和第二级330读细胞。举例来说,当第一读端口360和第二读端口365被缓冲器和队列管理电路310指派来分别自第一级320读细胞时,第三读端口370和第四读端口375可被缓冲器和队列管理电路310指派来分别自第二级330读细胞。第一读端口360、第二读端口365、第三读端口370和第四读端口375中的每一个一次可被缓冲器和队列管理电路310提供有两个细胞指针(例如,一个指向第一级320,另一个指向第二级330)。基于每个细胞时隙,来自各读端口以读取细胞的细胞指针,第一读端口360、第二读端口365、第三读端口370和第四读端口375中的每一个可分别发布读请求至第一级320或第二级330。第一读端口360、第二读端口365、第三读端口370和第四读端口375中的每一个可随后依据TDM机制380发布相关读请求至当前指派的第一级320或第二级330。举例来说,当其读端口被依据TDM机制380指派来读第二级330时,第一读端口360、第二读端口365、第三读端口370或第四读端口375可自第二级330读取偶数细胞。
依据TDM机制380,第一读端口360和第二读端口365中的每一个可从第一级320开始,交替地读第一级320和第二级330,而第三读端口370和第四读端口375中的每一个可从第二级330开始,交替地读第一级320和第二级330。可选地,依据TDM机制380,第一读端口360和第二读端口365中的每一个可从第二级330开始,交替地读第一级320和第二级330,而第三读端口370和第四读端口375中的每一个可从第一级320开始,交替地读第一级320和第二级330。
在一些情况下,TDM序列可以不总是与封包序列(例如,第一级320→第二级330→第一级320→第二级330→…)对齐,在读端口在读封包的奇数细胞之前,先读相同封包的偶数细胞的情况下,该读端口可执行单细胞重新排序。在图3所示的范例中,第三读端口370可先自第二级330读数据封包306(包含细胞C-1、细胞C-2和细胞C-3)的细胞C-2。作为结果,第三读端口370可缓冲细胞C-2,直至在下一时钟周期期间,第三读端口370自第一级320读细胞C-1,以依序发送细胞(例如,发送细胞C-2之前,发送细胞C-1)。
对于具有单一细胞的数据封包,缓冲器和队列管理电路310可从第一级320和第二级330两者分配两个细胞,用于第一写端口340、第二写端口345、第三写端口350和第四写端口355中的任意一个在同一时钟周期内将该单一细胞数据封包的该细胞写入至两个存储库中,其中第一级320和第二级330中各一个。即,缓冲器和队列管理电路310可指导第一写端口340、第二写端口345、第三写端口350和第四写端口355中的任意一个在第一级320和第二级330两者中复制该单一细胞数据封包的该细胞。在图3所述的范例中,数据封包302是具有单一细胞A-1的单一细胞数据封包,并且细胞A-1因此被复制在第一级320的存储库324的存储单元和第二级330的存储库334的存储单元中。当读取该单一细胞数据封包302的该细胞时,第一读端口360、第二读端口365、第三读端口370或第四读端口375中的任意一个可自无论是第一级320或第二级330中读该细胞,以及不对线速性能产生负面影响而直接发送该细胞。
对于具有奇数数量细胞(其中所述奇数数量大于1,例如,三个细胞、五个细胞、七个细胞等等)的数据的数据封包来说,缓冲器和队列管理电路310可指导第一写端口340、第二写端口345、第三写端口350或第四写端口355中的任意一个将数据封包的奇数细胞写入至第一级320,以及将数据封包的偶数细胞写入至第二级330。数据封包的最后一个细胞(一个奇数细胞),没有被复制。在图3所述的范例中,数据封包306具有奇数数量细胞的数据,分别为三个细胞的数据:细胞C-1、细胞C-2和细胞C-3。第一写端口340、第二写端口345、第三写端口350或第四写端口355中的任意一个可将细胞C-1写入至第一级320的存储库324的存储单元中,将细胞C-2写入至第二级330的存储库334的存储单元中,将细胞C-3写入至第一级320的存储库326的存储单元中。细胞C-3没有被复制在第二级330中的存储单元的任一存储库中。
图4是依据本揭露的实施的范例的装置400的示意图。范例的装置400可以执行与本文中所描述的技术、方法和系统相关的各种功能,包括以下描述的示例流程500。范例的装置400可以被实现为通信设备或交换器设备,例如,封包交换器。
范例的装置400包含封包缓冲器405。封包缓冲器405可至少包含图4所示的元件,例如缓冲器和队列管理电路(也可简称为管理电路)410、第一1RW存储单元库的奇数级420、第二1RW存储单元库的偶数级430、若干写端口440和若干读端口450。封包缓冲器405可以为概念上的封包缓冲器100、范例的封包缓冲器200及/或范例的封包缓冲器300的一种实现。尽管缓冲器和队列管理电路410、第一1RW存储单元库的奇数级420、第二1RW存储单元库的偶数级430、若干写端口440和若干读端口450被展示为彼此分离的分立元件,在范例的装置400的各种变形实施中,至少部分元件可以是单个集成电路,芯片或芯片组的一个组成部分。写端口440可包含多个写端口,读端口450可包含多个读端口。
奇数级420可包含多个第一存储单元库,其中每个存储单元储存一个细胞的数据并在一个时钟周期内容纳一次访问操作(例如,一次读操作或一次写操作)。奇数级430可包含多个第二存储单元库,其中每个存储单元储存一个细胞的数据并在一个时钟周期内容纳一次访问操作(例如,一次读操作或一次写操作)。写端口440可包含至少第一写端口和第二写端口。读端口450可包含至少第一读端口和第二读端口。缓冲器和队列管理电路410可管理写端口440和读端口450的操作。举例来说,在待被储存的数据封包包含至少两个细胞的数据的情况下,缓冲器和队列管理电路410可控制写端口440交替地将该数据封包的至少两个细胞的数据写入至第一存储单元库的奇数级420的至少一个对应的存储单元以及第二存储单元库的偶数级430的至少一个对应的存储单元中。此外,缓冲器和队列管理电路410也可依据TDM机制(例如,TDM机制280或TDM机制380),控制读端口450自奇数级420的第一存储单元库及偶数级430的第二存储单元库读取。
在一些实施方式中,缓冲器和队列管理电路410可控制写端口440通过执行若干操作,将数据封包作为包含至少一个奇数细胞至少一个偶数细胞的多个细胞的数据来写。举例来说,写端口440可将数据封包的每一奇数细胞写入至奇数级420的第一存储单元库的相应存储细胞中。写端口44也可将数据封包的每一偶数细胞写入至第二存储单元库的偶数级430的相应存储细胞中。
在一些实施方式中,在将数据封包的每一奇数细胞写入至奇数级420的第一存储单元库的相应存储细胞中,以及将数据封包的每一偶数细胞写入至偶数级430的第二存储单元库的相应存储细胞时,缓冲器和队列管理电路410可控制写端口440在将数据封包的偶数细胞写入至偶数级430的第二存储单元库的相应存储细胞中之前,将数据封包的奇数细胞写入至奇数级420的第一存储单元库的相应存储细胞中。
在一些实施方式中,在依据TDM机制自奇数级420的第一存储单元库和偶数级430的第二存储单元库读取时,缓冲器和队列管理电路410可执行若干操作。举例来说,缓冲器和队列管理电路410可指派读端口450的第一读端口自第一存储单元库的相应存储单元开始,交替地读第一存储单元库和第二存储单元库。缓冲器和队列管理电路410也可指派读端口450的第二读端口自第二存储单元库的相应存储单元开始,交替地读第一存储单元库和第二存储单元库。
在一些实施方式中,在分配第一读端口,以交替地读第一存储单元库和第二存储单元库时,缓冲器和队列管理电路410可提供具有指向第一存储单元库的第一指针和指向第二存储单元库的的第二指针的第一读端口。此外,在分配第二读端口,以交替地读第一存储单元库和第二存储单元库时,缓冲器和队列管理电路410可提供具有指向第一存储单元库的第三指针和指向第二存储单元库的的第四指针的第二读端口。
在一些实施方式中,在依据TDM机制自第一存储单元库和第二存储单元库读取时,缓冲器和队列管理电路410可控制读端口450执行若干操作。举例来说,在待被读取的数据封包包含至少两个细胞的数据的情况下,缓冲器和队列管理电路410可控制读端口450在第一时钟周期读偶数细胞的数据,在第一时钟周期之后的第二时钟周期读奇数细胞的数据,以及控制读端口450执行单细胞重新排序以依序输出所述奇数细胞和所述偶数细胞。
在一些实施方式中,在执行单细胞重新排序时,读端口450可执行若干操作。举例来说,读端口450的至少一个读端口可缓冲所述偶数细胞的数据,在第三时钟周期发送所述奇数细胞的数据,以及在第三时钟周期之后的第四时钟周期发送所述偶数细胞的数据。
在一些实施方式中,在依据TDM机制自第一存储单元库和第二存储单元库读取时,缓冲器和队列管理电路410可执行若干操作。举例来说,缓冲器和队列管理电路410可指派读端口450的第一读端口,自第一存储单元库的相应存储单元开始,交替地读第一存储单元库和第二存储单元库。缓冲器和队列管理电路410可指派读端口450的第二读端口,自第一存储单元库的相应存储单元开始,交替地读第一存储单元库和第二存储单元库。缓冲器和队列管理电路410可指派读端口450的第三读端口,自第二存储单元库的相应存储单元开始,交替地读第一存储单元库和第二存储单元库。缓冲器和队列管理电路410可指派读端口450的第四读端口,自第二存储单元库的相应存储单元开始,交替地读第一存储单元库和第二存储单元库。
在一些实施方式中,在分配第一读端口,以交替地读第一存储单元库和第二存储单元库时,缓冲器和队列管理电路410可提供具有指向第一存储单元库的第一指针和指向第二存储单元库的的第二指针的第一读端口。在分配第二读端口,以交替地读第一存储单元库和第二存储单元库时,缓冲器和队列管理电路410可提供具有指向第一存储单元库的第三指针和指向第二存储单元库的的第四指针的第二读端口。在分配第三读端口,以交替地读第一存储单元库和第二存储单元库时,缓冲器和队列管理电路410可提供具有指向第一存储单元库的第五指针和指向第二存储单元库的的第六指针的第三读端口。在分配第四读端口,以交替地读第一存储单元库和第二存储单元库时,缓冲器和队列管理电路410可提供具有指向第一存储单元库的第七指针和指向第二存储单元库的的第八指针的第四读端口。
在一些实施方式中,在数据封包包含不多于一个细胞的数据的情况下,缓冲器和队列管理电路410可更控制写端口440将数据封包作为一个细胞的数据写入至第一存储单元库的第一存储细胞以及第二存储单元库的第二存储细胞中。
在一些实施方式中,在将数据封包作为一个细胞写入至第一存储单元库的第一存储单元以及第二存储单元库的第二存储单元中时,写端口440在一个时钟周期内将数据封包写入至第一存储单元库的相应存储细胞以及第二存储单元库的相应存储细胞中。
在一些实施方式中,缓冲器和队列管理电路410可更控制读端口450执行若干操作。举例来说,缓冲器和队列管理电路410可控制读端口450自无论第一存储单元或第二存储单元读数据封包的一个细胞的数据,其中该数据封包包含不多于一个细胞的数据,并发送数据封包。
图5是依据本揭露的实施的示例流程500的示意图。示例流程500可以表示实现概念上的封包缓冲器100、范例的封包缓冲器200、范例的封包缓冲器300及/或范例装置400的封包缓冲器405的功能的一个方面。如一个或多个块510、520和530所示,示例流程500可包含一个或多个操作、动作,或功能。尽管展示为分立的块,各个块可以根据所希望的实施分为附加的块、组合成更少的块,或消除。示例流程500可由范例装置400的封包缓冲器405实施。仅用于说明的目的,示例流程500的操作说明如下,由例如范例装置400的封包缓冲器405执行的示例流程500的上下文进行说明。示例流程500可开始于块510。
块510可参考封包缓冲器405接收数据封包。封包缓冲器可包含多个第一存储单元库和多个第二存储单元库。每一存储单元可为用于储存一个细胞的数据并且可在一个时钟周期内容纳一次访问操作(例如,一次读操作或一次写操作)的1RW存储单元。块510之后可以是块520。
块520可参考封包缓冲器405,在待数据封包包含至少两个细胞的数据的情况下,交替地将该数据封包的至少两个细胞写入至多个第一存储单元库的至少一个存储单元以及多个第二存储单元库的至少一个存储单元中。块520之后可以是块530。
块530可参考封包缓冲器405,依据TDM机制,自多个第一存储单元库及多个第二存储单元库读取。
在一些实施方式中,在交替地写时,示例流程500可涉及封包缓冲器405,通过执行若干操作,将数据封包作为包含至少一个奇数细胞和至少一个偶数细胞的多个细胞。举例来说,示例流程500可涉及封包缓冲器405,将数据封包的每一奇数细胞写入至多个第一存储单元库的相应存储细胞中。示例流程500也可涉及封包缓冲器405,将数据封包的每一偶数细胞写入至多个第二存储单元库的相应存储细胞中。
在一些实施方式中,在将数据封包的每一奇数细胞写入至多个第一存储单元库的相应存储细胞中,以及将数据封包的每一偶数细胞写入至多个第二存储单元库的相应存储细胞时,示例流程500可涉及封包缓冲器405,在将数据封包的每一偶数细胞写入至多个第二存储单元库的相应存储细胞之前,将数据封包的每一奇数细胞写入至多个第一存储单元库的相应存储细胞中。
在一些实施方式中,在依据TDM机制自多个第一存储单元库和多个第二存储单元库读取时,示例流程500可涉及封包缓冲器405分配第一读端口,以自多个第一存储单元库的相应存储单元开始,交替地读多个第一存储单元库和多个第二存储单元库。示例流程500可涉及封包缓冲器405分配第二读端口,以自多个第二存储单元库的相应存储单元开始,交替地读多个第一存储单元库和多个第二存储单元库。
在一些实施方式中,在依据TDM机制自多个第一存储单元库的和多个第二存储单元库读取时,在待被读取的数据封包包含至少两个细胞的数据的情况下,示例流程500可涉及封包缓冲器405执行若干操作。举例来说,示例流程500可涉及封包缓冲器405在第一时钟周期读偶数细胞的数据,在第一时钟周期之后的第二时钟周期读奇数细胞的数据,以及执行单细胞重新排序以依序输出奇数细胞和偶数细胞。
在一些实施方式中,在执行单细胞重新排序时,示例流程500可涉及封包缓冲器405缓冲偶数细胞的数据,在第三时钟周期发送奇数细胞的数据,以及在第三时钟周期之后的第四时钟周期发送偶数细胞的数据。
在一些实施方式中,在依据TDM机制自多个第一存储单元库和多个第二存储单元库读取时,示例流程500可涉及封包缓冲器405分配第一读端口,以自多个第一存储单元库的相应存储单元开始,交替地读多个第一存储单元库和多个第二存储单元库。示例流程500可涉及封包缓冲器405分配第二读端口,以自多个第一存储单元库的相应存储单元开始,交替地读多个第一存储单元库和多个第二存储单元库。示例流程500也可涉及封包缓冲器405分配第三读端口,以自多个第二存储单元库的相应存储单元开始,交替地读多个第一存储单元库和多个第二存储单元库。示例流程500可更涉及封包缓冲器405分配第四读端口,以自多个第二存储单元库的相应存储单元开始,交替地读多个第一存储单元库和多个第二存储单元库。
在一些实施方式中,在数据封包包含不多于一个细胞的数据的情况下,示例流程500可更涉及封包缓冲器405,将数据封包作为一个细胞的数据写入至多个第一存储单元库的第一存储细胞以及多个第二存储单元库的第二存储细胞中。
在一些实施方式中,在将数据封包作为一个细胞写入至多个第一存储单元库的第一存储细胞以及多个第二存储单元库的第二存储细胞中时,示例流程500可更涉及封包缓冲器405,在一个时钟周期内将数据封包写入至多个第一存储单元库的第一存储细胞以及多个第二存储单元库的第二存储细胞中。
在一些实施方式中,示例流程500可更涉及封包缓冲器405,自无论第一存储单元或第二存储单元读数据封包的该一个细胞的数据,其中该数据封包包含不多于一个细胞的数据,并发送数据封包。
以上所述仅为本发明的较佳实施例,本领域相关的技术人员依据本发明的精神所做的等效变化与修改,都应当涵盖在权利要求书内。
Claims (20)
1.一种封包存取方法,其特征在于,包含:
通过封包缓冲器接收数据封包,所述封包缓冲器包含多个第一存储单元库,以及多个第二存储单元库,每一存储单元储存一个细胞的数据,并在一个时钟周期内容纳一次访问操作;
在所述数据封包包含至少两个细胞的数据时,交替地将所述数据封包的所述至少两个细胞的数据写入所述多个第一存储单元库的至少一个存储单元以及所述多个第二存储单元库的至少一个存储单元中;以及
依据时分复用方案自所述多个第一存储单元库以及所述多个第二存储单元库读取。
2.根据权利要求1所述的封包存取方法,其特征在于,交替地写操作包含:
通过执行下述操作,将所述数据封包作为包含至少一个奇数细胞和至少一个偶数细胞的多个细胞的数据写,其中所述下述操作包含:
将所述数据封包的每一奇数细胞写入所述多个第一存储单元库的相应存储细胞;以及
将所述数据封包的每一偶数细胞写入所述多个第二存储单元库的相应存储细胞。
3.根据权利要求2所述的封包存取方法,其特征在于,将所述数据封包的每一奇数细胞写入所述多个第一存储单元库的所述相应存储细胞以及将所述数据封包的每一偶数细胞写入所述多个第二存储单元库的所述相应存储细胞包含:
在将所述数据封包的偶数细胞写入所述多个第二存储单元库的所述相应存储细胞之前,将所述数据封包的奇数细胞写入所述多个存储单元的所述多个第一库的所述相应存储细胞。
4.根据权利要求1所述的封包存取方法,其特征在于,依据所述时分复用方案读所述多个第一存储单元库和所述多个第二存储单元库包含:
分配第一读端口,以自所述多个第一存储单元库的相应存储单元起始,交替地读所述多个第一存储单元库和所述多个第二存储单元库;以及
分配第二读端口,以交替地自所述多个第一存储单元库的相应存储单元起始,读所述多个第一存储单元库和所述多个第二存储单元库。
5.根据权利要求1所述的封包存取方法,其特征在于,依据所述时分复用方案自所述多个第一存储单元库和所述多个第二存储单元库读取包含:
在待被读取的数据封包包含至少两个细胞的数据的情况下,执行下述操作:
在第一时钟周期读偶数细胞的数据;
在所述第一时钟周期之后的第二时钟周期读奇数细胞的数据;以及
执行单细胞重新排序以依序输出所述奇数细胞和所述偶数细胞。
6.根据权利要求1所述的封包存取方法,其特征在于,依据所述时分复用方案读所述多个第一存储单元库和所述多个第二存储单元库包含:
分配第一读端口,以自所述多个第一存储单元库的相应存储单元起始,交替地读所述多个第一存储单元库和所述多个第二存储单元库;
分配第二读端口,以自所述多个第一存储单元库的相应存储单元起始,交替地读所述多个第一存储单元库和所述多个第二存储单元库;
分配第三读端口,以自所述多个第二存储单元库的相应存储单元起始,交替地读所述多个第一存储单元库和所述多个第二存储单元库;以及
分配第四读端口,以自所述多个第二存储单元库的相应存储单元起始,交替地读所述多个第一存储单元库和所述多个第二存储单元库。
7.根据权利要求1所述的封包存取方法,其特征在于,更包含:
在所述数据封包包含不多于一个细胞的数据的情况下,将所述数据封包作为一个细胞的数据写入至所述多个第一存储单元库的第一存储细胞和所述多个第二存储单元库的第二存储细胞中。
8.一种封包存取装置,其特征在于,包含:
封包缓冲器,包含:
多个第一存储单元库,其中所述多个第一存储单元库中的每一存储单元储存一个细胞的数据并在一个时钟周期内容纳一次访问操作;
多个第二存储单元库,其中所述多个第二存储单元库中的每一存储单元储存一个细胞的数据并在一个时钟周期内容纳一次访问操作;
多个写端口;
多个读端口,以及
管理电路,管理所述多个写端口和所述多个读端口的操作,
其中所述管理电路控制所述多个写端口,以交替地将数据封包的至少两个细胞写入至所述多个第一存储单元库的至少一个相应存储单元和所述多个第二存储单元库的至少一个相应存储单元中。
9.根据权利要求8所述的封包存取装置,其特征在于,所述管理电路控制所述多个读端口,来依据时分复用方案自所述多个第一存储单元库和所述多个第二存储单元库读取。
10.根据权利要求9所述的封包存取装置,其特征在于,所述管理电路控制所述多个写端口,通过执行下述操作,将所述数据封包作为包含至少一个奇数细胞和至少一个偶数细胞的多个细胞的数据写,其中所述下述操作包含:
将所述数据封包的每一奇数细胞写入所述多个第一存储单元库的相应存储细胞;以及
将所述数据封包的每一偶数细胞写入所述多个第二存储单元库的相应存储细胞。
11.根据权利要求10所述的封包存取装置,其特征在于,将所述数据封包的每一奇数细胞写入所述多个第一存储单元库的所述相应存储细胞以及将所述数据封包的每一偶数细胞写入所述多个第二存储单元库的所述相应存储细胞中时,所述管理电路控制所述多个写端口,以在将所述数据封包的偶数细胞写入所述多个第二存储单元库的所述相应存储细胞之前,将所述数据封包的奇数细胞写入所述多个第一存储单元库的所述相应存储细胞。
12.根据权利要求9所述的封包存取装置,其特征在于,在依据所述时分复用方案自所述多个第一存储单元库和所述多个第二存储单元库读取时,所述管理电路执行的操作包含:
分配所述多个读端口的第一读端口,以交替地自所述多个第一存储单元库的相应存储单元起始,读所述多个第一存储单元库和所述多个第二存储单元库;以及
分配所述多个读端口的第二读端口,以交替地自所述多个第二存储单元库的相应存储单元起始,读所述多个第一存储单元库和所述多个第二存储单元库。
13.根据权利要求12所述的封包存取装置,其特征在于,在分配所述第一读端口,以交替地读所述多个第一存储单元库和所述多个第二存储单元库时,所述管理电路提供具有第一指针和第二指针的所述第一读端口,其中所述第一指针指向所述多个第一存储单元库,所述第二指针指向所述多个第二存储单元库,以及在分配所述第二读端口,以交替地读所述多个第一存储单元库和所述多个第二存储单元库时,所述管理电路提供具有第三指针和第四指针的所述第二读端口,其中所述第三指针指向所述多个第一存储单元库,所述第四指针指向所述多个第二存储单元库。
14.根据权利要求9所述的封包存取装置,其特征在于,在依据所述时分复用方案读所述多个第一存储单元库和所述多个第二存储单元库时,所述管理电路控制所述多个读端口,以执行包含下述操作的操作:
在待被读取的数据封包包含至少两个细胞的数据的情况下,执行的操作包含:
在第一时钟周期读偶数细胞的数据;
在所述第一时钟周期之后的第二时钟周期读奇数细胞的数据;以及
执行单细胞重新排序以依序输出所述奇数细胞和所述偶数细胞。
15.根据权利要求14所述的封包存取装置,其特征在于,在执行所述单细胞重新排序时,所述多个读端口执行的操作包含:
缓冲所述偶数细胞的数据;
在第三时钟周期发送所述奇数细胞的数据;以及
在所述第三时钟周期之后的第四时钟周期发送所述偶数细胞的数据。
16.根据权利要求9所述的封包存取装置,其特征在于,在依据所述时分复用方案读所述多个第一存储单元库和所述多个第二存储单元库时,所述管理电路执行的操作包含:
分配所述多个读端口的第一读端口,以交替地自所述多个第一存储单元库的相应存储单元起始,读所述多个第一存储单元库和所述多个第二存储单元库;
分配所述多个读端口的第二读端口,以交替地自所述多个第一存储单元库的相应存储单元起始,读所述多个第一存储单元库和所述多个第二存储单元库;
分配所述多个读端口的第三读端口,以交替地自所述多个第二存储单元库的相应存储单元起始,读所述多个第一存储单元库和所述多个第二存储单元库;以及
分配所述多个读端口的第四读端口,以交替地自所述多个第二存储单元库的相应存储单元起始,读所述多个第一存储单元库和所述多个第二存储单元库。
17.根据权利要求16所述的封包存取装置,其特征在于,在分配所述第一读端口,以交替地读所述多个第一存储单元库和所述多个第二存储单元库时,所述管理电路提供具有第一指针和第二指针的所述第一读端口,其中所述第一指针指向所述多个第一存储单元库,所述第二指针指向所述多个第二存储单元库;以及其中在分配所述第二读端口,以交替地读所述多个第一存储单元库和所述多个第二存储单元库时,所述管理电路提供具有第三指针和第四指针的所述第二读端口,其中所述第三指针指向所述多个第一存储单元库,所述第四指针指向所述多个第二存储单元库;以及其中在分配所述第三读端口,以交替地读所述多个第一存储单元库和所述多个第二存储单元库时,所述管理电路提供具有第五指针和第六指针的所述第三读端口,其中所述第五指针指向所述多个第一存储单元库,所述第六指针指向所述多个第二存储单元库;以及其中在分配所述第四读端口,以交替地读所述多个第一存储单元库和所述多个第二存储单元库时,所述管理电路提供具有第七指针和第八指针的所述第四读端口,其中所述第七指针指向所述多个第一存储单元库,所述第八指针指向所述多个第二存储单元库。
18.根据权利要求8所述的封包存取装置,其特征在于,在所述数据封包包含不多于一个细胞的数据的情况下,所述管理电路更控制所述多个写端口将所述数据封包作为一个细胞的数据写入至所述多个第一存储单元库的第一存储细胞以及所述多个第二存储单元库的第二存储细胞中。
19.根据权利要求18所述的封包存取装置,其特征在于,在将所述数据封包作为一个细胞的数据写入至所述多个第一存储单元库的所述第一存储细胞以及所述多个第二存储单元库的所述第二存储细胞中时,所述多个写端口在一个时钟周期内将所述数据封包写入至所述多个第一存储单元库的所述相应存储细胞以及所述多个第二存储单元库的所述相应存储细胞中。
20.根据权利要求18所述的封包存取装置,其特征在于,所述管理电路更控制所述多个读端口,执行包含下述操作的操作:
自无论所述第一存储细胞或所述第二存储细胞读所述数据封包的所述一个细胞的数据,其中所述数据封包包含不多于一个细胞的数据;以及
发送所述数据封包。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562196325P | 2015-07-24 | 2015-07-24 | |
US62/196,325 | 2015-07-24 | ||
US15/135,479 | 2016-04-21 | ||
US15/135,479 US10055365B2 (en) | 2015-07-24 | 2016-04-21 | Shared buffer arbitration for packet-based switching |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106372010A CN106372010A (zh) | 2017-02-01 |
CN106372010B true CN106372010B (zh) | 2019-01-08 |
Family
ID=56621240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610586926.2A Active CN106372010B (zh) | 2015-07-24 | 2016-07-25 | 封包存取方法以及相关封包存取装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10055365B2 (zh) |
CN (1) | CN106372010B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109617838B (zh) * | 2019-02-22 | 2021-02-26 | 盛科网络(苏州)有限公司 | 多通道报文汇聚共享内存管理方法及系统 |
US11216212B2 (en) | 2019-03-19 | 2022-01-04 | International Business Machines Corporation | Minimizing conflicts in multiport banked memory arrays |
KR102626211B1 (ko) * | 2019-12-02 | 2024-01-16 | 디알더블유 테크놀로지스, 엘엘씨 | 연속 대역폭 제어를 사용하는 레이턴시 크리티컬 서비스 품질을 위한 시스템 및 방법 |
EP4085459A4 (en) * | 2019-12-31 | 2024-02-21 | Micron Technology, Inc. | MEMORY MODULE MULTI-PORT BUFFER TECHNIQUES |
CN111862885B (zh) * | 2020-07-23 | 2021-12-24 | 大连集思特科技有限公司 | 一种内封ic的双向数据传输led控制方法、系统及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1383064A (zh) * | 2002-05-22 | 2002-12-04 | 威盛电子股份有限公司 | 主通道转接器及其封包接收方法 |
US8103788B1 (en) * | 2002-11-19 | 2012-01-24 | Advanced Micro Devices, Inc. | Method and apparatus for dynamically reallocating buffers for use in a packet transmission |
CN102799548A (zh) * | 2011-05-27 | 2012-11-28 | 华硕电脑股份有限公司 | 控制器及其相关控制方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101086592B1 (ko) * | 2003-04-22 | 2011-11-23 | 에이저 시스템즈 인크 | 패킷 저장 방법, 버퍼 관리 방법, 손실 버퍼 검출 방법 및공유형 메모리 |
US20070121499A1 (en) * | 2005-11-28 | 2007-05-31 | Subhasis Pal | Method of and system for physically distributed, logically shared, and data slice-synchronized shared memory switching |
US9037670B2 (en) * | 2012-09-18 | 2015-05-19 | Cisco Technology, Inc. | Ultra low latency network buffer storage |
US8923089B2 (en) * | 2012-12-21 | 2014-12-30 | Lsi Corporation | Single-port read multiple-port write storage device using single-port memory cells |
GB2533532A (en) * | 2013-09-13 | 2016-06-22 | Smg Holdings-Anova Tech Llc | High payload data packet transmission system and relay to lower latency |
-
2016
- 2016-04-21 US US15/135,479 patent/US10055365B2/en active Active
- 2016-07-25 CN CN201610586926.2A patent/CN106372010B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1383064A (zh) * | 2002-05-22 | 2002-12-04 | 威盛电子股份有限公司 | 主通道转接器及其封包接收方法 |
US8103788B1 (en) * | 2002-11-19 | 2012-01-24 | Advanced Micro Devices, Inc. | Method and apparatus for dynamically reallocating buffers for use in a packet transmission |
CN102799548A (zh) * | 2011-05-27 | 2012-11-28 | 华硕电脑股份有限公司 | 控制器及其相关控制方法 |
Also Published As
Publication number | Publication date |
---|---|
US20160239439A1 (en) | 2016-08-18 |
US10055365B2 (en) | 2018-08-21 |
CN106372010A (zh) | 2017-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106372010B (zh) | 封包存取方法以及相关封包存取装置 | |
US6272567B1 (en) | System for interposing a multi-port internally cached DRAM in a control path for temporarily storing multicast start of packet data until such can be passed | |
US8225026B2 (en) | Data packet access control apparatus and method thereof | |
KR100420422B1 (ko) | 큐 관리기 및 데이터 입력의 관리 방법 | |
CN102834815B (zh) | 高利用率多分区串行存储器 | |
US7555579B2 (en) | Implementing FIFOs in shared memory using linked lists and interleaved linked lists | |
US7546399B2 (en) | Store and forward device utilizing cache to store status information for active queues | |
US9841913B2 (en) | System and method for enabling high read rates to data element lists | |
US8533388B2 (en) | Scalable multi-bank memory architecture | |
US20100220589A1 (en) | Method, apparatus, and system for processing buffered data | |
US6754744B2 (en) | Balanced linked lists for high performance data buffers in a network device | |
WO2007115199A3 (en) | Memory management for high speed media access control | |
US10055153B2 (en) | Implementing hierarchical distributed-linked lists for network devices | |
CN102971997B (zh) | 包括数据分段和数据描述分段的分组缓冲器 | |
US20030056073A1 (en) | Queue management method and system for a shared memory switch | |
US9785367B2 (en) | System and method for enabling high read rates to data element lists | |
CN102541769A (zh) | 一种存储器接口访问控制方法及装置 | |
CN101848150B (zh) | 维护多播计数器的计数值的方法及装置 | |
US20040131055A1 (en) | Memory management free pointer pool | |
CN102118304B (zh) | 一种信元交换方法和装置 | |
US9183908B2 (en) | Method and apparatus for memory access | |
CN111930650B (zh) | 一种网络流量转发方法及设备 | |
CN100388211C (zh) | 计算引擎代码空间扩展方法与装置 | |
US10067690B1 (en) | System and methods for flexible data access containers | |
US9544229B2 (en) | Packet processing apparatus and packet processing method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |