CN1747440B - 一种实现信元重排序的芯片 - Google Patents
一种实现信元重排序的芯片 Download PDFInfo
- Publication number
- CN1747440B CN1747440B CN2004100799307A CN200410079930A CN1747440B CN 1747440 B CN1747440 B CN 1747440B CN 2004100799307 A CN2004100799307 A CN 2004100799307A CN 200410079930 A CN200410079930 A CN 200410079930A CN 1747440 B CN1747440 B CN 1747440B
- Authority
- CN
- China
- Prior art keywords
- cell
- buffer memory
- reorders
- module
- queue information
- 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.)
- Expired - Fee Related
Links
- 230000015654 memory Effects 0.000 claims abstract description 116
- 230000015572 biosynthetic process Effects 0.000 claims description 7
- 238000000034 method Methods 0.000 abstract description 15
- 238000012163 sequencing technique Methods 0.000 abstract description 5
- 230000001314 paroxysmal effect Effects 0.000 abstract description 4
- 238000000926 separation method Methods 0.000 abstract 1
- 238000012545 processing Methods 0.000 description 5
- 230000002159 abnormal effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000022131 cell cycle Effects 0.000 description 2
- 241000288673 Chiroptera Species 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006727 cell loss Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000002459 sustained effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种实现信元重排序的芯片,以解决现有技术中信元重排存在占用缓存较大的问题。本发明通过对信元及信元入队信息的分离,对其分别缓存;对信元入队信息排序,而对信元暂不排序;待信元入队信息排序后,再根据排序后的信元入队信息使信元入队。本芯片用于实现信元重排序,可以大大减少了信元缓存,同时避免了突发性的写共享缓存的操作,减小了对共享缓存的带宽要求。
Description
技术领域
本发明涉及一种实现信元重排序的芯片。
背景技术
交换网是路由器中的核心模块,完成多个端口之间信元的交换,即把到达输入端口的信元交换至相应的输出端口。交换网的一个基本需求就是交换出去的信元仍需要保持原来的顺序。但在多级交换网中,一般一个信元可以通过多条路径到达目的输出端口,这就导致从同一个输入端口到达同一个输出端口的信元,在到达目的输出端口时,会存在乱序的现象。如图1所示,一个典型的三级交换网结构图,在这个交换网中,从任何一个输入端口输入的信元能通过m条路径到达任何一个输出端口。由于这m条路径中布线的延时和第二级芯片的处理延时差异,两个依次从第一级芯片交换出去的信元到达第三级芯片时,顺序不一定能保持。因此,在多级交换网中一般都要解决重排序的问题。
由于一般在交换网的第一级内不会导致信元的乱序,乱序一般发生在第一级出口到第三级入口之间。目前的一种解决这个重排序问题的方法是在第三级入口处先把乱序的信元排好序后再送入后续逻辑进行处理,包括入共享缓存,入队,调度等。这样,就不可避免地在第三级入口处设置一些信元缓存,先把这些乱序的信元缓存起来,直至下一个期望的信元(通过时标来识别)来到时,再把信元送入芯片的共享缓存进行后续交换处理。用这种方法最大的缺点是需要在第三级入口处增加较多的信元缓存,若交换网有16个源模块(第一级),信元大小为72Byte来计算,则需要约16×16×72bytes=144Kb缓存。这种方法的另一个缺点是会导致突发性的写共享缓存的操作,这就大大提高了对共享缓存的带宽要求,而共享缓存带宽本来就是共享缓存交换中的瓶颈点。
发明内容
本发明提供一种实现信元重排序的芯片,以解决现有信元重排序需要信元缓存较大的问题;更进一步地,解决突发性的写共享缓存的操作存在对共享缓存的带宽要求较高的问题。
为此,本发明提供如下技术方案:
一种实现信元重排序的芯片,包括输入处理器,与该处理器连接的共享缓存;其中还包括与输入处理器连接的重排序模块,以及与重排序模块连接的队列管理模块;所述重排序模块包括重排序缓存、仲裁模块,所述重排序缓存用于对信元的入队信息排序,其数量等于源端口的个数,并当应送出的信元的入队信息已经到达时,向所述仲裁模块发出请求,请求将该信元的入队信息输出给队列管理模块,所述仲裁模块用于对所述重排序缓存发出的所述请求做出允许或不允许的应答;所述队列管理模块按排序后的入队信息将共享缓存中的信元送入队列。
所述重排序模块还包括分组模块和共享入队缓存,分组模块、重排序缓存、仲裁模块、共享入队缓存依次串联;所述分组模块用于将信元的入队信息按源端口分到相应的重排序缓存,共享入队缓存用于将多个重排序缓存送出的排序后的信元的入队信息再缓存起来,等待队列管理模块调用。
与现有技术相比本发明具有以下有益效果:
写入共享缓存的顺序以从不同路径交换来的信元到达的先后顺序写入,避免了突发性的写共享缓存的操作,减小了对共享缓存的带宽要求。
乱序信元先存入共享缓存,但暂不入队,待信元的入队信息重排序后才入队,重排序逻辑只需处理与入队相关的信息,而不是整个信元,减少重排序所需缓存的大小。若交换网有16个源模块(第一级),信元大小为72Byte来计算,则现有技术需要约:16×16×72bytes=144Kb缓存,而本发明需要的缓存大小要小的多,约为:16×16×20bits+112×20bits=7.36Kb。
用共享入队缓存8对各个重排序缓存6中排序后的信元的入队信息进行缓存,占用的资源很少,且一个一个送出,使得后面的入队处理比较简单,避免了突发入队的情况。
由于本方法对各种可能的异常情况都做了考虑,因此,即使出现了异常,本方法能把对后续信元的影响降低到了最少。
本方法的可扩展性较好,若需要处理各路径延时差大于2个周期的情况,方案仍能使用,只要增加共享入队缓存8的容量即可。
附图说明
图1所示为典型的三级交换网络结构;
图2所示为本发明芯片中各模块、缓存连接关系图;
图3所示为本发明重排序模块的内部结构;
图4所示为本发明方法流程图;
图5所示为本发明重排序缓存的缓存单元;
图6所示为4条通路依次发出信元的时标示意图;
图7所示为不同路径间延时偏差为最大2个信元周期时,第三级芯片接收到的信元时标顺序示意图。
具体实施方式
实现该信元重排序方法的芯片,如图2所示。输入处理器1连接一共享缓存2,输入处理器1还连接一重排序模块3,以及与重排序模块3连接的队列管理模块4。其中输入处理器1用于接收信元信息;共享缓存2用于缓存信元;重排序模块3用于对信元入队信息进行排序;队列管理模块4用于根据排序后信元入队信息使信元入队。
重排序模块3的内部结构,如图3所示,由分组模块5、重排序缓存6、仲裁模块7、共享入队缓存8依次串联而成。而且对应交换网内的每个源模块(第一级),都有一个重排序缓存6。其中分组模块5用于将信元入队信息根据不同源端口分到相应的重排序缓存6去;重排序缓存6用于对信元入队信息排序;仲裁模块7用于对重排序缓存6发出的发送请求做出允许或不允许的应答,即控制多个重排序缓存6内的信元入队信息的发送;共享入队缓存8用于将多个重排序缓存6发送的排序后的信元入队信息再缓存起来,等待队列管理模块4调用。
假设交换网有16个源模块(第一级),m为4,即有4条通路。在这种情况下,采用4比特的时标,可以处理小于等于2个信元周期的路由延时差。根据此假设并结合芯片结构说明本方法的实现步骤。
如图4所示,信元重排序主要包括以下步骤:
A、将信元及信元入队信息分离开。从不同路径交换来的信元先被按信元到达的先后顺序依次保存到芯片内的共享缓存2中,但暂不入队列。入队列所需的信息被送往重排序模块3。
B、入队列所需的信息在重排序模块3中排序。
C、入队信息进行排序后再一个一个送往队列管理模块4,依据排序后的入队信息将共享缓存2中的信元送入队列。
步骤B中,入队信息在重排序模块3中进行排序的具体过程如下:
a、信元入队信息根据源端口分到相应的重排序缓存6。如图3所示,是本发明重排序模块3的内部结构,对应交换网内的每个源模块(第一级),都有一个重排序缓存6,这里缓存的不是信元,而是与信元入队相关的信息,如信元在共享缓存2中的地址、目的端口、信元优先级等。从第三级芯片输入的信元入队信息由分组模块5根据源端口分到相应的重排序缓存6去排序,这样做的原因在于,只有来自于相同源端口的信元之间才会需要重排序,而来自不同源模块的信元没有重排序要求。
b、每个信元的入队信息被缓存在与其所带时标对应的重排序缓存6单元中。如图5所示,每个重排序缓存6包括16个缓存单元,缓存单元数量等于本实施例时标个数。每个缓存单元缓存一个信元的入队所需信息。若交换网缓存大小为4K个信元,支持64个端口,4个优先级,则意味着每个单元为12+6+2=20bits。因此,按本方法假设,则共需要重排序缓16×16×20bits。每个信元的入队信息被缓存在与其所带时标对应的缓存单元中,即时标为0的信元信息缓存在缓存单元0中,即时标为1的信元信息缓存在缓存单元1中,依此类推。
c、应送出的信元入队信息已准备好,则重排序缓存6请求送出该信元入队信息。如图5所示,对应于每个缓存单元,有一个指示寄存器non_empty_tag,用来指示其对应的缓存单元是为空还是已经写入内容。在初始化后,所有的16个缓存单元均为‘0’;在某一个信元写入该缓存单元时,对应的non_empty_tag寄存器被置为‘1’。
每个重排序缓存6内还有一个读指针(rd_ptr)。这个指针表示下一个信元入队信息对应的信元的时标,也就是说rd_ptr之前的信元入队信息都已送出重排序缓存6,下一个能送出重排序缓存6的信元入队信息所带时标应该是rd_ptr。芯片初始化后rd_ptr为0,如果rd_ptr指向的non_empty_tag位,且该non_empty_tag[rd_ptr]非零,表示下一个可送出重排序缓存6的信元入队信息已准备好。这时,如图3所示,重排序缓存6将会有请求提给仲裁模块7,表示可有信元入队信息送出。
d、收到允许信号后,将应送出的信元入队信息送出到共享入队缓存8中。在收到仲裁模块7送回的允许信号后,将rd_ptr指向的缓存单元内容读出。由于有多个重排序缓存6,而一般芯片内处理信元的入队是一个一个先后进行的,即一次只能处理一个信元的入队,而且处理一次入队一般需要2个以上的时钟周期,而16个重排序缓存6是并行处理的,因此完全有可能在同一周期,多个重排序缓存6有读出缓存单元的请求,而且某一个重排序缓存6也会在连续几拍内都有读出缓存单元的请求。这就需要在入队前,把这些从多个重排序缓存6送来的排序后的信元入队信息再缓存起来,如图3所示的共享入队缓存8。由于有多个重排序缓存6,在重排序缓存6和共享入队缓存8之间需要进行时分复用处理,这由仲裁模块7来完成。仲裁模块7仲裁各重排序缓存6送来的请求,按照轮询的方法确定一个可以送往共享入队缓存8的信元入队信息。也可以采用某个重排序缓存6向仲裁模块7提出送出请求的同时送出一个预送出信元入队信息的突发个数i,即若从rd_ptr到rd_ptr+i的信元都已经到达,则把从rd_ptr到rd_ptr+i的信元入队信息连续送出到共享入队缓存8,在处理完后,仲裁模块7再查询下一个重排序缓存6。
共享入队缓存8中要保存的项与重排序缓存6中的相同,仍然为20bits/缓存单元,那么共享入队缓存8的大小就取决重排序缓存6的个数及每个重排序缓存6可能连续读的次数。如图6所示是4条通路依次发出信元的时标,如图7所示是按本方法假设情况,即有16个源模块(第一级),不同路径间延时偏差为小于等于2个信元周期时,有4条通路,第三级输入芯片接收到的信元时标顺序。依照这个顺序,重排序缓存6中non_empty_tag中被置为“1”的顺序为:1,2,3,5,6,7,0,9,10...。这样,在时标为0的信元到达时,会有4个信元的入队信息可连续从重排序缓存6中读出。基于上面的分析,在正常情况下,共享入队缓存8最大只需4×16×20bits即可完全满足需求。
e、排序后的信元入队信息在共享入队缓存8中缓存后,一个一个送往队列管理模块4。
入队信息中有目的端口、信元存放在共享缓存中的地址等,目的端口号和优先级决定本信元入哪个队列,信元存放在共享缓存中的地址则做为入队的内容,在出队时,将把共享缓存中这个地址的信元读出。
在对信元入队信息排序的过程中,可能出现异常情况:
一般来说,当重排序缓存6中某个缓存单元中的入队信息没有被读走之前,另外的一个入队信息不会进入到这个缓存单元中来。但是,在错误情况下,在某个缓存单元中的入队信息没有被读走之前,另外来了一个新的入队信息。在这种情况下,本方法并不简单地将原来的信元入队信息覆盖,而是先将新的入队信息暂时保存起来,同时该重排序缓存6提出特别申请给仲裁模块7,请求马上将这个缓存单元中原来的入队信息读出,以便新的入队信息可以写入。仲裁模块7在仲裁时,对这种异常处理的请求给予最高优先级,即在有任何一个重排序缓存6提出特别申请时,优先批准此请求。在有多个重排序缓存同时提出特别申请时,则总是批准第一个轮询到的特别申请。
另一种可能出现的异常情况,那就是某个信元由于某些原因丢失了,这时,若不及时发现这种错误并及时处理,可能导致后续信元乱序。例如,我们在等待时标为0的信元,若不及时检测出这个信元的丢失,则会导致下一组时标为0的信元排在当前这一组时标为1、2等信元的前面,这种组之间的错位可能一直持续下去,从而导致排序不对。假设总共有p条不同的路径,路径间延时偏差为t,一般最多允许错位信元数应为(p*t)-1,本例路径数为4,允许2个信元周期的延时偏差,则允许延迟7个信元到达的时间。从图7可看出,正常情况下,不会出现时标为1~7的信元都来到,但时标为0的信元仍然未来到的情况,因此,在时标为1~7的信元都来到后,若信元为0的信元仍未来到,此时完全可以判断信元0已丢失。同理,若当前rd_ptr指向n,则在n之后的7个信元入队信息即时标为(n+1)模16~(n+7)模16的信元都已到达,但n还未到达,则可判断信元n已丢失。这时在确定检测到信元丢失的情况下,在报错的同时,将rd_ptr增加1,连续把后面的至少7个信元入队信息连续从重排序缓存6中读出。在这种情况下,会有7个信元的入队信息可连续从重排序缓存6中读出。这就是共享入队缓存8最大需要7×16×20bits的原因(正常情况下只需要4×16×20bits)。
Claims (2)
1.一种实现信元重排序的芯片,包括输入处理器,与该处理器连接的共享缓存;其特征在于,还包括与输入处理器连接的重排序模块,以及与重排序模块连接的队列管理模块;
所述重排序模块包括重排序缓存、仲裁模块,所述重排序缓存用于对信元的入队信息排序,其数量等于源端口的个数,并当应送出的信元的入队信息已经到达时,向所述仲裁模块发出请求,请求将该信元的入队信息输出给队列管理模块,所述仲裁模块用于对所述重排序缓存发出的所述请求做出允许或不允许的应答;
所述队列管理模块按排序后的入队信息将共享缓存中的信元送入队列。
2.如权利要求1所述的芯片,其特征在于,重排序模块还包括分组模块和共享入队缓存,所述分组模块、重排序缓存、仲裁模块、共享入队缓存依次串联;
所述分组模块用于将信元的入队信息按源端口分到相应的重排序缓存;
所述共享入队缓存用于将多个重排序缓存送出的排序后的信元的入队信息再缓存起来,等待队列管理模块调用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2004100799307A CN1747440B (zh) | 2004-09-08 | 2004-09-08 | 一种实现信元重排序的芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2004100799307A CN1747440B (zh) | 2004-09-08 | 2004-09-08 | 一种实现信元重排序的芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1747440A CN1747440A (zh) | 2006-03-15 |
CN1747440B true CN1747440B (zh) | 2012-05-02 |
Family
ID=36166772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2004100799307A Expired - Fee Related CN1747440B (zh) | 2004-09-08 | 2004-09-08 | 一种实现信元重排序的芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1747440B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101330443B (zh) * | 2007-06-19 | 2011-08-10 | 中兴通讯股份有限公司 | 增强型小区前向接入信道状态重排序方法 |
CN101246460A (zh) | 2008-03-10 | 2008-08-20 | 华为技术有限公司 | 缓存数据写入系统及方法和缓存数据读取系统及方法 |
CN102447607B (zh) * | 2010-10-08 | 2014-08-13 | 中兴通讯股份有限公司 | 采用地址冗余技术实现包重组的方法、装置及系统 |
CN110430146B (zh) * | 2019-06-26 | 2022-03-18 | 天津芯海创科技有限公司 | 基于CrossBar交换的信元重组方法及交换结构 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1214168A (zh) * | 1996-03-14 | 1999-04-14 | 摩托罗拉公司 | 有效的输出请求分组交换设备和方法 |
-
2004
- 2004-09-08 CN CN2004100799307A patent/CN1747440B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1214168A (zh) * | 1996-03-14 | 1999-04-14 | 摩托罗拉公司 | 有效的输出请求分组交换设备和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1747440A (zh) | 2006-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5126999A (en) | Method and apparatus for input-buffered asynchronous transfer mode switching | |
US5691984A (en) | Compact, adaptable brouting switch | |
CN1859263B (zh) | 信元重排序方法、使用该方法的信元处理方法及装置 | |
CA2297836C (en) | Multi-port internally cached drams | |
CA2112528C (en) | Packet switching system for forwarding packets from input buffers using idle/busy status of output buffers | |
CA2247447C (en) | Efficient output-request packet switch and method | |
US8135004B2 (en) | Multi-plane cell switch fabric system | |
US20100272117A1 (en) | Buffered Crossbar Switch System | |
US20110010474A1 (en) | Low latency request dispatcher | |
JPH02234543A (ja) | デイジタル交換装置、メツセージ・コンバイニング・スイツチ及びその動作方法 | |
GB2365665A (en) | Switching arrangement for data packets | |
US7126959B2 (en) | High-speed packet memory | |
US5926475A (en) | Method and apparatus for ensuring ATM cell order in multiple cell transmission lane switching system | |
AU685426B2 (en) | A method for handling redundant switching planes in packet switches and a switch for carrying out the method | |
EP0680186A1 (en) | Method and device for exchanging messages between systems based on different protocol versions | |
US7733775B2 (en) | Method and apparatus for improving data transmission in router fabric cards through pseudo-synchronous data switching | |
US20080212577A1 (en) | Chip circuit for combined and data compressed fifo arbitration for a non-blocking switch | |
CN1747440B (zh) | 一种实现信元重排序的芯片 | |
CN1132492C (zh) | 用于对信元流进行冗余端接的设备 | |
US7454554B1 (en) | Binary base address search device and method | |
US7289508B1 (en) | Systems and methods for processing any-to-any transmissions | |
US20040202162A1 (en) | Multicast buffered switch and method for operating a multicast buffered switch | |
US6240075B1 (en) | Satellite communication routing arbitration techniques | |
AU625592B2 (en) | Communication switching element | |
US7130302B2 (en) | Self-route expandable multi-memory packet switch |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120502 |