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