網絡設備中的存儲器共享的制作方法
【專利說明】網絡設備中的存儲器共享
[0001]相關申請的交叉引用
[0002]本公開要求2012年12月20日提交的名稱為“Centralized Memory Sharing ina Mult1-Processing Unit Switch”的美國臨時專利申請N0.61/740,286的權益,因此其通過引用方式整體并入于此。
技術領域
[0003]本公開總體上涉及允許多個處理器設備訪問共享存儲器的相應部分的處理系統,并且更具體地,涉及采用這樣的處理系統來處理分組的諸如交換機、橋接器、路由器等之類的網絡設備。
【背景技術】
[0004]本文中提供的【背景技術】描述是用于總體上給出本公開的上下文的目的。在其被描述在這一【背景技術】部分的程度上,當前提名的發明人的工作以及在提交時可能無法以其他方式有資格作為現有技術的描述的方面既不明確地也不暗示地被承認為抵觸本公開的現有技術。
[0005]諸如網絡交換機、橋接器、路由器等之類的一些網絡設備采用多個分組處理元件來同時處理多個分組,以提供高的吞吐量。例如,網絡設備可以利用并行分組處理,其中多個分組處理元件同時且并行地執行對不同分組的處理。在其它網絡設備中,流水線架構采用順序布置的分組處理元件,使得流水線中的不同分組處理元件可以在給定時間處理不同分組。
【發明內容】
[0006]在一個實施例中,網絡設備包括被配置為執行分組處理功能的多個處理器設備。網絡設備還包括共享存儲器系統,共享存儲器系統包括多個存儲器塊,每個存儲器塊對應于共享存儲器系統的相應部分,并且每個存儲器塊具有小于共享存儲器系統的總尺寸的相應尺寸。網絡設備進一步包括存儲器連接性網絡和配置單元,存儲器連接性網絡用于將多個處理器設備耦合到共享存儲器系統,配置單元用于配置存儲器連接性網絡,使得向多個處理器設備之中的處理器設備提供對多個存儲器塊之中的存儲器塊的相應集的訪問。
[0007]在另一實施例中,方法包括確定網絡設備的多個處理器設備的存儲器要求,多個處理器設備用于執行針對從網絡接收的分組的分組處理功能。方法還包括在網絡設備中,基于確定的相應處理器設備的存儲器要求,向多個處理器設備之中的處理器設備指派共享存儲器系統的存儲器塊,每個存儲器塊對應于共享存儲器系統的相應部分,并且每個存儲器塊具有小于共享存儲器系統的總尺寸的相應尺寸。另外,方法包括在網絡設備中,配置將多個處理器設備耦合到共享存儲器系統的存儲器連接性網絡,使得向多個處理器設備之中的處理器設備提供對多個存儲器塊之中的存儲器塊的相應指派集的訪問。
【附圖說明】
[0008]圖1是根據實施例的允許多個處理器設備訪問共享存儲器的相應部分的示例網絡設備的框圖。
[0009]圖2A是根據實施例的通過圖1的網絡設備利用的示例分級Clos網絡的圖。
[0010]圖2B是根據實施例的在圖2A的分級Clos網絡中利用的Benes網絡的圖。
[0011]圖2C是根據實施例的在圖2A的分級Clos網絡中和在圖2B的Benes網絡中利用的另一 Benes網絡的圖。
[0012]圖3是根據實施例的通過圖1的網絡設備利用的存儲器超級塊的圖。
[0013]圖4是根據實施例的用于初始化圖1的網絡設備的共享存儲器系統的示例方法的流程圖。
[0014]圖5是根據實施例的允許多個處理器設備訪問共享存儲器的相應部分的另一示例網絡設備的框圖。
[0015]圖6是根據實施例的允許多個處理器設備訪問共享存儲器的相應部分的另一示例網絡設備的框圖。
【具體實施方式】
[0016]圖1是根據實施例的允許多個處理器設備訪問共享存儲器的相應部分的示例網絡設備100的簡化框圖。網絡設備100通常是連接兩個或更多計算機系統、網絡分段、子網等的計算機聯網設備。例如,在一個實施例中,網絡設備100是交換機。然而,注意,網絡設備100不一定限于特定協議層或特定聯網技術(例如以太網)。例如,在其它實施例中,網絡設備100是橋接器、路由器、VPN集中器等。
[0017]網絡設備100包括網絡處理器(或分組處理器)102,并且網絡處理器102轉而包括多個分組處理元件(PPE)或分組處理節點(PPN) 104、以及多個外部處理引擎106、以及耦合在PPE 104和外部處理引擎106之間的處理控制器(為了簡化附圖未示出)。在實施例中,處理控制器許可PPE 104向外部處理引擎106卸載處理任務。
[0018]網絡設備100還包括耦合到網絡處理器102的多個網絡端口 112,并且網絡端口112中的每個網絡端口經由相應通信鏈路耦合到通信網絡和/或通信網絡內的另一適合網絡設備。一般來說,網絡處理器102被配置為處理經由進入端口 112接收的分組,以確定分組將要經由其發射的相應外出端口 112,并且以使得分組經由所確定的外出端口 112被發射。在一些實施例中,網絡處理器102處理與分組相關聯的分組描述符,而不是處理分組本身。在實施例中,分組描述符包括來自分組的一些信息,諸如分組的報頭信息的一些或全部,和/或包括由網絡設備100針對分組生成的信息。在一些實施例中,分組描述符也包括其它信息,諸如分組存儲在與網絡設備100相關聯的存儲器中何處的指示符。為了便于解釋,術語“分組”在本文中用于指代分組本身或者與分組相關聯的分組描述符。進一步地,如本文中使用的,術語“分組處理元件(PPE) ”和術語“分組處理節點(PPN) ”可交換地用于指代被配置為針對網絡設備100接收的分組執行分組處理操作的處理單元。
[0019]在實施例中,網絡處理器102被配置為向可用PPE 104分布經由端口 112接收的分組的處理。在實施例中,PPE 104被配置為并發地、并行地執行相應分組的處理,并且每個PPE 104通常被配置為針對分組執行至少兩個不同的處理操作。根據實施例,PPE 104被配置為使用非瞬態存儲器(未示出)中存儲的計算機可讀指令來處理分組,并且每個PPE104被配置為執行分組的所有必要處理(運行至完成處理)。另一方面,在實施例中,外部處理引擎106使用一個或多個專用集成電路(ASIC)或其它硬件部件來實現,并且每個外部處理引擎106致力于執行單個、通常處理密集的操作。只是作為示例,在示例實施例中,第一外部處理引擎106(例如引擎106a)是轉發查找引擎,第二外部處理引擎106(例如引擎106b)是策略查找引擎,第三外部處理引擎106(例如引擎106x)是循環冗余校驗(CRC)計算引擎等。
[0020]在分組的處理期間,PPE 104被配置為選擇性地接合外部處理引擎106以用于執行針對分組的特定處理操作。在至少一些實施例中,PPE 104被配置為執行與外部處理引擎106被配置為執行的特定處理操作不同的處理操作。例如,在各種實施例中,PPE 104執行資源較不密集的操作,諸如提取分組中(例如,分組報頭中)包含的信息、執行針對分組的計算、基于來自未由PPE 104執行的查找操作的結果來修改分組報頭等。在至少一些實施例和/或情景中,外部處理引擎106被配置為執行的特定處理操作通常是高度資源密集的,和/或如果使用諸如PPE 104之類的更一般化的處理器來執行操作,則將會需要相對較長的時間來執行。例如,在各種實施例中,引擎106被配置為執行以下操作:諸如使用由PPE104提取的報頭數據執行轉發數據庫(FDB)中的查找、使用由PPE 104提取的IP地址并且基于LPM表來執行最長前綴匹配(LPM)操作等。在至少一些實施例和情景中,PPE 104執行外部處理引擎106被配置為執行的處理操作將花費顯著更長的時間例如,兩倍長、十倍長、100倍長等)。正因如此,在至少一些實施例和/或情景中,外部處理引擎106通過加速PPE104將花費長時間來執行的至少一些處理操作,來輔助PPE 104。據此,外部處理引擎106有時在本文中被稱為“加速器引擎”。在實施例中,PPE 104被配置為利用由外部處理引擎106執行的處理操作的結果,以用于分組的進一步處理,例如以確定諸如轉發動作、策略控制動作等之類的關于分組將要采取的某些動作。例如,在實施例中,PPE 104使用通過引擎106的FDB查找的結果來指示分組將要被轉發到的特定端口。作為另一示例,在實施例中,PPE 104使用通過引擎106的LPM查找的結果來改變分組中的下一跳地址。
[0021]外部處理引擎106利用其包括多個存儲器塊114(有時在本文中被稱為“超級塊”)的共享存儲器系統110。在一些實施例中,外部處理引擎106中的至少一些中的每個外部處理引擎被指派共享存儲器系統110中的一個或多個存儲器塊114的相應集。作為說明性示例,外部處理引擎106a被指派存儲器塊114a,而外部處理引擎106b被指派存儲器塊114b和存儲器塊114c (未示出)。在一些實施例中,存儲器塊114的指派對于外部處理引擎106的至少一部分是透明的。例如,在一些實施例中,從外部處理引擎106的至少一部分的立場來看,可能顯得外部處理引擎106具有專用存儲器,而不是僅僅共享存儲器的特定部分。
[0022]外部處理引擎106經由存儲器連接性網絡118通信地耦合到共享存儲器系統110。在一些實施例中,存儲器連接性網