具有寬寄存器組體系結構的分組處理器的製作方法
2023-06-01 00:59:21 2
專利名稱:具有寬寄存器組體系結構的分組處理器的製作方法
具有寬寄存器組體系結構的分組處理器
背景技術:
分組處理器被用在路由器、交換機、伺服器、個人計算機(PC)等中 以在諸如網際網路之類的分組交換網絡中處理和路由分組。分組處理器通常 需要調度對所接收到的分組的處理和在分組處理完成之後的分組輸出。分 組處理器所接收和發送的分組流量的類型和數量不斷地變化。因而,這些 調度操作對於公平且高效地處理分組來說至關重要。
在分組處理器中存在高效地實現分組調度的問題。基於硬體的方法可 以非常快速地操作,但是往往不靈活並且成本高。例如,可能需要整個專 用集成電路來用於分組調度操作。
對靈活的解決方案(例如無需對ASIC改版就可以改變其算法/功能的 方案)的需要強烈地促動著開發基於軟體的解決方案。但是,由於需要大 量的連續邏輯操作,使得用於調度操作的基於軟體的解決方案運行得非常 慢。
這些多方面的處理要求又由於用於分組調度的大型數據結構而變得更 加複雜。在一些軟體實現方式中,這些數據結構可能超過1000位寬。即
使利用可替代的調度結構(例如日曆),諸如調度狀態之類的項目對於分 組處理器中通常使用的寄存器來說仍然太寬。當然,在中央處理單元
(CPU)或者甚至是網絡處理單元(NPU)上,獲取、更新和存儲這種大 型數據結構的任務可能成本很高。
用在調度數據結構中的多個欄位也未與用在分組處理器中的寄存器堆 (register file)很好地對應。例如,這些不同的欄位可能不具有8、 16或 32位的位長。這迫使分組處理器執行許多數據排列和掩碼操作以準備調度 數據用於後續處理。
目前缺少的是提供運行速度比當前的軟體方案快很多而成本低於以前 的硬體方法的廉價又靈活的解決方案的中間的處理體系結構。本發明解決
了與現有技術相關聯的這個問題及其它問題。
發明內容
寬寄存器組(WRS)被用在分組處理器中以提高某些分組處理操作的 性能。WRS中的寄存器具有比用於主要的分組處理操作的主寄存器更寬的 位長。寬邏輯單元被配置為對寬寄存器組執行邏輯操作,並且在一種實現
方式中包括專門配置用於分組調度操作的硬體基元(primitive)。專用的 互鎖機構被額外用於協調多個處理器或線程對相同的寬寄存器地址位置的 訪問。
WRS產生比以前的硬體解決方案廉價得多並且具有比以前的軟體解決 方案更好的性能的調度引擎。WRS提供小型、緊湊、靈活和可縮放的調度 子系統,並且通過使用較廉價的存儲器同時與其它使用共享存儲器可以忍 受較長的存儲器延遲。結果得到了一種基於處理需求的新的分組處理體系 結構,其具有很寬範圍的成本/性能點。
根據下面參考附圖對本發明優選實施例的詳細描述,將更容易明白本 發明的前述和其它目的、特徵和優點。
圖l是包括寬寄存器組(WRS)的分組處理元件的框圖。 圖2是更詳細地示出WRS的框圖。
圖3是示出用在寬寄存器邏輯單元中的硬體基元的示例的框圖。
圖4是寬寄存器互鎖機構。
圖5是使用WRS的分組處理器的框圖。
具體實施例方式
圖1示出了用在多線程分組處理元件(PPE) 110中的寬寄存器組 (WRS) 12的框圖。WRS 12可以被用在需要處理正常寬度的數據和一定 量的較寬寬度的數據的任何處理設備中。WRS 12包括寬寄存器堆32,該 寬寄存器堆32包括每個都比主寄存器堆24中的寄存器寬的多個寬寄存器。
主寄存器堆24被用於PPE 110中最主要的操作,並且寬寄存器堆32 被用於訪問某些數據結構並執行不能在主寄存器堆24中被高效處理的特 定操作。WRS 12還包括寬算術邏輯單元(ALU) 34,其對不能被主ALU 26高效地執行的寬寄存器堆32中的內容進行寬邏輯操作。例如,寬ALU 34可以對寬寄存器堆32中的不同欄位或子欄位執行多個並行的邏輯操 作。
寬寄存器堆32中的寄存器通過按其本身的大小一次性讀取大型數據 結構,極大地減少了訪問主存儲器115的成本。寬ALU 34中的硬體基元 隨後可以對寬寄存器堆32中的條目執行操作,其處理成本是主ALU 26的 處理成本的幾分之一。WRS 12的這些特徵極大地提高了傳統的基於軟體 的分組處理系統的性能。
PPE 110包括操作多個線程52的中央處理單元(CPU)核心50。在這 個實施例中,每個線程52具有相關聯的數據緩存(DCACHE) 54,其包 括標籤和緩存控制器54A,並且共享DCACHE數據陣列54B。線程52還 共享相同的指令緩存(ICACHE) 56。其它緩存配置也是可能的,其中線 程52都訪問相同的DCACHE 54,或者每個線程具有單獨的ICACHE 56。 DCACHE 54和ICACHE 56都可以通過資源互連108訪問主存儲器115和 全局分組存儲器(GPM) 104。
在一個實施例中,ICACHE 56也可以通過L-2緩存112訪問主存儲器 115,並且DCACHE 54可以直接訪問主存儲器115。當然,其它存儲器配 置也是可能的,其中DCACHE 54通過L-2緩存112訪問主存儲器115, 或者ICACHE 56直接訪問主存儲器115。
圖2更詳細地示出了 WRS 12。在一個示例中,主寄存器堆24包括32 X32位寬的寄存器,並且寬寄存器堆32包括16X512位寬的寄存器。但 是,這只是一個示例,並且可以使用任意數目或具有任何位長的寄存器。
線程52 (圖1)之一根據優選地每個線程的程序計數器18來啟動指 令獲取14。依照指令獲取14,來自ICACHE 56的指令被CPU核心50 (圖1)解碼、排隊並分派到指令隊列22中。解碼後的指令21和相關聯
的線程標識符23隨後被用於控制主寄存器堆24或寬寄存器堆32中的操作。
根據解碼後的指令21,主ALU 26可以針對主寄存器堆24中的數據 或指令產生地址、執行支路解析等。主寄存器堆24中的內容可以經數據 緩存54通過線路30從主存儲器115載入,或者可以來自指令隊列22。可 替代地,主寄存器可以直接從主存儲器115載入。來自主ALU 26的結果 隨後被經數據緩存54輸出到主存儲器115,或者被發送回主寄存器堆24 以進一步處理。
被發送給寬WRS 12的解碼後的指令21被用於控制對寬寄存器堆32 中的內容執行的邏輯操作。WRS 12可以一次性將整個寬數據結構31從主 存儲器115讀到寬寄存器堆32中。寬寄存器緩存35可以可選地被提供用 於緩存來自主存儲器115 (圖1)的數據。寬ALU 34處理寬寄存器堆32 中的內容,並且隨後將結果發送到主存儲器115或者發送回寬寄存器堆32 以進一步處理。寬ALU 34包括可以被用於加快特定的分組處理操作(例 如調度)的專用的硬體基元。
數據路徑25被提供在主寄存器堆24和寬ALU 34之間。這允許寬 ALU 34將來自WRS 12中的寬寄存器操作的結果發送給主寄存器堆24以 完成可以由主ALU 26高效地處理的某些判決、排列、掩碼任務等。數據 路徑25還允許主寄存器堆24中的內容(或者其部分內容)被移到寬寄存 器堆32的一部分中。
圖2中的不同元件可以針對由圖1中的PPE 110操作的每個線程52進 行複製。例如,存在與每個線程52相關聯的一個或多個寬寄存器32A-32N。每個寬寄存器32A-32N具有欄位33,該欄位33包含用於相關聯的 線程52的線程標識符。也可以存在針對每個線程52的單獨的程序計數器 18、指令隊列22、數據緩存54和主寄存器堆24。其它元件(例如 ICACHE 56、主ALU 26、寬ALU 34和寬寄存器緩存35)可以被由同一 PPE 110操作的所有線程52共享。當然,存在可以針對不同的分組處理應 用而變化的設計選擇。分組調度
用於調度分組的控制結構可能非常大且複雜。例如,最小速率、最大 速率和過大速率可能與不同的分組流相關聯。每個分組可以具有用於確定 分組處理器的操作順序的這些和其它相關聯的參數,例如時間戳、優先級 欄位等。每當分組被調度算法所選擇時,所有這些狀態信息都要被更新。 如果分組處理器使用基於分層樹的調度算法,則在每次分組選擇之後,這 個控制結構必須針對樹結構中的每一層被更新。自然地,這些調度操作是 處理密集型的。
WRS 12可以被配置為高效地處理這些處理密集的調度操作中的一
些。另外,寬寄存器堆32允許調度數據結構中不同的大小不固定的欄位 同時從主存儲器115被載入相同的寬寄存器堆32中。這樣就不需要單獨 地順序將大小不固定的數據載入主寄存器堆24中並且隨後將空值填入未 使用的寄存器位中。寬ALU 34隨後可以比主ALU 26更快速地對被載入 寬寄存器堆32中的數據結構進行操作。寬ALU 34可以對這些調度任務進 行操作,同時使用主ALU 26並行地執行其它分組處理任務。
還應當注意,包含WRS 12的PPE 110或使用WRS 12進行諸如調度 之類的操作的其它處理器配置可以不同於用於其它主要分組處理的其它 PPE 110。調度PPE IIO或使用WRS 12的其它調度處理器配置可以具有不 同的結構、到主存儲器115的不同路徑,或者可以使用不同於用於主要分 組處理的PPE 110的主存儲器。WRS 12可以與需要寬寄存器操作的主分 組處理器或調度處理器中的任一個結合使用。
硬體基元
圖3示出了可以實現在寬ALU 34中以加快調度操作的硬體基元中的 一些的一個示例。寬寄存器堆32中的寬寄存器32A可以加載有調度數據 結構的一部分,該調度數據結構具有與不同類型的調度數據相關聯的多個 欄位60。在該示例中,每個欄位60與存儲在分組處理器中的調度隊列中 的不同分組相關聯。可以存在任意數目N的欄位60。欄位60中的值被用 在調度算法中以確定接下來由線程52處理哪些分組或者接下來調度哪些
分組以在網絡130 (圖5)上傳送。
在該示例中,欄位60分別包括關鍵字/類型子欄位62和時間戳子欄位 64。子欄位62或64中的值在調度操作期間可能需要被分類以確定進行處 理或從分組處理器輸出的下一個分組。關鍵字子欄位62可以標識相關聯 的分組的類別。例如,關鍵字子欄位62可以標識高優先級分組,低優先 級分組或針對特定群組的最小速率分組條目等。時間戳子欄位64可以與 分組已被排隊在分組處理器中的相對時間量相關聯。
在該示例中,在關鍵字欄位62中具有最小值的分組可以比具有較大 關鍵字值的分組具有更高的調度優先級。在時間戳子欄位64中具有最小 值的分組可以比在時間戳子欄位64中具有較大值的分組具有更高的調度 地位。在該示例中,時間戳子欄位64和關鍵字子欄位62中的值的組合被 用於確定進行調度操作的下一個相關聯的分組。
寬ALU 34中的邏輯基元65包括識別關鍵字子欄位62中的最小關鍵 字值的比較器66。另一比較器68識別時間戳子欄位64中的最小時間戳 值。控制邏輯70根據從比較器66接收的最小關鍵字值和從比較器68接收 的最小時間戳值確定欄位60之一中的獲勝關鍵字和時間戳的組合。控制 邏輯70經被連接到每個關鍵字子欄位62和時間戳子欄位64的多路復用器 72選擇獲勝的關鍵字/時間戳對。類似地,控制邏輯70經多路復用器74選 擇與被選擇的關鍵字和時間戳值71相關聯的索引73。
然後,獲勝的關鍵字和時間戳值71與相關聯的索引值73 —起可以由 寬ALU 34發送回寬寄存器堆32以進一步更新或者進行進一步的調度判 決。注意,來自寬ALU34的結果71和73也可以被發送給主寄存器堆24 以進一步處理。這允許可以在主寄存器堆24中由主ALU 26高效處理的特 定操作與WRS 12所執行的寬寄存器操作相互混合。這進而給調度操作增 加了硬體和軟體的靈活性。
在一個典型的操作中,主ALU 26和主寄存器堆24被用於尋址存儲器 以找到主寄存器堆24和寬寄存器堆32。當主ALU 26和主寄存器堆24是 最佳的存儲器尋址操作時,這可能會更加有效。
分類基元65提供存儲在寬寄存器32A中的分類數據結構中的分類、
更新等所需要的邏輯功能。寬寄存器32A的較大位長允許所有不同的欄位
60和子欄位62和64—次性地從主存儲器115中更高效地讀取。例如,關 鍵字子欄位62中的值可以是5位寬的,而時間戳子欄位64中的值可以是 14位寬的。所有這些不同的子欄位可以同時被載入寬寄存器32A中,而不 需要每個欄位被單獨載入例如32位寬的主寄存器堆24中,並且隨後被掩 碼並移位以適應5位或14位。
當然,這只是一個示例,並且其它邏輯基元65也可以被包括在寬 ALU 34中。例如,寬ALU 34也可以包括移位操作78,其可以被用於加 快對寬寄存器32A中的數據結構中的不同欄位的更新。寬ALU 34中的其 它基元可以包括速率更新基元,其根據相關聯分組的大小和數據速率來更 新時間戳值。其它插入和提取基元可以被用於從主寄存器堆24中提取任 意邊界上的數據並將該數據插入寬寄存器堆32中的不同欄位中。例如, 插入和提取基元命令可以包括以下命令
INSERT MainReg 3 =〉 WideReg 2[17:48];
EXTRACT WideReg 7[13:19] =〉 MainReg 12 插入命令將32位主寄存器3的內容載入寬寄存器2中的比特位置17:48 內。提取命令將寬寄存器7中的比特位置13:19的內容載入主寄存器12的 最低七位比特位置中。
如上所述,需要少量計算的操作可以仍由主ALU26來執行。這提供 了改變某些調度操作所必需的靈活性,同時仍然可加快WRS 12中的處理 以用於強力基元操作。寬ALU 34中的硬體基元被優選地設計為普通的, 並且不強加任何處理算法。
例如,在圖3的WRS 12中實現的分類基元可以固定用於被分類的每 個條目的類型/關鍵字子欄位62和時間戳子欄位64的大小,但是不限定類 型/關鍵字子欄位62的意義或管理時間戳更新的規則。固定時間戳子欄位 64的大小隻決定了速率準確性、粒度和範圍這些不可能隨時間有很大改變 的參數。可以使子欄位62和64足夠大以適應所預期的和將來的使用。
寬寄存器互鎖
可能需要防止多個線程同時訪問相同的寬寄存器數據結構。例如,分
組處理器不能使兩個入隊(enqueue)(或者甚至是入隊和出隊 (dequeue))同時更新相同的調度條目。對於大多數情況,CPU核心50 (圖1)對數據結構進行操作所需要的時間很短,並且主存儲器115的延
遲很大。因而,也可能需要使得線程能夠訪問寬寄存器32中先前被另一
線程所使用的數據結構,而不需要等待另一線程將內容載回到主存儲器
115中。
WRS 12可以可選地維護互鎖系統,互鎖系統跟蹤主存儲器115中的 當前在寬寄存器堆32中被特定線程使用的地址。向主存儲器115的寬寄 存器讀取可以被"鎖定"(放入記分板)或不被鎖定(允許多線程讀 取)。如果第二線程52試圖讀取被鎖定的地址位置,則向主存儲器115 的讀取被抑制並且相反地被添加到鏈路-列表表格中。
當第一線程52寫回主存儲器地址時,數據可以被直接發送到與第二 等待線程52相關聯的寬寄存器32。這可以停止試圖讀取已被使用的寬寄 存器存儲器地址的任何線程,但是一旦第一線程釋放該地址,就將使等待 線程得到寬寄存器的更新後的內容。這可以提供比等待主存儲器115更短 的延遲,並且允許針對不同CPU核心50的操作並行地進行並且只根據需 要進行阻斷。
圖4示出了互鎖機構如何結合WRS 12使用以進一步提高處理效率。 寬寄存器堆內容可尋址存儲器(WRF CAM) 80包含用於主存儲器115 (圖1)中當前在寬寄存器堆32中被使用的數據的地址。在一種實現方式 中,對於每個寬寄存器32, CAM 80中存在可用的一個條目。如果例如每 個線程有16個寬寄存器,則CAM 80將具有的條目數是線程數的16倍。 當然,這只是一個示例,也可以使用其它配置。
CAM 80中的每個條目存儲特定的寬寄存器32可能擁有(鎖定)的主 存儲器地址。例如,寬寄存器讀操作81首先訪問CAM 80。如果在CAM 80中沒有找到讀操作81中的寬寄存器地址,則與讀操作81相關聯的線程 52將數據返回到與該線程相關聯的寬寄存器32。例如,每個寬寄存器32 可具有相關聯的線程標識符33 (圖2)。從主存儲器115讀取的內容被存
儲在與發起讀操作81的線程52相對應的寬寄存器堆32中。
線程52通過將用於讀操作81的地址輸入到CAM 80中未被使用的條 目來建立鎖定數據結構。然後,索引表格84被用於將CAM 80所產生的 命中索引映射到與當前使用該地址的寄存器/線程相關聯的鏈路-列表表格 86中的條目。
更詳細地說,第一寬寄存器/線程X可能當前正在訪問主存儲器115 中的特定地址一l。另一寬寄存器/線程Y可能試圖訪問主存儲器115中的 相同地址—1。第一寬寄存器/線程X先前將地址J輸入到CAM80的條目3 中。當寄存器/線程Y試圖讀取地址—1時,在CAM 80的條目3中發生匹 配。CAM80將命中索引83輸出到索引表格84。
索引表格84的輸出85指向當前寄存器/線程X所擁有的鏈路-列表表 格86中的條目91。第二寬寄存器/線程Y將指針PTR—Y輸入到鏈路-列表 表格86中的條目91的下一欄位87。指針PTR—Y指向寬寄存器/線程Y所 擁有的鏈路-列表表格86中的條目93。在完成了對地址—1的處理之後,寬 寄存器/線程X可以改變索引表格84以使命中索引83指向寄存器/線程Y 的鏈路-列表表格86中的條目93。這表明寄存器/線程Y目前"擁有"存 儲器地址一l。 一旦寬寄存器/線程X釋放了對地址—1的控制,寬寄存器/線 程Y就可以自由地將寬寄存器X的內容拷貝到寬寄存器Y中。
第三寬寄存器/線程Z可能在寄存器/線程X仍然擁有地址一1時試圖訪 問相同地址—1 。寬寄存器/線程Z將看到鏈路-列表表格86中已經被寄存器 /線程條目Y所佔據的條目91的下一欄位87。因此,寬寄存器/線程Z將 相關聯的指針PTR一Z輸入條目91的尾欄位88中,並且將相同的指針 PTR一Z輸入到條目93的下一欄位87中。對於訪問相同地址—1的每個額外 的寬寄存器/線程,重複上述過程。
使用與表格84和86相映射的第二級索引提供了更快的指針更新,而 無需修改CAM 80中的條目。例如,在寬寄存器/線程X結束使用地址一l 之後,索引表格84中針對命中索引83的指針PTR—X可以被變為指向 PTR—Y。鏈路-列表表格86目前被更新,將地址—1的所有者變為寬寄存器/ 線程Y,而無需修改CAM80的內容。這提供了更快的互鎖更新,因為訪
問CAM80相對較慢。
圖5示出了實現WRS 12的多線程分組處理器100的一個示例。分組 101被分組處理器100接收,並且通常經多路復用器102存儲在全局分組 存儲器(GPM) 104中。在接收到分組之後,GPM 104建立相關聯的分組 句柄數據結構,並且隨後將分組加入到由鎖定管理器和重定序器120操作 的流鎖定隊列中。在接收到來自鎖定管理器120的回覆之後,GPM 104指 示分發器106將分組101分配到分組處理元件(PPE) 110。
PPE 110通過資源互連108處理GPM 104中的分組。PPE 110也可以 使用第2級(L2)緩存112、動態隨機訪問存儲器(DRAM)控制項114和 查找控制項116來訪問外部存儲器115。外部的三重內容可尋址存儲器 (TCAM ) 119也可以由PPE 110通過資源互連108和TCAM控制器118 來訪問。在一個實施例中,PPE110是多線程的。但是,下面所描述的一 些特徵可以用具有或不具有多線程能力的任何普通的處理單元來執行。
PPE 110在它們已經完成了處理分組時通知鎖定管理器120。 PPE 110 隨後可自由地開始處理其它分組。在被PPE 110處理之後,分組繼續留在 GPM 104中,並且可以以離散的不相鄰的形式存儲在GPM 104中。匯集 機構122負責將分組離散的部分重新匯集和組裝在一起。鎖定管理器120 與匯集機構122 —起工作來確定被組裝的分組123從GPM 104發送的最終 順序。
在以上示例中,PPE 110可以使用WRS 12執行緩衝、排隊和調度操 作中的一些或全部。但是在替代實施例中,緩衝、排隊、調度(BQS)存 儲器控制器124對分組進行排隊、調度和使分組出隊,從而使PPE110不 用負擔這個耗時的任務。在該替代實施例中,BQS 124可以具有類似於圖 1中的上述PPE但不同於用於正常分組處理的分組處理元件110的經修改 的PPE。在另一實施例中,BQS 124可以只具有如上所述採用WRS 12的 一個或多個CPU核心50 (圖l)。
外部存儲器125被BQS 124用作分組緩衝器,用於存儲不同的到達和 主處理操作之間的分組等等。再循環路徑132被BQS 124用於將分組重新 循環回GPM 104以由PPE IIO進一步處理。可替代地,WRS 12可以被實
現在BQS 124中。
圖1中所示的PPE 110的通用多線程體系結構包括如圖2中所示的一 組主通用寄存器和接在主寄存器組的一側上的專用寬寄存器組12。提供指 令以將正常寬度的數據片段(例如具有任意排列的32位長)移到寬寄存 器和通用寄存器之間。在替代實施例中,BQS 124可以包含利用寬寄存器 組12來執行某些調度任務的一個或多個CPU核心50。
提供了用於對寬寄存器進行專用硬體輔助操作的指令,例如將去往/來 自主存儲器115的寬寄存器載入並存儲在寬位長單元中的專用存儲器訪問 指令。注意,整個寬寄存器不一定都被使用。圖4中的上述跟蹤邏輯可以 被用於指示寬寄存器的哪些部分是"髒的"(修改過的)並且需要被寫回 到主存儲器115中。
提供對主存儲器115的非常寬的訪問(例如一次訪問16位元組或32字 節的緩存線)的存儲器系統在很大程度上輔助了寬寄存器組12。對存儲器 的並行訪問允許多個突出(outstanding)操作。可選地,圖2中所示的寬 寄存器緩存35允許更快地獲得被頻繁訪問的寬寄存器位置。這對於高速 調度來說是有用的,因為它們的數據具有較低的延遲,導致用於處理它們 的重複速率較低。
就晶片面積而言,WRS體系結構12使用了分組處理器100的晶片面 積中的很小一部分。其足夠小以使得調度子系統可以被結合在很多地方。 最後,因為可以使用廉價/較慢的"體"存儲器(例如DRAM),所以對 這種體系結構的可縮放能力的限制很少。只有對基於存儲器的延遲和並行 調度可以被使用的程度的性能的限制。
WRS 12可以被用於實現和提高几乎任何調度算法的性能,包括曰 歷、分類樹、令牌桶、分層排隊構架(HQF)、模塊化QoS CLI (MQC)、優先級傳播等。寬寄存器可以實現用於分層調度器的硬體分類 輔助或用於更傳統的基於網際網路作業系統(IOS)日曆的方法的日曆輔 助。可以實現各種其它硬體輔助,例如速率更新。存在很多備用方式來構 建寬寄存器自身以及寬寄存器緩存35。
各種其它硬體輔助,例如控制分組緩衝器的直接存儲器訪問(DAM)
讀/寫的能力,使得同一微引擎處理入隊/出隊過程以及調度過程。寬寄存 器組12的寬度和對它們進行操作的硬體基元的細節可以針對特定的實現 方式進行裁剪。實現方式不必是多線程的,或者多線程可以用各種方式實 現。
上述系統可以使用執行一些或全部操作的專用處理器系統、微控制 器、可編程邏輯器件或微處理器。上述操作中的一些可以用軟體來實現, 並且其它操作可以用硬體來實現。
為了方便,操作被描述為各個互相連接的功能塊或者不同的軟體模 塊。但是,這不是必需的,並且可能存在這些功能塊或模塊被等同地匯集 到沒有清楚邊界的單一邏輯器件、程序或操作中的情形。在任何情況下, 靈活接口的功能塊和軟體模塊或特徵都可以在硬體或軟體中由其自身實現 或者結合其它操作來實現。
己經在本發明的優選實施例中描述並示出了本發明的原理,應當清楚 在不脫離這些原理的情況下,可以在布置和細節方面修改本發明。申請人 要求所有的修改和改變都落在所附權利要求書的精神和範圍內。
權利要求
1.一種寬寄存器處理單元,包括寬寄存器組,所述寬寄存器組被配置為響應於指令並且包含具有比主寄存器組中所支持的位長更寬的位長的數據;以及寬處理單元,所述寬處理單元被配置為對所述寬寄存器組中的內容執行邏輯操作,並且與用於處理所述主寄存器組中的內容的主處理單元相獨立地操作。
2. 根據權利要求1所述的處理單元,包括指令隊列,該指令隊列選擇性地將解碼後的指令發送給所述寬寄存器組和所述主寄存器組。
3. 根據權利要求1所述的處理單元,其中所述寬寄存器組包括具有 不同的相關聯的線程標識符的各個寬寄存器。
4. 根據權利要求1所述的處理單元,其中來自所述主寄存器組的輸 出被耦合到所述主處理單元和所述寬處理單元,並且所述寬處理單元的輸 出被耦合到所述主寄存器組和所述寬寄存器組。
5. 根據權利要求4所述的處理單元,包括被耦合在主存儲器和所述 寬寄存器組之間的寬寄存器緩存。
6. 根據權利要求1所述的處理單元,包括中央處理核心,該中央處 理核心通過多個不同的線程控制所述主寄存器組和所述寬寄存器組。
7. 根據權利要求1所述的處理單元,其中所述寬寄存器組中的寬寄 存器包括多個欄位,這些欄位包含與不同的相關聯分組相關聯的值。
8. 根據權利要求7所述的處理單元,其中所述多個欄位各自包含子 欄位,這些子欄位用來存儲用於執行分組調度操作的分組標識符和分組時 間戳。
9. 根據權利要求8所述的處理單元,其中所述寬處理單元包括邏輯 處理元件,這些邏輯處理元件並行地操作以對所述子欄位中的分組標識符 和分組時間戳分類。
10. 根據權利要求1所述的處理單元,包括互鎖機構,該互鎖機構提 供對不同線程和相關聯的寬寄存器所使用的相同存儲器位置的有序的排他 訪問。
11. 根據權利要求IO所述的處理單元,其中所述互鎖機構包括內容可尋址存儲器(CAM),該內容可尋址存儲器包含當前正被所述線程和所述相關聯的寬寄存器訪問的地址。
12. —種用於在分組處理器中執行寬寄存器堆操作的方法,包括 向主寄存器組發送與第一組主邏輯操作相關聯的指令,以使用主邏輯單元處理數據;以及向寬寄存器組發送與第二組寬位長的邏輯操作相關聯的指令,以使用 寬邏輯單元進行處理。
13. 根據權利要求12所述的方法,包括與所述指令一起發送線程標識符以標識所述寬寄存器組中的特定寄存器。
14. 根據權利要求12所述的方法,包括利用所述寬邏輯單元並行地 處理所述寬寄存器中的不同欄位。
15. 根據權利要求12所述的方法,使用寬寄存器緩存來存儲被所述 寬寄存器組或所述寬邏輯單元訪問的數據。
16. 根據權利要求12所述的方法,包括 標識第一線程和第一相關聯的寬寄存器當前使用的地址; 禁止所有其它線程使用相同的地址;以及在所述第一線程完成了對所述相關聯的第一寬寄存器中的內容的處理 之後,允許其它線程和其它相關聯的寬寄存器訪問所述地址。
17. 根據權利要求16所述的方法,包括使用連結-列表表格來標識等 待訪問所述相同地址的多個線程,並且在當前線程完成了對所述相同地址 的訪問之後更新所述連結-列表表格以指向所述等待線程中的下一個線程。
18. 根據權利要求12所述的方法,包括 操作分組處理元件中的多個線程以處理分組; 執行調度所述分組的處理和輸出的調度操作;向所述寬寄存器組發送與所述調度操作相關聯的指令和數據;以及 將來自所述寬寄存器組的結果發送到所述主寄存器組以完成所述調度 操作。
19. 一種網絡處理設備,包括操作處理分組的一個或多個線程的一個或多個處理元件;被所述線程用來對所述分組執行主要的邏輯操作的主寄存器組和主算 術單元;以及具有比所述主寄存器組更寬的位長的寬寄存器組和用於對包含在所述 寬寄存器組中的數據執行第二組操作的寬算術單元。
20. 根據權利要求19所述的網絡處理設備,包括使用所述寬寄存器組和所述寬算術單元來執行用於確定接下來由所述網絡處理設備處理或傳 送哪些分組的調度操作。
21. 根據權利要求19所述的網絡處理設備,包括互鎖機構,該互鎖機構控制不同線程對與所述寬寄存器組中的數據相關聯的相同地址的訪 問。
22. —種用於在分組處理器中執行寬寄存器堆操作的系統,包括用於向主寄存器組發送與第一組主邏輯操作相關聯的指令以使用主邏輯單元處理數據的裝置;以及用於向寬寄存器組發送與第二組寬位長的邏輯操作相關聯的指令以使 用寬邏輯單元進行處理的裝置。
23. 根據權利要求22所述的系統,包括用於標識第一線程和第一相關聯的寬寄存器當前使用的地址的裝置; 用於禁止所有其它線程使用相同地址的裝置;以及 用於在所述第一線程完成了對所述相關聯的第一寬寄存器中的內容的 處理之後允許其它線程和其它相關聯的寬寄存器訪問所述地址的裝置。
全文摘要
寬寄存器組(WRS)被用在分組處理器中以提高某些分組處理操作的性能。WRS中的寄存器具有比用於主要的分組處理操作的主寄存器更寬的位長。寬邏輯單元被配置為對寬寄存器組執行邏輯操作,並且在一種實現方式中,包括專門配置用於分組調度操作的硬體基元。專用的互鎖機構被額外用於協調多個處理器或線程對相同的寬寄存器地址位置的訪問。WRS產生比以前的硬體解決方案廉價得多並且具有比以前的軟體解決方案更好的性能的調度引擎。WRS提供小型、緊湊、靈活和可縮放的調度子系統,並且通過使用較廉價的存儲器同時與其它使用共享存儲器可以忍受較長的存儲器延遲。結果得到了一種基於期望的調度需求的新的分組處理體系結構,其具有很寬範圍的成本/性能點。
文檔編號G06F15/00GK101194245SQ200680004055
公開日2008年6月4日 申請日期2006年2月14日 優先權日2005年3月2日
發明者厄爾·T·科亨 申請人:思科技術公司