利用卸載處理器的上下文切換的制作方法
【專(zhuān)利摘要】公開(kāi)了上下文切換高速緩存系統(tǒng),其可包括:多個(gè)卸載處理器,它們被連接到存儲(chǔ)器總線(xiàn),每一個(gè)卸載處理器具有帶有相關(guān)聯(lián)的高速緩存狀態(tài)的高速緩存;上下文存儲(chǔ)器,其被耦合到卸載處理器;以及調(diào)度電路,其配置為用于在卸載處理器中的至少一個(gè)卸載處理器與上下文存儲(chǔ)器之間引導(dǎo)高速緩存狀態(tài)的轉(zhuǎn)移。
【專(zhuān)利說(shuō)明】
利用卸載處理器的上下文切換
技術(shù)領(lǐng)域
[0001] 所述實(shí)施例涉及計(jì)算機(jī)系統(tǒng)的確定性的上下文切換,該計(jì)算機(jī)系統(tǒng)包括具有卸載 處理器的連接存儲(chǔ)器總線(xiàn)的模塊。
【背景技術(shù)】
[0002] 上下文切換(有時(shí)稱(chēng)為進(jìn)程切換或任務(wù)切換)是將處理器從對(duì)一個(gè)進(jìn)程或線(xiàn)程的 執(zhí)行切換到對(duì)另一進(jìn)程或線(xiàn)程的執(zhí)行。在上下文切換期間,將進(jìn)程的狀態(tài)(上下文)存儲(chǔ)在 存儲(chǔ)器中,使得稍后可從該相同點(diǎn)恢復(fù)執(zhí)行。這使得多個(gè)進(jìn)程能夠共享單個(gè)處理器并支持 多任務(wù)操作系統(tǒng)。通常,進(jìn)程是可并行地運(yùn)行并可與其父進(jìn)程共享地址空間(即,存儲(chǔ)器位 置的范圍)和其他資源的程序的執(zhí)行或運(yùn)行實(shí)例。上下文一般包括在指定時(shí)刻的處理器的 寄存器和程序計(jì)數(shù)器的內(nèi)容。操作系統(tǒng)可掛起第一進(jìn)程的執(zhí)行并將該進(jìn)程的上下文存儲(chǔ)在 存儲(chǔ)器中,而隨后從存儲(chǔ)器檢索第二進(jìn)程的上下文并在該處理器的寄存器中還原它。在終 止或掛起第二進(jìn)程之后,可重新加載第一進(jìn)程的上下文,從而恢復(fù)第一進(jìn)程的執(zhí)行。
[0003] 然而,上下文切換是計(jì)算密集型的。上下文切換可能需要可觀的處理器時(shí)間,對(duì)于 每秒數(shù)千次上下文切換中的每一次,其可能是納秒級(jí)的。由于現(xiàn)代處理器能處理數(shù)百或數(shù) 千個(gè)單獨(dú)的進(jìn)程,因此,專(zhuān)用于上下文切換的時(shí)間可代表系統(tǒng)在處理器時(shí)間方面的實(shí)質(zhì)成 本。改進(jìn)的上下文切換方法和系統(tǒng)可大大地改善總系統(tǒng)性能,并降低對(duì)服務(wù)器或其他數(shù)據(jù) 處理系統(tǒng)的硬件和功率要求。
【發(fā)明內(nèi)容】
[0004] 本公開(kāi)描述了適用于系統(tǒng)中處理器的上下文切換的系統(tǒng)、硬件和方法的諸實(shí)施 例。諸實(shí)施例可包括多個(gè)卸載處理器,每一個(gè)卸載處理器都連接到存儲(chǔ)器總線(xiàn),并且相應(yīng)的 卸載處理器各自具有帶有相關(guān)聯(lián)的高速緩存狀態(tài)的相關(guān)聯(lián)的高速緩存。可通過(guò)存儲(chǔ)器總線(xiàn) 將低等待時(shí)間存儲(chǔ)器連接到多個(gè)卸載處理器;并且調(diào)度電路可用于引導(dǎo)將高速緩存狀態(tài)從 相應(yīng)卸載處理器中的至少一個(gè)卸載處理器存儲(chǔ)到低等待時(shí)間存儲(chǔ)器中,以及用于稍后在存 儲(chǔ)器總線(xiàn)上引導(dǎo)將該高速緩存狀態(tài)轉(zhuǎn)移到相應(yīng)卸載處理器中的至少一個(gè)卸載處理器。在某 些實(shí)施例(包括與使用ARM架構(gòu)處理器相關(guān)聯(lián)的那些實(shí)施例)中,多個(gè)卸載處理器可具有用 于以提高的速度來(lái)訪問(wèn)高速緩存狀態(tài)的加速器一致性端口。在其他實(shí)施例中,常用模塊可 支持卸載處理器、低等待時(shí)間存儲(chǔ)器和調(diào)度電路,并且通過(guò)經(jīng)存儲(chǔ)器插槽(socket)調(diào)解的 連接來(lái)提供對(duì)外部網(wǎng)絡(luò)分組的訪問(wèn),經(jīng)存儲(chǔ)器插槽調(diào)解的連接包括但不限于雙列直插存儲(chǔ) 器模塊(DIMM)插槽。
[0005] 在一些實(shí)施例中,相關(guān)聯(lián)的高速緩存狀態(tài)包括以下中的至少一項(xiàng):被保存在寄存 器保存區(qū)中的處理器寄存器的狀態(tài)、正在被執(zhí)行的流水線(xiàn)中的指令、棧指針和程序計(jì)數(shù)器、 等待由會(huì)話(huà)執(zhí)行的預(yù)取指令和數(shù)據(jù)、以及被寫(xiě)入到高速緩存中的數(shù)據(jù)。該系統(tǒng)還可包括在 多個(gè)卸載處理器中的至少一個(gè)卸載處理器上運(yùn)行的操作系統(tǒng)(〇S) AS與調(diào)度電路可協(xié)作以 建立在高速緩存中物理上連續(xù)的會(huì)話(huà)上下文。在會(huì)話(huà)初始化后,可將會(huì)話(huà)顏色、尺寸和起始 物理地址傳遞到調(diào)度器電路,并且存儲(chǔ)器分配器用來(lái)確定每一個(gè)會(huì)話(huà)的起始地址、高速緩 存中可允許的會(huì)話(huà)的數(shù)量以及對(duì)于給定顏色的可發(fā)現(xiàn)會(huì)話(huà)的位置的數(shù)量。
[0006] 根據(jù)實(shí)施例,可將由多個(gè)卸載處理器中的一個(gè)卸載處理器存儲(chǔ)的高速緩存狀態(tài)轉(zhuǎn) 移到另一卸載處理器。在特定應(yīng)用中,這可允許調(diào)度電路通過(guò)以下操作對(duì)在存儲(chǔ)器總線(xiàn)上 接收到的第一隊(duì)列中的網(wǎng)絡(luò)分組的處理排定優(yōu)先級(jí):停止與多個(gè)卸載處理器中的一個(gè)卸載 處理器相關(guān)聯(lián)的第一會(huì)話(huà);存儲(chǔ)相關(guān)聯(lián)的高速緩存狀態(tài);以及發(fā)起對(duì)被保持在第二隊(duì)列中 的網(wǎng)絡(luò)分組的處理。
[0007] 實(shí)施例還可包括用于多個(gè)卸載處理器的上下文切換的方法,每一個(gè)卸載處理器具 有帶有相關(guān)聯(lián)的高速緩存狀態(tài)的相關(guān)聯(lián)的高速緩存,并且使用低等待時(shí)間存儲(chǔ)器,該低等 待時(shí)間存儲(chǔ)器通過(guò)存儲(chǔ)器總線(xiàn)被連接到多個(gè)卸載處理器。該方法包括:使用調(diào)度電路,經(jīng)由 從相應(yīng)的卸載處理器中的至少一個(gè)卸載處理器進(jìn)入低等待時(shí)間存儲(chǔ)器中的批量讀取來(lái)引 導(dǎo)高速緩存狀態(tài)的存儲(chǔ),并且任何虛擬和物理存儲(chǔ)器位置被對(duì)齊。隨后,在該存儲(chǔ)器總線(xiàn) 上,引導(dǎo)將該高速緩存狀態(tài)轉(zhuǎn)移到相應(yīng)的卸載處理器中的至少一個(gè)卸載處理器以進(jìn)行處 理,該轉(zhuǎn)移受調(diào)度電路的控制。至于先前所述的結(jié)構(gòu)實(shí)施例,常用模塊可支持卸載處理器、 低等待時(shí)間存儲(chǔ)器和調(diào)度電路,并且通過(guò)DIMM或其他存儲(chǔ)器插槽連接來(lái)提供對(duì)外部網(wǎng)絡(luò)分 組的訪問(wèn)。
【附圖說(shuō)明】
[0008] 圖1-0示出根據(jù)實(shí)施例的具有上下文切換的系統(tǒng)。
[0009] 圖1-1是示出在不具有著色(coloring)的物理索引的高速緩存中的頁(yè)面沖突的 圖。
[0010] 圖1-2示出虛擬索引的高速緩存。
[0011] 圖1-3示出根據(jù)實(shí)施例的虛擬/物理對(duì)齊的高速緩存。
[0012] 圖2-0到2-3示出根據(jù)各實(shí)施例的處理器模塊。
[0013] 圖2-4示出常規(guī)的雙列直插(dual-in-line)存儲(chǔ)器模塊。
[0014]圖2-5描述根據(jù)另一實(shí)施例的系統(tǒng)。
[0015] 圖3示出根據(jù)一個(gè)實(shí)施例的具有存儲(chǔ)器總線(xiàn)連接的卸載處理器模塊的系統(tǒng),該模 塊具有上下文切換能力。
[0016] 圖4是示出根據(jù)一個(gè)特定實(shí)施例的上下文切換操作的流程圖。
【具體實(shí)施方式】
[0017] 現(xiàn)在將參照多個(gè)附圖詳細(xì)描述各實(shí)施例。實(shí)施例示出用于在被連接到系統(tǒng)存儲(chǔ)器 總線(xiàn)的卸載處理器中切換上下文的模塊、系統(tǒng)和方法。此類(lèi)卸載處理器可增加到被連接到 系統(tǒng)存儲(chǔ)器總線(xiàn)的任何主機(jī)處理器,并且可獨(dú)立于任何主機(jī)處理器對(duì)在系統(tǒng)存儲(chǔ)器總線(xiàn)上 被轉(zhuǎn)移的數(shù)據(jù)進(jìn)行操作。在特定實(shí)施例中,卸載處理器可具有對(duì)低等待時(shí)間存儲(chǔ)器的訪問(wèn) 權(quán),該低等待時(shí)間存儲(chǔ)器可允許對(duì)上下文數(shù)據(jù)的迅速的存儲(chǔ)和檢索以進(jìn)行迅速的上下文切 換。在非常特定的實(shí)施例中,處理模塊可填充用于將直插式(in-1 ine)存儲(chǔ)器模塊(例如,雙 列直插存儲(chǔ)器模塊(DIMM))連接到系統(tǒng)存儲(chǔ)器總線(xiàn)的物理插槽。
[0018] 圖1-0示出根據(jù)一個(gè)實(shí)施例的系統(tǒng)100。系統(tǒng)100可包括一個(gè)或多個(gè)卸載處理器 118、調(diào)度器116和上下文存儲(chǔ)器120。卸載處理器118可包括協(xié)同高速緩存存儲(chǔ)器一起操作 的一個(gè)或多個(gè)處理器核。在上下文切換操作中,可將卸載處理器118的第一處理任務(wù)的上下 文存儲(chǔ)在上下文存儲(chǔ)器120中,并且卸載處理器118隨后可進(jìn)行新處理任務(wù)。隨后,可將所存 儲(chǔ)的上下文從上下文存儲(chǔ)器120還原到卸載處理器118,并且卸載處理器118可恢復(fù)該第一 處理任務(wù)。在特定實(shí)施例中,上下文數(shù)據(jù)的存儲(chǔ)與還原可包括在卸載處理器118的高速緩存 與上下文存儲(chǔ)器120之間的數(shù)據(jù)轉(zhuǎn)移。
[0019] 調(diào)度器116可基于接收到的處理請(qǐng)求來(lái)協(xié)調(diào)卸載處理器118的上下文切換。相應(yīng) 地,調(diào)度器116可被通知或可訪問(wèn)卸載處理器118的狀態(tài)以及該卸載處理器118的上下文數(shù) 據(jù)的位置。上下文數(shù)據(jù)位置可包括處理器高速緩存中的位置以及上下文存儲(chǔ)器120中的位 置。調(diào)度器116也可跟蹤卸載處理器118的狀態(tài),或可用卸載處理器118的狀態(tài)來(lái)更新調(diào)度器 116〇
[0020] 從上文中可理解,上下文存儲(chǔ)器120可存儲(chǔ)卸載處理器118的上下文數(shù)據(jù)供后續(xù)的 檢索。上下文存儲(chǔ)器120可與卸載處理器的高速緩存存儲(chǔ)器分開(kāi)。在一些實(shí)施例中,上下文 存儲(chǔ)器120相比系統(tǒng)中的其他存儲(chǔ)器可以是低等待時(shí)間存儲(chǔ)器,以便允許迅速的上下文存 儲(chǔ)和檢索。在一些實(shí)施例中,上下文存儲(chǔ)器120可存儲(chǔ)除上下文數(shù)據(jù)之外的數(shù)據(jù)。
[0021] 在所示的特定實(shí)施例中,卸載處理器118、調(diào)度器116和上下文存儲(chǔ)器120可以是被 連接到存儲(chǔ)器總線(xiàn)124的模塊122的部分??稍诖鎯?chǔ)器總線(xiàn)124上接收數(shù)據(jù)和處理任務(wù),用于 由卸載處理器118執(zhí)行。在一些實(shí)施例中,在卸載處理器118與上下文存儲(chǔ)器120之間的上下 文數(shù)據(jù)的轉(zhuǎn)移可發(fā)生在存儲(chǔ)器總線(xiàn)124上。然而,在其他實(shí)施例中,此類(lèi)轉(zhuǎn)移可發(fā)生在模塊 122上的不同的數(shù)據(jù)路徑上。
[0022] 仍然參考圖1-0,在所示的非常特定的實(shí)施例中,方法可進(jìn)一步包括第二交換機(jī) 114、存儲(chǔ)器控制器112、主機(jī)處理器110、輸入/輸出(I/O)結(jié)構(gòu)(fabric) 118和第一交換機(jī) 106。可將第二交換機(jī)114包括在模塊122上。圖1-0的特定系統(tǒng)100針對(duì)網(wǎng)絡(luò)分組處理調(diào)度和 通信量管理,但是可以理解,其他實(shí)施例可包括針對(duì)其他類(lèi)型的處理任務(wù)的本文中所述的 上下文切換操作或等效操作。
[0023] 在圖1-0的特定實(shí)施例中,第一交換機(jī)106可接收和/或傳送來(lái)自數(shù)據(jù)源102的數(shù)據(jù) 分組104。數(shù)據(jù)源102可以是分組數(shù)據(jù)的任何合適的源,包括因特網(wǎng)、網(wǎng)絡(luò)云、交互或內(nèi)部數(shù) 據(jù)中心網(wǎng)、群集計(jì)算機(jī)、機(jī)柜系統(tǒng)、多個(gè)或單個(gè)的服務(wù)器或個(gè)人計(jì)算機(jī)等。數(shù)據(jù)可以是基于 分組或交換機(jī)的,但是在特定實(shí)施例中,為了易于處理,一般將非分組數(shù)據(jù)轉(zhuǎn)換或封裝為分 組。數(shù)據(jù)分組通常具有某些特性,包括傳輸協(xié)議號(hào)、源和目的地端口號(hào),或源和目的地(網(wǎng)際 協(xié)議)IP地址。數(shù)據(jù)分組可進(jìn)一步具有有助于分組分類(lèi)和管理的相關(guān)聯(lián)的元數(shù)據(jù)。
[0024] 交換機(jī)106可以是虛擬交換機(jī)(I/O設(shè)備)。交換機(jī)106可包括但不限于與外圍組件 互連(PCI)兼容的設(shè)備和/或PCI快速(PCIe)設(shè)備,它們經(jīng)由PCI或PCIe總線(xiàn)107與主機(jī)主板 連接。交換機(jī)106可包括網(wǎng)絡(luò)接口控制器(NIC)、主機(jī)總線(xiàn)適配器、聚合網(wǎng)絡(luò)適配器或交換或 異步傳輸模式(ATM)網(wǎng)絡(luò)接口。在一些實(shí)施例中,交換機(jī)106可采用10虛擬化方案,諸如,用 于使單網(wǎng)絡(luò)I/O設(shè)備表現(xiàn)為多個(gè)設(shè)備的單根I/O虛擬化(SR-I0V)接口。SR-I0V通過(guò)提供物理 控制和虛擬功能兩者來(lái)許可對(duì)各種PCIe硬件功能之間的資源的單獨(dú)訪問(wèn)。在某些實(shí)施例 中,交換機(jī)106可支持開(kāi)放流或類(lèi)似的軟件定義的聯(lián)網(wǎng)以脫離控制平面進(jìn)行抽象。第一虛擬 交換機(jī)的控制平面執(zhí)行諸如路由確定、目標(biāo)節(jié)點(diǎn)標(biāo)識(shí)等的功能。
[0025]交換機(jī)106能夠檢查網(wǎng)絡(luò)分組,并使用其控制平面來(lái)創(chuàng)建用于網(wǎng)絡(luò)分組的合適的 輸出端口?;趯?duì)網(wǎng)絡(luò)分組或與這些網(wǎng)絡(luò)分組相關(guān)聯(lián)的數(shù)據(jù)流的路由計(jì)算,交換機(jī)106的轉(zhuǎn) 發(fā)平面可將分組轉(zhuǎn)移到輸出接口??蓪⒔粨Q機(jī)的輸出接口與10總線(xiàn)連接,并且在某些實(shí)施 例中,交換機(jī)106可具有直接地(或經(jīng)由I/O結(jié)構(gòu)108間接地)將網(wǎng)絡(luò)分組轉(zhuǎn)移到存儲(chǔ)器總線(xiàn) 互聯(lián)109的能力以供存儲(chǔ)器讀取或?qū)懭氩僮?直接存儲(chǔ)器訪問(wèn)操作)。從功能上而言,對(duì)于某 些應(yīng)用,可基于控制平面功能分派網(wǎng)絡(luò)分組用于傳輸?shù)教囟ǖ拇鎯?chǔ)器位置。
[0026] 也可將被連接到10結(jié)構(gòu)108和存儲(chǔ)器總線(xiàn)互連109的交換機(jī)106連接到主機(jī)處理器 110。 主機(jī)處理器110可包括能提供計(jì)算服務(wù)的一個(gè)或多個(gè)主機(jī)處理器,其包括供應(yīng)代理 111。 供應(yīng)代理111可以是在主機(jī)處理器110上運(yùn)行的操作系統(tǒng)或用戶(hù)代碼的部分。供應(yīng)代理 111通常初始化由系統(tǒng)100提供的虛擬功能驅(qū)動(dòng)器并與之交互。虛擬功能驅(qū)動(dòng)器可負(fù)責(zé)提供 其中需要直接存儲(chǔ)器尋址(DMA)的存儲(chǔ)器空間的虛擬地址。可將映射至物理地址的虛擬地 址分配給每一個(gè)設(shè)備驅(qū)動(dòng)器。可使用設(shè)備模型來(lái)創(chuàng)建對(duì)主機(jī)處理器110的物理設(shè)備的仿真 以識(shí)別可被創(chuàng)建的多個(gè)虛擬功能(VF)中的每一個(gè)。可將設(shè)備模型復(fù)制多次以給予VF驅(qū)動(dòng)器 (與虛擬10設(shè)備交互的驅(qū)動(dòng)器)它們正在與物理設(shè)備交互的印象。例如,可使用某個(gè)設(shè)備模 型來(lái)仿真VF驅(qū)動(dòng)器可采取動(dòng)作以連接的網(wǎng)絡(luò)適配器。設(shè)備模型和VF驅(qū)動(dòng)器能以特權(quán)模式或 非特權(quán)模式運(yùn)行。關(guān)于哪個(gè)設(shè)備主管/運(yùn)行對(duì)應(yīng)于設(shè)備模型和VF驅(qū)動(dòng)器的代碼可能沒(méi)有限 制。然而,代碼可具有創(chuàng)建設(shè)備模型和VF驅(qū)動(dòng)器的多個(gè)副本的能力以使所述I/O接口的多個(gè) 副本能夠被創(chuàng)建。在某些實(shí)施例中,操作系統(tǒng)還能夠創(chuàng)建用于由VF驅(qū)動(dòng)器支持的應(yīng)用的所 定義的物理地址空間。此外,主機(jī)操作系統(tǒng)可將虛擬存儲(chǔ)器地址空間分配給應(yīng)用或供應(yīng)代 理。供應(yīng)代理111可與主機(jī)操作系統(tǒng)進(jìn)行調(diào)解以創(chuàng)建虛擬地址與可用的物理地址空間的子 集之間的映射。供應(yīng)代理111可負(fù)責(zé)創(chuàng)建每一個(gè)VF驅(qū)動(dòng)器并將所定義的虛擬地址空間分配 給它。
[0027]也可使用存儲(chǔ)器總線(xiàn)109將第二虛擬交換機(jī)114連接到存儲(chǔ)器控制器112。第二虛 擬交換機(jī)114往返于卸載處理器118接收并交換來(lái)源于存儲(chǔ)器總線(xiàn)109的通信量。通信量可 包括但不限于經(jīng)過(guò)由卸載處理器118支持的處理的、去往由供應(yīng)代理111創(chuàng)建并分派的虛擬 設(shè)備的數(shù)據(jù)流。第二虛擬交換機(jī)的轉(zhuǎn)發(fā)平面將分組從存儲(chǔ)器總線(xiàn)109傳輸?shù)叫遁d處理器 118,或從卸載處理器118往回傳輸?shù)酱鎯?chǔ)器總線(xiàn)109上。對(duì)于某些應(yīng)用,所描述的系統(tǒng)架構(gòu) 允許網(wǎng)絡(luò)分組到卸載處理器118的相對(duì)直接的傳遞,并對(duì)主機(jī)處理器110具有最小的中斷或 沒(méi)有中斷。在基于所定義的仲裁和調(diào)度方案進(jìn)行的向不同的硬件調(diào)度器的分配之前,第二 虛擬交換機(jī)114能夠接收分組并對(duì)它們分類(lèi)。硬件調(diào)度器116接收可被分派到流會(huì)話(huà)的分 組,這些流會(huì)話(huà)經(jīng)調(diào)度以便在一個(gè)或多個(gè)分開(kāi)的會(huì)話(huà)中進(jìn)行處理。
[0028]調(diào)度器116可控制供由卸載處理器118執(zhí)行的處理任務(wù),包括對(duì)上下文的切換。在 一些實(shí)施例中,可由調(diào)度器116使用在存儲(chǔ)器總線(xiàn)124上接收到的數(shù)據(jù)內(nèi)所包括的元數(shù)據(jù) (或從此類(lèi)數(shù)據(jù)中導(dǎo)出的元數(shù)據(jù))來(lái)調(diào)度/切換卸載處理器118的任務(wù)。然而,也構(gòu)想了經(jīng)由 存儲(chǔ)器總線(xiàn)接收到的命令或標(biāo)記來(lái)對(duì)調(diào)度器進(jìn)行的基于命令的控制。
[0029]在圖1-0的特定實(shí)施例中,可采用調(diào)度器116來(lái)實(shí)現(xiàn)對(duì)傳入分組的通信量管理。可 將來(lái)自某個(gè)源的、關(guān)于某個(gè)通信量類(lèi)別的、涉及特定應(yīng)用的或流向某個(gè)插槽的分組稱(chēng)為會(huì) 話(huà)流的部分,并且可使用會(huì)話(huà)元數(shù)據(jù)對(duì)其分類(lèi)。會(huì)話(huà)元數(shù)據(jù)通常充當(dāng)準(zhǔn)則,通過(guò)該準(zhǔn)則,可 排定分組的優(yōu)先級(jí)并由此可基于它們的會(huì)話(huà)元數(shù)據(jù)來(lái)對(duì)傳入分組重排序。對(duì)分組的該重排 序可發(fā)生在一個(gè)或多個(gè)緩沖器中,并可修改這些流的通信量形狀??蓪⒒跁?huì)話(huà)元數(shù)據(jù)重 排序的會(huì)話(huà)分組發(fā)送到使用仲裁電路(未示出)而被向外仲裁到輸出端口的特定的經(jīng)通信 量管理的隊(duì)列。仲裁電路可直接將這些分組流饋送到下游分組處理/終止資源。某些實(shí)施例 提供線(xiàn)程和隊(duì)列管理的整合以便增強(qiáng)下游資源通過(guò)上述線(xiàn)程處理終止網(wǎng)絡(luò)數(shù)據(jù)的吞吐量。
[0030] 仍然參考圖1-0,到達(dá)調(diào)度器116的數(shù)據(jù)也可以是等待在卸載處理器118處被終止 的分組數(shù)據(jù),或者它可以是等待被處理、修改或向外交換的分組數(shù)據(jù)。調(diào)度器116可負(fù)責(zé)基 于對(duì)分組數(shù)據(jù)的檢查來(lái)將傳入分組隔離為對(duì)應(yīng)的應(yīng)用會(huì)話(huà)。調(diào)度器116可具有用于分組檢 查以及標(biāo)識(shí)相關(guān)的分組特性的電路。在一些實(shí)施例中,調(diào)度器116可將網(wǎng)絡(luò)棧的部分從由網(wǎng) 絡(luò)棧處理引起的開(kāi)銷(xiāo)卸載到空閑的卸載處理器118。在特定實(shí)施例中,調(diào)度器116可實(shí)施以 下任何操作:TCP/傳輸卸載、加密/解密卸載、隔離并重新組裝,從而允許卸載處理器直接對(duì) 網(wǎng)絡(luò)分組的有效載荷進(jìn)行操作。
[0031] 調(diào)度器116可進(jìn)一步具有將屬于會(huì)話(huà)的分組轉(zhuǎn)換為特定的通信量管理隊(duì)列的能 力。調(diào)度器116可控制將多個(gè)此類(lèi)會(huì)話(huà)中的每一個(gè)調(diào)度到通用0S中??缍嗉?jí)(包括通用0S)的 流水線(xiàn)保持會(huì)話(huà)(stickness of session)可由優(yōu)化在這些級(jí)中的每一級(jí)處實(shí)施的操作的 調(diào)度器116支持。下文中更詳細(xì)地描述此類(lèi)操作的特定實(shí)施例。
[0032] 雖然調(diào)度器116具有任何適當(dāng)?shù)男问?,但是?010年7月20日向Dalai頒證的美國(guó) 專(zhuān)利No. 7,760,715 (下文中稱(chēng)之為' 715專(zhuān)利)中示出了可全部或部分地被用作調(diào)度器的調(diào) 度電路,通過(guò)引用將該美國(guó)專(zhuān)利結(jié)合在本文中。該'751專(zhuān)利公開(kāi)了考慮下游執(zhí)行資源的調(diào) 度電路。通過(guò)輸出端口,將這些隊(duì)列中的每一個(gè)隊(duì)列中的會(huì)話(huà)流發(fā)送到下游網(wǎng)絡(luò)元件。 [0033]調(diào)度器可采用仲裁電路來(lái)調(diào)解多個(gè)通信量管理輸出隊(duì)列對(duì)可用的輸出端口的訪 問(wèn)??赏ㄟ^(guò)分組緩沖器將輸出端口中的每一個(gè)連接到卸載處理器核中的一個(gè)。分組緩沖器 可進(jìn)一步包括頭部(header)池和分組體(body)池。頭部池可僅包含將由卸載處理器118處 理的分組的頭部。有時(shí),如果待處理的分組的尺寸足夠小,則該頭部池可包含整個(gè)分組???依賴(lài)于在卸載處理器118處實(shí)施的操作的性質(zhì)來(lái)將分組轉(zhuǎn)移到頭部池或分組體池。對(duì)于分 組處理、覆蓋、分析、過(guò)濾和其他此類(lèi)應(yīng)用,僅將分組頭部轉(zhuǎn)移到卸載處理器118可能是合適 的。在這種情況下,依賴(lài)于對(duì)分組頭部的處理,可將分組體與分組頭部縫接在一起并在出口 接口上轉(zhuǎn)移,或丟棄。對(duì)于需要終止分組的應(yīng)用,可轉(zhuǎn)移整個(gè)分組體。卸載處理器可由此接 收這些分組并對(duì)它們執(zhí)行適當(dāng)?shù)膽?yīng)用會(huì)話(huà)。
[0034]調(diào)度器116可調(diào)度卸載處理器118上的不同的會(huì)話(huà),從而采取動(dòng)作來(lái)協(xié)調(diào)此類(lèi)會(huì) 話(huà),以便在上下文切換期間減少開(kāi)銷(xiāo)。調(diào)度器116可以不僅以線(xiàn)路速度在傳出隊(duì)列或會(huì)話(huà)流 之間仲裁,而且還以非常高的速度在被終止的會(huì)話(huà)之間仲裁。調(diào)度器116可管理對(duì)卸載處理 器118上的會(huì)話(huà)進(jìn)行的排隊(duì),并且可負(fù)責(zé)在0S上調(diào)用新應(yīng)用會(huì)話(huà)。調(diào)度器116可基于通信量 來(lái)向0S指示針對(duì)新會(huì)話(huà)的分組是可用的。
[0035]也可向調(diào)度器116通知卸載處理器118的執(zhí)行資源的狀態(tài)、被運(yùn)行在執(zhí)行資源上的 當(dāng)前會(huì)話(huà)和分配給它的存儲(chǔ)器空間、以及卸載處理器高速緩存中會(huì)話(huà)上下文的位置。調(diào)度 器116可因此使用執(zhí)行資源的狀態(tài)來(lái)實(shí)施通信量管理和仲裁決策。
[0036]在所示實(shí)施例中,調(diào)度器116可提供操作系統(tǒng)上的線(xiàn)程管理與傳入分組的通信量 管理的整合。它可包括跨一系列組件(包括通信量管理隊(duì)列和卸載處理器118上的處理實(shí) 體)的持續(xù)通信量流。在卸載處理器118上運(yùn)行的0S可將諸如處理器循環(huán)和存儲(chǔ)器之類(lèi)的執(zhí) 行資源分配給它當(dāng)前正在處理的特定隊(duì)列。該os可進(jìn)一步為那個(gè)特定隊(duì)列分配線(xiàn)程或一組 線(xiàn)程,使得可由通用處理元件明確地將該特定隊(duì)列作為單獨(dú)的實(shí)體來(lái)處理。使多個(gè)會(huì)話(huà)在 通用(GP)處理資源(例如,卸載處理器資源)上運(yùn)行,并且使來(lái)自特定會(huì)話(huà)流的每一個(gè)處理 數(shù)據(jù)駐留在調(diào)度器116上的隊(duì)列中會(huì)緊密地整合調(diào)度器116和GP處理資源。這可帶來(lái)跨通信 量管理和調(diào)度器116和GP處理資源的會(huì)話(huà)信息之內(nèi)的持續(xù)的元素。
[0037] 在一些實(shí)施例中,卸載處理器118的0S可從前一個(gè)0S修改而來(lái)以減少與在資源之 間的上下文切換相關(guān)聯(lián)的損失和開(kāi)銷(xiāo)。這可進(jìn)一步由硬件調(diào)度器來(lái)開(kāi)發(fā)以實(shí)施在隊(duì)列之間 的無(wú)縫切換,并因此由執(zhí)行資源將它們作為不同的會(huì)話(huà)來(lái)執(zhí)行。
[0038]根據(jù)特定實(shí)施例,調(diào)度器116可實(shí)現(xiàn)對(duì)傳入分組的通信量管理。將來(lái)自某個(gè)資源 的、關(guān)于某種通信量類(lèi)別的、涉及特定應(yīng)用的或流向某個(gè)插槽的分組稱(chēng)為會(huì)話(huà)流的部分,并 且使用會(huì)話(huà)元數(shù)據(jù)來(lái)對(duì)它們分類(lèi)。會(huì)話(huà)元數(shù)據(jù)可充當(dāng)準(zhǔn)則,通過(guò)該準(zhǔn)則來(lái)排定分組的優(yōu)先 級(jí),并由此基于它們的會(huì)話(huà)元數(shù)據(jù)來(lái)對(duì)傳入分組重排序。對(duì)分組的該重排序可發(fā)生在一個(gè) 或多個(gè)緩沖器中,并可修改這些流的通信量形狀??蓪⒒跁?huì)話(huà)元數(shù)據(jù)而被重排序的會(huì)話(huà) 分組發(fā)送到使用仲裁電路而被向外仲裁到輸出端口的特定的經(jīng)通信量管理的隊(duì)列。仲裁電 路可直接將這些分組流饋送到下游分組處理和/或終止資源(例如,卸載處理器)。某些實(shí)施 例提供線(xiàn)程和隊(duì)列管理的整合以便增強(qiáng)下游資源通過(guò)上述線(xiàn)程處理終止網(wǎng)絡(luò)數(shù)據(jù)的吞吐 量。
[0039]除了實(shí)施對(duì)傳入網(wǎng)絡(luò)分組(和流)的通信量管理、仲裁和調(diào)度之外,調(diào)度器116還負(fù) 責(zé)啟用0S卸載處理器118上的被終止會(huì)話(huà)之間的最小開(kāi)銷(xiāo)的上下文切換。在卸載處理器118 的諸會(huì)話(huà)上的多個(gè)會(huì)話(huà)之間進(jìn)行切換能使得以非常高的速度終止多個(gè)會(huì)話(huà)成為可能。在所 示實(shí)施例中,通過(guò)上下文模塊120的操作,迅速的上下文切換可能發(fā)生。在特定實(shí)施例中,上 下文存儲(chǔ)器120可在系統(tǒng)100中提供高效、低等待時(shí)間的上下文服務(wù)。
[0040] 在所示的特定實(shí)施例中,可通過(guò)第二交換機(jī)114的操作將分組轉(zhuǎn)移到調(diào)度器116。 調(diào)度器116可對(duì)在卸載服務(wù)器118上在會(huì)話(huà)與新會(huì)話(huà)之間切換以及發(fā)起將上下文保存在上 下文存儲(chǔ)器120中兩者負(fù)責(zé)。會(huì)話(huà)的上下文可包括但不限于:被保存在寄存器保存區(qū)中的處 理器寄存器的狀態(tài)、正在被執(zhí)行的流水線(xiàn)中的指令、棧指針和程序計(jì)數(shù)器、正等待由會(huì)話(huà)執(zhí) 行的預(yù)取出的指令和數(shù)據(jù)、新近被寫(xiě)入到高速緩存中的數(shù)據(jù)以及可標(biāo)識(shí)在卸載處理器118 上執(zhí)行的會(huì)話(huà)的任何其他相關(guān)信息。在特定實(shí)施例中,可使用會(huì)話(huà)id、高數(shù)緩存中的會(huì)話(huà)索 引以及起始物理地址來(lái)標(biāo)識(shí)會(huì)話(huà)上下文。
[0041] 如將參照?qǐng)D1-3更詳細(xì)地描述的那樣,可使用轉(zhuǎn)換方案,使得虛擬存儲(chǔ)器中連續(xù)的 會(huì)話(huà)頁(yè)面在卸載處理器118的高速緩存中在物理上是連續(xù)的。高速緩存中的會(huì)話(huà)的該連續(xù) 性質(zhì)可允許會(huì)話(huà)上下文的批量讀取進(jìn)入上下文存儲(chǔ)器中存儲(chǔ)的'上下文快照',當(dāng)操作系統(tǒng) (0S)將處理器資源往回切換到會(huì)話(huà)時(shí),可從該'上下文快照'處檢索會(huì)話(huà)上下文。從上下文 存儲(chǔ)器120(其可以是低等待時(shí)間存儲(chǔ)器,并因此比系統(tǒng)的主存儲(chǔ)器快數(shù)個(gè)數(shù)量級(jí))中無(wú)縫 地取出會(huì)話(huà)上下文的能力可用于有效地?cái)U(kuò)展卸載處理器118的L2高速緩存的尺寸。
[0042]在一些實(shí)施例中,系統(tǒng)100的0S可在其輸入輸出存儲(chǔ)器管理單元(I0MMU)(未示出) 中實(shí)現(xiàn)優(yōu)化以允許轉(zhuǎn)換后備緩沖器(TLB)(或等效的查找結(jié)構(gòu))明顯地標(biāo)識(shí)每個(gè)會(huì)話(huà)的內(nèi) 容。此類(lèi)安排可允許在會(huì)話(huà)切換出(swi tch out)并轉(zhuǎn)移到在TLB外部的頁(yè)表高速緩存期間 來(lái)明顯地標(biāo)識(shí)地址轉(zhuǎn)換。頁(yè)表高速緩存的使用可允許對(duì)TLB尺寸的擴(kuò)展。同樣,考慮到虛擬 存儲(chǔ)器中的連續(xù)位置在物理存儲(chǔ)器中以及物理索引的高速緩存中處于連續(xù)的位置處的事 實(shí),顯著地減少了標(biāo)識(shí)會(huì)話(huà)所需的地址轉(zhuǎn)換的數(shù)量。
[0043] 在圖1-0的特定實(shí)施例中,系統(tǒng)100可非常適于提供會(huì)話(huà)和分組終止服務(wù)。在一些 實(shí)施例中,可由調(diào)度器116執(zhí)行對(duì)網(wǎng)絡(luò)棧處理的控制。因此,調(diào)度器116可充當(dāng)通信量管理隊(duì) 列、仲裁電路和網(wǎng)絡(luò)棧卸載設(shè)備。調(diào)度器116可代表卸載處理器118來(lái)負(fù)責(zé)處理整個(gè)會(huì)話(huà)和 流管理。在此類(lèi)安排中,可用涉及直接進(jìn)入緩沖器的會(huì)話(huà)的分組來(lái)饋送卸載處理器118,卸 載處理器118可從該緩沖器提取分組數(shù)據(jù)供使用??蓛?yōu)化對(duì)網(wǎng)絡(luò)棧的處理以避免切換到內(nèi) 核模式來(lái)處理網(wǎng)絡(luò)生成的中斷(并且執(zhí)行中斷服務(wù)例程)。按此方法,可將系統(tǒng)100優(yōu)化為無(wú) 縫地并且伴隨盡可能少的開(kāi)銷(xiāo)來(lái)實(shí)施會(huì)話(huà)的上下文切換。
[0044] 仍然參考圖1-0,如將理解的那樣,可在所述的系統(tǒng)100中使用諸如PCI、光纖信道 之類(lèi)的多種類(lèi)型的常規(guī)輸入/輸出總線(xiàn)。總線(xiàn)架構(gòu)也可基于相關(guān)的JEDEC標(biāo)準(zhǔn),基于DMM數(shù) 據(jù)傳輸協(xié)議,基于超傳輸或任何其他高速度、低等待時(shí)間互連系統(tǒng)。卸載處理器118可包括: DDR DRAM、RLDRAM、嵌入式DRAM、諸如混合存儲(chǔ)器立方(HMC)之類(lèi)的下一代棧式存儲(chǔ)器、閃 存、或其他合適的存儲(chǔ)器、分離邏輯或總線(xiàn)管理芯片、諸如現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)之類(lèi)的 可編程單元、自定義設(shè)計(jì)的專(zhuān)用集成電路(ASIC)以及基于ARM、ARC、泰思立達(dá)(Tensilica)、 MIPS、Strong/ARM或RISC架構(gòu)的處理器之類(lèi)的高能效通用處理器。主機(jī)處理器110可以是通 用處理器,包括基于英特爾或AMD x86架構(gòu)、英特爾安騰架構(gòu)、MIPS架構(gòu)、SPARC架構(gòu)等的處 理器。
[0045]如還將理解的那樣,可在運(yùn)行于多個(gè)處理核上的多個(gè)線(xiàn)程上實(shí)現(xiàn)執(zhí)行像圖1-0的 系統(tǒng)所執(zhí)行處理那樣的處理的常規(guī)系統(tǒng)。進(jìn)入多個(gè)線(xiàn)程上下文的任務(wù)的此類(lèi)并行化可提供 增加的吞吐量。諸如MIPS之類(lèi)的處理器架構(gòu)可包括用于改善每個(gè)循環(huán)的指令數(shù)量的深指令 流水線(xiàn)。此外,運(yùn)行多線(xiàn)程編程環(huán)境的能力導(dǎo)致對(duì)現(xiàn)有處理器資源的增強(qiáng)的使用。為了進(jìn)一 步增加硬件上的并行執(zhí)行,處理器架構(gòu)可包括多個(gè)處理器核。包括相同類(lèi)型核的多核架構(gòu) (被稱(chēng)為同構(gòu)核架構(gòu))通過(guò)使線(xiàn)程或進(jìn)程跨多個(gè)核并行來(lái)提供更高的指令吞吐量。然而,在 此類(lèi)同構(gòu)核架構(gòu)中,諸如存儲(chǔ)器之類(lèi)的共享資源在少量的處理器上分?jǐn)偂T诹硪恍?shí)施例 中,多個(gè)卸載處理器或主機(jī)處理器可駐留在被連接到單獨(dú)的機(jī)架(rack)單元或刀片 (blade)的模塊上,該單獨(dú)的機(jī)架單元或刀片轉(zhuǎn)而駐留在機(jī)架或單獨(dú)的服務(wù)器上。可進(jìn)一步 將這些編組為群集或數(shù)據(jù)中心,這些群集或數(shù)據(jù)中心在空間上可位于相同的建筑物中、位 于相同的城市中或甚至位于不同的國(guó)家中??蓪⑷魏尉幗M等級(jí)彼此連接和/或連接到公共 的或私有的云互聯(lián)網(wǎng)。
[0046] 按此類(lèi)常規(guī)方式,存儲(chǔ)器和I/O訪問(wèn)可能導(dǎo)致大量的處理器開(kāi)銷(xiāo)。此外,如本文中 所指出的那樣,常規(guī)的通用處理單元中的上下文切換可能是計(jì)算密集型的。因此,在處理多 個(gè)聯(lián)網(wǎng)應(yīng)用的聯(lián)網(wǎng)計(jì)算資源中減少上下文切換開(kāi)銷(xiāo)以增加處理器吞吐量是所期望的。常規(guī) 服務(wù)器負(fù)載可能需要復(fù)雜的傳輸、高存儲(chǔ)器帶寬、極端量的數(shù)據(jù)帶寬(經(jīng)隨機(jī)訪問(wèn)的、并行 化的和高度可用的),但經(jīng)常伴隨輕觸(1 ight touch)處理:HTML、視頻、分組(packet)級(jí)服 務(wù)、安全和分析。此外,閑置的處理器仍然消耗它們峰值功耗的大于50%。
[0047] 相比之下,在諸如圖1-0中所示的實(shí)施例之類(lèi)的實(shí)施例或等效方案中,可在創(chuàng)建在 多個(gè)卸載處理器118的核上的插槽抽象的背后來(lái)處理復(fù)雜傳輸?shù)?、?shù)據(jù)帶寬密集型、面向頻 繁的隨機(jī)訪問(wèn)的"輕觸"處理負(fù)載。同時(shí),可由主機(jī)處理器110的核(例如,x86處理器核)上的 插槽抽象來(lái)處理"重觸"("heavey touch")的計(jì)算密集型負(fù)載。此類(lèi)軟件插槽可允許對(duì)在輕 觸(例如,ARM)與重觸(例如,x86)處理器核之間的這些負(fù)載進(jìn)行的自然分區(qū)。通過(guò)對(duì)新的應(yīng) 用層級(jí)插槽的使用,根據(jù)諸實(shí)施例,可以跨卸載處理器118和主機(jī)處理器110來(lái)分解服務(wù)器 負(fù)載。
[0048]為了更好地理解本文所公開(kāi)的諸實(shí)施例的操作,參照?qǐng)D1-1和圖1-2描述常規(guī)的高 速緩存方案。實(shí)現(xiàn)虛擬存儲(chǔ)器的現(xiàn)代操作系統(tǒng)負(fù)責(zé)為進(jìn)程分配虛擬和物理存儲(chǔ)器兩者,從 而導(dǎo)致當(dāng)進(jìn)程執(zhí)行并訪問(wèn)虛擬尋址的存儲(chǔ)器時(shí)發(fā)生的虛擬向物理轉(zhuǎn)換。在對(duì)用于進(jìn)程的存 儲(chǔ)器進(jìn)行的管理中,在虛擬地址范圍與將由虛擬地址映射的對(duì)應(yīng)的物理地址的分配之間通 常沒(méi)有協(xié)調(diào)。這樣的缺乏協(xié)調(diào)可能在進(jìn)程正在執(zhí)行時(shí)影響處理器高速緩存開(kāi)銷(xiāo)和有效性?xún)?者。
[0049]在常規(guī)系統(tǒng)中,處理器為正在執(zhí)行的每一個(gè)進(jìn)程分配在虛擬存儲(chǔ)器中連續(xù)的存儲(chǔ) 器頁(yè)面。處理器也在物理存儲(chǔ)器分配頁(yè)面,這些頁(yè)面不一定是連續(xù)的。在兩種尋址方案之間 建立轉(zhuǎn)換方案以確保虛擬存儲(chǔ)器的抽象由物理存儲(chǔ)器頁(yè)面正確地支持。處理器可采用接近 該處理器駐留的高速緩存塊來(lái)滿(mǎn)足即刻的數(shù)據(jù)處理需求。可在層次結(jié)構(gòu)(hierarchy)中安 排常規(guī)高速緩存。第一級(jí)(L1)高速緩存最接近處理器,隨后是L2、L3等。L2充當(dāng)L1的后備,以 此類(lèi)推。對(duì)于由進(jìn)程的物理地址的部分進(jìn)行索引的高速緩存,對(duì)于超出存儲(chǔ)器管理單元 (MMU)頁(yè)面的尺寸的地址范圍,缺乏虛擬和物理地址的分配之間的相互關(guān)系導(dǎo)致處理器高 速緩存中的偶然性與低效率效應(yīng)。這在上下文切換操作期間增加了高速緩存開(kāi)銷(xiāo)并引入了 延遲。
[0050] 在物理尋址的高速緩存中,針對(duì)虛擬存儲(chǔ)器中下一頁(yè)面的高速緩存條目可能無(wú)法 對(duì)應(yīng)于高速緩存中的下一個(gè)連續(xù)的頁(yè)面一一進(jìn)而使可實(shí)現(xiàn)的總體性能降級(jí)。例如,在圖1-1 中,虛擬存儲(chǔ)器130中連續(xù)的頁(yè)面(進(jìn)程1的頁(yè)面1和2)在高速緩存中沖突,因?yàn)槲锢泶鎯?chǔ)器 132中它們的物理地址索引到(處理器的)物理索引的高速緩存134的相同位置。也就是說(shuō), 處理器高速緩存(即,134)是物理索引的,并且物理存儲(chǔ)器132中的頁(yè)面的地址索引到處理 器高速緩存中的相同頁(yè)面。此外,當(dāng)考慮多個(gè)進(jìn)程訪問(wèn)共享高速緩存的效應(yīng)時(shí),當(dāng)0S將物理 存儲(chǔ)器分配給進(jìn)程時(shí),通常缺乏對(duì)總體高速緩存性能的考慮。這種考慮的缺乏導(dǎo)致不同的 進(jìn)程跨上下文切換的高速緩存顛簸(thrashing)(例如,圖1-1中的進(jìn)程1和進(jìn)程2),這可能 不必要地置換(displace)彼此的行,這可能導(dǎo)致在恢復(fù)進(jìn)程后未定數(shù)量的高速緩存未命 中/填充,或?qū)е驴缟舷挛那袚Q的增加數(shù)量的行寫(xiě)回。
[0051] 如參照?qǐng)D1-2所描述的那樣,在其他常規(guī)安排中,處理器高速緩存可替代地通過(guò)進(jìn) 程的虛擬地址進(jìn)行索引。通過(guò)使用處理器的虛擬地址的位的區(qū)段來(lái)訪問(wèn)虛擬索引的高速緩 存。如圖1-2中所看到的那樣,在虛擬存儲(chǔ)器130中連續(xù)的頁(yè)面在虛擬索引的高速緩存136中 將是連續(xù)的。只要處理器高速緩存是虛擬索引的,就不需要對(duì)將物理存儲(chǔ)器132的分配與虛 擬地址的分配進(jìn)行協(xié)調(diào)加以關(guān)注。當(dāng)程序掃過(guò)虛擬地址范圍時(shí),它們將享有在處理器高速 緩存中的空間局部性的益處。此類(lèi)組相聯(lián)(set-associative)高速緩存具有對(duì)應(yīng)于索引的 若干條目。映射到給定的高速緩存索引上的給定頁(yè)面可以在該特定組中的任何地方??紤] 到存在可用于高速緩存條目的若干位置,憑借組關(guān)聯(lián)高速緩存,導(dǎo)致跨上下文切換的高速 緩存顛簸的問(wèn)題(即,如圖1-1中所示)在某種程度上被緩和,因?yàn)樘幚砥骺沙袚?dān)在盡可能長(zhǎng) 的跨度上將使用過(guò)的條目保持在高速緩存中。為此,高速緩存采用最近最少使用(least recently used)的算法。這導(dǎo)致緩和了與由操作系統(tǒng)遵循的虛擬尋址方案相關(guān)聯(lián)的問(wèn)題中 的一些問(wèn)題,但是對(duì)高速緩存的尺寸施加了約束。結(jié)果,可能需要較大的多路相聯(lián)(multiway associative) 高速緩存來(lái)確保不使新近使用過(guò)的條目失效 / 被清除掉。用于多路組相 聯(lián)高速緩存的比較器電路要適于并行比較可能是復(fù)雜的,這增加了與高速緩存相關(guān)聯(lián)的電 路級(jí)復(fù)雜性。
[0052]已由一些常規(guī)操作系統(tǒng)使用被稱(chēng)為"頁(yè)面著色"("page coloring")的高速緩存控 制方案來(lái)應(yīng)對(duì)因虛擬尋址方案而導(dǎo)致的高速緩存未命中的問(wèn)題。如果處理器高速緩存是物 理索引的,則將約束操作系統(tǒng)以尋找將不索引到相同顏色的高速緩存中的位置的物理存儲(chǔ) 器位置。在此類(lèi)高速緩存控制方案下,對(duì)于每一個(gè)虛擬地址,操作系統(tǒng)將不得不評(píng)估基于索 引所允許的物理存儲(chǔ)器中的那些頁(yè)面,那些頁(yè)面在物理索引的高速緩存中散列到該索引。 當(dāng)導(dǎo)出的索引可能是相同的顏色時(shí),不允許若干物理地址。因此,對(duì)于物理索引的高速緩 存,將對(duì)虛擬存儲(chǔ)器中的每一個(gè)頁(yè)面著色以標(biāo)識(shí)其對(duì)應(yīng)的高速緩存位置,并確定是否將下 一頁(yè)面分配到物理存儲(chǔ)器,并由此到相同顏色的高速緩存位置。將對(duì)每一個(gè)頁(yè)面重復(fù)該過(guò) 程,這可能是繁瑣的操作。雖然它改善了高速緩存效率,但是頁(yè)面著色增加了存儲(chǔ)器管理和 轉(zhuǎn)換單元上的開(kāi)銷(xiāo),因?yàn)閷⒉坏貌粯?biāo)識(shí)每一個(gè)頁(yè)面的顏色來(lái)防止新近使用過(guò)的頁(yè)面被覆 寫(xiě)。操作系統(tǒng)的復(fù)雜度相應(yīng)地增加,因?yàn)樗枰诟咚倬彺嬷芯S持前一個(gè)虛擬存儲(chǔ)器頁(yè)面 的顏色的指示符。
[0053]虛擬索引的高速緩存的問(wèn)題在于,盡管存在高速緩存訪問(wèn)等待時(shí)間較高的事實(shí), 但是存在別名使用(aliasing)的普遍問(wèn)題。在別名使用的情況下,映射到物理存儲(chǔ)器中的 相同頁(yè)面的(具有不同索引)的多個(gè)虛擬地址(由于這些不同的索引)位于高速緩存中的不 同位置處。頁(yè)面著色允許虛擬頁(yè)面和物理頁(yè)面具有相同的顏色,并因此在高速緩存中占據(jù) 相同的組。頁(yè)面著色使別名(alias)共享相同的超集(superset)位以及到高速緩存中的相 同行的索引。這去除了別名使用的問(wèn)題。頁(yè)面著色也對(duì)存儲(chǔ)器分配施加了約束。當(dāng)在頁(yè)面錯(cuò) 誤時(shí)分配新的物理頁(yè)面時(shí),存儲(chǔ)器管理算法必須從空閑列表中選擇具有與虛擬顏色相同顏 色的頁(yè)面。由于系統(tǒng)有系統(tǒng)地分配虛擬空間,因此不同程序的頁(yè)面趨于具有相同的顏色,并 且一些物理顏色由此比其他物理顏色更頻繁。因此,頁(yè)面著色可影響頁(yè)面錯(cuò)誤率。此外,一 些物理顏色占主導(dǎo)可能在利用物理地址來(lái)訪問(wèn)的第二級(jí)高速緩存中的程序之間創(chuàng)造映射 沖突。因此,處理器面臨關(guān)于上述常規(guī)頁(yè)面著色方案的非常大的問(wèn)題。虛擬頁(yè)面中的每一個(gè) 頁(yè)面可能正在占據(jù)物理存儲(chǔ)器中的不同頁(yè)面,使得它們占據(jù)不同的高速緩存顏色,但是處 理器將需要存儲(chǔ)每個(gè)以及每一個(gè)頁(yè)面的地址轉(zhuǎn)換。考慮到進(jìn)程可能是足夠大的,并且每一 個(gè)進(jìn)程將包括若干虛擬頁(yè)面,因此頁(yè)面著色算法可能變得非常復(fù)雜。這還將在TLB端處使其 復(fù)雜,因?yàn)樗鼘⑿枰獮樘幚砥鞯奶摂M存儲(chǔ)器的每一個(gè)頁(yè)面標(biāo)識(shí)等效的物理地址。由于上下 文切換趨于使TLB條目失效,因此處理器將需要實(shí)施頁(yè)面移動(dòng)(walk)并填充TLB條目,并且 這將進(jìn)一步將非確定性和等待時(shí)間添加到例程上下文切換。
[0054]按此方法,在通??捎玫某R?guī)操作系統(tǒng)中,當(dāng)恢復(fù)進(jìn)程/線(xiàn)程時(shí),上下文切換導(dǎo)致 高速緩存中的沖突以及TLB未命中。當(dāng)進(jìn)程/線(xiàn)程恢復(fù)時(shí),隨著線(xiàn)程的工作集被往回重新加 載到高速緩存中(即,隨著線(xiàn)程在用戶(hù)空間中恢復(fù)并執(zhí)行指令,這些指令連同應(yīng)用數(shù)據(jù)一起 通常將不得不被加載到高速緩存中),存在未定數(shù)量的指令和數(shù)據(jù)高速緩存未命中。在切換 入(switch-in)(即,進(jìn)程/線(xiàn)程的恢復(fù))時(shí),憑借新線(xiàn)程的頁(yè)表的基址被寫(xiě)入到為此目的所 預(yù)留的寄存器中,可完全或部分地使TLB映射無(wú)效。當(dāng)線(xiàn)程執(zhí)行時(shí),TLB未命中將(通過(guò)硬件 或軟件)導(dǎo)致頁(yè)表移動(dòng),其導(dǎo)致TLB填充。這些TLB未命中之中的每一個(gè)具有其自身的硬件成 本,包括因異常而導(dǎo)致的流水線(xiàn)停止(例如,當(dāng)執(zhí)行頁(yè)表移動(dòng)時(shí)由存儲(chǔ)器訪問(wèn)造成的開(kāi)銷(xiāo), 以及如果頁(yè)表不在高速緩存中時(shí)相關(guān)聯(lián)的高速緩存未命中/存儲(chǔ)器負(fù)載)。這些成本依賴(lài)于 進(jìn)程的相繼運(yùn)行之間在處理器中發(fā)生了什么,并且因此不是固定成本。此外,這些額外的等 待時(shí)間增加了上下文切換的成本并減損了進(jìn)程的有效執(zhí)行。如將領(lǐng)會(huì)的那樣,此類(lèi)的上述 高速緩存控制方法相對(duì)于處理時(shí)間、存儲(chǔ)器要求或其他操作系統(tǒng)控制的資源是非確定的, 從而減小了操作系統(tǒng)的總體效率。
[0055] 圖1-3示出根據(jù)實(shí)施例的高速緩存控制系統(tǒng)。在該高速緩存控制系統(tǒng)中,會(huì)話(huà)內(nèi)容 在物理索引的高速緩存134'中可以是連續(xù)的。所述實(shí)施例可使用轉(zhuǎn)換方案,使得虛擬存儲(chǔ) 器130中連續(xù)的會(huì)話(huà)頁(yè)面在物理索引的高速緩存134中是物理上連續(xù)的。相比于上述非確定 的高速緩存控制方案,至少上下文切換操作的持續(xù)時(shí)間可以是確定的。在所述實(shí)施例中,由 新進(jìn)程的上下文替換前一進(jìn)程的上下文涉及從諸如由圖1-0的上下文存儲(chǔ)器120提供的存 儲(chǔ)器之類(lèi)的外部低等待時(shí)間存儲(chǔ)器轉(zhuǎn)移新進(jìn)程上下文。在上下文切換的過(guò)程中,可避免對(duì) 系統(tǒng)的主存儲(chǔ)器的訪問(wèn)(在那里,此類(lèi)訪問(wèn)可能是延遲密集型的)。從上下文存儲(chǔ)器120(其 可以是低等待時(shí)間存儲(chǔ)器)預(yù)取出進(jìn)程上下文。如果需要另一次上下文切換,則可再次將進(jìn) 程上下文保存到上下文存儲(chǔ)器120。按此方法,實(shí)現(xiàn)了確定的上下文切換,因?yàn)榭梢罁?jù)需要 被實(shí)施的循環(huán)和操作的數(shù)量來(lái)定義上下文切換操作。此外,使用低等待時(shí)間存儲(chǔ)器來(lái)存儲(chǔ) 上下文數(shù)據(jù)可提供迅速的上下文切換。
[0056] 圖2-0到2-5描述了可包括本文中所描述的上下文切換的模塊的硬件實(shí)施例的諸 方面。在特定實(shí)施例中,此類(lèi)處理模塊可包括DIMM可裝載模塊。
[0057]圖2-0是根據(jù)一個(gè)實(shí)施例的處理模塊200的框圖。處理模塊200可包括物理連接器 202、存儲(chǔ)器接口 204、仲裁器邏輯206、卸載處理器208、本地存儲(chǔ)器210和控制邏輯212。連接 器202可提供到系統(tǒng)存儲(chǔ)器總線(xiàn)的物理連接。這與可經(jīng)由存儲(chǔ)器控制器等訪問(wèn)系統(tǒng)存儲(chǔ)器 總線(xiàn)的主機(jī)處理器形成對(duì)比。在非常特定的實(shí)施例中,連接器202可兼容計(jì)算系統(tǒng)的雙列直 插存儲(chǔ)器模塊(DIMM)插槽。相應(yīng)地,可用一個(gè)或多個(gè)處理模塊200或處理模塊與DIMM模塊的 混合來(lái)填充包括多個(gè)DIMM插槽的系統(tǒng)。
[0058]存儲(chǔ)器接口 204可檢測(cè)系統(tǒng)存儲(chǔ)器總線(xiàn)上的數(shù)據(jù)轉(zhuǎn)移,并且在適當(dāng)?shù)那闆r下,可允 許將寫(xiě)入數(shù)據(jù)存儲(chǔ)在處理模塊200中和/或從處理模塊200讀取出讀取數(shù)據(jù)。此類(lèi)數(shù)據(jù)轉(zhuǎn)移 可包括對(duì)具有特定網(wǎng)絡(luò)標(biāo)識(shí)符的分組數(shù)據(jù)的接收。在一些實(shí)施例中,存儲(chǔ)器接口204可以是 從屬接口(slave interface),因此,數(shù)據(jù)轉(zhuǎn)移受與處理模塊200分開(kāi)的主設(shè)備(master device)控制。在非常特定的實(shí)施例中,存儲(chǔ)器接口 204可以是用于調(diào)整由DMA主設(shè)備 (master)發(fā)起的系統(tǒng)存儲(chǔ)器總線(xiàn)上的DMA轉(zhuǎn)移的直接存儲(chǔ)器訪問(wèn)(DMA)從屬設(shè)備(slave)。 在一些實(shí)施例中,DMA主設(shè)備可以是與主機(jī)處理器不同的設(shè)備。在此類(lèi)配置中,處理模塊200 可接收用于處理的數(shù)據(jù)(例如,DMA寫(xiě)入),并且在不消耗主機(jī)處理器資源的情況下向外轉(zhuǎn)移 經(jīng)處理的數(shù)據(jù)(例如,DMA讀?。?。
[0059]仲裁器邏輯206可在處理模塊200之內(nèi)的沖突的數(shù)據(jù)訪問(wèn)之間進(jìn)行仲裁。在一些實(shí) 施例中,仲裁器邏輯206可在由卸載處理器208進(jìn)行的訪問(wèn)與在處理器模塊200外部的訪問(wèn) 之間進(jìn)行仲裁。應(yīng)理解,處理模塊200可包括同時(shí)對(duì)其進(jìn)行操作的多個(gè)位置。應(yīng)理解,由仲裁 器邏輯206仲裁的訪問(wèn)可包括對(duì)由處理器模塊200占據(jù)的物理系統(tǒng)存儲(chǔ)器空間的訪問(wèn)以及 對(duì)其他資源(例如,卸載處理器或主機(jī)處理器的高速緩存存儲(chǔ)器)的訪問(wèn)。相應(yīng)地,用于仲裁 器邏輯206的仲裁規(guī)則可根據(jù)應(yīng)用而變化。在一些實(shí)施例中,對(duì)于給定的處理器模塊200,可 固定此類(lèi)仲裁規(guī)則。在此類(lèi)情況下,可通過(guò)切出不同的處理模塊來(lái)適應(yīng)不同的應(yīng)用。然而, 在替代實(shí)施例中,此類(lèi)仲裁規(guī)則可以是可配置的。
[0060]卸載處理器208可包括可對(duì)在系統(tǒng)存儲(chǔ)器總線(xiàn)上轉(zhuǎn)移的數(shù)據(jù)進(jìn)行操作的一個(gè)或多 個(gè)處理器。在一些實(shí)施例中,卸載處理器可運(yùn)行通用操作系統(tǒng)或諸如Apache(僅作為一個(gè)非 常特定的示例)之類(lèi)的服務(wù)器應(yīng)用,從而允許保存和檢索處理器上下文??捎捎布{(diào)度器處 理由卸載處理器208執(zhí)行的計(jì)算任務(wù)。卸載處理器208可對(duì)在處理器模塊200上經(jīng)緩沖的數(shù) 據(jù)進(jìn)行操作。附加地或替代地,卸載處理器208可訪問(wèn)被存儲(chǔ)在系統(tǒng)存儲(chǔ)器空間中其它位置 處的數(shù)據(jù)。在一些實(shí)施例中,卸載處理器208可包括配置成用于存儲(chǔ)上下文信息的高速緩存 存儲(chǔ)器。卸載處理器208可包括多個(gè)核或一個(gè)核。
[0061]可將處理器模塊200包括在具有主機(jī)處理器(未不出)的系統(tǒng)中。在一些實(shí)施例中, 卸載處理器208相比于主機(jī)處理器可以是不同類(lèi)型的處理器。在特定實(shí)施例中,卸載處理器 208相比主機(jī)處理器可消耗更少的功率和/或具有更少的計(jì)算功率。在非常特定的實(shí)施例 中,卸載處理器208可以是"孱弱的"("wimpy")核處理器,而主機(jī)處理器可以是"強(qiáng)健的" ("brawny")核處理器。然而,在替代實(shí)施例中,卸載處理器208可具有等于任何主機(jī)處理器 的計(jì)算功率。在非常特定的實(shí)施例中,主機(jī)處理器可以是x86型處理器,而卸載處理器208可 包括ARM、ARC、泰思立達(dá)(Tens i 1 ica)、MIPS、Strong/ARM或RISC型處理器,僅舉數(shù)例。
[0062] 本地存儲(chǔ)器210可連接到卸載處理器208以啟用對(duì)上下文信息的存儲(chǔ)。相應(yīng)地,卸 載處理器208可存儲(chǔ)當(dāng)前的上下文信息,并隨后切換到新計(jì)算任務(wù),之后檢索該上下文信息 以恢復(fù)先前的任務(wù)。在非常特定的實(shí)施例中,本地存儲(chǔ)器210相對(duì)于系統(tǒng)中的其他存儲(chǔ)器可 以是低等待時(shí)間存儲(chǔ)器。在一些實(shí)施例中,對(duì)上下文信息的存儲(chǔ)可包括復(fù)制卸載處理器208 的高速緩存。
[0063] 在一些實(shí)施例中,本地存儲(chǔ)器210中的相同空間可由相同類(lèi)型的多個(gè)卸載處理器 208訪問(wèn)。按此方式,可由不同的卸載處理器恢復(fù)由一個(gè)卸載處理器存儲(chǔ)的上下文。
[0064] 控制邏輯212可控制由卸載處理器執(zhí)行的處理任務(wù)。在一些實(shí)施例中,可將控制邏 輯212考慮為硬件調(diào)度器,該硬件調(diào)度器可被概念化為包括數(shù)據(jù)評(píng)價(jià)器214、調(diào)度器216和切 換控制器218。數(shù)據(jù)評(píng)價(jià)器214可從在系統(tǒng)存儲(chǔ)器總線(xiàn)上轉(zhuǎn)移的寫(xiě)入數(shù)據(jù)中提取"元數(shù)據(jù)"。 如本文中所使用的那樣,"元數(shù)據(jù)"可以是嵌入在寫(xiě)入數(shù)據(jù)塊的一個(gè)或多個(gè)預(yù)定位置處的任 何信息,該信息指示將對(duì)該寫(xiě)入數(shù)據(jù)塊的全部或部分執(zhí)行的處理和/或指示指示該數(shù)據(jù)所 屬的特定任務(wù)/進(jìn)程(例如,分類(lèi)數(shù)據(jù))。在一些實(shí)施例中,元數(shù)據(jù)可以是指示該寫(xiě)入數(shù)據(jù)塊 的較高層級(jí)的組織的數(shù)據(jù)。僅作為非常特定的實(shí)施例,元數(shù)據(jù)可以是一個(gè)或多個(gè)網(wǎng)絡(luò)分組 (其可能或可能不被封裝在較高層的分組結(jié)構(gòu)中)的頭部信息。
[0065]調(diào)度器216(例如,硬件調(diào)度器)可對(duì)卸載處理器208的計(jì)算任務(wù)排序。在一些實(shí)施 例中,調(diào)度器216可生成在接收到供處理的寫(xiě)入數(shù)據(jù)時(shí)持續(xù)地被更新的調(diào)度。在非常特定的 實(shí)施例中,調(diào)度器216可基于切換卸載處理器208的上下文的能力來(lái)生成此類(lèi)調(diào)度。按此方 法,可在運(yùn)行時(shí)(on thefly)調(diào)整模塊上計(jì)算優(yōu)先級(jí)。在非常特定的實(shí)施例中,調(diào)度器216可 根據(jù)計(jì)算任務(wù)來(lái)將物理地址空間的部分(例如,本地存儲(chǔ)器210中的存儲(chǔ)器位置)分派給卸 載處理器208。卸載處理器208隨后可在此類(lèi)不同的空間之間切換,在每一次切換之前保存 上下文信息,并在之后當(dāng)返回到存儲(chǔ)器空間時(shí)還原上下文信息。
[0066]切換控制器218可控制卸載處理器208的計(jì)算操作。在特定實(shí)施例中,根據(jù)調(diào)度器 216,切換控制器218可對(duì)卸載處理器208排序以切換上下文。應(yīng)理解,上下文切換操作可以 是響應(yīng)于來(lái)自切換控制器218的單個(gè)命令而執(zhí)行的"原子"操作。附加地或替代地,切換控制 器218可發(fā)布存儲(chǔ)當(dāng)前的上下文信息、重新調(diào)用上下文信息等的指令集。
[0067] 在一些實(shí)施例中,處理器模塊200可包括緩沖器存儲(chǔ)器(未示出)。緩沖器存儲(chǔ)器可 將接收到的寫(xiě)入數(shù)據(jù)存儲(chǔ)在處理器模塊的板上??稍谕耆煌拇鎯?chǔ)器設(shè)備的集合上實(shí)現(xiàn) 緩沖器存儲(chǔ)器,或緩沖器存儲(chǔ)器可以是以邏輯和/或卸載處理器嵌入的存儲(chǔ)器。在后一種情 況下,仲裁器邏輯206可仲裁對(duì)緩沖器存儲(chǔ)器的訪問(wèn)。在一些實(shí)施例中,緩沖器存儲(chǔ)器可對(duì) 應(yīng)于系統(tǒng)物理存儲(chǔ)器空間的部分。系統(tǒng)存儲(chǔ)器空間的其余部分可對(duì)應(yīng)于被連接到相同的系 統(tǒng)存儲(chǔ)器總線(xiàn)的其他相似的處理器模塊和/或存儲(chǔ)器模塊。在一些實(shí)施例中,緩沖器存儲(chǔ)器 可與本地存儲(chǔ)器210不同。例如,緩沖器存儲(chǔ)器可具有相比本地存儲(chǔ)器210更慢的訪問(wèn)時(shí)間。 然而,在其他實(shí)施例中,可用同樣的存儲(chǔ)器設(shè)備來(lái)實(shí)現(xiàn)緩沖器存儲(chǔ)器和本地存儲(chǔ)器。
[0068]在非常特定的實(shí)施例中,供處理的寫(xiě)入數(shù)據(jù)可具有所預(yù)期的最大流速率??蓪⑻?理器模塊200配置為以此類(lèi)流速率或以比此類(lèi)流速率快的速率對(duì)此類(lèi)數(shù)據(jù)進(jìn)行操作。按此 方法,主設(shè)備(未示出)可在沒(méi)有覆寫(xiě)"處理中"數(shù)據(jù)的危險(xiǎn)的情況下將數(shù)據(jù)寫(xiě)入到處理器模 塊。
[0069]可將處理器模塊200的各種計(jì)算元件實(shí)現(xiàn)為一個(gè)或多個(gè)集成電路設(shè)備(1C)。應(yīng)理 解,可在相同或不同的1C中形成圖2-0中所示的各種組件。例如,可將控制邏輯212、存儲(chǔ)器 接口 214和/或仲裁器邏輯206實(shí)現(xiàn)在一個(gè)或多個(gè)邏輯1C上,而卸載處理器208和本地存儲(chǔ)器 210是分開(kāi)的1C。邏輯1C可以是固定邏輯(例如,專(zhuān)用1C)、可編程邏輯(例如,現(xiàn)場(chǎng)可編程門(mén) 陣列,F(xiàn)PGA)或它們的組合。
[0070] 有利的是,相比傳統(tǒng)的計(jì)算系統(tǒng),上述硬件和系統(tǒng)可提供改善的計(jì)算性能。常規(guī)系 統(tǒng)(包括基于x86處理器的那些系統(tǒng))通常裝備不足以處理此類(lèi)高容量應(yīng)用。即便在閑置時(shí), x86處理器也使用顯著量的功率,并且針對(duì)高帶寬分組分析或其他高容量處理任務(wù)的近于 連續(xù)的操作使得處理器能量成本是占主導(dǎo)的價(jià)格因素中的一個(gè)因素。
[0071] 此外,常規(guī)系統(tǒng)可能具有上下文切換的高成本問(wèn)題,在上下文切換中,需要主機(jī)處 理器執(zhí)行可包括從一個(gè)線(xiàn)程切換到另一線(xiàn)程的指令。此類(lèi)切換可能需要存儲(chǔ)并再次調(diào)用線(xiàn) 程的上下文。如果此類(lèi)上下文數(shù)據(jù)是駐留在主機(jī)高速緩存存儲(chǔ)器中的,則此類(lèi)上下文切換 可相對(duì)快速地發(fā)生。然而,如果此類(lèi)上下文數(shù)據(jù)不再位于高速緩存存儲(chǔ)器中(即,高速緩存 未命中),則必須從系統(tǒng)存儲(chǔ)器中重新調(diào)用該數(shù)據(jù),這可能導(dǎo)致多個(gè)循環(huán)的等待時(shí)間。在上 下文切換期間連續(xù)的高速緩存未命中可能不利地影響系統(tǒng)性能。
[0072]圖2-1示出根據(jù)一個(gè)非常特定的實(shí)施例的處理器模塊200-1,其能夠減少與關(guān)聯(lián)于 許多常規(guī)服務(wù)器系統(tǒng)的高容量處理或上下文切換相關(guān)聯(lián)的問(wèn)題。處理器模塊200-1可包括 被裝載到印刷電路板(PCB)型基板222的IC220-0/UPCB型基板222可包括直插式模塊連接 器202,在一個(gè)非常特定的實(shí)施例中,直插式模塊連接器202可以是兼容DMM的連接器。1C 220-1可以是集成多個(gè)功能的片上系統(tǒng)(SoC)型設(shè)備。在所示的非常特定的實(shí)施例中,1C 220-0可包括嵌入式處理器、邏輯和存儲(chǔ)器。此類(lèi)嵌入式處理器可以是本文中所述的卸載處 理器208或其等效物。此類(lèi)邏輯可以是本文中所述的控制器邏輯212、存儲(chǔ)器接口 204和/或 仲裁器邏輯206中的任何一個(gè)或它們的等效物。此類(lèi)存儲(chǔ)器可以是本文中所述的本地存儲(chǔ) 器210、卸載處理器208的高速緩存處理器或緩沖器存儲(chǔ)器中的任何一個(gè)或它們的等效物。 邏輯1C 220-1可提供不被包括在1C 220-0中的邏輯功能。
[0073]圖2-2示出根據(jù)另一非常特定的實(shí)施例的處理器模塊200-2。處理器模塊200-2可 包括被裝載到類(lèi)似圖2-1的基板那樣的PCB型基板222的1C 220-2、-3、-4、-5。然而,與圖2-1 不同,處理器模塊功能被分布在單一目的型1C之間。1C 220-2可以是處理器1C,該處理器1C 可以是卸載處理器208JC 220-3可以是存儲(chǔ)器1C,該存儲(chǔ)器1C可包括本地存儲(chǔ)器210、緩沖 器存儲(chǔ)器或它們的組合。1C 220-4可以是邏輯1C,該邏輯1C可包括控制邏輯212,并且在一 個(gè)非常特定的實(shí)施例中可以是FPGAJC 220-5可以是另一邏輯1C,該另一邏輯1C可包括存 儲(chǔ)器接口 204和仲裁器邏輯206,并且在一個(gè)非常特定的實(shí)施例中也可以是FPGA。
[0074]應(yīng)理解,圖2-1/2僅表示各種實(shí)現(xiàn)中的兩個(gè)。可在任何合適數(shù)量的IC(包括單SoC型 1C)上分布處理器模塊的各種功能。
[0075] 圖2-3示出根據(jù)非常特定的實(shí)施例的處理器模塊200-1或200-2的背面。處理器模 塊200-3可包括多個(gè)存儲(chǔ)器1C,一個(gè)被示出為220-6,其被裝載到類(lèi)似圖2-1的基板那樣的 PCB型基板222。應(yīng)理解,可將各種處理和邏輯組件裝載在所示面的反面。可將存儲(chǔ)器1C 220-6配置為表示系統(tǒng)的物理存儲(chǔ)器空間的部分。存儲(chǔ)器1C 220-6可執(zhí)行以下功能中的任 何一個(gè)或全部:獨(dú)立于其他處理器模塊組件而進(jìn)行操作,從而提供以常規(guī)方式訪問(wèn)的系統(tǒng) 存儲(chǔ)器;充當(dāng)緩沖器存儲(chǔ)器,從而存儲(chǔ)可利用其他處理器模塊組件來(lái)處理的寫(xiě)入數(shù)據(jù);或充 當(dāng)用于存儲(chǔ)處理器上下文信息的本地存儲(chǔ)器。
[0076] 圖2-4示出常規(guī)的DIMM模塊(即,它僅提供存儲(chǔ)器功能),該模塊可連同本文中所述 的處理器模塊或它們的等效物來(lái)填充存儲(chǔ)器總線(xiàn)。
[0077]圖2-5示出根據(jù)一個(gè)實(shí)施例的系統(tǒng)230。系統(tǒng)230可包括經(jīng)由多個(gè)可直插式模塊插 槽(一個(gè)被示出為226)訪問(wèn)的系統(tǒng)存儲(chǔ)器總線(xiàn)228。根據(jù)實(shí)施例,可由本文中所述的處理器 模塊200或等效物來(lái)占據(jù)插槽226中的任何一個(gè)或全部。在處理模塊200未占據(jù)所有的插槽 226的情況下,可由常規(guī)的直插式存儲(chǔ)器模塊224占據(jù)可用的插槽。在非常特定的實(shí)施例中, 插槽226可以是DIMM插槽。
[0078] 在一些實(shí)施例中,處理器模塊200可占據(jù)一個(gè)插槽。然而,在其他實(shí)施例中,處理器 模塊可占據(jù)多個(gè)插槽。
[0079] 在一些實(shí)施例中,可進(jìn)一步將系統(tǒng)存儲(chǔ)器總線(xiàn)228與一個(gè)或多個(gè)主機(jī)處理器和/或 輸入/輸出設(shè)備(未不出)對(duì)接。
[0080] 已描述了根據(jù)各實(shí)施例的處理器模塊,現(xiàn)在將描述根據(jù)特定實(shí)施例的能夠經(jīng)由存 儲(chǔ)器總線(xiàn)與服務(wù)器或類(lèi)似系統(tǒng)對(duì)接的卸載處理器模塊的操作。
[0081] 圖3示出根據(jù)實(shí)施例的可在卸載處理器中執(zhí)行上下文切換的系統(tǒng)301。在所示示例 中,系統(tǒng)301可將分組數(shù)據(jù)傳輸?shù)轿挥谀K上的一個(gè)或多個(gè)計(jì)算單元(一個(gè)被示出為300), 在特定實(shí)施例中,這一個(gè)或多個(gè)計(jì)算單元可包括兼容現(xiàn)有存儲(chǔ)器模塊的連接器。在一些實(shí) 施例中,計(jì)算單元300可包括本文中的實(shí)施例中所描述的處理器模塊或等效物。計(jì)算單元 300可能能夠攔截或以其他方式訪問(wèn)在存儲(chǔ)器總線(xiàn)316上發(fā)送的分組,并且實(shí)施對(duì)此類(lèi)分組 的處理,包括但不限于終止或元數(shù)據(jù)處理。系統(tǒng)存儲(chǔ)器總線(xiàn)316可以是像本文中所描述的那 些或等效物(例如,228)的系統(tǒng)存儲(chǔ)器總線(xiàn)。
[0082]仍然參考圖3,系統(tǒng)301可包括I/O設(shè)備302,該I/O設(shè)備302可從外部源接收分組或 其他I/O數(shù)據(jù)。在一些實(shí)施例中,I/O設(shè)備302可包括由物理設(shè)備生成的、用于從網(wǎng)絡(luò)或另一 計(jì)算機(jī)或虛擬機(jī)接收分組或其他I/O數(shù)據(jù)的物理或虛擬功能。在所示非常特定的實(shí)施例中, I/O設(shè)備302可包括具有輸入緩沖器302a(例如,DMA環(huán)緩沖器)和I/O虛擬化功能302b的網(wǎng)絡(luò) 接口卡(NIC)。
[0083]根據(jù)諸實(shí)施例,I/O設(shè)備302可寫(xiě)入描述符,該描述符包括分組的必要的存儲(chǔ)器操 作的細(xì)節(jié)(即,讀取/寫(xiě)入、源/目的地)。可(例如,由系統(tǒng)301的操作系統(tǒng))將虛擬存儲(chǔ)器位置 分派給此類(lèi)描述符。然后,I/O設(shè)備302與輸入輸出存儲(chǔ)器管理單元(I0MMU)304通信,該 I0MMU 304可利用I0MMU功能304b來(lái)將虛擬地址轉(zhuǎn)換為對(duì)應(yīng)的物理地址。在所示的特定實(shí)施 例中,可將轉(zhuǎn)換后備緩沖器(TLB)304a用于此類(lèi)轉(zhuǎn)換。然后,可經(jīng)由系統(tǒng)301的存儲(chǔ)器控制器 306b利用直接存儲(chǔ)器傳輸(例如,DMA)來(lái)執(zhí)行I/O設(shè)備與系統(tǒng)存儲(chǔ)器位置之間的虛擬功能讀 取或?qū)懭霐?shù)據(jù)??捎芍鳈C(jī)總線(xiàn)312將I/O設(shè)備302連接到I0MMU 304。在一個(gè)非常特定的實(shí)施 例中,主機(jī)總線(xiàn)312可以是外圍互連(PCI)型總線(xiàn)??稍谥醒胩幚韱卧狪/0(CPUI0)306a處將 I0MMU 304連接到主機(jī)處理部306。在所示實(shí)施例中,此類(lèi)連接314可支持超傳輸(HT)協(xié)議。 [0084] 在所示實(shí)施例中,主機(jī)處理部306可包括CPUIO 306a、存儲(chǔ)器控制器306b、處理核 306c和對(duì)應(yīng)的供應(yīng)代理306d。
[0085]在特定實(shí)施例中,計(jì)算單元300可經(jīng)由標(biāo)準(zhǔn)直插式模塊連接與系統(tǒng)總線(xiàn)316對(duì)接, 在非常特定的實(shí)施例中,該連接可包括DHM型插槽。在所示實(shí)施例中,存儲(chǔ)器總線(xiàn)316可以 是DDR3型存儲(chǔ)器總線(xiàn)。替代實(shí)施例可包括任何合適的系統(tǒng)存儲(chǔ)器總線(xiàn)??捎纱鎯?chǔ)器控制器 306b經(jīng)由存儲(chǔ)器總線(xiàn)316將分組數(shù)據(jù)發(fā)送到DMA從屬接口 310a??墒笵MA從屬接口 310a適于 通過(guò)存儲(chǔ)器總線(xiàn)316接收來(lái)自DMA寫(xiě)入的經(jīng)封裝的讀取/寫(xiě)入指令。
[0086]硬件調(diào)度器(308b/c/d/e/h)可通過(guò)根據(jù)使用會(huì)話(huà)元數(shù)據(jù)的流來(lái)對(duì)傳入分組分類(lèi) 以執(zhí)行對(duì)這些傳入分組的通信量管理??蓪?duì)分組排隊(duì)列,以便基于會(huì)話(huà)優(yōu)先級(jí)在板載 (onboard)存儲(chǔ)器(310b/308a/308m)中輸出。當(dāng)硬件調(diào)度器確定針對(duì)特定會(huì)話(huà)的分組準(zhǔn)備 好由卸載處理器308i來(lái)處理時(shí),用信號(hào)通知板載存儲(chǔ)器以便進(jìn)行到該會(huì)話(huà)的上下文切換。 利用該優(yōu)先級(jí)排定方法,相比常規(guī)方式可減小上下文切換開(kāi)銷(xiāo)。也就是說(shuō),硬件調(diào)度器可處 理上下文切換決策并由此優(yōu)化下游資源(例如,卸載處理器308i)的性能。
[0087]如上所述,在非常特定的實(shí)施例中,卸載處理器308i可以是"孱弱核"型處理器。根 據(jù)一些實(shí)施例,主機(jī)處理器306c可以是"強(qiáng)健核"型處理器(例如,x86或能夠處理"重觸"計(jì) 算操作的任何其他處理器)。雖然將I/O設(shè)備302配置為響應(yīng)于傳入分組來(lái)觸發(fā)主機(jī)處理器 中斷,但根據(jù)諸實(shí)施例,可禁用此類(lèi)中斷,進(jìn)而減少主機(jī)處理器306c的處理開(kāi)銷(xiāo)。在一些非 常特定的實(shí)施例中,卸載處理器308i可包括ARM、ARC、泰思立達(dá)(Tensilica)、MIPS、Strong/ ARM或能夠處理"輕觸"操作的任何其他處理器。優(yōu)選地,卸載處理器可運(yùn)行用于執(zhí)行多個(gè)會(huì) 話(huà)的通用操作系統(tǒng),可優(yōu)化這些會(huì)話(huà)以便與硬件調(diào)度器聯(lián)合來(lái)減少上下文切換開(kāi)銷(xiāo)。
[0088]仍然參考圖3,在操作中,系統(tǒng)301可在網(wǎng)絡(luò)接口上接收來(lái)自外部網(wǎng)絡(luò)的分組?;?由I/O設(shè)備302采用的分類(lèi)邏輯和原理,分組去往主機(jī)處理器306c或卸載處理器308i。在特 定實(shí)施例中,I/O設(shè)備302可作為虛擬化NIC進(jìn)行操作,可將針對(duì)特定邏輯網(wǎng)絡(luò)或去往某個(gè)虛 擬MAC(VMAC)地址的分組定向到單獨(dú)的隊(duì)列中,并將它們發(fā)送到目的地邏輯實(shí)體中。此類(lèi)安 排可將分組轉(zhuǎn)移到不同的實(shí)體。在一些實(shí)施例中,每一個(gè)此類(lèi)實(shí)體可具有虛擬驅(qū)動(dòng)器、該實(shí) 體用來(lái)與所連接的虛擬網(wǎng)絡(luò)通信的虛擬設(shè)備模型。
[0089] 根據(jù)諸實(shí)施例,可使用多個(gè)設(shè)備將通信量重定向到特定的存儲(chǔ)器地址。因此,網(wǎng)絡(luò) 設(shè)備中的每一個(gè)就像它正在將分組轉(zhuǎn)移到邏輯實(shí)體的存儲(chǔ)器位置那樣進(jìn)行操作。然而,實(shí) 際上,此類(lèi)分組被轉(zhuǎn)移到可由一個(gè)或多個(gè)卸載處理器(例如,308i)在其中處理它們的存儲(chǔ) 器地址。在特定實(shí)施例中,此類(lèi)轉(zhuǎn)移去往物理存儲(chǔ)器地址,從而可從處理中去除邏輯實(shí)體, 并且主機(jī)處理器可免于此類(lèi)分組處理。
[0090] 相應(yīng)地,可將諸實(shí)施例概念化為存儲(chǔ)器"黑箱",可將特定的網(wǎng)絡(luò)數(shù)據(jù)饋送給該存 儲(chǔ)器"黑箱"。此類(lèi)存儲(chǔ)器黑箱可處理數(shù)據(jù)(例如,處理它),并在此類(lèi)數(shù)據(jù)被請(qǐng)求時(shí)往回進(jìn)行 響應(yīng)。
[0091 ]仍然參考圖3,根據(jù)一些實(shí)施例,I/O設(shè)備302可從網(wǎng)絡(luò)或從計(jì)算設(shè)備接收數(shù)據(jù)分 組。數(shù)據(jù)分組可具有某些特性,包括例如,傳輸協(xié)議號(hào)、源和目的地端口號(hào),源和目的地IP地 址。數(shù)據(jù)分組可進(jìn)一步具有經(jīng)處理并有助于它們的分類(lèi)和管理的元數(shù)據(jù)(308d)。
[0092] I/O設(shè)備302可包括但不限于外圍組件互連(PCI)和/或PCI快速(PCIe)設(shè)備,該P(yáng)CI 和/或PCIe設(shè)備經(jīng)由PCI或PCIe總線(xiàn)(例如,312)與主機(jī)主板連接。I/O設(shè)備的示例包括網(wǎng)絡(luò) 接口控制器(NIC)、主機(jī)總線(xiàn)適配器、聚合網(wǎng)絡(luò)適配器、ATM網(wǎng)絡(luò)接口等。
[0093]為了提供允許多個(gè)邏輯實(shí)體訪問(wèn)相同的I/O設(shè)備302的抽象方案,可使I/O設(shè)備虛 擬化以提供多個(gè)虛擬設(shè)備,其中的每一個(gè)虛擬設(shè)備可執(zhí)行物理I/O設(shè)備的功能中的一些功 能。根據(jù)實(shí)施例的I/O虛擬化程序(例如,302b)可將通信量重定向到不同的存儲(chǔ)器位置(并 由此重定向到附連到存儲(chǔ)器總線(xiàn)上的模塊的不同的卸載處理器)。為了實(shí)現(xiàn)這一點(diǎn),可將1/ 0設(shè)備302 (例如,網(wǎng)絡(luò)卡)劃分為若干功能部分;包括支持輸入/輸出虛擬化(I0V)架構(gòu)(例 如,單根I0V)的控制功能(CF)和多個(gè)虛擬功能(VF)接口??稍趯?zhuān)用使用的運(yùn)行時(shí)期間將資 源提供給每一個(gè)虛擬功能接口。CF和VF的示例可包括諸如單根I/O虛擬化或多根I/O虛擬化 架構(gòu)之類(lèi)的方案下的物理功能和虛擬功能。CF充當(dāng)建立并管理虛擬資源的物理資源。CF也 能夠充當(dāng)完全成熟的10設(shè)備。VF負(fù)責(zé)提供對(duì)虛擬設(shè)備的抽象,以便與多個(gè)邏輯實(shí)體/多個(gè)存 儲(chǔ)器區(qū)域進(jìn)行通信。
[0094] 能以設(shè)備模型、VF驅(qū)動(dòng)器和CF的驅(qū)動(dòng)器來(lái)加載運(yùn)行在主機(jī)處理器306c上的操作系 統(tǒng)/管理程序(hypervisor)/虛擬機(jī)/用戶(hù)代碼中的任何一個(gè)??墒褂迷O(shè)備模型來(lái)創(chuàng)建對(duì)主 機(jī)處理器306c的物理設(shè)備的仿真以識(shí)別所創(chuàng)建的多個(gè)VF中的每一個(gè)??蓪⒃O(shè)備模型重復(fù)多 次以給予VF驅(qū)動(dòng)器(與虛擬10設(shè)備交互的驅(qū)動(dòng)器)它正在與特定類(lèi)型的物理設(shè)備交互的印 象。
[0095]例如,可使用某個(gè)設(shè)備模塊來(lái)仿真諸如英特爾?以太網(wǎng)聚合網(wǎng)絡(luò)適配器(CNA) X540-T2之類(lèi)的網(wǎng)絡(luò)適配器,使得I/O設(shè)備302相信它正在與此類(lèi)適配器交互。在此類(lèi)情況 下,虛擬功能中的每一個(gè)可具有支持上述CAN中的功能的能力,即,物理功能中的每一個(gè)應(yīng) 當(dāng)能夠支持此類(lèi)功能。設(shè)備模型和VF驅(qū)動(dòng)器能以特權(quán)模式或非特權(quán)模式運(yùn)行。在一些實(shí)施 例中,關(guān)于何者主管/運(yùn)行對(duì)應(yīng)于設(shè)備模型和VF驅(qū)動(dòng)器的代碼可能沒(méi)有限制。然而,代碼具 有創(chuàng)建設(shè)備模型和VF驅(qū)動(dòng)器的多個(gè)副本的能力,使得能夠創(chuàng)建所述I/O接口的多個(gè)副本。 [0096]作為在內(nèi)核中運(yùn)行的應(yīng)用/用戶(hù)級(jí)代碼的部分的應(yīng)用或供應(yīng)代理306d可在運(yùn)行時(shí) 期間創(chuàng)建針對(duì)每一個(gè)VF的虛擬I/O地址空間,并將物理地址空間的部分分配給它。例如,如 果處理VF驅(qū)動(dòng)器的應(yīng)用指示它從存儲(chǔ)器地址Oxaaaa到Oxffff讀取分組或向存儲(chǔ)器地址 Oxaaaa到OxfTfT寫(xiě)入分組,則設(shè)備驅(qū)動(dòng)器可將I/O描述符寫(xiě)入到具有頭指針和尾指針的描 述符隊(duì)列中,隨著隊(duì)列條目被填充,該頭指針和尾指針被動(dòng)態(tài)地改變。數(shù)據(jù)結(jié)構(gòu)也可以是其 他類(lèi)型的,包括但不限于環(huán)結(jié)構(gòu)302a或散列表。
[0097] VF可從該驅(qū)動(dòng)器指向的地址位置讀取數(shù)據(jù)或?qū)?shù)據(jù)寫(xiě)入該地址位置。此外,在完 成了到被分配給驅(qū)動(dòng)器的地址空間的數(shù)據(jù)轉(zhuǎn)移后,可禁用中斷,通常向主機(jī)處理器觸發(fā)該 中斷以處理所述網(wǎng)絡(luò)分組。將特定的I/O空間分配給設(shè)備可包括:將所述10空間分配給特定 的被占據(jù)的物理存儲(chǔ)器空間。
[0098] 在另一實(shí)施例中,如果描述符與用于處理傳入分組的特定數(shù)據(jù)結(jié)構(gòu)相關(guān)聯(lián),則該 描述符可僅包括寫(xiě)入操作。此外,傳入數(shù)據(jù)結(jié)構(gòu)中的條目中的每一個(gè)條目的描述符可以是 恒定的,使得將所有的數(shù)據(jù)寫(xiě)入重定向到特定的存儲(chǔ)器位置。在替代實(shí)施例中,連續(xù)條目的 描述符可指向存儲(chǔ)器中的連續(xù)條目,以便將傳入分組定向到連續(xù)的存儲(chǔ)器位置。
[0099] 或者,所述操作系統(tǒng)可為支持VF驅(qū)動(dòng)器的應(yīng)用創(chuàng)建經(jīng)定義的物理地址空間,并且 將虛擬存儲(chǔ)器地址空間分配給應(yīng)用或供應(yīng)代理306d,從而創(chuàng)建針對(duì)所述虛擬地址與物理地 址空間之間的每一個(gè)虛擬功能的映射??蓪⑻摂M存儲(chǔ)器地址空間與物理存儲(chǔ)器空間之間的 所述映射存儲(chǔ)在I0MMU表(例如,TLB 304a)中。執(zhí)行存儲(chǔ)器讀取或?qū)懭氲膽?yīng)用可將虛擬地址 提供給所述虛擬功能,并且主機(jī)處理器0S可將物理存儲(chǔ)器位置的特定部分分配給此類(lèi)應(yīng) 用。
[0100]或者,可將VF配置成生成諸如讀取和寫(xiě)入之類(lèi)的請(qǐng)求,其可以是例如直接存儲(chǔ)器 訪問(wèn)(DMA)讀取或?qū)懭氩僮鞯牟糠?。由I0MMU 304將虛擬地址轉(zhuǎn)換為它們對(duì)應(yīng)的物理地址, 并且可將這些物理地址提供給存儲(chǔ)器控制器以供訪問(wèn)。也就是說(shuō),I0MMU 304可修改由I/O 設(shè)備發(fā)起的存儲(chǔ)器請(qǐng)求以將該請(qǐng)求中的虛擬地址改變?yōu)槲锢淼刂?,并且可將該存?chǔ)器請(qǐng)求 轉(zhuǎn)發(fā)到存儲(chǔ)器控制器供存儲(chǔ)器訪問(wèn)??稍谥С种T如超傳輸314之類(lèi)的協(xié)議的總線(xiàn)314上轉(zhuǎn)發(fā) 該存儲(chǔ)器請(qǐng)求。VF可在此類(lèi)情況下通過(guò)將虛擬存儲(chǔ)器地址提供給I0MMU 304來(lái)實(shí)施直接存 儲(chǔ)器訪問(wèn)。
[0101 ]或者,如果VF允許,則所述應(yīng)用可直接將物理地址編碼為VF描述符。如果VF不能夠 支持主機(jī)處理器306c所使用形式的物理地址,則可將具有由VF設(shè)備支持的硬件尺寸的孔徑 (aperture)編碼為描述符,使得向該VF通知該設(shè)備的目標(biāo)硬件地址。可由轉(zhuǎn)換表將被轉(zhuǎn)移 到孔徑的數(shù)據(jù)映射到系統(tǒng)存儲(chǔ)器中經(jīng)定義的物理地址空間??捎商幚砥鲌?zhí)行的軟件發(fā)起 DMA操作,從而直接或間接地對(duì)I /0設(shè)備編程以執(zhí)行DMA操作。
[0102]仍然參考圖3,在特定實(shí)施例中,可利用一個(gè)或多個(gè)FPGA來(lái)實(shí)現(xiàn)計(jì)算單元300的諸 部分。在圖3的系統(tǒng)中,計(jì)算單元300可包括FPGA 310,可在該FPGA 310中形成DMA從屬設(shè)備 模塊310a和仲裁器310f ΑΜΑ從屬模塊310a可以是適于附連到存儲(chǔ)器總線(xiàn)316的任何設(shè)備, 該存儲(chǔ)器總線(xiàn)316可響應(yīng)于DMA讀取/寫(xiě)入請(qǐng)求。在替代實(shí)施例中,DMA從屬模塊310a可以是 能夠在存儲(chǔ)器總線(xiàn)316上進(jìn)行塊數(shù)據(jù)轉(zhuǎn)移的另一接口。DMA從屬模塊310a能夠(當(dāng)DMA控制器 從'存儲(chǔ)器'或從外圍設(shè)備執(zhí)行讀取時(shí))從該DMA控制器接收數(shù)據(jù)或(當(dāng)DMA控制器對(duì)DMA從模 塊310a執(zhí)行寫(xiě)入指令時(shí))將數(shù)據(jù)轉(zhuǎn)移到該DMA控制器??墒笵MA從屬模塊310a接收在存儲(chǔ)器 總線(xiàn)上經(jīng)封裝的(例如,按DDR數(shù)據(jù)傳輸形式的,諸如分組或數(shù)據(jù)突發(fā))DMA讀取和寫(xiě)入指令、 或可在對(duì)應(yīng)的存儲(chǔ)器總線(xiàn)上發(fā)送的任何其他格式的DMA讀取和寫(xiě)入指令。
[0103] DMA從屬模塊310a可重構(gòu)來(lái)自存儲(chǔ)器R/W分組的DMA讀取/寫(xiě)入指令??墒笵MA從屬 模塊310a適于對(duì)向DMA主設(shè)備的數(shù)據(jù)讀取/數(shù)據(jù)寫(xiě)入形式的這些指令做出響應(yīng),在PCIe總線(xiàn) 的情況下,該DMA主設(shè)備可被設(shè)置在外圍設(shè)備中,或者在ISA總線(xiàn)的情況下,該DMA主設(shè)備可 以是系統(tǒng)DMA控制器。
[0104] 然后可將由DMA設(shè)備310a接收到的I/O數(shù)據(jù)排成隊(duì)列以供仲裁。仲裁可包括調(diào)度不 同流的分組的過(guò)程,使得可基于多個(gè)參數(shù)來(lái)向它們提供對(duì)可用帶寬的訪問(wèn)。一般而言,仲裁 器310f將資源訪問(wèn)提供給一個(gè)或多個(gè)請(qǐng)求器。如果多個(gè)請(qǐng)求者請(qǐng)求訪問(wèn),則仲裁器310f可 確定哪個(gè)請(qǐng)求器成為訪問(wèn)器,并隨后將數(shù)據(jù)從該訪問(wèn)器傳遞到資源接口,并且下游資源可 開(kāi)始對(duì)數(shù)據(jù)的執(zhí)行。在已完全將數(shù)據(jù)轉(zhuǎn)移到資源且該資源已完成執(zhí)行之后,仲裁器310f可 將控制轉(zhuǎn)移到不同的請(qǐng)求器,并且對(duì)所有可用的請(qǐng)求器重復(fù)該循環(huán)。在圖3的實(shí)施例中,仲 裁器310f可向計(jì)算單元300的其他部分(例如,308)通知傳入數(shù)據(jù)。
[0105] 或者,計(jì)算單元300可利用2010年10月12日向Dalai頒證的美國(guó)專(zhuān)利7,813,283中 所示的仲裁方案,該美國(guó)專(zhuān)利的內(nèi)容通過(guò)引用被結(jié)合在本文中。在本文中的諸實(shí)施例中,可 實(shí)現(xiàn)本領(lǐng)域中已知的其他合適的仲裁方案?;蛘撸墒褂瞄_(kāi)放流交換機(jī)和開(kāi)放流控制器來(lái) 實(shí)現(xiàn)本發(fā)明的仲裁方案。
[0106] 在圖3的非常特定的實(shí)施例中,計(jì)算單元300可進(jìn)一步包括通知/預(yù)取電路310c,該 電路310c可響應(yīng)于DMA從屬模塊310a且經(jīng)仲裁器310f仲裁來(lái)預(yù)取出存儲(chǔ)在緩沖器存儲(chǔ)器 310b中的數(shù)據(jù)。此外,仲裁器310f可經(jīng)由存儲(chǔ)器映射的I/O入口路徑310e和出口路徑310g來(lái) 訪問(wèn)計(jì)算單元300的其他部分。
[0107]參考圖3,硬件調(diào)度器可包括用于實(shí)現(xiàn)對(duì)傳入分組的通信量管理的調(diào)度電路308b/ η??蓪?lái)自某個(gè)資源的、關(guān)于某種通信量類(lèi)別的、涉及特定應(yīng)用的或流向某個(gè)插槽的分組 稱(chēng)為會(huì)話(huà)流的部分,并且可使用會(huì)話(huà)元數(shù)據(jù)來(lái)對(duì)它們分類(lèi)??捎煞诸?lèi)器308e執(zhí)行此類(lèi)分類(lèi)。
[0108] 在一些實(shí)施例中,會(huì)話(huà)元數(shù)據(jù)308d可充當(dāng)準(zhǔn)則,通過(guò)該準(zhǔn)則,可排定分組的優(yōu)先級(jí) 并調(diào)度分組,并由此可基于它們的會(huì)話(huà)元數(shù)據(jù)來(lái)對(duì)傳入分組重排序。對(duì)分組的該重排序可 發(fā)生在一個(gè)或多個(gè)緩沖器中,并可修改這些流的通信量形狀。為該優(yōu)先級(jí)排定而選擇的調(diào) 度規(guī)則(或通信量管理(TM))可通過(guò)以下方式來(lái)影響流和微流的通信量形狀:延遲(緩沖); 通信量的突發(fā)(緩沖和突發(fā));通信量的平滑(緩沖和速率限制的流);丟棄通信量(選擇將丟 棄的數(shù)據(jù)以避免耗盡緩沖器);延遲抖動(dòng)(臨時(shí)地將流的單元移位不同的量);以及通過(guò)不準(zhǔn) 許連接(例如,不能夠同時(shí)保證現(xiàn)有的服務(wù)水平協(xié)議(SLA)和附加流的SLA)。
[0109] 根據(jù)諸實(shí)施例,計(jì)算單元300可充當(dāng)交換機(jī)結(jié)構(gòu)的部分,并且可將深度受限的輸出 隊(duì)列提供給通信量管理,由調(diào)度電路308b/n調(diào)度對(duì)這些輸出隊(duì)列的訪問(wèn)。使用調(diào)度規(guī)則來(lái) 管理此類(lèi)輸出隊(duì)列以提供對(duì)傳入流的通信量管理??赏ㄟ^(guò)輸出端口將這些隊(duì)列中的每一個(gè) 隊(duì)列中經(jīng)隊(duì)列排定的會(huì)話(huà)流發(fā)送到下游網(wǎng)絡(luò)元件。
[0110]應(yīng)注意,常規(guī)的通信量管理除了符合其與下游元件之間已經(jīng)具有的SLA協(xié)議之外, 不考慮由所述下游元件對(duì)數(shù)據(jù)的處理和管理。 相比之下,根據(jù)諸實(shí)施例,調(diào)度器電路308b/n可將優(yōu)先級(jí)分配給輸出隊(duì)列中的每 一個(gè)隊(duì)列,并且實(shí)施對(duì)傳入分組的重排序,以便在這些隊(duì)列中維持會(huì)話(huà)流的持續(xù)性。可使用 調(diào)度器電路308b/n來(lái)控制將這些持續(xù)會(huì)話(huà)中的每一個(gè)會(huì)話(huà)調(diào)度到在卸載處理器308i上被 執(zhí)行的通用操作系統(tǒng)(0S)308j中。如上文所定義的那樣,特定會(huì)話(huà)流的分組可屬于特定隊(duì) 列。調(diào)度器電路308b/n可控制對(duì)這些隊(duì)列的優(yōu)先級(jí)排定,使得可仲裁它們以便由位于下游 的通用(GP)處理資源(例如,卸載處理器308i)處理。在下游處理器308i上運(yùn)行的OS 308j可 將諸如處理器循環(huán)和存儲(chǔ)器之類(lèi)的執(zhí)行資源分配給它當(dāng)前正在處理的特定隊(duì)列。該0S 308j可進(jìn)一步為那個(gè)特定隊(duì)列分配線(xiàn)程或一組線(xiàn)程,使得可由通用處理元件308i明確地將 該特定隊(duì)列作為單獨(dú)的實(shí)體來(lái)處理??赡苡性贕P處理資源上運(yùn)行的多個(gè)會(huì)話(huà)且每一個(gè)會(huì)話(huà) 處理來(lái)自駐留在由調(diào)度器電路建立的隊(duì)列中的特定會(huì)話(huà)流的數(shù)據(jù)的事實(shí)緊密地整合調(diào)度 器與下游資源(例如,308i)。這可導(dǎo)致跨通信量管理和調(diào)度電路和通用處理資源308i的會(huì) 話(huà)信息的持續(xù)性。
[0112]專(zhuān)用計(jì)算資源(例如,308i)、存儲(chǔ)器空間和會(huì)話(huà)中的每一個(gè)的會(huì)話(huà)上下文信息可 提供在通用處理器308i處處置、處理和/或終止會(huì)話(huà)流中的每一個(gè)的方法。調(diào)度電路308b/n 可利用執(zhí)行資源的該功能來(lái)將會(huì)話(huà)流排成隊(duì)列以便調(diào)度下游??上蛘{(diào)度器電路308b/n通知 執(zhí)行資源(例如,308i)的狀態(tài)、在執(zhí)行資源上被運(yùn)行的當(dāng)前會(huì)話(huà)、被分配給它的存儲(chǔ)器空 間、處理器高速緩存中會(huì)話(huà)上下文的位置。
[0113]根據(jù)實(shí)施例,調(diào)度器電路308b/n可進(jìn)一步包括用于將執(zhí)行資源從一個(gè)狀態(tài)改變到 另一狀態(tài)的切換電路。調(diào)度器電路308b/n可使用此類(lèi)能力在準(zhǔn)備好被切換到下游執(zhí)行資源 中的隊(duì)列之間進(jìn)行仲裁。此外,可優(yōu)化下游執(zhí)行資源以減少與資源之間的上下文切換相關(guān) 聯(lián)的損失和開(kāi)銷(xiāo)??蛇M(jìn)一步由調(diào)度器電路308b/n來(lái)利用此以實(shí)施在隊(duì)列之間的無(wú)縫切換, 并因此由執(zhí)行資源將這些會(huì)話(huà)作為不同的會(huì)話(huà)來(lái)執(zhí)行。
[0114]根據(jù)諸實(shí)施例,調(diào)度器電路308b/n可在下游處理資源上調(diào)度不同的會(huì)話(huà),其中,協(xié) 調(diào)地操作兩者來(lái)減少上下文切換期間的開(kāi)銷(xiāo)。減少服務(wù)和工程計(jì)算可用性的等待時(shí)間時(shí)的 重要因素可以是與網(wǎng)絡(luò)隊(duì)列排定同步的硬件上下文切換。在諸實(shí)施例中,當(dāng)由通信量管理 器選擇隊(duì)列時(shí),流水線(xiàn)協(xié)調(diào)對(duì)應(yīng)的資源(例如,308i)的高速緩存(例如,L2高速緩存)的換入 (swapin),并且將經(jīng)重新組裝的I/O數(shù)據(jù)轉(zhuǎn)移到執(zhí)行進(jìn)程的存儲(chǔ)器空間中。在某些情況下, 隊(duì)列中沒(méi)有分組是待定(pending)的,但是計(jì)算仍然待定以維護(hù)先前的分組。一旦該進(jìn)程在 經(jīng)交換的數(shù)據(jù)外部進(jìn)行存儲(chǔ)器引用,調(diào)度器電路(308b/n)可使來(lái)自I/O設(shè)備302的經(jīng)隊(duì)列排 定的數(shù)據(jù)能夠繼續(xù)調(diào)度線(xiàn)程。
[0115] 在一些實(shí)施例中,為了向不具有數(shù)據(jù)的進(jìn)程提供公平的隊(duì)列排定,可將最大上下 文尺寸假定為經(jīng)處理的數(shù)據(jù)。按此方式,可將隊(duì)列供應(yīng)為計(jì)算資源與網(wǎng)絡(luò)帶寬資源中的較 大者。僅作為一個(gè)非常特定的示例,計(jì)算資源可以是以800MHz運(yùn)行的ARM A9處理器,而網(wǎng)絡(luò) 帶寬可以是3Gbps的帶寬??紤]到該比率的不平衡性質(zhì),諸實(shí)施例可利用具有許多并行會(huì)話(huà) (使得硬件對(duì)會(huì)話(huà)專(zhuān)用數(shù)據(jù)的預(yù)取出卸載主機(jī)處理器負(fù)載的大部分)且具有對(duì)數(shù)據(jù)的最少 通用處理的計(jì)算。
[0116] 相應(yīng)地,在一些實(shí)施例中,可將調(diào)度器電路308b/n概念化為不是以線(xiàn)路速率速度 在傳出隊(duì)列之間仲裁,而是以非常高的速度在被終止的會(huì)話(huà)之間仲裁。跨多級(jí)流水線(xiàn)(包括 通用0S)保持會(huì)話(huà)可以是優(yōu)化此類(lèi)流水線(xiàn)的此類(lèi)級(jí)中的任何級(jí)或所有級(jí)的調(diào)度器電路。
[0117] 或者,可使用2010年7月20日向Dalai頒證的美國(guó)專(zhuān)利No.7,760,715中所示的調(diào)度 方案,該美國(guó)專(zhuān)利通過(guò)引用被結(jié)合在本文中。當(dāng)期望對(duì)流進(jìn)行速率限制以防止專(zhuān)用于過(guò)度 選擇的流的另一資源的下游擁塞或?yàn)樘囟鲗?shí)施服務(wù)合約時(shí),該方案可能是有用的。實(shí)施 例可包括允許下游資源(諸如,可無(wú)縫地實(shí)施的通用0S)的服務(wù)合約的仲裁方案。
[0118]仍然參考圖3,根據(jù)本文中的諸實(shí)施例的硬件調(diào)度器或等效物可提供基于會(huì)話(huà)元 數(shù)據(jù)來(lái)將傳入分組數(shù)據(jù)分類(lèi)為諸會(huì)話(huà)流。在對(duì)這些流仲裁并將在卸載處理器上將它們排定 為不同處理實(shí)體的隊(duì)列之前,它可進(jìn)一步提供對(duì)這些流的通信量管理。
[0119] 在一些實(shí)施例中,卸載處理器(例如,308i)可以是通用處理單元,該通用處理單元 能夠處理不同應(yīng)用的分組或傳輸會(huì)話(huà)。此類(lèi)卸載處理器可以是能夠執(zhí)行通用指令的低功率 處理器。卸載處理器可以是任何合適的處理器,包括但不限于,ARM、ARC、泰思立達(dá) (Tensilica)、MIPS、StrongARM或提供本文中所述功能的任何其他處理器。此類(lèi)卸載處理器 具有在其上運(yùn)行的通用0S,其中,優(yōu)化該通用0S以減少與在不同的線(xiàn)程或線(xiàn)程組之間的上 下文切換相關(guān)聯(lián)的損失。
[0120]相比之下,主機(jī)處理器上的上下文切換可能是計(jì)算密集型進(jìn)程,其需要寄存器保 存區(qū)、高速緩存中的進(jìn)程上下文以及如果使它們失效或覆寫(xiě)它們時(shí)將被恢復(fù)的TLB條目。主 機(jī)處理系統(tǒng)中的指令高速緩存未命中可能導(dǎo)致流水線(xiàn)停止,而數(shù)據(jù)高速緩存未命中導(dǎo)致操 作停止,并且此類(lèi)高速緩存未命中降低處理器效率并增加處理器開(kāi)銷(xiāo)。
[0121] 同樣相比之下,在卸載處理器308i上運(yùn)行的OS 308j與調(diào)度器電路308b/n結(jié)合可 一起操作來(lái)減少在運(yùn)行于其上的不同的處理實(shí)體之間導(dǎo)致的上下文切換開(kāi)銷(xiāo)。諸實(shí)施例可 包括調(diào)度器電路與卸載處理器308i上的0S之間的協(xié)作機(jī)制,其中,0S建立將在高速緩存中 是物理上連續(xù)的(針對(duì)會(huì)話(huà)堆和棧的物理著色的分配器)會(huì)話(huà)上下文;隨后在會(huì)話(huà)初始化之 后,將會(huì)話(huà)顏色、尺寸和起始物理地址傳遞到調(diào)度器電路。在實(shí)際的上下文切換期間,調(diào)度 器電路可通過(guò)使用這些參數(shù)來(lái)標(biāo)識(shí)會(huì)話(huà)上下文,并且可發(fā)起將這些內(nèi)容傳遞到外部低等待 時(shí)間存儲(chǔ)器(例如,308g)的批量轉(zhuǎn)移。此外,如果舊會(huì)話(huà)的上下文被保存在本地存儲(chǔ)器308g 中,則調(diào)度器電路可管理該舊會(huì)話(huà)的預(yù)取出。在特定實(shí)施例中,僅作為一個(gè)非常特定的實(shí)施 例,本地存儲(chǔ)器308g可以是低等待時(shí)間存儲(chǔ)器,諸如,減少等待時(shí)間的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器 (RLDRAM)。因此,在諸實(shí)施例中,可明確地在高速緩存中標(biāo)識(shí)會(huì)話(huà)上下文。
[0122] 在一些實(shí)施例中,可限制上下文尺寸以確??焖俚那袚Q速度。附加地或替代地,諸 實(shí)施例可包括用于將會(huì)話(huà)上下文向外轉(zhuǎn)移到本地存儲(chǔ)器308g的批量轉(zhuǎn)移機(jī)制。隨后,在往 回到前一會(huì)話(huà)的上下文切換期間,可檢索并預(yù)取出存儲(chǔ)在本地存儲(chǔ)器308g中的高速緩存內(nèi) 容??稍诒镜卮鎯?chǔ)器308g中標(biāo)記和/或標(biāo)識(shí)不同的上下文會(huì)話(huà)數(shù)據(jù),以便進(jìn)行快速檢索。如 上所述,可由不同的卸載處理器重新調(diào)用由一個(gè)卸載處理器存儲(chǔ)的上下文。
[0123] 在圖3的非常特定的實(shí)施例中,可將多個(gè)卸載處理核整合到計(jì)算FPGA308中??捎?另一FPGA 310中的仲裁器電路來(lái)仲裁多個(gè)計(jì)算FPGA。計(jì)算FPGA(例如,308)與仲裁器FPGA (例如,310)的組合被稱(chēng)為"X頂M"模塊或"Xocket DIMM模塊"(例如,計(jì)算單元300)。在特定 應(yīng)用中,這些XIMM模塊可提供代理在卸載處理器上的多個(gè)會(huì)話(huà)的執(zhí)行的集成的通信量和線(xiàn) 程管理電路。
[0124] 圖3還示出卸載處理器隧道(tunnel)連接308k,以及存儲(chǔ)器接口308m和訪問(wèn)單元 3081 (其可以是加速器一致性端口(ACP))。存儲(chǔ)器接口 308m可訪問(wèn)緩沖器存儲(chǔ)器308a。根據(jù) 諸實(shí)施例,系統(tǒng)301可包括使用訪問(wèn)(或"監(jiān)聽(tīng)"("snooping")單元)3081來(lái)訪問(wèn)卸載處理器 308i的高速緩存內(nèi)容。在特定實(shí)施例中,被訪問(wèn)的高速緩存可以是L2高速緩存。訪問(wèn)單元 3081可提供端口或其他訪問(wèn)能力,其可將數(shù)據(jù)從外部的非高速緩存存儲(chǔ)器308g加載到卸載 處理器高速緩存,并將卸載處理器308i的高速緩存內(nèi)容轉(zhuǎn)移到非高速緩存存儲(chǔ)器308g。作 為計(jì)算元件300的部分,可能有形成存儲(chǔ)器308g的若干存儲(chǔ)器設(shè)備(例如,RAM)。由此,可使 用存儲(chǔ)器308g來(lái)存儲(chǔ)會(huì)話(huà)的高速緩存內(nèi)容。存儲(chǔ)器308g可包括一個(gè)或多個(gè)低等待時(shí)間存儲(chǔ) 器,并且可被概念化為補(bǔ)充和/或擴(kuò)充可用的L2高速緩存,并延伸會(huì)話(huà)的一致性域。附加存 儲(chǔ)器308g和訪問(wèn)單元3081可減小對(duì)于被切換入會(huì)話(huà)的高速緩存未命中的不利影響,因?yàn)榭?將會(huì)話(huà)的上下文取出或預(yù)取出到卸載處理器高速緩存中,使得當(dāng)線(xiàn)程恢復(fù)時(shí),該線(xiàn)程的先 前工作集之中的大多數(shù)已經(jīng)存在于高速緩存中。
[0125] 根據(jù)一個(gè)特定實(shí)施例,在會(huì)話(huà)切換出時(shí),可經(jīng)由隧道308k將卸載處理器308i的高 速緩存內(nèi)容轉(zhuǎn)移到存儲(chǔ)器308g。然而,在一些實(shí)施例中,可將線(xiàn)程的寄存器集合保存到存儲(chǔ) 器中,作為切換出的部分,由此,這些寄存器的內(nèi)容可駐留在高速緩存中。因此,作為切換入 的部分,當(dāng)預(yù)取出會(huì)話(huà)的內(nèi)容并將其轉(zhuǎn)移到卸載處理器308i的高速緩存中時(shí),在恢復(fù)線(xiàn)程 后,可由內(nèi)核加載寄存器內(nèi)容,并且這些加載應(yīng)當(dāng)來(lái)自高速緩存而不是來(lái)自存儲(chǔ)器308g。由 此,憑借對(duì)會(huì)話(huà)的高速緩存內(nèi)容的仔細(xì)管理,可大大地減少因寄存器集合保存和還原以及 切換入時(shí)的高速緩存未命中而導(dǎo)致的上下文切換的成本,從而消除上下文切換開(kāi)銷(xiāo)的兩個(gè) 源并減少被切換入的會(huì)話(huà)恢復(fù)有用的處理的等待時(shí)間。
[0126] 根據(jù)一些實(shí)施例,訪問(wèn)(或監(jiān)聽(tīng))單元(例如,3081)可具有高速緩存中相關(guān)會(huì)話(huà)上 下文所駐留的所有行的索引。如果跨物理索引的高速緩存中的諸個(gè)位置分散會(huì)話(huà),則訪問(wèn) 全部這些會(huì)話(huà)內(nèi)容可能變得非常繁瑣,因?yàn)閷⑿枰啻蔚刂忿D(zhuǎn)換來(lái)訪問(wèn)相同會(huì)話(huà)的多個(gè)頁(yè) 面。相應(yīng)地,諸實(shí)施例可包括頁(yè)面著色方案,其中在物理索引的高速緩存中的連續(xù)位置中建 立會(huì)話(huà)內(nèi)容。針對(duì)會(huì)話(huà)數(shù)據(jù)的存儲(chǔ)器分配器可從物理上連續(xù)的頁(yè)面進(jìn)行分配,使得對(duì)會(huì)話(huà) 的物理地址范圍具有控制。在一些實(shí)施例中,通過(guò)對(duì)齊虛擬存儲(chǔ)器頁(yè)面和物理存儲(chǔ)器頁(yè)面 以索引到高速緩存中相同的位置(例如,圖1-3)來(lái)做到這一點(diǎn)。在替代實(shí)施例中,虛擬和物 理存儲(chǔ)器頁(yè)面不一定必須索引物理索引的高速緩存中的相同位置,但是會(huì)話(huà)的不同頁(yè)面在 物理存儲(chǔ)器中可能是連續(xù)的,使得對(duì)高速緩存中的起始索引和條目尺寸的知曉足以訪問(wèn)所 有會(huì)話(huà)數(shù)據(jù)。此外,組尺寸(set size)等于會(huì)話(huà)尺寸,使得一旦知曉高速緩存中會(huì)話(huà)條目的 索引,就可使用該索引、該尺寸以及組顏色來(lái)完全地將會(huì)話(huà)內(nèi)容從高速緩存向外轉(zhuǎn)移到外 部存儲(chǔ)器(例如,308g)。
[0127] 根據(jù)諸實(shí)施例,在卸載處理器的高速緩存中,可將相同的顏色分派給會(huì)話(huà)的所有 頁(yè)面。在特定實(shí)施例中,會(huì)話(huà)的所有頁(yè)面可開(kāi)始于所定義顏色的頁(yè)面邊界處?;诟咚倬彺?中會(huì)話(huà)的尺寸,可將被分配給某顏色的頁(yè)面的數(shù)量固定。卸載處理器(例如,308i)可用于執(zhí) 行特定類(lèi)型的會(huì)話(huà),并且可提前通知每一個(gè)會(huì)話(huà)的尺寸。基于此,卸載處理器可在會(huì)話(huà)邊界 處開(kāi)始新條目。它可類(lèi)似地在物理存儲(chǔ)器中分配索引到高速緩存中的會(huì)話(huà)邊界的頁(yè)面???保存開(kāi)始于會(huì)話(huà)邊界處的整個(gè)高速緩存上下文。在當(dāng)前所述的實(shí)施例中,會(huì)話(huà)中的多個(gè)頁(yè) 面在物理索引的高速緩存中可以是連續(xù)的。會(huì)話(huà)的多個(gè)頁(yè)面可具有相同的顏色(g卩,它們是 相同組的部分)并且在位置上連續(xù)。通過(guò)使用從會(huì)話(huà)的基索引的偏移,會(huì)話(huà)的諸頁(yè)面是可訪 問(wèn)的??蓪⒏咚倬彺姘才呕蚍纸鉃樽鳛闀?huì)話(huà)而非頁(yè)面的不同的組。為了從一個(gè)會(huì)話(huà)移動(dòng)至 另一會(huì)話(huà),存儲(chǔ)器分配方案使用相對(duì)于用于訪問(wèn)這些會(huì)話(huà)的索引的最低位的偏移。例如,物 理索引的高速緩存可以是具有512kb尺寸的L2高速緩存。高速緩存可以是8路相聯(lián)的,在L2 高速緩存中,對(duì)于每一個(gè)可能的組有八條通路。因此,對(duì)于L2中任何一個(gè)顏色具有八行,或 者對(duì)于L2中的每一個(gè)顏色有八個(gè)單獨(dú)的實(shí)例。由于會(huì)話(huà)上下文8Kb的尺寸,在512Kb的L2高 速緩存中將有八個(gè)不同的會(huì)話(huà)區(qū),或伴隨這些所選的尺寸有八個(gè)會(huì)話(huà)顏色。
[0128] 根據(jù)諸實(shí)施例,物理存儲(chǔ)器分配器可基于時(shí)間上在先的會(huì)話(huà)的高速緩存條目/主 存儲(chǔ)器條目來(lái)標(biāo)識(shí)對(duì)應(yīng)于會(huì)話(huà)的顏色。在特定實(shí)施例中,物理存儲(chǔ)器分配器可基于用于將 高速緩存條目分派給前一個(gè)會(huì)話(huà)的地址的3位來(lái)標(biāo)識(shí)前一個(gè)會(huì)話(huà)的會(huì)話(huà)。物理存儲(chǔ)器分配 器可將新會(huì)話(huà)分派到主存儲(chǔ)器位置(可通過(guò)與最近使用過(guò)的條目進(jìn)行的一些比較來(lái)確定其 顏色),并且將基于最近最少使用策略來(lái)使對(duì)應(yīng)于不同顏色的會(huì)話(huà)的高速緩存條目被驅(qū)逐。 在另一實(shí)施例中,卸載處理器可包括多個(gè)核。在此類(lèi)實(shí)施例中,可高速緩存條目鎖定在外 部,以便由每一個(gè)處理器核使用。例如,如果卸載處理器具有兩個(gè)核,則可在處理器之間劃 分高速緩存(即,L2高速緩存)中高速緩存行的給定組,從而使顏色的數(shù)量減半。當(dāng)創(chuàng)建新會(huì) 話(huà)時(shí),可將會(huì)話(huà)的顏色、會(huì)話(huà)的索引和會(huì)話(huà)尺寸傳遞到外部調(diào)度器。該信息可用于傳入會(huì)話(huà) 流的隊(duì)列管理。
[0129] 諸實(shí)施例也可通過(guò)將這些行鎖到高速緩存中來(lái)準(zhǔn)許將共享文本和任何共享數(shù)據(jù) 與會(huì)話(huà)數(shù)據(jù)隔離開(kāi)。同樣,可使用物理存儲(chǔ)器分配器和物理著色技術(shù)。如果將單獨(dú)的共享數(shù) 據(jù)置于高速緩存中,則只要由訪問(wèn)單元(例如,ACP)進(jìn)行的轉(zhuǎn)移不復(fù)制此類(lèi)行,則將該共享 數(shù)據(jù)鎖到高速緩存中就是可能的。當(dāng)為會(huì)話(huà)數(shù)據(jù)分配存儲(chǔ)器時(shí),在映射駐留在高速緩存中 的會(huì)話(huà)數(shù)據(jù)時(shí),存儲(chǔ)器分配器可知曉物理顏色。
[0130]已描述了適用于高速緩存和上下文切換管理操作的各實(shí)施例,現(xiàn)在將描述闡釋特 定方面的示例。
[0131] 圖4示出根據(jù)實(shí)施例的系統(tǒng)的減少開(kāi)銷(xiāo)的上下文切換的方法400。在初始化時(shí),可 作出是否需要會(huì)話(huà)著色的確定(402)。可由0S作出此類(lèi)確定。如果不需要會(huì)話(huà)著色(從402為 否),則頁(yè)面著色可能存在或可能不存在,這依賴(lài)于0S的默認(rèn)選擇(424)。
[0132] 如果需要會(huì)話(huà)著色(從402為是),則0S可初始化存儲(chǔ)器分配器(404)。存儲(chǔ)器分配 器可采用可將每一個(gè)會(huì)話(huà)條目分配到"會(huì)話(huà)"邊界的高速緩存優(yōu)化技術(shù)。存儲(chǔ)器分配器可確 定每個(gè)會(huì)話(huà)的起始地址、高速緩存中可允許的會(huì)話(huà)數(shù)量以及可發(fā)現(xiàn)給定顏色的會(huì)話(huà)的位置 的數(shù)量。此類(lèi)操作可包括確定可用組的數(shù)量,該可用組的數(shù)量基于高速緩存尺寸、顏色數(shù)量 以及會(huì)話(huà)尺寸(步驟406)。
[0133] 當(dāng)針對(duì)會(huì)話(huà)的分組到達(dá)時(shí),可作出該分組是針對(duì)當(dāng)前會(huì)話(huà)還是針對(duì)不同的會(huì)話(huà)的 確定(408)??捎?S執(zhí)行此類(lèi)動(dòng)作。如果分組針對(duì)不同的會(huì)話(huà)(從408為是),則可作出該分組 是否來(lái)自較早的會(huì)話(huà)的確定(410)。如果該分組不是來(lái)自較早的會(huì)話(huà)(即,它是新會(huì)話(huà)),則 可作出是否存在用于該新會(huì)話(huà)的足夠的存儲(chǔ)器的確定(418)。如果存在足夠空間(從418為 是),則可進(jìn)行到新會(huì)話(huà)的切換(422)。此類(lèi)動(dòng)作可包括:將新會(huì)話(huà)分配在會(huì)話(huà)邊界處,并將 當(dāng)前正在執(zhí)行的進(jìn)程的上下文保存到上下文存儲(chǔ)器(其可以是外部的低等待時(shí)間存儲(chǔ)器)。
[0134] 如果沒(méi)有高速緩存存儲(chǔ)器可用于新會(huì)話(huà)(從418為否)和/或該分組針對(duì)較早的會(huì) 話(huà)(從410為是),則可進(jìn)行檢查來(lái)確定舊/新會(huì)話(huà)的分組是否是相同顏色的(412)。如果它是 不同顏色的(從412為否),則可進(jìn)行到該會(huì)話(huà)的切換(步驟414)。此類(lèi)動(dòng)作可包括:檢索(對(duì) 于較早的會(huì)話(huà))或創(chuàng)建(對(duì)于新會(huì)話(huà))任務(wù)的高速緩存條目。此外,如果需要,此類(lèi)動(dòng)作可包 括根據(jù)LRU方案進(jìn)行的對(duì)高速緩存條目的清除。
[0135] 如果舊/新會(huì)話(huà)的分組是相同顏色的(從412為是),則可作出關(guān)于是否可能超出顏 色壓力的確定(416)。如果可能超出顏色壓力,或某個(gè)其他顏色的會(huì)話(huà)不可用(從416為"是; 或者……"),則可進(jìn)行到新會(huì)話(huà)的切換(420)。此類(lèi)動(dòng)作可包括:創(chuàng)建高速緩存條目并記住 新會(huì)話(huà)顏色。如果不會(huì)超出顏色壓力,但是某個(gè)其他顏色的會(huì)話(huà)是可用的(從416為"否,但 是……"),則方法可繼續(xù)進(jìn)行到414。
[0136] 應(yīng)當(dāng)領(lǐng)會(huì),在對(duì)本發(fā)明的諸示例性實(shí)施例的上述描述中,為了使本公開(kāi)流暢從而 輔助對(duì)各個(gè)發(fā)明性方面中的一個(gè)或多個(gè)的理解,有時(shí)將本發(fā)明的各特征一起組合在單個(gè)實(shí) 施例、附圖或它們的描述中。然而,不應(yīng)當(dāng)將這種公開(kāi)方法解釋為反映要求保護(hù)的本發(fā)明需 要比每項(xiàng)權(quán)利要求中明確記載的更多特征的意圖。相反,如所附權(quán)利要求反映的那樣,發(fā)明 性方面在于少于上述所公開(kāi)的單個(gè)實(shí)施例的所有特征。因此,將遵循【具體實(shí)施方式】的諸權(quán) 利要求明確地結(jié)合進(jìn)該【具體實(shí)施方式】中,每一項(xiàng)權(quán)利要求獨(dú)立地作為本發(fā)明的單獨(dú)實(shí)施例 而存在。
[0137] 也應(yīng)當(dāng)理解,可在不存在未專(zhuān)門(mén)公開(kāi)的元件和/或步驟的情況下實(shí)踐本發(fā)明的諸 實(shí)施例。也就是說(shuō),本發(fā)明的發(fā)明性特征可以是某元件的消除。
[0138] 相應(yīng)地,雖然已詳細(xì)地描述了本文中陳述的特定實(shí)施例的各方面,但是,本發(fā)明可 受制于各種改變、替換和變更而不背離本發(fā)明的精神和范圍。
【主權(quán)項(xiàng)】
1. 一種上下文切換高速緩存系統(tǒng),包括: 多個(gè)卸載處理器,連接到存儲(chǔ)器總線(xiàn),每一個(gè)卸載處理器具有帶有相關(guān)聯(lián)的高速緩存 狀態(tài)的高速緩存, 上下文存儲(chǔ)器,耦合到所述卸載處理器,以及 調(diào)度電路,配置成用于在所述卸載處理器中的至少一個(gè)卸載處理器與所述上下文存儲(chǔ) 器之間引導(dǎo)高速緩存狀態(tài)的轉(zhuǎn)移。2. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述多個(gè)卸載處理器具有用于訪問(wèn)所述多個(gè) 卸載處理器的高速緩存狀態(tài)的加速器一致性端口。3. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述相關(guān)聯(lián)的高速緩存狀態(tài)包括從以下各項(xiàng) 的組中選出的至少一項(xiàng):卸載處理器寄存器的狀態(tài)、用于由卸載處理器執(zhí)行的指令、棧指 針、程序計(jì)數(shù)器、用于由卸載處理器執(zhí)行的預(yù)取出的指令、用于由卸載處理器使用的預(yù)取出 的數(shù)據(jù)以及被寫(xiě)入到卸載處理器的高速緩存中的數(shù)據(jù)。4. 如權(quán)利要求1所述的系統(tǒng),其特征在于:至少一個(gè)卸載處理器配置為用于運(yùn)行操作系 統(tǒng)(0S);并且所述調(diào)度電路配置為用于與所述0S協(xié)作,以便將處理會(huì)話(huà)的上下文設(shè)置為在 卸載處理器的高速緩存中是物理上連續(xù)的。5. 如權(quán)利要求1所述的系統(tǒng),其特征在于:至少一個(gè)卸載處理器配置為用于運(yùn)行操作系 統(tǒng)(0S);并且所述調(diào)度電路配置為用于與所述0S協(xié)作,以便將處理會(huì)話(huà)的上下文設(shè)置為在 卸載處理器的高速緩存中是物理上連續(xù)的,并且在卸載處理器的高速緩存中設(shè)置處理會(huì)話(huà) 的顏色、尺寸和起始物理地址。6. 如權(quán)利要求1所述的系統(tǒng),其特征在于:至少一個(gè)卸載處理器配置為用于運(yùn)行操作系 統(tǒng)(0S);并且所述調(diào)度電路配置為用于與所述0S協(xié)作,以便將處理會(huì)話(huà)的上下文設(shè)置為在 卸載處理器的高速緩存中是物理上連續(xù)的,并且在卸載處理器的高速緩存中設(shè)置處理會(huì)話(huà) 的顏色、尺寸和起始物理地址、以及高速緩存中所允許的會(huì)話(huà)的數(shù)量、以及在高速緩存中能 發(fā)現(xiàn)給定顏色的會(huì)話(huà)的位置的數(shù)量。7. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述調(diào)度電路配置為用于引導(dǎo)一個(gè)卸載處理 器的高速緩存狀態(tài)到另一卸載處理器的高速緩存的轉(zhuǎn)移。8. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述調(diào)度電路配置為用于通過(guò)以下操作來(lái)對(duì) 第一隊(duì)列中的網(wǎng)絡(luò)分組的處理排定優(yōu)先級(jí):停止與所述卸載處理器中的一個(gè)卸載處理器相 關(guān)聯(lián)的第一會(huì)話(huà);存儲(chǔ)卸載處理器的高速緩存狀態(tài);以及發(fā)起對(duì)被保持在第二隊(duì)列中的網(wǎng) 絡(luò)分組的處理。9. 如權(quán)利要求1所述的系統(tǒng),其特征在于: 所述相關(guān)聯(lián)的高速緩存狀態(tài)包括從以下各項(xiàng)的組中選出的至少一項(xiàng):卸載處理器寄存 器的狀態(tài)、用于由卸載處理器執(zhí)行的指令、棧指針、程序計(jì)數(shù)器、用于由卸載處理器執(zhí)行的 預(yù)取出的指令、用于由卸載處理器使用的預(yù)取出的數(shù)據(jù)以及被寫(xiě)入到卸載處理器的高速緩 存中的數(shù)據(jù); 至少一個(gè)卸載處理器配置為用于運(yùn)行操作系統(tǒng)(0S);以及 所述調(diào)度電路配置為用于與所述0S協(xié)作以將會(huì)話(huà)上下文設(shè)置為在卸載處理器的高速 緩存中是物理上連續(xù)的。10. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述調(diào)度電路配置為通過(guò)所述存儲(chǔ)器總線(xiàn), 在所述卸載處理器中的至少一個(gè)卸載處理器與所述上下文存儲(chǔ)器之間引導(dǎo)高速緩存狀態(tài) 的轉(zhuǎn)移。11. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述上下文存儲(chǔ)器包括至少一個(gè)低等待時(shí) 間存儲(chǔ)器設(shè)備。12. -種用于多個(gè)卸載處理器的上下文切換的方法,所述多個(gè)卸載處理器經(jīng)耦合以便 在存儲(chǔ)器總線(xiàn)上接收數(shù)據(jù)以進(jìn)行處理,所述方法包括以下步驟: 通過(guò)調(diào)度電路的操作,經(jīng)由從多個(gè)卸載處理器中的至少一個(gè)卸載處理器進(jìn)入上下文存 儲(chǔ)器的批量讀取來(lái)引導(dǎo)高速緩存上下文的存儲(chǔ),并且所述高速緩存狀態(tài)的任何虛擬和物理 存儲(chǔ)器位置被對(duì)齊,以及 隨后,通過(guò)所述調(diào)度電路的操作,引導(dǎo)將所述高速緩存狀態(tài)轉(zhuǎn)移到所述卸載處理器中 的至少一個(gè)卸載處理器以進(jìn)行處理。13. 如權(quán)利要求12所述的方法,其特征在于,所述批量讀取通過(guò)加速器一致性端口。14. 如權(quán)利要求12所述的方法,其特征在于,所述相關(guān)聯(lián)的高速緩存狀態(tài)包括以下中的 至少一項(xiàng):卸載處理器寄存器的狀態(tài)、用于由卸載處理器執(zhí)行的指令、棧指針、程序計(jì)數(shù)器、 用于由卸載處理器執(zhí)行的預(yù)取出的指令、用于由卸載處理器使用的預(yù)取出的數(shù)據(jù)以及被寫(xiě) 入到卸載處理器的高速緩存中的數(shù)據(jù)。15. 如權(quán)利要求12所述的方法,其特征在于,還包括:所述高速緩存狀態(tài)包括會(huì)話(huà)上下 文;并且通過(guò)運(yùn)行在卸載處理器上的操作系統(tǒng)(0S)與所述調(diào)度電路的協(xié)作將所述會(huì)話(huà)上下 文設(shè)置為在卸載處理器的高速緩存中是物理上連續(xù)的。16. 如權(quán)利要求12所述的方法,其特征在于,還包括:在對(duì)處理會(huì)話(huà)的初始化之后,將會(huì) 話(huà)顏色、會(huì)話(huà)尺寸以及所述處理會(huì)話(huà)的起始物理高速緩存地址傳遞到所述調(diào)度電路。17. 如權(quán)利要求12所述的方法,其特征在于,還包括:確定多個(gè)處理會(huì)話(huà)中的每一個(gè)處 理會(huì)話(huà)的起始地址、卸載處理器的高速緩存中所允許的會(huì)話(huà)的數(shù)量以及能發(fā)現(xiàn)給定會(huì)話(huà)顏 色的會(huì)話(huà)的位置的數(shù)量。18. 如權(quán)利要求12所述的方法,其特征在于,還包括:將所述卸載處理器中的一個(gè)卸載 處理器的高速緩存狀態(tài)轉(zhuǎn)移到所述卸載處理器中的另一卸載處理器的高速緩存。19. 如權(quán)利要求12所述的方法,其特征在于,還包括通過(guò)以下操作來(lái)對(duì)通過(guò)所述存儲(chǔ)器 總線(xiàn)接收到的第一隊(duì)列中的網(wǎng)絡(luò)分組的處理排定優(yōu)先級(jí):停止與所述卸載處理器中的一個(gè) 卸載處理器相關(guān)聯(lián)的第一會(huì)話(huà);存儲(chǔ)卸載處理器的高速緩存狀態(tài);以及發(fā)起對(duì)被保持在第 二隊(duì)列中的網(wǎng)絡(luò)分組的處理。20. 如權(quán)利要求12所述的方法,其特征在于,還包括:將由卸載處理器執(zhí)行的處理的會(huì) 話(huà)上下文設(shè)置為在卸載處理器的高速緩存中是物理上連續(xù)的。21. 如權(quán)利要求12所述的方法,其特征在于,從所述高速緩存進(jìn)入所述上下文存儲(chǔ)器的 所述批量讀取包括:通過(guò)所述存儲(chǔ)器總線(xiàn)進(jìn)入低等待時(shí)間存儲(chǔ)器設(shè)備的批量讀取。22. -種用于多個(gè)卸載處理器的上下文切換的方法,包括以下步驟: 通過(guò)存儲(chǔ)器總線(xiàn)連接的插槽來(lái)接收用于處理的網(wǎng)絡(luò)分組, 將所述網(wǎng)絡(luò)分組組織為用于處理的多個(gè)會(huì)話(huà), 通過(guò)由調(diào)度電路的操作而將所述卸載處理器中的至少一個(gè)卸載處理器的高速緩存狀 態(tài)讀取到上下文存儲(chǔ)器中來(lái)掛起至少一個(gè)會(huì)話(huà)的處理,并且虛擬存儲(chǔ)器位置和物理高速緩 存位置被對(duì)齊,以及 隨后,通過(guò)所述調(diào)度電路的操作,引導(dǎo)將所述高速緩存狀態(tài)轉(zhuǎn)移到所述卸載處理器中 的至少一個(gè)卸載處理器以進(jìn)行處理。23. 如權(quán)利要求22所述的方法,其特征在于,所述批量讀取通過(guò)加速器一致性端口。24. 如權(quán)利要求22所述的方法,其特征在于,所述相關(guān)聯(lián)的高速緩存狀態(tài)包括以下中的 至少一項(xiàng):卸載處理器寄存器的狀態(tài)、用于由卸載處理器執(zhí)行的指令、棧指針、程序計(jì)數(shù)器、 用于由卸載處理器執(zhí)行的預(yù)取出的指令、用于由卸載處理器使用的預(yù)取出的數(shù)據(jù)以及被寫(xiě) 入到卸載處理器的高速緩存中的數(shù)據(jù)。24. 如權(quán)利要求22所述的方法,其特征在于,還包括: 所述高速緩存狀態(tài)包括會(huì)話(huà)上下文;并且 通過(guò)運(yùn)行在卸載處理器上的操作系統(tǒng)(0S)與所述調(diào)度電路的協(xié)作,將所述會(huì)話(huà)上下文 設(shè)置為在卸載處理器的高速緩存中是物理上連續(xù)的。25. 如權(quán)利要求22所述的方法,其特征在于,還包括:在對(duì)處理會(huì)話(huà)的初始化之后,將會(huì) 話(huà)顏色、會(huì)話(huà)尺寸以及所述處理會(huì)話(huà)的起始物理高速緩存地址傳遞到所述調(diào)度電路。26. 如權(quán)利要求22所述的方法,其特征在于,還包括: 確定多個(gè)處理會(huì)話(huà)中的每一個(gè)處理會(huì)話(huà)的起始地址、卸載處理器的高速緩存中所允許 的會(huì)話(huà)的數(shù)量以及能發(fā)現(xiàn)給定會(huì)話(huà)顏色的會(huì)話(huà)的位置的數(shù)量。27. 如權(quán)利要求22所述的方法,其特征在于,還包括:將所述卸載處理器中的一個(gè)卸載 處理器的高速緩存狀態(tài)轉(zhuǎn)移到所述卸載處理器中的另一卸載處理器的高速緩存。28. 如權(quán)利要求22所述的方法,其特征在于,還包括通過(guò)以下操作來(lái)對(duì)通過(guò)所述存儲(chǔ)器 總線(xiàn)接收到的第一隊(duì)列中的網(wǎng)絡(luò)分組的處理排定優(yōu)先級(jí):停止與所述卸載處理器中的一個(gè) 卸載處理器相關(guān)聯(lián)的第一會(huì)話(huà);存儲(chǔ)卸載處理器的高速緩存狀態(tài);以及發(fā)起對(duì)被保持在第 二隊(duì)列中的網(wǎng)絡(luò)分組的處理。29. 如權(quán)利要求22所述的方法,其特征在于,掛起至少一個(gè)會(huì)話(huà)的處理包括:以搶占式 模式操作以便控制會(huì)話(huà)執(zhí)行。30. 如權(quán)利要求22所述的方法,其特征在于,接收網(wǎng)絡(luò)分組包括:在所述存儲(chǔ)器總線(xiàn)上, 通過(guò)兼容雙列直插存儲(chǔ)器模塊(DIMM)的插槽來(lái)接收網(wǎng)絡(luò)分組。
【文檔編號(hào)】G06F13/00GK105874441SQ201380074213
【公開(kāi)日】2016年8月17日
【申請(qǐng)日】2013年6月26日
【發(fā)明人】P·達(dá)拉爾, S·貝萊爾
【申請(qǐng)人】??怂骺拼墓煞萦邢薰?br>