用于并行命令列表生成的硬件的制作方法

            文檔序號:6351192閱讀:132來源:國知局
            專利名稱:用于并行命令列表生成的硬件的制作方法
            技術領域
            本發(fā)明涉及處理單元,并且,具體地說,涉及用于并行命令列表生成的硬件。
            背景技術
            Microsoft Direct3D 11 (DXll)是支持曲面細分(tessellation)以及允許經(jīng)改進多線程的API (應用程序接口),用于幫助開發(fā)者開發(fā)更好地利用多核處理器的應用程序。在DXl I中,CPU (中央處理單元)的每個內(nèi)核均能并行地執(zhí)行命令線程。每個內(nèi)核或在相同內(nèi)核上的不同線程均通過自己的用戶模式驅動副本來生成獨立的命令列表以提高軟件應用程序的性能。命令列表是命令緩沖區(qū)(buffer)的API級的抽象,它是較低級別的概念。當驅動從應用程序接收到API命令時,該驅動建立命令緩存;命令列表由完整的命令緩沖區(qū)加上任意附加的定義實施的(implementation-defined)元(meta)信息來表現(xiàn)。命令列表或命令緩沖區(qū)的內(nèi)容典型地由GPU(圖形處理單元)執(zhí)行。在這些CPU內(nèi)核的其中之一上運行有單個線程,該線程以特定順序提交用于執(zhí)行的命令列表。這些命令列表的順序,以及由此命令緩沖區(qū)的順序,由所述應用程序確定。通過入棧緩沖區(qū)(pushbuffer)將命令緩沖區(qū)輸入到內(nèi)核中。所述命令緩沖區(qū)包括由內(nèi)核執(zhí)行的方法,特別是由GPU執(zhí)行的方法。然而,DXll不允許跨命令列表的處理器狀態(tài)繼承。相反,處理器狀態(tài)在每個命令列表開始時被重置為所謂的“空白狀態(tài)(clean slate state)”。也就是指,每個用戶模式驅動線程都在命令列表開始時在處理器中設置所有的狀態(tài)參數(shù)。由于在執(zhí)行應用程序時線程不能配合,所以不提供跨命令列表的狀態(tài)繼承具有極大的缺點。此外,使用幾十或幾百個命令來將處理器的狀態(tài)重置為空白狀態(tài)所增加的處理開銷降低了系統(tǒng)的效率,因此,降低了整體性能。如上所述,本技術領域需要一種改進的技術解決上述當前方法的局限性。

            發(fā)明內(nèi)容
            本發(fā)明的一個實施例提供了一種用于在多線程處理環(huán)境中提供跨命令列表的狀態(tài)繼承方法。所述方法包括接收包括多個并行線程的應用程序;為所述多個并行線程的每個線程生成命令列表;使與所述多個并行線程的第一線程相關聯(lián)的第一命令列表由處理單元執(zhí)行;以及使與所述多個并行線程的第二線程相關聯(lián)的第二命令列表由所述處理單元 執(zhí)行,其中所述第二命令列表從所述第一命令列表繼承與所述處理單元相關聯(lián)的狀態(tài)。
            本發(fā)明的另一個實施例提供一種用于為多線程處理環(huán)境提供初始默認狀態(tài)的方法。所述方法包括接收包括多個并行線程的應用程序;為所述多個并行線程的每個線程生成命令列表;將釋放方法插入到與所述多個并行線程的第一線程相關聯(lián)的第一命令列表中以由處理單元執(zhí)行,其中所述釋放方法是將由所述處理單元所執(zhí)行的命令;使所述釋放方法由所述處理單元執(zhí)行,使得處理單元的狀態(tài)的每個參數(shù)被重置;以及,在執(zhí)行所述釋放方法后,使被包括在所述第一命令列表中的命令由所述處理單元執(zhí)行。本發(fā)明實施例所提供的一個優(yōu)點在于,相對現(xiàn)有技術實現(xiàn)更高的處理效率。


            因此,可以詳細地理解本發(fā)明的上述特征,并且可以參考實施例對于上面所簡要說明的本發(fā)明進行更具體的描述,其中一些實施例在附圖中示出。然而,應當注意的是,附圖僅示出了本發(fā)明的典型實施例,因此不應被認為是對本發(fā)明范圍的限制。本發(fā)明可以適用于其他等效的實施例。 圖I為示出了被配置為實現(xiàn)本發(fā)明一個或多個方面的計算機系統(tǒng)的框圖;圖2為根據(jù)本發(fā)明的一個實施例的,用于圖I的計算機系統(tǒng)的并行處理子系統(tǒng)的框圖;圖3A為根據(jù)本發(fā)明一個實施例的,圖2的一個PPU內(nèi)的GPC的框圖;圖3B為根據(jù)本發(fā)明一個實施例的,圖2的一個PPU內(nèi)的分區(qū)單元的框圖;圖4為根據(jù)本發(fā)明一個實施例的,圖2的一個或多個PTO可經(jīng)配置以實現(xiàn)的圖形處理管線的示意圖;圖5為根據(jù)本發(fā)明一個實施例的,示出了使用并行命令列表的多線程處理的示意圖。圖6為根據(jù)本發(fā)明一個實施例的,示出了跨命令列表的狀態(tài)繼承的示意圖。圖7為根據(jù)本發(fā)明一個實施例的,示出了用于狀態(tài)繼承的命令列表的示意圖。圖8為根據(jù)本發(fā)明一個實施例的,用于具有跨命令列表狀態(tài)繼承的多線程處理的方法步驟的流程圖;圖9為根據(jù)本發(fā)明一個實施例的,用于生成命令列表的方法步驟的流程圖;圖10為根據(jù)本發(fā)明一個實施例的,用于使用UnbindAll ()方法實現(xiàn)多線程處理的方法步驟的流程圖。
            具體實施例方式在下面的描述中,將闡述大量的具體細節(jié)以提供對本發(fā)明更為徹底的理解。然而,對于本技術領域技術人員來講將顯而易見的是,本發(fā)明可以在缺少這些具體細節(jié)的一個或者多個的情況下得以實施。在其他實例中,沒有描述公知的特征以避免對本發(fā)明造成混淆。系統(tǒng)概述圖I為示出了被配置為實施本發(fā)明的一個或多個方面的計算機系統(tǒng)100的框圖。計算機系統(tǒng)100包括中央處理單元(CPU) 102和系統(tǒng)存儲器104,兩者通過存儲器橋105經(jīng)由總線路徑通信。DX 11多線程特征主要針對多內(nèi)核CPU。因此,在一些實施例中,CPU 102是多內(nèi)核CPU。如圖I所示,存儲器橋105可整合在CPU 102中。可選地,存儲器橋105可以是常見設備,例如北橋芯片,其通過總線連接到CPU 102。存儲器橋105可經(jīng)由通信路徑106 (例如超傳輸(HyperTransport)鏈路)連接到I/O (輸入/輸出)橋107。I/O橋107,其可以例如是南橋芯片,從一個或多個用戶輸入設備108 (諸如鍵盤、鼠標)接收用戶輸入并且經(jīng)由路徑106和存儲器橋105將所述輸入轉發(fā)(forward)到CPU 102。并行處理子系統(tǒng)112經(jīng)由總線或其他通信路徑113 (例如PCI Express、加速圖形端口或超傳輸鏈路)耦合到存儲器橋105 ;在一個實施例中,并行處理子系統(tǒng)112是將像素傳輸?shù)斤@示設備110(例如常見的基于CRT或IXD的顯示器)的圖形子系統(tǒng)。系統(tǒng)盤114也連接到I/O橋107。開關116為I/O橋與諸如網(wǎng)絡適配器118以及各種外插卡(add-in card) 120和121的其他組件之間提供了連接。其他組件(未明確示出)也可以連接到I/O橋107,包括USB或其他端口連接、CD驅動器、DVD驅動器、膠片記錄設備等。圖I中將各種組件互連的通信路徑可以采用任何適合的協(xié)議來實現(xiàn),諸如PCI (外部組件互連)、PCI-Express, AGP (加速圖形端口)、超傳輸或任何其他總線或者點對點通信協(xié)議。并且不同設備間的連接可采用本技術領域已知的不同協(xié)議。 在一個實施例中,并行處理子系統(tǒng)112包含被優(yōu)化用于圖形和視頻處理的電路,例如包括視頻輸出電路,并且構成圖形處理單元(GPU)。在另一個實施例中,并行處理子系統(tǒng)112包含被優(yōu)化用于通用目的處理的電路,同時保留底層(underlying)的計算架構,本文將進行更為詳細的描述。在另一個實施例中,可以將并行處理子系統(tǒng)112與一個或多個其他系統(tǒng)元件集成,諸如存儲器橋105、CPU 102、以及I/O橋107,以形成片上系統(tǒng)(SoC)。應該理解,本文所示系統(tǒng)是示例性的,可以對其進行變形和修改??筛鶕?jù)需要修改連接拓撲,包括橋的數(shù)量和布置。例如,在一些實施例中,系統(tǒng)存儲器104直接連接到CPU102而不是通過橋,其他設備經(jīng)由存儲器橋105以及CPU 102與系統(tǒng)存儲器104通信。在其他替代拓撲中,并行處理子系統(tǒng)112連接到I/O橋107或直接連接到CPU 102,而不是連接到存儲器橋105。在又一個實施例中,CPU 102的一個或多個、I/O橋107、并行處理子系統(tǒng)112和存儲器橋105可被集成到一個或多個芯片中。本文所示的特定組件是可選的;例如,可以支持任意數(shù)量的外插卡或外圍裝置。在一些實施例中,開關116被去掉,網(wǎng)絡適配器118和外插卡120、121直接連接到I/O橋107。圖2示出根據(jù)本發(fā)明的一個實施例的并行處理子系統(tǒng)112。如圖所示,并行處理子系統(tǒng)112包括一個或多個并行處理單元(PPU) 202,每個并行處理單元PI3U都耦合到本地并行處理(PP)存儲器204。通常,并行處理子系統(tǒng)包括U個PPU,其中U彡I。(本文中,相似對象的多個實體用標識該對象的參考數(shù)字和根據(jù)需要結合標識該實體的帶括號的數(shù)字加以表示。)PPU 202和并行處理存儲器204可使用一個或多個集成電路器件來實現(xiàn),該集成電路器件諸如可編程處理器、專用集成電路(ASIC)或存儲器器件,或以任何其他技術上可行的方式來實現(xiàn)。再參考圖I,在一些實施例中,并行處理子系統(tǒng)112的一些或所有PPU202是具有渲染管線的圖形處理器,它可以被配置為執(zhí)行與下述各項相關的各種任務從CPU102和/或系統(tǒng)存儲器104所提供的圖形數(shù)據(jù)生成像素數(shù)據(jù)、與本地并行處理存儲器204(可被用作圖形存儲器,包括例如常用的幀緩沖器)交互以存儲和更新像素數(shù)據(jù)、輸送像素數(shù)據(jù)到顯示設備110等等。在一些實施例中,并行處理子系統(tǒng)112可包括一個或多個作為圖形處理器而操作的PPU 202,以及一個或多個用作通用計算的其他PPU 202。這些PI3U可以是相同的或不同的,并且每個PPU均可有自己的專用并行處理存儲器設備或非專用并行處理存儲器設備。一個或多個PPU 202可輸出數(shù)據(jù)到顯示設備110,或每個PPU 202均可輸出數(shù)據(jù)到一個或多個顯示設備110。在操作中,CPU 102是計算機系統(tǒng)100的主處理器,控制和協(xié)調(diào)其他系統(tǒng)組件的操作。具體地,CPU 102發(fā)出控制PPU 202的操作的命令。在一些實施例中,CPU 102將針對每個PPU 202的命令流寫入到命令緩沖區(qū)中(在圖I或圖2中未明確示出),所述命令緩沖區(qū)可位于系統(tǒng)存儲器104、并行處理存儲器204、或其他可由CPU 102和PPU 202訪問的存儲位置中。PPU 202從命令緩沖區(qū)讀取命令流,然后相對于CPU 102的操作異步地執(zhí)行命令。CPU 102也可創(chuàng)建可由PPU 202響應命令緩沖區(qū)中的命令而讀取的數(shù)據(jù)緩沖區(qū)。每個命令和數(shù)據(jù)緩沖區(qū)均可由每個PPU 202所讀取?,F(xiàn)在返回參考圖2,每個PPU 202均包括I/O (輸入/輸出)單元205,該I/O單元205經(jīng)由連接到存儲器橋105 (或,在一個替代實施例中,直接連接到CPU 102)的通信路徑 113與計算機系統(tǒng)100的其余部分通信。PPU 202與計算機系統(tǒng)100的其余部分的連接也可以不同。在一些實施例中,并行處理子系統(tǒng)112可作為外插卡來實現(xiàn),所述外插卡可被插入到計算機系統(tǒng)100的擴展插槽中。在其他實施例中,PPU 202可以和諸如存儲器橋105或I/O橋107的總線橋一起集成在單個芯片上。在又一些實施例中,PPU 202的一些或所有元件可以和CPU 102—起集成在單個芯片上。在一個實施例中,通信路徑113是PCI-Express鏈路,其中給每個PPU202分配專用的通道(lane),如本技術領域所知。也可使用其他的通信路徑。I/O單元205生成數(shù)據(jù)包(或其他信號)用于在通信路徑113上傳送,并且還從通信路徑113接收所有傳入的數(shù)據(jù)包(或其他信號),將傳入的數(shù)據(jù)包引向PPU 202的適當組件。例如,可將與處理任務有關的命令引向主機接口 206,而可將與存儲器操作有關的命令(例如,對并行處理存儲器204的讀取或寫入)引向存儲器交叉開關(crossbar)單元210。主機接口 206讀取每個命令緩沖區(qū),并且將該命令緩沖區(qū)指定的工作輸出到前端212。有利地,每個PPU 202都實現(xiàn)高度并行處理架構。如圖中詳細所示,PPU 202(0)包括處理集群陣列230,該陣列230包括C個通用處理集群(GPC) 208,其中C彡I。每個GPC 208均能并發(fā)執(zhí)行大量的(例如,幾百或幾千)線程,其中每個線程均是程序的實例(instance)。在各種應用中,可以分配不同的GPC208用于處理不同類型的程序或用于執(zhí)行不同類型的計算。例如,在圖形應用中,可分配第一組GPC 208來執(zhí)行曲面細分操作并為曲面片(patch)生成基元(primitive)拓撲,并且可分配第二組GPC 208來執(zhí)行曲面細分著色以評估用于基元拓撲的曲面片參數(shù)以及確定頂點位置和每頂點的其他屬性。GPC 208的分配可根據(jù)為每種類型的程序或計算所產(chǎn)生的工作量而不同。可替代地,GPC208可被分配以使用分時(time-slice)機制來執(zhí)行處理任務,從而在不同的處理任務間切換。GPC 208經(jīng)由工作分布單元200接收將被執(zhí)行的處理任務,所述工作分布單元200從前端單元212接收定義處理任務的命令。處理任務包括指向將被處理的數(shù)據(jù)的指針以及定義將如何處理數(shù)據(jù)(例如,將執(zhí)行哪個程序)的命令和狀態(tài)參數(shù),所述指向將被處理的數(shù)據(jù)的指針例如表面(曲面片)數(shù)據(jù)、基元數(shù)據(jù)、頂點數(shù)據(jù)和/或像素數(shù)據(jù)。工作分布單元200可以被配置為獲取與這些處理任務相對應的指針、可以從前端212接收指針或者可以直接從前端接收數(shù)據(jù)。在一些實施例中,索引指定了數(shù)據(jù)在陣列中的位置。前端212確保在命令緩沖區(qū)所指定的處理啟動前,GPC 208被配置為有效狀態(tài)。當PPU 202被用于圖形處理時,例如,將每個曲面片的處理工作量分成大小近似相等的任務,以使曲面細分處理能夠被分布到多個GPC 208。工作分布單元200可被配置為以能夠提供任務給多個GPC 208進行處理的頻率輸出任務。在本發(fā)明的一些實施例中,部分GPC 208可被配置為執(zhí)行不同類型的處理。例如,第一部分可被配置為執(zhí)行頂點著色和拓撲生成,第二部分可被配置為執(zhí)行曲面細分和幾何著色,并且第三部分可被配置為在屏幕空間中執(zhí)行像素著色以產(chǎn)生渲染后的圖像。分配部分GPC 208用于執(zhí)行不同類型處理任務的能力有效地適應了由這些不同類型處理任務所產(chǎn)生的數(shù)據(jù)的擴展和伸縮。在下游GPC208接收數(shù)據(jù)的速率滯后于上游GPC208產(chǎn)生數(shù)據(jù)的速率的情況下,由GPC 208產(chǎn)生的中間數(shù)據(jù)可以被緩沖,以允許該中間數(shù)據(jù)在GPC 208之間以最小的停頓(stalling)來傳送??蓪⒋鎯ζ鹘涌?214劃分為D個存儲器分區(qū)單元,其每一個單元均耦合到并行處 理存儲器204的一部分,其中DS I。通常,并行處理存儲器204的每一部分均包括一個或多個存儲器設備(例如,DRAM 220)。本技術領域的技術人員應該理解,DRAM 220可以由其他合適的存儲設備代替,并且可以是一般常規(guī)設計。因此省略詳細的描述。渲染目標,諸如幀緩沖區(qū)或紋理映射,可以被跨DRAM 220存儲,允許分區(qū)單元215并行地寫入每個渲染目標的一部分,從而有效地使用并行處理存儲器204的可用帶寬。任意一個GPC 208都可以處理將被寫到并行處理存儲器204內(nèi)任意DRAM 220的數(shù)據(jù)。交叉開關單元210被配置為將每個GPC 208的輸出路由到任意分區(qū)單元215的輸入或路由到另一個GPC 208用于進一步處理。GPC 208通過交叉開關單元210與存儲器接口214通信,以對各種外部存儲器設備進行讀寫。在一個實施例中,交叉開關單元210具有到存儲器接口 214的連接以和I/O單元205通信,以及具有到本地并行處理存儲器204的連接,從而使得在不同GPC 208內(nèi)的處理內(nèi)核能夠與系統(tǒng)存儲器104或相對于PPU 202來講非本地的其他存儲器通信。交叉開關單元210可使用虛擬通道來分開GPC 208與分區(qū)單元215之間的業(yè)務流。再者,GPC 208可被編程為執(zhí)行與種類繁多的應用相關的處理任務,包括但不限于,線性和非線性數(shù)據(jù)轉換、視頻和/或音頻數(shù)據(jù)的過濾、建模操作(例如,應用物理定律以確定對象的位置、速率和其他屬性)、圖像渲染操作(例如,曲面細分著色、頂點著色、幾何著色和/或像素著色程序)等等。PPU 202可將數(shù)據(jù)從系統(tǒng)存儲器104和/或本地并行處理存儲器204傳輸?shù)絻?nèi)部(片上)存儲器中,處理數(shù)據(jù),并且將結果數(shù)據(jù)寫回到系統(tǒng)存儲器104和/或本地并行處理存儲器204,在這里這樣的數(shù)據(jù)可以由其他系統(tǒng)組件訪問,所述其他系統(tǒng)組件包括CPU 102或另一并行處理子系統(tǒng)112。PPU202可擁有任意容量(amount)的本地并行處理存儲器204,包括沒有本地存儲器,并且PPU202可以以任意組合方式使用本地存儲器和系統(tǒng)存儲器。例如,在統(tǒng)一存儲架構(UMA)實施例中,PTO 202可以是圖形處理器。在這樣的實施例中,將不提供或幾乎不提供專用的圖形(并行處理)存儲器,并且PPU 202會以排他的方式或幾乎以排他的方式使用系統(tǒng)存儲器。在UMA實施例中,PPU 202可被集成到橋式芯片中或處理器芯片中,或作為分立芯片被提供,所述分立芯片具有經(jīng)由橋式芯片或其他通信方式將PPU 202連接到系統(tǒng)存儲器的高速鏈路(例如,PCI-Express)。如上所述,并行處理子系統(tǒng)112可以包括任意數(shù)量的PPU 202。例如,在單個外插卡上可以提供多個PPU 202,或可以將多個外插卡連接到通信路徑113,或可以將一個或多個PPU 202集成到橋式芯片中。多PI3U系統(tǒng)中的PPU 202可以彼此相同或不同。例如,不同的PPU 202可能具有不同數(shù)量的處理內(nèi)核、不同容量的本地并行處理存儲器等等。在出現(xiàn)多個PPU202的情況下,可并行地操作這些PI3U從而以高于單個PPU 202可能達到的吞吐量來處理數(shù)據(jù)。包括一個或多個PPU 202的系統(tǒng)可以以各種配置和形式因素來加以實現(xiàn),包括桌上型電腦、膝上型電腦或手持式個人計算機、服務器、工作站、游戲控制臺、嵌入式系統(tǒng)等。處理集群陣列概述圖3A為根據(jù)本發(fā)明一個實施例的,圖2的一個PPU 202內(nèi)的GPC 208的框圖。每個GPC 208可被配置為以并行方式執(zhí)行大量的線程,其中術語“線程”是指針對特定的一組輸入數(shù)據(jù)執(zhí)行的特定程序的實例。在一些實施例中,使用單指令多數(shù)據(jù)(SIMD)指令發(fā)送技術來支持大量線程的并行執(zhí)行,而無需提供多個獨立的指令單元。在其他實施例中,采用單指令多線程(SMT)技術,使用被配置為發(fā)送指令到每個GPC 208內(nèi)一組處理引擎的公共指令單元,來支持大量通常同步化的線程的并行執(zhí)行。與其中所有處理引擎一般都執(zhí)行相同 指令的SMD執(zhí)行機制不同,SMT的執(zhí)行通過給定的線程程序,允許不同線程更容易地跟蹤(follow)分散的執(zhí)行路徑。本技術領域的技術人員應該理解,SMD處理機制代表SMT處理機制的一個功能子集。在圖形應用中,GPC 208可被配置以實現(xiàn)用于執(zhí)行屏幕空間圖形處理功能的基元引擎,所述屏幕空間圖形處理功能可包括但不限于,基元建立、光柵化以及z裁剪(zculling)。該基元引擎從工作分布單元200接收處理任務,并且當該處理任務不需要基元引擎執(zhí)行操作時,將該處理任務通過基元引擎?zhèn)鞯焦芫€管理器305。經(jīng)由管線管理器305來方便地控制GPC 208的操作,所述管線管理器305分布處理任務給流多處理器(SPM) 310。管線管理器305也可被配置為通過為由SPM 310輸出的處理后的數(shù)據(jù)指定目的地來控制工作分布交叉開關330。在一個實施例中,每個GPC 208均包括M個SPM 310,其中M彡I,每個SPM 310均被配置為處理一個或多個線程組。傳送到特定GPC 208的一系列指令構成線程,如本文前面所定義的,并且跨SPM310內(nèi)并行處理引擎(未示出)所并發(fā)執(zhí)行的一定數(shù)量的線程的集合在本文中被稱作“線程組”。如本文所使用的,“線程組”是指針對不同輸入數(shù)據(jù)并發(fā)執(zhí)行相同程序的一組線程,該組的每個線程被分配給SPM 310內(nèi)的不同處理引擎。線程組可以包括比SPM 310內(nèi)處理引擎的數(shù)量更少的線程,在這種情況下,在正在處理該線程組的周期期間,一些處理引擎將處于空閑狀態(tài)。線程組也可以包括比SPM 310內(nèi)處理引擎的數(shù)量更多的線程,在這種情況下,將在多個時鐘周期進行處理。因為每個SPM 310能并發(fā)地支持多達G個線程組,所以在任意給定的時間,GPC 208中都可以執(zhí)行多達GXM個線程組。此外,在SPM 310內(nèi),多個相關的線程組可同時處于激活狀態(tài)(處于不同的執(zhí)行階段)。這個線程組的集合在本文中被稱作“協(xié)作線程陣列”(“CTA”)。特定CTA的大小等于mXk,其中k是線程組中并發(fā)執(zhí)行的線程的數(shù)量,并且一般是SPM 310內(nèi)并行處理引擎數(shù)量的整數(shù)倍,m是在SPM 310內(nèi)同時處于激活狀態(tài)的線程組的數(shù)量。CTA的大小通常由編輯人員以及CTA可用的硬件資源例如存儲器或寄存器的容量來確定。每個線程可使用獨享的本地地址空間,并且共享的每CTA(per-CTA)地址空間用于在CTA內(nèi)的線程之間傳遞數(shù)據(jù)。將存儲在每線程地址空間和每CTA地址空間中的數(shù)據(jù)存儲在LI高速緩存(cache) 320中,并且可使用回收(eviction)策略以有助于在LI高速緩存320中保持該數(shù)據(jù)。每個SPM 310使用相應的LI高速緩存320中用于執(zhí)行加載和存儲操作的空間。每個SPM 310也可以訪問分區(qū)單元215內(nèi)的L2高速緩存,該L2高速緩存在所有GPC 208之間被共享并且可以用于在線程之間傳輸數(shù)據(jù)。最后,SPM310也可以訪問片夕卜“全局”存儲器,包括例如并行處理存儲器204和/或系統(tǒng)存儲器104。L2高速緩存可用于存儲寫入全局存儲器或從全局存儲器讀出的數(shù)據(jù)。應該理解,PPU 202外部的任何存儲器都可以被用作全局存儲器。另外,如本技術領域所知,每個SPM 310有利地包括可被管線化的相同的一組功能單元(例如,算術邏輯單元),從而允許在前一個指令完成之前發(fā)送新的指令??梢蕴峁┕δ軉卧娜我饨M合。在一個實施例中,這些功能單元支持各種操作,包括整數(shù)和浮點算法(例如,加法和乘法)、比較操作、布爾操作(AND、OR、X0R)、移位(bit-shifting)以及各種代數(shù)函數(shù)計算(例如,平面插值、三角、指數(shù)和對數(shù)函數(shù)等);并且相同的功能單元硬件可均衡地用于(be leveraged to)執(zhí)行不同操作。每個GPC 208可包括被配置為將虛擬地址映射到物理地址的存儲器管理單元(MMU)328。在其他實施例中,MMU328可駐留在存儲器接口 214內(nèi)。MMU 328包括用于將虛擬地址映射到像素塊(tile)的物理地址的一組頁表條目(PTE),以及可選地包括高速緩存線索引(cache line index)。處理所述物理地址以分散表面數(shù)據(jù)訪問位置,從而允許在分區(qū)單元交錯的高效請求。所述高速緩存線索引可被用于確定對高速緩存線的請求是否命中或者未命中。在圖形應用中,GPC 208可被配置為使得每個SPM 310耦合到紋理單元315,用于執(zhí)行紋理映射操作,例如確定紋理采樣位置、讀取紋理數(shù)據(jù)以及過濾紋理數(shù)據(jù)。紋理數(shù)據(jù)經(jīng)由存儲器接口 214讀取,以及當需要的時候從L2高速緩存、并行處理存儲器204或系統(tǒng)存儲器104獲取。紋理單元315可被配置為在內(nèi)部高速緩存中存儲紋理數(shù)據(jù)。在一些實施例中,將紋理單元315耦合至LI高速緩存320,并且將紋理數(shù)據(jù)存儲在LI高速緩存320中。為了提供處理后的任務給另一個GPC 208用于進一步的處理,或者為了經(jīng)由交叉開關單元210在L2高速緩存、并行處理存儲器204或系統(tǒng)存儲器104中存儲該處理后的任務,每個SPM 310都將處理后的任務輸出給工作分布交叉開關330。preROP(pre-rasteroperations,預光柵操作)單元被配置為從SPM 310接收數(shù)據(jù),將數(shù)據(jù)引向分區(qū)單元215中的ROP單元并執(zhí)行對色彩混合的優(yōu)化、組織像素色彩數(shù)據(jù)以及執(zhí)行地址轉換。應該理解,本文所描述的內(nèi)核架構是示例性的,可以對其進行各種變形和修改。GPC 208內(nèi)可以包括任意數(shù)量的處理引擎例如基元引擎、SPM310、紋理單元315、或preROP325。進一步,雖然只示出了一個GPC 208,但PPU 202可以包括任意數(shù)量的GPC 208,這些GPC 208最好功能上彼此相似,從而執(zhí)行行為不依賴于哪個GPC 208接收到特定處理任務。進一步地,有利地,每個GPC 208最好使用單獨的且各異的處理引擎、LI高速緩存320等,獨立于其他GPC 208操作。圖3B為根據(jù)本發(fā)明一個實施例的,圖2的一個PPU 202內(nèi)分區(qū)單元215的框 圖。如圖所示,分區(qū)單元215包括L2高速緩存350、幀緩沖區(qū)(FB) 355以及光柵操作單元(ROP) 360。L2高速緩存350是讀/寫高速緩存,其被配置為對從交叉開關單元210及ROP360接收的操作執(zhí) 行加載和存儲。讀缺失和緊急寫回請求由L2高速緩存350輸出到FB 355用于處理。臟更新也被發(fā)送到FB 355用于伺機處理。FB 355直接與DRAM 220交互,輸出讀和寫請求,并接收從DRAM 220讀取的數(shù)據(jù)。在圖形應用中,ROP 360是執(zhí)行諸如模板、z測試、混合等等光柵操作的處理單元,并輸出像素數(shù)據(jù)作為處理后的圖形數(shù)據(jù)用于在圖形存儲器中存儲。在本發(fā)明的一些實施例中,將ROP 360包括在每個GPC 208中,而不是分區(qū)單元215中,并且通過交叉開關單元210傳送像素讀寫請求而不是像素片段數(shù)據(jù)。處理后的圖形數(shù)據(jù)可以在顯示設備110上顯示,或者被路由用于由CPU 102或由并行處理子系統(tǒng)112內(nèi)的處理實體之一來進一步處理。為了分布光柵操作的處理,每個分區(qū)單元215均包括ROP 360。在一些實施例中,ROP 360可被配置為壓縮寫入存儲器的z數(shù)據(jù)或色彩數(shù)據(jù),以及解壓縮從存儲器中讀出的z數(shù)據(jù)或色彩數(shù)據(jù)。本技術領域的技術人員應該理解,圖1、2、3A和3B中描述的架構不以任何方式限制本發(fā)明的范圍,以及在此教導的技術可以在任意合適配置的處理單元上實現(xiàn),包括但不限于一個或多個CPU、一個或多個多內(nèi)核CPU、一個或多個PPU 202、一個或多個GPC 208、一個或多個圖形或特殊用途的處理單元等等,均不超出本發(fā)明的范圍。圖4為根據(jù)本發(fā)明一個實施例的,由圖2中一個或多個PPU 202經(jīng)配置以實現(xiàn)的圖形處理管線400的示意圖。例如,一個SPM 310可被配置為執(zhí)行一個或多個頂點處理單元415、幾何(geometry)處理單元425以及片段處理單元460的功能。數(shù)據(jù)匯編器410、基元匯編器420、光柵化器455以及光柵操作單元465的功能也可以由GPC 208和相應的分區(qū)單元215中的其他處理引擎執(zhí)行??商娲?,可采用用于一個或多個功能的專用處理單元來實現(xiàn)圖形處理管線400。數(shù)據(jù)匯編器410處理單元針對高序位的表面、基元等采集頂點數(shù)據(jù),并輸出包括頂點屬性的頂點數(shù)據(jù)到頂點處理單元415。頂點處理單元415是被配置為執(zhí)行頂點著色程序的可編程執(zhí)行單元,根據(jù)頂點著色程序的指定,光照(lighting)和轉換頂點數(shù)據(jù)。例如,頂點處理單元415可被編程為將頂點數(shù)據(jù)從基于對象的坐標表示(對象空間)轉換到諸如世界空間或標準化設備坐標(NDC)空間的替代基礎坐標系統(tǒng)。頂點處理單元415可讀取由數(shù)據(jù)匯編器410存儲在LI高速緩存320、并行處理存儲器204、系統(tǒng)存儲器104中的數(shù)據(jù),用于處理頂點數(shù)據(jù)?;獏R編器從頂點處理單元415接收頂點屬性,按需讀取存儲的頂點屬性,并且構建用于通過幾何處理單元425處理的圖形基元。圖形基元包括三角形、線段、點等。幾何處理單元425是被配置為執(zhí)行幾何著色程序的可編程執(zhí)行單元,根據(jù)所述幾何著色程序的指定,轉換從基元匯編器420接收的圖形基元。例如,幾何處理單元425可經(jīng)編程以細分圖形基元為一個或多個新的圖形基元,并計算被用于光柵化所述新的圖形基元的參數(shù),例如平面方程系數(shù)。在一些實施例中,幾何處理單元425也可增加或刪除幾何流中的元素。幾何處理單元425輸出指定新的圖形基元的參數(shù)和頂點到視窗(viewport)縮放、剔除(cull)及裁剪(clip)單元450。幾何處理單元425可讀取存儲在并行處理存儲器204或系統(tǒng)存儲器104中的數(shù)據(jù),用于處理幾何數(shù)據(jù)。視窗縮放、剔除及裁剪單元450執(zhí)行裁剪、剔除以及視窗縮放,并輸出處理后的圖形基元到光柵化器455。
            光柵化器455掃描轉換新的圖形基元,并輸出片段和覆蓋數(shù)據(jù)到片段處理單元460。此外,光柵化器455可被配置為執(zhí)行z剔除和其他基于z的優(yōu)化。片段處理單元460是被配置為執(zhí)行片段著色程序的可編程執(zhí)行單元,根據(jù)片段著色程序的指定,轉換從光柵化器455接收的片段。例如,片段處理單元460可經(jīng)編程以執(zhí)行諸如透視校正、紋理映射、著色、混合等操作,以產(chǎn)生輸出到光柵操作單元465的著色片段。片段處理單元460可讀取存儲在并行處理存儲器204或系統(tǒng)存儲器104中的數(shù)據(jù),用于處理片段數(shù)據(jù)??梢愿鶕?jù)編程的采樣率,來按像素、采樣或其他粒度來對片段進行著色。光柵操作單元465是執(zhí)行諸如模板(stencil)、z測試、混合等光柵操作的處理單元,并輸出像素數(shù)據(jù)作為處理后的圖形數(shù)據(jù),用于存儲在圖形存儲器中。處理后的圖形數(shù)據(jù)可存儲在例如并行處理存儲器204和/或系統(tǒng)存儲器104的圖形存儲器中,用于在顯示設備110上顯示或用于由CPU 102或并行處理子系統(tǒng)112進一步處理。在本發(fā)明的一些實施 例中,光柵操作單元465被配置為壓縮被寫入存儲器中的z數(shù)據(jù)或色彩數(shù)據(jù),以及解壓縮從存儲器中讀出的z數(shù)據(jù)或色彩數(shù)據(jù)。用于并行命令列表生成的硬件本發(fā)明的實施例涉及在多線程處理系統(tǒng)中將處理器狀態(tài)從一個命令列表延遞(carry over)到下一個命令列表。也就是說,諸如GPU或CPU的處理器的狀態(tài)可跨多個命令列表累積。這一特征也被稱作“跨命令列表的狀態(tài)繼承”??缑盍斜淼臓顟B(tài)繼承給驅動器帶來嚴重的問題,因為選擇在命令列表中放入哪種方法依賴于在GPU中執(zhí)行該方法時GI3U的狀態(tài)。GPU狀態(tài)其實是之前被執(zhí)行的所有命令緩沖區(qū)中累積的狀態(tài)表現(xiàn)。然而,GPU狀態(tài)可以在由不同驅動線程所生成的上一個命令緩存區(qū)中設置,但所述不同驅動線程并未完成對該上一個命令緩沖區(qū)的創(chuàng)建。本發(fā)明的實施例或者移除對未知繼承關系的依賴,或者一旦繼承狀態(tài)已知則更新命令緩存區(qū)的狀態(tài)依賴部分。在一個實施例中,將處理狀態(tài)定義為與執(zhí)行命令的處理單元相關聯(lián)的參數(shù)集。在處理狀態(tài)中所包括的參數(shù)的示例尤其包括頂點著色器、幾何著色器、像素著色器等的選擇,對綁定到像素著色器的一組不同紋理進行定義的一個或多個參數(shù),對如何執(zhí)行混合進行定義的參數(shù),目標渲染表面的列表。這里所使用的“方法”是發(fā)送到處理硬件的命令,所述處理硬件設置一個或多個定義處理器狀態(tài)的參數(shù)。在一個實施例中,設置處理器狀態(tài)定義了不同的處理階段如何執(zhí)行隨后的命令。本發(fā)明的實施例試圖消除這樣一種情況放入命令列表中的方法依賴于GPU所有命令列表的執(zhí)行順序中的當前狀態(tài)。這一特征被稱作“使驅動器無狀態(tài)(stateless)”,因為當生成命令列表時,驅動器不需要考慮當前GPU狀態(tài)。本發(fā)明的實施例的另一個動機在于,減小CPU從應用程序向硬件提交渲染命令的開銷,即,避免CPU成為瓶頸。這一開銷的原因在于,CPU花費時間檢查當前狀態(tài)以確定發(fā)送哪個方法。如果不需要檢查當前狀態(tài)來寫入所述方法,需要的開銷更少。在一個實施例中,每個處理設備有一個主線程和多個輔助線程(worker thread)。例如,這種一主/N輔的布置可由應用程序確定。每個輔助線程都“擁有”一個與將被處理設備所執(zhí)行的命令相關聯(lián)的命令列表。在一些實施例中,處理設備包括PPU 202或CPU內(nèi)核。輔助線程通過進行API調(diào)用(例如,狀態(tài)變化、繪圖命令等)將它們的命令列表并發(fā)地填充到驅動器中。當完成命令列表時,這些命令列表被傳給主線程,該主線程對它們進行排序并提交到驅動器/硬件。在一些實施例中,可多次提交命令列表。至少初看起來,實現(xiàn)這一模型要求驅動器是“無狀態(tài)”的,意思是任意設備驅動器接口(DDI)入口點都可以被完全處理和轉換為方法,而無需參考“當前”API或處理器狀態(tài)。在一個實施例中,每個DDI入口點可簡單地被編碼到命令令牌(token)和參數(shù)數(shù)據(jù)中,其可以被附加到與命令列表相關聯(lián)的緩沖區(qū)。當調(diào)度命令列表以便執(zhí)行時,這些令牌可被解釋并轉換為入棧緩沖區(qū)中的方法/命令。然而,這種方式在多線程命令列表生成中遇到瓶頸問題,這是由于達到這一結果所需的大多處理工作仍然在單線程中連續(xù)發(fā)生。在一個實施例中,每個命令列表包括令牌化的命令隊列,以及一個或多個關聯(lián)的GPU可讀命令緩沖段。很多DDI入口點是無狀態(tài)的,并且正好附加到命令緩沖區(qū)。命令令牌之一可能是“附加接下來的N個命令緩沖區(qū)字節(jié)”。而可能需要其他命令用于依賴狀態(tài)(state-dependent)的處理。例如,當 提交命令列表時,這一處理可發(fā)生在所述主線程,并且它的結果疊加到硬件可見的方法流中。在一個實施例中,每個命令列表都繼承當前命令列表執(zhí)行前所執(zhí)行的命令列表留下的任意狀態(tài)。這意味著當命令列表被生成時,可以不知道其初始狀態(tài),并且意味著每次命令列表被執(zhí)行時這一狀態(tài)甚至都可能不同,即,如果命令列表的排序改變。在這種情況下,驅動器在創(chuàng)建命令列表時,并不總是一直都知道當前API狀態(tài)。在一個實施例中,在命令列表的資源參考(reference)與命令列表所使用的實際資源之間插入間接處理(indirection)。當提交命令列表時,將該參考綁定到實際資源,并且可在提交之間改變。圖5示出根據(jù)本發(fā)明一個實施例的,使用并行命令列表的多線程處理的示意圖。如圖所示,由應用程序開發(fā)人員所編寫的軟件應用程序可被分為多個線程512-1、512_2、512-3。每個線程512-1、512-2、512-3分別與不同的驅動器504-1、504-2、504-3相關聯(lián)。每個驅動器504-1、504-2、504-3分別與不同的命令列表506-1、506-2、506_3相關聯(lián)。創(chuàng)建命令列表的線程執(zhí)行于由應用程序和操作系統(tǒng)所確定的CPU內(nèi)核上。一旦這些線程完成其命令列表的創(chuàng)建,則提交或調(diào)度這些命令列表用于由諸如GPU的處理單元510進行執(zhí)行。在應用程序502經(jīng)由信號514的控制下,經(jīng)由軟件多路復用器508執(zhí)行命令列表提交步驟。圖6示出根據(jù)本發(fā)明一個實施例的,跨命令列表的狀態(tài)繼承的示意圖。如所描述的,實現(xiàn)跨命令列表的狀態(tài)繼承時,當在臨近一個線程的執(zhí)行結束時設置狀態(tài)并且在臨近另一個命令列表開始時執(zhí)行依賴于該狀態(tài)的命令時,可能會出現(xiàn)問題。依賴于所述狀態(tài)的命令的示例是繪圖命令。在圖6所示的示例中,假設首先執(zhí)行命令列表506-1,接下來執(zhí)行命令列表506_2。如圖6所不,在臨近執(zhí)行命令列表506-1的結束時由一個或多個命令604設置處理單兀510的狀態(tài)。當實現(xiàn)跨命令列表的狀態(tài)繼承時,處理單元510的狀態(tài)被延遞給命令列表506-2的執(zhí)行,由路徑602示出。繪圖命令606可被包括在命令列表506-2中且臨近命令列表506-2的開始處。因為分別與命令緩沖區(qū)506-1、506-2相關聯(lián)的線程512-1、512-2可以是不相關的線程,當沒有校正措施來保證執(zhí)行所述畫圖命令606時正確地設置所述狀態(tài),則延遞所述狀態(tài)到線程512-2可能發(fā)生錯誤。如本文更詳細的描述,本發(fā)明實施例支持有效地、無誤地跨命令列表狀態(tài)繼承。圖7示出根據(jù)本發(fā)明一個實施例的,用于狀態(tài)繼承的命令列表706的示意圖。命令列表706可包括一系列令牌。在一個實施例中,每個令牌都與指向命令緩沖區(qū)的指針相關聯(lián)。在一些實施例中,所述命令列表706交替出現(xiàn)與應用程序命令相關聯(lián)的令牌和與補丁方法相關聯(lián)的令牌,如本文所描述。在圖7所示的實施例中,命令列表706中的令牌包含指向緩沖區(qū)702、704的指針。每個緩沖區(qū)702、704存儲將由諸如PPU 202或CPU內(nèi)核這類執(zhí)行單元所執(zhí)行的命令,也稱作“方法”。在一個實施例中,緩沖區(qū)702包括被包含在線程中將被執(zhí)行的“常規(guī)”應用程序命令,并且緩沖區(qū)704包括被用于針對由處理單元所執(zhí)行的后續(xù)命令將處理器狀態(tài)設置為合適狀態(tài)的“補丁”方法。在一些實施例中,驅動器被配置為設置包括于命令列表706中的指針,并且在緩沖區(qū)702、704中存儲命令。驅動器順序地遍歷線程中的命令,并使用當前處理器狀態(tài)來將所執(zhí)行的命令存儲到緩沖區(qū)702的塊A中。一旦驅動器遇到依賴于不同處理器狀態(tài)的命令, 該驅動器停止在塊A中存儲命令。相反,驅動器在緩沖區(qū)704的塊Xtl中存儲一個或多個補丁方法,其中存儲在塊Xtl中的命令/方法被配置為將處理器狀態(tài)修改為該線程中隨后的命令所希望的形式。一旦將補丁方法存儲在緩沖區(qū)704中,驅動器繼續(xù)將包括在線程中的命令存儲在緩沖區(qū)702中下一個可用塊中,即塊B。重復這個過程,直到該線程中的所有命令都被存儲在緩沖區(qū)702中,并且所需的補丁方法被存儲在緩沖區(qū)704中。在執(zhí)行時,處理單元遇到補丁命令塊并生成補丁。然后將該補丁插入到命令隊列中。當創(chuàng)建命令列表時,驅動器僅寫入到緩沖區(qū)702和706中。在706中的“補丁”表項描述了隨后的表項需要哪種狀態(tài)信息。當提交用于執(zhí)行的命令列表,尤其在主線程上提交時,補丁表項用于將補丁方法寫入緩沖區(qū)704。在命令隊列中的插入是虛擬的命令隊列僅是指向包括方法的緩沖區(qū)段的指針序列,因此它將指向段{A,xO,B,xl,......}。如圖所示,命令列表706在指向將被執(zhí)行的命令的指針與指向補丁方法的指針之間交替變化。存儲在命令列表706中的指針或者指向緩沖區(qū)702中的線程命令塊,或者指向緩沖區(qū)704中的補丁方法塊。同樣如圖所示,緩沖區(qū)704和/或緩沖區(qū)702中的塊在后續(xù)通過命令列表時被重復使用。例如,如圖所示,在第一次通過時,命令列表706中的特定補丁方法指針可指向塊Xo,但在隨后的通過中,同一個指針可指向塊&。使用圖7所示的示例,將由處理單元所執(zhí)行的塊的序列可以是,例如> A, X0, B, X1, C.......A, x2,B......在一些實施例中,當存在的補丁較少并且每個補丁盡可能小,即每個補丁的命令/方法較少時,將獲得更高的效率。本發(fā)明的一些實施例包括一個或多個命令,如下所述,其經(jīng)配置以更有效地執(zhí)行上述的狀態(tài)打補丁。相應地,本發(fā)明的實施例與下述內(nèi)容相關聯(lián)對處理單元的“狀態(tài)”增加一個或多個附加參數(shù),并且提供基于硬件的技術用于修改所述一個或多個附加參數(shù)。I.索引緩沖區(qū)格式在一個實施例中,將索引緩沖區(qū)格式作為處理器狀態(tài)的參數(shù)添加在硬件中。例如,當硬件繪制索引三角列表時,索引可以是16位或32位索引。在諸如DXlI的傳統(tǒng)方法中,較老的硬件要求將索引大小編碼在繪圖方法中,這是因為繪圖命令依賴于所述索引大小。相應地,在DXll中,對于每個所遇到的繪圖命令都需要補丁。相反,本發(fā)明的實施例包括作為處理器狀態(tài)參數(shù)的索引緩沖區(qū)格式。因此,繪圖命令不需要與該索引命令一起包括索引大小。當執(zhí)行繪圖命令時,處理單元可簡單地參考與索引緩沖區(qū)格式相關聯(lián)的狀態(tài)參數(shù)。為了修改與索引緩沖區(qū)格式相關聯(lián)的狀態(tài)參數(shù),可實施具有IndexSize字段的單個SetIndexBuffer ()方法。2.基元拓撲在傳統(tǒng)方法中,基元拓撲并未被作為處理器狀態(tài)的一部分而包括在硬件中。因此,對于每個繪圖命令來說,與該繪圖命令相關聯(lián)的基元拓撲(例如,三角形、三角形帶、線等等)將需要被包括在該繪圖命令中。根據(jù)本發(fā)明的實施例,基元拓撲被作為狀態(tài)參數(shù)而添加,不需要將其作為繪圖命令的一部分來包括。然而,當處理單元接收繪圖命令時,該處理單元可能不知道基元拓撲參數(shù)的當前設置。因此,本發(fā)明的實施例實施單個方法SetPrimitiveTopology()以設置基元拓撲,而不需要驅動器將該基元拓撲作為繪圖命令的一部分(或Begin方法的一部分)來加以包括。3.用戶裁剪平面使能處理頂點的某些可編程著色單元支持用戶寫入高達N個不同的裁剪距離輸出。例如,N可以等于8。為了執(zhí)行裁剪,著色單元可估計頂點相對于特定裁剪平面的位置。每個裁剪平面都將屏幕分離為應該繪制頂點的區(qū)域和應該切除且不繪制頂點的區(qū)域。如果頂點相對于裁剪平面具有正值,那么頂點在平面的“正確的”一側,并且應該被繪制。如果頂點相對于裁剪平面具有負值,那么頂點在平面“錯誤的”一側,并且不應被繪制。如一個實施例所述,幾何處理管線中的一個或多個著色階段可以寫裁剪距離。將由最后被使能的著色階段所寫的裁剪距離用于裁剪;由之前階段所寫的裁剪距離被簡單輸出給它們的隨后階段。當實現(xiàn)跨命令列表的狀態(tài)繼承時,不同的線程可“跨接(hook up)”或使用不同的著色器。相應地,本發(fā)明的實施例提供用于自動確定哪一個是最后使用的著色器的技術?;谂c該著色器相關聯(lián)的裁剪信息,硬件可確定已經(jīng)寫入哪個裁剪距離(即,候選用于被裁剪為該距離)。使用跨命令列表的狀態(tài)繼承,當驅動器正創(chuàng)建命令列表時,該驅動器不知道哪個階段被使能。這樣,驅動器不知道最后被使能的階段是什么。因此,該驅動器不能告知硬件哪個階段的裁剪距離用于剪切。此外,在一些實施例中,使能位可以與N個不同的裁剪距離輸出中的每一個相關聯(lián),所述N個不同的裁剪距離輸出與特定命令相關聯(lián)??蓪⑦@一組N個使能位和用于配置著色器的、與最后一個著色器相關聯(lián)的裁剪信息進行邏輯與。例如,可編程處理管線可包括處理點并且確定頂點位置的頂點著色器,以及操作全部基元的幾何著色器。在第一配置中,可編程處理管線可被配置以使得在管線中幾何著色器在頂點著色器之后被調(diào)用。相應地,由最后一個階段即幾何著色器來設置裁剪距離。在第二配置中,可編程處理管線可被配置為在管線中在頂點著色器之后不調(diào)用幾何著色器(即,空的幾何著色器)。在沒有幾何著色器的第二配置中,由頂點著色器設置裁剪距離。因此,本發(fā)明的實施例實施包括用于每個用戶裁剪平面的單獨使能位的單個方法SetUserClipEnable O。如所述的,這一組N個使能位可以和與最后被使用的著色器相關聯(lián)的裁剪信息進行邏輯與。4.預測渲染重寫(override)有時驅動器需要入棧/出棧(push/pop)預測狀態(tài),用于諸如著色器/紋理數(shù)據(jù)頭(texheader) /采樣器上傳的“內(nèi)部”位塊,或者用于應該忽略預測的操作。例如,驅動 器可能需要進行內(nèi)部繪圖調(diào)用,以完成并非對應于來自應用程序繪圖命令的某些動作。相應地,為了在內(nèi)部操作之后恢復當前的預測狀態(tài),需要知道該狀態(tài)。本發(fā)明的實施例將SetRenderEnableOverride ()方法添加到API以重寫當前預測狀態(tài),提供一級堆棧用于預測狀態(tài)的入棧/出棧。圖8為根據(jù)本發(fā)明一個實施例的,用于具有跨命令列表狀態(tài)繼承的多線程處理的方法步驟的流程圖。本技術領域的技術人員應該理解,雖然與圖1-7中的系統(tǒng)結合來描述方法800,被配置為以任意順序執(zhí)行所述方法步驟的任意系統(tǒng)都包括在本發(fā)明實施例的范圍內(nèi)。如圖所示,方法800從步驟802開始,其中由處理器執(zhí)行的驅動器接收包括多個并行線程的應用程序。如圖5中所示,應用程序可以由程序開發(fā)人員編寫。在步驟804中,驅動器為每個線程生成一個命令列表。如上述圖7中的描述,每個命令列表都在指向應用程 序命令的緩沖區(qū)的指針和指向補丁方法的緩沖區(qū)的指針之間交替變化。下面在圖9中詳細描述步驟804。在步驟806,處理單元執(zhí)行被包括在與第一線程相關聯(lián)的第一命令列表中的命令。在一些實施例中,處理單元利用包括在處理管線中的一個或多個處理階段來執(zhí)行這些命令。例如,如圖7所示,處理單元接收被包括在各緩沖區(qū)702、704中的命令。處理單元可首先執(zhí)行來自緩沖區(qū)702的塊A中的應用程序命令,然后執(zhí)行來自緩沖區(qū)704的塊Xtl的補丁方法,然后執(zhí)行來自緩沖區(qū)702的塊B中的應用程序命令,等等。在該命令列表結束時,處理單元停止執(zhí)行來自第一線程的命令列表的命令,并切換為執(zhí)行來自第二線程的命令列表的命令。在步驟808,當處理單元停止執(zhí)行來自第一線程的命令列表的命令時,驅動器保持該處理器狀態(tài)。如所述的,將處理器狀態(tài)定義為與執(zhí)行命令的處理單元相關聯(lián)的參數(shù)集。被包括在處理器狀態(tài)中的參數(shù)的示例尤其包括頂點著色器、幾何著色器、像素著色器等的選擇、一組綁定到像素著色器的不同紋理,對如何執(zhí)行混合進行定義的參數(shù),目標渲染表面列表。在步驟810中,處理單元執(zhí)行被包括在與第二線程相關聯(lián)的第二命令列表中的命令。步驟810與上述步驟806基本上類似。從而,處理器實現(xiàn)跨命令列表的狀態(tài)繼承。圖9為根據(jù)本發(fā)明一個實施例的,用于生成命令列表的方法步驟的流程圖。本技術領域的技術人員應該理解,雖然與圖1-7中的系統(tǒng)結合來描述方法900,被配置為以任意順序執(zhí)行所述方法步驟的任意系統(tǒng)都包括在本發(fā)明實施例的范圍內(nèi)。如圖所示,方法900從步驟902開始,其中驅動器接收被包括在應用程序命令的線程中的命令。如圖5中所述,應用程序可以由應用程序開發(fā)人員編寫,并且可以包括多個并行線程。如圖8中所述,在步驟804,為每個并行線程生成命令列表。在步驟904,驅動器確定僅使用處理器的已知狀態(tài)是否能編碼命令。問題在于驅動器是否知道有關執(zhí)行時間(execution-time)處理器狀態(tài)的足夠信息來生成方法(即,命令的硬件表示)。一些方法可以在不知道任何其他的處理器狀態(tài)的情況下被寫得。其他方法依賴于其他的處理器狀態(tài),但該處理器狀態(tài)是在驅動器建立命令列表時被獲知的。在命令列表構建期間,這兩種情況之一可被立即寫入到命令緩沖區(qū)中。如果方法的編碼依賴于其他狀態(tài),并且當構建命令列表時該狀態(tài)是未知的,那么此時該方法不能被寫到命令緩沖區(qū)——必須被延遲到命令列表被執(zhí)行并且執(zhí)行時間狀態(tài)已知。
            如果驅動器確定僅使用處理器已知的狀態(tài)就可編碼命令,那么方法900進入步驟906。在步驟906,驅動器將命令插入與應用程序命令相關聯(lián)的第一命令緩沖區(qū)。如圖7所示,第一命令緩沖區(qū)即緩沖區(qū)702,可被分為應用程序命令塊。隨后將指向適當?shù)膽贸绦蛎顗K的指針增加到命令列表中。在步驟908,驅動器確定線程中是否包括其他的命令。如果線程中包括其他的命令,那么方法900轉回到步驟902,如上所述。當生成命令列表時,方法900遍歷被包括在線程中的每個應用程序命令。如果線程中不包括其他的命令,那么方法900結束。在步驟904中,如果驅動器確定僅使用處理器已知的狀態(tài)不能編碼命令,那么方法900進入步驟910。在步驟910,驅動器將有關需要什么補丁方法的信息存儲到邊帶隊列中。之后,處理該隊列,并且當執(zhí)行命令列表時寫入補丁方法。例如,將索引大小作為非獨立的狀態(tài)參數(shù)避免了對于補丁的需求。當在繪圖方法中編碼索引大小時,則索引大小未知時所發(fā)送的任意繪圖命令隨后都將需要打補丁。其目的在于減小補丁的數(shù)量。 總而言之,本發(fā)明實施例提供用于實現(xiàn)跨命令列表的狀態(tài)繼承的技術。每個命令列表在指向應用程序命令的指針和指向補丁方法的指針之間交替變化。在命令列表構建期間,在任何遇到依賴于未知的處理器狀態(tài)的應用程序命令的時候,將補丁方法插入命令列表。有利地,相對于不提供跨命令列表的狀態(tài)繼承的現(xiàn)有技術,獲得了更高的處理效率。因為每次執(zhí)行不同的線程時,不需要重新設置處理器為“空白狀態(tài)”,所以需要的處理開銷更少。UnbindAll (全部釋放)方法如上所述,DXll不允許跨命令列表的狀態(tài)繼承。相反,處理器狀態(tài)在每個命令列表開始時被重置為所謂的“空白狀態(tài)”。也就是指,每個用戶模式驅動器線程在命令列表開始時在處理器中設置所有的狀態(tài)參數(shù)。在DXll中,使用幾十或幾百的命令來將處理器狀態(tài)重置為空白狀態(tài)所增加的處理開銷降低了系統(tǒng)的效率,因此,降低了整體性能。在一個實施例中,空白狀態(tài)實質上是一組用于所有類方法狀態(tài)的初始條件,其中沒有資源被綁定,例如,沒有紋理數(shù)據(jù)頭、沒有紋理采樣器、沒有常量緩沖區(qū)以及沒有渲染目標。在DXll中,在每個命令列表開始時,驅動器將插入所有的狀態(tài)設置方法以設置初始條件。在DXll中,采用819個單獨的方法將所有資源逐位置(slot-by-slot)地釋放(5種著色類型)*((每種著色類型的128個紋理數(shù)據(jù)頭綁定方法)+(每種著色類型16個采樣器綁定方法)+(每種著色類型18個常量緩沖區(qū)綁定方法))+(9個目標“綁定”方法)=819 個方法每次執(zhí)行不同的命令列表時都執(zhí)行819個方法會占用大量的處理資源。相應地,本發(fā)明實施例實施UnbindAlU )方法,其使用一種方法來釋放所有內(nèi)容。實施這一方法提高了驅動器的性能,并且減少了 GPU中方法所需的帶寬。在一個實施例中,將諸如紋理數(shù)據(jù)頭的每個狀態(tài)參數(shù)存儲在存儲器單元的不同行中。為了實現(xiàn)UnbindAlU )方法,有效位被附加到存儲單元的每一行。為了釋放所有的狀態(tài)參數(shù),將每個有效位設置為無效狀態(tài)。
            在另一個實施例中,如果狀態(tài)參數(shù)被存儲在高速緩存存儲器中,則可通過歸零該高速緩存存儲器中的一個或多個高速緩存線來實現(xiàn)UnbindAlU )方法。而在另一個實施例中,如果狀態(tài)參數(shù)被存儲在存儲體存儲器(banked memory)中,通過立即清空一個或多個存儲體來實現(xiàn)UnbindAlU )方法。圖10為根據(jù)本發(fā)明一個實施例的,使用UnbindAlU )方法實現(xiàn)多線程處理的方法步驟的流程圖。本技術領域的技術人員應該理解,雖然與圖1-7中的系統(tǒng)結合來描述方法1000,被配置為以任意順序執(zhí)行所述方法步驟的任意系統(tǒng)都包括在本發(fā)明實施例的范圍內(nèi)。如圖所示,方法1000從步驟1002開始,其中驅動器接收包括多個并行線程的應用程序。在步驟1004中,驅動器為每個線程生成命令列表。在步驟1006,處理器執(zhí)行與第一 命令列表相關聯(lián)的命令,所述第一命令列表與第一線程相關聯(lián)。步驟1002、1004、1006分別與如上所述的步驟802、804、806基本上相似。在步驟1008,處理器執(zhí)行被包括在與第二線程相關聯(lián)的第二命令列表中的UnbindAlK )方法。如上所述,UnbindAll ()方法采用一個方法來釋放所有狀態(tài)參數(shù)。在一個實施例中,UnbindAlU )方法可作為第一個方法來被插入每個命令列表中。在另一個實施例中,UnbindAlU )方法可作為最后一個方法來被插入每個命令列表中。在步驟1008中,處理器執(zhí)行與第二命令列表相關聯(lián)的其余命令。步驟1010可以與如上所述的步驟810基本上相似。本發(fā)明的一個實施例可以被實現(xiàn)為與計算機系統(tǒng)一同使用的程序產(chǎn)品。程序產(chǎn)品的程序對實施例的功能(包括在此描述的方法)進行定義,并且可被包含在各種各樣的計算機可讀存儲介質內(nèi)。說明性的計算機可讀存儲介質包括但不限于(i)信息在其上永久保存的非可寫存儲介質(例如,計算機內(nèi)的只讀存儲裝置,諸如對CD-ROM驅動器可讀的CD-ROM盤、閃存、ROM芯片或者任意類型的固態(tài)非易失性半導體存儲器);以及(ii)其上存儲有可改變的信息的可寫存儲介質(例如,軟盤驅動器內(nèi)的軟盤,或硬盤驅動器,或任意類型的固態(tài)隨機存取半導體存儲器)。以上已經(jīng)參考具體實施例對本發(fā)明進行了描述。然而,本技術領域的技術人員應該理解,可以進行各種修改和變化,而不脫離如所附權利要求所闡釋的本發(fā)明的較寬精神和范圍。相應地,前面的描述和附圖應被視為是示例性的而非限制性的。
            權利要求
            1.一種用于為多線程處理環(huán)境提供初始默認狀態(tài)的方法,所述方法包括 接收包括多個并行線程的應用程序; 為所述多個并行線程的每個線程生成命令列表; 將釋放方法插入到與所述多個并行線程的第一線程相關聯(lián)的第一命令列表中以由處理單元執(zhí)行,其中所述釋放方法是將由所述處理單元所執(zhí)行的命令; 使所述釋放方法由所述處理單元執(zhí)行,使得處理單元的狀態(tài)的每個參數(shù)被重置;以及, 在執(zhí)行所述釋放方法之后,使包括在所述第一命令列表中的命令由所述處理單元執(zhí)行。
            2.根據(jù)權利要求I所述的方法,其中所述處理單元包括圖形處理單元。
            3.根據(jù)權利要求I所述的方法,其中所述處理單元包括中央處理單元的內(nèi)核。
            4.根據(jù)權利要求I所述的方法,其中所述釋放方法按順序是在將由所述處理單元所執(zhí)行的第一命令列表中的第一個命令。
            5.根據(jù)權利要求I所述的方法,其中存儲器單元的一個或多個行被配置為存儲所述處理單元的狀態(tài),并且進一步包括,將與所述一個或多個行的每一者相關聯(lián)的一個或多個位設置為無效狀態(tài)。
            6.根據(jù)權利要求I所述的方法,其中重置所述處理單元的所述狀態(tài)包括,清空與所述處理單元的所述狀態(tài)相關聯(lián)的高速緩存存儲器中的一個或多個高速緩存線。
            7.根據(jù)權利要求I所述的方法,其中重置所述處理單元的所述狀態(tài)包括,清空與所述處理單元的所述狀態(tài)相關聯(lián)的存儲體存儲器的一個或多個存儲體。
            8.一種用于在多線程處理環(huán)境中提供跨命令列表的狀態(tài)繼承的方法,所述方法包括 接收包括多個并行線程的應用程序; 為所述多個并行線程的每個線程生成命令列表; 使與所述多個并行線程的第一線程相關聯(lián)的第一命令列表由處理單元執(zhí)行;以及, 使與所述多個并行線程的第二線程相關聯(lián)的第二命令列表由所述處理單元執(zhí)行,其中所述第二命令列表從所述第一命令列表繼承與所述處理單元相關聯(lián)的狀態(tài)。
            9.根據(jù)權利要求8所述的方法,其中所述第一命令列表包括在命令緩沖區(qū)中的方法和補丁方法緩沖區(qū)中的方法之間交替變化的令牌,所述命令緩沖區(qū)中的方法于命令列表構建期間被寫入,所述補丁方法緩沖區(qū)中的方法于提交命令列表用于執(zhí)行期間被寫入。
            10.根據(jù)權利要求9所述的方法,其中每個令牌包括指向存儲器單元的指針,所述存儲器單元被配置為存儲由所述處理單元所要執(zhí)行的命令。
            11.根據(jù)權利要求9所述的方法,其中索引大小是與所述處理單元相關聯(lián)的狀態(tài)的參數(shù),并且將基于所述索引大小的繪圖命令包括在所述命令緩沖區(qū)中,而無需相應的補丁方法。
            12.根據(jù)權利要求9所述的方法,其中基元拓撲是與所述處理單元相關聯(lián)的狀態(tài)的參數(shù),并且將基于所述基元拓撲的繪圖命令包括在所述命令緩沖區(qū)中,而無需相應的補丁方法。
            13.根據(jù)權利要求9所述的方法,其中在幾何處理管線中的每個著色階段都具有相關聯(lián)的一組裁剪平面使能位,并且所述處理單元被配置為使用與最后一個被使能的著色階段相關聯(lián)的所述裁剪平面使能位。
            14.根據(jù)權利要求8所述的方法,其中所述處理單元包括圖形處理單元。
            15.一種計算機系統(tǒng),包括 處理器,以及 存儲指令的存儲器,當所述指令由所述處理器執(zhí)行時,使得所述處理器通過執(zhí)行以下步驟,在多線程處理環(huán)境中提供跨命令列表的狀態(tài)繼承 接收包括多個并行線程的應用程序; 為所述多個并行線程的每個線程生成命令列表; 使與所述多個并行線程的第一線程相關聯(lián)的第一命令列表由處理單元執(zhí)行;以及, 使與所述多個并行線程的第二線程相關聯(lián)的第二命令列表由所述處理單元執(zhí)行,其中所述第二命令列表從所述第一個命令列表繼承與所述處理單元相關聯(lián)的狀態(tài)。
            全文摘要
            本發(fā)明提供一種用于在多線程處理環(huán)境中提供跨命令列表的狀態(tài)繼承方法。所述方法包括接收包括多個并行線程的應用程序;為多個并行線程的每個線程生成命令列表;使與多個并行線程的第一線程相關聯(lián)的第一命令列表由處理單元執(zhí)行;以及使與多個并行線程的第二線程相關聯(lián)的第二命令列表由處理單元執(zhí)行,其中第二命令列表從第一命令列表繼承與處理單元相關聯(lián)的狀態(tài)。
            文檔編號G06F9/30GK102648450SQ201080053155
            公開日2012年8月22日 申請日期2010年9月23日 優(yōu)先權日2009年9月23日
            發(fā)明者亨利·帕爾德·莫頓, 帕特里克·R·布朗, 杰羅姆·F·小杜魯克, 杰西·大衛(wèi)·豪 申請人:輝達公司
            網(wǎng)友詢問留言 已有0條留言
            • 還沒有人留言評論。精彩留言會獲得點贊!
            1
            婷婷六月激情在线综合激情,亚洲国产大片,久久中文字幕综合婷婷,精品久久久久久中文字幕,亚洲一区二区三区高清不卡,99国产精品热久久久久久夜夜嗨 ,欧美日韩亚洲综合在线一区二区,99国产精品电影,伊人精品线视天天综合,精品伊人久久久大香线蕉欧美
            亚洲精品1区 国产成人一级 91精品国产欧美一区二区 亚洲精品乱码久久久久久下载 国产精品久久久久久久伊一 九色国产 国产精品九九视频 伊人久久成人爱综合网 欧美日韩亚洲区久久综合 欧美日本一道免费一区三区 夜夜爽一区二区三区精品 欧美日韩高清一区二区三区 国产成人av在线 国产精品对白交换绿帽视频 国产视频亚洲 国产在线欧美精品 国产精品综合网 国产日韩精品欧美一区色 国产日韩精品欧美一区喷 欧美日韩在线观看区一二 国产区精品 欧美视频日韩视频 中文字幕天天躁日日躁狠狠躁97 视频一二三区 欧美高清在线精品一区二区不卡 国产精品揄拍一区二区久久 99久久综合狠狠综合久久aⅴ 亚洲乱码视频在线观看 日韩在线第二页 亚洲精品无码专区在线播放 成人亚洲网站www在线观看 欧美三级一区二区 99久久精品免费看国产高清 91麻豆国产在线观看 最新日韩欧美不卡一二三区 成人在线观看不卡 日韩国产在线 在线亚洲精品 亚洲午夜久久久久中文字幕 国产精品成人久久久久久久 精品国产一区二区在线观看 欧美精品国产一区二区三区 中文在线播放 亚洲第一页在线视频 国产午夜精品福利久久 九色国产 精品国产九九 国产永久视频 久久精品人人做人人综合试看 国产一区二区三区免费观看 亚洲精品国产电影 9999热视频 国产精品资源在线 麻豆久久婷婷国产综合五月 国产精品免费一级在线观看 亚洲国产一区二区三区青草影视 中文在线播放 国产成人综合在线 国产在线观看色 国产亚洲三级 国产片一区二区三区 久久99精品久久久久久牛牛影视 亚洲欧美日韩国产 四虎永久免费网站 国产一毛片 国产精品视频在 九九热在线精品 99精品福利视频 色婷婷色99国产综合精品 97成人精品视频在线播放 精品久久久久久中文字幕 亚洲欧美一区二区三区孕妇 亚洲欧美成人网 日韩高清在线二区 国产尤物在线观看 在线不卡一区二区 91网站在线看 韩国精品福利一区二区 欧美日韩国产成人精品 99热精品久久 国产精品免费视频一区 高清视频一区 精品九九久久 欧美日韩在线观看免费 91欧美激情一区二区三区成人 99福利视频 亚洲国产精品91 久热国产在线 精品久久久久久中文字幕女 国产精品久久久久久久久99热 成人自拍视频网 国产精品视频久久久久久 久久影院国产 国产玖玖在线观看 99精品在线免费 亚洲欧美一区二区三区导航 久久久久久久综合 国产欧美日韩精品高清二区综合区 国产精品视频自拍 亚洲一级片免费 久久久久久九九 国产欧美自拍视频 视频一区二区在线观看 欧美日韩一区二区三区久久 中文在线亚洲 伊人热人久久中文字幕 日韩欧美亚洲国产一区二区三区 欧美亚洲国产成人高清在线 欧美日韩国产码高清综合人成 国产性大片免费播放网站 亚洲午夜综合网 91精品久久一区二区三区 国产无套在线播放 国产精品视频网站 国产成人亚洲精品老王 91在线网站 国产视频97 欧美黑人欧美精品刺激 国产一区二区三区免费在线视频 久久久国产精品免费看 99re6久精品国产首页 久久精品91 国产成人一级 国产成人精品曰本亚洲 日本福利在线观看 伊人成综合网 久久综合一本 国产综合久久久久久 久久精品成人免费看 久久福利 91精品国产91久久久久久麻豆 亚洲精品成人在线 亚洲伊人久久精品 欧美日本二区 国产永久视频 国产一区二 一区二区福利 国产一毛片 亚洲精品1区 毛片一区二区三区 伊人久久大香线蕉综合影 国产欧美在线观看一区 亚洲国产欧洲综合997久久 国产一区二区免费视频 国产91精品对白露脸全集观看 久久亚洲国产伦理 欧美成人伊人久久综合网 亚洲性久久久影院 久久99国产精一区二区三区! 91精品国产欧美一区二区 欧美日韩亚洲区久久综合 日韩精品一二三区 久久久夜色精品国产噜噜 国产在线精品福利91香蕉 久久久久久久亚洲精品 97se色综合一区二区二区 91国语精品自产拍在线观看性色 91久久国产综合精品女同我 日韩中文字幕a 国产成人亚洲日本精品 久久国产精品-国产精品 久久国产经典视频 久久国产精品伦理 亚洲第一页在线视频 国产精品久久久久三级 日韩毛片网 久久免费高清视频 麻豆国产在线观看一区二区 91麻豆国产福利在线观看 国产成人精品男人的天堂538 一区二区三区中文字幕 免费在线视频一区 欧美日韩国产成人精品 国产综合网站 国产资源免费观看 亚洲精品亚洲人成在线播放 精品久久久久久中文字幕专区 亚洲人成人毛片无遮挡 国产一起色一起爱 国产香蕉精品视频在 九九热免费观看 日韩亚洲欧美一区 九九热精品在线观看 精品久久久久久中文字幕专区 亚洲欧美自拍偷拍 国产精品每日更新 久久久久国产一级毛片高清板 久久天天躁狠狠躁夜夜中文字幕 久久精品片 日韩在线毛片 国产成人精品本亚洲 国产成人精品一区二区三区 九九热在线观看 国产r级在线观看 国产欧美日韩精品高清二区综合区 韩国电影一区二区 国产精品毛片va一区二区三区 五月婷婷伊人网 久久一区二区三区免费 一本色道久久综合狠狠躁篇 亚洲综合色站 国产尤物在线观看 亚洲一区亚洲二区 免费在线视频一区 欧洲精品视频在线观看 日韩中文字幕a 中文字幕日本在线mv视频精品 91精品在线免费视频 精品国产免费人成在线观看 精品a级片 中文字幕日本在线mv视频精品 日韩在线精品视频 婷婷丁香色 91精品国产高清久久久久 国产成人精品日本亚洲直接 五月综合视频 欧美日韩在线亚洲国产人 精液呈暗黄色 亚洲乱码一区 久久精品中文字幕不卡一二区 亚洲天堂精品在线 激情婷婷综合 国产免费久久精品久久久 国产精品亚洲二区在线 久久免费播放视频 五月婷婷丁香综合 在线亚洲欧美日韩 久久免费精品高清麻豆 精品久久久久久中文字幕 亚洲一区网站 国产精品福利社 日韩中文字幕免费 亚洲综合丝袜 91精品在线播放 国产精品18 亚洲日日夜夜 伊人久久大香线蕉综合影 亚洲精品中文字幕乱码影院 亚洲一区二区黄色 亚洲第一页在线视频 一区二区在线观看视频 国产成人福利精品视频 亚洲高清二区 国内成人免费视频 精品亚洲性xxx久久久 国产精品合集一区二区三区 97av免费视频 国产一起色一起爱 国产区久久 国产资源免费观看 99精品视频免费 国产成人一级 国产精品九九免费视频 欧美91精品久久久久网免费 99热国产免费 久久精品色 98精品国产综合久久 久久精品播放 中文字幕视频免费 国产欧美日韩一区二区三区在线 精品久久蜜桃 国产小视频精品 一本色道久久综合狠狠躁篇 91在线免费观看 亚洲精品区 伊人成综合网 伊人热人久久中文字幕 伊人黄色片 99国产精品热久久久久久夜夜嗨 久久免费精品视频 亚洲一区二区三区高清不卡 久久久久国产一级毛片高清板 国产片一区二区三区 久久狠狠干 99久久婷婷国产综合精品电影 国产99区 国产精品成人久久久久 久久狠狠干 青青国产在线观看 亚洲高清国产拍精品影院 国产精品一区二区av 九九热在线免费视频 伊人久久国产 国产精品久久久久久久久久一区 在线观看免费视频一区 国产精品自在在线午夜区app 国产精品综合色区在线观看 国产毛片久久久久久国产毛片 97国产免费全部免费观看 国产精品每日更新 国产尤物视频在线 九九视频这里只有精品99 一本一道久久a久久精品综合 久久综合给会久久狠狠狠 国产成人精品男人的天堂538 欧美一区二区高清 毛片一区二区三区 国产欧美日韩在线观看一区二区三区 在线国产二区 欧美不卡网 91在线精品中文字幕 在线国产福利 国内精品91久久久久 91亚洲福利 日韩欧美国产中文字幕 91久久精品国产性色也91久久 亚洲性久久久影院 欧美精品1区 国产热re99久久6国产精品 九九热免费观看 国产精品欧美日韩 久久久久国产一级毛片高清板 久久国产经典视频 日韩欧美亚洲国产一区二区三区 欧美亚洲综合另类在线观看 国产精品自在在线午夜区app 97中文字幕在线观看 视频一二三区 精品国产一区在线观看 国产欧美日韩在线一区二区不卡 欧美一区二三区 伊人成人在线观看 国内精品91久久久久 97在线亚洲 国产在线不卡一区 久久久全免费全集一级全黄片 国产精品v欧美精品∨日韩 亚洲毛片网站 在线不卡一区二区 99re热在线视频 久久激情网 国产毛片一区二区三区精品 久久亚洲综合色 中文字幕视频免费 国产视频亚洲 婷婷伊人久久 国产一区二区免费播放 久久99国产精品成人欧美 99国产在线视频 国产成人免费视频精品一区二区 国产不卡一区二区三区免费视 国产码欧美日韩高清综合一区 久久精品国产主播一区二区 国产一区电影 久久精品国产夜色 国产精品国产三级国产 日韩一区二区三区在线 久久97久久97精品免视看 久久国产免费一区二区三区 伊人久久大香线蕉综合电影网 99re6久精品国产首页 久久激情网 亚洲成人高清在线 国产精品网址 国产成人精品男人的天堂538 香蕉国产综合久久猫咪 国产专区中文字幕 91麻豆精品国产高清在线 久久国产经典视频 国产精品成人va在线观看 国产精品爱啪在线线免费观看 日本精品久久久久久久久免费 亚洲综合一区二区三区 久久五月网 精品国产网红福利在线观看 久久综合亚洲伊人色 亚洲国产精品久久久久久网站 在线日韩国产 99国产精品热久久久久久夜夜嗨 国产综合精品在线 国产区福利 精品亚洲综合久久中文字幕 国产制服丝袜在线 毛片在线播放网站 在线观看免费视频一区 国产精品久久久精品三级 亚洲国产电影在线观看 最新日韩欧美不卡一二三区 狠狠综合久久综合鬼色 日本精品1在线区 国产日韩一区二区三区在线播放 欧美日韩精品在线播放 亚洲欧美日韩国产一区二区三区精品 久久综合久久网 婷婷六月激情在线综合激情 亚洲乱码一区 国产专区91 97av视频在线观看 精品久久久久久中文字幕 久久五月视频 国产成人福利精品视频 国产精品网址 中文字幕视频在线 精品一区二区三区免费视频 伊人手机在线视频 亚洲精品中文字幕乱码 国产在线视频www色 色噜噜国产精品视频一区二区 精品亚洲成a人在线观看 国产香蕉尹人综合在线 成人免费一区二区三区在线观看 国产不卡一区二区三区免费视 欧美精品久久天天躁 国产专区中文字幕 久久精品国产免费中文 久久精品国产免费一区 久久无码精品一区二区三区 国产欧美另类久久久精品免费 欧美精品久久天天躁 亚洲精品在线视频 国产视频91在线 91精品福利一区二区三区野战 日韩中文字幕免费 国产精品99一区二区三区 欧美成人高清性色生活 国产精品系列在线观看 亚洲国产福利精品一区二区 国产成人在线小视频 国产精品久久久久免费 99re热在线视频 久久久久久久综合 一区二区国产在线播放 成人国产在线视频 亚洲精品乱码久久久久 欧美日韩一区二区综合 精品久久久久免费极品大片 中文字幕视频二区 激情粉嫩精品国产尤物 国产成人精品一区二区视频 久久精品中文字幕首页 亚洲高清在线 国产精品亚洲一区二区三区 伊人久久艹 中文在线亚洲 国产精品一区二区在线播放 国产精品九九免费视频 亚洲二区在线播放 亚洲狠狠婷婷综合久久久久网站 亚洲欧美日韩网站 日韩成人精品 亚洲国产一区二区三区青草影视 91精品国产福利在线观看 国产精品久久久久久久久99热 国产一区二区精品尤物 久碰香蕉精品视频在线观看 亚洲日日夜夜 在线不卡一区二区 国产午夜亚洲精品 九九热在线视频观看这里只有精品 伊人手机在线视频 91免费国产精品 日韩欧美中字 91精品国产91久久久久 国产全黄三级播放 视频一区二区三区免费观看 国产开裆丝袜高跟在线观看 国产成人欧美 激情综合丝袜美女一区二区 国产成人亚洲综合无 欧美精品一区二区三区免费观看 欧美亚洲国产日韩 日韩亚州 国产欧美日韩精品高清二区综合区 亚洲午夜国产片在线观看 精品久久久久久中文字幕 欧美精品1区 久久伊人久久亚洲综合 亚洲欧美日韩精品 国产成人精品久久亚洲高清不卡 久久福利影视 国产精品99精品久久免费 久久久久免费精品视频 国产日产亚洲精品 亚洲国产午夜电影在线入口 精品无码一区在线观看 午夜国产精品视频 亚洲一级片免费 伊人久久大香线蕉综合影 国产精品久久影院 久碰香蕉精品视频在线观看 www.欧美精品 在线小视频国产 亚洲国产天堂久久综合图区 欧美一区二区三区不卡 日韩美女福利视频 九九精品免视频国产成人 不卡国产00高中生在线视频 亚洲第一页在线视频 欧美日韩在线播放成人 99re视频这里只有精品 国产精品91在线 精品乱码一区二区三区在线 国产区久久 91麻豆精品国产自产在线观看一区 日韩精品成人在线 九九热在线观看 国产精品久久不卡日韩美女 欧美一区二区三区综合色视频 欧美精品免费一区欧美久久优播 国产精品网址 国产专区中文字幕 国产精品欧美亚洲韩国日本久久 日韩美香港a一级毛片 久久精品123 欧美一区二区三区免费看 99r在线视频 亚洲精品国产字幕久久vr 国产综合激情在线亚洲第一页 91免费国产精品 日韩免费小视频 亚洲国产精品综合一区在线 国产亚洲第一伦理第一区 在线亚洲精品 国产精品一区二区制服丝袜 国产在线成人精品 九九精品免视频国产成人 亚洲国产网 欧美日韩亚洲一区二区三区在线观看 在线亚洲精品 欧美一区二区三区高清视频 国产成人精品男人的天堂538 欧美日韩在线观看区一二 亚洲欧美一区二区久久 久久精品中文字幕首页 日本高清www午夜视频 久久精品国产免费 久久999精品 亚洲国产精品欧美综合 88国产精品视频一区二区三区 91久久偷偷做嫩草影院免费看 国产精品夜色视频一区二区 欧美日韩导航 国产成人啪精品午夜在线播放 一区二区视频在线免费观看 99久久精品国产自免费 精液呈暗黄色 久久99国产精品 日本精品久久久久久久久免费 精品国产97在线观看 99re视频这里只有精品 国产视频91在线 999av视频 亚洲美女视频一区二区三区 久久97久久97精品免视看 亚洲国产成人久久三区 99久久亚洲国产高清观看 日韩毛片在线视频 综合激情在线 91福利一区二区在线观看 一区二区视频在线免费观看 激情粉嫩精品国产尤物 国产成人精品曰本亚洲78 国产成人精品本亚洲 国产精品成人免费视频 国产成人啪精品视频免费软件 久久精品国产亚洲妲己影院 国产精品成人久久久久久久 久久大香线蕉综合爱 欧美一区二区三区高清视频 99热国产免费 在线观看欧美国产 91精品视频在线播放 国产精品福利社 欧美精品一区二区三区免费观看 国产一区二区免费视频 国产午夜精品一区二区 精品视频在线观看97 91精品福利久久久 国产一区福利 国产综合激情在线亚洲第一页 国产精品久久久久久久久久久不卡 九色国产 在线日韩国产 黄网在线观看 亚洲一区小说区中文字幕 中文字幕丝袜 日本二区在线观看 日本国产一区在线观看 欧美日韩一区二区三区久久 欧美精品亚洲精品日韩专 国产日产亚洲精品 久久综合九色综合欧美播 亚洲国产欧美无圣光一区 欧美视频区 亚洲乱码视频在线观看 久久无码精品一区二区三区 九九热精品免费视频 久久99精品久久久久久牛牛影视 国产精品成久久久久三级 国产一区福利 午夜国产精品视频 日本二区在线观看 99久久网站 国产亚洲天堂 精品国产一区二区三区不卡 亚洲国产日韩在线一区 国产成人综合在线观看网站 久久免费高清视频 欧美在线导航 午夜精品久久久久久99热7777 欧美久久综合网 国产小视频精品 国产尤物在线观看 亚洲国产精品综合一区在线 欧美一区二区三区不卡视频 欧美黑人欧美精品刺激 日本福利在线观看 久久国产偷 国产手机精品一区二区 国产热re99久久6国产精品 国产高清啪啪 欧美亚洲国产成人高清在线 国产在线第三页 亚洲综合一区二区三区 99r在线视频 99精品久久久久久久婷婷 国产精品乱码免费一区二区 国产在线精品福利91香蕉 国产尤物视频在线 五月婷婷亚洲 中文字幕久久综合伊人 亚洲精品一级毛片 99国产精品电影 在线视频第一页 久久99国产精品成人欧美 国产白白视频在线观看2 成人精品一区二区www 亚洲成人网在线观看 麻豆91在线视频 色综合合久久天天综合绕视看 久久精品国产免费高清 国产不卡一区二区三区免费视 欧美国产中文 99精品欧美 九九在线精品 国产中文字幕在线免费观看 国产一区中文字幕在线观看 国产成人一级 国产精品一区二区制服丝袜 国产一起色一起爱 亚洲精品成人在线 亚洲欧美精品在线 国产欧美自拍视频 99精品久久久久久久婷婷 久99视频 国产热re99久久6国产精品 视频一区亚洲 国产精品视频分类 国产精品成在线观看 99re6久精品国产首页 亚洲在成人网在线看 亚洲国产日韩在线一区 久久国产三级 日韩国产欧美 欧美在线一区二区三区 国产精品美女一级在线观看 成人午夜免费福利视频 亚洲天堂精品在线 91精品国产手机 欧美日韩视频在线播放 狠狠综合久久综合鬼色 九一色视频 青青视频国产 亚洲欧美自拍一区 中文字幕天天躁日日躁狠狠躁97 日韩免费大片 996热视频 伊人成综合网 亚洲天堂欧美 日韩精品亚洲人成在线观看 久久综合给会久久狠狠狠 日韩精品亚洲人成在线观看 日韩国产欧美 亚洲成aⅴ人片在线影院八 亚洲精品1区 99久久精品免费 国产精品高清在线观看 国产精品久久久免费视频 在线亚洲欧美日韩 91在线看视频 国产精品96久久久久久久 欧美日韩国产成人精品 91在线亚洲 热久久亚洲 国产精品美女免费视频观看 日韩在线毛片 亚洲永久免费视频 九九免费在线视频 亚洲一区网站 日本高清二区视频久二区 精品国产美女福利在线 伊人久久艹 国产精品久久久久三级 欧美成人精品第一区二区三区 99久久精品国产自免费 在线观看日韩一区 国产中文字幕一区 成人免费午夜视频 欧美日韩另类在线 久久99国产精品成人欧美 色婷婷中文网 久久天天躁夜夜躁狠狠躁2020 欧美成人伊人久久综合网 国产精品福利资源在线 国产伦精品一区二区三区高清 国产精品亚洲综合色区韩国 亚洲一区欧美日韩 色综合视频 国语自产精品视频在线区 国产高清a 成人国内精品久久久久影 国产在线精品香蕉综合网一区 国产不卡在线看 国产成人精品精品欧美 国产欧美日韩综合精品一区二区三区 韩国电影一区二区 国产在线视频www色 91中文字幕在线一区 国产人成午夜免视频网站 亚洲综合一区二区三区 色综合视频一区二区观看 久久五月网 九九热精品在线观看 国产一区二区三区国产精品 99久热re在线精品996热视频 亚洲国产网 在线视频亚洲一区 日韩字幕一中文在线综合 国产高清一级毛片在线不卡 精品国产色在线 国产高清视频一区二区 精品日本久久久久久久久久 亚洲国产午夜精品乱码 成人免费国产gav视频在线 日韩欧美一区二区在线观看 欧美曰批人成在线观看 韩国电影一区二区 99re这里只有精品6 日韩精品一区二区三区视频 99re6久精品国产首页 亚洲欧美一区二区三区导航 欧美色图一区二区三区 午夜精品视频在线观看 欧美激情在线观看一区二区三区 亚洲热在线 成人国产精品一区二区网站 亚洲一级毛片在线播放 亚洲一区小说区中文字幕 亚洲午夜久久久久影院 国产自产v一区二区三区c 国产精品视频免费 久久调教视频 国产成人91激情在线播放 国产精品欧美亚洲韩国日本久久 久久亚洲日本不卡一区二区 91中文字幕网 成人国产在线视频 国产视频91在线 欧美成人精品第一区二区三区 国产精品福利在线 久久综合九色综合精品 欧美一区二区三区精品 久久国产综合尤物免费观看 久久99青青久久99久久 日韩精品免费 久久国产精品999 91亚洲视频在线观看 国产精品igao视频 色综合区 在线亚洲欧国产精品专区 国产一区二区三区在线观看视频 亚洲精品成人在线 一区二区国产在线播放 中文在线亚洲 亚洲精品第一国产综合野 国产一区二区精品久久 一区二区三区四区精品视频 99热精品久久 中文字幕视频二区 国产成人精品男人的天堂538 99精品影视 美女福利视频一区二区 久久午夜夜伦伦鲁鲁片 综合久久久久久久综合网 国产精品国产欧美综合一区 国产99视频在线观看 国产亚洲女在线精品 婷婷影院在线综合免费视频 国产亚洲3p一区二区三区 91成人爽a毛片一区二区 亚洲一区二区高清 国产欧美亚洲精品第二区首页 欧美日韩导航 亚洲高清二区 欧美激情观看一区二区久久 日韩毛片在线播放 亚洲欧美日韩高清中文在线 亚洲日本在线播放 国产精品一区二区制服丝袜 精品国产一区二区三区不卡 国产不卡在线看 国产欧美网站 四虎永久在线观看视频精品 国产黄色片在线观看 夜夜综合 一本色道久久综合狠狠躁篇 欧美亚洲综合另类在线观看 国产91在线看 伊人久久国产 欧美一区二区在线观看免费网站 国产精品久久久久三级 久久福利 日韩中文字幕a 亚洲午夜久久久久影院 91在线高清视频 国产亚洲一区二区三区啪 久久人精品 国产精品亚洲午夜一区二区三区 综合久久久久久 久久伊人一区二区三区四区 国产综合久久久久久 日韩一区精品视频在线看 国产精品日韩欧美制服 日本精品1在线区 99re视频 无码av免费一区二区三区试看 国产视频1区 日韩欧美中文字幕一区 日本高清中文字幕一区二区三区a 亚洲国产欧美无圣光一区 国产在线视频一区二区三区 欧美国产第一页 在线亚洲欧美日韩 日韩中文字幕第一页 在线不卡一区二区 伊人久久青青 国产精品一区二区在线播放 www.五月婷婷 麻豆久久婷婷国产综合五月 亚洲精品区 久久国产欧美另类久久久 99在线视频免费 伊人久久中文字幕久久cm 久久精品成人免费看 久久这里只有精品首页 88国产精品视频一区二区三区 中文字幕日本在线mv视频精品 国产在线精品成人一区二区三区 伊人精品线视天天综合 亚洲一区二区黄色 国产尤物视频在线 亚洲精品99久久久久中文字幕 国产一区二区三区免费观看 伊人久久大香线蕉综合电影网 国产成人精品区在线观看 日本精品一区二区三区视频 日韩高清在线二区 久久免费播放视频 一区二区成人国产精品 国产精品免费精品自在线观看 亚洲精品视频二区 麻豆国产精品有码在线观看 精品日本一区二区 亚洲欧洲久久 久久中文字幕综合婷婷 中文字幕视频在线 国产成人精品综合在线观看 91精品国产91久久久久福利 精液呈暗黄色 香蕉国产综合久久猫咪 国产专区精品 亚洲精品无码不卡 国产永久视频 亚洲成a人片在线播放观看国产 一区二区国产在线播放 亚洲一区二区黄色 欧美日韩在线观看视频 亚洲精品另类 久久国产综合尤物免费观看 国产一区二区三区国产精品 高清视频一区 国产精品igao视频 国产精品资源在线 久久综合精品国产一区二区三区 www.五月婷婷 精品色综合 99热国产免费 麻豆福利影院 亚洲伊人久久大香线蕉苏妲己 久久电影院久久国产 久久精品伊人 在线日韩理论午夜中文电影 亚洲国产欧洲综合997久久 伊人国产精品 久草国产精品 欧美一区精品二区三区 亚洲成人高清在线 91免费国产精品 日韩精品福利在线 国产一线在线观看 国产不卡在线看 久久99青青久久99久久 亚洲精品亚洲人成在线播放 99久久免费看国产精品 国产日本在线观看 青草国产在线视频 麻豆久久婷婷国产综合五月 国产中文字幕一区 91久久精品国产性色也91久久 国产一区a 国产欧美日韩成人 国产亚洲女在线精品 一区二区美女 中文字幕在线2021一区 在线小视频国产 久久这里只有精品首页 国产在线第三页 欧美日韩中文字幕 在线亚洲+欧美+日本专区 精品国产一区二区三区不卡 久久这里精品 欧美在线va在线播放 精液呈暗黄色 91精品国产手机 91在线免费播放 欧美视频亚洲色图 欧美国产日韩精品 日韩高清不卡在线 精品视频免费观看 欧美日韩一区二区三区四区 国产欧美亚洲精品第二区首页 亚洲韩精品欧美一区二区三区 国产精品视频免费 在线精品小视频 久久午夜夜伦伦鲁鲁片 国产无套在线播放 久热这里只精品99re8久 欧美久久久久 久久香蕉国产线看观看精品蕉 国产成人精品男人的天堂538 亚洲人成网站色7799在线观看 日韩在线第二页 一本色道久久综合狠狠躁篇 国产一区二区三区不卡在线观看 亚洲乱码在线 在线观看欧美国产 久久福利青草精品资源站免费 国产玖玖在线观看 在线亚洲精品 亚洲成aⅴ人在线观看 精品91在线 欧美一区二三区 日韩中文字幕视频在线 日本成人一区二区 日韩免费专区 国内精品在线观看视频 久久国产综合尤物免费观看 国产精品系列在线观看 一本一道久久a久久精品综合 亚洲免费播放 久久精品国产免费 久久人精品 亚洲毛片网站 亚洲成a人一区二区三区 韩国福利一区二区三区高清视频 亚洲精品天堂在线 一区二区三区中文字幕 亚洲国产色婷婷精品综合在线观看 亚洲国产成人久久笫一页 999国产视频 国产精品香港三级在线电影 欧美日韩一区二区三区四区 日韩国产欧美 国产精品99一区二区三区 午夜国产精品理论片久久影院 亚洲精品中文字幕麻豆 亚洲国产高清视频 久久免费手机视频 日韩a在线观看 五月婷婷亚洲 亚洲精品中文字幕麻豆 中文字幕丝袜 www国产精品 亚洲天堂精品在线 亚洲乱码一区 国产日韩欧美三级 久久999精品 伊人热人久久中文字幕 久热国产在线视频 国产欧美日韩在线观看一区二区三区 国产一二三区在线 日韩国产欧美 91精品国产91久久久久 亚洲一区小说区中文字幕 精品一区二区免费视频 国产精品视频免费 国产精品亚洲综合色区韩国 亚洲国产精品成人午夜在线观看 欧美国产日韩精品 中文字幕精品一区二区精品