分布式共享存儲器多處理器中的分裂流量路由相關(guān)申請的交叉引用本申請要求2010年12月15日申請的美國非臨時申請第12/968,857號的權(quán)益,所述申請的內(nèi)容以引用方式并入本文。技術(shù)領(lǐng)域本申請涉及處理器的流量路由。
背景技術(shù):在多個處理單元(每個處理單元具有幾個核心)或計(jì)算單元所組成的處理器中,在核心和高速緩沖存儲器之間存在帶寬變化的鏈路,從而允許流量傳送。這些鏈路中任何鏈路上的流量擁堵都會降低處理器的性能。通過流量路由的分散來減輕擁堵,便可能導(dǎo)致附加的躍點(diǎn)到達(dá)目的地,從而導(dǎo)致單個傳送的等待時間有所增加。
技術(shù)實(shí)現(xiàn)要素:一種多芯片模塊配置包括兩個處理器,每個處理器具有兩個節(jié)點(diǎn),每個節(jié)點(diǎn)包括多個核心或計(jì)算單元。每個節(jié)點(diǎn)通過高帶寬或低帶寬鏈路而連接到其它節(jié)點(diǎn)。所述節(jié)點(diǎn)之間的流量路由,在每個節(jié)點(diǎn)上根據(jù)路由表和/或控制寄存器加以控制,所述路由表和/或控制寄存器會優(yōu)化帶寬使用和流量擁堵控制。附圖說明圖1是處理器節(jié)點(diǎn)的示例功能方塊圖,其中處理器節(jié)點(diǎn)包括幾個計(jì)算單元、路由表和交叉單元,所述交叉單元與通向其它節(jié)點(diǎn)的相應(yīng)鏈路對接;以及圖2到圖4是處理器配置的示例功能方塊圖,其中處理器配置具有穿過處理器節(jié)點(diǎn)之間各種鏈路的流量。具體實(shí)施方式在本申請中,處理器可以包括多個節(jié)點(diǎn),其中每個節(jié)點(diǎn)具有多個計(jì)算單元。多芯片處理器經(jīng)過配置而包括至少兩個處理器,并且借助相應(yīng)方式將節(jié)點(diǎn)鏈接到其它節(jié)點(diǎn)和高速緩沖存儲器。圖1是處理器110的示例功能方塊圖。處理器110可以是各種處理器中的任何一種,如中央處理單元(CPU)或圖形處理單元(GPU)。舉例來說,處理器110可以是實(shí)施x8664位指令集架構(gòu)的x86處理器,并用于臺式計(jì)算機(jī)、膝上型計(jì)算機(jī)、服務(wù)器和超標(biāo)量體系結(jié)構(gòu)計(jì)算機(jī)中,或者處理器110也可以是高級RISC(精減指令集計(jì)算機(jī))機(jī)器(ARM)處理器,所述處理器用于移動電話或數(shù)字媒體播放器中。處理器的其它實(shí)施方案也是預(yù)期之中的,如數(shù)字信號處理器(DSP)和微控制器,所述數(shù)字信號處理器在數(shù)字信號(如語音數(shù)據(jù)和通信信號)相關(guān)算法的處理和實(shí)施中是特別有用的,而所述微控制器可以用于消費(fèi)品應(yīng)用中,如打印機(jī)和復(fù)印機(jī)。如圖所示,處理器110包括計(jì)算單元105、106和107,這些計(jì)算單元連接到系統(tǒng)請求隊(duì)列(SRQ)113,這個SRQ113用作計(jì)算單元105、106和107的命令隊(duì)列。交叉(Xbar)開關(guān)112對接于鏈路L1、L2、L3、L4和SQR113之間。路由表111和控制寄存器114都經(jīng)過配置而用來控制交叉接口112和鏈路L1、L2、L3、L4上的流量路由。雖然圖1中描繪四個鏈路L1、L2、L3和L4,但是這只是舉例已,處理器節(jié)點(diǎn)110配置中可以實(shí)施更多或更少的鏈路,包括具有各種產(chǎn)出能力的鏈路。圖2展示多處理器配置200的示例功能方塊圖,其中雙節(jié)點(diǎn)處理器201和202由鏈路253、254、255和256加以連接。處理器201包括由鏈路251加以連接的處理器節(jié)點(diǎn)110和120。高速緩沖存儲器210通過存儲器信道211而連接到處理器節(jié)點(diǎn)110,且高速緩沖存儲器220通過存儲器信道221而連接到處理器120。處理器202包括由鏈路252加以連接的處理器節(jié)點(diǎn)130和140。存儲器信道231將高速緩沖存儲器230連接到處理器節(jié)點(diǎn)130,且存儲器信道241將高速緩沖存儲器240連接到處理器節(jié)點(diǎn)140。鏈路257和258可以用來將I/O裝置205、206(如網(wǎng)線和圖形驅(qū)動器)連接到處理器201和202。在這個示例配置中,交叉鏈路255和256中的每個鏈路都是低帶寬連接(例如,8位連接,或半鏈路),而鏈路251、252、253和254是高帶寬連接(例如,16位連接,或全鏈路)?;蛘?,鏈路251、252、253和254中的任何一個鏈路都可以包括多個連接(例如,一個全鏈路和一個半鏈路)。在這個實(shí)施例中,路由表111為所有節(jié)點(diǎn)到節(jié)點(diǎn)的傳送提供直接路徑。舉例來說,如果處理器節(jié)點(diǎn)110需要發(fā)送請求261給處理器節(jié)點(diǎn)140,那么交叉鏈路255便用作直接路徑。在使用這個路由選擇形式的情況下,單個請求的等待時間較短。在統(tǒng)計(jì)上,所有鏈路都會承載同等的流量分布。因此,多處理器配置200的流量速率的帶寬上限是由較小帶寬鏈路255和256加以設(shè)置的。圖3展示多處理器配置300的方塊圖的示例功能方塊圖,所述多處理器配置300類似于圖2中所示的配置200。在這個實(shí)施例中,路由表111提供替代路由方案,所述路由方案保持高帶寬鏈路251、252、253、254上的流量。舉例來說,如果處理器節(jié)點(diǎn)110要將請求發(fā)送給處理器節(jié)點(diǎn)140,那么路由便配置成沿著鏈路251和254的雙躍點(diǎn)請求361和362。相應(yīng)地,這個單個請求的等待時間約為單躍點(diǎn)請求261的等待時間的雙倍。然而,根據(jù)配置300的請求流量的帶寬上限高于鏈路251、252、253、254的最小帶寬。這個配置300的可選替代配置用于路由表111,來分散高帶寬鏈路251、252、253和254上的請求流量,而在低帶寬鏈路255和256上發(fā)送響應(yīng)流量,其中響應(yīng)流量明顯低于請求流量。這可以基于高帶寬鏈路251、252、253和254的最小帶寬,而為多處理器配置300保持帶寬上限,因?yàn)榇蟛糠至髁吭诖颂幖右苑稚?。圖4展示用于分裂流量路由方案的多處理器配置400的示例功能方塊圖。所述物理配置類似于配置200和300。然而,控制寄存器114經(jīng)過配置而基于流量是否與犧牲請求及其關(guān)聯(lián)響應(yīng)相關(guān),或基于流量是否與非犧牲請求和響應(yīng)相關(guān),來控制流量。根據(jù)這個路由方案,只有犧牲請求和關(guān)聯(lián)響應(yīng)順著高帶寬鏈路251、252、253和254。因?yàn)闋奚髁恳话銓Φ却龝r間并不敏感,所以針對這個流量的雙躍點(diǎn)傳輸路由方案并不會妨礙處理器性能。這個路由方案也是有利的,因?yàn)闋奚髁恳话愀哂诜菭奚髁?,所述犧牲流量可以由高帶寬鏈?51、252、253、254更好地加以服務(wù)。此外,逐出的犧牲流量無須排序,并且,與非犧牲請求相比,更加適合于較長的路由路徑。為了能夠根據(jù)分裂路由方案、沿著高帶寬鏈路來投送犧牲請求和響應(yīng),在控制寄存器114(例如,相干鏈路流量分布寄存器)中設(shè)置特殊模式位cHTVicDistMode。舉例來說,當(dāng)啟用鏈路對流量分布(如處理器節(jié)點(diǎn)對110和140)時,計(jì)算單元105、106、107可以將模式位cHTVicDistMode設(shè)置為值1?;蛘撸J轿籧HTVicDistMode可以設(shè)置成1,來指示啟用了分裂流量方案,而沒有啟用成對流量分布。另外,可以由計(jì)算單元105、106、107來對控制寄存器114做出下述設(shè)置,從而啟用分裂路由方案并為所述方案定義參數(shù)。為所述分布涉及到的處理器節(jié)點(diǎn)中的每個節(jié)點(diǎn)設(shè)置元件DistNode[5:0]中的分布節(jié)點(diǎn)識別位(例如,對于具有0到31的二進(jìn)制數(shù)值范圍的這個5位元件來說,值0可以指派給處理器節(jié)點(diǎn)110,而值3可以指派給處理器節(jié)點(diǎn)140)。目的地鏈路元件DstLnk[7:0]指定用于單個鏈路。舉例來說,對于這個8位元件來說,位0可以指派給鏈路251,位1可以指派給鏈路253,位2可以指派給鏈路255,并且將目的地鏈路設(shè)置為鏈路251,可以通過將位0設(shè)置為值1來達(dá)成。在針對處理器節(jié)點(diǎn)110使用這個示例性啟用設(shè)置方案的情況下,當(dāng)偵測到犧牲包,并且引向位DistNode所識別的分布節(jié)點(diǎn)(如處理器節(jié)點(diǎn)140)時,犧牲包便會投送到位DstLnk所指定的目的地鏈路(高帶寬鏈路251),而不是投送到路由表111中所定義的目的地鏈路(低帶寬鏈路255)??梢酝ㄟ^提供指示符來指示分裂路由方案是應(yīng)該處置犧牲請求還是犧牲響應(yīng)或是這兩者,而達(dá)成對分裂流量路由方案的附加改進(jìn)。為了指示針對分裂路由方案而啟用犧牲請求,相干請求分布啟用位cHTReqDistEn會設(shè)置成1。如果需要使用分裂流量路由來僅僅控制關(guān)聯(lián)犧牲響應(yīng),或者控制犧牲響應(yīng)以及犧牲請求,那么相干響應(yīng)分布啟用位cHTRspDistEn便設(shè)置成1。在上述實(shí)施方案的變型中,路由表111可以配置有分裂流量路由方案的參數(shù),從而使得分裂流量路由被啟用來直接根據(jù)路由表111中所指示的路由加以實(shí)行,而不是根據(jù)控制寄存器114加以實(shí)行。圖4所示配置中處理器節(jié)點(diǎn)的犧牲分布模式(也就是,分裂流量路由)在特定條件下加以啟用,包括(例如)只在下述情況真正發(fā)生時:(1)為處理器啟用犧牲分布處理器節(jié)點(diǎn);(2)犧牲分布處理器節(jié)點(diǎn)連接到另一處理器節(jié)點(diǎn)(目的地處理器節(jié)點(diǎn)),這種連接直接地只利用低帶寬鏈路上的單個非成組鏈路躍點(diǎn),或者間接地借助至少高帶寬鏈路上的兩個成組鏈路躍點(diǎn)。舉例來說,上文參照圖4所描述的方法是關(guān)于分布處理器節(jié)點(diǎn)110和目的地處理器節(jié)點(diǎn)140,這滿足上述特定條件。表1展示利用率表的示例,所述利用率表基于上述配置200和400的實(shí)施方式來比較鏈路利用率,并且具有讀寫比,這些讀寫比是工作負(fù)荷的函數(shù)。如表所示,當(dāng)路由均勻地分布在高帶寬鏈路和低帶寬鏈路上時(也就是配置200),高帶寬鏈路利用率為50%,這對應(yīng)于2:1的鏈路大小比。在使用配置400的分裂路由方案時,高帶寬鏈路和低帶寬鏈路可以更加均勻地得以利用。表1盡管上文以特定組合描述了特征和元件,每個特征或元件都可以在沒有其它特征和元件的情況下單獨(dú)使用,或者用于具有或不具有其它特征和元件的各種組合。本文所述的設(shè)備可以使用計(jì)算機(jī)可讀存儲介質(zhì)中所包含的計(jì)算機(jī)程序、軟件或固件來制作,其中這些計(jì)算機(jī)程序、軟件或固件由通用計(jì)算機(jī)或處理器加以執(zhí)行。計(jì)算機(jī)可讀存儲介質(zhì)的實(shí)例包括只讀存儲器(ROM)、隨機(jī)存取存儲器(RAM)、寄存器、高速緩沖存儲器、半導(dǎo)體存儲器裝置、磁性介質(zhì)(如內(nèi)部硬盤和移動磁盤)、磁光介質(zhì)以及光學(xué)介質(zhì),如CD-ROM光盤和數(shù)字通用光盤(DVD)。本發(fā)明的實(shí)施方案可以表示為計(jì)算機(jī)可讀存儲介質(zhì)中所存儲的指令和數(shù)據(jù)。舉例來說,本發(fā)明的方面可以使用Verilog加以實(shí)施,Verilog是硬件描述語言(HDL)。當(dāng)Verilog數(shù)據(jù)指令經(jīng)過處理時,這些指令可以生成其它中間數(shù)據(jù)(例如,連線表、GDS數(shù)據(jù)或類似數(shù)據(jù)),這些中間數(shù)據(jù)可以用來實(shí)行半導(dǎo)體制造廠中所實(shí)施的制作工藝。所述制作工藝可以被調(diào)適來制作半導(dǎo)體裝置(例如,處理器),這些半導(dǎo)體裝置能夠體現(xiàn)本發(fā)明的各個方面。舉例來說,合適的處理器包括通用處理器、專用處理器、常規(guī)處理器、數(shù)字信號處理器(DSP)、多個微處理器、與DSP核心相關(guān)聯(lián)的一個或多個微處理器、控制器、微控制器、專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)電路、任何其它類型的集成電路(IC)和/或狀態(tài)機(jī)??梢酝ㄟ^使用處理后硬件描述語言(HDL)指令(這類指令能夠存儲在計(jì)算機(jī)可讀介質(zhì)上)的結(jié)果來配置制作工藝,從而制作這類處理器。這類處理的結(jié)果可以是遮蔽產(chǎn)品,這些遮蔽產(chǎn)品隨后用于半導(dǎo)體制作工藝中,來制作可以實(shí)施本發(fā)明各方面的處理器。