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