CN1545658A - 具有双端口存储器仿真配置的交换结构 - Google Patents
具有双端口存储器仿真配置的交换结构 Download PDFInfo
- Publication number
- CN1545658A CN1545658A CNA028159853A CN02815985A CN1545658A CN 1545658 A CN1545658 A CN 1545658A CN A028159853 A CNA028159853 A CN A028159853A CN 02815985 A CN02815985 A CN 02815985A CN 1545658 A CN1545658 A CN 1545658A
- Authority
- CN
- China
- Prior art keywords
- memory
- port
- accessing operation
- grouping
- switching fabric
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/103—Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种使用两个单端口存储器支持双端口存储器仿真配置的交换结构。当为一个单端口存储器调度提取一个存储分组的读操作时,则在另一个单端口存储器上执行用于存储一个分组的写操作。每个分组在存储器内每次存储一个数据字,并由指向存储器内存储的前一数据字的前一指针链路列表来索引,产生每个数据字的指针信息的单个写入步骤。在提取所存储的分组时,通过遵循前一指针的链表,其中首先提取分组的尾部,最后提取分组的首部,以后向方式来提取每个数据字。
Description
技术领域
本发明一般涉及分组交换系统,尤其涉及一种仿真双端口交换结构存储器的单端口交换结构存储器。
背景技术
数据通信交换机中的交换结构便于将从输入端口接收到的数据分组传送到输出端口,从而将分组转发给目的地。交换结构可实现为纵横交换机、信元交换机或者共享存储器分组交换机。与其它种类的交换结构相比,共享存储器分组交换机的一个优点是它在高业务负载时的鲁棒性。共享分组存储器交换机通常提供比其它种类的交换结构更低的分组损失和更短的等待时间。
通常将共享分组存储器交换机内的存储器实现为单端口动态随机访问存储器(DRAM)。图1是在现有技术中可以找到的典型的单端口存储器60的示例性方框图。该存储器包括单条地址总线62、控制总线64和数据总线66。单条地址、控制和数据总线用于响应于写命令在存储器内接收和存储分组,和响应于读命令从存储器中提取和发送所存储的分组。
然而,单端口存储器的一个不足之处是它每次仅支持一个存储器访问,不管是读访问还是写访问。因此,不能同时执行多个读访问或多个写访问,这限制了到该存储器和自该存储器的带宽,并造成了限制系统性能的瓶颈。此外,当试图同时执行读操作和写操作时可能会出现读写冲突,经常导致分组的读或写延迟。
一种试图避免读写冲突的常规方法是用双端口RAM替代单端口RAM。图2是在现有技术中可以找到的典型的双端口存储器80的示例性方框图。该双端口存储器80包括两条地址总线82a和82b、控制总线84a和84b和数据总线86a和86b。双端口存储器允许通过各条总线同时从同一存储器80中提取分组和向同一存储器80存储分组,而没有读写冲突的风险,允许进和出存储器的数据吞吐量翻倍而不改变访问时序。
尽管双端口存储器避免了读写冲突,但它们通常不具有交换结构所需要的存储器容量,同时也无法用作DRAM,而这种交换结构通常使用的是DRAM。此外,双端口存储器在区域使用效率方面通常也不如单端口存储器。
因此,需要一种使用单端口存储器来最大化数据吞吐量而没有读写冲突风险的交换结构。
发明内容
本发明涉及一种交换结构,它具有利用单端口存储器来实现的双端口存储器仿真配置。根据一种实施例,该交换结构包括一个输入和一个连接到所述输入的存储器,该存储器包括第一存储器单元和第二存储器单元,其特征在于选择第一存储器单元或第二存储器单元用于在第一分组的至少一部分上执行第一存储器访问操作,所述选择基于选择用于在第二分组的至少一部分上执行第二存储器访问操作的存储器单元进行。
根据另一种实施例,本发明涉及一种具有双端口存储器仿真配置的交换结构,其中该交换结构包括:第一单端口存储器,包括单个第一输入端口、单个第一地址端口和单个第一输出端口;和第二单端口存储器,包括单个第二输入端口、单个第二地址端口和单个第二输出端口。根据这个实施例,当在第一单端口存储器上执行第二存储器访问操作时,则在第二单端口存储器上执行第一存储器访问操作。而当在第二单端口存储器上执行第二存储器访问操作时,则在第一单端口存储器上执行第一存储器访问操作。
根据一种实施例,所述第一存储器访问操作是写操作和所述第二存储器访问操作是读操作。
根据另一种实施例,同时以无阻塞的方式执行所述第一和第二存储器访问操作。
因此,应当理解本发明允许使用单端口存储器来仿真双端口存储器。可以以无阻塞的方式在同一操作周期内执行读和写操作,这是因为在任意的给定周期内,所述读和写操作出现在不同的单端口存储器内。因此,本发明允许最大化数据吞吐量而没有读写冲突的风险。
当参考下述详细描述、所附权利要求书和附图时,将更完整地理解本发明的这些和其它的特征、方面和优点。当然,本发明的实际范围由所附权利要求书来定义。
附图说明
图1是可以在现有技术中找到的典型的单端口存储器的示例性方框图;
图2是可以在现有技术中找到的典型的双端口存储器的示例性方框图;
图3是根据本发明一种实施例的具有双端口存储器仿真配置的分组交换系统的示意方框图;
图4是根据本发明一种实施例的示例性输入控制单元的示意方框图;
图5是根据本发明一种实施例的示例性分组缓冲器单元的示意方框图;
图6是根据本发明一种实施例的示例性输出控制单元的示意方框图;
图7是根据本发明一种实施例的图5中分组缓冲器单元一部分的更详细的方框图;
图8是根据本发明一种实施例的划分成用于仿真双端口存储器的上部数据存储器和下部数据存储器的图5的分组缓冲器单元内的数据存储器的示意布局图;
图9是根据双端口存储器仿真配置在存储分组时由图5的分组缓冲器单元执行的处理过程的流程图;和
图10是根据双端口存储器仿真配置在提取分组时由图5的分组缓冲器单元执行的处理过程的流程图。
具体实施方式
图3是根据本发明一种实施例的具有双端口存储器仿真配置的分组交换系统的示意方框图。该系统包括输入控制单元(ICU)10和输出控制单元(ECU)12,它们连接到由分组缓冲器单元(PBU)14组成的存储和转发从ICU 10接收到的分组的交换结构。ICU 10可以包括一个或多个相关的输入端口20,ECU 12可以包括一个或多个相关的输出端口22。在任意给定时间上,输入端口20的全部或一个子集接收目的是输出端口22的全部或一个子集的数据分组。这些分组可以包括但是并不限于以太网帧、ATM信元、TCP/IP和/或UDP/IP分组,并且可能还包括其他第二层(数据链路/MAC层)、第三层(网络层)或者第四层(传输层)的数据单元。
当ICU 10接收到分组时,则该ICU将该分组转发到PBU 14进行存储。PBU 14在存储器中存储该分组,并将通知发送给对接收该分组可能感兴趣的ECU。PBU 14在存储器中保存该分组,直到ECU发出请求。在ECU根据其调度算法确定已到转发该分组的时候时,ECU就向PBU 14发送提取该分组的请求。PBU响应该请求提取所述分组并将其发送到ECU,以便经由输出端口22中的一个或多个进行转发。
尽管在图3中图示的实施例图示了连接到单个PBU的单个ICU和ECU,但是本领域的技术人员应当理解分组交换系统可以包括通过高速串行链路连接到多个PBU的多个ICU和ECU,以便每个ICU和ECU可以与每个PBU通信,如在2002年5月15日提交的已转让给本案的受让人、发明名称为“分布式共享存储分组交换机(Distributed SharedMemory Packet Switch)”(代理人卷号47900/JEC/X2)的美国专利申请中所描述的,其内容在此引用作为参考。
图4是根据本发明一种实施例的示例性ICU 10的示意方框图。在所图示的实施例中的ICU包括输入处理器32,它连接到输入数据存储器30,后者又连接到输入接口34。与现有技术中常规的情况相同,输入分组处理器32接收输入分组,并对分组执行控制、统计、转发和任何其它的分组处理工作。
输入数据存储器30可以是用于接收和临时存储输入数据分组的先进先出(FIFO)缓冲器。当输入端口20中的一个或多个数据速率低于或高于到PBU 14的链路16的数据速率时,则可能希望使用输入数据存储器30。然而,当ICU 10并不包括输入数据存储器30时,也可以实现一种实施例。
输入接口34通过链路16将输入数据分组转发给PBU。在一种由多个PBU 14构成交换结构的实施例中,可以根据由与每个PBU有关的加权信息调整的伪随机算法来选择一个特定的PBU,从而允许在多个PBU之间平衡工作负载。
图5是根据本发明一种实施例的示例性PBU 14的示意方框图。所图示实施例中的PBU包括用于存储从ICU 10接收到的分组的共享分组数据存储器40。将一个特定分组的不同部分存储在数据存储器内通过一个指针链表访问的不同存储位置上。根据本发明的一种实施例,将存储器划分成上部数据存储器40a和下部数据存储器40b。将上部数据存储器40a实施为第一单端口存储器,将下部数据存储器40b实施为第二单端口存储器。每个单端口存储器例如可以是相同大小的单端口DRAM。可选择地,每个单端口存储器可以是不同大小的。
PBU 14还包括一个PBN缓冲器42,可以将其实现为动态随机访问存储器(DRAM)或静态RAM(SRAM)。PBN缓冲器42中的每个表目(entry)包括一个地址,称作PBN地址,它是一个指向存储至少一部分分组的数据存储器40的指针。根据本发明的一种实施例,PBN地址是一个指向存储分组尾部的存储位置的指针。
PBN缓冲器42连接到一个称作输入存储器管理器44的存储器单元,由其保持跟踪从ICU 10流向数据存储器40的分组。输入存储器管理器44从空闲指针缓冲器46提取指向空闲存储位置的指针。空闲指针缓冲器46包括上部缓冲器部分46a和下部缓冲器部分46b。上部缓冲器部分46a存储指向上部数据存储器40a内的可用存储位置的指针,下部缓冲器部分46b存储指向下部数据存储器40b内的可用存储位置的指针。
输入存储器管理器44在从空闲指针缓冲器46中提取出的一个或多个空闲存储位置内存储一个分组的全部或部分。输入存储器管理器44保持跟踪用于存储分组前一部分的前一指针,并在空闲存储位置内与分组数据一起存储前一指针。这使分组的不同部分通过后向指针机制相互链接,在所述后向指针机制中分组的当前部分指向分组的前一部分。
当将整个分组写入数据存储器40内时,输入存储器管理器44向PBN缓冲器42添加一个用于新存储分组的表目。根据一种实施例,所述表目包括一个指向分组尾部的指针。
PBU 14还包括一个称作输出存储器管理器48的处理单元,由其保持跟踪从数据存储器40流出到ECU 12的分组。输出存储器管理器48向数据存储器40发送读命令以从一个特定的存储位置提取出数据。输出存储器管理器还检测不再需要在存储器40内保存的分组,并释放它们的相关存储位置。
除了上述部件之外,PBU 14还包括一个输入控制器50和一个输出控制器52。输入控制器50接收来自ICU 10和ECU 12的不同种类的消息,处理和分离这些不同种类的消息以转发给PBU内的合适组件。
例如,输入控制器50从ICU 10接收输入分组,将其转发给输入存储器管理器44以将这些分组存储在数据存储器内。输入控制器50还接收分组请求消息,将其转发给PBN缓冲器42以提取用于ECU 12的分组。在另一个实施例中,输入控制器50可以从ECU接收其它消息,例如与在存储器内存储的一个分组有关的预约消息,此消息表示该分组将保存在存储器内直到被ECU请求。
输出控制器52向ECU发送通知消息,指示已经接收到一个ECU可能感兴趣接收的分组,并将其存储在数据存储器40内。输出控制器52还接收从数据存储器40提取出的分组,并且一旦ECU 12请求就将这些分组转发给ECU。
当然,应当理解图5图示PBU 14的方框图,在不影响本发明创造性方面的情况下,该PBU 14具有构造PBU所需的或者在理想状态下所有的附加单元和/或组件。例如,PBU可以包括一个单独的通知逻辑电路和相关表格,用于向ECU发送通知。PBU还可以包括一个预约缓冲器,转发从ECU接收到的预约消息。在发明名称为“分布式共享存储分组交换机(Distributed Shared Memory Packet Switch)”的上述美国专利申请中更详细地描述了这些附加组件。
图6是根据本发明一种实施例的示例性ECU 12的示意方框图。根据所图示的实施例,ECU 12包括从PBU 14接收不同种类的分组的输出接口70。输入接口70将这些分组处理和转发给合适的输出组件。
根据本发明的一种实施例,输入接口70将从PBU 14提取到的数据分组发送给输出数据存储器72,用于在通过一个或多个输出端口22进行转发之前临时存储所述分组。可以将输出数据存储器72实现为先进先出(FIFO)缓冲器。当一个或多个输出端口22的数据速率高于或者低于用于与PBU 14通信的链路18的数据速率时,则可能需要输出数据存储器72。然而,当ECU 12并不包括一个输出数据存储器72的情况下,也可以是一种实施例。
输出接口70还从PBU 14接收通知消息,该消息表示ECU可能感兴趣接收的一个分组已经存储在数据存储器40内。当与该分组有关的一个或多个输出队列76的队列过长时,则丢弃那些标识为过长队列的通知。对于其它的相关队列,输出接口70在队列中存储一个与该分组有关的PBN。根据一种实施例,输出接口70可以向PBU 14发送一个预约消息,表示PBN被排队且相关的分组将保存在数据存储器40内。
ECU 12包括一个输出调度器78,它根据一种特定的调度算法使PBN编号从每个输出队列76中出列,所述调度算法例如是加权循环复用算法和基于类别的出列等算法。当根据调度机制的确定,调度转发一个与排队的PBN有关的分组时,输出接口向PBU 14发送一个分组请求消息。根据一种实施例,分组请求消息包括排队的PBN,允许PBU识别出合适的将要提取的分组。一旦接收到所述分组,ECU就在输出数据存储器72内临时存储该分组。因为由PBU以后向的方式提取分组,其中首先提取分组尾部,最后提取分组首部,在通过一个或多个合适的输出端口转发分组时,ECU也以后向方式读取分组,从而抵消PBU的后向提取。以这种方式,ECU以正确的顺序转发分组,其中首先转发分组的首部,最后转发分组的尾部。
现在将更加详细地描述共享分组数据存储器40的访问。根据本发明的一种实施例,数据存储器40通过将存储器划分成上部数据存储器40a和下部数据存储器40b,将其中的每个实现为单端口存储器,来仿真一个双端口存储器。双端口仿真允许在由输出存储器管理器48调用的从数据存储器提取数据的读操作的同一操作周期中,以非阻塞的方式进行由输入存储器管理器44调用的在数据存储器40中存储数据的写操作。当不需要读操作时,也可以在单个操作周期内执行两个写操作。因此,双端口仿真配置有助于通过单端口存储器提高吞吐量,而没有读写冲突的风险。
根据本发明的一种实施例,读操作优先于写操作。根据这个实施例,下一个调度读操作的地址确定调度的写操作将要访问的数据存储器部分。当调度在上部数据存储器40a内执行读操作时,则将在下部数据存储器40b内执行写操作,或反之。因此,在每个周期上,可以以无阻塞的方式同时执行读操作和写操作。
在写操作期间,在存储器不同的存储位置上逐数据字地存储数据分组,其中每个存储位置存储当前的数据字和指向相邻数据字的指针。当指针是指向下一个数据字的下一个指针时,则可以生成数据字的前向指针机制。然而,在通过单端口存储器仿真双端口存储器时,其中读操作优先于写操作,是由当前的读操作来确定下一个读操作将要出现的位置,继而还确定下一个写操作将要出现的位置。因而,不是由当前的写操作,而是由下一个读操作来生成下一个指针信息。这意味着当存储分组数据的当前部分时,在当前的写操作期间不能处理指针的存储。相反地,指针信息是不完整的,除非下一个读操作已经确定下一个写指针的内容,这意味着附加的读、修改和写步骤是为了提取和正确地设置下一个指针信息。
根据本发明的一种实施例,并不使用前向指针机制,而是使用后向指针机制,在前向指针机制中为了获取和校正合适的下一个写指针信息需要附加的操作周期,在后向指针机制中并不存储分组的数据字和指向下一个数据字的指针,而是存储指向前一个数据字的指针。因为在存储当前数据字期间可以使用前一指针信息,所以在单个的当前写步骤期间可以同时存储数据和指针信息。因而,可以在单个操作周期期间同时执行和完成读和写步骤。
在一种可选实施例中,通过维持在0和1之间连续切换的内部1比特计数器可以实现前向指针机制。可以使用该计数器使数值0与上部数据存储器相关,使数值1与下部数据存储器相关,交替地读和写,从而在一个时间点上,读=上部存储器,写=下部存储器,在随后的点上,读=上部存储器,写=下部存储器。因为将要执行下一个写操作的存储器单元是预先已知的,所以可以预先提取下一个写指针以与当前的数据分组一起存储,从而允许前向指针机制。
在另一种实施例中,通过使写操作优先于读操作可以实现前向指针机制。以这种方式,可以通过当前的写操作来确定下一个调度的写操作将要访问的存储器单元,允许预先从所标识的存储器单元中提取出下一个写指针。同时,通过当前的写操作来确定下一个调度的读操作将要访问的存储器单元。然而,根据下一个调度的读地址与选定的存储器单元一致与否,实际的下一个调度的读操作可以出现,也可以不出现。
图7是根据本发明一种实施例的图5的PBU 14一部分的更详细的方框图。该输入存储器管理器44包括PBN寄存器106和前一写指针寄存器108。PBN寄存器106临时存储一个PBN缓冲器的地址,所述PBN缓冲器称作PBN,用于存储一旦将分组存储在数据存储器40内一个指向该分组的指针。例如,当输入存储器管理器检测到分组的首部(SOP)时,从空闲PBN缓冲器(未图示)中选择出PBN。
前一写指针寄存器106存储一个指向用于存储所述分组前一部分的存储位置的指针。当在数据存储器40的可用位置内存储流动的每个分组部分时,更新前一写指针寄存器106。与数据分组的当前部分一起在存储器内存储前一写指针寄存器106内的指针。
空闲指针缓冲器46存储指向可以存储分组的数据存储器40内可用位置的空闲指针列表104。将空闲指针列表104划分成上部缓冲器部分46a和下部缓冲器部分46b。上部缓冲器部分存储指向上部数据存储器40a内可用存储位置的指针,下部缓冲器部分存储指向下部数据存储器内可用存储位置的指针。
根据一种实施例,对于将要存储的分组的每个部分来说,空闲缓冲器同时向输入存储器管理器44发送来自上部缓冲器部分46a的空闲上部指针和来自下部缓冲器部分46b的空闲下部指针。将空闲上部指针发送给上部存储器地址选择器105,并将空闲下部指针发送给下部存储器地址选择器107。由上部/下部(U/L)读指示符109来确定选择作为存储数据的存储器地址的实际指针,所述上部/下部(U/L)读指示符109根据下一个调度的读操作来启动空闲上部指针或空闲下部指针。每次处理仅需要一个空闲指针,并将未使用的指针返回给空闲指针缓冲器。当下一个调度的读操作是在下部数据存储器40b上时,则U/L读指示符使空闲上部指针选择为用于写入分组当前部分的地址。以这种方式,可以在同一操作周期内以无阻塞的方式同时执行读和写操作,仿真了双端口存储器。
根据一种实施例,当未调度读操作时,则使用加权伪随机算法来确定选择空闲上部指针还是空闲下部指针。根据上部缓冲器部分和下部缓冲器部分内空闲指针的数量来相应地分配加权。根据另一种实施例,在未调度同时的读操作的情况下,使用两个空闲指针来同时执行两个写操作。
数据存储器40包括上部数据存储器40a和下部数据存储器40b。将数据存储器的每个部分实现为包括单数据输入端口100、单地址端口101和单数据输出端口102的单端口存储器。数据输入端口100从存储器管理器44接收将要存储的分组的一部分和前一写指针。地址端口101接收在数据存储器内用于存储或提取数据的地址。数据输出端口102发送从存储器提取出的数据。
一旦输入存储器管理器44检测到分组的尾部(EOP),则将分组的尾部存储在从空闲指针缓冲器46提取出的当前空闲指针所指示的存储位置内。将当前的空闲指针存储在PBN缓冲器内由PBN寄存器106中的PBN所指示的地址上。还由输出控制器52向感兴趣的ECU发送通知,其中使用PBN表示使用该PBN可以提取的存储分组。
PBN缓冲器42包括多个PBN地址112,其中每个PBN地址指向存储一个特定分组的全部或部分的存储位置。根据一种实施例,每个PBN地址指向存储一个分组的尾部的存储位置。可以通过每个PBN地址相关的PBN 110来对其进行访问。
输出写表格48包括PBN寄存器114和当前读指针寄存器116。PBN寄存器存储ECU 12请求的一个分组的PBN。使用PBN从PBN缓冲器42中提取一个相关的PBN地址。将所提取的PBN地址存储在当前读指针寄存器116内。PBN地址用作指向存储所请求分组的数据存储器40内存储位置的指针链表的开始地址。输出存储器管理器48还确定PBN地址指向上部数据存储器40a还是下部数据存储器40b,并相应地设置U/L读指示符109。
当读取分组的当前部分时,使用与所提取的数据一起存储的前一指针来确定将要提取的该分组的下一部分。输出写表格48使用前一指针更新当前读指针寄存器116,允许提取与前一指针相关的数据。
图8是根据本发明的一种实施例划分成上部数据存储器40a和下部数据存储器40b的数据存储器40的示意布局图。数据存储器的每个部分包括多个表目,每个表目包括分组数据130和相关的前一指针132。当存储器内的一个表目存储一个特定分组的首部时,则相关的前一指针是空(NULL)指针。与前一指针一起存储该分组的所有其它部分,所述前一指针索引在存储器内存储的分组的前一部分。以这种方式,可以以后向方式通过一个前一指针链表索引整个分组,其中首先索引分组的尾部,最后索引分组的首部。通过这样一种后向指向机制,可以使用单个写步骤来确定和存储指针,而不使用前向指向机制中随后进行确定和填充指针信息可能需要的其它步骤。
在通过读操作提取一个分组时,首先提取与分组尾部相关的数据,使用它的相关前一指针来提取与分组中部有关的数据。再使用与所提取的分组中部有关的前一指针来提取分组的其它中间部分,直到遇到一个NULL指针,最后提取与分组首部有关的数据。
将以这种后向方式提取出的分组发送给请求ECU,该请求ECU为了抵销分组的后向提取,在通过它的输出端口发送之前也以后向方式读取分组。ECU后向方式的读取使分组以正确的顺序发送,首先发送分组的首部,最后发送分组的尾部。
图9是根据双端口存储器仿真配置由PBU 14在存储分组时所执行处理的流程图。该处理开始于步骤140,PBU 14接收一个输入分组的一部分,并将该部分发送给输入存储器管理器44。输入存储器管理器44确定所接收的分组部分是SOP、MOP或EOP。在步骤142,当所接收的分组是SOP时,则输入存储器管理器44在步骤144识别一个可用的PBN。此外,输入存储器管理器在步骤146从空闲指针缓冲器46中提取空闲上部和下部指针。根据下一个调度将在数据存储器40上执行的读操作,确定使用空闲上部指针还是空闲下部指针。当将使用空闲上部指针时,如在步骤148中确定的,将当前的写指针设置成空闲上部指针。在步骤152,将分组数据存储在上部数据存储器内空闲上部指针所指示的存储位置上。还将输入存储器管理器44保存的前一写指针存储在所述存储位置上。对于分组的首部来说,将前一指针设置为NULL。
当将要使用空闲下部指针时,则在步骤156将当前的写指针设置为空闲下部指针。在步骤158,在空闲下部指针所指示的存储位置内存储分组数据和有关的前一指针。
在步骤154,使用当前的写指针更新输入存储器管理器44的前一指针寄存器108。
在步骤160,当将要存储的分组的下一部分是MOP时,则再次执行步骤146-154,其中提取空闲上部和下部指针,根据下一个调度的读操作选择一个空闲指针用于存储该分组,并使用当前的写指针更新前一指针。
在步骤162,当将要存储的分组的下一部分是EOP时,则从空闲指针缓冲器46中提取空闲上部和下部指针,并根据下一个调度的读操作来确定将要使用空闲上部指针还是空闲下部指针。在步骤164,当将要使用空闲上部指针时,则在步骤166将当前写指针设置为空闲上部指针。在步骤168,在上部数据存储器内的空闲上部指针所指示的存储位置上存储分组的尾部和前一指针。
反之,当将要使用空闲下部指针时,则在步骤174将当前写指针设置为空闲下部指针,然后在步骤176中在下部数据存储器内存储分组的尾部和前一指针。
在步骤170,当前指针变成一个PBN地址,然后在步骤172,将PBN地址存储在PBN缓冲器42内一个所识别的PBN寻址的表目上。
图10是根据双端口存储器仿真配置PBU 14在提取分组时所执行的处理的流程图。该处理开始于步骤180,PBU从ECU接收一个分组请求消息。根据一种实施例,所述分组请求消息包括所希望的分组的PBN。在步骤182,提取PBN,在步骤184,从PBN缓冲器42提取相关的PBN地址。根据一种实施例,PBN地址是存储所需分组尾部的存储位置的地址。
在步骤186,将当前的读指针设置为所提取的PBN地址。在步骤188,确定当前的读指针指向上部数据存储器40a还是下部数据存储器40b。当当前读指针指向上部数据存储器时,则在步骤192将U/L读指示符设置为“上部”。反之,则在步骤190将U/L读指示符设置为“下部”。
在步骤194,提取在当前读指针位置上存储的数据和前一指针。如果对于组播传输来说该数据和前一指针是最后读出的分组的一部分,则还将当前的读指针返回给空闲指针缓存器46。
在步骤196,确定所提取的前一指针是否是NULL指针。当结果为是,则已经提取分组的首部,该处理过程结束。反之,将当前的写指针设置为所提取的前一指针,用于从分组的链表中提取出分组的前一部分。
尽管已经通过一些具体的实施例描述了本发明,在不脱离本发明的范围和精神的情况下,本领域的技术人员将毫无困难地设计出各种变型。例如,图9和图10的流程图中所示的步骤可以以所图示的顺序执行,或者以本领域的技术人员可以设计的任何其它顺序来执行。因此,将理解本发明可以通过具体描述之外的其它方式来实施。因而,本发明的实施例在各个方面都应当被视为说明性而非限制性的,本发明的范围将由所附权利要求书及其等同范围而非上述描述来限制。
Claims (26)
1.一种具有双端口存储器仿真配置的交换结构,该交换结构包括:
输入;和
连接到所述输入的存储器,该存储器包括第一存储器单元和第二存储器单元,其特征在于选择第一存储器单元或第二存储器单元,用于在第一分组的至少一部分上执行第一存储器访问操作,所述选择基于选择用于在第二分组的至少一部分上执行第二存储器访问操作的存储器单元作出。
2.权利要求1的交换结构,其中第一存储器访问操作是写操作。
3.权利要求1的交换结构,其中第二存储器访问操作是读操作。
4.权利要求1的交换结构,其中当选择第一存储器单元用于执行第二存储器访问操作时,则选择第二存储器单元用于执行第一存储器访问操作,而当选择第二存储器单元用于执行第二存储器访问操作时,则选择第一存储器单元用于执行第一存储器访问操作。
5.权利要求1的交换结构,其中每个存储器单元是包括单数据输入端口、单地址端口和单数据输出端口的单端口存储器单元。
6.权利要求1的交换结构,还包括一个缓冲器,存储指向前一第一存储器访问操作访问的存储位置的前一索引。
7.权利要求6的交换结构,其特征在于第一存储器访问操作存储从缓冲器中提取出的前一索引。
8.权利要求7的交换结构,其中前一索引是一个NULL指针。
9.权利要求6的交换结构,其中使用一个索引来更新所述缓冲器,所述索引是一个指向选择用于执行第一存储器访问操作的第一或第二存储器单元内的存储位置的索引。
10.权利要求1的交换结构,其中第一分组包括多个第一数据字,第二分组包括多个第二数据字,所述第一数据字根据用于第一存储器访问操作的第一顺序来选择,所述第二数据字根据用于第二存储器访问操作的第二顺序来选择。
11.权利要求10的交换结构,其中在对与第一分组尾部相关的数据字执行操作之前以第一顺序对与第一分组首部相关的数据字执行操作,而在对与第二分组首部相关的数据字执行操作之前以第二顺序对与第二分组尾部相关的数据字执行操作。
12.一种具有双端口存储器仿真配置的交换结构,该交换结构包括:
第一单端口存储器,包括单个第一输入端口、单个第一地址端口和单个第一输出端口;和
第二单端口存储器,包括单个第二输入端口、单个第二地址端口和单个第二输出端口,
其特征在于当将在第一单端口存储器上执行第二存储器访问操作时,则在第二单端口存储器上执行第一存储器访问操作,而当将在第二单端口存储器上执行第二存储器访问操作时,则在第一单端口存储器上执行第一存储器访问操作。
13.权利要求12的交换结构,其中第一存储器访问操作是写操作。
14.权利要求12的交换结构,其中第二存储器访问操作是读操作。
15.权利要求12的交换结构,其中以无阻塞的方式同时执行第一和第二访问操作。
16.一种访问一个交换结构的方法,所述交换结构包括一个存储器,该存储器包括:第一单端口存储器,包括单个第一输入端口、单个第一地址端口和单个第一输出端口;和第二单端口存储器,包括单个第二输入端口、单个第二地址端口和单个第二输出端口;该方法包括:
确定用于第二存储器访问操作的存储器地址;
当所述存储器地址与第一单端口存储器相关时,则在第二单端口存储器上执行第一存储器访问操作;和
当所述存储器地址与第二单端口存储器相关时,则在第一单端口存储器上执行第一存储器访问操作。
17.权利要求16的方法,其中第一存储器访问操作是写操作。
18.权利要求16的方法,其中第二存储器访问操作是读操作。
19.权利要求16的方法,其中以无阻塞的方式同时执行第一和第二存储器访问操作。
20.权利要求16的方法,还包括在一个缓冲器内维持指向在前一第一存储器访问操作过程中访问的存储位置的前一索引。
21.权利要求20的方法,还包括从所述缓冲器中提取所述前一索引,并存储在所述第一存储器访问操作过程中从所述缓冲器中提取出的所述前一索引。
22.权利要求21的方法,其中所述前一索引是一个NULL指针。
23.权利要求20的方法,还包括使用一个索引来更新缓冲器,所述索引指向选择用于执行第一存储器访问操作的第一或第二存储器单元内的存储位置。
24.权利要求16的方法,其中在包括多个第一数据字的第一分组上执行第一存储器访问操作,在包括多个第二数据字的第二分组上执行第二存储器访问操作,该方法还包括根据用于第一存储器访问操作的第一顺序来选择第一数据字,和根据用于第二存储器访问操作的第二顺序来选择第二数据字。
25.权利要求24的方法,其中在对与第一分组尾部相关的数据字执行操作之前以第一顺序对与第一分组首部相关的数据字执行操作,而在对与第二分组首部相关的数据字执行操作之前以第二顺序对与第二分组尾部相关的数据字执行操作。
26.一种从交换结构存储和提取分组的方法,该交换结构包括一个存储器,该存储器包括第一存储器单元和第二存储器单元,该方法包括:
接收一个输入分组;
提取指向所述第一存储器单元内可用存储位置的第一索引;
提取指向所述第二存储器单元内可用存储位置的第二索引;
选择第一索引或第二索引,所述选择基于被选择用于执行所存储分组的读操作的存储器单元作出;以及
在选择的索引所指向的存储位置内写入输入分组的至少一部分。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US30617401P | 2001-07-17 | 2001-07-17 | |
US60/306,174 | 2001-07-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1545658A true CN1545658A (zh) | 2004-11-10 |
Family
ID=23184152
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA028159853A Pending CN1545658A (zh) | 2001-07-17 | 2002-06-26 | 具有双端口存储器仿真配置的交换结构 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20030016689A1 (zh) |
EP (1) | EP1407362A4 (zh) |
JP (1) | JP2004536515A (zh) |
CN (1) | CN1545658A (zh) |
WO (1) | WO2003009142A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103594110A (zh) * | 2012-08-15 | 2014-02-19 | 上海华虹集成电路有限责任公司 | 替代双端口静态存储器的存储器结构 |
CN103677971A (zh) * | 2012-09-21 | 2014-03-26 | 上海斐讯数据通信技术有限公司 | 多线程处理系统及方法 |
CN111679599A (zh) * | 2020-05-22 | 2020-09-18 | 中国航空工业集团公司西安航空计算技术研究所 | 一种cpu与dsp数据高可靠交换方法 |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7203193B2 (en) * | 2001-07-17 | 2007-04-10 | Alcatel Lucent | In-band message synchronization for distributed shared memory packet switch |
US7289523B2 (en) * | 2001-09-13 | 2007-10-30 | International Business Machines Corporation | Data packet switch and method of operating same |
US7292593B1 (en) * | 2002-03-28 | 2007-11-06 | Advanced Micro Devices, Inc. | Arrangement in a channel adapter for segregating transmit packet data in transmit buffers based on respective virtual lanes |
US7239645B2 (en) * | 2003-01-21 | 2007-07-03 | Applied Micro Circuits Corporation | Method and apparatus for managing payload buffer segments in a networking device |
US7515584B2 (en) * | 2003-09-19 | 2009-04-07 | Infineon Technologies Ag | Switching data packets in an ethernet switch |
US8370557B2 (en) * | 2008-12-19 | 2013-02-05 | Intel Corporation | Pseudo dual-port SRAM and a shared memory switch using multiple memory banks and a sideband memory |
CN102081591A (zh) * | 2011-01-27 | 2011-06-01 | 中国第一汽车集团公司 | 双端口存储器在双cpu结构设计中的应用 |
US11227653B1 (en) | 2016-12-06 | 2022-01-18 | Gsi Technology, Inc. | Storage array circuits and methods for computational memory cells |
US10854284B1 (en) | 2016-12-06 | 2020-12-01 | Gsi Technology, Inc. | Computational memory cell and processing array device with ratioless write port |
US10777262B1 (en) | 2016-12-06 | 2020-09-15 | Gsi Technology, Inc. | Read data processing circuits and methods associated memory cells |
US10891076B1 (en) | 2016-12-06 | 2021-01-12 | Gsi Technology, Inc. | Results processing circuits and methods associated with computational memory cells |
US10249362B2 (en) | 2016-12-06 | 2019-04-02 | Gsi Technology, Inc. | Computational memory cell and processing array device using the memory cells for XOR and XNOR computations |
US10860320B1 (en) * | 2016-12-06 | 2020-12-08 | Gsi Technology, Inc. | Orthogonal data transposition system and method during data transfers to/from a processing array |
US10943648B1 (en) | 2016-12-06 | 2021-03-09 | Gsi Technology, Inc. | Ultra low VDD memory cell with ratioless write port |
US10860318B2 (en) | 2016-12-06 | 2020-12-08 | Gsi Technology, Inc. | Computational memory cell and processing array device using memory cells |
US10847213B1 (en) | 2016-12-06 | 2020-11-24 | Gsi Technology, Inc. | Write data processing circuits and methods associated with computational memory cells |
US10847212B1 (en) | 2016-12-06 | 2020-11-24 | Gsi Technology, Inc. | Read and write data processing circuits and methods associated with computational memory cells using two read multiplexers |
US10770133B1 (en) | 2016-12-06 | 2020-09-08 | Gsi Technology, Inc. | Read and write data processing circuits and methods associated with computational memory cells that provides write inhibits and read bit line pre-charge inhibits |
US10930341B1 (en) | 2019-06-18 | 2021-02-23 | Gsi Technology, Inc. | Processing array device that performs one cycle full adder operation and bit line read/write logic features |
US10877731B1 (en) | 2019-06-18 | 2020-12-29 | Gsi Technology, Inc. | Processing array device that performs one cycle full adder operation and bit line read/write logic features |
US10958272B2 (en) | 2019-06-18 | 2021-03-23 | Gsi Technology, Inc. | Computational memory cell and processing array device using complementary exclusive or memory cells |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5041971A (en) * | 1988-11-30 | 1991-08-20 | Bolt Beranek And Newman Inc. | Memory accessing switch network |
JPH04248729A (ja) * | 1991-02-05 | 1992-09-04 | Fujitsu Ltd | Atm交換機 |
EP0513519A1 (en) * | 1991-05-15 | 1992-11-19 | International Business Machines Corporation | Memory system for multiprocessor systems |
US5535197A (en) * | 1991-09-26 | 1996-07-09 | Ipc Information Systems, Inc. | Shared buffer switching module |
CA2094410C (en) * | 1992-06-18 | 1998-05-05 | Joshua Seth Auerbach | Distributed management communications network |
US5291482A (en) * | 1992-07-24 | 1994-03-01 | At&T Bell Laboratories | High bandwidth packet switch |
US5548590A (en) * | 1995-01-30 | 1996-08-20 | Hewlett-Packard Company | High performance frame time monitoring system and method for a fiber optic switch for a fiber optic network |
US5835941A (en) * | 1995-11-17 | 1998-11-10 | Micron Technology Inc. | Internally cached static random access memory architecture |
US5813043A (en) * | 1996-07-12 | 1998-09-22 | Motorola, Inc. | Method and system including memory patching utilizing a transmission control signal and circuit |
US6191998B1 (en) * | 1997-10-16 | 2001-02-20 | Altera Corporation | Programmable logic device memory array circuit having combinable single-port memory arrays |
US6170046B1 (en) * | 1997-10-28 | 2001-01-02 | Mmc Networks, Inc. | Accessing a memory system via a data or address bus that provides access to more than one part |
US6216167B1 (en) * | 1997-10-31 | 2001-04-10 | Nortel Networks Limited | Efficient path based forwarding and multicast forwarding |
US6173425B1 (en) * | 1998-04-15 | 2001-01-09 | Integrated Device Technology, Inc. | Methods of testing integrated circuits to include data traversal path identification information and related status information in test data streams |
US6577636B1 (en) * | 1999-05-21 | 2003-06-10 | Advanced Micro Devices, Inc. | Decision making engine receiving and storing a portion of a data frame in order to perform a frame forwarding decision |
GB2352583B (en) * | 1999-07-28 | 2003-12-10 | Intellprop Ltd | Telecommunication circuit switches |
US6711170B1 (en) * | 1999-08-31 | 2004-03-23 | Mosaid Technologies, Inc. | Method and apparatus for an interleaved non-blocking packet buffer |
EP1089472A1 (en) * | 1999-09-28 | 2001-04-04 | TELEFONAKTIEBOLAGET L M ERICSSON (publ) | Time-alignment apparatus and method for providing data frames of a plurality of channels with predetermined time-offsets |
US6925506B1 (en) * | 2000-09-29 | 2005-08-02 | Cypress Semiconductor Corp. | Architecture for implementing virtual multiqueue fifos |
-
2002
- 2002-06-26 JP JP2003514417A patent/JP2004536515A/ja active Pending
- 2002-06-26 US US10/180,279 patent/US20030016689A1/en not_active Abandoned
- 2002-06-26 WO PCT/US2002/020288 patent/WO2003009142A1/en active Application Filing
- 2002-06-26 EP EP02746708A patent/EP1407362A4/en not_active Withdrawn
- 2002-06-26 CN CNA028159853A patent/CN1545658A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103594110A (zh) * | 2012-08-15 | 2014-02-19 | 上海华虹集成电路有限责任公司 | 替代双端口静态存储器的存储器结构 |
CN103594110B (zh) * | 2012-08-15 | 2017-09-15 | 上海华虹集成电路有限责任公司 | 替代双端口静态存储器的存储器结构 |
CN103677971A (zh) * | 2012-09-21 | 2014-03-26 | 上海斐讯数据通信技术有限公司 | 多线程处理系统及方法 |
CN103677971B (zh) * | 2012-09-21 | 2017-11-24 | 上海斐讯数据通信技术有限公司 | 多线程处理系统及方法 |
CN111679599A (zh) * | 2020-05-22 | 2020-09-18 | 中国航空工业集团公司西安航空计算技术研究所 | 一种cpu与dsp数据高可靠交换方法 |
CN111679599B (zh) * | 2020-05-22 | 2022-01-25 | 中国航空工业集团公司西安航空计算技术研究所 | 一种cpu与dsp数据高可靠交换方法 |
Also Published As
Publication number | Publication date |
---|---|
EP1407362A1 (en) | 2004-04-14 |
EP1407362A4 (en) | 2007-01-24 |
WO2003009142A1 (en) | 2003-01-30 |
US20030016689A1 (en) | 2003-01-23 |
JP2004536515A (ja) | 2004-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1545658A (zh) | 具有双端口存储器仿真配置的交换结构 | |
CN1736066B (zh) | 用于流量处理的包存储系统 | |
US8099521B2 (en) | Network interface card for use in parallel computing systems | |
US8184635B2 (en) | Port packet queuing | |
US20030227925A1 (en) | Packet processing device | |
EP1237337A2 (en) | Efficient optimization algorithm in memory utilization for network applications | |
US20060092934A1 (en) | System for protocol processing engine | |
CN1351791A (zh) | 带迁移字段缓冲的结构路由器 | |
US7627672B2 (en) | Network packet storage method and network packet transmitting apparatus using the same | |
CN101359314A (zh) | 通过将所检索的数据直接写入存储器的存储控制器来最佳使用缓冲器空间 | |
CN1543733A (zh) | 用于分布式共享存储器分组交换机的带内消息同步 | |
CN1643872A (zh) | 缓存流数据 | |
EP3657744B1 (en) | Message processing | |
US20020191642A1 (en) | Apparatus, method and limited set of messages to transmit data between components of a network processor | |
CN100440854C (zh) | 一种网络处理器的数据包接收接口部件及其存储管理方法 | |
WO1999051000A1 (en) | Ampic dram system in a telecommunication switch | |
CN1656470A (zh) | 芯片处理器间的控制平面通信 | |
KR100554825B1 (ko) | 메모리에 대한 액세스 감소 방법, 시스템 및 기록 매체 | |
US20080212577A1 (en) | Chip circuit for combined and data compressed fifo arbitration for a non-blocking switch | |
KR100560277B1 (ko) | 메모리로의 액세스의 수를 감소시키는 방법 및 시스템 및 기록 매체 | |
US7733888B2 (en) | Pointer allocation by prime numbers | |
US6885591B2 (en) | Packet buffer circuit and method | |
US7116659B2 (en) | Data transmission memory | |
CN117354268A (zh) | 一种报文的缓存方法、装置、电子设备及存储介质 | |
CN113448899A (zh) | 借助于交易辨识码的属性来控制数据响应的方法以及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |