用于存储器访问令牌重新分配的系统和方法与流程

文档序号:18622089发布日期:2019-09-06 22:35阅读:137来源:国知局
用于存储器访问令牌重新分配的系统和方法与流程

本公开要求于2016年12月7日提交的名为“writingtoapacketbufferwithoutmemorycollisions”的美国第62/431,238号临时专利申请的权益,其公开内容以整体内容通过引用并入本文。

本公开一般涉及通信系统,并且更具体地,涉及使用存储器访问令牌以存储所接收的数据。



背景技术:

本文提供的背景描述是出于总体上呈现本公开的上下文的目的。目前指定的发明人的工作,其在本背景技术部分中被描述的程度,以及在提交时可能不具有作为现有技术资格的描述的方面,既不明确也不暗示地被认为是针对本公开的现有技术。

一些网络交换机将传入分组的部分存储在集中式分组缓冲器中,例如,同时标识针对分组的出口接口,并且由分组处理器执行其他处理操作。稍后,将分组从集中式分组缓冲器转移到所标识的出口接口。在一些配置中,集中式分组缓冲器由单独可寻址的许多存储装置组成,这允许同时写入分组缓冲器。例如,多个入口接口可以同时写入到集中式分组缓冲区的分离存储装置。



技术实现要素:

在实施例中,网络设备包括多个入口接口;多个存储装置,被配置为在与在多个入口接口处接收到的分组相对应的数据由分组处理器处理以至少确定网络设备的通过其传送分组的出口接口的同时,存储分组;存储器访问令牌的第一池,以及实现存储器控制器的一个或多个集成电路。与多个存储装置的相应存储装置相对应的存储器访问令牌的第一池中的数个存储器访问令牌和访问令牌中的数个访问令牌在第一池内是不同的。一个或多个集成电路被配置为选择性地将第一池的单独存储器访问令牌分配给多个入口接口中的数个入口接口,以管理对多个存储装置的写入访问。多个入口接口之中的入口接口分别被分配至少一个存储器访问令牌,并且将分组写入到由对应的分配的一个或多个存储器访问令牌标识的多个存储装置的存储装置。一个或多个集成电路被配置为基于访问非顺序存储装置的写入访问方案,将来自多个入口接口的第一入口接口的第一池的第一存储器访问令牌重新分配给来自第一入口接口的连续写入命令之间的多个入口接口的第二入口接口。

在另一实施例中,一种用于在与在网络设备的多个入口接口处接收到的分组相对应的数据由分组处理器处理以至少确定网络设备的通过其传送分组的出口接口的同时,存储分组的方法,包括:由网络设备的存储器控制器选择性地将存储器访问令牌的第一池中的单独存储器访问令牌分配给多个入口接口中的数个入口接口以管理对多个存储装置的写入访问。多个入口接口之中的入口接口分别被分配至少一个存储器访问令牌,并且将分组写入到由对应的已分配的一个或多个存储器访问令牌标识的多个存储装置的存储装置。该方法还包括:在多个入口接口的第一入口接口处接收分组;确定存储分组的至少一部分的多个存储装置的所保留的存储装置的存储器地址,在所保留的存储装置处存储分组的至少一部分。所保留的存储装置由被分配给入口接口的存储器访问令牌标识。该方法还包括将分组的一部分存储在所保留的存储装置的存储器地址处;在分组的一部分已经被存储后,由存储器控制器将存储器访问令牌重新分配给多个入口接口的不同入口接口。

附图说明

图1是根据实施例的具有存储器控制器的示例网络设备的简化框图,其中实现了本公开的网络分组存储技术。

图2是根据实施例的图1的网络设备的示例存储器控制器的简化框图。

图3是根据实施例的图1的网络设备的示例逻辑存储装置的简化框图。

图4是根据实施例的图1的网络设备的简化框图。

图5是根据实施例的图3的示例逻辑存储装置的简化框图。根据实施例,如图1所示。

图6是根据实施例的说明在图1的网络设备中实现的存储在多个入口接口处接收到的分组的示例方法的流程图。

具体实施方式

在本文描述的各种实施例中,网络设备包括具有单独可寻址的多个存储装置的分组缓冲器。为网络设备的入口接口生成用于分组缓冲器的随机化(例如,非顺序)地址以存储所接收的网络分组,这在随后从分组缓冲器读取分组时提供改进的性能。在实施例中,随机化地址至少包括存储装置的非顺序选择。在另一实施例中,随机化地址包括存储装置的非顺序选择和所选存储装置内的非顺序地址。在实施例中,两个或更多个入口接口标识相应的随机化地址,并将对应的写入命令发送到分组缓冲器以存储相应的分组。在一种场景中,写入命令“冲突”,其原因在于:在接收到第二写入命令之前不能完成第一写入命令,因为对应的地址指的是相同的存储装置。在这种场景中,发生写入命令的拥塞,并且第二写入命令的执行被延迟直到第一写入命令已经完成为止。执行第二写入命令的延迟以及可能的到同一存储装置的后续写入命令一般是不确定的并且负面地影响网络设备的性能。在实施例中,对分组缓冲器的存储装置的写入访问由存储器访问令牌池管理,其中存储器访问令牌的池中的数个访问令牌对应于分组缓冲器的相应存储装置。存储器控制器选择性地将单独的存储器令牌分配给入口接口并重新分配存储器令牌以促进对分组缓冲器的写入命令的随机化(诸如非顺序)的分配。在一些实施例中,存储器令牌的使用排除了对于延迟(例如,拥塞)写入命令的先进先出缓冲空间的需要。在一些场景中,存储器令牌的使用降低了写入前读取的风险(即,在整个分组已经被写入存储器之前处理针对分组的读取命令),通过有效地“锁定”存储装置直到整个分组已写入到存储装置。

图1是根据实施例的在其中实现本公开的网络分组存储技术的示例网络设备100的简化框图。在各种实施例中,网络设备100是桥接器,路由器,交换机或被配置为在联网环境内操作的任何其他合适的网络设备。在图1所示的实施例中,网络设备100包括多个端口接口,包括端口103、105、107、109、113、115、117和119。在一些实施例中,多个端口中的每个端口是双向端口,其可以用做接收网络分组的入口端口或传送网络分组的出口端口。在其他实施例中,端口专用于入口端口或出口端口。例如,在实施例中,端口103、105、107和109是专用入口端口,端口113、115、117和119是专用出口端口。

虽然图1仅示出了八个端口,但是在其他实施例中网络设备100包括多于八个端口或少于八个端口。在各种实施例中,网络设备100被配置为处理单播,多播和/或广播操作。图1图示了网络设备100至少能够进行单播操作的实施例,以及在其中分组以单播方式经由端口103进入并经由端口112外出到单个目的地的场景。注意,在其他实施例和/或场景中,分组可以替代地经由一个端口(单播),经由两个端口,经由三个或更多个端口,或经由交换机的所有端口外出。

网络设备100包括具有多个存储装置121的分组缓冲器120,例如,如图1的实施例中所示的存储装置a、b、c、d和e。多个存储装置121被配置为存储在多个入口端口处接收到的分组(或其部分),例如,同时对应于分组的数据由一个或多个处理器处理,以至少确定网络设备100的出口端口,通过该网络设备100传送分组。网络设备100利用存储器访问令牌的一个或多个池122来管理对多个存储装置121的写入访问,例如,池122-1(图1)和池122-2、122-3和122-4(图4)。在实施例中,例如,池122的每个存储器访问令牌a、b、c、d和e对应于相应的存储装置a、b、c、d和e,并且生成用于存储分组的写入命令,该分组只有在对应的存储器访问令牌已被分配给入口端口时才从特定存储装置的入口端口处被接收(例如,入口端口是“令牌持有者”)。换言之,存储装置为存储器访问令牌的持有者被保留。在实施例中,存储器访问令牌的池122中的数个存储器访问令牌对应于多个存储装置121中的相应存储装置并且在池122内是不同的(例如,池122每个存储装置仅包含一个存储器访问令牌,以便池122内没有重复的令牌)。在图1和图4所示的实施例中,每个池122包括相应的存储器访问令牌a、b、c、d和e。

用于将所接收到的分组写入到多个存储装置121的写入命令包括所接收到的分组的至少一部分,并且标识i)要将所接收的分组的一部分存储到其中的所保留的存储装置,以及ii)所保留的存储装置的存储器地址。在实施例中,网络设备100利用存储装置的随机选择在随后从多个存储装置121读取分组时改进性能。在实施例中,网络设备还利用存储器访问令牌降低写入命令之间发生冲突的可能性。例如,在池中仅存在针对存储装置的存储器访问令牌的情况下,将存储器访问令牌分配给令牌组的特定接口或令牌组的端口会阻止令牌组的其他成员尝试使用存储器访问令牌进行写入,并因此分配到同一个存储装置。在另一实施例中,网络设备100重新分配存储器访问令牌以进一步促进多个存储装置121之间的分组的随机分布,如本文所述。

在各种实施例中,多个存储装置121包括合适的非瞬态存储器设备,诸如ram或任何其他合适类型的存储器设备。在一些实施例中,多个存储装置121是高带宽共享分组存储器。在一些实施例和/或场景中,多个存储装置121由网络设备100的各端口共享,以用于存储根据调度或队列外出的分组,例如,当对应的目标出口端口拥塞时。在一个这样的场景中,要经由出口端口传送的分组被存储在多个存储装置121的对应的出口队列中,而另一分组由出口端口传送。在这种场景中,当以出口端口为目标的分组带宽大于出口端口所提供的带宽时,称出口端口为“拥塞的”。因此,并非所有针对给定出口端口的分组必然将在它们已经由分组处理器140处理之后立即被传送。在各种实施例中,多个存储装置121促进分组的复杂调度、速率限制或组装中的一个或多个。

在一些实施例中,网络设备100的两个或更多个端口被分组在一个或多个端口组内。在图1所示的实施例中,网络设备100包括端口组110、111和112。端口组110包括入口端口103、105、107和109,并且端口组111和112包括附加端口(未示出)。在各种实施例中,端口组的各端口共享到存储装置(例如,存储装置121)、存储器控制器(例如,存储器控制器125)或网络设备100的其他合适处理器(例如,处理器140)的一个或多个接口。在实施例中,端口组被配置为使得每个端口具有一个或多个相同的端口特性,例如,相同的最大传输速度(例如,1gbps、40gbps)。作为示例,端口组110的端口103、105、107和109中的每一个具有50gbps的最大传输速度。在另一实施例中,端口组被配置为具有聚合组特性,例如,聚合最大传输速度。作为示例,端口103、105、107和109分别具有20gbps、40gbps、40gbps和100gbps的最大传输速度,并且端口组110具有200gbps的聚合传输速度。在一些实施例中,两个或更多个端口或端口组共享朝向存储装置、存储器控制器或网络设备100的其他合适处理器的一个或多个入口接口。例如,在如图1所示的实施例中,端口组110、111和112共享到分组处理器140的入口接口。在另一实施例中,端口组110、111和112共享到存储器控制器125的入口接口。

在一些实施例中,网络设备100包括多个令牌组,例如,令牌组130、132、134和136(图1和图4)。换言之,多个端口和/或端口组被布置在令牌组中。在实施例中,令牌组是一组端口和/或端口组,其共享对应于实施例中的多个存储装置121的存储器访问令牌的池122。在图1和图4的实施例中,网络设备100包括四个令牌组130、132、134和136,并且利用对应于存储装置a,b,c,d和e的存储器访问令牌的四个相应的池122。在图1中,为清楚起见,仅示出了令牌组130的池122-1。在其他实施例中,网络设备100包括一个,两个,三个或更多个令牌组。

网络设备100包括至少一个令牌组存储器控制器125,以用于处理针对令牌组130的写入命令。在实施例中,网络设备100包括用于每个令牌组130、132、134和136的分离的令牌组存储器控制器(仅针对令牌组130的令牌组存储器控制器被示出)。在另一实施例中,令牌组130、132、134和136中的两个或更多个共享令牌组存储器控制器。在实施例中,令牌组存储器控制器125被配置为将单独的存储器访问令牌从存储器访问令牌的对应池122分配给端口和/或端口组中的数个端口和/或端口组。此外,在实施例中,令牌组存储器控制器125被配置为重新分配存储器访问令牌以改进多个存储装置121之间的分组的随机或非顺序分布。例如,重新分配存储器访问令牌防止端口在存储多个分组时独占相同的存储装置。在实施例中,令牌组存储器控制器125确保每个入口接口(例如,端口和/或端口组)具有至少一个分配的存储器访问令牌,以减少用于执行针对入口接口的写入命令的延迟。

在一些实施例中,多个存储装置121中的每一个是包括多个物理存储装置的逻辑存储装置。在实施例中,例如多个物理存储装置是单独且独立可访问的分离存储器芯片,并且逻辑存储装置作为单个存储装置被访问。在一些实施例中,逻辑存储装置的物理存储装置利用相同的地址空间来寻址,使得每个物理存储装置存储多字单元的字。在实施例中,例如,写入命令包括用于多字单元的数据部分,该多字单元具有与物理存储装置相同的字数。在该实施例中,存储多字单元在多个写入周期(例如,每周期存储一个字)上发生,并且单独的字由存储器旋转器123分布在物理存储装置上,如下所述。

在实施例中,多个存储装置被配置为使得单独的存储器访问令牌仅对多个物理存储装置中的一个物理存储装置(即,经由逻辑存储装置)提供写入访问,而剩余的物理存储装置对令牌组的成员可用。在该实施例中,逻辑存储装置被配置为处理来自多达相同数目的入口接口组(例如,令牌组)的同时写入命令,因为逻辑存储装置具有物理存储装置。在图1和图5所示的实施例中,逻辑存储装置a包括四个物理存储装置p1、p2、p3和p4中的多个,使得在实施例中,逻辑存储装置a可以处理多达四个同时写入命令。在实施例中,四个同时写入命令对应于存储器访问令牌的四个不同池的存储器访问令牌a的四个分离实例(例如,图4中所示的四个池122-1、122-2、122-3和122-4,每个包含存储器访问令牌a的一个实例)。换言之,多个存储装置121经由其存储器访问令牌的对应的池来支持四个令牌组,通过分配令牌来防止令牌组的成员之间的写入命令冲突,以及令牌组的“令牌持有者”之间的写入命令冲突通过经由逻辑存储装置的不同物理存储装置处理写入命令来防止。在实施例中,当单元在每个物理存储器中具有一个字时,则通过单个令牌组中的单个端口在4个连续写入周期中写入该单元。旋转器123每个写入周期将单个令牌组和物理存储器之间的连接旋转1,使得在4个写入周期期间将一个字写入到每个物理存储器。

在实施例中,网络设备100还包括一个或多个分组处理器140和一个或多个队列管理器170,其处理所接收的分组的一个或多个部分或表示该分组的其他合适的数据结构。在实施例中,网络设备100包括单个分组处理器140和单个队列管理器170,其处理针对网络设备100的所有端口的所接收的分组的部分。在另一实施例中(例如,如图1所示)网络设备100包括用于每个令牌组的一个分组处理器140和用于网络设备100的所有端口的单个队列管理器170。在其他实施例中,分组处理器140为一个或多个端口、端口组和/或令牌组处理分组。在一些实施例中,队列管理器170为一个或多个端口和/或端口组处理分组。

所接收的分组150一般包括报头151和有效负载152。在实施例中,分组处理器140标识将从其传送所接收的分组150的出口接口,并向队列管理器170提供所标识的出口接口的指示。在实施例中,分组处理器140从分组中提取分组报头并生成描述符155。在实施例中,描述符是表示对应分组并且被用于处理的数据单位。描述符与对应的分组分离,并且通常包含从对应分组中提取的报头信息以及表征对应分组的其他信息。在一些实施例中,分组处理器140包括用于处理所生成的描述符155以执行各种操作的一个或多个模块。一般,分组处理器140(例如,在实施例中,包括桥接引擎)处理描述符155,并访问各种路由、转发和/或其他被存储在查找存储器(未示出)中的合适的数据库,以为对应的分组执行转发操作。

分组处理器140包括用于处理分组的一个或多个有形/物理处理器引擎。在图1中所示的第一说明性实施例中,单个分组处理器140被示出。在实施例中,分组处理器140包括以asic管线配置所配置的一个或多个处理器引擎,其中引擎根据操作顺序执行一个或多个预定处理操作。在另一实施例中,分组处理器140包括至少一些引擎,其被配置为读取和执行存储在有形的、非瞬态的、计算机可读存储器(例如,ram,只读存储器(rom),flash存储器等)上的软件或固件指令。在又一实施例中,多个分组处理器引擎被配置为执行指令以基于处理上下文执行分组处理操作。在一些实施例中,软件或固件指令包括计算机可读指令,计算机可读指令在由(多个)处理器执行时,使得(多个)处理器执行本文描述的分组处理器140的各种动作中的任何动作。在一个这样的实施例中,各种组件被实现为相应的软件或固件模块,其中每个模块对应于由分组处理器140执行的指令。注意,图1所示的各种组件的视觉布置仅对应于操作的逻辑顺序而不是对应组件的物理位置。

在实施例中,在由分组处理器140处理之后,每个描述符155或代表该描述符的数据单位被发送到队列管理器170以被调度用于传输。在实施例中,队列管理器170维持对应于出口端口、分组流和/或其他合适目标的一个或多个出口队列(图1中未示出),以及用于要被提供给相应出口端口的分组的缓冲器描述符155。在一些实施例中,经由适当的出口端口,队列管理器170调度对应的分组以进行传输。在一个这样的实施例中,通过将排队的描述符155发送到与队列相关联的相应出口端口,以调度的顺序传送分组。在各种实施例中,队列包含具有指向多个存储装置121的指针的描述符155。在一些实施例中,队列管理器170将排队的描述符155发送到传送直接存储器访问设备(未示出),该传送直接存储器访问设备一般被配置为检索/读取存储在多个存储装置121中的分组,并将检索到的分组提供给网络设备100的对应出口端口。

使用被配置为如下所述操作的一个或多个集成电路(ic)来实现网络设备100。例如,可以在分离的ic上至少部分地实现端口103、105、107、109、113、115、117和119、存储装置121、存储器控制器125、分组处理器140和/或队列管理器170。作为另一示例,端口103、105、107、109、113、115、117和119的至少一部分、存储装置121、存储器控制器125、分组处理器140和/或队列管理器170可以在单个ic上被实现。

图2是根据实施例的用于网络设备100的示例存储器控制器200的框图。在实施例中,存储器控制器200对应于令牌组存储器控制器125。存储器控制器200被配置为针对来自两个或更多个入口接口的分组处理写入命令,这些分组将被存储在多个存储装置121中。在实施例中,存储器控制器200被配置为针对来自图1的端口组110、111和112的分组处理写入命令。

在实施例中,存储器控制器200包括用于每个入口接口的地址生成器和在入口接口之间分配和重新分配存储器访问令牌的令牌分配控制器230。在图2所示的实施例中,存储器控制器200包括分别对应于端口组110、111和112的地址生成器210、211和212。地址生成器210、211和212被配置为确定所保留的存储装置的存储器地址,在该存储器地址处存储在对应的入口接口处接收到的分组的至少一部分。所保留的存储装置由已分配给对应的入口接口的存储器访问令牌来标识。在实施例中,地址生成器210、211和/或212基于它们所分配的存储器访问令牌来随机地选择多个存储装置121中的所保留的存储装置。在一些实施例中,地址生成器210、211和/或212生成非顺序的、随机的或伪随机的存储器地址作为存储器地址。在实施例中,地址生成器210、211和/或212为所保留的存储装置从空闲地址列表中选择地址。地址生成器210、211和/或212生成写入命令,该写入命令包括从对应的入口接口接收的分组的至少一部分,并且标识i)所保留的存储装置,以及ii)存储器地址。

在实施例中,地址生成器210、211和212包括相应的令牌队列220,其存储已被分配给对应的入口接口的存储器访问令牌。在实施例中,令牌队列220是先进先出(fifo)队列。在一些实施例中,令牌队列220存储或表示所分配的存储器访问令牌或其他合适的数据结构的指示。换言之,整个令牌不必在地址生成器210、211和212之间传递。在实施例中,令牌分配控制器230提供一个或多个逻辑控制线,其标识已经分配了哪些存储器访问令牌,例如,对应于相应的逻辑存储装置a、b、c、d和e的5位的位图,其中值“1”指示针对对应的逻辑存储器访问单位的存储器访问令牌已被分配给入口接口,并且值“0”表示尚未被分配的存储器访问令牌。

在实施例中,地址生成器210、211和212包括活动存储器槽222,用于保护当前正在使用的存储器访问令牌,例如,在多字单元的写入周期期间。换言之,地址生成器“锁定”存储器访问令牌,同时多字单元被存储到由活动存储器槽222的存储器访问令牌标识的存储装置中。在图2所示的实施例中,对应于地址生成器210的第一入口接口正在写入逻辑存储装置a,以及对应于地址生成器211的第二入口接口正在写入到逻辑存储装置c。在一些实施例中,活动存储器槽222在令牌队列220的前置位置,并且在已经存储了单元之后,将存储器访问令牌放置在令牌队列220的后面。

在实施例中,令牌分配控制器230在端口组110、111、112之间分配和重新分配存储器地址令牌,以便在每个写入周期内为每个端口组分配存储器访问令牌。附加地,令牌分配控制器230确保每个存储器访问令牌被精确地分配给地址生成器210、211或212中的一个。这确保了写入命令不因丢失的存储器访问令牌而被延迟。在实施例中,令牌分配控制器230在预定数目的周期(例如,10个周期,20个周期或另一合适的数目)后重新分配存储器地址令牌。在另一实施例中,令牌分配控制器230在预定数目的写入命令之后(例如在已经执行了两个、三个或更多个写入命令之后)重新分配存储器地址令牌。在实施例中,令牌分配控制器230尽可能频繁地重新分配存储器访问令牌以改进用于写入命令的存储装置的随机性。

在实施例中,网络设备100配置有比每个令牌组的成员更多的逻辑存储装置。在图1和图2的实施例中,五个逻辑存储装置和针对三个入口接口的对应存储器访问令牌提供在任何时候都可以被重新分配的至少两个“浮动”或“空闲”存储器访问令牌。在实施例中,令牌分配控制器230将空闲存储器访问令牌从第一令牌队列随机地重新分配给第二令牌队列。在一些实施例中,令牌分配控制器230在令牌队列220的后面重新分配存储器访问令牌(例如,最近使用的存储器访问令牌)。在其他实施例中,令牌分配控制器230重新分配不在令牌队列220的前面的任何存储器访问令牌。在图2所示的实施例中,存储器访问令牌d、b和e是空闲的并且可用于重新分配。

在实施例中,地址生成器210、211和212生成写入命令并将写入命令提供给存储器控制器200的多路复用器240,在实施例中。在实施例中,多路复用器240将写入命令路由发送到对应的逻辑存储装置。在一些实施例中,一旦已经确定了存储器地址,地址生成器就配置所保留的存储装置的单元。

在图2所示的实施例中,存储器控制器200包括地址生成器210、211和212、令牌分配控制器230和多路复用器240。在一些其他实施例中,地址生成器210、211和212中的一个或多个位于对应的入口接口处。在实施例中,例如,地址生成器210位于端口组110处。

图3是根据实施例的网络设备100的示例逻辑存储装置a、b、c和d的框图。在图3所示的实施例中,多个逻辑存储装置a、b、c、d和e包括物理存储装置1至20,每个逻辑存储装置具有四个物理存储装置,其中每个物理存储装置具有独立的读取/写入端口。在该实施例中,单元包括存储在单个逻辑存储装置中的四个字。在实施例中,例如,每个物理存储装置具有256位宽的读取/写入端口、在逻辑存储装置的每个物理存储器中具有一个256位字的1024位的多字单元,并且因此用于写入命令的多字单元被存储在四个写入周期中。此外,每个逻辑存储装置具有四个独立的读取/写入端口。如图3所示,单元w作为分离的字w.0、w.1、w.2和w.3被存储在逻辑存储装置a中,单元x作为分离的字x.0、x.1、x.2、和x.3被存储在逻辑存储装置b中,依此类推。在一些实施例中,多字单元的前面的字(例如,w.0、x.0、y.0和z.0)被存储在相同逻辑存储装置的不同物理存储装置中,如以下关于图5所述。多字单元的后续字被循环地存储或以“循环”方式被存储在逻辑存储装置的剩余物理存储装置中。

图4是根据实施例的网络设备100的另一框图。在图4所示的实施例中,网络设备100包括多个存储装置121和图1的令牌组130、132、134和136。多个存储器存储单位121包括逻辑存储装置a、b、c、d和e,每个逻辑存储装置具有四个单独可访问的物理存储装置,如上关于图3所述。在该实施例中,每个逻辑存储装置具有四个读取/写入端口(例如,每个物理存储装置一个读取/写入端口)。在该实施例中,逻辑存储装置的每个读取/写入端口被保留用于特定令牌组,例如,为令牌组130保留第一读取/写入端口,为令牌组132保留第二读取/写入端口等等。用于令牌组的存储器控制器通过将存储器访问令牌分配给入口端口来管理对特定逻辑存储装置的写入访问。另外,存储器旋转器123通过在物理存储装置之间旋转令牌组来管理对特定逻辑存储装置内的特定物理存储装置的写入访问。换言之,存储器控制器防止令牌组的成员之间的存储器写入冲突,并且存储器旋转器123防止令牌组之间的存储器写入冲突。

图5是根据实施例的图4的逻辑存储装置a的框图。逻辑存储装置a包括存储器旋转器123、逻辑存储器控制器502和四个物理存储装置1、2、3和4。在该实施例中,物理存储装置1、2、3和4的每一个具有可以存储字的相应的第一地址位置530和相应的第二地址位置532,例如,物理存储装置1的第一地址位置530-1,物理存储装置2的第一地址位置530-2等。虽然为了清楚起见仅示出了两个地址位置,但在各种实施例中,物理存储装置包含许多地址位置。在实施例中,例如,物理存储装置具有512兆位(2^29位)的存储容量,具有256位字大小(2^8位),并因此包含2097152(2^21)个地址位置。在该实施例中,四个物理存储装置1至4各自存储1024位多字单元的256位字。

在实施例中,物理存储装置1、2、3和4被配置为循环缓冲器,并且存储器旋转器123被配置为在逻辑存储装置a的物理存储装置之间“旋转”。换言之,存储器旋转器123在一个场景中将多字单元的第一、第二、第三和第四字分别存储到物理存储器1、2、3和4,并且在另一场景中将第一、第二、第三和第四字分别存储到物理存储器3,4,1和2等。在实施例中,通过为前面的字选择物理存储装置以及存储物理存储装置包含前面的字的指示,逻辑存储器控制器520为多字单元控制物理存储装置的顺序。当为多字单元执行读取命令时,逻辑存储器控制器502控制存储器旋转器123开始从包含前面的字的所指示的物理存储装置读取。在各种实施例中,指示是标识物理存储装置的位模式,例如,两位的位模式可以指示多达四个物理存储装置(00、01、10和11),三位的位模式可以指示多达八个物理存储装置,依此类推。在实施例中,逻辑存储器控制器502随机地或伪随机地为前面的字选择物理存储装置。在另一实施例中,逻辑存储器控制器502基于从其接收到写入命令的令牌组或入口接口来选择物理存储装置(例如,令牌组130在物理存储装置1处开始,令牌组132在物理存储装置处开始)。

在图4和图5所示的实施例中,由逻辑存储装置a接收同时写入命令510和520,并且将写入命令的所接收的分组的部分存储为跨越物理存储装置1到4的相应多字单元。多字单元的每个字被存储在逻辑存储装置的不同物理存储装置中。如图5所示,令牌组130为要被存储在第一地址位置530中的单元w提供写入命令510。在实施例中,存储器旋转器123将多字单元w划分为四个单独的字(w.0、w.1、w.2和w.3)并将每个字写入到不同的物理存储装置。令牌组136为要被存储在第二地址位置532中的单元y提供写入命令520。在实施例中,存储器旋转器123将多字单元y划分为四个单独的字(y.0、y.1、y.2和y.3)并将每个字写入到不同的物理存储装置。

在实施例中,存储器旋转器123在单个写入周期期间存储多字单元的每个字,并且因此每个多字单元在四个连续写入周期的周期内被存储。对于每个写入命令,存储器旋转器123在写入周期期间仅利用一个物理存储装置,并且因此存储器旋转器123被配置为通过引导相同写入周期内的不同写入命令的字至不同的物理存储装置,来处理四个分离的写入命令(例如来自不同的令牌组)。

在图5所示的实施例中,存储器旋转器123将字w.0存储在物理存储器2的第一存储器地址位置530-2处,并且在第一写入周期期间同时将字y.0存储在物理存储器4的第二存储器地址位置532-4处。在随后的第二写入周期中,存储器旋转器123将字w.1存储在物理存储器3的第一存储器地址位置530-3处,并同时将字y.1存储在物理存储器1的第二存储器地址位置532-1处。在第三写入周期中,存储器旋转器123将字w.2存储在物理存储器4的第一存储器地址位置530-4处,并同时将字y.2存储在物理存储器2的第二存储器地址位置532-2处。在第四写入周期中,存储器旋转器123将字w.3存储在物理存储器1的第一存储器地址位置530-1处,并同时将字y.3存储在物理存储器3的第二存储器地址位置532-3处。在其他实施例中,存储器旋转器123存储来自令牌组130、132、134和/或136的一个、三个或四个同时写入命令的多字单元。在其他实施例中,逻辑存储装置a包括不同数目的物理存储装置,例如,八个物理存储装置,并且因此存储器旋转器123被配置为在八个写入周期内同时存储多达八个多字单元,每个写入周期多字单元具有跨越八个物理存储装置的八个字

在各种实施例中,网络设备100的逻辑存储装置从网络设备100的出口端口(例如,端口113,115,116,119)接收用于单元的读取命令。在实施例中,出口端口不是令牌组的成员,并且读取命令由每个物理存储装置以写入命令未使用的周期处理。在写入命令之间处理读取命令的情况下,对读取命令的数据响应具有随机(例如,统计)的延迟。在该实施例中,在等待逻辑存储装置处理读取命令时出口端口的延迟是无限制的,因为逻辑存储装置可以由入口端口连续写入。在一些场景中,当分组跨越不同逻辑数据单位的多个单元时,基于逻辑数据单位是否被入口接口写入,数据响应被乱序地提供。

在实施例中,存储器访问令牌池的每个存储器访问令牌对应于一组逻辑存储装置,例如,一组两个、三个或更多个逻辑存储装置。在该实施例中,入口接口仅写入该组逻辑存储装置中的一个逻辑存储装置,因此该组的剩余逻辑存储装置是空闲的并且可以执行读取命令。在实施例中,入口接口在该组逻辑存储装置的逻辑存储装置之间为写入命令交替,并且获得剩余逻辑存储装置上的读取操作的改进的性能。

在一些场景中,对应于写入命令的分组或其部分不填充整个单元。作为示例,在单元包括四个256位字的情况下,750位分组填充四字单元的三个字,因为前面三个字提供了768位的存储,留下剩余的第四字和剩余的第四周期。作为另一示例,在单元包括总共1024位的四个256位字的情况下,2400位分组占用两个完整单元(2×1024位),并且该分组的352位占用第三单元的两个字,留下剩余的第三和第四个字和剩余的第三和第四周期。在实施例中,逻辑存储装置被配置为在剩余周期期间执行读取命令。在一些场景中,在剩余周期期间执行读取命令使得写入访问优先于读取访问,这降低了传入分组拥塞的可能性,因为它们不会被读取访问延迟。

图6是图示了根据实施例的用于在与分组相对应的数据由分组处理器处理以至少确定网络设备的通过其传送分组的出口接口的同时,存储在网络设备的多个入口接口处接收到的分组的示例方法600的流程图。在实施例中,方法600由根据实施例的网络设备100实现。参考图1,在实施例中,方法600由存储器控制器200实现。

在实施例中,在框602处,将存储器访问令牌的第一池的单独存储器访问令牌选择性地分配给多个入口接口中的数个入口接口,以管理对多个存储装置的写入访问。多个入口接口之间的入口接口分别被分配至少一个存储器访问令牌,并且将分组写入到由对应的已分配的一个或多个存储器访问令牌标识的多个存储装置的存储装置。在图2所示的实施例中,例如,存储器控制器200将存储器访问令牌a和d分配给对应于地址生成器210的第一入口接口(端口组110),将存储器访问令牌c分配给对应于地址生成器211的第二入口接口(端口组111),并将存储器访问令牌b和e分配给对应于地址生成器212的第三入口接口(端口组112)。在实施例中,存储装置被保留用于对应的存储器访问令牌的持有者。

在实施例中,在框604处,在多个入口接口的第一入口接口处接收分组。

在一些实施例中,在框606处,确定存储分组的多个存储装置的所保留的存储装置的存储器地址。所保留的存储装置由被分配给入口接口的存储器访问令牌标识。在实施例中,例如,地址生成器210从分配的存储器访问令牌a和d中选择存储器访问令牌a,并确定对应的逻辑存储装置a的存储器地址,如以上关于图2所描述的。

在实施例中,在框608处,将分组或其一部分存储在所保留的存储装置的存储器地址处。在实施例中,例如,存储器控制器200将多字单元w存储在逻辑存储装置a中,如以上关于图5所描述的。

在一些实施例中,在框610处,在分组被存储之后,将存储器访问令牌重新分配给多个入口接口中的不同入口接口。例如,令牌分配控制器230将存储器访问令牌a重新分配给对应于地址生成器211的第二入口接口。

本发明的其他方面涉及以下条款中的一个或多个。

在实施例中,一种网络设备包括:多个入口接口;多个存储装置,被配置为在与在多个入口接口处接收到的分组相对应的数据由分组处理器处理以至少确定网络设备的通过其传送分组的出口接口的同时,存储分组;存储器访问令牌的第一池,与多个存储装置的相应存储装置相对应的存储器访问令牌的第一池中的数个存储器访问令牌和访问令牌中的数个访问令牌在第一池内是不同的;以及实现存储器控制器的一个或多个集成电路。一个或多个集成电路被配置为:选择性地将第一池的单独存储器访问令牌分配给多个入口接口中的数个入口接口,以管理对多个存储装置的写入访问,其中多个入口接口之中的入口接口分别被分配至少一个存储器访问令牌,并将分组写入到由对应的已分配的一个或多个存储器访问令牌标识的多个存储装置的存储装置。一个或多个集成电路被配置为:基于访问非顺序存储装置的写入访问方案,将来自多个入口接口的第一入口接口的第一池的第一存储器访问令牌重新分配给来自第一入口接口的连续写入命令之间的多个入口接口的第二入口接口。。

在其他实施例中,网络设备包括以下特征中的一个或多个的任何合适的组合。

一个或多个集成电路被配置为:保留多个存储装置中的存储装置并且确定所保留的存储装置的存储器地址,在所保留的存储装置处存储在分配了第一存储器访问令牌的第一入口接口处接收到的分组的至少一部分,其中所保留的存储装置由第一存储器访问令牌标识并且保留以用于由分配了第一存储器访问令牌的入口接口进行的写入命令。一个或多个集成电路被配置为生成写入命令,该写入命令包括所接收到的分组的至少一部分并且标识i)所保留的存储装置,以及ii)存储器地址。

多个入口接口包括多组入口接口。多个组中的数个组与存储器访问令牌的相应池相对应。存储器访问令牌的池中的数个存储器访问令牌与多个存储装置的相应存储装置相对应并且在对应池内是不同的。存储器控制器还被配置为仅在对应组的入口接口的入口接口之中重新分配存储器访问令牌的池中的存储器访问令牌。

多个存储装置中的每个存储装置被配置用于由入口接口进行的同时写入访问,对应池的存储器访问令牌中的对应的存储器访问令牌已被分配到该入口接口。

多个存储装置之中的相应存储装置是逻辑存储装置,该逻辑存储装置由入口接口作为单个存储装置访问。相应的逻辑存储装置包括各自独立可访问的多个物理存储装置。

存储器访问令牌的相应池中的每个池内的每个存储器访问令牌对应于多个逻辑存储装置中的逻辑存储装置。多个存储装置中的每个逻辑存储装置被配置为处理来自多达与每个逻辑存储装置具有的物理存储装置相同的数目的组的入口接口的同时写入命令。

一个或多个集成电路被配置为将所接收到的同时写入命令的分组的部分存储为跨越物理存储装置的相应多字单元。多字单元的每个字被存储到对应的逻辑存储装置的不同物理存储装置。

一个或多个集成电路被配置为在对应的逻辑存储装置的不同物理存储装置中存储同时写入命令的多字单元的相应的前面的字。

第一入口接口被配置为在对应的存储装置的写入命令正在进行的同时锁定第一存储器访问令牌以免重新分配。

一个或多个集成电路被配置为将多个存储器访问令牌分配给第一入口接口,并且其中来自第一入口接口的写入命令的所保留的存储装置被配置为在已分配的存储器访问令牌之间交替。

在另一实施例中,一种用于在与在网络设备的多个入口接口处接收到的分组相对应的数据由分组处理器处理以至少确定网络设备的通过其传送分组的出口接口的同时,存储分组的方法包括:由网络设备的存储器控制器选择性地将存储器访问令牌的第一池中的单独存储器访问令牌分配给多个入口接口中的数个入口接口,以管理对多个存储装置的写入访问,其中多个入口接口之中的入口接口分别被分配至少一个存储器访问令牌,并将分组写入到由对应的已分配的一个或多个存储器访问令牌标识的多个存储装置的存储装置;在多个入口接口的第一入口接口处接收分组;确定多个存储装置的所保留的存储装置的存储器地址,在所保留的存储装置处存储分组的至少一部分,其中所保留的存储装置由被分配给入口接口的存储器访问令牌识别;将分组的一部分存储在所保留的存储装置的存储器地址处;以及在分组的一部分已经被存储后,由存储器控制器将存储器访问令牌重新分配给多个入口接口的不同入口接口。

在其他实施例中,该方法包括以下特征中的一个或多个的任何合适组合。

存储分组包括生成写入命令,该写入命令包括分组的一部分并且标识i)所保留的存储装置,以及ii)存储器地址。

多个入口接口包括多组入口接口。多个组中的数个组与存储器访问令牌的相应池相对应。存储器访问令牌的池中的数个存储器访问令牌与多个存储装置的相应存储装置相对应并且在对应的池内是不同的。重新分配存储器访问令牌包括仅在对应组的入口接口的入口接口之中重新分配存储器访问令牌的相应池中的存储器访问令牌。

该方法还包括由不同的入口接口同时写入到多个存储装置的存储装置,与该存储装置相对应的存储器访问令牌已被分配到该入口接口。

多个存储装置中的每个存储装置是逻辑存储装置,该逻辑存储装置由入口接口作为单个存储装置访问。同时写入到存储装置包括:由不同的入口接口的每个入口接口同时写入到逻辑存储装置的相应的独立可访问的物理存储装置。

同时写入到逻辑存储装置包括:同时向来自多达与逻辑存储装置的物理存储装置相同的数目的组的入口接口的、向逻辑存储装置的同时写入命令。

同时写入到逻辑存储装置包括:将所接收到的分组的部分存储为跨越物理存储装置的相应多字单元,其中多字单元的每个字被存储到对应的逻辑存储装置的不同物理存储装置。

将所接收的分组的部分存储为相应的多字单元包括:将同时写入命令的多字单元的相应的前面的字存储在对应的逻辑存储装置的不同的物理存储装置中。

该方法还包括由第一入口接口在对应的存储装置的写入命令正在进行中的同时锁定第一存储器访问令牌以免重新分配。

该方法还包括将多个存储器访问令牌分配给第一入口接口。确定多个存储装置的所保留的存储装置的存储器地址包括在由多个存储器访问令牌标识的不同的所保留的存储装置之间交替。

可以利用硬件、执行固件指令的处理器、执行软件指令的处理器或其任何组合来实现上述各种块、操作和技术中的至少一些。当利用执行软件或固件指令的处理器实现时,软件或固件指令可以被存储在任何计算机可读存储器中,诸如在磁盘、光盘或其他存储介质上,在ram或rom或闪存、处理器、硬盘驱动器、光盘驱动器、磁带驱动器中。软件或固件指令可以包括机器可读指令,机器可读指令在由一个或多个处理器执行时使得一个或多个处理器执行各种动作。

当以硬件实现时,硬件可以包括分立组件、集成电路、专用集成电路(asic)、可编程逻辑器件(pld)等中的一个或多个。

尽管已经参考具体实施例描述了本发明,这些实施例仅旨在说明而不是对本发明的限制,可以对所公开的实施例进行改变、添加和/或删除而不脱离本发明的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1