專利名稱::點(diǎn)對(duì)點(diǎn)專用處理器結(jié)構(gòu)和方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及計(jì)算機(jī)及其他數(shù)字系統(tǒng)中的數(shù)據(jù)傳輸領(lǐng)域。相關(guān)申請(qǐng)本申請(qǐng)要求2008年3月31日提交的美國臨時(shí)專利申請(qǐng)?zhí)?1/041,210的優(yōu)先權(quán),其全部內(nèi)容通過參考整體納入本申請(qǐng)。
背景技術(shù):
:隨著計(jì)算機(jī)以及其他數(shù)字系統(tǒng)變得更加復(fù)雜而強(qiáng)大,用以增強(qiáng)系統(tǒng)元件之間數(shù)據(jù)傳輸?shù)姆椒ê陀布苍诓粩喟l(fā)展。要傳輸?shù)臄?shù)據(jù)包括代表數(shù)據(jù)的信號(hào)、指令或任意其他信號(hào)。數(shù)據(jù)傳輸?shù)乃俣群托试谶\(yùn)行數(shù)據(jù)密集型應(yīng)用例如圖形應(yīng)用的系統(tǒng)中極為重要。在典型的系統(tǒng)中,圖形處理功能是作為中央處理單元(centralprocessingunit;CPU)功能的一部分來提供的,或者由獨(dú)立的專用處理器例如圖形處理單元(graphicsprocessingunit;GPU)提供,該專用處理器與CPU通信并輔助處理視頻游戲等應(yīng)用的圖形數(shù)據(jù)。系統(tǒng)中可包括一個(gè)或多個(gè)GPU。在傳統(tǒng)的多GPU系統(tǒng)中,橋接主機(jī)接口(例如高速周邊元件接口(peripheralcomponentinterfaceexpress;PCIe))必須與主機(jī)、流量共享帶寬。圖1為現(xiàn)有系統(tǒng)100的方塊圖,該系統(tǒng)100包括根處理器108(例如CPU)、橋106以及兩個(gè)端點(diǎn)EPO104a和EPl104b(例如GPUO和GPU1)。各端點(diǎn)104分別耦接至存儲(chǔ)器元件102a和102b。為了充分利用系統(tǒng)中存在的多個(gè)GPU,該多個(gè)GPU共享處理任務(wù),從而需要在其之間傳輸數(shù)據(jù)。在多GPU系統(tǒng)中實(shí)現(xiàn)性能提升的挑戰(zhàn)在于潛在有大量數(shù)據(jù)需要在這些GPU之間來回傳輸。例如,若應(yīng)用要求繪制背景或其他紋理,而該繪制需要花費(fèi)大量時(shí)間,則宜將該背景或紋理復(fù)制到另一GPU,以使其能夠用于下一幀或同一幀的另一部分。在系統(tǒng)100中,在GPU104之間進(jìn)行數(shù)據(jù)傳輸?shù)奈ㄒ宦窂绞欠謩e通過路徑105a和105b到達(dá)橋106。抵達(dá)根108的此路徑必然承載有自各GPU104至根108的流量以及兩個(gè)GPU104之間的流量。這樣,由于物理線路共享而可形成瓶頸。圖1顯示現(xiàn)有技術(shù)中多處理器系統(tǒng)的方塊示意圖。圖2顯示依據(jù)一實(shí)施例加入點(diǎn)對(duì)點(diǎn)輸入輸出路徑的多處理器系統(tǒng)的部分方塊示意圖。圖3顯示依據(jù)一實(shí)施例加入點(diǎn)對(duì)點(diǎn)輸入輸出路徑的多處理器系統(tǒng)的詳細(xì)方塊示意圖。圖4顯示依據(jù)一實(shí)施例由該輸入輸出系統(tǒng)執(zhí)行的方法流程示意圖。圖5顯示依據(jù)一實(shí)施例在不對(duì)稱輸入輸出系統(tǒng)中傳輸相位信息的方法流程圖。圖6顯示依據(jù)一實(shí)施例在不對(duì)稱輸入輸出系統(tǒng)中向主機(jī)設(shè)備傳輸客戶端相位信息的時(shí)序圖。具體實(shí)施例方式這里描述點(diǎn)對(duì)點(diǎn)(peer-to-peer)專用處理器結(jié)構(gòu)和方法的實(shí)施例。實(shí)施例包括通過主橋總線耦接至至少一個(gè)中央處理單元的多個(gè)專用處理器。直接總線將所述各專用處理器直接耦接至其余專用處理器中的至少一個(gè)。存儲(chǔ)控制器耦接至該多個(gè)專用處理器并決定是否通過該主機(jī)總線或直接總線傳輸數(shù)據(jù)圖2顯示依據(jù)一實(shí)施例的多處理器系統(tǒng)200的部分方塊示意圖。系統(tǒng)200包括耦接至橋026的根處理器208。橋206分別通過總線205a和205b耦接至總線端點(diǎn)EPO204a和EPl204b。各端點(diǎn)204分別耦接至存儲(chǔ)器設(shè)備202a、202b。一實(shí)施例中,根處理器208為CPU,各端點(diǎn)204為GPU,但并不以此為限。如下文所述,實(shí)施例包括的端點(diǎn)204分別為具有側(cè)端口(sicbport)的GPU,所述側(cè)端口類似PCIe端口。PCIe的尋址特征和各種負(fù)載平衡特征應(yīng)用于系統(tǒng)200的結(jié)構(gòu)中以提升性能。在典型的結(jié)構(gòu)中,自一GPU向另一GPU發(fā)出的“讀”操作極其昂貴?!白x”操作中,發(fā)出請(qǐng)求,并于一段時(shí)間后接收所請(qǐng)求的數(shù)據(jù)。相較包括“讀”操作在內(nèi)的操作的典型性能,實(shí)施例作出了改進(jìn)。圖3顯示依據(jù)一實(shí)施例的多處理器系統(tǒng)300的方塊示意圖。系統(tǒng)300與系統(tǒng)200類似,但所示更為詳細(xì)。CPU308為系統(tǒng)300的根處理器。CPU308通過橋306耦接至系統(tǒng)存儲(chǔ)器309。CPU308還通過橋306經(jīng)由主橋總線305a耦接至GPUO304a,并經(jīng)由主橋總線305b耦接至GPUl304bοGPU304通過各自的側(cè)端口經(jīng)由直接總線307彼此耦接。GPU304還分別通過各自獨(dú)立的端口耦接至各自的本地存儲(chǔ)器313a和313b。GPUO304a包括多個(gè)客戶端311a??蛻舳?11a與存儲(chǔ)控制器303a通信。存儲(chǔ)控制器303a控制客戶端311對(duì)本地存儲(chǔ)器313a(例如視頻存儲(chǔ)器)的訪問,以及客戶端311對(duì)總線305a的訪問。更具體地說,存儲(chǔ)控制器303a決定哪個(gè)客戶端311與本地存儲(chǔ)器313a通訊,哪個(gè)客戶端311與總線305a通信,以及何時(shí)通信。類似地,GPUl304b包括耦接至存儲(chǔ)控制器303b的多個(gè)客戶端311b。存儲(chǔ)控制器303b與本地存儲(chǔ)器313b通信。GPUO304a與GPU1304b經(jīng)由直接總線307彼此耦接。直接總線307是位于GPU304的新的側(cè)端口之間的點(diǎn)對(duì)點(diǎn)路徑。一實(shí)施例中,客戶端311對(duì)不同總線的訪問由地址范圍決定。對(duì)存儲(chǔ)器309和313的訪問基于所述地址范圍。一實(shí)施例中,存儲(chǔ)地址空間分為三部分系統(tǒng)存儲(chǔ)器309部分;本地存儲(chǔ)器313a部分;以及本地存儲(chǔ)器313b部分。從GPU304b的角度看,存儲(chǔ)器313a為對(duì)等存儲(chǔ)器,反之亦然。對(duì)等地址涉及另一GPU上的存儲(chǔ)器。對(duì)本地存儲(chǔ)器的訪問由橋306以一種典型方式處理。一實(shí)施例中,當(dāng)?shù)刂仿湓趯?duì)等地址范圍內(nèi)時(shí),使用兩條可行路徑(直接總線307和主橋總線305)。經(jīng)由一條路徑或另一條路徑發(fā)送的數(shù)據(jù)量取決于不同實(shí)施例中的不同條件。例如,依據(jù)一模式,數(shù)據(jù)被平均分配在兩條路徑中50%的數(shù)據(jù)由總線307發(fā)送,50%的數(shù)據(jù)由總線305發(fā)送。該模式提升了性能,而這在傳統(tǒng)結(jié)構(gòu)中是不可能實(shí)現(xiàn)。不過,本領(lǐng)域的技術(shù)人員應(yīng)了解,總線305仍在被其他流量(如上所述的正在傳輸?shù)臄?shù)據(jù)之外)共享。為此,還可在該模式中采用動(dòng)態(tài)負(fù)載平衡以進(jìn)一步提升性能。例如,所述直接路徑(利用直接路徑307)可為優(yōu)選路徑,但當(dāng)該路徑滿負(fù)荷時(shí),則使用其他路徑(例如利用路徑305a和305b)。不過,考慮以下情形。假設(shè)一個(gè)“寫”數(shù)據(jù)序列(“W”表示“寫”,WA表示“寫入存儲(chǔ)地址/位置A”)1、WA至GPU0,經(jīng)由305;(如圖3所示該數(shù)據(jù)=4)2、WB至GPUO;3,WCMGPUO;4、WA至GPU0,經(jīng)由307;(如圖3所示該數(shù)據(jù)=6)這里欲寫入的數(shù)據(jù)為“6”。如上所述,首先發(fā)生寫入“4”,但經(jīng)由主橋總線305a和305b。寫入“6”在后來發(fā)生,但經(jīng)由直接總線307(較快的途徑)?!?”先寫入,但“4”隨后到達(dá),覆蓋了“6”。如果預(yù)料到這樣的問題,則一種避免該問題的模式是基于地址的路由。可將地址進(jìn)行劃分,以便將針對(duì)相同地址的數(shù)據(jù)發(fā)送在相同路徑上。例如,偶雙字地址可經(jīng)由直接路徑307發(fā)送,而奇雙字地址可經(jīng)由主橋路徑305a和305b發(fā)送?;蛘?,八個(gè)地址中的七個(gè)(不以二進(jìn)制000結(jié)尾的地址)可經(jīng)由直接路徑307發(fā)送,而其他則可經(jīng)由主橋路徑305a和305b發(fā)送。依據(jù)另一種模式,全部數(shù)據(jù)都經(jīng)由一條路徑或另一條路徑發(fā)送。由于有一條路徑未被使用,該模式并不是最理想的。不過可允許客戶端311a和311b中的每一個(gè)都具有自己的規(guī)則。這樣就可具有多個(gè)圖形硬件功能,其區(qū)別使用所述不同路徑,并實(shí)現(xiàn)路徑的充分利用。在下面詳細(xì)描述的實(shí)施例中討論“寫”操作。亦即,GPUO304a向GPUl304b傳送數(shù)據(jù),但不會(huì)從GPUl304b獲取數(shù)據(jù)。但是,在其他實(shí)施例中,可依據(jù)這里所述的相同方法在任一方向上實(shí)施讀操作和寫操作。圖4顯示依據(jù)一實(shí)施例的兩GPU系統(tǒng)400的元件方塊示意圖。圖4包括依據(jù)一實(shí)施例的總體圖形子系統(tǒng)互聯(lián)(圖中未顯示用于將可顯示像素傳送至主板或顯示設(shè)備的顯示連接(displaylink))。系統(tǒng)400包括GPUO404a和GPUl404b。GPU404通過直接總線407和各自的側(cè)端口彼此直接耦接。將標(biāo)記為“RC”的方塊設(shè)為根聯(lián)合體核心(rootcomplexcore)0將標(biāo)記為“EP”的方塊設(shè)為端點(diǎn)。需要注意的是,RC和EP是PCIExpress(PCIe)端口的常用技術(shù)。為了正常通信,RC必須與EP對(duì)話而不是另一個(gè)RC。在一個(gè)利用普通端口設(shè)計(jì)實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的實(shí)施例中,包括有綁定邏輯(strappinglogic),以使404a中的“RC”或404b中的“RC”作為真正的RC,而另一個(gè)作為EP。各GPU404包括存儲(chǔ)控制器(MC)和主機(jī)數(shù)據(jù)路徑方塊(HDP)。如圖所示,通信路徑421為讀/寫(R/W)+d請(qǐng)求路徑,這里的“W+d”表示“寫請(qǐng)求加數(shù)據(jù)”。“CPL數(shù)據(jù)”箭頭413顯示數(shù)據(jù)讀取完成的路徑。箭頭423表示W(wǎng)+d請(qǐng)求路徑。圖中未顯示主機(jī)PCIe與其他GPU內(nèi)部方塊,例如內(nèi)部寄存器、只讀存儲(chǔ)器(ROM)、音頻和視頻圖形陣列/適配器(VGA)的連接。GPU404進(jìn)一步經(jīng)由各自的主橋總線405a和405b通過交叉矩陣(crossbar)417耦接至橋406(本實(shí)施例中為北橋)。CPU408耦接至橋406。圖5顯示依據(jù)一實(shí)施例的4GPU系統(tǒng)的方塊示意圖。在一實(shí)施例中,兩個(gè)圖形處理單元GPUA404a和GPUB404b占據(jù)一塊板(板0),另外兩個(gè)圖形處理單元GPUC504c和GPUD504d占據(jù)另一塊板(板1)。GPU504a和GPU504b通過直接總線507a和顯示連接(displaylink)511a耦接。GPU504a和GPU504b分別通過各自的PICe總線耦接至分立橋509a。GPU504c和GPU504d通過直接總線507b和顯示連接511c耦接。GPU504c和GPU504d分別通過各自的PICe總線耦接至分立橋509b。板0和板1由顯示連接5lib耦接。板0和板1進(jìn)一步經(jīng)由自分立橋509a至橋506的PCIe總線以及自分立橋509b至橋506的另一條PCIe總線通過橋506耦接。CPU508耦接至橋506??稍谙到y(tǒng)500中的任意一對(duì)GPU之間同時(shí)進(jìn)行點(diǎn)對(duì)點(diǎn)傳輸。一實(shí)施例中,如果GPU對(duì)分別為AB和CD,則各傳輸?shù)膫鬏斔俣茸罡呒s為12.2GB/s。如果GPU對(duì)分別為AC和BD或者是AD和BC并且傳輸方向相反,則各傳輸?shù)膫鬏斔俣燃s為6.lGB/s。如果GPU對(duì)分別為AC和BD或者是AD和BC并且傳輸方向相同,則各傳輸?shù)膫鬏斔俣燃s為3GB/s。圖6顯示依據(jù)一實(shí)施例的側(cè)端口子系統(tǒng)的方塊示意圖。下面的標(biāo)記部分參照?qǐng)D6提供不同實(shí)施例的實(shí)施細(xì)節(jié),但本發(fā)明并不受限于所述特定細(xì)節(jié)。主機(jī)PCIe端點(diǎn)一實(shí)施例中,主機(jī)PCIe接口由總線接口核心邏輯(businterfacecorelogic;BIF)、模擬物理層(analogPHY)和封裝器(wrapper)組成。該接口被設(shè)為端點(diǎn)(EP)。該總線以每引腳5Gbps的標(biāo)準(zhǔn)PCIExpreSS2.0規(guī)范(PCIe2)速率運(yùn)行,或者以16通道接口的理論最大速率8GB/s運(yùn)行。該總線具有128位credit/debit主接口(masterinterface)用于出去的存儲(chǔ)器寫入(至主機(jī)或?qū)Φ润w),以及128位credit/debit從接口(slaveinterface),用于進(jìn)來的存儲(chǔ)器寫入(來自主機(jī)或?qū)Φ润w)。該總線具有連接只讀存儲(chǔ)器(ROM)、內(nèi)部寄存器總線、音頻和視頻圖形陣列(VGA)的32位接口。該總線將主機(jī)請(qǐng)求通過其從接口(標(biāo)記為S)路由至所述多個(gè)GPU目標(biāo)。請(qǐng)求接口具有相伴的完成接口。所述BIF利用一組地址孔徑(addressaperture)引導(dǎo)流量,該組地址孔徑分別是幀緩沖區(qū)的地址孔徑;寄存器地址孔徑;以及只讀存儲(chǔ)器地址孔徑。它針對(duì)配置寄存器和綁定(strap)使用32位接口。它還具有與時(shí)鐘發(fā)生器(clockgenerator;CG)的接口,以處理高級(jí)配置與電源接口(advancedconfigurationandpowerinterface;ACPI)電源狀態(tài)管理、時(shí)鐘、重置和掃描輸入,以及調(diào)試總線菊花鏈接口(debugbusdaisychaininterface)。它還具有與所述主機(jī)數(shù)據(jù)路徑方塊(HDP)的接口,用以幀緩沖區(qū)讀寫。側(cè)端口RC用于側(cè)端口(XSP)的PCIExpress邏輯被配置為RC。RC和EP操作模式在配置和功能上差別很小。XSP總線以每個(gè)引腳0.5Gbps的標(biāo)準(zhǔn)PCIe2規(guī)范速率運(yùn)行,或者以16通道接口的理論最大速率8GB/s運(yùn)行。它具有128數(shù)據(jù)位credit/debit主接口,用于出去的至對(duì)等GPU的存儲(chǔ)控制器(MC)存儲(chǔ)空間寫入請(qǐng)求,以及128位credit/debit從接口,用于進(jìn)入的來自對(duì)等GPU的存儲(chǔ)器寫入。這些接口是在主機(jī)BIF的例子中由HDP使用的接口。它針對(duì)配置寄存器和綁定使用32位接口。它獨(dú)立于所述主機(jī)接口而保留自己的鏈接電源狀態(tài)。與所述主機(jī)接口相同,通道數(shù)目可由軟件編程為8或16。由于在專用集成電路(applicationspecificintegratedcircuit;ASIC)上的兩PCIe物理層以相同的速率運(yùn)行,因此可使用一對(duì)參考時(shí)鐘(REFCLK)輸入引腳,緩沖REFCLK在芯片內(nèi)分布至所述兩物理層。所述XSP例不需要任何其他讀/寫接口或由主機(jī)BIF支持的中斷處理。該側(cè)端口不需要由ASIC上電激活,因此大多數(shù)情況下它不使用基于引腳的綁定??衫肧RBM總線通過軟件寄存器寫入而獨(dú)立于所述主機(jī)接口編程該側(cè)端口的配置。所述XSP不需要支持寄存器讀或?qū)?、I/O空間或配置空間周期。在該設(shè)備上僅需可操作的單個(gè)PCIe功能。在僅發(fā)出緩寫(根本沒有讀)并使用全局同步方案(globalsynchronizationscheme)的實(shí)施例中,不需要完成信息(completionmessage)。存儲(chǔ)控制器中心(MChub)將寫請(qǐng)求路由至所述XSP。與主機(jī)BIF請(qǐng)求一樣,XSP請(qǐng)求使用相同的地址。主機(jī)數(shù)據(jù)路徑方塊一實(shí)施例中,該主機(jī)數(shù)據(jù)路徑方塊(HDP)為標(biāo)準(zhǔn)方塊,其為BusIP的一部分。該HDP處理由所述主機(jī)接口執(zhí)行的幀緩沖區(qū)讀和寫。在多GPU系統(tǒng)中,幀緩沖區(qū)讀和寫可以來自主機(jī)或者來自另一GPU發(fā)起的點(diǎn)對(duì)點(diǎn)寫入。主機(jī)訪問可使用多個(gè)HDP拼接孔徑(tilingaperture)中的其中一個(gè),而點(diǎn)對(duì)點(diǎn)訪問則可使用或不使用(對(duì)等體可由請(qǐng)求者ID識(shí)別)。該HDP與該主機(jī)BIF的從端口連接并作為讀寫客戶端與MC連接。該BIF和HDP相互配合以保持讀至寫的一致性;在寫入之前無法讀取。對(duì)于點(diǎn)對(duì)點(diǎn)寫入同步,向保留存儲(chǔ)器地址的特定寫入由該HDP識(shí)別,并針對(duì)向本地存儲(chǔ)器的特定“寫入相位”觸發(fā)MC讀取以及在前寫入沖洗,接著寫回至發(fā)送客戶端的寄存器空間中的相位專用郵箱。自總線進(jìn)來的讀和寫由該BIF中的專門孔徑路由至該HDP。該孔徑對(duì)應(yīng)32MB或更多本地內(nèi)存??蛇x擇性地將該HDP處理的地址當(dāng)作虛擬地址并在HDP專門的頁表中查找。為最佳利用各GPU的可用PCIe孔徑并支持寫相位,點(diǎn)對(duì)點(diǎn)寫入地址由發(fā)送GPU的MC編碼為相位和偏移,并可穿插自動(dòng)每相基地址寄存器(baseaddressregister;BAR)更新。該HDP使用來自該BIF的請(qǐng)求者ID加上傳輸位的結(jié)合以決定使用哪個(gè)寫入相位和動(dòng)態(tài)地址孔徑。存儲(chǔ)控制器(MC)方塊該MC具有兩個(gè)連接所述側(cè)端口的接口針對(duì)來自MC客戶端的寫請(qǐng)求的128位BIF主機(jī)接口;以及針對(duì)自其他GPU進(jìn)來的向本地存儲(chǔ)器的寫入的128位從接口。該MC還包括尋址邏輯,以將主請(qǐng)求通過所述XSP路由至對(duì)等存儲(chǔ)器。XDP方塊處理接口功能。它察看從請(qǐng)求并進(jìn)行地址偏移或視頻存儲(chǔ)器(videomemory;VM)查找,它維持寫完成計(jì)數(shù)器,并提供混合寫入(writecombining)(32字節(jié)BIF請(qǐng)求至64字節(jié)MC請(qǐng)求)。來自或到達(dá)所述側(cè)端口的請(qǐng)求可為16字節(jié)(具有掩蔽(masking))至64字節(jié)。為達(dá)最佳性能,請(qǐng)求應(yīng)當(dāng)為64字節(jié)。所述側(cè)端口BIF接口傳遞GART翻譯的40位系統(tǒng)地址,不論全圖形虛擬內(nèi)存激活與否。所述GART與系統(tǒng)背景域(contextdomain)相同,執(zhí)行36位GPU設(shè)備地址的翻譯。所述MC維持寫完成狀態(tài),以允許多GPU保證的復(fù)制操作的沖洗。類似于所述HDP,由XDP識(shí)別的專門地址用于觸發(fā)特定寫相位的寫完成的核查,并生成至所述發(fā)送客戶端的寄存器空間中的郵箱的寫回。直接存儲(chǔ)器訪問弓丨擎(DRMDMA)所述具有側(cè)端口的GPU包括直接存儲(chǔ)器訪問(directmemoryaccess;DMA)引擎,其可執(zhí)行有效的存儲(chǔ)器主機(jī)塊傳輸(blocktransfer;BLT)0可對(duì)所述DRMDMA進(jìn)行編程,以在本地存儲(chǔ)器、主機(jī)存儲(chǔ)器以及另一GPU的本地存儲(chǔ)器中任意兩者之間傳輸。隨著地址處理(如后文所述)的增強(qiáng),所述DRMDMA還可利用所述XSP和PCIe橋移動(dòng)存儲(chǔ)塊。一實(shí)施例的標(biāo)準(zhǔn)傳輸能力包括.主機(jī)至本地(主機(jī)BLT或復(fù)制)-每時(shí)鐘峰值速率16字節(jié).以常量填充本地-每時(shí)鐘峰值速率32字節(jié).本地至主機(jī)(復(fù)制)_每時(shí)鐘峰值速率16字節(jié).本地至遠(yuǎn)端GPU(復(fù)制)_每時(shí)鐘峰值速率32字節(jié)至相鄰GPU,每時(shí)鐘峰值速率16字節(jié)至不相鄰GPU所述DRMDMA可支持每時(shí)鐘32字節(jié)的讀和32字節(jié)的寫,其與兩個(gè)16字節(jié)PCIe寫接口相匹配。主機(jī)端口相較側(cè)端口負(fù)載平衡添加側(cè)端口允許至相鄰GPU的較大帶寬,這是2GPU和4GPU使用模型需要大部分帶寬的地方。所述主機(jī)端口也具有許多可用帶寬并且仍然可用于與相鄰GPU通信。負(fù)載平衡最簡單的方法包括基于不同客戶端的固定分配靜態(tài)分配用于傳輸數(shù)據(jù)的端口_例如,DRMDMA分配給側(cè)端口,顏色緩沖塊分配給主機(jī)端口。第二種負(fù)載平衡方法包括基于側(cè)端口的繁忙情況將任意客戶端的流量動(dòng)態(tài)路由至所述兩個(gè)端口中的任意一個(gè)。見下文的“任意”負(fù)載平衡描述。使用上述第二種方法,通過兩條不同的路徑向相同的像素地址寫入有可能出現(xiàn)競爭情況。當(dāng)這些寫入屬于兩個(gè)不同的基元(primitive)時(shí),則會(huì)違背像素順序規(guī)則。較早基元的寫入可在較后基元寫入之后到達(dá)。選擇基于地址的路由可解決此問題。一種后備方法是針對(duì)相關(guān)客戶端使用單個(gè)路徑。如果對(duì)等寫入請(qǐng)求正在通過主機(jī)端口和側(cè)端口向鄰居發(fā)送,則可能會(huì)由于通過該兩端口的不同延遲而丟失請(qǐng)求順序。在某些情況下,主機(jī)端口甚至?xí)蚨枰扇〈胧┮源_保必要時(shí)保留請(qǐng)求順序。所述MC的唯一順序保證是自相同客戶端向相同地址的寫入不會(huì)重新排序。因此,這也是對(duì)等寫入唯一的寫后寫(writeafterwrite;WAff)要求。依據(jù)實(shí)施例有數(shù)種方式來確保該要求。所述MC處理針對(duì)本地存儲(chǔ)器以及主機(jī)和對(duì)等體的讀/寫。缺省的MC順序規(guī)則如這里所述。額外的路由規(guī)則和總線本身提供額外的順序保證。全負(fù)載平衡僅適用于進(jìn)入相鄰GPU的請(qǐng)求。這由孔徑核查決定,非相鄰請(qǐng)求將全部去往所述主機(jī)端口。負(fù)載平衡固定映射至端口(“固定”)確保向相同地址的兩個(gè)寫入不會(huì)失序的方式是通過地址核查負(fù)載平衡。執(zhí)行地址核查以確保給定地址總是使用相同的端口。例如,對(duì)于特定粒度(granularity),“偶”地址總是使用主機(jī)端口,而“奇”地址總是使用所述側(cè)端口。這樣,針對(duì)相同地址的兩個(gè)請(qǐng)求不會(huì)在通過所述端口時(shí)失序。所使用的地址核查映射可就查看哪些地址位以及使用什么閾值進(jìn)行平衡進(jìn)行編程。由于較大的粒度可能意味著寫突發(fā)集中通過一個(gè)端口或另一個(gè)端口,而太大的粒度可能導(dǎo)致端口不足而大突發(fā)被送往一個(gè)端口或另一個(gè)端口,因此所使用的地址位設(shè)定了平衡的粒度。所使用的閾值允許主機(jī)端口和側(cè)端口之間較好的平衡比例。例如,如果使用三個(gè)地址位,主側(cè)端口的比例可為08,17,26,...,80,這取決于所使用的閾值。將全部請(qǐng)求送往所述主機(jī)端口或送往所述側(cè)端口是該固定映射的退化情形。通過此類固定負(fù)載平衡,如果一個(gè)端口(主機(jī)端口)繁忙或停滯,后備可調(diào)節(jié)發(fā)送至另一端口(側(cè)端口)的帶寬。此外,特定的寫模式容易造成理想的平衡比例被破壞(例如跨越寫(stridingwrite)總是映射至一個(gè)端口,而空置另一個(gè)端口)。因此,由于該負(fù)載平衡方法為靜態(tài)、軟件編程而不是針對(duì)可用帶寬作出反應(yīng),因而存在缺陷。下文討論動(dòng)態(tài)負(fù)載平衡。負(fù)載平衡無約束或任意順序,不保證寫后寫(“任意”)“任意”負(fù)載平衡基于充分或幾乎充分的條件在端口之間切換。由于預(yù)期的較高可用性,該側(cè)端口應(yīng)當(dāng)最終被優(yōu)先。應(yīng)當(dāng)提供各端口的剩余信用數(shù)(outstandingcredit)的控制,以調(diào)節(jié)平衡。一些客戶端不需要WAW—致性保證。例如,由于不會(huì)在同一復(fù)制中兩次傳輸相同的地址,因此可通過復(fù)制之間的沖洗保證一致性。這樣將允許源和目標(biāo)全速進(jìn)行,只需要在潛在重疊傳輸之間進(jìn)行正常的寫完成同步。將該流量與“任意”類型的流量混合還可緩和它們各自的弱點(diǎn),潛在地使這些寫入填滿任意間隙。所述側(cè)端口將盡可能多地使用,主機(jī)端口僅在側(cè)端口滿負(fù)荷時(shí)使用。負(fù)載平衡的任意和/或全部實(shí)現(xiàn)方法可并行使用于獨(dú)立的傳輸流。軟件可配置各相位使用的負(fù)載平衡類型。如果“任意”流量與“固定”流量混合,則該“任意”流量應(yīng)當(dāng)有助于彌補(bǔ)“固定”選擇的弱點(diǎn)所造成的任何缺陷。硬件允許“任意”類型的請(qǐng)求繞過停滯或等待的“固定”請(qǐng)求?!肮潭ā焙汀叭我狻眱H是兩種負(fù)載平衡模式,還可有其他多種實(shí)施例。負(fù)載平衡可能的使用情景下面為可能的使用模型,但實(shí)施例不限于此。1)對(duì)等寫入為DMA=DRMDMA使用1_2階段將數(shù)據(jù)復(fù)制到對(duì)等GPU;la)可使用“任意”類型的負(fù)載平衡進(jìn)行傳輸,但其可能要求有重疊危險(xiǎn)的任意DMA之間的額外同步。軟件可核查決定是否發(fā)生重疊。lb)兩DMA引擎的替代負(fù)載平衡選擇是使一引擎僅使用主機(jī)端口,而另一引擎僅使用側(cè)端口?;蛘?,僅使用主機(jī)端口可包含向不相鄰對(duì)等體的寫入。由于不保證主機(jī)端口的可用帶寬,因此軟件難以最佳地劃分復(fù)制工作,但如果兩相位隱藏同步延遲,則可保持兩端口滿負(fù)荷而不需要任意潛在重疊復(fù)制之間的任何額外同步。如果相關(guān)資源不重疊,則硬件可允許僅使用主機(jī)端口的相位和僅使用側(cè)端口的相位使用相同的相位號(hào)。2)WAW敏感客戶端寫入(使用或不使用復(fù)制)2a)類似上述lb,如果正在發(fā)送一個(gè)或多個(gè)對(duì)等寫入,分別給這些對(duì)等寫入分配專用路徑“僅使用主機(jī)端口,,或“僅使用對(duì)等”,以充分使用兩個(gè)端口,并且在端口之間沒有順序依賴或交叉的背壓路徑(backpressurepath)。2b)如果WAW敏感客戶端是進(jìn)行傳輸?shù)奈ㄒ豢蛻舳耍瑒t只需使用“固定”類型,以保持端口充分利用,如果其他有問題,則“僅使用側(cè)端口,,為安全備份(和/或另一客戶端可在部分時(shí)間使用“僅使用主機(jī)端口”)。尋址GPU的主機(jī)接口接收針對(duì)寄存器(映射在存儲(chǔ)空間中)和本地存儲(chǔ)器(幀緩沖區(qū))以及其他塊的總線請(qǐng)求。BIF中的一組孔徑(或地址范圍)將PCIe空間地址(64位)映射到該GPU中的特定目標(biāo)。本地存儲(chǔ)器讀和寫通過所述HDP到達(dá)所述MC。GPU發(fā)出的存儲(chǔ)器請(qǐng)求使用地址,該地址是或者不是虛擬地址。對(duì)于WindowsXP或者Vista圖形驅(qū)動(dòng)器模型,GPU“設(shè)備”地址形成孔徑區(qū)域化平面地址空間,其包含系統(tǒng)存儲(chǔ)器(可進(jìn)一步通過GART映射)或本地存儲(chǔ)器。對(duì)于未來的驅(qū)動(dòng)器模式,GPU地址被處理為頁面映射虛擬地址,并且對(duì)于系統(tǒng)存儲(chǔ)器和本地存儲(chǔ)器,所查找的物理地址是獨(dú)立的。系統(tǒng)存儲(chǔ)空間從GPU角度看,系統(tǒng)存儲(chǔ)器通常指附著至CPU的動(dòng)態(tài)隨機(jī)訪問存儲(chǔ)器(DRAM),但實(shí)際中系統(tǒng)存儲(chǔ)器包括屬于任意可訪問的存儲(chǔ)映射設(shè)備的任意存儲(chǔ)空間,尤其是其它GPU存儲(chǔ)器。取決于系統(tǒng)結(jié)構(gòu),分立橋和芯片組橋(例如北橋)聯(lián)合處理系統(tǒng)存儲(chǔ)器訪問的映射和路由。從CPU角度看,物理地址空間(32位或64位)劃分成附著至該CPU的真實(shí)系統(tǒng)存儲(chǔ)器以及“其他”存儲(chǔ)器,后者為存儲(chǔ)映射設(shè)備上(例如PCIe總線上)的任意存儲(chǔ)器。此劃分通過輸入輸出(I/O)系統(tǒng)的最頂端節(jié)點(diǎn)中的一個(gè)基址-限制配置寄存器對(duì)(base-limitconfigurationregisterpair)完成。還有另一對(duì)用于寄存器空間。在下方的二進(jìn)制樹的每一層,總線地址范圍被分為兩部分,每個(gè)下游分支都具有一個(gè)基址_限制對(duì)。GPU的孔徑尺寸由板綁定(boardstrap)設(shè)置?,F(xiàn)在,該尺寸支持32位和64位操作系統(tǒng),并且不論多少GPU試圖插入該系統(tǒng)都支持。從GPU角度看,系統(tǒng)地址通過GART(系統(tǒng)頁表)或直接映射至總線地址空間,將未生成的最重要位(mostsignificantbit;MSB)設(shè)為0。各上游PCIe橋結(jié)點(diǎn)查對(duì)基址-限制對(duì),以路由至更上游或?qū)Φ冗B接。圖7顯示具有兩GPU的系統(tǒng)存儲(chǔ)空間的高階示意圖,顯示從各實(shí)體角度所看到的內(nèi)容。圖7A為CPU視圖,圖7B為GPUO視圖,圖7C為GPUl視圖。視頻存儲(chǔ)器禁用GPU提供給MC的36位地址經(jīng)歷如下操作序列1、查對(duì)本地存儲(chǔ)孔徑。如果該地址落在該范圍內(nèi),則減去基址,并將基址用作物理本地存儲(chǔ)器地址。2、如果在本地存儲(chǔ)孔徑之外,則查對(duì)側(cè)端口存儲(chǔ)孔徑。這通常對(duì)應(yīng)相鄰GPU所使用的地址范圍。如果該地址落在該范圍內(nèi),則將該地址在不作修改的情況下依據(jù)負(fù)載用在所述側(cè)端口或主機(jī)接口上。如果該地址用于側(cè)端口,則遠(yuǎn)端GPU客戶端查對(duì)自身的孔徑,并且此查對(duì)應(yīng)當(dāng)在本地存儲(chǔ)孔徑中通過。如果該地址用于主機(jī)接口,則所述橋和北橋中的孔徑查對(duì)將把該請(qǐng)求路由至所述遠(yuǎn)端GPU。該遠(yuǎn)端主機(jī)接口將這些請(qǐng)求傳遞至其HDP或SRBM。3、如果該地址落在上述兩孔徑之外,則其為系統(tǒng)地址。如果該地址落在非探測(non-snooped)孔徑內(nèi),則將其在不作修改的情況下傳遞至所述主機(jī)接口。否則,在所述系統(tǒng)GART(例如系統(tǒng)頁表)中查找該地址,然后將其傳遞至所述主機(jī)接口。視頻存儲(chǔ)器啟用將GPU地址作為虛擬地址并由頁表在VM中譯為系統(tǒng)物理地址或本地視頻存儲(chǔ)器地址。傳統(tǒng)上,系統(tǒng)物理地址為40位,請(qǐng)求的目標(biāo)總是主機(jī)接口(通過GART之后-實(shí)際上是系統(tǒng)頁表)。不過,為支持針對(duì)點(diǎn)對(duì)電傳輸?shù)闹鳈C(jī)接口和側(cè)端口的使用,實(shí)施例也允許系統(tǒng)物理地址通過該側(cè)端口的路由。下面為依據(jù)一實(shí)施例的序列。1、在適當(dāng)?shù)捻摫碇胁檎褿PU客戶端(例如DMA引擎)所作的請(qǐng)求。2、如果頁表項(xiàng)(pagetableentry;PTE)中的“S”位(針對(duì)系統(tǒng)空間)未設(shè),則訪問該請(qǐng)求GPU的本地存儲(chǔ)器。3、如果“S”位已設(shè),則執(zhí)行側(cè)端口孔徑(sideportaperture;SPA)地址范圍查對(duì)。4、如果該地址在SPA之外,則該請(qǐng)求去往該主機(jī)接口(GART查找后)。5、如果該地址在SPA以內(nèi),則做出負(fù)載平衡決定,并將該請(qǐng)求路由至所述側(cè)端口或主機(jī)接口。6、如果該請(qǐng)求通過該主機(jī)接口路由,則其為標(biāo)準(zhǔn)點(diǎn)對(duì)點(diǎn)請(qǐng)求。7、如果該請(qǐng)求通過該側(cè)端口路由,則將該系統(tǒng)地址傳遞至遠(yuǎn)端GPU,在該遠(yuǎn)端GPU的HDP空間頁表中查找該地址,將其(幾乎總是)映射至本地物理存儲(chǔ)地址。同步使用多GPU渲染要求繪制與數(shù)據(jù)移動(dòng)步驟之間的同步,以確保數(shù)據(jù)一致性。獨(dú)立的命令流執(zhí)行所述繪制和復(fù)制。交替幀渲染(alternateframerendering;AFR)的典型序列為1、GPUO上的3D引擎在動(dòng)態(tài)或持續(xù)的紋理表面繪制2、3D引擎沖洗并發(fā)出完成信號(hào)(發(fā)出旗語信號(hào)指令)3、在GPUO上的復(fù)制引擎等待旗語,接著將結(jié)果復(fù)制到GPUl4、復(fù)制引擎沖洗并發(fā)出完成信號(hào)5,GPUl上的3D引擎等待旗語,然后使用已渲染紋理繪制所述BIF和MC(以及北橋和CPU存儲(chǔ)器系統(tǒng))對(duì)于讀操作和寫操作的順序分別具有自身的一致性規(guī)則。在無軟件干預(yù)的情況下在多GPU之間保持端到端請(qǐng)求的目標(biāo)一致性,需要同步機(jī)制,該機(jī)制考慮了所有這些規(guī)則(或者不取決于這些規(guī)則)。多GPU的同步需求類似于單個(gè)GPU需要在兩DMA之間進(jìn)行表面數(shù)據(jù)同步的額外步驟。在此種DMA情況下以及廣播寫功能的情況下,需要向一GPU上的客戶端保證另一GPU上已完成寫。該MC和旗語塊有助于解決此任務(wù)??讖綁嚎s設(shè)計(jì)有效GPU系統(tǒng)的一個(gè)挑戰(zhàn)是隨著GPU的數(shù)目和各GPU的本地內(nèi)存量的增加,將所有內(nèi)容都適配至所述系統(tǒng)存儲(chǔ)空間的能力被折衷,并且設(shè)備孔徑不得不縮小尺寸。如果可映射至系統(tǒng)空間的GPU本地內(nèi)存量有限,未映射的內(nèi)存的使用則被限制在本地GPU上。關(guān)于可映射CPU的GPU空間的限制范圍沒有過多關(guān)注,后備方法是將表面復(fù)制到系統(tǒng)存儲(chǔ)器而不是對(duì)本地視頻存儲(chǔ)器的鎖定訪問。依據(jù)一實(shí)施例的解決方案是通過加入偏移寄存器(P2PBAR),使對(duì)等體可訪問本地內(nèi)存的其余部分。當(dāng)目標(biāo)BIF看到來自源端的寫請(qǐng)求時(shí),在應(yīng)用存儲(chǔ)孔徑為HDP產(chǎn)生36位設(shè)備地址后,加入偏移(以4KB頁粒度)。源端能看到的毗連本地虛擬內(nèi)存空間數(shù)量不大于其先前的情況,但現(xiàn)在這是一進(jìn)入全部本地內(nèi)存的窗口,其可通過重寫P2PBAR而改變。理論上來說,可隨時(shí)移動(dòng)BAR,只要寫入流內(nèi)的變化是有序的。值得注意的是,多個(gè)偏移只要可由源端辨識(shí)(例如寫相位),并不都需要同步或空間分離。圖8顯示具有偏移的存儲(chǔ)空間示意圖。圖8A顯示GPUO角度的系統(tǒng)內(nèi)存空間視圖,圖8B是沒有偏移的GPU1LVM映射,以及圖8C是具有偏移的GPUl映射。寫相位當(dāng)單個(gè)GPU發(fā)送多組寫入時(shí),或是同時(shí)進(jìn)行多組寫入(例如3D管路和DRMDMA復(fù)制)或是來自相同客戶端的背對(duì)背寫入,最好保證寫入完成。在后一情況中的目標(biāo)是隱藏沖洗/同步操作的延遲。其次,最好允許多個(gè)源GPU寫入單個(gè)目標(biāo)GPU并針對(duì)各個(gè)源獨(dú)立跟蹤寫入完成。依據(jù)一提供理想結(jié)果的實(shí)施例,(目標(biāo))BIF具有8組基址/限制寄存器(相位范圍),每組具有3位相位ID??捎稍碐PU以各種方式寫入該目標(biāo)。例如.多達(dá)8個(gè)GPU中的每一個(gè)可能保留一個(gè)相位范圍專用。使單個(gè)目標(biāo)GPU上的范圍重疊將變得模糊(“交叉流”)。較好的方案是讓相位由PCIe源ID決定,其消除了任何重疊限制。.多達(dá)4個(gè)GPU中的每一個(gè)可保留兩個(gè)不重疊的相位范圍。.兩個(gè)GPU可使用全部8個(gè)相位范圍(但實(shí)際上認(rèn)為每個(gè)GPU源只有2個(gè)相位范圍有用)一實(shí)施例中,單個(gè)GPU中有7個(gè)流量源,其可分配給不同相位.顏色緩沖塊或深度緩沖塊.著色輸出塊.指令處理器.DRMDMA(2個(gè)交替相位)因此,最終相位值應(yīng)當(dāng)為源ID和范圍查對(duì)結(jié)果的結(jié)合,取決于系統(tǒng)中GPU的數(shù)目。寫相位與小孔徑的結(jié)合可同時(shí)允許這些特征(寫相位和小孔徑)存在。亦即,允許源GPU看到全部目標(biāo)表面并且每個(gè)GPU具有多個(gè)源。一實(shí)施例中,每個(gè)相位使用P2PBAR,從而在目標(biāo)地址離開太遠(yuǎn)以至于不適合單個(gè)孔徑的情況下,單個(gè)源GPU能夠使用多個(gè)相位。不過,由于PCIe空間孔徑不夠大,不足以進(jìn)行目標(biāo)處的范圍查對(duì),因此選擇P2PBAR可能存在問題。一個(gè)解決方案是復(fù)制發(fā)送側(cè)的相位范圍寄存器和比較,并使用比較結(jié)果,a)以傳輸結(jié)果相位信息以及每相位P2PBar的偏移;以及b)當(dāng)請(qǐng)求超出該相位的當(dāng)前范圍時(shí),更新BAR。該P(yáng)2P孔徑尺寸預(yù)先通過獨(dú)立的全局寄存器固定。BAR移動(dòng)的方式包括一些遲滯量,以最小化頻率更新。解決方案的第二部分包括使用擴(kuò)展(36位)虛擬空間,從而有可能映射全部遠(yuǎn)端GPU內(nèi)存,并使PCIe空間的分解視圖進(jìn)入源BIF。不過,由于需要傳送相位位,減少了不改變P2PBAR的情況下可尋址的表面最大尺寸。值得注意的是,GPU真實(shí)的PCIe孔徑無需任何特別的對(duì)準(zhǔn);通過使可用地址范圍的1/n分割達(dá)合理粒度來決定相位(代價(jià)是目標(biāo)側(cè)的額外比較器)。值得注意的是假定任何物理表面頁的分散-集合在目標(biāo)HDP頁表或GART中進(jìn)行,以使PCIe空間表面地址毗連。圖9顯示相位壓縮如何工作。圖中僅顯示兩個(gè)相位。假定本地內(nèi)存為256MB,每個(gè)GPU僅有128MBPCIe孔徑。圖9A為GPUO角度的系統(tǒng)存儲(chǔ)空間視圖(GPU虛擬存儲(chǔ)空間)。圖9B為PCIe角度的系統(tǒng)存儲(chǔ)空間視圖(結(jié)構(gòu)物理內(nèi)存空間)。圖9C為GPUl角度的LVM重構(gòu)視圖(HDP存儲(chǔ)空間)。為充分利用有限的PCIe孔徑尺寸,可關(guān)閉來自相同源GPU的多相位的使用。值得注意的是,一個(gè)典型大表面為每部分2Kx2Kx32b或64MB。這將適合512MB/8GPU孔徑。一實(shí)施例中,孔徑編碼的應(yīng)用是在發(fā)送BIF之前。這里所述的結(jié)構(gòu)和方法包括系統(tǒng),該系統(tǒng)包括多個(gè)專用處理器,耦接至主橋總線;直接總線,將所述各專用處理器直接耦接至其余專用處理器中的至少一個(gè);以及存儲(chǔ)控制器,耦接至至少一個(gè)所述專用處理器。其中,所述至少一存儲(chǔ)控制器決定是否通過該主機(jī)總線或直接總線傳輸數(shù)據(jù)以及是否通過該主機(jī)總線或直接總線接收數(shù)據(jù)。實(shí)施例中,該存儲(chǔ)控制器駐留于至少一個(gè)所述專用處理器上。實(shí)施例中,所述多個(gè)專用處理器包括圖形處理單元(GPU)。實(shí)施例中,所述主機(jī)總線包括高速周邊元件接口(PCIe)總線。實(shí)施例中,所述直接總線包括PCIe總線。實(shí)施例中,所述直接總線包括專有總線。實(shí)施例中,該系統(tǒng)還包括至少一本地存儲(chǔ)器,至少一系統(tǒng)存儲(chǔ)器,以及至少一對(duì)等存儲(chǔ)器,其中所述至少一對(duì)等存儲(chǔ)器駐留于專用處理器上,所述存儲(chǔ)控制器經(jīng)配置而基于所述各存儲(chǔ)器的地址范圍決定訪問哪個(gè)存儲(chǔ)器。實(shí)施例中,當(dāng)?shù)刂仿湓谠搶?duì)等存儲(chǔ)器范圍內(nèi)時(shí),該存儲(chǔ)控制器基于所述主機(jī)總線和直接總線的流量決定使用哪個(gè)端口。實(shí)施例中,當(dāng)?shù)刂仿湓谠搶?duì)等存儲(chǔ)器范圍內(nèi)時(shí),該存儲(chǔ)控制器基于所述主機(jī)總線和直接總線目前是否滿負(fù)荷而決定使用哪個(gè)端口。實(shí)施例中,當(dāng)?shù)刂仿湓谠搶?duì)等存儲(chǔ)器范圍內(nèi)時(shí),該存儲(chǔ)控制器的決定基于向所述主機(jī)總線或直接總線分配專門地址。實(shí)施例中,該系統(tǒng)還包括至少一本地存儲(chǔ)器,至少一系統(tǒng)存儲(chǔ)器,以及至少一對(duì)等存儲(chǔ)器,其中,所述至少一對(duì)等存儲(chǔ)器駐留于專用處理器上,并且所述存儲(chǔ)控制器經(jīng)配置而基于所述各存儲(chǔ)器的地址范圍決定訪問哪個(gè)存儲(chǔ)器,并基于所述主機(jī)總線和直接總線的流量執(zhí)行動(dòng)態(tài)負(fù)載平衡。實(shí)施例中,在多處理器系統(tǒng)中傳輸數(shù)據(jù)的方法包括決定是否通過主機(jī)處理器與多個(gè)專用處理器共享的主機(jī)總線或者通過該多個(gè)專用處理器之間的直接總線傳輸或接收數(shù)據(jù),其中,所做決定取決于傳輸?shù)拇鎯?chǔ)地址范圍。實(shí)施例中,所述地址范圍指定駐留于專用處理器上的對(duì)等存儲(chǔ)器、所述主機(jī)總線上的系統(tǒng)存儲(chǔ)器以及所述專用處理器之間耦接的本地存儲(chǔ)器中其中一者。實(shí)施例中,落在指定所述對(duì)等存儲(chǔ)器的地址范圍內(nèi)的專門地址被分配至所述主機(jī)總線或直接總線。實(shí)施例中,當(dāng)?shù)刂仿湓谥付ㄔ搶?duì)等存儲(chǔ)器的范圍內(nèi)時(shí),所做決定基于所述各主機(jī)總線和直接總線的流量。一實(shí)施例中,該方法還包括執(zhí)行動(dòng)態(tài)負(fù)載平衡,以基于歷史流量數(shù)據(jù)調(diào)節(jié)所述各總機(jī)主線和直接總線上的百分比流量。一實(shí)施例中,該方法還包括向所述主機(jī)處理器分配存儲(chǔ)孔徑并分配所述各專用處理器上的各自流量,其中,該存儲(chǔ)孔徑應(yīng)用于該對(duì)等存儲(chǔ)器、系統(tǒng)存儲(chǔ)器和本地存儲(chǔ)器,并且該孔徑?jīng)Q定自各處理器角度所看到的內(nèi)存。一實(shí)施例中,該方法還包括執(zhí)行孔徑壓縮,包括使用偏移寄存器通過改變偏移而使對(duì)等存儲(chǔ)器全部空間都可見。一實(shí)施例中,指令包括硬件描述語言指令,其可用于創(chuàng)建專用集成電路(ASIC)以執(zhí)行所述方法。這里所述的結(jié)構(gòu)和方法還包括存儲(chǔ)指令的計(jì)算機(jī)可讀媒體,當(dāng)執(zhí)行所述指令時(shí),使多處理器系統(tǒng)中的數(shù)據(jù)傳輸方法得以執(zhí)行。所述方法包括決定是否通過主機(jī)處理器與多個(gè)專用處理器共享的主機(jī)總線或者通過該多個(gè)專用處理器之間的直接總線傳輸或接收數(shù)據(jù),其中,所做決定取決于傳輸?shù)拇鎯?chǔ)地址范圍。一實(shí)施例中,所述地址范圍指定駐留于專用處理器上的對(duì)等儲(chǔ)存器,該主機(jī)總線上的系統(tǒng)存儲(chǔ)器以及耦接至該專用處理器的本地存儲(chǔ)器中的其中一者。一實(shí)施例中,在該范圍內(nèi)指定地址包括指定將該對(duì)等存儲(chǔ)器分配給所述主機(jī)總線或直接總線。一實(shí)施例中,當(dāng)?shù)刂仿湓谥付ㄔ搶?duì)等存儲(chǔ)器的范圍內(nèi)時(shí),所做決定基于所述各主機(jī)總線和直接總線的流量。一實(shí)施例中,該方法還包括執(zhí)行動(dòng)態(tài)負(fù)載平衡以基于歷史流量數(shù)據(jù)調(diào)節(jié)所述總機(jī)主線和直接總線上的百分比流量。一實(shí)施例中,該方法還包括向所述主機(jī)處理器分配存儲(chǔ)孔徑并分配所述各專用處理器上的各自流量,其中,該存儲(chǔ)孔徑應(yīng)用于該對(duì)等存儲(chǔ)器、系統(tǒng)存儲(chǔ)器和本地存儲(chǔ)器,并且該孔徑?jīng)Q定自各處理器角度所看到的內(nèi)存。一實(shí)施例中,該方法還包括執(zhí)行孔徑壓縮,包括使用偏移寄存器通過改變偏移而使對(duì)等存儲(chǔ)器全部空間都可見。一實(shí)施例中,所述指令包括硬件描述語言指令,其可用于創(chuàng)建ASIC以執(zhí)行所述方法。這里所述的結(jié)構(gòu)和方法還包括在多處理器系統(tǒng)中傳輸數(shù)據(jù)的方法,該方法包括決定是否通過主機(jī)處理器與多個(gè)專用處理器共享的主機(jī)總線或者通過所述多個(gè)專用處理器之間的直接總線傳輸或接收數(shù)據(jù),其中所做決定取決于傳輸?shù)拇鎯?chǔ)地址范圍;通過該直接總線在處理器之間直接傳輸數(shù)據(jù),其中,該專用處理器包括具有幀緩沖區(qū)孔徑的圖形處理單元,并且傳輸狀態(tài)直接包括提供經(jīng)由該直接總線在幀緩沖區(qū)孔徑之外的訪問??蓪⑸鲜鰧?shí)施例的各種態(tài)樣實(shí)現(xiàn)為功能,將其編程到任意類型電路中,包括但不限于可編程邏輯電路(programmablelogicdevice;PLD),例如現(xiàn)場可編程門陣列(filedprogrammablegatearray;FPGA)、可編禾呈陣列邏輯(programmablearraylogic;PAL)設(shè)備、電性可編程邏輯和存儲(chǔ)器設(shè)備、標(biāo)準(zhǔn)單元設(shè)備、以及ASIC和全定制集成電路。實(shí)現(xiàn)實(shí)施例態(tài)樣的其他可能性包括具有存儲(chǔ)器的微控制器(例如EEPR0M、快閃存儲(chǔ)器等)、嵌入式微處理器、固件、軟件等。此外,實(shí)施例態(tài)樣可包括于具有基于軟件電路仿真的微處理器、離散邏輯(時(shí)序和組合)、自定義設(shè)備、模糊(神經(jīng))邏輯、量子設(shè)備和任意上述設(shè)備類型的組合中。當(dāng)然,基礎(chǔ)的設(shè)備技術(shù)可提供于各種元件類型中,例如MOSFET技術(shù),例如CM0S、bipolar技術(shù)例如射極耦合邏輯(emitter-coupledlogic;ECL)、高分子技術(shù)(例如硅共軛聚合物和金屬共軛聚合物_金屬結(jié)構(gòu))、模擬和數(shù)字混合等。說明書和權(quán)利要求書中所用的術(shù)語“處理器”包括處理器核心或處理器的一部分。另外,盡管這里通常提到獨(dú)立的一個(gè)或多個(gè)GPU和一個(gè)或多個(gè)CPU,實(shí)施例中,GPU和CPU被包括于單個(gè)集成電路封裝或單片晶粒上。因此,在這些實(shí)施例中是單個(gè)設(shè)備執(zhí)行所請(qǐng)求保護(hù)的方法。除非特別指出,說明書和權(quán)利要求書中的“包括”等詞語都解釋為包含的含義,不具有排他或窮舉的含義。也就是“包括,但不限于”的意思。單數(shù)或復(fù)數(shù)形式的詞語還分別包括復(fù)數(shù)形式和單數(shù)形式。此外,“這里”、“以下”、“上面”、“下面”等詞語指應(yīng)用整體而非特定部分。當(dāng)“或者”用于兩個(gè)或多個(gè)條目時(shí),該術(shù)語覆蓋下列所有解釋任意所列條目、全部所列條目,以及所列條目的任意組合。上面對(duì)方法和系統(tǒng)實(shí)施例的描述并非意圖窮舉或限制本發(fā)明。盡管這里出于說明目的對(duì)方法和系統(tǒng)的特定實(shí)施例和實(shí)施方式作了描述,本領(lǐng)域的技術(shù)人員應(yīng)了解,可在本發(fā)明范圍內(nèi)進(jìn)行各種等同修改。這里所揭露的教導(dǎo)可用于其他系統(tǒng),而不只是上面所述的包括圖形處理或視頻處理的系統(tǒng)。這里所述的各種操作可在各種結(jié)構(gòu)中執(zhí)行,以不同的方式分布。此外,盡管這里描述多種配置,但這些配置并非意圖限制或排他。其他實(shí)施例中,這里所述的某些或全部硬件和軟件功能可存在于打印機(jī)、照相機(jī)、電視、DVD播放器、數(shù)字錄像機(jī)(digitalvideorecorder;DVR)或個(gè)人攝像機(jī)(personalvideorecorder;PVR)、手持設(shè)備、手機(jī)或其他設(shè)備中。可通過組合上述各種實(shí)施例的元素和動(dòng)作而提供另外的實(shí)施例??蓪?duì)所述方法和系統(tǒng)作出變更。一般而言,在下面的權(quán)利要求書中,所使用的術(shù)語不應(yīng)當(dāng)解釋為將所述方法和系統(tǒng)限制于說明書和權(quán)利要求書的特定實(shí)施例,而是應(yīng)當(dāng)解釋為包括依據(jù)權(quán)利要求操作的任意處理系統(tǒng)和方法。因此所述方法和系統(tǒng)不受揭露限制,而是由權(quán)利要求整體決定。盡管所述方法和系統(tǒng)的特定態(tài)樣以特定權(quán)利要求形式呈現(xiàn),發(fā)明人考慮了所述方法和系統(tǒng)以任意數(shù)目權(quán)利要求形式的各種態(tài)樣。例如,盡管所述方法和系統(tǒng)僅有一個(gè)態(tài)樣舉例實(shí)施為計(jì)算機(jī)可讀媒體,其他態(tài)樣同樣可實(shí)施為計(jì)算機(jī)可讀媒體。這樣的計(jì)算機(jī)可讀媒體可儲(chǔ)存計(jì)算機(jī)設(shè)備(例如個(gè)人電腦、個(gè)人數(shù)字助理、PVR、移動(dòng)設(shè)備等)要執(zhí)行的指令或是在執(zhí)行時(shí)用來創(chuàng)建執(zhí)行上述態(tài)樣的設(shè)備(GPU、ASIC等)或軟件應(yīng)用的指令(例如Verilog或硬件描述語言)。所述要求保護(hù)的發(fā)明可體現(xiàn)為計(jì)算機(jī)代碼(例如HDL、Veril0g等),創(chuàng)建、儲(chǔ)存、合成并使用這些計(jì)算機(jī)代碼來生成GDSII數(shù)據(jù)(或等同物)。接著,可基于該數(shù)據(jù)生產(chǎn)ASIC。因此,提出申請(qǐng)后,發(fā)明人保留添加額外權(quán)利要求的權(quán)利,以獲得所述方法和系統(tǒng)的其他態(tài)樣的額外權(quán)利要求形式。權(quán)利要求1.一種系統(tǒng),包括多個(gè)專用處理器,耦接至主橋總線;直接總線,將所述多個(gè)專用處理器的每一個(gè)直接耦接至所述多個(gè)專用處理器中的至少另一個(gè);以及存儲(chǔ)控制器,耦接至所述多個(gè)專用處理器中的至少一個(gè),其中,所述至少一個(gè)存儲(chǔ)控制器決定是否通過該主機(jī)總線或直接總線傳輸數(shù)據(jù)以及是否通過該主機(jī)總線或直接總線接收數(shù)據(jù)。2.如權(quán)利要求1所述的系統(tǒng),其中,所述存儲(chǔ)控制器駐留于所述多個(gè)專用處理器的至少一個(gè)上。3如權(quán)利要求1所述的系統(tǒng),其中,所述多個(gè)專用處理器包括圖形處理單元(GPU)。4.如權(quán)利要求1所述的系統(tǒng),其中,所述主機(jī)總線包括高速周邊元件接口(PCIe)總線。5.如權(quán)利要求ι所述的系統(tǒng),其中,所述直接總線包括高速周邊元件接口(PCI)總線。6.如權(quán)利要求1所述的系統(tǒng),其中,所述直接總線包括專有總線。7.如權(quán)利要求1所述的系統(tǒng),還包括至少一個(gè)本地存儲(chǔ)器,至少一個(gè)系統(tǒng)存儲(chǔ)器,以及至少一個(gè)對(duì)等存儲(chǔ)器,其中所述至少一個(gè)對(duì)等存儲(chǔ)器駐留于專用處理器上,并且所述存儲(chǔ)控制器經(jīng)配置而基于所述各存儲(chǔ)器的地址范圍決定訪問哪個(gè)存儲(chǔ)器。8.如權(quán)利要求7所述的系統(tǒng),其中,當(dāng)?shù)刂仿湓谠搶?duì)等存儲(chǔ)器范圍內(nèi)時(shí),該存儲(chǔ)控制器基于所述主機(jī)總線和所述直接總線的每一個(gè)上的流量決定使用哪個(gè)端口。9.如權(quán)利要求7所述的系統(tǒng),其中,當(dāng)?shù)刂仿湓谠搶?duì)等存儲(chǔ)器范圍內(nèi)時(shí),該存儲(chǔ)控制器基于所述主機(jī)總線和直接總線目前是否滿負(fù)荷而決定使用哪個(gè)端口。10.如權(quán)利要求7所述的系統(tǒng),其中,當(dāng)?shù)刂仿湓谠搶?duì)等存儲(chǔ)器范圍內(nèi)時(shí),該存儲(chǔ)控制器的決定基于向所述主機(jī)總線或直接總線分配專門地址。11.如權(quán)利要求1所述的系統(tǒng),還包括至少一個(gè)本地存儲(chǔ)器,至少一個(gè)系統(tǒng)存儲(chǔ)器,以及至少一個(gè)對(duì)等存儲(chǔ)器,其中,所述至少一個(gè)對(duì)等存儲(chǔ)器駐留于專用處理器上,并且其中所述存儲(chǔ)控制器經(jīng)配置而基于所述各存儲(chǔ)器的地址范圍決定訪問哪個(gè)存儲(chǔ)器,并且其中該存儲(chǔ)控制器還基于所述主機(jī)總線和直接總線的每一個(gè)上的流量執(zhí)行動(dòng)態(tài)負(fù)載平衡。12.—種在多處理器系統(tǒng)中傳輸數(shù)據(jù)的方法,包括決定是否通過由主機(jī)處理器和多個(gè)專用處理器共享的主機(jī)總線或者通過該多個(gè)專用處理器之間的直接總線傳輸或接收數(shù)據(jù),其中,所做決定取決于傳輸?shù)拇鎯?chǔ)地址范圍。13.如權(quán)利要求12所述的方法,其中,所述地址范圍指定駐留于專用處理器上的對(duì)等存儲(chǔ)器、該主機(jī)總線上的系統(tǒng)存儲(chǔ)器以及該專用處理器之間耦接的本地存儲(chǔ)器中的其中之ο14.如權(quán)利要求13所述的方法,其中,落在指定所述對(duì)等存儲(chǔ)器的范圍內(nèi)的專門地址被分配至所述主機(jī)總線或直接總線的其中之一。15.如權(quán)利要求13所述的方法,其中,當(dāng)?shù)刂仿湓谥付ㄔ搶?duì)等存儲(chǔ)器的范圍內(nèi)時(shí),所做決定基于所述各主機(jī)總線和直接總線的每一個(gè)上的流量。16.如權(quán)利要求15所述的方法,還包括執(zhí)行動(dòng)態(tài)負(fù)載平衡以基于歷史流量數(shù)據(jù)調(diào)節(jié)所述總機(jī)主線和直接總線的每一個(gè)上的百分比流量。17.如權(quán)利要求13所述的方法,還包括向該主機(jī)處理器分配存儲(chǔ)孔徑并分配所述多個(gè)專用處理器的每一個(gè)上的各自流量,其中,該存儲(chǔ)孔徑應(yīng)用于該對(duì)等存儲(chǔ)器、系統(tǒng)存儲(chǔ)器和本地存儲(chǔ)器,并且該孔徑?jīng)Q定各個(gè)處理器如何查看存儲(chǔ)器。18.如權(quán)利要求17所述的方法,還包括執(zhí)行孔徑壓縮,包括使用偏移寄存器通過改變偏移而使所述對(duì)等存儲(chǔ)器的全部都可見。19.如權(quán)利要求12所述的方法,其中,該指令包括可用于創(chuàng)建專用集成電路(ASIC)以執(zhí)行所述方法的硬件描述語言指令。20.一種存儲(chǔ)指令的計(jì)算機(jī)可讀媒體,當(dāng)執(zhí)行所述指令時(shí),使多處理器系統(tǒng)中的數(shù)據(jù)傳輸方法得以執(zhí)行,該方法包括決定是否通過由主機(jī)處理器與多個(gè)專用處理器共享的主機(jī)總線或者通過多個(gè)專用處理器之間的直接總線傳輸或接收數(shù)據(jù),其中,所做決定取決于傳輸?shù)拇鎯?chǔ)地址范圍。21.如權(quán)利要求20所述的計(jì)算機(jī)可讀媒體,其中,該地址范圍指定駐留于專用處理器上的對(duì)等儲(chǔ)存器,該主機(jī)總線上的系統(tǒng)存儲(chǔ)器,以及耦接至該專用處理器的本地存儲(chǔ)器中的其中之一。22.如權(quán)利要求21所述的計(jì)算機(jī)可讀媒體,其中,落在指定所述對(duì)等存儲(chǔ)器的范圍內(nèi)的專門地址被分配至所述主機(jī)總線或直接總線其中之一。23.如權(quán)利要求21所述的計(jì)算機(jī)可讀媒體,其中,當(dāng)?shù)刂仿湓谥付ㄔ搶?duì)等存儲(chǔ)器的范圍內(nèi)時(shí),所做決定基于所述主機(jī)總線和直接總線的每一個(gè)上的流量。24.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒體,其中,所述方法還包括執(zhí)行動(dòng)態(tài)負(fù)載平衡以基于歷史流量數(shù)據(jù)調(diào)節(jié)所述主機(jī)總線和直接總線的每一個(gè)上的百分比流量。25.如權(quán)利要求21所述的計(jì)算機(jī)可讀媒體,其中,所述方法還包括向該主機(jī)處理器分配存儲(chǔ)孔徑以及分配所述多個(gè)專用處理器的每一個(gè)上的各自流量,其中,該存儲(chǔ)孔徑應(yīng)用于該對(duì)等存儲(chǔ)器、系統(tǒng)存儲(chǔ)器和本地存儲(chǔ)器,并且該孔徑?jīng)Q定各個(gè)處理器如何查看存儲(chǔ)器。26.如權(quán)利要求25所述的計(jì)算機(jī)可讀媒體,其中,所述方法還包括執(zhí)行孔徑壓縮,包括使用偏移寄存器通過改變偏移而使所述對(duì)等存儲(chǔ)器的全部都可見。27.如權(quán)利要求20所述的計(jì)算機(jī)可讀媒體,其中,所述指令包括可用于創(chuàng)建專用集成電路(ASIC)以執(zhí)行所述方法的硬件描述語言指令。28.一種在多處理器系統(tǒng)中傳輸數(shù)據(jù)的方法,包括決定是否通過由主機(jī)處理器與多個(gè)專用處理器共享的主機(jī)總線或者通過該多個(gè)專用處理器之間的直接總線傳輸或接收數(shù)據(jù),其中,所做決定取決于傳輸?shù)拇鎯?chǔ)地址范圍;通過所述直接總線在處理器之間直接傳輸數(shù)據(jù),其中,所述專用處理器包括具有幀緩沖區(qū)孔徑的圖形處理單元,并且傳輸狀態(tài)直接包括提供經(jīng)由該直接總線在幀緩沖區(qū)孔徑之外的訪問。全文摘要本發(fā)明描述點(diǎn)對(duì)點(diǎn)專用處理器結(jié)構(gòu)和方法。實(shí)施例包括多個(gè)專用處理器,通過主橋總線耦接至中央處理單元;直接總線,將所述各專用處理器直接耦接至其余專用處理器中的至少一個(gè);以及存儲(chǔ)控制器,耦接至所述多個(gè)專用處理器。其中,所述至少一存儲(chǔ)控制器決定是否通過該主機(jī)總線或直接總線傳輸數(shù)據(jù)以及是否通過該主機(jī)總線或直接總線接收數(shù)據(jù)。文檔編號(hào)G06F13/42GK102007479SQ200980111272公開日2011年4月6日申請(qǐng)日期2009年3月27日優(yōu)先權(quán)日2008年3月31日發(fā)明者B·艾特沙伊德,M·S·格羅斯曼,S·莫雷恩,W·F·克魯格申請(qǐng)人:先進(jìn)微裝置公司